Ci risiamo. Tutto lasciava credere che oramai gli animi
fossero pacati, e che nonostante le inquietanti esternazioni di un (oramai ex)
Ministro dell’interno tutti si fossero finalmente convinti che la firma
digitale non fosse taroccabile, quand’ecco una incredibile notizia balzare se
non proprio agli onori della cronaca (eppure Panorama gli ha dedicato un
ben visibile, ancorché inguardabile, trafiletto…) quantomeno agli onori della
Rete.
Sembrava impossibile, eppure al giorno d’oggi c’è ancora
qualcuno che ha il coraggio di sostenere di aver trovato il punto debole della
firma digitale e di essere in grado di falsificarla. Ora, si trattasse di
qualcuno che ha trovato un algoritmo efficiente di fattorizzazione, gli daremmo
il premio Nobel (stiamo cercando tale algoritmo “solo” da duemilacinquecento
anni, e la firma digitale si basa proprio sulla speranza che non esista…); si
trattasse di qualcuno che ha trovato un modo di generare facilmente collisioni
di tipo second preimage nelle funzioni hash tipo SHA-2 gli faremmo
tanto di cappello; ma i trucchi da imbonitore, per carità, evitateceli. E
soprattutto non spacciateli per “debolezze intrinseche” della firma
digitale: sarebbe come dire che i tostapane non funzionano perché se ci metto
dentro una trota non esce una fetta di pane tostato!
Già. In realtà ciò che il pluringegneristico team di
ricerca dell’Università Mediterranea ha scoperto, e persino documentato in un
dottissimo paper disponibile in sola lingua inglese, non è ahimè
una vulnerabilità “della firma digitale” tout court ma, banalmente,
una nota ed annosa limitazione (pardon, “caratteristica”) di Windows. Tant’è
che la proof of concept da essi illustrata a sostegno della propria tesi
non funziona su nessun altro sistema operativo degno di questo nome. Ma di ciò
i ricercatori calabresi si sono “dimenticati” di far menzione…
Vediamo dunque come stanno le cose. Dice il calabro
ricercatore: “se prendo una immagine in formato BMP che dice una cosa, la
violento trasformandola surrettiziamente in un documento HTML che ne dice un’altra,
firmo il tutto, cambio nome al file da BMP in HTML, lo apro, allora perbacco!
vedo il file HTML e non l’immagine BMP”. Grande scoperta: lo sanno tutti che
Windows decide cos’è un file non andandolo a guardare ma fidandosi di quello
che dice il suo nome, o meglio l’estensione di tre lettere che segue il punto.
Così se prendo un file DOC e gli cambio estensione in BMP, e poi ci clicco
sopra due volte, non partirà Word per aprirlo ma Paint, o il programma di
grafica attivo per default; il quale oltretutto si arrabbierà moltissimo per
non essere in grado di aprire il file, dato che il suo contenuto non corrisponde
a quello previsto per un file BMP, e non saprà cosa fare per visualizzarlo.
Naturalmente ciò vale anche per il viceversa, e per qualsiasi altra
trasformazione da un’estensione ad un’altra.
(Notiamo per inciso che tutti i sistemi operativi più seri quali Unix o Mac-OS
non basano la loro decisione su una mera convenzione associata al nome del file,
ma vanno a guardare cosa c’è effettivamente nel file stesso e lo riconoscono
per quello che è il suo reale formato. Windows no, bontà sua).
Ora, è perfettamente possibile pensare di riuscire a
costruire un file che risponda contemporaneamente alle specifiche tecniche di
due formati differenti. Si tratta di una situazione patologica ma sicuramente
realizzabile, magari sfruttando ad arte qualche bug di qualche diffuso programma
di interpretazione di specifici formati (quello che si chiama genericamente parser).
Ad esempio, come hanno fatto i ricercatori calabresi, si può accodare ad una
immagine BMP un pezzo di testo HTML (confidando che il parser delle
immagini non protesti per questi dati extra!) e quindi modificare i primi byte
dell’immagine BMP (sempre confidando che il medesimo parser sia di
bocca buona…) per far sì che l’immagine stessa appaia ad un interprete di
codice HTML come un “commento” da ignorare.
Ora, questo abominio digitale è l’equivalente di quelle
immagini ambivalenti di cui vanno tanto fieri gli psicologi cognitivi: ad
esempio i due famosi profili affacciati che visti in altro modo diventano una
coppa, o la vecchia signora che vista in altro modo diventa una giovane ragazza.
Un bieco trucco, insomma, nel quale il file “taroccato” può essere aperto
sia da un parser per immagini (che “vede” la sola parte BMP ed ignora
quella HTML) che da un parser per HTML (che viceversa “vede” la sola
parte HTML ed ignora quella BMP), con contenuti ovviamente assai diversi tra l’uno
e l’altro caso.
La miopia di Windows fa sì che questa insana ambivalenza
interpretativa possa essere “pilotata” a piacere semplicemente modificando l’estensione
del file: se questa è BMP allora il doppio clic lo farà automaticamente aprire
da un visualizzatore di immagini, mentre se è HTML da un browser. I
risultati saranno ovviamente diversi, perché ciascun programma “vedrà”
solo la parte di file che è in grado di interpretare e, se non è troppo
schizzinoso, non si lamenterà per non riuscire ad interpretare l’altra parte.
Ciò però vuol dire che il file è cambiato da una visualizzazione all’altra?
Ovviamente no: semplicemente, l’automatismo fa sì che se ne veda una parte
oppure un’altra, a scelta. Ma il file è sempre quello, nella sua immutabile
interezza, a prescindere da quale parte si decida di vederne.
E allora dov’è il tanto sbandierato bug della firma
digitale? Ci dice ancora il professore: “se io firmo il file, e poi cambio
estensione al file firmato, visualizzo di fatto un documento non conforme a
quello che mi aspettavo, eppure la firma digitale risulta sempre verificata.”.
Ma che grande scoperta! Il file non è stato modificato, e dunque è
ovvio che la firma digitale risulti verificata. Il fatto che il trucco dell’estensione
continui a funzionare sul file firmato è un problema che riguarda la miopia di
Windows, non la firma digitale in sé: la quale, come noto, riguarda solo ed
esclusivamente il contenuto di un file e non, per amor di Dio, i suoi metadati.
In altre parole: nella formazione della firma digitale non
concorrono cose quali il nome del file, la sua data di creazione, la lunghezza,
l’attributo di sola lettura e via dicendo, com’è giusto che sia. Perché
infatti il nome di un documento dovrebbe essere significativo rispetto al
suo contenuto? Sarebbe come se il nome attribuito ad un faldone nel quale
sono riposti degli atti fosse importante ai fini del contenuto degli atti ivi
riposti, col risultato che l’eventuale modifica del nome del faldone dovrebbe
inficiare la validità (e la firma) degli atti stessi!
Insomma, il buon professore (che ha tuttavia ottenuto ciò
che probabilmente voleva, ossia cinque minuti di notorietà…) ha spacciato per
problema della firma digitale quello che è in realtà un problema di Windows.
Citando un noto modo di dire, ha scambiato per la Luna quella che in realtà era
semplicemente la sua immagine riflessa sul fondo del pozzo. Il difetto che ha
scoperto infatti non riguarda la firma digitale e non ne inficia la validità;
riguarda semmai il modo approssimativo e cialtrone con cui quello che è
purtroppo il sistema operativo più diffuso al mondo tratta i propri file,
ingenerando ambiguità e problemi che possono anche essere sfruttati
truffaldinamente in tanti modi, con o senza la gentile partecipazione della
firma digitale.
Con l’occasione notiamo che i nostri prodi ricercatori,
senza dover necessariamente stuprare un’immagine BMP, potevano produrre un
effetto similare in vari modi alternativi. Prendiamo ad esempio il formato ZIP,
comunemente usato per archiviare tanti file comprimendoli in uno solo: oramai
molte applicazioni di uso comune producono i loro file in questo formato
standard, ma hanno cura di dotarli di estensioni differenti per fare in modo che
non vengano aperti per errore da altre applicazioni. Il formato ODT per i
documenti OpenOffice ed il formato JAR usato per distribuire classi Java e
metadati associati sono due esempi comuni di tale diffusa pratica. Se dunque
fate doppio clic su un file ODT esso verrà aperto da OpenOffice come se fosse
un documento (ed in effetti lo è), mentre se gli cambiate nome in ZIP e poi gli
fate doppio clic verrà aperto da WinZip come se fosse un archivio (ed in
effetti è anche questo!). Anche in questo caso la semantica dell’azione
innescata dal doppio clic viene decisa dall’estensione associata al nome del
file, e ciascuna applicazione lanciata lo vedrà in modo diverso: ma la sostanza
del file rimane sempre la medesima, ossia quella di un insieme di byte unico ed
immutabile. Anche in questo caso, dunque, funzionerebbe il trucco del professore
calabrese: ma cosa c’entra la firma digitale?
Per concludere: non scherziamo con la firma digitale e
soprattutto non scomodiamola invano. Già ha avuto tanti problemi nel corso
degli anni, ed ha dovuto subire denigrazioni e sconfessioni da parte di
personaggi ed istituzioni a dir poco insospettabili. Se c’è tuttavia una cosa
che funziona bene sono i suoi meccanismi tecnici, e quelli non è possibile
metterli in discussione con trucchi da prestigiatore. Una cosa di cui
assolutamente non abbiamo bisogno è quella di ingenerare nella gente
comune ulteriore confusione e sospetto nei riguardi delle tecnologie digitali.
Se vogliamo alzare il livello di alfabetizzazione e
pretendere che tutti inizino a partecipare alla vita della Società digitale non
possiamo continuare impunemente a fare disinformazione terroristica sulla
valenza delle tecnologie abilitanti su cui essa si fonda. Quando si scoprirà l’algoritmo
di fattorizzazione veloce o quello di collisione degli hash ci
preoccuperemo, ma sino ad allora, per carità, non alimentiamo falsi spettri con
minacce inesistenti.
|