Разработка программы-тренажера для изучения асимметричного алгоритма шифрования RSA
Автор: Сидоров Дмитрий Петрович, Аббакумов Андрей Александрович
Журнал: Образовательные технологии и общество @journal-ifets
Статья в выпуске: 3 т.21, 2018 года.
Бесплатный доступ
В статье рассматриваются вопросы организации преподавания дисциплины «Защита информации» при подготовке бакалавров по направлению «Информатика и вычислительная техника». Предложено создание программы-тренажера для алгоритма шифрования RSA, которое позволит повысить наглядность как теоретических занятий, так и лабораторных. Разработанное приложение в удобной форме отображает все этапы вычислений, необходимых для шифрования по алгоритму RSA, содержит интерактивную справочную систему, позволяет генерировать отчеты о проделанной работе. Программа-тренажер может использоваться как на аудиторных занятиях, так и для самостоятельной подготовки студентов. Это делает возможным ее применение в системах дистанционного обучения.
Программа-тренажер, защита информации, шифрование с открытым ключом, алгоритм rsa, дистанционное обучение
Короткий адрес: https://sciup.org/140224592
IDR: 140224592
Текст научной статьи Разработка программы-тренажера для изучения асимметричного алгоритма шифрования RSA
В настоящее время в учебном плане подготовки бакалавров по направлению «Информатика и вычислительная техника» присутствует дисциплина «Защита информации». Более того, данная дисциплина присутствует во многих учебных планах по которым ведется подготовка бакалавров и магистров инженерных направлений. Название учебной дисциплины и ее объем может несколько варьироваться в зависимости от профиля подготовки, но суть в том, что на данном этапе развития информационных технологий уже невозможно представить себе квалифицированного инженера не владеющего хотя бы основными знаниями из области информационной безопасности. Такие понятия как шифрование, электронная подпись и т.п. в настоящее время прочно вошли в нашу жизнь и используются далеко за пределами инженерных специальностей.
Один из основных разделов дисциплины «Защита информации» составляет материал, посвященный алгоритмам шифрования. Для лучшего усвоения и осмысления методов преобразования информации, положенных в основу современных алгоритмов шифрования, теоретический материал дополняется лабораторными и/или практическими занятиями. При организации и проведении подобных занятий приходится сталкиваться со следующими трудностями:
-
- Большинство современных алгоритмов шифрования являются достаточно сложными для их практической реализации на выбранном языке программирования.
-
- Для написания качественного кода от студента требуется значительный опыт программирования именно в заданной области, т.е. опыт программной реализации алгоритмов шифрования.
-
- Выполнение программной реализации требует значительных затрат времени, которые превосходят объем лабораторного занятия.
-
- Многие алгоритмы шифрования (особенно асимметричные) требуют дополнительных математических знаний, а также изучения и последующей реализации некоторых вспомогательных алгоритмов помимо собственно алгоритма шифрования. Например, алгоритм RSA требует для своей работы наличие алгоритмов целочисленной арифметики с большими числами.
Поэтому представляется нецелесообразным выдавать задания в виде лабораторной работы, которое бы состояло в том, что студент должен выполнить программную реализацию заданного алгоритма шифрования. Выполнение такой работы займет практически все аудиторное время.
Однако, как показывает практика, если лекционный материал не подкрепляется рассмотрением каких-либо примеров и самостоятельным выполнением определенных заданий по рассматриваемым алгоритмам, то такой материал усваивается студентами весьма поверхностно. Зачастую он не вызывает какого-либо интереса к изучению в силу того, что воспринимается как нечто абстрактное, не имеющее никакой практической значимости. [1]
В связи с вышесказанным представляется целесообразным разработать программу-тренажер, которая бы реализовывала определенный алгоритм шифрования и позволяла бы студентам в пошаговом режиме рассмотреть результат выполнения всех предписанных алгоритмом действий по преобразованию информации. Данная программа оказалась бы полезной не только как инструмент для выполнения лабораторной работы, но и могла бы использоваться студентами для самостоятельной подготовки, для более глубокого изучения теоретического материала.
Более того, предлагаемая к разработке программа-тренажер могла бы использоваться в системах дистанционного обучения, что особенно актуально в настоящее время. [2]
Теоретическая часть
Как уже указывалось ранее, одним из основных разделов дисциплины «Защита информации» являются алгоритмы шифрования. В настоящее время все алгоритмы шифрования можно разделить на два класса: симметричные и асимметричные (другое часто используемое название – алгоритмы с открытым ключом). В качестве целевого алгоритма для программы-тренажера представляется более интересным выбрать один из асимметричных алгоритмов. Это связано с тем, что на основе подобных алгоритмов строятся не только системы шифрования, но и системы электронной подписи. А понятие электронной подписи в настоящее время используется достаточно широко в связи с постепенным переходом на электронный документооборот в очень многих областях человеческой деятельности.
Из всего многообразия асимметричных алгоритмов для реализации был выбран алгоритм RSA (аббревиатура от фамилий его разработчиков Rivest, Shamir и Adleman). Это криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений, включая PGP, S/MIME, TLS/SSL, IPSEC/IKE и других. [1]
Исходя из всего вышесказанного ставится задача разработки программы-тренажера для изучения асимметричного алгоритма шифрования RSA. Данная программа должна поэтапно и наглядно осветить работу указанного алгоритма.
Функционал разрабатываемого приложения должен обеспечивать следующие возможности:
-
- Поскольку алгоритм работает с данными в виде больших целых чисел, предусмотреть возможность ввода параметров и ключевых данных или же их автоматической генерацией на усмотрение пользователя.
-
- Необходимо предусмотреть поля для ввода и вывода шифруемой\дешифруемой информации.
-
- На всех этапах работы шифра RSA необходимо привести краткое описание текущего этапа; в случаях, когда возникает необходимость в подробной информации по выполняемому действию, осуществить возможность доступа к справочнику программы (реализуемому в отдельном файле справки).
-
- Для каждого этапа организовать вывод промежуточной информации – больших чисел в виде десятичного числа, шестнадцатеричного числа, массива байтов, в форме которого число хранится в памяти.
-
- Организовать учет времени выполнения операций шифрования и дешифрования информации с возможностью сравнения и оценки временных интервалов;
-
- Разработать отчетный материал по лабораторной работе, предусмотреть возможность сохранения и открытия отчетов.
-
- Предусмотреть возможность выполнения операций за- и расшифрования не только текстовых сообщений, но и файлов произвольного формата.
-
- Создать интерактивную справочную систему, содержащую всю информацию и лекционный материал по алгоритму RSA и вспомогательных алгоритмах, используемых в его реализации.
Реализация программы-тренажера для изучения алгоритма RSA
В результате проведенной работы было создано приложение «Виртуальная лаборатория: Асимметричный алгоритм шифрования RSA». Программа представляет собой оконное приложение, которое было разработано на объектно-ориентированном языке C# в среде Microsoft Visual Studio 2012.
После запуска исполняемого файла, открывается главное меню приложения (рис. 1).

