OpenPGP è uno standard aperto per cifrare e firmare messaggi e file. Lo usano molti programmi: GnuPG dal terminale, Thunderbird per la posta, l’estensione Mailvelope nel browser. Una chiave OpenPGP creata con uno si usa anche con gli altri.

Se non sai ancora cosa sono la chiave pubblica, la chiave privata e la firma, comincia da Cifratura.

Negli esempi nome@instabi.li sei tu e lei@esempio.org è la persona a cui scrivi.

Installare GnuPG

  • Mac, con Homebrew: brew install gnupg
  • Debian e Ubuntu: di solito c’è già; altrimenti sudo apt install gnupg
  • Windows: Gpg4win, da gpg4win.org, con il programma grafico Kleopatra

Il comando gpg --version ti dice se è installato.

Creare le tue chiavi

gpg --full-generate-key

GnuPG ti fa alcune domande:

  1. Il tipo di chiave: va bene quello proposto.
  2. La scadenza: per esempio 2y, due anni. Una chiave che scade smette di valere da sola se la perdi; prima della scadenza la puoi prolungare.
  3. Il nome e l’indirizzo email che la chiave porta con sé.
  4. Una password per la chiave, diversa da quella dei tuoi account.

GnuPG salva anche un certificato di revoca, nella cartella openpgp-revocs.d dentro ~/.gnupg: serve a dire a tutti che la chiave non vale più, se la perdi o se qualcuno te la ruba. Copialo insieme alla copia di sicurezza (vedi sotto).

Dare la tua chiave pubblica

gpg --armor --export nome@instabi.li > chiave-pubblica.asc

Il file chiave-pubblica.asc lo puoi mandare o pubblicare. Chi lo riceve controlla con te l’impronta, che vedi con:

gpg --fingerprint nome@instabi.li

I server di chiavi pubblici rendono la tua chiave, e quindi il tuo indirizzo, trovabile da chiunque: usali solo se lo vuoi.

Usare la chiave di un’altra persona

gpg --import sua-chiave.asc
gpg --fingerprint lei@esempio.org

Confronta l’impronta con quella che ti dà la persona, a voce o da un canale di cui ti fidi. Se coincide, segna la chiave come controllata:

gpg --lsign-key lei@esempio.org

La firma resta sul tuo computer: non dice niente a nessun altro.

Cifrare un file

gpg --encrypt --recipient lei@esempio.org --recipient nome@instabi.li documento.pdf

Crea documento.pdf.gpg. Metti anche te tra i destinatari, se vuoi poterlo riaprire. Con --armor il risultato è testo, da incollare in un messaggio.

Per decifrare un file cifrato per te:

gpg --output documento.pdf --decrypt documento.pdf.gpg

GnuPG ti chiede la password della chiave.

Firmare e verificare

Per firmare un file senza cambiarlo, con la firma in un file a parte:

gpg --armor --detach-sign documento.pdf

Crea documento.pdf.asc: mandalo insieme al file. Chi lo riceve, con la tua chiave pubblica, controlla:

gpg --verify documento.pdf.asc documento.pdf

«Good signature» vuol dire che il file è quello che hai firmato tu. Se il file è stato cambiato anche di un carattere, la verifica fallisce.

Per firmare un testo da incollare in un messaggio, con la firma attaccata al testo: gpg --clearsign nota.txt.

Nella posta

  • Thunderbird ha OpenPGP dentro: in Impostazioni account → Crittografia end-to-end crei una chiave o ne importi una, e cifri e firmi i messaggi mentre li scrivi.
  • Nella webmail, con l’estensione Mailvelope.
  • Con la posta blindata instabi.li cifra con la tua chiave pubblica anche la posta che ricevi. I passi, per Thunderbird e per Mailvelope, sono nel pannello.

Copia di sicurezza, scadenza e revoca

  • Copia di sicurezza. Esporta la chiave privata in un file e conservalo fuori dal computer, lontano dalla sua password:

    gpg --armor --export-secret-keys nome@instabi.li > chiave-privata.asc
    

    Non mandare mai questo file e non caricarlo da nessuna parte.

  • Prolungare la scadenza, prima che arrivi: gpg --quick-set-expire <impronta> 2y, poi dai di nuovo la chiave pubblica a chi la usa.

  • Revocare una chiave persa o rubata: importa il certificato di revoca (gpg --import sul file in openpgp-revocs.d) e manda la chiave pubblica aggiornata a chi la usa. Da quel momento i loro programmi non la usano più.