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

Программа проверки совместимости КриптоПро CSP и НАЙС.ОС

Цель — подтвердить отдельные функции, а не сделать непроверенное заявление о полной замене КриптоПро. Для уже выполненных проверок используются КриптоПро CSP/CryptCP 5.0 на macOS 12.7.6 Intel и GPGSM NiceSOFT на НАЙС.ОС. Испытания шифрования необходимо проводить с отдельными тестовыми ключами, не привлекая действующую квалифицированную подпись на Рутокене.

Минимальная двусторонняя матрица

№ Источник Получатель Что проверяем Состояние
S1 КриптоПро НАЙС.ОС Импорт X.509 ГОСТ-2012/256 Успешно
S2 КриптоПро НАЙС.ОС Detached CMS/Стрибог-256, проверка Успешно
S3 Подмена файла НАЙС.ОС BADSIG, ненулевой код Успешно
S4 GPGSM + Dirmngr НАЙС.ОС Нормальная проверка доверия/CRL Успешно в текущем состоянии, требует чистого кэша
K1 OpenSSL на НАЙС.ОС GPGSM НАЙС.ОС Обычный AES-защищённый P12 с ГОСТ-ключом Успешно
E1 GPGSM GPGSM Шифрование/расшифрование legacy ГОСТ CMS Не выполнялось
E2 КриптоПро GPGSM CMS EnvelopedData с ГОСТ 28147-89 Не выполнялось
E3 GPGSM КриптоПро Обратное шифрование/расшифрование Не выполнялось
P1 GPGSM OpenSSL ГОСТ-PFX RFC 9548 export/import Не выполнялось
P2 КриптоПро GPGSM Специализированный PFX, созданный CSP Не выполнялось
S5 GPGSM КриптоПро Подпись ГОСТ-2012/256 в обратную сторону Не выполнялось
C1 Два клиента Различные УЦ ГОСТ-2012/512, архивные 2001-профили Не выполнялось

Ближайшее испытание E1: локальная CMS

Пара ГОСТ-2012/256 уже создана OpenSSL и импортирована через AES-защищённый P12 в /root/gost-cms-test/lab/gnupg. Используйте её как отдельный учебный закрытый ключ. Не заменяйте сертификат случайным из списка. Получите его SHA-1 отпечаток:

LAB=/root/gost-cms-test/lab
gpgsm --homedir "$LAB/gnupg" --list-keys

Затем выполните команды из руководства по CMS-шифрованию. Необходимо сохранить фактические коды возврата, наличие выходного файла и хэши. Ошибка должна фиксироваться целиком как провал/не реализовано в этой конфигурации, а не замалчиваться. После локальной проверки переходите к E2/E3.

Испытание E2: КриптоПро → НАЙС.ОС

  1. Передайте Mac только открытый тестовый сертификат получателя НАЙС.ОС niceos-lab.crt.pem (при необходимости преобразуйте в DER командой openssl x509 -in ... -outform DER -out ...).
  2. На Mac используйте CryptCP или «Инструменты КриптоПро», выбрав шифрование на этот сертификат и исторический профиль содержимого ГОСТ 28147-89 (1.2.643.2.2.21), если CSP его поддерживает.
  3. Зафиксируйте точные параметры EnvelopedData и передайте на НАЙС.ОС только созданный зашифрованный CMS.
  4. Расшифруйте через GPGSM в ранее созданном изолированном профиле; сравните байты/хэши с изначальным тестовым документом. Убедитесь в корректном отказе, если секретный ключ отсутствует.

Это испытание не следует считать пройденным из-за одного успешного openssl cms -decrypt: такой опыт доказывает работу OpenSSL, а наша цель — нативный GPGSM.

Испытание E3: НАЙС.ОС → КриптоПро

Создайте самостоятельную лабораторную пару получателя на Mac и экспортируйте только открытый сертификат. Импортируйте его в изолированный GPGSM, зашифруйте тестовый файл на него, перенесите .p7e на Mac и расшифруйте КриптоПро. Сравните данные и OID. Для работы с отдельными сертификатами избегайте PIN действующей КЭП и не экспортируйте закрытые рабочие ключи.

Обязательные отрицательные тесты

  • Подмена одного байта подписи или исходного сообщения → ошибка.
  • Изменение MAC переноса ключа, неправильный UKM, неизвестный OID/кривая → отказ до выдачи открытого содержимого.
  • Неподходящий сертификат получателя или отсутствующий приватный ключ → отказ без частичного вывода.
  • Неправильный пароль PFX, повреждённый MAC/OMAC, некорректный PRF → отказ; закрытый ключ не появляется в хранилище.
  • Истёкший/отозванный сертификат либо недоверенный УЦ → отдельная ошибка проверки доверия, даже если сама подпись математически корректна.

Как оформить окончательный отчёт

На каждое испытание: идентификатор, дату, версии/сборки, серийный номер лабораторного сертификата, алгоритм открытого ключа и кривую, формат контейнера, OID, хэши исходного и восстановленного несекретного файла, код завершения, успешность доверия отдельно от математики, пометку о тестах отказа и архив обезличенных логов. Никогда не архивируйте продукционные закрытые ключи и PIN-коды в доказательный комплект.

Для статуса «совместим с КриптоПро» публично указывайте конкретные проверенные алгоритмы, направления и версии. Нельзя превращать успешные S1–S4 в утверждение о полном покрытии E1–E3 и P1–P2.