PGP (Pretty Good Privacy) è un crittosistema (sistema di decifratura) inventato da Philip Zimmermann, un analista informatico. Philip Zimmermann ha lavorato dal 1984 al 1991 ad un programma che permette di far funzionare RSA sui personal computer (PGP). Tuttavia, dato che utilizzava RSA senza l'accordo dei suoi autori, gli ci sono voluti 3 anni di processi per poterlo vendere a circa 150 $ dal 1993. Esso è molto rapido e sicuro, cosa che lo rende praticamente impossibile da analizzare.
PGP è un sistema di crittografia ibrido, che usa una combinazione di funzionalità della crittografia a chiave pubblica e di quella simmetrica. Quando un utente codifica un testo con PGP, i dati sono innanzi tutto compressi. Questa compressione di dati permette di ridurre il tempo di trasmissione per qualsiasi mezzo di comunicazione, di economizzare lo spazio sul disco e, soprattutto, di rinforzare la sicurezza crittografica.
La maggior parte dei crittoanalisti sfruttano i modelli trovati nei testi in chiaro per craccare la cifratura. La compressione riduce questi modelli nel testo in chiaro, migliorando considerevolmente di conseguenza la resistenza alla crittoanalisi. In seguito, l'operazione di cifratura avviene principalmente in due tappe:
PGP crea una chiave segreta IDEA in maniera casuale, e codifica i dati con questa chiave;
PGP cripta la chiave segrete IDEA e la trasmette attraverso la chiave RSA pubblica al destinatario.
L'operazione di decifratura avviene anch'essa in due fasi:
PGP decifra la chiave segreta IDEA attraverso la chiave RSA privata;
PGP decifra i data con la chiave segreta IDEA precedentemente ottenuta.
Questo metodo di codificazione associa la facilità d'uso della cifratura a chiave pubblica alla velocità della cifratura convenzionale. La cifratura convenzionale è circa 1000 volte più rapida rispetto agli algoritmi di cifratura a chiave pubblica. La cifratura a chiave pubblica risolve il problema della distribuzione delle chiavi. Utilizzati congiuntamente, questi due metodi migliorano la performance e la gestione delle chiavi, senza per altro compromettere la sicurezza.
PGP offre le seguenti funzionalità:
Firma elettronica e verifica dell'integrità dei messaggi, funzione basata sull'impiego simultaneo di una funzione hash (MD5) e del sistema RSA. MD5 scompone il messaggio e fornisce un risultato di 128 bit che è in seguito cifrata, grazie alla RSA, dalla chiave privata del mittente;
Cifratura dei file locali: funzione che utilizza IDEA;
Generazione di chiavi pubbliche e private, ogni utente codifica i suoi messaggi grazie a delle chiavi private IDEA. Il trasferimento di chiavi elettroniche IDEA utilizza il sistema RSA; PGP offre quindi dei meccanismi di generazione di chiavi adatte a questo sistema. La dimensione delle chiavi RSA è proposta secondo più livelli di sicurezza: 512, 768, 1024 o 1280 bit;
Gestione delle chiavi, funzione che assicura la distribuzione della chiave pubblica dell'utente ai corrispondenti che desiderano inviargli dei messaggi cifrati;
Cifratura delle chiavi, questa funzione permette di aggiungere un sigillo digitale che garantisce l'autenticità delle chiavi pubbliche. Si tratta di un'originalità di PGP, che basa la sua fiducia sulla nozione di prossimità sociale piuttosto che su quella dell'autorità centrale di certificazione.
Revoca, disattivazione, registrazione delle chiavi, funzione che permette di produrre dei certificati di revoca.
Un certificato PGP comprende, fra l'altro, le informazioni seguenti:
Il numero di versione di PGP, identifica la versione di PGP usata per creare la chiave associata al certificato;
La chiave pubblica del detentore del certificato, parte pubblica del paio di chiavi associata all'algoritmo della chiave, che sia RSA, DH (Diffie-Hellmann) o DSA (Algoritmo di firma digitale);
Le informazioni del detentore del certificato, si tratta di informazioni rispetto all'"identità" dell'utente, come il suo nome, il suo ID utente, la sua fotografia e così via;
La firma digitale del detentore del certificato, anche detta auto-firma, si tratta della firma effettuata con la chiave privata corrispondente alla chiave pubblica associata al certificato;
Il periodo di validità del certificato, date/orari di inizio e scadenza del certificato. Indica la data di scadenza del certificato;
L'algoritmo di cifratura simmetrica preferita per la chiave, indica l'algoritmo di cifratura che il detentore del certificato preferisce applicare al criptazione delle informazioni. Gli algoritmi supportati sono CAST, IDEA o DES tripla.
Il fatto che un solo certificato possa contenere più firme è uno degli aspetti unici del formato di certificato PGP. Molte persone possono firmare il paio di chiave/identificazione per attestare con certezza l'appartenenza della chiave pubblica ad uno specifico detentore. Alcuni certificati PGP sono composti da una chiave pubblica con più denominazioni (Label), ognuna con un modo di identificazione del detentore della chiave diverso (ad esempio, il nome e l'account di messaggeria aziendale del detentore, lo pseudonimo e l'account di messaggeria personale del detentore, la sua fotografia, e tutto ciò, in un solo certificato).
In un certificato, una persona deve affermare che una chiave pubblica e il nome del detentore della chiave siano associati. Chiunque può validare i certificati PGP. I certificati X.509 devono essere sempre validati da un'autorità di certificazione o da una persona designata dalla CA. I certificati PGP prendono anche in carico una struttura gerarchica attraverso una CA per la validazione dei certificati. Vi sono molteplici differenze tra un certificato X.509 e un certificato PGP. Le più importanti sono indicate qui-sotto:
Per creare un certificato PGP, si deve chiedere l'emissione di un certificato X.509 presso un'autorità di certificazione e ottenerlo;
I certificati X.509 prendono in carico un solo nome per il detentore della chiave;
I certificati X.509 prendono in carico una sola firma digitale per attestare la validità della chiave.
Di regola, la CA (Certification authority - autorità di certificazione) ispira totale fiducia per stabilire la validità dei certificati e effettuare tutto il processo di validazione manuale. Ma, è difficile stabilire un rapporto di fiducia con le persone che non sono state esplicitamente considerate affidabili dalla CA.
In un ambiente PGP, ogni utente può agire come un'autorità di certificazione. Può quindi validare il certificato di chiave pubblica di un altro utente PGP. Tuttavia, un simile certificato può essere considerato come valido da un altro utente unicamente se un terzo riconosce colui che ha validato questo certificato come un corrispondete affidabile. Cioè, se si rispetta ad esempio la mia opinione secondo la quale le chiavi degli altri sono corrette soltanto se sono considerato come un corrispondete affidabile. In caso contrario, la mia opinione sulla validità delle altre chiavi è controversa.
Supponiamo, ad esempio, che il vostro portfolio di chiavi contiene la chiave di Alice. Voi l'avete validata e, per indicarlo, la firmate. Inoltre, sapete che Alice è molto precisa per quanto riguarda la validazione delle chiavi degli altri utenti. Di conseguenza, attribuite una fiducia completa alla sua chiave. Alice diventa così un'autorità di certificazione. Se firma la chiave di un altro utente, questa chiave apparirà come valida nel vostro portfolio di chiavi.
Solo il detentore di un certificato (il detentore della propria chiave privata corrispondente) o un altro utente, designato come autorità di revoca dal detentore del certificato, ha la possibilità di revocare un certificato PGP. La designazione di un'autorità di revoca è utile, dato che la revoca, da un utente PGP, del suo certificato è spesso dovuta alla perdita della password complessa della chiave privata corrispondente. Ora, questa procedura può unicamente essere effettuata se è possibile accedere alla chiave privata. Un certificato X.509 può unicamente essere revocato dal suo emettitore.
Quando un certificato è revocato, è importante avvertire i potenziali utenti. Per informare la revoca dei certificati PGP, il metodo abituale consiste nel piazzare questa informazione su un server di certificati. Così, gli utenti che vogliono comunicare con voi sono avvertiti di non usare questa chiave pubblica.
Articolo scritto da Sylvain Lorin
Foto: © Martial Red – Shutterstock.com