355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Жуан Гомес » Математики, шпионы и хакеры. Кодирование и криптография » Текст книги (страница 2)
Математики, шпионы и хакеры. Кодирование и криптография
  • Текст добавлен: 7 октября 2016, 00:01

Текст книги "Математики, шпионы и хакеры. Кодирование и криптография"


Автор книги: Жуан Гомес


Жанр:

   

Математика


сообщить о нарушении

Текущая страница: 2 (всего у книги 8 страниц)

Глава 2. Криптография от античности до XIX века

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


Стеганография

Греческий ученый Геродот, считающийся одним из величайших историков мира, в своей знаменитой хронике войны между греками и персами в V в. до н. э. упоминает два любопытных примера стеганографии, потребовавших значительной изобретательности. Первый пример описан в третьей книге «Истории» Геродота: Гистией, тиран города Милета, приказал побрить гонцу голову. Затем на коже головы написали сообщение, которое нужно было отправить, и подождали, когда волосы отрастут. После этого человека послали к месту назначения, в лагерь Аристагора.

Благополучно добравшись туда, посланник объяснил уловку Аристагору и снова сбрил волосы, показав долгожданное сообщение. Второй пример, если это, конечно, правда, имел большее историческое значение, поскольку это позволило спартанскому царю Демарату, сосланному в Персию, предупредить своих соотечественников о грозящем нашествии персидского царя Ксеркса. Геродот пишет об этом в седьмой книге:

«Дело в том, что Демарат не мог так просто предупредить их, поэтому он придумал вот какую хитрость: он взял пару восковых дощечек [для письма], соскоблил воск и написал планы персидского царя на деревянной поверхности. Затем он залил дощечки растопленным воском, таким образом скрыв сообщение. В итоге дощечки, выглядевшие пустыми, не могли возбудить никаких подозрений у дорожных стражей.

Когда дощечки доставили в Лакедемон (Спарта), лакедемоняне долго не могли разгадать секрет, пока, наконец, как я это понимаю, Горго […] не предложила соскоблить воск с дощечек, потому что тогда, по ее словам, на дереве обнаружится сообщение».

Стеганографический метод, выдержавший испытание временем, – это невидимые чернила. Известные по многим рассказам и фильмам, такие чернила содержат материалы, как правило, органического происхождения с высоким содержанием углерода: лимонный сок, растительные соки и даже человеческую мочу, поэтому они имеют тенденцию темнеть при умеренном нагревании, например, над пламенем свечи.

Польза стеганографии бесспорна, хотя этот способ совершенно невыгоден при большом количестве сообщений. Более того, сам по себе этот метод имеет существенный недостаток: если сообщение все-таки будет перехвачено, его содержание сразу же станет известным. По этой причине стеганография в основном используется совместно с методами криптографии как средство усиления безопасности сообщений наивысшей секретности.

Как показывают приведенные примеры, угроза вооруженного конфликта была серьезным стимулом для защиты передаваемой информации. Поэтому не удивительно, что такие воинственные люди, как спартанцы, бывшие, если верить Геродоту, мастерами стеганографии, были также пионерами в развитии криптографии.


Перестановочное шифрование

Во время конфликта между Афинами и Спартой для контроля над Пелопоннесом часто использовалась скитала – прибор, состоящий из цилиндра и обмотанной вокруг него по спирали узкой полоски бумаги, на которой писалось сообщение. Хотя используемый метод (то есть алгоритм шифрования) был известен противнику, не зная точных размеров скиталы, было чрезвычайно трудно расшифровать перехваченное сообщение. Толщина и длина скиталы были, в сущности, ключом к этой системе шифрования. После разматывания бумажной ленты прочитать сообщение было невозможно. На рисунке ниже передаваемое сообщение (М) выглядит так: A message encoded with a scytale («Сообщение, закодированное с помощью скиталы»), но после разматывания бумажной ленты сообщение превратилось в тарабарщину (С): anh mca eos sdc sey adt gwa eil ete.

* * *

КРОШЕЧНЫЕ БУКВЫ

