Philip Zimmermann

Picture of Phil

Attenzione alla pozione miracolosa

Parte dell'originale Guida Utente del PGP del 1991 (aggiornata nel 1997)

Quando si esamina un pacchetto software di crittografia, una domanda viene sempre in mente: perché dovremmo confidare in questo prodotto? Anche se hai esaminato in prima persona il codice sorgente, non tutti hanno l'esperienza crittografica tale da giudicarne la sicurezza. E nonostante tu possa essere un programmatore esperto, impercettibili debolezze negli algoritmi potrebbero eluderti.

Quando ero nel college, nei primi anni settanta, ho concepito ciò che ho considerato essere un brillante schema di codifica. Un semplice flusso di numeri pseudocasuali era aggiunto al flusso di testo per creare un testo cifrato. In apparenza, ciò sembrava bloccare qualsiasi analisi di frequenza del testo cifrato, e sarebbe stato impenetrabile anche alle più intraprendenti agenzie intelligence del governo. Mi sentii così soddisfatto del mio risultato.

Anni più tardi, ho scoperto lo stesso schema in diversi testi introduttivi di crittografia e in alcune guide. Quanto fu bello! Altri crittografi avevano pensato allo stesso schema. Sfortunatamente, esso era presentato come un semplice compito su come utilizzare delle semplici tecniche criptoanalitiche da decodificare banalmente. Così tanto per il mio brillante schema.

Da questa umiliante esperienza ho imparato quanto sia facile cadere nella falsa sensazione di sicurezza quando si concepisce un algoritmo di codifica. Gran parte delle persone non realizza quanto sia difficile creare un algoritmo di codifica in grado di resistere ad un prolungato e determinato attacco da un nemico ingegnoso. Molti ingegneri software di moda hanno comunque sviluppato semplici schemi di codifica (spesso anche lo stesso schema di codifica) e alcuni di essi li hanno inclusi in pacchetti software commerciali di crittografia e li hanno venduti con buoni guadagni a migliaia di utenti ignari.

Ciò è come vendere cinture di sicurezza che sembrano buone ma che si strappano al più piccolo crash test. Dipendere da loro sarebbe forse peggio che non utilizzarle per niente. Nessuno sospetta che siano fragili fino al vero incidente. Essere dipendente di un debole software di crittografia potrebbe indurti, in modo inconsapevole, a mettere in pericolo dati riservati quando non lo avresti mai fatto se non avessi avuto alcun software di crittografia. Forse non avresti mai scoperto se i tuoi dati siano stati mai compromessi.

Qualche volta i pacchetti commerciali fanno utilizzo della codifica federale dei dati (Federal Data Encryption Standard, DES), un buon algoritmo (ad eccezione per la chiave troppo piccola) raccomandato dal governo per l'uso commerciale (ma non per le informazioni classificate, strano abbastanza-Hmmm). Esistono diversi "modi di operazione" che DES può utilizzare, alcuni di essi migliori degli altri. Il governo si raccomanda in particolare di non usare il più debole e semplice modo per i messaggi, l'Electronic Codebook mode (ECB). Ma raccomanda il più forte e complesso, il Cipher Feedback (CFB) e il Cipher Block Chaining (CBC).

Sfortunatamente, gran parte dei pacchetti commerciali di crittografia che ho osservato (nei primi anni novanta quando sviluppai PGP) utilizzano il modo ECB. Quando parlai con gli autori di alcuni di questi programmi, mi dissero che non avevano mai sentito parlare dei modi CBC e CFB e che non sapevano nulla della debolezza del modo ECB. La prova che essi non hanno ancora imparato abbastanza sulla crittografia per conoscere questi concetti elementari è di non essersene riassicurati. E qualche volta essi gestiscono le proprie chiavi DES in modi insicuri ed inappropriati. Ancora, questi stessi software spesso includono un secondo algoritmo di codifica più veloce che può essere utilizzato al posto di quello più lento del DES. L'autore del pacchetto pensa che il suo codice veloce sia sicuro come il DES ma dopo avergli fatto qualche domanda ho compreso che era soltanto una variante del mio brillante schema di codifica del college. O forse non mi avrebbe rivelato come il suo schema funzioni, ma assicurarmi che è uno schema brillante e dovrei fidarmi. Sono sicuro che crede che questo algoritmo è brillante, ma come posso saperlo senza vederlo?

In verità, devo sottolineare che in gran parte dei casi questi terribili prodotti deboli non provengono da compagnie che sono specializzate nella tecnologia crittografica.

