Открыть сервис

Режим CFB

Режим CFB (Cipher Feedback, режим обратной связи по шифротексту) — это один из режимов работы блочного шифра, который преобразует блочный шифр в поточный. В отличие от режима электронной кодовой книги (ECB) или сцепления блоков (CBC), в режиме CFB шифрование выполняется не над самим блоком открытого текста, а над предыдущим блоком шифротекста, который затем используется для генерации ключевого потока. Это позволяет шифровать данные произвольной длины, в том числе побайтово, без необходимости дополнения (padding) до размера блока.

Принцип работы

Режим CFB основан на использовании блочного шифра как генератора псевдослучайной последовательности. Для шифрования каждого последующего блока данных используется результат шифрования предыдущего блока шифротекста.

Алгоритм шифрования

  1. Инициализация. Генерируется вектор инициализации (IV) — случайный или псевдослучайный блок данных размером, равным размеру блока шифра (например, 128 бит для AES).
  2. Шифрование первого блока. Вектор инициализации подаётся на вход алгоритма блочного шифрования (например, AES). Полученный на выходе блок шифротекста (назовём его C1) является результатом шифрования первого блока открытого текста (P1). Формально: C1 = E_k(IV) XOR P1, где E_k — функция блочного шифрования с ключом k, а XOR — операция исключающего ИЛИ.
  3. Шифрование последующих блоков. Для шифрования второго блока P2 на вход блочного шифра подаётся уже не IV, а предыдущий блок шифротекста C1. Полученный результат шифрования E_k(C1) складывается по модулю 2 (XOR) с P2, давая C2. Процесс повторяется для каждого следующего блока: C_n = E_k(C_{n-1}) XOR P_n.

Алгоритм расшифрования

Расшифрование в режиме CFB выполняется с использованием того же блочного шифра, но в режиме шифрования (а не расшифрования). Это ключевое отличие от режима CBC, где для расшифрования используется обратная функция.

  1. Расшифрование первого блока. Полученный шифротекст C1 подаётся на вход блочного шифра вместе с IV. Результат E_k(IV) складывается по XOR с C1, восстанавливая P1.
  2. Расшифрование последующих блоков. Для восстановления P_n на вход блочного шифра подаётся C_{n-1}. Результат E_k(C_{n-1}) складывается по XOR с C_n, давая P_n.

Таким образом, как при шифровании, так и при расшифровании используется одна и та же операция — блочное шифрование. Это свойство упрощает аппаратную реализацию, так как не требуется отдельный блок для расшифрования.

Классификация и разновидности

Режим CFB может быть параметризован размером обрабатываемого фрагмента данных (s). В зависимости от этого выделяют:

  • CFB-8 (CFB1). Шифрование выполняется по 1 биту. На каждом шаге генерируется 1 бит ключевого потока. Используется для поточного шифрования, но крайне неэффективен из-за частых вызовов блочного шифра.
  • CFB-64 (CFB8). Шифрование выполняется по 1 байту (8 бит). Наиболее распространённая разновидность, позволяющая обрабатывать данные произвольной длины, включая неполные блоки.
  • CFB-128 (CFB128). Шифрование выполняется полными блоками (например, 128 бит для AES). Эффективен, но требует, чтобы длина данных была кратна размеру блока, либо требует дополнения.

В большинстве современных реализаций (например, в протоколах TLS 1.2 и ранее) используется CFB-128, так как он обеспечивает максимальную производительность при сохранении свойств поточного шифра.

Характеристики и свойства

Преимущества

  • Поточное шифрование. Позволяет шифровать данные произвольной длины, включая потоки данных, без необходимости дополнения до полного блока.
  • Отсутствие ошибок расшифрования. Ошибка в одном бите шифротекста приводит к ошибке в соответствующем бите открытого текста и в следующем блоке, но не распространяется на последующие блоки (в отличие от CBC, где ошибка может испортить два блока). Это свойство называется «ограниченным распространением ошибок» (limited error propagation).
  • Использование одного алгоритма. Для шифрования и расшифрования используется одна и та же операция (блочное шифрование), что упрощает реализацию.
  • Синхронность. При условии, что отправитель и получатель используют одинаковый IV и синхронизированы, режим является синхронным поточным шифром.

