Usando il comando gpg di GnuPG puoi generare chiavi pubbliche e private. In questo tutorial, utilizzeremo le chiavi generate dal comando gpg per inviare e ricevere file crittografati e firmeremo digitalmente un file.
Crittografa un file e invialo al tuo amico
1. Importa la chiave pubblica del tuo amico
Quando vuoi inviare un file segreto al tuo amico, la prima cosa da fare è importare la chiave pubblica del tuo amico. Puoi importare la chiave pubblica dei tuoi amici da un "server chiavi" se ha esportato la loro chiave pubblica su un server chiavi.
Fare riferimento alla sezione "Esporta le tue chiavi pubbliche" nel nostro articolo Nozioni di base su GnuPG per capire come esportare la tua chiave pubblica su un server di chiavi.
Per importare la chiave pubblica da un server delle chiavi, procedere come segue. È possibile importare utilizzando uno qualsiasi dei metodi sopra indicati. Fornisci l'ID chiave o l'ID e-mail o il nome reale del tuo amico per importare correttamente le chiavi.
$ gpg --search-keys --keyserver keyserver.ubuntu.com 'KEY-ID' or $ gpg --search-keys --keyserver keyserver.ubuntu.com 'E-Mail ID' or $ gpg --search-keys --keyserver keyserver.ubuntu.com 'Real Name'
Per importare la chiave pubblica da un file, procedi come segue. Se il tuo amico ti ha inviato via e-mail la sua chiave pubblica, puoi importare quelle chiavi usando il seguente comando
$ gpg --import myfriends_pub_key.gpg
2. Verifica il server delle chiavi importato
Puoi verificare se hai importato correttamente la chiave pubblica del tuo amico usando l'opzione –list-keys
$ gpg --list-keys /home/lakshmanan/.gnupg/pubring.gpg ----------------------------------- pub 2048R/A7344E7D 2012-10-12 uid lakshmanan (My test GPG keys) sub 2048R/96F8EF9B 2012-10-12 pub 2048R/FB2744A8 2012-12-03 uid raman (Ram's test ID) sub 2048R/88EF55EE 2012-12-03
Ora ho importato la chiave pubblica del mio amico Raman.
3. Cripta un file segreto usando la chiave pubblica del tuo amico
Ora che hai la chiave pubblica del tuo amico, puoi inviargli un file, che viene crittografato utilizzando la "Chiave pubblica del tuo amico", in modo che solo il tuo amico (Chi ha la chiave privata), può decrittografarlo.
$ gpg --encrypt --recipient raman a.txt gpg: 88EF55EE: There is no assurance this key belongs to the named user pub 2048R/88EF55EE 2012-12-03 raman (Ram's test ID) Primary key fingerprint: FF32 7764 A0AE 1E85 AC4B CF17 8AED B292 FB27 44A8 Subkey fingerprint: D6A5 7107 77C8 6845 2F86 765C EEED DD85 88EF 55EE It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes. Use this key anyway? (y/N) y
Nota che c'è un avviso che dice che non vi è alcuna garanzia che la "Chiave pubblica" appartenga al tuo amico. Ci guarderemo indietro quando il tempo lo permetterà. A partire da ora, dato che mi fido del mio fritto, ho dato "Sì" per usare la chiave.
Creerà un file chiamato "a.txt.pgp", una volta aperto utilizzando l'editor, avrà alcuni dati binari. Invia questo file al tuo amico con qualsiasi mezzo.
Se non vuoi inviare un contenuto binario, o ci sono problemi nell'invio del binario, puoi usare l'opzione –armor che crea un file ASCII come mostrato di seguito.
$ gpg --encrypt --armor --recipient raman a.txt
Decrittografa un file
Ora il tuo amico avrebbe ricevuto il tuo file crittografato. Per visualizzare il contenuto del file, deve decrittografare il file. Poiché l'operazione di decrittazione verrà eseguita utilizzando la chiave privata del tuo amico, verrà richiesta la passphrase fornita dal tuo amico durante la creazione delle chiavi.
$ gpg --decrypt a.txt.gpg > secret.txt
Ora il file secret.txt conterrà il vero testo scritto.
Invia un file crittografato a più destinatari
Puoi anche inviare un file a più destinatari utilizzando –recipient o -r
$ gpg -r raman -r steve -r gopi --encrypt a.txt
Una volta dato il comando precedente, gpg utilizzerà la chiave pubblica di tutti i destinatari per crittografare i dati in modo tale che una qualsiasi delle loro chiavi private possa decrittografare i dati.
Nel prossimo articolo di questa serie, spiegheremo come firmare il messaggio con dati e timestamp.