Guida a GnuPG programma libero da restrizioni per crittografare: cifrare e decifrare documenti.

gnupg-logoGNU Privacy Guard (GnuPG o GPG), rilasciato sotto la licenza GNU GPL, è un programma progettato per sostituire la suite crittografica PGP.

GPG è completamente compatibile con gli standard OpenPGP dell'IETF ed è sostenuto dal governo tedesco.

Fa parte del software sviluppato dalla Free Software Foundation.
E' importante specificare che GnuPG è un programma  libero da restrizioni, potete usarlo anche in azienda.

Il progetto GnuPG va avanti grazie anche a finanziamenti concessi dal Ministero tedesco per l'Economia e la Tecnologia.
Principale autore del progetto è Werner Koch.

GnuPG vi permette di crittografare e/o firmare documenti e email, è indispensabile per proteggere la privacy ma anche per certificare la propria identità in Internet o anche per assicurare l'integrità di programmi scaricabili (eseguibili firmati)

Se siete una banca, un azienda ma anche semplicemente un privato  potreste prima o poi sentire l'esigenza di un programma simile, siamo nell'era digitale e delle telecomunicazioni ma quella della sicurezza informatica è ancora molto lontana...

Vi ricordo che dal Gennaio 2004 in Italia  è in vigore la legge (196/03)  Decreto Legislativo del 30 Giugno 2003

"Codice in materia di protezione dei dati personali" dove all'articolo 34 punto h potete leggere proprio : "adozione di tecniche di cifratura o di codici identificativi per determinati trattamenti di dati idonei a rivelare lo stato di salute o la vita sessuale effettuati da organismi sanitari"

Quindi se siete un organo istituzionale, un azienda o un semplice studio medico potete ottemperare agli obblighi di legge usando il programma GnuPG a costo zero per conservare al sicuro i dati o farli viaggiare cifrati per  email.

GPG è un programma stabile e maturo, ed è distribuito con parecchi sistemi operativi liberi come FreeBSD, OpenBSD, e NetBSD, oltre che, ovviamente, con tutte le distribuzioni GNU/Linux. È disponibile anche per le varie versioni dei sistemi operativi proprietari Microsoft Windows e Mac OS X, e grazie alla sua portabilità ed alla disponibilità del codice sorgente è possibile crearne una versione per qualsiasi OS.

Nonostante la versione di base di GPG fornisca un'interfaccia a riga di comando completa, sono state sviluppate parecchie interfacce grafiche, Seahorse per GNOME, KGPG per KDE, o metodi per integrarlo all'interno di programmi di posta elettronica, come KMail, Evolution (i client e-mail di default per, rispettivamente, KDE e GNOME). Un plug-in apposito, Enigmail, permette l'integrazione con Thunderbird, semplificando l'utilizzo di GPG (per la posta) sotto Microsoft Windows, GNU/Linux ed altri sistemi operativi. Parecchi client e-mail testuali, tra cui Mutt, supportano la gestione delle mail firmate o cifrate con GPG (o PGP, la configurazione è abbastanza simile per entrambi).
gnupg_prefs-001
Si deve sempre tenere in mente che, poiché quei sistemi di plugin non fanno parte del progetto GPG né dello standard OpenPGP e che gli sviluppatori di GPG e di OpenPGP non hanno preso parte alla progettazione di tali sistemi, potrebbe accadere che la sicurezza fornita da GPG venga abbassata o addirittura compromessa dall'utilizzo di tali interfacce.

