En esta serie de artículos quiero presentar un mecanismo de autenticación web sencillo, de la familia challenge-response, que diseñe para el sitio Live! -la idea no es original obviamente-.
Lo más típico en la autenticación web es que el sitio pregunte al usuario por la contraseña. El usuario la ingresa y en el servidor se calcula su digest. Este digest se compara contra el digest guardado en la base de datos y si son iguales, la autenticación es válida.
Este mecanismo es sencillo y no almacena la contraseña en el servidor. Pero puede ser peligroso: la contraseña viaja desde el cliente al servidor en texto plano. Cualquiera que pueda interceptar uno de estos paquetes (a nivel de Internet o de la red interna), podría visualizarla. ¿Puede ser útil este tipo de autenticación? Sí, si se utiliza el protocolo HTTPs (SSL) en la comunicación cliente-servidor.
Supongamos que, habiendo evaluado el impacto y riesgo, llegamos a la conclusión de que HTTPs no es una opción. Lo que debemos hacer es implementar un mecanismo de autenticación que reduzca a un atacante sus posibilidades de éxito. Por ejemplo, que aún sniffeando y registrando todos los paquetes de una conexión, no pueda autenticarse.
