bra*_*amp 17 security encryption private key
我需要为多个用户存储私钥,以便我的服务器应用程序可以代表他们签署文件.
我想安全地存储私钥,但我无法找到最佳实践.如果我正在存储密码,我会使用密码来哈希密码,以便制作一个无法轻易转回密码的哈希值.但是,使用私钥我需要以稍后检索它的方式存储它.
我以为我会加密私钥然后将其存储在我的数据库中.我原本以为每个密钥都会使用不同的密码加密(基于用户的某些属性).但是,这些属性很可能存储在数据库中,因此如果我的数据库被泄露,那么攻击者就拥有了所有内容.
我可以使用只有我的应用程序知道的单个密码来加密所有私钥.然后攻击者必须窃取我的数据库,并且我的应用程序要做任何伤害.
我缺少一种技术/最佳实践吗?
Maa*_*wes 17
您可以使用基于用户密码的对称密钥加密私钥.只需存储额外的盐并执行密码"hash"即可获得单独的密钥.然后使用它作为加密私钥的密钥.请注意,要创建安全密码哈希,请使用基于密码的密钥派生函数(PBKDF),如PBKDF2,bcrypt或scrypt.
如果用户在需要生成签名时不在线,那么您确实应该保护密码,只有您/我们的后台可以解密密钥.您可以使用某些用户ID +您自己的密钥来计算加密/解密密钥.您甚至可能希望生成单独的RSA密钥对来进行加密解密(使用混合加密).
代表用户存储私钥是一件非常危险的事情.有很多方法可以丢失数据或私钥暴露(例如,旁道攻击).要做到专业,你应该在这个过程中的某个地方使用HSM.如果这是任何严重的数据,请咨询专业人士和律师.
| 归档时间: | 
 | 
| 查看次数: | 8685 次 | 
| 最近记录: |