Режим обратной связи по выходу (англ. Output Feedback, OFB) — один из вариантов использования симметричного блочного шифра. Особенностью режима является то, что в качестве входных данных для алгоритма блочного шифрования не используется само сообщение. Вместо этого блочный шифр используется для генерации псевдослучайного потока байтов, который с помощью операции XOR складывается с блоками открытого текста. Подобная схема шифрования называется потоковым шифром (англ. stream cipher).
Схема шифрования в режиме OFB определяется следующим образом:
Где I V {displaystyle IV} — вектор инициализации, K i {displaystyle K_{i}} — ключевой поток, K {displaystyle K} — ключ шифрования, E {displaystyle E} — функция шифрования блока, n {displaystyle n} — количество блоков открытого текста в сообщении, C i {displaystyle C_{i}} и P i {displaystyle P_{i}} — блоки шифрованного и открытого текстов соответственно.
Режим OFB наглядно демонстрирует одну из проблем потоковых шифров. При использовании одного и того же вектора инициализации для шифрования нескольких сообщений будет сгенерирован одинаковый поток ключей. Предположим, что P 1 {displaystyle P_{1}} и P 2 {displaystyle P_{2}} — два разных сообщения для шифрования ключом K {displaystyle K} . Зашифруем исходные сообщения в режиме OFB и получим два шифротекста — C 1 {displaystyle C_{1}} и C 2 {displaystyle C_{2}} , соответственно. Таким образом, будет справедливо следующее тождество:
C 1 ⊕ C 2 = E ( K , K i − 1 ) ⊕ P 1 ⊕ E ( K , K i − 1 ) ⊕ P 2 = P 1 ⊕ P 2 {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}}
Следовательно, если потенциальному злоумышленнику известна хотя бы одна пара шифрованного и открытого текста, вычисление любых открытых текстов, зашифрованных таким же ключом и с идентичным вектором инициализации, становится тривиальной задачей.