Inv*_*con 5 java database keystore
我有一个可以生成SecretKeys的应用程序,每个客户端一个。这些需要保留在我们的数据库中。我真的不熟悉常见的安全模式或实现,因此正在寻求建议。
KeyStore类似乎已被广泛使用,尤其是用于保护SecretKeys。但是,我几乎没有提及将KeyStore与数据库一起使用,并且我试图弄清这是因为它是基本用法(因此未提及),还是因为这是一种不良或多余的方法,我应该使用另一种技术。
基本设计是每个用户都有自己的密钥库,可以通过转换为字节(我想使用load()和store())将其保存到数据库中或从数据库中加载。
到目前为止,这种设计有什么问题吗?我也想知道应该如何处理KeyStore的密码。我们正在考虑仅对所有密钥库使用一个密码,但是如何在没有密钥库的情况下安全地存储此密码呢?
这是打算在后端应用程序中使用的,客户端将永远不会将密码传送给我们,服务器端也不会有人工操作员来提供密码。
在现实世界中,密钥被安全地存储(重点煤矿)的HSM,如果他们命中注定要被安全地存储,对于长时间(从小时到几年)。有PKCS#11标准旨在帮助与此类系统接口,但我要说得最少-大多数HSM具有自己的与HSM接口的首选机制,而PKCS#11接口通常被证明是残废的
秘密密钥也可以安全地存储在其他设备中,例如智能卡和USB令牌,但这是为了在大众中分配密钥,而不是为后端系统存储密钥。
但是,并非每个人都为HSM制定预算,并且使用了许多其他不太安全(且显然更便宜)的替代方案。某些系统(以Glassfish应用程序服务器为例)存储一个主密码,该密码用于保护其他密码。这同样适用于密钥-将有一个用于保护其他密钥的主密钥(在某种程度上,这类似于HSM在内部的工作方式)。当然,您将不得不固定主密钥。在某些环境中,这很容易,因为您可以将密钥放置在一个文件中,该文件仅限于系统管理员和应用程序,而不能一个人。
免责声明:所有这些都不应该被当作盲目摄取的建议:-)。如果需要不惜一切代价保护密钥,请投资HSM。
| 归档时间: |
|
| 查看次数: |
3037 次 |
| 最近记录: |