Вспомогательная страница к разделу КРИПТОГРАФИЯ
Рассмотрим еще раз классический алгоритм шифрования Виженера. Алгоритм относится к идеологии секретных ключей шифрования, его стойкость напрямую зависит от взломоустойчивости ключевого слова (фразы). Следовательно, основной проблемой при применении этого шифра становится безопасность хранения (или передачи) ключа как для отправителя, так и для получателя.
Отправитель $A$ создает одноразовый секретный ключ шифрования $ \mathfrak e $. Для простоты предположим, что ключ дешифрования совпадает с ключом шифрования. Функцию шифрования посредством этого ключа обозначим $ \varepsilon ( \cdot ) $. Отправитель знает открытый ключ получателя $ (\mathbf E_B, M_B ) $. С открытым текстом $ x $ он действует по следующей схеме
1. Параллельно шифруется $ x $ ключом $ \mathfrak e $, а сам ключ $ \mathfrak e $ — открытым ключом получателя.
2. Собственно шифровка составляется конкатенацией полученных двух блоков (при необходимости, размеры этих блоков фиксируются, и они предполагаются известными получателю).
Действия получателя по получению шифровки.
1. Она разбивается на блоки, и второй блок подвергается дешифрованию с помощью секретного ключа получателя. Устанавливается секретный ключ дешифрования $ \mathfrak e $.
2. Он применяется к дешифрованию первого блока полученной шифровки.
Теперь вставляем в эту схему блокировку от возможной подделки сообщения. Считаем, что оба корреспондента — отправитель $ A $ и получатель $ B $ — пользуются одной и той же стойкой функцией хеширования $ h (\cdot) $ (например SHA256).
Отправитель
1. Параллельно
2. Производит конкатенацию блоков $ h(x) $ и $ \mathfrak e $ $$ \widetilde{x}:= [h(x) \mid \mathfrak e] \ ; $$
3. Шифрует $ \widetilde{x} $ открытым ключом получателя: $$ \widetilde{c}:= \widetilde{x}^{\mathbf E_B} \pmod{M_B} \, ; $$
4. Производит конкатенацию блоков $ \varepsilon (x) $ и $ \widetilde{c} $.
Результат $ c:= [\varepsilon (x) \mid \widetilde{c}] $ и отправляется адресату.
Симметричный алгоритм шифрования — AES (или Rijndael).