我正在写一个应用程序App1。此应用程序使用SQLite数据库,我计划使用AES256对其进行加密。对于对称加密,我需要一个密钥,我需要将它存储在某个地方。
从类似的问题我有几个选择,但没有一个适用于我的情况:
将加密密钥绑定到您的管理员登录名
我不信任当前登录的用户。事实上,我想对任何人隐藏这一点,但是
App1。将加密密钥绑定到您的硬件。
App1部署到数千台机器上,有些可能不需要硬件。启动时输入加密密钥,将其存储在内存中。
用户不得访问
App1密钥。将密钥存储在不同的服务器上。
机器在运行时允许离线
App1。将密钥存储在同一服务器上的其他位置。
然后就可以找到了。
将密钥存储在数据库中。
我需要保护数据库,这在我的情况下是一种递归。
可能的解决方案是使用Windows DPAPI存储密钥,但是
DPAPI 专注于为>用户<提供数据保护。
而我需要保护应用程序。我还需要
App1不同用户在同一台机器上工作我可以添加辅助熵,以限制当前登录的用户访问数据。
但是,我需要将这些秘密数据存储在机器上。我该如何保护...似乎又是递归了。
问题:我在哪里安全地存储应用程序特定的对称密钥?