Рутокен ЭЦП 3.0 и кард-ридер

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

Наконец-то дошли руки написать обзор на Рутокен ЭЦП 3.0, который ваша компания любезно предоставила мне.  Собственно пока что пытаюсь создать пару ключей для выработки запроса на сертификат.

Столкнулся со следующей проблемой. У меня в лэптопе есть встроенный ридер смарт-карт: Alcor Micro AU9560

Проблема в том, что если я вставляю карту в этот ридер, то Крипто Про не видит никакого ключевого носителя. А если я вставляю карту в ваш ридер (SCR 3001), который вы мне прислали вместе с картой, то всё работает.

При этом, любая диагностика из консоли не наводит на какие-либо мысли о проблемах.

Результат работы pcsc_scan, когда карта во встроенном ридере

$ pcsc_scan 
Using reader plug'n play mechanism
Scanning present readers...
0: Alcor Micro AU9560 00 00
1: Aktiv SCR 3001 01 00
 
Sun Nov 28 22:10:56 2021
 Reader 0: Alcor Micro AU9560 00 00
  Event number: 0
  Card state: Card removed, 
 Reader 1: Aktiv SCR 3001 01 00
  Event number: 2
  Card state: Card inserted, 
  ATR: 3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0

ATR: 3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0
+ TS = 3B --> Direct Convention
+ T0 = 9C, Y(1): 1001, K: 12 (historical bytes)
  TA(1) = 97 --> Fi=512, Di=64, 8 cycles/ETU
    500000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 625000 bits/s                                                                                                                                                                                                               
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 11 --> Y(i+1) = 0001, Protocol T = 1 
-----
  TA(3) = 40 --> IFSC: 64
+ Historical bytes: 52 75 74 6F 6B 65 6E 45 43 50 73 63
  Category indicator byte: 52 (proprietary format)
+ TCK = C0 (correct checksum)

Possibly identified card (using /home/dmitrmax/.cache/smartcard_list.txt):
3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0
        Aktiv Rutoken ECP 3.0 NFC (PKI)
        https://www.rutoken.ru/products/all/rutoken-ecp-nfc/
 /   

Результат работы pcsc_scan, когда карта во внешнем ридере

$ pcsc_scan 
Using reader plug'n play mechanism
Scanning present readers...
0: Alcor Micro AU9560 00 00
1: Aktiv SCR 3001 01 00
 
Sun Nov 28 22:19:53 2021
 Reader 0: Alcor Micro AU9560 00 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0

ATR: 3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0
+ TS = 3B --> Direct Convention
+ T0 = 9C, Y(1): 1001, K: 12 (historical bytes)
  TA(1) = 97 --> Fi=512, Di=64, 8 cycles/ETU
    500000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 625000 bits/s                                                                                                                                                                                                               
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 11 --> Y(i+1) = 0001, Protocol T = 1 
-----
  TA(3) = 40 --> IFSC: 64
+ Historical bytes: 52 75 74 6F 6B 65 6E 45 43 50 73 63
  Category indicator byte: 52 (proprietary format)
+ TCK = C0 (correct checksum)

Possibly identified card (using /home/dmitrmax/.cache/smartcard_list.txt):
3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0
        Aktiv Rutoken ECP 3.0 NFC (PKI)
        https://www.rutoken.ru/products/all/rutoken-ecp-nfc/
 Reader 1: Aktiv SCR 3001 01 00
  Event number: 0
  Card state: Card removed,    

Результаты работы csptest с обоими случаями:

$ ./csptest -card -enum -verbose -verbose
Alcor Micro AU9560 00 00
  No card in the reader
  No applet
Aktiv SCR 3001 01 00
  Card present, ATR=3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0 
  Unknown applet
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,130 sec
[ErrorCode: 0x00000000]

$ ./csptest -card -enum -verbose -verbose
Alcor Micro AU9560 00 00
  No card in the reader
  No applet
Aktiv SCR 3001 01 00
  Card present, ATR=3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0 
  Unknown applet
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,120 sec
[ErrorCode: 0x00000000]

Собственно вопрос: так должно быть, или это странное поведение, что Рутокен ЭЦП 3.0 не работает со сторонним ридером?

Если странное, то может быть есть идеи как можно диагностировать место сбоя?

Если так и должно быть, то читатели моего будущего обзора наверняка зададут вопрос о том, какие объективные технические причины были в том, чтобы лишать владельцев сторонних кардридеров возможности использовать Рутокен ЭЦП 3.0 без покупки вашего?

ЗЫ: Также пока не охвачен блок вопросов по поводу использования NFC-функциональности Рутокен ЭЦП 3.0. Есть ли у вас сведения о том, что разработчики какого-нибудь мобильного приложения "срослись" с Крипто Про под Android и смогли заставить работать всю эту связку с Рутокен ЭЦП 3.0?

Re: Рутокен ЭЦП 3.0 и кард-ридер

Добрый день.
Какая ОС у вас установлена на десктопе? Какая версия библиотеки libccid?
Мы никаким образом не ограничиваем работу карты в сторонних считывателях смарт-карт.
В xUbuntu 20.04 этот считыватель работает с картой:

 pcsc_scan 
Using reader plug'n play mechanism
Scanning present readers...
0: Alcor Micro AU9560 00 00
 
Mon Nov 29 07:58:17 2021
 Reader 0: Alcor Micro AU9560 00 00
  Event number: 6
  Card state: Card inserted, 
  ATR: 3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0

ATR: 3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0
+ TS = 3B --> Direct Convention
+ T0 = 9C, Y(1): 1001, K: 12 (historical bytes)
  TA(1) = 97 --> Fi=512, Di=64, 8 cycles/ETU
    500000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 625000 bits/s
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 11 --> Y(i+1) = 0001, Protocol T = 1 
-----
  TA(3) = 40 --> IFSC: 64
+ Historical bytes: 52 75 74 6F 6B 65 6E 45 43 50 73 63
  Category indicator byte: 52 (proprietary format)
+ TCK = C0 (correct checksum)

Possibly identified card (using /home/tester/.cache/smartcard_list.txt):
3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0
    Aktiv Rutoken ECP 3.0 NFC (PKI)
    https://www.rutoken.ru/products/all/rutoken-ecp-nfc/
 -   
./csptest -card -enum -verbose -verbose
Alcor Micro AU9560 00 00
  Card present, ATR=3B 9C 97 80 11 40 52 75 74 6F 6B 65 6E 45 43 50 73 63 C0 
  Unknown applet
Total: SYS: 0,000 sec USR: 0,010 sec UTC: 0,150 sec
[ErrorCode: 0x00000000]

В Android есть приложение КриптоАрм ГОСТ, которое умеет работать с NFC картами Рутокен ЭЦП 3.0. Для использования этой карты необходимо создать ключи и сертификат в формате ФКН через КриптоПро.

Re: Рутокен ЭЦП 3.0 и кард-ридер

Доброе утро, Кирилл!

Аверченко Кирилл пишет:

Какая ОС у вас установлена на десктопе?

Debian 10.11 "Buster"

Аверченко Кирилл пишет:

Какая версия библиотеки libccid?

ii  libccid                                       1.4.30-1                                amd64        PC/SC driver for USB CCID smart card readers
Аверченко Кирилл пишет:

Мы никаким образом не ограничиваем работу карты в сторонних считывателях смарт-карт.
В xUbuntu 20.04 этот считыватель работает с картой:

Если обратите внимание, то выполненная Вами диагностика у меня точно также работает. Проблема проявляется только когда уже непосредственно КриптоПро работает. Например, их GUI приложение не видит ни одного контейнера, если Рутокен ЭЦП 3.0 вставлен во встроенный ридер, а также их Crypto Pro Browser Pluging не предлагает создать пару ключей на этом носителе, когда я создаю запрос на выпуск сертификата.

Собственно и вопрос-то в том: есть ли ещё какая-либо диагностика, кроме описанной нами выше, которая поможет сузить источник проблемы?

Аверченко Кирилл пишет:

В Android есть приложение КриптоАрм ГОСТ, которое умеет работать с NFC картами Рутокен ЭЦП 3.0. Для использования этой карты необходимо создать ключи и сертификат в формате ФКН через КриптоПро.

О! Отлично, попробую заиспользовать, когда получу сертификат в УЦ.

Re: Рутокен ЭЦП 3.0 и кард-ридер

Во, вывел log pcscd при обращении к нему Крипто Про. Там вот такие ошибки:

ноя 29 09:27:07 graphene pcscd[4657]: 99999999 commands.c:1523:CCID_Receive Hardware error
ноя 29 09:27:07 graphene pcscd[4657]: 00000040 ifdwrapper.c:543:IFDTransmit() Card not transacted: 612
ноя 29 09:27:07 graphene pcscd[4657]: 00000029 winscard.c:1626:SCardTransmit() Card not transacted: 0x80100016
ноя 29 09:27:07 graphene pcscd[4657]: 00095479 commands.c:1523:CCID_Receive Card absent or mute
ноя 29 09:27:07 graphene pcscd[4657]: 00000034 ifdwrapper.c:543:IFDTransmit() Card not transacted: 612
ноя 29 09:27:07 graphene pcscd[4657]: 00000009 winscard.c:1626:SCardTransmit() Card not transacted: 0x80100016
ноя 29 09:27:07 graphene pcscd[4657]: 00001051 commands.c:1523:CCID_Receive Card absent or mute
ноя 29 09:27:07 graphene pcscd[4657]: 00000037 ifdwrapper.c:543:IFDTransmit() Card not transacted: 612
ноя 29 09:27:07 graphene pcscd[4657]: 00000017 winscard.c:1626:SCardTransmit() Card not transacted: 0x80100016

Ридер сломан?

Re: Рутокен ЭЦП 3.0 и кард-ридер

Да, с этим считывателем в Linux есть проблема.
Подробнее описано вот здесь https://github.com/LudovicRousseau/CCID/issues/84
Была заведена тема на форуме Леново, но она осталась без каких-либо практических советов https://forums.lenovo.com/t5/ThinkPad-X … =1#5342197

Re: Рутокен ЭЦП 3.0 и кард-ридер

Аверченко Кирилл пишет:

Да, с этим считывателем в Linux есть проблема.
Подробнее описано вот здесь https://github.com/LudovicRousseau/CCID/issues/84
Была заведена тема на форуме Леново, но она осталась без каких-либо практических советов https://forums.lenovo.com/t5/ThinkPad-X … =1#5342197

Уффф, да уж. Спасибо.