I nostri utenti accedono con nome utente / password e hanno un cookie che consente loro di rimanere loggati. I nostri utenti sono tenuti a eseguire versioni aggiornate di JS.
Supponendo che qualcuno stacchi il nostro database a un certo punto,
È una buona idea ridurre l'entropia delle nostre password memorizzate facendo in modo che gli utenti eseguano una prova ragionevole dell'attività di lavoro al momento del login e invialo come password e aumenti la difficoltà nel corso degli anni?
Che cosa fa:
- proteggere gli utenti dall'avere le loro password deboli incrinate e associate alle loro identità online
Cosa non funziona:
- fornire un codice di sessione
- fornire protezione DDoS
- fornire qualsiasi altra sicurezza del server
registrazione / login clientide:
h = password
d = "0000f"
do:
h = hash (h + username + salt)
while (h > d)
send("login", username, h)
login serveride:
d = "0000f"
listen("login", username, h)
if h > d:
user = database.get(username)
if user.pass == h:
send("accepted", true)
session.user = user
login client parte 2:
listen("accepted", accepted)
if accepted:
set cookie("user", user)
set cookie("h", h)
Il vantaggio di questo è che l'utente non deve reinviare la propria password per aggiornare la difficoltà.
Ho implementato questo protocollo, ma non l'ho visto da nessun'altra parte. E la prima legge della criptodinamica è "Non farai mai rotolare te stesso".
Se funziona, mi piacerebbe vedere questo incorporato in un certificato per mostrare all'utente che il server memorizza i segreti dell'utente in modo responsabile.