Файл: Лабораторная работа состоит из двух программ.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 162

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.



Лабораторная работаИзучение ассиметричного алгоритма шифрования RSAЛабораторная работа состоит из двух программ:

  • первая программа RSA.exe представляет собой реализацию в обучающем режиме алгоритма RSA.

  • вторая программа DemoRSA.exe позволяет в демонстрационном режиме наглядно увидеть этапы работы алгоритма RSA на конкретном примере генерации открытого и закрытого ключа, шифрования/дешифрования информации.

1ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1Основы работы с программой

При запуске программы (файл RSA.exe) появляется главная форма (см. рис 1), в которой и будет происходить вся дальнейшая работа. Форма имеет главное меню программы, куда входят такие пункты как «Вызов деморежима», «Вызов справки», «О программе» и «Выход».Рис.1 ­- Главное окно программы Rsa.exeНа рисунке приняты следующие обозначения:1 – главное меню программы;2 – окно выбора количества бит в числах p и q;3 – кнопка генерации случайных простых чисел p и q в соответствии с размером, выбранным в окне 2;4 – поле ввода/отображения сгенерированного простого числа q;5 – поле ввода/отображения сгенерированного простого числа q;6 – кнопка вычисления произведения n=p*q;7 – поле отображения произведения;9 – кнопка вычисления функции Эйлера от числа n;10 – поле отображения значения функции Эйлера от числа n;11 – окно выбора открытой экспоненты e из простых чисел Ферма;12 – кнопка вычисления секретной экспоненты d;13 – поле отображения секретной экспоненты d;14 – поле отображения открытого ключа;15 – поле отображения секретного ключа;16 – поле отображения пути к исходному файлу;17 – кнопка, при нажатии на которую открывается диалоговое окно выбора исходного файла, который требуется зашифровать; 18 – поле отображения пути к папке, в которую сохранится файл отчета о процессе шифрования;19 – кнопка, при нажатии на которую открывается диалоговое окно выбора папки для сохранения отчета;20 – кнопка, при нажатии на которую начинается процесс шифрования входного файла или строки;
21 – прогресс-бар, показывающий, какая часть файла обработана;22 – кнопка, при нажатии на которую открывается диалоговое окно выбора папки для сохранения отчета;23 – поле отображения пути к папке, в которую сохранится файл отчета о процессе дешифрования;24 – кнопка, при нажатии на которую начинается процесс дешифрования; 25 – прогресс-бар, показывающий, какая часть файла обработана; 26 – картинка, изображающая процесс шифрования и дешифрования информации с помощью ассиметричного алгоритма RSA.При наведении курсора мыши на поля вывода информации и чисел появляются всплывающие подсказки. Например, поле на этапе «Вычисление значения функции Эйлера от числа n» имеет подсказку, представленную на рис.2.Рис.2 – Всплывающая подсказкаСуществует возможность вызвать демонстрационный модуль в главной форме из меню. Окно деморежима представлено на рис.3.Рис.3 – Окно демонстрационного режимаПри нажатии на единственную на форме кнопку Run, начинается демонстрация работы алгоритма шифрования. Можно просто наблюдать, как происходит генерация ключей и шифруется, а затем и дешифруется некоторый текст.Для большей наглядности в деморежиме генерируется ключ небольшой разрядности, и шифруемый текст состоит всего из четырех символов.

1.2Краткая теория

Основой для лабораторной работы является алгоритм шифрования с открытым ключом RSA.RSA (буквенная аббревиатура от фамилий Rivest, Shamir и Adleman) - криптографический алгоритм с открытым ключом. RSA стал первым алгоритмом такого типа, пригодным и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений.В криптографической системе с открытым ключом каждый участник располагает как открытым ключом (public key), так и секретным ключом (secret key). Каждый ключ - это часть информации. В криптографической системе RSA каждый ключ состоит из пары целых чисел. Каждый участник создаёт свой открытый и секретный ключ самостоятельно. Секретный ключ каждый из них держит в секрете, а открытые ключи можно сообщать кому угодно или даже публиковать их. Открытый и секретный ключи каждого участника обмена сообщениями образуют «согласованную пару» в том смысле, что они являются взаимно обратными.

Алгоритм RSA состоит из следующих пунктов:

  1. Выбрать простые числа p и q заданного размера (например, 512 битов каждое).
В криптографии под случайным простым числом понимается простое число, содержащее в двоичной записи заданное количество битов k, на алгоритм генерации которого накладываются определенные ограничения.

  1. Вычислить n = p * q

  2. Вычисляется значение функции Эйлера от числа n:
m = (p - 1) * (q - 1)

  1. Выбрать число d взаимно простое с m
Два целых числа называются взаимно простыми, если они не имеют никаких общих делителей, кроме ±1. Примеры: 14 и 25 взаимно просты, а 15 и 25 не взаимно просты (у них имеется общий делитель 5).

  1. Выбрать число e так, чтобы e * d = 1 (mod m)
