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
- Источник энтропии — начальное случайное значение, получаемое из внешнего источника (например, аппаратного генератора случайных чисел или операционной системы). Без качественного источника энтропии безопасность DRBG снижается.
- Seed — внутреннее состояние генератора, получаемое путём смешивания энтропии с дополнительными данными.
- Функция обновления состояния — алгоритм, который изменяет внутреннее состояние после каждого вызова генерации, предотвращая повторение последовательностей.
- Выходная функция — преобразует текущее состояние в выходной блок битов.
Процедуры работы
Стандарт определяет три основные операции:
- 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 →