web-dev-qa-db-ja.com

DHEを使用している場合、(プライベート、パブリック)ペアでHTTPSを復号化することは可能ですか?

HTTPSトラフィックを含むPCAPファイルがあり、キーペア(プライベートとパブリック)があると仮定すると、Diffie Hellman Ephemeralを使用している場合、トラフィックを復号化できますか?たとえば、openSSL libを使用します。

私の知る限り、DHEは接続ごとに新しいペアを生成するため、答えは「いいえ」であり、Apache構成に配置したキーを使用しませんか?

私の仕事は、秘密鍵と公開鍵を知って、トラフィックを解読することです。もちろん、多くのCipherSuiteがあります。私はこの目的の限界を研究しています。

5
Carlos Vega

TLS/SSLハンドシェイクが開始すると、最初のステップとして、サーバーの証明書に関連付けられた秘密鍵を使用してサーバーが認証されます。 2番目のステップでは、クライアントとサーバーは、接続のペイロードの暗号化に使用されるセッションキーを交換します。セッションキーは1つのセッションに使用されます。つまり、セッションが閉じられると、同じキーを使用して別のセッションのトラフィックを暗号化できなくなります。現在の問題は、SSL/TLSがRSA暗号スイートを使用することが多く、セッションキーが秘密キーから派生していることです。したがって、基になる秘密がわかっている場合、セッションキーは将来計算できます。

DHEおよびECDHEは、Perfect Forward Secrecy(PFS)を提供します。これは、セッションキーが秘密キーから派生していないことを意味します。そのため、攻撃者は、セッションハンドシェイクで秘密鍵を使用している場合でも、トラフィックを復号化できません。

DHE(DHではない)では、セッションキーは乱数を使用して計算されます。

結論

DHEまたはECDHEが使用されている場合、秘密鍵を使用してトラフィックを復号化することはできません。

6
P4cK3tHuNt3R

参考までに:cloudflareは、RSAとDHのハンドシェイクがどのように機能するかについて、いくつかの優れたチャートをリリースしました。

https://blog.cloudflare.com/content/images/2014/Sep/ssl_handshake_rsa.jpg

https://blog.cloudflare.com/content/images/2014/Sep/ssl_handshake_diffie_hellman.jpg

要約すると、いいえ、できません。これがDHEの正確なポイントです。大まかに言えば、DHEは perfect forward secrecy を提供します。これは、永続的なサーバーの秘密鍵(サーバーの証明書の公開鍵に対応するもの)の知識では、過去のセッションを復号化するには不十分であることを意味します。

技術的には、DHEを使用する場合、サーバーの証明書と秘密鍵はsignatureに対してのみ使用されます。サーバーは一時的に新しく生成されたDH公開鍵に署名します。クライアントはその署名を検証します。したがって、秘密鍵が使用されます。暗号化のためだけではありません。サーバーの秘密キーのコピーを作成することにより、偽の署名を偽造することができます。つまり、サーバーになりすますことができます。しかし、シグネチャはデータを隠さないため、パッシブのみの攻撃(提案されているとおり)は、そのような方法で何も学ぶことができません。

サーバーがDHEを使用していて、データを表示する必要がある場合は、通常は Man-inと呼ばれる)アクティブ攻撃 -中間攻撃 。あなたは偽のサーバーを装います。サーバーの秘密鍵の知識を使用してサーバーを偽装します。クライアントが接続すると、クライアントとして真のサーバーに接続し、双方向でデータを中継します。 MitMはクライアントから受信したデータを復号化し、真のサーバーで開かれたSSL接続に再暗号化し、サーバーからクライアントへの方向で同じことを行います。そうすれば、MitMはすべてのデータを見ることができますが、接続時にアクティブに作業する必要があります。彼は事後にそれを行うことはできません、すなわち、彼が受動的に記録した過去のセッションを解読します。したがって、PFS。

2
Tom Leek