Числа e и d являются ключами. Шифруемые данные необходимо разбить на блоки - числа от 0 до n - 1. Шифрование и дешифровка данных производятся следующим образом:Шифрование: P(M) = Me mod n Дешифровка: S(C) = Cd mod n Следует также отметить, что ключи e и d равноправны, т.е. сообщение можно шифровать как ключом e, так и ключом d, при этом расшифровка должна быть произведена с помощью другого ключа.Схема шифрования и дешифрования RSA представлена на рис.4. Предположим, сторона B хочет послать стороне А сообщение М. Сообщением являются целые числа от 0 до n-1. Рис.4 – Схема шифрования/дешифрования RSAРазмер ключа в алгоритме RSA связан с размером модуля n. Два числа p и q, произведением которых является модуль, должны иметь приблизительно одинаковую длину, поскольку в этом случае найти сомножители (факторы) сложнее, чем в случае, когда длина чисел значительно различается. Например, если предполагается использовать 768-битный модуль, то каждое число должно иметь длину приблизительно 384 бита. Обратите внимание, что если два числа чрезвычайно близки друг к другу или их разность близка к некоторому предопределенному значению, то возникает потенциальная угроза безопасности, однако такая вероятность – близость двух случайно выбранных чисел – незначительна. Оптимальный размер модуля определяется требованиями безопасности: модуль большего размера обеспечивает большую безопасность, но и замедляет работу алгоритма RSA. Длина модуля выбирается в первую очередь на основе значимости защищаемых данных и необходимой стойкости защищенных данных и во вторую очередь – на основе оценки возможных угроз.
На 2009 год система шифрования на основе RSA считается надёжной, начиная с размера n = p * q в 1024 бита. В лабораторной работе предлагается выбрать размер чисел p и q, и сгенерировать ключ размерами 64 (при выборе размерности простых чисел из выпадающего списка – 32 бита), 128, 256, 512, 1024 бита. Более подробную информацию о данном алгоритме шифрования и конкретные примеры можно получить из справки, а также из источников, указанных в литературе.

2Практическая часть


  1. Ознакомиться с теоретической частью данной лабораторной работы.

  1. Запустить файл RSA.exe и изучить интерфейс программы.

  1. Запустить из меню программы деморежим и просмотреть его до конца.

  1. Постараться реализовать разобранный пример:
4.1. Выбрать из выпадающего списка размерность чисел p и q. Для начала это будет 32 бита. Следовательно, ключ будет 64-битный.4.2. С помощью генератора случайных простых чисел сгенерировать p и q (кнопка «Генерация»).4.3. Нажатием на соответствующие кнопки вычислить n и f(n).4.4. Из выпадающего списка выбрать открытую экспоненту. Пусть это будет 17.4.5. Нажать на кнопку, вычисляющую секретную экспоненту. В полях для вывода открытого и закрытого ключа будут примерно такие числа, как на рис.5. Рис.5 – Ключи сгенерированыВставьте в отчет по лабораторной работе эти ключи.4.6. Выбрать текстовый файл размером 1 байт (то есть в файле должен быть один символ). Выбрать папку для сохранения зашифрованного файла.4.7. Нажмите на кнопку «Шифровать». Посмотрите размер зашифрованного файла. Его название будет таким: название исходного файла + ‘_crypt’. Объясните, почему 1 байт информации шифруется столькими байтами при ключе размером 64 бита. Выводы и сам зашифрованный текст вставьте в отчет.4.8. Зашифруйте файл размером от 8 до 16 байт, то есть 8-16 символов. Посмотрите размер полученного файла. Объясните, выводы вставьте в отчет.4.9. Нажмите на кнопку «Дешифровать». Теперь вы видите, как восстанавливается исходный файл. Его название будет таким: название исходного файла + ‘_decrypt’.5. Проделать все действия, описанные в пункте 4, для ключа размером 1024 бита. Для этого выбрать размерность чисел p и q 512 бит. В отчет вставить выводы по пунктам, а также ключи и содержимое исходного, зашифрованного и дешифрованного файлов.

  1. Проверка алгоритма на помехоустойчивость:
Сгенерировать ключи произвольной длины. Зашифровать и дешифровать некоторый небольшой файл (меньше 350 байт – для шифрования файла большего размера потребуется слишком много времени, RSA – медленный алгоритм). Затем изменить один символ в шифрованном файле и попытаться дешифровать. Вставить в отчет результат и сделать выводы.

  1. Проверка алгоритма на криптостойкость:
Сгенерировать ключи произвольной длины. Зашифровать и дешифровать некоторый небольшой файл. Изменить один символ в закрытом (секретном) ключе. В поле, изображенном на рис.6. Рис.6 – В этом поле нужно изменять секретный ключДешифровать файл таким ключом. Результат и выводы оформить в отчет.

  1. Сгенерировать ключи произвольной длины. Для шифрования выбрать любой нетекстовый файл, например, с расширением .bmp. Зашифровать и дешифровать его. Удалить из названия дешифрованного файла «_decrypt», убедиться, что он полностью идентичен исходному.
8. Проверка скорости работы алгоритма:8.1. Зашифровать небольшой файл (1 Кбайт - 100 Кбайт), и посмотреть время шифрования.8.2. Дешифровать закодированный файл и посмотреть время дешифрования. Сравнить время шифрования и дешифрования. Сделать выводы. Проверить на работоспособность и корректность преобразования дешифрованный файл.8.3. Зашифровать большой файл (100 Кбайт - 350 Кбайт), и посмотреть время шифрования.8.4. Дешифровать закодированный файл и посмотреть время дешифрования. Сравнить время шифрования и дешифрования. Сделать вывод, объяснить, почему файл дешифруется дольше, чем шифруется. Проверить на работоспособность и корректность преобразования дешифрованный файл.9. Сделать общие выводы по работе. В отчете должны быть вставлены файлы-отчеты.

3СОДЕРЖАНИЕ ОТЧЕТА

Отчет о лабораторной работе должен содержать:

  1. Титульный лист

  2. Цель работы

  3. Краткую теорию, описывающую алгоритм RSA.

  4. Подробное описание проделанных экспериментов по пунктам 4­­ - 8, со всеми выводами и объяcнениями.

4ЛИТЕРАТУРА


  1. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. Б. Шнайер- М.: Издательство Триумф, 2002-816с.

  2. http://www.e-nigma.ru/stat/rsa/

  3. http://ru.wikipedia.org/wiki/RSA

  4. http://www.cybersecurity.ru/manuals/crypto/algorithm/1868.html