Skip to content

📜 ГОСТ в ЭЦП: раньше и теперь

🔍 Введение

Электронная цифровая подпись (ЭЦП) в России регулируется рядом государственных стандартов, основными из которых являются:

  • ГОСТ Р 34.10 — стандарт формирования и проверки ЭЦП.
  • ГОСТ Р 34.11 — хэш-функция для подготовки данных к подписанию.
  • ГОСТ Р 34.12 — алгоритмы блочного шифрования ("Магма", "Кузнечник").

Развитие этих стандартов отражает рост требований к безопасности и изменение угроз в области криптографии.


⏳ История развития ГОСТ в ЭЦП

Версия Название Описание Применение
ГОСТ Р 34.10-94 Подписка на основе DSA с использованием модульной арифметики Первый стандарт ЭЦП в РФ Устарел, не используется
ГОСТ Р 34.11-94 Хэширование (Стрибог в зачатке) Хэш-функция длиной 256 бит Заменён на новую версию
ГОСТ Р 34.10-2001 Обновлённый стандарт ЭЦП На основе эллиптических кривых Широко использовался до 2015 г.
ГОСТ Р 34.11-2012 Стрибог Современная хэш-функция с выходом 256/512 бит Актуальный стандарт
ГОСТ Р 34.10-2012 ЭЦП на эллиптических кривых разной длины Поддерживает 256-битовые и 512-битовые ключи Текущий стандарт

💡 Переход с ГОСТ Р 34.10-2001 на ГОСТ Р 34.10-2012 был обусловлен необходимостью повышения стойкости против новых атак и соответствия международным стандартам.


🧩 Форматы и протоколы, поддерживающие ГОСТ ЭЦП

✅ XMLDSig

  • Расширение XML для цифровой подписи.
  • Поддерживает:
  • urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411
  • urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256

✅ CAdES (CMS Advanced Electronic Signatures)

  • Используется в ERP-системах, ЕГАИС, Контур.НДС и др.
  • Поддерживает:
  • ГОСТ Р 34.10-2012 + Стрибог
  • Интеграция через DSS / OpenDSS / CryptoPro COM API

✅ PKCS#7 / CMS

  • Стандарт хранения подписей.
  • Поддерживает ГОСТ через специфичные OID:
  • 1.2.643.2.2.19 — ГОСТ Р 34.10-2001
  • 1.2.643.2.2.30 — ГОСТ Р 34.10-2012

🔐 Как работает ГОСТ ЭЦП?

Процесс подписания (ГОСТ Р 34.10-2012):

Документ → Хэширование (ГОСТ Р 34.11-2012) → Получаем H(D)
H(D) + Закрытый ключ → Вычисляются параметры r и s
r и s → Формируют подпись

Пример кода на Python:

from gostcrypto.gostsignature import GOSTSignature
from gostcrypto.utils import read_file

data = read_file('document.xml')
signer = GOSTSignature('gost_3410_2012_256', private_key='private.pem')
signature = signer.sign(data)

with open('signature.bin', 'wb') as f:
    f.write(signature)

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

verifier = GOSTSignature('gost_3410_2012_256', public_key='public.pem')
result = verifier.verify(data, signature)
print("Подпись корректна:", result)

📊 Сравнение ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012

Параметр ГОСТ Р 34.10-2001 ГОСТ Р 34.10-2012
Длина ключа 256 бит 256 или 512 бит
Алгоритм DSA на эллиптических кривых То же, но с расширенными параметрами
Хэш-функция ГОСТ Р 34.11-94 ГОСТ Р 34.11-2012 (Стрибог)
Совместимость Со старыми системами Современные системы, ERP, ОФД, ЕГАИС
Безопасность Удовлетворительная Высокая
Статус Устаревший Актуальный

🛠️ Интеграция ГОСТ ЭЦП в реальные системы

✅ 1. 1С:Предприятие

  • Поддержка через COM-объекты: CAPICOM, CAdESCOM, CryptoPro COM API.
  • Пример вызова:
Процедура ПодписатьXML(ДокументXML)
    // Загрузить XML
    Контейнер = Новый КонтейнерДанных();
    Контейнер.Загрузить(ДокументXML);

    // Создать объект CAPICOM
    CAPICOM = Новый COMОбъект("CAPICOM.SignedData");
    CAPICOM.Content = Контейнер.ПолучитьСтроку();

    // Выбрать сертификат
    Сертификат = ВыбратьСертификат(); // Реализовать выбор

    // Подписать
    ПодписанныйКонтент = CAPICOM.Sign(Сертификат, Ложь, 0);

    // Сохранить результат
    СохранитьПодписанныйДокумент(ПодписанныйКонтент);
КонецПроцедуры

✅ 2. Контур.НДС, ЕГАИС, ГИС ГМП

  • Все документы должны быть подписаны УКЭП.
  • Поддерживаются:
  • XMLDSig
  • CAdES-BES
  • ГОСТ Р 34.10-2012 + Стрибог
  • Интеграция через:
  • CryptoPro CSP
  • DSS SDK
  • OpenDSS

✅ 3. Поддержка в OpenSSL (через engine ГОСТ)

# Генерация закрытого ключа ГОСТ
openssl genpkey -algorithm GOST2012_256 -out private.key

# Создание CSR
openssl req -new -key private.key -out request.csr

# Самоподписанный сертификат
openssl req -x509 -days 365 -key private.key -in request.csr -out cert.pem

🔒 Безопасность и защита при использовании ГОСТ ЭЦП

Мера Описание
Хранение ключей Только в безопасных контейнерах (eToken, Rutoken, HSM)
Защита приватного ключа Шифрование паролем, запрет экспорта
Проверка цепочки доверия OCSP / CRL
Ротация ключей Раз в 1–2 года
Тестирование Использовать тестовые среды (например, test.egais.ru)

🚀 Перспективы развития

  • Квантово-устойчивые алгоритмы: переход на постквантовую криптографию.
  • Интеграция с FIDO2/WebAuthn: использование аппаратных токенов и биометрии.
  • Облачные сервисы подписи (Cloud Signing Services): удалённая подпись без локального хранения ключей.
  • Поддержка ГОСТ в Kubernetes и микросервисах: автоматизация подписи в CI/CD пайплайнах.