Come si supera il problema del fatto che il sale sia pubblico e conosciuto dall'attaccante? [duplicare]

0

Credo che quando si aggiunge un salt alla password è necessario memorizzare i valori in modo da poter calcolare nuovamente l'hash. Ma cosa succede se l'attaccante ottiene il sale?

Come è possibile aggiungere valore o forza alla password se il sale è noto all'attaccante?

Cosa mi manca?

    
posta kiBytes 26.02.2014 - 14:43
fonte

2 risposte

2

Il problema qui è che la missione di sale non deve essere "segreta", lo scopo è essere unico quindi quando un utente malintenzionato "prova una password" con quel sale noto può solo confrontare il passaggio generato con questo originale hash perché tutte le altre password avranno hash diversi.

Ad esempio:

Considera di non avere sale:

user1:hashpass1

user2:hashpass2

user3:hashpass3

user4:hashpass1

user5:hashpass5

Come puoi vedere, user1 e user4 usano la stessa password perché l'hash generato è identico. Quindi, quando un utente malintenzionato lo trova, può pronunciare una sola parola comune, ad esempio: "coniglio" e confrontare il coniglio con l'intero database di hash delle password. Saprà anche che tutti gli hash identici sono stati generati con la stessa password.

Questo è ottimo per un utente malintenzionato perché ha solo bisogno di hash UNA volta per confrontarlo con l'hash sull'intero database.

D'altra parte, considera la stessa tabella utente salata

user1:salt1:salted1hashpass1

user2:salt2:salted1hashpass2

user3:salt3:salted1hashpass3

user4:salt4:salted4hashpass1

user5:salt5:salted1hashpass5

Ora tutti gli hash delle password sono diversi a causa del sale, anche user1 e user4 che hanno usato la stessa password hanno hash diversi.

Questa è una cattiva notizia per un attaccante che dovrà calcolare la parola coniglio con ogni singolo sale che trova nel database, quindi avrà molto tempo per farlo. E questo è il vero valore aggiunto dal sale.

    
risposta data 26.02.2014 - 14:49
fonte
1

La password salt non è segreta.

Senza sale, se due password sono identiche, gli hash saranno identici due. Significa che se un utente malintenzionato può trovare una password per un utente, sarà anche in grado di determinare quali utenti stanno utilizzando la stessa password confrontando gli hash. Inoltre, quando molti hash sono identici, è ragionevole supporre che sia una password "popolare" che rende questa password un bersaglio per l'attacco al dizionario.

Con un buon sale casuale (ovviamente ogni password deve avere un diverso sale casuale), tutti gli hash sono diversi, anche se la password è identica. Pertanto, se un utente malintenzionato esegue un attacco di dizionario su un database di password, dovrà ripetere lo stesso attacco dall'inizio per tutte le password. Rende l'attacco molto più costoso in termini di tempo e potenza di elaborazione.

    
risposta data 26.02.2014 - 14:56
fonte

Leggi altre domande sui tag