Рис. 1. Главное меню приложения
Данное меню предоставляет пользователю доступ к различному функционалу виртуальной лаборатории: изучение алгоритма, просмотр отчетов, интерактивный справочник и шифрование файлов.
Выбрав первый пункт меню, а именно «Изучить алгоритм», пользователю откроется окно, изображенное на рисунке 2.
ВЛ RSA: Изучение алгоритма
Общие положения 1. Взятие чисел 2. Вычисление произведений 3. Публичный ключ 4. Приватный ключ 5. Зашифрование 6. Расшифрование * k
Система RSA была предложена в качестве первой криптографической системой с открытым ключом в 1978 году и стало достаточно широко известной. Ее название происходит от первых букв фамилий авторов Rivest Shamir и Aldeman, которые придумали ее во время совместных исследований в Массачусетском технологическом институте в 1977 году. Она основана на трудности разложения очень больших целых чисел на простые сомножители. Алгоритм ее работает так:
-
1.Выбрать два больших простых числа р и q.
2.Вычислитьдва произведенияn=p*q иф = (p-1)*(q-1)
4.Вычислить d, удовлетворяющее у ело вию e*d г 1 (mod ф). (Такое число d существует на основании теоремы о количестве решений сравнения первой степени.) Числа d и п сохраняется как закрытый ключ.
З.Выбирать случайное целое число е, такое что НОД(е, ф) = 1. Числа е и п публикуются как открытый ключ шифрования.
Б.Если m - сообщение, длина которого, определяемая по значению выражаемого им целого числа, должна быть в интеовале Л. пУ то оно превращается в шифровку возведением в степень е по модулю п и отправляется получателю с = mf mod и .
б.Получатель сообщения расшифровывает его. возводя в степень d по модулю п. так как m = cd mod и.
Вданных текстовых сносках будет представлена общая инфомация по этапам алгоритма. Для получения более полной информации вы в любой момент можете обратиться к Интер активному справочнику, нажав кнопку?.
Рис. 2. Окно изучения алгоритма: Вкладка «Общие положения»
Стоит обратить внимание на кнопку «?» рядом с кнопкой закрытия окна, которая при нажатии откроет интерактивную справочную систему.
Как можно видеть из рисунка 2, процесс изучения алгоритма состоит из нескольких шагов, каждый из которых представлен на собственной вкладке, а именно:
-
- Общие положения;
-
- Взятие чисел;
-
- Вычисление произведений;
-
- Публичный ключ;
-
- Приватный ключ;
-
- Зашифрование;
-
- Расшифрование;
-
- Итоги.
На первой вкладке «Общие положения», приведена некоторая историческая информация об алгоритме RSA и, собственно, сам алгоритм.
На вкладке «Взятие чисел», представленной на рисунке 3, задаются ключевые параметры алгоритма – пара простых больших чисел.

