Cos'è PGP? Guida completa sulla crittografia Pretty Good Privacy

Cos'è la crittografia PGP?

PGP (Pretty Good Privacy) è un programma di crittografia che garantisce la riservatezza e l'autenticazione crittografica per le comunicazioni di dati. La crittografia PGP utilizza una combinazione di crittografia a chiave simmetrica e crittografia a chiave pubblica per consentire agli utenti di crittografare messaggi, file e altri dati affinché solo il destinatario previsto possa leggerli. Creato originariamente da Phil Zimmermann nel 1991, PGP è diventato lo standard di crittografia per le e-mail più utilizzato al mondo e costituisce la base della specifica OpenPGP definita nell'RFC 4880. Che tu abbia bisogno di inviare un'e-mail riservata, verificare l'identità di un distributore di software o proteggere file sensibili, PGP fornisce un framework crittografico collaudato, cui si affidano giornalisti, ricercatori di sicurezza, governi e utenti di tutti i giorni.

Se vuoi provare la crittografia PGP immediatamente senza installare software, KeychainPGP offre uno strumento PGP online che funziona interamente nel tuo browser.

Storia di PGP

Phil Zimmermann ha pubblicato PGP 1.0 nel giugno 1991 come software libero, motivato dalla convinzione che la crittografia forte dovesse essere accessibile a tutti i cittadini — non solo ai governi e ai militari. All'epoca, la crittografia forte era classificata come munizione secondo le normative statunitensi sull'esportazione, e Zimmermann fu sottoposto a un'indagine penale di tre anni da parte del Servizio doganale degli Stati Uniti per aver distribuito PGP a livello internazionale. L'indagine fu infine archiviata nel 1996 senza incriminazione, e il caso divenne un momento cruciale nella storia delle libertà digitali.

PGP si è evoluto attraverso diverse incarnazioni commerciali. Zimmermann ha fondato PGP Inc. nel 1996, che è stata acquisita da Network Associates (poi diventata McAfee) nel 1997, e infine da Symantec nel 2010. Attraverso tutte queste transizioni, il protocollo crittografico sottostante è stato standardizzato con il nome di OpenPGP dall'Internet Engineering Task Force (IETF), garantendo che il protocollo rimanga aperto e interoperabile indipendentemente dalla proprietà commerciale.

La pubblicazione dello standard OpenPGP significava che chiunque poteva creare implementazioni compatibili. Ciò ha portato alla creazione di GNU Privacy Guard (GnuPG o GPG), un'implementazione libera e open source che resta uno degli strumenti PGP più utilizzati oggi. Per comprendere le differenze tra queste implementazioni, consulta la nostra guida su PGP vs GPG.

Come funziona la crittografia PGP

La crittografia PGP si basa su una combinazione sofisticata di tecniche crittografiche. Piuttosto che utilizzare un solo metodo, PGP impiega un modello di crittografia ibrido che combina la velocità della crittografia simmetrica con i vantaggi della distribuzione di chiavi della crittografia asimmetrica (a chiave pubblica).

Crittografia a chiave pubblica

Al centro di PGP c'è la crittografia a chiave pubblica, detta anche crittografia asimmetrica. Ogni utente PGP genera una coppia di chiavi composta da due chiavi matematicamente correlate:

  • Chiave pubblica — condivisa apertamente con chiunque. Gli altri usano questa chiave per crittografare i messaggi a te destinati e per verificare le tue firme digitali.
  • Chiave privata (detta anche chiave segreta) — mantenuta strettamente riservata. Usi questa chiave per decrittografare i messaggi che ti vengono inviati e per creare firme digitali.

La proprietà fondamentale di questo sistema è che i dati crittografati con una chiave pubblica possono essere decrittografati solo con la chiave privata corrispondente, e viceversa. Questo elimina la necessità di trasmettere un segreto condiviso tra le parti prima che possano comunicare in modo privato.

Il modello di crittografia ibrido

