Scelte di hash del gestore di password (scrypt + sha256)

4

Informazioni di base: Password principale è un gestore di password senza stato. Determina (deterministicamente) una password usando una funzione di hash, a seconda della tua password principale e del nome del sito (anche altri campi, ma questi non sono importanti per questa domanda).

Quindi, se ricordi la tua password principale e il nome del sito (e alcuni piccoli dettagli) di quanto puoi generare la password per l'account del tuo sito ogni volta, senza memorizzare le password (crittografate o meno) da qualche parte sul tuo computer (che necessita di backup) o nel cloud (il che significa che devi fidarti di una terza parte aggiuntiva).

Genera una password in due parti:

  • Parte 1: scrypt_key = scrypt(password + some salts + other details) .
  • Parte 2: sha256(scrypt_key + site name + other details) .

Questa ultima parte viene quindi utilizzata (piuttosto stampata, non binario) per la password di un sito.

Per la versione dettagliata, vedi la pagina sull'algoritmo: link .

La mia domanda effettiva è quindi: quali sono le conseguenze dell'uso di sha piuttosto che scrypt per la seconda parte? Ovviamente sanno dell'esistenza di scrypt, quindi perché non l'hanno usato anche per la seconda parte?

L'unica ragione per cui posso pensare perché usare sha per la seconda parte è che se un attaccante trova una collisione, allora la collisione trovata non è probabilmente quella di cui ha bisogno (per esempio sha256("abcdef") è uguale per caso a sha256(scrypt_key + ...) ).

    
posta Matty 13.11.2015 - 15:10
fonte

2 risposte

2

Sono necessarie funzioni lente di derivazione della chiave come SCrypt, BCrypt o PBKDF2, per proteggere password relativamente brevi e deboli o per generare una chiave da tali password ( P assword- B ased- K ey- D erivation- F unzione). Gli utenti devono ricordare le loro password, quindi in genere non sono molto forti, ecco perché SCrypt è stato scelto per cancellare la password dell'utente.

Dall'altro lato, l'hashing con un veloce SHA-256 è assolutamente sicuro per "password" molto potenti. La chiave generata con SCrypt è una password / chiave così strong, quindi non c'è motivo di usare nuovamente SCrypt.

Alla fine si deve decidere quanto tempo può essere speso per calcolare l'hash, diciamo che sei disposto a spendere 1 secondo della potenza della CPU. È una buona decisione dedicare il maggior tempo possibile al primo hash di SCrypt e solo poche volte al secondo hash. Altrimenti indeboliresti l'hash di SCrypt, perché hai perso tempo per il secondo hash.

    
risposta data 13.11.2015 - 21:09
fonte
0

scrypt ha bisogno di molta più potenza di SHA2 in quanto ha bisogno di potenza di calcolo e memoria. La chiave master è protetta usando scrypt perché è molto più lenta. Ma le password per i siti Web vengono sottoposte a hash utilizzando la chiave di crittografia avanzata ma questa volta viene utilizzato SHA256 perché è più veloce. La chiave scrypt viene utilizzata per l'hash e crea una base strong per l'hash.

L'hashing delle password del sito web con scrypt di nuovo usando la chiave scrypt potrebbe richiedere troppo tempo, il che non è necessario qui.

La seconda parte è per rendere gli attacchi hardware bruteforce più difficili, ma allo stesso tempo ottenere buone prestazioni e sicurezza.

    
risposta data 13.11.2015 - 18:21
fonte

Leggi altre domande sui tag