Рутокен ЭЦП 2.0 - нестабильно видит закрытый ключ RSA

Здравствуйте!

На руках токен Рутокен ЭЦП 2.0 с серийным номером 393375b5.
Подготовка и работа осуществляется в Ubuntu 16.04.4 следующим образом:
1. отформатирован с помощью pkcs15-init, изменены pin и so-pin
2. импортированы созданные в OpenSSL ключевая пара RSA 2048 + самоподписанный сертификат, а также data object (~3Кб) с флагом --private
3. импорт осуществляется в pkcs11-tool с использованием крайней версии библиотеки librtpkcs11ecp.so

В конечном изделии токен используется для расшифровки данных (используется OpenSSL)

В процессе работы обратил внимание на то, что на данном конкретном токене команда:

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --slot 0 -l --pin XXXXXXXXX -O

в 40% случаев выводит весь перечень объектов, хранящихся на токене, т.е.:

Private Key Object; RSA 
  label:      Rutoken1
  ID:         01
  Usage:      decrypt, sign
Public Key Object; RSA 2048 bits
  label:      Rutoken1
  ID:         01
  Usage:      encrypt, verify
Data object 3239597909
  label:          'Rutoken1'
  application:    ''
  app_id:         <empty>
  flags:           modifiable private
Certificate Object, type = X.509 cert
  label:      Rutoken1
  ID:         01

в 60% случаев выводит все, кроме Private Key Object, т.е.:

Public Key Object; RSA 2048 bits
  label:      Rutoken1
  ID:         01
  Usage:      encrypt, verify
Data object 20316785
  label:          'Rutoken1'
  application:    ''
  app_id:         <empty>
  flags:           modifiable private
Certificate Object, type = X.509 cert
  label:      Rutoken1
  ID:         01

Соответственно при попытке работы с ним через API OpenSSL возникают разнообразные ошибки:
1. Либо неуспешно выполняется функция PKCS11_find_key(), не находит ключ по сертификату
2. Либо расшифровка выполняется с ошибкой:
139925623768760:error:80008001:PKCS11 library:PKCS11_rsa_decrypt:Cancel:p11_ops.c:234:
139925623768760:error:06065064:digital envelope routines:func(101):reason(100):evp_enc.c:529:

При этом, отработка осуществлялась идентично на партии ~30 токенов, с другими подобных проблем не наблюдалось (!).

Доп.информация:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --slot 0 -T
Slot 0 (0x0): Aktiv Rutoken ECP 00 00
  token label        : Rutoken ECP <no label>
  token manufacturer : Aktiv Co.
  token model        : Rutoken ECP
  token flags        : rng, login required, PIN initialized, token initialized
  hardware version   : 20.5
  firmware version   : 23.2
  serial num         : 393375b5

Заранее спасибо за оперативный ответ!

Re: Рутокен ЭЦП 2.0 - нестабильно видит закрытый ключ RSA

Здравствуйте, Александр.

Судя по тому, что только один из 30 токенов демонстрирует описываемое вами поведение - видимо проблема в нем. Если не истек срок гарантии, то обратитесь к юрлицу, которое вам эти токены поставило.

Кстати, судя по тому, что вы используете только RSA криптографию - скорее всего вам было бы выгоднее использовать модель Рутокен ЭЦП PKI - она и доступнее и с RSA работает лучше.

Re: Рутокен ЭЦП 2.0 - нестабильно видит закрытый ключ RSA

Кирилл, спасибо за ответ!

Т.е. я правильно понимаю, что это чисто аппаратная проблема? Вы не сталкивались с подобным ранее?

Еще вопрос. Мы используем токен для защиты ПО от несанкционированного использования. ПО выполняется в программно-аппаратном комплексе с минимальным участием инженерного персонала, поэтому требования к надежности у нас не на последнем месте. Вы не могли бы:
- порекомендовать изделия из перечня разрабатываемых вашей компанией с точки зрения повышенной надежности (опять таки, используется только RSA-криптография)?
- уточнить, какова средняя наработка на отказ? Грубо говоря, если вы даете 1 год гарантии, при этом у нас срок службы нашего изделия 5 лет, то нам нужно готовиться к серийной закупке токенов?

Re: Рутокен ЭЦП 2.0 - нестабильно видит закрытый ключ RSA

Да, ваша ошибка похожа на дефект памяти.
Встречается крайне редко, но ввиду огромного распространения Рутокенов ЭЦП 2.0 мы иногда фиксируем такие события. С большой вероятностью избавиться от проблемы вам поможет простое форматирование Рутокена, но если гарантия не истекла, то лучше поменять, чтобы не переживать на будущее.

Надежность Рутокенов ЭЦП PKI ввиду их архитектуры теоретически может быть выше, но данных которые это могли бы однозначно подтвердить на практике нет.
Для работы с RSA криптографией Рутокен ЭЦП PKI лучше, так как он оптимизирован под нее, да и по цене он доступнее. Так что в любом случае - это будет правильным выбором.