Cos'è una funzione di hash ?
Una funzione di hash trasforma qualsiasi contenuto — una frase, un software, un backup di diversi gigabyte — in una stringa di lunghezza fissa chiamata hash o digest. Tre proprietà la definiscono: l'uscita ha sempre la stessa dimensione qualunque sia l'input, lo stesso contenuto produce sempre lo stesso hash, e risalire dall'hash all'input deve essere impossibile in pratica. È questo terzo punto a distinguere un hash crittografico da una somma di controllo come il CRC32.
Nella pratica, due usi occupano la gran parte del terreno. Verificare l'integrità : l'autore pubblica l'hash del suo file, tu lo ricalcoli, l'uguaglianza prova che il download non è stato alterato. Confrontare contenuti : invece di conservare i documenti stessi, se ne conservano gli hash — identici, significano contenuti identici, senza rivelare nulla sulla loro natura.
Quale algoritmo scegliere oggi ?
SHA-256 è la risposta predefinita: standardizzato dalla NSA e poi adottato ovunque, implementato in ogni linguaggio, e senza collisione nota. SHA-512 va bene per i grandi volumi quando il processore è a 64 bit, spesso più veloce del cugino su questo tipo di architettura. SHA-384 non porta nulla di particolare oltre a una variante più lunga. Per la firma di messaggi con chiave, l' HMAC-SHA-256 è il riferimento: combina la chiave segreta e l'hash, così solo il possessore della chiave può produrre lo stesso valore.
Il MD5 e lo SHA-1 restano utili per controlli non sensibili — un indice, una cache, un rilevamento di duplicati — dove la velocità conta più della resistenza. Il CRC32, invece, non è un hash crittografico: rileva le alterazioni accidentali, ma un'alterazione volontaria si fabbrica in pochi secondi.
Perché MD5 e SHA-1 sono considerati rotti ?
Perché dei ricercatori hanno fabbricato, per ciascuno di essi, due documenti diversi che condividono lo stesso hash. Per l'MD5, la dimostrazione risale al 2004; per SHA-1, una collisione reale è stata prodotta nel 2017 con il nome di SHAttered. Una collisione basta per rompere una firma: se l'attaccante sceglie il documento e l'autore si limita a hasharlo, può sottoporre un documento qualsiasi che finisce per firmare un contenuto diverso. È la ragione per cui i certificati TLS, gli aggiornamenti software e le firme dei pacchetti hanno abbandonato questi algoritmi.
Ciò che l'hash non fa
Hashare non è crittografare: un hash è irreversibile per progetto, ma non protegge il contenuto rendendolo illeggibile. L'hash non crittografa nulla, non sostituisce né TLS né una chiave di crittografia, e non protegge nemmeno da solo una password — è un compito per bcrypt, scrypt o Argon2, pensati per essere lenti. Infine, hashare due volte non rafforza nulla: concatenare algoritmi non fa che aggiungere una pellicola fragile dove basta una sola funzione non rotta.
Consigliato per
Amministratori di sistema e DSI che verificano somme di controllo di distribuzioni, sviluppatori che sigillano artefatti o autenticano webhook, auditor e compliance che controllano l'integrità dei backup, giornalisti e analisti che confrontano documenti senza diffonderli, studenti di crittografia che manipolano i concetti di hash, collisione e sale — e chiunque voglia hashare un contenuto rapidamente e senza tracce, con come complementi il generatore di password, l'encoder/decoder Base64, il decoder JWT, il tester di regex e lo contatore di caratteri.