Come crittografare e decrittografare i file con GPG su Linux

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.

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.

domande di generazione chiave in una finestra di terminale

È 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.

domande di generazione chiave in una finestra di terminale

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.

finestra passphrase gpg

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 della chiave gpg completata in una finestra di terminale

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

gpg --output ~ / revocation.crt --gen-revoke dave-geek@protonmail.com in una finestra di terminale

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.

domande sui certificati gpg in una finestra di terminale

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

chmod 600 ~ / revocation.crt in una finestra di terminale

Controlliamo con ls per vedere quali sono i permessi ora:

ls -l

https://cryptocouple.com/ in una finestra di terminale

È 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

gpg --import mary-geek.key in una finestra del terminale

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.

chiave importata con successo in una finestra di terminale

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

gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com in una finestra di terminale

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.

gpg keyserver risulta in una finestra di terminale

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

gpg --fingerprint mary-geek@protonmail.com in una finestra di terminale

L’impronta digitale viene generata.

impronta digitale gpg in una finestra di terminale

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

gpg --sign-key mary-geek@protonmail.com in una finestra di terminale

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.

conferma della firma della chiave gpg in una finestra di terminale

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

gpg --output ~ / dave-geek.key --armor --export dave-geek@protonmail.com in una finestra di terminale

Possiamo dare un’occhiata all’interno del file chiave con less.

less dave-geek.key

file di chiave pubblica in less in una finestra di terminale

La chiave è mostrata in tutto il suo splendore:

file di chiave pubblica in less in una finestra di terminale

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

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4 in una finestra di terminale

Riceverai la conferma che la chiave è stata inviata.

la chiave di conferma è stata inviata al server delle chiavi in ​​una finestra di terminale

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

gpg --encrypt --sign --armor -r mary-geek@protonmail.com in una finestra di terminale

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

less Raven.txt.asc in una finestra di terminale

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.

Contenuto crittografato di raven.txt.asc in una finestra di terminale

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

gpg --decrypt coded.asc> plain.txt in una finestra di terminale “width =” 646 ″ height = “212 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = “this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Diamo un’occhiata al file plain.txt: </p>
<pre> less plain.txt </ pre > <p> <img loading =

Il file è stato decrittografato con successo per noi.

file decrittografato in less in una finestra di terminale

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 --keyserver pgp.mit.edu --refresh-keys in una finestra di terminale

gpg risponde elencando le chiavi che controlla e facendoti sapere se alcune sono state modificate e aggiornate.

La chiave gpg si aggiorna in una finestra di terminale

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.