Acquisizione e integrità · Lezione 2 di 3
Valori hash e integrità delle prove
6 min di lettura
Una copia forense è utile solo se chiunque può verificare che sia identica a quanto acquisito e che non sia stata modificata da allora. I valori hash crittografici rendono questa verifica rapida e oggettiva. È anche facile attribuire a un hash un valore probatorio eccessivo, quindi è importante sapere esattamente che cosa dimostra una corrispondenza e che cosa non dimostra. La registrazione dei valori hash nella documentazione della catena di custodia è trattata nel Modulo 5.
Che cosa fa una funzione hash
Una funzione hash crittografica legge una quantità qualsiasi di dati, da una parola a un intero disco, e produce un risultato breve e di lunghezza fissa, chiamato valore hash o digest. Quattro proprietà la rendono utile per le prove:
- Lunghezza fissa: SHA-256 restituisce sempre 256 bit, rappresentati da 64 caratteri esadecimali, qualunque sia la dimensione dell'input.
- Deterministica: lo stesso input produce sempre lo stesso valore, su qualsiasi computer e con qualsiasi implementazione corretta.
- Effetto valanga: modificare un singolo bit dell'input cambia circa la metà dei bit dell'output, in modo imprevedibile.
- Unidirezionale e resistente alle collisioni: non è computazionalmente fattibile risalire all'input o trovare due input con lo stesso valore.
Ad esempio, il testo ASCII "Total due: 1,500.00" ha un valore SHA-256 che inizia con 6b2c7c4a. Sostituendo il 5 con un 4, modifica che altera esattamente un bit, il valore inizia con efdbbff7, senza alcun indizio che gli input siano quasi identici.
Algoritmi comuni
| Algoritmo | Dimensione dell'output | Stato nella pratica forense |
|---|---|---|
| MD5 | 128 bit (32 caratteri esadecimali) | Collisioni pratiche dimostrate nel 2004; ancora registrato per compatibilità con strumenti e insiemi di hash meno recenti |
| SHA-1 | 160 bit (40 caratteri esadecimali) | Prima collisione pubblica nel 2017; ancora registrato insieme a hash più robusti in alcuni flussi di lavoro |
| SHA-256 | 256 bit (64 caratteri esadecimali) | Parte della famiglia SHA-2; nessun attacco pratico noto; attualmente la scelta preferita |
Una collisione si verifica quando due input diversi hanno lo stesso valore hash. Per MD5 e SHA-1, queste coppie possono ormai essere create deliberatamente, quindi entrambi sono considerati compromessi per gli impieghi di sicurezza, come le firme digitali, e nessuno dei due dovrebbe essere l'unico hash registrato per le prove. Gli attacchi costruiscono insieme due nuovi input; non producono un file che corrisponda all'hash di un file già esistente, quindi una vecchia immagine verificata con MD5 non diventa improvvisamente inaffidabile. La prassi attuale prevede SHA-256 o un algoritmo più robusto, spesso registrato insieme a MD5 o SHA-1 perché strumenti, relazioni e database di hash meno recenti potrebbero riportare solo tali valori.
Hash di acquisizione e hash di verifica
Due valori hash costituiscono il controllo di integrità di base.
- L'hash di acquisizione viene calcolato dallo strumento di creazione delle immagini sui dati mentre li legge dalla sorgente. Descrive la sorgente così com'era al momento dell'acquisizione.
- L'hash di verifica viene calcolato successivamente rileggendo l'immagine o la copia e calcolandone nuovamente l'hash. Se coincide con l'hash di acquisizione, la copia è una registrazione fedele di quanto è stato letto.
Il confronto può essere ripetuto in qualsiasi momento: prima dell'analisi, quando una copia viene consegnata o in tribunale. Dopo un'acquisizione a sistema spento, è possibile calcolare nuovamente anche l'hash della sorgente per dimostrare che non è stata alterata. Una mancata corrispondenza deve essere indagata e spiegata, mai ignorata; tra le cause comuni figurano un'unità in avaria che restituisce letture incoerenti, un errore di copia o una scrittura che ha superato il dispositivo di blocco in scrittura.
Immagini complete e singoli file
Un hash dell'immagine copre l'intero flusso dei dati acquisiti. Un hash del file copre il contenuto di un singolo file.
L'hash del file non comprende il nome, il percorso o le marche temporali del file, che il file system memorizza separatamente. Due file con contenuto identico ma nomi diversi hanno lo stesso hash. Gli hash dei file sono ideali per individuare duplicati e dimostrare che un file esportato corrisponde a quello all'interno dell'immagine, ma non indicano nulla su quando o dove sia stata creata una copia.
L'hash dell'immagine non dipende dal formato: le immagini raw ed E01 (Lezione 4.3) della stessa unità producono lo stesso hash dell'immagine.
Che cosa dimostra un hash e che cosa non dimostra
Un hash corrispondente costituisce una prova forte e oggettiva, ma di un fatto circoscritto.
- Dimostra che la copia è identica bit per bit ai dati di cui è stato calcolato l'hash e che non è stata modificata da allora.
- Non dimostra che la sorgente fosse rimasta inalterata prima dell'acquisizione. Se qualcuno ha alterato un'unità il giorno prima del sequestro, l'immagine conserva fedelmente l'unità alterata.
- Non dimostra chi abbia creato, inviato o modificato i dati, né quando. A queste domande risponde l'analisi (Modulo 6).
- Non dimostra che l'acquisizione sia stata completa. Una copia mirata può essere verificata perfettamente e tuttavia tralasciare ciò che conta.
- La sua sicurezza dipende da quella della sua registrazione. Chi è in grado di modificare un'immagine potrebbe anche modificare un valore hash memorizzato soltanto accanto ad essa, quindi occorre registrare i valori anche negli appunti e nella documentazione della catena di custodia (Modulo 5).
Insiemi di hash: riconoscere i file noti
Un insieme di hash è un elenco di valori hash relativi a file la cui identità è già nota, che consente di riconoscere i file corrispondenti senza che nessuno li apra.
- File noti: la National Software Reference Library (NSRL), gestita dal NIST, pubblica i valori hash dei file di software disponibili in commercio, consentendo di escludere dall'esame i file del sistema operativo e delle applicazioni. Il NIST definisce questi file noti, non innocui: l'insieme comprende software, come gli strumenti di hacking, che potrebbe essere esso stesso rilevante.
- File noti come dannosi o di interesse: gli elenchi di malware o di materiale illegale segnalano automaticamente i file corrispondenti ed evitano agli esaminatori di visualizzare nuovamente immagini illegali già note.
La corrispondenza degli hash individua soltanto file identici: una foto ridimensionata ha un valore diverso. L'hashing fuzzy e quello percettivo indicano una somiglianza anziché un'identità, e i loro risultati richiedono una revisione.
Un esempio svolto
Marta Lind, un'esaminatrice del laboratorio a cui si affida Northline Freight, crea l'immagine di un'unità da 1 TB. I valori riportati di seguito sono abbreviati e illustrativi.
- Lo strumento riporta l'hash di acquisizione: SHA-256 4e1a…9c07 e MD5 b3d2…51fa. Marta li registra entrambi.
- La verifica rilegge l'immagine e riporta gli stessi valori.
- Due settimane dopo, prima dell'analisi, la sua copia di lavoro restituisce ancora 4e1a…9c07.
- Un collega calcola l'hash di una seconda copia con uno strumento diverso e ottiene lo stesso valore SHA-256, dimostrando anche la riproducibilità (Modulo 1).
- Marta esporta un foglio di calcolo e ne registra l'hash del file, affinché chiunque possa confermare che corrisponde al file presente nell'immagine.
Se un qualsiasi valore fosse risultato diverso, Marta avrebbe registrato la discrepanza e ne avrebbe individuato la causa prima di fare affidamento sulla copia.
Focus sull'esame: Memorizzare le proprietà di una funzione hash (lunghezza fissa, deterministica, effetto valanga, unidirezionale, resistente alle collisioni) e le dimensioni di MD5 (128 bit), SHA-1 (160 bit) e SHA-256 (256 bit). Sapere perché SHA-256 è preferito e perché MD5 o SHA-1 vengono ancora registrati insieme ad esso. Distinguere l'hash di acquisizione dall'hash di verifica e l'hash dell'immagine dall'hash del file. Gli scenari verificano che cosa dimostra e che cosa non dimostra un hash corrispondente e come vengono utilizzati gli insiemi di hash, come la NSRL.