¿Cuál es la mejor manera de asegurar la contraseña de inicio de sesión y proteger los datos del usuario? (Incluso los DBA no pudieron conectar los datos a los usuarios)

0

Digamos que estoy creando un sitio web y una aplicación que guarda los secretos de los usuarios. El usuario inicia sesión y puede guardar en la aplicación sus secretos más profundos.

Me preocupan dos cosas:
 - ¿Debo guardar la contraseña (hash / bcrypted / etc)?
- ¿Cómo puedo evitar que las personas que tienen acceso a la base de datos puedan correlacionar los secretos con los usuarios, con los correos electrónicos?

Leí un artículo que recomienda no almacenar la contraseña de hash del usuario y no usar claves externas tradicionales para relacionar las tablas. Para utilizar un hash como clave externa en su lugar. ¿Cómo funcionaría?

Si no guardo el hash de contraseña en algún lugar, ¿cómo puedo verificar si el nombre de usuario / contraseña coinciden?

    
pregunta Káliman Borges 17.11.2014 - 06:32
fuente

1 respuesta

2

Si desea almacenar datos de manera que la persona que tiene los datos no pueda leerlos, entonces

  1. Es necesario cifrar los datos del lado del cliente. El cifrado del lado del servidor abre la posibilidad de que alguien (por ejemplo, el operador del servicio) pueda registrar los datos mientras está en tránsito.
  2. El cifrado debe realizarse utilizando claves seleccionadas por el cliente. Si alguien más proporciona las claves, pueden grabarlas.
  3. El cliente debe estar almacenado fuera de línea (para que el operador del servicio no pueda manipularlo después del hecho) y debe tener disponible el código fuente (para que el usuario pueda auditarlo y asegurarse de que haga lo que se supone que debe hacer).

Para evitar que el operador de servicios asocie los datos con una cuenta, la operación "almacenar" no es "asociar un nuevo registro con esta cuenta", sino "almacenar un registro etiquetado con este hash", donde se proporciona el hash en cuestión por el cliente (por ejemplo, un hash con sal de su contraseña, donde la sal es el número de índice del registro deseado). A la inversa, la operación de recuperación no es "seleccionar registros asociados con esta cuenta", sino "seleccionar registros etiquetados con este hash". Además, las operaciones de "almacenamiento" y "recuperación" no pueden requerir que el usuario esté conectado. Probablemente haya una manera de que un usuario demuestre que tiene una cuenta sin revelar cuál cuenta, pero no No sé cómo hacerlo.

Teóricamente, cualquier usuario puede solicitar los registros de cualquier otro usuario, aunque con un hash de 256 bits, las probabilidades de que una solicitud aleatoria devuelva un valor son extremadamente raras (1 en 10 ^ 68, si tiene mil millones de registros almacenados ). Dado que un atacante no tiene la contraseña de descifrado, el hecho de poder recuperar el registro de otra persona tiene poco valor.

    
respondido por el Mark 17.11.2014 - 07:47
fuente

Lea otras preguntas en las etiquetas