La crittografia di SALT con la password dell'utente fornita è più sicura?

18

Sto imparando sulla sicurezza web. Capisco che le password siano state sottoposte a hash con il sale. Perché i sali non sono crittografati con la stessa password dell'utente? Non ti rendi mai più difficile rompere la password?

Generazione

  1. generare sale
  2. crittografalo con AES utilizzando la password dell'utente come chiave
  3. salva il sale crittografato e l'hash

Retrivia

  1. decrypt sale usando la password fornita
  2. hash salt + password
  3. confronta con hash salvato
posta Kevin 05.09.2014 - 07:27
fonte

3 risposte

38

generate salt encrypt it with AES using user's password as key save the encrypted salt and hash

Potresti farlo e sarebbe un sale efficace, ma in realtà non sarebbe più sicuro di un normale sale.

Consideriamo due vettori di attacco:

Collisioni con password

Ovviamente non vogliamo che due utenti con la stessa password abbiano la stessa password con hash. Per evitare ciò usiamo un salt casuale e assumiamo che la probabilità di due utenti con la stessa password e lo stesso sale generato in modo casuale sia effettivamente 0.

Tuttavia, se due utenti hanno la stessa password e coincidono con lo stesso sale, avranno lo stesso hash indipendentemente dal fatto che il sale sia crittografato con la loro password o non sia affatto crittografato. Pertanto, crittografando il sale non lo renderai meno probabile che si verifichi una collisione nel sale . Gli unici fattori che lo rendono meno probabile sono la qualità dei valori casuali usati per il sale e il numero di bit.

Attacchi a forza bruta

Se un utente malintenzionato sta tentando un attacco di forza bruta e hai crittografato il sale, l'unico passaggio in più che devono eseguire è decrittografare il sale memorizzato ogni iterazione e utilizzarlo per produrre l'hash che hanno poi confrontato con la password hash per vedere se hanno una corrispondenza.

Ciò richiede uno sforzo leggermente maggiore per un utente malintenzionato, ma quando si tratta di crittografia, fare qualcosa durare solo due o tre volte di più non è significativo. Se la forzatura bruta di una password richiede 3 giorni invece di 2, non l'hai resa materialmente più sicura. Se stai cercando di creare qualcosa di sicuro, è necessario che impieghi 5000 anni invece di 2 giorni.

Se vuoi rallentare gli attacchi di forza bruta ti conviene ripetere il processo di hashing decine di migliaia di volte o usare una funzione di hash che è specificatamente progettata per essere computazionalmente lenta.

    
risposta data 05.09.2014 - 08:02
fonte
22

I sali non sono intesi per essere segreti: il loro unico requisito è essere globalmente unici.

Finché non sei più esperto, non cercare di essere intelligente con la crittografia. Utilizza soluzioni pronte all'uso come bcrypt o scrypt e lascia i dettagli ai professionisti. La crittografia è difficile da correggere e aggiungere più e / o complessità non necessaria aumenta solo la probabilità di commettere un errore e ridurre la sicurezza.

    
risposta data 05.09.2014 - 07:30
fonte
0

Come dice thexacre, non impedisce i metodi di forza bruta, perché l'ipotesi può essere usata per decifrare l'hash.

Tuttavia, se si scopre di essere (vale a dire la scoperta futura) una vulnerabilità sistematica nell'hash utilizzato, allora un sale criptato potrebbe rivelarsi prezioso. A seconda della natura dell'attacco, tuttavia, potrebbe essere possibile derivare sia salt che password con la stessa facilità con cui si ottiene la password.

    
risposta data 08.09.2014 - 05:07
fonte

Leggi altre domande sui tag