Рис. 3. Окно изучения алгоритма: Вкладка «Взятие чисел»
Все числа в приложении представлены тремя формами – в виде десятичного числа, в виде шестнадцатеричного (HEX) числа, и в форме массива чисел со значениями от 0 до 255 (байтов), в виде которых большие числа хранятся в памяти. В отличии от первых двух форм представления числа, байтовый массив при чтении его слева направо будет содержать байты начиная с младшего и заканчивая старшим.
Пользователю предоставляется выбор: ввести числа вручную, поставив соответствующую «галочку», либо автоматически сгенерировать их. В первом случае, для удобства подбора простых чисел добавлена таблица простых чисел, её можно вызвать, нажав на соответствующую кнопку формы.
В случае, когда пользователь желает автоматически сгенерировать простые числа, можно задать параметры генерации, вызвав окно настроек нажатием на кнопку «Параметры» (рис. 4).

Рис. 4. Окно «Параметры»
Параметры генерации можно задать двумя способами: с указанием диапазона количества десятичных разрядов и с указанием разрядности генерируемого числа в битах. На приведенном рисунке были заданы параметры генерации чисел разрядностью 128 бит. Следует отметить, что данное значение не удовлетворяет требованиям безопасности, предъявляемым к параметрам алгоритма RSA, и было выбрано исключительно в учебных целях. [3]
После задания параметров генерации, для инициализации приложения данными числами необходимо нажать кнопку «Генерация и инициализация». Результат данного действия представлен на рисунке 3.
На следующей вкладке «Вычисление произведений» представлен этап с одноименным названием. Соответствующее окно по своему внешнему виду и функционалу в значительной степени повторяет окно из рисунка 3, поэтому здесь не приведено дабы не загромождать изложение избыточным графическим материалом.
Следующий этап – вкладка «Публичный ключ» (рис. 5). Так же, как и с простыми числами вкладки «Взятие чисел», число, представляющее открытый ключ может быть сгенерировано автоматически или задано вручную в соответствии с правилами выбора ключа. Генерация и инициализация приложения ключом производится по нажатию соответствующей кнопки. Результат этого действия отражен на рисунке 5.

