(2019-05-30 13:48:52 отредактировано ktrace)

Рутокен ЭЦП SC + MS_KEY исполнения М.

День добрый. Есть такая проблема. У меня есть картридер MS_KEY исполнения М, в качестве смарткарты приобрёл Рутокен ЭЦП SC.

На данный момент настроено через pcscd, оценить визуально получившуюся экибану можно по выводу pcsc_scan:

# pcsc_scan -v
Using reader plug'n play mechanism
Scanning present readers...
0: FT SCR2000 00 00
 
Wed May 29 00:18:01 2019
 Reader 0: FT SCR2000 00 00
  Card state: Card inserted, 
  ATR: 3B 9C 96 00 52 75 74 6F 6B 65 6E 45 43 50 73 63

ATR: 3B 9C 96 00 52 75 74 6F 6B 65 6E 45 43 50 73 63
+ TS = 3B --> Direct Convention
+ T0 = 9C, Y(1): 1001, K: 12 (historical bytes)
  TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
    250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
  TD(1) = 00 --> Y(i+1) = 0000, Protocol T = 0 
-----
+ Historical bytes: 52 75 74 6F 6B 65 6E 45 43 50 73 63
  Category indicator byte: 52 (proprietary format)

Possibly identified card (using /root/.cache/smartcard_list.txt):
3B 9C 96 00 52 75 74 6F 6B 65 6E 45 43 50 73 63
    Aktiv Rutoken ECP SC T0
    https://www.rutoken.ru/products/all/rutoken-ecp-sc/

А вот дальше - тупик.

# pkcs11-tool -T
Available slots:
No slots.
# pkcs11-tool -L
Available slots:
Slot 0 (0x0): FT SCR2000 00 00
  (empty)

При этом в отладке нормальный поток событий, кроме, пожалуй, вот такого:

**********************************IFDHSetProtocolParameters
ret=17    count=1
data dump:
00000000  3b 9c 96 00 52 75 74 6f 6b 65 6e 45 43 50 73 63 
00000010  10 
set pps
00043346 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard.c:431:SCardConnect() Active Protocol: T=0
00000036 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard.c:456:SCardConnect() hCard Identity: 1307017d
00000011 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard.c:518:SCardConnect() UnrefReader() count was: 2
00000012 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard_svc.c:511:ContextThread() CONNECT rv=0x0 for client 9
00000213 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard_svc.c:362:ContextThread() Received command: CONTROL from client 9
00000038 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/readerfactory.c:848:RFReaderInfoById() RefReader() count was: 1
**********************************IFDHControl

00100254 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/ifdwrapper.c:477:IFDControl() Card not transacted: 606

00000015 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/ifdwrapper.c:479:IFDControl() ControlCode: 0x42000D48 BytesReturned: 0
00000008 [139709179229952] TxBuffer 
00000005 [139709179229952] RxBuffer 
00000007 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard.c:1365:SCardControl() UnrefReader() count was: 2
00000015 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard_svc.c:733:ContextThread() CONTROL rv=0x8010001F for client 9
00000181 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard_svc.c:362:ContextThread() Received command: DISCONNECT from client 9
00000036 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/readerfactory.c:848:RFReaderInfoById() RefReader() count was: 1
00000011 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard.c:884:SCardDisconnect() Active Contexts: 1
00000010 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard.c:885:SCardDisconnect() dwDisposition: 0
00000015 [139709179229952] [$PATH]pcsc-lite-1.8.24/src/winscard.c:1020:SCardDisconnect() powerState: POWER_STATE_GRACE_PERIOD

Я что-то упускаю?

Конечная цель - разместить на карте ключи GPG/SSH.

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Добрый день,ktrace.

Какой дистрибутив? Какие версии opensc, pcscd, libccid?
pkcs11-tool видит карту через нашу PKCS11 библиотеку?
GPG мы не поддерживаем. C SSH должно завестись.

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Дистрибутив на основе gentoo.
opensc 0.19.0
ccid 1.4.30
pcsc-lite 1.8.24
с вашей библиотекой интереснее...

# pkcs11-tool -L --module /usr/lib64/librtpkcs11ecp.so 
Available slots:
Slot 0 (0x0): FT SCR2000 00 00
  token label        : Rutoken ECP <no label>
  token manufacturer : Aktiv Co.
  token model        : Rutoken ECP
  token flags        : login required, rng, SO PIN to be changed, token initialized, PIN initialized, user PIN to be changed
  hardware version   : 54.2
  firmware version   : 18.0
  serial num         : XXXXXXXXXXXX
  pin min/max        : 6/32

Но это, похоже, единственное что работает.

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

ktrace, давайте конкретнее.

Что именно не работает и что именно Вы хотите сделать?

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Хочу разместить имеющийся ключ ssh на токене.

Про gpg я уже понял - нереально.

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Добрый день, ktrace.

Какие именно действия выполняете? На каком этапе и с какой ошибкой сталкиваетесь?

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

# pkcs15-tool -D
Using reader with a card: FT SCR2000 00 00
Failed to connect to card: Card is invalid or cannot be handled
# pkcs15-init --erase-card
Using reader with a card: FT SCR2000 00 00
Failed to connect to card: Card is invalid or cannot be handled

Пытаюсь отформатировать карту. Не получается.

В целом какие мои действия должны быть?

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Добрый день, ktrace.

Вам не нужно форматирование через pkcs15. Поддержка наших смарт-карт в opensc появилась не так давно, поэтому в вашей версии ее еще нет. Но Вам и это и не надо.

