Разные драйверы для Рутокен ЭЦП

Добрый день.

Возник вопрос, в чем отличие библиотеки 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, другое не проверял т.к. не было потребности.

Re: Разные драйверы для Рутокен ЭЦП

Да, для работы используется Fedora 30

Re: Разные драйверы для Рутокен ЭЦП

dkostousov, вы правы, в обоих случаях ключ генерируется "на борту" Рутокен ЭЦП 2.0, экспортировать его не получится.