GnuPG с поддержкой ГОСТ

GnuPG — это ключевая криптографическая система с открытым исходным кодом, лежащая в основе цифровых подписей, шифрования электронной почты, безопасности пакетов и доверенной аутентификации. Мы добавили в неё полноценную поддержку российских алгоритмов ГОСТ: ЭЦП на ГОСТ Р 34.10-2012 (256 и 512 бит), хэш-функцию ГОСТ Р 34.11-2012 (Сtribog), симметричный шифр ГОСТ 28147-89 и обёртку ключей (key wrap) на базе ГОСТ ECDH. Это значит, что теперь можно создавать и проверять подписи, шифровать данные и генерировать ключи с ГОСТ-алгоритмами напрямую — без сторонних патчей или провайдеров. Всё работает «из коробки» в Kleopatra, Thunderbird, GpgOL, RPM/DEB-сборках и CI/CD-сценариях. Разработчики получают стабильный CLI и API-интерфейс для создания ГОСТ-совместимых решений на Linux, Windows и macOS.

Применение ГОСТ-алгоритмов в GnuPG в составе НАЙС.ОС

Техническое руководство. Назначение: эксплуатация, тестирование, интеграция и диагностика ГОСТ-криптографии на уровне OpenPGP и X.509/CMS в составе GnuPG. Документ ориентирован на системных администраторов, инженеров эксплуатации и разработчиков.

Ключевая идея применения GnuPG+ГОСТ: реализация используется для разработки, тестирования, интеграции и диагностики (проверка подписи, разбор CMS/OCSP/CRL, подготовка стендов, CI/CD) без обязательного приобретения коммерческого криптопровайдера на ранних этапах. В сценариях, где закон/регулятор требует применение сертифицированных средств криптографической защиты информации, используется сертифицированный криптопровайдер и соответствующий контур эксплуатации.
Ограничение (статус сертификации): наличие поддержки ГОСТ-алгоритмов в GnuPG в составе НАЙС.ОС не означает, что данная реализация является сертифицированным СКЗИ. Для юридически значимых/регулируемых процессов применяется сертифицированный криптопровайдер и утверждённая организационная схема.

1. Область применения

Настоящий документ устанавливает порядок применения GnuPG с поддержкой ГОСТ-алгоритмов в составе НАЙС.ОС для следующих задач:

  • проверка подписи и целостности файлов и контейнеров в OpenPGP-форматах;
  • проверка и формирование CMS-подписей (S/MIME), разбор X.509-сертификатов, цепочек и политик;
  • диагностика совместимости с инфраструктурой российских УЦ (сертификаты, CRL, OCSP, OID/профили);
  • интеграция криптоопераций в автоматизацию (скрипты, CI/CD, внутренние репозитории, артефакты поставки);
  • построение стендов разработки без закупки криптопровайдера на этапе прототипирования.

Документ не заменяет требования регуляторов и не определяет юридическую применимость подписи. Документ описывает техническую эксплуатацию и методику проверок в инженерных процессах.


2. Нормативные ссылки и применимые требования

В инженерной практике ГОСТ-криптография применяется в контекстах, заданных нормативными документами и профилями. При проектировании продуктивного контура следует учитывать применимые требования и утверждённые организационные регламенты.

  • Федеральный закон № 63-ФЗ «Об электронной подписи» (правовые основы применения электронной подписи).
  • Приказ ФСБ № 795 (перечень допустимых криптографических алгоритмов и требований к их применению).
  • Профиль ТК-26 (профилирование сертификатов/алгоритмов/расширений и OID-ограничения для российской PKI-практики).

3. Термины, сокращения и обозначения

  • ГОСТ — семейство российских криптографических стандартов (подпись, хеширование, симметричное шифрование, протоколы обмена).
  • OpenPGP — формат и протокол криптографических сообщений (подпись/шифрование), реализуемый утилитой gpg.
  • X.509 — формат сертификатов открытых ключей; используется в PKI.
  • CMS — Cryptographic Message Syntax (подписи/шифрование контейнеров, в т.ч. S/MIME).
  • CRL — Certificate Revocation List (список отзыва сертификатов).
  • OCSP — протокол проверки статуса сертификата.
  • УЦ — удостоверяющий центр.
  • СКЗИ — средство криптографической защиты информации (в контексте регуляторных требований).

