(57)【要約】【課題】  既存の監視装置を使用して、暗号化された通信データの監視を可能とさせ、既存の暗号通信のセキュリティレベルを保持させる。【解決手段】  暗号通信復号装置３は、端末１から送信されたパケットの復号、端末１宛のパケットの暗号化をする第１鍵情報と、端末２から送信されたパケットの復号、端末２宛のパケットの暗号化をする第２鍵情報と、暗号化アルゴリズムとを記憶しておく。端末１からパケットを受信した場合には、暗号化アルゴリズムに従って第１鍵情報を用いて復号し、復号したパケットを第２鍵情報を用いて暗号化して端末２に送信する。端末２からパケットを受信した場合には、暗号化アルゴリズムに従ってパケットを第２鍵情報を用いて復号し、復号したパケットを第１鍵情報を用いて暗号化して端末１に送信する。パケットの中継を行うときに、復号されたパケットを、監視装置４で処理可能な形態に整形して監視装置４に出力させる。【選択図】      図１
2006279938.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信装置と第２の通信装置との間に設けられ、前記第１の通信装置と前記第２の通信装置との間で暗号化したパケットを送受信し、当該送受信されるパケットの通信内容を監視装置に監視させる通信システムの暗号通信復号装置であって、
前記第１の通信装置から送信されたパケットを復号すると共に前記第１の通信装置宛のパケットを暗号化する第１の鍵情報と、前記第２の通信装置から送信されたパケットを復号すると共に前記第２の通信装置宛のパケットを暗号化する第２の鍵情報と、当該第１の鍵情報又は第２の鍵情報を用いた暗号化アルゴリズムとを記憶する記憶手段と、
前記第１の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第１の鍵情報を用いて復号し、当該復号したパケットを第２の鍵情報を用いて暗号化して前記第２の通信装置に送信し、前記第２の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第２の鍵情報を用いて復号し、当該復号したパケットを第１の鍵情報を用いて暗号化して前記第１の通信装置に送信する中継手段と、
前記中継手段によって復号されたパケットを、前記監視装置で処理可能な形態に整形して前記監視装置に出力して、前記監視装置に通信内容を監視させる出力手段と
を備えることを特徴とする暗号通信復号装置。
【請求項２】
前記出力手段は、前記中継手段で復号されたパケットの宛先を前記監視装置のアドレスに設定し、前記中継手段で復号されたパケットに付加されているヘッダ及びトレーラのうち暗号化及び復号に必要なヘッダ及びトレーラを取り外し、当該取り外したヘッダ又はトレーラに含まれていた次ヘッダプロトコル情報を、前記中継手段で復号されたパケットの先頭に付加されるヘッダの次ヘッダプロトコル情報に変更することにより、前記中継手段で復号されたパケットを、前記監視装置で処理可能な形態に整形することを特徴とする請求項１に記載の暗号通信復号装置。
【請求項３】
前記中継手段により復号したパケットを、暗号化する前に行う処理の処理情報を入力する入力手段を更に備え、
前記中継手段は、前記中継手段で復号したパケットを前記第１の鍵情報又は前記第２の鍵情報を用いて暗号化する前に、前記入力手段で入力した処理情報に基づいた処理を行い、当該処理が施されたパケットを暗号化して、前記第１の通信装置又は前記第２の通信装置に送信すること
を特徴とする請求項１に記載の暗号通信復号装置。
【請求項４】
前記第１の通信装置と前記第２の通信装置とのうち、一方の通信装置が始動側の通信装置となり、他方の通信装置が応答側の通信装置となり、前記記憶手段に記憶させる第１の鍵情報及び第２の鍵情報を生成する鍵生成手段を更に備え、
前記鍵生成手段は、
前記始動側の通信装置及び前記応答側の通信装置で事前に合意した任意の値を記憶する鍵共有データ保持手段と、乱数を発生させて秘密鍵を生成する秘密鍵生成手段と、前記秘密鍵生成手段により生成された秘密鍵と、前記鍵共有データ保持手段に記憶された値とを用いて、公開鍵を生成する公開鍵生成手段と、前記始動側の通信装置又は応答側の通信装置から受信した公開鍵、前記秘密鍵生成手段により生成された秘密鍵並びに前記鍵共有データ保持手段に記憶された値を用いて、共通秘密鍵を生成する共通秘密鍵生成手段とを備え、
前記始動側の通信装置と応答側の通信装置との間で鍵交換がなされる際に、
前記秘密鍵生成手段により、前記応答側の通信装置の代わりに始動側秘密鍵を生成すると共に、前記始動側の通信装置の代わりに応答側秘密鍵を生成し、
前記公開鍵生成手段により、前記応答側の通信装置の代わりに前記始動側秘密鍵から始動側公開鍵を生成すると共に、前記始動側の通信装置の代わりに前記応答側秘密鍵から応答側公開鍵を生成し、
前記応答側の通信装置の公開鍵に等しい前記始動側公開鍵を当該始動側の通信装置に送信すると共に、前記始動側の通信装置の公開鍵に等しい前記応答側公開鍵を当該応答側の通信装置に送信し、
前記秘密鍵生成手段により生成した始動側秘密鍵及び前記応答側の通信装置から受信した当該通信装置の公開鍵を用いて、応答側の共通秘密鍵を生成すると共に、前記秘密鍵生成手段により生成した応答側秘密鍵及び前記始動側の通信装置から受信した当該通信装置の公開鍵を用いて始動側の共通秘密鍵を生成し、
前記応答側の共通秘密鍵を前記第１の鍵情報及び前記第２の鍵情報の一方として前記記憶手段に記憶させ、前記始動側の共通秘密鍵を前記第１の鍵情報及び前記第２の鍵情報の他方として前記記憶手段に記憶させること
を特徴とする請求項１に記載の暗号通信復号装置。
【請求項５】
前記中継手段は、前記出力手段から出力され前記監視装置によって適当なパケットであるとの監視結果を受信した場合には、前記出力手段から前記監視装置に出力させるために復号したパケットを暗号化して中継し、前記出力手段から出力され前記監視装置によって不適当なパケットであるとの監視結果を受信した場合には、前記出力手段から前記監視装置に出力させるために復号したパケットの中継を停止することを特徴とする請求項１に記載の暗号通信復号装置。
【請求項６】
前記中継手段は、前記出力手段から出力され前記監視装置によって任意の処理を加えられたパケットを受信した場合には、そのパケットを暗号化して中継することを特徴とする請求項１に記載の暗号通信復号装置。
【請求項７】
第１の通信装置と第２の通信装置との間で暗号化されて送受信されているパケットを、前記第１の通信装置と前記第２の通信装置との通信経路上に設けられている中継装置を介して傍受し、当該パケットの通信内容を監視装置に監視させる通信システムの暗号通信復号装置であって、
前記第１の通信装置から前記第２の通信装置に送信されるパケットを復号する第１の鍵情報と、前記第２の通信装置から前記第１の通信装置に送信されるパケットを復号する第２の鍵情報と、当該第１の鍵情報又は第２の鍵情報を用いた暗号化アルゴリズムとを記憶する記憶手段と、
前記第１の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第１の鍵情報を用いて復号し、前記第２の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第２の鍵情報を用いて復号する復号手段と、
前記復号手段によって復号されたパケットを、前記監視装置で処理可能な形態に整形して前記監視装置に出力して、前記監視装置に通信内容を監視させる出力手段と
を備えることを特徴とする暗号通信復号装置。
【請求項８】
前記出力手段は、前記復号手段で復号されたパケットのデータを、前記監視装置が処理可能なデータ長に調整し、当該調整した各データに、当該データのプロトコル情報とパケットの宛先である前記監視装置のアドレスとを含むヘッダを付加したパケットを作成することにより、前記復号手段で復号されたパケットを、前記監視装置で処理可能な形態に整形することを特徴とする請求項７に記載の暗号通信復号装置。
【請求項９】
前記第１の鍵情報又は前記第２の鍵情報を生成するための前記第１の通信装置又は前記第２の通信装置の秘密鍵を設定する秘密鍵設定手段と、
前記第１の通信装置と前記第２の通信装置との間で行われている前記第１の鍵情報及び前記第２の鍵情報と前記暗号化アルゴリズムとを折衝して決定するためのパケットを傍受し、当該傍受したパケットと前記秘密鍵とに基づいて、前記記憶手段に記憶される第１の鍵情報及び第２の鍵情報と暗号化アルゴリズムとを生成する鍵生成手段を更に備えることを特徴とする請求項７に記載の暗号通信復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＩＰ（Internet Protocol）を利用した通信システムにおいて、通信データの盗聴や改ざんを防ぐために、パケットを暗号化すると共に認証データによって送受信間で認証処理を行う暗号通信復号装置に関し、特に、通信データのセキュリティを高めた通信において、ウィルスやワーム等の不正プログラムや、不正侵入、情報漏洩等を検知又は防止するために、通信内容を監視する暗号通信復号装置に関する。
【背景技術】
【０００２】
従来より、ウィルス、ワームなどの不正プログラムや、不正侵入、情報漏洩等を検知又は防止するために、通信データの監視及び制御を行う通信監視システムとして、不正侵入検出システム（ＩＤＳ：Intrusion Detection System）、不正侵入防御システム（ＩＰＳ：Intrusion Protection System）、ウィルスウォール、コンテンツフイルタ等を採用したものが知られている。
【０００３】
これらのセキュリティ技術のうち、暗号通信プロトコルの１つであるＳＳＬ（Secure Sockets Layer）に対応した製品として、例えばWebwasher SSL Scannerや下記の特許文献１に記載された技術が知られている。この製品で採用している技術は、ＳＳＬ通信の経路上に接続し、ＳＳＬ通信を内部的に終端することによってアプリケーションデータを復号し、検証した上で中継する装置である。
【特許文献１】特開平１０−９３５５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、前記従来の技術では、暗号化された通信データであっても復号して監視し、通信データの異常を判定することができるが、通信データの監視装置と復号装置とが一体化して構成されているために、既存の不正侵入監視システムを再利用することができないという問題点がある。したがって、上述した技術では、既存のＩＰＳやＩＤＳが存在し、暗号化された通信データを追加して監視させようとする場合に、既存のＩＰＳやＩＤＳに代えて、新たな復号装置と監視装置とを導入する必要があった。
【０００５】
また、特許文献１に記載された通信監査装置では、復号してパケットの内容を監視させるものの、監視するために復号したパケットを再暗号化して中継しておらず、既存の暗号通信におけるセキュリティ・レベルが保持されているとは言えないものであった。
【０００６】
そこで、本発明は、上述した実情に鑑みて提案されたものであり、既存の通信データの監視装置を使用して、暗号化された通信データの監視を可能とさせ、既存の暗号通信のセキュリティ・レベルを保持することができる暗号通信復号装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る暗号通信復号装置は、第１の通信装置と第２の通信装置との間に設けられ、第１の通信装置と第２の通信装置との間で暗号化したパケットを送受信し、当該送受信されるパケットの通信内容を監視装置に監視させるものである。
【０００８】
この暗号通信復号装置は、第１の通信装置から送信されたパケットを復号すると共に第１の通信装置宛のパケットを暗号化する第１の鍵情報と、第２の通信装置から送信されたパケットを復号すると共に第２の通信装置宛のパケットを暗号化する第２の鍵情報と、当該第１の鍵情報又は第２の鍵情報を用いた暗号化アルゴリズムとを記憶手段に記憶させておく。そして、第１の通信装置からパケットを受信した場合には、中継手段によって、暗号化アルゴリズムに従って、当該パケットを第１の鍵情報を用いて復号し、当該復号したパケットを第２の鍵情報を用いて暗号化して第２の通信装置に送信する。また、第２の通信装置からパケットを受信した場合には、中継手段によって、暗号化アルゴリズムに従って、当該パケットを第２の鍵情報を用いて復号し、当該復号したパケットを第１の鍵情報を用いて暗号化して第１の通信装置に送信する。
【０００９】
このような暗号通信復号装置は、中継手段によってパケットの中継を行うときに、出力手段により、中継手段によって復号されたパケットを、監視装置で処理可能な形態に整形して監視装置に出力させ、監視装置に通信内容を監視させることにより、上述の課題を解決する。
【００１０】
また、本発明に係る他の暗号通信復号装置は、第１の通信装置と第２の通信装置との間で暗号化されて送受信されているパケットを、第１の通信装置と第２の通信装置との通信経路上に設けられている中継装置を介して傍受し、当該パケットの通信内容を監視装置に監視させるものである。
【００１１】
この暗号通信復号装置は、第１の通信装置から第２の通信装置に送信されるパケットを復号する第１の鍵情報と、第２の通信装置から第１の通信装置に送信されるパケットを復号する第２の鍵情報と、当該第１の鍵情報又は第２の鍵情報を用いた暗号化アルゴリズムとを記憶手段に記憶させておく。そして、第１の通信装置からパケットを受信した場合には、復号手段によって、暗号化アルゴリズムに従って、当該パケットを第１の鍵情報を用いて復号する。また、第２の通信装置からパケットを受信した場合には、復号手段によって、暗号化アルゴリズムに従って、当該パケットを第２の鍵情報を用いて復号する。
【００１２】
このような暗号通信復号装置は、出力手段により、復号手段によって復号したパケットを、監視装置で処理可能な形態に整形して監視装置に出力させ、監視装置に通信内容を監視させることにより、上述の課題を解決する。
【発明の効果】
【００１３】
本発明に係る暗号通信復号装置によれば、暗号通信を復号させるために必要な情報として、鍵情報と暗号化アルゴリズムとを記憶させておき、復号したパケットを、監視装置で処理可能な形態に整形して監視装置で通信内容を監視させることができる。したがって、この暗号通信復号装置によれば、通信内容が暗号化されている場合であっても、通信内容を監視させることができ、既存の平文のみを解析可能な監視装置を使用することができる。また、この暗号通信復号装置によれば、復号したパケットを第１の通信装置又は第２の通信装置に送信させることなく通信内容の監視を行わせるので、既存の暗号通信のセキュリティ・レベルを保持することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を適用した第１実施形態〜第３実施形態について図面を参照して説明する。
【００１５】
［第１実施形態］
本発明を適用した第１実施形態に係る通信システムは、暗号通信の経路上に暗号通信復号装置を接続し、当該暗号通信経路上に流れる通信データを取得して中継するものである。この通信システムは、暗号通信復号装置によって通信データを中継するに際して、暗号化された通信データを復号し、当該復号した通信データを監視側で処理可能なデータ形態に整形した上で、正当な通信データか否かを監視させる。そして、通信データの監視によって、正当な通信データであると判定された場合には、暗号通信復号装置により、復号した通信データを再暗号化してデータ送信先に送信する。これによって、暗号化通信を行う通信装置間の暗号通信経路上において、ウィルス、ワームなどの不正プログラムや、不正侵入、情報漏洩が発生していないかの監視を行う。
【００１６】
また、この通信システムでは、暗号化された通信データを復号する暗号通信復号装置によって通信データの整形を行うので、当該暗号通信復号装置と、復号した通信データの監視装置とを別個にして構成することができ、任意の監視装置であって、既存の監視装置を使用することができる。
【００１７】
更に、この通信システムは、暗号化された通信データの監視をするために復号した通信データを、暗号通信復号装置によって再度暗号化して中継することにより、暗号通信の主体となる通信装置間の暗号通信を透過的に提供する。これにより、暗号通信経路上で通信を行う通信装置にとっては既存の通信処理から設定変更を行う必要がなく、且つ既存の暗号通信のセキュリティ・レベルを維持する。
【００１８】
［通信システムの構成］
この通信システムは、例えば図１に示すように、ＶＰＮ（Virtual Private Network）端末１（第１の通信装置）とＶＰＮ端末２（第２の通信装置）との間で、暗号通信復号装置３を介してＶＰＮセッションが構築される通信システムに適用される。この通信システムは、ＶＰＮ端末１からネットワークＮを経由してＶＰＮ端末２への通信をする際、ネットワークＮ上でのデータの盗聴や送信元の成りすまし等を防ぐために、ＶＰＮ端末１とＶＰＮ端末２の間でＩＰｓｅｃ（IP(Internet Protocol) security protocol）によるＶＰＮセッションを構築することによって通信データの安全性を確保する。また、この通信システムでは、暗号通信復号装置３によって通信内容を復号してネットワーク監視装置４に出力し、ネットワーク監視装置４で通信内容の監視及び暗号通信復号装置３による中継の制御等を行うものである。
【００１９】
この通信システムにおいて、ＶＰＮ端末２、暗号通信復号装置３及びネットワーク監視装置４はＩＰ（Internet Protocol）ベースのＬＡＮ（Local Area Network）で接続されている。また、この通信システムにおいて、ネットワークＮは、例えば公衆で利用可能なＩＰネットワークである。
【００２０】
ＶＰＮ端末１及びＶＰＮ端末２は、暗号化処理をしてパケットを送信する必要がある場合、相互間でＶＰＮセッションを構築するため、ＩＫＥ（Internet Key Exchange）に従って処理（ＩＫＥ処理）を行って、通信データを暗号化及び復号するための情報である共通鍵（以下、セッション鍵と呼ぶ。）を保持する。また、ＶＰＮ端末１及びＶＰＮ端末２は、ネットワーク層におけるセキュリティプロトコルであるＩＰｓｅｃに準拠した処理を行って、パケットを生成する。具体的には、ＶＰＮ端末１及びＶＰＮ端末２は、ＩＰｓｅｃに含まれるプロトコルのうち、セキュリティプロトコル、例えば暗号ペイロード（ＥＳＰ：IP Encapsulating security Payload）を作成するＥＳＰプロトコルに従った処理（ＥＳＰ処理）を行う。
【００２１】
暗号通信復号装置３は、ＶＰＮ端末１及びＶＰＮ端末２でＩＫＥ処理及びＥＳＰ処理が行われているときに、ＶＰＮ端末１又はＶＰＮ端末２から送信されたデータを受信する。そして、暗号通信復号装置３は、後述する所定の処理を行うことにより、ＶＰＮ端末１及びＶＰＮ端末２で送受信されるパケットを中継する。更に、暗号通信復号装置３は、ＥＳＰで暗号化された通信データ（ＥＳＰパケットのペイロード部）を復号し、当該復号した通信データをネットワーク監視装置４で受信可能なデータ構造のＩＰパケットに整形して、ネットワーク監視装置４に出力する。
【００２２】
ネットワーク監視装置４は、暗号通信復号装置３によってＥＳＰパケットが復号されて整形されたＩＰパケットを受信すると、当該ＩＰパケットの内容を解析する。ここで、ネットワーク監視装置４は、例えばウィルス又はワームを含むか否かの解析処理等を行うことによって、ＶＰＮ端末１とＶＰＮ端末２との間で伝送されている通信データが正当なものであるか、不当なものであるかの解析を行う。そして、ネットワーク監視装置４は、不適当な通信データであると判定した場合には、ネットワーク管理者などに通知する。
【００２３】
このような通信システムは、ＶＰＮ端末１とＶＰＮ端末２との間のパケット通信に対して、暗号通信復号装置３により、ＥＳＰパケットの復号、読取、内容の保存、変更、暗号化、転送といった処理を行う。これにより、通信システムは、ＶＰＮ端末１とＶＰＮ端末２との間の通信をインターセプトして、ＶＰＮ端末１及びＶＰＮ端末２にとっては既存の処理を行うのみで、暗号通信の内容をネットワーク監視装置４により監視させることが可能となる。
【００２４】
なお、以下の説明では、説明の簡単のため、ＲＦＣ（Request For Comments）２４０９で定義されている各種手順のうち、事前共有鍵を使用した相互認証をメインモードで行い、且つ一部を省略した場合を述べる。また、秘密鍵、公開鍵とは、ＲＦＣ２６３１で定義されているDiffie−Hellman鍵共有法における秘密鍵、公開鍵を指し、更には、予期しないデータが入力された場合等のエラー処理に関する記述は省略する。
【００２５】
［暗号通信復号装置３の構成］
つぎに、上述した通信システムにおける暗号通信復号装置３の機能的な構成を図２を参照して説明する。なお、以下の説明では、ＶＰＮセッションを構築する始動側のＶＰＮ端末１又はＶＰＮ端末２をイニシエータ（始動側の通信装置）と呼び、当該イニシエータの始動に反応する応答側のＶＰＮ端末１又はＶＰＮ端末２をレスポンダ（応答側の通信装置）と呼ぶ。また、以下に説明する暗号通信復号装置３の各部は、例えばＩＫＥやＥＳＰ等に準拠した通信制御プログラムをＲＯＭ等に記憶しておき、当該通信制御プログラムをＣＰＵにより実行することにより得られる各機能部、インターフェース回路、ハードディスク装置により実現される各部に相当するものである。
【００２６】
暗号通信復号装置３は、上述したように、ネットワークＮ及びネットワーク監視装置４と接続され、ネットワークＮに対してＩＰパケットを送受信すると共に、ネットワーク監視装置４に対して、当該ネットワーク監視装置４で受信可能なＩＰパケットやＬＡＮフレームを送信するものである。この暗号通信復号装置３は、ネットワークＮを介してＶＰＮ端末１とＶＰＮ端末２との間で伝送されるＩＰパケットをインターセプトし、ネットワーク監視装置４で解析可能なデータ形態に整形するものである。
【００２７】
暗号通信復号装置３は、ＶＰＮ端末１及びＶＰＮ端末２に対する受信用の通信インターフェース１１、送信用の通信インターフェース１２、ネットワーク監視装置４に対するインターフェースである通信インターフェース１３を備える。
【００２８】
これら通信インターフェース１１，通信インターフェース１２は、簡単のため受信用、送信用としているが、実際には２つのインターフェースの一方がＶＰＮ端末２、もう一方がネットワークＮに固定的に接続されている。すなわち、ＶＰＮ端末２からパケットを受信した場合は、ＶＰＮ端末２側のインターフェースとして一方の通信インターフェース１１を使用し、ネットワークＮ側のインターフェースとして他方の通信インターフェース１２を使用する。また、ネットワークＮからパケットを受信した場合は、ネットワークＮ側のインターフェースとして一方の通信インターフェース１１を使用し、ＶＰＮ端末２側のインターフェースとして他方の通信インターフェース１２を使用することになる。
【００２９】
また、この暗号通信復号装置３は、ＶＰＮセッションを構成するＶＰＮ端末１とＶＰＮ端末２との間で予め同意した事前共有鍵を記憶する事前共有鍵保持部１４を備える。この事前共有鍵保持部１４に記憶される事前共有鍵は、例えばネットワーク管理者のキーボード操作によって入力される。また、この暗号通信復号装置３は、事前共有鍵保のみならず、ＶＰＮセッションを構築するために必要な情報を設定しておく。
【００３０】
更に、この暗号通信復号装置３は、パケット復号部１５で復号したＶＰＮ端末１とＶＰＮ端末２との間での通信内容を、パケット整形部２８でＩＰパケットのデータ形態に整形して生成し、通信インターフェース１３によって出力する。これにより、暗号通信復号装置３は、ネットワーク監視装置４に、通信内容を評価させることができる。
【００３１】
このような暗号通信復号装置３は、通信インターフェース１１で暗号化されたデータを含むパケットを受信すると、当該パケットをパケット復号部１５で復号し、復号済のデータをパケット読取部１６に送る。また、通信インターフェース１１で受信したパケットが暗号化されたデータを含まない場合は、当該パケットのデータをそのままパケット読取部１６に送る。そして、パケット読取部１６は、平文のデータの内容を判定して、当該データのうち必要なデータをパケット生成部１７、セッション情報保持部１８、公開鍵保持部１９又は鍵共有データ保持部２０に送る。
【００３２】
セッション情報保持部１８は、ＶＰＮ端末１とＶＰＮ端末２との間でＩＫＥ処理を行うに際して送受信される各種情報をセッション情報として記憶する。このセッション情報保持部１８に記憶されたイニシエータのセッション情報、レスポンダのセッション情報は、セッション鍵生成部２１でセッション鍵を生成するに際して読み込まれる。
【００３３】
公開鍵保持部１９は、パケット読取部１６から送られたイニシエータの公開鍵（始動側の通信装置から受信した当該通信装置の公開鍵）、レスポンダの公開鍵（応答側の通信装置から受信した当該通信装置の公開鍵）、及び公開鍵生成部２２で生成されたイニシエータ側の公開鍵、レスポンダ側の公開鍵を記憶する。この公開鍵保持部１９に記憶されたイニシエータの公開鍵、レスポンダの公開鍵は、共通秘密鍵生成部２４で共通秘密鍵を生成するに際して読み込まれ、イニシエータ側の公開鍵はイニシエータに、レスポンダ側の公開鍵はレスポンダに公開鍵を送信するに際してパケット生成部１７に読み込まれる。
【００３４】
なお、イニシエータ側の公開鍵は、レスポンダに代わって暗号通信復号装置が生成するものであり、レスポンダの公開鍵に相当する。また、レスポンダ側の公開鍵は、イニシエータに代わって暗号通信復号装置が生成するものであり、イニシエータの公開鍵に相当する。
【００３５】
鍵共有データ保持部２０は、イニシエータにより複数のＩＫＥＳＡが提案され、レスポンダに選択された何れかのＩＫＥＳＡ（有効ＩＫＥＳＡ）に含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション（Group Description）属性の値を記憶する。この鍵共有データ保持部２０に記憶された情報は、秘密鍵生成部２３で秘密鍵を生成するに際して読み込まれると共に、共通秘密鍵生成部２４で共通秘密鍵を生成するに際して読み込まれる。
【００３６】
秘密鍵生成部２３は、イニシエータ側の秘密鍵及びレスポンダ側の秘密鍵を生成して、秘密鍵保持部２５に記憶させる。このとき、秘密鍵生成部２３は、鍵共有データ保持部２０に保持されたグループディスクリプション属性の値を参照して、秘密鍵の種類を決定する。なお、イニシエータ側の秘密鍵は、レスポンダに代わって暗号通信復号装置が生成するものであり、レスポンダの秘密鍵に相当する。また、レスポンダ側の秘密鍵は、イニシエータに代わって暗号通信復号装置が生成するものであり、イニシエータの秘密鍵に相当する。
【００３７】
公開鍵生成部２２は、秘密鍵保持部２５に記憶されているレスポンダ側の秘密鍵と、鍵共有データ保持部２０に記憶されているグループディスクリプション属性の値に関連付けられたオークレーグループの値を用いてレスポンダ側の公開鍵を生成すると共に、秘密鍵保持部２５に記憶されているイニシエータ側の秘密鍵と、鍵共有データ保持部２０に記憶されているグループディスクリプション属性の値に関連付けられたオークレーグループの値を用いてイニシエータ側の公開鍵を生成し、それぞれの公開鍵を公開鍵保持部１９に記憶させる。これにより、パケット生成部１７は、イニシエータ、レスポンダに公開鍵を送信するに際して、公開鍵保持部１９に記憶されているそれぞれの公開鍵を読み出すことが可能となる。
【００３８】
共通秘密鍵生成部２４は、公開鍵保持部１９に保存しているイニシエータの公開鍵、秘密鍵保持部２５に保存しているイニシエータ側の秘密鍵と、鍵共有データ保持部２０に記憶されているグループディスクリプション属性の値に関連付けられたオークレーグループの値から、イニシエータの共通秘密鍵（始動側の共通秘密鍵）を生成する。また、共通秘密鍵生成部２４は、レスポンダ側についても同様に、レスポンダの公開鍵、レスポンダ側の秘密鍵、オークレーグループの値から、レスポンダの共通秘密鍵（応答側の共通秘密鍵）を生成する。そして、共通秘密鍵生成部２４は、イニシエータの共通秘密鍵及びレスポンダの共通秘密鍵をセッション鍵生成部２１に出力する。
【００３９】
セッション鍵生成部２１は、共通秘密鍵生成部２４からイニシエータ、レスポンダそれぞれの共通秘密鍵を入力すると、事前共有鍵保持部１４に記憶されている事前共通鍵を使用し、セッション情報保持部１８に記憶されているセッション情報を参照して、ＳＫＥＹＩＤを生成する。そして、セッション鍵生成部２１は、生成したＳＫＥＹＩＤ、共通秘密鍵生成部２４に記憶されているイニシエータ、レスポンダのそれぞれの共通秘密鍵を使用し、セッション情報保持部１８に記憶されているセッション情報を参照して、セッション鍵をそれぞれ生成し、セッション鍵保持部２６に記憶させる。
【００４０】
このような暗号通信復号装置３において、レスポンダ又はイニシエータにパケットを送信する場合には、パケット読取部１６からの情報に従って、パケット生成部１７により、パケットに格納する情報を認識してパケットを生成する。そして、暗号通信復号装置３は、パケット生成部１７により生成したパケットを暗号化する必要がある場合には、パケット暗号化部２７によりセッション鍵保持部２６に記憶されているセッション鍵を読み出して暗号化して、通信インターフェース１２から送信させる。
【００４１】
また、暗号通信復号装置３は、セッション鍵や暗号化アルゴリズムを折衝して決定する後述のＩＫＥ処理を完了すると、当該ＩＫＥ処理で決定されたセッション鍵を使用して、ＶＰＮ端末１とＶＰＮ端末２との間で伝送される暗号通信の内容をネットワーク監視装置４で監視させる。このとき、パケット整形部２８は、パケット復号部１５によってセッション鍵で復号済のパケットを、ネットワーク監視装置４で受信及び解析可能かデータ形態に整形して、通信インターフェース１３から出力させる。これにより、暗号通信復号装置３は、ネットワーク監視装置４にＶＰＮ端末１とＶＰＮ端末２との間で伝送される暗号通信の通信内容を監視させる。
【００４２】
なお、この暗号通信復号装置３の詳細な処理内容については、後述するものとする。
【００４３】
［暗号通信復号装置３の動作］
つぎに、上述したように構成された暗号通信復号装置３の動作について図３〜図６を参照して説明する。
【００４４】
「全体動作」
先ず、暗号通信復号装置３の全体動作としては、図３に示すように、ＶＰＮ端末１又はＶＰＮ端末２からパケットを受信すると（ステップＳＴ１）、当該パケットがＩＫＥ処理におけるパケット（ＩＫＥパケット）か否かを判定する（ステップＳＴ２）。このとき、暗号通信復号装置３は、パケット読取部１６により、パケットに含まれるＩＰ等の下位プロトコルのヘッダを参照して、パケットの種類を判定し、ＩＫＥパケットであると判定した場合にはステップＳＴ３に処理を進め、ＩＫＥパケットではないと判定した場合にはステップＳＴ４に処理を進める。
【００４５】
ステップＳＴ３においては、暗号通信復号装置３により、ＶＰＮ端末１及びＶＰＮ端末２との間でデータを通信する前に、鍵交換をしてＶＰＮセッションを構築するためのＩＫＥ処理を行う。このＩＫＥ処理は、ＲＦＣ２４０９で定義されている処理を行うことによって、ＶＰＮ端末１のＩＫＥ用セッション鍵及びＥＳＰ用セッション鍵と、ＶＰＮ端末２のＩＫＥ用セッション鍵及びＥＳＰ用セッション鍵とを生成する。ここで、ＩＫＥ処理においては、ＲＦＣ２４０８で定義されているＩＳＡＫＭＰ（internet security association key management）にしたがって鍵交換を行う。
【００４６】
なお、このステップＳＴ３において、暗号通信復号装置３は、ステップＳＴ１でパケットを受信する毎に、図４に示すようなＩＫＥ処理を１回行う。そして、暗号通信復号装置３は、ステップＳＴ３のＩＫＥ処理を行った後にステップＳＴ６に処理を進め、ＩＫＥ処理によって生成したパケットをＶＰＮ端末１又はＶＰＮ端末２に送信して、処理を終了する。なお、この図４に示す処理内容については後述する。
【００４７】
一方、ステップＳＴ４においては、暗号通信復号装置３により、ステップＳＴ１で受信したパケットがＥＳＰパケットか否かを判定する。このとき、暗号通信復号装置３は、パケット読取部１６により、パケットに含まれるヘッダ情報等を参照してパケットの種類を判定し、ＥＳＰパケットであると判定した場合にはステップＳＴ５に処理を進め、ＥＳＰパケットではないと判定した場合にはステップＳＴ６に処理を進める。
【００４８】
ステップＳＴ５においては、暗号通信復号装置３により、図５に示すようなＥＳＰ処理を行い、ステップＳＴ６においてはＥＳＰ処理にて生成したパケットをＶＰＮ端末１又はＶＰＮ端末２に送信する。なお、この図５に示す処理内容については後述する。また、ステップＳＴ６において、送信するパケットにチェックサムフィールドがあれば、これを再計算した値に更新する。
【００４９】
「ＩＫＥ処理」
つぎに、上述したステップＳＴ３におけるＩＫＥ処理の詳細な内容について図４及び図６を参照して説明する。なお、このＩＫＥ処理は、図６に示すような番号「１」で示した第１処理から番号「９」で示した第９処理を行うものである。
【００５０】
このＩＫＥ処理には、第１フェーズと第２フェーズの２つフェーズがある。第１フェーズは、ＶＰＮ端末１とＶＰＮ端末２との間の相手認証、すなわち通信相手の認証と、ＩＫＥ処理内で使用するセッション鍵（以下、ＩＫＥ用セッション鍵と呼ぶ。）の交換を行う。
【００５１】
また、第１フェーズには、イニシエータ、レスポンダそれぞれのＩＤを暗号化するメインモードと、ＩＤを暗号化しないためメインモードと比較して手順が簡略化されたアグレッシブモードとの２つのモードがあり、何れか一方を実行する。以下に説明する本例では、ＶＰＮ端末１をイニシエータ、ＶＰＮ端末２をレスポンダとして、第１フェーズとしてメインモードを行う場合について説明する。
【００５２】
「第１処理」
この第１フェーズにおいては、図６に示すように、先ずイニシエータは、宛先をレスポンダに設定したＳＡ(security Association)ペイロードを含むパケットをＩＫＥパケットＳ１として送信する。このＳＡペイロードは、ＩＫＥ処理においてデータを暗号化するための暗号アルゴリズム、メッセージ認証コード等を生成するためのハッシュアルゴリズム、相互認証の方法、鍵の生成に必要な素数（オークレーグループ）、セッション鍵の有効期限等のデータ（以下、ＩＫＥＳＡと呼ぶ。）を１つ以上含む。
【００５３】
次に、暗号通信復号装置３は、イニシエータから送信されたＳＡペイロードを含むＩＫＥパケットＳ１を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥ処理に移行する（ステップＳＴ３）。
【００５４】
このＩＫＥ処理では、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ１をパケット復号部１５に入力し、パケット復号部１５によって、ＩＫＥパケットＳ１のＩＳＡＫＭＰヘッダのフラグフィールドに格納されている値を参照して、当該フラグフィールドに暗号化ビット（Ｅ）が格納されているか否かを参照して、ＩＫＥパケットＳ１に含まれるデータが暗号化されているかを判定する。この場合、ＳＡペイロードを含むＩＫＥパケットＳ１に含まれるデータが暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ１に含まれるデータを復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００５５】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ１から、ＩＳＡＫＭＰヘッダのイニシエータクッキー（Initiator Cookie）及びＳＡペイロードの値を取り出して、セッション情報保持部１８に記憶させる。
【００５６】
次に、パケット読取部１６により、ＩＫＥパケットＳ１のＩＳＡＫＭＰヘッダより後に、鍵交換（ＫＥ：Key Exchange）ペイロードが含まれているか否か（ステップＳＴ１４）、乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、ＩＫＥパケットＳ１に鍵交換ペイロード、乱数ペイロード、ハッシュペイロードの何れも含まれていないので、ステップＳＴ１５〜ステップＳＴ１７，ステップＳＴ１９及びステップＳＴ２１の処理を行わずに、ステップＳＴ２２に処理を進める。
【００５７】
次に、パケット読取部１６は、ステップＳＴ２２において、ＩＫＥパケットＳ１がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。そして、暗号通信復号装置３は、ステップＳＴ１で受信したＩＫＥパケットＳ１をパケット読取部１６からパケット生成部１７に出力し、パケット暗号化部２７で暗号化せずに、通信インターフェース１２からレスポンダに送信させる。
【００５８】
これにより、レスポンダは、ＩＫＥパケットＳ１を受信する。レスポンダは、ＩＫＥパケットＳ１を受信すると、当該ＩＫＥパケットＳ１のＳＡペイロードに含まれているＩＫＥＳＡから、何れか１つのＩＫＥＳＡ（以下、有効ＩＫＥＳＡと呼ぶ。）を選択し、当該有効ＩＫＥＳＡを含むＳＡペイロードを含むＩＫＥパケットＳ２を作成し、宛先をイニシエータとして送信する。
【００５９】
「第２処理」
次に、暗号通信復号装置３は、レスポンダから送信されたＩＫＥパケットＳ２を暗号通信復号装置３の通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥ処理に移行する（ステップＳＴ３）。
【００６０】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ２をパケット復号部１５に入力し、パケット復号部１５によって、ＩＫＥパケットＳ２のＩＳＡＫＭＰヘッダのフラグフィールドに格納されている値を参照して、当該フラグフィールドに暗号化ビット（Ｅ）が格納されているかを参照して、ＩＫＥパケットＳ２に含まれるデータが暗号化されているかを判定する。この場合、有効ＩＫＥＳＡを含むＩＫＥパケットＳ２が暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ２を復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００６１】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ２から、ＩＳＡＫＭＰヘッダのレスポンダクッキー（Responder Cookie）及びＳＡペイロードに含まれる有効ＩＫＥＳＡを取り出して、セッション情報保持部１８に記憶させる。また、パケット読取部１６は、鍵共有データ保持部２０に、有効ＩＫＥＳＡに含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション属性の値を保存する。
【００６２】
次に、パケット読取部１６により、ＩＫＥパケットＳ２のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、ＩＫＥパケットＳ２に鍵交換ペイロード、乱数ペイロード、ハッシュペイロードの何れも含まれていないので、ステップＳＴ１５〜ステップＳＴ１７，ステップＳＴ１９及びステップＳＴ２１の処理を行わずに、ステップＳＴ２２に処理を進める。
【００６３】
次に、パケット読取部１６は、ＩＫＥパケットＳ２がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。そして、暗号通信復号装置３は、ステップＳＴ１で受信したＩＫＥパケットＳ２をパケット読取部１６からパケット生成部１７に出力し、パケット暗号化部２７で暗号化せずに、通信インターフェース１２からイニシエータに送信させる。
【００６４】
これにより、イニシエータは、ＩＫＥパケットＳ２を受信する。イニシエータは、ＩＫＥパケットＳ２を受信すると、当該ＩＫＥパケットＳ２のＳＡペイロードに含まれているＩＫＥＳＡを有効ＩＫＥＳＡであると認識する。
【００６５】
これにより、イニシエータとレスポンダ及び暗号通信復号装置３は、有効ＩＫＥＳＡが保存された状態となり、ＩＫＥ処理における暗号アルゴリズムやハッシュアルゴリズム等を示すＩＫＥＳＡの内容の折衝を完了する。そして、通信システムは、鍵交換に移行する。
【００６６】
すなわち、イニシエータは、乱数を発生させることにより秘密鍵ｘを生成し、当該秘密鍵ｘと有効ＩＫＥＳＡに含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション属性の値が示す素数ｐ及び原始元ｇとを用いて、公開鍵ｇｘ mod ｐを生成し、その公開鍵ｇｘ mod ｐを含む鍵交換ペイロードＫＥを生成する。また、イニシエータは、別途生成した乱数Ｎｉ＿ｂを含む乱数ペイロードＮｉを生成する。そして、イニシエータは、生成した鍵交換ペイロードＫＥ及び乱数ペイロードＮｉを含むＩＫＥパケットＳ３を作成して、宛先をレスポンダとして送信する。なお、ＩＫＥにおいて原始元ｇは定数２である。また、以下の説明では、簡単のため、イニシエータの公開鍵ｇｘ  mod  ｐのmod  ｐを省略して、イニシエータの公開鍵ｇｘのように表記する。なお、レスポンダの公開鍵、共通秘密鍵についても、以下では、mod pを省略して説明する。
【００６７】
「第３処理」
次に、暗号通信復号装置３は、イニシエータから送信されたＩＫＥパケットＳ３を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥ処理に移行する（ステップＳＴ３）。
【００６８】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ３に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、ＩＫＥパケットＳ３が暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ３を復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００６９】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ３の鍵交換ペイロードＫＥからイニシエータの公開鍵ｇｘを取り出して公開鍵保持部１９に記憶させると共に、ＩＫＥパケットＳ３の乱数ペイロードＮｉから、乱数Ｎｉ＿ｂを取り出してセッション情報保持部１８に記憶させる。
【００７０】
次に、パケット読取部１６により、ＩＫＥパケットＳ３のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードＫＥが含まれているか否かを判定して（ステップＳＴ１４）、鍵交換ペイロードＫＥが含まれているのでステップＳＴ１５〜ステップＳＴ１７の処理に移行する。
【００７１】
ステップＳＴ１５では、秘密鍵生成部２３によってレスポンダ側の秘密鍵ｘ’を生成して秘密鍵保持部２５に保存し、次のステップＳＴ１６では、公開鍵生成部２２によって、秘密鍵保持部２５に保存しているレスポンダ側の秘密鍵ｘ’からレスポンダ側の公開鍵ｇｘ’を生成して公開鍵保持部１９に保存し、次のステップＳＴ１７では、パケット生成部１７によって、ステップＳＴ１で受信したＩＫＥパケットＳ３に含まれるイニシエータの公開鍵ｇｘを、公開鍵保持部１９に記憶されているレスポンダ側の公開鍵ｇｘ’に書き換えたＩＫＥパケットＳ３’を作成する。
【００７２】
次に、パケット読取部１６により、ＩＫＥパケットＳ３に、乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、乱数ペイロードＮｒ、ハッシュペイロードの何れも含まれていないので、ステップＳＴ１９及びステップＳＴ２１の処理を行わずに、ステップＳＴ２２に処理を進める。
【００７３】
次に、パケット読取部１６は、ＩＫＥパケットＳ３がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。
【００７４】
そして、暗号通信復号装置３は、ステップＳＴ１７で作成したＩＫＥパケットＳ３’を、パケット暗号化部２７で暗号化せずに、通信インターフェース１２からレスポンダに送信させる（ステップＳＴ６）。
【００７５】
これにより、レスポンダは、ＩＫＥパケットＳ３’を受信すると、イニシエータと同様に乱数を発生させて秘密鍵ｙを生成し、当該秘密鍵ｙを用いて公開鍵ｇｙ mod ｐを生成し、当該公開鍵ｇｙを含む鍵交換ペイロード及び別途生成した乱数Ｎｒ＿ｂを含む乱数ペイロードＮｒを含むＩＫＥパケットＳ４を生成して、宛先をイニシエータとして送信する。
【００７６】
また、レスポンダは、事前共有鍵、受信したＩＫＥパケットＳ３’の乱数ペイロードＮｉに含まれるイニシエータの乱数Ｎｉ＿ｂ及び自身の乱数Ｎｒ＿ｂからＳＫＥＹＩＤを生成し、秘密鍵ｙ、レスポンダ側の公開鍵ｇｘ’から共通秘密鍵ｇｘ’ｙ＝（ｇｘ’）ｙなる演算を行う。そして、レスポンダは、ＳＫＥＹＩＤ、共通秘密鍵ｇｘ’ｙ、イニシエータクッキー、レスポンダクッキーから、ＳＫＥＹＩＤ＿ｄ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅを生成する。
【００７７】
「第４処理」
次に、暗号通信復号装置３は、レスポンダから送信されたＩＫＥパケットＳ４を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥに移行する（ステップＳＴ３）。
【００７８】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ４に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、ＩＫＥパケットＳ４が暗号化されていないので、パケット復号部１５からパケット読取部１６にＩＫＥパケットＳ４を復号化処理をせずに出力してステップＳＴ１３に処理を進める。
【００７９】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ４の鍵交換ペイロードからレスポンダの公開鍵ｇｙを取り出して公開鍵保持部１９に記憶させると共に、ＩＫＥパケットＳ４の乱数ペイロードから、乱数Ｎｒ＿ｂを取り出してセッション情報保持部１８に記憶させる。
【００８０】
次に、パケット読取部１６により、ＩＫＥパケットＳ４のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードＫＥが含まれているか否かを判定して（ステップＳＴ１４）、鍵交換ペイロードＫＥが含まれているのでステップＳＴ１５〜ステップＳＴ１７の処理に移行する。
【００８１】
ステップＳＴ１５では、秘密鍵生成部２３によってイニシエータ側の秘密鍵ｙ’を生成して秘密鍵保持部２５に保存し、次のステップＳＴ１６では、公開鍵生成部２２によって、秘密鍵保持部２５に保存しているイニシエータ側の秘密鍵ｙ’からイニシエータ側の公開鍵ｇｙ’を生成して公開鍵保持部１９に保存し、次のステップＳＴ１７では、パケット生成部１７によってパケット読取部１６に保持するＩＫＥパケットＳ４に含まれるレスポンダの公開鍵ｇｙを、公開鍵保持部１９に記憶されているイニシエータ側の公開鍵ｇｙ’に書き換えたＩＫＥパケットＳ４’を作成する。
【００８２】
次に、パケット読取部１６により、ＩＫＥパケットＳ４に、乱数ペイロードＮｒが含まれているか否かを判定し（ステップＳＴ１８）、含まれているのでステップＳＴ１９に処理を進める。
【００８３】
ステップＳＴ１９においては、セッション鍵生成部２１により、ＲＦＣ２４０９に従って、ＩＫＥ用セッション鍵を生成する。このとき、暗号通信復号装置３は、先ず共通秘密鍵生成部２４により、公開鍵保持部１９に保存しているイニシエータの公開鍵ｇｘと、秘密鍵保持部２５に保存しているイニシエータ側の秘密鍵ｙ’と、鍵共有データ保持部２０のグループディスクリプション属性の値に関連付けられているオークレーグループｐから、イニシエータの共通秘密鍵ｇｘｙ’を計算する。
【００８４】
同様に、共通秘密鍵生成部２４によって、公開鍵保持部１９に保存しているレスポンダの公開鍵ｇｙと、秘密鍵保持部２５に保存しているレスポンダ側の秘密鍵ｘ’と、鍵共有データ保持部２０のグループディスクリプション属性の値に関連付けられているオークレーグループｐから、レスポンダの共通秘密鍵ｇｘ’ｙを計算する。
【００８５】
次に、セッション鍵生成部２１によって、事前共有鍵保持部１４に保持している事前共通鍵、セッション情報保持部１８に保存している乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用してＳＫＥＹＩＤを生成する。
【００８６】
そして、セッション鍵生成部２１は、生成したＳＫＥＹＩＤ、イニシエータの共通秘密鍵ｇｘｙ’、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキーから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、イニシエータのＩＫＥ用セッション鍵であるＳＫＥＹＩＤ＿ｄ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅをそれぞれ生成し、セッション鍵保持部２６に保存する。
【００８７】
同様に、セッション鍵生成部２１は、生成したＳＫＥＹＩＤ、レスポンダの共通秘密鍵ｇｘ’ｙと、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキーから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、レスポンダのＩＫＥ用セッション鍵であるＳＫＥＹＩＤ＿ｄ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅをそれぞれ生成し、セッション情報保持部１８に保存する。このようなセッション鍵生成部２１で生成したレスポンダのＩＫＥ用セッション鍵は、ＩＫＥパケットＳ４の送信時にレスポンダで生成するセッション鍵と同じ値となる。
【００８８】
このように暗号通信復号装置３は、イニシエータの共通秘密鍵ｇｘｙ’と、レスポンダの共通秘密鍵ｇｘ’ｙとのように異なる共通秘密鍵から、イニシエータ、レスポンダそれぞれのＩＫＥ用セッション鍵を生成する。
【００８９】
次に、パケット読取部１６は、ＩＫＥパケットＳ４にハッシュペイロードが含まれているか否かを判定し（ステップＳＴ２０）、ハッシュペイロードが含まれていないので、ステップＳＴ２１の処理を行わずにステップＳＴ２２に処理を進める。
【００９０】
次に、パケット読取部１６は、ＩＫＥパケットＳ４がステップＳＴ１２の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。
【００９１】
そして、暗号通信復号装置３は、ステップＳＴ１７で作成したＩＫＥパケットＳ４’をパケット暗号化部２７で暗号化せずに、通信インターフェース１２からイニシエータに送信させる（ステップＳＴ６）。
【００９２】
これにより、イニシエータは、ＩＫＥパケットＳ４’を受信すると、事前共有鍵、受信した乱数ペイロードに含まれる乱数Ｎｒ＿ｂ、自身が生成した乱数Ｎｉ＿ｂからＳＫＥＹＩＤを生成し、イニシエータが生成した秘密鍵ｘ、ＩＫＥパケットＳ４’に含まれるイニシエータ側の公開鍵ｇｙ’から、共通秘密鍵ｇｘｙ’ を計算する。そして、イニシエータは、生成したＳＫＩＹＩＤ、共通秘密鍵ｇｘｙ’と、イニシエータクッキー、レスポンダクッキーからＩＫＥ用セッション鍵であるＳＫＥＹＩＤ＿ｂ、ＳＫＥＹＩＤ＿ａ、ＳＫＥＹＩＤ＿ｅを生成する。このようにイニシエータで作成したＩＫＥ用セッション鍵は、暗号通信復号装置３がＩＫＥパケットＳ４’を送信するに際して生成したイニシエータのＩＫＥ用セッション鍵と同じ値となる。
【００９３】
これにより、イニシエータ、レスポンダでＩＫＥ用セッション鍵を保持する処理が完了すると共に、暗号通信復号装置３にイニシエータのＩＫＥ用セッション鍵及びレスポンダのＩＫＥ用セッション鍵が保持された状態となる。更に具体的には、イニシエータ、レスポンダ及び暗号通信復号装置３は、以降の処理において、ＩＫＥパケットのＩＳＡＫＭＰヘッダより後のデータを、ＳＫＥＹＩＤ＿ｅを暗号化鍵とし、有効ＩＫＥＳＡで設定された暗号アルゴリズムで暗号化する。
【００９４】
次に、イニシエータは、自身のＩＤであるＩＤｉｉを含むＩＤペイロード及びハッシュ値を含むハッシュペイロードを作成する。このとき、イニシエータは、ＲＦＣ２４０９に従ったＳＫＥＹＩＤ、イニシエータの公開鍵ｇｘ、イニシエータクッキー、レスポンダクッキー、ＳＡペイロード、イニシエータのＩＤペイロードから、有効ＩＫＥＳＡで設定されたハッシュアルゴリズムで計算を行うことにより、ハッシュ値ＨＡＳＨ＿Ｉを含むハッシュペイロードを作成する。そして、イニシエータは、ハッシュペイロード及びＩＤペイロードをＩＫＥ用セッション鍵で暗号化したＩＫＥパケットＳ５を送信する。
【００９５】
「第５処理」
次に、暗号通信復号装置３は、イニシエータから送信されたＩＫＥパケットＳ５を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥ処理に移行する（ステップＳＴ３）。
【００９６】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ５に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、ＩＫＥパケットＳ５が暗号化されているので、ステップＳＴ１２に処理を進め、パケット復号部１５により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、セッション鍵保持部２６に記憶しておいたイニシエータのＩＫＥ用セッション鍵を使用して復号して、パケット読取部１６に出力して、ステップＳＴ１３に処理を進める。
【００９７】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ５のＩＤペイロードからイニシエータのＩＤｉｉを取り出して、セッション情報保持部１８に記憶させる。
【００９８】
次に、パケット読取部１６により、ＩＫＥパケットＳ５のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。そして、パケット読取部１６は、鍵交換ペイロード、乱数ペイロードＮｒの何れも含まれておらず、ハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、及びステップＳＴ１９の処理を行わずに、ステップＳＴ２１に処理を進める。
【００９９】
ステップＳＴ２１においては、パケット生成部１７によって、パケット読取部１６に保持するＩＫＥパケットＳ５のハッシュペイロードが含むハッシュ値ＨＡＳＨ＿Ｉを、レスポンダ側のセッション情報によって再計算したハッシュ値に変更したＩＫＥパケットＳ５’を作成する。このとき、ハッシュ値は、パケット生成部１７により、ＳＫＥＹＩＤと、公開鍵保持部１９で保持するレスポンダに送信したレスポンダ側の公開鍵ｇｘ’、レスポンダの公開鍵ｇｙ、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキー、ＩＫＥパケットＳ１のＳＡペイロードの値、イニシエータのＩＤｉｉを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して生成する。
【０１００】
次のステップＳＴ２２においては、先のステップＳＴ１２でパケット復号部１５による復号を行っているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、パケット暗号化部２７により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、レスポンダのＩＫＥ用セッション鍵をセッション鍵保持部２６から読み出し、当該ＩＫＥ用セッション鍵を用いてステップＳＴ２１で作成したＩＫＥパケットＳ５’を暗号化する。
【０１０１】
そして、暗号通信復号装置３は、暗号化したＩＫＥパケットＳ５’を通信インターフェース１２からレスポンダに送信させる（ステップＳＴ６）。
【０１０２】
レスポンダは、ＩＫＥパケットＳ５’を受信すると、ＩＫＥパケットＳ５’をＩＫＥ用セッション鍵で復号し、イニシエータがＩＫＥパケットＳ５を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ５’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ＿Ｉと比較する。これらの値は同一であるため、レスポンダは、イニシエータとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１０３】
次に、レスポンダは、自身のＩＤであるＩＤｉｒを含むＩＤペイロード及びハッシュ値を含むハッシュペイロードを作成する。このとき、レスポンダは、ＲＦＣ２４０９に従ったＳＫＥＹＩＤ、レスポンダの公開鍵ｇｙ、イニシエータクッキー、レスポンダクッキー、ＳＡペイロード、イニシエータのＩＤペイロードを用いて、有効ＩＫＥＳＡで設定されたハッシュアルゴリズムで計算を行うことにより、ハッシュ値ＨＡＳＨ＿Ｒを含むハッシュペイロードを作成する。そして、レスポンダは、ハッシュペイロード及びＩＤペイロードをＩＫＥ用セッション鍵で暗号化したＩＫＥパケットＳ６を送信する。
【０１０４】
「第６処理」
次に、暗号通信復号装置３は、レスポンダから送信されたＩＫＥパケットＳ６を通信インターフェース１１により受信し（ステップＳＴ１）、ＩＫＥパケットと判定して（ステップＳＴ２）、図４に示すＩＫＥ処理に移行する（ステップＳＴ３）。
【０１０５】
このＩＫＥ処理は、先ずステップＳＴ１１において、通信インターフェース１１で受信したＩＫＥパケットＳ６に含まれるデータが暗号化されているかをパケット復号部１５で判定する。この場合、ＩＫＥパケットＳ６が暗号化されているので、セッション鍵保持部２６に記憶されているレスポンダのセッション鍵を用いて、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、ＩＫＥパケットＳ６をパケット復号部１５により復号して（ステップＳＴ１２）、ステップＳＴ１３に処理を進める。
【０１０６】
ステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ６のＩＤペイロードからレスポンダのＩＤｉｒを取り出してセッション情報保持部１８に記憶させる。
【０１０７】
次に、パケット読取部１６により、ＩＫＥパケットＳ６のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ６には、鍵交換ペイロード、乱数ペイロードＮｒの何れも含まれておらず、ハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、及びステップＳＴ１９の処理を行わずに、ステップＳＴ２１に処理を進める。
【０１０８】
ステップＳＴ２１においては、パケット生成部１７によって、パケット読取部１６に保持するＩＫＥパケットＳ６のハッシュペイロードが含むハッシュ値ＨＡＳＨ＿Ｒを、イニシエータ側のセッション情報によって再計算したハッシュ値に変更したＩＫＥパケットＳ６’を作成する。このとき、ハッシュ値は、パケット生成部１７により、ＳＫＥＹＩＤと、公開鍵保持部１９に記憶されているイニシエータ側の公開鍵ｇｙ’、イニシエータの公開鍵ｇｘ、セッション情報保持部１８に保存しているイニシエータクッキー、レスポンダクッキー、ＩＫＥパケットＳ１のＳＡペイロードの値、先のステップＳＴ１３で記憶したレスポンダのＩＤｉｒから、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して生成する。
【０１０９】
次のステップＳＴ２２においては、先のステップＳＴ１２でパケット復号部１５による復号を行っているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、パケット暗号化部２７により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、イニシエータのＩＫＥ用セッション鍵をセッション鍵保持部２６から読み出し、当該ＩＫＥ用セッション鍵を用いてステップＳＴ２１で作成したＩＫＥパケットＳ６’を暗号化する。
【０１１０】
そして、暗号通信復号装置３は、暗号化したＩＫＥパケットＳ６’を通信インターフェース１２からイニシエータに送信させる（ステップＳＴ６）。
【０１１１】
イニシエータは、ＩＫＥパケットＳ６’を受信すると、ＩＫＥパケットＳ６’をＩＫＥ用セッション鍵で復号し、レスポンダがＩＫＥパケットＳ６を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ６’のハッシュペイロードに含まれるＨＡＳＨ＿Ｒと比較する。これらの値は同一であるため、イニシエータは、レスポンダとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１１２】
これにより、イニシエータとレスポンダとの間で通信相手を認証が完了したことになり、第１フェーズを終了する。
【０１１３】
次に、第１フェーズに続いて、ＥＳＰ処理のＳＡの折衝及びＥＳＰ処理内で使用するＥＳＰ用セッション鍵の交換を行う第２フェーズに移行する。なお、以下に説明する第２フェーズは、第１フェーズで確立されたＩＫＥ処理のＳＡに従って、クイックモードと呼ばれる処理を行う場合について説明する。
【０１１４】
このクイックモードの第２フェーズは、先ず、イニシエータが、ハッシュペイロード、ＳＡペイロード、乱数ペイロードＮｉを含むＩＫＥパケットＳ７を送信する。
【０１１５】
このハッシュペイロードは、第１フェーズで求めたＳＫＥＹＩＤ＿ａ、ＩＳＡＫＭＰヘッダのメッセージＩＤ、ＳＡペイロード、乱数ペイロードＮｉから、第１フェーズの有効ＩＫＥＳＡのハッシュアルゴリズムで計算したハッシュ値ＨＡＳＨ（１）を含む。また、ＳＡペイロードは、ＥＳＰペイロードを暗号化するための暗号アルゴリズム、認証データを生成するためのハッシュアルゴリズム、ＥＳＰ用セッション鍵の有効期限等のＩＰｓｅｃにおける折衝データの組（以下、ＩＰｓｅｃＳＡ）を１つ以上と、後述のＥＳＰパケットの受信時にＥＳＰ用セッション鍵を選択するためのインデックス値（セキュリティパラメータインデックス：ＳＰＩ）を含む。また、乱数ペイロードＮｉは、新たに生成したイニシエータの乱数Ｎｉ＿ｂを含む。そして、イニシエータは、有効ＩＫＥＳＡの暗号アルゴリズムによって、ＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｅを用いて、ＩＳＡＫＭＰヘッダより後の部分を暗号化して、ＩＫＥパケットＳ７を作成する。
【０１１６】
「第７処理」
次に、暗号通信復号装置３は、ＩＫＥパケットＳ７を通信インターフェース１１で受信すると、当該ＩＫＥパケットＳ７をパケット復号部１５に送り、ＩＫＥパケットＳ７が暗号化されているか否かを判定する（ステップＳＴ１１）。この場合、ＩＫＥパケットＳ７が暗号化されているので、パケット復号部１５により復号を行う（ステップＳＴ１２）。このとき、パケット復号部１５は、第１フェーズの有効ＩＫＥＳＡで設定された暗号アルゴリズムに従って、セッション鍵保持部２６に記憶されているイニシエータのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｅを使用してＩＫＥパケットＳ７を復号して、パケット読取部１６に出力する。
【０１１７】
次のステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ７に含まれるＳＡペイロード、乱数Ｎｉ＿ｂを含む乱数ペイロードを取り出して、セッション情報保持部１８に記憶させる。
【０１１８】
次に、パケット読取部１６により、ＩＫＥパケットＳ７のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、乱数ペイロードが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ７には、鍵交換ペイロード及び乱数ペイロードＮｒが含まれておらず、ハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、ステップＳＴ１９の処理を行わずに、ステップＳＴ２１に移行する。
【０１１９】
ステップＳＴ２１においては、パケット生成部１７により、パケット読取部１６に保持するＩＫＥパケットＳ７のハッシュペイロードのハッシュ値ＨＡＳＨ（１）を、レスポンダ側の情報によって再計算したハッシュ値に変更したＩＫＥパケットＳ７’を生成して、パケット暗号化部２７に出力する。このとき、パケット生成部１７は、セッション鍵保持部２６に記憶しているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａ、ＩＳＡＫＭＰヘッダのメッセージＩＤ、先のステップＳＴ１３で記憶したＩＫＥパケットＳ７のＳＡペイロード及び乱数Ｎｉ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して再計算を行って、新たなハッシュ値ＨＡＳＨ（１）を生成する。
【０１２０】
次のステップＳＴ２２においては、パケット読取部１６により、先のステップＳＴ１２にてＩＫＥパケットＳ７を復号しているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、セッション鍵保持部２６に記憶されているレスポンダのＩＫＥ用セッション鍵を用いてＩＫＥパケットＳ７’を暗号化して、通信インターフェース１２に出力する。
【０１２１】
そして、暗号通信復号装置３は、暗号化したＩＫＥパケットＳ７’を通信インターフェース１２からレスポンダに送信させる（ステップＳＴ６）。
【０１２２】
レスポンダは、ＩＫＥパケットＳ７’を受信すると、イニシエータがＩＫＥパケットＳ７を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ７’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ（１）と比較する。これらの値は同一であるため、レスポンダは、イニシエータとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１２３】
次に、レスポンダは、ＩＫＥパケットＳ７’のＳＡペイロードに含まれているＩＰｓｅｃＳＡの組の中から１つのＩＰｓｅｃＳＡを選択して、当該選択したＩＰｓｅｃＳＡ（有効ＩＰｓｅｃＳＡ）及びＳＰＩ値を含んだＳＡペイロードを作成すると共に、新たに生成した乱数Ｎｒ＿ｂを含む乱数ペイロードを作成する。そして、レスポンダは、ＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａと、ＩＫＥパケットＳ７’のＩＳＡＫＭＰヘッダに含まれるメッセージＩＤ及び乱数ペイロードに含まれる乱数Ｎｉ＿ｂと、作成したＳＡペイロード及び乱数ペイロードから、ハッシュ値ＨＡＳＨ（２）を計算して、当該ＨＡＳＨ（２）を含むハッシュペイロードを作成する。
【０１２４】
そして、レスポンダは、ＩＳＡＫＭＰヘッダより後の部分を、有効ＩＫＥＳＡの暗号アルゴリズムによって、ＩＫＥ用セッション鍵で暗号化して、ハッシュペイロード、ＳＡペイロード、乱数ペイロードＮｒを含むＩＫＥパケットＳ８を送信する。
【０１２５】
また、レスポンダは、ＳＫＥＹＩＤ＿ｄ、ＩＫＥパケットＳ７’に含まれる有効ＩＰｓｅｃＳＡのプロトコルフィールド、イニシエータ及びレスポンダのＳＰＩフィールドの値、及び乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムでＥＳＰ用セッション鍵であるＫＥＹＭＡＴを生成する。
【０１２６】
「第８処理」
次に、暗号通信復号装置３は、ＩＫＥパケットＳ８を通信インターフェース１１で受信すると、当該ＩＫＥパケットＳ８をパケット復号部１５に送り、ＩＫＥパケットＳ８が暗号化されているか否かを判定する（ステップＳＴ１１）。この場合、ＩＫＥパケットＳ８が暗号化されているので、パケット復号部１５により復号を行う（ステップＳＴ１２）。このとき、パケット復号部１５は、第１フェーズの有効ＩＫＥＳＡで設定された暗号アルゴリズムに従って、セッション鍵保持部２６に記憶されているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｅを使用してＩＫＥパケットＳ８を復号して、パケット読取部１６に出力する。
【０１２７】
次のステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ８のＳＡペイロードに含まれる有効ＩＰｓｅｃＳＡ及び乱数ペイロードに含まれる乱数Ｎｒ＿ｂを取り出して、セッション情報保持部１８に記憶させる。
【０１２８】
次に、パケット読取部１６により、ＩＫＥパケットＳ８のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ８には、鍵交換ペイロードが含まれておらず、乱数ペイロードＮｒ及びハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７の処理を行わずに、ステップＳＴ１９及びステップＳＴ２１に移行する。
【０１２９】
ステップＳＴ１９においては、セッション鍵生成部２１により、ＲＦＣ２４０９に従って、ＥＳＰ用セッション鍵を生成する。このとき、セッション鍵生成部２１は、先ずセッション鍵保持部２６に記憶しているイニシエータのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｄ、セッション情報保持部１８に記憶している有効ＩＰｓｅｃＳＡのプロトコルフィールド、ＳＰＩフィールドの値、乱数Ｎｉ＿ｂ及び乱数Ｎｒ＿ｂを読み出し、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、イニシエータのＥＳＰ用セッション鍵ＫＥＹＭＡＴを生成して、セッション鍵保持部２６に保存する。
【０１３０】
同様に、セッション鍵生成部２１は、セッション鍵保持部２６に保持しているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ｄ、セッション情報保持部１８に記憶している有効ＩＰｓｅｃＳＡのプロトコルフィールド、ＳＰＩフィールドの値、乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを読み出し、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、レスポンダのＥＳＰ用セッション鍵ＫＥＹＭＡＴを生成して、セッション鍵保持部２６に保存する。
【０１３１】
続くステップＳＴ２１においては、パケット生成部１７により、パケット読取部１６に保持するＩＫＥパケットＳ８のハッシュペイロードが含むハッシュ値ＨＡＳＨ（２）を、イニシエータ側の情報によって再計算したハッシュ値に変更したＩＫＥパケットＳ８’を生成して、パケット暗号化部２７に出力する。このとき、パケット生成部１７は、セッション鍵保持部２６に記憶しているイニシエータのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａと、ＩＳＡＫＭＰヘッダのメッセージＩＤ、セッション情報保持部１８に保存したイニシエータの乱数Ｎｉ＿ｂ、ＳＡペイロード、レスポンダの乱数Ｎｒ＿ｂを読み出し、有効ＩＫＥＳＡのハッシュアルゴリズムを使用してハッシュ値を再計算する。
【０１３２】
次のステップＳＴ２２においては、パケット読取部１６により、先のステップＳＴ１２にてＩＫＥパケットＳ８を復号しているので、ステップＳＴ２３に処理を進める。このステップＳＴ２３においては、セッション鍵保持部２６に記憶されているイニシエータのＩＫＥ用セッション鍵を用いてＩＫＥパケットＳ８’を暗号化して、通信インターフェース１２に出力する。
【０１３３】
そして、暗号通信復号装置３は、暗号化したＩＫＥパケットＳ８’を通信インターフェース１２からイニシエータに送信させる（ステップＳＴ６）。
【０１３４】
イニシエータは、ＩＫＥパケットＳ８’を受信すると、レスポンダがＩＫＥパケットＳ８を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ８’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ（２）と比較する。これらの値は同一であるため、イニシエータは、レスポンダとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１３５】
次に、イニシエータは、ＳＫＥＹＩＤ＿ａと、受信したＩＫＥパケットＳ８’のＩＳＡＫＭＰヘッダのメッセージＩＤ、自身で生成した乱数Ｎｉ＿ｂ、及び受信したＩＫＥパケットＳ８’の乱数ペイロードに含まれる乱数Ｎｒ＿ｂから、有効ＩＫＥＳＡのハッシュアルゴリズムでハッシュ値ＨＡＳＨ（３）を計算し、当該ＨＡＳＨ（３）を含むハッシュペイロードを作成する。そして、イニシエータは、作成したハッシュペイロードを含むＩＫＥパケットを作成し、当該ハッシュペイロード部分をＩＫＥ用セッション鍵で暗号化したＩＫＥパケットＳ９を送信する。
【０１３６】
また、イニシエータは、ＳＫＥＹＩＤ＿ｄ、ＩＫＥパケットＳ８’に含まれる有効ＩＰｓｅｃＳＡのプロトコルフィールド、イニシエータ及びレスポンダのＳＰＩフィールドの値、及び乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して、ＥＳＰ用セッション鍵であるＫＥＹＭＡＴを生成する。
【０１３７】
「第９処理」
次に、暗号通信復号装置３は、ＩＫＥパケットＳ９を通信インターフェース１１で受信すると、当該ＩＫＥパケットＳ９をパケット復号部１５に送り、ＩＫＥパケットＳ９が暗号化されているか否かを判定する（ステップＳＴ１１）。この場合、ＩＫＥパケットＳ９が暗号化されているので、ステップＳＴ１２において、パケット復号部１５により、有効ＩＫＥＳＡの暗号アルゴリズムを使用して、セッション鍵保持部２６に記憶されているイニシエータのＩＫＥ用セッション鍵で復号する。次のステップＳＴ１３においては、パケット読取部１６により、ＩＫＥパケットＳ９にセッション情報保持部１８に記憶するデータが含まれていないと判断して、次のステップＳＴ１４に処理を進める。
【０１３８】
次に、パケット読取部１６により、ＩＫＥパケットＳ９のＩＳＡＫＭＰヘッダより後に、鍵交換ペイロードが含まれているか否か（ステップＳＴ１４）、レスポンダが送信した乱数ペイロードＮｒが含まれているか否か（ステップＳＴ１８）、ハッシュペイロードが含まれているか否かを判定する（ステップＳＴ２０）。この場合、ＩＫＥパケットＳ９には、鍵交換ペイロード及びレスポンダが送信した乱数ペイロードＮｒが含まれておらず、ハッシュペイロードが含まれているので、ステップＳＴ１５〜ステップＳＴ１７、ステップＳＴ１９の処理を行わずに、ステップＳＴ２１に移行する。
【０１３９】
ステップＳＴ２１においては、パケット生成部１７により、ＩＫＥパケットＳ９のハッシュペイロードに含まれるハッシュ値を、レスポンダのセッション情報によって再計算したハッシュ値に変更したＩＫＥパケットＳ９’を生成して、パケット暗号化部２７に出力する。このとき、パケット生成部１７は、セッション鍵保持部２６に記憶しているレスポンダのＩＫＥ用セッション鍵ＳＫＥＹＩＤ＿ａ、ＩＳＡＫＭＰヘッダのメッセージＩＤ、セッション情報保持部１８で保持している乱数Ｎｉ＿ｂ、乱数Ｎｒ＿ｂを用いて、有効ＩＫＥＳＡのハッシュアルゴリズムを使用して再計算を行って、新たなハッシュ値ＨＡＳＨ（３）を生成する。
【０１４０】
次のステップＳＴ２２においては、パケット暗号化部２７により、先のステップＳＴ１２で復号を行っているのでステップＳＴ２３に処理を進め、セッション鍵保持部２６からレスポンダのＩＫＥ用セッション鍵を読み出して、ＩＫＥパケットＳ９’を暗号化して、レスポンダに送信する。
【０１４１】
レスポンダは、ＩＫＥパケットＳ９’を受信すると、イニシエータがＩＫＥパケットＳ９を作成する場合と同じ処理を行ってハッシュ値を計算し、ＩＫＥパケットＳ９’のハッシュペイロードに含まれるハッシュ値ＨＡＳＨ（３）と比較する。これらの値は同一であるため、レスポンダは、イニシエータとのＩＫＥ処理において成りすましや改ざんが無かったものと判断する。
【０１４２】
これにより、イニシエータとレスポンダとの間でＥＳＰ用セッション鍵の交換が完了すると共に、暗号通信復号装置３にイニシエータのＥＳＰ用セッション鍵及びレスポンダのＥＳＰ用セッション鍵が記憶された状態となり、第２フェーズを終了する。
【０１４３】
なお、ＥＳＰ用セッション鍵には、ＩＰｓｅｃＳＡで設定されたセッション鍵の有効期限が存在し、当該有効期限前に、再度第２フェーズを実行することで、新しいＥＳＰ用セッション鍵を生成することになる。また、ＩＫＥ用セッション鍵には、ＩＫＥＳＡで設定されたセッション鍵の有効期限が存在し、当該有効期限前に、再度第１フェーズを実行することで、新しいＩＫＥ用セッション鍵を生成することになる。
【０１４４】
「ＥＳＰ処理」
通信システムは、上述したＩＫＥ処理の後、ＥＳＰ用セッション鍵を用いてデータを暗号化してＶＰＮ端末１とＶＰＮ端末２との間で通信を行うＥＳＰ処理が可能となる。なお、このＥＳＰ処理は、図６に示すような番号「１０」で示した処理から番号「１１」で示した処理を行うものである。
【０１４５】
具体的には、ＶＰＮ端末１がＶＰＮ端末２にデータを送信する場合、ＶＰＮ端末１は、ＶＰＮ端末２に送信するデータを、ＴＣＰ（Transmission Control Protocol）等の任意のプロトコルによってカプセル化したデータを作成する。
【０１４６】
続いて、ＶＰＮ端末１は、ＲＦＣ２４０６で定義されている手順に従って、ＩＰパケットの末尾にＥＳＰトレイラを追加し、第２フェーズで選択されたＩＰｓｅｃＳＡの暗号アルゴリズムのブロック長の整数倍とし、当該暗号アルゴリズムに従って、ＥＳＰ用セッション鍵で暗号化する。そして、暗号化したデータの先頭にＥＳＰヘッダを追加し、当該ＥＳＰヘッダの先頭に、宛先をＶＰＮ端末２のＩＰアドレス、送信元をＶＰＮ端末１のＩＰアドレスとしたＩＰヘッダを追加することにより、ＥＳＰパケットＳ１０を作成して送信する。なお、ＥＳＰヘッダのＳＰＩフィールドには、ＶＰＮ端末２がＩＫＥの第２フェーズで送信したＳＡペイロードのＳＰＩフィールドの値をコピーして格納する。
【０１４７】
次に、暗号通信復号装置３は、ＶＰＮ端末１からＥＳＰパケットＳ１０を受信すると（ステップＳＴ１）、当該ＥＳＰパケットＳ１０のＩＰヘッダを参照して、ＩＫＥパケットではないと判定し（ステップＳＴ２）、ＥＳＰパケットであると判定して（ステップＳＴ４）、ステップＳＴ５のＥＳＰ処理を開始する。
【０１４８】
このＥＳＰ処理において、暗号通信復号装置３は、図５に示すように、先ずステップＳＴ３１において、パケット復号部１５により、セッション鍵保持部２６に記憶しておいたイニシエータのＥＳＰ用セッション鍵を用い、ＩＰｓｅｃＳＡで設定された暗号化アルゴリズムに従って、ＥＳＰパケットＳ１０の暗号化部分を復号する。そして、パケット復号部１５は、当該復号したＥＳＰパケットＳ１０を、パケット暗号化部２７に出力すると同時にパケット整形部２８に出力する。
【０１４９】
次のステップＳＴ３２においては、パケット整形部２８により、パケット復号部１５から出力されたＥＳＰパケットＳ１０の暗号化部分を復号したものからＥＳＰトレイラを取り出し、ネットワーク監視装置４が処理できるようなデータ形態にパケットを整形して、平文パケットとして通信インターフェース１３からネットワーク監視装置４に送信させる。  具体的には、パケット整形部２８は、ＥＳＰプロトコルにおけるトランスポートモードのＥＳＰパケットＳ１０を受信した場合、図７（ａ）に示すように、先ずＥＳＰパケットＳ１０のＥＳＰトレイラに含まれるプロトコルフィールド（次ヘッダ番号）の値を、当該ＥＳＰの下位層であるＩＰヘッダのプロトコルフィールドにコピーすると共に、ＥＳＰヘッダ及びＥＳＰトレイラを削除する。ＥＳＰトレイラの長さは、ＥＳＰトレイラのパディング長フィールドに２バイトを加算した値とする。更に、パケット整形部２８は、ＥＳＰヘッダ及びＥＳＰトレイラを削除したことによるデータ長の変化を、ＩＰ等の下位層のヘッダに反映させる。具体的には、ＩＰヘッダの長さフィールドと、チェックサムフィールドを再計算する。そして、暗号通信復号装置３は、通信インターフェース１３とネットワーク監視装置４とがＬＡＮで接続されている場合には、ＩＰヘッダの先頭に、宛先アドレスをネットワーク監視装置４のＭＡＣアドレスとしたイーサヘッダを付加する。これにより、ネットワーク監視装置４は、当該パケットを確実に受信することができ、復号された平文パケットのデータを参照して正当性などの監視を行わせることができる。
【０１５０】
なお、ネットワーク監視装置４は、通常、自己のアドレスが宛先となっていないパケットでも、通信インターフェースに到達したパケットすべてを監視するが、パケット整形部２８でネットワーク監視装置４のＭＡＣアドレスを宛先に設定することにより、暗号通信復号装置３とネットワーク監視装置４の間にスイッチングハブがある場合などに、スイッチングハブが、ネットワーク監視装置４が接続されているポートにパケットを転送しないことを防ぐことができる。
【０１５１】
また、パケット整形部２８は、ＥＳＰプロトコルにおけるトンネルモードのＥＳＰパケットＳ１０を受信した場合には、図７（ｂ）に示すように、ＥＳＰトレーラの次ヘッダ番号（ＩＰ：４）をコピーし、復号したデータの先頭に現れるＩＰヘッダ（２）の先頭に付加するＩＰヘッダ（１）の次ヘッダ番号を変更することになる。
【０１５２】
次のステップＳＴ３３においては、パケット暗号化部２７により、レスポンダのＥＳＰ用セッション鍵を用い、ＩＰｓｅｃＳＡで設定された暗号化アルゴリズムに従って、ＥＳＰパケットＳ１０の復号された部分を暗号化して、ＥＳＰパケットＳ１０’を生成し、通信インターフェース１２から送信させる。
【０１５３】
次に、ＶＰＮ端末２でＥＳＰパケットＳ１０’を受信すると、ＶＰＮ端末２は、ＥＳＰヘッダより後のデータ部分を、ＩＰｓｅｃＳＡで設定された暗号アルゴリズムによって、ＥＳＰヘッダのＳＰＩフィールドの値によって選択したＥＳＰセッション鍵で復号する。そして、ＶＰＮ端末２は、復号した結果得たデータからＥＳＰトレイラを除外することで、ＶＰＮ端末１でカプセル化されたＩＰパケットを復元し、当該データを処理する。
【０１５４】
逆に、ＶＰＮ端末２がＶＰＮ端末１にデータを送信する場合も、上記と同様の処理をする。ただし、ステップＳＴ３１においては、レスポンダのＥＳＰ用セッション鍵を用いてＥＳＰパケットＳ１１を復号し、ステップＳＴ３３においては、イニシエータのＥＳＰ用セッション鍵を用いて暗号化してＥＳＰパケットＳ１１’を生成して、通信インターフェース１２から送信させる。
【０１５５】
また、上述のステップＳＴ３３において、暗号通信復号装置３は、任意の監視装置から出力された通信内容を入力する入力手段としての通信インターフェースを更に備え、復号した通信内容を暗号化して転送する前に、任意の装置から入力された処理情報に基づいて通信内容を整形して、暗号化後に転送しても良い。具体的には、パケット整形部２８は、平文のＩＰパケットをＥＳＰパケットに変換するときに、ＶＰＮ端末１又はＶＰＮ端末２から受信したＥＳＰパケットの内容と、転送するＥＳＰパケットの内容とを異なるものにする。例えば、任意の装置からのパケットのフィルタリング条件を示す情報を入力した場合、パケット整形部２８は、当該フィルタリング条件に従って、ＥＳＰパケットの中継又は非中継を判定しても良い。
【０１５６】
［第１実施形態の効果］
以上詳細に説明したように、本発明を適用した通信システムによれば、暗号通信を復号させるために必要な情報として、ＶＰＮ端末１及びＶＰＮ端末２のＥＳＰ用セッション鍵と暗号化アルゴリズムとを記憶させておき、復号した平文パケットを、ネットワーク監視装置４で処理可能な形態に整形してネットワーク監視装置４で監視させることができる。したがって、この暗号通信復号装置３によれば、通信内容が暗号化されている場合であっても、通信内容を監視でき、既存の平文のみを解析可能なネットワーク監視装置４を使用することができる。また、この通信監視システムによれば、暗号通信経路上で透過的に暗号文を復号し、ネットワーク監視装置４で監視させる場合であっても、再度暗号化してＶＰＮ端末１又はＶＰＮ端末２に送信することができ、暗号通信のセキュリティ・レベルを維持することができる。
【０１５７】
また、この通信システムによれば、任意の装置と暗号通信復号装置３とを接続し、当該任意の装置から暗号通信復号装置３が追加して行う処理内容を示す情報を入力して、再暗号化を行ってＶＰＮ端末１又はＶＰＮ端末２に中継する前に、追加した処理を行うことができる。
【０１５８】
［第２実施形態］
つぎに、本発明を適用した第２実施形態に係る通信システムについて説明する。なお、上述した実施形態と同一部分については、同一符号及び同一ステップ番号を付することによって、その詳細な説明を省略する。
【０１５９】
この第２実施形態に係る通信システムは、図８に示すように、暗号通信復号装置３’とネットワーク監視装置４’とが双方向通信を行うように構成される。この第２実施形態に係る通信システムは、暗号通信復号装置３’からネットワーク監視装置４’に出力した平文パケットをネットワーク監視装置４’で監視している結果、ネットワーク監視装置４’によって中継することが適当と判断され、暗号通信復号装置３’に戻されたパケットのみ暗号化して中継することで、不適当なパケットを破棄させる機能を追加したことを特徴とするものである。
【０１６０】
このような第２実施形態における暗号通信復号装置３’は、図９に示すように、ネットワーク監視装置４’から戻されたパケットを受信する通信インターフェース３１を追加して備え、当該通信インターフェース３１によって受信したパケットをパケット整形部２８で整形前の状態に戻し、パケット暗号部２７で暗号化して通信インターフェース１２から出力する。これにより、暗号通信復号装置３’は、ＥＳＰパケットを中継するに際して、ネットワーク監視装置４’の監視結果が適当である場合には、ＥＳＰパケットを中継する。一方、暗号通信復号装置３’は、ネットワーク監視装置４’の監視結果が不適当である場合には、ネットワーク監視装置４’はパケットを戻さないため、結果的に当該ＥＳＰパケットを中継しない。
【０１６１】
また、ネットワーク監視装置４’は、暗号通信復号装置３’との間で、ネットワークＮ側に対応する平文パケットを送受信する通信インターフェースと、ＶＰＮ端末２側に対応する平文パケットを送受信する通信インターフェースと２つの通信インターフェースを使用したゲートウェイ型の通信装置となる。ネットワーク監視装置４’は、上述した第１実施形態と同様に、暗号通信復号装置３’がＥＳＰパケットを復号した平文のＩＰパケットを受信すると、その内容を解析する。そして、パケットの内容が不適当と判定した場合には、当該パケットを破棄することで、不適当なＥＳＰパケットの中継を遮断させる。一方、パケットの内容が適当と判定した場合には、受信した通信インターフェースとは別の通信インターフェースから暗号通信復号装置３’にパケットを転送して、当該パケットをＥＳＰパケットとして中継させる。
【０１６２】
ここで、通信インターフェース１３及び通信インターフェース３１は、第１実施形態における通信インターフェース１１及び通信インターフェース１２と同様に、簡単のため受信用、送信用としているが、実際には２つの通信インターフェース１３，３１がネットワーク監視装置４’の２つの通信インターフェースに固定的に接続されている。
【０１６３】
そして、ＶＰＮ端末２からパケットを受信した場合は、ＶＰＮ端末２側の通信インターフェースが受信用の通信インターフェース１１、ネットワークＮ側の通信インターフェースが送信用の通信インターフェース１２となり、ネットワーク監視装置４’のＶＰＮ端末２側のインターフェースが通信インターフェース１３に接続されたインターフェース、ネットワーク監視装置４’のネットワークＮ側のインターフェースが通信インターフェース３１に接続されたインターフェースとなる。逆に、ネットワークＮからパケットを受信した場合は、ネットワークＮ側の通信インターフェースが受信用の通信インターフェース１１、ＶＰＮ端末２側の通信インターフェースが送信用の通信インターフェース１２となり、ネットワーク監視装置４’のネットワークＮ側のインターフェースが通信インターフェース１３に接続されたインターフェース、ネットワーク監視装置４’のＶＰＮ端末２側のインターフェースが通信インターフェース３１に接続されたインターフェースとなる。
【０１６４】
通信インターフェース３１は、ネットワーク監視装置４’からＩＰパケットを受信すると、当該パケットをパケット整形部２８に出力し、パケット整形部２８によって、ＥＳＰヘッダ及びＥＳＰトレイラを追加させ、パケット暗号化部２７に出力して暗号化させて通信インターフェース１２から送信させる。
【０１６５】
このような暗号通信復号装置３’の全体動作は、図１０に示すように、ステップＳＴ１でパケットを受信した後のステップＳＴ４１において、受信した通信インターフェースが平文パケットを受信する通信インターフェース、すなわちパケットを受信したのが通信インターフェース１３又は通信インターフェース３１であるか否か判定する。そして、平文パケットを送受信する通信インターフェースであればステップＳＴ４２に処理を進め、平文パケットを送受信する通信インターフェースでなければ、ステップＳＴ２以降に処理を進める。
【０１６６】
また、この第２実施形態における暗号通信復号装置３’は、ＶＰＮ端末１又はＶＰＮ端末２からＥＳＰパケットを受信すると（ステップＳＴ１）、通信インターフェース１１で受信したものなので平文パケットではないと判定し（ステップＳＴ４１）、また、ＩＫＥパケットではないと判定し（ステップＳＴ２）、ステップＳＴ４においてＥＳＰパケットであると判定されて、ＥＳＰ処理を開始する。
【０１６７】
このＥＳＰ処理は、図１１に示すように、先ずステップＳＴ３１において、パケット復号部１５により、セッション鍵保持部２６に記憶しておいたイニシエータとレスポンダのうち、対応するＥＳＰ用セッション鍵を用い、ＩＰｓｅｃＳＡで設定された暗号アルゴリズムにしたがって、ＥＳＰパケットの暗号化部分を復号して、パケット整形部２８に出力する。
【０１６８】
次のステップＳＴ５１においては、パケット整形部２８により、ＥＳＰパケットを整形して、ネットワーク監視装置４’で受信及び解析が可能なＩＰパケットに変換する。このとき、パケット整形部２８は、図７（ａ）又は図７（ｂ）で説明したように、パケット復号部１５から入力されたＥＳＰパケットの暗号化部分を復号したパケットから、ＥＳＰトレイラを取り出し、ネットワーク監視装置４’が処理できるようにパケットを整形して、ステップＳＴ６において、ネットワーク監視装置４’に送信して処理を終了する。
【０１６９】
ここで、ステップＳＴ５１におけるパケット整形部２８のパケットの整形処理は、例えば、先ずＥＳＰパケットのＥＳＰトレイラに含まれるプロトコルフィールドの値を、当該ＥＳＰの下位層であるＩＰヘッダのプロトコルフィールドにコピーすると共に、ＥＳＰヘッダ及びＥＳＰトレイラを削除する。ＥＳＰトレイラの長さは、ＥＳＰトレイラのパディング長フィールドの値に２バイトを加算した値とする。更に、パケット整形部２８は、ＥＳＰヘッダ及びＥＳＰトレイラを削除したことによるデータ長の変化を、ＩＰ等の下位層のヘッダに反映させる。具体的には、ＩＰヘッダの長さフィールドと、チェックサムフィールドを再計算する。
【０１７０】
なお、暗号通信復号装置３’は、通信インターフェース１３とネットワーク監視装置４’とがＬＡＮで接続されている場合には、ＩＰヘッダの先頭に、宛先アドレスをネットワーク監視装置４’のＭＡＣアドレスとしたイーサヘッダを付加する。これにより、ネットワーク監視装置４’は、当該パケットを確実に受信することができ、復号された平文パケットのデータを参照して正当性などの監視を行わせることができる。
【０１７１】
これに対し、ネットワーク監視装置４’は、暗号通信復号装置３’から受信したＩＰパケットの内容を解析し、不適当と判定した場合は当該ＩＰパケットを破棄する。一方、ネットワーク監視装置４’によってＩＰパケットの内容を適当と判定した場合には、当該ＩＰパケットを受信した通信インターフェースとは別の通信インターフェースから、暗号通信復号装置３’にＩＰパケットを送信する。
【０１７２】
これに対し、暗号通信復号装置３’は、通信インターフェース３１によってネットワーク監視装置４’から送信されたＩＰパケットを受信すると（ステップＳＴ１）、当該ＩＰパケットが平文のパケットであるので、ステップＳＴ４１からステップＳＴ４２に処理を進める。
【０１７３】
この平文処理は、図１２に示すように、先ずステップＳＴ６１において、通信インターフェース３１により受信したＩＰパケットを、パケット整形部２８によってＥＳＰパケットに整形して、パケット暗号化部２７に出力する。このとき、パケット整形部２８は、ステップＳＴ５１とは逆の変換を行う。すなわち、ＩＰヘッダの長さフィールド及びヘッダ長フィールドを参照して、ヘッダ長からＩＰヘッダの長さを減算して、データ部の長さを取得し、データの長さに２バイトを加算する。次に、当該加算したデータに追加するパディングを求めるために、ＩＰｓｅｃＳＡで設定された暗号アルゴリズムのブロック長の整数倍になるｎバイトを計算する。そして、当該ＩＰパケットのＩＰヘッダの後にＥＳＰヘッダを追加し、当該ＩＰパケットの末尾にｎバイトのパディングを含むＥＳＰトレイラを追加する。このとき、ＥＳＰトレイラのパディング長フィールドに、ｎバイトのパディングをコピーし、ＥＳＰトレイラの次ヘッダフィールドには、ＩＰヘッダのプロトコルフィールドをコピーする。また、ＩＰヘッダのプロトコルフィールドには、ＥＳＰを示す値（５０）をコピーする。更に、ＥＳＰヘッダ及びＥＳＰトレイラを追加したことによるデータ長の変化をＩＰ等の下位層のヘッダに反映させる。具体的には、ＩＰヘッダの長さフィールドと、チェックサムフィールドを再計算する。
【０１７４】
次のステップＳＴ６２においては、パケット暗号化部２７により、ＥＳＰ用セッション鍵を用い、ＩＰｓｅｃＳＡで設定された暗号アルゴリズムに従って、復号されたＥＳＰパケットを暗号化して、通信インターフェース１２から送信させる。
【０１７５】
これに対し、ＥＳＰパケットを受信したＶＰＮ端末１又はＶＰＮ端末２は、ＥＳＰヘッダより後のデータ部分を、ＩＰｓｅｃＳＡで設定された暗号アルゴリズムによって、ＥＳＰヘッダのＳＰＩフィールドの値によって選択したＥＳＰ用セッション鍵で復号する。そして、ＶＰＮ端末１又はＶＰＮ端末２は、復号した結果得たデータからＥＳＰトレイラを除外することで、カプセル化されたＩＰパケットを復元し、当該ＩＰパケットを処理することができる。
【０１７６】
［第２実施形態の効果］
以上詳細に説明したように、本発明を適用した第２実施形態に係る通信システムによれば、暗号通信復号装置３’から平文のパケットをネットワーク監視装置４’に送信し、ネットワーク監視装置４’の監視結果によってパケットの中継を停止させることができる。また、この通信システムによれば、既存の不正なパケットを検知して破棄するネットワーク監視装置４’を使用することができる。
【０１７７】
［第３実施形態］
つぎに、本発明を適用した第３実施形態に係る通信システムについて説明する。なお、上述した実施形態と同一部分については、同一符号及び同一ステップ番号を付することによって、その詳細な説明を省略する。
【０１７８】
この第３実施形態に係る通信システムは、サーバ−クライアント間でＳＳＬ（Secure Socket Layer）に準拠した暗号通信を行う場合に、上述した実施形態と同様に、暗号化されたパケットを暗号通信復号装置で傍受して、当該傍受したパケットをネットワーク監視装置で監視させることを特徴とするものである。このＳＳＬによる暗号通信は、上述のＩＰｓｅｃとは異なり、Diffie−Hellman鍵共有法を使用しないため、暗号通信復号装置をサーバ−クライアント間の通信経路上に直接接続する必要はなく、図１３に示すように構成される。
【０１７９】
この通信システムにおいて、ＳＳＬクライアント４１とＳＳＬサーバ４２とを接続する通信経路にはハブ４３が設けられ、当該ハブ４３から分岐して暗号通信復号装置４４及びネットワーク監視装置４’’が接続されている。
【０１８０】
ＳＳＬクライアント４１は、ＳＳＬサーバ４２との間で暗号通信を行うに際して、ネットワークＮ及びハブ４３を介して、ＳＳＬサーバ４２との間でＳＳＬプロトコルのハンドシェイクプロトコル（ＳＳＬＨＰ：SSL Handshake Protocol）従った処理を行うことでＳＳＬプロトコルのコネクションを確立する。このとき、先ず、ＳＳＬクライアント４１は、ＳＳＬサーバ４２から受信した証明書を評価することで、ＳＳＬサーバ４２の正当性を確認する。これにより、ＳＳＬクライアント４１は、相手認証を行う。その後、ＳＳＬクライアント４１とＳＳＬサーバ４２との間で、ハンドシェイクプロトコルによる折衝によって鍵ブロック（共通鍵）、暗号アルゴリズムを決定し、当該鍵ブロックでデータ部（レコード単位）を暗号化したＳＳＬパケットを使用した暗号通信を行う。
【０１８１】
なお、ＳＳＬプロトコルにおけるコネクションとは、ＳＳＬクライアント４１とＳＳＬサーバ４２との間でのＴＣＰのコネクション、即ち送信元及び宛先ポートの組によって識別される情報を指す。また、ＳＳＬプロトコルにおけるセッションとは、ＳＳＬクライアント４１とＳＳＬサーバ４２との間でのセッションＩＤによって識別される情報である。コネクションは、ハンドシェイクプロトコルで送受信されるセッションＩＤによってセッションに関連付けられる。
【０１８２】
また、ＳＳＬプロトコルでは、ＳＳＬハンドシェイクプロトコルの下位層に相当するＳＳＬレコード層（ＳＳＬＲＬ：SSL Record Layer）に従った処理を行うことで、レコードという単位でデータを送受信する。レコードは、ＴＣＰ／ＩＰ層によってパケットに分割又は結合されることによって調整されて送受信される。
【０１８３】
ハブ４３は、ＳＳＬクライアント４１とＳＳＬサーバ４２との間で通信されるＳＳＬパケットを中継する中継装置として機能すると共に、当該ＳＳＬパケットを暗号通信復号装置４４にも送信する。これにより、ハブ４３は、中継するＳＳＬパケットを暗号通信復号装置４４で傍受させる。
【０１８４】
暗号通信復号装置４４は、ハブ４３から受信したＳＳＬパケットを、予め記憶しておいたＳＳＬサーバ４２のサーバ用秘密鍵を利用して復号し、復号したパケットをネットワーク監視装置４’’で処理できるデータ形態に整形して、ネットワーク監視装置４’’に出力する。具体的には、暗号通信復号装置４４は、ＳＳＬパケットを復号したパケットの、イーサヘッダの宛先をネットワーク監視装置４’’とし、ＴＣＰヘッダの宛先ポート又は送信元ポートをＨＴＴＰ（HyperText Transfer Protocol）を示す番号「８０」に設定したＴＣＰ／ＩＰパケットに整形する。
【０１８５】
ネットワーク監視装置４’’は、暗号通信復号装置４４が送信したＴＣＰ／ＩＰパケットを受信すると、当該ＴＣＰ／ＩＰパケットの内容を解析して、当該ＴＣＰ／ＩＰパケットの内容が適当なものか、不適当なものかを判定する。ネットワーク監視装置４’’は、例えば、ＴＣＰ／ＩＰパケットにインターネットワームを含んでいることを検出した場合には、当該ＴＣＰ／ＩＰパケットの内容が不適当であると判定して、管理者などに通知する。
【０１８６】
［暗号通信復号装置の構成］
上述した通信システムにおいて、暗号通信復号装置４４は、図１４に示すように構成される。
【０１８７】
受信用の通信インターフェース５１は、ハブ４３に接続され、ＳＳＬクライアント４１とＳＳＬサーバ４２との間のＳＳＬパケットをハブ４３を介して受信する。そして、通信インターフェース５１は、ＳＳＬパケットを、フィルタ部５２に出力する。
【０１８８】
フィルタ部５２は、通信インターフェース５１から入力されたＳＳＬパケットを入力すると共に、フィルタ設定部５３によってＳＳＬパケットのフィルタリング条件が供給される。フィルタ設定部５３は、暗号通信復号装置４４がＳＳＬパケットとして処理するためのフィルタリング条件を設定するユーザインターフェースである。具体的には、フィルタリング条件として、ＳＳＬサーバ４２のＩＰアドレス、ＳＳＬサーバ４２のＳＳＬのポート番号を設定する。フィルタ部５２は、ＳＳＬパケットを入力すると、フィルタ設定部５３によって設定されたフィルタリング条件に従ってフィルタリングを行い、フィルタリング条件に適合したパケットをＳＳＬパケットとしてレコード再構成部５４に出力する。具体的には、通信インターフェース５１から入力したパケットのＩＰアドレスとフィルタリング条件として設定されたＳＳＬサーバ４２のＩＰアドレスとを比較し、更に、通信インターフェース５１から入力したパケットのポート番号とフィルタリング条件として設定されたＳＳＬサーバ４２のポート番号とを比較する。そして、フィルタ部５２は、何れかが異なると判定した場合には、当該パケットを破棄し、双方が同じと判定した場合には、ＳＳＬパケットであると判定してレコード再構成部５４に出力する。
【０１８９】
レコード再構成部５４は、ＳＳＬパケットのデータ部をレコード単位のレコードデータに再構成して、レコード復号部５６に出力する。また、レコード情報保持部５５は、レコード再構成部５４がレコードを再構成する際に使用するバッファである。
【０１９０】
ここで、ＳＳＬクライアント４１及びＳＳＬサーバ４２は、データをＳＳＬプロトコルに従って送信する際に、ＳＳＬレコード層において、データをレコードという構造体（レコードデータ）に分割してＴＣＰ／ＩＰ層処理に渡す。そして、ＴＣＰ／ＩＰ層処理では、ＩＰデータグラムの最大サイズを表すＭＴＵ値に従って、入力されたレコードを更にパケット単位に分割して、データ長を調整して送信することになる。
【０１９１】
レコード復号部５６は、コネクション情報保持部６０に保持されている暗号化状態が有効であった場合、レコード再構成部５４から入力されたレコードデータを、コネクション情報保持部６０に保持する暗号スイートの暗号アルゴリズムに従って、鍵ブロックの暗号化鍵を用いた復号処理を行い、復号済のレコードデータをレコード解析部５７に出力し、コネクション情報保持部６０に保持されている暗号化状態が無効であった場合、レコード再構成部５４から入力されたレコードデータを、そのままレコード解析部５７に出力する。
【０１９２】
レコード解析部５７は、レコード復号部５６から出力されたレコードデータを解析して、レコードのメッセージタイプが、ハンドシェイク（handshake）プロトコルによって生成されたハンドシェイクメッセージを含むことを示すメッセージタイプ、又は、暗号パラメータ切換（change＿cipher＿spec）プロトコルによって生成された暗号パラメータ切換（change＿cipher＿spec）メッセージを含むことを示すメッセージタイプであるかを解析する。そして、ハンドシェイクプロトコル又は暗号パラメータ切換プロトコルで生成されたメッセージタイプであるレコードデータである場合には、当該レコードデータをハンドシェイク解析部５８に出力する。一方、ハンドシェイクプロトコルや暗号パラメータ切換プロトコルによるメッセージではなく、レコードのタイプがアプリケーションデータ（application＿data）である場合には、当該レコードデータをパケット整形部６３に出力する。
【０１９３】
ハンドシェイク解析部５８は、レコード解析部５７から出力されたレコードデータを解析して、当該解析結果をセッション情報保持部５９及びコネクション情報保持部６０に出力する。このとき、ハンドシェイク解析部５８は、レコードデータのメッセージタイプがhandshakeであり、且つハンドシェイクのメッセージタイプがclient＿key＿exchangeであれば、当該レコードデータを公開鍵暗号処理部６１によって復号させる。
【０１９４】
公開鍵暗号処理部６１は、秘密鍵設定部６２で設定された秘密鍵を使用してハンドシェイク解析部５８から入力されたデータを復号して、ハンドシェイク解析部５８に出力する。また、秘密鍵設定部６２は、ＳＳＬサーバ４２の秘密鍵を設定するユーザインターフェースである。
【０１９５】
セッション情報保持部５９は、ＳＳＬのセッションを識別するための情報と、暗号化鍵（master secret key）とを保持している。このセッション情報保持部５９は、セッションを識別するための情報として、具体的に、ＳＳＬクライアント４１及びＳＳＬサーバ４２のＩＰアドレスと、ＳＳＬのセッションＩＤを保持している。
【０１９６】
コネクション情報保持部６０は、ＳＳＬプロトコルのコネクションを識別するための情報と、暗号スイート、暗号化状態及び鍵ブロックを保持する。コネクション情報保持部６０は、ＳＳＬのコネクションを識別するための情報として、具体的に、ＳＳＬクライアント４１及びＳＳＬサーバ４２のＩＰアドレスとポート番号とを保持している。また、コネクション情報保持部６０は、暗号化状態として、ＳＳＬクライアント４１からＳＳＬサーバ４２、及び、ＳＳＬサーバ４２からＳＳＬクライアント４１の各方向についての暗号化状態を保持する。更に、コネクション情報保持部６０は、鍵ブロックとして、ＳＳＬクライアント４１からＳＳＬサーバ４２、及びＳＳＬサーバ４２からＳＳＬクライアント４１の各方向について、メッセージ認証鍵、暗号化鍵、初期ベクタを保持している。
【０１９７】
パケット整形部６３は、レコード復号部５６で復号され、レコード解析部５７から出力されたアプリケーションデータを、ネットワーク監視装置４’’で解析できるようなデータ形態に整形して、通信インターフェース６４に出力する。具体的には、パケット整形部６３は、図１５に示すように、ＳＳＬデータを復号した結果のアプリケーションデータが得られると、当該レコード単位のアプリケーションデータをパケット単位に分割してデータ長を調整する。そして、当該パケット単位のデータに、ＴＣＰの宛先又は送信元ポートをＨＴＴＰを示す番号の「８０」に設定したヘッダ、ＩＰヘッダ、イーサヘッダ等を付加して、イーサネット（登録商標）ヘッダの宛先をネットワーク監視装置４’’としたＴＣＰ／ＩＰパケットに整形する。
【０１９８】
通信インターフェース６４は、パケット整形部６３にから入力されたＴＣＰ／ＩＰパケットを、ネットワーク監視装置４’’に出力する。
【０１９９】
［暗号通信復号装置の動作］
つぎに、上述したように構成された暗号通信復号装置４４の動作について図１６及び図１７を参照して説明する。
【０２００】
このネットワーク監視装置４’’は、図１６に示すような処理を行うことで、主にＳＳＬクライアント４１とＳＳＬサーバ４２との間で送受信されるＩＰパケットから、レコードを再構成する。このレコードを再構成する処理は、ＳＳＬクライアント４１とＳＳＬサーバ４２との間で送受信されるＴＣＰ／ＩＰパケットをネットワーク監視装置４’’で受信することによって開始される。
【０２０１】
暗号通信復号装置４４は、先ず、通信インターフェース５１によってＳＳＬクライアント４１とＳＳＬサーバ４２との間で送受信されるＴＣＰ／ＩＰパケットを受信すると（ステップＳＴ７１）、フィルタ部５２によって、当該ＴＣＰ／ＩＰパケットが、ＳＳＬプロトコルに従って暗号化されたＳＳＬパケットであるか否かを判定する（ステップＳＴ７２）。
【０２０２】
そして、フィルタ部５２により、受信したＴＣＰ／ＩＰパケットがＳＳＬパケットであると判定した場合にはステップＳＴ７３に処理を進め、ＳＳＬパケットではないと判定した場合は処理を終了する。このとき、フィルタ部５２は、ＩＰヘッダの上位層のヘッダとしてＴＣＰヘッダが付加され、且つ、宛先又は送信元のＩＰアドレスとポート番号が、フィルタ設定部５３で設定したものと同一である場合にはＳＳＬパケットと判定し、同一はない場合にはＳＳＬパケットではないと判定する。
【０２０３】
ステップＳＴ７３において、レコード再構成部５４は、ＩＰヘッダのヘッダ長フィールド、パケット長フィールド及びＴＣＰヘッダのデータオフセットフィールドを参照して、パケット長、ＩＰヘッダ長、ＴＣＰヘッダ長を取得し、パケット長から、ＩＰヘッダ長及びＴＣＰヘッダ長を減算した値から、当該ＴＣＰ／ＩＰパケットがデータを含んでいるか否かを判定する。そして、レコード再構成部５４は、データを含んでいると判定した場合はステップＳＴ７４に処理を進め、含んでいないと判定した場合はステップＳＴ７８に処理を進める。
【０２０４】
ステップＳＴ７４において、レコード再構成部５４は、ステップＳＴ７３で含まれていると判定されたデータが、以前の処理においてレコード情報保持部５５に蓄積しておいたコネクションにおけるデータと逆方向のデータか否かを判定する。すなわち、前回に行った図１６の処理で蓄積していたデータが、ＳＳＬクライアント４１からＳＳＬサーバ４２に送信されたデータである場合には、ステップＳＴ７３で含まれていると判定されたデータがＳＳＬサーバ４２からＳＳＬクライアント４１に送信されるデータであるか否かを判定する。逆に、前回に行った図１６の処理で蓄積していたデータが、ＳＳＬサーバ４２からＳＳＬクライアント４１に送信されたデータである場合には、ステップＳＴ７３で含まれていると判定されたデータがＳＳＬクライアント４１からＳＳＬサーバ４２に送信されるデータであるか否かを判定する。そして、レコード再構成部５４は、前回に蓄積したデータの送受信方向と、今回受信したデータの送受信方向とが逆方向であると判定した場合には、ステップＳＴ７５に処理を進め、逆方向ではないと判定した場合には、ステップＳＴ７７に処理を進める。なお、レコード情報保持部５５にコネクションのデータが蓄積されていない場合には、レコード再構成部５４は、逆方向ではないと判定して、ステップＳＴ７７に処理を進める。
【０２０５】
ステップＳＴ７７において、レコード再構成部５４は、次回以降の処理においてデータを使用できるように、レコード情報保持部５５にデータを保存する。このとき、レコード再構成部５４は、データそのものと、送受信したデータの位置を表すＴＣＰヘッダのシーケンス番号フィールドとを対応付けて、適当な場所にコピーしてレコード情報保持部５５に記憶させる。
【０２０６】
次のステップＳＴ７８において、レコード再構成部５４は、ＴＣＰヘッダのＦＩＮフラグを参照して、今回のデータ送信によってコネクションが終了するか否かを判定する。そして、レコード再構成部５４によって終了すると判定した場合は、ステップＳＴ７９に処理を進め、終了していないと判定した場合は処理を終了する。
【０２０７】
ステップＳＴ７９において、レコード再構成部５４は、レコード情報保持部５５に当該コネクションのデータが蓄積されているかどうかを判定する。蓄積されていると判定した場合はステップＳＴ８０に処理を進め、蓄積されていないと判定した場合は処理を終了する。
【０２０８】
ステップＳＴ８０において、レコード再構成部５４は、レコード情報保持部５５に蓄積されているコネクションのデータを、レコードのヘッダを参照してレコード単位で分割してレコードデータとする。そして、レコード再構成部５４は、各レコードデータをレコード復号部５６に出力し、レコード処理を行わせて、処理を終了する。なお、このレコード処理の詳細については図１７を参照して後述する。
【０２０９】
一方、ステップＳＴ７４において、ステップＳＴ７１で受信されたＳＳＬパケットに含まれるデータが、前回とは逆方向のデータであると判定された後のステップＳＴ７５においても、ステップＳＴ８０と同様の処理を行い、次のステップＳＴ７６において、ステップＳＴ７７と同様にレコード情報保持部５５へのデータ蓄積を行う。
【０２１０】
以上の手順によって、ＳＳＬクライアント４１とＳＳＬサーバ４２との間で送受信されるＴＣＰ／ＩＰパケットから、レコードを再構成する。なお、簡単のため、これ以降レコードを再構成する手順の説明は省略する。
【０２１１】
つぎに、上述のステップＳＴ８０又はステップＳＴ７５で行うレコード処理について、図１７を参照して説明する。
【０２１２】
このレコード処理は、レコード再構成部５４によるレコードの再構成後に開始される。このレコード処理は、図１８に示すようなＳＳＬクライアント４１とＳＳＬサーバ４２との間のＳＳＬパケットの送受信時において実行される。この図１８に示す処理は、ＳＳＬクライアント４１とＳＳＬサーバ４２との間で、先ずハンドシェイクプロトコルによって暗号アルゴリズム等の折衝や鍵ブロックの生成を行い、その結果決定した暗号アルゴリズムに従い、生成した鍵ブロックによって上位層のデータの暗号を行って暗号通信を行うものである。なお、この図１８に示すハンドシェイク処理は、以下に示す第１処理、第２処理、第３処理、第４処理を行い、その後、アプリケーションデータ処理を行えるようにするものである。
【０２１３】
「第１処理」
先ず、ハンドシェイク処理の第１処理において、ＳＳＬクライアント４１は、ＳＳＬサーバ４２に対して、ハンドシェイクプロトコルに従って、最初にＳＳＬサーバ４２に向けて送信されるメッセージであるClient HelloメッセージＳ２１を送信する。このClient HelloメッセージＳ２１は、クライアント乱数、セッションＩＤ、暗号スイートのリスト等を含む。この暗号スイートとは、ＳＳＬクライアント４１とＳＳＬサーバ４２との間の鍵交換に使用する公開鍵暗号アルゴリズム及びアプリケーションデータの暗号通信に使用する暗号アルゴリズム、当該暗号アルゴリズムで使用する鍵の長さ、メッセージ認証コードを生成するハッシュアルゴリズムの組み合わせを表す値である。
【０２１４】
これに対し、Client HelloメッセージＳ２１がハブ４３を介して暗号通信復号装置４４で傍受されると、当該Client HelloメッセージＳ２１を含むレコードは、暗号通信復号装置４４のレコード復号部５６に入力されて、レコード処理を開始させる。
【０２１５】
このレコード処理は、図１７に示すステップＳＴ９１において、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を参照し、未だ有効ではないので、ステップＳＴ９３に処理を進める。
【０２１６】
ステップＳＴ９３において、レコード解析部５７によって、受信したレコードデータのメッセージタイプがハンドシェイクプロトコルを示すものか否かを判定し、ハンドシェイクプロトコルによって生成されたClient HelloメッセージＳ２１であるので、当該レコードデータをハンドシェイク解析部５８に出力して、ステップＳＴ９４に処理を進める。
【０２１７】
ステップＳＴ９４において、ハンドシェイク解析部５８によって、ステップＳＴ９３において入力されたレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップＳＴ９５に処理を進める。
【０２１８】
ステップＳＴ９５においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージを示すものであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップＳＴ９６に処理を進める。
【０２１９】
ステップＳＴ９６においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージを示すものであるか否かを判定し、Client HelloメッセージＳ２１を受信しているのでステップＳＴ９７に処理を進める。
【０２２０】
ステップＳＴ９７においては、ハンドシェイク解析部５８によって、受信したClient HelloメッセージＳ２１と共に受信したレコードから、ＳＳＬクライアント４１で生成されたクライアント乱数を取得し、コネクション情報保持部６０に保存する。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２２１】
「第２処理」
次の第２処理において、ＳＳＬサーバ４２は、ＳＳＬクライアント４１からClient HelloメッセージＳ２１を受信すると、ＳＳＬクライアント４１に、ハンドシェイクプロトコルのServer HelloメッセージＳ２２に続いてCertificateメッセージＳ２３を送信する。このServer HelloメッセージＳ２２は、Client HelloメッセージＳ２１に対する応答メッセージであって、ＳＳＬサーバ４２で生成したサーバ乱数、セッションＩＤ、以後の処理で使用する暗号スイートを含む。また、CertificateメッセージＳ２３は、自身が所有する証明書をＳＳＬクライアント４１に引き渡すメッセージであって、ＳＳＬサーバ４２の証明書を含む。
【０２２２】
これに対し、暗号通信復号装置４４は、レコード復号部５６にServer HelloメッセージＳ２２を含むレコードが入力されると、レコード処理を開始する。
【０２２３】
このレコード処理は、先ずステップＳＴ９１において、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化状態を参照し、未だに有効ではないので、ステップＳＴ９３に処理を進める。
【０２２４】
ステップＳＴ９３においては、レコード解析部５７によって、当該レコードがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルなので、ハンドシェイク解析部５８にレコードを出力し、ステップＳＴ９４に処理を進める。
【０２２５】
ステップＳＴ９４においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップＳＴ９５に処理を進める。
【０２２６】
ステップＳＴ９５においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージＳ２２であるのでステップＳＴ９８に処理を進める。
【０２２７】
ステップＳＴ９８においては、ハンドシェイク解析部５８によって、Server HelloメッセージＳ２２と共に受信したレコードデータから、サーバ乱数、セッションＩＤ、暗号スイートを取得し、サーバ乱数及び暗号スイートをコネクション情報保持部６０に記憶させ、セッションＩＤをセッション情報保持部５９に記憶させる。このとき、ハンドシェイク解析部５８は、同じServer HelloメッセージＳ２２に付加されていたものとして、コネクション情報保持部６０に記憶させたサーバ乱数及び暗号スイートと、セッション情報保持部５９に記憶させたセッションＩＤとを対応付けるために、記憶したコネクション情報とセッション情報とをリンクさせて記憶させる。
【０２２８】
ステップＳＴ９９においては、セッション情報保持部５９に共通秘密鍵であるマスターシークレットが存在するか否かを判定し、存在しないので処理をステップＳＴ１０７に進める。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２２９】
また、暗号通信復号装置４４は、Server HelloメッセージＳ２２に続いて、レコード復号部５６にCertificateメッセージＳ２３を含むレコードデータが入力されると、再度レコード処理を開始することになる。
【０２３０】
このレコード処理は、先ずステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化状態を参照し、未だ有効でないので、ステップＳＴ９３に処理を進める。
【０２３１】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルなので、ハンドシェイク解析部５８にレコードデータを出力し、ステップＳＴ９４に処理を進める。
【０２３２】
ステップＳＴ９４においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップＳＴ９５に処理を進める。
【０２３３】
ステップＳＴ９５においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージを示すものであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップＳＴ９６に処理を進める。
【０２３４】
ステップＳＴ９６においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理をステップＳＴ１０７に進める。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２３５】
これに対し、ＳＳＬクライアント４１は、ＳＳＬサーバ４２からServer HelloメッセージＳ２２とCertificateメッセージＳ２３を受信すると、Certificateメッセージに含まれる証明書を評価し、それが有効なものであれば、乱数pre-master secretを生成し、当該乱数pre−master secretと、クライアント乱数、及びServer HelloメッセージＳ２２から取得したサーバ乱数とから、共通秘密鍵であるマスターシークレットを生成する。次に、ＳＳＬクライアント４１は、マスターシークレットと、クライアント乱数、及びサーバ乱数とから、鍵ブロックを生成する。
【０２３６】
「第３処理」
次に、ＳＳＬクライアント４１は、ＳＳＬサーバ４２に、ハンドシェイクプロトコルのClient Key ExchangeメッセージＳ２４、暗号パラメータ切換（Change Cipher Spec）プロトコルのChange Cipher SpecメッセージＳ２５、及びハンドシェイクプロトコルのFinishedメッセージＳ２６を送信する。
【０２３７】
Client Key ExchangeメッセージＳ２４は、ＳＳＬクライアント４１が生成した乱数をＳＳＬサーバ４２の公開鍵で暗号化してＳＳＬサーバ４２に送信すること示すメッセージであり、乱数pre-master secretを、ＳＳＬサーバ４２から受信したCertificateメッセージに含まれるＳＳＬサーバ４２の証明書に含まれるＳＳＬサーバ４２の公開鍵で暗号化したデータを含む。このデータにより、ＳＳＬサーバ４２では、マスターシークレットの生成が可能となる。また、Change Cipher SpecメッセージＳ２５は、ハンドシェイクプロトコルで決定した暗号化仕様を利用開始することを通知するメッセージであり、データを含まない。ハンドシェイクプロトコルのFinishedメッセージＳ２６は、ハンドシェイクプロトコルの終了を通知するメッセージであり、ハンドシェイクメッセージやマスターシークレット等をハッシュ関数で演算した値を含む。
【０２３８】
なお、ＳＳＬクライアント４１は、FinishedメッセージＳ２６を含むChange Cipher SpecメッセージＳ２５より後に送信するコネクションのレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化鍵で暗号化して、メッセージを送信することになる。
【０２３９】
暗号通信復号装置４４は、レコード復号部５６にClient Key ExchangeメッセージＳ２４を含むレコードが入力されると、レコード処理を開始する。
【０２４０】
ステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を参照し、未だ有効ではないので、ステップＳＴ９３に処理を進める。
【０２４１】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータが、ハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルによって生成されたメッセージを受信しているので、ハンドシェイク解析部５８にレコードデータを出力し、ステップＳＴ９４に処理を進める。
【０２４２】
ステップＳＴ９４においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Key ExchangeメッセージＳ２４であるか否かを判定し、Client Key ExchangeメッセージＳ２４なのでステップＳＴ１００に処理を進める。
【０２４３】
ステップＳＴ１００においては、ハンドシェイク解析部５８によって、当該セッションのマスターシークレットを計算し、セッション情報保持部５９に保存する。具体的には、公開鍵暗号処理部６１によって、秘密鍵設定部６２によって事前に設定されたサーバ秘密鍵で、Client Key ExchangeメッセージＳ２４のデータを復号して乱数pre−master secretを取得し、ハンドシェイク解析部５８によって、乱数pre−master secretと、コネクション情報保持部６０に保持するクライアント乱数、及びサーバ乱数とから、マスターシークレットを生成する。
【０２４４】
ステップＳＴ１０１においては、ハンドシェイク解析部５８によって、コネクションの鍵ブロックを生成する。具体的には、セッション情報保持部５９に保持しているマスターシークレットと、コネクション情報保持部６０に保持しているクライアント乱数、サーバ乱数とから鍵ブロックを生成する。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２４５】
また、暗号通信復号装置４４は、レコード復号部５６に、暗号パラメータ切換プロトコルによって生成されたChange Cipher SpecメッセージＳ２５を含むレコードが入力されると、再度レコード処理を開始する。
【０２４６】
先ずステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を参照し、未だ有効ではないので、ステップＳＴ９３に処理を進める。
【０２４７】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータが、ハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルにより生成されたメッセージを受信していないので、ステップＳＴ１０２に処理を進める。
【０２４８】
ステップＳＴ１０２においては、レコード解析部５７によって、受信したレコードデータのメッセージタイプがChange Cipher Specプロトコルであるか否かを判定し、Change Cipher SpecメッセージＳ２５を受信しているのでステップＳＴ１０３に処理を進める。
【０２４９】
ステップＳＴ１０３においては、ハンドシェイク解析部５８によって、コネクション情報保持部６０のＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を有効に変更する。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２５０】
次に、暗号通信復号装置４４は、レコード復号部５６にFinishedメッセージＳ２６を含むレコードデータが入力されると、再度レコード処理を開始する。
【０２５１】
先ずステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を参照し、前のChange Cipher SpecメッセージＳ２５の受信時に行ったレコード処理で暗号化状態が有効とされているので、ステップＳＴ９２に処理を進める。
【０２５２】
ステップＳＴ９２においては、レコード復号部５６によって、コネクション情報保持部６０に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化鍵でレコードデータを復号して、レコード解析部５７に出力する。
【０２５３】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルにより生成されたメッセージか否かを判定し、ハンドシェイクプロトコルで生成されたFinishedメッセージＳ２６を受信しているので、ハンドシェイク解析部５８にレコードデータを出力し、ステップＳＴ９４に処理を進める。
【０２５４】
ステップＳＴ９４においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップＳＴ９５に処理を進める。
【０２５５】
ステップＳＴ９５においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップＳＴ９６に処理を進める。
【０２５６】
ステップＳＴ９６においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理を終了する。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２５７】
一方、ＳＳＬサーバ４２は、ＳＳＬクライアント４１から送信されたClient Key ExchangeメッセージＳ２４を受信すると、当該Client Key ExchangeメッセージＳ２４を含むデータを、サーバ秘密鍵で復号して乱数pre−master secretを取得し、乱数pre−master secretと、クライアント乱数と、送信したサーバ乱数とから、マスターシークレットを計算する。次に、ＳＳＬサーバ４２は、計算したマスターシークレットと、クライアント乱数、及びサーバ乱数とから、鍵ブロックを生成する。
【０２５８】
次に、ＳＳＬサーバ４２は、Change Cipher SpecメッセージＳ２５を受信すると、それより後に受信するコネクションのレコードデータを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化鍵で復号することを認識する。
【０２５９】
次に、ＳＳＬサーバ４２は、FinishedメッセージＳ２６を受信すると、当該FinishedメッセージＳ２６を含むレコードを復号し、データをＳＳＬクライアント４１と同様の方法で生成した値と比較して、改ざんやなりすましがないことを確認する。
【０２６０】
「第４処理」
次に、ＳＳＬサーバ４２は、ＳＳＬクライアント４１に、Change Cipher SpecプロトコルのChange Cipher SpecメッセージＳ２７、及びハンドシェイクプロトコルのFinishedメッセージＳ２８を送信する。このＳＳＬサーバ４２からＳＳＬクライアント４１に送信されるChange Cipher SpecメッセージＳ２７は、ＳＳＬクライアント４１から送信されたChange Cipher SpecメッセージＳ２５に対する応答であって、データを含まない。また、ハンドシェイクプロトコルのFinishedメッセージＳ２８は、ハンドシェイクメッセージやマスターシークレット等をハッシュ関数で演算した値を含む。なお、Change Cipher SpecメッセージＳ２７より後のメッセージは、暗号スイートの暗号アルゴリズムによって、鍵ブロックのＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化鍵で暗号化される。
【０２６１】
これに対し、暗号通信復号装置４４は、Change Cipher SpecメッセージＳ２７を受信すると、レコード復号部５６にChange Cipher SpecメッセージＳ２７を含むレコードデータを入力させ、レコード処理を開始する。
【０２６２】
先ず、ステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持されているＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化状態を参照し、未だ有効ではないので、ステップＳＴ９３に処理を進める。
【０２６３】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルによって生成されたメッセージではないので、ステップＳＴ１０２に処理を進める。
【０２６４】
ステップＳＴ１０２においては、レコード解析部５７によって、受信したレコードデータのメッセージタイプが、Change Cipher Specプロトコルであるか否かを判定し、Change Cipher SpecＳ２７を受信しているのでステップＳＴ１０３に処理を進める。
【０２６５】
ステップＳＴ１０３においては、ハンドシェイク解析部５８によって、コネクション情報保持部６０のＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化状態を有効にさせる。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、ステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２６６】
また、暗号通信復号装置４４は、レコード復号部５６にFinishedメッセージＳ２８を含むレコードが入力されると、再度レコード処理を開始する。
【０２６７】
先ずステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化状態を参照し、前のレコード処理において有効と設定されているので、ステップＳＴ９２に処理を進める。
【０２６８】
ステップＳＴ９２においては、レコード復号部５６によって、コネクション情報保持部６０に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化鍵でレコードデータを復号して、レコード解析部５７に出力する。
【０２６９】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、FinishedメッセージＳ２８がハンドシェイクプロトコルによって生成されたメッセージであるので、ハンドシェイク解析部５８にレコードデータを出力し、ステップＳＴ９４に処理を進める。
【０２７０】
ステップＳＴ９４においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップＳＴ９５に処理を進める。
【０２７１】
ステップＳＴ９５においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップＳＴ９６に処理を進める。
【０２７２】
ステップＳＴ９６においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプがClient Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理を終了する。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２７３】
一方、ＳＳＬクライアント４１は、Change Cipher SpecメッセージＳ２７を受信すると、それより後に受信する当該コネクションのレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化鍵で復号する。
【０２７４】
次に、ＳＳＬクライアント４１は、FinishedメッセージＳ２８を受信すると、レコードを復号し、データをＳＳＬサーバ４２と同様の方法で生成した値と比較して改ざんやなりすましがないことを確認する。
【０２７５】
これにより、ＳＳＬクライアント４１とＳＳＬサーバ４２との間のハンドシェイクプロトコルが完了することになる。この時点では、ＳＳＬクライアント４１、ＳＳＬサーバ４２、暗号通信復号装置４４とも同一の暗号化鍵の状態、すなわち同一の暗号化鍵を生成し、同一のデータ長の暗号処理をした状態となっている。
【０２７６】
「アプリケーションデータ処理」
上述したようにハンドシェイク処理が完了すると、ＳＳＬクライアント４１とＳＳＬサーバ４２との間でアプリケーションデータの送受信が可能となる。すなわち、ＳＳＬクライアント４１は、ＳＳＬサーバ４２宛にアプリケーションデータを送信する場合は、アプリケーションデータをレコードに分割し、鍵ブロックのうちＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化鍵によって暗号化してアプリケーションデータ（Application Data）プロトコルで送信する。
【０２７７】
これに対し、暗号通信復号装置４４は、ＳＳＬにおけるアプリケーションデータプロトコルで生成されたレコードが入力されると、レコード処理を開始する。
【０２７８】
このレコード処理のステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を参照し、上述のハンドシェイク処理で有効に設定されているので、ステップＳＴ９２に処理を進める。
【０２７９】
ステップＳＴ９２においては、レコード復号部５６によって、コネクション情報保持部６０に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化鍵でレコードを復号して、レコード解析部５７に出力する。
【０２８０】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルによって生成されたレコードではないので、ステップＳＴ１０２に処理を進める。
【０２８１】
ステップＳＴ１０２においては、レコード解析部５７によって、受信したレコードデータのメッセージタイプが、Change Cipher Specメッセージであるか否かを判定し、受信したレコードがChange Cipher SpecメッセージではないのでステップＳＴ１０４に処理を進める。
【０２８２】
ステップＳＴ１０４においては、レコード解析部５７によって、受信したレコードデータのメッセージタイプが、Application Dataプロトコルであるか否かを判定し、Application Dataプロトコルによって生成されたレコードを受信しているので、受信したレコードデータをパケット整形部６３に出力して、ステップＳＴ１０５に処理を進める。
【０２８３】
ステップＳＴ１０５においては、パケット整形部６３によって、受信したレコードデータの復号した部分を、ＨＴＴＰパケットに整形して、通信インターフェース６４からネットワーク監視装置４’’に出力させる。このとき、パケット整形部６３は、図１５に示すように、受信したレコードデータの復号した部分の先頭に、ステップＳＴ７１で受信したＩＰパケットのＩＰヘッダ及びＴＣＰヘッダを追加し、ＴＣＰヘッダの宛先ポートをＨＴＴＰを示すポート番号に設定し、ＴＣＰヘッダのシーケンス番号フィールド、ＡＣＫ番号フィールド、チェックサムフィールド、及びＩＰヘッダの長さフィールド、チェックサムフィールドを再計算する。これにより、レコードを、ＨＴＴＰパケットに整形する。また、パケット整形部６３は、ネットワーク監視装置４’’がＬＡＮに対応している場合には、イーサヘッダの宛先をネットワーク監視装置４’’のアドレスにすることになる。
【０２８４】
次のステップＳＴ１０６においては、通信インターフェース６４によって、パケット整形部６３で整形されたＨＴＴＰパケットを、ネットワーク監視装置４’’に送信する。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２８５】
これにより、ネットワーク監視装置４’’は、ＨＴＴＰパケットを解析し、当該ＨＴＴＰパケットの内容が不適当である場合には管理者に通知することが可能となる。
【０２８６】
また、ＳＳＬサーバ４２が、ＳＳＬクライアント４１に、アプリケーションデータを送信した場合、暗号通信復号装置４４は、レコード復号部５６にアプリケーションデータプロトコルによって生成されたレコードが入力されると、レコード処理を開始する。
【０２８７】
先ずステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化状態を参照し、有効と設定されているので、ステップＳＴ９２に処理を進める。
【０２８８】
ステップＳＴ９２においては、レコード復号部５６によって、コネクション情報保持部６０に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化鍵でレコードを復号して、レコード解析部５７に出力する。
【０２８９】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルで生成されたメッセージではないので、ステップＳＴ１０２に処理を進める。
【０２９０】
ステップＳＴ１０２においては、レコード解析部５７によって、受信したレコードデータのメッセージタイプがChange Cipher Specプロトコルであるか否かを判定し、受信したメッセージがChange Cipher Specプロトコルで生成されたメッセージではないのでステップＳＴ１０４に処理を進める。
【０２９１】
ステップＳＴ１０４においては、レコード解析部５７によって、受信したレコードデータのメッセージタイプが、アプリケーションデータであるか否かを判定し、アプリケーションデータプロトコルによって作成されたアプリケーションデータを受信しているので、受信したレコードデータをパケット整形部６３に出力して、ステップＳＴ１０５に処理を進める。
【０２９２】
ステップＳＴ１０５においては、パケット整形部６３によって、上述したステップＳＴ１０５の処理と同様の処理を行うことにより、受信したレコードデータのデータを、ＨＴＴＰパケットとして整形する。そして、ステップＳＴ１０６においては、通信インターフェース６４からＨＴＴＰパケットをネットワーク監視装置４’’に送信させる。その後、暗号通信復号装置４４は、ステップＳＴ１０７において、今回のステップＳＴ７４の判定で使用したレコード情報保持部５５に記憶された蓄積データを削除して、処理を終了する。
【０２９３】
これにより、ネットワーク監視装置４’’は、ＨＴＴＰパケットを解析し、当該ＨＴＴＰパケットの内容が不適当である場合には管理者に通知することが可能となる。
【０２９４】
以上のように、暗号通信復号装置４４は、ＳＳＬクライアント４１とＳＳＬサーバ４２との間で送受信される暗号化されたＳＳＬパケットを復号して整形することで、ＳＳＬパケットをＨＴＴＰパケットとしてネットワーク監視装置４’’に出力し、ネットワーク監視装置４’’による監視を可能にする。
【０２９５】
「セッションの再起動」
また、ＳＳＬプロトコルにおいては、コネクション構築時に既存のセッションを使用することができ、それ以前のコネクション構築時に生成したマスターシークレットを再利用して、セッションの再起動を行うことができる。つぎに、このようなＳＳＬにおけるセッションの再起動を図１９を参照して説明し、当該セッションの再起動時における暗号通信復号装置４４の動作を説明する。
【０２９６】
先ず、セッションの再起動処理では、上述のＳＳＬプロトコルにおける第１処理と同様に、ＳＳＬクライアント４１からＳＳＬサーバ４２にClient HelloメッセージＳ２１が送信され、暗号通信復号装置４４によって第１処理と同様の処理が実行される。その後、セッションの再起動処理は、ＳＳＬサーバ４２からＳＳＬクライアント４１に、Server HelloメッセージＳ２２、Change Cipher SpecメッセージＳ３１、FinishedメッセージＳ３２が送信され、暗号通信復号装置４４による第２処理が開始される。
【０２９７】
「第２処理」
ＳＳＬサーバ４２は、ＳＳＬクライアント４１からClient HelloメッセージＳ２１を受信すると、ＳＳＬクライアント４１に、ハンドシェイクプロトコルのServer HelloメッセージＳ２２、Change Cipher SpecプロトコルのChange Cipher SpecメッセージＳ３１、及びハンドシェイクプロトコルのFinishedメッセージＳ３２を送信する。
【０２９８】
また、ＳＳＬサーバ４２は、以前のコネクション構築時に生成したマスターシークレットと、ＳＳＬクライアント４１から受信したクライアント乱数、及びＳＳＬクライアント４１に送信したサーバ乱数とから、鍵ブロックを生成する。
【０２９９】
これに対し、暗号通信復号装置４４は、レコード復号部５６にServer HelloメッセージＳ２２を含むレコードが入力されると、レコード処理を開始する。
【０３００】
このレコード処理は、先ずステップＳＴ９１において、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化状態を参照し、未だに有効ではないので、ステップＳＴ９３に処理を進める。
【０３０１】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルなので、ハンドシェイク解析部５８にレコードを出力し、ステップＳＴ９４に処理を進める。
【０３０２】
ステップＳＴ９４においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップＳＴ９５に処理を進める。
【０３０３】
ステップＳＴ９５においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージＳ２２であるのでステップＳＴ９８に処理を進める。
【０３０４】
ステップＳＴ９８においては、ハンドシェイク解析部５８によって、受信したレコードデータからサーバ乱数、セッションＩＤ、暗号スイートを取得し、サーバ乱数及び暗号スイートをコネクション情報保持部６０に記憶させ、セッションＩＤをセッション情報保持部５９に記憶させる。このとき、ハンドシェイク解析部５８は、同じメッセージに付加されていたものとして対応付けるために、記憶したコネクション情報とセッション情報とをリンクさせて記憶させる。
【０３０５】
ステップＳＴ９９においては、セッション情報保持部５９に共通秘密鍵であるマスターシークレットが存在するか否かを判定し、存在するので、ステップＳＴ１０１に処理を進める。
【０３０６】
ステップＳＴ１０１においては、ハンドシェイク解析部５８によって、コネクションにおける鍵ブロックを生成する。具体的には、セッション情報保持部５９に保持しているマスターシークレットと、コネクション情報保持部６０に保持しているクライアント乱数、サーバ乱数とから鍵ブロックを生成する。
【０３０７】
そして、暗号通信復号装置４４は、Change Cipher SpecメッセージＳ３１、FinishedメッセージＳ３２を受信すると、上述した第４処理において、Change Cipher SpecメッセージＳ２７、Server HelloメッセージＳ２８を受信した場合と同様の処理を行う。
【０３０８】
これに対して、ＳＳＬクライアント４１は、ＳＳＬサーバ４２からServer HelloメッセージＳ２２を受信すると、以前のコネクション構築時に生成したマスターシークレットと、クライアント乱数、及びサーバ乱数とから、鍵ブロックを生成する。
【０３０９】
また、ＳＳＬクライアント４１は、Change Cipher SpecメッセージＳ３１を受信すると、それより後に受信するコネクション処理のレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのＳＳＬサーバ４２からＳＳＬクライアント４１への暗号化鍵で復号する。
【０３１０】
更に、ＳＳＬクライアント４１は、FinishedメッセージＳ３２を受信すると、レコードを復号し、データをＳＳＬサーバ４２と同様の方法で生成した値と比較して、改ざんやなりすましがないことを確認する。
【０３１１】
「第３処理」
次に、ＳＳＬクライアント４１は、ＳＳＬサーバ４２に、Change Cipher SpecプロトコルのChange Cipher SpecメッセージＳ３３、及びハンドシェイクプロトコルのFinishedメッセージＳ３４を送信する。
【０３１２】
これに対し、暗号通信復号装置４４は、レコード復号部５６にChange Cipher SpecメッセージＳ３３を含むレコードが入力されると、再度レコード処理を開始する。
【０３１３】
このレコード処理は、先ずステップＳＴ９１において、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を参照し、未だ有効ではないので、ステップＳＴ９３に処理を進める。
【０３１４】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルではないので、ステップＳＴ１０２に処理を進める。
【０３１５】
ステップＳＴ１０２においては、レコード解析部５７によって、受信したレコードデータのメッセージタイプがChange Cipher Specプロトコルであるか否かを判定し、Change Cipher SpecメッセージＳ３３を受信しているのでステップＳＴ１０３に処理を進める。
【０３１６】
ステップＳＴ１０３においては、ハンドシェイク解析部５８によって、コネクション情報保持部６０のＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を有効にする。
【０３１７】
また、暗号通信復号装置４４は、レコード復号部５６にFinishedメッセージＳ３４を含むレコードが入力されると、再度レコード処理を開始する。
【０３１８】
ステップＳＴ９１においては、レコード復号部５６によって、コネクション情報保持部６０に保持するＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化状態を参照し、有効となっているので、ステップＳＴ９２に処理を進める。
【０３１９】
ステップＳＴ９２においては、レコード復号部５６によって、コネクション情報保持部６０に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化鍵でレコードを復号して、レコード解析部５７に出力する。
【０３２０】
ステップＳＴ９３においては、レコード解析部５７によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルにより生成されたメッセージであるので、ハンドシェイク解析部５８にレコードを出力し、ステップＳＴ９４に処理を進める。
【０３２１】
ステップＳＴ９４においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージであるか否かを判定し、受信したメッセージがClient Key Exchangeメッセージではないので、ステップＳＴ９５に処理を進める。
【０３２２】
ステップＳＴ９５においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップＳＴ９６に処理を進める。
【０３２３】
ステップＳＴ９６においては、ハンドシェイク解析部５８によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理を終了する。
【０３２４】
これに対し、ＳＳＬサーバ４２は、Change Cipher SpecメッセージＳ３３を受信すると、それより後に受信するコネクション処理についてのレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのＳＳＬクライアント４１からＳＳＬサーバ４２への暗号化鍵で復号する。
【０３２５】
次に、ＳＳＬサーバ４２は、FinishedメッセージＳ３４を受信すると、レコードを復号し、データをＳＳＬクライアント４１と同様の方法で生成した値と比較して、改ざんやなりすましがないことを確認する。これにより、セッションの再起動処理が終了し、アプリケーション処理を行うことが可能な状態になり、暗号通信復号装置４４及びネットワーク監視装置４’’によってＳＳＬパケットによる通信内容の監視も開始されることになる。
【０３２６】
［第３実施形態の効果］
以上詳細に説明したように、本発明を適用した通信システムによれば、ＳＳＬクライアント４１とＳＳＬサーバ４２との間のハンドシェイク処理によって送受信されるメッセージを、ハブ４３を介して暗号通信復号装置４４で傍受して、暗号通信復号装置４４に、ＳＳＬクライアント４１からＳＳＬサーバ４２に送信されるＳＳＬパケットの暗号化鍵及びＳＳＬサーバ４２からＳＳＬクライアント４１に送信されるＳＳＬパケットの暗号化鍵を記憶させることができる。そして、暗号通信復号装置４４では、当該双方の暗号化鍵を用いて、ＳＳＬクライアント４１とＳＳＬサーバ４２との間で行われるアプリケーション処理で送受信されるＳＳＬパケットの復号及び整形が可能となる。したがって、この通信システムによれば、既存のネットワーク監視装置４’’によってＳＳＬパケットによる通信内容の監視及び制御を可能とすることができる。
【０３２７】
なお、上述の実施の形態は本発明の一例である。このため、本発明は、上述の実施形態に限定されることはなく、この実施の形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【０３２８】
【図１】本発明を適用した第１実施形態における通信システムの構成を示すブロック図である。
【図２】本発明を適用した第１実施形態における暗号通信復号装置の構成を示すブロック図である。
【図３】本発明を適用した第１実施形態における全体処理を示すフローチャートである。
【図４】本発明を適用した第１実施形態に係る通信システムの暗号通信復号装置で行うＩＫＥ処理の処理手順を示すフローチャートである。
【図５】本発明を適用した第１実施形態に係る通信システムの暗号通信復号装置で行うＥＳＰ処理の処理手順を示すフローチャートである。
【図６】本発明を適用した第１実施形態に係る通信システムにおけるＩＫＥ処理でイニシエータ、暗号通信復号装置、レスポンダの間で送受信されるメッセージの流れ図である。
【図７】本発明を適用した第１実施形態において、暗号通信復号装置によってパケットを整形する処理を説明するための概要図であり、（ａ）は受信したパケットがＥＳＰにおけるトランスポートモードで作成されている時の処理を説明する図であり、（ｂ）は受信したパケットがＥＳＰにおけるトンネルモードで作成されている時の処理を説明する図である。
【図８】本発明を適用した第２実施形態における通信システムの構成を示すブロック図である。
【図９】本発明を適用した第２実施形態における暗号通信復号装置の構成を示すブロック図である。
【図１０】本発明を適用した第２実施形態における全体処理を示すフローチャートである。
【図１１】本発明を適用した第２実施形態に係る通信システムの暗号通信復号装置で行うＥＳＰ処理の処理手順を示すフローチャートである。
【図１２】本発明を適用した第２実施形態に係る通信システムの暗号通信復号装置で行う平文処理の処理手順を示すフローチャートである。
【図１３】本発明を適用した第３実施形態における通信システムの構成を示すブロック図である。
【図１４】本発明を適用した第３実施形態における暗号通信復号装置の構成を示すブロック図である。
【図１５】本発明を適用した第３実施形態において、暗号通信復号装置によってパケットを整形する処理を説明するための概要図である。
【図１６】本発明を適用した第３実施形態における全体処理を示すフローチャートである。
【図１７】本発明を適用した第３実施形態に係る通信システムにおける暗号通信復号装置で行うレコード処理の処理手順を示すフローチャートである。
【図１８】本発明を適用した第３実施形態に係る通信システムにおけるハンドシェイク処理でＳＳＬクライアントとＳＳＬサーバとの間で送受信されるメッセージの流れ図である。
【図１９】本発明を適用した第３実施形態に係る通信システムにおけるセッションの再起動処理でＳＳＬクライアントとＳＳＬサーバとの間で送受信されるメッセージの流れ図である。
【符号の説明】
【０３２９】
１，２  ＶＰＮ端末
３，３’，４４  暗号通信復号装置
４，４’，４’’  ネットワーク監視装置
１１，１２，１３，３１，５１，６４  通信インターフェース
１３  セッション鍵出力部
１４  事前共有鍵保持部
１５  パケット復号部
１６  パケット読取部
１７  パケット生成部
１８  セッション情報保持部
１９  公開鍵保持部
２０  鍵共有データ保持部
２１  セッション鍵生成部
２２  公開鍵生成部
２３  秘密鍵生成部
２４  共通秘密鍵生成部
２５  秘密鍵保持部
２６  セッション鍵保持部（記憶手段）
２７  パケット暗号化部
４１  ＳＳＬクライアント
４２  ＳＳＬサーバ
４３  ハブ
５２  フィルタ部
５３  フィルタ設定部
５４  レコード再構成部
５５  レコード情報保持部
５６  レコード復号部（復号手段）
５７  レコード解析部
５８  ハンドシェイク解析部
５９  セッション情報保持部
６０  コネクション情報保持部
６１  公開鍵暗号処理部
６２  秘密鍵設定部
６３  パケット整形部
【図１】
2006279938.tif 000003
【図２】
2006279938.tif 000004
【図３】
2006279938.tif 000005
【図４】
2006279938.tif 000006
【図５】
2006279938.tif 000007
【図６】
2006279938.tif 000008
【図７】
2006279938.tif 000009
【図８】
2006279938.tif 000010
【図９】
2006279938.tif 000011
【図１０】
2006279938.tif 000012
【図１１】
2006279938.tif 000013
【図１２】
2006279938.tif 000014
【図１３】
2006279938.tif 000015
【図１４】
2006279938.tif 000016
【図１５】
2006279938.tif 000017
【図１６】
2006279938.tif 000018
【図１７】
2006279938.tif 000019
【図１８】
2006279938.tif 000020
【図１９】
2006279938.tif 000021