Ogni volta che si parla di prove digitali compare prima o poi una lunga stringa di lettere e numeri: l'impronta hash. È lo strumento con cui si dimostra che un file, un'immagine di disco o un archivio non sono cambiati di un solo bit dal momento dell'acquisizione. Capire come funziona aiuta a usarla bene e a spiegarla a chi deve valutare la prova.
Che cos'è una funzione hash
Una funzione hash crittografica prende in ingresso un insieme di dati di qualsiasi dimensione, da una parola a un disco da diversi terabyte, e restituisce un valore di lunghezza fissa. Per SHA-256, per esempio, il risultato è sempre di 256 bit, rappresentati come 64 caratteri esadecimali.
Le proprietà che la rendono utile sono tre:
- determinismo: gli stessi dati producono sempre lo stesso hash, su qualsiasi computer e con qualsiasi programma che implementi correttamente l'algoritmo;
- effetto valanga: una modifica minima, anche un solo bit, produce un hash completamente diverso;
- resistenza alle collisioni: deve essere praticamente impossibile trovare due insiemi di dati diversi con lo stesso hash.
Grazie a queste proprietà l'hash funziona come un'impronta digitale: non permette di ricostruire i dati, ma permette di riconoscerli con certezza.
Un esempio concreto
Supponi di acquisire una chiavetta USB e di calcolare il suo SHA-256. Annoti il valore nel verbale. Sei mesi dopo, un consulente della controparte riceve una copia dell'immagine e ne ricalcola l'hash con un programma diverso. Se ottiene lo stesso valore, entrambi state lavorando sugli stessi identici dati. Se il valore è diverso, qualcosa è cambiato, e va capito che cosa.
Basta che in un documento di testo venga aggiunto uno spazio perché l'impronta cambi del tutto. Non esistono hash "quasi uguali": o coincidono o no.
Quali algoritmi usare
Non tutte le funzioni hash offrono oggi le stesse garanzie.
| Algoritmo | Lunghezza | Stato attuale |
|---|---|---|
| MD5 | 128 bit | Collisioni pratiche note; da non usare da solo |
| SHA-1 | 160 bit | Collisioni dimostrate; sconsigliato |
| SHA-256 | 256 bit | Considerato sicuro, scelta standard |
| SHA-512 | 512 bit | Considerato sicuro, utile per grandi volumi |
| SHA-3 | variabile | Alternativa moderna, meno diffusa negli strumenti |
Per MD5 e SHA-1 sono note tecniche per costruire deliberatamente due file diversi con la stessa impronta. Nella pratica forense quotidiana questo non significa che ogni hash MD5 sia inaffidabile, ma offre alla controparte un argomento facile. La soluzione più semplice è calcolare SHA-256 come riferimento principale; molti professionisti affiancano anche un secondo algoritmo, così da avere una doppia verifica.
Come si calcola
Quasi tutti i sistemi operativi permettono di calcolare un hash senza installare nulla:
- su Windows, dal prompt di PowerShell, con il comando Get-FileHash;
- su macOS, con il comando shasum dal Terminale;
- su Linux, con sha256sum.
Gli strumenti di acquisizione forense calcolano l'impronta automaticamente durante la copia e la riportano nel rapporto finale. Conviene comunque verificarla con un secondo programma indipendente, per escludere errori del singolo strumento.
Dove si usano gli hash nell'informatica forense
- verifica dell'acquisizione: si confronta l'hash dell'originale con quello della copia;
- controlli periodici: si ricalcola l'hash prima di ogni analisi e prima della consegna;
- elenchi di file: si produce un elenco con l'impronta di ciascun file consegnato, così che ogni elemento sia verificabile singolarmente;
- ricerca di file noti: si confrontano gli hash con banche dati di file conosciuti, per escludere i file di sistema innocui o individuare file già noti;
- deduplicazione: si eliminano i doppioni in grandi raccolte di documenti.
Errori comuni
- Calcolare l'hash troppo tardi: un'impronta calcolata settimane dopo l'acquisizione dimostra solo che il file non è cambiato da quel momento.
- Conservare l'hash solo accanto al file: se qualcuno altera il file, può alterare anche il file di testo con l'impronta. L'hash va riportato nel verbale, firmato e consegnato separatamente.
- Confondere hash del file e hash del contenitore: l'hash di un archivio compresso non coincide con quello dei file che contiene.
- Pensare che l'hash provi l'autenticità: l'impronta dimostra che i dati non sono cambiati dopo il calcolo, non che fossero veri o completi prima.
Quest'ultimo punto è il più frainteso. Se una chat è stata manipolata prima dell'acquisizione, l'hash della chat manipolata sarà perfettamente stabile. L'integrità è una cosa, l'autenticità un'altra, e richiede analisi diverse.
In sintesi
- L'hash è un'impronta di lunghezza fissa che cambia completamente a ogni minima modifica.
- SHA-256 è oggi la scelta standard; MD5 e SHA-1 non dovrebbero essere usati da soli.
- L'impronta va calcolata subito e riportata nel verbale, non solo salvata accanto al file.
- Fornire l'hash di ogni file consegnato permette verifiche indipendenti.
- L'hash prova l'integrità dal momento del calcolo, non l'autenticità precedente.