説明

情報処理装置及び検証装置及びタイムスタンプ生成方法及びタイムスタンプ検証方法及びプログラム

【課題】TSAサーバへのアクセス回数を削減しつつ、データの前後関係やデータが改竄されていないことを保証することのできるタイムスタンプ方式を提供する。
【解決手段】ローカルサーバ130は、コンピュータ120からローカルタイムスタンプの発行要求を受信し、ローカルタイムタイムスタンプを生成し、コンピュータ120にローカルタイムスタンプを送信するとともに、ローカルタイムスタンプと既存の累積ハッシュ値を連結し、連結値を用いて新たな累積ハッシュ値を生成し、新たな累積ハッシュ値がTSAサーバ150へのアクセス対象の値であれば、新たな累積ハッシュ値をTSAサーバ150に送信し、新たな累積ハッシュ値に対するTSAタイムスタンプを受信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタルデータに関する時刻証明のためのタイムスタンプの生成技術及び検証技術に関する。
【背景技術】
【0002】
ある組織内におけるデジタルデータの作成や修正の日時とその後の改竄の有無を証明するために第三者機関であるTSA(Time−Stamping Authority=タイムスタンプ発行局)サーバ装置を利用するシステムにおいて、TSAサーバ装置(以下、単にTSAサーバともいう)へのアクセス数を削減するために、複数のデータのダイジェストを統合し、統合したダイジェストをTSAサーバに送信してタイムスタンプを受領する技術がある(例えば、特許文献1、2)。
一方、TSAサーバを利用せずして上記証明を行うために、ローカルサーバ上でローカルタイムスタンプを発行し、ローカルタイムスタンプ発行のための署名鍵を定期的に更新することでローカルタイムスタンプの改竄を困難にし、それによってローカルタイムスタンプの信頼度を保証する技術がある(例えば、特許文献3)。
【特許文献1】特開2001−142398号公報 第8頁〜9頁、第1図
【特許文献2】特開2006−293681号公報 第4頁〜9頁、第1図〜7図
【特許文献3】特開2001−517818号公報 第9頁〜11頁、第1図
【発明の開示】
【発明が解決しようとする課題】
【0003】
特許文献1、2に記載の技術のように、複数のデジタルデータのダイジェストを統合し、統合データをTSAサーバに送信してタイムスタンプを受領する方式では、統合された各データがタイムスタンプ発行時点までに存在し、かつ各データがそれ以降改竄されていないことを保証することはできるが、各データ間の作成・修正時刻の前後関係を保証することはできない。
また、TSAサーバへアクセスするタイミングは、特許文献1では定期的であり、特許文献2ではデータ件数が一定量を超えた場合や一定間隔、一定時刻、あるいはこれらの任意の組み合わせであるため、ユーザがTSAへのアクセスタイミングを容易に推定可能であり、したがってそれまでの間は、ユーザとローカルサーバ管理者が結託することにより、すでに作成したデータを改竄したりデータの前後関係を入れ替えたりすることが容易にできてしまうという課題がある。
【0004】
また、特許文献3に記載の技術のように、タイムスタンプ発行のための署名鍵を定期的に更新する方式の場合、次回の署名鍵更新のタイミングを容易に推定可能であり、したがってそれまでの間はすでに作成したデータを改竄したり、データの前後関係を入れ替えたりすることが容易にできてしまうという課題がある。
一方、それを防ぐためにローカルタイムスタンプの発行ごとに署名鍵を更新することとすると、署名鍵の生成に時間がかかるほか、署名の検証の際にも莫大な時間がかかってしまうため、現実的でないという課題がある。
さらにTSAサーバのタイムスタンプを利用していないため、ローカルサーバの時計が信用できなければ、ローカルタイムスタンプの時刻情報も信用できないという課題がある。
【0005】
本発明はかかる課題を解決することを主な目的とするもので、TSAサーバへのアクセス回数を削減しつつ、データの前後関係やデータが改竄されていないことを保証することのできるタイムスタンプ方式を提供することを主な目的とする。
【課題を解決するための手段】
【0006】
本発明に係る情報処理装置は、
タイムスタンプ生成装置に接続する情報処理装置であって、
第1タイムスタンプを生成するタイムスタンプ生成部と、
前記タイムスタンプ生成部により第1タイムスタンプが生成される度に、生成された第1タイムスタンプを用いて、擬似ランダム値を生成する擬似ランダム値生成部と、
前記擬似ランダム値生成部により生成された擬似ランダム値が前記タイムスタンプ生成装置による第2タイムスタンプの生成の対象となる第2タイムスタンプ対象値に合致するか否かを判断し、前記擬似ランダム値が前記第2タイムスタンプ対象値に合致する場合に、前記擬似ランダム値を前記タイムスタンプ生成装置に対して送信し、前記タイムスタンプ生成装置から前記擬似ランダム値に対するタイムスタンプを第2タイムスタンプとして受信するアクセス制御部とを有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、擬似ランダム値が第2タイムスタンプ対象値に合致する場合にのみ、タイムスタンプ生成装置へ擬似ランダム値を送信するため、タイムスタンプ生成装置へのアクセス回数を削減し、タイムスタンプ生成装置へのアクセスに伴うトラフィックを抑制することができる。
また、擬似ランダム値が第2タイムスタンプ対象値に合致する場合にのみ、タイムスタンプ生成装置へ擬似ランダム値を送信するため、タイムスタンプ生成装置へのアクセスタイミングがランダムとなり、タイムスタンプ生成装置へのアクセスタイミングを推定することが困難であり、このため、データの改竄やデータの前後関係を入れ替えることが困難となり、また、このような改竄があっても改竄を検出することができるため、データ内容の改竄、データの前後関係の改竄を有効に抑制することができる。
【発明を実施するための最良の形態】
【0008】
実施の形態1.
図1は、本発明の実施の形態1におけるタイムスタンプ生成システムの構成例を示す図である。
図1において、ユーザA1a、ユーザB1b、…ユーザN1nは、本システムを利用するユーザである。
ICカード100a、ICカード100b、…、ICカード100nは、それぞれユーザA1a、ユーザB1b、…、ユーザN1nが所持するICカードである。
ICカードR/W(リーダライタ)110a、…、ICカードR/W110mは、ICカードの読み取りおよび書き込みを行う装置である。
コンピュータ120a、…、コンピュータ120mは、ユーザがデータの作成やデータに対するローカルタイムスタンプの発行要求などデータに関わる操作を行う機器であり、例えばパーソナルコンピュータや携帯電話、携帯情報端末機などである。
図のように、ICカードR/Wおよびコンピュータは1人のユーザで占有してもよいし、複数人のユーザで共有してもよい。
【0009】
ローカルサーバ装置130(以下、単にローカルサーバ130ともいう)は、コンピュータ120a、…、コンピュータ120mからローカルタイムスタンプの発行要求を受け取ってローカルタイムスタンプを発行する装置であり、LAN(Local Area Network)などの構内網によって各コンピュータと接続されている。つまり、ローカルサーバ130は、コンピュータ120が接続されている内部ネットワークに配置されており、内部ネットワークのコンピュータ120のためにローカルタイムスタンプを発行する。
インターネット140は、ローカルサーバ130とTSAサーバ装置150とを接続する公衆網である。
TSAサーバ装置150(以下、単にTSAサーバともいう)は、ローカルサーバ130からタイムスタンプの発行要求を受け取ってタイムスタンプを発行する装置である。
【0010】
ローカルサーバ130は、TSAサーバ150との関係では情報処理装置の例となり、図1には図示していない検証装置(後述)との関係では、第1タイムスタンプ生成装置の例となる。
また、TSAサーバ150は、ローカルサーバ130との関係ではタイムスタンプ生成装置の例となり、検証装置との関係では第2タイムスタンプ生成装置の例となる。
また、コンピュータは、タイムスタンプ生成要求装置の例である。
【0011】
図2は、図1の各構成要素の内部構成例を示す図である。
図2において、まず、ICカード100aの構成要素について説明する。
記憶部201は、ICカードごとに異なる署名鍵および検証鍵を格納する。
署名生成部202は、入出力部203から受け取ったデータに対し、記憶部201に格納された署名鍵を用いてデジタル署名を生成する。
入出力部203は、ICカード100aとICカードR/W110aとの間でデータの受け渡しを行う。
【0012】
次に、コンピュータ120aの構成要素について説明する。
入出力部221は、ユーザからの入力の受け付けやICカードR/W110a、ローカルサーバ130との間でデータの受け渡しを行う。
データ処理部222は、ユーザからの入力に応じてデータの作成や修正を行う。
ローカルタイムスタンプ要求部223は、データ処理部222で作成したデータからハッシュ値を計算してローカルタイムスタンプの発行要求を生成する。
記憶部224は、ローカルサーバ130から受け取ったローカルタイムスタンプを記憶しておく。
【0013】
次に、ローカルサーバ130の構成要素について説明する。
アクセス制御部231は、TSAサーバ150へのアクセスを制御する。
累積ハッシュ値演算部232は、ローカルタイムスタンプおよび既存の累積ハッシュ値から新たな累積ハッシュ値を計算する。
ここで累積ハッシュ値は、過去に発行したローカルタイムスタンプに依存するローカルサーバ内部値である。累積ハッシュ値は、擬似ランダム値である。
ローカルタイムスタンプ生成部233は、ユーザから受け取ったローカルタイムスタンプの発行要求に対し、記憶部236に格納された署名鍵を用いてローカルタイムスタンプを生成する。
タイマ部234は、計時用カウンタであり、一定の時間間隔で値を更新する。
受付部235は、各コンピュータから発行要求を受け付け、受付順に記憶する。
記憶部236は、ローカルタイムスタンプを生成するための署名鍵や発行したローカルタイムスタンプやTSAサーバ150から受領したTSAタイムスタンプや累積ハッシュ値演算部232で作成した累積ハッシュ値を記憶しておく。
入出力部237は、コンピュータ120やTSAサーバ150との間でデータの受け渡しを行う。
【0014】
ローカルサーバ130において、入出力部237は、コンピュータ120aから、デジタル署名のハッシュ値が含まれた発行要求(タイムスタンプ生成要求)を受信する。入出力部237は、要求入力部の例である。
【0015】
ローカルタイムスタンプ生成部233は、タイマ部234のカウントに基づいて、一定の生成周期ごとに発行要求が受付部235により受け付けられているか否かを確認し、発行要求が受け付けられている場合は受け付けられている発行要求からデジタル署名のハッシュ値を抽出し、抽出したデジタル署名のハッシュ値を用いてローカルタイムスタンプを生成する。一方、発行要求が受け付けられていない場合は、任意の情報に対してローカルタイムスタンプを生成する。
ローカルタイムスタンプ生成部233により生成されるローカルタイムスタンプは、第1タイムスタンプに相当する。また、ローカルタイムスタンプ生成部233は、タイムスタンプ生成部の例である。
【0016】
記憶部236は、累積ハッシュ値演算部232により累積ハッシュ値が生成される度に、生成された累積ハッシュ値を記憶している。
累積ハッシュ値演算部232は、ローカルタイムスタンプ生成部233によりローカルタイムスタンプが生成される度に、生成されたローカルタイムスタンプと、記憶部236に記憶されている最新の累積ハッシュ値とを用いて、擬似ランダム値である新たな累積ハッシュ値を生成する。累積ハッシュ値演算部232は、擬似ランダム値生成部の例である。
このように、累積ハッシュ値は、先行する累積ハッシュ値に基づいて生成されており、記憶部236に蓄積されている複数の累積ハッシュ値を時系列に沿って連鎖させることが可能であり、累積ハッシュ値の連鎖をハッシュチェーンという。
【0017】
そして、アクセス制御部231は、累積ハッシュ値演算部232により生成された擬似ランダム値である累積ハッシュ値がTSAサーバ150によるTSAタイムスタンプ(第2タイムスタンプ)の生成の対象となる値(第2タイムスタンプ対象値)に合致するか否かを判断し、累積ハッシュ値がTSAタイムスタンプの対象となる値に合致する場合に、入出力部237を介して、当該累積ハッシュ値をTSAサーバ150に対して送信し、入出力部237を介して、TSAサーバ150から当該累積ハッシュ値に対するTSAタイムスタンプを受信する。
一方、累積ハッシュ値演算部232により生成された累積ハッシュ値がTSAタイムスタンプの対象となる値に合致しない場合に、アクセス制御部231は、当該累積ハッシュ値をTSAサーバ150に対して送信することなく、記憶部236に当該累積ハッシュ値を記憶させる。
このように、アクセス制御部231は、擬似ランダム値である累積ハッシュ値が所定の値に該当するか否かにより、累積ハッシュ値をTSAサーバ150に送信するか否かを決定しており、累積ハッシュ値のTSAサーバ150への送信はランダムに発生することになる。
なお、TSAタイムスタンプの対象となる値、すなわちTSAサーバ150へのアクセスの対象となる値は、複数存在する。これは、後述するように、連続する一定範囲の数値(例えば、ビット値0〜2−1の範囲)とすることができ、このような数値範囲をアクセス領域Lという。
【0018】
図3は、ユーザがデータを作成しローカルタイムスタンプの発行要求を生成するまでのデータの流れを示した図である。
【0019】
図3において、データX301は、ユーザが作成又は修正したデータである。
署名鍵sk302は、データX301に対するデジタル署名を計算するための鍵であり、ICカードごとに異なる値である。
この署名鍵sk302は、ICカード100aの記憶部201に格納されており、ICカードの外部からは盗聴も改竄もできないようになっている。
署名SIGska(X)303は、データX301に対し署名鍵sk302を用いて計算したデジタル署名である。
ハッシュ値H304は、署名SIGska(X)303のハッシュ値であり、
具体的にはH=hash(SIGska(X))である。ここで、hashはSHA−1やMD5などのハッシュ関数である。
発行要求R305はローカルタイムスタンプの発行要求であり、ハッシュ値H304と個人識別用の値を含む任意の形式である。
【0020】
図4は、ローカルサーバ130が発行要求を受信しローカルタイムスタンプを発行して累積ハッシュ値を更新するまでのデータの流れを示した図である。
【0021】
図4において、署名鍵sk401は、ローカルサーバ130の署名鍵である。
この署名鍵sk401は、ローカルサーバ130の記憶部236に格納されており、ローカルサーバの外部からは盗聴も改竄もできないようになっている。
関連情報I402は、ローカルタイムスタンプの受付番号や現在の時刻などローカルタイムスタンプに必要な情報である。
ローカルタイムスタンプLTS403は、タイムスタンプ発行要求R305から抜き出されたハッシュ値H304と関連情報I402に対し、署名鍵sk401を用いて計算したデジタル署名であり、具体的には、LTS=SIGsk(H‖I)である。ここで「‖」はビット列の連結を表す。
累積ハッシュ値Li−1404は、ローカルサーバのi−1番目の累積ハッシュ値で、累積ハッシュ値L405はi番目の累積ハッシュ値である。
これら累積ハッシュ値は、過去に発行したすべてのローカルタイムスタンプの影響を受けた値であり、具体的には、L=hash(Li−1‖LTS)である。
ここで、hashはSHA−1やMD5などのハッシュ関数であるが、必ずしもコンピュータ120aで使用するhashと同一である必要はない。
累積ハッシュ値の初期値Lはあらかじめ定められた値である。
【0022】
(タイムスタンプの生成)
次に、図3乃至図6を用いて、本発明の実施の形態1におけるタイムスタンプ生成方法を説明する。
ここでは、ユーザA1aが作成したデータに対するタイムスタンプ生成方法を説明するが、他のユーザの場合も同様である。
【0023】
図5は、ユーザがデータを作成してから、ローカルサーバ130よりローカルタイムスタンプを受領し記憶部224に格納するまでの動作例を示すフローチャートである。
【0024】
ユーザは、図示しないキーボードやマウスなどのコンピュータ操作用機器を用いてコンピュータ120aに対する操作を行い、データX301を作成あるいは修正したものとする。
ユーザがローカルタイムスタンプの発行要求を指示すると、ステップ501においてコンピュータ120aはデータX301をICカード100aに送る。
次に、ステップ502にて、ICカード100aは記憶部201に格納された署名鍵sk302を用いてデータX301のデジタル署名SIGska(X)303を計算する。具体的には、データX301のハッシュ値を署名鍵sk302で暗号化する。
そして、ステップ503にて、署名SIGska(X)303をコンピュータ120aに送り返す。
ステップ504にて、コンピュータ120aは署名SIGska(X)303からハッシュ値H304を計算する。この計算はH=hash(SIGska(X))により行う。
続いて、ステップ505にて、ハッシュ値H304から発行要求R305を作成する。
そして、ステップ506にて、発行要求R305をローカルサーバ130に送る。
ステップ507にて、ローカルサーバから返ってきたローカルタイムスタンプLTS403を記憶部224に格納する。
【0025】
なお、上記説明ではユーザがタイムスタンプの発行要求の作成をコンピュータに指示するものとして説明したが、コンピュータがある規則に基づいて自発的に発行要求を作成する構成であってもよい。
【0026】
また、ステップ502にてデータX301に対し直接デジタル署名SIGska(X)303を計算する構成としたが、データX301のハッシュ値をとってそのハッシュ値に対しデジタル署名を計算する構成も望ましい。
【0027】
図6は、ローカルサーバ130がローカルタイムスタンプLTS403を発行する際の手順を示すフローチャートである。
ローカルサーバ130は図6に示された処理を無限回繰り返すが、ここではi回目の処理を例に説明する。
なお、処理の中で累積ハッシュ値の更新を行うが、処理を行う前の段階での最新の累積ハッシュ値はLi−1404であり、L405は更新後の累積ハッシュ値であることに注意されたい。
【0028】
図6の処理は主にローカルタイムスタンプの生成600aと累積ハッシュ値の更新600bから成り立っており、まずローカルタイムスタンプの生成600aについて説明する。
【0029】
ステップ601にて、ローカルサーバ130のタイマ部234が一定の値をカウントする。
このタイマ部234は、周期的に値を更新する仕組みであればよく、例えば発振器でもよいし、1+1を1万回計算するプログラムであってもよい。
カウントすべき値はローカルサーバの管理者があらかじめ定めておく。
なお、この値の選択基準については後述する。
次に、タイマ部234のカウントによりタイムスタンプ生成周期が到来した場合には、ステップ602にて、ローカルタイムスタンプ生成部233が、受付部235にコンピュータ120aからの発行要求R305が存在するかを確認する。
発行要求R305があれば、ローカルタイムスタンプ生成部233は、ステップ603にて、受付部235から最も古い発行要求を取り出してローカルタイムスタンプ生成部233内に格納し、当該発行要求R305を受付部235から消去する。
次に、ステップ604にて、ローカルタイムスタンプ生成部233は、発行要求R305からハッシュ値H304を抜き出す。
次に、ローカルタイムスタンプ生成部233は、ステップ605aにて、ハッシュ値H304に対し、記憶部236に格納された署名鍵sk401および関連情報I402を用いてローカルタイムスタンプLTS403を生成する(タイムスタンプ生成ステップ)。
そして、ステップ606にて、ローカルタイムスタンプ生成部233は、入出力部237を介して、ローカルタイムスタンプLTS403をコンピュータ120aに送るとともに、ステップ607にて、発行要求R305とローカルタイムスタンプLTS403を記憶部236に格納する。
【0030】
一方、ステップ602にて受付部235に発行要求がなかった場合、ステップ605bにて、ローカルタイムスタンプ生成部233は、累積ハッシュ値演算部232にある最新の累積ハッシュ値Li−1404に対し、記憶部236に格納された署名鍵sk401および関連情報I402を用いてローカルタイムスタンプLTS403を生成する(タイムスタンプ生成ステップ)。
そして、ステップ607にて、ローカルタイムスタンプ生成部233は、ローカルタイムスタンプLTS403を記憶部236に格納する。
このとき発行要求については無いので格納しなくてよい。
【0031】
なお、ステップ605bにて累積ハッシュ値Li−1404に対しローカルタイムスタンプLTS403を作成したが、これの代わりに定数や擬似乱数等の任意の情報に対してローカルタイムスタンプLTS403を作成する構成としてもよい。
【0032】
次に、累積ハッシュ値の更新600bを説明する。
【0033】
ステップ608にて、累積ハッシュ値演算部232が、ローカルタイムスタンプLTS403を用いて新しい累積ハッシュ値を計算する(擬似ランダム値生成ステップ)。
具体的には、累積ハッシュ値演算部232は、L=hash(Li−1‖LTS)によりi番目の累積ハッシュ値を計算する。
次に、ステップ609にて、アクセス制御部231において累積ハッシュ値L405がアクセス領域L内の値であるかを判定する(アクセス制御ステップ)。
ここで、アクセス領域Lは、TSAサーバ150にアクセスすべき累積ハッシュ値の集合であり、あらかじめローカルサーバ130の管理者が定めたものであるが、詳細は後述する。
累積ハッシュ値L405がアクセス領域L内にあるとき、すなわちL∈Lのとき、アクセス制御部231は、この累積ハッシュ値はTSAサーバ150に送信すべき値であると判断し、ステップ610にて、入出力部237を介して、累積ハッシュ値L405をTSAサーバ150に送る(アクセス制御ステップ)。
そして、ステップ611にて、アクセス制御部231は、TSAサーバ150から累積ハッシュ値L405に対するタイムスタンプ(これをTSAタイムスタンプと呼ぶ)を受け取り(アクセス制御ステップ)、ステップ612にてTSAタイムスタンプを記憶部236に格納する。
さらに、アクセス制御部231は、ステップ613にて累積ハッシュ値L405を記憶部236に格納する。
【0034】
ステップ609にて累積ハッシュ値L405がアクセス領域L内の値でなかった場合、アクセス制御部231は、TSAサーバ150へのアクセスは行わずに、ステップ613にて累積ハッシュ値L405を記憶部236に格納する。
【0035】
なお、ここではアクセス領域LのみをTSAサーバ150へのアクセスの判断基準としたが、これに別の判断基準、例えば最後にTSAサーバ150にアクセスしてからのカウント数が一定値に達した場合などを加え、各判断基準のうちいずれか一つが合致すればTSAサーバ150にアクセスする構成としてもよい。
つまり、アクセス制御部231は、累積ハッシュ値がアクセス領域Lに含まれないため、TSAサーバ150へのアクセスが連続して所定数の累積ハッシュ値に対して行われなかった場合に、新たに生成された累積ハッシュ値がアクセス領域Lに含まれないと判断した場合であっても、当該累積ハッシュ値をTSAサーバ150に対して送信する。
このような構成にすることで、ローカルタイムスタンプの改竄がより困難になることが、後述するタイムスタンプの検証過程から理解される。
【0036】
また、以上では、累積ハッシュ値の計算にハッシュ関数を用いたが、実際にはハッシュ関数に限らず、一方向性を満足する関数を用いた一方向演算で擬似ランダム値を生成することにより同じ効果を奏することは、当業者の容易に理解し得るところである。
【0037】
ステップ601におけるカウントすべき値はローカルサーバ管理者が定めるが、以下にその制定基準を述べる。
カウントすべき値が大きい場合、すなわちローカルタイムスタンプの発行間隔が長い場合、例えば1日ごとであるとか1週間ごとであるなどの場合は、その間に複数の発行要求が到着することが容易に起こり得る。
本実施の形態に係るローカルサーバ130は同時に複数の発行要求を処理するものではないため、次の処理までの間、発行要求が処理されずに残ることになる。
一般にタイムスタンプは対象となるデータが作成あるいは修正された時点から間を置かずに発行されるべきであり、したがってこのような事態は望ましくない。
一方、カウントすべき値が小さい場合すなわちローカルタイムスタンプの発行間隔が短い場合、例えば1マイクロ秒ごとであるとか1ミリ秒ごとであるなどの場合は、発行要求がない状態でローカルタイムスタンプを発行することが多くなる。
発行要求のないローカルタイムスタンプ発行は改竄防止のために行うものであり、ローカルタイムスタンプそれ自体には意味はない。
したがって、このようなローカルタイムスタンプが多くなりすぎる事態は望ましくない。
また、本実施の形態に係るシステムでは検証のためすべてのローカルタイムスタンプとすべての累積ハッシュ値を記憶部にて保存する。
したがって、ローカルタイムスタンプの発行頻度が高い場合はそれに応じた記憶容量が必要となり、コストの増加につながる。
以上のことから、ローカルサーバ管理者はユーザ数や使用頻度、許容されるコストなどの要素を鑑みて適切なカウント値を設定する。
【0038】
ステップ609におけるアクセス領域Lの定め方を述べる。
累積ハッシュ値の計算にハッシュ関数SHA−1を用いているとすると、累積ハッシュ値のビット長は160ビットである。
したがって累積ハッシュ値のとりうる値は0から2160−1までの2160通りである。
ここで、TSAへのアクセスの割合を1/256に設定する場合を考える。
これは、256回に1回の割合でTSAへのアクセスを発生させるというものである。
このとき、例えばアクセス領域Lを2152未満、すなわち0≦L<2152に定めると、TSAへのアクセス割合は1/256となる。
なぜならば、アクセス領域Lはハッシュ値のとりうる値の範囲の1/256の大きさを占めており、かつハッシュ関数は擬似ランダム関数とみなしてよく、したがってハッシュ値の出力分布はほぼ均一であり、擬似ランダム値と言えるからである。
【0039】
アクセス割合の制定基準を述べる。
アクセス割合が小さい場合すなわちアクセスの頻度が低い場合、例えばアクセス割合が1/10000や1/100000の場合は、ほとんどTSAへのアクセスが発生しない。
この場合、コストやトラフィックの面では有利であるが、ローカルタイムスタンプの改竄は行いやすくなる。なぜなら、過去に発行したローカルタイムスタンプを改竄し、それ以降の累積ハッシュを再計算しても、TSAへのアクセスが発生しない可能性が高く、したがって後述する検証過程において改竄が検出されなくなるからである。このため、ローカルタイムスタンプの信頼性は低下する。したがって、低い頻度は望ましくない。
一方、アクセス割合が大きい場合すなわちアクセスの頻度が高い場合、例えばアクセス割合が1/2や1/3の場合は、頻繁にTSAへのアクセスが発生する。
この場合、ローカルタイムスタンプの改竄は非常に困難になり、したがってローカルタイムスタンプの信頼性は向上するが、TSAサーバへのアクセスはコストの増大やネットワークトラフィックの増加をもたらしてしまう。したがって、あまり高い頻度は望ましくない。
以上のことから、ローカルサーバ管理者は必要な信頼性や許容されるコストなどの要素を鑑みて適切なアクセス割合を設定する。
【0040】
(タイムスタンプの検証)
次に、図4乃至図8及び図23を用いてローカルタイムスタンプの検証方法を述べる。
【0041】
まず、図23を参照して、ローカルタイムスタンプの検証を行う検証装置330について説明する。
検証装置330は、図1に示したタイムスタンプ生成システムにおいて、ローカルサーバ130が生成したローカルタイムスタンプ(第1タイムスタンプ)の検証を行う。
【0042】
図23において、検証対象データ入力部331は、ローカルタイムスタンプの検証に必要なデータを入力する。
具体的には、検証対象のローカルタイムスタンプ(検証対象第1タイムスタンプ)、検証対象のローカルタイムスタンプが時刻証明の対象としている時刻証明対象値(発行要求R305に含まれていたハッシュ値H304)、検証対象のローカルタイムスタンプの生成の際のデジタル署名に用いられた署名鍵と対になるローカルサーバの検証鍵(第一タイムスタンプ検証鍵)、検証対象のローカルタイムスタンプの生成前に生成されたTSAタイムスタンプである先行TSAタイムスタンプ(先行第2タイムスタンプ)、検証対象のローカルタイムスタンプの生成後に生成されたTSAタイムスタンプである後行TSAタイムスタンプ(後行第2タイムスタンプ)、先行TSAタイムスタンプが時刻証明の対象としている先行累積ハッシュ値(先行一方向演算値)(ローカルサーバ130によりTSAサーバ150に送信され先行TSAタイムスタンプが発行されたハッシュ値)から後行TSAタイムスタンプが時刻証明の対象としている後行累積ハッシュ値(後行一方向演算値)(ローカルサーバ130によりTSAサーバ150に送信され後行TSAタイムスタンプが発行されたハッシュ値)までの複数の累積ハッシュ値(対象区間一方向演算値)、先行TSAタイムスタンプの生成後から後行TSAタイムスタンプの生成前までに生成された一つ以上のローカルタイムスタンプ(対象区間第1タイムスタンプ)、コンピュータ120で生成又は修正されたユーザデータ(データ(X)301)、当該ユーザデータ(データ(X)301)に対してICカード100で生成されたデジタル署名値(署名SIGska(X)303)、ICカード100におけるデジタル署名値(署名SIGska(X)303)の生成に用いられた署名鍵と対になるユーザの検証鍵(デジタル署名検証鍵)、すなわち、ICカードの記憶部201に格納されているユーザの検証鍵等を入力する。
但し、検証装置330においてデジタル署名値(署名SIGska(X)303)からハッシュ値H(時刻証明対象値)を生成可能な場合は、ハッシュ値自体を入力しなくてもよい。この場合は、デジタル署名値(署名SIGska(X)303)の入力によりハッシュ値H(時刻証明対象値)も入力したものとする。
なお、検証対象データ入力部331が入力するデータの詳細は、具体例を紹介しながら後述する。
【0043】
検証処理部332は、検証対象データ入力部331により入力されたデータを用いて検証対象のローカルタイムスタンプの検証を行う。
本実施の形態では、検証処理部332には、ハッシュチェーン判断部3321(一方向演算値連鎖判断部)、アクセス領域判断部3322(送信条件判断部)、TSAタイムスタンプ時刻差判断部3323(時刻差判断部)、デジタル署名照合部3324が含まれる。
以下、それぞれについて説明する。
【0044】
ハッシュチェーン判断部3321は、ローカルサーバ130に蓄積された累積ハッシュ値のハッシュチェーンが構築できるかを判断する。
つまり、検証対象データ入力部331により入力された複数のハッシュ値、検証対象のローカルタイムスタンプ、先行TSAタイムスタンプから後行TSAタイムスタンプまでの間に生成されたローカルタイムスタンプを用いてハッシュ演算を行い、複数のハッシュ値が時系列に沿って連鎖するか否かを判断する。
【0045】
アクセス領域判断部3322は、ローカルサーバ130がTSAサーバ150への累積ハッシュ値の送信条件に従っているか、すなわちアクセス領域Lに含まれる累積ハッシュ値がTSAサーバ150へ送信されていないという事態が生じていないかを判断する。
具体的には、検証対象データ入力部331により入力された複数のハッシュ値のうち先行累積ハッシュ値、後行累積ハッシュ値を除く他の累積ハッシュ値の各々が、アクセス領域L外であるかを判断する。
【0046】
TSAタイムスタンプ時刻差判断部3323は、先行TSAタイムスタンプに示されている時刻と後行TSAタイムスタンプに示されている時刻との間の時刻差が妥当であるかを判断する。
具体的には、TSAタイムスタンプ時刻差判断部3323は、検証対象データ入力部331により入力された複数の累積ハッシュ値の個数とローカルサーバ130におけるローカルタイムスタンプの生成周期とを乗算し、乗算により得られた乗算値と、先行TSAタイムスタンプと後行TSAタイムスタンプ間の時刻差とを比較して、時刻差の妥当性を判断する。
【0047】
デジタル署名照合部3324は、検証対象のローカルタイムスタンプにローカルサーバの検証鍵(第一タイムスタンプ検証鍵)を適用して得られた値と時刻証明対象値(発行要求R305に含まれていたハッシュ値H304)とを照合して、ローカルタイムスタンプが時刻証明対象値(ハッシュ値H304)のデジタル署名であるかどうかを判断する。
また、デジタル署名照合部3324は、デジタル署名値(署名SIGska(X)303)に対してユーザの検証鍵(デジタル署名検証鍵)を適用して得られた値とユーザデータ(データ(X)301)とを照合して、当該デジタル署名値がユーザデータ(データ(X)301)のデジタル署名であるかを判断する。
【0048】
また、図23において、ユーザ入力部333は、検証装置330の利用者からの各種指示を入力する。
また、表示部334は、検証装置330の利用者に各種情報を表示する。
記憶部335は、例えば、検証対象データ入力部331により入力したデータを記憶し、また、検証処理部332の各部により検証された検証結果を記憶する。
【0049】
図7は、ローカルサーバ130の記憶部236に格納された情報のうち、検証の際に必要な情報と各情報の間の前後関係とを示した図である。
図7に示される各情報は、検証装置330に入力され、検証に用いられる。
【0050】
図7において、ローカルタイムスタンプLTS701はh番目のローカルタイムスタンプである。
ローカルタイムスタンプLTSh+1702は、h+1番目のローカルタイムスタンプである。
ローカルタイムスタンプLTS703は、i番目のローカルタイムスタンプである。
ローカルタイムスタンプLTS704は、j番目のローカルタイムスタンプである。
ローカルタイムスタンプLTSj+1705は、j+1番目のローカルタイムスタンプである。
累積ハッシュ値Lh−1711は、h−1番目の累積ハッシュ値である。
累積ハッシュ値L712は、h番目の累積ハッシュ値である。
累積ハッシュ値Lh+1713は、h+1番目の累積ハッシュ値である。
累積ハッシュ値Li−1714は、i−1番目の累積ハッシュ値である。
累積ハッシュ値L715は、i番目の累積ハッシュ値である。
累積ハッシュ値Lj−1716は、j−1番目の累積ハッシュ値である。
累積ハッシュ値L717は、j番目の累積ハッシュ値である。
TSAタイムスタンプTTS721は、累積ハッシュ値L712に対するTSAタイムスタンプである。
TSAタイムスタンプTTS722は、累積ハッシュ値L716に対するTSAタイムスタンプである。
ここで、h<i≦jである。
なお、TSAタイムスタンプTTS721はローカルタイムスタンプLTS703の直前のTSAタイムスタンプとし、TSAタイムスタンプTTS722はローカルタイムスタンプLTS703の直後のTSAタイムスタンプとする。
【0051】
図7の例において、ローカルタイムスタンプLTS703を検証対象のローカルタイムスタンプとした場合に、TSAタイムスタンプTTS721が先行TSAタイムスタンプ(先行第2タイムスタンプ)となり、TSAタイムスタンプTTS722が後行TSAタイムスタンプ(後行第2タイムスタンプ)となる。
また、累積ハッシュ値L712はTSAタイムスタンプTTS721の時刻証明の対象の累積ハッシュ値であり、先行累積ハッシュ値(先行一方向演算値)となる。
また、累積ハッシュ値L717はTSAタイムスタンプTTS722の時刻証明の累積ハッシュ値であり、後行累積ハッシュ値(後行一方向演算値)となる。
また、累積ハッシュ値L712から累積ハッシュ値L717までの複数の累積ハッシュ値(対象区間一方向演算値)も検証装置330への入力対象となる。
更に、TSAタイムスタンプTTS721の生成後からTSAタイムスタンプTTS722の生成前までに生成されたLTSh+1702〜LTS704のローカルタイムスタンプ(対象区間第1タイムスタンプ)も検証装置330への入力対象となる。
【0052】
図8は検証装置330がローカルタイムスタンプの検証を行う手順を示したフローチャートである。
以下、検証装置330が、あるユーザA1aが作成したデータXの作成時刻およびその後の改竄の有無を、データXのローカルタイムスタンプLTS703などの情報をもとに検証する方法を説明する。
【0053】
まず、ステップ801にて、検証装置330の検証対象データ入力部331が、ユーザA1aおよびローカルサーバ130から検証に必要な情報を入手する(検証対象データ入力ステップ)。
具体的には、ユーザA1aから、データX、データXのデジタル署名SIGska(X)、ユーザの検証鍵(ICカードに記憶されている検証鍵)と、データXに対応するローカルタイムスタンプLTS703を入手する。
また、ローカルサーバ130に対してデジタル署名SIGska(X)に基づく発行要求Rを送り、ローカルサーバ130から、ローカルタイムスタンプLTS703の直前のTSAタイムスタンプTTS721、直後のTSAタイムスタンプTTS722、およびその間のすべての累積ハッシュ値L712、Lh+1713、…、Lj−1716、L717、さらには、その間のすべてのローカルタイムスタンプLTSh+1702、…、LTS704を入手する。また、ローカルサーバ130から、ローカルタイムスタンプLTS703生成時のデジタル署名に用いた署名鍵に対応するローカルサーバの検証鍵も入手する。
【0054】
次に、ハッシュチェーン判断部3321が、ステップ802にて、ローカルサーバから入手した累積ハッシュ値L712、Lh+1713、…、Lj−1716、L717、ローカルタイムスタンプLTSh+1702、…、LTS704から図7のようなハッシュチェーンが構築できるかを調べる。具体的には、先の順序の累積ハッシュ値(例えば、L)にローカルタイムスタンプ(例えばLTSh+1)を連結してハッシュ演算を行って、後の順序の累積ハッシュ値(例えばLh+1)が得られるかを判断する。時系列に沿って順次累積ハッシュ値に対してこの演算を行って、全ての累積ハッシュ値が連鎖するかどうかを判断する。
もし、ハッシュチェーンが構築できなければ、ローカルサーバによるローカルタイムスタンプの改竄があったことが検知されるので、検証失敗とする(ステップ808)。
【0055】
次に、アクセス領域判断部3322が、ステップ803にて、TSAタイムスタンプの時刻証明の対象となっていない累積ハッシュ値Lh+1713、…、Lj−1716がすべてアクセス領域Lの領域外の値であるかを調べる。
もし、アクセス領域Lの領域内の値が存在すれば、ローカルサーバ130が本来TSAタイムスタンプを受領すべきにもかかわらず受領していないことが検知されるので、検証失敗とする(ステップ808)。
【0056】
次に、ステップ804にて、TSAタイムスタンプ時刻差判断部3323が、累積ハッシュの数と、TSAタイムスタンプTTS721およびTSAタイムスタンプTTS722の時間差とが矛盾しないかを調べる。
両TSAタイムスタンプの時間差をΔとし、ローカルタイムスタンプの発行周期をτとすると、Δ=(j−h)・τが成り立っていなければならない。
もし、Δと(j−h)・τの差が許容し得る範囲(閾値)を超えている場合には、本来取得すべき時刻とは異なる時刻にTSAタイムスタンプを受領していたことが分かり、したがってユーザとローカルサーバ管理者の結託によるタイムスタンプの改竄があったことが検知されるので、検証失敗とする(ステップ808)。
一方、許容すべき範囲内であれば、ローカルタイムスタンプLTS703は確かに図7に示された前後関係に位置するローカルタイムスタンプであることが確認できる。
したがって、この段階でローカルタイムスタンプLTS703の発行時刻を確認できたことになる。
【0057】
続いて、デジタル署名照合部3324が、ステップ805にて、ローカルサーバ130の検証鍵を用いて、このローカルタイムスタンプLTS703がSIGska(X)のハッシュ値Hに対するデジタル署名であるかを調べる。
つまり、ローカルサーバ130の検証鍵を用いてローカルタイムスタンプLTS703を復号し、復号値がSIGska(X)のハッシュ値Hと一致するか否かを照合する。
もし、ハッシュ値Hに対するデジタル署名でなければ、このローカルタイムスタンプがデータXに対するものでないことが検知されるので、検証失敗とする(ステップ808)。
【0058】
最後に、デジタル署名照合部3324が、ステップ806にて、ユーザの検証鍵を用いて、SIGska(X)がデータXのデジタル署名であるかを調べる。
具体的には、ユーザの検証鍵を用いてデジタル署名SIGska(X)を復号し、復号値がデータXのハッシュ値と一致するか否かを照合する。
SIGska(X)がデータXのデジタル署名でなければ、このユーザA1aのデータではないことが検知されるので、検証失敗とする(ステップ808)。
データXのデジタル署名であれば、検証に成功する(ステップ807)。
【0059】
なお、図8の構成では、検証失敗の場合同一のステップ808に至るとしているが、これを検証失敗となったステップごとに異なる検証失敗時の処理を行う構成としてもよい。
【0060】
また、ステップ801で検証者はローカルサーバ130に対して発行要求Rを送り、必要な情報を入手する構成としたが、ローカルサーバがローカルタイムスタンプの発行ごとにあるいは定期的にこれらの情報を公開サーバにアップロードし、必要に応じて検証装置330が自由に参照できる構成としてもよい。
【0061】
以上の検証方法により、次のような不正をある確率で検出することができる。
あるユーザが時刻iにデータXを作成し、ローカルタイムスタンプLTS703を受け取ったとする。その後時刻j(j>i)において、このローカルタイムスタンプLTS703を改竄し、データYに対するローカルタイムスタンプであったことにしたいとする。
もし時刻iから時刻jの間にTSAサーバへのアクセスが発生していたならば、もはやLTS703の改竄はできない。
しかし、そうでなければ改竄できる可能性がある。
ユーザはローカルサーバ管理者に依頼し、LTS703を改竄してもらう。
ローカルサーバ管理者はローカルタイムスタンプ発行用の署名鍵sk401を所有しているため、これは可能である。
ところが、この改竄により、ローカルサーバ管理者は時刻i以降時刻jに至るまでの累積ハッシュ値を再計算しなければならなくなる。
すると、再計算された累積ハッシュはある確率でアクセス領域Lの領域内の値となる。
たとえこのような累積ハッシュに対してTSAタイムスタンプを受領したとしても、それは現在時刻すなわち時刻jにおけるTSAタイムスタンプであり、本来受領すべき時刻のものではない。
そのため、この改竄は図8のステップ804により検出されてしまう。
一方、TSAタイムスタンプを受領しなかったとしたら、図8のステップ803により改竄を検出されてしまう。
また、このようにアクセス領域Lの領域内に含まれた累積ハッシュ値をL(i<k<j)として、時刻kにおけるデータを改竄することによりLをアクセス領域外の値になるようにしようとしても、それはそのデータを作成したユーザとの結託をしない限り不可能である。
なぜならば、データを書き換えるにはそのユーザの署名が必要だからである。以上のことから、過去のローカルタイムスタンプの改竄をある確率で検出することができる。
【0062】
このように、本実施の形態によれば、ローカルタイムスタンプの発行により、データの前後関係を保証しつつ、TSAサーバへのアクセスを削減することが可能になり、TSAタイムスタンプの発行コストの削減やネットワークトラフィックの抑制を図ることができる。
【0063】
また、ユーザとローカルサーバ管理者の結託によるローカルタイムスタンプの改竄をある確率で検出することができるので、ローカルサーバ管理者が信用できない場合においても信頼性を確保することができる。
【0064】
実施の形態2.
本発明の実施の形態2は、本発明の実施の形態1において定期的に発行していたローカルタイムスタンプの発行方式を、ローカルタイムスタンプの発行要求が到着するごとに発行する方式としたものである。
【0065】
図9は本発明の実施の形態2における各装置の内部構成図である。
図2に示した本発明の実施の形態1における各装置の内部構成図とほぼ同一であるが、タイマ部234が省略されている点が異なる。
【0066】
(タイムスタンプの生成)
図10は本発明の実施の形態2におけるローカルタイムスタンプの発行手順を示すフローチャートである。
図10において、累積ハッシュ値の更新600bは図6に示した実施の形態1におけるローカルタイムスタンプの発行手順と同一である。
【0067】
図4、図9および図10により、本発明の実施の形態2におけるローカルタイムスタンプの発行手順を説明する。
ただし、累積ハッシュ値の更新過程600bについては図6と同一であるから説明を省略し、ローカルタイムスタンプの生成過程1000のみ説明する。
ステップ1001にて、ローカルサーバ130では、ローカルタイムスタンプ生成部233が、コンピュータ120aからのローカルタイムスタンプの発行要求R305を受付部235から受け取る。
これは、ローカルタイムスタンプ生成部322が受付部235を常に監視することにより、入出力部237により発行要求R305が受信される度に、ローカルタイムスタンプの生成処理が行われる。
次に、ステップ1002にて、ローカルタイムスタンプ生成部233が、発行要求R305からハッシュ値H304を抜き出す。
ステップ1003にて、ローカルタイムスタンプ生成部233は、ハッシュ値H304に対し、記憶部236に格納された署名鍵sk401および関連情報I402を用いてローカルタイムスタンプLTS403を生成する。
そして、ステップ1004にて、ローカルタイムスタンプ生成部233は、ローカルタイムスタンプLTS403をコンピュータに送るとともに、ステップ1005にて発行要求R305とローカルタイムスタンプLTS403を記憶部236に格納する。
【0068】
(タイムスタンプの検証)
図11は、本発明の実施の形態2におけるローカルタイムスタンプの検証方法を示したフローチャートである。
図8に示した本発明の実施の形態1における検証方法と比較すると、ステップ804の累積ハッシュ数とTSAタイムスタンプの時間差との比較が省略されている。
また、図24は、本実施の形態に係る検証装置330の構成例を示すものであるが、実施の形態1に示した図23と比較すると、TSAタイムスタンプ時刻差判断部3323が省略されている。
これは、実施の形態1では定期的にローカルタイムスタンプを発行していたため、この比較を行うことによりローカルサーバ管理者とユーザの結託によるローカルタイムスタンプの改竄を検出することができたが、実施の形態2では不定期にローカルタイムスタンプを発行するため、このような比較ができないことによる。
このため、ローカルタイムスタンプの発行時刻を特定することはできない。
しかしながら、ローカルタイムスタンプ間の前後関係については保証し得る。上記の部分を除いては、実施の形態2における検証は実施の形態1における検証と同様である。
【0069】
本実施の形態によれば、ローカルタイムスタンプの発行により、データの前後関係を保証しつつ、TSAサーバへのアクセスを削減することが可能になり、TSAタイムスタンプの発行コストの削減やネットワークトラフィックの抑制を図ることができる。
【0070】
また、ローカルタイムスタンプの発行要求が出されると、即時にローカルタイムスタンプを発行するため、ユーザの待ち時間を低減することができる。
【0071】
実施の形態3.
本発明の実施の形態1および2は、ユーザがICカードを所持し、作成したデータに署名を付けることで事後の改竄を困難にする方式であったが、実施の形態3はTSAサーバへのアクセスに合わせてローカルサーバの署名鍵を更新することにより事後の改竄を困難にする方式である。
【0072】
図12は、本発明の実施の形態3におけるタイムスタンプ生成システムの構成図である。
本発明の実施の形態1および2におけるタイムスタンプ生成システムの構成図である図1と比較して、各ユーザはICカードを必要とせず、したがってICカードR/Wも必要としない。
その他の部分は図1と同一である。
【0073】
図13は、図12の各構成要素の内部構成図である。
ICカードおよびICカードR/Wの部分が省略され、ローカルサーバ130に鍵生成部238が追加された点以外は、本発明の実施の形態1における内部構成図である図2と同一である。
【0074】
鍵生成部238は、アクセス制御部231により累積ハッシュ値がアクセス領域Lに合致していると判断される度に、ローカルタイムスタンプ生成部233によるローカルタイムスタンプの生成の際のデジタル署名に用いられる署名鍵を生成する。
本実施の形態では、記憶部236は、鍵生成部238により生成された署名鍵を記憶し、鍵生成部238は、新たに署名鍵を生成する度に、新たな署名鍵の生成の際に記憶部236に記憶されている既存の署名鍵に代えて新たな署名鍵を記憶部236に記憶させる。つまり、記憶部236に記憶されている署名鍵は鍵生成部238により新たに署名鍵が生成される度に削除され、最新の署名鍵だけが記憶部236に記憶される。
そして、本実施の形態では、ローカルタイムスタンプ生成部233は、記憶部236に記憶されている署名鍵を用いてデジタル署名を行って、ローカルタイムスタンプを生成する。
また、鍵生成部238は、新たに署名鍵を生成する度に、当該新たな署名鍵と対になる検証鍵を生成し、更に、新たな署名鍵の生成の際に記憶部236に記憶されている既存の署名鍵を用いて、新たに生成した検証鍵のデジタル署名を公開鍵証明書(検証鍵証明書)として生成する。
そして、記憶部236は、新たに生成した署名鍵、検証鍵及び公開鍵証明書を記憶する。
前述したように、署名鍵については、以前の署名鍵は削除され、最新の署名鍵だけが記憶されるが、検証鍵、公開鍵証明書については以前のものは削除されず、検証鍵、公開鍵証明書は作成される度に記憶部236に順次蓄積されていく。
また、後述するように、記憶部236に順次蓄積された複数の公開鍵証明書は、時系列に沿って連鎖しており、公開鍵証明書チェーンが構築される。
【0075】
図14は、ユーザがデータを作成しローカルタイムスタンプの発行要求を生成するまでのデータの流れを示した図である。
本発明の実施の形態1および2におけるデータの流れを示した図3と比較して、ICカードおよびICカードR/Wの部分が無いこと、およびハッシュ値H304の元データがデータX301そのものである点以外は図3と同一である。
【0076】
図15は、ローカルサーバが発行要求を受信してから、ローカルタイムスタンプを発行して累積ハッシュ値を更新し、署名鍵を更新して公開鍵証明書を作成するまでのデータの流れを示した図である。
【0077】
図15において、署名鍵skι−11501はローカルサーバのι−1番目の署名鍵であり、検証鍵vkι−11502はそれに対応する検証鍵である。
署名鍵skι1503はローカルサーバのι番目の署名鍵であり、検証鍵vkι1504はそれに対応する検証鍵である。
公開鍵証明書CERι1505は検証鍵vkι1504に対し署名鍵skι−11501を用いて作成した公開鍵証明書であり、検証鍵vkι−11502を用いて検証することができる。つまり、公開鍵証明書CERι1505を検証鍵vkι−11502で復号すれば、復号値は検証鍵vkι1504に一致することになる。
検証鍵vkι−11502に対しても図示しない公開鍵証明書CERι−1が発行されており、これは図示しない検証鍵vkι−2を用いて検証することができる。
このようにして公開鍵証明書のチェーンCERι、CERι−1、…、CERが構築される。
最初の公開鍵証明書CERは署名鍵skによって作成され、検証鍵vkを用いて検証されるが、この検証鍵については信頼できるCA(Certificate Authority)から公開鍵証明書を発行され、検証者が信認しうるものである。
これら及び鍵生成部238が追加されている以外の部分については図4と同一である。
【0078】
なお、検証鍵vkは必ずしも公開鍵証明書を発行されている必要はなく、検証者が信認できるものであればよい。
【0079】
(タイムスタンプの生成)
次に、図14乃至図17を用いて、本発明の実施の形態3におけるタイムスタンプ生成方法を説明する。
ここでは、ユーザA1aが作成したデータに対するタイムスタンプ生成方法を説明するが、他のユーザの場合も同様である。
【0080】
図16は、ユーザがデータを作成してから、ローカルサーバ130よりローカルタイムスタンプを受領し記憶部224に格納するまでの動作を示すフローチャートである。
【0081】
ユーザは図示しないキーボードやマウスなどのコンピュータ操作用機器を用いてコンピュータ120aに対する操作を行い、データX301を作成あるいは修正したものとする。
ユーザがローカルタイムスタンプの発行要求を指示すると、ステップ1601においてコンピュータ120aはデータX301からハッシュ値H304を計算する。
この計算はH=hash(X)により行う。
次に、ステップ1602にて、ハッシュ値H304から発行要求R305を作成する。そしてステップ1603にて発行要求R305をローカルサーバ130に送る。
ステップ1604にて、ローカルサーバから返ってきたローカルタイムスタンプLTS403を記憶部224に格納する。
【0082】
なお、上記説明ではユーザがタイムスタンプの発行要求の作成をコンピュータに指示するものとして説明したが、コンピュータがある規則に基づいて自発的に発行要求を作成する構成であってもよい。
【0083】
図17は、ローカルサーバ130がローカルタイムスタンプLTS403を発行する際の手順を示すフローチャートである。
ローカルサーバ130は、図17に示された処理を無限回繰り返すが、ここではi回目の処理を例に説明する。
また、現在の署名鍵をskι−11501とする。
なお、処理の中で累積ハッシュ値の更新を行うが、処理を行う前の段階での最新の累積ハッシュ値はLi−1404であり、L405は更新後の累積ハッシュ値であることに注意されたい。
【0084】
図17の処理は主にローカルタイムスタンプの生成600aと累積ハッシュ値および署名鍵・検証鍵の更新1700aから成り立っている。
このうちローカルタイムスタンプの生成600aに関しては図6と同一である。
【0085】
累積ハッシュ値および署名鍵・検証鍵の更新1700aを説明する。
ステップ608にて、累積ハッシュ値演算部232が、ローカルタイムスタンプLTS403を用いて新しい累積ハッシュ値を計算する(擬似ランダム値生成ステップ)。
具体的には、L=hash(Li−1‖LTS)によりi番目の累積ハッシュ値を計算する。
次に、ステップ609にて、アクセス制御部231において累積ハッシュ値L405がアクセス領域L内の値であるかを判定する(アクセス制御ステップ)。ここでアクセス領域LはTSAサーバ150にアクセスすべき累積ハッシュ値の集合であり、あらかじめローカルサーバの管理者が定めたものであって、詳細は実施の形態1で述べたとおりである。
累積ハッシュ値L405がアクセス領域L内にあるとき、すなわちL∈Lのとき、まずステップ1701にて、鍵生成部238が、記憶部236内において新しい署名鍵skι1503および検証鍵vkι1504を生成し、記憶部236に記憶させる。
続いて、鍵生成部238は、ステップ1702にて、現在の署名鍵skι−11501を用いて新しい検証鍵vkι1504の公開鍵証明書CERι1505を生成し、記憶部236に記憶させる。
続いて、記憶部236が、ステップ1703にて、現在の署名鍵skι−11501を消去する。
次に、アクセス制御部231が、ステップ1704にて、累積ハッシュ値L405をTSAサーバ150に送る(アクセス制御ステップ)。
ステップ1705にて、アクセス制御部231が、TSAサーバ150から累積ハッシュ値L405に対するTSAタイムスタンプを受け取り(アクセス制御ステップ)、ステップ1706にてTSAタイムスタンプを記憶部236に格納する。
さらに、アクセス制御部231は、ステップ1707にて累積ハッシュ値L405を記憶部236に格納する。
【0086】
ステップ609にて累積ハッシュ値L405がアクセス領域L内の値でなかった場合、署名鍵・検証鍵の更新とTSAへのアクセスは行わずに、アクセス制御部231は、ステップ1707にて累積ハッシュ値L405を記憶部236に格納する。
【0087】
なお、ここでは、累積ハッシュ値がアクセス領域Lに該当する場合のみ署名鍵・検証鍵の更新とTSAサーバ150へのアクセスを行うとしたが、これに別の判断基準、例えば最後にTSAサーバ150にアクセスしてからのカウント数が一定値に達した場合などを加え、各判断基準のうちいずれか一つが合致すれば署名鍵・検証鍵を更新しTSAサーバ150にアクセスする構成としてもよい。
【0088】
また、署名鍵および検証鍵の更新(1700b)に関しては、累積ハッシュ値がアクセス領域内の値であるという条件に、これとは別の判断基準、例えば最後に鍵更新してからのカウント数が一定値に達した場合などを加え、各判断基準のうちいずれか一つが合致すれば署名鍵および検証鍵の更新(1700b)を行う構成としてもよい。
つまり、累積ハッシュ値がアクセス領域Lに含まれないために署名鍵の生成が連続して所定数の累積ハッシュ値に対して行われなかった場合に、新たに生成された累積ハッシュ値がアクセス領域Lに含まれないとアクセス制御部231により判断された場合であっても、鍵生成部238は、署名鍵の生成を行うようにしてもよい。
このような構成にすることで、より改竄が困難になることが、後述するタイムスタンプの検証過程から理解される。
【0089】
また、ステップ1704にて累積ハッシュ値をTSAサーバ150に送信したが、これに加えてその時点での検証鍵をも送信し、TSAサーバ150から累積ハッシュ値及び検証鍵に対するTSAタイムスタンプを受信するようにしてもよい。
これにより、後述する検証過程での公開鍵証明書チェーンの構築を簡略化することができる。
【0090】
上記説明では、ユーザとローカルサーバ管理者とを区別したが、ローカルサーバ管理者がユーザと同じようにデータを作成する構成であってもよい。
したがって、例えばユーザが存在せず、コンピュータ120aの機能がローカルサーバ130内に統合されていて、ローカルサーバ管理者が単独で本システムを用いる方式であってもよい。
【0091】
(タイムスタンプの検証)
次に、図15乃至図19及び図25を用いてローカルタイムスタンプの検証方法を述べる。
【0092】
まず、図25を参照して、本実施の形態に係る検証装置330について説明する。
図25に示す構成では、実施の形態1にて示した図23の構成と比較して、証明書チェーン判断部3325(検証鍵証明書連鎖判断部)が追加されている。
また、本実施の形態では、検証対象データ入力部331は、ローカルサーバ130に記憶されている複数の検証鍵及び複数の公開鍵証明書を入力する。
また、デジタル署名照合部3324は、ローカルタイムスタンプのデジタル署名の正当性のみを判断する。
その他の要素は、図23に示したものと同様である。
【0093】
証明書チェーン判断部3325は、検証対象データ入力部331により入力された複数の検証鍵及び複数の公開鍵証明書を用いて、公開鍵証明書チェーンが構築できるか、すなわち、複数の公開鍵証明書が時系列に沿って連鎖するか否かを判断する。
【0094】
図18は、ローカルサーバ130の記憶部236に格納された情報のうち、検証の際に必要な情報と各情報の間の前後関係とを示した図である。
図18において、ローカルタイムスタンプLTS1801は、h番目のローカルタイムスタンプである。
ローカルタイムスタンプLTSh+11802は、h+1番目のローカルタイムスタンプである。
ローカルタイムスタンプLTS1803は、i番目のローカルタイムスタンプである。
ローカルタイムスタンプLTS1804は、j番目のローカルタイムスタンプである。
ローカルタイムスタンプLTSj+11805は、j+1番目のローカルタイムスタンプである。
累積ハッシュ値Lh−11811は、h−1番目の累積ハッシュ値である。
累積ハッシュ値L1812は、h番目の累積ハッシュ値である。
累積ハッシュ値Lh+11813は、h+1番目の累積ハッシュ値である。
累積ハッシュ値Li−11814は、i−1番目の累積ハッシュ値である。
累積ハッシュ値L1815は、i番目の累積ハッシュ値である。
累積ハッシュ値Lj−11816は、j−1番目の累積ハッシュ値である。
累積ハッシュ値L1817は、j番目の累積ハッシュ値である。
TSAタイムスタンプTTS1821は、累積ハッシュ値L1812に対するTSAタイムスタンプである。
TSAタイムスタンプTTS1822は、累積ハッシュ値L1816に対するTSAタイムスタンプである。
ここで、h<i≦jである。
なお、TSAタイムスタンプTTS1821はローカルタイムスタンプLTS1803の直前のTSAタイムスタンプとし、TSAタイムスタンプTTS1822はローカルタイムスタンプLTS1803の直後のTSAタイムスタンプとする。
【0095】
同じく図18において、署名鍵sk1831は、1番目の署名鍵である。
署名鍵skは、2番目の署名鍵である。
署名鍵skι−11833は、ι−1番目の署名鍵である。
署名鍵skι1834は、ι番目の署名鍵である。
なお、署名鍵skι1834に先行する署名鍵sk1831〜署名鍵skι−11833は、この時点では既に消去されており、これらの署名鍵の実体は存在しない。
検証鍵vk1835は、1番目の検証鍵である。
検証鍵vk1836は、2番目の検証鍵である。
検証鍵vkι―11837は、ι−1番目の検証鍵である。
検証鍵vkι1838は、ι番目の検証鍵である。
公開鍵証明書CER1839は、検証鍵vk1835に対する公開鍵証明書である。
公開鍵証明書CER1840は、検証鍵vk1836に対する公開鍵証明書である。
公開鍵証明書CERι−11841は、検証鍵vkι−11837に対する公開鍵証明書である。
公開鍵証明書CERι1842は、検証鍵vkι1838に対する公開鍵証明書である。
公開鍵証明書CER1839は、CAが発行するものとする。
【0096】
図19は検証者がローカルタイムスタンプの検証を行う手順を示したフローチャートである。
【0097】
以下、検証装置330が、あるユーザが作成したデータXの作成時刻およびその後の改竄の有無を、データXのローカルタイムスタンプLTS1803やローカルタイムスタンプLTS1803を検証するための検証鍵vkι1838などの情報をもとに検証する方法を説明する。
【0098】
まず、ステップ1901にて、検証装置330の検証対象データ入力部331は、ユーザおよびローカルサーバ130から検証に必要な情報を入手する(検証対象データ入力ステップ)。
具体的には、ユーザからデータXに対応するローカルタイムスタンプLTS1803を入手する。
また、ローカルサーバ130に対してハッシュ値Hに基づく発行要求Rを送り、ローカルサーバ130から、ローカルタイムスタンプLTS1803の直前のTSAタイムスタンプTTS1821、直後のTSAタイムスタンプTTS1822、およびその間のすべての累積ハッシュ値L1812、Lh+11813、…、Lj−11816、L1817、さらには、その間のすべてのローカルタイムスタンプLTSh+11802、…、LTS1804、さらには、ローカルタイムスタンプLTS1803を検証するための検証鍵vkι1838、およびそれに至るまでのすべての検証鍵vk1835、vk1836、…、vkι−11837、さらには、検証鍵vkι1838の公開鍵証明書CERι1842、およびそれに至るまでのすべての公開鍵証明書CER1839、CER1840、…、CERι−11841を入手する。
【0099】
次に、ハッシュチェーン判断部3321が、ステップ1902にて、ローカルサーバから入手した累積ハッシュ値L1812、Lh+11813、…、Lj−11816、L1817、ローカルタイムスタンプLTSh+11802、…、LTS1804から図18のようなハッシュチェーンが構築できるかを調べる(一方向演算値連鎖判断ステップ)。
もし構築できなければ、ローカルサーバによるローカルタイムスタンプの改竄があったことが検知されるので、検証失敗とする(ステップ1908)。
【0100】
次に、アクセス領域判断部3322が、ステップ1903にて、累積ハッシュ値Lh+11813、…、Lj−11816がすべてアクセス領域Lの領域外の値であるかを調べる(送信条件判断ステップ)。
もし、アクセス領域Lの領域内の値が存在すれば、ローカルサーバが本来TSAタイムスタンプを受領すべきにもかかわらず受領していないことが検知されるので、検証失敗とする(ステップ1908)。
【0101】
次に、TSAタイムスタンプ時刻差判断部3323が、ステップ1904にて、累積ハッシュの数と、TSAタイムスタンプTTS1821およびTSAタイムスタンプTTS1822の時間差とが矛盾しないかを調べる。
両TSAタイムスタンプの時間差をΔとし、ローカルタイムスタンプの発行周期をτとすると、Δ=(j−h)・τが成り立っていなければならない。
もし、Δと(j−h)・τの差が許容し得る範囲(閾値)を超えている場合は、本来取得すべき時刻とは異なる時刻にTSAタイムスタンプを受領していたことが分かり、したがってユーザとローカルサーバ管理者の結託によるタイムスタンプの改竄があったことが検知されるので、検証失敗とする(ステップ1908)。
一方、許容すべき範囲内であれば、ローカルタイムスタンプLTS1803は確かに図18に示された前後関係に位置するローカルタイムスタンプであることが確認できる。
したがって、この段階でローカルタイムスタンプLTS1803の発行時刻を確認できたことになる。
【0102】
続いて、デジタル署名照合部3324が、ステップ1905にて、検証鍵vkι1838を用いて、このローカルタイムスタンプLTS1803がデータXのハッシュ値Hに対するデジタル署名であるかを調べる(デジタル署名照合ステップ)。
もしハッシュ値Hに対するデジタル署名でなければ、このローカルタイムスタンプがデータXに対するものでないことが検知されるので、検証失敗とする(ステップ1908)。
【0103】
最後に、証明書チェーン判断部3325が、ステップ1906にて、図18のような公開鍵証明書チェーンが構築できるかを調べる。
もし、構築できなければ、途中で不正な署名鍵によりローカルタイムスタンプの発行が行われたことが検知されるので、検証失敗とする(ステップ1908)。
構築できれば、検証に成功する(ステップ1907)。
【0104】
なお、図19の構成では、検証失敗の場合同一のステップ1908に至るとしているが、これを検証失敗となったステップごとに異なる検証失敗時の処理を行う構成としてもよい。
【0105】
また、ステップ1901で検証装置330はローカルサーバ130に対して発行要求Rを送り、必要な情報を入手する構成としたが、ローカルサーバがローカルタイムスタンプの発行ごとにあるいは定期的にこれらの情報を公開サーバにアップロードし、必要に応じて検証者が自由に参照できる構成としてもよい。
【0106】
また、ステップ1906で先頭の公開鍵証明書CER1839にいたるまでの公開鍵証明書チェーンを構築したが、もし途中でTSAサーバ150からその時点での検証鍵に対するTSAタイムスタンプが発行されていれば、その検証鍵に対応した公開鍵証明書に至るまでの公開鍵証明書チェーンを構築し、それをもって検証成功(ステップ1907)と判定する構成としてもよい。
つまり、TSAサーバ150から検証鍵に対するTSAタイムスタンプが発行されている場合は、検証対象データ入力部331は、最新の検証鍵及び最新の公開鍵証明書から、TSAサーバ150によりTSAタイムスタンプが生成されている検証鍵及び当該検証鍵に対応する検証鍵証明書までの検証鍵及び公開鍵証明書を入力し、証明書チェーン判断部3325は、検証対象データ入力部331により入力された公開鍵証明書において公開鍵証明書チェーンが構築できるかを判断する。
【0107】
以上の検証方法により、次のような不正をある確率で検出することができる。
あるユーザが時刻iにデータXを作成し、ローカルタイムスタンプLTS1803を受け取ったとする。
その後時刻j(j>i)において、このローカルタイムスタンプLTS1803を改竄し、データYに対するローカルタイムスタンプであったことにしたいとする。
もし時刻iから時刻jの間にTSAへのアクセスが発生していたならば、もはやLTS1803の改竄はできない。
なぜならば、その当時の署名鍵は消去されてしまっているからである。
しかし、そうでなければ改竄できる可能性がある。
ユーザはローカルサーバ管理者に依頼し、LTS1803を改竄してもらう。ローカルサーバ管理者は記憶部236内にローカルタイムスタンプ発行用の署名鍵skι1834を保有しているため、これは可能である。
ところが、この改竄により、ローカルサーバ管理者は時刻i以降の累積ハッシュ値を再計算しなければならなくなる。
すると、再計算された累積ハッシュはある確率でアクセス領域Lの領域内の値となる。たとえこのような累積ハッシュに対してTSAタイムスタンプを受領したとしても、それは現在時刻すなわち時刻jにおけるTSAタイムスタンプであり、本来受領すべき時刻のものではない。そのためこの改竄は図19のステップ1904により検出されてしまう。
また、たとえTSAにアクセスしないとしても、アクセス領域Lの領域内の値になったならば、署名鍵skι1834が更新され、署名鍵skι+1となる。本来TSAのアクセスの際にのみ更新されるべきところが、TSAアクセス以外に更新が発生することとなる。これは検出可能である。具体的には、本来1つの署名鍵で署名すべきローカルタイムスタンプであるLTS1801、…、LTS1804が1つの検証鍵vkι1838で検証できるかどうかを調べることにより、検出できる。以上のことから、過去のローカルタイムスタンプの改竄をある確率で検出することができる。
【0108】
このように、本実施の形態によれば、ローカルタイムスタンプの発行により、データの前後関係を保証しつつ、TSAサーバへのアクセスを削減することが可能になり、TSAタイムスタンプの発行コストの削減やネットワークトラフィックの抑制を図ることができる。
【0109】
また、ユーザとローカルサーバ管理者の結託によるローカルタイムスタンプの改竄をある確率で検出することができるので、ローカルサーバ管理者が信用できない場合においても高い信頼性を得ることができる。
【0110】
実施の形態4.
本発明の実施の形態4は、本発明の実施の形態3において定期的に発行していたローカルタイムスタンプの発行方式を、ローカルタイムスタンプの発行要求が到着するごとに発行する方式としたものである。
【0111】
図20は、本発明の実施の形態4における各装置の内部構成図である。
図13に示した本発明の実施の形態3における各装置の内部構成図とほぼ同一であるが、タイマ部234が省略されている点が異なる。
【0112】
(タイムスタンプの生成)
図21は、本発明の実施の形態4におけるローカルタイムスタンプの発行手順を示すフローチャートである。
図21において、累積ハッシュ値の更新および署名鍵・検証鍵の更新1700aは図17に示した実施の形態3におけるローカルタイムスタンプの発行手順と同一である。
【0113】
図15、図20および図21により、本発明の実施の形態4におけるローカルタイムスタンプの発行手順を説明する。
ただし、累積ハッシュ値の更新過程1700aについては図17と同一であるから説明を省略し、ローカルタイムスタンプの生成過程2100のみ説明する。
ステップ2101にて、ローカルサーバ130では、ローカルタイムスタンプ生成部233が、コンピュータ120aからのローカルタイムスタンプの発行要求R305を受付部235から受け取る。
これは、ローカルタイムスタンプ生成部322が受付部235を常に監視することにより、入出力部237により発行要求R305が受信される度に、ローカルタイムスタンプの生成処理が行われる。
次に、ステップ2102にて、ローカルタイムスタンプ生成部322が、発行要求R305からハッシュ値H304を抜き出す。
ステップ2103にて、ローカルタイムスタンプ生成部322が、ハッシュ値H304に対し、記憶部236に格納された署名鍵skι1503および関連情報I402を用いてローカルタイムスタンプLTS403を生成する。
そして、ステップ2104にて、ローカルタイムスタンプ生成部322が、ローカルタイムスタンプLTS403をコンピュータに送るとともに、ステップ2105にて発行要求とローカルタイムスタンプLTS403を記憶部236に格納する。
【0114】
(タイムスタンプの検証)
図22は本発明の実施の形態4におけるローカルタイムスタンプの検証方法を示したフローチャートである。
図19に示した本発明の実施の形態3における検証方法と比較すると、ステップ1904の累積ハッシュ数とTSAタイムスタンプの時間差との比較が省略されている。
また、図26は、本実施の形態に係る検証装置330の構成例を示すものであるが、実施の形態3に示した図25と比較すると、TSAタイムスタンプ時刻差判断部3323が省略されている。
これは、実施の形態3では定期的にローカルタイムスタンプを発行していたため、この比較を行うことによりローカルサーバ管理者とユーザの結託によるローカルタイムスタンプの改竄を検出することができたが、実施の形態4では不定期にローカルタイムスタンプを発行するため、このような比較ができないことによる。
上記の部分を除いては、実施の形態4における検証は実施の形態3における検証と同一である。
【0115】
このように、本実施の形態によれば、ローカルタイムスタンプの発行により、データの前後関係を保証しつつ、TSAへのアクセスを削減することが可能になり、TSAタイムスタンプの発行コストの削減やネットワークトラフィックの抑制を図ることができる。
【0116】
また、ローカルタイムスタンプの発行要求が出されると、即時にローカルタイムスタンプを発行するため、ユーザの待ち時間を低減することができる。
【0117】
以上、様々な実施の形態を示して本発明を説明したが、当業者であれば、本発明の趣旨と範囲は本明細書内の特定の説明に限定されるものではないことが理解されることは言うまでもない。
したがって、例えば実施の形態1と3を組み合わせ、ICカードと署名鍵・検証鍵更新を併用してもよい。このような構成とすることで、ローカルタイムスタンプの信頼性をより高めることができる。
逆に、必ずしも高度な信頼性を必要としないような用途であれば、例えば、実施の形態1に示した手順からICカードによるデジタル署名を省略する運用も可能であるし、また、実施の形態3の手順から署名鍵・検証鍵更新を省略する運用も可能である。
【0118】
また、実施の形態1〜4に示した内容は、TSAサーバ自身に適用可能であることも当業者であれば容易に理解し得るところである。
すなわち、TSAサーバが自らの発行するタイムスタンプの信頼性を高めるために、他のTSAサーバを利用する場合に実施の形態1〜4の技術を適用することができる。
【0119】
ここで、実施の形態1〜4に示したタイムスタンプ発行方式、タイムスタンプの検証方式の主な特徴を再現する。
【0120】
実施の形態1〜4に示したタイムスタンプ発行方式は、ローカルタイムスタンプ間の前後関係を保証する方式であり、TSAサーバへのアクセスを定期的にではなく確率的に行うことにより、ローカルタイムスタンプの改竄を困難にした(=信頼性を向上させた)方式である。
【0121】
実施の形態1〜4に示したタイムスタンプ発行方式は、タイムスタンプを生成するたびに内部値を更新し、確率的に時刻証明機関に内部値を送付し、時刻証明機関のタイムスタンプを受け取っている。
当該内部値はタイムスタンプに依存して決まるものである。
より厳密には、内部値はタイムスタンプと累積ハッシュ値とを入力とする累積ハッシュ値である。
そして、確率は、内部値がある値の集合に含まれる確率である。
また、時間的順序関係は、時刻証明機関の時計の時刻を基準とする関係である。
時刻証明機関の時計の時刻は、複数の時刻証明機関タイムスタンプとタイムスタンプの発行周期とから求められる。
タイムスタンプは、データとその作成者とを関連づける特徴値に対して生成される。この特徴値は、作成者のデジタル署名である。
また、タイムスタンプを発行するための鍵は確率的に更新され、鍵更新は内部値と、最後に鍵更新してからのタイムスタンプ発行回数と、の少なくとも1つに依存して決まる。
また、ハッシュチェーンの値をアクセスの判断基準にすることで、確率的なアクセスを実現すると同時に、改竄検出も容易にしている。
【0122】
そして、実施の形態1に示したタイムスタンプ発行方式は、ユーザの署名を付けることで、より改竄を困難にした方式であり、ローカルタイムスタンプの発行時刻を特定できる方式である。
【0123】
実施の形態2に示したタイムスタンプ発行方式は、ローカルタイムスタンプを即時に発行するものである。
【0124】
実施の形態3に示したタイムスタンプ発行方式は、署名鍵を更新することで、より改竄を困難にした方式である。
そして、ローカルタイムスタンプの発行時刻を特定できる方式である。
【0125】
実施の形態4に示したタイムスタンプ発行方式は、ローカルタイムスタンプを即時に発行するものである。
【0126】
また、実施の形態1〜4に示したタイムスタンプ検証方式は、データの時間的順序関係を検証するタイムスタンプ検証方式であって、当該タイムスタンプに対応した内部値を含む前後の複数の内部値が矛盾していないかを検証する。
また、内部値と時刻証明機関のタイムスタンプとが矛盾していないかを検証する。
また、データとその作成者とを関連づける特徴値とタイムスタンプとが矛盾していないかを検証する。
更に、鍵の更新時期とタイムスタンプとが矛盾していないかを検証する。
【0127】
最後に実施の形態1〜4に示したコンピュータ120、ローカルサーバ130、TSAサーバ150、検証装置330のハードウェア構成例について説明する。
図27は、実施の形態1〜4に示すコンピュータ120、ローカルサーバ130、TSAサーバ150、検証装置330のハードウェア資源の一例を示す図である。なお、図27の構成は、あくまでもコンピュータ120、ローカルサーバ130、TSAサーバ150、検証装置330のハードウェア構成の一例を示すものであり、コンピュータ120、ローカルサーバ130、TSAサーバ150、検証装置330のハードウェア構成は図27に記載の構成に限らず、他の構成であってもよい。
【0128】
図27において、コンピュータ120、ローカルサーバ130、TSAサーバ150、検証装置330は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
【0129】
通信ボード915は、図1に示すように、ネットワークに接続されている。通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続される。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
【0130】
上記プログラム群923には、実施の形態1〜4の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1〜4の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の生成」、「〜の更新」、「〜の設定」、「〜の登録」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0131】
また、実施の形態1〜4の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
【0132】
このように、実施の形態1〜4に示すコンピュータ120、ローカルサーバ130、TSAサーバ150、検証装置330は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0133】
【図1】実施の形態1に係るタイムスタンプ生成システムの構成例を示す図。
【図2】実施の形態1に係るタイムスタンプ生成システムの要素の内部構成例を示す図。
【図3】実施の形態1に係るローカルタイムスタンプの発行要求の生成までのデータの流れを示す図。
【図4】実施の形態1に係るローカルサーバにおけるデータの流れを示す図。
【図5】実施の形態1に係るICカードとコンピュータの動作例を示すフローチャート図。
【図6】実施の形態1に係るローカルサーバの動作例を示すフローチャート図。
【図7】実施の形態1に係るローカルタイムスタンプ、累積ハッシュ値、TSAタイムスタンプの関係を示す図。
【図8】実施の形態1に係る検証装置の動作例を示すフローチャート図。
【図9】実施の形態2に係るタイムスタンプ生成システムの要素の内部構成例を示す図。
【図10】実施の形態2に係るローカルサーバの動作例を示すフローチャート図。
【図11】実施の形態2に係る検証装置の動作例を示すフローチャート図。
【図12】実施の形態3に係るタイムスタンプ生成システムの構成例を示す図。
【図13】実施の形態3に係るタイムスタンプ生成システムの要素の内部構成例を示す図。
【図14】実施の形態3に係るローカルタイムスタンプの発行要求の生成までのデータの流れを示す図。
【図15】実施の形態3に係るローカルサーバにおけるデータの流れを示す図。
【図16】実施の形態3に係るコンピュータの動作例を示すフローチャート図。
【図17】実施の形態3に係るローカルサーバの動作例を示すフローチャート図。
【図18】実施の形態3に係るローカルタイムスタンプ、累積ハッシュ値、TSAタイムスタンプの関係及び署名鍵、検証鍵、公開鍵証明書の関係を示す図。
【図19】実施の形態3に係る検証装置の動作例を示すフローチャート図。
【図20】実施の形態4に係るタイムスタンプ生成システムの要素の内部構成例を示す図。
【図21】実施の形態4に係るローカルサーバの動作例を示すフローチャート図。
【図22】実施の形態4に係る検証装置の動作例を示すフローチャート図。
【図23】実施の形態1に係る検証装置の構成例を示す図。
【図24】実施の形態2に係る検証装置の構成例を示す図。
【図25】実施の形態3に係る検証装置の構成例を示す図。
【図26】実施の形態4に係る検証装置の構成例を示す図。
【図27】実施の形態1〜4に示すコンピュータ120、ローカルサーバ130、TSAサーバ150、検証装置330のハードウェア構成例を示す図。
【符号の説明】
【0134】
1 ユーザ、100 ICカード、110 ICカードR/W、120 コンピュータ、130 ローカルサーバ装置、140 インターネット、150 TSAサーバ装置、201 記憶部、202 署名生成部、203 入出力部、221 入出力部、222 データ処理部、223 ローカルタイムスタンプ要求部、224 記憶部、231 アクセス制御部、232 累積ハッシュ値演算部、233 ローカルタイムスタンプ生成部、234 タイマ部、235 受付部、236 記憶部、237 入出力部、238 鍵生成部、330 検証装置、331 検証対象データ入力部、332 検証処理部、333 ユーザ入力部、334 表示部、335 記憶部、3321 ハッシュチェーン判断部、3322 アクセス領域判断部、3323 TSAタイムスタンプ時刻差判断部、3324 デジタル署名照合部、3325 証明書チェーン判断部。

【特許請求の範囲】
【請求項1】
タイムスタンプ生成装置に接続する情報処理装置であって、
第1タイムスタンプを生成するタイムスタンプ生成部と、
前記タイムスタンプ生成部により第1タイムスタンプが生成される度に、生成された第1タイムスタンプを用いて、擬似ランダム値を生成する擬似ランダム値生成部と、
前記擬似ランダム値生成部により生成された擬似ランダム値が前記タイムスタンプ生成装置による第2タイムスタンプの生成の対象となる第2タイムスタンプ対象値に合致するか否かを判断し、前記擬似ランダム値が前記第2タイムスタンプ対象値に合致する場合に、前記擬似ランダム値を前記タイムスタンプ生成装置に対して送信し、前記タイムスタンプ生成装置から前記擬似ランダム値に対するタイムスタンプを第2タイムスタンプとして受信するアクセス制御部とを有することを特徴とする情報処理装置。
【請求項2】
前記情報処理装置は、更に、
前記擬似ランダム値生成部により生成された擬似ランダム値を記憶する記憶部を有し、
前記アクセス制御部は、
前記擬似ランダム値生成部により生成された擬似ランダム値が前記第2タイムスタンプ対象値に合致しない場合に、前記擬似ランダム値を前記タイムスタンプ生成装置に対して送信することなく、前記記憶部に前記擬似ランダム値を記憶させることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記情報処理装置は、更に、
前記擬似ランダム値生成部により擬似ランダム値が生成される度に、生成された擬似ランダム値を記憶する記憶部を有し、
前記擬似ランダム値生成部は、
前記タイムスタンプ生成部により第1タイムスタンプが生成される度に、生成された第1タイムスタンプと、前記記憶部に記憶されている擬似ランダム値とを用いて、新たな擬似ランダム値を生成することを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記擬似ランダム値生成部は、
生成された第1タイムスタンプと、前記記憶部に記憶されている擬似ランダム値の中で最新の擬似ランダム値とを用いて、新たな擬似ランダム値を生成することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記擬似ランダム値生成部は、
生成された第1タイムスタンプと、前記記憶部に記憶されている擬似ランダム値の中で最新の擬似ランダム値とを用いて一方向演算を行って、新たな擬似ランダム値を生成することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記情報処理装置は、更に、
タイムスタンプの生成を要求するタイムスタンプ生成要求を送信するタイムスタンプ生成要求装置から、デジタル署名のハッシュ値が含まれたタイムスタンプ生成要求を受信する要求入力部を有し、
前記タイムスタンプ生成部は、
前記要求入力部により受信されたタイムスタンプ生成要求からデジタル署名のハッシュ値を抽出し、抽出したデジタル署名のハッシュ値を用いて第1タイムスタンプを生成することを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記情報処理装置は、更に、
前記擬似ランダム値生成部により生成された擬似ランダム値が前記第2タイムスタンプ対象値に合致していると前記アクセス制御部により判断される度に、前記タイムスタンプ生成部による第1タイムスタンプの生成の際のデジタル署名に用いられる署名鍵を生成する鍵生成部を有することを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記情報処理装置は、更に、
前記鍵生成部により生成された署名鍵を記憶する記憶部を有し、
前記鍵生成部は、
新たに署名鍵を生成する度に、新たな署名鍵の生成の際に前記記憶部に記憶されている既存の署名鍵に代えて新たな署名鍵を前記記憶部に記憶させ、
前記タイムスタンプ生成部は、
第1タイムスタンプの生成の際に前記記憶部に記憶されている署名鍵を用いてデジタル署名を行って、第1タイムスタンプを生成することを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記鍵生成部は、
新たに署名鍵を生成する度に、当該新たな署名鍵と対になる検証鍵を生成し、
更に、新たな署名鍵の生成の際に前記記憶部に記憶されている既存の署名鍵を用いて、新たに生成した検証鍵のデジタル署名を検証鍵証明書として生成し、
新たに生成した署名鍵、検証鍵及び検証鍵証明書を前記記憶部に記憶させることを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記鍵生成部は、
前記擬似ランダム値生成部により生成された擬似ランダム値が前記第2タイムスタンプ対象値に合致しないために署名鍵の生成が連続して所定数の擬似ランダム値に対して行われなかった場合に、新たに生成された擬似ランダム値が前記第2タイムスタンプ対象値に合致しないと前記アクセス制御部により判断された場合であっても、署名鍵の生成を行うことを特徴とする請求項7に記載の情報処理装置。
【請求項11】
前記アクセス制御部は、
前記鍵生成部により生成された検証鍵を擬似ランダム値とともに前記タイムスタンプ生成装置に対して送信し、前記タイムスタンプ生成装置から前記検証鍵と前記擬似ランダム値に対するタイムスタンプを第2タイムスタンプとして受信することを特徴とする請求項9に記載の情報処理装置。
【請求項12】
前記タイムスタンプ生成部は、
一定の生成周期ごとに、第1タイムスタンプを生成することを特徴とする請求項1に記載の情報処理装置。
【請求項13】
前記情報処理装置は、更に、
タイムスタンプの生成を要求するタイムスタンプ生成要求を送信するタイムスタンプ生成要求装置から、タイムスタンプ生成要求を受信する要求入力部を有し、
前記タイムスタンプ生成部は、
一定の生成周期ごとに前記要求入力部によりタイムスタンプ生成要求が受信されているか否かを確認し、前記要求入力部によりタイムスタンプ生成要求が受信されている場合は、受信されたタイムスタンプ生成要求に対して第1タイムスタンプを生成し、前記要求入力部によりタイムスタンプの生成要求が受信されていない場合は、任意の情報に対して第1タイムスタンプを生成することを特徴とする請求項12に記載の情報処理装置。
【請求項14】
前記情報処理装置は、更に、
タイムスタンプの生成を要求するタイムスタンプ生成要求を送信するタイムスタンプ生成要求装置から、タイムスタンプ生成要求を受信する要求入力部を有し、
前記タイムスタンプ生成部は、
前記要求入力部によりタイムスタンプ生成要求が受信される度に、受信されたタイムスタンプ生成要求に対して第1タイムスタンプを生成することを特徴とする請求項1に記載の情報処理装置。
【請求項15】
前記アクセス制御部は、
前記擬似ランダム値生成部により生成された擬似ランダム値が前記第2タイムスタンプ対象値に合致しないために前記タイムスタンプ生成装置への擬似ランダム値の送信が連続して所定数の擬似ランダム値に対して行われなかった場合に、新たに生成された擬似ランダム値が前記第2タイムスタンプ対象値に合致しないと判断した場合であっても、当該擬似ランダム値を前記タイムスタンプ生成装置に対して送信することを特徴とする請求項1に記載の情報処理装置。
【請求項16】
前記情報処理装置は、
前記タイムスタンプ生成装置として、TSA(Time−Stamping Authority)サーバ装置に接続していることを特徴とする請求項1に記載の情報処理装置。
【請求項17】
第1タイムスタンプを生成するとともに第1タイムスタンプの生成の度に生成した第1タイムスタンプ及び当該第1タイムスタンプの生成時に存在している一方向演算値を用いて一方向演算を行い、第1タイムスタンプの生成の度に一方向演算により得られる複数の一方向演算値を蓄積して記憶し複数の一方向演算値を時系列に沿って連鎖させることが可能であり、また、生成した一方向演算値を送信条件に従ってランダムに第2タイムスタンプ生成装置に送信する第1タイムスタンプ生成装置と、前記第1タイムスタンプ生成装置から一方向演算値を入力し、入力した一方向演算値に対して第2タイムスタンプを生成する第2タイムスタンプ生成装置とが含まれるタイムスタンプ生成システムを対象とし、
前記第1タイムスタンプ生成装置により生成されたいずれかの第1タイムスタンプを検証対象第1タイムスタンプとし、前記検証対象第1タイムスタンプに対する検証を行う検証装置であって、
前記検証対象第1タイムスタンプが時刻証明の対象としている値を時刻証明対象値として入力し、前記検証対象第1タイムスタンプの生成の際のデジタル署名に用いられた署名鍵と対になる検証鍵を第一タイムスタンプ検証鍵として入力し、前記検証対象第1タイムスタンプの生成前に生成された先行第2タイムスタンプが時刻証明の対象としている先行一方向演算値から前記検証対象第1タイムスタンプの生成後に生成された後行第2タイムスタンプが時刻証明の対象としている後行一方向演算値までの複数の一方向演算値を対象区間一方向演算値として入力し、前記先行第2タイムスタンプの生成後から前記後行第2タイムスタンプの生成前までに生成された前記検証対象第1タイムスタンプを除く一つ以上の第1タイムスタンプを対象区間第1タイムスタンプとして入力する検証対象データ入力部と、
前記検証対象データ入力部により入力された前記複数の対象区間一方向演算値と前記検証対象第1タイムスタンプ及び前記対象区間第1タイムスタンプとを用いて一方向演算を行い、前記先行一方向演算値から前記後行一方向演算値までの複数の対象区間一方向演算値が時系列に沿って連鎖するか否かを判断する一方向演算値連鎖判断部と、
前記検証対象データ入力部により入力された前記複数の対象区間一方向演算値のうち前記先行一方向演算値及び前記後行一方向演算値を除く他の一方向演算値の各々が、前記送信条件に合致するか否かを判断する送信条件判断部と、
前記検証対象データ入力部により入力された前記検証対象第1タイムスタンプに対して前記第一タイムスタンプ検証鍵を適用して得られた値と前記時刻証明対象値とを照合するデジタル署名照合部とを有することを特徴とする検証装置。
【請求項18】
前記検証装置は、
前記第1タイムスタンプ生成装置が、擬似ランダム値の一方向演算値が得られる一方向演算を行い、前記送信条件として、前記第2タイムスタンプ生成装置への送信の対象となる第2タイムスタンプ対象値を管理し、一方向演算値が前記第2タイムスタンプ対象値に合致する場合に前記第2タイムスタンプ生成装置へ一方向演算値を送信するタイムスタンプ生成システムを対象とし、
前記送信条件判断部は、
前記検証対象データ入力部により入力された前記複数の対象区間一方向演算値のうち前記先行一方向演算値及び前記後行一方向演算値を除く他の一方向演算値の各々が、前記第2タイムスタンプ対象値に合致するか否かを判断することを特徴とする請求項17に記載の検証装置。
【請求項19】
前記検証装置は、
データを生成するとともに、生成したデータのデジタル署名値又はデジタル署名値から派生する値に対する第1タイムスタンプの生成を前記第1タイムスタンプ生成装置に対して要求するタイムスタンプ生成要求装置が含まれるタイムスタンプ生成システムを対象とし、
前記検証対象データ入力部は、
前記タイムスタンプ生成要求装置により生成された生成データと前記生成データのデジタル署名値とを入力し、更に、前記生成データのデジタル署名値の生成に用いられた署名鍵と対になる検証鍵をデジタル署名検証鍵として入力し、
前記デジタル署名照合部は、
前記検証対象データ入力部により入力された前記生成データのデジタル署名値に対して前記デジタル署名検証鍵を適用して得られた値と前記生成データとを照合することを特徴とする請求項17に記載の検証装置。
【請求項20】
前記検証装置は、
前記第1タイムスタンプ生成装置が、一定の生成周期ごとに第1タイムスタンプを生成するタイムスタンプ生成システムを対象とし、
前記検証対象データ入力部は、
前記先行第2タイムスタンプと前記後行第2タイムスタンプとを入力し、
前記検証装置は、更に、
前記先行第2タイムスタンプに示されている時刻と前記後行第2タイムスタンプに示されている時刻との間の時刻差と、前記複数の対象区間一方向演算値の一方向演算値の個数と前記第1タイムスタンプ生成装置における生成周期との乗算値とを比較する時刻差比較部とを有することを特徴とする請求項17に記載の検証装置。
【請求項21】
前記検証装置は、
前記第1タイムスタンプ生成装置が、生成した一方向演算値が前記送信条件に合致する度に、第1タイムスタンプの生成の際のデジタル署名に用いられる署名鍵と当該署名鍵と対になる検証鍵を生成し、当該署名鍵の生成前から存在する既存の署名鍵を用いて、新たに生成した検証鍵のデジタル署名を検証鍵証明書として生成し、新たに生成した署名鍵を既存の署名鍵に代えて記憶部に記憶し、新たに生成した検証鍵及び検証鍵証明書を前記記憶部に蓄積して記憶し、第1タイムスタンプの生成の際に前記記憶部に記憶されている署名鍵を用いてデジタル署名を行い、また、前記記憶部に記憶した複数の検証鍵証明書を時系列に沿って連鎖させることが可能なタイムスタンプ生成システムを対象とし、
前記検証対象データ入力部は、
前記第1タイムスタンプ生成装置の記憶部に記憶されている複数の検証鍵及び複数の検証鍵証明書を入力し、
前記検証装置は、更に、
前記検証対象データ入力部により入力された複数の検証鍵及び複数の検証鍵証明書を用いて、前記検証対象データ入力部により入力された複数の検証鍵証明書が時系列に沿って連鎖するか否かを判断する検証鍵証明書連鎖判断部を有することを特徴とする請求項17に記載の検証装置。
【請求項22】
前記検証装置は、
前記第1タイムスタンプ生成装置が、一方向演算値を前記第2タイムスタンプ生成装置に送信する際に、当該時点において前記記憶部に記憶されている検証鍵を併せて前記第2タイムスタンプ生成装置に送信し、前記第2タイムスタンプ生成装置が、前記第1タイムスタンプ生成装置から入力した一方向演算値及び検証鍵に対して第2タイムスタンプを生成するタイムスタンプ生成システムを対象とし、
前記検証対象データ入力部は、
前記第1タイムスタンプ生成装置の記憶部に記憶されている複数の検証鍵及び複数の検証鍵証明書のうち、最新の検証鍵及び最新の検証鍵証明書から、前記第2タイムスタンプ生成装置により第2タイムスタンプが生成されている検証鍵及び当該検証鍵に対応する検証鍵証明書までの複数の検証鍵及び複数の検証鍵証明書を入力することを特徴とする請求項21に記載の検証装置。
【請求項23】
前記検証装置は、
前記第2タイムスタンプ生成装置が、TSA(Time−Stamping Authority)サーバ装置であるタイムスタンプ生成システムを対象としていることを特徴とする請求項17に記載の検証装置。
【請求項24】
タイムスタンプ生成装置に接続するコンピュータを用いるタイムスタンプ生成方法であって、
コンピュータが、第1タイムスタンプを生成するタイムスタンプ生成ステップと、
前記タイムスタンプ生成ステップにより第1タイムスタンプが生成される度に、生成された第1タイムスタンプを用いて、コンピュータが、擬似ランダム値を生成する擬似ランダム値生成ステップと、
コンピュータが、前記擬似ランダム値生成ステップにより生成された擬似ランダム値が前記タイムスタンプ生成装置による第2タイムスタンプの生成の対象となる第2タイムスタンプ対象値に合致するか否かを判断し、前記擬似ランダム値が前記第2タイムスタンプ対象値に合致する場合に、前記擬似ランダム値を前記タイムスタンプ生成装置に対して送信し、前記タイムスタンプ生成装置から前記擬似ランダム値に対するタイムスタンプを第2タイムスタンプとして受信するアクセス制御ステップとを有することを特徴とするタイムスタンプ生成方法。
【請求項25】
第1タイムスタンプを生成するとともに第1タイムスタンプの生成の度に生成した第1タイムスタンプ及び当該第1タイムスタンプの生成時に存在している一方向演算値を用いて一方向演算を行い、第1タイムスタンプの生成の度に一方向演算により得られる複数の一方向演算値を蓄積して記憶し複数の一方向演算値を時系列に沿って連鎖させることが可能であり、また、生成した一方向演算値を送信条件に従ってランダムに第2タイムスタンプ生成装置に送信する第1タイムスタンプ生成装置と、前記第1タイムスタンプ生成装置から一方向演算値を入力し、入力した一方向演算値に対して第2タイムスタンプを生成する第2タイムスタンプ生成装置とが含まれるタイムスタンプ生成システムを対象とし、
前記第1タイムスタンプ生成装置により生成されたいずれかの第1タイムスタンプを検証対象第1タイムスタンプとし、前記検証対象第1タイムスタンプに対する検証を行うタイムスタンプ検証方法であって、
コンピュータが、前記検証対象第1タイムスタンプが時刻証明の対象としている値を時刻証明対象値として入力し、前記検証対象第1タイムスタンプの生成の際のデジタル署名に用いられた署名鍵と対になる検証鍵を第一タイムスタンプ検証鍵として入力し、前記検証対象第1タイムスタンプの生成前に生成された先行第2タイムスタンプが時刻証明の対象としている先行一方向演算値から前記検証対象第1タイムスタンプの生成後に生成された後行第2タイムスタンプが時刻証明の対象としている後行一方向演算値までの複数の一方向演算値を対象区間一方向演算値として入力し、前記先行第2タイムスタンプの生成後から前記後行第2タイムスタンプの生成前までに生成された前記検証対象第1タイムスタンプを除く一つ以上の第1タイムスタンプを対象区間第1タイムスタンプとして入力する検証対象データ入力ステップと、
コンピュータが、前記検証対象データ入力ステップにより入力された前記複数の対象区間一方向演算値と前記検証対象第1タイムスタンプ及び前記対象区間第1タイムスタンプとを用いて一方向演算を行い、前記先行一方向演算値から前記後行一方向演算値までの複数の対象区間一方向演算値が時系列に沿って連鎖するか否かを判断する一方向演算値連鎖判断ステップと、
コンピュータが、前記検証対象データ入力ステップにより入力された前記複数の対象区間一方向演算値のうち前記先行一方向演算値及び前記後行一方向演算値を除く他の一方向演算値の各々が、前記送信条件に合致するか否かを判断する送信条件判断ステップと、
コンピュータが、前記検証対象データ入力ステップにより入力された前記検証対象第1タイムスタンプに対して前記第一タイムスタンプ検証鍵を適用して得られた値と前記時刻証明対象値とを照合するデジタル署名照合ステップとを有することを特徴とするタイムスタンプ検証方法。
【請求項26】
タイムスタンプ生成装置に接続するコンピュータに、
第1タイムスタンプを生成するタイムスタンプ生成処理と、
前記タイムスタンプ生成処理により第1タイムスタンプが生成される度に、生成された第1タイムスタンプを用いて、擬似ランダム値を生成する擬似ランダム値生成処理と、
前記擬似ランダム値生成処理により生成された擬似ランダム値が前記タイムスタンプ生成装置による第2タイムスタンプの生成の対象となる第2タイムスタンプ対象値に合致するか否かを判断し、前記擬似ランダム値が前記第2タイムスタンプ対象値に合致する場合に、前記擬似ランダム値を前記タイムスタンプ生成装置に対して送信し、前記タイムスタンプ生成装置から前記擬似ランダム値に対するタイムスタンプを第2タイムスタンプとして受信するアクセス制御処理とを実行させることを特徴とするプログラム。
【請求項27】
第1タイムスタンプを生成するとともに第1タイムスタンプの生成の度に生成した第1タイムスタンプ及び当該第1タイムスタンプの生成時に存在している一方向演算値を用いて一方向演算を行い、第1タイムスタンプの生成の度に一方向演算により得られる複数の一方向演算値を蓄積して記憶し複数の一方向演算値を時系列に沿って連鎖させることが可能であり、また、生成した一方向演算値を送信条件に従ってランダムに第2タイムスタンプ生成装置に送信する第1タイムスタンプ生成装置と、前記第1タイムスタンプ生成装置から一方向演算値を入力し、入力した一方向演算値に対して第2タイムスタンプを生成する第2タイムスタンプ生成装置とが含まれるタイムスタンプ生成システムを対象とし、
前記第1タイムスタンプ生成装置により生成されたいずれかの第1タイムスタンプを検証対象第1タイムスタンプとし、前記検証対象第1タイムスタンプに対する検証を行うコンピュータに、
前記検証対象第1タイムスタンプが時刻証明の対象としている値を時刻証明対象値として入力し、前記検証対象第1タイムスタンプの生成の際のデジタル署名に用いられた署名鍵と対になる検証鍵を第一タイムスタンプ検証鍵として入力し、前記検証対象第1タイムスタンプの生成前に生成された先行第2タイムスタンプが時刻証明の対象としている先行一方向演算値から前記検証対象第1タイムスタンプの生成後に生成された後行第2タイムスタンプが時刻証明の対象としている後行一方向演算値までの複数の一方向演算値を対象区間一方向演算値として入力し、前記先行第2タイムスタンプの生成後から前記後行第2タイムスタンプの生成前までに生成された前記検証対象第1タイムスタンプを除く一つ以上の第1タイムスタンプを対象区間第1タイムスタンプとして入力する検証対象データ入力処理と、
前記検証対象データ入力処理により入力された前記複数の対象区間一方向演算値と前記検証対象第1タイムスタンプ及び前記対象区間第1タイムスタンプとを用いて一方向演算を行い、前記先行一方向演算値から前記後行一方向演算値までの複数の対象区間一方向演算値が時系列に沿って連鎖するか否かを判断する一方向演算値連鎖判断処理と、
前記検証対象データ入力処理により入力された前記複数の対象区間一方向演算値のうち前記先行一方向演算値及び前記後行一方向演算値を除く他の一方向演算値の各々が、前記送信条件に合致するか否かを判断する送信条件判断処理と、
前記検証対象データ入力処理により入力された前記検証対象第1タイムスタンプに対して前記第一タイムスタンプ検証鍵を適用して得られた値と前記時刻証明対象値とを照合するデジタル署名照合処理とを実行させることを特徴とするプログラム。

【図10】
image rotate

【図14】
image rotate

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2008−258820(P2008−258820A)
【公開日】平成20年10月23日(2008.10.23)
【国際特許分類】
【出願番号】特願2007−97439(P2007−97439)
【出願日】平成19年4月3日(2007.4.3)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】