Acceso a datos encriptados con múltiples usuarios

2

Estoy creando un administrador de contraseñas LDAP autenticado basado en web para uso interno.

No queremos almacenar las contraseñas en texto sin formato en la base de datos, y queremos que múltiples usuarios puedan acceder a los datos.

Mi pregunta es, ¿cómo podemos proteger los datos y, al mismo tiempo, permitir que diferentes usuarios utilicen diferentes credenciales de inicio de sesión? Lo único que viene a la mente es almacenar la clave de cifrado tal como está, y luego usar la lógica (es decir, si el usuario forma parte de un grupo específico) para decidir si la aplicación debe usarla o no para descifrar los datos. Por supuesto, esto no es seguro, ya que cualquier persona con acceso al servidor web podrá recuperar la clave.

¿Alguien sabe de una manera de lograr una seguridad como esta al usar un método externo de autenticación?

    
pregunta 08.01.2013 - 00:03
fuente

1 respuesta

1

Para cada registro de datos (o conjunto de registros, si los mismos usuarios siempre pueden acceder a todos los registros de un conjunto), cree una clave de cifrado aleatoria. Luego encripte una copia de esta clave con la clave de cada usuario que tenga acceso a los datos.

(Las claves de usuario pueden derivarse directamente de la contraseña del usuario utilizando una función de derivación de clave adecuada, como PBKDF2 , o puede generar una clave aleatoria por usuario de cada usuario y cifrarla con la clave derivada de la contraseña. La última opción es un poco más complicada, pero tiene la ventaja de que solo necesita volver a cifrar una clave cuando un usuario cambia su contraseña. contraseña.)

Para obtener más información, consulte, por ejemplo, esta pregunta relacionada sobre crypto.SE .

Editar: Acabo de notar la mención de LDAP en tu pregunta. Realmente no estoy muy familiarizado con LDAP, pero por lo que puedo decir, si su aplicación está actuando como un cliente LDAP, de modo que el usuario ingrese su contraseña en su aplicación, que luego consulta al servidor LDAP para validarla, luego puede en su mayoría hacerlo como se describe anteriormente.

Lo único con lo que va a tener problemas son los cambios de contraseña, a menos que pueda hacer que el servidor LDAP le notifique sobre ellos e incluya las contraseñas antigua y nueva en la notificación. Una opción sería que su aplicación también verifique la contraseña ingresada en su propia base de datos, por ejemplo. almacenando un hash de la clave de cifrado del usuario (derivada de la contraseña con PBKDF2) en la base de datos. Si la contraseña pasa la validación de LDAP pero no pasa esta verificación, significa que el usuario ha cambiado su contraseña, en cuyo caso debe pedirle que también ingrese su contraseña antigua para que pueda volver a cifrar la contraseña. datos.

Sin embargo, la solución ideal sería almacenar los datos cifrados (o al menos las claves por usuario) en el servidor LDAP, si el servidor puede configurarse para hacerlo de forma segura. Basado en Google, al menos algunos de ellos pueden ser.

    
respondido por el Ilmari Karonen 08.01.2013 - 00:10
fuente

Lea otras preguntas en las etiquetas