Криптология: подстановочно-перестановочный шифр и его применение

Седьмая научная конференция молодых исследователей

«Шаг в будущее, Москва»


регистрационный номер

информационная безопасность

криптография:

подстановочно - перестановочный шифр и его применение

Автор: Калашников Алексей Александрович,

Школа №1959, 11 класс «А»

Научный руководитель: Троицкий Игорь Иванович, доцент

Кафедры «Информационная

Безопасность»(ИУ-8), МГТУ им. Н. Э.

Баумана, кандидат технических наук.

Москва - 2004

Содержание:

Появление шрифтов………………………….…..…….….стр.3

Становление науки криптологии…………………………стр.3

Криптология в новое время…………….…………...……..стр.12

Шифр Цезаря……………………………….…………..…..стр.15

-Программный код………………………...……..…….стр.15

Появление шифров

Ряд систем шифрования дошел до нас из глубокой древности. Скорее всего, они появились одновременно с письменностью в 4 тысячелетии до нашей эры. Методы секретной переписки были изобретены независимо во многих древних обществах, таких как Египет, Шумер и Китай, но детальное состояние криптологии в них неизвестно. Криптограммы выискиваются даже в древние времена, хотя из-за применяемого в древнем мире идеографического письма в виде стилизованных картинок были примитивны. Шумеры, по-видимому, пользовались тайнописью. Археологами найдены глиняные клинописные таблички, где первая запись замазывалась слоем глины, на котором делалась вторая запись. Происхождение таких странных таблиц могло быть вызвано и тайнописью, и утилизацией. Оттого что число знаков идеографического письма было более тысячи, то запоминание их представляло собой трудную задачу - тут не до шифрования. Тем не менее, коды, появившиеся вместе со словарями, были хорошо известны в Вавилоне и Ассирии, а древние египтяне применяли, по меньшей мере, 3 системы шифрования. С развитием фонетического письма письменность резко упростилась. В древнем семитском алфавите во 2-м тысячелетии до нашей эры было всего около 30 знаков. Ими обозначались согласные звуки, а также некоторые гласные и слоги. Упрощение письма стимулировало развитие криптографии.

Даже в Библии можно найти примеры шифровок, хотя мало кто это замечает. В книге пророка Иеремии (25,26) читаем: "...а царь Сессаха выпьет после них". Такого царя или царства не было - неужели ошибка писца? Нет, просто порой священные иудейские тексты шифровались простой заменой. Вместо первой буквы алфавита писалась последняя, вместо второй - предпоследняя и так далее. Этот древний метод шифрования назывался атбаш. Читая по нему слово СЕССАХ, на языке оригинала получаем слово ВАВИЛОН, и смысл библейского текста может быть принят даже не верящим слепо в истинность писания.

Вот что об этом сообщает Гай Светоний: "Существуют и его письма к Цицерону и письма к близким о домашних делах: в них, если нужно было сообщить что-нибудь негласно, он пользовался тайнописью, то есть менял буквы так, чтобы из них не складывалось ни одного слова. Чтобы разобрать и прочитать их, нужно читать всякий раз четвертую букву вместо первой, например, D вместо А и так далее". Это означает, что каждая буква шифровки заменялась четвертой по счету от нее в алфавите: А-В-С-D, или D вместо А. Послание сенату VENI VIDI VICI, то есть ПРИШЕЛ, УВИДЕЛ, ПОБЕДИЛ, сделанное Цезарем после однодневной войны с понтийским царем Фарнаком, выглядело бы шифровкой SBKF SFAF SFZF.

Принципиально иной шифр, более древний, связан с перестановкой букв сообщения по определенному, известному отправителю и получателю правилу. Древние рассказывали: какой-то хитрец из спартанцев обнаружил, что если полоску пергамента намотать спиралью на палочку и написать на нем вдоль палочки текст сообщения, то, после снятия полоски буквы на ней расположатся хаотично. Это то же самое, будто буквы писать не подряд, а через условленное число по кольцу до тех пор, пока весь текст не будет исчерпан. Сообщение ВЫСТУПАЙТЕ при окружности палочки в 3 буквы даст шифровку ВУТЫПЕСАТЙ. Текст ее не понятен, не так ли?

Для прочтения шифровки нужно не только знать систему засекречивания, но и обладать ключом в виде палочки, принятого диаметра. Зная тип шифра, но, не имея ключа, расшифровать сообщение было сложно. Этот шифр именовался скитала по названию стержня, на который наматывались свитки папируса, что указывает на его происхождение. Он был весьма популярен в Спарте и много раз совершенствовался в позднейшие времена. О его важном значении и большом распространении говорит свидетельство Плутарха в "Сравнительных жизнеописаниях", когда историк сообщает о жизни греческого полководца Алкивиада: "Однако Лисандр обратил внимание на эти слова не раньше, чем получил из дома скиталу с приказанием отделаться от Алкивиада..."

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

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

Приборы для шифрования тоже существовали с древних времен. Спарта, наиболее воинственная из греческих государств, имела хорошо проработанную систему секретной военной связи еще в V веке до нашей эры. С помощью скитала, первого известного криптографического устройства, спартанские эфоры (эфоры - члены коллегиального правительства Спарты.) шифровали послания, используя метод простой перестановки. Ленивые и оттого юбретательные римляне в IV веке до нашей эры, чтобы упростить процедуру шифрования, стали применять шифрующие диски. Каждый из 2 дисков, помещенных на общую ось, содержал на ободе алфавит в случайной последовательности. Найдя на одном диске букву текста, с другого диска считывали соответствующую ей букву шифра. Такие приборы, порождающие шифр простой замены. Использовались вплоть до эпохи Возрождения. Для связи греки и римляне использовали код на основе полибианского квадрата с естественным заполнением алфавитом. Буква кодировалась номером строки и столбца, соответствующим ей в квадрате. Сигнал подавался ночью факелами, а днем флагами.

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

