Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline realmfoo  
#1 Оставлено : 27 апреля 2020 г. 17:09:40(UTC)
realmfoo

Статус: Участник

Группы: Участники
Зарегистрирован: 31.08.2017(UTC)
Сообщений: 17
Российская Федерация
Откуда: Санкт-Петербург

Поблагодарили: 1 раз в 1 постах
Добрый день!

Возникла необходимость подключиться к КриптоПро HSM по протоколу PKCS#11 и использовать хранящиеся там AES-ключи.

Для тестирования установил CSP 5.0.11455-5 в режиме KC2 и настроил подключение к HSM. Проверка доступных алгоритмов показала наличие AES-криптографии:

Код:
/opt/cprocsp/bin/amd64# ./csptest -enum -info -provider 'Crypto-Pro Enhanced RSA and AES HSM CSP'
CSP (Type:24) "Crypto-Pro Enhanced RSA and AES HSM CSP" v5.0
CryptAcquireContext succeeded.HCRYPTPROV: 11090131
GetProvParam(...PP_ENUMALGS...) until it returns false
   Algid    Bits     Type     NameLen    AlgName
__________________________________________________
 00006602h  128    Encrypt       4     RC2 
 00006801h  128    Encrypt       4     RC4 
 00006601h  56     Encrypt       4     DES 
 00006609h  112    Encrypt       13    3DES TWO KEY 
 00006603h  168    Encrypt       5     3DES 
 0000800ch  256    Hash          8     SHA-256 
 0000800dh  384    Hash          8     SHA-384 
 0000800eh  512    Hash          8     SHA-512 
 00008004h  160    Hash          6     SHA-1 
 00008001h  128    Hash          4     MD2 
 00008002h  128    Hash          4     MD4 
 00008003h  128    Hash          4     MD5 
 00008008h  288    Hash          12    SSL3 SHAMD5 
 0000803eh  0      Hash          5     CMAC 
 00002400h  1024   Signature     9     RSA_SIGN 
 0000a400h  1024   Exchange      9     RSA_KEYX 
 00008009h  0      Hash          5     HMAC 
 0000660eh  128    Encrypt       8     AES 128 
 0000660fh  192    Encrypt       8     AES 192 
 00006610h  256    Encrypt       8     AES 256 
Cycle exit when getting data. 20 items found. Level completed without problems.
Total: SYS: 0.000 sec USR: 0.010 sec UTC: 2.080 sec
[ErrorCode: 0x00000000]


Но как бы я ни старался, не смог получить механизмы AES через протокол PKCS#11. В настройках /etc/opt/cprocsp/config64.ini я указал:

Код:
[PKCS11\slot0]
ProvGOST = "Crypto-Pro HSM CSP"
ProvRSA = "Crypto-Pro Enhanced RSA and AES HSM CSP"
reader = hsmbd


И проверка pkcs11-tool показала непонятную ошибку:

Код:
/opt/cprocsp/bin/amd64# pkcs11-tool --module /opt/cprocsp/lib/amd64/libcppkcs11.so -M --slot 0              
error: PKCS11 function C_Initialize failed: rv = CKR_FUNCTION_FAILED (0x6)
Aborting.


При этом в логах видны следующие ошибки:
Код:
Apr 27 14:06:36 fb811dd31e95 pkcs11-tool[2868]: <capi10>CryptAcquireContextA!failed: LastError = 0x8009001D
Apr 27 14:06:36 fb811dd31e95 cryptsrv[2120]: 14:06:36.750903 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
Apr 27 14:06:36 fb811dd31e95 cryptsrv[2120]: 14:06:36.750992 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
Apr 27 14:06:36 fb811dd31e95 cryptsrv[2120]: 14:06:36.751022 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
Apr 27 14:06:36 fb811dd31e95 cryptsrv[2120]: 14:06:36.751059 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C


Как работать с ключами AES, хранящимися в HSM, через протокол PKCS#11?
Offline alexl  
#2 Оставлено : 14 мая 2020 г. 11:20:06(UTC)
alexl

Статус: Участник

Группы: Участники
Зарегистрирован: 21.05.2013(UTC)
Сообщений: 15
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
Про pkcs11 не могу сказать, но что сразу смутилo, - это строка в конфиге
reader = hsmbd

В HSM 2.0 основной ридер - hsmdb (bd - db попутаны). Может для pkcs11 модуля это важно...?


ошибки в журнале по типу
Apr 27 14:06:36 fb811dd31e95 pkcs11-tool[2868]: <capi10>CryptAcquireContextA!failed: LastError = 0x8009001D
связаны обычно с некорректным описанием провайдеров в config64.ini
Offline realmfoo  
#3 Оставлено : 14 мая 2020 г. 13:19:54(UTC)
realmfoo

Статус: Участник

Группы: Участники
Зарегистрирован: 31.08.2017(UTC)
Сообщений: 17
Российская Федерация
Откуда: Санкт-Петербург

Поблагодарили: 1 раз в 1 постах
Да, с hsmbd я опечатался. Но это внешне не играет никакой роли. Я использовал и hsmbd, и hsmdb, и hsm, и вообще без reader --- результат тот же.

Подключиться удалось только после указания ProvRsaType:

Код:
[PKCS11\slot0]
ProvGOST = "Crypto-Pro HSM CSP"
ProvRSA = "Crypto-Pro Enhanced RSA and AES HSM CSP"
ProvRsaType = 24
#reader = hsm


При этом список поддерживаемых механизмов дополнился всякими DES/RSA, но не AES. Видимо, в библиотеке какая-то ошибка.

