web-dev-qa-db-ja.com

OpenVPNが証明書とDHの両方を使用しているのはなぜですか?

私はOPENVPNについて読んでいますが、少し混乱しています。 OPENVPNのhowto Webサイトには、証明書とdiffie-hellman(DH)パラメーターを生成するための段階的なセットアップガイドがあります。ただし、証明書がDHと組み合わせて使用​​される理由がわかりません。

私はこれについて次のように考えています:証明書と秘密鍵は非対称暗号化に使用されているため(すべての暗号化は非対称的に行われるため、実用的ではありません)、HMACを使用してメッセージを確実にするためにDHを使用して秘密鍵が生成されます認証。

私の考えはよくわかりません。誰かがこれを明確にしてくれませんか?

7
D_E_M

キーペアは次の2つの目的で使用されます。

  • 対称暗号化の秘密値を暗号化する
  • 検証のためのデータの署名

[〜#〜] rsa [〜#〜][〜#〜] dh [〜#〜] はどちらも非対称アルゴリズムに基づいています。したがって、安全な交換を行うには2つのケースがあります。

RSA

アリスはボブへのメッセージに署名し、ボブの公開鍵でメッセージを暗号化します。ボブにメッセージを送信します。ボブは自分の秘密鍵で復号化します。署名を検証して、アリスが送信したことを確認します。メッセージは対称暗号化キーになります。これは、接続を保護するために使用されるものです。

DH

Diffie Hellman交換は、秘密の値を生成する2つの別個のエンティティに依存しています。いくつかの math magic を使用して、どちらも共通の秘密の値を生成できます。この共通の秘密は、対称鍵として、または対称鍵を導出するために使用されるものです。しかし、それぞれの側で生成されるこれらの秘密の値は、必要なときに生成されます。それらに関連付けられたIDはありません。

最後の部分は、両方が必要になる理由です。 RSAを使用すると、暗号化と署名の両方を実行するキーペアを作成できます。 DHでは、暗号化のみを実行します 署名メカニズムはありません 。したがって、送信するDHデータを検証するには、RSA証明書が必要です。

では、なぜDiffie Hellmanを使用するのでしょうか。 DHはPerfect Forward Secrecyの基盤だからです。 この回答でよりよく説明されています です。

10
RoraΖ

OpenVPNでは、クライアントとサーバー用に生成した証明書と秘密鍵は両側を認証に使用されます。クライアントとサーバーに以前の証明書を発行するために使用される認証局(CA)を最初に構築する必要があることに注意してください。

DHはKey Exchangeに使用されます。 DHパラメータはクライアントに送信され、共有のプリマスターシークレット(「キー」)を生成できます。次に、マスターシークレットがそのプレマスターシークレットから生成され、通信データの暗号化に使用されます。

2
c4mx