Разработка программы шифрования на основе шифра Виженера. Шифрование при помощи шифра Виженера 1 История создания шифра 2 Процесс шифрования (алгоритм)
Скачать 2.63 Mb.
|
СодержаниеГлава 1. Шифрование при помощи шифра Виженера 1.1 История создания шифра 1.2 Процесс шифрования (алгоритм) Глава 2. Разработка программы для реализации поставленной задачи .1 Результат работы программы с точки зрения пользователя 2.2 Разработка приложения Глава 3. Тестирование программы .1 Тест №1 3.2 Тест №2 3.3 Тест №3 3.4 Тест №4 Заключение Библиографический список Приложение №1. Таблица. Пример квадрата Виженера Приложение № 2. Квадрат Виженера в программе Приложение № 3. Блок - схема программы Приложение № 4. Исходный код программы Приложение № 5. Результат тестирования № 3 - Шаг 1 Приложение № 6. Результат тестирования № 3 - Шаг 2 Приложение № 7. Результат тестирования № 3 - Шаг 3 Приложение № 8. Результат тестирования № 3 - Шаг 4 Приложение № 9. Результат тестирования № 3 - Шаг 5 Приложение № 10. Результат тестирования № 4 - Шаг 1 Приложение № 11. Результат тестирования № 4 - Шаг 2 Приложение № 12. Результат тестирования № 4 - Шаг 3 Приложение № 13. Результат тестирования № 4 - Шаг 4 Приложение № 14. Результат тестирования № 4 - Шаг 5 Приложение № 15. Результат тестирования № 4 - Шаг 6 Приложение № 16. Результат тестирования № 4 - Шаг 7 Приложение № 17. Результат тестирования № 4 - Шаг 8 Приложение № 18. Результат тестирования № 4 - Шаг 9 Приложение № 19. Результат тестирования № 4 - Шаг 10 Приложение № 20. Результат тестирования № 4 - Шаг 11 Приложение № 21. Адаптация программы под латинский язык Приложение № 22. Тесты программы (адаптации) под латинский язык Приложение № 23. Диаграмма 1 ВведениеВ современном конкурентном мире наблюдается тенденция постоянного увеличения стоимости информации и, соответственно, возникает необходимость её скрытия и защиты от несанкционированного использования. Шифрование информации - единственное надёжное решение данной задачи. В связи с этим постоянно увеличивается число подходов к шифрованию. Таким образом, цель данной работы напрямую связана с актуальностью проблемы скрытия и защиты информации. Цель: Разработать программу шифрования при помощи шифра Виженера для преобразования текста на кириллице в зашифрованный текст. Задачи: . Изучить метод шифрования при помощи шифра Виженера. . Разработать алгоритм, связывающий идею шифрования и особенности языка программирования. . Разработать консольное приложение, которое преобразует текст на русском языке в зашифрованный текст. . Подготовить набор тестов и протестировать полученное приложение. Под объектом исследования понимается шифрование и кодирование данных. Предмет исследования представляет собой метод шифрования при помощи шифра Виженера. Основная часть1глава основной частиШифрование при помощи шифра Виженера 1.1 История создания шифра Первое точное документированное описание многоалфавитного шифра было сформулировано Леоном Батиста Альберти в 1467 году, для переключения между алфавитами использовался металлический шифровальный диск. Система Альберти переключает алфавиты после нескольких зашифрованных слов. Позднее, в 1518 году, Иоганн Трисемус в своей работе "Полиграфия" изобрел tabula recta - центральный компонент шифра Виженера (таблица Виженера) [1]. То, что сейчас известно под шифром Виженера, впервые описал Джованни Батиста Беллазо в своей книге La cifra del. Sig. Giovan Battista Bellasо. Он использовал идею tabula recta Трисемуса, но добавил ключ для переключения алфавитов шифра через каждую букву. Блез Виженер представил своё описание простого, но стойкого шифра перед комиссией Генриха III во Франции в 1586 году, и позднее изобретение шифра было присвоено именно ему. Давид Кан в своей книге "Взломщики кодов" отозвался об этом осуждающе, написав, что история "проигнорировала важный факт и назвала шифр именем Виженера, несмотря на то, что он ничего не сделал для его создания". Шифр Виженера имел репутацию исключительно стойкого к "ручному" взлому. Известный писатель и математик Чарльз Лютвидж Доджсон (Льюис Кэрроллназвал шифр Виженера невзламываемым в своей статье "Алфавитный шифр", опубликованной в детском журнале в 1868 году. В 1917 году Scientific American также отозвался о шифре Виженера, как о неподдающемся взлому. Это представление было опровергнуто после того, как Касиски полностью взломал шифр в XIX веке, хотя известны случаи взлома этого шифра некоторыми опытными криптоаналитиками ещё в XVI веке. Шифр Виженера достаточно прост для использования в полевых условиях, особенно если применяются шифровальные диски. Например, "конфедераты" использовали медный шифровальный диск для шифра Виженера в ходе Гражданской войны. .2 Процесс шифрования (алгоритм) Шифр Виженера представляет собой многоалфавитную систему шифрования. Он является симметричным блочным шифром замены. Будем считать, что исходный текст представляет собой строку , образованную символами алфавита . Длина текста - L символов. При шифровании текста используется секретный ключ - символьная строка длиной l: . Чем больше длина ключевого слова (или фразы), тем сложнее взломать шифр, а, значит, тем надежнее защищен текст. Для шифрования используется таблица Виженера (Квадрат Виженера), который строится следующим образом: сверху и по левому краю квадрата выписывается исходный алфавит. В первую строку квадрата заносится перестановка из букв алфавита. Во второй строке та же перестановка циклически сдвигается на одну позицию влево, в третьей - на две и т.д. Таким образом, квадрат состоит из N перестановок, и каждой из них соответствует та буква исходного алфавита, которая записана слева от нее. В приложении № 1 представлен пример квадрата Виженера. Часто в качестве первой строки таблицы используется не перемешанный, а исходный алфавит. Это значительно упрощает процесс криптоанализа. Шифрование исходного текста с помощью данного ключа и квадрата Виженера осуществляется следующим образом. Ключевое слово многократно записывается под исходным текстом. Каждая буква исходного текста шифруется при помощи буквенной перестановки, соответствующей той букве ключевого слова, которая стоит под данной буквой исходного текста. Таким образом, k-я буква шифрованного текста находится в квадрате Виженера на пересечении i-й строки и j-го столбца, где i - строка, соответствующая k-й букве исходного текста, а j - строка, соответствующая букве ключевого слова с номером k (mod n), где n - длина ключевого слова. Ниже представлен пример шифрования фразы "Белый медведь - самый крупный хищник" при помощи ключевого слова "квадрат" и квадрата Виженера: БЕЛЫЙ МЕДВЕДЬ САМЫЙ КРУПНЫЙ ХИЩНИК КВАДР АТКВАДР АТКВА ДРАТКВА ДРАТКВ ЛЭЛПО ЧНЯЖЗМЧ ДЙУРЩ ЯЕЬШНРЩ ОСОПЙЧ Для того чтобы получить первую букву зашифрованного текста - Л, нам необходимо в первой строке таблицы Виженера (Приложение №1) найти букву - Б, которая является первой буквой в строке, которую требуется зашифровать. Буква Б определяет нужный столбец в таблице. В первом столбце таблицы ищется буква - К, которая является первой буквой в строке с повторениями ключа. Буква К определяет в таблице нужную строку. На пересечении столбца - Б, и строки -К, находится искомая буква - Л. Все остальные буквы шифруются аналогично. Расшифровать текст, зашифрованный с помощью шифра Виженера, зная секретный ключ и квадрат Виженера, несложно. Поскольку шифр Виженера является симметричным, для расшифровки необходимо выполнить действия, обратные тем, которые применялись при шифровании текста. Существует несколько методов криптоанализа. Криптоанализ - наука о методах получения исходного значения зашифрованной информации, не имея доступа к секретной информации (ключу Эта схема шифрования не поддается раскрытию при помощи частотного анализа, поскольку одна и та же буква исходного текста шифруется по-разному в зависимости от выпавшей на нее буквы ключевого слова. Например, используем пример, который был приведен выше: БЕЛЫЙ МЕДВЕДЬ САМЫЙ КРУПНЫЙ ХИЩНИК КВАДР АТКВАДР АТКВА ДРАТКВА ДРАТКВ ЛЭЛПО ЧНЯЖЗМЧ ДЙУРЩ ЯЕЬШНРЩ ОСОПЙЧ Заметим, что в зашифрованном тексте под буквой О были зашифрованы три буквы алфавита - Й, Х, Щ. Таким образом, метод частотного криптоанализа в данном случае бессилен. 2 глава основной частиРазработка программы для реализации поставленной задачи 2.1 Результат работы программы с точки зрения пользователя Данное приложение направлено на процесс шифрования информации, в частности слова, строки или текста, написанного при помощи букв русского алфавита. Пользователю, пожелавшему зашифровать тот или иной текст требуется ввести его в файл, затем придумать ключ (кодовое слово), которое необходимо в процессе шифрования. Ключевое слово необходимо запомнить, так как без него зашифрованный текст привести к начальному, незашифрованному состоянию практически невозможно. Так же ключевое слово не следует передавать третьим лицам, так как расшифровать текст, зная ключевое слово, не составит большого труда. Ключ - это кодовое слово, которое используется при процессе шифрования, играет большую роль при процессе дешифрования. При задании ключа можно использовать только символы русского алфавита, строчные буквы и не использовать пробелы, иначе придется повторить вводить ключа. Ключ может быть как бессмысленным набором символов, так и некоторым словом или смысловым словосочетанием, но записанным без пробела. При шифровании текста методом Виженера очень важную роль играет длина ключа, так как от длины ключа зависит сложность процесса дешифрования или взлома. Ниже приведен процесс шифрования одной и той же строки при помощи разных ключей. Входная строка: Здравствуй моя хорошая, дорогая, любимая мамочка!!! Ключ № 1: роза Выходная строка: Хцхнцабщщн ъэг щикьмшж, вохэъэт, лэгкскч ънооадк!!! Ключ № 2: пришлавесна Выходная строка: Пвыычрвшяж сфг ьмзэзмк, рэаьсыд, лнтбынэ оюяыхсм!!! На первый взгляд очень трудно различить, какая из этих строк была закодирована при использовании более сложного ключа, но для опытных криптоаналитиков это имеет огромное значение. Поэтому рекомендуется использовать более сложные ключи. После введения текста в файл и ввода ключевого слова, зашифрованный текст будет записан в файл с именем Result. После окончания работы программы можно будет получить результат ее работы - зашифрованный методом шифрования при помощи кодировки Виженера текст, при использовании заданного ключа. 2.2 Разработка приложения Для того, чтобы решить задачу шифрования используется интегрированная среда разработки Visual Studio C#, шаблон Visual Studio -консольное приложение. При решении поставленной задачи, необходимо: . Квадрат Виженера (Приложение № 2). При генерации внутри программы квадрата Виженера использовался двумерный массив, заполненный элементами символьного типа (char). Элемент массива нулевой строки и нулевого столбца не заполняется. Нулевая строка и нулевой столбец заполнены строчными буквами русского алфавита, следующими в алфавитном порядке. Первая строка с первого столбца заполняется переставленными буквами русского алфавита. Все оставшиеся строки, начиная с первого столбца, заполняются циклически сдвинутыми на одну позицию влево вариантами первой строки. . Ключевое слово. Для задания ключевого слова используется строковый тип данных (string). Слово вводится с клавиатуры. . Текст, который требуется зашифровать. Загружается из файла в строку. И результат также записывается в файл. Для того чтобы файлы стали доступными для использования, необходимо создать файлы типа (txt files (*.txt)|*.txt), c именами для входного файла «Encrypt», для выходного файла «Result». В программе при описании файловых переменных требуется задать адрес нахождения файла. 3 глава основной частиТестирование программы .1 Тест №1 Файл содержит длину нулевой размерности (см. Рисунок 1. Результат работы программы 1): Рисунок 1. Результат работы программы 1 3.2 Тест №2 Файл сформирован неверно, т.е. не удовлетворяет правилам (Кириллица, пробелы, знаки препинания). Пример входной строки, сформированной неверно (см. Рисунок 2. Результат работы программы 2): Привет, mama! Рисунок 2. Результат работы программы 2 3.3 Тест №3 Проверка правильности шифрования (строка без знаков препинания). Поэтапный результат работы программы представлен в приложениях №5 - №9. Таким образом, убеждаемся, что шифрование происходит верно. 3.4 Тест №4 Тест для проверки правильности шифрования (строка, в которой есть знаки препинания). Поэтапный результат работы программы представлен в приложениях №10 - №20. Таким образом, убеждаемся, что шифрование происходит верно. ЗаключениеЦель данной работы заключалась в разработке приложения для решения задачи шифрования текста при помощи шифра Виженера. В ходе разработки приложения были изучены особенности шифрования при помощи данного метода, а именно алгоритм шифрования (Приложение №3 - Блок схема). Консольное приложение, решающее поставленную задачу, написано на языке программирования C#. В ходе разработки был освоен новый класс регулярных выражений RegEx, который содержит методы поиска и сравнения для выполнения сопоставления шаблона с текстом. Этот метод в программе использовался при поиске латинских символов в строке. Также неоднократно использовался при написании адаптационного кода для латинского алфавита. Использовать методы класса RegEx намного проще и быстрее, чем, например, задавать диапазон чисел латинского алфавита и кириллицы, используя таблицу кодировки ACSII. Данное приложение было протестировано при помощи ряда тестов. Первые два теста связаны с неправильным формированием входной строки. При помощи первого теста выявляется реакция программы на нулевую размерность строки. Второй тест показывает результат работы программы, если строка сформирована неверно, то есть содержит символы латинского алфавита. В третьем тесте использовалась строка, состоящая только из пяти символов латинского алфавита. В четвертом тесте использовалась строка, содержащая пробелы и знаки препинания. При описании тестов была представлена побуквенная реализация. Данный метод шифрования можно использовать и для других алфавитов. В приложении №21 представлен измененный программный код, который позволяет шифровать подобным методом строки на латинском алфавите. В приложении №22 показан результат работы программы. В ходе тестирования был проведен анализ работы программы, а именно выявлена зависимость времени выполнения программы от длины входной строки. Результаты анализа представлены на диаграмме (Приложение № 23). Глоссарий
Список использованных источников
Приложения
|