IKE
IPsecで使う暗号アルゴリズムの合意と、鍵の交換を自動で行うプロトコル。UDPの500番ポートを使う。
イマシルちゃんの解説
IPsecで暗号化して通信するには、お互いに「どの暗号を使うか」「どの鍵を使うか」を決めておかないといけないんだ。
でも、インターネット越しに鍵をそのまま送ったら、盗まれちゃうよね。
IKEは、盗み聞きされても大丈夫な方法で、安全に鍵を作り合って、使う暗号の種類も相談して決めてくれる、
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往復)で、IPsecの通信を始められる。
IKEv1との違い
| IKEv1 | IKEv2 | |
|---|---|---|
| 手順 | フェーズ1(メインモード / アグレッシブモード)とフェーズ2(クイックモード) | IKE_SA_INIT と IKE_AUTH |
| メッセージの数 | 多い(メインモードで6+クイックモードで3) | 少ない(最小4) |
| NAT越え | 拡張で対応 | 標準で対応 |
| リモートアクセス | 拡張(XAUTHなど)が必要 | EAPによる認証を標準で使える |
IPsecの各プロトコルとの関係
| プロトコル | 役割 |
|---|---|
| IKE | 準備(合意、鍵交換、認証)を行う |
| ESP | 準備した鍵で、パケットを暗号化・認証する |
| AH | 準備した鍵で、パケットを認証する |
ESPやAHは、IKEが確立したSAの内容に従ってパケットを処理するだけで、自分でアルゴリズムを交渉することはない。