Curious TechieDev Toolbox
Tutte le Guide/Crittografia8 min read

Cos’è l’Hashing? Digest Crittografici ed Effetto Valanga

Funzioni matematiche unidirezionali, resistenza alle collisioni, SHA-256 vs MD5, rainbow table e Argon2.

Punti Chiave
  • Le funzioni hash sono algoritmi matematici irreversibili che associano un digest a lunghezza fissa.
  • L’Effetto Valanga garantisce che la modifica di un singolo bit cambi circa il 50% del risultato.
  • Algoritmi come MD5 e SHA-1 sono compromessi per rischio di collisione.
  • SHA-256 valida l’integrità dei dati; algoritmi a consumo elevato di memoria (Argon2id) proteggono le password.

Dalla verifica dei file ISO fino alle firme digitali su blockchain, le funzioni hash crittografiche costituiscono il fondamento matematico per la sicurezza e l’integrità dei dati.

1. Cos’è una Funzione Hash?

Una funzione hash crittografica è un algoritmo matematico che riceve in input dati di dimensione arbitraria e li comprime in una stringa esadecimale di lunghezza fissa (es.: 256 bit / 64 caratteri hex per SHA-256).

2. Le 4 Proprietà Fondamentali di Sicurezza

  • Deterministica: Lo stesso identico input produce sempre lo stesso identico digest.
  • Resistenza alla Pre-immagine (Unidirezionalità): È computazionalmente impossibile risalire all’input originale partendo dall’hash.
  • Resistenza alla Seconda Pre-immagine: Dato m1, è impossibile trovare m2 tale che hash(m1) == hash(m2).
  • Resistenza alle Collisioni: Nessuna coppia di input diversi deve generare il medesimo hash.

3. L’Effetto Valanga Visualizzato

I moderni algoritmi crittografici esibiscono un pronunciato effetto valanga: la variazione di un singolo carattere altera più del 50% dei bit dell’hash finale:

Input "Hello": 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
Input "hello": 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

4. SHA-256 vs SHA-512 vs MD5

Algoritmi storici come MD5 e SHA-1 presentano collisioni note e sono compromessi. Lo standard industriale attuale poggia sulla famiglia SHA-2 (SHA-256, SHA-512) e sulla famiglia SHA-3 (Keccak).

5. Casi d’Uso Reali

Gli hash sono essenziali per il salvataggio sicuro di password (con salt tramite Argon2 o bcrypt), per i commit Git, per le firme digitali e per le memorie indirizzabili per contenuto.