Мәзір
2 ноября, 2024 / taulik / Информация

Исследование и реализация алгоритма RSA для создания электронной подписи и процесса хэширования на языке Python

Тема: Исследование и реализация алгоритма RSA для создания электронной подписи и процесса хэширования на языке Python. Дипломная работа.

Исследование и реализация алгоритма RSA для создания электронной подписи и процесса хэширования на языке Python Исследование и реализация алгоритма RSA для создания электронной подписи и процесса хэширования на языке Python

Введение

Электронная подпись является основным элементом защиты данных и аутентификации в цифровом мире. Алгоритм RSA, основанный на асимметричном шифровании, используется для создания защищенных электронных подписей и обеспечивает высокий уровень безопасности. Цель данной работы — изучить алгоритм RSA и его применение для создания электронной подписи, а также реализовать его с использованием Python.

Цель исследования — понять принципы работы RSA, процесс генерации ключей, хэширование и создание электронной подписи.

1. Теоретические основы алгоритма RSA и электронной подписи

Алгоритм RSA был разработан для обеспечения безопасности данных с помощью асимметричных ключей:

Генерация ключей:
RSA использует пару ключей — закрытый и открытый. Закрытый ключ используется для подписания данных, а открытый — для проверки подписи.

Создание подписи:
Чтобы создать подпись, отправитель сначала хэширует данные, затем шифрует хэш закрытым ключом. Этот зашифрованный хэш и является подписью.

Проверка подписи:
Получатель расшифровывает подпись открытым ключом и сравнивает результат с хэшем исходного сообщения. Если они совпадают, подпись действительна.

2. Описание процесса хэширования и его значение

Процесс хэширования используется для создания уникального идентификатора данных. При создании электронной подписи хэширование позволяет сократить объем данных для шифрования и повысить эффективность работы RSA:

Выбор хэш-функции:
В данном случае используется SHA-256 для обеспечения безопасности.

Хэширование данных:
Данные проходят через хэш-функцию, в результате чего получается уникальный хэш фиксированной длины.

3. Реализация алгоритма RSA и электронной подписи на Python

Для реализации RSA мы будем использовать библиотеку cryptography или PyCryptodome, а для хэширования — стандартную библиотеку hashlib.

Шаг 1. Генерация ключей

python

Копировать код

from Crypto.PublicKey import RSA # Генерация пары ключей key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() # Сохранение ключей в файлы with open("private.pem", "wb") as f: f.write(private_key) with open("public.pem", "wb") as f: f.write(public_key)

Шаг 2. Хэширование сообщения

python

Копировать код

import hashlib def hash_message(message): # Хэширование сообщения с использованием SHA-256 hashed = hashlib.sha256(message.encode()).digest() return hashed

Шаг 3. Создание электронной подписи

python

Копировать код

from Crypto.Signature import pkcs1_15 from Crypto.Hash import SHA256 from Crypto.PublicKey import RSA def sign_message(message, private_key_path): # Загрузка закрытого ключа key = RSA.import_key(open(private_key_path).read()) # Хэширование сообщения h = SHA256.new(message.encode()) # Создание подписи signature = pkcs1_15.new(key).sign(h) return signature

Шаг 4. Проверка электронной подписи

python

Копировать код

def verify_signature(message, signature, public_key_path): # Загрузка открытого ключа key = RSA.import_key(open(public_key_path).read()) # Хэширование сообщения h = SHA256.new(message.encode()) try: # Проверка подписи pkcs1_15.new(key).verify(h, signature) print("Подпись действительна.") except (ValueError, TypeError): print("Подпись недействительна.")

Пример использования

python

Копировать код

message = "Это тестовое сообщение" private_key_path = "private.pem" public_key_path = "public.pem" # Создание электронной подписи signature = sign_message(message, private_key_path) print("Подпись:", signature) # Проверка подписи verify_signature(message, signature, public_key_path)

Заключение

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

Список использованной литературы

Ривест Р., Шамир А., Адлеман Л. “Алгоритм RSA: основа современной криптографии”.

Документация PyCryptodome: https://pycryptodome.readthedocs.io/

Руководство по криптографии и безопасности на Python.

Этот проект демонстрирует основополагающие аспекты применения RSA в цифровой подписи и может быть расширен для использования в реальных системах безопасности.