Skip to main content

Feature

Password-Protected Notes: Turning a Password Into a Key

Passwords make poor encryption keys on their own — they are short, human-chosen, and drawn from a small space. Key derivation is the process that turns one into something usable. Understanding it tells you exactly how much protection your password choice is buying.

Last reviewed Reviewed by Inkrypt Security Team

Why a password is not a key

AES-256 needs a 256-bit key: 32 bytes of essentially random data. A password like Autumn2026! is eleven characters of highly non-random data — biased towards dictionary words, capitalised first letters, and a symbol at the end because a form demanded one.

If you fed that password directly into AES as key material, an attacker holding the ciphertext would not need to search the 2^256 keyspace. They would search the far smaller space of passwords people actually pick, which modern cracking rigs work through at enormous rates. A key derivation function exists to make each of those guesses expensive.

What Inkrypt does with your password

Key derivation functionPBKDF2-HMAC-SHA256
Iterations310,000
Salt16 bytes, cryptographically random, per note
Derived key length256 bits
ImplementationWeb Crypto API (SubtleCrypto.deriveKey)
Where it runsYour browser, on your device

Three properties matter here, and each defeats a specific attack.

The salt defeats precomputation

A salt is random data mixed into the derivation. Because every note gets its own fresh 16-byte salt, the same password produces a completely different key for every note. An attacker cannot build one table of precomputed password-to-key mappings and reuse it — a rainbow table is worthless against salted derivation, and cracking one note gives no head start on the next.

The iteration count defeats speed

310,000 iterations means the derivation runs the HMAC-SHA256 core 310,000 times before producing a key. On your device that is a brief, one-time pause. For an attacker guessing passwords offline, it multiplies the cost of every single guess by the same factor — turning a hypothetical billion guesses per second into a few thousand.

That figure is not arbitrary: 310,000 is the OWASP Password Storage Cheat Sheet's recommended minimum for PBKDF2-HMAC-SHA256. We record the parameters alongside each note (as a pbkdf2-310000 label), so the count can be raised for new notes without breaking older ones — each note is decrypted with the parameters it was created under.

Deriving in the browser defeats us

Because derivation happens client-side, the password itself is never transmitted. There is no password hash in our database, because there is no password in our database. This is what makes the guarantee structural rather than a policy promise — see zero-knowledge encryption.

PBKDF2 versus Argon2

Argon2id is the stronger modern choice because it is memory-hard, which blunts GPU and ASIC attacks in a way PBKDF2 cannot. We use PBKDF2 today because it is the only password-based KDF exposed by the Web Crypto API in every browser we support, and a native, constant-time primitive beats a JavaScript Argon2 implementation for most realistic threats. This is a genuine trade-off, and it is on our changelog as an area we are tracking.

Choosing a password that actually helps

Key derivation buys you time proportional to how hard your password is to guess. It cannot manufacture entropy that is not there. The practical question is not 'does it look complicated' but 'how many guesses would it take'.

Rough guess-space comparison. Character-substitution tricks add far less than length does.
Password styleExample shapePractical strength
Dictionary word plus digitssunshine2026Very weak — first thing any wordlist attack tries
Leetspeak substitutionsP@ssw0rd!Weak — cracking tools apply these rules automatically
Short random string9 random charactersModerate, but hard to type and easy to mistype
Four or more random wordsamber-tunnel-verdict-hollowStrong and typeable — the best default for shared notes
Manager-generated 20+ charactersgenerated, stored in a managerStrongest, when you have somewhere to store it
Rough guess-space comparison. Character-substitution tricks add far less than length does.
  • Prefer length over symbol variety. Adding a character to a random passphrase multiplies the search space far more than swapping a for @.
  • Never reuse a note password anywhere else. If it is cracked offline, you want the loss contained to one note.
  • Make it something you can dictate over a phone call, because that is often how it needs to travel separately from the link.
  • For genuinely high-stakes secrets, generate the password in a password manager and share it through the manager's own sharing feature instead.

Why there is no password reset

Every 'forgot password' flow you have used works because the service can restore access without your old password — it holds the data in a form it can re-key. That is exactly the capability we have removed.

If we could reset your note password, we could read your note. Those two capabilities are the same capability. The absence of a reset link is not a missing feature; it is the visible edge of the guarantee.

Before you rely on a note

Write the password down somewhere durable first — a password manager entry is ideal. A note you cannot open is indistinguishable from a note that was deleted.

Frequently asked questions

Is my note password stored anywhere?

No — not in plaintext, and not as a hash. The password is used only inside your browser to derive an encryption key. Our servers store the ciphertext, the salt and the IV, none of which reveal the password.

Why does saving a note take a moment?

That pause is the 310,000 PBKDF2 iterations running. It is deliberate: the same cost is imposed on anyone trying to guess your password offline, multiplied by every guess they make.

What is a salt and why does each note get its own?

A salt is random data mixed into key derivation so that the same password yields a different key each time. Per-note salts mean an attacker cannot precompute a lookup table, and cracking one note gives them no advantage on any other.

How long should a note password be?

For most purposes, four or more random words — around 25 characters — is a good target. It is long enough to resist offline guessing and short enough to read aloud over the phone when the link travels separately.

Can I change the password on an existing note?

Yes. Open the note with the current password, then change it. The note is re-encrypted with a key derived from the new password, using a fresh salt and IV.

Write your first encrypted note

No account, no email address, no download. Type a note, set a password, share the link.

Open the notepad