Sebbene la crittografia a chiave pubblica risolva il problema della distribuzione delle chiavi, gli algoritmi asimmetrici come RSA sono computazionalmente costosi per crittografare grandi quantità di dati. PGP risolve questo problema utilizzando un approccio ibrido:

  1. Generazione della chiave di sessione — PGP genera una chiave simmetrica di sessione casuale e unica (generalmente 128 o 256 bit) per ogni messaggio.
  2. Crittografia dei dati — Il contenuto del messaggio viene crittografato con un cifrario simmetrico veloce (come AES-256) usando la chiave di sessione.
  3. Crittografia della chiave di sessione — La chiave di sessione stessa viene poi crittografata con la chiave pubblica del destinatario (operazione asimmetrica).
  4. Impacchettamento — Il messaggio crittografato e la chiave di sessione crittografata vengono raggruppati e inviati al destinatario.

Quando il destinatario riceve il messaggio, il processo viene invertito: usa la propria chiave privata per decrittografare la chiave di sessione, poi la chiave di sessione decrittografata viene usata per decrittografare il contenuto del messaggio.

Firme digitali PGP

Oltre alla crittografia, PGP fornisce firme digitali che svolgono due funzioni essenziali: l'autenticazione (dimostrare chi ha inviato un messaggio) e l'integrità (dimostrare che il messaggio non è stato alterato durante il transito).

Il processo di firma funziona come segue:

  1. PGP calcola un hash crittografico (un riassunto di lunghezza fissa) del contenuto del messaggio utilizzando un algoritmo come SHA-256 o SHA-512.
  2. L'hash viene poi crittografato con la chiave privata del mittente, producendo la firma digitale.
  3. La firma viene allegata al messaggio.

Qualsiasi destinatario può verificare la firma decrittografandola con la chiave pubblica del mittente per recuperare l'hash originale, calcolando indipendentemente l'hash del messaggio ricevuto, e poi confrontando i due hash. Se corrispondono, il messaggio è autentico e non modificato.

Lo standard OpenPGP

OpenPGP è lo standard aperto che definisce i formati dei messaggi, gli algoritmi e le procedure utilizzate dai software compatibili con PGP. Non è un prodotto software in sé, ma piuttosto una specifica che qualsiasi sviluppatore può implementare.

I documenti di riferimento sono:

  • RFC 4880 (novembre 2007) — La specifica principale attuale del formato di messaggio OpenPGP.
  • RFC 6637 (giugno 2012) — Estende OpenPGP con il supporto della crittografia a curva ellittica (ECC).
  • RFC 9580 (2024) — L'ultima revisione che modernizza lo standard con il supporto obbligatorio di Ed25519/X25519, le modalità di crittografia AEAD e le impronte delle chiavi migliorate.

OpenPGP garantisce l'interoperabilità: un messaggio crittografato con KeychainPGP può essere decrittografato da GnuPG, Mailvelope o qualsiasi altra implementazione conforme.

Rete di fiducia

Una delle caratteristiche distintive di PGP è il suo modello decentralizzato di rete di fiducia (Web of Trust) per stabilire l'autenticità delle chiavi pubbliche. A differenza del modello centralizzato di autorità di certificazione (CA) utilizzato da TLS/SSL, PGP consente agli utenti stessi di garantire gli uni per gli altri.

La rete di fiducia funziona attraverso la firma delle chiavi: quando verifichi l'identità di qualcuno e confermi che controlla una particolare chiave pubblica, firmi la sua chiave con la tua. Questa firma è una dichiarazione pubblica che credi che la chiave appartenga alla persona che afferma di rappresentare.

Strumenti come KeychainPGP semplificano questo processo consentendo agli utenti di lavorare con le chiavi direttamente tramite un'interfaccia intuitiva, utilizzando la crittografia tramite appunti per condividere facilmente messaggi crittografati e chiavi pubbliche.

Algoritmi e tipi di chiavi PGP

PGP supporta una gamma di algoritmi crittografici che si sono evoluti con i progressi del settore.

