Потоковые
шифры.
Потоковый
шифр выполняет операции над битами или символами (например 8-,
16- или 32-битовыми). Потоковый шифр преобразует один и тот же
символ открытого текста в разные символы шифртекста, например в
зависимости от того, сколько и каких символов было обработано
ранее. Во многих потоковых шифрах зашифрование производится
следующим образом. Генератор гаммы, основанный на генераторе
псевдослучайных чисел, выдает последовательность битов (гамму).
Эта гамма накладывается на открытый текст с помощью побитовой
операции
XOR. В результате получается шифртекст.
Для расшифрования необходимо выполнить в точности ту же
процедуру, только наложить гамму, с использованием идентичного
генератора с точно таким же начальным на шифртекст.
Таким
образом, стойкость алгоритма зависит исключительно от
характеристик гаммы, выдаваемой генератором. Если гамма состоит
из одних нулей (вырожденный случай), то данные при шифровании
вообще не изменяются. Если гамма имеет короткий период (например
32 бита), то шифрование сводится к операции XOR С 32-битовой
константой. Если же гамма представляет собой случайный набор
битов, не подчиняющийся никакой закономерности, получается
аналог одноразового шифровального блокнота, который обеспечивает
абсолютную защиту. Разумеется, детерминированный алгоритм,
используемый в генераторе гаммы, не может выдавать истинно
случайную последовательность. Если последовательность не удастся
повторить, то не удастся и расшифровать сообщение.
Если два
сообщения были зашифрованы с использованием одной и той же гаммы
и для одного из сообщений (более длинного) удалось каким-нибудь
образом получить открытый текст, то легко получить открытый
текст и для другого сообщения. Применив операцию XOR К открытому
тексту и шифртексту первого сообщения, мы получим фрагмент
гаммы. А наложив гамму на шифртекст второго сообщения, мы
получим его открытый текст. Именно поэтому нельзя допускать,
чтобы одна и та же гамма использовалась при шифровании двух
разных потоков или сообщений.
Если гамма
генерируется независимо от содержимого сообщения (как в
приведенном ранее примере), то такой потоковый алгоритм
называется синхронным. Как правило, в синхронных потоковых
шифрах ключ шифрования используется для установки начального
внутреннего состояния генератора гаммы. В самосинхронизирующихся
потоковых шифрах каждый бит гаммы зависит от фиксированного
числа предыдущих битов шифртекста. Более детальное описание
достоинств и недостатков потоковых шифров также можно найти в
специализированной литературе по криптографии.
(продолжение)
|