有没有办法在没有先验知识的情况下在两方之间协商秘密?

信息安全 验证 密码学 公钥基础设施 密钥交换
2021-08-19 18:19:42

有没有办法让两方在没有预先共享知识的情况下协商共享秘密(例如,会话密钥)?

SSL 通过使用非对称加密来做到这一点。有没有其他方法可以在不使用 PKI 的情况下实现这一目标?

2个回答

有 Diffie-Hellman(SSL 也可以使用),但这只有在攻击者无法执行主动攻击或各方可以相互验证时才安全。

有许多用于建立共享秘密的密钥协商协议,例如 Diffie-Hellman。真正的麻烦是:一个共享的秘密,是的,但与谁?

在计算机世界中,身份就是知识。您想与 Bob 分享一个秘密,但不想与任何冒充 Bob 的人分享:因此,Bob 必须能够“做某事”,而 Charlie 不能;否则,您将无法可靠地区分它们。每个人都拥有相同的计算机,因此“能够做某事”等同于“知道一些机密信息”。

使用 SSL,使用证书,这意味着存在非对称加密。Bob 与 Charlie 不同(从您的角度来看),因为 Bob 知道与证书中的公钥对应的私钥(而 Charlie 不知道该私钥)。

总结一下:如果你和 Bob 知道一个共享的秘密,那么你可以使用它来相互验证。否则,如果 Bob 知道一个非共享秘密,那么这个秘密就是公钥/私钥对中的私钥;所以问题变成了:你怎么知道你要使用的公钥确实是 Bob 的?PKI 是一种实现方式,它借助“权威”执行 Bob 的身份(不是计算机世界的一部分)和 Bob 的公钥(在计算机世界中)之间的链接。

“PKI”是一个宽泛的术语,涵盖了一种退化的情况,在这种情况下,就是你自己的 PKI。也就是说,你遇到了 Bob 一次,他给了你他的公钥(或其哈希);之后,您使用该知识来确保您使用的是“正确的” Bob 的密钥。这就是SSH的工作原理。