Разные драйверы для Рутокен ЭЦП
Добрый день.
Возник вопрос, в чем отличие библиотеки librtpkcs11ecp (v. 1.9.12.0) от "штатной" opensc-pkcs11 (v 0.19). Есть подозрение (см. комментарии на хабре https://habr.com/ru/company/aktiv-company/blog/461199 ), opensc-pkcs11 генерирует не аппаратные ключи.
Провел эксперимент.
Инициализацию токена производил один раз, командой
pkcs15-init --create=pkcs15
Далее, создание ключей "штатным образом"
% pkcs11-tool -l --keypairgen --key-type rsa:2048 -a OpenscTestKey
Using slot 1 with a present token (0x4)
Logging in to "User PIN (Rutoken ECP)".
Please enter User PIN:
Key pair generated:
Private Key Object; RSA
label: OpenscTestKey
ID: 6b6290275e7d02031edfb22d0007353b950aa61e
Usage: decrypt, sign, unwrap
Public Key Object; RSA 2048 bits
label: OpenscTestKey
ID: 6b6290275e7d02031edfb22d0007353b950aa61e
Usage: encrypt, verify, wrap
генерация с библиотекой librtpkcs11ecp (железка та же самая)
% pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l --keypairgen --key-type rsa:2048 -a RutokenTestKey
Using slot 1 with a present token (0x1)
Logging in to "Rutoken ECP <no label>".
Please enter User PIN:
Key pair generated:
Private Key Object; RSA
label: RutokenTestKey
Usage: decrypt, sign, unwrap
Public Key Object; RSA 2048 bits
label: RutokenTestKey
Usage: encrypt, verify, wrap
Смотрим, что получилось
opensc
% pkcs11-tool -L
Available slots:
Slot 0 (0x0): Alcor Micro AU9560 00 00
(empty)
Slot 1 (0x4): Aktiv Rutoken ECP 01 00
token label : User PIN (Rutoken ECP)
token manufacturer : Aktiv Co.
token model : PKCS#15
token flags : login required, rng, token initialized, PIN initialized
hardware version : 0.0
firmware version : 0.0
serial num : 000000003A8F5993
pin min/max : 4/32
% pkcs11-tool -l -O
Using slot 1 with a present token (0x4)
Logging in to "User PIN (Rutoken ECP)".
Please enter User PIN:
Private Key Object; RSA
label: OpenscTestKey
ID: 6b6290275e7d02031edfb22d0007353b950aa61e
Usage: decrypt, sign, unwrap
Public Key Object; RSA 2048 bits
label: OpenscTestKey
ID: 6b6290275e7d02031edfb22d0007353b950aa61e
Usage: encrypt, verify, wrap
librtpkcs11ecp
% pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -L
Available slots:
Slot 0 (0x0): Alcor Micro AU9560 00 00
(empty)
Slot 1 (0x1): Aktiv Rutoken ECP 01 00
token label : Rutoken ECP <no label>
token manufacturer : Aktiv Co.
token model : Rutoken ECP
token flags : login required, rng, token initialized, PIN initialized
hardware version : 20.5
firmware version : 23.2
serial num : 3a8f5993
pin min/max : 4/32
% pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -O
Using slot 1 with a present token (0x1)
Logging in to "Rutoken ECP <no label>".
Please enter User PIN:
Public Key Object; RSA 2048 bits
label: RutokenTestKey
Usage: encrypt, verify, wrap
Private Key Object; RSA
label: RutokenTestKey
Usage: decrypt, sign, unwrap
Честно говоря, я не почуствовал разницы - значит оба драйвера позволяют генерировать аппаратные неэкспортируемые ключи?
Физический токен один и тот же, между генерациями я его не чистил. Разные модули "не видят" данные друг друга.
С opensc точно работает ssh и openconnect, другое не проверял т.к. не было потребности.