Вам лучше использовать нашу библиотеку librtpkcs11ecp.so. В первой части статьи - https://dev.rutoken.ru/pages/viewpage.a … Id=3440675, как раз описан такой вариант.

(2019-06-03 17:34:15 отредактировано ktrace)

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Владимир Салыкин пишет:

Добрый день, ktrace.

Вам не нужно форматирование через pkcs15. Поддержка наших смарт-карт в opensc появилась не так давно, поэтому в вашей версии ее еще нет. Но Вам и это и не надо.

Вам лучше использовать нашу библиотеку librtpkcs11ecp.so. В первой части статьи - https://dev.rutoken.ru/pages/viewpage.a … Id=3440675, как раз описан такой вариант.

Хорошо. Но тогда два вопроса. В статье насколько я понял описан вариант генерации ключа. возможно использование уже сгенерированное? Это несколько другая задача. (Хотя в принципе если использовать существующий ключ невозможно, такой вариант тоже неплох).

Ну и второй вопрос: как-то инициализировать токен нужно?

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

 # pkcs11-tool --module /usr/lib/pkcs11/librtpkcs11ecp.so -l -y privkey -w keys.der --id 10 --label ktrace-ssh
Using slot 0 with a present token (0x0)
Logging in to "Rutoken ECP <no label>".
WARNING: user PIN to be changed
Please enter User PIN: 
error: PKCS11 function C_Login failed: rv = unknown PKCS11 error (0x80100016)

в логах

00000019 [139709179229952] APDU: 80 40 00 00 00
**********************************IFDHTransmitToICC
ret=-110    count=1
data dump:
ret=-110    count=2
data dump:
ret=-110    count=3
data dump:
ret=-110    count=4
data dump:
ret=-110    count=5
data dump:
ret=-110    count=6
data dump:
ret=-110    count=7
data dump:
ret=-110    count=8
data dump:
ret=-110    count=9
data dump:
ret=-110    count=10
data dump:
10054499 [139709179229952] SW: [...]
00016690 [139709179229952] pcsc-lite-1.8.24/src/ifdwrapper.c:543:IFDTransmit() Card not transacted: 612
00000007 [139709179229952] pcsc-lite-1.8.24/src/winscard.c:1626:SCardTransmit() Card not transacted: 0x80100016
00000005 [139709179229952] pcsc-lite-1.8.24/src/winscard.c:1646:SCardTransmit() UnrefReader() count was: 2
00000007 [139709179229952] pcsc-lite-1.8.24/src/winscard_svc.c:683:ContextThread() TRANSMIT rv=0x80100016 for client 9
00000052 [139709179229952] pcsc-lite-1.8.24/src/winscard_svc.c:362:ContextThread() Received command: END_TRANSACTION from client 9
00000007 [139709179229952] pcsc-lite-1.8.24/src/readerfactory.c:848:RFReaderInfoById() RefReader() count was: 1
00000004 [139709179229952] pcsc-lite-1.8.24/src/winscard.c:1240:SCardEndTransaction() Status: 0x00000000
00000003 [139709179229952] pcsc-lite-1.8.24/src/winscard.c:1243:SCardEndTransaction() UnrefReader() count was: 2
00000004 [139709179229952] pcsc-lite-1.8.24/src/winscard_svc.c:579:ContextThread() END_TRANSACTION rv=0x0 for client 9
00008015 [139709179229952] pcsc-lite-1.8.24/src/winscard_svc.c:362:ContextThread() Received command: DISCONNECT from client 9
00000018 [139709179229952] pcsc-lite-1.8.24/src/readerfactory.c:848:RFReaderInfoById() RefReader() count was: 1
00000008 [139709179229952] pcsc-lite-1.8.24/src/winscard.c:884:SCardDisconnect() Active Contexts: 1
00000003 [139709179229952] pcsc-lite-1.8.24/src/winscard.c:885:SCardDisconnect() dwDisposition: 0
00000011 [139709179229952] pcsc-lite-1.8.24/src/winscard.c:1020:SCardDisconnect() powerState: POWER_STATE_GRACE_PERIOD
22**********************************IFDHGetCapabilities 4018

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Доброе утро, ktrace.

Инициализировать никак не надо.

0x80100016 - очень часто свидетельствует о том, что считыватель не поддерживает Extended APDU. У Вас есть какая-то документация на ридер?

(2019-06-05 17:45:33 отредактировано ktrace)

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Владимир Салыкин пишет:

0x80100016 - очень часто свидетельствует о том, что считыватель не поддерживает Extended APDU. У Вас есть какая-то документация на ридер?

Боюсь, нет. И скорее всего вы правы, ридер непригоден. Можете подсказать адекватную замену (только формата SIM, небольшой)?

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Добрый день, ktrace.

Попробуйте IDBridge CT30

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

ktrace пишет:

Боюсь, нет. И скорее всего вы правы, ридер непригоден. Можете подсказать адекватную замену (только формата SIM, небольшой)?

Скорее это IDBridge K30 или IDBridge K50

Re: Рутокен ЭЦП SC + MS_KEY исполнения М.

Нашёл Gemalto USB Shell Token V2 (ID 08e6:3438 Gemalto (was Gemplus) GemPC Key SmartCard Reader), загнал на смарткарту существующий ключ. Успешно зашёл на сервер по ключу с карты.

Теперь хорошо бы научить GPG работать токеном :-)

P.S. пошерстил аккаунт ActiveCo на github. Я правильно понимаю, что librtpkcs11ecp в исходниках не представлен?