(2020-09-09 02:28:00 отредактировано sanyo)

Re: Использование смарткарт под Linux

Тимофей Ершов пишет:

Со считывателем  ACR3901U-H3 смарт-карты Рутокен работать должны.

С новым считывателем опять проблемы:

https://forum.rutoken.ru/post/14753/#p14753

но кое что все же заработало, в т.ч. rtadmin -f.

Причем самое главное, что даже:

/usr/sbin/pcscd -afddddd | grep -i rutok

не видит слово Rutoken.

Содержимое /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist:
https://pastebin.com/raw/egYJS5AJ

Как видите, рутокенов там более, чем достаточно.

pcsc_scan:

root@host:/etc/opensc# service pcscd restart
[ ok ] Restarting PCSC Lite resource manager: pcscd.
root@backup1:/etc/opensc# pcsc_scan 
PC/SC device scanner
V 1.4.27 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.17
Using reader plug'n play mechanism
Scanning present readers...
0: ACS ACR3901U ICC Reader 00 00

Wed Sep  9 04:25:03 2020
Reader 0: ACS ACR3901U ICC Reader 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):
        NONE

Your card is not present in the database.
Please submit your unknown card at:
http://smartcard-atr.appspot.com/parse?ATR=3B9C96005275746F6B656E4543507363

Wed Sep  9 04:25:12 2020
Reader 0: ACS ACR3901U ICC Reader 00 00
  Card state: Card removed, 

Wed Sep  9 04:25:13 2020
Reader 0: ACS ACR3901U ICC Reader 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):
        NONE

Your card is not present in the database.
Please submit your unknown card at:
http://smartcard-atr.appspot.com/parse?ATR=3B9C96005275746F6B656E4543507363

Re: Использование смарткарт под Linux

sanyo, добрый день!

Указанный вами вывод pcsc_scan не содержит ошибок. Считыватель видится pcscd, карта внутри считывателя присутствует, работает корректно. pcscd работает с USB-устройствами; в вашем случае это считыватель смарт-карт. Любая смарт-карта, вставленная в считыватель, через интерфейс PC/SC будет идентифицироваться как "ACS ACR3901U ICC Reader 00 00" (номер в конце может меняться).

Причем самое главное, что даже:

/usr/sbin/pcscd -afddddd | grep -i rutok

не видит слово Rutoken.

Это ожидаемое поведение при использовании считывателя смарт-карт.

(2020-09-09 19:17:37 отредактировано sanyo)

Re: Использование смарткарт под Linux

Евгений Мироненко пишет:

sanyo, добрый день!

Указанный вами вывод pcsc_scan не содержит ошибок. Считыватель видится pcscd, карта внутри считывателя присутствует, работает корректно. pcscd работает с USB-устройствами; в вашем случае это считыватель смарт-карт. Любая смарт-карта, вставленная в считыватель, через интерфейс PC/SC будет идентифицироваться как "ACS ACR3901U ICC Reader 00 00" (номер в конце может меняться).

Причем самое главное, что даже:

/usr/sbin/pcscd -afddddd | grep -i rutok

не видит слово Rutoken.

Это ожидаемое поведение при использовании считывателя смарт-карт.

Добрый вечер Евгений,

Ну как же не содержит ошибок? Почему в вашей же инструкции:
https://www.rutoken.ru/download/manual/ … _Linux.pdf
на странице 9 указано, что вывод смарткарты должен содержать: Rutoken ECP SC, а у меня пишет "Неизвестная смарткарта"?

Possibly identified card (using /root/.cache/smartcard_list.txt):
        NONE

Your card is not present in the database.
Please submit your unknown card at:
http://smartcard-atr.appspot.com/parse?ATR=3B9C96005275746F6B656E4543507363

Судя по всему как раз из-за этого отказывается работать открытый драйвер PKCS11 OpenSC, а если указать другой ваш проприетарный драйвер принудительно через путь к вашей библиотеке, то карта работает, но частично, например происходит сбой при попытке генерации ключей:

https://forum.rutoken.ru/post/14759/#p14759

root@host:~#pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --login --keypairgen --key-type rsa:512
Using slot 0 with a present token (0x0)
Logging in to "Rutoken".
Please enter User PIN: 
error: PKCS11 function C_GenerateKeyPair failed: rv = CKR_FUNCTION_FAILED (0x6)

Aborting.

Использовать карту в таком режиме абсолютно невозможно, что мне делать? Мне срочно нужно, чтобы она заработала с OpenSSH.

На каком считывателе вы их сами то проверяли свои смарткарты? Почему явно не указать АБСОЛЮТНО ТОЧНО СОВМЕСТИМЫЕ считыватели? Я ведь не миллионер перебирать все возможные считыватели из интернет магазинов, да еще доставка каждого недели 2 с момента заказа.

ACS ACR3901U H3 - далеко не самый дешевый считыватель, а бюджет у меня очень скромный на данный момент времени.

(2020-09-09 21:09:52 отредактировано Евгений Мироненко)

Re: Использование смарткарт под Linux

Ну как же не содержит ошибок? Почему в вашей же инструкции:
https://www.rutoken.ru/download/manual/ … _Linux.pdf
на странице 9 указано, что вывод смарткарты должен содержать: Rutoken ECP SC, а у меня пишет "Неизвестная смарткарта"?

Possibly identified card (using /root/.cache/smartcard_list.txt):
        NONE

Your card is not present in the database.
Please submit your unknown card at:
http://smartcard-atr.appspot.com/parse? … 4543507363

На самом деле, конкретно этот факт говорит только о неправильной работе утилиты pcsc_scan (и это не связано ни со считывателем, ни с картой).
Полагаю, по каким-то причинам у вас был поврежден файл /root/.cache/smartcard_list.txt. Возможно, он остался с установки предыдущей версии pcsc-tools. Не могли бы показать его содержимое?

Попробуйте выполнить:

rm /root/.cache/smartcard_list.txt
pcsc_scan

pcsc_scan выполняет загрузку новой версии списка смарт-карт с адреса http://ludovic.rousseau.free.fr/softwar … d_list.txt, если не находит старую версию.

Re: Использование смарткарт под Linux

Евгений Мироненко пишет:

Ну как же не содержит ошибок? Почему в вашей же инструкции:
https://www.rutoken.ru/download/manual/ … _Linux.pdf
на странице 9 указано, что вывод смарткарты должен содержать: Rutoken ECP SC, а у меня пишет "Неизвестная смарткарта"?

Possibly identified card (using /root/.cache/smartcard_list.txt):
        NONE

Your card is not present in the database.
Please submit your unknown card at:
http://smartcard-atr.appspot.com/parse? … 4543507363

На самом деле, конкретно этот факт говорит только о неправильной работе утилиты pcsc_scan (и это не связано ни со считывателем, ни с картой).
Полагаю, по каким-то причинам у вас был поврежден файл /root/.cache/smartcard_list.txt. Возможно, он остался с установки предыдущей версии pcsc-tools. Не могли бы показать его содержимое?

Попробуйте выполнить:

rm /root/.cache/smartcard_list.txt
pcsc_scan

pcsc_scan выполняет загрузку новой версии списка смарт-карт с адреса http://ludovic.rousseau.free.fr/softwar … d_list.txt, если не находит старую версию.

Этот файл /root/.cache/smartcard_list.txt у меня почему-то всегда пустой, хотя где-то есть установленный непустой и я даже пробовал уже их оба заменить вручную скачанным с ludovic.rousseau.free.fr, но это не помогло, /root/.cache/smartcard_list.txt опять стал пустой.

(2020-09-10 01:57:24 отредактировано sanyo)

Re: Использование смарткарт под Linux

А хотя забавно, вот только что полностью удалил файл из кэша и стало определяться, ну и ну.

А еще забавнее то, что OpenSC вашу карту по прежнему не признает:

root@host:/download/4# pcsc_scan 
PC/SC device scanner
V 1.4.27 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.17
Using reader plug'n play mechanism
Scanning present readers...
0: ACS ACR3901 ICC Reader 00 00

Thu Sep 10 03:30:56 2020
Reader 0: ACS ACR3901 ICC Reader 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 /usr/share/pcsc/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/
^C
root@host:/download/4# opensc-tool -n
Using reader with a card: ACS ACR3901 ICC Reader 00 00
Unsupported card

Обнаружил, что файл кэша списка карт становится пустым, если не смог определить карту (например Рутокен ЭЦП2 Микрон) даже после ранее определенной карты (например Рутокен ЭЦП2 ФСБ).

Знал бы заранее про все эти приключения со смарткартами и то, что SafeTouch PRO не работает с RSA для OpenSSH ни за что бы не связался со смарткартами, у меня есть ваш USB Рутокен ECP2 Touch, так вот не считая инцидента с перегревом в очень жаркий день, он работает исключительно хорошо и стабильно. Все таки почему-то интегрированные считыватели как то особенно хорошо интегрированны, а кстати что за считыватель там внутри Рутокен USB? Есть аналоги неинтегированных? Почему вы секретничаете, на каком считывателе проверяете свои смарткарты? Или вы их вообще не проверяте ? :)

