Генерация подписи RSA с помощью PyCryptodome Python

Подпись RSA Python PyCryptodome

RSA – это система криптографии с открытым ключом, разработанная в 1979 году, которая широко используется для обеспечения безопасности передачи данных. Асимметричная криптография имеет два основных применения: аутентификация и конфиденциальность. В статье покажу, как генерировать подписи RSA с помощью PyCryptodome Python.

Еще по теме: Шифрование с помощью PyCryptodome Python

Генерация подписи RSA с помощью PyCryptodome Python

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

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

В следующем примере мы шифруем и дешифруем с использованием алгоритма RSA через публичные и закрытые ключи.

Первый шаг при использовании RSA – это генерация пары публичного и закрытого ключей. В приведенном выше коде мы генерируем эту пару ключей с помощью метода generate(), передавая размер ключа в качестве параметра.

Рекомендуется использовать длину ключа не менее 2048 бит.

Затем мы экспортируем публичный ключ с использованием метода publickey() и преобразуем его в формат UTF-8 с помощью метода decode(). PEM – это тип кодирования на основе текста, который часто используется, если нужно поделиться ключом, например, по электронной почте:

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

Приведенные выше код выполняет проверку подписи, которая работает с публичным ключом.

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

В следующем примере мы используем асимметричную криптографию для генерации публичных и закрытых ключей, а для шифрования и дешифрования – пакет PKCS1_OAEP из модуля Crypto.PublicKey.

В приведенном коде мы применяем шифрование и дешифрование с использованием пакета PKCS1_OAEP Python, который представляет собой дополнение для асимметричного шифрования, опубликованную RSA и обеспечивающую большую безопасность, чем простой RSA.

Для выполнения схемы OAEP нужно сначала создать объект PKCS1OAEP_Cipher, а затем вызвать методы PKCS1OAEP_Cipher.encrypt() и PKCS1OAEP_Cipher.decrypt() для шифрования или дешифрования текста. Если входной текст имеет строковый тип, мы должны сначала преобразовать его в байтовую строку.

Для выполнения предыдущего скрипта нам нужно передать размер ключа в качестве первого параметра, например, 2 048 бит, и формат файла для публичных и закрытых ключей в качестве второго параметра. Третий параметр – сообщение для шифрования.

Заключение

Теперь, когда мы рассмотрели модуль PyCryptodome, давайте рассмотрим модуль Cryptography как альтернативу для шифрования и дешифрования данных.

ПОЛЕЗНЫЕ ССЫЛКИ:

Ban32

Хакер-самоучка, который может взломать тостер и настроить его на отправку вам утреннего приветствия в коде Морзе.

Добавить комментарий