сдвинутой на величину длины ключа. Эта операция аннулирует ключ и
оставит в наличии открытый текст сообщения, сложенный по модулю 2
со своей копией, сдвинутой на величину длины ключа.
Одноразовые блокноты
Хотите верьте, хотите нет, но на самом деле все-таки существует
алгоритм шифрования, который невозмож но вскрыть. Зовется он одноразовым
блокнотом. В классическом виде одноразовый блокнот представляет собой
очень длинную последовательность случайных букв, записанную на листах
бумаги, которые скреплены между собой в блокнот. Отправитель использует
каждую букву из блокнота, чтобы зашифровать ровно одну букву открытого
текста сообщения. Шифрование состоит в сложении буквы открытого текста и
буквы из одноразового блокнота по модулю N, где N — количество букв в
алфавите. После зашифрования отправитель уничтожает использованный
одноразовый блокнот. Чтобы отправить новое сообщение, ему придется
изготовить или найти новый одноразовый блокнот.
Получатель, владеющий копией одноразового блокнота, которым
воспользовался отправитель сообщения, получает открытый текст путем
сложения букв шифртекста и букв, извлеченных из имеющейся у него копии
одноразового блокнота. Эту копию он затем уничтожает.
Если предположить, что у криптоаналитика нет доступа к одноразовому
блокноту, данный алгоритм шифрования абсолютно надежен. Перехваченному
шифрованному сообщению с одинаковой вероятностью соответствует
произвольный открытый текст той же длины, что и сообщение.
Однако у алгоритма шифрования с помощью одноразового блокнота есть
весьма существенный недостаток. Последовательность букв, которая
содержится в одноразовом блокноте, должна быть по-настоящему случайной, а
не просто псевдослучайной, поскольку любая криптоаналитическая атака на
него будет, в первую очередь, направлена против метода генерации
содержимого этого блокнота.
Другая важная особенность применения одноразового блокнота состоит в
том, чтобы никогда не пользоваться им дважды, поскольку криптоаналитик
может отыскать участки сообщений, для шифрования которых был применен
один и тот же одноразовый блокнот. Делается это следующим образом. Нужно
последовательно сдвигать одно сообщение относительно другого и
подсчитывать количество совпадений. Как только это количество резко
увеличится, значит, случайная последовательность, использованная для
зашифрования двух различных отрезков сообщений, была одной и той же.
Дальнейший криптоанализ осуществляется достаточно просто.
Одноразовые блокноты могут состоять не из байтов, а из битов. Тогда
шифрование будет заключаться в выполнении сложения по модулю 2. Для
получения открытого текста достаточно опять сложить по модулю 2 шифртекст
и содержимое одноразового блокнота. Надежность будет по-прежнему такой