Sto lavorando al mio libro di testo e mi sono imbattuto in questa domanda:
Di seguito è riportato il formato del messaggio per una risposta del browser per accedere a una pagina Web protetta da password utilizzando l'autenticazione del digest HTTP.
GET URI HTTP/1.1
Host: URL
...
Authorization: Digest username="UserName", realm="Realm", nonce="Nonce",
uri="URI", algorithm=MD5, response="Response", qop=QoP, nc=NonceCount,
cnonce="ClientNonce"
In che modo il server convaliderà questa risposta?
Mi sono inventato questo schema:
1. Use UserName and Realm to retrieve D1 =
md5sum(Username:Realm:Password) from the password file.
2. Compute D2 = md5sum(GET:URI).
3. Compute r = md5sum(D1 : Nonce:NonceCount:ClientNonce:QoP:D2).
4. If r == Response, authentication succeeds and return the content of
URI; otherwise authentication fails and return an error code.
È corretto o ci sono dei difetti nel mio metodo?
L'unica cosa che posso pensare è che un utente malintenzionato di Man in the Middle potrebbe dire ai client di utilizzare l'autenticazione di accesso di base perché l'autenticazione digest non fornisce alcun meccanismo ai client per verificare l'identità del server. Potrebbe anche essere vulnerabile agli attacchi di riproduzione, ad esempio se il client può riprodurre il digest dei messaggi creato dalla crittografia, il server consentirà l'accesso al client.