web-dev-qa-db-ja.com

MITM攻撃を行わずにSSL / TLSセッションを復号化することは可能ですか?

SSL/TLSの発生中(MITM)に接続を復号化することについて話しているのではなく、接続が閉じられ、ネゴシエーション/データ転送プロセス全体のpcapファイルを取得した後です。

接続で渡されたデータをどのように復号化できますか?セッションキーを取得する方法はありますか(計算プロセスが終了するまで数年待つ必要はありません)?量子コンピューターは役に立ちますか?

6
YSY

短い答えは「いいえ」です。より長い答えは、SSLは特にこれを不可能にするように設計されているということです。これが可能であれば、SSLは本来の目的-安全なWebサイトに送信されるクレジットカード番号のようなものを保護する-には役に立たないでしょう。

SSLがこれを行う方法についての短い(そして技術的に正しくない)答えは次のとおりです。

  1. サーバーはクライアントに証明書を提示します。

  2. クライアントは、証明書がクライアントが信頼する組織によって署名されたこと、およびこの組織が証明書がクライアントが到達したいサーバーに属していることを証明することを確認します。

  3. クライアントはランダムなキーを生成し、証明書の公開キーで暗号化して、サーバーに送信します。

  4. サーバーはキーを復号化し、サーバーとクライアントがさらに通信を保護するために必要な共有秘密を使用します。 (ただし、これはやや複雑な方法で行われます。繰り返しますが、これは過度に単純化された説明です。)

データの暗号化を解除するには、少なくとも手順3で生成された共有シークレットを回復する必要がありますが、それをどのように実行しますか?暗号化された状態で送信されただけで、サーバーの秘密鍵はありません。

14
David Schwartz

それは可能ですが、ネットワーク上にあるものを超える情報が必要です。 Wiresharkはこの種のスニッフィングを行うことができます 、会話全体を見ることができ、また秘密鍵があることを前提としていますサーバーのSSL証明書の。秘密鍵がないと機能しません。

これが、秘密鍵を保護する必要がある理由です。

この機能をソフトウェアのデバッグに使用しました。クライアント/サーバーアプリケーションはSSLを使用してデータを送信し、ネットワーク層で何かおかしいことが起こっていました。私は環境全体を制御していたので、SSL証明書の秘密鍵を持っているので、Wiresharkを使用して会話をすることができました。次に、開発に報告したバグを指摘しました。

8
sysadmin1138