我正在制作一项服务,该服务将存储有关给定用户的个人数据,这些数据应该只能由作者和目标查看。我想在客户端执行加密并仅将生成的垃圾存储在服务器上。
互联网告诉我使用 ,这对于单个用户的数据来说效果很好。
问题
对于我的服务,其他用户可以输入只能由他们和目标用户查看的数据——这如何通过客户端加密来实现?
是否有可能在纯粹的客户端做到这一点?
更新
考虑到这一点后,我怀疑它是否可以纯粹在客户端完成。我想出了以下可能的方法:
所有流量都使用 SSL 连接
- 生成RSA密钥,使用AES加密私钥(使用加盐密码)
- 浏览器中生成的盐
- 将密码短语 salt、公钥、加密私钥存储在服务器上
所有用他们的公钥加密的用户数据,通过让他们首先在浏览器中输入他们的密码来解密他们的私钥,然后使用 RSA 私钥解密数据来解密
如果用户希望与他人共享数据,请使用其他用户的公钥加密所述数据
我建议的方法安全吗?
将存储在服务器上的示例:
+----------+---------------------+---------------+
|Public Key|Encrypted Private Key|Passphrase Salt|
+----------+---------------------+---------------+