IKE
IPsecで通信する機器同士が相手を認証し、使う暗号方式の合意や鍵の共有・更新を自動で行うプロトコル。通常はUDPの500番ポートを使う。
イマシルちゃんの解説
IPsecは、IPパケットを暗号化などで保護する技術なんだ。
その準備として、通信する機器同士が使う暗号や鍵をそろえる必要があるよ。
この相談と相手の認証を自動で進めるプロトコルがIKEだよ。
例えばDiffie-Hellman鍵交換という方法で、使う鍵そのものを送らずに共通の鍵を作るんだ。
相手が本物かも確認するので、鍵を作っただけで見知らぬ相手を信用してしまうのを防げるよ。
こうして合意した条件を使い、IPsecで通信を保護できるようにするんだ。
この解説はわかりやすかったですか?
より深い解説
定義
IKE(Internet Key Exchange)は、IPsecで通信する機器同士が、相手の認証を行い、使用する暗号化や認証のアルゴリズムを合意し、鍵を安全に共有して、SA(セキュリティアソシエーション)を確立するためのプロトコルである。現在は、RFC 7296で定められたIKEv2が主に使われている。
使うポート番号
| 通信 | ポート番号 |
|---|---|
| IKE | UDP 500 |
| NATトラバーサル(NAT-T)を使う場合 | UDP 4500 |
途中にNATがあることを検知すると、UDPの4500番に切り替え、ESPのパケットもUDP 4500番でカプセル化して運ぶ。TCPの80番(HTTP)などは使わない。
IKEで行うこと
| 処理 | 内容 |
|---|---|
| アルゴリズムの合意 | 暗号化(AESなど)、完全性(HMAC-SHA-256など)、DHグループなどを提案し合い、決める |
| 鍵の共有 | Diffie-Hellman鍵交換で、盗聴されても第三者には分からない共通の鍵を作る |
| 相手の認証 | 事前共有鍵(PSK)、デジタル証明書、EAPなどで、相手が本物かを確認する |
| SAの確立と更新 | IPsecのSAを作り、一定時間ごとに鍵を作り直す(リキー) |
IKEv2の流れ
| 交換 | メッセージ | 内容 |
|---|---|---|
| IKE_SA_INIT | 2つ(1往復) | アルゴリズムの合意、DH鍵交換。IKE自身を保護するIKE SAを作る |
| IKE_AUTH | 2つ(1往復) | IKE SAで保護しながら、互いを認証し、最初のIPsec SA(Child SA)を作る |
| CREATE_CHILD_SA | 必要に応じて | 追加のIPsec SAの作成や、鍵の更新 |
通常は4つのメッセージ、すなわち2往復でIKE SAと最初のChild SAの組を確立する。EAP認証の継続、再送、追加の要求などがあれば、実際の交換数は増える。
IKE SAは、鍵の合意や認証などを行うIKE自身の通信を守る。一方、Child SAはESPやAHで運ぶ利用者のIPパケットを守るためのSAである。IKE SAは双方向に使うが、IPsecのSAは片方向なので、通常のChild SAの確立では送信・受信の組を作る。作成したIPsec SAの鍵やSPIなどはSADで管理する。
IKE_SA_INITでは、暗号方式、鍵の導出に使うPRF、完全性保護の方式、DHグループなどを合意し、DHの公開値と乱数を交換する。AEADを選んだときは独立した完全性アルゴリズムを使わない。続くIKE_AUTHで、その鍵で保護したメッセージにより相手を認証し、保護対象の通信を表すトラフィックセレクタと最初のChild SAを合意する。
IKEv1との違い
| IKEv1 | IKEv2 | |
|---|---|---|
| 手順 | フェーズ1(メインモード / アグレッシブモード)とフェーズ2(クイックモード) | IKE_SA_INIT と IKE_AUTH |
| メッセージの数 | 多い(メインモードで6+クイックモードで3) | 少ない(最小4) |
| NAT越え | 拡張で対応 | 標準で対応 |
| リモートアクセス | 拡張(XAUTHなど)が必要 | EAPによる認証を標準で使える |
IKEv1は2023年のRFC 9395で非推奨となり、関連仕様は歴史的文書へ移された。以下の区分は既存構成や古い設定を読み解くためのものであり、新規構成でIKEv1を選ぶための推奨ではない。
IKEv1の二つのフェーズ
フェーズ1は、相手を認証して、その後の交渉を保護するISAKMP SA(IKE SA)を確立する。メインモードは6メッセージ、3往復で進む。アグレッシブモードは3メッセージ、1.5往復で処理をまとめるが、交渉や識別情報の保護に制約がある。両者はフェーズ1の選択肢であり、連続して両方を実行する手順ではない。
ISAKMPはSAを確立・交渉・管理するメッセージ形式などの枠組みであり、IKEそのものの別名ではない。IKEv1はこの枠組みを使い、DH鍵交換や認証の具体的な手順を組み合わせる。IKEv2は別のプロトコル仕様である。
| フェーズ1でそろえる項目 | 意味 |
|---|---|
| 暗号化方式 | IKEのメッセージをどう暗号化するか |
| ハッシュ方式 | IKEの認証値・鍵導出などに使う方式 |
| ライフタイム | SAをどの期間などで更新するか |
| 認証方式 | 事前共有鍵やデジタル署名で相手をどう確かめるか |
| 鍵交換方式 | DHグループなど、鍵材料を共有する条件 |
事前に両端へ同じ秘密を登録して相手を認証する方式を事前共有鍵方式という。これは認証に使う長期の秘密であり、毎回のIPsec通信の暗号鍵をそのまま固定するという意味ではない。鍵材料の交換や導出を経て通信用の鍵を作る。認証に使う秘密が異なると、相手の正当性を確認できない。
フェーズ2では、フェーズ1で作った保護された通信路を使い、クイックモードでIPsec SAを交渉する。
| フェーズ2でそろえる項目 | 意味 |
|---|---|
| セキュリティプロトコル | ESPまたはAHなど、パケットを保護する仕組み |
| 暗号化方式 | ESPで内容を隠すアルゴリズム |
| 認証方式 | パケットの改ざんを検出する方式。相手の本人確認とは文脈が異なる |
| ライフタイム | IPsec SAの更新までの時間や通信量など |
| 通信モード | トンネルモードまたはトランスポートモード |
二つのフェーズでは、守る対象がIKEの交渉とIPsecのデータ通信に分かれるため、暗号方式や有効期間も別々に設定される。IKEv2にこの二段階の呼び名やメイン/アグレッシブモードをそのまま当てはめない。
IPsecの各プロトコルとの関係
| プロトコル | 役割 |
|---|---|
| IKE | 準備(合意、鍵交換、認証)を行う |
| ESP | 準備した鍵で、パケットを暗号化・認証する |
| AH | 準備した鍵で、パケットを認証する |
ESPやAHは、IKEが確立したSAの内容に従ってパケットを処理するだけで、自分でアルゴリズムを交渉することはない。