Становление науки криптологии

В ручных шифрах того времени часто используются таблицы, которые дают простые шифрующие процедуры перестановки букв в сообщении. Ключом в них служат размер таблицы, фраза, задающая перестановку или специальная особенность таблиц. Простая перестановка без ключа - один из самых простых методов шифрования, родственный шифру скитала. Например, сообщение НЕЯСНОЕ СТАНОВИТСЯ ЕЩЕ БОЛЕЕ НЕПОНЯТНЫМ записывается в таблицу по столбцам. Для таблицы из 5 строк и 7 столбцов это выглядит так:



Н О Н С Б Н Я

Е Е О Я О Е Т

Я С В Е Л П Н

С Т И Щ Е О Ы

Н А Т Е Е Н М

После того, как открытый текст записан колонками, для образования шифровки он считывается по строкам. Если его записывать группами по 5 букв, то получится: НОНСБ НЯЕЕО ЯОЕТЯ СВЕЛП НСТИЩ ЕОЫНА ТЕЕНМ. Для использования этого шифра отправителю и получателю нужно договориться об общем ключе в виде размера таблицы. Объединение букв в группы не входит в ключ шифра и используется лишь для удобства записи несмыслового текста.

Более практический метод шифрования, называемый одиночной перестановкой по ключу очень похож на предыдущий. Он отличается лишь тем, что колонки таблицы переставляются по ключевому слову, фразе или набору чисел длиной в строку таблицы. Использовав в виде ключа слово ЛУНАТИК, получим такую таблицу.

Л У Н А Т И К

4 7 5 1 6 2 3

Н О Н С Б Н Я

Е Е О Я О Е Т

Я С В Е Л П Н

С Т И Щ Е О Ы

Н А Т Е Е Н М

до перестановки

А И К Л Н Т У

1 2 3 4 5 6 7

С Н Я Н Н Б О

Я Е Т Е О О Е

Е П Н Я В Л С

Щ О Ы С И Е Т

Е Н М Н Т Е А

после перестановки

В верхней строке ее записан ключ, а номера под ключом определены по естественному порядку соответствующих букв ключа в алфавите. Если в ключе встретились бы одинаковые буквы, они бы нумеровались слева направо. Получается шифровка: СНЯНН БОЯЕТ ЕООЕЕ ПНЯВЛ СЩОЫС ИЕТЕН МНТЕА. Для дополнительной скрытности можно повторно шифровать сообщение, которое уже было зашифровано. Этот способ известен под названием двойная перестановка. Для этого размер второй таблицы подбирают так, чтобы длины ее строк и столбцов были другие, чем в первой таблице. Лучше всего, если они будут взаимно простыми. Кроме того, в первой таблице можно переставлять столбцы, а во второй строки. Наконец, можно заполнять таблицу зигзагом, змейкой, по спирали или каким-то другим способом. Такие способы заполнения таблицы если и не усиливают стойкость шифра, то делают процесс шифрования гораздо более занимательным.

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





2 4 1 3

4 П P И Е

1 3 Ж A Ю

2 Ш Е С

3 Т О Г О

исходная

таблица

1 2 3 4

4 И П Е Р

1 A 3 Ю Ж

2 Е С Ш

3 Г Т О О

перестановка

столбцов

1 2 3 4

1 A 3 Ю Ж

2 Е С Ш

3 Г Т О О

4 И П Е Р

перестановка

строк

Получается шифровка АЗЮЖЕ СШГТООИПЕР. Ключом к этому шифру служат номера столбцов 2413 и номера строк 4123 исходной таблицы. Число вариантов двойной перестановки тоже велико: для таблицы 3х3 их 36, для 4х 4 их 576, а для 5 х 5 их уже 14400. Однако двойная перестановка очень слабый вид шифра, легко читаемый при любом размере таблицы шифрования.

Выдающимся английским философом и изобретателем Роджером Бэконом, предвосхитившим многие позднейшие открытия (наиболее значительное из его изобретений - очки, которые он предложил в 1268 году), был найден состав черного пороха. Так почему же традиционно считают его изобретателем Бертольда Шварца, по преданиям казненного императором Венцеславом на пороховой бочке? Карамзин по этому поводу писал: "Нет сомнения, что и монах Рогер Бакон за 100 лет до Бертольда Шварца умел составлять порох: ибо ясно говорит в своем творении de nulitate Magiae о свойстве и силе оного". Дело в том, что средневековые ученые, сделав открытие, отнюдь не всегда спешили его опубликовать в письмах коллегам, как это было тогда принято при отсутствии периодических научных изданий. Нередко ту часть открытия, которую теперь называют know how, они шифровали анаграммой, переставляя буквы сообщения по известному только им ключу. Например, названия древней и современной столиц Японии в русском написании тоже представляют собой анаграмму: КИОТО - ТОКИО.

В упомянутом труде Бэкона состав пороха был приведен в виде зашифрованной анаграммы, которую до появления сверхбыстродействующих ЭВМ не удавалось вскрыть, и слава открытия поэтому приписывалась Шварцу. Гораздо более сложная проблема возникает с приписываемым Галилео Галилею открытием спутников Юпитера. Долгое время приведенная им анаграмма читалась так: "Высочайшую планету двойною наблюдал", но в 1960-х годах с применением компьютеров при расшифровке был получен иной вариант прочтения: "Привет вам, близнецы, Марса порождение!" Конечно, открытие Фобоса и Деймоса на слабеньком телескопе за два с половиной столетия до американца Асафа Холла - событие мало реальное, но кто знает? Описал же Свифт в "Путешествиях Гулливера" спутники Марса за полтораста лет до астрономов с поразительной точностью! Может быть Свифт знал результаты Галилея, которые сейчас неизвестны? Шифры перестановки чрезвычайно коварны в том смысле, что могут дать несколько вариантов осмысленного прочтения, если не знать точного значения ключа.

Какие же шифры применялись еще средневековыми учеными? На известной гравюре Дюрера "Меланхолия" позади грустящего ангела изображен магический квадрат, заполненный цифрами. Магическими квадратами называются квадратные таблицы со вписанными в их клетки последовательными натуральными числами от 1, которые дают в сумме по каждому столбцу, каждой строке и каждой диагонали одно и то же число. Подобные квадраты широко применялись для вписывания шифруемого текста по приведенной в них нумерации. Если потом выписать содержимое таблицы по строкам, то получалась шифровка перестановкой букв. Считалось, что созданные с их помощью шифровки охраняет не только ключ, но и магическая сила. Вот пример магического квадрата и его шифровки:

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

О И Р Т

З Ш Е Ю

Ж А С

Е Г О П

Полученная из ПРИЕЗЖАЮ ШЕСТОГО, шифровка ОИРТЗШЕЮ ЖАСЕГОП представляется довольно основательной. На первый взгляд кажется, будто магических квадратов очень мало. Тем не менее их число очень быстро возрастает с увеличением размера квадрата. Так, существует лишь один магический квадрат размером 3 х 3, если не принимать во внимание его повороты. Магических квадратов 4 х 4 насчитывается уже 880, а число магических квадратов размером 5 х 5 около 250000. Поэтому магические квадраты больших размеров могли быть хорошей основой для надежной системы шифрования того времени, потому что ручной перебор всех вариантов ключа для этого шифра был немыслим.

Широкое развитие торговли в средние века потребовало специфических шифров, предельно простых и удобных, которыми могли бы пользоваться купцы для передачи, например, даты приезда или цены товара. Это были простые шифры замены цифр на буквы, основанные на ключевом слове. Собственно, это коды, а не шифры - вспомните обозначение месяцев на банках консервов, но код, примененный единожды с неизвестной таблицей кодирования, схож по свойствам с шифром. Торговцы заранее договаривались использовать общее ключевое слово, буквы которого соответствовали бы цифрам. Например, для ключа РЕСПУБЛИКА цифра 0 означает букву Р, цифра 1 означает Е, 2 - С, 3-Н и так далее. Поэтому, получив от корреспондента сообщение, ПРИБЫВАЮ ЕЛРПАС, они его читали, как ПРИБЫВАЮ 16/03/92. Простота и удобство этой системы шифрования позволили ей дожить до начала этого века без всяких изменений.

Другой шифр, обычно называемый шифром Гронсфельда, состоит в модификации шифра Цезаря числовым ключом. Для этого под сообщением пишут ключ. Если ключ короче сообщения, то его повторяют циклически. Шифровку получают будто в шифре Цезаря, но отсчитывая необязательно только третью букву по алфавиту, а ту, которая сдвинута на соответствующую цифру ключа. Так, применяя в качестве ключа группу из трех начальных цифр числа "пи", а именно 314, получаем шифровку:



сообщение СОВЕРШЕННО СЕКРЕТНО

ключ 3143143143143143143

шифровка ФПЖИСЬИОССАХИЛФИУСС

Чтобы зашифровать первую букву сообщения С используя первую цифру ключа 3, отсчитывается третья по порядку от С в алфавите буква С-Т-У-Ф и получается буква шифровки Ф. Разновидность этого шифра была применена в резидентном англо-русском словаре, составленном студентами МВТУ, и взломка его доставила слушателям лекций по программированию не меньше удовольствия, чем разгадывание кроссворда. Шифр Гронсфелвда имеет массу модификаций, претендующих на его улучшение, от курьезных, вроде записи текста шифровки буквами другого алфавита, до нешуточных, как двойное шифрование разными ключами. Кроме этих шифров, зачастую использовался шифр простой замены, заключающийся в замене каждой буквы сообщения на соответствующую ей букву шифра. Такой шифр, популярный среди школьников, является простым кодом и вскрытие его возможно при длине шифровки всего в 20-30 букв, а при длинах текста свыше 100 символов представляет собой очень простую, но весьма увлекательную задачу приведенную ниже. А сейчас рассмотрим рождение шифра сложной замены, шифры сложной замены называют многоалфавитными, так как для шифрования каждого символа исходного сообщения применяется свой шифр простой замены. Шифр Гронсфельда тоже многоалфавитный шифр (в нем 10 вариантов замены), который используется по сей день.

Архитекторы и исследователи Италии эпохи Возрождения считают, что один из самых важных этапов ренессансной архитектуры связан с именем Леона Батиста Альберти, написавшем десять книг о зодчестве, построившим палаццо Ручеллаи, церковь Иль Джезу и ряд других замечательных произведений зодчества средневековой Италии. Будучи теоретиком искусства, он обобщил опыт гуманистической науки в изучении античного наследия, написав ряд трактатов: "О статуе", "О живописи", "О зодчестве". С другой стороны, криптологи всего мира почитают его отцом своей науки. Главным достижением Альберти в криптологии было изобретение многоалфавитной замены, сделавших шифровку очень устойчивой к вскрытию. Кроме самого шифра он еще подробно описал устройства из вращающихся колес для его реализации. Этот шифр можно описать таблицей шифрования, иногда называемой таблицей Виженера, по имени Блеза Виженера, дипломата XVI века, который развивал и совершенствовал криптографические системы:

АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ

А АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ

Б _АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ

В Я_АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮ

Г ЮЯ_АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭ

.......

Я ВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ_АБ

_ БВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ_А

Каждая строка в этой таблице соответствует одному шифру замены вроде шифра Юлия Цезаря для алфавита, дополненного пробелом. При шифровании сообщения его выписывают в строку, а под ним ключ. Если ключ оказался короче сообщения, то его циклически повторяют. Шифровку получают, находя символ в колонке таблицы по букве текста и строке, соответствующей букве ключа. Этот очень распространенный вид шифра сохранился до наших дней. Например, используя ключ АГАВА, из сообщения ПРИЕЗЖАЮ ШЕСТОГО получаем следующую шифровку:

сообщение: ПРИЕЗЖАЮ ШЕСТОГО

ключ: АГАВААГАВААГАВАА

шифровка: ПНИГЗЖЮЮЮАЕОТМГО

В компьютере такая операция соответствует сложению кодов ASCII символов сообщения и ключа по некоторому модулю. Кажется, что если таблица будет более сложной, чем циклическое смещение строк, то шифр станет надежнее. Это действительно так, если ее менять почаще, например, от слова к слову. Но составление таких таблиц, представляющих собой латинские квадраты, где любая буква встречается в строке или столбце один раз, трудоемко и его стоит делать лишь на ЭВМ. Для ручного же многоалфавитного шифра полагаются лишь на длину и сложность ключа, используя приведенную таблицу, которую можно не держать в тайне, а это упрощает шифрование и расшифровывание. Итак, помимо ряда строений в античной манере, являющихся шедеврами архитектуры итальянского Возрождения, Альберти еще ввел в практику криптографии многоалфавитные шифры замены. Его книга "Трактат о шифре", написанная в 1466 году, представляла собой первый в мире научный труд по криптологии, если не считать арабских рукописей, с которыми Европа в это время вряд ли была хорошо знакома.

Многие историки считают Иоганна Трисемуса, аббата из Германии, вторым отцом современной криптологии. В 1508 году Трисемус написал "Полиграфию", первую печатную работу по криптологии. В ней он первым систематически описал применение шифрующих таблиц, заполненных алфавитом в случайном порядке. Для получения такого шифра обычно использовались ключевое слово или фраза и таблица, которая для русского языка может иметь размер 5 х 6. Ключевое слово вписывалось в таблицу по строкам, а повторяющиеся буквы отбрасывались. Таблица дозаполнялась не вошедшими в нее буквами алфавита по порядку. Поскольку ключевое слово легко хранить в памяти, то такой подход упрощал процессы шифрования и дешифрования. Для ключа РЕСПУБЛИКА таблица будет иметь следующий вид:

Р Е С П У Б

Л И К А В Г

Д Ж 3 М Н О

Т Ф Х Ц Ч Ш

Щ Ь Ы Э Ю Я

Для описанного выше шифра Полибия с данной таблицей сообщение ОТПЛЫВАЕМ давало шифровку ШЩАДСНМИЦ. Такие табличные шифры называются монограммными, так как шифрование ведется по одной букве. Трисемус первым заметил, что можно шифровать по две буквы за раз. Такие шифры были названы биграммными. Наиболее известный шифр биграммами называется Playfair. Он применялся Великобританией в Первую мировую войну. Опишем его на примере той же самой таблицы. Открытый текст разбивался на пары букв (биграммы) и текст шифровки строился из него по следующим двум очень простым правилам.

    Если обе буквы биграммы исходного текста принадлежали одной колонке таблицы, то буквами шифра считались буквы, которые лежали под ними. Так биграмма УН давала текст шифровки ВЧ. Если буква открытого текста находилась в нижнем ряду, то для шифра бралась соответствующая буква из верхнего ряда и биграмма ОЯ давала шифр ШБ. (Биграмма из одной буквы или пары одинаковых букв тоже подчинялась этому правилу и текст ЕЕ давал шифр ИИ).

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

Если обе буквы биграммы открытого текста лежали в разных рядах и колонках, то вместо них брались такие две буквы, чтобы вся четверка их представляла прямоугольник. При этом последовательность букв в шифре была зеркальной исходной паре. Например, СТ шифровалось как РХ, а ТБ шифровалось как ШР. При шифровании фразы ПУСТЬ КОНСУЛЫ БУДУТ БДИТЕЛЬНЫ по биграммам получается такая шифровка:

ПУ СТ ЬК ОН СУ ЛЫ БУ ДУ ТБ ДИ ТЕ ЛЬ НЫ

УБ РХ ЫИ ДО ПБ КЩ РБ HP ШР ЖЛ ФР ИЩ ЗЮ

Шифрование биграммами резко усилило стойкость шифров к вскрытию. При всем при том, что "Полиграфия" была довольно доступной печатной книгой, описанные в ней идеи получили признание лишь тремя веками позже. Скорее всего, это вызвано плохой известностью среди криптографов Трисемуса, который слыл богословом, библиофилом и основателем архивного дела. Среди шифров средневековья встречается много курьезов. Леонардо да Винчи шифровал большинство своих личных записей. Самый простой вид шифра, которым он пользовался, это обратное написание текста так, что прочесть его можно лишь в отражении зеркала. Однако Леонардо иногда использовал шифры и посерьезнее, поэтому далеко не все его заметки и записи расшифрованы и изучены. Люди, умеющие писать левой рукой справа налево зеркальный текст, нередки. Изумительно, но встречаются люди, которые умеют даже произносить фразы "наоборот" и понимать их на слух. Поистине, человеческим способностям нет и не будет предела. В средние века появляются профессиональные и даже потомственные криптографы, вроде семейства Ардженти, служившего у папы Римского.

Тем не менее папы Римские сами не чуждались услуг криптографов и выдающийся итальянский математик Джироламо Кардано, имя которого дошло до нас благодаря изобретенному им шарнирному механизму и первой публикации о методе решения уравнений третьей степени, состоял у них на службе. Его перу принадлежит несколько книг по криптографии и описание метода трафаретов, который будет рассмотрен ниже. Если учесть род занятий Кардано, становится понятным, почему, выведя гороскоп Христа, он остался недоступным инквизиции, сжегшей Бруно и судившей Галилея за куда меньшую ересь: эка, невидаль, что Земля вертится! Жизнь и смерть Джироламо полны легенд. Больше всего современников в Кардано поражал дар предвидения, благодаря которому он безмятежно перенес казнь своего сына и потерю крупного состояния. Вероятно, хотя бы отчасти его мистический талант знать будущее объясняется принадлежностью к криптографической службе, знающей все, что можно узнать. Но вот, предсказав продолжительность своей жизни в 75 лет, он в назначенный год покончил самоубийством, оставив записку: "Если и неверно, то неплохо придумано". Увлечение теорией магических квадратов привело Кардано к открытию нового класса шифров перестановок, названных решетками или трафаретами. Они представляют собой квадратные таблицы, где четверть ячеек прорезана так, что при четырех поворотах они покрывают весь квадрат. Вписывание в прорезанные ячейки текста и повороты решетки продолжаются до тех пор, пока весь квадрат не будет заполнен. Например, на рисунке ниже показан процесс шифровки решеткой 4 х 4. Черными квадратами обозначены непрорезанные ячейки, а повороты осуществляются по часовой стрелке на указанный ниже угол:

**П* З*** *** *Т** ЗТП

***Р *Ж** **Ш* О*** ОЖШР *И** ***А Е*** **Г* ЕИГА

Е*** **Ю* *C** ***О ЕСЮО

0' 90' 180' 270' шифp













В результате получается шифровка ЗТП ОЖШРЕИГАЕСЮО. Число подобных решеток быстро растет с их размером. Так, решетка 2 х 2 единственна, решеток 4 х 4 уже 256, а решеток размером 6 х 6 свыше ста тысяч. Несмотря на кажущуюся сложность, шифры типа решеток довольно просто вскрываются и не могут использоваться в виде самостоятельного шифра. Однако они очень удобны и еще долго использовались в практике для усиления шифров замены. Один мой знакомый, остановившись при чтении рукописи книги на этом месте, попытался высказать сомнение в том, что шифры подобного рода легко вскрываются. Поскольку это глубоко ошибочное и обидное для криптологов мнение широко распространилось из популярных математических книг или иных источников дезинформации, то в следующей главе специально приведен пример вскрытия шифровки, сделанной этой решеткой.

В Англии XVII века возглавлял криптографическую службу математик Джон Валлис, основавший исчисление бесконечно малых, но получивший научное признание и профессуру в Оксфорде не за химерические бесконечно малые, а за редкостные успехи в расшифровке. В Германии же лучшим криптографом тогда был Лейбниц, основатель Берлинской академии наук, языковед и математик, один из создателей дифференциального исчисления, к имени которого мы еще вернемся позже в связи с развитием криптографии в России. Одно время его высокий покровитель, ганноверский курфюрст Георг1, став королем Англии, хотел пригласить Лейбница на британскую криптографическую службу, но Валлис был там незаменим и утечка континентальных "мозгов" на запад не состоялась. Лейбницу не подфартило стать главным криптографом Англии может быть и потому, что Ньютон, оспаривающий его авторство в дифференциальном исчислении, единолично заправлял в Королевском научном обществе и изо всех сил преследовал менее именитого иностранного конкурента. Другой раз Лейбницу не повезло с приглашением в Петербург для организации русской криптографической службы. Неожиданная его болезнь и смерть расстроили планы Петра 1, активно вербовавшего нужных России ученых. Человеком, сумевшим завершить развитие криптографии в отдельную научную дисциплину, стал, по-видимому, однофамилец Роджера Бэкона - Френсис Бэкон. Будучи лорд-канцлером, при короле Якове 1, он хорошо знал потребности государства в надежных шифрах, и его первая талантливая работа, относящаяся к 1580 году, в дальнейшем получила блестящее практическое развитие. В частности, именно он впервые предложил двоичное кодирование букв латинского алфавита - то же самое, которое используется сейчас в компьютерах.

