ГОСТ Р 34.11-2012
ГОСТ Р 34.11-2012 — это российский национальный стандарт, определяющий алгоритм криптографического хеширования «Стрибог» (Streebog). Стандарт устанавливает процедуру вычисления хеш-функции, которая преобразует произвольный массив двоичных данных (сообщение) в фиксированное выходное значение (хеш-код, дайджест) длиной 256 или 512 бит. Принят и введён в действие Приказом Федерального агентства по техническому регулированию и метрологии (Росстандарт) от 7 августа 2012 года № 216-ст. Является частью семейства российских криптографических стандартов, наряду с ГОСТ Р 34.10-2012 (электронная подпись) и ГОСТ Р 34.11-94 (предыдущая версия хеш-функции).
История
Предпосылки создания
Необходимость разработки нового стандарта хеширования была вызвана несколькими факторами. Во-первых, предшествующий алгоритм ГОСТ Р 34.11-94, основанный на блочном шифре ГОСТ 28147-89, к началу 2010-х годов демонстрировал признаки устаревания. Длина его хеша (256 бит) стала считаться недостаточной для обеспечения долгосрочной криптостойкости в условиях развития вычислительных мощностей и появления новых методов криптоанализа, включая атаки на основе коллизий. Во-вторых, международное сообщество переходило на более современные алгоритмы (SHA-2, SHA-3), и требовалось обеспечить совместимость российской криптографии с мировыми стандартами, сохранив при этом независимость от зарубежных разработок.
Разработка и принятие
Разработка стандарта велась в 2010–2012 годах коллективом специалистов из нескольких организаций, включая:
- Академию криптографии Российской Федерации;
- Институт проблем передачи информации им. А. А. Харкевича РАН;
- Национальный исследовательский университет «Высшая школа экономики»;
- ООО «Криптоком» (разработчик средств криптографической защиты информации).
Алгоритм «Стрибог» был предложен как кандидат на замену ГОСТ Р 34.11-94. В 2012 году проект прошёл экспертизу и был утверждён в качестве национального стандарта. В 2013 году алгоритм был опубликован в открытом доступе для международного криптоанализа.
Международное признание
В 2015 году алгоритм «Стрибог» был включён в проект ISO/IEC 10118-3 (международный стандарт на хеш-функции) в качестве дополнительного алгоритма. Это позволило использовать его в международных криптографических протоколах и системах, сертифицированных по стандартам ISO.
Алгоритм «Стрибог»
Общая схема
Алгоритм «Стрибог» относится к классу итеративных хеш-функций, построенных на основе схемы Меркла — Дамгора. Он принимает на вход сообщение произвольной длины (до \(2^{512}\) бит) и выдаёт хеш-код фиксированной длины — 256 или 512 бит. Выбор длины хеша определяется модификацией алгоритма: ГОСТ Р 34.11-2012-256 и ГОСТ Р 34.11-2012-512.
Основные компоненты
- Функция сжатия — центральный элемент алгоритма. Она преобразует блок данных размером 512 бит и промежуточное состояние хеша (также 512 бит) в новое состояние. Функция сжатия основана на нелинейных преобразованиях, использующих:
- S-блоки (подстановки) — нелинейные таблицы замены 8×8 бит, обеспечивающие стойкость к дифференциальному и линейному криптоанализу;
- P-блоки (перестановки) — перемешивание битов внутри блока;
- L-преобразование (линейное) — умножение на матрицу в поле Галуа \(GF(2^8)\), обеспечивающее лавинный эффект (изменение одного бита входного сообщения приводит к изменению примерно половины битов хеша).
- Процедура дополнения (падинг) — к сообщению добавляется служебная информация: бит «1», нулевые биты до выравнивания на границу 512 бит и 64-битное представление длины исходного сообщения в битах. Это необходимо для обеспечения однозначности хеширования сообщений разной длины.
- Инициализация — начальное значение хеша (IV) для версии 512 бит равно нулевому вектору; для версии 256 бит — специально заданное значение, полученное хешированием нулевого сообщения.
Стойкость
Алгоритм «Стрибог» обладает следующими криптографическими свойствами:
- Стойкость к коллизиям: для версии 512 бит — не менее \(2^{256}\) операций (по оценкам разработчиков); для версии 256 бит — не менее \(2^{128}\) операций.
- Стойкость к прообразу: для версии 512 бит — не менее \(2^{512}\) операций; для версии 256 бит — не менее \(2^{256}\) операций.
- Устойчивость к атакам на основе удлинения сообщения (length extension attack): алгоритм спроектирован так, что данная атака невозможна благодаря финализации (дополнительному преобразованию выходного состояния).
В 2015–2017 годах алгоритм прошёл международный криптоанализ. Исследователи из разных стран (включая Францию, Германию, Китай) не выявили практических уязвимостей, однако были найдены некоторые теоретические атаки на упрощённые версии «Стрибога» (с меньшим числом раундов). Полный 12-раундовый алгоритм считается стойким.
Применение
На территории Российской Федерации
ГОСТ Р 34.11-2012 обязателен к применению в государственных информационных системах и системах, обрабатывающих персональные данные, если требуется криптографическая защита. Конкретные области использования:
- Электронная подпись: хеш-функция используется для вычисления дайджеста документа перед его подписанием по ГОСТ Р 34.10-2012 (алгоритмы электронной подписи на основе эллиптических кривых).
- Аутентификация: в протоколах проверки целостности данных (например, HMAC-Streebog).
- Блокчейн и распределённые реестры: некоторые российские проекты (например, «Мастерчейн») используют «Стрибог» для хеширования транзакций.
- Архивное хранение: для контроля целостности больших массивов данных (например, в системах электронного документооборота).
В международных системах
Алгоритм поддерживается в ряде открытых криптографических библиотек:
- OpenSSL (начиная с версии 1.1.1, 2018 год);
- Botan;
- Crypto++.
Однако его распространение за пределами России ограничено из-за отсутствия обязательных требований в других странах и доминирования алгоритмов SHA-2/SHA-3.
Критика и ограничения
Производительность
На момент разработки «Стрибог» уступал по скорости вычислениям на программном уровне (особенно на 32-битных архитектурах) алгоритму SHA-256. Это связано с использованием операций в поле Галуа \(GF(2^8)\), которые плохо поддерживаются стандартными процессорами общего назначения. Однако на современных процессорах с поддержкой инструкций AES-NI (через эмуляцию) скорость может быть сопоставима.
Закрытость начального этапа
Криптографическое сообщество высказывало замечания по поводу того, что алгоритм разрабатывался без публичного конкурса (в отличие от SHA-3, выбранного через открытый процесс NIST). Это породило сомнения в отсутствии скрытых уязвимостей, заложенных разработчиками. Однако публикация алгоритма в 2013 году и последующий независимый анализ частично сняли эти опасения.
Совместимость
Из-за того, что «Стрибог» не является частью основных международных стандартов (ISO/IEC 10118-3 включает его как опциональный), его поддержка в зарубежном программном обеспечении остаётся ограниченной. Это создаёт сложности при интеграции российских систем с международными.
Интересные факты
- Название «Стрибог» происходит от имени древнеславянского бога ветра Стрибога, что символизирует «быстроту» и «неуловимость» хеш-функции.
- Алгоритм имеет 12 раундов (в отличие от 64 раундов у предшественника ГОСТ Р 34.11-94), что упрощает аппаратную реализацию.
- В 2020 году была предложена модификация «Стрибог-256» с использованием 256-битного хеша, которая полностью совместима с международным стандартом SHA-256 по длине выхода.
Источники
- ГОСТ Р 34.11-2012 «Информационная технология. Криптографическая защита информации. Функция хеширования». — М.: Стандартинформ, 2012.
- ISO/IEC 10118-3:2018 «IT Security techniques — Hash-functions — Part 3: Dedicated hash-functions».
- Пшеничный Д. А., Рябко Б. Я. «Криптографический алгоритм хеширования "Стрибог": анализ и реализация». — Журнал «Проблемы информационной безопасности», 2015.
- Открытые публикации Академии криптографии РФ (2012–2013).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →