ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ШИФРА ВИЖЕНЕРА - Студенческий научный форум

VII Международная студенческая научная конференция Студенческий научный форум - 2015

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ШИФРА ВИЖЕНЕРА

Володина А.С. 1
1Московский государственный областной социально-гуманитарный институт Коломна, Россия
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Шифр Цезаря лежит в основе многих модификаций шифра. Одним из таких представителей шифра замены, является шифр Виженера. Ели шифр Цезаря является шифром простой замены т.е (моноалфавитным шифром), то шифр Виженера является многоалфавитным шифром т.е шифром сложной замены.

Моноалфавитным шифром называется шифр замены, в котором для всех элементов открытого текста используется одно и то же правило замены. Другими словами, один и тот же элемент открытого текста зашифровывается каждый раз одинаково и независимо от того, где в открытом тексте он расположен.

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

Фактически начало многоалфавитным шифрам положил, знаменитый итальянский философ, художник и архитектор Леон Альберти (рис.1). В 1466 г. в своём труде о шифрах он описал шифровальный диск (рис.2), который состоял из неподвижного большого и подвижного малого соосных дисков. Больший из них был разделён на 24 равных сектора, в которые были вписаны 20 букв латинского алфавита в их естественном порядке и 4 цифры (от 1 до 4). При этом из 26-буквенного алфавита были удалены 6 букв (H, J, K, U, W, Y), без которых можно было обойтись, подобно тому, как в русском языке обходятся без Ъ, Ё, Й. Меньший диск также был разбит на 24 сектора и в него были вписаны буквы латинского алфавита в смешанном порядке. Имея два таких прибора, корреспонденты договаривались о первой индексной букве на подвижном диске. При шифровании сообщения отправитель ставил индексную букву против любой буквы большего диска. Он информировал корреспондента о таком положении диска, записывая эту букву внешнего диска в качестве первой буквы шифра текста. Очередная буква открытого текста отыскивалась на неподвижном диске и стоящая против неё буква меньшего диска являлась результатом её шифрования. После того как были зашифрованы несколько букв текста, положение индексной буквы изменялось, о чём также каким-либо образом передавалось корреспонденту.

   

Рис.1. Леон Баттист Альберти

Рис.2. Шифровальный диск

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

Именно с изобретения Альберти начинается история создания шифра Виженера. В 1467 году Леон Баттист Альберти сформулировал описание многоалфавитного шифра. Позднее, в 1518 году, Иоганн Трисемус в своей работе «Полиграфия» изобрел tabula recta (рис.3) — центральный компонент шифра Виженера.

То, что сейчас известно под шифром Виженера, впервые описал Джованни Батиста Беллазо. Он использовал идею tabula recta Трисемуса, но добавил ключ для переключения алфавитов шифра через каждую букву.

Блез Виженер (рис.4) представил своё описание простого, но стойкого шифра перед комиссией Генриха III во Франции в 1586 году, и позднее изобретение шифра было присвоено именно ему. Давид Кан в своей книге «Взломщики кодов» отозвался об этом осуждающе, написав, что история «проигнорировала важный факт и назвала шифр именем Виженера, несмотря на то, что он ничего не сделал для его создания».

Шифр Виженера имел репутацию исключительно стойкого к «ручному» взлому. Известный писатель и математик Чарльз Лютвидж Доджсон (Льюис Кэрролл) назвал шифр Виженера невзламываемым в своей статье «Алфавитный шифр».В 1917 году Scientific American также отозвался о шифре Виженера, как о неподдающемся взлому. Это представление было опровергнуто после того, как Касиски полностью взломал шифр в XIX веке, хотя известны случаи взлома этого шифра некоторыми опытными криптоаналитиками ещё в XVI веке.

   

Рис.3. tabula recta

Рис.4. Блез де Виженер

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

Есть 2 способа шифрования с помощью шифра Виженера.

1 способ

Для примера используем слово ФАЙЛ, состоящее из 4 букв, как ключ.

Исходный текст: телевидение

Ключ: файлфайлфай

Зашифрованный текст: жечрцинрвио

Алфавитным номерам букв ключа соответствует блок чисел 21, 0, 10, 12. Чтобы зашифровать сообщение при помощи этого ключа, исходный текст разбивается на блоки длинной в 4 буквы каждый. Затем к каждому числовому представлению первой буквы блока надо прибавить 21, к числовому представлению второй буквы – 1, третьей – 10, четвертой – 12. Получающиеся суммы по модулю представляют числовые значения шифр текста.

2 способ

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

Например (рис.5), предположим, что исходный текст слово dence. Человек, посылающий сообщение, записывает ключевое слово («ABC») циклически до тех пор, пока его длина не будет соответствовать длине исходного текста: получится ABCAB.

Первый символ исходного текста D зашифрован последовательностью A, которая является первым символом ключа. Первый символ D шифрованного текста находится на пересечении строки A и столбца D в таблице Виженера. Точно так же для второго символа исходного текста используется второй символ ключа; то есть второй символ шифрованного текста B получается на пересечении строки B и столбца A. Остальная часть исходного текста шифруется подобным способом.

 

Рис.5. Пример

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

Если буквы A-Z соответствуют числам 0-25, то шифрование Виженера можно записать в виде формулы:

Расшифровка:

Программа шифратор

Интерфейс данной программы следующий:

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

Вводим текст, ключ, зашифровываем, получаем зашифрованный текст.

Программа дешифратор

Интерфейс данной программы похож на интерфейс предыдущей.

Берем зашифрованный текст из предыдущей программы, вводим тот же ключ и нажимаем расшифровать. Мы видим, что получили то слово, которое шифровали в 1 программе.

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

  1. Поиск длины ключа. Можно анализировать распределение частот в зашифрованном тексте с различным прореживанием. То есть брать текст, включающий каждую 2-ю букву зашифрованного текста, потом каждую 3-ю и т. д. Как только распределение частот букв будет сильно отличаться от равномерного (например, по энтропии), то можно говорить о найденной длине ключа.

  2. Криптоанализ. Совокупность n шифров Цезаря (где n — найденная длина ключа), которые по отдельности легко взламываются.

Найти длину ключа можно при помощи теста Фридмана (иногда называемый каппа-тест). Он был изобретен Вильямом Фридманом (рис.6) в 1920 году. Фридман использовал индекс совпадения, который измеряет частоты повторения символов, чтобы взломать шифр.

Из наблюдения за частотой совпадения следует:

   
 

Рис.6. Вильям Фридман

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

Как только длина ключа становится известной, зашифрованный текст можно записать во множество столбцов, каждый из которых соответствует одному символу ключа. Каждый столбец состоит из исходного текста, который зашифрован шифром Цезаря; ключ к шифру Цезаря является всего-навсего одним символом ключа для шифра Виженера, который используется в этом столбце. Используя методы, подобные методам взлома шифра Цезаря, можно расшифровать зашифрованный текст. А как взламывать шифр Цезаря мы уже знаем.

Блезу де Виженеру принадлежит мысль: «Все вещи в мире представляют собой шифр. Вся природа является просто шифром и секретным письмом».

Просмотров работы: 2415