Рис. 5. Окно изучения алгоритма: Вкладка «Публичный ключ»
Следует отметить, что в отличие от двух предыдущих шагов, результат выполнения этого шага, т.е. публичный ключ, может быть сохранен в файл. Это можно осуществить нажав на кнопку «Сохранить». В результате откроется стандартное диалоговое окно сохранения файла. В дальнейшем сохраненный ключ может быть использован за пределами процесса изучения алгоритма, т.е. в разделе «Шифрование файлов».
Перейдя на следующую вкладку – «Приватный ключ» пользователь переходит к этапу вычисления секретного параметра алгоритма с использованием ранее сгенерированного публичного ключа. Приватный ключ также может быть сохранен в файл, как и публичный. В силу схожести вкладок «Публичный ключ» и «Приватный ключ», изображение последней здесь не приведено.
Следующий этап алгоритма реализован на вкладке «Зашифрование», представленной на рисунке 6.

Рис. 6. Вкладка зашифрования. Исходное сообщение
Сначала пользователю предлагается ввести некоторое текстовое сообщение. Затем в соответствии с ранее сгенерированными параметрами алгоритма, сообщение преобразуется в числовую форму – набор байтовых массивов, из которых будут получены большие целые числа. Это продиктовано тем, что алгоритм работает только с числовой информацией. Преобразование производится нажатием кнопки «Разбить и преобразовать» (рис. 7).

Рис. 7. Вкладка зашифрования. Преобразованное сообщение
Далее производится процесс шифрования с использованием полученных ранее ключей, нажатием кнопки «Зашифровать» (рис. 8). В результате пользователь получает шифротекст и информацию о времени работы алгоритма, размере блоков и их количестве.

Рис. 8. Вкладка зашифрования. Шифротекст
Следующий этап алгоритма закономерно называется «Расшифрование» и представлен на одноименной вкладке. Изображение данной вкладки не приведено здесь в силу ее схожести с вкладкой «Зашифрование». Здесь действия производится в обратном порядке. Сначала перед пользователем выводится ранее зашифрованное сообщение в виде набора байтовых массивов. Шифротекст расшифровывается при нажатии кнопки «Расшифровать». В результате будет получен набор байтов исходного сообщения и время выполнения операции расшифрования. Все, что осталось сделать, заменить каждый байт сообщения печатным символом и собрать исходное сообщение воедино, нажав соответствующую кнопку.
Последняя из рассматриваемых вкладок этапа «Изучение алгоритма» – вкладка «Итоги» (рис. 9). Здесь можно сформировать отчет для просмотра кнопкой «Вывести отчет», а также сохранить его в файл для передачи контролирующему лицу – кнопка «Сохранить отчет». В данном отчете будут отражены все параметры алгоритма и статистические данные, а также информация о проделанной работе.

Рис. 9. Окно изучения алгоритма: Вкладка «Итоги»
Р (16 |
байт): |
87 DC |
63 CE |
q (16 |
байт): |
EF BO |
E3 CB |
П (32 |
байт); |
45 2F |
81 38 |
Ф (32 |
байт): |
CE Al |
39 ЭЕ |
e (23 |
байт): |
IC 6C |
49 9F |
d (32 |
байт): |
Второй по порядку пункт главного меню откроет окно просмотра отчета. Здесь пользователь, будь то контролирующее лицо или сам студент, может просмотреть ранее сохраненный файл отчета. Поскольку в отчете сохранены все параметры алгоритма, в том числе публичный и приватный ключи, программа предоставляет возможность восстановить пару ключей из файла отчета.
Следующий пункт меню главного меню – «Справочник», откроет интерактивную справочную систему по алгоритму RSA. Справочник реализован в файле справки формата CHM. В нем собрана все необходимая информация по алгоритму шифрования RSA, а также вспомогательным алгоритмам, участвующим в реализации основного алгоритма. Архитектура файла справки предоставляет удобства в плане каталогизации информации, поиска по ключевым словам и главам.
Четвертый пункт меню «Шифрование файлов» откроет окно, в котором реализован основной функционал алгоритма – шифрование файлов (рис. 10).

