(57)【要約】【課題】  送信装置及び受信装置で使用されている鍵データを用いて送受信されている暗号文を復号して解析させる。【解決手段】  共通秘密鍵生成装置３は、イニシエータ（ＶＰＮ装置２）とレスポンダ（ＶＰＮクライアント４）との間で鍵交換がなされる際に、イニシエータ及びレスポンダの秘密鍵を生成し、当該秘密鍵から公開鍵を生成し、始動側公開鍵をレスポンダに送信すると共に応答側公開鍵をイニシエータに送信する。そして、共通秘密鍵生成装置３内で生成した始動側秘密鍵及びレスポンダから受信した応答側公開鍵を用いて応答側共通秘密鍵を生成すると共に、内部で生成した応答側秘密鍵及びイニシエータから受信した始動側公開鍵を用いて始動側共通秘密鍵を生成する。そして、共通秘密鍵生成装置３は、ＶＰＮ装置２とＶＰＮクライアント４との間の暗号通信を解析するため、暗号パケット復号解析装置５にイニシエータ及びレスポンダの共通秘密鍵を出力する。【選択図】    図１
2005210193.tif 000002
【特許請求の範囲】
【請求項１】
始動側の通信装置と応答側の通信装置との間に設けられ、前記始動側の通信装置と応答側の通信装置との間で暗号化したパケットを送受信する通信システムの共通秘密鍵生成装置であって、
前記始動側の通信装置及び前記応答側の通信装置で事前に合意した任意の値を記憶する鍵共有データ保持手段と、
乱数を発生させて秘密鍵を生成する秘密鍵生成手段と、
前記秘密鍵生成手段により生成された秘密鍵と、前記鍵共有データ保持手段に記憶された値とを用いて、公開鍵を生成する公開鍵生成手段と、
前記始動側の通信装置又は応答側の通信装置から受信した公開鍵、前記秘密鍵生成手段により生成された秘密鍵並びに前記鍵共有データ保持手段に記憶された値を用いて、共通秘密鍵を生成する共通秘密鍵生成手段とを備え、
前記始動側の通信装置と応答側の通信装置との間で鍵交換がなされる際に、
前記秘密鍵生成手段により、前記始動側の通信装置の始動側秘密鍵及び前記応答側の通信装置の応答側秘密鍵を生成し、
前記公開鍵生成手段により、前記始動側秘密鍵から始動側公開鍵を生成すると共に前記応答側秘密鍵から応答側公開鍵を生成し、
前記始動側公開鍵を前記応答側の通信装置に送信すると共に前記応答側公開鍵を前記始動側の通信装置に送信し、
前記秘密鍵生成手段により生成した始動側秘密鍵及び前記応答側の通信装置から受信した応答側公開鍵を用いて応答側の共通秘密鍵を生成すると共に、前記秘密鍵生成手段により生成した応答側秘密鍵及び前記始動側の通信装置から受信した始動側公開鍵を用いて始動側の共通秘密鍵を生成することを特徴とする共通秘密鍵生成装置。
【請求項２】
前記始動側の通信装置と前記応答側の通信装置との間で通信されるパケットを復号して解析する暗号パケット復号解析装置と接続され、
前記共通秘密鍵生成手段により生成された始動側の共通秘密鍵及び応答側の共通秘密鍵を前記暗号パケット復号解析装置に出力する出力手段を更に備えることを特徴とする請求項１に記載の共通秘密鍵生成装置。
【請求項３】
前記始動側の通信装置からパケットを受信した場合に、当該パケットを前記始動側共通秘密鍵を用いて復号し、当該復号したパケットを前記応答側の共通秘密鍵を用いて暗号化して前記応答側の通信装置に送信し、
前記応答側の通信装置からパケットを受信した場合に、当該パケットを前記応答側共通秘密鍵を用いて復号し、当該復号したパケットを前記始動側の共通秘密鍵を用いて暗号化して前記始動側の通信装置に送信すること
を特徴とする請求項１又は請求項２に記載の共通秘密鍵生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＩＰ（Internet Protocol）を利用した通信システムにおいて、通信データの盗聴や改ざんを防ぐために、パケットを暗号化すると共に認証データによって送受信間で認証処理を行って、通信データのセキュリティを高めた通信を行うに際して使用する共通秘密鍵を生成する共通秘密鍵生成装置に関する。
【背景技術】
【０００２】
従来より、インターネットにおいて通信データの盗聴や改ざんを防ぐプロトコルとしては、ＲＦＣ（Request For Comments）２４０１〜２４１０で定義されたプロトコル群であるＩＰｓｅｃ（IP security protocol）などが知られている。
【０００３】
このＩＰｓｅｃには、送信側での暗号化及び受信側での復号を行うときに使用する共通秘密鍵（以下セッション鍵）を定期的に変更する鍵管理プロトコル（The Internet Key Exchange：ＩＫＥ）が含まれている。このＩＫＥには、アプリケーションデータを通信する前に、送信側と受信側との間で行う必要がある暗号アルゴリズムやハッシュアルゴリズムのネゴシエーション、鍵交換、相互認証といった機能を備えている。また、このＩＫＥでは、ネゴシエーション、鍵交換、相互認証を行うときに通信するデータも暗号化するという機能を備えている。
【０００４】
このＩＫＥの相互認証には、下記の特許文献１に示すように、Ｐｒｅ−ｓｈａｒｅｄ  Ｋｅｙ（事前共有秘密鍵）を使用した認証方法や、公開鍵暗号化方式のデジタル署名を使用した認証方法の何れかが使用されている。事前共有秘密鍵を使用した認証方法は、Ｐｒｅ−ｓｈａｒｅｄ  Ｋｅｙを送信側及び受信側に予め用意しておき、デジタル署名を使用した認証方法は、秘密鍵と証明書のペア（以下ＰＫＣＳ＃１２）を送信側及び受信側に予め用意しておくことにより、相互認証を行って、通信データを暗号化するＶＰＮ（Virtual Private Network：仮想私設通信網）セッションを構築する。
【特許文献１】New Direction in Cryptography,IEEE Transaction On Information Theory,vol 22.NO.6.Nobember 1976
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来では、上述したようにＩＫＥの相互認証を行うことにより、異機種のＶＰＮ装置間でＶＰＮセッションを構築する場合、通信設定用語や設定インターフェイスの構成の違いなどから、誤った設定をしてしまう可能性があり、通信接続に失敗する場合が多い。
【０００６】
これに対し、暗号文ではない平文を送受信する通常のセッションであれば、通信内容をプロトコルアナライザで傍受して、解析することで、問題を切り分けて通信接続の失敗の原因を究明することが可能である。しかしながら、ＩＫＥによる相互認証では、暗号文を使用して行われるため、通常のプロトコルアナライザでは解析できないという問題点がある。
【０００７】
これに対し、復号機能を持つプロトコルアナライザを使用すれば、暗号化されたパケットを復号して解析することが可能となる。しかし、復号を行うためにはＩＫＥにて生成されたセッション鍵（共通秘密鍵）をプロトコルアナライザで取得する必要があるが、通常のＶＰＮ装置では、共通秘密鍵を出力する機能がないので、パケットを復号することはできないという問題点がある。
【０００８】
そこで、本発明は、上述した問題に鑑みて提案されたものであり、送信装置及び受信装置で使用されている鍵データを用いて送受信されている暗号文を復号して解析させることができる共通秘密鍵生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、始動側の通信装置と応答側の通信装置との間に設けられ、始動側の通信装置と応答側の通信装置との間で暗号化したパケットを送受信する通信システムにおいて、始動側の通信装置及び応答側の通信装置で事前に合意した任意の値を記憶する鍵共有データ保持手段と、乱数を発生させて秘密鍵を生成する秘密鍵生成手段と、秘密鍵生成手段により生成された秘密鍵と、鍵共有データ保持手段に記憶された値とを用いて、公開鍵を生成する公開鍵生成手段と、始動側の通信装置又は応答側の通信装置から受信した公開鍵、秘密鍵生成手段により生成された秘密鍵並びに鍵共有データ保持手段に記憶された値を用いて、共通秘密鍵を生成する共通秘密鍵生成手段とを備える共通秘密鍵生成装置に適用される。
【００１０】
この共通秘密鍵生成装置は、始動側の通信装置と応答側の通信装置との間で鍵交換がなされる際に、秘密鍵生成手段により始動側秘密鍵および応答側秘密鍵を生成し、公開鍵生成手段により始動側秘密鍵から始動側公開鍵を生成すると共に応答側秘密鍵から応答側公開鍵を生成し、始動側の公開鍵を応答側の通信装置に送信すると共に応答側の公開鍵を始動側の通信装置に送信し、秘密鍵生成手段により生成した始動側秘密鍵及び応答側の通信装置から受信した公開鍵を用いて応答側の共通秘密鍵を生成すると共に、秘密鍵生成手段により生成した応答側秘密鍵及び始動側の通信装置から受信した公開鍵を用いて始動側の共通秘密鍵を生成することにより、上述の課題を解決する。
【発明の効果】
【００１１】
本発明によれば、始動側の通信装置の共通秘密鍵及び応答側の通信装置の共通秘密鍵を生成して保存するようにしたので、始動側の通信装置及び応答側の通信装置に共通秘密鍵を出力する機能がなくても、始動側の通信装置と応答側の通信装置との間での暗号通信を解析することができる。したがって、本発明によれば、保存しているそれぞれの共通秘密鍵を用いて、暗号通信を復号して解析することができ、トラブルが発生した場合の検証を行うことができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を適用した実施の形態について図面を参照して詳細に説明する。
【００１３】
本発明は、例えば図１に示すように、サーバ１及びＶＰＮ装置２とＶＰＮクライアント４との間で、共通秘密鍵生成装置３を介してＶＰＮ（Virtual Private Network）セッションが構築される通信システムに適用される。この通信システムは、ＶＰＮクライアント４からネットワークＮを経由してサーバ１への通信をする際、ネットワークＮ上でのデータの盗聴や送信元の成りすまし等を防ぐために、ネットワークＮと、サーバ１が接続されたＬＡＮ（Local Area Network）との境界にＶＰＮ装置２を設置し、ＶＰＮクライアント４とＶＰＮ装置２の間でＩＰｓｅｃによるＶＰＮセッションを構築することによってデータの安全性を確保し、更には、暗号化通信のトラブル発生時に、暗号化された通信データを復号して解析するものである。
【００１４】
［通信システムの構成］
この通信システムは、サーバ１、ＶＰＮ装置２及び共通秘密鍵生成装置３と、ＶＰＮクライアント４とがネットワークＮを介して接続されている。更に、通信システムは、共通秘密鍵生成装置３と接続された暗号パケット復号解析装置５と、暗号パケット復号解析装置５及びネットワークＮとハブやタップを介して接続されたパケット保存装置６とを備える。
【００１５】
この通信システムにおいて、サーバ１、ＶＰＮ装置２及び共通秘密鍵生成装置３は、ＩＰ（Internet Protocol）ベースのＬＡＮ（Local Area Network）で接続され、更に、共通秘密鍵生成装置３、暗号パケット復号解析装置５及びパケット保存装置６はＬＡＮで接続されている。また、この通信システムにおいて、ネットワークＮは、公衆で利用可能なＩＰネットワークである。
【００１６】
この通信システムにおいて、サーバ１は、例えばＷｅｂサーバ、ＦＴＰ（File Transfer Protocol）サーバ等からなり、ＶＰＮクライアント４に送信する通信データを生成する。具体的には、サーバ１は、ＶＰＮクライアント４からデータ送信要求を受けて、当該要求に応じた通信データを取得し、ＶＰＮ装置２に送信するようになっている。
【００１７】
ＶＰＮ装置２及びＶＰＮクライアント４は、暗号化処理をしてパケットを送信する必要がある場合、相互間でＶＰＮセッションを構築するため、ＩＫＥ（Internet Key Exchange）に従った処理（ＩＫＥ処理）を行って通信データを暗号化及び復号化するための共通秘密鍵（以下、セッション鍵と呼ぶ。）を保持する。そして、ＶＰＮ装置２及びＶＰＮクライアント４は、ＩＰパケットに対してトンネリングプロトコルに従った処理を行う。また、ＶＰＮ機器２及びＶＰＮクライアント４は、トンネリングプロトコルのうち、ネットワーク層におけるセキュリティプロトコルであるＩＰｓｅｃに準拠した処理を行って、パケットを作成する。具体的には、ＶＰＮ装置２及びＶＰＮクライアント４は、ＩＰｓｅｃに含まれるプロトコルのうち、セキュリティプロトコル、例えば暗号ペイロード（ＥＳＰ：IP Encapsulating Security Payload）を作成するＥＳＰプロトコルに従った処理（ＥＳＰ処理）を行う。
【００１８】
共通秘密鍵生成装置３は、ＶＰＮ装置２及びＶＰＮクライアント４でＩＫＥ処理及びＥＳＰ処理が行われているときに、ＶＰＮ装置２又はＶＰＮクライアント４から送信されるデータを受信する。そして、共通秘密鍵生成装置３は、後述する所定の処理を行うことにより、ＶＰＮ装置２又はＶＰＮクライアント４に送信するデータを生成して送信する。このとき、共通秘密鍵生成装置３は、ＶＰＮ装置２及びＶＰＮクライアント４で暗号化処理及び復号化処理を行うために使用するセッション鍵を生成する。
【００１９】
このセッション鍵は、ＩＫＥ処理において使用するＶＰＮ装置２、ＶＰＮクライアント４ごとのＩＫＥ用セッション鍵、ＥＳＰ処理において使用するＶＰＮ装置２、ＶＰＮクライアント４ごとのＥＳＰ用のセッション鍵の４種類が存在する。このセッション鍵は、ＶＰＮ装置２及びＶＰＮクライアント４、並びに共通秘密鍵生成装置３で生成されて、共通秘密鍵生成装置３で生成されたセッション鍵が暗号パケット復号解析装置５に出力される。
【００２０】
なお、以下の説明では、説明の簡単のため、ＲＦＣ（Request For Comments）２４０９で定義されている各種手順のうち、事前共有鍵を使用した相互認証をメインモードで行い、且つ一部を省略した場合を述べる。また、秘密鍵、公開鍵とは、ＲＦＣ２６３１で定義されている秘密鍵、公開鍵を指し、更には、予期しないデータが入力された場合などのエラー処理に関する記述は省略する。
【００２１】
暗号パケット復号解析装置５は、共通秘密鍵生成装置３で生成されたＩＫＥ用セッション鍵及びＥＳＰ用セッション鍵が送信され、当該各セッション鍵を受信して保存する。ここで、暗号パケット復号解析装置５は、ＶＰＮ装置２およびＶＰＮクライアント４が複数存在し、それらが同時に通信する場合、すなわち複数のＶＰＮセッションが同時に存在する場合には、ＶＰＮセッションごとにＩＫＥ用セッション鍵及びＥＳＰ用セッション鍵を保存する。また、この暗号パケット復号解析装置５は、ＩＫＥ処理によってセッション鍵が更新されることに応じて、保存しているセッション鍵を更新する。
【００２２】
そして、この暗号パケット復号解析装置５は、例えばＶＰＮ装置２とＶＰＮクライアント４との通信にトラブルが発生した場合や、ユーザの指示によりＶＰＮ装置２で通信しているパケットを解析する命令を入力すると、解析対象となるパケットをパケット保存装置６から読み出し、当該読み出したパケットを共通秘密鍵生成装置３からのセッション鍵で復号する。これにより、暗号パケット復号解析装置５は、復号したパケットの内容を例えば画面表示することにより、ユーザに提示する。
【００２３】
このような通信システムは、ＶＰＮ装置２とＶＰＮクライアント４との間のパケット通信に対して、共通秘密鍵生成装置３により、パケットの復号、読み取り、内容の保存、変更、暗号化、転送といった処理を行う。これにより、通信システムは、ＶＰＮ装置２とＶＰＮクライアント４との間の通信をインターセプトして、ＶＰＮ装置２及びＶＰＮクライアント４にとっては既存の処理を行うのみで、暗号通信の内容を暗号パケット復号解析装置５により解析することが可能となる。
【００２４】
［共通秘密鍵生成装置の構成］
つぎに、上述した通信システムにおける共通秘密鍵生成装置３の機能的な構成を図２を参照して説明する。なお、以下の説明では、ＶＰＮセッションを構築する始動側のＶＰＮ装置２又はＶＰＮクライアント４をイニシエータと呼び、当該イニシエータの始動に反応する応答側のＶＰＮ装置２又はＶＰＮクライアント４をレスポンダと呼ぶ。また、以下に説明する共通秘密鍵生成装置３の各部は、例えばＩＫＥやＥＳＰ等に準拠した通信制御プログラムをＲＯＭ等に記憶しておき、当該通信制御プログラムをＣＰＵにより実行することにより得られる各機能部、インターフェース回路、ハードディスク装置により実現される各部に相当するものである。
【００２５】
共通秘密鍵生成装置３は、ＶＰＮ装置２及びＶＰＮクライアント４に対する受信用の通信インターフェース１１、送信用の通信インターフェース１２、暗号パケット復号解析装置５に対するインターフェースであるセッション鍵出力部１３を備える。これら通信インターフェース１１、１２は、簡単のため受信用、送信用としているが、実際には２つのインターフェースの一方がＶＰＮ装置２、もう一方がネットワークＮに固定的に接続され、ＶＰＮ装置２からパケットを受信した場合は、ＶＰＮ装置２側のインターフェースが受信用通信インターフェース１１、ネットワークＮ側のインターフェースが送信用通信インターフェース１２となり、ネットワークＮからパケットを受信した場合は、ネットワークＮ側のインターフェースが受信用通信インターフェース１１、ＶＰＮ装置２側のインターフェースが送信用通信インターフェース１２となる。
【００２６】
また、この通信システムは、ＶＰＮ装置２とＶＰＮクライアント４との間での通信にトラブルが発生した時には、共通秘密鍵生成装置３のセッション鍵保持部２６に保存されているセッション鍵を、セッション鍵出力部１３によって出力する。これにより、暗号パケット復号解析装置５は、共通秘密鍵生成装置３からのセッション鍵と、パケット保存装置６に保存されている暗号通信の内容を使用して、暗号通信を復号して解析する。
【００２７】
更に、この通信システムは、ＶＰＮセッションを構成するＶＰＮ装置２とＶＰＮクライアント４との間で予め同意した事前共有鍵を記憶する事前共有鍵保持部１４を備える。この事前共有鍵保持部１４に記憶される事前共有鍵は、例えばＶＰＮ装置２とＶＰＮクライアント４との通信状態を監視する通信システムのユーザのキーボード操作により入力される。また、この共通秘密鍵生成装置３は、事前共有鍵のみならず、ＶＰＮセッションを構成するために必要な情報を設定しておく。
【００２８】
このような共通秘密鍵生成装置３は、通信インターフェース１１で暗号化されたデータを含むパケットを受信すると、当該パケットをパケット復号部１５で復号し、復号済のデータをパケット読取部１６に送る。通信インターフェース１１で受信したパケットが暗号化されたデータを含まない場合は、当該パケットのデータをそのままパケット読取部１６に送る。そして、パケット読取部１６は、復号済のデータの内容を判定して、当該データのうち必要なデータをパケット生成部１７、セッション情報保持部１８、公開鍵保持部１９又は鍵共有データ保持部２０に送る。
【００２９】
セッション情報保持部１８は、ＶＰＮ装置２とＶＰＮクライアント４との間でＩＫＥ処理を行うに際して送受信される各種情報をセッション情報として記憶する。このセッション情報保持部１８に記憶されたイニシエータのセッション情報、レスポンダのセッション情報は、セッション鍵生成部２１でセッション鍵を生成するに際して読み込まれる。
【００３０】
公開鍵保持部１９は、パケット読取部１６から送られたイニシエータの公開鍵、レスポンダの公開鍵、および公開鍵生成部２２で生成されたイニシエータ側の公開鍵、レスポンダ側の公開鍵を記憶する。この公開鍵保持部１９に記憶されたイニシエータの公開鍵、レスポンダの公開鍵は、共通秘密鍵生成部２４で共通秘密鍵を生成するに際して読み込まれ、イニシエータ側の公開鍵はレスポンダに、レスポンダ側の公開鍵はイニシエータに公開鍵を送信するに際してパケット生成部１７に読み込まれる。
【００３１】
鍵共有データ保持部２０は、イニシエータにより複数のＩＫＥＳＡが提案され、レスポンダに選択された何れかのＩＫＥＳＡ（有効ＩＫＥＳＡ）に含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション（Group Description）属性の値を記憶する。この鍵共有データ保持部２０に記憶された情報は、秘密鍵生成部２３で秘密鍵を生成するに際して読み込まれると共に、共通秘密鍵生成部２４で共通秘密鍵を生成するに際して読み込まれる。
【００３２】
秘密鍵生成部２３は、イニシエータ側の秘密鍵及びレスポンダ側の秘密鍵を生成して、秘密鍵保持部２５に記憶させる。このとき、秘密鍵生成部２３は、鍵共有データ保持部２０に保持されたグループディスクリプション属性の値を参照して、秘密鍵の種類を決定する。
【００３３】
公開鍵生成部２２は、秘密鍵保持部２５に記憶されているレスポンダ側の秘密鍵を用いてレスポンダ側の公開鍵を生成すると共に、秘密鍵保持部２５に記憶されているイニシエータ側の秘密鍵を用いてイニシエータ側の公開鍵を生成し、それぞれの公開鍵を公開鍵保持部１９に記憶させる。これにより、パケット生成部１７は、イニシエータ、レスポンダに公開鍵を送信するに際して、公開鍵保持部１９に記憶されているそれぞれの公開鍵を読み出すことが可能となる。
【００３４】
共通秘密鍵生成部２４は、公開鍵保持部１９に保存しているイニシエータの公開鍵、秘密鍵保持部２５に保存しているレスポンダ側の秘密鍵と、鍵共有データ保持部２０に記憶されているグループディスクリプション属性の値に関連付けられたオークレーグループの値から、イニシエータの共通秘密鍵を生成する。また、秘密鍵保持部２４は、レスポンダ側についても同様に、レスポンダの公開鍵、イニシエータ側の秘密鍵、オークレーグループの値から、レスポンダの共通秘密鍵を生成する。そして、共通秘密鍵生成部２４は、イニシエータの共通秘密鍵及びレスポンダの共通秘密鍵をセッション鍵生成部２１に出力する。
【００３５】
セッション鍵生成部２１は、共通秘密鍵生成部２４からイニシエータ、レスポンダそれぞれの共通秘密鍵を入力すると、事前共有鍵保持部１４に記憶されている事前共通鍵を使用し、セッション情報保持部１８に記憶されているセッション情報を参照して、ＳＫＥＹＩＤを生成する。そして、セッション鍵生成部２１は、生成したＳＫＥＹＩＤ、共通秘密鍵生成部２４に記憶されているイニシエータ、レスポンダのそれぞれの共通秘密鍵を使用し、セッション情報保持部１８に記憶されているセッション情報を参照して、セッション鍵をそれぞれ生成し、セッション鍵保持部２６に記憶させる。
【００３６】
このような共通秘密鍵生成装置３において、レスポンダ又はイニシエータにパケットを送信する場合には、パケット読取部１６からの情報に従って、パケット生成部１７により、パケットに格納する情報を認識してパケットを生成する。そして、共通秘密鍵生成装置３は、パケット生成部１７により生成したパケットを暗号化する必要がある場合には、パケット暗号化部２７によりセッション鍵保持部２６に記憶されているセッション鍵を読み出して暗号化して、通信インターフェース１２から送信させる。
【００３７】
なお、この共通秘密鍵生成装置３の詳細な処理内容については、後述するものとする。
【００３８】
［共通秘密鍵生成装置の動作］
つぎに、上述したように構成された共通秘密鍵生成装置３の動作について図３〜図６を参照して説明する。
【００３９】
「全体動作」
先ず、共通秘密鍵生成装置３の全体動作としては、図３に示すように、ＶＰＮ装置２又はＶＰＮクライアント４からパケットを受信すると（ステップＳＴ１）、当該パケットがＩＫＥ処理におけるパケット（ＩＫＥパケット）か否かを判定する（ステップＳＴ２）。このとき、共通秘密鍵生成装置３は、パケット読取部１６により、パケットに含まれるＩＰ等の下位プロトコルのヘッダを参照して、パケットの種類を判定し、ＩＫＥパケットであると判定した場合にはステップＳＴ３に処理を進め、ＩＫＥパケットではないと判定した場合にはステップＳＴ４に処理を進める。
【００４０】
ステップＳＴ３においては、共通秘密鍵生成装置３により、サーバ１及びＶＰＮ装置２とＶＰＮクライアント４との間でデータを通信する前に、ＶＰＮ装置２及びＶＰＮクライアント４との間で鍵交換をしてＶＰＮセッションを構築するためのＩＫＥ処理を行う。このＩＫＥ処理は、ＲＦＣ２４０９で定義されている処理を行うことによって、ＶＰＮ装置２のＩＫＥ用、ＥＳＰ用セッション鍵及びＶＰＮクライアント４のＩＫＥ用、ＥＳＰ用セッション鍵を生成する。ここで、ＩＫＥ処理においては、ＲＦＣ２４０８で定義されているＩＳＡＫＭＰ（internet security association key management）に従って鍵交換を行う。
【００４１】
なお、このステップＳＴ３において、共通秘密鍵生成装置３は、ステップＳＴ１でパケットを受信する毎に、図４に示すような処理を１回行う。そして、共通秘密鍵生成装置３は、ステップＳＴ３のＩＫＥ処理を行った後にステップＳＴ６に処理を進め、ＩＫＥ処理によって生成したパケットをＶＰＮ装置２又はＶＰＮクライアント４に送信して、処理を終了する。なお、この図４に示す処理内容については後述する。
【００４２】
一方、ステップＳＴ４においては、共通秘密鍵生成装置３により、ステップＳＴ１で受信したパケットがＥＳＰパケットか否かを判定する。このとき、共通秘密鍵生成装置３は、パケット読取部１６により、パケットに含まれるヘッダ情報等を参照してパケットの種類を判定し、ＥＳＰパケットであると判定した場合にはステップＳＴ５に処理を進め、ＥＳＰパケットではないと判定した場合にはステップＳＴ６に処理を進める。
【００４３】
ステップＳＴ５においては、共通秘密鍵生成装置３により、図５に示すようなＥＳＰ処理を行い、ステップＳＴ６においてはＥＳＰ処理にて生成したパケットをＶＰＮ装置２又はＶＰＮクライアント４に送信する。なお、この図５に示す処理内容については後述する。なお、ステップＳＴ６において、送信するパケットにチェックサムフィールドがあれば、これを再計算した値に更新する。
【００４４】
「ＩＫＥ処理」
つぎに、上述したステップＳＴ３におけるＩＫＥ処理の詳細な内容について図４及び図６を参照して説明する。なお、このＩＫＥ処理は、図６に示すような番号「１」で示した第１処理から番号「９」で示した第９処理を行うものである。
【００４５】
このＩＫＥ処理には、第１フェーズと第２フェーズの２つフェーズがある。第１フェーズは、ＶＰＮ装置２とＶＰＮクライアント４との間の相手認証、すなわち通信相手の認証と、ＩＫＥ処理内で使用するセッション鍵（以下、ＩＫＥ用セッション鍵と呼ぶ。）の交換を行う。第２フェーズは、ＥＳＰ処理内で使用するセッション鍵（以下、ＥＳＰ用セッション鍵と呼ぶ。）の交換を行う。
【００４６】
また、第１フェーズには、イニシエータ、レスポンダそれぞれのＩＤを暗号化するメインモードと、ＩＤを暗号化しないためメインモードと比較して手順が簡略化されたアグレッシブモードとの２つのモードがあり、何れか一方を実行する。以下に説明する本例では、ＶＰＮクライアント４をイニシエータ、ＶＰＮ装置２をレスポンダとして、第１フェーズとしてメインモードを行う場合について説明する。
【００４７】
「第１処理」
この第１フェーズにおいては、図６に示すように、先ずイニシエータは、宛先をレスポンダに設定したＳＡ(Security Association)ペイロードを含むパケットをＩＫＥパケットＳ１として送信する。このＳＡペイロードは、ＩＫＥ処理においてデータを暗号化するための暗号アルゴリズム、認証コードを生成するためのハッシュアルゴリズム、相互認証の方法、鍵の生成に必要な素数（オークレーグループ）、セッション鍵の有効期限等のデータ（以下、ＩＫＥＳＡと呼ぶ。）の組を１つ以上含む。
【００４８】
次に、共通秘密鍵生成装置３は、イニシエータから送信されたＳＡペイロードを含むＩＫＥパケットＳ１を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥに移行する（ステップＳＴ３）。
【００４９】
このＩＫＥ処理では、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ１をパケット復号部１５に入力し、パケット復号部１５によって、ＩＫＥパケットＳ１のＩＳＡＫＭＰヘッダのフラグフィールドに格納されている値を参照して、当該フラグフィールドに暗号化ビット（Ｅ）が格納されているか否かを参照して、ＩＫＥパケットＳ１に含まれるデータが暗号化されているかを判定する。この場合、ＳＡペイロードを含むＩＫＥパケットＳ１に含まれるデータが暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ１に含まれるデータを復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００５０】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ１から、ＩＳＡＫＭＰヘッダのイニシエータクッキー（Initiator Cookie）及びＳＡペイロードの値を取り出して、セッション情報保持部１８に記憶させる。
【００５１】
次に、パケット読取部１６により、ＩＫＥパケットＳ１のＩＳＡＫＭＰヘッダより後に、鍵交換（ＫＥ：Key Exchange）ペイロードが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、ＳＡペイロードを含むＩＫＥパケットＳ１に鍵交換ペイロード、乱数ペイロード、ハッシュペイロードの何れも含まれていないので、ステップＳＴ１５〜ステップＳＴ１７，ステップＳＴ１９及びステップＳＴ２１の処理を行わずに、ステップＳＴ２２に処理を進める。
【００５２】
次に、パケット読取部１６は、ステップＳＴ２２において、ＩＫＥパケットＳ１がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。そして、共通秘密鍵生成装置３は、ステップＳＴ１１で受信したＩＫＥパケットＳ１をパケット読取部１６からパケット生成部１７に出力し、パケット暗号化部２７で暗号化せずに、通信インターフェース１２からレスポンダに送信させる。
【００５３】
これにより、レスポンダは、ＳＡペイロードを含むＩＫＥパケットＳ１を受信する。レスポンダは、ＳＡペイロードを含むＩＫＥパケットＳ１を受信すると、当該ＩＫＥパケットＳ１に含まれているＩＫＥＳＡから、何れか１つのＩＫＥＳＡ（以下、有効ＩＫＥＳＡと呼ぶ。）を選択し、当該有効ＩＫＥＳＡのＳＡペイロードを含むＩＫＥパケットＳ２を作成し、宛先をイニシエータとして送信する。
【００５４】
「第２処理」
次に、共通秘密鍵生成装置３は、レスポンダから送信されたＩＫＥパケットＳ２を共通秘密鍵生成装置３の通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥ処理に移行する（ステップＳＴ３）。
【００５５】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ２をパケット復号部１５に入力し、パケット復号部１５によって、ＩＫＥパケットＳ２のＩＳＡＫＭＰヘッダのフラグフィールドに格納されている値を参照して、当該フラグフィールドに暗号化ビット（Ｅ）が格納されているか否かを参照して、ＩＫＥパケットＳ２に含まれるデータが暗号化されているかを判定する。この場合、有効ＩＫＥＳＡを含むＩＫＥパケットＳ２が暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ２を復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００５６】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ２から、ＩＳＡＫＭＰヘッダのレスポンダクッキー（Initiator Cookie）及びＳＡペイロードの値を取り出して、セッション情報保持部１８に記憶させる。また、パケット読取部１６は、鍵共有データ保持部２０に、有効ＩＫＥＳＡに含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション属性の値を保存する。
【００５７】
次に、パケット読取部１６により、ＩＫＥパケットＳ２のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、ＩＫＥパケットＳ２に鍵交換ペイロード、乱数ペイロード、ハッシュペイロードの何れも含まれていないので、ステップＳＴ１５〜ステップＳＴ１７，ステップＳＴ１９及びステップＳＴ２１の処理を行わずに、ステップＳＴ２２に処理を進める。
【００５８】
次に、パケット読取部１６は、ＩＫＥパケットＳ２がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。そして、共通秘密鍵生成装置３は、ステップＳＴ１１で受信したＩＫＥパケットＳ２をパケット読取部１６からパケット生成部１７に出力し、パケット暗号化部２７で暗号化せずに、通信インターフェース１２からイニシエータに送信させる。
【００５９】
これにより、イニシエータは、有効ＩＫＥＳＡを含むＩＫＥパケットＳ２を受信する。イニシエータは、有効ＩＫＥＳＡを含むＩＫＥパケットＳ２を受信すると、当該ＩＫＥパケットＳ２に含まれているＩＫＥＳＡを有効ＩＫＥＳＡであると認識する。
【００６０】
これにより、イニシエータとレスポンダ及び共通秘密鍵生成装置３は、有効ＩＫＥＳＡが保存された状態となり、ＩＫＥ処理における暗号化アルゴリズムやハッシュアルゴリズム等を示すＩＫＥＳＡ内容の折衝を完了する。そして、通信システムは、鍵交換に移行する。
【００６１】
すなわち、イニシエータは、乱数を発生させることにより秘密鍵ｘを生成し、当該秘密鍵ｘと有効ＩＫＥＳＡに含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション属性の値が示す素数ｐ及び原始元ｇとを用いて、公開鍵ｇｘ ｍｏｄ ｐを生成し、その公開鍵ｇｘ ｍｏｄ ｐを含む鍵交換ペイロードを生成する。また、イニシエータは、別途生成した乱数Ｎｉ＿ｂを含む乱数ペイロードを生成する。そして、イニシエータは、生成した鍵交換ペイロード及び乱数ペイロード（Ｎｉ）を含むＩＫＥパケットＳ３を作成して、宛先をレスポンダとして送信する。なお、ＩＫＥにおいて原始元ｇは定数２である。また、簡単のため、これ以降ｇｎ  ｍｏｄ  ｐのｍｏｄ  ｐを省略しｇｎと表記する。
【００６２】
「第３処理」
次に、共通秘密鍵生成装置３は、イニシエータから送信された鍵交換ペイロード及び乱数ペイロードをＩＫＥパケットＳ３を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥに移行する（ステップＳＴ３）。
【００６３】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ３に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、ＩＫＥパケットＳ３が暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ３を復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００６４】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ３の鍵交換ペイロードからイニシエータの公開鍵ｇｘを取り出して公開鍵保持部１９に記憶させると共に、ＩＫＥパケットＳ３の乱数ペイロードから、乱数Ｎｉ＿ｂを取り出してセッション情報保持部１８に記憶させる。
【００６５】
次に、パケット読取部１６により、ＩＫＥパケットＳ３のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否かを判定して（ステップＳＴ１４）、鍵交換ペイロードが含まれているのでステップＳＴ１５〜ステップＳＴ１７の処理に移行する。
【００６６】
ステップＳＴ１５では、秘密鍵生成部２３によってイニシエータ側の秘密鍵ｘ’を生成して秘密鍵保持部２５に保存し、次のステップＳＴ１６では、公開鍵生成部２２によって、秘密鍵保持部２５に保存しているイニシエータ側の秘密鍵ｘ’からイニシエータ側の公開鍵ｇｘ’を生成して公開鍵保持部１９に保存し、次のステップＳＴ１７では、パケット生成部１７によって、ステップＳＴ１で受信したＩＫＥパケットＳ３に含まれるイニシエータの公開鍵ｇｘを、公開鍵保持部１９に記憶されているイニシエータ側の公開鍵ｇｘ’に書き換えたＩＫＥパケットＳ３’を作成する。
【００６７】
次に、パケット読取部１６により、ＩＫＥパケットＳ３に、レスポンダが送信した乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、レスポンダが送信した乱数ペイロード、ハッシュペイロードの何れも含まれていないので、ステップＳＴ１９及びステップＳＴ２１の処理を行わずに、ステップＳＴ２２に処理を進める。
【００６８】
次に、パケット読取部１６は、ＩＫＥパケットＳ３がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。
【００６９】
そして、共通秘密鍵生成装置３は、ステップＳＴ１７で作成したＩＫＥパケットＳ３’をパケット読取部１６からパケット生成部１７に出力し、パケット暗号化部２７で暗号化せずに、通信インターフェース１２からレスポンダに送信させる（ステップＳＴ６）。
【００７０】
これにより、レスポンダは、鍵交換ペイロード及び乱数ペイロードを含むＩＫＥパケットＳ３’を受信すると、イニシエータと同様に乱数を発生させて秘密鍵ｙを生成し、当該秘密鍵ｙを用いて公開鍵ｇｙ ｍｏｄ ｐを生成し、当該公開鍵ｇｙ ｍｏｄ ｐを含む鍵交換ペイロード及び別途生成した乱数Ｎｒ＿ｂを含む乱数ペイロードを含むＩＫＥパケットＳ４を生成して、宛先をイニシエータとして送信する。
【００７１】
また、レスポンダは、事前共有鍵、受信したＩＫＥパケットＳ３’の乱数ペイロードに含まれるイニシエータの乱数Ｎｉ＿ｂ及び自身の乱数Ｎｒ＿ｂからＳＫＥＹＩＤを生成し、秘密鍵ｙ、イニシエータ側の公開鍵ｇｘ’から共通秘密鍵ｇｘ’ｙ ｍｏｄ ｐ＝（ｇｘ’）ｙ ｍｏｄ ｐなる演算を行う。そして、レスポンダは、ＳＫＥＹＩＤ、共通秘密鍵ｇｘ’ｙ、イニシエータクッキー、レスポンダクッキーから、ＳＫＥＹＩＤ＿ｄ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅを生成する。
【００７２】
「第４処理」
次に、共通秘密鍵生成装置３は、レスポンダから送信された鍵交換ペイロード及び乱数ペイロードを含むＩＫＥパケットＳ４を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥに移行する（ステップＳＴ３）。
【００７３】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ４に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、鍵交換ペイロード及び乱数ペイロードを含むＩＫＥパケットＳ４が暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ４を復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００７４】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ４の鍵交換ペイロードからレスポンダの公開鍵ｇｙを取り出して公開鍵保持部１９に記憶させると共に、ＩＫＥパケットＳ４の乱数ペイロードから、乱数Ｎｒ＿ｂを取り出してセッション情報保持部１８に記憶させる。
【００７５】
次に、パケット読取部１６により、ＩＫＥパケットＳ４のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否かを判定して（ステップＳＴ１４）、鍵交換ペイロードが含まれているのでステップＳＴ１５〜ステップＳＴ１７の処理に移行する。
【００７６】
ステップＳＴ１５では、秘密鍵生成部２３によってレスポンダ側の秘密鍵ｙ’を生成して秘密鍵保持部２５に保存し、次のステップＳＴ１６では、公開鍵生成部２２によって、秘密鍵保持部２５に保存しているレスポンダ側の秘密鍵ｙ’からレスポンダ側の公開鍵ｇｙ’を生成して公開鍵保持部１９に保存し、次のステップＳＴ１７では、パケット生成部１７によって、ステップＳＴ１で受信したＩＫＥパケットＳ４に含まれるレスポンダの公開鍵ｇｙを、公開鍵保持部１９に記憶されているレスポンダ側の公開鍵ｇｙ’に書き換えたＩＫＥパケットＳ４’を作成する。
【００７７】
次に、パケット読取部１６により、ＩＫＥパケットＳ４に、レスポンダが送信した乱数ペイロードＮｒが含まれているか否かを判定し（ステップＳＴ１８）、含まれているのでステップＳＴ１９に処理を進める。
【００７８】
ステップＳＴ１９においては、セッション鍵生成部２１により、ＲＦＣ２４０９に従って、ＩＫＥ用セッション鍵を生成する。このとき、共通秘密鍵生成装置３は、先ず共通秘密鍵生成部２４により、公開鍵保持部１９に保存しているイニシエータの公開鍵ｇｘと、秘密鍵保持部２５に保存しているレスポンダ側の秘密鍵ｙ’と、鍵共有データ保持部２０のグループディスクリプション属性の値に関連付けられているオークレーグループｐから、イニシエータの共通秘密鍵ｇｘｙ’を計算する。
【００７９】
同様に、共通秘密鍵生成部２４によって、公開鍵保持部１９に保存しているレスポンダの公開鍵ｇｙと、秘密鍵保持部２５に保存しているイニシエータ側の秘密鍵ｘ’と、鍵共有データ保持部２０のグループディスクリプション属性の値に関連付けられているオークレーグループｐから、レスポンダの共通秘密鍵ｇｘ’ｙを計算する。
【００８０】
次に、セッション鍵生成部２１によって、事前共有鍵保持部１４に保持している事前共通鍵、乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用してＳＫＥＹＩＤを生成する。そして、セッション鍵生成部２１は、生成したＳＫＥＹＩＤ、イニシエータの共通秘密鍵ｇｘｙ’、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキーから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、イニシエータのＩＫＥ用セッション鍵であるＳＫＥＹＩＤ＿ｄ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅをそれぞれ生成し、セッション鍵保持部２６に保存する。
【００８１】
同様に、セッション鍵生成部２１は、生成したＳＫＥＹＩＤ、レスポンダの共通秘密鍵ｇｘ’ｙと、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキーから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、レスポンダのＩＫＥ用セッション鍵であるＳＫＥＹＩＤ＿ｄ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅをそれぞれ生成し、セッション情報保持部１８に保存する。このようなセッション鍵生成部２１で生成したレスポンダのＩＫＥ用セッション鍵は、ＩＫＥパケットＳ４の送信時にレスポンダで生成するセッション鍵と同じ値となる。
【００８２】
このように共通秘密鍵生成装置３は、イニシエータ側の共通秘密鍵ｇｘｙ’と、レスポンダ側の共通秘密鍵ｇｘ’ｙとのように異なる共通秘密鍵から、イニシエータ、レスポンダそれぞれのＩＫＥ用セッション鍵を生成する。
【００８３】
次に、パケット読取部１６は、ＩＫＥパケットＳ４にハッシュペイロードが含まれているか否かを判定し（ステップＳＴ２０）、ハッシュペイロードが含まれていないので、ステップＳＴ２１の処理を行わずにステップＳＴ２２に処理を進める。
【００８４】
次に、パケット読取部１６は、ＩＫＥパケットＳ４がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。
【００８５】
そして、共通秘密鍵生成装置３は、ステップＳＴ１７で受信したＩＫＥパケットＳ４’をパケット読取部１６からパケット生成部１７に出力し、パケット暗号化部２７で暗号化せずに、通信インターフェース１２からレスポンダに送信させる（ステップＳＴ６）。
【００８６】
これにより、イニシエータは、鍵交換ペイロード及び乱数ペイロードを含むＩＫＥパケットＳ４’を受信すると、事前共有鍵、受信した乱数ペイロードに含まれる乱数Ｎｒ＿ｂ、自身が生成した乱数Ｎｉ＿ｂからＳＫＥＹＩＤを生成し、イニシエータが生成した秘密鍵ｘ、ＩＫＥパケットＳ４’に含まれるレスポンダ側の公開鍵ｇｙ’から、共通秘密鍵ｇｘｙ’ を計算する。そして、イニシエータは、生成したＳＫＩＹＩＤ、共通秘密鍵ｇｘｙ’と、イニシエータクッキー、レスポンダクッキーからＩＫＥ用セッション鍵であるＳＫＥＹＩＤ＿ｂ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅを生成する。このようにイニシエータで作成したＩＫＥ用セッション鍵は、共通秘密鍵生成装置３がＩＫＥパケットＳ４’を送信するに際して生成したイニシエータのＩＫＥ用セッション鍵と同じ値となる。
【００８７】
これにより、イニシエータ、レスポンダでＩＫＥ用セッション鍵を保持する処理が完了すると共に、共通秘密鍵生成装置３にイニシエータのＩＫＥ用セッション鍵及びレスポンダのＩＫＥ用セッション鍵が保持された状態となる。更に具体的には、イニシエータ、レスポンダ及び共通秘密鍵生成装置３は、以降の処理において、ＩＫＥパケットのＩＳＡＫＭＰヘッダより後のデータを、ＳＫＥＹＩＤ＿ｅをセッション鍵とし、有効ＩＫＥＳＡで設定された暗号アルゴリズムで暗号化する。
【００８８】
次に、イニシエータは、自身のＩＤであるＩＤｉｉを含むＩＤペイロード及びハッシュ値を含むハッシュペイロードを作成する。このとき、イニシエータは、ＲＦＣ２４０９に従ったＳＫＥＹＩＤ、イニシエータの公開鍵ｇｘ、イニシエータクッキー、レスポンダクッキー、ＳＡペイロード、イニシエータのＩＤペイロードから、有効ＩＫＥＳＡで設定されたハッシュアルゴリズムで計算を行うことにより、ハッシュ値ＨＡＳＨ＿Ｉを含むハッシュペイロードを作成する。そして、イニシエータは、ハッシュペイロード及びＩＤペイロードをＩＫＥ用セッション鍵で暗号化したＩＫＥパケットＳ５を送信する。
【００８９】
「第５処理」
次に、共通秘密鍵生成装置３は、イニシエータから送信されたＩＫＥパケットＳ５を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥに移行する（ステップＳＴ３）。
【００９０】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ５に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、ＩＫＥパケットＳ５が暗号化されているので、ステップＳＴ１２に処理を進め、パケット復号部１５により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、セッション鍵保持部２６に記憶しておいたイニシエータのＩＫＥ用セッション鍵を使用して復号して、パケット読取部１６に出力して、ステップＳＴ１３に処理を進める。
【００９１】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ５のＩＤペイロードからイニシエータのＩＤｉｉを取り出して、セッション情報保持部１８に記憶させる。
【００９２】
次に、パケット読取部１６により、ＩＫＥパケットＳ５のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、鍵交換ペイロード、レスポンダが送信した乱数ペイロードの何れも含まれておらず、ハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、及びステップＳＴ１９の処理を行わずに、ステップＳＴ２１に処理を進める。
【００９３】
ステップＳＴ２１においては、パケット生成部１７によって、ＩＫＥパケットＳ５のハッシュペイロードが含むハッシュ値ＨＡＳＨ＿Ｉを、レスポンダ側のセッション情報によって再計算したハッシュ値に変更する。このとき、ハッシュ値は、パケット生成部１７により、ＳＫＥＹＩＤと、公開鍵保持部１９で保持するレスポンダに送信したイニシエータ側の公開鍵ｇｘ’、レスポンダの公開鍵ｇｙ、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキー、ＩＫＥパケットＳ１のＳＡペイロードの値、イニシエータのＩＤｉｉを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して生成する。そして、パケット生成部１７は、変更したハッシュ値ＨＡＳＨ＿Ｉを含むハッシュペイロード及びＩＤｉｉを含むＩＤペイロードを含むＩＫＥパケットＳ５’を作成する。
【００９４】
次のステップＳＴ２２においては、先のステップＳＴ１２でパケット復号部１５による復号を行っているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、パケット暗号化部２７により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、レスポンダ側のＩＫＥ用セッション鍵をセッション鍵保持部２６から読み出し、当該ＩＫＥ用セッション鍵を用いてステップＳＴ２１で作成したＩＫＥパケットＳ５’を暗号化する。
【００９５】
そして、共通秘密鍵生成装置３は、暗号化したＩＫＥパケットＳ５’を通信インターフェース１２からレスポンダに送信させる（ステップＳＴ６）。
【００９６】
レスポンダは、ＩＫＥパケットＳ５’を受信すると、イニシエータがＩＫＥパケットＳ５を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ５’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ＿Ｉと比較する。これらの値は同一であるため、レスポンダは、イニシエータとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【００９７】
次に、レスポンダは、自身のＩＤであるＩＤｉｒを含むＩＤペイロード及びハッシュ値を含むハッシュペイロードを作成する。このとき、レスポンダは、ＲＦＣ２４０９に従ったＳＫＥＹＩＤ、レスポンダの公開鍵ｇｙ、イニシエータクッキー、レスポンダクッキー、ＳＡペイロード、イニシエータのＩＤペイロードを用いて、有効ＩＫＥＳＡで設定されたハッシュアルゴリズムで計算を行うことにより、ハッシュ値ＨＡＳＨ＿Ｒを含むハッシュペイロードを作成する。そして、レスポンダは、ハッシュペイロード及びＩＤペイロードをＩＫＥ用セッション鍵で暗号化したＩＫＥパケットＳ６を送信する。
【００９８】
「第６処理」
次に、共通秘密鍵生成装置３は、レスポンダから送信されたＩＫＥパケットＳ６を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥに移行する（ステップＳＴ３）。
【００９９】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ６に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、ＩＫＥパケットＳ６のハッシュペイロード及びＩＤペイロードが暗号化されているので、セッション鍵保持部２６に記憶されているレスポンダのセッション鍵を用いて、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、ＩＫＥパケットＳ６をパケット復号部１５により復号して（ステップＳＴ１２）、ステップＳＴ１３に処理を進める。
【０１００】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ６のＩＤペイロードからレスポンダのＩＤｉｒを取り出してセッション情報保持部１８に記憶させる。
【０１０１】
次に、パケット読取部１６により、ＩＫＥパケットＳ６のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ６には、ハッシュペイロード及びＩＤペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、ステップＳＴ１９の処理を行わずに、ステップＳＴ２１に移行する。
【０１０２】
ステップＳＴ２１においては、パケット生成部１７によって、ＩＫＥパケットＳ６のハッシュペイロードが含むハッシュ値ＨＡＳＨ＿Ｒを、イニシエータ側の情報によって再計算したハッシュ値に変更する。このとき、ハッシュ値は、パケット生成部１７により、ＳＫＥＹＩＤ、公開鍵保持部１９に記憶されているレスポンダ側の公開鍵ｇｙ’、イニシエータ側の公開鍵ｇｘ’、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキー、ＩＫＥパケットＳ１のＳＡペイロードの値、先のステップＳＴ１３で記憶したレスポンダのＩＤｉｒから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して生成する。そして、パケット生成部１７は、変更したハッシュ値ＨＡＳＨ＿Ｒを含むハッシュペイロード及びＩＤｉｒを含むＩＤペイロードを含むＩＫＥパケットＳ６’を作成する。
【０１０３】
次のステップＳＴ２２においては、先のステップＳＴ１２でパケット復号部１５による復号を行っているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、パケット暗号化部２７により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、イニシエータ側のＩＫＥ用セッション鍵をセッション鍵保持部２６から読み出し、当該ＩＫＥ用セッション鍵を用いてステップＳＴ２１で作成したＩＫＥパケットＳ６’を暗号化する。
【０１０４】
そして、共通秘密鍵生成装置３は、暗号化したＩＫＥパケットＳ６’を通信インターフェース１２からイニシエータに送信させる（ステップＳＴ６）。イニシエータは、ＩＫＥパケットＳ６’を受信すると、レスポンダがＩＫＥパケットＳ６を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ６’のハッシュペイロードに含まれるＨＡＳＨ＿Ｒと比較する。これらの値は同一であるため、イニシエータは、レスポンダとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。これにより、イニシエータとレスポンダとの間で通信相手を認証し、ＩＫＥ用セッション鍵の交換が完了したことになり、第１フェーズを終了する。
【０１０５】
次に、第１フェーズに続いて、ＥＳＰ処理のＳＡの折衝及びＥＳＰ処理内で使用するＥＳＰ用セッション鍵の交換を行う第２フェーズに移行する。なお、以下に説明する第２フェーズは、第１フェーズで確立されたＩＫＥ処理のＳＡに従って、クイックモードと呼ばれる処理を行う場合について説明する。
【０１０６】
このクイックモードの第２フェーズは、先ず、イニシエータが、ハッシュペイロード、ＳＡペイロード、乱数ペイロードを含むＩＫＥパケットＳ７を送信する。
【０１０７】
このハッシュペイロードは、第１フェーズで求めたＳＫＥＹＩＤ＿ａ、ＩＳＡＫＭＰヘッダのメッセージＩＤ、ＳＡペイロード、乱数ペイロードから、第１フェーズの有効ＩＫＥＳＡのハッシュアルゴリズムで計算したハッシュ値ＨＡＳＨ（１）を含む。また、ＳＡペイロードは、ＥＳＰペイロードを暗号化するための暗号アルゴリズム、認証データを生成するためのハッシュアルゴリズム、ＥＳＰ用セッション鍵の有効期限等のＩＰｓｅｃにおける折衝データ（以下、ＩＰｓｅｃＳＡ）の組を１つ以上と、後述のＥＳＰパケットの受信時にＥＳＰ用セッション鍵を選択するためのインデックス値（セキュリティパラメータインデックス：ＳＰＩ）を含む。また、乱数ペイロードは、新たに生成したイニシエータの乱数Ｎｉ＿ｂを含む。そして、イニシエータは、ＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｅを用いて、ＩＳＡＫＭＰヘッダ以外のペイロード部分を暗号化して、ＩＫＥパケットＳ７を作成する。
【０１０８】
「第７処理」
次に、共通秘密鍵生成装置３は、ＩＫＥパケットＳ７を通信インターフェース１１で受信すると、当該ＩＫＥパケットＳ７をパケット復号部１５に送り、ＩＫＥパケットＳ７が暗号化されているか否かを判定する（ステップＳＴ１１）。この場合、ＩＫＥパケットＳ７が暗号化されているので、パケット復号部１５により復号を行う（ステップＳＴ１２）。このとき、パケット復号部１５は、第１フェーズの有効ＩＫＥＳＡで設定された暗号アルゴリズムに従って、セッション鍵保持部２６に記憶されているイニシエータのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｅを使用してＩＫＥパケットＳ７を復号して、パケット読取部１６に出力する。
【０１０９】
次のステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ７に含まれるＳＡペイロード、乱数Ｎｉ＿ｂを含む乱数ペイロードを取り出して、セッション情報保持部１８に記憶させる。
【０１１０】
次に、パケット読取部１６により、ＩＫＥパケットＳ７のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードＮｒが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ７には、鍵交換ペイロード及びレスポンダが送信した乱数ペイロードＮｒが含まれておらず、ハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、ステップＳＴ１９の処理を行わずに、ステップＳＴ２１に移行する。
【０１１１】
ステップＳＴ２１においては、パケット生成部１７により、ＩＫＥパケットＳ７のハッシュペイロードのハッシュ値ＨＡＳＨ（１）を、レスポンダ側の情報によって再計算したハッシュ値に変更する。このとき、パケット生成部１７は、セッション鍵保持部２６に記憶しているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａ、ＩＳＡＫＭＰヘッダのメッセージＩＤ、先のステップＳＴ１３で記憶したＩＫＥパケットＳ７のＳＡペイロード及び乱数Ｎｉ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して再計算を行って、新たなハッシュ値ＨＡＳＨ（１）を生成する。そして、パケット生成部１７は、新たなハッシュ値ＨＡＳＨ（１）を含むハッシュペイロード及び乱数Ｎｉ＿ｂを含む乱数ペイロードを含むＩＫＥパケットＳ７’を生成して、パケット暗号化部２７に出力する。
【０１１２】
次のステップＳＴ２２においては、パケット読取部１６により、先のステップＳＴ１２にてＩＫＥパケットＳ７を復号しているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、セッション鍵保持部２６に記憶されているレスポンダのＩＫＥ用セッション鍵を用いてＩＫＥパケットＳ７’を暗号化して、通信インターフェース１２に出力する。
【０１１３】
そして、共通秘密鍵生成装置３は、暗号化したＩＫＥパケットＳ７’を通信インターフェース１２からレスポンダに送信させる（ステップＳＴ６）。
【０１１４】
レスポンダは、ＩＫＥパケットＳ７’を受信すると、イニシエータがＩＫＥパケットＳ７を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ７’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ（１）と比較する。これらの値は同一であるため、レスポンダは、イニシエータとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１１５】
次に、レスポンダは、ＩＫＥパケットＳ７’のＳＡペイロードに含まれているＩＰｓｅｃＳＡの組の中から１つのＩＰｓｅｃＳＡを選択して、当該選択したＩＰｓｅｃＳＡ（有効ＩＰｓｅｃＳＡ）及びＳＰＩ値を含んだＳＡペイロードを作成すると共に、新たに生成した乱数Ｎｒ＿ｂを含む乱数ペイロードを作成する。そして、レスポンダは、ＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａと、ＩＫＥパケットＳ７’のＩＳＡＫＭＰヘッダに含まれるメッセージＩＤ及び乱数ペイロードに含まれる乱数Ｎｉ＿ｂと、作成したＳＡペイロード及び乱数ペイロードから、ハッシュ値ＨＡＳＨ（２）を計算して、当該ＨＡＳＨ（２）を含むハッシュペイロードを作成する。
【０１１６】
そして、レスポンダは、ＩＳＡＫＭＰヘッダ以外のペイロード部分をＩＫＥ用セッション鍵で暗号化して、ハッシュペイロード、ＳＡペイロード、乱数ペイロードを含むＩＫＥパケットＳ８を送信する。また、レスポンダは、ＳＫＥＹＩＤ＿ｄ、ＩＫＥパケットＳ７’に含まれる有効ＩＰｓｅｃＳＡのプロトコルフィールド、イニシエータ及びレスポンダのＳＰＩフィールドの値、及び乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムでＥＳＰ用セッション鍵であるＫＥＹＭＡＴを生成する。
【０１１７】
「第８処理」
次に、共通秘密鍵生成装置３は、ＩＫＥパケットＳ８を通信インターフェース１１で受信すると、当該ＩＫＥパケットＳ８をパケット復号部１５に送り、ＩＫＥパケットＳ８が暗号化されているか否かを判定する（ステップＳＴ１１）。この場合、ＩＫＥパケットＳ８が暗号化されているので、パケット復号部１５により復号を行う（ステップＳＴ１２）。このとき、パケット復号部１５は、第１フェーズの有効ＩＫＥＳＡで設定された暗号アルゴリズムに従って、セッション鍵保持部２６に記憶されているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｅを使用してＩＫＥパケットＳ８を復号して、パケット読取部１６に出力する。
【０１１８】
次のステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ８のＳＡペイロードに含まれる有効ＩＰｓｅｃＳＡ及び乱数ペイロードに含まれる乱数Ｎｒ＿ｂを取り出して、セッション情報保持部１８に記憶させる。
【０１１９】
次に、パケット読取部１６により、ＩＫＥパケットＳ８のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ８には、鍵交換ペイロードが含まれておらず、レスポンダが送信した乱数ペイロードＮｒが含まれているので、ステップＳＴ１５〜ステップＳＴ１７の処理を行わずに、ステップＳＴ１９に移行する。
【０１２０】
ステップＳＴ１９においては、セッション鍵生成部２１により、ＲＦＣ２４０９に従って、ＥＳＰ用セッション鍵を生成する。このとき、セッション鍵生成部２１は、先ずセッション鍵保持部２６に記憶しているイニシエータのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｄ、セッション情報保持部１８に記憶している有効ＩＰｓｅｃＳＡのプロトコルフィールド、ＳＰＩフィールドの値、乱数Ｎｉ＿ｂ及び乱数Ｎｒ＿ｂを読み出し、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、イニシエータのＥＳＰ用セッション鍵ＫＥＹＭＡＴを生成して、セッション鍵保持部２６に保存する。
【０１２１】
同様に、セッション鍵生成部２１は、セッション鍵保持部２６に保持しているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｄ、セッション情報保持部１８に記憶している有効ＩＰｓｅｃＳＡのプロトコルフィールド、ＳＰＩフィールドの値、乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを読み出し、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、レスポンダのＥＳＰ用セッション鍵ＫＥＹＭＡＴを生成して、セッション鍵保持部２６に保存する。
【０１２２】
続くステップＳＴ２１においては、パケット生成部１７により、ＩＫＥパケットＳ８のハッシュペイロードが含むハッシュ値ＨＡＳＨ（２）を、イニシエータ側の情報によって再計算したハッシュ値に変更する。このとき、パケット生成部１７は、ハッシュ値は、セッション鍵保持部２６に記憶しているイニシエータのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａと、ＩＳＡＫＭＰヘッダのメッセージＩＤ、セッション情報保持部１８に保存したイニシエータの乱数Ｎｉ＿ｂ、ＳＡペイロード、レスポンダの乱数Ｎｒ＿ｂを読み出し、有効ＩＫＥＳＡのハッシュアルゴリズムを使用してハッシュ値を再計算する。
【０１２３】
そして、パケット生成部１７は、新たなハッシュ値ＨＡＳＨ（２）を含むハッシュペイロード、乱数Ｎｒ＿ｂを含む乱数ペイロード及び有効ＩＰｓｅｃＳＡを含むＳＡペイロードを含むＩＫＥパケットを生成して、パケット暗号化部２７に出力する。
【０１２４】
次のステップＳＴ２２においては、パケット読取部１６により、先のステップＳＴ１２にてＩＫＥパケットＳ８を復号しているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、セッション鍵保持部２６に記憶されているイニシエータのＩＫＥ用セッション鍵を用いてＩＫＥパケットＳ８’を暗号化して、通信インターフェース１２に出力する。
【０１２５】
そして、共通秘密鍵生成装置３は、暗号化したＩＫＥパケットＳ８’を通信インターフェース１２からイニシエータに送信させる（ステップＳＴ６）。
【０１２６】
イニシエータは、ＩＫＥパケットＳ８’を受信すると、レスポンダがＩＫＥパケットＳ８を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ８’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ（２）と比較する。これらの値は同一であるため、イニシエータは、レスポンダとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１２７】
次に、イニシエータは、ＳＫＥＹＩＤ＿ａと、受信したＩＫＥパケットＳ８’のＩＳＡＫＭＰヘッダのメッセージＩＤ、自身で生成した乱数Ｎｉ＿ｂ、及び受信したＩＫＥパケットＳ８’の乱数ペイロードに含まれる乱数Ｎｒ＿ｂから、有効ＩＫＥＳＡのハッシュアルゴリズムでハッシュ値ＨＡＳＨ（３）を計算し、当該ＨＡＳＨ（３）を含むハッシュペイロードを作成する。そして、イニシエータは、作成したハッシュペイロードを含むＩＫＥパケットを作成し、当該ハッシュペイロード部分をＩＫＥ用セッション鍵で暗号化したＩＫＥパケットＳ９を送信する。
【０１２８】
また、イニシエータは、ＳＫＥＹＩＤ＿ｄ、ＩＫＥパケットＳ８’に含まれる有効ＩＰｓｅｃＳＡのプロトコルフィールド、イニシエータ及びレスポンダのＳＰＩフィールドの値、及び乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、ＥＳＰ用セッション鍵であるＫＥＹＭＡＴを生成する。
【０１２９】
「第９処理」
次に、共通秘密鍵生成装置３は、ＩＫＥパケットＳ９を通信インターフェース１１で受信すると、当該ＩＫＥパケットＳ９をパケット復号部１５に送り、ＩＫＥパケットＳ９が暗号化されているか否かを判定する（ステップＳＴ１１）。この場合、ＩＫＥパケットＳ９が暗号化されているので、ステップＳＴ１２において、パケット復号部１５により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、セッション鍵保持部２６に記憶されているイニシエータのＩＫＥ用セッション鍵で復号する。次のステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ９にセッション情報保持部１８に記憶するデータが含まれていないと判断して、次のステップＳＴ１４に処理を進める。
【０１３０】
次に、パケット読取部１６により、ＩＫＥパケットＳ９のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ８には、鍵交換ペイロード及びレスポンダが送信した乱数ペイロードが含まれておらず、ハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、ステップＳＴ１９の処理を行わずに、ステップＳＴ２１に移行する。
【０１３１】
ステップＳＴ２１においては、パケット生成部１７により、ＩＫＥパケットＳ９のハッシュペイロードに含まれるハッシュ値を、レスポンダのセッション情報によって再計算したハッシュ値に変更する。このとき、パケット生成部１７は、セッション鍵保持部２６に記憶しているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａ、ＩＳＡＫＭＰヘッダのメッセージＩＤ、セッション情報保持部１８で保持している乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して再計算を行って、新たなハッシュ値ＨＡＳＨ（３）を生成する。そして、パケット生成部１７は、新たなハッシュ値ＨＡＳＨ（３）を含むハッシュペイロードを含むＩＫＥパケットＳ９’を生成して、パケット暗号化部２７に出力する。
【０１３２】
次のステップＳＴ２２においては、パケット暗号化部２７により、先のステップＳＴ１２で復号を行っているのでステップＳＴ２３に処理を進め、セッション鍵保持部２６からレスポンダのＩＫＥ用セッション鍵を読み出して、ＩＫＥパケットＳ９’を暗号化して、レスポンダに送信する。
【０１３３】
レスポンダは、ＩＫＥパケットＳ９’を受信すると、イニシエータがＩＫＥパケットＳ９を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ９’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ（３）と比較する。これらの値は同一であるため、レスポンダは、イニシエータとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１３４】
これにより、イニシエータとレスポンダとの間でＥＳＰ用セッション鍵の交換が完了すると共に、共通秘密鍵生成装置３にイニシエータのＥＳＰ用セッション鍵及びレスポンダのＥＳＰ用セッション鍵が記憶された状態となり、第２フェーズを終了する。
【０１３５】
なお、ＥＳＰ用セッション鍵には、ＩＰｓｅｃＳＡで設定されたセッション鍵の有効期限が存在し、当該有効期限前に、再度第２フェーズを実行することで、新しいＥＳＰ用セッション鍵を生成することになる。また、ＩＫＥ用セッション鍵には、ＩＫＥＳＡで設定されたセッション鍵の有効期限が存在し、当該有効期限前に、再度第１フェーズを実行することで、新しいＩＫＥ用セッション鍵を生成することになる。このように有効期限に応じてＩＫＥ用セッション鍵及びＥＳＰ用セッション鍵を更新した場合には、改めて暗号パケット復号解析装置５にＩＫＥ用セッション鍵及びＥＳＰ用セッション鍵を出力することになる。
【０１３６】
「ＥＳＰ処理」
通信システムは、上述したＩＫＥ処理の後、ＥＳＰ用セッション鍵を用いてデータを暗号化してＶＰＮ装置２とＶＰＮクライアント４との間で通信を行うＥＳＰ処理が可能となる。なお、このＩＫＥ処理は、図６に示すような番号「１０」で示した処理から番号「１１」で示した処理を行うものである。
【０１３７】
具体的には、ＶＰＮクライアント４がＶＰＮ装置２を介してサーバ１にデータを送信する場合、先ず、ＶＰＮクライアント４は、ＶＰＮセッションを使用しない場合と同じＩＰパケットを生成する。すなわち、ＶＰＮクライアント４は、宛先をサーバ１のＩＰアドレスとし、送信元を自身のＩＰアドレスとしたＩＰヘッダを作成してデータの先頭に付加する。ここで、ＶＰＮクライアント４は、サーバ１に送信するデータを、ＴＣＰ等の任意のプロトコルによってカプセル化したデータをＩＰデータグラムとする。
【０１３８】
続いて、ＶＰＮクライアント４は、ＲＦＣ２４０６で定義されている手順に従って、ＩＰパケットの末尾にＥＳＰトレイラを追加し、第２フェーズで選択されたＩＰｓｅｃＳＡの暗号アルゴリズムのブロック長の整数倍とし、当該暗号アルゴリズムに従って、ＥＳＰ用セッション鍵で暗号化する。そして、暗号化したデータの先頭にＥＳＰヘッダを追加し、当該ＥＳＰヘッダの先頭に、宛先をＶＰＮ装置２のＩＰアドレス、送信元をＶＰＮクライアント４のＩＰアドレスとしたＩＰヘッダを追加することにより、ＥＳＰパケットＳ１０を作成して送信する。なお、ＥＳＰヘッダのＳＰＩフィールドには、ＶＰＮ装置２がＩＫＥの第２フェーズで送信したＳＡペイロードのＳＰＩフィールドの値をコピーして格納する。
【０１３９】
次に、共通秘密鍵生成装置３は、ＶＰＮクライアント４からＥＳＰパケットＳ１０を受信すると（ステップＳＴ１）、当該ＥＳＰパケットＳ１０のＩＰヘッダを参照して、ＩＫＥパケットではないと判定し（ステップＳＴ２）、ＥＳＰパケットであると判定して（ステップＳＴ４）、ステップＳＴ５のＥＳＰ処理を開始する。
【０１４０】
次に、共通秘密鍵生成装置３は、図５に示すように、先ずステップＳＴ３１において、パケット復号部１５により、セッション鍵保持部２６に記憶しておいたイニシエータのＥＳＰ用セッション鍵を用い、ＩＰｓｅｃＳＡで設定された暗号化アルゴリズムに従って、ＥＳＰパケットＳ１０の暗号化部分を復号して、当該復号したＥＳＰパケットＳ１０をパケット暗号化部２７に出力する。
【０１４１】
次のステップＳＴ３２においては、パケット暗号化部２７により、レスポンダのＥＳＰ用セッション鍵を用い、ＩＰｓｅｃＳＡで設定された暗号化アルゴリズムに従って、復号されたＥＳＰパケットＳ１０を暗号化して、通信インターフェース１２から送信させる。
【０１４２】
次に、ＶＰＮ装置２でＥＳＰパケットＳ１０を受信すると、ＶＰＮ装置２は、ＥＳＰヘッダより後のデータ部分を、ＩＰｓｅｃＳＡで設定された暗号アルゴリズムによって、ＥＳＰヘッダのＳＰＩフィールドの値によって選択したＥＳＰセッション鍵で復号する。そして、ＶＰＮ装置２は、復号した結果得たデータからＥＳＰトレイラを除外することで、ＶＰＮクライアント４でカプセル化されたＩＰパケットを復元し、当該ＩＰパケットをサーバ１に転送する。
【０１４３】
これにより、サーバ１は、ＶＰＮ装置２からのＩＰパケットの内容に応じてＶＰＮクライアント４にデータを送信する場合、宛先をＶＰＮクライアント４のＩＰアドレス、送信元をサーバ１のＩＰアドレスとしたＩＰヘッダと、ＶＰＮクライアント４に送信するデータとを含むＩＰデータグラムからなるＩＰパケットを送信する。
【０１４４】
ＶＰＮ装置２は、宛先がＶＰＮクライアント４のＩＰアドレスであるＩＰパケットを受信すると、当該ＩＰパケットをＥＳＰヘッダ及びＥＳＰトレーラによってカプセル化して暗号化した後に、宛先をＶＰＮクライアント４、送信元をＶＰＮ装置２としたＩＰヘッダを先頭に追加したＥＳＰパケットＳ１１を送信する。なお、ＥＳＰヘッダのＳＰＩフィールドには、ＶＰＮクライアント４が第２フェーズで送信したＳＡペイロードのＳＰＩフィールドの値をコピーして格納する。
【０１４５】
共通秘密鍵生成装置３は、ＶＰＮ装置２からのＥＳＰパケットＳ１１を受信すると、パケット復号部１５により、セッション鍵保持部２６に記憶されたレスポンダのＥＳＰ用セッション鍵を使用してＥＳＰパケットＳ１１を復号してパケット暗号化部２７に出力し（ステップＳＴ３１）、パケット暗号化部２７により、復号されたＥＳＰパケットＳ１１をセッション鍵保持部２６に記憶されたイニシエータのＥＳＰ用セッション鍵を使用して暗号化して（ステップＳＴ３２）、通信インターフェース１２から送信させる。
【０１４６】
ＶＰＮクライアント４は、共通秘密鍵生成装置３によって暗号化されたＥＳＰパケットＳ１１を受信すると、復号してカプセル化されたＩＰパケットを復元して、サーバ１から送信されたデータを取り出す。
【０１４７】
［実施形態の効果］
以上詳細に説明したように、本発明を適用した通信システムによれば、共通秘密鍵生成装置３により、イニシエータのＩＫＥ用セッション鍵及びレスポンダのＩＫＥ用セッション鍵を生成して保存するようにしたので、イニシエータ及びレスポンダにセッション鍵を出力する機能がなくても、イニシエータとレスポンダとの間での暗号通信を解析することができる。したがって、この通信システムによれば、共通秘密鍵生成装置３に保存しているＩＫＥ用セッション鍵を用いて、暗号通信を復号して解析することができ、ＶＰＮセッションにトラブルが発生した場合の検証を行うことができる。
【０１４８】
また、この通信システムによれば、ＩＫＥ用セッション鍵のみならず、イニシエータのＥＳＰ用セッション鍵及びレスポンダのＥＳＰ用セッション鍵を保存するので、ＩＫＥ処理のみならず、ＥＳＰ処理でトラブルが発生した場合であっても、暗号通信の検証を行うことができる。
【図面の簡単な説明】
【０１４９】
【図１】本発明を適用した共通秘密鍵生成装置を含む通信システムの構成を示すブロック図である。
【図２】本発明を適用した共通秘密鍵生成装置の構成を示すブロック図である。
【図３】本発明を適用した共通秘密鍵生成装置の全体動作を説明するためのフローチャートである。
【図４】本発明を適用した共通秘密鍵生成装置のＩＫＥ処理の処理手順を説明するためのフローチャートである。
【図５】本発明を適用した共通秘密鍵生成装置のＥＳＰ処理の処理手順を説明するためのフローチャートである。
【図６】本発明を適用した共通秘密鍵生成装置を含む通信システムの処理手順を説明するためのフローチャートである。
【符号の説明】
【０１５０】
１  サーバ
２  ＶＰＮ装置
３  共通秘密鍵生成装置
４  ＶＰＮクライアント
５  暗号パケット復号解析装置
６  パケット保存装置
１１  通信インターフェース
１２  通信インターフェース
１３  セッション鍵出力部
１４  事前共有鍵保持部
１５  パケット復号部
１６  パケット読取部
１７  パケット生成部
１８  セッション情報保持部
１９  公開鍵保持部
２０  鍵共有データ保持部
２１  セッション鍵生成部
２２  公開鍵生成部
２３  秘密鍵生成部
２４  共通秘密鍵生成部
２５  秘密鍵保持部
２６  セッション鍵保持部
２７  パケット暗号化部
【図１】
2005210193.tif 000003
【図２】
2005210193.tif 000004
【図３】
2005210193.tif 000005
【図４】
2005210193.tif 000006
【図５】
2005210193.tif 000007
【図６】
2005210193.tif 000008