Differenze tra le versioni di "Carta Nazionale dei Servizi e Firma Digitale"
Hal (discussione | contributi) m (+ Linux) |
(→NixOS) |
||
(107 versioni intermedie di 7 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
− | Questa pagina | + | Questa pagina ha lo scopo di fare chiarezza sul "mondo" delle '''smartcard''' con microchip crittografico, delle funzioni che tramite esse vengono veicolate e del loro utilizzo con Linux. |
− | =CNS | + | = CNS = |
− | + | Una smartcard si definisce [http://www.digitpa.gov.it/carta-nazionale-dei-servizi «Carta Nazionale dei Servizi»] quando ha a bordo del suo microchip un certificato utile per l'autenticazione online, strutturato secondo quanto richiesto [http://www.digitpa.gov.it/node/689 dalla legge italiana]. | |
− | + | Anche la '''CIE''' «Carta d'Identità Elettronica», la «tessera sanitaria regionale» '''TS''' e le carte regionali dei servizi '''CRS''' sono a tutti gli effetti CNS. | |
− | + | Sono strumenti di riconoscimento online d'identità e possono essere utilizzate anche per [http://www.digitpa.gov.it/firme-elettroniche-certificatori Firma Digitale] '''FD'''. | |
− | La smartcard è l'oggetto fisico. Può contenere | + | La smartcard è quindi l'oggetto fisico. Può contenere '''soltanto''' la funzionalità CNS, '''soltanto''' la funzionalità FD o '''entrambe''', oppure '''nessuna''' (come nel caso delle tessere sanitarie con microchip appena giunte al cittadino e non ancora "attivate"). |
+ | |||
+ | Per ulteriori approfondimenti è possibile consultare [https://golem.linux.it/cloud/index.php/s/fCLGQzyRBpKfN45 Strumenti di Cittadinanza digitale] a cura di Giulia del GOLEM. | ||
=Produttori di smartcard= | =Produttori di smartcard= | ||
− | I produttori di smartcard (o meglio di microchip) dovrebbero rispettare lo standard pkcs#15, ma non sempre lo fanno. Per questo abbiamo bisogno di driver specifici (spesso binari e non-Liberi). | + | I produttori di smartcard (o meglio di microchip) dovrebbero rispettare lo standard [http://www.rsa.com/rsalabs/node.asp?id=2141 pkcs#15], ma non sempre lo fanno. Per questo abbiamo bisogno di driver specifici (spesso binari e non-Liberi). |
+ | |||
+ | ==Athena== | ||
+ | |||
+ | Smartcard fra le più diffuse (CRS Lombardia, TS Toscana, TS Sardegna, ArubaPEC), sono del produttore [http://www.athena-scs.com/ Athena] è possibile scaricare i driver binari dal sito [http://www.pec.it/Download.aspx Aruba]. | ||
+ | |||
+ | ==Incard== | ||
+ | |||
+ | Alcune smartcard utilizzate in Italia (Camere di Commercio, Infocert, ArubaPEC) sono del produttore [http://www.incard.it/ Incard]. I driver di queste smartcard sembrano essere sviluppati da Bit4id e sono rilasciati gratuitamente, ma non-Liberi, in formato binario su [https://www.pec.it/download-software-driver.aspx Aruba]. | ||
+ | |||
+ | ==Oberthur== | ||
+ | |||
+ | Le smartcard [http://www.oberthur.com/ Oberthur] sono utilizzate per la firma digitale da [https://www.pec.it ArubaPEC], molti ordini professionali emettono per i loro associati smartcard di questo produttore. Utilizzano il medesimo driver di Incard scaricabile su [https://www.pec.it/download-software-driver.aspx Aruba] | ||
− | + | ==Siemens== | |
− | + | Molto usate in passato dalle Camere di Commercio e adesso dalla [http://www.regione.liguria.it/argomenti/diritti-e-doveri-del-cittadino/carta-regionale-dei-servizi.html CRS ligure], le smartcard Siemens richiedono il software [http://supportcrs.fascicolo-sanitario.it/modulistica/ CardOS]. | |
− | + | ==Vecchie smartcard== | |
− | + | Un bell'elenco, storico, molto dettagliato, di microchip e dei relativi produttori si trova nella [https://www.firma.infocert.it/pdf/CARD_1.pdf documentazione Infocert]. Sysgillo, InCrypto, Siemens... le vecchie firme digitali delle Camere di Commercio. | |
=Lettori di smartcard= | =Lettori di smartcard= | ||
− | Chi produce i lettori spesso rispetta lo standard pkcs#11, quindi i lettori più nuovi dovrebbero risultare compatibili con Linux. | + | Chi produce i lettori spesso rispetta lo standard [http://www.rsa.com/rsalabs/node.asp?id=2133 pkcs#11], quindi i lettori più nuovi dovrebbero risultare compatibili con Linux. |
+ | |||
+ | I seguenti lettori di smartcard sono stati testati e funzionano con Linux | ||
+ | |||
+ | ==Bit4id== | ||
+ | [https://support.bit4id.com/#!/it/product/miniLector_Piano miniLector Piano] di Bit4id: funziona. | ||
+ | |||
+ | ==Manhattan== | ||
+ | [http://www.manhattan-products.com/en-US/products/5605-smart-card-reader Manhattan] | ||
+ | |||
+ | Lo vende (per esempio) [http://www.icintracom.biz/lettore-di-smart-card-usb-esterno-1822.html icintracom]: funziona. | ||
+ | |||
+ | Sembra lo stesso lettore che vende anche [http://www.digicom.it/digisit/prodotti.nsf/ITProdottiIDX/SmartCardReader Digicom]. Visto da Trony a 17,99 euro (settembre 2012). Logo Linux sull'esterno della scatola. | ||
+ | |||
+ | ==Hamlet== | ||
+ | [http://www.hamletcom.com/products/huscr2.aspx Hamlet]: funziona. | ||
+ | |||
+ | ==Gemalto== | ||
+ | |||
+ | Lettori di smartcard [http://www.gemalto.com/products/pc_link_readers/ IDBridge CT family]. Secondo [http://www.programmiamoinsieme.eu/blog/2012/02/11/firma-digitale-con-smart-card-cns-su-linux/ Ludo] funzionano. | ||
+ | |||
+ | Dal [http://support.gemalto.com/index.php?id=download_driver_pc-link_readers sito web] di Gemalto, sia per i lettori [http://support.gemalto.com/index.php?id=pc_usb_sl PC USB SL], sia per quelli [http://support.gemalto.com/index.php?id=pc_usb_tr_and_pc_twin PC USB TR e PC TWIN] si hanno buone notizie per quanto riguarda Linux: | ||
+ | |||
+ | ''«This USB CCID device is supported by the '''libccid''' library. This library provides a PC/SC IFD handler implementation for the USB smart card interface devices compliant to the CCID protocol. Gemalto '''is actively involved''' in the development and improvement of this library. This library is packaged and distributed by most of the Linux distributions. TIPS: Use the package manager from your specific Linux distribution to search for the libccid library and install it. The libccid source code is available on the following web site: [http://pcsclite.alioth.debian.org/ccid.html Alioth].»'' | ||
− | + | ==ASEDrive - Athena== | |
− | + | Athena produce non soltanto le smartcard, ma anche i lettori [https://www.partnerdata.it/athena/ ASEDrive]: dovrebbero funzionare. | |
− | + | =Firma digitale FD= | |
+ | Supponendo di avere fatto bene tutte le configurazioni utili per i lettori e anche per la smartcard in nostro possesso, possiamo provare a firmare con un software di firma. Ce ne sono pochi di Liberi (o Open Source), molti sono a pagamento, alcuni sono non-Liberi ma gratuiti. | ||
− | = | + | ==Aruba Sign== |
+ | Il miglior software multi-piattaforma disponibile è probabilmente [https://www.pec.it/download-software-driver.aspx Aruba Sign]. | ||
+ | Prodotto da Aruba, gratuito ma non libero, è scritto in Java e disponibile per Windows, MacOS X e Linux. | ||
+ | Permette di firmare documenti, apporre marcature temporali ed ulteriori operazioni come la modifica del PIN di una CNS. | ||
+ | Affinché riconosca correttamente il proprio lettore è necessario inserire il percorso del driver nella sezione Opzioni e Parametri, es. su Arch Linux con lettore Bit4id: /usr/lib/bit4id/libbit4xpki.so | ||
− | + | ==Marcatura temporale - Timestamp== | |
− | + | Una marcatura temporale si può apporre con File Protector. Quello di marcatura temporale è un servizio che viene fornito, tramite un server, da una [http://en.wikipedia.org/wiki/Trusted_timestamping#Trusted_.28digital.29_timestamping TSA] Time Stamping Authority (per dirla in modo grossolano un server terzo firma col suo certificato l'[http://it.wikipedia.org/wiki/Secure_Hash_Algorithm impronta] del nostro file dopo averci aggiunto data e ora). | |
− | + | Le marcature devono essere acquistate (per esempio su [http://www.pec.it/MarcheTemporali.aspx pec.it]). | |
− | + | === FreeSigner === | |
− | + | Basato su [http://j4sign.sourceforge.net/ j4sign], è un programma che permette di effettuare e verificare firme digitali. E' multipiattaforma ed è possibile scaricarlo a [https://de.osdn.net/projects/sfnet_j4sign/downloads/freesigner/freesigner-0.3.4/freesigner-0.3.4-setup.jar questo indirizzo]. Supporta i più recenti standard normativi di firma CADeS e la maggior parte delle smartcard compatibili con lo standard PKCS#11 e Linux. | |
+ | |||
+ | =Tessera Sanitaria= | ||
La cosiddetta [http://www.sistemats.it/ Tessera Sanitaria] non è altro che una Carta Nazionale dei Servizi. | La cosiddetta [http://www.sistemats.it/ Tessera Sanitaria] non è altro che una Carta Nazionale dei Servizi. | ||
− | ===Regione | + | Le prime tessere sanitarie non avevano il microchip, servivano soltanto perché funzionavano da codice fiscale (che poteva essere letto in automatico dal codice a barre stampato su di esse). |
+ | |||
+ | === Tipologie === | ||
+ | |||
+ | [[File:Tessera_sanitaria.jpeg]] | ||
+ | |||
+ | {| class="wikitable" | ||
+ | | Sigla | ||
+ | | Tipologia Carta | ||
+ | | Linux | ||
+ | | Driver | ||
+ | |- | ||
+ | | AT 2012 | ||
+ | | Siemens / ATOS | ||
+ | | OK | ||
+ | | OpenSC, [https://www.regione.toscana.it/-/area-download Proprietario] | ||
+ | |- | ||
+ | | AC 2013, 2014, 2018 | ||
+ | | Actalis | ||
+ | | OK | ||
+ | | OpenSC, [https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso Proprietario] | ||
+ | |- | ||
+ | | ACx 2021 | ||
+ | | Actalis | ||
+ | | OK | ||
+ | | [https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso Proprietario] | ||
+ | |- | ||
+ | | ACe 2021 | ||
+ | | Actalis | ||
+ | | OK | ||
+ | | [https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso Proprietario] | ||
+ | |- | ||
+ | | OT 2015, 2016 | ||
+ | | OBERTHUR | ||
+ | | OK | ||
+ | | OpsnSC, [https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso Proprietario] | ||
+ | |- | ||
+ | | ID 2019 | ||
+ | | IDEMIA | ||
+ | | OK | ||
+ | | [https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso Proprietario] | ||
+ | |- | ||
+ | | ST 2021 | ||
+ | | STMICROELECTRONICS | ||
+ | | OK | ||
+ | | [https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso Proprietario] | ||
+ | |} | ||
+ | |||
+ | Nel caso la vostra carta non fosse supportata da questi driver provate: [https://sistemats4.sanita.finanze.it/CardDriverDownloaderWeb/pages/home.xhtml Ricerca], [https://www.cartaidentita.interno.gov.it/fornitori-di-servizi/documentazione-middleware-cie/ CIE], [https://www.firma.infocert.it/installazione/ Infocert]. | ||
+ | |||
+ | ==Portali Regionali== | ||
+ | |||
+ | * Tessera Sanitaria e Carta Provinciale dei Servizi della [http://www.provincia.bz.it/cartaservizi/ Provincia Autonoma di Bolzano] | ||
+ | |||
+ | * La [http://www.regione.calabria.it/sanita/index.php?option=com_content&task=view&id=405&Itemid=100 Regione Calabria] | ||
+ | |||
+ | * Carta dei Servizi del [http://cartaservizi.regione.fvg.it/ Friuli Venezia Giulia] | ||
+ | |||
+ | * Carta regionale dei Servizi [http://www.regione.liguria.it/argomenti/diritti-e-doveri-del-cittadino/carta-regionale-dei-servizi.html Regione Liguria] | ||
+ | |||
+ | * Carta Regionale dei Servizi [http://www.crs.regione.lombardia.it/ Regione Lombardia] | ||
+ | |||
+ | * Tessera Sanitaria [http://www.regione.toscana.it/cartasanitaria Regione Toscana] [http://www.regione.toscana.it/servizi-online/servizi-sicuri/carta-sanitaria-elettronica/guida-all-uso Guida all'uso] Lettore di smartcard a [https://www.regione.toscana.it/servizi-online/servizi-sicuri/carta-sanitaria-elettronica/lettore-smart-card 4,20 euro] | ||
+ | |||
+ | * Tessera Sanitaria [https://tscns.regione.sardegna.it/articoli/linux Regione Sardegna] | ||
+ | |||
+ | * Tessera Sanitaria e Carta Provinciale dei Servizi [http://www.cartaservizi.provincia.tn.it/ Provincia Autonoma di Trento]. | ||
+ | |||
+ | =Carta d'Identità Elettronica = | ||
+ | |||
+ | La CIE è una CNS identica alle altre. I driver proprietari per le varie piattaforme sono scaricabili [https://www.cartaidentita.interno.gov.it/fornitori-di-servizi/documentazione-middleware-cie/ qui]. | ||
+ | |||
+ | = Installazione SmartCard su Linux = | ||
+ | == Distribuzioni == | ||
+ | === Debian/Ubuntu/Mint === | ||
+ | Installare i seguenti pacchetti | ||
+ | # apt install pcsc-tools pcscd opensc opensc-pkcs11 | ||
+ | |||
+ | Il demone <code>pcscd</code> si avvierà automaticamente. | ||
+ | |||
+ | Le nuove carte ACx 2021 non sono ancora supportate da OpenSC, per poterle utilizzare occorrerà scaricare ed installare manualmente il pacchetto | ||
+ | * [https://swdownload1.agenziaentrate.gov.it/pub/sanita/libbit4xpki-idemia-amd64.1.4.10-622.deb libbit4xpki-idemia-amd64.1.4.10-622.deb] | ||
+ | |||
+ | === Arch Linux === | ||
+ | Installare i seguenti pacchetti, utili solo per smartcard del produttore Athena (libaseCnsP11) | ||
+ | # pacman -Sy ccid pcsclite pcsc-tools opensc | ||
+ | |||
+ | Abilitare e avviare pcscd | ||
+ | # systemctl enable pcscd.socket | ||
+ | # systemctl start pcscd.socket | ||
+ | |||
+ | Alcune recenti tessere sanitarie non sono ancora supportate da OpenSC, sarà necessario scaricare e compilare manualmente il pacchetto | ||
+ | * [https://spookyh.altervista.org/altro/bit4id-xpki.tar.gz bit4id-xpki.tar.gz]. | ||
+ | |||
+ | === NixOS === | ||
+ | Aggiungere i seguenti pacchetti al file <code>/etc/nixos/configuration.nix</code> nella sezione ''environment.systemPackages = with pkgs;'' | ||
+ | pcsclite opensc openssl pcsctools ccid usbutils acsccid | ||
+ | |||
+ | Abilitare demone per la gestione delle smartcard aggiungendo la riga seguente al <code>configuration.nix</code> | ||
+ | services.pcscd.enable = true; | ||
+ | |||
+ | Effettuare il rebuild del sistema e riavviare | ||
+ | # nixos-rebuild switch | ||
+ | |||
+ | Alcune recenti tessere sanitarie non sono ancora supportate da OpenSC, per farlo create il file <code>[https://github.com/spookyh83/nixpkgs/blob/spookix/pkgs/misc/drivers/bit4id-xpki/default.nix /etc/nixos/cns_ita_new.nix]</code> | ||
+ | { lib, stdenv, fetchurl, dpkg, pcsclite, opensc, pcsctools, ccid }: | ||
+ | stdenv.mkDerivation rec { | ||
+ | name = "bit4xpki"; | ||
+ | src = fetchurl { | ||
+ | url = "https://swdownload1.agenziaentrate.gov.it/pub/sanita/libbit4xpki-idemia-amd64.1.4.10-622.deb"; | ||
+ | sha256 = "1mq6xng97d5s94h84p1clsnh56g245xcr1pbjm3ryjf43w7jlqlx"; | ||
+ | }; | ||
+ | unpackPhase = "dpkg-deb -x $src $out"; | ||
+ | meta = with lib; { | ||
+ | description = "Libraries for the XPKI client used by the Italian CNS."; | ||
+ | homepage = "https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso"; | ||
+ | platforms = [ "x86_64-linux" ]; | ||
+ | license = licenses.unfree; | ||
+ | }; | ||
+ | buildInputs = [ dpkg ]; | ||
+ | shellHook = '' | ||
+ | export PATH="${dpkg}/bin:$PATH" | ||
+ | ''; | ||
+ | } | ||
+ | |||
+ | Aggiungere una riga tra le import di <code>/etc/nixos/configuration.nix</code> | ||
+ | { | ||
+ | imports = | ||
+ | [ # Include the results of the hardware scan. | ||
+ | ./hardware-configuration.nix | ||
+ | ./bit4id.nix #'''File nella directory /etc/nixos per caricare il driver | ||
+ | ]; | ||
+ | |||
+ | Creare il file <code>/etc/nixos/bit4id.nix</code> | ||
+ | { config, pkgs, ... }: | ||
+ | let | ||
+ | bit4id = pkgs.callPackage /etc/nixos/cns_ita_new.nix {}; | ||
+ | in | ||
+ | { | ||
+ | environment.systemPackages = [ bit4id ]; | ||
+ | } | ||
+ | |||
+ | Effettuare il rebuild del sistema | ||
+ | # nixos-rebuild switch | ||
+ | |||
+ | == Testare il funzionamento della carta == | ||
+ | # pcsc_scan | ||
+ | |||
+ | Dovrebbe produrre un output di questo genere, contenente alcune informazioni sulla CNS, tra cui dovreste riconoscere le vostre generalità. | ||
+ | |||
+ | PC/SC device scanner | ||
+ | V 1.4.22 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr> | ||
+ | Compiled with PC/SC lite version: 1.8.10 | ||
+ | Using reader plug'n play mechanism | ||
+ | Scanning present readers... | ||
+ | 0: ACS ACR38U-CCID 00 00 | ||
+ | Mon May 5 22:52:40 2014 | ||
+ | Reader 0: ACS ACR38U-CCID 00 00 | ||
+ | Card state: Card inserted, | ||
+ | ATR: 3B DF 18 00 81 31 FE 7D 00 6B 15 0C 01 81 01 11 01 43 4E 53 10 31 80 E8 | ||
+ | |||
+ | == Localizzare la libreria == | ||
+ | Al termine dell'installazione, è necessario individuare la libreria <code>opensc-pkcs11.so</code>, che serve per configurare il browser e utilizzare la tessera con esso. | ||
+ | |||
+ | Generalmente può essere trovata in uno dei seguenti percorsi: | ||
+ | * ''/usr/lib/opensc-pkcs11.so'' | ||
+ | * ''/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so'' | ||
+ | |||
+ | Oppure qua per i nuovi driver proprietari aggiornati al 2021 | ||
+ | * ''/usr/lib/bit4id/libbit4xpki.so'' | ||
+ | |||
+ | Se non si riesce a localizzarla, si può provare a cercarla col seguente comando: | ||
+ | $ find / -name "opensc-pkcs11.so" 2> /dev/null | ||
+ | |||
+ | = Applicazioni = | ||
+ | Molte applicazioni possono usare il certificato della CNS per autenticarvi, come il browser o ssh. | ||
+ | == Browser == | ||
+ | '''Attenzione:''' collegare sempre il lettore '''prima''' di aprire il browser! | ||
+ | |||
+ | Dopo la configurazione, è possibile verificare il funzionamento collegandosi alla [https://ca.arubapec.it/crtest/showcert.php pagina test di Aruba] ed inserendo il PIN. | ||
+ | |||
+ | === Firefox === | ||
+ | # Collegare il lettore di smartcard | ||
+ | # Avviare Firefox | ||
+ | # Inserire la tessera sanitaria nel lettore | ||
+ | # In Firefox, selezionare ''Modifica'' → ''Preferenze'' → ''Privacy e sicurezza'' → ''Dispositivi di sicurezza'' | ||
+ | # Cliccare su ''Carica'', inserire una descrizione (es: ''TesseraSanitaria'') ed il percorso corretto del file <code>opensc-pkcs11.so</code> o <code>libbit4xpki.so</code>, come individuati precedentemente. | ||
− | + | === Chrome/Chromium === | |
+ | Chiudere il browser, quindi aprire un terminale e lanciare i seguenti comandi, modificando opportunamente il percorso del file <code>opensc-pkcs11.so</code>, come individuato precedentemente. | ||
− | + | $ cd ~ | |
+ | $ modutil -dbdir sql:.pki/nssdb/ -add "OpenSC" -libfile /usr/lib/opensc-pkcs11.so | ||
− | |||
− | + | Nel caso dei driver del 2021 sarà invece necessario usare quest'altro comando | |
− | + | $ cd ~ | |
+ | $ modutil -dbdir sql:.pki/nssdb/ -add "CNS2021" -libfile /usr/lib/bit4id/libbit4xpki.so | ||
− | === | + | === SSH === |
+ | Estrarre la chiave pubblica (il percorso della libreria dipende dalla distribuzione): | ||
+ | ssh-keygen -D /usr/lib/i386-linux-gnu/opensc-pkcs11.so | ||
+ | Oppure, se si usa una scheda con l'altro tipo di chip | ||
+ | ssh-keygen -D /usr/lib/bit4id/libbit4xpki.so | ||
− | + | Dopo aver copiato la chiave pubblica sul sistema remoto (ad es. in ~/.ssh/authorized_keys), è possibile collegarsi fornendo il PIN quando richiesto: | |
+ | ssh -I /usr/lib/i386linuxgnu/opensc-pkcs11.so ''indirizzo-del-server'' | ||
+ | Oppure | ||
+ | ssh -I /usr/lib/bit4id/libbit4xpki.so ''indirizzo-del-server'' | ||
− | = | + | = Utilità = |
+ | == Modificare PIN == | ||
+ | $ pkcs15-tool --change-pin | ||
− | + | [[Category:Howto]] |
Versione attuale delle 10:27, 12 mag 2023
Questa pagina ha lo scopo di fare chiarezza sul "mondo" delle smartcard con microchip crittografico, delle funzioni che tramite esse vengono veicolate e del loro utilizzo con Linux.
CNS
Una smartcard si definisce «Carta Nazionale dei Servizi» quando ha a bordo del suo microchip un certificato utile per l'autenticazione online, strutturato secondo quanto richiesto dalla legge italiana.
Anche la CIE «Carta d'Identità Elettronica», la «tessera sanitaria regionale» TS e le carte regionali dei servizi CRS sono a tutti gli effetti CNS.
Sono strumenti di riconoscimento online d'identità e possono essere utilizzate anche per Firma Digitale FD.
La smartcard è quindi l'oggetto fisico. Può contenere soltanto la funzionalità CNS, soltanto la funzionalità FD o entrambe, oppure nessuna (come nel caso delle tessere sanitarie con microchip appena giunte al cittadino e non ancora "attivate").
Per ulteriori approfondimenti è possibile consultare Strumenti di Cittadinanza digitale a cura di Giulia del GOLEM.
Produttori di smartcard
I produttori di smartcard (o meglio di microchip) dovrebbero rispettare lo standard pkcs#15, ma non sempre lo fanno. Per questo abbiamo bisogno di driver specifici (spesso binari e non-Liberi).
Athena
Smartcard fra le più diffuse (CRS Lombardia, TS Toscana, TS Sardegna, ArubaPEC), sono del produttore Athena è possibile scaricare i driver binari dal sito Aruba.
Incard
Alcune smartcard utilizzate in Italia (Camere di Commercio, Infocert, ArubaPEC) sono del produttore Incard. I driver di queste smartcard sembrano essere sviluppati da Bit4id e sono rilasciati gratuitamente, ma non-Liberi, in formato binario su Aruba.
Oberthur
Le smartcard Oberthur sono utilizzate per la firma digitale da ArubaPEC, molti ordini professionali emettono per i loro associati smartcard di questo produttore. Utilizzano il medesimo driver di Incard scaricabile su Aruba
Siemens
Molto usate in passato dalle Camere di Commercio e adesso dalla CRS ligure, le smartcard Siemens richiedono il software CardOS.
Vecchie smartcard
Un bell'elenco, storico, molto dettagliato, di microchip e dei relativi produttori si trova nella documentazione Infocert. Sysgillo, InCrypto, Siemens... le vecchie firme digitali delle Camere di Commercio.
Lettori di smartcard
Chi produce i lettori spesso rispetta lo standard pkcs#11, quindi i lettori più nuovi dovrebbero risultare compatibili con Linux.
I seguenti lettori di smartcard sono stati testati e funzionano con Linux
Bit4id
miniLector Piano di Bit4id: funziona.
Manhattan
Lo vende (per esempio) icintracom: funziona.
Sembra lo stesso lettore che vende anche Digicom. Visto da Trony a 17,99 euro (settembre 2012). Logo Linux sull'esterno della scatola.
Hamlet
Hamlet: funziona.
Gemalto
Lettori di smartcard IDBridge CT family. Secondo Ludo funzionano.
Dal sito web di Gemalto, sia per i lettori PC USB SL, sia per quelli PC USB TR e PC TWIN si hanno buone notizie per quanto riguarda Linux:
«This USB CCID device is supported by the libccid library. This library provides a PC/SC IFD handler implementation for the USB smart card interface devices compliant to the CCID protocol. Gemalto is actively involved in the development and improvement of this library. This library is packaged and distributed by most of the Linux distributions. TIPS: Use the package manager from your specific Linux distribution to search for the libccid library and install it. The libccid source code is available on the following web site: Alioth.»
ASEDrive - Athena
Athena produce non soltanto le smartcard, ma anche i lettori ASEDrive: dovrebbero funzionare.
Firma digitale FD
Supponendo di avere fatto bene tutte le configurazioni utili per i lettori e anche per la smartcard in nostro possesso, possiamo provare a firmare con un software di firma. Ce ne sono pochi di Liberi (o Open Source), molti sono a pagamento, alcuni sono non-Liberi ma gratuiti.
Aruba Sign
Il miglior software multi-piattaforma disponibile è probabilmente Aruba Sign. Prodotto da Aruba, gratuito ma non libero, è scritto in Java e disponibile per Windows, MacOS X e Linux. Permette di firmare documenti, apporre marcature temporali ed ulteriori operazioni come la modifica del PIN di una CNS. Affinché riconosca correttamente il proprio lettore è necessario inserire il percorso del driver nella sezione Opzioni e Parametri, es. su Arch Linux con lettore Bit4id: /usr/lib/bit4id/libbit4xpki.so
Marcatura temporale - Timestamp
Una marcatura temporale si può apporre con File Protector. Quello di marcatura temporale è un servizio che viene fornito, tramite un server, da una TSA Time Stamping Authority (per dirla in modo grossolano un server terzo firma col suo certificato l'impronta del nostro file dopo averci aggiunto data e ora).
Le marcature devono essere acquistate (per esempio su pec.it).
FreeSigner
Basato su j4sign, è un programma che permette di effettuare e verificare firme digitali. E' multipiattaforma ed è possibile scaricarlo a questo indirizzo. Supporta i più recenti standard normativi di firma CADeS e la maggior parte delle smartcard compatibili con lo standard PKCS#11 e Linux.
Tessera Sanitaria
La cosiddetta Tessera Sanitaria non è altro che una Carta Nazionale dei Servizi.
Le prime tessere sanitarie non avevano il microchip, servivano soltanto perché funzionavano da codice fiscale (che poteva essere letto in automatico dal codice a barre stampato su di esse).
Tipologie
Sigla | Tipologia Carta | Linux | Driver |
AT 2012 | Siemens / ATOS | OK | OpenSC, Proprietario |
AC 2013, 2014, 2018 | Actalis | OK | OpenSC, Proprietario |
ACx 2021 | Actalis | OK | Proprietario |
ACe 2021 | Actalis | OK | Proprietario |
OT 2015, 2016 | OBERTHUR | OK | OpsnSC, Proprietario |
ID 2019 | IDEMIA | OK | Proprietario |
ST 2021 | STMICROELECTRONICS | OK | Proprietario |
Nel caso la vostra carta non fosse supportata da questi driver provate: Ricerca, CIE, Infocert.
Portali Regionali
- Tessera Sanitaria e Carta Provinciale dei Servizi della Provincia Autonoma di Bolzano
- Carta dei Servizi del Friuli Venezia Giulia
- Carta regionale dei Servizi Regione Liguria
- Carta Regionale dei Servizi Regione Lombardia
- Tessera Sanitaria Regione Toscana Guida all'uso Lettore di smartcard a 4,20 euro
- Tessera Sanitaria Regione Sardegna
- Tessera Sanitaria e Carta Provinciale dei Servizi Provincia Autonoma di Trento.
Carta d'Identità Elettronica
La CIE è una CNS identica alle altre. I driver proprietari per le varie piattaforme sono scaricabili qui.
Installazione SmartCard su Linux
Distribuzioni
Debian/Ubuntu/Mint
Installare i seguenti pacchetti
# apt install pcsc-tools pcscd opensc opensc-pkcs11
Il demone pcscd
si avvierà automaticamente.
Le nuove carte ACx 2021 non sono ancora supportate da OpenSC, per poterle utilizzare occorrerà scaricare ed installare manualmente il pacchetto
Arch Linux
Installare i seguenti pacchetti, utili solo per smartcard del produttore Athena (libaseCnsP11)
# pacman -Sy ccid pcsclite pcsc-tools opensc
Abilitare e avviare pcscd
# systemctl enable pcscd.socket # systemctl start pcscd.socket
Alcune recenti tessere sanitarie non sono ancora supportate da OpenSC, sarà necessario scaricare e compilare manualmente il pacchetto
NixOS
Aggiungere i seguenti pacchetti al file /etc/nixos/configuration.nix
nella sezione environment.systemPackages = with pkgs;
pcsclite opensc openssl pcsctools ccid usbutils acsccid
Abilitare demone per la gestione delle smartcard aggiungendo la riga seguente al configuration.nix
services.pcscd.enable = true;
Effettuare il rebuild del sistema e riavviare
# nixos-rebuild switch
Alcune recenti tessere sanitarie non sono ancora supportate da OpenSC, per farlo create il file /etc/nixos/cns_ita_new.nix
{ lib, stdenv, fetchurl, dpkg, pcsclite, opensc, pcsctools, ccid }: stdenv.mkDerivation rec { name = "bit4xpki"; src = fetchurl { url = "https://swdownload1.agenziaentrate.gov.it/pub/sanita/libbit4xpki-idemia-amd64.1.4.10-622.deb"; sha256 = "1mq6xng97d5s94h84p1clsnh56g245xcr1pbjm3ryjf43w7jlqlx"; }; unpackPhase = "dpkg-deb -x $src $out"; meta = with lib; { description = "Libraries for the XPKI client used by the Italian CNS."; homepage = "https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso"; platforms = [ "x86_64-linux" ]; license = licenses.unfree; }; buildInputs = [ dpkg ]; shellHook = export PATH="${dpkg}/bin:$PATH" ; }
Aggiungere una riga tra le import di /etc/nixos/configuration.nix
{ imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ./bit4id.nix #File nella directory /etc/nixos per caricare il driver ];
Creare il file /etc/nixos/bit4id.nix
{ config, pkgs, ... }: let bit4id = pkgs.callPackage /etc/nixos/cns_ita_new.nix {}; in { environment.systemPackages = [ bit4id ]; }
Effettuare il rebuild del sistema
# nixos-rebuild switch
Testare il funzionamento della carta
# pcsc_scan
Dovrebbe produrre un output di questo genere, contenente alcune informazioni sulla CNS, tra cui dovreste riconoscere le vostre generalità.
PC/SC device scanner V 1.4.22 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr> Compiled with PC/SC lite version: 1.8.10 Using reader plug'n play mechanism Scanning present readers... 0: ACS ACR38U-CCID 00 00 Mon May 5 22:52:40 2014 Reader 0: ACS ACR38U-CCID 00 00 Card state: Card inserted, ATR: 3B DF 18 00 81 31 FE 7D 00 6B 15 0C 01 81 01 11 01 43 4E 53 10 31 80 E8
Localizzare la libreria
Al termine dell'installazione, è necessario individuare la libreria opensc-pkcs11.so
, che serve per configurare il browser e utilizzare la tessera con esso.
Generalmente può essere trovata in uno dei seguenti percorsi:
- /usr/lib/opensc-pkcs11.so
- /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
Oppure qua per i nuovi driver proprietari aggiornati al 2021
- /usr/lib/bit4id/libbit4xpki.so
Se non si riesce a localizzarla, si può provare a cercarla col seguente comando:
$ find / -name "opensc-pkcs11.so" 2> /dev/null
Applicazioni
Molte applicazioni possono usare il certificato della CNS per autenticarvi, come il browser o ssh.
Browser
Attenzione: collegare sempre il lettore prima di aprire il browser!
Dopo la configurazione, è possibile verificare il funzionamento collegandosi alla pagina test di Aruba ed inserendo il PIN.
Firefox
- Collegare il lettore di smartcard
- Avviare Firefox
- Inserire la tessera sanitaria nel lettore
- In Firefox, selezionare Modifica → Preferenze → Privacy e sicurezza → Dispositivi di sicurezza
- Cliccare su Carica, inserire una descrizione (es: TesseraSanitaria) ed il percorso corretto del file
opensc-pkcs11.so
olibbit4xpki.so
, come individuati precedentemente.
Chrome/Chromium
Chiudere il browser, quindi aprire un terminale e lanciare i seguenti comandi, modificando opportunamente il percorso del file opensc-pkcs11.so
, come individuato precedentemente.
$ cd ~ $ modutil -dbdir sql:.pki/nssdb/ -add "OpenSC" -libfile /usr/lib/opensc-pkcs11.so
Nel caso dei driver del 2021 sarà invece necessario usare quest'altro comando
$ cd ~ $ modutil -dbdir sql:.pki/nssdb/ -add "CNS2021" -libfile /usr/lib/bit4id/libbit4xpki.so
SSH
Estrarre la chiave pubblica (il percorso della libreria dipende dalla distribuzione):
ssh-keygen -D /usr/lib/i386-linux-gnu/opensc-pkcs11.so
Oppure, se si usa una scheda con l'altro tipo di chip
ssh-keygen -D /usr/lib/bit4id/libbit4xpki.so
Dopo aver copiato la chiave pubblica sul sistema remoto (ad es. in ~/.ssh/authorized_keys), è possibile collegarsi fornendo il PIN quando richiesto:
ssh -I /usr/lib/i386linuxgnu/opensc-pkcs11.so indirizzo-del-server
Oppure
ssh -I /usr/lib/bit4id/libbit4xpki.so indirizzo-del-server
Utilità
Modificare PIN
$ pkcs15-tool --change-pin