Le chiavi di GNUpg

GNUpg è un software libero, che permette di firmare digitalmente i propri dati (l'equivalente della firma su carta) e di cifrare le proprie comunicazioni (o, in altre parole, rendere "offuscato" il contenuto).
Si tratta di un programma nato per sostituire PGP (programma per l'autentificazione e la privacy crittografica), che aderisce allo standard internet OpenPGP (basato su PGP) per la crittografia asimmetrica.

GNUpg utilizza come parametro in un algoritmo crittografico una chiave generata dall'utente e che, nella crittografia asimmetrica, è, in realtà, una coppia di chiavi: una pubblica, che può essere scambiata tra gli utenti tramite una e-mail o un keyserver (un sistema che fornisce chiave crittografiche a chi le richiede), e una privata, che rimane segreta.
La chiave pubblica serve per cifrare un messaggio e la privata per decriptarlo, quindi chi vuole comunicare col possessore della chiave privata, deve possedere quella pubblica. Quest'ultima può essere firmata quando è stata verificata la corripondenza tra di essa e l'utente a cui dovrebbe appartenere, in modo da confermarne l'"identità". In questo modo è possibile anche verificare l'autenticità di un documento, il quale può essere decriptato solo da chi ha la chiave pubblica di chi l'ha criptato. In questo caso si ha il meccanismo della firma digitale.

GNUpg permette la gestione da riga di comando delle coppie di chiavi e dei moduli per l'accesso ai server delle chiavi pubbliche, tuttavia esistono anche frontend grafici (come kgpg per esempio).

La creazione di una chiave non è assolutamente difficile, sia che lo si faccia da riga di comando, sia che lo si faccia tramite il frontend grafico (procedura abbastanza intuitiva).
Sul sito di GNUpg è possibile trovare un'ottima guida per il prompt di comando.
Per chi preferisce kgpg, invece, si va sul menu Chiavi --> Genera coppia di chiavi e si completano i campi richiesti dalla finestra di dialogo:

  • nome,
  • indirizzo di posta elettronica col quale si vuole utilizzare la coppia di chiavi,
  • commento opzionale,

che serviranno alla costruzione delle chiavi,

  • scadenza della coppia di chiavi,
  • dimensione o lunghezza della chiave, che consiste nei bit utilizzabili per la sua costruzione (normalmente si sceglie 1024 bit per avere un buon compromesso tra sicurezza della chiave e tempo impiegato per la sua generazione),
  • algoritmo (DSA/ElGamal, impostato di default, o RSA).

Selezionando il pulsante "Modalità per esperti" si va ad impostare le suddente informazioni da riga di comando, la situazione che si avrebbe avuto digitando da un prompt di comando

gpg --gen-key

Una volta dato l'ok, verrà richiesta la password che, in questo caso, sarà una frase segreta o passphrase, che dovrà essere inserita ad ogni utilizzo delle chiavi.

Una volta in possesso della chiave essa può essere esportata su un keyserver andando sulla finestra di File --> Finestra server delle chiavi in modo che possa essere trovata dagli utenti con cui si scambiano messaggi. Sempre da questa finestra, ma dalla sezione "Importa", si possono cercare le chiavi pubbliche degli altri utenti. Una volta aggiunte le chiavi degli altri utenti, facendo doppio click sul contatto, si può impostare la "Fiducia del proprietario" ovvero firmare la chiave, col livello ritenuto più opportuno.

Bisogna ancora impostare la chiave sul programma di posta elettronica utilizzato e che, ovviamente, deve supportare GNUpg. Mozilla e Thunderbird usano un plug-in apposito (Enigmail), mentre Kmail usa una funzione integrata. Su quest'ultimo, per esempio, basta inserire l'ID della chiave nella sezione "identità" e quando si deciderà di firmare o crittografare una e-mail, all'invio verrà richiesta la passphrase.

Ripetere ogni volta l'inserimento della frase segreta può essere antipatico, quindi si può passare all'utilizzo di gpg-agent, un gestore di chiavi, che permette la memorizzazione temporanea della passphrase.
Sul sito di Kmail è fornita una procedura per la configurazione, ma per ottenere effettivamente quello che volevo ho dovuto seguire il wiki di Gentoo.

Innanzitutto bisogna assicurarsi che gpg-agent e pinentry-qt (un'interfaccia di dialogo per l'inserimento di PIN o di passphrase per GnuPG, basato sulle librerie Qt) siano installati.
Si crea quindi la directory ~/.kde/env/ e, in essa, un file NOME_FILE_1.sh con il seguente contenuto:


#!/bin/bash
eval `gpg-agent --daemon`

e lo si rende eseguibile con


chmod +r NOME_FILE_1.sh

Questo file, di nome ed estensione non rilevanti, consente la partenza di gpg-agent ad ogni avvio di Kde (quindi, ora, si può già riavviare).
Quindi si crea la directory ~/.kde/shutdown e, in essa, il file NOME_FILE_2.sh con il seguente contenuto:


#!/bin/sh
[[ -n ${GPG_AGENT_INFO} ]] && kill `echo ${GPG_AGENT_INFO} | cut -d ':' -f 2`

e lo si rende eseguibile come fatto prima, in modo che venga eseguito quando Kde viene chiuso. Anche in questo caso nome del file ed estensioni non sono importanti, quindi si può scegliere di chiamare i due file allo stesso modo (ma non necessariamente).
Adesso si modifica anche il file ~/.gnupg/gpg-agent.conf inserendo le seguenti righe


pinentry-program PERCORSO/pinentry-qt
no-grab

in modo da specificare il programma di PIN-entry, ovviamente dopo aver individuato la collocazione di pinentry-qt sul nostro pc, tramite il comando


which pinentry-qt

per esempio.
Con


gpg-agent --help

è possibile risalire alle altre opzioni che possono essere impostate nel file di configurazione ~/.gnupg/gpg-agent.conf.
A questo punto, la passphare verrà richiesta una sola volta, anziché ad ogni invio di e-mail, ma ogni 10 minuti essa verrà dimenticata. Esiste infatti un timeout per gpg-agent impostato di default che può essere cambiato editando il file ~/.gnupg/gpg-agent.conf con il seguente contenuto:


default-cache-ttl TEMPO_IN_SECONDI
max-cache-ttl TEMPO_IN_SECONDI

in modo da reimpostare sia il tempo di memorizzazione della passphrase sia la cache limite (di default a 7200 secondi).
In ultima, è necessario modificare il file ~/.gnupg/gpg.conf, inserendo


use-agent

in modo che GNUpg utilizzi gpg-agent quando è necessario.

by Realizzazione Siti Vicenza & Temi per Drupal
Creative Commons License | Privacy & Cookie Policy