如何在数据库中存储加密的机密用户信息,需要在运行时解密?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在数据库中存储加密的机密用户信息,需要在运行时解密?相关的知识,希望对你有一定的参考价值。
我正在创建一个应用程序,我需要存储客户端的信息(比如他们的API密钥和API密码来访问我的服务,以及其他机密信息)。
现在,在数据库中,我想以加密格式存储它们。在这方面,我决定采用对称密钥加密技术,AES具体加密细节。
但是,出于安全考虑,我希望在每个客户端的基础上使用不同的AES加密密钥,这样即使数据库受到攻击,也无法使用单个密钥解密所有数据。
但是,由于显而易见的原因,我不想将我的私钥存储在带有加密信息的数据库中。
所以,我似乎无法决定如何存储我的密钥,特别是因为我需要绑定哪个密钥属于哪个客户端。
我怎样才能实现这一目标,哪种方案最适合这种情况?
答案
使用KDF从用户密码派生加密密钥,然后使用此密钥加密其私人信息。
如果要采取任何需要其API密钥或您正在存储的其他私有数据的操作,只需请求用户密码并使用它再次导出密钥并使用密钥进行解密。
如果您希望用户能够更改其密码,请为每个用户添加中间随机密钥,并使用此密钥加密其数据。使用从其密码派生的密钥来加密随机密钥。然后在更改用户密码时,您只需要解密并重新加密随机密钥。
以上是关于如何在数据库中存储加密的机密用户信息,需要在运行时解密?的主要内容,如果未能解决你的问题,请参考以下文章