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

ГОСТ Р 34.10-2012

ГОСТ Р 34.10-2012 — это национальный стандарт Российской Федерации, устанавливающий алгоритмы формирования и проверки электронной цифровой подписи (ЭЦП) на основе эллиптических кривых. Стандарт входит в семейство криптографических стандартов России, наряду с ГОСТ Р 34.11-2012 (функция хэширования «Стрибог») и ГОСТ 28147-89 (симметричное шифрование). Он был принят взамен устаревшего ГОСТ Р 34.10-2001 и является обязательным для использования в государственных информационных системах и при обмене документами, требующими юридической значимости в соответствии с Федеральным законом № 63-ФЗ «Об электронной подписи».

История и контекст разработки

Разработка ГОСТ Р 34.10-2012 была инициирована Федеральной службой безопасности (ФСБ) России и Техническим комитетом по стандартизации «Криптографическая защита информации» (ТК 26). Основная цель заключалась в замене алгоритмов, основанных на проблеме дискретного логарифмирования в простом поле (как в предыдущем стандарте 2001 года), на более современные и устойчивые к квантовым атакам схемы на эллиптических кривых.

Стандарт вступил в силу 1 января 2013 года. Его появление было связано с необходимостью гармонизации российских криптографических норм с международными тенденциями, в частности, с переходом на использование эллиптических кривых в стандартах США (NIST P-256, P-384) и Европы (EC-DSA). Однако российский стандарт использует собственные параметры кривых, отличные от зарубежных аналогов, что обеспечивает независимость от иностранных криптографических решений.

В 2019 году стандарт был актуализирован (изменение № 1) для уточнения процедур генерации ключей и подписи, а также для включения дополнительных рекомендаций по реализации на аппаратном уровне.

Классификация и основные характеристики

ГОСТ Р 34.10-2012 относится к классу асимметричных криптосистем, то есть систем, использующих пару ключей: секретный (закрытый) и открытый. Подпись создаётся с помощью секретного ключа, а проверяется — с помощью открытого.

Типы используемых эллиптических кривых

Стандарт определяет два основных типа кривых, различающихся длиной ключа и степенью криптостойкости:

ПараметрКривая 256 битКривая 512 бит
Длина закрытого ключа256 бит512 бит
Длина открытого ключа256 бит512 бит
Длина подписи64 байта (2×256 бит)128 байт (2×512 бит)
Стойкость (бит)128 бит (эквивалент AES-128)256 бит (эквивалент AES-256)
Область примененияСтандартные документы, ЭЦП для ФНС, госуслугДокументы особой важности, долговременное хранение

Кривые задаются над полем Галуа GF(p), где p — простое число. Для 256-битной кривой используется простое число p = 2^256 − 2^224 − 2^96 + 2^64 − 1. Для 512-битной — p = 2^512 − 2^496 − 2^96 + 2^64 − 1. Эти простые числа были выбраны для оптимизации вычислений на программном и аппаратном уровне.

Алгоритм работы

Генерация ключей

  1. Выбирается эллиптическая кривая E над полем GF(p) с заданными параметрами (a, b, базовая точка G порядка n).
  2. Случайным образом генерируется целое число d (закрытый ключ) в диапазоне [1, n-1].
  3. Вычисляется точка Q = d * G (открытый ключ) — результат умножения секретного ключа на базовую точку.

Создание подписи

Для подписи сообщения M (или его хэша H(M) по ГОСТ Р 34.11-2012):

  1. Вычисляется хэш-значение h = H(M). Если битовая длина h меньше длины ключа, оно дополняется нулями слева.
  2. Генерируется случайное число k (эфемерный ключ) из диапазона [1, n-1].
  3. Вычисляется точка R = k * G. Координата x точки R преобразуется в целое число r = x mod n. Если r = 0, шаг 2 повторяется.
  4. Вычисляется значение s = (k h + r d) mod n. Если s = 0, шаг 2 повторяется.
  5. Подпись представляет собой пару (r, s).

Проверка подписи

  1. Вычисляется хэш-значение h = H(M).
  2. Проверяется, что r и s находятся в диапазоне [1, n-1].
  3. Вычисляется значение u1 = h * s^(-1) mod n.
  4. Вычисляется значение u2 = r * s^(-1) mod n.
  5. Вычисляется точка P = u1 G + u2 Q. Если P — точка на бесконечности, подпись недействительна.
  6. Вычисляется r' = x-координата P mod n. Если r' = r, подпись считается корректной.

Отличия от предыдущего стандарта (ГОСТ Р 34.10-2001)

Основное отличие заключается в математической основе. ГОСТ Р 34.10-2001 использовал алгоритм EC-DSA (Elliptic Curve Digital Signature Algorithm), который был адаптацией американского стандарта DSA на эллиптические кривые. В ГОСТ Р 34.10-2012 применяется схема Шнорра (Schnorr signature), модифицированная для эллиптических кривых. Это изменение позволило:

Применение

ГОСТ Р 34.10-2012 является обязательным для использования в следующих сферах:

Критика и ограничения

Несмотря на широкое распространение, стандарт подвергается критике со стороны некоторых экспертов:

  1. Закрытые параметры кривых. Параметры эллиптических кривых (a, b, порядок n) были разработаны в закрытых ведомствах (ФСБ) без публичного обоснования. Это порождает гипотетический риск наличия «лазеек» (backdoors), хотя официальные исследования подтверждают отсутствие аномалий.
  2. Совместимость. Из-за использования уникальных кривых российские реализации несовместимы с международными стандартами (ECDSA, EdDSA). Для взаимодействия с зарубежными системами требуется конвертация ключей, что снижает практичность.
  3. Производительность. На 256-битной кривой скорость вычислений сопоставима с международными аналогами, но на 512-битной кривой производительность падает в 2–3 раза из-за большего размера модуля p.

Интересные факты

Источники

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

На главную BFOmetr →