Proporcionar una función de recuperación de SMS sin comprometer la seguridad de una cuenta

3

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:

  1. Proporcionar la contraseña para la cuenta
  2. Restablecimiento de la contraseña mediante códigos de copia de seguridad fuera de línea
  3. 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.

    
pregunta Mrwerdo 10.02.2018 - 07:42
fuente

1 respuesta

2

No creo que esto sea posible, con 1 y 2 le está dando efectivamente al usuario el control total de las claves de cifrado y asegurándose de que el servidor no las conozca. Sin embargo, con 3 necesitas generar nuevas claves.

Sin embargo, para asegurarse de que un atacante obtenga una copia de su base de datos, un HSM lo ayudará. Un HSM es un almacenamiento de hardware de claves privadas, lo que significa que es imposible copiar la clave privada.

Para su aplicación de SMS, cifraría la clave de perfil con la parte pública del par de claves de HSM. Cuando necesite generar una clave de SMS, puede hacer que el HSM descifre la clave de perfil y volver a cifrarla con la contraseña de SMS (como lo hace con la contraseña normal), o simplemente usarla como parte de la contraseña. -proceso de restablecimiento (descifrado y recifrado cuando el usuario establece la nueva contraseña).

Puede que existan herramientas criptográficas avanzadas que no conozco, tal vez se podrían usar pruebas de conocimiento cero, sin embargo, esto suena como algo relacionado con el nivel de investigación de doctorado.

    
respondido por el Rolf Rander 10.02.2018 - 09:27
fuente

Lea otras preguntas en las etiquetas