(57)【要約】  第２装置の秘密鍵が中継装置に格納され、第１装置が、共通鍵を特定するための秘密情報を設定し、第２装置の公開鍵を用いて秘密情報を暗号化した暗号化秘密情報を生成し、中継装置に送信する。次に、中継装置が、第２装置の秘密鍵を用いて暗号化秘密情報を復号し、秘密情報を抽出する。そして、中継装置が、暗号化秘密情報を第２装置に送信し、第２装置が、当該第２装置の秘密鍵を用いて暗号化秘密情報を復号し、秘密情報を抽出する。その後、第１装置と中継装置との間、及び、第２装置と中継装置との間で、通信ログ情報と秘密情報とに対応する終了情報を交換する。
2009060899.tif 000002
【特許請求の範囲】
【請求項１】
二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とが、他の中継装置を介して共通鍵を設定する共通鍵設定方法であって、
上記第２装置の秘密鍵を上記中継装置の記憶部に格納する秘密鍵共有過程と、
上記第１装置の秘密情報設定部が、共通鍵を特定するための秘密情報を設定する秘密情報設定過程と、
上記第１装置の公開鍵暗号化部が、上記第２装置の秘密鍵に対応する第２装置の公開鍵を用いて上記秘密情報を暗号化した暗号化秘密情報を生成する秘密情報暗号化過程と、
上記第１装置の送信部が、上記暗号化秘密情報を上記中継装置に送信する暗号化秘密情報送信過程と、
上記中継装置の復号部が、当該中継装置の記憶部から読み込んだ上記第２装置の秘密鍵を用いて上記暗号化秘密情報を復号し、上記秘密情報を抽出する第１秘密情報復号過程と、
上記中継装置の送信部が、上記暗号化秘密情報を上記第２装置に送信する暗号化秘密情報転送過程と、
上記第２装置の復号部が、当該第２装置の秘密鍵を用いて上記暗号化秘密情報を復号し、上記秘密情報を抽出する第２秘密情報復号過程と、
上記第１装置の終了情報生成部が、当該第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第１終了情報を生成する第１終了情報生成過程と、
上記第１装置の送信部が、上記第１終了情報を上記中継装置に送信する第１終了情報送信過程と、
上記中継装置の終了情報生成部が、上記中継装置と上記第２装置との間の通信ログ情報と、上記秘密情報と、に対応する第２終了情報を生成する第２終了情報生成過程と、
上記中継装置の送信部が、上記第２終了情報を上記第２装置に送信する第２終了情報送信過程と、
上記第２装置の終了情報生成部が、当該第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第３終了情報を生成する第３終了情報生成過程と、
上記第２装置の送信部が、上記第３終了情報を上記中継装置に送信する第３終了情報送信過程と、
上記中継装置の終了情報生成部が、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第４終了情報を生成する第４終了情報生成過程と、
上記中継装置の送信部が、上記第４終了情報を上記第１装置に送信する第４終了情報送信過程と、
を有する共通鍵設定方法。
【請求項２】
請求項１の共通鍵設定方法であって、
上記第２装置の送信部が、上記秘密情報暗号化過程の前に、上記第２装置の公開鍵の証明書を上記中継装置に送信する第１公開鍵証明書送信過程と、
上記中継装置の受信部が、上記第２装置の公開鍵の証明書を受信し、上記中継装置の送信部が、上記秘密情報暗号化過程の前に、上記第２装置の公開鍵の証明書を上記第１装置に送信する公開鍵証明書送信過程と、
上記第１装置の終了情報検証部が、上記第４終了情報が上記秘密情報に対応するか否かを検証する終了情報検証過程と、をさらに有する、共通鍵設定方法。
【請求項３】
請求項２の共通鍵設定方法であって、
上記第１装置の送信部が、上記第１装置の公開鍵の証明書を上記中継装置に送信する第２公開鍵証明書送信過程と、
上記第１装置の署名生成部が、上記第１装置の公開鍵に対応する上記第１装置の秘密鍵を用いて署名情報を生成する署名情報生成過程と、
上記第１装置の送信部が、上記署名情報を上記中継装置に送信する署名情報送信過程と、
上記中継装置の署名検証部が、上記第１装置の公開鍵を用いて上記署名情報を検証し、当該中継装置が上記第１装置を認証する署名情報検証過程と、
を有する共通鍵設定方法。
【請求項４】
二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とが、他の中継装置を介して共通鍵を設定する共通鍵設定方法であって、
上記第１装置の秘密情報設定部が、共通鍵を特定するための秘密情報を設定する秘密情報設定過程と、
上記第１装置の公開鍵暗号化部が、中継装置の秘密鍵に対応する中継装置の公開鍵を用いて上記秘密情報を暗号化した第１暗号化秘密情報を生成する第１秘密情報暗号化過程と、
上記第１装置の送信部が、上記第１暗号化秘密情報を上記中継装置に送信する暗号化秘密情報送信過程と、
上記中継装置の復号部が、当該中継装置の記憶部から読み込んだ上記中継装置の秘密鍵を用いて上記第１暗号化秘密情報を復号し、上記秘密情報を抽出する第１秘密情報復号過程と、
上記中継装置の公開鍵暗号化部が、上記第２装置の公開鍵を用いて上記秘密情報を暗号化した第２暗号化秘密情報を生成する第２秘密情報暗号化過程と、
上記中継装置の送信部が、上記第２暗号化秘密情報を上記第２装置に送信する暗号化秘密情報転送過程と、
上記第２装置の復号部が、上記第２装置の公開鍵に対応する当該第２装置の秘密鍵を用いて上記第２暗号化秘密情報を復号し、上記秘密情報を抽出する第２秘密情報復号過程と、
上記第１装置の終了情報生成部が、当該第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第１終了情報を生成する第１終了情報生成過程と、
上記第１装置の送信部が、上記第１終了情報を上記中継装置に送信する第１終了情報送信過程と、
上記中継装置の終了情報生成部が、上記中継装置と上記第２装置との間の通信ログ情報と、上記秘密情報と、に対応する第２終了情報を生成する第２終了情報生成過程と、
上記中継装置の送信部が、上記第２終了情報を上記第２装置に送信する第２終了情報送信過程と、
上記第２装置の終了情報生成部が、当該第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第３終了情報を生成する第３終了情報生成過程と、
上記第２装置の送信部が、上記第３終了情報を上記中継装置に送信する第３終了情報送信過程と、
上記中継装置の終了情報生成部が、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第４終了情報を生成する第４終了情報生成過程と、
上記中継装置の送信部が、上記第４終了情報を上記第１装置に送信する第４終了情報送信過程と、
を有する共通鍵設定方法。
【請求項５】
請求項１から４の何れかの共通鍵設定方法であって、
上記第１装置の乱数生成部が、第１乱数を生成する第１乱数生成過程と、
上記第１装置の送信部が、上記第１乱数を上記中継装置に送信する第１乱数送信過程と、
上記中継装置の送信部が、上記第１乱数を上記第２装置に送信する第２乱数送信過程と、
上記第２装置の乱数生成部が、第２乱数を生成する第２乱数生成過程と、
上記第２装置の送信部が、上記第２乱数を上記中継装置に送信する第３乱数送信過程と、
上記中継装置の送信部が、上記第２乱数を上記第１装置に送信する第４乱数送信過程と、をさらに有し、
上記共通鍵は、上記第１乱数と上記第２乱数と上記秘密情報とによって定まる情報であり、
上記第１装置と上記中継装置との間の通信ログ情報は、上記第１乱数と上記第２乱数とを含み、
上記中継装置と上記第２装置との間の通信ログ情報は、上記第１乱数と上記第２乱数とを含む、共通鍵設定方法。
【請求項６】
請求項５の共通鍵設定方法であって、
上記第１終了情報と上記第２終了情報とは同一の情報であり、
上記第３終了情報と上記第４終了情報とは同一の情報である、共通鍵設定方法。
【請求項７】
請求項１から４の何れかの共通鍵設定方法であって、
上記第１終了情報と上記第２終了情報とは同一の情報であり、
上記第３終了情報と上記第４終了情報とは同一の情報である、共通鍵設定方法。
【請求項８】
請求項１から４の何れかの共通鍵設定方法であって、
上記第４終了情報送信過程の後に、上記第１装置の送信部が送信開始要求情報を上記中継装置に送信し、上記中継装置の送信部が当該送信開始要求情報を上記第２装置に送信し、上記第２装置の送信部が送信開始応答情報を上記中継装置に送信し、上記中継装置の送信部が当該送信開始応答情報を上記第１装置に送信する再接続開始過程と、
上記第１装置の終了情報生成部が、上記再接続開始過程以後の当該第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第５終了情報を生成する第５終了情報生成過程と、
上記第１装置の送信部が上記第５終了情報を上記中継装置に送信し、上記中継装置の送信部が上記第５終了情報を上記第２装置に送信する第５終了情報送信過程と、
上記第２装置の終了情報生成部が、上記再接続開始過程以後の当該第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第６終了情報を生成する第６終了情報生成過程と、
上記第２装置の送信部が上記第６終了情報を上記中継装置に送信し、上記中継装置の送信部が上記第６終了情報を上記第１装置に送信する第６終了情報送信過程と、
を有する共通鍵設定方法。
【請求項９】
請求項１から４の何れかの共通鍵設定方法であって、
上記秘密情報設定過程の前に、上記中継装置が、上記第１装置の認証処理を実行し、認証処理に合格した上記第１装置との間で第２共通鍵を共有し、当該第２共通鍵を上記中継装置の記憶部と上記第１装置の記憶部とに格納するセッション確立過程と、
上記第１装置の共通鍵暗号処理部が、上記第２共通鍵を用い、暗号化された送信開始要求情報を生成する送信開始要求情報暗号化過程と、
上記第１装置の送信部が、上記暗号化された送信開始要求情報を上記中継装置に送信する送信開始要求情報送信過程と、
上記中継装置の共通鍵暗号処理部が、上記暗号化された送信開始要求情報を上記第２共通鍵を用いて復号する送信開始要求情報復号過程と、
上記送信開始要求情報復号過程によって上記送信開始要求情報が正しく復号された場合にのみ、上記中継装置の送信部が、当該送信開始要求情報を上記第２装置に転送する送信開始要求情報転送過程と、
上記第２装置の送信部が、受信された上記送信開始要求情報に応じた送信開始応答情報を上記中継装置に送信する送信開始応答情報送信過程と、
上記中継装置の送信部が、受信された上記送信開始応答情報を上記第１装置に転送する送信開始応答情報転送過程と、をさらに有し、
上記秘密情報設定過程は、上記第１装置が上記送信開始応答情報を受信した場合にのみ実行される過程である、共通鍵設定方法。
【請求項１０】
請求項１から４の何れかの共通鍵設定方法であって、
上記秘密情報設定過程の前に、上記中継装置が、上記第１装置の認証処理を実行し、認証処理に合格した上記第１装置との間でセッション識別子を共有し、当該セッション識別子又はそれに対応する対応情報を上記中継装置の記憶部に格納し、当該セッション識別子を上記第１装置の記憶部に格納するセッション確立過程と、
上記第１装置の共通鍵暗号処理部が、上記セッション識別子を含む送信開始要求情報を生成する送信開始要求情報生成過程と、
上記第１装置の送信部が、上記セッション識別子を含む送信開始要求情報を上記中継装置に送信する送信開始要求情報送信過程と、
受信された上記送信開始要求情報が具備するセッション識別子と、上記中継装置の記憶部に格納されたセッション識別子とが等しいか、又は、受信された上記送信開始要求情報が具備するセッション識別子が上記中継装置の記憶部に格納された上記対応情報に対応する場合にのみ、上記中継装置の送信部が、当該送信開始要求情報を上記第２装置に転送する送信開始要求情報転送過程と、
上記第２装置の送信部が、受信された上記送信開始要求情報に応じた送信開始応答情報を上記中継装置に送信する送信開始応答情報送信過程と、
上記中継装置の送信部が、受信された上記送信開始応答情報を上記第１装置に転送する送信開始応答情報転送過程と、をさらに有し、
上記秘密情報設定過程は、上記第１装置が上記送信開始応答情報を受信した場合にのみ実行される過程である、共通鍵設定方法。
【請求項１１】
二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とを中継する中継装置であって、
記憶部と、送信部と、受信部と、復号部と、第１終了情報生成部と、第２終了情報生成部とを有し、
上記記憶部は、上記第２装置の秘密鍵を格納し、
上記受信部は、上記第２装置の秘密鍵に対応する上記第２装置の公開鍵を用いて共通鍵を特定するための秘密情報を暗号化した暗号化秘密情報を受信し、
上記復号部は、上記記憶部から読み込んだ上記第２装置の秘密鍵を用いて上記暗号化秘密情報を復号して上記秘密情報を抽出し、
上記送信部は、上記暗号化秘密情報を上記第２装置に送信し、
上記受信部は、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第１終了情報を、上記第１装置から受信し、
上記第１終了情報生成部は、上記中継装置と上記第２装置との間の通信ログ情報と、上記秘密情報と、に対応する第２終了情報を生成し、
上記送信部は、上記第２終了情報を上記第２装置に送信し、
上記受信部は、上記第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第３終了情報を、上記第２装置から受信し、
上記第２終了情報生成部は、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第４終了情報を生成し、
上記送信部は、上記第４終了情報を上記第１装置に送信する、中継装置。
【請求項１２】
二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とを中継する中継装置であって、
記憶部と、送信部と、受信部と、復号部と、公開鍵暗号化部と、第１終了情報生成部と、第２終了情報生成部とを有し、
上記記憶部は、当該中継装置の秘密鍵を格納し、
上記受信部は、共通鍵を特定するための秘密情報が、当該中継装置の秘密鍵に対応する当該中継装置の公開鍵を用いて暗号化された第１暗号化秘密情報を受信し、
上記復号部は、上記記憶部から読み込んだ当該中継装置の秘密鍵を用いて上記第１暗号化秘密情報を復号し、上記秘密情報を抽出し、
上記公開鍵暗号化部は、上記第２装置の公開鍵を用いて上記秘密情報を暗号化した第２暗号化秘密情報を生成し、
上記送信部は、上記第２暗号化秘密情報を上記第２装置に送信し、
上記受信部は、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第１終了情報を、上記第１装置から受信し、
上記第１終了情報生成部は、上記中継装置と上記第２装置との間の通信ログ情報と、上記秘密情報と、に対応する第２終了情報を生成し、
上記送信部は、上記第２終了情報を上記第２装置に送信し、
上記受信部は、上記第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第３終了情報を、上記第２装置から受信し、
上記第２終了情報生成部は、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第４終了情報を生成し、
上記送信部は、上記第４終了情報を上記第１装置に送信する、中継装置。
【請求項１３】
請求項１１又は１２の中継装置であって、
暗号リスト制限部をさらに有し、
上記受信部は、上記秘密情報を２つの装置間で共有するための暗号方式のリストである暗号リストを上記第１装置から受信し、
上記暗号リスト制限部は、上記暗号リストが具備する暗号方式から、一方の装置において上記秘密情報を公開鍵暗号方式によって暗号化し、当該暗号文を他の装置に送信し、当該他の装置において当該暗号文を復号することによって両装置間で上記秘密情報を共有する暗号方式のみを選択し、選択した暗号方式のみからなる新たな暗号リストを生成し、
上記送信部は、上記新たな暗号リストを上記第２装置に送信する、中継装置。
【請求項１４】
請求項１１又は１２の中継装置であって、
上記受信部は、上記第４終了情報を上記第１装置へ送信した後に、当該第１装置から送信された送信開始要求情報を受信し、
上記送信部は、受信された上記送信開始要求情報を上記第２装置へ転送し、
上記受信部は、上記第２装置から送信開始応答情報を受信し、
上記送信部は、受信された上記送信開始応答情報を上記第１装置に転送し、
上記送信部は、上記第１装置と上記中継装置との間の上記送信開始要求情報以後の通信ログ情報と、上記秘密情報と、に対応する情報である第５終了情報を、上記第１装置から受信し、
上記送信部は、受信された上記第５終了情報を上記第２装置へ転送し、
上記受信部は、上記送信開始要求情報以後の上記第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する情報である第６終了情報を、上記第２装置から受信し、
上記送信部は、受信された上記第６終了情報を上記第１装置へ転送する、中継装置。
【請求項１５】
請求項１１又は１２の中継装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とが、他の中継装置を介して共通鍵を設定する技術に関する。
【背景技術】
【０００２】
クライアント装置とサーバ装置との間の通信路の安全性を認証と暗号化によって保つためのプロトコルにＴＬＳ（Transport Layer Security）やＳＳＬ（Secure Sockets Layer）がある（例えば、非特許文献１，２参照）。これらのプロトコルでは、クライアント装置及びサーバ装置の二装置間での認証処理（処理１）と、暗号技術を用いた当該二装置間での共通鍵の共有化処理（処理２）と、当該共通鍵を特定するための秘密情報と当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理（処理３）とを含む。なお、認証処理が実行されるのは、攻撃者の装置がサーバ装置になり済まし、不正にクライアント装置から共通鍵を取得する「中間者攻撃」を受けないようにするためである。また、この認証処理には、サーバ装置の認証処理のみを行うモードと、サーバ装置とクライアント装置の両者の認証を行うモードとが存在する。【０００３】
以下、これらのプロトコルの概要を示す。なお、以下ではＴＬＳのプロトコルの概要を説明するが、これらの基本手順についてはＳＳＬやそれらを拡張したプロトコルについても同様である（以下、ＴＬＳ，ＳＳＬ及びそれらを拡張したプロトコルを「ＴＬＳ等」と呼ぶ）。また、以下では、本発明を説明するために必要な事項を中心に説明し、本発明を説明するために必要ない部分については説明を省略する。【０００４】
［サーバ装置の認証処理のみを行うモード］
図１は、従来のサーバ装置の認証処理のみを行うモードの概要を説明するためのシーケンス図である。なお、ＴＬＳでは鍵交換方式としてＲＳＡに基づく手法やDiffie-Hellman(DH)に基づく手法などを選択できるが、以下ではＲＳＡに基づく手法の場合のみを説明する。【０００５】
この手順の場合、まず、前処理として第２装置（サーバ装置）の記憶部に第２装置の秘密鍵SKsが格納されている。第１装置（クライアント装置）が第２装置と通信を開始する場合、まず、第１装置は、乱数R1を生成し、この乱数R1（ClientHello.random）と暗号リストCSL（cipher suite list）とを含む情報（ClientHelloメッセージ）を第２装置に送信する。これに対し、第２装置は、乱数R2を生成し、この乱数R2（ServerHello.random）と暗号リストCSLから選択された暗号方式C（cipher suite）とを含む情報（ServerHelloメッセージ）を第１装置に送信する。【０００６】
次に、第２装置がその公開鍵証明書Csを含む情報（Certificateメッセージ）を第１装置に送信する。なお、第２装置はさらにServerHelloDoneのメッセージを第１装置に送信するが本明細書ではこの説明を省略する。【０００７】
次に、第１装置は、乱数を生成し、生成した乱数を秘密情報PMS（premaster secret）とする。これは、共通鍵Keyを特定するための情報である。第１装置は、この秘密情報PMSを第２装置の公開鍵PKsで暗号化した暗号文PKs(PMS) を生成し、それを含む情報（ClientKeyExchangeメッセージ）を第２装置に送信する（処理１の第１装置側チャレンジ＋処理２）。第２装置は自らの秘密鍵SKsを用いて暗号文PKs(PMS)を復号することで秘密情報PMSを取得でき、秘密情報PMSと乱数R1,R2とからマスター秘密鍵MSを算出する。さらに、第２装置は、マスター秘密鍵MSと乱数R1,R2とから、共通鍵Keyを算出する。【０００８】
その後、第１装置は、暗号処理を開始することの通知（ChangeCipherSpec）を第２装置に送信し（以下では、明示する場合を除いて説明省略）、第２装置と第１装置との間の通信ログ情報HS1と、秘密情報PMSとに対応する終了情報FN1（Finishedメッセージ）を生成し、これを第２装置に送信する。ＴＬＳでは、マスター秘密鍵MSを用い、第２装置と第１装置との間の通信ログ情報HS1を認証対象として生成されたメッセージ認証子(MAC:Message Authentication Code)を終了情報FN1とする。また、ＴＬＳの場合、通常、終了情報FN1は、共通鍵Keyを用いて共通鍵暗号処理部１２ｉで暗号化されて第２装置に送信され、必要に応じて復号されるが、図１ではその旨を省略してある（後述の図２〜図４も同様）。【０００９】
第２装置は、マスター秘密鍵MSと、第２装置と第１装置との間の通信ログ情報HS1とを用いて終了情報FN1を検証する（処理３）。これが合格であれば、第２装置は、暗号処理を開始することの通知（ChangeCipherSpec）を第１装置に送信し（以下では、明示する場合を除いて説明省略）、第２装置と第１装置との間の通信ログ情報HS2と、秘密情報PMSと、に対応する終了情報FN2（Finishedメッセージ）を生成し、これを第１装置に送信する（処理１の第２装置側レスポンス＋処理３）。ＴＬＳでは、マスター秘密鍵MSを用い、第２装置と第１装置との間の通信ログ情報HS2と、終了情報FN1と、を認証対象として生成されたメッセージ認証子を終了情報FN2とする。また、ＴＬＳの場合、通常、終了情報FN2は、共通鍵Keyを用いて暗号化されて第１装置に送信される。【００１０】
第１装置は、マスター秘密鍵MSと、第２装置と第１装置との間の通信ログ情報HS2と、終了情報FN1と、を用いて終了情報FN2を検証する（処理１の第２装置側レスポンス検証＋処理３）。そして、これが合格であれば、第１装置は共通鍵Keyを用いてメッセージを暗号化した暗号文データ（Key(ApplicationData)
）を第２装置に送信し、共通鍵暗号通信を行う。【００１１】
［サーバ装置とクライアント装置の両者の認証を行うモード］
図２は、従来のサーバ装置とクライアント装置の両者の認証を行うモードの概要を説明するためのシーケンス図である。【００１２】
図２に示すように、本モードと前述のサーバ装置の認証処理のみを行うモードとの相違点は、本モードでは、さらに第２装置（サーバ装置）が第１装置（クライアント装置）の認証処理を行うために、第１装置にその秘密鍵SKcを格納しておき、第１装置がその公開鍵証明書Ccを含む情報（Certificateメッセージ）を第２装置に送信し、さらに、第１装置の秘密鍵SKcで生成した署名情報Sign（CertificateVerifyメッセージ）を第２装置に送信（処理１の第１装置側レスポンス）する点である。これにより、第２装置は第１装置の認証処理（処理１の第１装置側レスポンス検証）を行うことができる。【００１３】
［中継装置を介した通信技術］
上述のＴＬＳ等のプロトコルに従った処理を行うクライアント装置とサーバ装置とが中継装置を介して通信を行うための技術として、ＳＳＬ−ＶＰＮ技術やＳＳＬ−アクセラレータ技術がある（例えば、非特許文献３参照）。これらの技術では、クライアント装置と中継装置との間で上述のＴＬＳ等の処理を行って共通鍵を共有し、さらに、サーバ装置と中継装置との間で上述のＴＬＳ等の処理を行ってこれらの装置間で共通鍵を共有する。【００１４】
図３は、ＴＬＳ等のプロトコルに従った処理を行うクライアント装置とサーバ装置とが中継装置を介して通信を行うための従来技術の一例を説明するためのシーケンス図である。【００１５】
図３の例では、第１装置（クライアント装置）と第２装置（サーバ装置）とが中継装置（ＴＬＳ認証ＧＷ）を介し、サーバ装置及びクライアント装置両方の認証処理及び共通鍵共有化処理を行う。この例では、第１装置にその秘密鍵SKcを格納し、中継装置にその秘密鍵SKgを格納し、第２装置にその秘密鍵SKsを格納しておく。そして、第１装置と中継装置との間で前述の［サーバ装置とクライアント装置の両者の認証を行うモード］の処理（「第２装置の公開鍵証明書Cs」を「中継装置の公開鍵証明書Cg」に置換し、「公開鍵PKs」を「公開鍵PKg」に置換し、「第２装置」を「中継装置」に置換した処理）を行って、これらの装置間で共通鍵Key1を共有する。さらに、それとは独立に、第２装置と中継装置との間で前述の［サーバ装置とクライアント装置の両者の認証を行うモード］の処理を行って、これらの装置間で共通鍵Key2を共有する。【００１６】
図４は、ＴＬＳ等のプロトコルに従った処理を行うクライアント装置とサーバ装置とが中継装置を介して通信を行う他の例を説明するためのシーケンス図である。【００１７】
図４の例では、第１装置にその秘密鍵SKcを格納し、中継装置にその秘密鍵SKgを格納し、第２装置にその秘密鍵SKsを格納しておく。そして、第１装置と中継装置との間で前述の［サーバ装置とクライアント装置の両者の認証を行うモード］の処理（「第２装置の公開鍵証明書Cs」を「中継装置の公開鍵証明書Cg」に置換し、「公開鍵PKs」を「公開鍵PKg」に置換し、「第２装置」を「中継装置」に置換した処理）を行って、これらの装置間で共通鍵Key1を共有する。さらに、それとは独立に、第２装置と中継装置との間で前述の［サーバ装置の認証処理のみを行うモード］の処理を行って、これらの装置間で共通鍵Key2を共有する。
【非特許文献１】T .Dierks，C. Akken，“The TLS Protocol Version 1.0”，[online]，１９９９年１月，Network Working Group，[平成１９年１０月２４日検索]，インターネット＜http://www.ietf.org/rfc/rfc2246.txt＞
【非特許文献２】“SSL & TLS”，[online]，２００７年５月２日， [平成１９年１０月２６日検索]，インターネット＜http://www21.ocn.ne.jp/~k-west/SSLandTLS/＞
【非特許文献３】丸山 龍一郎，”リモートアクセスの新潮流SSL-VPNの導入メリット（前編）”，[online]，平成１５年９月１３日，アイティメディア株式会社，[平成１９年１０月２４日検索] ，インターネット＜http://www.atmarkit.co.jp/fsecurity/special/42ssl_vpn/ssl_vpn01.html＞
【発明の開示】
【発明が解決しようとする課題】
【００１８】
図３や図４に示した技術では、第１装置と中継装置との間で行われる上述のプロトコルに従った処理と、第２装置と中継装置との間で行われる上述のプロトコルに従った処理とが互いに独立している。そのため、第１装置と中継装置との間で共有される共通鍵Key1と、第２装置と中継装置との間で共有される共通鍵Key2とは、互いに独立した別個の鍵となる。その結果、設定された共通鍵を用いて第１装置と第２装置との間の共通鍵暗号通信を行う場合、中継装置は設定された一方の共通鍵を用いた復号処理と、他方の共通鍵を用いた暗号化処理とを実行しなければならず、中継装置の暗号・復号処理量が増大し、暗号通信速度が低下する。例えば、第１装置から第２装置へ共通鍵暗号通信を行うためには、まず、第１装置が共通鍵Key1を用いて暗号データを生成して中継装置に送信し、中継装置が共通鍵Key1を用いてこの暗号データを復号して平文を抽出し、共通鍵Key2を用いてこの平文を暗号化した暗号データを生成して第２装置に送信しなければならない。【００１９】
一方、第１装置と第２装置とが他の中継装置を介して共通鍵を設定する際に、上述の処理１〜３を含むプロトコルと異なる処理を行い、共通鍵を共有する方法も想定し得る。しかし、第１装置と第２装置とが他の中継装置を介して共通鍵を設定する際に、第１装置と第２装置とが当該プロトコルと異なる処理を実行しなければならないのであれば、第１装置と第２装置との処理設定をすべて変更しなければならない。これには多大な費用と労力を要する。【００２０】
本発明はこのような点に鑑みてなされたものであり、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とが、当該プロトコルとは異なる処理を行うことなく、他の中継装置を介して、同一の共通鍵を共有でき、高速な暗号通信を行うことが可能となる技術を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明では、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とが、他の中継装置を介して共通鍵を設定する。【００２２】
本発明の第１態様では、まず、上記第２装置の秘密鍵を上記中継装置の記憶部に格納する。そして、上記第１装置の秘密情報設定部が、共通鍵を特定するための秘密情報を設定し、上記第１装置の公開鍵暗号化部が、上記第２装置の秘密鍵に対応する第２装置の公開鍵を用いて上記秘密情報を暗号化した暗号化秘密情報を生成し、上記第１装置の送信部が、上記暗号化秘密情報を上記中継装置に送信する。次に、上記中継装置の復号部が、当該中継装置の記憶部から読み込んだ上記第２装置の秘密鍵を用いて上記暗号化秘密情報を復号し、上記秘密情報を抽出する。そして、上記中継装置の送信部が、上記暗号化秘密情報を上記第２装置に送信し、上記第２装置の復号部が、当該第２装置の秘密鍵を用いて上記暗号化秘密情報を復号し、上記秘密情報を抽出する。その後、上記第１装置の終了情報生成部が、当該第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第１終了情報を生成し、上記第１装置の送信部が、上記第１終了情報を上記中継装置に送信する。また、上記中継装置の終了情報生成部が、上記中継装置と上記第２装置との間の通信ログ情報と、上記秘密情報と、に対応する第２終了情報を生成し、上記中継装置の送信部が、上記第２終了情報を上記第２装置に送信する。また、上記第２装置の終了情報生成部が、当該第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第３終了情報を生成し、上記第２装置の送信部が、上記第３終了情報を上記中継装置に送信する。さらに、上記中継装置の終了情報生成部が、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第４終了情報を生成し、上記中継装置の送信部が、上記第４終了情報を上記第１装置に送信する。【００２３】
ここで、中継装置が第１装置から送信された暗号化秘密情報を第２装置に転送することにより、第１装置と第２装置とで同一の共通鍵を共有することができる。また、中継装置に第２装置の秘密鍵が格納されているため、中継装置は、上記第１装置から送信された暗号化秘密情報を復号し、共通鍵に対応する秘密情報を取得することができる。これにより、中継装置は、同一の共通鍵に対応する第２終了情報及び第４終了情報を生成することができる。すなわち、本態様では、第１装置・第２装置間で同一の共通鍵を共有させることができ、この際、中継装置は第１装置から送信された暗号化秘密情報を復号し、再暗号化する必要もない。さらに、中継装置は、同一の共通鍵に対応する第２終了情報及び第４終了情報を、それぞれ第２装置と第１装置に送信することができる。そして、第１装置及び第２装置側からみれば、これらの処理は上述のプロトコルに従った処理となっているため、第１装置と第２装置とが上述のプロトコルと異なる処理を実行する必要はない。【００２４】
また、本発明の第２態様では、上記第１装置の秘密情報設定部が、共通鍵を特定するための秘密情報を設定し、上記第１装置の公開鍵暗号化部が、上記中継装置の秘密鍵に対応する上記中継装置の公開鍵を用いて上記秘密情報を暗号化した第１暗号化秘密情報を生成し、上記第１装置の送信部が、上記第１暗号化秘密情報を上記中継装置に送信する。次に、上記中継装置の復号部が、当該中継装置の記憶部から読み込んだ中継装置の秘密鍵を用いて上記第１暗号化秘密情報を復号し、上記秘密情報を抽出し、上記中継装置の公開鍵暗号化部が、上記第２装置の公開鍵を用いて上記秘密情報を暗号化した第２暗号化秘密情報を生成し、上記中継装置の送信部が、上記第２暗号化秘密情報を上記第２装置に送信する。そして、上記第２装置の復号部が、上記第２装置の公開鍵に対応する当該第２装置の秘密鍵を用いて上記第２暗号化秘密情報を復号し、上記秘密情報を抽出する。その後、上記第１装置の終了情報生成部が、当該第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第１終了情報を生成し、上記第１装置の送信部が、上記第１終了情報を上記中継装置に送信する。また、上記中継装置の終了情報生成部が、上記中継装置と上記第２装置との間の通信ログ情報と、上記秘密情報と、に対応する第２終了情報を生成し、上記中継装置の送信部が、上記第２終了情報を上記第２装置に送信する。また、上記第２装置の終了情報生成部が、当該第２装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第３終了情報を生成し、上記第２装置の送信部が、上記第３終了情報を上記中継装置に送信する。さらに、上記中継装置の終了情報生成部が、上記第１装置と上記中継装置との間の通信ログ情報と、上記秘密情報と、に対応する第４終了情報を生成し、上記中継装置の送信部が、上記第４終了情報を上記第１装置に送信する。【００２５】
この場合、中継装置は、第１装置から送信された第１暗号化秘密情報を復号し、第２装置用に再暗号化する必要はあるが、第１装置・第２装置間で同一の共通鍵を共有させることができ、さらに同一の共通鍵に対応する第２終了情報及び第４終了情報を、それぞれ第２装置と第１装置に送信することができる。そして、第１装置及び第２装置側からみれば、これらの処理は上述のプロトコルに従った処理となっているため、第１装置と第２装置とが上述のプロトコルと異なる処理を実行する必要はない。【００２６】
なお、本発明において「装置Ａが装置Ｂに情報Ｃを送信する」とは、装置Ａが情報Ｃをさらに暗号化することなく装置Ｂに送信すること、及び、装置Ａが装置Ｂで復号可能なように情報Ｃをさらに暗号化して装置Ｂに送信すること、の両方を含む概念である。また、各終了情報は、秘密情報を用いて定められる共通鍵を用いて暗号化されてもよく、秘密情報を用いて定められる共通鍵を用いて各終了情報を暗号化するか否かは本発明の技術上の意義になんら変更をもたらさない。
【発明の効果】
【００２７】
本発明では、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコルに従った処理を行う第１装置と第２装置とが、当該プロトコルとは異なる処理を行うことなく、他の中継装置を介して、同一の共通鍵を共有することができ、高速な暗号通信を行うことが可能となる。
【図面の簡単な説明】
【００２８】
【図１】図１は、従来のサーバ装置の認証処理のみを行うモードの概要を説明するためのシーケンス図である。
【図２】図２は、従来のサーバ装置とクライアント装置の両者の認証を行うモードの概要を説明するためのシーケンス図である。
【図３】図３は、ＴＬＳ等のプロトコルに従った処理を行うクライアント装置とサーバ装置とが中継装置を介して通信を行うための従来技術の一例を説明するためのシーケンス図である。
【図４】図４は、ＴＬＳ等のプロトコルに従った処理を行うクライアント装置とサーバ装置とが中継装置を介して通信を行う他の例を説明するためのシーケンス図である。
【図５】図５は、第１実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である。
【図６】図６は、第１実施形態の第１装置の機能構成を説明するためのブロック図である。
【図７】図７は、第１実施形態の第２装置の機能構成を説明するためのブロック図である。
【図８】図８は、第１実施形態の中継装置の機能構成を説明するためのブロック図である。
【図９】図９は、第１実施形態の処理の全体を説明するためのシーケンス図である。
【図１０】図１０は、第１実施形態の中継装置の処理を説明するためのフローチャートである。
【図１１】図１１は、第１実施形態の中継装置の処理を説明するためのフローチャートである。
【図１２】図１２は、第２実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である。
【図１３】図１３は、第２実施形態の第１装置の機能構成を説明するためのブロック図である。
【図１４】図１４は、第２実施形態の中継装置の機能構成を説明するためのブロック図である。
【図１５】図１５は、第２実施形態の処理の全体を説明するためのシーケンス図である。
【図１６】図１６は、第２実施形態の中継装置の処理を説明するためのフローチャートである。
【図１７】図１７は、第３実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である。
【図１８】図１８は、第３実施形態の第１装置の機能構成を説明するためのブロック図である。
【図１９】図１９は、第３実施形態の中継装置の機能構成を説明するためのブロック図である。
【図２０】図２０は、第３実施形態の処理の全体を説明するためのシーケンス図である。
【図２１】図２１は、第３実施形態の中継装置の処理を説明するためのフローチャートである。
【図２２】図２２は、第４実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である
【図２３】図２３は、第４実施形態の第１装置の機能構成を説明するためのブロック図である。
【図２４】図２４は、第４実施形態の中継装置の機能構成を説明するためのブロック図である。
【図２５】図２５は、第４実施形態の処理の全体を説明するためのシーケンス図である。
【図２６】図２６は、第４実施形態の中継装置の処理を説明するためのフローチャートである。
【図２７】図２７は、第５実施形態における終了情報整合処理を説明するためのシーケンス図である。
【図２８】図２８は、第６実施形態における終了情報整合処理を説明するためのシーケンス図である。
【図２９】図２９は、第６実施形態の中継装置の処理を説明するためのフローチャートである。
【図３０】図３０は、第６実施形態の中継装置の処理を説明するためのフローチャートである。
【図３１】図３１は、第７実施形態における終了情報整合処理を説明するためのシーケンス図である。
【図３２】図３２は、第８実施形態における終了情報整合処理を説明するためのシーケンス図である。
【図３３】図３３は、第９実施形態における処理を説明するためのシーケンス図である。
【図３４】図３４は、第１０実施形態における処理を説明するためのシーケンス図である。
【図３５】図３５は、第１１実施形態における処理を説明するためのシーケンス図である。
【図３６】図３６は、第１２実施形態における処理を説明するためのシーケンス図である。
【図３７】図３７は、第１３実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である。
【図３８】図３８は、第１３実施形態の第１装置の機能構成を説明するためのブロック図である。
【図３９】図３９は、第１３実施形態の第２装置の機能構成を説明するためのブロック図である。
【図４０】図４０は、第１３実施形態の中継装置の機能構成を説明するためのブロック図である。
【図４１】図４１Ａは、Empty Session Ticket Extensionを含むClientHelloメッセージのデータ構成を示す図であり、図４１Ｂは、Session Ticket Extensionを含むClientHelloメッセージのデータ構成を示す図である。また、図４１Ｃは、Ticketのデータ構成を示す図であり、図４１Ｄは、図４１Ｃに示す状態情報のデータ構成を示す図である。
【図４２】図４２は、第１３実施形態の初回接続処理の全体を説明するためのシーケンス図である。
【図４３】図４３は、第１３実施形態の中継装置の初回接続処理を説明するためのフローチャートである。
【図４４】図４４は、第１３実施形態における終了情報整合処理を説明するためのシーケンス図である。
【図４５】図４５は、第１３実施形態の中継装置の処理を説明するためのフローチャートである。
【図４６】図４６は、第１４実施形態における処理を説明するためのシーケンス図である。
【図４７】図４７は、第１５実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である。
【図４８】図４８は、第１５実施形態の第１装置の機能構成を説明するためのブロック図である。
【図４９】図４９は、第１５実施形態の第２装置の機能構成を説明するためのブロック図である。
【図５０】図５０は、第１５実施形態の中継装置の機能構成を説明するためのブロック図である。
【図５１】図５１は、第１５実施形態の処理の全体を説明するためのシーケンス図である。
【図５２】図５２は、第１５実施形態の中継装置の処理を説明するためのフローチャートである。
【図５３】図５３は、第１５実施形態の中継装置の処理を説明するためのフローチャートである。
【図５４】図５４は、第１６実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である。
【図５５】図５５は、第１６実施形態の第１装置の機能構成を説明するためのブロック図である。
【図５６】図５６は、第１６実施形態の中継装置の機能構成を説明するためのブロック図である。
【図５７】図５７は、第１６実施形態の処理の全体を説明するためのシーケンス図である。
【図５８】図５８は、第１６実施形態の中継装置の処理を説明するためのフローチャートである。
【図５９】図５９は、第１７実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である。
【図６０】図６０は、第１７実施形態の第１装置の機能構成を説明するためのブロック図である。
【図６１】図６１は、第１７実施形態の中継装置の機能構成を説明するためのブロック図である。
【図６２】図６２は、第１７実施形態の処理の全体を説明するためのシーケンス図である。
【図６３】図６３は、第１７実施形態の中継装置の処理を説明するためのフローチャートである。
【図６４】図６４は、第１８実施形態の共通鍵暗号通信システムの全体構成を説明するためのブロック図である
【図６５】図６５は、第１８実施形態の第１装置の機能構成を説明するためのブロック図である。
【図６６】図６６は、第１８実施形態の中継装置の機能構成を説明するためのブロック図である。
【図６７】図６７は、第１８実施形態の処理の全体を説明するためのシーケンス図である。
【図６８】図６８は、第１８実施形態の中継装置の処理を説明するためのフローチャートである。
【図６９】図６９は、第１９実施形態における付加処理を説明するためのシーケンス図である。
【符号の説明】
【００２９】
１，１００，２００，３００，４００，１００１，１１００，１２００，１３００  共通鍵暗号通信システム      
【発明を実施するための最良の形態】
【００３０】
以下、図面を参照して本発明の実施の形態を説明する。
〔第１実施形態〕
まず、本発明の第１実施形態について説明する。
＜構成＞
［全体構成］
図５は、第１実施形態の共通鍵暗号通信システム１の全体構成を説明するためのブロック図である。【００３１】
図５に例示するように、本形態の共通鍵暗号通信システム１は、第１装置１０（例えば、クライアント装置）と、第２装置２０（例えば、サーバ装置）と、中継装置３０（例えば、ゲートウェイ装置）とを有する。また、第１装置１０と中継装置３０とは、インターネットやＬＡＮ（Local Area Network）等のネットワーク４０を通じて通信可能に接続され、第２装置２０と中継装置３０とは、インターネットやＬＡＮ等のネットワーク５０を通じて通信可能に接続される。【００３２】
なお、第１装置１０と第２装置２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図５では、１つの第１装置１０と第２装置２０とが中継装置３０と通信可能に接続されているが、２以上の第１装置１０と第２装置２０とが中継装置３０と通信可能に接続されていてもよい。さらには、複数の中継装置３０を設けた構成であってもよい。【００３３】
［第１装置］
本形態の第１装置１０は、ＣＰＵ(Central Processing Unit)、ＲＡＭ(Random-Access Memory)、ＲＯＭ(Read Only Memory)、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【００３４】
図６は、第１実施形態の第１装置１０の機能構成を説明するためのブロック図である。【００３５】
図６に例示するように、本形態の第１装置１０は、記憶部１１、演算部１２、送信部１３、受信部１４、制御部１５及び一時記憶部１６を有する。また、演算部１２は、乱数生成部１２ａ、秘密情報設定部１２ｂ、公開鍵暗号化部１２ｃ、署名生成部１２ｄ、共通鍵生成部１２ｅ、終了情報生成部１２ｆ、終了情報検証部１２ｇ、通信処理部１２ｈ及び共通鍵暗号処理部１２ｉを有する。【００３６】
なお、本形態の演算部１２や制御部１５は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部であり、記憶部１１や一時記憶部１６は、ＲＡＭ、レジスタ、キャッシュメモリ、ハードディスク装置等の公知の記憶装置、又は、これらの少なくとも一部を組み合わせた記憶領域である。また、送信部１３や受信部１４は、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動するＬＡＮカード、モデム等の通信装置である。また、第１装置を構成するハードウェアの具体例としては、パーソナルコンピュータ、携帯電話、ＰＤＡ（Personal Digital Assistant）等がある。【００３７】
また、第１装置１０は、制御部１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１６に格納され、他の演算のために読み出される。【００３８】
［第２装置］
本形態の第２装置２０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【００３９】
図７は、第１実施形態の第２装置２０の機能構成を説明するためのブロック図である。【００４０】
図７に例示するように、本形態の第２装置２０は、記憶部２１、演算部２２、送信部２３、受信部２４、制御部２５及び一時記憶部２６を有する。また、演算部２２は、乱数生成部２２ａ、復号部２２ｃ、共通鍵生成部２２ｅ、終了情報生成部２２ｆ、終了情報検証部２２ｇ、通信処理部２２ｈ及び共通鍵暗号処理部２２ｉを有する。【００４１】
なお、本形態の演算部２２や制御部２５は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部であり、記憶部２１や一時記憶部２６は、ＲＡＭ、レジスタ、キャッシュメモリ、ハードディスク装置等の公知の記憶装置、又は、これらの少なくとも一部を組み合わせた記憶領域である。また、送信部２３や受信部２４は、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動するＬＡＮカード、モデム等の通信装置である。また、第２装置を構成するハードウェアの具体例としては、サーバマシン、パーソナルコンピュータ等がある。【００４２】
また、第２装置２０は、制御部２５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部２６に格納され、他の演算のために読み出される。【００４３】
［中継装置］
本形態の中継装置３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【００４４】
図８は、第１実施形態の中継装置３０の機能構成を説明するためのブロック図である。【００４５】
図８に例示するように、本形態の中継装置３０は、記憶部３１、演算部３２、送信部３３、受信部３４、制御部３５及び一時記憶部３６を有する。また、演算部３２は、暗号リスト制限部３１ａ、復号部３２ｂ、署名検証部３２ｃ、共通鍵生成部３２ｅ、終了情報生成部３２ｆ、終了情報検証部３２ｇ、通信処理部３２ｈ及び共通鍵暗号処理部３２ｉを有する。【００４６】
なお、本形態の演算部３２や制御部３５は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部であり、記憶部３１や一時記憶部３６は、ＲＡＭ、レジスタ、キャッシュメモリ、ハードディスク装置等の公知の記憶装置、又は、これらの少なくとも一部を組み合わせた記憶領域である。また、送信部３３や受信部３４は、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動するＬＡＮカード、モデム等の通信装置である。また、中継装置を構成するハードウェアの具体例としては、ゲートウェイマシン、サーバマシン、パーソナルコンピュータ等がある。【００４７】
また、中継装置３０は、制御部３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部３６に格納され、他の演算のために読み出される。【００４８】
＜処理＞
次に、本形態の処理を説明する。
［前提］
まず、第１装置１０と第２装置２０とに対し、それぞれ公開鍵暗号方式（ＲＳＡ等）の鍵ペア（公開鍵，秘密鍵）が生成されているものとする。なお、鍵ペアは複数の暗号方式分生成されてもよい。そして、第１装置１０の秘密鍵SKcが第１装置１０の記憶部１１に格納され、第２装置２０の秘密鍵SKsが第２装置２０の記憶部２１に格納されているものとする。また、各公開鍵には、認証局（CA: Certification Authority）によって公開鍵証明書が発行され、第１装置１０の公開鍵PKcの公開鍵証明書Ccが第１装置１０の記憶部１１に格納され、第２装置２０の公開鍵PKsの公開鍵証明書Csが第２装置２０の記憶部２１に格納されているものとする。なお、公開鍵証明書Ccは、第１装置１０の公開鍵PKcを含むデータに対し、認証局の秘密鍵を用いて生成された電子署名、及び当該公開鍵PKcなどからなる情報である。同様に、公開鍵証明書Csは、第２装置２０の公開鍵PKsを含むデータに対し、認証局の秘密鍵を用いて生成された電子署名、及び当該公開鍵PKsなどからなる情報である。また、公開鍵証明書の標準規格としてはX.509等を例示できる。また、第１装置１０の記憶部１１には、秘密情報を２つの装置間で共有するための暗号方式のリストである暗号リストCSLが格納される。これは、ＴＬＳ等におけるcipher suiteに相当し、例えば、RSA系の暗号方式とDH (Diffie-Hellman)系の暗号方式とを含むリストである。【００４９】
［処理の全体］
図９は、第１実施形態の処理の全体を説明するためのシーケンス図である。以下、この図に従って説明を行う。【００５０】
まず、第２装置２０（図７）の秘密鍵SKsが中継装置３０の記憶部３１に格納される（秘密鍵共有過程／ステップＳ１）。なお、鍵ペアが複数の暗号方式分生成されている場合には、各暗号方式にそれぞれ対応する秘密鍵SKsを記憶部３１に格納しておく。また、第２装置２０から中継装置３０への秘密鍵SKsの提供は、例えば、第２装置２０の管理者が、秘密鍵SKsが格納されたＩＣカード等の記録媒体を中継装置３０の管理者に郵送して行ってもよいし、認証技術や暗号技術を用いた鍵共有化処理により、第２装置２０が中継装置３０に秘密鍵SKsを安全に配送してもよい。【００５１】
次に、第１装置１０（図６）の乱数生成部１２ａが、乱数R1（第１乱数）を生成し（第１乱数生成過程）、記憶部１１に格納する。そして、通信処理部１２ｈが、記憶部１１から乱数R1（第１乱数）及び暗号リストCSLを読み込み、これらを含む情報（ClientHelloメッセージ）を生成して送信部１３に送る。送信部１３は、乱数R1及び暗号リストCSLを含むClientHelloメッセージをネットワーク４０経由で中継装置３０に送信する（第１乱数送信過程／ステップＳ２）。【００５２】
ClientHelloメッセージは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られる。通信処理部３２ｈは、ClientHelloメッセージが具備する乱数R1（第１乱数）を記憶部３１に格納するとともに、暗号リストCSLを暗号リスト制限部３１ａに送る。暗号リスト制限部３１ａは、暗号リストCSLが具備する暗号方式から、一方の装置において秘密情報を公開鍵暗号方式によって暗号化し、当該暗号文を他の装置に送信し、当該他の装置において当該暗号文を復号することによって両装置間で秘密情報を共有する暗号方式のみを選択し、選択した暗号方式のみからなる新たな暗号リストCSL'を生成する。ＴＬＳ等の場合、暗号リスト制限部３１ａは、CSLが具備する暗号方式から、RSA系の暗号方式のみを選択し、RSA系の暗号方式のみからなる新たな暗号リストCSL'を生成して記憶部３１に格納する（ステップＳ３）。【００５３】
次に、通信処理部３２ｈは、記憶部３１から乱数R1及び新たな暗号リストCSL'を読み込み、これらを含む情報（ClientHelloメッセージ）を生成して送信部３３に送る。送信部３３は、乱数R1及び新たな暗号リストCSL'を含むClientHelloメッセージをネットワーク５０経由で第２装置２０に送信する（第２乱数送信過程／ステップＳ４）。【００５４】
乱数R1及び新たな暗号リストCSL'を含むClientHelloメッセージは、第２装置２０（図７）の受信部２４で受信され通信処理部２２ｈに送られる。通信処理部２２ｈは、ClientHelloメッセージが含む乱数R1及び新たな暗号リストCSL'を記憶部２１に格納する。次に、第２装置２０の乱数生成部２２ａが、乱数R2（第２乱数）を生成し（第２乱数生成過程）、記憶部２１に格納する。また、通信処理部２２ｈは、記憶部２１に格納された暗号リストCSL'から、秘密鍵SKsが記憶部２１に格納されている１つの暗号方式Cを選択し、それを記憶部２１に格納する。さらに通信処理部２２ｈは、記憶部２１から当該暗号方式Cと乱数R2とを読み込み、これらを含む情報（ServerHelloメッセージ）を生成して送信部２３に送る。なお、ＴＬＳ等の場合、ServerHelloメッセージには、セッション識別子SIDや圧縮アルゴリズム（compression method）等も含まれる。また、暗号方式Cは、ＴＬＳ等におけるcipher suiteに相当し、本形態ではＲＳＡ系の何れかの暗号方式が暗号方式Ｃとなる。送信部２３は、乱数R2及び暗号方式Cを含むServerHelloメッセージをネットワーク５０経由で中継装置３０に送信する（第３乱数送信過程／ステップＳ５）。【００５５】
ServerHelloメッセージは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られる。通信処理部３２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部３１に格納するとともに（ステップＳ６）、当該ServerHelloメッセージを送信部３３に送る。送信部３３は、乱数R2及び暗号方式Cを含む当該ServerHelloメッセージをネットワーク４０経由で第１装置１０に送信する（第４乱数送信過程／ステップＳ７）。ServerHelloメッセージは、第１装置１０（図６）の受信部１４で受信され、通信処理部１２ｈに送られる。通信処理部１２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部１１に格納する。【００５６】
次に、第２装置２０（図７）の通信処理部２２ｈが記憶部２１に格納された暗号方式Cに対応する公開鍵PKsの公開鍵証明書Csを読み込み、これを含む情報（Certificateメッセージ）を送信部２３に送る。送信部２３は、当該第２装置２０の公開鍵証明書Csを、ネットワーク５０経由で中継装置３０に送信する（第１公開鍵証明書送信過程／ステップＳ８）。当該第２装置２０の公開鍵証明書Csは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られる。通信処理部３２ｈは、第２装置２０の公開鍵証明書Csを記憶部３１に格納するとともに、これを送信部３３に送る。送信部３３は、第２装置２０の公開鍵証明書Csをネットワーク４０経由で第１装置１０に送信する（公開鍵証明書送信過程／ステップＳ９）。送信された第２装置２０の公開鍵証明書Csは、第１装置１０（図６）の受信部１４で受信され、通信処理部１２ｈに送られる。通信処理部１２ｈは、当該第２装置２０の公開鍵証明書Csを記憶部１１に格納する（ステップＳ１０）。なお、ＴＬＳ等の場合、この後、中継装置３０から第１装置１０へCertificateRequestのメッセージが送られ、中継装置３０を介して第２装置２０から第１装置１０へServerHelloDoneのメッセージが送られる。【００５７】
そして、第１装置１０の通信処理部１２ｈが、記憶部１１に格納された暗号方式Cに対応する公開鍵PKcの公開鍵証明書Ccを読み込み、これを含む情報（Certificateメッセージ）を送信部１３に送る。送信部１３は、当該第１装置１０の公開鍵証明書Ccを、ネットワーク４０経由で中継装置３０に送信する（第２公開鍵証明書送信過程／ステップＳ１１）。当該第１装置１０の公開鍵証明書Ccは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られる。通信処理部３２ｈは、第１装置１０の公開鍵証明書Ccを記憶部３１に格納する。【００５８】
次に、第１装置１０（図６）の秘密情報設定部１２ｂが、共通鍵Keyを特定するための秘密情報PMS（premaster secret）を設定し、それを記憶部１１に格納する。なお、秘密情報PMSの設定は、例えば、秘密情報設定部１２ｂが乱数を生成し、それを秘密情報PMSとすることによって行われる。次に、第１装置１０の通信処理部１２ｈが、記憶部１１から第２装置２０の公開鍵証明書Csを読み込み、第２装置２０の公開鍵証明書Csを発行したＣＡの公開鍵PKcaをネットワーク４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部１１に格納される。通信処理部１２ｈは、記憶部１１から第２装置２０の公開鍵証明書CsとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第２装置２０の公開鍵証明書Csを検証する。この検証が合格した場合、公開鍵暗号化部１２ｃが、記憶部１１から秘密情報PMSと公開鍵証明書Csが具備する第２装置２０の公開鍵PKsと暗号方式Ｃとを読み込み、当該公開鍵PKsを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKs(PMS)（暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部１１に格納する（秘密情報暗号化過程）。生成された暗号文PKs(PMS)を含む情報（ClientKeyExchangeメッセージ）は、送信部１３に送られ、送信部１３は、当該暗号文PKs(PMS)（暗号化秘密情報）を含むClientKeyExchangeメッセージをネットワーク４０経由で中継装置３０に送信する（暗号化秘密情報送信過程／ステップＳ１２）。【００５９】
ClientKeyExchangeメッセージは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られ、通信処理部３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKs(PMS)（暗号化秘密情報）を記憶部３１に格納する。次に、復号部３２ｂが、記憶部３１から暗号方式Ｃを読み込み、それに対応する第２装置２０の秘密鍵SKsを読み込む。さらに、復号部３２ｂは、記憶部３１から暗号文PKs(PMS)を読み込み、これを秘密鍵SKsで復号して秘密情報PMSを抽出する（第１秘密情報復号過程／ステップＳ１３）。抽出された秘密情報PMSは、記憶部３１に格納される。次に、通信処理部３２ｈが、記憶部３１から暗号文PKs(PMS)を読み込み、これを含むClientKeyExchangeメッセージを送信部３３に送る。送信部３３は、暗号文PKs(PMS)を含むClientKeyExchangeメッセージをネットワーク５０経由で第２装置２０に送信する（暗号化秘密情報転送過程）。【００６０】
送信されたClientKeyExchangeメッセージは、第２装置２０の受信部２３で受信され通信処理部２２ｈに送られ、通信処理部２２ｈは、ClientKeyExchangeメッセージが含む暗号文PKs(PMS)を記憶部２１に格納する。第２装置２０の復号部２２ｃは、記憶部２１から暗号方式Ｃを読み込み、それに対応する第２装置２０の秘密鍵SKsを読み込む。さらに、復号部２２ｃは、記憶部２１から暗号文PKs(PMS)を読み込み、これを秘密鍵SKsで復号して秘密情報PMSを抽出する（第２秘密情報復号過程／ステップＳ１４）。抽出された秘密情報PMSは、記憶部２１に格納される。【００６１】
これにより、秘密情報PMSが第１装置１０と第２装置２０と中継装置３０とに共有された。その後、第１装置１０と第２装置２０と中継装置３０とは、それぞれ秘密情報PMSを用いてマスター秘密鍵MS及び共通鍵Keyを生成し、それらを共有する。【００６２】
すなわち、第１装置１０（図６）の共通鍵生成部１２ｅは、記憶部１１から秘密情報PMSを読み込み、当該秘密情報PMSを用いてマスター秘密鍵MS及び共通鍵Keyを生成して記憶部１１に格納する。マスター秘密鍵MSは、例えば、乱数R1（第１乱数）と乱数R2（第２乱数）と秘密情報PMSとによって定まる情報である。ＴＬＳ等では、共通鍵生成部１２ｅは、記憶部１１から秘密情報PMSと乱数R1（第１乱数）と乱数R2（第２乱数）とを読み込み、秘密情報PMS、文字列、及び乱数R1（第１乱数）と乱数R2（第２乱数）とのビット連結値を、予め定められた擬似乱数関数PRF (pseudo-random function)に入力して得られた関数値をマスター秘密鍵MSとする。また、ＴＬＳ等では、共通鍵生成部１２ｅが、記憶部１１からマスター秘密鍵MSと乱数R1（第１乱数）と乱数R2（第２乱数）とを読み込み、マスター秘密鍵MS、文字列、及び乱数R1（第１乱数）と乱数R2（第２乱数）とのビット連結値を、予め定められた擬似乱数関数PRFに入力してその関数値を求め、その所定位置のビット列を共通鍵Keyとし、これを記憶部１１に格納する。【００６３】
同様に、中継装置３０の共通鍵生成部３２ｅが、記憶部３１から秘密情報PMS等を読み込み、第１装置１０と同様な演算によってマスター秘密鍵MS及び共通鍵Keyを生成して記憶部３１に格納する。また、第２装置２０の共通鍵生成部２２ｅも、記憶部２１から秘密情報PMS等を読み込み、第１装置１０と同様な演算によってマスター秘密鍵MS及び共通鍵Keyを生成して記憶部２１に格納する。なお、各装置でそれぞれ生成されたマスター秘密鍵MSは、セッション識別子SIDに関連付けられ、それぞれの記憶部１１，２１，３１に格納される。【００６４】
次に、第１装置１０（図６）の署名生成部１２ｄが、記憶部１１から暗号方式Ｃを読み込み、それに対応する第１装置の秘密鍵SKcを読み込む。そして、署名生成部１２ｄは、当該秘密鍵SKcを用いて署名情報Signを生成して記憶部１１に格納する（署名情報生成過程）。なお、ＴＬＳ等の場合、ClientHello メッセージ（ステップＳ２）から現在までの、このメッセージを除く、第１装置１０が送信または受信したすべてのハンドシェイクメッセージ（通信ログ情報）が署名対象となり、当該署名対象のハッシュ値を秘密鍵SKcで暗号化した暗号文が署名情報Signとなる。通信処理部１２ｈは、記憶部１１から署名情報Signを読み込み、これを含む情報（CertificateVerifyメッセージ）を送信部１３に送る。送信部１３は、このCertificateVerifyメッセージをネットワーク４０経由で中継装置３０に送信する（署名情報送信過程／ステップＳ１５）。【００６５】
CertificateVerifyメッセージは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られる。通信処理部３２ｈは、CertificateVerifyメッセージが具備する署名情報Signを記憶部３１に格納する。そして、署名検証部３２ｃが、記憶部３１から第１装置１０の公開鍵証明書Ccを読み込み、第１装置１０の公開鍵証明書Ccを発行したＣＡの公開鍵PKcaをネットワーク４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部３１に格納される。通信処理部３２ｈは、記憶部３１から第１装置１０の公開鍵証明書CcとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第１装置１０の公開鍵証明書Ccを検証する。この検証が合格であった場合、署名検証部３２ｃが記憶部３１から署名情報Signと、第１装置１０の公開鍵証明書Ccが具備する第１装置１０の公開鍵PKcとを読み込む。そして、署名検証部３２ｃは、第１装置１０の公開鍵PKcを用いて署名情報Signを検証する（署名情報検証過程）。この処理は、中継装置３０が第２装置２０の代わりに第１装置１０を認証する処理に相当する。なお、ＴＬＳ等の場合、署名検証部３２ｃは、公開鍵PKcを用いて署名情報Signを復号し、その復号結果と、ClientHello メッセージ（ステップＳ２）から現在までの、このメッセージを除く、中継装置３０が第１装置１０と送受信したすべてのハンドシェイクメッセージ（通信ログ情報）のハッシュ値とが一致するか否かを検証する。【００６６】
その後、中継装置３０経由で第１装置１０から第２装置２０にChangeCipherSpecメッセージが送信され、次に、終了情報生成部１２ｆが、記憶部１１からマスター秘密鍵MSと、第１装置１０と中継装置３０との間の通信ログ情報HS1とを読み込み、マスター秘密鍵MSと、通信ログ情報HS1とに対応する（すなわち、秘密情報PMSと通信ログ情報HS1とに対応する）第１終了情報FN1（Finishedメッセージ）を生成して記憶部１１に格納する（第１終了情報生成過程）。第１装置１０と中継装置３０との間の通信ログ情報HS1の例は、このメッセージ以外のここまでのハンドシェイクメッセージの一部または全部である。ＴＬＳ等の場合、第１装置１０と中継装置３０との間の通信ログ情報HS1は、ここまでに第１装置１０が中継装置３０との間で送受信したChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、ＴＬＳ等の場合、第１終了情報FN1（Finishedメッセージ）は、マスター秘密鍵MSを用い、通信ログ情報HS1を認証対象として生成されたメッセージ認証子であり、より具体的には、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS1のMD5によるハッシュ値と通信ログ情報HS1のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値である。なお、ＴＬＳに限定しないのであれば、例えば、マスター秘密鍵MSを用い、マスター秘密鍵MSと通信ログ情報HS1とに対応する情報を暗号化したものを第１終了情報FN1としてもよい。【００６７】
生成された第１終了情報FN1（Finishedメッセージ）は送信部１３に送られ、そこからネットワーク４０経由で中継装置３０に送信される（第１終了情報送信過程／ステップＳ１６）。なお、ＴＬＳの場合、通常、終了情報FN1は、共通鍵Keyを用いて共通鍵暗号処理部１２ｉで暗号化されて中継装置３０に送信され、必要に応じて復号される（終了情報FN2〜FN4についても同様）。【００６８】
第１終了情報FN1（Finishedメッセージ）は、中継装置３０（図８）の受信部３４で受信され、記憶部３１に格納される。なお、第１装置１０から送信された第１終了情報FN1が暗号化されていた場合には、暗号化された第１終了情報FN1は、共通鍵Keyを用いて共通鍵暗号処理部３２ｉで復号され、記憶部３１に格納される。【００６９】
次に、終了情報検証部３２ｇが、記憶部３１から第１終了情報FN1（Finishedメッセージ）と、マスター秘密鍵MSと、第１装置１０と中継装置３０との間の通信ログ情報HS1とを読み込み、第１終了情報FN1（Finishedメッセージ）が秘密情報PMSに対応するか否かを検証する。例えば、終了情報検証部３２ｇは、マスター秘密鍵MSと通信ログ情報HS1とを用い、前述した第１装置１０と同じ演算によって第１終了情報FN1（Finishedメッセージ）を生成し、これと第１装置１０から送信された第１終了情報FN1とが等しいか否かを検証する。ＴＬＳ等の場合には、終了情報検証部３２ｇは、例えば、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS1のMD5によるハッシュ値と通信ログ情報HS1のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値を生成し、これと第１装置１０から送信された第１終了情報FN1とが等しいか否かを検証する。【００７０】
この検証が合格であった場合、次に、中継装置３０（図８）の終了情報生成部３２ｆが、記憶部３１からマスター秘密鍵MSと、第２装置２０と中継装置３０との間の通信ログ情報HS2とを読み込み、マスター秘密鍵MSと、通信ログ情報HS2とに対応する（すなわち、秘密情報PMSと通信ログ情報HS2とに対応する）第２終了情報FN2（Finishedメッセージ）を生成して記憶部３１に格納する（第２終了情報生成過程）。第２装置２０と中継装置３０との間の通信ログ情報HS2の例は、このメッセージ以外のここまでのハンドシェイクメッセージの一部または全部である。ＴＬＳ等の場合、第２装置２０と中継装置３０との間の通信ログ情報HS2は、ここまでに中継装置３０が第２装置２０との間で送受信したChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、ＴＬＳ等の場合、第２終了情報FN2（Finishedメッセージ）は、マスター秘密鍵MSを用い、通信ログ情報HS2を認証対象として生成されたメッセージ認証子であり、より具体的には、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS2のMD5によるハッシュ値と通信ログ情報HS2のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値である。なお、ＴＬＳに限定しないのであれば、例えば、マスター秘密鍵MSを用い、マスター秘密鍵MSと通信ログ情報HS2とに対応する情報を暗号化したものを第２終了情報FN2とするなどの変形も可能である。【００７１】
生成された第２終了情報FN2（Finishedメッセージ）は送信部３３に送られ、そこからネットワーク５０経由で第２装置２０に送信される（第２終了情報送信過程／ステップＳ１７）。なお、ＴＬＳの場合、通常、終了情報FN2は、共通鍵Keyを用いて暗号化されて第２装置２０に送信される。【００７２】
第２終了情報FN2（Finishedメッセージ）は、第２装置２０（図７）の受信部２４で受信され、記憶部２１に格納される。なお、中継装置３０から送信された第２終了情報FN2が暗号化されていた場合には、暗号化された第２終了情報FN2は、共通鍵Keyを用いて復号され、記憶部２１に格納される。【００７３】
次に、終了情報検証部２２ｇが、記憶部２１から第２終了情報FN2（Finishedメッセージ）と、マスター秘密鍵MSと、第２装置２０と中継装置３０との間の通信ログ情報HS2とを読み込み、第２終了情報FN2（Finishedメッセージ）が秘密情報PMSに対応するか否かを検証する。例えば、終了情報検証部２２ｇは、マスター秘密鍵MSと通信ログ情報HS2とを用い、前述した中継装置３０と同じ演算によって第２終了情報FN2（Finishedメッセージ）を生成し、これと中継装置３０から送信された第２終了情報FN2とが等しいか否かを検証する。ＴＬＳ等の場合には、終了情報検証部２２ｇは、例えば、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS2のMD5によるハッシュ値と通信ログ情報HS2のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値を生成し、これと中継装置３０から送信された第２終了情報FN2とが等しいか否かを検証する。【００７４】
この検証が合格であった場合、その後、中継装置３０経由で第２装置２０から第１装置１０にChangeCipherSpecメッセージが送信され、次に、第２装置２０（図７）の終了情報生成部２２ｆが、記憶部２１からマスター秘密鍵MSと、第２装置２０と中継装置３０との間の通信ログ情報HS3とを読み込み、マスター秘密鍵MSと、通信ログ情報HS3とに対応する（すなわち、秘密情報PMSと通信ログ情報HS3とに対応する）第３終了情報FN3（Finishedメッセージ）を生成して記憶部２１に格納する（第３終了情報生成過程）。第２装置２０と中継装置３０との間の通信ログ情報HS3の例は、このメッセージ以外のここまでのハンドシェイクメッセージの一部または全部である。ＴＬＳ等の場合、第２装置２０と中継装置３０との間の通信ログ情報HS3は、ここまでに第２装置２０が中継装置３０との間で送受信したChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、ＴＬＳ等の場合、第３終了情報FN3（Finishedメッセージ）は、マスター秘密鍵MSを用い、通信ログ情報HS3を認証対象として生成されたメッセージ認証子であり、より具体的には、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS3のMD5によるハッシュ値と通信ログ情報HS3のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値である。なお、ＴＬＳに限定しないのであれば、例えば、マスター秘密鍵MSを用い、マスター秘密鍵MSと通信ログ情報HS3とに対応する情報を暗号化したものを第３終了情報FN3とするなどの変形も可能である。【００７５】
生成された第３終了情報FN3（Finishedメッセージ）は送信部３３に送られ、そこからネットワーク５０経由で中継装置３０に送信される（第３終了情報送信過程／ステップＳ１８）。なお、ＴＬＳの場合、通常、第３終了情報FN3は、共通鍵Keyを用いて暗号化されて中継装置３０に送信される。【００７６】
第３終了情報FN3（Finishedメッセージ）は、中継装置３０（図８）の受信部３４で受信され、記憶部３１に格納される。なお、第２装置２０から送信された第３終了情報FN3が暗号化されていた場合には、暗号化された第３終了情報FN3は、共通鍵Keyを用いて復号され、記憶部３１に格納される。【００７７】
次に、終了情報検証部３２ｇが、記憶部３１から第３終了情報FN3（Finishedメッセージ）と、マスター秘密鍵MSと、第２装置２０と中継装置３０との間の通信ログ情報HS3とを読み込み、第３終了情報FN3（Finishedメッセージ）が秘密情報PMSに対応するか否かを検証する。例えば、終了情報検証部３２ｇは、マスター秘密鍵MSと通信ログ情報HS3とを用い、前述した第２装置２０と同じ演算によって第３終了情報FN3（Finishedメッセージ）を生成し、これと第２装置２０から送信された第３終了情報FN3とが等しいか否かを検証する。ＴＬＳ等の場合には、終了情報検証部３２ｇは、例えば、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS3のMD5によるハッシュ値と通信ログ情報HS3のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値を生成し、これと第２装置２０から送信された第３終了情報FN3とが等しいか否かを検証する。【００７８】
この検証が合格であった場合、次に、中継装置３０（図８）の終了情報生成部３２ｆが、記憶部３１からマスター秘密鍵MSと、第１装置１０と中継装置３０との間の通信ログ情報HS4とを読み込み、マスター秘密鍵MSと、通信ログ情報HS4とに対応する（すなわち、秘密情報PMSと通信ログ情報HS4とに対応する）第４終了情報FN4（Finishedメッセージ）を生成して記憶部３１に格納する（第４終了情報生成過程）。第1装置1０と中継装置３０との間の通信ログ情報HS4の例は、このメッセージ以外のここまでのハンドシェイクメッセージの一部または全部である。ＴＬＳ等の場合、第１装置１０と中継装置３０との間の通信ログ情報HS4は、ここまでに中継装置３０が第１装置１０との間で送受信したChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、ＴＬＳ等の場合、第４終了情報FN4（Finishedメッセージ）は、マスター秘密鍵MSを用い、通信ログ情報HS4を認証対象として生成されたメッセージ認証子であり、より具体的には、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS4のMD5によるハッシュ値と通信ログ情報HS4のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値である。なお、ＴＬＳに限定しないのであれば、例えば、マスター秘密鍵MSを用い、マスター秘密鍵MSと通信ログ情報HS4とに対応する情報を暗号化したものを第４終了情報FN4とするなどの変形も可能である。【００７９】
生成された第４終了情報FN4（Finishedメッセージ）は送信部３３に送られ、そこからネットワーク４０経由で第１装置１０に送信される（第４終了情報送信過程／ステップＳ１９）。なお、ＴＬＳの場合、通常、第４終了情報FN4は、共通鍵Keyを用いて暗号化されて第１装置１０に送信される。【００８０】
第４終了情報FN4（Finishedメッセージ）は、第１装置１０（図６）の受信部１４で受信され、記憶部１１に格納される。なお、中継装置３０から送信された第４終了情報FN4が暗号化されていた場合には、暗号化された第４終了情報FN4は、共通鍵Keyを用いて復号され、記憶部１１に格納される。【００８１】
次に、終了情報検証部１２ｇが、記憶部１１から第４終了情報FN4（Finishedメッセージ）と、マスター秘密鍵MSと、第１装置１０と中継装置３０との間の通信ログ情報HS4とを読み込み、第４終了情報FN4（Finishedメッセージ）が秘密情報MSに対応するか否かを検証する（終了情報検証過程）。例えば、終了情報検証部１２ｇは、マスター秘密鍵MSと通信ログ情報HS4とを用い、前述した中継装置３０と同じ演算によって第４終了情報FN4（Finishedメッセージ）を生成し、これと中継装置３０から送信された第４終了情報FN4とが等しいか否かを検証する。ＴＬＳ等の場合には、終了情報検証部１２ｇは、例えば、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS4のMD5によるハッシュ値と通信ログ情報HS4のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値を生成し、これと中継装置３０から送信された第４終了情報FN4とが等しいか否かを検証する。【００８２】
この検証が合格であった場合、第１装置１０及び第２装置２０での共通鍵Keyを利用した共通鍵暗号通信が可能となる。例えば、第１装置１０の共通鍵暗号処理部１２ｉが、この共通鍵Keyを用いてメッセージ(ApplicationData)を暗号化し（ステップＳ２０）、生成された暗号文データ（Key(ApplicationData)
）を送信部１３が中継装置３０を介して第２装置２０に送信する（ステップＳ２１）。これに対して第２装置２０の共通鍵暗号処理部２２ｉが共通鍵Keyを用いてこの暗号文データを復号し（ステップＳ２２）、メッセージを復元する。【００８３】
［中継装置の処理］
図１０，図１１は、第１実施形態の中継装置３０の処理を説明するためのフローチャートである。
以下、このフローチャートを用いて中継装置３０の処理を説明する。なお、この処理の前提として、中継装置３０の記憶部３１には第２装置２０の秘密鍵SKsが格納されている。【００８４】
まず、中継装置３０の受信部３４が、第１装置１０から送信された、乱数R1（第１乱数）及び暗号リストCSLを含む情報（ClientHelloメッセージ）を受信し、これらが通信処理部３２ｈに送られる（ステップＳ３１）。通信処理部３２ｈは、ClientHelloメッセージが具備する乱数R1（第１乱数）を記憶部３１に格納するとともに、暗号リストCSLを暗号リスト制限部３１ａに送る。暗号リスト制限部３１ａは、前述のように、暗号リストCSLが具備する暗号方式から対話型鍵交換方式（DH方式等）を削除した新たな暗号リストCSL'を生成し、記憶部３１に格納する（ステップＳ３２）。次に、通信処理部３２ｈは、記憶部３１から乱数R1及び新たな暗号リストCSL'を読み込み、これらを含む情報（ClientHelloメッセージ）を生成して送信部３３に送る。送信部３３は、乱数R1及び新たな暗号リストCSL'を含むClientHelloメッセージをネットワーク５０経由で第２装置２０に送信する（第２乱数送信過程／ステップＳ３３）。【００８５】
その後、中継装置３０の受信部３４が、第２装置２０から送信された、暗号方式Cと乱数R2とを含む情報（ServerHelloメッセージ）を受信し、これを通信処理部３２ｈに送る（ステップＳ３４）。通信処理部３２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部３１に格納するとともに、当該ServerHelloメッセージを送信部３３に送る。送信部３３は、乱数R2及び暗号方式Cを含む当該ServerHelloメッセージをネットワーク４０経由で第１装置１０に送信する（第４乱数送信過程／ステップＳ３５）。【００８６】
その後、中継装置３０の受信部３４が、第２装置２０から送信された当該第２装置２０の公開鍵証明書Csを受信し、これを通信処理部３２ｈに送る（ステップＳ３６）。さらに、送信部３３は、第２装置２０の公開鍵証明書Csをネットワーク４０経由で第１装置１０に送信する（公開鍵証明書送信過程／ステップＳ３７）。【００８７】
その後、中継装置３０の受信部３４が、第１装置１０から送信された、第１装置１０の公開鍵証明書Ccを含む情報（Certificateメッセージ）を受信し、これを通信処理部３２ｈに送る（ステップＳ３８）。通信処理部３２ｈは、第１装置１０の公開鍵証明書Ccを記憶部３１に格納する。【００８８】
その後、中継装置３０の受信部３４が、暗号文PKs(PMS)を含む情報（ClientKeyExchangeメッセージ）を受信し、これを通信処理部３２ｈに送る（ステップＳ３９）。通信処理部３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKs(PMS)（暗号化秘密情報）を記憶部３１に格納する。次に、復号部３２ｂが、前述のように、秘密鍵SKsを用いて暗号文PKs(PMS)を復号して秘密情報PMSを抽出する（第１秘密情報復号過程／ステップＳ４０）。抽出された秘密情報PMSは、記憶部３１に格納される。次に、通信処理部３２ｈが、暗号文PKs(PMS)を含むClientKeyExchangeメッセージを送信部３３に送り、送信部３３が、当該ClientKeyExchangeメッセージをネットワーク５０経由で第２装置２０に送信する（暗号化秘密情報転送過程／ステップＳ４１）。また、共通鍵生成部３２ｅが、記憶部３１から秘密情報PMSを読み込み、前述のようにマスター秘密鍵MS及び共通鍵Keyを生成して記憶部３１に格納する（ステップＳ４１ａ）。【００８９】
その後、中継装置３０の受信部３４が、第１装置１０から送信された署名情報Signを含むCertificateVerifyメッセージを受信し、通信処理部３２ｈに送る（ステップＳ４２）。通信処理部３２ｈは、CertificateVerifyメッセージが具備する署名情報Signを記憶部３１に格納する。そして、署名検証部３２ｃが、前述のように第１装置１０の公開鍵証明書Ccを用いて署名情報Signを検証する（署名情報検証過程／ステップＳ４３）。ここで、この検証が不合格であった場合（ステップＳ４４）、処理がエラー終了する（ステップＳ５５）。【００９０】
一方、この検証が合格であった場合、受信部３４が第１装置１０から送信された第１終了情報FN1（Finishedメッセージ）を受信する（ステップＳ４５）。この第１終了情報FN1（Finishedメッセージ）は、記憶部３１に格納される。次に、終了情報検証部３２ｇが、記憶部３１から第１終了情報FN1（Finishedメッセージ）と、マスター秘密鍵MSと、第１装置１０と中継装置３０との間の通信ログ情報HS1と、秘密情報PMSとを読み込み、マスター秘密鍵MSを用い、第１終了情報FN1（Finishedメッセージ）を前述のように検証する（ステップＳ４６）。ここで、この検証が不合格であった場合（ステップＳ４７）、処理がエラー終了する（ステップＳ５５）。【００９１】
一方、この検証が合格であった場合、終了情報生成部３２ｆが、記憶部３１からマスター秘密鍵MSと、第２装置２０と中継装置３０との間の通信ログ情報HS2とを読み込み、マスター秘密共通MSと、通信ログ情報HS2とに対応する第２終了情報FN2（Finishedメッセージ）を生成して記憶部３１に格納する（第２終了情報生成過程／ステップＳ４８）。生成された第２終了情報FN2（Finishedメッセージ）は送信部３３に送られ、そこからネットワーク５０経由で第２装置２０に送信される（第２終了情報送信過程／ステップＳ４９）。【００９２】
その後、中継装置３０の受信部３４が、第３終了情報FN3（Finishedメッセージ）を受信する（ステップＳ５０）。この第３終了情報FN3（Finishedメッセージ）は記憶部３１に格納される。次に、終了情報検証部３２ｇが、記憶部３１から第３終了情報FN3（Finishedメッセージ）と、マスター秘密鍵MSと、第２装置２０と中継装置３０との間の通信ログ情報HS3とを読み込み、第３終了情報FN3（Finishedメッセージ）を前述のように検証する（ステップＳ５１）。ここで、この検証が不合格であった場合（ステップＳ５２）、処理がエラー終了する（ステップＳ５５）。【００９３】
一方、この検証が合格であった場合、次に、終了情報生成部３２ｆが、記憶部３１からマスター秘密鍵MSと、第１装置１０と中継装置３０との間の通信ログ情報HS4とを読み込み、マスター秘密鍵MSと、通信ログ情報HS4とに対応する第４終了情報FN4（Finishedメッセージ）を生成して記憶部３１に格納する（第４終了情報生成過程／ステップＳ５３）。生成された第４終了情報FN4（Finishedメッセージ）は送信部３３に送られ、そこからネットワーク４０経由で第１装置１０に送信される（第４終了情報送信過程／ステップＳ５４）。【００９４】
＜本形態の特徴＞
本形態では、第２装置２０と中継装置３０とが同一の秘密鍵SKsを共有しているため、第１装置１０と第２装置２０とが秘密情報PMSを共有するために、中継装置３０が暗号化されたPMS復号し、それによって得られたPMSを第２装置２０の公開鍵で再暗号化する必要はなく、中継装置３０が、第１装置１０から送信された暗号文PKs(PMS)（ClientKeyExchangeメッセージ）を第２装置２０に転送するだけでよい（ステップＳ１３）。これにより、第１装置１０と第２装置２０とが秘密情報PMSを共有でき、それを用いて特定されるマスター秘密鍵MS及び共通鍵Keyを共有できる。その結果、中継装置３０は、第１装置１０で共通鍵Keyを用いて暗号化された暗号文を、そのまま第２装置２０に転送するだけで、第１装置１０と第２装置２０との間で行われる上述のプロトコル（例えば、ＴＬＳ等）に従った暗号通信を中継することができる。【００９５】
さらに、第１装置１０と第２装置２０とが同一の秘密情報PMSを共有しているため、これらは、それぞれ、同一の秘密情報PMSに対応する終了情報（Finishedメッセージ）を生成し（ステップＳ１６，Ｓ１８）、それを中継装置３０に送信することができる。特に、本形態では、中継装置３０の記憶部３１に第２装置２０の秘密鍵SKsを格納することとしたため、中継装置３０は、第１装置１０から送信された暗号文PKs(PMS)（ClientKeyExchangeメッセージ）を復号して、秘密情報PMSを抽出することができる（ステップＳ１３）。これにより、中継装置３０も、秘密情報PMSを用いて特定される同一のマスター秘密鍵MSに対応する終了情報（Finishedメッセージ）を第１装置１０と第２装置２０とに送信することができる（ステップＳ１７，Ｓ１９）。【００９６】
このように第１装置１０と中継装置３０との間、及び、第２装置２０と中継装置３０との間でそれぞれ、同一のマスター秘密鍵MSに対応する双方向の終了情報（Finishedメッセージ）が作成できるため、上述のように第１装置１０と第２装置２０とで共有可能となった共通鍵Keyは、上述のプロトコルのもと検証に合格する共通鍵となる。その結果、上述のプロトコルに従った処理を行う第１装置１０と第２装置２０とが、それぞれの仕様を変更することなく、中継装置３０を介して同一の共通鍵を共有することができる。【００９７】
特に、本形態では、第１装置１０と中継装置３０との間でのセッションに利用される乱数R1（第１乱数）を、第２装置２０と中継装置３０との間のセッションでも流用し（ClientHelloメッセージ）、さらに、第２装置２０と中継装置３０との間でのセッションに利用される乱数R2（第２乱数）を、第１装置１０と中継装置３０との間のセッションでも流用することとした（ServerHelloメッセージ）。そのため、ＴＬＳ等のように、乱数R1（第１乱数）と乱数R2（第２乱数）と秘密情報PMSとによってマスター秘密鍵MSが定まり、乱数R1（第１乱数）と乱数（第２乱数）とに終了情報（Finishedメッセージ）が依存する場合であっても、第１装置１０と中継装置３０との間、及び、第２装置２０と中継装置３０との間でそれぞれ、同一のマスター秘密鍵MS及び共通鍵Keyを設定でき、なおかつ、同一のマスター秘密鍵MSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、ＴＬＳ等のプロトコルに従った処理を行う第１装置１０と第２装置２０とが、それぞれの仕様を変更することなく、中継装置３０を介して同一の共通鍵Keyを共有することができる。【００９８】
また、本形態では、第２装置２０の送信部２３が、秘密情報暗号化過程（ステップＳ１２）の前に、第２装置２０の公開鍵の証明書Csを中継装置３０に送信し（ステップＳ８）、中継装置３０の受信部３４が、第２装置２０の公開鍵の証明書Csを受信し、中継装置３０の送信部３３が、秘密情報暗号化過程（ステップＳ１２）の前に、第２装置２０の公開鍵の証明書Csを第１装置１０に送信する（ステップＳ９）。これによって、第１装置１０は、第２装置の証明書付きの公開鍵PKsを取得できる。また、第１装置１０の公開鍵暗号化部１２ｃが、第２装置２０の秘密鍵SKsに対応する第２装置２０の公開鍵PKsを用いて秘密情報PMSを暗号化した暗号化秘密情報PKs(PMS)を生成し、中継装置３０を通じて第２装置２０に送信している（ステップＳ１２〜Ｓ１４）が、これは、第１装置１０が第２装置２０及び中継装置３０を認証するためのチャレンジを送信していることに相当する。そして、第１装置１０は、中継装置３０から第４終了情報FN4（Finishedメッセージ）を受信しているが、これは上記のチャレンジに対するレスポンスを受信していることに相当する。さらに、第１装置１０は、当該第４終了情報FN4（Finishedメッセージ）が秘密情報MSに対応するか否かを検証しているが（ステップＳ１９）、これは当該レスポンスを検証していることに相当する。ここで、上述の第２装置２０の公開鍵証明書Csを発行した認証局を信用するのであれば、この秘密情報PMSを復号できるのは秘密鍵SKsを所持している第２装置２０及び中継装置３０のみであるといえる。これにより、第１装置１０は秘密情報PMS,マスター秘密鍵MS, 及び共通鍵Keyを共有した相手が第２装置２０及び中継装置３０の少なくとも一方であることを確認できる（サーバ認証可能）。【００９９】
また、本形態では、第１装置１０の送信部１３が、第１装置１０の公開鍵証明書Ccを中継装置３０に送信する（ステップＳ１１）。これによって、中継装置３０は、第１装置１０の証明書付きの公開鍵PKcを取得できる。また、第１装置１０の署名生成部１２ｄが、第１装置１０の公開鍵PKcに対応する第１装置１０の秘密鍵SKcを用いて署名情報Signを生成し、送信部１３が、当該署名情報Signを中継装置３０に送信する。中継装置３０の署名検証部３２ｃが、第１装置１０の公開鍵PKcを用いて署名情報Signを検証する。これは、上述の第１装置１０の公開鍵証明書Ccを発行した認証局を信用することを前提に、中継装置３０が第２装置の代わりに第１装置１０を認証することに相当する（クライアント認証可能）。この場合、中継装置３０で認証が完了した第１装置１０のみを第２装置２０に接続させることができるため、不正な装置による第２装置２０への攻撃を防ぐことができる。【０１００】
また、本形態では、中継装置３０が、第１装置１０と第２装置２０との間で共有される共通鍵Keyを取得している。そのため、この中継装置３０は、必要に応じて、第１装置１０と第２装置２０との間でやり取りされる共通鍵Keyを用いて生成された暗号文を復号することができる。これにより、中継装置３０は、第２装置２０への攻撃コードをブロックしたり、第２装置２０への情報漏えいを防いだりできる。【０１０１】
〔第２実施形態〕
次に、本発明の第２実施形態について説明する。
本形態は、第１実施形態の変形例である。すなわち、第１実施形態では、第１装置が第２装置を認証し（サーバ認証）、中継装置が第２装置の代わりに第１装置を認証する（クライアント認証）こととした。これに対し、本形態では、第１装置が第２装置を認証（サーバ認証）するが、クライアント認証は行わない。以下では、第１実施形態との相違点を中心に説明し、第１実施形態と共通する事項については説明を省略する。【０１０２】
［全体構成］
図１２は、第２実施形態の共通鍵暗号通信システム１００の全体構成を説明するためのブロック図である。なお、図１２において第１実施形態と共通する部分については図５と同じ番号を付して説明を省略する。【０１０３】
図１２に例示するように、本形態の共通鍵暗号通信システム１００は、第１装置１１０（例えば、クライアント装置）と、第２装置２０（例えば、サーバ装置）と、中継装置１３０（例えば、ゲートウェイ装置）とを有する。また、第１装置１１０と中継装置１３０とは、ネットワーク４０を通じて通信可能に接続され、第２装置２０と中継装置１３０とは、ネットワーク５０を通じて通信可能に接続される。【０１０４】
なお、第１装置１１０と第２装置２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置１３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図１２では、１つの第１装置１１０と第２装置２０とが中継装置１３０と通信可能に接続されているが、２以上の第１装置１１０と第２装置２０とが中継装置１３０と通信可能に接続されていてもよい。さらには、複数の中継装置１３０を設けた構成であってもよい。【０１０５】
［第１装置］
本形態の第１装置１１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０１０６】
図１３は、第２実施形態の第１装置１１０の機能構成を説明するためのブロック図である。【０１０７】
図１３に例示するように、本形態の第１装置１１０は、記憶部１１、演算部１１２、送信部１３、受信部１４、制御部１５及び一時記憶部１６を有する。また、演算部１１２は、乱数生成部１２ａ、秘密情報設定部１２ｂ、公開鍵暗号化部１２ｃ、共通鍵生成部１２ｅ、終了情報生成部１２ｆ、終了情報検証部１２ｇ、通信処理部１２ｈ及び共通鍵暗号処理部１２ｉを有する。また、第１装置１１０は、制御部１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１６に格納され、他の演算のために読み出される。なお、本形態の演算部１１２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０１０８】
［第２装置］
第１実施形態と同じである。
［中継装置］
本形態の中継装置１３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０１０９】
図１４は、第２実施形態の中継装置１３０の機能構成を説明するためのブロック図である。【０１１０】
図１４に例示するように、本形態の中継装置１３０は、記憶部３１、演算部１３２、送信部３３、受信部３４、制御部３５及び一時記憶部３６を有する。また、演算部１３２は、暗号リスト制限部３１ａ、復号部３２ｂ、共通鍵生成部３２ｅ、終了情報生成部３２ｆ、終了情報検証部３２ｇ、通信処理部３２ｈ及び共通鍵暗号処理部３２ｉを有する。また、中継装置１３０は、制御部３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部３６に格納され、他の演算のために読み出される。なお、本形態の演算部１３２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０１１１】
＜処理＞
次に、本形態の処理を説明する。
［前提］
第１実施形態との相違点は、第１装置１１０に第１装置の秘密鍵が格納されない点である。その他は、第１実施形態と同様である。【０１１２】
［処理の全体］
図１５は、第２実施形態の処理の全体を説明するためのシーケンス図である。以下、第１実施形態との相違点のみを説明する。【０１１３】
第１実施形態との相違点は、第２公開鍵証明書送信過程（ステップＳ１１）及び署名情報送信過程（ステップＳ１５）が実行されない点のみである。そのため、第１装置１１０の認証処理は行われない。その他は、第１実施形態と同様である。【０１１４】
［中継装置の処理］
図１６は、第２実施形態の中継装置１３０の処理を説明するためのフローチャートである。以下、第１実施形態との相違点のみを説明する。【０１１５】
第１実施形態との相違点は、ステップＳ３８，Ｓ４２〜Ｓ４４の処理を実行しない点のみであり、その他は、第１実施形態と同様である。【０１１６】
＜本形態の特徴＞
本形態でも第１実施形態と同様、第１装置１１０と中継装置１３０との間、及び、第２装置２０と中継装置１３０との間でそれぞれ、同一の秘密情報PMS，マスター秘密鍵MS及び共通鍵Keyを共有できる。そして、そのために、中継装置１３０が、秘密情報PMSを再暗号化する必要はなく、第１装置１１０から送信された暗号文PKs(PMS)（ClientKeyExchangeメッセージ）を第２装置２０に転送するだけでよい。また、本形態でも第１実施形態と同様、第１装置１１０と中継装置１３０との間、及び、第２装置２０と中継装置１３０との間でそれぞれ、同一の秘密情報PMSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、上述のプロトコル（例えば、ＴＬＳ等）に従った処理を行う第１装置１１０と第２装置２０とが、それぞれの仕様を変更することなく、中継装置１３０を介して同一の共通鍵を共有することができる。その結果、中継装置１３０は、第１装置１１０で共通鍵Keyを用いて暗号化された暗号文を、そのまま第２装置２０に転送するだけで、第１装置２１０と第２装置２０との間で行われる上述のプロトコル（例えば、ＴＬＳ等）に従った暗号通信を中継することができる。【０１１７】
さらに、本形態でも第１実施形態と同様、第１装置１１０は共通鍵を共有した相手が第２装置２０及び中継装置１３０の少なくとも一方であることを確認できる（サーバ認証可能）。【０１１８】
また、本形態におけるステップＳ３で暗号リストの制限を行わないのであれば、ステップＳ２０〜Ｓ２２の共通鍵暗号・復号処理において、終了情報FNを初期化ベクトル（IV）としたAESやCamellia、DESなどのブロック暗号CBC(Cipher Block Chaining)モードによる共通鍵暗号方式を利用することができる。すなわち、本形態においてステップＳ３での暗号リストの制限を行わないのであれば、第１装置１１０と中継装置１３０との間のハンドシェイクメッセージ（通信ログ情報）と、中継装置１３０と第２装置２０との間のハンドシェイクメッセージ（通信ログ情報）とが等しくなり、これらの間の（Finishedメッセージ）も等しくなる（図１５参照）。すなわち、終了情報FN1（第１終了情報）と終了情報FN2（第２終了情報）とが同一となり、終了情報FN4（第４終了情報）と終了情報FN3（第３終了情報）とが同一となる。【０１１９】
その結果、終了情報FN1（第１終了情報）及び／又は終了情報FN4（第４終了情報）を、第１装置１１０が秘密情報PMSを用いて特定されるマスター秘密鍵MSを用い、初期化ベクトルを必要とするブロック暗号方式（CBCモード等）によって暗号化又は復号する場合の初期化ベクトルとして利用でき、終了情報FN2（第２終了情報）及び／又は終了情報FN3（第３終了情報）を、第２装置２０が秘密情報PMSを用いて特定されるマスター秘密鍵MSを用い、初期化ベクトルを必要とするブロック暗号方式（CBCモード等）によって暗号化又は復号する場合の初期化ベクトルとして利用できる。【０１２０】
また、このようにステップＳ３で暗号リストの制限を行わないことにより、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式を採用した場合であっても、中継装置１３０は、第１装置１１０から送信された暗号文をそのまま第２装置２０に転送することができる。つまり、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式では、暗号化対象の平文（ApplicationData）の先頭にFinishedメッセージ（Finished）が付加され、付加されたFinishedメッセージは、パディング等によってビット長が調整されて暗号化対象の先頭のブロックとされる。また、この標準的なCBCモードによる共通鍵暗号方式では、各ブロックを暗号化する前に、直前のブロックの暗号化結果との排他的論理和（XOR）がとられる。また、最初に暗号化されるFinishedを含んだブロックは、暗号化前に初期化ベクトル（IV）とXORがとられる。なお、この標準的なCBCモードによる共通鍵暗号方式では、初期化ベクトル（IV）はマスター秘密鍵MSを擬似乱数関数PRFに入力して算出される。従って、暗号化対象の平文（ApplicationData）の最初のブロック（Data）の暗号化結果は、その直前のFinishedを含んだブロックの暗号化結果に影響され、次のようになる。なお、E(・)は・の暗号化を表す。【０１２１】
E(Data xor E(Finished xor IV))
このため、第１装置１１０・中継装置１３０間と中継装置１３０・第２装置２０間でFinishedメッセージが異なる場合、共通鍵Keyと暗号化対象の平文（ApplicationData）とが等しくても、暗号化結果が異なってしまい、中継装置１３０で単純に転送できない。しかし、上述のようにステップＳ３で暗号リストの制限を行わないことにより、第１装置１１０・中継装置１３０間と中継装置１３０・第２装置２０間とでFinishedメッセージが等しくなり、中継装置１３０は、第１装置１１０から送信された暗号文をそのまま第２装置２０に転送することが可能となる。【０１２２】
〔第３実施形態〕
次に、本発明の第３実施形態について説明する。
本形態は、第１実施形態の変形例であり、中継装置に第２装置の秘密鍵を格納することなく、共通鍵を共有化する形態である。この場合、第１装置と中継装置との間、及び、第２装置と中継装置との間でそれぞれ、同一の共通鍵を共用可能とするために、中継装置が秘密情報PMSを再暗号化する必要がある。その反面、中継装置に第２装置の秘密鍵を格納する処理を省略できる。【０１２３】
以下では、第１実施形態との相違点を中心に説明し、第１実施形態と共通する事項については説明を省略する。【０１２４】
［全体構成］
図１７は、第３実施形態の共通鍵暗号通信システム２００の全体構成を説明するためのブロック図である。なお、図１７において第１実施形態と共通する部分については図５と同じ番号を付して説明を省略する。【０１２５】
図１７に例示するように、本形態の共通鍵暗号通信システム２００は、第１装置２１０（例えば、クライアント装置）と、第２装置２０（例えば、サーバ装置）と、中継装置２３０（例えば、ゲートウェイ装置）とを有する。また、第１装置２１０と中継装置２３０とは、ネットワーク４０を通じて通信可能に接続され、第２装置２０と中継装置２３０とは、ネットワーク５０を通じて通信可能に接続される。【０１２６】
なお、第１装置２１０と第２装置２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置２３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図１７では、１つの第１装置２１０と第２装置２０とが中継装置２３０と通信可能に接続されているが、２以上の第１装置２１０と第２装置２０とが中継装置２３０と通信可能に接続されていてもよい。さらには、複数の中継装置２３０を設けた構成であってもよい。【０１２７】
［第１装置］
本形態の第１装置２１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０１２８】
図１８は、第３実施形態の第１装置２１０の機能構成を説明するためのブロック図である。【０１２９】
図１８に例示するように、本形態の第１装置２１０は、記憶部１１、演算部２１２、送信部１３、受信部１４、制御部１５及び一時記憶部１６を有する。また、演算部２１２は、乱数生成部１２ａ、秘密情報設定部１２ｂ、公開鍵暗号化部２１２ｃ、署名生成部１２ｄ、共通鍵生成部１２ｅ、終了情報生成部１２ｆ、終了情報検証部１２ｇ、通信処理部１２ｈ及び共通鍵暗号処理部１２ｉを有する。また、第１装置２１０は、制御部１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１６に格納され、他の演算のために読み出される。なお、本形態の演算部２１２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０１３０】
［第２装置］
第１実施形態と同じである。
［中継装置］
本形態の中継装置２３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０１３１】
図１９は、第３実施形態の中継装置２３０の機能構成を説明するためのブロック図である。【０１３２】
図１９に例示するように、本形態の中継装置２３０は、記憶部３１、演算部２３２、送信部３３、受信部３４、制御部３５及び一時記憶部３６を有する。また、演算部２３２は、暗号リスト制限部３１ａ、復号部３２ｂ、署名検証部３２ｃ、公開鍵暗号化部３３２ｃ、共通鍵生成部３２ｅ、終了情報生成部３２ｆ、終了情報検証部３２ｇ、通信処理部３２ｈ及び共通鍵暗号処理部３２ｉを有する。また、中継装置２３０は、制御部３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部３６に格納され、他の演算のために読み出される。なお、本形態の演算部２３２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０１３３】
＜処理＞
次に、本形態の処理を説明する。
［前提］
第１実施形態との相違点は、中継装置２３０に対し、公開鍵暗号方式（ＲＳＡ等）の鍵ペア（公開鍵，秘密鍵）が生成されている点である。なお、鍵ペアは複数の暗号方式分生成されてもよい。そして、中継装置２３０の秘密鍵SKgが中継装置２３０の記憶部３１に格納され、当該秘密鍵SKgに対応する中継装置２３０の公開鍵PKgにも、認証局によって公開鍵証明書Cgが発行され、これが中継装置２３０記憶部３１に格納される。その他の点は、第１実施形態と同様である。【０１３４】
［処理の全体］
図２０は、第３実施形態の処理の全体を説明するためのシーケンス図である。以下、第１実施形態の相違点のみを説明する。【０１３５】
第１実施形態との相違点は、ステップＳ１及びＳ９が実行されない点、ステップＳ１０の代わりに、以下のステップＳ１１０が実行される点、ステップＳ１２，Ｓ１３の代わりに、以下のステップＳ１１２及びＳ１１３が実行される点である。【０１３６】
《ステップＳ１１０》
ステップＳ１１０では、中継装置２３０の通信処理部３２ｈが、中継装置２３０の公開鍵証明書Cgを記憶部３１から読み込み、これを送信部３３に送る。送信部３３は、中継装置２３０の公開鍵証明書Cgをネットワーク４０経由で第１装置２１０に送信する（公開鍵証明書送信過程）。送信された中継装置２３０の公開鍵証明書Cgは、第１装置２１０（図１８）の受信部１４で受信され、通信処理部１２ｈに送られる。通信処理部１２ｈは、当該中継装置２３０の公開鍵証明書Cgを記憶部１１に格納する。【０１３７】
《ステップＳ１１２》
まず、第１装置２１０（図１８）の秘密情報設定部１２ｂが、共通鍵Keyを特定するための秘密情報PMS（premaster secret）を設定し、それを記憶部１１に格納する。次に、第１装置２１０の通信処理部１２ｈが、記憶部１１から中継装置２３０の公開鍵証明書Cgを読み込み、中継装置２３０の公開鍵証明書Cgを発行したＣＡの公開鍵PKcaをネットワーク４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部１１に格納される。通信処理部１２ｈは、記憶部１１から中継装置２３０の公開鍵証明書CgとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて中継装置２３０の公開鍵証明書Cgを検証する。この検証が合格した場合、公開鍵暗号化部２１２ｃが、記憶部１１から秘密情報PMSと公開鍵証明書Cgが具備する中継装置２３０の公開鍵PKgと暗号方式Ｃとを読み込み、当該公開鍵PKgを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKg(PMS)（第１暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部１１に格納する（秘密情報暗号化過程）。生成された暗号文PKg(PMS)を含む情報（ClientKeyExchangeメッセージ）は、送信部１３に送られ、送信部１３は、当該暗号文PKg(PMS)（暗号化秘密情報）を含むClientKeyExchangeメッセージをネットワーク４０経由で中継装置２３０に送信する（暗号化秘密情報送信過程）。【０１３８】
《ステップＳ１１３》
ClientKeyExchangeメッセージは、中継装置２３０（図１９）の受信部３４で受信され、通信処理部３２ｈに送られ、通信処理部３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKg(PMS)（第１暗号化秘密情報）を記憶部３１に格納する。次に、復号部３２ｂが、記憶部３１から暗号方式Ｃを読み込み、それに対応する中継装置２３０の秘密鍵SKgを読み込む。さらに、復号部３２ｂは、記憶部３１から暗号文PKg(PMS)を読み込み、これを秘密鍵SKgで復号して秘密情報PMSを抽出する（第１秘密情報復号過程）。抽出された秘密情報PMSは、記憶部３１に格納される。【０１３９】
次に、中継装置２３０の通信処理部３２ｈが、記憶部３１から第２装置２０の公開鍵証明書Csを読み込み、第２装置２０の公開鍵証明書Csを発行したＣＡの公開鍵PKcaをネットワーク４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部３１に格納される。通信処理部３２ｈは、記憶部３１から第２装置２０の公開鍵証明書CsとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第２装置２０の公開鍵証明書Csを検証する。この検証が合格した場合、公開鍵暗号化部３３２ｃが、記憶部３１から秘密情報PMSと公開鍵証明書Csが具備する第２装置２０の公開鍵PKsと暗号方式Ｃとを読み込み、当該公開鍵PKsを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKs(PMS)（暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部３１に格納する（第２秘密情報暗号化過程）。【０１４０】
［中継装置の処理］
図２１は、第３実施形態の中継装置２３０の処理を説明するためのフローチャートである。以下では、第１実施形態との相違点のみを説明する。【０１４１】
第１実施形態との相違点は、ステップＳ３７の代わりに以下のステップＳ１３７の処理が実行され、ステップＳ３９，Ｓ４０の代わりに以下のステップＳ１３９，Ｓ１４０が実行される点、ステップＳ１４０とステップＳ４１との間に以下のステップＳ１４１の処理が実行される点である。【０１４２】
《ステップＳ１３７》
送信部３３が、中継装置２３０の公開鍵証明書Cgをネットワーク４０経由で第１装置２１０に送信する（公開鍵証明書送信過程）。【０１４３】
《ステップＳ１３９》
中継装置２３０の受信部３４が、暗号文PKg(PMS)を含む情報（ClientKeyExchangeメッセージ）を受信し、これを通信処理部３２ｈに送る。【０１４４】
《ステップＳ１４０》
通信処理部３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKg(PMS)（第１暗号化秘密情報）を記憶部３１に格納する。次に、復号部３２ｂが、前述のように、秘密鍵SKgを用いて暗号文PKg(PMS)を復号して秘密情報PMSを抽出する（第１秘密情報復号過程）。秘密情報PMSは、記憶部３１に格納される。【０１４５】
《ステップＳ１４１》
中継装置２３０の通信処理部３２ｈが、記憶部３１から第２装置２０の公開鍵証明書Csを読み込み、第２装置２０の公開鍵証明書Csを発行したＣＡの公開鍵PKcaをネットワーク４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部３１に格納される。通信処理部３２ｈは、記憶部３１から第２装置２０の公開鍵証明書CsとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第２装置２０の公開鍵証明書Csを検証する。この検証が合格した場合、公開鍵暗号化部３３２ｃが、記憶部３１から秘密情報PMSと公開鍵証明書Csが具備する第２装置２０の公開鍵PKsと暗号方式Ｃとを読み込み、当該公開鍵PKsを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKs(PMS)（暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部３１に格納する（第２秘密情報暗号化過程）。【０１４６】
＜本形態の特徴＞
本形態でも第１実施形態と同様、第１装置２１０と中継装置２３０との間、及び、第２装置２０と中継装置２３０との間でそれぞれ、同一の秘密情報PMS，マスター秘密鍵MS及び共通鍵Keyを共有できる。また、本形態でも第１実施形態と同様、第１装置２１０と中継装置２３０との間、及び、第２装置２０と中継装置２３０との間でそれぞれ、同一の秘密情報PMSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、上述のプロトコル（例えば、ＴＬＳ等）に従った処理を行う第１装置２１０と第２装置２０とが、それぞれの仕様を変更することなく、中継装置２３０を介して同一の共通鍵を共有することができる。その結果、中継装置２３０は、第１装置２１０で共通鍵Keyを用いて暗号化された暗号文を、そのまま第２装置２０に転送するだけで、第１装置２１０と第２装置２０との間で行われる上述のプロトコル（例えば、ＴＬＳ等）に従った暗号通信を中継することができる。【０１４７】
また、第１実施形態では、第１装置１０は中継装置３０にアクセスしているにもかかわらず、中継装置３０から第２装置２０の公開鍵証明書Csが送られてきた。このため、第１装置１０によって「証明書が異なる」との警告が出されてしまう場合がある。第３実施形態では、第１装置２１０に中継装置２３０の公開鍵証明書Cgが送られてくるため、このような警告は出ない。【０１４８】
〔第４実施形態〕
次に、本発明の第４実施形態について説明する。
本形態は、第３実施形態の変形例である。以下では、第１，３実施形態との相違点を中心に説明し、第１，３実施形態と共通する事項については説明を省略する。【０１４９】
［全体構成］
図２２は、第４実施形態の共通鍵暗号通信システム３００の全体構成を説明するためのブロック図である。なお、図２２において第１実施形態と共通する部分については図５と同じ番号を付して説明を省略する。【０１５０】
図２２に例示するように、本形態の共通鍵暗号通信システム３００は、第１装置３１０（例えば、クライアント装置）と、第２装置２０（例えば、サーバ装置）と、中継装置３３０（例えば、ゲートウェイ装置）とを有する。また、第１装置３１０と中継装置３３０とは、ネットワーク４０を通じて通信可能に接続され、第２装置２０と中継装置３３０とは、ネットワーク５０を通じて通信可能に接続される。【０１５１】
なお、第１装置３１０と第２装置２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置３３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図２２では、１つの第１装置３１０と第２装置２０とが中継装置３３０と通信可能に接続されているが、２以上の第１装置３１０と第２装置２０とが中継装置３３０と通信可能に接続されていてもよい。さらには、複数の中継装置３３０を設けた構成であってもよい。【０１５２】
［第１装置］
本形態の第１装置３１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０１５３】
図２３は、第４実施形態の第１装置３１０の機能構成を説明するためのブロック図である。【０１５４】
図２３に例示するように、本形態の第１装置３１０は、記憶部１１、演算部３１２、送信部１３、受信部１４、制御部１５及び一時記憶部１６を有する。また、演算部３１２は、乱数生成部１２ａ、秘密情報設定部１２ｂ、公開鍵暗号化部２１２ｃ、共通鍵生成部１２ｅ、終了情報生成部１２ｆ、終了情報検証部１２ｇ、通信処理部１２ｈ及び共通鍵暗号処理部１２ｉを有する。また、第１装置３１０は、制御部１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１６に格納され、他の演算のために読み出される。なお、本形態の演算部３１２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０１５５】
［第２装置］
第１実施形態と同じである。
［中継装置］
本形態の中継装置３３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０１５６】
図２４は、第４実施形態の中継装置３３０の機能構成を説明するためのブロック図である。【０１５７】
図２４に例示するように、本形態の中継装置３３０は、記憶部３１、演算部３３２、送信部３３、受信部３４、制御部３５及び一時記憶部３６を有する。また、演算部３３２は、暗号リスト制限部３１ａ、復号部３２ｂ、公開鍵暗号化部３３２ｃ、共通鍵生成部３２ｅ、終了情報生成部３２ｆ、終了情報検証部３２ｇ、通信処理部３２ｈ及び共通鍵暗号処理部３２ｉを有する。また、中継装置３３０は、制御部３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部３６に格納され、他の演算のために読み出される。なお、本形態の演算部２３２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０１５８】
＜処理＞
次に、本形態の処理を説明する。
［前提］
第３実施形態との相違点は、第１装置３１０に第１装置の秘密鍵が格納されない点である。その他は、第３実施形態と同様である。【０１５９】
［処理の全体］
図２５は、第４実施形態の処理の全体を説明するためのシーケンス図である。以下、第３実施形態との相違点のみを説明する。【０１６０】
第３実施形態との相違点は、第２公開鍵証明書送信過程（ステップＳ１１）及び署名情報送信過程（ステップＳ１５）が実行されない点のみである。その他は、第３実施形態と同様である。【０１６１】
［中継装置の処理］
図２６は、第４実施形態の中継装置３３０の処理を説明するためのフローチャートである。以下、第３実施形態との相違点のみを説明する。【０１６２】
第３実施形態との相違点は、ステップＳ３８，Ｓ４２〜Ｓ４４の処理を実行しない点のみであり、その他は、第３実施形態と同様である。【０１６３】
＜本形態の特徴＞
本形態でも第１実施形態と同様、第１装置３１０と中継装置３３０との間、及び、第２装置２０と中継装置３３０との間でそれぞれ、同一の秘密情報PMS，マスター秘密鍵MS及び共通鍵Keyを共有できる。また、本形態でも第１実施形態と同様、第１装置３１０と中継装置３３０との間、及び、第２装置２０と中継装置３３０との間でそれぞれ、同一の秘密情報PMSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、上述のプロトコル（例えば、ＴＬＳ等）に従った処理を行う第１装置３１０と第２装置２０とが、それぞれの仕様を変更することなく、中継装置３３０を介して同一の共通鍵を共有することができる。その結果、中継装置３３０は、第１装置３１０で共通鍵Keyを用いて暗号化された暗号文を、そのまま第２装置２０に転送するだけで、第１装置３１０と第２装置２０との間で行われる上述のプロトコル（例えば、ＴＬＳ等）に従った暗号通信を中継することができる。【０１６４】
〔第５実施形態〕
本形態は、上述の各実施形態の変形例であり、上述の終了情報（Finishedメッセージ）のやり取り（ステップＳ１９）が終了した後に、第１装置、第２装置及び中継装置が、ステップＳ１９までの処理で確立されたセッションを再利用して再接続を行い、新たな終了情報（Finishedメッセージ）のやり取りを行う。これにより、再接続後に第１装置が送受信する終了情報（Finishedメッセージ）と、第２装置が送受信する終了情報（Finishedメッセージ）とを等しくすることができる（以下、第１装置が送受信する終了情報と、第２装置が送受信する終了情報とを等しくする処理を「終了情報整合処理」と呼ぶ）。その結果、第１装置と第２装置とが、共通鍵Keyを用い、終了情報（Finishedメッセージ）を初期化ベクトルとしたブロック暗号方式（CBCモード等）によって暗号化又は復号を行うことが可能となる。また、前述したように、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式を採用した場合であっても、中継装置は、第１装置から送信された暗号文をそのまま第２装置２０に転送することができる。【０１６５】
以下では、各実施形態のステップＳ１９より後の処理のみを説明する。なお、本形態の処理は、上述の何れの実施形態にも適用可能である。しかし、ここでは説明の簡略化のため、第１実施形態に本形態の処理を付加した形態のみを説明する。また、本形態の処理が実行される前提として、各実施形態のServerHelloメッセージ（ステップＳ５〜Ｓ７）が第２装置で生成されたセッション識別子SIDを含んでおり、ServerHelloメッセージが送信される過程において、当該セッション識別子SIDが第１装置、第２装置及び中継装置の記憶部にそれぞれ格納され、それらがそれぞれ秘密情報PMSやマスター秘密鍵MSに関連付けられるものとする。【０１６６】
図２７は、第５実施形態における終了情報整合処理を説明するためのシーケンス図である。【０１６７】
まず、中継装置３０（図８）の送信部３３が第１装置１０（図６）に対して再接続要求情報を送信する（ステップＳ２５１）。これは第１装置１０の受信部１４で受信され通信処理部１２ｈに送られる。これを契機に、乱数生成部１２ａが乱数R3を生成して通信処理部１２ｈに送る。通信処理部１２ｈは記憶部１１からセッション識別子SIDを読み込み、乱数R3とセッション識別子SIDとを含む送信開始要求情報（ClientHello メッセージ）を生成して送信部１３に送る。送信部１３は、送信開始要求情報（ClientHello メッセージ）を中継装置３０に送信する。これは中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ２５２）。また、この送信開始要求情報（ClientHello メッセージ）は、中継装置３０の送信部３３から送信され（ステップＳ２５３）、第２装置２０（図７）の受信部２４で受信される（ステップＳ２５４）。この送信開始要求情報（ClientHello メッセージ）は、記憶部２１に格納され、通信処理部２２ｈに送られる。これを契機に、第２装置２０の乱数生成部２２ａが乱数R4を生成して通信処理部２２ｈに送る。通信処理部２２ｈは記憶部２１からセッション識別子SIDを読み込み、乱数R4とセッション識別子SIDとを含む送信開始応答情報（ServerHelloメッセージ）を生成して送信部２３に送る。送信部２３は、送信開始応答情報（ServerHelloメッセージ）を中継装置３０に送信し、これは中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ２５５）。また、この送信開始応答情報（ServerHelloメッセージ）は、中継装置３０の送信部３３から送信され（ステップＳ２５６）、第１装置１０の受信部１４で受信される（ステップＳ２５７）。この送信開始応答情報（ServerHelloメッセージ）は、記憶部１１に格納され、通信処理部１２ｈに送られる。【０１６８】
次に、第１装置１０が中継装置３０を介して第２装置２０にChangeCipherSpecメッセージ（例えば初期化ベクトルを初期化する旨を含む）を送信した後、第１装置１０の終了情報生成部１２ｆが、記憶部１１から上記セッション識別子SIDに対応するマスター秘密鍵MSと、ステップＳ２５２以後の第１装置１０と中継装置３０との間の通信ログ情報HS5とを読み込み、マスター秘密鍵MSと通信ログ情報HS5とに対応する第５終了情報FN5（Finishedメッセージ）を生成して記憶部１１に格納する（第５終了情報生成過程）。第１装置１０と中継装置３０との間の通信ログ情報HS5の例は、このメッセージを除くステップＳ２５２以後のハンドシェイクメッセージの一部または全部である。第１装置１０と中継装置３０との間の通信ログ情報HS5の一例は、このメッセージを除くステップＳ２５２以後のすべてのハンドシェイクメッセージであり、乱数R3と乱数R4とを含む。また、第５終了情報FN5（Finishedメッセージ）の一例は、マスター秘密鍵MSを用い、通信ログ情報HS5を認証対象として生成されたメッセージ認証子であり、より具体的には、マスター秘密鍵MS(master secret)、文字列(finished label)、通信ログ情報HS5のMD5によるハッシュ値と通信ログ情報HS5のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値である。また、マスター秘密鍵MSを用い、マスター秘密鍵MSと通信ログ情報HS5とに対応する情報を暗号化したものを第５終了情報FN5としてもよい。【０１６９】
生成された第５終了情報FN5（Finishedメッセージ）は送信部１３に送られ、そこから中継装置３０に送信される（ステップＳ２５８）。なお、第５終了情報FN5は、共通鍵Keyを用いて暗号化されて送信されてもよい。第５終了情報FN5（Finishedメッセージ）は中継装置３０の受信部３４で受信され（ステップＳ２５９）、さらに送信部３３から第２装置２０に送信される（第５終了情報送信過程／ステップＳ２６０）。【０１７０】
次に、第２装置２０が中継装置３０を介して第１装置１０にChangeCipherSpecメッセージ（例えば初期化ベクトルを初期化する旨を含む）を送信した後、第２装置２０の終了情報生成部２２ｆが、記憶部２１から上記セッション識別子SIDに対応するマスター秘密鍵MSと、ステップＳ２５２以後の第２装置２０と中継装置３０との間の通信ログ情報HS6とを読み込み、マスター秘密鍵MSと通信ログ情報HS6とに対応する第６終了情報FN6（Finishedメッセージ）を生成して記憶部２１に格納する（第６終了情報生成過程）。第２装置２０と中継装置３０との間の通信ログ情報HS6の例は、このメッセージを除くステップＳ２５２以後のハンドシェイクメッセージの一部または全部である。第２装置２０と中継装置３０との間の通信ログ情報HS6の一例は、このメッセージを除くステップＳ２５２以後のすべてのハンドシェイクメッセージであり、乱数R3と乱数R4とを含む。また、第６終了情報FN6（Finishedメッセージ）の一例は、マスター秘密鍵MSを用い、通信ログ情報HS6を認証対象として生成されたメッセージ認証子であり、より具体的には、マスター秘密鍵MS(master secret)、文字列(finished label)、及び通信ログ情報HS6のMD5によるハッシュ値と通信ログ情報HS6のSHA-1によるハッシュ値とのビット連結値を、予め定められた擬似乱数関数PRFに入力して得られた関数値である。また、マスター秘密鍵MSを用い、マスター秘密鍵MSと通信ログ情報HS6とに対応する情報を暗号化したものを第６終了情報FN6としてもよい。【０１７１】
生成された第６終了情報FN6（Finishedメッセージ）は送信部２３に送られ、そこから中継装置３０に送信される（ステップＳ２６１）。なお、第６終了情報FN6は、共通鍵Keyを用いて暗号化されて送信されてもよい。第６終了情報FN6（Finishedメッセージ）は中継装置３０の受信部３４で受信され（ステップＳ２６２）、さらに送信部３３から第１装置１０に送信される（第６終了情報送信過程／ステップＳ２６３）。【０１７２】
以上により、第１装置１０の共通鍵暗号処理部１２ｉや第２装置２０の共通鍵暗号処理部２２ｉが、第５終了情報FN5（Finishedメッセージ）及び／又は第６終了情報FN6（Finishedメッセージ）を初期化ベクトルとしたブロック暗号方式（CBCモード等）によって暗号化又は復号を行うことができる。また、前述したように、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式を採用した場合には、中継装置は、第１装置から送信された暗号文をそのまま第２装置２０に転送することができる。【０１７３】
＜本形態の特徴＞
以上のように、本形態では、第４終了情報送信過程（ステップＳ１９）の後に、第１装置の送信部が送信開始要求情報（ClientHello メッセージ）を中継装置に送信し、中継装置の送信部が当該送信開始要求情報（ClientHello メッセージ）を第２装置に送信し、第２装置の送信部が送信開始応答情報（ServerHelloメッセージ）を中継装置に送信し、中継装置の送信部が当該送信開始応答情報（ServerHelloメッセージ）を第１装置に送信する（再接続開始過程）。次に、第１装置の終了情報生成部が、再接続開始過程以後の当該第１装置と中継装置との間の通信ログ情報と、秘密情報PMSと、に対応する第５終了情報（Finishedメッセージ）を生成し（第５終了情報生成過程）、第１装置の送信部が第５終了情報（Finishedメッセージ）を中継装置に送信し、中継装置の送信部が第５終了情報を第２装置に送信する（第５終了情報送信過程）。さらに、第２装置の終了情報生成部が、再接続開始過程以後の当該第２装置と上記中継装置との間の通信ログ情報と、秘密情報PMSと、に対応する第６終了情報（Finishedメッセージ）を生成し（第６終了情報生成過程）、第２装置の送信部が第６終了情報（Finishedメッセージ）を中継装置に送信し、中継装置の送信部が第６終了情報（Finishedメッセージ）を第１装置に送信する（第６終了情報送信過程）。【０１７４】
ここで、第１装置が送信する第５終了情報（Finishedメッセージ）は、第２装置が受信する第５終了情報（Finishedメッセージ）と同一であり、第２装置が送信する第６終了情報（Finishedメッセージ）は、第１装置が受信する第６終了情報（Finishedメッセージ）と同一である。よって、第５終了情報及び／又は第６終了情報は、第１装置と第２装置とが秘密情報PMSを用いて特定される共通鍵Keyを用い、初期化ベクトルを必要とするブロック暗号方式（CBCモード等）によって暗号化又は復号を行う場合の初期化ベクトルとして利用できる。すなわち、本形態の再接続処理を実行することによって、第１装置と第２装置との間で共有された共通鍵Keyを用い、終了情報（Finishedメッセージ）を初期化ベクトルとしたブロック暗号方式（CBCモード等）によって暗号化又は復号を行うことが可能となる。【０１７５】
また、第１装置が送受信する終了情報と、第２装置が送受信する終了情報とを等しくすることができるため、前述したような、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式を採用した場合であっても、中継装置は、第１装置から送信された暗号文をそのまま第２装置に転送することができる。【０１７６】
〔第６実施形態〕
第５実施形態と同様、本形態も、第１〜第４実施形態の変形例であり、上述の終了情報（Finishedメッセージ）のやり取り（ステップＳ１９）が終了した後に、第１装置、第２装置及び中継装置が、ステップＳ１９までの処理で確立されたセッションを再利用して再接続を行い、終了情報整合処理を実行する。ＴＬＳ等の場合には、ＴＬＳセッション再開モードを利用して終了情報整合処理を実行できる。【０１７７】
以下では、各実施形態のステップＳ１９より後の処理のみを説明する。なお、本形態の処理は、上述の第１〜第４実施形態の何れにも適用可能である。しかし、ここでは説明の簡略化のため、第１実施形態に本形態の処理を付加した形態のみを説明する。また、本形態の処理が実行される前提として、各実施形態のServerHelloメッセージ（ステップＳ５〜Ｓ７）が第２装置で生成されたセッション識別子SIDを含んでおり、ServerHelloメッセージが送信される過程において、当該セッション識別子SIDが第１装置、第２装置及び中継装置の記憶部にそれぞれ格納され、それらがそれぞれ秘密情報PMSやマスター秘密鍵MSに関連付けられるものとする。【０１７８】
［処理の全体］
図２８は、第６実施形態における終了情報整合処理を説明するためのシーケンス図である。【０１７９】
まず、中継装置３０（図８）の送信部３３が第１装置１０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ３０１）。同様に、中継装置３０（図８）の送信部３３が第２装置２０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ３０２）。通常、これらの再接続要求情報は、前述のステップＳ１９までの処理で共有された共通鍵Keyを用いて各共通鍵暗号処理部３２ｉで暗号化されて送信され、必要に応じて復号される。【０１８０】
第１装置１０に送信された再接続要求情報は、受信部１４で受信され通信処理部１２ｈに送られる。これを契機に、乱数生成部１２ａが乱数R3を生成して通信処理部１２ｈに送る。通信処理部１２ｈは記憶部１１からセッション識別子SIDを読み込み、乱数R3とセッション識別子SIDとを含む送信開始要求情報（ClientHello メッセージ）を生成して送信部１３に送る。送信部１３は、送信開始要求情報（ClientHello メッセージ）を中継装置３０に送信し、これは中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３０３）。【０１８１】
中継装置３０の通信処理部３２ｈは、記憶部３１からセッション識別子SIDを読み込み、ステップＳ３０３で受信されたセッション識別子SIDが、ステップＳ１９より前に記憶部３１に格納されていたセッション識別子SIDと一致するか否かを確認する（ステップＳ３０４）。これらが一致すると判断された場合にのみ、この送信開始要求情報（ClientHello メッセージ）は、中継装置３０の送信部３３から送信される。送信開始要求情報（ClientHello メッセージ）は、第２装置２０の受信部２４で受信され（ステップＳ３０５）、記憶部２１に格納され、通信処理部２２ｈに送られる。【０１８２】
これを契機に、第２装置２０の乱数生成部２２ａが乱数R4を生成して通信処理部２２ｈに送る。通信処理部２２ｈは記憶部２１からセッション識別子SIDを読み込み、乱数R4とセッション識別子SIDとを含む送信開始応答情報（ServerHelloメッセージ）を生成して送信部２３に送る。送信部２３は、送信開始応答情報（ServerHelloメッセージ）を中継装置３０に送信し、これは中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３０６）。【０１８３】
中継装置３０の通信処理部３２ｈは、記憶部３１からセッション識別子SIDを読み込み、ステップＳ３０６で受信されたセッション識別子SIDが、ステップＳ１９より前に記憶部３１に格納されていたセッション識別子SIDと一致するか否か（ステップＳ３０４で送信されたセッション識別子SIDと、ステップＳ３０６で受信されたセッション識別子SIDとが一致するか否か）を確認する（ステップＳ３０７）。これらが一致すると判断された場合にのみ、この送信開始応答情報（ServerHelloメッセージ）は、中継装置３０の送信部３３から送信される。この送信開始応答情報（ServerHelloメッセージ）は、第１装置１０の受信部１４で受信され、記憶部１１に格納され、通信処理部１２ｈに送られる（ステップＳ３０８）。【０１８４】
第１装置１０の通信処理部１２ｈは、記憶部１１からセッション識別子SIDを読み込み、ステップＳ３０８で受信されたセッション識別子SIDが、記憶部１１から読み込んだセッション識別子SIDと一致するか否か（ステップＳ３０３で送信されたセッション識別子SIDと、ステップＳ３０８で受信されたセッション識別子SIDとが一致するか否か）を確認する。次に、各装置の共通鍵生成部１２ｉ，２２ｉ，３２ｉは、それぞれ記憶部１１，２１，３１から、それぞれセッション識別子SIDに対応するマスター秘密鍵MSと、乱数R3,R4とを読み込み、前述のように共通鍵Key2を生成し、記憶部１１，２１及び３１に格納する。【０１８５】
その後、第２装置２０から第１装置１０に中継装置３０経由でChangeCipherSpecメッセージが送信される。ＴＬＳ等では、通常、これ以降、第１装置１０，第２装置２０，中継装置３０間で送受信される情報は、それぞれ各共通鍵暗号処理部で共通鍵Key2を用いて暗号化され、必要に応じて各共通鍵暗号処理部で復号されるが、以下ではその説明を省略する。【０１８６】
次に、各装置の終了情報生成部１２ｆ，２２ｆ，３２ｆが、それぞれ、記憶部１１，２１，３１から上記セッション識別子SIDに対応するマスター秘密鍵MSと、ステップＳ３０３以後の通信ログ情報HS6とを読み込み、マスター秘密鍵MSと通信ログ情報HS6とに対応する第６終了情報FN6（Finishedメッセージ）を生成して記憶部１１，２１，３１に格納する。なお、ＴＬＳ等の場合、通信ログ情報HS6は、ステップＳ３０３以後のChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、終了情報の具体的な生成方法の例は前述したとおりである。【０１８７】
その後、第２装置２０の通信処理部２２ｈが、記憶部２１から第６終了情報FN6（Finishedメッセージ）を読み込み、それを送信部２３に送り、そこから中継装置３０に送信する（ステップＳ３０９）。【０１８８】
この第６終了情報FN6は、中継装置３０の受信部３４で受信され、記憶部３１に格納される。通信処理部３２ｈは、自らが生成した第６終了情報FN6と、第２装置２０から送信された第６終了情報FN6とを記憶部３１から読み込み、これらが等しいか否かを検証する（ステップＳ３１０）。ここで、これらが等しいと判断された場合にのみ、中継装置３０の送信部３３は、この第６終了情報FN6を第１装置１０に送信する（ステップＳ３１１）。【０１８９】
この第６終了情報FN6は、第１装置１０の受信部１４で受信され、記憶部１１に格納される。通信処理部１２ｈは、自らが生成した第６終了情報FN6と、中継装置３０から送信された第６終了情報FN6とを記憶部１１から読み込み、これらが等しいか否かを検証する。【０１９０】
ここで、これらが等しいと判断された場合にのみ、第１装置１０から第２装置２０に中継装置３０経由でChangeCipherSpecメッセージが送信される。また、その場合、各装置の終了情報生成部１２ｆ，２２ｆ，３２ｆが、それぞれ、記憶部１１，２１，３１から上記セッション識別子SIDに対応するマスター秘密鍵MSと、ステップＳ３０３以後の通信ログ情報HS5とを読み込み、マスター秘密鍵MSと通信ログ情報HS5とに対応する第５終了情報F5を生成して記憶部１１，２１，３１に格納する。なお、ＴＬＳ等の場合、通信ログ情報HS5は、ステップＳ３０３以後のChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、終了情報の具体的な生成方法の例は前述したとおりである。【０１９１】
その後、第１装置１０の通信処理部１２ｈが、記憶部１１から第５終了情報FN5を読み込み、それを送信部１３に送り、そこから中継装置３０に送信する（ステップＳ３１２）。【０１９２】
この第５終了情報FN5は、中継装置３０の受信部３４で受信され、記憶部３１に格納される。通信処理部３２ｈは、自らが生成した第５終了情報FN5と、第１装置１０から送信された第５終了情報FN5とを記憶部３１から読み込み、これらが等しいか否かを検証する（ステップＳ３１３）。ここで、これらが等しいと判断された場合にのみ、中継装置３０の送信部３３は、この第５終了情報FN5を第２装置２０に送信する（ステップＳ３１４）。
この第５終了情報FN5は、第２装置２０の受信部２４で受信され、記憶部２１に格納される。通信処理部２２ｈは、自らが生成した第５終了情報FN5と、中継装置３０から送信された第５終了情報FN5とを記憶部２１から読み込み、これらが等しいか否かを検証する。ここで、これらが等しいと判断された場合にのみ、第１装置１０と第２装置２０と中継装置３０との間で共通鍵Key2を用いた暗号通信が可能となる。【０１９３】
［中継装置の処理］
図２９及び図３０は、第６実施形態の中継装置３０の処理を説明するためのフローチャートである。以下、中継装置３０の処理を説明する。【０１９４】
まず、中継装置３０（図８）の送信部３３が第１装置１０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ３２１）。同様に、中継装置３０（図８）の送信部３３が第２装置２０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ３２２）。【０１９５】
その後、第１装置１０から送信された乱数R3とセッション識別子SIDを含む送信開始要求情報（ClientHello メッセージ）が、中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３２３）。中継装置３０の通信処理部３２ｈは、記憶部３１からセッション識別子SIDを読み込み、ステップＳ３２３で受信されたセッション識別子SIDが、ステップＳ３２１より前に記憶部３１に格納されていたセッション識別子SIDと一致するか否かを確認する（ステップＳ３２４）。これらが一致しなかった場合、処理がエラー終了する（ステップＳ３４０）。一方、これらが一致した場合、この送信開始要求情報（ClientHello メッセージ）は、中継装置３０の送信部３３から第２装置２０に送信される（ステップＳ３２５）。【０１９６】
その後、第２装置２０から送信された乱数R4とセッション識別子SIDを含む送信開始応答情報（ServerHelloメッセージ）が、中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３２６）。中継装置３０の通信処理部３２ｈは、記憶部３１からセッション識別子SIDを読み込み、ステップＳ３２５で送信されたセッション識別子SIDとステップＳ３２６で受信されたセッション識別子SIDが、一致するか否かを確認する（ステップＳ３２７）。これらが一致しなかった場合、処理がエラー終了する（ステップＳ３４０）。一方、これらが一致した場合、送信開始応答情報（ServerHelloメッセージ）は、中継装置３０の送信部３３から第１装置１０に送信される（ステップＳ３２８）。【０１９７】
その後、共通鍵生成部３２ｅは、記憶部３１から、それぞれセッション識別子SIDに対応するマスター秘密鍵MSと、乱数R3,R4とを読み込み、前述のように共通鍵Key2を生成し、記憶部３１に格納する（ステップＳ３２９）。また、終了情報生成部３２ｆが、記憶部３１から上記セッション識別子SIDに対応するマスター秘密鍵MSと、通信ログ情報HS6とを読み込み、マスター秘密鍵MSと通信ログ情報HS6とに対応する第６終了情報FN6（Finishedメッセージ）を生成して記憶部３１に格納する（ステップＳ３３０）。【０１９８】
その後、第２装置２０から送信された第６終了情報FN6が、中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３３１）。通信処理部３２ｈは、自らが生成した第６終了情報FN6と、第２装置２０から送信された第６終了情報FN6とを記憶部３１から読み込み、これらが等しいか否かを検証する（ステップＳ３３２）。ここで、これらが等しくない場合には（ステップＳ３３３）、処理がエラー終了する（ステップＳ３４０）。一方、これらが等しい場合には（ステップＳ３３３）、送信部３３が、この第６終了情報FN6を第１装置１０に送信する（ステップＳ３３４）。【０１９９】
また、終了情報生成部３２ｆが、記憶部３１から上記セッション識別子SIDに対応するマスター秘密鍵MSと、通信ログ情報HS5とを読み込み、マスター秘密鍵MSと通信ログ情報HS5とに対応する第５終了情報FN5（Finishedメッセージ）を生成して記憶部３１に格納する（ステップＳ３３５）。その後、第１装置１０から送信された第５終了情報FN5が、中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３３６）。通信処理部３２ｈは、自らが生成した第５終了情報FN5と、第１装置１０から送信された第５終了情報FN5とを記憶部３１から読み込み、これらが等しいか否かを検証する（ステップＳ３３７）。ここで、これらが等しくない場合には（ステップＳ３３８）、処理がエラー終了する（ステップＳ３４０）。一方、これらが等しい場合には（ステップＳ３３８）、送信部３３が、この第５終了情報FN5を第２装置２０に送信する（ステップＳ３３９）。【０２００】
＜本形態の特徴＞
以上のように、本形態では、第２装置から中継装置に送信される第６終了情報と、中継装置から第１装置に送信される第６終了情報とを同一にでき、第１装置から中継装置に送信される第５終了情報と、中継装置から第２装置に送信される第５終了情報とを同一にできるため、前述したような、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式を採用した場合であっても、中継装置は、第１装置から送信された暗号文をそのまま第２装置に転送することができる。【０２０１】
また、本形態の再接続処理は、第１装置及び第２装置側からみればＴＬＳ等において標準化されている処理と同様である。すなわち、本形態の処理を行うに際し、第１装置及び第２装置の仕様を変更する必要はない。【０２０２】
〔第７実施形態〕
本形態では、上述の終了情報のやり取り（ステップＳ１９）が終了した後に、再ハンドシェイクによって、終了情報整合処理を実行する。【０２０３】
以下では、各実施形態のステップＳ１９より後の処理のみを説明する。なお、本形態の処理は、上述の第１〜第４実施形態の何れにも適用可能である。しかし、ここでは説明の簡略化のため、第１実施形態に本形態の処理を付加した形態のみを説明する。【０２０４】
図３１は、第７実施形態における終了情報整合処理を説明するためのシーケンス図である。なお、ステップＳ３５１からＳ３６３までで送受信される情報、及びその後のChangeCipherSpecメッセージは、通常、ステップＳ１９までの処理によって共有された共通鍵Keyを用いて暗号化されて送受信される。また、ステップＳ３６４からＳ３６９までで送受信される情報は、通常、ステップＳ３５２からＳ３６３までの処理で共有された共通鍵Key2を用いて暗号化されて送受信される。しかし、本形態では、これらの記述を省略して説明する。【０２０５】
まず、中継装置３０（図８）の送信部３３が第１装置１０に対して再ハンドシェイク要求情報（HelloRequest）を送信する（ステップＳ３５１）。これは第１装置１０の受信部１４で受信され通信処理部１２ｈに送られる。これを契機に、乱数生成部１２ａが乱数R3を生成して通信処理部１２ｈに送る。通信処理部１２ｈは、乱数R3を含む送信開始要求情報（ClientHello メッセージ）を生成して送信部１３に送る。送信部１３は、送信開始要求情報（ClientHello メッセージ）を中継装置３０に送信し、これは中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３５２）。【０２０６】
また、この送信開始要求情報（ClientHello メッセージ）は、中継装置３０の送信部３３から送信される（ステップＳ３５３）。送信開始要求情報（ClientHello メッセージ）は、第２装置２０（図７）の受信部２４で受信され（ステップＳ３５４）、記憶部２１に格納され、通信処理部２２ｈに送られる。これを契機に、第２装置２０の乱数生成部２２ａが乱数R4を生成して通信処理部２２ｈに送る。通信処理部２２ｈは、乱数R4を含む送信開始応答情報（ServerHelloメッセージ）を生成して送信部２３に送る。送信部２３は、送信開始応答情報（ServerHelloメッセージ）を中継装置３０に送信し、これは中継装置３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ３５５）。また、この送信開始応答情報（ServerHelloメッセージ）は、中継装置３０の送信部３３から送信される（ステップＳ３５６）。この送信開始応答情報（ServerHelloメッセージ）は、第１装置１０の受信部１４で受信され（ステップＳ３５７）、記憶部１１に格納され、通信処理部１２ｈに送られる。【０２０７】
次に、第２装置２０（図７）の通信処理部２２ｈが記憶部２１に格納された暗号方式Cに対応する公開鍵PKsの公開鍵証明書Csを読み込み、これを含む情報（Certificateメッセージ）を送信部２３に送る。送信部２３は、当該第２装置２０の公開鍵証明書Csを、ネットワーク５０経由で中継装置３０に送信する（ステップＳ３５８）。当該第２装置２０の公開鍵証明書Csは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られる。通信処理部３２ｈは、第２装置２０の公開鍵証明書Csを記憶部３１に格納するとともに、これを送信部３３に送る。送信部３３は、第２装置２０の公開鍵証明書Csをネットワーク４０経由で第１装置１０に送信する（ステップＳ３５９）。送信された第２装置２０の公開鍵証明書Csは、第１装置１０（図６）の受信部１４で受信され、通信処理部１２ｈに送られる。通信処理部１２ｈは、当該第２装置２０の公開鍵証明書Csを記憶部１１に格納する（ステップＳ３６０）。ＴＬＳ等の場合、この後、中継装置３０を介して第２装置２０から第１装置１０へServerHelloDoneのメッセージが送られる。【０２０８】
次に、第１装置１０（図６）の秘密情報設定部１２ｂが、共通鍵Key2を特定するための秘密情報PMS2を設定し、それを記憶部１１に格納する。なお、秘密情報PMS2の設定は、例えば、秘密情報設定部１２ｂが乱数を生成し、それを秘密情報PMS2とすることによって行われる。次に、第１装置１０の通信処理部１２ｈが、記憶部１１から第２装置２０の公開鍵証明書Csを読み込み、それを前述のように検証した後、それが具備する第２装置２０の公開鍵PKsを用い、秘密情報PMS2を暗号化した暗号文PKs(PMS2)を生成し、記憶部１１に格納する。生成された暗号文PKs(PMS2)を含む情報（ClientKeyExchangeメッセージ）は、送信部１３に送られ、送信部１３は、当該暗号文PKs(PMS2)を含むClientKeyExchangeメッセージをネットワーク４０経由で中継装置３０に送信する（ステップＳ３６１）。【０２０９】
ClientKeyExchangeメッセージは、中継装置３０（図８）の受信部３４で受信され、通信処理部３２ｈに送られ、通信処理部３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKs(PMS2)を記憶部３１に格納する。次に、復号部３２ｂが、記憶部３１から第２装置２０の秘密鍵SKsを読み込む。さらに、復号部３２ｂは、記憶部３１から暗号文PKs(PMS2)を読み込み、これを秘密鍵SKsで復号して秘密情報PMS2を抽出する（ステップＳ３６２）。抽出された秘密情報PMS2は、記憶部３１に格納される。【０２１０】
次に、通信処理部３２ｈが、記憶部３１から暗号文PKs(PMS2)を読み込み、これを含むClientKeyExchangeメッセージを送信部３３に送る。送信部３３は、暗号文PKs(PMS2)を含むClientKeyExchangeメッセージをネットワーク５０経由で第２装置２０に送信する。送信されたClientKeyExchangeメッセージは、第２装置２０の受信部２３で受信され通信処理部２２ｈに送られ、通信処理部２２ｈは、ClientKeyExchangeメッセージが含む暗号文PKs(PMS2)を記憶部２１に格納する。第２装置２０の復号部２２ｃは、記憶部２１から第２装置２０の秘密鍵SKsを読み込む。さらに、復号部２２ｃは、記憶部２１から暗号文PKs(PMS2)を読み込み、これを秘密鍵SKsで復号して秘密情報PMS2を抽出する（ステップＳ３６３）。抽出された秘密情報PMS2は、記憶部２１に格納される。【０２１１】
これにより、秘密情報PMS2が第１装置１０と第２装置２０と中継装置３０とに共有された。その後、第１装置１０と第２装置２０と中継装置３０とは、それぞれ秘密情報PMS2を用い、前述のようにマスター秘密鍵MS2及び共通鍵Key2を生成し、各記憶部１１，２１，３１に格納する。【０２１２】
そして、中継装置３０経由で第１装置１０から第２装置２０にChangeCipherSpecメッセージが送信された後、各装置の終了情報生成部１２ｆ，２２ｆ，３２ｆが、それぞれ、記憶部１１，２１，３１からマスター秘密鍵MS2と、ステップＳ３５２以後の通信ログ情報HS5とを読み込み、マスター秘密鍵MS2と通信ログ情報HS5とに対応する第５終了情報F5を生成して記憶部１１，２１，３１に格納する。なお、ＴＬＳ等の場合、通信ログ情報HS5は、ステップＳ３５２以後のChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、終了情報の具体的な生成方法の例は前述したとおりである。【０２１３】
その後、第１装置１０の通信処理部１２ｈが、記憶部１１から第５終了情報FN5を読み込み、それを送信部１３に送り、そこから中継装置３０に送信する（ステップＳ３６４）。【０２１４】
この第５終了情報FN5は、中継装置３０の受信部３４で受信され、記憶部３１に格納される。通信処理部３２ｈは、自らが生成した第５終了情報FN5と、第１装置１０から送信された第５終了情報FN5とを記憶部３１から読み込み、これらが等しいか否かを検証する（ステップＳ３６５）。ここで、これらが等しいと判断された場合にのみ、中継装置３０の送信部３３は、この第５終了情報FN5を第２装置２０に送信する（ステップＳ３６６）。この第５終了情報FN5は、第２装置２０の受信部２４で受信され、記憶部２１に格納される。通信処理部２２ｈは、自らが生成した第５終了情報FN5と、中継装置３０から送信された第５終了情報FN5とを記憶部２１から読み込み、これらが等しいか否かを検証する。ここで、これらが等しいと判断された場合にのみ、中継装置３０経由で第２装置２０から第１装置１０にChangeCipherSpecメッセージが送信される。そして、各装置の終了情報生成部１２ｆ，２２ｆ，３２ｆが、それぞれ、記憶部１１，２１，３１からマスター秘密鍵MS2と、ステップＳ３５２以後の通信ログ情報HS6とを読み込み、マスター秘密鍵MS2と通信ログ情報HS6とに対応する第６終了情報FN6（Finishedメッセージ）を生成して記憶部１１，２１，３１に格納する。なお、ＴＬＳ等の場合、通信ログ情報HS6は、ステップＳ３５２以後のChangeCipherSpecメッセージを除くすべてのハンドシェイクメッセージであり、終了情報の具体的な生成方法の例は前述したとおりである。【０２１５】
その後、第２装置２０の通信処理部２２ｈが、記憶部２１から第６終了情報FN6（Finishedメッセージ）を読み込み、それを送信部２３に送り、そこから中継装置３０に送信する（ステップＳ３６７）。【０２１６】
この第６終了情報FN6は、中継装置３０の受信部３４で受信され、記憶部３１に格納される。通信処理部３２ｈは、自らが生成した第６終了情報FN6と、第２装置２０から送信された第６終了情報FN6とを記憶部３１から読み込み、これらが等しいか否かを検証する（ステップＳ３６８）。ここで、これらが等しいと判断された場合にのみ、中継装置３０の送信部３３は、この第６終了情報FN6を第１装置１０に送信する（ステップＳ３６９）。【０２１７】
この第６終了情報FN6は、第１装置１０の受信部１４で受信され、記憶部１１に格納される。通信処理部１２ｈは、自らが生成した第６終了情報FN6と、中継装置３０から送信された第６終了情報FN6とを記憶部１１から読み込み、これらが等しいか否かを検証する。ここで、これらが等しいと判断された場合にのみ、第１装置１０と第２装置２０と中継装置３０との間で共通鍵Key2を用いた暗号通信が可能となる。【０２１８】
＜本形態の特徴＞
終了情報整合処理により、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式を採用した場合であっても、中継装置は、第１装置から送信された暗号文をそのまま第２装置に転送することができる。【０２１９】
また、本形態では、乱数R3,R4が一度確立したＴＬＳセッションの中で暗号化されて送信されるためより安全である。【０２２０】
〔第８実施形態〕
本形態も、上述の終了情報のやり取り（ステップＳ１９）が終了した後に、再ハンドシェイクによって、終了情報整合処理を実行する。本形態は、第３実施形態でこの終了情報整合処理を実行する形態である。すなわち、中継装置には第２装置の秘密鍵が格納されない。以下では、第７実施形態との相違点のみを説明する。【０２２１】
図３２は、第８実施形態における終了情報整合処理を説明するためのシーケンス図である。なお、ステップＳ３５１からＳ３６３までで送受信される情報、及びその後のChangeCipherSpecメッセージは、通常、ステップＳ１９までの処理によって共有された共通鍵Keyを用いて暗号化されて送受信される。また、ステップＳ３６４からＳ３６９までで送受信される情報は、通常、ステップＳ３５２からＳ３６３までの処理で共有された共通鍵Key2を用いて暗号化されて送受信される。しかし、本形態では、これらの記述を省略して説明する。【０２２２】
まず、第７実施形態で説明したステップＳ３５１からＳ３６０の処理が実行され、さらに、中継装置２３０を介して第２装置２０から第１装置２１０へServerHelloDoneのメッセージが送られる。【０２２３】
次に、ステップＳ３６１の処理が実行され、中継装置２３０がステップＳ３６２の処理を実行する代わりに、第１装置２１０から送信されたClientKeyExchangeメッセージをそのまま第２装置２０に転送する（ステップＳ４０２）。その後、ステップＳ３６３の処理が実行され、さらにステップＳ３６４の処理が実行された後、中継装置２３０がステップＳ３６５の処理を実行する代わりに、第１装置２１０から送信された第５終了情報FN5をそのまま第２装置２０に転送する（ステップＳ４０５）。その後、ステップＳ３６６，Ｓ３６７の処理が実行された後、中継装置２３０がステップＳ３６８の処理を実行する代わりに、第２装置２０から送信された第６終了情報FN6をそのまま第１装置２１０に転送し（ステップＳ４０８）、ステップＳ３６９の処理が実行される。【０２２４】
＜本形態の特徴＞
終了情報整合処理により、ＴＬＳ等における標準的なCBCモードによる共通鍵暗号方式を採用した場合であっても、中継装置は、第１装置から送信された暗号文をそのまま第２装置に転送することができる。また、本形態の終了情報整合処理では、中継装置２３０は通信内容の転送を行うだけである。そのため、本形態では、終了情報整合処理以降の通信において中継装置２３０から通信内容が漏洩することを防止できる。【０２２５】
〔第９実施形態〕
本形態では、中継装置が第１装置を認証してから、第２装置への接続を行う形態である。以下で説明する一例では、第１装置と中継装置との間で通常のＴＬＳ接続（クライアント認証有り）を行った後、ＴＬＳセッション再開モードを利用して第１装置が第２装置と接続する。【０２２６】
図３３は、第９実施形態における処理を説明するためのシーケンス図である。なお、本形態の処理を実行するシステム構成は、第３実施形態と同様である。以下では、第３実施形態で説明した構成（図１７から図１９）を引用しながら説明を行う。【０２２７】
まず、第１装置２１０と中継装置２３０との間で、第１装置の秘密鍵SKc、公開鍵PKc及び公開鍵証明書Ccを用い、通常のＴＬＳ接続（クライアント認証含む）を実行する（ステップＳ４３１）。これにより、第１装置２１０と中継装置２３０との間で共通鍵Key1が共有され、セッション識別子SID1で識別される暗号化セッションが確立する。具体的には、共通鍵Key1に対応する秘密情報やマスター秘密鍵がセッション識別子SID1に対応付けられて各装置の記憶部１１，３１に格納される。【０２２８】
次に、中継装置２３０（図１９）の送信部３３が第１装置２１０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ４３２）。通常、この再接続要求情報は、中継装置２３０の共通鍵暗号処理部３２ｉで共通鍵Key1を用いて暗号化されてから送信される。【０２２９】
第１装置２１０（図１８）に送信された再接続要求情報は、受信部１４で受信され通信処理部１２ｈに送られる。なお、再接続要求情報が暗号化されていた場合には、第１装置２１０の共通鍵暗号処理部１２ｉで共通鍵Key1を用いて復号される。これを契機に、乱数生成部１２ａが乱数R1を生成して通信処理部１２ｈに送る。通信処理部１２ｈは記憶部１１からセッション識別子SID1を読み込み、乱数R1とセッション識別子SID1とを含む送信開始要求情報（ClientHello メッセージ）を生成して送信部１３に送る。送信部１３は、送信開始要求情報（ClientHello メッセージ）を中継装置２３０に送信し、これは中継装置２３０の受信部３４で受信される（ステップＳ４３３）。【０２３０】
中継装置２３０の通信処理部３２ｈは、記憶部３１からセッション識別子SID1を読み込み、ステップＳ４３３で受信されたセッション識別子SID1が、ステップＳ４３１の処理で記憶部３１に格納されたセッション識別子SID1と一致するか否かを確認する（ステップＳ４３４）。これらが一致すると判断された場合にのみ、通信処理部３２ｈは、乱数R1を含む送信開始要求情報（ClientHello メッセージ）を送信部３３に送り、第２装置２０に送信させる。この送信開始要求情報（ClientHello メッセージ）は、第２装置２０（図７）の受信部２４で受信され（ステップＳ４３５）、通信処理部２２ｈに送られる。【０２３１】
これを契機に、第２装置２０の乱数生成部２２ａが乱数R2を生成して通信処理部２２ｈに送る。また、通信処理部２２ｈは、新たなセッション識別子SID2を生成して記憶部２１に格納するとともに、乱数R2とセッション識別子SID2とを含む送信開始応答情報（ServerHelloメッセージ）を生成して送信部２３に送る。送信部２３は、送信開始応答情報（ServerHelloメッセージ）を中継装置２３０に送信し、これは中継装置２３０の受信部３４で受信される（ステップＳ４３６）。【０２３２】
さらに、この送信開始応答情報（ServerHelloメッセージ）は、中継装置２３０の送信部３３から送信され、第１装置２１０の受信部１４で受信される（ステップＳ４３７）。受信部１４に受信された送信開始応答情報が具備する乱数R2とセッション識別子SID2とは、第１装置２１０の記憶部１１に格納される（ステップＳ４３８）。【０２３３】
その後、前述したステップＳ８，Ｓ１１０，Ｓ１１２，Ｓ１１３，Ｓ１４，Ｓ１６からＳ１９の処理が実行される。【０２３４】
＜本形態の特徴＞
以上のように、本形態では、中継装置２３０が第１装置２１０を認証してから第２装置２０へ接続することとしたため、不正な装置による第２装置２０への攻撃を防止することができる。また、本形態では、ステップＳ４３１のＴＬＳ接続によって設定されたセッション識別子SID1を第１装置２１０の認証に用いることとした。これにより、ＩＰアドレスによって装置を判別して接続制御を行う通常のファイアーウォールと違い、接続元のＩＰアドレスが変化する場合でも制御可能となる。【０２３５】
なお、本形態では、中継装置２３０が第１装置２１０を認証するための方式として、クライアント認証を含むＴＬＳ接続を用いることとしたが、認証方式はこれに限定されない。例えば、第１装置２１０と中継装置２３０との間で通常のＴＬＳ接続（クライアント認証無し）を行った後、確立された暗号セッションの中でＩＤ／パスワード認証を行い、ＴＬＳセッション再開モードを利用して第２装置２０へ接続してもよい。【０２３６】
また、ステップＳ１９の後に、第５〜８実施形態で説明した終了情報整合処理を実行してもよい。【０２３７】
また、本形態では、ステップＳ４３１の処理で中継装置２３０の記憶部にセッション識別子SID1を格納しておき、ステップＳ４３４において、中継装置２３０の通信処理部３２ｈが、ステップＳ４３３で受信されたセッション識別子SID1と、ステップＳ４３１の処理で記憶部３１に格納されたセッション識別子SID1とが一致するか否かを確認することとした。しかし、ステップＳ４３１の処理で中継装置２３０の記憶部にセッション識別子SID1に対応する対応情報（例えば、セッション識別子SID1のハッシュ値）を格納しておき、中継装置２３０の通信処理部３２ｈが、ステップＳ４３３で受信されたセッション識別子SID1が、ステップＳ４３１の処理で記憶部３１に格納された対応情報に対応するか否かを確認し（例えば、対応情報がセッション識別子SID1のハッシュ値であるならば、ステップＳ４３３で受信されたセッション識別子SID1のハッシュ値を算出し、それと対応情報とが一致するか否かを確認）、ステップＳ４３３で受信されたセッション識別子SID1が、ステップＳ４３１の処理で記憶部３１に格納された対応情報に対応する場合にのみ、送信部３３が乱数R1を含む送信開始要求情報（ClientHello メッセージ）を第２装置２０に送信する構成でもよい。【０２３８】
〔第１０実施形態〕
本形態も、中継装置が第１装置を認証してから、第２装置への接続を行う形態である。第９実施形態との相違点は、第１装置と中継装置との間で通常のＴＬＳ接続（クライアント認証有り）を行った後、ＴＬＳ再ハンドシェイクモードを利用して第２装置へ接続する点である。【０２３９】
図３４は、第１０実施形態における処理を説明するためのシーケンス図である。なお、本形態の処理を実行するシステム構成は、第３実施形態と同様である。以下では、第３実施形態で説明した構成（図１７から図１９）を引用しながら説明を行う。【０２４０】
まず、第９実施形態と同様に、第１装置２１０と中継装置２３０との間で、第１装置の秘密鍵SKc、公開鍵PKc及び公開鍵証明書Ccを用い、通常のＴＬＳ接続（クライアント認証含む）を実行する（ステップＳ４３１）。【０２４１】
次に、中継装置２３０（図１９）の送信部３３が第１装置２１０に対して再ハンドシェイク要求情報（HelloRequest）を送信する（ステップＳ５０２）。本形態で送信される再ハンドシェイク要求情報（HelloRequest）は、中継装置２３０の共通鍵暗号処理部３２ｉによって共通鍵Key1を用いて暗号化されたものである。【０２４２】
第１装置２１０（図１８）に送信された再ハンドシェイク要求情報は、受信部１４で受信され、第１装置２１０の共通鍵暗号処理部１２ｉで共通鍵Key1を用いて復号される。復号された再ハンドシェイク要求情報は通信処理部１２ｈに送られ、これを契機に、乱数生成部１２ａが乱数R1を生成して通信処理部１２ｈに送る。通信処理部１２ｈは、乱数R1を含む送信開始要求情報（ClientHello メッセージ）を生成して共通鍵暗号処理部１２ｉに送る。共通鍵暗号処理部１２ｉは、記憶部１１から読み出した共通鍵Key1を用い、暗号化した送信開始要求情報（ClientHello メッセージ）を生成し、通信処理部１２ｈ経由で送信部１３に送る。送信部１３は、暗号化された送信開始要求情報（ClientHello メッセージ）を中継装置２３０に送信し、これは中継装置２３０の受信部３４で受信される（ステップＳ５０３）。【０２４３】
中継装置２３０の通信処理部３２ｈは、記憶部３１から共通鍵Key1を読み込み、ステップＳ５０３で受信した暗号化された送信開始要求情報（ClientHello メッセージ）が共通鍵Key1を用いて復号可能であるか否かを確認する（ステップＳ５０４）。この確認は、例えば、暗号化された送信開始要求情報の復号結果が、送信開始要求情報が具備する所定のフォーマットに合致しているか否かによって行う。ここで、暗号化された送信開始要求情報（ClientHello メッセージ）が共通鍵Key1を用いて復号可能であると確認された場合にのみ、通信処理部３２ｈは、乱数R1を含む送信開始要求情報（ClientHello メッセージ）を送信部３３に送り、第２装置２０に送信させる。この送信開始要求情報（ClientHello メッセージ）は、第２装置２０（図７）の受信部２４で受信され（ステップＳ５０５）、通信処理部２２ｈに送られる。【０２４４】
これを契機に、第２装置２０の乱数生成部２２ａが乱数R2を生成して通信処理部２２ｈに送る。また、通信処理部２２ｈは、新たなセッション識別子SID2を生成して記憶部２１に格納するとともに、乱数R2とセッション識別子SID2とを含む送信開始応答情報（ServerHelloメッセージ）を生成して送信部２３に送る。送信部２３は、送信開始応答情報（ServerHelloメッセージ）を中継装置２３０に送信し、これは中継装置２３０の受信部３４で受信される（ステップＳ５０６）。【０２４５】
この送信開始応答情報（ServerHelloメッセージ）は、中継装置２３０の共通鍵暗号処理部３２ｉに送られ、共通鍵暗号処理部３２ｉは記憶部３１から読み込んだ共通鍵Key1を用い、暗号化された送信開始応答情報（ServerHelloメッセージ）を生成する（ステップＳ５０７）。暗号化された送信開始応答情報（ServerHelloメッセージ）は、中継装置２３０の送信部３３から送信され、第１装置２１０の受信部１４で受信される。受信部１４に受信された送信開始応答情報が具備する乱数R2とセッション識別子SID2とは、第１装置２１０の記憶部１１に格納される（ステップＳ５０８）。【０２４６】
その後、前述したステップＳ８，Ｓ１１０，Ｓ１１２，Ｓ１１３，Ｓ１４と同様な処理ステップＳ５０９からＳ５１４）と、Ｓ１６からＳ１９の処理が実行される。ただし、ステップＳ５０９からＳ１６の前までの処理において、中継装置２３０が第２装置２０から送信された情報を第１装置２１０に送信する場合には、共通鍵暗号処理部３２ｉがその情報を共通鍵Key1で暗号化してから送信し、中継装置２３０が第１装置２１０から送信された情報を第２装置２０に送信する場合には、共通鍵暗号処理部３２ｉがその情報を共通鍵Key1で復号してから送信する。【０２４７】
＜本形態の特徴＞
以上のように、本形態では、中継装置２３０が第１装置２１０を認証してから第２装置２０へ接続することとしたため、不正な装置による第２装置２０への攻撃を防止することができる。また、本形態では、ＴＬＳ認証を行った後、一度確立されたＴＬＳセッションの中で乱数R1,R2が暗号化されて送信されるため、安全性が高い。さらに、本形態では、ステップＳ４３１のＴＬＳ接続によって共有された共通鍵Key1を第１装置２１０の認証に用いることとした。これにより、ＩＰアドレスによって装置を判別して接続制御を行う通常のファイアーウォールと違い、接続元のＩＰアドレスが変化する場合でも制御可能となる。【０２４８】
なお、本形態では、中継装置２３０が第１装置２１０を認証するための方式として、クライアント認証を含むＴＬＳ接続を用いることとしたが、認証方式はこれに限定されない。例えば、第１装置２１０と中継装置２３０との間で通常のＴＬＳ接続（クライアント認証無し）を行った後、確立された暗号セッションの中でＩＤ／パスワード認証を行い、ＴＬＳ再ハンドシェイクモードを利用して第２装置２０へ接続してもよい。【０２４９】
また、ステップＳ１９の後に、第５〜８実施形態で説明した終了情報整合処理を実行してもよい。【０２５０】
〔第１１実施形態〕
ＶＰＮなどでは、第１装置が、中継装置のＵＲＬではなく、第２装置のＵＲＬを用いて接続処理を実行したい場合がある。この場合、通常は、通信が中継装置を経由するようにＤＮＳの設定を変更しなければならない。これに対し、本形態では、第１装置のプロキシとして中継装置を指定する。これにより、ＤＮＳの設定変更を行うことなく、第１装置は第２装置のＵＲＬを用いて接続処理を実行できる。このような構成は、第２実施形態と同様なシステム構成を用いて実現でき、第１装置１１０がＨＴＴＰクライアントとして機能し、第２装置２０がＨＴＴＰサーバとして機能する。以下では、第２実施形態で説明した構成（図７、図１３，図１４）を引用しながら説明を行う。また、以下では、第１装置と中継装置との間で通常のＴＬＳ接続（クライアント認証有り）を行った後、ＴＬＳ再ハンドシェイクモードを利用して第２装置へ接続する例を示すが、ＴＬＳ再ハンドシェイクモードではなく、第９実施形態で説明したようなＴＬＳセッション再開モードを利用して第２装置へ接続してもよい。【０２５１】
図３５は、第１１実施形態における処理を説明するためのシーケンス図である。【０２５２】
第１装置１１０が、第２装置２０のＵＲＬ（server.com）への接続を開始すると、まず、第１装置１１０の送信部１３が、HTTP Request（CONNECT server.com HTTP/1.0, Host:server.com）を中継装置１３０に送信する（ステップＳ５００）。その応答として、中継装置１３０の送信部３３からHTTP Response(HTTP/1.0 200 Connection established)が第１装置１１０に送信される（ステップＳ５０１）。【０２５３】
その後、第９実施形態と同様に、第１装置の秘密鍵SKc、公開鍵PKc及び公開鍵証明書Ccを用い、通常のＴＬＳ接続（クライアント認証含む）を実行し（ステップＳ４３１）、その後、第１０実施形態と同様の処理が実行される。ただし、第１０実施形態のステップＳ５１１の代わりに、中継装置１３０から第１装置１１０に、第２装置の公開鍵証明書Csを含むCertificateメッセージをKey1で暗号化して送信する点（ステップＳ５２１）、ステップＳ５１２に代わりに第１装置１１０から中継装置１３０にPKs(PMS)を含むClientKeyExchangeメッセージをKey1で暗号化して送信する点（ステップＳ５２２）、及び、ステップＳ５１３に代わりに中継装置１３０がPKs(PMS)から秘密情報PMSを抽出した後、第１装置１１０から送信された暗号化されたClientKeyExchangeメッセージを第２装置２０に送信する点（ステップＳ５２３）が第１０実施形態と相違する。【０２５４】
〔第１２実施形態〕
複数のサーバから得られる情報を用いてサービスを提供するマッシュアップと呼ばれるサービス形態がある。マッシュアップでは、サーバＡから取得したオブジェクトにサーバＢから取得したオブジェクトがアクセスできないという、ブラウザのセキュリティポリシーによる制限が問題となる。この制限を回避するため、中継装置を用意し、中継装置がクライアントに代わって複数のサーバにアクセスして、クライアントからは中継装置のみにアクセスすることで、クライアントが実質１つのサーバのみにアクセスしているようにする方式がある。本発明をこのような方式における複数のサーバに対して適用すれば、暗号通信の高速化やセッション管理をこれらの複数のサーバに対して実現できる。【０２５５】
図３６は、第１２実施形態における処理を説明するためのシーケンス図である。なお、本形態の処理を実行するシステム構成は、第３実施形態で説明した構成（図１７から図１９）に第３装置を付加したものとなる。また、第３装置の構成は、上記の何れかの実施形態の第２装置と同様である。以下では、第３実施形態で説明した構成（図１７から図１９）を引用して説明を行う。【０２５６】
まず、第１装置２１０（図１８）と第３装置とが、上記の何れかの実施形態で説明した共通鍵設定処理を実行し、これらの装置間で共通鍵Key1を共有する（ステップＳ５５１）。これにより、第１装置２１０と中継装置２３０（図１９）と第３装置との間で共通鍵Key1が共有され、セッション識別子SID1で識別される暗号化セッションが確立する。具体的には、共通鍵Key1に対応する秘密情報やマスター秘密鍵がセッション識別子SID1に対応付けられて各装置の記憶部に格納される。【０２５７】
その後、第１装置２１０と中継装置２３０と第３装置とが、共通鍵Key1を用いた暗号通信を実行する。その過程で、接続先の変更が必要な暗号文（Key1(ApplicationData)）が中継装置２３０に送信されると（ステップＳ５５２）、中継装置２３０（図１９）の送信部３３が第１装置２１０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ５５３）。通常、この再接続要求情報は、中継装置２３０の共通鍵暗号処理部３２ｉで共通鍵Key1を用いて暗号化されてから送信される。また、送信部３３は、第３装置に対して切断要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ５５４）。【０２５８】
再接続要求情報を受信した第１装置２１０は、それが暗号化されていた場合には、第１装置２１０の共通鍵暗号処理部１２ｉで共通鍵Key1を用いて復号する。その後、第１装置２１０の乱数生成部１２ａが乱数R3を生成して通信処理部１２ｈに送る。通信処理部１２ｈは記憶部１１からセッション識別子SID1を読み込み、乱数R3とセッション識別子SID1とを含む送信開始要求情報（ClientHello メッセージ）を生成して送信部１３に送る。送信部１３は、送信開始要求情報（ClientHello メッセージ）を中継装置２３０に送信し、これは中継装置２３０の受信部３４で受信される（ステップＳ５５５）。【０２５９】
中継装置２３０の通信処理部３２ｈは、記憶部３１からセッション識別子SID1を読み込み、ステップＳ５５５で受信されたセッション識別子SID1が、ステップＳ５５１の処理で記憶部３１に格納されたセッション識別子SID1と一致するか否かを確認する（ステップＳ５５６）。これらが一致すると判断された場合にのみ、通信処理部３２ｈは、乱数R3を含む送信開始要求情報（ClientHello メッセージ）を送信部３３に送り、第２装置２０に送信させる。この送信開始要求情報（ClientHello メッセージ）は、第２装置２０（図７）の受信部２４で受信され（ステップＳ５５７）、通信処理部２２ｈに送られる。【０２６０】
これを契機に、第２装置２０の乱数生成部２２ａが乱数R4を生成して通信処理部２２ｈに送る。また、通信処理部２２ｈは、新たなセッション識別子SID2を生成して記憶部２１に格納するとともに、乱数R4とセッション識別子SID2とを含む送信開始応答情報（ServerHelloメッセージ）を生成して送信部２３に送る。送信部２３は、送信開始応答情報（ServerHelloメッセージ）を中継装置２３０に送信し、これは中継装置２３０の受信部３４で受信される（ステップＳ５５８）。【０２６１】
さらに、この送信開始応答情報（ServerHelloメッセージ）は、中継装置２３０の送信部３３から送信され、第１装置２１０の受信部１４で受信される（ステップＳ５５９）。受信部１４に受信された送信開始応答情報が具備する乱数R4とセッション識別子SID2とは、第１装置２１０の記憶部１１に格納される（ステップＳ５６０）。【０２６２】
その後、前述したステップＳ８，Ｓ１１０，Ｓ１１２，Ｓ１１３，Ｓ１４，Ｓ１６からＳ１９の処理が実行される。【０２６３】
＜本形態の特徴＞
本形態により、第１装置が中継装置を介して複数の装置と高速に暗号通信を行うことができる。また、そのために中継装置以外の装置に標準化されたプロトコル以外の特別な機能を実装させる必要はない。【０２６４】
また、本形態において、第１０実施形態などのように中継装置が第１装置を認証してから第２装置へ接続する構成であってもよく、また、ステップＳ１９の後に、第５〜８実施形態で説明した終了情報整合処理を実行してもよい。【０２６５】
また、本形態では、セッション再開モードを利用して第２装置へ接続する例を説明したが、ＴＬＳ再ハンドシェイクモードを利用して第２装置へ接続してもよい。【０２６６】
〔第１３実施形態〕
ＴＬＳの拡張方式として、RFC5077 "Transport Layer Security (TLS) Session Resumption without Server-Side State（例えば、「http://www.rfc-editor.org/rfc/rfc5077.txt」参照）が存在する。この方式では、サーバ装置がクライアント装置との間のＴＬＳセッション情報を「チケット」という形式でクライアント装置に送信し、クライアント装置がそれをサーバ装置に再送することでサーバ装置との再接続を行う。この方式（以下「Ticket-TLS」と呼ぶ）では、クライアント装置がサーバ装置との再接続を行うために必要なTLSセッション情報をサーバ装置に保存しておく必要がない。第１３実施形態は、この方式に本発明を適用した形態である。以下では、これまで説明した実施形態との相違点を中心に説明し、それらと共通する事項については説明を省略する。【０２６７】
＜構成＞
［全体構成］
図３７は、第１３実施形態の共通鍵暗号通信システム４００の全体構成を説明するためのブロック図である。図１３に例示するように、本形態の共通鍵暗号通信システム４００は、第１装置４１０（例えば、クライアント装置）と、第２装置４２０（例えば、サーバ装置）と、中継装置４３０（例えば、ゲートウェイ装置）とを有する。また、第１装置４１０と中継装置４３０とは、ネットワーク４０を通じて通信可能に接続され、第２装置４２０と中継装置４３０とは、ネットワーク５０を通じて通信可能に接続される。【０２６８】
なお、第１装置４１０と第２装置４２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の共有化処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（本形態ではRFC5077）に従った処理を行う装置である。一方、中継装置４３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図３７では、１つの第１装置４１０と第２装置４２０とが中継装置４３０と通信可能に接続されているが、２以上の第１装置４１０と第２装置４２０とが中継装置４３０と通信可能に接続されていてもよい。さらには、複数の中継装置４３０を設けた構成であってもよい。【０２６９】
［第１装置］
本形態の第１装置４１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０２７０】
図３８は、第１３実施形態の第１装置４１０の機能構成を説明するためのブロック図である。なお、図３８において第１実施形態と共通する部分については図６と同じ番号を付して説明を省略する。第１装置４１０は、記憶部１１、演算部４１２、送信部１３、受信部１４、制御部１５及び一時記憶部１６を有する。また、演算部４１２は、乱数生成部１２ａ、秘密情報設定部１２ｂ、公開鍵暗号化部１２ｃ、署名生成部１２ｄ、共通鍵生成部１２ｅ、終了情報生成部１２ｆ、終了情報検証部１２ｇ、通信処理部４１２ｈ及び共通鍵暗号処理部１２ｉを有する。【０２７１】
［第２装置］
本形態の第２装置４２０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０２７２】
図３９は、第１３実施形態の第２装置４２０の機能構成を説明するためのブロック図である。なお、図３９において第１実施形態と共通する部分については図７と同じ番号を付して説明を省略する。【０２７３】
図３９に例示するように、本形態の第２装置４２０は、記憶部２１、演算部４２２、送信部２３、受信部２４、制御部２５及び一時記憶部２６を有する。また、演算部４２２は、乱数生成部２２ａ、復号部２２ｃ、共通鍵生成部２２ｅ、終了情報生成部２２ｆ、終了情報検証部２２ｇ、通信処理部４２２ｈ、共通鍵暗号処理部２２ｉ、チケット生成部４２２ｊ及びチケット検証部４２２ｋを有する。【０２７４】
［中継装置］
本形態の中継装置４３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０２７５】
図４０は、第１３実施形態の中継装置４３０の機能構成を説明するためのブロック図である。なお、図４０において第１実施形態と共通する部分については図８と同じ番号を付して説明を省略する。【０２７６】
図４０に例示するように、本形態の中継装置４３０は、記憶部３１、演算部４３２、送信部３３、受信部３４、制御部３５及び一時記憶部３６を有する。また、演算部４３２は、暗号リスト制限部３１ａ、復号部３２ｂ、署名検証部３２ｃ、共通鍵生成部３２ｅ、終了情報生成部３２ｆ、終了情報検証部３２ｇ、通信処理部４３２ｈ、共通鍵暗号処理部３２ｉ、チケット保存部４３２ｊ及び検索部４３２ｋを有する。【０２７７】
［データ構成］
次に、Ticket-TLSで使用されるメッセージの一例を説明する。【０２７８】
図４１Ａは、Empty Session Ticket Extensionを含むClientHelloメッセージのデータ構成を示す図であり、図４１Ｂは、Session Ticket Extensionを含むClientHelloメッセージのデータ構成を示す図である。また、図４１Ｃは、Ticketのデータ構成を示す図であり、図４１Ｄは、図４１Ｃに示す状態情報のデータ構成を示す図である。【０２７９】
図４１Ａに示すClientHelloメッセージは、extensionを除くClientHelloの領域と、Empty Session Ticket Extension領域とを含む。Empty Session Ticket Extension領域は、extension typeを示す領域（Empty Session Ticket Extensionでは"35"）と、Ticketのdata長を示す領域（Empty Session Ticket Extensionでは"0"）とを含む。【０２８０】
図４１Ｂに示すClientHelloメッセージは、extensionを除くClientHelloの領域と、Session Ticket Extension領域とを含む。Session Ticket Extension領域は、extension typeを示す領域（Session Ticket Extensionでは"35"）と、Ticketのdata長を示す領域と、Ticket領域とを含む。【０２８１】
図４１Ｃに示すように、この例のTicketは、暗号鍵を特定する鍵名を示す領域と、暗号化のためのIV（Initialization Vector）情報を示す領域と、data長を示す領域と、状態情報の暗号文の領域と、MAC(Message Authentication Code)の領域とを含む。なお、状態情報の暗号文は、当該鍵名によって特定される暗号鍵と当該IV情報とを用い、CBCモードの128ビット鍵AES(Advanced Encryption Standard)によって状態情報を暗号化した暗号文である。また、MACは、
当該鍵名と当該IV情報と当該data長と当該暗号文に対し、HMAC-SHA-256アルゴリズムを用いて生成されたMACである。また、図４１Ｄに示すように、この例の状態情報は、TLSプロトコルのバージョンを示す領域と、cipher_suite領域と、データ圧縮方式を示すcompression_method領域と、マスター秘密鍵MSの領域と、ユーザID情報の領域と、タイムスタンプの領域とを含む。なお、ユーザID情報は、ユーザ認証のタイプを示す情報とユーザ認証に利用する情報とを含む。【０２８２】
なお、図４１ではEmpty Session Ticket ExtensionやSession Ticket Extensionを含むClientHelloメッセージのデータ構成を示したが、Empty Session Ticket ExtensionやSession Ticket Extensionを含むServerHelloメッセージのデータ構成も同様である。また、ClientHello, ServerHelloともTicket-TLSに関するExtensionに加え、他のTLS Extensionに関する[extension type, data長, data]の組を複数含んでもよい。そのようなTLS Extensionの例としては、例えば、RFC4366 Transport Layer Security (TLS) Extensionsに記載のExtensionが上げられる。【０２８３】
＜処理＞
次に、本形態の処理を説明する。
［前提］
第１実施形態と同じである。
［初回接続処理の全体］
図４２は、第１３実施形態の初回接続処理の全体を説明するためのシーケンス図である。
以下、この図に従って説明を行う。【０２８４】
まず、第１実施形態と同様に、第２装置４２０（図３９）の秘密鍵SKsが中継装置４３０の記憶部３１に格納される（秘密鍵共有過程／ステップＳ１）。次に、第１装置４１０（図３８）の乱数生成部１２ａが、乱数R1（第１乱数）を生成し（第１乱数生成過程）、記憶部１１に格納する。そして、通信処理部４１２ｈが、記憶部１１から乱数R1（第１乱数）及び暗号リストCSLを読み込み、これらとEmpty Session Ticket Extension（"ESTE"と表記する）を含む情報（図４１ＡのClientHelloメッセージ）を生成して送信部１３に送る。送信部１３は、このClientHelloメッセージをネットワーク４０経由で中継装置４３０に送信する（第１乱数送信過程／ステップＳ６０２）。【０２８５】
ClientHelloメッセージは、中継装置４３０（図４０）の受信部３４で受信され、第１実施形態のステップＳ３の処理が行われ、送信部３３が、乱数R1と新たな暗号リストCSL'とESTEとを含むClientHelloメッセージをネットワーク５０経由で第２装置４２０に送信する（第２乱数送信過程／ステップＳ６０４）。【０２８６】
乱数R1及び新たな暗号リストCSL'を含むClientHelloメッセージは、第２装置４２０（図３９）の受信部２４で受信され通信処理部４２２ｈに送られる。通信処理部４２２ｈは、ClientHelloメッセージが含む乱数R1及び新たな暗号リストCSL'を記憶部２１に格納する。次に、第２装置４２０の乱数生成部２２ａが、乱数R2（第２乱数）を生成し（第２乱数生成過程）、記憶部２１に格納する。また、通信処理部４２２ｈは、記憶部２１に格納された暗号リストCSL'から、秘密鍵SKsが記憶部２１に格納されている１つの暗号方式Cを選択し、それを記憶部２１に格納する。さらに通信処理部４２２ｈは、記憶部２１から当該暗号方式Cと乱数R2とを読み込み、これらとESTEとを含む情報（ServerHelloメッセージ）を生成して送信部２３に送る。送信部２３は、このServerHelloメッセージをネットワーク５０経由で中継装置４３０に送信する（第３乱数送信過程／ステップＳ６０５）。【０２８７】
ServerHelloメッセージは、中継装置４３０（図４０）の受信部３４で受信され、第１実施形態のステップＳ６の処理が行われ、送信部３３が、当該ServerHelloメッセージをネットワーク４０経由で第１装置４１０に送信する（第４乱数送信過程／ステップＳ６０７）。ServerHelloメッセージは、第１装置４１０（図３８）の受信部１４で受信され、通信処理部４１２ｈに送られる。通信処理部４１２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部１１に格納する。【０２８８】
その後、第１実施形態のステップＳ８〜Ｓ１７の処理が実行される。ステップＳ１７で行われた第２終了情報FN2の検証結果が合格であった場合、第２装置４２０のチケット生成部４２２ｊは、記憶部２１から暗号方式C（「cipher_suite」に相当）やマスター秘密鍵MS等を読み込み、図４１Ｃに示したようなTicket1を生成する。Ticket1は通信処理部４２２ｈに送られ、通信処理部４２２ｈはTicket1を含むNewSessionTicketメッセージを生成し、NewSessionTicketメッセージを送信部２３に送る。送信部２３は、このNewSessionTicketメッセージをネットワーク５０経由で中継装置４３０に送信する（ステップＳ６１７）。【０２８９】
NewSessionTicketメッセージは、中継装置４３０（図４０）の受信部３４で受信され、チケット保存部４３２ｊに送られる。チケット保存部４３２ｊは、NewSessionTicketメッセージが具備するTicket1又はそれから一義に定まる情報と、秘密情報PMSを用いて生成され記憶部３１に格納されていたマスター秘密鍵MSとを対応付けて記憶部３１に格納する（ステップＳ６１８）。なお、Ticket1から一義に定まる情報の一例は、Ticket1のハッシュ値H(Ticket1)である。その後、NewSessionTicketメッセージが送信部３３に送られる。送信部３３は、ネットワーク４０経由でTicket1を含むNewSessionTicketメッセージを第１装置４１０に送信する（ステップＳ６１９）。【０２９０】
NewSessionTicketメッセージは、第１装置４１０（図３８）の受信部１４で受信され、通信処理部４１２ｈに送られる。通信処理部４１２ｈは、NewSessionTicketメッセージからTicket1を抽出し、それを記憶部１１に格納する。【０２９１】
その後、中継装置４３０経由で第２装置４２０から第１装置４１０にChangeCipherSpecメッセージが送信され、第１実施形態のステップＳ１８，Ｓ１９と同様な処理が行われる。ただし、第３終了情報FN3や第４終了情報FN4を生成する際に用いる通信ログ情報HS3や通信ログ情報HS4がNewSessionTicketメッセージを含む点が第１実施形態の処理と相違する。その後、第１実施形態のステップＳ２０〜２２が実行される。【０２９２】
［中継装置の初回接続処理］
図４３は、第１３実施形態の中継装置４３０の初回接続処理を説明するためのフローチャートである。【０２９３】
以下、このフローチャートを用いて中継装置４３０の処理を説明する。なお、この処理の前提として、中継装置４３０の記憶部３１には第２装置４２０の秘密鍵SKsが格納されている。【０２９４】
まず、中継装置４３０の受信部３４が、第１装置４１０から送信された、乱数R1（第１乱数）と暗号リストCSLとESTEとを含む情報（ClientHelloメッセージ）を受信し、これらが通信処理部４３２ｈに送られる（ステップＳ６３１）。通信処理部４３２ｈは、ClientHelloメッセージが具備する乱数R1（第１乱数）を記憶部３１に格納するとともに、暗号リストCSLを暗号リスト制限部３１ａに送る。その後、第１実施形態のステップＳ３２の処理が実行される。次に、通信処理部４３２ｈは、記憶部３１から乱数R1及び新たな暗号リストCSL'を読み込み、これらとESTEとを含む情報（ClientHelloメッセージ）を生成して送信部３３に送る。送信部３３は、このClientHelloメッセージをネットワーク５０経由で第２装置４２０に送信する（第２乱数送信過程／ステップＳ６３３）。【０２９５】
その後、中継装置４３０の受信部３４が、第２装置４２０から送信された、暗号方式Cと乱数R2とESTEとを含む情報（ServerHelloメッセージ）を受信し、これを通信処理部４３２ｈに送る（ステップＳ６３４）。通信処理部４３２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部３１に格納するとともに、当該ServerHelloメッセージを送信部３３に送る。送信部３３は、当該ServerHelloメッセージをネットワーク４０経由で第１装置４１０に送信する（第４乱数送信過程／ステップＳ６３５）。【０２９６】
その後、第１実施形態のステップＳ３６〜Ｓ４９の処理が実行された後、受信部３４が、第２装置４２０から送信されたNewSessionTicketメッセージを受信し、それをチケット保存部４３２ｊに送る（ステップＳ６３６）。チケット保存部４３２ｊは、NewSessionTicketメッセージが具備するTicket1又はそれに対応する情報と、秘密情報PMSを用いて生成され記憶部３１に格納されていたマスター秘密鍵ＭＳとを対応付けて記憶部３１に格納する（ステップＳ６３７）。その後、NewSessionTicketメッセージが送信部３３に送られる。送信部３３は、ネットワーク４０経由でNewSessionTicketメッセージを第１装置４１０に送信する（ステップＳ６３８）。【０２９７】
その後、第１実施形態のステップＳ５０〜Ｓ５５と同様な処理が行われる。ただし、第３終了情報FN3や第４終了情報FN4を生成する際に用いる通信ログ情報HS3や通信ログ情報HS4がNewSessionTicketメッセージを含む点が第１実施形態の処理と相違する。【０２９８】
［終了情報整合処理（再接続処理）の全体］
図４４は、第１３実施形態における終了情報整合処理を説明するためのシーケンス図である。【０２９９】
上記の初回接続処理の後、まず、中継装置４３０（図４０）の送信部３３が第１装置４１０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ３０１）。同様に、中継装置４３０の送信部３３が第２装置４２０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ３０２）。この処理は、第６実施形態と同様である。【０３００】
第１装置４１０に送信された再接続要求情報は、受信部１４で受信され通信処理部４１２ｈに送られる。これを契機に、乱数生成部１２ａが乱数R3を生成して通信処理部４１２ｈに送る。通信処理部４１２ｈは、記憶部１１からTicket1を読み込み、乱数R3とTicket1とを含む送信開始要求情報（図４１ＢのClientHello メッセージ）を生成して送信部１３に送る。送信部１３は、送信開始要求情報（ClientHello メッセージ）を中継装置４３０に送信し、これは中継装置４３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ７０３）。【０３０１】
ClientHello メッセージのTicket1は検索部４３２ｋに送られ、検索部４３２ｋは、Ticket1又はそれから一義に定まる情報に対応付けられたマスター秘密鍵MSが記憶部３１に存在するか否かを検索し、マスター秘密鍵MSを抽出する（ステップＳ７０４）。例えば、ステップＳ６１８がハッシュ値H(Ticket1)とマスター秘密鍵MSとを対応付けて記憶部３１に格納する処理だったのであれば、検索部４３２ｋは、Ticket1のハッシュ値H(Ticket1)を生成し、生成したハッシュ値H(Ticket1)に対応付けられたマスター秘密鍵MSが記憶部３１に存在するか否かを検索し、マスター秘密鍵MSを抽出する。【０３０２】
ここでマスター秘密鍵MSが存在した場合にのみ、この送信開始要求情報（ClientHello メッセージ）は、中継装置４３０の送信部３３から送信される。この送信開始要求情報（ClientHello メッセージ）は、第２装置４２０の受信部２４で受信され（ステップＳ７０５）、記憶部２１に格納され、それが含むTicket1がチケット検証部４２２ｋに送られる。チケット検証部４２２ｋは、Ticket1が含むMAC（図４１Ｃ）を検証し、検証が成功した場合にのみTicket1からマスター秘密鍵MSを復号し、記憶部２１に格納する。この場合さらに、チケット生成部４２２ｊが記憶部２１から暗号方式C（「cipher_suite」に相当）やマスター秘密鍵MS等を読み込み、図４１Ｃに示したようなTicket2を生成し、記憶部２１に格納してもよい。【０３０３】
次に、乱数生成部２２ａが乱数R4を生成して通信処理部４２２ｈに送る。Ticket2が生成されていた場合、通信処理部４２２ｈは、乱数R4とESTEとを含む送信開始応答情報（ServerHelloメッセージ）を生成して送信部２３に送る。一方、Ticket2が生成されていない場合、送信開始応答情報（ServerHelloメッセージ）にESTEは含まれない。送信部２３は、送信開始応答情報（ServerHelloメッセージ）を中継装置４３０に送信し、これは中継装置４３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ７０６）。この送信開始応答情報（ServerHelloメッセージ）は、中継装置４３０の送信部３３から送信され（ステップＳ７０７）、第１装置４１０の受信部１４で受信され、記憶部１１に格納される（ステップＳ７０８）。【０３０４】
また、第２装置４２０でTicket2が生成されていた場合、第２装置４２０の通信処理部４２２ｈは、記憶部２１からTicket2を読み込む。通信処理部４２２ｈはTicket2を含むNewSessionTicketメッセージを生成し、このNewSessionTicketメッセージを送信部２３に送る。送信部２３は、このNewSessionTicketメッセージをネットワーク５０経由で中継装置４３０に送信する（ステップＳ７０８ａ）。【０３０５】
NewSessionTicketメッセージは、中継装置４３０の受信部３４で受信され、チケット保存部４３２ｊに送られる。チケット保存部４３２ｊは、ステップＳ６１８と同様に、NewSessionTicketメッセージが具備するTicket2又はそれから一義に定まる情報（例えば、Ticket2のハッシュ値H(Ticket2)）と、記憶部３１に格納されていたマスター秘密鍵MSとを対応付けて記憶部３１に格納する（ステップＳ７０８ｂ）。これにより、マスター秘密鍵MSに対するTicketとの対応付け関係が更新される。【０３０６】
その後、このNewSessionTicketメッセージが送信部３３に送られる。送信部３３は、ネットワーク４０経由でNewSessionTicketメッセージを第１装置４１０に送信する（ステップＳ７０８ｃ）。このNewSessionTicketメッセージは、第１装置４１０の受信部１４で受信され、通信処理部４１２ｈに送られる。通信処理部４１２ｈは、NewSessionTicketメッセージからTicket2を抽出し、それを記憶部１１に格納する。【０３０７】
次に、各装置の共通鍵生成部１２ｅ，２２ｅ，３２ｅは、それぞれ記憶部１１，２１，３１から、それぞれマスター秘密鍵MSと、乱数R3,R4とを読み込み、前述のように共通鍵Key2を生成し、記憶部１１，２１及び３１に格納する。その後、第２装置４２０から第１装置４１０に中継装置４３０経由でChangeCipherSpecメッセージが送信される。ＴＬＳ等では、通常、これ以降、第２装置４２０から中継装置４３０を経由して第１装置４１０へ送信される情報は、それぞれ各共通鍵暗号処理部で共通鍵Key2を用いて暗号化され、必要に応じて各共通鍵暗号処理部で復号される。その後、第６実施形態と同様なステップＳ３０９〜Ｓ３１４の処理が実行される。ただし、Ticket2が生成されていた場合、第５終了情報FN5や第６終了情報FN6を生成する際に用いる通信ログ情報HS5や通信ログ情報HS6がNewSessionTicketメッセージを含む点が第６実施形態の処理と相違する。ＴＬＳ等では、通常、第１装置４１０から第２装置４２０に中継装置４３０経由でChangeCipherSpecメッセージが送信された以降、第１装置４１０から中継装置４３０を経由して第２装置４２０へ送信される情報は、それぞれ各共通鍵暗号処理部で共通鍵Key2を用いて暗号化され、必要に応じて各共通鍵暗号処理部で復号される。その後、第１装置４１０と第２装置４２０と中継装置４３０との間で共通鍵Key2を用いた暗号通信が可能となる。【０３０８】
［中継装置の終了情報整合処理（再接続処理）処理］
図４５は、第１３実施形態の中継装置４３０の処理を説明するためのフローチャートである。以下、中継装置４３０の処理を説明する。【０３０９】
まず、第６実施形態のステップＳ３２１及びＳ３２２の処理が実行される。その後、第１装置４１０から送信された乱数R3とTicket1を含む送信開始要求情報（ClientHello メッセージ）が、中継装置４３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ７２３）。【０３１０】
ClientHello メッセージのTicket1は検索部４３２ｋに送られ、検索部４３２ｋは、Ticket1又はそれから一義に定まる情報に対応付けられたマスター秘密鍵MSが記憶部３１に存在するか否かを検索する（ステップＳ７２４）。対応付けられたマスター秘密鍵MSが存在しなかった場合、処理がエラー終了する（ステップＳ３４０）。一方、対応付けられたマスター秘密鍵MSが存在した場合、この送信開始要求情報（ClientHello メッセージ）は、中継装置４３０の送信部３３から第２装置４２０に送信される（ステップＳ７２５）。【０３１１】
その後、第２装置４２０から送信された乱数R4とESTEとを含む送信開始応答情報（ServerHelloメッセージ）が中継装置４３０の受信部３４で受信され、記憶部３１に格納される（ステップＳ７２６）。Ticket2が生成されていない場合、送信開始応答情報（ServerHelloメッセージ）にESTEは含まれない。中継装置４３０の送信部３３は、この送信開始応答情報（ServerHelloメッセージ）を第１装置４１０に送信する（ステップＳ７２７）。【０３１２】
また、第２装置４２０でTicket2が生成されていた場合、中継装置４３０の受信部３４が第２装置４２０から送信されたTicket2を含むNewSessionTicketメッセージを受信する（ステップＳ７２８）。次に、チケット保存部４３２ｊが、NewSessionTicketメッセージが具備するTicket2又はそれから一義に定まる情報（例えば、Ticket2のハッシュ値H(Ticket2)）と、記憶部３１に格納されていたマスター秘密鍵MSとを対応付けて記憶部３１に格納する（ステップＳ７２９）。これにより、マスター秘密鍵MSに対するTicketとの対応付け関係が更新される。その後、このNewSessionTicketメッセージが送信部３３に送られ、送信部３３が、ネットワーク４０経由でNewSessionTicketメッセージを第１装置４１０に送信する（ステップＳ７３０）。【０３１３】
次に、共通鍵生成部３２ｅが、Ticketと対応付けられたマスター秘密鍵MSと、記憶部３１に格納された乱数R3,R4とを読み込み、前述のように共通鍵Key2を生成し、記憶部３１に格納する（ステップＳ７３１）。その後、第６実施形態のステップＳ３３０〜Ｓ３４０と同様な処理が実行される。ただし、Ticket2が生成されていた場合、第５終了情報FN5や第６終了情報FN6を生成する際に用いる通信ログ情報HS5や通信ログ情報HS6がNewSessionTicketメッセージを含む点が第６実施形態の処理と相違する。【０３１４】
〔第１３実施形態の変形例〕
第１３実施形態では、第１，２実施形態と同様、中継装置４３０に第２装置４２０の秘密鍵SKsを格納しておくこととしたが、第３，４実施形態と同様に、中継装置４３０に中継装置４３０の秘密鍵SKgを格納しておき、ステップＳ１０、Ｓ１２及びＳ１３の代わりに第３，４実施形態のステップＳ１１０、Ｓ１１２及びＳ１１３が実行されてもよい。【０３１５】
また、第１３実施形態では、第１，３実施形態と同様、中継装置４３０が第１装置４１０の認証処理（CertificateRequest，ステップＳ１１，Ｓ１５）を行うこととした。しかし、第２，４実施形態のように、中継装置４３０が第１装置４１０の認証処理を行わないこととしてもよい。【０３１６】
また、ステップＳ７０８ｂ，Ｓ７２９で中継装置４３０が行うマスター秘密鍵MSとチケット情報との対応付け更新処理が、ステップＳ３１０，Ｓ３３３の検証処理において終了情報FN6が合格であると判定された後に実行されてもよい。同様に、ステップＳ７０８ｃで第１装置４１０が行う新たなTiket2の保存処理が、ステップＳ３１２で終了情報FN6が合格であると判定された後に実行されてもよい。【０３１７】
また、第１３実施形態では、終了情報整合処理（再接続処理）の際、第２装置４３０が新たなTicket2を生成することとしたが、この処理を行わないこととしてもよい。この場合、ステップ７０８ａ〜Ｓ７０８ｃの処理は実行されない。【０３１８】
〔第１４実施形態〕
本形態は、第９実施形態の変形例であり、第１装置と中継装置との間で第１３実施形態で説明したTicket-TLSに基づくＴＬＳ接続を行った後、第１装置がＴＬＳセッション再開モードを利用して第２装置と接続する形態である。以下では、第９実施形態との相違点を中心に説明する。【０３１９】
図４６は、第１４実施形態における処理を説明するためのシーケンス図である。以下では、第９実施形態の相違点のみを説明する。【０３２０】
まず、第１装置４１０と中継装置４３０との間で、Ticket-TLSに基づくＴＬＳ接続（クライアント認証含む）を実行する（ステップＳ８３１）。これにより、第１装置４１０と中継装置４３０との間で共通鍵Key1が共有され、中継装置４３０から第１装置４１０に共通鍵Key1に対応するマスター秘密鍵MSを含むTicket1（図４１Ｃ参照）が送信され、当該Ticket1が第１装置４１０の記憶部１１に格納される。【０３２１】
次に、中継装置４３０の送信部３３が第１装置４１０に対して再接続要求情報（TLS切断／SSL CloseNotify）を送信する（ステップＳ８３２）。通常、この再接続要求情報は、中継装置８３０の共通鍵暗号処理部３２ｉで共通鍵Key1を用いて暗号化されてから送信される。【０３２２】
第１装置４１０に送信された再接続要求情報は、受信部１４で受信され通信処理部４１２ｈに送られる。なお、再接続要求情報が暗号化されていた場合には、第１装置４１０の共通鍵暗号処理部１２ｉで共通鍵Key1を用いて復号される。これを契機に、乱数生成部１２ａが乱数R1を生成して通信処理部４１２ｈに送る。通信処理部４１２ｈは、記憶部１１からTicket1を読み出し、乱数R1とTicket1とを含む送信開始要求情報（ClientHello メッセージ）を生成して送信部１３に送る。送信部１３は、送信開始要求情報（ClientHello メッセージ）を中継装置４３０に送信し、これは中継装置４３０の受信部３４で受信される（ステップＳ８３３）。【０３２３】
中継装置４３０の通信処理部４３２ｈは、送られたTicket1に含まれるMACを検証し、その検証に合格した場合にのみ、通信処理部４３２ｈは、乱数R1を含む送信開始要求情報（ClientHello メッセージ）を送信部３３に送り、第２装置２０に送信させる（ステップＳ８３４）。それ以降、第９実施形態で説明したステップＳ４３５以降の処理が実行される。【０３２４】
〔第１５実施形態〕
本発明の第１５実施形態について説明する。
＜構成＞
［全体構成］
図４７は、第１５実施形態の共通鍵暗号通信システム１の全体構成を説明するためのブロック図である。【０３２５】
図４７に例示するように、本形態の共通鍵暗号通信システム１００１は、第１装置１０１０（例えば、クライアント装置）と、第２装置１０２０（例えば、サーバ装置）と、中継装置１０３０（例えば、ゲートウェイ装置）とを有する。また、第１装置１０１０と中継装置１０３０とは、インターネットやＬＡＮ（Local Area Network）等のネットワーク１０４０を通じて通信可能に接続され、第２装置１０２０と中継装置１０３０とは、インターネットやＬＡＮ等のネットワーク１０５０を通じて通信可能に接続される。【０３２６】
なお、第１装置１０１０と第２装置１０２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の配送処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置１０３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図４７では、１つ第１装置１０１０と第２装置１０２０とが中継装置１０３０と通信可能に接続されているが、２以上の第１装置１０１０と第２装置１０２０とが中継装置１０３０と通信可能に接続されていてもよい。さらには、複数の中継装置１０３０を設けた構成であってもよい。【０３２７】
［第１装置］
本形態の第１装置１０１０は、ＣＰＵ(Central Processing Unit)、ＲＡＭ(Random-Access Memory)、ＲＯＭ(Read Only Memory)、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０３２８】
図４８は、第１５実施形態の第１装置１０１０の機能構成を説明するためのブロック図である。【０３２９】
図４８に例示するように、本形態の第１装置１０１０は、記憶部１０１１、記憶部１０１２、送信部１０１３、受信部１０１４、制御部１０１５及び一時記憶部１０１６を有する。また、記憶部１０１２は、乱数生成部１０１２ａ、秘密情報設定部１０１２ｂ、公開鍵暗号化部１０１２ｃ、署名生成部１０１２ｄ、共通鍵生成部１０１２ｅ、終了情報生成部１０１２ｆ、終了情報検証部１０１２ｇ及び通信処理部１０１２ｈを有する。【０３３０】
なお、本形態の記憶部１０１２や制御部１０１５は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部であり、記憶部１０１１や一時記憶部１０１６は、ＲＡＭ、レジスタ、キャッシュメモリ、ハードディスク装置等の公知の記憶装置、又は、これらの少なくとも一部を組み合わせた記憶領域である。また、送信部１０１３や受信部１０１４は、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動するＬＡＮカード、モデム等の通信装置である。また、第１装置を構成するハードウェアの具体例としては、パーソナルコンピュータ、携帯電話、ＰＤＡ（Personal Digital Assistant）等がある。【０３３１】
また、第１装置１０１０は、制御部１０１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０１６に格納され、他の演算のために読み出される。【０３３２】
［第２装置］
本形態の第２装置１０２０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０３３３】
図４９は、第１５実施形態の第２装置１０２０の機能構成を説明するためのブロック図である。【０３３４】
図４９に例示するように、本形態の第２装置１０２０は、記憶部１０２１、演算部１０２２、送信部１０２３、受信部１０２４、制御部１０２５及び一時記憶部１０２６を有する。また、演算部１０２２は、乱数生成部１０２２ａ、復号部１０２２ｃ、共通鍵生成部１０２２ｅ、終了情報生成部１０２２ｆ、終了情報検証部１０２２ｇ及び通信処理部１０２２ｈを有する。【０３３５】
なお、本形態の演算部１０２２や制御部１０２５は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部であり、記憶部１０２１や一時記憶部１０２６は、ＲＡＭ、レジスタ、キャッシュメモリ、ハードディスク装置等の公知の記憶装置、又は、これらの少なくとも一部を組み合わせた記憶領域である。また、送信部１０２３や受信部１０２４は、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動するＬＡＮカード、モデム等の通信装置である。また、第２装置を構成するハードウェアの具体例としては、サーバマシン、パーソナルコンピュータ等がある。【０３３６】
また、第２装置１０２０は、制御部１０２５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０２６に格納され、他の演算のために読み出される。【０３３７】
［中継装置］
本形態の中継装置１０３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０３３８】
図５０は、第１５実施形態の中継装置１０３０の機能構成を説明するためのブロック図である。【０３３９】
図５０に例示するように、本形態の中継装置１０３０は、記憶部１０３１、演算部１０３２、送信部１０３３、受信部１０３４、制御部１０３５及び一時記憶部１０３６を有する。また、演算部１０３２は、暗号リスト制限部１０３１ａ、復号部１０３２ｂ、署名検証部１０３２ｃ、共通鍵生成部１０３２ｅ、終了情報生成部１０３２ｆ、終了情報検証部１０３２ｇ及び通信処理部１０３２ｈを有する。【０３４０】
なお、本形態の演算部１０３２や制御部１０３５は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部であり、記憶部１０３１や一時記憶部１０３６は、ＲＡＭ、レジスタ、キャッシュメモリ、ハードディスク装置等の公知の記憶装置、又は、これらの少なくとも一部を組み合わせた記憶領域である。また、送信部１０３３や受信部１０３４は、所定のプログラムが読み込まれたＣＰＵの制御のもと駆動するＬＡＮカード、モデム等の通信装置である。また、中継装置を構成するハードウェアの具体例としては、ゲートウェイマシン、サーバマシン、パーソナルコンピュータ等がある。【０３４１】
また、中継装置１０３０は、制御部１０３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０３６に格納され、他の演算のために読み出される。【０３４２】
＜処理＞
次に、本形態の処理を説明する。
［前提］
まず、第１装置１０１０と第２装置１０２０とに対し、それぞれ公開鍵暗号方式（ＲＳＡ等）の鍵ペア（公開鍵，秘密鍵）が生成されているものとする。なお、鍵ペアは複数の暗号方式分生成されてもよい。そして、第１装置１０１０の秘密鍵SKcが第１装置１０１０の記憶部１０１１に格納され、第２装置１０２０の秘密鍵SKsが第２装置１０２０の記憶部１０２１に格納されているものとする。また、各公開鍵には、認証局によって公開鍵証明書が発行され、第１装置１０１０の公開鍵PKcの公開鍵証明書Ccが第１装置１０１０の記憶部１０１１に格納され、第２装置１０２０の公開鍵PKsの公開鍵証明書Csが第２装置１０２０の記憶部１０２１に格納されているものとする。なお、公開鍵証明書Ccは、認証局の秘密鍵を用いて生成された第１装置１０１０の公開鍵PKcに対する電子署名であり、当該公開鍵PKcを含む情報である。同様に、公開鍵証明書Csは、認証局の秘密鍵を用いて生成された第２装置１０２０の公開鍵PKsに対する電子署名であり、当該公開鍵PKsを含む情報である。公開鍵証明書Ccは、第１装置１０１０の記憶部１０１１に格納され、公開鍵証明書Csは、第２装置１０２０の記憶部１０２１に格納される。また、公開鍵証明書の標準規格としてはX.509等を例示できる。また、第１装置１０１０の記憶部１０１１には、秘密情報を２つの装置間で共有するための暗号方式のリストである暗号リストCSLが格納される。これは、ＴＬＳ等におけるcipher suiteに相当し、RSA系の暗号方式とDH (Diffie-Hellman)系の暗号方式とを含むリストである。【０３４３】
［処理の全体］
図５１は、第１５実施形態の処理の全体を説明するためのシーケンス図である。以下、この図に従って説明を行う。【０３４４】
まず、第２装置１０２０（図４９）の秘密鍵SKsが中継装置１０３０の記憶部１０３１に格納される（秘密鍵共有過程／ステップＳ１００１）。なお、鍵ペアが複数の暗号方式分生成されている場合には、各暗号方式にそれぞれ対応する秘密鍵SKsを記憶部１０３１に格納しておく。また、第２装置１０２０から中継装置１０３０への秘密鍵SKsの提供は、例えば、第２装置１０２０の管理者が、秘密鍵SKsが格納されたＩＣカード等の記録媒体を中継装置１０３０の管理者に郵送して行ってもよいし、認証技術や暗号技術を用いた鍵共有化処理により、第２装置１０２０が中継装置１０３０に秘密鍵SKsを安全に配送してもよい。【０３４５】
次に、第１装置１０１０（図４８）の乱数生成部１０１２ａが、乱数R1（第１乱数）を生成し（第１乱数生成過程）、記憶部１０１１に格納する。そして、通信処理部１０１２ｈが、記憶部１０１１から乱数R1（第１乱数）及び暗号リストCSLを読み込み、これらを含む情報（ClientHelloメッセージ）を生成して送信部１０１３に送る。送信部１０１３は、乱数R1及び暗号リストCSLを含むClientHelloメッセージをネットワーク１０４０経由で中継装置１０３０に送信する（第１乱数送信過程／ステップＳ１００２）。【０３４６】
ClientHelloメッセージは、中継装置１０３０（図５０）の受信部１０３４で受信され、通信処理部１０３２ｈに送られる。通信処理部１０３２ｈは、ClientHelloメッセージが具備する乱数R1（第１乱数）を記憶部１０３１に格納するとともに、暗号リストCSLを暗号リスト制限部１０３１ａに送る。暗号リスト制限部１０３１ａは、暗号リストCSLが具備する暗号方式から、一方の装置において秘密情報を公開鍵暗号方式によって暗号化し、当該暗号文を他の装置に送信し、当該他の装置において当該暗号文を復号することによって両装置間で秘密情報を共有する暗号方式のみを選択し、選択した暗号方式のみからなる新たな暗号リストCSL'を生成する。ＴＬＳ等の場合、暗号リスト制限部１０３１ａは、CSLが具備する暗号方式から、RSA系の暗号方式のみを選択し、RSA系の暗号方式のみからなる新たな暗号リストCSL'を生成して記憶部１０３１に格納する（ステップＳ１００３）。【０３４７】
次に、通信処理部１０３２ｈは、記憶部１０３１から乱数R1及び新たな暗号リストCSL'を読み込み、これらを含む情報（ClientHelloメッセージ）を生成して送信部１０３３に送る。送信部１０３３は、乱数R1及び新たな暗号リストCSL'を含むClientHelloメッセージをネットワーク１０５０経由で第２装置１０２０に送信する（第２乱数送信過程／ステップＳ１００４）。【０３４８】
乱数R1及び新たな暗号リストCSL'を含むClientHelloメッセージは、第２装置１０２０（図４９）の受信部１０２４で受信され通信処理部１０２２ｈに送られる。通信処理部１０２２ｈは、ClientHelloメッセージが含む乱数R1及び新たな暗号リストCSL'を記憶部１０２１に格納する。次に、第２装置１０２０の乱数生成部１０２２ａが、乱数R2（第２乱数）を生成し（第２乱数生成過程）、記憶部１０２１に格納する。また、通信処理部１０２２は、記憶部１０２１に格納された暗号リストCSL'から、秘密鍵SKsが記憶部１０２１に格納されている１つの暗号方式Cを選択し、それを記憶部１０２１に格納する。さらに通信処理部２２は、記憶部１０２１から当該暗号方式Cと乱数R2とを読み込み、これらを含む情報（ServerHelloメッセージ）を生成して送信部１０２３に送る。なお、ＴＬＳ等の場合、ServerHelloメッセージには、セッションＩＤ（session id）や圧縮アルゴリズム（compression method）等も含まれる。また、暗号方式Cは、ＴＬＳ等におけるcipher suiteに相当し、本形態ではＲＳＡ系の何れかの暗号方式が暗号方式Ｃとなる。送信部１０２３は、乱数R2及び暗号方式Cを含むServerHelloメッセージをネットワーク１０５０経由で中継装置１０３０に送信する（第３乱数送信過程／ステップＳ１００５）。【０３４９】
ServerHelloメッセージは、中継装置１０３０（図５０）の受信部１０３４で受信され、通信処理部１０３２ｈに送られる。通信処理部１０３２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部１０３１に格納するとともに（ステップＳ１００６）、当該ServerHelloメッセージを送信部１０３３に送る。送信部１０３３は、乱数R2及び暗号方式Cを含む当該ServerHelloメッセージをネットワーク１０４０経由で第１装置１０１０に送信する（第４乱数送信過程／ステップＳ１００７）。ServerHelloメッセージは、第１装置１０１０（図４８）の受信部１０１４で受信され、通信処理部１０１２ｈに送られる。通信処理部１０１２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部１０１１に格納する。【０３５０】
次に、第２装置１０２０（図４９）の通信処理部１０２２ｈが記憶部１０２１に格納された暗号方式Cに対応する公開鍵PKsの公開鍵証明書Csを読み込み、これを含む情報（Certificateメッセージ）を送信部１０２３に送る。送信部１０２３は、当該第２装置１０２０の公開鍵証明書Csを、ネットワーク１０５０経由で中継装置１０３０に送信する（第１公開鍵証明書送信過程／ステップＳ１００８）。当該第２装置１０２０の公開鍵証明書Csは、中継装置１０３０（図５０）の受信部１０３４で受信され、通信処理部１０３２ｈに送られる。通信処理部１０３２ｈは、第２装置１０２０の公開鍵証明書Csを記憶部１０３１に格納するとともに、これを送信部１０３３に送る。送信部１０３３は、第２装置１０２０の公開鍵証明書Csをネットワーク１０４０経由で第１装置１０１０に送信する（公開鍵証明書転送過程／ステップＳ１００９）。送信された第２装置１０２０の公開鍵証明書Csは、第１装置１０１０（図４８）の受信部１０１４で受信され、通信処理部１０１２ｈに送られる。通信処理部１０１２ｈは、当該第２装置１０２０の公開鍵証明書Csを記憶部１０１１に格納する（ステップＳ１０１０）。【０３５１】
そして、第２装置１０２０が、例えばServerKeyExchange，CertificateRequest，ServerHelloDone等のメッセージを第１装置１０１０に送信した後、第１装置１０１０の通信処理部１０１２ｈが、記憶部１０１１に格納された暗号方式Cに対応する公開鍵PKcの公開鍵証明書Ccを読み込み、これを含む情報（Certificateメッセージ）を送信部１０１３に送る。送信部１０１３は、当該第１装置１０１０の公開鍵証明書Ccを、ネットワーク１０４０経由で中継装置１０３０に送信する（第２公開鍵証明書送信過程／ステップＳ１０１１）。当該第１装置１０１０の公開鍵証明書Ccは、中継装置１０３０（図５０）の受信部１０３４で受信され、通信処理部１０３２ｈに送られる。通信処理部１０３２ｈは、第１装置１０１０の公開鍵証明書Ccを記憶部１０３１に格納する。【０３５２】
次に、第１装置１０１０（図４８）の秘密情報設定部１０１２ｂが、共通鍵MS（master secret）を特定するための秘密情報PMS（premaster secret）を設定し、それを記憶部１０１１に格納する。なお、秘密情報PMSの設定は、例えば、秘密情報設定部１０１２ｂが乱数を生成し、それを秘密情報PMSとすることによって行われる。次に、第１装置１０１０の通信処理部１０１２ｈが、記憶部１０１１から第２装置１０２０の公開鍵証明書Csを読み込み、第２装置１０２０の公開鍵証明書Csを発行したＣＡの公開鍵PKcaをネットワーク１０４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部１０１１に格納される。通信処理部１０１２ｈは、記憶部１０１１から第２装置１０２０の公開鍵証明書CsとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第２装置１０２０の公開鍵証明書Csを検証する。この検証が合格した場合、公開鍵暗号化部１０１２ｃ、が、記憶部１０１１から秘密情報PMSと公開鍵証明書Csが具備する第２装置１０２０の公開鍵PKsと暗号方式Ｃとを読み込み、当該公開鍵PKsを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKs(PMS)（暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部１０１１に格納する（秘密情報暗号化過程）。生成された暗号文PKs(PMS)を含む情報（ClientKeyExchangeメッセージ）は、送信部１０１３に送られ、送信部１０１３は、当該暗号文PKs(PMS)（暗号化秘密情報）を含むClientKeyExchangeメッセージをネットワーク１０４０経由で中継装置１０３０に送信する（暗号化秘密情報送信過程／ステップＳ１０１２）。【０３５３】
ClientKeyExchangeメッセージは、中継装置１０３０（図５０）の受信部１０３４で受信され、通信処理部１０３２ｈに送られ、通信処理部１０３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKs(PMS)（暗号化秘密情報）を記憶部１０３１に格納する。次に、復号部１０３２ｂが、記憶部１０３１から暗号方式Ｃを読み込み、それに対応する第２装置１０２０の秘密鍵SKsを読み込む。さらに、復号部１０３２ｂは、記憶部１０３１から暗号文PKs(PMS)を読み込み、これを秘密鍵SKsで復号して秘密情報PMSを抽出する（第１秘密情報復号過程／ステップＳ１０１３）。抽出された秘密情報PMSは、記憶部１０３１に格納される。次に、通信処理部１０３２ｈが、記憶部１０３１から暗号文PKs(PMS)を読み込み、これを含むClientKeyExchangeメッセージを送信部１０３３に送る。送信部１０３３は、暗号文PKs(PMS)を含むClientKeyExchangeメッセージをネットワーク１０５０経由で第２装置１０２０に送信する（暗号化秘密情報転送過程）。送信されたClientKeyExchangeメッセージは、第２装置１０２０の受信部２３で受信され通信処理部１０２２ｈに送られ、通信処理部１０２２ｈは、ClientKeyExchangeメッセージが含む暗号文PKs(PMS)を記憶部１０２１に格納する。第２装置１０２０の復号部１０２２ｃは、記憶部１０２１から暗号方式Ｃを読み込み、それに対応する第２装置１０２０の秘密鍵SKsを読み込む。さらに、復号部１０２２ｃは、記憶部１０２１から暗号文PKs(PMS)を読み込み、これを秘密鍵SKsで復号して秘密情報PMSを抽出する（第２秘密情報復号過程／ステップＳ１０１４）。抽出された秘密情報PMSは、記憶部１０２１に格納される。【０３５４】
次に、第１装置１０１０（図４８）の署名生成部１０１２ｄが、記憶部１０１１から暗号方式Ｃを読み込み、それに対応する第１装置の秘密鍵SKcを読み込む。そして、署名生成部１０１２ｄは、当該秘密鍵SKcを用いて署名情報Signを生成して記憶部１０１１に格納する（署名情報生成過程）。例えば、ClientHello メッセージ（ステップＳ１００２）から現在までの、このメッセージを除く、第１装置１０１０が送信または受信したすべてのハンドシェイク（通信ログ情報）が署名対象となる。通信処理部１０１２ｈは、記憶部１０１１から署名情報Signを読み込み、これを含む情報（CertificateVerifyメッセージ）を送信部１０１３に送る。送信部１０１３は、このCertificateVerifyメッセージをネットワーク１０４０経由で中継装置１０３０に送信する（署名情報送信過程／ステップＳ１０１５）。CertificateVerifyメッセージは、中継装置１０３０（図５０）の受信部１０３４で受信され、通信処理部１０３２ｈに送られる。通信処理部１０３２ｈは、CertificateVerifyメッセージが具備する署名情報Signを記憶部１０３１に格納する。そして、署名検証部１０３２ｃが、記憶部１０３１から第１装置１０１０の公開鍵証明書Ccを読み込み、第１装置１０１０の公開鍵証明書Ccを発行したＣＡの公開鍵PKcaをネットワーク１０４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部１０３１に格納される。通信処理部１０３２ｈは、記憶部１０３１から第１装置１０１０の公開鍵証明書CcとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第１装置１０１０の公開鍵証明書Ccを検証する。この検証が合格であった場合、署名検証部１０３２ｃが記憶部１０３１から署名情報Signと、第１装置１０１０の公開鍵証明書Ccが具備する第１装置１０１０の公開鍵PKcとを読み込む。そして、署名検証部１０３２ｃは、第１装置１０１０の公開鍵PKcを用いて署名情報Signを検証する（署名情報検証過程）。この処理は、中継装置１０３０が第２装置１０２０の代わりに第１装置１０１０を認証する処理に相当する。【０３５５】
次に、第１装置１０１０（図４８）の共通鍵生成部１０１２ｅが、記憶部１０１１から秘密情報PMSを読み込み、当該秘密情報PMSによって定まる共通鍵MSを生成して記憶部１０１１に格納する。共通鍵MSは、例えば、乱数R1（第１乱数）と乱数R2（第２乱数）と秘密情報PMSとによって定まる情報である。例えば、共通鍵生成部１０１２ｅが、記憶部１０１１から秘密情報PMSと乱数R1（第１乱数）と乱数R2（第２乱数）とを読み込み、これらと定数とのビット結合値のハッシュ値を共通鍵MS (master secret)として生成する。次に、終了情報生成部１０１２ｆが、記憶部１０１１から共通鍵MSと、第１装置１０１０と中継装置１０３０との間の通信ログ情報HS1と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS1とに対応する情報を暗号化した第１終了情報FN1（Finishedメッセージ）を生成して記憶部１０１１に格納する（第１終了情報生成過程）。例えば、第１装置１０１０と中継装置１０３０との間の通信ログ情報HS1は、このメッセージ以外の、ここまでのすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、第１終了情報FN1（Finishedメッセージ）は、例えば、秘密情報PMS(master secret)と、文字列(finished label)と、通信ログ情報HS1のMD5によるハッシュ値＋通信ログ情報HS1のSHA-1によるハッシュ値と、のビット結合値に対する、共通鍵MSを用いた共通鍵暗号方式による暗号文である。生成された第１終了情報FN1（Finishedメッセージ）は送信部１０１３に送られ、そこからネットワーク１０４０経由で中継装置１０３０に送信される（第１終了情報送信過程／ステップＳ１０１６）。【０３５６】
第１終了情報FN1（Finishedメッセージ）は、中継装置１０３０（図５０）の受信部１０３４で受信され、記憶部１０３１に格納される。次に、中継装置１０３０の共通鍵生成部１０３２ｅが、記憶部１０３１から秘密情報PMSを読み込み、当該秘密情報PMSによって定まる共通鍵MSを生成して記憶部１０３１に格納する。例えば、共通鍵生成部１０３２ｅが、記憶部１０３１から秘密情報PMSと乱数R1（第１乱数）と乱数R2（第２乱数）とを読み込み、これらと定数とのビット結合値のハッシュ値を共通鍵MS (master secret)として生成する。次に、終了情報検証部１０３２ｇが、記憶部１０３１から第１終了情報FN1（Finishedメッセージ）と、共通鍵MSと、第１装置１０１０と中継装置１０３０との間の通信ログ情報HS1と、秘密情報PMSとを読み込み、共通鍵MSを用い、第１終了情報FN1（Finishedメッセージ）が秘密情報MSに対応するか否かを検証する。例えば、終了情報検証部１０３２ｇは、共通鍵MSを用いて第１終了情報FN1（Finishedメッセージ）を復号した復号結果と、秘密情報PMSと通信ログ情報HS1とに対応する情報とが等しいか否かを検証する。終了情報検証部１０３２ｇは、例えば、共通鍵MSを用いて第１終了情報FN1（Finishedメッセージ）を復号した復号結果と、秘密情報PMS(master secret)と、文字列(finished label)と、通信ログ情報HS1のMD5によるハッシュ値＋通信ログ情報HS1のSHA-1によるハッシュ値と、のビット結合値が等しいか否かを検証する。【０３５７】
この検証が合格であった場合、次に、中継装置１０３０（図５０）の終了情報生成部１０３２ｆが、記憶部１０３１から共通鍵MSと、第２装置１０２０と中継装置１０３０との間の通信ログ情報HS3と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS3とに対応する情報を暗号化した第２終了情報FN3（Finishedメッセージ）を生成して記憶部１０３１に格納する（第２終了情報生成過程）。第２装置１０２０と中継装置１０３０との間の通信ログ情報HS3は、例えば、このメッセージ以外の、ここまでのすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、第２終了情報FN3（Finishedメッセージ）は、例えば、秘密情報PMS(master secret)と、文字列(finished label)と、通信ログ情報HS3のMD5によるハッシュ値＋通信ログ情報HS3のSHA-1によるハッシュ値と、のビット結合値に対する、共通鍵MSを用いた共通鍵暗号方式による暗号文である。生成された第２終了情報FN3（Finishedメッセージ）は送信部１０３３に送られ、そこからネットワーク１０５０経由で第２装置１０２０に送信される（第２終了情報送信過程／ステップＳ１０１７）。【０３５８】
第２終了情報FN3（Finishedメッセージ）は、第２装置１０２０（図４９）の受信部１０２４で受信され、記憶部１０２１に格納される。次に、第２装置１０２０の共通鍵生成部１０２２ｅが、記憶部１０２１からから秘密情報PMSを読み込み、当該秘密情報PMSによって定まる共通鍵MSを生成して記憶部１０２１に格納する。例えば、共通鍵生成部１０２２ｅが、記憶部１０２１から秘密情報PMSと乱数R1（第１乱数）と乱数R2（第２乱数）とを読み込み、これらと定数とのビット結合値のハッシュ値を共通鍵MS (master secret)として生成する。次に、終了情報検証部１０２２ｇが、記憶部１０２１から第２終了情報FN3（Finishedメッセージ）と、共通鍵MSと、第２装置１０２０と中継装置１０３０との間の通信ログ情報HS3と、秘密情報PMSとを読み込み、共通鍵MSを用い、第２終了情報FN3（Finishedメッセージ）が秘密情報PMSに対応するか否かを検証する。例えば、終了情報検証部１０２２ｇは、共通鍵MSを用いて第２終了情報FN3（Finishedメッセージ）を復号した復号結果と、秘密情報PMSと通信ログ情報HS3とに対応する情報とが等しいか否かを検証する。終了情報検証部１０２２ｇは、例えば、共通鍵MSを用いて第２終了情報FN3（Finishedメッセージ）を復号した復号結果と、秘密情報PMS(master secret)と、文字列(finished label)と、通信ログ情報HS3のMD5によるハッシュ値＋通信ログ情報HS3のSHA-1によるハッシュ値と、のビット結合値が等しいか否かを検証する。【０３５９】
この検証が合格であった場合、次に、第２装置１０２０（図４９）の終了情報生成部１０２２ｆが、記憶部１０２１から共通鍵MSと、第２装置１０２０と中継装置１０３０との間の通信ログ情報HS4と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS4とに対応する情報を暗号化した第３終了情報FN4（Finishedメッセージ）を生成して記憶部１０２１に格納する（第３終了情報生成過程）。第２装置１０２０と中継装置１０３０との間の通信ログ情報HS4は、例えば、このメッセージ以外の、ここまでのすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、第３終了情報FN4（Finishedメッセージ）は、例えば、秘密情報PMS(master secret)と、文字列(finished label)と、通信ログ情報HS4のMD5によるハッシュ値＋通信ログ情報HS4のSHA-1によるハッシュ値と、のビット結合値に対する、共通鍵MSを用いた共通鍵暗号方式による暗号文である。生成された第３終了情報FN4（Finishedメッセージ）は送信部１０３３に送られ、そこからネットワーク１０５０経由で中継装置１０３０に送信される（第３終了情報送信過程／ステップＳ１０１８）。【０３６０】
第３終了情報FN4（Finishedメッセージ）は、中継装置１０３０（図５０）の受信部１０３４で受信され、記憶部１０３１に格納される。次に、終了情報検証部１０３２ｇが、記憶部１０３１から第３終了情報FN4（Finishedメッセージ）と、共通鍵MSと、第２装置１０２０と中継装置１０３０との間の通信ログ情報HS4と、秘密情報PMSとを読み込み、共通鍵MSを用い、第３終了情報FN4（Finishedメッセージ）が秘密情報PMSに対応するか否かを検証する。【０３６１】
この検証が合格であった場合、次に、中継装置１０３０（図５０）の終了情報生成部１０３２ｆが、記憶部１０３１から共通鍵MSと、第１装置１０１０と中継装置１０３０との間の通信ログ情報HS2と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS4とに対応する情報を暗号化した第４終了情報FN2（Finishedメッセージ）を生成して記憶部１０３１に格納する（第４終了情報生成過程）。第１装置１０１０と中継装置１０３０との間の通信ログ情報HS2は、例えば、このメッセージ以外の、ここまでのすべてのハンドシェイクメッセージであり、乱数R1（第１乱数）と乱数R2（第２乱数）とを含む。また、第４終了情報FN2（Finishedメッセージ）は、例えば、秘密情報PMS(master secret)と、文字列(finished label)と、通信ログ情報HS2のMD5によるハッシュ値＋通信ログ情報HS2のSHA-1によるハッシュ値と、のビット結合値に対する、共通鍵MSを用いた共通鍵暗号方式による暗号文である。生成された第４終了情報FN2（Finishedメッセージ）は送信部１０３３に送られ、そこからネットワーク１０４０経由で第１装置１０１０に送信される（第４終了情報送信過程／ステップＳ１０１９）。【０３６２】
第４終了情報FN2（Finishedメッセージ）は、第１装置１０１０（図４８）の受信部１０１４で受信され、記憶部１０１１に格納される。次に、終了情報検証部１０１２ｇが、記憶部１０１１から第４終了情報FN2（Finishedメッセージ）と、共通鍵MSと、第１装置１０１０と中継装置１０３０との間の通信ログ情報HS2と、秘密情報PMSとを読み込み、共通鍵MSを用い、第４終了情報FN2（Finishedメッセージ）が秘密情報MSに対応するか否かを検証する（終了情報検証過程）。【０３６３】
この検証が合格であった場合、第１装置１０１０及び第２装置１０２０での共通鍵MSを利用した共通鍵暗号通信が可能となる。例えば、第１装置１０１０の共通鍵暗号処理部（図示せず）がこの共通鍵MSを用いてメッセージを暗号化し（ステップＳ１０２０）、生成された暗号文データを送信部１０１３が第２装置１０２０に送信する。これに対して第２装置の共通鍵暗号処理部（図示せず）が共通鍵MSを用いてこの暗号文データを復号し（ステップＳ１０２１）、メッセージを復元する。【０３６４】
［中継装置の処理］
図５２，図５３は、第１５実施形態の中継装置１０３０の処理を説明するためのフローチャートである。【０３６５】
以下、このフローチャートを用いて中継装置１０３０の処理を説明する。なお、この処理の前提として、中継装置１０３０の記憶部１０３１には第２装置１０２０の秘密鍵SKsが格納されている。【０３６６】
まず、中継装置１０３０の受信部１０３４が、第１装置１０１０から送信された、乱数R1（第１乱数）及び暗号リストCSLを含む情報（ClientHelloメッセージ）を受信し、これらが通信処理部１０３２ｈに送られる（ステップＳ１０３１）。通信処理部１０３２ｈは、ClientHelloメッセージが具備する乱数R1（第１乱数）を記憶部１０３１に格納するとともに、暗号リストCSLを暗号リスト制限部１０３１ａに送る。暗号リスト制限部１０３１ａは、前述のように、暗号リストCSLが具備する暗号方式から対話型鍵交換方式（DH方式等）を削除した新たな暗号リストCSL'を生成し、記憶部１０３１に格納する（ステップＳ１０３２）。次に、通信処理部１０３２ｈは、記憶部１０３１から乱数R1及び新たな暗号リストCSL'を読み込み、これらを含む情報（ClientHelloメッセージ）を生成して送信部１０３３に送る。送信部１０３３は、乱数R1及び新たな暗号リストCSL'を含むClientHelloメッセージをネットワーク１０５０経由で第２装置１０２０に送信する（第２乱数送信過程／ステップＳ１０３３）。【０３６７】
その後、中継装置１０３０の受信部１０３４が、第２装置１０２０から送信された、暗号方式Cと乱数R2とを含む情報（ServerHelloメッセージ）を受信し、これを通信処理部１０３２ｈに送る（ステップＳ１０３４）。通信処理部１０３２ｈは、ServerHelloメッセージが具備する乱数R2（第２乱数）と暗号方式Cとを記憶部１０３１に格納するとともに、当該ServerHelloメッセージを送信部１０３３に送る。送信部１０３３は、乱数R2及び暗号方式Cを含む当該ServerHelloメッセージをネットワーク１０４０経由で第１装置１０１０に送信する（第４乱数送信過程／ステップＳ１０３５）。【０３６８】
その後、中継装置１０３０の受信部１０３４が、第２装置１０２０から送信された当該第２装置１０２０の公開鍵証明書Csを受信し、これを通信処理部１０３２ｈに送る（ステップＳ１０３６）。さらに、送信部１０３３は、第２装置１０２０の公開鍵証明書Csをネットワーク１０４０経由で第１装置１０１０に送信する（公開鍵証明書転送過程／ステップＳ１０３７）。【０３６９】
その後、中継装置１０３０の受信部１０３４が、第１装置１０１０から送信された、第１装置１０１０の公開鍵証明書Ccを含む情報（Certificateメッセージ）を受信し、これを通信処理部１０３２ｈに送る（ステップＳ１０３８）。通信処理部１０３２ｈは、第１装置１０１０の公開鍵証明書Ccを記憶部１０３１に格納する。【０３７０】
その後、中継装置１０３０の受信部１０３４が、暗号文PKs(PMS)を含む情報（ClientKeyExchangeメッセージ）を受信し、これを通信処理部１０３２ｈに送る（ステップＳ１０３９）。通信処理部１０３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKs(PMS)（暗号化秘密情報）を記憶部１０３１に格納する。次に、復号部１０３２ｂが、前述のように、秘密鍵SKsを用いて暗号文PKs(PMS)を復号して秘密情報PMSを抽出する（第１秘密情報復号過程／ステップＳ１０４０）。抽出された秘密情報PMSは、記憶部１０３１に格納される。次に、通信処理部１０３２ｈが、暗号文PKs(PMS)を含むClientKeyExchangeメッセージを送信部１０３３に送り、送信部１０３３が、当該ClientKeyExchangeメッセージをネットワーク１０５０経由で第２装置１０２０に送信する（暗号化秘密情報転送過程／ステップＳ１０４１）。【０３７１】
その後、中継装置１０３０の受信部１０３４が、第１装置１０１０から送信された署名情報Signを含むCertificateVerifyメッセージを受信し、通信処理部１０３２ｈに送る（ステップＳ１０４２）。通信処理部１０３２ｈは、CertificateVerifyメッセージが具備する署名情報Signを記憶部１０３１に格納する。そして、署名検証部１０３２ｃが、前述のように第１装置１０１０の公開鍵証明書Ccを用いて署名情報Signを検証する（署名情報検証過程／ステップＳ１０４３）。ここで、この検証が不合格であった場合（ステップＳ１０４４）、処理がエラー終了する（ステップＳ１０５５）。【０３７２】
一方、この検証が合格であった場合、受信部１０３４が第１装置１０１０から送信された第１終了情報FN1（Finishedメッセージ）を受信する（ステップＳ１０４５）。この第１終了情報FN1（Finishedメッセージ）は、記憶部１０３１に格納される。次に、共通鍵生成部１０３２ｅが、記憶部１０３１から秘密情報PMSを読み込み、当該秘密情報PMSによって定まる共通鍵MSを生成して記憶部１０３１に格納する。次に、終了情報検証部１０３２ｇが、記憶部１０３１から第１終了情報FN1（Finishedメッセージ）と、共通鍵MSと、第１装置１０１０と中継装置１０３０との間の通信ログ情報HS1と、秘密情報PMSとを読み込み、共通鍵MSを用い、第１終了情報FN1（Finishedメッセージ）を前述のように検証する（ステップＳ１０４６）。ここで、この検証が不合格であった場合（ステップＳ１０４７）、処理がエラー終了する（ステップＳ１０５５）。【０３７３】
一方、この検証が合格であった場合、終了情報生成部１０３２ｆが、記憶部１０３１から共通鍵MSと、第２装置１０２０と中継装置１０３０との間の通信ログ情報HS3と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS3とに対応する情報を暗号化した第２終了情報FN3（Finishedメッセージ）を生成して記憶部１０３１に格納する（第２終了情報生成過程／ステップＳ１０４８）。生成された第２終了情報FN3（Finishedメッセージ）は送信部１０３３に送られ、そこからネットワーク１０５０経由で第２装置１０２０に送信される（第２終了情報送信過程／ステップＳ１０４９）。【０３７４】
その後、中継装置１０３０の受信部１０３４が、第３終了情報FN4（Finishedメッセージ）を受信する（ステップＳ１０５０）。この第３終了情報FN4（Finishedメッセージ）は記憶部１０３１に格納される。次に、終了情報検証部１０３２ｇが、記憶部１０３１から第３終了情報FN4（Finishedメッセージ）と、共通鍵MSと、第２装置１０２０と中継装置１０３０との間の通信ログ情報HS4と、秘密情報PMSとを読み込み、共通鍵MSを用い、第３終了情報FN4（Finishedメッセージ）を前述のように検証する（ステップＳ１０５１）。ここで、この検証が不合格であった場合（ステップＳ１０５２）、処理がエラー終了する（ステップＳ１０５５）。【０３７５】
一方、この検証が合格であった場合、次に、終了情報生成部１０３２ｆが、記憶部１０３１から共通鍵MSと、第１装置１０１０と中継装置１０３０との間の通信ログ情報HS2と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS4とに対応する情報を暗号化した第４終了情報FN2（Finishedメッセージ）を生成して記憶部１０３１に格納する（第４終了情報生成過程／ステップＳ１０５３）。生成された第４終了情報FN2（Finishedメッセージ）は送信部１０３３に送られ、そこからネットワーク１０４０経由で第１装置１０１０に送信される（第４終了情報送信過程／ステップＳ１０５４）。【０３７６】
＜本形態の特徴＞
本形態では、第１装置１０１０と第２装置１０２０とが同一の秘密情報PMSを共有しているため、第１装置１０１０と第２装置１０２０とが秘密情報PMSを共有するために、中継装置１０３０がPMSを再暗号化する必要はなく、中継装置１０３０が、第１装置１０１０から送信された暗号文PKs(PMS)（ClientKeyExchangeメッセージ）を第２装置１０２０に転送するだけでよい（ステップＳ１０１３）。これにより、第１装置１０１０と第２装置１０２０とが秘密情報PMSを共有でき、それによって定まる共通鍵MSを共有できる。【０３７７】
さらに、第１装置１０１０と第２装置１０２０とが同一の秘密情報PMSを共有しているため、これらは、それぞれ、同一の秘密情報PMSに対応する終了情報（Finishedメッセージ）を生成し（ステップＳ１０１６，Ｓ１０１８）、それを中継装置１０３０に送信することができる。特に、本形態では、中継装置１０３０の記憶部１０３１に第２装置１０２０の秘密鍵SKsを格納することとしたため、中継装置１０３０は、第１装置１０１０から送信された暗号文PKs(PMS)（ClientKeyExchangeメッセージ）を復号して、秘密情報PMSを抽出することができる（ステップＳ１０１３）。これにより、中継装置１０３０も、秘密情報PMSによって定まる同一の共通鍵に対応する終了情報（Finishedメッセージ）を第１装置１０１０と第２装置１０２０とに送信することができる（ステップＳ１０１７，Ｓ１０１９）。【０３７８】
このように第１装置１０１０と中継装置１０３０との間、及び、第２装置１０２０と中継装置１０３０との間でそれぞれ、同一の共通鍵MSに対応する双方向の終了情報（Finishedメッセージ）が作成できるため、上述のように第１装置１０１０と第２装置１０２０とで共有可能となった共通鍵MSは、上述のプロトコルのもと検証に合格する共通鍵となる。その結果、上述のプロトコルに従った処理を行う第１装置１０１０と第２装置１０２０とが、それぞれの仕様を変更することなく、中継装置１０３０を介して同一の共通鍵を共有することができる。【０３７９】
特に、本形態では、第１装置１０１０と中継装置１０３０との間でのセッションに利用される乱数R1（第１乱数）を、第２装置１０２０と中継装置１０３０との間のセッションでも流用し（ClientHelloメッセージ）、さらに、第２装置１０２０と中継装置１０３０との間でのセッションに利用される乱数R2（第２乱数）を、第１装置１０１０と中継装置１０３０との間のセッションでも流用することとした（ServerHelloメッセージ）。そのため、例えば、乱数R1（第１乱数）と乱数R2（第２乱数）と秘密情報PMSとによって共通鍵MSが定まり、ClientHelloメッセージが具備する乱数とServerHelloメッセージが具備する乱数とによって終了情報（Finishedメッセージ）が定まる場合であっても、第１装置１０１０と中継装置１０３０との間、及び、第２装置１０２０と中継装置１０３０との間でそれぞれ、同一の共通鍵MSを設定でき、なおかつ、同一の共通鍵MSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、ＴＬＳ等のプロトコルに従った処理を行う第１装置１０１０と第２装置１０１０とが、それぞれの仕様を変更することなく、中継装置１０３０を介して同一の共通鍵を共有することができる。【０３８０】
また、本形態では、第２装置１０２０の送信部１０２３が、秘密情報暗号化過程（ステップＳ１０１２）の前に、第２装置１０２０の公開鍵の証明書Csを中継装置１０３０に送信し（ステップＳ１００８）、中継装置１０３０の受信部１０３４が、第２装置１０２０の公開鍵の証明書Csを受信し、中継装置１０３０の送信部１０３３が、秘密情報暗号化過程（ステップＳ１０１２）の前に、第２装置１０２０の公開鍵の証明書Csを第１装置１０１０に送信する（ステップＳ１００９）。これによって、第１装置１０１０は、第２装置の証明書付きの公開鍵PKsを取得できる。また、第１装置１０１０の公開鍵暗号化部１０１２ｃが、第２装置１０２０の秘密鍵SKsに対応する第２装置１０２０の公開鍵PKsを用いて秘密情報PMSを暗号化した暗号化秘密情報PKs(PMS)を生成し、中継装置１０３０を通じて第２装置１０２０に送信している（ステップＳ１０１２〜Ｓ１０１４）が、これは、第１装置１０１０が第２装置１０２０及び中継装置１０３０を認証するためのチャレンジを送信していることに相当する。そして、第１装置１０１０は、中継装置１０３０から第４終了情報FN2（Finishedメッセージ）を受信しているが、これは上記のチャレンジに対するレスポンスを受信していることに相当する。さらに、第１装置１０１０は、当該第４終了情報FN2（Finishedメッセージ）が秘密情報MSに対応するか否かを検証しているが（ステップＳ１０１９）、これは当該レスポンスを検証していることに相当する。ここで、上述の第２装置１０２０の公開鍵証明書Csを発行した認証局を信用するのであれば、この秘密情報MSを復号できるのは秘密鍵SKsを所持している第２装置１０２０及び中継装置１０３０のみであるといえる。これにより、第１装置１０１０は共通鍵MSを共有した相手が第２装置１０２０及び中継装置１０３０の少なくとも一方であることを確認できる（サーバ認証可能）。【０３８１】
また、本形態では、第１装置１０１０の送信部１０１３が、第１装置１０１０の公開鍵証明書Ccを中継装置１０３０に送信する（ステップＳ１０１１）。これによって、中継装置１０３０は、第１装置１０１０の証明書付きの公開鍵PKcを取得できる。また、第１装置１０１０の署名生成部１０１２ｄが、第１装置１０１０の公開鍵PKcに対応する第１装置１０１０の秘密鍵SKcを用いて署名情報Signを生成し、送信部１０１３が、当該署名情報Signを中継装置１０３０に送信する。中継装置１０３０の署名検証部１０３２ｃが、第１装置１０１０の公開鍵PKcを用いて署名情報Signを検証する。これは、上述の第１装置１０１０の公開鍵証明書Ccを発行した認証局を信用することを前提に、中継装置１０３０が第２装置の代わりに第１装置１０１０を認証することに相当する（クライアント認証可能）。【０３８２】
〔第１６実施形態〕
次に、本発明の第１６実施形態について説明する。
本形態は、第１５実施形態の変形例である。すなわち、第１５実施形態では、第１装置が第２装置を認証し（サーバ認証）、中継装置が第２装置の代わりに第１装置を認証する（クライアント認証）こととした。これに対し、本形態では、第１装置が第２装置を認証（サーバ認証）するが、クライアント認証は行わない。以下では、第１５実施形態との相違点を中心に説明し、第１５実施形態と共通する事項については説明を省略する。【０３８３】
［全体構成］
図５４は、第１６実施形態の共通鍵暗号通信システム１１００の全体構成を説明するためのブロック図である。なお、図５４において第１５実施形態と共通する部分については図４７と同じ番号を付して説明を省略する。【０３８４】
図５４に例示するように、本形態の共通鍵暗号通信システム１１００は、第１装置１１１０（例えば、クライアント装置）と、第２装置１０２０（例えば、サーバ装置）と、中継装置１１３０（例えば、ゲートウェイ装置）とを有する。また、第１装置１１１０と中継装置１１３０とは、ネットワーク１０４０を通じて通信可能に接続され、第２装置１０２０と中継装置１１３０とは、ネットワーク１０５０を通じて通信可能に接続される。【０３８５】
なお、第１装置１１１０と第２装置１０２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の配送処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置１１３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図５４では、１つ第１装置１１１０と第２装置１０２０とが中継装置１１３０と通信可能に接続されているが、２以上の第１装置１１１０と第２装置１０２０とが中継装置１１３０と通信可能に接続されていてもよい。さらには、複数の中継装置１１３０を設けた構成であってもよい。【０３８６】
［第１装置］
本形態の第１装置１１１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０３８７】
図５５は、第１６実施形態の第１装置１１１０の機能構成を説明するためのブロック図である。【０３８８】
図５５に例示するように、本形態の第１装置１１１０は、記憶部１０１１、演算部１１１２、送信部１０１３、受信部１０１４、制御部１０１５及び一時記憶部１０１６を有する。また、演算部１１１２は、乱数生成部１０１２ａ、秘密情報設定部１０１２ｂ、公開鍵暗号化部１０１２ｃ、共通鍵生成部１０１２ｅ、終了情報生成部１０１２ｆ、終了情報検証部１０１２ｇ及び通信処理部１０１２ｈを有する。また、第１装置１１１０は、制御部１０１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０１６に格納され、他の演算のために読み出される。なお、本形態の演算部１１１２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０３８９】
［第２装置］
第１５実施形態と同じである。
［中継装置］
本形態の中継装置１１３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０３９０】
図５６は、第１６実施形態の中継装置１１３０の機能構成を説明するためのブロック図である。【０３９１】
図５６に例示するように、本形態の中継装置１１３０は、記憶部１０３１、演算部１１３２、送信部１０３３、受信部１０３４、制御部１０３５及び一時記憶部１０３６を有する。また、演算部１１３２は、暗号リスト制限部１０３１ａ、復号部１０３２ｂ、共通鍵生成部１０３２ｅ、終了情報生成部１０３２ｆ、終了情報検証部１０３２ｇ及び通信処理部１０３２ｈを有する。また、中継装置１１３０は、制御部１０３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０３６に格納され、他の演算のために読み出される。なお、本形態の演算部１１３２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０３９２】
＜処理＞
次に、本形態の処理を説明する。
［前提］
第１５実施形態との相違点は、第１装置１１１０に第１装置の秘密鍵が格納されない点である。その他は、第１５実施形態と同様である。【０３９３】
［処理の全体］
図５７は、第１６実施形態の処理の全体を説明するためのシーケンス図である。以下、第１５実施形態との相違点のみを説明する。【０３９４】
第１５実施形態との相違点は、第２公開鍵証明書送信過程（ステップＳ１０１１）及び署名情報送信過程（ステップＳ１０１５）が実行されない点のみである。そのため、第１装置１１１０の認証処理は行われない。その他は、第１５実施形態と同様である。【０３９５】
［中継装置の処理］
図５８は、第１６実施形態の中継装置１１３０の処理を説明するためのフローチャートである。以下、第１５実施形態との相違点のみを説明する。【０３９６】
第１５実施形態との相違点は、ステップＳ１０３８，Ｓ１０４２〜Ｓ１０４４の処理を実行しない点のみであり、その他は、第１５実施形態と同様である。【０３９７】
＜本形態の特徴＞
本形態でも第１５実施形態と同様、第１装置１１１０と中継装置１１３０との間、及び、第２装置１０２０と中継装置１１３０との間でそれぞれ、同一の共通鍵MSが共用可能となる。そして、そのために、中継装置１１３０が、秘密情報PMSを再暗号化する必要はなく、第１装置１１１０から送信された暗号文PKs(PMS)（ClientKeyExchangeメッセージ）を第２装置１０２０に転送するだけでよい。また、本形態でも第１５実施形態と同様、第１装置１１１０と中継装置１１３０との間、及び、第２装置１０２０と中継装置１１３０との間でそれぞれ、同一の秘密情報PMSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、上述のプロトコル（例えば、ＴＬＳ等）に従った処理を行う第１装置１１１０と第２装置１０２０とが、それぞれの仕様を変更することなく、中継装置１１３０を介して同一の共通鍵を共有することができる。【０３９８】
さらに、本形態でも第１５実施形態と同様、第１装置１１１０は共通鍵MSを共有した相手が第２装置１０２０及び中継装置１１３０の少なくとも一方であることを確認できる（サーバ認証可能）。【０３９９】
また、本形態におけるステップＳ１００３で暗号リストの制限を行わないのであれば、ステップＳ１０２０〜Ｓ１０２２の共通鍵暗号・復号処理において、終了情報FNをイニシャルベクトル（IV）としたCBCモードによる共通鍵暗号方式を利用することができる。すなわち、本形態においてステップＳ１００３での暗号リストの制限を行わないのであれば、第１装置１１１０と中継装置１１３０との間のハンドシェイク（通信ログ情報）と、中継装置１１３０と第２装置１０２０との間のハンドシェイク（通信ログ情報）とが等しくなり、これらの間の（Finishedメッセージ）も等しくなる（図５７参照）。すなわち、終了情報FN1（第１終了情報）と終了情報FN3（第２終了情報）とが同一となり、終了情報FN2（第４終了情報）と終了情報FN4（第３終了情報）とが同一となる。【０４００】
その結果、終了情報FN1（第１終了情報）及び／又は終了情報FN2（第４終了情報）を、第１装置１１１０が秘密情報PMSによって定まる共通鍵MSを用い、イニシャルベクトルを必要とするブロック暗号方式（CBCモード等）によって暗号化又は復号する場合のイニシャルベクトルとして利用でき、終了情報FN3（第２終了情報）及び／又は終了情報FN4（第３終了情報）を、第２装置１０２０が秘密情報PMSによって定まる共通鍵MSを用い、イニシャルベクトルを必要とするブロック暗号方式（CBCモード等）によって暗号化又は復号する場合のイニシャルベクトルとして利用できる。【０４０１】
〔第１７実施形態〕
次に、本発明の第１７実施形態について説明する。
本形態は、第１５実施形態の変形例であり、中継装置に第２装置の秘密鍵を格納することなく、共通鍵を共有化する形態である。この場合、第１装置と中継装置との間、及び、第２装置と中継装置との間でそれぞれ、同一の共通鍵MSを共用可能とするために、中継装置が秘密情報PMSを再暗号化する必要がある。その反面、中継装置に第２装置の秘密鍵を格納する処理を省略できる。【０４０２】
以下では、第１５実施形態との相違点を中心に説明し、第１５実施形態と共通する事項については説明を省略する。【０４０３】
［全体構成］
図５９は、第１７実施形態の共通鍵暗号通信システム１２００の全体構成を説明するためのブロック図である。なお、図５９において第１５実施形態と共通する部分については図４７と同じ番号を付して説明を省略する。【０４０４】
図５９に例示するように、本形態の共通鍵暗号通信システム１２００は、第１装置１２１０（例えば、クライアント装置）と、第２装置１０２０（例えば、サーバ装置）と、中継装置１２３０（例えば、ゲートウェイ装置）とを有する。また、第１装置１２１０と中継装置１２３０とは、ネットワーク１０４０を通じて通信可能に接続され、第２装置１０２０と中継装置１２３０とは、ネットワーク１０５０を通じて通信可能に接続される。【０４０５】
なお、第１装置１２１０と第２装置１０２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の配送処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置１２３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図５９では、１つ第１装置１２１０と第２装置１０２０とが中継装置１２３０と通信可能に接続されているが、２以上の第１装置１２１０と第２装置１０２０とが中継装置１２３０と通信可能に接続されていてもよい。さらには、複数の中継装置１２３０を設けた構成であってもよい。【０４０６】
［第１装置］
本形態の第１装置１２１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０４０７】
図６０は、第１７実施形態の第１装置１２１０の機能構成を説明するためのブロック図である。【０４０８】
図６０に例示するように、本形態の第１装置１２１０は、記憶部１０１１、演算部１２１２、送信部１０１３、受信部１０１４、制御部１０１５及び一時記憶部１０１６を有する。また、演算部１２１２は、乱数生成部１０１２ａ、秘密情報設定部１０１２ｂ、公開鍵暗号化部１２１２ｃ、署名生成部１０１２ｄ、共通鍵生成部１０１２ｅ、終了情報生成部１０１２ｆ、終了情報検証部１０１２ｇ及び通信処理部１０１２ｈを有する。また、第１装置１２１０は、制御部１０１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０１６に格納され、他の演算のために読み出される。なお、本形態の演算部１２１２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０４０９】
［第２装置］
第１５実施形態と同じである。【０４１０】
［中継装置］
本形態の中継装置１２３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０４１１】
図６１は、第１７実施形態の中継装置１２３０の機能構成を説明するためのブロック図である。【０４１２】
図６１に例示するように、本形態の中継装置１２３０は、記憶部１０３１、演算部１２３２、送信部１０３３、受信部１０３４、制御部１０３５及び一時記憶部１０３６を有する。また、演算部１２３２は、暗号リスト制限部１０３１ａ、復号部１０３２ｂ、署名検証部１０３２ｃ、公開鍵暗号化部１３３２ｃ、共通鍵生成部１０３２ｅ、終了情報生成部１０３２ｆ、終了情報検証部１０３２ｇ及び通信処理部１０３２ｈを有する。また、中継装置１２３０は、制御部１０３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０３６に格納され、他の演算のために読み出される。なお、本形態の演算部１２３２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０４１３】
＜処理＞
次に、本形態の処理を説明する。
［前提］
第１５実施形態との相違点は、中継装置１２３０に対し、公開鍵暗号方式（ＲＳＡ等）の鍵ペア（公開鍵，秘密鍵）が生成されている点である。なお、鍵ペアは複数の暗号方式分生成されてもよい。そして、中継装置１２３０の秘密鍵SKgが中継装置１２３０の記憶部１０３１に格納され、当該秘密鍵SKgに対応する中継装置１２３０の公開鍵PKgにも、認証局によって公開鍵証明書Cgが発行され、これが中継装置１２３０記憶部１０３１に格納される。その他の点は、第１５実施形態と同様である。【０４１４】
［処理の全体］
図６２は、第１７実施形態の処理の全体を説明するためのシーケンス図である。以下、第１５実施形態の相違点のみを説明する。【０４１５】
第１５実施形態との相違点は、ステップＳ１００１及びＳ１００９が実行されない点、ステップＳ１０１０の代わりに、以下のステップＳ１１１０が実行される点、ステップＳ１０１２，Ｓ１０１３の代わりに、以下のステップＳ１１１２及びＳ１１１３が実行される点である。【０４１６】
《ステップＳ１１１０》
ステップＳ１１１０では、中継装置１２３０の通信処理部１０３２ｈが、中継装置１２３０の公開鍵証明書Cgを記憶部１０３１から読み込み、これを送信部１０３３に送る。送信部１０３３は、中継装置１２３０の公開鍵証明書Cgをネットワーク１０４０経由で第１装置１２１０に送信する（公開鍵証明書転送過程）。送信された中継装置１２３０の公開鍵証明書Cgは、第１装置１２１０（図６０）の受信部１０１４で受信され、通信処理部１０１２ｈに送られる。通信処理部１０１２ｈは、当該中継装置１２３０の公開鍵証明書Cgを記憶部１０１１に格納する。【０４１７】
《ステップＳ１１１２》
まず、第１装置１２１０（図６０）の秘密情報設定部１０１２ｂが、共通鍵MS（master secret）を特定するための秘密情報PMS（premaster secret）を設定し、それを記憶部１０１１に格納する。次に、第１装置１２１０の通信処理部１０１２ｈが、記憶部１０１１から中継装置１２３０の公開鍵証明書Cgを読み込み、中継装置１２３０の公開鍵証明書Cgを発行したＣＡの公開鍵PKcaをネットワーク１０４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部１０１１に格納される。通信処理部１０１２ｈは、記憶部１０１１から中継装置１２３０の公開鍵証明書CgとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて中継装置１２３０の公開鍵証明書Cgを検証する。この検証が合格した場合、公開鍵暗号化部１２１２ｃが、記憶部１０１１から秘密情報PMSと公開鍵証明書Cgが具備する中継装置１２３０の公開鍵PKgと暗号方式Ｃとを読み込み、当該公開鍵PKgを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKg(PMS)（第１暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部１０１１に格納する（秘密情報暗号化過程）。生成された暗号文PKg(PMS)を含む情報（ClientKeyExchangeメッセージ）は、送信部１０１３に送られ、送信部１０１３は、当該暗号文PKg(PMS)（暗号化秘密情報）を含むClientKeyExchangeメッセージをネットワーク１０４０経由で中継装置１２３０に送信する（暗号化秘密情報送信過程）。【０４１８】
《ステップＳ１１１３》
ClientKeyExchangeメッセージは、中継装置１２３０（図６１）の受信部１０３４で受信され、通信処理部１０３２ｈに送られ、通信処理部１０３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKg(PMS)（第１暗号化秘密情報）を記憶部１０３１に格納する。次に、復号部１０３２ｂが、記憶部１０３１から暗号方式Ｃを読み込み、それに対応する中継装置１２３０の秘密鍵SKgを読み込む。さらに、復号部１０３２ｂは、記憶部１０３１から暗号文PKg(PMS)を読み込み、これを秘密鍵SKgで復号して秘密情報PMSを抽出する（第１秘密情報復号過程）。抽出された秘密情報PMSは、記憶部１０３１に格納される。【０４１９】
次に、中継装置１２３０の通信処理部１０３２ｈが、記憶部１０３１から第２装置１０２０の公開鍵証明書Csを読み込み、第２装置１０２０の公開鍵証明書Csを発行したＣＡの公開鍵PKcaをネットワーク１０４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部１０３１に格納される。通信処理部１０３２ｈは、記憶部１０３１から第２装置１０２０の公開鍵証明書CsとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第２装置１０２０の公開鍵証明書Csを検証する。この検証が合格した場合、公開鍵暗号化部１３３２ｃが、記憶部１０３１から秘密情報PMSと公開鍵証明書Csが具備する第２装置１０２０の公開鍵PKsと暗号方式Ｃとを読み込み、当該公開鍵PKsを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKs(PMS)（暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部１０３１に格納する（第２秘密情報暗号化過程）。【０４２０】
［中継装置の処理］
図６３は、第１７実施形態の中継装置１２３０の処理を説明するためのフローチャートである。以下では、第１５実施形態との相違点のみを説明する。【０４２１】
第１５実施形態との相違点は、ステップＳ１０３７の代わりに以下のステップＳ１１３７の処理が実行され、ステップＳ１０３９，Ｓ１０４０の代わりに以下のステップＳ１１３９，Ｓ１１４０が実行される点、ステップＳ１１４０とステップＳ１０４１との間に以下のステップＳ１１４１の処理が実行される点である。【０４２２】
《ステップＳ１１３７》
送信部１０３３が、中継装置１２３０の公開鍵証明書Cgをネットワーク１０４０経由で第１装置１２１０に送信する（公開鍵証明書転送過程）。【０４２３】
《ステップＳ１１３９》
中継装置１２３０の受信部１０３４が、暗号文PKg(PMS)を含む情報（ClientKeyExchangeメッセージ）を受信し、これを通信処理部１０３２ｈに送る。【０４２４】
《ステップＳ１１４０》
通信処理部１０３２ｈは、ClientKeyExchangeメッセージが具備する暗号文PKg(PMS)（第１暗号化秘密情報）を記憶部１０３１に格納する。次に、復号部１０３２ｂが、前述のように、秘密鍵SKgを用いて暗号文PKg(PMS)を復号して秘密情報PMSを抽出する（第１秘密情報復号過程）。秘密情報PMSは、記憶部１０３１に格納される。【０４２５】
《ステップＳ１１４１》
中継装置１２３０の通信処理部１０３２ｈが、記憶部１０３１から第２装置１０２０の公開鍵証明書Csを読み込み、第２装置１０２０の公開鍵証明書Csを発行したＣＡの公開鍵PKcaをネットワーク１０４０に接続された図示していない認証局装置から取得する。取得されたＣＡの公開鍵PKcaは記憶部１０３１に格納される。通信処理部１０３２ｈは、記憶部１０３１から第２装置１０２０の公開鍵証明書CsとＣＡの公開鍵PKcaを読み込み、ＣＡの公開鍵PKcaを用いて第２装置１０２０の公開鍵証明書Csを検証する。この検証が合格した場合、公開鍵暗号化部１３３２ｃが、記憶部１０３１から秘密情報PMSと公開鍵証明書Csが具備する第２装置１０２０の公開鍵PKsと暗号方式Ｃとを読み込み、当該公開鍵PKsを用い、暗号方式Ｃに示される暗号方式によって秘密情報PMSを暗号化した暗号文PKs(PMS)（暗号化秘密情報／EncryptedPreMasterSecret メッセージ）を生成し、記憶部１０３１に格納する（第２秘密情報暗号化過程）。【０４２６】
＜本形態の特徴＞
本形態でも第１５実施形態と同様、第１装置１２１０と中継装置１２３０との間、及び、第２装置１０２０と中継装置１２３０との間でそれぞれ、同一の共通鍵MSが共用可能となる。また、本形態でも第１５実施形態と同様、第１装置１２１０と中継装置１２３０との間、及び、第２装置１０２０と中継装置１２３０との間でそれぞれ、同一の秘密情報PMSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、上述のプロトコル（例えば、ＴＬＳ等）に従った処理を行う第１装置１２１０と第２装置１０２０とが、それぞれの仕様を変更することなく、中継装置１２３０を介して同一の共通鍵を共有することができる。【０４２７】
〔第１８実施形態〕
次に、本発明の第１８実施形態について説明する。
本形態は、第１７実施形態の変形例である。以下では、第１５，１７実施形態との相違点を中心に説明し、第１５，１７実施形態と共通する事項については説明を省略する。【０４２８】
［全体構成］
図６４は、第１８実施形態の共通鍵暗号通信システム１３００の全体構成を説明するためのブロック図である。なお、図６４において第１５実施形態と共通する部分については図４７と同じ番号を付して説明を省略する。【０４２９】
図６４に例示するように、本形態の共通鍵暗号通信システム１３００は、第１装置１３１０（例えば、クライアント装置）と、第２装置１０２０（例えば、サーバ装置）と、中継装置１３３０（例えば、ゲートウェイ装置）とを有する。また、第１装置１３１０と中継装置１３３０とは、ネットワーク１０４０を通じて通信可能に接続され、第２装置１０２０と中継装置１３３０とは、ネットワーク１０５０を通じて通信可能に接続される。【０４３０】
なお、第１装置１３１０と第２装置１０２０とは、二装置間での認証処理と、暗号技術を用いた当該二装置間での共通鍵の配送処理と、当該共通鍵を特定するための秘密情報及び当該二装置間の通信ログ情報を用いて当該共通鍵の設定過程の正当性を確認する処理と、を含むプロトコル（例えば、SSLやTLS等）に従った処理を行う装置である。一方、中継装置１３３０は、従来存在しない本形態独自の処理を行う装置である。また、説明を簡略化するため、図６４では、１つ第１装置１３１０と第２装置１０２０とが中継装置１３３０と通信可能に接続されているが、２以上の第１装置１３１０と第２装置１０２０とが中継装置１３３０と通信可能に接続されていてもよい。さらには、複数の中継装置１３３０を設けた構成であってもよい。【０４３１】
［第１装置］
本形態の第１装置１３１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０４３２】
図６５は、第１８実施形態の第１装置１３１０の機能構成を説明するためのブロック図である。【０４３３】
図６５に例示するように、本形態の第１装置１３１０は、記憶部１０１１、演算部１３１２、送信部１０１３、受信部１０１４、制御部１０１５及び一時記憶部１０１６を有する。また、演算部１３１２は、乱数生成部１０１２ａ、秘密情報設定部１０１２ｂ、公開鍵暗号化部１２１２ｃ、共通鍵生成部１０１２ｅ、終了情報生成部１０１２ｆ、終了情報検証部１０１２ｇ及び通信処理部１０１２ｈを有する。また、第１装置１３１０は、制御部１０１５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０１６に格納され、他の演算のために読み出される。なお、本形態の演算部１２１２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０４３４】
［第２装置］
第１５実施形態と同じである。
［中継装置］
本形態の中継装置１３３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそれを実行することにより構成されるものである。【０４３５】
図６６は、第１８実施形態の中継装置１３３０の機能構成を説明するためのブロック図である。【０４３６】
図６６に例示するように、本形態の中継装置１３３０は、記憶部１０３１、演算部１３３２、送信部１０３３、受信部１０３４、制御部１０３５及び一時記憶部１０３６を有する。また、演算部１３３２は、暗号リスト制限部１０３１ａ、復号部１０３２ｂ、公開鍵暗号化部１３３２ｃ、共通鍵生成部１０３２ｅ、終了情報生成部１０３２ｆ、終了情報検証部１０３２ｇ及び通信処理部１０３２ｈを有する。また、中継装置１３３０は、制御部１０３５の制御のもと各処理を実行する。また、明示しない限り、各演算過程で生成されたデータは、逐一、一時記憶部１０３６に格納され、他の演算のために読み出される。なお、本形態の演算部１２３２は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがそれらを実行することによって構築される処理部である。【０４３７】
＜処理＞
次に、本形態の処理を説明する。
［前提］
第１５実施形態との相違点は、第１装置１３１０に第１装置の秘密鍵が格納されない点である。その他は、第１７実施形態と同様である。【０４３８】
［処理の全体］
図６７は、第１８実施形態の処理の全体を説明するためのシーケンス図である。以下、第１７実施形態との相違点のみを説明する。【０４３９】
第１７実施形態との相違点は、第２公開鍵証明書送信過程（ステップＳ１０１１）及び署名情報送信過程（ステップＳ１０１５）が実行されない点のみである。その他は、第１７実施形態と同様である。【０４４０】
［中継装置の処理］
図６８は、第１８実施形態の中継装置１３３０の処理を説明するためのフローチャートである。以下、第１７実施形態との相違点のみを説明する。【０４４１】
第１７実施形態との相違点は、ステップＳ１０３８，Ｓ１０４２〜Ｓ１０４４の処理を実行しない点のみであり、その他は、第１７実施形態と同様である。【０４４２】
＜本形態の特徴＞
本形態でも第１５実施形態と同様、第１装置１３１０と中継装置１３３０との間、及び、第２装置１０２０と中継装置１３３０との間でそれぞれ、同一の共通鍵MSが共用可能となる。また、本形態でも第１５実施形態と同様、第１装置１３１０と中継装置１３３０との間、及び、第２装置１０２０と中継装置１３３０との間でそれぞれ、同一の秘密情報PMSに対応する双方向の終了情報（Finishedメッセージ）が作成できる。その結果、上述のプロトコル（例えば、ＴＬＳ等）に従った処理を行う第１装置１３１０と第２装置１０２０とが、それぞれの仕様を変更することなく、中継装置１３３０を介して同一の共通鍵を共有することができる。【０４４３】
〔第１９実施形態〕
本形態は、上述の第１５〜１８実施形態の変形例であり、上述の終了情報（Finishedメッセージ）のやり取り（ステップＳ１０１９）が終了した後に、第１装置、第２装置及び中継装置が、ステップＳ１０１９までの処理で確立されたセッションを再利用して再接続を行い、新たな終了情報（Finishedメッセージ）のやり取りを行う。これにより、第１装置が送受信する終了情報（Finishedメッセージ）と、第２装置が送受信する終了情報（Finishedメッセージ）とを等しくすることができる。その結果、第１装置と第２装置とが、共通鍵MSを用い、終了情報（Finishedメッセージ）をイニシャルベクトルとしたブロック暗号方式（CBCモード等）によって暗号化又は復号を行うことが可能となる。以下では、各実施形態のステップＳ１０１９より後の処理のみを説明する。なお、本形態の処理は、上述の何れの実施形態にも適用可能である。しかし、ここでは説明の簡略化のため、第１５実施形態に本形態の処理を付加した形態のみを説明する。また、本形態の処理が実行される前提として、各実施形態のServerHelloメッセージ（ステップＳ１００５〜Ｓ１００７）が第２装置で生成されたセッションＩＤ（session id）を含んでおり、ServerHelloメッセージが送信される過程において、当該セッションＩＤ（session id）が第１装置、第２装置及び中継装置の記憶部にそれぞれ格納され、それらがそれぞれ秘密情報PMSに関連付けられるものとする。【０４４４】
図６９は、第１９実施形態における付加処理を説明するためのシーケンス図である。【０４４５】
まず、中継装置１０３０の送信部１０３３が第１装置１０１０に対して再接続要求情報を送信する（ステップＳ１２５１）。これは第１装置１０１０の受信部１０１４で受信され通信処理部１０１２ｈに送られる。これを契機に、乱数生成部１０１２ａが乱数R3を生成して通信処理部１０１２ｈに送る。通信処理部１０１２ｈは記憶部１０１１からセッションＩＤ（session id）を読み込み、乱数R3とセッションＩＤとを含む送信開始要求情報（ClientHello メッセージ）を生成して送信部１０１３に送る。送信部１０１３は、送信開始要求情報（ClientHello メッセージ）を中継装置１０３０に送信し、中継装置１０３０の受信部１０３４で受信される（ステップＳ１２５２）。また、この送信開始要求情報（ClientHello メッセージ）は、中継装置１０３０の送信部１０３３から送信され（ステップＳ１２５３）、第２装置１０２０の受信部１０２４で受信され（ステップＳ１２５４）、通信処理部１０２２ｈに送られる。これを契機に、第２装置１０２０の乱数生成部１０２２ａが乱数R4を生成して通信処理部１０２２ｈに送る。通信処理部１０２２ｈは記憶部１０２１からセッションＩＤ（session id）を読み込み、乱数R4とセッションＩＤとを含む送信開始要求情報（ServerHelloメッセージ）を生成して送信部１０２３に送る。送信部１０２３は、送信開始要求情報（ServerHelloメッセージ）を中継装置１０３０に送信し、中継装置１０３０の受信部１０３４で受信される（ステップＳ１２５５）。また、この送信開始要求情報（ServerHelloメッセージ）は、中継装置１０３０の送信部１０３３から送信され（ステップＳ１２５６）、第１装置１０１０の受信部１０１４で受信され（ステップＳ１２５７）、通信処理部１０１２ｈに送られる。【０４４６】
次に、第１装置１０１０が中継装置１０３０を介して第２装置１０２０にChangeCipherSpecメッセージ（例えばイニシャルベクトルを初期化する旨を含む）を送信した後、第１装置１０１０の終了情報生成部１０１２ｆが、記憶部１０１１から共通鍵MSと、ステップＳ１２５２以後の第１装置１０１０と中継装置１０３０との間の通信ログ情報HS5と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS5とに対応する情報を暗号化した第５終了情報FN5（Finishedメッセージ）を生成して記憶部１０１１に格納する（第５終了情報生成過程）。第１装置１０１０と中継装置１０３０との間の通信ログ情報HS5は、例えば、このメッセージ以外の、ステップＳ１２５２以後のすべてのハンドシェイクメッセージであり、乱数R3と乱数R4とを含む。また、第５終了情報FN5（Finishedメッセージ）は、例えば、秘密情報PMS(master secret)と、文字列(finished label)と、通信ログ情報HS5のMD5によるハッシュ値＋通信ログ情報HS5のSHA-1によるハッシュ値と、のビット結合値に対する、共通鍵MSを用いた共通鍵暗号方式による暗号文である。生成された第５終了情報FN5（Finishedメッセージ）は送信部１０１３に送られ、そこから中継装置１０３０に送信される（ステップＳ１２５８）。第５終了情報FN5（Finishedメッセージ）は中継装置１０３０の受信部１０３４で受信され（ステップＳ１２５９）、さらに送信部１０３４から第２装置１０２０に送信される（第５終了情報送信過程／ステップＳ１２６０）。【０４４７】
次に、第２装置１０２０が中継装置１０３０を介して第１装置１０１０にChangeCipherSpecメッセージ（例えばイニシャルベクトルを初期化する旨を含む）を送信した後、第２装置１０２０の終了情報生成部１０２２ｆが、記憶部１０２１から共通鍵MSと、ステップＳ１２５２以後の第２装置１０２０と中継装置１０３０との間の通信ログ情報HS6と、秘密情報PMSとを読み込み、共通鍵MSを用い、秘密情報共通鍵MSと通信ログ情報HS6とに対応する情報を暗号化した第６終了情報FN6（Finishedメッセージ）を生成して記憶部１０２１に格納する（第６終了情報生成過程）。生成された第６終了情報FN6（Finishedメッセージ）は送信部１０２３に送られ、そこから中継装置１０３０に送信される（ステップＳ１２６１）。第６終了情報FN6（Finishedメッセージ）は中継装置１０３０の受信部１０３４で受信され（ステップＳ１２６２）、さらに送信部１０３４から第１装置１０１０に送信される（第６終了情報送信過程／ステップＳ１２６３）。【０４４８】
以上により、第１装置１０１０の共通鍵暗号処理部や第２装置の共通鍵暗号処理部（図示せず）が、第５終了情報FN5（Finishedメッセージ）及び／又は第６終了情報FN6（Finishedメッセージ）をイニシャルベクトルとしたブロック暗号方式（CBCモード等）によって暗号化又は復号を行うことができる。【０４４９】
＜本形態の特徴＞
以上のように、本形態では、第４終了情報送信過程（ステップＳ１０１９）の後に、第１装置の送信部が送信開始要求情報（ClientHello メッセージ）を中継装置に送信し、中継装置の送信部が当該送信開始要求情報（ClientHello メッセージ）を第２装置に送信し、第２装置の送信部が送信開始応答情報（ServerHelloメッセージ）を中継装置に送信し、中継装置の送信部が当該送信開始応答情報（ServerHelloメッセージ）を第１装置に送信する（再接続開始過程）。次に、第１装置の終了情報生成部が、秘密情報PMSによって定まる共通鍵MSを用い、再接続開始過程以後の当該第１装置と中継装置との間の通信ログ情報と、秘密情報PMSと、に対応する情報を暗号化した第５終了情報（Finishedメッセージ）を生成し（第５終了情報生成過程）、第１装置の送信部が第５終了情報（Finishedメッセージ）を中継装置に送信し、中継装置の送信部が第５終了情報を第２装置に送信する（第５終了情報送信過程）。さらに、第２装置の終了情報生成部が、秘密情報PMSによって定まる共通鍵MSを用い、再接続開始過程以後の当該第２装置と上記中継装置との間の通信ログ情報と、秘密情報PMSと、に対応する情報を暗号化した第６終了情報（Finishedメッセージ）を生成し（第６終了情報生成過程）、第２装置の送信部が第６終了情報（Finishedメッセージ）を中継装置に送信し、中継装置の送信部が第６終了情報（Finishedメッセージ）を第１装置に送信する（第６終了情報送信過程）。【０４５０】
ここで、第１装置が送信する第５終了情報（Finishedメッセージ）は、第２装置が受信する第５終了情報（Finishedメッセージ）と同一であり、第２装置が送信する第６終了情報（Finishedメッセージ）は、第１装置が受信する第６終了情報（Finishedメッセージ）と同一である。よって、第５終了情報及び／又は第６終了情報は、第１装置と第２装置とが秘密情報PMSによって定まる共通鍵MSを用い、イニシャルベクトルを必要とするブロック暗号方式（CBCモード等）によって暗号化又は復号を行う場合のイニシャルベクトルとして利用できる。すなわち、本形態の再接続処理を実行することによって、第１装置と第２装置との間で共有された共通鍵MSを用い、終了情報（Finishedメッセージ）をイニシャルベクトルとしたブロック暗号方式（CBCモード等）によって暗号化又は復号を行うことが可能となる。また、本形態の再接続処理は、第１装置及び第２装置側からみればＴＬＳ等において標準化されている処理と同様である。すなわち、本形態の処理を行うに際し、第１装置及び第２装置の仕様を変更する必要はない。【０４５１】
〔変形例等〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、各実施形態では、公開鍵による処理が必要な際に公開鍵証明書を検証し、検証に合格した公開鍵をその処理に用いる構成とした。しかし、公開鍵証明書の検証結果と公開鍵との対応表を記憶部に格納しておき、その対応表を用いて公開鍵が正当であることを確認し、公開鍵を利用する構成であってもよい。【０４５２】
また、上述の各実施形態では、第１装置が暗号リストCSLを用い、第２装置に暗号方式を選択させる構成としたが、そのようなことを行わないプロトコルに本発明を適用してもよい。また、上述の各実施形態では、第１装置と第２装置とが第１乱数と第２乱数をそれぞれ生成してセッションを行うこととしたが、乱数生成を行うことなくセッションを行うプロトコルに本発明を適用する場合には、そのような乱数は不要である。【０４５３】
また、上述の各実施形態では、第１終了情報、第２終了情報、第３終了情報、第４終了情報の順序で、各終了情報の計算及びやり取りを行うこととしたが、終了情報間に依存関係がないのであれば、その他の順序で各終了情報の計算及びやり取りを行うこととしてもよい。【０４５４】
また、各終了情報が第１装置・中継装置間と第２装置・中継装置間とで等しくなるように、各終了情報を生成するためのハンドシェイクメッセージを選択し、終了情報整合処理を実施することなく、第１装置・中継装置間と第２装置・中継装置間とで各終了情報を一致させる構成であってもよい。すなわち、第１装置・中継装置間と第２装置・中継装置間とで相違するハンドシェイクメッセージを終了情報の生成に用いないこととすれば、第１装置・中継装置間と第２装置・中継装置間とで各終了情報を一致させることができる。【０４５５】
また、各装置が秘密情報PMS等からマスター秘密鍵MS及び共通鍵Keyを生成するタイミングや、マスター秘密鍵MSやハンドシェイクメッセージ等から終了情報を生成するタイミングは、上述のものに限定されない。例えば、第１装置が第１終了情報を生成する直前にマスター秘密鍵MS等を生成し、中継装置が第１終了情報を検証する直前にマスター秘密鍵MS等を生成し、第２装置が第２終了情報を検証する直前にマスター秘密鍵MS等を生成してもよい。また、マスター秘密鍵MSを暗号通信用の鍵として利用してもよい。【０４５６】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。【０４５７】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。【０４５８】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。【０４５９】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。【０４６０】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。【０４６１】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【０４６２】
本発明の利用分野としては、例えば、ＴＬＳに従った社内ネットワーク内のクライアント装置と、インターネット上のサーバ装置とが、本発明のゲートウェイ装置を介してＴＬＳ認証を行って共通鍵を共有して暗号通信を行う分野を例示できる。
【図１】
2009060899.tif 000003
【図２】
2009060899.tif 000004
【図３】
2009060899.tif 000005
【図４】
2009060899.tif 000006
【図５】
2009060899.tif 000007
【図６】
2009060899.tif 000008
【図７】
2009060899.tif 000009
【図８】
2009060899.tif 000010
【図９】
2009060899.tif 000011
【図１０】
2009060899.tif 000012
【図１１】
2009060899.tif 000013
【図１２】
2009060899.tif 000014
【図１３】
2009060899.tif 000015
【図１４】
2009060899.tif 000016
【図１５】
2009060899.tif 000017
【図１６】
2009060899.tif 000018
【図１７】
2009060899.tif 000019
【図１８】
2009060899.tif 000020
【図１９】
2009060899.tif 000021
【図２０】
2009060899.tif 000022
【図２１】
2009060899.tif 000023
【図２２】
2009060899.tif 000024
【図２３】
2009060899.tif 000025
【図２４】
2009060899.tif 000026
【図２５】
2009060899.tif 000027
【図２６】
2009060899.tif 000028
【図２７】
2009060899.tif 000029
【図２８】
2009060899.tif 000030
【図２９】
2009060899.tif 000031
【図３０】
2009060899.tif 000032
【図３１】
2009060899.tif 000033
【図３２】
2009060899.tif 000034
【図３３】
2009060899.tif 000035
【図３４】
2009060899.tif 000036
【図３５】
2009060899.tif 000037
【図３６】
2009060899.tif 000038
【図３７】
2009060899.tif 000039
【図３８】
2009060899.tif 000040
【図３９】
2009060899.tif 000041
【図４０】
2009060899.tif 000042
【図４１】
2009060899.tif 000043
【図４２】
2009060899.tif 000044
【図４３】
2009060899.tif 000045
【図４４】
2009060899.tif 000046
【図４５】
2009060899.tif 000047
【図４６】
2009060899.tif 000048
【図４７】
2009060899.tif 000049
【図４８】
2009060899.tif 000050
【図４９】
2009060899.tif 000051
【図５０】
2009060899.tif 000052
【図５１】
2009060899.tif 000053
【図５２】
2009060899.tif 000054
【図５３】
2009060899.tif 000055
【図５４】
2009060899.tif 000056
【図５５】
2009060899.tif 000057
【図５６】
2009060899.tif 000058
【図５７】
2009060899.tif 000059
【図５８】
2009060899.tif 000060
【図５９】
2009060899.tif 000061
【図６０】
2009060899.tif 000062
【図６１】
2009060899.tif 000063
【図６２】
2009060899.tif 000064
【図６３】
2009060899.tif 000065
【図６４】
2009060899.tif 000066
【図６５】
2009060899.tif 000067
【図６６】
2009060899.tif 000068
【図６７】
2009060899.tif 000069
【図６８】
2009060899.tif 000070
【図６９】
2009060899.tif 000071
【国際調査報告】
2009060899.tif 000072
2009060899.tif 000073
2009060899.tif 000074
2009060899.tif 000075