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.
|