Il Codice Fiscale italiano e la Partita IVA includono un carattere di controllo calcolato con un algoritmo di checksum ben definito — utile per rilevare un singolo errore di trascrizione, ma non una funzione crittografica: da un Codice Fiscale valido si può risalire facilmente ai dati anagrafici che lo hanno generato, mentre da un hash crittografico come SHA-256 non si può risalire in alcun modo all'input originale. È una distinzione pratica tra "codice di controllo" e "hash", spesso confusa.
Cosa hanno in comune tutte le funzioni hash
La proprietà chiave è il determinismo: gli stessi dati in ingresso danno sempre lo stesso hash. La seconda proprietà è l'effetto valanga: cambiare un solo bit nell'input cambia completamente il risultato, quindi è impossibile capire dall'hash quanto si somiglino due file originali.
Perché MD5 e SHA-1 sono considerati insicuri
Per entrambi gli algoritmi sono stati trovati modi pratici per creare due insiemi di dati diversi con lo stesso hash — una cosiddetta collisione. Questo li rende inadatti dove conta la robustezza crittografica, anche se vengono ancora usati dove serve solo un rapido controllo di integrità.
SHA-256 e la famiglia SHA-2
SHA-256 genera un hash a 256 bit e a oggi non ha collisioni pratiche conosciute. A differenza del carattere di controllo del Codice Fiscale, non permette in alcun modo di risalire ai dati originali — proprio per questo è la scelta comune per pseudonimizzare un identificativo prima di archiviarlo.
A cosa serve
- Verificare l'integrità di file scaricati confrontandoli con un hash pubblicato.
- Capire la differenza tra un carattere di controllo reversibile (come nel Codice Fiscale) e un hash crittografico irreversibile.
- Creare impronte brevi e uniche per grandi quantità di dati.
Perché SHA-3 non ha sostituito SHA-2
SHA-3 è stato scelto come vincitore di un concorso NIST separato nel caso in cui in futuro si scoprisse una vulnerabilità fondamentale in SHA-2 — è un'“assicurazione” basata su una costruzione interna fondamentalmente diversa (Keccak). Poiché finora non sono stati trovati attacchi pratici a SHA-2, SHA-256 resta lo standard predefinito nella maggior parte dei sistemi.