Недостатки

  • Зависимость от IV. Вектор инициализации должен быть уникальным для каждого сеанса связи и не должен повторяться при использовании одного и того же ключа. Повтор IV приводит к возможности атаки на основе известного открытого текста.
  • Чувствительность к потере синхронизации. Если в канале связи происходит потеря или вставка бита, синхронизация между отправителем и получателем нарушается, и все последующие данные будут расшифрованы неверно. Это требует использования механизмов восстановления синхронизации.
  • Производительность. Для обработки каждого блока данных (даже маленького) требуется выполнить полный цикл блочного шифрования. Это делает CFB менее производительным, чем, например, режим CTR (Counter), который может быть распараллелен.
  • Уязвимость к атакам с известным открытым текстом. Если злоумышленник знает часть открытого текста, он может восстановить соответствующий сегмент ключевого потока, что потенциально позволяет расшифровать другие сообщения, зашифрованные тем же ключом и IV.

Применение

Режим CFB широко применялся в различных протоколах и системах, особенно до появления более эффективных режимов (GCM, CTR, CCM).

  • Протоколы безопасности. В ранних версиях протокола TLS (1.0, 1.1, 1.2) режим CFB использовался для шифрования данных в некоторых наборах шифров (например, TLS_RSA_WITH_AES_128_CBC_SHA и его варианты с CFB). В настоящее время в TLS 1.3 режим CFB не используется, уступив место AEAD-режимам (GCM, ChaCha20-Poly1305).
  • Системы шифрования дисков. Некоторые реализации шифрования дисков (например, BitLocker в ранних версиях) использовали режим CFB для шифрования отдельных секторов.
  • Сетевое оборудование. В устройствах, где требуется шифрование потоковых данных (например, в VPN-устройствах), режим CFB применялся для обеспечения конфиденциальности трафика.
  • Стандарты шифрования. Режим CFB описан в национальных стандартах, таких как NIST SP 800-38A (США) и ГОСТ Р 34.13-2015 (Россия). В российском стандарте режим CFB определён как один из режимов для блочных шифров (например, «Кузнечик» и «Магма»).

Критика и современное состояние

Несмотря на свою историческую значимость, режим CFB подвергается критике по нескольким причинам:

  • Уязвимость к атаке с известным открытым текстом. Как и другие режимы, не являющиеся аутентифицированными (AEAD), CFB не обеспечивает целостности и аутентичности данных. Злоумышленник, зная структуру открытого текста, может модифицировать шифротекст, что приведёт к предсказуемым изменениям в расшифрованном тексте.
  • Отсутствие аутентификации. Для защиты от подмены данных требуется дополнительный механизм аутентификации (например, HMAC). В противном случае возможны атаки типа «padding oracle» (в случае с CFB-128, если используется дополнение) или атаки на основе манипуляции битами.
  • Низкая производительность. Невозможность распараллеливания делает CFB менее привлекательным для современных высокопроизводительных систем по сравнению с CTR или GCM.

В современных криптографических системах режим CFB практически вытеснен аутентифицированными режимами (AEAD), такими как GCM (Galois/Counter Mode) и CCM (Counter with CBC-MAC), которые обеспечивают как конфиденциальность, так и целостность данных. Тем не менее, CFB остаётся важным учебным примером и используется в некоторых устаревших системах и стандартах.

Интересные факты

  • Режим CFB был впервые описан в 1980 году в работе Уильяма Эрла и Скотта Ванстоуна.
  • В режиме CFB-1 (побитовое шифрование) блочный шифр вызывается для каждого бита данных, что делает его крайне неэффективным, но теоретически интересным для анализа.
  • В российском стандарте ГОСТ Р 34.13-2015 режим CFB определён как «режим гаммирования с обратной связью» и может использоваться с блочными шифрами «Кузнечик» (размер блока 128 бит) и «Магма» (размер блока 64 бита).

Источники

  • NIST Special Publication 800-38A. «Recommendation for Block Cipher Modes of Operation: Methods and Techniques». 2001.
  • ГОСТ Р 34.13-2015. «Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров».
  • Menezes, A., van Oorschot, P., Vanstone, S. «Handbook of Applied Cryptography». CRC Press, 1996.
  • Schneier, B. «Applied Cryptography: Protocols, Algorithms, and Source Code in C». John Wiley & Sons, 1996.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →