Pasando la clave de cifrado a través de la sesión para la base de datos cifrada simétricamente

1

Estoy creando una base de datos que cifra de forma simétrica los datos del usuario. Nada súper sensible, usaría un tercero si fuera. Los datos están encriptados con una clave sustituta; El usuario debe ingresar una contraseña para descifrar los datos. Un DBA malvado no puede ver los datos como están cifrados. Bastante estándar hasta ahora.

Dado que solo la contraseña del usuario (o, más bien, su hash) puede descifrar los registros de la base de datos, debo pasarla de alguna manera a través de la sesión. Entonces:

  • Creo mi propia ID de sesión única y la almaceno en la base de datos, en la tabla "sesión". El mismo valor se almacena como una cookie en la máquina del usuario ("user_session").
  • La base de datos también contiene una clave aleatoria asociada con ese ID de sesión. Otra cookie, "user_pass", contiene un resultado XOR de un hash de esta clave aleatoria y un hash de la contraseña del usuario.
  • Cuando el usuario consulta la base de datos cifrada, el programa XOR es la cookie "user_pass" con la clave aleatoria en la base de datos - > llega al hash de la contraseña de usuario - > descifra los registros db. De esta manera, no se almacenan datos completos de contraseña en el servidor (en un directorio de sesión temporal o en la base de datos), ni en la máquina del usuario.

¿Es esta la forma estándar de almacenar una clave en toda la sesión? recuerda que se utiliza para descifrar los registros de la base de datos. Supongamos que estamos utilizando SSL.

Vulnerabilidades con tokens de sesión respaldados por DB y ¿Es seguro almacenar la contraseña en la sesión de PHP? discuta esto pero no responda completamente mi pregunta.

    
pregunta David_Springfield 09.05.2014 - 16:49
fuente

0 respuestas

Lea otras preguntas en las etiquetas