GPG può essere compilato sotto altre piattaforme come Mac OS X e Windows. Per Windows un software che può esser considerato l'erede del commerciale PGP, è Gpg4win, mentre Mac OS X esiste un port chiamato MacGPG. In particolare questo software è stato adattato per usare l'interfaccia utente di OS X e le sue funzioni native. La cross-compilazione non è un lavoro semplice, anche solo per il fatto che i sistemi operativi provvedono ai requisiti di sicurezza in modalità molto diverse (anche da una versione all'altra) ed è spesso complesso adattare a queste modalità il programma per mantenere identici livelli qualitativi sui vari sistemi.

GnuPG utilizza la crittografia a chiave pubblica per permettere a coloro che lo utilizzano di comunicare in sicurezza. In un sistema a chiave pubblica ogni utente ha una coppia di chiavi consistenti in una chiave privata e una chiave pubblica. La chiave privata di una persona viene tenuta segreta; non deve mai essere rivelata. La chiave pubblica può essere data a tutti coloro con i quali l'utente vuole comunicare. GnuPG utilizza uno schema in qualche modo più sofisticato per il quale un utente possiede una coppia di chiavi primaria e zero o più coppie di chiavi subordinate addizionali. La coppia di chiavi primaria e quelle subordinate sono raggruppate assieme per facilitare la gestione delle chiavi e il mazzo così ottenuto può spesso essere considerato semplicemente come un'unica coppia di chiavi.

Cifrare e decifrare documenti.
Chiave pubblica e privata hanno ognuna uno specifico ruolo nella codifica e decodifica di documenti. Una chiave pubblica può essere vista come una cassaforte aperta. Quando un corrispondente cripta un documento utilizzando una chiave pubblica, quel documento viene messo nella cassaforte, la cassaforte viene chiusa ed il lucchetto a combinazione fatto girare diverse volte. La chiave privata corrispondente è la combinazione che può riaprire la cassaforte e recuperare il documento. In altre parole, solo la persona che detiene la chiave privata può recuperare un documento cifrato utilizzando la chiave pubblica corrispondente.

La procedura per criptare e decriptare documenti è banale con questo modello mentale. Se si desidera cifrare un messaggio per Alice, lo si cripta utilizzando la chiave pubblica di Alice e lei lo decripterà con la sua chiave privata. Se Alice vuole spedirvi un messaggio, lo cripterà utilizzando la vostra chiave pubblica e voi lo decripterete con la vostra chiave privata.
Per cifrare un documento viene utilizzata l'opzione --encrypt. È necessario possedere le chiavi pubbliche dei destinatari a cui si intende spedire il messaggio. Il programma si aspetta il nome del documento da cifrare come ingresso; se omesso, legge lo standard input. Il risultato cifrato è stampato sullo standard output oppure dove specificato con l'opzione --output. Il documento, oltre ad essere criptato, viene compresso per ragioni di maggior sicurezza.

alice% gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc

L'opzione --recipient viene utilizzata una sola volta per ogni destinatario e richiede un argomento extra che specifichi con quale chiave pubblica debba essere criptato il documento. Tale documento può essere decriptato solo da qualcuno in possesso di una chiave privata che complementi una delle chiave pubbliche dei destinatari. In particolare non è possibile decifrare un documento criptato da voi stessi, a meno che non abbiate incluso la vostra chiave pubblica nella lista dei destinatari.

Per decriptare un messaggio si usa l'opzione --decrypt. È necessario possedere la chiave privata con la quale era stato cifrato il messaggio. Analogamente al processo di cifratura, il documento da decifrare è l'ingresso e quello decifrato è l'uscita.

blake% gpg --output doc --decrypt doc.gpg
Ti serve una passphrase per sbloccare la chiave segreta
dell'utente: "Blake (esecutore) <blake@cyb.org>"
chiave ELG-E di 1024 bit, ID 5C8CBD41, creata il 1999-06-04 (key ID principale 9E98BC16)

Inserisci la passphrase:
I documenti posso anche essere criptati senza l'utilizzo della crittografia a chiave pubblica. Al suo posto è possibile utilizzare un algoritmo di crittografia simmetrico per cifrare il documento. La chiave fornita all'algoritmo simmetrico viene derivata da una frase d'ordine fornita al momento in cui il documento viene criptato e, per una buona sicurezza, non dovrebbe essere la stessa passphrase utilizzata per proteggere la propria chiave privata. La cifratura simmetrica è utile per rendere sicuri i propri documenti quando non è necessario comunicare ad altri la parola d'ordine utilizzata. Un documento può essere criptato con un algoritmo simmetrico utilizzando l'opzione --symmetric.
alice% gpg --output doc.gpg --symmetric doc
Inserisci la passphrase:

Fare e verificare firme.
Una firma digitale certifica e appone la data ad un documento. Se il documento viene successivamente modificato in qualsiasi modo, una verifica della firma fallirà. Una firma digitale può servire allo stesso scopo per il quale si utilizza una firma fatta a mano con l'ulteriore beneficio di essere a prova di manomissione. La distribuzione dei sorgenti di GnuPG, per esempio, è firmata in modo tale da permettere agli utenti di verificare che il codice sorgente non sia stato modificato dal momento in cui è stato creato il pacchetto.

La creazione e la verifica di firme utilizzano la coppia di chiavi pubblica/privata in modo differente da quanto fanno le operazioni di cifratura e decifratura. Una firma è fatta utilizzando la chiave privata di colui che firma. La firma viene verificata utilizzando la corrispondete chiave pubblica. Per esempio Alice userebbe la propria chiave privata per firmare digitalmente il suo ultimo lavoro per la rivista di chimica inorganica. Il corrispondente editore nel pubblicare il lavoro userebbe la chiave pubblica di Alice per controllare la firma e verificare che il pezzo sia effettivamente stato mandato da Alice e che non sia stato modificato dal momento in cui Alice l'ha spedito. Una conseguenza dell'utilizzo di firme digitali consiste nel fatto che è difficile negare di aver fatto una firma digitale in quanto ciò implicherebbe che la propria chiave privata era stata compromessa.

L'opzione a linea di comando --sign viene usata per fare firme digitali. Il documento da firmare è l'ingresso, quello firmato è l'uscita.
alice% gpg --output doc.sig --sign doc
Ti serve una passphrase per sbloccare la chiave segreta
dell'utente: "Alice (giudice) <alice@cyb.org>"
chiave DSA di 1024 bit, ID BB7576AC, creata il 1999-06-04

Inserisci la passphrase:
Il documento viene compresso prima di essere firmato e l'output è in formato binario.
Dato un documento firmato, è possibile sia controllare la firma che controllare la firma e recuperare il documento originale. Per controllare la firma si utilizza l'opzione --verify. Per verificare la firma ed estrarre un documento si usa l'opzione --decrypt. Il documento firmato da verificare e recuperare è l'ingresso, mentre il documento recuperato è l'uscita.

blake% gpg --output doc --decrypt doc.sig
gpg: Firma fatta ven 04 feb 1999 12:02:38 CDT usando la chiave DSA con ID BB7576AC
gpg: Firma valida da "Alice (giudice) <alice@cyb.org>"

Documenti firmati in chiaro
Un uso comune di firme digitali consiste nel firmare messaggi per Usenet o messaggi di posta elettronica. In tali situazioni non è desiderabile comprimere il documento quando lo si firma. L'opzione --clearsign avvolge il documento in una firma ASCII-armored ma non lo modifica in nessun altro modo.
alice% gpg --clearsign doc
Ti serve una passphrase per sbloccare la chiave segreta
dell'utente: "Alice (giudice) <alice@cyb.org>"
chiave DSA di 1024 bit, ID BB7576AC, creata il 1999-06-04
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[...]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v0.9.7 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iEYEARECAAYFAjdYCQoACgkQJ9S6ULt1dqz6IwCfQ7wP6i/i8HhbcOSKF4ELyQB1
oCoAoOuqpRqEzr4kOkQqHRLE/b8/Rw2k
=y6kj
-----END PGP SIGNATURE-----
Firme distaccate
Un documento firmato ha un'utilità limitata. Gli altri utenti devono recuperare il documento originale dalla versione firmata e, anche con documenti firmati in chiaro, il documento firmato deve essere editato per poter recuperare l'originale. Esiste perciò un terzo metodo per firmare un documento. Con tale metodo viene creata una firma distaccata in un file separato. Una firma distaccata viene creata utilizzando l'opzione --detach-sig.

alice% gpg --output doc.sig --detach-sig doc
Ti serve una passphrase per sbloccare la chiave segreta
dell'utente: "Alice (giudice) <alice@cyb.org>"
chiave DSA di 1024 bit, ID BB7576AC, creata il 1999-06-04
Inserisci la passphrase:
Sia il documento che la firma distaccata sono necessarie per verificare la firma stessa. L'opzione --verify può essere utilizzata per controllare la firma.
blake% gpg --verify doc.sig doc
gpg: Firma fatta ven 04 feb 1999 12:38:46 CDT usando la chiave DSA con ID BB7576AC
gpg: Firma valida da "Alice (giudice) <alice@cyb.org>"

Ricerca personalizzata


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


Commenti

Post popolari in questo blog

Rilasciano BlenderBot v3, un chatbot che utilizza il loro modello OPT e aprono la demo per testarlo

Componenti aggiuntivi di Google Workspace

Come rimuovere il virus che trasforma le cartelle in collegamenti nella tua pendrive.