DSS + HSM. Ошибка при расшифровке: [Invalid type specified]. Код: [0x8009000a].
Опубликовано Никита Миронов on 2023-10-26 19:14

В последнее время в межсервисном взаимодействии между банками и госорганами (например, ФНС) участились случаи шифрования данных с применением алгоритма блочного шифрования "Кузнечик" (ГОСТ Р 34.12-2015).
При попытке расшифрования таких документов в DSS (если ключ пользователя хранится в HSM или в БД DSS, зашифрованный на Мастер-Ключе в HSM) фиксируется ошибка на уровне журнала администратора Сервиса Подписи:

 Произошла ошибка при вызове метода [CryptMsgControl(CMSG_CTRL_DECRYPT)]. Ошибка: [Invalid type specified]. Код: [0x8009000a]. ---> System.InvalidOperationException: Произошла ошибка при вызове метода [CryptMsgControl(CMSG_CTRL_DECRYPT)]. Ошибка: [Invalid type specified]. Код: [0x8009000a].

Плюс, при попытке расшифрования в веб-интерфейсе завершается с http error 404 запрос к точке /DecryptionWizard/Decrypt/

Причина возникновения ошибки может заключаться в том, что в HSM отсутствует поддержка алгоритма алгоритма блочного шифрования "Кузнечик" (ГОСТ Р 34.12-2015).

Убедиться в наличии поддержки этого алгоритма в HSM можно с помощью команды:

"C:\Program Files\Crypto Pro\CSP\csptest.exe" -enum -provider "Crypto-Pro GOST R 34.10-2012 HSM Svc CSP" -info

Вывод команды должен содержать строку:

Algid Bits Type NameLen AlgName
__________________________________________________
00006631h 256 Encrypt 14 GR 34.12-15 К

<...>

 

Алгоритм воспроизведения:

1. Зашифровать документ на сертификат, чей ключ хранится в БД DSS, зашифрованный на МК в HSM. Пример команды для шифрования:

csptest.exe -lowenc -encrypt -in cryptoproviders.txt -out cryptoproviders.txt.enc -user "Отпечаток сертификата" -alg GR3412_K

2. Попробовать выполнить расшифрование на веб-интерфейсе DSS, путем загрузки зашифрованного документа.

3. После загрузки документа, отображения сертификата, чей ключ необходим для расшифрования, и нажатия кнопки "Расшифровать" - возникают описанные выше ошибки.

 

Решение:

Необходимо произвести модернизацию ПАКМ КриптоПро HSM до версии 2.0 R3.

Обращаем Ваше внимание:

Модернизация оборудования платная услуга, осуществляемая по "Сертификату на модернизацию Аппаратной платформы ПАКМ "КриптоПро HSM" версии 2.0. Вариант исполнения 1 до Аппаратной платформы ПАКМ "КриптоПро HSM" версии 2.0 R3. Вариант исполнения 1К"

https://cryptopro.ru/order/OrderForm.aspx?catid=3238ca5a-7cfc-e811-870f-0025900a9ce7

Новая прошивка HSM поддерживает все старые алгоритмы. Текущие настройки и хранимые в HSM ключи переносятся в новую версию через резервную копию HSM.

После модернизации HSM дополнительных настроек на DSS не потребуется.

 

Временное решение (актуально только если ключ пользователя был установлен в DSS из .pfx):

Установить ключ пользователя из .pfx локально на сервер или любой ПК с CSP от 5.0.12000 и выше и расшифровать данные локально на этой машине.
Например, с помощью команды:
csptest.exe -lowenc -decrypt -in "зашифрованный файл" -out "файл для расшифрованного результата" -my "отпечаток сертификата" -alg GR3412_K

Сертификат пользователя должен быть установлен в хранилище "Личные" текущего пользователя с привязкой к закрытому ключу в реестре.

UPD: в CSP 5.0.12922 стало возможно через оснастку "Инструменты КриптоПро" выбирать алгоритм шифрования/расшифрования на вкладке "Настройки".

(4 плюсик(ов))
Класс!
Не очень :(

Коментарии (0)