ESP
IPsecを構成するプロトコルの1つ。パケットの暗号化による機密性の確保と、改ざんの検出(完全性)、送信元の認証を行う。IPのプロトコル番号は50。
イマシルちゃんの解説
IPsecには、パケットを守る係が2人いるんだ。
AHは「この手紙は本物で、書き換えられてないよ」って保証してくれる、ハンコ係。
ESPは、ハンコに加えて、手紙を封筒に入れて中身を見えなくしてくれる、封筒係なんだ!
中身を秘密にしたいなら、ESPを使うんだよ。
より深い解説
定義
ESP(Encapsulating Security Payload)は、RFC 4303で定められた、IPsecのセキュリティプロトコルである。保護するデータを暗号化してESPヘッダーとESPトレーラの間に入れ(カプセル化し)、必要に応じて完全性を確認するための認証データ(ICV)を付ける。
ESPが提供する機能
| 機能 | 内容 |
|---|---|
| 機密性 | データを暗号化して、盗聴されても読めないようにする |
| 完全性 | 認証データ(ICV)で、改ざんを検出する |
| 送信元の認証 | 共有した鍵を持つ相手から送られたことを確認する |
| リプレイ攻撃の防止 | シーケンス番号で、同じパケットの再送による攻撃を防ぐ |
パケットの構成
| 元のIPヘッダー | ESPヘッダー | TCP/UDP+データ | ESPトレーラ | 認証データ |
└──── 暗号化の範囲 ────┘
└────────── 認証の範囲 ──────────┘
| 新しいIPヘッダー | ESPヘッダー | 元のIPヘッダー | TCP/UDP+データ | ESPトレーラ | 認証データ |
└────────── 暗号化の範囲 ──────────┘
└──────────────── 認証の範囲 ────────────────┘
トンネルモードでは、元のIPヘッダーも暗号化の範囲に含まれる。そのため、VPNの区間では、元の送信元・宛先のIPアドレス(拠点の内部のアドレス)を隠せる。一方、外側の新しいIPヘッダーは、暗号化も認証もされない。
| フィールド | 内容 |
|---|---|
| SPI | どのSAを使うかを示す番号 |
| シーケンス番号 | リプレイ攻撃の防止に使う |
| ESPトレーラ | パディング(ブロック暗号の長さ合わせ)と、次ヘッダー(中身のプロトコル) |
| 認証データ(ICV) | 完全性の確認用の値 |
AHとの比較
| ESP | AH | |
|---|---|---|
| 暗号化 | できる | できない |
| 完全性・認証 | できる | できる |
| 認証の範囲 | ESPヘッダー以降(外側のIPヘッダーは含まない) | IPヘッダーを含むパケット全体(途中で変わるフィールドを除く) |
| NAT | NAT-Tで通過できる | 通過できない |
| プロトコル番号 | 50 | 51 |
ESPは暗号化と認証の両方ができるため、現在のIPsecでは、AHを使わずにESPだけを使うのが一般的である。
アルゴリズムの決め方
ESPが使う暗号化や認証のアルゴリズムと鍵は、ESPのヘッダーで交渉するのではなく、IKEによって事前に合意され、SAとして共有される。2つのホストの間でアルゴリズムを決めるためにAHを使う、ということはない。