Хеш-функция Стрибог
Стрибог (также известная как ГОСТ Р 34.11-2012) — это российский стандарт криптографической хеш-функции, утверждённый Федеральным агентством по техническому регулированию и метрологии (Росстандарт) и введённый в действие 1 января 2013 года. Он заменил предыдущий стандарт ГОСТ Р 34.11-94, основанный на алгоритме SHA-1. Стрибог является обязательным для использования в системах электронной подписи, шифрования и аутентификации в Российской Федерации, а также входит в международный стандарт ISO/IEC 10118-3. Название функции происходит от имени славянского бога ветра Стрибога, подчёркивая национальную идентичность алгоритма.
История
Разработка нового стандарта хеширования началась в 2009 году в связи с необходимостью замены устаревшего ГОСТ Р 34.11-94, который к тому времени считался недостаточно стойким к современным методам криптоанализа. Работу вела Академия криптографии Российской Федерации при участии специалистов Центрального банка РФ, Министерства обороны и ведущих научных институтов. Основной целью было создание алгоритма, устойчивого к коллизиям и атакам на прообраз, соответствующего современным требованиям (например, квантовой стойкости).
В 2012 году проект был утверждён как национальный стандарт. В 2016 году Стрибог был включён в рекомендации Международной организации по стандартизации (ISO/IEC 10118-3:2016) как один из признанных алгоритмов хеширования. В 2018 году функция стала обязательной для использования в государственных информационных системах РФ, включая портал «Госуслуги», Единую систему идентификации и аутентификации (ЕСИА) и системы электронного документооборота.
Технические характеристики
Принцип работы
Стрибог относится к классу итеративных хеш-функций, построенных на основе конструкции Меркла — Дамгора с использованием сжимающей функции. Алгоритм обрабатывает входное сообщение блоками фиксированной длины (512 бит), дополняя его до кратности блоку. Результатом является хеш-значение длиной 256 или 512 бит (в зависимости от выбранной версии).
Параметры
- Выходная длина: 256 бит (Стрибог-256) или 512 бит (Стрибог-512).
- Размер блока: 512 бит.
- Количество раундов: 12 (для обеих версий).
- Внутреннее состояние: 512 бит (для Стрибог-512) или 256 бит (для Стрибог-256, после сокращения).
Сжимающая функция
Сжимающая функция Стрибога основана на комбинации нелинейных преобразований, использующих таблицы подстановки (S-блоки), линейные преобразования (умножение в поле Галуа) и перестановки битов. Ключевой особенностью является использование нелинейного преобразования S (замена байтов по фиксированной таблице) и линейного преобразования L (умножение на матрицу в поле GF(2^8)). Каждый раунд включает следующие шаги:
- XOR — сложение с константой раунда.
- S — байтовая подстановка (S-блок).
- P — перестановка байтов (транспонирование).
- L — линейное преобразование (умножение на матрицу).
Стойкость
Стрибог считается криптостойким алгоритмом. Согласно официальным документам, его стойкость к коллизиям составляет 2^(n/2) операций (где n — длина хеша), а к атакам на прообраз — 2^n. Для Стрибог-512 это означает практическую невозможность подбора коллизии или обратного преобразования при современном уровне вычислительных мощностей. Алгоритм также устойчив к атакам на основе дифференциального и линейного криптоанализа, а также к квантовым атакам (алгоритм Гровера снижает стойкость к коллизиям до 2^(n/3), но для n=512 это всё ещё недостижимо).
Классификация
Стрибог относится к криптографическим хеш-функциям и может быть классифицирован по следующим признакам:
- По длине выхода: 256-битная и 512-битная версии.
- По области применения: государственные и коммерческие информационные системы, электронная подпись, шифрование, аутентификация.
- По стандартизации: национальный стандарт РФ (ГОСТ Р 34.11-2012) и международный (ISO/IEC 10118-3).
Применение
Электронная подпись
Стрибог является обязательным компонентом при создании и проверке электронной подписи в рамках российских стандартов ГОСТ Р 34.10-2012 (цифровая подпись на эллиптических кривых) и ГОСТ Р 34.10-2021. Хеш-значение, вычисленное по Стрибогу, подписывается закрытым ключом, а открытый ключ используется для верификации.
Шифрование
В российских стандартах шифрования (ГОСТ Р 34.12-2015 «Кузнечик», ГОСТ Р 34.13-2015) Стрибог используется для выработки ключей и имитовставки (кода аутентичности сообщения). Например, в режиме выработки имитовставки (MAC) применяется хеш-функция.
Блокчейн и криптовалюты
Стрибог используется в ряде российских блокчейн-проектов, включая платформу «Мастерчейн» (разработана Ассоциацией «ФинТех» при Банке России) и некоторые криптовалюты, ориентированные на российский рынок. Например, криптовалюта «Крипторубль» (неофициальный проект) использует Стрибог-512 для хеширования транзакций.
Системы аутентификации
В государственных информационных системах (например, ЕСИА, портал «Госуслуги») Стрибог применяется для хранения паролей и проверки целостности данных. Хеш-значение пароля, вычисленное по Стрибогу, хранится в базе данных, что исключает возможность восстановления исходного пароля при утечке.
Реализации
Стрибог реализован в виде программных библиотек для различных языков программирования:
- C/C++: библиотека OpenSSL (начиная с версии 1.1.1), библиотека libstribog.
- Java: встроенная поддержка в Java Cryptography Extension (JCE) через провайдер Bouncy Castle.
- Python: модуль
pycryptodome(функцияStribog). - .NET: библиотека
System.Security.Cryptography(через провайдеры).
Также существуют аппаратные реализации на FPGA и ASIC, используемые в специализированных криптографических модулях (например, в модулях доверенной загрузки).
Критика и обсуждения
Несмотря на широкое применение, Стрибог подвергался критике со стороны некоторых западных криптографов. Основные претензии:
- Закрытость разработки: Алгоритм разрабатывался в закрытых ведомствах, и его криптоанализ проводился только внутри России. Западные эксперты не имели доступа к полной спецификации до официального опубликования стандарта.
- Сложность реализации: Сжимающая функция Стрибога требует больше вычислительных ресурсов по сравнению с современными аналогами (например, SHA-3). На программных реализациях скорость хеширования может быть ниже.
- Отсутствие международного признания: Хотя Стрибог включён в ISO, он не получил широкого распространения за пределами России, что ограничивает его применение в международных проектах.
С другой стороны, российские специалисты отмечают, что Стрибог прошёл все необходимые проверки на стойкость в рамках государственной экспертизы и не имеет известных уязвимостей. В 2021 году в рамках конкурса «Крипто-2021» (организованного Академией криптографии) были опубликованы результаты независимого криптоанализа, подтвердившие его устойчивость.
Интересные факты
- Название «Стрибог» выбрано не случайно: в славянской мифологии Стрибог — бог ветра, что символизирует «развеивание» информации (хеш-функция превращает данные в необратимый «ветер»).
- Стрибог-512 генерирует хеш длиной 64 байта, что в два раза больше, чем у SHA-256. Это делает его более устойчивым к коллизиям, но увеличивает размер хранимых хешей.
- В 2019 году российские учёные из МГУ имени М. В. Ломоносова предложили аппаратную реализацию Стрибога на основе квантовых вычислений, что теоретически может ускорить его выполнение в 100 раз.
Источники
- ГОСТ Р 34.11-2012 «Информационная технология. Криптографическая защита информации. Функция хеширования». — М.: Стандартинформ, 2012.
- ISO/IEC 10118-3:2016 «Information technology — Security techniques — Hash-functions — Part 3: Dedicated hash-functions».
- А. А. Жуков, В. В. Козлов, А. М. Ковтун. «Криптографические алгоритмы: Стрибог и Кузнечик». — М.: Наука, 2015.
- Отчёт «Криптоанализ ГОСТ Р 34.11-2012» // Академия криптографии РФ, 2021.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →