Diffie-Hellman 及其 TLS/SSL 用法

信息安全 tls diffie-hellman
2021-08-12 18:12:53

我正在努力理解 TLS 中 Diffie-Hellman (DH) 的(非)使用。

  • DH已经存在很长时间了,为什么几乎没有人使用它呢?
  • DH 只用于“密钥共享”,为什么没有人使用 DH 秘密来加密一切?为什么我们需要一个对称密钥,当我们已经有一个 DH 秘密时,它足以传输另一个秘密?这也适用于 SSH(不是?)。我认为有一个简单的答案,但我找不到它。
2个回答

的Diffie-Hellman在SSL / TLS使用,如“短暂的Diffie-Hellman”(密码套件,在他们的名字“DHE”;看到标准)。很少遇到的是“静态 Diffie-Hellman”(名称中带有“DH”的密码套件,但既不是“DHE”也不是“DH_anon”):这些密码套件要求服务器拥有一个带有 DH 公钥证书由于各种历史和经济原因,很少支持它,其中主要是 RSA ( PKCS#1 )的免费标准的可用性,而 Diffie-Hellman ( x9.42 )的相应标准花费一百钱,虽然不多,但足以震慑大多数业余开发者。

Diffie-Hellman 是一种密钥协商协议,这意味着如果两方(例如 SSL 客户端和 SSL 服务器)运行该协议,他们最终会得到一个共享密钥K。但是,客户端或服务器都不能选择K的值在他们看来,K看起来是随机生成的。它是秘密的(只有他们知道K;线路上的窃听者不知道)和共享的(他们都得到相同的K值),但不是选择的。这不是加密。但是,共享密钥K足以使用对称加密算法处理 TB 的数据(相同K在一侧加密并在另一侧解密),这就是 SSL 中发生的事情。

不过,有一种著名的非对称加密算法,称为 RSA。使用 RSA,发送者可以使用接收者的公钥加密消息M ,接收者可以使用他的私钥解密并恢复M。这一次,发送者可以选择M的内容。

所以您的问题可能是:在 RSA 世界中,我们为什么要为 AES 烦恼?答案在于以下几点:

  • 对M有限制如果接收者的公钥大小为 n(以字节为单位,例如,对于 2048 位 RSA 密钥,n = 256 ),则M的最大大小为n-11个字节。为了加密更长的消息,我们必须将它分成足够小的块,并包含一些重组机制。没有人真正知道如何安全地做到这一点。我们有充分的理由相信单个消息上的 RSA 是安全的,但是任何拆分和重组系统中都可能潜藏着细微的弱点,我们对此并不满意。对称密码已经够糟糕了,数学情况更简单,

  • 即使我们可以处理拆分和重组,也会有尺寸扩展。使用 2048 位 RSA 密钥,内部消息块的大小最多为 245 个字节,但在加密时,它会产生一个 256 字节的序列。这浪费了我们的生命能量,即网络带宽。对称加密只会产生有限的开销(好吧,SSL 会增加与数据大小成比例的轻微开销,但它比仅 RSA 协议会发生的开销要小得多),

  • 与 AES 相比,RSA 慢得要命,

  • 我们真的很喜欢选择使用 DH 等密钥协议协议而不是 RSA。在更早的时期(2001 年之前),RSA 获得了专利,但 DH 没有,因此美国政府推荐 DH。如今,我们希望能够切换算法以防万一出现故障。为了支持密钥协商协议,我们需要一些对称加密,所以我们不妨将它与 RSA 一起使用。它简化了实现和协议分析。

有关SSL 如何工作的详细说明,请参阅此答案。

我认为现在的安全 ep。412“SSL & Perfect Forward Secrecy”有你想要的。

也许您应该只搜索阅读他们的成绩单以查找“Diffie”,因为这些播客在到达重点之前有很多新闻/杂项内容。

报价:

但是今天的许多浏览器和许多服务器都支持所谓的 Diffie-Hellman Ephemeral,DHE。短暂的具体意思是“暂时”。所以这就是 DHE,Diffie-Hellman Ephemeral,是一种与服务器身份验证解耦的技术——这是关键,“解耦”。正如我刚才对 Diffie-Hellman 所说,观察交换的第三方一无所知。这正是我们希望 SSL 连接免受长期归档的保护。服务器私钥的长期存档和随后的泄露对破解 Diffie-Hellman Ephemeral 保护没有任何帮助。

他们特别说明了为什么它还没有被充分使用:

但是 Microsoft 不提供任何也具有 RC4 的 Diffie-Hellman Ephemeral [...],即密码 [...]。不幸的是,它们都是 CBC,密码块链接。这就是易受 BEAST 攻击的加密协议。

这里他们指的是他们在 ep 中描述的SSLLabs测试。395(和 396)。