Главная страница

ЛР5. ЛР5. ЭЦП на основе алгоритма RSA. Лабораторная работА 5 криптографическая защита данных электронная цифровая подпись на основе алгоритма rsa


Скачать 2.55 Mb.
НазваниеЛабораторная работА 5 криптографическая защита данных электронная цифровая подпись на основе алгоритма rsa
Дата10.12.2022
Размер2.55 Mb.
Формат файлаdocx
Имя файлаЛР5. ЭЦП на основе алгоритма RSA.docx
ТипЛабораторная работа
#837972

ЛАБОРАТОРНАЯ работА №5

КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ДАННЫХ
Электронная цифровая подпись на основе алгоритма RSA
5.1 Методические указания по оформлению ЛР

(см. Лабораторную работа №1)
5.2 Методические указания по выполнению ЛР
Ассиметричная криптография позволяет любому пользователю зашифровать своё сообщение открытым ключом получателя. Но остаётся угроза подмены сообщения третьим лицом (злоумышленником).

Для защиты от этого была предложена в 1976 г. У. Диффи и М. Хелманом идея электронной подписи, вычисляемой на основе закрытого ключа отправителя и проверяемой открытым ключом отправителя. Таким образом, только отправитель может поставить свою подпись и в то же время любой желающий может удостовериться, что это именно его подпись.

Электронная цифровая подпись (ЭЦП или ЭП) – это присоединяемое к сообщению его криптографическое преобразование (хеш-образ), которое позволяет при получении проверить авторство и подлинность сообщения. При этом электронная подпись надёжнее решает не только традиционные задачи авторства и подлинности документа, которые ранее обеспечивались рукописной подписью под бумажным документом, но и другие важные задачи электронного документооборота:

  • целостность документа;

  • невозможность подделки подписи;

  • предотвращение отказа от подписи;

  • юридическая значимость документа.



Сертификаты


Прежде, чем подписывать документы, пользователю необходимо получить (или создать) личный сертификат и установить его на свою машину. Сертификат представляет собой файл, в котором хранится различная информация - имя владельца, открытый ключ, его e-mail адрес, наименование организации, выдавшей этот сертификат, и дату, после которой цифровой сертификат считается недействительным. Выдачей сертификатов занимаются Центры Сертификации (ЦС).




Примечание. Выше приведена упрощенная схема пересылки подписанного письма. В действительности для большей безопасности сертификат, выдаваемый пользователю, шифруется закрытым ключом самого Центра Сертификации. И, соответственно, когда адресат, в нашем случае Ян, получив сообщение, для просмотра сертификата должен воспользоваться открытым ключом ЦС.

Вычисление ЭП


Алгоритм ЭП начинается с предварительного хеширования сообщения – вычисляется значение некоторой контрольной функции от всего сообщения. Для вычисления хеш-образа H сообщения T в данной работе предлагается использовать упрощённую хеш-функцию квадратичной свёртки

,

где H0 = 0, n из открытого ключа автора сообщения, M – коды символов сообщения. После обработки последнего символа получаем хеш-образ всего сообщения H.

В алгоритмах ЭП назначение открытого и закрытого ключей меняются – сообщение подписывается закрытым ключом отправителя, после чего любой может проверить подлинность с помощью открытого ключа отправителя. Вычисление электронной подписи S проводится по хеш-образу H пересылаемого сообщения с помощью закрытого ключа (d, n) автора сообщения по формуле

.

Формирование сообщения, подписанного ЭП, для передачи осуществляется присоединением ЭП S к сообщению M:

.
Реализация ЭЦП в Python
Электронная цифровая подпись (ЭЦП) позволяет подтвердить авторство электронного документа . Подпись связана как с автором, так и с самим документом с помощью криптографических методов, и не может быть подделана с помощью обычного копирования.
Модуль RSA позволяет подписывать сообщения для подтверждения автора и целостности сообщения:

(pubkey, privkey) = rsa.newkeys(512)
message = 'Test message'
signature = rsa.sign(message, privkey, 'SHA-1')

