質問: opensslコマンドラインツールを使用してsslトラフィックを復号化する opensslコマンドラインツールを使用して、手動でデータを抽出/暗号化/復号化しようとしています。私はrfc5246をレビューして、何をする必要があるかを理解してきました。そのツールでこのステップを実行できるかどうかは、私にははっきりしません。説明の秘密鍵は、自己署名証明書を作成したときに生成された秘密鍵であると想定しています。 サーバー認証と鍵交換にrsaを使用する場合、48バイトのpre_master_secretがクライアントによって生成され、サーバーの公開鍵で暗号化されてサーバーに送信されます。サーバーは秘密鍵を使用してpre_master_secretを復号化します。次に、上記のように、両方の当事者がpre_master_secretをmaster_secretに変換します。 私の仮定が正しいかどうか誰かに教えてもらえますか? opensslコマンドラインツールを使用して、サーバーの秘密鍵とクライアントから暗号化されたpre_master_secretを提供して、サーバーのpre_master鍵を生成し、マスター鍵の作成に使用できますか?もしそうなら、私はツールにあまり精通していないので、それを行う方法がわかりません。私が使用している暗号スイートはtls_rsa_with_aes_256_cbc_shaであり、wiresharkでクライアントからのpre_master_secretの長さが256バイトであることがわかります。
回答: 完全にはわかりませんが、答えはノーだと思います。 opensslコマンドラインクライアントは、ツールの異種コレクションです。 x.509コマンドは証明書の操作に役立ちますが、暗号化コマンドがopenssl自体のテスト以外に役立つことはめったにありません。一般的なアルゴリズムを使用して暗号計算を行う必要がある場合は、pythonインタラクティブコマンドラインと cryptodome ライブラリを使用することをお勧めします。ただし、ssl接続を復号化するには、通常、wiresharkを使用するのが最も簡単な方法です。 秘密鍵の場所をwiresharkに伝えます これにより、rsa暗号化を使用するtls接続が復号化されます。一時的なdiffie-hellmanを使用する接続の場合、キーだけでトラフィックを復号化することはできません。必要なのは クライアントまたはサーバーからの追加情報 です。tls_rsa_with_aes_256_cbc_sha暗号スイートを使用することは、いくつかの理由から悪い考えであることに注意してください。 forward secrecy がないため、サーバーの秘密鍵が危険にさらされると、この鍵で行われるすべての接続も危険にさらされます。 diffie-hellman鍵交換(名前にedhまたはecdheを含む)を使用する暗号スイートには、前方秘書があります。 rsa復号化を使用します。これには、実装のバグとサイドチャネルを介したリークの典型的な原因であるパディングが含まれます。 rsaに加えて名前にedhまたはecdheが含まれる、またはdsaまたはecdsaが含まれる暗号スイートは、復号化の代わりに署名を使用するため、実装上の欠陥が発生する可能性が低くなります。 これは、実装のバグとサイドチャネルを介したリークの典型的な原因であるパディングを含むcbc復号化を使用します。名前にcbcが含まれていない暗号スイートは、実装上の欠陥に悩まされる可能性が低くなります。