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.