Режимы работы блочных шифров
Общие сведения о режимах шифрования. В 1980 г. в США был принят стандарт (FIPS PUB 81), определяющий режимы работы алгоритма DES (табл. 2.15). Аналогичный стандарт для алгоритма AES принят американским NIST в 2001 г. (NIST SP 800-38А1). Эти режимы не привязаны к кон-
Таблица 2.15
Режимы работы блочных шифров
Режим |
Описание |
Типичные области применения |
Электронная кодовая книга (ЕСВ) |
Каждый полный блок открытого текста шифруется независимо от других с одним и тем же ключом |
Передача отдельных значений (коротких текстов, ключевой информации) |
Сцепление блоков шифра (СВС) |
Входной блок данных алгоритма шифрования вычисляется как побитовый XOR текущего полного блока открытого текста и предшествующего полного блока шифротекста |
Поблочная передача данных общего назначения. Аутентификация |
Обратная связь по шифротексту (CFB) |
Входные данные обрабатываются порциями по г битов. Полученная на предыдущем шаге порция шифро- тскста используется как входные данные алгоритма шифрования для формирования псевдослучайной последовательности, которая затем накладывается с помощью побитового XOR на очередную порцию открытого текста |
Потоковая передача данных общего назначения. Аутентификация |
1 NIST SP 800-38А 2001 Edition. Recommendation for Block Cipher Modes of Operation. Methods and Techniques // NIST Dec. 2001. URL: http://csrc.nist.gov/publications/nistpubs/ 800-38a/sp800-38a.pdf
Режим |
Описание |
Типичные области применения |
Обратная связь по выходу (OFB) |
Подобна СFВ, но в качестве входных данных алгоритма шифрования используется ранее полученный блок псевдослучайной последовательности |
Потоковая передача данных по каналам с помехами |
кретному алгоритму и могут быть использованы фактически для любого блочного алгоритма симметричного шифрования:
- • электронная кодовая книга ЕСВ (Electronic Code Book);
- • сцепление блоков шифра СВС (Cipher Block Chaning);
- • обратная связь но шифротексту СЕВ (Cipher Feed Back);
- • обратная связь но выходу OFB (Output Feed Back).
Можно сказать, что режимы работы уточняют особенности реализации блочных шифров для различных применений. FIPS PUB 81 определяет четыре режима работы: ЕСВ, СВС, СЕВ и OFB. Банковские стандарты ANSI определяют для шифрования ЕСВ и СВС, а для проверки подлинности - СВС и /-битовый СЕВ. Кроме того, режимы СЕВ и OFB (CTR) блочных симметричных шифров могут быть использованы в качестве криптографически стойких генераторов псевдослучайных последовательностей.
Электронная кодовая книга. Режим электронной кодовой книги ЕСВ является наиболее простым. При использовании режима ЕСВ защищаемое сообщение разбивают на 64-битные блоки Xt. Каждый такой блок шифруют независимо от других, с использованием одного и того же ключа шифрования (рис. 2.14). При расшифровывании криптограммы У, также преобразуются независимо друг от друга:
где Ek — функция шифрования на ключе k; Xi и Yi — блоки открытого текста и соответствующие им блоки зашифрованного текста.
Рис. 2.14. Режим электронной кодовой книги ЕСВ
Главным достоинством данного режима является простота его реализации. Основной же недостаток режима ЕСВ заключается в том, что если в исходном сообщении есть повторяющиеся блоки, то и значения соответствующих блоков криптограммы будет совпадать, а это даст криптоаналитику противника дополнительную информацию о содержании сообщения. Поэтому режим ЕСВ рекомендуют использовать для защиты небольших объемов данных, где вероятность появления совпадающих блоков сообщения невелика (например, шифрование криптографических ключей друг на друге в многоключевых схемах). Поэтому режим ЕСВ наиболее уязвим к вскрытию. Кроме того, если противник знает, в каких блоках содержится нужная ему информация, он может изменить только их. Такая атака затрудняет выявление подмены.
Еще один недостаток — в режиме ЕСВ алгоритм шифрует данные только поблочно. При необходимости, например, зашифровать восемь бит сообщение дополняется до величины полного блока (т.е. до 64 бит в случае DES), блок шифруется целиком, а после расшифровки дополняющие биты отбрасываются.
При обмене зашифрованными текстами между абонентами в канале передачи данных могут возникать ошибки, поэтому важна способность режима шифрования к восстановлению ошибок. Режим шифрования ЕСВ не размножает ошибок типа замены. Это означает, что замена одного бита шиф- ротекста приведет к неправильному расшифрованию всего текущего блока, последующие же блоки будут расшифрованы верно. При возникновении ошибок типа «пропуск» или «вставка» символа шифротекста (ошибок синхронизации) неправильно будет расшифрован весь следующий за ошибкой текст.
Сцепление блоков шифра. Существенно более стойким является режим сцепления блоков шифра СВС, обеспечивающий получение разных блоков шифра даже для одинаковых блоков открытого текста.
Схема преобразования представлена на рис. 2.15. В этом режиме исходное сообщение, как и в предыдущем случае, разбивается на блоки Xt по 64 бита (для DES).
Перед шифрованием каждого блока i шифруемых данных предварительно выполняется его сложение по модулю 2 (XOR) с результатом шифрования предыдущего блока г — 1:

