HTTP Digest Authentication: il server memorizza le password in chiaro?

3

Avendo appena terminato il capitolo sull'autenticazione del digest in HTTP - The Definitive Guide , non sono del tutto sicuro ciò che il server memorizza come segreto del client nel suo database:

  • la password in chiaro del client o
  • un hash MD5 della password del client concatenato con lo username e il realm

Nella pagina 287 del libro, si legge

The client and the server both know the secret password

Anche questa risposta afferma che

[digest authentication] makes it necessary to store the passwords at the server in plain or in some equivalent form

Questa risposta indica anche che il server memorizza la password in chiaro:

the server looks up the expected password for the user from its user DB

Tuttavia RFC 2617 contraddice questo (sottolineatura mia):

Normally [what the server stores] might contain pairs consisting of username and H(A1), where H(A1) is the digested value of the username, realm, and password as described above.

La mia domanda è: nel contesto dell'autenticazione digest, il server memorizza la password in chiaro del client o memorizza un hash della password in chiaro (combinato con username e realm)?

Nota: Questa è una domanda teorica, non intendo utilizzare l'autenticazione del digest su HTTP non crittografato e so che MD5 è soggetto agli attacchi di dizionario.

† Con "secret" intendo la stringa che il client combina con un nonce ricevuto dal server e poi hash per inviarlo al server per l'autenticazione.

    
posta Matthias Braun 25.07.2017 - 15:19
fonte

1 risposta

4

Dipende dall'implementazione. L'autenticazione del digest è solo un meccanismo di autenticazione per la comunicazione delle credenziali. Il server riceverà la password in chiaro quando viene impostata la password, ma può scegliere cosa vuole fare con essa in base all'implementazione. Potrebbe archiviarlo in modo reversibile crittografato (in pratica in testo semplice) e confrontarlo con l'hash calcolato su entrambi i lati (non sicuro), oppure potrebbe hash l'hash dell'input dell'utente e verificare che corrisponda a un hash memorizzato che è analogamente sottoposto a hash con nonce a seconda di come il server sta memorizzando la password.

Per un server Windows, dipenderà se il controller di dominio che lo supporta ha le password reversibili attivate o meno.

    
risposta data 25.07.2017 - 15:55
fonte

Leggi altre domande sui tag