Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Sicurezza/GnuPg"
Differenze tra le versioni 11 e 61 (in 50 versioni)
Versione 11 del 16/05/2007 09.05.19
Dimensione: 13604
Commento: inserita sezione Interfacce
Versione 61 del 29/08/2025 10.32.25
Dimensione: 24413
Commento: copia da ivantu/Sicurezza/GnuPg (revisione e aggiornamento generale)
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
## page was renamed from Sicurezza/GnuGpg
## page was renamed from GnuGpg
## page was renamed from Sicurezza/GnuPG
Linea 5: Linea 4:
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:30%; background:#F1F1ED; margin: 0 0 1em 1em;"style="padding:0.5em;">'''Indice'''[[BR]] [[TableOfContents(2)]]||
<<BR>>
<<Indice(depth=2)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=385070"; rilasci="25.04 24.04 22.04 20.04 18.04")>>
Linea 10: Linea 10:
||<tablestyle="text-align: justify; width:65%; " style="border:none;" 5%> attachment:logo_piccolo.png ||<style="border:none"> In questa pagina viene presentato '''Gnu``Pg''', il sistema di crittografia predefinito di Ubuntu. Oltre al comando '''gpg''' verrà illustrato l'uso delle più comuni interfacce grafiche. ||

[[BR]][[BR]]
 ||<tablestyle="text-align: justify; width:65%; " style="border-width:0px;" 5%>''GnuPG utilizza la crittografia a chiave pubblica per permettere a coloro che lo utilizzano di comunicare in sicurezza. In un sistema a chiave pubblica ogni utente ha una coppia di chiavi consistenti in una chiave privata e una chiave pubblica. La chiave privata di una persona viene tenuta segreta; non deve mai essere rivelata. La chiave pubblica può essere data a tutti coloro con i quali l'utente vuole comunicare.'' ||
