Crittografia
di Luc Pac
Chiunque si interessi di questioni inerenti la privacy digitale
avrà sicuramente già sentito parlare del software
Pretty Good Privacy. Il PGP (così è familiarmente
chiamato da tutti), come accennato nell'Introduzione, è un
programma informatico di crittografia che si è diffuso in
tutto il mondo dai primi anni '90; funziona praticamente su qualsiasi
computer ed è completamente gratuito. Questo capitolo cercherà
di esporre un'introduzione pratica alla crittografia e di spiegare
gli aspetti più generali dell'utilizzo di un programma come
il PGP, rimandando al prossimo capitolo le questioni relative all'installazione
e ai comandi più comuni. È importante sottolineare
che la lettura di queste pagine non sostituisce e non deve sostituire
un'attenta e ripetuta lettura del manuale originale allegato al
PGP stesso: qualsiasi utilizzo del PGP che prescinda da questa lettura
costituisce un potenziale pericolo per sé e per le altre
persone con le quali si comunica!
Algoritmi e chiavi
Crittografia: s.f. sistema segreto di scrittura in cifra o codice
(dal Vocabolario della lingua italiana di Nicola Zingarelli)
La crittografia è un'arte antichissima: consiste nel rendere
incomprensibile un certo messaggio a occhi estranei. Ecco un sistema
crittografico elementare:
==================================================
a b c d e f G h i j k l m
1 2 3 4 5 6 7 8 9 10 11 12 13
n o p q r s
t U v w x y z
14 15 16 17 18 19 20 21 22 23 24 25 26
==================================================
Ad ogni lettera di questo alfabeto corrisponde un numero da 1 a
26. Basta mettersi d'accordo con il proprio interlocutore, affinché
nei messaggi ogni lettera venga sostituita dalla lettera che la
segue di 13 posizioni. In questo modo la lettera "a" (posizione
1) viene sostituita dalla lettera "n" (posizione 14),
e così via. Utilizzando questa convenzione, il messaggio:
================================================
"il piano per la fabbricazione della kriptonite
e' dietro il quadro in salotto"
================================================
diventa
================================================
"vy cvnab cre yn snooevpnmvbar qryyn xevcgbavgr
r' qvrgeb vy dhnqeb va fnybggb"
================================================
In questo sistema
di crittografia, la trasposizione per ogni lettera di un numero
fisso di posizioni rappresenta ciò che viene chiamato algoritmo,
mentre il numero di posizioni di cui trasporre le lettere (numero
che ovviamente può cambiare di volta in volta) rappresenta
la chiave di cifratura (o di codifica). Algoritmo e chiave sono
le due componenti principali di ogni sistema di crittografia, componenti
che permettono il passaggio dal messaggio in chiaro al messaggio
cifrato (o crittato) e viceversa.
L'esempio sopra riportato costituisce un sistema di crittografia
estremamente debole: un eventuale estraneo che volesse intercettare
e comprendere la comunicazione (colui che viene convenzionalmente
indicato con il termine di nemico) raggiungerebbe il suo scopo sfruttando
gli evidenti punti deboli dell'algoritmo. È da notare, ad
esempio, che il messaggio cifrato conserva molti indizi del messaggio
in chiaro: ha lo stesso numero di lettere, mantiene le stesse separazioni
tra le parole, conserva la stessa distribuzione statistica delle
varie lettere. Un nemico sufficientemente scaltro impiegherebbe
pochi secondi a sospettare che l'algoritmo utilizzato sia proprio
una semplice trasposizione di lettere; una volta individuato l'algoritmo,
diventa molto semplice e veloce anche provare tutte le 25 chiavi
possibili fino a quando non appare un messaggio comprensibile.
La crittografia, nel corso dei secoli e data la sua importanza in
ambito militare e strategico, è diventata quindi anche una
tecnica estremamente complessa capace di utilizzare algoritmi derivati
dalle più avanzate conoscenze nel campo della matematica.
Con la progressiva crescita di complessità degli algoritmi,
si è arrivati anche a definire alcuni requisiti di base che
qualsiasi sistema crittografico deve soddisfare affinché
possa essere considerato sufficientemente robusto (cioè difficilmente
attaccabile da tentativi di crittanalisi da parte del nemico): uno
di questi requisiti è che la robustezza del sistema non deve
dipendere dalla segretezza dell'algoritmo (il cosiddetto "principio
di Kerckhoff "). Nel nostro esempio, una volta che il nemico
individua l'algoritmo di trasposizione delle lettere gli è
sufficiente provare al massimo 25 combinazioni (chiavi) diverse
per avere la certezza di risalire al messaggio in chiaro. Nei sistemi
crittografici più robusti, invece, anche la totale conoscenza
dell'algoritmo non permette in nessun modo di comprometterne la
sicurezza, unicamente affidata alla segretezza della chiave concordata
(che ovviamente avrà un campo di variazione potenzialmente
infinito).
Per questo motivo, nella delicatissima fase di valutazione dell'affidabilità
di un sistema crittografico, vengono presi in considerazione da
parte della comunità criptoanarchica internazionale soltanto
quei sistemi di cui gli autori hanno messo a disposizione tutti
gli algoritmi impiegati; nel caso di software informatico, gli algoritmi
sono rappresentati dai codici sorgenti, che permettono a chiunque
di decostruire e ricostruire il software sul proprio computer. Una
prima considerazione da fare a questo punto è la seguente:
la maggior parte dei sistemi di crittografia proposti o utilizzati
dagli enti governativi sono basati su algoritmi mantenuti segreti.
Il PGP, al contrario, utilizza algoritmi pubblici e ampiamente conosciuti
e studiati, e nonostante questa dimensione pubblica garantisce un'ottima
sicurezza. Già solo questo punto spinge a diffidare di qualunque
sistema crittografico proposto dallo Stato e a considerare allo
stesso tempo il PGP come un sistema privo di difetti evidenti (che
sarebbero immediatamente stati scoperti dalle migliaia di ricercatori
che hanno analizzato il PGP nel corso di questi anni, ognuno dei
quali avrebbe guadagnato fama pubblica, ricchezza economica e carriera
accademica da un eventuale successo in questo senso).
Il motivo per cui viene consigliato proprio il PGP, tra i tanti
programmi disponibili, come software di crittografia "preferito"
è semplice: si tratta di un programma sviluppato praticamente
in pubblico, alla luce del sole, sotto gli sguardi attenti di una
vasta comunità di esperti; inoltre viene distribuito completo
di sorgenti, che permettono - a chiunque ne abbia voglia o capacità
- di cimentarsi con lo studio dei suoi algoritmi. Il PGP pare dunque
essere un programma che non ha paura di mostrare in pubblico quali
potrebbero essere i suoi punti deboli; mentre al contrario, sui
sistemi crittografici "proprietari" fioriscono continuamente
leggende e illazioni (fondate o meno) su possibili backdoors - "porte
sul retro" - che garantirebbero solo a chi le conosce una facile
decodifica dei messaggi. È anche il caso di accennare a una
cosa che dovrebbe essere scontata, ma che è comunque bene
chiarire una volta per tutte: la crittografia impiegata dal PGP
e in generale il livello di sicurezza offerto dalle varie tecniche
di cui si parlerà in questo libro non ha nulla in comune
con le opzioni di "sicurezza" offerte da vari software
per ufficio usati comunemente. Molti di questi programmi (word processors,
databases, archiviatori e compattatori, eccetera) offrono infatti
la possibilità di proteggere i file con una password; si
tratta quasi sempre di protezioni debolissime che possono essere
superate in pochi minuti da persone sufficientemente esperte. I
livelli di privacy e sicurezza che ci interessano non sono quelli
di questi giocattoli e non sono nemmeno quelli degli standard di
crittografia previsti in genere dai governi nazionali per l'utilizzo
da parte dei privati cittadini: questi standard possono offrire
una discreta protezione da eventuali attacchi condotti da singoli
privati, ma sono comunque superabili in caso di reale necessità
da parte delle agenzie di sicurezza governative. Le tecniche presentate
qui sono da considerarsi alla stregua di armi da guerriglia digitale,
in grado di resistere ad attacchi militari seri e impegnati.
Sulla sicurezza del PGP si tornerà più avanti. Ora
è il momento di parlare di un'altra particolare caratteristica
di questo programma. Com'è noto, il PGP è un software
di crittografia a chiave pubblica.
Crittografia a chiave pubblica
Joe Lametta vorrebbe mandare una bottiglia di vino rosso italiano
a Lex Luthor, ma sa che un raffinato postino potrebbe intercettare
il pacco, aprirlo e bere il contenuto della bottiglia. Luthor è
in vacanza alle Bahamas - e non può andare personalmente
a ritirare il pacco da Joe Lametta. Come può fare Joe per
inviare il pacco a Lex - nella sicurezza che nessun altro tranne
il destinatario possa aprirlo?
Esiste almeno una soluzione logica a questo problema del tutto teorico:
Joe chiude il pacco con un lucchetto di cui possiede la chiave.
Conserva la chiave e spedisce il pacco a Lex. Quest'ultimo riceve
il pacco (che non può aprire perché non ha la chiave).
Lo chiude nuovamente con un lucchetto di cui conserva a sua volta
la chiave e rispedisce il pacco a Joe. Joe toglie il suo lucchetto
e rispedisce il pacco a Lex - che può finalmente aprire la
sua bottiglia di vino, chiusa ormai solo con il lucchetto da lui
scelto.
Questo semplice metodo condivide alcune caratteristiche con la crittografia
a chiave pubblica: si tratta di un sistema che risolve efficacemente
il classico problema della crittografia tradizionale. Se la sicurezza
del sistema dipende dalla segretezza della chiave di codifica utilizzata,
allora è necessario almeno un canale sicuro attraverso il
quale trasmettere la chiave. Per concordare una chiave con il proprio
interlocutore c'è bisogno di mettersi preventivamente in
contatto con lui incontrandolo di persona, telefonandogli, scrivendogli
una lettera, mandandogli un messaggero o in qualsiasi altro modo.
In qualsiasi caso, esiste il pericolo che la chiave venga intercettata
durante il tragitto, compromettendo quindi l'intero sistema comunicativo.
La crittografia a chiave pubblica permette a due (o più)
persone di comunicare in tutta riservatezza anche se non si sono
mai incontrate prima e dunque non è mai stata concordata
in precedenza alcuna chiave di codifica. La cosa è apparentemente
assurda e anti-intuitiva, ma il principio in base al quale è
possibile tutto questo è relativamente semplice da comprendere.
Nella crittografia tradizionale viene utilizzata un'unica chiave
sia per codificare, sia per decodificare i messaggi. Le informazioni
(la chiave e l'algoritmo) necessarie per chi deve inviare il messaggio
sono quindi identiche a quelle necessarie a chi deve riceverlo.
La crittografia a chiave pubblica, al contrario, si basa su una
coppia di chiavi: una chiave pubblica e una chiave segreta. La chiave
pubblica serve unicamente per codificare il messaggio, mentre quella
segreta serve unicamente per decodificarlo. È come se una
cassaforte avesse due chiavi distinte, una usata per aprirla e una
per chiuderla. A questo punto il gioco è fatto: ogni utilizzatore
del PGP si crea la propria (o le proprie, in casi particolari) coppia
di chiavi. La chiave segreta viene tenuta, appunto, segreta e non
viene mai rivelata a nessuno (nemmeno alle persone con le quali
si comunica); viceversa, la chiave pubblica viene diffusa ovunque
e in ogni modo: può essere aggiunta automaticamente in coda
a ciascun proprio messaggio nelle varie conferenze elettroniche
cui si partecipa, o può essere depositata in archivi pubblici
(keyserver) a disposizione di chi la desideri. È importante
che la tua chiave pubblica sia liberamente accessibile, perché
chiunque voglia comunicare con te dovrà preventivamente munirsi
della tua chiave pubblica (eventualmente anche chiedendotela direttamente)
con la quale crittare il messaggio a te indirizzato.
La differenza rispetto alla crittografia tradizionale sta nel fatto
che adesso non è più necessario trovare un luogo sicuro
nel quale vedersi e scambiarsi la chiave di codifica/decodifica,
in quanto anche nel caso la chiave pubblica venisse intercettata
non ci sarebbe assolutamente nessuna conseguenza: le chiavi pubbliche
che viaggiano liberamente in rete possono solo crittare, non decrittare
i messaggi. Con le coppie di chiavi della crittografia a chiave
pubblica diventa possibile condurre discorsi riservati anche tra
individui che non si sono mai conosciuti o visti di persona, magari
perché separati da migliaia di chilometri di distanza.
Chiunque può usare la chiave pubblica del destinatario per
crittare un messaggio diretto a lui - mentre il destinatario userà
la propria corrispondente chiave segreta per decrittare quel messaggio.
Nessuno che non sia il destinatario può decrittarlo, perché
nessun altro ha accesso alla chiave segreta; nemmeno la persona
che ha mandato il messaggio potrà più aprirlo una
volta crittato.
Ovviamente questo principio generale ha una solida base matematica
che lo giustifica; tale base, riassunta e semplificata all'estremo,
si fonda sull'inesistenza - nel corpo di conoscenze sulla matematica
pura sviluppate dall'uomo negli ultimi secoli - di un metodo sicuro
e rapido per fattorizzare (ridurre ai numeri primi che lo producono
se moltiplicati tra loro) un numero qualsiasi composto da un numero
di cifre sufficientemente alto. In altre parole, se si prendono
due numeri primi a caso X e Y, si può agevolmente moltiplicarli
tra loro, ottenendo Z; ma è estremamente difficile compiere
il percorso inverso: dato Z, non esiste un metodo efficace per risalire
a X e Y. Se questi numeri sono scelti in modo da essere sufficientemente
alti (composti cioè da centinaia di cifre), la difficoltà
di risalire a X e Y non può essere superata con le attuali
capacità di calcolo né con quelle ragionevolmente
prevedibili nel prossimo futuro. Se è chiaro che non è
questa l'occasione per addentrarsi nei dettagli di questo principio,
è però necessario fare presenti due cose.
Prima di tutto, l'intera struttura matematica su cui si regge la
crittografia a chiave pubblica (e quindi anche il PGP) è
completamente a disposizione di chiunque abbia voglia, tempo e competenze
per verificarla e metterla alla prova. Comprendere e verificare
il principio di base è una cosa alla portata di chiunque
abbia una buona base matematica a livello scolastico. Addentrarsi
negli algoritmi veri e propri, certamente, richiede qualcosa di
più. In ogni caso, l'intero corpo di conoscenze necessario
è di dominio pubblico e facilmente recuperabile in qualsiasi
biblioteca ben fornita. Se qualcuno ha dei dubbi sull'efficacia
del PGP e non si fida degli anni e delle migliaia di ore spese ad
analizzarlo pubblicamente da parte di persone interessate e motivate
di tutto il mondo, alcune delle quali tutt'altro che "comode"
per l'establishment e con motivi tutt'altro che deboli per cercare
un sistema di crittografia veramente robusto, ebbene questo qualcuno
non ha che da rimboccarsi le maniche e fare un po' di verifiche
in prima persona: troverà tutte le porte spalancate.
In secondo luogo, è fondamentale ricordare che il PGP non
è un sistema assolutamente sicuro. Nessun sistema di crittografia
lo è, né lo potrà mai essere. La sicurezza
che può offrire un ottimo sistema di crittografia come il
PGP è solamente relativa, per quanto molto vicina a quella
assoluta: essa dipende da una serie di fattori (tecnologici, matematici,
umani), di cui però l'elemento di gran lunga più importante
rimane l'attenzione dell'utilizzatore umano. È perfettamente
inutile speculare sui milioni di anni di calcolo necessari a spezzare
una chiave RSA, se poi la propria chiave segreta e la propria frase
di accesso rimangono a disposizione di chiunque sulla scrivania
o sulla propria agenda. Sulla questione degli "attacchi pratici",
indipendenti dalla robustezza degli algoritmi di crittografia usati,
si tornerà tra poco in quanto si tratta di un argomento importantissimo
e spesso trascurato, ma nel quale la creatività e la fantasia
degli esseri umani talvolta riescono a superare anche le più
ardue barriere matematiche.
Firme digitali e pseudonimato
Facciamo ora una breve digressione e analizziamo una delle caratteristiche
più evidenti della comunicazione in rete in generale.
Le interazioni in rete avvengono necessariamente fra "entità"
e la dimensione più strettamente fisica viene parzialmente
messa da parte. Questo però non significa affatto, come si
sente dire da più parti, che le interazioni siano condotte
per questo in forma necessariamente anonima.
L'oggettiva difficoltà di risalire con certezza al collegamento
biunivoco tra "entità" interagente e individuo
fisico che muove quell'entità costituisce sempre più
un problema da un punto di vista giuridico: nonostante in rete possano
essere compiuti reati, truffe e illeciti di vario tipo, la responsabilità
legale di questi atti ricade spesso nel nulla, in quanto è
molto difficile accertare quale persona fisica stia effettivamente
operando all'altro capo del filo in quel preciso istante. Ma questi
sono problemi giuridici e in particolare della giurisdizione statale
(la particolare "giurisdizione" sviluppata spontaneamente
in rete pare non preoccuparsene troppo). È solo in un'ottica
repressiva e di controllo che, partendo da questa considerazione,
si può arrivare a concludere che la comunicazione in rete
è sempre anonima. Ciò che manca in rete non è
il nome delle persone, ma semplicemente la zavorra dell'identità
anagrafica.
A sostituzione del nome anagrafico, assegnato per legge e immodificabile,
in rete prolifera una quantità enorme di altri nomi, nicks,
handles, alias, pseudonimi. L'importanza di questi nomi non è
minore di quella del proprio nome anagrafico: è attraverso
il loro riconoscimento pubblico che in rete è possibile costruire
relazioni sociali significative, che potranno ovviamente poi essere
trasferite anche al di fuori della rete.
Se esiste dunque una modalità caratteristica dell'interazione
in rete rispetto ai nomi e alle identità individuali, questa
non è data principalmente dall'anonimato ma piuttosto dallo
pseudonimato. Lo pseudonimato comporta un processo di costruzione
dell'identità e un suo riconoscimento sociale che perdurano
nel tempo ma sono anche mutevoli e continuamente in divenire, mai
acquisiti definitivamente; patrimonio fondamentale dello pseudonimo
(sia esso corrispondente o no a un nome anagrafico) è la
reputazione che esso riesce a guadagnare attraverso la sua vita
in rete o quella che eredita da un'eventuale ragnatela di relazioni
sociali avviate in precedenza off-line.
La perfetta realizzazione dello pseudonimato si scontra però
con gli stessi problemi a cui si è accennato a proposito
dell'identità anagrafica: via rete è possibile modificare
non solo il nome-numero di serie che lo Stato ci ha affibbiato,
ma anche lo stesso pseudonimo che ci siamo scelti. È possibile
scrivere firmandosi con uno pseudonimo altrui. Questa possibilità
costituisce il più delle volte una sanissima e utile opera
di decostruzione dei propri pregiudizi e delle proprie rigidità
ed è una possibilità che ci guardiamo bene dal voler
eliminare. Nonostante questo, ci sono casi in cui, magari a causa
della natura molto "specifica e concreta" della comunicazione,
è assolutamente necessario essere certi dell'autore di un
dato messaggio. Non tanto essere certi del suo numero di serie statale,
quanto piuttosto del fatto che egli è effettivamente la stessa
entità (individuale o collettiva) con cui si è comunicato
in precedenza, via rete o anche in carne ed ossa. In altre parole,
è necessario essere certi del suo pseudonimo.
È in una situazione come questa che la crittografia a chiave
pubblica viene nuovamente in aiuto. Semplicemente rovesciando l'impiego
delle chiavi pubbliche e private, è possibile porre una firma
digitale crittografica sui messaggi che immettiamo in rete. La chiave
segreta del mittente può infatti essere usata, se si vuole
(oltreché per decrittare i messaggi ricevuti) anche per generare
una firma da apporre nel corpo dei messaggi che si spediscono. La
firma digitale del messaggio può poi essere verificata dal
destinatario (o da chiunque altro) utilizzando la chiave pubblica
del mittente.
Questo serve a garantire che il mittente è colui che davvero
ha scritto il messaggio - e che il messaggio non è stato
successivamente manipolato da nessun altro, poiché solo il
mittente possiede la chiave segreta per poter firmare. È
tecnicamente impossibile falsificare o modificare un messaggio autenticato
senza invalidarne la firma e lo stesso mittente non può più
revocare la firma una volta apposta. Detto in altre parole, il PGP
ti permette di ricevere un messaggio che solo tu sei in grado di
leggere e in più (se il mittente ha scelto di firmare il
messaggio) ti permette di essere sicuro del fatto che quel messaggio
può essere stato scritto solo da una certa persona (o comunque
solo da una persona che ha accesso a una particolare chiave segreta).
Una delle applicazioni più utili della firma digitale, a
parte l'autenticazione dei messaggi veri e propri, riguarda la conferma
delle chiavi pubbliche di terze persone. La crittografia a chiave
pubblica infatti lascia scoperto un possibile punto debole. Nel
momento in cui vuoi comunicare con Lex Luthor, ti serve la sua chiave
pubblica. Il modo migliore per ottenerla è direttamente dalle
sue mani. Talvolta questo non è possibile e sei costretto
a fartela inviare attraverso la rete. Come abbiamo visto il sistema
a chiave pubblica risolve ogni problema rispetto a un'eventuale
intercettazione della chiave lungo il tragitto, ma presta il fianco
alla possibilità che Superman, conoscendo la tua volontà
di comunicare con Lex Luthor, si spacci per lui e ti spedisca una
chiave pubblica contraffatta. Se cadi nel tranello e utilizzi quella
chiave, i successivi messaggi saranno leggibili non da Lex Luthor,
bensì da Superman, titolare della vera corrispondente chiave
segreta. Superman potrà poi perfezionare il suo inganno rispedendo
a sua volta tutti i messaggi a Lex Luthor, che in questo modo non
si accorgerà nemmeno dell'esistenza di una tappa in più
lungo la strada.
Questo problema (chiamato problema "dell'uomo nel mezzo")
è assolutamente concreto e reale. La soluzione sta nel chiedere
e ottenere che ogni nuova chiave pubblica sia firmata da qualcuno
che si conosce e di cui si dispone già con certezza della
rispettiva chiave pubblica. Se sei costretto a ottenere la chiave
di Lex Luthor via rete, avrai cura di verificare che essa sia firmata
da quello sballato di Pippo, che ha contatti quotidiani con Lex
Luthor. Siccome hai incontrato di persona Pippo un anno fa, e in
quell'occasione vi siete personalmente scambiati le rispettive chiavi
pubbliche, tu possiedi con certezza la vera chiave pubblica di Pippo.
Con questa chiave puoi verificare la firma che Pippo ha apposto
sulla chiave pubblica di Lex Luthor, puoi cioè verificare
che Pippo, di cui ti fidi, garantisca che la chiave pubblica che
ti è appena arrivata è effettivamente la chiave di
Lex Luthor. Superman, da solo, non sarebbe mai in grado di mandarti
una chiave firmata da Pippo, spacciandola per la chiave di Lex Luthor.
A questo punto è evidente che la certificazione delle chiavi
può diventare rapidamente molto complessa (Pippo può
firmare la chiave di Lex Luthor, il quale a sua volta firma la chiave
di qualcun altro, tuo prossimo collaboratore), consentendoti, da
un unico punto di partenza sicuro, di estendere la tua rete di contatti
a dismisura comprendendo anche entità che non incontrerai
mai di persona. Con questa caratteristica il cerchio viene chiuso
e diventa veramente possibile stabilire un'infrastruttura comunicativa
priva di contatti fisici che sia doppiamente sicura, sia dal punto
di vista della possibilità di leggere il contenuto della
comunicazione, sia da quello di poterne garantire la provenienza.
Crittanalisi
Prima di concludere questa discussione generale e passare agli aspetti
più concreti del PGP, è necessario un commento critico
sul grado di sicurezza effettivamente raggiungibile con strumenti
di questo tipo.
Si è già detto che la sicurezza dell'algoritmo non
è affatto assoluta, al contrario, lo sforzo necessario per
"rompere" con la sola "forza bruta" una tipica
chiave RSA (questo è il nome dello specifico algoritmo di
crittografia a chiave pubblica utilizzato dal PGP nelle sue versioni
più diffuse) è quantificabile, con le attuali conoscenze
matematiche, in modo abbastanza preciso. A seconda dei mezzi a disposizione,
questo sforzo è misurato in migliaia o milioni di anni di
calcolo, ipotizzando anche l'impiego di computer molto più
potenti di quelli pubblicamente conosciuti in questo momento. La
sicurezza, da questo punto di vista, è quindi "relativamente
assoluta", a patto che non subentrino altri anelli, più
deboli, nella catena del nostro sistema.
Scrivere la propria passphrase (necessaria per accedere alla chiave
segreta) su un foglietto post-it appiccicato al monitor può
ridurre i famosi milioni di anni di calcolo a pochi secondi. A parte
questo esempio banale, i potenziali anelli deboli sono sfortunatamente
molti. Tuttavia si tratta sempre di debolezze esterne all'algoritmo
di crittografia vero e proprio: è inutile chiedersi se i
milioni di anni potranno presto ridursi a centinaia con l'aiuto
di computer più potenti; è molto più utile,
invece, chiedersi ad esempio in base a quali criteri è stata
scelta la propria passphrase. La metodologia di attacco più
efficiente conosciuta fino a questo momento, infatti, piuttosto
che tentare tutte le combinazioni possibili della chiave (brute
force attack) si affida a dizionari che, una volta comunque acquisita
la chiave segreta attraverso altri mezzi (vedi sotto), limitano
i tentativi per trovare la passphrase alle sole combinazioni più
plausibili in base a fattori tipicamente umani.
Prima di commentare i possibili attacchi condotti tramite dizionario,
però, è opportuno soffermarsi ancora un momento sugli
attacchi brute force. Nel caso del PGP, questi consistono nel tentativo
di ottenere i codici di accesso avendo a disposizione la sola chiave
pubblica. In termini matematici si tratta di "fattorizzare"
un numero estremamente alto; lo sforzo necessario per compiere questa
operazione dipende direttamente e in primo luogo dalla lunghezza
della chiave pubblica prescelta. Le tipiche chiavi pubbliche create
con il PGP sono costituite, in genere, da un numero ben preciso
di bit: 384, 512, 768, 1024, 2048. All'aumentare della lunghezza
della chiave pubblica aumenta anche lo sforzo necessario per fattorizzarla.
Questo aumento avviene però in for ma esponenziale, e quindi
una chiave da 1024 bit è incomparabilmente più sicura,
da questo punto di vista, di una da 512. Per rendere più
evidenti queste differenze, la tabella qui riportata indica un tentativo
di stima dello sforzo richiesto, con gli algoritmi attualmente più
evoluti, per fattorizzare alcune tipiche chiavi pubbliche generate
dal PGP:
(Se stai utilizzando un browser text-only clicca qui per visualizzare
una versione semplificata della tabella che segue)
Dimensioni della chiave in bits Anni - MIPS necessari per la fattorizzazione
512 30.000
768 200.000.000
1024 300.000.000.000
2048 300.000.000.000.000.000.000
L'intensità dello sforzo è espressa in "anni-MIPS",
una misura comunemente usata per indicare la potenza di calcolo.
Un anno-MIPS corrisponde a un anno di calcolo ininterrotto effettuato
da una macchina della potenza di 1 MIPS (cioè in grado di
eseguire un milione di istruzioni al secondo; è da tenere
presente che i comuni personal computer attualmente in commercio
esprimono in genere una potenza di calcolo superiore a 200 MIPS).
Per dare un'idea concreta di quale sia la capacità di calcolo
raggiungibile attualmente, ricordiamo i due più importanti
eventi che hanno sottoposto a prove pratiche la resistenza del PGP
agli attacchi brute force.
Nel primo caso si trattava di raccogliere la sfida lanciata da Ron
Rivest (uno degli ideatori del sistema RSA, il sistema di crittografia
a chiave pubblica su cui si basa il PGP) nel 1977: a chi fosse riuscito
a fattorizzare un numero di 129 cifre (approssimativamente corrispondente
a una chiave PGP da 425 bit), Rivest prometteva un premio simbolico
di 100 dollari. La sfida era nota con il nome "RSA-129".
Lo stesso Rivest aveva stimato che fossero necessari 40 quadrilioni
di anni per realizzare una simile impresa. Nel 1994, dopo soli 17
anni, questo obiettivo è stato raggiunto seguendo una metodologia
assai interessante: i calcoli sono stati eseguiti su una gigantesca
macchina virtuale, composta da migliaia di computer sparsi in tutto
il mondo. Infatti, anziché concentrare lo sforzo su una sola
macchina, che avrebbe portato a tempi di calcolo assolutamente improponibili
(anche se forse inferiori ai 40 quadrilioni di anni stimati da Rivest),
la sfida è stata ampiamente pubblicizzata in rete e, attraverso
alcuni coordinatori, distribuita su migliaia di volontari, ognuno
dei quali metteva a disposizione le proprie risorse di calcolo nei
momenti in cui queste non venivano utilizzate per le normali attività
lavorative. Attraverso questa enorme iniziativa pubblica e collettiva
si è riusciti, in soli otto mesi di lavoro effettivo ed esprimendo
uno sforzo complessivo pari a 5.000 anni-MIPS, a superare la sfida,
fattorizzando il numero magico da 129 cifre e decrittando il messaggio
di sfida scritto nel 1977 da Rivest. Questo evento rese evidenti
a tutti le incredibili possibilità offerte dalla cooperazione
in rete su vasta scala.
Il secondo evento degno di nota è avvenuto nel 1995 e ha
rappresentato il primo attacco brute force riuscito direttamente
contro una vera e propria chiave PGP. Si trattava della chiave da
384 bit (116 cifre) di "Blacknet", un esperimento dimostrativo
di come avrebbe potuto funzionare un ipotetico mercato nero di informazioni
segrete, basato su crittografia e firme digitali. La chiave è
stata fattorizzata in tre mesi, con uno sforzo di 400 anni-MIPS
(da notare la differenza rispetto ai 5.000 anni-MIPS dell'operazione
precedente, riguardante una chiave di sole 13 cifre più lunga).
Nonostante l'impegno di calcolo molto più modesto rispetto
a RSA-129, in questa occasione la novità era rappresentata
dalla segretezza in cui si è svolto il lavoro: contrariamente
alla pubblicità e agli appelli pubblici in rete alla ricerca
del maggior numero possibile di volontari, in questo caso gli autori
erano solamente quattro persone che hanno lavorato in privato e
hanno reso noto il loro lavoro solo a operazione conclusa. Nonostante
i quattro non fossero esattamente persone qualunque (erano tutti
responsabili di centri di calcolo e tra le macchine utilizzate,
oltre a decine di workstations, figurava anche un MasPar, uno dei
computer più potenti e costosi mai costruiti) il tentativo,
perfettamente riuscito, era quello di dimostrare come un attacco
del genere fosse possibile anche senza pubblicità e dunque,
a maggior ragione, anche da parte di agenzie governative più
o meno segrete.
Questi due eventi hanno avuto il grande merito di dare finalmente
una dimostrazione pubblica e concreta dell'effettivo livello di
sicurezza garantito da sistemi come il PGP. I due successi nella
fattorizzazione delle chiavi non devono essere interpretati affatto
come un'espressione di debolezza del sistema: al contrario, ne è
uscita confermata l'impossibilità pratica di attaccare frontalmente
le tipiche chiavi effettivamente utilizzate in questo momento, composte
da almeno 1024 bit. Le chiavi da 512 bit, considerate sicure fino
a pochi anni fa, cominciano ora a essere considerate dei possibili
obiettivi da parte di ipotetiche organizzazioni dotate di enormi
risorse e ovviamente di un enorme interesse nel dedicare queste
risorse, per almeno alcuni mesi, a uno specifico obiettivo.
Ma i metodi offerti dalla crittanalisi (cioè la scienza che
studia i modi per superare gli algoritmi di crittografia) non si
limitano ai tentativi brute force applicati per indovinare la chiave:
spesso è possibile scoprire delle debolezze matematiche nell'algoritmo,
evidenti solo dopo anni di studi. Inoltre, vi sono delle particolari
condizioni nelle quali il lavoro dei crittanalisti risulta facilitato.
Nonostante da questo punto di vista il PGP sia reputato sicuro,
può essere interessante citare qualche esempio, accennando
ai tre principali scenari di attacco ipotizzati in crittanalisi,
in ordine decrescente di complessità. Il primo scenario è
quello in cui il nemico non conosce nulla del contenuto dei messaggi
che ci scambiamo; il nemico assiste cioè esclusivamente al
transito dei messaggi nella loro for ma crittografata (cyphertext-only
attack). È questo lo scenario più sicuro, in cui molte
volte l'unica possibilità di attacco è rappresentata
dagli attacchi brute force discussi sopra. Ma se l'algoritmo è
sufficientemente robusto e la chiave sufficientemente lunga, gli
attacchi brute force risultano, come si è visto, impossibili
o eccessivamente dispendiosi in termini di tempo e risorse. È
normale allora che il nemico cerchi di ottenere ulteriori informazioni.
Ci spostiamo così nel secondo scenario, in cui il nemico
riesce a ottenere una o più coppie di messaggi in chiaro
(plaintext) e delle loro corrispondenti versioni crittate (known-plaintext
attack). La possibilità di uno scenario simile non deve soprendere:
è sufficiente dimenticarsi sul proprio hard disk il messaggio
luthor.asc (crittato) e luthor.txt (in chiaro). Un'eventuale perquisizione
e sequestro del computer potrebbe fornire al nemico molte coppie
di messaggi come questa. In campo crittanalitico si cerca sempre
di sfruttare la disponibilità dei messaggi in chiaro per
arrivare a carpire informazioni in grado di rompere chiave e algoritmo,
decrittando così qualunque altro messaggio.
Infine, un terzo scenario ancora più critico è quello
denominato chosenplaintext attack, in cui il nemico è in
grado - normalmente attraverso l'inganno e l'astuzia - di scegliere
il contenuto in chiaro di un certo messaggio e di ottenere poi la
sua versione crittata. Questo tipo di attacco è ciò
che ha favorito la rottura del codice "Purple" usato dai
giapponesi durante la seconda guerra mondiale: le forze americane,
che già monitoravano il traffico comunicativo crittato del
Giappone, inviarono una particolare notizia falsa che sapevano sarebbe
stata immediatamente trasmessa, crittata, al comando generale giapponese.
La possibilità di avere un particolare testo scelto dal nemico
(e non un testo a caso) e la sua corrispondente forma crittata offre
ulteriori informazioni utili ai crittanalisti esperti.
È bene ribadire che il PGP pare essere assolutamente resistente
perfino in caso di chosen-plaintext attack. Tuttavia è anche
bene essere consapevoli del fatto che, in linea teorica, qualsiasi
sistema crittografico corre rischi maggiori quando si passa da una
condizione di cyphertext only a una di known-plaintext o addirittura
di chosen-plaintext attack. Nel caso della crittografia a chiave
pubblica, poi, ulteriori rischi provengono dalle caratteristiche
della firma elettronica. Lo scenario chosen-plaintext, infatti,
può essere raggiunto da questo versante con ancora maggiore
facilità: è sufficiente che il nemico ci spedisca
un messaggio apparentemente banale e innocuo, chiedendoci di restituirlo
dopo avervi apposto la nostra firma elettronica generata con il
PGP. La nostra firma apposta su un messaggio dotato di particolari
caratteristiche scelte dal nemico, in modo del tutto simile a un
chosen-plaintext attack, può in qualche modo facilitare le
operazioni di attacco al nostro sistema.
Rischi di questo tipo su un sistema crittografico basato sul PGP
sono, lo ripetiamo, del tutto teorici e speculativi. Tuttavia rimane
buona norma cercare di evitare, per quanto possibile, di lasciare
sul proprio computer coppie di messaggi in chiaro e crittati; allo
stesso modo è necessario prestare attenzione a ciò
che si firma e non firmare mai contenuti ricevuti da estranei. Conoscere
la possibilità di quest'ultimo tipo di attacchi può
risultare utile, forse più che per proteggere un sistema
già sufficientemente robusto come il PGP, per rendersi conto
di quando le nostre comunicazioni cominciano ad attirare attenzioni
inusuali.
Attacchi pratici
Questo per quanto riguarda le possibilità di attacco offerte
dalla crittanalisi pura. Soprattutto quando i possibili nemici sono
gli organi repressivi dello Stato, però, è abbastanza
probabile che la chiave segreta del PGP risulti rapidamente compromessa
e che dunque risultino molto più convenienti altre metodologie
di attacco, basate sullo sfruttamento di debolezze umane e non più
del sistema crittografico in sé.
Cerchiamo prima di tutto di capire meglio la funzione della passphrase.
La sicurezza del PGP è data da due elementi che dovrebbero
sempre rimanere segreti: la passphrase e la chiave segreta vera
e propria. La chiave segreta è costituita da un blocco di
bit: è un piccolo file che viene custodito sul proprio computer
o su un dischetto. Per maggior sicurezza per poter utilizzare propriamente
la chiave segreta è anche necessario digitare una passphrase,
cioè una parola d'ordine che può essere composta da
parole, frasi o numeri di qualunque lunghezza. Chiave segreta e
passphrase sono entrambe ugualmente necessarie per il processo di
decodifica dei messaggi.
Si può ora immaginare una situazione tipica di attacco molto
concreto al proprio sistema crittografico: il proprio computer cade
completamente nelle mani del nemico (ad esempio a causa di un'improvvisa
perquisizione). In questo caso, a meno che non si siano attuate
cauzioni (ad esempio l'uso di file system crittati o steganografati,
come vedremo più avanti), la chiave segreta risulta compromessa
e lo è di conseguenza il 50% della nostra sicurezza. Ma se
abbiamo predisposto tutto con cura, il 50% di una quantità
"relativamente infinita" rimane qualcosa di "relativamente
infinito". L'importante è dunque proprio aver scelto
bene la passphrase.
In casi del genere, infatti, il nemico avrà comunque bisogno
della passphrase per riuscire a compromettere definitivamente l'intero
sistema. Per ottenerla ha due strade: chiedercela direttamente,
oppure trovarla da solo. Nel primo caso è utile notare che
una simile passphrase, scelta necessariamente in base a criteri
di lunghezza e complessità, è qualcosa che si può
dimenticare molto facilmente; tra l'altro la legge italiana consente
all'imputato di non rispondere alle domande, da qualunque parte
provengano (questo è uno dei motivi per cui in certi casi
è importante informarsi immediatamente se si è imputati
o solo testimoni e tacere fino a quando non si ottiene una risposta
certa raggiunta con l'aiuto di un avvocato). Gli aspetti giuridici
di una simile situazione sono ancora molto incerti e in Italia vi
sono pochissimi precedenti significativi. Può essere comunque
interessante riportare che nei pochi casi in cui sono stati sequestrati
dischi e computer contententi anche (tra le altre cose) materiale
crittato, gli investigatori non hanno fatto finora particolari pressioni
per ottenere le chiavi di accesso.
Nel caso invece che il nemico decida, o sia costretto, a trovare
la passphrase da solo, allora averla scelta bene manifesterà
tutta la sua importanza. In rete sono disponibili alcuni piccoli
programmi in grado di tentare numerose combinazioni al secondo.
Coadiuvati da appositi dizionari elettronici, questi programmi possono
ad esempio essere impiegati per "testare" tutte le parole
più comuni della lingua italiana o di qualsiasi altra lingua
conosciuta. È quindi fondamentale che la passphrase sia costituita
da più parole, possibilmente inesistenti su qualsiasi vocabolario,
comprendenti anche lettere maiuscole, numeri e caratteri di punteggiatura.
La passphrase non deve inoltre avere alcun riferimento a elementi
pubblici o privati della propria vita o di quella dei propri amici
o conoscenti: le prime centinaia di tentativi di un ipotetico attacco
riguarderanno possibili date di nascita, numeri di codice fiscale,
numeri di telefono, indirizzi, nomi scritti correttamente o rovesciati.
Affidarsi a questo tipo di dati per scegliere la propria passphrase
è una pessima idea. Se ci sono dei dubbi in proposito o se
la paranoia sembra eccessiva, basta ricordare che la crittografia
è un'arte molto antica e che sono già stati accumulati
un paio di millenni di esperienza sui modi più comuni usati
dall'uomo per scegliere e memorizzare codici segreti.
Sono stati consigliati vari modi pratici e sicuri per arrivare a
scegliere una passphrase sufficientemente robusta. Uno dei più
semplici e comuni è il seguente: prima di tutto si costruisce
una frase abbastanza lunga ma facile da memorizzare. Ad esempio:
"Accipicchia! Questo libro contiene 250 pagine di dinamite,
gli amici di Superman non saranno contenti di vederlo...".
La nostra passphrase sarà quindi costituita semplicemente
dalle iniziali di ogni singola parola della frase, compresa la punteggiatura:
==============================
"A!Qlc250pdd,gadSnscdv..."
==============================
È facile immaginare come questo sia comunque solo uno dei
molti modi (e nemmeno il più sicuro) per costruire una passphrase
a prova di qualsiasi scanner.
La passphrase ideale è costituita da una sequenza di caratteri
perfettamente casuali. Il requisito della perfetta casualità,
apparentemente banale, in realtà rappresenta un problema
che pone diverse difficoltà. Nell'esempio appena suggerito,
le lettere minuscole appaiono più frequentemente di quelle
maiuscole e le consonanti più frequentemente delle vocali
(nella lingua italiana le vocali appaiono più spesso come
finale di sillaba, tendendo quindi a non comparire all'inizio di
parola). Questo tipo di debolezze, se opportunamente analizzato
e sfruttato, può facilitare un tentativo di attacco. La casualità
perfetta, o almeno una sua accettabile approssimazione, in ambito
informatico si raggiunge spesso affidandosi all'ambiente fisico
esterno al computer: nel momento in cui necessitano di una serie
di numeri casuali, alcuni programmi chiedono all'utente di spostare
il mouse a caso, oppure di campionare il rumore di fondo presente
nella stanza attraverso la scheda audio; il movimento del mouse
e il rumore di fondo verranno poi convertiti in sequenze di informazioni
e quindi in numeri. Il PGP, dal canto suo, al momento della generazione
della prima coppia di chiavi chiede all'utente di digitare alcune
lettere a caso sulla tastiera del computer: ad essere interpretati
e convertiti in numeri, dopo adeguate trasformazioni, saranno in
questo caso gli intervalli di tempo trascorsi tra la pressione di
un tasto e l'altro. Lo scanning sistematico attraverso appositi
programmi costituisce però solo una delle molte strategie
possibili per ottenere la passphrase senza la nostra collaborazione
(stiamo comunque sempre ipotizzando che la sicurezza della chiave
segreta sia già stata compromessa). Altri metodi possono
risultare tanto banali quanto efficaci: se il proprio computer è
posto vicino a una finestra, come spesso accade, un buon telescopio
piazzato per un congruo periodo di tempo nel condominio di fronte
può permettere di leggere tutti i movimenti delle nostre
dita sulla tastiera. Per non parlare, ovviamente, di eventuali altre
persone presenti alle nostre spalle mentre digitiamo la passphrase.
Altre strategie sono meno banali e talvolta sorprendono gli utenti
con minore familiarità nei confronti dei mezzi informatici.
È il caso di una famiglia di programmi denominati "keyloggers",
o anche (se utilizzati in rete) "sniffers". Questi piccoli
programmini, preventivamente installati in un computer, provvedono
a registrare a sua insaputa tutte le operazioni svolte dall'utente,
comprese le sequenze di tasti digitati. In via teorica è
possibile penetrare di nascosto in casa altrui, modificare la configurazione
software del computer e fare in modo che, agli avvii successivi,
il keylogger venga caricato automaticamente. Dopo un certo periodo
di tempo, in un ulteriore sopralluogo si provvederà a prelevare
il keylogger e tutto il suo bagaglio di informazioni. Non è
sempre facilissimo, nemmeno per gli utenti più smaliziati,
rendersi conto di avere un simile intruso nel proprio computer.
La soluzione è quella di non lasciare mai il proprio pc eccessivamente
incustodito (tenendo anche presente che l'eventuale password del
BIOS impostata all'avvio si supera abbastanza facilmente aprendo
fisicamente il cabinet e spostando un jumper all'interno) e soprattutto
verificare spesso che la configurazione di avvio non sia cambiata.
Quest'ultimo controllo potrebbe probabilmente essere reso automatico
e molto più preciso utilizzando qualche programma predisposto
ad hoc.
Un'ulteriore possibilità di attacco riguarda gli utenti di
Windows e di tutti quei sistemi operativi che fanno uso della memoria
virtuale su disco. In questi sistemi, parte della memoria di lavoro
(che contiene anche dati e comandi immessi da tastiera, compresa
l'eventuale passphrase) viene temporaneamente trasferita sul disco
fisso, in un file chiamato file di swap (o swap file). Queste informazioni
possono rimanere nello swap file anche dopo il termine della sessione
di lavoro e lo spegnimento del computer. Per essere sicuri che la
passphrase (o altre informazioni delicate) non sia rimasta da qualche
parte scritta su disco, è necessario cancellare sistematicamente
il contenuto dello swap file. Quello che ancora molti non sanno
è che il comune comando usato per cancellare i file in realtà
non effettua una reale cancellazione fisica e rende possibile (e
anche molto semplice) il loro recupero in tempi successivi. Sarà
quindi indispensabile che lo swap file venga cancellato in modo
sicuro, attraverso le numerose utility specificamente disponibili
a questo scopo. Alcune di queste possono anche essere configurate
in modo che lo swap file venga automaticamente e irrimediabilmente
cancellato alla fine di ogni sessione di lavoro. Sul problema della
cancellazione sicura dei file dal disco fisso, comunque, si tornerà
nel capitolo dedicato ai file system crittati.
La metodologia di attacco di cui ultimamente si è più
parlato in certi ambienti è il cosiddetto attacco TEMPEST,
o attacco di Van Eck. Molte apparecchiature elettroniche, tra cui
i comuni monitor per personal computer, emettono onde elettromagnetiche.
Queste onde possono essere ricevute e decodificate a distanza, con
appositi strumenti, fino a permettere, nel caso di un monitor, la
riproduzione di ciò che appare a video. Il messaggio privato
che si crede di leggere sul proprio monitor nell'intimità
della propria casa può apparire sullo schermo nemico grazie
a speciali apparecchiature poste nella stanza, o nell'appartamento
accanto. Questa tipologia di attacco, a causa della sua natura completamente
passiva (il nemico si limita ad "ascoltare" le onde elettromagnetiche
emesse dal nostro monitor, senza manifestare la sua presenza in
alcun modo) semplicemente non può essere individuata.
Ci si può cautelare preventivamente da un attacco TEMPEST
mediante schermatura del monitor, tenendo però presente che
una schermatura completamente efficace richiederebbe accessori del
costo di svariate decine di milioni di lire. Oppure, molto più
semplicemente, si può provvedere a un adeguato disturbo delle
emissioni del proprio monitor, affiancandogli un ulteriore apparecchio
il cui unico scopo è appunto quello di emettere a sua volta
altre onde elettromagnetiche che confonderanno l'ambiente. Apparecchi
di questo tipo possono essere autocostruiti con poca spesa. In ogni
caso l'emissione di onde elettromagnetiche è circoscritta
a pochi metri, e quindi ogni tentativo di attacco nemico deve necessariamente
posizionarsi molto vicino alla fonte delle emissioni. È solo
il caso di notare, infine, che un attacco di questo tipo mirerebbe
alla lettura dei messaggi così come noi li leggiamo sul nostro
monitor, ma non otterrebbe comunque la passphrase, che non viene
visualizzata a video mentre la si digita.
Infine, un potenziale pericolo proviene dal software di crittografia
stesso. La copia del PGP che si sta utilizzando, ad esempio, potrebbe
esser stata modificata preventivamente dal nemico, al fine di comportarsi
in modo "anomalo": registrando la passphrase da qualche
parte oppure inglobando una backdoor in grado di garantire a determinate
persone l'accesso ai nostri dati. A questo tipo di minacce ci si
riferisce con il nome di "cavalli di Troia". Per evitare
di accogliere un simile "cavallo di Troia" nel proprio
sistema sono sufficienti poche semplici precauzioni: in primo luogo,
il software va sempre prelevato da fonti sicure. Evitare nel modo
più assoluto di servirsi ciecamente di programmi prelevati
da siti sconosciuti o non ufficiali, oppure ricevuti da persone
di cui non si nutre assoluta fiducia sia per quanto riguarda la
loro integrità etica, sia per quanto riguarda le loro competenze
tecniche (qualche sincero amico potrebbe passarci un "cavallo
di Troia" in perfetta buona fede). In secondo luogo, ogni software
di crittografia "serio" dovrebbe essere accompagnato da
una firma digitale dell'autore che ne certifichi la non manomissione.
Questa non è di per sé garanzia di buon funzionamento,
ma la può diventare se quel programma diventa sufficientemente
verificato e conosciuto: le migliaia di prove e verifiche riportate
in rete riguarderanno una versione del software contrassegnata da
una particolare firma; se le firme corrispondono, si può
quantomeno essere certi di stare utilizzando esattamente lo stesso
programma oggetto di queste verifiche, e non una sua versione contraffatta.
PGP: quale versione?
In conclusione di questo capitolo, è il caso di affrontare
brevemente una questione che ha suscitato molte discussioni. Ci
si riferisce alle varie versioni del PGP che si sono succedute soprattutto
a partire dal 1993. Si proverà quindi a fare una rapida rassegna
delle versioni principali, indicandone le differenze degne di nota.
PGP 2.3a - è la versione che ha fatto conoscere il PGP in
tutto il mondo, sviluppata da Phil Zimmermann; alcune persone continuano
a usarla, un po' per pigrizia e scarsa voglia di cambiare software,
un po' per alcune voci che la ritengono l'unica versione assolutamente
sicura. Con questa versione non è possibile leggere i messaggi
generati con alcune delle versioni più recenti e non è
possibile in ogni caso utilizzare chiavi maggiori di 1280 bit. Inoltre,
questa versione utilizza una particolare libreria software (MPILIB)
contenente algoritmi protetti da brevetto, che ha causato a Zimmermann
alcune noie legali da parte della RSA, Inc. (per questo motivo l'utilizzo
del PGP 2.3a è illegale all'interno degli USA, in quanto
il brevetto è valido solo all'interno degli Stati Uniti).
PGP 2.6ui (le lettere "ui" significano "unofficial
international" e indicano una versione compilata all'esterno
degli USA, in genere per sottrarsi ai problemi legali e di brevetti
di quel paese) - è una versione basata sul codice della 2.3a,
ma a differenza di quest'ultima permette di comunicare liberamente
con tutti gli utilizzatori delle versioni più recenti. A
questo proposito ricordiamo che, per sottrarsi alla causa legale
intentata contro di lui dai titolari dei brevetti per l'algoritmo
RSA, Phil Zimmermann ha acconsentito ad accogliere due precise condizioni:
le versioni ufficiali sviluppate negli Stati Uniti successive alla
2.3a utilizzano una nuova libreria software (RSAREF) appositamente
rilasciata dall'RSA per l'uso non commerciale, libera da royalty
(ma dimostratasi altrettanto sicura) e, per incentivare l'utilizzo
di queste nuove versioni, esse vengono rese artificiosamente incompatibili
con i messaggi generati dalla 2.3a. Ribadiamo che queste decisioni
sono state prese per problemi di brevetti e non per pressioni dell'FBI
o di altre agenzie governative. In ogni caso, molti utilizzatori
di tutto il mondo non hanno ritenuto giusto accettare passivamente
queste condizioni, imposte comunque esclusivamente per i cittadini
americani e si è assistito così a un proliferare di
versioni internazionali "non ufficiali" più o meno
affidabili. Il PGP 2.6ui è sicuro quanto la versione 2.3a,
poiché utilizza praticamente lo stesso codice, ma si presenta
all'esterno come una versione 2.6 permettendo appunto di aggirare
lo scoglio legale della compatibilità all'indietro (a questo
problema ci si riferisce in genere come "legal kludge");
per questo stesso motivo il suo utilizzo è probabilmente
illegale all'interno degli USA.
PGP 2.6.2 - sviluppata dal MIT (Massachusetts Institute of Technology),
rappresenta la svolta "legale" del PGP all'interno degli
Stati Uniti; utilizza la libreria RSAREF, di libero impiego ed è
per questo leggermente più lenta delle versioni internazionali
e della 2.3a; a causa del legal kludge i messaggi generati con questa
versione non possono essere letti dagli utilizzatori di PGP 2.3a.
Come tutte le versioni del PGP, la sua esportazione dagli USA è
assolutamente proibita; una volta esportata, comunque, il suo utilizzo
è perfettamente legale in tutto il resto del mondo.
PGP 2.6.3i - basata sul codice della 2.6.2 del MIT e adattata per
uso internazionale, ignora le limitazioni imposte alle versioni
ufficiali americane: utilizza la libreria "proibita" MPILIB
e può comunicare liberamente con le vecchie versioni (il
suo utilizzo è di conseguenza da ritenersi illegale negli
Stati Uniti). È probabilmente la versione della serie 2.6.x
più efficiente e sicura ed è anche la versione consigliata
a chiunque voglia iniziare a usare il PGP.
PGP 2.6.3 - il codice sorgente della 2.6.3i può essere compilato
con un'opzione particolare per inglobare le limitazioni imposte
negli USA (utilizzo della libreria RSAREF e incompatibilità
con le versioni precedenti); l'unica caratteristica degna di nota
di questa versione è quella di essere completamente legale
negli Stati Uniti; non pensiamo che interesserà a molti.
PGP 5.0 - sviluppata dalla PGP, Inc., società fondata da
Zimmermann nell'intento di sfruttare commercialmente la propria
notorietà e tuttavia rapidamente venduta alla McAfee (famosa
per i suoi prodotti antivirus). Costituisce l'inizio di una nuova
serie di versioni del PGP, che però non ha lasciato tutti
entusiasti. Le novità maggiori sono rappresentate da un'interfaccia
grafica estremamente semplice e comoda nelle versioni per Windows
e McIntosh e dall'utilizzo dell'algoritmo a chiave pubblica DiffieHellman,
un sistema libero da copyright alternativo all'RSA. È distribuita
in versione freeware (gratuita per l'uso individuale, seguendo la
"tradizione") o in versione commerciale (destinata alle
aziende e all'uso professionale). Le due versioni sono identiche
quanto a sicurezza, ma la versione free genera esclusivamente chiavi
Diffie-Hellman e non RSA: questa caratteristica, che ha lasciato
perplessi molti utenti, rende necessaria l'importazione (possibile
senza problemi) di chiavi RSA create con versioni precedenti. Il
PGP 5.0 deve quindi essere affiancato da una versione della serie
2.x.x per chi si appresta a utilizzare il PGP per la prima volta
e deve quindi ancora generare la propria prima coppia di chiavi.
Le uniche due alternative sono quella di comprare la versione commerciale
(che molti rifiutano per principio) oppure rassegnarsi a utilizzare
per la propria chiave solo l'algoritmo Diffie-Hellman, che però
è totalmente incompatibile con l'RSA e quindi consente di
comunicare solo con altri utenti di PGP 5.0. Essendo una versione
destinata al mercato USA, adempie al legal kludge e dunque non comunica
con il PGP2.3a.
PGP 5.0i - versione internazionale, praticamente identica alla 5.0.
Per la prima volta la versione internazionale non è stata
ricavata da un'esportazione illegale del software bensì da
un'estenuante scanning di codice stampato su libri di carta esportati
in modo legale. Si è trattato di un modo per mettere ulteriormente
in evidenza l'insensatezza delle leggi USA sull'esportazione di
prodotti crittografici. L'utilità di questa operazione e
il suo indiretto richiamo alla legalità come valore non ci
ha del tutto convinti. Ulteriore motivo di perplessità è
dato dal fatto che, pur essendo una versione "internazionale",
contrariamente alle precedenti non offre la possibilità di
disabilitare il legal kludge e quindi non permette di comunicare
liberamente con tutte le versioni.
PGP 5.5 - a partire dalla release 5.0 il PGP tenta di integrarsi
il più possibile in pacchetti software destinati a essere
impiegati in aziende e ambienti di lavoro; la versione 5.5 prosegue
in questa direzione e non offre particolari motivi di interesse
per l'uso privato. Le varie, successive versioni proliferate negli
ultimi mesi sono probabilmente troppo recenti per essere considerate
sufficientemente sicure. Questo scenario sta comunque cambiando
molto in fretta e le versioni del PGP costituiscono argomenti di
discussione sempre molto accesi. Per una panoramica più precisa
e aggiornata si rimanda alle pagine web di questo libro (http://www.ecn.org/kriptonite)
e alla pagina di aggiornamento di questa versione online
|