# GNU Privacy Guard

GNU Privacy Guard (GnuPG o GPG) è un software libero progettato per sostituire la suite crittografica PGP. È completamente compatibile con gli standard OpenPGP dell'IETF.
GNU Privacy Guard è distribuito sotto la licenza GNU General Public License e fa parte del Progetto GNU.
Nel 1999 ha ricevuto un finanziamento dal governo federale tedesco.

## Storia

GNU Privacy Guard venne sviluppato inizialmente da Werner Koch e la versione 1.0.0 fu pubblicata il 7 settembre 1999.
Nel 2000 il Ministro federale dell'Economia e della Tecnologia della Germania fece partire il progetto di creazione della documentazione e di porting per Microsoft Windows.
Attualmente, il software viene manutenuto in tre versioni principali:
* la versione "modern" (v2.2.x, precedentemente v2.1.x): è l'ultima versione di sviluppo, contenente tutte le nuove funzionalità proposte;
* la versione "stable" (v2.0.x): è la versione più consolidata, nonché quella più indicata per un utilizzo normale;
* la versione "classic" (v1.4.x): disponibile per retro-compatibilità con tutti i sistemi integrati e meno recenti.
Le due versioni "modern" e "stable" non possono convivere tra loro, mentre possono convivere con la versione "classic".

## Utilizzo

GNU Privacy Guard è un software stabile e maturo ed è disponibile per una grande varietà di sistemi operativi, dalle distribuzioni GNU/Linux, FreeBSD, OpenBSD e NetBSD ai sistemi operativi proprietari Microsoft Windows e OS X. Esistono anche implementazioni per Android come OpenKeyChain, distribuito su F-Droid.
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; 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). Sotto Android vi sono diversi client email che lo supportano, come K-9 Mail.
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 OS X e Windows. Per Windows un software che può esser considerato l'erede del commerciale PGP, è Gpg4win (oppure Gpg4usb), mentre per 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.

## Funzionamento

GPG cifra i messaggi utilizzando una coppia di chiavi (pubblica e privata) generate dall'utente. Le chiavi pubbliche possono essere scambiate tra gli utenti in vari modi, principalmente email e keyserver. Tuttavia bisogna prestare particolare attenzione alla corrispondenza tra chiave e (presunta) identità: il problema di tutti i sistemi di crittografia asimmetrica è la certificazione dell'autenticità della chiave, solitamente risolto con la presenza di un'autorità centrale oppure con la firma delle chiavi (un utente firma la chiave pubblica di un altro utente per certificarne l'effettiva autenticità). Su questo delicato punto si basa anche la firma digitale di file (messaggi) per garantire l'autenticità del contenuto e del mittente.
GPG non fa utilizzo di algoritmi brevettati (o con ambiti di utilizzo ristretti da particolari licenze) come IDEA, presente in PGP sin dalle prime versioni. Vengono invece usati algoritmi come Digital Signature Algorithm (DSA), RSA, ElGamal, CAST5, Triple DES (3DES), AES e Blowfish. È tuttavia ancora possibile utilizzare IDEA ma si deve scaricare un apposito plugin (e, in alcuni paesi, registrare una licenza di utilizzo).
Come prevede lo standard OpenPGP, GPG è un sistema di crittografia "ibrido", che combina algoritmi a chiave simmetrica a causa della loro velocità e algoritmi a chiave pubblica per la facilità di scambio delle chiavi: ogni volta che si deve cifrare un messaggio viene generata una chiave di sessione (utilizzata un'unica volta, per l'algoritmo simmetrico) che viene a sua volta cifrata con la chiave pubblica del destinatario. Si noti come questo passaggio renda impossibile la lettura del messaggio anche al mittente (a meno che questo non cifri la chiave di sessione anche con la propria chiave pubblica, opzione che è possibile abilitare).