以下、本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付して、その説明は繰り返さない。
[実施の形態1]
<データ管理システムの全体構成>
図1は、実施の形態1に係るデータ管理システム1の概略的な構成を示す図である。実施の形態1に係るデータ管理システム1は、複数の企業間でコンソーシアムネットワーク(以下、単に「ネットワーク」とも称する)NWを形成し、分散型台帳技術を用いてデータを管理するためのシステムである。実施の形態1に係るデータ管理システム1は、車両を構成する部品のデータ(以下、単に「部品データ」とも称する)を管理する。部品データは、たとえば、部品の仕様書であってもよい。なお、データ管理システム1が管理するデータは、車両を構成する部品のデータに限られるものではなく、種々のデータであってよい。
図1を参照して、データ管理システム1は、4台のクライアントサーバ2と、プラットフォームサーバ5と、時刻認証局(TSA:Time Stamp Authority)8と、外部サーバ9とを備える。4台のクライアントサーバ2の各々は、異なる企業(たとえば、A企業、B企業、C企業およびD企業)に帰属するサーバである。
プラットフォームサーバ5は、ネットワークNWを管理する。プラットフォームサーバ5は、各クライアントサーバ2からのネットワークNWへの参加申請を受け付ける。プラットフォームサーバ5は、プラットフォームサーバ5の管理者による参加を許可する操作に基づき、または、所定の条件の判定結果に基づき、クライアントサーバ2のネットワークNWへの参加を許可する。実施の形態1では、A企業、B企業、C企業およびD企業のそれぞれに帰属する4台のクライアントサーバ2に対して、ネットワークNWへの参加が許可されている。
4台のクライアントサーバ2は、ネットワークNWを形成し、部品データのハッシュ値を各々の分散型台帳に記憶している。クライアントサーバ2の各々には、分散型台帳基盤のソフトウェアが導入されており、導入された分散型台帳基盤のソフトウェアが機能することにより、クライアントサーバ2の各々がノードとして機能する。以下においては、A企業のクライアントサーバ2について代表的に説明するが、B企業、C企業およびD企業のクライアントサーバ2も同様の構成および機能を有する。なお、クライアントサーバ2は、本開示に係る「データ管理装置」の一例に相当する。なお、実施の形態1に係るデータ管理システム1においては、ネットワークNWに4台のクライアントサーバが含まれる例について説明するが、ネットワークNWに含まれるクライアントサーバ2の台数は任意であり、たとえば、4台未満であってもよいし、5台以上であってもよい。
クライアントサーバ2は、ユーザ端末装置7と通信可能に構成されている。ユーザ端末装置7は、たとえば、A企業の従業員に貸与された、デスクトップ型のPC(Personal Computer)、ノート型のPC、タブレット端末、スマートフォン、または、通信機能を有するその他の情報処理端末である。
また、クライアントサーバ2には、データベース4が接続されている。データベース4は、部品データを記憶している。データベース4は、クライアントサーバ2からの制御信号に従って、部品データを登録したり、更新したりする。たとえば、クライアントサーバ2のユーザ(たとえば、A企業の従業員等)は、クライアントサーバ2の入力装置25(後述)への操作により部品データの更新を要求したり、ユーザ端末装置7への操作により部品データの更新を要求したりすることができる。クライアントサーバ2(制御装置21)は、入力装置25への入力、あるいは、ユーザ端末装置7からの要求に応じて、部品データを記憶(登録/更新)するための制御信号を生成し、データベース4に出力する。
クライアントサーバ2は、データベース4に部品データを記憶(登録/更新)すると、当該部品データのハッシュ値を生成し、当該ハッシュ値を分散型台帳に格納するためのトランザクションデータを生成する。そして、クライアントサーバ2は、生成されたトランザクションデータを、ネットワークNWを形成する他のクライアントサーバ2、すなわち、B企業,C企業,D企業のクライアントサーバ2に送信する。分散型台帳は、部品データのハッシュ値を時系列に格納し、部品データの存在を証明するための証拠チェーンを形成する。
時刻認証局8は、タイムスタンプトークンを発行する認証機関に帰属するサーバを含む。時刻認証局は、申請者(実施の形態1においては、クライアントサーバ2)からのタイムスタンプ発行要求に応じて、タイムスタンプトークンを発行する。より具体的には、時刻認証局は、申請者から受信したデータ(実施の形態1においては、後述のレコードハッシュ値)に、国際標準時に追跡性がある時刻源に基づく時刻情報を結合させたタイムスタンプトークンを、申請者に送信する。
外部サーバ9は、A企業、B企業、C企業およびD企業のいずれでもない管理主体によって管理されるサーバである。外部サーバ9は、クライアントサーバ2との通信が可能に構成される。外部サーバ9は、クライアントサーバ2から後述するクライアント証明書を受信し、受信されたクライアント証明書を管理する。
クライアントサーバ2は、制御装置21と、ROM(Read Only Memory)22と、RAM(Random Access Memory)23と、通信装置24と、入力装置25と、表示装置26と、記憶装置27とを備える。制御装置21、ROM22、RAM23、通信装置24、入力装置25、表示装置26、および、記憶装置27は、バス29に接続されている。
制御装置21は、たとえば、CPU(Central Processing Unit)を含む集積回路によって構成される。制御装置21は、ROM22に格納されている各種プログラムをRAM23に展開して実行する。各種プログラムには、オペレーティングシステム等が含まれる。RAM23は、ワーキングメモリとして機能し、各種プログラムの実行に必要な各種データを一時的に格納する。制御装置21は、後に詳しく説明するが、データベース4に記録されている部品データを更新したり、分散型台帳を更新するためのトランザクションデータを生成したり、タイムスタンプトークンを取得したりする機能を有する。
通信装置24は、外部の機器との通信が可能に構成される。外部の機器は、たとえば、他のクライアントサーバ2、ユーザ端末装置7、時刻認証局8、および外部サーバ9等を含む。通信装置24と外部の機器との通信は、インターネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)ネットワーク、パブリックネットワーク、プライベートネットワーク、有線ネットワークまたは無線ネットワーク等、あるいは、これらの組み合わせを用いて行なわれる。
入力装置25は、入力デバイスを含む。入力デバイスは、たとえば、マウス、キーボード、タッチパネル、および/または、ユーザの操作を受け付けることが可能なその他の装置である。
表示装置26は、ディスプレイを含む。表示装置26は、制御装置21からの制御信号に従って、ディスプレイに各種の画像を表示させる。ディスプレイは、たとえば、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、または、その他の表示機器である。
記憶装置27は、たとえば、ハードディスクまたはフラッシュメモリ等の記憶媒体を含んで構成される。記憶装置27は、秘密鍵271、複数の公開鍵272および分散型台帳セット50を記憶している。
秘密鍵271は、A企業の秘密鍵である。たとえば、クライアントサーバ2がネットワークNWに最初に参加するにあたり、制御装置21は、秘密鍵および公開鍵を生成する。そして、制御装置21は、生成された公開鍵を認証局(図示せず)に送信して、認証を受ける。認証局は、電子証明書を発行する認証機関である。認証局は、公開鍵の情報を含めた電子証明書を発行する。制御装置21は、認証を受けた公開鍵に対応する秘密鍵271を記憶装置27に記憶させる。また、制御装置21は、認証を受けた公開鍵(電子証明書)272を、B企業、C企業およびD企業のクライアントサーバ2に送信する。
複数の公開鍵272は、B企業の公開鍵、C企業の公開鍵およびD企業の公開鍵を含む。制御装置21は、他のクライアントサーバ2から受信した公開鍵を記憶装置27に記憶させる。また、記憶装置27は、自身(A企業)の公開鍵を記憶していてもよい。
分散型台帳セット50は、複数の分散型台帳を含む。図2は、分散型台帳セット50の構成の一例を示す図である。実施の形態1では、車両を構成する1個の部品がデータ管理システム1で管理される例を説明する。以下では、分散型台帳でデータが管理される部品を「対象部品」とも称する。また、対象部品の部品データを「対象データ」とも称する。
分散型台帳セット50は、2つの分散型台帳51,52を含む。分散型台帳51は、対象データの更新状態を時系列に記憶し、対象データの証拠チェーン(以下では「第1証拠チェーン」とも称する)として機能する。分散型台帳52は、タイムスタンプトークンを時系列に記憶し、タイムスタンプトークンの証拠チェーン(以下では「第2証拠チェーン」とも称する)として機能する。
分散型台帳51は、対象データのハッシュ値を含むレコードを時系列に記憶している。レコードは、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報を含む。
Keyは、対象部品のIDを示す情報である。対象部品には、k1のIDが割り当てられている。また、Keyは、分散型台帳51,52を識別するためのIDでもともいえる。分散型台帳51は、k1のKeyを含むレコードを時系列に記憶し、分散型台帳52は、k2のKeyを含むレコードを時系列に記憶する。
Ageは、レコードの世代を示す情報である。分散型台帳51に格納された、対象部品の最初のレコードでは、Ageは0である。対象部品の更新が行なわれ、レコードが追加されると、Ageはインクリメントされる。
Obj-HVは、対象データのハッシュ値である。たとえば、データベース4に記憶されている対象データが更新されると、更新された対象データのハッシュ値が生成され、Obj-HVとされる。ハッシュ値は、ハッシュ関数を用いて対象データをハッシュ化した結果として得られる数値である。
Nonceは、トランザクションデータの番号を示すナンス値である。つまり、ナンス値は、たとえば、データベース4に記憶された対象データが更新された場合に、当該更新された対象データのハッシュ値を分散型台帳51に格納する処理の番号として、クライアントサーバ2(制御装置21)により生成される。ナンス値は、暗号学的に衝突が困難なハッシュ値である。
Sigは、トランザクションデータを発行したクライアントサーバ2の秘密鍵271を用いて作成された電子署名である。電子署名は、たとえば、Obj-HV(すなわち、対象データのハッシュ値)を秘密鍵271により暗号化することにより作成される。あるいは、電子署名は、たとえば、Nonce(ナンス値)を秘密鍵271により暗号化することにより作成されてもよい。
Prev-HVは、最新(終端)レコードの1つ前の世代のレコード(親レコード)のハッシュ値である。すなわち、Prev-HVは、親レコードのHVである。
HVは、レコードのハッシュ値である。具体的には、HVは、HVを除くレコードの情報(Key、Age、Obj-HV、Nonce、SigおよびPrev-HV)のハッシュ値(以下「レコードハッシュ値」とも称する)である。
たとえば、図2に示されるように、分散型台帳51の最新(終端)レコード(Age「2」のレコード)に着目すると、終端レコードのPrev-HVは、親レコード(Age「1」)のHVである「H2」である。次に第1部品の部品データが更新されて、Age「3」のレコードが追加される場合には、Age「3」のレコードのPrev-HVは、Age「2」のレコードのHVである「H3」となる。このように、終端レコードは、親レコードのレコードハッシュ値を含む構造となっている。換言すると、終端レコードのPrev-HVと、親レコードのHVとの間でレコードの連鎖が実現されている。このようにして、分散型台帳51は、DAG(Directed Acyclic Graph)構造を成している。
分散型台帳52は、タイムスタンプトークンを含むレコードを時系列に記憶している。レコードは、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報を含む。「Age」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報の詳細は、分散型台帳51のレコードと同様であるため、繰り返し説明しない。
Keyは、時刻認証局8から取得されたタイムスタンプトークンのIDを示す情報である。タイムスタンプトークンには、k2のIDが割り当てられる。
Obj-HVは、タイムスタンプトークンの値である。Obj-HVには、後述するように、分散型台帳51のレコードハッシュ値に対して取得されたタイムスタンプトークン、または、分散型台帳52のレコードハッシュ値に対して取得されたタイムスタンプトークンが格納される。
クライアントサーバ2の制御装置21は、以下に説明する第1~第4操作に応答する機能を有する。
<第1操作>
図1および図2を参照して、たとえば、クライアントサーバ2のユーザは、入力装置25あるいはユーザ端末装置7に対して、データベース4に対象データを登録するための操作、または、データベース4に登録された対象データを更新するための操作を行なうことができる。なお、以下では、上記の登録するための操作および更新するための操作を総称して「第1操作」とも称する。
第1操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第1操作に応答して、第1操作が行なわれたことを示す第1要求を出力する。クライアントサーバ2(制御装置21)は、第1要求に応答して、データベース4に対象データを登録、または、データベース4に記憶された対象データを更新する。そして、クライアントサーバ2(制御装置21)は、登録または更新された対象データのハッシュ値を含むレコードを分散型台帳51に追加するためのトランザクションデータを生成する。このトランザクションデータには、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報が含まれる。
トランザクションデータには、さらに、当該トランザクションデータをネットワークNWへ向けてブロードキャストする(ネットワークNWへ送信する)時刻情報、および、当該トランザクションデータの送信者情報が含まれてもよい。時刻情報は、たとえば、対象データがデータベース4に記録された時刻を示す情報であってもよい。送信者情報は、たとえば、A企業を示す情報である。なお、トランザクションデータの送信者情報は、さらに詳細に、ネットワークNWへトランザクションデータを送信する操作を実行した部署(A企業の一部門)を示す情報であってもよいし、ネットワークNWへトランザクションデータを送信する操作を実行した個人(A企業の従業員)を示す情報であってもよい。
このトランザクションデータが処理されることによって、登録または更新された対象データのハッシュ値を含むレコードが分散型台帳51に追加される。
<第2操作>
また、クライアントサーバ2のユーザは、入力装置25あるいはユーザ端末装置7に対して、分散型台帳51の終端レコードに対するタイムスタンプトークンを取得するための操作(以下「第2操作」とも称する)を行なうことができる。
第2操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第2操作に応答して、第2操作が行なわれたことを示す第2要求を出力する。クライアントサーバ2(制御装置21)は、第2要求に応答して、分散型台帳51の終端レコードのレコードハッシュ値を生成し、当該レコードハッシュ値に対するタイムスタンプトークンを取得する。そして、クライアントサーバ2(制御装置21)は、タイムスタンプトークンを含むレコードを分散型台帳52に追加するためのトランザクションデータを生成する。このトランザクションデータには、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報が含まれる。また、トランザクションデータには、時刻情報、および、送信者情報が含まれてもよい。このトランザクションデータが処理されることによって、分散型台帳51の終端レコードのレコードハッシュ値に対して取得されたタイムスタンプトークンを含むレコードが、分散型台帳52に追加される。
なお、クライアントサーバ2(制御装置21)は、分散型台帳51に新たなレコードが追加されたことを検知した場合に、第2要求に応答する処理を自動的に実行するように構成されてもよい。すなわち、クライアントサーバ2(制御装置21)は、分散型台帳51に新たなレコードが追加されたことを検知すると、当該レコードのレコードハッシュ値を生成し、当該レコードハッシュ値に対するタイムスタンプトークンを取得する。そして、クライアントサーバ2(制御装置21)は、タイムスタンプトークンを含むレコードを分散型台帳52に追加するためのトランザクションデータを生成する。
<第3操作>
さらに、クライアントサーバ2のユーザは、入力装置25あるいはユーザ端末装置7に対して、分散型台帳52の終端レコードに対するタイムスタンプトークンを取得するための操作(以下「第3操作」とも称する)を行なうことができる。
第3操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第3操作に応答して、第3操作が行なわれたことを示す第3要求を出力する。クライアントサーバ2(制御装置21)は、第3要求に応答して、分散型台帳52の終端レコードのレコードハッシュ値を生成し、当該レコードハッシュ値に対するタイムスタンプトークンを取得する。そして、クライアントサーバ2(制御装置21)は、タイムスタンプトークンを含むレコードを分散型台帳52に追加するためのトランザクションデータを生成する。このトランザクションデータには、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報が含まれる。また、トランザクションデータには、時刻情報、および、送信者情報が含まれてもよい。
<第4操作>
さらに、クライアントサーバ2のユーザは、入力装置25あるいはユーザ端末装置7に対して、クライアント証明書を生成するための操作(以下「第4操作」とも称する)を行なうことができる。クライアント証明書は、第4操作が行なわれた時点における、分散型台帳52の終端レコードのレコードハッシュ値を含むデータである。
第4操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第4操作に応答して、第4操作が行なわれたことを示す第4要求を出力する。クライアントサーバ2(制御装置21)は、第4要求に応答して、分散型台帳52の終端レコードのレコードハッシュ値を生成し、当該レコードハッシュ値を含むクライアント証明書を作成する。そして、クライアントサーバ2(制御装置21)は、通信装置24を介して、クライアント証明書を外部サーバ9に送信する。
<分散型台帳セットの更新>
図3は、分散型台帳セット50の更新を説明するための図である。図3の上段には、第1証拠チェーンである分散型台帳51が模式的に示されており、図3の下段には、第2証拠チェーンである分散型台帳52が模式的に示されている。
第1証拠チェーン(分散型台帳51)には、対象部品の部品データ(対象データ)のハッシュ値が時系列に記憶されている。対象データを登録するための操作(第1操作)により対象データD0が最初にデータベース4に登録されると、その対象データD0のハッシュ値を含むAge「0」のレコードRA0が分散型台帳51に格納される。次に、対象データを更新するための操作(第1操作)により対象データが更新され、更新された対象データD1がデータベース4に登録されると、更新された対象データD1のハッシュ値と、Age「0」である親レコードRA0のレコードハッシュ値とを含むAge「1」のレコードRA1が分散型台帳51に格納される。さらに、対象データを更新するための操作(第1操作)により対象データが更新され、更新された対象データD2がデータベース4に登録されると、更新された対象データD2のハッシュ値と、Age「1」である親レコードRA1のレコードハッシュ値とを含むAge「2」のレコードRA2が分散型台帳51に格納される。同様にして、対象データがD3,D4へと更新される毎に、対象データD3,D4のハッシュ値を含むレコードRA3,RA4が分散型台帳51に格納されていく。
第2証拠チェーン(分散型台帳52)には、タイムスタンプトークンが時系列に記憶されている。分散型台帳51の初回更新がなされ、分散型台帳51にレコードRA1が追加され、レコードRA1が分散型台帳51の終端レコードである場面を想定する。この場面において第2操作が行なわれると、レコードRA1のレコードハッシュ値RH1が生成される。そして、レコードハッシュ値RH1に対するタイムスタンプトークンT0が取得され、当該タイムスタンプトークンT0を含むAge「0」のレコードRB0が分散型台帳52に格納される。次に、分散型台帳51の更新がなされ、分散型台帳51にレコードRA2が追加された場面を想定する。この場面において第2操作が行なわれると、レコードRA2のレコードハッシュ値RH2が生成される。そして、レコードハッシュ値RH2に対するタイムスタンプトークンT1が取得され、当該タイムスタンプトークンT1と、Age「0」である親レコードRB0のレコードハッシュ値とを含むAge「1」のレコードRB1が分散型台帳52に格納される。なお、上述したとおり、分散型台帳51にレコードが追加された場合に、当該レコードのレコードハッシュ値に対するタイムスタンプトークンが自動的に取得されてもよい。
また、第2操作は、ユーザが任意のタイミングで行なうことができる。すなわち、上記では、分散型台帳51にレコードが追加される毎に第2操作が行なわれる例を示しているが、第2操作は、分散型台帳51にレコードが追加される毎に行なわれなくてもよい。たとえば、第2操作は、分散型台帳51にレコードが追加される所定回数おきに行なわれてもよいし、前回第2操作が行なわれてから第1所定時間が経過したときに行なわれてもよい。第1所定時間は、たとえば、タイムスタンプトークンの有効期限を考慮して設定してもよい。
分散型台帳52の終端レコードがレコードRB1である場面を想定する。この場面において、入力装置25またはユーザ端末装置7に対して第3操作(分散型台帳52の終端レコードに対するタイムスタンプトークンを取得するための操作)が行なわれると、分散型台帳52の終端レコードRB1のレコードハッシュ値RH3が生成される。そして、レコードハッシュ値RH3に対するタイムスタンプトークンT2が取得され、当該タイムスタンプトークンT2と、親レコードRB1のレコードハッシュ値とを含むAge「2」のレコードRB2が分散型台帳52に格納される。第3操作は、ユーザの任意のタイミングで行なうことができる。なお、第3操作によらず、前回に分散型台帳52にレコードが追加されてから第2所定時間が経過した場合に、分散型台帳52の終端レコードのレコードハッシュ値に対してタイムスタンプトークンが取得されてもよい。第2所定時間は、たとえば、タイムスタンプトークンの有効期限を考慮して設定してもよい。第2所定時間は、上述の第1所定時間と同じ時間に設定されてもよいし、異なる時間に設定されてもよい。
次に、分散型台帳52の終端レコードがレコードRB2である場面を想定する。この場面において、入力装置25またはユーザ端末装置7に対して第4操作(クライアント証明書を作成するための操作)が行なわれると、分散型台帳52の終端レコードRB2のレコードハッシュ値RH4が生成される。そして、レコードハッシュ値RH4を含めたクライアント証明書CPが作成される。このクライアント証明書CPは、クライアントサーバ2から分離して管理される。たとえば、クライアント証明書CPは、通信装置24を介して外部サーバ9に送られる。
なお、第4操作は、任意のタイミングで行なうことができる。たとえば、分散型台帳52の終端レコードがレコードRB1である場面において、第4操作が行なわれると、分散型台帳52の終端レコードRB1のレコードハッシュ値を含めたクライアント証明書が作成される。このクライアント証明書を通信装置24を介して外部サーバ9に送ってもよい。
上記のようにして、対象データが更新される毎に、そのハッシュ値を含むレコードを分散型台帳51に格納していく。対象データのハッシュ値を分散型台帳51で管理することにより、対象データの耐改ざん性を高めることができる。
また、一般に、タイムスタンプトークンには有効期限が定められている。有効期限の切れたタイムスタンプトークンでは、対象データ(ハッシュ値)の存在証明および完全性の証明を行なうことができない。そこで、上記のようにして、分散型台帳51の終端レコードに対して取得されたタイムスタンプトークンを分散型台帳52に格納していく。分散型台帳52では、親レコードのレコードハッシュ値を含んでレコードの連鎖が実現されているので、有効期限の切れたタイムスタンプトークンを改ざんするためには、当該有効期限の切れたタイムスタンプトークンが格納された以降に分散型台帳52に追加されたタイムスタンプトークンを全て改ざんしなければならない。このように、タイムスタンプトークンを分散型台帳52に格納していくことで、タイムスタンプトークンの耐改ざん性を高めることができる。たとえば、レコードRB0に格納されたタイムスタンプトークンT0の有効期限が切れた場合であっても、後続のレコードRB1,RB2により、タイムスタンプトークンT0が改ざんされていないことを証明することができる。このように、タイムスタンプトークンT0の有効性を証明することができるので、タイムスタンプトークンT0の有効期限を実質的に延長することができる。すなわち、タイムスタンプトークンT0により、対象データD1の存在証明および完全性の証明を行なうことができる。
さらに、任意のタイミングで分散型台帳52の終端レコードRB1のレコードハッシュ値RH3に対してタイムスタンプトークンT2を取得する。分散型台帳52のレコードハッシュ値RH3に対してタイムスタンプトークンT2を取得することにより、タイムスタンプトークンT2が証明する時刻にレコードRB1が存在したこと、および、タイムスタンプトークンT2が証明する時刻以降にレコードRB1が改ざんされていないことを証明することが可能となる。これにより、タイムスタンプトークンT2が証明する時刻にレコードRB1が存在し、かつ、分散型台帳52に格納されている一連のタイムスタンプトークンが改ざんされていないことを証明することができる。
さらに、レコードハッシュ値RH3に対して取得したタイムスタンプトークンT2と、親レコードRB1のレコードハッシュ値とを含むレコードRB2を分散型台帳52に格納することにより、タイムスタンプトークンT3の耐改ざん性を高めることができる。
また、クライアント証明書CPがクライアントサーバ2から分離されて、外部サーバ9で管理される。これにより、たとえ分散型台帳セット50の全てのレコードを改ざんされたとしても、外部サーバ9で管理されているクライアント証明書CPにより、分散型台帳セット50が改ざんされたことを証明することができる。
なお、第1操作、第2操作、第3操作および第4操作は、たとえば、表示装置26またはユーザ端末装置7の表示画面に表示された、それぞれの要求ボタン(第1ボタン、第2ボタン、第3ボタンおよび第4ボタン)をユーザが選択する操作であってもよい。
<機能ブロック>
図4は、第1操作に応答する処理を実行するための制御装置21の機能ブロック図である。図4を参照して、制御装置21は、情報取得部2101と、ハッシュ生成部2102と、ナンス生成部2103と、電子署名部2104と、トランザクションデータ生成部2105と、トランザクションデータ送信部2106とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、情報取得部2101、ハッシュ生成部2102、ナンス生成部2103、電子署名部2104トランザクションデータ生成部2105、および、トランザクションデータ送信部2106として機能する。なお、情報取得部2101、ハッシュ生成部2102、ナンス生成部2103、電子署名部2104、トランザクションデータ生成部2105、および、トランザクションデータ送信部2106は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
入力装置25あるいはユーザ端末装置7に対して、対象データを登録または更新する第1操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第1操作が行なわれたことを示す第1要求を出力する。
情報取得部2101は、入力装置25あるいはユーザ端末装置7から、第1要求を取得する。たとえば、クライアントサーバ2のユーザが、入力装置25に対して第1操作を行なうと、第1要求が情報取得部2101に入力される。第1要求には、レコードを追加する対象となる分散型台帳51を特定するためのID(Key)情報M1が含まれている。情報取得部2101は、第1要求を取得すると、第1要求をハッシュ生成部2102およびナンス生成部2103に出力する。
ハッシュ生成部2102は、第1要求を受けると、たとえばデータベース4から対象データを読み出して対象データのハッシュ値を生成する。ハッシュ生成部2102は、生成されたハッシュ値およびID情報M1を、電子署名部2104およびトランザクションデータ生成部2105に出力する。
ナンス生成部2103は、第1要求を受けると、ナンス値を生成する。ナンス値は、暗号学的に衝突が困難なハッシュ値である。ナンス生成部2103は、生成されたナンス値およびID情報M1を、トランザクションデータ生成部2105に出力する。なお、電子署名の作成にナンス値が用いられる場合には、ナンス生成部2103は、ナンス値およびIDの情報M1を電子署名部2104に出力してもよい。
電子署名部2104は、記憶装置27から秘密鍵271を読み出す。電子署名部2104は、ハッシュ生成部2102から受けたハッシュ値を秘密鍵271により暗号化することで電子署名を作成する。電子署名部2104は、作成された電子署名およびID情報M1をトランザクションデータ生成部2105に出力する。また、電子署名部2104は、ナンス生成部2103から受けたナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。また、電子署名部2104は、ハッシュ値およびナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。
トランザクションデータ生成部2105は、ネットワークNWへ送信するためのトランザクションデータを生成する。たとえば、トランザクションデータ生成部2105は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。トランザクションデータ生成部2105は、たとえば、分散型台帳セット50にID情報M1(Key)を照会させることで親レコードのAgeを認識し、親レコードのAgeをインクリメントして、追加するレコードのAgeとする。トランザクションデータ生成部2105は、ハッシュ生成部2102により生成されたハッシュ値をObj-HVとし、ナンス生成部2103により生成されたナンス値をNonceとし、電子署名部2104により作成された電子署名をSigとする。また、トランザクションデータ生成部2105は、親レコードのレコードハッシュ値をPrev-HVとする。トランザクションデータ生成部2105は、Key、Age、Obj-HV、Nonce、Sig、および、Prev-HVの情報をハッシュ化して、HVとする。トランザクションデータには、さらに、当該トランザクションデータをネットワークNWへ向けてブロードキャストする(ネットワークNWへ送信する)時刻情報、および、当該トランザクションデータの送信者情報が含まれてもよい。トランザクションデータ生成部2105は、生成されたトランザクションデータをトランザクションデータ送信部2106に出力する。
トランザクションデータ送信部2106は、トランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
図5は、第2操作に応答する処理を実行するための制御装置21の機能ブロック図である。図5を参照して、制御装置21は、情報取得部2111と、レコードハッシュ生成部2112と、ナンス生成部2113と、タイムスタンプトークン取得部2114と、電子署名部2115と、トランザクションデータ生成部2116と、トランザクションデータ送信部2117とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、情報取得部2111、レコードハッシュ生成部2112、ナンス生成部2113、タイムスタンプトークン取得部2114、電子署名部2115、トランザクションデータ生成部2116、および、トランザクションデータ送信部2117として機能する。なお、情報取得部2111、レコードハッシュ生成部2112、ナンス生成部2113、タイムスタンプトークン取得部2114、電子署名部2115、トランザクションデータ生成部2116、および、トランザクションデータ送信部2117は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
入力装置25あるいはユーザ端末装置7に対して、分散型台帳51の終端レコードに対するタイムスタンプトークンを取得するための第2操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第2操作が行なわれたことを示す第2要求を出力する。
情報取得部2111は、入力装置25あるいはユーザ端末装置7から、第2要求を取得する。たとえば、クライアントサーバ2のユーザが、入力装置25に対して第2操作を行なうと、第2要求が情報取得部2111に入力される。第2要求には、タイムスタンプトークンの取得対象となる分散型台帳51を特定するためのID情報M2と、レコードを追加する対象となる分散型台帳52を特定するためのID情報M3が含まれている。情報取得部2111は、第2要求を取得すると、第2要求をレコードハッシュ生成部2112およびナンス生成部2113に出力する。
なお、情報取得部2111は、分散型台帳51の更新状態を監視し、第1操作に応答して分散型台帳51にレコードが追加されたことをもって、第2要求を取得したと判断してもよい。
レコードハッシュ生成部2112は、第2要求を受けると、ID情報M2により特定される分散型台帳51の最新(終端)レコードのレコードハッシュ値を生成する。レコードハッシュ生成部2112は、生成されたレコードハッシュ値と、ID情報M3とを、タイムスタンプトークン取得部2114に出力する。
ナンス生成部2113は、第2要求を受けると、ナンス値を生成する。ナンス生成部2113は、生成されたナンス値およびID情報M3を、トランザクションデータ生成部2116に出力する。なお、電子署名の作成にナンス値が用いられる場合には、ナンス生成部2113は、ナンス値およびID情報M3を電子署名部2115に出力してもよい。
タイムスタンプトークン取得部2114は、レコードハッシュ生成部2112から受けたレコードハッシュ値に対するタイムスタンプトークンを取得する。具体的には、タイムスタンプトークン取得部2114は、レコードハッシュ値を時刻認証局8に送信するための制御信号を、通信装置24に出力する。これにより、通信装置24を介して、時刻認証局8にレコードハッシュ値が送信される。レコードハッシュ値を受信した時刻認証局8は、レコードハッシュ値の送信元のクライアントサーバ2へタイムスタンプトークンを返信する。タイムスタンプトークン取得部2114は、通信装置24を介して、時刻認証局8からタイムスタンプトークンを取得する。タイムスタンプトークン取得部2114は、タイムスタンプトークン、および、タイムスタンプトークンを格納する分散型台帳52を特定するためのID情報M3を、電子署名部2115およびトランザクションデータ生成部2116に出力する。
電子署名部2115は、記憶装置27から秘密鍵271を読み出す。電子署名部2115は、タイムスタンプトークン取得部2114から受けたタイムスタンプトークンを秘密鍵271により暗号化することで電子署名を作成する。電子署名部2115は、作成された電子署名およびID情報M3をトランザクションデータ生成部2116に出力する。また、電子署名部2115は、ナンス生成部2113から受けたナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。また、電子署名部2115は、タイムスタンプトークンおよびナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。
トランザクションデータ生成部2116は、ネットワークNWへ送信するためのトランザクションデータを生成する。たとえば、トランザクションデータ生成部2116は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。トランザクションデータ生成部2116は、ID情報M3(k2)をKeyとする。また、トランザクションデータ生成部2116は、タイムスタンプトークンをObj-HVとする。トランザクションデータ生成部2116のその他の機能は、図4で説明したトランザクションデータ生成部2105と基本的に同様である。
トランザクションデータ送信部2117は、トランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
図6は、第3操作に応答する処理を実行するための制御装置21の機能ブロック図である。図6を参照して、制御装置21は、情報取得部2121と、レコードハッシュ生成部2122と、ナンス生成部2123と、タイムスタンプトークン取得部2124と、電子署名部2125と、トランザクションデータ生成部2126と、トランザクションデータ送信部2127とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、情報取得部2121、レコードハッシュ生成部2122、ナンス生成部2123、タイムスタンプトークン取得部2124、電子署名部2125、トランザクションデータ生成部2126、および、トランザクションデータ送信部2127として機能する。なお、情報取得部2121、レコードハッシュ生成部2122、ナンス生成部2123、タイムスタンプトークン取得部2124、電子署名部2125、トランザクションデータ生成部2126、および、トランザクションデータ送信部2127は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
入力装置25あるいはユーザ端末装置7に対して、分散型台帳52の終端レコードに対するタイムスタンプトークンを取得するための第3操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第3操作が行なわれたことを示す第3要求を出力する。
情報取得部2121は、入力装置25あるいはユーザ端末装置7から、第3要求を取得する。たとえば、クライアントサーバ2のユーザが、入力装置25に対して第3操作を行なうと、第3要求が情報取得部2121に入力される。第3要求には、タイムスタンプトークンの取得対象となる分散型台帳52を特定するためのID情報M4、および、タイムスタンプトークンを格納する分散型台帳52を特定するためのID情報M5が含まれている。情報取得部2121は、第3要求を取得すると、第3要求をレコードハッシュ生成部2122およびナンス生成部2123に出力する。
レコードハッシュ生成部2122は、第3要求を受けると、ID情報M4により特定される分散型台帳52の最新(終端)レコードのレコードハッシュ値を生成する。レコードハッシュ生成部2122は、生成されたレコードハッシュ値と、ID情報N5とを、タイムスタンプトークン取得部2124に出力する。
ナンス生成部2123は、第3要求を受けると、ナンス値を生成する。ナンス生成部2123は、生成されたナンス値およびID情報M5を、トランザクションデータ生成部2126に出力する。なお、電子署名の作成にナンス値が用いられる場合には、ナンス生成部2123は、ナンス値およびID情報M5を電子署名部2125に出力してもよい。
タイムスタンプトークン取得部2124は、レコードハッシュ生成部2122から受けたレコードハッシュ値に対するタイムスタンプトークンを取得する。具体的には、タイムスタンプトークン取得部2124は、レコードハッシュ値を時刻認証局8に送信するための制御信号を、通信装置24に出力する。これにより、通信装置24を介して、時刻認証局8にレコードハッシュ値が送信される。レコードハッシュ値を受信した時刻認証局8は、レコードハッシュ値の送信元のクライアントサーバ2へタイムスタンプトークンを返信する。タイムスタンプトークン取得部2124は、通信装置24を介して、時刻認証局8からタイムスタンプトークンを取得する。タイムスタンプトークン取得部2124は、タイムスタンプトークン、および、タイムスタンプトークンを格納する分散型台帳52を特定するためのID情報M5を、電子署名部2125およびトランザクションデータ生成部2126に出力する。
電子署名部2125は、記憶装置27から秘密鍵271を読み出す。電子署名部2125は、タイムスタンプトークン取得部2124から受けたタイムスタンプトークンを秘密鍵271により暗号化することで電子署名を作成する。電子署名部2125は、作成された電子署名およびID情報M5をトランザクションデータ生成部2126に出力する。また、電子署名部2125は、ナンス生成部2123から受けたナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。また、電子署名部2125は、タイムスタンプトークンおよびナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。
トランザクションデータ生成部2126は、ネットワークNWへ送信するためのトランザクションデータを生成する。たとえば、トランザクションデータ生成部2126は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。トランザクションデータ生成部2126は、ID情報M5(k2)をKeyとする。また、トランザクションデータ生成部2126は、タイムスタンプトークンをObj-HVとする。トランザクションデータ生成部2126のその他の機能は、図4で説明したトランザクションデータ生成部2105と基本的に同様である。
トランザクションデータ送信部2127は、トランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
図7は、第4操作に応答する処理を実行するための制御装置21の機能ブロック図である。図7を参照して、制御装置21は、情報取得部2131と、レコードハッシュ生成部2132と、クライアント証明書作成部2133と、送信部2134とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、情報取得部2131、レコードハッシュ生成部2132、クライアント証明書作成部2133、および、送信部2134として機能する。なお、情報取得部2131、レコードハッシュ生成部2132、クライアント証明書作成部2133、および、送信部2134は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
入力装置25あるいはユーザ端末装置7に対して、クライアント証明書を生成するための第4操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第4操作が行なわれたことを示す第4要求を出力する。
情報取得部2131は、入力装置25あるいはユーザ端末装置7から、第4要求を取得する。たとえば、クライアントサーバ2のユーザが、入力装置25に対して第4操作を行なうと、第4要求が情報取得部2131に入力される。第4要求には、レコードハッシュ値の生成対象となる分散型台帳52を特定するためのID情報M6(k2)が含まれている。情報取得部2121は、第4要求を取得すると、第4要求をレコードハッシュ生成部2132に出力する。
レコードハッシュ生成部2132は、レコードハッシュ値の生成対象となる分散型台帳52の最新(終端)レコードのレコードハッシュ値を生成する。レコードハッシュ生成部2132は、生成されたレコードハッシュ値を、クライアント証明書作成部2133に出力する。
クライアント証明書作成部2133は、レコードハッシュ生成部2132から受けたレコードハッシュ値を含めたクライアント証明書を作成する。クライアント証明書には、たとえば、当該クライアント証明書を作成したクライアントサーバ2を特定するための情報が含まれてもよい。クライアント証明書作成部2133は、作成されたクライアント証明書を送信部2134に出力する。
送信部2134は、クライアント証明書を外部サーバ9へ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、クライアント証明書が外部サーバ9に送信される。
図8は、受信したトランザクションデータを実行するための制御装置21の機能ブロック図である。図8を参照して、制御装置21は、トランザクションデータ取得部2141と、署名検証部2142と、レコード作成部2143と、台帳更新部2144と、出力部2145とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、トランザクションデータ取得部2141、署名検証部2142、レコード作成部2143、台帳更新部2144、および、出力部2145として機能する。なお、トランザクションデータ取得部2141、署名検証部2142、レコード作成部2143、台帳更新部2144、および、出力部2145は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
トランザクションデータ取得部2141は、他のクライアントサーバ2から送信されたトランザクションデータを取得する。トランザクションデータ取得部2141は、取得されたトランザクションデータを署名検証部2142に出力する。
署名検証部2142は、トランザクションデータに含まれる電子署名(Sig)の有効性を検証する。まず、署名検証部2142は、トランザクションデータに含まれる送信者情報に基づいて、当該トランザクションデータの送信元のクライアントサーバ2を特定する。そして、署名検証部2142は、特定されたクライアントサーバ2の公開鍵(複数の公開鍵272のうちの1つ)を記憶装置27から読み出す。署名検証部2142は、読み出された公開鍵を用いて、トランザクションデータに含まれる電子署名を復号する。上述のとおり、電子署名は、対象データのハッシュ値またはタイムスタンプトークンが、送信元のクライアントサーバ2の秘密鍵を用いて暗号化されたものである。署名検証部2142は、復号した値と、トランザクションデータに含まれているObj-HV(ハッシュ値またはタイムスタンプトークン)とを比較する。両者が一致することを確認することにより、署名検証部2142は、電子署名の有効性を認める。
レコード作成部2143は、電子署名の有効性が認められた場合に、トランザクションデータに基づいて、分散型台帳セット50に追加するレコードを作成する。レコード作成部2143は、トランザクションデータから、Key、Age、Obj-HV、Nonce、Sig、および、Prev-HV、および、HVの情報を読み出して、これらの情報を含むレコードを作成する。
台帳更新部2144は、レコード作成部2143により作成されたレコードを分散型台帳セット50に追加し、分散型台帳セット50を更新する。具体的には、台帳更新部2144は、作成されたレコードのKeyを参照し、当該レコードを追加する分散型台帳を特定する。たとえば、上述した、対象データを登録/更新する第1操作に応じて生成されたトランザクションデータは、「k1」をKeyとして有している。よって、台帳更新部2144は、当該レコードを、対象データの証拠チェーンである分散型台帳51に追加する。また、分散型台帳51の終端レコードに対するタイムスタンプトークンを取得するための第2操作、および、分散型台帳52の終端レコードに対するタイムスタンプトークンを取得するための第3操作に応じて生成されたトランザクションデータは、「k2」をKeyとして有している。よって、台帳更新部2144は、当該レコードを、タイムスタンプトークンの証拠チェーンである分散型台帳52に追加する。
台帳更新部2144は、分散型台帳セット50の更新が完了すると、その旨を出力部2145に出力する。
出力部2145は、トランザクションデータを実行する処理(トランザクション処理)が完了したことを、トランザクションデータの送信元のクライアントサーバ2に送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクション処理の完了の報告が、トランザクションデータの送信元のクライアントサーバ2に送信される。
<フローチャート>
図9は、第1要求を受けた場合のトランザクションデータを生成する処理の手順を示すフローチャートである。図9に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から第1要求を受けた際に、制御装置21によって実行される。なお、図9および後述する図10,11,12,13に示すフローチャートの各ステップ(以下ステップを「S」と略す)は、制御装置21によるソフトウェア処理によって実現される場合について説明するが、その一部あるいは全部が制御装置21内に作製されたハードウェア(電子回路)によって実現されてもよい。
S1において、制御装置21は、ナンス値を生成する。このナンス値は、トランザクションデータの番号として用いられる。
S2において、制御装置21は、データベース4から対象データを読み出して対象データのハッシュ値を生成する。
S3において、制御装置21は、記憶装置27から秘密鍵271を読み出し、秘密鍵271を用いて、S2で生成されたハッシュ値を暗号化して電子署名を作成する。なお、制御装置21は、秘密鍵271を用いて、S1で生成されたナンス値を暗号化して電子署名を作成してもよい。また、制御装置21は、秘密鍵271を用いて、S2で生成されたハッシュ値およびS1で生成されたナンス値を暗号化して電子署名を作成してもよい。
S4において、制御装置21は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。具体的には、制御装置21は、第1要求に含まれるID情報M1をKeyとする。また、制御装置21は、S1で生成されたナンス値をNonceとし、S2で生成されたハッシュ値をObj-HVとし、S3で作成された電子署名をSigとする。また、制御装置21は、分散型台帳セット50にKeyを照会させて親レコードのAgeを認識し、親レコードのAgeをインクリメントしたものをAgeとする。また、制御装置21は、親レコードのレコードハッシュをPrev-HVとする。また、制御装置21は、Key、Age、Obj-HV、Nonce、Sig、および、Prev-HVの情報をハッシュ化して、HVとする。また、制御装置21は、トランザクションデータに、当該トランザクションデータをネットワークNWへ向けてブロードキャストする時刻情報、および/または、当該トランザクションデータの送信者情報を含めてもよい。
S5において、制御装置21は、S4で生成されたトランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
図10は、第2要求を受けた場合のトランザクションデータを生成する処理の手順を示すフローチャートである。図10に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から第2要求を受けた際に、制御装置21によって実行される。なお、制御装置21は、分散型台帳51にレコードが追加されたことを検知した場合に、図10に示すフローチャートの処理を実行してもよい。
S11において、制御装置21は、ナンス値を生成する。このナンス値は、トランザクションデータの番号として用いられる。
S12において、制御装置21は、分散型台帳51の終端レコードのレコードハッシュ値を生成する。
S13において、制御装置21は、S12で生成されたレコードハッシュ値を時刻認証局8に送信するための制御信号を、通信装置24に出力する。これにより、通信装置24を介して、時刻認証局8にレコードハッシュ値が送信される。レコードハッシュ値を受信した時刻認証局8は、レコードハッシュ値の送信元のクライアントサーバ2へタイムスタンプトークンを返信する。制御装置21は、通信装置24を介して、時刻認証局8からタイムスタンプトークンを取得する。
S14において、制御装置21は、記憶装置27から秘密鍵271を読み出し、秘密鍵271を用いて、S13で取得されたタイムスタンプトークンを暗号化して電子署名を作成する。なお、制御装置21は、秘密鍵271を用いて、S11で生成されたナンス値を暗号化して電子署名を作成してもよい。また、制御装置21は、秘密鍵271を用いて、S13で取得されたタイムスタンプトークンおよびS11で生成されたナンス値を暗号化して電子署名を作成してもよい。
S15において、制御装置21は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。制御装置21は、第2要求に含まれるID情報M3(k2)をKeyとする。また、制御装置21は、S13で取得されたタイムスタンプトークンをObj-HVとする。S15における、その他の処理は、図9のS4の処理と基本的に同様であるため、繰り返し説明しない。
S16において、制御装置21は、S15で生成されたトランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
図11は、第3要求を受けた場合のトランザクションデータを生成する処理の手順を示すフローチャートである。図11に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から第3要求を受けた際に、制御装置21によって実行される。
S21において、制御装置21は、ナンス値を生成する。このナンス値は、トランザクションデータの番号として用いられる。
S22において、制御装置21は、分散型台帳52の終端レコードのレコードハッシュ値を生成する。
S23において、制御装置21は、S22で生成されたレコードハッシュ値を時刻認証局8に送信するための制御信号を、通信装置24に出力する。これにより、通信装置24を介して、時刻認証局8にレコードハッシュ値が送信される。レコードハッシュ値を受信した時刻認証局8は、レコードハッシュ値の送信元のクライアントサーバ2へタイムスタンプトークンを返信する。制御装置21は、通信装置24を介して、時刻認証局8からタイムスタンプトークンを取得する。
S24において、制御装置21は、記憶装置27から秘密鍵271を読み出し、秘密鍵271を用いて、S23で取得されたタイムスタンプトークンを暗号化して電子署名を作成する。なお、制御装置21は、秘密鍵271を用いて、S21で生成されたナンス値を暗号化して電子署名を作成してもよい。また、制御装置21は、秘密鍵271を用いて、S23で取得されたタイムスタンプトークンおよびS21で生成されたナンス値を暗号化して電子署名を作成してもよい。
S25において、制御装置21は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。制御装置21は、第3要求に含まれるID情報M5(k2)をKeyとする。また、制御装置21は、S23で取得されたタイムスタンプトークンをObj-HVとする。S25における、その他の処理は、図9のS4の処理と基本的に同様であるため、繰り返し説明しない。
S26において、制御装置21は、S25で生成されたトランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
図12は、第4要求を受けた場合の処理の手順を示すフローチャートである。図12に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から第4要求を受けた際に、制御装置21によって実行される。
S31において、制御装置21は、分散型台帳52の終端レコードのレコードハッシュ値を生成する。
S32において、制御装置21は、S31で生成されたレコードハッシュ値を含むクライアント証明書を作成する。制御装置21は、クライアント証明書に、自身(A企業)を特定するための情報を含めてもよい。
S33において、制御装置21は、S32で作成されたクライアント証明書を外部サーバ9へ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、クライアント証明書が外部サーバ9に送信される。
図13は、トランザクションデータを受信した場合に実行される処理の手順を示すフローチャートである。図13に示すフローチャートの処理は、トランザクションデータを受信した際に、制御装置21によって実行される。
S41において、制御装置21は、受信したトランザクションデータに含まれる送信者情報に基づいて、当該トランザクションデータの送信元のクライアントサーバ2を特定する。
S42において、制御装置21は、S41で特定されたクライアントサーバ2の公開鍵を記憶装置27から読み出す。
S43において、制御装置21は、S42で読み出された公開鍵を用いて、トランザクションデータに含まれる電子署名を復号する。
S44において、制御装置21は、S43で復号した電子署名の有効性を検証する。具体的には、制御装置21は、電子署名を復号した値と、トランザクションデータに含まれているObj-HV(ハッシュ値またはタイムスタンプトークン)とを比較する。両者が一致しなかった場合には、制御装置21は、電子署名の有効性を認めず(S44においてNO)、処理をS45に進める。両者が一致した場合には、制御装置21は、電子署名の有効性を認め(S44においてYES)、処理をS46に進める。
S45において、制御装置21は、電子署名が有効なものでないため、今回受信したトランザクションデータを破棄し、処理を終了する。なお、制御装置21は、トランザクションデータが改ざんされた可能性がある旨を表示装置26に表示させてもよい。また、制御装置21は、トランザクションデータが改ざんされた可能性がある旨を、トランザクションデータの送信元のクライアントサーバ2に送信してもよい。
S46において、制御装置21は、受信したトランザクションデータからKey、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を読み出して、これらの情報を含むレコードを作成する。
S47において、制御装置21は、S46で作成されたレコードのKeyに基づいて、当該レコードを追加する分散型台帳を特定する。そして、制御装置21は、特定された分散型台帳にレコードを追加する。これにより、分散型台帳セット50が更新される。
S48において、制御装置21は、トランザクション処理が完了したことを示す通知(完了報告)を、トランザクションデータの送信元のクライアントサーバ2に送信する。
以上のように、実施の形態1に係るデータ管理システム1において、クライアントサーバ2は、2つの分散型台帳51,52を含む分散型台帳セット50を保持する。分散型台帳51は、対象データの存在を証明するための証拠チェーンであり、分散型台帳52は、タイムスタンプトークンの存在を証明するための証拠チェーンである。
分散型台帳51には、対象データが更新される毎に、そのハッシュ値を含むレコードが格納される。対象データのハッシュ値を含むレコードが分散型台帳51で管理されるので、対象データの耐改ざん性を高めることができる。また、分散型台帳51に格納されるレコードには、対象データ自体ではなく、対象データのハッシュ値が含まれる。これによって、ネットワークNWを形成する他のクライアントサーバ2に対して、対象データ自体を秘匿しておくことができる。
また、分散型台帳51にレコードが追加され、第2操作が行なわれると、追加されたレコード(分散型台帳51の終端レコード)のレコードハッシュ値に対してタイムスタンプトークンが取得され、当該タイムスタンプトークンを含むレコードが分散型台帳52に格納される。タイムスタンプトークンを分散型台帳52に格納することにより、タイムスタンプトークンの耐改ざん性を高めることができる。そして、タイムスタンプトークンを分散型台帳52に格納していくことにより、有効期限が切れたタイムスタンプトークンがあったとしても、当該タイムスタンプトークンを含むレコードよりも後続のレコードにより、有効期限切れのタイムスタンプトークンが改ざんされていないことを証明することができる。このように、有効期限切れのタイムスタンプトークンの有効性を証明することができるので、タイムスタンプトークンの有効期限を実質的に延長することができる。
さらに、分散型台帳52の終端レコードのレコードハッシュ値に対してタイムスタンプトークンが取得される。これにより、上記レコードハッシュ値の完全性を証明することが可能となるので、当該レコードハッシュ値が改ざんされていないことを証明することにより、分散型台帳52に格納されている一連のタイムスタンプトークンが改ざんされていないことを証明することができる。
さらに、分散型台帳52の終端レコードのレコードハッシュ値に対して取得したタイムスタンプトークンを分散型台帳52に格納することにより、当該タイムスタンプトークンの耐改ざん性を高めることができる。
また、分散型台帳52の終端レコードのレコードハッシュ値を含むクライアント証明書が作成され、当該クライアント証明書がクライアントサーバ2から分離されて、外部サーバ9で管理される。これにより、たとえ分散型台帳セット50の全てのレコードを改ざんされたとしても、外部サーバ9で管理されているクライアント証明書により、分散型台帳セット50が改ざんされたことを証明することができる。
[変形例1]
実施の形態1では、データ管理システム1で管理される部品(車両を構成する部品)が1つである例について説明した。しかしながら、複数の部品がデータ管理システム1で管理されてもよい。たとえば、N(2以上の自然数)個の部品がデータ管理システム1で管理されてもよい。この場合には、分散型台帳セット50は、N個の部品のそれぞれの証拠チェーンとなるN個の分散型台帳と、タイムスタンプトークンの証拠チェーンとなる分散型台帳とを含む。変形例1においても、N個の分散型台帳のうちのいずれかが更新され、第2操作が行なわれると、当該分散型台帳の終端レコードのレコードハッシュ値に対してタイムスタンプトークンが取得され、当該タイムスタンプトークンを含むレコードが、タイムスタンプトークンの証拠チェーンである分散型台帳に格納される。そして、実施の形態1と同様に、第3操作および第4操作に応答することにより、実施の形態1と同様の効果を奏することができる。
[実施の形態2]
実施の形態1では、プラットフォームサーバ5が、ネットワークNWへの参加を許可する機能を有する例について説明した。そして、トランザクションデータのファイナリティは、ネットワークNWへの参加が許可されたクライアントサーバ2間で電子署名の有効性の確認することにより与えられた。実施の形態2では、プラットフォームサーバ6が、ネットワークNWへの参加を許可する機能に加えて、トランザクションデータにファイナリティを与える機能を有する例について説明する。
図14は、実施の形態2に係るデータ管理システム1Aの概略的な構成を示す図である。データ管理システム1Aは、4台のクライアントサーバ3と、プラットフォームサーバ6と、時刻認証局8と、外部サーバ9とを備える。実施の形態1と同様に、4台のクライアントサーバ3の各々は、異なる企業(たとえば、A企業、B企業、C企業およびD企業)に帰属するサーバである。以下においては、A企業のクライアントサーバ3について代表的に説明するが、B企業、C企業およびD企業のクライアントサーバ3も同様の機能を有する。
プラットフォームサーバ6は、実施の形態1に係るプラットフォームサーバ5と同様に、ネットワークNWを管理し、各クライアントサーバ3からのネットワークNWへの参加申請を受け付ける。プラットフォームサーバ6は、プラットフォームサーバ6の管理者による参加を許可する操作に基づき、または、所定の条件の判定結果に基づき、クライアントサーバ3のネットワークNWへの参加を許可する。実施の形態2においても、A企業、B企業、C企業およびD企業のそれぞれに帰属する4台のクライアントサーバ3に対して、ネットワークNWへの参加が許可されている。
4台のクライアントサーバ3およびプラットフォームサーバ6は、ネットワークNWを形成している。クライアントサーバ3の各々には、分散型台帳基盤のソフトウェアが導入されており、導入された分散型台帳基盤のソフトウェアが機能することにより、クライアントサーバ3の各々がノードとして機能する。クライアントサーバ3は、実施の形態1に係るクライアントサーバ2と同様に、ユーザ端末装置7と通信可能に構成されている。
また、クライアントサーバ3には、実施の形態1に係るクライアントサーバ2と同様に、データベース4が接続されている。クライアントサーバ3(制御装置31)は、入力装置35への入力、あるいは、ユーザ端末装置7からの要求に応じて、対象データを登録/更新するための制御信号を生成し、データベース4に出力する。
クライアントサーバ3は、データベース4に部品データを登録/更新すると、当該部品データのハッシュ値を作成し、当該ハッシュ値を、プラットフォームサーバ6に保有される台帳、および、各クライアントサーバ3に保有される分散型台帳(後述のコミットテーブル)に格納するためのトランザクションデータを生成する。そして、クライアントサーバ3は、生成されたトランザクションデータをプラットフォームサーバ6に送信する。
プラットフォームサーバ6は、トランザクションデータにファイナリティを与える機能を有する。プラットフォームサーバ6は、台帳セット60を保有し、クライアントサーバ3から受けるトランザクションデータを処理して、台帳セット60を更新する。プラットフォームサーバ6は、台帳セット60を更新すると、更新により台帳に追加されたレコード(後述のプルーフレコード)を、ネットワークNWに参加する全てのクライアントサーバ3に送信する。クライアントサーバ3はコミットレコードを格納するコミットテーブル374を記憶する。コミットテーブル374は、本開示に係る「分散型台帳」の一例に相当する。
図15は、台帳セット60の構成の一例を示す図である。台帳セット60は、台帳67と、台帳68とを含む。台帳67は、実施の形態1に係る分散型台帳51と同様に、対象データの更新状態を時系列に記憶し、対象データの証拠チェーンを形成する。台帳68は、実施の形態1に係る分散型台帳52と同様に、タイムスタンプトークンを時系列に記憶し、タイムスタンプトークンの証拠チェーンを形成する。台帳セット60、台帳67および台帳68は、実施の形態1に係る分散型台帳セット50、分散型台帳51および分散型台帳52とそれぞれ同様の構成を有する。そのため、これらの詳細な説明は繰り返さない。なお、図15では、図3に示した例に対応する台帳67,68のデータ構造が示されている。すなわち、台帳67,68には、それぞれ、Age「2」のレコードが最新(終端)レコードとして格納されている。
再び図14を参照し、クライアントサーバ3は、制御装置31と、ROM32と、RAM33と、通信装置34と、入力装置35と、表示装置36と、記憶装置37とを備える。制御装置31、ROM32、RAM33、通信装置34、入力装置35、表示装置36、および、記憶装置37は、バス39に接続されている。ROM32、RAM33、通信装置34、入力装置35、および、表示装置36は、基本的に、実施の形態1に係るクライアントサーバ2のROM22、RAM23、通信装置24、入力装置25、および、表示装置26とそれぞれ同様の構成であるため、その説明は繰り返さない。
記憶装置37は、秘密鍵371およびプルーフデータ372を記憶している。秘密鍵371は、A企業の秘密鍵である。たとえば、クライアントサーバ3がネットワークNWに最初に参加するにあたり、制御装置31は、秘密鍵および公開鍵を生成する。そして、制御装置31は、生成された公開鍵を認証局(図示せず)に送信して、認証を受ける。認証局は、公開鍵の情報を含めた電子証明書を発行する。制御装置31は、認証を受けた公開鍵に対応する秘密鍵371を記憶装置37に記憶させる。また、制御装置31は、認証を受けた公開鍵(電子証明書)651を、プラットフォームサーバ6に送信する。
プルーフデータ372は、サスペンションテーブル373と、コミットテーブル374とを含む。図16は、サスペンションテーブル373の構成の一例を説明するための図である。図17は、コミットテーブル374の構成の一例を説明するための図である。サスペンションテーブル373およびコミットテーブル374は、台帳セット60に対応した構成を有する。
図16を参照し、サスペンションテーブル373は、未使用のトランザクションデータに含まれる所定種類の情報を含む。具体的には、サスペンションテーブル373は、たとえば、KeyおよびNonceの情報を含んだサスペンションレコードを記憶する。制御装置31は、各種要求(第1要求~第3要求)に応答して生成されるトランザクションデータに含まれる情報のうちの、KeyおよびNonceの情報をサスペンションレコードとして、サスペンションテーブル373に格納する。なお、以下では、第1要求~第3要求を特に区別しない場合には、第1要求~第3要求を総称して「更新要求」とも称する。
入力装置35あるいはユーザ端末装置7からクライアントサーバ3が受ける更新要求には、レコードを追加する対象となる分散型台帳を特定するためのIDの情報が含まれている。たとえば、第1要求には「k1」を示すID情報M1が含まれている。第2要求には「k2」を示すID情報M3が含まれている。第3要求には「k2」を示すID情報M5が含まれている。すなわち、更新要求に含まれている、レコードを追加する対象となる分散型台帳を特定するためのIDがKeyとなる。また、更新要求を受けると制御装置31は、ナンス値を生成する。当該ナンス値は、更新要求の番号(すなわち、トランザクションデータの番号)を表わす。制御装置31は、KeyおよびNonceの情報を含むサスペンションレコードを作成し、当該サスペンションレコードをサスペンションテーブル373に登録する。図16には、サスペンションテーブル373に、k1のKeyを含むサスペンションレコードが登録されている例が示されている。
更新要求に応答する処理が実行されると(すなわち、トランザクションデータが使用されると)、制御装置31は、トランザクション処理の実行に使用されたトランザクションデータに含まれるKeyと同様のKeyの情報を含むサスペンションレコードを、サスペンションテーブル373から削除する。
サスペンションテーブル373には、同じKeyの情報を含むサスペンションレコードが重複して登録されない。サスペンションレコードをサスペンションテーブル373に登録するにあたり、制御装置31は、登録対象のサスペンションレコードに含まれるKeyと一致するKeyを含んだサスペンションレコードが既にサスペンションテーブル373に登録されているか否かを判断する。制御装置31は、登録対象のサスペンションレコードが含むKeyと一致するKeyを含んだサスペンションレコードがサスペンションテーブル373に登録されていなければ、サスペンションレコードをサスペンションテーブル373に登録する。制御装置31は、登録対象のサスペンションレコードが含むKeyと一致するKeyを含んだサスペンションレコードがサスペンションテーブル373に登録されていれば、一致するKeyを含んだサスペンションレコードがサスペンションテーブル373から削除されるのを待つ。つまり、図16に示す例においては、サスペンションテーブル373に、k2のKeyを含むサスペンションレコードは登録できるが、k1のKeyを含むサスペンションレコードは登録できない。
図17を参照して、コミットテーブル374は、使用済みのトランザクションデータに含まれる所定種類の情報を含む。具体的には、コミットテーブル374は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含むコミットレコードを記憶する。実施の形態2では、コミットレコードは、台帳セット60のレコードと同様の情報を有する。コミットテーブル374は、k1のKeyを有するコミットレコードを格納するコミットデータ375と、k2のKeyを有するコミットレコードを格納するコミットデータ376とを含む。
プラットフォームサーバ6は、トランザクション処理を実行して、台帳セット60の台帳を更新すると、プルーフレコードを作成し、当該プルーフレコードをネットワークNWに参加する全てのクライアントサーバ3に送信する。プルーフレコードは、たとえば、トランザクションデータを使用して実行されたトランザクション処理により台帳に追加されたレコードが有するKey、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含んで構成されたレコードである。
プルーフレコードを受けると、制御装置31は、当該プルーフレコードをコミットレコードとして、コミットテーブル374(コミットデータ375またはコミットデータ376)に追加する。そして、制御装置31は、追加したコミットレコードに含まれるKeyと同様のKeyを含むサスペンションレコードを、サスペンションテーブル373から削除する。
再び図14を参照して、プラットフォームサーバ6は、制御装置61と、ROM62と、RAM63と、通信装置64と、記憶装置65とを備える。制御装置61、ROM62、RAM63、通信装置64、および、記憶装置65は、バス69に接続されている。
制御装置61は、CPUを含む集積回路によって構成される。制御装置61は、ROM62に格納されている各種プログラムをRAM63に展開して実行する。各種プログラムには、オペレーティングシステム等が含まれる。RAM63は、ワーキングメモリとして機能し、各種プログラムの実行に必要な各種データを一時的に格納する。制御装置61は、クライアントサーバ3からトランザクションデータを受信し、トランザクション処理を実行する。
通信装置64は、ネットワークNWに参加しているクライアントサーバ3との通信が可能に構成される。
記憶装置65は、複数の公開鍵651および台帳セット60を記憶している。複数の公開鍵651は、ネットワークNWに参加しているクライアントサーバ3を管理する企業の公開鍵を含む。具体的には、複数の公開鍵651は、A企業の公開鍵、B企業の公開鍵、C企業の公開鍵およびD企業の公開鍵を含む。
台帳セット60は、上述のとおり、実施の形態1に係る分散型台帳セット50と同様の構成を有するため、繰り返し説明しない。
以下、フローチャートを示しながら、実施の形態2における更新要求への応答の処理について順に説明する。
図18は、更新要求を受けた場合にデータ管理システム1Aで実行される処理の手順を示すフローチャートである。図18に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から更新要求を受けた際に、クライアントサーバ3の制御装置31によって開始される。
S50において、クライアントサーバ3の制御装置31は、ナンス値を生成する。このナンス値は、更新要求に応じて生成されるトランザクションデータの番号として用いられる。
S51において、クライアントサーバ3の制御装置31は、サスペンションレコードを生成する。具体的には、クライアントサーバ3の制御装置31は、更新要求に含まれているレコードの追加対象となる分散型台帳のIDを読み出してKeyの情報とし、S50で生成されたナンス値をNonceの情報として、サスペンションレコードを生成する。
S52において、クライアントサーバ3の制御装置31は、S51で生成されたサスペンションレコードをサスペンションテーブル373に登録できるか否かを判断する。S51で生成されたサスペンションレコードと同様のKeyの情報を有するサスペンションレコードがサスペンションテーブル373に登録されている場合、クライアントサーバ3の制御装置31は、否定判断をして(S52においてNO)、サスペンションテーブル373から同様のKeyの情報を有するサスペンションレコードが削除されるのを待つ。一方、S51で生成されたサスペンションレコードと同様のKeyの情報を有するサスペンションレコードがサスペンションテーブル373に登録されていない場合、クライアントサーバ3の制御装置31は、肯定判断をして(S52においてYES)、処理をS53に進める。
S53において、クライアントサーバ3の制御装置31は、サスペンションテーブル373にサスペンションレコードを登録する。
S54において、クライアントサーバ3の制御装置31は、更新要求に応じるためのトランザクションデータを生成する。具体的には、クライアントサーバ3の制御装置31は、更新要求が第1要求である場合には、図9において説明したS2~S4の処理と同様の処理を実行してトランザクションデータを生成し、更新要求が第2要求である場合には、図10において説明したS12~S15の処理と同様の処理を実行してトランザクションデータを生成し、更新要求が第3要求である場合には、図11において説明したS22~S25の処理と同様の処理を実行してトランザクションデータを生成する。各処理の詳細については、図9,図10および図11において説明したとおりであるので、繰り返し説明しない。
S55において、クライアントサーバ3の制御装置31は、S54で生成したトランザクションデータをプラットフォームサーバ6に送信するための制御信号を通信装置34に出力する。これにより、通信装置34を介して、トランザクションデータがプラットフォームサーバ6に送信される。
S60において、プラットフォームサーバ6の制御装置61は、受信したトランザクションデータに含まれる電子署名の有効性を検証するために、電子署名を復号する。具体的には、プラットフォームサーバ6の制御装置61は、図13において説明したS41~S43の処理と同様の処理を実行して、電子署名を復号する。各処理の詳細については、図13において説明したとおりであるので、繰り返し説明しない。
S61において、プラットフォームサーバ6の制御装置61は、S60で復号した電子署名の有効性を検証する。具体的には、プラットフォームサーバ6の制御装置61は、電子署名を復号した値と、トランザクションデータに含まれているハッシュ値(第1要求に応じて生成されたトランザクションデータにおいては、対象データのハッシュ値であり、第2要求および第3要求に応じて生成されたトランザクションデータにおいては、タイムスタンプトークンである)とを比較する。両者が一致しなかった場合には、プラットフォームサーバ6の制御装置61は、電子署名の有効性を認めず(S61においてNO)、処理をS62に進める。両者が一致した場合には、プラットフォームサーバ6の制御装置61は、電子署名の有効性を認め(S61においてYES)、処理をS63に進める。
S62において、プラットフォームサーバ6の制御装置61は、クライアントサーバ3から受けたトランザクションデータに改ざんの可能性があると判断して、トランザクションデータを破棄し、改ざんの可能性があることを示す異常報告を作成する。そして、プラットフォームサーバ6の制御装置61は、処理をS66に進める。
S63において、プラットフォームサーバ6の制御装置61は、トランザクション処理を実行する。具体的には、プラットフォームサーバ6の制御装置61は、図13において説明したS46,S47の処理と同様の処理を実行し、トランザクションデータに含まれるKeyの情報により特定される台帳のレコードを生成して、当該台帳に生成されたレコードを追加し、台帳セット60を更新する。
S64において、プラットフォームサーバ6の制御装置61は、プルーフレコードを生成する。プルーフレコードは、台帳に追加されたレコードに含まれるKey、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含む。
S65において、プラットフォームサーバ6の制御装置61は、台帳セット60の更新が完了したこと(すなわち、トランザクションデータを処理したこと)を示す正常報告を作成する。プラットフォームサーバ6の制御装置61は、正常報告にプルーフレコードを含める。
S66において、プラットフォームサーバ6の制御装置61は、S62において作成された異常報告、または、S65において作成された正常報告をクライアントサーバ3に送信するための制御信号を通信装置64に出力する。これにより、通信装置64を介して、異常報告または正常報告がクライアントサーバ3に送信される。
また、S66において、プラットフォームサーバ6の制御装置61は、プルーフレコードを、トランザクションデータの送信元以外の他のクライアントサーバ3(たとえば、B企業,C企業、D企業のクライアントサーバ3)に送信するための制御信号を通信装置64に出力する。これにより、通信装置64を介して、プルーフレコードが他のクライアントサーバ3に送信される。
S56において、クライアントサーバ3の制御装置31は、プラットフォームサーバ6から正常報告を受信したか否かを判断する。正常報告を受信したと判断すると(S56においてYES)、クライアントサーバ3の制御装置31は、処理をS57に進める。一方、正常報告を受信していない、すなわち異常報告を受信したと判断すると(S56においてNO)、クライアントサーバ3の制御装置31は、処理をS59に進める。
S57において、クライアントサーバ3の制御装置31は、正常報告に含まれるプルーフレコードをコミットレコードとしてコミットテーブル374に追加する。具体的には、クライアントサーバ3の制御装置31は、プルーフレコードのKeyの情報に基づいて、コミットレコードを追加する対象がコミットデータ375であるかコミットデータ376であるかを判断する。そして、クライアントサーバ3の制御装置31は、対象のコミットデータにコミットレコードを追加する。
S58において、クライアントサーバ3の制御装置31は、追加したコミットレコードと同じKeyの情報を有するサスペンションレコードを、サスペンションテーブル373から削除する。
S59において、クライアントサーバ3の制御装置31は、更新要求に対する処理の結果を、たとえば、表示装置36に表示させたり、ユーザ端末装置7に送信したりする。
なお、S66において送信されたプルーフレコードを受信した他のクライアントサーバ3(B企業,C企業、D企業のクライアントサーバ3)も、同様にプルーフレコードをコミットテーブル374に追加することで、コミットテーブル374が更新される。
図19は、実施の形態2において、第4要求を受けた場合の処理の手順を示すフローチャートである。図19に示すフローチャートの処理は、入力装置35あるいはユーザ端末装置7から第4要求を受けた際に、制御装置31によって実行される。
S71において、制御装置31は、コミットデータ376の終端レコードのレコードハッシュ値を生成する。
S72において、制御装置31は、S71で生成されたレコードハッシュ値を含むクライアント証明書を作成する。制御装置31は、クライアント証明書に、自身(A企業)を特定するための情報を含めてもよい。
S73において、制御装置31は、S72で作成されたクライアント証明書を外部サーバ9へ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、クライアント証明書が外部サーバ9に送信される。
以上のように、実施の形態2に係るデータ管理システム1Aにおいては、プラットフォームサーバ6がトランザクションデータにファイナリティを与える。プラットフォームサーバ6は、2つの台帳67,68を含む台帳セット60を保持する。台帳67には、対象データの更新状態が時系列に記憶され、台帳68には、タイムスタンプトークンが時系列に記憶される。そして、台帳セット60が更新されると、台帳セット60に追加されたレコードの情報を有するプルーフレコードがプラットフォームサーバ6から各クライアントサーバ3に送られる。クライアントサーバ3の各々は、プルーフレコードをコミットレコードとして、コミットテーブル374に追加する。コミットテーブル374が実施の形態1に係る分散型台帳セット50に相当する。各クライアントサーバ3がコミットテーブル374を持ち合うことで、コミットテーブル374の耐改ざん性が高められる。
そして、実施の形態2に係るデータ管理システム1Aの構成においても、第2要求に応答して、コミットデータ375(台帳67)の終端レコードのレコードハッシュ値に対してタイムスタンプトークンを取得し、タイムスタンプトークンを含むレコードをコミットデータ376(台帳68)に格納していけば、実施の形態1と同様に、有効期限切れのタイムスタンプトークンの有効性を証明することができる。
さらに、コミットデータ376(台帳68)の終端レコードのレコードハッシュ値に対してタイムスタンプトークを取得することで、上記レコードハッシュ値の完全性を証明することが可能となる。よって、上記レコードハッシュ値が改ざんされていないことを証明することにより、コミットデータ376(台帳68)に格納されている一連のタイムスタンプトークンが改ざんされていないことを証明することができる。
さらに、コミットデータ376(台帳68)の終端レコードのレコードハッシュ値に対して取得したタイムスタンプトークをコミットデータ376(台帳68)に格納することにより、当該タイムスタンプトークンの耐改ざん性を高めることができる。
また、コミットデータ376の終端レコードのレコードハッシュ値を含むクライアント証明書を作成し、当該クライアント証明書をクライアントサーバ3から分離して、外部サーバ9で管理する。これにより、たとえコミットテーブル374および台帳セット60の全てのレコードを改ざんされたとしても、外部サーバ9で管理されているクライアント証明書により、コミットテーブル374および台帳セット60が改ざんされたことを証明することができる。
[変形例2]
実施の形態2では、コミットテーブル374は、台帳セット60に含まれる情報と同様の情報を有する例について説明した。具体的には、コミットテーブル374のコミットデータ375,376の各々は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を有した。コミットテーブル374は、台帳セット60に含まれる情報のうちの一部を有してもよい。たとえば、コミットテーブル374のコミットデータ375,376の各々は、台帳セット60の台帳67,68の各々が有する、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報のうちの、Key、Age、Obj-HV、HV、および、Nonceの情報を含んで構成されてもよい。この場合には、プルーフレコードも、Key、Age、Obj-HV、HV、および、Nonceの情報を含むように生成される。すなわち、コミットデータ375,376は、台帳67,68のサマリとなる。コミットデータ375,376を台帳67,68のサマリとすることによって、コミットデータ375,376と台帳67,68とが同様の情報を有する場合に比べ、クライアントサーバ3の記憶装置37に記憶されるデータ容量を抑制することができる。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。