Использование современных симметрических (DES), и асимметрических (RSA) алгоритмов шифрования
Содержание Постановка задачи Теоретический материал Исходные данные Скриншоты работы программы Выводы
Постановка задачи 1. Реализовать алгоритм DES и 4 режима шифрования. Шифрование реализовать для любой длины сообщения и любой длины ключа до 56 бит включительно. 2. Зашифровать сообщения длиной 1 МБ, 10 МБ, 20 МБ и ключом 5,6,7 байт. Для каждого режима, длины сообщения и ключа замерять время и скорость зашифрования 3. В режимах шифрования DESOFB и CFB размер блока шифрования брать равным порядковому номеру в списке группы 4. Реализовать алгоритм RSA. Сгенерировать 3 пары открытый/закрытый ключей. Брать файлы размером 20 Кб, 50 Кб, 100 Кб, 500 Кб, 1 МБ. 5. Каждый файл шифровать с 3 парами ключей. Посчитать время зашифрования/расшифрования и среднюю скорость шифрования/расшифрования для каждой пары ключей и каждого файла. 6. Программа должна предусматривать сохранение зашифрованного и расшифрованного файла на диск, а также вывод на экран скорости и времени шифрования. Примечание. 1. Исходный текст брать произвольный, используя символы из Алфавита (Алфавит брать из Таблицы 1, согласно Вашего варианта) 2. Ваш вариант =(Номер в списке группы) mod 23 3. Буквам поставить в соотвествие числа [0..мощность_алфавита-1 ] (например букве а->0,б->1, в->2 итд.) Таблица 1. № п/п A B Алфавит 15 2000 5000 Цифры, спецсимвол(@) и строчные буквы русского алфавита Теоретический материал Шифр RSA Алгоритм RSA предложили в 1978 г. три автора: Р.Райвест (Rivest), А.Шамир (Shamir) и А.Адлеман (Adleman). Алгоритм получил свое название по первым буквам фамилий его авторов. Алгоритм RSA стал первым полноценным алгоритмом с открытым ключом, который может работать как в режиме шифрования данных, так и в режиме электронной цифровой подписи. Надежность алгоритма основывается на трудности факторизации больших чисел и трудности вычисления дискретных логарифмов. В криптосистеме RSA открытый ключ КA , секретный ключ КB , сообщение М и криптограмма С принадлежат множеству целых чисел ZN ={0,1,2,...,N-1} (1) где N - модуль: N = P*Q . (2) Здесь Р и Q - случайные большие простые числа. Для обеспечения максимальной безопасности выбирают Р и Q равной длины и хранят в секрете. Множество ZN с операциями сложения и умножения по модулю N образует арифметику по модулю N . Открытый ключ КA выбирают случайным образом так, чтобы выполнялись условия: (3) , (4) где - функция Эйлера, указывающая количество положительных целых чисел в интервале от 1 до N , которые взаимно просты сN . Условие (4) означает, что открытый ключ КA и функция Эйлера должны быть взаимно простыми. Далее, используя расширенный алгоритм Евклида, вычисляют секретный ключ K B , такой, что KB * К A = 1 ( mod( ) (5) или Это можно осуществить, так как получатель В знает пару простых чисел (P,Q) и может легко найти . Заметим, что K B и N должны быть взаимно простыми. Открытый ключ К A используют для шифрования данных, а секретный ключ K B -для расшифрования. Преобразование шифрования определяет криптограмму С через пару (открытый ключ КA , сообщение М ) в соответствии со следующей формулой: (6) Обращение функции , т.е. определение значения М по известным значениям С , К A и N , практически не осуществимо при N > 2512 . Однако обратную задачу, т.е. задачу расшифрования криптограммы С , можно решить, используя пару (секретный ключ K B , криптограмма С ) по следующей формуле: (7) Процесс расшифрования можно записать так: DB (ЕА (М)) = М . (8) Подставляя в (8) значения (6) и (7), получаем: Или (9) Величина играет важную роль в теореме Эйлера, которая утверждает, что если НОД (х,N)=1 , то или в несколько более общей форме (10) Сопоставляя выражения (9) и (10), получаем или, что то же самое, . Именно поэтому для вычисления секретного ключа KB используют соотношение (5). Таким образом, если криптограмму возвести в степень K B , то в результате восстанавливается исходный открытый текст М , так как Таким образом, получатель В, который создает криптосистему, защищает два параметра: секретный ключ K B и пару чисел (P,Q) , произведение которых дает значение модуля N . С другой стороны, получатель В открывает значение модуля N и открытый ключ К А . Противнику известны лишь значения К А и N . Если бы он смог разложить число N на множители Р и Q , то он узнал бы "потайной ход" - тройку чисел {Р,Q, К A }, вычислил значение функции Эйлера и определил значение секретного ключа K B . Однако, как уже отмечалось, разложение очень большого N на множители вычислительно не осуществимо (при условии, что длины выбранных Р и Q составляют не менее 100 десятичных знаков). Алгоритм шифрования и расшифрования в криптосистеме RSA Предположим, что пользователь А хочет передать пользователю В сообщение в зашифрованном виде, используя криптосистему RSA. В таком случае пользователь А выступает в роли отправителя сообщения, а пользователь В - в роли получателя. Как отмечалось выше, криптосистему RSA должен сформировать получатель сообщения, т.е. пользователь В . Рассмотрим последовательность действий пользователя В и пользователя А . 1. Пользователь В выбирает два произвольных больших простых числа Р и Q . 2. Пользователь В вычисляет значение модуля N=Р*Q . 3. Пользователь В вычисляет функцию Эйлера (8): 4. Выбирает случайным образом значение открытого ключа К A с учетом выполнения условий: 5. Пользователь В вычисляет значение секретного ключа kB , используя расширенный алгоритм Евклида при решении сравнения 6. Пользователь В пересылает пользователю А пару чисел (N, К A ) по незащищенному каналу. Если пользователь А хочет передать пользователю В сообщение М , он выполняет следующие шаги. 7. Пользователь А разбивает исходный открытый текст М на блоки, каждый из которых может быть представлен в виде числа Мi =0,1,2,...,N-1 . 8. Пользователь А шифрует текст, представленный в виде последовательности чисел М , по формуле 9. Пользователь А отправляет криптограмму C1 , С2 , С3 ,...,Ci , ... пользователю В . 10. Пользователь В расшифровывает принятую криптограмму C1 , С2 , С3 ,...,Ci , ..., используя секретный ключ kB , по формуле . В результате будет получена последовательность чисел Mi , которые представляют собой исходное сообщение М . Чтобы алгоритм RSA имел практическую ценность, необходимо иметь возможность без существенных затрат генерировать большие простые числа, уметь оперативно вычислять значения ключей К A и К B .
Курсовые работы по информатикеСодержание Постановка задачи Теоретический материал Исходные данные Скриншоты работы программы Выводы Постановка задачи 1. Реализовать алгоритм DES
Оценок: 486 (Средняя 5 из 5)
Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.
Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.