Hashing in un modo: casualità di Salts o unicità globale [duplicato]

4

Per lo stesso input, le funzioni di hash producono sempre lo stesso hash in tutto il mondo.

Questo è il punto chiave dell'utilizzo dell'hash nella verifica della password.

Se l'hash per lo stesso input è lo stesso a livello globale, allora il sale deve essere unico per esso a livello globale. Se i sali sono unici a livello globale, allora come l'hashing è sicuro da usare? Quindi i sali sono unici a livello globale o sono totalmente casuali? Se sono totalmente casuali, come potrebbero ancora produrre lo stesso hash per lo stesso input?

    
posta Sayed Hossain 10.03.2017 - 02:52
fonte

1 risposta

6

Sembra che tu capisca che l'hashing è una funzione crittografica a senso unico. Una stringa hash senza sale utilizzando un algoritmo specifico produrrà sempre lo stesso risultato. Gli hash non sono pensati per essere decifrati, devono essere paragonati a.

Una stringa di password hash in MD5 senza un salt sarà sempre 5f4dcc3b5aa765d61d8327deb882cf99 . Quando l'utente inserisce la propria password per accedere al sito Web super segreto, il relativo valore della password (in questo caso password ) viene sottoposto a hash e confrontato con l'hash esistente nella tabella "utenti" per quell'utente. Se i due hash corrispondono, l'accesso è garantito.

Poiché sappiamo che l'hash di una stringa sarà sempre lo stesso senza sale, una quantità enorme di hash delle stringhe può essere pre-calcolata in quelle che sono chiamate tabelle Rainbow. Se un database viene compromesso e non viene utilizzato sale, è spesso banale (a seconda dell'algoritmo e della complessità della password) determinare la password confrontandola con un hash esistente nella tabella arcobaleno.

Aggiungendo alla stringa una salt saltata in modo casuale e poi eseguendo l'hashing, le cose esponenzialmente più difficili da attaccare all'hash con le tabelle arcobaleno pre-calcolate. Per fare ciò, l'attaccante dovrebbe indovinare quale sarebbe il sale, quindi generare nuovamente le loro tabelle arcobaleno. Questo diventa molto inefficiente e rimuove questo come un'opzione valida per la compromissione della password.

Quindi, se la nostra applicazione web per il mio record utente ha un eccesso di Sup3rS3cr3tS @ l7, quando accedo o cambio la mia password che salt verrà aggiunto alla stringa della password. Il valore che viene quindi sottoposto a hash è Sup3rS3cr3tS@l7password e l'hash MD5 diventa 8e28474b10084728115870bcae270298

I sali NON devono essere usati globalmente - un sale può essere generato casualmente alla creazione dell'account e conservato in una colonna nella tabella degli utenti.

DISCLAIMER Non utilizzare MD5, poiché era puramente a scopo dimostrativo.

    
risposta data 10.03.2017 - 03:27
fonte

Leggi altre domande sui tag