Obbligatorio: non lanciare la tua crittografia ....
In base ai tuoi commenti, non stai chiedendo alcun algoritmo specifico, ma se la modifica dell'hash input da password
a email+password
fornisce una sicurezza aggiuntiva.
Email inviata: [email protected]
con password My @wesome pa$$w0rd FTW YO!!!!
- Quindi il tuo input nell'algoritmo hash ora è più lungo e meno probabile che sia in una tabella arcobaleno e richiederà più tempo per ottenere il testo in chiaro
- Come hai notato in un commento, potresti utilizzare l'email come un valore salt, ma probabilmente meglio usare un valore casuale e qui
- A seconda di alcuni dettagli di implementazione, l'indirizzo email potrebbe ancora essere esposto; se non hai bisogno dell'indirizzo email e non utilizzerai mai il valore altrove, perché richiedere un indirizzo email invece di un solo nome utente. Potresti anche incorrere in problemi con la reimpostazione della password o la gestione degli utenti.
Make the server client authentication more efficient.
Perché è più efficiente? Un'implementazione Javascript nel browser potrebbe essere piuttosto lenta e potrebbe essere soggetta a compromessi poiché si ha lo stesso livello di sicurezza nel browser dell'utente (non sotto il proprio controllo) come sul proprio server. Vuoi che il tuo hashing sia lento in generale, non veloce quando si tratta di password.
Inoltre, per quest'ultima parte:
Store the same hash on server and on client (only calculate the hash once on each side)
Sembra che tu voglia ridurre il carico del server calcolando l'hash sul client e inviandolo al server? Quindi nel tuo DB cerchi quel valore con il valore nel database? Ciò potrebbe non fare ciò che si pensa a seconda dell'implementazione, ad esempio l'invio dell'hash sulla rete per essere confrontato con il valore nel DB; se il DB è compromesso, l'attaccante ha il valore di input, quindi è come fare un testo in chiaro. Si desidera impedire a qualcuno che ottiene il DB di poter accedere tramite il canale legit. Controlla " Sfida impegnativa: client- hashing della password lato e verifica della password sul lato server "