无需服务器端解密即可在用户之间共享加密的机密

时间:2018-07-25 18:39:03

标签: security encryption backend

是否可以在几个(动态计数)用户之间共享加密的数据而无需在服务器端解密?

例如:

  1. 我们有管理后端的秘密
  2. 用户A创建一个秘密,以某种方式对其进行加密,然后发送到服务器进行存储
  3. 用户A希望将访问权限授予用户B
  4. 用户B现在可以从服务器获取机密,但是...

他们如何解密此机密?


这是我现在的想法:

制作2个后端:

  • 一个用于存储加密数据并管理用户之间的访问的
  • 另一种用于存储解密数据的公钥

这是我在这里关注的问题:

服务器所有者可以获取公共密钥,获取加密的数据并解密该数据。当服务器不知道哪个密钥可以解密数据时,我看不到任何一种在用户之间进行管理(包括共享公共密钥)的方法。

也许有人知道lastpass,passbolt或其他任何服务如何解决了这个问题?

2 个答案:

答案 0 :(得分:0)

您似乎对公钥和私钥的工作方式有误解。

对于给定的公钥/私钥对,任何人都可以使用公钥加密数据,但是只有私钥的所有者才能解密数据。

因此,要在用户之间传递数据,每个用户应首先:

  • 创建公钥/私钥对
  • 将其公钥上传到服务器

如果用户A要向用户B发送数据,他们将执行以下操作:

  • 从服务器中拉出用户B的公钥
  • 使用B的公钥加密数据
  • 将加密的数据上传到服务器。

服务器现在保存了加密的数据,但是由于它没有B的私钥,因此无法解密。

用户B现在可以从服务器提取加密的数据,并使用其公共密钥对其进行解密。

请注意,这仅涉及加密。它不解决身份验证问题,即确保数据来自已知来源。

通过从受信任的权威机构在每个用户的公钥上颁发证书并将每个用户的证书存储在服务器上,以及让用户将数字签名应用于使用其私钥加密的邮件,可以使此方案更加安全。然后,邮件的收件人可以使用发件人的公钥和证书来验证签名。

答案 1 :(得分:-2)

您需要使用端到端加密,其中用户设备会收到可用于解密消息的公共密钥