在没有服务器端解密的情况下在用户之间共享加密的秘密
Share encrypted secrets between users without server-side decription
是否可以在服务器端不解密的情况下在几个(动态计数)用户之间共享加密数据?
例如:
- 我们有管理后端的秘密
- 用户A创建一个秘密,以某种方式加密并发送到服务器进行存储
- 用户 A 想将此机密的访问权限授予用户 B
- 用户 B 现在可以从服务器获取秘密,但是...
他们如何解密这个秘密?
这是我现在的想法:
制作 2 个后端:
- 一个用于存储加密数据和管理用户之间的访问
- 另一个存储public解密数据的密钥
这里是我关心的问题:
服务器所有者可以获得 public 密钥,获取加密数据并解密该数据。当服务器不知道哪个密钥解密数据时,我看不到任何管理用户(包括共享 public 密钥)的方法。
也许有人知道 lastpass、passbolt 或任何其他服务如何解决这个问题?
您似乎对 public 和私钥的工作原理有误解。
对于给定的 public/private 密钥对,任何人都可以使用 public 密钥加密数据,但只有私钥的所有者才能解密数据。
所以要在用户之间传递数据,每个用户首先应该:
- 创建 public/private 密钥对
- 将他们的 public 密钥上传到服务器
如果用户 A 想向用户 B 发送数据,他们将执行以下操作:
- 从服务器中拉取用户 B 的 public 密钥
- 使用 B 的 public 密钥加密数据
- 上传加密数据到服务器
服务器现在持有加密数据,但无法解密,因为它没有 B 的私钥,只有 public 一个。
用户 B 现在可以从服务器中提取加密数据并使用他们的私钥解密。
请注意,这仅涉及加密。它不解决身份验证问题,即确保数据来自已知来源。
通过从受信任的机构为每个用户的 public 密钥颁发证书并将每个用户的证书存储在服务器上,以及让用户对他们加密的消息应用数字签名,可以使该方案更加安全使用他们的私钥。消息的接收者然后可以使用发送者的 public 密钥和证书来验证签名。
是否可以在服务器端不解密的情况下在几个(动态计数)用户之间共享加密数据?
例如:
- 我们有管理后端的秘密
- 用户A创建一个秘密,以某种方式加密并发送到服务器进行存储
- 用户 A 想将此机密的访问权限授予用户 B
- 用户 B 现在可以从服务器获取秘密,但是...
他们如何解密这个秘密?
这是我现在的想法:
制作 2 个后端:
- 一个用于存储加密数据和管理用户之间的访问
- 另一个存储public解密数据的密钥
这里是我关心的问题:
服务器所有者可以获得 public 密钥,获取加密数据并解密该数据。当服务器不知道哪个密钥解密数据时,我看不到任何管理用户(包括共享 public 密钥)的方法。
也许有人知道 lastpass、passbolt 或任何其他服务如何解决这个问题?
您似乎对 public 和私钥的工作原理有误解。
对于给定的 public/private 密钥对,任何人都可以使用 public 密钥加密数据,但只有私钥的所有者才能解密数据。
所以要在用户之间传递数据,每个用户首先应该:
- 创建 public/private 密钥对
- 将他们的 public 密钥上传到服务器
如果用户 A 想向用户 B 发送数据,他们将执行以下操作:
- 从服务器中拉取用户 B 的 public 密钥
- 使用 B 的 public 密钥加密数据
- 上传加密数据到服务器
服务器现在持有加密数据,但无法解密,因为它没有 B 的私钥,只有 public 一个。
用户 B 现在可以从服务器中提取加密数据并使用他们的私钥解密。
请注意,这仅涉及加密。它不解决身份验证问题,即确保数据来自已知来源。
通过从受信任的机构为每个用户的 public 密钥颁发证书并将每个用户的证书存储在服务器上,以及让用户对他们加密的消息应用数字签名,可以使该方案更加安全使用他们的私钥。消息的接收者然后可以使用发送者的 public 密钥和证书来验证签名。