为什么 OpenVPN 同时使用证书和 DH?

信息安全 证书 diffie-hellman 打开VPN
2021-08-11 09:34:34

我正在阅读有关 OPENVPN 的信息,我有点困惑。在 OPENVPN howto 网站中,有用于生成证书和 diffie-hellman (DH) 参数的分步设置指南。但是,我不明白为什么证书与 DH 一起使用。

我是这样考虑的:证书和私钥用于非对称加密(因此所有加密都是非对称完成的,这是不切实际的),而 DH 用于生成密钥以使用 HMAC 来确保消息验证。

我不确定我的想法。有人可以为我澄清一下吗?

2个回答

密钥对用于两件事:

  • 加密对称加密的秘密值
  • 签署数据以进行验证

RSADH基于非对称算法。所以我们有两种情况可以进行安全交换。

RSA

Alice 给 Bob 签署了一条消息,并使用 Bob 的公钥对消息进行加密。向 Bob 发送消息。Bob 用他的私钥解密。验证签名以确保 Alice 发送了它。该消息将是一个对称加密密钥。这是用来保护连接的。

DH

Diffie Hellman 交换依赖于两个独立的实体生成一个秘密值。通过一些数学魔法,他们都能够生成一个共同的秘密值。这个公共秘密被用作对称密钥或派生对称密钥。但这些由每一方产生的秘密值是在需要的时候产生的。他们没有与他们相关的身份。

最后一部分是您可能需要两者的原因。使用 RSA,您可以获得一个可以进行加密和签名的密钥对。使用 DH,您只执行加密,没有签名机制因此,您需要一个 RSA 证书才能验证您发送的 DH 数据。

那么为什么要使用 Diffie Hellman 呢?因为 DH 是完美前向保密的基础。这个答案更好地解释了这一点

在 OpenVPN 中,您为客户端和服务器生成的证书和私钥用于对每一方进行身份验证请注意,您应该首先建立一个证书颁发机构 (CA),用于为客户端和服务器颁发以前的证书。

DH 用于密钥交换DH 参数被发送到客户端,允许它生成一个共享的预主密钥(“密钥”)。然后将从该预主密钥生成主密钥并用于加密通信数据。