L'hashing lato client aggiunge qualche beneficio qui?

0

La mia situazione è questa:

  • Le credenziali dell'utente sono memorizzate sul server, bcrypt, hash casuali.
  • Sto progettando un'API REST, quindi mi piacerebbe mantenerlo quanto meno stateless possibile!
  • Il client è un'app per Android / iPhone.
  • Tutte le comunicazioni vengono eseguite su HTTPS con il TLS più recente

Ecco gli scenari in cui devo trasmettere una password sul filo:

  • Accesso utente
  • L'utente cambia la sua password (richiede la vecchia password per conferma)
  • L'utente cambia la sua email (richiede la password corrente per conferma)

In tutti questi casi, mi chiedo se ci saranno ulteriori vantaggi per la sicurezza in aggiunta all'hashing / crittografia della password sul lato client, prima di inviarlo tramite HTTPS al server.

Su una nota correlata, dal momento che le password sono memorizzate come hash sul server, come potrei anche implementare un ulteriore schema di hashing / crittografia lato client che restituisce una qualche forma della password originale sul server, così posso confrontarlo con l'hash memorizzato?

    
posta Lukas Knuth 26.01.2018 - 11:05
fonte

1 risposta

2

Quando si hash password sul client, il segreto condiviso tra client e server non è più la password in chiaro, ma l'hash della password in chiaro. La tua password non è più monkey , la tua password ora è $2a$04$RuNMmxnNakaesRjxjI3IAO70b2zK8lb5eRLb./huDLJ0OkWC0ikGm (bcrypt hash di "monkey"). Il server eseguirà nuovamente l'hash di questo hash e lo confronterà con l'hash hash già presente nel database per quell'account utente.

Quindi chiunque riesca in qualche modo a ottenere l'hash calcolato dal cliente può compromettere il tuo account utente.

L'unico vantaggio che si ha in questo schema è che il server è mai consapevole della password cleartext dell'utente, nemmeno in memoria. Ciò rende impossibile che il server rubi le password in chiaro, anche se aveva intenzioni malevole.

Tieni presente che questo schema richiede che il client utilizzi sempre lo stesso sale per l'hashing della stessa password. In caso contrario, l'hash sul lato server non produrrà lo stesso risultato. Ma puoi usare diversi sali su client diversi e puoi cambiare il sale quando cambi la password di cleartext.

    
risposta data 26.01.2018 - 11:12
fonte

Leggi altre domande sui tag