为什么根本需要密钥交换?

信息安全 RSA 密钥交换 diffie-hellman 不对称
2021-08-17 14:40:04

假设“Alice”和“Bob”想通过不安全的网络相互通信。

使用 Diffie-Hellman 密钥交换,他们最终可以得到相同的对称密钥但是,据我了解,他们根本不必获得相同的对称密钥,因为他们可以只使用非对称密钥而无需密钥交换。

使用 RSA 算法,Alice 和 Bob 可以共享他们的公钥(public_apublic_b)并保留他们的私钥(private_aprivate_b)。Alice 可以将由public_b加密的消息发送给 Bob ,而 Bob 可以通过private_b对其进行解密。他们仍然可以通过不安全的网络进行通信,根本不需要 Diffie-Hellman 密钥交换

我知道我可能错了,但我不确定我错在哪里。有没有人知道为什么以及何时需要Diffie-Hellman 密钥交换(或任何密钥交换)?适合我上面说的情况吗?

4个回答

如果攻击者能够被动地获取数据并随后获得证书的私钥(即窃取、heartbleed 攻击或执法),那么如果加密密钥仅来自证书,则攻击者可以解码所有先前捕获的数据本身。

DH 密钥交换使创建独立于证书的密钥成为可能。这种方式仅凭证书知识不足以解码先前捕获的数据。这称为前向保密。有关更多信息,请参阅维基百科

除了使用 DH 进行前向保密之外,还有其他原因使用对称加密而不是简单地使用 RSA 私钥。因此,即使您不使用 DH 进行密钥交换,TLS 也会创建一个对称密钥,然后从证书派生该对称密钥。有关为什么直接使用私钥加密不是一个好主意的更多详细信息,请参阅为什么 PGP 使用对称加密和 RSA?.

了解原因需要许多步骤,我将尝试指导您完成每个步骤。

1) 正确使用加密...

使用 RSA 算法,Alice 和 Bob 可以共享他们的公钥(public_a,public_b)并保留他们的私钥(private_a,private_b)。Alice 可以直接向 Bob 发送经过 private_a 加密的消息,Bob 可以通过 public_a 对其进行解密。他们仍然可以通过不安全的网络进行通信,根本不需要 Diffie-Hellman 密钥交换。

那部分是完全错误的。您在这部分所做的是签名,而不是加密。由于 public_key_a 是公开的,因此您的消息根本不会被加密。而不是这样做,A 应该使用 public_key_b 加密消息,然后 B 可以使用 private_key_b 解密它们。由于 private_key_b 只有 B 知道,所以 A 知道只有 B 可以解密它。

数字签名证明消息来自特定的人。加密证明只有您、密钥持有者和加密消息的人、消息发送者知道该消息。使用非对称加密时,您需要同时具有加密和签名。加密以保护消息的机密性和签名以证明您是发送此消息的人。

但是,还有更多……例如,您仍然需要防止重放攻击。

2) Bob 通常没有公钥

假设 Alice (A) 是服务器,Bob (B) 是客户端。通常客户端没有公钥。例如,您知道公钥吗?答案很可能是否定的。因此,Bob 可以接收来自 Alice 的消息并验证它们是否真的来自 Alice,但 Alice 不能确定它从 Bob 那里收到的任何东西真的来自 Bob。

这个问题是我们添加像 Diffie-Hellman 这样的密钥交换协议的根本原因之一。

3) RSA 仅限于一个区块。

有一种用于加密长消息的技术,称为密码块链接遗憾的是,这种技术不能与 RSA 一起使用。并不是说这完全不可能,而是没有人知道我们这样做是否真的安全。因此,它将 RSA 加密限制为一个块。另一方面,像 AES 这样的对称加密算法就像块链的魅力一样,这也是我们使用它们的原因。

进一步阅读:https ://crypto.stackexchange.com/a/126/16369

4) Diffie-Hellman 是一种密钥交换协议

Diffie-Hellman 只是一种“创建和共享”密钥的方法,然后可以将其用于对称加密。Diffie-Hellman 的优势在于创建此密钥的所有对话都可以以纯文本形式进行,并且密钥仍然是私有的。

注意:Diffie-Hellman 不能解决中间人攻击的问题,因为它无法验证相互通信的各方。这个问题是用数字签名解决的。

5) Ephemeral Diffie-Hellman 提供完美的前向保密

Ephemeral Diffie-Hellman 只是一个花哨的名称,表示您在每个会话中都生成新的 Diffie-Hellman 密钥对并且您不存储它们。由于您从不存储它们,因此攻击者永远无法检索它们。

有关更多详细信息,请参阅这个非常好的答案:https ://security.stackexchange.com/a/38142/50051

6) Ephemeral Diffie-Hellman 保护您免受重放攻击

使用 Ephemeral Diffie-Hellman 的一个非常好的副作用是它还可以保护您免受重放攻击。由于服务器和客户端在每个会话中都选择一个新的随机私人 DH 密钥,因此您不能从另一个会话重放消息来模拟服务器或客户端。

结论

这是对 TLS 如何工作以及提供安全连接所需的所有这些部分的简要概述。如果没有对称加密,您将无法加密长消息,如果没有非对称加密,您将无法共享加密密钥并提供完美的前向保密。

您假设 Alice 和 Bob 可以通过不安全的网络可靠地交换公钥。

如果没有密钥交换协议,Alice 和 Bob认为会发生这种情况:(A = Alice 的公钥,B = Bob 的公钥)

Alice  ---------- A --------------> Bob


Alice  <----------- B ------------- Bob

当这真的发生时(M = 马洛里的公钥)

Alice  ----- A ------> Mallory --------- M ------> Bob

Alice  <---- M ------- Mallory <-------- B ------- Bob

Bob 和 Alice 现在认为他们正在为彼此加密消息;他们实际上只是为 Mallory 加密消息,Mallory 使用预期的接收者来解密、读取和重新加密消息

对所有消息使用 RSA 是不可取的,因为该算法的计算成本很高。使用 RSA 协商对称密钥可以让您在 CPU 使用率方面更便宜地发送更多消息。