Как же теперь добиться работы OpenSC?
opensc-tool -n

Мне ваши карты для работы с OpenSSH были нужны не столько под Linux, сколько под OpenBSD, а там, насколько я понимаю, только OpenSC?

После решения проблемы с моими картами (я все же надеюсь, что удастся пофиксить какой-то баг в вашем проприетарном модуле PKCS11) не могли бы вы, пожалуйста, потом собрать свои проприетарные библиотеки PKCS11 для OpenBSD 6.7 под архитектуры ARMv7 (Beagle Bone Black Cortex A8 Texas Instruments Sitara CPU as a SoC)  и под i386 Pentium1?

Re: Использование смарткарт под Linux

Как же теперь добиться работы OpenSC?
opensc-tool -n

Предположу, что вы тестируете на чем-нибудь вроде Ubuntu 18.04, или Debian 9, или Devuan. Поддержка Rutoken ECP SC появилась в opensc версии 0.20.0. Обновите opensc. На ubuntu 18.04 я это сделал так:

sudo apt-add-repository "deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse"
sudo apt-get install -t focal opensc

Поддержки Rutoken 2151 в OpenSC пока что нет.

(2020-09-10 12:27:12 отредактировано sanyo)

Re: Использование смарткарт под Linux

Евгений Мироненко пишет:

Как же теперь добиться работы OpenSC?
opensc-tool -n

Предположу, что вы тестируете на чем-нибудь вроде Ubuntu 18.04, или Debian 9, или Devuan. Поддержка Rutoken ECP SC появилась в opensc версии 0.20.0. Обновите opensc. На ubuntu 18.04 я это сделал так:

sudo apt-add-repository "deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse"
sudo apt-get install -t focal opensc

Поддержки Rutoken 2151 в OpenSC пока что нет.

Тестирую на Devuan ASCII = Debian 9.
Нужно пересобирать из сорцов? Rutoken ECP2 SC 2100 будет работать в OpenBSD через OpenSC?

А когда планируется поддержка Rutoken 2151 в OpenSC?

http://web.archive.org/web/202009100854 … ost/14469/

Можно узнать, на каком считывателе тестируете свои смарткарты вы? :)

Re: Использование смарткарт под Linux

Тестирую на Devuan ASCII = Debian 9.
Нужно пересобирать из сорцов?

Можете забрать из testing репозитория debian: https://packages.debian.org/source/testing/opensc
Ссылки по теме: https://serverfault.com/questions/55085 … to-apt-get , https://wiki.debian.org/DebianTesting

Rutoken ECP2 SC 2100 будет работать в OpenBSD через OpenSC?

Явных препятствий, при условии использования тех же версий ПО, как будто нет.

На каком считыватели тестируете свои смарткарты вы?

Лично я использую ACR38U-I1 и не сталкивался ни с какими проблемами при использовании смарт-карт.
Встречаются считыватели, которые некорректно работают с некоторыми смарт-картами, в том числе с Рутокен, но причина этого, как правило, в ошибках реализации прошивки считывателя.

Re: Использование смарткарт под Linux

Пожалуйста, подскажите, где можно найти прошивку для считывателя ACS ACR3901U H3 ?

На сайте производителя ее нет, на сайте ESMART тоже.

(2020-09-10 18:29:07 отредактировано sanyo)

Re: Использование смарткарт под Linux

Евгений Мироненко пишет:

Предположу, что вы тестируете на чем-нибудь вроде Ubuntu 18.04, или Debian 9, или Devuan. Поддержка Rutoken ECP SC появилась в opensc версии 0.20.0. Обновите opensc. На ubuntu 18.04 я это сделал так:

root@ceres:~# cat /etc/debian_version
bullseye/sid

root@ceres:~# dpkg -al | grep opensc
ii  opensc                                                  0.20.0-4                           amd64        Smart card utilities with support for PKCS#15 compatible cards
ii  opensc-pkcs11:amd64                                     0.20.0-4                           amd64        Smart card utilities with support for PKCS#15 compatible cards

root@ceres:~# opensc-tool -n
Using reader with a card: ACS ACR3901U ICC Reader 00 00
Rutoken ECP SC

pkcs11-tool --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so --login --init-token --label Rutoken2
Using slot 0 with a present token (0x0)
error: PKCS11 function C_GetTokenInfo failed: rv = CKR_TOKEN_NOT_PRESENT (0xe0)
Aborting.

В OpenSC 0.20.0-4 стала определяться смарткарта 2100.

Но ключ сгенерировать не получается. Возможно я что-то делаю неправильно для генерации ключа?

(2020-09-10 18:58:53 отредактировано sanyo)

Re: Использование смарткарт под Linux

У вас почему-то другая последовательность команд, чем у eToken:

Делаю по вашей инструкции:

$ pkcs15-init --erase-card -p rutoken_ecp
$ pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk ""
$ pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk "" --so-pin "87654321" --finalize

Прошли нормально.

Далее не по вашей инструкции (PKCS15), а с помощью PKCS11 так же как eToken:

root@ceres:~# pkcs11-tool --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so --login --keypairgen --key-type rsa:2048
Using slot 0 with a present token (0x0)
Logging in to "Rutoken ECP (User PIN)".
Please enter User PIN: 
Key pair generated:
Private Key Object; RSA 
  label:      Private Key
  ID:         0fcf9b86789c3f5e97a47438ea955a57f6309664
  Usage:      decrypt, sign, unwrap
  Access:     none
Public Key Object; RSA 2048 bits
  label:      Private Key
  ID:         0fcf9b86789c3f5e97a47438ea955a57f6309664
  Usage:      encrypt, verify, wrap
  Access:     none

В результате cмарткарта Rutoken 2100 действительно  заработала в новой версии OpenSC.

Почему у вас не поддерживаются команды аналогичные eToken:

root@host:/download/4# pkcs11-tool --module /usr/lib/libeTPkcs11.so --init-token --label eToken2
root@host:/download/4# pkcs11-tool --module /usr/lib/libeTPkcs11.so --init-pin --login
root@host:/download/4# pkcs11-tool --module /usr/lib/libeTPkcs11.so --login --keypairgen --key-type 

, но с библиотекой PKCS11 OpenSC ?

Re: Использование смарткарт под Linux

Добрый день!

sanyo пишет:

Почему у вас не поддерживаются команды аналогичные eToken:

root@host:/download/4# pkcs11-tool --module /usr/lib/libeTPkcs11.so --init-token --label eToken2
root@host:/download/4# pkcs11-tool --module /usr/lib/libeTPkcs11.so --init-pin --login
root@host:/download/4# pkcs11-tool --module /usr/lib/libeTPkcs11.so --login --keypairgen --key-type

, но с библиотекой PKCS11 OpenSC ?

С проприетарной библиотекой pkcs#11 -- librtpkcs11ecp.so все работает точно так же как у eToken (libeTPkcs11.so ведь проприетарная).

Не понимаю смысла претензий. У вас есть механизм генерации и использования RSA-ключей, причем с использованием opensource решения.

(2020-09-12 20:44:44 отредактировано sanyo)

Re: Использование смарткарт под Linux

Получается,  невозможность использования PKCS11 команд типа:

--init-token
--init-pin

это особенность OpenSC? В данном случае это не претензии, а вопросы.

Претензия была в том, что до перепрошивки считывателя даже ваши проприетарные библиотеки не работали с вашими картами, а проприетарные библиотеки eToken работали с картами eToken, возможно вы используете какие-то более современные APDU команды? Любопытно, что версия микропрограммы, судя по показаниям Windows Device Manager, не поменялась после перепрошивки.

Re: Использование смарткарт под Linux

sanyo пишет:

Получается,  невозможность использования PKCS11 команд типа:

--init-token
--init-pin

это особенность OpenSC? В данном случае это не претензии, а вопросы.

Выглядит так, что ошибка в работе функции C_InitToken, это, действительно, особенность работы библиотеки opensc-pkcs11.so (скорее всего, связана с реализацией этого TODO: https://github.com/OpenSC/OpenSC/blob/4 … t.c#L298).

sanyo пишет:

Претензия была в том, что до перепрошивки считывателя даже ваши проприетарные библиотеки не работали с вашими картами, а проприетарные библиотеки eToken работали с картами eToken, возможно вы используете какие-то более современные APDU команды?

Дело в том, что карты eToken и карты, которые у вас, работают по различающимся транспортным протоколам (см. ISO7816-3), и ошибка в прошивке считывателя смарт-карт была именно в реализации протокола T=0, по которому работают карта Рутокен 2151 и ваша карта Рутокен 2100.