4. Назначение GnuPG с поддержкой ГОСТ

GnuPG (GNU Privacy Guard) представляет собой набор утилит и служб, реализующих криптографические операции и работу с ключевым материалом. В контексте ГОСТ поддержка применяется для расширения возможностей обработки российских алгоритмов на уровнях:

  • OpenPGP-контур (утилита gpg): генерация ключей, подпись, проверка, шифрование и обмен ключевым материалом.
  • X.509/CMS-контур (утилита gpgsm): работа с сертификатами, проверка/формирование CMS-подписей (S/MIME), валидация.
  • Агентский контур (gpg-agent, keyboxd, dirmngr): хранение ключей, доступ к сертификатам, операции со смарт-картами/токенами (при наличии), проверка статусов по CRL/OCSP.

Практическая причина использования «из коробки» состоит в сокращении времени вывода решения на стенд: инженеру требуется возможность быстро проверить подпись, разобрать цепочку сертификатов, воспроизвести поведение клиента и выявить несовместимость. Данные операции необходимы даже в случаях, когда продуктивное подписание должно выполняться сертифицированным криптопровайдером.


5. Состав поставки в НАЙС.ОС и проверка готовности

В НАЙС.ОС сборка GnuPG с поддержкой ГОСТ доступна в базовой поставке. Установка дополнительных пакетов для включения ГОСТ-функциональности не требуется. Контроль готовности выполняется путём проверки версий и перечней доступных алгоритмов в текущей среде выполнения.

5.1. Проверка версий компонент

# Версия GnuPG и перечень поддерживаемых алгоритмов (в выводе обычно присутствуют разделы Cipher/Hash/Pubkey)
gpg --version

# Версия компонента X.509/CMS
gpgsm --version

# Версии библиотек и компонент, используемых GnuPG
gpgconf --show-versions

5.2. Контроль наличия ГОСТ-алгоритмов по факту

Перечень доступных алгоритмов зависит от сборки и криптографического бэкенда. Контроль выполняется по фактическому выводу утилит.

# В выводе gpg --version проверьте наличие ГОСТ-алгоритмов в списках:
# - Hash: (ожидаются варианты Streebog 256/512, если включено)
# - Cipher: (возможны варианты ГОСТ 28147-89, если включено)
# - Pubkey: (ожидается поддержка ГОСТ-ЭЦП/обмена, если включено)
gpg --version | sed -n '1,160p'
Диагностический критерий: если при разборе сертификата/подписи возникает ошибка вида unsupported algorithm 1.2.643..., это означает отсутствие поддержки соответствующего OID/алгоритма на уровне библиотек или отсутствие включения ГОСТ-кода в сборку. В НАЙС.ОС целевой режим — отсутствие данной ошибки при корректных входных данных.

6. Экономический и инженерный эффект применения

Использование GnuPG с ГОСТ-поддержкой в составе НАЙС.ОС применяется как инженерный инструмент по следующим причинам:

  • Сокращение затрат на ранней стадии — прототипирование, интеграционные тесты, отладка цепочек сертификатов и подписей выполняются без обязательного приобретения криптопровайдера.
  • Ускорение развёртывания — подготовка стенда и запуск тестовых проверок не требуют отдельной установки и лицензирования.
  • Повышение воспроизводимости — проверки алгоритмов, OID, расширений сертификатов, CRL/OCSP выполняются в унифицированной среде, что снижает расхождения между окружениями разработчика, CI и тестового контура.
  • Формализация диагностики — наличие CLI-инструментов позволяет фиксировать результаты проверок в виде логов, которые пригодны для инженерного анализа и автоматической регрессии.

В продуктивных сценариях, где требуется соблюдение требований закона и регуляторов к СКЗИ, применяется сертифицированный криптопровайдер. Инженерная ценность GnuPG+ГОСТ при этом сохраняется: инструмент используется для предтестов, воспроизведения дефектов и проверки совместимости входных данных.


7. Архитектура компонент и потоки данных

