An encrypted conversation involves, at the macro level, three phases:
- Authentication: proving that you are who you say you are
- Key generation: creating the keys used for bulk data encryption
- Encryption/sending/decryption of the user's valuable bulk data
That's a bit of an oversimplification, as we'll see below when we talk about IPsec, but good enough for now.
You probably all know that there are two major kinds of cryptography -- symmetric key and asymmetric key, also known as public key. Due to the high costs of computation for public key, bulk data encryption is done using symmetric key. Symmetric encryption comes in two kinds, block ciphers and stream ciphers. These days pretty much everything seems to be block, but I'm not sure why.
Some additional terminology:
- cleartext: data that isn't encrypted and isn't really intended to be (sometimes confused with the below, even by me)
- plaintext: the original, unencrypted message
- ciphertext: the encrypted message
- integrity: the data hasn't been tampered with
- confidentiality or privacy: the data hasn't been disclosed to anyone unauthorized
- session keys: the keys used for one communication session
- forward secrecy: keeping your data secret in the future, esp. by building a crypytosystem that doesn't reuse keys
- rekeying: changing the keys used in the middle of a session
- subkeys: keys used for a portion of an encryption process, derived from a subset of the bits of the session key
- cryptoperiod: the time that a specific key is authorized for use
Attacks on encrypted communications generally fall into one of three
categories:
- unknown plaintext: the hardest problem; how do you recognize when you've found the message? With many but not all systems, failure will leave only unintelligible, random data, while success will produce words from the dictionary or other recognizable text.
- known plaintext: when an attacker knows what the plaintext corresponding to a particular ciphertext is, and attempts to find the key; not uncommon given the regularity of communications such as web browsing or email.
- chosen plaintext: when the attacker can control the text to be encrypted, but obviously not the key; rarer than known plaintext, but can happen with small devices that a person may "own" but not always completely control, or if the attacker partially controls some subset of resources, such as a related web server, or has compromised one or more hosts behind an encryption gateway.
We also need this definition:
- brute force/exhaustive search: checking every possible key, which of course is $2^n$ for an $n$-bit key, resulting in an expected hit time of half that number of trials; if you have a method that will find a key in substantially less than $2^{n-1}$ trials, you have "broken" the cipher, even if your attack isn't necessarily practical in the short run.
And three mathematical definitions I know for algebra on the real numbers, but I'm a little fuzzy on in the bitwise, cryptographic context:
- linear function: I think in this context, $f(x,y)$ is a linear function of some bits if it involves only a linear addition of the inputs, and $f(0,0) = 0$ (origin is preserved). Multiplication (AND) is disallowed? Importantly, $f(x1 + x2) = f(x1) + f(x2)$.
- affine function: same as a linear function, but an offset is allowed, such that $f(0,0) = 1$ (origin isn't necessarily preserved) (equivalent to a translation in a real space $R^n$).
- nonlinear function: A nonlinear function is one in which $f(x+y) \ne f(x) + f(y)$ for some values $x$ and $y$. Some affine functions are nonlinear. I'm definitely fuzzy here...multiplication and arbitrary mappings are allowed?
No comments:
Post a Comment