平常時にどんなパケットがやりとりされるかを知っておくと、トラブルが起こったときに何がおかしいのかを発見しやすくなる。そこで、Wiresharkの使い方に慣れながら、通常のパソコンでやりとりされるパケットを見ていこう。

 インターネットの通信に使うHTTPS通信を取り上げる。HTTPS通信は、TLSによって暗号化されるが、データ通信を始める前の通信はパケットキャプチャーで解析できる。

3つの画面領域で情報を表示

 HTTPS通信は、主にWebサーバーとの通信に使う。HTTPSは、HTTP通信をTLSという技術を使って、安全にやりとりするようにしたプロトコル。現在のWeb通信では、従来のHTTPに代わって主流になっている。

 まず、HTTPSは仕様上どのようなやりとりをすることになっているかをおさらいしておく。

 TLSは、使用するバージョンによってやりとりする流れ(シーケンス)に違いがある。現在、一般的に使われているのは、TLS 1.2とTLS 1.3である。

 両者の大きな違いは、ハンドシェークでやりとりする回数だ。ハンドシェークとは、コネクションを確立するまでの一連のやりとりを指す。TLS 1.2はハンドシェークに2往復のやりとりが必要だが、TLS 1.3では1往復半でハンドシェークが終了する。

TLS 1.2ではハンドシェークに2往復のやりとりが必要だが、TLS 1.3では1往復半でハンドシェークが終了する
[画像のクリックで拡大表示]

 どちらのバージョンも、通信開始を示す「Client Hello」というメッセージをパソコン(クライアント)からWebサーバー(サーバー)に送ることで、ハンドシェークを開始する。

 TLS 1.2では、サーバーがClient Helloへの応答を示す「Server Hello」と合わせて、サーバー証明書と通信の暗号化に使うサーバーの鍵を送る。クライアントはこれに対して、クライアントの鍵、暗号化の指示、ハンドシェーク終了のメッセージを送る。これにサーバーが、暗号化のハンドシェーク終了のメッセージを送って、ハンドシェークが終了する。

 一方TLS 1.3では、Client Helloのメッセージを送る際に、暗号鍵の交換(DH鍵交換)に必要なデータを一緒に送る。サーバーは、Server Helloと合わせてDH鍵交換のデータとサーバー証明書、ハンドシェークの終了のメッセージを送る。これに対して、クライアントもハンドシェークを終了するメッセージを送信する。

「http」でフィルタリング

 実際のネットワーク環境でキャプチャーしたデータからTLS 1.2とTLS 1.3の違いを見てみよう。

 まずネットワークにつながったパソコンでWiresharkを起動し、GoogleやOffice 365などのWebサイトにアクセスした後、キャプチャーデータを保存した。次に表示フィルターを使って、表示するパケットを絞り込んだ。

 HTTPS通信を調べるためには、プロトコル名「http」と入力する。こうすると、HTTPやHTTPS(TLS)の通信に絞り込まれる。

プロキシーサーバーを介してHTTPS通信する際に使われるHTTPの「CONNECTメソッド」を例に説明した
[画像のクリックで拡大表示]

この先は日経 xTECH Active会員の登録が必要です

日経xTECH Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。