我有一些代码可以加密某些用户数据。目前,我将密钥存储在运行时加载的配置文件中。这有很多原因,即如果有人访问配置文件,他们就可以访问密钥。所以我开始研究Java密钥库,但我似乎无法为它们辩护。密钥库需要密码,这与密钥硬编码一样容易受到攻击。我是否遗漏了某些东西,或者密钥库是否存在与硬编码密钥相同的弱点?
答案 0 :(得分:0)
通过使用JKS或任何密钥库,您真正迈出了将应用程序或服务器的密钥保护要求卸载到密钥库或该密钥库用户的第一步。有很多保护密钥和密钥库的指导方针可能非常有用(HSM等),但利用JCE架构只是第一步。与此同时,也可以开始将安全性烘焙到您的应用程序中。
https://security.stackexchange.com/questions/11517/storage-of-secrets-keystores-hsms-and-the-rest
答案 1 :(得分:0)
我看到的一个通用体系结构是应用程序使用私钥加密数据,或者应用程序必须为特定的dev / test / prod环境解密数据库凭据。开发人员将代码和配置提交到代码存储库。但是,用于加密/解密的密钥是由另一个团队创建的,并存储在其他位置。部署服务器或容器后,密钥库也随之部署。包含配置文件的代码库已构建并部署到服务器上。开发人员永远无法访问解密密钥,密钥永远不会在代码存储库中。