Режим цепочки, такой как ECB, не имеет смысла для RSA, если вы не делаете это неправильно.
ECB для блочных шифров: входные данные разбиваются на блоки одинакового размера, и каждый блок шифруется отдельно. Это вызывает некоторые недостатки, поэтому лучше избегать режима ECB для блочных шифров.
RSA не является блочным шифром. В частности, RSA обязательно расширяет зашифрованное сообщение: с помощью 1024-битного ключа RSA (довольно типичного размера) можно зашифровать сообщение до 117 байтов, но в результате получается 128-байтовое значение.
Можно представить себе сообщение большего размера, разбить его на отдельные блоки длиной 117 байт (или меньше) и RSA-шифровать каждый из них по отдельности, но никто этого не делает, в основном из-за увеличения размера и стоимости процессора. , Кроме того, вопросы безопасности, связанные с этим разделением и рекомбинацией, вообще не изучаются, поэтому вполне возможно, что результат будет довольно слабым. Обычно, когда криптографической библиотеке требуется режим заполнения как часть имени алгоритма, например, в "RSA/ECB/PKCS1Padding
", это происходит только из-за синтаксических ограничений на имя, и часть цепочки (ECB
) фактически игнорируется (это то, что делает, например, Java).
На практике при шифровании некоторых данных, которые могут быть больше, чем максимальный размер ввода RSA, используется гибридное шифрование: то, что зашифровано RSA, представляет собой случайный симметричный ключ (например, набор из 16 равномерно случайных байтов), и этот ключ используется для симметричного шифрования (например, с помощью AES) фактических данных. Это более экономно (потому что симметричное шифрование не увеличивает блоки) и ЦП (симметричное шифрование значительно быстрее, чем асимметричное шифрование и, в частности, RSA расшифровка ).