Si incluyo un servicio Olvidé mi contraseña, ¿para qué usar una contraseña?

43

He implementado un servicio de Contraseña Olvidada de la siguiente manera:

  1. El usuario va a la página de inicio de sesión, hace clic en "¿Olvidó la contraseña?"
  2. El usuario recibe un formulario que solicita su dirección de correo electrónico.
  3. El correo electrónico se envía a la dirección dada si está en la base de datos, con un enlace que contiene una cadena (supuestamente) única, generada aleatoriamente, que también se almacena en la base de datos junto con el tiempo solicitado, lo que permite un límite de tiempo para se establecerá en el enlace (que es)
  4. El usuario hace clic en el enlace, se valida y luego se le solicita que proporcione una nueva contraseña.

Eso es bastante estándar, (aunque podría cambiar algunos aspectos de la misma), pero me hizo pensar: dado que las contraseñas buenas se proporcionan / se recuerdan con poca frecuencia, ¿por qué no prescindir totalmente de la contraseña y utilizar el sistema Olvidé mi contraseña?

  1. El usuario va a la página de inicio de sesión, completa la dirección de correo electrónico (¿o quizás un nombre de usuario para estar más seguro?)
  2. El correo electrónico se envía con un enlace. El enlace tiene un límite de tiempo muy corto (< 5 minutos) de validez.
  3. El usuario hace clic en el enlace, están en.

En ambos escenarios, la seguridad del correo electrónico del usuario, ya sea detectada o interrumpida, es la amenaza común, pero en el segundo escenario:

  • El enlace es válido por un tiempo mucho más corto.
  • También es probable que se use más rápido (cualquier tipo de correo electrónico de validación se puede dejar solo, pero si definitivamente quiere iniciar sesión ahora va a usar ese enlace cuando lo reciba).
  • El usuario no puede proporcionar una contraseña de mala calidad.
  • El usuario solo tiene que recordar una contraseña.
  • Una sola cuenta no se puede compartir entre varias personas (a menos que compartan una dirección de correo electrónico).
  • Un ataque automatizado debe ingresar al sistema de correo electrónico y esperar un correo electrónico, lo que probablemente sea más largo que la espera para que la contraseña no se elimine, es decir, mejor que bcrypt.

Me pregunto cuáles son las desventajas? Puedo ver:

  • Irritación del usuario, tal vez por tener que esperar un correo electrónico o iniciar sesión en su correo electrónico también
  • Es probable que abra una nueva ventana del navegador, lo que puede ser irritante si desea organizar pestañas
  • Un usuario podría darse cuenta de que tiene que proteger su cuenta de correo electrónico con una mejor contraseña, cambiarla y luego bloquearse :-)

Es solo un pensamiento.

Gracias a todos los que dieron una respuesta, hay algunos puntos realmente interesantes (y definitivamente válidos) que realmente me han hecho pensar y me han dado más áreas para investigar. D.W. obtiene el tick debido al enlace provisto que brinda mayor información sobre este tipo particular de situación, pero realmente aprecio todas las respuestas dadas.

    
pregunta Iain 17.03.2012 - 04:02
fuente

8 respuestas

31

Eso es razonable. Desde una perspectiva de seguridad, es razonable. Conozco a algunas personas que nunca escriben sus contraseñas para servidores web; solo usan el enlace "olvidé mi contraseña" cada vez que quieren iniciar sesión.

Desde una perspectiva de usabilidad, puede ser un poco desafortunado, porque el correo electrónico no es instantáneo. Los usuarios tendrán que hacer clic en "Enviarme un correo electrónico", luego esperar a que aparezca el correo electrónico y, a continuación, hacer clic en el enlace de su correo electrónico. Desafortunadamente, si los usuarios tienen que esperar unos minutos (o incluso 15 segundos) para que aparezca el correo electrónico, es posible que se molesten, se den por vencidos y hagan otra cosa, o vayan con su competidor.

Una mejora adicional. Es posible mejorar la idea un poco más, para reducir el impacto de la usabilidad. Cuando el usuario hace clic en el enlace del correo electrónico, puede establecer una cookie segura y persistente en su navegador. El resultado es que cuando el usuario hace clic en el enlace, ingresa y no tendrá que pasar por el rigamarole nuevamente en el futuro en esta computadora (a menos que borre sus contraseñas). En futuras visitas desde la misma computadora, el sitio los reconocerá automáticamente y no será necesario hacer clic en ningún inicio de sesión o enlaces.

Esto no es apropiado / suficiente para los servicios de alta seguridad, como la banca en línea, donde debe evitar que el compañero de cuarto del usuario inicie sesión en su cuenta, pero podría estar bien para la mayoría de los sitios web.

Evaluación. Aquí hay un documento de investigación que investiga este enfoque y encuentra que proporciona mayor seguridad contra los ataques evaluados en el documento:

Chris Karlof, J.D. Tygar y David Wagner. Ceremonias condicionadas seguras y un estudio del usuario de una aplicación para la autenticación web . NDSS 2009.

    
respondido por el D.W. 17.03.2012 - 19:48
fuente
9