Anche i pachetti software molti buoni, che utilizzano DES nei modi di operazione corretti, continuano ad avere problemi. Lo standard DES utilizza una chiave a 56-bit, che è troppo piccola per gli standard attuali, e che può essere facilmente bucata tramite esaustive ricerche di chiavi su macchine particolari ad alta velocità. Il DES ha raggiunto la fine della sua vita utile, e così tutti i software che si basano su di esso.

Esiste una compagnia chiamata AccessData (http://www.accessdata.com/) che vende pacchetti a basso costo che bucano gli schemi di codifica utilizzati da WordPerfect, Lotus 1-2-3, Ms Excel, Symphony, Quattro Pro, Paradox, MS Word, e PKZIP. Non soltanto indovina le parole segrete ma produce anche una analisi crittografica. Qualcuno lo acquista quando dimentica la parola segreta per i propri files. Le agenzie della giustizia lo acquistano anche, in modo tale che possono leggere i files su cui mettono le mani. Ho parlato a Eric Thomson, l'autore, e mi ha detto che il suo programma impiega meno di un secondo per bucarle, ma pone il programma in cicli di ritardo così da rallentarlo e far sembrare al cliente che non sia così facile.

Nell'arena della telefonia sicura, le tue scelte sembrano squallide. Il concorrente principale è lo STU-III (Secure Telephone Unit), costruito dalla Motorola e dalla AT&T e costa dai 2000$ ai 3000$, ed è utilizzato dal governo per applicazioni segrete. Utilizza la crittografia avanzata, ma richiede una sorta di patente speciale concessa sempre dal governo, per essere essere acquistato. Una versione commerciale dello STU-III più moderata è disponibile dalla NSA, e vi è anche una versione per l'esportazione ma è ancora più indebolita. Poi ci sta l'AT&T Surity 3600 a 1200$, che utilizza il famoso Clipper chip del governo per la codifica, con le chiave depositate nel database del governo per facilitare le intercettazione telefoniche. Poi, naturalmente, ci sono i disturbatori analogici della voce che puoi acquistare dai cataloghi dei prodotti "voglio essere spia", che sono giocattoli inutili dal punto di vista della crittografia, ma che sono venduti come "sicuri" prodotti di comunicazione ai clienti che non ne sanno molto.

In qualche modo, la crittografia è come un medicinale. La sua integrità può essere assolutamente cruciale. Una cattiva penicillina sembra una buona peniccillina. Puoi stabilire se il tuo programma di trattamento testi si sbaglia, ma come fai a stabilire se un pacchetto software di crittografia è debole? Il testo codificato prodotto da un algoritmo di codificazione debole sembra come quello prodotto da un algoritmo di codifica avanzato. C'è veramente una soluzione miracolosa in questo. E ci sono molte cure ciarlatane. Non dissimile dal venditore ciarlatano di medicine di un tempo, questi implentatori software generalmente non sanno che il loro prodotto è una pozione miracolosa. Essi potrebbero essere buoni ingegneri, ma in genere potrebbero non aver letto nulla della letteratura accademica della crittografia. Tuttavia, essi credono che possono scrivere un buon software per la crittografia. E perché no? Dopo tutto, sembra intuitivamente facile farlo. E il loro software sembra funzionare BENE.

Chiunque pensi che abbiano inventato una schema di codificazione perfetto o è un genio o è una persona priva di esperienza. Sfortunatamente, qualche volta devo avere a che fare con dei "saranno crittografi" che vogliono apportare "miglioramenti" al PGP aggiungendo propri algoritmi di codifica.

Mi ricordo una conversazione con Brian Snow nel 1991, un importante dirigente della NSA. Mi ha detto che non crederebbe mai ad un algoritmo di codifica disegnato da qualcuno che non si è "fatto le ossa" prima spendendo molto tempo a bucare i codici. Questo significa molto. Ho osservato che nel mondo commerciale quasi nessuno rientra in questo principio. "Sì", mi disse con sorriso rassicurante, "e questo rende il nostro lavoro molto più facile alla NSA". Un pensiero scoraggiante. Non l'ho corretto.

Anche il governo ha fatto il venditore ambulante della pozione miracolosa. Dopo la Seconda Guerra Mondiale, gli Stati Uniti vendettero le macchine Enigma di cifratura tedesche ai governi del Terzo Mondo. Ma non gli dissero che gli Alleati avevano bucato il codice Enigma durante la guerra, un fatto che rimase segreto per molti anni. Anche oggi molti sistemi UNIX nel mondo utilizzano il cifratore Enigma per codificare i files, in parte perché il governo ha imposto degli ostacoli legali nell'utilizzo di algoritmi migliori. Essi hanno anche tentato di prevenire la pubblicazione iniziale dell'algoritmo RSA nel 1977. E per molti anni hanno represso tutti gli sforzi commerciali di sviluppare telefoni securi per il pubblico.

Il compito principale della Agenzia Nazionale della Sicurezza (NSA, National Security Agency) è di raccogliere intelligence, principalmente registrando in segreto le comunicazioni private delle persone (leggi James Bamford's book, The Puzzle Palace). La NSA ha accumulato delle considerevoli capacità e risorse per bucare i codici. Quando le persone non possono avere una buona crittografia per proteggersi, ciò rende il lavoro della NSA molto più facile. La NSA ha anche la responsabilità di approvare e raccomandare gli algoritmi di codificazione. Alcune critiche accusano che vi è un conflitto d'interessi come se si accusa la volpe di controllare la casa della gallina. Negli anni ottanta, la NSA ha incitato all'utilizzo di un convenzionale algoritmo di codifica che hanno creato (il COMSEC, Programma di sostegno), e non diranno a nessuno come funziona perché è segreto. Essi pretendono che gli altri ne abbiano fiducia e lo utilizzino. Ma ogni esperto di crittografia può dirti che un buon algoritmo di codifica non deve essere segreto per essere considerato sicuro. Soltanto le chiavi necessitano di protezione. Come fa qualcuno ha sapere che l'algoritmo NSA è veramente sicuro? Non è difficile per la NSA creare un algoritmo di codifica che solo essi possono bucare, se nessuno può vedere l'algoritmo.

Al momento della pubblicazione iniziale del PGP, c'erano tre fattori principali che ponevano a rischio la qualità commerciale del software crittografico negli Stati Uniti.

ß Il primo fattore è la generale mancanza di competenza da parte dei creatori di software crittografico (sebbene ciò è cambiato dopo la pubblicazione del PGP). Ogni ingegnere software si crede un crittografo, e ciò ha contribuito alla proliferazione di software crittografico di bassa qualità.

ß Il secondo fattore è che la NSA ha deliberatamente e sistematicamente eliminato tutta la tecnologia di codificazione commerciale, attraverso l'intimidazione legale e la pressione economica. Parte di questa pressione è condotta per sostenere i controlli stringenti dell'esportazione per il software di codificazione e ciò dal punto di vista economico del mercato del software, ha avuto l'effetto di rovinare il software crittografico domestico.

ß La terza ragione del perché non c'erano prodotti di codifica avanzati si lega alla creazione di un singolo brevetto "cartello" per tutti i brevetti software di algoritmi di codificazione della chiave pubblica, in modo tale da raggiungere un punto di chiusura, per impedire la diffusione di questa tecnologia (sebbene il cartello del brevetto crittografico non esista più dall'autunno del 1995).

L'effetto netto di tutto questo è che prima che PGP fosse pubblicato, non esisteva alcun risultato di alto livello di software crittografico disponibile negli Stati Uniti.

Non sono più certo riguardo la sicurezza di PGP come lo ero una volta riguardo il mio brillante schema di codificazione del college. Se lo fossi, sarebbe un brutto segno. Ma non penso che PGP contenga qualche abbagliante debolezza (sebbene sono molto sicuro che contenga degli errori). Ho selezionato i migliori algoritmi dalla letteratura della accademia civile della crittografia. Questi algoritmi sono stati individualmente esaminati in modo imparziale. Conosco molti bravi crittografi nel mondo, e ho discusso con loro di tutti gli algoritmi di crittografia e dei protocolli utilizzati in PGP. E' stato frutto di molta ricerca e ci sono voluti anni per programmarlo. E non lavoro per la NSA. Ma non devi credere alla mia parola sull'integrità crittografica del PGP, perché il codice sorgente è disponibile per facilitare la trasparenza.

Un altro punto nel mio affidamento alla qualità crittografica nel PGP: fina da quando l'ho sviluppato inizialmente e rilasciato gratuitamente nel 1991, ho speso tre anni sotto indagine criminale da parte della Dogana statunitense per la diffusione del PGP oltremare, con il rischio di una persecuzione criminale e anni di prigione (comunque, non hai visto il governo arrabbiato per un altro software di crittografia - è PGP che li ha fatti veramente arrabbiare. Che cosa ti dice questo sulla forza del PGP?). Ho guadagnato la mia reputazione sull'integrità crittografica dei miei prodotti. Non tradirò il mio affidamento al nostro diritto alla privacy, per il quale ho rischiato la mia libertà. Non permetto ad un prodotto con il mio nome che contenga alcuna back door.

Philip R. Zimmermann
Boulder, Colorado
Giugno 1991 (aggiornato al 1997)