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.