Проблема шифрования RSA [Размер данных полезной нагрузки]

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

2 ответа

Решение

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

Для повышения безопасности RSA вы должны использовать схемы заполнения, как определено в PKCS1. В зависимости от выбранной схемы размер сообщения может быть значительно меньше модуля. http://en.wikipedia.org/wiki/PKCS1

RSA шифрует одно сообщение, длина которого несколько меньше модуля. В частности, сообщение сначала "дополняется", в результате чего получается последовательность байтов, которая затем интерпретируется как большое целое число от 0 до n-1, где n - это модуль (часть открытого ключа) - так что добавленное сообщение не может быть длиннее модуля, что подразумевает строгую максимальную длину необработанного сообщения.

В частности, в самой распространенной схеме заполнения ( PKCS # 1 "старого стиля", то есть "v1.5"), заполнение добавляет к сообщению не менее 11 байтов, а общая длина дополненного сообщения должна быть равна длине модуля например, 128 байтов для 1024-битного ключа RSA. Таким образом, максимальная длина сообщения составляет 117 байтов. Обратите внимание, что результирующая длина зашифрованного сообщения имеет тот же размер, что и модуль, поэтому шифрование обязательно увеличивает размер сообщения как минимум на 11 байтов.

Обычный способ использования RSA для шифрования большого сообщения (скажем, электронной почты) заключается в использовании гибридной схемы:

  • Выбирается случайный симметричный ключ K (необработанная последовательность, например, от 128 до 256 случайных битов).
  • Большое сообщение симметрично зашифровано с помощью K с использованием правильной и эффективной схемы симметричного шифрования, такой как AES.
  • K асимметрично зашифрован с помощью RSA.

"Разделение" большого сообщения на множество 117-байтовых блоков, каждый из которых должен быть зашифрован с помощью RSA, обычно не выполняется по ряду причин: трудно сделать это правильно, не добавляя дополнительных недостатков; каждый блок будет увеличен на 11 байтов, что подразумевает незначительное увеличение общего размера сообщения (пропускная способность сети может быть дефицитным ресурсом); симметричное шифрование намного быстрее.

Другие вопросы по тегам