TL;DR:
- Una base de datos / archivo cifrados con una contraseña específica del usuario como clave de cifrado.
- En general, sí (dependiendo de la seguridad de la aplicación);
Versión más larga: Al responder una pregunta de este tipo, debe tener en cuenta:
- de quién estás protegiendo;
- Los riesgos de rotura;
- ¿Este problema ya ha sido resuelto por otros?
No creo que estés protegiéndote del propio usuario (como parecen suponer otros). Usted está protegiendo contra abusadores no legítimos de la aplicación con intenciones maliciosas.
Riesgos: bueno, si se roban las claves, el abusador puede capturar datos, robar cuentas, comprometer los datos o incluso la imagen pública del usuario.
La forma clásica de resolver esto es autenticación / autorización (basada en cadenas de datos memorizadas ("Lo que sabe el usuario") o biométrica ("Propiedades de los usuarios") o propiedad ("Lo que el usuario tiene ", la segunda parte de 2FA)) por la cual se diferencian los usuarios legítimos de los ilegítimos.
En cuanto a ¿Este problema ya ha sido resuelto por otros ? ¿Cómo crees que lo hacen los administradores de contraseñas como keepassX? KeepassX es una base de datos local de contraseñas, archivos clave y otras cadenas de datos confidenciales, esencialmente su problema.
Se usan de 3 maneras (y combinaciones de algunas de ellas): contraseña, clave o un vínculo con las medidas de autenticación existentes (como la cuenta de Windows). Dependiendo de qué tan segura quiera que sea su implementación, elija y elija. Si elige solo la contraseña (como lo haría en la mayoría de los casos), hash con una función criptográfica tiene función, como sha512 + salt o bcrypt así que incluso si un actor malicioso conoce el hash, tiene que hacer un trabajo para adivinar la cadena original. El uso de esta contraseña para cifrar la clave proporcionará la protección necesaria.
No aconsejo usar solo las credenciales de Windows, ya que no es una buena idea no pedirle al cliente una contraseña cuando inicie la aplicación si es una aplicación sensible a la seguridad (nuevamente, así es como lo hace keepassX).