Текст книги "Математики, шпионы и хакеры. Кодирование и криптография"
Автор книги: Жуан Гомес
Жанр:
Математика
сообщить о нарушении
Текущая страница: 3 (всего у книги 8 страниц)
Даже если Аль-Кинди не был первым, его имя, безусловно, занимает важное место в истории криптоанализа.
До недавнего времени очень мало было известно о новаторской роли Аль-Кинди.
В1987 г. в одном из архивов Стамбула была обнаружена копия его трактата «Манускрипт о дешифровке криптографических сообщений». Он содержит краткое изложение революционного метода:
«Чтобы расшифровать зашифрованное сообщение, если мы знаем, на каком языке оно было написано, надо взять достаточно длинный текст, написанный на том же языке, а затем подсчитать, сколько раз каждая буква встречается в этом отрывке. Назовем наиболее часто встречающуюся букву «первой», вторую по частоте – «второй», и так далее, пока не переберем все буквы этого отрывка. Затем вернемся к криптограмме, которую мы хотим расшифровать, и классифицируем ее символы тем же образом: найдем в криптограмме символ, встречающийся чаще всех, и заменим его на «первую» букву из проанализированного текста, затем перейдем ко второму по частоте символу и заменим его на «вторую» букву, и так далее, пока не переберем все символы, используемые в криптограмме».
На предыдущих страницах манускрипта Аль-Кинди упоминает, что в шифре подстановки каждая буква исходного сообщения «сохраняет свою позицию, но меняет свою роль», и именно это «сохранение позиции» делает метод уязвимым для частотного криптоанализа. Гениальный Аль-Кинди изменил соотношение сил между криптографами и криптоаналитиками, по крайней мере на какое-то время, в пользу последних.
Подробный пример
Вот как встречаются буквы латинского алфавита – от наибольшей до наименьшей частоты – в текстах на английском языке: ETAOINSHRDLCUMWFGYPBVKJXQZ. Частота появления (в процентах) каждой буквы показана в следующей таблице.
Если сообщение было зашифровано с использованием шифра подстановки, как те, что описаны выше, его можно расшифровать в соответствии с относительной частотой, с которой встречаются буквы исходного сообщения. Достаточно посчитать частоту появления каждой зашифрованной буквы и сравнить ее с таблицей частот в языке, на котором сообщение было написано. Так, если буква J чаще всего встречается в зашифрованном тексте, она, скорее всего, соответствует букве Е в оригинальном сообщении (в случае английского языка). Если вторая по частоте появления в зашифрованном тексте будет буква Z, те же рассуждения приводят нас к выводу, что ей, скорее всего, соответствует буква Т. Криптоанализ завершается повторением процесса для всех букв зашифрованного текста.
Очевидно, что частотный метод не всегда может быть так легко применим. Частоты, указанные в таблице, справедливы лишь в среднем. В коротких текстах, таких как Visit the zoo kiosk for quiz tickets («Билеты викторины продаются в кассе зоопарка»), относительная частота появления букв сильно отличается от частоты, характерной для языка в целом. По сути, для текстов, содержащих менее 100 символов, такой простой анализ редко бывает полезен. Частотный анализ, однако, не ограничивается только изучением букв. Как мы видели, маловероятно, что в короткой криптограмме наиболее часто встречающейся буквой будет Е, но с большей уверенностью можно сказать, что пять наиболее часто встречающихся букв, скорее всего, будут А, Е, I, О и Т, хотя мы и не знаем, каким именно символам они соответствуют. В английском языке А и I никогда не появляются в паре, в то время как другие буквы могут. Более того, независимо от длины текста, гласные, как правило, чаще появляются в начале и в конце группы других букв, а согласные чаще встречаются с гласными или в коротких словах. Таким образом, нам, возможно, удастся отличить Т от А, Е, I и О. После успешной расшифровки некоторых букв в криптограмме появятся слова, в которых осталось расшифровать только один или два символа, что позволит нам строить гипотезы, каким буквам эти символы могут соответствовать. Скорость расшифровки увеличивается с количеством разгаданных букв.
* * *
ШЕРЛОК ХОЛМС, КРИПТОАНАЛИТИК
Расшифровка с использованием частотного анализа – очень драматичный метод, который привлекал внимание большого количества авторов. Возможно, самая известная история, основанная на криптоанализе тайного послания, описана Эдгаром Алланом По в 1843 г. в рассказе «Золотой жук». В Приложении содержится подробный разбор вымышленного послания, зашифрованного Эдгаром По, и его блестящая расшифровка с использованием частотного анализа. Другие писатели, такие как Жюль Верн и Артур Конан Дойл, использовали подобные идеи, чтобы добавить драматизма в сюжеты своих произведений. Герой рассказа Дойла «Пляшущие человечки», Шерлок Холмс, также сталкивается с шифром подстановки, что заставляет детектива обратиться к частотному анализу. Более 1000 лет спустя гениальная идея Аль-Кинди все еще привлекает людей своей красотой.
Первое из закодированных сообщений, которые Шерлок Холмс должен был расшифровать в рассказе «Пляшущие человечки». Мы не будем его здесь расшифровывать, чтобы не открывать всех секретов будущим читателям книги. Добавим только, что флажки у танцующих человечков представляют собой важный элемент шифра.
Полиалфавитный шифр
8 февраля 1587 г. Мария Стюарт, королева Шотландии, была обезглавлена в замке Фотерингей после признания ее виновной в государственной измене. Судебное разбирательство, приведшее к такому суровому приговору, установило, что Мария, вне всяких сомнений, была в сговоре с группой католических аристократов, возглавляемой молодым Энтони Бабингтоном. В их планы входило убийство английской королевы Елизаветы I и возведение Марии на трон католического царства, охватывающего Англию и Шотландию. Решающие доказательства были добыты контрразведкой Елизаветы во главе с лордом Уолсингемом. Из переписки между Марией и Бабингтоном стало ясно, что молодая шотландская королева знала о жестоком плане и одобрила его. Эти письма были зашифрованы с помощью алгоритма, который использовал и шифры, и коды: не только одни буквы заменялись другими, но и вместо некоторых общеупотребительных слов использовались специальные символы. Шифроалфавит Марии представлен ниже:
За исключением того, что буквы заменялись символами, шифр Марии ничем не отличался от любых других, которые криптографы во всем мире использовали в течение многих столетий. Молодая королева и ее сообщники были убеждены, что шифр надежен, но, к сожалению для них, лучший криптоаналитик Елизаветы, Томас Фелиппес, был экспертом в частотном анализе и смог расшифровать письма Марии без особых трудностей. Провал того, что стало известно как Заговор Бабингтона, показал правительствам и тайным агентам всей Европы, что обычный алгоритм шифра подстановки уже не безопасен. Криптографы оказались бессильными перед новыми методами расшифровки.
Фрагмент одного из писем шотландской королевы Марии Стюарт к ее сообщнику Энтони Бабингтону. За это письмо ее в конечном счете осудили на смерть.
Идея Альберти
Тем не менее, средство против частотного анализа было найдено за сто лет до того, как Мария взошла на эшафот. Отцом нового шифра стал выдающийся ученый эпохи Возрождения Леон Баттиста Альберти. Более известный как архитектор и математик, внесший большой вклад в изучение перспективы, в 1460 г. Альберти разработал систему шифрования, которая состояла в использовании двух шифроалфавитов, как показано в следующей таблице:
Строка (1) – стандартный алфавит. Строка (2) – первый шифроалфавит. Строка (3) – второй шифроалфавит.
Для зашифровки какого-либо сообщения Альберти предложил чередовать два шифроалфавита. Например, в случае слова SHEEP («овца») шифр для первой буквы берется из первого алфавита (V), а шифр для второй буквы – из второго алфавита (L), и так далее. В нашем примере слово SHEEP будет зашифровано как VLHCS. Преимущество такого алгоритма полиалфавитного шифрования по сравнению с предыдущими видно сразу: буква Е исходного слова шифруется двумя различными способами – как Н и С. Чтобы еще больше запутать криптоаналитика, пытающегося расшифровать этот текст, одна и та же буква криптограммы соответствует двум разным буквам оригинального текста. Частотный анализ, таким образом, теряет значительную часть своей силы. Альберти так нигде и не записал свои идеи, поэтому шифр был позже разработан примерно в одно и то же время, но независимо друг от друга двумя учеными: немцем Иоганном Тритемием и французом Блезом де Виженером.
Квадрат Виженера
В шифре Цезаря используется одноалфавитный шифр подстановки; один шифроалфавит соответствует алфавиту открытого текста, так что одна зашифрованная буква соответствует одной и той же букве исходного текста. (В классическом шифре Цезаря буква D всегда соответствует букве А, Е – В, и так далее).
В полиалфавитном же шифре определенной букве открытого сообщения может быть сопоставлено столько букв, сколько используется шифроалфавитов. Для зашифровки текста при переходе от одной буквы сообщения к другой используются различные шифроалфавиты. Первой и самой известной полиалфавитной системой шифрования был так называемый квадрат Виженера. Его таблица алфавитов состояла из стандартного алфавита из n букв, под которым стояли п шифроалфавитов, сдвинутых циклически на одну букву влево по сравнению с вышестоящим алфавитом. Другими словами, это была квадратная матрица из 26 строк и 26 столбцов, изображенная на следующей странице.
Обратите внимание на симметрию в расположении букв. Пара (A, R) = (R, А), и это же соотношение справедливо для всех букв.
Мы видим, что квадрат Виженера содержит стандартный алфавит из n букв, повторяющийся n раз с различными увеличивающимися параметрами. Так, первый шифроалфавит получается применением шифра Цезаря с параметрами а = 1 и b = 2; второй – эквивалентен шифру Цезаря с Ь = 3 и так далее. Ключом к квадрату Виженера является правило для каждой буквы, которое указывает, на сколько строк вниз надо спуститься, чтобы найти зашифрованное значение, соответствующее этой букве. Простейший ключ состоит из движения вниз на одну строку при переходе от одной буквы исходного сообщения к другой.
Таким образом, наша классическая фраза VENI VIDI VICI будет зашифрована следующим образом:
Для шифрования первой V мы найдем соответствующую букву в строке 2: W.
Для шифрования Е мы найдем соответствующую букву в строке 3: G.
Для шифрования N мы найдем соответствующую букву в строке 4: Q.
I (строка 5): М.
V (строка 6): А.
I (строка 7): О.
D (строка 8): К.
I (строка 9): Q.
V (строка 10): Е.
I (строка 11): S.
С (строка 12): N.
I (строка 13): U.
* * *
ИГРА С ДИСКАМИ
На практике для полиалфавитного шифрования используется устройство, известное как шифровальный диск Альберти. Этот портативный прибор состоит из двух концентрических дисков: один – фиксированный, с выгравированным на нем стандартным алфавитом, второй – подвижный, с другим алфавитом. Отправитель, поворачивая подвижный диск, может сопоставить стандартный алфавит с разными шифроалфавитами в зависимости от числа поворотов диска, максимальное количество которых равно числу букв используемого алфавита. Шифр, полученный с помощью диска Альберти, очень устойчив к частотному анализу. Чтобы расшифровать сообщение, получатель должен сделать то же число оборотов, что и отправитель. Безопасность этого шифра, как всегда, зависит от сохранения в тайне кода, а именно – от расположения алфавита на подвижном диске плюс число необходимых поворотов. Диск Альберти с одним подвижным кольцом, на котором выгравирован стандартный алфавит, дает шифр Цезаря при каждом повороте. Аналогичные устройства использовались во время Гражданской войны в США, и сегодня их можно встретить в детских шпионских играх.
Диск Альберти, используемый Конфедерацией во время американской гражданской войны.
В результате наша фраза превратится в WGQM AOKQ ESNU. При этом повторяющиеся буквы исходного сообщения исчезнут. Однако каждый криптограф стремится к тому, чтобы генерировать шифры, которые легко запомнить, распространять и обновлять. Тогда стали брать ключевые слова с таким же или меньшим количеством букв, что и в исходном сообщении, чтобы строить более короткие и легкие в использовании квадраты Виженера. Ключевое слово дает первые буквы каждой строки (см. стр. 47), и строки продолжаются остатком алфавита (как они представлены в полном квадрате). Затем ключевое слово, повторенное нужное количество раз, пишется под буквами сообщения, которое необходимо было зашифровать. Буква ключевого слова под каждым символом сообщения подсказывала криптографу строку в матрице, из которой нужно было взять зашифрованное значение этой буквы.
* * *
ДИПЛОМАТ И КРИПТОГРАФ
Блез де Виженер родился во Франции в 1523 г. В 1549 г. он был послан французским правительством с дипломатической миссией в Рим, где заинтересовался криптографией и шифрованием сообщений. В 1585 г. он написал основополагающий трактат о шифрах, Traicte des Chiffres, где описывалась система шифрования, которой он дал свое имя. Эта система шифрования оставалась неподдающейся взлому на протяжении почти трех столетий, пока британцу Чарльзу Бэббиджу не удалось взломать ее в 1854 г. Любопытно, что этот факт стал известен лишь в XX в., когда группа ученых разбирала вычисления и личные заметки Бэббиджа.
* * *
Например, если мы хотим зашифровать сообщение BUY MILK TODAY («Купи сегодня молоко») с помощью ключевого слова JACKSON:
Зашифрованное сообщение будет KUAWAZXCOFKQ.
Квадрат Виженера со строками, определенными ключевым словом JACKSON.
Как и в случае всех классических систем шифрования, расшифрованный текст сообщения, зашифрованного с помощью квадрата Виженера, является симметричным исходному тексту. Например, пусть у нас есть зашифрованное сообщение WZPKGIMQHQ, и мы знаем, что использовалось ключевое слово WINDY:
Давайте посмотрим на первый столбик. Мы хотим найти неизвестную букву «?», зная, что (? W) = W. Для этого мы посмотрим на строку W квадрата Виженера на стр. 44, найдем в этой строке букву W и определим, какому столбцу она соответствует; получим букву А. Аналогично мы ищем вторую букву «?», зная, что (? I) = Z, и получаем букву R и так далее. Таким образом мы получим исходное сообщение ARCHIMEDES («Архимед»).
Историческое значение квадрата Виженера, которое он разделяет и с другими полиалфавитными шифрами, например, с шифром Гронсфельда (разработанным примерно в то же время; мы приводим его подробное описание в Приложении), состоит в устойчивости к частотному анализу. Если одна и та же буква может быть зашифрована несколькими способами с возможностью тем не менее ее впоследствии расшифровать, как же можно такой шифр взломать? Этот вопрос оставался без ответа более 300 лет.
Классификация алфавитов
Хотя на это потребовалось почти восемь веков, полиалфавитные шифры, такие как квадрат Виженера, наконец-то переиграли частотный анализ. Однако моноалфавитные шифры, несмотря на свои слабые стороны, имели особое преимущество: простоту реализации. Криптографы посвятили себя совершенствованию алгоритмов, наполняя их трюками, но принципиально они продолжали использовать ту же идею, что и для простейших шифров.
Одним из наиболее успешных вариантов моноалфавитного шифра был так называемый однозвучный шифр подстановки, который пытался защититься от методов статистического криптоанализа, заменяя буквы с наибольшей частотой появления несколькими разными символами. Например, частота появления буквы Е в среднем составляет 10 % в любом языке. Однозвучный шифр подстановки пытался изменить эту частоту, заменяя букву Е десятью альтернативными символами. Такие методы были популярны вплоть до XVIII в.
Время все же не стояло на месте. Образование больших национальных государств и развитие дипломатии вызвали заметное возрастание требований к безопасности коммуникации. Эта тенденция еще больше усилилась с появлением новых коммуникационных технологий, таких как телеграф, в результате чего значительно увеличилось количество передаваемых сообщений. В европейских странах были созданы так называемые «черные кабинеты», где кодировалась самая конфиденциальная корреспонденция и расшифровывались перехваченные сообщения врагов.
Экспертные возможности «черных кабинетов» вскоре сделали небезопасными любые формы одноалфавитного шифра подстановки, как бы он ни модифицировался.
Мало-помалу ведущие игроки на поле обмена информацией избирали полиалфавитные алгоритмы. Утратив свое самое мощное оружие, частотный анализ, криптоаналитики в очередной раз оказались беззащитными перед натиском криптографов.
* * *
КРИПТОГРАФЫ КОРОЛЯ-СОЛНЦА
Хотя мало кто за пределами королевского двора Людовика XIV знал об их существовании, Антуан и Бонавентура Россиньоль принадлежали к числу самых грозных людей Европы во времена социальных потрясений XVII в. Они обладали незаурядным криптографическим талантом, что позволяло им расшифровывать письма врагов Франции (и личных врагов монарха). Они разработали Grande Chiffre (Великий шифр), сложный алгоритм замены слогов, используемый для шифрования самых важных писем короля. После смерти Россиньоль шифр вышел из употребления и считался невзламываемым. Лишь в 1890 г. специалист по криптографии, отставной солдат Этьен Базарье взял на себя трудоемкую задачу расшифровки документов и после многих лет напряженной работы смог прочитать секретные послания Короля-Солнца.
Людовик XIV, портрет работы Миньяра
Анонимный криптоаналитик
Английский математик Чарльз Бэббидж (1791–1871) был одним из самых выдающихся научных деятелей XIX в. Он изобрел механический компьютер, названный разностной машиной, далеко опередив свое время, и в сферу его интересов входили все отрасли математики и технологии того века. Бэббидж решил применить свои знания к расшифровке полиалфавитных алгоритмов, в первую очередь квадрата Виженера (см. стр. 44 и 47). Он сосредоточил внимание на одной особенности этого шифра. Напомним, что в случае шифра Виженера длина выбранного ключевого слова определяла количество используемых шифроалфавитов. Таким образом, если ключевое слово было WALK, каждая буква исходного сообщения могла быть зашифрована четырьмя разными способами. То же самое справедливо и для слов. Эта особенность и была ключевой зацепкой для Бэббиджа, позволившей ему взломать полиалфавитный шифр. Рассмотрим следующий пример, где сообщение зашифровано с помощью квадрата Виженера.
Наше внимание сразу привлекает то, что слово BY исходного сообщения шифруется в обоих случаях одинаково – XY. Это связано с тем, что второй раз BY встречается после восьми символов, а восемь кратно количеству букв (четыре) в ключевом слове (WALK). Обладая этой информацией и имея достаточно длинный исходный текст, можно догадаться, какова длина ключевого слова. Процедура заключается в следующем: вы отмечаете все повторяющиеся символы и записываете, через сколько позиций они повторяются. Затем вы находите все делители этих чисел. Общие делители и являются кандидатами на длину ключевого слова.
Предположим, что наиболее вероятный кандидат – число 5, потому что это общий делитель, который встречается чаще всего. Теперь мы попытаемся догадаться, каким буквам соответствует каждая из пяти букв ключевого слова. Как мы помним, каждая буква ключевого слова в квадрате Виженера определяет моноалфавитный шифр для соответствующей буквы в исходном сообщении. В случае нашего гипотетического ключевого слова из пяти букв (C1, С2, СЗ, С4, С5) шестая буква (С6) шифруется тем же алфавитом, что и первая буква (С1), седьмая (С7) – тем же, что и вторая (С2), и так далее. Поэтому на самом деле криптоаналитик имеет дело с пятью отдельными моноалфавитными шифрами, каждый из которых уязвим для традиционного криптоанализа.
Процесс завершается составлением таблицы частот для всех букв в зашифрованном тексте, соответствующих буквам ключевого слова (C1, С6, С11 … и С2, С7, С12 …). Таким образом, получается пять групп букв, вместе составляющих все сообщение. Затем, чтобы расшифровать ключевое слово, эти таблицы частот сравниваются с таблицами частот языка, на котором написано исходное сообщение.
Если таблицы не совпадают, процесс повторяется с другой вероятной длиной ключевого слова. Как только мы определим ключевое слово, останется только расшифровать исходное сообщение. С помощью этого метода и был взломан полиалфавитный шифр.
Поразительные работы Бэббиджа, завершенные около 1854 г., так бы и остались в безвестности. Эксцентричный британский интеллектуал не опубликовал свое открытие, и только недавние исследования его записок показали, что именно он был пионером в расшифровке полиалфавитных ключевых слов. К счастью для криптоаналитиков всего мира, несколько лет спустя, в 1863 г., прусский офицер Фридрих Касиски опубликовал аналогичный метод.
Независимо оттого, кто первый взломал его, полиалфавитный шифр перестал быть неприступным. С этого момента сила шифра стала зависеть не столько от алгоритмических нововведений шифрования, сколько от количества используемых шифроалфавитов, которое должно быть достаточно большим, чтобы сделать частотный анализ и его варианты совершенно бесполезными. Параллельной целью был поиск способов ускорения криптоанализа. Обе цели пересеклись в одной точке и породили один и тот же процесс: компьютеризацию.
Рабочая часть разностной машины Бэббиджа, построенной в 1991 г. в соответствии с чертежами, оставленными ее изобретателем. Устройство позволяет находить приближенные значения логарифмических и тригонометрических функций и, следовательно, делать расчеты астрономических таблиц. Бэббидж не успел при жизни увидеть свою машину.