web-dev-qa-db-ja.com

RSA秘密鍵が漏洩した場合、SSLで非一時的なDiffie-Hellman鍵交換はどのように危険にさらされますか?

私の理解から、SSL/TLSの場合、非短命DHよりもDiffie-Hellman Ephemeral(例:DHEまたはECDHE)を推奨する主な理由の1つは、RSA秘密鍵(つまり、秘密証明書)の侵害により、攻撃者が以前にキャプチャした会話を解読します。対照的に、攻撃者が会話のキーそのときを所持していない限り、エフェメラルは復号化を防止する必要があります。

このコンテキストでは、非一時的なDiffie-Hellman鍵交換のこの復号はどのように機能しますか?それは単に、ネットワークを介して交換される暗号化されていないプリミティブを観察する場合ですか?その場合、DHを使用する目的は何ですか?RSAでキーを暗号化することによる追加のセキュリティを提供せず、RSAは既にサーバーの認証を提供していますか?

27
Polynomial

最初に、同じことを確実に話します。 [〜#〜] ssl [〜#〜] には、「一時的なDH暗号スイート」(DHE)と「非一時的なDH暗号スイート」(DH)があります。

DHEでは、サーバーの秘密鍵(ファイルに保存され、サーバーの証明書に公開鍵が含まれる永続的な鍵)のタイプはRSA(DHE_RSA暗号スイート)またはDSS =(DHE_DSS暗号スイート)、signaturesにのみ使用されます。サーバーは新しいランダムなDH鍵ペアを生成します(秘密鍵は保存されないこれが perfect forward secrecy を実現する方法です。保存されていない秘密鍵は後で盗むことはできません)、公開鍵をクライアント、サーバーがRSAまたはDSS秘密鍵で署名するメッセージ内。

DH暗号スイートでは、永続的なサーバー秘密鍵はDH秘密鍵です。サーバー証明書には、DH公開鍵が含まれています。サーバーにRSAキーがないため、サーバーはRSAキーが盗まれたことを確認できません。サーバーにはDHキーのみがあります。暗号スイートが "DH_RSA"と呼ばれる場合、これは「サーバーキーがDHキーであり、サーバー証明書が発行された(つまり署名された)証明書によってRSAキーを使用する機関 "

DH鍵交換に関与する一方の当事者のDH秘密鍵を盗むことで、RSAと同様に、共有秘密を不当に再構築できます。 「エフェメラルDH」では、PFSは「DH」で​​はなく「エフェメラル」を通じて取得されます。技術的には、「エフェメラルRSA」を使用することは可能ですが、新しいRSAキーペアの生成は少し高価ですが、新しいDHキーペアの生成は安価であるため、実際には行われません(*)。

(*)エフェメラルRSA鍵は、「エクスポート」暗号スイートの一部として古いバージョンのSSLで可能でした。これは、2000年以前の米国の輸出規制に準拠することを目的としており、サーバーは1024ビットを持つことができました。 signatureRSAキー。暗号化モードで使用される、キー交換用の一時的な512ビットRSAキーペアを生成します。けれども、実際にそれが実際に見られたことはありません。キーサイズに関する米国の輸出規制が撤廃されて以来、それは論争の的となっています。


非短命なDH暗号スイートは、DH証明書を持つサーバーが動作できるようにするために存在します。証明書にDHキーが存在するのは、以前はRSAの特許が取得されていましたが、DHは特許が取得されていなかったため、標準化団体、特にNISTは実装が必須の標準としてDHを推進していたためです。

しかし、現実はそれに追いついた。 DH証明書を使用するSSLサーバーを見たことがありません。誰もがRSAを使用しています。とにかく、RSA特許は10年前に失効しました。

23
Tom Leek

SSL/TLSの場合、次の2つが必要です。

1) client needs to authenticate the server.
2) client and server need to compute a symmetric session key.

両方を行ういくつかの方法:

最も一般的な:TLS_RSA_WITH_AES _...

RSA is used for both 1 (authentication) and 2 (computing symmetric key).

推奨:TLS_DHE_RSA_WITH_AES _...またはTLS_ECDHE_RSA_WITH_AES _...

RSA is used for 1 (authentication) and for signing the DHE keys.
DHE is used for 2 (computing symmetric key).

Perfect Forward Security(PFS)を取得するため、推奨

一般的ではありません:DH_RSA _...(これはOPの質問の非一時的なDHです)

DH is used for both 1 (Authentication) and 2 (computing symmetric key).

あなたが言及しているケースは3番目(「一般的ではない」)であり、ご覧のとおり、RSAは1(認証)にも2(計算対称鍵)にも使用されていないため、RSA秘密鍵が漏洩することはありません。 。 DH_RSAのRSAは誤解を招く可能性がありますが、Tom Leekが述べたように、サーバーの管理者は資格情報とそのDH公開鍵をCA(認証局)に提供し、CAはRS秘密鍵でDH公開鍵に署名します。

4
Babu Srinivasan