Cos'è il sale nell'hash di una password Linux e perché è importante?

Ultimo aggiornamento: 04/12/2025
Autore: Isaac
  • Il sale è una stringa casuale che viene aggiunta alla password prima dell'hash per ottenere hash univoci per utente.
  • Linux Memorizza hash, salt e algoritmo in /etc/shadow, rafforzando la sicurezza contro gli attacchi ai dizionari e alle tabelle rainbow.
  • Le buone pratiche richiedono sali lunghi, casuali e univoci, insieme a robusti algoritmi hash e database ben protetto.
  • Il salting delle password dovrebbe essere integrato in politiche di sicurezza più ampie che includano password complesse, MFA e gestori di password.

sale nell'hash della password in Linux

Se lavori con sistemi GNU/Linux o sei semplicemente preoccupato per la sicurezza dei tuoi account, probabilmente hai sentito parlare di sale nell'hash della passwordÈ uno di quei concetti di cui si parla molto, ma che spesso viene compreso solo a metà: sembra tecnico, ma in realtà fa la differenza tra un sistema facile da violare e uno molto più resistente agli attacchi.

In breve, il sale è un elemento chiave per rendere imprevedibili gli hash delle passwordFunziona aggiungendo dati casuali prima di applicare l'algoritmo di hash, in modo che, anche se due utenti hanno la stessa password, il risultato memorizzato nel database sarà diverso. Da qui, l'implementazione specifica in Linux, la sua relazione con /etc/shadow, strumenti come mkpasswd e le moderne best practice di sicurezza sono un mondo intero che esploreremo in dettaglio.

Cos'è esattamente il sale in un hash di password?

definizione di sale nell'hash della password

In crittografia, un sale (sale) è un stringa casuale di caratteri che viene aggiunto alla password di un utente prima di applicare una funzione hash. L'obiettivo è che l'hash risultante sia univoco anche se la password in chiaro è la stessa per più utenti.

Quando un utente crea o modifica la propria password, il sistema genera un sale casualeLo combina con la password (prima, dopo o in un formato specifico a seconda dello schema) e applica un algoritmo hash a quella combinazione, come SHA-256 o SHA-512La password non viene memorizzata nel database, ma piuttosto hash di (password + sale)e nella maggior parte degli schemi anche il sale stesso viene memorizzato insieme all'hash.

Questa tecnica rende molti dei tecniche di attacco basate su hash precalcolati, come le tabelle rainbow, e complica notevolmente gli attacchi a dizionario e a forza bruta su larga scala. Un aggressore non può più sfruttare il fatto che più utenti condividano la stessa password, perché ognuno avrà un hash diverso.

È importante capire che il sale non è di per sé un segreto: Non è una password o una chiave privataLa sua funzione è quella di introdurre casualità e unicità nel processo di hashing. La sicurezza dipende ancora dall'utilizzo password complesse y algoritmi hash adatti, preferibilmente progettato specificamente per le password (come bcrypt, scrypt, Argon2), sebbene molti sistemi Linux classici utilizzino varianti di SHA-256 o SHA-512.

Come funziona il password salting passo dopo passo

Come funziona il salting delle password

Il processo di salatura può essere riassunto in una serie di passaggi abbastanza semplici, ma con un impatto enorme sulla sicurezza:

  Come rilevare processi dannosi con Process Explorer e VirusTotal

Innanzitutto, quando un utente si registra o modifica la propria password, il sistema genera un sale unico e casuale per quella credenziale. Tale sale è solitamente di lunghezza sufficiente (ad esempio, 16 byte o più) e viene ottenuto da un generatore di numeri casuali crittograficamente sicuro.

Successivamente, la password scelta dall'utente viene combinata con quel sale per formare un catena intermediaQuesta combinazione può essere semplice come concatenare salt + password, oppure può avere un formato più complesso definito dallo schema hash. L'importante è che ogni utente ottenga una combinazione diversa.

Poi, un algoritmo hash unidirezionaleIl risultato è una stringa apparentemente casuale, l'hash, di lunghezza fissa, che verrà memorizzata nel database insieme al sale. Nei sistemi moderni, si stanno cercando algoritmi che producano uscite lunghe e complesseCiò aumenta lo spazio di ricerca e rende più costosi gli attacchi brute-force.

