> During WWII the Soviet Union could not produce enough one-time pads ... to keep up with the enormous demand .... So, they used a number of one-time pads twice, thinking it would not compromise their system. American counter-intelligence during WWII collected all incoming and outgoing international cables. Beginning in 1946, it began an intensive effort to break into the Soviet messages with the cooperation of the British and by ... the Soviet error of using some one-time pads as two-time pads, was able, over the next 25 years, to break some 2900 messages, containing 5000 pages of the hundreds of thousands of messages that had been sent between 1941 and 1946 (when the Soviets switched to a different system).
* Stream cipher _семантически надёжен_, если злоумышленник не может предсказать следующий бит вывода генератора случайных чисел, если ему известны _все_ предыдущие.
--
Но неизвестно внутреннее состояние, заданное _секретным ключом_.
--
Генератор считается _непредсказуемым_ (Unpredictability).
--
*Но что если мы модифицируем игру?
--
Дадим злоумышленнику возможность сформировать _более_ одной пары сообщений.
--
$ c_1 \leftarrow m_1 \oplus G(k) $
$ c_2 \leftarrow m_2 \oplus G(k) $
$ m^\prime \leftarrow c_1 \oplus c_2 $
---
# Stream ciphers
## Надёжность
* Текст на естественном языке _неслучаен_, в $ m^\prime $ много информации об исходном сообщении!
--
* Если шифровать _файлы_, в заголовках которых часто встречается один и тот же набор бит, можно раскрыть часть вывода генератора!
--
### Stream cipher нельзя использовать для шифрования различных сообщений с одним и тем же ключом!
---
# Block ciphers
--
<imgstyle="width: 70%;"src="assets/blockc.png"/>
$ \\{ E(K, M), D(K, C) \\} $
$ K \in \\{0,1\\}^k $
$ M, C \in \\{0,1\\}^n $
--
## AES
* Блоки размера 128 бит.
* Ключ размера 128, 192 или 256 бит.
---
# Block ciphers
## Надёжность
* Можно использовать один и тот же _секретный ключ_ более одного раза.
--
Устойчив к модифицированной игре со злоумышленником.
--
Называется Chosen Plaintext Attack, сокращённо CPA.
--
* Злоумышленник должен отличить _схему шифрования_ от _идеально случайной функции перестановки_ (Perfect Random Permutation).
$ k \xleftarrow{R} K, f \leftarrow E(k, \cdot) \Rightarrow |E(k, \cdot)| = |K| = 2^k $