Ситуация с испанцами наглядно характеризовала состояние противоборства между криптографами и криптоаналитиками. Это был переходный период, когда криптографы все еще полагались на одноалфавитный шифр замены, в то время как криптоаналитики уже начали применять частотный анализ, чтобы взломать этот шифр. Криптографам еще только предстояло узнать все могущество частотного анализа, а пока что они продолжали верить в одноалфавитную замену, не представляя, в какой степени такие криптоаналитики, как Соро, Бабу и Виет, были способны прочесть их сообщения.
Между тем государства, которые получили предупреждение о слабости одноалфавитного шифра замены, стремились создать более стойкий шифр, который смог бы защитить их сообщения от раскрытия криптоаналитиками неприятеля. Одним из простейших приемов повышения стойкости одноалфавитного шифра замены является использование «пустых» знаков — символов или букв, которые не заменяли реальные буквы, а являлись просто пустыми, ничего не обозначающими символами. Например, можно заменить каждую букву открытого текста числами от 1 до 99, из которых 73 ничего не означают и могут случайным образом появляться с разной частотой в зашифрованном тексте. «Пустые» знаки не представляют никакой сложности для получателя, кому предназначено данное сообщение, кто знает, что эти символы не следует принимать во внимание. Однако наличие таких знаков будет сбивать с толку противника, перехватившего сообщение, потому что они усложняют атаку с применением частотного анализа. Ради повышения стойкости криптографы иногда сознательно перед зашифровыванием сообщения писали слова неправильно. Thys haz thi ifekkt off diztaughting thi ballans off fnkwenseas — усложняет криптоаналитику возможность применения частотного анализа. Однако получатель данного сообщения, если он знает ключ, сможет расшифровать его, после чего в его распоряжении окажется неверно написанный, но все же вполне понятный текст.
К попыткам усилить одноалфавитный шифр замены относится и введение кодовых слов. Термин код имеет очень широкое значение в обыденной речи, и он часто употребляется для описаниялюбых способов, используемых для тайной передачи информации. Однако, как было упомянуто в Введении, в действительности он имеет весьма специфическое значение и применяется только для определенного вида замены. До сих пор мы рассматривали шифр замены, посредством которого каждая буква заменяется на другую букву, число или символ.
Однако замену можно осуществлять на гораздо более высоком уровне, когда каждое слово представляется другим словом или символом — это и будет код. Например:
Исходное сообщение = убить короля сегодня вечером. Закодированное сообщение = D-Ω-28
Формально код определяется как замена, выполняемая на уровне слов или фраз, в то время как шифр определяется как замена на уровне букв. Поэтому термин зашифровать означает «сделать сообщение секретным с помощью шифра», в то время как закодировать означает «сделать сообщение секретным с помощью кода». Аналогично термин расшифровать/дешифровать применяется для рассекречивания зашифрованного сообщения, а раскодировать/декодировать — для рассекречивания закодированного сообщения. Термины зашифровать и расшифровать/дешифровать более общие и охватывают засекречивание и рассекречивание, выполняемое как с помощью кодов, так и с помощью шифров. На рисунке 7 показана краткая сводка этих определений. В целом я буду придерживаться этих определений, но когда смысл ясен, я могу воспользоваться, например, таким термином, как «криптографический анализ», чтобы описать процесс, который на самом деле является «взломом шифра» — последний термин может быть формально более точным, но первый является более употребимым.
На первый взгляд представляется, что коды обеспечивают более высокую степень стойкости, чем шифры, так как слова гораздо менее уязвимы для частотного анализа, чем буквы. Чтобы дешифровать одноалфавитный шифр, вам потребуется установить точные значения каждой из всего лишь 26 букв, а чтобы взломать код, вам потребуется определить точные значения сотен и даже тысяч кодовых слов. Однако если мы более внимательно рассмотрим коды, мы увидим, что они, по сравнению с шифрами, обладают двумя существенными с практической точки зрения недостатками. Во-первых, после того как отправитель и получатель согласуют 26 букв в шифралфавите (ключ), они смогут зашифровать любое сообщение, но чтобы добиться той же гибкости при применении кода, им придется проделать кропотливую работу по заданию кодового слова для каждого из тысяч возможных слов незашифрованного текста. Кодовая книга будет состоять из сотен страниц и напоминать словарь. Другими словами, составление кодовой книги — это изрядная задача, держать же ее при себе представляет значительное неудобство.
Рис. 7 Наука тайнописи и ее основные направления.
Во-вторых, последствия того, что противник завладеет кодовой книгой, поистине ужасающи. Все закодированные сообщения сразу же станут известны противнику. Отправители и получатели должны будут заново пройти через кропотливый процесс создания совершенно новой кодовой книги, а затем этот объемистый новый том необходимо будет передать всем в коммуникационной сети, то есть секретно доставить его всем послам во всех странах. Сравните: если противнику удастся завладеть ключом шифра, то сравнительно несложно составить новый шифралфавит из 26 букв, который можно запомнить и легко передать.
Даже в шестнадцатом веке криптографы хорошо осознавали присущие кодам слабости и вместо них больше полагались на шифры, или, иногда, на номенклаторы. Номенклатор — это система шифрования, основанная на шифралфавите, который применяется для зашифровывания большей части сообщения, плюс небольшой набор кодовых слов. К примеру, номенклаторная книга могла бы состоять из титульного листа с шифралфавитом и со списком кодовых слов на второй странице. Несмотря на добавление кодовых слов, номенклатор ненамного надежнее, чем просто один шифр, поскольку основная часть сообщения может быть дешифрована с помощью частотного анализа, а смысл оставшихся зашифрованными слов может быть определен по контексту.
Лучшие криптоаналитики не только совладали с номенклатором, они способны были также справиться и с сообщениями с неправильно написанными словами, и с сообщениями с «пустыми» знаками. Короче говоря, они могли вскрыть большинство зашифрованных сообщений. Благодаря квалификации и умению криптоаналитиков, раскрытые секреты шли непрерывным потоком; они влияли на принятие решений властителями и повелительницами, определяя тем самым ход истории в Европе в критические моменты.
Никогда влияние криптоанализа не проявилось так драматично, как в случае Марии Стюарт, королевы Шотландии. Исход судебного процесса над ней всецело зависел от поединка между ее шифровальщиками и дешифровальщиками королевы Елизаветы. Мария была одной из наиболее заметных фигур шестнадцатого столетия — королева Шотландии, королева Франции, претендент на английский трон — и все же ее судьба зависела от листочка бумаги, содержавшегося на нем сообщения и от того, будет или нет оно дешифровано.
Заговор Бабингтона
24 ноября 1542 года английские войска Генриха VIII разгромили шотландскую армию в битве при Солвей Мосс в северной Англии. Казалось, что Генрих вот-вот завоюет Шотландию и захватит корону короля Якова V. После сражения обезумевший король Шотландии страдал от полного душевного опустошения и упадка сил и удалился во дворец в Фолкленде. Даже рождение дочери Марии, всего через две недели, не могло оживить угасающего короля. Казалось, что он всего лишь ждал вестей о рождении наследника, чтобы спокойно закончить жизненный путь, зная, что он выполнил свой долг. Не прошло и недели после рождения Марии, как король Яков V, которому было всего тридцать лет, умер. Мария Стюарт стала принцессой-дитя.