Рис. 2.15. Режим сцепления блоков СВС
Первый блок складывается побитно по модулю 2 с 64-битным блоком, называемым инициализирующим вектором (вектором инициализации, Initialization Vector) — IV, который известен обеим сторонам взаимодействия, периодически ими меняется и держится в секрете от других:
Затем блок исходного сообщения Х2 модифицируется с использованием блока криптограммы У, и т.д. Аналогичные действия производят при расшифровывании.
Варьируя значение вектора инициализации, можно получать различные шифротексты для одинаковых открытых текстов. При расшифровывании вектор инициализации должен быть известен. То же справедливо и для остальных режимов работы блочных шифров (СРВ и OFB).
Режим С ВС используется для шифрования больших сообщений. Аналогично предыдущему режиму, данные, длина которых меньше размера блока, перед обработкой дополняются до полного блока.
Результат шифрования каждого блока зависит не только от текущего блока открытого текста, но и от всего предыдущего открытого текста.
Как легко заметить, последний блок криптограммы зависит от инициализирующего вектора, каждого бита открытого текста и значения секретного ключа: Уу = f(Xv Х0,..., XN, IV, к). Поэтому последний блок УЛГ можно использовать для контроля целостности и аутентификации сообщений (MAC — Message Authentication Code). Аутентификация отправителя зашифрованного сообщения производится но знанию им общего с получателем секретного ключа к.
Режим шифрования СВС не размножает ошибок типа замены. Неправильная передача одного бита шифротекста приведет к неправильному расшифрованию всего текущего блока и одного бита следующего блока, затем текст будет расшифрован верно. В то же время СВС весьма чувствителен к ошибкам тина «пропуск» или «вставка символа». Наличие в шифротекс- те таких ошибок не позволяет правильно восстановить исходный текст сообщения даже частично.
Обратная связь но шифротексту. Режим обратной связи по шифротексту СРВ (рис. 2.16) более сложен в реализации, чем два предыдущих.

Рис. 2.1 в. Режим обратной связи по шифротексту CFB
Режим CFB используется в тех случаях, когда длина преобразуемого блока отличается от размера полного блока шифра (например, 64 бит для DES). Пусть необходимо зашифровать сообщение, считываемое последовательно блоками по гбит, где 1 < г < 64. Для построения преобразования используется сдвиговый регистр (регистр Г). Пусть преобразуемое сообщение X разбито на блоки по гбит, обозначаемые Х-. Шифрование данных в этом режиме проводится следующим образом:
- • на первом шаге вектор инициализации IVзаписывается в регистр 1 (/);
- • содержимое регистра / зашифровывается и помещается в регистр 2 (R):R = Ek(I);
- • из регистра 2 выбираются г левых битов R (1 < г < 64) — О , которые накладываются операцией XOR на /'-битный блок шифруемого текста Х}. Результатом является /-битный блок шифротекста Yj. У- = X- © 0},
- • содержимое регистра I сдвигается влево на г битов;
- • содержимое регистра I дополняется справа /-битным блоком шифро- текста F;
- • при необходимости продолжить шифрование все шаги, кроме первого, повторяются в цикле до окончания обработки всех шифруемых данных.
Фактически в режиме СРВ алгоритм шифрования на основе вектора инициализации, ключа шифрования и предыдущих блоков шифрогекста генерирует псевдослучайную последовательность, которая накладывается на открытый текст.
Поскольку операция XOR обратна самой себе, т.е. обладает свойством (X 0 У) ® Y = X для любых значений X и Y, то для расшифровки следует сгенерировать и наложить на шифротекст такую же последовательность. Это будет невозможно без знания значений вектора инициализации и ключа.
При расшифровании (рис. 2.17) сдвиговый регистр также инициализируется значением IV. Чтобы получить ту же последовательность вспомогательных значений О-, что и при шифровании, здесь также используется шифрование блочным криптоалгоритмом (а не расшифрование, как например, при обратном преобразовании в режиме СВС).

