IKE(Internet Key Exchange)
IPsecでは、セキュリティアソシエーション(SA)を生成する際にIKE(インターネット鍵交換)というプロトコルが使われます。IKEは、暗号化に使用する鍵と認証に使用する鍵の両方を安全に生成・交換・更新する仕組みを提供します。これにより、ユーザが手作業で鍵を設定しなくても、機器同士で自動的に安全な通信が始められるのです。
IKEは大きくフェーズ1とフェーズ2に分かれています。
- フェーズ1:お互いの機器が利用可能な暗号アルゴリズムや認証方式をやり取りし、最初の安全な通信路(ISAKMP SA)を確立する。
- フェーズ2:フェーズ1で作られたISAKMP SAを利用し、実際のIPsec通信に使うパラメータを交換してIPsec SAを生成する。
ISAKMPメッセージの仕組み
IKEの実装はISAKMP(Internet Security Association and Key Management Protocol)に基づいて行われます。ISAKMPメッセージはヘッダとペイロードから成り立ち、UDPの500番ポートを利用してやり取りされます。
ISAKMPメッセージが交換されることで、暗号方式や認証方式、鍵の生成に必要なパラメータなどが決定され、以降のIPsec通信(ESPやAHを利用した暗号化・認証)が開始されます。つまり、このメッセージがVPN通信の「最初の握手」にあたります。
ISAKMPヘッダの構成要素
ISAKMPメッセージの冒頭にあるヘッダには、通信の制御に必要な情報が入っています。主な項目をまとめると以下の通りです。
| 項目 | 説明 |
|---|---|
| Initiator Cookie | 通信開始側が生成する識別子 |
| Responder Cookie | 通信応答側が生成する識別子 |
| Next Payload | 次に続くペイロードのタイプを示す |
| MjVer / MnVer | ISAKMPのバージョン番号(通常1.0) |
| Exchange Type | モードの種類(Main=2、Aggressive=4、Quick=32など) |
| Flags | Aビット、Cビット、Eビットを含む。暗号化済みならEビットが立つ |
| Message ID | フェーズ2でメッセージを識別する番号 |
| Length | メッセージ全体の長さ |
ISAKMPペイロードの種類
ISAKMPメッセージの本体部分はペイロードと呼ばれ、やり取りする内容に応じて種類が変わります。例えば、フェーズ1のMainモードでは、SA、Proposal、Transform、Key Exchangeなど複数のペイロードが組み合わさって送信されます。
代表的なペイロードタイプは次の通りです。
| 値 | タイプ名 | 内容 |
|---|---|---|
| 1 | SA | セキュリティアソシエーション情報 |
| 2 | Proposal | 提案される暗号アルゴリズム |
| 3 | Transform | 提案されたアルゴリズムの詳細 |
| 4 | KE | 鍵交換に必要な値(Diffie-Hellmanなど) |
| 5 | ID | 通信相手の識別情報 |
| 6 | CERT | 証明書 |
| 7 | CR | 証明書リクエスト |
| 8 | HASH | 認証用のハッシュ値 |
| 9 | SIG | 電子署名 |
| 10 | NONCE | 一度きりの乱数値(リプレイ攻撃防止) |
| 11 | N | 通知メッセージ |
| 12 | D | SA削除メッセージ |
| 13 | VID | ベンダー固有情報 |
| 20 | NAT-D | NAT環境の検出用 |
| 21 | NAT-OA | NAT前のアドレス情報 |
ここで重要なのは、「SAやProposal、Transformによって利用する暗号方式が決定される」「KEやNONCEが安全な鍵交換を支えている」という点です。
IKE フェーズ1
IKEフェーズ1では、相手の機器と安全に通信できるようにするためのISAKMP SAを作成します。この段階で、暗号方式や認証方式といった基本的なパラメータが決定されます。
フェーズ1で決定される主なパラメータ
- 暗号化アルゴリズム:ISAKMPメッセージの暗号化方式(DES / 3DES / AES)
- ハッシュアルゴリズム:認証や鍵計算に利用する方式(MD5 / SHA-1)
- ライフタイム:ISAKMP SAの有効時間(単位:秒など)
- 認証方式:相手機器の正当性を確認するための認証方法(後述)
- DHグループ:Diffie-Hellman鍵交換のパラメータ(グループ1 / 2 / 5)
Diffie-Hellman(DH)でやり取りされる値自体は暗号化されていませんが、アルゴリズムの特性によって安全に共通鍵を生成できる仕組みになっています。
フェーズ1のモード
フェーズ1には2つのモードがあります。
- Mainモード
- 6回のメッセージ交換でISAKMP SAを確立する
- ①② SAパラメータのネゴシエーション
- ③④ 鍵交換のパラメータ交換と計算
- ⑤⑥ 通信相手の認証
- 時間はかかるが、セキュリティ的に強固
- Aggressiveモード
- 3回のメッセージ交換で完了
- Mainモードより速いが、やり取りできる情報が少ないため柔軟性に欠ける
- 一部の制限を緩和する場面で利用される
フェーズ1の認証方式
IKEフェーズ1では相手の正当性を確認するため、次の認証方式が利用されます。
- Pre-Shared Key(事前共有鍵)
あらかじめ同じ文字列(パスフレーズ)を両方の機器に設定しておく方式。最もシンプルで広く使われる。 - デジタル署名(RSA署名)
秘密鍵で生成した署名と公開鍵での検証により改ざんやなりすましを防ぐ。現在主流の方式。 - 公開鍵暗号
相手の公開鍵で暗号化し、受信側が秘密鍵で復号する方式。認証に利用可能。 - 改良型公開鍵暗号
計算量を減らして効率化した方式。公開鍵暗号の発展型。
IKE フェーズ2
IKEフェーズ2では、実際にIPsecで使うためのIPsec SAを作成します。この段階では、暗号化や認証に関する具体的なパラメータが決定されます。
フェーズ2で決定される主なパラメータ
- セキュリティプロトコル:AH または ESP
- 暗号化アルゴリズム:DES / 3DES / AES
- 認証アルゴリズム:HMAC-MD5 / HMAC-SHA1
- ライフタイム:IPsec SAの有効時間
- カプセル化モード:トンネルモード または トランスポートモード
- DHグループ(任意)
- フェーズ2では必須ではない
- 追加でDiffie-Hellmanを行い、より強固なセキュリティを確保する場合に利用
- この仕組みをPFS(Perfect Forward Secrecy)と呼ぶ
フェーズ2のモード
フェーズ2ではQuickモードのみが使用されます。
- 計3回のメッセージ交換で完了
- フェーズ1で作成したISAKMP SAの上でやり取りされるため、すでに暗号化されている状態で通信が進む