В годы холодной войны герои шпионских триллеров часто использовали крошечные микрофильмы для пересылки сообщений, чтобы их было невозможно прочитать невооруженным глазом. Этот стеганографический метод, названный «микроточки», был разработан на несколько лет раньше, в Германии во время Второй мировой войны. Фотография текста сообщения уменьшалась до размеров точки, а затем прикреплялась к безобидному письму в качестве одного из многих типографских символов.

* * *


Использование скиталы основано на криптографическом методе, известном как перестановочное шифрование, когда буквы сообщения переставляются местами.

Чтобы получить представление о силе этого метода, рассмотрим простой пример перестановки всего трех букв: А, О и R. Быстрая проверка без каких-либо расчетов показывает, что они могут быть переставлены шестью различными способами:

AOR, ARO, OAR, ORA, ROA и RAO.

В абстрактных терминах процесс выглядит следующим образом: как только одна из трех возможных букв поставлена на первое место, что дает нам три различных возможности, остаются еще две буквы, которые в свою очередь могут быть переставлены двумя различными способами. Таким образом, общее количество составит 3 x 2 = 6 способов. В случае более длинного сообщения, например, из 10 букв, число возможных перестановок составит 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1. Такое произведение в математике записывается как 10! и дает число 3 628 800. В общем случае для сообщения из n букв существует n! различных способов изменить их порядок.

Таким образом, скромное сообщение из 40 символов имеет так много способов изменения порядка букв, что это сообщение практически невозможно расшифровать вручную. Может быть, мы нашли идеальный криптографической метод?

Не совсем так. По сути, алгоритм перестановочного шифрования обеспечивает высокий уровень безопасности, но как насчет ключа, который позволяет расшифровать сообщение? Случайность процесса составляет и его силу, и его слабость. Потребовался другой метод шифрования, чтобы генерировать ключи, которые были бы простыми и легкими для запоминания и передачи без потери уровня безопасности.

Так начались поиски идеального алгоритма, и первые успехи в этом деле были достигнуты римскими императорами.

* * *

РУКОВОДСТВО ДЛЯ МОЛОДЫХ ДАМ

Камасутра – это пространное руководство, которое посвящено, среди прочего, тому, что необходимо знать каждой женщине, чтобы быть хорошей женой. Созданное около IV в. до н. э. брамином по имени Ватьсьяяна, оно рассказывает о 64 различных навыках, в том числе о музыке, кулинарии и шахматах. Особый интерес для нас имеет навык под номером 45, потому что он представляет собой искусство тайнописи, или млеччхита-викальпа. Древний мудрец рекомендует несколько методов, в том числе такой: разделить алфавит на две части и распределить буквы по парам случайным образом. В этой системе каждое соответствие пар представляет собой ключ. Например, один из ключей может быть следующим:


Чтобы написать тайное послание, нужно просто заменить каждую букву А в оригинальном тексте буквой Е, букву Р, соответственно, буквой С, J – буквой W, и так далее.


Кесарю кесарево

Veni, vidi, vici (пришел, увидел, победил).

Юлий Цезарь

Шифры подстановки разрабатывались параллельно с перестановочным шифрованием. В отличие от перестановочного шифрования, строгий шифр подстановки заме няет каждую букву или символ на какой-то другой. В отличие от перестановочного шифрования, шифр подстановки основывается не только на буквах, которые содержатся в сообщении. В перестановочном шифровании буква меняет свое положение, но сохраняет свою роль; одна и та же литера имеет одинаковое значение в исходном сообщении и в зашифрованном. В шифре подстановки буквы сохраняют свои позиции, но меняют роли (одна и та же буква или символ имеет в исходном сообщении одно значение, а в зашифрованном – другое). Одним из первых известных алгоритмов шифра подстановки был шифр Полибия, названный в честь греческого историка Полибия (203–120 гг. до н. э.), который оставил нам его описание. Об этом методе подробно рассказано в Приложении.

Спустя примерно 50 лет после появления шифра Полибия, в I в. до н. э., возник другой шифр подстановки, известный под общим названием шифра Цезаря, потому что именно Юлий Цезарь использовал его для секретной переписки со своими генералами. Шифр Цезаря является одним из наиболее изученных в криптографии, и он очень полезен тем, что иллюстрирует принципы модульной арифметики, одной из математических основ кодированного письма.

Шифр Цезаря заменяет каждую букву другой, находящейся в алфавите на некоторое фиксированное число позиций правее. Как писал великий историк Светоний в книге «Жизнь двенадцати цезарей», Юлий Цезарь использовал для своей личной переписки следующий алгоритм подстановки: каждая буква исходного сообщения сдвигалась по алфавиту на три позиции, а именно, буква А заменялась на D, В – на Е, и так далее. Буква W превращалась в Z, а X, Y и Z возвращались к А, В и С.

* * *

ГАЙ ЮЛИЙ ЦЕЗАРЬ (100-44 гг. до н. э.)

Цезарь (на изображении справа) был военным и государственным деятелем, диктатура которого положила конец Римской республике. После службы в качестве магистрата в Дальней Испании он присоединился к двум другим влиятельным людям того времени, Помпею и Крассу, образовав Первый Триумвират, скрепленный браком Помпея с дочерью Цезаря, Юлией. Три союзника разделили между собой Римскую империю: Красе получил восточные провинции, Помпей остался в Риме, а Цезарь взял на себя военное командование Цизальпийской Галлией и управление Трансальпийской Галлией. В это время началась Галльская война. Она длилась восемь лет и завершилась завоеванием римлянами галльских территорий. После этого Цезарь со своей победоносной армией вернулся в столицу империи и назначил себя единственным диктатором.


* * *

Кодирование и декодирование зашифрованных таким образом сообщений может быть осуществлено с помощью простого устройства, показанного ниже:


Рассмотрим теперь этот процесс подробнее. В таблице ниже мы видим изначальный алфавит из 26 букв и алфавит, преобразованный шифром Цезаря, где каждая буква сдвинута на три позиции вправо (верхний ряд – алфавит открытого сообщения, а нижний – шифроалфавит).


Когда два алфавита, оригинальный (или алфавит открытого сообщения) и шифроалфавит, расположены таким образом, шифрование любого сообщения сводится к замене букв из первого алфавита буквами из второго. Ключ к такому шифру получает название по букве, соответствующей зашифрованному значению буквы А (первой буквы оригинального алфавита). В нашем случае это буква D. Известное выражение AVE CAESAR («Радуйся, Цезарь») будет зашифровано как DYH FDHVDU. Обратно, если зашифрованное сообщение выглядит как WUHH, то расшифрованный текст будет TREE («Дерево»). В случае с только что описанным шифром Цезаря криптоаналитик, который перехватил сообщение и знает используемый алгоритм, но не знает ключ к шифру, должен будет перебрать все возможные сдвиги алфавита, пока не найдет сообщение, имеющее смысл. Для этого он должен будет, в худшем случае, попробовать все возможные ключи или сдвиги. В алфавите, состоящем из n букв, существует n возможных сдвигов, то есть n ключей.

* * *

ШИФРЫ В ФИЛЬМАХ

В классическом научно-фантастическом фильме режиссера Стэнли Кубрика по мотивам повести Артура Кларка «Космическая одиссея 2001 года» (1968) наделенный сознанием суперкомпьютер космического корабля HAL 9000 сходит с ума и пытается убить человеческий экипаж.

Теперь предположим, что слово HAL закодировано шифром Цезаря со сдвигом на одну позицию. Тогда буква Н соответствует букве I, А соответствует В, a L – букве М; другими словами, получается IBM, в то время крупнейший в мире производитель компьютеров. О чем пытался рассказать этот фильм: об опасностях искусственного интеллекта или об угрозах бесконтрольной коммерческой монополии? Или это просто совпадение?


Всевидящий глаз компьютера HAL 9000 из фильма «Космическая одиссея 2001 года»

16 = 4. Модульная арифметика и математика шифра Цезаря

16 = 4? 2 = 14? Это не ошибка и не какая-то странная система счисления. Работа шифра Цезаря может быть проиллюстрирована теорией, которая привычна для математики и в еще большей степени для криптографии – модульной арифметикой, иногда называемой часовой арифметикой. Эта теория появилась еще в работах греческого математика Евклида (325–265 гг. до н. э.) и является одной из основ современной информационной безопасности. В этом параграфе мы расскажем о базовых математических понятиях, связанных с этим особым типом арифметики.