Архитектура GnuPG в типовой конфигурации включает:

  • gpg — операции OpenPGP (подпись/проверка/шифрование);
  • gpgsm — операции X.509/CMS (S/MIME, CMS-контейнеры);
  • gpg-agent — агент ключевых операций и PIN-ввода;
  • keyboxd — хранение/индексация сертификатов и ключевых метаданных;
  • dirmngr — CRL/OCSP и сетевые обращения PKI-уровня (при включённых проверках).

ГОСТ-поддержка прикладного уровня активируется при наличии реализованных примитивов в криптографическом бэкенде и при распознавании OID из семейства 1.2.643.* в сертификатах и контейнерах. Для диагностики применяются режимы подробного вывода и трассировки.

7.1. Режимы диагностики

# Для OpenPGP-операций (пример)
gpg -vv --debug-level advanced --debug-all --list-keys

# Для X.509/CMS-операций (пример)
gpgsm -vv --debug-level advanced --debug-all --list-keys
Требование к инженерной диагностике: при разборе инцидентов фиксируются: версия GnuPG и библиотек (gpgconf --show-versions), команда воспроизведения, хеш входных данных, а также полный отладочный вывод (--debug-all) в защищённом журнале.

8. OpenPGP: генерация и эксплуатация ГОСТ-ключей (gpg)

Настоящий раздел описывает операции OpenPGP-контура: генерация ключей, экспорт, подпись, проверка, шифрование и расшифрование. На практике наименования кривых и алгоритмов зависят от сборки; в НАЙС.ОС контроль выполняется по фактическому выводу интерактивной генерации ключей и по доступным идентификаторам в gpg --version.

8.1. Генерация ГОСТ-ключа

# Интерактивная генерация ключа.
# В процессе выбора укажите ECC и доступную ГОСТ-кривую (наименование зависит от сборки).
gpg --full-generate-key

При генерации указываются: тип ключа, параметры кривой, срок действия, идентификатор пользователя (UID: имя, e-mail), параметры защиты секретного ключа (пароль). Для автоматизации допускается применение пакетных режимов (batch) при наличии утверждённого профиля.

8.2. Просмотр ключей и параметров

# Список ключей
gpg --list-keys

# Детальный вывод (включая отпечаток, keygrip)
gpg --list-keys --with-colons

# Просмотр параметров конкретного ключа
gpg --fingerprint KEYID_OR_EMAIL

8.3. Экспорт ключей

# Экспорт публичного ключа (ASCII armored)
gpg --armor --export KEYID_OR_EMAIL > publickey.asc

# Экспорт публичного ключа (binary)
gpg --export KEYID_OR_EMAIL > publickey.gpg

# Экспорт секретного ключа (только для резервного хранения в защищённом контуре)
gpg --armor --export-secret-keys KEYID_OR_EMAIL > secretkey.asc
Требование к обращению с секретным ключом: экспорт секретного ключа допускается только по утверждённой процедуре резервирования. Файл секретного ключа рассматривается как критичный секрет, подлежит хранению в изолированном защищённом контуре и не должен попадать в CI-логи и артефакты сборки.

8.4. Подпись и проверка

# Подпись файла (создание подписи рядом, тип зависит от режима)
gpg --detach-sign --armor artifact.tar.gz

# Проверка подписи
gpg --verify artifact.tar.gz.asc artifact.tar.gz

# Просмотр сведений о подписи (без импорта ключей)
gpg --status-fd 1 --verify artifact.tar.gz.asc artifact.tar.gz

При применении ГОСТ-хеширования идентификатор алгоритма задаётся параметром --digest-algo (если доступно в сборке). Практический контроль выполняется по выводу gpg --status-fd, где фиксируются используемые алгоритмы.

# Пример принудительного выбора хеш-алгоритма (если доступно)
gpg --digest-algo stribog512 --detach-sign --armor artifact.tar.gz

8.5. Шифрование и расшифрование

# Шифрование на получателя (публичный ключ получателя должен быть в keyring)
gpg --encrypt --recipient user@example.org data.txt

# Расшифрование
gpg --decrypt data.txt.gpg > data.txt

Для выбора симметричного алгоритма в OpenPGP допускается применение --cipher-algo при наличии соответствующего алгоритма в сборке. В инженерной практике следует фиксировать фактический алгоритм по статусным строкам и логам.

