繁体   English   中英

在用户之间安全共享客户端加密的数据

[英]Sharing client-side-encrypted data securely between users

我正在提供一项服务,该服务将存储有关给定用户编写的个人数据,该数据只能由作者和目标用户查看。 我想在客户端执行加密,并仅将生成的垃圾存储在服务器上。

互联网告诉我使用,这对于单个用户的数据将非常有效。

问题

对于我的服务,其他用户能够输入只能由他们和目标用户查看的数据-如何通过客户端加密来实现?

是否可以这样做纯粹是客户端?

更新资料

考虑了这一点之后,我怀疑这完全可以在客户端完成。 我想出了以下可能的方法:

所有流量均使用SSL连接

  • 生成RSA密钥,使用AES加密私钥(使用加盐密码)
    • 浏览器中生成盐
  • 将密码短语盐,公钥,加密的私钥存储在服务器上
  • 所有使用公钥加密的用户数据,首先通过输入密码来解密浏览器中的私钥,然后使用RSA私钥对数据进行解密,从而对用户数据进行解密

  • 如果用户希望与其他人共享数据,请使用其他用户的公共密钥对数据进行加密

我建议的方法安全吗?

将存储在服务器上的示例:

+----------+---------------------+---------------+
|Public Key|Encrypted Private Key|Passphrase Salt|
+----------+---------------------+---------------+

您使用OpenPGP会容易得多。 OpenPGP使用公共密钥加密技术(使用RSA或Elgamal进行加密),因此该方案与您所描述的相似,但没有重新发明轮子的麻烦。

OpenPGP实现存在于包括JavaScript在内的不同语言中(尽管使用Javascript方式是很糟糕的,因为可能导致信息泄露的各种安全漏洞)。 但是,由于相同的概念上的弱点,用JavaScript实现的RSA方案同样容易受到攻击。

OpenPGP的好处之一是用户要么已经熟悉OpenPGP,要么可以找到有关它的大量信息(这增加了对您的解决方案的信任),并且已经可以拥有自己的密钥。 用户还可以使用任何OpenPGP工具生成密钥并打开加密的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM