Short Overview of Cryptography (Lecture II). John C. Mitchell Stanford University. Some philosophy (my opinions). Do something useful with your life Computers can do many things Have fun! Do something that matters Learn something about the problems you solve
John C. Mitchell
Public key: publishing key does not reveal key
Secret key: more efficient; can have key = key
map long text to short hash key; ideally, no collision
public key and private key provide “authentication”
such that for every key kK and plaintext pP
decrypt(k, encrypt(k, p)) = p
Good def’n for now, but doesn’t include key generation or prob encryption.
encrypt(key, letter) = letter + key (mod 26)
decrypt(key, letter) = letter - key (mod 26)
encrypt(3, marktoberdorf) = pdunwrehugrui
E has probability 0.12
TAOINSHR have probability 0.06 - 0.09
DL have probability ~ 0.04
CUMWFGYPB have probability 0.015 - 0.028
VKJXQZ have probability < 0.01
Possible to break many letter-to-letter substitution ciphers.
encrypt(key, text) = key text (bit-by-bit)
decrypt(key, text) = key text (bit-by-bit)
Idea can be combined with pseudo-random generators ...
P(Plaintext=p | Ciphertext=c) = P(Plaintext=p)
Ciphertext gives no advantage in guessing the plaintext.
Still, useful to relate crypto to standard problems
Answer in polynomial space may need exhaustive search
If yes, can guess and check in polynomial time
Answer in polynomial time, with high probability
Answer in polynomial time compute answer directly
Want this to be hard as a function of choice of f
where we assume Df, Rf finite and measure running time as a function of |a|
Important: complexity depends on group presentation
This is classical algorithm; better security withhash(gab) msg