Features
- Virtual smart card: Emulates a German Elektronischer Reisepass, ISO-7816 or cryptoflex cards
- Virtual smart card: Connects to virtual reader over the internet
- Virtual smart card: Supports relaying a local smart card to the virtual reader
- PCSC relay: Emulates a ISO/IEC 14443 smart card relaying communication to a local smart card
- PCSC relay: Uses OpenPICC or libnfc devices as NFC antenna for card emulation
- nPA Library: Supports establishing a secure messaging channel to the new German identity card ("neuer Personalausweis" nPA)
- nPA Library: Supports easy to use secure messaging implementation
- nPA Library: Includes tool for PIN management for the nPA
- Smart card reader emulator: Compatible with default CCID driver for windows and unix
- Smart card reader emulator: Supports secure PIN commands
- Smart card reader emulator: Supports PACE ("Standardleser" CAT-S)
Из всего фреймворка меня в первую очередь интересует функционал по эмуляции виртуальной смарткарты, потому я и подготовил пакет для пары экспериментов.
Установить его можно из моего репозитория
$ sudo aptitude install virtualsmartcard $ sudo service pcscd restart
Для удобства работы со смарткартами нужно установить пакет opensc.
$ sudo aptitude install opensc
И затем проверить, что виртуальные ридеры видны в системе и доступны прикладному софту.
$ opensc-tool --list-readers # Detected readers (pcsc) Nr. Card Features Name 0 No Virtual PCD 00 00 1 No Virtual PCD 00 01 2 No Virtual PCD 00 02 3 No Virtual PCD 00 03 4 No Virtual PCD 00 04 5 No Virtual PCD 00 05 6 No Virtual PCD 00 06 7 No Virtual PCD 00 07 8 No Virtual PCD 00 08 9 No Virtual PCD 00 09 10 No Broadcom Corp 5880 [Contacted SmartCard] (0123456789ABCD) 00 00
В соседнем терминале запустим эмулятор смарткарты стандарта ISO7816 и проверим реакцию на это событие.
$ vicc -t iso7816 02.09.2014 11:24:28 [WARNING] Using default SAM parameters. PIN=1234, Card Nr=1234567890 02.09.2014 11:24:28 [INFO] Connected to virtual PCD at localhost:35963 02.09.2014 11:24:28 [INFO] Power Up 02.09.2014 11:24:29 [INFO] Power Down
Теперь обновим состояние ридеров - по идее сейчас виртуальная карта должна появиться в одном из ридеров.
$ opensc-tool --list-readers # Detected readers (pcsc) Nr. Card Features Name 0 Yes Virtual PCD 00 00 1 No Virtual PCD 00 01 2 No Virtual PCD 00 02 3 No Virtual PCD 00 03 4 No Virtual PCD 00 04 5 No Virtual PCD 00 05 6 No Virtual PCD 00 06 7 No Virtual PCD 00 07 8 No Virtual PCD 00 08 9 No Virtual PCD 00 09 10 No Broadcom Corp 5880 [Contacted SmartCard] (0123456789ABCD) 00 00
Все верно и в первом ридере статус карты сменился с "No" на "Yes". Теперь попробуем поработать с картой через opensc-explorer.
Запрос информации о корневом файле
OpenSC [3F00]> info 3F00 Dedicated File ID 3F00 File path: 3F00 File size: 65535 bytes ACL for SELECT: N/A ACL for LOCK: N/A ACL for DELETE: NONE ACL for CREATE: NONE ACL for REHABILITATE: NONE ACL for INVALIDATE: NONE ACL for LIST FILES: NONE ACL for CRYPTO: N/A ACL for DELETE SELF: N/A
Генерация 8 случайных чисел в смарткарте
OpenSC [3F00]> random 8 00000000: F9 B3 C9 9D 8F D6 DC 81 ........
Создаем на смарткарте файл 8888/1F00 и загружаем его обратно на диск
$ dd if=/dev/urandom of=test.bin bs=1024 count=1 1+0 записей считано 1+0 записей написано скопировано 1024 байта (1,0 kB), 0,000283354 c, 3,6 MB/c $ opensc-explorer OpenSC [3F00]> mkdir 8888 256 OpenSC [3F00]> cd 8888 OpenSC [3F00/8888]> create 1F00 1024 OpenSC [3F00/8888]> put 1F00 test.bin Total of 1024 bytes written. OpenSC [3F00/8888]> info 1F00 Elementary File ID 1F00 File path: 3F00/8888/1F00 File size: 1024 bytes EF structure: Transparent ACL for READ: N/A ACL for UPDATE: N/A ACL for DELETE: N/A ACL for WRITE: N/A ACL for REHABILITATE: N/A ACL for INVALIDATE: N/A ACL for LIST FILES: N/A ACL for CRYPTO: N/A OpenSC [3F00/8888]> get 1F00 check.bin Total of 1024 bytes read from 1F00 and saved to check.bin. OpenSC [3F00/8888]> rm 1F00 OpenSC [3F00/8888]> cd .. OpenSC [3F00]> rm 8888
Проверим, что содержимое файлов test.bin и check.bin совпадает
$ md5sum test.bin check.bin 804420d7560e82065b74eff561cfb2c8 test.bin 804420d7560e82065b74eff561cfb2c8 check.bin
Несмотря на работу базовых функций инициализировать карту в формат PKCS15 не удастся.
Если нужна низкоуровневая работа с картой, то можно попробовать инструмент Java Smart Card Explorer.
$ wget --trust-server-names http://sourceforge.net/projects/jsmartcard/files/latest/download $ java -jar JSmartCardExplorer.jar
Комментариев нет:
Отправить комментарий