Smartcard OpenPGP con GnuPG su Fedora#

Nota

Le seguenti istruzioni richiedono che Nitrokey 3 abbia installato almeno la versione del firmware 1.4.0. Consultare l’aggiornamento del firmware ` <./firmware-update.html>`__ per sapere come aggiornarlo.

Il supporto per le smartcard GnuPG richiede scdaemon. In Fedora il scdaemon fa parte del pacchetto GnuPG.

Nota

Il demone scdaemon è installato in /usr/libexec/scdaemon. Questo percorso di solito non fa parte della variabile d’ambiente PATH.

Il progetto GnuPG supporta due configurazioni di interfacciamento con una smartcard OpenPGP.

  1. GnuPG (scdaemon con driver CCID) → Smartcard (ad es. Nitrokey)

    In questa configurazione scdaemon comunica direttamente con Nitrokey con il suo driver CCID interno e libusb. Richiede l’impostazione delle regole Udev, perché scdaemon gira nello spazio utente con i permessi dell’utente connesso.

  2. GnuPG (scdaemon con libreria PCSC) → pcscd → Smartcard (es. Nitrokey)

    In questa configurazione il demone scdaemon comunica con pcscd, che poi comunica con Nitrokey.

Su Fedora è supportata solo la seconda configurazione, perché la configurazione del pacchetto GnuPG imposta il driver CCID come disabilitato e il supporto pcsc come richiesto. La relativa configurazione si trova nel file spec qui e qui.

Risoluzione dei problemi#

L’ultima versione di Fedora 38 dovrebbe funzionare senza problemi dopo l’installazione. Le versioni aggiornate di Fedora potrebbero avere configurazioni in conflitto e dovrebbero essere controllate come indicato di seguito. È stato segnalato che Fedora Silverblue ha problemi con GnuPG e le smartcard. Le istruzioni che seguono si applicano solo alle edizioni Fedora Workstation e Fedora Server.

La corretta configurazione di una configurazione può essere verificata interrogando le informazioni su Nitrokey con gpg --card-status.

Controllo del riconoscimento#

Verificare con il comando lsusb che la Nitrokey sia riconosciuta. L’output dovrebbe elencare la Nitrokey, ad esempio Bus 001 Device 002: ID 20a0:42b2 Clay Logic Nitrokey 3.

Controllare la configurazione del sistema#

  1. Assicurarsi che il pacchetto pcscd sia installato con dnf install pcsc-lite. Inoltre, il servizio e il socket systemd devono essere abilitati e avviati con systemctl enable pcscd.socket pcscd.service && systemctl start pcscd.socket.

  2. Il demone scdaemon richiede la libreria libpcsclite per connettersi a pcscd. Il percorso della libreria pcsc può essere impostato esplicitamente con echo "pcsc-driver /usr/lib64/libpcsclite.so.1" >> ~/.gnupg/scdaemon.conf. In alternativa, la libreria può anche essere resa disponibile con un link simbolico come ln -s /usr/lib64/libpcsclite.so.1 /usr/lib64/libpcsclite.so. Assicurarsi che al file ~/.gnupg/scdaemon.conf non siano applicate impostazioni in conflitto.

  3. Per impostazione predefinita, il demone scdaemon prevede l’accesso esclusivo al pcscd ** , per evitare potenziali problemi di modifica simultanea delle informazioni sulla scheda. Questo fa sì che l’accesso fallisca se altri client, di solito browser web, accedono alla scheda, anche se solo in lettura. L’accesso condiviso può essere abilitato con echo "pcsc-shared" >> ~/.gnupg/scdaemon.conf (in GnuPG versione 2.2.28 o superiore).