Возьмите в качестве примера обычные часы со стрелками и сравните их с цифровыми часами. На часах со стрелками циферблат разделен на 12 частей, которые мы обозначим числами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, И. В следующей таблице можно видеть, как время на аналоговом циферблате соответствует времени после полудня на экране цифровых часов.



Когда мы говорим, например, что сейчас 14:00, мы можем также сказать, что сейчас два часа дня. Тот же принцип применяется и в случае измерения углов. Угол в 370 градусов равен углу в 10 градусов, потому что от первого значения мы должны вычесть полный оборот в 360 градусов. Заметим, что 370 = (1 х 360) + 10, то есть 10 является остатком от деления 370 на 360. Какой угол эквивалентен углу в 750 градусов? Вычитая соответствующее количество полных оборотов, мы получим, что угол в 750 градусов равен углу в 30 градусов. Мы видим, что 750 = (2 х 360) + 30, то есть 30 является остатком от деления 750 на 360. В математике это обозначается так:

750

 30 (mod 360)

Мы говорим: «750 сравнимо с 30 по модулю 360». В случае с часами мы бы написали

14

 2 (mod 12).

Мы также можем представить себе часы с отрицательными числами. В этом случае который будет час, когда стрелка показывает на —7? Или, другими словами, с каким числом сравнимо число —7 по модулю 12? Давайте посчитаем, учитывая, что на наших часах с циферблатом, разделенным на 12 частей, значение 0 соответствует 12.

– 7 = —7 + 0 = —7 + 12 = 5.

* * *

ОТЕЦ АНАЛИТИЧЕСКОЙ КРИПТОГРАФИИ

Основная работа Евклида Александрийского, «Начала», состоит из 13 томов, в которых излагаются основные факты планиметрии, теории пропорций, свойства чисел, сведения об иррациональных числах и стереометрии. Чаще всего ассоциируемые с этой последней теорией, работы греческого математика, связанные с арифметическими операциями на конечных числовых множествах, или операциями по модулю, являются одним из столпов современной теории криптографии. Известные и почитаемые еще арабскими учеными, работы Евклида впервые были изданы в Венеции в 1482 г. Вовсе не случайно, что и арабы, и венецианцы были великими мастерами криптографии.

* * *

ОПЕРАЦИИ ПО МОДУЛЮ

Как посчитать 231 по модулю 17 на калькуляторе?

Сначала мы разделим 231 на 17 и получим 13,58823529.

Затем найдем произведение 13 x 17 = 221. Таким образом мы избавимся от дробной части.

Наконец, найдем разность 231–221 = 10, получив остаток отделения.

Итак, 231 по модулю 17 равно 10. Этот результат записывается как 231  10 (mod 17).

* * *

Математика для расчетов на наших часах со стрелками, циферблат которых разделен на 12 частей, называется арифметикой по модулю 12. В общем случае мы говорим, что

b (mod m), если остаток от деления а на m равен b, при условии что а, b и m – целые числа. Число b сравнимо с остатком от деления а на m. Следующие утверждения эквивалентны:

b (mod m)

a (mod m)

а – b  0 (mod m)

а b кратно m

Вопрос «Которому часу на часах со стрелками соответствует время 19 часов?» эквивалентен в математических терминах следующему вопросу: «С каким числом сравнимо число 19 по модулю 12?» Чтобы ответить на этот вопрос, мы должны решить уравнение

19 

х (mod 12).

Разделив 19 на 12, мы получим частное 1 и остаток 7, поэтому

19 

7 (mod 12).

А в случае 127 часов? Разделив 127 на 12, мы получим частное 10 и остаток 7, поэтому

127 

7 (mod 12).

Чтобы повторить изученное до сих пор, давайте рассмотрим следующие операции по модулю 7:

(1) 3 + 3  6

(2) 3 + 14  3

(3) 3 х 3 = 9  2

(4) 5 x 4 = 20  6

(5) 7  0

(6) 35  0

(7) -44 = -44 + 0 = -44 + 7 х 7  5

(8) -33 = -33 + 0 = -33 + 5 x 7  2

