SmartCard reader bit4id miniLECTOR AIR 3 NFC su Linux Ubuntu 20.04

Ciao,

ho preso questo lettore USB (SmartCard reader) https://www.bit4id.com/en/reader-minilector-air-3/ perché dalle specifiche sembra poter funzionare con Linux attraverso i pacchetti PCSC.
Quello che scrivono è che è compatibile con entrambi gli standard ISO 14443 tipo A e B.

Ad ogni modo non viene rilevato dal comando pcsc_scan, che procedura avete usato per farlo funzionare su Linux?

Ho installato vari pacchetti PCSC e avviato il servizio SystemD:

sudo apt install libpcsclite1 pcscd pcsc-tools opensc libnfc-bin
sudo systemctl start pcscd

Poi ho usato il comando pcsc_scan ma il lettore rimane sempre in lampeggiante e pcsc_scan rimane bloccato su:

Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader... /  

Ho provato col comando nfc-list e niente, dopo che inserisco il lettore, invoco il comando e mi dice:

nfc-list uses libnfc 1.7.1
No NFC device found.

Ho anche installato Cardpeek (sudo apt install cardpeek), ma non mi rileva lo smartcard reader.

Se lancio il comand lsusb | grep -i bit4id, allora vedo qualcosa:

Bus 003 Device 007: ID 25dd:3403 BIT4ID miniLector AIR NFC v3

Usando il comando dmesg vedo questo, abbastanza simile alle informazioni di lsusb:

[191318.858788] usb 3-3: new full-speed USB device number 11 using xhci_hcd
[191319.008052] usb 3-3: New USB device found, idVendor=25dd, idProduct=3403, bcdDevice= 3.53
[191319.008065] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[191319.008070] usb 3-3: Product: miniLector AIR NFC v3
[191319.008073] usb 3-3: Manufacturer: BIT4ID

Ho provato anche a cambiare varie porte USB, pensando potesse essere un problema di alimentazione.
Sempre lo stesso: il lettore ha il led lampeggiante e io non riesco a farlo rilevare.

Ho cambiato un paio di macchine Linux (sempre Ubuntu 20.04): stesso risultato.

  • prima di installare i vari pacchetti PCSC: il lettore quando viene connesso via USB tiene la luce arancione fissa
  • dopo aver installato i vari pacchetti PCSC e fatto partire il servizio pcscd: il lettore quando viene connesso via USB prima tiene la luce arancione fissa per qualche secondo, poi la luce comincia a lampeggiare

A quanto pare la luce arancione :orange_circle: è quella dell’alimentazione, ma perché funzioni veramente dovrei vedere quella blu :large_blue_circle: che indica la fase di lettura di una SmartCard.

Mi pare tutto molto strano perché leggo qui e su vari posti su internet che questa marca e modello sono largamente supportati su Linux. Come avete fatto voi?

Buongiorno!

Uso lo stesso lettore con lo stesso sistema Ubuntu 20.04.3 e funziona bene.

Se ricordo bene a memoria e’ stato sufficiente installare libccid e pcscd.

E’ necessario installare il driver del lettore, che si trova sul sito bit4id.

Per usare il lettore con la CIE e’ necessario anche il SW dal sito del ministero. Il gestore della CIE (middleware) funziona in ambiente Java, anche se questo nella documentazione non e’ riportato. Quindi occorre prima installare Java, poi installare SW CIE, infine caricare un modulo di interfaccia in FIrefox.

La prima installazione mi ha chiesto un paio di giorni causa informazioni mancanti, test di ipotesi varie ecc. La seconda, su un sistema Ubuntu pulito e appena installato, cinque minuti in tutto.

Ora non ho i materiali sottomano, ma se necessario piu’ tardi posso descrivere le diverse operazioni step-by-step.

1 Mi Piace

Grazie mille per le preziose informazioni! Si se per caso riesce a fare una guida step-by-step sarebbe oro :ok_hand:

Io nel frattempo sto raggiungendo la conclusione che ho una versione troppo vecchia di libccid (maggiori dettagli qui https://gist.github.com/amusarra/265d952d9f47db355d5182a8bada3121), ma sto usando le repository normali di Ubuntu. Per caso qualche pacchetto .deb aggiornato si trova da qualche parte?

Ho verificato che anche io sono su Ubuntu LTS 20.04.3:

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.3 LTS
Release:	20.04
Codename:	focal

Ma a quanto pare la versione di libccid che ho è 1.4.31, mentre servirebbe la versione 1.4.34:

$ apt policy libccid
libccid:
  Installed: 1.4.31-1
  Candidate: 1.4.31-1
  Version table:
 *** 1.4.31-1 500
        500 http://gb.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
        100 /var/lib/dpkg/status

Penso che il pacchetto .deb si possa scaricare da qui: Ubuntu – Details of package libccid in hirsute ma questo Ubuntu non è LTS quindi non vorrei aggiornare il mio sistema a 21.04 Hirsuite.

@GiP come hai fatto ad avere una versione aggiornata di libccid in Ubuntu 20.04.3? Hai per caso aggiunto altre repository su apt list?

Con “driver” intendi il middleware che hanno sul loro sito? Linux
Se ho capito corretto sembra una cosa utile che fornisce una GUI (interfaccia grafica) per leggere i principali metadati della smart card. In quella pagina in spagnolo, parlano di PKI e PKCS#11, ma presumo che tutta questa roba arrivi dal fatto che ho installato i pacchetti debian standard per PCSC.

(Grazie ancora a @amusarra che mi permetto di taggare, perché ha fornito un sacco di contesto utile a debuggare cosa sta succedendo sulla mia macchina, qui Raspberry Pi: Come installare il miniLector CIE su Ubuntu Server 20.04 LTS)

1 Mi Piace

Ciao Alessandro.
Allora, riguardo il driver libccid per la tua distribuzione di Ubuntu, potresti applicare la patch al driver esistente seguendo le indicazioni sul mio articolo Raspberry Pi: Come installare il miniLector CIE su Ubuntu Server 20.04 LTS per generare il file deb.

Come suggerisce @GiP nel tuo caso potresti scaricare i driver del lettore dal sito di Bit4Id. Nel mio caso non ho potuto utililzzare i driver della casa perché utilizzo il lettore su Raspberry Pi che ha un’architettura ARM e non x86; per questo motivo ho optato per la via di applicare la patch, che poi è stata inserita sulla versione 1.4.34 del driver libccid.

Per quanto riguarda l’uso della CIE come strumento di accesso ai vari portali della PA, dovresti installare il Middleware CIE. Su questo articolo Come ottenere una CIE funzionante su Fedora 34 puoi trovare tutti i dettagli. Per Ubuntu non cambia praticamente nulla.

Spero di esserti stato ancora d’aiuto con queste altre informazioni addizionali.

A presto.

1 Mi Piace

@tappoz
le istruzioni “canoniche” per l’installazione CIE su Linux/Ubuntu sono

  1. (se si vuole) verificare il repository /etc/apt/sources.list in modo che contenga puntatori a un repository internazionale che ha piu’ probabilita’ di contenere SW aggiornato all’ultimissima versione rispetto a un repository italiano. Ma e’ una questione quasi certamente superflua. In ogni caso, qui sono le informazioni. La modifica puo’ venire fatta sia con istruzioni Ubuntu sia editando il file /etc/apt/sources.list con $ sudo nano
    Repositories/Ubuntu - Community Help Wiki

  2. installare
    $ sudo apt-get install libccid
    $ sudo apt-get install pcscd

  3. installare il driver del lettore, da sito Bit4id. Cliccandoci sopra si apre “Ubuntu software”, conferma di procedere e in pochi secondi e’ installato
    bit4id-ccid-amd64.3.1.1-567.deb

  4. installare Java come base per il software middleware
    verifica se Java e’ installato con $ java -version
    se necessario procedere con $ sudo apt install default-jre

  5. scaricare il SW middleware da
    Middleware CIE - Carta di Identità Elettronica (CIE)

  6. installare il SW middleware cliccando sopra e attivando “Ubuntu software”

  7. nel caso di uso di Firefox, caricare il modulo di sicurezza /usr/local/lib/libcie-pkcs11.so come descritto dal manuale del Middleware al link interno.gov.it sopra riportato

A questo punto dovrebbe funzionare. Attenzione ad aprire Firefox solo DOPO che il lettore e’ stato collegato alla porta USB e la carta appoggiata sopra. Evidentemente FF “vede” i dispositivi collegati solo quando viene avviato e non in tempo reale. Ma questo e’ un dettaglio secondario.

1 Mi Piace

OK allora sono riuscito a fare qualche progresso:

Sono andato qui Ubuntu – Package Download Selection -- libccid_1.4.34-1_amd64.deb

Ho scaricato il pacchetto *.deb per Hirsute (anche se io sono su Ubuntu Focal 20.04): wget http://de.archive.ubuntu.com/ubuntu/pool/universe/c/ccid/libccid_1.4.34-1_amd64.deb

Per completezza questo è il contenuto e presumibilmente dove andranno a finire i file una volta installato (non sono praticissimo di pacchettizazione debian):

$ dpkg -c libccid_1.4.34-1_amd64.deb 

E poi questo:

$ dpkg -I libccid_1.4.34-1_amd64.deb

L’ho installato con: sudo dpkg -i libccid_1.4.34-1_amd64.deb

Poi pcsc_scan sembra essere un comando che sta in attesa che tu metta la carta sopra al lettore NFC, quindi ho inserito il lettore nella porta USB, poi ho fatto partire pcsc_scan, poi in base al fatto che mettevo o toglievo la mia CIE 3.0 vedevo sul terminale informazioni a riguardo sia del lettore SmartCard che della SmartCard vera e propria:

$ pcsc_scan 
Using reader plug'n play mechanism
Scanning present readers...
0: BIT4ID miniLector AIR NFC v3 [miniLector AIR DI v3 CLESS] 00 00
 
Thu Feb 10 20:51:28 2022
 Reader 0: BIT4ID miniLector AIR NFC v3 [miniLector AIR DI v3 CLESS] 00 00
  Event number: 0
  Card state: Card removed, 
 /   

Invece il comando nfc-list non rileva niente :frowning: qualcuno sa perché?

$ nfc-list 
nfc-list uses libnfc 1.7.1
No NFC device found.

Grazie ancora @GiP e @amusarra per gli ottimi spunti! Il passo successivo è il middleware per la CIE e l’autenticazione su INPS e AdE via Firefox!

Ho qualche domanda/dubbio aggiuntivi:

  • è possibile interagire con il lettore o la carta attraverso il protocollo PCSC/CCID, tipo mandando dei comandi e ricevendo risposte, qualcosa tipo ping/pong via TCP per Redis, o qualsiasi protocollo TCP?
  • esiste una interfaccia grafica GUI per interagire con la SmartCard o le cose su Linux avvengono solo programmaticamente tipo con qualche libreria Python o Node.js o simili?

Altra cosa: io ho la necessità di firmare digitalmente documenti con la SmartCard della Camera di Commercio (Carta Nazionale dei Servizi, software Firma4NG di Infocamere https://card.infocamere.it/infocard/FileDocManager/download?file=/firma4ng/Firma4NG_linux.tar.gz). E naivité mia pensavo che quella SmartCard fosse contactless, tipo la Tessera Sanitaria TS-CNS (che deve ancora arrivarmi, mi sono ristabilito in Italia dopo decenni passati all’estero). Così non sembra e questa CNS di Camera di Commercio non viene rilevata dal lettore NFC :frowning: :man_facepalming:

  • La carta CIE 3.0 può fare anche da firma digitale? Basta questo lettore NFC contactless? Come fare?
  • Se io volessi proprio usare un lettore SmartCard “vecchio” (non contactless), ce ne sarebbe uno che funziona su Linux? Quale?

Grazie ancora per tutto l’aiuto :pray:

So many questions…

Riguardo il SW di interfaccia della carta, i due siti principali di riferimento sono il progetto OpenSC

e il blog di Ludovic Rousseau, che e’ un po’ il “decano” del mondo delle Smart Card, in particolare su Linux

PIu’ in generale, cercherei di tenere la soluzione il piu’ semplice possibile. Puoi iniziare con i passi che avevo indicato nel post precedente, poi installare qualcosa un po’ alla volta dei SW suggeriti da L Rousseau. In alternativa, usa direttamente OpenSC. SI tratta in ogni caso di un insieme di conoscenze abbastanza ampio, se la smart card serve solo per la firma non c’e’ bisogno di un intero ambiente di sviluppo.

Piu’ o meno tutti i lettori a contatto funzionano su Linux. Io ne ho tre: ACS (probabilmente la maggior marca mondiale), Gemalto (europea) e Bit4Id (italiana) Mod. EVO. OpenSC li vede tutti e tre,

La nuova TS e’ sia a contatto sia NFC, ma ho notato differenze nel funzionamento a seconda del lettore usato e dei siti, a volte funziona, a volte no, a volte funziona a contatto e non NFC sullo stesso sito, a volte e’ il contrario.

La smartcard di firma Infocamere, a quanto ne so, e’ solo con il chip a contatto.

La CIE e’ solo NFC. I SW di gestione della CIE e della CNS sono diversi. Se vuoi divertirti con i driver e middleware delle diverse versioni della Tessera Sanitaria, ecco qui

https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso

1 Mi Piace

Puoi usare la CIE per firmare i documenti e il Middleware CIE contiene già una qualche utility per poterlo fare e in ogni caso ne esistono parecchi programmi e app per la firma tramite CIE.

Per un lettore di Smart Card non contactless, potresti usare Bit4id Minilector evo 2.0.

Ho utilizzato questo lettore per questo articolo Raspberry Pi – Un esempio di applicazione della TS-CNS di cui puoi vedere il tutorial qui Un sistema di accesso basato sulla Smart Card TS-CNS e Raspberry Pi - YouTube e il progetto software su GitHub https://github.com/amusarra/raspberry-pi-access-via-ts-cns

Una buona giornata.

OK riporto qui per completezza i passi mancanti per arrivare a usare la CIE 3.0 per loggarsi sui vari portali web tipo INPS (al posto dello SPID), oppure usarla per firmare digitalmente documenti (o decifrarli) via il softare Java CIE ID del “middleware CIE” che abbiamo installato.

Assicurarsi che il lettore di SmartCard sia configurato correttamente e riconosciuto da Linux (via libccid, vedi tutti i post precedenti):

# usare grep con parole chiave tipo la marca o il modello, o ispezionare direttamente il file:
grep -niI bit4id.*air.*3 /etc/libccid_Info.plist

Installazione software CIE Middleware 1.4.1 su Ubuntu 20.04:

# scarica il pacchetto deb
wget https://github.com/italia/cie-middleware-linux/releases/download/1.4.1/cie-middleware_1.4.1.deb
# controlla il contenuto del pacchetto deb e di dove verranno posizionati i vari file nel file system
dpkg -c cie-middleware_1.4.1.deb
# leggi qualche informazione di contesto sul pacchetto deb
dpkg -I cie-middleware_1.4.1.deb
# accertati che l'interprete Java sia installato (JRE almeno, o JDK)
java --version
# installa il pacchetto deb
sudo dpkg -i cie-middleware_1.4.1.deb
# posiziona la CIE sul lettore NFC contactless e leggi alcune informazioni di contesto
# usando il tool per token (SmartCard) che seguono lo standard di crittografazione PKCS #11
# (output in italiano)
pkcs11-tool --module /usr/local/lib/libcie-pkcs11.so --show-info --list-slots

Impostare il browser web Firefox come descritto nel capitolo 5 del manuale PDF https://github.com/italia/cie-middleware-linux/releases/download/1.4.0/CIE.3.0.-.Manuale.d.uso.del.middleware.Linux.pdf

Far partire il programma CIE ID al file system path /usr/share/CIEID/cieid.jar (quello che richiede Java) e seguire la procedura per abbinare la carta usando il PIN per esteso (8 cifre) - da fare solo la prima volta.

Il programma CIE ID può essere usato anche per firmare digitalmente documenti.

Grazie ancora per tutti gli spunti super utili che mi avete dato.