私はOPENVPNについて読んでいますが、少し混乱しています。 OPENVPNのhowto Webサイトには、証明書とdiffie-hellman(DH)パラメーターを生成するための段階的なセットアップガイドがあります。ただし、証明書がDHと組み合わせて使用される理由がわかりません。
私はこれについて次のように考えています:証明書と秘密鍵は非対称暗号化に使用されているため(すべての暗号化は非対称的に行われるため、実用的ではありません)、HMACを使用してメッセージを確実にするためにDHを使用して秘密鍵が生成されます認証。
私の考えはよくわかりません。誰かがこれを明確にしてくれませんか?
キーペアは次の2つの目的で使用されます。
[〜#〜] rsa [〜#〜] と [〜#〜] dh [〜#〜] はどちらも非対称アルゴリズムに基づいています。したがって、安全な交換を行うには2つのケースがあります。
アリスはボブへのメッセージに署名し、ボブの公開鍵でメッセージを暗号化します。ボブにメッセージを送信します。ボブは自分の秘密鍵で復号化します。署名を検証して、アリスが送信したことを確認します。メッセージは対称暗号化キーになります。これは、接続を保護するために使用されるものです。
Diffie Hellman交換は、秘密の値を生成する2つの別個のエンティティに依存しています。いくつかの math magic を使用して、どちらも共通の秘密の値を生成できます。この共通の秘密は、対称鍵として、または対称鍵を導出するために使用されるものです。しかし、それぞれの側で生成されるこれらの秘密の値は、必要なときに生成されます。それらに関連付けられたIDはありません。
最後の部分は、両方が必要になる理由です。 RSAを使用すると、暗号化と署名の両方を実行するキーペアを作成できます。 DHでは、暗号化のみを実行します 署名メカニズムはありません 。したがって、送信するDHデータを検証するには、RSA証明書が必要です。
では、なぜDiffie Hellmanを使用するのでしょうか。 DHはPerfect Forward Secrecyの基盤だからです。 この回答でよりよく説明されています です。
OpenVPNでは、クライアントとサーバー用に生成した証明書と秘密鍵は両側を認証に使用されます。クライアントとサーバーに以前の証明書を発行するために使用される認証局(CA)を最初に構築する必要があることに注意してください。
DHはKey Exchangeに使用されます。 DHパラメータはクライアントに送信され、共有のプリマスターシークレット(「キー」)を生成できます。次に、マスターシークレットがそのプレマスターシークレットから生成され、通信データの暗号化に使用されます。