А при попытке всё же сгенерировать AES ключи библиотека возвращает ошибку CKR_TOKEN_WRITE_PROTECTED при вызове C_OpenSession. Видимо, в HSM запрет на запись в токен.
Offline Дмитрий Пичулин  
#4 Оставлено : 14 мая 2020 г. 13:38:06(UTC)
pd

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,449
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 31 раз
Поблагодарили: 417 раз в 308 постах
Автор: realmfoo Перейти к цитате
Да, с hsmbd я опечатался. Но это внешне не играет никакой роли. Я использовал и hsmbd, и hsmdb, и hsm, и вообще без reader --- результат тот же.

Подключиться удалось только после указания ProvRsaType:

Код:
[PKCS11\slot0]
ProvGOST = "Crypto-Pro HSM CSP"
ProvRSA = "Crypto-Pro Enhanced RSA and AES HSM CSP"
ProvRsaType = 24
#reader = hsm


При этом список поддерживаемых механизмов дополнился всякими DES/RSA, но не AES. Видимо, в библиотеке какая-то ошибка.

А при попытке всё же сгенерировать AES ключи библиотека возвращает ошибку CKR_TOKEN_WRITE_PROTECTED при вызове C_OpenSession. Видимо, в HSM запрет на запись в токен.

Запись в токен возможна только при указании параметра reader, у вас он закомментирован.

К сожалению, в релизной версии отсутствует листинг механизмов, но они доступны по факту, просто начните ими пользоваться.

Список механизмов, которые уже доступны, но пока отсутствуют в листинге, но будут в листинге в следующем релизе библиотеки pkcs11:
- CKM_AES_KEY_GEN
- CKM_AES_ECB
- CKM_AES_CBC
- CKM_AES_CBC_PAD
- CKM_DES_OFB8
- CKM_DES_OFB64
- CKM_DES_CFB8
- CKM_DES_CFB64
- CKM_SHA_1_HMAC
- CKM_SHA256_HMAC
- CKM_SHA384_HMAC
- CKM_SHA512_HMAC
- CKM_SHA512_HMAC
- CKM_SHA_1_HMAC_GENERAL
- CKM_SHA256_HMAC_GENERAL
- CKM_SHA384_HMAC_GENERAL
- CKM_SHA512_HMAC_GENERAL
- CKM_DES3_X919_MAC
Знания в базе знаний, поддержка в техподдержке
Offline realmfoo  
#5 Оставлено : 14 мая 2020 г. 13:48:15(UTC)
realmfoo

Статус: Участник

Группы: Участники
Зарегистрирован: 31.08.2017(UTC)
Сообщений: 17
Российская Федерация
Откуда: Санкт-Петербург

Поблагодарили: 1 раз в 1 постах
А что указывать в reader? Я, повторюсь, указывал и hsmdb, и hsm --- результат один и тот же.

Код:
# pkcs11-tool --module /opt/cprocsp/lib/amd64/libcppkcs11.so -v --keygen -m AES-KEY-GEN --keygen --key-type AES:16 --sensitive --pin 11111111 -a tmp
Using slot 0 with a present token (0x0)
error: PKCS11 function C_OpenSession failed: rv = CKR_TOKEN_WRITE_PROTECTED (0xe2)
Aborting.


А вот соответствующий лог из журнала:

Код:
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptVerifySignatureW!failed: LastError = 0x80090006
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptVerifySignatureA!failed: LastError = 0x80090006
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CryptVerifyCertificateSignature!failed: LastError = 0x0
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptVerifySignatureW!failed: LastError = 0x80090006
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptVerifySignatureA!failed: LastError = 0x80090006
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CryptVerifyCertificateSignature!failed: LastError = 0x0
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptGetProvParam!failed: LastError = 0x103
May 14 10:46:53 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptGetProvParam!failed: LastError = 0x103
May 14 10:46:54 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:54 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptVerifySignatureW!failed: LastError = 0x80090006
May 14 10:46:54 fb811dd31e95 stunnel_fork[5581]: <capi10>CryptVerifySignatureA!failed: LastError = 0x80090006
May 14 10:46:54 fb811dd31e95 stunnel_fork[5581]: <capi20>CryptVerifyCertificateSignature!failed: LastError = 0x0
May 14 10:46:54 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:54 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:54 fb811dd31e95 stunnel_fork[5581]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:54 fb811dd31e95 pkcs11-tool[5580]: <capi10>CryptGetProvParam!failed: LastError = 0x103
May 14 10:46:55 fb811dd31e95 pkcs11-tool[5580]: <capi10>CryptGetProvParam!failed: LastError = 0x103
May 14 10:46:55 fb811dd31e95 pkcs11-tool[5580]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:56 fb811dd31e95 pkcs11-tool[5580]: <capi20>CertFindCertificateInStore!failed: LastError = 0x80092004
May 14 10:46:57 fb811dd31e95 cryptsrv[2120]: 10:46:57.278682 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
May 14 10:46:57 fb811dd31e95 cryptsrv[2120]: 10:46:57.278764 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
May 14 10:46:57 fb811dd31e95 cryptsrv[2120]: 10:46:57.281153 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
May 14 10:46:57 fb811dd31e95 cryptsrv[2120]: 10:46:57.281230 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
May 14 10:46:57 fb811dd31e95 cryptsrv[2120]: 10:46:57.281254 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
May 14 10:46:57 fb811dd31e95 cryptsrv[2120]: 10:46:57.281288 support_lckrec_debug:233 p:2120 t:0x0x7f680ba444b0 INTERNAL ERROR, support_lckrec_debug_check_leak: Possible locks leak 1 0 0 Prev Reversal=0 Recursion=0 Null=0 DoubleUnlock=0 C
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.