Такой заботливый уход за пустившей первые ростки криптографией привел к тому, что она скоро стала давать плоды. Разгром Великой Армады в 1588 году в значительной степени был обусловлен мощью английской криптографической школы, легко ломавшей испанские шифры и сообщавшей о всех передвижениях неприятельских судов. Криптография была известна и применялась во многих слоях общества Британии. Лондонец Самуэль Пепис (1633-1703) всемирно известен своим дневником, по которому историки пишут труды о переходе от Пуританства к Реставрации. Искусствоведы включили это произведение в мировую сокровищницу литературы. Пепис окончил Кембридж благодаря кузену отца - адмиралу Монтегю и имел много друзей: ученого Исаака Ньютона, архитектора Кристофера Рена, поэта и драматурга Джона Драйдена. Пепис был лично свидетелем таких незабываемых для Англии событий, как возвращение короля Чарльза II в Англию, большая чума 1664 года, пожар Лондона 1666 года, революция 1688 года. Интересно, что его мемуары были зашифрованы по системе криптолога Томаса Шелтона и дополнительно собственным шифром Пеписа, поскольку содержали много скандальных фактов о великих современниках. Вместе с его личными книгами и бумагами дневник после смерти писателя попал в Кембридж, где сразу же привлек внимание исследователей. Первый успех в его расшифровке был получен лишь в 1822 году, а полностью она завершена в 1899 году. Таким образом, к XVIII веку криптография окончательно сложилась в виде самостоятельной науки. Однако, несмотря на наличие профессиональных криптологов, находящихся на государственной службе, и постоянного использования шифров в дипломатии и военном деле, криптология еще не вышла из младенческого возраста и ею могли заниматься лишь избранные, одаренные одиночки.





Криптология в Новое время

Новое время привнесло новые достижения в криптографию. Постоянно расширяющееся применение шифров выдвинуло новое требование к ним - легкость массового использования, а старое требование - устойчивость к взлому не только осталось, но и было усилено. Поэтому 1854 год, когда англичанин Чарльз Уитстон разработал новую шифровку биграммами, которую называют двойной квадрат, открыл новый этап в криптографии. Название шифр получил по аналогии с полибианским квадратом. В отличие от полибиаиского, двойной квадрат использует сразу две таблицы, расположенные по горизонтали, а шифрование идет биграммами, как в шифре Playfair. Эти, казалось бы и не столь уж значительные изменения привели к появлению на свет новой криптографической системы ручного шифрования. Она оказалась так надежна и удобна, что применялась немцами даже в годы Второй мировой войны. По отзыву ее создателя, шифрование двойным квадратом предельно просто и его "можно доверить даже дипломатам". Приведем пример использования шифра двойной квадрат для русских текстов. Имеются две таблицы со случайно расположенными в них алфавитами:





Ч В Ы П

О К : Д У

Г Ш 3 Э Ф

Л Ъ Х А ,

Ю Р Ж Щ Н

Ц Б И Т Ь

. С Я М Е

Е Л Ц : П

. Х Ъ А Н

Ш Д Э К С

Ы Б Ф У

Я Т И Ч Г

М О , Ж Ь

В Щ 3 Ю Р



Для шифрования сообщение разбивают на биграммы. Первая буква биграммы находится в левой таблице, а вторая в правой. Затем, мысленно в таблице строится прямоугольник так, чтобы буквы биграммы лежали в его противоположных вершинах. Другие две вершины этого прямоугольника дают буквы шифровки. Предположим, что шифруется биграмма текста ОЖ. Буква О находится в колонке 1 строки 2 левой таблицы. Буква Ж находится в колонке 4 строки 6 правой таблицы. Значит, прямоугольник образован строками 2 и 6, а также колонками 1 левой и 4 правой таблиц. Следовательно, шифровке соответствуют буквы, лежащие в колонке 1 строки 6 левой таблицы Ц и в колонке 4 строки 2 правой таблицы А - биграмма АЦ. Так парами букв шифруется все сообщение:

Сообщение: ПР ИЕ ЗЖ АЮ Ш ЕС ТО ГО

Шифровка : ПЕ МБ КИ ФМ ЕШ РФ ЖБ ДЦ ЩП

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

Во второй половине XIX века появляется множество работ по вскрытию сложных шифров замены для конкретных условий, при использовании повторяющегося короткого ключа, при шифровке нескольких сообщений одним ключом. Тогда же в Англии и США стали выходить периодические издания, посвященные вопросам криптоанализа, где профессионалы и любители, обмениваясь опытом, предлагали новые типы шифров и анализировали их стойкость к взлому. Возможно, одного из самых больших успехов XX века криптоаналитика добилась, когда Британская морская разведка в начале 1917 года передала правительству США текст секретной расшифрованной телеграммы (телеграмма была перехвачена с трансатлантического кабеля.) , известной как послание Циммермана, бывшего министром иностранных дел Германии. В ней немецкому послу в Мексике предлагалось заключить союз, чтобы Мексика захватила американские штаты Техас, Нью-Мехико и Аризону. Эта телеграмма, произвела эффект взрыва и, считают сейчас историки, стала главным поводом для вступления США в Первую мировую войну против Германии, обеспечив ее разгром. Так криптография впервые серьезно заявила о своей исключительно большой значимости в современном мире.

