La firma è sicura, il documento no
di Andrea Gelpi* - 19.09.02
Recentemente sulla mailing list ml@sikurezza.org (che raccoglie gli esperti
di sicurezza italiani) è stata segnalata da Stefano
Zanero una vulnerabilità in un software di firma digitale di un ente
certificatore italiano.
Il problema evidenziato rivela come sia possibile, in certi casi, creare un
documento, apporvi la firma digitale, successivamente visualizzare il documento
stesso modificato e il processo di verifica della firma non si accorga della
modifica. Impossibile direte voi. Eppure è esattamente ciò che è stato
scoperto.
Tale comportamento capita se si firma un documento scritto in MS Word,
contenente campi dinamici. Nei documenti Word è possibile inserire campi
"dinamici", cioè campi che possono essere configurati per aggiornarsi
automaticamente all'apertura del documento e il cui valore è impostato in
apposite variabili all'interno di Word o del sistema operativo del computer in
uso. Esempi di campi sono la data, l'ora, il nome del documento, l'autore.
Succede che se si usano alcuni di questi campi in un documento Word, il
destinatario verificherà correttamente la firma, ma il contenuto dei campi
potrà cambiare in funzione delle variabili d'ambiente presenti sul suo
computer.
Dalle prove che ho fatto, utilizzando il software DiKe di
Infocamere, sembra di capire che il programma di firma calcola correttamente
l'hash su tutto il documento (infatti se si prova a modificare il contenuto dei
campi su un file firmato, la firma non viene più verificata come valida). E' il
software di verifica che nel momento di visualizzare il documento ricalcola il
valore dei campi e li mostra modificati.
Ma c'è di più. Il software in questione apre anche Word con il documento in
sola lettura e qui è possibile che il documento mostri valori nei campi ancora
diversi. Quindi ci si può trovare con ben tre documenti differenti: il mittente
vede certe informazioni (fig. 1), mentre il destinatario ne
vede altre, a seconda che guardi il documento all'interno del software di
verifica della firma (fig. 2) o all'interno di Word (fig. 3). Inoltre tali informazioni modificate possono cambiare
nel tempo. E' infatti sufficiente cambiare le impostazioni in Word per avere gli
stessi campi modificati, la prossima volta che si apre il documento. Sia ben
chiaro, non è il meccanismo di calcolo della firma che è in discussione, qui
il problema è nella implementazione che è stata fatta.
Il certificatore, chiamato in causa, ha dichiarato di essere al corrente del
problema. Infatti inizialmente non aveva inserito i documenti in formato Word
fra quelli firmabili, ma poi su richiesta degli utenti ha fornito una modifica
in questo senso. Inoltre ha fatto notare che i documenti Word non possono
essere usati per firmare documenti a "valore legale" e quindi il
problema non è molto grave (vedi deliberazione
AIPA 51/2000 e l'articolo di Manlio
Cammarata).
Ma allora quali sono i formati di documenti che si possono firmare con
tranquillità? Non è forse il caso che venga detto con chiarezza? Ci saranno
problemi simili nei software di altri certificatori?
Chiunque abbia usato per un po' Word o Excel sa benissimo che se vuole rendere
produttivo il proprio lavoro deve affidarsi a modelli preparati prima in cui
dovrà poi inserire solo alcuni valori. Per fare ciò preparerà dei documenti
utilizzando campi. Se poi deciderà di usare la firma digitale su questi
documenti rischia di incappare nel problema descritto sopra.
Io credo che il problema sia grave per alcuni motivi.
Primo fra tutti, quello della fiducia. La firma digitale sta riscontrando molte
difficoltà non solo dal punto di vista tecnico, ma proprio dal punto di vista
della fiducia nella nuova tecnologia. Un fatto come questo, secondo me, la mina
pesantemente.
Credo poi questo sia un esempio eclatante di come affidandosi a formati
"chiusi" e non "aperti" si rischi di andare incontro a
problemi che possono divenire incredibilmente complicati. Provate ad immaginare
di avere in mano due copie di uno stesso documento in cui c'è evidentemente
un'informazione diversa (ad esempio una data), ma la firma risulta valida su
entrambi: quale dei due è quello effettivamente firmato? Quale data devo
considerare valida?
Credo sia superfluo ricordare che la firma digitale è qualche cosa di più
robusto della firma autografa, dove un perito calligrafo sarà in grado di
trovare le differenze in una firma copiata. Una firma digitale, se verificata
come valida, è la firma del mittente. Punto e basta, non ci sono differenze da
cercare.
Altro motivo di gravità sta nel fatto che il problema si verifica su un formato
che è di fatto uno standard mondiale. Alzi la mano chi non è in grado di
leggere sul proprio PC un documento in formato Word! Credo di non essere lontano
dal vero se affermo che qualsiasi professionista o azienda che stia pensando di
dotarsi di un sistema di firma digitale abbia in mente di firmare con esso i
suoi documenti Office, non solo Word quindi, ma anche fogli elettronici in
Excel.
Trovo grave infine che un ente certificatore a cui il problema è noto, non
si sia preoccupato di mettere una nota, almeno sui manuali del suo software o
sul sito internet, ma si sia limitato a tacere il problema. Come molti ormai
sapranno dopo i terribili fatti dell'11 settembre dello scorso anno, per evitare
di fornire informazioni ai terroristi, è stato chiesto (e in America pure
vietato per legge) di non divulgare le vulnerabilità, ma di comunicarle solo
alla ditta che produce il software in questione. Credo che la vulnerabilità
riscontrata sia un esempio di come tale modo di operare faccia più danni di
quelli che potrebbe fare la conoscenza di un problema. Sono fermamente convinto
che solo sapendo quali sono i problemi e i limiti di ciascun software se ne
possano fare implementazioni corrette e che lasciano dormire tranquilli.
In conclusione credo che il problema sia grave e preoccupante in termini di
principio, ma ritengo importante che sia venuto alla luce, perché spero possa
contribuire a far maturare la materia, a dare consapevolezza a tutti gli
operatori del settore, ciascuno secondo le proprie responsabilità.
|