[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

miniguida per nuove CNS



Ciao a tutti,

avendo poco tempo mi sono preso appunti man mano che procedevo e ho creato questa
miniguida che potrebbe essere utile anche ad altri.
Ho cercato nella documentazione per capire come vedere se la CNS viene riconosciuta
ancora prima di mettere il PIN, quanti tentativi sono ancora a disposizione, ...


Ho cercato di raccogliere qui la mia esperienza per far funzionare la CNS come
metodo di autenticazione utilizzando i driver liberi con la patch di 3v1n0.

Premetto che non sono un esperto nel settore e quindi ognuno esegue a suo rischio e
pericolo quanto qui indicato (in pratica se si sbaglia il PIN tre volte viene bloccato
e per sbloccarlo bisogna usare il PUK. Però se i driver non funzionano correttamente
potrebbe essere che il PIN corretto non venga riconosciuto e quindi potrebbe bloccarsi.
Inoltre se si blocca il PUK, per errori multipli, se non ho capito male, bisogna
rivolgersi a chi emette la CNS per farsela riabilitare. Inoltre non so se ci siano
operazioni che potrebbero "danneggiare" la CNS).

Quanto qui indicato funziona con Debian testing (Bookworm), ma non con la stable
(Bullseye) e quindi presuppongo non funzioni anche per le precedenti stable, mentre
presuppongo funzioni per unstable (Sid).
Purtroppo non si può portare quanto ottenuto con testing su stable poiché è necessaria
una versione di libc più recente. Una soluzione può essere quella di crearsi una live
con Debian testing o installare Debian testing su un PC o, in dual boot, installare
Debian testing sul PC.
Per stable ho visto che cambia la libreria libssl 1.1.1, in testing c'è una versione
leggermente superiore e poi cambiano le libc e di sicuro il compilatore. Appena avrò
tempo proverò a fare una prova per vedere se è possibile installare la libreria
libssl 1.1.1 presente in testing su stable e rifare la compilazione con questa, magari
basta questa piccola modifica... Se qualcuno ha tempo potrebbe anche analizzare come mai
il compilato per stable non riconosce la carta per l'autenticazione.

Infine con questa procedura su Debian testing dovrebbero funzionare per le seguenti CNS:
AC 2013
AC 2014
AC 2018
ACx 2021
ACe 2021
OT 2015
OT 2016
OT 2015
ID 2019

Io ho testato per ACx 2021 e AC 2014

Non ho idea se funziona anche per queste:
ST 2021
ST 2022

Notare che la carta può essere usata per diversi scopi ed è possibile che i driver
funzionino per alcuni, ma non per altri. Qui ho soltanto verificato la possibilità di
usare il servizio di autenticazione tramite PIN.

ATTENZIONE: se rispondete a questa mail indicando i risultati ai comandi con la vostra
CNS eliminate tutte le parti identificative della CNS usata e del proprietario o per lo
meno tutte quelle parti non necessarie a far capire il problema

*******************************
A) compilazione alla debian way
*******************************

A.1) installare le dipendenze necessarie per la ricompilazione
# apt build-dep opensc

A.2) creazione directory per la compilazione
$ mkdir ~/src
$ cd /src
$ apt source opensc

purtroppo le modifiche fatte da 3v1n0 sono su sorgenti in
lavorazione e non mi ci sono messo a cercare di portarli
alla versione presente in Debian (copiando semplicemente i
file modificati non funziona).

A.3) estrazione della versione creata da 3v1n0
$ git clone https://github.com/3v1n0/OpenSC.git
$ cd OpenSC

A.4) debianizzazione della versione di 3v1n0 (non sono sicuro
   al 100% che questa operazione sia sicura/funzionante)
$ cp -R ../opensc-0.22.0/debian .

A.5) compilazione alla Debian way
$ fakeroot debian/rules binary


***************************************
B) installazione dei pacchetti prodotti
***************************************

# cd ~/src
# apt install ./opensc_0.22.0-2_amd64.deb ./opensc-pkcs11_0.22.0-2_amd64.deb

notare che è presente una versione successiva solo binaria in testing, la 0.22.0-2+b1
questo vuol dire che al prossimo upgrade quanto qui installato verrà sostituito

se si verifica che la CNS funziona correttamente, con i passi successivi, allora è
possibile impedire l'upgrade dei due pacchetti con il comando:
# apt-mark hold opensc opensc-pkcs11

per riabilitare l'upgrade è sufficiente dare il seguente:
# apt-mark unhold opensc opensc-pkcs11

*******************
C) test di verifica
*******************

Ho usato questi test per capire eventuali problemi a che livello si pongano. Qui
riporto solo quelli usati per poi effettuare l'autenticazione con la carta.

C.1) inserire il lettore e verificare che lo riconosca
$ opensc-tool --list-readers -v
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    No              ACS ACR38U 00 00

Questo indica che il lettore è stato riconosciuto, se non viene riconosciuto si
dovrebbe avere un errore del tipo:
No smart card readers found.

C.2) inserire la tessera nel lettore e verificare che venga vista
$ opensc-tool --list-readers -v
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    Yes             ACS ACR38U 00 00
     [...cut...] CNS card 

