Перейти к содержанию

Руководство администратора: поддержка ГОСТ в GnuPG НАЙС.ОС

Что входит в зону ответственности администратора

Администратор отвечает за правильную установку связки GnuPG/libksba/libgcrypt, изоляцию ключей, доверенные УЦ, актуальные CRL/OCSP, резервирование, регрессионные испытания и запрет вывода секретов в журнал. Нельзя исправлять проблемы доверия отключением проверок в системном профиле.

Начальная инвентаризация

rpm -q gnupg libksba libgcrypt openssl
openssl version
openssl engine -t -c gost
gpgsm --version
gpgconf --list-components

Наблюдавшийся стенд (24.10.2026): gnupg-2.4.8-8.niceosc5, libksba-1.7.0-5.niceosc5, libgcrypt-1.11.1-1.niceosc5, OpenSSL 3.5.6. GPGSM обозначался как 2.4.8.1-gost; в перечне отображались GOST28147, STRIBOG256, STRIBOG512, GOSTR3411_94. Вывод gpgsm --version не показывает все внутренние тесты протоколов: дополнительные функции проверяйте отдельными операциями.

Если требуется доказать использование именно исходного патча r12, зафиксируйте контрольную сумму патча, SRPM/spec, журнал сборки, хэш RPM и собранного бинарного файла. Название r12 в интерфейсе само по себе недостаточно для аудита цепочки поставки.

Раздельные хранилища GPGSM

Не тестируйте новые ГОСТ-возможности на ~/.gnupg пользователя с рабочими сертификатами. Создайте лабораторный профиль:

umask 077
LAB=/root/gost-cms-test/lab
mkdir -p "$LAB/gnupg"
chmod 700 "$LAB/gnupg"
gpgsm --homedir "$LAB/gnupg" --list-keys
gpgsm --homedir "$LAB/gnupg" --list-secret-keys

Закрытые ключи обслуживает gpg-agent; при экспортировании/импортировании PKCS#12 используйте диалог Pinentry. Не записывайте пароль прямо после pass: в журналируемом production-скрипте. Если нужен автоматический стенд, применяйте временный файл с правами 600, изоляцию и гарантированную очистку, соблюдая политику безопасности вашей организации.

Порядок при обновлении пакетов

  1. Запишите версии и SHA-256 тестовых несекретных векторов.
  2. Выполните gpgsm --version, регистрацию криптоалгоритмов и импорт тестового открытого сертификата.
  3. Проверьте настоящую отсоединённую ГОСТ-CMS подпись, включая BADSIG после изменения файла.
  4. Проверьте реальный gpgsm --encrypt и gpgsm --decrypt, включая обратное направление с OpenSSL и КриптоПро — там, где эти сценарии квалифицированы.
  5. Проверьте импорт/экспорт PFX с разрешёнными паролями и режимами, включая ошибочный пароль и нарушенную имитовставку.
  6. Выполните проверку CRL/OCSP с актуальными ответами без постоянного отключения проверок; отдельно подтвердите поведение на пустом кэше.
  7. Оформите протокол с кодами завершения и отметьте все пропущенные сценарии как не выполнены, а не пройдены.

Какие тесты имеются в исходном пакете r12

tests/gost/ содержит test-cms-native.py, test-pfx-native.py, тесты UKM/VKO, CSR, PKCS#8, хэшей, отпечатков, CRL, OpenPGP-агента и негативные кейсы. Вспомогательный тест test-installed-pipes.py использует временный транспортный адаптер для общения с агентом. Он не должен устанавливаться через LD_PRELOAD в производственной сессии. И важно отдельно проверить обычные Unix-сокеты и реальные Pinentry на целевой НАЙС.ОС.

Команды для стенда разработки, при наличии исходников и необходимых тестовых зависимостей:

python3 tests/gost/test-cms-native.py
python3 tests/gost/test-pfx-native.py
python3 tests/gost/run-tests.py --build .

Не запускайте вслепую команды тестов в рабочем каталоге: часть использует установленный OpenSSL/Engine, генерирует и импортирует тестовые секреты и нуждается в подходящей свежей версии соседних библиотек. Все тесты выполняются в отдельной тестовой VM/хосте.

Комплект отчётности

Храните отдельно от публичного репозитория: версию патча и RPM, краткий инвентаризационный отчёт, журнал тестов со скрытыми личными данными, список тестовых сертификатов, времена проверки CRL, контрольные суммы открытых тестовых файлов, перечень ограничений и план регрессионного тестирования.

В саму веб-документацию не помещайте действующие ключи и PFX пользователей. Патч GnuPG включает тестовые fixture-файлы PEM (в том числе закрытые лабораторные ключи), поэтому публикация всего патча на сайте без отдельного просмотра нежелательна; не смешивайте исходные материалы разработчиков и публичное руководство.

См. тесты и диагностику.