在受损线路上进行(安全)加密是不可能的吗?

信息安全 加密 密钥交换
2021-09-06 10:01:49

我意识到这样的事情将成为通信安全的圣杯,并且从未听到任何暗示它已经完成的消息。

我只是想知道。许多数学家和计算机科学家花时间为理论情况做证明。有没有人做过证明来排除在开放或已经受损的线路上进行密钥交换(或其他一些加密设置)的可能性?

明确地说,我的意思是:A 和 B 正在通信,而 C 有可能正在监听(理想情况下,C 不是实时监听,只是记录 A&B 以便稍后采取行动)。A 和 B 是否不可能通过受损线路交换信息以设置 C 无法立即破解的新加密线路?

最后澄清:我意识到公钥可以通过不通过线路传输整个加密方法在技术上解决问题。即使只是理论上的,您还有什么其他工作吗?这感觉更像是一个漏洞,而不是直接解决问题。

4个回答

如果攻击者只是被动地监听连接,那么可以进行Diffie Hellman 密钥交换来创建一个只有通信对等方知道的公共密钥。

但是,如果攻击者不仅可以监听连接,还可以主动修改传输的数据,那么攻击者可能会发起中间人攻击,并声称自己是 A 和 B 的预期通信伙伴。这可以仅当 A 可以在开始加密通信之前识别B 并因此知道它与预期的伙伴交换了密钥时才被阻止。为此,即使线路受到破坏,它也需要一种安全的方式来验证身份。这可以通过公钥密码术来完成。但是当然,它需要某种关于 B 的预期身份的先验知识,即 A 已经知道 B(直接信任)或者它知道知道 B 的人等(信任链)。

您会发现所有这些都使用 SSL/TLS 和相关的PKI的实现。这与浏览器中的 https 一起使用,构建信任链所需的信任锚是操作系统或浏览器已知的公共证书机构。有关更多信息,请参阅SSL/TLS 如何工作?.

确实有办法解决这个问题!它被称为Diffie-Hellman 密钥交换协议

您可以在 wikipedia 链接上阅读一个很好的描述,但基本思想是 Alice 和 Bob 都有各自的private keys和对应的public keys. 从 Diffie-Hellman 数学的魔力中,

PublicKey_Alice + PrivateKey_Bob = SharedSecret

PublicKey_Bob + PrivateKey_Alice = SharedSecret

双方最终得到相同的共享秘密。因此 A) 仅在不安全的网络上交换了公钥,并且 B) 为了破解共享秘密,您需要知道Alice 的私钥Bob 的私钥。(你可以通过快速谷歌找到数学的细节,所以我不会在这里详细介绍。)

所以是的,Diffie-Hellman 被认为是两方建立共享对称加密密钥的一种安全方式,即使在查理正在监听他们交换的所有内容的不安全网络上也是如此。

当且仅当在过去的某个时间点建立了允许您对第二方进行身份验证的信任链时,才有可能。常识应该是,如果 A从来不知道如何识别 B(或如何识别任何可以间接识别 B 的人),那么根据定义,A 根本没有足够的信息来区分 B 和其他一些实体,C.

数学不是魔术。如果你从来不知道如何直接或间接地识别某人,那么数学并不会神奇地为你提供那条信息。

这不仅没有被证明是不可能的,而且在足够安全的情况下实际上也不是可能的。还存在一种可证明的安全方法(“安全”是指能够任意选择最高可能的可能性)。

正如其他答案中所提到的,与 PKI 的 Diffie-Helmann 密钥交换是建立共享密钥的一种相当安全的方式,不能(无论如何都不容易)被窃听。显然,只要您不完全控制自己非常私密的 PKI,恶意 CA 就可以(而且他们目前确实如此)破坏了这个系统。但是,对于大多数攻击者来说,它是相当安全的。

除了 PKI 之外,诸如强制延迟互锁协议或站到站协议或 DH-EKE 派生类(如 RFC5247 中所述)之类的方法虽然不是牢不可破的,但可以成功地阻止大多数中间人攻击,并且具有相当好的性能概率,即使没有 PKI。
如果攻击者能够正确“猜测”的可能性足够低,那么在实践中这很可能被认为是“安全的”。

量子密钥分发还没有为公众准备好,但它已经工作了十年左右。不是在理论上,而是在实践中。

与其他方法不同,它保证您拥有一个其他人都不知道的共享密钥(或者更确切地说,您可以为某人可能知道您的密钥的可能性设置一个任意低的阈值,但这与“保证”一样好)。
我预计这可能会在大规模量子计算机被部署来攻击 DH 之后的某个时间成为主流(或者可能不会,因为为了击败神奇的量子力量,你需要做的就是双倍的密钥长度,所以它是并不是真的那么可怕)。