Attenzione all'"olio di serpente"

(olio di serpente, "snake oil" significa "rimedio ciarlatanesco" in inglese informale)

Riflessioni di P.Zimmermann  

Quando si esamina un programma di crittografia, rimane sempre la domanda: perchè dovrei fidarmi di questo prodotto? Anche se esaminate direttamente il codice sorgente, non tutti abbiamo un'esperienza sufficiente in crittografia per poter giudicare il livello di sicurezza. Anche se siete un crittografo esperto, possono ancora sfuggirvi delle piccole debolezze degli algoritmi.

Quando ero al college all'inizio degli anni 70, sviluppai quello che credevo fosse uno schema brillante di crittografia. Una serie di numeri pseudo casuali veniva aggiunta al testo in chiaro per creare il testo cifrato. Questo avrebbe presumibilmente ingannato qualunque sistema di analisi in frequenza del testo cifrato, e sarebbe stato inviolabile anche dalle agenzie di Informazione Governative più ricche di risorse. Ero così compiaciuto della mia realizzazione. Così stupidamente sicuro.

Anni dopo, scoprii lo stesso schema in diversi testi introduttivi alla crittografia. Che bello. Altri crittografi avevano pensato allo stesso schema. Sfortunatamente lo schema era presentato come un semplice esercizio su come utilizzare le tecniche di analisi crittografica elementare per violare in modo triviale il mio brillante schema.

Da questa esperienza mortificante imparai quanto fosse facile cadere in un falso senso di sicurezza fidandosi di un algoritmo di crittografia. La maggior parte delle persone non capisce quanto sia difficile sviluppare un algoritmo che possa affrontare un attacco prolungato e determinato da parte di un avversario ricco di risorse. Molti sviluppatori software di grido hanno realizzato schemi di crittografia ingenui come il mio (spesso proprio lo stesso), ed alcuni di loro lo hanno inserito in pacchetti software commerciali di crittografia e venduto per denaro a migliaia di utilizzatori fiduciosi.

È come vendere cinture di sicurezza per automobile che sembrano ottime ma si strappano in occasione del più piccolo urto. Dipendere da loro può essere peggio che non indossare del tutto le cinture. Nessuno sospetta che siano inaffidabili fino al primo incidente. Dipendere da un software crittografico debole può portarvi a mettere a rischio senza saperlo informazioni importanti. Non l'avreste fatto se non aveste avuto del tutto un software crittografico. Addirittura potreste non scoprire mai che i vostri dati sono stati compromessi.

A volte i pacchetti commerciali usano il DES (Federal Data Encription Standard), un algoritmo commerciale abbastanza buono raccomandato dal Governo per l'uso commerciale (ma non per le informazioni classificate, stranamente-- hmmm). Ci sono diversi "modi operativi" nel DES, alcuni migliori di altri. Il Governo raccomanda specificamente di non usare il modo più semplice e debole, l'ECB (Electronic Codebook). Raccomanda invece di usare i più robusti e complessi CFB (Cipher Feedback) e CBC (Cipher Block Chaining).

Sfortunatamente la maggior parte dei pacchetti commerciali di crittografia che ho visto usa il modo ECB. Parlando con gli autori di queste implementazioni, ho saputo che non avevano mai sentito nominare CBC o CFB, e non sapevano niente della debolezza dell'ECB. Il fatto che essi non avessero imparato abbastanza sulla crittografia per conoscere questi concetti elementari non è rassicurante. A volte gestiscono anche le chiavi in maniera impropria o insicura. In più questi pacchetti contengono spesso un secondo algoritmo più veloce da utilizzare al posto del più lento DES. L'autore del pacchetto spesso crede che il suo algoritmo sia sicuro come il DES, ma dopo poche domande, di solito scopro che è solo una variazione del mio brillante schema dei tempi del college. A volte non mi rivelano neppure come il loro algoritmo funziona, ma mi assicurano che è uno schema brillante e che devo fidarmi. Io sono sicuro che loro credano che l'algoritmo sia brillante, ma come posso saperlo senza vederlo?

In tutta franchezza devo sottolineare che nella maggior parte dei casi questi prodotti terribilmente deboli non sono venduti da società specializzate in tecnologia crittografica.

Perfino i pacchetti di software veramente buoni, che usano il DES nel modo corretto, hanno ancora dei problemi. Il DES standard utilizza una chiave di 56 bits, troppo pochi per gli standard odierni, che può essere violata facilmente con metodi di ricerca intensiva e macchine ad alta velocità. Il DES ha raggiunto la fine della sua vita utile, e così è per ogni software basato su di esso.

Una ditta di nome AccessData (lavorano assieme alla Logicube, quelli che fabbricano il Talon! ma che bella compagnia !)  (87 East 600 South, Orem, Utah 84058, tel. +1-800-658-5199) vende per 185$ un pacchetto che viola gli schemi di crittografia usati da WordPerfect, Lotus 1- 2-3, MS Excel, Symphony, Quattro Pro, Paradox e MS Word 2. (posso fornirvi anch'io software analogo) Esso non si limita ad indovinare la parola chiave, ma esegue una vera analisi crittografica.
Alcune persone lo comprano dopo aver dimenticato la parola chiave per accedere ai propri files. Le forze di Polizia comprano lo stesso pacchetto per poter leggere i files che sequestrano. Ho parlato con Eric Thompson, l'autore, e mi ha detto che il programma impiega una frazione di secondo per rompere il codice, ma che lui ha inserito dei ritardi per non farlo sembrare troppo facile. Mi ha anche detto che la parola chiave opzionale di PKZIP (anche winzip, anzi é peggio!) può spesso essere violata facilmente, e che le forze di Polizia hanno usufruito sovente di questo servizio fornito da un altro venditore.

In un certo senso, la crittografia è come un farmaco. La sua integrità è fondamentale. La penicillina guasta ha lo stesso aspetto di quella buona. Voi potete giudicare se il vostro programma di contabilità sbaglia, ma come potete dire se il vostro programma di crittografia è debole? Il testo cifrato prodotto da un algoritmo debole ha lo stesso aspetto di quello prodotto da un algoritmo forte. C'è un mucchio di olio di serpente in vendita. Un mucchio di cure "miracolose". Solo che, a differenza dei venditori di medicine dei vecchi tempi, gli sviluppatori di software normalmente non sanno che ciò che usano è olio di serpente. Possono essere degli ottimi tecnici, ma di solito non hanno letto niente della letteratura accademica sulla crittografia. Però pensano di poter scrivere del buon software crittografico. E in fondo, perchè no? Dopo tutto sembra intuitivamente facile, ed il loro software sembra funzionare bene.

Chiunque pensi di aver sviluppato uno schema di cifratura inattaccabile, può essere un genio incredibilmente raro, oppure è ingenuo ed inesperto. Sfortunatamente devo trattare a volte con degli aspiranti crittografi che vogliono apportare "miglioramenti" a PGP aggiungendo degli algoritmi di cifratura sviluppati da loro.

Ricordo una conversazione con Brian Snow, un crittografo di alto livello della NSA. Mi disse che non si sarebbe mai fidato di un algoritmo di cifratura sviluppato da qualcuno che non si fosse fatto le ossa spendendo un mucchio di tempo a violare codici. Questo ha molto senso. Io osservai che praticamente nessuno sviluppatore commerciale poteva qualificarsi secondo questo criterio. "Esatto" mi rispose sorridendo, "e questo rende il nostro lavoro alla NSA molto più semplice". Un pensiero raggelante. Neanche io sono qualificato.

Anche il Governo ha distribuito olio di serpente. Dopo la seconda guerra mondiale, gli Stati Uniti hanno venduto le macchine cifratrici tedesche Enigma ad alcuni governi del terzo mondo. Non è stato però detto loro che gli Alleati avevano già violato il codice Enigma durante la guerra, fatto che è rimasto classificato per molti anni. Ancora oggi molti sistemi Unix in tutto il mondo usano la cifratura Enigma per i files, in parte anche perchè il Governo ha creato ostacoli legali all'uso di algoritmi migliori. Hanno anche tentato di impedire la prima pubblicazione nel 1972 dell'algoritmo RSA. Inoltre hanno di fatto spento sul nascere qualunque sforzo commerciale volto a sviluppare telefoni effettivamente sicuri per l'uso generale.

Il lavoro principale della NSA consiste nella raccolta di informazioni (si veda il libro di James Bamford, "The Puzzle Palace"). La NSA ha accumulato capacità e risorse per violare codici. Se le persone non possono accedere a sistemi crittografici di qualità per proteggere sè stesse, il lavoro della NSA è molto più facile. La NSA è anche responsabile per la raccomandazione e l'approvazione degli algoritmi di cifratura. Qualche critico sostiene che questo sia un conflitto di interessi, come mettere la volpe a guardia del pollaio. La NSA ha cercato di promuovere un algoritmo di crittografia convenzionale di suo sviluppo, senza dire a nessuno come funziona perchè è classificato. Essi vogliono che altri si fidino di esso e lo usino. Qualunque crittografo però, potrà dirvi che un algoritmo valido non ha bisogno di essere classificato per rimanere sicuro. Solo la chiave necessita di protezione. Come si fa a sapere se l'algoritmo della NSA è veramente sicuro? Non è così difficile per la NSA progettare un algoritmo di cifratura violabile solo da loro se nessuno può vederlo. Che stiano deliberatamente vendendo olio di serpente?

Sono tre i fattori principali che hanno minato la qualità del software crittografico prodotto negli Stati Uniti. Il primo è la mancanza di competenza virtualmente universale degli sviluppatori del software crittografico commerciale (sebbene questo abbia iniziato a cambiare dopo la pubblicazione di PGP). Ogni tecnico software pensa di essere un crittografo, e questo ha portato alla proliferazione di software molto scadente. Il secondo fattore è la soppressione deliberata e sistematica da parte dell'NSA di tutte le tecnologie crittografiche commerciali di valore, per mezzo dell'intimidazione legale e della pressione economica. Parte di questa pressione è esercitata applicando stringenti controlli alle esportazioni del software crittografico, il che, nell'economia di mercato, ha l'effetto diretto di sopprimere anche il mercato interno. Il terzo metodo di soppressione deriva dal concedere i diritti di utilizzo di tutti gli algoritmi di crittografia a chiave pubblica ad una sola azienda, dovendo così controllare un solo punto critico per frenare la diffusione di questa tecnologia. L'effetto di tutto questo è che prima della pubblicazione di PGP non c'era praticamente nessun software di crittografia di alta sicurezza per uso generale disponibile negli Stati Uniti.

Io non sono sicuro della sicurezza di PGP come lo ero del mio brillante software di crittografia del college. Se lo fossi sarebbe un cattivo segno. Sono però abbastanza sicuro che PGP non contenga vistose debolezze (sebbene possa contenere errori). L'algoritmo di crittografia è stato sviluppato da persone di alto livello nel mondo accademico della crittografia civile, ed è stato sottoposto a controlli intensivi da esperti loro pari. Il codice sorgente è disponibile per facilitare questo tipo di verifica e per aiutare a dissolvere le paure di alcuni utenti. È stato sottoposto ad indagini ragionevolmente accurate, ed ha richiesto anni di sviluppo. Inoltre io non lavoro per la NSA. Spero che per fidarvi di PGP non vi sia richiesto un "atto di fede" troppo impegnativo.