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