The language of cryptography
Alices K encryption A key plaintext encryption algorithm ciphertext Bobs K decryption B key decryption plaintext algorithm
symmetric key crypto: sender, receiver keys identical public-key crypto: encryption key public, decryption key secret (private)
Symmetric key cryptography
substitution cipher: substituting one thing for another
monoalphabetic cipher: substitute one letter for another
plaintext: ciphertext:
E.g.:
abcdefghijklmnopqrstuvwxyz mnbvcxzasdfghjklpoiuytrewq
Plaintext: bob. i love you. alice ciphertext: nkn. s gktc wky. mgsbc
Q: How hard to break this simple cipher?: brute force (how hard?) other?
Symmetric key cryptography
KA-B
plaintext message, m encryption ciphertext algorithm K (m)
A-B
KA-B
decryption plaintext algorithm m = K ( KA-B(m) )
A-B
symmetric key crypto: Bob and Alice share know same (symmetric) key: K A-B e.g., key is knowing substitution pattern in mono alphabetic substitution cipher Q: how do Bob and Alice agree on key value?
Public Key Cryptography
symmetric key crypto
requires sender,
public key cryptography
sender, receiver do
receiver know shared secret key Q: how to agree on key in first place (particularly if never met)?
not share secret key public encryption key known to all private decryption
key known only to receiver
Public key cryptography
K
+ Bobs public B key
- Bobs private B key
plaintext message, m
encryption ciphertext algorithm + K (m)
B
decryption plaintext algorithm message + m = K B(K (m))
B
Public key encryption algorithms
Requirements:
+ need K ( ) and K - ( ) such that B B - + K (K (m)) = m B B
+ given public key KB , it should be
impossible to compute private key KB
RSA: Rivest, Shamir, Adelson algorithm
RSA: Choosing keys
1. Choose two large prime numbers p, q. (e.g., 1024 bits each) 2. Compute n = pq, z = (p-1)(q-1) 3. Choose e (with e<n) that has no common factors with z. (e, z are relatively prime). 4. Choose d such that ed-1 is exactly divisible by z. (in other words: ed mod z = 1 ). 5. Public key is (n,e). Private key is (n,d).
+ KB -
KB
RSA: Encryption, decryption
0. Given (n,e) and (n,d) as computed above 1. To encrypt bit pattern, m, compute
e e c = m mod n (i.e., remainder when m is divided by n) d m = c d mod n (i.e., remainder when c is divided by n)
Magic m = (m e mod n) d mod n happens! c
2. To decrypt received bit pattern, c, compute
RSA example:
Bob chooses p=5, q=7. Then n=35, z=24. e=5 (so e, z relatively prime). d=29 (so ed-1 exactly divisible by z. me 1524832 c = me mod n
encrypt:
letter l
m 12 d c
17 m = cd mod n letter 12 l
decrypt:
c 17
481968572106750915091411825223071697
RSA: Why is that
m = (m e mod n) d mod n
Useful number theory result: If p,q prime and n = pq, then: y y mod (p-1)(q-1) x mod n = x mod n
(m mod n) d mod n = medmod n = m ed mod (p-1)(q-1)
(using number theory result above)
mod n
= m mod n
(since we chose ed to be divisible by (p-1)(q-1) with remainder 1 )
= m
RSA: another important property
The following property will be very useful later: K (K (m))
B B +
+ = m = K (K (m)) B B
use public key first, followed by private key
use private key first, followed by public key
Result is the same!