web-dev-qa-db-ja.com

クライアントの秘密鍵のみでSSLトラフィックを復号化できないのはなぜですか?

WiresharkでSSLトラフィックを サーバーの秘密キー で復号化できることを発見しました。

クライアントの秘密鍵がSSLトラフィックを復号化するのに十分でないのはなぜですか?

14
Wojtek

これは、SSL/TLS接続では、非対称キー交換がサーバーの公開キーを使用してプレマスターシークレットを交換するためです。クライアント証明書は、サーバーが要求した場合にのみクライアント認証に使用されます。プレマスターシークレットは、セッションキーの生成に使用されるものです。 これが、クライアントではなくサーバーの秘密鍵が必要な理由です。

通常のSSL/TLSキー交換 enter image description here

上記の交換では、サーバーのみがその証明書を送信することに注意してください。クライアントキー交換メッセージは、サーバーの公開キーで暗号化されたプレマスターシークレットです。

クライアント認証を使用したSSL/TLSキー交換

enter image description here

上記の交換では、サーバーが証明書を送信した後、CertificateRequestメッセージも提供することがわかります。このメッセージは、クライアントに公開証明書を要求します。通常のハンドシェイクと同じようにClientKeyExchangeメッセージで応答し、ハッシュされたキー交換データに署名するClientVerifyメッセージを送信します。次に、サーバーはこの署名を使用してクライアントを検証します。

クライアントまたはサーバーは、クライアントの公開鍵を使用してハンドシェイクの情報を暗号化することはありません。したがって、セッションの復号化には必要ありません。

29
RoraΖ

クライアントは、ネゴシエーションの第4フェーズ中に通信を暗号化するためにサーバー公開鍵を使用するため(wikipedia):

4-これまでにハンドシェイクで生成されたすべてのデータを使用して、クライアント(使用している暗号に応じてサーバーの協力を得て)がセッションのプリマスターシークレットを作成し、サーバーの公開鍵(サーバーから取得)で暗号化します。手順2)で送信されたサーバーの証明書、および暗号化されたプレマスターシークレットをサーバーに送信します。

ネゴシエーションの最後に、両側が通信を暗号化するためのセッションキーを生成します。

サーバーの秘密鍵を使用するWiresharkは、ハンドシェイク中にこのセッションキーを選択できると思います。

セドリック。

5
Infsy

クライアントの秘密鍵は、クライアント証明書認証を使用する場合にのみ使用され、そこでは復号化ではなく署名のみに使用されます。 (RSA/DSAキーを使用している場合)(静的DHを使用している場合は可能ですが、静的DHはどのTLSサーバーまたはクライアントでもサポートされていません)

2
yyy

サーバー側(または理論的にはクライアントですが、これは難しく、常に機能する必要はありません)のSSL/TLSパラメータが適切に設定されていると仮定すると、サーバーの秘密キーを使用してもトラフィックを解読できません。アクティブな攻撃を実行しています。

Forward Security(FS)がクライアントとサーバー間でネゴシエートされたかどうかに依存します。クライアントが転送セキュリティアルゴリズムをネゴシエートするという保証はありません。 IEは、FSアルゴリズムを選択することで悪名高く、サーバーに依存してさまざまなオプションの優先順位を決定します。そのため、サーバー上のSSLオプション、およびサーバーがアルゴリズムの優先順位付けをサポートしている場合、IEでもForward Securityをネゴシエートすることが可能です。

(Qualsysには、ウェブサイトとの主要なブラウザーネゴシエーションをシミュレートする優れたツールがあります。) https://www.ssllabs.com/ssltest/index.html

基本的に、他のすべての主要ブラウザー(Chrome、Firefox、Safariなど)は、サーバーがサポートしている場合は通常、フォワードセキュリティを選択するため、サーバーの秘密鍵だけで復号することはできません。

2
Steve Sether

ラズの答えはあなたの特定の状況の非常に良い概要を提供します。ただし、サーバーの秘密鍵を使用してMITM攻撃を実行せずに実際に通信を復号化できる場合は、SSL/TLSが正しく設定されていないことに注意してください。

サーバー側(または理論的にはクライアントですが、これはより難しく、常に機能する必要はありません)のSSL/TLSパラメータが適切に設定されていると仮定すると、サーバーの秘密キーを使用してもトラフィックを解読できません。アクティブな攻撃を実行しています。

DHE(Diffie-Hellman交換)またはECDHE(上記の楕円曲線と同じ)をキー交換(実際にはキーの生成元であるマスターシークレットを交換する)に使用すると、パフォーマンスや使いやすさをほとんど犠牲にすることなく、セキュリティが著しく向上します。

1
DRF