He estado pensando mucho en la seguridad de las contraseñas en estos días, y me he vuelto cada vez más reacio a usar servicios que tienen formularios de inicio de sesión que no están en HTTPS. Mientras estaba investigando la seguridad, jugué un poco con Cain & Abel en mi red local para ver lo fácil que sería ejecutar un ataque de hombre en el medio en sitios que no usan HTTPS. Desafortunadamente, es bastante fácil.
Así que he estado tratando de idear formas de solucionar esto. No es realista esperar que yo, y ciertamente el resto del mundo ignorante de la seguridad, simplemente deje de usar los servicios que no usan HTTPS. Hay demasiados de ellos que no lo hacen.
El plan en el que estoy más interesado ahora utiliza un sistema proxy en una instancia de EC2 para hacer inicios de sesión de forma remota y luego devolver la sesión / cookies seguras. Esencialmente, el flujo se vería así:
- El usuario envía un nombre de usuario / contraseña y cookies de dominio a través de SSL a una instancia de EC2.
- La instancia de EC2 utiliza cookies para imitar la sesión del usuario y envía una solicitud de inicio de sesión.
- La instancia de EC2 devuelve cualquier nueva cookie al usuario, así como cualquier redirección que pueda haber solicitado el servidor de inicio de sesión
- El usuario configura cookies según la respuesta de EC2, y se actualiza (si no hay redirecciones) o redirige a la URL especificada.
La seguridad aquí se basa en el hecho de que las instancias de EC2 están distribuidas y son anónimas, lo que las hace bastante seguras contra los ataques de intermediarios. Ciertamente, todavía hay una posibilidad, pero en mi opinión, esto reduce enormemente los riesgos de enviar contraseñas a sitios que no son SSL.
¿Hay algún agujero de seguridad aquí que no esté viendo? ¿Existe un beneficio real de seguridad al hacer inicios de sesión de esta manera?