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

Потоковый шифр

Потоковый шифр — это симметричный шифр, в котором каждый символ (бит, байт) открытого текста преобразуется в символ шифротекста независимо от других символов, обычно путём сложения по модулю 2 (XOR) с последовательностью ключевого потока (гаммой). В отличие от блочных шифров, которые оперируют блоками фиксированной длины, потоковые шифры обрабатывают данные непрерывно, символ за символом, что делает их особенно эффективными для шифрования потоковых данных (аудио, видео, телеметрия) и каналов связи с неизвестной или переменной длиной сообщения.

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

Основная идея потокового шифра заключается в генерации псевдослучайной последовательности битов (гаммы), которая по статистическим свойствам неотличима от истинно случайной последовательности. Эта гамма вырабатывается из секретного ключа с помощью генератора псевдослучайных чисел (ГПСЧ). Процесс шифрования и дешифрования идентичен:

  1. Инициализация: На основе секретного ключа и, часто, вектора инициализации (IV) задаётся начальное состояние генератора.
  2. Генерация гаммы: Генератор последовательно выдаёт биты (или байты) ключевого потока.
  3. Шифрование: Каждый бит открытого текста складывается по модулю 2 (XOR) с соответствующим битом гаммы. Результат — бит шифротекста.
  4. Дешифрование: Полученный шифротекст повторно складывается по модулю 2 с той же самой гаммой, восстанавливая исходный открытый текст.

Математически это выражается формулами:

  • Шифрование: \( C_i = P_i \oplus K_i \)
  • Дешифрование: \( P_i = C_i \oplus K_i \)

где \( P_i \) — бит открытого текста, \( K_i \) — бит ключевого потока, \( C_i \) — бит шифротекста, а \( \oplus \) — операция XOR.

История

Идея потокового шифрования восходит к шифру Вернама (1917 год), который является единственным абсолютно стойким шифром при условии, что ключевой поток (гамма) является истинно случайным, используется только один раз (одноразовый блокнот) и имеет длину, равную длине сообщения. Однако практическая реализация одноразового блокнота чрезвычайно сложна из-за проблем генерации, хранения и синхронизации огромных объёмов случайных данных.

В середине XX века были разработаны первые практические потоковые шифры на основе регистров сдвига с линейной обратной связью (РСЛОС). Они использовались в военной и дипломатической связи (например, шифр A5/1 для GSM). С развитием вычислительной техники и криптоанализа появились более сложные конструкции, такие как RC4 (1987 год), который долгое время был стандартом для SSL/TLS и WEP, но впоследствии был признан небезопасным. Современные потоковые шифры (Salsa20, ChaCha, Grain) проектируются с учётом атак на основе дифференциального и линейного криптоанализа.

Классификация

Потоковые шифры можно классифицировать по нескольким признакам.

По типу генерации гаммы

  • Синхронные потоковые шифры: Гамма генерируется независимо от открытого текста и шифротекста. Для успешного дешифрования требуется точная синхронизация генератора на стороне отправителя и получателя. Потеря одного бита шифротекста приводит к необратимому сдвигу и невозможности дешифрования последующих данных.
  • Самосинхронизирующиеся (асинхронные) потоковые шифры: Гамма генерируется на основе предыдущих \( N \) битов шифротекста. Такая конструкция позволяет восстановить синхронизацию после потери или искажения не более \( N \) битов. Однако она более уязвима к атакам с вставкой или модификацией шифротекста.

По типу используемого генератора

  • На основе регистров сдвига (РСЛОС и их варианты): Линейные регистры сдвига с обратной связью. Просты в реализации, но их линейность делает их уязвимыми для атак Берлекампа — Мэсси. Для повышения стойкости используются нелинейные комбинации нескольких РСЛОС (например, шифр A5/1) или нелинейная фильтрация выхода одного РСЛОС.
  • На основе блочных шифров: Блочный шифр (например, AES) используется в одном из режимов, превращающих его в потоковый. Наиболее распространённые режимы: CTR (Counter) и OFB (Output Feedback). Режим CTR является синхронным, OFB — также синхронным, но с возможностью предварительной генерации гаммы.
  • Специализированные потоковые шифры: Алгоритмы, спроектированные специально для потокового шифрования, без использования блочных примитивов. Примеры: RC4, Salsa20, ChaCha, ZUC.

Характеристики и требования

Для обеспечения криптостойкости потоковый шифр должен удовлетворять ряду требований:

  • Длинный период: Последовательность гаммы не должна повторяться в пределах одного сеанса связи. Период должен быть очень большим (например, \( 2^{128} \) или более).
  • Высокая линейная сложность: Последовательность должна быть сложной для аппроксимации линейным рекуррентным уравнением малого порядка.
  • Статистическая случайность: Гамма должна проходить все статистические тесты на случайность (например, тесты NIST), не иметь корреляций между битами.
  • Необратимость: По известному фрагменту гаммы должно быть невозможно восстановить внутреннее состояние генератора или ключ.
  • Стойкость к известным атакам: Устойчивость к атакам на основе известного открытого текста, атакам с выбором открытого текста, дифференциальному и линейному криптоанализу.

Применение

Потоковые шифры широко используются в областях, где важна скорость обработки и возможность шифрования данных произвольной длины:

  • Беспроводная связь: Шифрование трафика в сетях GSM (A5/1, A5/2, A5/3), Bluetooth (E0), Wi-Fi (WEP — на основе RC4, WPA2 — на основе AES в режиме CTR).
  • Интернет-протоколы: В ранних версиях SSL/TLS использовался RC4. Современные протоколы (TLS 1.3) активно используют ChaCha20-Poly1305 как альтернативу AES-GCM.
  • Шифрование дисков и файлов: Режим XTS (XEX-based Tweaked CodeBook mode) используется для шифрования жёстких дисков (например, в BitLocker, VeraCrypt) и по сути является потоковым режимом для блочного шифра.
  • Военная и правительственная связь: Специализированные потоковые шифры применяются в системах связи с высокими требованиями к скорости и скрытности.

Примеры потоковых шифров

RC4 (Rivest Cipher 4)

Разработан Роном Ривестом в 1987 году. Долгое время был самым популярным потоковым шифром. Отличается простотой реализации и высокой скоростью. Однако с 2000-х годов в нём были обнаружены серьёзные уязвимости: смещение в первых байтах гаммы (атака Fluhrer-Mantin-Shamir), корреляционные атаки. В настоящее время RC4 считается небезопасным и не рекомендуется к использованию.

Salsa20 и ChaCha

Семейство потоковых шифров, разработанное Дэниелом Бернштейном. Salsa20 был представлен в 2005 году, ChaCha — в 2008 году как улучшенная версия. Основаны на операциях ARX (Addition, Rotation, XOR) и имеют высокую производительность на современных процессорах. ChaCha20 используется в протоколах TLS 1.3, SSH, WireGuard, а также в ядре Linux для шифрования дисков.

ZUC (Zu Chongzhi)

Потоковый шифр, разработанный китайскими криптографами. Является частью стандарта 3GPP для сетей LTE (алгоритм 128-EEA3). Основан на трёх регистрах сдвига с линейной обратной связью и нелинейной функции.

Критика и уязвимости

Основная критика в адрес потоковых шифров связана с их уязвимостью при повторном использовании одного и того же ключа и вектора инициализации. Если для двух разных сообщений используется одна и та же гамма, злоумышленник может восстановить открытый текст, сложив два шифротекста по модулю 2. Эта атака известна как «two-time pad attack» и привела к компрометации WEP и некоторых реализаций RC4.

Кроме того, многие классические потоковые шифры (A5/1, RC4, E0) были взломаны с помощью методов корреляционного и алгебраического криптоанализа. Современные конструкции (ChaCha, Grain-128) проектируются с учётом этих атак и считаются стойкими при правильном использовании.

Источники

  1. Шнайер Б. «Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си». — М.: Триумф, 2002.
  2. Menezes A., van Oorschot P., Vanstone S. «Handbook of Applied Cryptography». — CRC Press, 1996.
  3. Bernstein D. J. «ChaCha, a variant of Salsa20». — Workshop Record of SASC, 2008.
  4. Fluhrer S., Mantin I., Shamir A. «Weaknesses in the Key Scheduling Algorithm of RC4». — Selected Areas in Cryptography, 2001.
  5. NIST. «A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications». — Special Publication 800-22, 2010.

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

На главную BFOmetr →