logo
Коды и шифры

Ахиллесова пята "Энигмы"

Военные настояли ( и это вполне понятно), чтобы внутренние распайки колес и отражателя армейского варианта "Энигмы" отличались от первоначальной гражданской модели 1923 года. Поэтому обладание гражданской моделью шифрмашины "Энигма" 1923 года не помогло бы криптоаналитикам. Кроме того, в армейскую модель был добавлен коммутатор. Казалось, что даже если бы криптоаналитик имел в своем распоряжении армейский вариант "Энигмы", то и тогда необходимость перебора 1017 вариантов делала бы невозможным дешифрование даже одного сообщения. Даже если бы можно было опробовать миллион вариантов в секунду, то на полный перебор ушло бы несколько тысяч лет. К тому же в 1930-ые годы никаких компьютеров еще не было. Как же случилось, что в 1932 году метод дешифрования "Энигмы" все же был найден?

Основная слабость, которая привела к дешифрованию "Энигмы", заключалась не в конструкции самой машины, а в методе, которым пользовались немцы для отправки сообщений. Как уже говорилось выше, если шифровальщик посылает сообщение, зашифрованное с помощью системы с переменными параметрами, то он должен либо сообщить получателю значения этих параметров, либо предоставить ему возможность вычислить их самому. Последний способ редко применяется, хотя он мог быть применен в случае цилиндра Джефферсона. Для шифрмашины "Энигма" такой способ совершенно непригоден, и получателю необходимо сообщить полную информацию, необходимую для расшифрования сообщения. Что именно необходимо знать получателю? Допустим, что отправитель и получатель работают с одними и теми же "настройками", то есть они оба используют одинаковые колеса "Энигмы" и в том же порядке, и те же соединения коммутатора. Даже в этом случае отправитель должен каким-то образом сообщить получателю исходные положения тройки колес перед началом шифрования сообщения. Эту информацию необходимо поместить в "индикатор". Начальные положения ("угловые установки") должны выбираться отправителем "случайно", ибо, если несколько сообщений зашифрованы на одних и тех же начальных угловых установках, то получаются одноключевые сообщения, которые могут быть прочитаны даже в том случае, если вид колес и/или их начальные угловые установки определить не удастся. Поскольку для тройки колес существует 17576 вариантов начальных угловых положений, то вероятность случайного зашифрования двух сообщений при одних и тех же начальных установках будет меньше, чем 0.00006, при условии, что начальные установки выбираются действительно произвольно. Однако на практике у шифровальщиков вырабатывались привычки: например, три буквы, обозначающие начальные установки колес, они выбирали из одного и того же ряда букв на клавиатуре, что значительно увеличивало вероятность появления одноключевых сообщений. Общий ключ вполне мог возникнуть случайно даже при случайном выборе угловых установок, если число сообщений, посылаемых при одинаковых внутренних установках машины (т.е. при том же порядке расположения колес и одинаковом коммутаторе), было велико. Например, если послано 200 сообщений, то вероятность того, что среди них найдется хотя бы одна пара одноключевых, будет больше половины (доказательство см. в приложении M16). Поэтому в целях снижения вероятности появления общего ключа необходимо было как можно чаще менять внутренние установки машины, чтобы появление большого числа сообщений, зашифрованных на одних и тех же внутренних установках, было крайне маловероятно.

Метод, который вначале применяли немцы для информирования получателя о начальных угловых положениях тройки колес, был основан на использовании общей базовой угловой установки; процедура, которую при этом выполнял отправитель, была следующей:

  1. Выбрать "случайную" комбинацию из трех букв для обозначения начальной угловой установки колес, которая будет использована для зашифрования сообщения; предположим, это будет, например, FMZ.

  2. Обратиться к списку, который имеется у всех пользователей в данной "сети", и найти в нем базовую угловую установку на текущую дату (или период времени, если базовая угловая установка меняется чаще одного раза в сутки); предположим, что это будет, например, BLE.

  3. Установить колеса в положения, соответствующие базовой установке, BLE.

  4. Зашифровать дважды тройку букв выбранной произвольной установки; то есть, зашифровать шесть букв FMZFMZ и записать шесть полученных букв шифрованного текста; предположим, получились, например, буквы LOCWHQ.

  5. Установить колеса согласно выбранной случайной угловой установке, FMZ, и зашифровать сообщение.

  6. Перед шифрованным текстом сообщения записать 6 букв перешифрованного двойного индикатора, то есть LOCWHQ.

  7. Отослать получившееся шифрованное сообщение с перешифрованным двойным индикатором в начале текста.