Esto parece OpenID, pero peor:

Hereda los siguientes problemas de OpenID:

  • Usted ingresa su contraseña maestra cada vez. Si se encuentra en una PC menos confiable, es posible que solo desee iniciar sesión en cuentas de baja seguridad y no en su correo electrónico
  • Su proveedor de correo electrónico notifica cada inicio de sesión

Añade desventajas sobre OpenID:

  • Es más trabajo iniciar sesión
respondido por el CodesInChaos 17.03.2012 - 16:24
fuente
2

Esto me recuerda a los esquemas de autenticación de 2 factores, como los sitios que envían mensajes de texto a un teléfono celular registrado previamente para la autenticación.

Una cosa que realmente no vi arriba es ¿cuál es la ventaja de esto? Ciertamente es más trabajo para el usuario. Incluso los correos electrónicos de conformación del registro inicial molestan a la gente. Vas a contaminar mi bandeja de entrada cada vez que quiero iniciar sesión. Me conecto a mi banca en línea al menos una vez al día todos los días (te desconectan después de 10 minutos). Tendría miles de correos electrónicos de "inicio de sesión" de usted. Y a veces, la entrega de correo electrónico es lenta. Quiere que espere ~ 5 minutos para iniciar sesión en su sitio, porque GMail está tomando un tiempo. El tiempo de actividad de su servicio ahora está vinculado al tiempo de actividad de los servicios de correo en todo el mundo.

El problema con este esquema es que realmente no te da nada. La mayoría de las personas vast usa la misma contraseña para la mayoría de los servicios. Entonces, me obliga a iniciar sesión en mi correo electrónico para obtener un enlace que me lleve a un lugar en el que simplemente habría utilizado la contraseña inicial para comenzar. También introduce una debilidad, ya que es un nuevo lugar para escuchar a escondidas. En este momento, puedo usar nuestro secreto compartido (la contraseña) y conectarme a través de HTTPS. Un atacante no se entera de quién soy, mi contraseña, etc. Con su esquema, el inicio de sesión en cada requiere que este enlace de autenticación se transmita de forma clara.

Ha habido una serie de violaciones de alto perfil como resultado de los restablecimientos de contraseña. Creo que el mayor recientemente fue para Sarah Palin (aunque la suya fue a través de preguntas de seguridad con toda justicia). La restauración de contraseñas generalmente apesta, y no deberíamos alentar más su uso.

    
respondido por el mfanto 17.03.2012 - 17:56
fuente
2

Su punto inicial es correcto: la mayoría de las instalaciones de "contraseña olvidada" son un enlace débil (o el enlace más débil ) en el proceso de autenticación.

Sin embargo, su idea de hacer algo como un protocolo de "contraseña olvidada" para cada inicio de sesión es en realidad similar al segundo factor en muchos esquemas de autenticación de 2 factores, por ejemplo. una ficha RSA. Ya puede obtener "tokens de software" que generan identificadores de inicio de sesión en el software en lugar de en una pieza de hardware dedicada. (Para que puedas ejecutarlo en tu iPhone, por ejemplo, en lugar de llevar una ficha dura en tu bolsillo todo el día).

Solo veo 2 diferencias conceptuales entre ese esquema y el tuyo:

  1. Tienes el segundo factor ("algo que tienes") pero no el primero ("algo que sabes"). Así que sigue siendo un esquema de autenticación de un solo factor.
  2. Está generando identificadores a pedido y enviándolos a un usuario. En contraste, un token RSA genera identificadores constantemente, ya sea que se usen o no, y no hay transmisión para el usuario (a excepción de la primera transferencia física cuando el dispositivo se entrega por primera vez al usuario).

Ambas diferencias debilitan la seguridad en comparación con un esquema típico de 2 factores.

Usted podría hacer que el esquema sea más seguro al no usar el correo electrónico no cifrado. Puede enviar un correo electrónico S / MIME o usar algún otro protocolo en conjunto (como el sistema de notificaciones push de Apple si el cliente tiene un iPhone) con cifrado.

En general, es un ejercicio de pensamiento interesante, pero creo que estaría mejor preparado para reforzar la dificultad del protocolo "Olvidé mi contraseña". O, dependiendo de su caso de uso, tal vez pueda eliminar el restablecimiento automático de la contraseña y utilizar una estrategia que disuadirá a los atacantes, como llamar a un número 800 para restablecer las contraseñas olvidadas.

No estoy de acuerdo con el cartel que escribió, "desde una perspectiva de seguridad, es razonable". Creo que su esquema es simplemente intercambiar un protocolo de seguridad inseguro por otro protocolo de seguridad inseguro.

    
respondido por el Mark E. Haase 18.03.2012 - 19:36
fuente
2

Los sistemas de restablecimiento de contraseña de correo electrónico son tan fuertes como DNS. Si bien el sistema es atractivo, hace más para resaltar qué tan inseguros son los formularios de restablecimiento de contraseña en lugar de sugerir que podemos usar las bandejas de entrada de correo electrónico como herramientas de inicio de sesión único.

Estos formularios de restablecimiento de contraseña solo deberían permitirle cambiar la contraseña, y siempre deberían mostrar el equivalente a "su contraseña se modificó por última vez en aaaa-mm-dd de abcd" y después de iniciar sesión "la última vez que inició sesión en aaaa-mm -dd del mensaje abcd ". De esta manera, el usuario tendrá al menos una pista de que su cuenta se ha dividido porque 1. se verá obligado a solicitar un restablecimiento, y 2. podrían darse cuenta de la fecha.

El envenenamiento de la memoria caché es solo más difícil con los parches modernos para los que lo resuelven, pero no es imposible y debido a la naturaleza distribuida del DNS y su dependencia de UDP, puede atacar sus pequeños espacios de aleatorización durante todo el día en miles de servidores hasta su cuenta de correo electrónico recopila un inicio de sesión exitoso.

Cuando obtengamos DNSsec, entonces su sistema funcionará bien, siempre que no sea una preocupación detectar el inicio de sesión en el cable o leerlo desde la bandeja de entrada ...

    
respondido por el mgjk 22.03.2012 - 10:58
fuente
1

Sí, desde el lado de la seguridad, eso es razonable. (Aunque tiene algunos inconvenientes que otros han señalado, como que el usuario tenga que usar siempre la contraseña maestra).

Pero no, desde una perspectiva práctica que arruinaría las cosas. Mucho, de una manera que no puede ser minimizada como "irritación del usuario".

Por ejemplo, está asumiendo que las personas están conectadas a su Gmail o similares en todo momento. Verdadero para algún usuario, tal vez incluso la mayoría, pero no cierto para muchos. También está asumiendo que las personas pueden abrir fácilmente enlaces desde su correo electrónico al mismo entorno en el que se encuentra el navegador, lo que no es cierto para muchos escenarios móviles.

El punto subyacente es el siguiente: El correo electrónico y la navegación son sistemas separados. No tendrían que tener , pero son . Básicamente, esto significa que hay una expectativa subyacente de que están separados. Por lo tanto, las cosas en todo el ecosistema de TI están diseñadas de una manera que espera que esos sistemas estén separados. Incluso si lo que estás haciendo sería un buen truco, no puedes simplemente ir diseñando cosas con las suposiciones que el resto de la gente ha hecho. Si lo hace, se encontrará con todo tipo de problemas que no esperaba.

    
respondido por el Ilari Kajaste 22.03.2012 - 08:51
fuente
0

Esto se parece mucho a BrowserID , cuyo objetivo es simplemente garantizar que los usuarios posean las direcciones de correo electrónico que afirman.

Tiene la ventaja de ser en su mayoría indoloros, ( incluso para desarrolladores) ) pero la desventaja de una baja adopción y básicamente no de socios de federación. (No es que realmente los necesiten para que funcione, entiendo que ya es completamente funcional, con cada correo electrónico).

    
respondido por el quodlibetor 21.03.2012 - 18:59
fuente
0
  

Si incluyo un servicio de Olvidé mi contraseña, ¿para qué usar una contraseña?

Porque si un usuario puede iniciar sesión en su cuenta con su contraseña conocida sabe que un atacante no ha utilizado un enlace de restablecimiento de contraseña y ha cambiado su contraseña.

Los restablecimientos de contraseña crean ruido. En los registros en el sistema de destino (que a veces puede ver el usuario) y en el buzón del usuario para el correo electrónico de restablecimiento de contraseña, e idealmente una notificación por correo electrónico de que se cambió una contraseña en la cuenta.

Un atacante que tuvo acceso a su buzón podría eliminar estos correos electrónicos, así como usar el enlace para cambiar la contraseña e iniciar sesión. Sin embargo, si no puede iniciar sesión en el sistema utilizando su contraseña almacenada en su administrador de contraseñas, es una indicación de que su cuenta ha sido comprometida de esta manera. Si simplemente usó un enlace de restablecimiento de contraseña cada vez que nunca lo sabrá.

Por supuesto, es solo una bandera roja, no una pieza de evidencia definitiva por sí sola. Debe solicitar a los administradores del servicio que proporcionen registros de cuándo se restableció su contraseña (o busque si tienen esta funcionalidad). Puede comparar estos registros con los suyos en su administrador de contraseñas para averiguar cuándo se modificó por última vez su contraseña. Si no cambió su contraseña en este momento, sabrá que algo anda mal.

Por este motivo, asegurar el acceso con una contraseña puede garantizar la integridad de su cuenta.

No estaba seguro de si esta respuesta encajaba mejor con esa pregunta o esta. Sin embargo, creo que es relevante para ambos y veo que el otro podría cerrarse pronto

    
respondido por el SilverlightFox 06.05.2015 - 12:19
fuente

Lea otras preguntas en las etiquetas