¿Por qué se considera seguro OpenID cuando no se reutiliza la contraseña?

16

OpenID te permite usar tu p. ej. Cuenta de Google / Facebook / Microsoft para iniciar sesión en un sitio web de terceros. Se puede utilizar para iniciar sesión en Stack Exchange.

¿Por qué esto se considera una práctica aceptable, mientras que la reutilización de la contraseña no lo es? ¿No equivale a lo mismo si la cuenta de OpenID se ve comprometida, ya que el atacante podrá acceder a más de una de las cuentas de los usuarios?

Además, dado que una cuenta de correo electrónico es a menudo la clave principal para todas las demás cuentas en línea (ya que el enlace para restablecer la contraseña le enviará un correo electrónico para restablecer la contraseña), ¿no es también peligroso condicionar a los usuarios para que ingresen su cuenta? p.ej ¿La contraseña de Gmail en otras páginas web también?

    
pregunta JonnyWizz 12.11.2015 - 15:51
fuente

2 respuestas

8

TL; DR: No está usando una frase de contraseña varias veces con OpenID, pero las otras partes (como Stack Exchange) confían en su proveedor de identidad (como Google) para que lo autentiquen cuidadosamente. La frase de contraseña (o cualquier otro esquema de autenticación como autenticación de dos factores, certificados, etc.) solo se revela al proveedor de identidad.

Certificaciones de identidad en el mundo real

Los métodos similares a menudo se utilizan para abrir cuentas bancarias, registrarse en contratos telefónicos u otras acciones que requieren la verificación de su identidad. Si no quiere ir en persona a esa compañía, a menudo puede verificar su identidad a través de un notario, una oficina postal o una agencia bancaria, lo que verificará su pasaporte (esto es como presentar su frase de contraseña a Google), y luego entregar usted (o le pasa inmediatamente a un tercero que solicita la autenticación) un certificado que confirme que verificaron su identidad, pero sin adjuntar una copia de su pasaporte.

OpenID

La idea de OpenID (y tecnologías similares de inicio de sesión único) es que no ingrese una contraseña en el sitio de destino. Por ejemplo, si desea iniciar sesión en su cuenta de Stack Exchange utilizando Google, Stack Exchange nunca obtiene su frase de contraseña, sino que se le redirige a Google, lo que lo autenticará (posiblemente ya haya iniciado sesión en Google, por lo que es posible que simplemente se le pregunte si desea ser autenticado para el intercambio de pila y se le envíe de vuelta allí.

Stack Exchange no obtiene su frase de contraseña en ningún momento, ni siquiera se daría cuenta cuando cambia su frase de contraseña de Google. En su lugar, Google envía un tipo de certificado a Stack Exchange, entregando cierta información de identidad, que puede ser solo un identificador numérico, pero también puede enriquecerse con información adicional como su dirección de correo electrónico.

Hay una gran imagen que describe el flujo de trabajo en Wikipedia:

" OpenIDvs. Pseudo-AuthenticationusingOAuth "por Saqibali - Trabajo propio. Licenciado bajo CC0 a través de Commons .

OAuth

OAuth hace algo un poco diferente al no pasar certificados, sino un tipo de clave de acceso. Para simular el comportamiento de OpenID a través de OAuth, el proveedor de identidad proporcionaría un servicio simple que se puede usar solo para la autenticación. Si la clave "encaja", el usuario se autenticó correctamente.

Seguridad

Todo el escenario es seguro, teniendo en cuenta algunas precauciones de seguridad.

  • No debe dar su contraseña a un proveedor de autenticación falso que se parece a su proveedor real (por ejemplo, una página de Google falsa para ataques de phising). Esto es como proporcionar su pasaporte a un notario falso, que hará una copia y hará cosas malas con él. Esto se puede mitigar a través de una verificación cuidadosa del URI del sitio (los administradores de contraseñas y la búsqueda automática de frase de contraseña por URI son muy útiles con esto) y el uso de medidas de seguridad adicionales como la autenticación de dos factores.
  • El certificado solo se puede utilizar durante un tiempo determinado, y solo es válido por sitio . Por ejemplo, un sitio web falso de Stack Exchange puede obtener un certificado. Pero como esto solo es válido para el "intercambio falso de pila", el atacante no podrá usarlo para autenticarse contra el intercambio real de pila u otros sitios web.

    La implementación real de esto difiere entre todas las tecnologías de inicio de sesión único, pero todas implementan un método similar para vincular certificados a terceros.

respondido por el Jens Erat 20.11.2015 - 14:44
fuente
12

El punto de OpenId u otros mecanismos similares es que le permite seleccionar una organización única y altamente confiable para mantener sus credenciales. Se supone que son, de alguna manera, más seguros que el sitio promedio. Por ejemplo:

  • Deben ofrecer autenticación de 2 factores
  • Deben tener un buen monitoreo proactivo del uso indebido de la cuenta
  • Deben tener la certificación ISO27001
  • Etc.

Si reutiliza su contraseña, sus cuentas en todos los sitios donde reutiliza son tan seguras como el sitio más débil. Cualquier compromiso de cualquier sitio significaría que todas sus cuentas están en riesgo.

Entonces, en parte es una probabilidad simple: cuanto más lugares guarde sus credenciales, más probabilidades habrá de que sean robados.

Y, en parte, se trata de calidad: debe seleccionar un proveedor de OpenId en el que confíe altamente.

En el punto sobre el ingreso de credenciales de correo electrónico en otros sitios, la idea con OAuth, etc., es que no lo hace: el sitio en el que inicia sesión redirige su navegador al sitio de su proveedor de identificación e ingresa las credenciales allí. Es cierto que esto es algo sutil y muchos usuarios podrían no darse cuenta de lo que está sucediendo, pero ese es el principio.

    
respondido por el Mike Goodwin 12.11.2015 - 16:13
fuente

Lea otras preguntas en las etiquetas