Книга шифров. Тайная история шифров и их расшифровки
Шрифт:
Такой способ вполне безопасен, однако его стойкость снижается из-за многократного использования только одного ключа текущего дня для зашифровывания сотен сообщений, которые могут передаваться каждый день. Вообще-то, по правде говоря, если для зашифровывания огромного количества информации используется один-единственный ключ, то для криптоаналитика становится проще определить его. Большой объем идентичным образом зашифрованной информации дает криптоаналитику больше шансов отыскать этот ключ. Так, например, возвращаясь к простым шифрам, взломать одноалфавитный шифр с помощью частотного анализа гораздо легче, если имеется несколько страниц зашифрованного текста, а не лишь пара предложений.
Поэтому, в качестве дополнительной меры предосторожности, немцы сделали хитроумный ход: они использовали установки ключа текущего дня для передачи нового разового ключа для каждого сообщения. Для разовых ключей установки на штепсельной
Это эквивалентно тому, как отправитель и получатель договариваются об основном ключе шифрования. Только вместо использования этого единственного основного ключа шифрования для зашифровывания всех сообщений его применяют для зашифровывания нового ключа, а само сообщение зашифровывают этим новым ключом. Если бы немцы не ввели разовые ключи, тогда тысячи сообщений, содержащих миллионы букв, передавались бы зашифрованными одним и тем же ключом текущего дня. Если же ключ текущего дня используется только для передачи разовых ключей, то им зашифровывается небольшой кусочек текста. Допустим, в течение дня пересылается 1000 разовых ключей, тогда ключом текущего дня зашифровывается всего-навсего 6000 букв. И поскольку каждый разовый ключ выбирается случайным образом и используется для зашифровывания только одного сообщения, то с его помощью зашифровывается только текст незначительного объема, — лишь нескольких сотен знаков.
На первый взгляд система выглядит неуязвимой, но польских криптоаналитиков это не обескуражило. Они были готовы проверить каждую тропку, чтобы отыскать слабое место у шифровальной машины «Энигма» и в использовании ключей текущего дня и разовых ключей. В противоборстве с «Энигмой» главными теперь стали криптоаналитики нового типа. Веками считалось, что наилучшими криптоаналитиками являются знатоки структуры языка, но появление «Энигмы» заставило поляков изменить свою политику подбора кадров. «Энигма» была электромеханической шифровальной машиной, и польское Бюро шифров рассудило, что для ученого шансов взломать эту машину гораздо больше. Бюро организовало курс по криптографии и пригласило двадцать математиков; каждый из них поклялся хранить тайну. Все они были из познаньского университета. Хотя этот университет и не считался самым лучшим академическим учреждением в Польше, но его преимущество в данном случае заключалось в том, что располагался он на западе страны, на территории, которая до 1918 года была частью Германии. Поэтому-то эти математики свободно говорили по-немецки.
Трое из этих двадцати продемонстрировали способность раскрывать шифры и были приглашены на работу в Бюро. Самым способным из них был застенчивый, носящий очки, двадцатитрехлетний Мариан Реевский, который прежде изучал статистику, чтобы в будущем заняться страхованием. Он и в университете был весьма способным студентом, но только в польском Бюро шифров нашел свое истинное призвание. Здесь он проходил обучение, разгадывая обычные шифры, прежде чем перейти к более неприступной задаче «Энигмы». Трудясь в полном одиночестве, он полностью сосредоточился на запутанности машины Шербиуса. Будучи математиком, он постарался всесторонне проанализировать работу машины, изучая влияние шифраторов и кабелей штепсельной коммутационной панели. Но, как и все в математике, его работа требовала не только вдохновения, но и логического мышления. Как сказал один из военных математиков-криптоаналитиков,
Реевский разработал стратегию атаки на «Энигму» исходя из того, что повторение является врагом безопасности: повторения приводят к возникновению характерного рисунка — структуры сообщения, и криптоаналитики благоденствуют на структурах. Самым явным повторением при шифровании с использованием «Энигмы» был разовый ключ, который зашифровывался дважды в начале каждого сообщения. Если оператор выбирал, к примеру, разовый ключ ULJ, то он должен был зашифровать его дважды, так что ULJULJ мог приобрести вид PEFNWZ, и вначале посылался этот набор букв, а затем само сообщение. Немцы требовали такого повторения, чтобы избежать ошибок вследствие радиопомех или оплошности оператора. Но они не предполагали, что из-за этого возникнет угроза безопасности машины.
Каждый день Реевскому передавали новую пачку перехваченных сообщений. Все они начинались шестью буквами повторяющегося трехбуквенного разового ключа, все были зашифрованы с использованием одного и того же ключа текущего дня. Например, он мог получить четыре сообщения, начинающихся со следующих зашифрованных разовых ключей:
В каждом из этих случаев 1-я и 4-я буквы являются одной и той же зашифрованной буквой — первой буквой разового ключа. Точно так же 2-я и 5-я буквы являются одной и той же зашифрованной буквой — второй буквой разового ключа, а 3-я и 6-я буквы — третьей буквой разового ключа. Так, в первом сообщении, L и R являются одной и той же зашифрованной буквой — первой буквой разового ключа. Причина, почему одна и та же буква зашифровывается по-разному, вначале как L, а затем как R, заключается в том, что между двумя зашифровываниями первый шифратор «Энигмы» продвинется на три шага и способ шифрования изменится.
То, что L и R являются одной и той же зашифрованной буквой, позволило Реевскому вывести еле уловимую связь с начальной установкой машины. При некотором начальном положении шифратора, которое неизвестно, первая буква ключа текущего дня, который опять-таки неизвестен, зашифровывается в L, а затем, при другом положении шифратора, который передвинулся на три шага от начального, по-прежнему неизвестного положения, та же буква ключа текущего дня, который также по-прежнему неизвестен, преобразуется в R.
Эта связь представляется смутной, так как здесь полно неизвестностей, но она хотя бы показывает, что буквы L и R неразрывно связаны с исходной установкой «Энигмы» — с ключом текущего дня. При перехвате новых сообщений можно найти другие соответствия между 1-й и 4-й буквами повторяющегося разового ключа.
Все они отражают исходную установку «Энигмы». Например, из второго сообщения видно, что существует связь между М и X, из третьего — между J и М и из четвертого — между D и Р. Реевский начал суммировать эти соответствия, сводя их в таблицу. Для четырех сообщений, которые мы пока имеем, таблица дает наличие связей между (L, R), (М, X), (J, М) и (D, Р):
Если бы у Реевского было достаточное количество сообщений, отправленных в какой-нибудь один из дней, то он смог бы завершить составление алфавита соответствия. Ниже приведена заполненная таблица соответствий:
У Реевского не было никаких догадок ни о ключе текущего дня, ни о том, какие выбирались разовые ключи, но он знал, что они есть в этой таблице соответствий. Если бы ключ текущего дня был другим, то и таблица соответствий была бы совершенно отличной. Следующий вопрос заключался в том, можно ли найти ключ текущего дня из этой таблицы соответствий. Реевский приступил к поиску в таблице характерных рисунков — структур, которые могли бы послужить признаком ключа текущего дня. В итоге он начал изучать один частный тип структуры, который характеризовал цепочку букв. В таблице, к примеру, А в верхнем ряду связана с F в нижнем ряду. Перейдя в верхний ряд и найдя там F, Реевский выяснил, что F связана с W. Снова перейдя в верхний ряд и отыскав там W, он обнаружил, что, оказывается, связана с А, то есть он вернулся к тому месту, откуда начал поиск. Цепочка завершена.