【发布时间】:2018-11-06 14:49:17
【问题描述】:
我想知道以下是否可能。
与服务器交换密码时,应保护密码。因此,用户可以使用生成的密钥 kUser 加密密码。 Encrypt(m, kUser) 生成加密消息eU(m)。现在用户将此信息发送到服务器。服务器现在使用自己的密钥 kServer 加密消息。 Encrypt(eU(m), kServer) 导致 eS(eU(m))。现在服务器发回这个信息,用户现在用他以前使用的密钥解密消息。 Decrypt(eS(eU(m), kUser) 这会导致 eS(m) 吗?这可能吗?
这就像一个装有信息的手提箱成像。用户将他的锁 A 放在手提箱上并将其发送到服务器。除了拥有锁 A 的钥匙的人之外,没有人可以访问该信息。服务器现在将第二个锁 B 除了锁 A 放在手提箱上并将其发送回用户。手提箱现在被两把锁 A 和 B 锁住。然后用户使用他的钥匙 A 移除他的锁 A 并将只剩下锁 B 的手提箱发送到服务器。服务器现在用他的密钥 B 移除锁 B 并且可以访问信息。
如何实现这样的系统(如果可能的话)?
【问题讨论】:
-
请阅读How to Ask。
-
只使用 TLS。不要尝试实现自己的加密。
-
看起来更像是您将消息放在了一个上锁的手提箱
eU(m)然后 - 而不是添加第二个锁 - 将 那个 手提箱放在另一个上锁的手提箱 @987654330 @ - 所以即使你有eU(m)的钥匙,你也无法拿到它来解锁它。也许有一些时髦的数学可以解决这个问题,但我认为这是一个更准确的描述? -
您所描述的内容与Diffie-Hellman key exchange 完全一样。正如@MadaraUchiha 所说,您不会自己实现它,而是使用经过验证的解决方案。
标签: javascript security encryption