Infine, quando l'utente effettua l'accesso, il sistema recupera nuovamente la password inserita. sale associato Dal database, ripete esattamente lo stesso processo di combinazione e hashing e confronta il risultato con l'hash memorizzato. Se corrispondono, sa che la password è corretta senza dover conoscere il testo in chiaro.

Questo meccanismo garantisce che anche se il database viene divulgato, l'aggressore vedrà solo hash individuali con i propri saliInvece di un set di hash comparabili, fermare un attacco non è una magia, ma diventa decisamente più costoso dal punto di vista computazionale.

Vantaggi dell'utilizzo del sale negli hash delle password

Vantaggi dell'utilizzo del sale nelle password

Il motivo principale per cui si usa la salatura è che rafforza la sicurezza delle password memorizzate contro un'ampia varietà di attacchi. Ma vale la pena di descriverne i vantaggi specifici.

In primo luogo, la salatura fornisce resistenza agli attacchi del dizionarioSenza il sale, un aggressore può preparare un enorme elenco di password comuni e dei relativi hash e semplicemente confrontarli con il database rubato. Con un sale univoco per utente, quegli hash precalcolati diventano inutili, perché ogni combinazione password + sale genera un valore diverso.

In secondo luogo, l'uso del sale riduce l'efficacia del tavoli arcobalenoSi tratta semplicemente di database precalcolati di hash per password comuni, per accelerarne il recupero. Ancora una volta, poiché il risultato dipende dal salt specifico, queste tabelle progettate per hash non salati diventano inutili o, come minimo, altamente inefficienti.

Un altro chiaro vantaggio è che migliora la privacy in caso di fuga di notizieAnche se un intruso riuscisse ad accedere alla tabella utenti con il suo hash e il suo salt, non sarebbe in grado di identificare rapidamente chi ha la stessa password di altri o di lanciare facilmente attacchi di massa. Ogni account richiede attenzione individuale, il che di solito è poco pratico su larga scala.

  Attenzione alla nuova truffa di WhatsApp: Bizum e videochiamate per rubare account e soldi

Inoltre, la salatura aggiunge complessità al attacchi di forza brutaInvece di poter testare una password candidata su tutti gli hash contemporaneamente, l'attaccante è costretto a considerare il salt di ciascun utente, moltiplicando il carico di lavoro totale. Se a questo si aggiunge un algoritmo di hashing lento e parametrizzabile (come bcrypt o Argon2), il costo dell'attacco aumenta ulteriormente.

Infine, il salting è una tecnica che si adatta bene all'evoluzione tecnologica. Anche con il miglioramento delle apparecchiature informatiche e l'emergere di nuovi attacchi, la combinazione di hashish robusto e sale unico Mantiene un livello di difficoltà elevato e scalabile: è possibile aumentare la lunghezza del sale, rafforzare l'algoritmo, aumentare il costo computazionale, ecc.

Come Linux implementa il salting delle password (/etc/shadow)

Nei sistemi Linux e altre varianti *NIX, le password utente non vengono memorizzate in /etc/passwd, ma nel file / etc / shadowQuesto file, accessibile solo al superutente, memorizza gli hash delle password insieme a informazioni aggiuntive ed è dove si vede chiaramente l'uso del salt e dell'algoritmo hash.

Le righe in /etc/shadow hanno una struttura simile a:

utente:$id$sal$hash:campi_aggiuntivi…

Il simbolo $ Separare le diverse parti. La prima parte dopo il nome utente indica il tipo di algoritmo utilizzato. Ad esempio, $ $ 1 di solito rappresenta MD5, $ $ 5 SHA-256 e $ $ 6 SHA-512, che è l'algoritmo più comune nelle distribuzioni moderne perché offre maggiore sicurezza rispetto ai vecchi schemi basati su DES o MD5.

Dopo che appare l'identificatore dell'algoritmo sale poi il hash risultanteTutto questo avviene all'interno dello stesso campo. Quando una password viene convalidata, il sistema legge quell'identificatore, il sale, applica l'algoritmo corrispondente alla password inserita e confronta l'hash calcolato con quello memorizzato.

