Использование современных симметрических (DES) и асимметрических (RSA) алгоритмов шифрования

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Для того чтобы скачать эту работу.
1. Подтвердите что Вы не робот:
2. И нажмите на эту кнопку.
закрыть



 

 

 

 

 

 

 

 

 

 

Использование современных симметрических (DES), и асимметрических (RSA) алгоритмов шифрования

Содержание

 

Постановка задачи

Теоретический материал

Исходные данные

Скриншоты работы программы

Выводы

Постановка задачи

 

  1. Реализовать алгоритм DES и 4 режима шифрования. Шифрование реализовать для любой длины сообщения и любой длины ключа до 56 бит включительно.
  2. Зашифровать сообщения длиной 1 МБ, 10 МБ, 20 МБ и ключом 5,6,7 байт. Для каждого режима, длины сообщения и ключа замерять время и скорость зашифрования
  3. В режимах шифрования DES OFB и CFB размер блока шифрования брать равным порядковому номеру в списке группы
  4. Реализовать алгоритм RSA. Сгенерировать 3 пары открытый/закрытый ключей. Брать файлы размером 20 Кб, 50 Кб, 100 Кб, 500 Кб, 1 МБ.
  5. Каждый файл шифровать с 3 парами ключей. Посчитать время зашифрования/расшифрования и среднюю скорость шифрования/расшифрования для каждой пары ключей и каждого файла.
  6. Программа должна предусматривать сохранение зашифрованного и расшифрованного файла на диск, а также вывод на экран скорости и времени шифрования.

 

Примечание.

  1. Исходный текст брать произвольный, используя символы из Алфавита (Алфавит брать из Таблицы 1, согласно Вашего варианта)
  2. Ваш вариант=(Номер в списке группы) mod 23
  3. Буквам поставить в соотвествие числа [0..мощность_алфавита-1] (например букве а->0, б->1, в->2 итд.)

Таблица 1.

п/пABАлфавит1520005000Цифры, спецсимвол(@) и строчные буквы русского алфавита

Теоретический материал

 

Шифр 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, которые представляют собо