Estoy diseñando un sistema para que cifre los perfiles de un usuario. La única forma de acceder a la información almacenada en él es mediante:
- Proporcionar la contraseña para la cuenta
- Restablecimiento de la contraseña mediante códigos de copia de seguridad fuera de línea
- Restablecimiento de la contraseña mediante el envío de un código SMS
Supondremos que el dispositivo que recibe el código SMS, ni el método de transporte de SMS, no está comprometido.
Para que los tres métodos permitan el acceso al perfil del usuario, se generará una clave para cifrar y descifrar el perfil. Luego, almacenaremos las versiones cifradas de la clave para que cada uno de los siguientes métodos enumerados anteriormente puedan acceder a la información en el perfil.
Para el método 1 & 2, asegurarse de que la clave sea confidencial es fácil. Para el método 1, simplemente cifre la clave con la contraseña del usuario. Para el método 2, genere los códigos de copia de seguridad, cifre la clave con ellos y luego entréguelos al usuario. Sin embargo, para el método 3, no estoy seguro de cómo se debe hacer esto.
Pregunta 1: ¿Cómo puedo proporcionar una función que permita a un usuario recuperar su cuenta enviando un código SMS a su dispositivo, de modo que la organización que almacena los datos no pueda acceder a la información en el perfil del usuario?
Pregunta 2: una empresa permite a los usuarios restablecer sus contraseñas mediante SMS. ¿Esto implica que la empresa puede acceder a la información almacenada en la cuenta de su usuario?
Una organización puede modificar el sistema para que pueda recuperar cualquier información cifrada, solo asegúrese de que la próxima vez que el usuario inicie sesión en usted almacene una copia de su contraseña. Sin embargo, en el caso de que un adversario obtenga una copia de las cuentas, mi pregunta sigue siendo válida.