Algoritmi classici

  • RSA (Rivest-Shamir-Adleman) — L'algoritmo asimmetrico più diffuso nella storia di PGP. Le chiavi RSA a 2048 bit sono considerate il minimo di sicurezza oggi, con chiavi a 4096 bit raccomandate per una protezione a lungo termine.
  • DSA (Digital Signature Algorithm) — Utilizzato per le firme in combinazione con ElGamal per la crittografia. Meno privilegiato oggi.
  • AES (Advanced Encryption Standard) — Il cifrario simmetrico dominante utilizzato per crittografare il contenuto dei messaggi. Sono supportati AES-128 e AES-256.
  • SHA-2 (SHA-256, SHA-384, SHA-512) — Funzioni hash crittografiche utilizzate per il calcolo dei digest nelle firme digitali.

Algoritmi moderni

L'ultima generazione di implementazioni OpenPGP supporta la crittografia a curva ellittica (ECC), che offre una sicurezza equivalente a RSA con dimensioni di chiavi notevolmente più piccole:

  • Ed25519 — Un algoritmo di firma digitale basato su Curve25519. Produce firme rapide e compatte. Raccomandato nell'RFC 9580.
  • X25519 (Curve25519 ECDH) — Utilizzato per lo scambio di chiavi (crittografia). Offre eccellenti prestazioni con solide proprietà di sicurezza.
  • NIST P-256 / P-384 / P-521 — Curve ellittiche standardizzate dal NIST. Supportate da OpenPGP ma generalmente meno privilegiate rispetto agli algoritmi basati su Curve25519.

Strumenti moderni come KeychainPGP supportano questi algoritmi contemporanei, rendendo la generazione di chiavi con Ed25519 e X25519 semplice e diretta.

Casi d'uso comuni di PGP

  • E-mail sicure — Il caso d'uso originale e più conosciuto. PGP consente di crittografare il contenuto delle e-mail e di firmare i messaggi per dimostrarne l'autenticità.
  • Crittografia dei file — PGP può crittografare singoli file o interi archivi per un archiviazione o un trasferimento sicuro.
  • Verifica del software — I progetti open source firmano regolarmente le proprie release con chiavi PGP. Gli utenti possono verificare queste firme per confermare l'autenticità di un download.
  • Messaggistica sicura — PGP può essere utilizzato per crittografare qualsiasi messaggio di testo, particolarmente utile sulle piattaforme che non offrono crittografia end-to-end.
  • Verifica dell'identità — Le impronte delle chiavi PGP fungono da identità digitali verificabili. Gli sviluppatori su GitHub possono firmare i propri commit con PGP.
  • Firma dei documenti — I workflow legali utilizzano talvolta le firme PGP per stabilire la non ripudiabilità.

PGP oggi

A oltre tre decenni dalla sua creazione, PGP resta uno degli strumenti crittografici più importanti disponibili. Lo standard OpenPGP continua a evolversi, con l'RFC 9580 che introduce modernizzazioni significative includendo il supporto obbligatorio degli algoritmi a curva ellittica moderni e le modalità di crittografia AEAD.

L'ecosistema degli strumenti PGP si è notevolmente arricchito. GnuPG resta l'implementazione di riferimento per l'uso da riga di comando. Strumenti moderni come KeychainPGP offrono applicazioni desktop native (Windows, macOS, Linux), un'applicazione Android, un CLI per lo scripting e un'applicazione web nel browser — il tutto costruito sullo stesso motore Sequoia-PGP in Rust.

Iniziare con PGP

Pronto a iniziare con la crittografia PGP? Ecco i migliori passi successivi:

  1. Prova nel tuo browser — Usa lo strumento PGP online di KeychainPGP per generare una coppia di chiavi, crittografare un messaggio o verificare una firma senza installare nulla.
  2. Leggi la guida per principianti — Se sei nuovo nella crittografia, la nostra guida PGP per principianti ti accompagna passo dopo passo.
  3. Impara il workflow pratico — La nostra guida Come usare PGP copre la generazione delle chiavi, la crittografia e la decrittografia, la gestione del tuo portachiavi e le buone pratiche.
  4. Scopri la crittografia tramite appunti — Scopri la crittografia PGP tramite appunti per crittografare e decrittografare testo direttamente dagli appunti.
  5. Conosci gli strumenti — Comprendi le differenze tra PGP e GPG per scegliere lo strumento giusto per il tuo workflow.

La crittografia PGP protegge le comunicazioni sensibili da oltre trent'anni. Con gli strumenti e gli standard moderni, è più accessibile che mai.