Menu Chiudi

Pillola #27: Abilitare il lettore smart card “Smarty” e utilizzare la Carta Provinciale dei Servizi

La Provincia Autonoma di Trento mette a disposizione gratuitamente (fino ad esaurimento) un lettore per ogni nucleo familiare, quando almeno uno dei componenti attiva la propria Tessera Sanitaria con chip (detta anche CPS, Carta Provinciale dei Servizi ).

N.B: La CPS è anche una Carta Nazionale dei Servizi (CNS), la procedure vale anche per una qualsiasi tessera di questo tipo.

Questa pillola è stata testata su Ubuntu  10.04, 12.04.

Pacchetti essenziali

  • pcscd (demone per il protocollo di comunicazione PCSC)
  • libccid (supporto generico per lettori aderenti allo standard ccid)
  • opensc (supporto per smartcard e token di vario tipo, tra cui le CNS italiane)

1. Installazione e verifica

  • Installare i pacchetti essenziali. Ovvero: aprire un terminale e battere:
    sudo apt install opensc
  • Inserire la carta e controllare che venga rilevata correttamente, sempre da terminale, usando il comando:
opensc-tool -av
Using reader with a card: ACS ACR 38U-CCID 00 00
Connecting to card in reader ACS ACR 38U-CCID 00 00...
Using card driver Italian CNS.
Card ATR:
3B FF 18 00 FF C1 0A 31 FE 55 00 6B 05 08 C8 0C ;......1.U.k....
01 11 01 43 4E 53 10 31 80 05                   ...CNS.1..

L’ATR è l’identificativo a basso livello della carta, che codifica diverse informazioni interessanti, ad esempio tra i byte opzionali, “43 4E 53” == “CNS” identificano tutte le carte a standard CNS.

2. Come configurare Firefox per usare la libreria OpenSC (e quindi identificarsi su siti web tramite CPS)

  • Andare in Preferenze -> Certificati -> Dispositivi di sicurezza… (oppure sui vecchi browser in Modifica -> Preferenze -> Avanzate; Selezionare il tab Cifratura)
  • Pigiare il tasto: Dispositivi di sicurezza
  • Pigiare il tasto: Carica
  • Fornire nel campo una descrizione, ad esempio: OpenSC
  • Fornire il percorso alla libreria: opensc-pkcs11.so

che di solito si trova in /usr/lib/i386-linux-gnu/opensc-pkcs11.so oppure /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so, a seconda dell’architettura a 32 o 64 bit.
Nota: per scoprire che architettura si sta usando, aprire un terminale e battere: arch… la risposta sarà: x86_32 o x86_64 a seconda se a 32 o 64 bit.

  • Premere il tasto: Ok,
  • Chiudere la finestra delle Preferenze.

FATTO!

Manutenzione

1. Come cambiare pin:

Aprire un terminale e battere: pkcs15-tool –change-pin

Vengono chiesti in sequenza:

  1. Vecchio pin
  2. Nuovo pin
  3. Riconferma del nuovo pin

2. Come riabilitare la carta, che si blocca dopo tre immissioni errate del pin:

Aprire un terminale e battere:  pkcs15-tool -u

Nota: occorre disporre del PUK!


Problemi

Il lettore “Smarty” è in realtà un ACS modello acr38u; da prove effettuate sembra che alcuni siano ccid compliant, altri no. Si consiglia quindi di provare ad installare, se il lettore non viene riconosciuto, anche il pacchetto  “libacr38u”.

Operazioni opzionali (per gli smanettoni)

1) metodo alternativo per esplorare la card

Se si sono installa anche il pacchetto pcsc-tools, si può usare il comando “pcsc_scan”, che estrae un notevole numero di informazioni dalla carta, e permette di testare eventi come l’introduzione e la rimozione della carta dal lettore. L’autore Ludovic Rousseau (uno degli autori e mantainer di pcscd) aggiorna un file di testo, smartcardlist.txt, su cui si basa pcsc_scan, che è una delle liste più complete di carte e relativi ATR.

$ pcsc_scan 
PC/SC device scanner
V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.7.4
Using reader plug'n play mechanism
Scanning present readers...
0: ACS ACR 38U-CCID 00 00

Wed Aug  1 10:01:28 2012
Reader 0: ACS ACR 38U-CCID 00 00
  Card state: Card removed,

se quindi si inserisce la carta: 

Wed Aug  1 10:07:19 2012
Reader 0: ACS ACR 38U-CCID 00 00
  Card state: Card inserted, 
  ATR: 3B FF 18 00 FF C1 0A 31 FE 55 00 6B 05 08 C8 0C 01 11 01 43 4E 53 10 31 80 05

ATR: 3B FF 18 00 FF C1 0A 31 FE 55 00 6B 05 08 C8 0C 01 11 01 43 4E 53 10 31 80 05
+ TS = 3B --> Direct Convention
+ T0 = FF, Y(1): 1111, K: 15 (historical bytes)
  TA(1) = 18 --> Fi=372, Di=12, 31 cycles/ETU
    129032 bits/s at 4 MHz, fMax for Fi = 5 MHz => 161290 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = FF --> Extra guard time: 255 (special value)
  TD(1) = C1 --> Y(i+1) = 1100, Protocol T = 1 
-----
  TC(2) = 0A --> Work waiting time: 960 x 10 x (Fi/F)
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 55 --> Block Waiting Integer: 5 - Character Waiting Integer: 5
+ Historical bytes: 00 6B 05 08 C8 0C 01 11 01 43 4E 53 10 31 80
  Category indicator byte: 00 (compact TLV data object)
    Tag: 6, len: B (pre-issuing data)
      Data: 05 08 C8 0C 01 11 01 43 4E 53
    Mandatory status indicator (3 last bytes)
      LCS (life card cycle): 10 (Proprietary)
      SW: 3180 (Error not defined by ISO 7816)
+ TCK = 05 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B FF 18 00 FF C1 0A 31 FE 55 00 6B 05 08 C8 0C 01 11 01 43 4E 53 10 31 80 05
    Healtcare card (TS-CNS) - Provincia Autonoma di Trento

Come vedete, qualcuno ha già provveduto a segnalare l’ATR; sospetto sia qualcuno del LT 🙂

2) Alcuni comandi per esplorare il contenuto della carta:

Per elencare i certificati contenuti:

$ pkcs15-tool -c

Per visualizzare il proprio certificato (L’ID va preso dal risultato del comando precedente)

 $ pkcs15-tool -r <ID> 

3) Esplorare il filesystem della carta:

da terminale battere: opensc-explorer

E’ una vera e propria shell, help per un listing veloce, o vedere man opensc-explorer per il dettaglio dei comandi.

WordPress Appliance - Powered by TurnKey Linux