Firma elettronica avanzata con CRS e GNU/Linux

La Tessera Sanitaria o Carta Nazionale dei Servizi (TS–CNS), vale anche come Carta Regionale dei Servizi (CRS).

Per accedere ai servizi online come il fascicolo sanitario occorrono: Tessera, PIN, lettore smartcard, installare software con apt-get e settare le librerie nel browser Firefox.

Per firmare elettronicamente serve anche il software dell'ente che ha rilasciato la carta: CRS-manager.run per Lombardia informatica.

Verifica del lettore e inserimento tessera

Il sistema operativo è Debian 9 a 64 bit.

Il lettore smartcard si compera al supermercato, dove ho trovato un Hama chipcard reader single, che si rivelerà un Alcor Micro Corp. AU9540 e funziona con GNU/Linux. Viene consigliato come funzionante il: Bit4id miniLector EVO.

La Tessera TS-CNS CRS e suo PIN vengono rilasciati dalla ASL (Azienda Sanitaria Locale).

Un occhio ai messaggi per vedere se il lettore di smartcard risulta mentre viene collegato/scollegato:

dmesg -w

usb 1-4: new full-speed USB device number 7 using xhci_hcd
usb 1-4: New USB device found, idVendor=058f, idProduct=9540
usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-4: Product: EMV Smartcard Reader usb 1-4: Manufacturer: Generic

La lista delle device collegate USB:

lsusb

Bus 001 Device 006: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader

Installare il software per il lettore

apt-get install libacsccid1 pcscd opensc pcsc-tools libccid

Se il lettore rispetta lo standard pkcs#15 non c'è bisogno di altro software.

Vedere qual'è il tipo di chip dal numero in alto a sinistra sulla tessera, o dalla forma (in fondo alla pagina).

Inserire la carta nel lettore (si accende la lucetta verde).

La lista dei card readers collegati:

opensc-tool --list-readers

Nr. Card Features Name 0 Yes Alcor Micro AU9560 00 00

Leggere la smartcard:

pcsc_scan

Italian healtcare card (TS) National Service Card (CNS) (HealthCare)

il demone pcscd si sarà avviato automaticamente.

ps aux | grep pcscd

Frugare nella smartcard

opensc-tool --reader 0 --name -v

Connecting to card in reader Alcor Micro AU9560 00 00...
Using card driver Italian CNS. Card name: CNS card

Dump dei dati della smartcard

pkcs15-tool -D

Se reader e smartcard funzionano, proviamo a usarla per accedere al sito del fascicolo sanitario.

Collegarsi con autenticazione al sito usando Firefox

Aggiungere le librerie per compatibilità browser

Firefox > Preferenze > Avanzate > Cifratura > Dispositivi di sicurezza

Load/Carica.

Come nome modulo: CRS PKCS#11

Browse e seleziona: /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so

Chiudi e salva.

All'utilizzo chiederà il PIN.

Il software per la firma elettronica avanzata

Installare da root il software di Lombardia informatica per la firma elettronica

chmod +x CRSManager.run

./CRSManager.run

Si installa in /opt/CRSManager/, si disinstalla con /opt/CRSManager/uninstall.sh

Si avvia graficamente con:

crslinux.sh

Selezionare un file e apporvi una firma, il file verrà duplicato e incapsulato aggiungendovi la desinenza .p7m e si potrà consegnarlo come firmato al corrispondente.

Glossario minimo

La firma elettronica viene accettata da un'entità se l'ente certificatore è accreditato nell'elenco degli enti certificatori accreditati. È una faccenda burocratica dove lo scopo iniziale potrebbe perdersi dalla vista, quando venga proposta come unica possibilità potrebbe diventare oppressiva: ci incontriamo e porto con me la carta d'identità, le mando un fax.. faccio una autocertificazione, porto due testimoni.. -NO, lei deve caricare l'apposito modulo firmato digitalmente- Inoltre, un ente certificatore chiederà dei denari.

  • Firma elettronica

Un generico insieme di dati connessi al fine dell'identificazione.
Ad esempio il formato PAdES (PDF Advanced Electronic Signatures) che serve a firmare solo i PDF.

Vale se chi la riceve la accetta.

  • Firma elettronica avanzata

Una firma in formato CAdES (CMS Advanced Electronic Signatures)

esempio file: foo.pdf
esempio file firmato: foo.pdf.p7m

Collegata a una autorità di certificazione.

Permette identificazione univoca e integrità.
Viene usata per scritture private.
Vale se chi la riceve la accetta.

  • Firma elettronica qualificata

Collegata a una autorità di Certificazione qualificata.

Permette identificazione univoca, integrità e non-ripudiabilità.
Vale davanti a un giudice.

  • Firma digitale

Collegata a una autorità di Certificazione qualificata.

Permette identificazione univoca, integrità e non-ripudiabilità.
Usa crittografia asimmetrica.
Vale davanti a un giudice.

  • Firma digitale elettronica avanzata con crittografia pesante asimmetrica PGP.

Permette identificazione univoca, integrità e non-ripudiabilità.
Usa crittografia asimmetrica.
Non vale per l'amministrazione perché esclude un ente certificatore.
Vale in ambito crittografico.

Ricerche sul sentirsi dire: ehh, ma non vale.. ci vuole la firma digitale.

Sul valore giuridico della firma digitale in Italia, esistono adeguamenti a direttive, normative, discipline e ordinamenti e naturalmente regole, regolette, decreti, convenzioni, leggi e codici:

Il Regolamento AGID stabilisce la non discriminazione dei documenti elettronici rispetto ai documenti cartacei, ma remember: nobody knows nothing, tantomeno sull'autocertificazione.

Possa tu generare una firma elettronica senza comperare un servizio. Possa esserti riconosciuta come valida nel tuo cammino di affermazione che te sei tu. Possa tu incontrare il concetto di firma digitale collettiva.

Link utili e vari

Aggiornamento:

Ad oggi 4 luglio 2019, per installare Dike su debian 64bit occorre compilare a manina la libreria libjpeg8, altrimenti Dike si lamenta cosi:

Dike: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory

scaricare Dike

scaricare libjpeg8

Scompattare jpegsrc.v8d1.tar.gz ed entrare nella directory

tar -xzvf jpegsrc.v8d1.tar.gz

cd jpeg-8d1/

Configurare, compilare e installare la libreria libjpeg8

./compile
make
make test
sudo make install

Fare un link in modo che sia visibile da Dike

sudo ln -s /usr/local/lib/libjpeg.so.8 /usr/lib/x86_64-linux-gnu/libjpeg.so.8

Avviare Dike.