Математики, шпионы и хакеры. Кодирование и криптография
Шрифт:
Если мы снимем какие-либо ограничения относительно порядка букв шифроалфавита, то потенциальное количество ключей резко возрастет. Количество ключей для стандартного алфавита из 26 символов (расположенных в произвольном порядке) составляет 26! = 403291461126605635584000000, то есть более 403 септиллионов ключей. Криптоаналитику, который тратит на проверку одного ключа всего лишь одну секунду, потребуется в миллиард раз больше времени, чем ожидаемое время существования Вселенной, чтобы исчерпать все возможности!
Вот один из примеров такого обобщенного шифра подстановки:
Строка (1) —
Первые шесть букв шифроалфавита дают подсказку к выбранному порядку букв: он соответствует порядку букв на клавиатуре в стандарте QWERTY. Чтобы зашифровать известное высказывание Цезаря VENI VIDI VICI («Пришел, увидел, победил») шифром QWERTY, для каждой буквы алфавита открытого сообщения мы найдем соответствующую в шифроалфавите.
Мы получим следующее зашифрованное послание:
CTFO CORO СОЕО
Существует очень простой способ для генерации почти неисчерпаемого количества легко запоминающихся шифров для шифрования этим методом. Достаточно выбрать любое ключевое слово (это может быть даже фраза), поместить его в начале шифроалфавита и, начиная с последней буквы ключевого слова, завершить ряд буквами стандартного алфавита, следующими в обычном порядке, исключив лишь повторяющиеся буквы. Возьмем в качестве примера ключевую фразу JANUARY CIPHER («январский шифр»). Сначала мы избавимся от пробела и одинаковых букв, получив ключевое слово JNUYCIPHE. В результате наш шифроалфавит будет выглядеть так:
Сообщение VENI VIDI VICI теперь будет зашифровано как ХСМЕ XEYE XEUE. Такая система генерации шифров легко обновляется и почти исключает ошибки со стороны отправителя и получателя. В нашем примере было бы достаточно менять ключевое слово каждый месяц — JANUARY CIPHER (январский шифр), FEBRUARY CIPHER (февральский шифр), MARCH CIPHER (мартовский шифр) и т. д. — то есть после изначального выбора шифра стороны могут обойтись без дополнительных соглашений.
Надежность и простота алгоритма шифра подстановки с использованием ключевых слов сделали его самой распространенной системой шифрования на протяжении многих веков. В прежние времена считалось, что криптографы все-таки взяли верх над криптоаналитиками.
* * *
ШИФРОВАНИЕ СЛОВА БОЖЬЕГО
Средневековые криптоаналитики считали, что в Ветхом Завете тоже использовались шифры, и они не ошиблись. Существует несколько фрагментов из священных текстов, которые зашифрованы с помощью шифра подстановки, называемого атбаш. Этот шифр состоит в замене каждой буквы (n) другой буквой, которая находится в алфавите на таком же расстоянии от конца алфавита, как оригинальная буква — от начала. Например, в латинском алфавите буква А заменяется на Z, буква В — на Y и т. д. В оригинальном Ветхом Завете использовались буквы еврейского алфавита. Так, в книге пророка Иеремии (25:26) слово «Бабель» (Вавилон) зашифровано как «Шешах».
Еврейская Библия начала XVIII в.
Коран состоит из 114 глав, каждая из которых соответствует одному из откровений, полученных пророком Мухаммедом. Эти откровения были записаны во время жизни
В частности, ученые-корановеды определили частоту появления некоторых слов, считавшихся новыми в периоды записи откровений. Если в каком-то откровении содержалось достаточное количество таких новых слов, было логично заключить, что это сравнительно позднее откровение.
Рукопись Корана. XIV в.
Этот подход стал первым конкретным инструментом криптоанализа, получившим название частотного анализа. Первым человеком, оставившим письменное упоминание об этом революционном методе, был философ по имени Аль-Кинди, который родился в Багдаде в 801 г. Хотя он был астрономом, врачом, математиком и лингвистом, прославился он как создатель манускрипта по криптоанализу.
Даже если Аль-Кинди не был первым, его имя, безусловно, занимает важное место в истории криптоанализа.
До недавнего времени очень мало было известно о новаторской роли Аль-Кинди.
В1987 г. в одном из архивов Стамбула была обнаружена копия его трактата «Манускрипт о дешифровке криптографических сообщений». Он содержит краткое изложение революционного метода:
«Чтобы расшифровать зашифрованное сообщение, если мы знаем, на каком языке оно было написано, надо взять достаточно длинный текст, написанный на том же языке, а затем подсчитать, сколько раз каждая буква встречается в этом отрывке. Назовем наиболее часто встречающуюся букву «первой», вторую по частоте — «второй», и так далее, пока не переберем все буквы этого отрывка. Затем вернемся к криптограмме, которую мы хотим расшифровать, и классифицируем ее символы тем же образом: найдем в криптограмме символ, встречающийся чаще всех, и заменим его на «первую» букву из проанализированного текста, затем перейдем ко второму по частоте символу и заменим его на «вторую» букву, и так далее, пока не переберем все символы, используемые в криптограмме».
На предыдущих страницах манускрипта Аль-Кинди упоминает, что в шифре подстановки каждая буква исходного сообщения «сохраняет свою позицию, но меняет свою роль», и именно это «сохранение позиции» делает метод уязвимым для частотного криптоанализа. Гениальный Аль-Кинди изменил соотношение сил между криптографами и криптоаналитиками, по крайней мере на какое-то время, в пользу последних.
Подробный пример
Вот как встречаются буквы латинского алфавита — от наибольшей до наименьшей частоты — в текстах на английском языке: ETAOINSHRDLCUMWFGYPBVKJXQZ. Частота появления (в процентах) каждой буквы показана в следующей таблице.
Если сообщение было зашифровано с использованием шифра подстановки, как те, что описаны выше, его можно расшифровать в соответствии с относительной частотой, с которой встречаются буквы исходного сообщения. Достаточно посчитать частоту появления каждой зашифрованной буквы и сравнить ее с таблицей частот в языке, на котором сообщение было написано. Так, если буква J чаще всего встречается в зашифрованном тексте, она, скорее всего, соответствует букве Е в оригинальном сообщении (в случае английского языка). Если вторая по частоте появления в зашифрованном тексте будет буква Z, те же рассуждения приводят нас к выводу, что ей, скорее всего, соответствует буква Т. Криптоанализ завершается повторением процесса для всех букв зашифрованного текста.