Статус: Участник
Группы: Участники
Зарегистрирован: 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?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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 запрет на запись в токен.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 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 |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close