Método de cifrado y otros problemas de seguridad para un administrador de contraseñas simple [cerrado]

1

Pensé que aprendería un poco de la programación de criptografía al convertirme en un simple administrador de contraseñas que potencialmente puedo usar para hacer un seguimiento de mis contraseñas. La idea es que mi programa mantendría una lista de contraseñas en forma cifrada y los nombres de los servicios para los que se usan las contraseñas. Luego, podría ingresar el nombre del servicio al que me gustaría acceder y una contraseña maestra y el programa me dará la contraseña para ese servicio.

¿Qué método de cifrado debo usar? ¿En qué otros temas de seguridad debo pensar? ¿Es un objetivo viable (sin experiencia) hacerme un administrador de contraseñas que sea lo suficientemente seguro para que realmente lo use?

    
pregunta Echows 28.11.2013 - 16:01
fuente

2 respuestas

2

Bien por ti por tratar de aprender esto. Tenga en cuenta que todo lo que produzca no debe incluirse en un entorno de producción real, ni siquiera a nivel personal. Considere esto como una oportunidad de aprendizaje y no una receta para cocinar su propio administrador de contraseñas. Por lo general, harías algo en este sentido:

  • Genere una clave de 256 bits al azar . Esta es su clave maestra de encriptación.

  • Tome la contraseña maestra y ejecútela a través de PBKDF2 junto con un salt de 64 bits y obtenga un 128 tecla -bit. Esta es su clave de cifrado secundaria.

  • Use la clave de cifrado secundaria para cifrar la clave de cifrado maestra utilizando AES en modo EAX y guárdelo en algún lugar.

  • Para la base de datos, use el formato que desee. Como no estoy seguro de cuál elegir, diré XML . Cifre la base de datos utilizando la clave de cifrado maestra.

  • Cuando el usuario quiera acceder a la base de datos, cargue el archivo cifrado en la memoria, tome la contraseña maestra y ejecútela a través de PBKDF2 con salt y obtenga la clave secundaria, use la clave secundaria para descifrar la clave maestra, y finalmente use la llave maestra para descifrar la base de datos.

  • Una vez que el usuario termina de acceder; añadiendo modificando o al eliminar entradas de la base de datos, simplemente debe cifrarlas nuevamente y descartar todo de la memoria.

  • Cuando el usuario desea cambiar la contraseña, descifra la clave secundaria derivada de la contraseña anterior, descifre la clave maestra, derive una clave secundaria nueva de la nueva contraseña, use esa clave para cifrar la clave maestra. Al hacer esto, no tiene que descifrar y volver a cifrar la base de datos cuando se cambia la contraseña, ya que la clave maestra se mantiene igual.

Finalmente, le recomiendo que eche un vistazo al código fuente de KeePassX . Una gran cantidad de información puede ser recolectada desde allí.

Lo diré de nuevo, no use la aplicación real que produce . Podrías (y es muy probable que) hagas algo mal en algún momento. Diablos, mis instrucciones en sí podrían estar (y probablemente están) equivocadas.

¡Feliz aprendizaje!

    
respondido por el Adi 28.11.2013 - 17:01
fuente
0

Si desea aprender a hacer un buen administrador de contraseñas, empezaría por buscar administradores de contraseñas de código abierto. Revise cómo funcionan (implementación de la base de datos + métodos de cifrado) e intente crear algo usted mismo.

Para el cifrado usado usaría AES256 CBC. AES está bien documentado.

¡No uses tu propia implementación!

    
respondido por el Lucas Kauffman 28.11.2013 - 16:18
fuente

Lea otras preguntas en las etiquetas