Выбор длины ключа: 128 vs 192 vs 256 бит

В Web Crypto API симметричное шифрование чаще всего реализуется через алгоритм AES (Advanced Encryption Standard). Он используется в режимах AES-GCM, AES-CBC, AES-CTR и AES-KW. Ключевой параметр безопасности — длина ключа, измеряемая в битах: 128, 192 или 256.

128 ,; 192 ,; 256

Длина ключа определяет криптографическую стойкость системы, а также влияет на производительность и совместимость.


Поддержка длины ключа в WebCrypto

В Web Crypto API генерация ключей AES осуществляется через SubtleCrypto.generateKey() с указанием длины:

  • AES-GCM
  • AES-CBC
  • AES-CTR
  • AES-KW

Во всех этих алгоритмах стандарт допускает 128, 192 и 256 бит.

Однако практическая поддержка зависит от платформы:

  • 128 бит — поддерживается везде
  • 256 бит — поддерживается почти везде
  • 192 бит — встречается реже и может отсутствовать в некоторых реализациях браузеров или окружений

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


128-битный ключ

Криптографическая стойкость

128 бит означает пространство ключей:

2^{128}

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

Практические свойства

  • минимальная нагрузка на CPU
  • высокая скорость шифрования и дешифрования
  • максимальная совместимость
  • оптимальный выбор для большинства веб-сценариев

Использование в WebCrypto

Чаще всего применяется в AES-GCM, поскольку обеспечивает баланс:

  • конфиденциальность
  • аутентификацию
  • высокую производительность

192-битный ключ

Криптографическая стойкость

2^{192}

Увеличение пространства ключей по сравнению с 128 битами колоссально, но на практике это редко даёт прикладное преимущество.

Особенности

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

Причины низкой популярности

  • исторически слабая стандартизация поддержки
  • отсутствие массовых практических атак, требующих более 128 бит
  • усложнение совместимости между системами

256-битный ключ

Криптографическая стойкость

2^{256}

Это пространство ключей считается практически недостижимым для перебора даже при гипотетическом развитии классических вычислений.

Особенности

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

Стоимость вычислений

По сравнению с 128 битами:

  • увеличивается количество раундов AES (зависит от реализации)
  • возрастает нагрузка на CPU
  • особенно заметно на мобильных устройствах и слабых устройствах IoT

Сравнение 128, 192 и 256 бит

Криптографическая разница

С точки зрения теоретической стойкости:

  • 128 бит уже превышает все практические требования
  • 192 бит добавляет запас без практической необходимости
  • 256 бит создаёт экстремальный запас безопасности

Производительность

  • 128 бит — наивысшая скорость
  • 192 бит — промежуточная, но редко оптимизируется
  • 256 бит — наиболее затратный вариант

Практическая применимость

Длина ключа Безопасность Скорость Совместимость Использование
128 высокая максимальная максимальная стандарт веба
192 очень высокая средняя ограниченная редкое
256 максимальная ниже высокая критические системы

Алгоритмическая специфика AES в WebCrypto

AES реализован как блочный шифр с размером блока:

128

Длина ключа влияет на:

  • число раундов шифрования:

    • 10 раундов (128 бит)
    • 12 раундов (192 бит)
    • 14 раундов (256 бит)

Это напрямую отражается на времени выполнения операций в SubtleCrypto.encrypt() и decrypt().


Практика выбора длины ключа

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

Производительность

При интенсивной обработке данных (например, потоковое шифрование) предпочтителен 128-битный ключ.

Совместимость

Для кросс-браузерных решений используется 128 или 256 бит.

Требования безопасности

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


Влияние на WebCrypto API

В контексте Jav * aScript:

crypto.subtle.generateKey(
  {
    name: "AES-GCM",
    length: 256
  },
  true,
  ["encrypt", "decrypt"]
);

Выбор длины ключа не влияет на интерфейс API, но влияет на:

  • скорость генерации ключа
  • время шифрования
  • энергопотребление устройства

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

Завышение требований

Использование 256 бит там, где достаточно 128, приводит к:

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

Игнорирование совместимости

192-битные ключи могут приводить к ошибкам при импорте или генерации ключей в некоторых окружениях.

Путаница между ключом и режимом

Длина ключа не компенсирует слабые режимы работы (например, неправильное использование CBC без IV или GCM без уникального nonce).


Криптографический смысл различий

Рост длины ключа не линейный по безопасности, а экспоненциальный:

2^{n}

где n — длина ключа в битах.

Это означает, что переход от 128 к 256 бит не удваивает безопасность, а возводит её в квадрат по экспоненте пространства ключей.


Итоговые инженерные соображения

В WebCrypto выбор длины ключа определяется не только криптографией, но и инженерными ограничениями:

  • 128 бит — стандарт для веб-приложений и большинства API-сценариев
  • 256 бит — выбор для систем с повышенной долговременной безопасностью
  • 192 бит — технически возможен, но практически редко оправдан