こんにちは!ネットワークとセキュリティの世界へようこそ。
社内ネットワークやクラウドへのアクセスなど、テレワークが当たり前になった昨今、「VPN(Virtual Private Network)」という言葉を毎日のように耳にしますよね。中でも、企業間の拠点接続などで昔から圧倒的な信頼を得て使われ続けているのがIPsec(アイピーセック)です。
しかし、いざIPsecの勉強を始めると「AH?」「ESP?」「暗号化?認証?カプセル化……?」と、アルファベット3文字や小難しい専門用語のオンパレードで頭を抱えてしまった方も多いのではないでしょうか。
そこで今回は、IPsecの安全性において“主役”とも言えるプロトコル「ESP(Encapsulating Security Payload)」に直球で焦点を当てます!
小難しいパケット構造のビット数や英語の仕様書はいったん脇に置いて、「郵便配達」のイメージで優しく紐解いていきましょう。読み終わる頃には「なんだ、ESPってそういうことだったのか!」とパケットの流れる仕組みがスッキリ理解できるようになりますよ。一歩ずつ一緒に進んでいきましょう!
—
1. そもそもIPsecとESPってどんな関係?
まずは全体像から掴んでいきましょう。
インターネットの世界は、いわば「誰でも覗き見できて、誰でも荷物をすり替えられる無防備な公道」です。
普段私たちが使っている通常のIP通信(暗号化されていない通信)は、「誰でも読める絵ハガキ」のようなもの。配達途中の郵便局員さんや、ポストを覗いた悪意ある第三者が、内容を簡単に盗み見たり(盗聴)、裏面の文字を書き換えたり(改ざん)できてしまいます。
そこで登場するのがIPsecです。IPsecはインターネット上に仮想的な専用トンネルを掘り、データを安全に届ける仕組み全体のことを指します。そして、そのトンネルの中で「実際にデータを厳重に梱包して鍵をかける作業員」こそが、今回ご紹介するESP(Encapsulating Security Payload)なのです。
ESPが提供してくれる「3つの安心」
ESPは、通信において以下の3大セキュリティを同時に提供してくれます。
1. 機密性(中身を隠す): データを暗号化して、途中でパケットを盗み見られても第三者には意味不明な文字列に見えるようにします。
2. 完全性(改ざんされていないことの証明): 途中で1文字でもデータが書き換えられたら、受信側ですぐに「壊れている!」と検知して破棄します。
3. リプレイ攻撃の防止(同じ荷物の再送を防ぐ): 悪意ある攻撃者が過去に盗み取った正規の通信パケットをそのまま再送して不正ログインなどを試みる「リプレイ攻撃」を弾きます。
—
2. 郵便配達で例えるESPのパケット構造
ESPの仕組みを理解するために、「親展の重要書類を、安全な特殊トランクに入れて送る郵便配達」をイメージしてみましょう。
通常のハガキを、厳重な「ESPパッケージ」に仕立て直す流れは次の図のようになります。
【通常のIPパケット】
┌──────────────┬───────────────────────────────┐
│ IPヘッダー │ ペイロード(手紙の本文) │
└──────────────┴───────────────────────────────┘
↓↓ ESPで梱包・保護! ↓↓
【ESPでカプセル化したパケット(トンネルモードの場合)】
┌───────────┬────────────┬─────────────────────────────┬────────────┬───────────┐
│ 新しい │ ESP │ ★暗号化される領域★ │ ESP │ ESP │
│ IPヘッダー│ ヘッダー │ (元のIPヘッダー + データ)│ トレーラー │ 認証データ│
└───────────┴────────────┴─────────────────────────────┴────────────┴───────────┘
│◄────────── 暗号化 ─────────►│
│◄─────────────────────── 認証(署名)─────────────────────►│
パケットは「先頭(ヘッダー)」だけでなく、後ろに「しっぽ(トレーラー)」や「ハンコ(認証データ)」がつくのが特徴的ですよね。それぞれのパーツを、郵便の例えとともに見ていきましょう!
① ESPヘッダー(トランクの外側に貼られた管理番号)
荷物の先頭につく、暗号化されていない「外から見える情報」です。主に以下の2つが入っています。
- SPI(Security Parameter Index): 「どの鍵を使って復号するか」を示す契約番号です。受取人はこの番号を見て、「あ、A社と取り交わした3番の鍵を使えばいいんだな」と判断します。
- シーケンス番号: 「荷物の通し番号(1号、2号、3号…)」です。古い番号の荷物がもう一度届いたら「怪しい!リプレイ攻撃だ!」と気づいてゴミ箱にポイします。
② 暗号化されたペイロード(中身の書類)
送りたい大事な手紙本文です。AESなどの強力な暗号アルゴリズムによって、完全にバラバラの読めない状態に変換されています。外からは誰にも中身が見えません。
③ ESPトレーラー(隙間を埋めるクッション材と目次)
暗号化されたデータの「直後」にくっつくお尻の部分です。ここも一緒に暗号化されます。
- パディング(緩衝材): 暗号化方式によっては「データは16バイトの倍数でないといけない」といったブロックサイズのルールがあります。足りない長さを埋めるプチプチ(緩衝材)のような役割です。
- 次ヘッダー(Next Header): 暗号化を解いた後、中に入っているデータが何者なのか(TCPなのか、元のIPパケットなのか)を示す案内札です。
④ ESP認証データ / ICV(偽造防止の電子封蝋)
パケットのいちばん最後にくっつく「デジタル署名」です。ICV(Integrity Check Value)とも呼ばれます。
ESPヘッダーからESPトレーラーまでの全データをもとに特殊な計算(ハッシュ関数など)を行い、ハッシュ値をペタッと貼り付けます。
もし配送中にハッカーがデータを1ビットでも改ざんすると、受取人が計算したハッシュ値と一致しなくなるため、「改ざんされた!」と一発で見破ることができます。
—
3. 「どこまで包む?」2つのカプセル化モード
ESPには、通信の用途に合わせて「トランスポートモード」と「トンネルモード」という2つの包み方(カプセル化の深さ)が存在します。ここも初学者がつまずきやすいポイントですので、スッキリ整理しておきましょう!
トランスポートモード(エンドツーエンド向け)
- 包む範囲: 元のIPヘッダーは残し、「データ部分(TCP/UDP+中身)」だけをESPで包みます。
- 用途: サーバーとサーバーが直接1対1で暗号通信をする場合などに使います。
- 特徴: 送信元や宛先のIPアドレスは元のまま丸見えなので、インターネット上を経由する拠点間VPNにはあまり向きません。
トンネルモード(拠点間VPN向け・超主流!)
- 包む範囲: 「元のIPヘッダーも含めて、パケット丸ごと」全部ESPで包み込んで暗号化します。
- 用途: 本社と支社をルーター同士で繋ぐ「拠点間VPN(Site-to-Site VPN)」で大活躍します。
- 特徴: 元のIPパケットをまるごと隠して鍵をかけ、その外側に「ルーター間の新しいIPヘッダー」をペタッと貼り直します。社内PCのIPアドレス(プライベートIP)がインターネット上に一切漏れないため、極めて安全です。
—
4. 実務で見るESPの設定例(Linux / strongSwan)
「仕組みはわかったけれど、実際の現場ではどう設定するの?」と思いますよね。
ここでは、LinuxでIPsec VPNを構築するデファクトスタンダードであるstrongSwan(/etc/ipsec.conf)の設定例を見てみましょう。ESPがどのように指定されているかに注目してください。
# /etc/ipsec.conf - strongSwanの設定ファイル例
config setup
charondebug="ike 1, knl 1, cfg 2"
# 本社(Site-A)と支社(Site-B)を繋ぐトンネルの設定
conn to-branch-office
# 認証方式(事前共有鍵: Pre-Shared Key)
authby=secret
# 自動起動設定(パケットが来たら自動で接続)
auto=route
# 接続タイプ: ここで「トンネルモード」を指定!
type=tunnel
# 自拠点(本社側ルーター)の指定
left=203.0.113.1 # 本社のグローバルIPアドレス
leftsubnet=192.168.10.0/24 # 本社の社内プライベートLAN
# 対向拠点(支社側ルーター)の指定
right=198.51.100.2 # 支社のグローバルIPアドレス
rightsubnet=192.168.20.0/24 # 支社の社内プライベートLAN
# 【超重要】IKEフェーズ2で使うESPの暗号・認証アルゴリズム定義
# 書式: esp=暗号化アルゴリズム-整合性認証アルゴリズム-ディフィー・ヘルマン鍵交換
esp=aes256-sha256-modp2048!
# セッション鍵の有効期限(1時間で鍵を自動更新)
lifetime=1h
設定のワンポイント解説
注目していただきたいのは esp=aes256-sha256-modp2048! の部分です。
aes256:暗号化ペイロードを「AES 256bit」という強固な鍵で暗号化します(機密性)。sha256:ESP認証データ(ICV)の計算に「SHA-256」ハッシュ関数を使い、改ざんを防ぎます(完全性)。modp2048:鍵交換時の強度を指定しています。
近年のモダンな環境では、暗号化と改ざん検知を一度に高速処理できるAES-GCM(AEAD暗号)を採用して、esp=aes256gcm128! のようにスマートに記述するケースも非常に増えていますよ。
—
5. まとめ
今回は、IPsec通信の要であるESP(Encapsulating Security Payload)の暗号化と認証の仕組みについて解説しました。
最後に、今回の重要ポイントを振り返っておきましょう。
- ESPは「機密性」「完全性」「リプレイ攻撃防止」を同時に叶える万能プロトコル
- パケットは「ESPヘッダー」「暗号化ペイロード」「ESPトレーラー」「ESP認証データ」で構成される
- ESPトレーラーはブロックサイズの隙間を埋めるクッション(パディング)と次ヘッダー案内が入る
- ESP認証データ(ICV)は改ざんを許さない電子封蝋の役割を果たす
- 拠点間VPNでは、元のIPヘッダーごと丸ごと包んで隠す「トンネルモード」が主流
ネットワークの勉強は、ヘッダーの名前やビット数から入ると難しく感じがちですが、「誰が、何のために、どこを守っているのか」という役割に目を向けると、驚くほどスッと頭に入ってくるようになります。
まずは社内ルーターのConfigやパケットキャプチャ(Wiresharkなど)で「ESP」という文字を見かけたら、「お、暗号トランクで元気にパケットが運ばれているな!」と思い出してみてくださいね。あなたのネットワークライフがより楽しいものになりますように!
コメント