# Создание подписи rsa.sign(message, priv_key, hash_method),можно использовать ‘MD5’, ‘SHA-1’, ‘SHA-224’, 'SHA-256’, ‘SHA-384’ и ‘SHA-512’

Для проверки подписи используйте rsa.verify() функция. Эта функция возвращает значение True, если проверка прошла успешно:

>>> message = 'Test message'
>>> rsa.verify(message, signature, pubkey)
True

Если подпись не действительна, выйдет исключение rsa.pkcs1.VerificationError
>>> message = 'Test message not true'
>>> rsa.verify(message, signature, pubkey)
Traceback (most recent call last):
File "", line 1, in
File "/home/sybren/workspace/python-rsa/rsa/pkcs1.py", line 289, in verify
raise VerificationError('Verification failed')
rsa.pkcs1.VerificationError: Verification failed


Пример. ЭЦП, создание подписи




Запускаем программу на выполнение. Получим текст работы программы.





5.3 Пример выполнения лабораторной работы

Пример. Реализация ЭЦП.
Например, поставим электронную подпись на сообщение «КАФВТИК» с помощью закрытого ключа отправителя (29, 91) (см. Лабораторную №4).

Для этого вычислим хеш-образ сообщения.

Вычисление хеш-образа сообщения

i

Символы исходного сообщения Mi

Коды символов Mi (табл. 1)

ЛР №4

Вычисление хеш-образа Hi

0

-

-

H0 = 0

1

К

12

H1 = (H0 + M1)2 mod n = (0 + 12)2 mod 91 = 53

2

А

1

H2 = (H1 + M2)2 mod n = (53 + 1)2 mod 91 = 4

3

Ф

22

H3 = (H2 + M3)2 mod n = (4 + 22)2 mod 91 = 39

4

В

3

H4 = (H3 + M4)2 mod n = (39 + 3)2 mod 91 = 35

5

Т

20

H5 = (H4 + M5)2 mod n = (35 + 20)2 mod 91 = 22

6

И

10

H6 = (H4 + M5)2 mod n = (22 + 10)2 mod 91 = 23

7

К

12

H7 = (H4 + M5)2 mod n = (23 + 12)2 mod 91 = 42



Таким образом, хеш-образ H отправляемого сообщения «КАФВТИК» равен числу 42.

Вычислим ЭЦП S по найденному хеш-образу с помощью закрытого ключа S = Hd mod n = 4229 mod 91 = 35

Присоединив подпись к сообщению, получим сообщение для передачи «35КАФВТИК».
Проверка подлинности ЭЦП
Для проверки ЭЦП, используя открытый ключ (5, 91), найдем
H = 35 5 mod 91 = 42.
Поскольку хеш-образ сообщения совпадает с найденным значением H (42=42), то подпись признается подлинной.


5.4 варианты для выполнения лабораторной работы
ЗАДАНИЕ 1. ЭЦП на основе алгоритма шифрования RSA (ручной расчет).
ШАГ 1. Определите хеш-образ сообщения, которое необходимо взять из таблицы вариантов заданий (лабораторная работа №4).
ШАГ 2. Проверьте подлинность ЭЦП.

ЗАДАНИЕ 2. Реализация ЭЦП RSA в Python
Составьте программу в Python (воспользуйтесь примером указанным выше). Проверьте проверку подлинности, на основе вашей Фамилии. Скрины приложите в отчет.
ЗАДАНИЕ 3. Реализация RSA в Python (без использования модуля rsa)

Составьте программу в Python по образцу из Приложения 1 (см. ниже).

Сообщение, предназначенное для шифрования и пары чисел p и q для определения ключей, возьмите из таблицы вариантов заданий (лабораторная работа №4). Скрины приложите в отчет.
Приложение 1

Пример для Задания №3. Алгоритм RSA.





Результат работы:




5.5 СОДЕРЖАНИЕ ОТЧЕТА ПО ЛР



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

2.Содержание

3.Теоретическая часть

4.Практическая часть

4.1 Задание 1. Описание порядка выполнения работы.

4.2 Задание 2. Описание порядка выполнения работы.

4.3 Задание 3. Описание порядка выполнения работы.

5. Список литературы




написать администратору сайта