Cómo almacenar datos confidenciales

0

He creado un programa que tiene datos confidenciales codificados en él. Imaginemos que los datos confidenciales son la contraseña para mi caja fuerte en casa.

Me di cuenta de que es bastante inseguro tener los datos codificados en el código fuente de la aplicación. Si alguien pudo ingresar a mi sistema, él / ella podría usar un editor / depurador hexadecimal para encontrar esa cadena. Así que se me ocurrió la idea de crear un archivo en el disco duro que contenga la contraseña, cifrarlo con un algoritmo fuerte y luego dejar que el programa solicite la clave en el inicio. Si se ingresa la clave correcta, la aplicación podrá analizar el contenido. Si se ingresa una clave incorrecta, la aplicación analizará la basura y se bloqueará, pero el atacante no puede obtener la contraseña. Para asegurarme de que nadie más pueda tomar esa llave, la imprimiría en un papel y la almacenaría en casa. Mi principal problema es:

Quiero usar un algoritmo seguro para el cifrado y al mismo tiempo tener una clave relativamente pequeña. Los algoritmos que examiné hasta ahora ( RSA, AES ) utilizan claves largas que no quiero escribir cada vez que inicio la aplicación. ¿Hay algún algoritmo que se ajuste a mis necesidades, o tal vez otro "plan" que sea tan seguro como la idea que tenía?

PS: Sé que cuando la aplicación ha cargado la contraseña en la memoria después de un arranque exitoso, un atacante podría obtenerla allí. Pero ese es otro tema para otro día.

    
pregunta thesys 14.03.2017 - 22:12
fuente

1 respuesta

1

Como mencionó en los comentarios, esta es una máquina de Linux remota accesible a través de Internet. Yo configuraría SSH con autenticación de 2 factores.

Ejemplo de SSH-2FA: enlace

Además, mencionó que es para uso personal, por lo que si pudieran tener acceso a la máquina en primer lugar, como mencionó, podrían aplicar ingeniería inversa a su programa incluso con el enfoque de contraseña, ya que se supone tienen acceso a su máquina, solo pueden instalar algún tipo de software de monitoreo / keylogger y capturar la contraseña.

Como lo menciona dandavis, se puede usar PBKDF2:

"PBKDF2 aplica una función pseudoaleatoria, como el código de autenticación de mensaje basado en hash (HMAC), a la contraseña de entrada o frase de contraseña junto con un valor de sal y repite el proceso muchas veces para producir una clave derivada, que luego se puede usar como clave criptográfica en las operaciones subsiguientes. El trabajo computacional agregado hace que el craqueo de contraseñas sea mucho más difícil, y se conoce como extensión de clave ". Fuente: enlace

Pero en general, dado que solo se ejecuta en su máquina personal, me concentraría en asegurar la propia máquina y luego preocuparme por la aplicación. Configurar algunas reglas de firewalls y SSH con 2FA serían mis sugerencias.

    
respondido por el nd510 14.03.2017 - 22:29
fuente

Lea otras preguntas en las etiquetas