Режим обратной связи по выходу
Режим обратной связи по выходу (англ. Output Feedback, OFB) — один из вариантов использования симметричного блочного шифра. Особенностью режима является то, что в качестве входных данных для алгоритма блочного шифрования не используется само сообщение. Вместо этого блочный шифр используется для генерации псевдослучайного потока байтов, который с помощью операции XOR складывается с блоками открытого текста. Подобная схема шифрования называется потоковым шифром (англ. stream cipher).
Определение
Схема шифрования в режиме OFB определяется следующим образом:
- [math]\displaystyle{ K_o = IV }[/math]
- [math]\displaystyle{ K_i = E(K, K_{i-1}) }[/math] для [math]\displaystyle{ i = 1,\dots, n }[/math]
- [math]\displaystyle{ C_i = K_i \oplus P_i }[/math]
Где [math]\displaystyle{ IV }[/math] — вектор инициализации, [math]\displaystyle{ K_i }[/math] — ключевой поток, [math]\displaystyle{ K }[/math] — ключ шифрования, [math]\displaystyle{ E }[/math] — функция шифрования блока, [math]\displaystyle{ n }[/math] — количество блоков открытого текста в сообщении, [math]\displaystyle{ C_i }[/math] и [math]\displaystyle{ P_i }[/math] — блоки шифрованного и открытого текстов соответственно.


Особенности режима
- Значение вектора инициализации должно быть уникальным для каждой процедуры шифрования одним ключом. Его необязательно сохранять в секрете и оно может быть передано вместе с шифротекстом.
- Алгоритм дешифрования в режиме OFB полностью совпадает с алгоритмом шифрования. Функция дешифрования блочного алгоритма не используется в данном режиме, т.к. ключевой поток генерируется только функцией шифрования блока.
Режим OFB наглядно демонстрирует одну из проблем потоковых шифров.[1] При использовании одного и того же вектора инициализации для шифрования нескольких сообщений будет сгенерирован одинаковый поток ключей. Предположим, что [math]\displaystyle{ P_1 }[/math] и [math]\displaystyle{ P_2 }[/math] — два разных сообщения для шифрования ключом [math]\displaystyle{ K }[/math]. Зашифруем исходные сообщения в режиме OFB и получим два шифротекста — [math]\displaystyle{ C_1 }[/math] и [math]\displaystyle{ C_2 }[/math], соответственно. Таким образом, будет справедливо следующее тождество:
[math]\displaystyle{ C_1 \oplus C_2 = E(K, K_{i-1}) \oplus P_1 \oplus E(K, K_{i-1}) \oplus P_2 = P_1 \oplus P_2 }[/math]
Следовательно, если потенциальному злоумышленнику известна хотя бы одна пара шифрованного и открытого текста, вычисление любых открытых текстов, зашифрованных таким же ключом и с идентичным вектором инициализации, становится тривиальной задачей.
- Появление коллизии в ключевом потоке (или совпадение вектора инициализации и одного из ключевых блоков) приведёт к циклическому повторению ключевой последовательности, что может вызвать нарушение безопасности режима шифрования, как показано в предыдущем пункте.
- Распространение ошибки в данном режиме не происходит. Изменение одного бита в шифрованном тексте приведет к изменению одного бита при дешифровании. Однако, потеря бита в шифротексте приведет к некорректному дешифрованию всех последующих битов.
Примечания
- ↑ Нильс Фергюсон, Брюс Шнайер. 5.4 Обратная связь по выходу (OFB) // Практическая криптография = Practical Cryptography: Designing and Implementing Secure Cryptographic Systems. — М. : Диалектика, 2004. — 432 с. — 3000 экз. — ISBN 5-8459-0733-0, ISBN 0-4712-2357-3.
Литература
- Шнайер Б. 9.8. Режим выходной обратной связи // Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.