# Пример выбора симметричного алгоритма (если доступно)
gpg --cipher-algo GOST28147 --encrypt --recipient user@example.org data.txt

9. X.509/CMS: применение ГОСТ-сертификатов и CMS-подписей (gpgsm)

Раздел описывает операции с сертификатами X.509 и CMS-контейнерами. Основные операции: импорт сертификатов, просмотр, проверка цепочек, формирование и проверка CMS-подписей, обработка CRL/OCSP при необходимости.

9.1. Импорт сертификатов

# Импорт DER/PEM сертификата в хранилище gpgsm
gpgsm --import cert.der

# Просмотр списка сертификатов
gpgsm --list-keys

# Детальная информация о сертификате
gpgsm --list-keys --with-colons | sed -n '1,200p'

9.2. Разбор сертификата и проверка OID

# Печать сертификата в читаемом виде (ASN.1 поля, расширения)
gpgsm --dump-cert cert.der | sed -n '1,260p'

Для ГОСТ-сертификатов характерно наличие OID семейства 1.2.643.*. Типовые OID (встречаются в реальных цепочках) относятся к алгоритмам подписи и хеширования. Фактическое значение всегда фиксируется по полю Signature Algorithm и по параметрам SubjectPublicKeyInfo.

Инженерный контроль входных данных: в отчёте по диагностике указываются: отпечаток сертификата (fingerprint), serial number, issuer/subject, срок действия, алгоритм подписи (OID), алгоритм публичного ключа (OID), критичные расширения и политики.

9.3. Формирование CMS-подписи

# Формирование откреплённой CMS-подписи (S/MIME/CMS)
# Примечание: требуется наличие соответствующего сертификата и связанного ключевого материала в доступном для gpgsm контуре.
gpgsm --detach-sign --output document.p7s document.pdf

9.4. Проверка CMS-подписи

# Проверка откреплённой подписи (при наличии исходного контента)
gpgsm --verify document.p7s document.pdf

# Диагностика проверки (детальный отладочный вывод)
gpgsm -vv --debug-all --verify document.p7s document.pdf
Примечание по проверке цепочек: корректная криптографическая проверка подписи не тождественна проверке доверия цепочке. Для инженерного стенда допускается проверка криптографической корректности подписи и разбор структуры. Для продуктивного контура требуется настроенное доверие к корневым УЦ, CRL/OCSP-политики и регламентированный порядок валидации.

10. Проверка цепочки доверия, CRL и OCSP

В инфраструктуре X.509 проверка подписи дополняется проверкой цепочки доверия и статуса сертификатов. В составе GnuPG эти функции реализуются через компонент dirmngr и настройки политики проверки.

10.1. Проверка состояния dirmngr

# Статус сервисов GnuPG (в зависимости от конфигурации может работать как пользовательские процессы)
gpgconf --list-dirs
gpgconf --reload all

# Просмотр активных процессов
ps aux | egrep 'gpg-agent|dirmngr|keyboxd' | grep -v egrep || true

10.2. Базовая модель доверия

Модель доверия и размещение доверенных корневых сертификатов определяется политикой организации и задачей стенда. Для инженерного тестирования допускается раздельная конфигурация:

  • контур «разбор структуры/криптопроверка» (без утверждения доверия);
  • контур «полная валидация PKI» (с доверенными корнями, CRL/OCSP, политиками).
Рекомендуемая практика для CI/стендов: разделять тесты на (1) криптографическую корректность контейнера/подписи и (2) PKI-валидность цепочки и статуса. Это снижает ложные отказы, вызванные сетевой недоступностью OCSP/CRL при сохранении контроля криптографической целостности.

11. Автоматизация и применение в CI/CD

В инженерных процессах GnuPG применяется как CLI-инструмент для проверок артефактов. Требование: команды должны быть детерминированы, результаты — машиночитаемы, журналы — пригодны для аудита.

11.1. Машиночитаемая проверка подписи

# Пример проверки с выводом статусных строк
# В CI обрабатываются строки вида [GNUPG:] GOODSIG, VALIDSIG, BADSIG и т.п.
gpg --batch --status-fd 1 --verify artifact.tar.gz.asc artifact.tar.gz