Приняв шифрованное сообщение, получатель действовал следующим образом:

  1. Установить тройку колес согласно базовой угловой установке на текущую дату или период времени, BLE.

  2. Ввести с клавиатуры 6 букв (LOCWHQ) перешифрованного двойного индикатора.

(Напомним, что характерной чертой "Энигмы" является то, что в ней операции зашифрования и расшифрования осуществляются одинаково. Таким образом, поскольку буква F при первом зашифровании индикатора перешла в L, то буква L должна перейти в F, что и произойдет при расшифровании буквы L.)

  1. В результате должен получиться выбранный отправителем произвольно двойной индикатор (а именно FMZFMZ); если это не так, то это значит, что произошла ошибка, В этом случае, возможно, сообщение придется передать еще раз. Это очень опасная ситуация, которая может привести к нарушению стойкости шифра.

  2. Если при расшифровании шестерки знаков получилось повторение одного и того же триграфа (в данном случае FMZ), то установить колеса машины в эти угловые положения и расшифровать текст сообщения.

Обратите внимание на то, что слово " двойной" напечатано курсивом. Как мы увидим далее, именно такая последовательность действий, веденная для обеспечения точности приема трехбуквенных угловых установок, и оказалась ахиллесовой пятой "Энигмы". Вначале отметим, что

во время зашифрования шестизначного двойного индикатора вероятность того, что движется только колесо R1, составляет 80%.

Колесо R2 приводится в движение только тогда, когда колесо R1 находится в положении с выемкой. В первой модели "Энигмы" на кольце с выемкой, имеющем 26 положений, выемка была только одна. Таким образом, если выемка срабатывала, когда колесо R1 находилось в положении Z, то колесо R2 во время зашифрования шестерки букв двигалось только при условии, что исходная угловая установка колеса R1 была U, V, W, X или Y. (Если исходная угловая установка колеса R1 была Z, то колесо R2 поворачивалось непосредственно до начала зашифрования первой буквы и оставалось в новом положении на время зашифрования следующих пяти букв, если только колесо R2 само теперь не находилось в положении с выемкой - в последнем случае при зашифровании следующей буквы сдвигалось как оно само, так и колесо R3. Однако эта возможность почти не влияет на вероятности, и ради простоты изложения мы пренебрежем ею. Метод дешифрования легко изменить, чтобы учесть и этот маловероятный случай.) Поэтому обычно колесо R1 имеет 21 начальное угловое положение, при которых колесо R2, а следовательно, и R3 остаются неподвижными во время всего процесса зашифрования шестизначного индикатора. Итак, вероятность того, что движется только колесо R1, составляет 21/26, то есть больше, чем 0.8. Очевидно, что если бы на кольце с выемкой выемок было больше, то эта вероятность была бы ниже. Как мы увидим далее, на последних стадиях войны на некоторых кольцах было по две выемки, а на моделях "Энигмы", использовавшихся в Абвере, их было гораздо больше.

Если колеса R2 и R3 не движутся во время зашифрования шестизначного индикатора, то "Энигма" фактически превращается в машину с одним колесом, состоящую из колеса R1 и составного отражателя, включающего U, R3 и R2, так как ни одна из перечисленных частей не движется во время зашифрования. Это показано на рис. 9.3*) .

Слева показан составной отражатель, компонентами которого являются неподвижные колеса R2 и R3 и фиксированный отражатель U. Справа показано колесо R1 - единственное колесо, которое движется во время зашифрования шестерки букв. Внутренние линии - это типичный пример шифрования буквы D открытого текста в букву Q шифрованного текста. Основное, что следует подчеркнуть, состоит в следующем: если, как показано на диаграмме, колесо R1 преобразует букву D в I, а букву Q - в P, то буквы I и P являются парой в составном отражателе. Это означает, что во время зашифрования шестерки букв любая буква, поступающая на составной отражатель как I, на выходе из него превращается в P, и наоборот.