- datialdente
- Posts
- L'importanza del "sale" nella sicurezza dei dati
L'importanza del "sale" nella sicurezza dei dati
Uso del SALT come best practice per proteggere i dati sensibili
Un po’ di storia
L'hashing è una tecnica fondamentale nel campo della crittografia e della sicurezza dei dati, che risale a molti decenni fa. Il concetto di funzioni di hash è emerso negli anni '50 e '60, con l'obiettivo di trasformare un input di lunghezza variabile in un output di lunghezza fissa. Le prime funzioni di hash erano piuttosto semplici, ma con il progredire della tecnologia e l'aumento delle necessità di sicurezza, queste funzioni sono diventate nel tempo sempre più sofisticate.
Le funzioni di hash crittografiche, come le conosciamo oggi, sono state sviluppate negli anni '70 e '80. Una delle prime funzioni di hash crittografiche importanti è stata MD4 (Message Digest Algorithm 4), sviluppata da Ronald Rivest nel 1990. Nonostante fosse popolare, non c’è voluto molto perchè MD4 mostrasse delle vulnerabilità a causa della sua insufficiente resistenza agli attacchi di collisione (un attacco di collisione si verifica quando un attaccante riesce a trovare due distinti input che producono lo stesso valore di hash: è problematico, perché una funzione di hash dovrebbe, idealmente, generare valori di hash unici per input differenti).
Nel 1993, il National Institute of Standards and Technology (NIST) ha introdotto SHA-0, che è stato rapidamente sostituito da SHA-1 a causa di una debolezza scoperta. SHA-1 è stato ampiamente utilizzato fino a quando ulteriori ricerche hanno dimostrato che anch'esso era vulnerabile agli attacchi di collisione. Questo ha portato allo sviluppo della famiglia di algoritmi SHA-2, con SHA-256 e SHA-512 che sono diventati gli standard più utilizzati per la sicurezza dei dati.
L'importanza del SALT
Mentre le funzioni di hash sono strumenti potenti per la sicurezza dei dati, da sole non sono sufficienti a proteggere contro tutti i tipi di attacchi. Qui entra in gioco il concetto di SALT.
Il SALT è un valore casuale aggiunto all'input di una funzione di hash prima di calcolarne il valore di hash. Questo semplice accorgimento aumenta significativamente la sicurezza in vari modi:
Prevenzione delle rainbow tables: le rainbow tables sono liste pre-computate di hash per parole comuni o password. L'aggiunta di un SALT unico rende inefficaci queste tabelle, poiché ogni combinazione di input e SALT produrrà un hash diverso.
Mitigazione degli attacchi brute force: senza un SALT, un attaccante potrebbe precomputare hash per una vasta gamma di possibili password. L'uso di un SALT unico per ogni utente o transazione significa che l'attaccante dovrebbe calcolare nuovamente gli hash per ogni combinazione di password e SALT, aumentando enormemente il tempo e le risorse necessarie per un attacco.
Unicità degli hash: anche se due utenti scelgono la stessa password, l'aggiunta di un SALT unico (ad esempio utilizzando l’indirizzo email come SALT variabile ma sempre identico per uno specifico utente) per ciascuno garantisce che i valori di hash risultanti siano diversi, proteggendo ulteriormente le password degli utenti.
Pseudonimizzazione nei Database
La pseudonimizzazione è il processo di sostituzione di dati identificativi con pseudonimi, che possono essere ulteriormente trasformati utilizzando funzioni di hash con SALT. Ad esempio, invece di memorizzare direttamente l'indirizzo email di un utente, il database potrebbe memorizzare l'hash dell'indirizzo email con un SALT. Questo rende molto più difficile per un attaccante collegare i dati pseudonimizzati agli individui specifici senza accesso al SALT utilizzato.
Vantaggi del SALT nell'anonimizzazione e pseudonimizzazione
Protezione della privacy: l'uso del SALT contribuisce a proteggere la privacy degli utenti, assicurando che i dati sensibili non possano essere facilmente ricondotti a persone specifiche anche se il database viene compromesso.
Sicurezza dei dati: come già visto, l'aggiunta di un SALT unico rende i dati hash non riutilizzabili per attacchi di forza bruta o precomputed tables, aumentando la sicurezza complessiva del database.
Conformità normativa: in molte giurisdizioni, la pseudonimizzazione e l'anonimizzazione dei dati sono requisiti legali per la protezione dei dati personali. L'implementazione di SALT nei processi di hash aiuta le organizzazioni a conformarsi a regolamenti come il GDPR.
Integrità dei dati: anche in caso di fuga di dati, l'integrità e la confidenzialità delle informazioni sono meglio preservate grazie alla diversità degli hash generati con SALT. Il SALT deve essere sufficientemente lungo e, meglio sarebbe, generato in modo casuale per garantire la sua efficacia. In combinazione con algoritmi di hash sicuri come SHA-256, l'uso del SALT è una best practice fondamentale per proteggere le password, PII e altri dati sensibili.
Conclusione
Dall'evoluzione delle prime funzioni di hash a quelle moderne come SHA-256, l'hashing ha giocato un ruolo importantissimo nella sicurezza dei dati. Purtroppo, come abbiamo visto, l'hashing da solo non basta, l'aggiunta di un SALT risulta quindi essenziale per rafforzare ulteriormente la protezione contro diversi tipi di attacchi.