Senza dubbio, le password rappresentano una delle principali barriere di protezione di account, sistemi e informazioni personali.
Per tale ragione, oltre alle tecniche crittografiche, negli anni è stato elaborato un ulteriore metodo di irrobustimento e protezione dei codici di sicurezza noto come salting.
Approfondiamone, quindi, caratteristiche, metodi e vantaggi.

- Cos’è il salting e perché è importante per la protezione di password e dati
- La funzione crittografica del salting e come protegge le password
- Metodi efficaci per implementare il salting nelle applicazioni web
- Le migliori pratiche per la gestione dei salt crittografici
- Differenza tra salting e hashing: come integrarli per aumentare la sicurezza dei dati
Cos’è il salting e perché è importante per la protezione di password e dati
Il salting è una tecnica di sicurezza crittografica che consiste nell’aggiungere una stringa casuale di caratteri (nota come “salt”) a un valore di input prima di eseguire un’operazione crittografica, come l’hashing.
Senza il salting, le password, o altri dati crittografati, potrebbero essere vulnerabili a tecniche di attacco di forza bruta, in cui un attaccante cerca di indovinare il valore originale eseguendo l’hash di milioni di possibili input e confrontandoli con gli hash di riferimento.
Tuttavia, l’aggiunta di un salt casuale rende questo tipo di attacchi molto più complessi e praticamente inattuabili.
Il salt viene concatenato al valore di input prima di eseguire l’operazione crittografica, quindi l’hash risultante sarà unico per ciascuna combinazione.
Questo rende pressoché impossibile pre-calcolare tabelle di hash complete, in quanto i valori di input comuni genererebbero hash differenti grazie alla presenza di salt diversi.
La funzione crittografica del salting e come protegge le password
Uno dei principali ambiti di applicazione del salting è quello di aumentare la sicurezza delle password attraverso l’aggiunta di un salt casuale.
Quando un utente crea un account o cambia la propria password, il valore della password viene combinato con un salt generato casualmente. Questa combinazione di password e salt viene quindi sottoposta a un’operazione crittografica, come l’hashing.
L’hashing è un processo crittografico unidirezionale che trasforma un input di dati in una stringa di lunghezza fissa chiamata appunto hash.
L’hashing è progettato per essere facile e veloce da calcolare, ma praticamente impossibile da invertire. In altre parole, non è possibile ottenere la password originale dall’hash.
Tuttavia, senza l’utilizzo del salting, le password hash sarebbero vulnerabili ai già menzionati attacchi forza bruta, nonché a quelli basati su rainbow table.
Queste minacce prevedono, infatti, che un attaccante confronti gli hash delle password con un’enorme tabella precalcolata di hash e corrispondenti password.
Per fortuna, l’aggiunta del salt al processo di hashing rende molto più difficile l’esecuzione di tali attacchi.
Ogni password avrà un salt unico, quindi anche se due utenti hanno la stessa password, i loro hash saranno completamente diversi proprio grazie ai salt differenti. Questo significa che l’attaccante dovrà calcolare gli hash per ogni possibile combinazione di password e salt, rendendo il processo molto più lento e oneroso.
Altro fattore di protezione dai rainbow table attack è dato dal fatto che gli attaccanti non sono in grado di confrontare direttamente gli hash con i valori di input originali, poiché non sono a conoscenza della stringa di salt casuale aggiunta alla password.
Metodi efficaci per implementare il salting nelle applicazioni web
Esistono diversi metodi efficaci per integrare il salting nelle applicazioni web. Quest’operazione consente di garantire una protezione adeguata dei dati sensibili archiviati o processati su di esse.
Ecco alcuni tra gli approcci più comuni:
- Salt casuale e univoco per ogni password: i salt dovrebbe essere sufficientemente lungo e generato utilizzando una funzione crittografica sicura
- utilizzo di funzioni di hash sicure: alcuni algoritmi di hash comunemente utilizzati includono bcrypt, scrypt e Argon2. Queste funzioni di hash sono state progettate appositamente per la sicurezza delle password e forniscono meccanismi di salting integrati
- Conservazione sicura dei salt: i salt dovrebbero essere gestiti come informazioni sensibili e protetti adeguatamente. È consigliabile crittografare o hashare i salt stessi e memorizzarli separatamente dai dati utente
- Aggiornamento periodico dei salt: questo può essere fatto richiedendo agli utenti di cambiare periodicamente le loro password, generando nuovi salt ed effettuare il ri-hashing le password. L’aggiornamento regolare dei salt contribuisce a garantire un ulteriore livello di sicurezza
- Protezione contro attacchi temporali: durante il processo di autenticazione, è importante implementare meccanismi per mitigare gli attacchi temporali, come gli attacchi di timing. Assicurarsi che il confronto tra le password avvenga in un tempo costante, indipendentemente dalla validità o meno della password, per evitare che un attaccante possa trarre informazioni sulla correttezza di parti delle password o dei salt
- Utilizzo di soluzioni di autenticazione robuste: oltre al salting, è essenziale utilizzare soluzioni di autenticazione robuste, come l’autenticazione a due fattori (2FA), per aumentare ulteriormente la sicurezza. Il salting, infatti, dovrebbe essere visto come un componente di un sistema di sicurezza più ampio.
Le migliori pratiche per la gestione dei salt crittografici
La corretta gestione dei salt crittografici è fondamentale per garantire un’adeguata sicurezza dei dati.
Ecco alcune best practice per la gestione dei salt crittografici:
- Generazione di salt unici e casuali: i salt devono essere generati in modo casuale e univoco per ciascun valore di input crittografico. È importante utilizzare un generatore di numeri casuali crittograficamente sicuro per garantire l’aleatorietà dei salt. Salt diversi per ogni valore di input contribuiscono a rendere gli attacchi di forza bruta o l’utilizzo di tabelle di hash precalcolate molto più difficili.
- Lunghezza e complessità dei salt: I salt dovrebbero essere sufficientemente lunghi per garantire un’adeguata sicurezza. Generalmente, una lunghezza di 128 bit o superiore è raccomandata. Inoltre, i salt dovrebbero essere composti da una combinazione di caratteri casuali, tra cui lettere maiuscole e minuscole, numeri e caratteri speciali. Una maggiore complessità dei salt aumenta la loro resistenza agli attacchi di forza bruta.
- Conservazione sicura dei salt: è fondamentale conservare i salt in modo sicuro. I salt non dovrebbero essere memorizzati insieme ai dati crittografati o alle password stesse. È consigliabile crittografare o hashare i salt e conservarli separatamente dai dati utente. In questo modo, anche se un potenziale attaccante riesce ad accedere ai dati, non avrà accesso diretto ai salt crittografici.
- Aggiornamento periodico dei salt: è buona pratica aggiornare periodicamente i salt crittografici utilizzati nei sistemi. Questo può essere fatto richiedendo agli utenti di cambiare le loro password o i loro dati crittografati periodicamente. Generare nuovi salt e ri-eseguire le operazioni crittografiche con i nuovi salt contribuisce a mantenere una protezione adeguata nel tempo.
- Backup e ripristino dei salt: assicurarsi di avere un processo di backup e ripristino dei salt crittografici. In caso di perdita o corruzione dei salt, è importante poterli ripristinare per garantire l’accesso ai dati crittografati. Effettuare backup regolari dei salt e conservarli in modo sicuro è fondamentale per la continuità del sistema.
- Audit e monitoraggio dei salt: monitorare attentamente l’utilizzo dei salt crittografici e condurre audit periodici per assicurarsi che siano implementati correttamente e non siano stati compromessi. Monitorare le attività sospette o gli accessi non autorizzati ai salt può contribuire a rilevare potenziali minacce alla sicurezza e prendere le misure appropriate per proteggere i dati.
Differenza tra salting e hashing
Come integrarli per aumentare la sicurezza dei dati
La differenza tra salting e hashing risiede:
- nella loro funzione
- nel modo in cui vengono utilizzati nella crittografia dei dati
Il salting è il processo di aggiungere una stringa casuale di dati, conosciuta come “salt”, a un valore di input prima di eseguire un’operazione crittografica, come l’hashing.
Il suo scopo principale è aumentare la sicurezza dei dati rendendo più complesso e difficile per gli attaccanti indovinare o ricavare il valore di input originale.
Il salt viene concatenato al valore di input e viene generato in modo casuale e univoco per ciasuna operazione crittografica.
L’hashing, d’altra parte, è un processo crittografico unidirezionale che trasforma un valore di input in una stringa di lunghezza fissa, chiamata hash.
Quando integrati, il salting e l’hashing aumentano ulteriormente la sicurezza dei dati crittografati.
Aggiungendo un salt casuale prima di eseguire l’hashing, si rende molto più difficile per gli attaccanti utilizzare attacchi di forza bruta o pre-calcolare tabelle di hash.
Il processo completo per integrare il salting e l’hashing al fine di aumentare la sicurezza dei dati di solito segue questi passaggi:
- Generazione del salt: Per ogni valore di input crittografico (ad esempio, una password), viene generato un salt casuale e univoco.
- Concatenazione del salt: Il salt viene concatenato al valore di input. Il risultato è un valore di input allungato che include il salt.
- Hashing: L’hashing viene eseguito sul valore di input allungato (input + salt) utilizzando una funzione di hash crittografica sicura, come bcrypt o scrypt. Questo produce l’hash finale.
- Conservazione dei dati: L’hash finale e il salt vengono conservati separatamente. L’hash è generalmente memorizzato in un database o in una struttura di archiviazione, mentre il salt è conservato in modo sicuro, ad esempio, in un database separato o in un file crittografato.
- Verifica delle credenziali: Quando un utente cerca di autenticarsi, il processo viene ripetuto. Il salt corrispondente all’account dell’utente viene recuperato e concatenato alla password inserita dall’utente. Successivamente, l’hashing viene eseguito utilizzando lo stesso algoritmo di hash utilizzato durante la creazione dell’account. Se l’hash risultante corrisponde all’hash memorizzato nel database, l’utente viene considerato autenticato.
In sostanza, integrando il salting con l’hashing, si rende più difficile agli attaccanti:
- l’ottenimento dei dati originali
- la decodifica delle informazioni crittografate
Il salting personalizza l’hashing per ciascun valore di input, aumentando significativamente la sicurezza dei dati crittografati, specialmente quando si tratta di proteggere le password degli utenti.
- Autore articolo
- Ultimi articoli

Iasmin Prati ha raggiunto il suo quarto di secolo, e il suo CV sembra una mappa concettuale. Cosa c’è in comune a tutte le sue attività? La sensibilizzazione per la libertà d’espressione e la particolare attenzione alle tematiche etiche.