XIX век с расширением связных коммуникаций занялся автоматизацией процесса шифрования. Появился телеграф, нужно шифровать и его. Любопытно, что цифровое шифрующее колесо было изобретено госсекретарем Томасом Джефферсоном в 1790 году, ставшим потом третьим президентом США. Похожие шифрующие устройства применялись армией США и после Второй мировой войны. Принцип работы таких машин, очень похожих на арифмометры, заключается в многоалфавитной замене текста сообщения по длинному ключу. Длина периода ключа определялась наименьшим общим кратным периодов оборотов шифрующих колес. При 4 колесах и периодах их оборотов 13, 15, 17 и 19 получалась большая длина периода ключа 62985, очень затрудняющая расшифровку коротких сообщений. Гораздо более примитивный прибор, цилиндр Базери, был предложен Этьеном Базери в 1891 году. Он состоял из 20 дисков со случайно нанесенным по ободу алфавитом. Перед началом шифрования диски помешались на общую ось в порядке, определяемым ключом. Набрав первые 20 букв текста в ряд на цилиндрах их поворачивали вместе и считывали в другом ряду шифрованное сообщение. Процесс повторялся, пока все сообщение не было зашифровано. Однако первая практически используемая криптографическая машина была предложена Жильбером Вернамом лишь в 1917 году. Применение машин в криптографии расширялось, что привело к созданию частных фирм, занимающихся их серийным выпуском. Шифровальная аппаратура создавалась в Германии, Японии, США и ряде других развитых стран. Предшественницей современных криптографических машин была роторная машина, изобретенная Эдвардом Хеберном в 1917 году и названная впоследствии Энигмой (Слово enigma переводится как загадка, Промышленные образцы этой машины изготовляла фирма Siemens.). Независимая промышленная ее версия создана чуть позже берлинским инженером Артуром Кирхом (некоторые источники называют его Артуром Шербиусом). Она сначала Представляла собой 4 вращающихся на одной оси барабана, обеспечивающих более миллиона вариантов шифра простой замены, определяемого текущим положением барабанов. На каждой стороне барабана по окружности располагалось 25 электрических контактов, столько же, сколько букв в алфавите. Контакты с обеих сторон барабана соединялись попарно случайным образом 25 проводами, формировавшими замену символов. Колеса складывались вместе и их контакты, касаясь друг друга, обеспечивали прохождение электрических импульсов сквозь весь пакет колес. Перед началом работы барабаны поворачивались так, чтобы устанавливалось заданное кодовое слово - ключ, а при нажатии клавиши и кодировании очередного символа правый барабан поворачивался на один шаг. После того, как он делал оборот, на один шаг поворачивался следующий барабан - будто бы в счетчике электроэнергии. Таким образом, получался ключ заведомо гораздо более длинный, чем текст сообщения.

Например, в первом правом барабане провод от контакта, соответствующего букве U, присоединен к контакту буквы F на другой его стороне. Если же барабан поворачивался на один шаг, то этот же провод соответствовал замене следующей за U буквы V на следующую за F букву G. Так как барабаны соприкасались контактами, то электрический импульс от нажатой клавиши с буквой исходного текста, прежде чем достигал выхода претерпевал 4 замены: по одной в каждом барабане. Для затруднения расшифрования барабаны день ото дня переставлялись местами или менялись. Дальнейшее усовершенствование этой машины сделало движение барабанов хаотичным, а число их увеличилось сначала до 5, а потом до 6. Все устройство могло поместиться в портфеле и было так просто, что обслуживалось обычными связистами.

Казалось бы, сделано все для невозможности вскрытия шифровок Энигмы. И все же английские криптографические службы в Блетчли Парке (уединенное поместье в 80 километрах севернее Лондона, отведенное британским криптологам.) почти всю войну читали немецкие шифры. Это стало возможным лишь благодаря польской разведке, которая к злополучному 1939 году смогла получить чертежи Энигмы и разобраться в ее устройстве. После нападения гитлеровцев на Польшу чертежи немецкой шифровальной машины были переданы Англии. Довольно быстро британские криптоаналитики установили, что для взлома шифра, нужно знать распайку проводов в шифрующих колесах. Началась охота британских спецслужб за образцами Энигмы. Первый удалось выкрасть прямо с завода на юго-востоке Германии, второй сняли со сбитого в небе Норвегии немецкого бомбардировщика, третий был найден во время боев за Францию у немецких военных связистов, взятых в плен. Остальные Энигмы сняты водолазами с немецких подводных лодок, за которыми специально стали охотиться и топить на малых глубинах. Взлом шифров Энигмы шел тяжело до тех пор, пока в 1942 году не вступили в строй несколько ЭВМ, специально созданных для этого Аланом Тьюрингом. Это была первая в мире довольно быстродействующая ЭВМ под названием "Колосс", специализированная для взлома шифров. После этого английские криптоаналитики могли меньше чем за день могли расколоть любую шифровку Энигмы, полученную добытыми ранее колесами, методично перебирая все возможные ключи. Немцы рассчитывали на сложность своего шифра, исходя из его ручной дешифровки, в то время как англичане стали его ломать, используя ЭВМ. Отметим, что сами немцы допускали возможность взлома шифра Энигмы. Еще в 1930 году ведущий немецкий криптоаналитик Георг Шредер продемонстрировал такую возможность, едко заметив при этом: "Энигма - дерьмо!" Однако она постоянно усложнялась и были периоды, когда в Блетчли Парке с ней не могли справиться. Перед шифровками Энигмы, которые исходили не от войск, а из немецких криптографических центров, "Колосс" тоже был бессилен.

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

Шифр Цезаря

Гай Юлий Цезарь, римский император, в то же время, известен как изобретатель (не могу сказать "разработчик") своего шифра, поручавшего Марку Туллию Цицерону и своим близким шифровать послания и использовать 50-буквенный алфавит.

Цитирую Гая Светония: "Существуют и его письма к Цицерону и письма к близким о домашних делах: в них, если нужно было сообщить что-нибудь негласно, он пользовался тайнописью, то есть менял буквы так, чтобы из них не складывалось ни одного слова. Чтобы разобрать и прочитать их, нужно читать всякий раз четвертую букву вместо первой, например, D вместо А и так далее".

