我理解,每个算法分析程序应该具备独立于其他算法的密钥,此密钥不依赖于特定用户,且可以解密所有用户的数据。
- 为每个算法分析程序创建独立的密钥,可以是非对称加密,称为该算法的主密钥。应安全地保存该算法主密钥。考虑使用独立的数据库,并合理设置权限。
每个算法分析程序还可以设置自己的加密上下文字符串。这可以一部分保存在程序代码中,另一部分在运行时以环境变量等参数提供。该字符串参与加密。这可以保证仅攻破数据库也不能直接拿到主密钥。
- 每个用户在注册时随机创建一个对称加密密钥,称为该用户的数据密钥。该密钥用于加密该用户的数据,并且不得将该密钥明文写入数据库。
- 使用每个算法主密钥加密用户的数据密钥,将加密结果写入数据库中各个算法独立的表中。
- 使用每个用户在注册时指定的密码或密码的哈希加密该用户的数据密钥,并将经用户密码加密过的数据密钥写入数据库。注意此加密数据密钥不应用于验证用户登录。用户每次更改密码,应更新此加密数据密钥。
- 用户登录后,将用户密码加密过的数据密钥传输至用户前端。
问 求大佬们给一个加密存储的思路