Questa pagina fornisce suggerimenti su come usare una Smartcard (conosciuta anche come chip card o scheda a circuito integrato (ICC)) in Debian.
Le smartcard sono usate insieme a chiavi crittografiche per assicurare che la loro metà privata non sia mai sull'hard disk o su un altro dispositivo di archiviazione generico, e perciò che non possa essere rubata (perché c'è una sola copia possibile di essa). La maggior parte dei dispositivi pennina ("dongle") per chiavi implementano anche un device di interfaccia alla chip card (CCID) e perciò possono essere utilizzate come smartcard anche se non si può mai rimuovere la smartcard dal "lettore".
Introduzione
- L'architettura di una smartcard è piuttosto complicata e al momento non è possibile mescolare ogni combinazione di carta e lettore in una maniera in stile plug-and-play. Tutte le carte, i lettori e i software non sono interscambiabili.
- Selezionando attentamente la combinazione giusta di smartcard e lettore di carte, è possibile implementare in Debian un sistema pienamente funzionante.
Ci sono due tipi principali di soluzione in Debian: le carte basate su OpenPGP o le carte in stile PKCS#11. Questa pagina descrive le seconde.
Le carte OpenPGP sono un tipo speciale di carta che è progettato per l'uso con GnuPG. Per il caso d'uso con GnuPG (firma di posta elettronica), sono facili da usare e perciò piuttosto comuni, tuttavia per usare una scheda per attività generali, come l'autenticazione web, VPN e cifratura dei dischi, possono non essere una soluzione soddisfacente.
In ogni caso, GnuPG può usare anche normali carte PKCS#11 con l'aiuto di OpenSC e del progetto GnuPG PKCS#11
Le smartcard hanno i propri software e sistema operativo interno. Tale software è raramente libero secondo i principi delle Linee guida Debian per il software libero, tuttavia il software nel sistema Debian è completamente libero. Per definizione, una smartcard è un dispositivo sicuro e il software non può essere cambiato a proprio piacimento. Alcuni produttori fornisceono driver binari (a sorgente chiuso) per Linux, ma non è sempre necessario usare tali driver. Nella migliore delle ipotesi è possibile creare soluzioni funzionanti senza usare alcun software non libero o artifatti binari dal produttore, tranne che per quelli nella carta stessa.
Scegliere algoritmi e dimensioni delle chiavi
- RSA è l'algoritmo tradizionale
- le chiavi più corte di 2048 bit sono considerate non sicure
- La maggior parte delle carte gestisce un massimo di 2048 bit
- Alcune persone pensano che non siano sufficienti
- Elliptic Curve Cryptography (ECC) è un algoritmo più moderno
- le dimensioni delle chiavi sono più piccole (es. 256 bit per ECC sono simili per robustezza a 3072 bit con RSA)
- usa meno CPU di RSA
- tuttavia alcuni vecchi client (es. Windows XP, 30% di Internet) non lo gestiscono
- anche le applicazioni moderne sono in dietro con la sua gestione, ad esempio non è nelle versioni stabili di GnuPG o GnuPG v2.0 in Debian.
- I produttori di smartcard stanno mostrando una preferenza per il supporto per ECC nei progetti futuri:
- per la lunghezza più corta delle chiavi (minor uso della memoria)
- per il minor carico sulla CPU e il funzionamento più veloce sul chip della carta
- è considerato più sicuro
- perché il NIST (National Institute of Standards and Technology) degli Stati Uniti sostiene ECC
- Di conseguenza, è raccomandato per coloro che desiderano RSA 4096 sulle smartcard di prendere in considerazione anche l'uso di ECC
Per coloro che preferiscono RSA, ecco alcuni commenti nel dibattito sull'uso di 2048 o 4096 bit
Alcune carte comuni
- Ecco un elenco di alcune carte comuni che sono disponibili da negozi in rete
Ognuna ha i propri lati positivi, vedere il wiki di OpenSC (elenco di hardware gestito) per i dettagli
- Per trovare produttori di smartcard in una ricerca nel web, le parole chiave da usare tipicamente sono: "7816" "4096" "rsa" "smartcard"
Produttore |
Scheda |
Bit (RSA) |
Sistema operativo scheda |
Inizializzabile con OpenSC |
Acquisto/Negozio online |
Vendor |
Card |
Bits (RSA) |
Card operating system |
Initializable with OpenSC |
Purchasing/Online shop |
ACS |
ACOS5-64 |
4096 |
|
|
|
Aladdin |
eToken PRO |
2048 |
JavaCard |
? |
|
Aventra |
2048 |
JavaCard |
Yes |
||
Crypto Stick |
4096 |
Yes |
|||
Feitian |
ePass2003 |
2048 |
Feitian proprietary |
||
Feitian |
FTCOS / PK-01C |
2048 |
|
Yes |
http://www.gooze.eu/feitian-pki-free-software-developer-card Free card offer |
g10 Code |
OpenPGP SmartCard V2 |
4096 |
Yes |
Floss Shop OpenPGP Card v2.1 |
|
Gemalto (formerly Schlumberger/Axalto) |
Cryptoflex (and eGate) |
|
|
|
|
Gemalto |
PIV card |
2048 |
|
|
|
Gemalto |
IDcore |
2048 |
JavaCard |
|
|
Yubico |
YubiKey NEO |
2048 |
JavaCard |
|
|
Yubico |
4096 |
JavaCard |
|
||
ZeitControl |
BasicCard |
4096 |
BasicCard |
|
Applicazioni
- Autenticazione
- Crittografia dati
- Firma
Vedere questo elenco di applicazioni d'esempio per Linux.
Hardware supportato
Questo elenco non è esaustivo, essenzialmente è qui affinché le persone possano trovarlo: non ci sono i moduli per i dispositivi... solo librerie in spazio utente.
Interface |
ID |
Description |
Driver |
USB |
03F0:0824 |
HP USB Smartcard Reader |
|
USB |
03F0:1024 |
HP USB Smart Card Keyboard |
|
USB |
0416:3815 |
Winbond |
|
USB |
046a:0005 |
Cherry XX33 |
|
USB |
046a:0010 |
Cherry XX44 |
|
USB |
046a:002D |
Cherry ST1044U |
|
USB |
046a:003E |
Cherry SmartTerminal ST-2XXX |
|
USB |
046A:005B |
Cherry SmartBoard XX1X |
|
USB |
0471:040F |
Philips JCOP41V221 |
|
USB |
047B:020B |
Silitek SK-3105 |
|
USB |
04B9:1206 |
SafeNet IKey4000 |
|
USB |
04B9:1400 |
SafeNet IKey4000 |
|
USB |
04E6:5111 |
SCM SCR 331-DI |
|
USB |
04E6:5113 |
SCM SCR 333 |
|
USB |
04E6:5115 |
SCM SCR 335 |
|
USB |
04E6:5116 |
SCM SCR 3310 |
|
USB |
04E6:5117 |
SCM SCR 3320 |
|
USB |
04E6:5119 |
SCM SCR 3340 ExpressCard54 |
|
USB |
04E6:511A |
SCM SCR 3310 NTTCom |
|
USB |
04E6:511C |
Axalto Reflex USB v3 |
|
USB |
04E6:511D |
SCM SCR 3311 |
|
USB |
04E6:5120 |
SCM SCR 331-DI NTTCom |
|
USB |
04E6:5121 |
SCM SDI 010 |
|
USB |
04E6:5410 |
SCM SCR 355 |
|
USB |
04E6:E001 |
SCM SCR 331 |
|
USB |
04E6:E003 |
SCM SPR 532 |
|
USB |
0529:030b |
Aladdin Pro, eToken R1 v3.1.3.x |
|
USB |
0529:050c |
Aladdin Pro, eToken Pro v4.1.5.x |
|
USB |
0529:0514 |
Aladdin Pro, eToken Pro v4.2.5.4 |
|
USB |
058F:9520 |
Alcor Micro AU9520 |
|
USB |
067b:2303 |
Towitoko Chipdrive USB |
#libtowitoko2 broken in Debian and Ubuntu |
USB |
072F:9000 |
ACS ACR38U or ACR38T |
|
USB |
072f:90cc |
ACS ACR 38U-CCID |
|
USB |
073D:0007 |
Eutron CryptoIdentity |
|
USB |
073D:0008 |
Eutron CryptoIdentity |
|
USB |
073D:0B00 |
Eutron Digipass 860 |
|
USB |
073D:0C00 |
Eutron SIM Pocket Combo |
|
USB |
073D:0C01 |
Eutron Smart Pocket |
|
USB |
076B:1021 |
OmniKey CardMan 1021 |
|
USB |
076B:3021 |
OmniKey CardMan 3121 |
|
USB |
076B:3621 |
OmniKey CardMan 3621 |
|
USB |
076B:3821 |
OmniKey CardMan 3821 |
|
USB |
076B:4321 |
OmniKey CardMan 4321 |
|
USB |
076B:5121 |
OmniKey CardMan 5121 |
|
USB |
076B:5125 |
OmniKey CardMan 5125 |
|
USB |
076B:5321 |
OmniKey CardMan 5321 |
|
USB |
076B:6622 |
OmniKey CardMan 6121 |
|
USB |
076B:A022 |
Teo by Xiring |
|
USB |
0783:0003 |
C3PO LTC31 |
|
USB |
0783:0006 |
C3PO LTC31 |
|
USB |
0783:0007 |
C3PO TLTC2USB |
|
USB |
0783:0008 |
C3PO LTC32 USBv2 with keyboard support |
|
USB |
0783:0009 |
C3PO KBR36 |
|
USB |
0783:0010 |
C3PO LTC32 |
|
USB |
0783:9002 |
C3PO TLTC2USB |
|
USB |
08E6:0430 |
GemPC430 |
|
USB |
08E6:0432 |
GemPC432 |
|
USB |
08E6:0435 |
GemPC435 |
|
USB |
08E6:1359 |
VeriSign Secure Storage Token |
|
USB |
08E6:2202 |
Gemplus Gem e-Seal Pro |
|
USB |
08E6:3437 |
Gemplus GemPC Twin |
|
USB |
08E6:3438 |
Gemplus GemPC Key |
|
USB |
08E6:3478 |
Gemplus GemPC Pinpad |
|
USB |
08E6:3479 |
Gemplus GemCore POS Pro |
|
USB |
08E6:3480 |
Gemplus GemCore SIM Pro |
|
USB |
08E6:34EC |
Gemplus GemPC Express |
|
USB |
08E6:4433 |
Gemplus GemPC433 SL |
|
USB |
08E6:8000 |
Smart Enterprise Guardian |
|
USB |
08E6:ACE0 |
Verisign Secure Token |
|
USB |
0973:0003 |
SchlumbergerSema Cyberflex Access |
|
USB |
0982:0007 |
Covadis Alya |
|
USB |
0982:0008 |
Covadis Vega |
|
USB |
09BE:0002 |
SmartEpad |
|
USB |
09C3:0008 |
ActivCard USB Reader 2.0 |
|
USB |
09C3:0013 |
ActivCard USB Reader 3.0 |
|
USB |
09C3:0014 |
Activkey Sim |
|
USB |
0B81:0200 |
id3 CL1356D |
|
USB |
0B81:0220 |
id3 CL1356A HID |
|
USB |
0b97:7762 |
O2 Micro Oz776 |
|
USB |
0b97:7772 |
O2 Micro Oz776 |
|
USB |
0BDA:0169 |
Generic USB2.0-CRW |
|
USB |
0BDA:0161 |
MSI StarReader SMART |
|
USB |
0BDA:0165 |
Generic Smart Card Reader Interface |
|
USB |
0BDA:0169 |
Generic USB2.0-CRW |
|
USB |
0BDA:0161 |
MSI StarReader SMART |
|
USB |
0BDA:0165 |
Generic Smart Card Reader Interface |
|
USB |
0BF8:1005 |
Fujitsu Siemens SmartCard Keyboard USB 2A |
|
USB |
0BF8:1006 |
Fujitsu Siemens SmartCard USB 2A |
|
USB |
0C4B:0300 |
Reiner-SCT cyberJack pinpad(a) |
|
USB |
0D46:3001 |
KOBIL KAAN Base |
|
USB |
0D46:3002 |
KOBIL KAAN Advanced |
|
USB |
0d46:3003 |
KOBIL KAAN SIM III |
|
USB |
0d46:3010 |
KOBIL EMV CAP - SecOVID Reader III |
|
USB |
0d46:4000 |
KOBIL mIDentity |
|
USB |
0d46:4001 |
KOBIL mIDentity |
|
USB |
0DC3:1004 |
Athena ASE IIIe |
|
USB |
0DC3:1102 |
Athena ASEDrive IIIe KB |
|
USB |
0DF6:800A |
Sitecom USB simcard reader MD-010 |
|
USB |
1059:000C |
GnD CardToken 350 |
|
USB |
1059:000D |
GnD CardToken 550 |
|
USB |
15E1:2007 |
RSA SecurID |
|
USB |
17EF:1003 |
Lenovo Integrated Smart Card Reader |
|
USB |
19E7:0002 |
Charismathics token |
|
USB |
1A44:0001 |
Vasco DP905 |
|
USB |
1A74:6354 |
OCS ID-One Cosmo Card |
|
USB |
1B0E:1078 |
Blutronics Bludrive II CCID |
|
USB |
1C34:7124 |
Pro-Active CSB6 Ultimate |
|
USB |
1CF0:0001 |
Validy TokenA sl vt |
|
USB |
413c:2100 |
Dell keyboard SK-3106 |
|
USB |
413c:2101 |
Dell smart card reader keyboard |
Driver
libccid
Driver generico per driver USB CCID (Chip/Smart Card Interface Devices) e ICCD (Integrated Circuit(s) Card Devices). Vedere le specifiche USB di CCID e ICCD dal gruppo di lavoro USB.
Pacchetto: libccid
gnupg-ccid
GnuPG ha il proprio driver CCID nativo che comunica direttamente con il lettore attraverso libusb. Gestisce solamente i lettori che hanno la funzionalità di autoconfigurazione.
Per i dettagli vedere GnuPG/CCID_Driver.
Notare che GnuPG supporta anche i lettori attraverso PC/SC-lite.
Advanced Card Systems
Pacchetto: libacr38u
Lettori di smart card ACS USB CCID
Pacchetto: libacsccid1
Athena SCS (Smartcard Solutions)
Pacchetto: libasedrive-usb
AKS - Aladdin Knowledge Systems
Pacchetto: libetoken
Gemplus SA
Pacchetto: libgempc430
Towitoko GMBH
Pacchetto: libtowitoko2
MuscleCard Applet PlugIn
Aladdin eToken PRO
Dispositivi non supportati
Qui sopra sono elencati solo i dispositivi supportati (in quanto è possibile che il loro stato cambi piuttosto velocemente).
Eccezione: alcuni produttori stanno vendendo dispositivi hardware diversi con lo stesso nome di prodotto (!)... In questo caso si cerca di elencarli come versioni non supportate con il tag #not-supported.