(57)【要約】【課題】サーバ、クライアント間で通信されたデータを検証する通信データの検証装置及びそのコンピュータプログラムを提供することを目的とする。【解決手段】クライアント装置１のＷｅｂブラウザ１０とサーバ装置２のＷｅｂサーバ２０との間でのＳＳＬ通信にかかるセッションキー、暗号化通信データ等の通信データをクライアント装置１のプラグイン１１により所得するとともに、これらのメッセージダイジェストを含むタイムスタンプ要求メッセージをタイムスタンプサーバ装置３のタイムスタンプサーバ３０に送り、通信データのタイムスタンプを取得して通信データとともに記憶することにより、後に通信データの検証を可能とする。【選択図】  図２
2011119952.tif 000002
【特許請求の範囲】
【請求項１】
サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信にかかる通信データを検証する検証装置であって、
前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得部と、
前記通信データ取得部が取得した通信データへのタイムスタンプの付与の要求を前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得部と、
前記タイムスタンプ所得部が取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを記憶する記憶部と、
前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証部と、
を備え、
前記検証部は、
前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信にかかる通信データが正当であるとする
ことを特徴とする通信データの検証装置。
【請求項２】
前記通信データ取得部は前記サーバ及び／又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得部は前記署名データのタイムスタンプを取得し、前記検証部は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に、前記暗号鍵のタイムスタンプを検証することを特徴とする請求項１に記載の通信データの検証装置。
【請求項３】
前記検証部によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元部を備えたことを特徴とする請求項１又は２に記載の通信データの検証装置。
【請求項４】
前記タイムスタンプ取得部は、前記暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶部は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証部は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することを特徴とする請求項１乃至３の何れかに記載の通信データの検証装置。
【請求項５】
前記暗号化通信は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）を用いたもので、前記暗号鍵がセッションキーであることを特徴とする請求項１乃至４の何れかに記載の通信データの検証装置。
【請求項６】
前記タイムスタンプは、前記通信データの検証装置自体の証明書のメッセージダイジェストを含むことを特徴とする請求項１乃至５の何れかに記載の通信データの検証装置。
【請求項７】
サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信にかかる通信データの検証処理をコンピュータ上で実現せしめるコンピュータプログラムであって、
前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得処理と、
前記通信データ取得処理が取得した通信データへのタイムスタンプの付与の要求を、前記サーバ、前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得処理と、
前記タイムスタンプ所得処理により取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを前記コンピュータの記憶部に記憶する記憶処理と、
前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証処理と、
を備え、
前記検証処理は、
前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信における通信データが正当であるとするものである
ことを特徴とするコンピュータプログラム。
【請求項８】
前記通信データ取得処理は前記サーバ及び／又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得処理は前記署名データのタイムスタンプを取得し、前記検証処理は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に前記暗号鍵のタイムスタンプを検証することを特徴とする請求項７に記載のコンピュータプログラム。
【請求項９】
前記検証処理によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元処理を備えたことを特徴とする請求項７に記載のコンピュータプログラム。
【請求項１０】
前記タイムスタンプ取得処理は、暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶処理は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証処理は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することを特徴とする請求項７乃至９の何れかに記載のコンピュータプログラム。
【請求項１１】
前記暗号化通信は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）を用いたもので、前記暗号鍵がセッションキーであることを特徴とする請求項７乃至１０の何れかに記載のコンピュータプログラム。
【請求項１２】
前記タイムスタンプに、前記コンピュータプログラム自体の証明書のメッセージダイジェストを含める処理を備えることを特徴とする請求項７乃至１０の何れかに記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ、クライアント間で通信されたデータを検証する通信データの検証装置及びそのコンピュータプログラムに関する。
【背景技術】
【０００２】
Ｗｅｂベースのオンライン取引では、顧客は、クライアントのＷｅｂブラウザで事業者のＷｅｂサーバ（以下、サーバ）にアクセスし、Ｗｅｂブラウザによりクライアントの画面上に表示された情報に従って、取引内容、顧客情報等の必要情報をクライアントのキーボード等の入力デバイスから入力し、または画面上に表示された選択肢のチェックボックスをクリックすることによって生成し、この必要情報をサーバに送信し、サーバより受信した取引内容等、契約条項の確認をし、これを承諾することを指定した応答をサーバに送信して取引を成立させる。この種のオンライン取引のためのシステムとしては、例えば、特許文献１に開示されるものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１８４４１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記システムでは、顧客の取引行為を立証することは困難である。Ｗｅｂブラウザは、どのような契約条項が表示され、どのような入力応答を行ったかという情報を記録する構成にはなっていないためである。仮に顧客が、取引の際にＷｅｂブラウザの表示する画面をビットマップデータとしてキャプチャーして保存を行ったとしても、そのデータは容易に改変可能である。このため、事業者はそのような画面情報を提供していないと否認することも可能である。
【０００５】
通常、オンライン取引におけるクライアント、サーバ間の通信では、通信の安全を確保するためのプロトコルとしてＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）が使用され、サーバの認証と、通信データの暗号化が行われる。この通信をＳＳＬ通信と称する。但し、その認証情報はＷｅｂブラウザが画面表示を行う直前までが有効であり、顧客が画面をキャプチャーしたときには認証情報の有効性は失われている。このため、ＳＳＬ通信の場合も、取引行為の立証は困難で、フィッシングサイト、偽造サイト等の悪意のある事業者から顧客を保護することは難しい。ＳＳＬ通信での認証に用いられる証明書の有効期間は一般には１年程度で、犯罪行為から露顕するまでの期間、その時効成立までの期間に比べて短い場合が往々にしてある。
【０００６】
そこで、本発明の目的は、サーバ、クライアント間で通信されたデータの検証を可能とし、取引行為の立証に資する認証システム及びそのコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係る通信データの検証装置は、サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信にかかる通信データを検証する装置であって、前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得部と、前記通信データ取得部が取得した通信データへのタイムスタンプの付与の要求を前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得部と、前記タイムスタンプ所得部が取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを記憶する記憶部と、前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証部と、を備え、前記検証部は、前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信にかかる通信データが正当であるとすることを特徴とする。
【０００８】
前記通信データの検証装置において、前記通信データ取得部は前記サーバ及び／又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得部は前記署名データのタイムスタンプを取得し、前記検証部は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に、前記暗号鍵のタイムスタンプを検証することが好ましい。
【０００９】
前記通信データの検証装置において、前記検証部によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元部を備えることも好ましい。
【００１０】
前記通信データの検証装置において、前記タイムスタンプ取得部は、前記暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶部は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証部は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することも好ましい。
【００１１】
前記通信データの検証装置において、前記暗号化通信は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）を用いたもので、前記暗号鍵がセッションキーであることも好ましい。
【００１２】
前記タイムスタンプは、前記通信データの検証装置自体の証明書のメッセージダイジェストを含むことも好ましい。
【００１３】
上記目的を達成するため、本発明に係る通信データの検証処理をコンピュータ上で実現せしめるコンピュータプログラムは、前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得処理と、前記通信データ取得処理が取得した通信データへのタイムスタンプの付与の要求を、前記サーバ、前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得処理と、前記タイムスタンプ所得処理により取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを前記コンピュータの記憶部に記憶する記憶処理と、前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証処理と、を備え、前記検証処理は、前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信における通信データが正当であるとするものであることを特徴とする。
【００１４】
前記コンピュータプログラムにおいて、前記通信データ取得処理は前記サーバ及び／又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得処理は前記署名データのタイムスタンプを取得し、前記検証処理は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に前記暗号鍵のタイムスタンプを検証することが好ましい。
【００１５】
前記コンピュータプログラムにおいて、前記検証処理によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元処理を備えることも好ましい。
【００１６】
前記コンピュータプログラムにおいて、前記タイムスタンプ取得処理は、暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶処理は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証処理は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することも好ましい。
【００１７】
前記コンピュータプログラムにおいて、前記暗号化通信は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）を用いたもので、前記暗号鍵がセッションキーであることも好ましい。
【００１８】
前記コンピュータプログラムにおいて、前記タイムスタンプに、前記コンピュータプログラム自体の証明書のメッセージダイジェストを含める処理を備えることも好ましい。
【発明の効果】
【００１９】
本発明によれば、サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信、例えば、ＳＳＬ通信にかかる通信データを検証するために、暗号鍵としてのセッションキー、このセッションキーで暗号化された暗号化通信データに、クライアントとは別途も受けられたタイムスタンプサーバによるタイムスタンプを付与せしめ、これにより、通信データに対する電子公証による第三者認証が可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態に係る通信データの検証装置の概要を示したブロック図。
【図２】本発明の実施形態に係る通信データの検証装置の動作説明のためのシーケンス図。
【図３】本発明の実施形態に係る通信データの検証装置の動作説明のためのフローチャート。
【図４】本発明の他の実施形態に係る通信データの検証装置のメッセージダイジェストの生成方法を説明する概念図。
【発明を実施するための形態】
【００２１】
以下、本発明に係る通信データの検証システム及びそのコンピュータプログラムを実施するための最良の形態について図面を参照して説明する。
【００２２】
図１に示すように、本実施形態に係る通信データの検証装置１００は、クライアント装置１により実現される。クライアント装置１は、サーバ装置２、タイムスタンプサーバ装置３にネットワークを介して通信可能となっている。クライアント装置1はパーソナルコンピュータ又はサーバコンピュータで、サーバ装置２、タイムスタンプサーバ３装置はサーバコンピュータであり、これらのコンピュータは図示しない制御装置、記憶装置、入力装置、表示装置及び通信装置を備え、それぞれの通信装置はネットワークに接続され、インターネット４を介して互いに通信可能となっている。
【００２３】
サーバ装置２は、ソフトウェアとしてのサーバであるＷｅｂサーバ２０をその記憶装置に格納し、これを実行することにより、所定のＷｅｂページ、例えば、オンライン取引のためのＷｅｂページをクライアント装置１に提供する。
【００２４】
クライアント装置１は、ソフトウェアとしてのクライアントであるＷｅｂブラウザ１０をその記憶装置に格納し、これを実行することにより、Ｗｅｂサーバ２０と通信し、表示装置を用いてＷｅｂページを画面表示する。Ｗｅｂブラウザ１０とＷｅｂサーバ２０との間の通信では、通信の安全を確保するためのプロトコルとしてＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）が使用され、クライアント、サーバの認証と、通信データの暗号化が行われる。通信データの検証装置１００は、このようなサーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信、ここではＳＳＬ通信にかかる通信データを検証するために、クライアント、サーバそれぞれの署名データ、暗号鍵としてのセッションキー、このセッションキーで暗号化された暗号化通信データに、クライアント装置１とは別途も受けられたタイムスタンプサーバ装置３によるタイムスタンプを付与せしめ、これにより、通信データに対する電子公証による第三者認証が可能とするものである。
【００２５】
クライアント装置１は、Ｗｅｂブラウザ１０と連携するソフトウェアであるプラグイン１１を備えている。プラグイン１１は、Ｗｅｂブラウザ１０、Ｗｅｂサーバ２０間の通信データを取得し、タイムスタンプサーバ装置２にこれら通信データのタイムスタンプを発行せしめ、これらタイムスタンプと通信データとを記憶し、後にこれらタイムスタンプに基づいて通信データを検証するためのものである。
【００２６】
プラグイン１１は、Ｗｅｂブラウザ１０からＳＳＬ通信にかかる通信データを取得する通信データ取得部１２を備える。通信データ取得部１２はＷｅｂブラウザ１０から通信データを取得し、これを通信データ取得部１２と連携する後述する記憶部の処理によりクライアント装置１の記憶装置の適当な記憶領域に格納せしめる。また、プラグイン１１にはコードサイニング証明書が対応付けられている。コードサイニング証明書は、後述する公開鍵証明書と同様に第三者認証機関によって発行されたもので、プラグイン１１が正規のものであることを保証するものであり、クライアント装置１の所定の記憶領域に保存される。
【００２７】
プラグイン１１は、通信データ取得部１２が、クライアント、サーバそれぞれの署名データ、暗号鍵としてのセッションキー、このセッションキーで暗号化された暗号化通信データを取得すると、これらの通信データへのタイムスタンプの付与の要求をタイムスタンプサーバ装置３に送り、タイムスタンプサーバ装置３から当該通信データのタイムスタンプを取得するタイムスタンプ取得部１３を備える。タイムスタンプ取得部１３は、通信データ取得部１２によるこれらの通信データの取得に応答して、上述の記憶領域から通信データを読み取り、所定のハッシュアルゴリズムを用いて通信データのメッセージダイジェストを生成し、メッセージダイジェストを格納した所定フォーマットのタイムスタンプ要求メッセージをタイムスタンプサーバ装置３に送信し、通信データへのタイムスタンプの付与を要求する。タイムスタンプ取得部１３は、この要求に応答したタイムスタンプサーバ３からのタイムスタンプを受信する。タイムスタンプの発行プロトコルとしては、ＲＦＣ３１６１に準拠したものを用いることができる。タイムスタンプ取得部１３は、受信したタイムスタンプを後述する記憶部の処理により適当な記憶領域に格納せしめる。
【００２８】
プラグイン１１は、タイムスタンプとタイムスタンプが付与された通信データとを記憶するための記憶部１４を備える。記憶部１４は、通信データ取得部１２、タイムスタンプ取得部１３と連携し、通信データ及びタイムスタンプをクライアント装置１の記憶装置の適当な記憶領域に格納する。
【００２９】
プラグイン１１は、記憶された各通信データとそのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、ＳＳＬ通信にかかる通信データの正当性を検証する検証部１５を備える。
【００３０】
プラグイン１１は、検証部１５による検証によって正当であるとされたＳＳＬ通信にかかるセッションキーを用いて、そのＳＳＬ通信にかかる暗号化通信データを平文に復号し、クライアント装置１、サーバ装置２間での通信内容を復元する復元部１６を備える。
【００３１】
タイムスタンプサーバ装置３は、ソフトウェアとしてのタイムスタンプサーバ３０をその記憶装置に格納し、これを実行し、クライアント装置１のタイムスタンプ要求メッセージに応答してタイムスタンプを発行し、クライアント装置１に送信する。タイムスタンプサーバ装置３は、図示しないが、時刻を時刻監査局の時刻監査サーバ装置と所定のネットワークを介して接続され、定期的に自己の計時する時刻データを時刻監査サーバ装置送り、時刻監査局の計時する高精度の時刻に基づいて自己の時刻の監査を受け、高精度の時刻を保証する。この時刻精度保証のためのこの種の構成については、例えば、特開２００７−１８１０９３号公報に開示されるようなもので実現される。
【００３２】
タイムスタンプサーバ装置３０は、タイムスタンプ要求メッセージに含まれる通信データのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとしてクライアント装置１に送信する。
【００３３】
後に検証部１５により、タイムスタンプトークンのメッセージダイジェストと、署名データをタイムスタンプサーバ装置３の公開鍵で復号したものと、を比較することによりタイムスタンプトークンが正規に生成されたものか否か検証できる。これにより、タイムスタンプトークンに含まれる通信データのメッセージダイジェストについてもタイムスタンプトークの生成時のものであるか否か検証でき、間接的に通信データの検証が可能となる。
【００３４】
タイムスタンプサーバ装置３の公開鍵を含む公開鍵証明書は、タイムスタンプトークンとは別途クライアント装置１に送信してもよく、また、タイムスタンプサーバ装置３の公開鍵を含む公開鍵証明書をタイムスタンプトークンに含むようにしてもよく、タイムスタンプトークンの検証のための総ての証明書、これら証明書の発行局の最新の証明書失効行リストを含むようにしてもよい。ここで、タイムスタンプサーバ装置３の秘密鍵のビット長を、例えば２０４８ビットとして現在ＳＳＬ通信で利用される一般的な証明書の秘密鍵のビット長の５１２ビットよりも長いものとしてあり、タイムスタンプの有効期間を、例えば、９年と、ＳＳＬ通信で利用される一般的な証明書の有効期間の１年にくらべて十分長いものとしてある。なお、コンピュータの処理能力の向上に応じてＳＳＬ通信で利用される一般的な証明書の秘密鍵のビット長も延長されることとなるが、その時点においてタイムスタンプサーバ装置３の秘密鍵のビット長を、ＳＳＬ通信で利用される一般的な証明書のそれよりも長いものとして適宜に定めることにより、より長期の有効期間のタイムスタンプを発行するようにすればよい。
【００３５】
次に検証装置１００のＳＳＬ通信時の動作について、図２のシーケンス図を参照しながら説明する。ＳＳＬ通信が開始されるとＷｅｂサーバ２０とＷｅｂブラウザ１０との間で公開鍵証明書の交換が行われる（ステップＳ２０１〜Ｓ２０８）。
【００３６】
先ず、Ｗｅｂサーバ２０の公開鍵証明書がＷｅｂサーバ２０の秘密鍵で署名されてＷｅｂブラウザ１０に送信される（ステップＳ２０１）。プラグイン１１のデータ取得部１２は、Ｗｅｂブラウザ１０からこの通信データを受けて所定の記憶領域に記憶する（ステップＳ２０２）。Ｗｅｂブラウザ１０は、公開鍵証明書と署名とに基づいてＷｅｂサーバ２０が正規のものか検証する（ステップＳ２０３）。プラグイン１１のタイムスタンプ取得部１３は、通信データに含まれる署名データのメッセージダイジェストを生成し、これを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ３０に送信する（ステップＳ２０４）。
【００３７】
タイムスタンプサーバ３０は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれる署名データのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行し（ステップＳ２０５）、このタイムスタンプをクライアント装置１に送信する（ステップＳ２０６）。
【００３８】
プラグイン１１のタイムスタンプ取得部１３は、タイムスタンプサーバ３０よりのタイムスタンプを受けて所定の記憶領域に記憶する（ステップＳ２０７）。プラグイン１１の記憶部１４は、図示しないが、タイムスタンプとタイムスタンプを付与された通信データとを対応付けるテーブルを備え、一連のＳＳＬ通信、通信データ、タイムスタンプそれぞれの識別子、記憶領域をテーブル上で対応付けて記憶する。記憶部１４は、以下に述べるタイムスタンプの記憶処理においても同様の処理により、通信データ、タイムスタンプそれぞれの識別子、記憶領域をテーブル上で対応付けて記憶する。
【００３９】
また、プラグイン１１は、通信データに含まれる署名データのタイムスタンプを取得するとともに、自己のコードサイニング証明書についても同様にしてタイムスタンプサーバ３０よりタイムスタンプを取得し、クライアント装置１の所定の記憶領域に記憶する。例えば、署名データのタイムスタンプ要求メッセージを生成すると、自己のコードサイニング証明書についてもメッセージダイジェストを生成し、これを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ３０に送信する。タイムスタンプサーバ３０は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれるコードサイニング証明書のメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行する。このコードサイニング証明書のタイムスタンプを受け取ったプラグイン１１は、これを上述の記憶領域に格納する。プラグイン１１は、Ｗｅｂサーバ２０の署名データのタイムスタンプを受け取ったときには、コードサイニング証明書のタイムスタンプとの対応付けを取って記憶領域に格納することとなる。これによって、後に正規のプラグイン１１によって署名データのタイムスタンプが取得されたことの検証が可能となる。
【００４０】
Ｗｅｂブラウザ１０は、Ｗｅｂサーバ２０が正規のものであることを確認するとアクセスを受諾し、クライアントの公開鍵証明書をクライアントの秘密鍵で署名してＷｅｂサーバ２０に送信する（ステップＳ２０８）。
【００４１】
Ｗｅｂサーバ２０は、公開鍵証明書と署名とに基づいてＷｅｂブラウザ１０が正規のものか検証し、正規なものであればアクセスを受諾する（ステップＳ２０９）。サーバ、クライアントは、互いの検証を終えることによりセッションキーの生成と交換を行う（ステップＳ２１０）。ここで、Ｗｅｂブラウザ１０が、Ｗｅｂサーバ２０の公開鍵証明書に含まれる公開鍵を使ってプリマスターシークレットを暗号化してＷｅｂサーバ２０に送信し、Ｗｅｂブラウザ１０、Ｗｅｂサーバ２０においてプリマスターシークレットに基づいてセッションキーが生成され、Ｗｅｂブラウザ１０、Ｗｅｂサーバ２０間での鍵の交換が成立する。
【００４２】
プラグイン１１のデータ取得部１２は、ステップＳ２１０で生成された先のセッションキーを所定の記憶領域に記憶する（ステップＳ２１１）。プラグイン１１のタイムスタンプ取得部１３は、セッションキーのメッセージダイジェストを生成し、これを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ３０に送信する（ステップＳ２１２）。
【００４３】
タイムスタンプサーバ３０は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれるセッションキーのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いたハッシュ演算を行い、このタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行し（ステップＳ２１３）、このタイムスタンプをクライアント装置１に送信する（ステップＳ２１４）。
【００４４】
プラグイン１１のタイムスタンプ取得部１３は、タイムスタンプサーバ３０よりのタイムスタンプを受けて所定の記憶領域に記憶する（ステップＳ２１５）。
【００４５】
Ｗｅｂサーバ２０は、Ｗｅｂブラウザ１０により画面表示させる画面データを先のセッションキーを用いて暗号化して暗号化通信データを生成し、Ｗｅｂブラウザ１０に送信する（ステップＳ２１６）。ここで、例えば、目的の取引のフォームを表示する画面データが送信される。
【００４６】
プラグイン１１のデータ取得部１２は、画面データの暗号化通信データを所定の記憶領域に記憶する（ステップＳ２１７）。Ｗｅｂブラウザ１０は、先のセッションキーを用いて暗号化通信データを復号して画面表示を行う（ステップＳ１８）。
【００４７】
Ｗｅｂブラウザ１０は、Ｗｅｂサーバ２０からの画面データに基づいてＷｅｂ画面を表示している状態で、ユーザーがクライアント装置１の図示しないキーボード等の入力装置を用いて入力したデータ、すなわち、ユーザー入力データを受け付ける（ステップＳ２１９）。ここで、例えば、ユーザーは目的の取引のフォームを埋める決済情報を入力する。Ｗｅｂブラウザ１０は、ユーザーが図示しない送信ボタンをクリックするなどしてユーザー入力データの送信の指令を受けると、ユーザー入力データを先のセッションキーによって暗号化し、ユーザー入力データの暗号化通信データを生成する。
【００４８】
プラグイン１１のデータ取得部１２は、Ｗｅｂブラウザ１０から暗号化されたユーザー入力データを受けて所定の記憶領域に記憶する（ステップＳ２２０）。
【００４９】
Ｗｅｂブラウザ１０は、ユーザー入力データの暗号化通信データをＷｅｂサーバ２０に送信する（ステップＳ２２１）。Ｗｅｂサーバ２０は、これに応答する画面データを先のセッションキーで暗号化した暗号化通信データをＷｅｂブラウザ１０に送信する（ステップＳ２２２）。
【００５０】
Ｗｅｂブラウザ１０は、Ｗｅｂサーバ２０からの画面データの暗号化通信データを先のセッションキーを用いて復号化してＷｅｂ画面を表示する（ステップＳ２２３）。ここでは、例えば、決済確認のためのＷｅｂ画面が表示される。詳述しないが、Ｗｅｂブラウザ１０からこれに応答することにより一連のＳＳＬ通信が終了する。
【００５１】
プラグイン１１のデータ取得部１２は、Ｗｅｂブラウザ１０から画面データの暗号化通信データ、これに応答する暗号通信データを記憶領域に記憶する（ステップＳ２２４）。一連のＳＳＬ通信が終了すると、プラグイン１１のタイムスタンプ取得部１３は、この一連のＳＳＬ通信においてＷｅｂサーバ２０から送信された最初の暗号化通信データから最後の暗号化通信データまでの暗号化通信データを連結し、この連結された暗号化通信データのメッセージダイジェストを生成し、このメッセージダイジェストを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ３０に送信する（ステップＳ２２５）。
【００５２】
タイムスタンプサーバ３０は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれる画面データの暗号化通信データのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行し（ステップＳ２２６）、このタイムスタンプをクライアント装置１に送信する（ステップＳ２２７）。
【００５３】
プラグイン１１のタイムスタンプ取得部１３は、タイムスタンプサーバ３０よりのタイムスタンプを受けて所定の記憶領域に記憶する（ステップＳ２２８）。
【００５４】
以上のように検証装置１００では、サーバの署名、セッションキー、暗号化通信データにタイムスタンプが施すことにより、一連のＳＳＬ通信における通信データに対する電子公証による第三者認証が可能となる。次にその検証動作について、図３のフローチャートを参照しながら説明する。
【００５５】
プラグイン１１の検証部１５は、記憶部１４のテーブルから検証目的の一連のＳＳＬ通信を特定し、先ずその署名データのタイムスタンプを検証する（ステップＳ３０１）。ここで、検証部１５は、目的のタイムスタンプに含まれるタイムスタンプサーバ３０の公開鍵証明書が正規のものか否か、公開鍵証明書の発行局の公開鍵を用いて検証する。発行局の公開鍵は、予めクライアント装置１の記憶装置の所定の記憶領域にキーストアファイルとして記憶しておくこととするが、タイムスタンプトークンに含めることとするようにしてもよいし、検証の際に発行局にアクセスして公開鍵を取得するようにしてもよい。検証部１５は、次に目的のタイムスタンプのタイムスタンプトークンのメッセージダイジェストを生成し、タイムスタンプサーバ３０の公開鍵によってタイムスタンプの署名を復号して得たメッセージダイジェストと比較し、一致していればタイムスタンプを正規なものとする。
【００５６】
検証部１５は、タイムスタンプが正規のものであることが確認されると（ステップＳ３０２：Ｙｅｓ）、次に署名データの改竄の有無を検証する（ステップＳ３０３）。検証部１５は、タイムスタンプトークンに含まれる署名データのメッセージダイジェストと、記憶部１４のテーブルに従って読み出した署名データから生成したメッセージダイジェストとを比較し、一致していれば署名データの改竄がないとする（ステップＳ３０４：Ｙｅｓ）。ここで改竄が無い場合、検証部１５は、署名データのタイムスタンプの時刻を確認する（ステップＳ３０５）。
【００５７】
次に検証部１５は、検証目的の一連のＳＳＬ通信のセッションキーのタイムスタンプを検証する（ステップＳ３０６）。タイムスタンプが正規なものであることが確認されると（ステップＳ３０７：Ｙｅｓ）、セッションキーの改竄の有無を確認する（ステップＳ３０８）。タイムスタンプトークンに含まれるセッションキーのメッセージダイジェストと、記憶部１４のテーブルに従って読み出したセッションキーから生成したメッセージダイジェストとを比較し、一致していれば署名データの改竄がないとする（ステップＳ３０９：Ｙｅｓ）。ここで改竄が無い場合、検証部１５は、セッションキーのタイムスタンプの時刻を確認し、署名データのタイムスタンプの時刻との連続性を確認する（ステップＳ３１０）。
【００５８】
検証部１５は、セッションキーのタイムスタンプの時刻と署名データのタイムスタンプの時刻とが、前者が後者に続くときに連続性があるとし、連続性があると確認した（ステップＳ３１１：Ｙｅｓ）場合、検証部１５は、暗号化通信データのタイムスタンプを検証する（ステップＳ３１２）。タイムスタンプが正規なものであることが確認されると（ステップＳ３１３：Ｙｅｓ）、暗号化通信データの改竄の有無を確認する（ステップＳ３１４）。タイムスタンプトークンに含まれる暗号化通信データのメッセージダイジェストと、記憶部１４のテーブルに従って読み出した暗号化通信データから生成したメッセージダイジェストとを比較し、一致していれば暗号化通信データの改竄がないとする（ステップＳ３１５：Ｙｅｓ）。ここで改竄が無い場合、検証部１５は、暗号化通信データのタイムスタンプの時刻を確認し、セッションキーのタイムスタンプの時刻との連続性を確認する（ステップＳ３１６）。
【００５９】
検証部１５は、暗号化通信データのタイムスタンプの時刻とセッションキーのタイムスタンプの時刻との連続性については、暗号化通信データのタイムスタンプの時刻がセッションキーのタイムスタンプの時刻の後の所定期間内であれば、連続性があるとする。所定期間は一連のＳＳＬ通信とみなせる適当な期間で、例えば、１５分等と適宜に設定する。ここで、連続性があると確認した確認した（ステップＳ３１７：Ｙｅｓ）場合、検証部１５は一連のＳＳＬ通信の通信内容が正当なものであり、クライアント装置１の記憶装置に安全に保管されているとして検証動作を終了する。
【００６０】
なお、検証部１５は、ステップＳ３０２、Ｓ３０７、Ｓ３１３でタイムスタンプが正規のものでないとされた場合、ステップＳ３０４、Ｓ３０９、Ｓ３１５で改竄があるとされた場合、ステップＳ３１１、Ｓ３１７で連続性がないとされた場合は、一連のＳＳＬ通信の通信内容が正当なものでなくクライアント装置１の記憶装置に安全に保管されていないとして検証動作を終了する。
【００６１】
プラグイン１１の復元部１６は、一連のＳＳＬ通信の通信内容がクライアント装置１の記憶装置に安全に保管されているとの検証結果を受け、記憶部１４のテーブルに従って暗号化通信データを記憶領域から読み出し、検証されたセッションキーを用いて暗号化通信データを平文に復号して、Ｗｅｂブラウザ１０に元の画面表示を行わせしめる。
以上のように検証装置１００では、タイムスタンプが施されて第三者認証されたサーバの署名、セッションキー、各暗号化通信データを検証し、一連のＳＳＬ通信における通信データを復元することが可能となる。
【００６２】
なお、この発明は、上記実施の形態に限定されず、種々の変形及び応用が可能である。例えば、クライアント装置１側で、タイムスタンプサーバ装置３と通信し、サーバの署名、セッションキー、暗号化通信データのタイムスタンプを取得するような構成について述べたが、Ｗｅｂサーバ装置２側に、タイムスタンプサーバ装置３と通信し、サーバの署名、クライアントの署名、セッションキー、各暗号化通信データのタイムスタンプを取得するような構成をとることも可能で、この場合、プラグイン１１に相当する構成をＷｅｂサーバ２０と連携するように設けることで実現できる。
【００６３】
また、上記実施形態では、サーバの署名、セッションキー、暗号化通信データのそれぞれのタイムスタンプに含まれるメッセージダイジェストは互いに独立したものとしたが、これらメッセージダイジェストを順次連結してそれをタイムスタンプに含めるようにしてもよい。そのような実施形態では、例えば、プラグイン１１のタイムスタンプ取得部１３は、タイムスタンプ要求メッセージを生成するときに、次のように動作する。署名データ、セッションキー、暗号化通信データをそれぞれ上述の記憶領域を成すデータベースのレコードとみて、ｎ番目のレコードをハッシュ演算により符合化したハッシュ値をＨｎとする（Ｎ番目のデータ「ａｎ」に対するハッシュ演算結果を「Ｈｎ=Ｈａｓｈ（ａｎ）」として示す）。ｎ番目のレコードの末尾フィールドにレコード順のハッシュ値を複合したハッシュ値である累計ハッシュ値（「ｔｂＨ」と呼称する）を追加する。これが、図４（ａ）の概念図に示したものである。ｎ番目のレコードが挿入された場合の累計ハッシュ値ｔｂＨｎは、ｔｂＨ ｎ ＝ Ｈａｓｈ（Ｈｎ＋ｔｂＨｎ−１）により求める。即ち、累計ハッシュ値ｔｂＨは、ｎ番目のレコードのハッシュ値とｎ−１番目までの累計ハッシュ値の合計について、ハッシュ値を求めたものである。１番目のレコードの場合、それ以前のレコードが存在しないため、ｔｂＨｎ−１に相当するｔｂＨ０には、乱数値または固定数値を代入する。この累計ハッシュ値ｔｂＨによれば、レコードの生成順序が確定される。署名データ、セッションキー、暗号化通信データが得られた時点の累計ハッシュ値をそれぞれ署名データ、セッションキー、暗号化通信データのタイムスタンプに含めるメッセージダイジェストとする。これにより、署名データ、セッションキー、暗号化通信データのタイムスタンプでは、署名データ、セッションキー、暗号化通信データの順序性が強固に確定されることになり、時刻の他にこの順序性を検証することで上記の連続性の検証が可能になる。
【００６４】
さらに、累計ハッシュ値の初期値である累計ハッシュ値ｔｂＨ０として、プラグイン１１のコードサイニング証明書のハッシュ値（メッセージダイジェスト）を用いることにより、サーバの署名データとコードサイニング証明書とを累計ハッシュ値の形で結合するようにしてもよい。これにより、プラグイン１１のコードサイニング証明書のハッシュ値、言い換えればメッセージダイジェストと改竄不能に連鎖した署名データ、セッションキー、暗号化通信データのそれぞれのタイムスタンプが実現される。これらタイムスタンプを検証することにより、正規のプラグイン１１によって署名データ、セッションキー、暗号化通信データのタイムスタンプが取得されたことの証明が可能となる。また、図４（ｂ）に示すように累計ハッシュ値の初期値ｔｂＨ０を固定値としてコードサイニング証明書を１番目のレコードとして、コードサイニング証明書のハッシュ値と固定値とを結合した累計ハッシュ値をメッセージダイジェストとしてタイムスタンプを取得するようにしても同様の効果を得る。
【００６５】
また、サーバ公開鍵証明書の検証の際に、ルート認証局の公開鍵証明書等のルート認証情報を用いるが、これについても署名データのタイムスタンプを得るのと同時にタイムスタンプを得るようにしてもよい。プラグイン１１が、例えば、「Ｗｉｎｄｏｗｓ  Ｋｅｙｓｔｏｒｅ」や「Ｊａｖａ  Ｋｅｙｓｔｏｒｅ」等のルート認証情報を含むファイルを記憶するとともにそのタイムスタンプを取得するようにしてもよい。（Ｗｉｎｄｏｗｓ及びＪａｖａは登録商標です。）
【００６６】
また、上述の検証装置１００では、ＳＳＬ通信の開始から終了までの期間に自動的に通信データを保全し、タイムスタンプを取得するような構成としたが、Ｗｅｂブラウザ１０に、通信データの保全の開始、停止を選択するユーザーインターフェース、例えば、ボタンを表示させ、ボタンの操作に応じて、通信データの保全を開始し、タイムスタンプを取得するようにプラグイン１１を構成しても良い。この場合も、サーバの署名、セッションキー及びこれらのタイムスタンプは自動的に保全するようにする。また、送信、受信する都度個々の通信データにタイムスタンプを施すようにしてもよい。
【００６７】
また、ユーザーインターフェースにはタイムスタンプの有効期間を指定する構成を設け、タイムスタンプ取得部１３はその指定に応じたタイムスタンプ要求メッセージをタイムスタンプサーバ３０に送信するようにし、タイムスタンプサーバ３０はこれに応じた有効期間のタイムスタンプを発行するようにしても良い。
【００６８】
ＳＳＬ通信等の暗号化通信におけるセッションキー（一連の暗号化通信で使用される使い捨ての暗号鍵）を不正に保存しておくことで、実際の暗号化通信の後に不正に暗号化通信データを生成することが技術的に可能であるが、本発明のように、暗号化通信データを複製し記憶する際に、セッションキー及び暗号化通信データに対してタイムスタンプを取得することにより、不正にセッションキーを保持し、事後に暗号化通信データを偽造したという疑いを排除することができる。これは、正規の暗号化通信が行われたことを事後証明する際にタイムスタンプサーバによる第三者認証が有効となるからである。本発明では、セッションキーの交換が行われる際にセッションキーを複製して記憶し、そのタイムスタンプを取得する。このようにセッションキーが生成され、又は切り替わるタイミングで第三者認証が行われることによって、不正に保存されたセッションキーで暗号化通信データが偽造されることを排除する。
【符号の説明】
【００６９】
１００    通信データの検証装置
１        クライアント装置
１０      Ｗｅｂブラウザ
１１      プラグイン
１２      データ取得部
１３      タイムスタンプ取得部
１４      記憶部
１５      検証部
１６      復元部
２        サーバ装置
２０      Ｗｅｂサーバ
３        タイムスタンプサーバ装置
３０      タイムスタンプサーバ
【図１】
2011119952.tif 000003
【図２】
2011119952.tif 000004
【図３】
2011119952.tif 000005
【図４】
2011119952.tif 000006