- Dave McKay
@TheGurkha
- July 12, 2019, 8:00am EDT
Proteggi la tua privacy con il comando Linux gpg
. Usa la crittografia di classe mondiale per mantenere i tuoi segreti al sicuro. Vi mostreremo come usare gpg per lavorare con le chiavi, cifrare i file e decifrarli.
GnuPrivacy Guard (GPG) vi permette di cifrare in modo sicuro i file in modo che solo il destinatario previsto possa decifrarli. In particolare, GPG è conforme allo standard OpenPGP. È modellato su un programma chiamato Pretty Good Privacy (PGP). PGP è stato scritto nel 1991 da Phil Zimmerman.
GPG si basa sull’idea di due chiavi di crittografia per persona. Ogni persona ha una chiave privata e una pubblica. La chiave pubblica può decifrare qualcosa che è stato criptato con la chiave privata.
Per inviare un file in modo sicuro, lo si cripta con la propria chiave privata e la chiave pubblica del destinatario. Per decifrare il file, hanno bisogno della loro chiave privata e della tua chiave pubblica.
Vedrai da questo che le chiavi pubbliche devono essere condivise. Tu devi avere la chiave pubblica del destinatario per cifrare il file, e il destinatario ha bisogno della tua chiave pubblica per decifrarlo. Non c’è pericolo nel rendere le vostre chiavi pubbliche solo questo: pubbliche. Infatti, ci sono server a chiave pubblica proprio per questo scopo, come vedremo. Le chiavi private devono essere mantenute private. Se la vostra chiave pubblica è di dominio pubblico, allora la vostra chiave privata deve essere tenuta segreta e sicura.
Ci sono più passi da fare per configurare GPG che per usarlo. Per fortuna, di solito basta impostarlo una sola volta.
Generazione delle chiavi
Il comando gpg
è stato installato su tutte le distribuzioni Linux che sono state controllate, comprese Ubuntu, Fedora e Manjaro.
Non è necessario utilizzare GPG con le e-mail. Puoi criptare i file e renderli disponibili per il download, o passarli fisicamente al destinatario. Dovrete comunque associare un indirizzo email alle chiavi che genererete, quindi scegliete quale indirizzo email userete.
Qui c’è il comando per generare le vostre chiavi. L’opzione --full-generate-key
genera le vostre chiavi in una sessione interattiva all’interno della vostra finestra di terminale. Vi verrà anche richiesta una passphrase. Assicuratevi di ricordare qual è la passphrase. Tre o quattro semplici parole unite insieme alla punteggiatura sono un buon e robusto modello per password e passphrase.
gpg --full-generate-key
Vi verrà chiesto di scegliere un tipo di crittografia da un menu. A meno che tu non abbia una buona ragione per non farlo, digita 1
e premi Invio.
Devi scegliere una lunghezza di bit per le chiavi di crittografia. Premete Invio per accettare l’impostazione predefinita.
È necessario specificare la durata della chiave. Se state testando il sistema, inserite una breve durata come 5
per cinque giorni. Se avete intenzione di mantenere questa chiave, inserite una durata più lunga come 1y per un anno. La chiave durerà 12 mesi e quindi dovrà essere rinnovata dopo un anno. Conferma la tua scelta con un Y
.
Devi inserire il tuo nome e il tuo indirizzo email. Puoi aggiungere un commento se lo desideri.
Ti verrà richiesta la tua passphrase. Avrai bisogno della passphrase ogni volta che lavorerai con le tue chiavi, quindi assicurati di sapere qual è.
Clicca il pulsante OK
quando hai inserito la tua passphrase. Vedrai questa finestra mentre lavori con gpg
, quindi assicurati di ricordare la tua passphrase.
La generazione della chiave avrà luogo, e sarai riportato al prompt dei comandi.
Generazione di un certificato di revoca
Se la vostra chiave privata diventa nota ad altri, dovrete dissociare le vecchie chiavi dalla vostra identità, in modo da poterne generare di nuove. Per fare questo, avrete bisogno di un certificato di revoca. Lo faremo ora e lo conserveremo in un posto sicuro.
L’opzione --output
deve essere seguita dal nome del file del certificato che volete creare. L’opzione --gen-revoke
fa sì che gpg
generi un certificato di revoca. Dovete fornire l’indirizzo email che avete usato quando le chiavi sono state generate.
gpg --output ~/revocation.crt --gen-revoke [email protected]
Vi verrà chiesto di confermare che volete generare un certificato. Premi Y
e premi Invio. Vi verrà chiesto il motivo per cui state generando il certificato. Dato che lo stiamo facendo in anticipo, non lo sappiamo con certezza. Premi 1
come ipotesi plausibile e premi Invio.
Puoi inserire una descrizione se vuoi. Premete due volte Invio per terminare la descrizione.
Vi verrà chiesto di confermare le impostazioni, premete Y
e premete Invio.
Il certificato verrà generato. Vedrete un messaggio che rafforza la necessità di tenere questo certificato al sicuro.
Si parla di qualcuno chiamato Mallory. Le discussioni sulla crittografia hanno usato a lungo Bob e Alice come le due persone che comunicano. Ci sono altri personaggi di supporto. Eve è un’intercettatrice, Mallory è un malintenzionato. Tutto quello che dobbiamo sapere è che dobbiamo mantenere il certificato sicuro e protetto.
Come minimo, rimuoviamo tutti i permessi tranne il nostro dal certificato.
chmod 600 ~/revocation.crt
Controlliamo con ls
per vedere quali sono i permessi ora:
ls -l
Questo è perfetto. Nessuno a parte il proprietario del file – noi – può fare qualcosa con il certificato.
Importare la chiave pubblica di qualcun altro
Per criptare un messaggio che un’altra persona può decriptare, dobbiamo avere la sua chiave pubblica.
Se vi è stata fornita la loro chiave in un file, potete importarla con il seguente comando. In questo esempio, il file della chiave si chiama “mary-geek.key.”
gpg --import mary-geek.key
La chiave viene importata, e vi viene mostrato il nome e l’indirizzo email associato a quella chiave. Ovviamente, questo dovrebbe corrispondere alla persona da cui l’avete ricevuta.
C’è anche la possibilità che la persona da cui avete bisogno di una chiave abbia caricato la sua chiave su un server di chiavi pubbliche. Questi server conservano le chiavi pubbliche delle persone di tutto il mondo. I server di chiavi si sincronizzano tra loro periodicamente in modo che le chiavi siano universalmente disponibili.
Il server di chiavi pubbliche del MIT è un server di chiavi popolare e regolarmente sincronizzato, quindi la ricerca lì dovrebbe avere successo. Se qualcuno ha caricato una chiave solo di recente, potrebbe impiegare qualche giorno per apparire.
L’opzione --keyserver
deve essere seguita dal nome del server di chiavi che vuoi cercare. L’opzione --search-keys
deve essere seguita dal nome della persona che stai cercando o dal suo indirizzo e-mail. Useremo l’indirizzo email:
gpg --keyserver pgp.mit.edu --search-keys [email protected]
Le corrispondenze sono elencate per voi e numerate. Per importarne una, digitate il numero e premete Invio. In questo caso, c’è una sola corrispondenza, quindi digitiamo 1
e premiamo Invio.
La chiave viene importata, e ci viene mostrato il nome e l’indirizzo email associati a quella chiave.
Verificare e firmare una chiave
Se vi è stato consegnato un file di chiave pubblica da qualcuno che conoscete, potete tranquillamente dire che appartiene a quella persona. Se l’hai scaricata da un server di chiavi pubbliche, potresti sentire il bisogno di verificare che la chiave appartenga alla persona a cui è destinata.
L’opzione --fingerprint
fa sì che gpg
crei una breve sequenza di dieci serie di quattro caratteri esadecimali. Puoi chiedere alla persona di inviarti l’impronta digitale della sua chiave.
Puoi poi usare l’opzione --fingerprint
per generare la stessa sequenza di caratteri esadecimali e confrontarli. Se corrispondono, si sa che la chiave appartiene a quella persona.
gpg --fingerprint [email protected]
L’impronta digitale è generata.
Quando siete soddisfatti che la chiave sia genuina e appartenga alla persona a cui dovrebbe essere associata, potete firmare la sua chiave.
Se non lo fate, potete ancora usarla per criptare e decriptare messaggi da e per quella persona. Ma gpg
vi chiederà ogni volta se volete procedere perché la chiave non è firmata. Useremo l’opzione --sign-key
e forniremo l’indirizzo email della persona, in modo che gpg
sappia quale chiave firmare.
gpg --sign-key [email protected]
Vedrai le informazioni sulla chiave e sulla persona, e ti verrà chiesto di verificare che vuoi davvero firmare la chiave. Premi Y
e premi Invio per firmare la chiave.
Come condividere la tua chiave pubblica
Per condividere la tua chiave come file, dobbiamo esportarla dal gpg
deposito locale delle chiavi. Per farlo, useremo l’opzione --export
, che deve essere seguita dall’indirizzo email che hai usato per generare la chiave. L’opzione --output
deve essere seguita dal nome del file in cui si desidera esportare la chiave. L’opzione --armor
dice a gpg
di generare un output ASCII armor invece di un file binario.
gpg --output ~/dave-geek.key --armor --export [email protected]
Possiamo dare un’occhiata all’interno del file chiave con less
.
less dave-geek.key
La chiave è mostrata in tutto il suo splendore:
Puoi anche condividere la tua chiave pubblica su un server di chiavi pubbliche. L’opzione --send-keys
invia la chiave al keyserver. L’opzione --keyserver
deve essere seguita dall’indirizzo web del server della chiave pubblica. Per identificare quale chiave inviare, l’impronta digitale della chiave deve essere fornita sulla linea di comando. Notate che non ci sono spazi tra le serie di quattro caratteri.
(Potete vedere l’impronta digitale della vostra chiave usando l’opzione --fingerprint
.)
gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4
Avrete la conferma che la chiave è stata inviata.
Crittografia dei file
Siamo finalmente pronti per crittografare un file e inviarlo a Mary. Il file si chiama Raven.txt.
L’opzione --encrypt
dice a gpg
di criptare il file, e l’opzione --sign
dice di firmare il file con i tuoi dati. L’opzione --armor
dice a gpg di creare un file ASCII. L’opzione -r
(destinatario) deve essere seguita dall’indirizzo email della persona a cui stai inviando il file.
gpg --encrypt --sign --armor -r [email protected]
Il file viene creato con lo stesso nome dell’originale, ma con “.asc” aggiunto al nome. Diamo un’occhiata al suo interno.
less Raven.txt.asc
Il file è completamente illeggibile, e può essere decifrato solo da qualcuno che ha la tua chiave pubblica e la chiave privata di Mary. L’unica persona ad avere entrambi dovrebbe essere Mary.
Possiamo ora inviare il file a Mary sicuri che nessun altro possa decifrarlo.
Decifrare i file
Mary ha inviato una risposta. È in un file criptato chiamato coded.asc. Possiamo decifrarlo molto facilmente usando l’opzione --decrypt
. Stiamo per reindirizzare l’output in un altro file chiamato plain.txt.
Nota che non dobbiamo dire gpg
da chi viene il file. Può capirlo dal contenuto criptato del file.
gpg --decrypt coded.asc > plain.txt
Guardiamo il file plain.txt:
less plain.txt
Il file è stato decrittato con successo per noi.
Rinfrescare le tue chiavi
Periodicamente, puoi chiedere a gpg
di controllare le chiavi che ha con un server di chiavi pubbliche e di aggiornare quelle che sono cambiate. Potresti farlo ogni pochi mesi o quando ricevi una chiave da un nuovo contatto.
L’opzione --refresh-keys
fa sì che gpg
esegua il controllo. L’opzione --keyserver
deve essere seguita dal server delle chiavi di vostra scelta. Una volta che le chiavi sono state sincronizzate tra i server di chiavi pubbliche, non dovrebbe importare quale scegliete.
gpg --keyserver pgp.mit.edu --refresh-keys
gpg
risponde elencando le chiavi che controlla e facendovi sapere se qualcuna è cambiata e aggiornata.
La privacy è un argomento caldo
La privacy non è mai lontana dalle notizie di questi giorni. Qualunque siano le ragioni per cui volete mantenere le vostre informazioni sicure e private, gpg
fornisce un mezzo semplice per applicare una crittografia incredibilmente forte ai vostri file e comunicazioni.
Ci sono altri modi per usare gpg
. È possibile ottenere un plugin per Thunderbird chiamato Enigmail. Si aggancia direttamente alla vostra configurazione gpg
per permettervi di criptare i messaggi di posta elettronica dall’interno di Thunderbird.
Dave McKay ha usato i computer per la prima volta quando il nastro di carta perforato era in voga, e da allora ha sempre programmato. Dopo oltre 30 anni nell’industria IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera, ha lavorato come programmatore freelance, come manager di un team internazionale di sviluppo software, come project manager di servizi IT e, più recentemente, come Data Protection Officer. Dave è un evangelista di Linux e un sostenitore dell’open source.Read Full Bio ”