Математика и криптография. Тайны шифров и логическое мышление - Роман Душкин
Шрифт:
Интервал:
Закладка:
Как же сделать так, чтобы шифр был стойким? Ведь понятно, что если шифровать так, как написано в предыдущем абзаце, то ни о какой стойкости говорить не приходится.
Всё просто. Всё настолько просто, что ты даже можешь придумать метод самостоятельно. Так что я рекомендую тебе подумать, прежде чем читать дальше. Обрати внимание на то, что диски могут вращаться относительно друг друга.
Итак, если твой метод основан на вращении дисков после шифрования каждой буквы, то твоя мысль верна. Всё действительно очень просто. Как только мы зашифровали букву, мы должны повернуть самый верхний диск на один сектор по часовой стрелке, и следующая буква будет шифроваться по совершенно иной проводке. Например, если во взаимном расположении дисков машины (для краткости будем называть это расположение «конфигурацией») на рисунке буква «А» шифровалась как «В», то при повороте верхнего диска на один сектор по часовой стрелке буква «А» станет шифроваться как «Щ». Если ещё раз так же повернуть верхний диск, то буква «А» будет шифроваться как «Ю». Таким образом, первоначальный текст «ААА» будет зашифрован как «ВЩЮ».
Но это не всё, конечно же. Ясно, что раз секторов на диске всего 32, то один диск позволяет использовать тридцать два алфавита замены. Если вращать только верхний диск, то фактически это будет использование шифра многоалфавитной замены с длиной ключа в 32 символа. Это достаточно много, но легко подлежит взлому, как ты уже знаешь из занятий второй недели. Поэтому нужны новые вращающиеся диски. Но они вращаются тогда, когда предыдущий диск делает полный оборот. То есть когда верхний диск делает полный оборот, второй диск поворачивается по часовой стрелке на один сектор.
Так тоже получается шифр многоалфавитной замены, но каждый новый диск умножает длину ключа на количество секторов на нём, то есть на 32. На представленной схеме четыре диска, а потому общая длина ключа, которым можно зашифровать послание, равняется 1048576. Представь себе: более миллиона символов, причём эти замены в основном случайны. Другими словами, для посланий, длина которых меньше миллиона букв, используется одноразовый блокнот (это не совсем так, но для простоты можно считать именно так, особенно если не нарушать правил шифрования).
Но и это ещё не всё. Если каждый раз начинать с одной и той же позиции взаимного расположения дисков, то ни к чему хорошему это не приведёт. Это всё равно как для одноразового блокнота дважды использовать один и тот же ключ. Но и тут спасает возможность вращения дисков. Мы же можем выставлять произвольную начальную конфигурацию, выбирая одну из миллиона. Мы можем каждый день выбирать новую конфигурацию, и этого хватит на всю жизнь. Начальная конфигурация определяется тем, какие буквы стоят друг напротив друга на дисках. Для этого на отражателе нужно выбрать начальный сектор, который лучше всего пометить стрелкой (на моём рисунке этого не сделано). Соответственно, начальная конфигурация зависит от того, какие буквы на дисках расположены напротив стрелки, начиная с верхнего диска. Можно, например, сказать, что начальная конфигурация на рисунке — «АААА», если стрелку на отражателе нарисовать напротив того сектора, где расположена буква «А» на самом нижнем диске.
Итак, правила шифрования:
1. Сначала надо выбрать и установить начальную конфигурацию дисков относительно друг друга. Проще всего каждый день выбирать новую конфигурацию. Правило определения начальных конфигураций для каждого дня должно быть известно всем, кто участвует в секретной переписке.
2. Затем надо выбрать ключ для тайного сообщения. Первые четыре буквы шифрограммы должны определять этот ключ, то есть конфигурацию дисков для текущего сообщения. После того как четыре буквы зашифрованы, диски переводятся в новое положение. Это сделано, чтобы для каждого сообщения в течение одного дня использовались разные ключи.
3. Таким образом, ключ дня используется в шифровке ключей для каждого конкретного сообщения, а сообщения шифруются при помощи своих индивидуальных ключей. Ключ в этом случае — просто взаимное расположение дисков. Если ты сделаешь машину, состоящую из другого количества дисков (это возможно), то, соответственно, количество первых букв сообщения, определяющих ключ, будет равно количеству дисков.
4. Затем для шифрования используется метод многоалфавитной замены, когда диски вращаются относительно друг друга при каждом новом выборе буквы.
5. После зашифровки сообщения машина возвращается в начальную конфигурацию, выбранную на этот день.
6. Чтобы расшифровать принятое сообщение, машину надо перевести в конфигурацию дня, после чего расшифровать первые четыре буквы. Это ключ сообщения. Машина должна быть установлена в новую конфигурацию. Как только это сделано, происходит расшифровка сообщения. Это делается абсолютно так же, как и шифрование, поскольку машина создает симметричный шифр замены.
7. Никогда не используй для ключей сообщений какие-то слова или повторяющиеся буквы. Каждый раз это должны быть случайные наборы букв. Чтобы получать такие наборы, пользуйся методом с пятью монетками, который был описан в главе об одноразовом блокноте.
Вот и всё. Рекомендую тебе обдумать написанное и сделать такую машину для своих секретных нужд. Ты вполне можешь использовать другой способ соединения проводки, а не перерисовывать схему выше. В приложении к этой книге ты найдёшь шаблоны для распечатки на бумаге и создания своей машины.
Дерзай!
Вот и закончились наши приключения. Надеюсь, что тебе понравилось. Также очень надеюсь, что у тебя сложилось положительное мнение о криптографии и криптоаналитике, и теперь ты сможешь самостоятельно продолжать занятия в этой области. К тому же в процессе чтения книги тебе пришлось хорошо продвинуться в математике.
Если тебя увлекла эта область, то в следующем разделе я дам ссылки на другие книги по криптографии. Среди них ты сможешь выбрать то, что тебе наиболее интересно и подходит для дальнейшей работы.
Кроме всего прочего, ты всегда можешь написать мне письмо по адресу электронной почты: [email protected], чтобы обсудить прочитанное, узнать, что делать дальше, и, если интересно, получить новые задачи и загадки.
Всего доброго!
Сначала несколько художественных книг, где рассказывается про то, как ловкие главные герои взломали шифры:
1. Жюль Верн. Путешествие к центру Земли. Довольно интересная книга автора многочисленных приключенческих и научно-фантастических романов XIX века, сюжет которой рассказывает о путешествии трёх отважных героев под землёй. Примечательна первая глава, в которой главный герой разгадывает зашифрованный манускрипт, ставший причиной их дальнейших приключений.
2. Артур Конан Дойль. Пляшущие человечки. Рассказ из цикла про Шерлока Холмса, частного детектива и просто прекрасного человека. Фабула рассказа заключается в расшифровывании Шерлоком Холмсом таинственных надписей, сделанных при помощи замысловатого шифра подстановки без пробелов. В рассказе описывается метод подбора ключевых слов.