1434 Letture

MultiHasher: verificare l'integrità di qualunque file in Windows

Le funzioni hash, a partire da un testo di lunghezza arbitraria, generano una stringa di lunghezza fissa. La trasformazione operata funziona in un solo senso: non è quindi possibile, dalla stringa generata, risalire al testo iniziale. L'hash rappresenta una sorta di "impronta digitale" ("fingerprint") del contenuto di un file ed è solitamente usata per attestare che lo stesso file non sia stato alterato da virus, malware oppure per l'intervento di un malintenzionato. All'"impronta digitale" viene attribuito anche il nome di message digest, checksum o valore di hash.

Esistono molteplici algoritmi di hashing, tutti caratterizzati da alcune caratteristiche comuni: viene prodotto un output (digest) a partire da un flusso di bit di qualsivoglia dimensione, tale stringa è univoca ed è quindi "identificatore", ad esempio, di un medesimo documento ed infine l'algoritmo ha la proprietà di non essere invertibile ossia non è possibile ricostruire il messaggio originario a partire dall'hash (si tratta di una "funzione unidirezionale").

Tra gli algoritmi di hash vi sono i seguenti:


- MD2 (Message Digest 2; RFC 1319): concepito per i sistemi con una memoria disponibile molto limitata (i.e. smart card).

- MD4 (RFC 1320): molto simile al MD2 ma studiato per migliorare le performance. Fu ideato dal professor Ronald "Ron" Lorin Rivest, autore anche degli algoritmi crittografici a chiave simmetrica RC2, RC4, RC5 nonché coinventore dell'RC6.

- MD5 (RFC 1321): messo a punto dal professor Rivest dopo che erano state segnalate alcune debolezze nello schema del MD4. Più lento del MD4, è stato implementato in un vastissimo numero di prodotti fintanto che, nel 1996, molteplici vulnerabilità nell'algoritmo furono individuate e dimostrate dal crittografo tedesco Hans Dobbertin.

- SHA (Secure Hash Algorithm): SHA-1 produce un valore di hash di 160 bit ed è stato il primo ad essere pubblicato. Successivamente sono state ideate le varianti SHA-224, SHA-256, SHA-384 e SHA-512 che, rispettivamente, generano un "message digest" da 224, 256, 384 e 512 bit di lunghezza.

- RIPEMD: RIPEMD-160 è stato ideato da Hans Dobbertin, Antoon Bosselaers e Bart Preneel. Ottimizzato per i processori a 32 bit, è stato pensato per sostituire le funzioni di hash a 128 bit. Tra le varianti vi sono RIPEMD-256, RIPEMD-320 e RIPEMD-128.

- HAVAL (HAsh of VAriable Length): concepito da Y. Zheng, J. Pieprzyk e J. Seberry, si tratta di un algoritmo di hash che integra diversi livelli di sicurezza. I valori di hash generabili possono essere lunghi 128, 160, 192, 224 oppure 256 bit.

- Whirlpool: si tratta di una funzione di hash relativamente nuova, ideata da V. Rijmen e P.S.L.M. Barreto. Whirlpool opera su messaggi che abbiano una dimensione inferiore a 2256 bit producendo "message digest" di 512 bit. L'approccio che è stato adottato per questo algoritmo, è molto diverso da quello di MD5 e SHA-1. Ciò lo rende immune dagli stessi attacchi sferrabili nei confronti di questi ultimi due schemi.

- Tiger: messo a punto da Ross Anderson e Eli Biham, l'obiettivo di Tiger consiste nell'operare in modo efficiente su piattaforme dotate di processori a 64 bit rimpiazzando MD4, MD5, SHA e SHA-1. Tiger/192 produce un output di 192 bit.
Esistono però anche le varianti a 128 e 160 bit, per garantire compatibilità con gli algoritmi sopra citati.

Le funzioni di hash sono talvolta non ben comprese ed alcune fonti affermano che due file non possano mai avere lo stesso valore di hash ("message digest"). Quest'asserzione è falsa. Si consideri una funzione di hash che genera un "message digest" da 128 bit. Ci sono, ovviamente, 2128 possibili valori di hash. I file che esistono, però, sono certamente ben più di 2128 (sono considerabili in numero pari all'infinito). Ne consegue che possono esistere file con il medesimo valore di hash.

La difficoltà, quindi, consiste nell'individuare due file con il medesimo valore di hash. Quando due messaggi producono un identico hash, si parla di "collisione". La qualità di una funzione di hash è misurata in base alla difficoltà nell'individuazione di due testi che generino una collisione.
Perché un algoritmo di hashing "cada in disgrazia" è sufficiente che un gruppo di crittografi o di esperti informatici riesca a generare una collisione. E' questo ciò che è accaduto, in passato, per gli algoritmi SNEFRU, MD2, MD4 ed MD5, tutti oggi considerati insicuri.

MultiHasher è un software gratuito sviluppato per i sistemi Windows che consente di calcolare rapidamente l'hash di qualunque file utilizzando i seguenti algoritmi: CRC32, MD5, SHA-1, SHA-256, SHA-384 e SHA-512.

Una volta avviato il programma, cliccando sul pulsante MD5, è possibile scegliere quali hash ottenere per ciascun file:

Cliccando su Select files, quindi, oppure trascinando uno o più file sull'interfaccia di MultiHasher, si potrà controllarne gli hash corrispondenti (pulsante Calculate) in basso.

Il pulsante Select folder permette di aggiungere il contenuto di un'intera cartella.

MultiHasher può essere impiegato per verificare l'autenticità di un file prelevato dalla rete Internet. Accedendo al menù Edit, Preferences quindi cliccando sul pulsante Add integration into shell context menu è possibile fare in modo che MultiHasher si integri con l'interfaccia di Windows. In tal modo, facendo clic su di un qualsiasi file con il tasto destro del mouse, apparirà "Calculate hash with MultiHasher". Utilizzando la funzione di calcolo degli hash si potrà ad esempio paragonare la firma MD5 o SHA ottenuta con quella pubblicata sul sito web dell'autore del software così da verificare che il programma sia integro e non sia stato in alcun modo alterato.

La funzione Verify file integrity consente di "leggere" il contenuto di un file di testo contenente un hash e di paragonarlo con quello di un qualunque file. In questo modo si potrà verificare rapidamente che il file sia integro.


MultiHasher è prelevabile gratuitamente cliccando qui.


MultiHasher: verificare l'integrità di qualunque file in Windows - IlSoftware.it