Pretty Good Privacy (PGP) è una famiglia di software di crittografia per autenticazione e privacy, da cui è derivato lo standard OpenPGP.

È probabilmente il crittosistema più adottato al mondo, descritto dal crittografo Bruce Schneier come il modo per arrivare «probabilmente il più vicino alla crittografia di livello militare».

PGP è stato originariamente sviluppato da Phil Zimmermann nel 1991. Il nome gli fu suggerito da una drogheria di Lake Wobegon, l'immaginaria città natale del conduttore radiofonico Garrison Keillor. La drogheria si chiamava "Ralph's Pretty Good Grocery" ("la drogheria piuttosto buona di Ralph") e il suo slogan era "se non lo puoi trovare da Ralph, probabilmente puoi anche farne a meno", chiusa pochi anni dopo l'apertura.

OpenPGP come standard Internet Inizialmente Phil Zimmermann aveva distribuito PGP come software proprietario, ma per la sua rapida diffusione nel 1998 le sue specifiche furono raccolte dall'Internet Engineering Task Force (IETF) attraverso i seguenti standard RFC: RFC2440 nel 1998, RFC3156 nel 2001 e l'RFC4880 nel 2007. Così nacque lo standard OpenPGP.

Un'implementazione conforme allo standard OpenPGP è ad esempio GNU Privacy Guard.

Sicurezza di PGP Per la teoria della complessità computazionale l'uso appropriato di PGP rende praticamente impossibile che un intermediario fra mittente e destinatario possa giungere al messaggio d'origine, ad esempio tramite metodo forza bruta. Questo tipo di attacco impiegherebbe un grande calcolatore per un tempo simile ad un migliaio di volte l'età dell'universo conosciuto, fermo restando che sia il messaggio originale che la propria chiave privata dovrebbero essere salvati su un dispositivo non compromesso se si vuole che la robustezza dell'intero sistema ovviamente non crolli.

Nessun crittosistema, PGP incluso, può proteggere informazioni ottenute violando fisicamente il dispositivo su cui è salvata la chiave privata dell'interessato e scoprendo la sua passphrase, o in altri modi come ad esempio tramite phishing, ingegneria sociale o tramite il cosiddetto metodo del tubo di gomma. Occorre quindi che gli utilizzatori di crittosistemi non diventino loro stessi la via per violare i loro dati.

Ad esempio, in un'indagine del 2005 l'FBI ottenne un mandato per installare keylogger o altri spyware sul computer di un sospettato di spaccio. L'indagine si è conclusa con 30 anni di reclusione del sospettato, dato che compromettendo direttamente il suo computer si era facilmente risaliti a qualsiasi suo documento.

PGP ed email Con PGP è possibile cifrare ogni tipo di dato o file ed è consuetudine vederlo impiegato per scambiarsi posta elettronica, dato che le e-mail non hanno un sistema di cifratura nativo. PGP e l'S/MIME sono infatti due standard RFC per lo scambio di posta elettronica.

Un esempio di software libero per scambiarsi posta elettronica tramite PGP è Enigmail per Mozilla Thunderbird.

Come funziona PGP

PGP usa sia la crittografia asimmetrica (detta anche a chiave pubblica) sia quella simmetrica, e fino ad un certo punto una infrastruttura a chiave pubblica (PKI) che ha qualche somiglianza con lo standard dei certificati d'identità X.509. PGP usa la crittografia a chiave asimmetrica, nella quale il destinatario del messaggio ha generato precedentemente una coppia di chiavi collegate fra loro; una chiave pubblica ed una privata. La chiave pubblica del destinatario serve al mittente per cifrare una chiave di sessione per un algoritmo di crittografia simmetrica; questa chiave viene quindi usata per cifrare il testo in chiaro del messaggio. Molte chiavi pubbliche di utenti PGP sono a disposizione di tutti dai numerosi key server (server delle chiavi) PGP sparsi per il mondo, che operano come mirror reciproci.

