Digest access authentication
Digest access authentication es uno de los métodos usados en servidores web para negociar credenciales, tal como nombre de usuario y contraseña, desde el navegador web. El segundo mecanismo es autentificación HTTP básica. El método «Digest access authentication» es usado para confirmar la identidad de un usuario antes servir información sensible, como el historial de transacciones de un banco. Se aplica una función hash a la contraseña antes de ser enviada sobre la red, lo que resulta más seguro que enviarla en texto plano como en la autenticación básica.
La «HTTP digest authentication» fue diseñada para ser más segura que los esquemas «digest authentication» tradicionales, es, por ejemplo "significativamente más fuerte que CRAM-MD5" (RFC 2617). Algunas de las fortalezas en seguridad de «HTTP digest authenticate» son:
- La contraseña no es usada directamente en el «digest», sino HA1 = MD5 (username:realm:password). Esto permite más implementaciones (ejemplo, JBoss) para guardar HA1 en lugar que la contraseña en texto pano.
- El «Client nonce» fue introducido en RFC 2671, con lo que se previene que el cliente ejecute ataques «choosen-plaintext attacks» como «rainbow tables», que sí amenazan a los esquemas «digest authentication».
- El «Server nonce» permite contener marcas de tiempo. Por lo tanto el servidor puede inspeccionar los «nonce attributes» enviados por los clientes previniendo ataques de replay.
- El servidor también puede mantener una lista de problemas recientes para ser usados en los «server nonce values» previniendo el uso reiterado.