Выбор длины ключа RSA

RSA в Web Crypto API реализуется через интерфейс SubtleCrypto, который предоставляет криптографические операции на уровне браузера без необходимости использования сторонних библиотек. Генерация и использование RSA-ключей происходит асинхронно и опирается на нативные реализации операционной системы или движка браузера, что влияет на производительность и безопасность.

RSA в браузерной криптографии применяется преимущественно для двух задач: шифрования и цифровой подписи. В Web Crypto API поддерживаются следующие схемы:

  • RSA-OAEP — для шифрования
  • RSASSA-PKCS1-v1_5 — для подписи (устаревающая, но широко распространённая)
  • RSA-PSS — современный стандарт подписи с повышенной стойкостью

Каждая из схем накладывает одинаковые требования к модулю RSA, однако выбор длины ключа влияет на общий уровень стойкости системы.

Факторы, определяющие длину RSA-ключа

Выбор длины RSA-ключа определяется балансом между криптографической стойкостью, производительностью и совместимостью. Основные факторы:

  • уровень угроз и требуемая стойкость к атакующим моделям
  • срок актуальности ключа (криптографическая “жизнь” данных)
  • производительность генерации и операций шифрования/подписи
  • ограничения устройств, особенно мобильных
  • требования регуляторов и стандартов безопасности

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

Ключи длиной 1024 бита

RSA-1024 ранее использовался как стандарт, но в современных условиях считается криптографически небезопасным. Современные вычислительные мощности и специализированные алгоритмы факторизации делают такие ключи уязвимыми.

Основные характеристики:

  • высокая скорость операций
  • низкая нагрузка на устройство
  • недостаточная стойкость к современным атакам

Использование таких ключей запрещено в большинстве современных стандартов безопасности и не рекомендуется даже для некритичных данных.

Ключи длиной 2048 бит

RSA-2048 является минимальным современным стандартом де-факто для большинства приложений, использующих Web Crypto API.

Характеристики:

  • достаточная стойкость на горизонте среднесрочной перспективы
  • приемлемая производительность в браузерах
  • поддержка всеми современными платформами

В Web Crypto API генерация выглядит следующим образом:

const keyPair = await crypto.subtle.generateKey(
  {
    name: "RSA-OAEP",
    modulusLength: 2048,
    publicExponent: new Uint8Array([1, 0, 1]),
    hash: "SHA-256",
  },
  true,
  ["encrypt", "decrypt"]
);

RSA-2048 часто рассматривается как компромисс между безопасностью и скоростью, особенно в клиентских приложениях.

Ключи длиной 3072 бита

RSA-3072 применяется в системах, где требуется повышенный уровень защиты данных при длительном сроке их актуальности.

Характеристики:

  • значительно более высокая стойкость по сравнению с 2048 бит
  • заметное снижение производительности при генерации и операциях
  • увеличенное время рукопожатий в криптографических протоколах

В браузерной среде увеличение длины до 3072 бит может быть заметно на слабых устройствах, особенно при частой генерации ключей.

Ключи длиной 4096 бит

RSA-4096 обеспечивает высокий запас криптографической стойкости, но сопровождается существенными издержками.

Характеристики:

  • высокая стойкость к атакам перебора и факторизации
  • значительное замедление операций
  • увеличение размера ключей и вычислительных затрат

В Web Crypto API такие ключи используются редко, поскольку:

  • генерация может занимать заметное время
  • операции шифрования/подписи становятся медленнее
  • нагрузка на CPU возрастает
const keyPair = await crypto.subtle.generateKey(
  {
    name: "RSA-PSS",
    modulusLength: 4096,
    publicExponent: new Uint8Array([1, 0, 1]),
    hash: "SHA-512",
  },
  true,
  ["sign", "verify"]
);

Производительность в браузерной среде

В Web Crypto API операции RSA выполняются асинхронно, но фактическая нагрузка остаётся значительной. Влияние длины ключа проявляется в следующих аспектах:

  • генерация ключей: экспоненциальный рост времени с увеличением длины
  • шифрование: линейно-квадратичный рост вычислений
  • подпись: увеличение задержек при каждом вызове
  • использование памяти: рост объёма промежуточных данных

Особенно заметна разница между 2048 и 4096 бит в мобильных браузерах, где криптографические операции конкурируют с ограниченными CPU ресурсами.

Совместимость и стандарты

Большинство современных браузеров поддерживают RSA-2048 и RSA-3072 без ограничений. RSA-4096 поддерживается, но может быть ограничен на некоторых платформах или работать медленнее.

Стандарты безопасности:

  • NIST рекомендует RSA-2048 как минимальный уровень для краткосрочной защиты
  • RSA-3072 соответствует уровню более длительной защиты
  • RSA-1024 считается устаревшим и небезопасным

Web Crypto API следует этим рекомендациям через реализацию параметров SubtleCrypto.generateKey.

Практические ограничения Web Crypto API

При работе с RSA в браузере важно учитывать:

  • ключи не экспортируются по умолчанию без явного разрешения (extractable: true)
  • операции выполняются в изолированном криптографическом контексте
  • доступ к низкоуровневым параметрам отсутствует
  • производительность зависит от реализации браузера (V8, SpiderMonkey, JavaScriptCore)

Ошибки выбора длины ключа

Типичные проблемы возникают при попытке:

  • использовать RSA-1024 в современных системах
  • применять RSA-4096 без необходимости в клиентских приложениях
  • игнорировать влияние длины ключа на UX из-за задержек
  • использовать RSA вместо более эффективных схем (например, ECDSA или ECDH)

RSA в Web Crypto API часто применяется там, где более эффективны эллиптические кривые, однако совместимость иногда требует его использования.

Перспективы и криптографическая устойчивость

Развитие вычислительных мощностей и алгоритмов факторизации постепенно снижает запас прочности RSA. Дополнительное влияние оказывает развитие квантовых вычислений, где алгоритм Шора теоретически способен разрушить RSA при достаточном масштабе квантового компьютера.

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