(57)【要約】【課題】秘匿性の高い複数のプライベートネットワーク間の通信を中継する中継サーバの処理負荷を低減する。【解決手段】本発明による通信システムは、異なるプライベートネットワークに接続される複数のクライアント端末１１、２１間におけるデータの送受信を、グローバルネットワークに接続される中継サーバ３１との間に構築した暗号化セッション利用コネクション１３、２３を介して実行する。ここで送受信されるデータ通信用メッセージ１０４は、クライアント端末間で共通のクライアント共有鍵１０１を用いて暗号化されたデータ２０２が挿入された暗号化データフィールド１０７と、中継サーバに通知された情報を含む暗号化セッションヘッダを含む非暗号化データフィールド１０８とを有する。【選択図】図１
2008166894.tif 000002
【特許請求の範囲】
【請求項１】
中継サーバとの間で暗号化セッション構築メッセージを送受信することによって、前記中継サーバとの間に暗号化セッション利用コネクションを構築し、暗号化セッションヘッダに含めるヘッダ情報を前記中継サーバに通知する暗号化セッション構築部と、
他のクライアント端末と共通のクライアント共有鍵を保持する共有鍵管理部と、
前記クライアント共有鍵を用いてデータの暗号化及び／又は前記データのＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の計算を行い、クライアント暗号化データとして出力するデータ暗号化部と、
前記クライアント暗号化データを挿入した暗号化データフィールドと、前記ヘッダ情報を含む暗号化セッションヘッダが挿入された非暗号化データフィールドとを含むデータ通信用メッセージを作成するデータ通信用メッセージ作成部と、
前記他のクライアント端末宛の前記データ通信用メッセージを、前記暗号化セッション利用コネクションを利用して前記中継サーバに転送する送信部と
を具備するクライアント端末。
【請求項２】
請求項１に記載のクライアント端末において、
前記共有鍵管理部は、前記他のクライアント端末宛てにクライアント共有鍵の交換を開始するための暗号化セッション構築メッセージを作成し、
前記データ通信用メッセージ作成部は、前記クライアント共有鍵の交換を開始するための暗号化セッション構築メッセージを前記暗号化データフィールドに挿入して前記データ通信メッセージを作成する
クライアント端末。
【請求項３】
請求項１又は２に記載のクライアント端末において、
前記データ通信用メッセージ作成部は、前記暗号化データフィールドに挿入するデータのデータサイズ値を、前記暗号化データフィールドに挿入して前記データ通信メッセージを作成する
クライアント端末。
【請求項４】
請求項１から３いずれか１項に記載のクライアント端末において、
前記データ通信用メッセージ作成部は、前記データ通信用メッセージの宛先である他のクライアント端末に割り当てられた端末ＩＤを、宛先端末ＩＤとして前記暗号化データフィールドに、前記中継サーバが読み取り可能な形式で挿入して前記データ通信メッセージを作成する
クライアント端末。
【請求項５】
請求項４に記載のクライアント端末において、
自端末の端末ＩＤを送信元ＩＤとして、
前記データ暗号化部は、前記共有鍵管理部が管理するクライアント共有鍵のうち前記宛先端末ＩＤに対応するクライアント共有鍵を利用してデータの暗号化及び／又はデータのＭＡＣの計算を行い、
前記データ通信用メッセージ作成部は、自端末の端末ＩＤを送信元端末ＩＤとして前記暗号化データフィールドに挿入して前記データ通信メッセージを作成する
クライアント端末。
【請求項６】
請求項４又は５に記載のクライアント端末において、
前記共有鍵管理部は、複数のクライアント端末と共通のグループ鍵を保持し、
前記データ暗号化部は、前記グループ鍵を利用してデータの暗号化及び／又はデータのＭＡＣの計算を行い、
前記データ通信用メッセージ作成部は、前記データ通信用メッセージの宛先である前記複数のクライアント端末に割り当てられた複数の端末ＩＤを、複数の宛先端末ＩＤとして複数のデータ通信メッセージの暗号化データフィールドに挿入し、
前記転送部は、前記複数のクライアント端末宛の前記複数のデータ通信用メッセージを、前記暗号化セッション利用コネクションを利用して前記中継サーバに転送する
クライアント端末。
【請求項７】
請求項４又は５に記載のクライアント端末において、
前記共有鍵管理部は、複数のクライアント端末と共通のグループ鍵を保持し、
前記データ暗号化部は、前記グループ鍵を利用してデータの暗号化及び／又はデータのＭＡＣの計算を行い、
前記データ通信用メッセージ作成部は、前記データ通信用メッセージの宛先である前記複数のクライアント端末に割り当てられた１つのグループ端末ＩＤを、宛先端末ＩＤとして暗号化データフィールドに挿入したデータ通信メッセージを作成し、
前記転送部は、前記複数のクライアント端末宛の前記データ通信用メッセージを、前記暗号化セッション利用コネクションを利用して前記中継サーバに転送する
クライアント端末。
【請求項８】
請求項１から３いずれか１項に記載のクライアント端末において、
前記暗号化セッション構築部は前記中継サーバとの間に、通信相手となる他のクライアント端末毎に異なる暗号化利用コネクションを複数構築し、
前記データ通信用メッセージ送信部は、前記他のクライアント端末宛の前記データ通信用メッセージを、前記他のクライアント端末に対応する暗号化セッション利用コネクションを利用して中継サーバへ送信する
クライアント端末。
【請求項９】
請求項１から８いずれか１項に記載のクライアント端末において、
前記暗号化セッション構築部は、前記中継サーバと前記暗号化セッション利用コネクションを構築する際、セッション鍵を前記中継サーバと交換し、
前記データ通信用メッセージ作成部は、前記セッション鍵を用いて暗号化され、且つ／又はＭＡＣが計算されたデータを挿入した暗号化データフィールドを含むデータ通信用メッセージを作成する
クライアント端末。
【請求項１０】
請求項１から８いずれか１項に記載のクライアント端末において、
前記暗号化セッション構築部は、前記中継サーバと前記暗号化セッション利用コネクションを構築する際、セッション鍵を前記中継サーバと交換し、
前記データ通信用メッセージ作成部は、前記セッション鍵を利用して、データ通信用メッセージに含めるデータのＭＡＣを計算し、計算結果を前記暗号化データフィールドに挿入して前記データ通信用メッセージを作成する
クライアント端末。
【請求項１１】
請求項１から１０いずれか１項に記載のクライアント端末において、
他のクライアント端末から、前記中継サーバを介して送信されたデータ通信用メッセージを受信する受信部と、
前記受信部で受信したデータ通信用メッセージの暗号化データフィールドから、送信元のクライアント端末と共通のクライアント端末鍵を用いて復号化及び／又はＭＡＣの計算が可能なデータを抽出するデータ通信用メッセージ解析部と、
前記データ通信用メッセージ解析部で抽出されたデータの復号化及び／又は抽出されたデータのＭＡＣの計算を行うデータ復号化部と
を更に具備するクライアント端末。
【請求項１２】
請求項１１に記載のクライアント端末において、
前記中継サーバから受信したデータ通信用メッセージの暗号化データフィールドに、前記送信元のクライアント端末が送信した暗号化セッション構築メッセージが含まれている場合、前記データ通信用メッセージ解析部は、前記暗号化セッション構築メッセージを前記共有鍵管理部に転送し、
前記共有鍵管理部は、前記データ通信用メッセージ解析部から転送された暗号化セッション構築メッセージに対応する暗号化セッション構築メッセージに基づき、前記送信元のクライアント端末と共通のクライアント共有鍵を取得する
クライアント端末。
【請求項１３】
請求項１２に記載のクライアント端末において、
前記データ通信用メッセージ解析部は、受信したデータ通信用メッセージの暗号化データフィールドに含まれる送信元端末ＩＤを抽出し、
前記データ復号化部は、前記共有鍵管理部が管理するクライアント共有鍵のうち、前記データ通信用メッセージ解析部で抽出された送信元端末ＩＤに対応するクライアント共有鍵１０１を利用して、前記データ通信用メッセージ解析部で抽出されたデータの復号化及び／又は抽出されたデータのＭＡＣの計算を行う
クライアント端末。
【請求項１４】
請求項１２に記載のクライアント端末において、
前記データ通信用メッセージ解析部は、受信したデータ通信用メッセージに応じて同報通信であることを前記データ復号化部に通知し、
同報通信であることを通知された前記データ復号化部は、前記共有鍵管理部が管理するクライアント共有鍵のうち、送信元の複数のクライアントサーバと共通のグループ鍵を利用して、前記データ通信用メッセージ解析部で抽出されたデータの復号化及び／又は抽出されたデータのＭＡＣの計算を行う
クライアント端末。
【請求項１５】
請求項１１から１４いずれか１項に記載のクライアントサーバにおいて、
前記データ通信用メッセージ解析部は、前記中継サーバから受信したデータ通信用メッセージに含まれるＭＡＣと、前記暗号化セッション利用コネクションの構築時に前記中継サーバから取得したセッション鍵を用いて計算した、前記データ通信用メッセージに含まれるデータのＭＡＣとを比較して、前記データ通信用メッセージの認証を行う
クライアント端末。
【請求項１６】
複数のクライアント端末の間で行われる通信を中継する中継サーバであって、
前記複数のクライアント端末のそれぞれとの間で暗号化セッション構築メッセージを送受信することによって、それぞれと個別の暗号化セッション利用コネクションを構築し、前記複数のクライアント端末のそれぞれから、暗号化セッションヘッダに含めるヘッダ情報を取得する暗号化セッション構築部と、
前記暗号化セッション利用コネクションを利用して、前記複数のクライアント端末のそれぞれとの間においてデータ通信用メッセージを送受信するデータ通信用メッセージ転送部と
を具備し、
前記データ通信用メッセージは、前記複数のクライアント端末との間で共有するクライアント共有鍵によって暗号化されたクライアント暗号化データが挿入された暗号化データフィールドと、前記ヘッダ情報を含む暗号化セッションヘッダが挿入された非暗号化データフィールドとを含み、
前記データ通信用メッセージ転送部は、前記複数のクライアント端末のいずれかから転送されたデータ通信用メッセージの非暗号化データフィールドに含まれる暗号化セッションヘッダを、前記データ通信用メッセージの転送先となるクライアント端末に対応する暗号化セッションヘッダに変換し、暗号化セッションヘッダを変換した前記データ通信用メッセージを、転送先のクライアント端末に転送する
中継サーバ。
【請求項１７】
請求項１６に記載の中継サーバにおいて、
前記暗号化セッション構築部は、前記複数のクライアント端末のそれぞれから通知された端末ＩＤと前記暗号化セッション利用コネクションとの対応関係を前記データ通信用メッセージ転送部に通知し、
前記データ通信用メッセージ転送部は、前記対応関係に従い、前記データ通信用メッセージの暗号化データフィールドに含まれる宛先端末ＩＤと同じ端末ＩＤに対応する暗号化セッション利用コネクションを、前記データ通信用メッセージの転送に利用する
中継サーバ。
【請求項１８】
請求項１６又は１７に記載の中継サーバにおいて、
前記暗号化セッション構築部は、前記暗号化セッション利用コネクションを構築する際、個別のセッション鍵を前記複数のクライアント端末のそれぞれと交換し、
前記データ通信用メッセージ転送部は、前記クライアント端末から受信したデータ通信用メッセージの暗号化データフィールドの一部に対し、受信したデータ通信用メッセージの送信元クライアント端末と前記暗号化セッション構築部が交換したセッション鍵によって復号化及び／又はＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の計算が可能な場合、前記セッション鍵によって復号化及び／又はＭＡＣの計算を行い、復号化結果及び／又はＭＡＣを前記データ通信用メッセージの前記暗号化データフィールドに挿入して転送先クライアント端末に転送する
中継サーバ。
【請求項１９】
請求項１６又は１７に記載の中継サーバにおいて、
前記暗号化セッション構築部は、前記暗号化セッション利用コネクションを構築する際、個別のセッション鍵を前記複数のクライアント端末のそれぞれと交換し、
前記データ通信用メッセージ転送部は、受信したデータ通信用メッセージに含まれるＭＡＣと、前記データ通信用メッセージに含まれるデータに対して、前記データ通信用メッセージの送信元のクライアント端末と交換したセッション鍵を利用して計算したＭＡＣとを比較することでメッセージ認証を行う
中継サーバ。
【請求項２０】
請求項１から１５のいずれか１項に記載のクライアント端末と、
請求項１６から１９いずれか１項に記載の中継サーバと、
前記クライアント端末に接続されたプライベートネットワークと、
前記中継サーバに接続されたグローバルネットワークと、
前記プライベートネットワークと前記グローバルネットワークとの間に設けられ、前記暗号化セッション利用コネクションを監視するファイアウォールと、
を具備する
通信システム。
【請求項２１】
異なるプライベートネットワークに接続される複数のクライアント端末間におけるデータの送受信を、グローバルネットワークに接続される中継サーバを介して実行する通信方法であって、
前記複数のクライアント端末は共通のクライアント共有鍵を保持し、
前記複数のクライアント端末のそれぞれが、前記中継サーバとの間に暗号化セッション利用コネクションを構築するステップと、
前記クライアント端末が、前記中継サーバに暗号化セッションヘッダに含めるヘッダ情報を通知するステップと、
前記クライアント端末が、前記クライアント共有鍵を用いてデータを暗号化してクライアント暗号化データを生成するステップと、
前記クライアント端末が、前記クライアント暗号化データを挿入した暗号化データフィールドと、前記ヘッダ情報を含む暗号化セッションヘッダが挿入された非暗号化データフィールドとを含むデータ通信用メッセージを作成するステップと、
前記クライアント端末が、前記中継サーバに前記データ通信用メッセージを送信するステップと、
前記中継サーバが、前記データ通信用メッセージの宛先のクライアント端末に対応するヘッダ情報に基づき、前記暗号化セッションヘッダの内容を変更するステップと、
前記中継サーバが、前記ヘッダ情報を変更したデータ通信用メッセージを、前記宛先のクライアント端末との間に構築した暗号化セッション利用コネクションを介して送信するステップと、
を具備する
通信方法。
【請求項２２】
請求項２１に記載の通信方法において、
クライアント端末が、受信したデータ通信用メッセージの暗号化データフィールドに含まれる前記クライアントデータを、前記クライアント共有鍵を用いて復号化し、前記データを取得するステップを更に備える
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継サーバを介して通信を行う通信システムに関し、特に異なるプライベートネットワークに接続したクライアント端末間の通信を、グローバルネットワークに接続した中継サーバが中継する通信システムに関する。
【背景技術】
【０００２】
近年企業や部門をまたがったコラボレーションが活発化するなど業務形態が多様化しており、異なる企業ＬＡＮや部門ＬＡＮに接続している端末同士の通信へのニーズが急速に高まっている。すなわち、異なるプライベートネットワークに接続している端末間における通信に対する要求が高まっている。こうした背景から近年異なるプライベートネットワークに接続する端末同士の通信を可能にする方式が提案されている。従来技術ではグローバルネットワークに設置された中継サーバを介することによって、異なるプライベートネットワークに接続している端末同士の通信を実現している。しかし、プライベートネットワークには通常ファイアウォールが設置されている。このため、異なるプライベートネットワークに接続している端末間の通信は、ファイアウォールによって遮断されることが多い。
【０００３】
通常、ファイアウォールはプライベートネットワークからグローバルネットワークへの特定のＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）通信は許可する設定がなされている。ここでＴＣＰ通信とは、例えばＷｅｂ閲覧用通信に用いられる宛先ポート８０番のＴＣＰ通信（すなわちＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）通信）や宛先ポート４４３番のＴＣＰ通信（すなわちＨＴＴＰＳ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）通信）等である。従来技術では先ず、プライベートネットワーク上の端末からＴＣＰコネクションを中継サーバに対して構築し、端末と中継サーバの間で双方向の通信が行える状態にする。その後、端末は通信相手の端末に渡したいデータを中継サーバとの間に構築したＴＣＰコネクションを利用して送信する。中継サーバは受信したデータを通信相手端末との間に構築したＴＣＰコネクションに対して送信する。
【０００４】
上記のような異プライベートネットワーク間の通信を実現するに当たり、中継サーバは、端末と中継サーバとの間の通信セキュリティを確保しなければならない。中継サーバはグローバルネットワーク上に設置されているため、端末同士の通信もグローバルネットワークを経由することになる。グローバルネットワークはプライベートネットワークとは異なり、常に盗聴などのセキュリティリスクにさらされているため、端末と中継サーバの間の通信を暗号化する必要がある。
【０００５】
従来技術では、端末と中継サーバの間の通信暗号化を実現する技術として主に２つの異なる技術がある。
【０００６】
第１の従来技術では、端末と中継サーバとの間でＨＴＴＰＳセッションが構築され、端末−中継サーバ間の通信をＨＴＴＰＳセッション上で行うことで通信の暗号化が行われる。具体的には先ず、端末と中継サーバの間で構築されたＴＣＰコネクションを利用して端末と中継サーバの間でＳＳＬ（Ｓｅｃｕｒｉｔｙ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）による共有鍵の交換を行う。端末は通信相手に届けたいデータを中継サーバと交換した共有鍵によって暗号化する。中継サーバは受信した暗号化データを共有鍵によって復号化し、通信相手となる端末との間でＨＴＴＰＳセッションを構築した際に交換した別の共有鍵を利用して再度暗号化して通信相手となる端末へ転送する。このような第１の従来技術の一例として、ＳｏｆｔＥｔｈｅｒ（登録商標）が挙げられる。
【０００７】
第１の従来技術による中継サーバは、端末から受信したデータの内部に記載された転送先情報を基に転送先を判断する。尚、上記のように端末から受信したデータは何らかの形で暗号化されているため、中継サーバでは受信データ内容を参照するために、データの復号化（更に再暗号化）を行う必要がある。例えばＳｏｆｔＥｔｈｅｒ（登録商標）では、端末は通信相手に送信したいデータをレイヤ２のヘッダ情報まで含むパケットの形でＨＴＴＰＳでカプセル化し、予め中継サーバとの間で構築したＨＴＴＰＳコネクションを利用してカプセル化データを送信する。この際、中継サーバは、受信したデータのデカプセル化を行う。受信データはＨＴＴＰＳでカプセル化されているため、デカプセル化処理には暗号化されたデータの復号化処理が含まれる。次に、中継サーバは、デカプセル化により取り出したデータ、すなわちレイヤ２のヘッダ情報まで含むパケットのレイヤ２ヘッダを参照し、宛先ＭＡＣアドレスから転送先の端末を判断する。判断後、中継サーバは、取り出したデータを再度ＨＴＴＰＳでカプセル化し（すなわち復号化されたデータを再度暗号化する）、転送先端末との間で構築したＨＴＴＰＳコネクションを利用して転送する。
【０００８】
第２の従来技術では、端末−中継サーバ間で構築されたＴＣＰコネクションを利用し、通信を行う端末同士が直接ＨＴＴＰＳセッションを構築する。端末は先ず、宛先ポート番号４４３番のＴＣＰコネクションを中継サーバとの間で構築する。その後、このＴＣＰコネクションを利用してＳＳＬを利用した共有鍵の交換を通信相手の端末と行う。中継サーバは端末からＳＳＬの共有鍵交換メッセージを受信しても、その内容は吟味せず単に受信したメッセージを通信相手の端末との間で構築したＴＣＰコネクションを利用して転送するだけである。端末は通信相手に届けたいデータを通信相手と交換した共有鍵によって暗号化し、中継サーバとの間で構築したＴＣＰコネクションを利用して送信する。中継サーバは受信したデータの復号化や再暗号化は行わず、そのまま通信相手となる端末との間で構築したＴＣＰコネクションに転送する。このような第２の従来技術の一例として特開２００６−５０１９１号公報（特許文献１参照）が挙げられる。又、こうした中継サーバの動作は従来からよく用いられているＷｅｂ  Ｐｒｏｘｙサーバと同様の動作である。
【０００９】
第２の従来技術による中継サーバは、端末が中継サーバとの間で確立したＴＣＰコネクションと、通信先の端末とを対応付けた情報に基づいて、コネクションベースで受信データの転送先端末を判断する。このような第２の従来技術の一例として、特開２００６−５０１９１号公報（特許文献１参照）、特許第３６３７８６３号（特許文献２参照）、特開２００３−３２２３６号公報（特許文献３参照）が挙げられる。
【００１０】
第１の従来技術と第２の従来技術との違いは、第１の従来技術による中継サーバは、ＨＴＴＰＳセッションの終端を行う（端末間の通信の復号化や暗号化を行う）のに対して、第２の従来技術による中継サーバは、ＴＣＰコネクションの終端のみを行い、ＨＴＴＰＳセッションは終端しない（端末間の通信の復号化や暗号化は行わない）という点である。
【００１１】
第１の従来技術では、中継サーバが転送を行う際に受信データの復号化、再暗号化を行わなければならず、転送を行う度に復号化・暗号化処理の負荷がかかるという課題がある。
【００１２】
第２の従来技術による中継サーバでは、暗号化や符号化処理が省略されるため処理負荷は第１の従来技術に比べて軽減される。しかし、転送データのレイヤ５以上の内容まで吟味してフィルタリングを行う高機能ファイアウォールが設置されたプライベートネットワークからは、中継サーバを介した通信を利用できないという課題がある。プライベートネットワークに高機能ファイアウォールが設置されている場合、端末から中継サーバへ宛先ポート４４３番のＴＣＰコネクションを構築するまでの通信についてはファイアウォールに遮断されることはないが、中継サーバから端末へ転送される共有鍵交換のためのＳＳＬメッセージがファイアウォールに遮断される可能性がある。
【００１３】
以下、第２の従来技術の問題点を具体的に説明する。ＳＳＬメッセージにはＳＳＬ  Ｒｅｃｏｒｄ  Ｈｅａｄｅｒというフィールドがあり、この部分にメッセージ種別を記載することになっている。メッセージ種別にはＨａｎｄｓｈａｋｅ、Ｃｈａｎｇｅ  Ｃｉｐｈｅｒ  Ｓｐｅｃ、Ａｐｐｌｉｃａｔｉｏｎ  Ｄａｔａ等があり、共有鍵交換のためのメッセージにはメッセージ種別としてＨａｎｄｓｈａｋｅ、Ｃｈａｎｇｅ  Ｃｉｐｈｅｒ  Ｓｐｅｃが記載される。ＳＳＬ  Ｒｅｃｏｒｄ  Ｈｅａｄｅｒ自体は通常暗号化されておらず、ファイアウォールがその内容を吟味することが可能である。つまり、ファイアウォールはＳＳＬ  Ｒｅｃｏｒｄ  Ｈｅａｄｅｒのメッセージ種別とメッセージの送信方向を見ることにより、ＳＳＬセッションがどの方向へ張られようとしているのかを検出することができる。このため、第２の従来技術ではグローバルネットワークの中継サーバからプライベートネットワーク内の端末に対してＳＳＬセッションが張られようとしていることがファイアウォールによって検出される。ファイアウォールは通常グローバルネットワークからプライベートネットワークへのコネクションやセッションの構築を遮断するポリシーで運用されるため、前述のＳＳＬメッセージは遮断される。
【特許文献１】特開２００６−５０１９１号公報
【特許文献２】特許第３６３７８６３号公報
【特許文献３】特開２００３−３２２３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明の目的は、秘匿性の高い複数のプライベートネットワーク間の通信を中継する中継サーバの処理負荷を低減することにある。
【００１５】
本発明の他の目的は、高機能ファイアウォールが設置されたプライベートネットワークを含む複数のプライベートネットワーク間における通信を中継する中継サーバの処理負荷を軽減することにある。
【００１６】
本発明の更に他の目的は、高機能ファイアウォールが設置されたプライベートネットワークを含む複数のプライベートネットワーク間における通信を中継する中継サーバの収容可能端末数を増大することにある。
【課題を解決するための手段】
【００１７】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を括弧付きで用いて、［課題を解決するための手段］を説明する。この番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１８】
本発明による通信システム（１）は、異なるプライベートネットワークに接続される複数のクライアント端末（１１、２１）間におけるデータの送受信を、グローバルネットワークに接続される中継サーバ（３１）を介して実行する。本発明によるクライアント端末（１１，２１）は、暗号化セッション構築部（１１１）、共有鍵管理部、データ暗号化部、データ通信用メッセージ作成部（１１５）、送信部を具備する。暗号化セッション構築部（１１１）は、中継サーバ（３１）との間で送受信する暗号化セッション構築メッセージによって、中継サーバ（３１）との間に暗号化セッション利用コネクションを構築し、暗号化セッションヘッダ（２０３）に含めるヘッダ情報（１０２）を中継サーバ（３１）に通知する。共有鍵管理部（１１２）は、他のクライアント端末（１１、２１）と共通のクライアント共有鍵（１０１）を保持する。データ暗号化部（１１３）は、クライアント共有鍵（１０１）を用いてデータの暗号化及び／又はデータのＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の計算を行い、クライアント暗号化データ（２０２）として出力する。データ通信用メッセージ作成部（１１５）は、クライアント暗号化データ（２０２）を挿入した暗号化データフィールド（１０７）と、ヘッダ情報（１０２）を含む暗号化セッションヘッダ（２０３）が挿入された非暗号化データフィールド（１０７）とを含むデータ通信用メッセージ（１０４）を作成する。送信部は、他のクライアント端末（１１、２１）宛のデータ通信用メッセージ（１０４）を、暗号化セッション利用コネクションを利用して中継サーバ（３１）に転送する。
【００１９】
中継サーバ（３１）は、暗号化セッション構築部（３１１）、データ通信用メッセージ転送部（３１２）を具備する。暗号化セッション構築部（３１１）は、複数のクライアント端末（１１、２１）のそれぞれとの間で暗号化セッション構築メッセージを送受信することによって、それぞれと個別の暗号化セッション利用コネクションを構築する。又、複数のクライアント端末（１１、２１）のそれぞれから、暗号化セッションヘッダ（２０３）に含めるヘッダ情報（１０２）を取得する。データ通信用メッセージ転送部（３１２）は、暗号化セッション利用コネクションを利用して、複数のクライアント端末（１１、２１）のそれぞれとの間においてデータ通信用メッセージ（１０４）を送受信する。ここで、クライアント端末（１１、２１）から受信するデータ通信用メッセージ（１０４）は、クライアント共有鍵（１０１）によって暗号化されたクライアント暗号化データ（２０２）が挿入された暗号化データフィールド（１０７）と、ヘッダ情報（１０２）を含む暗号化セッションヘッダ（２０３）が挿入された非暗号化データフィールド（１０７）とを含む。データ通信用メッセージ転送部（３１２）は、複数のクライアント端末（１１、２１）のいずれかから転送されたデータ通信用メッセージ（１０４）の非暗号化データフィールド（１０７）に含まれる暗号化セッションヘッダ（２０３）を、データ通信用メッセージ（１０４）の転送先となるクライアント端末（１１、２１）に対応する暗号化セッションヘッダ（２０３）に変換し、暗号化セッションヘッダ（２０３）を変換したデータ通信用メッセージ（１０４）を、転送先のクライアント端末（１１、２１）に転送する。
【００２０】
本発明では中継サーバ（３１）を介して通信を行うクライアント端末（１１、２１）同士が交換したクライアント共有鍵（１０１）を利用してメッセージに含めるデータを暗号化する。このため、中継サーバ（３１）が端末から受信したデータを復号化したり再暗号化したりしなくても端末間の通信のセキュリティが確保され、従来方式と比べて中継サーバ（３１）の負荷を低く抑えることができ、収容可能端末数を従来方式に比べて向上させられる
【００２１】
又、本発明では、暗号化セッションを構築するための暗号化セッション構築メッセージの送受信は、クライアント端末（１１、２１）と中継サーバ（３１）との間で行う。このため、レイヤ５以上の上位レイヤのデータまで吟味してパケット転送のフィルタリングを行う高機能ファイアウォールがプライベートネットワークに設置されていたとしても、そのようなプライベートネットワーク上の端末に対して中継サーバ（３１）を介して他のプライベートネットワークの端末から通信を行うことが可能となる。
【００２２】
又、データ通信用メッセージ作成部（１１５）は、データ通信用メッセージ（１０４）の宛先である他のクライアント端末（１１、２１）に割り当てられた端末ＩＤを、宛先端末ＩＤとして非暗号化データフィールド（１０８）に、中継サーバ（３１）が読み取り可能な形式で挿入してデータ通信メッセージを作成することが好ましい。この場合、中継サーバ（３１）の暗号化セッション構築部（３１１）は、複数のクライアント端末（１１、２１）のそれぞれから通知された端末ＩＤと暗号化セッション利用コネクションとの対応関係をデータ通信用メッセージ転送部（３１２）に通知することが好ましい。又、中継サーバ（３１）のデータ通信用メッセージ転送部（３１２）は、この対応関係に従い、データ通信用メッセージ（１０４）の非暗号化データフィールド（１０８）に含まれる宛先端末ＩＤと同じ端末ＩＤに対応する暗号化セッション利用コネクションを、データ通信用メッセージ（１０４）の転送に利用することが好ましい。
【００２３】
このように、データ通信用メッセージ（１０４）の宛先を示す宛先端末ＩＤが非暗号化データフィールド（１０８）に中継サーバ（３１）が読み取れる形で記載される。このため、中継サーバ（３１）において暗号化データフィールド（１０７）全体を復号化する必要がなく、転送先を特定する中継サーバ（３１）の処理負荷を軽減することができる。又、宛先端末ＩＤによって転送先を判断するため、クライアント端末（１１、２１）は、中継サーバ（３１）との間の単一の暗号化セッション利用コネクションを利用して任意のクライアント端末（１１、２１）宛と通信を行うことができる。このため、クライアント端末（１１、２１）、中継サーバ（３１）双方で構築する暗号化セッション利用コネクションの数が従来方式と比較して格段に少なくて済む。
【発明の効果】
【００２４】
本発明によれば、秘匿性の高い複数のプライベートネットワーク間の通信を中継する中継サーバの処理負荷を低減することができる。
【００２５】
又、高機能ファイアウォールが設置されたプライベートネットワークを含む複数のプライベートネットワーク間における通信を中継する中継サーバの処理負荷を軽減することにある。
【００２６】
更に、高機能ファイアウォールが設置されたプライベートネットワークを含む複数のプライベートネットワーク間における通信を中継する中継サーバの収容可能端末数を増大することができる
【発明を実施するための最良の形態】
【００２７】
以下、添付図面を参照して、本発明による通信システム１の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。以下では、互いに異なるプライベートネットワークに接続されたクライアント端末間の通信を、グローバルネットワーク内の中継サーバが中継する通信システムを一例に実施の形を説明する。
【００２８】
１．第１の実施の形態
図１から図９を参照して、本発明による通信システム１の第１の実施の形態を説明する。
【００２９】
（通信システム１の構成）
図１は、実施の形態における通信システム１の構成を示す図である。図１を参照して、通信システム１は、ファイアウォール１２、２２の設置されたプライベートネットワーク１０、２０に接続しているクライアント端末１１、２１と、グローバルネットワーク３０に接続している中継サーバ３１を具備する。  
【００３０】
クライアント端末１１、２１は、それぞれ異なるプライベートネットワーク１０、２０に接続し、中継サーバ３１を介してデータの送受信を行う通信端末（例示：コンピュータ装置）である。クライアント端末１１、２１は、それぞれ中継サーバ３１との間に暗号化セッションを構築し、暗号化セッションに基づくコネクションを利用して後述するデータ通信用メッセージ１０４を送受信する。中継サーバ３１は、クライアント端末１１、２１から送信されるデータ通信用メッセージ１０４の中継処理を行う。ファイアウォール１２、２２はそれぞれ、プライベートネットワーク１０、２０からグローバルネットワーク３０に対して構築が要求された暗号化セッションを利用する双方向の通信を許可するように設定されている。又、クライアント端末１１、２１はデータ通信用メッセージ１０４の送受信を実行する前に、互いに共通の共有鍵（以下、クライアント共有鍵１０１と称す）を交換している。クライアント端末１１、２１は、データ通信用メッセージ１０４にクライアント共有鍵１０１で暗号化等を施したデータを含めて送受信する。
【００３１】
ここで、暗号化セッションとはセキュリティが確保された仮想的な通信路を指す。暗号化セッションを構築しようとする端末同士（例えばクライアント端末１１と中継サーバ３１）は、暗号化セッション構築のためのメッセージ（以下、暗号化セッション構築メッセージ１００と呼ぶ）を送受信する。暗号化セッション構築メッセージ１００の送受信によって、暗号化セッションヘッダ２０３に含める情報（以下、暗号化セッションヘッダ情報１０２と称す）が端末同士で交換されるとともに端末間にコネクションが構築される。
【００３２】
暗号化セッションヘッダ２０３は、暗号化セッションヘッダ情報１０２として、プロトコルのバージョン番号や、暗号化やＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の計算（以下ＭＡＣ計算と称す）に利用するプロトコル、メッセージの種別（メッセージが暗号化セッション構築メッセージ１００なのか、データ通信用メッセージ１０４なのか）などの情報を含む。尚、暗号化セッションヘッダ２０３にどのような暗号化セッションヘッダ情報１０２が含まれるかは暗号化セッションを提供する技術によって異なる。
【００３３】
コネクションとは２つの端末間の通信路のことである。具体的には、コネクションは、端末（クライアント端末１１、２１や中継サーバ３１）のＩＰアドレスやプロトコル番号、トランスポートプロトコルの種別（ＴＣＰやＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ））やトランスポートプロトコルで使用するポート番号などの情報によって識別される。以下、暗号化セッション構築メッセージ１００の送受信により構築されるコネクションを特に暗号化セッション利用コネクションと呼ぶ。本実施の形態では、クライアント端末１１と中継サーバ３１との間に暗号化セッション利用コネクション１３が構築され、クライアント端末２１と中継サーバ３１との間に暗号化セッション利用コネクション２３が構築されるものとする。尚、暗号化セッション利用コネクション１３、２３がどのような情報で識別可能かは暗号化セッションを提供する技術によって異なる。又、一般的には暗号化セッション構築メッセージ１００の送受信に利用するコネクションと暗号化セッション利用コネクションは同一であるが、異なる場合もある。
【００３４】
暗号化セッションを提供する技術としてはＳＳＬやＩＰＳＥＣなどが挙げられる。又、ＨＴＴＰやＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）など特定のアプリケーションレベルプロトコルにおいてＳＳＬを利用するＨＴＴＰＳやＳＩＰＳも暗号化セッションを提供する技術として挙げられる。
【００３５】
ＳＳＬの場合、暗号化セッションヘッダ２０３としてはＳＳＬ  Ｒｅｃｏｒｄ  Ｈｅａｄｅｒが利用される。ＳＳＬ  Ｒｅｃｏｒｄ  ＨｅａｄｅｒにはＣｏｎｔｅｎｔ  ＴｙｐｅフィールドやＬｅｎｇｔｈフィールド、ＳＳＬ  Ｖｅｒｓｉｏｎフィールドが含まれ、Ｃｏｎｔｅｎｔ  Ｔｙｐｅフィールドにメッセージ種別が指定される。暗号化セッション構築メッセージ１００のＣｏｎｔｅｎｔ  Ｔｙｐｅフィールドには例えばＨａｎｄｓｈａｋｅやＣｈａｎｇｅ  Ｃｉｐｈｅｒ  Ｓｐｅｃなどが指定される。又、データ通信用メッセージ１０４のＣｏｎｔｅｎｔ  Ｔｙｐｅフィールドには、例えばＡｐｐｌｉｃａｔｉｏｎ  Ｄａｔａが指定される。ＳＳＬの場合、データ通信用メッセージ１０４の暗号化データフィールド１０７は、ＳＳＬ  Ｒｅｃｏｒｄ  Ｈｅａｄｅｒよりも内側の部分である。又、ＳＳＬの場合はコネクションとしてＴＣＰコネクションが利用される。この場合、コネクションが構築される端末（ここでは、クライアント端末１１、２１と中継サーバ３１）のＩＰアドレスとＴＣＰのポート番号で暗号化セッション利用コネクション１３、２３を識別することができる。
【００３６】
又、ＩＰＳＥＣ（ＩＰ  ｓｅｃｕｒｉｔｙ  ｐｒｏｔｏｃｏｌ）の場合、暗号化セッションヘッダ２０３としてＩＳＡＫＭＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ  ＆  Ｋｅｙ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）ヘッダやＡＨ（Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｈｅａｄｅｒ）やＥＳＰ（ｅｎｃａｐｓｕｌａｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）ヘッダなど様々なヘッダが利用される。ＳＳＬとは異なりメッセージ種別によって付与される暗号化セッションヘッダ２０３の種類が異なる。又、ＩＰＳＥＣの場合、データ通信用メッセージ１０４の暗号化データフィールド１０７は、シーケンス番号フィールド（ＩＶ（Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）フィールドを利用する場合はＩＶフィールド）と、ＩＣＶ（Ｉｎｔｅｇｒｉｔｙ  Ｃｈｅｃｋ  Ｖａｌｕｅ）フィールドで挟まれた部分である。又、ＩＰＳＥＣの場合は暗号化セッション利用コネクション１３、２３のそれぞれをネクションが構築される端末（ここでは、クライアント端末１１、２１と中継サーバ３１）のＩＰアドレスとプロトコル番号によって識別することができる。
【００３７】
暗号化セッションヘッダ情報１０２の交換及び暗号化セッション利用コネクション１１、１２の構築が終わると、クライアント端末（例えばクライアント端末１１）は、通信相手のクライアント端末（例えばクライアント端末２１）に届けたいデータを送信するためのメッセージ（データ通信用メッセージ１０４）を作成する。データ通信用メッセージ１０４は暗号化されたデータを入れるフィールド（以下、暗号化データフィールド１０７と称す）と暗号化されていないデータを入れるフィールド（以下、非暗号化データフィールド１０８と称す）に分けられる。データ通信用メッセージ１０４のうち、どの部分が暗号化データフィールド１０７で、どの部分が非暗号化データフィールド１０８であるかは、暗号化セッションを提供する技術によって規定されている。クライアント端末１１、１２は通信相手の端末に届けたいデータをクライアント共有鍵１０１によって暗号化やＭＡＣ計算行い、これをクライアント暗号化データ２０２として暗号化データフィールド１０７に挿入するとともに、非暗号化データフィールド１０８に暗号化セッションヘッダ２０３を挿入して、データ通信用メッセージ１０４を作成する。尚、暗号化セッションヘッダ２０３の一部は、暗号化されて暗号化データフィールド１０７に含まれることもある。
【００３８】
又、クライアント端末１１、２１は、受信したデータ通信用メッセージ１０４の暗号化データフィールド１０７に含まれるクライアント暗号化データ２０２をクライアント共有鍵１０４で復号化又は／及びＭＡＣ計算して元データを取得する。
【００３９】
ファイアウォール１２、２２はそれぞれ、クライアント端末１１、２１と中継サーバ３１との間で送受信される暗号化セッション構築メッセージ１００を監視する。ファイアウォール１２、２２は、暗号化セッション構築メッセージ１００の送受信が完了したことを確認すると、以降、端末間で送受信されるデータ通信用メッセージ１０４について、暗号化セッション利用コネクション１３、２３上で送受信されているかと、非暗号化データフィールド１０７が規定のフォーマットに従っているかを確認する。これらの確認においてエラーとなるデータ通信用メッセージ１０４はファイアウォール１２、２２によって遮断される。又、暗号化セッション構築メッセージ１００の送受信は、プライベートネットワーク１０、２０からグローバルネットワーク３０に対して開始された場合のみが許可され、そうでない場合は、ファイアウォール１２、２２によって遮断される。
【００４０】
（クライアント端末の構成）
以下、図２を参照して、本発明によるクライアント端末１１の構成の詳細を説明する。クライアント端末１１、１２は同様の構成であるため、以下では、クライアント端末１１についてその構成を説明する。
【００４１】
クライアント端末１１は、暗号化セッション構築部１１１、共有鍵管理部１１２、データ暗号化部１１３、データ復号化部１１４、データ通信用メッセージ作成部１１５、データ通信用メッセージ解析部１１６、データ通信用メッセージ送受信部１１７、アプリケーション１１８を具備する。
【００４２】
暗号化セッション構築部１１１は、中継サーバ３１に対して暗号化セッションの構築を要求し、暗号化セッション構築メッセージ１００を中継サーバ３１との間で送受信する。暗号化セッション構築メッセージ１００の送受信は、中継サーバ３１を介したクライアント端末同士の通信が始まる前に行われる。又、暗号化セッション構築メッセージ１００がファイアウォール１２により遮断されないようにするため、暗号化セッション構築メッセージ１００の送受信は、必ずクライアント端末（の暗号化セッション構築部１１１）から開始される。すなわち、図４に示すように、暗号化セッションメッセージｓｍ１（ｓｍ１’）、ｓｍ４（ｓｍ４’）は必ずクライアント端末１１、２１から中継サーバ３１に対して送信される。
【００４３】
暗号化セッション構築部１１１は、暗号化セッション構築手順で規定された暗号化セッション構築メッセージ１００の送受信を行う。これにより、中継サーバ３１との間において、暗号化セッションヘッダ情報１０２の交換、及び暗号化セッション利用コネクション１３の構築が行われる。ここで、通常の暗号化セッション構築手順では、暗号化セッション構築メッセージを送受信する際、暗号化セッション構築を行う端末間で共通の共有鍵（セッション鍵）が交換されるが、本発明では必須ではない。すなわち、クライアント端末１１と中継サーバ３１が暗号化セッション構築メッセージ１００を送受信する際、クライアント端末１１と中継サーバ３１との共通のセッション鍵の計算は行わなくても良い。これは、クライアント端末１１と中継サーバ３１との間で送受信している暗号化セッション構築メッセージ１００を経路途中にあるファイアウォール１２に見せることによって、暗号化セッション利用コネクション１３を利用した双方向通信の遮断を回避することを目的とするためである。但し、後述する理由から、暗号化セッション構築メッセージ１００の送受信の際、クライアント端末１１と中継サーバ３１とで共通のセッション鍵の交換を行っても良い。
【００４４】
暗号化セッション構築部１１１は、暗号化セッション構築メッセージ１００の送受信によって中継サーバ３１と交換した暗号化セッションヘッダに含める暗号化セッションヘッダ情報１０２をデータ通信用メッセージ作成部１１５に通知するとともに、中継サーバ３１と構築した暗号化セッション利用コネクション１３に関する情報（以下、コネクション情報１０３と称す）をデータ通信用メッセージ送受信部１１７に通知する。
【００４５】
共有鍵管理部１１２は、中継サーバ３１を介して自端末と通信を行うクライアント端末２１との間で何らかの手段によって交換した共有鍵（以下、クライアント共有鍵１０１と称す）を管理する。共有鍵は、暗号化セッションを使用して送信するメッセージの通信内容を暗号化したり、ＭＡＣ計算を行ったりすることで、盗聴、なりすまし、通信内容の改ざんなどを防止して通信のセキュリティを確保するのに利用される。暗号化とＭＡＣ計算には異なる共有鍵が利用されることもある。
【００４６】
データ暗号化部１１３は、アプリケーション１１８から渡されたデータを共有鍵管理部１１２が管理するクライアント共有鍵１０１によって暗号化したり、渡されたデータのＭＡＣ計算を行う。暗号化やＭＡＣ計算はいずれか一方のみを行っても良い。又、暗号化はアプリケーション１１８から渡されたデータの一部に限っても良いし、渡されたデータ全体に対して行っても良い。暗号化やＭＡＣ計算を行った後、暗号化されたデータやＭＡＣを、クライアント暗号化データ２０２としてデータ通信用メッセージ作成部１１５へ渡す。
【００４７】
データ通信用メッセージ作成部１１５は、データ暗号化部１１３から渡されたクライアント暗号化データ２０２と、暗号化セッション構築部１１１から通知された暗号化セッションヘッダ情報１０２とを用いてデータ通信用メッセージ１０４を生成する。詳細には、データ通信用メッセージ作成部１１５は、クライアント暗号化データ２０２をデータ通信用メッセージ１０４の暗号化データフィールド１０７に挿入する。又、暗号化セッションヘッダ情報１０２を元にメッセージ種別がデータ通信用メッセージ１０４であることを示す暗号化セッションヘッダ２０３を作成し、非暗号化データフィールド１０８に挿入する。例えば、暗号化セッション構築部１１１がＳＳＬを利用して暗号化セッション構築メッセージ１００の送受信を行った場合は、ＳＳＬ  Ｒｅｃｏｒｄ  Ｈｅａｄｅｒ２２２を暗号化セッションヘッダ２０３として非暗号化データフィールド１０８に追加し、Ｃｏｎｔｅｎｔ  ＴｙｐｅフィールドにＡｐｐｌｉｃａｔｉｏｎ  Ｄａｔａを指定する。このようにして作成したデータ通信用メッセージ１０４はデータ通信用メッセージ送受信部１１７に渡される。
【００４８】
暗号化データフィールド１０７に挿入されているデータについてはファイアウォール１２にはチェックされることはない。このため、データ通信用メッセージ作成部１１５は、クライアント暗号化データ２０２に加えて、任意のデータを暗号化データフィールド１０７に追加しても良い。例えば、後述するようにクライアント暗号化データ２０２のデータサイズ値２１１が含まれたフィールドを追加データとして暗号化データフィールド１０７に挿入しても良い。尚、暗号化データフィールド１０７に追加データを挿入する場合は、当該データ通信用メッセージ１０４を受信した端末において、暗号化データフィールド１０７のどの部分がクライアント暗号化データ２０２でどの部分がデータ通信用メッセージ作成部１１５で追加されたデータであるのかを検出できるようにする必要がある。これらを実現する方法としては、クライアント暗号化データ２０２、及び追加データの位置を示すフラグフィールドを暗号化データフィールド１０７に追加する方法や、クライアント暗号化データ２０２、及び追加データのデータサイズ値２１１を暗号化データフィールド１０７に追加する等の方法がある。
【００４９】
データ通信用メッセージ送受信部１１７は、データ通信用メッセージ作成部１１５から渡されたデータ通信用メッセージ１０４を、中継サーバ３１に送信する。この際、データ通信用メッセージ送受信部１１７は、暗号化セッション構築部１１１から通知されたコネクション情報１０３に基づき暗号化セッション利用コネクション１３を特定し、このコネクションを使ってデータ通信用メッセージ１０４を中継サーバ３１へ送信する。例えば、暗号化セッション構築メッセージ１００の送受信にＳＳＬが利用される場合、暗号化セッション構築部１１１から通知されたＴＣＰコネクションを利用してデータ通信用メッセージ１０４を中継サーバ３１へ送信する。
【００５０】
又、データ通信用メッセージ送受信部１１７は、中継サーバ３１から暗号化セッション利用コネクション１３を利用して送信されたデータ通信用メッセージ１０４を受信する。データ通信用メッセージ送受信部１１７は、受信したデータ通信用メッセージ１０４をデータ通信用メッセージ解析部１１６に渡す。
【００５１】
データ通信用メッセージ解析部１１６は、データ通信用メッセージ送受信部１１７から渡されたデータ通信用メッセージ１０４の暗号化データフィールド１０７からクライアント暗号化データ２０２を抽出する。ここで、抽出されるクライアント暗号化データ２０２は、共有鍵管理部１１２が保持するクライアント共有鍵１０１によって復号化及びＭＡＣ計算のいずれか又は両方が可能なデータである。すなわち、通信相手のクライアント端末２１によって暗号化データフィールドに挿入されたクライアント暗号化データ２０２である。データ通信用メッセージ解析部１１６は、抽出したクライアント暗号化データ２０２をデータ復号化部１１４に渡す。例えば、受信したデータ通信用メッセージ１０４の暗号化データフィールド１０７に、クライアント暗号化データ２０２のみが挿入されている場合は、暗号化データフィールド１０７全体をデータ復号化部１１４に渡す。
【００５２】
データ復号化部１１４は、データ通信用メッセージ解析部１１６から渡されたデータを、共有鍵管理部が管理するクライアント共有鍵１０１を利用して復号化やＭＡＣ計算を行った後、アプリケーション１１８に渡す。
【００５３】
アプリケーション１１８は自端末上で稼動するプログラムであって、自端末以外の端末とネットワークを介して通信を行う全てのプログラムを示す。例えば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のカーネルで稼動するプログラムもアプリケーション１１８に含まれる。
【００５４】
従来技術では、クライアント端末と中継サーバとの間で通常の暗号化セッションを利用した場合、データ通信用メッセージの暗号化データフィールドにはクライアント端末と中継サーバの間で交換されたセッション鍵によって暗号化やＭＡＣ計算が行われたデータのみが挿入される。しかし、本発明によるクライアント端末１１は、直接通信する中継サーバ３１ではなく通信相手のクライアント端末２１と交換したクライアント共有鍵１０１によって暗号化やＭＡＣ計算が行われたクライアント暗号化データ２０２が暗号化データフィールド１０７に挿入される。このため、本発明におけるデータ通信用メッセージ１０４は、暗号化セッションを提供する各種技術（ＳＳＬやＩＰＳＥＣ）で本来規定されたデータ通信用メッセージ１０４のフォーマットに合致していないことになる。しかし、データ通信用メッセージ１０４についてファイアウォール１２がチェックするのは暗号化セッション利用コネクション１３上で送受信されているかと、非暗号化データフィールド１０８が本来規定されたフォーマットに従っているかのみである。データ通信用メッセージ１０４は、データ通信用メッセージ送受信部１１７によって暗号化セッション利用コネクション１３を利用して送受信されるとともに、データ通信用メッセージ作成部１１５によって非暗号化データフィールド１０８に暗号化セッションヘッダ２０３が挿入されている。このため、クライアント端末１１が送信するデータ通信用メッセージ１０４は、ファイアウォール１２から遮断されることなく中継サーバ３１へ到達する。
【００５５】
（中継サーバ３１の構成）
次に図２を参照して、中継サーバ３１の構成の詳細を説明する。中継サーバ３１は、暗号化セッション構築部３１１とデータ通信用メッセージ転送部３１２とを備える。
【００５６】
暗号化セッション構築部３１１は、クライアント端末１１、１２からの暗号化セッション構築の要求を受けて、クライアント端末１１、１２との間で暗号化セッション構築メッセージ１００の送受信を行う。暗号化セッション構築部３１１は、少なくとも２つ以上のクライアント端末と暗号化セッション構築メッセージ１００の送受信を行う。暗号化セッション構築メッセージ１００の送受信によって、暗号化セッション構築部３１１は、クライアント端末１１、１２のそれぞれと、暗号化セッションヘッダ情報１０２の交換を行う。暗号化セッション構築部３１１は、クライアント端末１１、１２のそれぞれと交換した暗号化セッションヘッダ情報１０２と、それぞれと構築した暗号化セッション利用コネクション１３、２３に関するコネクション情報１０３をデータ通信メッセージ転送部３１２に通知する。
【００５７】
データ通信用メッセージ転送部３１２は、暗号化セッション構築部３１１から通知されたコネクション情報１０３に基づきクライアント端末毎に構築された暗号化セッション利用コネクションを特定する。又、データ通信用メッセージ転送部２１２は、受信したデータ通信用メッセージ１０４を、宛先のクライアント端末に転送する。例えば、データ通信用メッセージ転送部２１２は、通知されたコネクション情報１０３に基づき、データ通信用メッセージ１０４の受信に利用した暗号化セッション利用コネクションとは異なる暗号化セッション利用コネクションに対して当該データ通信用メッセージ１０４を転送する。
【００５８】
ここでデータ通信用メッセージ転送部３１２は、転送されたデータ通信用メッセージ１０４の暗号化データフィールド１０７のうち、少なくともクライアント共有鍵１０１によって暗号化やＭＡＣ計算されたクライアント暗号化データ２０２に対しては復号化したりＭＡＣ計算を行わない。又、データ通信用メッセージ転送部３１２は、転送先のクライアント端末１１、１２に対応する暗号化セッションヘッダ情報１０２に基づいて、転送するデータ通信用メッセージ１０４の非暗号化データフィールド１０８に含まれる暗号化セッションヘッダ２０３の内容を変更する。但し、受信したデータ通信用メッセージ１０４に付加された暗号化セッションヘッダ２０３の内容と、転送先のクライアント端末に対応すると暗号化セッションヘッダ情報１０２が同じ場合、暗号化セッションヘッダ２０３の付け替えは行わなくても良い。
【００５９】
従来技術において、端末同士（例えばクライアント端末と中継サーバ）が暗号化セッションを利用して通信を行う場合、一方の端末は、他方の端末から受信したデータ通信用メッセージの暗号化データフィールド１０７を、暗号化セッション構築時に交換したセッション鍵を使って復号化やＭＡＣ計算を行う。これに対して本発明では、中継サーバ３１は、クライアント端末１１、２１から受信したデータ通信用メッセージ１０４の暗号化データフィールド１０７のうち、少なくともクライアント暗号化データ２０２に対する復号化やＭＡＣ計算を行わない。
【００６０】
又、本発明では送信元のクライアント端末と転送先のクライアント端末が交換したクライアント共有鍵１０１によって暗号化やＭＡＣ計算が行われたクライアント暗号化データ２０２が暗号化データフィールド１０７に挿入される。このため、本発明におけるデータ通信用メッセージ１０４は、暗号化セッションを提供する各種技術（ＳＳＬやＩＰＳＥＣ）で本来規定されたデータ通信用メッセージ１０４のフォーマットに合致していないことになる。しかし、前述のようにデータ通信用メッセージ１０４についてファイアウォール１２、２２がチェックするのは、端末間で事前に構築された暗号化セッション利用コネクション１３、２３上で送受信されているかと、非暗号化データフィールド１０８が本来規定されたフォーマットに従っているかのみである。データ通信用メッセージ転送部３１２によって、データ通信用メッセージ１０４は、転送先のクライアント端末との間で構築された暗号化セッション利用コネクション上に送信される。又、非暗号化データフィールド１０８には、転送先のクライアント端末と交換した暗号化セッションヘッダ情報１０２に基づく暗号化セッションヘッダが挿入される。このため、非暗号化データフィールド１０８は本来規定されたデータ通信用メッセージ１０４の規定に合致する。従って、データ通信用メッセージ１０４は、ファイアウォール１２、２２から遮断されることなく中継サーバ３１から転送先のクライアント端末へ到達する。
【００６１】
（通信システム１の動作）
図３から図９を参照して、本発明による通信システム１におけるデータ転送動作の詳細を説明する。以下では、クライアント端末１１からクライアント端末２１に対してデータ通信メッセージ１０４が送信されることを一例に、通信システム１の動作を説明する。
【００６２】
図３は、通信システム１におけるクライアント端末間のデータの転送動作を示すシーケンス図である。図３を参照して、クライアント端末１１と、クライアント端末２１は事前に、何らかの方法でクライアント共有鍵１０１を交換する（ステップＳ１）。クライアント共有鍵１０１の交換方法は、例えば、フロッピー（登録商標）ディスクやＵＳＢメモリなどの媒体に記録されたクライアント共有鍵１０１を、手渡しや郵送など物理的な媒体を使用して交換しても良いし、電子メールにクライアント共有鍵１０１を添付して交換しても良い。更には、クライアント共有鍵１０１を保管する共有鍵保管サーバ（図示せず）を別途設けておき、そのサーバに対してアクセスすることでクライアント共有鍵１０１を取得する方法でも良い。但し、この場合、共有鍵保管サーバはパスワードによるアクセス制限などによって、クライアント共有鍵１０１が認証されていないユーザに配布されることを防ぐ必要がある。
【００６３】
次に、クライアント端末１１、２１はそれぞれ、中継サーバ３１との間で暗号化セッション構築メッセージ１００を送受信し、暗号化セッション利用コネクション１３、２３を構築する（ステップＳ２）。暗号化セッション構築メッセージ１００の送受信は、必ずクライアント端末（の暗号化セッション構築部１１１）から開始される。すなわち、図４に示すように、暗号化セッションメッセージｓｍ１（ｓｍ１’）、ｓｍ４（ｓｍ４’）は必ずクライアント端末１１、２１から中継サーバ３１に対して送信される。暗号化セッション構築メッセージ１００の送受信によって、クライアント端末１１、２１は、中継サーバ３１と個別の暗号化セッションヘッダ情報１０２を交換する。又、クライアント端末１１及び中継サーバ３１は、構築した暗号化セッション利用コネクション１３に関するコネクション情報１０３を取得する。同様に、クライアント端末２１及び中継サーバ３１は、構築した暗号化セッション利用コネクション２３に関するコネクション情報１０３を取得する。
【００６４】
ステップＳ２において、クライアント端末１１、２１と中継サーバ３１の間で暗号化セッション構築メッセージ１００の送受信が完了すると、ファイアウォール１２、２２からはクライアント端末１１、２１と中継サーバ３１の間で暗号化セッションの構築が完了したと見なされる。これ以降、ファイアウォール１２、２２のそれぞれは、暗号化セッション利用コネクション１３、２３上を通るデータ通信用メッセージ１０４を利用した双方向の通信を許可するようになる。
【００６５】
アプリケーション１１８から渡されたデータをクライアント端末２１に送信するクライアント端末１１は、このデータを暗号化してデータ通信用メッセージ１０４を作成する（ステップＳ３）。ここでは、クライアント端末１１は、送信したいデータをクライアント共有鍵１０１で暗号化し、暗号化データフィールド１０７に挿入するとともに、ステップＳ２で交換した暗号化セッションヘッダ情報１０２に基づく暗号化セッションヘッダ２０３を非暗号化データフィールド１０８に挿入してデータ通信用メッセージ１０４を作成する。
【００６６】
クライアント端末１１は、作成したデータ通信用メッセージ１０４を暗号化セッション利用コネクション１３を介してデータ通信用メッセージ１０４を中継サーバ３１に送信する（ステップＳ４）。
【００６７】
中継サーバ３１は、転送先のクライアント端末２１から通知された暗号化セッションヘッダ情報１０２に基づき、クライアント端末１１から受信したデータ通信用メッセージ１０４の暗号化セッションヘッダ２０３を付け替える（ステップＳ５）。ここでは、データ通信用メッセージ１０４の非暗号化データフィールド１０８に挿入された暗号化セッションヘッダ２０３が、転送先の暗号化セッションヘッダ情報１０２の内容に書き換えられる。但し、受信したデータ通信用メッセージ１０４に付加された暗号化セッションヘッダ２０３と転送先のクライアント端末２１から取得した暗号化セッションヘッダ情報１０２を含む暗号化セッションヘッダ２０３の内容が同一であれば付け替えは行われなくても良い。又、データ中継サーバ３１は、受信したデータ通信用メッセージ１０４の暗号化データフィールド１０７のうち少なくともクライアント共有鍵１０１によって暗号化やＭＡＣ計算されたクライアント暗号化データ２０２に対しては復号化したりＭＡＣ計算を行わない。
【００６８】
中継サーバ３１は、暗号化セッションヘッダ２０３を付け替えたデータ通信用メッセージ１０４をクライアント端末２１に送信する（ステップＳ６）。この際、中継サーバ３１は、転送先のクライアント端末２１に対応するコネクション情報１０３に基づいて暗号化セッション利用コネクション２１を特定し、このコネクションを利用してデータ通信用メッセージ１０４をクライアント端末２１送信する。
【００６９】
クライアント端末２１は、暗号化セッション利用コネクション２３を介して、中継サーバ３１からのデータ通信用メッセージを受信する。クライアント端末２１は、受信したデータ通信用メッセージ１０４の暗号化データフィールド１０７からクライアント暗号化データ２０２を抽出し、ステップＳ１においてクライアント端末１１と交換したクライアント共有鍵１０１によって復号化及びＭＡＣ計算のいずれか又は両方を実行する（ステップＳ７）。ここで復号化されたデータ、又は計算されたＭＡＣはクライアント端末２１のアプリケーション１１８に渡される。
【００７０】
以上の動作により、ファイアウォールが設置された異なるプライベートネットワークに接続した２つのクライアント端末の間で、中継サーバを介した双方向の通信が可能になる。
【００７１】
次に、図４を参照して、ステップ２における暗号化セッション利用コネクション１３、２３の構築動作の一例を説明する。図４は、クライアント端末１１、２１の暗号化セッション構築部１１１がＳＳＬによって暗号化セッション構築メッセージ１００の送受信を行う際のメッセージシーケンスである。
【００７２】
ＳＳＬでは暗号化セッション構築メッセージの送受信にＴＣＰコネクションを利用する。ＴＣＰコネクションはコネクション構築処理が必要であるため、暗号化セッション構築部は暗号化セッション構築を要求するメッセージを、送信する前にＴＣＰコネクション構築処理を行う。詳細には、暗号化セッション構築部１１１は、図４に示す暗号化セッション構築メッセージ１００（ｓｍ１〜ｓｍ３（ｓｍ１’〜ｓｍ３’））によって、クライアント端末１１（２１）と中継サーバ３１との間にＴＣＰコネクションを構築する。すなわち、クライアント端末１１（２１）から中継サーバ３１への接続ポート通知（ＳＹＮ）：ｓｍ１（ｓｍ１’）、中継サーバ３１からクライアント端末１１（２１）への通知応答（ＳＹＮ  ＡＣＴ）：ｓｍ２（ｓｍ２’）、クライアント端末１１（２１）から中継サーバ３１への応答（ＡＣＴ）：ｓｍ３（ｓｍ３’）によってＴＣＰコネクションが構築される。
【００７３】
次にクライアント端末１１（２１）は、当該ＴＣＰコネクションを利用し、ＳＳＬで規定された手順に基づいて中継サーバ３１と暗号化セッション構築メッセージ１００（ｓｍ４〜ｓｍ７（ｓｍ４’〜ｓｍ７’））の送受信が行われる。尚、暗号化セッション構築メッセージ１００の送受信に利用するコネクション（ここではＴＣＰコネクション）が必要か否かは、暗号化セッション構築メッセージ１００の送受信をどのような技術を用いて行うかで異なる。
【００７４】
詳細には、先ずクライアント端末１１（１２）の暗号化セッション構築部１１１は、中継サーバ３１に対して暗号化セッション構築を要求する暗号化セッション構築メッセージｓｍ４を送信する。例えば暗号化セッション構築メッセージにＳＳＬを利用する場合、Ｃｌｉｅｎｔ  Ｈｅｌｌｏメッセージが暗号化セッション構築を要求する暗号化セッション構築メッセージｓｍ４（ｓｍ４’）に該当する。又、これにより、中継サーバ３１は、コネクションを構築する対象となるクライアント端末１１（１２）を識別することができる。
【００７５】
クライアント端末１１（２１）から暗号化セッション構築の要求メッセージｓｍ４（ｓｍ４’）が送信された後、中継サーバ３１とクライアント端末１１（２１）との間で暗号化セッション構築メッセージ１００（ｓｍ５〜ｓｍ７（ｓｍ５’〜ｓｍ７’））の送受信が行われる。ここでは、コネクション対象となるクライアント端末の認証（Ｓｅｒｖｅｒ  Ｈｅｌｌｏ／Ｃｅｒｔｉｆｉｃａｔｅ／Ｓｅｒｖｅｒ  Ｈｅｌｌｏ  Ｄｏｎｅ：ｓｍ５（ｓｍ５’）、クライアント端末１１（２１）と中継サーバ３１との間におけるセッション鍵の交換（Ｃｌｉｅｎｔ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ）：ｓｍ６（ｓｍ６’）、新たに構築する暗号化セッション利用コネクション１３（２３）の設定（Ｃｈａｎｇｅ  Ｃｉｐｈｅｒ  Ｓｐｅｃ／Ｆｉｎｉｓｈｅｄ）：ｓｍ６（ｓｍ６’）及び（Ｃｈａｎｇｅ  Ｃｉｐｈｅｒ  Ｓｐｅｃ／Ｆｉｎｉｓｈｅｄ）：ｓｍ７（ｓｍ７’）が行われる。これにより、クライアント端末１１、２１のそれぞれと中継サーバ３１の間において暗号化セッション利用コネクション１３、２３が構築される。又、暗号化セッション利用コネクション１３、２３に関するコネクション情報１０３と暗号化セッションヘッダ情報１０２が、クライアント端末１１、２１のそれぞれと中継サーバ３１との間で交換される。尚、クライアント端末１１、２１と中継サーバ３１との間におけるセッション鍵の交換は行われなくても構わない。但し、後述するように、データ通信用メッセージ１０４内に中継サーバ３１のみによって読み取り可能な情報を含ませたい場合は、上述のセッション鍵の交換が行われる。
【００７６】
図５は、ステップＳ３におけるデータ通信用メッセージ１０４の作成動作を示すフロー図である。図５を参照して、データ通信用メッセージ１０４の作成動作の詳細を説明する。
【００７７】
クライアント端末１１のデータ暗号化部１１３は、暗号化セッション構築メッセージ１０４の送受信が完了すると、アプリケーション１１８から渡されたデータを、共有鍵管理部１１２が管理するクライアント共有鍵１０１によって暗号化、又は／及び渡されたデータのＭＡＣ計算を行いクライアント暗号化データ２０２を作成する（ステップＳ１０１）。
【００７８】
クライアント暗号化部１１３は、作成したクライアント暗号化データ２０２をデータ通信用メッセージ作成部１１５に渡す。データ通信用メッセージ作成部１１５は、図６に示すデータ通信用メッセージ１０４を作成する。図６を参照して、データ通信用メッセージ１０４は、暗号化データフィールド１０７と非暗号化データフィールド１０８とから構成される。クライアント暗号化データ２０２は、クライアント暗号化データ２０２を暗号化データフィールド１０７に挿入する（ステップＳ１０２）。又、データ通信用メッセージ作成部１１５は、暗号化セッション構築部１１１から通知された暗号化セッションヘッダ情報１０２に基づき、メッセージ種別がデータ通信用メッセージであることを示す暗号化セッションヘッダ２０３を作成し、非暗号化データフィールド１０８に挿入する（ステップＳ３）。
【００７９】
ここで、暗号化データフィールド１０７には任意のデータが挿入されても良い。このため、データ通信用メッセージ作成部１１５は、中継サーバ３１によって読み取り可能なデータ（以下、中継サーバ読み取り可能データ２０１と称す）を暗号化データフィールド１０７に挿入する（ステップＳ１０４）。ここで挿入される中継サーバ読み取り可能データ２０１は、平文データ、中継サーバ３１との間で交換されたセッション鍵によって暗号化されたデータ、データのＭＡＣのいずれか、又はこれらの組み合わせである。
【００８０】
以上のように、データ通信用メッセージ作成部１１５は、データ通信用メッセージ１０４を作成する。尚、ステップＳ１０２〜Ｓ１０４の順番はこの限りではない。
【００８１】
前述のように、ファイアウォール１２、２２がデータ通信用メッセージ１０４に関してチェックするのは、暗号化セッション利用コネクション１３、２３上で送受信されているかと、非暗号化データフィールド１０８が本来規定されたフォーマットに従っているかのみである。このため、暗号化データフィールド１０７については任意のデータを含めることができる。
【００８２】
例えばクライアント端末が通信相手のクライアント端末に対して送信するデータをレイヤ２ヘッダまで含むパケットの形で端末内部でダンプし、その内容を暗号化データフィールドに含めることができる。レイヤ２ヘッダまで含むパケットを端末同士で送受信することで、異なるプライベートネットワークに接続しているクライアント端末同士が、あたかも同一のＬＡＮに接続しているかのように通信することが可能となる。
【００８３】
ＳＳＬを利用して暗号化セッション構築メッセージの送受信を行った場合に、レイヤ２ヘッダまで含むパケットを暗号化データフィールドに含めたデータ通信用メッセージ１０４の構成例を図７に示す。ＳＳＬを利用した場合、暗号化セッションヘッダ２０３には、ＳＳＬレコードヘッダ２２２が挿入される。
【００８４】
図７を参照して、データ暗号化部１１３によってレイヤ２ヘッダまで含むパケットがクライアント共有鍵１０１で暗号化され、クライアント暗号化データ２０２として暗号化データフィールド１０７に挿入される。ここで暗号化されるパケットは、例えばＥｔｈｅｒヘッダ２１２、ＩＰヘッダ２１３、ＴＣＰヘッダ２１４、ＨＴＴＰヘッダ２１５、ペイロード２１６を含む。又、データ通信用メッセージ作成部１１５は、このパケットのサイズ値（以下、データサイズ値２１１と称す）を、中継サーバ読み取り可能データ２０１として暗号化データフィールド１０７に含める。これにより、中継サーバ３１側でパケット毎の転送処理を行うことが可能となる。
【００８５】
中継サーバ３１のデータ通信用メッセージ転送部３１２は、データサイズ値２１１を解析することでパケットが暗号化されている状態であっても、どこからどこまでが１つのパケットであるか判別することができる。このため、中継サーバ３１は、通信相手となるクライアント端末に対して１パケット毎に転送することが可能となる。従って、受信側のクライアント端末は、パケット再構築処理を行う必要がなくなる。
【００８６】
具体的に、データ通信用メッセージ転送部３１２は、受信したデータ通信用メッセージ１０４の暗号化データフィールド１０４に挿入されたデータサイズ値２０１を読みとり、データサイズ値２０１で指定された長さのデータ（ここでは、クライアント暗号化データ２０２）を暗号化データフィールド１０７から読み取る。読み取ったデータを新たなデータ通信用メッセージ１０４の暗号化データフィールド１０７に入れて、通信相手となるクライアント端末へ転送する。
【００８７】
次に、図８及び図９を参照して、クライアント共有鍵１０１の交換動作の一例を説明する。上述のステップＳ１〜Ｓ７の動作では、暗号化セッション利用コネクション１３、２３が構築される前にクライアント共有鍵１０１の交換が行われた。しかしこれに限らず、暗号化セッション利用コネクション１３、２３を利用してクライアント端末間でクライアント共有鍵１０１の交換が行われても良い。この際、既存の標準的な仕組み、例えばＳＳＬやＩＰＳｅｃのＩＫＥ（Ｉｎｔｅｒｎｅｔ  Ｋｅｙ  ｅｘｃｈａｎｇｅ）などを利用してクライアント端末同士で直接クライアント共有鍵１０１の交換を行っても良い。図８は、ＳＳＬを利用したクライアント共有鍵１０１の交換動作を示すメッセージシーケンスである。
【００８８】
図８に示す例では、クライアント端末１１、２１と中継サーバ３１は、ステップＳ２と同様にＳＳＬによる暗号化セッション構築メッセージ１００の送受信を事前に行っているものとする。ここで、クライアント端末１１、２１は、図９に示すようなデータ通信用メッセージ１０４を暗号化セッション利用コネクション１３、２３を介して送受信し、クライアント共有鍵１０１を交換する。
【００８９】
以下では、クライアント端末１１から送信されるデータ通信用メッセージ１０４について具体的に説明する。先ずクライアント端末１１の共有鍵管理部１１２は、通信相手となるクライアント端末２１宛ての暗号化セッション構築メッセージ１００を生成してデータ通信用メッセージ作成部１１５に渡す。データ通信用メッセージ作成部１１５は、渡された暗号化セッション構築メッセージ１００を中継サーバ読み取り可能データ２０１として暗号化データフィールド１０７に挿入し、暗号化セッションヘッダ２０３を非暗号化データフィールド１０８に挿入してデータ通信用メッセージ１０４を作成する。ここで挿入される暗号化セッション構築メッセージ１００は、中継サーバ３１が読み取り可能なＳＳＬメッセージ２２３及びＳＳＬレコードヘッダ２２２’が含まれる。このようにして作成されたデータ通信用メッセージ１０４をデータ通信用メッセージ送受信部１１７が暗号化セッション利用コネクションを利用して中継サーバ３１に送信する。以上の動作は、クライアント端末２１でも同じである。
【００９０】
尚、データ通信用メッセージ作成部１１５は、渡された暗号化セッション構築メッセージ１００を平文のまま挿入しても良いし、中継サーバ３１と何らかの形で交換した共有鍵（例えばセッション鍵）を利用して暗号化セッション構築メッセージ１００に対し暗号化や、ＭＡＣ計算を施した後に挿入しても良い。暗号化又は／及びＭＡＣ計算された暗号化セッション構築メッセージ１００を挿入した場合、データ通信用メッセージ作成部１１５は、暗号化セッション構築メッセージ１００が暗号化されていることを示すフラグデータもデータ通信用メッセージ１０４の暗号化データフィールド１０７に挿入することが好ましい。これにより、中継サーバ３１がデータ通信用メッセージ１０４を受信した際に、復号化する必要があることを知ることができる。又、上述のように、暗号化データフィールド１０７に挿入したパケットの大きさを中継サーバ３１が検出できるように、データサイズ値２１１が中継サーバ読み取り可能データ２０１として暗号化データフィールド１０７に挿入されていることが好ましい。
【００９１】
上記のように作成されたデータ通信用メッセージ１０４を利用してクライアント端末１１、１２間で送受信することで、クライアント共有鍵１０１を交換することができる。ここで、ＳＳＬメッセージ２２３に含める内容は、クライアント共有鍵１０１を共有するクライアント端末の識別及び認証（Ｃｌｉｅｎｔ  Ｈｅｌｌｏ：ｃｍ１、Ｓｅｒｖｅｒ  Ｈｅｌｌｏ／Ｃｅｒｔｉｆｉｃａｔｅ／Ｓｅｒｖｅｒ  Ｈｅｌｌｏ  Ｄｏｎｅ：ｃｍ２、クライアント共有鍵の交換（Ｃｌｉｅｎｔ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ）：ｃｍ３、使用する暗号化セッション利用コネクション１３、２３に関する情報の交換（Ｃｈａｎｇｅ  Ｃｉｐｈｅｒ  Ｓｐｅｃ／Ｆｉｎｉｓｈｅｄ）：ｃｍ３、ｃｍ４である。
【００９２】
中継サーバ３１のデータ通信用メッセージ転送部３１２は、受信したデータ通信用メッセージをもう一方のクライアント端末へ転送する。尚、ＳＳＬメッセージ２２３が、中継サーバ３１が復号化可能な形で暗号化されたりＭＡＣ計算されたりしている場合は、復号化及び／又はＭＡＣ計算後、平文のままか、再度転送先のクライアント端末との間で何らかの形で交換した共有鍵（例えばセッション鍵）によって暗号化した後、転送先のクライアント端末へ転送する。
【００９３】
上述のデータ通信用メッセージ１０４を受信したクライアント端末１１、２１のデータ通信用メッセージ解析部１１６は、暗号化セッション構築メッセージ（ＳＳＬメッセージ２２３）を抽出して共有鍵管理部１１２に渡す。
【００９４】
以上のような手順により、既存の標準的な仕組み、例えばＳＳＬやＩＰＳｅｃのＩＫＥなどを利用してクライアント端末同士で直接クライアント共有鍵１０１の交換を行うことができる。
【００９５】
次に、中継サーバ３１及びクライアント端末１１、２１の認証について説明する。クライアント端末１１、２１や中継サーバ３１の成りすましなどが発生した場合、クライアント端末同士の認証についてはクライアント共有鍵１０１による送受信データの暗号化及び復号化やＭＡＣ計算を行うことにより実現可能である。しかし、より万全なセキュリティを確保するためにはクライアント端末１１、２１から中継サーバ３１を認証したり、中継サーバ３１からクライアント端末１１、２１を認証する必要がある。中継サーバ３１におけるクライアント端末１１、２１の認証、又はクライアント端末１１、２１における中継サーバ３１の認証は、双方とも、クライアント端末１１、２１のそれぞれと中継サーバ３１との間で交換する共有鍵（セッション鍵）によって計算された、データ通信用メッセージ１０４のＭＡＣによって行われることが好ましい。この際、クライアント端末１１、２１のそれぞれと中継サーバ３１との間においてセッション鍵の交換が必要となる。
【００９６】
以下、通信システム１におけるクライアント端末１１、２１、及び中継サーバ３１の認証動作の詳細を説明する。認証に先んじてクライアント端末１１、２１のそれぞれと中継サーバ３１は、それぞれの間で共通のセッション鍵を交換しているものとする。例えば、上述のステップＳ２における暗号化セッション構築用メッセージ１００の送受信により、このセッション鍵の交換が行われる。
【００９７】
クライアント端末１１、２１のデータ通信用メッセージ作成部１１５は、上述のステップＳ３において作成したデータ通信用メッセージ１０４全体、あるいは、作成したデータ通信用メッセージ１０４のうち、事前に中継サーバ３１と合意した一部分に対して、中継サーバ３１と交換したセッション鍵によってＭＡＣ計算を行い、ＭＡＣを暗号化データフィールド１０７に挿入する。
【００９８】
上述のステップＳ５において、中継サーバ３１のデータ通信用メッセージ転送部３１２は、受信したデータ通信用メッセージ１０４全体又は一部に対し上述のセッション鍵でＭＡＣ計算する。又、データ通信用メッセージ１０４に含まれるＭＡＣと、自身で計算したＭＡＣとを比較し、両者が一致するか否かを確認する。これにより中継サーバ３１は、受信したデータ通信用メッセージ１０４が正規のクライアント端末から送信されたものであることを確認することができ、クライアント端末のなりますましを防ぐことができる。クライアント端末１１、２１が中継サーバ３１の認証を行う場合も、中継サーバ３１のデータ通信用メッセージ転送部３１２が計算したＭＡＣをクライアント端末１１、２１のデータ通信用メッセージ解析部１１６が確認することで、中継サーバ３１のなりすましを防ぐことができる。
【００９９】
本発明では、クライアント端末１１、２１間で共通のクライアント共有鍵１０１によって暗号化されたデータ（クライアント暗号化データ２０２）が、データ通信用メッセージ１０４の暗号化データフィールド１０７に挿入されている。このため、中継サーバ３１は、データ通信用メッセージ１０４を中継する際、暗号化データフィールド１０７内のクライアント暗号化データ２０２を復号化や再暗号化しなくても、クライアント端末間の通信セキュリティを確保することができる。すなわち、クライアント端末１１、２１間で送受信されるデータの秘匿性を保持しつつ、中継サーバ３１における処理負荷を軽減することができる。
【０１００】
又、本発明では、暗号化セッション構築メッセージ１００の送受信は、クライアント端末１１、２１のそれぞれと中継サーバ３１との間で行われ、暗号化セッションの構築を開始するメッセージ（ｓｍ１（ｓｍ１’）、ｓｍ４（ｓｍ４’））は必ずクライアント端末から中継サーバに対して送信される。更に、データ通信用メッセージ１０４の非暗号化データフィールド１０８には、クライアント端末１１、２１のそれぞれと中継サーバ３１とが交換した暗号化セッションヘッダ情報１０２に基づく暗号化セッションヘッダ２０３が挿入されている。このため、ファイアウォール１２、２２が、レイヤ５以上の上位レイヤのデータまで吟味してパケット転送のフィルタリングを行っても、クライアント端末１１、２１は中継サーバ３１を介して通信することができる。すなわち、本発明によれば高機能のファイアウォールが設置された異なるプライベートネットワーク間の通信が可能となる。
【０１０１】
２．第２の実施の形態
図１０を参照して、本発明による通信システム１の第２の実施の形態を説明する。本実施の形態は中継サーバを介して１つの端末が複数の端末と通信を行えるようにすることを目的としている。
【０１０２】
第２の実施の形態における通信システム１は、図１に示す第１の実施の形態における通信システム１のクライアント端末１１、２１及び中継サーバ３１に替えてクライアント端末１１’、２１’及び中継サーバ３１’を備え、その他の構成は、第１の実施の形態と同じである。第２の実施の形態におけるクライアント端末１１’、２１’は、図示しない複数のクライアント端末（他のプライベートネットワークに接続されたクライアント端末）と中継サーバ３１’を介して通信する。この際、クライアント端末１１’、２１’は、複数の通信先のクライアント端末に対応する複数の暗号化セッション利用コネクションを中継サーバ３１’との間に構築して通信を行う。ここでクライアント端末１１’、２１’は通信相手毎に異なる暗号化セッション利用コネクションを中継サーバ３１’に対して構築する。中継サーバ３１’はクライアント端末１１’、２１’からのデータ通信用メッセージ１０４の受信に利用した暗号化セッション利用コネクションを基に、転送先の暗号化セッション利用コネクションを判断する。これにより、中継サーバ３１’を介して１つのクライアント端末が複数の端末と通信を行えるようになる。
【０１０３】
図１０を参照して第２の実施の形態におけるクライアント端末１１’、２１’の構成及び動作について詳細に説明する。クライアント端末１１’及び２１’の構成は同様であるので、以下では、クライアント端末１１’について構成の詳細を説明する。
【０１０４】
第２の実施の形態におけるクライアント端末１１’は、第１の実施の形態におけるクライアント端末１１の構成に加えて、宛先端末解決部１１９を備える。又、クライアント端末１１’は、第１の実施の形態における暗号化セッション構築部１１１、データ暗号化部１１３、データ復号化部１１４、データ通信用メッセージ送受信部１１７に替えて、暗号化セッション部１２１、データ暗号化部１２３、データ復号化部１２４、データ通信用メッセージ送受信部１２７を備える。
【０１０５】
暗号化セッション構築部１２１は、第１の実施の形態における暗号化セッション構築部１１１の処理に加えて以下の処理を行う。暗号化セッション構築部１２１は、通信相手となるクライアント端末の数分の異なる暗号化セッション利用コネクションを中継サーバ３１’と構築する。尚、一度の暗号化セッション構築メッセージ１００の送受信で単一の暗号化セッション利用コネクションに関する情報しか交換できない場合は、通信相手となるクライアント端末の数分、暗号化セッション構築メッセージの送受信を繰り返す。例えば暗号化セッション構築メッセージ１００の送受信にＳＳＬを利用する場合は、通信相手となるクライアント端末の数だけＴＣＰコネクションを中継サーバ３１’に対して構築し、当該ＴＣＰコネクション上で暗号化セッション構築メッセージの送受信１００を行う。
【０１０６】
又、暗号化セッション構築部１２１は、どの通信相手に対してどの暗号化セッション利用コネクションを利用するかについて中継サーバ３１’とルールを共有しておく。暗号化セッション構築部１２１は、このようなルールをコネクション対応テーブル１０６として管理する。コネクション対応テーブル１０６は、クライアント端末１１’と中継サーバ３１’との間に構築する暗号化セッション利用コネクションと、これを用いてデータを転送する転送先のクライアント端末（例えばクライアント端末２１’）とを対応付けた情報である。暗号化セッション構築部１２１は、中継サーバ３１’との間で暗号化セッション利用コネクションを構築する前、又は暗号化セッション構築メッセージ１００を送受信する際に、コネクション対応テーブル１０６を中継サーバ３１’に通知する。これにより、暗号化セッション利用コネクションを利用する前にクライアント端末１１’と中継サーバ３１’とで上記ルールを共有することができる。例えば、クライアント端末Ａがクライアント端末Ｂ、クライアント端末Ｃと通信する場合、クライアント端末Ａは、中継サーバ３１’に対して２本の暗号化セッション利用コネクションＸ、Ｙを構築するものとする。又、クライアント端末Ａは、クライアント端末Ｂとの通信に暗号化セッション利用コネクションＸを利用し、クライアント端末Ｃとの通信に暗号化セッション利用コネクションＹはを利用するものとする。この場合クライアント端末Ａは、通信先のクライアント端末Ｂと暗号化セッション利用コネクションＸとを対応付けたコネクション対応テーブル１０６と、通信先のクライアント端末Ｃと暗号化セッション利用コネクションＹとを対応付けたコネクション対応テーブル１０６とを中継サーバ３１’に通知する。
【０１０７】
宛先端末解決部１１９は、アプリケーションから渡されたデータを解析して、当該データの宛先となるクライアント端末のアドレス解決を実行し、その結果を宛先端末情報１０５としてデータ通信用メッセージ送受信部１２７及びデータ暗号化部１２３に通知する。
【０１０８】
データ暗号化部１２３は、第１の実施の形態におけるデータ暗号化部１１３の処理に加えて以下の処理を行う。データ暗号化部１２３は、宛先端末情報１０５に対応するクライアント共有鍵１０１を共有鍵管理部１１２から取得し、これを利用してアプリケーション１１８から渡されたデータの暗号化やＭＡＣ計算を行いクライアント暗号化データ２０２を生成する。
【０１０９】
データ通信用メッセージ送受信部１２７は、第１の実施の形態におけるデータ通信用メッセージ送受信部１１７の処理に加えて以下の処理を行う。データ通信用メッセージ送受信部１２７は、データ通信用メッセージ送受信部１２７はデータ通信用メッセージ作成部１１５からデータ通信用メッセージを渡されると、宛先端末解決部１１９から宛先端末情報１０５を取得するとともに、暗号化セッション構築部１２１からコネクション対応テーブル１０６を取得する。データ通信用メッセージ送受信部１２７は、コネクション対応テーブル１０６に基づいて、宛先端末情報１０５に対応する暗号化セッション利用コネクションを選択し、選択した暗号化セッション利用コネクションからデータ通信用メッセージ１０４を送信する。
【０１１０】
又、データ通信用メッセージ送受信部１２７はデータ通信用メッセージ１０４を受信すると、コネクション対応テーブル１０６を参照して、受信に利用した暗号化セッション利用コネクションに対応する送信元クライアント端末を特定し、その情報を送信元端末情報１０９としてデータ復号化部１２４に通知する。
【０１１１】
データ復号化部１２４は第１の実施の形態におけるデータ復号化部１１４の処理に加えて以下の処理を行う。データ復号化部１２４は、データ通信用メッセージ送受信部１２７から取得した送信元端末情報１０９に対応するクライアント共有鍵１０１を共有鍵管理部１１２から取得する。そして、データ復号化部１２４は、取得したクライアント共有鍵１０１を利用してデータ通信用メッセージ解析部１１６から渡されたクライアント暗号化データ２０２の復号化やＭＡＣ計算行を行う。
【０１１２】
尚、共有鍵管理部１１２が、通信対象となる全てのクライアント端末に対して共通のクライアント共有鍵１０１のみを管理している場合、宛先端末情報１０５は、データ暗号部１２３に通知されなくても良い。この場合、同様に、送信元端末情報１０９は、データ復号部１２４に通知されなくても良い。すなわち、クライアント暗号化データ２０２の生成、又は復号化に使用されるクライアント共有鍵を区別しなくて良い場合は、上記の宛先端末や送信元端末に関する情報の通知は省略される。
【０１１３】
次に、図１０を参照して第２の実施の形態における中継サーバ３１’の構成及び動作の詳細について説明する。中継サーバ３１’は、第１の実施の形態における暗号化セッション構築部３１１、データ通信用メッセージ転送部３１２に替えて、暗号化セッション構築部３２１、データ通信用メッセージ転送部３２２を備える。
【０１１４】
暗号化セッション構築部３２１は、第１の実施の形態における暗号化セッション構築部３１１の処理に加えて以下の処理を行う。暗号化セッション構築部３２１は、暗号化セッション利用コネクションを構築したクライアント端末と、当該クライアント端末がどの暗号化セッション利用コネクションをどの通信相手との通信に利用するかについてルールを共有しておく。例えば、暗号化セッション構築部３２１は、暗号化セッション利用コネクション１３、２３の構築前、又は構築する際にクライアント端末１１’、２１’からコネクション対応テーブル１０６を取得する。暗号化セッション構築部３２１が保持するコネクション対応テーブル１０６には、転送元のクライアント端末と、転送元のクライアント端末との間に構築する暗号化セッション利用コネクションと、転送先のクライアント端末と、転送先のクライアント端末との間に構築する暗号化セッション利用コネクションとが対応付けられている。
【０１１５】
例えば、クライアント端末Ａがクライアント端末Ｂ、クライアント端末Ｃと通信する場合におけるコネクション対応テーブル１０６について説明する。中継サーバ３１’はクライアント端末Ａと２本の暗号化セッション利用コネクションＸ、Ｙを構築し、クライアント端末Ｂと暗号化セッション利用コネクションＺ、クライアント端末Ｃと暗号化セッション利用コネクションＷを構築するものとする。又、暗号化セッション利用コネクションＸは、クライアント端末Ａとクライアント端末Ｂとの通信に、暗号化セッション利用コネクションＹはクライアント端末Ａとクライアント端末Ｃとの通信に、それぞれ利用され、暗号化セッション利用コネクションＺは、クライアント端末Ｂとクライアント端末Ａ、暗号化セッション利用コネクションＷはクライアント端末Ｃとクライアント端末Ａの通信にそれぞれ利用されるものとする。この場合、クライアント端末Ａは、通信先のクライアント端末Ｂと、暗号化セッションＸとを対応付けたコネクション対応テーブル１０６と、通信先のクライアント端末Ｃと、暗号化セッションＹとを対応付けたコネクション対応テーブル１０６を中継サーバ３１’に通知する。クライアント端末Ｂは、通信先のクライアント端末Ａと、暗号化セッションＺとを対応付けたコネクション対応テーブル１０６を中継サーバ３１’に通知する。クライアント端末Ｃは、通信先のクライアント端末Ａと、暗号化セッションＷとを対応付けたコネクション対応テーブル１０６を中継サーバ３１’に通知する。中継サーバ３１’は、クライアント端末Ａ及びＢから通知されたコネクション対応テーブル１０６に基づき、クライアント端末Ａと、暗号化セッション利用コネクションＸと、クライアント端末Ｂと、暗号化セッション利用コネクションＺとを対応付けて、新たなコネクション対応テーブル１０６として管理する。同様に、中継サーバ３１’は、クライアント端末Ａ及びＣから通知されたコネクション対応テーブル１０６に基づきクライアント端末Ａと、暗号化セッション利用コネクションＹと、クライアント端末Ｃと、暗号化セッション利用コネクションＷとを対応付けて、新たなコネクション対応テーブル１０６として管理する。これらのコネクション対応テーブル１０６はデータ通信用メッセージ転送部３２２に通知される。
【０１１６】
データ通信用メッセージ転送部３２２は、第１の実施の形態におけるデータ通信用メッセージ送受信部３１２の処理に加えて以下の処理を行う。データ通信用メッセージ転送部３２２は、クライアント端末１１’、２１’からデータ通信用メッセージ１０４を受信した際に、データ通信用メッセージ１０４の受信に利用した暗号化セッション利用コネクションを判別する。次に、データ通信用メッセージ転送部３２２は、暗号化セッション構築部３２１から通知されたコネクション対応テーブル１０６に基づいて、当該暗号化セッション利用コネクションに対応する転送先の暗号化セッション利用コネクションへ、データ通信用メッセージ１０４を転送する。先ほどの例の場合、暗号化セッション利用コネクションＸから受信したデータ通信メッセージ１０４（すなわちクライアント端末ＡからＢ宛のメッセージ）については、暗号化セッション利用コネクションＺへ転送する。又、暗号化セッション利用コネクションＹから受信したデータ通信用メッセージ１０４（すなわちクライアント端末Ａからクライアント端末Ｃ宛のメッセージ）については、暗号化セッション利用コネクションＷへ、それぞれ転送する。
【０１１７】
以上の構成により、クライアント端末１１’、２１’は中継サーバ３１’を介して複数のクライアント端末と通信を行えるようになる。又、第１の実施の形態と同様に、クライアント共有鍵１０１で暗号化したクライアント暗号化データ２０２を暗号化データフィールド１０７に挿入したデータ通信用メッセージ１０４が送受信されるため、中継サーバ３１’において復号化や再符号化をする必要がない。すなわち、クライアント端末１１’（２１’）と複数のクライアント端末との間において秘匿性のあるデータの送受信ができるとともに、中継サーバ３１’における処理負荷を軽減することができる。又、高機能のファイアウォールが設置された異なるプライベートネットワーク間の通信ができる。
【０１１８】
３．第３の実施の形態
次に、図１１から図１３を参照して本発明による通信システム１の第３の実施の形態について説明する。  中継サーバを介して１つのクライアント端末が複数のクライアント端末と通信を行う場合、従来技術では、クライアント端末毎に別のコネクションが構築され、これを利用してデータの転送が行われている。本実施の形態における通信システム１では、複数のクライアント端末と中継サーバを介して通信する際、中継サーバとの間に構築した１本の暗号化セッション利用コネクションを利用してデータ（データ通信用メッセージ）の転送ができる。
【０１１９】
第３の実施の形態における通信システム１は、図１に示す第１の実施の形態における通信システム１のクライアント端末１１、２１及び中継サーバ３１に替えてクライアントサーバ１１”、２１”及び中継サーバ３１”を備え、その他の構成は、第１の実施の形態と同じである。第３の実施の形態におけるクライアントサーバ１１”、２１”は、図示しない複数のクライアント端末（他のプライベートネットワークに接続されたクライアント端末）と中継サーバ３１”を介して通信する。第３の実施の形態では、クライアント端末１１”、２１”と中継サーバ３１”の間で暗号化セッション構築メッセージ１００の送受信が完了した後にクライアント端末１１”、２１”が中継サーバ３１”に対して送信するデータ通信用メッセージ１０４に宛先クライアント端末を識別する情報（以下、宛先端末ＩＤ２３１と称す）を含める。これにより、クライアント端末１１”、２１”と中継サーバ３１”との間に構築される暗号化セッション利用コネクション１３、２３が単一の場合であっても、クライアント端末１１”、２１”が中継サーバ３１”を介して図示しない他の複数のクライアント端末と通信できる。
【０１２０】
本実施の形態では、同じ中継サーバ３１”を利用するクライアント端末にはそれぞれ一意な端末ＩＤが割り当てられており、各クライアント端末は自端末に割り当てられた端末ＩＤ（送信元端末ＩＤ２４２）と通信相手となるクライアント端末の端末ＩＤ（宛先端末ＩＤ２３１）を通信前に何らかの手段によって取得する。
【０１２１】
宛先端末ＩＤ２３１の例を以下に挙げる。以下の例では、データの送信元をクライアント端末１１”、データの転送先をクライアント端末２１”として説明する。
【０１２２】
第１の例としては、通信相手となるクライアント端末２１”と中継サーバ３１”との間で構築された暗号化セッション利用コネクション２３のコネクション情報１０３（暗号化セッション利用コネクション２３がＴＣＰコネクションの場合は、中継サーバ３１”における送信元ポート番号と宛先ＩＰアドレス、宛先ポート番号の情報など）をクライアント端末１１”が何らかの形で取得し、これを宛先端末ＩＤ２３１として利用する方法がある。
【０１２３】
第２の例としては、クライアント端末１１”、２１”に例えばＵＲＩ（Ｕｎｉｖｅｒｓａｌ  Ｒｅｓｏｕｒｃｅ  Ｉｎｄｉｃａｔｏｒ）のような何らかの一意なＩＤが割り当てられており、クライアント端末１１”は通信を開始する前に予め通信相手の端末ＩＤを取得しておき、取得した端末ＩＤを宛先端末ＩＤ２３１として指定する方法がある。
【０１２４】
通信相手の端末ＩＤ（宛先端末ＩＤ２３１）を取得する方法としては、例えば、フロッピー（登録商標）ディスクやＵＳＢメモリなどの媒体に記録された端末ＩＤを手渡しや郵送など物理的な媒体を使用して交換しても良いし、電子メールに端末ＩＤを添付して交換しても良い。さらには、複数の端末ＩＤをディレクトリとして（電話帳のような形態で）管理する端末ＩＤ管理サーバを別途設けておき、そのサーバに対してアクセスすることで端末ＩＤを取得する方法も考えられる。
【０１２５】
図１１を参照して第３の実施の形態におけるクライアント端末１１”、２１”の構成及び動作について詳細に説明する。クライアント端末１１”及び２１”の構成は同様であるので、以下では、クライアント端末１１”について構成の詳細を説明する。
【０１２６】
第３の実施の形態におけるクライアント端末１１”は、第１の実施の形態におけるクライアント端末１１の構成に加えて、宛先端末解決部１２９を備える。又、クライアント端末１１”は、第１の実施の形態における暗号化セッション構築部１１１、データ暗号化部１１３、データ復号化部１１４、データ通信用メッセージ作成部１１５、データ通信用メッセージ解析部１１６に替えて、暗号化セッション部１３１、データ暗号化部１３３、データ復号化部１３４、データ通信用メッセージ作成部１３５、データ通信用メッセージ解析部１３６を備える。
【０１２７】
暗号化セッション構築部１３１は、第１の実施の形態における暗号化セッション構築部１１１の処理に加えて以下の処理を行う。暗号化セッション構築部１３１は、自端末のクライアント端末の端末ＩＤ（送信元端末ＩＤ２４２）を中継サーバ３１”へ通知する。これにより中継サーバ３１”は暗号化セッション利用コネクションがどのクライアント端末と構築されたものであるか判別できる。送信元端末ＩＤ２４２を中継サーバ３１”へ通知する方法としては、例えば、中継サーバ３１”との暗号化セッション構築メッセージ１００の送受信が完了した後に、データ通信用メッセージ１０４の暗号化データフィールド１０７へ中継サーバ読み取り可能データ２０１として挿入し、これを送信する方法がある。
【０１２８】
宛先端末解決部１２９は、アプリケーション１１８から渡されたデータを解析して、当該データのアドレス解決を行い、転送先のクライアント端末に対応する宛先端末ＩＤ２３１を取得し、これをデータ通信用メッセージ作成部１３５及びデータ暗号化部１３３に通知する。
【０１２９】
データ暗号化部１３３は、第１の実施の形態におけるデータ暗号化部１１３の処理に加えて以下の処理を行う。データ暗号化部１３３は、宛先端末ＩＤ２３１に対応するクライアント共有鍵１０１を共有鍵管理部１１２から取得し、これを利用してアプリケーション１１８から渡されたデータの暗号化やＭＡＣ計算を行いクライアント暗号化データ２０２を生成する。
【０１３０】
データ通信用メッセージ作成部１３５は、第１の実施の形態におけるデータ通信用メッセージ作成部１３５の処理に加えて以下の処理を行う。データ通信用メッセージ作成部１３５は、データ暗号化部１３３から渡されたクライアント暗号化データ２０２を暗号化データフィールド１０７に挿入するとともに、宛先端末解決部１２９から渡された宛先端末ＩＤ２３１を中継サーバ読み取り可能データ２０１として暗号化データフィールド１０７に挿入する。具体的には、宛先端末ＩＤ２３１は平文のまま挿入しても良いし、中継サーバ３１”との間で交換した何らかの共有鍵（例えばセッション鍵）によって暗号化したり、ＭＡＣ計算を行ったりしてから挿入しても良い。
【０１３１】
本実施の形態においてクライアント端末１１”が中継サーバ３１”に対して送信するデータ通信用メッセージ１０４の例を図１２に示す。ここでは、クライアント端末１１”と中継サーバ３１”の間でＳＳＬによって構築された暗号化セッション利用コネクション１３を利用してデータの転送が行われるものとする。図１２に示すように、本実施の形態に係るデータ通信用メッセージ１０４は、暗号化セッションヘッダ２０３としてＳＳＬレコードヘッダ２２２、中継サーバ読み取り可能データ２０１として、宛先端末ＩＤ２３１、クライアント暗号化データ２０２として任意データ２３２が挿入されている。
【０１３２】
又、図１３に示すように、暗号化データフィールド１０７には、中継サーバ読み取り可能データ２０１やクライアント暗号化データ２０２の他に、更に任意の追加データ２０４を挿入しても良い。このため、データ通信用メッセージ作成部１３５は、送信元端末ＩＤ２４２を暗号化データフィールド１０７に挿入したデータ通信用メッセージ１０４を作成することができる。この場合、送信元端末ＩＤ２４２は、転送先のクライアント端末２１”が読み取り可能な形で挿入されることが好ましい。
【０１３３】
データ通信用メッセージ解析部１３６は第１の実施の形態におけるデータ通信用メッセージ解析部１１６の処理に加えて以下の処理を行う。データ通信用メッセージ解析部１３６は、受信したデータ通信用メッセージ１０４の暗号化データフィールド１０７から送信元端末ＩＤ２４２を抽出し、データ復号化部１３４に送信する。
【０１３４】
データ復号化部１３４は、第１の実施の形態におけるデータ通信用メッセージ解析部１１４の処理に加えて以下の処理を行う。データ復号化部１３４は、送信元端末ＩＤ２４２に対応するクライアント共有鍵１０１を共有鍵管理部１１２から取得し、これを用いてクライアント暗号化データ２０２の復号化やＭＡＣ計算を行う。
【０１３５】
このように、送信元のクライアント端末を特定するための送信元端末ＩＤ２４２が暗号化データフィールド１０７に挿入されているため、クライアント端末１１”は、通信相手毎に異なるクライアント共有鍵１０１によって暗号化されたクライアント暗号化データ２０２でも復号することができる。
【０１３６】
次に、図１１を参照して第３の実施の形態における中継サーバ３１”の構成及び動作の詳細について説明する。中継サーバ３１”は、第１の実施の形態における暗号化セッション構築部３１１、データ通信用メッセージ転送部３１２に替えて、暗号化セッション構築部３３１、データ通信用メッセージ転送部３３２を備える。
【０１３７】
暗号化セッション構築部３３１は、第１の実施の形態における暗号化セッション構築部３１１の処理に加えて以下の処理を行う。暗号化セッション構築部３３１には、クライアント端末１１”（２１”）から転送先のクライアント端末２１”（１１”）に対応する送信元端末ＩＤ２４２が通知される。暗号化セッション構築部３３１は、送信元端末ＩＤ２４２に基づき当該クライアント端末１１（２１”）と構築した暗号化セッション利用コネクション１３（２３）のコネクション情報１０３及び暗号化セッションヘッダ情報１０２と、送信元端末ＩＤ２４２とを対応付けてデータ通信用メッセージ転送部３３２に通知する。これにより、送信元クライアント端末１１”（２１”）と、当該クライアント端末と構築した暗号化セッション利用コネクション１３（２３）とが対応付けられる。
【０１３８】
データ通信用メッセージ転送部３３２は、第１の実施の形態におけるデータ通信用メッセージ転送部３１２の処理に加えて以下の処理を行う。データ通信用メッセージ転送部３３２は、受信したデータ通信用メッセージに１０４含まれる宛先端末ＩＤ２３１を参照し、この端子ＩＤに対応付けられたコネクション情報１０３から、宛先クライアント端末との間で構築した暗号化セッション利用コネクションを特定する。そして、宛先端末ＩＤ２３１に対応する暗号化セッションヘッダ情報１０２に基づき暗号化セッションヘッダ２０３の内容を変更し、当該暗号化セッション利用コネクションを利用して受信したデータ通信用メッセージを転送する。
【０１３９】
尚、転送先のクライアント端末において、通信相手によって異なるクライアント共有鍵１０１を利用してクライアント暗号かデータ２０２を作成している場合、データ通信用メッセージ転送部３３２は、図１２に示すように、送信元のクライアント端末Ｋら通知された送信元端末ＩＤ２４２をデータ通信用メッセージ１０４の暗号化データフィールド１０７に挿入して転送しても良い。これにより、転送先のクライアント端末は、受信したデータ通信用メッセージのクライアント暗号化データ２０２の復号化に利用するクライアント共有鍵１０１を選択することができる。尚、クライアント端末から受信したデータ通信用メッセージ１０４に、すでに送信元端末ＩＤ２４２が挿入されていれば、データ通信用メッセージ転送部３３２は送信元端末ＩＤを挿入する必要はない。
【０１４０】
以上のように、本実施の形態では、データ通信用メッセージ１０４の宛先を示す宛先端末ＩＤ２３１が暗号化データフィールドに中継サーバが読み取れる形で記載される。このため従来技術のように、中継サーバが受信したデータ通信用メッセージの転送先を判断するために、受信したデータ通信用メッセージの暗号化データフィールド全体を復号化する必要がない。本実施の形態における中継サーバ３１”は、暗号化データフィールド１０７全体の復号化を行うことなくデータ通信用メッセージ１０４の転送先を判断できるため、転送時における中継サーバの負荷の負荷を従来技術よりも軽減することができる。
【０１４１】
又、本実施の形態による中継サーバ３１”は、受信したデータ通信用メッセージ１０４に記載された宛先端末ＩＤ２３１によって転送先を判断する。このため、クライアント端末１１”、２１”は、中継サーバ３１”との間の単一の暗号化セッション利用コネクションを利用して１つ以上の任意のクライアント端末宛に通信を行うことができる。このため、クライアント端末１１”、２１”、中継サーバ３１”の双方で構築する暗号化セッション利用コネクションの数が従来技術と比較して格段に少なくて済む。このため、クライアント端末１１”、２１”、中継サーバ３１”双方の負荷を従来技術よりも軽減することが可能である。
【０１４２】
又、本実施の形態において宛先端末ＩＤ２３１や送信元端末ＩＤ２４２はデータ通信用メッセージ１０４の暗号化データフィールド１０７に挿入されるため、ファイアウォール１２、２２からは通常の暗号化セッションのフォーマットに従ったデータ通信用メッセージに見えるため、ファイアウォール１２、２１によって通信が遮断される可能性もない。
【０１４３】
更に、本実施の形態では、通信を行うクライアント端末の組を識別するセッション識別子（例えばＩＰＳＥＣのＳＰＩなど）ではなく、個別のクライアント端末を識別する端末ＩＤ（送信元端末ＩＤ２４２、宛先端末ＩＤ２３１）によってパケットの転送先を判断している。このため、中継サーバ３１”が保持しなければならない情報量を大幅に削減することができる。セッション識別子は、２端末間の通信を一意に識別することができる（例えばクライアント端末Ａ−クライアント端末Ｂの通信のセッション識別子と、クライアント端末Ａ−クライアント端末Ｃの通信のセッション識別子は別のものとして扱われる）。しかし、セッション識別子によって転送先を特定する方法では、クライアント端末がｎ台あった場合、セッション識別子を用いると中継サーバはｎＣ２個ものセッション識別子を保持しなければならない。この場合、中継サーバは最大でｎ個のクライアント端末の中から２つの端末を選ぶ組み合わせ数分のセッション識別子を保持しなければならない。例えばｎ＝１０００台の場合は４９９，５００個のセッション識別子が必要）。これに対して本実施の形態では中継サーバはｎ個の端末ＩＤのみを保持していれば良い。
【０１４４】
又、第１の実施の形態と同様に、クライアント共有鍵１０１で暗号化したクライアント暗号化データ２０２を暗号化データフィールド１０７に挿入したデータ通信用メッセージ１０４が送受信されるため、中継サーバ３１’において復号化や再符号化をする必要がない。すなわち、クライアント端末１１”（２１”）と複数のクライアント端末との間において秘匿性のあるデータの送受信ができるとともに、中継サーバ３１”における処理負荷を軽減することができる。又、高機能のファイアウォールが設置された異なるプライベートネットワーク間の通信ができる。
【０１４５】
第３の実施の形態の通信システム１で利用した宛先端末ＩＤ２４２を、複数のクライアント端末に対応付けたＩＤ、すなわちグループＩＤとすることで、複数のクライアント端末にデータを送信する同報配信が可能となる。又、この際、同報先及び送信元のクライアント端末で共通のクライアント共有鍵１０１（以下、グループ鍵と称す）によって、クライアント暗号化データ２０２が作成されることで、クライアント端末１１”、２１”における暗号化処理の負荷を軽減することができる。以下、本実施の形態における同報配信及びグループ鍵による暗号化処理について説明する。
【０１４６】
クライアント端末１１”を一例に、グループ鍵を利用してクライアント暗号化データ２０２を作成する動作について説明する。
【０１４７】
ここで、クライアント端末１１”及びデータの転送先の複数のクライアント端末のそれぞれにおけるクライアント共有鍵管理部１１２は、グループ鍵を何らかの手段で取得している。各クライアント端末がグループ鍵を取得する手段としては、例えば、フロッピー（登録商標）ディスクやＵＳＢメモリなどの媒体に記録されたグループ鍵を手渡しや郵送など物理的な媒体を使用して交換しても良いし、電子メールに共有鍵を添付して交換しても良い。さらには、グループ鍵を保管するグループ鍵保管サーバを別途設けておき、そのサーバに対してアクセスすることでグループ鍵を取得する方法も考えられる。
【０１４８】
グループ鍵の使用は同報配信時に限っても良いし、単一の通信相手に送るデータを暗号化する際に使用しても良い。但し、一般にグループ鍵は個別鍵と比べてセキュリティが弱いため、単一の通信相手に送るデータは個別鍵を利用し、同報配信時の送信データはグループ鍵を利用する、という具合に使い分けることが望ましい。
【０１４９】
クライアント端末１１”がデータ通信用メッセージ１０４の暗号化データフィールド１０７にレイヤ２ヘッダまで含むパケットを含めて通信相手となるクライアント端末へ送信した場合、異なるプライベートネットワークに接続しているクライアント端末同士が、あたかも同一のＬＡＮに接続しているかのように通信することが可能となる。更に、同一のクライアント端末１１”が複数のクライアント端末とこのような通信を行う場合、そのクライアント端末１１”は他の複数のクライアント端末と同一のＬＡＮに接続しているかのような通信ができる。
【０１５０】
このようなケースで、クライアント端末１１”がＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）  ＲｅｑｕｅｓｔパケットやＵｐｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）のＳＳＤＰ（Ｓｉｍｐｌｅ  Ｓｅｒｖｉｃｅ  Ｄｉｓｃｏｖｅｒｙ）パケットを送信した場合、これらのパケットの宛先ＭＡＣアドレスにブロードキャストアドレスが指定されているため、同報配信が発生する。
【０１５１】
クライアント端末１１”の宛先端末解決部１３９はアプリケーション１１８から渡されたパケットのレイヤ２ヘッダの宛先アドレスを見て、それがブロードキャストアドレスやマルチキャストアドレス（すなわち同報配信）であれば、同報配信である旨データ暗号化部１３３に通知する。この際、宛先端末解決部１３９は、同報配信の対象となる複数のクライアント端末の端末ＩＤを宛先端末ＩＤ２４２としてデータ通信用メッセージ作成部１３６に通知する。
【０１５２】
データ暗号化部１３３は宛先端末解決部１３９から同報配信である旨通知された場合、共有鍵管理部１１２が管理するグループ鍵を利用して暗号化やＭＡＣ計算を行いクライアント暗号化データ２０２を生成する。
【０１５３】
データ通信用メッセージ作成部１３６は、宛先端末解決部１３９から複数の宛先端末ＩＤ２４２を渡された場合には同報配信であると判断してデータ通信用メッセージ１０４のコピーを複数作成し、それぞれの暗号化データフィールド１０７に、宛先端末ＩＤ２４２を挿入する。
【０１５４】
又、上述のデータ通信用メッセージ１０４を受信した複数のクライアント端末におけるデータ通信用メッセージ解析部１３７は、中継サーバ３１”から受信したデータ通信用メッセージ１０４が同報配信である場合、データ復号化部１３４に同報配信である旨を通知する。同報配信である旨通知されたデータ復号化部１３４は、共有鍵管理部１１２が管理するグループ鍵を利用して復号化やＭＡＣ計算を行う。
【０１５５】
複数のクライアント端末に対して同報配信を行う場合、アプリケーション１１８から渡されたデータの暗号化に個々のクライアント端末と交換したクライアント共有鍵１０１（以下個別鍵と呼ぶ）を利用すると、同報配信の対象となるクライアント端末の数だけデータの暗号化処理を繰り返し行わなければならない。このため、同報配信の対象となるクライアント端末の数が増えるにしたがって送信元のクライアント端末にかかる負荷が増加し、多数のクライアント端末に対して同報配信を行うことが困難になる。しかし、本実施の形態では、同報配信の対象となる全てのクライアント端末と共通のクライアント共有鍵１０１（グループ鍵）による１回の暗号化処理によりクライアント暗号化データ２０２を生成している。このため、多数のクライアント端末への同報配信をする場合でも、複数回の暗号化処理をする必要がなくなり、送信元のクライアント端末における暗号化処理の負荷は軽減される。
【０１５６】
次にグループＩＤを利用する場合について説明する。送信元のクライアント端末１１”の宛先端末解決部１３９は、アプリケーション１１８から渡されたパケットのレイヤ２ヘッダの宛先アドレスを見て、それがブロードキャストアドレスやマルチキャストアドレス（すなわち同報配信）であれば、グループＩＤを宛先端末ＩＤ２４２としてデータ通信用メッセージ作成部１３６に通知する。
【０１５７】
中継サーバ３１”のデータ通信用メッセージ転送部３３２は受信したデータ通信用メッセージ１０４から宛先端末ＩＤ２４２を抽出する。この際、宛先端末ＩＤ２４２がグループＩＤである場合、データ通信用メッセージ転送部３３２は、グループＩＤに対応する個別の端末ＩＤに基づき、グループを構成するクライアント端末の数だけデータ通信用メッセージ１０４をコピーする。又、データ通信用メッセージ転送部３３２は、コピーしたメッセージ１０４を当該端末ＩＤに対応する暗号化セッション利用コネクションへ転送する。
【０１５８】
このように本実施の形態では、グループ鍵が宛先端末ＩＤ２４２として挿入されたデータ通信用メッセージ１０４が中継サーバ３１”で中継処理される。又、同報配信するメッセージのコピーを中継サーバ３１”ではなくクライアント端末側行なっている。このため、宛先クライアント端末毎の端末ＩＤを宛先端末ＩＤとしてデータ通信用メッセージに含め、中継サーバにおいてメッセージのコピー、及び転送を行なう場合に比べ、中継サーバの負荷を軽減するとともに、データ通信用メッセージ１０４に占める宛先端末ＩＤ２４２のサイズを小さくすることができる。
【０１５９】
又、第１の実施の形態と同様に、クライアント共有鍵１０１で暗号化したクライアント暗号化データ２０２を暗号化データフィールド１０７に挿入したデータ通信用メッセージ１０４が送受信されるため、中継サーバ３１’において復号化や再符号化をする必要がない。すなわち、クライアント端末１１”（２１”）と複数のクライアント端末との間において秘匿性のあるデータの送受信ができるとともに、中継サーバ３１”における処理負荷を軽減することができる。又、高機能のファイアウォールが設置された異なるプライベートネットワーク間の通信ができる。
【０１６０】
尚、グループ鍵とグループＩＤは組み合わせて利用されても良い。
【０１６１】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【図面の簡単な説明】
【０１６２】
【図１】図１は、本発明による通信システムの実施の形態における構成を示す図である。
【図２】図２は、本発明によるクライアント端末及び中継サーバの第１の実施の形態における構成を示すブロック図である。
【図３】図３は、本発明による携帯通信端末における動作とプログラムの移動との対応関係を示すタイミングチャートである。
【図４】図４は、本発明による携帯通信端末の起動、通常動作、間欠動作の１連の動作におけるプログラムの移動状態を示す概念図である。
【図５】図５は、本発明による携帯通信端末の起動時におけるプログラムの移動処理を示すブロック図である。
【図６】図６は、本発明による携帯通信端末の通常動作から間欠動作への遷移時におけるプログラムの移動処理を示すブロック図である。
【図７】図７は、本発明による携帯通信端末の間欠動作から通常動作への遷移時におけるプログラムの移動処理を示すブロック図である。
【図８】図８は、本発明に係る間欠プログラムを細分化した場合のプログラムの移動状態を示す概念図である。
【図９】図９は、従来技術による携帯通信端末の構成を示すブロック図である。
【図１０】図１０は、従来技術による携帯通信端末の構成を示すブロック図である。
【図１１】図１１は、従来技術による携帯通信端末の構成を示すブロック図である。
【図１２】図１２は、従来技術による携帯通信端末の構成を示すブロック図である。
【図１３】図１３は、従来技術による携帯通信端末の構成を示すブロック図である。
【符号の説明】
【０１６３】
１０、２０：プライベートネットワーク
１１、１１’、１１”、２１、２１’、２１”：クライアント端末
１１１：暗号化セッション構築部
１１２：共有鍵管理部
１１３：データ暗号化部
１１４：データ復号化部
１１５：データ通信用メッセージ作成部
１１６：データ通信用メッセージ解析部
１１７：データ通信用メッセージ送受信部
１１８：アプリケーション
１１９：宛先端末解決部
１２、２２：ファイアウォール
３０：グローバルネットワーク
３１、３１’、３１”：中継サーバ
３１１：暗号化セッション構築部
３１２：データ通信用メッセージ転送部
１００、ｓｍ１〜ｓｍ７：暗号化セッション構築メッセージ
１０１：クライアント共有鍵１０１
１０２：暗号化セッションヘッダ情報
１０３：コネクション情報
１０４、ｃｍ１〜ｃｍ５：データ通信用メッセージ
１０５：宛先端末情報
１０６：コネクション対応テーブル
１０７：暗号化データフィールド
１０８：非暗号化データフィールド
２０１：中継サーバ読み取り可能データ
２０２：クライアント暗号化データ
２０３：暗号化セッションヘッダ
２０４：追加データ
２１１：データサイズ値
２１２：Ｅｔｈｅｒヘッダ
２１３：ＩＰヘッダ
２１４：ＴＣＰヘッダ
２１５：ＨＴＴＰヘッダ
２１６：ペイロード
２２２、２２２’：ＳＳＬレコードヘッダ
２２３：ＳＳＬメッセージ
２３１：宛先端末ＩＤ
２３２：任意データ
２４２：送信元端末ＩＤ
【図１】
2008166894.tif 000003
【図２】
2008166894.tif 000004
【図３】
2008166894.tif 000005
【図４】
2008166894.tif 000006
【図５】
2008166894.tif 000007
【図６】
2008166894.tif 000008
【図７】
2008166894.tif 000009
【図８】
2008166894.tif 000010
【図９】
2008166894.tif 000011
【図１０】
2008166894.tif 000012
【図１１】
2008166894.tif 000013
【図１２】
2008166894.tif 000014
【図１３】
2008166894.tif 000015
【手続補正書】
【提出日】平成19年12月13日(2007.12.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアント端末のＩＤと、前記クライアント端末との間で構築された暗号化セッション利用コネクションとを対応付けて管理する中継サーバに接続されるクライアント端末であって、
他のクライアント端末と共通のクライアント共有鍵を保持する共有鍵管理部と、
前記クライアント共有鍵を用いて前記他のクライアント端末宛のデータの暗号化及び／又は前記データのＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の計算を行い、クライアント暗号化データとして出力するデータ暗号化部と、
前記中継サーバが、前記クライアント暗号化データを復号することなく前記他のクライアント端末のＩＤを読み取れる形式で、前記クライアント暗号化データと、宛先端末ＩＤである前記他のクライアント端末のＩＤとを挿入した暗号化データフィールドを含むデータ通信用メッセージを作成するデータ通信用メッセージ作成部と、
前記中継サーバとの間で暗号化セッション構築メッセージを送受信することによって、前記中継サーバとの間に前記暗号化セッション利用コネクションを構築する暗号化セッション構築部と、
前記暗号化セッション利用コネクションを利用して、前記データ通信用メッセージを前記中継サーバに転送する送信部とを具備し、
前記中継サーバは、前記宛先端末ＩＤに対応する暗号化セッション利用コネクションを利用して、前記クライアント暗号化データを含むデータ通信用メッセージを前記他のクライアント端末に転送する
クライアント端末。
【請求項２】
請求項１に記載のクライアント端末において、
前記データ通信用メッセージ作成部は、平文の前記他のクライアント端末のＩＤ、前記中継サーバと交換した共有鍵によって前記他のクライアント端末のＩＤを暗号化したデータ、又は前記中継サーバと交換した共有鍵によって計算した前記他のクライアント端末のＩＤのＭＡＣのいずれか１つを前記宛先端末ＩＤとして暗号化データフィールドに挿入する
クライアント端末。
【請求項３】
請求項１に記載のクライアント端末において、
前記共有鍵管理部は、前記他のクライアント端末宛てにクライアント共有鍵の交換を開始するための暗号化セッション構築メッセージを作成し、
前記データ通信用メッセージ作成部は、前記クライアント共有鍵の交換を開始するための暗号化セッション構築メッセージを前記暗号化データフィールドに挿入して前記データ通信メッセージを作成する
クライアント端末。
【請求項４】
請求項１から３いずれか１項に記載のクライアント端末において、
前記データ通信用メッセージ作成部は、前記暗号化データフィールドに挿入するデータのデータサイズ値を、前記中継サーバが読み取り可能な形式で前記暗号化データフィールドに挿入して前記データ通信メッセージを作成する
クライアント端末。
【請求項５】
請求項４に記載のクライアント端末において、
前記データ暗号化部は、前記共有鍵管理部が管理するクライアント共有鍵のうち前記宛先端末ＩＤに対応するクライアント共有鍵を利用して前記他のクライアント端末宛のデータの暗号化及び／又はデータのＭＡＣの計算を行い、
前記データ通信用メッセージ作成部は、自端末の端末ＩＤを送信元端末ＩＤとして前記暗号化データフィールドに挿入して前記データ通信メッセージを作成する
クライアント端末。
【請求項６】
請求項１から５いずれか１項に記載のクライアント端末において、
前記共有鍵管理部は、複数のクライアント端末と共通のグループ鍵を保持し、
前記データ暗号化部は、前記グループ鍵を利用して前記複数のクライアント端末のそれぞれに送信するデータの暗号化及び／又は前記複数のクライアント端末のそれぞれに送信するデータのＭＡＣの計算を行い、複数の前記クライアント暗号化データとして出力し、
前記データ通信用メッセージ作成部は、前記複数のクライアント暗号化データを含む複数のデータ通信メッセージを作成し、前記複数のクライアント端末に割り当てられた複数の端末ＩＤを、複数の前記宛先端末ＩＤとして前記複数のデータ通信用メッセージの暗号化データフィールドに挿入し、
前記転送部は、前記複数のデータ通信用メッセージを、前記中継サーバとの間で構築した暗号化セッション利用コネクションを利用して前記中継サーバに転送する
クライアント端末。
【請求項７】
請求項１から５いずれか１項に記載のクライアント端末において、
前記共有鍵管理部は、複数のクライアント端末と共通のグループ鍵を保持し、
前記データ暗号化部は、前記グループ鍵を利用して前記複数のクライアント端末のそれぞれに送信するデータの暗号化及び／又は前記複数のクライアント端末のそれぞれに送信するデータのＭＡＣの計算を行い、複数の前記クライアント暗号化データとして出力し、
前記データ通信用メッセージ作成部は、前記複数のクライアント端末に割り当てられた１つのグループ端末ＩＤを、前記宛先端末ＩＤとしてそれぞれの暗号化データフィールドに挿入した複数のデータ通信メッセージを作成し、
前記転送部は、前記複数のデータ通信用メッセージを、前記中継サーバとの間に構築した暗号化セッション利用コネクションを利用して前記中継サーバに転送する
クライアント端末。
【請求項８】
請求項１から５いずれか１項に記載のクライアント端末において、
前記暗号化セッション構築部は前記中継サーバとの間に、複数の前記他のクライアント端末のそれぞれに対応する暗号化セッション利用コネクションを複数構築し、
前記データ通信用メッセージ送信部は、前記データ通信用メッセージを、前記複数の他のクライアント端末のそれぞれに対応する暗号化セッション利用コネクションを利用して中継サーバへ送信する
クライアント端末。
【請求項９】
請求項１から８いずれか１項に記載のクライアント端末において、
前記暗号化セッション構築部は、セッション鍵を予め前記中継サーバと交換し、
前記データ通信用メッセージ作成部は、前記暗号化データフィールドにおける前記クライアント暗号化データ以外のデータの一部又は全部に対して、前記セッション鍵を用いて暗号化し、且つ／又は前記セッション鍵を用いて計算したＭＡＣを前記暗号化データフィールドに挿入してデータ通信用メッセージを作成する
クライアント端末。
【請求項１０】
請求項１から８いずれか１項に記載のクライアント端末において、
前記暗号化セッション構築部は、セッション鍵を予め前記中継サーバと交換し、
前記データ通信用メッセージ作成部は、前記セッション鍵を利用して、前記データ通信用メッセージのうち、事前に中継サーバと合意した部分のＭＡＣを計算し、計算結果を前記暗号化データフィールドに挿入して前記データ通信用メッセージを作成する
クライアント端末。
【請求項１１】
請求項１から１０いずれか１項に記載のクライアント端末において、
前記他のクライアント端末から、前記中継サーバを介して送信されたデータ通信用メッセージを受信する受信部と、
前記受信部で受信したデータ通信用メッセージの暗号化データフィールドから、復号化及び／又はＭＡＣの計算が可能なデータを抽出するデータ通信用メッセージ解析部と、
前記他のクライアント端末と共通のクライアント端末鍵を用いて前記データ通信用メッセージ解析部で抽出されたデータの復号化及び／又は抽出されたデータのＭＡＣの計算を行うデータ復号化部と
を更に具備するクライアント端末。
【請求項１２】
請求項１１に記載のクライアント端末において、
前記中継サーバから受信したデータ通信用メッセージの暗号化データフィールドに、前記他のクライアント端末が送信した暗号化セッション構築メッセージが含まれている場合、前記データ通信用メッセージ解析部は、前記暗号化セッション構築メッセージを前記共有鍵管理部に転送し、
前記共有鍵管理部は、前記データ通信用メッセージ解析部から転送された暗号化セッション構築メッセージに基づき、前記他のクライアント端末と共通のクライアント共有鍵を取得する
クライアント端末。
【請求項１３】
請求項１２に記載のクライアント端末において、
前記データ通信用メッセージ解析部は、受信したデータ通信用メッセージの暗号化データフィールドに含まれる送信元端末ＩＤを抽出し、
前記データ復号化部は、前記共有鍵管理部が管理するクライアント共有鍵のうち、前記データ通信用メッセージ解析部で抽出された送信元端末ＩＤに対応するクライアント共有鍵を利用して、前記データ通信用メッセージ解析部で抽出されたデータの復号化及び／又は前記抽出されたデータのＭＡＣの計算を行う
クライアント端末。
【請求項１４】
請求項１２に記載のクライアント端末において、
前記データ通信用メッセージ解析部は、受信したデータ通信用メッセージに応じて同報通信であることを前記データ復号化部に通知し、
同報通信であることを通知された前記データ復号化部は、前記共有鍵管理部が管理するクライアント共有鍵のうち、同報通信先の複数の他のクライアントサーバと共通のグループ鍵を利用して、前記データ通信用メッセージ解析部で抽出されたデータの復号化及び／又は抽出されたデータのＭＡＣの計算を行う
クライアント端末。
【請求項１５】
請求項１１から１４いずれか１項に記載のクライアントサーバにおいて、
前記データ通信用メッセージ解析部は、予め前記中継サーバから取得したセッション鍵を用いて前記データ通信用メッセージに含まれるデータのＭＡＣを計算し、前記中継サーバから受信したデータ通信用メッセージに含まれるＭＡＣと、前記セッション鍵を用いて計算したＭＡＣとを比較して、前記データ通信用メッセージの認証を行う
クライアント端末。
【請求項１６】
クライアント端末と他のクライアント端末との間で行われるデータの送受信を中継する中継サーバであって、
前記クライアント端末と前記他のクライアント端末のそれぞれとの間で暗号化セッション構築メッセージを送受信することによって、それぞれと個別の暗号化セッション利用コネクションを構築する暗号化セッション構築部と、
前記クライアント端末との間で構築された前記暗号化セッション利用コネクションを利用して前記クライアント端末からのデータ通信用メッセージを受信するデータ通信用メッセージ転送部と
を具備し、
前記データ通信用メッセージは、前記クライアント端末と前記他のクライアント端末との間で共有するクライアント共有鍵によって暗号化されたクライアント暗号化データと宛先端末ＩＤとが挿入された暗号化データフィールドを含み、
前記暗号化セッション構築部は、前記クライアント端末と前記他のクライアント端末のそれぞれのＩＤと、前記クライアント端末と前記他のクライアント端末のそれぞれと構築された前記暗号化セッション利用コネクションとの対応関係を前記データ通信用メッセージ転送部に通知し、
前記データ通信用メッセージ転送部は、前記クライアント暗号化データを復号することなく前記宛先端末ＩＤを読み取り、前記対応関係に従って、前記宛先端末ＩＤに対応する前記セッション利用コネクションを使って前記クライアント暗号化データを含むデータ通信用メッセージを前記他のクライアント端末に転送する
中継サーバ。
【請求項１７】
請求項１６に記載の中継サーバにおいて、
前記暗号化セッション構築部は、予め、前記クライアント端末と前記他のクライアント端末のそれぞれと、個別のセッション鍵を交換し、
前記クライアント端末から送信される前記データ通信用メッセージは、前記クライアント端末と交換したセッション鍵によって暗号化された宛先端末ＩＤ及び／又は前記クライアント端末と交換したセッション鍵によって計算された宛先ＩＤのＭＡＣが前記暗号化フィールドに挿入され、
前記データ通信用メッセージ転送部は、送信元の前記クライアント端末と交換したセッション鍵によって復号及び／又は計算することで前記宛先端末ＩＤを読み取り、前記対応関係に従って、前記宛先端末ＩＤに対応する前記暗号化セッション利用コネクションを使って前記クライアント暗号化データを含むデータ通信用メッセージを前記他のクライアント端末に転送する
中継サーバ。
【請求項１８】
請求項１６又は１７に記載の中継サーバにおいて、
前記暗号化セッション構築部は、予め、前記クライアント端末と前記他のクライアント端末のそれぞれと個別のセッション鍵を交換し、
前記データ通信用メッセージ転送部は、前記クライアント端末から受信したデータ通信用メッセージの暗号化データフィールドの一部に対し、送信元の前記クライアント端末と前記暗号化セッション構築部が交換したセッション鍵によって復号化及び／又はＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の計算が可能な場合、前記暗号化データフィールドの一部に対し前記他のクライアント端末と交換した前記セッション鍵によって復号化及び／又はＭＡＣの計算を行い、復号化結果及び／又はＭＡＣを前記データ通信用メッセージの前記暗号化データフィールドに挿入して前記他のクライアント端末に転送する
中継サーバ。
【請求項１９】
請求項１６又は１７に記載の中継サーバにおいて、
前記暗号化セッション構築部は、予め、前記クライアント端末と前記他のクライアント端末のそれぞれと個別のセッション鍵を交換し、
前記データ通信用メッセージ転送部は、送信元の前記クライアント端末と交換したセッション鍵を利用して、受信したデータ通信用メッセージに含まれるデータのＭＡＣを計算し、前記受信したデータ通信用メッセージに含まれるＭＡＣと、前記セッション鍵を利用して計算したＭＡＣとを比較することでメッセージ認証を行う
中継サーバ。
【請求項２０】
請求項１から１５のいずれか１項に記載のクライアント端末と、
請求項１６から１９いずれか１項に記載の中継サーバと、
前記クライアント端末に接続されたプライベートネットワークと、
前記中継サーバに接続されたグローバルネットワークと、
前記プライベートネットワークと前記グローバルネットワークとの間に設けられ、前記暗号化セッション利用コネクションを監視するファイアウォールと、
を具備する
通信システム。
【請求項２１】
第１のクライアント端末と第２のクライアント端末からなる複数のクライアント端末間におけるデータの送受信を、中継サーバを介して実行する通信方法であって、
前記複数のクライアント端末は共通のクライアント共有鍵を保持し、
前記複数のクライアント端末のそれぞれが、前記中継サーバとの間に暗号化セッション利用コネクションを構築するステップと、
前記第１のクライアント端末が、前記中継サーバに暗号化セッションヘッダに含めるヘッダ情報を通知するステップと、
前記複数のクライアント端末は共通のクライアント共有鍵を保持し、
前記複数のクライアント端末のそれぞれが、前記中継サーバとの間に暗号化セッション利用コネクションを構築するステップと、
前記第１のクライアント端末が、前記クライアント共有鍵を用いて前記第２のクライアント端末宛のデータを暗号化してクライアント暗号化データを生成するステップと、
前記第１のクライアント端末が、前記クライアント暗号化データと宛先となる前記第２クライアント端末のＩＤを挿入した暗号化データフィールドを含むデータ通信用メッセージを作成するステップと、
前記第１のクライアント端末が、前記中継サーバに前記データ通信用メッセージを送信するステップと、
前記中継サーバが、前記クライアント暗号化データを復号することなく前記第２のクライアント端末のＩＤを読み取るステップと、
前記中継サーバが、前記読み取ったＩＤに対応する暗号化セッション利用コネクションを利用して、前記クライアント暗号化データを含む通信用メッセージを、前記第２のクライアント端末に送信するステップと、
を具備する
通信方法。
【請求項２２】
請求項２１に記載の通信方法において、
クライアント端末が、受信したデータ通信用メッセージの暗号化データフィールドに含まれる前記クライアント暗号化データを、前記クライアント共有鍵を用いて復号化し、前記データを取得するステップを更に備える
通信方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
又、ＩＰＳＥＣ（ＩＰ  ｓｅｃｕｒｉｔｙ  ｐｒｏｔｏｃｏｌ）の場合、暗号化セッションヘッダ２０３としてＩＳＡＫＭＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ  ＆  Ｋｅｙ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）ヘッダやＡＨ（Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｈｅａｄｅｒ）やＥＳＰ（ｅｎｃａｐｓｕｌａｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）ヘッダなど様々なヘッダが利用される。ＳＳＬとは異なりメッセージ種別によって付与される暗号化セッションヘッダ２０３の種類が異なる。又、ＩＰＳＥＣの場合、データ通信用メッセージ１０４の暗号化データフィールド１０７は、シーケンス番号フィールド（ＩＶ（Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）フィールドを利用する場合はＩＶフィールド）と、ＩＣＶ（Ｉｎｔｅｇｒｉｔｙ  Ｃｈｅｃｋ  Ｖａｌｕｅ）フィールドで挟まれた部分である。又、ＩＰＳＥＣの場合は暗号化セッション利用コネクション１３、２３のそれぞれをコネクションが構築される端末（ここでは、クライアント端末１１、２１と中継サーバ３１）のＩＰアドレスとプロトコル番号によって識別することができる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
暗号化セッションヘッダ情報１０２の交換及び暗号化セッション利用コネクション１１、１２の構築が終わると、クライアント端末（例えばクライアント端末１１）は、通信相手のクライアント端末（例えばクライアント端末２１）に届けたいデータを送信するためのメッセージ（データ通信用メッセージ１０４）を作成する。データ通信用メッセージ１０４は暗号化されたデータを入れるフィールド（以下、暗号化データフィールド１０７と称す）と暗号化されていないデータを入れるフィールド（以下、非暗号化データフィールド１０８と称す）に分けられる。データ通信用メッセージ１０４のうち、どの部分が暗号化データフィールド１０７で、どの部分が非暗号化データフィールド１０８であるかは、暗号化セッションを提供する技術によって規定されている。クライアント端末１１、１２は通信相手の端末に届けたいデータをクライアント共有鍵１０１によって暗号化やＭＡＣの計算を行い、これをクライアント暗号化データ２０２として暗号化データフィールド１０７に挿入するとともに、非暗号化データフィールド１０８に暗号化セッションヘッダ２０３を挿入して、データ通信用メッセージ１０４を作成する。尚、暗号化セッションヘッダ２０３の一部は、暗号化されて暗号化データフィールド１０７に含まれることもある。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１３９
【補正方法】変更
【補正の内容】
【０１３９】
尚、転送先のクライアント端末において、通信相手によって異なるクライアント共有鍵１０１を利用してクライアント暗号かデータ２０２を作成している場合、データ通信用メッセージ転送部３３２は、図１２に示すように、送信元のクライアント端末から通知された送信元端末ＩＤ２４２をデータ通信用メッセージ１０４の暗号化データフィールド１０７に挿入して転送しても良い。これにより、転送先のクライアント端末は、受信したデータ通信用メッセージのクライアント暗号化データ２０２の復号化に利用するクライアント共有鍵１０１を選択することができる。尚、クライアント端末から受信したデータ通信用メッセージ１０４に、すでに送信元端末ＩＤ２４２が挿入されていれば、データ通信用メッセージ転送部３３２は送信元端末ＩＤを挿入する必要はない。