我有一个网络应用程序,需要用户注册并输入一些个人数据。
在注册时,会生成一个主密钥,然后使用密码派生密钥对其进行加密并存储在数据库中。当用户登录时,主密钥被解密并用于解密用户的数据。
存储解密后的主密钥的最佳位置在哪里,这样用户每次需要访问数据时就不必重新输入密码?
我目前对此的想法是这样的:
- 用于解密主密钥的用户登录和密码派生密钥
- 生成新的随机密钥并用于加密主密钥
- 在数据库会话表中存储新加密的主密钥
- 将新生成的随机密钥存储在用户浏览器中的 cookie 中,设置为在会话/注销结束时过期。
该网络应用程序由第 3 方托管,因此我无法选择创建加密分区等。
谁能建议一个更好的方法来解决这个问题?
谢谢