(1) 6 меньше, чем модуль, поэтому не меняется

(2) 3 + 14 = 17; 17: 7 = 2 и в остатке 3.

(3) 3 X 3 = 9; 9: 7 = 1 и в остатке 2.

(4) 5 х 4 = 20; 20: 7 = 2 и в остатке 6.

(5) 7 = 7; 7: 7 = 1 и в остатке 0.

(6) 35 = 35; 35: 7 = 5 и в остатке 0.

(7) -44 = -44 + 0; 44 + 7 х 7  5.

(8) -33 = -33 + 0; -33 + 5 x 7  2.

* * *

ТАБЛИЦА УМНОЖЕНИЯ ПО МОДУЛЮ 5 В EXCEL



Построить такую и подобные таблицы очень легко даже с базовыми знаниями офисной программы Excel. В нашем случае синтаксис функций для ячеек Excel (для столбцов и строк на нашем компьютере) показан ниже. Действие «остаток отделения числа на 5» переводится на язык Excel как «=ОСТАТ(число;5)». Конкретная операция по нахождению произведения 4 на 3 по модулю 5 записывается как «=ОСТАТ (4∙3;5)» и дает результат 2. Подобные таблицы очень помогают в расчетах по модульной арифметике.


* * *

Какая связь между модульной арифметикой и шифром Цезаря? Чтобы ответить на этот вопрос, мы запишем в таблице стандартный алфавит и алфавит со сдвигом на три буквы, добавив титульный ряд из 26 чисел.


Мы видим, что зашифрованное значение буквы под номером х (в стандартном алфавите) является буквой, стоящей на позиции х + 3 (также в стандартном алфавите). Поэтому необходимо найти преобразование, которое каждому числу ставит в соответствие число, сдвинутое на три единицы, и взять результат по модулю 26.

Заметим, что 3 является ключом нашего шифра. Таким образом, наша функция записывается как

C(х) = + 3) (mod 26),

где х – изначальное значение, а С(х) – зашифрованное значение. Теперь достаточно подставить вместо буквы ее числовое значение и применить трансформацию.

Возьмем в качестве примера слово PLAY и зашифруем его.

Буква Р стоит на позиции 15, С(15) = 15 + 3  18 (mod 26), а число 18 соответствует букве S.

Буква L стоит на позиции 11, С(11) = 11 + 3  14 (mod 26), а число 14 соответствует букве О.

Буква А стоит на позиции 0, С(0) = 0 + 3  3 (mod 26), а число 3 соответствует букве D.

Буква Y стоит на позиции 24, С (24) = 24 + 3 = 27  1 (mod 26), а число 1 соответствует букве В.

Таким образом, слово PLAY, зашифрованное с ключом 3, превратится в слово SODB.

В общем случае, если х означает позицию буквы, которую мы хотим зашифровать (0 для А, 1 для В, и т. д.), позиция зашифрованной буквы [обозначаемая С(х)] выражается формулой

С(х) = + k) (mod n),

где n – длина алфавита (26 в английском алфавите), a k – ключ, используемый в данном шифре.

Расшифровка такого сообщения включает в себя расчеты, обратные тем, что использовались для шифрования. В нашем примере расшифровка означает применение формулы, обратной той, что использовалась выше:

С-1(х) =k) (mod n).

В случае сообщения SODB, зашифрованного шифром Цезаря с ключом 3 с применением английского алфавита, то есть k = 3 и n = 26, мы получим:

С-1(х) = 3) (mod 26).

Применим эту формулу следующим образом:

Для S: х = 18, С-1(18) = 18 – 3  15 (mod 26), что соответствует букве Р.

Для О: х = 14, С-1(14) = 14 – 3  11 (mod 26), что соответствует букве L.

Для D: х = 3, С-1(3) = 3–3  0 (mod 26), что соответствует букве А.

Для В: x = 1, С-1(1) = 1–3 = —2 + 26  24 (mod 26), что соответствует букве Y.

Сообщение SODB, зашифрованное шифром Цезаря с ключом 3, соответствует, как мы уже знаем, оригинальному тексту PLAY.

