Размер выходного файла RSA

Что такое размер RSA-шифрования при использовании ключа с 2048 бит (с использованием pkcs1padding). Всегда ли 256 байтов независимо от размера ввода? как я могу рассчитать его для других размеров ключа?

Ответ 1

Да, это так.

Выходной размер всегда должен равняться размеру Modulus (часть ключа), поэтому:

2048 bit Modulus -> 2048 bit output
1024 bit Modulus -> 1024 bit output
...

Если это не так, существует множество атак на RSA, см. Здесь основные сведения об этом.

Таким образом, чтобы гарантировать, что выход 2048 bit даже когда вход для шифрования, скажем, 7,
всегда необходимо применять прокладку!

Ответ 2

Выход (как целое) RSAEP (примитив шифрования RSA) всегда находится между 0 и n:

  1. Если представитель сообщения m не находится между 0 и n-1, сообщение выходного сообщения выходит за пределы диапазона и останавливается.

  2. Пусть c = m ^ e mod n.

  3. Выход c.

Конечно, c - число. Поэтому вам нужно преобразовать его в байты, чтобы он мог использоваться. Единственное, что известно о c это то, что оно меньше n при большом значении m. Может быть, c немного меньше, даже если m велико.


Вы упомянули PKCS1Padding, который является частью схемы шифрования RSAES-PKCS1-V1_5-ENCRYPT. Прокладка будет проверять, что m всегда велика и рандомизирована; требования к шифрованию RSA должны быть безопасными.

Вы обнаружите, что кодировка c указана там:

...

Шаг 4. Преобразование представителя c шифрованного текста c в зашифрованный текст C длиной k октетов: C = I2OSP (c, k)

...

где k - размер модуля в октетах (байтах).

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


Заметки:

  • размер модуля определяет размер ключа. Таким образом, выход RSA-шифрования совпадает с размером ключа: ceil(keySize/8.0) с использованием float или (keySize + 8 - 1)/8 с использованием целых чисел.

  • RSA с дополнением OAEP использует ту же технику, поэтому ответ верен и для OAEP (и большинство других, менее известных схем, таких как RSA-KEM).

  • Многие библиотечные процедуры, которые выполняют "raw" RSA (только модульное возведение в степень сообщения с публичным показателем), все еще выполняют функцию I2OSP, но лучше проверить, чтобы убедиться.

Ответ 3

Выходной размер простого RSA (с использованием некоторой схемы дополнений, но без гибридного шифрования) всегда является ключевым размером. Причина в том, что для некоторого открытого ключа n результатом является некоторое целое число c с 0<=c<n. Существует множество представлений для RSA, например http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-045j-automata-computability-and-complexity-spring-2011/lecture-notes/MIT6_045JS11_rsa.pdf