Glossary¶
Level: reference
Short entries, each with the page that explains it in full. Alphabetical. An entry whose "read more" points at a stub is a promise, not a lesson.
| Term | In one line | Read more |
|---|---|---|
| AEAD | Authenticated encryption with associated data: one primitive that gives confidentiality and integrity, so the two do not have to be composed by hand. AES-GCM, ChaCha20-Poly1305 | 05_Symmetric |
| authenticity | The claim that a message is from who it says. Encryption does not provide it; a MAC or a signature does | 06_Integrity_and_MACs |
| avalanche | A one-bit change in the input changes about half the output bits. Why a digest is a fingerprint with no partial credit | A hash is not encryption |
| birthday bound | Finding any collision in an n-bit digest costs about 2^(n/2), not 2ⁿ. True of every hash function, which is why collision resistance always falls first | A hash is not encryption |
| block cipher | A keyed permutation of a fixed-size block — AES is 128 bits. Encrypting anything larger requires a mode | AES has no modes — you pick one |
| collision | Two different inputs with the same digest. They must exist; the question is whether anyone can find one | A hash is not encryption |
| confidentiality | The claim that nobody else can read it. What encryption gives you, and the only one of the three properties it gives on its own | 01_What_Cryptography_Is |
| CSPRNG | A random generator whose output an observer cannot predict even after seeing a great deal of it. Python's secrets; not random |
random is not secrets |
| forward secrecy | The property that recording today's traffic and stealing the long-term key tomorrow does not open it. A property of the key exchange, not the cipher | Diffie–Hellman by hand |
| HMAC | A MAC built from a hash and a key, in a nested construction that fixes the length-extension flaw of the obvious approach | HMAC, and comparing in constant time |
| integrity | The claim that a message was not changed. A hash gives it only over a channel an attacker cannot also change | 06_Integrity_and_MACs |
| IV | Initialisation vector: the per-message value that stops identical plaintexts producing identical ciphertexts. In CBC it must be unpredictable, not merely unique — which is a stronger requirement than a nonce's | AES has no modes — you pick one |
| KDF | Key derivation function: turns a password or a shared secret into key material, and for a password does so slowly, on purpose | Hashing a password |
| Kerckhoffs's principle | The system stays secure when everything except the key is public. 1883, and still the rule most often broken by people sure they are the exception | Kerckhoffs's principle |
| key | The one input an attacker is assumed not to have. Everything else — algorithm, code, protocol — is assumed public | What a key is |
| keyspace | How many keys there are. Necessary and nowhere near sufficient: a substitution cipher has 4 × 10²⁶ and no security at all | Breaking a cipher by counting |
| length extension | Given sha256(secret ‖ m) and the length of the secret, an attacker can compute sha256(secret ‖ m ‖ more) without knowing the secret. Why hash-then-append is not a MAC |
HMAC, and comparing in constant time |
| MAC | Message authentication code: a keyed tag proving a message was not changed and came from a key holder. The key is the whole difference from a plain hash | 06_Integrity_and_MACs |
| nonce | A number used once. Must be unique per key; need not be secret or unpredictable. Repeating one is the single most destructive mistake in symmetric cryptography | Nonce reuse |
| one-time pad | The only cipher with a proof of perfect secrecy, and the only one whose key is as long as the message. The proof and the uselessness are the same fact | The one-time pad |
| preimage | Given a digest, an input that produces it. Nobody can compute one for MD5 either — "MD5 is broken" is a statement about collisions | A hash is not encryption |
| salt | A per-user, non-secret value mixed into a password hash so that one precomputed table cannot attack every account at once | Hashing a password |
| substitution cipher | Each character replaced using one table fixed for the whole message. The table is the key; renaming the letters leaves every relationship between them intact, which is why counting breaks it | Breaking a cipher by counting |
| symmetric | One key, held by both sides, used to encrypt and decrypt. Fast, solved, and where the misuse happens | 05_Symmetric |