I saggi su InterLex

La luna, il pozzo, la bufala

InterLex n° 376, 26 giugno 2008

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.

Saggio pubblicato su InterLex n° 376 del 26 giugno 2008 (Anno XII)
Copyright © 2008, Corrado Giustozzi. Tutti i diritti riservati.

Ultima modifica: 31 maggio 2009
Visitatori dal 6 maggio 2003: 157,860

Torna alla Pagina dei saggi pubblicati su InterLex
Vai alla Pagina dei Commenti

Copyright © 1995-2012 Corrado Giustozzi