В заключении нашего первого знакомства с математикой криптографии мы рассмотрим новое преобразование, известное как аффинный шифр, частным случаемкоторого является шифр Цезаря. Оно определяется следующим образом:

С(a,Ь)(x) =х + b) (mod n),

где а и b – два целых числа, меньших, чем число (n) букв в алфавите. Наибольший общий делитель (НОД) чисел а и n должен быть равен 1 [НОД (а, n) = 1], потому что иначе, как мы увидим позже, получится несколько возможностей для шифрования одной и той же буквы. Ключ шифра определяется парой (а, Ь). Шифр Цезаря с ключом 3 является, следовательно, аффинным шифром со значениями

а = 1 и b = 3.

Обобщенный аффинный шифр имеет более высокий уровень безопасности, чем обычный шифр Цезаря. Почему? Как мы видели, ключом аффинного шифра является пара чисел (а, b). Если сообщение написано с использованием алфавита из 26 букв и зашифровано с помощью аффинного шифра, то и а, и b могут принимать любые значения от 0 до 25. Таким образом, в этой системе шифрования с алфавитом из 26 букв возможное количество ключей составит 25 х 25 = 625. Заметим, что количество ключей для алфавита из n букв в n раз больше, чем в шифре Цезаря.

Это значительное улучшение, но аффинный шифр все еще возможно расшифровать методом перебора всех возможных вариантов.

* * *

НАИБОЛЬШИЙ ОБЩИЙ ДЕЛИТЕЛЬ (НОД)

Наибольший общий делитель двух чисел может быть найден с помощью алгоритма Евклида. Этот алгоритм заключается в делении одного числа на другое, а затем проведении последовательных делений предыдущего делителя на новый остаток. Процесс заканчивается, когда остаток равен 0. Делитель последней операции деления и будет наибольшим общим делителем данных чисел.

Например, найдем НОД (48,30).

Разделим 48 на 30, получим остаток 18 и частное 1.

Разделим 30 на 18, получим остаток 12 и частное 1.

Разделим 18 на 12, получим остаток 6 и частное 1.

Разделим 12 на 6, получим остаток 0 и частное 2.

Мы закончили алгоритм.

НОД (48,30) = 6.

Если НОД (а, n) = 1, мы говорим, что а и n взаимно просты.

Соотношение Везу, имеющее большое значение в криптографии, устанавливает следующий факт: для двух целых чисел а и n, больших нуля, существуют целые числа k и q, такие что НОД (а, n) =+ nq.


Игра в шпионов

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


Текст будет зашифрован с помощью аффинного шифра C(x) = 2x + 1 (mod 6).

Буква А зашифрована по формуле С(0) = 2 х 0 + 1  1 (mod 6), что соответствует букве В.

Буква В зашифрована по формуле C(1) = 2 x 1 + 1  3 (mod 6), что соответствует букве D.

Буква С зашифрована по формуле С(2) = 2 х 2 + 1  5 (mod 6), что соответствует букве F.

Буква D зашифрована по формуле С(3) = 2 х З + 1 = 7  1 (mod 6), что соответствует букве В.

Буква Е зашифрована по формуле С(4) = 2 х 4 + 1 = 9  3 (mod 6), что соответствует букве D.

Буква F зашифрована по формуле С(5) = 2 х 5 + 1 = 11  5 (mod 6), что соответствует букве F.

Предлагаемый аффинный шифр преобразует сообщения АВС и DEF в одно и то же BDF, поэтому исходное сообщение теряется. Что же случилось?

Если мы работаем с шифром, выраженным формулой С(а, b)(х) =х + b) (mod n), мы можем расшифровать сообщение однозначно, только когда НОД (а, n) = 1. В нашем примере НОД (2, 6) = 2 и, следовательно, не удовлетворяет этому условию.

Математическая операция расшифровки эквивалентна нахождению неизвестного х при данном значении у по модулю n.

С(а, b)(х) = (ах + b) y (mod n)

(ах + b) = у (mod n)

ах у b (mod n)

Другими словами, нам нужно найти значение а-1 (обратное значению а), удовлетворяющее равенству а-1а = 1, так что

а-1ах = а-1х(у b)(mod n)

х = а-1 b)(mod n).

Следовательно, для успешной расшифровки мы должны найти число, обратное числу а по модулю n, и, чтобы не тратить зря время, мы должны заранее знать, существует ли это обратное число.

В случае аффинного шифра С(а, b)(х) = (ах + b) (mod n) обратное значение числа а будет существовать тогда и только тогда, когда НОД (а, n) = 1.

В случае аффинного шифра в нашем примере, С(х) =+ 1 (mod 6), мы хотим узнать, существует ли обратное значение для числа а, в нашем случае для числа 2.

То есть существует ли целое число n, которое меньше 6 и удовлетворяет выражению 2∙n = 1 (mod 6). Для ответа на этот вопрос мы подставим в данное выражение все возможные значения (0, 1, 2, 3, 4, 5):

2-0 = 0, 2–1 = 2, 2–2 = 4, 2–3 = 6  0, 2–4 = 8  2, 2–5 = 10  4.

Нет такого значения, следовательно, можно заключить, что 2 не имеет обратного числа. На самом деле мы это уже знали, так как НОД (2,6)  1.

Предположим теперь, что мы перехватили зашифрованное сообщение: YSFMG. Мы знаем, что оно было зашифровано аффинным шифром вида С(х) = 2х + 3 и изначально было написано на испанском языке с алфавитом из 27 букв (включая букву N, идущую после обычной N).

Как получить исходное сообщение?

Сначала мы посчитаем НОД (2,27), который равен 1. Значит, сообщение можно расшифровать! Для этого для функции С(х) = 2х + 3 мы должны найти обратную функцию по модулю 27:

у = + 3

= у 3.

Чтобы найти x, мы должны умножить обе части уравнения на число, обратное 2.

Число, обратное числу 2 по модулю 27, – это целое число n такое, что 2n  1 (mod 27), а именно 14. И действительно:

14∙2 = 28  1.

Итак, мы имеем

x = 14∙(у 3).

Теперь мы можем расшифровать сообщение YSFMG.

Буква Y стоит на позиции 25, ей соответствует расшифрованная буква, стоящая на позиции

14∙(25—3) = 308  11 (mod 27).

Буква, стоящая в алфавите на позиции 11, – это L.

Для буквы S имеем 14∙(19—3) = 224  8 (mod 27), эта позиция соответствует букве I.

Для буквы F имеем 14∙(5–3) = 28  1 (mod 27), что соответствует букве В.

Для буквы М имеем 14∙(12—3) = 126  18 (mod 27), что соответствует букве R.

Для буквы G имеем 14∙(6–3) = 42  15 (mod 27), что соответствует букве О.

Расшифрованное сообщение является испанским словом LIBRO, что означает «книга».


За пределами аффинного шифра

Различные системы безопасности на протяжении многих веков использовали идею Цезаря и ее обобщение в виде аффинного шифра. В настоящее время любой шифр, в котором каждая буква исходного сообщения заменяется на другую букву, сдвинутую на фиксированное число позиций (не обязательно три), называется шифром Цезаря.

Одним из существенных достоинств хорошего алгоритма шифрования является способность генерировать большое количество ключей. И шифр Цезаря, и аффинный шифр уязвимы для криптоанализа, поскольку максимальное количество ключей ограничено.

Если мы снимем какие-либо ограничения относительно порядка букв шифроалфавита, то потенциальное количество ключей резко возрастет. Количество ключей для стандартного алфавита из 26 символов (расположенных в произвольном порядке) составляет 26! = 403291461126605635584000000, то есть более 403 септиллионов ключей. Криптоаналитику, который тратит на проверку одного ключа всего лишь одну секунду, потребуется в миллиард раз больше времени, чем ожидаемое время существования Вселенной, чтобы исчерпать все возможности!

Вот один из примеров такого обобщенного шифра подстановки:


Строка (1) – алфавит открытого сообщения. Строка (2) – шифроалфавит.

Первые шесть букв шифроалфавита дают подсказку к выбранному порядку букв: он соответствует порядку букв на клавиатуре в стандарте 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 г. Хотя он был астрономом, врачом, математиком и лингвистом, прославился он как создатель манускрипта по криптоанализу.


    Ваша оценка произведения:

Популярные книги за неделю