almacenando la información del usuario sin poder acceder a ella

2

Para un proyecto universitario mío, estoy creando un administrador de contraseñas en línea y quiero poder almacenar las contraseñas de los usuarios en mi servidor sin poder acceder a ellas. Esto es lo que pretendo hacer:

  • cifrar las contraseñas de los usuarios con el cifrado RSA
  • almacene las claves utilizadas para el cifrado, cifradas con un hash largo generado en el lado del cliente utilizando el master password
  • Hacer que el usuario escriba su master password cada vez que se usen algunas de las claves

Pero en este proceso hay un gran problema . No puedo recuperar / generar una nueva contraseña de usuario. ¿Qué pasa si se olvidaron de su contraseña.

Según lo que se me ocurrió, hay dos opciones:

  1. No le da a los usuarios la capacidad de cambiar su contraseña, bueno esto Parece que está matando el producto antes del lanzamiento

  2. Cambie la contraseña del usuario manteniendo una copia de la clave cifrada con Algún otro tipo de hash es una pregunta de seguridad: esto no parece ser una opción, ya que las preguntas de seguridad están obsoletas en la mayoría de los sitios web modernos debido a los riesgos de seguridad.

¿Tengo otras opciones excepto estas? Supongo que necesito una arquitectura 'Trust No One' (TNO) o 'Zero Trust' pero hay algunos agujeros en mi diseño.

    
pregunta melanholly 26.09.2016 - 15:40
fuente

2 respuestas

4

La recuperación o reinicio son inherentemente una puerta trasera. Tener esa capacidad significa que hay una.

Lo que hemos hecho con 1Password Teams y 1Password Families se otorga a los administradores del Equipo / Familia, pero no a nosotros mismos. (A éstas se les dan indirectamente las claves de todas las bóvedas, pero no se les da los datos de bóveda cifrados reales).

No es una solución perfecta, pero creemos que es una buena solución. Lamentablemente no está disponible para cuentas individuales. Y así, las personas que olvidan sus Contraseñas maestras conducen a la pérdida catastrófica de datos para esas personas. Esto no es algo que tomemos a la ligera, pero nosotros (y esperamos que nuestros clientes) prefieran ese riesgo de pérdida de datos a la amenaza inherente en nosotros (o alguien que nos comprometa) que tiene la capacidad de descifrar los datos de los clientes.

De todos modos, puede leer acerca de nuestro enfoque de la recuperación (aunque es incompleto en el borrador actual) en enlace

    
respondido por el Jeffrey Goldberg 27.09.2016 - 04:07
fuente
1

Cada conjunto de datos se cifra con una clave de datos, y luego la clave de datos se cifra con la contraseña del usuario (o hash de la contraseña como mencionó). La solución a su problema es que cada una de las claves de datos también debe ser almacenada en algún lugar, ya sea por el proveedor si los usuarios están dispuestos a confiar sus datos en el proveedor, o por los propios usuarios como una "copia de seguridad en caso de que olvide su contraseña ".

Para un administrador de contraseñas, supongo que algunos usuarios no querrán que su clave se almacene en un lugar centralizado, por lo que es posible que desee considerar ofrecerles la opción de almacenar su archivo de recuperación en su servidor o proporcionárselos para almacenar en un lugar seguro por su cuenta. Si eligen guardarlos ellos mismos y perderlos tanto como su contraseña, será un mal día para ellos. (Ser paranoico y olvidadizo tiene un precio.)

    
respondido por el TTT 26.09.2016 - 18:40
fuente

Lea otras preguntas en las etiquetas