Estoy escribiendo una aplicación App1
. Esta aplicación utiliza la base de datos SQLite y planeo cifrarla utilizando AES256 . Para el cifrado simétrico necesito una clave, que necesito almacenar en algún lugar.
De una preguntas similares tengo algunas opciones, pero ninguna es aplicable en mi caso:
-
Vincule la clave de cifrado al inicio de sesión de su administrador
No confío en el usuario actualmente registrado. De hecho, quiero ocultar esto a cualquier persona, pero
App1
. -
Vincule la clave de cifrado a su hardware.
App1
se implementa en miles de máquinas, es posible que algunas no necesiten hardware. -
Escriba la clave de cifrado cuando inicie, guárdelo en la memoria.
El usuario no debe tener acceso a la clave
App1
. -
Almacena la clave en un servidor diferente.
Se permite que la máquina esté fuera de línea, mientras que
App1
se está ejecutando. -
Almacene la clave en otro lugar en el mismo servidor.
Entonces se puede encontrar.
-
Almacena la clave en la base de datos.
Necesito asegurar la base de datos, que es un poco recursiva en mi caso.
La posible solución es almacenar la clave usando DPAPI de Windows , pero
-
DPAPI se centra en proporcionar protección de datos > para usuarios & lt ;.
Mientras que necesito proteger una aplicación. También necesito que
App1
trabaje de diferentes usuarios en la misma máquina -
Puedo agregar entropía secundaria para restringir el acceso del usuario registrado a los datos.
Sin embargo, necesito almacenar estos datos secretos en la máquina. ¿Cómo puedo proteger eso? ... Parece ser recursión nuevamente.
Pregunta: ¿dónde almaceno de forma segura la clave simétrica específica de la aplicación?