Se vuoi controllare rapidamente quali utenti hanno password crittografate e quale algoritmo viene utilizzato, puoi usare un comando come grep '\$' /etc/shadowIn questo contesto, il simbolo del dollaro ($) viene utilizzato per individuare le righe con hash nel formato moderno. Il simbolo deve essere preceduto da una barra rovesciata perché nelle espressioni regolari indica "fine riga".

Gli account senza password o bloccati solitamente visualizzano un valore come questo in quel campo. ! o * invece di un hash con dollari, a indicare che non può essere autenticato con una password standard. Questa struttura chiarisce una cosa: Linux integra la salatura nel suo formato di immagazzinamento password nativamente.

Differenza tra hashing e salting delle password

È importante distinguere chiaramente due concetti che a volte vengono confusi: hashing y salaturaL'hashing delle password è il processo mediante il quale una password viene trasformata in un valore irriconoscibile utilizzando un algoritmo unidirezionale. Il server non ha mai bisogno di conoscere la password originale, ma solo di verificare che l'utente conosca la password corretta, poiché produce lo stesso hash.

  Cos'è WINUX: Linux con un'anima libera e l'aspetto di Windows

Il problema è che se due password sono identiche, Anche l'hashish non salato sarà identicoCiò consente a un aggressore di confrontare e raggruppare gli utenti in base alla password o di utilizzare tabelle precalcolate. Inoltre, se l'algoritmo di hash è veloce e progettato per l'integrità dei dati (come il semplice SHA-256), diventa più vulnerabile ad attacchi brute-force su larga scala.

La salatura interviene proprio per risolvere questa debolezza: si tratta di aggiungere dati casuali alla password prima di eseguirne l'hashing. Il risultato è che anche se due utenti scelgono "casa" come password, gli hash nel database saranno completamente diversi, perché uno avrà, ad esempio, "casa+7Ko#" e l'altro "casa8p?M" come stringa pre-hash.

Pertanto, l'hashing e il salting non competono, ma piuttosto si completano a vicenda. L'hashing fornisce l' proprietà di unidirezionalità e facilità di verifica; il sale fornisce unicità e resilienza contro attacchi massicciUn'implementazione di archiviazione sicura delle password combina entrambe le tecniche, idealmente utilizzando un algoritmo progettato per questo scopo, con costi configurabili.

Utilizzo del sale in Linux con mkpasswd

Negli ambienti GNU/Linux e altri sistemi UnixUn modo molto pratico per sperimentare la salatura è lo strumento mkpasswdQuesto comando viene utilizzato per generare password crittografate in modo sicuro e viene comunemente integrato nei processi di creazione degli utenti, negli script di amministrazione, ecc.

La sintassi di base di mkpasswd consente di specificare la password da crittografare e una serie di opzioni come il tipo di algoritmo (ad esempio, des, md5, sha-256, sha-512) utilizzando l'opzione -mNei sistemi moderni, la cosa sensata da fare è optare per SHA-512 come minimo, o tramite schemi ancora più robusti se la distribuzione li supporta.

L'opzione particolarmente interessante nel contesto della salatura è -SConsentire aggiungere un sale alla password prima di crittografarla. Se non specificato manualmente, mkpasswd potrebbe generare un sale casuale in ogni esecuzionein modo che, anche utilizzando la stessa password di accesso, l'hash risultante sia ogni volta diverso.

Questo può essere facilmente verificato: se si crittografa "password123" più volte con mkpasswd, utilizzando SHA-512 e un valore salt casuale, si otterranno hash completamente diversi. Tuttavia, se si passa lo stesso valore salt utilizzando -S, l'hash sarà sempre identico, perché la combinazione password + salt non cambia.

Grazie a questo strumento è molto facile Preparare password crittografate con salt per aggiungere ai file di configurazione, gestire manualmente gli utenti o testare il comportamento del salting senza dover programmare nulla.

Cos'è l'igiene digitale?
Articolo correlato:
Igiene digitale: sicurezza, benessere e ordine nella tua vita online