Поэтому для обеспечения стойкости недостаточно, чтобы ключ имел такую же длину, что и само сообщение. В приведенном выше примере уязвимость возникла из-за того, что ключ был создан из смысловых слов. Мы начали с того, что стали случайным образом подставлять слово the
в открытый текст и определять соответствующие буквы ключа. Мы могли с уверенностью сказать, когда the попадает на надлежащее место, потому что буквы ключа в этом случае приобретали вид части смысловых слов. После чего мы использовали эти фрагменты в ключе, чтобы определить слова целиком. А это, в свою очередь, давало нам больше кусков в тексте, из которых мы могли составить целые слова, и так далее. Весь этот процесс переходов вперед-назад между сообщением и ключом оказался возможен только потому, что у ключа была определенная внутренняя структура и он состоял из слов, которые можно было распознать. Однако в 1918 году криптографы начали экспериментировать с ключами, которые были лишены структуры. В результате получился невзламываемый шифр.Когда Первая мировая война уже приближалась к концу, майор Джозеф Моборн, руководитель криптографического исследовательского подразделения армии США, ввел понятие случайного ключа, т. е. такого ключа, который состоит не из распознаваемого набора слов, а из случайной комбинации букв. Он высказывался за применение таких случайный ключей, используемых как часть шифра Виженера, для обеспечения беспрецедентной степени стойкости. Первым этапом в системе Моборна была подготовка толстого блокнота, состоящего из сотен бумажных листов; на каждом листе находится уникальный ключ в виде случайной последовательности строчек букв. Подготавливаются два экземпляра блокнота, один для отправителя, а второй — для получателя. Чтобы зашифровать сообщение, отправитель применял шифр Виженера, пользуясь первым листом блокнота в качестве ключа. На рисунке 30 показаны три листа из такого блокнота (на самом деле, на каждом листе содержатся сотни букв) и сообщение, зашифрованное с использованием случайного ключа, находящегося на первом листе. Получатель сможет легко расшифровать шифртекст, пользуясь идентичным ключом и шифром Виженера. После того как сообщение было успешно отправлено, получено и расшифровано, оба — и отправитель, и получатель — уничтожают лист, использованный в качестве ключа, чтобы никогда уже больше им не пользоваться. При шифровании очередного сообщения применяется следующий случайный ключ из блокнота, который в дальнейшем также уничтожался, и так далее. Поскольку каждый лист используется только один раз, эта система известна как
Рис. 30 Три листа из одноразового шифрблокнота, каждый из которых является возможным ключом для шифра. Сообщение зашифровано с помощью листа 1.
Шифр из одноразового шифрблокнота свободен от всех вышеозначенных слабостей. Представим, что сообщение attack the valley at dawn
было зашифровано, как показано на рисунке 30, передано по радио и перехвачено противником.Криптоаналитик противника получает шифртекст и пытается дешифровать его. Первый камень преткновения: по определению в случайном ключе повторений нет, поэтому методом Бэббиджа и Касиски взломать криптографический ключ одноразового использования не удастся. Как вариант, криптоаналитик противника может попытаться подставлять слово the
в различные места текста и определять соответствующий фрагмент ключа, как это делали мы, когда старались дешифровать предыдущее сообщение. Если криптоаналитик попробует поставить the в начале сообщения, что неверно, тогда соответствующий сегмент ключа будет иметь вид WXB, иначе говоря, он получит хаотичный набор букв. Если же криптоаналитик подставит the таким образом, что начало слова будет совпадать с седьмой буквой сообщения, то есть в нужное место, тогда соответствующий сегмент ключа будет иметь вид QKJ, что также является беспорядочным набором букв. Другими словами, криптоаналитик не сумеет определить, на своем месте стоит пробное слово или нет.В отчаянии криптоаналитик мог бы даже подумывать о поиске методом полного перебора всех возможных ключей. Шифртекст состоит из 21 буквы, так что криптоаналитик знает, что и ключ также состоит из 21 буквы. Это означает, что следует проверить примерно 500 000 000 000 000 000 000 000 000 000 возможных ключей, что абсолютно неосуществимо ни для человека, ни для механического устройства. Однако даже если криптоаналитик смог бы проверить все эти ключи, то в этом случае возникнет еще более значительная сложность. Проверяя каждый возможный ключ, криптоаналитик, несомненно, обнаружит истинное сообщение, но будут также представлены и все ложные сообщения. Так, например, если применить к предыдущему шифртексту следующий ключ, то получится совершенно иное сообщение: