středa 16. listopadu 2011

Feitian ePass PKI token

Kolega nalezl tento USB token Feitian ePass PKI token na jednom francouském shopu. Již dříve jsem po obdobném HW toužil. Pátral jsem zda by jej nechtělo koupit více lidí, ale ve finále měl danej shop pouze dva kousky. Celkově dva USB tokeny s poštovným stály 78,53€.

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 [
Jan Novak]:
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.

pkcs15-init --generate-key 2048-rsa --auth-id 01 --pin 1234

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
******a14eb3

Using reader with a card: Feitian SCR301 00 00
2048 65537 259843
******67908u
ssh-rsa AAAAB3Nz
******
Bw2Tfg

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.
Tyto alternativy jsem si zde uvedl jen proto, že jsem na rychlo hledal, zda se da nějaký USB token koupit v čechach. Patrně nebudou fungovat pod Linuxem.

2 komentáře:

tmr řekl(a)...

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 :-(

SmEjDiL řekl(a)...

Dik za popis, alternativy jsem uvedl, kdyz jsem patral zda se nejaky USB token da koupit u nas v .cz