K čemu taková USB fleška je :-) ? Vypadá sice jako fleška, ale uvnitř je čtečka Smard Card - Feitian R-310 a Feitian PKI smartcard (FTCOS / PK-01C). Na token je možno uložit certifikát nebo ssh klíč. Výhodou je, že se dá RSA klíč přímo generovat na daném zařízení s tím, že privátní klíč nikdy token neopustí, což je jedna z klíčových vlastností .
Spolu s tokenem bylo dodáno i malé 92M CD s dokumentací. Aktuální ISO obraz je dostupný zde.
Hnedle co jsem jej dostal do ruky, strčil jsem jej do USB.
Nov 14 13:35:44 ntb kernel: [19615.418112] usb 5-1: New USB device found, idVendor=096e, idProduct=0503
Nov 14 13:35:44 ntb kernel: [19615.418115] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Nov 14 13:35:44 ntb kernel: [19615.418117] usb 5-1: Product: SCR301
Nov 14 13:35:44 ntb kernel: [19615.418119] usb 5-1: Manufacturer: Feitian
Nov 14 13:35:44 ntb mtp-probe: checking bus 5, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/usb5/5-1"
Nov 14 13:35:44 ntb mtp-probe: bus: 5, device: 5 was not an MTP device
Pro práci s tokenem budeme v Linux/UNIX systémech potřebovat free software OpenSC. Výrobcem tokenu je spolešnost Feitian. Ovladač FTCOS/PK-01C v OpenSC se jmenuje "entersafe", více je popsáno zde.
Nejprve jsem si instaloval tyto balíky v distribuci LMDE. K OpenSC je ječtě třeba ovladač čtečky atd. pcsc+ccid.
sudo aptitude install opensc
sudo aptitude install libccid
sudo aptitude install libacsccid1
sudo aptitude install pcsc-tools
sudo aptitude install pcscd
Kominikace s čtečkou mi nějak nefungovala, proto jsem si manuálně zkompiloval aktuální verzi. Popis instalace pěkně zdokumentován na GOOZE.
Ověření instlace je dokumentováno zde. LMDE verze.
opensc-tool --verbose --info
opensc 0.12.1 [gcc 4.6.1]
Enabled features: zlib openssl pcsc(libpcsclite.so.1)
Aktuální manuálně kompilovaná verze.
opensc 0.12.2 [gcc 4.6.1]
Enabled features: zlib readline openssl pcsc(libpcsclite.so.1)
Vypíšeme si čtečky --list-readers, -l Lists all configured readers
opensc-tool -l
# Detected readers (pcsc)
Nr. Card Features Name
0 Yes Feitian SCR301 00 00
Inicializace karty je opět pěkně zdokumentována zde.
Vypíšeme si ATR ma kartě --atr, -a Prints the ATR bytes of the card
opensc-tool --atr
Using reader with a card: Feitian SCR301 00 00
3b:9f:95:81:31:fe:9f:00:65:46:53:05:30:06:71:df:00:00:00:80:6a:82:5e
Vypíšeme si seriové číslo karty. --serial Prints the card serial number
opensc-tool --serial
Using reader with a card: Feitian SCR301 00 00
29 15 33 21 10 23 08 11 ).3!.#..
Preventivě smažeme kartu, na které od výrobve stejně nic není. Prověříme tím komunikaci čtečky s smart card.
pkcs15-init -vE
Using reader with a card: Feitian SCR301 00 00
Connecting to card in reader Feitian SCR301 00 00...
Using card driver entersafe.
About to erase card.
Dále si na kartě inicializujeme profil, nastavíme pin a puk
pkcs15-init --create-pkcs15 --profile pkcs15+onepin --use-default-transport-key --pin 1234 --puk 654321 --label "Jan Novak"
Pomocí dump si vypíšeme co Smard Card obsaduje.
pkcs15-tool --dump
Using reader with a card: Feitian SCR301 00 00
PKCS#15 Card [
Version : 0
Serial number : 2915332110230811
Manufacturer ID: EnterSafe
Last update : 20111115124249Z
Flags : EID compliant
PIN [User PIN]
Object Flags : [0x3], private, modifiable
ID : 01
Flags : [0x32], local, initialized, needs-padding
Length : min_len:4, max_len:16, stored_len:16
Pad char : 0x00
Reference : 1
Type : ascii-numeric
Path : 3f005015
Můžeme do karty importovat existující RSA klíč, který musíme nejprve dešifrovat.
openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
Enter pass phrase for /home/novak/.ssh/id_rsa:
writing RSA key
Posléze jej uložíme na Smard Card.
pkcs15-init --store-private-key id_rsa.pem --auth-id 01 --pin 1234
Lepší možnost je si klíč generovat přímo na token.
Veřejný klíč si vygenerujeme následovně. Návod opět zde. Vypíšeme si nejprve informaci o veřejném klíčí na smard card.
pkcs15-tool --list-public-keys
Using reader with a card: Feitian SCR301 00 00
Public RSA Key [Public Key]
Object Flags : [0x2], modifiable
Usage : [0x4], sign
Access Flags : [0x0]
ModLength : 2048
Key ref : 0
Native : no
Path : 3f0050153000
ID : c70982******a14eb3
pkcs15-tool --read-ssh-key c70982
Using reader with a card: Feitian SCR301 00 00
2048 65537 259843
ssh-rsa AAAAB3Nz
Pak se již můžeme přihašovat na vzdálený server pomocí Secure Shell.
ssh -v -I /usr/lib/opensc-pkcs11.so server.domena.cz
Provider tokenu je možno zavést do patřičného souboru.
vim ~/.ssh/ssh_config
PKCS11Provider /usr/lib/pkcs11/opensc-pkcs11.so
Alternativy USB tokenu, u kterých se o Linuxu moc nepíše, ale funkční pod OpenSC budou.
2 komentáře:
Tak zrovna ten eToken 5000 (drive iKey4000) NENI pod Linuxem podporovan. Pouzival se pro Czechpointy, ISDS a podobny tunely.
SafeNet nikdy OpenSC komunite zadne podklady nedal a v CR se (prave kvuli ISDS) nejaka firma o driver pokousela, ale chteli za to nejaky strasny penize a protoze to pak stahli z webu, tak soudim, ze to nakonec vzdali.
Ja ten iKey4000 kdysi koupil prave protoze u nej bylo napsano, ze je s Linuxem a MacOSem kompatibilni, ale neni. Puvodne jsem chtel koupit jiny, ktery vypada na prvni pohled uplne stejne, ale neumel AES, a ten na Linuxu podle meho pozdejsiho zjisteni funguje.
Dokonce i nejaky typek z Francie mel na webu napsano ze jeho PC/SC balik iKey4000 podporuje, ale kdyz jsem mu napsal, tak na tom webu zmenil iKey4000 za "some iKey4000s based on XXX chip" -- coz vypada, ze jich je tedy nekolik obchodne nerozlisitelnych modelu.
Bohuzel, krom iKey4000 jsem zadnou (OpenSC friendly) alternativu s podporou AES nenasel :-(
Dik za popis, alternativy jsem uvedl, kdyz jsem patral zda se nejaky USB token da koupit u nas v .cz
Okomentovat