340 likes | 520 Views
Cryptography: Review Day. David Brumley dbrumley@cmu.edu Carnegie Mellon University. m or error. m . Public Channel. Bob. Alice. c. c’. D. E. k e. k e. read/ write access. Eve. Cryptonium Pipe Goals: Privacy, Integrity, and Authenticity. Privacy and Encryption.
E N D
Cryptography: Review Day David Brumley dbrumley@cmu.edu Carnegie Mellon University
m or error m Public Channel Bob Alice c c’ D E ke ke read/write access Eve Cryptonium Pipe Goals: Privacy, Integrity, and Authenticity
Perfect Secrecy [Shannon1945](Information Theoretic Secrecy) Defn Perfect Secrecy (informal):We’re no better off determining the plaintext when given the ciphertext. Alice Bob Eve observes everything but the c. Guesses m1 Eve observes c. Guesses m2 Goal: Eve \Pr[m = m_1] = \Pr[m = m_2]
The One Time Pad Miller, 1882 and Vernam, 1917 \begin{align*} E(k,m) &= k \oplus m = c\\ D(k,c) &= k \oplus c = m\\ \end{align*} M = C = K = {0,1}n \[ \begin{split} D(k,E(k,m)) &= D(k, k \oplus m)\\ &= k \oplus (k \oplus m)\\ &= 0 \oplus m \\ &= m \end{split} \]
Block Ciphers • Modes of operations • CBC, CTR, etc. • What modes do for security, e.g., why ECB is bad, why randomize an IV for CBC, etc. • Definitions • Is a block cipher a PRP or PRF • Attacks
Exhaustive Search for block cipher key Goal: given a few input output pairs (mi, ci = E(k, mi)) i=1,..,n find key k. Attack: Brute force to find the key k. Homework: What is the probability that the key k found with one <m,c> pair is correct? For two pairs?
Meet in the middle attack • Define 2E( (k1,k2), m)= E(k1 , E(k2 , m) ) key-len = 112 bits for 2DES E(k2,⋅) E(k1,⋅) m c … … m c' c c’’ … … Idea: key found when c’ = c’’: E(ki, m) = D(kj, c)
Semantic Security Game World 0 World 1 E 2. Pick b=0 3. k=KeyGen(l) 4. c = E(k,mb) A 1. Picks m0, m1, |m0| = |m1| 5. Guess and output b’ E 2. Pick b=1 3. k=KeyGen(l) 4. c = E(k,mb) A 1. Picks m0, m1, |m0| = |m1| 5. Guess and output b’ m0,m1 m0,m1 c c A doesn’t know which world he is in, but wants to figure it out. Semantic security is a behavioral model getting at any A behaving the same in either world when E is secure.
Semantic security under CPA Modes that return the same ciphertext (e.g., ECB, CTR) for the same plaintext are not semantically secure under a chosen plaintext attack (CPA) (many-time-key) m0, m0∊ M Challenger k ← K Adversary A C0← E(k,m) m0, m1 ∊ M Cb← E(k,mb) if cb = c0 output 0else output 1
Semantic security under CPA Modes that return the same ciphertext (e.g., ECB, CTR) for the same plaintext are not semantically secure under a chosen plaintext attack (CPA) (many-time-key) m0, m0∊ M Challenger k ← K Adversary A C0← E(k,m) m0, m1 ∊ M Cb← E(k,mb) Encryption modes must be randomized or use a nonce (or are vulnerable to CPA) if cb = c0 output 0else output 1
Message Integrity Goal: integrity(not secrecy) Examples: • Protecting binaries on disk. • Protecting banner adson web pages Security Principles: • Integrity means no one can forge a signature
PRF Security Game(A behavioral model) World 0 World 1 E 2. if(tbl[x] undefined)tbl[x] = rand() return y =tbl[x] A 1. Picks x 5. Guess and output b’ E y = PRF(x) A 1. Picks x 3. Outputs guess for b x x y y A doesn’t know which world he is in, but wants to figure it out. For b=0,1: Wb:= [ event that A(Wb) =1 ] AdvSS[A,E] := | Pr[ W0 ] − Pr[ W1 ] | ∈ [0,1] Always 1
Secure PRF: An Alternate Interpretation For b = 0,1 define experiment EXP(b) as: Def: PRF is a secure PRF if for all efficient A: ChallengerF Adversary
Secure MAC Game Security goal: A cannot produce a valid tag on a message • Even if the message is gibberish Challenger 1. k = KeyGen(l) 3. Compute i in 0...q:ti= S(mi, k) 5. b = V(m,t,k) Adversary A 2. Picks m1, ..., mq 4. picks m not in m1,...,mq Generates t m1,...,mq t1,...,tq m,t existential forgery if b=“yes” b = {yes,no}
Birthday Paradox Rule of Thumb Given N possibilities, and random samples x1, ..., xj, PR[xi = xj] ≈ 50% when j = N1/2
Generic attack on hash functions Let H: M {0,1}nbe a hash function ( |M| >> 2n ) Generic alg. to find a collision in time O(2n/2) hashes Algorithm: • Choose 2n/2random messages in M: m1, …, m2n/2 (distinct w.h.p ) • For i = 1, …, 2n/2 compute ti = H(mi) ∈{0,1}n • Look for a collision (ti = tj). If not found, got back to step 1. How well will this work?
Brute Force Online Brute Force Attack: input:hp = hash(password) to crack for each i in dictionary file if(h(i) == hp) output success; Time Space Tradeoff Attack: precompute: h(i) for each i in dict file in hash tbl input: hp = hash(password) check if hp is in hash tbl “rainbow tables”
Salts Enrollment: • compute hp=h(password + salt) • store salt || hp Verification: • Look up salt in password file • Check h(input||salt) == hp What is this good for security, given that the salt is public? Salt doesn’t increase security against online attack, but does make tables much bigger.
Motivating Question: Which is Best? Encryption Key = KE; MAC key = kI Option 1: SSL (MAC-then-encrypt) E(kE , m||tag) S(kI, m) m tag m m m tag tag tag m Option 2: IPsec (Encrypt-then-MAC) E(kE, m) S(kI , c) m m Option 3: SSH (Encrypt-and-MAC) E(kE, m) S(kI , m) m m
An authenticated encryptionsystem (E,D) is a cipher where As usual: E: K × M × N⟶ C but D: K × C × N⟶ M ∪{⊥} Security: the system must provide • Semantic security under CPA attack, and • ciphertext integrity. The attacker cannot create a new ciphertext that decrypts properly. reject ciphertext as invalid
ci E(k,mi,b) mi D(k,ci) CCA Game Definition Let ENC = (E,D) over (K,M,C). For b = {0,1}, define EXP(0) and EXP(1) for i=1,…,q: (1) CPA query: mi,0, mi,1 M : |mi,0| = |mi,1| ci C : ci ∉ {c1, …, ci-1} Chal. k K Adv. b’ {0,1} b Ex: could query a changed ci (2) CCA query:
1. Pick a from [0,p-1) 2. Pick b from [0,p-1) Eveobserves: g, ga, gb Goal: compute a (or b) (i.e., calculate the discrete log) or compute gab Bob Alice 4. gb mod p 3. ga mod p 5. Compute (ga)b mod pas secret key 6. Compute (gb)a mod pas secret key Eve
MITM Adversary As described, Diffie-Hellman is insecureagainst activeMan In The Middle (MITM) attacks Alice MITM Bob gamod p gm mod p gm mod p gb mod p gmb mod p gma mod p
Public Key Encryption Def: a public-key encryption system is a triple of algorithms (G, E, D) • G(): randomized alg. outputs a key pair (pk, sk) • E(pk, m): randomized alg. that takes m∈M and outputs c ∈C • D(sk,c): determisitic alg. that takes c∈Cand outputs m ∈ M or ⊥ Consistency: ∀(pk, sk) output by G : ∀m∈M: D(sk, E(pk, m) ) = m Note: Without randomization, an attacker can determine E(pk,m1) = E(pk,m2) when m1=m2
m0 , m1 M : |m0| = |m1| c E(pk, mb) pk b’ {0,1} Semantic Security For b=0,1 define experiments EXP(b) (i.e., EXP(0) and EXP(1)): Def:Enc =(G,E,D) is sem. secure (a.k.a IND-CPA) if for all efficient A:AdvSS[A,Enc] = |Pr[EXP(0)=1] – Pr[EXP(1)=1] | < negligible b Chal. Adv. A (pk,sk)G() EXP(b) No query encryptions of messages. Why?
Easy and Hard Problems • Factoring • Discrete Log • Exponentiation