Рис. 10. Шифрование файлов
Данное окно предоставляет пользователю следующие возможности:
- Генерировать новые пары ключей (кнопка «Сгенерировать новые ключи») и сохранить их в указанной директории.
-
- Подключать приватный и публичный ключи, независимо друг от друга с помощью кнопок «Открыть публичный ключ» и «Открыть приватный ключ». Это продиктовано особенностями использования асимметричных алгоритмов: на практике публичный ключ – это чей-то чужой ключ, а приватный – свой собственный. [3]
-
- Подключив необходимый ключ, можно выбрать требуемую операцию («Зашифровать» или «Расшифровать»). Далее пользователь может в реальном времени наблюдать за ходом процесса шифрования, и при необходимости отменить его в любой момент.
Следует отметить, что операция шифрования файлов реализована исключительно для учебных целей и не предполагается использовать данную программу для решения прикладных задач в сфере защиты информации. В связи с этим функционал данного приложения значительно уступает аналогичным программам, имеющим прикладной характер. [3]
Анализ и оценка разработки
Использование разработанной программы-тренажера в учебном процессе позволит повысить качество преподавания дисциплины «Защита информации», в частности раздела, посвященного асимметричным алгоритмам шифрования. Проводя самостоятельные эксперименты, обучаемые могут убедиться в истинности приобретаемых теоретических знаний. Средства визуализации исходных, промежуточных и конечных данных в алгоритме шифрования RSA повышают интерес к детальному изучению теоретического материала, делают более легким процесс усвоения этого материала. [2]
Следует отметить, что Государственный стандарт отводит на самостоятельное изучение предмета такое же количество академических часов, какое выделяется на работу в аудитории. Разработанная программа-тренажер позволит студенту самостоятельно изучить все особенности алгоритма RSA и прийти в лабораторию с определенным запасом знаний по указанной теме, чтобы успешно выполнить задания в установленное время и предоставить отчет о работе.
Возможно также применение разработанной программы в системах дистанционного обучения.
Более того, даже если алгоритм RSA и не входит в тематику лабораторных занятий, разработанная программа позволит более качественно изучить теоретический материал, излагаемый в лекционном курсе и как следствие лучше подготовиться к экзаменам.
Заключение
В результате проделанной работы было создано приложение «Виртуальная лаборатория: Асимметричный алгоритм шифрования RSA». Данное приложение представляет собой программу-тренажер для изучения соответствующего алгоритма шифрования. В программе были реализованы следующие возможности: поэтапное изучение алгоритма, работа с отчетами, работа с интерактивным справочником, шифрование файлов.
Спектр областей применения данного приложения достаточно широк – это и вспомогательный/демонстрационный материал к лекционному курсу, и основа для выполнения лабораторных и практических работ, и инструмент для самостоятельной подготовки студентов, в частности, с применением технологий дистанционного обучения. [3]
Список литературы Разработка программы-тренажера для изучения асимметричного алгоритма шифрования RSA
- Федосин С.А. Методы и средства защиты компьютерной информации: учеб. пособие/С.А. Федосин. -Саранск: Изд-во Мордов. ун-та, 2005. -112 с.
- Савкина А.В., Нуштаева А.В., Шарамазанов Р.М. Виртуальная лаборатория для определения длины световой волны с помощью колец Ньютона.//Современные проблемы управления и регулирования: инновационные технологии и техника: cборник статей Международной научно-практической конференции (Пенза, 10 июня 2016 г.). -Пенза, 2016. -С. 12-20.
- Савкина, А.В. Виртуальные лаборатории в дистанционном обучении /А.В. Савкина, А.Вл. Савкина, С.А. Федосин//Образовательные технологии и общество. -2014. -Т. 17, № 4. -C. 507-517. -URL: http://elibrary.ru/download/elibrary_22673871_72590157.pdf, свободный. -Загл. с экрана (дата обращения: 10.05.2018).