1. Modern Stream Ciphers
Ci = Mi XOR StreamKeyi
2. Vernam Cipher or One-Time Pad
3. Using a Vernam Cipher
C1i = M1i XOR StreamKeyi C2i = M2i XOR StreamKeyi C1i XOR C2i = M1i XOR StreamKeyi XOR M2i XOR StreamKeyi = M1i XOR M2i
4. Practical Pseudo-random Stream Ciphers
5. Stream Ciphers and Pseudo-Random Generators
6. Stream Ciphers and Pseudo-Random Generators
7. Using Block Ciphers as Stream Ciphers
Ci = Pi XOR Oi Oi = DESK1(Oi-1) O-1 = IV
Ci = Pi XOR Oi Oi = DESK1(i)
8. Using Block Ciphers as Stream Ciphers
Ci = Pi XOR DESK1 (Ci-1) C-1 = IV
9. Linear Feedback Shift Registers (LFSR)
10. Linear Feedback Shift Registers (LFSR)
p(x) = x32+x7+x5+x3+x2+x
11. LFSR Insecurities!
n bit shift register
2n bits is enough to completely predict sequence
12. Stream Ciphers Design Criteria
13. Stream Ciphers Based on LFSRs
14. A5
240
15. SOBER
Sn+17 = 99 x Sn+15 + Sn+4 + 206 x Sn
2136-1
Vn = ROTL(Sn+Sn+16) + Sn+1 + Sn+6 + Sn+13
16. SOBER
17. RC4
18. RC4 Key Schedule
S forms the internal state of the cipher
k of length l bytes
i = j = 0
initialise array S to {0, 1, 2, ..., 255}
repeat 256 times
j += S[i] + k[i mod l] (mod 256)
swap(S[i], S[j])
increment i
19. RC4 Encryption
i = j = 0 for each message byte i = i + 1 (mod 256) j = j + S[i] (mod 256) swap(S[i], S[j]) t = (S[i] + S[j]) (mod 256) C = M XOR S[t]
20. RC4 Security
21. Other Stream Ciphers
22. Public Key Based Schemes
xi+1 = xi2 mod n and use bi the LSB of xi where n=p.q, primes p,q=3 mod 4
23. Summary
24. Exercises