методические указания. Лабораторная работа состоит из двух программ
Скачать 271.5 Kb.
|
Лабораторная работа Изучение ассиметричного алгоритма шифрования 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 состоит из следующих пунктов: Выбрать простые числа p и q заданного размера (например, 512 битов каждое). В криптографии под случайным простым числом понимается простое число, содержащее в двоичной записи заданное количество битов k, на алгоритм генерации которого накладываются определенные ограничения. Вычислить n = p * q Вычисляется значение функции Эйлера от числа n: m = (p - 1) * (q - 1) Выбрать число d взаимно простое с m Два целых числа называются взаимно простыми, если они не имеют никаких общих делителей, кроме ±1. Примеры: 14 и 25 взаимно просты, а 15 и 25 не взаимно просты (у них имеется общий делитель 5). Выбрать число 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Практическая частьОзнакомиться с теоретической частью данной лабораторной работы. Запустить файл RSA.exe и изучить интерфейс программы. Запустить из меню программы деморежим и просмотреть его до конца. Постараться реализовать разобранный пример: 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 бит. В отчет вставить выводы по пунктам, а также ключи и содержимое исходного, зашифрованного и дешифрованного файлов. Проверка алгоритма на помехоустойчивость: Сгенерировать ключи произвольной длины. Зашифровать и дешифровать некоторый небольшой файл (меньше 350 байт – для шифрования файла большего размера потребуется слишком много времени, RSA – медленный алгоритм). Затем изменить один символ в шифрованном файле и попытаться дешифровать. Вставить в отчет результат и сделать выводы. Проверка алгоритма на криптостойкость: Сгенерировать ключи произвольной длины. Зашифровать и дешифровать некоторый небольшой файл. Изменить один символ в закрытом (секретном) ключе. В поле, изображенном на рис.6. Рис.6 – В этом поле нужно изменять секретный ключ Дешифровать файл таким ключом. Результат и выводы оформить в отчет. Сгенерировать ключи произвольной длины. Для шифрования выбрать любой нетекстовый файл, например, с расширением .bmp. Зашифровать и дешифровать его. Удалить из названия дешифрованного файла «_decrypt», убедиться, что он полностью идентичен исходному. 8. Проверка скорости работы алгоритма: 8.1. Зашифровать небольшой файл (1 Кбайт - 100 Кбайт), и посмотреть время шифрования. 8.2. Дешифровать закодированный файл и посмотреть время дешифрования. Сравнить время шифрования и дешифрования. Сделать выводы. Проверить на работоспособность и корректность преобразования дешифрованный файл. 8.3. Зашифровать большой файл (100 Кбайт - 350 Кбайт), и посмотреть время шифрования. 8.4. Дешифровать закодированный файл и посмотреть время дешифрования. Сравнить время шифрования и дешифрования. Сделать вывод, объяснить, почему файл дешифруется дольше, чем шифруется. Проверить на работоспособность и корректность преобразования дешифрованный файл. 9. Сделать общие выводы по работе. В отчете должны быть вставлены файлы-отчеты. 3СОДЕРЖАНИЕ ОТЧЕТАОтчет о лабораторной работе должен содержать: Титульный лист Цель работы Краткую теорию, описывающую алгоритм RSA. Подробное описание проделанных экспериментов по пунктам 4 - 8, со всеми выводами и объяcнениями. 4ЛИТЕРАТУРАПрикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. Б. Шнайер- М.: Издательство Триумф, 2002-816с. http://www.e-nigma.ru/stat/rsa/ http://ru.wikipedia.org/wiki/RSA http://www.cybersecurity.ru/manuals/crypto/algorithm/1868.html |