Cómo transferir una base de datos de nombres de usuario y contraseñas a un amigo

3

Advertencia: básicamente no sé nada acerca de la seguridad de la información, por lo que me disculpo por adelantado. Intentaré mantener la pregunta lo más general posible.

Tengo un sitio web X sobre el cual tengo privilegios de administrador (aunque alguien más me ayudó a configurar el sitio web). Hay usuarios A, B, C en mi sitio web, con nombres de usuario y contraseñas.

Supongo que en algún lugar de la infraestructura de mi sitio web, hay un:

  • Tabla de nombres de usuario registrados
  • Tabla de contraseñas encriptadas usando un algoritmo hash
  • Alguna descripción de lo que es este algoritmo hash

Mi amigo de confianza (importante, ya que el problema de seguridad no es que pueda tener problemas) está creando un sitio web diferente Y . Quiere que A, B, C pueda iniciar sesión en Y con las mismas credenciales que usan para X . Esto es solo una cosa de una vez; Si D se une a mi sitio web X mañana, a mi amigo no le importa que D pueda usar sus credenciales de inicio de sesión en S .

Sin embargo, no todos los usuarios necesariamente quieren unirse a Y , y no sé a priori cuál de ellos lo hace.

¿Qué información puedo dar a mi amigo de modo que, si A y C desean iniciar sesión en Y con su X credenciales, pueden, pero también asegurando que la información de B esté protegida?

Nota: entiendo perfectamente que A, B, C no deben reutilizar sus contraseñas en varios sitios web, sino que X y Y están relacionados de alguna manera, de modo que no solo sería conveniente para los usuarios, sino que también tendría sentido para ellos tener las mismas credenciales de inicio de sesión.

    
pregunta user01101001 13.05.2016 - 18:32
fuente

3 respuestas

5

Lo que está pidiendo hacer viola algunos conceptos fundamentales de seguridad, por lo que estoy desaconsejando una solución técnica.

Las credenciales tienen la intención de validar a un usuario contra ese activo de confianza. Pasar esas contraseñas a un tercero rompe esa confianza (incluso si confía en el tercero, sus usuarios no tienen esa oportunidad). Si yo fuera uno de sus usuarios, estaría muy, muy enojado. Lo que propones se llama "incumplimiento". Usted está exponiendo las contraseñas de un usuario a un tercero sin su consentimiento.

Incluso OAuth le permite al usuario indicar específicamente el servicio en el que desea iniciar sesión, otorgándole el poder al usuario.

La mejor solución es simplemente invitar a los usuarios a crear una nueva cuenta en el servicio de terceros, y hay muchas formas de hacerlo más sencillo sin revelar las contraseñas de sus usuarios. Me gusta enviar un enlace de creación de cuenta precargado para el nuevo sitio.

    
respondido por el schroeder 13.05.2016 - 18:57
fuente
1

Supongo que las contraseñas no se almacenan en ninguna parte y que la verificación se realiza mediante hashes.

Básicamente tienes dos opciones:

  1. Dé a Y un volcado de nombre de usuario y contraseñas y deje que Y se preocupe por cómo integrarlas
  2. Use SSO (por ejemplo, con OAuth): X se convierte en la parte de confianza y Y en el cliente de confianza . Esta opción funciona para todos los usuarios registrados en X , sin importar cuándo se unieron ni cuándo se habilitó el SSO.

P.S .: Estas dos opciones pueden variar de muchas, muchas formas diferentes. Cuál de estos es el más apropiado depende de los requisitos, el presupuesto dedicado a la función, ...

    
respondido por el marstato 13.05.2016 - 18:49
fuente
1
  

¿Qué información puedo dar a mi amigo de tal manera que, si A y C quieren   inicie sesión en Y con sus credenciales X, pueden, pero también asegurando que   La información de B está protegida ?

La respuesta corta es " nada ."

Dado que no sabe quién del conjunto de todos los usuarios desea asociarse con el nuevo sitio, deberá incluir todo el conjunto de usuarios.

Una lectura directa de tu pregunta implicaría que ni siquiera sabes lo que le estás entregando a tu amigo.

  

"Supongo que en algún lugar de la infraestructura de mi sitio web, hay una:   • Tabla de nombres de usuario registrados   • Tabla de contraseñas encriptadas utilizando un algoritmo hash   • Una descripción de lo que es este algoritmo hash "

Tal vez estén almacenados en texto sin formato, o protegidos con un algoritmo de hashing débil. ¿Están salados o no? Estas son cosas que no se deben asumir, especialmente cuando planea entregarlas a un tercero.

Es posible que su amigo no esté en la sombra, pero la entrega de credenciales sin saber quién quiere asociarse con el nuevo sitio está en la sombra.

Los metadatos son datos reales.

Por ejemplo, digamos que alguien se une al sitio "A". El administrador entrega las credenciales al sitio "B" sin el consentimiento del usuario. El sitio "B" es hackeado, allanado o filtrado. Ahora el usuario está asociado con el sitio "B" a través de ninguna acción propia. ¿Qué pasa si el sitio "B" es un sitio terrorista? Bienvenido a la lista de observación de la tierra. ¿Y si es Ashley Madison? Bienvenido a "otros problemas significativos". "Realmente, ¡no fui yo!"

Si está probando la funcionalidad del nuevo sitio, solo use datos ficticios. De lo contrario, haga que los usuarios opten por.

    
respondido por el Stephen Spencer 13.05.2016 - 19:36
fuente

Lea otras preguntas en las etiquetas