Forward Secrecy の鍵交換 (ECDHE)を使用した SSL/TLS 通信を Wireshark で復号する

ネットワーク

TLSv1.3 では静的な鍵交換方式(RSA 等)が使用できなくなり、サーバの秘密鍵を Wireshark に登録する方法では SSL/TLS 通信を復号することができなくなりました。
以下の記事では RSA を用いた SSL 通信の復号について紹介しましたが、今回は Forward Secrecy である ECDHE による鍵交換を行う SSL/TLS 通信を復号します。
HTTPS サーバの構築についても、以下記事で説明しています。

Forward Secrecy とは?

Forward Secrecy とは、秘密鍵が漏洩しても過去にその秘密鍵で暗号化された通信を解読できないようにする考え方です。

RSA などの静的な鍵交換方式では、同じ秘密鍵が使われるため漏洩してしまうと過去にその秘密鍵で暗号化された通信も解読されてしまいます。
したがって、Wireshark に秘密鍵を登録することでその秘密鍵で暗号化された SSL/TLS 通信を復号できました。

対して ECDHE などの Forward Secrecy な鍵交換方式では同じ鍵が使用されないため、たとえ鍵が漏洩してもその他の通信が解読されるといったことはありません。

どうやって通信を復号する?

復号に使用する鍵が一定でないため、都度その通信を復号する鍵を入手する必要があります。
これを実現させるために、SSL/TLS 通信の度にブラウザから鍵を吐き出させます。
この吐き出すデータを Wireshark に登録することで、変化する鍵を用いて通信を解読することができます。

環境変数「SSLKEYLOGFILE」

環境変数の「SSLKEYLOGFILE」で任意のファイルを指定することで、SSL/TLS 通信に使用する鍵情報をファイル出力させることができます。

ここでは、Windows 10 で「SSLKEYLOGFILE」を任意のファイルに出力させる方法を説明します。

左下のファイル検索ウィンドウで「env」と入力し以下画面を表示します。

「環境変数」をクリックし、以下画面を表示します。

上記箇所の「新規」をクリックし、以下画面に移動します。
この画面で、変数名及び変数値(任意のファイル名)を以下のように入力します。

OKをクリックすると、以下の状態になります。

その後OKをクリックします。
次回以降 SSL/TLS 通信が発生すると、指定したファイルが作成され、そのファイルに鍵情報が書き込まれます。

実際にファイルを確認していきましょう。
インターネットで調べたところ、Chrome もしくは Firefox であればファイルに鍵情報が書き込まれていくようです。

ただ、私の環境で確認したところ、Google chrome 80.0.3987.163 ではファイルが作成されませんでした。
80未満のバージョンでは動作確認できているように見受けられるため、バージョン差分でファイル出力できていないと思われます。

そのため、今回は Firefox で動作確認していきます。
Firefox のバージョンは 74.0.1 です。

Firefox で WEB サーバに接続してみます。

すると、指定したファイルに以下のように鍵情報が書き込まれていることが確認できました。

Wireshark に鍵情報を登録する

先述したファイルを、Wireshark に登録します。
秘密鍵を登録した際と同様に、[編集] > [Protocols] > [TLS] と進みます。

上記画面の「(Pre)-Master-Secret log filename」に、鍵情報を出力させているファイルを指定します。

これでOKを押すと、Firefox での TLSv1.3 の通信を復号できるようになります。

TLSv1.3 の通信を復号する

Wireshark でパケットキャプチャの取得を開始し、Firefox で HTTPS サーバにアクセスします。
すると、以下のように TLSv1.3 のプロトコルであっても通信を復号することができました。

なお、TLSv1.2 以下のプロトコルであっても、この方法で復号することが可能です。

まとめ

なぜ秘密鍵の登録では復号できないのか、「SSLKEYLOGFILE」を指定することで復号できるようになるのかといったロジックの部分は今回かなり省略しています。
細かいことはいいから復号の方法を知りたいという場合は良いかと思いますが、それだとトラブルシューティングができなかったりと汎用性がなくなってしまうため、暗号化についてはまだまだ勉強をしていきたいと思っています。
今後このブログで学んだことを紹介させていただきます。

今回は以上です。

くどり

この記事は「ハッキング・ラボのつくりかた 第7章 」をベースに作成しています。購入リンクは以下です。
※Amazonアソシエイトを使用しています。

コメント

タイトルとURLをコピーしました