Numerosos suscriptores de una-al-dia nos han pedido que ampliáramos
la información de cómo las nuevas especificaciones http/1.1 podían
evitar el robo de contraseñas. Por este motivo, HispaSecos ofrece
una completa explicación sobre la utilización de los algoritmos de
autentificación.
Como ya os comunicabamos, la Internet Engineering Task Force ha
publicado la última versión de las especificaciones http/1.1 en el
RFC 2617, que incluye interesantes novedades en el apartado referente
a Message Digest Authentication. El algoritmo MD5 permite, partiendo
de una entrada de tamaño arbitrario, generar una firma digital de 128
bits representados por 32 caracteres ASCII. Se trata de una función
hash unidireccional, es decir, en un único sentido o que presenta
grandes dificultades para su inversión.
El uso de esta tecnología permite proteger los servidores web con el
algoritmo MD5 de la RSA. Asegurando de esta forma que las passwords,
que pueden ser robadas por los hackers mediante sniffers, no sean
descifradas. Esto se consigue gracias a que el cliente no envía al
servidor la password, sino el hash resultado de combinar la contraseña
con un número aleatorio enviado anteriormente por el servidor. El
proceso completo sería el siguiente:
1. El cliente requiere el acceso a un objeto con acceso protegido que
exige el uso de usuario y password para autentificarse.
2. El servidor envía el desafío al navegador, consistente en un número
aleatorio. La implementación de esta generación puede variar, por
norma general se suele utilizar como variables el tiempo del sistema
cuando se realiza la operación, y/o la dirección IP del solicitante.
Esta forma de operar permite al servidor limitar el tiempo de validez
de un desafío y poner más trabas a un intento de reutilización por
parte de otra IP/usuario. De todos modos, el uso de técnicas como el
spoofing pueden invalidar estas medidas de protección. En estos casos
bastará con indicar al sistema que rechace por defecto cualquier
desafío ya utilizado anteriormente.
3. El usuario introduce la password en el navegador, éste la combina
con el número aleatorio enviado por el servidor, el metodo HTTP y
petición. Por último envía el resultado de aplicarle la función hash,
en ningún momento la password viaja por la Red.
4. El servidor, que conoce el número aleatorio y la password correcta,
realiza la misma función hash, y al compararla con el valor que ha
enviado el usuario determina si es correcta, en caso afirmativo
concede los permisos necesarios.
Esta forma de operar supone un gran avance frente a http/1.0, donde se
incluían especificaciones de un esquema básico de autentificación, a
todas luces insuficiente, ya que el nombre de usuario y su password
viajaban en texto claro a través de la Red. La solución hasta el
momento, para dotar de una mayor seguridad a los sistemas, ha
consistido en encapsular este esquema bajo la utilización de SSL
(Secure Sockets Layer).
El nuevo sistema adoptado por http/1.1 no intenta, en ningún caso,
ser la respuesta completa a los problemas de seguridad que conlleva
la World Wide Web. Así, y a diferencia de otras soluciones, el uso
de este algoritmo no proporciona cifrado de los contenidos. El fin
que persigue es el dotar de un metodo de autentificación que corrija
las graves deficiencias de su sucesor. Aun así, tampoco está libre de
diversos ataques que pueden llegar a vulnerarlo, no obstante, no deja
de ser un adelanto en pro de la seguridad en la Web.
Deja una respuesta