Проблема шифрования RSA
верно ли, что шифрование RSA может обрабатывать ограниченную полезную нагрузку данных? … им путают с теорией … теоретически об этом нет никакой заметки …
- Что случилось с расшифровкой шифрования nodejs?
- Размер подписи RSA?
- C # Экспорт частного / открытого ключа RSA из RSACryptoServiceProvider в строку PEM
- Использование SHA1 и RSA с java.security.Signature против MessageDigest и Cipher
- Шифровать и расшифровать строку в C #?
- Как сохранить / получить открытый / закрытый ключ RSA
- C # RSA-шифрование / дешифрование с передачей
- Как hash строку в Android?
В базовом алгоритме RSA (без заполнения), который не очень безопасен, размер сообщения ограничен меньше, чем модуль.
Чтобы повысить безопасность RSA, вы должны использовать схемы дополнений, определенные в PKCS1. В зависимости от выбранной вами схемы размер сообщения может быть значительно меньше, чем модуль. http://en.wikipedia.org/wiki/PKCS1
RSA шифрует одно сообщение, длина которого несколько меньше модуля. В частности, сообщение сначала «дополняется», в результате получается последовательность байтов, которая затем интерпретируется как большое целое число от 0 до n-1 , где n – модуль (часть открытого ключа) – так что заполненное сообщение не может быть больше, чем модуль, что подразумевает строгую максимальную длину в необработанном сообщении.
В частности, с наиболее распространенной схемой заполнения ( PKCS # 1 «old-style», aka «v1.5»), дополнение добавляет по меньшей мере 11 байтов в сообщение, а общая длина заполненного сообщения должна быть равна длине модуля , например 128 байтов для 1024-битного ключа RSA. Таким образом, максимальная длина сообщения составляет 117 байтов. Обратите внимание, что итоговая длина зашифрованного сообщения имеет тот же размер, что и модуль, поэтому шифрование обязательно расширяет размер сообщения не менее чем на 11 байтов.
Обычный способ использования RSA для зашифрования большого сообщения (например, электронной почты) заключается в использовании гибридной схемы:
- Выбирается случайный симметричный ключ K (необработанная последовательность, например, от 128 до 256 случайных бит).
- Большое сообщение симметрично зашифровано с помощью K , используя правильную и эффективную симметричную схему шифрования, такую как AES.
- K асимметрично зашифрован с помощью RSA.
«Разделение» большого сообщения на столько 117-байтовых блоков, каждый из которых должен быть зашифрован с помощью RSA, обычно не выполняется по разным причинам: трудно сделать это правильно, не добавляя лишних недостатков; каждый блок будет расширен на 11 байтов, что подразумевает увеличение размера сообщения без пренебрежимого (пропускная способность сети может быть дефицитным ресурсом); симметричное шифрование выполняется намного быстрее.