Disclaimer: This is a personal web page. Contents written here do not represent the position of my employer.

Sunday, May 28, 2006

 

Man-in-the-middle authentication

Con este concepto tan psicódelico he querido describir la típica situación que se da cuando quieres que un conocido mire algo por ti en un sistema en el que necesitas autenticarte pero al que no tienes acceso físicamente, y por el contrario el conocido sí tiene. Lo ideal para este tipo de cosas son las "OnceTimePassword", pero si no te has preparado el tinglado para esto, ¿le dirías tu contraseña?

Esto precisamente me pasó ayer, cuando necesitaba mirar mi correo electrónico pero el ADSL no me funcionaba en casa. La solución pasaba por hacerlo a través de mi hermano, mediante llamada teléfonica. Siempre da un poco de reparo decir tu contraseña a alguien, aunque sea un familiar, y sobre todo cuando puede ser fácil de recordar y, por más que esta persona no quisiera, nunca podría evitar acordarse. Además a mí me ocurre que me caso con las contraseñas, tengo tres o cuatro que uso en bastantes sitios, por lo que no me sería nada fácil deshacerme de una de ellas.

Dándole vueltas y más vueltas, encontré una especie de solución. Pero sólo funciona si confías lo suficientemente en la persona para saber que no te engañaría, porque has de confiar en que al dictársela mediante el método que te voy a exponer, él no la estará escribiendo en un lugar intermedio para poder acceder a ella posteriormente (normalmente usará la casilla ofuscada donde meter la contraseña).

Y lo describiré con un breve ejemplo. Podrías dictárle tu contraseña de este modo:

¿Habrías deducido que este conjunto de instrucciones dan como resultado la contraseña 'pepito'?

Jejeje, hombre, es un trabajo un poco engorroso, pero podríamos programar una pequeña aplicación que generase aleatoriamente toda esta basurilla para una contraseña determinada, y así ahorrarnos el trabajo de inventarnos todos esos rodeos para evitar que el "hombre de en medio" descubra el término que le estamos indicando.






Al hilo de este tema, muchas veces me pongo a pensar sobre los típicos problemas de seguridad que puede suponer usar contraseñas desde ordenadores ajenos o públicos. Son ordenadores a los que no tenemos acceso y que perfectamente pueden tener instalados los siguientes mecanismos para la captura de contraseñas:
  1. Sistemas espía, que envían lo que estás viendo por la pantalla a un buffer o a otra entidad de la red que puede estar observando.
  2. Key loggers, que monitorizan todo lo que tecleamos y lo deja registrado.
  3. Sniffers, que monitorizan todo el tráfico de la red.


Contra los primeros, nos sirve lo que ya actualmente tenemos en la mayoría de los sitios: las casillas ofuscadas para contraseñas, que colocan asteriscos o puntos en lugar de la contraseña, a medida que la escribimos.

Contra los segundos, empiezan a aparecer sistemas, como el de CajaMadrid, que te obliga a meter tu código con el ratón en lugar de con el teclado. Esta técnica puede estar bien pero lleva asociados otros problemas:


Los del tercer tipo se suele proteger uno de ellos mediante el cifrado (usando HTTPS en lugar de HTTP, por ejemplo). El problema es que quien tiene que implementar esta protección es el administrador del servicio, y no el usuario (a no ser que seamos lo suficientemente avispados y no acomodaticios como para usar una de estas técnicas).

Pensando un poquito sobre todo esto, se me ha ocurrido otro sistema que podría emplearse para protegerse de los tres mecanismos a la vez, pero tendría que implementarse desde el servidor/administrador, no desde la parte cliente. El sistema consistiría en, cada vez que se va a realizar el desafío (preguntar el secreto compartido, la contraseña) al usuario, preguntarle únicamente una parte de la contraseña, por ejemplo: las tres primeras letras, las dos últimas, y el número de letras en total que tiene la contraseña. En cada autenticación se tendrían que preguntar cosas distintas sobre la contraseña, y para que el sistema fuera absolutamente óptimo, debería garantizarse que, aunque se tuviera acceso a todas las preguntas y respuestas que hubiera hecho un usuario en la autenticación, no pudiera deducirse ni calcularse el secreto compartido en la práctica.

Así se evitan ataques man-in-the-middle, key-loggers, y demás. El único inconveniente que tiene es, como es habitual, que el proceso de autenticación se vuelve ligeramente más complejo.

Labels: ,


Comments:
MO MA, ¿EN SERIO CREES PODER PROTEGER TUS COTRASEÑAS DE ESE MODO?
 
Sólo para el caso que he mencionado. Repito por si no lo leíste: Pero sólo funciona si confías lo suficientemente en la persona para saber que no te engañaría, porque has de confiar en que al dictársela mediante el método que te voy a exponer, él no la estará escribiendo en un lugar intermedio para poder acceder a ella posteriormente
 
Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?

Categories

RSS of the category Gnome
RSS of the category Mono
RSS of the category C#
RSS of the category Programming
RSS of the category Mozilla
RSS of the category Web Development
RSS of the category Security
RSS of the category Open Source
RSS of the category Engineering
RSS of the category Misc
RSS of the category Politics

Contact with me:
aaragonesNOSPAMes@gnNOSPAMome.org

Archive
My Photo
Name:
Location: Hong Kong, Hong Kong
Follow me on Twitter