Выражаясь современной терминологией, номер каждого символа при шифровании увеличивался на 3: А на D, B на E и т.д. Знаменитая фраза Цезаря VENI VIDI VICI (пришел, увидел, победил), посланная сенату после однодневной войны с Фарнаком, царем Понта, после зашифровки превратилось бы в SBKF SFAF SFZF. Для уточнения стоит отметить, что Гай Светоний ошибался, давая этому методу название тайнописи. Тайнопись - это сокрытие самого факта передачи сообщения, изложенное Светонием называется, в современной терминологии, шифром однозначной замены.

Криптоалгоритм будет реализован на ASCII-таблице. Для корректной реализации шифра еще потребуется нормализация, проводимая для того, чтобы множества совпадали и, естественно, размеры множеств открытого и шифротекста были равны (т.н. гомоморфизм). Для этого делается следующее: если сумма текущего номера и тройки выходит за пределы алфавита (размера множества разрешенных символов), то отсчет букв начинается сначала.

Программный код для шифрования текстовых сообщений по принципу «шифра Цезаря» на языке программирования Visual Basic

Пусть kk = 3 и кодируемой фразой будет «i remember that September». Будем использовать латинские буквы со стандартным следованием букв в алфавите. Результаты шифрования указанной выше фразы показаны ниже в таблице:

 

1

i

 

r

e

m

e

m

b

e

r

 

t

h

a

t

 

s

e

p

t

e

m

b

e

r

2

9

0

18

5

13

5

13

2

5

18

0

20

8

1

20

0

19

5

16

20

5

13

2

5

18

3

12

3

21

8

16

8

16

5

8

21

3

23

11

4

23

3

22

8

19

23

8

16

5

8

21

4

l

c

u

h

p

h

p

e

h

u

c

w

k

d

w

c

v

h

s

w

h

p

e

h

u

 

Пояснения к таблице:

1-я строка – фраза для шифрования;

2-я строка – номера букв фразы для шифрования в латинском алфавите;

3-я строка – номера букв фразы для шифрования, увеличенные на 3;

4-я строка – зашифрованная фраза.

Спроектируем форму Form1, так чтобы было можно выполнять как кодирование, так и декодирование введенной фразы, рис. 1.

Рис. 1.                                                            

Рис. 2.

Подготовим программный код задачи кодирования по «Цезарю», так чтобы при шифровании пользователь мог выбирать величину сдвига kk.

 

Private sub> Command1_Click()

Dim a(27) As String * 1

Dim s$, t$, r$

Dim kk, m, l, i, j As Integer

kk = Text1.Text

s$ = Text2.Text

m = Len(s$)

kk = kk Mod 27

a(0) = " " : a(1) = "a" : a(2) = "b" : a(3) = "c" : a(4) = "d" : a(5) = "e" : a(6) = "f" : a(7) = "g"

a(8) = "h" : a(9) = "i" : a(10) = "j" : a(11) = "k" : a(12) = "l" : a(13) = "m" : a(14) = "n"

a(15) = "o" : a(16) = "p" : a(17) = "q" : a(18) = "r" : a(19) = "s" : a(20) = "t" : a(21) = "u"

a(22) = "v" : a(23) = "w" :a(24) = "x" : a(25) = "y" : a(26) = "z" : a(27) = " "

Rem Кодирование фразы

If Check1.Value = 1 Then

Check1.Caption = "Кодирование"

For i = 1 To m

t$ = Mid(s$, i, 1)

For j = 1 To 27

If (t$ = a(j)) Then l = j

Next j

l = l + kk

l = l Mod 27

r$ = r$ & a(l)

Next i

Text3.Text = r$

End If

 

Rem Декодирование шифровки

If Check1.Value = 0 Then

Check1.Caption = "Декодирование"

For i = 1 To m

t$ = Mid(s$, i, 1)

For j = 1 To 27

If (t$ = a(j)) Then l = j

Next j

l = l - kk

If l <= 0 Then l = l + 27

r$ = r$ & a(l)

Next i

Text3.Text = r$

End If

End sub>

Private sub> Command2_Click()

End

End sub>

 

Запустим программу на выполнение. Наберем число 3 в текстовом окне «Введите сдвиг», а в окне «Введите фразу»: i remember that September. Набор проводим строчными буквами, поскольку работа с прописными буквами в программе не предусмотрена. Проверив состояние контрольного индикатора (Кодирование), закодируем набранную фразу, щелкнув по кнопке «Обработать фразу». Результатом кодирования будет lcuhphpehucwkdwcvhswhpehu, рис. 2. Можно убедиться, что он совпадает с «найденным теоретически».

Декодируем полученную шифровку. Для этого перенесем зашифрованную фразу lcuhphpehucwkdwcvhswhpehu из окна «Результат» в окно «Введите фразу» и изменим состояние контрольного индикатора (уберем флажок). Снова щелкнем по кнопке «Обработать фразу» и в окне «Результат» появится исходная фраза i remember that September, рис. 3.

Теперь можно зашифровать ту же фразу для другого значения сдвига, пусть например kk = 5. Результат кодирования представлен на рис. 4.

 

     

Рис. 3.                                                               

Рис. 4.

 

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

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

Список использованной литературы:

    Ж . Брассар «Современная криптология», изд. «Полимед», 1999г.

    Библия , изд. «Московская патриархия», 1998 г.

    Учебник по программированию «Visual basic 6.0», изд. «Эком», 2002г.

    Н. Г. Волчёнков программирование на «Visual basic 6.0», изд. Инфра-м, 2002 г.