GnuPG-GOST

Материал из ALT Linux Wiki
Версия от 13:00, 1 марта 2019; Manowar (обсуждение | вклад) (Заменил ссылки на свои рабочие ветви ссылками на патчи и /gears)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Добавление поддержки ГОСТ в GnuPG

Добавление поддержки ГОСТ в GnuPG ведётся с целью предоставить пользователям возможность использовать алгоритмы шифрования и цифровой подписи ГОСТ в широком спектре пользовательских программ уже работающих с GnuPG, среди которых видное место занимает интеграция шифрования и подписи в менеджеры файлов (например, Kleopatra в KDE) и программы для чтения и отправки электронной почты (например, Enigmail для Thunderbird).

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

Состав изменений

Описание изменения Затронутые программы и модули
Специфика ГОСТ при распаковке, упаковке и разборе сообщений формата OpenPGP gpg, gnupg2-2.2.10-gost-1.0.0.patch
Специфика ГОСТ при распаковке, упаковке и разборе сообщений формата S/MIME gpgsm, libksba, gnupg2-2.2.10-gost-1.0.0.patch, libksba-1.3.6-gost-1.0.0.patch
Реализация алгоритма вычисления общего ключа (ВКО) libgcrypt, libpkcs11-helper, libgcrypt-1.8.3-vko-1.0.0.patch
Специфика ГОСТ при разборе информации о ключах на токене и их передачи GnuPG gnupg-pkcs11-scd, gnupg-pkcs11-scd-0.9.2-gost-1.0.0.patch
Дополнительные опции настройки обработки информации о списках отзыва сертификатов dirmngr, gnupg2-2.2.10-issuers-1.0.0.patch

Порядок настройки и работы

Прежде всего необходимо настроить gnupg-pkcs11-scd следуя странице руководства gnupg-pkcs11-scd(1). В частности, в конфигурации агента (~/.gnupg/gpg-agent.conf) его нужно обозначить как демон смарт-карт (scdaemon-program).

Если на токене (смарт-карте) отсутствуют ключи, нужно создать их. Если планируется использование совместно с gpgsm, то необходимо создать и пользовательский сертификат.

Далее, следуя той же странице руководства, нужно импортировать ключи в GnuPG. Для собственно gpg это делается несколько нетривиальным способом, в два подхода: сперва gnupg-pkcs11-scd напрямую даётся команда LEARN, а затем номер (отпечаток) «выученного» таким образом ключа используется в экспертном режиме генерации ключа в gpg.

В случае использования gpgsm процедура импорта выполняется штатно. Однако, для успешной проверки сертификатов, подписанных отечественными УЦ, может понадобиться использовать новую спецнастройку в файле ~/.gnupg/dirmngr_issuers.conf. Например: (issuer "CN=УЦ ФГУП \\\"ГРЧЦ\\\"" single-crl)[1].

После настройки gnupg-pkcs11-scd и импорта ключей (через «создание») и сертификатов, команды gpg и gpgsm работают вполне ожидаемым образом: gpg-agent запрашивает ПИН-код, после чего производится подпись (шифрование). Аналогичные операции также доступны из Kleopatra и Dolphin.


  1. Данная настройка включает режим последовательной обработки всех указанных URL списков отзыва, чтобы избежать проблемы, отмеченной здесь — https://lists.altlinux.org/pipermail/devel/2018-August/205109.html