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は複数のプロトコルを使用して、セキュアな通信を実現します。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を復号する手順を説明します。
- Wiresharkを起動し、[Edit]menu > Preferences > Protocols > ESPを選択し、"Attempt to detect/decode encrypted ESP payloads"にチェックを入れます。
- "ESP SAs"の右にある[Edit]ボタンをクリックします。そこで+ボタンで以下の項目を設定します。
項目 | 説明 |
---|---|
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についてのご質問は、以下よりお問い合わせください。