Digest access authentication

Da Wikipedia, l'enciclopedia libera.

Digest access authentication è un metodo concordato che un web server può utilizzare per negoziare le credenziali di un utente di un browser. Applica una funzione hash alla password prima di inviarla sulla rete. Questo meccanismo è più sicuro dell'invio mediante basic access authentication, che invia la password in testo semplice.

Descrizione[modifica | modifica wikitesto]

Digest access authentication è stata specificata originariamentenel RFC 2069 (An Extension to HTTP: Digest Access Authentication). RFC 2069 specifica sommariamente uno schema di autenticazione tradizionale in cui la sicurezza è garantita da un nonce generato dal server. La risposta all'autenticazione è formata così (HA1, HA2, A1, A2 sono variabili di tipo stringa):

\mathrm{HA1} = \mathrm{MD5}\Big(\mathrm{A1}\Big) = \mathrm{MD5}\Big( \mathrm{username} : \mathrm{realm} : \mathrm{password} \Big)
\mathrm{HA2} = \mathrm{MD5}\Big(\mathrm{A2}\Big) = \mathrm{MD5}\Big( \mathrm{method} : \mathrm{digestURI} \Big)
\mathrm{risposta} = \mathrm{MD5}\Big( \mathrm{HA1} : \mathrm{nonce} : \mathrm{HA2} \Big)

RFC 2069 è stato sostituito in seguito da RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication). RFC 2617 è intruduce una serie di miglioramenti opzionali di sicurezza all'autenticazione digest; "quality of protection" (qop), contatore nonce incrementato dal client e un nonce generato casualmente dal client.

Se l'algoritmo di hash è MD5 oppure non è specificato, allora HA1 è:

\mathrm{HA1} = \mathrm{MD5}\Big(\mathrm{A1}\Big) = \mathrm{MD5}\Big( \mathrm{username} : \mathrm{realm} : \mathrm{password} \Big)

Se l'algorirmo di hash è "MD5-sess" allora HA1 è:

\mathrm{HA1} = \mathrm{MD5}\Big(\mathrm{A1}\Big) = \mathrm{MD5}\Big(\mathrm{MD5}\Big( \mathrm{username} : \mathrm{realm} : \mathrm{password} \Big) : \mathrm{nonce} : \mathrm{cnonce} \Big)

Se il valore del qop è "auth" oppure non è specificato, allora HA2 è:

\mathrm{HA2} = \mathrm{MD5}\Big(\mathrm{A2}\Big) = \mathrm{MD5}\Big( \mathrm{method} : \mathrm{digestURI} \Big)

Se il valore del qop è "auth-int", allora HA2 è:

\mathrm{HA2} = \mathrm{MD5}\Big(\mathrm{A2}\Big) = \mathrm{MD5}\Big( \mathrm{method} : \mathrm{digestURI} : \mathrm {MD5}(entityBody)\Big)

Se il valore di qop è "auth" o "auth-int", allora il calcolo della risposta è:

\mathrm{risposta} = \mathrm{MD5}\Big( \mathrm{HA1} : \mathrm{nonce} : \mathrm{nonceCount} : \mathrm{clientNonce} : \mathrm{qop} : \mathrm{HA2} \Big)

Se qop non è specificato, allora il calcolo della risposta è:

\mathrm{risposta} = \mathrm{MD5}\Big( \mathrm{HA1} : \mathrm{nonce} : \mathrm{HA2} \Big)
informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica