説明

通信データの検証装置及びそのコンピュータプログラム

【課題】サーバ、クライアント間で通信されたデータを検証する通信データの検証装置及びそのコンピュータプログラムを提供することを目的とする。
【解決手段】クライアント装置1のWebブラウザ10とサーバ装置2のWebサーバ20との間でのSSL通信にかかるセッションキー、暗号化通信データ等の通信データをクライアント装置1のプラグイン11により所得するとともに、これらのメッセージダイジェストを含むタイムスタンプ要求メッセージをタイムスタンプサーバ装置3のタイムスタンプサーバ30に送り、通信データのタイムスタンプを取得して通信データとともに記憶することにより、後に通信データの検証を可能とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバ、クライアント間で通信されたデータを検証する通信データの検証装置及びそのコンピュータプログラムに関する。
【背景技術】
【0002】
Webベースのオンライン取引では、顧客は、クライアントのWebブラウザで事業者のWebサーバ(以下、サーバ)にアクセスし、Webブラウザによりクライアントの画面上に表示された情報に従って、取引内容、顧客情報等の必要情報をクライアントのキーボード等の入力デバイスから入力し、または画面上に表示された選択肢のチェックボックスをクリックすることによって生成し、この必要情報をサーバに送信し、サーバより受信した取引内容等、契約条項の確認をし、これを承諾することを指定した応答をサーバに送信して取引を成立させる。この種のオンライン取引のためのシステムとしては、例えば、特許文献1に開示されるものがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−184413号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記システムでは、顧客の取引行為を立証することは困難である。Webブラウザは、どのような契約条項が表示され、どのような入力応答を行ったかという情報を記録する構成にはなっていないためである。仮に顧客が、取引の際にWebブラウザの表示する画面をビットマップデータとしてキャプチャーして保存を行ったとしても、そのデータは容易に改変可能である。このため、事業者はそのような画面情報を提供していないと否認することも可能である。
【0005】
通常、オンライン取引におけるクライアント、サーバ間の通信では、通信の安全を確保するためのプロトコルとしてSSL(Secure Sockets Layer)が使用され、サーバの認証と、通信データの暗号化が行われる。この通信をSSL通信と称する。但し、その認証情報はWebブラウザが画面表示を行う直前までが有効であり、顧客が画面をキャプチャーしたときには認証情報の有効性は失われている。このため、SSL通信の場合も、取引行為の立証は困難で、フィッシングサイト、偽造サイト等の悪意のある事業者から顧客を保護することは難しい。SSL通信での認証に用いられる証明書の有効期間は一般には1年程度で、犯罪行為から露顕するまでの期間、その時効成立までの期間に比べて短い場合が往々にしてある。
【0006】
そこで、本発明の目的は、サーバ、クライアント間で通信されたデータの検証を可能とし、取引行為の立証に資する認証システム及びそのコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本発明に係る通信データの検証装置は、サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信にかかる通信データを検証する装置であって、前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得部と、前記通信データ取得部が取得した通信データへのタイムスタンプの付与の要求を前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得部と、前記タイムスタンプ所得部が取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを記憶する記憶部と、前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証部と、を備え、前記検証部は、前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信にかかる通信データが正当であるとすることを特徴とする。
【0008】
前記通信データの検証装置において、前記通信データ取得部は前記サーバ及び/又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得部は前記署名データのタイムスタンプを取得し、前記検証部は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に、前記暗号鍵のタイムスタンプを検証することが好ましい。
【0009】
前記通信データの検証装置において、前記検証部によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元部を備えることも好ましい。
【0010】
前記通信データの検証装置において、前記タイムスタンプ取得部は、前記暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶部は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証部は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することも好ましい。
【0011】
前記通信データの検証装置において、前記暗号化通信は、SSL(Secure Sockets Layer)を用いたもので、前記暗号鍵がセッションキーであることも好ましい。
【0012】
前記タイムスタンプは、前記通信データの検証装置自体の証明書のメッセージダイジェストを含むことも好ましい。
【0013】
上記目的を達成するため、本発明に係る通信データの検証処理をコンピュータ上で実現せしめるコンピュータプログラムは、前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得処理と、前記通信データ取得処理が取得した通信データへのタイムスタンプの付与の要求を、前記サーバ、前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得処理と、前記タイムスタンプ所得処理により取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを前記コンピュータの記憶部に記憶する記憶処理と、前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証処理と、を備え、前記検証処理は、前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信における通信データが正当であるとするものであることを特徴とする。
【0014】
前記コンピュータプログラムにおいて、前記通信データ取得処理は前記サーバ及び/又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得処理は前記署名データのタイムスタンプを取得し、前記検証処理は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に前記暗号鍵のタイムスタンプを検証することが好ましい。
【0015】
前記コンピュータプログラムにおいて、前記検証処理によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元処理を備えることも好ましい。
【0016】
前記コンピュータプログラムにおいて、前記タイムスタンプ取得処理は、暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶処理は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証処理は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することも好ましい。
【0017】
前記コンピュータプログラムにおいて、前記暗号化通信は、SSL(Secure Sockets Layer)を用いたもので、前記暗号鍵がセッションキーであることも好ましい。
【0018】
前記コンピュータプログラムにおいて、前記タイムスタンプに、前記コンピュータプログラム自体の証明書のメッセージダイジェストを含める処理を備えることも好ましい。
【発明の効果】
【0019】
本発明によれば、サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信、例えば、SSL通信にかかる通信データを検証するために、暗号鍵としてのセッションキー、このセッションキーで暗号化された暗号化通信データに、クライアントとは別途も受けられたタイムスタンプサーバによるタイムスタンプを付与せしめ、これにより、通信データに対する電子公証による第三者認証が可能となる。
【図面の簡単な説明】
【0020】
【図1】本発明の実施形態に係る通信データの検証装置の概要を示したブロック図。
【図2】本発明の実施形態に係る通信データの検証装置の動作説明のためのシーケンス図。
【図3】本発明の実施形態に係る通信データの検証装置の動作説明のためのフローチャート。
【図4】本発明の他の実施形態に係る通信データの検証装置のメッセージダイジェストの生成方法を説明する概念図。
【発明を実施するための形態】
【0021】
以下、本発明に係る通信データの検証システム及びそのコンピュータプログラムを実施するための最良の形態について図面を参照して説明する。
【0022】
図1に示すように、本実施形態に係る通信データの検証装置100は、クライアント装置1により実現される。クライアント装置1は、サーバ装置2、タイムスタンプサーバ装置3にネットワークを介して通信可能となっている。クライアント装置1はパーソナルコンピュータ又はサーバコンピュータで、サーバ装置2、タイムスタンプサーバ3装置はサーバコンピュータであり、これらのコンピュータは図示しない制御装置、記憶装置、入力装置、表示装置及び通信装置を備え、それぞれの通信装置はネットワークに接続され、インターネット4を介して互いに通信可能となっている。
【0023】
サーバ装置2は、ソフトウェアとしてのサーバであるWebサーバ20をその記憶装置に格納し、これを実行することにより、所定のWebページ、例えば、オンライン取引のためのWebページをクライアント装置1に提供する。
【0024】
クライアント装置1は、ソフトウェアとしてのクライアントであるWebブラウザ10をその記憶装置に格納し、これを実行することにより、Webサーバ20と通信し、表示装置を用いてWebページを画面表示する。Webブラウザ10とWebサーバ20との間の通信では、通信の安全を確保するためのプロトコルとしてSSL(Secure Sockets Layer)が使用され、クライアント、サーバの認証と、通信データの暗号化が行われる。通信データの検証装置100は、このようなサーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信、ここではSSL通信にかかる通信データを検証するために、クライアント、サーバそれぞれの署名データ、暗号鍵としてのセッションキー、このセッションキーで暗号化された暗号化通信データに、クライアント装置1とは別途も受けられたタイムスタンプサーバ装置3によるタイムスタンプを付与せしめ、これにより、通信データに対する電子公証による第三者認証が可能とするものである。
【0025】
クライアント装置1は、Webブラウザ10と連携するソフトウェアであるプラグイン11を備えている。プラグイン11は、Webブラウザ10、Webサーバ20間の通信データを取得し、タイムスタンプサーバ装置2にこれら通信データのタイムスタンプを発行せしめ、これらタイムスタンプと通信データとを記憶し、後にこれらタイムスタンプに基づいて通信データを検証するためのものである。
【0026】
プラグイン11は、Webブラウザ10からSSL通信にかかる通信データを取得する通信データ取得部12を備える。通信データ取得部12はWebブラウザ10から通信データを取得し、これを通信データ取得部12と連携する後述する記憶部の処理によりクライアント装置1の記憶装置の適当な記憶領域に格納せしめる。また、プラグイン11にはコードサイニング証明書が対応付けられている。コードサイニング証明書は、後述する公開鍵証明書と同様に第三者認証機関によって発行されたもので、プラグイン11が正規のものであることを保証するものであり、クライアント装置1の所定の記憶領域に保存される。
【0027】
プラグイン11は、通信データ取得部12が、クライアント、サーバそれぞれの署名データ、暗号鍵としてのセッションキー、このセッションキーで暗号化された暗号化通信データを取得すると、これらの通信データへのタイムスタンプの付与の要求をタイムスタンプサーバ装置3に送り、タイムスタンプサーバ装置3から当該通信データのタイムスタンプを取得するタイムスタンプ取得部13を備える。タイムスタンプ取得部13は、通信データ取得部12によるこれらの通信データの取得に応答して、上述の記憶領域から通信データを読み取り、所定のハッシュアルゴリズムを用いて通信データのメッセージダイジェストを生成し、メッセージダイジェストを格納した所定フォーマットのタイムスタンプ要求メッセージをタイムスタンプサーバ装置3に送信し、通信データへのタイムスタンプの付与を要求する。タイムスタンプ取得部13は、この要求に応答したタイムスタンプサーバ3からのタイムスタンプを受信する。タイムスタンプの発行プロトコルとしては、RFC3161に準拠したものを用いることができる。タイムスタンプ取得部13は、受信したタイムスタンプを後述する記憶部の処理により適当な記憶領域に格納せしめる。
【0028】
プラグイン11は、タイムスタンプとタイムスタンプが付与された通信データとを記憶するための記憶部14を備える。記憶部14は、通信データ取得部12、タイムスタンプ取得部13と連携し、通信データ及びタイムスタンプをクライアント装置1の記憶装置の適当な記憶領域に格納する。
【0029】
プラグイン11は、記憶された各通信データとそのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、SSL通信にかかる通信データの正当性を検証する検証部15を備える。
【0030】
プラグイン11は、検証部15による検証によって正当であるとされたSSL通信にかかるセッションキーを用いて、そのSSL通信にかかる暗号化通信データを平文に復号し、クライアント装置1、サーバ装置2間での通信内容を復元する復元部16を備える。
【0031】
タイムスタンプサーバ装置3は、ソフトウェアとしてのタイムスタンプサーバ30をその記憶装置に格納し、これを実行し、クライアント装置1のタイムスタンプ要求メッセージに応答してタイムスタンプを発行し、クライアント装置1に送信する。タイムスタンプサーバ装置3は、図示しないが、時刻を時刻監査局の時刻監査サーバ装置と所定のネットワークを介して接続され、定期的に自己の計時する時刻データを時刻監査サーバ装置送り、時刻監査局の計時する高精度の時刻に基づいて自己の時刻の監査を受け、高精度の時刻を保証する。この時刻精度保証のためのこの種の構成については、例えば、特開2007−181093号公報に開示されるようなもので実現される。
【0032】
タイムスタンプサーバ装置30は、タイムスタンプ要求メッセージに含まれる通信データのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとしてクライアント装置1に送信する。
【0033】
後に検証部15により、タイムスタンプトークンのメッセージダイジェストと、署名データをタイムスタンプサーバ装置3の公開鍵で復号したものと、を比較することによりタイムスタンプトークンが正規に生成されたものか否か検証できる。これにより、タイムスタンプトークンに含まれる通信データのメッセージダイジェストについてもタイムスタンプトークの生成時のものであるか否か検証でき、間接的に通信データの検証が可能となる。
【0034】
タイムスタンプサーバ装置3の公開鍵を含む公開鍵証明書は、タイムスタンプトークンとは別途クライアント装置1に送信してもよく、また、タイムスタンプサーバ装置3の公開鍵を含む公開鍵証明書をタイムスタンプトークンに含むようにしてもよく、タイムスタンプトークンの検証のための総ての証明書、これら証明書の発行局の最新の証明書失効行リストを含むようにしてもよい。ここで、タイムスタンプサーバ装置3の秘密鍵のビット長を、例えば2048ビットとして現在SSL通信で利用される一般的な証明書の秘密鍵のビット長の512ビットよりも長いものとしてあり、タイムスタンプの有効期間を、例えば、9年と、SSL通信で利用される一般的な証明書の有効期間の1年にくらべて十分長いものとしてある。なお、コンピュータの処理能力の向上に応じてSSL通信で利用される一般的な証明書の秘密鍵のビット長も延長されることとなるが、その時点においてタイムスタンプサーバ装置3の秘密鍵のビット長を、SSL通信で利用される一般的な証明書のそれよりも長いものとして適宜に定めることにより、より長期の有効期間のタイムスタンプを発行するようにすればよい。
【0035】
次に検証装置100のSSL通信時の動作について、図2のシーケンス図を参照しながら説明する。SSL通信が開始されるとWebサーバ20とWebブラウザ10との間で公開鍵証明書の交換が行われる(ステップS201〜S208)。
【0036】
先ず、Webサーバ20の公開鍵証明書がWebサーバ20の秘密鍵で署名されてWebブラウザ10に送信される(ステップS201)。プラグイン11のデータ取得部12は、Webブラウザ10からこの通信データを受けて所定の記憶領域に記憶する(ステップS202)。Webブラウザ10は、公開鍵証明書と署名とに基づいてWebサーバ20が正規のものか検証する(ステップS203)。プラグイン11のタイムスタンプ取得部13は、通信データに含まれる署名データのメッセージダイジェストを生成し、これを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ30に送信する(ステップS204)。
【0037】
タイムスタンプサーバ30は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれる署名データのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行し(ステップS205)、このタイムスタンプをクライアント装置1に送信する(ステップS206)。
【0038】
プラグイン11のタイムスタンプ取得部13は、タイムスタンプサーバ30よりのタイムスタンプを受けて所定の記憶領域に記憶する(ステップS207)。プラグイン11の記憶部14は、図示しないが、タイムスタンプとタイムスタンプを付与された通信データとを対応付けるテーブルを備え、一連のSSL通信、通信データ、タイムスタンプそれぞれの識別子、記憶領域をテーブル上で対応付けて記憶する。記憶部14は、以下に述べるタイムスタンプの記憶処理においても同様の処理により、通信データ、タイムスタンプそれぞれの識別子、記憶領域をテーブル上で対応付けて記憶する。
【0039】
また、プラグイン11は、通信データに含まれる署名データのタイムスタンプを取得するとともに、自己のコードサイニング証明書についても同様にしてタイムスタンプサーバ30よりタイムスタンプを取得し、クライアント装置1の所定の記憶領域に記憶する。例えば、署名データのタイムスタンプ要求メッセージを生成すると、自己のコードサイニング証明書についてもメッセージダイジェストを生成し、これを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ30に送信する。タイムスタンプサーバ30は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれるコードサイニング証明書のメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行する。このコードサイニング証明書のタイムスタンプを受け取ったプラグイン11は、これを上述の記憶領域に格納する。プラグイン11は、Webサーバ20の署名データのタイムスタンプを受け取ったときには、コードサイニング証明書のタイムスタンプとの対応付けを取って記憶領域に格納することとなる。これによって、後に正規のプラグイン11によって署名データのタイムスタンプが取得されたことの検証が可能となる。
【0040】
Webブラウザ10は、Webサーバ20が正規のものであることを確認するとアクセスを受諾し、クライアントの公開鍵証明書をクライアントの秘密鍵で署名してWebサーバ20に送信する(ステップS208)。
【0041】
Webサーバ20は、公開鍵証明書と署名とに基づいてWebブラウザ10が正規のものか検証し、正規なものであればアクセスを受諾する(ステップS209)。サーバ、クライアントは、互いの検証を終えることによりセッションキーの生成と交換を行う(ステップS210)。ここで、Webブラウザ10が、Webサーバ20の公開鍵証明書に含まれる公開鍵を使ってプリマスターシークレットを暗号化してWebサーバ20に送信し、Webブラウザ10、Webサーバ20においてプリマスターシークレットに基づいてセッションキーが生成され、Webブラウザ10、Webサーバ20間での鍵の交換が成立する。
【0042】
プラグイン11のデータ取得部12は、ステップS210で生成された先のセッションキーを所定の記憶領域に記憶する(ステップS211)。プラグイン11のタイムスタンプ取得部13は、セッションキーのメッセージダイジェストを生成し、これを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ30に送信する(ステップS212)。
【0043】
タイムスタンプサーバ30は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれるセッションキーのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いたハッシュ演算を行い、このタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行し(ステップS213)、このタイムスタンプをクライアント装置1に送信する(ステップS214)。
【0044】
プラグイン11のタイムスタンプ取得部13は、タイムスタンプサーバ30よりのタイムスタンプを受けて所定の記憶領域に記憶する(ステップS215)。
【0045】
Webサーバ20は、Webブラウザ10により画面表示させる画面データを先のセッションキーを用いて暗号化して暗号化通信データを生成し、Webブラウザ10に送信する(ステップS216)。ここで、例えば、目的の取引のフォームを表示する画面データが送信される。
【0046】
プラグイン11のデータ取得部12は、画面データの暗号化通信データを所定の記憶領域に記憶する(ステップS217)。Webブラウザ10は、先のセッションキーを用いて暗号化通信データを復号して画面表示を行う(ステップS18)。
【0047】
Webブラウザ10は、Webサーバ20からの画面データに基づいてWeb画面を表示している状態で、ユーザーがクライアント装置1の図示しないキーボード等の入力装置を用いて入力したデータ、すなわち、ユーザー入力データを受け付ける(ステップS219)。ここで、例えば、ユーザーは目的の取引のフォームを埋める決済情報を入力する。Webブラウザ10は、ユーザーが図示しない送信ボタンをクリックするなどしてユーザー入力データの送信の指令を受けると、ユーザー入力データを先のセッションキーによって暗号化し、ユーザー入力データの暗号化通信データを生成する。
【0048】
プラグイン11のデータ取得部12は、Webブラウザ10から暗号化されたユーザー入力データを受けて所定の記憶領域に記憶する(ステップS220)。
【0049】
Webブラウザ10は、ユーザー入力データの暗号化通信データをWebサーバ20に送信する(ステップS221)。Webサーバ20は、これに応答する画面データを先のセッションキーで暗号化した暗号化通信データをWebブラウザ10に送信する(ステップS222)。
【0050】
Webブラウザ10は、Webサーバ20からの画面データの暗号化通信データを先のセッションキーを用いて復号化してWeb画面を表示する(ステップS223)。ここでは、例えば、決済確認のためのWeb画面が表示される。詳述しないが、Webブラウザ10からこれに応答することにより一連のSSL通信が終了する。
【0051】
プラグイン11のデータ取得部12は、Webブラウザ10から画面データの暗号化通信データ、これに応答する暗号通信データを記憶領域に記憶する(ステップS224)。一連のSSL通信が終了すると、プラグイン11のタイムスタンプ取得部13は、この一連のSSL通信においてWebサーバ20から送信された最初の暗号化通信データから最後の暗号化通信データまでの暗号化通信データを連結し、この連結された暗号化通信データのメッセージダイジェストを生成し、このメッセージダイジェストを格納したタイムスタンプ要求メッセージをタイムスタンプサーバ30に送信する(ステップS225)。
【0052】
タイムスタンプサーバ30は、タイムスタンプ要求メッセージを受け取ると、タイムスタンプ要求メッセージに含まれる画面データの暗号化通信データのメッセージダイジェストと、自己の計時する時刻と、を含むタイムスタンプトークンを生成し、所定のハッシュアルゴリズムを用いてこのタイムスタンプトークンのメッセージダイジェストを生成し、このメッセージダイジェストを自己の秘密鍵で暗号化してタイムスタンプトークンの署名データを生成し、タイムスタンプトークンと署名データとをタイムスタンプとして発行し(ステップS226)、このタイムスタンプをクライアント装置1に送信する(ステップS227)。
【0053】
プラグイン11のタイムスタンプ取得部13は、タイムスタンプサーバ30よりのタイムスタンプを受けて所定の記憶領域に記憶する(ステップS228)。
【0054】
以上のように検証装置100では、サーバの署名、セッションキー、暗号化通信データにタイムスタンプが施すことにより、一連のSSL通信における通信データに対する電子公証による第三者認証が可能となる。次にその検証動作について、図3のフローチャートを参照しながら説明する。
【0055】
プラグイン11の検証部15は、記憶部14のテーブルから検証目的の一連のSSL通信を特定し、先ずその署名データのタイムスタンプを検証する(ステップS301)。ここで、検証部15は、目的のタイムスタンプに含まれるタイムスタンプサーバ30の公開鍵証明書が正規のものか否か、公開鍵証明書の発行局の公開鍵を用いて検証する。発行局の公開鍵は、予めクライアント装置1の記憶装置の所定の記憶領域にキーストアファイルとして記憶しておくこととするが、タイムスタンプトークンに含めることとするようにしてもよいし、検証の際に発行局にアクセスして公開鍵を取得するようにしてもよい。検証部15は、次に目的のタイムスタンプのタイムスタンプトークンのメッセージダイジェストを生成し、タイムスタンプサーバ30の公開鍵によってタイムスタンプの署名を復号して得たメッセージダイジェストと比較し、一致していればタイムスタンプを正規なものとする。
【0056】
検証部15は、タイムスタンプが正規のものであることが確認されると(ステップS302:Yes)、次に署名データの改竄の有無を検証する(ステップS303)。検証部15は、タイムスタンプトークンに含まれる署名データのメッセージダイジェストと、記憶部14のテーブルに従って読み出した署名データから生成したメッセージダイジェストとを比較し、一致していれば署名データの改竄がないとする(ステップS304:Yes)。ここで改竄が無い場合、検証部15は、署名データのタイムスタンプの時刻を確認する(ステップS305)。
【0057】
次に検証部15は、検証目的の一連のSSL通信のセッションキーのタイムスタンプを検証する(ステップS306)。タイムスタンプが正規なものであることが確認されると(ステップS307:Yes)、セッションキーの改竄の有無を確認する(ステップS308)。タイムスタンプトークンに含まれるセッションキーのメッセージダイジェストと、記憶部14のテーブルに従って読み出したセッションキーから生成したメッセージダイジェストとを比較し、一致していれば署名データの改竄がないとする(ステップS309:Yes)。ここで改竄が無い場合、検証部15は、セッションキーのタイムスタンプの時刻を確認し、署名データのタイムスタンプの時刻との連続性を確認する(ステップS310)。
【0058】
検証部15は、セッションキーのタイムスタンプの時刻と署名データのタイムスタンプの時刻とが、前者が後者に続くときに連続性があるとし、連続性があると確認した(ステップS311:Yes)場合、検証部15は、暗号化通信データのタイムスタンプを検証する(ステップS312)。タイムスタンプが正規なものであることが確認されると(ステップS313:Yes)、暗号化通信データの改竄の有無を確認する(ステップS314)。タイムスタンプトークンに含まれる暗号化通信データのメッセージダイジェストと、記憶部14のテーブルに従って読み出した暗号化通信データから生成したメッセージダイジェストとを比較し、一致していれば暗号化通信データの改竄がないとする(ステップS315:Yes)。ここで改竄が無い場合、検証部15は、暗号化通信データのタイムスタンプの時刻を確認し、セッションキーのタイムスタンプの時刻との連続性を確認する(ステップS316)。
【0059】
検証部15は、暗号化通信データのタイムスタンプの時刻とセッションキーのタイムスタンプの時刻との連続性については、暗号化通信データのタイムスタンプの時刻がセッションキーのタイムスタンプの時刻の後の所定期間内であれば、連続性があるとする。所定期間は一連のSSL通信とみなせる適当な期間で、例えば、15分等と適宜に設定する。ここで、連続性があると確認した確認した(ステップS317:Yes)場合、検証部15は一連のSSL通信の通信内容が正当なものであり、クライアント装置1の記憶装置に安全に保管されているとして検証動作を終了する。
【0060】
なお、検証部15は、ステップS302、S307、S313でタイムスタンプが正規のものでないとされた場合、ステップS304、S309、S315で改竄があるとされた場合、ステップS311、S317で連続性がないとされた場合は、一連のSSL通信の通信内容が正当なものでなくクライアント装置1の記憶装置に安全に保管されていないとして検証動作を終了する。
【0061】
プラグイン11の復元部16は、一連のSSL通信の通信内容がクライアント装置1の記憶装置に安全に保管されているとの検証結果を受け、記憶部14のテーブルに従って暗号化通信データを記憶領域から読み出し、検証されたセッションキーを用いて暗号化通信データを平文に復号して、Webブラウザ10に元の画面表示を行わせしめる。
以上のように検証装置100では、タイムスタンプが施されて第三者認証されたサーバの署名、セッションキー、各暗号化通信データを検証し、一連のSSL通信における通信データを復元することが可能となる。
【0062】
なお、この発明は、上記実施の形態に限定されず、種々の変形及び応用が可能である。例えば、クライアント装置1側で、タイムスタンプサーバ装置3と通信し、サーバの署名、セッションキー、暗号化通信データのタイムスタンプを取得するような構成について述べたが、Webサーバ装置2側に、タイムスタンプサーバ装置3と通信し、サーバの署名、クライアントの署名、セッションキー、各暗号化通信データのタイムスタンプを取得するような構成をとることも可能で、この場合、プラグイン11に相当する構成をWebサーバ20と連携するように設けることで実現できる。
【0063】
また、上記実施形態では、サーバの署名、セッションキー、暗号化通信データのそれぞれのタイムスタンプに含まれるメッセージダイジェストは互いに独立したものとしたが、これらメッセージダイジェストを順次連結してそれをタイムスタンプに含めるようにしてもよい。そのような実施形態では、例えば、プラグイン11のタイムスタンプ取得部13は、タイムスタンプ要求メッセージを生成するときに、次のように動作する。署名データ、セッションキー、暗号化通信データをそれぞれ上述の記憶領域を成すデータベースのレコードとみて、n番目のレコードをハッシュ演算により符合化したハッシュ値をHnとする(N番目のデータ「an」に対するハッシュ演算結果を「Hn=Hash(an)」として示す)。n番目のレコードの末尾フィールドにレコード順のハッシュ値を複合したハッシュ値である累計ハッシュ値(「tbH」と呼称する)を追加する。これが、図4(a)の概念図に示したものである。n番目のレコードが挿入された場合の累計ハッシュ値tbHnは、tbH n = Hash(Hn+tbHn−1)により求める。即ち、累計ハッシュ値tbHは、n番目のレコードのハッシュ値とn−1番目までの累計ハッシュ値の合計について、ハッシュ値を求めたものである。1番目のレコードの場合、それ以前のレコードが存在しないため、tbHn−1に相当するtbH0には、乱数値または固定数値を代入する。この累計ハッシュ値tbHによれば、レコードの生成順序が確定される。署名データ、セッションキー、暗号化通信データが得られた時点の累計ハッシュ値をそれぞれ署名データ、セッションキー、暗号化通信データのタイムスタンプに含めるメッセージダイジェストとする。これにより、署名データ、セッションキー、暗号化通信データのタイムスタンプでは、署名データ、セッションキー、暗号化通信データの順序性が強固に確定されることになり、時刻の他にこの順序性を検証することで上記の連続性の検証が可能になる。
【0064】
さらに、累計ハッシュ値の初期値である累計ハッシュ値tbH0として、プラグイン11のコードサイニング証明書のハッシュ値(メッセージダイジェスト)を用いることにより、サーバの署名データとコードサイニング証明書とを累計ハッシュ値の形で結合するようにしてもよい。これにより、プラグイン11のコードサイニング証明書のハッシュ値、言い換えればメッセージダイジェストと改竄不能に連鎖した署名データ、セッションキー、暗号化通信データのそれぞれのタイムスタンプが実現される。これらタイムスタンプを検証することにより、正規のプラグイン11によって署名データ、セッションキー、暗号化通信データのタイムスタンプが取得されたことの証明が可能となる。また、図4(b)に示すように累計ハッシュ値の初期値tbH0を固定値としてコードサイニング証明書を1番目のレコードとして、コードサイニング証明書のハッシュ値と固定値とを結合した累計ハッシュ値をメッセージダイジェストとしてタイムスタンプを取得するようにしても同様の効果を得る。
【0065】
また、サーバ公開鍵証明書の検証の際に、ルート認証局の公開鍵証明書等のルート認証情報を用いるが、これについても署名データのタイムスタンプを得るのと同時にタイムスタンプを得るようにしてもよい。プラグイン11が、例えば、「Windows Keystore」や「Java Keystore」等のルート認証情報を含むファイルを記憶するとともにそのタイムスタンプを取得するようにしてもよい。(Windows及びJavaは登録商標です。)
【0066】
また、上述の検証装置100では、SSL通信の開始から終了までの期間に自動的に通信データを保全し、タイムスタンプを取得するような構成としたが、Webブラウザ10に、通信データの保全の開始、停止を選択するユーザーインターフェース、例えば、ボタンを表示させ、ボタンの操作に応じて、通信データの保全を開始し、タイムスタンプを取得するようにプラグイン11を構成しても良い。この場合も、サーバの署名、セッションキー及びこれらのタイムスタンプは自動的に保全するようにする。また、送信、受信する都度個々の通信データにタイムスタンプを施すようにしてもよい。
【0067】
また、ユーザーインターフェースにはタイムスタンプの有効期間を指定する構成を設け、タイムスタンプ取得部13はその指定に応じたタイムスタンプ要求メッセージをタイムスタンプサーバ30に送信するようにし、タイムスタンプサーバ30はこれに応じた有効期間のタイムスタンプを発行するようにしても良い。
【0068】
SSL通信等の暗号化通信におけるセッションキー(一連の暗号化通信で使用される使い捨ての暗号鍵)を不正に保存しておくことで、実際の暗号化通信の後に不正に暗号化通信データを生成することが技術的に可能であるが、本発明のように、暗号化通信データを複製し記憶する際に、セッションキー及び暗号化通信データに対してタイムスタンプを取得することにより、不正にセッションキーを保持し、事後に暗号化通信データを偽造したという疑いを排除することができる。これは、正規の暗号化通信が行われたことを事後証明する際にタイムスタンプサーバによる第三者認証が有効となるからである。本発明では、セッションキーの交換が行われる際にセッションキーを複製して記憶し、そのタイムスタンプを取得する。このようにセッションキーが生成され、又は切り替わるタイミングで第三者認証が行われることによって、不正に保存されたセッションキーで暗号化通信データが偽造されることを排除する。
【符号の説明】
【0069】
100 通信データの検証装置
1 クライアント装置
10 Webブラウザ
11 プラグイン
12 データ取得部
13 タイムスタンプ取得部
14 記憶部
15 検証部
16 復元部
2 サーバ装置
20 Webサーバ
3 タイムスタンプサーバ装置
30 タイムスタンプサーバ

【特許請求の範囲】
【請求項1】
サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信にかかる通信データを検証する検証装置であって、
前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得部と、
前記通信データ取得部が取得した通信データへのタイムスタンプの付与の要求を前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得部と、
前記タイムスタンプ所得部が取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを記憶する記憶部と、
前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証部と、
を備え、
前記検証部は、
前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信にかかる通信データが正当であるとする
ことを特徴とする通信データの検証装置。
【請求項2】
前記通信データ取得部は前記サーバ及び/又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得部は前記署名データのタイムスタンプを取得し、前記検証部は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に、前記暗号鍵のタイムスタンプを検証することを特徴とする請求項1に記載の通信データの検証装置。
【請求項3】
前記検証部によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元部を備えたことを特徴とする請求項1又は2に記載の通信データの検証装置。
【請求項4】
前記タイムスタンプ取得部は、前記暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶部は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証部は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することを特徴とする請求項1乃至3の何れかに記載の通信データの検証装置。
【請求項5】
前記暗号化通信は、SSL(Secure Sockets Layer)を用いたもので、前記暗号鍵がセッションキーであることを特徴とする請求項1乃至4の何れかに記載の通信データの検証装置。
【請求項6】
前記タイムスタンプは、前記通信データの検証装置自体の証明書のメッセージダイジェストを含むことを特徴とする請求項1乃至5の何れかに記載の通信データの検証装置。
【請求項7】
サーバ、クライアント間での認証及び暗号化を伴う一連の暗号化通信にかかる通信データの検証処理をコンピュータ上で実現せしめるコンピュータプログラムであって、
前記暗号化通信で使用される暗号鍵、当該暗号鍵で暗号化された暗号化通信データを通信データとして取得する通信データ取得処理と、
前記通信データ取得処理が取得した通信データへのタイムスタンプの付与の要求を、前記サーバ、前記クライアントとは別途に設けられたタイムスタンプサーバに送り、前記タイムスタンプサーバから当該通信データのタイムスタンプを取得するタイムスタンプ取得処理と、
前記タイムスタンプ所得処理により取得した前記タイムスタンプと、当該タイムスタンプを付与された前記通信データとを前記コンピュータの記憶部に記憶する記憶処理と、
前記記憶部に記憶された各通信データと当該通信データのタイムスタンプとに基づき各通信データの正当性を検証するとともに、各通信データのタイムスタンプの時刻の連続性に基づいて各通信データの連続性を検証して、前記暗号化通信にかかる通信データの正当性を検証する検証処理と、
を備え、
前記検証処理は、
前記暗号鍵のタイムスタンプを検証し、当該暗号鍵が改竄されていないことを確認すると、次に前記暗号化通信データのタイムスタンプを検証し、当該暗号化通信データが改竄されていないことを確認すると、前記暗号化通信データのタイムスタンプ時刻を確認し、当該時刻と前記暗号鍵のタイムスタンプの時刻との連続性を確認するとともに通信データが改竄されていないことが確認されたことをもって前記暗号化通信における通信データが正当であるとするものである
ことを特徴とするコンピュータプログラム。
【請求項8】
前記通信データ取得処理は前記サーバ及び/又は前記クライアントの認証のための署名データを取得し、前記タイムスタンプ所得処理は前記署名データのタイムスタンプを取得し、前記検証処理は、前記署名データのタイムスタンプを検証し、当該署名データが改竄されていないことを確認した後に前記暗号鍵のタイムスタンプを検証することを特徴とする請求項7に記載のコンピュータプログラム。
【請求項9】
前記検証処理によって正当であるとされた前記暗号化通信にかかる暗号鍵を用いて、当該暗号化通信にかかる暗号化通信データを平文に復号し、前記サーバ、前記クライアント間での通信内容を復元する復元処理を備えたことを特徴とする請求項7に記載のコンピュータプログラム。
【請求項10】
前記タイムスタンプ取得処理は、暗号化通信にかかる前記署名データの認証のためのルート認証情報のタイムスタンプを取得し、前記記憶処理は、当該ルート認証情報及びそのタイムスタンプを記憶し、前記検証処理は、前記記憶部に記憶された当該ルート認証情報及びそのタイムスタンプを用いて、当該ルート認証情報が改竄されていないことを確認することを特徴とする請求項7乃至9の何れかに記載のコンピュータプログラム。
【請求項11】
前記暗号化通信は、SSL(Secure Sockets Layer)を用いたもので、前記暗号鍵がセッションキーであることを特徴とする請求項7乃至10の何れかに記載のコンピュータプログラム。
【請求項12】
前記タイムスタンプに、前記コンピュータプログラム自体の証明書のメッセージダイジェストを含める処理を備えることを特徴とする請求項7乃至10の何れかに記載のコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2011−119952(P2011−119952A)
【公開日】平成23年6月16日(2011.6.16)
【国際特許分類】
【出願番号】特願2009−275013(P2009−275013)
【出願日】平成21年12月3日(2009.12.3)
【出願人】(396004981)セイコープレシジョン株式会社 (481)
【Fターム(参考)】