Mi objetivo es poder cifrar los datos para que nadie pueda usarlos si fue robado.
Datos del usuario
- el que será encriptado
- Puede ser cualquier tipo de datos
Clave de cifrado de datos
- la clave para cifrar y descifrar los datos de usuario
- almacenados encriptados
- no cambia
- único por usuario
- generado al registrarse
- tiene dos copias encriptadas:
- 1st se cifra y se descifra con la contraseña no cifrada del usuario
- 2nd está encriptado y desencriptado usando el correo electrónico del usuario
Contraseña de usuario
- se utiliza para cifrar y descifrar la primera copia de la clave de cifrado de datos
- almacenado encriptado utilizando bcrypt
Correo electrónico del usuario
- se utiliza para cifrar y descifrar la segunda copia de la clave de cifrado de datos
- tiene una copia separada almacenada encriptada usando bcrypt. La otra copia era parte de los datos del usuario
[LOGIN]
Cuando el usuario inicie sesión, la contraseña enviada se verificará utilizando la contraseña cifrada almacenada. Si es válido, su clave de encriptación de datos será descifrada usando la misma contraseña enviada. La clave de cifrado de datos ahora se puede utilizar para cifrar y descifrar los datos del usuario.
[CAMBIAR CONTRASEÑA]
El usuario proporciona su contraseña anterior. Esto se utilizará para descifrar la clave de cifrado de datos que luego se cifrará con la nueva contraseña.
[OLVIDAR CONTRASEÑA]
El usuario debe proporcionar su nombre de usuario y correo electrónico. Este nombre de usuario se usará para encontrar el correo electrónico cifrado que se almacenará por separado y se usará para verificar el correo electrónico proporcionado. Si tanto el nombre de usuario como el correo electrónico son correctos, el correo electrónico proporcionado recibirá una clave de reinicio. La tecla de reinicio permitirá al usuario proporcionar una nueva contraseña. La segunda clave de cifrado de datos se descifrará mediante el correo electrónico y se cifrará con la nueva contraseña. El valor resultante reemplazará la primera clave de cifrado de datos.
Me pregunto si este es un esquema viable. Todavía no he buscado un enfoque similar. Si conoce uno o tiene uno mejor, hágamelo saber.