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 + ...)
).