
- •Федеральное агентство по образованию Московский государственный горный университет отчет
- •Содержание
- •Лабораторная работа №1 Система перестановок. Система магических квадратов.
- •Теоретическая часть
- •Выполнение
- •Лабораторная работа №2 Системы сложных подстановок
- •Теоретическая часть
- •Задание
- •Выполнение
- •Лабораторная работа №3 Стандарт шифрования данных des
- •Теоретическая часть
- •Задание
- •Выполнение
- •Лабораторная работа №4
- •Теоретическая часть
- •Задание
- •Выполнение
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •Приложение 4
Задание
1. Написать программу, реализующую алгоритм Цезаря с ключевым словом для защиты текстовых файлов. Использовать данный алгоритм для создания динамически подгружаемой библиотеки.
2. Написать программу, реализующую алгоритм Гронсфельда для защиты текстовых файлов. Использовать данный алгоритм для создания динамически подгружаемой библиотеки.
3. Написать программу для криптоанализа и дешифровки текстовых файлов, защищенных по рассмотренным алгоритмам.
Выполнение
Окно работы программы системы Цезаря с ключевым словом представлено на рис.3.
Рис 3. Реализация системы Цезаря с ключевым словом
В полях «Ключевое слово» и «Ключевое число» вводим ключевые слово и число. С помощью кнопки «Получить подстановку» получаем подстановку, благодаря которой будем шифровать. Нажав кнопку «Зашифровать», получаем шифр в поле «Зашифрованный текст».
Окно работы программы шифра Гронсвельда представлено на рис.4.
Рис. 4. Реализация шифра Гронсфельда
В полях «Шифруемый текст» и «Ключ» вводим необходимые значения. С помощью кнопки «Шифровать» получаем шифр в поле «Результат». Аналогично и для операции дешифрования.
Листинги программ представлены в Приложении 2.
Вывод: в ходе выполнения данной лабораторной работы изучен метод шифрования по Гронсфельду и метод по Цезарю.
Лабораторная работа №3 Стандарт шифрования данных des
Цель работы: создание программной реализации сложных криптографических систем
Теоретическая часть
Данные шифруются 64-битными блоками на основе 56-битного ключа (ключ 64-битный, но используются в нем только 56 бит). Для расшифровки используется тот же ключ.
где:
Text |
исходный текст (блок 64 бита) |
Crypt |
зашифрованный блок |
Key |
64-х разрядный ключ |
числа |
разрядность на данной ветке алгоритма |
P, Pk |
перестановки |
S |
подстановка 6 бит -> 4 бита |
L(i) |
сдвиг (i - - номер итерации) |
xor |
сложение по модулю 2 |
]- |
конкатенация битовых строк, причем верхняя - спереди |
-[ |
разбиение строки на две, причем первая - наверху |
--[]--- |
ограниченный точками участок повторяется 16 раз |
Перестановки выполняются по обычной формуле D[i] = S[P[i]], где:
S |
исходная строка (массив символов, нумерация с единицы) |
D |
результат перестановки (массив символов, нумерация с единицы) |
Р |
таблица перестановок (массив индексов в строке S) |
S - подстановка 6->4. В соответствие шести битам ставится четыре. Подстановка производится по следующему правилу: пусть исходная битовая строка - /abcdef/, тогда /af/ - номер строки, a /bcde/ -номер столбца. Строка и столбец определяют местонахождение результата в S-таблице. Например, при использовании таблицу S6, число 58 (111010) переводится в 13 (1101).
Хеширование ключа
Действительно, при разработке любого криптоалгоритма следует учитывать, что в половине случаев конечным пользователем системы является человек, а не автоматическая система. Это ставит вопрос о том, удобно, и вообще реально ли человеку запомнить 128-битный ключ (32 шестнадцатеричные цифры). На самом деле предел запоминаемости лежит на границе 8-12 подобных символов, а, следовательно, если мы будем заставлять пользователя оперировать именно ключом, тем самым мы практически вынудим его к записи ключа на каком-либо листке бумаги или электронном носителе, например, в текстовом файле. Это, естественно, резко снижает защищенность системы.
Метод хеширования, позволяет пользователям запоминать не 128 байт, то есть 256 шестнадцатеричных цифр ключа, а некоторое осмысленное выражение, слово или последовательность символов, называющуюся паролем.
Для решения этой проблемы были разработаны методы, преобразующие произносимую, осмысленную строку произвольной длины - пароль, в указанный ключ заранее заданной длины. В подавляющем большинстве случаев для этой операции используются так называемые хеш-функции (от англ, hashing - мелкая нарезка и перемешивание). Хеш-функцией называется такое математическое или алгоритмическое преобразование заданного блока данных, которое обладает следующими свойствами:
1. хеш-функция имеет бесконечную область определения,
2. хеш-функция имеет конечную область значений,
3. она необратима,
4. изменение входного потока информации на один бит меняет около половины всех бит выходного потока, то есть результата хеш-функции.
Эти свойства позволяют подавать на вход хеш-функции пароли, то есть текстовые строки произвольной длины на любом национальном языке и, ограничив область значений функции диапазоном 0..2N-1, где N - длина ключа в битах, получать на выходе достаточно равномерно распределенные по области значения блоки информации - ключи. Характер применения блочного шифра для хеширования определяется отношением размера блока используемого криптоалгоритма и разрядности требуемого хеш-результата.
Вся строка-пароль разбивается на блоки байт, равные по длине ключу используемого для хеширования блочного шифра, затем производятся преобразования по рекуррентной формуле: Нj=Нj-i XOR EnCrypt(Hj-iPSWj), где EnCrypt(X,Key) - используемый блочный шифр (рис.17).