Режим гаммирования с обратной связью
Режим гаммирования с обратной связью (англ. Cipher Feedback Mode, CFB) — это один из режимов работы блочного симметричного шифра, преобразующий его в самосинхронизирующийся поточный шифр. В данном режиме шифрование выполняется путём побитового (или побайтового) сложения по модулю 2 (XOR) открытого текста с гаммой, вырабатываемой на основе предыдущего блока шифротекста. Ключевой особенностью CFB является то, что ошибка в одном бите зашифрованного текста влияет только на соответствующий бит расшифрованного текста и на последующий блок, после чего синхронизация восстанавливается автоматически.
Принцип работы
Режим гаммирования с обратной связью использует блочный шифр (например, AES, ГОСТ 28147-89) для генерации псевдослучайной последовательности, которая затем накладывается на открытый текст. Шифрование и расшифрование выполняются по схожим алгоритмам, но с разными операциями.
Шифрование
Процесс шифрования в режиме CFB состоит из следующих шагов:
- Инициализация. Выбирается начальный вектор (IV) размером, равным размеру блока шифра (например, 128 бит для AES). IV не должен повторяться при использовании одного и того же ключа.
- Генерация гаммы. Начальный вектор (или предыдущий блок шифротекста) подаётся на вход блочного шифра, который зашифровывает его с использованием секретного ключа. Результат — блок гаммы.
- Наложение гаммы. Полученный блок гаммы складывается по модулю 2 (XOR) с блоком открытого текста. Результат — блок шифротекста.
- Обратная связь. Полученный блок шифротекста становится входным значением для следующего шага генерации гаммы (подаётся на вход блочного шифра для шифрования).
Процесс повторяется для каждого последующего блока. Математически это можно записать как:
- \( C_i = P_i \oplus E_K(C_{i-1}) \), где \( C_0 = IV \)
- \( C_i \) — i-й блок шифротекста,
- \( P_i \) — i-й блок открытого текста,
- \( E_K \) — функция блочного шифрования с ключом K,
- \( \oplus \) — операция XOR.
Расшифрование
Расшифрование в режиме CFB выполняется по аналогичному принципу, но с использованием той же функции шифрования блочного шифра (не обратной к ней):
- Инициализация. Используется тот же начальный вектор (IV).
- Генерация гаммы. Начальный вектор (или предыдущий блок шифротекста) зашифровывается блочным шифром с тем же ключом.
- Восстановление текста. Полученный блок гаммы складывается по модулю 2 с блоком шифротекста. Результат — блок открытого текста.
- Обратная связь. Текущий блок шифротекста (из шифрованного сообщения) подаётся на вход блочного шифра для следующего шага.
Математическая запись:
- \( P_i = C_i \oplus E_K(C_{i-1}) \), где \( C_0 = IV \)
Важно отметить, что для расшифрования не требуется функция дешифрования блочного шифра (\( D_K \)), что упрощает реализацию в системах, где аппаратно или программно доступна только операция зашифрования.
Синхронизация
Режим CFB является самосинхронизирующимся. Если в канале передачи происходит искажение одного бита шифротекста (например, \( C_i \)), то при расшифровании это приведёт к двум последствиям:
- Непосредственно искажённый бит \( C_i \) вызовет ошибку в соответствующем бите расшифрованного текста \( P_i \).
- Искажённый блок \( C_i \) будет использован как вход для генерации гаммы для следующего блока (\( C_{i+1} \)), что приведёт к полному искажению блока \( P_{i+1} \).
После этого, начиная с блока \( P_{i+2} \), синхронизация полностью восстанавливается, и расшифрование продолжается корректно. Таким образом, CFB теряет не более двух блоков данных при одиночной битовой ошибке.
Разновидности
Режим CFB может быть параметризован размером обратной связи \( s \), который определяет, сколько бит шифротекста подаётся на вход блочного шифра для генерации следующей гаммы. Наиболее распространённые варианты:
- CFB-128 (или CFB-полный блок). Размер обратной связи равен полному размеру блока (например, 128 бит для AES). В этом случае каждый раз шифруется и передаётся полный блок. Это наиболее эффективный и распространённый вариант.
- CFB-8 (или CFB-1 байт). Размер обратной связи составляет 8 бит (1 байт). Шифрование и передача данных выполняются побайтово. Этот вариант удобен для работы с потоками данных, где требуется небольшая задержка (например, в телекоммуникационных протоколах), но он значительно медленнее из-за необходимости выполнять операцию блочного шифрования для каждого байта.
- CFB-1 (или CFB-1 бит). Размер обратной связи — 1 бит. Крайне неэффективный вариант, практически не используемый на практике.
Выбор размера \( s \) влияет на скорость работы и устойчивость к ошибкам. Чем меньше \( s \), тем больше операций шифрования требуется для обработки одного блока данных, но тем меньше объём данных теряется при ошибке (в случае CFB-8 теряется 1 байт + 1 блок).
Применение
Режим гаммирования с обратной связью применяется в различных криптографических системах и протоколах, где требуется поточное шифрование с возможностью синхронизации после ошибок:
- Протоколы защищённой передачи данных. CFB используется в некоторых реализациях протокола SSH (Secure Shell) для шифрования сессионных данных. В более старых версиях протокола Kerberos также применялся CFB.
- Шифрование в реальном времени. Благодаря самосинхронизации, CFB подходит для шифрования потоковых данных, таких как аудио- или видеопотоки, где потеря одного пакета не должна приводить к полной потере синхронизации.
- Криптографические библиотеки. Многие криптографические библиотеки (например, OpenSSL, Crypto++) включают реализацию режима CFB для различных блочных шифров (AES, Camellia, ГОСТ Р 34.12-2015).
В Российской Федерации режим гаммирования с обратной связью определён в национальных стандартах:
- ГОСТ Р 34.13-2015 (Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров). Данный стандарт описывает режим гаммирования с обратной связью (режим гаммирования с обратной связью, аналогичный CFB) для блочных шифров по ГОСТ Р 34.12-2015 («Магма» и «Кузнечик»).
Сравнение с другими режимами
Режим CFB занимает промежуточное положение между режимами ECB, CBC и CTR:
- По сравнению с ECB (Electronic Codebook). CFB, как и все режимы с обратной связью, не имеет недостатка ECB — одинаковые блоки открытого текста не дают одинаковые блоки шифротекста, что предотвращает утечку информации о структуре данных.
- По сравнению с CBC (Cipher Block Chaining). В CBC ошибка в шифротексте полностью искажает два блока расшифрованного текста, но не влияет на последующие. В CFB ошибка также искажает два блока, но механизм распространения ошибки отличается: в CBC ошибка влияет на текущий и следующий блоки через операцию дешифрования, а в CFB — через генерацию гаммы. Основное отличие — в CFB не требуется функция дешифрования.
- По сравнению с CTR (Counter Mode). CTR является поточным шифром, но не является самосинхронизирующимся. В CTR ошибка в одном бите шифротекста приводит к ошибке только в соответствующем бите открытого текста, без влияния на последующие блоки. Однако CTR требует точной синхронизации счётчика между отправителем и получателем, что делает его менее устойчивым к потере пакетов. CFB, благодаря обратной связи, автоматически восстанавливает синхронизацию после двух блоков.
Безопасность
Безопасность режима CFB основана на безопасности используемого блочного шифра и правильном выборе начального вектора. Основные требования:
- Уникальность начального вектора. IV должен быть уникальным для каждого сообщения, зашифрованного с одним и тем же ключом. Повторное использование IV приводит к тому, что для разных сообщений будет использоваться одинаковая гамма, что позволяет злоумышленнику, получившему оба шифротекста, вычислить XOR открытых текстов и потенциально восстановить их.
- Случайность IV. IV должен быть непредсказуемым для злоумышленника. Если IV предсказуем, это может быть использовано для атак, таких как атака на основе выбранного открытого текста.
- Длина IV. Рекомендуется использовать IV той же длины, что и размер блока шифра (например, 128 бит для AES). Использование более короткого IV может снизить криптостойкость.
Режим CFB устойчив к атакам на основе известного открытого текста, если блочный шифр является криптостойким. Однако, как и любой поточный шифр, он уязвим к атакам с перезаписью (bit-flipping attacks), если злоумышленник может изменять шифротекст. В таких случаях требуется дополнительная аутентификация (например, с помощью HMAC или режимов аутентифицированного шифрования, таких как GCM).
Источники
- ГОСТ Р 34.13-2015 «Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров».
- Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. «Основы криптографии». — М.: Гелиос АРВ, 2002.
- Шнайер Б. «Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си». — М.: Триумф, 2002.
- NIST Special Publication 800-38A «Recommendation for Block Cipher Modes of Operation: Methods and Techniques».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →