Hoy mientras estaba en clase medio grogi (probablemente por los efectos de algo de fiebre) ha llegado a mis oÃdos algo interesante: CHAP.
El protocolo de autentificación CHAP (o protocolo de autentificación por desafÃo) sirve para auntentificarse frente a un servidor, isp, … La principal ventaja frente al modelo tradicional (envÃo de nombre de usuario como texto en plano ) es que no necesita enviar la contraseña del usuario para realizar la autentificación.

Este protocolo no es para nada nuevo, es usado en PPP desde principio de los 90, funciona de la siguiente forma:
- Tanto el servidor como el cliente conocen la contraseña.
- El cliente envÃa una petición al servidor, donde incluye el nombre de usuario.
- El servidor recibe el nombre de usuario, genera una cadena aleatoria de caracteres, la envÃa al cliente, almacena temporalmente el nombre de usuario, codifica la cadena usando algún algoritmo de cifrado (como md5 o sha1), la almacena temporalmente y permanece a la espera de respuesta por parte del cliente.
- El cliente recibe la cadena aleatoria y la codifica usando el mismo algoritmo de cifrado empleado por el servidor (las cadenas obtenidas en el servidor deben ser idénticas) y la envÃa al servidor.
- El servidor recibe la petición del cliente, compara la cadena que le envÃa con la que tenÃa almacenada de antes, sin son iguales se concede permiso al usuario (usuario autentificado), en caso contrario vuelve a generar una cadena aleatoria y enviarla al cliente, repitiendo el proceso.
- En caso de que el servidor no reciba respuesta del cliente, vuelve a generar una cadena aleatoria y enviarla al cliente repitiendo el proceso.
El protocolo es bastante sencillo y como veis no requiere que se envÃe la contraseña en ningún momento.
Aunque obviamente es más seguro que enviar la contraseña en plano, tampoco es perfecto. Si alguien consigue la cadena aleatoria que envÃa el servidor al cliente (mediante snffing por ejemplo), conoce el algoritmo de cifrado empleado y el nombre de usuario no necesitará la contraseña para autentificarse.
Solo tiene que codificar la cadena usando el algoritmo y enviarla al servidor obteniendo acceso. Tendrá que repetir el proceso cada vez quiera autentificarse ya que las cadenas son aleatorias.
Una aplicación interesante podrÃa ser su uso en páginas web para autentificar usuarios. A no ser que se emplee https el nombre de usuario y contraseña viajaran como texto en plano por la red de redes.
Hasta ahora implementar CHAP en html y javascript era algo pesado, pero actualmente u gracias a Ajax podrÃa implementarse de manea totalmente transparente al usuario.
La programación Ajax está aún fuera de mi alcance, pero si alguien quire ya sabe por donde empezar ;)



No user commented in " El protocolo de autentificación CHAP "
Follow-up comment rss or Leave a TrackbackResponder