Рис. 2.17. Шифрование и расшифрование в режиме CFB
В режиме CFB алгоритм блочного шифрования можно использовать в качестве потокового шифра, установив длину г равной размеру символов потока (например, восемь бит для передачи текстов в ASCII-кодах или один бит для передачи двоичных последовательностей).
Использование поточного шифра избавляет от необходимости дополнять сообщение до целого числа блоков. Кроме того, с поточным шифром можно работать в режиме реального времени. Например, при передаче потока символов с помощью посимвольного поточного шифра каждый символ можно шифровать и сразу же передавать адресату, не дожидаясь окончания шифрования остальной части сообщения. При этом, как и в режиме СВС, шифрованный текст, соответствующий любому элементу открытого текста, будет зависеть от всех предыдущих элементов открытого текста.
Изменение одного бита шифротекста при передаче влечет неправильное расшифрование текущего /-битного блока и всех последующих /-битных блоков до тех пор, пока ошибка находится в сдвиговом регистре. Затем текст будет расшифровываться правильно. Пропуск или вставка символа в шифротексте также ведут к неправильному расшифрованию нескольких r-битных блоков (пока ошибка находится в сдвиговом регистре). Таким образом, режим СРВ является самосинхронизирующимся как по отношению к ошибкам замены, так и по отношению к ошибкам иропуска/вставки.
Обратная связь по выходу. Режим обратной связи по выходу ОЕВ (рис. 2.18) похож на предыдущий (CFB) с той разницей, что на каждом шаге значение сдвигового регистра заменяется результатом шифрования его предыдущего значения (/; = Ек(1, ,)).
Рис. 2.18. Режим обратной связи по выходу OFB
Режим OFB также позволяет шифровать блоки, меньшие по длине, чем полный блок алгоритма шифрования (64 бита для DES):
- • на нервом шаге вектор инициализации 7Vзаписывается в регистр 1 (/);
- • содержимое регистра / зашифровывается и помещается в регистр 1 (Г) и регистр 2 (R): R = Е^Г), I = Ек(Г);
- • из регистра 2 выбираются г левых битов R (1 < г < 64) — О,, которые накладываются операцией XOR на r-битный блок шифруемого текста Xf Результат — r-битный блок шифротексга Yj. Y = Xt® O',
- • при необходимости продолжить шифрование все шаги, кроме первого, повторяются в цикле до окончания обработки всех шифруемых данных.
В режиме OFB накладываемая на шифруемый текст последовательность зависит только от значений вектора инициализации и ключа шифрования. Таким образом, шифрующую последовательность можно сгенерировать заранее и, например, использовать ее в периоды максимальной нагрузки на шифратор.
Аналогично режиму CFB (рис. 2.19) для расшифрования необходимо сгенерировать ту же последовательность Oj и наложить ее на шифротекст.

Рис. 2.19. Шифрование и расшифрование в режиме CFB
Существует и более простой режим OFB — режим счетчика (CTR - CounTeR}), в котором обратная связь вообще отсутствует, а содержимое сдвигового регистра перед каждым зашифрованием увеличивается на единицу (рис. 2.20).
Рис. 2.20. Режим счетчика CTR
При использовании режима OFB важно для каждого сеанса шифрования данных использовать новое значение инициализирующего вектора IV (его можно передавать, в том числе, и открытым текстом). Связано это с тем, в режимах OFB и CFB генерируется псевдослучайная последовательность чисел, которая накладывается на блоки открытого текста. Если в режиме OFB дважды используется один и тот же вектор инициализации и ключ шифрования, то и генерируемые последовательности будут совпадать.
Режим OFB, как и предыдущий, может быть использован для потокового шифрования данных.
В режимах OFB и CTR при возникновении ошибки замены в одном бите шифротекста неправильно будет расшифрован лишь один бит исходных данных, в то время как в других режимах ошибочно расшифруются один блок или более. В то же время ошибки пропуска или вставки символа ведут к неправильному расшифрованию всего следующего за ошибкой текста.
Таким образом, основное преимущество режима OFB заключается в отсутствии влияния возможных искажений битов при передаче на последующие порции данных.
Недостатком режима OFB, в то же время, является то, что он обеспечивает меньшую, чем CFB, надежность в отношении нарушений типа модификации потока данных. Поскольку изменение одного бита шифрованного текста отражается в изменении лишь соответствующего бита восстановленного открытого текста, это дает возможность осуществления контролируемых изменений в получаемом адресатом открытом тексте. Практически, чтобы программа коррекции ошибок не заметила подмены, противник должен внести необходимые ему изменения как в данные, представляющие собой порцию шифрованного текста, так и в данные, представляющие собой контрольную сумму для этой порции текста.
1 NIST SP 800-38А 2001 Edition. Recommendation for Block Cipher Modes of Operation. Methods and Techniques.