I metodi classici di crittografia usano una sola chiave per cifrare: il mittente cifra il messaggio con una chiave e il destinatario decifra il messaggio con questa stessa chiave, che gli deve essere fornita dal mittente con modalità che impediscano ad altri di entrarne in possesso. Se qualcun altro possiede la chiave, questi metodi crittografici diventano inutili.
L'uso della cosiddetta crittografia a chiave pubblica può risolvere questo problema. La crittografia a chiave pubblica prevede due chiavi: una chiave pubblica, che può essere diffusa con ogni mezzo, e una chiave privata, che non va diffusa e deve essere mantenuta segreta dal proprietario. Se il sistema è implementato bene, dalla chiave pubblica non si può risalire a quella privata. In questo modo, il mittente cifrerà il messaggio con la chiave pubblica del destinatario e quest'ultimo lo decifrerà con la propria chiave privata.
È cruciale che la chiave privata resti segreta e non sia a disposizione di
nessuno all'infuori del proprietario: NON PUÒ ESSERE SPEDITA ATTRAVERSO
INTERNET! È anche altamente sconsigliato usare GnuPG via telnet
(è consigliabile non usare mai telnet, visti i suoi alti rischi di
sicurezza).
Per provare che un certo messaggio è stato inviato proprio dalla persona che dichiara di averlo fatto, è stato inventato il concetto di firma digitale. Con questa firma si può verificare l'autenticità di un messaggio, riducendo i rischi di imbattersi in un "cavallo di Troia" (ad esempio un messaggio che afferma di essere una patch per un certo problema, ma in realtà contiene un virus, o causa danni ai dati del vostro computer). Si può quindi verificare che qualsiasi informazione o dato provenga dalla fonte legittimata ad emetterlo.
Una firma digitale si ottiene dalla combinazione tra la chiave privata e il testo. Usando la chiave pubblica del mittente si può verificare un messaggio e controllare non solo che sia stato inviato dalla persona corretta, ma anche che il contenuto non sia stato modificato durante il trasporto.
Un punto debole degli algoritmi a chiave pubblica è la diffusione delle chiavi. Un utente potrebbe spacciarsi per qualcun'altro, facendo circolare una chiave pubblica con un falso user ID e intercettando tutti i messaggi che venissero cifrati per quell'user ID. L'impostore potrebbe, dopo aver intercettato il messaggio, cifrarlo con la vera chiave pubblica del destinatario originale e inviarglielo, senza che quest'ultimo si renda conto dell'intercettazione.
La soluzione adottata da PGP (e quindi da GnuPG) è la firma delle chiavi: una chiave pubblica può essere firmata da altre persone, certificando così che la chiave appartiene veramente alla persona che sostiene di esserne il proprietario. La decisione su quanta fiducia riporre nelle firme spetta all'utente di GnuPG: sostanzialmente la fiducia in una firma dipende dalla fiducia che si ha nella chiave della persona che ha apposto la firma. Per essere assolutamente sicuri che una chiave appartenga a una certa persona, è consigliabile fare un controllo della cosiddetta "impronta digitale" della chiave ("fingerprint") usando un canale di comunicazione sicuro.
Se si possiedono dati considerati confidenziali, occorre preoccuparsi non solo del tipo di algoritmo di cifratura da usare, ma anche della sicurezza generale del proprio sistema. Fondamentalmente PGP può essere considerato sicuro e al momento della scrittura di questo documento non sono noti esempi di attacchi riusciti a PGP, ma ciò non implica una sicurezza assoluta (ad esempio, se la NSA riuscisse a rompere PGP non lo direbbe facilmente, né lo farebbero altre persone che cercano di rompere i sistemi con scopi criminali). Comunque, anche se PGP fosse completamente inattaccabile, resterebbero altre minacce per la sicurezza. Nel febbraio 1999 fu scoperto un cavallo di Troia che cercava chiavi private PGP sull'hard disk e le spediva via FTP: se le passphrase fossero state scelte male, le chiavi private avrebbero potuto facilmente essere scoperte.
Un possibile attacco (anche se poco probabile) è costituito da un cavallo di Troia che ritrasmetta ciò che si scrive sulla tastiera. È anche tecnicamente possibile (ma molto difficile) copiare il contenuto dello schermo: in questo caso non occorrerebbe decifrare alcun messaggio cifrato. Per tutti questi rischi occorre mettere in opera un buon sistema di sicurezza.
Non si tratta di diffondere la paranoia tra la gente, quanto piuttosto la consapevolezza che ci sono molti aspetti da considerare per essere più sicuri: la cosa più importante è tenere in mente che la crittografia è solo uno dei passi verso la sicurezza, non una soluzione totale. I cavalli di Troia, come il virus Melissa del marzo 1999, hanno spesso colto molte società impreparate.