Streebog
Streebog (также известный как ГОСТ Р 34.11-2012) — это российский стандарт криптографической хеш-функции, принятый в 2012 году и заменивший предыдущий стандарт ГОСТ Р 34.11-94. Функция предназначена для вычисления дайджеста (хеш-кода) произвольной последовательности данных, обеспечивая целостность и аутентичность информации. Streebog является обязательным для использования в государственных информационных системах Российской Федерации и рекомендуется для применения в коммерческих системах, где требуется высокий уровень криптографической защиты.
История
Разработка нового стандарта хеш-функции была инициирована в связи с устареванием алгоритма ГОСТ Р 34.11-94, который к концу 2000-х годов перестал соответствовать современным требованиям криптостойкости. Основной причиной стало развитие методов криптоанализа, в частности, атак на основе коллизий, которые могли быть применены к старому стандарту. Работы велись под эгидой Федеральной службы безопасности (ФСБ) России и Технического комитета по стандартизации «Криптографическая защита информации» (ТК 26).
Алгоритм был официально утверждён и опубликован в 2012 году как часть пакета новых криптографических стандартов, включающего также стандарты электронной подписи (ГОСТ Р 34.10-2012) и шифрования (ГОСТ Р 34.12-2015). В 2015 году Streebog был включён в международный стандарт ISO/IEC 10118-3:2018 в качестве дополнительного выделенного хеш-алгоритма.
Классификация
Streebog относится к классу криптографических хеш-функций с итеративной структурой, основанной на конструкции Меркла — Дамгора с модификациями. По типу используемых операций он является SPN-сетью (Substitution-Permutation Network), что роднит его с современными алгоритмами, такими как SHA-3 (Keccak). В отличие от многих предшественников, Streebog использует фиксированную длину блока обработки в 512 бит и поддерживает два размера выходного дайджеста: 256 бит и 512 бит.
Характеристики и устройство
Параметры
- Размер блока: 512 бит (64 байта).
- Размер дайджеста: 256 бит (32 байта) или 512 бит (64 байта).
- Число раундов: 12 (для обоих вариантов).
- Внутреннее состояние: 512 бит (8 слов по 64 бита).
- Исходный вектор инициализации: фиксированный, определённый стандартом.
Алгоритм работы
Алгоритм Streebog обрабатывает входное сообщение блоками по 512 бит. Если длина сообщения не кратна 512 битам, выполняется процедура дополнения (паддинга), которая включает добавление единичного бита, нулевых битов и 64-битного представления исходной длины сообщения. Основной цикл состоит из 12 раундов, каждый из которых включает следующие операции:
- X (XOR) — побитовое сложение по модулю 2 с раундовым ключом.
- S (SubBytes) — нелинейная замена каждого байта состояния с помощью фиксированной таблицы подстановки (S-блока).
- P (Permutation) — перестановка байтов состояния в соответствии с заданным правилом.
- L (Linear Transformation) — линейное преобразование, выполняемое умножением каждого 64-битного слова состояния на фиксированную матрицу в поле Галуа GF(2^8).
После обработки всех блоков сообщения выполняется финальное преобразование, которое включает сжатие последнего блока и выдачу итогового дайджеста.
Криптостойкость
На момент создания Streebog был спроектирован с запасом прочности против известных криптоаналитических атак, включая атаки на основе коллизий, прообразов и дифференциального криптоанализа. Для дайджеста длиной 512 бит стойкость против коллизий оценивается в 2^256 операций, а против нахождения прообраза — в 2^512 операций. Для дайджеста 256 бит соответствующие показатели составляют 2^128 и 2^256 операций. Несмотря на то, что в 2013—2014 годах были опубликованы работы, указывающие на потенциальные уязвимости в раундовой функции (например, атаки на сокращённое число раундов), полный 12-раундовый алгоритм на 2024 год считается криптостойким и не имеет практически реализуемых атак.
Применение
Streebog является обязательным для использования в следующих областях:
- Государственные информационные системы: обеспечение целостности данных в системах электронного документооборота, государственных реестрах, базах данных.
- Электронная подпись: совместно с алгоритмами ГОСТ Р 34.10-2012 (на эллиптических кривых) для создания и проверки электронных подписей.
- Шифрование: в режимах выработки имитовставки (MAC) и в комбинации с блочными шифрами (например, ГОСТ 28147-89 или «Кузнечик»).
- Протоколы аутентификации: в протоколах TLS, IPSec и других, где требуется российская криптография.
- Облачные сервисы: для контроля целостности данных при хранении и передаче.
Реализации
Алгоритм Streebog реализован в большинстве современных криптографических библиотек, поддерживающих российские стандарты. Среди них:
- OpenSSL (с версии 1.1.1) — с поддержкой через модуль GOST.
- Crypto++ — встроенная поддержка.
- Botan — встроенная поддержка.
- библиотека «КриптоПро CSP» — коммерческая реализация.
- библиотека «Верба» — коммерческая реализация.
- Языки программирования: Python (через модули
pygostилиcryptography), Go, Java, C#.
Сравнение с другими хеш-функциями
| Характеристика | Streebog (512 бит) | SHA-512 | SHA-3 (512 бит) |
|---|---|---|---|
| Размер дайджеста | 512 бит | 512 бит | 512 бит |
| Размер блока | 512 бит | 1024 бит | 1600 бит (состояние) |
| Число раундов | 12 | 80 | 24 (для 512 бит) |
| Структура | SPN-сеть | ARX (Addition-Rotation-XOR) | Sponge-конструкция |
| Криптостойкость (коллизии) | 2^256 | 2^256 | 2^256 |
| Скорость (на современных процессорах) | Средняя | Высокая | Средняя |
Streebog уступает SHA-512 в скорости на программных реализациях из-за более сложных нелинейных и линейных преобразований, но превосходит его по устойчивости к некоторым типам атак, связанным с аппаратными уязвимостями (например, атаки по сторонним каналам). По сравнению с SHA-3, Streebog имеет схожую стойкость, но отличается более высокой эффективностью на 64-битных архитектурах за счёт оптимизации под регистры общего назначения.
Интересные факты
- Название «Streebog» не является аббревиатурой; оно было выбрано разработчиками как псевдоним, не имеющий прямого отношения к алгоритму.
- Стандарт ГОСТ Р 34.11-2012 является одним из немногих национальных криптографических стандартов, включённых в международный стандарт ISO.
- В 2018 году была опубликована работа, демонстрирующая атаку на 9,5 раундов Streebog с вычислительной сложностью 2^256, что не представляет угрозы для полного 12-раундового алгоритма.
- Алгоритм поддерживает так называемый «режим сжатия» (HMAC-Streebog), который используется для вычисления имитовставки в протоколах аутентификации.
Критика
Основные замечания к Streebog связаны с его относительно невысокой производительностью по сравнению с аналогами (SHA-2, SHA-3) на массовых процессорах без аппаратной поддержки. Кроме того, закрытость процесса разработки (стандарт создавался под эгидой ФСБ) вызвала определённое недоверие в международном криптографическом сообществе, хотя последующий открытый анализ не выявил скрытых уязвимостей. Некоторые исследователи отмечают избыточную сложность раундовой функции, что может затруднять реализацию на устройствах с ограниченными ресурсами (например, в IoT).
Источники
- ГОСТ Р 34.11-2012 «Информационная технология. Криптографическая защита информации. Функция хеширования».
- ISO/IEC 10118-3:2018 «Information technology — Security techniques — Hash-functions — Part 3: Dedicated hash-functions».
- А. А. Глухов, В. А. Козлов, А. А. Копылов. «Криптографические хеш-функции: теория и практика». — М.: Гелиос АРВ, 2019.
- Д. В. Ковалёв, С. В. Пантелеев. «Анализ стойкости хеш-функции ГОСТ Р 34.11-2012». — Журнал «Проблемы информационной безопасности», 2014.
- Официальный сайт Технического комитета по стандартизации «Криптографическая защита информации» (ТК 26).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →