ICT & Digital Forensics Consulting

L’hash dei file

Prima di entrare nel merito dell’hash dei file occorre una doverosa premessa. Su internet, e non solo, si trovano tonnellate di informazioni sugli algoritmi di hashing e sul loro utilizzo nell’ambito dell’informatica forense. Tuttavia gli articoli più completi sono in lingua inglese, mentre, cercando tra quelli in lingua italiana, non è facile trovare una trattazione divulgativa, accessibile da chi non voglia impelagarsi troppo in tecnicismi matematici.

Senza alcuna pretesa di esaustività, nel presente articolo vengono pertanto  fornite alcune informazioni basilari, utili a comprendere il ruolo svolto dalle funzioni di hashing nell’informatica forense e l’effettiva utilizzabilità a tale scopo dei più diffusi algoritmi di hashing a dispetto della loro nota vulnerabilità.

L’hash è una funzione matematica che prende in input una sequenza arbitraria di byte e produce in maniera deterministica una stringa di bit di lunghezza prefissata, tale che una modifica accidentale o intenzionale, per quanto piccola, della sequenza iniziale dà luogo ad una modifica sostanziale dell’hash.

Le funzioni hash “buone” (ovvero interessanti ai fini dell’informatico forense) godono fondamentalmente di 4 proprietà principali:

  • è “facile” computare l’hash per una qualunque  sequenza di byte in input;
  • data una specifica stringa di byte in input, ed un algoritmo di hashing, l’hash risultante è costante (le funzioni di hash sono deterministiche);
  • è praticamente impossibile trovare una sequenza di byte cui corrisponda un hash fissato arbitrariamente
  • è praticamente impossibile modificare una sequenza di byte senza modificarne l’hash

L’hashing viene pertanto utilizzato nell’informatica forense perché, grazie alle proprietà di cui sopra, è possibile utilizzarlo ai fini della garanzia della Catena di Custodia. In effetti si dice che l’hash è utilizzato per effettuare la copia forense dei supporti fisici (tipicamente dispositivi di memorizzazione di massa) costituenti le fonti di prova. In cosa consiste questa operazione? Nell’effettuazione della seguente procedura:

  • Copia bitstream del supporto fisico (hard disk, ecc) fonte di prova, ovvero copia brutale della sequenza di bit memorizzati sul supporto, a cominciare dal primo byte e procedendo linearmente sino all’ultimo, senza alcuna operazione di interpretazione dell’eventuale filesystem presente da parte del sistema operativo del dispositivo (PC o duplicatore) che effettua la copia. Da notare che tale copia viene normalmente effettuata con l’ausilio di dispositivi hardware o strumenti software che impediscono la scrittura accidentale sul supporto che si intende copiare;
  • calcolo del codice hash del bitstream sorgente (letto dal supporto fisico) e di quello di destinazione (a valle della sua scrittura) e verifica della loro uguaglianza.

Perchè prendersi la briga di effettuare tale operazione in questo modo? Per poter successivamente essere in grado di  effettuare in qualsiasi momento le seguenti verifiche, rese possibili dalle proprietà sopra richiamate delle funzioni hash:

  • Confronto tra originale e copia forense: se il calcolo del codice hash dei contenuti di un supporto e il calcolo della sua copia forense forniscono come risultato lo stesso codice hash, allora la copia forense è una replica fedele dei contenuti del supporto.
  • Verifica dell’integrità di un supporto: se il calcolo del codice hash effettuato su un supporto fornisce un risultato identico al codice hash calcolato in fase di acquisizione, allora il supporto non è stato alterato dopo l’acquisizione.

Tra i più noti, ed utilizzati, algoritmi di hashing sono da menzionare MD5 e SHA-1. Tuttavia per tali algoritmi è ampiamente noto come siano state trovate delle vulnerabilità. Ad un esame attento tuttavia emerge che questi algoritmi sono ancora utilizzabili in informatica forense. Come si spiega questo?

Per chiarire questo concetto occorre discriminare fra i tipi di attacco cui possono essere soggette (per quanto di interesse della presente trattazione) le funzioni di hash:

  • preimage attack”: tentativo di trovare una sequenza di byte cui corrisponda uno specifico hash (predeterminato)
  • collision attack”: tentativo di trovare due arbitrarie sequenze di byte cui corrisponda uno stesso hash (non predeterminato)

È evidente, da quanto esposto in precedenza, che ai fini dell’informatica forense il collision attack non è influente. Poiché le vulnerabilità trovate ad oggi sia su MD5 che su SHA-1 sono di tipo collision attack, i suddetti algoritmi sono ancora (volendo) utilizzabili in ambito forense, magari avendo l’accortezza (e il tempo) di calcolarli entrambi.

Un’ultima annotazione sull’hashing dei file. Calcolare l’hash di un file significa applicare la funzione di hashing alla sequenza di byte che costituisce il contenuto del file. Pertanto, una qualunque modifica ai dati cambierebbe l’hash del file. Questo vale anche per una modifica ai meta-dati? Ad esempio:

  • Data / Ora di ultimo accesso
  • Data / Ora di ultima modifica
  • Data / Ora di creazione
  • Dimensione del file
  • Autore dell’ultimo salvataggio
  • Posizione nel filesystem

E’ evidente, per quanto detto sopra, che una modifica ai metadati di un file non cambia l’hash del file, a meno che… il file non contenga i propri metadati!

In pratica:

  •  Se apro un file ASCII con notepad:
    • non ne modifico i contenuti
    • lo salvo
    • l’hash non cambia
    • quindi l’hash che non cambia non mi tutela da una modifica al Last Save Time di un file di testo
  •  Se apro un file Excel
    • non ne modifico i contenuti
    • lo  salvo
    • l’hash cambia
    • Perché?

Perché i file Office contengono al proprio interno i propri metadati, tra cui il Last Save Time! Cfr. a questo proposito quanto descritto nel ‘carving delle strutture dati‘, che offre delle informazioni interessanti su come possa essere tentato il recupero di tali metadati anche quando i file che li contenevano sono perduti irrimediabilmente.

Un’ultima annotazione è d’obbligo: trattandosi di una materia in continua evoluzione, quanto scritto nel presente articolo… potrebbe essere smentito da qualche nuova scoperta domani!