説明

暗号通信復号装置

【課題】 既存の監視装置を使用して、暗号化された通信データの監視を可能とさせ、既存の暗号通信のセキュリティレベルを保持させる。
【解決手段】 暗号通信復号装置3は、端末1から送信されたパケットの復号、端末1宛のパケットの暗号化をする第1鍵情報と、端末2から送信されたパケットの復号、端末2宛のパケットの暗号化をする第2鍵情報と、暗号化アルゴリズムとを記憶しておく。端末1からパケットを受信した場合には、暗号化アルゴリズムに従って第1鍵情報を用いて復号し、復号したパケットを第2鍵情報を用いて暗号化して端末2に送信する。端末2からパケットを受信した場合には、暗号化アルゴリズムに従ってパケットを第2鍵情報を用いて復号し、復号したパケットを第1鍵情報を用いて暗号化して端末1に送信する。パケットの中継を行うときに、復号されたパケットを、監視装置4で処理可能な形態に整形して監視装置4に出力させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えばIP(Internet Protocol)を利用した通信システムにおいて、通信データの盗聴や改ざんを防ぐために、パケットを暗号化すると共に認証データによって送受信間で認証処理を行う暗号通信復号装置に関し、特に、通信データのセキュリティを高めた通信において、ウィルスやワーム等の不正プログラムや、不正侵入、情報漏洩等を検知又は防止するために、通信内容を監視する暗号通信復号装置に関する。
【背景技術】
【0002】
従来より、ウィルス、ワームなどの不正プログラムや、不正侵入、情報漏洩等を検知又は防止するために、通信データの監視及び制御を行う通信監視システムとして、不正侵入検出システム(IDS:Intrusion Detection System)、不正侵入防御システム(IPS:Intrusion Protection System)、ウィルスウォール、コンテンツフイルタ等を採用したものが知られている。
【0003】
これらのセキュリティ技術のうち、暗号通信プロトコルの1つであるSSL(Secure Sockets Layer)に対応した製品として、例えばWebwasher SSL Scannerや下記の特許文献1に記載された技術が知られている。この製品で採用している技術は、SSL通信の経路上に接続し、SSL通信を内部的に終端することによってアプリケーションデータを復号し、検証した上で中継する装置である。
【特許文献1】特開平10−93557号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、前記従来の技術では、暗号化された通信データであっても復号して監視し、通信データの異常を判定することができるが、通信データの監視装置と復号装置とが一体化して構成されているために、既存の不正侵入監視システムを再利用することができないという問題点がある。したがって、上述した技術では、既存のIPSやIDSが存在し、暗号化された通信データを追加して監視させようとする場合に、既存のIPSやIDSに代えて、新たな復号装置と監視装置とを導入する必要があった。
【0005】
また、特許文献1に記載された通信監査装置では、復号してパケットの内容を監視させるものの、監視するために復号したパケットを再暗号化して中継しておらず、既存の暗号通信におけるセキュリティ・レベルが保持されているとは言えないものであった。
【0006】
そこで、本発明は、上述した実情に鑑みて提案されたものであり、既存の通信データの監視装置を使用して、暗号化された通信データの監視を可能とさせ、既存の暗号通信のセキュリティ・レベルを保持することができる暗号通信復号装置等を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る暗号通信復号装置は、第1の通信装置と第2の通信装置との間に設けられ、第1の通信装置と第2の通信装置との間で暗号化したパケットを送受信し、当該送受信されるパケットの通信内容を監視装置に監視させるものである。
【0008】
この暗号通信復号装置は、第1の通信装置から送信されたパケットを復号すると共に第1の通信装置宛のパケットを暗号化する第1の鍵情報と、第2の通信装置から送信されたパケットを復号すると共に第2の通信装置宛のパケットを暗号化する第2の鍵情報と、当該第1の鍵情報又は第2の鍵情報を用いた暗号化アルゴリズムとを記憶手段に記憶させておく。そして、第1の通信装置からパケットを受信した場合には、中継手段によって、暗号化アルゴリズムに従って、当該パケットを第1の鍵情報を用いて復号し、当該復号したパケットを第2の鍵情報を用いて暗号化して第2の通信装置に送信する。また、第2の通信装置からパケットを受信した場合には、中継手段によって、暗号化アルゴリズムに従って、当該パケットを第2の鍵情報を用いて復号し、当該復号したパケットを第1の鍵情報を用いて暗号化して第1の通信装置に送信する。
【0009】
このような暗号通信復号装置は、中継手段によってパケットの中継を行うときに、出力手段により、中継手段によって復号されたパケットを、監視装置で処理可能な形態に整形して監視装置に出力させ、監視装置に通信内容を監視させることにより、上述の課題を解決する。
【0010】
また、本発明に係る他の暗号通信復号装置は、第1の通信装置と第2の通信装置との間で暗号化されて送受信されているパケットを、第1の通信装置と第2の通信装置との通信経路上に設けられている中継装置を介して傍受し、当該パケットの通信内容を監視装置に監視させるものである。
【0011】
この暗号通信復号装置は、第1の通信装置から第2の通信装置に送信されるパケットを復号する第1の鍵情報と、第2の通信装置から第1の通信装置に送信されるパケットを復号する第2の鍵情報と、当該第1の鍵情報又は第2の鍵情報を用いた暗号化アルゴリズムとを記憶手段に記憶させておく。そして、第1の通信装置からパケットを受信した場合には、復号手段によって、暗号化アルゴリズムに従って、当該パケットを第1の鍵情報を用いて復号する。また、第2の通信装置からパケットを受信した場合には、復号手段によって、暗号化アルゴリズムに従って、当該パケットを第2の鍵情報を用いて復号する。
【0012】
このような暗号通信復号装置は、出力手段により、復号手段によって復号したパケットを、監視装置で処理可能な形態に整形して監視装置に出力させ、監視装置に通信内容を監視させることにより、上述の課題を解決する。
【発明の効果】
【0013】
本発明に係る暗号通信復号装置によれば、暗号通信を復号させるために必要な情報として、鍵情報と暗号化アルゴリズムとを記憶させておき、復号したパケットを、監視装置で処理可能な形態に整形して監視装置で通信内容を監視させることができる。したがって、この暗号通信復号装置によれば、通信内容が暗号化されている場合であっても、通信内容を監視させることができ、既存の平文のみを解析可能な監視装置を使用することができる。また、この暗号通信復号装置によれば、復号したパケットを第1の通信装置又は第2の通信装置に送信させることなく通信内容の監視を行わせるので、既存の暗号通信のセキュリティ・レベルを保持することができる。
【発明を実施するための最良の形態】
【0014】
以下、本発明を適用した第1実施形態〜第3実施形態について図面を参照して説明する。
【0015】
[第1実施形態]
本発明を適用した第1実施形態に係る通信システムは、暗号通信の経路上に暗号通信復号装置を接続し、当該暗号通信経路上に流れる通信データを取得して中継するものである。この通信システムは、暗号通信復号装置によって通信データを中継するに際して、暗号化された通信データを復号し、当該復号した通信データを監視側で処理可能なデータ形態に整形した上で、正当な通信データか否かを監視させる。そして、通信データの監視によって、正当な通信データであると判定された場合には、暗号通信復号装置により、復号した通信データを再暗号化してデータ送信先に送信する。これによって、暗号化通信を行う通信装置間の暗号通信経路上において、ウィルス、ワームなどの不正プログラムや、不正侵入、情報漏洩が発生していないかの監視を行う。
【0016】
また、この通信システムでは、暗号化された通信データを復号する暗号通信復号装置によって通信データの整形を行うので、当該暗号通信復号装置と、復号した通信データの監視装置とを別個にして構成することができ、任意の監視装置であって、既存の監視装置を使用することができる。
【0017】
更に、この通信システムは、暗号化された通信データの監視をするために復号した通信データを、暗号通信復号装置によって再度暗号化して中継することにより、暗号通信の主体となる通信装置間の暗号通信を透過的に提供する。これにより、暗号通信経路上で通信を行う通信装置にとっては既存の通信処理から設定変更を行う必要がなく、且つ既存の暗号通信のセキュリティ・レベルを維持する。
【0018】
[通信システムの構成]
この通信システムは、例えば図1に示すように、VPN(Virtual Private Network)端末1(第1の通信装置)とVPN端末2(第2の通信装置)との間で、暗号通信復号装置3を介してVPNセッションが構築される通信システムに適用される。この通信システムは、VPN端末1からネットワークNを経由してVPN端末2への通信をする際、ネットワークN上でのデータの盗聴や送信元の成りすまし等を防ぐために、VPN端末1とVPN端末2の間でIPsec(IP(Internet Protocol) security protocol)によるVPNセッションを構築することによって通信データの安全性を確保する。また、この通信システムでは、暗号通信復号装置3によって通信内容を復号してネットワーク監視装置4に出力し、ネットワーク監視装置4で通信内容の監視及び暗号通信復号装置3による中継の制御等を行うものである。
【0019】
この通信システムにおいて、VPN端末2、暗号通信復号装置3及びネットワーク監視装置4はIP(Internet Protocol)ベースのLAN(Local Area Network)で接続されている。また、この通信システムにおいて、ネットワークNは、例えば公衆で利用可能なIPネットワークである。
【0020】
VPN端末1及びVPN端末2は、暗号化処理をしてパケットを送信する必要がある場合、相互間でVPNセッションを構築するため、IKE(Internet Key Exchange)に従って処理(IKE処理)を行って、通信データを暗号化及び復号するための情報である共通鍵(以下、セッション鍵と呼ぶ。)を保持する。また、VPN端末1及びVPN端末2は、ネットワーク層におけるセキュリティプロトコルであるIPsecに準拠した処理を行って、パケットを生成する。具体的には、VPN端末1及びVPN端末2は、IPsecに含まれるプロトコルのうち、セキュリティプロトコル、例えば暗号ペイロード(ESP:IP Encapsulating security Payload)を作成するESPプロトコルに従った処理(ESP処理)を行う。
【0021】
暗号通信復号装置3は、VPN端末1及びVPN端末2でIKE処理及びESP処理が行われているときに、VPN端末1又はVPN端末2から送信されたデータを受信する。そして、暗号通信復号装置3は、後述する所定の処理を行うことにより、VPN端末1及びVPN端末2で送受信されるパケットを中継する。更に、暗号通信復号装置3は、ESPで暗号化された通信データ(ESPパケットのペイロード部)を復号し、当該復号した通信データをネットワーク監視装置4で受信可能なデータ構造のIPパケットに整形して、ネットワーク監視装置4に出力する。
【0022】
ネットワーク監視装置4は、暗号通信復号装置3によってESPパケットが復号されて整形されたIPパケットを受信すると、当該IPパケットの内容を解析する。ここで、ネットワーク監視装置4は、例えばウィルス又はワームを含むか否かの解析処理等を行うことによって、VPN端末1とVPN端末2との間で伝送されている通信データが正当なものであるか、不当なものであるかの解析を行う。そして、ネットワーク監視装置4は、不適当な通信データであると判定した場合には、ネットワーク管理者などに通知する。
【0023】
このような通信システムは、VPN端末1とVPN端末2との間のパケット通信に対して、暗号通信復号装置3により、ESPパケットの復号、読取、内容の保存、変更、暗号化、転送といった処理を行う。これにより、通信システムは、VPN端末1とVPN端末2との間の通信をインターセプトして、VPN端末1及びVPN端末2にとっては既存の処理を行うのみで、暗号通信の内容をネットワーク監視装置4により監視させることが可能となる。
【0024】
なお、以下の説明では、説明の簡単のため、RFC(Request For Comments)2409で定義されている各種手順のうち、事前共有鍵を使用した相互認証をメインモードで行い、且つ一部を省略した場合を述べる。また、秘密鍵、公開鍵とは、RFC2631で定義されているDiffie−Hellman鍵共有法における秘密鍵、公開鍵を指し、更には、予期しないデータが入力された場合等のエラー処理に関する記述は省略する。
【0025】
[暗号通信復号装置3の構成]
つぎに、上述した通信システムにおける暗号通信復号装置3の機能的な構成を図2を参照して説明する。なお、以下の説明では、VPNセッションを構築する始動側のVPN端末1又はVPN端末2をイニシエータ(始動側の通信装置)と呼び、当該イニシエータの始動に反応する応答側のVPN端末1又はVPN端末2をレスポンダ(応答側の通信装置)と呼ぶ。また、以下に説明する暗号通信復号装置3の各部は、例えばIKEやESP等に準拠した通信制御プログラムをROM等に記憶しておき、当該通信制御プログラムをCPUにより実行することにより得られる各機能部、インターフェース回路、ハードディスク装置により実現される各部に相当するものである。
【0026】
暗号通信復号装置3は、上述したように、ネットワークN及びネットワーク監視装置4と接続され、ネットワークNに対してIPパケットを送受信すると共に、ネットワーク監視装置4に対して、当該ネットワーク監視装置4で受信可能なIPパケットやLANフレームを送信するものである。この暗号通信復号装置3は、ネットワークNを介してVPN端末1とVPN端末2との間で伝送されるIPパケットをインターセプトし、ネットワーク監視装置4で解析可能なデータ形態に整形するものである。
【0027】
暗号通信復号装置3は、VPN端末1及びVPN端末2に対する受信用の通信インターフェース11、送信用の通信インターフェース12、ネットワーク監視装置4に対するインターフェースである通信インターフェース13を備える。
【0028】
これら通信インターフェース11,通信インターフェース12は、簡単のため受信用、送信用としているが、実際には2つのインターフェースの一方がVPN端末2、もう一方がネットワークNに固定的に接続されている。すなわち、VPN端末2からパケットを受信した場合は、VPN端末2側のインターフェースとして一方の通信インターフェース11を使用し、ネットワークN側のインターフェースとして他方の通信インターフェース12を使用する。また、ネットワークNからパケットを受信した場合は、ネットワークN側のインターフェースとして一方の通信インターフェース11を使用し、VPN端末2側のインターフェースとして他方の通信インターフェース12を使用することになる。
【0029】
また、この暗号通信復号装置3は、VPNセッションを構成するVPN端末1とVPN端末2との間で予め同意した事前共有鍵を記憶する事前共有鍵保持部14を備える。この事前共有鍵保持部14に記憶される事前共有鍵は、例えばネットワーク管理者のキーボード操作によって入力される。また、この暗号通信復号装置3は、事前共有鍵保のみならず、VPNセッションを構築するために必要な情報を設定しておく。
【0030】
更に、この暗号通信復号装置3は、パケット復号部15で復号したVPN端末1とVPN端末2との間での通信内容を、パケット整形部28でIPパケットのデータ形態に整形して生成し、通信インターフェース13によって出力する。これにより、暗号通信復号装置3は、ネットワーク監視装置4に、通信内容を評価させることができる。
【0031】
このような暗号通信復号装置3は、通信インターフェース11で暗号化されたデータを含むパケットを受信すると、当該パケットをパケット復号部15で復号し、復号済のデータをパケット読取部16に送る。また、通信インターフェース11で受信したパケットが暗号化されたデータを含まない場合は、当該パケットのデータをそのままパケット読取部16に送る。そして、パケット読取部16は、平文のデータの内容を判定して、当該データのうち必要なデータをパケット生成部17、セッション情報保持部18、公開鍵保持部19又は鍵共有データ保持部20に送る。
【0032】
セッション情報保持部18は、VPN端末1とVPN端末2との間でIKE処理を行うに際して送受信される各種情報をセッション情報として記憶する。このセッション情報保持部18に記憶されたイニシエータのセッション情報、レスポンダのセッション情報は、セッション鍵生成部21でセッション鍵を生成するに際して読み込まれる。
【0033】
公開鍵保持部19は、パケット読取部16から送られたイニシエータの公開鍵(始動側の通信装置から受信した当該通信装置の公開鍵)、レスポンダの公開鍵(応答側の通信装置から受信した当該通信装置の公開鍵)、及び公開鍵生成部22で生成されたイニシエータ側の公開鍵、レスポンダ側の公開鍵を記憶する。この公開鍵保持部19に記憶されたイニシエータの公開鍵、レスポンダの公開鍵は、共通秘密鍵生成部24で共通秘密鍵を生成するに際して読み込まれ、イニシエータ側の公開鍵はイニシエータに、レスポンダ側の公開鍵はレスポンダに公開鍵を送信するに際してパケット生成部17に読み込まれる。
【0034】
なお、イニシエータ側の公開鍵は、レスポンダに代わって暗号通信復号装置が生成するものであり、レスポンダの公開鍵に相当する。また、レスポンダ側の公開鍵は、イニシエータに代わって暗号通信復号装置が生成するものであり、イニシエータの公開鍵に相当する。
【0035】
鍵共有データ保持部20は、イニシエータにより複数のIKESAが提案され、レスポンダに選択された何れかのIKESA(有効IKESA)に含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション(Group Description)属性の値を記憶する。この鍵共有データ保持部20に記憶された情報は、秘密鍵生成部23で秘密鍵を生成するに際して読み込まれると共に、共通秘密鍵生成部24で共通秘密鍵を生成するに際して読み込まれる。
【0036】
秘密鍵生成部23は、イニシエータ側の秘密鍵及びレスポンダ側の秘密鍵を生成して、秘密鍵保持部25に記憶させる。このとき、秘密鍵生成部23は、鍵共有データ保持部20に保持されたグループディスクリプション属性の値を参照して、秘密鍵の種類を決定する。なお、イニシエータ側の秘密鍵は、レスポンダに代わって暗号通信復号装置が生成するものであり、レスポンダの秘密鍵に相当する。また、レスポンダ側の秘密鍵は、イニシエータに代わって暗号通信復号装置が生成するものであり、イニシエータの秘密鍵に相当する。
【0037】
公開鍵生成部22は、秘密鍵保持部25に記憶されているレスポンダ側の秘密鍵と、鍵共有データ保持部20に記憶されているグループディスクリプション属性の値に関連付けられたオークレーグループの値を用いてレスポンダ側の公開鍵を生成すると共に、秘密鍵保持部25に記憶されているイニシエータ側の秘密鍵と、鍵共有データ保持部20に記憶されているグループディスクリプション属性の値に関連付けられたオークレーグループの値を用いてイニシエータ側の公開鍵を生成し、それぞれの公開鍵を公開鍵保持部19に記憶させる。これにより、パケット生成部17は、イニシエータ、レスポンダに公開鍵を送信するに際して、公開鍵保持部19に記憶されているそれぞれの公開鍵を読み出すことが可能となる。
【0038】
共通秘密鍵生成部24は、公開鍵保持部19に保存しているイニシエータの公開鍵、秘密鍵保持部25に保存しているイニシエータ側の秘密鍵と、鍵共有データ保持部20に記憶されているグループディスクリプション属性の値に関連付けられたオークレーグループの値から、イニシエータの共通秘密鍵(始動側の共通秘密鍵)を生成する。また、共通秘密鍵生成部24は、レスポンダ側についても同様に、レスポンダの公開鍵、レスポンダ側の秘密鍵、オークレーグループの値から、レスポンダの共通秘密鍵(応答側の共通秘密鍵)を生成する。そして、共通秘密鍵生成部24は、イニシエータの共通秘密鍵及びレスポンダの共通秘密鍵をセッション鍵生成部21に出力する。
【0039】
セッション鍵生成部21は、共通秘密鍵生成部24からイニシエータ、レスポンダそれぞれの共通秘密鍵を入力すると、事前共有鍵保持部14に記憶されている事前共通鍵を使用し、セッション情報保持部18に記憶されているセッション情報を参照して、SKEYIDを生成する。そして、セッション鍵生成部21は、生成したSKEYID、共通秘密鍵生成部24に記憶されているイニシエータ、レスポンダのそれぞれの共通秘密鍵を使用し、セッション情報保持部18に記憶されているセッション情報を参照して、セッション鍵をそれぞれ生成し、セッション鍵保持部26に記憶させる。
【0040】
このような暗号通信復号装置3において、レスポンダ又はイニシエータにパケットを送信する場合には、パケット読取部16からの情報に従って、パケット生成部17により、パケットに格納する情報を認識してパケットを生成する。そして、暗号通信復号装置3は、パケット生成部17により生成したパケットを暗号化する必要がある場合には、パケット暗号化部27によりセッション鍵保持部26に記憶されているセッション鍵を読み出して暗号化して、通信インターフェース12から送信させる。
【0041】
また、暗号通信復号装置3は、セッション鍵や暗号化アルゴリズムを折衝して決定する後述のIKE処理を完了すると、当該IKE処理で決定されたセッション鍵を使用して、VPN端末1とVPN端末2との間で伝送される暗号通信の内容をネットワーク監視装置4で監視させる。このとき、パケット整形部28は、パケット復号部15によってセッション鍵で復号済のパケットを、ネットワーク監視装置4で受信及び解析可能かデータ形態に整形して、通信インターフェース13から出力させる。これにより、暗号通信復号装置3は、ネットワーク監視装置4にVPN端末1とVPN端末2との間で伝送される暗号通信の通信内容を監視させる。
【0042】
なお、この暗号通信復号装置3の詳細な処理内容については、後述するものとする。
【0043】
[暗号通信復号装置3の動作]
つぎに、上述したように構成された暗号通信復号装置3の動作について図3〜図6を参照して説明する。
【0044】
「全体動作」
先ず、暗号通信復号装置3の全体動作としては、図3に示すように、VPN端末1又はVPN端末2からパケットを受信すると(ステップST1)、当該パケットがIKE処理におけるパケット(IKEパケット)か否かを判定する(ステップST2)。このとき、暗号通信復号装置3は、パケット読取部16により、パケットに含まれるIP等の下位プロトコルのヘッダを参照して、パケットの種類を判定し、IKEパケットであると判定した場合にはステップST3に処理を進め、IKEパケットではないと判定した場合にはステップST4に処理を進める。
【0045】
ステップST3においては、暗号通信復号装置3により、VPN端末1及びVPN端末2との間でデータを通信する前に、鍵交換をしてVPNセッションを構築するためのIKE処理を行う。このIKE処理は、RFC2409で定義されている処理を行うことによって、VPN端末1のIKE用セッション鍵及びESP用セッション鍵と、VPN端末2のIKE用セッション鍵及びESP用セッション鍵とを生成する。ここで、IKE処理においては、RFC2408で定義されているISAKMP(internet security association key management)にしたがって鍵交換を行う。
【0046】
なお、このステップST3において、暗号通信復号装置3は、ステップST1でパケットを受信する毎に、図4に示すようなIKE処理を1回行う。そして、暗号通信復号装置3は、ステップST3のIKE処理を行った後にステップST6に処理を進め、IKE処理によって生成したパケットをVPN端末1又はVPN端末2に送信して、処理を終了する。なお、この図4に示す処理内容については後述する。
【0047】
一方、ステップST4においては、暗号通信復号装置3により、ステップST1で受信したパケットがESPパケットか否かを判定する。このとき、暗号通信復号装置3は、パケット読取部16により、パケットに含まれるヘッダ情報等を参照してパケットの種類を判定し、ESPパケットであると判定した場合にはステップST5に処理を進め、ESPパケットではないと判定した場合にはステップST6に処理を進める。
【0048】
ステップST5においては、暗号通信復号装置3により、図5に示すようなESP処理を行い、ステップST6においてはESP処理にて生成したパケットをVPN端末1又はVPN端末2に送信する。なお、この図5に示す処理内容については後述する。また、ステップST6において、送信するパケットにチェックサムフィールドがあれば、これを再計算した値に更新する。
【0049】
「IKE処理」
つぎに、上述したステップST3におけるIKE処理の詳細な内容について図4及び図6を参照して説明する。なお、このIKE処理は、図6に示すような番号「1」で示した第1処理から番号「9」で示した第9処理を行うものである。
【0050】
このIKE処理には、第1フェーズと第2フェーズの2つフェーズがある。第1フェーズは、VPN端末1とVPN端末2との間の相手認証、すなわち通信相手の認証と、IKE処理内で使用するセッション鍵(以下、IKE用セッション鍵と呼ぶ。)の交換を行う。
【0051】
また、第1フェーズには、イニシエータ、レスポンダそれぞれのIDを暗号化するメインモードと、IDを暗号化しないためメインモードと比較して手順が簡略化されたアグレッシブモードとの2つのモードがあり、何れか一方を実行する。以下に説明する本例では、VPN端末1をイニシエータ、VPN端末2をレスポンダとして、第1フェーズとしてメインモードを行う場合について説明する。
【0052】
「第1処理」
この第1フェーズにおいては、図6に示すように、先ずイニシエータは、宛先をレスポンダに設定したSA(security Association)ペイロードを含むパケットをIKEパケットS1として送信する。このSAペイロードは、IKE処理においてデータを暗号化するための暗号アルゴリズム、メッセージ認証コード等を生成するためのハッシュアルゴリズム、相互認証の方法、鍵の生成に必要な素数(オークレーグループ)、セッション鍵の有効期限等のデータ(以下、IKESAと呼ぶ。)を1つ以上含む。
【0053】
次に、暗号通信復号装置3は、イニシエータから送信されたSAペイロードを含むIKEパケットS1を通信インターフェース11により受信し(ステップST1)、IKEパケットと判定して(ステップST2)、図4に示すIKE処理に移行する(ステップST3)。
【0054】
このIKE処理では、先ずステップST11において、通信インターフェース11で受信したIKEパケットS1をパケット復号部15に入力し、パケット復号部15によって、IKEパケットS1のISAKMPヘッダのフラグフィールドに格納されている値を参照して、当該フラグフィールドに暗号化ビット(E)が格納されているか否かを参照して、IKEパケットS1に含まれるデータが暗号化されているかを判定する。この場合、SAペイロードを含むIKEパケットS1に含まれるデータが暗号化されていないので、パケット復号部15からパケット読取部16にIKEパケットS1に含まれるデータを復号化処理をせずに出力してステップST13に処理を進める。
【0055】
ステップST13においては、パケット読取部16により、IKEパケットS1から、ISAKMPヘッダのイニシエータクッキー(Initiator Cookie)及びSAペイロードの値を取り出して、セッション情報保持部18に記憶させる。
【0056】
次に、パケット読取部16により、IKEパケットS1のISAKMPヘッダより後に、鍵交換(KE:Key Exchange)ペイロードが含まれているか否か(ステップST14)、乱数ペイロードNrが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。そして、パケット読取部16は、IKEパケットS1に鍵交換ペイロード、乱数ペイロード、ハッシュペイロードの何れも含まれていないので、ステップST15〜ステップST17,ステップST19及びステップST21の処理を行わずに、ステップST22に処理を進める。
【0057】
次に、パケット読取部16は、ステップST22において、IKEパケットS1がステップST12の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。そして、暗号通信復号装置3は、ステップST1で受信したIKEパケットS1をパケット読取部16からパケット生成部17に出力し、パケット暗号化部27で暗号化せずに、通信インターフェース12からレスポンダに送信させる。
【0058】
これにより、レスポンダは、IKEパケットS1を受信する。レスポンダは、IKEパケットS1を受信すると、当該IKEパケットS1のSAペイロードに含まれているIKESAから、何れか1つのIKESA(以下、有効IKESAと呼ぶ。)を選択し、当該有効IKESAを含むSAペイロードを含むIKEパケットS2を作成し、宛先をイニシエータとして送信する。
【0059】
「第2処理」
次に、暗号通信復号装置3は、レスポンダから送信されたIKEパケットS2を暗号通信復号装置3の通信インターフェース11により受信し(ステップST1)、IKEパケットと判定して(ステップST2)、図4に示すIKE処理に移行する(ステップST3)。
【0060】
このIKE処理は、先ずステップST11において、通信インターフェース11で受信したIKEパケットS2をパケット復号部15に入力し、パケット復号部15によって、IKEパケットS2のISAKMPヘッダのフラグフィールドに格納されている値を参照して、当該フラグフィールドに暗号化ビット(E)が格納されているかを参照して、IKEパケットS2に含まれるデータが暗号化されているかを判定する。この場合、有効IKESAを含むIKEパケットS2が暗号化されていないので、パケット復号部15からパケット読取部16にIKEパケットS2を復号化処理をせずに出力してステップST13に処理を進める。
【0061】
ステップST13においては、パケット読取部16により、IKEパケットS2から、ISAKMPヘッダのレスポンダクッキー(Responder Cookie)及びSAペイロードに含まれる有効IKESAを取り出して、セッション情報保持部18に記憶させる。また、パケット読取部16は、鍵共有データ保持部20に、有効IKESAに含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション属性の値を保存する。
【0062】
次に、パケット読取部16により、IKEパケットS2のISAKMPヘッダより後に、鍵交換ペイロードが含まれているか否か(ステップST14)、乱数ペイロードNrが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。そして、パケット読取部16は、IKEパケットS2に鍵交換ペイロード、乱数ペイロード、ハッシュペイロードの何れも含まれていないので、ステップST15〜ステップST17,ステップST19及びステップST21の処理を行わずに、ステップST22に処理を進める。
【0063】
次に、パケット読取部16は、IKEパケットS2がステップST12の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。そして、暗号通信復号装置3は、ステップST1で受信したIKEパケットS2をパケット読取部16からパケット生成部17に出力し、パケット暗号化部27で暗号化せずに、通信インターフェース12からイニシエータに送信させる。
【0064】
これにより、イニシエータは、IKEパケットS2を受信する。イニシエータは、IKEパケットS2を受信すると、当該IKEパケットS2のSAペイロードに含まれているIKESAを有効IKESAであると認識する。
【0065】
これにより、イニシエータとレスポンダ及び暗号通信復号装置3は、有効IKESAが保存された状態となり、IKE処理における暗号アルゴリズムやハッシュアルゴリズム等を示すIKESAの内容の折衝を完了する。そして、通信システムは、鍵交換に移行する。
【0066】
すなわち、イニシエータは、乱数を発生させることにより秘密鍵xを生成し、当該秘密鍵xと有効IKESAに含まれるプロポーザルペイロード内のトランスフォームペイロードのグループディスクリプション属性の値が示す素数p及び原始元gとを用いて、公開鍵g mod pを生成し、その公開鍵g mod pを含む鍵交換ペイロードKEを生成する。また、イニシエータは、別途生成した乱数Ni_bを含む乱数ペイロードNiを生成する。そして、イニシエータは、生成した鍵交換ペイロードKE及び乱数ペイロードNiを含むIKEパケットS3を作成して、宛先をレスポンダとして送信する。なお、IKEにおいて原始元gは定数2である。また、以下の説明では、簡単のため、イニシエータの公開鍵g mod pのmod pを省略して、イニシエータの公開鍵gのように表記する。なお、レスポンダの公開鍵、共通秘密鍵についても、以下では、mod pを省略して説明する。
【0067】
「第3処理」
次に、暗号通信復号装置3は、イニシエータから送信されたIKEパケットS3を通信インターフェース11により受信し(ステップST1)、IKEパケットと判定して(ステップST2)、図4に示すIKE処理に移行する(ステップST3)。
【0068】
このIKE処理は、先ずステップST11において、通信インターフェース11で受信したIKEパケットS3に含まれるデータが暗号化されているかをパケット復号部15で判定する。この場合、IKEパケットS3が暗号化されていないので、パケット復号部15からパケット読取部16にIKEパケットS3を復号化処理をせずに出力してステップST13に処理を進める。
【0069】
ステップST13においては、パケット読取部16により、IKEパケットS3の鍵交換ペイロードKEからイニシエータの公開鍵gを取り出して公開鍵保持部19に記憶させると共に、IKEパケットS3の乱数ペイロードNiから、乱数Ni_bを取り出してセッション情報保持部18に記憶させる。
【0070】
次に、パケット読取部16により、IKEパケットS3のISAKMPヘッダより後に、鍵交換ペイロードKEが含まれているか否かを判定して(ステップST14)、鍵交換ペイロードKEが含まれているのでステップST15〜ステップST17の処理に移行する。
【0071】
ステップST15では、秘密鍵生成部23によってレスポンダ側の秘密鍵x’を生成して秘密鍵保持部25に保存し、次のステップST16では、公開鍵生成部22によって、秘密鍵保持部25に保存しているレスポンダ側の秘密鍵x’からレスポンダ側の公開鍵gx’を生成して公開鍵保持部19に保存し、次のステップST17では、パケット生成部17によって、ステップST1で受信したIKEパケットS3に含まれるイニシエータの公開鍵gを、公開鍵保持部19に記憶されているレスポンダ側の公開鍵gx’に書き換えたIKEパケットS3’を作成する。
【0072】
次に、パケット読取部16により、IKEパケットS3に、乱数ペイロードNrが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。そして、パケット読取部16は、乱数ペイロードNr、ハッシュペイロードの何れも含まれていないので、ステップST19及びステップST21の処理を行わずに、ステップST22に処理を進める。
【0073】
次に、パケット読取部16は、IKEパケットS3がステップST12の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。
【0074】
そして、暗号通信復号装置3は、ステップST17で作成したIKEパケットS3’を、パケット暗号化部27で暗号化せずに、通信インターフェース12からレスポンダに送信させる(ステップST6)。
【0075】
これにより、レスポンダは、IKEパケットS3’を受信すると、イニシエータと同様に乱数を発生させて秘密鍵yを生成し、当該秘密鍵yを用いて公開鍵g mod pを生成し、当該公開鍵gを含む鍵交換ペイロード及び別途生成した乱数Nr_bを含む乱数ペイロードNrを含むIKEパケットS4を生成して、宛先をイニシエータとして送信する。
【0076】
また、レスポンダは、事前共有鍵、受信したIKEパケットS3’の乱数ペイロードNiに含まれるイニシエータの乱数Ni_b及び自身の乱数Nr_bからSKEYIDを生成し、秘密鍵y、レスポンダ側の公開鍵gx’から共通秘密鍵gx’y=(gx’なる演算を行う。そして、レスポンダは、SKEYID、共通秘密鍵gx’y、イニシエータクッキー、レスポンダクッキーから、SKEYID_d、SKEYID_a、SKEYID_eを生成する。
【0077】
「第4処理」
次に、暗号通信復号装置3は、レスポンダから送信されたIKEパケットS4を通信インターフェース11により受信し(ステップST1)、IKEパケットと判定して(ステップST2)、図4に示すIKEに移行する(ステップST3)。
【0078】
このIKE処理は、先ずステップST11において、通信インターフェース11で受信したIKEパケットS4に含まれるデータが暗号化されているかをパケット復号部15で判定する。この場合、IKEパケットS4が暗号化されていないので、パケット復号部15からパケット読取部16にIKEパケットS4を復号化処理をせずに出力してステップST13に処理を進める。
【0079】
ステップST13においては、パケット読取部16により、IKEパケットS4の鍵交換ペイロードからレスポンダの公開鍵gを取り出して公開鍵保持部19に記憶させると共に、IKEパケットS4の乱数ペイロードから、乱数Nr_bを取り出してセッション情報保持部18に記憶させる。
【0080】
次に、パケット読取部16により、IKEパケットS4のISAKMPヘッダより後に、鍵交換ペイロードKEが含まれているか否かを判定して(ステップST14)、鍵交換ペイロードKEが含まれているのでステップST15〜ステップST17の処理に移行する。
【0081】
ステップST15では、秘密鍵生成部23によってイニシエータ側の秘密鍵y’を生成して秘密鍵保持部25に保存し、次のステップST16では、公開鍵生成部22によって、秘密鍵保持部25に保存しているイニシエータ側の秘密鍵y’からイニシエータ側の公開鍵gy’を生成して公開鍵保持部19に保存し、次のステップST17では、パケット生成部17によってパケット読取部16に保持するIKEパケットS4に含まれるレスポンダの公開鍵gを、公開鍵保持部19に記憶されているイニシエータ側の公開鍵gy’に書き換えたIKEパケットS4’を作成する。
【0082】
次に、パケット読取部16により、IKEパケットS4に、乱数ペイロードNrが含まれているか否かを判定し(ステップST18)、含まれているのでステップST19に処理を進める。
【0083】
ステップST19においては、セッション鍵生成部21により、RFC2409に従って、IKE用セッション鍵を生成する。このとき、暗号通信復号装置3は、先ず共通秘密鍵生成部24により、公開鍵保持部19に保存しているイニシエータの公開鍵gと、秘密鍵保持部25に保存しているイニシエータ側の秘密鍵y’と、鍵共有データ保持部20のグループディスクリプション属性の値に関連付けられているオークレーグループpから、イニシエータの共通秘密鍵gxy’を計算する。
【0084】
同様に、共通秘密鍵生成部24によって、公開鍵保持部19に保存しているレスポンダの公開鍵gと、秘密鍵保持部25に保存しているレスポンダ側の秘密鍵x’と、鍵共有データ保持部20のグループディスクリプション属性の値に関連付けられているオークレーグループpから、レスポンダの共通秘密鍵gx’yを計算する。
【0085】
次に、セッション鍵生成部21によって、事前共有鍵保持部14に保持している事前共通鍵、セッション情報保持部18に保存している乱数Ni_b、乱数Nr_bから、有効IKESAのハッシュアルゴリズムを使用してSKEYIDを生成する。
【0086】
そして、セッション鍵生成部21は、生成したSKEYID、イニシエータの共通秘密鍵gxy’、セッション情報保持部18に保存しているイニシエータクッキー、レスポンダクッキーから、有効IKESAのハッシュアルゴリズムを使用して、イニシエータのIKE用セッション鍵であるSKEYID_d、SKEYID_a、SKEYID_eをそれぞれ生成し、セッション鍵保持部26に保存する。
【0087】
同様に、セッション鍵生成部21は、生成したSKEYID、レスポンダの共通秘密鍵gx’yと、セッション情報保持部18に保存しているイニシエータクッキー、レスポンダクッキーから、有効IKESAのハッシュアルゴリズムを使用して、レスポンダのIKE用セッション鍵であるSKEYID_d、SKEYID_a、SKEYID_eをそれぞれ生成し、セッション情報保持部18に保存する。このようなセッション鍵生成部21で生成したレスポンダのIKE用セッション鍵は、IKEパケットS4の送信時にレスポンダで生成するセッション鍵と同じ値となる。
【0088】
このように暗号通信復号装置3は、イニシエータの共通秘密鍵gxy’と、レスポンダの共通秘密鍵gx’yとのように異なる共通秘密鍵から、イニシエータ、レスポンダそれぞれのIKE用セッション鍵を生成する。
【0089】
次に、パケット読取部16は、IKEパケットS4にハッシュペイロードが含まれているか否かを判定し(ステップST20)、ハッシュペイロードが含まれていないので、ステップST21の処理を行わずにステップST22に処理を進める。
【0090】
次に、パケット読取部16は、IKEパケットS4がステップST12の処理が施されて復号されたか否かを判定し、復号されていないので処理を終了する。
【0091】
そして、暗号通信復号装置3は、ステップST17で作成したIKEパケットS4’をパケット暗号化部27で暗号化せずに、通信インターフェース12からイニシエータに送信させる(ステップST6)。
【0092】
これにより、イニシエータは、IKEパケットS4’を受信すると、事前共有鍵、受信した乱数ペイロードに含まれる乱数Nr_b、自身が生成した乱数Ni_bからSKEYIDを生成し、イニシエータが生成した秘密鍵x、IKEパケットS4’に含まれるイニシエータ側の公開鍵gy’から、共通秘密鍵gxy’ を計算する。そして、イニシエータは、生成したSKIYID、共通秘密鍵gxy’と、イニシエータクッキー、レスポンダクッキーからIKE用セッション鍵であるSKEYID_b、SKEYID_a、SKEYID_eを生成する。このようにイニシエータで作成したIKE用セッション鍵は、暗号通信復号装置3がIKEパケットS4’を送信するに際して生成したイニシエータのIKE用セッション鍵と同じ値となる。
【0093】
これにより、イニシエータ、レスポンダでIKE用セッション鍵を保持する処理が完了すると共に、暗号通信復号装置3にイニシエータのIKE用セッション鍵及びレスポンダのIKE用セッション鍵が保持された状態となる。更に具体的には、イニシエータ、レスポンダ及び暗号通信復号装置3は、以降の処理において、IKEパケットのISAKMPヘッダより後のデータを、SKEYID_eを暗号化鍵とし、有効IKESAで設定された暗号アルゴリズムで暗号化する。
【0094】
次に、イニシエータは、自身のIDであるIDiiを含むIDペイロード及びハッシュ値を含むハッシュペイロードを作成する。このとき、イニシエータは、RFC2409に従ったSKEYID、イニシエータの公開鍵g、イニシエータクッキー、レスポンダクッキー、SAペイロード、イニシエータのIDペイロードから、有効IKESAで設定されたハッシュアルゴリズムで計算を行うことにより、ハッシュ値HASH_Iを含むハッシュペイロードを作成する。そして、イニシエータは、ハッシュペイロード及びIDペイロードをIKE用セッション鍵で暗号化したIKEパケットS5を送信する。
【0095】
「第5処理」
次に、暗号通信復号装置3は、イニシエータから送信されたIKEパケットS5を通信インターフェース11により受信し(ステップST1)、IKEパケットと判定して(ステップST2)、図4に示すIKE処理に移行する(ステップST3)。
【0096】
このIKE処理は、先ずステップST11において、通信インターフェース11で受信したIKEパケットS5に含まれるデータが暗号化されているかをパケット復号部15で判定する。この場合、IKEパケットS5が暗号化されているので、ステップST12に処理を進め、パケット復号部15により、有効IKESAの暗号アルゴリズムを使用して、セッション鍵保持部26に記憶しておいたイニシエータのIKE用セッション鍵を使用して復号して、パケット読取部16に出力して、ステップST13に処理を進める。
【0097】
ステップST13においては、パケット読取部16により、IKEパケットS5のIDペイロードからイニシエータのIDiiを取り出して、セッション情報保持部18に記憶させる。
【0098】
次に、パケット読取部16により、IKEパケットS5のISAKMPヘッダより後に、鍵交換ペイロードが含まれているか否か(ステップST14)、乱数ペイロードNrが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。そして、パケット読取部16は、鍵交換ペイロード、乱数ペイロードNrの何れも含まれておらず、ハッシュペイロードが含まれているので、ステップST15〜ステップST17、及びステップST19の処理を行わずに、ステップST21に処理を進める。
【0099】
ステップST21においては、パケット生成部17によって、パケット読取部16に保持するIKEパケットS5のハッシュペイロードが含むハッシュ値HASH_Iを、レスポンダ側のセッション情報によって再計算したハッシュ値に変更したIKEパケットS5’を作成する。このとき、ハッシュ値は、パケット生成部17により、SKEYIDと、公開鍵保持部19で保持するレスポンダに送信したレスポンダ側の公開鍵gx’、レスポンダの公開鍵g、セッション情報保持部18に保存しているイニシエータクッキー、レスポンダクッキー、IKEパケットS1のSAペイロードの値、イニシエータのIDiiを用いて、有効IKESAのハッシュアルゴリズムを使用して生成する。
【0100】
次のステップST22においては、先のステップST12でパケット復号部15による復号を行っているので、ステップST23に処理を進める。このステップST23においては、パケット暗号化部27により、有効IKESAの暗号アルゴリズムを使用して、レスポンダのIKE用セッション鍵をセッション鍵保持部26から読み出し、当該IKE用セッション鍵を用いてステップST21で作成したIKEパケットS5’を暗号化する。
【0101】
そして、暗号通信復号装置3は、暗号化したIKEパケットS5’を通信インターフェース12からレスポンダに送信させる(ステップST6)。
【0102】
レスポンダは、IKEパケットS5’を受信すると、IKEパケットS5’をIKE用セッション鍵で復号し、イニシエータがIKEパケットS5を作成する場合と同じ処理を行ってハッシュ値を計算し、IKEパケットS5’のハッシュペイロードに含まれるハッシュ値HASH_Iと比較する。これらの値は同一であるため、レスポンダは、イニシエータとのIKE処理において成りすましや改ざんが無かったものと判断する。
【0103】
次に、レスポンダは、自身のIDであるIDirを含むIDペイロード及びハッシュ値を含むハッシュペイロードを作成する。このとき、レスポンダは、RFC2409に従ったSKEYID、レスポンダの公開鍵g、イニシエータクッキー、レスポンダクッキー、SAペイロード、イニシエータのIDペイロードを用いて、有効IKESAで設定されたハッシュアルゴリズムで計算を行うことにより、ハッシュ値HASH_Rを含むハッシュペイロードを作成する。そして、レスポンダは、ハッシュペイロード及びIDペイロードをIKE用セッション鍵で暗号化したIKEパケットS6を送信する。
【0104】
「第6処理」
次に、暗号通信復号装置3は、レスポンダから送信されたIKEパケットS6を通信インターフェース11により受信し(ステップST1)、IKEパケットと判定して(ステップST2)、図4に示すIKE処理に移行する(ステップST3)。
【0105】
このIKE処理は、先ずステップST11において、通信インターフェース11で受信したIKEパケットS6に含まれるデータが暗号化されているかをパケット復号部15で判定する。この場合、IKEパケットS6が暗号化されているので、セッション鍵保持部26に記憶されているレスポンダのセッション鍵を用いて、有効IKESAの暗号アルゴリズムを使用して、IKEパケットS6をパケット復号部15により復号して(ステップST12)、ステップST13に処理を進める。
【0106】
ステップST13においては、パケット読取部16により、IKEパケットS6のIDペイロードからレスポンダのIDirを取り出してセッション情報保持部18に記憶させる。
【0107】
次に、パケット読取部16により、IKEパケットS6のISAKMPヘッダより後に、鍵交換ペイロードが含まれているか否か(ステップST14)、乱数ペイロードNrが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。この場合、IKEパケットS6には、鍵交換ペイロード、乱数ペイロードNrの何れも含まれておらず、ハッシュペイロードが含まれているので、ステップST15〜ステップST17、及びステップST19の処理を行わずに、ステップST21に処理を進める。
【0108】
ステップST21においては、パケット生成部17によって、パケット読取部16に保持するIKEパケットS6のハッシュペイロードが含むハッシュ値HASH_Rを、イニシエータ側のセッション情報によって再計算したハッシュ値に変更したIKEパケットS6’を作成する。このとき、ハッシュ値は、パケット生成部17により、SKEYIDと、公開鍵保持部19に記憶されているイニシエータ側の公開鍵gy’、イニシエータの公開鍵g、セッション情報保持部18に保存しているイニシエータクッキー、レスポンダクッキー、IKEパケットS1のSAペイロードの値、先のステップST13で記憶したレスポンダのIDirから、有効IKESAのハッシュアルゴリズムを使用して生成する。
【0109】
次のステップST22においては、先のステップST12でパケット復号部15による復号を行っているので、ステップST23に処理を進める。このステップST23においては、パケット暗号化部27により、有効IKESAの暗号アルゴリズムを使用して、イニシエータのIKE用セッション鍵をセッション鍵保持部26から読み出し、当該IKE用セッション鍵を用いてステップST21で作成したIKEパケットS6’を暗号化する。
【0110】
そして、暗号通信復号装置3は、暗号化したIKEパケットS6’を通信インターフェース12からイニシエータに送信させる(ステップST6)。
【0111】
イニシエータは、IKEパケットS6’を受信すると、IKEパケットS6’をIKE用セッション鍵で復号し、レスポンダがIKEパケットS6を作成する場合と同じ処理を行ってハッシュ値を計算し、IKEパケットS6’のハッシュペイロードに含まれるHASH_Rと比較する。これらの値は同一であるため、イニシエータは、レスポンダとのIKE処理において成りすましや改ざんが無かったものと判断する。
【0112】
これにより、イニシエータとレスポンダとの間で通信相手を認証が完了したことになり、第1フェーズを終了する。
【0113】
次に、第1フェーズに続いて、ESP処理のSAの折衝及びESP処理内で使用するESP用セッション鍵の交換を行う第2フェーズに移行する。なお、以下に説明する第2フェーズは、第1フェーズで確立されたIKE処理のSAに従って、クイックモードと呼ばれる処理を行う場合について説明する。
【0114】
このクイックモードの第2フェーズは、先ず、イニシエータが、ハッシュペイロード、SAペイロード、乱数ペイロードNiを含むIKEパケットS7を送信する。
【0115】
このハッシュペイロードは、第1フェーズで求めたSKEYID_a、ISAKMPヘッダのメッセージID、SAペイロード、乱数ペイロードNiから、第1フェーズの有効IKESAのハッシュアルゴリズムで計算したハッシュ値HASH(1)を含む。また、SAペイロードは、ESPペイロードを暗号化するための暗号アルゴリズム、認証データを生成するためのハッシュアルゴリズム、ESP用セッション鍵の有効期限等のIPsecにおける折衝データの組(以下、IPsecSA)を1つ以上と、後述のESPパケットの受信時にESP用セッション鍵を選択するためのインデックス値(セキュリティパラメータインデックス:SPI)を含む。また、乱数ペイロードNiは、新たに生成したイニシエータの乱数Ni_bを含む。そして、イニシエータは、有効IKESAの暗号アルゴリズムによって、IKE用セッション鍵SKEYID_eを用いて、ISAKMPヘッダより後の部分を暗号化して、IKEパケットS7を作成する。
【0116】
「第7処理」
次に、暗号通信復号装置3は、IKEパケットS7を通信インターフェース11で受信すると、当該IKEパケットS7をパケット復号部15に送り、IKEパケットS7が暗号化されているか否かを判定する(ステップST11)。この場合、IKEパケットS7が暗号化されているので、パケット復号部15により復号を行う(ステップST12)。このとき、パケット復号部15は、第1フェーズの有効IKESAで設定された暗号アルゴリズムに従って、セッション鍵保持部26に記憶されているイニシエータのIKE用セッション鍵SKEYID_eを使用してIKEパケットS7を復号して、パケット読取部16に出力する。
【0117】
次のステップST13においては、パケット読取部16により、IKEパケットS7に含まれるSAペイロード、乱数Ni_bを含む乱数ペイロードを取り出して、セッション情報保持部18に記憶させる。
【0118】
次に、パケット読取部16により、IKEパケットS7のISAKMPヘッダより後に、鍵交換ペイロードが含まれているか否か(ステップST14)、乱数ペイロードが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。この場合、IKEパケットS7には、鍵交換ペイロード及び乱数ペイロードNrが含まれておらず、ハッシュペイロードが含まれているので、ステップST15〜ステップST17、ステップST19の処理を行わずに、ステップST21に移行する。
【0119】
ステップST21においては、パケット生成部17により、パケット読取部16に保持するIKEパケットS7のハッシュペイロードのハッシュ値HASH(1)を、レスポンダ側の情報によって再計算したハッシュ値に変更したIKEパケットS7’を生成して、パケット暗号化部27に出力する。このとき、パケット生成部17は、セッション鍵保持部26に記憶しているレスポンダのIKE用セッション鍵SKEYID_a、ISAKMPヘッダのメッセージID、先のステップST13で記憶したIKEパケットS7のSAペイロード及び乱数Ni_bを用いて、有効IKESAのハッシュアルゴリズムを使用して再計算を行って、新たなハッシュ値HASH(1)を生成する。
【0120】
次のステップST22においては、パケット読取部16により、先のステップST12にてIKEパケットS7を復号しているので、ステップST23に処理を進める。このステップST23においては、セッション鍵保持部26に記憶されているレスポンダのIKE用セッション鍵を用いてIKEパケットS7’を暗号化して、通信インターフェース12に出力する。
【0121】
そして、暗号通信復号装置3は、暗号化したIKEパケットS7’を通信インターフェース12からレスポンダに送信させる(ステップST6)。
【0122】
レスポンダは、IKEパケットS7’を受信すると、イニシエータがIKEパケットS7を作成する場合と同じ処理を行ってハッシュ値を計算し、IKEパケットS7’のハッシュペイロードに含まれるハッシュ値HASH(1)と比較する。これらの値は同一であるため、レスポンダは、イニシエータとのIKE処理において成りすましや改ざんが無かったものと判断する。
【0123】
次に、レスポンダは、IKEパケットS7’のSAペイロードに含まれているIPsecSAの組の中から1つのIPsecSAを選択して、当該選択したIPsecSA(有効IPsecSA)及びSPI値を含んだSAペイロードを作成すると共に、新たに生成した乱数Nr_bを含む乱数ペイロードを作成する。そして、レスポンダは、IKE用セッション鍵SKEYID_aと、IKEパケットS7’のISAKMPヘッダに含まれるメッセージID及び乱数ペイロードに含まれる乱数Ni_bと、作成したSAペイロード及び乱数ペイロードから、ハッシュ値HASH(2)を計算して、当該HASH(2)を含むハッシュペイロードを作成する。
【0124】
そして、レスポンダは、ISAKMPヘッダより後の部分を、有効IKESAの暗号アルゴリズムによって、IKE用セッション鍵で暗号化して、ハッシュペイロード、SAペイロード、乱数ペイロードNrを含むIKEパケットS8を送信する。
【0125】
また、レスポンダは、SKEYID_d、IKEパケットS7’に含まれる有効IPsecSAのプロトコルフィールド、イニシエータ及びレスポンダのSPIフィールドの値、及び乱数Ni_b、乱数Nr_bを用いて、有効IKESAのハッシュアルゴリズムでESP用セッション鍵であるKEYMATを生成する。
【0126】
「第8処理」
次に、暗号通信復号装置3は、IKEパケットS8を通信インターフェース11で受信すると、当該IKEパケットS8をパケット復号部15に送り、IKEパケットS8が暗号化されているか否かを判定する(ステップST11)。この場合、IKEパケットS8が暗号化されているので、パケット復号部15により復号を行う(ステップST12)。このとき、パケット復号部15は、第1フェーズの有効IKESAで設定された暗号アルゴリズムに従って、セッション鍵保持部26に記憶されているレスポンダのIKE用セッション鍵SKEYID_eを使用してIKEパケットS8を復号して、パケット読取部16に出力する。
【0127】
次のステップST13においては、パケット読取部16により、IKEパケットS8のSAペイロードに含まれる有効IPsecSA及び乱数ペイロードに含まれる乱数Nr_bを取り出して、セッション情報保持部18に記憶させる。
【0128】
次に、パケット読取部16により、IKEパケットS8のISAKMPヘッダより後に、鍵交換ペイロードが含まれているか否か(ステップST14)、乱数ペイロードNrが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。この場合、IKEパケットS8には、鍵交換ペイロードが含まれておらず、乱数ペイロードNr及びハッシュペイロードが含まれているので、ステップST15〜ステップST17の処理を行わずに、ステップST19及びステップST21に移行する。
【0129】
ステップST19においては、セッション鍵生成部21により、RFC2409に従って、ESP用セッション鍵を生成する。このとき、セッション鍵生成部21は、先ずセッション鍵保持部26に記憶しているイニシエータのIKE用セッション鍵SKEYID_d、セッション情報保持部18に記憶している有効IPsecSAのプロトコルフィールド、SPIフィールドの値、乱数Ni_b及び乱数Nr_bを読み出し、有効IKESAのハッシュアルゴリズムを使用して、イニシエータのESP用セッション鍵KEYMATを生成して、セッション鍵保持部26に保存する。
【0130】
同様に、セッション鍵生成部21は、セッション鍵保持部26に保持しているレスポンダのIKE用セッション鍵SKEYID_d、セッション情報保持部18に記憶している有効IPsecSAのプロトコルフィールド、SPIフィールドの値、乱数Ni_b、乱数Nr_bを読み出し、有効IKESAのハッシュアルゴリズムを使用して、レスポンダのESP用セッション鍵KEYMATを生成して、セッション鍵保持部26に保存する。
【0131】
続くステップST21においては、パケット生成部17により、パケット読取部16に保持するIKEパケットS8のハッシュペイロードが含むハッシュ値HASH(2)を、イニシエータ側の情報によって再計算したハッシュ値に変更したIKEパケットS8’を生成して、パケット暗号化部27に出力する。このとき、パケット生成部17は、セッション鍵保持部26に記憶しているイニシエータのIKE用セッション鍵SKEYID_aと、ISAKMPヘッダのメッセージID、セッション情報保持部18に保存したイニシエータの乱数Ni_b、SAペイロード、レスポンダの乱数Nr_bを読み出し、有効IKESAのハッシュアルゴリズムを使用してハッシュ値を再計算する。
【0132】
次のステップST22においては、パケット読取部16により、先のステップST12にてIKEパケットS8を復号しているので、ステップST23に処理を進める。このステップST23においては、セッション鍵保持部26に記憶されているイニシエータのIKE用セッション鍵を用いてIKEパケットS8’を暗号化して、通信インターフェース12に出力する。
【0133】
そして、暗号通信復号装置3は、暗号化したIKEパケットS8’を通信インターフェース12からイニシエータに送信させる(ステップST6)。
【0134】
イニシエータは、IKEパケットS8’を受信すると、レスポンダがIKEパケットS8を作成する場合と同じ処理を行ってハッシュ値を計算し、IKEパケットS8’のハッシュペイロードに含まれるハッシュ値HASH(2)と比較する。これらの値は同一であるため、イニシエータは、レスポンダとのIKE処理において成りすましや改ざんが無かったものと判断する。
【0135】
次に、イニシエータは、SKEYID_aと、受信したIKEパケットS8’のISAKMPヘッダのメッセージID、自身で生成した乱数Ni_b、及び受信したIKEパケットS8’の乱数ペイロードに含まれる乱数Nr_bから、有効IKESAのハッシュアルゴリズムでハッシュ値HASH(3)を計算し、当該HASH(3)を含むハッシュペイロードを作成する。そして、イニシエータは、作成したハッシュペイロードを含むIKEパケットを作成し、当該ハッシュペイロード部分をIKE用セッション鍵で暗号化したIKEパケットS9を送信する。
【0136】
また、イニシエータは、SKEYID_d、IKEパケットS8’に含まれる有効IPsecSAのプロトコルフィールド、イニシエータ及びレスポンダのSPIフィールドの値、及び乱数Ni_b、乱数Nr_bを用いて、有効IKESAのハッシュアルゴリズムを使用して、ESP用セッション鍵であるKEYMATを生成する。
【0137】
「第9処理」
次に、暗号通信復号装置3は、IKEパケットS9を通信インターフェース11で受信すると、当該IKEパケットS9をパケット復号部15に送り、IKEパケットS9が暗号化されているか否かを判定する(ステップST11)。この場合、IKEパケットS9が暗号化されているので、ステップST12において、パケット復号部15により、有効IKESAの暗号アルゴリズムを使用して、セッション鍵保持部26に記憶されているイニシエータのIKE用セッション鍵で復号する。次のステップST13においては、パケット読取部16により、IKEパケットS9にセッション情報保持部18に記憶するデータが含まれていないと判断して、次のステップST14に処理を進める。
【0138】
次に、パケット読取部16により、IKEパケットS9のISAKMPヘッダより後に、鍵交換ペイロードが含まれているか否か(ステップST14)、レスポンダが送信した乱数ペイロードNrが含まれているか否か(ステップST18)、ハッシュペイロードが含まれているか否かを判定する(ステップST20)。この場合、IKEパケットS9には、鍵交換ペイロード及びレスポンダが送信した乱数ペイロードNrが含まれておらず、ハッシュペイロードが含まれているので、ステップST15〜ステップST17、ステップST19の処理を行わずに、ステップST21に移行する。
【0139】
ステップST21においては、パケット生成部17により、IKEパケットS9のハッシュペイロードに含まれるハッシュ値を、レスポンダのセッション情報によって再計算したハッシュ値に変更したIKEパケットS9’を生成して、パケット暗号化部27に出力する。このとき、パケット生成部17は、セッション鍵保持部26に記憶しているレスポンダのIKE用セッション鍵SKEYID_a、ISAKMPヘッダのメッセージID、セッション情報保持部18で保持している乱数Ni_b、乱数Nr_bを用いて、有効IKESAのハッシュアルゴリズムを使用して再計算を行って、新たなハッシュ値HASH(3)を生成する。
【0140】
次のステップST22においては、パケット暗号化部27により、先のステップST12で復号を行っているのでステップST23に処理を進め、セッション鍵保持部26からレスポンダのIKE用セッション鍵を読み出して、IKEパケットS9’を暗号化して、レスポンダに送信する。
【0141】
レスポンダは、IKEパケットS9’を受信すると、イニシエータがIKEパケットS9を作成する場合と同じ処理を行ってハッシュ値を計算し、IKEパケットS9’のハッシュペイロードに含まれるハッシュ値HASH(3)と比較する。これらの値は同一であるため、レスポンダは、イニシエータとのIKE処理において成りすましや改ざんが無かったものと判断する。
【0142】
これにより、イニシエータとレスポンダとの間でESP用セッション鍵の交換が完了すると共に、暗号通信復号装置3にイニシエータのESP用セッション鍵及びレスポンダのESP用セッション鍵が記憶された状態となり、第2フェーズを終了する。
【0143】
なお、ESP用セッション鍵には、IPsecSAで設定されたセッション鍵の有効期限が存在し、当該有効期限前に、再度第2フェーズを実行することで、新しいESP用セッション鍵を生成することになる。また、IKE用セッション鍵には、IKESAで設定されたセッション鍵の有効期限が存在し、当該有効期限前に、再度第1フェーズを実行することで、新しいIKE用セッション鍵を生成することになる。
【0144】
「ESP処理」
通信システムは、上述したIKE処理の後、ESP用セッション鍵を用いてデータを暗号化してVPN端末1とVPN端末2との間で通信を行うESP処理が可能となる。なお、このESP処理は、図6に示すような番号「10」で示した処理から番号「11」で示した処理を行うものである。
【0145】
具体的には、VPN端末1がVPN端末2にデータを送信する場合、VPN端末1は、VPN端末2に送信するデータを、TCP(Transmission Control Protocol)等の任意のプロトコルによってカプセル化したデータを作成する。
【0146】
続いて、VPN端末1は、RFC2406で定義されている手順に従って、IPパケットの末尾にESPトレイラを追加し、第2フェーズで選択されたIPsecSAの暗号アルゴリズムのブロック長の整数倍とし、当該暗号アルゴリズムに従って、ESP用セッション鍵で暗号化する。そして、暗号化したデータの先頭にESPヘッダを追加し、当該ESPヘッダの先頭に、宛先をVPN端末2のIPアドレス、送信元をVPN端末1のIPアドレスとしたIPヘッダを追加することにより、ESPパケットS10を作成して送信する。なお、ESPヘッダのSPIフィールドには、VPN端末2がIKEの第2フェーズで送信したSAペイロードのSPIフィールドの値をコピーして格納する。
【0147】
次に、暗号通信復号装置3は、VPN端末1からESPパケットS10を受信すると(ステップST1)、当該ESPパケットS10のIPヘッダを参照して、IKEパケットではないと判定し(ステップST2)、ESPパケットであると判定して(ステップST4)、ステップST5のESP処理を開始する。
【0148】
このESP処理において、暗号通信復号装置3は、図5に示すように、先ずステップST31において、パケット復号部15により、セッション鍵保持部26に記憶しておいたイニシエータのESP用セッション鍵を用い、IPsecSAで設定された暗号化アルゴリズムに従って、ESPパケットS10の暗号化部分を復号する。そして、パケット復号部15は、当該復号したESPパケットS10を、パケット暗号化部27に出力すると同時にパケット整形部28に出力する。
【0149】
次のステップST32においては、パケット整形部28により、パケット復号部15から出力されたESPパケットS10の暗号化部分を復号したものからESPトレイラを取り出し、ネットワーク監視装置4が処理できるようなデータ形態にパケットを整形して、平文パケットとして通信インターフェース13からネットワーク監視装置4に送信させる。 具体的には、パケット整形部28は、ESPプロトコルにおけるトランスポートモードのESPパケットS10を受信した場合、図7(a)に示すように、先ずESPパケットS10のESPトレイラに含まれるプロトコルフィールド(次ヘッダ番号)の値を、当該ESPの下位層であるIPヘッダのプロトコルフィールドにコピーすると共に、ESPヘッダ及びESPトレイラを削除する。ESPトレイラの長さは、ESPトレイラのパディング長フィールドに2バイトを加算した値とする。更に、パケット整形部28は、ESPヘッダ及びESPトレイラを削除したことによるデータ長の変化を、IP等の下位層のヘッダに反映させる。具体的には、IPヘッダの長さフィールドと、チェックサムフィールドを再計算する。そして、暗号通信復号装置3は、通信インターフェース13とネットワーク監視装置4とがLANで接続されている場合には、IPヘッダの先頭に、宛先アドレスをネットワーク監視装置4のMACアドレスとしたイーサヘッダを付加する。これにより、ネットワーク監視装置4は、当該パケットを確実に受信することができ、復号された平文パケットのデータを参照して正当性などの監視を行わせることができる。
【0150】
なお、ネットワーク監視装置4は、通常、自己のアドレスが宛先となっていないパケットでも、通信インターフェースに到達したパケットすべてを監視するが、パケット整形部28でネットワーク監視装置4のMACアドレスを宛先に設定することにより、暗号通信復号装置3とネットワーク監視装置4の間にスイッチングハブがある場合などに、スイッチングハブが、ネットワーク監視装置4が接続されているポートにパケットを転送しないことを防ぐことができる。
【0151】
また、パケット整形部28は、ESPプロトコルにおけるトンネルモードのESPパケットS10を受信した場合には、図7(b)に示すように、ESPトレーラの次ヘッダ番号(IP:4)をコピーし、復号したデータの先頭に現れるIPヘッダ(2)の先頭に付加するIPヘッダ(1)の次ヘッダ番号を変更することになる。
【0152】
次のステップST33においては、パケット暗号化部27により、レスポンダのESP用セッション鍵を用い、IPsecSAで設定された暗号化アルゴリズムに従って、ESPパケットS10の復号された部分を暗号化して、ESPパケットS10’を生成し、通信インターフェース12から送信させる。
【0153】
次に、VPN端末2でESPパケットS10’を受信すると、VPN端末2は、ESPヘッダより後のデータ部分を、IPsecSAで設定された暗号アルゴリズムによって、ESPヘッダのSPIフィールドの値によって選択したESPセッション鍵で復号する。そして、VPN端末2は、復号した結果得たデータからESPトレイラを除外することで、VPN端末1でカプセル化されたIPパケットを復元し、当該データを処理する。
【0154】
逆に、VPN端末2がVPN端末1にデータを送信する場合も、上記と同様の処理をする。ただし、ステップST31においては、レスポンダのESP用セッション鍵を用いてESPパケットS11を復号し、ステップST33においては、イニシエータのESP用セッション鍵を用いて暗号化してESPパケットS11’を生成して、通信インターフェース12から送信させる。
【0155】
また、上述のステップST33において、暗号通信復号装置3は、任意の監視装置から出力された通信内容を入力する入力手段としての通信インターフェースを更に備え、復号した通信内容を暗号化して転送する前に、任意の装置から入力された処理情報に基づいて通信内容を整形して、暗号化後に転送しても良い。具体的には、パケット整形部28は、平文のIPパケットをESPパケットに変換するときに、VPN端末1又はVPN端末2から受信したESPパケットの内容と、転送するESPパケットの内容とを異なるものにする。例えば、任意の装置からのパケットのフィルタリング条件を示す情報を入力した場合、パケット整形部28は、当該フィルタリング条件に従って、ESPパケットの中継又は非中継を判定しても良い。
【0156】
[第1実施形態の効果]
以上詳細に説明したように、本発明を適用した通信システムによれば、暗号通信を復号させるために必要な情報として、VPN端末1及びVPN端末2のESP用セッション鍵と暗号化アルゴリズムとを記憶させておき、復号した平文パケットを、ネットワーク監視装置4で処理可能な形態に整形してネットワーク監視装置4で監視させることができる。したがって、この暗号通信復号装置3によれば、通信内容が暗号化されている場合であっても、通信内容を監視でき、既存の平文のみを解析可能なネットワーク監視装置4を使用することができる。また、この通信監視システムによれば、暗号通信経路上で透過的に暗号文を復号し、ネットワーク監視装置4で監視させる場合であっても、再度暗号化してVPN端末1又はVPN端末2に送信することができ、暗号通信のセキュリティ・レベルを維持することができる。
【0157】
また、この通信システムによれば、任意の装置と暗号通信復号装置3とを接続し、当該任意の装置から暗号通信復号装置3が追加して行う処理内容を示す情報を入力して、再暗号化を行ってVPN端末1又はVPN端末2に中継する前に、追加した処理を行うことができる。
【0158】
[第2実施形態]
つぎに、本発明を適用した第2実施形態に係る通信システムについて説明する。なお、上述した実施形態と同一部分については、同一符号及び同一ステップ番号を付することによって、その詳細な説明を省略する。
【0159】
この第2実施形態に係る通信システムは、図8に示すように、暗号通信復号装置3’とネットワーク監視装置4’とが双方向通信を行うように構成される。この第2実施形態に係る通信システムは、暗号通信復号装置3’からネットワーク監視装置4’に出力した平文パケットをネットワーク監視装置4’で監視している結果、ネットワーク監視装置4’によって中継することが適当と判断され、暗号通信復号装置3’に戻されたパケットのみ暗号化して中継することで、不適当なパケットを破棄させる機能を追加したことを特徴とするものである。
【0160】
このような第2実施形態における暗号通信復号装置3’は、図9に示すように、ネットワーク監視装置4’から戻されたパケットを受信する通信インターフェース31を追加して備え、当該通信インターフェース31によって受信したパケットをパケット整形部28で整形前の状態に戻し、パケット暗号部27で暗号化して通信インターフェース12から出力する。これにより、暗号通信復号装置3’は、ESPパケットを中継するに際して、ネットワーク監視装置4’の監視結果が適当である場合には、ESPパケットを中継する。一方、暗号通信復号装置3’は、ネットワーク監視装置4’の監視結果が不適当である場合には、ネットワーク監視装置4’はパケットを戻さないため、結果的に当該ESPパケットを中継しない。
【0161】
また、ネットワーク監視装置4’は、暗号通信復号装置3’との間で、ネットワークN側に対応する平文パケットを送受信する通信インターフェースと、VPN端末2側に対応する平文パケットを送受信する通信インターフェースと2つの通信インターフェースを使用したゲートウェイ型の通信装置となる。ネットワーク監視装置4’は、上述した第1実施形態と同様に、暗号通信復号装置3’がESPパケットを復号した平文のIPパケットを受信すると、その内容を解析する。そして、パケットの内容が不適当と判定した場合には、当該パケットを破棄することで、不適当なESPパケットの中継を遮断させる。一方、パケットの内容が適当と判定した場合には、受信した通信インターフェースとは別の通信インターフェースから暗号通信復号装置3’にパケットを転送して、当該パケットをESPパケットとして中継させる。
【0162】
ここで、通信インターフェース13及び通信インターフェース31は、第1実施形態における通信インターフェース11及び通信インターフェース12と同様に、簡単のため受信用、送信用としているが、実際には2つの通信インターフェース13,31がネットワーク監視装置4’の2つの通信インターフェースに固定的に接続されている。
【0163】
そして、VPN端末2からパケットを受信した場合は、VPN端末2側の通信インターフェースが受信用の通信インターフェース11、ネットワークN側の通信インターフェースが送信用の通信インターフェース12となり、ネットワーク監視装置4’のVPN端末2側のインターフェースが通信インターフェース13に接続されたインターフェース、ネットワーク監視装置4’のネットワークN側のインターフェースが通信インターフェース31に接続されたインターフェースとなる。逆に、ネットワークNからパケットを受信した場合は、ネットワークN側の通信インターフェースが受信用の通信インターフェース11、VPN端末2側の通信インターフェースが送信用の通信インターフェース12となり、ネットワーク監視装置4’のネットワークN側のインターフェースが通信インターフェース13に接続されたインターフェース、ネットワーク監視装置4’のVPN端末2側のインターフェースが通信インターフェース31に接続されたインターフェースとなる。
【0164】
通信インターフェース31は、ネットワーク監視装置4’からIPパケットを受信すると、当該パケットをパケット整形部28に出力し、パケット整形部28によって、ESPヘッダ及びESPトレイラを追加させ、パケット暗号化部27に出力して暗号化させて通信インターフェース12から送信させる。
【0165】
このような暗号通信復号装置3’の全体動作は、図10に示すように、ステップST1でパケットを受信した後のステップST41において、受信した通信インターフェースが平文パケットを受信する通信インターフェース、すなわちパケットを受信したのが通信インターフェース13又は通信インターフェース31であるか否か判定する。そして、平文パケットを送受信する通信インターフェースであればステップST42に処理を進め、平文パケットを送受信する通信インターフェースでなければ、ステップST2以降に処理を進める。
【0166】
また、この第2実施形態における暗号通信復号装置3’は、VPN端末1又はVPN端末2からESPパケットを受信すると(ステップST1)、通信インターフェース11で受信したものなので平文パケットではないと判定し(ステップST41)、また、IKEパケットではないと判定し(ステップST2)、ステップST4においてESPパケットであると判定されて、ESP処理を開始する。
【0167】
このESP処理は、図11に示すように、先ずステップST31において、パケット復号部15により、セッション鍵保持部26に記憶しておいたイニシエータとレスポンダのうち、対応するESP用セッション鍵を用い、IPsecSAで設定された暗号アルゴリズムにしたがって、ESPパケットの暗号化部分を復号して、パケット整形部28に出力する。
【0168】
次のステップST51においては、パケット整形部28により、ESPパケットを整形して、ネットワーク監視装置4’で受信及び解析が可能なIPパケットに変換する。このとき、パケット整形部28は、図7(a)又は図7(b)で説明したように、パケット復号部15から入力されたESPパケットの暗号化部分を復号したパケットから、ESPトレイラを取り出し、ネットワーク監視装置4’が処理できるようにパケットを整形して、ステップST6において、ネットワーク監視装置4’に送信して処理を終了する。
【0169】
ここで、ステップST51におけるパケット整形部28のパケットの整形処理は、例えば、先ずESPパケットのESPトレイラに含まれるプロトコルフィールドの値を、当該ESPの下位層であるIPヘッダのプロトコルフィールドにコピーすると共に、ESPヘッダ及びESPトレイラを削除する。ESPトレイラの長さは、ESPトレイラのパディング長フィールドの値に2バイトを加算した値とする。更に、パケット整形部28は、ESPヘッダ及びESPトレイラを削除したことによるデータ長の変化を、IP等の下位層のヘッダに反映させる。具体的には、IPヘッダの長さフィールドと、チェックサムフィールドを再計算する。
【0170】
なお、暗号通信復号装置3’は、通信インターフェース13とネットワーク監視装置4’とがLANで接続されている場合には、IPヘッダの先頭に、宛先アドレスをネットワーク監視装置4’のMACアドレスとしたイーサヘッダを付加する。これにより、ネットワーク監視装置4’は、当該パケットを確実に受信することができ、復号された平文パケットのデータを参照して正当性などの監視を行わせることができる。
【0171】
これに対し、ネットワーク監視装置4’は、暗号通信復号装置3’から受信したIPパケットの内容を解析し、不適当と判定した場合は当該IPパケットを破棄する。一方、ネットワーク監視装置4’によってIPパケットの内容を適当と判定した場合には、当該IPパケットを受信した通信インターフェースとは別の通信インターフェースから、暗号通信復号装置3’にIPパケットを送信する。
【0172】
これに対し、暗号通信復号装置3’は、通信インターフェース31によってネットワーク監視装置4’から送信されたIPパケットを受信すると(ステップST1)、当該IPパケットが平文のパケットであるので、ステップST41からステップST42に処理を進める。
【0173】
この平文処理は、図12に示すように、先ずステップST61において、通信インターフェース31により受信したIPパケットを、パケット整形部28によってESPパケットに整形して、パケット暗号化部27に出力する。このとき、パケット整形部28は、ステップST51とは逆の変換を行う。すなわち、IPヘッダの長さフィールド及びヘッダ長フィールドを参照して、ヘッダ長からIPヘッダの長さを減算して、データ部の長さを取得し、データの長さに2バイトを加算する。次に、当該加算したデータに追加するパディングを求めるために、IPsecSAで設定された暗号アルゴリズムのブロック長の整数倍になるnバイトを計算する。そして、当該IPパケットのIPヘッダの後にESPヘッダを追加し、当該IPパケットの末尾にnバイトのパディングを含むESPトレイラを追加する。このとき、ESPトレイラのパディング長フィールドに、nバイトのパディングをコピーし、ESPトレイラの次ヘッダフィールドには、IPヘッダのプロトコルフィールドをコピーする。また、IPヘッダのプロトコルフィールドには、ESPを示す値(50)をコピーする。更に、ESPヘッダ及びESPトレイラを追加したことによるデータ長の変化をIP等の下位層のヘッダに反映させる。具体的には、IPヘッダの長さフィールドと、チェックサムフィールドを再計算する。
【0174】
次のステップST62においては、パケット暗号化部27により、ESP用セッション鍵を用い、IPsecSAで設定された暗号アルゴリズムに従って、復号されたESPパケットを暗号化して、通信インターフェース12から送信させる。
【0175】
これに対し、ESPパケットを受信したVPN端末1又はVPN端末2は、ESPヘッダより後のデータ部分を、IPsecSAで設定された暗号アルゴリズムによって、ESPヘッダのSPIフィールドの値によって選択したESP用セッション鍵で復号する。そして、VPN端末1又はVPN端末2は、復号した結果得たデータからESPトレイラを除外することで、カプセル化されたIPパケットを復元し、当該IPパケットを処理することができる。
【0176】
[第2実施形態の効果]
以上詳細に説明したように、本発明を適用した第2実施形態に係る通信システムによれば、暗号通信復号装置3’から平文のパケットをネットワーク監視装置4’に送信し、ネットワーク監視装置4’の監視結果によってパケットの中継を停止させることができる。また、この通信システムによれば、既存の不正なパケットを検知して破棄するネットワーク監視装置4’を使用することができる。
【0177】
[第3実施形態]
つぎに、本発明を適用した第3実施形態に係る通信システムについて説明する。なお、上述した実施形態と同一部分については、同一符号及び同一ステップ番号を付することによって、その詳細な説明を省略する。
【0178】
この第3実施形態に係る通信システムは、サーバ−クライアント間でSSL(Secure Socket Layer)に準拠した暗号通信を行う場合に、上述した実施形態と同様に、暗号化されたパケットを暗号通信復号装置で傍受して、当該傍受したパケットをネットワーク監視装置で監視させることを特徴とするものである。このSSLによる暗号通信は、上述のIPsecとは異なり、Diffie−Hellman鍵共有法を使用しないため、暗号通信復号装置をサーバ−クライアント間の通信経路上に直接接続する必要はなく、図13に示すように構成される。
【0179】
この通信システムにおいて、SSLクライアント41とSSLサーバ42とを接続する通信経路にはハブ43が設けられ、当該ハブ43から分岐して暗号通信復号装置44及びネットワーク監視装置4’’が接続されている。
【0180】
SSLクライアント41は、SSLサーバ42との間で暗号通信を行うに際して、ネットワークN及びハブ43を介して、SSLサーバ42との間でSSLプロトコルのハンドシェイクプロトコル(SSLHP:SSL Handshake Protocol)従った処理を行うことでSSLプロトコルのコネクションを確立する。このとき、先ず、SSLクライアント41は、SSLサーバ42から受信した証明書を評価することで、SSLサーバ42の正当性を確認する。これにより、SSLクライアント41は、相手認証を行う。その後、SSLクライアント41とSSLサーバ42との間で、ハンドシェイクプロトコルによる折衝によって鍵ブロック(共通鍵)、暗号アルゴリズムを決定し、当該鍵ブロックでデータ部(レコード単位)を暗号化したSSLパケットを使用した暗号通信を行う。
【0181】
なお、SSLプロトコルにおけるコネクションとは、SSLクライアント41とSSLサーバ42との間でのTCPのコネクション、即ち送信元及び宛先ポートの組によって識別される情報を指す。また、SSLプロトコルにおけるセッションとは、SSLクライアント41とSSLサーバ42との間でのセッションIDによって識別される情報である。コネクションは、ハンドシェイクプロトコルで送受信されるセッションIDによってセッションに関連付けられる。
【0182】
また、SSLプロトコルでは、SSLハンドシェイクプロトコルの下位層に相当するSSLレコード層(SSLRL:SSL Record Layer)に従った処理を行うことで、レコードという単位でデータを送受信する。レコードは、TCP/IP層によってパケットに分割又は結合されることによって調整されて送受信される。
【0183】
ハブ43は、SSLクライアント41とSSLサーバ42との間で通信されるSSLパケットを中継する中継装置として機能すると共に、当該SSLパケットを暗号通信復号装置44にも送信する。これにより、ハブ43は、中継するSSLパケットを暗号通信復号装置44で傍受させる。
【0184】
暗号通信復号装置44は、ハブ43から受信したSSLパケットを、予め記憶しておいたSSLサーバ42のサーバ用秘密鍵を利用して復号し、復号したパケットをネットワーク監視装置4’’で処理できるデータ形態に整形して、ネットワーク監視装置4’’に出力する。具体的には、暗号通信復号装置44は、SSLパケットを復号したパケットの、イーサヘッダの宛先をネットワーク監視装置4’’とし、TCPヘッダの宛先ポート又は送信元ポートをHTTP(HyperText Transfer Protocol)を示す番号「80」に設定したTCP/IPパケットに整形する。
【0185】
ネットワーク監視装置4’’は、暗号通信復号装置44が送信したTCP/IPパケットを受信すると、当該TCP/IPパケットの内容を解析して、当該TCP/IPパケットの内容が適当なものか、不適当なものかを判定する。ネットワーク監視装置4’’は、例えば、TCP/IPパケットにインターネットワームを含んでいることを検出した場合には、当該TCP/IPパケットの内容が不適当であると判定して、管理者などに通知する。
【0186】
[暗号通信復号装置の構成]
上述した通信システムにおいて、暗号通信復号装置44は、図14に示すように構成される。
【0187】
受信用の通信インターフェース51は、ハブ43に接続され、SSLクライアント41とSSLサーバ42との間のSSLパケットをハブ43を介して受信する。そして、通信インターフェース51は、SSLパケットを、フィルタ部52に出力する。
【0188】
フィルタ部52は、通信インターフェース51から入力されたSSLパケットを入力すると共に、フィルタ設定部53によってSSLパケットのフィルタリング条件が供給される。フィルタ設定部53は、暗号通信復号装置44がSSLパケットとして処理するためのフィルタリング条件を設定するユーザインターフェースである。具体的には、フィルタリング条件として、SSLサーバ42のIPアドレス、SSLサーバ42のSSLのポート番号を設定する。フィルタ部52は、SSLパケットを入力すると、フィルタ設定部53によって設定されたフィルタリング条件に従ってフィルタリングを行い、フィルタリング条件に適合したパケットをSSLパケットとしてレコード再構成部54に出力する。具体的には、通信インターフェース51から入力したパケットのIPアドレスとフィルタリング条件として設定されたSSLサーバ42のIPアドレスとを比較し、更に、通信インターフェース51から入力したパケットのポート番号とフィルタリング条件として設定されたSSLサーバ42のポート番号とを比較する。そして、フィルタ部52は、何れかが異なると判定した場合には、当該パケットを破棄し、双方が同じと判定した場合には、SSLパケットであると判定してレコード再構成部54に出力する。
【0189】
レコード再構成部54は、SSLパケットのデータ部をレコード単位のレコードデータに再構成して、レコード復号部56に出力する。また、レコード情報保持部55は、レコード再構成部54がレコードを再構成する際に使用するバッファである。
【0190】
ここで、SSLクライアント41及びSSLサーバ42は、データをSSLプロトコルに従って送信する際に、SSLレコード層において、データをレコードという構造体(レコードデータ)に分割してTCP/IP層処理に渡す。そして、TCP/IP層処理では、IPデータグラムの最大サイズを表すMTU値に従って、入力されたレコードを更にパケット単位に分割して、データ長を調整して送信することになる。
【0191】
レコード復号部56は、コネクション情報保持部60に保持されている暗号化状態が有効であった場合、レコード再構成部54から入力されたレコードデータを、コネクション情報保持部60に保持する暗号スイートの暗号アルゴリズムに従って、鍵ブロックの暗号化鍵を用いた復号処理を行い、復号済のレコードデータをレコード解析部57に出力し、コネクション情報保持部60に保持されている暗号化状態が無効であった場合、レコード再構成部54から入力されたレコードデータを、そのままレコード解析部57に出力する。
【0192】
レコード解析部57は、レコード復号部56から出力されたレコードデータを解析して、レコードのメッセージタイプが、ハンドシェイク(handshake)プロトコルによって生成されたハンドシェイクメッセージを含むことを示すメッセージタイプ、又は、暗号パラメータ切換(change_cipher_spec)プロトコルによって生成された暗号パラメータ切換(change_cipher_spec)メッセージを含むことを示すメッセージタイプであるかを解析する。そして、ハンドシェイクプロトコル又は暗号パラメータ切換プロトコルで生成されたメッセージタイプであるレコードデータである場合には、当該レコードデータをハンドシェイク解析部58に出力する。一方、ハンドシェイクプロトコルや暗号パラメータ切換プロトコルによるメッセージではなく、レコードのタイプがアプリケーションデータ(application_data)である場合には、当該レコードデータをパケット整形部63に出力する。
【0193】
ハンドシェイク解析部58は、レコード解析部57から出力されたレコードデータを解析して、当該解析結果をセッション情報保持部59及びコネクション情報保持部60に出力する。このとき、ハンドシェイク解析部58は、レコードデータのメッセージタイプがhandshakeであり、且つハンドシェイクのメッセージタイプがclient_key_exchangeであれば、当該レコードデータを公開鍵暗号処理部61によって復号させる。
【0194】
公開鍵暗号処理部61は、秘密鍵設定部62で設定された秘密鍵を使用してハンドシェイク解析部58から入力されたデータを復号して、ハンドシェイク解析部58に出力する。また、秘密鍵設定部62は、SSLサーバ42の秘密鍵を設定するユーザインターフェースである。
【0195】
セッション情報保持部59は、SSLのセッションを識別するための情報と、暗号化鍵(master secret key)とを保持している。このセッション情報保持部59は、セッションを識別するための情報として、具体的に、SSLクライアント41及びSSLサーバ42のIPアドレスと、SSLのセッションIDを保持している。
【0196】
コネクション情報保持部60は、SSLプロトコルのコネクションを識別するための情報と、暗号スイート、暗号化状態及び鍵ブロックを保持する。コネクション情報保持部60は、SSLのコネクションを識別するための情報として、具体的に、SSLクライアント41及びSSLサーバ42のIPアドレスとポート番号とを保持している。また、コネクション情報保持部60は、暗号化状態として、SSLクライアント41からSSLサーバ42、及び、SSLサーバ42からSSLクライアント41の各方向についての暗号化状態を保持する。更に、コネクション情報保持部60は、鍵ブロックとして、SSLクライアント41からSSLサーバ42、及びSSLサーバ42からSSLクライアント41の各方向について、メッセージ認証鍵、暗号化鍵、初期ベクタを保持している。
【0197】
パケット整形部63は、レコード復号部56で復号され、レコード解析部57から出力されたアプリケーションデータを、ネットワーク監視装置4’’で解析できるようなデータ形態に整形して、通信インターフェース64に出力する。具体的には、パケット整形部63は、図15に示すように、SSLデータを復号した結果のアプリケーションデータが得られると、当該レコード単位のアプリケーションデータをパケット単位に分割してデータ長を調整する。そして、当該パケット単位のデータに、TCPの宛先又は送信元ポートをHTTPを示す番号の「80」に設定したヘッダ、IPヘッダ、イーサヘッダ等を付加して、イーサネット(登録商標)ヘッダの宛先をネットワーク監視装置4’’としたTCP/IPパケットに整形する。
【0198】
通信インターフェース64は、パケット整形部63にから入力されたTCP/IPパケットを、ネットワーク監視装置4’’に出力する。
【0199】
[暗号通信復号装置の動作]
つぎに、上述したように構成された暗号通信復号装置44の動作について図16及び図17を参照して説明する。
【0200】
このネットワーク監視装置4’’は、図16に示すような処理を行うことで、主にSSLクライアント41とSSLサーバ42との間で送受信されるIPパケットから、レコードを再構成する。このレコードを再構成する処理は、SSLクライアント41とSSLサーバ42との間で送受信されるTCP/IPパケットをネットワーク監視装置4’’で受信することによって開始される。
【0201】
暗号通信復号装置44は、先ず、通信インターフェース51によってSSLクライアント41とSSLサーバ42との間で送受信されるTCP/IPパケットを受信すると(ステップST71)、フィルタ部52によって、当該TCP/IPパケットが、SSLプロトコルに従って暗号化されたSSLパケットであるか否かを判定する(ステップST72)。
【0202】
そして、フィルタ部52により、受信したTCP/IPパケットがSSLパケットであると判定した場合にはステップST73に処理を進め、SSLパケットではないと判定した場合は処理を終了する。このとき、フィルタ部52は、IPヘッダの上位層のヘッダとしてTCPヘッダが付加され、且つ、宛先又は送信元のIPアドレスとポート番号が、フィルタ設定部53で設定したものと同一である場合にはSSLパケットと判定し、同一はない場合にはSSLパケットではないと判定する。
【0203】
ステップST73において、レコード再構成部54は、IPヘッダのヘッダ長フィールド、パケット長フィールド及びTCPヘッダのデータオフセットフィールドを参照して、パケット長、IPヘッダ長、TCPヘッダ長を取得し、パケット長から、IPヘッダ長及びTCPヘッダ長を減算した値から、当該TCP/IPパケットがデータを含んでいるか否かを判定する。そして、レコード再構成部54は、データを含んでいると判定した場合はステップST74に処理を進め、含んでいないと判定した場合はステップST78に処理を進める。
【0204】
ステップST74において、レコード再構成部54は、ステップST73で含まれていると判定されたデータが、以前の処理においてレコード情報保持部55に蓄積しておいたコネクションにおけるデータと逆方向のデータか否かを判定する。すなわち、前回に行った図16の処理で蓄積していたデータが、SSLクライアント41からSSLサーバ42に送信されたデータである場合には、ステップST73で含まれていると判定されたデータがSSLサーバ42からSSLクライアント41に送信されるデータであるか否かを判定する。逆に、前回に行った図16の処理で蓄積していたデータが、SSLサーバ42からSSLクライアント41に送信されたデータである場合には、ステップST73で含まれていると判定されたデータがSSLクライアント41からSSLサーバ42に送信されるデータであるか否かを判定する。そして、レコード再構成部54は、前回に蓄積したデータの送受信方向と、今回受信したデータの送受信方向とが逆方向であると判定した場合には、ステップST75に処理を進め、逆方向ではないと判定した場合には、ステップST77に処理を進める。なお、レコード情報保持部55にコネクションのデータが蓄積されていない場合には、レコード再構成部54は、逆方向ではないと判定して、ステップST77に処理を進める。
【0205】
ステップST77において、レコード再構成部54は、次回以降の処理においてデータを使用できるように、レコード情報保持部55にデータを保存する。このとき、レコード再構成部54は、データそのものと、送受信したデータの位置を表すTCPヘッダのシーケンス番号フィールドとを対応付けて、適当な場所にコピーしてレコード情報保持部55に記憶させる。
【0206】
次のステップST78において、レコード再構成部54は、TCPヘッダのFINフラグを参照して、今回のデータ送信によってコネクションが終了するか否かを判定する。そして、レコード再構成部54によって終了すると判定した場合は、ステップST79に処理を進め、終了していないと判定した場合は処理を終了する。
【0207】
ステップST79において、レコード再構成部54は、レコード情報保持部55に当該コネクションのデータが蓄積されているかどうかを判定する。蓄積されていると判定した場合はステップST80に処理を進め、蓄積されていないと判定した場合は処理を終了する。
【0208】
ステップST80において、レコード再構成部54は、レコード情報保持部55に蓄積されているコネクションのデータを、レコードのヘッダを参照してレコード単位で分割してレコードデータとする。そして、レコード再構成部54は、各レコードデータをレコード復号部56に出力し、レコード処理を行わせて、処理を終了する。なお、このレコード処理の詳細については図17を参照して後述する。
【0209】
一方、ステップST74において、ステップST71で受信されたSSLパケットに含まれるデータが、前回とは逆方向のデータであると判定された後のステップST75においても、ステップST80と同様の処理を行い、次のステップST76において、ステップST77と同様にレコード情報保持部55へのデータ蓄積を行う。
【0210】
以上の手順によって、SSLクライアント41とSSLサーバ42との間で送受信されるTCP/IPパケットから、レコードを再構成する。なお、簡単のため、これ以降レコードを再構成する手順の説明は省略する。
【0211】
つぎに、上述のステップST80又はステップST75で行うレコード処理について、図17を参照して説明する。
【0212】
このレコード処理は、レコード再構成部54によるレコードの再構成後に開始される。このレコード処理は、図18に示すようなSSLクライアント41とSSLサーバ42との間のSSLパケットの送受信時において実行される。この図18に示す処理は、SSLクライアント41とSSLサーバ42との間で、先ずハンドシェイクプロトコルによって暗号アルゴリズム等の折衝や鍵ブロックの生成を行い、その結果決定した暗号アルゴリズムに従い、生成した鍵ブロックによって上位層のデータの暗号を行って暗号通信を行うものである。なお、この図18に示すハンドシェイク処理は、以下に示す第1処理、第2処理、第3処理、第4処理を行い、その後、アプリケーションデータ処理を行えるようにするものである。
【0213】
「第1処理」
先ず、ハンドシェイク処理の第1処理において、SSLクライアント41は、SSLサーバ42に対して、ハンドシェイクプロトコルに従って、最初にSSLサーバ42に向けて送信されるメッセージであるClient HelloメッセージS21を送信する。このClient HelloメッセージS21は、クライアント乱数、セッションID、暗号スイートのリスト等を含む。この暗号スイートとは、SSLクライアント41とSSLサーバ42との間の鍵交換に使用する公開鍵暗号アルゴリズム及びアプリケーションデータの暗号通信に使用する暗号アルゴリズム、当該暗号アルゴリズムで使用する鍵の長さ、メッセージ認証コードを生成するハッシュアルゴリズムの組み合わせを表す値である。
【0214】
これに対し、Client HelloメッセージS21がハブ43を介して暗号通信復号装置44で傍受されると、当該Client HelloメッセージS21を含むレコードは、暗号通信復号装置44のレコード復号部56に入力されて、レコード処理を開始させる。
【0215】
このレコード処理は、図17に示すステップST91において、レコード復号部56によって、コネクション情報保持部60に保持するSSLクライアント41からSSLサーバ42への暗号化状態を参照し、未だ有効ではないので、ステップST93に処理を進める。
【0216】
ステップST93において、レコード解析部57によって、受信したレコードデータのメッセージタイプがハンドシェイクプロトコルを示すものか否かを判定し、ハンドシェイクプロトコルによって生成されたClient HelloメッセージS21であるので、当該レコードデータをハンドシェイク解析部58に出力して、ステップST94に処理を進める。
【0217】
ステップST94において、ハンドシェイク解析部58によって、ステップST93において入力されたレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップST95に処理を進める。
【0218】
ステップST95においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージを示すものであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップST96に処理を進める。
【0219】
ステップST96においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージを示すものであるか否かを判定し、Client HelloメッセージS21を受信しているのでステップST97に処理を進める。
【0220】
ステップST97においては、ハンドシェイク解析部58によって、受信したClient HelloメッセージS21と共に受信したレコードから、SSLクライアント41で生成されたクライアント乱数を取得し、コネクション情報保持部60に保存する。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0221】
「第2処理」
次の第2処理において、SSLサーバ42は、SSLクライアント41からClient HelloメッセージS21を受信すると、SSLクライアント41に、ハンドシェイクプロトコルのServer HelloメッセージS22に続いてCertificateメッセージS23を送信する。このServer HelloメッセージS22は、Client HelloメッセージS21に対する応答メッセージであって、SSLサーバ42で生成したサーバ乱数、セッションID、以後の処理で使用する暗号スイートを含む。また、CertificateメッセージS23は、自身が所有する証明書をSSLクライアント41に引き渡すメッセージであって、SSLサーバ42の証明書を含む。
【0222】
これに対し、暗号通信復号装置44は、レコード復号部56にServer HelloメッセージS22を含むレコードが入力されると、レコード処理を開始する。
【0223】
このレコード処理は、先ずステップST91において、レコード復号部56によって、コネクション情報保持部60に保持するSSLサーバ42からSSLクライアント41への暗号化状態を参照し、未だに有効ではないので、ステップST93に処理を進める。
【0224】
ステップST93においては、レコード解析部57によって、当該レコードがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルなので、ハンドシェイク解析部58にレコードを出力し、ステップST94に処理を進める。
【0225】
ステップST94においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップST95に処理を進める。
【0226】
ステップST95においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージS22であるのでステップST98に処理を進める。
【0227】
ステップST98においては、ハンドシェイク解析部58によって、Server HelloメッセージS22と共に受信したレコードデータから、サーバ乱数、セッションID、暗号スイートを取得し、サーバ乱数及び暗号スイートをコネクション情報保持部60に記憶させ、セッションIDをセッション情報保持部59に記憶させる。このとき、ハンドシェイク解析部58は、同じServer HelloメッセージS22に付加されていたものとして、コネクション情報保持部60に記憶させたサーバ乱数及び暗号スイートと、セッション情報保持部59に記憶させたセッションIDとを対応付けるために、記憶したコネクション情報とセッション情報とをリンクさせて記憶させる。
【0228】
ステップST99においては、セッション情報保持部59に共通秘密鍵であるマスターシークレットが存在するか否かを判定し、存在しないので処理をステップST107に進める。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0229】
また、暗号通信復号装置44は、Server HelloメッセージS22に続いて、レコード復号部56にCertificateメッセージS23を含むレコードデータが入力されると、再度レコード処理を開始することになる。
【0230】
このレコード処理は、先ずステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLサーバ42からSSLクライアント41への暗号化状態を参照し、未だ有効でないので、ステップST93に処理を進める。
【0231】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルなので、ハンドシェイク解析部58にレコードデータを出力し、ステップST94に処理を進める。
【0232】
ステップST94においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップST95に処理を進める。
【0233】
ステップST95においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージを示すものであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップST96に処理を進める。
【0234】
ステップST96においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理をステップST107に進める。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0235】
これに対し、SSLクライアント41は、SSLサーバ42からServer HelloメッセージS22とCertificateメッセージS23を受信すると、Certificateメッセージに含まれる証明書を評価し、それが有効なものであれば、乱数pre-master secretを生成し、当該乱数pre−master secretと、クライアント乱数、及びServer HelloメッセージS22から取得したサーバ乱数とから、共通秘密鍵であるマスターシークレットを生成する。次に、SSLクライアント41は、マスターシークレットと、クライアント乱数、及びサーバ乱数とから、鍵ブロックを生成する。
【0236】
「第3処理」
次に、SSLクライアント41は、SSLサーバ42に、ハンドシェイクプロトコルのClient Key ExchangeメッセージS24、暗号パラメータ切換(Change Cipher Spec)プロトコルのChange Cipher SpecメッセージS25、及びハンドシェイクプロトコルのFinishedメッセージS26を送信する。
【0237】
Client Key ExchangeメッセージS24は、SSLクライアント41が生成した乱数をSSLサーバ42の公開鍵で暗号化してSSLサーバ42に送信すること示すメッセージであり、乱数pre-master secretを、SSLサーバ42から受信したCertificateメッセージに含まれるSSLサーバ42の証明書に含まれるSSLサーバ42の公開鍵で暗号化したデータを含む。このデータにより、SSLサーバ42では、マスターシークレットの生成が可能となる。また、Change Cipher SpecメッセージS25は、ハンドシェイクプロトコルで決定した暗号化仕様を利用開始することを通知するメッセージであり、データを含まない。ハンドシェイクプロトコルのFinishedメッセージS26は、ハンドシェイクプロトコルの終了を通知するメッセージであり、ハンドシェイクメッセージやマスターシークレット等をハッシュ関数で演算した値を含む。
【0238】
なお、SSLクライアント41は、FinishedメッセージS26を含むChange Cipher SpecメッセージS25より後に送信するコネクションのレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのSSLクライアント41からSSLサーバ42への暗号化鍵で暗号化して、メッセージを送信することになる。
【0239】
暗号通信復号装置44は、レコード復号部56にClient Key ExchangeメッセージS24を含むレコードが入力されると、レコード処理を開始する。
【0240】
ステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLクライアント41からSSLサーバ42への暗号化状態を参照し、未だ有効ではないので、ステップST93に処理を進める。
【0241】
ステップST93においては、レコード解析部57によって、受信したレコードデータが、ハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルによって生成されたメッセージを受信しているので、ハンドシェイク解析部58にレコードデータを出力し、ステップST94に処理を進める。
【0242】
ステップST94においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Key ExchangeメッセージS24であるか否かを判定し、Client Key ExchangeメッセージS24なのでステップST100に処理を進める。
【0243】
ステップST100においては、ハンドシェイク解析部58によって、当該セッションのマスターシークレットを計算し、セッション情報保持部59に保存する。具体的には、公開鍵暗号処理部61によって、秘密鍵設定部62によって事前に設定されたサーバ秘密鍵で、Client Key ExchangeメッセージS24のデータを復号して乱数pre−master secretを取得し、ハンドシェイク解析部58によって、乱数pre−master secretと、コネクション情報保持部60に保持するクライアント乱数、及びサーバ乱数とから、マスターシークレットを生成する。
【0244】
ステップST101においては、ハンドシェイク解析部58によって、コネクションの鍵ブロックを生成する。具体的には、セッション情報保持部59に保持しているマスターシークレットと、コネクション情報保持部60に保持しているクライアント乱数、サーバ乱数とから鍵ブロックを生成する。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0245】
また、暗号通信復号装置44は、レコード復号部56に、暗号パラメータ切換プロトコルによって生成されたChange Cipher SpecメッセージS25を含むレコードが入力されると、再度レコード処理を開始する。
【0246】
先ずステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLクライアント41からSSLサーバ42への暗号化状態を参照し、未だ有効ではないので、ステップST93に処理を進める。
【0247】
ステップST93においては、レコード解析部57によって、受信したレコードデータが、ハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルにより生成されたメッセージを受信していないので、ステップST102に処理を進める。
【0248】
ステップST102においては、レコード解析部57によって、受信したレコードデータのメッセージタイプがChange Cipher Specプロトコルであるか否かを判定し、Change Cipher SpecメッセージS25を受信しているのでステップST103に処理を進める。
【0249】
ステップST103においては、ハンドシェイク解析部58によって、コネクション情報保持部60のSSLクライアント41からSSLサーバ42への暗号化状態を有効に変更する。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0250】
次に、暗号通信復号装置44は、レコード復号部56にFinishedメッセージS26を含むレコードデータが入力されると、再度レコード処理を開始する。
【0251】
先ずステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLクライアント41からSSLサーバ42への暗号化状態を参照し、前のChange Cipher SpecメッセージS25の受信時に行ったレコード処理で暗号化状態が有効とされているので、ステップST92に処理を進める。
【0252】
ステップST92においては、レコード復号部56によって、コネクション情報保持部60に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのSSLクライアント41からSSLサーバ42への暗号化鍵でレコードデータを復号して、レコード解析部57に出力する。
【0253】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルにより生成されたメッセージか否かを判定し、ハンドシェイクプロトコルで生成されたFinishedメッセージS26を受信しているので、ハンドシェイク解析部58にレコードデータを出力し、ステップST94に処理を進める。
【0254】
ステップST94においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップST95に処理を進める。
【0255】
ステップST95においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップST96に処理を進める。
【0256】
ステップST96においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理を終了する。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0257】
一方、SSLサーバ42は、SSLクライアント41から送信されたClient Key ExchangeメッセージS24を受信すると、当該Client Key ExchangeメッセージS24を含むデータを、サーバ秘密鍵で復号して乱数pre−master secretを取得し、乱数pre−master secretと、クライアント乱数と、送信したサーバ乱数とから、マスターシークレットを計算する。次に、SSLサーバ42は、計算したマスターシークレットと、クライアント乱数、及びサーバ乱数とから、鍵ブロックを生成する。
【0258】
次に、SSLサーバ42は、Change Cipher SpecメッセージS25を受信すると、それより後に受信するコネクションのレコードデータを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのSSLクライアント41からSSLサーバ42への暗号化鍵で復号することを認識する。
【0259】
次に、SSLサーバ42は、FinishedメッセージS26を受信すると、当該FinishedメッセージS26を含むレコードを復号し、データをSSLクライアント41と同様の方法で生成した値と比較して、改ざんやなりすましがないことを確認する。
【0260】
「第4処理」
次に、SSLサーバ42は、SSLクライアント41に、Change Cipher SpecプロトコルのChange Cipher SpecメッセージS27、及びハンドシェイクプロトコルのFinishedメッセージS28を送信する。このSSLサーバ42からSSLクライアント41に送信されるChange Cipher SpecメッセージS27は、SSLクライアント41から送信されたChange Cipher SpecメッセージS25に対する応答であって、データを含まない。また、ハンドシェイクプロトコルのFinishedメッセージS28は、ハンドシェイクメッセージやマスターシークレット等をハッシュ関数で演算した値を含む。なお、Change Cipher SpecメッセージS27より後のメッセージは、暗号スイートの暗号アルゴリズムによって、鍵ブロックのSSLサーバ42からSSLクライアント41への暗号化鍵で暗号化される。
【0261】
これに対し、暗号通信復号装置44は、Change Cipher SpecメッセージS27を受信すると、レコード復号部56にChange Cipher SpecメッセージS27を含むレコードデータを入力させ、レコード処理を開始する。
【0262】
先ず、ステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持されているSSLサーバ42からSSLクライアント41への暗号化状態を参照し、未だ有効ではないので、ステップST93に処理を進める。
【0263】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルによって生成されたメッセージではないので、ステップST102に処理を進める。
【0264】
ステップST102においては、レコード解析部57によって、受信したレコードデータのメッセージタイプが、Change Cipher Specプロトコルであるか否かを判定し、Change Cipher SpecS27を受信しているのでステップST103に処理を進める。
【0265】
ステップST103においては、ハンドシェイク解析部58によって、コネクション情報保持部60のSSLサーバ42からSSLクライアント41への暗号化状態を有効にさせる。その後、暗号通信復号装置44は、ステップST107において、ステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0266】
また、暗号通信復号装置44は、レコード復号部56にFinishedメッセージS28を含むレコードが入力されると、再度レコード処理を開始する。
【0267】
先ずステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLサーバ42からSSLクライアント41への暗号化状態を参照し、前のレコード処理において有効と設定されているので、ステップST92に処理を進める。
【0268】
ステップST92においては、レコード復号部56によって、コネクション情報保持部60に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのSSLサーバ42からSSLクライアント41への暗号化鍵でレコードデータを復号して、レコード解析部57に出力する。
【0269】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、FinishedメッセージS28がハンドシェイクプロトコルによって生成されたメッセージであるので、ハンドシェイク解析部58にレコードデータを出力し、ステップST94に処理を進める。
【0270】
ステップST94においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップST95に処理を進める。
【0271】
ステップST95においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップST96に処理を進める。
【0272】
ステップST96においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプがClient Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理を終了する。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0273】
一方、SSLクライアント41は、Change Cipher SpecメッセージS27を受信すると、それより後に受信する当該コネクションのレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのSSLサーバ42からSSLクライアント41への暗号化鍵で復号する。
【0274】
次に、SSLクライアント41は、FinishedメッセージS28を受信すると、レコードを復号し、データをSSLサーバ42と同様の方法で生成した値と比較して改ざんやなりすましがないことを確認する。
【0275】
これにより、SSLクライアント41とSSLサーバ42との間のハンドシェイクプロトコルが完了することになる。この時点では、SSLクライアント41、SSLサーバ42、暗号通信復号装置44とも同一の暗号化鍵の状態、すなわち同一の暗号化鍵を生成し、同一のデータ長の暗号処理をした状態となっている。
【0276】
「アプリケーションデータ処理」
上述したようにハンドシェイク処理が完了すると、SSLクライアント41とSSLサーバ42との間でアプリケーションデータの送受信が可能となる。すなわち、SSLクライアント41は、SSLサーバ42宛にアプリケーションデータを送信する場合は、アプリケーションデータをレコードに分割し、鍵ブロックのうちSSLクライアント41からSSLサーバ42への暗号化鍵によって暗号化してアプリケーションデータ(Application Data)プロトコルで送信する。
【0277】
これに対し、暗号通信復号装置44は、SSLにおけるアプリケーションデータプロトコルで生成されたレコードが入力されると、レコード処理を開始する。
【0278】
このレコード処理のステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLクライアント41からSSLサーバ42への暗号化状態を参照し、上述のハンドシェイク処理で有効に設定されているので、ステップST92に処理を進める。
【0279】
ステップST92においては、レコード復号部56によって、コネクション情報保持部60に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのSSLクライアント41からSSLサーバ42への暗号化鍵でレコードを復号して、レコード解析部57に出力する。
【0280】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルによって生成されたレコードではないので、ステップST102に処理を進める。
【0281】
ステップST102においては、レコード解析部57によって、受信したレコードデータのメッセージタイプが、Change Cipher Specメッセージであるか否かを判定し、受信したレコードがChange Cipher SpecメッセージではないのでステップST104に処理を進める。
【0282】
ステップST104においては、レコード解析部57によって、受信したレコードデータのメッセージタイプが、Application Dataプロトコルであるか否かを判定し、Application Dataプロトコルによって生成されたレコードを受信しているので、受信したレコードデータをパケット整形部63に出力して、ステップST105に処理を進める。
【0283】
ステップST105においては、パケット整形部63によって、受信したレコードデータの復号した部分を、HTTPパケットに整形して、通信インターフェース64からネットワーク監視装置4’’に出力させる。このとき、パケット整形部63は、図15に示すように、受信したレコードデータの復号した部分の先頭に、ステップST71で受信したIPパケットのIPヘッダ及びTCPヘッダを追加し、TCPヘッダの宛先ポートをHTTPを示すポート番号に設定し、TCPヘッダのシーケンス番号フィールド、ACK番号フィールド、チェックサムフィールド、及びIPヘッダの長さフィールド、チェックサムフィールドを再計算する。これにより、レコードを、HTTPパケットに整形する。また、パケット整形部63は、ネットワーク監視装置4’’がLANに対応している場合には、イーサヘッダの宛先をネットワーク監視装置4’’のアドレスにすることになる。
【0284】
次のステップST106においては、通信インターフェース64によって、パケット整形部63で整形されたHTTPパケットを、ネットワーク監視装置4’’に送信する。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0285】
これにより、ネットワーク監視装置4’’は、HTTPパケットを解析し、当該HTTPパケットの内容が不適当である場合には管理者に通知することが可能となる。
【0286】
また、SSLサーバ42が、SSLクライアント41に、アプリケーションデータを送信した場合、暗号通信復号装置44は、レコード復号部56にアプリケーションデータプロトコルによって生成されたレコードが入力されると、レコード処理を開始する。
【0287】
先ずステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLサーバ42からSSLクライアント41への暗号化状態を参照し、有効と設定されているので、ステップST92に処理を進める。
【0288】
ステップST92においては、レコード復号部56によって、コネクション情報保持部60に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのSSLサーバ42からSSLクライアント41への暗号化鍵でレコードを復号して、レコード解析部57に出力する。
【0289】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルで生成されたメッセージではないので、ステップST102に処理を進める。
【0290】
ステップST102においては、レコード解析部57によって、受信したレコードデータのメッセージタイプがChange Cipher Specプロトコルであるか否かを判定し、受信したメッセージがChange Cipher Specプロトコルで生成されたメッセージではないのでステップST104に処理を進める。
【0291】
ステップST104においては、レコード解析部57によって、受信したレコードデータのメッセージタイプが、アプリケーションデータであるか否かを判定し、アプリケーションデータプロトコルによって作成されたアプリケーションデータを受信しているので、受信したレコードデータをパケット整形部63に出力して、ステップST105に処理を進める。
【0292】
ステップST105においては、パケット整形部63によって、上述したステップST105の処理と同様の処理を行うことにより、受信したレコードデータのデータを、HTTPパケットとして整形する。そして、ステップST106においては、通信インターフェース64からHTTPパケットをネットワーク監視装置4’’に送信させる。その後、暗号通信復号装置44は、ステップST107において、今回のステップST74の判定で使用したレコード情報保持部55に記憶された蓄積データを削除して、処理を終了する。
【0293】
これにより、ネットワーク監視装置4’’は、HTTPパケットを解析し、当該HTTPパケットの内容が不適当である場合には管理者に通知することが可能となる。
【0294】
以上のように、暗号通信復号装置44は、SSLクライアント41とSSLサーバ42との間で送受信される暗号化されたSSLパケットを復号して整形することで、SSLパケットをHTTPパケットとしてネットワーク監視装置4’’に出力し、ネットワーク監視装置4’’による監視を可能にする。
【0295】
「セッションの再起動」
また、SSLプロトコルにおいては、コネクション構築時に既存のセッションを使用することができ、それ以前のコネクション構築時に生成したマスターシークレットを再利用して、セッションの再起動を行うことができる。つぎに、このようなSSLにおけるセッションの再起動を図19を参照して説明し、当該セッションの再起動時における暗号通信復号装置44の動作を説明する。
【0296】
先ず、セッションの再起動処理では、上述のSSLプロトコルにおける第1処理と同様に、SSLクライアント41からSSLサーバ42にClient HelloメッセージS21が送信され、暗号通信復号装置44によって第1処理と同様の処理が実行される。その後、セッションの再起動処理は、SSLサーバ42からSSLクライアント41に、Server HelloメッセージS22、Change Cipher SpecメッセージS31、FinishedメッセージS32が送信され、暗号通信復号装置44による第2処理が開始される。
【0297】
「第2処理」
SSLサーバ42は、SSLクライアント41からClient HelloメッセージS21を受信すると、SSLクライアント41に、ハンドシェイクプロトコルのServer HelloメッセージS22、Change Cipher SpecプロトコルのChange Cipher SpecメッセージS31、及びハンドシェイクプロトコルのFinishedメッセージS32を送信する。
【0298】
また、SSLサーバ42は、以前のコネクション構築時に生成したマスターシークレットと、SSLクライアント41から受信したクライアント乱数、及びSSLクライアント41に送信したサーバ乱数とから、鍵ブロックを生成する。
【0299】
これに対し、暗号通信復号装置44は、レコード復号部56にServer HelloメッセージS22を含むレコードが入力されると、レコード処理を開始する。
【0300】
このレコード処理は、先ずステップST91において、レコード復号部56によって、コネクション情報保持部60に保持するSSLサーバ42からSSLクライアント41への暗号化状態を参照し、未だに有効ではないので、ステップST93に処理を進める。
【0301】
ステップST93においては、レコード解析部57によって、受信したレコードがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルなので、ハンドシェイク解析部58にレコードを出力し、ステップST94に処理を進める。
【0302】
ステップST94においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージを示すものであるか否かを判定し、受信したメッセージがClient Key ExchangeメッセージではないのでステップST95に処理を進める。
【0303】
ステップST95においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージS22であるのでステップST98に処理を進める。
【0304】
ステップST98においては、ハンドシェイク解析部58によって、受信したレコードデータからサーバ乱数、セッションID、暗号スイートを取得し、サーバ乱数及び暗号スイートをコネクション情報保持部60に記憶させ、セッションIDをセッション情報保持部59に記憶させる。このとき、ハンドシェイク解析部58は、同じメッセージに付加されていたものとして対応付けるために、記憶したコネクション情報とセッション情報とをリンクさせて記憶させる。
【0305】
ステップST99においては、セッション情報保持部59に共通秘密鍵であるマスターシークレットが存在するか否かを判定し、存在するので、ステップST101に処理を進める。
【0306】
ステップST101においては、ハンドシェイク解析部58によって、コネクションにおける鍵ブロックを生成する。具体的には、セッション情報保持部59に保持しているマスターシークレットと、コネクション情報保持部60に保持しているクライアント乱数、サーバ乱数とから鍵ブロックを生成する。
【0307】
そして、暗号通信復号装置44は、Change Cipher SpecメッセージS31、FinishedメッセージS32を受信すると、上述した第4処理において、Change Cipher SpecメッセージS27、Server HelloメッセージS28を受信した場合と同様の処理を行う。
【0308】
これに対して、SSLクライアント41は、SSLサーバ42からServer HelloメッセージS22を受信すると、以前のコネクション構築時に生成したマスターシークレットと、クライアント乱数、及びサーバ乱数とから、鍵ブロックを生成する。
【0309】
また、SSLクライアント41は、Change Cipher SpecメッセージS31を受信すると、それより後に受信するコネクション処理のレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのSSLサーバ42からSSLクライアント41への暗号化鍵で復号する。
【0310】
更に、SSLクライアント41は、FinishedメッセージS32を受信すると、レコードを復号し、データをSSLサーバ42と同様の方法で生成した値と比較して、改ざんやなりすましがないことを確認する。
【0311】
「第3処理」
次に、SSLクライアント41は、SSLサーバ42に、Change Cipher SpecプロトコルのChange Cipher SpecメッセージS33、及びハンドシェイクプロトコルのFinishedメッセージS34を送信する。
【0312】
これに対し、暗号通信復号装置44は、レコード復号部56にChange Cipher SpecメッセージS33を含むレコードが入力されると、再度レコード処理を開始する。
【0313】
このレコード処理は、先ずステップST91において、レコード復号部56によって、コネクション情報保持部60に保持するSSLクライアント41からSSLサーバ42への暗号化状態を参照し、未だ有効ではないので、ステップST93に処理を進める。
【0314】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルではないので、ステップST102に処理を進める。
【0315】
ステップST102においては、レコード解析部57によって、受信したレコードデータのメッセージタイプがChange Cipher Specプロトコルであるか否かを判定し、Change Cipher SpecメッセージS33を受信しているのでステップST103に処理を進める。
【0316】
ステップST103においては、ハンドシェイク解析部58によって、コネクション情報保持部60のSSLクライアント41からSSLサーバ42への暗号化状態を有効にする。
【0317】
また、暗号通信復号装置44は、レコード復号部56にFinishedメッセージS34を含むレコードが入力されると、再度レコード処理を開始する。
【0318】
ステップST91においては、レコード復号部56によって、コネクション情報保持部60に保持するSSLクライアント41からSSLサーバ42への暗号化状態を参照し、有効となっているので、ステップST92に処理を進める。
【0319】
ステップST92においては、レコード復号部56によって、コネクション情報保持部60に保持する暗号スイートの暗号アルゴリズムと、鍵ブロックのSSLクライアント41からSSLサーバ42への暗号化鍵でレコードを復号して、レコード解析部57に出力する。
【0320】
ステップST93においては、レコード解析部57によって、受信したレコードデータがハンドシェイクプロトコルか否かを判定し、ハンドシェイクプロトコルにより生成されたメッセージであるので、ハンドシェイク解析部58にレコードを出力し、ステップST94に処理を進める。
【0321】
ステップST94においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Key Exchangeメッセージであるか否かを判定し、受信したメッセージがClient Key Exchangeメッセージではないので、ステップST95に処理を進める。
【0322】
ステップST95においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Server Helloメッセージであるか否かを判定し、受信したメッセージがServer HelloメッセージではないのでステップST96に処理を進める。
【0323】
ステップST96においては、ハンドシェイク解析部58によって、受信したレコードデータのメッセージタイプが、Client Helloメッセージであるか否かを判定し、受信したメッセージがClient Helloメッセージではないので処理を終了する。
【0324】
これに対し、SSLサーバ42は、Change Cipher SpecメッセージS33を受信すると、それより後に受信するコネクション処理についてのレコードを、暗号スイートの暗号アルゴリズムによって、鍵ブロックのSSLクライアント41からSSLサーバ42への暗号化鍵で復号する。
【0325】
次に、SSLサーバ42は、FinishedメッセージS34を受信すると、レコードを復号し、データをSSLクライアント41と同様の方法で生成した値と比較して、改ざんやなりすましがないことを確認する。これにより、セッションの再起動処理が終了し、アプリケーション処理を行うことが可能な状態になり、暗号通信復号装置44及びネットワーク監視装置4’’によってSSLパケットによる通信内容の監視も開始されることになる。
【0326】
[第3実施形態の効果]
以上詳細に説明したように、本発明を適用した通信システムによれば、SSLクライアント41とSSLサーバ42との間のハンドシェイク処理によって送受信されるメッセージを、ハブ43を介して暗号通信復号装置44で傍受して、暗号通信復号装置44に、SSLクライアント41からSSLサーバ42に送信されるSSLパケットの暗号化鍵及びSSLサーバ42からSSLクライアント41に送信されるSSLパケットの暗号化鍵を記憶させることができる。そして、暗号通信復号装置44では、当該双方の暗号化鍵を用いて、SSLクライアント41とSSLサーバ42との間で行われるアプリケーション処理で送受信されるSSLパケットの復号及び整形が可能となる。したがって、この通信システムによれば、既存のネットワーク監視装置4’’によってSSLパケットによる通信内容の監視及び制御を可能とすることができる。
【0327】
なお、上述の実施の形態は本発明の一例である。このため、本発明は、上述の実施形態に限定されることはなく、この実施の形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【0328】
【図1】本発明を適用した第1実施形態における通信システムの構成を示すブロック図である。
【図2】本発明を適用した第1実施形態における暗号通信復号装置の構成を示すブロック図である。
【図3】本発明を適用した第1実施形態における全体処理を示すフローチャートである。
【図4】本発明を適用した第1実施形態に係る通信システムの暗号通信復号装置で行うIKE処理の処理手順を示すフローチャートである。
【図5】本発明を適用した第1実施形態に係る通信システムの暗号通信復号装置で行うESP処理の処理手順を示すフローチャートである。
【図6】本発明を適用した第1実施形態に係る通信システムにおけるIKE処理でイニシエータ、暗号通信復号装置、レスポンダの間で送受信されるメッセージの流れ図である。
【図7】本発明を適用した第1実施形態において、暗号通信復号装置によってパケットを整形する処理を説明するための概要図であり、(a)は受信したパケットがESPにおけるトランスポートモードで作成されている時の処理を説明する図であり、(b)は受信したパケットがESPにおけるトンネルモードで作成されている時の処理を説明する図である。
【図8】本発明を適用した第2実施形態における通信システムの構成を示すブロック図である。
【図9】本発明を適用した第2実施形態における暗号通信復号装置の構成を示すブロック図である。
【図10】本発明を適用した第2実施形態における全体処理を示すフローチャートである。
【図11】本発明を適用した第2実施形態に係る通信システムの暗号通信復号装置で行うESP処理の処理手順を示すフローチャートである。
【図12】本発明を適用した第2実施形態に係る通信システムの暗号通信復号装置で行う平文処理の処理手順を示すフローチャートである。
【図13】本発明を適用した第3実施形態における通信システムの構成を示すブロック図である。
【図14】本発明を適用した第3実施形態における暗号通信復号装置の構成を示すブロック図である。
【図15】本発明を適用した第3実施形態において、暗号通信復号装置によってパケットを整形する処理を説明するための概要図である。
【図16】本発明を適用した第3実施形態における全体処理を示すフローチャートである。
【図17】本発明を適用した第3実施形態に係る通信システムにおける暗号通信復号装置で行うレコード処理の処理手順を示すフローチャートである。
【図18】本発明を適用した第3実施形態に係る通信システムにおけるハンドシェイク処理でSSLクライアントとSSLサーバとの間で送受信されるメッセージの流れ図である。
【図19】本発明を適用した第3実施形態に係る通信システムにおけるセッションの再起動処理でSSLクライアントとSSLサーバとの間で送受信されるメッセージの流れ図である。
【符号の説明】
【0329】
1,2 VPN端末
3,3’,44 暗号通信復号装置
4,4’,4’’ ネットワーク監視装置
11,12,13,31,51,64 通信インターフェース
13 セッション鍵出力部
14 事前共有鍵保持部
15 パケット復号部
16 パケット読取部
17 パケット生成部
18 セッション情報保持部
19 公開鍵保持部
20 鍵共有データ保持部
21 セッション鍵生成部
22 公開鍵生成部
23 秘密鍵生成部
24 共通秘密鍵生成部
25 秘密鍵保持部
26 セッション鍵保持部(記憶手段)
27 パケット暗号化部
41 SSLクライアント
42 SSLサーバ
43 ハブ
52 フィルタ部
53 フィルタ設定部
54 レコード再構成部
55 レコード情報保持部
56 レコード復号部(復号手段)
57 レコード解析部
58 ハンドシェイク解析部
59 セッション情報保持部
60 コネクション情報保持部
61 公開鍵暗号処理部
62 秘密鍵設定部
63 パケット整形部

【特許請求の範囲】
【請求項1】
第1の通信装置と第2の通信装置との間に設けられ、前記第1の通信装置と前記第2の通信装置との間で暗号化したパケットを送受信し、当該送受信されるパケットの通信内容を監視装置に監視させる通信システムの暗号通信復号装置であって、
前記第1の通信装置から送信されたパケットを復号すると共に前記第1の通信装置宛のパケットを暗号化する第1の鍵情報と、前記第2の通信装置から送信されたパケットを復号すると共に前記第2の通信装置宛のパケットを暗号化する第2の鍵情報と、当該第1の鍵情報又は第2の鍵情報を用いた暗号化アルゴリズムとを記憶する記憶手段と、
前記第1の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第1の鍵情報を用いて復号し、当該復号したパケットを第2の鍵情報を用いて暗号化して前記第2の通信装置に送信し、前記第2の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第2の鍵情報を用いて復号し、当該復号したパケットを第1の鍵情報を用いて暗号化して前記第1の通信装置に送信する中継手段と、
前記中継手段によって復号されたパケットを、前記監視装置で処理可能な形態に整形して前記監視装置に出力して、前記監視装置に通信内容を監視させる出力手段と
を備えることを特徴とする暗号通信復号装置。
【請求項2】
前記出力手段は、前記中継手段で復号されたパケットの宛先を前記監視装置のアドレスに設定し、前記中継手段で復号されたパケットに付加されているヘッダ及びトレーラのうち暗号化及び復号に必要なヘッダ及びトレーラを取り外し、当該取り外したヘッダ又はトレーラに含まれていた次ヘッダプロトコル情報を、前記中継手段で復号されたパケットの先頭に付加されるヘッダの次ヘッダプロトコル情報に変更することにより、前記中継手段で復号されたパケットを、前記監視装置で処理可能な形態に整形することを特徴とする請求項1に記載の暗号通信復号装置。
【請求項3】
前記中継手段により復号したパケットを、暗号化する前に行う処理の処理情報を入力する入力手段を更に備え、
前記中継手段は、前記中継手段で復号したパケットを前記第1の鍵情報又は前記第2の鍵情報を用いて暗号化する前に、前記入力手段で入力した処理情報に基づいた処理を行い、当該処理が施されたパケットを暗号化して、前記第1の通信装置又は前記第2の通信装置に送信すること
を特徴とする請求項1に記載の暗号通信復号装置。
【請求項4】
前記第1の通信装置と前記第2の通信装置とのうち、一方の通信装置が始動側の通信装置となり、他方の通信装置が応答側の通信装置となり、前記記憶手段に記憶させる第1の鍵情報及び第2の鍵情報を生成する鍵生成手段を更に備え、
前記鍵生成手段は、
前記始動側の通信装置及び前記応答側の通信装置で事前に合意した任意の値を記憶する鍵共有データ保持手段と、乱数を発生させて秘密鍵を生成する秘密鍵生成手段と、前記秘密鍵生成手段により生成された秘密鍵と、前記鍵共有データ保持手段に記憶された値とを用いて、公開鍵を生成する公開鍵生成手段と、前記始動側の通信装置又は応答側の通信装置から受信した公開鍵、前記秘密鍵生成手段により生成された秘密鍵並びに前記鍵共有データ保持手段に記憶された値を用いて、共通秘密鍵を生成する共通秘密鍵生成手段とを備え、
前記始動側の通信装置と応答側の通信装置との間で鍵交換がなされる際に、
前記秘密鍵生成手段により、前記応答側の通信装置の代わりに始動側秘密鍵を生成すると共に、前記始動側の通信装置の代わりに応答側秘密鍵を生成し、
前記公開鍵生成手段により、前記応答側の通信装置の代わりに前記始動側秘密鍵から始動側公開鍵を生成すると共に、前記始動側の通信装置の代わりに前記応答側秘密鍵から応答側公開鍵を生成し、
前記応答側の通信装置の公開鍵に等しい前記始動側公開鍵を当該始動側の通信装置に送信すると共に、前記始動側の通信装置の公開鍵に等しい前記応答側公開鍵を当該応答側の通信装置に送信し、
前記秘密鍵生成手段により生成した始動側秘密鍵及び前記応答側の通信装置から受信した当該通信装置の公開鍵を用いて、応答側の共通秘密鍵を生成すると共に、前記秘密鍵生成手段により生成した応答側秘密鍵及び前記始動側の通信装置から受信した当該通信装置の公開鍵を用いて始動側の共通秘密鍵を生成し、
前記応答側の共通秘密鍵を前記第1の鍵情報及び前記第2の鍵情報の一方として前記記憶手段に記憶させ、前記始動側の共通秘密鍵を前記第1の鍵情報及び前記第2の鍵情報の他方として前記記憶手段に記憶させること
を特徴とする請求項1に記載の暗号通信復号装置。
【請求項5】
前記中継手段は、前記出力手段から出力され前記監視装置によって適当なパケットであるとの監視結果を受信した場合には、前記出力手段から前記監視装置に出力させるために復号したパケットを暗号化して中継し、前記出力手段から出力され前記監視装置によって不適当なパケットであるとの監視結果を受信した場合には、前記出力手段から前記監視装置に出力させるために復号したパケットの中継を停止することを特徴とする請求項1に記載の暗号通信復号装置。
【請求項6】
前記中継手段は、前記出力手段から出力され前記監視装置によって任意の処理を加えられたパケットを受信した場合には、そのパケットを暗号化して中継することを特徴とする請求項1に記載の暗号通信復号装置。
【請求項7】
第1の通信装置と第2の通信装置との間で暗号化されて送受信されているパケットを、前記第1の通信装置と前記第2の通信装置との通信経路上に設けられている中継装置を介して傍受し、当該パケットの通信内容を監視装置に監視させる通信システムの暗号通信復号装置であって、
前記第1の通信装置から前記第2の通信装置に送信されるパケットを復号する第1の鍵情報と、前記第2の通信装置から前記第1の通信装置に送信されるパケットを復号する第2の鍵情報と、当該第1の鍵情報又は第2の鍵情報を用いた暗号化アルゴリズムとを記憶する記憶手段と、
前記第1の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第1の鍵情報を用いて復号し、前記第2の通信装置からパケットを受信した場合に、前記暗号化アルゴリズムに従って、当該パケットを第2の鍵情報を用いて復号する復号手段と、
前記復号手段によって復号されたパケットを、前記監視装置で処理可能な形態に整形して前記監視装置に出力して、前記監視装置に通信内容を監視させる出力手段と
を備えることを特徴とする暗号通信復号装置。
【請求項8】
前記出力手段は、前記復号手段で復号されたパケットのデータを、前記監視装置が処理可能なデータ長に調整し、当該調整した各データに、当該データのプロトコル情報とパケットの宛先である前記監視装置のアドレスとを含むヘッダを付加したパケットを作成することにより、前記復号手段で復号されたパケットを、前記監視装置で処理可能な形態に整形することを特徴とする請求項7に記載の暗号通信復号装置。
【請求項9】
前記第1の鍵情報又は前記第2の鍵情報を生成するための前記第1の通信装置又は前記第2の通信装置の秘密鍵を設定する秘密鍵設定手段と、
前記第1の通信装置と前記第2の通信装置との間で行われている前記第1の鍵情報及び前記第2の鍵情報と前記暗号化アルゴリズムとを折衝して決定するためのパケットを傍受し、当該傍受したパケットと前記秘密鍵とに基づいて、前記記憶手段に記憶される第1の鍵情報及び第2の鍵情報と暗号化アルゴリズムとを生成する鍵生成手段を更に備えることを特徴とする請求項7に記載の暗号通信復号装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2006−279938(P2006−279938A)
【公開日】平成18年10月12日(2006.10.12)
【国際特許分類】
【出願番号】特願2006−44398(P2006−44398)
【出願日】平成18年2月21日(2006.2.21)
【出願人】(000005832)松下電工株式会社 (17,916)
【Fターム(参考)】