Режим обратной связи по шифру
Блочный шифр также может быть реализованы как самосинхронизирующийся потоковый шифр, такой режим называется режимом обратной связи по шифру (cipher-feedback, СРВ). В режиме СВС шифрование не могло начаться, пока не получен целый блок данных. Это создает проблемы для некоторых сетевых приложений . Например, в безопасной сетевой среде терминал должен иметь возможность передавать главному компьютеру каждый символ сразу, как только он введен. Если данные нужно обрабатывать байтами, режим СВС также не работает.
В режиме СРВ единица зашифрованных данных может быть меньше размера блока. В следующем примере каждый раз шифруется только один символ ASCII (это называется 8-битовым шифрованием), но в числе 8 нет ничего волшебного. Вы можете шифровать данные по одному биту с помощью 1-битового СРВ, хотя использование для единственного бита полного шифрования блочным шифром потребует много ресурсов, потоковый шифр в этом случае был бы идеей получше. (Уменьшение количества циклов блочного фильтра для повышения скорости не рекомендуется .) Можно также использовать 64-битовый СРВ, или любой и-битовый СРВ, где п больше или равно размеру блока.
На 0-й показан 8-битовый режим СРВ, работающий с 64-битовым алгоритмом. Блочный алгоритм в режиме СРВ работает с очередью, размер которой равен размеру используемого блока . Сначала очередь заполнена IV, как и в режиме СВС. Очередь шифруется и для крайних левых восьми битов результата выполняется XOR с первыми 8-битовым символом открытого текста для получения первого 8-битового символа шифротекста. Теперь этот символ передается. Те же восемь битов также передвигаются на место крайних правых восьми битов очереди, а крайними левыми битами становятся следующие восемь битов . Крайние восемь левых битов отбрасывается. Следующий символ открытого текста шифруется тем же способом . Дешифрирование является обратным процессом. И шифрующей, и дешифрирующей стороной блочный алгоритм используется в режиме шифрования.

Рис. 9-9. Режим 8-битовой обратной связи по шифру.
Если размер блока алгоритма - п, то -битовый СРВ выглядит следующим образом :

Рис. 9-10. n-битовый СВР с n-битовым алгоритмом.
Как и режим СВС, режим СРВ связывает вместе символы открытого текста так, что шифротекст зависит от всего предшествующего открытого текста.
Вектор инициализации
Для инициализации процесса СРВ в качестве входного блока алгоритма может использоваться вектор ин и-циализации IV. Как и в режиме СВС IV не нужно хранить в секрете.
Однако IV должен быть уникальным. (В отличие от режима СВС, где IV не обязан быть уникальным, хотя это и желательно.) Если IV в режиме СРВ не уникален, криптоаналитик может раскрыть соответствующий открытый текст. IV должен меняться для каждого сообщения. Это может быть последовательный номер, увеличивающийся для каждого нового сообщения и не повторяющийся в течение времени жизни ключа . Если данные шифруются с целью последующего хранения, IV может быть функцией индекса, используемого для поиска да н-ных.
Распространение ошибки
В режиме СРВ ошибка в открытом тексте влияет на весь последующий шифротекст, но самоустраняется при дешифрировании. Гораздо интереснее ошибка в шифротексте. Первым эффектом сбоя бита шифротекста является сбой одного бита открытого текста. Затем ошибка попадает в сдвиговый регистр, и пока сбойный бит не выйдет из регистра, будет формироваться неправильный шифротекст. В 8-битовом режиме СРВ из-за сбоя единственного бита портятся 9 байтов расшифрованного открытого текста. Потом система восстанавливается, и весь последующий шифротекст расшифровывается правильно. В общем случай в и-битовом режиме СРВ одна ошибка шифротекста влияет на дешифрирование текущего и следующих т/п-\ блоков, где т - размер блока.
Более тонкой проблемой, связанной с такого рода распространением ошибки, является то, что если Мэллори знает открытый текст сообщения, он может поиграть битами данного блока, заставляя их расшифровываться в нужные ему данные. Следующий блок при дешифрировании превратится в чепуху, но вред уже будет причинен. К тому же, он может, оставаясь необнаруженным, менять последние биты сообщения .
СРВ самовосстанавливается и после ошибок синхронизации. Ошибка попадает в сдвиговый регистр и, пока она находится там, портит 8 байтов данных. СРВ представляет собой пример блочного шифра, который можно использовать как самосинхронизирующийся потоковый шифр (на уровне блоков ).