Practice sessions
Relevant materials to the practice sessions will be posted here such as solutions to some problems.
Session 1 (TOP and historical ciphers)
Session 2 (Stream ciphers and cryptographic proofs)
- SDH => DL: Attach:SDH_implies_DL.pdf
- Proof that applying two PRG-s in parallel yields a PRG can be found in Dan Boneh's and Victor Shoup's book in section 3.4.1.
- Extra problem(no bonus points but just for fun): Decrypt the message given by bytes 78 51 230 209 92 (equivalently 01010100 01000001 01010010 01010100 01010101) that was encrypted with the stream cipher where the PRG
was the LSFR generator (See Boneh and Shoups book).
The parameters for the PRG are as follows: Seed size: 8b PRG output size: 8*5 = 40b Index set V = {0, 1, 2, 3}
The encryption key was 26 (Equivalently 01011000) The answer should be five bytes which you can convert into a word under the utf-8 encoding.
- A detailed text on how to write game-based proofs https://www.shoup.net/papers/games.pdf
Session 3 (Block ciphers and modes of operation)
- Proof that a block cipher in CBC-mode is IND-CPA secure can be found in Boneh's and Shoup's book section 5.4.3.
- PRP to PRF lemma can be found in Boneh's and Shoup's book (Theorem 4.4).
- Implementation exercise: Let E(k, m)=k+m mod 256 be a block cipher that takes two 8-bit integers. Let D(k, c) = k-m mod 256 be the corresponding decryption algorithm.
Implement E and D in CBC-mode.
To check your answer, decrypt
[92, 34, 93, 75, 65, 66, 70, 66] with the key 26. Use utf-8 to decode the answer to a word.
Session 4 (Groups and CNT-mode)
- More on random self-reducibility can be found in Boneh's and Shoup's book (Sec 10.5.1)
- Implementation exercise: Implement the block cipher E in the previous in CNT-mode.
To check your answer, decrypt
[222, 170, 152, 145, 141, 153, 143, 155] with the key 26. use ASCII to decode the answer to a word.