11.2. Fail-fast режим

set -euo pipefail

gpg --batch --status-fd 1 --verify artifact.tar.gz.asc artifact.tar.gz \
  | tee verify.log \
  | grep -E '^\[GNUPG:\] (GOODSIG|VALIDSIG)\b' >/dev/null
Требование к секретам в CI: секретные ключи и пароли не должны храниться в репозитории и не должны выводиться в логи. При необходимости подписи в CI применяется отдельный защищённый контур (HSM/токен/сертифицированный провайдер) и утверждённая процедура.

12. Типовые неисправности и методика устранения

12.1. Ошибка «unsupported algorithm 1.2.643…»

Признак: входные данные (сертификат/подпись) содержат OID ГОСТ-алгоритма, который не поддерживается текущим криптографическим стеком. Действия:

  • зафиксировать версию: gpgconf --show-versions;
  • зафиксировать OID: gpgsm --dump-cert или отладочный вывод проверки;
  • проверить перечни алгоритмов в gpg --version;
  • проверить, что используется целевая сборка НАЙС.ОС с включённой ГОСТ-поддержкой.

12.2. Проверка подписи проходит, но доверие цепочке отсутствует

Признак: криптопроверка корректна, но PKI-валидация не утверждает доверие (нет доверенного корня, отсутствуют CRL/OCSP, несоответствие политик). Действия:

  • разделить режимы тестирования: криптопроверка и PKI-проверка;
  • добавить доверенные корни по утверждённой процедуре;
  • настроить доступ к CRL/OCSP и правила их применения;
  • проверить расширения KeyUsage/ExtendedKeyUsage и политики сертификатов.

12.3. Требуется детальная трассировка выполнения

# OpenPGP (пример)
gpg -vv --debug-all --status-fd 1 --verify artifact.sig artifact.bin

# X.509/CMS (пример)
gpgsm -vv --debug-all --verify document.p7s document.pdf

13. Граница применения: тестирование против юридически значимых операций

В инженерной практике целесообразно разделять:

  • контур разработки/тестирования — проверки, интеграция, диагностика, стенды, CI/CD, регрессионные тесты;
  • контур юридически значимых операций — формирование подписи и шифрование в режимах, где требуется сертифицированное СКЗИ, утверждённые регламенты, контроль ключей и аудит.

GnuPG с ГОСТ-поддержкой в НАЙС.ОС применяется для ускорения инженерных циклов и снижения затрат на интеграцию, при этом в целевых регулируемых процессах используются сертифицированные криптопровайдеры и утверждённая инфраструктура.

Практический результат: разработчик и системный администратор получают возможность воспроизводимо проверять ГОСТ-подписи и сертификаты «из коробки», ускоряя деплой и снижая стоимость интеграции. При переходе в продуктивный контур юридически значимой подписи выполняется замена криптографического контура на сертифицированный без изменения прикладной логики обработки документов.

Приложение А (справочное). Минимальный контрольный список инженера

# 1) Версии и состав
gpg --version
gpgsm --version
gpgconf --show-versions

# 2) Проверка ключей/сертификатов
gpg --list-keys
gpgsm --list-keys

# 3) Проверка OpenPGP подписи
gpg --batch --status-fd 1 --verify artifact.sig artifact.bin

# 4) Проверка CMS подписи (S/MIME)
gpgsm -vv --debug-all --verify document.p7s document.pdf

Для отчёта по диагностике дополнительно фиксируются: хеши входных файлов, отпечатки сертификатов, OID алгоритмов и полные отладочные логи.

Комментарии
Обратная связь

Нашли неточность или хотите предложить улучшение статьи? Напишите нам.

Отправить отзыв

НАЙС.ОС включена в реестр российского ПО (Реестровая запись №30128 от 22.10.2025).
Реестровая запись произведена на основании поручения Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации от 22.10.2025 по протоколу заседания экспертного совета от 09.10.2025 №872пр
Свидетельство о государственной регистрации программы для ЭВМ №2025612870 от 05 февраля 2025 г.
Процессы разработки и поставки выстроены так, чтобы поддерживать требования ФСТЭК/ГОСТ и быть пригодными для оценки/сертификационных работ (при определении области и объекта сертификации).