Demistificare l’Hashing Crittografico: Perché è Irreversibile e come Protegge le tue Password
Nel mondo della cybersecurity, l’hashing è uno dei concetti più fondamentali ma spesso fraintesi. È lo scudo invisibile che protegge le tue password, verifica l’integrità dei tuoi download e alimenta la blockchain.
Ma cos’è esattamente un hash? Perché non possiamo “decriptarlo”? E, cosa più importante, se è irreversibile, come fa un sito web a sapere che hai inserito la password corretta?
1. Cos’è una Funzione di Hash?
Una funzione di hash crittografica è un algoritmo matematico che prende un input (o “messaggio”) di qualsiasi dimensione e lo trasforma in una stringa di caratteri di dimensione fissa, che in genere appare come una sequenza casuale di lettere e numeri.
Le Regole d’Oro dell’Hashing:
- Deterministico: Lo stesso input produrrà sempre lo stesso identico hash.
- Veloce da Calcolare: L’algoritmo deve essere sufficientemente veloce per l’uso pratico.
- Dimensione dell’Output Fissa: Che tu faccia l’hash di una singola parola o di un’intera biblioteca, la lunghezza dell’output rimane la stessa (es. 256 bit per SHA-256).
- L’Effetto Valanga (Avalanche Effect): Un piccolo cambiamento nell’input (come cambiare una singola lettera) produce un hash completamente diverso.
2. Perché l’Hashing è Irreversibile?
A differenza della Crittografia, che è una strada a doppio senso (puoi criptare e poi decriptare con una chiave), l’Hashing è una strada a senso unico. Una volta ottenuto un hash, non puoi “invertirlo” per ottenere i dati originali.
L’Analogia del “Mescolare le Vernici”
Immagina di avere un secchio di vernice blu e uno di vernice gialla. Se li mescoli, ottieni il verde. Anche se è facile creare il verde da blu e giallo, è fisicamente impossibile prendere quella vernice verde e separarla perfettamente nei secchi originali blu e giallo.
La Ragione Matematica: Perdita di Informazioni
Gli algoritmi di hashing sono progettati per scartare intenzionalmente informazioni. Ad esempio, se avessi una semplice “regola di hash” che dice: “Somma i numeri e prendi l’ultima cifra”, allora:
- Input
15->1+5 = 6 - Input
24->2+4 = 6
Se vedi solo il risultato 6, non hai modo di sapere se l’input originale era 15, 24, 33 o qualsiasi altra combinazione. Negli algoritmi reali come lo SHA-256, la complessità è astronomica, ma il principio rimane: l’informazione viene condensata e scartata.
3. Se è irreversibile, come funziona il confronto delle password?
Questa è la domanda più comune: Se un sito web memorizza la mia password come hash e non può invertirlo, come fa a sapere che ho effettuato l’accesso correttamente?
La risposta è semplice: Non verificano la password; verificano l’hash.
Il Workflow di Verifica:
- Registrazione: Quando crei un account, il server prende la tua password (es.
MiaSegreta123), ne calcola l’hash e memorizza solo l’hash nel database. - Tentativo di Accesso: Quando provi ad accedere, inserisci nuovamente la tua password.
- Il Confronto: Il server prende la password che hai appena digitato e la passa attraverso lo stesso algoritmo di hash.
- La Corrispondenza: Il server confronta il nuovo hash con l’hash memorizzato.
- Se
Hash(Input)==Hash Memorizzato, la password deve essere corretta. - Se non corrispondono, la password è errata.
- Se
Il server non “conosce” mai veramente la tua password. Sa solo che l’input fornito produce l’impronta digitale matematica attesa.
4. Sicurezza Moderna: Aggiungere il “Salt”
Poiché l’hashing è deterministico, una password comune come password123 produrrà sempre lo stesso hash. Gli hacker usano le “Rainbow Tables” (elenchi pre-calcolati di hash per password comuni) per craccarle istantaneamente.
Per evitare questo, i sistemi moderni usano un Salt: una stringa casuale aggiunta alla tua password prima che venga calcolato l’hash:
Hash(Password + Salt) = Hash Sicuro
Questo garantisce che anche se due utenti hanno la stessa password, i loro hash memorizzati appariranno completamente diversi.
Riepilogo
| Concetto | Scopo | Reversibilità |
|---|---|---|
| Crittografia | Comunicazione segreta | Reversibile (con chiave) |
| Hashing | Integrità dei dati e sicurezza delle password | Irreversibile |
L’hashing è la pietra angolare della moderna fiducia digitale. Trasformando i dati sensibili in impronte digitali irreversibili, possiamo verificare le identità e proteggere i sistemi senza mai dover esporre i segreti originali.