Security Gateway and IPsec


鍵交換プロトコル - IKE


作成日1998/Jun/09
最終変更日2018/Nov/06
文書サイズ8.2KB


この章では、鍵交換プロトコルIKEについて説明します。 IKE(Internet Key Exchange) は、従来はISAKMP/Oakleyと 呼ばれていた鍵交換プロトコルであり、Diffie-Hellman の手法として知られる秘密鍵の交換手法に、幾つかの改良 を加えたものです。

  1. Diffie-Hellmanの手法

    Diffie-Hellmanの手法は、離散対数方式とも呼ばれます。 離散対数は、整数空間で対 数を求める問題であり、例えば、 y = g^x (mod p)を満たすときに、(g, p, y)の値か らxを 求めるような問題を指します。

    TomとMaryが鍵交換を行う場合、2人は、gとpの値について 合意を取っておきます。p としては素数を選びます。 その上で、両者はサイコロを振り、1からp-1までの任意の 数 を選びます。例えば、TomがxTom、MaryがxMaryという数を 選んだとします。

    次に、Tomは、yTom = g^xTom (mod p)を計算し、Maryに 送ります。また、Maryは、 yMary = g^xMary (mod p)を 計算し、Tomに送ります。 Tomは、Maryから送られてきたyMaryを元に、kTom = yMary^xTom (mod p)を 計算します。 Maryは、Tomから送られてきたyTomを元に、 kMary = yTom^xMary (mod p)を計算します。 ここで、kTomとkMaryを変形すると、

    kTom = yMary^xTom (mod p) = (g^xMary)^xTom (mod p) = g^(xMary*xTom) (mod p)
    
    kMary = yTom^xMary (mod p) = (g^xTom)^xMary (mod p) = g^(xTom*xMary) (mod p)
    
    なので、両者が同じ値であることが分かります。すなわち、 TomとMaryはそれぞれkTom とkMaryを共有の鍵として用いる ことができるわけです。 次に、鍵の安全性を考えてみます。第三者が鍵に関して知ることのできる 情報は、 yTomとyMaryだけなので、
    xTom = log yTom (mod p)  
    
    xMary = log yMary (mod p)
    
    (但し、logの底はg) という計算をする必要があります。 この計算のコストはp^(1/2)のオーダーになるため、例えば、pが1024bitの 素数だとす ると、10^150ものオーダーの計算をする必要があります。

  2. バケツリレー攻撃

    ところで、Diffie-Hellmanの手法には、バケツリレー攻撃 (bucket brigade attack)、 もしくは中間一致攻撃(man-in-the-middle attack) という良く知られた攻撃が適用で きます。 これは、悪意を持った第三者(Bob)が2人の間に入り、TomとMaryに なりすま すものです。ただし、Bobはgとpの値を知っている必要が あります。 Bobは、TomやMaryと同様に、1からp-1までの値xBobをサイコロで選び、 yBob = g^xBob (mod p)を計算します。そして、Tomから送られてきた yTomをyBobにすりかえてMaryに 送り、Maryから送られてきたyMaryを yBobにすりかえてTomに送ります。 これにより、TomとBobおよびBobとMaryの間に秘密の共有鍵が生成され ます。しかも、 TomもMaryも、Bobの存在に気付くことはないはずです。 例えば、Bobは、Tomが暗号化 したメッセージを解読した後、Maryとの 共有鍵を使って暗号化して、Maryに送れば良 いからです。 残念ながら、Diffie-Hellmanの手法のみでは、バケツリレー攻撃を 防ぐことはできま せんが、IKEでは、相互に認証情報を送信すること によって、この問題を防いでいます。

  3. 鍵交換プロトコル

    鍵交換プロトコルは、秘密鍵を第三者に知られないように交換し、 それを管理するた めのプロトコルです。鍵交換プロトコルには SKIP、Photuris、IKEなどがあります。 IKEは、次世代のインタ ーネットプロトコルであるIPv6において必須の鍵交換プロトコ ルです。

  4. IKEの概要

    IKEの鍵交換は、2つのフェーズからなります。第1フェーズは、 IKEが自らを守るため に、自分用のSAを作成するフェーズです。 このフェーズには、メインモードとアグレッ シブモードという 2つのモードがありますが、ここではメインモードのみを説明 しま す。 第2フェーズは、IPsecが利用するSAを作成するフェーズであり、 クイックモードとい うモードが定義されています。 また、IKEは、SAの整合性を保つためにメッセージを交換します。 主要なものには、SA を削除するメッセージ交換、エラー情報を 送信するメッセージ交換がありますが、こ れらの説明は省略します。 以下では、第1フェーズのメインモードと、第2フェーズの クイックモードについて説 明します。

  5. メインモード

    メインモードには、4つの認証方式が定義されていますが、ここでは 事前共有鍵 (pre-shared-key)を用いた認証方式を採用した場合を説明 します。 メッセージ交換のダイヤグラムを以下に示します。

                  Initiator                        Responder
                 ----------                       -----------
             (1)  HDR, SA             -→
             (2)                      ←-    HDR, SA
             (3)  HDR, KE, Ni         -→
             (4)                      ←-    HDR, KE, Nr
             (5)  HDR*, IDii, HASH_I  -→
             (6)                      ←-    HDR*, IDir, HASH_R
    
    はじめに、鍵交換の始動者は、SAの提案を生成して応答者に送信します(1)。 応答者は、 SAの提案からひとつを選び、それを始動者に送信します(2)。 以上のネゴの過程が済む と、始動者と応答者は、Diffie-Hellmanの手法 に従って、公開情報を送信します (3)(4)。この後、両者は、鍵を計算して 共有鍵を取得します。最後に、両者は認証情 報を交換し(5)(6)、メインモード を終了します。

  6. クイックモード

    クイックモードは、第1フェーズで作られたSAによる保護を受けて 進行します。具体的 には、クイックモードで交換されるメッセージ は全て、第1フェーズで作られたSAによっ て暗号化されています。 メッセージ交換のダイヤグラムを以下に示します。

                  Initiator                        Responder
                 -----------                      -----------
           (1) HDR*, HASH(1), SA, Ni
               [, KE ] [, IDci, IDcr ] -→
           (2)                         ←-    HDR*, HASH(2), SA, Nr
                                                 [, KE ] [, IDci, IDcr ]
           (3) HDR*, HASH(3)           -→
    
    はじめに、始動者は、IPsecで利用するためのSAの提案と Diffie-Hellmanの手法に基づ く公開情報を、応答者に送信します(1)。 応答者は、SAの提案からひとつを選ぶととも に、Diffie-Hellmanの手法に 基づく公開情報を始動者に送信します(2)。 両者は鍵を 計算し、共有鍵を取得します。最後に始動者は、 認証情報を応答者に送信し(3)、応答 者がその内容を確認して クイックモードを終了します。