ESPの復号#1 ~IPsecの仕組みとWiresharkの設定~

ESP(Encapsulated Security Payload)は、IPsec(Internet Protocol Security)で使用するプロトコルのひとつであり、データの機密性と整合性を担保します。つまりEPS上のデータは暗号化されており、通常ではWireshark上でパケットの中身を確認することはできません。
今回は、IPsecの仕組みとESPの復号をWiresharkで行う設定と手順について解説します。

なお、以前にWiresharkでSSL/TLSの復号する記事を書いています。こちらもよろしければご覧ください。

IPsecの仕組み

IPsecは、インターネット上の通信のセキュリティを確保するためのプロトコルです。IPsecは複数のプロトコルで構成されており、データの機密性、整合性、および送信元の認証を提供しています。身近ところでいえば、IPsecはVPN接続を確立するために使用されます。
IPsec VPNを使用した場合のイメージは次のとおりです。(VPNはIPsec以外のプロトコルを使用する場合もありますので、ここではあえて「IPsec VPN」と表現します。)

IPsecイメージ図

IPsecは複数のプロトコルを使用して、セキュアな通信を実現します。RFC6071は、IPsecとIKEに関する主要なRFCドキュメントの一覧や要約、関連性と依存関係について記載されています。まずはこちらで概要を確認します。

この図からもわかるとおり、IPsecは機能により「ESP+IKE」または「AH+IKE」または(この図からではわからないかもしれませんが)「AH+ESP+IKE」のプロトコルの組み合わせで実現します。
各プロトコルについての概要は、以下のようになっています。

プロトコル 役割 タイプ
ESP IPパケットの暗号化認証 IPプロトコル番号:50
AH IPパケットの認証 IPプロトコル番号:51
IKE SA(Security Association)の確立鍵交換 UDPポート:500

IPsecでの暗号化の機能は、ESPが行っています。通常、EPSパケットはIPレイヤー以上のデータは暗号化されているため、どのようなプロトコルのデータが流れていたかがわかりません。
Wiresharkでは、暗号化の際のSAのパラメータを設定することにより、暗号化部分のデータを復号して表示することが可能です。

なお、AHとESPはともに認証機能を持っており、ESPはさらにデータの暗号化も提供します。そのため、ESPだけで十分な場合、AHを実装する必要はありません。しかしながら、AHのはIPヘッダ部分も認証の対象に含まれていることに対し、ESPはペイロード部分だけが対象となっています。
また、特定の環境下ではデータの認証だけが必要な場合があります。その場合にはAHを使用します。
ただし私が調査した限りでは、日本におけるIPsecの実装は「ESP+IKE」が主流であり、AHの使用は限定的なケースだけ、ということが一般的のようです。

IKEは、セキュアな通信の確立と維持に重要な役割を果たします。通信間でSAを確立し、適切な鍵とセキュリティパラメータを交換することで、IPsecのセキュリティ機能を実現します。

WiresharkでESPを復号する手順

IPsecの構成がわかったところで、WiresharkでESPを復号する手順を説明します。

  1. Wiresharkを起動し、[Edit]menu > Preferences > Protocols > ESPを選択し、"Attempt to detect/decode encrypted ESP payloads"にチェックを入れます。
  2. "ESP SAs"の右にある[Edit]ボタンをクリックします。そこで+ボタンで以下の項目を設定します。

WiresharkのESP設定画面

項目 説明
Protocol "IPv4"か"IPv6"を選択
Src IP 発信元IP
Dest IP 送信先IP
SPI Security Parameter Index、SAを識別するために使用される値
Encryption 暗号化方式を選択
Encryption Key 暗号化キーを入力
Authentication 認証方式を選択
Authentication Key 認証キーを入力

詳細は、Wireshark Wiki ESPを参照ください。

暗号化方式とキー、認証方式とキーはパケットからではわかりません。(当たり前ですが、だれでもわかれば、暗号化の意味がありません...。)
これらの情報は、SAD(Security Association Database)というSAのパラメータを格納するデータベースに格納されています。SADの確認方法は、IPsecの実装方法により異なりますが、コマンドラインやツール等を用いて行うことが多いです。
詳細は、IPsecを管理しているネットワーク管理者に確認してください。

あとがき

今回は、IPsecの仕組みとIPsecで暗号化の役割をしているESPの復号の手順について解説しました。次回は、Wireshark上で復号前と復号後のESPのパケットがどのように見えるかについて解説します。

パケットキャプチャ製品「SYNESIS」はVer.8.0より、SSL/TLSやESPの復号をSYENSIS上のデコード画面でサポートしています。基本的な入力パラメータは、Wiresharkと同様です。ぜひお試しください。SYNESISについてのご質問は、以下よりお問い合わせください。

SYNESIS お問い合わせ

Englishi Contents of Engineer Notes