Il destinatario di un messaggio protetto da PGP decifra prima la chiave di sessione inclusa nel messaggio usando la sua chiave privata. Decifra poi il testo usando la chiave di sessione con l'algoritmo simmetrico. L'uso di due cifrature è giustificato dalla notevole differenza nella velocità di esecuzione tra una cifratura a chiave asimmetrica ed una a chiave simmetrica (l'ultima è generalmente molto più veloce). Ci sono inoltre delle vulnerabilità crittografiche nell'algoritmo a chiave asimmetrica utilizzato da PGP quando viene usato per cifrare direttamente un messaggio.

Una strategia simile può essere usata per capire se un messaggio è stato alterato, o se è stato mandato effettivamente da chi dice di essere il mittente. Per fare entrambe le cose, il mittente usa PGP per 'firmare' il messaggio con l'algoritmo di firma RSA o Digital Signature Algorithm (DSA). Per fare questo, PGP calcola un 'hash' (anche chiamato message digest) dal testo in chiaro, e crea poi da questo hash la firma digitale usando la chiave privata del mittente.

Il destinatario del messaggio calcola il message digest dal testo in chiaro decifrato, e poi usa la chiave pubblica del mittente ed il valore del message digest firmato con l'algoritmo di firma. Se la firma corrisponde al message digest del testo in chiaro ricevuto, si presuppone (con un grande margine di sicurezza) che il messaggio ricevuto non sia stato alterato né accidentalmente né volontariamente da quando è stato firmato. Questa presunzione si basa su diverse considerazioni: è poco probabile, visti gli algoritmi ed i protocolli usati in PGP, che un avversario possa creare una firma per un messaggio qualsiasi, e quindi un messaggio ricevuto che superi questo test dev'essere stato mandato da chi dice di essere il mittente. Gli esperti di sicurezza chiamano spesso questa proprietà non ripudio: non si può ripudiare la paternità del messaggio.

In ogni caso chiunque possegga la parte privata delle chiavi può facilmente creare una firma corretta per ogni cosa. In un mondo di e-mail virus, rootkits, trojan, ed altri malware, ed agenti dell'FBI con ordinanze della corte, il termine 'non-repudiation' dev'essere usato con le pinze, dato che le chiavi private possono essere compromesse (e copiate) in maniera illegale. Ma questa è una affermazione valida per 'tutti' i sistemi che utilizzano algoritmi a chiave asimmetrica per la firma digitale e quindi inglobano il concetto di non-repudiation. PGP non è particolarmente vulnerabile, ma Zimmerman è stato saggio e non solo divertente, nel chiamare il suo sistema "pretty good" (abbastanza buono).

Sia quando si cifra un messaggio che quando si verifica la firma, è fondamentale che la chiave pubblica utilizzata per mandare il messaggio ad una persona o ente appartenga effettivamente al destinatario. Scaricare una chiave pubblica da qualche parte non è per niente una garanzia di questa corrispondenza; lo spoofing intenzionale od accidentale è possibile. PGP include delle precauzioni per la distribuzione delle chiavi pubbliche in 'certificati d'identità' i quali sono costruiti crittograficamente, in maniera tale da rendere qualsiasi manomissione o disturbo accidentale facilmente rivelabile. Rendere un certificato effettivamente impossibile da modificare senza lasciare tracce non è sufficiente. Questo può prevenire la manomissione solo dopo la creazione del certificato, non prima. Gli utenti devono anche verificare in qualche maniera che la chiave pubblica in un certificato appartenga effettivamente alla persona o ente che ne reclama la paternità. Per questo PGP racchiude un sistema di 'voto' dei certificati; è chiamata web of trust (letteralmente, "rete di fiducia"). PGP ha anche sempre incluso una maniera per cancellare i certificati d'identità che possono essere diventati inutilizzabili; questo è, più o meno, l'equivalente dei certificate revocation list (certificati di revoca) dei sistemi PKI più centralizzati. Le versioni più recenti di PGP supportano anche una data di scadenza per i certificati.

Questa doverosa cautela nell'accettare le chiavi pubbliche di altri utenti non è una prerogativa di PGP. Tutti i sistemi di crittografia a chiave pubblica e privata hanno lo stesso problema, anche se in apparenza un po' diversi, e non esiste ancora una soluzione pienamente soddisfacente. Il sistema di PGP, almeno, permette all'utente di decidere se usare o meno il sistema di voto, mentre molti altri sistemi PKI richiedono invece che ogni certificato venga confermato da una CA (Certification Authority) centrale.

I primordi PGP fu interessato dalle restrizioni sulla esportazione della crittografia del governo USA, già dagli albori. Questo inconveniente dimostra alcuni dei problemi politici che circondano la crittografia moderna di qualità e costituisce un pasticcio contingente e difficile da seguire. Che minaccia tempi di prigionia piuttosto elevati e multe salate.

Zimmermann produsse la prima versione del PGP nel 1991. Era stato per molto tempo un attivista anti-nucleare e creò il PGP in modo che i suoi compagni potessero usare sistemi BBS e memorizzare messaggi e file in tutta sicurezza. Non era richiesta licenza se l'uso non era commerciale, non c'era spesa neanche simbolica e veniva fornito il codice sorgente. PGP si diffuse su Usenet e di qui sul World Wide Web.

Limitazioni all'esportazione, indagini giudiziarie e ricadute politiche In breve tempo il PGP iniziò a diffondersi al di fuori dei confini degli USA, e nel febbraio 1993 Zimmermann fu incriminato dal governo degli Stati Uniti con l'accusa di "esportazione di armi senza apposita licenza".

In molti trovarono difficilmente comprensibile questa accusa e fu osservato, in tono satirico, che un programma software può facilmente diventare un'arma con l'aggiunta di un detonatore e un po' di esplosivo.

Ciononostante secondo quanto stabilito dal Regolamento per l'Esportazione dei prodotti e servizi USA i sistemi di crittografia che utilizzassero una chiave maggiore di 40-bit erano considerati come munizioni e, dato che il PGP ha sempre adottato chiavi maggiori di 128 bit, all'epoca rientrava perfettamente nella casistica. Oltretutto le sanzioni, per chi fosse riconosciuto colpevole, erano e rimangono rilevanti. I regolamenti all'export statunitensi sono ancora in vigore, ma nel corso della seconda metà degli anni Novanta hanno subito importanti modifiche: la giurisdizione è stata assegnata al Dipartimento del Commercio invece di essere dipendente dal Dipartimento di Stato; i sistemi di crittografia sono stati riclassificati come duplice uso, invece di essere considerati come munizioni; il processo di approvazione è stato semplificato nel 2000; infine la lunghezza della chiave di norma ammessa è stata portata (in parecchi e confusi passaggi) oltre la soglia dei 40 bit.

Dal 2000 in poi il rispetto dei regolamenti è diventato inoltre più semplice. Ad esempio, nei primi anni Novanta l'approvazione di una domanda di export doveva ricevere un'approvazione esplicita. Invece dal 2000 vige il principio del silenzio-assenso per cui se l'approvazione non viene negata entro 30 giorni allora è lecito ritenere la domanda approvata. Sono state inoltre facilitate le procedure per approvare il codice sorgente, come pure altre facilitazioni per sviluppatori open source o per piccole aziende. Prima di imbarcarsi in un importante progetto crittografico che potrebbe essere interessato da tali regolamentazioni, sarebbe comunque il caso di consultare un avvocato che sia esperto degli aspetti legali legati alla crittografia.

Come conseguenza delle modifiche normative introdotte, il PGP attualmente non è più definibile come "arma non esportabile" e può essere utilizzato (ed esportato) ovunque (a condizione che la legislazione locale lo consenta). Inoltre l'incriminazione a carico di Zimmerman è stata archiviata senza che siano state rubricate condotte criminali in capo allo stesso o ad altri soggetti.