C.3) ulteriore verifica
$ opensc-tool -n
Using reader with a card: ACS ACR38U [...]
CNS card

C.4) verificare che i driver installati siano funzionanti per autenticarsi con la CNS
$ pkcs15-tool --list-pins -v
Using reader with a card: ACS ACR38U 00 00
Connecting to card in reader ACS ACR38U 00 00...
[...]
Using card driver Italian CNS.
Trying to find a PKCS#15 compatible card...
Found NOME COGNOME!
Card has 0 Authentication object(s).

se esce così (come esce su stable), allora vuol dire che i driver non sono funzionanti.

$ pkcs15-tool --list-pins
Using reader with a card: ACS ACR38U 00 00
PIN [PIN CNS1]
	[...]

PIN [PUK CNS1]
	[...]

Se invece esce così (una sezione per il PIN e una per il PUK) vuol dire che i driver
sono funzionanti e la CNS può essere usata per autenticarsi.


***********************************************************************
D) verifica che il PIN non sia bloccato e se è bloccato come sbloccarlo
***********************************************************************
$ pkcs15-tool --list-pins
PIN [PIN CNS1]
	[...]
	Tries left     : 0

PIN [PUK CNS1]
	[...]
	Tries left     : 0

Notare che qui dovrebbero essere indicati anche i tentativi restanti sia per il PIN che
per il PUK, ma a me viene visualizzato 0... e io interpreto come se avessi esaurito
tutti i tentativi, mentre penso debba essere visualizzato 3.
In rete ho trovato che "This should show tries-left for each PIN. tries-left : 0 means
pin is blocked.", ma a me visualizza 0 e la carta non è bloccata, ma funzionante.
Notare che se la carta è bloccata e si cerca di autenticarsi ad un sito web viene
richiesto il PIN, non viene permesso l'ingresso, ma non viene visualizzato il motivo,
cioè non è indicato esplicitamente che il PIN è bloccato (così era successo a me tempo fa).

Per avere il messaggio che indica che il PIN è bloccato, visto che con il comando
precedente almeno a me non ritorna un risultato corretto penso bisogni effettuare
un'operazione a riga di comando, ad esempio eseguire un test di inserimento PIN o firmare
un documento (richiede il PIN), ... e passare sempre -v come parametro. Una volta inserito
il PIN si dovrebbe avere il messaggio di errore che il PIN è bloccato.

Per sbloccarlo (non l'ho provato) dovrebbe essere il seguente comando:
pkcs15-tool --unblock-pin --puk $PUK --new-pin $NEW_PIN

Dove $PUK è il PUK della CNS e $NEW_PIN è il nuovo PIN che si vuole impostare.
ATTENZIONE: se si sbaglia il PUK (penso per 3 volte) la CNS viene bloccata e probabilmente
bisogna richiedere la riattivazione o la sostituzione.

Sarebbe interessante sapere se qualcuno che ha installato i driver del ministero o altri
ha lo stesso problema sul numero di tentativi rimasti. Se è così si può aprire un bug
report.

***********************
E) esecuzione auto-test
***********************
sono dei test di diagnostica, eseguiti con il comando pkcs11-tool, ci sono due tipi:

E.1) verifica che tutto funzioni con l'inserimento a caldo del lettore e CNS (usare anche
-v per ulteriori dettagli). Si può inserire togliere la tessera e mettere diverse tessere
(ad esempio la vecchia e la nuova)
$ pkcs11-tool --test-hotplug -v
[...]
token flags        : [...] user PIN locked
[...]

quindi c'è un errore, non intercetta il valore corretto per i tentativi rimanenti.
Lo stesso sulla tessera vecchia.

E.2) test vari, maggiori test si possono ottenere usando anche l'opzione --login o --pin
$ pkcs11-tool -tv
$ pkcs11-tool -tv --login

la seconda mi dice:
WARNING: user PIN locked

però mettendo il PIN poi fa i test ed è tutto ok

L'importante è che in fondo ci sia la scritta:
No errors

******************************************
F) configurare in Firefox l'uso dei driver
******************************************
Questa operazione deve essere fatta solo una volta:

* Aprire Firefox
* Modifica -> Impostazioni -> Privacy e sicurezza -> Dispositivi di sicurezza (è il
  bottone in fondo a destra della pagina)
* Carica
* come "Nome modulo" può essere messo quello che si vuole, ad esempio "CNS PKCS#11"
* come "Nome file modulo" bisogna indicare dove è la libreria:
  /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so


*************************************
G) autenticarsi con la CNS in Firefox
*************************************
andare su un sito web, es: https//www.inps.it e fare l'accesso con CNS.
Se non viene richiesto il PIN e viene visualizzato un errore, allora eseguire in
sequenza una delle seguenti e poi riprovare ad autenticarsi, se non funziona provare
con la successiva (questo problema di solito capita quando si sono appena installati
i driver o si è appena configurato Firefox ad usarli):

G.1) riavviare i servizi

# systemctl restart pcscd pcscd.socket

G.2) chiudere e riaprire il browser (tutte le istanze di Firefox)

G.3) riavviare la sessione o la macchina (questo non dovrebbe mai essere necessario)

Ciao
Davide

--
La mia privacy non è affar tuo
https://noyb.eu/it


Reply to: