連載第3回目は,第2回で説明したIPsecのSA(Security Association)を(秘密対称鍵も含めて)自動的に生成・管理するプロトコルである「Internet Key Exchange(IKE)」 の解説です。IKEは盗聴されているかもしれない通信路を使用して安全にSAを生成することができる,IPsecの実用に必須の機能です。IKEによる典型的なやりとりを紹介しながら,IKEがどのように,何をするプロトコルなのかを紹介しましょう。

 なお,IKEには様々なパラメータやオプションがあり,それらの設定次第でネゴシエーションのパターンそのものが変わってきます。本連載ではIKEの本質を理解していただくため,最も典型的なパターンにおけるIKEを解説します。それは,IKEの認証(本人性確認)にPre-Shared Keyを用い,Phase 1をMain Modeで行い,ESPによるIPsecSAを生成するというものです。

シナリオ

 下の図1のように,PC1とPC2がIPsec装置1とIPsec装置2を介してIPsec通信を行うシナリオを想定します。PC1からPC2への通信がどのようにIPsec化されるを以下で追っていきましょう。

ステップ1:PC1からの通信

 PC1がPC2向けにping を打ったとします。具体的には,PC1はPC2あてのパケットをIPsec装置1に転送します。

ステップ2:IPsec装置1におけるIPsec化の判断

 PC1からのパケットを受信したIPsec装置1は,IPsec装置1に設定されたセキュリティ・ポリシーに従ってこのパケットの扱いを決定します。このシナリオでは「PC1とPC2間のパケットはIPsec装置2をあて先とする,3DESによるトンネル・モードのESPでIPsec化する」というセキュリティ・ポリシーが設定されているとします。IPsec装置1はこのセキュリティ・ポリシーに従い,このパケットをIPsec化します。

ステップ3:ISAKMP SA属性のネゴシエーション

 IPsec装置1はセキュリティ・ポリシーに従い,IKEのやりとりをIPsec装置2と開始します。まずは図3のように制御用チャネルであるISAKMP SA(アイサキャンプ・エスエーと発音します)の生成を要求するパケットをIPsec装置2に送信します。

 ISAKMP SAとはIKEを使用してSAを自動的に生成する場合に,IKE自身が制御信号をやりとりするために使用するIKEの制御用チャネルのことです。

 IKEの最初のパケットとなるこの提案を受信したIPsec装置2は,IPsec装置2のセキュリティ・ポリシー(SPD)によってこの提案を受諾するかどうか決定します。このシナリオではIPsec装置2にも「PC1とPC2間のパケットはIPsec装置1をあて先とする3DESによるトンネル・モードのESPでIPsec化する」というセキュリティ・ポリシーが設定してあることにします。

 このセキュリティ・ポリシーに従い,IPsec装置2はIPsec装置1からのISAKMP SA生成の提案を受諾し,「このパラメータでいいですよ」という返事を図3のようにIPsec装置1に返信します。この1往復のやりとりは,暗号化されず平文で通信されます。

ステップ4:秘密対称鍵の自動生成

 ISAKMP SA生成の受諾通知を受信したIPsec装置1は,次にISAKMP SA用の秘密対称鍵生成を行います。図4のように,IPsec装置1はある規則に則って乱数を発生し,IPsec装置2にその乱数を送信します。IPsec装置2も同様の規則に従って乱数を発生し,その乱数をIPsec装置1に送信します。

 IPsec装置1とIPsec装置2は自身が送信した乱数と相手から受信した乱数を組み合わせ,Diffie-Hellman公開鍵暗号技術により秘密対称鍵を生成します。この秘密対称鍵は,IPsec装置1とIPsec装置2で同じものになります。

 これらのやりとりはすべて平文で行われ,攻撃者にやりとりを盗み見られる可能性があります。それにも関わらず,Diffie-Hellman交換という公開鍵暗号技術を使用することで,やりとりを盗み見られたとしても共有される秘密対象鍵を推定することができません。Diffie-Hellman交換の概要は後述します。

ステップ5:相手が本物かどうかの確認

 これでIPsec装置1とIPsec装置2は暗号化通信が可能になりました。ここからのやりとりは,1往復目で合意したパラメータに従い,2往復目で共有した秘密対称鍵を用いて暗号化されます。

 IKEの3往復目のやりとりは,今通信している相手が,本当に本物なのかを確認するためのものです。これまでの通信からは,IPsec装置1にとってはIPsec装置2のデスティネーション・アドレスをつけてインターネットに送信したパケットの返事が,インターネットからIPsec装置2のソース・アドレスのついたパケットとして返信されてきているということしかわかりません。つまり,今IPsec装置1が通信している相手は,本当にIPsec装置2なのか,IPsec装置1にとっては確証が得られていないのです。

 パケットのIPヘッダに意図した通信相手のIPアドレスが入っていても,例えばIPsec装置1とIPsec装置2の間のルーターが,IPsec装置1に対してはIPsec装置2のふりをして,IPsec装置2に対してはIPsec装置1のふりをしてIKEパケットを不正に中継していれば,IPsec装置1とIPsec装置2には気づかれずにIPsec通信を破ることができてしまうかもしれません。

 そこで,管理者が事前に設定した秘密のパスワードを知っているかどうかで,IPsec装置1とIPsec装置2はお互いが本物であることを確認します。IPsec装置1は,事前に設定した秘密のパスワードといくつかその他の情報から作った認証(本人性確認)値であるハッシュ値をIPsec装置2に送ります(図5)。

 この数字からは秘密のパスワードは類推できないようになっていますが,もしIPsec装置2が秘密のパスワードを知っていれば,IPsec装置1が秘密のパスワードを知っているかどうかを検証することができるものです。

 IPsec装置1からこのパケットを受け取ってIPsec装置1が本物であることを確認できたら,IPsec装置2は同様に自分が秘密のパスワードを知っている証拠をIPsec装置1に送信します。

 このようにしてIPsec装置1とIPsec装置2はお互いが本物であることを確認して,ISAKMP SAの確立を完了します。なおここで紹介した認証(本人性確認)の方式はPre-Shared Key認証と呼ばれる認証方式で,他のデジタル署名方式や公開鍵暗号方式では異なるやりとりになります。

 ここまでのIKEのやりとりは制御用チャネルであるISAKMP SAを確立するためのもので,これをIKEのフェイズ1と呼びます。次回は,実際にパケットを送るフェイズ2を説明します。