||<tablestyle="text-align: right; width:65%; " style="border-width:0px;" 5%> (Estratto dal [http://www.gnupg.org/gph/it/index.html Manuale di GNUPG])||

= Interfacce grafiche =

Esistono diversi programmi che forniscono un'interfaccia grafica al sottosistema '''gpg'''. Di seguito ne vengono descritte alcuni di essi.

== Seahorse ==

'''Seahorse''' è lo strumento di gestione delle chiavi predefinito di Ubuntu.

attachment:seahorse.png

Per installare il programma è sufficiente digitare il seguente comando:
{{{
sudo apt-get install seahorse
}}}

== GNU Privacy Assistant ==

Per gli utenti '''GNOME''', '''gpa''' è una valida alternativa a '''seahorse''', nel caso si riscontrino problemi con quest'ultimo.

attachment:gpa.png

Per installare il programma è sufficiente digitare il seguente comando:
{{{
sudo apt-get install gpa
}}}

== KGPG ==

 * KGPG, un'interfaccia per KDE {{{
sudo apt-get install kgpg
}}}

È possibile anche utilizzare questi programmi per generare delle chiavi, nel qual caso la sezione sottostante va usata come consigli.

= Generare una chiave GPG =

== Usare GnuPG ==

Da terminale: {{{
gpg --gen-key
}}}

Questo comando porterà ad una schermata di selezione con le seguenti opzioni {{{
Please select what kind of key you want:
   (1) DSA and Elgamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
}}}
La scelta predefinita (1) è la migliore, in quanto le altre non possono essere utilizzate per criptare.

{{{
What keysize do you want? (2048)
}}}
La dimensione della chiave di 2048 è una buona scelta.

{{{
Key is valid for? (0)
}}}
Molte persone creano le proprie chiavi senza scadenza. Se si sceglie ciò bisogna ricordarsi di revocare la chiave quando non la si usa più. Premere «'''Y'''» per procedere.

{{{
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Dennis Kaarsemaker
Email address: dennis@kaarsemaker.net
Comment: Tutorial key
You selected this USER-ID:
    "Dennis Kaarsemaker (Tutorial key) <dennis@kaarsemaker.net>"
}}}

Assicurarsi che il nome nella chiave sia lo stesso del vostro passaporto, o di qualsiasi altra fonte di identificazione! È possibile aggiungere email addizionali alla firma anche in seguito.

Premere «'''O'''» per generare la chiave.

{{{
You need a Passphrase to protect your secret key.
}}}
Verrà chiesta la passphrase (frase d'ordine) due volte. Solitamente una breve frase difficile da indovinare può essere usata. A differenza di una password, una passphrase può contenere anche spazi bianchi.

||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/warning.png,,center)]] ||<style="padding:0.5em; border:none;">'''Dimenticarsi la propria passphrase comporta l'inutilizzo della chiave. È pertanto necessario ricordarsi questa password, in quanto non c'è modo di recuperarla in seguito!''' ||

Dopo aver inserito la propria passphrase, la chiave verrà generata. Seguire le istruzioni a video finché non si raggiunge una schermata come questa: {{{
In questa guida viene introdotto '''GNU Privacy Guard''' (di seguito '''GnuPG''' o '''GPG'''), il sistema di [[https://it.wikipedia.org/wiki/Crittografia|crittografia]] a [[AmministrazioneSistema/Terminale|riga di comando]] predefinito di Ubuntu.<<BR>>
Verranno di seguito esposti le nozioni basilari, le principali procedure d'impiego, la generazione e la gestione delle chiavi, nonché le metodologie di cifratura, decifratura e firma digitale.

<<BR>>
||<tablestyle="text-align: justify; width:62%; " style="border-width:0px;" 5%>''GnuPG utilizza la crittografia a chiave pubblica per permettere a coloro che lo utilizzano di comunicare in sicurezza. In un sistema a chiave pubblica ogni utente ha una coppia di chiavi consistenti in una chiave privata e una pubblica. La chiave privata di una persona viene tenuta segreta; non deve mai essere rivelata. La chiave pubblica può essere data a tutti coloro con i quali l'utente vuole comunicare.'' ||
||<tablestyle="text-align: right; width:62%; " style="border-width:0px;" 5%> (Estratto dal [[http://www.gnupg.org/gph/it/index.html|Manuale di GNUPG]])||
<<BR>>

= Concetti Fondamentali =

I concetti fondamentali della crittografia asimmetrica in '''GnuPG''', qui di seguito esposti più dettagliatamente, costituiscono il '''pilastro fondamentale''' per una comprensione approfondita e, di conseguenza, per una corretta e sicura operatività del sistema. Una padronanza meticolosa di tali principi non solo facilita l'implementazione pratica ma è altresì cruciale per discernere le implicazioni di sicurezza associate a ciascuna operazione, garantendo la protezione dei dati e la validità delle interazioni digitali.
 * '''Coppia di Chiavi''': Il sistema GnuPG impiega una coppia di chiavi univoca per ogni utente.
   * La chiave privata è destinata alla custodia segreta, protetta da una passphrase robusta, ed è utilizzata per decifrare i messaggi ricevuti e per generare firme digitali sui messaggi inviati.
   * La chiave pubblica, invece, può essere liberamente distribuita e consente a terzi di cifrare comunicazioni indirizzate al possessore della chiave privata, oltre a verificare le firme digitali da queste apposte.
 * '''Cifratura''': Il processo di cifratura rende un messaggio indecifrabile applicando la chiave pubblica del destinatario. Solamente il possessore della chiave privata corrispondente può decifrare tale messaggio, garantendo la riservatezza delle comunicazioni e impedendo accessi non autorizzati.
 * '''Firma Digitale''': La firma digitale assicura l'autenticità e l'integrità di un messaggio. Questa procedura genera un hash crittografico del messaggio, che viene poi cifrato con la chiave privata del mittente. La verifica della firma, eseguita con la chiave pubblica del mittente, permette di convalidare l'origine del messaggio e di confermare che non abbia subito alterazioni.
 * '''Certificato di Chiave''': Un certificato di chiave è un documento digitale che include la chiave pubblica, informazioni identificative del proprietario (come nome e indirizzo email) e le firme di altre entità che ne attestano la validità e l'affidabilità. Questo certificato è fondamentale per stabilire la fiducia e convalidare le identità.
 * '''Anello delle Chiavi (Keyring)''': L'Anello delle Chiavi, o Keyring, è il database locale di '''GnuPG''' che archivia tutte le chiavi conosciute. È suddiviso in un anello per le chiavi pubbliche, usate per cifrare e verificare firme altrui, e un anello per le chiavi private, essenziali per decifrare i propri messaggi e generare le proprie firme digitali.
 * '''Rete di Fiducia (Web of Trust)''': A differenza dei modelli basati su autorità centralizzate, '''GnuPG''' implementa un paradigma decentralizzato noto come ''rete di fiducia''. In questo sistema, la fiducia si costruisce attraverso la firma delle chiavi pubbliche di individui la cui identità è stata personalmente verificata. La probabilità che una chiave sia autentica aumenta in proporzione al numero e all'affidabilità delle firme ricevute.

= Programmi =

Esistono diversi programmi per interagire con il sottosistema `gpg`, sia con interfaccia grafica sia a [[AmministrazioneSistema/Terminale|riga di comando]]. I seguenti programmi possono essere utilizzati per generare e gestire le chiavi GPG, oltre che per eseguire operazioni di cifratura e firma:
 * '''[[Sicurezza/Portachiavi|Password e chiavi]] (Seahorse)''': È lo strumento di gestione delle chiavi predefinito dell'ambiente desktop '''[[AmbienteGrafico/Gnome|GNOME]]''', integrato nativamente in Ubuntu. Offre una gestione intuitiva delle chiavi GPG, inclusa la generazione, l'importazione, l'esportazione e la gestione dei certificati di revoca.
 * '''kgpg''': Rappresenta l'interfaccia grafica standard per la gestione delle chiavi GPG nell'ambiente desktop '''[[AmbienteGrafico/Kde|KDE]]''', risultando particolarmente utile su Kubuntu. Il programma consente di eseguire tutte le operazioni fondamentali, dalla creazione di nuove chiavi all'importazione e firma. Per ottenere il programma, è sufficiente [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://kgpg|kgpg]].
 * '''[[https://gnupg.org/software/gpa/index.html|GPA (GNU Privacy Assistant)]]''': È un'interfaccia grafica per GnuPG, multipiattaforma e indipendente dall'ambiente desktop. GPA fornisce un set completo di funzionalità per la gestione delle chiavi, la cifratura, la decifratura e la firma dei file, con una particolare attenzione alla chiarezza e alla facilità d'uso per operazioni complesse.
 * '''CLI (Command Line Interface) - gpg''': L'interfaccia a [[AmministrazioneSistema/Terminale|riga di comando]] '''gpg''' è il cuore di '''GnuPG''' e offre il controllo più granulare su tutte le operazioni. Sebbene richieda familiarità con i comandi del terminale, permette di automatizzare processi e di eseguire operazioni avanzate non sempre disponibili nelle GUI. È l'opzione preferita per utenti esperti e per scripting.
 * '''[[https://www.passwordstore.org/|pass (Password Store)]]''': Sebbene non sia un'interfaccia GPG diretta, pass è un gestore di password che utilizza GnuPG per cifrare e decifrare le credenziali. Permette agli utenti di archiviare password e altre informazioni sensibili in modo sicuro, sfruttando le chiavi GPG esistenti per la protezione dei dati. È un eccellente esempio di integrazione di GnuPG in altre utilità.

<<Anchor(generarechiave)>>
= Generare una chiave =

 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando seguente:{{{
gpg --full-gen-key
}}}
 0. Apparirà una schermata di selezione con le seguenti opzioni:{{{
Selezionare il tipo di chiave:
   (1) RSA e RSA
   (2) DSA ed Elgamal
   (3) DSA (solo segno)
   (4) RSA (solo segno)
   (9) ECC (firmare e crittografare) *predefinito*
  (10) DSA (firma solo)
  (14) Chiave esistente dalla carta
Selezione?
}}} La scelta predefinita `(1)` è la migliore, in quanto fornisce una maggiore robustezza della chiave.
 0. Verrà chiesto di scegliere una dimensione per la chiave:{{{
Le chiavi RSA possono essere lunghe tra 1024 e 4096 bit.
Che chiave vuoi? (3072)
}}}
 È possibile lasciare l'impostazione predefinita.
 {{{#!wiki note
Nel caso si necessiti di una chiave per firmare dei pacchetti Debian, o se si ha intenzione di far parte del [[GruppoSviluppo|GruppoSviluppo]] in futuro, considerare di creare una chiave da 4096 bit.
 }}}
 0. Verrà chiesto di impostare una data di scadenza:{{{
Specificare la durata di validità della chiave.
         0 = la chiave non scade
      <N> = la chiave scade dopo N giorni
      <N>w = la chiave scade dopo N settimane
      <N>m = la chiave scade dopo N mesi
      <N>y = la chiave scade dopo N anni
Per quanto tempo deve essere valida la chiave? (0)
}}}
 Se si creano le proprie chiavi senza scadenza, in tal caso ricordarsi di revocare la chiave quando non la si usa più. Premere '''Y''' per continuare con il processo di configurazione.
 0. Il passaggio successivo riguarda la creazione dell'identificativo:
  * Inserire il proprio nome reale
  * Inserire il proprio indirizzo email
  * Inserire a scelta un commento per qualificare la chiave.
 {{{#!wiki note
Successivamente sarà possibile aggiungere ulteriori indirizzi email alla propria firma.
 }}}
 0. Una volta verificata la correttezza delle informazioni inserite, premere '''o''' per generare la chiave. Verrà chiesto di inserire una ''passphrase'':{{{
È necessaria una passphrase per proteggere la propria chiave segreta.
}}} L'ideale sarebbe scegliere una breve frase difficile da indovinare. A differenza di una password, una passphrase può contenere anche degli spazi bianchi.
 {{{#!wiki important
Dimenticare la propria passphrase comporta la perdita della chiave.
 }}}
 0. Una volta inserita la ''passphrase'' verrà avviato il processo di creazione della chiave. Questo verrà annunciato dal seguente messaggio:{{{
Dobbiamo generare un mucchio di byte casuali. È una buona idea eseguire
qualche altra azione (scrivere sulla tastiera, muovere il mouse, usare i
dischi) durante la generazione dei numeri primi; questo da al generatore di
numeri casuali migliori possibilità di raccogliere abbastanza entropia.
}}}
 0. Al termine, si raggiungerà una schermata simile alla seguente:{{{
gpg: key D8FC66D2 marked as ultimately trusted
chiavi pubbliche e segrete create e firmate.

pub 1024D/D8FC66D2 2011-04-07
      Key fingerprint = 95BD 8377 2644 DD4F 28B5 2C37 0F6E 4CA6 D8FC 66D2
uid Mario Rossi <mario@rossi.it>
sub 2048g/389AA63E 2011-04-07
Linea 102: Linea 104:

pub 1024D/D8FC66D2 2005-09-08
      Key fingerprint = 95BD 8377 2644 DD4F 28B5 2C37 0F6E 4CA6 D8FC 66D2
uid Dennis Kaarsemaker (Tutorial key) <dennis@kaarsemaker.net>
sub 2048g/389AA63E 2005-09-08
}}}
L'ID della chiave è '''D8FC66D2''', il vostro naturalmente sarà diverso.

È buona norma configurare questa chiave come la chiave predefinita all'interno del file `.bashrc`, così che altre applicazioni che utilizzano GPG possano usare questa chiave. Per fare ciò basta inserire nel file `~/.bashrc` la riga: {{{
}}}
 L' '''ID''' della chiave nell'esempio è '''D8FC66D2'''.
 0. È buona norma configurare questa chiave come predefinita all'interno del file `~/.bashrc`, in modo tale da specificare come automatico il suo utilizzo con le altre applicazioni che fanno uso del sistema '''GnuPG'''. Per fare ciò basta inserire nel file `~/.bashrc` la riga:{{{
Linea 112: Linea 108:
}}}

Riavviare quindi '''gpg-agent''' (se presente): {{{
}}}
 sostituendo `D8FC66D2` con il proprio ID effettivo.
 0. Ora è necessario riavviare il servizio per la cifratura. A seconda del sistema in uso potrebbe essere necessario terminare uno dei due seguenti processi:
  * '''seahorse-agent''':{{{
killall -q seahorse-agent
eval $(seahorse-agent --daemon)
}}}
  * '''gpg-agent''':{{{
Linea 118: Linea 119:
ed eseguite questo comando: {{{  0. Infine, eseguire questo comando:{{{
Linea 122: Linea 123:
=== Certificato di revoca === = Certificato di revoca =
Linea 126: Linea 127:
Per creare un certificato di revoca, da terminale digitare: {{{
gpg --output revoke.asc --gen-revoke <KEY-ID>
}}}

La chiave può essere stampata e conservata con cura. '''Chiunque abbia accesso al certificato di revoca può rendere la chiave pubblica inutilizzabile!'''

= Caricare una chiave =

Questa sezione spiegherà come caricare la propria chiave in un keyserver in modo che tutti possano scaricarla. Quando sarà caricata in un keyserver, dopo un breve periodo di tempo, tutti i keyserver avranno la vostra firma. È possibile velocizzare questo procedimento spedendo la propria chiave a più server.

== Utilizzando GnuPG ==

{{{
gpg --send-keys --keyserver keyserver.ubuntu.com <KEY-ID>
}}}

== Utilizzando un browser web ==

 * Esportare la propia chiave: {{{
Per creare un certificato di revoca, digitare nel [[AmministrazioneSistema/Terminale|terminale]]: {{{
gpg --output revoke.asc --gen-revoke ID_CHIAVE
}}}

Al posto di `ID_CHIAVE` inserire l'ID effettivo della propria chiave.

{{{#!wiki important
Il certificato deve essere conservato con estrema cura, preferibilmente in più luoghi offline e sicuri (ad esempio, su una chiavetta USB crittografata o stampato e custodito in un luogo fisico sicuro). Chiunque abbia accesso a questo certificato può rendere la chiave pubblica inutilizzabile.
}}}

= Importare una chiave =

'''GnuPG''' consente di aggiungere al proprio portachiavi anche chiavi non generate dall'utente, sia pubbliche che private.

{{{#!wiki important
Per importare una qualsiasi chiave con gpg, è fondamentale essere già in possesso di una copia salvata in locale. Quindi, se si vuole importare la chiave `D8FC66D2` salvata su "www.example.org/key.asc", bisogna prima copiarla o scaricarla sul proprio PC.}}}

== Importare una chiave pubblica ==

Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando: {{{
gpg --import file_chiave_pubblica.gpg
}}}
dove `file_chiave_pubblica` è il percorso del file contenente i dati della chiave pubblica da importare. L'output sarà simile al seguente:{{{
gpg: chiave <ID>: chiave pubblica "Nome Cognome (utente) <email>" importata
}}}
Ciò significa che la chiave pubblica è stata importata con successo e che è utilizzabile.

== Importare una chiave privata ==

Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
gpg --allow-secret-key-import --import file_chiave_privata.gpg
}}}
dove `file_chiave_privata` è il percorso del file che contiene i dati della chiave privata da importare.

Nel caso l'importazione della chiave segreta si concluda correttamente, l'output sarà simile al seguente::{{{
gpg: chiave <ID>: chiave segreta importata
}}}

= Inviare una chiave a un server =

Questa sezione contiene le istruzioni per inviare la propria chiave a un server di chiavi in modo che tutti possano scaricarla. Una volta caricata su un server, dopo un breve periodo di tempo, tutti gli altri server di chiavi avranno la propria firma. È possibile velocizzare questo procedimento spedendo la propria chiave a più server.

== Inviare una chiave da riga di comando ==

Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
gpg --send-keys --keyserver keyserver.ubuntu.com KEY-ID
}}}
sostituendo `KEY-ID` con l'ID della propria chiave.

== Inviare una chiave con un browser web ==

 0. Esportare la propria chiave digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
Linea 147: Linea 181:
 * Copiare il contenuto del file {{{public.key}}}
 * In una finestra del proprio web browser aprire questo indirizzo: [http://pgp.mit.edu]
 * Incollare il contenuto del file `public.key` nella casella sotto la scritta «'''Submit a key'''»
 * Fare clic su «'''Submit this key to the keyserver'''»
 sostituendo `KEY-ID` con l'ID della propria chiave. Verrà creato un file `public.key` contenente la propria chiave pubblica.
 0. Aprire una browser e andare al seguente indirizzo: [[http://keyserver.ubuntu.com:11371/]].
 0. Copiare il contenuto del file `public.key` e incollarlo nella casella sotto la scritta '''Submit a key''', quindi fare clic su '''Submit this key to the keyserver!'''.
Linea 154: Linea 187:
Il punto più importante con GPG è quello di crearsi un «web of trust», una rete della fiducia. Firmare la chiave di una persona significa aver controllato l'identità di quella persona e essersi assicurati che essa sia in pieno controllo della propria chiave privata. In questo modo si può creare una rete di persone che si fidano l'un l'altra. Questa rete è definita come «''Strongly connected set''» (un insieme fortemente connesso), informazioni a riguardo si possono trovare in [http://www.cs.uu.nl/people/henkp/henkp/pgp/pathfinder/ www.cs.uu.nl].

In pratica:
 * Trovare qualcuno che viva vicino voi con cui poter incontrarsi per verificare la vostra ID. Un sito come [http://www.biglumber.com/ biglumber] serve proprio a questo
 * Organizzare un incontro. Portare con voi un documento e il fingerprint della vostra chiave, chiedere lo stesso alla persona da incontrare
 * Incontrarsi, verificare le ID e scambiarsi i fingerprint
 * Firmare la chiave della persona appena incontrata e rispedirgli/le la chiave appena firmata
 * Aggiornare le vostre chiavi nel keyserver

== Guida alla firma delle chiavi ==

Dato che firmare una chiave significa aver controllato e verificato che una certa chiave pubblica appartiene a una tale persona che possiede la relativa chiave privata, è necessario seguire questi semplici accorgimenti quando si firma una chiave:
 0. Il procedimento di firma di una chiave è '''sempre''' svolto dopo aver incontrato questa persona
 0. Durante l'incontro è necessario scambiarsi i fingerprint delle rispettive chiavi e almeno un documento identificativo (con una fotografia all'interno). Questi fingerprint sono solitamente distribuiti su dei foglietti, creati da uno script come '''`gpgkey2ps`''' (pacchetto ''signing-party'')
 0. Controllare che il nome nella chiave corrisponda con quello del documento identificativo
 0. Dopo questi controlli accertarsi che la persona sia veramente in possesso della chiave privata. Per fare ciò basta rispedire a lei/lui la sua chiave pubblica firmata e criptata con la ripettiva chiave pubblica. Il programma '''`caff`''' rende questo procedimento molto facile. È necessario creare un file `.caffrc` nella vostra home directory con i seguenti valori all'interno: {{{
$CONFIG{owner} = q{Your full name here};
$CONFIG{email} = q{The emailaddress used in your key here};
$CONFIG{keyid} = [ qw{last 16 characters of your key fingerprint here} ];}}} Ora basta eseguire questo comando: {{{
caff key_id_of_other_persons_key}}}
 0. Quando si ricevono chiavi firmate, si ricevono come allegati, salvarli e importarli con '''`gpg`'''. Ora è possibile inviare queste chiavi ad un keyserver.
Il sistema di firma delle chiavi di '''gpg''' è fondamentale per la costruzione della ''rete di fiducia'', in quanto la firma di una chiave altrui attesta la verifica dell'identità del proprietario e del suo controllo sulla chiave privata.<<BR>>
Per agevolare questo processo, si raccomanda l'utilizzo del programma '''caff''', che automatizza la firma della chiave pubblica di un interlocutore e gestisce l'invio del risultato, cifrato con la sua chiave pubblica, all'indirizzo e-mail associato. Questo protocollo non solo conferma il possesso della chiave, ma ne convalida anche l'accesso all'indirizzo e-mail corrispondente, rafforzando l'attendibilità tra l'identità dichiarata e il controllo effettivo della chiave crittografica.

Per procedere con la firma di una chiave, è necessario seguire i seguenti passaggi:

{{{#!wiki important
Il procedimento di firma di una chiave è __sempre__ svolto dopo aver incontrato la persona.
}}}

 0. Durante l'incontro è necessario scambiarsi i ''fingerprint'' delle rispettive chiavi e almeno un documento identificativo (con una fotografia all'interno). È possibile ottenere il fingerprint della propria chiave con il comando:{{{
gpg --fingerprint ID_CHIAVE
}}} Tali ''fingerprint'' vengono solitamente distribuiti su dei foglietti, creati da script come `gpg-key2ps`, fornito dal pacchetto ''[[apt://signing-party|signing-party]]'' (il cui accesso potrebbe richiedere l'abilitazione di repository specifici in alcune distribuzioni).
 0. Controllare che il nome nella chiave corrisponda con quello del documento identificativo.
 0. Dopo aver verificato l'identità, si prepara il processo di firma utilizzando lo strumento '''caff'''.
 0. È necessario creare un file `.caff` nella propria directory '''Home''' con i seguenti valori:{{{
$CONFIG{owner} = q{Nome e cognome};
$CONFIG{email} = q{L'indirizzo email della chiave};
}}}
 Eseguire ora il seguente comando:{{{
caff ID_CHIAVE
}}}
 sostituendo la dicitura `ID_CHIAVE` con l'ID della chiave che si vuole verificare e firmare.
 0. Quando si ricevono chiavi firmate come allegati, salvarle e importarle con '''gpg'''. Sarà quindi possibile inviare queste chiavi a un keyserver.

= Cifrare i dati =

La cifratura dei dati è un'operazione molto importante per garantirne la sicurezza. '''GnuPG''' mette a disposizione due metodi:

 * [[https://it.wikipedia.org/wiki/Crittografia_asimmetrica|asimmetrico]] (usato per impostazione predefinita);
 * [[https://it.wikipedia.org/wiki/Crittografia_simmetrica|simmetrico]].

== Cifratura asimmetrica ==

{{{#!wiki important
Per poter cifrare un file con la propria chiave __è necessario essere già in possesso di una coppia di chiavi__. In caso contrario bisogna [[#generarechiave | generarla]].
}}}

 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando: {{{
gpg -o file_cifrato -ea file_da_cifrare
}}}
 dove `file_cifrato` è il percorso del file che conterrà i dati cifrati e `file_da_cifrare` il percorso del file che contiene i dati da cifrare.
 0. A questo punto dovrebbe apparire una schermata simile alla seguente:{{{
Non è stato specificato un ID utente (è possibile usare "-r").

Destinatari attuali:

Inserire l'ID utente, termina con una riga vuota:

}}}
 Inserire il nome del possessore della chiave pubblica con cui si intende cifrare (il destinatario del messaggio), oppure la sua email, quindi cliccare '''Invio'''. È possibile specificare anche altri destinatari con la stessa modalità, previo sempre il possesso delle loro chiavi pubbliche. Una volta specificati tutti gli utenti, premere '''Invio''' con una riga vuota.

Se l'operazione si conclude senza ulteriori messaggi nel [[AmministrazioneSistema/Terminale|terminale]], allora vuol dire che la cifratura dei dati selezionati è riuscita correttamente.

== Cifratura simmetrica ==

 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
gpg -o file_cifrato -ca file_da_cifrare
}}}
 dove `file_cifrato` è il percorso del file che conterrà i dati cifrati, mentre `file_da_cifrare` il percorso del file contenente i dati originali.
 0. Inserire la passphrase scelta nella finestra che apparirà e premere '''Invio''' sulla tastiera o cliccare sul pulsante '''Sblocca'''.
 0. A questo punto apparirà una schermata che chiederà di ripetere la ''passphrase''. Ripetere il passaggio precedente.

 {{{#!wiki note
Se si clicca su '''Annulla''' nella schermata per inserire la passphrase, verrà chiesto di inserire quest'ultima nel terminale. Farlo senza preoccuparsi del fatto che sembri non venire digitata.}}}

Se l'operazione si conclude senza ulteriori messaggi nel [[AmministrazioneSistema/Terminale|terminale]], allora vuol dire che la cifratura è andata a buon fine.

{{{#!wiki important
La perdita della passphrase comporta la perdita definitiva della possibilità di decifrare il file cifrato.
}}}

= Decifrare i dati =

Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando: {{{
gpg --decrypt percorso_del_file
}}}
 sostituendp `percorso_del_file` con il percorso del file contenente i dati da decifrare.

A seconda dei casi:
  * Se il file è stato cifrato asimmetricamente e non si è in possesso della chiave privata apparirà il seguente messaggio: {{{
gpg: de-cifratura non riuscita: la chiave segreta non è disponibile
}}}
  * Se il file è stato cifrato simmetricamente, verrà richiesta la passphrase per decifrarlo e, nel caso in cui essa sia errata, verrà stampato questo messaggio: {{{
gpg: de-cifratura non riuscita: chiave errata
}}}
  * Qualora l'operazione si concluda senza errori, il comando visualizzerà a schermo il messaggio decifrato
Linea 178: Linea 276:
La firma dei dati è molto utile nel verificare che i dati spediti da un utente siano veramente spedite da quell'utente.

== Firma del codice di condotta ==

Quando GPG sarà configurato e una chiave è disponibile, è possibile firmare il '''Codice di condotta''' di Ubuntu se si vuole diventare un «'''Ubuntero'''».

Bastano tre semplici passi:
 0. Scaricare il '''Codice di condotta''' da [https://launchpad.net/codeofconduct/1.0.1 launchpad.net]
 0. Eseguire il comando: {{{
gpg --clearsign UbuntuCodeofConduct-1.0.1.txt}}}
 0. Copiare il contenuto di `UbuntuCodeofConduct-1.0.1.txt.asc` in [https://launchpad.net/codeofconduct/1.0.1/+sign]

||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/warning.png,,center)]] ||<style="padding:0.5em; border:none;">'''È necessario informare Launchpad della vostra/e chiave/i GPG per poter firmare il Codice di condotta e per poter creare pacchetti con HCT.''' ||

Una volta fatto il login in Launchpad, fare clic sul proprio nome in alto a destra e poi su «Edit OpenPGP keys». Copiare il fingerprint della chiave all'interno della casella di testo «''Key Fingerprint''».

Esempio: il fingerprint di una chiave assomiglia a "95BD 8377 2644 DD4F 28B5 2C37 0F6E 4CA6 D8FC 66D2".

Launchpad vi spedirà una mail che dovrà essere decifrata. È possibile salvare il testo in un file ed eseguire: {{{
gpg --decrypt file.txt
}}}

Sarà necessario inserire la passphrase.

Verrà visualizzato il messaggio con un link per la conferma della chiave.

Fare clic su questo link e inserire la password di Launchpad.

== Firmare e criptare email ==

Questa sezione vi aiuterà a configurare '''Evolution''' e '''Thunderbird''' per firmare e criptare email.
La firma dei dati è utile per verificare l'identità del mittente.

<<Anchor(codicecondotta)>>
== Firma del Codice di condotta di Ubuntu ==

Prima di firmare il '''Codice di condotta''' di Ubuntu è necessario aggiornare il proprio account inserendovi, fra le varie informazioni, la chiave '''gpg''' che si desidera utilizzare per tale operazione.

=== Caricare la chiave in Launchpad ===

 0. Eseguire l'accesso in [[https://launchpad.net/|Launchpad]].
 0. Fare clic sul proprio nome in alto a destra e poi su '''Edit OpenPGP keys'''.
 0. Copiare il ''fingerprint'' della propria chiave all'interno della casella di testo '''Key Fingerprint'''.<<BR>>Launchpad spedirà all'indirizzo specificato un'email contenente del testo cifrato con la nuova chiave.
 0. Per procedere con l'operazione di decifratura è sufficiente salvare il testo in un file all'interno della propria '''Home''', quindi digitare in un terminale il seguente comando: {{{
gpg --decrypt nome_file.txt
}}}
 sostituendo `nome_file.txt` con quello effettivo.
 0. Una volta inserita la passphrase comparirà in chiaro il testo del messaggio, il quale conterrà un collegamento da inserire nella barra degli indirizzi del proprio browser per convalidare la chiave.

=== Firmare il Codice di condotta ===

Per firmare il '''Codice di condotta''' di Ubuntu bastano tre semplici passaggi:
 0. Scaricare il '''Codice di condotta''' da questo indirizzo : [[https://launchpad.net/codeofconduct/2.0/+download]]
 0. Se necessario, [[AmministrazioneSistema/ComandiBase#cd|spostarsi]] nella cartella dove è stato scaricato il file, quindi digitare il seguente comando: {{{
gpg --clearsign UbuntuCodeofConduct-2.0.txt
}}}
 0. Copiare il contenuto del file appena creato `UbuntuCodeofConduct-2.0.txt.asc` nel relativo campo presente a [[https://launchpad.net/codeofconduct/2.0/+sign|questo indirizzo]].

Se l'operazione si è conclusa correttamente, sul proprio profilo Launchpad comparirà la voce '''Yes''' nella sezione '''Signed Ubuntu Code of Conduct:'''.

== Firmare e cifrare email ==

Di seguito sono riportate istruzioni utili a configurare i principali client per firmare e cifrare le email.
Linea 212: Linea 311:
 * Aprire '''Evolution''' e fare clic su '''''Modifica -> Preferenze'''''
 * Scegliere il proprio account email e poi fare clic su «'''Modifica'''»
 * Fare clic sulla linguetta «'''Sicurezza'''»
 * Nella casella di testo «'''ID della chiave PGP/GPG'''» copiare il vostro `KEY-ID`
 * Fare clic su «'''OK'''» e poi «'''Chiudi'''»

Se si desidera utilizzare la chiave in ogni nuova mail, fare clic sul menù «'''Sicurezza'''» in un nuovo messaggio e poi su «'''Firma PGP'''».

=== Mozilla Thunderbird ===

Installare il plugin '''Enigmail''': {{{
sudo apt-get install mozilla-thunderbird-enigmail
}}} o scaricare il plugin da [http://enigmail.mozdev.org/ mozdev] per poi installarlo manualmente.

Configurare GPG in '''Thunderbird''' in '''''OpenPGP -> Preferences''''' e nella casella di testo «'''GnuPG executable path'''» aggiungere `/usr/bin/gpg`.

= Trucchi e consigli =
 * Aggiungere la vostra chiave al file `.bashrc` inserendo: «`export GPGKEY=YOUR-KEY-ID`»
 * ''gpg-agent'' e ''pinentry-gtk2'' sono pacchetti che consentono di non inserire la password per la vostra chiave tutte le volte che ne fate uso. Aprire il file `~/.gnupg/gpg.conf` e cambiare ciò che vi pare opportuno. Alcune cose utili possono essere:
  * `keyserver-options auto-key-retrieve`
  * `use-agent`
 Il primo consente di recuperare le chiavi gpg automaticamente dal server quando si verificano le firme, il secondo consente l'utilizzo di '''`gpg-agent`''' che è molto utile se si utilizza GPG molto spesso. Creare quindi il file `~/.gnupg/gpg-agent.conf` con le seguenti righe: {{{
pinentry-program /usr/bin/pinentry-gtk-2
default-cache-ttl 86400
max-cache-ttl 86400}}}. Questo permetterà l'uso di '''`pinetry-gtk2`''' con '''`gpg-agent`''' e ricorderà la vostra password per 24 ore.

Il pacchetto ''pinetry-gtk2'' non è disponibile per Hoary, ma è disponibile un backport dal pacchetto per Breezy in [http://seveas.ubuntulinux.nl/].

= Articoli correlati =

 * [wiki:Ubuntu/GPGKeyOnUSBDrive GPGKeyOnUSBDrive]
 * [wiki:Ubuntu/UnsignedGpgKey UnsignedGpgKey]
 * [wiki:Ubuntu/GPGsigningforSSHHowTo GPGsigningforSSHHowTo]
 0. [[AmbienteGrafico/AvviareProgrammi|Avviare]] '''Evolution'''.
 0. Selezionare il menù '''''Modifica → Preferenze'''''.
 0. Fare clic su '''Account di posta''' sulla sinistra.
 0. Selezionare l'account di posta per il quale abilitare la crittografia PGP, poi fare clic sul pulsante '''Modifica''' per aprire le impostazioni dell'account.
 0. All'interno della scheda '''Sicurezza''', cliccare sulla scheda '''Sicurezza''' nella finestra delle impostazioni dell'account.
 0. Nel campo '''ID chiave OpenPGP''' inserire l'ID di 8 caratteri della chiave GPG.
 {{{#!wiki tip
Qualora non si conosca il proprio ID chiave, può essere recuperato tramite un'applicazione di gestione delle chiavi come ad esempio '''Seahorse''' (basterà andare nella sezione Chiavi GnuPG, selezionando la propria chiave, facendo clic con il pulsante destro del mouse e scegliendo Proprietà per trovare l'ID chiave.
}}}
 0. Configurare le opzioni desiderate per la firma automatica dei messaggi in uscita.
 0. Per confermare fare clic su '''OK''' per salvare le impostazioni, quindi su '''Chiudi''' per uscire dalla finestra '''Preferenze'''.

=== Thunderbird ===

{{{#!wiki note
A partire dalla versione 78 è incluso il supporto a '''PGP/GnuPG'''. Perciò non è necessario installare alcun add-on aggiuntivo.
}}}
 
 0. Seguire da menù il percorso '''''Modifica → Impostazioni account''''' e selezionare l'account email di proprio interesse.
 0. Alla voce '''Crittografia end-to-end''' fare clic sulla scheda '''OpenPGP'''.<<BR>>Se non è già stata associata una chiave, sarà presente il pulsante '''Aggiungi chiave...''' che consente di importare una chiave esistente o di generarne una nuova. Fare clic su '''Continua'''.
 0. Seguire le istruzioni a schermo per selezionare e importare il file della chiave, quindi per completare l'operazione.
Linea 248: Linea 335:
 * [http://www.gnupg.org/gph/it/index.html Manuale di GNUPG]
 * [http://people.via.ecp.fr/~clem/nist/gpg-enigmail-howto GPG-Enigmail Howto]
 * [http://www.biglumber.com biglumber]
 * [http://itis.olografix.org/gpg.swf GnuPG Guida Flash]
 * [http://seahorse.sourceforge.net/ Sito ufficiale di Seahorse]
 * [[http://www.gnupg.org/gph/it/index.html|Manuale di GnuPG]]
 * [[http://docs.kde.org/stable/it/kdeutils/kgpg/|Manuale di kgpg]]
 * [[https://support.mozilla.org/it/kb/openpgp-thunderbird|Support Thunderbird sulla crittografia OpenPGP]]
Linea 254: Linea 340:


Guida verificata con Ubuntu: 22.04 24.04 25.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

In questa guida viene introdotto GNU Privacy Guard (di seguito GnuPG o GPG), il sistema di crittografia a riga di comando predefinito di Ubuntu.
Verranno di seguito esposti le nozioni basilari, le principali procedure d'impiego, la generazione e la gestione delle chiavi, nonché le metodologie di cifratura, decifratura e firma digitale.


GnuPG utilizza la crittografia a chiave pubblica per permettere a coloro che lo utilizzano di comunicare in sicurezza. In un sistema a chiave pubblica ogni utente ha una coppia di chiavi consistenti in una chiave privata e una pubblica. La chiave privata di una persona viene tenuta segreta; non deve mai essere rivelata. La chiave pubblica può essere data a tutti coloro con i quali l'utente vuole comunicare.

(Estratto dal Manuale di GNUPG)


Concetti Fondamentali

I concetti fondamentali della crittografia asimmetrica in GnuPG, qui di seguito esposti più dettagliatamente, costituiscono il pilastro fondamentale per una comprensione approfondita e, di conseguenza, per una corretta e sicura operatività del sistema. Una padronanza meticolosa di tali principi non solo facilita l'implementazione pratica ma è altresì cruciale per discernere le implicazioni di sicurezza associate a ciascuna operazione, garantendo la protezione dei dati e la validità delle interazioni digitali.

  • Coppia di Chiavi: Il sistema GnuPG impiega una coppia di chiavi univoca per ogni utente.

    • La chiave privata è destinata alla custodia segreta, protetta da una passphrase robusta, ed è utilizzata per decifrare i messaggi ricevuti e per generare firme digitali sui messaggi inviati.
    • La chiave pubblica, invece, può essere liberamente distribuita e consente a terzi di cifrare comunicazioni indirizzate al possessore della chiave privata, oltre a verificare le firme digitali da queste apposte.
  • Cifratura: Il processo di cifratura rende un messaggio indecifrabile applicando la chiave pubblica del destinatario. Solamente il possessore della chiave privata corrispondente può decifrare tale messaggio, garantendo la riservatezza delle comunicazioni e impedendo accessi non autorizzati.

  • Firma Digitale: La firma digitale assicura l'autenticità e l'integrità di un messaggio. Questa procedura genera un hash crittografico del messaggio, che viene poi cifrato con la chiave privata del mittente. La verifica della firma, eseguita con la chiave pubblica del mittente, permette di convalidare l'origine del messaggio e di confermare che non abbia subito alterazioni.

  • Certificato di Chiave: Un certificato di chiave è un documento digitale che include la chiave pubblica, informazioni identificative del proprietario (come nome e indirizzo email) e le firme di altre entità che ne attestano la validità e l'affidabilità. Questo certificato è fondamentale per stabilire la fiducia e convalidare le identità.

  • Anello delle Chiavi (Keyring): L'Anello delle Chiavi, o Keyring, è il database locale di GnuPG che archivia tutte le chiavi conosciute. È suddiviso in un anello per le chiavi pubbliche, usate per cifrare e verificare firme altrui, e un anello per le chiavi private, essenziali per decifrare i propri messaggi e generare le proprie firme digitali.

  • Rete di Fiducia (Web of Trust): A differenza dei modelli basati su autorità centralizzate, GnuPG implementa un paradigma decentralizzato noto come rete di fiducia. In questo sistema, la fiducia si costruisce attraverso la firma delle chiavi pubbliche di individui la cui identità è stata personalmente verificata. La probabilità che una chiave sia autentica aumenta in proporzione al numero e all'affidabilità delle firme ricevute.

Programmi

Esistono diversi programmi per interagire con il sottosistema gpg, sia con interfaccia grafica sia a riga di comando. I seguenti programmi possono essere utilizzati per generare e gestire le chiavi GPG, oltre che per eseguire operazioni di cifratura e firma:

  • Password e chiavi (Seahorse): È lo strumento di gestione delle chiavi predefinito dell'ambiente desktop GNOME, integrato nativamente in Ubuntu. Offre una gestione intuitiva delle chiavi GPG, inclusa la generazione, l'importazione, l'esportazione e la gestione dei certificati di revoca.

  • kgpg: Rappresenta l'interfaccia grafica standard per la gestione delle chiavi GPG nell'ambiente desktop KDE, risultando particolarmente utile su Kubuntu. Il programma consente di eseguire tutte le operazioni fondamentali, dalla creazione di nuove chiavi all'importazione e firma. Per ottenere il programma, è sufficiente installare il pacchetto kgpg.

  • GPA (GNU Privacy Assistant): È un'interfaccia grafica per GnuPG, multipiattaforma e indipendente dall'ambiente desktop. GPA fornisce un set completo di funzionalità per la gestione delle chiavi, la cifratura, la decifratura e la firma dei file, con una particolare attenzione alla chiarezza e alla facilità d'uso per operazioni complesse.

  • CLI (Command Line Interface) - gpg: L'interfaccia a riga di comando gpg è il cuore di GnuPG e offre il controllo più granulare su tutte le operazioni. Sebbene richieda familiarità con i comandi del terminale, permette di automatizzare processi e di eseguire operazioni avanzate non sempre disponibili nelle GUI. È l'opzione preferita per utenti esperti e per scripting.

  • pass (Password Store): Sebbene non sia un'interfaccia GPG diretta, pass è un gestore di password che utilizza GnuPG per cifrare e decifrare le credenziali. Permette agli utenti di archiviare password e altre informazioni sensibili in modo sicuro, sfruttando le chiavi GPG esistenti per la protezione dei dati. È un eccellente esempio di integrazione di GnuPG in altre utilità.

Generare una chiave

  1. Digitare nel terminale il comando seguente:

    gpg --full-gen-key
  2. Apparirà una schermata di selezione con le seguenti opzioni:

    Selezionare il tipo di chiave:
       (1) RSA e RSA
       (2) DSA ed Elgamal
       (3) DSA (solo segno)
       (4) RSA (solo segno)
       (9) ECC (firmare e crittografare) *predefinito*
      (10) DSA (firma solo)
      (14) Chiave esistente dalla carta
    Selezione?

    La scelta predefinita (1) è la migliore, in quanto fornisce una maggiore robustezza della chiave.

  3. Verrà chiesto di scegliere una dimensione per la chiave:

    Le chiavi RSA possono essere lunghe tra 1024 e 4096 bit.
    Che chiave vuoi? (3072)
    È possibile lasciare l'impostazione predefinita.

    Nel caso si necessiti di una chiave per firmare dei pacchetti Debian, o se si ha intenzione di far parte del GruppoSviluppo in futuro, considerare di creare una chiave da 4096 bit.

  4. Verrà chiesto di impostare una data di scadenza:

    Specificare la durata di validità della chiave.
             0 = la chiave non scade
          <N>  = la chiave scade dopo N giorni
          <N>w = la chiave scade dopo N settimane
          <N>m = la chiave scade dopo N mesi
          <N>y = la chiave scade dopo N anni
    Per quanto tempo deve essere valida la chiave? (0)

    Se si creano le proprie chiavi senza scadenza, in tal caso ricordarsi di revocare la chiave quando non la si usa più. Premere Y per continuare con il processo di configurazione.

  5. Il passaggio successivo riguarda la creazione dell'identificativo:
    • Inserire il proprio nome reale
    • Inserire il proprio indirizzo email
    • Inserire a scelta un commento per qualificare la chiave.

    Successivamente sarà possibile aggiungere ulteriori indirizzi email alla propria firma.

  6. Una volta verificata la correttezza delle informazioni inserite, premere o per generare la chiave. Verrà chiesto di inserire una passphrase:

    È necessaria una passphrase per proteggere la propria chiave segreta.
    L'ideale sarebbe scegliere una breve frase difficile da indovinare. A differenza di una password, una passphrase può contenere anche degli spazi bianchi.

    Dimenticare la propria passphrase comporta la perdita della chiave.

  7. Una volta inserita la passphrase verrà avviato il processo di creazione della chiave. Questo verrà annunciato dal seguente messaggio:

    Dobbiamo generare un mucchio di byte casuali. È una buona idea eseguire
    qualche altra azione (scrivere sulla tastiera, muovere il mouse, usare i
    dischi) durante la generazione dei numeri primi; questo da al generatore di
    numeri casuali migliori possibilità di raccogliere abbastanza entropia.
  8. Al termine, si raggiungerà una schermata simile alla seguente:

    gpg: key D8FC66D2 marked as ultimately trusted
    chiavi pubbliche e segrete create e firmate.
    
    pub   1024D/D8FC66D2 2011-04-07
          Key fingerprint = 95BD 8377 2644 DD4F 28B5  2C37 0F6E 4CA6 D8FC 66D2
    uid                  Mario Rossi <mario@rossi.it>
    sub    2048g/389AA63E 2011-04-07
    
    gpg: key D8FC66D2 marked as ultimately trusted
    public and secret key created and signed.

    L' ID della chiave nell'esempio è D8FC66D2.

  9. È buona norma configurare questa chiave come predefinita all'interno del file ~/.bashrc, in modo tale da specificare come automatico il suo utilizzo con le altre applicazioni che fanno uso del sistema GnuPG. Per fare ciò basta inserire nel file ~/.bashrc la riga:

    export GPGKEY=D8FC66D2

    sostituendo D8FC66D2 con il proprio ID effettivo.

  10. Ora è necessario riavviare il servizio per la cifratura. A seconda del sistema in uso potrebbe essere necessario terminare uno dei due seguenti processi:
    • seahorse-agent:

      killall -q seahorse-agent
      eval $(seahorse-agent --daemon)
    • gpg-agent:

      killall -q gpg-agent
      eval $(gpg-agent --daemon)
  11. Infine, eseguire questo comando:

    source ~/.bashrc

Certificato di revoca

Un certificato di revoca deve essere generato per consentire la revoca della propria chiave pubblica nel caso in cui la chiave privata sia stata compromessa.

Per creare un certificato di revoca, digitare nel terminale:

gpg --output revoke.asc --gen-revoke ID_CHIAVE

Al posto di ID_CHIAVE inserire l'ID effettivo della propria chiave.

Il certificato deve essere conservato con estrema cura, preferibilmente in più luoghi offline e sicuri (ad esempio, su una chiavetta USB crittografata o stampato e custodito in un luogo fisico sicuro). Chiunque abbia accesso a questo certificato può rendere la chiave pubblica inutilizzabile.

Importare una chiave

GnuPG consente di aggiungere al proprio portachiavi anche chiavi non generate dall'utente, sia pubbliche che private.

Per importare una qualsiasi chiave con gpg, è fondamentale essere già in possesso di una copia salvata in locale. Quindi, se si vuole importare la chiave D8FC66D2 salvata su "www.example.org/key.asc", bisogna prima copiarla o scaricarla sul proprio PC.

Importare una chiave pubblica

Digitare nel terminale il seguente comando:

gpg --import file_chiave_pubblica.gpg

dove file_chiave_pubblica è il percorso del file contenente i dati della chiave pubblica da importare. L'output sarà simile al seguente:

gpg: chiave <ID>: chiave pubblica "Nome Cognome (utente) <email>" importata

Ciò significa che la chiave pubblica è stata importata con successo e che è utilizzabile.

Importare una chiave privata

Digitare nel terminale il seguente comando:

gpg --allow-secret-key-import --import file_chiave_privata.gpg

dove file_chiave_privata è il percorso del file che contiene i dati della chiave privata da importare.

Nel caso l'importazione della chiave segreta si concluda correttamente, l'output sarà simile al seguente::

gpg: chiave <ID>: chiave segreta importata

Inviare una chiave a un server

Questa sezione contiene le istruzioni per inviare la propria chiave a un server di chiavi in modo che tutti possano scaricarla. Una volta caricata su un server, dopo un breve periodo di tempo, tutti gli altri server di chiavi avranno la propria firma. È possibile velocizzare questo procedimento spedendo la propria chiave a più server.

Inviare una chiave da riga di comando

Digitare nel terminale il seguente comando:

gpg --send-keys --keyserver keyserver.ubuntu.com KEY-ID

sostituendo KEY-ID con l'ID della propria chiave.

Inviare una chiave con un browser web

  1. Esportare la propria chiave digitando nel terminale il seguente comando:

    gpg --export -a "Key-ID" > public.key

    sostituendo KEY-ID con l'ID della propria chiave. Verrà creato un file public.key contenente la propria chiave pubblica.

  2. Aprire una browser e andare al seguente indirizzo: http://keyserver.ubuntu.com:11371/.

  3. Copiare il contenuto del file public.key e incollarlo nella casella sotto la scritta Submit a key, quindi fare clic su Submit this key to the keyserver!.

Firmare una chiave

Il sistema di firma delle chiavi di gpg è fondamentale per la costruzione della rete di fiducia, in quanto la firma di una chiave altrui attesta la verifica dell'identità del proprietario e del suo controllo sulla chiave privata.
Per agevolare questo processo, si raccomanda l'utilizzo del programma caff, che automatizza la firma della chiave pubblica di un interlocutore e gestisce l'invio del risultato, cifrato con la sua chiave pubblica, all'indirizzo e-mail associato. Questo protocollo non solo conferma il possesso della chiave, ma ne convalida anche l'accesso all'indirizzo e-mail corrispondente, rafforzando l'attendibilità tra l'identità dichiarata e il controllo effettivo della chiave crittografica.

Per procedere con la firma di una chiave, è necessario seguire i seguenti passaggi:

Il procedimento di firma di una chiave è sempre svolto dopo aver incontrato la persona.

  1. Durante l'incontro è necessario scambiarsi i fingerprint delle rispettive chiavi e almeno un documento identificativo (con una fotografia all'interno). È possibile ottenere il fingerprint della propria chiave con il comando:

    gpg --fingerprint ID_CHIAVE

    Tali fingerprint vengono solitamente distribuiti su dei foglietti, creati da script come gpg-key2ps, fornito dal pacchetto signing-party (il cui accesso potrebbe richiedere l'abilitazione di repository specifici in alcune distribuzioni).

  2. Controllare che il nome nella chiave corrisponda con quello del documento identificativo.
  3. Dopo aver verificato l'identità, si prepara il processo di firma utilizzando lo strumento caff.

  4. È necessario creare un file .caff nella propria directory Home con i seguenti valori:

    $CONFIG{owner} = q{Nome e cognome};
    $CONFIG{email} = q{L'indirizzo email della chiave};

    Eseguire ora il seguente comando:

    caff ID_CHIAVE

    sostituendo la dicitura ID_CHIAVE con l'ID della chiave che si vuole verificare e firmare.

  5. Quando si ricevono chiavi firmate come allegati, salvarle e importarle con gpg. Sarà quindi possibile inviare queste chiavi a un keyserver.

Cifrare i dati

La cifratura dei dati è un'operazione molto importante per garantirne la sicurezza. GnuPG mette a disposizione due metodi:

Cifratura asimmetrica

Per poter cifrare un file con la propria chiave è necessario essere già in possesso di una coppia di chiavi. In caso contrario bisogna generarla.

  1. Digitare nel terminale il seguente comando:

    gpg -o file_cifrato -ea file_da_cifrare

    dove file_cifrato è il percorso del file che conterrà i dati cifrati e file_da_cifrare il percorso del file che contiene i dati da cifrare.

  2. A questo punto dovrebbe apparire una schermata simile alla seguente:

    Non è stato specificato un ID utente (è possibile usare "-r").
    
    Destinatari attuali:
    
    Inserire l'ID utente, termina con una riga vuota: 

    Inserire il nome del possessore della chiave pubblica con cui si intende cifrare (il destinatario del messaggio), oppure la sua email, quindi cliccare Invio. È possibile specificare anche altri destinatari con la stessa modalità, previo sempre il possesso delle loro chiavi pubbliche. Una volta specificati tutti gli utenti, premere Invio con una riga vuota.

Se l'operazione si conclude senza ulteriori messaggi nel terminale, allora vuol dire che la cifratura dei dati selezionati è riuscita correttamente.

Cifratura simmetrica

  1. Digitare nel terminale il seguente comando:

    gpg -o file_cifrato -ca file_da_cifrare

    dove file_cifrato è il percorso del file che conterrà i dati cifrati, mentre file_da_cifrare il percorso del file contenente i dati originali.

  2. Inserire la passphrase scelta nella finestra che apparirà e premere Invio sulla tastiera o cliccare sul pulsante Sblocca.

  3. A questo punto apparirà una schermata che chiederà di ripetere la passphrase. Ripetere il passaggio precedente.

    Se si clicca su Annulla nella schermata per inserire la passphrase, verrà chiesto di inserire quest'ultima nel terminale. Farlo senza preoccuparsi del fatto che sembri non venire digitata.

Se l'operazione si conclude senza ulteriori messaggi nel terminale, allora vuol dire che la cifratura è andata a buon fine.

La perdita della passphrase comporta la perdita definitiva della possibilità di decifrare il file cifrato.

Decifrare i dati

Digitare nel terminale il seguente comando:

gpg --decrypt percorso_del_file

  • sostituendp percorso_del_file con il percorso del file contenente i dati da decifrare.

A seconda dei casi:

  • Se il file è stato cifrato asimmetricamente e non si è in possesso della chiave privata apparirà il seguente messaggio:

    gpg: de-cifratura non riuscita: la chiave segreta non è disponibile
  • Se il file è stato cifrato simmetricamente, verrà richiesta la passphrase per decifrarlo e, nel caso in cui essa sia errata, verrà stampato questo messaggio:

    gpg: de-cifratura non riuscita: chiave errata
  • Qualora l'operazione si concluda senza errori, il comando visualizzerà a schermo il messaggio decifrato

Firmare i dati

La firma dei dati è utile per verificare l'identità del mittente.

Firma del Codice di condotta di Ubuntu

Prima di firmare il Codice di condotta di Ubuntu è necessario aggiornare il proprio account inserendovi, fra le varie informazioni, la chiave gpg che si desidera utilizzare per tale operazione.

Caricare la chiave in Launchpad

  1. Eseguire l'accesso in Launchpad.

  2. Fare clic sul proprio nome in alto a destra e poi su Edit OpenPGP keys.

  3. Copiare il fingerprint della propria chiave all'interno della casella di testo Key Fingerprint.
    Launchpad spedirà all'indirizzo specificato un'email contenente del testo cifrato con la nuova chiave.

  4. Per procedere con l'operazione di decifratura è sufficiente salvare il testo in un file all'interno della propria Home, quindi digitare in un terminale il seguente comando:

    gpg --decrypt nome_file.txt

    sostituendo nome_file.txt con quello effettivo.

  5. Una volta inserita la passphrase comparirà in chiaro il testo del messaggio, il quale conterrà un collegamento da inserire nella barra degli indirizzi del proprio browser per convalidare la chiave.

Firmare il Codice di condotta

Per firmare il Codice di condotta di Ubuntu bastano tre semplici passaggi:

  1. Scaricare il Codice di condotta da questo indirizzo : https://launchpad.net/codeofconduct/2.0/+download

  2. Se necessario, spostarsi nella cartella dove è stato scaricato il file, quindi digitare il seguente comando:

    gpg --clearsign UbuntuCodeofConduct-2.0.txt
  3. Copiare il contenuto del file appena creato UbuntuCodeofConduct-2.0.txt.asc nel relativo campo presente a questo indirizzo.

Se l'operazione si è conclusa correttamente, sul proprio profilo Launchpad comparirà la voce Yes nella sezione Signed Ubuntu Code of Conduct:.

Firmare e cifrare email

Di seguito sono riportate istruzioni utili a configurare i principali client per firmare e cifrare le email.

Evolution

  1. Avviare Evolution.

  2. Selezionare il menù Modifica → Preferenze.

  3. Fare clic su Account di posta sulla sinistra.

  4. Selezionare l'account di posta per il quale abilitare la crittografia PGP, poi fare clic sul pulsante Modifica per aprire le impostazioni dell'account.

  5. All'interno della scheda Sicurezza, cliccare sulla scheda Sicurezza nella finestra delle impostazioni dell'account.

  6. Nel campo ID chiave OpenPGP inserire l'ID di 8 caratteri della chiave GPG.

    Qualora non si conosca il proprio ID chiave, può essere recuperato tramite un'applicazione di gestione delle chiavi come ad esempio Seahorse (basterà andare nella sezione Chiavi GnuPG, selezionando la propria chiave, facendo clic con il pulsante destro del mouse e scegliendo Proprietà per trovare l'ID chiave.

  7. Configurare le opzioni desiderate per la firma automatica dei messaggi in uscita.
  8. Per confermare fare clic su OK per salvare le impostazioni, quindi su Chiudi per uscire dalla finestra Preferenze.

Thunderbird

A partire dalla versione 78 è incluso il supporto a PGP/GnuPG. Perciò non è necessario installare alcun add-on aggiuntivo.

  1. Seguire da menù il percorso Modifica → Impostazioni account e selezionare l'account email di proprio interesse.

  2. Alla voce Crittografia end-to-end fare clic sulla scheda OpenPGP.
    Se non è già stata associata una chiave, sarà presente il pulsante Aggiungi chiave... che consente di importare una chiave esistente o di generarne una nuova. Fare clic su Continua.

  3. Seguire le istruzioni a schermo per selezionare e importare il file della chiave, quindi per completare l'operazione.

Ulteriori risorse


CategorySicurezza