Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何在数据库中存储加密的机密用户信息,这些信息需要在运行时解密?_Security_Encryption_Cryptography - Fatal编程技术网

Security 如何在数据库中存储加密的机密用户信息,这些信息需要在运行时解密?

Security 如何在数据库中存储加密的机密用户信息,这些信息需要在运行时解密?,security,encryption,cryptography,Security,Encryption,Cryptography,我正在创建一个应用程序,需要在其中存储客户的信息(如他们的API密钥和API机密,以访问我的服务以及其他机密信息) 现在,在数据库中,我想以加密格式存储这些文件。在这方面,我决定使用对称密钥加密,AES对细节进行加密 但是,出于安全目的,我希望在每个客户机上使用不同的AES加密密钥,这样即使数据库被破坏,也无法使用单个密钥对所有数据进行解密 但是,由于明显的原因,我不想在数据库中存储带有加密信息的私钥 因此,我似乎无法决定如何存储密钥,特别是因为我需要绑定哪个密钥属于哪个客户机 如何实现这一点?

我正在创建一个应用程序,需要在其中存储客户的信息(如他们的API密钥API机密,以访问我的服务以及其他机密信息)

现在,在数据库中,我想以加密格式存储这些文件。在这方面,我决定使用对称密钥加密AES对细节进行加密

但是,出于安全目的,我希望在每个客户机上使用不同的AES加密密钥,这样即使数据库被破坏,也无法使用单个密钥对所有数据进行解密

但是,由于明显的原因,我不想在数据库中存储带有加密信息的私钥

因此,我似乎无法决定如何存储密钥,特别是因为我需要绑定哪个密钥属于哪个客户机


如何实现这一点?在这种情况下,哪种方法是最好的?

使用KDF从用户密码派生加密密钥,然后使用此密钥加密其私人信息

当采取任何需要API机密或任何其他存储的私有数据的操作时,只需请求用户密码并使用它再次派生密钥并使用密钥进行解密


如果希望用户能够更改其密码,请为每个用户添加一个中间随机密钥,并使用此密钥加密其数据。使用从其密码派生的密钥加密随机密钥。然后,在更改用户密码时,您只需解密并重新加密随机密钥。

使用KDF从用户密码派生加密密钥,然后使用此密钥加密其私人信息

当采取任何需要API机密或任何其他存储的私有数据的操作时,只需请求用户密码并使用它再次派生密钥并使用密钥进行解密


如果希望用户能够更改其密码,请为每个用户添加一个中间随机密钥,并使用此密钥加密其数据。使用从其密码派生的密钥加密随机密钥。然后,在更改用户密码时,您只需解密并重新加密随机密钥。

这实际上属于security.stackexchange.com网站。当您倾向于在stackoverflow上使用安全标记而不指定语言或运行时环境时,您应该将其视为一个危险信号。这实际上属于security.stackexchange.com网站。当您倾向于使用安全标记而不在stackoverflow上指定语言或运行时环境时,您应该将其视为一个危险信号。