Una funzione di hash trasforma un dato in un’impronta di dimensione determinata. Modificare anche leggermente il dato produce normalmente un’impronta diversa. Questa proprietà rende gli hash utili per integrità e confronto, ma un hash non è cifratura.
Hash, integrità e confronto delle impronte: cosa può davvero provare un hash
Distingui hash, cifratura e firma e usa le impronte per verificare uguaglianza o integrità senza attribuire false garanzie.
Mostra indice
Hash e cifratura hanno scopi diversi
La cifratura rende un dato illeggibile senza la chiave necessaria a decifrarlo. Un hash è invece una trasformazione a senso unico usata per produrre un’impronta. Non si “decifra” un hash per recuperare il file originale.
Confrontare due impronte
Se due file producono la stessa impronta con lo stesso algoritmo, il confronto offre un modo pratico per verificare che corrispondano. La fiducia dipende però dall’origine dell’impronta di riferimento: confrontare un file compromesso con un hash ottenuto dallo stesso canale compromesso non crea una fonte di fiducia indipendente.
Gli algoritmi non sono intercambiabili
SHA-256 è ancora molto usato per verificare l’integrità di file e in numerosi protocolli. SHA-3 offre un’altra famiglia moderna. MD5 e SHA-1 possono comparire in sistemi legacy o controlli non avversariali, ma le debolezze note sulle collisioni li rendono inadatti a molti usi di sicurezza.
Se un editore pubblica più impronte, scegli l’algoritmo moderno raccomandato anziché quello più corto o familiare.
Collisioni e proprietà crittografiche
Poiché l’insieme degli input è più grande dell’insieme delle possibili impronte, le collisioni sono matematicamente inevitabili. La sicurezza deriva dal fatto che, per un buon algoritmo moderno, costruire deliberatamente una collisione utile deve essere impraticabile nel contesto considerato.
La lunghezza dell’hash non è quindi una garanzia assoluta indipendente dall’algoritmo e dal modello di minaccia.
Verificare un download
Un caso comune consiste nel calcolare l’hash del file scaricato e confrontarlo con un valore pubblicato da una fonte affidabile. Se i valori differiscono, il contenuto non corrisponde. Se coincidono, sai che il file corrisponde alla referenza confrontata.
Questo non prova da solo l’origine del file. Per una garanzia più forte sull’autenticità può essere necessaria una firma digitale.
Hash, MAC e firma digitale
Un hash semplice non usa un segreto: chiunque può calcolare l’impronta di un contenuto modificato. Un MAC combina dati e un segreto condiviso per fornire integrità e autenticità tra chi possiede quel segreto. Una firma digitale usa una chiave privata per firmare e una chiave pubblica per verificare.
Dire “l’hash coincide” significa quindi soltanto che il contenuto coincide con la referenza confrontata.
Encoding non significa cifratura
Base64, esadecimale e URL encoding cambiano soltanto la rappresentazione dei dati. Sono reversibili senza chiave e non offrono riservatezza. Questa distinzione è utile anche quando si osservano JWT o altre stringhe tecniche apparentemente illeggibili.
Password: serve un’altra famiglia di funzioni
Per le password, la velocità di un hash generico è un difetto: permette a un attaccante di provare moltissimi candidati. Lo storage delle password richiede funzioni di derivazione volutamente costose e salt unici, come Argon2id, scrypt o bcrypt secondo il contesto.
SRI e risorse Web
Per script e fogli di stile caricati da una sorgente esterna, Subresource Integrity usa un’impronta attesa per verificare il contenuto ricevuto dal browser. Se la risorsa cambia e non corrisponde all’hash dichiarato, il browser può rifiutarla.
Un hash è quindi un ottimo strumento per confrontare contenuti e rilevare differenze, purché non venga confuso con cifratura, autenticazione o firma.
Per confrontare hash, crittografia, HMAC e PBKDF2, continua con Crittografia, hashing e HMAC.
Questo articolo ti è stato utile?
Fonti e riferimenti
- NIST — FIPS 180-4: Secure Hash Standard (si apre in una nuova scheda)Pagina in inglese
- NIST — FIPS 202: SHA-3 Standard (si apre in una nuova scheda)Pagina in inglese
- NIST — Policy on Hash Functions (si apre in una nuova scheda)Pagina in inglese
- RFC 6151 — Updated Security Considerations for MD5 and HMAC-MD5 (si apre in una nuova scheda)Pagina in inglese