Открыть сервис

NIST SP 800-90A

NIST SP 800-90A — это специальная публикация Национального института стандартов и технологий США (NIST), определяющая стандарты для детерминированных генераторов случайных битов (DRBG). Документ входит в серию стандартов, регламентирующих методы генерации псевдослучайных чисел, используемых в криптографических системах. Основная цель стандарта — обеспечение высокой степени непредсказуемости и статистической случайности выходных последовательностей, что критически важно для защиты информации.

История и контекст

Разработка NIST SP 800-90A началась в начале 2000-х годов в ответ на растущую потребность в унифицированных криптографических стандартах, особенно в государственных и коммерческих системах США. Первая версия документа была опубликована в 2006 году. Впоследствии стандарт неоднократно пересматривался: в 2012 году вышла редакция Rev. 1, а в 2015 году — Rev. 2, которая остаётся актуальной на 2025 год. Основные изменения касались уточнения алгоритмов, повышения безопасности и устранения уязвимостей, выявленных в ходе криптоанализа.

Стандарт является частью более широкой серии NIST SP 800-90, включающей также:

  • NIST SP 800-90B — рекомендации по тестированию источников энтропии;
  • NIST SP 800-90C — рекомендации по построению генераторов случайных чисел с использованием DRBG и источников энтропии.

Структура и принципы работы DRBG

Детерминированный генератор случайных битов (DRBG) — это алгоритм, который на основе начального значения (seed) и дополнительных входных данных (personalization string, additional input) генерирует последовательность битов, неотличимую от истинно случайной для любого вычислительно ограниченного противника. Ключевая особенность DRBG — его детерминированность: при одинаковых входных параметрах выходная последовательность всегда будет одинаковой. Это свойство необходимо для воспроизводимости криптографических операций, например, при шифровании или цифровой подписи.

Основные компоненты DRBG

  1. Источник энтропии — начальное случайное значение, получаемое из внешнего источника (например, аппаратного генератора случайных чисел или операционной системы). Без качественного источника энтропии безопасность DRBG снижается.
  2. Seed — внутреннее состояние генератора, получаемое путём смешивания энтропии с дополнительными данными.
  3. Функция обновления состояния — алгоритм, который изменяет внутреннее состояние после каждого вызова генерации, предотвращая повторение последовательностей.
  4. Выходная функция — преобразует текущее состояние в выходной блок битов.

Процедуры работы

Стандарт определяет три основные операции:

  • Instantiate — инициализация DRBG с использованием seed и personalization string.
  • Generate — генерация заданного количества битов с возможностью добавления дополнительных входных данных (additional input) для повышения энтропии.
  • Reseed — повторная инициализация генератора с новым источником энтропии, что требуется после определённого количества вызовов Generate или при обнаружении утечки состояния.

Классификация алгоритмов DRBG

NIST SP 800-90A определяет три основных алгоритма DRBG, каждый из которых основан на различных криптографических примитивах:

1. Hash_DRBG

Основан на криптографических хеш-функциях (например, SHA-256, SHA-512). Генерация случайных битов выполняется путём многократного хеширования внутреннего состояния с добавлением счётчика. Преимущество — простота реализации и высокая скорость работы. Недостаток — потенциальная уязвимость к атакам на основе коллизий хеш-функций.

2. HMAC_DRBG

Использует HMAC (Hash-based Message Authentication Code) на основе хеш-функций. В этом алгоритме внутреннее состояние хранится в виде ключа HMAC и значения V. Генерация выполняется путём последовательного вычисления HMAC с изменением V. Считается более устойчивым к атакам, чем Hash_DRBG, за счёт использования секретного ключа.

3. CTR_DRBG

Основан на блочных шифрах (например, AES-128, AES-256) в режиме счётчика. Внутреннее состояние включает ключ шифрования и значение счётчика. Генерация выполняется путём шифрования последовательных значений счётчика. Этот алгоритм является наиболее быстрым среди трёх, особенно при аппаратной поддержке AES, но требует тщательной защиты ключа.

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

Стандарт предъявляет строгие требования к безопасности DRBG:

  • Непредсказуемость — выходная последовательность не должна коррелировать с внутренним состоянием или предыдущими выходами.
  • Устойчивость к атакам — даже при частичном раскрытии состояния (например, через утечку памяти) злоумышленник не должен иметь возможности восстановить предыдущие или предсказать будущие выходы.
  • Стойкость к перебору — вероятность угадывания следующего бита не должна превышать 1/2 + ε, где ε — пренебрежимо малая величина.
  • Поддержка reseed — обязательное требование для предотвращения деградации энтропии.

Применение

NIST SP 800-90A широко используется в криптографических системах, включая:

  • Операционные системы — генерация ключей шифрования, сессионных токенов, случайных чисел для ASLR (Address Space Layout Randomization).
  • Протоколы безопасностиTLS/SSL, IPsec, SSH, где требуется генерация случайных чисел для установки соединений.
  • Аппаратные модули безопасности (HSM) — встроенные DRBG для защиты криптографических операций.
  • Блокчейн-системы — генерация приватных ключей и nonce для транзакций.

Критика и уязвимости

Стандарт NIST SP 800-90A неоднократно подвергался критике. Основные претензии:

  • Подозрения в бэкдорах — после разоблачений Эдварда Сноудена в 2013 году стало известно, что NIST мог быть вовлечён в ослабление стандартов по требованию АНБ (Агентства национальной безопасности США). В частности, алгоритм Dual_EC_DRBG, основанный на эллиптических кривых, был признан содержащим потенциальный бэкдор, позволяющий предсказывать выходные последовательности. В результате Dual_EC_DRBG был исключён из стандарта в редакции 2015 года.
  • Сложность реализации — неправильная настройка источника энтропии или игнорирование требований reseed может привести к снижению безопасности.
  • Зависимость от аппаратного обеспечения — качество DRBG напрямую зависит от качества источника энтропии, который может быть скомпрометирован.

Влияние на российскую криптографию

В России стандарты NIST не являются обязательными, однако принципы, заложенные в NIST SP 800-90A, учитываются при разработке национальных криптографических стандартов (ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012). Российские генераторы случайных чисел, такие как «КриптоПро CSP» и «VipNet», используют аналогичные подходы, но с собственными алгоритмами (например, на основе ГОСТ Р 34.11-2012). В связи с санкционными рисками и политикой импортозамещения, российские организации стремятся минимизировать зависимость от зарубежных стандартов, включая NIST.

Современное состояние

На 2025 год актуальной является редакция NIST SP 800-90A Rev. 2 (2015). Работы по обновлению стандарта продолжаются: в 2023 году NIST опубликовал проект новой редакции, в котором предлагаются улучшения, включая поддержку постквантовых алгоритмов и усиление требований к источнику энтропии. Ожидается, что финальная версия будет выпущена в 2025–2026 годах.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →