Proteggi la tua privacy con il comando gpg di Linux. Usa la crittografia di livello mondiale per mantenere i tuoi segreti al sicuro. Ti mostreremo come utilizzare gpg per lavorare con le chiavi, crittografare i file e decrittografarli.
GnuPrivacy Guard (GPG) consente di crittografare i file in modo sicuro in modo che solo il destinatario previsto possa decrittografarli. In particolare, GPG è conforme al OpenPGP standard. È 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 chiave pubblica. La chiave pubblica può decrittografare qualcosa che è stato crittografato utilizzando la chiave privata.
Per inviare un file in modo sicuro, crittografalo con la tua chiave privata e la chiave pubblica del destinatario. Per decrittografare il file, hanno bisogno della loro chiave privata e della tua chiave pubblica.
Vedrai da questo che le chiavi pubbliche devono essere condivise. È necessario disporre della chiave pubblica del destinatario per crittografare il file e il destinatario ha bisogno della tua chiave pubblica per decrittografarlo. Non c’è pericolo nel rendere le tue chiavi pubbliche solo così: pubbliche. In effetti, ci sono server a chiave pubblica proprio per questo scopo, come vedremo. Le chiavi private devono essere mantenute private. Se la tua chiave pubblica è di dominio pubblico, la tua chiave privata deve essere mantenuta segreta e sicura.
Ci sono più passaggi coinvolti nella configurazione di GPG che nell’usarlo. Per fortuna, di solito è necessario configurarlo solo una volta.
Sommario:
Generazione delle chiavi
Il comando gpg è stato installato su tutte le distribuzioni Linux controllate, inclusi Ubuntu, Fedora e Manjaro.
Non è necessario utilizzare GPG con la posta elettronica. È possibile crittografare i file e renderli disponibili per il download oppure passarli fisicamente al destinatario. Tuttavia, è necessario associare un indirizzo e-mail alle chiavi generate, quindi scegli quale indirizzo e-mail utilizzerai.
Ecco il comando per generare le tue chiavi. L’opzione –full-generate-key genera le chiavi in una sessione interattiva all’interno della finestra del terminale. Ti verrà anche richiesta una passphrase. Assicurati di ricordare qual è la passphrase. Tre o quattro semplici parole unite insieme alla punteggiatura sono una buona e modello robusto per password e passphrase.
gpg --full-generate-key
Ti 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.
È necessario scegliere una lunghezza in bit per le chiavi di crittografia. Premere Invio per accettare l’impostazione predefinita.
È necessario specificare la durata della chiave. Se stai testando il sistema, inserisci una breve durata come 5 per cinque giorni. Se vuoi mantenere questa chiave, inserisci una durata più lunga come 1 anno per un anno. La chiave durerà 12 mesi e quindi dovrà essere rinnovata dopo un anno. Conferma la tua scelta con una 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 lavori con le tue chiavi, quindi assicurati di sapere di cosa si tratta.
Fare clic sul pulsante OK dopo aver inserito la passphrase. Vedrai questa finestra mentre lavori con gpg, quindi assicurati di ricordare la tua passphrase.
La generazione della chiave avrà luogo e verrai reindirizzato al prompt dei comandi.
Generazione di un certificato di revoca
Se la tua chiave privata diventa nota ad altri, dovrai dissociare le vecchie chiavi dalla tua identità, in modo da poterne generare di nuove. Per fare ciò, avrai 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 si desidera creare. L’opzione –gen-revoke fa sì che gpg generi un certificato di revoca. Devi fornire l’indirizzo email che hai utilizzato quando sono state generate le chiavi.
gpg --output ~/revocation.crt --gen-revoke dave-geek@protonmail.com
Ti verrà chiesto di confermare che desideri generare un certificato. Premi Y e premi Invio. Ti verrà chiesto il motivo per cui stai 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 lo desideri. Premi Invio due volte per terminare la descrizione.
Ti verrà chiesto di confermare le tue impostazioni, premi Y e premi Invio.
Il certificato verrà generato. Verrà visualizzato un messaggio che rinforza la necessità di tenere al sicuro questo certificato.
Menziona qualcuno chiamato Mallory. Le discussioni sulla crittografia sono state utilizzate da tempo Bob e Alice come le due persone che comunicano. Ci sono altri personaggi secondari. Eve è un intercettatore, Mallory è un malintenzionato. Tutto quello che dobbiamo sapere è che dobbiamo mantenere il certificato sicuro e protetto.
Come minimo, rimuoviamo dal certificato tutte le autorizzazioni tranne la nostra.
chmod 600 ~/revocation.crt
Controlliamo con ls per vedere quali sono i permessi ora:
ls -l
È perfetto. Nessuno a parte il proprietario del file, noi, può fare qualcosa con il certificato.
Importazione della chiave pubblica di qualcun altro
Per crittografare un messaggio che un’altra persona può decrittografare, dobbiamo avere la sua chiave pubblica.
Se ti è stata fornita la loro chiave in un file, puoi 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 ti vengono mostrati il nome e l’indirizzo e-mail associati a quella chiave. Ovviamente, dovrebbe corrispondere alla persona da cui l’hai ricevuto.
C’è anche la possibilità che la persona da cui hai bisogno di una chiave abbia caricato la sua chiave su un server di chiavi pubbliche. Questi server memorizzano le chiavi pubbliche delle persone da tutto il mondo. I server delle chiavi si sincronizzano periodicamente tra loro in modo che le chiavi siano universalmente disponibili.
Il server di chiavi pubbliche del MIT è un server di chiavi popolare e viene regolarmente sincronizzato, quindi la ricerca dovrebbe avere esito positivo. Se qualcuno ha caricato una chiave solo di recente, potrebbero essere necessari alcuni giorni prima che venga visualizzata.
L’opzione –keyserver deve essere seguita dal nome del server delle chiavi che si desidera cercare. L’opzione –search-keys deve essere seguita dal nome della persona che stai cercando o dal suo indirizzo email. Useremo l’indirizzo email:
gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com
Le partite sono elencate per te e numerate. Per importarne uno, digita il numero e premi Invio. In questo caso, c’è una singola corrispondenza, quindi digitiamo 1 e premiamo Invio.
La chiave viene importata e ci vengono mostrati il nome e l’indirizzo e-mail associati a quella chiave.
Verifica e firma di una chiave
Se ti è stato consegnato un file di chiave pubblica da qualcuno a te noto, puoi 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.
È quindi possibile utilizzare l’opzione –fingerprint per generare la stessa sequenza di impronte digitali di caratteri esadecimali e confrontarli. Se corrispondono, sai che la chiave appartiene a quella persona.
gpg --fingerprint mary-geek@protonmail.com
L’impronta digitale viene generata.
Quando sei soddisfatto che la chiave sia autentica e appartenga alla persona a cui dovrebbe essere associata, puoi firmare la sua chiave.
Se non lo fai, puoi comunque usarlo per crittografare e decrittografare i messaggi da e verso quella persona. Ma gpg ti chiederà ogni volta se desideri procedere perché la chiave non è firmata. Useremo l’opzione –sign-key dal nome appropriato e forniremo l’indirizzo email della persona, in modo che gpg sappia quale chiave firmare.
gpg --sign-key mary-geek@protonmail.com
Vedrai le informazioni sulla chiave e sulla persona e ti verrà chiesto di confermare che desideri 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 dall’archivio chiavi locale gpg. Per fare ciò, utilizzeremo l’opzione –export, che deve essere seguita dall’indirizzo e-mail che hai utilizzato 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 output ASCII armor invece di un file binario.
gpg --output ~/dave-geek.key --armor --export dave-geek@protonmail.com
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 server delle chiavi. L’opzione –keyserver deve essere seguita dall’indirizzo web del server delle chiavi pubbliche. Per identificare quale chiave inviare, l’impronta digitale della chiave deve essere fornita sulla riga di comando. Nota che non ci sono spazi tra i set di quattro caratteri.
(Puoi vedere l’impronta digitale per la tua chiave utilizzando l’opzione –fingerprint.)
gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4
Riceverai 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 crittografare il file e l’opzione –sign gli dice di firmare il file con i tuoi dettagli. 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 mary-geek@protonmail.com
Il file viene creato con lo stesso nome dell’originale, ma con “.asc” aggiunto al nome del file. Diamo un’occhiata al suo interno.
less Raven.txt.asc
Il file è completamente illeggibile e può essere decrittografato solo da qualcuno che possiede la tua chiave pubblica e la chiave privata di Mary. L’unica persona ad averli entrambi dovrebbe essere Mary.
Ora possiamo inviare il file a Mary fiduciosi che nessun altro possa decriptarlo.
Decifrare i file
Mary ha inviato una risposta. Si trova in un file crittografato chiamato coded.asc. Possiamo decrittografarlo molto facilmente usando l’opzione –decrypt. Reindirizzeremo l’output in un altro file chiamato plain.txt.
Nota che non dobbiamo dire a gpg da chi proviene il file. Può risolverlo dal contenuto crittografato del file.
gpg --decrypt coded.asc > plain.txt
Il file è stato decrittografato con successo per noi.
Aggiornare le tue chiavi
Periodicamente, puoi chiedere a gpg di controllare le chiavi che ha su un server di chiavi pubbliche e di aggiornare quelle che sono cambiate. Puoi 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 delle chiavi pubbliche, non dovrebbe importare quale scegli.
gpg --keyserver pgp.mit.edu --refresh-keys
gpg risponde elencando le chiavi che controlla e facendoti sapere se alcune sono state modificate e aggiornate.
La privacy è un argomento caldo
La privacy non è mai lontana dalle notizie di questi tempi. Qualunque sia la ragione per cui desideri mantenere le tue informazioni sicure e private, gpg fornisce un mezzo semplice per applicare una crittografia incredibilmente potente ai tuoi file e alle tue comunicazioni.
Ci sono altri modi per usare gpg. Puoi ottenere un plugin per Thunderbird chiamato Enigmail. Si aggancia direttamente alla configurazione gpg per consentirti di crittografare i messaggi di posta elettronica dall'interno di Thunderbird.