¿Cómo dar la opción "Olvidé mi contraseña" para un archivo cifrado con contraseña?

3

He creado una utilidad que cifra un archivo (.txt, .dox, etc.). La utilidad solicita una contraseña al usuario en el momento del cifrado del archivo.

Problema

Supongamos que un usuario ha creado 1000 archivos cifrados con diferentes contraseñas y olvida su contraseña de algún archivo. ¿Cómo lo recuperará?

Mis pensamientos

Debería registrar cada contraseña (encriptada) en algún lugar y por el nombre y tamaño del archivo podemos encontrar la contraseña del archivo que se le puede proporcionar al usuario, pero aquí hay algunas capturas:

  1. Puede haber muchos archivos con el mismo nombre y tamaño
  2. El usuario puede cambiar el nombre del archivo, por lo que aquí le ayudaremos menos
  3. Si intentamos encontrar la contraseña solo por tamaño, puede haber muchos archivos con el mismo tamaño, por lo que no será una buena manera de proporcionar la contraseña exacta al usuario.

También pensé enviar el registro de contraseña completo al usuario en su correo electrónico registrado, pero luego encontré esto LINK y cambié mis pensamientos.

Solicitar

¿Cuál será la mejor manera de proporcionar a los usuarios la contraseña exacta del archivo cifrado?

P.S: la utilidad se genera utilizando Objective-c, Cocoa para OSX

    
pregunta Vikas Bansal 12.10.2015 - 18:44
fuente

2 respuestas

4

Parece que su pregunta principal es sobre cómo poder hacer coincidir los archivos cifrados con la contraseña de texto sin cifrar para ese archivo en su base de datos. Puede usar una función hash segura, diga SHA-256 para resolver este problema. El algoritmo es

  1. Obtenga el archivo y la contraseña del usuario.
  2. Cifrar archivo usando contraseña.
  3. Genere SHA-256 de archivo encriptado.
  4. Almacene la contraseña en su base de datos usando SHA-256 como clave. Tenga en cuenta que aquí es donde se encuentra el riesgo. Asegúrese de cifrar la contraseña con una clave que almacene en una ubicación separada. También deberá registrar qué usuario cifró el archivo, ya que no querrá permitir que Bob obtenga la contraseña de texto claro del archivo cifrado de Alice.

Cuando un usuario solicita la versión de texto claro de su contraseña, usted:

  1. Calcule el SHA-256 del archivo.
  2. Encuentra el hash correspondiente en tu base de datos.
  3. Realice las comprobaciones de acceso adecuadas para asegurarse de que este es su archivo cifrado.
  4. Devuelva la contraseña de texto simple al usuario.
respondido por el Neil Smithline 13.10.2015 - 07:53
fuente
2

Permítame primero aclarar algunos de sus pensamientos:

  • No puede tener dos archivos con el mismo nombre y tipo exactos. Tendrás archivos con el mismo nombre pero con una extensión diferente. Si tiene la intención de almacenar los nombres de archivo y las contraseñas cifradas relacionadas, use el nombre completo del archivo, por ejemplo. abc.txt / abc.pdf etc.

  • Debe compilar su programa de tal manera que sin descifrar el archivo no pueda cambiarle el nombre. Si permite cambiar el nombre de los privilegios sin, viola el principio de integridad y no se recomienda. Si aún desea hacerlo, actualice también el nombre del archivo en su archivo almacenado.

  • No importa. Buscar el nombre completo del archivo (abc.txt) le proporcionará la clave principal que necesita.

Su necesidad de proporcionar una función Recuperar contraseña tendrá algo de complejidad adjunta, ya que requerirá que diseñe un sistema de autenticación para asegurarse de que la persona que recupera la contraseña sea la misma que la persona que la recupera .

  1. Podría usar un sistema de recuperación de contraseña basado en correo electrónico, que es lo que la mayoría de las aplicaciones y sitios web ejecutan. (Deberá almacenar las credenciales de inicio de sesión)

  2. Puedes usar un sistema basado en OTP. Una vez más, deberá almacenar las credenciales de inicio de sesión y el número de teléfono móvil o algo así.

  3. No implementar la función. Manténgase alerta y establezca la importancia de recordar la contraseña y las consecuencias en caso de que la pierda. Tener una casilla de verificación con un mensaje Acepto. : D

Espero haberte dado una idea. :)

    
respondido por el user2339071 12.10.2015 - 20:25
fuente

Lea otras preguntas en las etiquetas