RSA-2048 или RSA-4096 — самый частый вопрос о размере ключа в PKI. RSA-2048 — минимальный размер, допустимый для публично доверенных сертификатов; он соответствует уровню стойкости 112 бит по NIST, а RSA-4096 лежит значительно выше 128 бит. За больший ключ приходится платить временем подписи, временем генерации ключа и размером каждой подписи, передаваемой по сети, поэтому правильный ответ зависит от того, как часто ключ подписывает и как долго он должен оставаться надёжным.
Коротко о главном
| RSA-2048 | RSA-3072 | RSA-4096 | |
|---|---|---|---|
| Классическая стойкость (SP 800-57, часть 1) | 112 бит | 128 бит | Выше 128 бит (отдельной строки нет; 7680 бит = 192) |
| NIST IR 8547 (проект) | Устаревает после 2030 года, запрещён после 2035 года | Запрещён после 2035 года | Запрещён после 2035 года |
| Размер подписи | 256 байт | 384 байта | 512 байт |
| Открытый ключ, SPKI DER | 294 байта | 422 байта | 550 байт |
| Подписей в секунду (OpenSSL 3.6.5) | около 3 000 | около 1 045 | около 470 |
| Проверок в секунду | около 114 000 | около 54 000 | около 31 500 |
| Генерация ключа | в среднем около 26 мс | около 100 мс | около 250–280 мс, с большим разбросом |
| Минимум CA/Browser Forum | Соответствует | Соответствует | Соответствует |
Замеры сделаны командой openssl speed rsa2048 rsa3072 rsa4096 на одном ядре Apple M4 Max.
Запас стойкости
Стойкость RSA основана на сложности разложения модуля на множители общим методом решета числового поля, трудоёмкость которого растёт с размером ключа субэкспоненциально; поэтому ключи RSA приходится наращивать гораздо быстрее, чем ключи на эллиптических кривых. NIST SP 800-57, часть 1, приравнивает RSA с ключом 2048 бит к стойкости 112 бит, 3072 бита — к 128, а 7680 бит — к 192; строки для 4096 бит там нет, и этот размер попадает между 128 и 192. Самое большое из публично разложенных чисел конкурса RSA Factoring Challenge имеет длину 829 бит (RSA-250, 2020 год), и до 2048 ему далеко.
Важнее другой срок — квантовый. Алгоритм Шора на большом отказоустойчивом квантовом компьютере раскладывает модули всех трёх размеров за полиномиальное время, а удвоение ключа примерно удваивает число нужных кубитов и умеренно увеличивает время работы; исход это не меняет. По оценке Крейга Гидни 2025 года, машине с менее чем миллионом зашумлённых кубитов на разложение RSA-2048 хватит меньше недели. Поэтому NIST IR 8547 (первый публичный проект) предлагает для всех размеров RSA один и тот же конечный срок, 2035 год, а RSA-2048 вдобавок объявляется устаревшим после 2030 года из-за классической стойкости 112 бит. RSA-4096 увеличивает запас классической стойкости, но не отодвигает постквантовый срок.
Производительность
Затраты на операции с закрытым ключом растут примерно пропорционально кубу размера модуля, на операции с открытым ключом — квадрату:
openssl speed -seconds 2 rsa2048 rsa3072 rsa4096
sign verify encrypt decrypt sign/s verify/s encr./s decr./s
rsa 2048 bits 0.000334s 0.000009s 0.000009s 0.000339s 2994.9 114178.1 108513.6 2950.3
rsa 3072 bits 0.000957s 0.000019s 0.000019s 0.000965s 1044.7 53948.7 52312.0 1036.7
rsa 4096 bits 0.002117s 0.000032s 0.000032s 0.002121s 472.4 31522.3 30870.7 471.6
Для TLS-сервера, который подписывает один раз за полное рукопожатие, переход с 2048 на 4096 увеличивает эти затраты примерно в шесть раз. Для корневого CA, который подписывает несколько промежуточных сертификатов за десятилетие, затраты не имеют значения. Генерация ключа тоже резко замедляется, потому что нужно найти два больших простых числа: на этой машине в среднем около 26 мс для 2048 бит против четверти секунды для 4096, причём с длинным хвостом распределения, а это важно на маломощных устройствах и в тестах, которые многократно генерируют ключи.
Проверка остаётся дешёвой при любом размере, потому что открытая экспонента мала (65537); именно поэтому RSA сохраняет своё место в цепочках сертификатов, которые проверяются миллиарды раз.
Ограничения оборудования и протоколов
Ограничения на размер задаёт скорее окружение, чем сам RSA:
- Смарт-карты и токены: многие карты PIV и старые аппаратные токены поддерживают только RSA-2048; в новых устройствах добавлены 3072 и 4096. Проверьте это, прежде чем заказывать оборудование.
- HSM и облачные KMS: все три размера стандартны (AWS KMS предлагает
RSA_2048,RSA_3072иRSA_4096), но из-за тарифов с оплатой за каждую операцию и ограничений пропускной способности 4096 при больших объёмах заметно дороже. - DNS: 4096-битный ключ DKIM занимает 736 символов base64, и его приходится разбивать на несколько строк TXT; некоторые DNS-провайдеры и старые резолверы плохо обрабатывают длинные записи. Зоны DNSSEC с RSA-4096 дают большие ответы, для которых может понадобиться TCP.
- Цепочки сертификатов: каждый сертификат RSA-4096 добавляет около 512 байт подписи и 550 байт ключа против нескольких сотен байт у ECDSA, что важно для клиентов с ограниченными ресурсами.
Что когда выбирать
- Новые сертификаты TLS-серверов: в первую очередь ECDSA P-256; если нужен именно RSA, RSA-2048 по-прежнему принимают все клиенты и CA, но RSA-3072 даёт запас после 2030 года.
- Корневые и долгоживущие промежуточные CA: RSA-4096 (или ECDSA P-384); затраты на подпись ничтожны, а сроки действия длинные. У ISRG Root X1 от Let's Encrypt ключ RSA-4096, а у его промежуточных сертификатов RSA — RSA-2048.
- Подпись JWT (
RS256): RSA-2048 распространён и допустим (RFC 7518 требует не менее 2048 бит), для новых ключей — RSA-3072; или рассмотритеES256вместо RSA. - Ключи SSH: предпочтительнее Ed25519; если RSA, то не менее 3072 бит.
- Ключи для подписи кода и документов: RSA-3072 или 4096 в зависимости от того, что предлагает CA и как долго подпись должна оставаться действительной, плюс метки времени.
- Оборудование с ограниченными возможностями: то, что оно поддерживает (обычно RSA-2048), с задокументированным планом замены.
Заметки о миграции
Смена размера ключа RSA означает новую пару ключей, а для сертификатов — и новый сертификат.
- Проведите инвентаризацию ключей по размеру: сертификаты (
openssl x509 -noout -text), JWKS (длинаn), ключи SSH (ssh-keygen -l), записи DKIM и дескрипторы ключей в HSM. Первыми ротации подлежат ключи RSA-2048, срок действия которых выходит за 2030 год. - Генерируйте новые ключи там, где они будут использоваться:
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072или аналогичной командой HSM; не экспортируйте ключи, чтобы сменить их размер. - Используйте старые и новые ключи параллельно: публикуйте оба в JWKS с разными значениями
kid, добавьте новый селектор DKIM до переключения, на время перехода отдавайте оба ключа хоста SSH. - Проверьте с более длинным ключом все системы, которые его используют: обычные источники сбоев — буферы фиксированного размера, ограничения на длину DNS-записей и встроенные стеки TLS.
- Используйте ротацию, чтобы пересмотреть выбор алгоритма: если все системы, которые используют ключ, поддерживают ECDSA или EdDSA, полный отказ от RSA обычно окупается лучше, а для перехода на постквантовые подписи до 2035 года понадобится ещё одна ротация.
Источники
- NIST SP 800-57, часть 1, ред. 5, таблица 2
- NIST IR 8547, первый публичный проект
- FIPS 186-5, § 5, RSA
- RFC 8017, PKCS #1 v2.2
- RFC 7518, § 3.3, минимальный размер ключа RSA для JWS
- Гидни (2025): разложение RSA-2048 на множители с менее чем миллионом зашумлённых кубитов
- Базовые требования CA/Browser Forum (Baseline Requirements), § 6.1.5