web-dev-qa-db-ja.com

DHとDHEの違いは何ですか?

私は読んでいます Bulletproof SSL and TLS

Diffie Hellmanは鍵交換メカニズムであり、サーバーとクライアントのそれぞれが秘密を共有します。バツ そしてgy ここで、gはあるグループのジェネレーターです。彼らは秘密のS =(gyバツ と(gバツy それぞれ。途中の攻撃者はgからSの値を取得できないことに注意してくださいバツ そしてgy、離散対数は難しい問題です。しかし、アクティブな攻撃者はサーバーとクライアントの両方を偽装してだますことができます。

DHKE

RSA_DHでは、サーバーがクライアントに送信する値、つまりgバツ 修正され、証明書に保存されます。したがって、「ServerKeyExchange」メッセージは送信されません。今、クライアントはそのgを送信しますy 「ClientKeyExchange」メッセージの値。これは、証明書サーバーが「Certificate」メッセージですでに送信したRSA公開鍵暗号アルゴリズムで暗号化されます。

RSA_DHEでは、サーバーがgを送信する場所で「ServerKeyExchange」メッセージが発生しますバツ クライアントに。

TLS Handshake

今私の質問は、2つの違いは何ですか?プレマスターシークレットは値(gバツy、したがって、RSA_DHでも、クライアントが異なるgを送信した場合y 各セッションの値、次に(gバツy 値は異なります。 (彼がまだ私の主張が成り立たない場合でも、私は思う)したがって、RSA_DHEの場合と同様に、前方秘密を実現します。そして、貧しい攻撃者は、gの値を取得した後でも、プリマスターシークレットを取得できません。y サーバーの秘密鍵を危険にさらすことによって。したがって、どちらの場合も、プレマスターシークレットを計算することはできません。では、なぜEphemeralの1つ(RSA_DHE)が前方秘密を達成し、他の1つは達成しないと言われているのですか?

21
prakharjain

Diffie-Hellmanは、公開鍵と秘密鍵を持つ非対称アルゴリズムです。

「DH_RSA」暗号スイートでは、サーバーの「永続的な」鍵ペアはDH鍵ペアです。公開鍵はサーバーの証明書にあります。その証明書は、他の証明書と同様に、CAによって署名されており、そのCAはRSA鍵ペアを使用します(これが「DH_RSA」で「RSA」が意味するものです)。

「DHE_RSA」暗号スイートでは、サーバーの永続キーペアのタイプはRSAです。 RSA公開鍵はサーバーの証明書に含まれています(暗号スイートは、発行CAが使用する鍵のタイプについては何も述べていませんが、通常はRSAでもあります)。クライアントが接続すると、サーバーは一時的なDH鍵ペアを生成し、公開鍵をServerKeyExchangeメッセージとしてクライアントに送信します。サーバーsigns永続的なRSA秘密鍵を含むメッセージ。

Forward secrecyは、サーバーシークレットの盗難に対して相対的に定義されるプロパティです。 "DHE_RSA"暗号スイートは、前方機密を提供します理由実際の鍵交換の秘密(DH秘密鍵)は一時的であるため、サーバーによって保存されません-サーバーがその鍵をディスクに保存しない場合、それから、それは後部の盗難に対して免疫であるべきです。逆に、「DH_RSA」は、DH秘密鍵がサーバーのハードディスクのどこかに格納されていることを意味し、その鍵が盗まれた場合、過去に記録されたセッションを復号化できます。

一部のサーバーは、通常はRAM内にDHキーペアをしばらく保持します。クライアントごとに新しいDHキーペアを作成することはありません。この動作にはパフォーマンス上の利点がありますが、定義上、前方秘密性はわずかに弱まります。これは、「過失窃盗」を定義するために使用するモデルに本当に依存します。つまり、ごみ箱にある古いハードディスクの取得、またはRAMの内容を検査するマルウェア)について話しているのですか。

18
Thomas Pornin

しかし、単純なRSA_DHが前方機密をサポートしない理由を理解できませんでした。

アリスがクライアントでボブがサーバーで、ダイアグラムの変数名を使用するとします。

非重点では、dh bは証明書の一部です。つまり、Bは長期的な秘密です。イブはaの値を含むセッションを記録します。

しばらくして、イブはBを手に入れました。おそらく彼女はサーバーをハッキングしました。おそらく彼女は法執行機関の友達に電話をかけて、サーバー管理者にそれを引き渡すよう強要しました。その後、イブはB したがって、セッションシークレットを計算し、セッションを復号化します。

Emprealでは、dh Bは短期間の秘密にすぎません。したがって、イブが後でサーバーに侵入したとしても、それが明らかになる可能性ははるかに低くなります。

3
Peter Green