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

Поточное шифрование

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

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

Основная идея поточного шифрования заключается в генерации псевдослучайной последовательности битов (гаммы), которая затем комбинируется с открытым текстом с помощью операции «исключающее ИЛИ» (XOR). Для шифрования выполняется операция \( C_i = P_i \oplus K_i \), где \( P_i \) — бит открытого текста, \( K_i \) — бит ключевого потока, \( C_i \) — бит шифротекста. Расшифрование производится аналогично: \( P_i = C_i \oplus K_i \), так как XOR является обратимой операцией.

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

История

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

В середине XX века с развитием электроники и вычислительной техники начали появляться практические поточные шифры, основанные на псевдослучайных генераторах. Одним из первых стал шифр A5/1, разработанный в 1987 году для шифрования голосовых вызовов в стандарте GSM. В 1990-е годы широкое распространение получил шифр RC4, созданный Роном Ривестом, который использовался в протоколах WEP (Wi-Fi) и SSL/TLS. Однако к началу XXI века многие из этих шифров были признаны небезопасными из-за выявленных уязвимостей.

Классификация поточных шифров

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

По способу генерации ключевого потока

  • Синхронные поточные шифры: ключевой поток генерируется независимо от открытого текста и шифротекста. Отправитель и получатель должны быть синхронизированы по состоянию генератора. Если синхронизация теряется (например, из-за потери бита в канале связи), расшифрование становится невозможным до её восстановления. Примеры: A5/1, RC4, ChaCha20.
  • Асинхронные (самосинхронизирующиеся) поточные шифры: ключевой поток зависит от предыдущих битов шифротекста. Это позволяет автоматически восстанавливать синхронизацию после потери или искажения нескольких битов, так как для генерации текущего бита ключа используются последние \( N \) битов шифротекста. Примеры: шифр с обратной связью по шифротексту (CFB) в режиме блочного шифра, шифр с обратной связью по выходу (OFB).

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

  • На основе регистров сдвига с линейной обратной связью (LFSR): классический подход, при котором последовательность битов генерируется с помощью линейного рекуррентного соотношения. LFSR просты в реализации, но не являются криптостойкими сами по себе, поэтому их комбинируют с нелинейными функциями (например, в шифре A5/1).
  • На основе нелинейных комбинаций: используются нелинейные булевы функции для усложнения выходной последовательности. Пример: шифр Trivium.
  • На основе арифметических операций: генерация ключевого потока с использованием сложения, умножения и других арифметических операций по модулю. Пример: шифр ChaCha20, основанный на алгоритме хеширования BLAKE.

Современные поточные шифры

ChaCha20

ChaCha20 — это поточный шифр, разработанный Дэниелом Бернштейном в 2008 году как модификация шифра Salsa20. Он является частью семейства шифров, основанных на арифметических операциях и подстановках. ChaCha20 использует 256-битный ключ и 64-битный (или 96-битный) одноразовый номер (nonce). Шифр был включён в стандарт TLS 1.3 (RFC 8446) и широко применяется в современных протоколах, таких как SSH, OpenVPN и WireGuard. ChaCha20 считается одним из самых быстрых и безопасных поточных шифров, особенно на устройствах без аппаратной поддержки AES (например, в мобильных процессорах ARM).

Trivium

Trivium — это поточный шифр, разработанный Кристофом де Канниером и Бартом Пренелем в 2005 году. Он был представлен в рамках проекта eSTREAM (европейский конкурс по созданию поточных шифров) и вошёл в число финалистов. Trivium использует 80-битный ключ и 80-битный одноразовый номер. Шифр основан на трёх взаимосвязанных регистрах сдвига с нелинейной обратной связью. Он отличается простотой аппаратной реализации и высокой производительностью, что делает его пригодным для встраиваемых систем.

Salsa20

Salsa20 — предшественник ChaCha20, также разработанный Бернштейном. Он использует 256-битный ключ и 64-битный одноразовый номер. Salsa20 был одним из финалистов проекта eSTREAM. В настоящее время ChaCha20 считается более предпочтительным из-за лучшей диффузии и устойчивости к некоторым атакам.

Применение

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

  • Шифрование каналов связи: протоколы TLS (включая HTTPS), SSH, IPsec, WireGuard. В частности, ChaCha20-Poly1305 (комбинация шифра и кода аутентификации) активно используется в современных версиях TLS.
  • Беспроводные сети: шифрование трафика в стандартах Wi-Fi (WPA2/WPA3) и сотовой связи (GSM, LTE). Однако старые шифры, такие как A5/1 и RC4, были скомпрометированы и заменены более стойкими алгоритмами.
  • Встраиваемые системы и IoT: из-за низких требований к вычислительным ресурсам и памяти поточные шифры часто применяются в микроконтроллерах, RFID-метках и других устройствах с ограниченной производительностью.
  • Шифрование потоковых данных: аудио- и видеоконференции, стриминг, где данные поступают непрерывно и не могут быть разбиты на блоки фиксированной длины.

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

Основные проблемы поточных шифров связаны с ошибками в реализации и неправильным использованием. Наиболее распространённая ошибка — повторное использование одного и того же ключа и одноразового номера (nonce). Это позволяет злоумышленнику вычислить XOR двух открытых текстов, а при наличии достаточной статистики — восстановить их.

Некоторые старые поточные шифры были признаны небезопасными:

  • RC4: в 2015 году были опубликованы атаки, позволяющие восстановить ключ или открытый текст при шифровании большого объёма данных. Протоколы TLS и WEP, использовавшие RC4, были признаны уязвимыми. В настоящее время RC4 не рекомендуется к использованию.
  • A5/1: в 2009 году была продемонстрирована возможность взлома шифра за несколько минут с использованием радужных таблиц. Шифр A5/1 был заменён на A5/3 в современных сетях GSM.
  • Шифры на основе LFSR: линейные регистры сдвига сами по себе не являются криптостойкими, так как их выходная последовательность может быть предсказана с помощью алгоритма Берлекэмпа — Мэсси. Для обеспечения безопасности требуются нелинейные усложнения.

Сравнение с блочными шифрами

Поточные шифры отличаются от блочных шифров по нескольким параметрам:

  • Скорость: поточные шифры обычно быстрее на программном уровне, особенно при обработке данных небольшого размера или непрерывного потока.
  • Задержка: поточные шифры не требуют накопления данных до полного блока, что снижает задержку в приложениях реального времени.
  • Аппаратная реализация: поточные шифры часто проще реализовать в аппаратуре с минимальным потреблением энергии.
  • Безопасность: современные поточные шифры (например, ChaCha20) обеспечивают уровень безопасности, сопоставимый с лучшими блочными шифрами (например, AES). Однако блочные шифры имеют более глубокую теоретическую базу и стандартизированы на международном уровне (AES — стандарт NIST).

Перспективы

Современные тенденции в области поточного шифрования связаны с разработкой алгоритмов, устойчивых к квантовым атакам. Хотя классические поточные шифры, как и все симметричные шифры, теоретически уязвимы к атаке Гровера (квадратичное ускорение перебора), увеличение длины ключа до 256 бит считается достаточным для сохранения безопасности в постквантовую эпоху. Кроме того, ведутся исследования по созданию лёгких поточных шифров для интернета вещей (IoT) и встраиваемых систем, где ограничены ресурсы памяти и вычислительной мощности.

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

На главную BFOmetr →