IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタ自動車株式会社の特許一覧 ▶ 株式会社Scalarの特許一覧

<>
  • 特許-データ管理装置およびデータ管理方法 図1
  • 特許-データ管理装置およびデータ管理方法 図2
  • 特許-データ管理装置およびデータ管理方法 図3
  • 特許-データ管理装置およびデータ管理方法 図4
  • 特許-データ管理装置およびデータ管理方法 図5
  • 特許-データ管理装置およびデータ管理方法 図6
  • 特許-データ管理装置およびデータ管理方法 図7
  • 特許-データ管理装置およびデータ管理方法 図8
  • 特許-データ管理装置およびデータ管理方法 図9
  • 特許-データ管理装置およびデータ管理方法 図10
  • 特許-データ管理装置およびデータ管理方法 図11
  • 特許-データ管理装置およびデータ管理方法 図12
  • 特許-データ管理装置およびデータ管理方法 図13
  • 特許-データ管理装置およびデータ管理方法 図14
  • 特許-データ管理装置およびデータ管理方法 図15
  • 特許-データ管理装置およびデータ管理方法 図16
  • 特許-データ管理装置およびデータ管理方法 図17
  • 特許-データ管理装置およびデータ管理方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】データ管理装置およびデータ管理方法
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240723BHJP
   G09C 1/00 20060101ALI20240723BHJP
   G06F 21/64 20130101ALI20240723BHJP
   G06F 16/28 20190101ALI20240723BHJP
【FI】
H04L9/32 200Z
G09C1/00 640D
G06F21/64
G06F16/28
【請求項の数】 7
(21)【出願番号】P 2021154130
(22)【出願日】2021-09-22
(65)【公開番号】P2023045606
(43)【公開日】2023-04-03
【審査請求日】2024-02-09
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(73)【特許権者】
【識別番号】519026250
【氏名又は名称】株式会社Scalar
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】山室 直樹
(72)【発明者】
【氏名】深津 航
【審査官】行田 悦資
(56)【参考文献】
【文献】特表2021-505095(JP,A)
【文献】中国特許出願公開第114490741(CN,A)
【文献】米国特許第10476665(US,B1)
【文献】国際公開第2019/058560(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G09C 1/00
G06F 21/64
G06F 16/28
(57)【特許請求の範囲】
【請求項1】
分散型台帳技術を用いてデータを管理するデータ管理装置であって、
前記データに関する情報を含むレコードを時系列に格納する分散型台帳を記憶する記憶装置と、
前記分散型台帳に前記レコードを追加する制御装置とを備え、
前記データは、第1データおよび第2データを含み、
前記分散型台帳は、前記第1データに関する第1情報を含むレコードを時系列に格納する第1分散型台帳と、前記第2データに関する第2情報を含むレコードを時系列に格納する第2分散型台帳とを含み、
第1の時点において、前記第1データを更新すると、前記制御装置は、
前記第1情報を含むレコードを前記第1分散型台帳に格納するとともに、当該レコードの情報を含む第1終端値を生成し、
前記第1終端値を含むレコードを前記第2分散型台帳に格納する、データ管理装置。
【請求項2】
前記第1終端値は、前記第1の時点において前記第1分散型台帳に格納されたレコードのハッシュ値である、請求項1に記載のデータ管理装置。
【請求項3】
前記第1情報は、前記第1データのハッシュ値であり、
前記第2情報は、前記第2データのハッシュ値である、請求項1または請求項2に記載のデータ管理装置。
【請求項4】
前記制御装置は、ユーザからの要求に基づいて、前記第1終端値を含むレコードを前記第2分散型台帳に格納する、請求項1から請求項3のいずれか1項に記載のデータ管理装置。
【請求項5】
時刻認証局との通信が可能に構成された通信装置をさらに備え、
前記制御装置は、前記第1の時点よりも後の時点である第2の時点において、前記通信装置を介して、前記第2分散型台帳の終端のレコードの情報を含む第2終端値を前記時刻認証局に送信して、当該時刻認証局から前記第2終端値に対するタイムスタンプトークンを取得する、請求項1から請求項4のいずれか1項に記載のデータ管理装置。
【請求項6】
前記制御装置は、ユーザからの要求に基づいて、前記タイムスタンプトークンを取得する、請求項5に記載のデータ管理装置。
【請求項7】
分散型台帳技術を用いてデータを管理するデータ管理装置のデータ管理方法であって、
前記データ管理装置は、
前記データに関する情報を含むレコードを時系列に格納する分散型台帳を記憶する記憶装置と、
前記分散型台帳に前記レコードを追加する制御装置とを備え、
前記データは、第1データおよび第2データを含み、
前記分散型台帳は、前記第1データに関する第1情報を含むレコードを時系列に格納する第1分散型台帳と、前記第2データに関する第2情報を含むレコードを時系列に格納する第2分散型台帳とを含み、
前記データ管理方法は、所定の時点において前記第1データを更新すると、前記制御装置が、
前記第1情報を含むレコードを前記第1分散型台帳に格納するとともに、当該レコードの情報を含む第1終端値を生成するステップと、
前記第1終端値を含むレコードを前記第2分散型台帳に格納するステップとを含む、データ管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、分散型台帳技術を用いてデータを管理するデータ管理装置およびデータ管理方法に関する。
【背景技術】
【0002】
特許第6694204号公報(特許文献1)には、管理対象を識別するためのKey(ID)毎に、DAG(Directed Acyclic Graph)構造を有する分散型台帳(アセット)を構成し、ID毎に情報を管理するデータ管理システムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第6694204号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示されたデータ管理システムでは、たとえば、あるIDで管理される対象のデータが更新されると、当該あるIDに対して用意されたアセットにデータが追加されていく。また、他のIDで管理される対象についても、他のIDで管理される対象のデータが更新されると、当該他のIDに対して用意されたアセットにデータが追加されていく。
【0005】
ここで、あるIDに対して用意されたアセットに格納されているデータと、他のIDに対して用意されたアセットに格納されているデータとの、いずれが先に存在していたのかを示す順序性を証明したい場合がある。たとえば、それぞれのアセットが更新される毎に、最新のアセットレコードに対してタイムスタンプトークンを取得することで、順序性を証明することが考えられる。しかしながら、この場合には、タイムスタンプトークンの取得費用が嵩んだり、システム負荷が増加したりする可能性がある。
【0006】
本開示は、上記課題を解決するためになされたものであり、本開示の目的は、複数の分散型台帳を有するシステムにおいて、分散型台帳間におけるデータの順序性の証明を容易に行なうことができるようにすることである。
【課題を解決するための手段】
【0007】
(1)本開示のある局面に係るデータ管理装置は、分散型台帳技術を用いてデータを管理するデータ管理装置である。このデータ管理装置は、データに関する情報を含むレコードを時系列に格納する分散型台帳を記憶する記憶装置と、分散型台帳にレコードを追加する制御装置とを備える。データは、第1データおよび第2データを含む。分散型台帳は、第1データに関する第1情報を含むレコードを時系列に格納する第1分散型台帳と、第2データに関する第2情報を含むレコードを時系列に格納する第2分散型台帳とを含む。第1の時点において、第1データを更新すると、制御装置は、第1情報を含むレコードを第1分散型台帳に格納するとともに、当該レコードの情報を含む第1終端値を生成し、第1終端値を含むレコードを第2分散型台帳に格納する。
【0008】
上記構成によれば、第1の時点において、第1終端値が第2分散型台帳に格納される。これにより、第1の時点を基準として、第1分散型台帳と第2分散型台帳とが関連付けられる。それゆえに、第1の時点を基準として、第1の時点に更新された第1データと、第2データとの存在の順序性を証明することができる。
【0009】
(2)ある実施の形態においては、第1終端値は、第1の時点において第1分散型台帳に格納されたレコードのハッシュ値である。
【0010】
上記構成によれば、第1分散型台帳のレコードのハッシュ値を、第2分散型台帳のレコードに格納するので、データ容量を過度に増加させることなく、第1分散型台帳と第2分散型台帳とを関連付けることができる。
【0011】
(3)ある実施の形態においては、第1情報は、第1データのハッシュ値である。第2情報は、第2データのハッシュ値である。
【0012】
上記構成によれば、第1分散型台帳および第2分散型台帳に格納されるレコードには、第1データのハッシュ値および第2データのハッシュ値が含まれるので、第1データおよび第2データ自体を秘匿しておくことができる。
【0013】
(4)ある実施の形態においては、制御装置は、ユーザからの要求に基づいて、第1終端値を含むレコードを第2分散型台帳に格納する。
【0014】
上記構成によれば、ユーザは、任意のタイミングで第1分散型台帳と第2分散型台帳とを関連付けることができる。
【0015】
(5)ある実施の形態においては、データ管理装置は、時刻認証局との通信が可能に構成された通信装置をさらに備える。制御装置は、第1の時点よりも後の時点である第2の時点において、通信装置を介して、第2分散型台帳の終端のレコードの情報を含む第2終端値を時刻認証局に送信して、当該時刻認証局から第2終端値に対するタイムスタンプトークンを取得する。
【0016】
上記構成によれば、第1終端値を含むレコードが第2分散型台帳に格納された後において、第2終端値に対してタイムスタンプトークンが取得される。これによって、第1の時点を基準とした、第1データと第2データとの順序性の証明を可能としつつ、第2の時点を基準とした第1データおよび第2データの時刻性の証明を可能とすることができる。
【0017】
(6)ある実施の形態においては、制御装置は、ユーザからの要求に基づいて、タイムスタンプトークンを取得する。
【0018】
上記構成によれば、ユーザは、任意のタイミングでタイムスタンプトークンを取得することができる。
【0019】
(7)本開示の他の局面に係るデータ管理方法は、分散型台帳技術を用いてデータを管理するデータ管理装置のデータ管理方法である。データ管理装置は、データに関する情報を含むレコードを時系列に格納する分散型台帳を記憶する記憶装置と、分散型台帳にレコードを追加する制御装置とを備える。データは、第1データおよび第2データを含む。分散型台帳は、第1データに関する第1情報を含むレコードを時系列に格納する第1分散型台帳と、第2データに関する第2情報を含むレコードを時系列に格納する第2分散型台帳とを含む。データ管理方法は、所定の時点において第1データを更新すると、制御装置が、第1情報を含むレコードを第1分散型台帳に格納するとともに、当該レコードの情報を含む第1終端値を生成するステップと、第1終端値を含むレコードを第2分散型台帳に格納するステップとを含む。
【発明の効果】
【0020】
本開示によれば、複数の分散型台帳を有するシステムにおいて、分散型台帳間におけるデータの順序性の証明を容易に行なうことができる。
【図面の簡単な説明】
【0021】
図1】実施の形態1に係るデータ管理システムの概略的な構成を示す図である。
図2】分散型台帳セットの構成の一例を示す図(その1)である。
図3】2つの分散型台帳の関連付けを説明するための図である。
図4】分散型台帳セットの構成の一例を示す図(その2)である。
図5】第1操作に応答する処理を実行するための制御装置の機能ブロック図である。
図6】第2操作に応答する処理を実行するための制御装置の機能ブロック図である。
図7】受信したトランザクションデータを実行するための制御装置の機能ブロック図である。
図8】タイムスタンプトークンを取得するための制御装置の機能ブロック図である。
図9】第1要求を受けた場合のトランザクションデータを生成する処理の手順を示すフローチャートである。
図10】第2要求を受けた場合のトランザクションデータを生成する処理の手順を示すフローチャートである。
図11】トランザクションデータを受信した場合に実行される処理の手順を示すフローチャートである。
図12】タイムスタンプトークンを取得する処理の手順を示すフローチャートである。
図13】実施の形態2に係るデータ管理システムの概略的な構成を示す図である。
図14】台帳セットの構成の一例を示す図である。
図15】サスペンションテーブルの構成の一例を説明するための図である。
図16】コミットテーブルの構成の一例を説明するための図である。
図17】更新要求(第1要求,第2要求)を受けた場合にデータ管理システムで実行される処理の手順を示すフローチャートである。
図18】実施の形態2において、タイムスタンプトークンを取得する処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0022】
以下、本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付して、その説明は繰り返さない。
【0023】
[実施の形態1]
<データ管理システムの全体構成>
図1は、実施の形態1に係るデータ管理システム1の概略的な構成を示す図である。実施の形態1に係るデータ管理システム1は、複数の企業間でコンソーシアムネットワーク(以下、単に「ネットワーク」とも称する)NWを形成し、分散型台帳技術を用いてデータを管理するためのシステムである。実施の形態1に係るデータ管理システム1は、車両を構成する部品のデータ(以下、単に「部品データ」とも称する)を管理する。部品データは、たとえば、部品の仕様書であってもよい。なお、データ管理システム1が管理するデータは、車両を構成する部品のデータに限られるものではなく、種々のデータであってよい。
【0024】
図1を参照して、データ管理システム1は、4台のクライアントサーバ2と、プラットフォームサーバ5と、時刻認証局(TSA:Time Stamp Authority)8とを備える。4台のクライアントサーバ2の各々は、異なる企業(たとえば、A企業、B企業、C企業およびD企業)に帰属するサーバである。
【0025】
プラットフォームサーバ5は、ネットワークNWを管理する。プラットフォームサーバ5は、各クライアントサーバ2からのネットワークNWへの参加申請を受け付ける。プラットフォームサーバ5は、プラットフォームサーバ5の管理者による参加を許可する操作に基づき、または、所定の条件の判定結果に基づき、クライアントサーバ2のネットワークNWへの参加を許可する。実施の形態1では、A企業、B企業、C企業およびD企業のそれぞれに帰属する4台のクライアントサーバ2に対して、ネットワークNWへの参加が許可されている。
【0026】
4台のクライアントサーバ2は、ネットワークNWを形成し、部品データのハッシュ値を各々の分散型台帳に記憶している。クライアントサーバ2の各々には、分散型台帳基盤のソフトウェアが導入されており、導入された分散型台帳基盤のソフトウェアが機能することにより、クライアントサーバ2の各々がノードとして機能する。以下においては、A企業のクライアントサーバ2について代表的に説明するが、B企業、C企業およびD企業のクライアントサーバも同様の構成および機能を有する。なお、クライアントサーバ2は、本開示に係る「データ管理装置」の一例に相当する。
【0027】
クライアントサーバ2は、ユーザ端末装置7と通信可能に構成されている。ユーザ端末装置7は、たとえば、A企業の従業員に貸与された、デスクトップ型のPC(Personal Computer)、ノート型のPC、タブレット端末、スマートフォン、または、通信機能を有するその他の情報処理端末である。
【0028】
また、クライアントサーバ2には、データベース4が接続されている。データベース4は、部品データを記憶している。データベース4は、クライアントサーバ2からの制御信号に従って、部品データを記憶したり、更新したりする。たとえば、クライアントサーバ2のユーザ(たとえば、A企業の従業員等)は、クライアントサーバ2の入力装置25(後述)への操作により部品データの更新を要求したり、ユーザ端末装置7への操作により部品データの更新を要求したりすることができる。クライアントサーバ2(制御装置21)は、入力装置25への入力、あるいは、ユーザ端末装置7からの要求に応じて、部品データを記憶/更新するための制御信号を生成し、データベース4に出力する。
【0029】
クライアントサーバ2は、データベース4に部品データを記憶/更新すると、当該部品データのハッシュ値を生成し、当該ハッシュ値を分散型台帳に格納するためのトランザクションデータを生成する。そして、クライアントサーバ2は、生成されたトランザクションデータを、ネットワークNWを形成する他のクライアントサーバ2、すなわち、B企業,C企業,D企業のクライアントサーバ2に送信する。分散型台帳は、部品データのハッシュ値を時系列に格納し、部品データの存在を証明するための証拠チェーンを形成する。なお、実施の形態1に係るデータ管理システム1においては、ネットワークNWに4台のクライアントサーバが含まれる例について説明するが、ネットワークNWに含まれるクライアントサーバ2の台数は任意であり、たとえば、4台未満であってもよいし、5台以上であってもよい。
【0030】
時刻認証局8は、タイムスタンプトークンを発行する認証機関に帰属するサーバを含む。時刻認証局は、申請者(実施の形態1においては、クライアントサーバ2)からのタイムスタンプ発行要求に応じて、タイムスタンプトークンを発行する。より具体的には、時刻認証局は、申請者から受信したデータ(実施の形態1においては、後述のレコードハッシュ値)に、国際標準時に追跡性がある時刻源に基づく時刻情報を結合させたタイムスタンプトークンを、申請者に送信する。
【0031】
クライアントサーバ2は、制御装置21と、ROM(Read Only Memory)22と、RAM(Random Access Memory)23と、通信装置24と、入力装置25と、表示装置26と、記憶装置27とを備える。制御装置21、ROM22、RAM23、通信装置24、入力装置25、表示装置26、および、記憶装置27は、バス29に接続されている。
【0032】
制御装置21は、たとえば、CPU(Central Processing Unit)を含む集積回路によって構成される。制御装置21は、ROM22に格納されている各種プログラムをRAM23に展開して実行する。各種プログラムには、オペレーティングシステム等が含まれる。RAM23は、ワーキングメモリとして機能し、各種プログラムの実行に必要な各種データを一時的に格納する。制御装置21は、後に詳しく説明するが、データベース4に記録されている部品データを更新したり、分散型台帳を更新するためのトランザクションデータを生成したり、タイムスタンプトークンを取得したりする機能を有する。
【0033】
通信装置24は、外部の機器との通信が可能に構成される。外部の機器は、たとえば、他のクライアントサーバ2、ユーザ端末装置7、および時刻認証局8等を含む。通信装置24と外部の機器との通信は、インターネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)ネットワーク、パブリックネットワーク、プライベートネットワーク、有線ネットワークまたは無線ネットワーク等、あるいは、これらの組み合わせを用いて行なわれる。
【0034】
入力装置25は、入力デバイスを含む。入力デバイスは、たとえば、マウス、キーボード、タッチパネル、および/または、ユーザの操作を受け付けることが可能なその他の装置である。
【0035】
表示装置26は、ディスプレイを含む。表示装置26は、制御装置21からの制御信号に従って、ディスプレイに各種の画像を表示させる。ディスプレイは、たとえば、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、または、その他の表示機器である。
【0036】
記憶装置27は、たとえば、ハードディスクまたはフラッシュメモリ等の記憶媒体を含んで構成される。記憶装置27は、秘密鍵271、複数の公開鍵272および分散型台帳セット50を記憶している。
【0037】
秘密鍵271は、A企業の秘密鍵である。たとえば、クライアントサーバ2がネットワークNWに最初に参加するにあたり、制御装置21は、秘密鍵および公開鍵を生成する。そして、制御装置21は、生成された公開鍵を認証局(図示せず)に送信して、認証を受ける。認証局は、電子証明書を発行する認証機関である。認証局は、公開鍵の情報を含めた電子証明書を発行する。制御装置21は、認証を受けた公開鍵に対応する秘密鍵271を記憶装置27に記憶させる。また、制御装置21は、認証を受けた公開鍵(電子証明書)272を、B企業、C企業およびD企業のクライアントサーバ2に送信する。
【0038】
複数の公開鍵272は、B企業の公開鍵、C企業の公開鍵およびD企業の公開鍵を含む。制御装置21は、他のクライアントサーバ2から受信した公開鍵を記憶装置27に記憶させる。また、記憶装置27は、自身(A企業)の公開鍵を記憶していてもよい。
【0039】
分散型台帳セット50は、複数の分散型台帳を含む。分散型台帳は、車両を構成する部品毎に用意されている。図2は、分散型台帳セット50の構成の一例を示す図である。実施の形態1では、車両を構成する2個の部品(第1部品,第2部品)がデータ管理システム1で管理される例を説明する。すなわち、分散型台帳セット50は、第1部品の部品データの更新状態を時系列に記憶し、第1部品の部品データの証拠チェーンとなる分散型台帳51と、第2部品の部品データの更新状態を時系列に記憶し、第2部品の部品データの証拠チェーンとなる分散型台帳52とを含む。なお、車両を構成する部品がN(2以上の自然数)個であれば、分散型台帳セット50は、N個の分散型台帳を含む。以下では、分散型台帳でデータが管理される部品を「対象部品」とも称する。すなわち、実施の形態1における対象部品は、第1部品および第2部品である。
【0040】
分散型台帳51は、第1部品の部品データのハッシュ値を含むレコードを時系列に記憶している。レコードは、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報を含む。
【0041】
Keyは、対象部品(第1部品)のIDを示す情報である。第1部品には、k1のIDが割り当てられている。
【0042】
Ageは、レコードの世代を示す情報である。分散型台帳51に格納された、第1部品の最初のレコードでは、Ageは0である。第1部品の更新が行なわれ、レコードが追加されると、Ageはインクリメントされる。
【0043】
Obj-HVは、第1部品の部品データのハッシュ値である。たとえば、データベース4に登録された第1部品の部品データが更新されると、更新された部品データのハッシュ値が生成され、Obj-HVとされる。ハッシュ値は、ハッシュ関数を用いて部品データをハッシュ化した結果として得られる数値である。
【0044】
Nonceは、トランザクションデータの番号を示すナンス値である。つまり、ナンス値は、たとえば、データベース4に記憶された第1部品の部品データが更新された場合に、当該更新された部品データのハッシュ値を分散型台帳51に格納する処理の番号として、クライアントサーバ2(制御装置21)により生成される。ナンス値は、暗号学的に衝突が困難なハッシュ値である。
【0045】
Sigは、トランザクションデータを発行したクライアントサーバ2の秘密鍵271を用いて作成された電子署名である。電子署名は、たとえば、Obj-HV(すなわち、第1部品の部品データのハッシュ値)を秘密鍵271により暗号化することにより作成される。あるいは、電子署名は、たとえば、Nonce(ナンス値)を秘密鍵271により暗号化することにより作成されてもよい。
【0046】
Prev-HVは、最新(終端)レコードの1つ前の世代のレコード(親レコード)のハッシュ値である。すなわち、Prev-HVは、親レコードのHVである。
【0047】
HVは、最新(終端)レコードのハッシュ値である。具体的には、HVは、HVを除くレコードの情報(Key、Age、Obj-HV、Nonce、SigおよびPrev-HV)のハッシュ値(以下「レコードハッシュ値」とも称する)である。
【0048】
たとえば、図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構造を成している。
【0049】
分散型台帳52は、第2部品の部品データのハッシュ値を含むレコードを時系列に記憶している。レコードは、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報を含む。これらの詳細は、分散型台帳51のレコードと同様であるため、繰り返し説明しない。
【0050】
クライアントサーバ2(制御装置21)は、たとえば、入力装置25を介して、あるいは、ユーザ端末装置7を介して部品データの更新操作を受けると、データベース4に記憶された部品データを更新する。そして、クライアントサーバ2(制御装置21)は、更新された部品データのハッシュ値を含むレコードを分散型台帳セット50(分散型台帳51または分散型台帳52)に追加するためのトランザクションデータを生成する。このトランザクションデータには、「Key」、「Age」、「Obj-HV」、「Nonce」、「Sig」、「Prev-HV」、および、「HV」の情報が含まれる。
【0051】
トランザクションデータには、さらに、当該トランザクションデータをネットワークNWへ向けてブロードキャストする(ネットワークNWへ送信する)時刻情報、および、当該トランザクションデータの送信者情報が含まれてもよい。時刻情報は、たとえば、対象部品の部品データがデータベース4に記録された時刻を示す情報であってもよい。送信者情報は、たとえば、A企業を示す情報である。なお、トランザクションデータの送信者情報は、さらに詳細に、ネットワークNWへトランザクションデータを送信する操作を実行した部署(A企業の一部門)を示す情報であってもよいし、ネットワークNWへトランザクションデータを送信する操作を実行した個人(A企業の従業員)を示す情報であってもよい。
【0052】
<順序性の証明>
ここで、第1部品の部品データと、第2部品の部品データとの間で、いずれのデータが先に存在したのかを証明したい場合がある。すなわち、第1部品の部品データと、第2部品の部品データとの順序性を証明したい場合がある。順序性を証明する手法として、たとえば、分散型台帳51,52の各々にレコードが追加される毎に、追加されたレコード(終端レコード)のレコードハッシュ値に対してタイムスタンプトークンを取得することで、レコードが追加された時刻を証明し、2つのデータの順序性を証明することが考えられる。しかしながら、当該手法では、分散型台帳51,52にレコードが追加される毎にタイムスタンプトークンを取得しなければならず、工数およびコストが増大してしまう。また、データ管理システム1にかかる処理負荷も増大してしまう。
【0053】
そこで、実施の形態1に係るデータ管理システム1では、一方の分散型台帳(たとえば分散型台帳51)のレコードハッシュ値を、他方の分散型台帳(たとえば分散型台帳52)のレコードに組み込むことを可能とする。これにより、2つの分散型台帳51,52を関連付ける。
【0054】
図3は、2つの分散型台帳51,52の関連付けを説明するための図である。図3の上段には、第1部品の証拠チェーンである分散型台帳51が模式的に示されており、図3の下段には、第2部品の証拠チェーンである分散型台帳52が模式的に示されている。以下では、第1部品の証拠チェーンを「第1証拠チェーン」とも称し、第2部品の証拠チェーンを「第2証拠チェーン」とも称する。
【0055】
第1証拠チェーン(分散型台帳51)には、第1部品の部品データのハッシュ値が時系列に記憶されている。第1部品の部品データが最初にデータベース4に登録されると、その部品データのハッシュ値が含まれるレコード(Age「0」)が分散型台帳51に格納される。次に、第1部品の部品データが更新され、更新された部品データがデータベース4に登録されると、更新された部品データのハッシュ値と、親レコード(Age「0」)のレコードハッシュ値とを含むレコード(Age「1」)が分散型台帳51に格納される。さらに第1部品の部品データが更新され、更新された部品データがデータベース4に登録されると、更新された部品データのハッシュ値と、親レコード(Age「1」)のレコードハッシュ値とを含むレコード(Age「2」)が分散型台帳51に格納される。
【0056】
第2証拠チェーン(分散型台帳52)には、第2部品の部品データのハッシュ値が時系列に記憶されている。第2部品の部品データが最初にデータベース4に登録されると、その部品データのハッシュ値が含まれるレコード(Age「0」)が分散型台帳52に格納される。次に、第2部品の部品データが更新され、更新された部品データがデータベース4に登録されると、更新された部品データのハッシュ値と、親レコード(Age「0」)のレコードハッシュ値とを含むレコード(Age「1」)が分散型台帳52に格納される。さらに第2部品の部品データが更新され、更新された部品データがデータベース4に登録されると、更新された部品データのハッシュ値と、親レコード(Age「1」)のレコードハッシュ値とを含むレコード(Age「2」)が分散型台帳52に格納される。
【0057】
ここで、上記のように、分散型台帳51および分散型台帳52の各々において、Age「2」のレコードが最新(終端)のレコードであることを想定する。そして、この状態において、入力装置25またはユーザ端末装置7に対して、第1部品の部品データを更新する第1操作が行なわれたことを想定する。さらに、第1操作に加えて、入力装置25またはユーザ端末装置7に対して、第1証拠チェーンを第2証拠チェーンに関連付ける第2操作が行なわれたことを想定する。なお、部品データを更新するための操作(第1操作)は、たとえば、表示装置26またはユーザ端末装置7の表示画面において、対象部品のID(Key)を入力し、表示されている更新ボタンを選択する操作であってもよい。また、証拠チェーン同士を関連付ける操作(第2操作)は、2つの対象部品のID(Key)を入力し、表示されている関連付けボタンを選択する操作であってもよい。第2操作を行なうための表示画面には、たとえば、レコードハッシュ値の作成対象となる対象部品のID(Key)を入力する「作成対象入力欄」、および、レコードハッシュ値の組み込み先となる対象部品のID(Key)を入力する「組み込み対象入力欄」が設けられる。たとえば、作成対象入力欄にk1を入力し、組み込み対象入力欄にk2を入力すれば、第1証拠チェーン(分散型台帳51)のレコードハッシュ値が、第2証拠チェーン(分散型台帳52)のレコードに組み込まれる。ここでは、作成対象入力欄にk1が入力され、かつ、組み込み対象入力欄にk2が入力されたことを想定する。なお、第1操作を行なうための表示画面と、第2操作を行なうための表示画面とは、同一の画面内に同時に表示されてもよい。
【0058】
図2および図3を参照して、第1操作および第2操作の2つの操作が行なわれると、制御装置21は、まず、第1操作に応答して、データベース4に記憶されている第1部品の部品データD12を部品データD13に更新する。なお、第1部品の部品データD10が最初にデータベース4に記憶される場合には、制御装置21は、データベース4に第1部品の部品データを新たに記憶させればよい。制御装置21は、部品データD13のハッシュ値と、親レコード(Age「2」)のレコードハッシュ値とを含むレコード(Age「3」)を作成して、分散型台帳51に格納する。また、制御装置21は、Age「3」のレコードを分散型台帳51に追加するためのトランザクションデータを生成する。制御装置21は、通信装置24を介して、生成されたトランザクションデータを、B企業、C企業およびD企業のクライアントサーバ2に送信する。このトランザクションデータを実行するトランザクション処理が各クライアントサーバ2で行なわれることにより、各クライアントサーバ2の分散型台帳51にAge「3」のレコードが格納される。
【0059】
次いで、制御装置21は、第2操作に応答して、分散型台帳51の終端レコード(Age「3」)のハッシュ値を「終端ハッシュ値」として生成する。終端ハッシュ値は、終端レコード(Age「3」)のレコードハッシュ値である。制御装置21は、生成された終端ハッシュ値と、分散型台帳52の親レコード(Age「2」)のレコードハッシュ値とを含むレコード(Age「3」)を作成して、分散型台帳52に格納する。分散型台帳52のレコード(Age「3」)に、分散型台帳51の終端ハッシュ値が組み込まれることで、分散型台帳51と分散型台帳52とが関連付けられる。また、制御装置21は、Age「3」のレコードを分散型台帳52に追加するためのトランザクションデータを生成する。制御装置21は、通信装置24を介して、生成されたトランザクションデータを、B企業、C企業およびD企業のクライアントサーバ2に送信する。このトランザクションデータを実行するトランザクション処理が各クライアントサーバ2で行なわれることにより、各クライアントサーバ2の分散型台帳セット50において、分散型台帳51,52同士が関連付けられる。
【0060】
具体的な分散型台帳52の構造の一例を示すと、図4のようになる。図4は、分散型台帳セット50の構成の一例を示す図である。分散型台帳52のAge「3」のレコードには、ハッシュ値Hcとハッシュ値H4とがPre-HVとして含まれている。ハッシュ値Hcが親レコード(Age「2」)のレコードハッシュ値であり、ハッシュ値H4が、分散型台帳51のレコード(Age「3」)のレコードハッシュ値(終端ハッシュ値)である。
【0061】
上記のように、分散型台帳52のレコードのPre-HVに、分散型台帳51の終端ハッシュ値が組み込まれることにより、分散型台帳51と分散型台帳52とが関連付けられる(第1証拠チェーンと第2証拠チェーンとが関連付けられる)。これによって、第1部品の部品データと第2部品の部品データとの順序性を証明することができる。図3を参照して、たとえば、第1部品の部品データD13は、第2部品の部品データD22がデータベース4に登録にされた後、かつ、第2部品の部品データD23がデータベース4に登録にされる前にデータベース4に登録されていることを証明することができる。
【0062】
さらに、分散型台帳52のAge「3」のレコードハッシュ値に対してタイムスタンプトークンを取得しておけば、タイムスタンプトークンにより証明される時刻に第1部品の部品データD10~D13が存在したこと、および、第2部品の部品データD20~D22が存在したことを証明することができる。分散型台帳51,52の各々のレコードに対してタイムスタンプトークンを取得する場合に比べて、工数、費用およびシステム負荷等を低減させることができる。すなわち、分散型台帳51の終端ハッシュ値が組み込まれた分散型台帳52のAge「3」のレコードのレコードハッシュ値に対してタイムスタンプトークンを取得しておけば、第1部品の部品データと第2部品の部品データとの存在の順序性および時刻性を担保することができる。
【0063】
なお、第1部品の部品データがD13からD14にさらに更新された場合には、部品データD14のハッシュ値と、分散型台帳51のAge「3」のレコードハッシュ値とを含むレコード(Age「4」)が分散型台帳51に追加される。同様に、第2部品の部品データがD22からD23にさらに更新された場合には、部品データD23のハッシュ値と、分散型台帳52のAge「3」のレコードハッシュ値とを含むレコード(Age「4」)が分散型台帳52に追加される。
【0064】
<機能ブロック>
図5は、第1操作に応答する処理を実行するための制御装置21の機能ブロック図である。図5を参照して、制御装置21は、情報取得部2101と、ハッシュ生成部2102と、ナンス生成部2103と、電子署名部2104と、トランザクションデータ生成部2105と、トランザクションデータ送信部2106とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、情報取得部2101、ハッシュ生成部2102、ナンス生成部2103、電子署名部2104トランザクションデータ生成部2105、および、トランザクションデータ送信部2106として機能する。なお、情報取得部2101、ハッシュ生成部2102、ナンス生成部2103、電子署名部2104、トランザクションデータ生成部2105、および、トランザクションデータ送信部2106は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
【0065】
入力装置25あるいはユーザ端末装置7に対して、第1部品の部品データを更新する第1操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第1操作が行なわれたことを示す第1要求を出力する。
【0066】
情報取得部2101は、入力装置25あるいはユーザ端末装置7から、第1要求を取得する。たとえば、クライアントサーバ2のユーザが、入力装置25を操作して、対象部品の部品データをデータベース4に保存(登録/更新)すると、第1要求が情報取得部2101に入力される。第1要求には、対象部品を特定するためのID(Key)が含まれている。情報取得部2101は、第1要求を取得すると、第1要求をハッシュ生成部2102およびナンス生成部2103に出力する。
【0067】
ハッシュ生成部2102は、第1要求を受けると、たとえばデータベース4から対象部品の部品データを読み出して部品データのハッシュ値を生成する。ハッシュ生成部2102は、生成されたハッシュ値および対象部品のIDを、電子署名部2104およびトランザクションデータ生成部2105に出力する。
【0068】
ナンス生成部2103は、第1要求を受けると、ナンス値を生成する。ナンス値は、暗号学的に衝突が困難なハッシュ値である。ナンス生成部2103は、生成されたナンス値および対象部品のIDを、トランザクションデータ生成部2105に出力する。なお、電子署名の作成にナンス値が用いられる場合には、ナンス生成部2103は、ナンス値および対象部品のIDを電子署名部2104に出力してもよい。
【0069】
電子署名部2104は、記憶装置27から秘密鍵271を読み出す。電子署名部2104は、ハッシュ生成部2102から受けたハッシュ値を秘密鍵271により暗号化することで電子署名を作成する。電子署名部2104は、作成された電子署名および対象部品のIDをトランザクションデータ生成部2105に出力する。また、電子署名部2104は、ナンス生成部2103から受けたナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。また、電子署名部2104は、ハッシュ値およびナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。
【0070】
トランザクションデータ生成部2105は、ネットワークNWへ送信するためのトランザクションデータを生成する。たとえば、トランザクションデータ生成部2105は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。トランザクションデータ生成部2105は、たとえば、分散型台帳セット50に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に出力する。
【0071】
トランザクションデータ送信部2106は、トランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
【0072】
図6は、第2操作に応答する処理を実行するための制御装置21の機能ブロック図である。図6を参照して、制御装置21は、情報取得部2111と、終端ハッシュ生成部2112と、ナンス生成部2113と、電子署名部2114と、トランザクションデータ生成部2115と、トランザクションデータ送信部2116とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、情報取得部2111、終端ハッシュ生成部2112、ナンス生成部2113、電子署名部2114、トランザクションデータ生成部2115、および、トランザクションデータ送信部2116として機能する。なお、情報取得部2111、終端ハッシュ生成部2112、ナンス生成部2113、電子署名部2114、トランザクションデータ生成部2115、および、トランザクションデータ送信部2116は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
【0073】
入力装置25あるいはユーザ端末装置7に対して、第1証拠チェーン(分散型台帳51)と第2証拠チェーン(分散型台帳52)とを関連付ける第2操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第2操作が行なわれたことを示す第2要求を出力する。
【0074】
情報取得部2111は、入力装置25あるいはユーザ端末装置7から、第2要求を取得する。たとえば、クライアントサーバ2のユーザが、入力装置25を操作して、第1操作に加えて、証拠チェーン同士を関連付ける関連付けボタンを選択すると(第2操作をすると)、第2要求が情報取得部2111に入力される。第2要求には、終端ハッシュ値の作成対象となる対象部品のID(たとえばk1)と、終端ハッシュ値の組み込み先となる対象部品のID(たとえばk2)とが含まれている。情報取得部2111は、第2要求を取得すると、第2要求を終端ハッシュ生成部2112およびナンス生成部2113に出力する。
【0075】
終端ハッシュ生成部2112は、終端ハッシュ値の作成対象となる対象部品のIDにより特定される分散型台帳(たとえば分散型台帳51)の最新のレコード(証拠チェーンの終端のレコード)のハッシュ値を終端ハッシュ値として生成する。終端ハッシュ生成部2112は、生成された終端ハッシュ値、および、終端ハッシュ値の組み込み先となる対象部品のID(たとえばk2)を、電子署名部2114およびトランザクションデータ生成部2115に出力する。
【0076】
ナンス生成部2113は、第2要求を受けると、ナンス値を生成する。ナンス生成部2113は、生成されたナンス値、および、終端ハッシュ値の組み込み先となる対象部品のID(たとえばk2)を、トランザクションデータ生成部2115に出力する。なお、電子署名の作成にナンス値が用いられる場合には、ナンス生成部2113は、ナンス値、および、終端ハッシュ値の組み込み先となる対象部品のID(たとえばk2)を電子署名部2114に出力してもよい。
【0077】
電子署名部2114は、記憶装置27から秘密鍵271を読み出す。電子署名部2114は、終端ハッシュ生成部2112から受けた終端ハッシュ値を秘密鍵271により暗号化することで電子署名を作成する。電子署名部2114は、作成された電子署名、および、終端ハッシュ値の組み込み先となる対象部品のID(たとえばk2)をトランザクションデータ生成部2115に出力する。また、電子署名部2114は、ナンス生成部2113から受けたナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。また、電子署名部2114は、終端ハッシュ値およびナンス値を秘密鍵271により暗号化することで電子署名を作成してもよい。
【0078】
トランザクションデータ生成部2115は、ネットワークNWへ送信するためのトランザクションデータを生成する。たとえば、トランザクションデータ生成部2115は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。トランザクションデータ生成部2115は、終端ハッシュ値の組み込み先となる対象部品のID(たとえばk2)をKeyとする。また、トランザクションデータ生成部2115は、終端ハッシュ生成部2112により生成された終端ハッシュ値をObj-HVとする。トランザクションデータ生成部2115のその他の機能は、図5で説明したトランザクションデータ生成部2105と基本的に同様である。
【0079】
トランザクションデータ送信部2116は、トランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
【0080】
図7は、受信したトランザクションデータを実行するための制御装置21の機能ブロック図である。図7を参照して、制御装置21は、トランザクションデータ取得部2121と、署名検証部2122と、レコード作成部2123と、台帳更新部2124と、出力部2125とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、トランザクションデータ取得部2121、署名検証部2122、レコード作成部2123、台帳更新部2124、および、出力部2125として機能する。なお、トランザクションデータ取得部2121、署名検証部2122、レコード作成部2123、台帳更新部2124、および、出力部2125は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
【0081】
トランザクションデータ取得部2121は、他のクライアントサーバ2から送信されたトランザクションデータを取得する。トランザクションデータ取得部2121は、取得されたトランザクションデータを署名検証部2122に出力する。
【0082】
署名検証部2122は、トランザクションデータに含まれる電子署名(Sig)の有効性を検証する。まず、署名検証部2122は、トランザクションデータに含まれる送信者情報に基づいて、当該トランザクションデータの送信元のクライアントサーバ2を特定する。そして、署名検証部2122は、特定されたクライアントサーバ2の公開鍵(複数の公開鍵272のうちの1つ)を記憶装置27から読み出す。署名検証部2122は、読み出された公開鍵を用いて、トランザクションデータに含まれる電子署名を復号する。上述のとおり、電子署名は、部品データのハッシュ値または終端ハッシュ値が、送信元のクライアントサーバ2の秘密鍵を用いて暗号化されたものである。署名検証部2122は、復号した値と、トランザクションデータに含まれているObj-HV(ハッシュ値または終端ハッシュ値)とを比較する。両者が一致することを確認することにより、署名検証部2122は、電子署名の有効性を認める。
【0083】
レコード作成部2123は、電子署名の有効性が認められた場合に、トランザクションデータに基づいて、分散型台帳セット50に追加するレコードを作成する。レコード作成部2123は、トランザクションデータから、Key、Age、Obj-HV、Nonce、Sig、および、Prev-HV、および、HVの情報を読み出して、これらの情報を含むレコードを作成する。
【0084】
台帳更新部2124は、レコード作成部2123により作成されたレコードを分散型台帳セット50に追加し、分散型台帳セット50を更新する。具体的には、台帳更新部2124は、作成されたレコードのKeyを参照し、当該レコードを追加する分散型台帳を特定する。たとえば、上述した、第1部品の部品データを更新する第1操作に応じて生成されたトランザクションデータは、第1部品のIDを示す「k1」をKeyとして有している。このトランザクションデータに基づいて作成されたレコードも、「k1」をKeyとして有する。よって、台帳更新部2124は、当該レコードを、第1部品の部品データの証拠チェーンである分散型台帳51に追加する。また、上述した、第1証拠チェーンを第2証拠チェーンに関連付ける第2操作に応じて生成されたトランザクションデータは、第2部品のIDを示す「k2」をKeyとして有している。このトランザクションデータに基づいて作成されたレコードも、「k2」をKeyとして有する。よって、台帳更新部2124は、当該レコードを、第2部品の部品データの証拠チェーンである分散型台帳52に追加する。
【0085】
台帳更新部2124は、分散型台帳セット50の更新が完了すると、その旨を出力部2125に出力する。
【0086】
出力部2125は、トランザクションデータを実行する処理(トランザクション処理)が完了したことを、トランザクションデータの送信元のクライアントサーバ2に送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクション処理の完了の報告が、トランザクションデータの送信元のクライアントサーバ2に送信される。
【0087】
図8は、タイムスタンプトークンを取得するための制御装置21の機能ブロック図である。図8を参照して、制御装置21は、情報取得部2131と、レコードハッシュ作成部2132と、タイムスタンプトークン取得部2133と、出力部2134とを含む。制御装置21は、たとえば、ROM22に記憶されたプログラムを実行することにより、情報取得部2131、レコードハッシュ作成部2132、タイムスタンプトークン取得部2133、および、出力部2134として機能する。なお、情報取得部2131、レコードハッシュ作成部2132、タイムスタンプトークン取得部2133、および、出力部2134は、たとえば、専用のハードウェア(電子回路)により実現されてもよい。
【0088】
入力装置25あるいはユーザ端末装置7に対して、タイムスタンプトークンの取得を要求する第3操作が行なわれると、入力装置25あるいはユーザ端末装置7は、第3操作が行なわれたことを示す第3要求を出力する。
【0089】
情報取得部2131は、入力装置25あるいはユーザ端末装置7から、第3要求を取得する。たとえば、クライアントサーバ2のユーザが、入力装置25を操作して、表示装置26の表示画面上で、タイムスタンプトークンを取得する対象のIDを入力し、表示装置26に表示されたタイムスタンプトークン取得ボタンを選択すると(第3操作をすると)、第3要求が情報取得部2131に入力される。第3要求には、対象部品を特定するためのID(Key)が含まれている。情報取得部2131は、第3要求を取得すると、第3要求をレコードハッシュ作成部2132に出力する。
【0090】
レコードハッシュ作成部2132は、第3要求から対象部品のIDを特定し、タイムスタンプトークンを取得する(レコードハッシュ値を作成する)対象となる分散型台帳を特定する。たとえば、第3要求に第2部品のIDである「k2」が含まれている場合には、レコードハッシュ作成部2132は、分散型台帳52の最新のレコード(終端レコード)のレコードハッシュ値を作成する。レコードハッシュ作成部2132は、作成されたレコードハッシュ値をタイムスタンプトークン取得部2133に出力する。
【0091】
タイムスタンプトークン取得部2133は、レコードハッシュ作成部2132から受けたレコードハッシュ値を時刻認証局8に送信するための制御信号を、通信装置24に出力する。これにより、通信装置24を介して、時刻認証局8にレコードハッシュ値が送信される。
【0092】
レコードハッシュ値を受信した時刻認証局8は、クライアントサーバ2にタイムスタンプトークンを返信する。
【0093】
タイムスタンプトークン取得部2133は、通信装置24を介して、時刻認証局8からタイムスタンプトークンを受信する。タイムスタンプトークン取得部2133は、取得されたタイムスタンプトークンを出力部2134に出力する。
【0094】
出力部2134は、タイムスタンプトークン取得部2133から受けたタイムスタンプトークンを記憶装置27に記憶させる。あるいは、出力部2134は、タイムスタンプトークン取得部2133から受けたタイムスタンプトークンをデータベース4に記憶させてもよい。これにより、存在時刻の証明を取得することができる。
【0095】
また、出力部2134は、タイムスタンプトークン取得部2133から受けたタイムスタンプトークンを、分散型台帳セット50に保持させてもよい。たとえば、出力部2134は、分散型台帳52のレコードハッシュ値に対してタイムスタンプトークンを取得した場合であれば、タイムスタンプトークンを含めたレコードを作成し、当該レコードを分散型台帳52に追加する。そして、出力部2134は、タイムスタンプトークンをObj-HVとしたトランザクションデータを生成して、当該トランザクションデータをネットワークNWに参加するクライアントサーバ2に送信するための制御信号を、通信装置24に出力する。これにより、タイムスタンプトークンが各クライアントサーバ2の分散型台帳セット50に追加される。
【0096】
また、出力部2134は、タイムスタンプトークン取得部2133から受けたタイムスタンプトークンを外部サーバ9に送信するための制御信号を、通信装置24に出力してもよい。外部サーバ9は、A企業、B企業、C企業およびD企業のいずれでもない管理主体によって管理されるサーバである。タイムスタンプトークンを改ざんするためには、外部サーバ9で管理されているタイムスタンプトークンも改ざんしなければならない。タイムスタンプトークンを外部サーバ9でも管理することによって、タイムスタンプトークンの耐改ざん性を高めることができる。
【0097】
<フローチャート>
図9は、第1要求を受けた場合のトランザクションデータを生成する処理の手順を示すフローチャートである。図9に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から第1要求を受けた際に、制御装置21によって実行される。なお、図9および後述する図10,11,12に示すフローチャートの各ステップ(以下ステップを「S」と略す)は、制御装置21によるソフトウェア処理によって実現される場合について説明するが、その一部あるいは全部が制御装置21内に作製されたハードウェア(電子回路)によって実現されてもよい。
【0098】
S1において、制御装置21は、ナンス値を生成する。このナンス値は、トランザクションデータの番号として用いられる。
【0099】
S2において、制御装置21は、データベース4から対象部品の部品データを読み出して部品データのハッシュ値を生成する。
【0100】
S3において、制御装置21は、記憶装置27から秘密鍵271を読み出し、秘密鍵271を用いて、S2で生成されたハッシュ値を暗号化して電子署名を作成する。なお、制御装置21は、秘密鍵271を用いて、S1で生成されたナンス値を暗号化して電子署名を作成してもよい。また、制御装置21は、秘密鍵271を用いて、S2で生成されたハッシュ値およびS1で生成されたナンス値を暗号化して電子署名を作成してもよい。
【0101】
S4において、制御装置21は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。具体的には、制御装置21は、第1要求に含まれる対象部品のIDをKeyとする。また、制御装置21は、S1で生成されたナンス値をNonceとし、S2で生成されたハッシュ値をObj-HVとし、S3で作成された電子署名をSigとする。また、制御装置21は、分散型台帳セット50にKeyを照会させて親レコードのAgeを認識し、親レコードのAgeをインクリメントしたものをAgeとする。また、制御装置21は、親レコードのレコードハッシュをPrev-HVとする。また、制御装置21は、HVの情報を除く、Key、Age、Obj-HV、Nonce、Sig、および、Prev-HVの情報をハッシュ化して、HVとする。また、制御装置21は、トランザクションデータに、当該トランザクションデータをネットワークNWへ向けてブロードキャストする時刻情報、および/または、当該トランザクションデータの送信者情報を含めてもよい。
【0102】
S5において、制御装置21は、S4で生成されたトランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
【0103】
図10は、第2要求を受けた場合のトランザクションデータを生成する処理の手順を示すフローチャートである。図10に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から第2要求を受けた際に、制御装置21によって実行される。
【0104】
S11において、制御装置21は、ナンス値を生成する。このナンス値は、トランザクションデータの番号として用いられる。
【0105】
S12において、制御装置21は、分散型台帳の最新のレコード(証拠チェーンの終端レコード)をハッシュ化して、終端ハッシュ値を作成する。上述のとおり、第2操作を行なうための表示画面には、終端ハッシュ値の作成対象となる対象部品のIDを入力する「作成対象入力欄」、および、終端ハッシュ値の組み込み先となる対象部品のIDを入力する「組み込み対象入力欄」が設けられている。たとえば、作成対象入力欄にk1、組み込み対象入力欄にk2が入力された場合には、制御装置21は、分散型台帳51の最新のレコードをハッシュ化して、終端ハッシュ値を作成する。
【0106】
S13において、制御装置21は、記憶装置27から秘密鍵271を読み出し、秘密鍵271を用いて、S12で生成された終端ハッシュ値を暗号化して電子署名を作成する。なお、制御装置21は、秘密鍵271を用いて、S11で生成されたナンス値を暗号化して電子署名を作成してもよい。また、制御装置21は、秘密鍵271を用いて、S12で生成された終端ハッシュ値およびS11で生成されたナンス値を暗号化して電子署名を作成してもよい。
【0107】
S14において、制御装置21は、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含めたトランザクションデータを生成する。制御装置21は、「組み込み対象入力欄」に入力されたID(上記の例ではk2)をKeyとする。また、制御装置21は、S12で生成された終端ハッシュ値をObj-HVとする。S14における、その他の処理は、図9のS4の処理と基本的に同様であるため、繰り返し説明しない。
【0108】
S15において、制御装置21は、S14で生成されたトランザクションデータをネットワークNWへ送信するための制御信号を通信装置24に出力する。これにより、通信装置24を介して、トランザクションデータがネットワークNWに送信される。
【0109】
図11は、トランザクションデータを受信した場合に実行される処理の手順を示すフローチャートである。図11に示すフローチャートの処理は、トランザクションデータを受信した際に、制御装置21によって実行される。
【0110】
S21において、制御装置21は、受信したトランザクションデータに含まれる送信者情報に基づいて、当該トランザクションデータの送信元のクライアントサーバ2を特定する。
【0111】
S22において、制御装置21は、S21で特定されたクライアントサーバ2の公開鍵を記憶装置27から読み出す。
【0112】
S23において、制御装置21は、S22で読み出された公開鍵を用いて、トランザクションデータに含まれる電子署名を復号する。
【0113】
S24において、制御装置21は、S23で復号した電子署名の有効性を検証する。具体的には、制御装置21は、電子署名を復号した値と、トランザクションデータに含まれているハッシュ値(あるいは終端ハッシュ値)とを比較する。両者が一致しなかった場合には、制御装置21は、電子署名の有効性を認めず(S24においてNO)、処理をS25に進める。両者が一致した場合には、制御装置21は、電子署名の有効性を認め(S24においてYES)、処理をS26に進める。
【0114】
S25において、制御装置21は、電子署名が有効なものでないため、今回受信したトランザクションデータを破棄し、処理を終了する。なお、制御装置21は、トランザクションデータが改ざんされた可能性がある旨を表示装置26に表示させてもよい。
【0115】
S26において、制御装置21は、受信したトランザクションデータからKey、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を読み出して、これらの情報を含むレコードを作成する。
【0116】
S27において、制御装置21は、S26で作成されたレコードのKeyに基づいて、当該レコードを追加する分散型台帳を特定する。そして、制御装置21は、特定された分散型台帳にレコードを追加する。これにより、分散型台帳セット50が更新される。
【0117】
S28において、制御装置21は、トランザクション処理が完了したことを示す通知(完了報告)を、トランザクションデータの送信元のクライアントサーバ2に送信する。
【0118】
図12は、タイムスタンプトークンを取得する処理の手順を示すフローチャートである。図12に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から第3要求を受けた際に、制御装置21によって実行される。
【0119】
S31において、制御装置21は、第3要求に含まれている対象部品のIDに基づいて、タイムスタンプトークンを取得する対象となる分散型台帳(分散型台帳51または分散型台帳52)を特定する。
【0120】
S32において、制御装置21は、S31で特定された分散型台帳の最新のレコード(終端レコード)のレコードハッシュ値を生成する。
【0121】
S33において、制御装置21は、S32で生成されたレコードハッシュ値を時刻認証局8に送信するための制御信号を、通信装置24に出力する。これにより、通信装置24を介して、時刻認証局8にレコードハッシュ値が送信される。
【0122】
S34において、制御装置21は、通信装置24を介して、時刻認証局8からタイムスタンプトークンを受信する。これにより、対象部品の部品データの存在時刻の証明が取得される。
【0123】
S35において、制御装置21は、S34で取得されたタイムスタンプトークンを記憶装置27に記憶させる。なお、制御装置21は、タイムスタンプトークンをデータベース4に記憶させてもよい。さらに、制御装置21は、タイムスタンプトークンを分散型台帳セット50に保持させてもよい。
【0124】
S36において、制御装置21は、S34で取得されたタイムスタンプトークンを外部サーバ9に送信するための制御信号を、通信装置24に出力する。これにより、通信装置24を介して、外部サーバ9にタイムスタンプトークンが送信される。なお、制御装置21は、タイムスタンプトークンを分散型台帳セット50に追加するためのトランザクションデータを生成し、当該トランザクションデータをネットワークNWに送信するための制御信号を、通信装置24に出力してもよい。
【0125】
以上のように、実施の形態1に係るデータ管理システム1において、クライアントサーバ2は、2つの分散型台帳51,52を含む分散型台帳セット50を保持する。分散型台帳51は、第1部品の部品データの存在を証明するための証拠チェーンであり、分散型台帳52は、第2部品の部品データの存在を証明するための証拠チェーンである。クライアントサーバ2は、ユーザからの求めに応じて、2つの分散型台帳51,52を関連付ける機能を有する。クライアントサーバ2は、一方の分散型台帳の終端ハッシュ値を、他方の分散型台帳のレコードに組み込む。終端ハッシュ値が組み込まれたレコードを基準として、第1部品の部品データと、第2部品の部品データとの存在の順序性を証明することができる。
【0126】
また、クライアントサーバ2は、終端ハッシュ値が組み込まれたレコードに対してタイムスタンプトークンを取得する。終端ハッシュ値が組み込まれたレコードに対してタイムスタンプトークンを取得すれば、第1部品の部品データおよび第2部品の部品データの存在時刻の証明(すなわち、タイムスタンプトークンが示す時刻よりも前に部品データが存在していたことの証明)を取得することができる。終端ハッシュ値が組み込まれたレコードに対してタイムスタンプトークンを取得すれば、分散型台帳51,52のそれぞれに対してタイムスタンプトークンを取得する場合に比べ、工数、コスト、および、システム負荷を低減させることができる。
【0127】
また、クライアントサーバ2は、タイムスタンプトークンを外部サーバ9に送信する。タイムスタンプトークンを外部サーバ9でも管理することにより、タイムスタンプトークンの耐改ざん性を高めることができる。
【0128】
[変形例1]
実施の形態1では、ユーザ操作(第2操作)に起因する第2要求に応じて2つの証拠チェーンの関連付けが行なわれる例について説明したが、2つの証拠チェーンの関連付けは、自動で行なわれてもよい。たとえば、対象部品の部品データの更新がM(自然数)回実行される毎に、当該対象部品の証拠チェーン(分散型台帳)の終端ハッシュ値を、他の証拠チェーン(分散型台帳)のレコードに組み込むようにしてもよい。このような構成であっても、実施の形態1と同様の効果を奏することができる。
【0129】
[実施の形態2]
実施の形態1では、プラットフォームサーバ5が、ネットワークNWへの参加を許可する機能を有する例について説明した。そして、トランザクションデータのファイナリティは、ネットワークNWへの参加が許可されたクライアントサーバ2間で電子署名の有効性の確認することにより与えられた。実施の形態2では、プラットフォームサーバ6が、ネットワークNWへの参加を許可する機能に加えて、トランザクションデータにファイナリティを与える機能を有する例について説明する。
【0130】
図13は、実施の形態2に係るデータ管理システム1Aの概略的な構成を示す図である。データ管理システム1Aは、4台のクライアントサーバ3と、プラットフォームサーバ6と、時刻認証局8とを備える。実施の形態1と同様に、4台のクライアントサーバ3の各々は、異なる企業(たとえば、A企業、B企業、C企業およびD企業)に帰属するサーバである。以下においては、A企業のクライアントサーバ3について代表的に説明するが、B企業、C企業およびD企業のクライアントサーバ3も同様の機能を有する。
【0131】
プラットフォームサーバ6は、実施の形態1に係るプラットフォームサーバ5と同様に、ネットワークNWを管理し、各クライアントサーバ3からのネットワークNWへの参加申請を受け付ける。プラットフォームサーバ6は、プラットフォームサーバ6の管理者による参加を許可する操作に基づき、または、所定の条件の判定結果に基づき、クライアントサーバ3のネットワークNWへの参加を許可する。実施の形態2においても、A企業、B企業、C企業およびD企業のそれぞれに帰属する4台のクライアントサーバ3に対して、ネットワークNWへの参加が許可されている。
【0132】
4台のクライアントサーバ3およびプラットフォームサーバ6は、ネットワークNWを形成している。クライアントサーバ3の各々には、分散型台帳基盤のソフトウェアが導入されており、導入された分散型台帳基盤のソフトウェアが機能することにより、クライアントサーバ3の各々がノードとして機能する。クライアントサーバ3は、実施の形態1に係るクライアントサーバ2と同様に、ユーザ端末装置7と通信可能に構成されている。
【0133】
また、クライアントサーバ3には、実施の形態1に係るクライアントサーバ2と同様に、データベース4が接続されている。クライアントサーバ3(制御装置31)は、入力装置35への入力、あるいは、ユーザ端末装置7からの要求に応じて、部品データを記憶/更新するための制御信号を生成し、データベース4に出力する。
【0134】
クライアントサーバ3は、データベース4に部品データを記憶/更新すると、当該部品データのハッシュ値を作成し、当該ハッシュ値を、プラットフォームサーバ6に保有される台帳、および、各クライアントサーバ3に保有される分散型台帳に格納するためのトランザクションデータを生成する。そして、クライアントサーバ3は、生成されたトランザクションデータをプラットフォームサーバ6に送信する。
【0135】
プラットフォームサーバ6は、トランザクションデータにファイナリティを与える機能を有する。プラットフォームサーバ6は、台帳セット60を保有し、クライアントサーバ3から受けるトランザクションデータを処理して、台帳セット60を更新する。プラットフォームサーバ6は、台帳セット60を更新すると、更新により台帳に追加されたレコードのサマリ(後述のプルーフレコード)を、ネットワークNWに参加する全てのクライアントサーバ3に送信する。クライアントサーバ3はコミットレコードを格納するコミットテーブル374を記憶する。コミットテーブル374は、本開示に係る「分散型台帳」の一例に相当する。
【0136】
図14は、台帳セット60の構成の一例を示す図である。台帳セット60は、台帳67と、台帳68とを含む。台帳67は、実施の形態1に係る分散型台帳51と同様に、第1部品の部品データの更新状態を時系列に記憶し、第1部品の部品データの証拠チェーンを形成する。台帳68は、実施の形態1に係る分散型台帳52と同様に、第2部品の部品データの更新状態を時系列に記憶し、第2部品の部品データの証拠チェーンを形成する。台帳セット60、台帳67および台帳68は、実施の形態1に係る分散型台帳セット50、分散型台帳51および分散型台帳52とそれぞれ同様の構成を有する。そのため、これらの詳細な説明は繰り返さない。
【0137】
再び図13を参照し、クライアントサーバ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とそれぞれ同様の構成であるため、その説明は繰り返さない。
【0138】
記憶装置37は、秘密鍵371およびプルーフデータ372を記憶している。秘密鍵371は、A企業の秘密鍵である。たとえば、クライアントサーバ3がネットワークNWに最初に参加するにあたり、制御装置31は、秘密鍵および公開鍵を生成する。そして、制御装置31は、生成された公開鍵を認証局(図示せず)に送信して、認証を受ける。認証局は、公開鍵の情報を含めた電子証明書を発行する。制御装置31は、認証を受けた公開鍵に対応する秘密鍵371を記憶装置37に記憶させる。また、制御装置31は、認証を受けた公開鍵(電子証明書)651を、プラットフォームサーバ6に送信する。
【0139】
プルーフデータ372は、サスペンションテーブル373と、コミットテーブル374とを含む。図15は、サスペンションテーブル373の構成の一例を説明するための図である。図16は、コミットテーブル374の構成の一例を説明するための図である。サスペンションテーブル373およびコミットテーブル374は、対象部品毎にレコードを有する。
【0140】
図15を参照し、サスペンションテーブル373は、未使用のトランザクションデータに含まれる所定種類の情報を含む。具体的には、サスペンションテーブル373は、たとえば、KeyおよびNonceの情報を含んだサスペンションレコードを記憶する。制御装置31は、第1要求または第2要求に応答して生成されるトランザクションデータに含まれる情報のうちの、KeyおよびNonceの情報をサスペンションレコードとして、サスペンションテーブル373に格納する。入力装置35あるいはユーザ端末装置7からクライアントサーバ3が受ける第1要求および第2要求には、対象部品のIDが含まれている。たとえば、第1要求の対象が第1部品であれば「k1」を示すIDが、第1要求の対象が第2部品であれば「k2」を示すIDが、第1要求に含まれている。すなわち、第1要求または第2要求に含まれている対象部品のIDがKeyとなる。また、第1要求または第2要求を受けると制御装置31は、ナンス値を生成する。当該ナンス値は、第1要求または第2要求の番号(すなわち、トランザクションデータの番号)を表わす。制御装置31は、KeyおよびNonceの情報を含むサスペンションレコードを作成し、当該サスペンションレコードをサスペンションテーブル373に登録する。図15には、サスペンションテーブル373に、k1のKeyを含むサスペンションレコードが登録されている例が示されている。なお、以下では、第1要求と第2要求とを特に区別しない場合には、両者を総称して「更新要求」とも称する。
【0141】
更新要求に応答する処理が実行されると(すなわち、トランザクションデータが使用されると)、制御装置31は、トランザクション処理の実行に使用されたトランザクションデータに含まれるKeyと同様のKeyの情報を含むサスペンションレコードを、サスペンションテーブル373から削除する。
【0142】
サスペンションテーブル373には、同じKeyの情報を含むサスペンションレコードが重複して登録されない。サスペンションレコードをサスペンションテーブル373に登録するにあたり、制御装置31は、登録対象のサスペンションレコードに含まれるKeyと一致するKeyを含んだサスペンションレコードが既にサスペンションテーブル373に登録されているか否かを判断する。制御装置31は、登録対象のサスペンションレコードが含むKeyと一致するKeyを含んだサスペンションレコードがサスペンションテーブル373に登録されていなければ、サスペンションレコードをサスペンションテーブル373に登録する。制御装置31は、登録対象のサスペンションレコードが含むKeyと一致するKeyを含んだサスペンションレコードがサスペンションテーブル373に登録されていれば、一致するKeyを含んだサスペンションレコードがサスペンションテーブル373から削除されるのを待つ。つまり、図15に示す例においては、サスペンションテーブル373に、k2のKeyを含むサスペンションレコードは登録できるが、k1のKeyを含むサスペンションレコードは登録できない。
【0143】
コミットテーブル374は、使用済みのトランザクションデータに含まれる所定種類の情報を含む。具体的には、コミットテーブル374は、Key、Age、HV、および、Nonceの情報を含むコミットレコードを記憶する。コミットテーブル374は、k1のKeyを有するコミットレコードを格納するコミットデータ375と、k2のKeyを有するコミットレコードを格納するコミットデータ376とを含む。
【0144】
プラットフォームサーバ6は、トランザクション処理を実行して、台帳セット60の台帳を更新すると、プルーフレコードを作成し、当該プルーフレコードをネットワークNWに参加する全てのクライアントサーバ3に送信する。プルーフレコードは、たとえば、トランザクションデータを使用して実行されたトランザクション処理により台帳に追加されたレコードのうちの、Key、Age、HV、および、Nonceの情報を含んで構成されたレコードである。
【0145】
プルーフレコードを受けると、制御装置31は、当該プルーフレコードをコミットレコードとして、コミットテーブル374(コミットデータ375またはコミットデータ376)に追加する。そして、制御装置31は、追加したコミットレコードに含まれるKeyと同様のKeyを含むサスペンションレコードを、サスペンションテーブル373から削除する。
【0146】
プラットフォームサーバ6は、制御装置61と、ROM62と、RAM63と、通信装置64と、記憶装置65とを備える。制御装置61、ROM62、RAM63、通信装置64、および、記憶装置65は、バス69に接続されている。
【0147】
制御装置61は、CPUを含む集積回路によって構成される。制御装置61は、ROM62に格納されている各種プログラムをRAM63に展開して実行する。各種プログラムには、オペレーティングシステム等が含まれる。RAM63は、ワーキングメモリとして機能し、各種プログラムの実行に必要な各種データを一時的に格納する。制御装置61は、クライアントサーバ3からトランザクションデータを受信し、トランザクション処理を実行する。
【0148】
通信装置64は、ネットワークNWに参加しているクライアントサーバ3との通信が可能に構成される。
【0149】
記憶装置65は、複数の公開鍵651および台帳セット60を記憶している。複数の公開鍵651は、ネットワークNWに参加しているクライアントサーバ3を管理する企業の公開鍵を含む。具体的には、複数の公開鍵651は、A企業の公開鍵、B企業の公開鍵、C企業の公開鍵およびD企業の公開鍵を含む。
【0150】
台帳セット60は、上述のとおり、実施の形態1に係る分散型台帳セット50と同様の構成を有するため、繰り返し説明しない。
【0151】
以下、フローチャートを示しながら、実施の形態2における第1要求、第2要求および第3要求への応答の処理について順に説明する。
【0152】
図17は、更新要求(第1要求,第2要求)を受けた場合にデータ管理システム1Aで実行される処理の手順を示すフローチャートである。図17に示すフローチャートの処理は、入力装置25あるいはユーザ端末装置7から更新要求(第1要求,第2要求)を受けた際に、クライアントサーバ3の制御装置31によって開始される。
【0153】
S40において、クライアントサーバ3の制御装置31は、ナンス値を生成する。このナンス値は、更新要求に応じて生成されるトランザクションデータの番号として用いられる。
【0154】
S41において、クライアントサーバ3の制御装置31は、サスペンションレコードを生成する。具体的には、クライアントサーバ3の制御装置31は、更新要求に含まれている対象部品のIDを読み出してKeyの情報とし、S40で生成されたナンス値をNonceの情報として、サスペンションレコードを生成する。
【0155】
S42において、クライアントサーバ3の制御装置31は、S41で生成されたサスペンションレコードをサスペンションテーブル373に登録できるか否かを判断する。S41で生成されたサスペンションレコードと同様のKeyの情報を有するサスペンションレコードがサスペンションテーブル373に登録されている場合、クライアントサーバ3の制御装置31は、否定判断をして(S42においてNO)、サスペンションテーブル373から同様のKeyの情報を有するサスペンションレコードが削除されるのを待つ。一方、S41で生成されたサスペンションレコードと同様のKeyの情報を有するサスペンションレコードがサスペンションテーブル373に登録されていない場合、クライアントサーバ3の制御装置31は、肯定判断をして(S42においてYES)、処理をS43に進める。
【0156】
S43において、クライアントサーバ3の制御装置31は、サスペンションテーブル373にサスペンションレコードを登録する。
【0157】
S44において、クライアントサーバ3の制御装置31は、更新要求に応じるためのトランザクションデータを生成する。具体的には、クライアントサーバ3の制御装置31は、更新要求が第1要求である場合には、図9において説明したS2~S5の処理と同様の処理を実行してトランザクションデータを生成し、更新要求が第2要求である場合には、図10において説明したS12~S15の処理と同様の処理を実行してトランザクションデータを生成する。各処理の詳細については、図9および図10において説明したとおりであるので、繰り返し説明しない。
【0158】
S45において、クライアントサーバ3の制御装置31は、S44で生成したトランザクションデータをプラットフォームサーバ6に送信するための制御信号を通信装置34に出力する。これにより、通信装置34を介して、トランザクションデータがプラットフォームサーバ6に送信される。
【0159】
S50において、プラットフォームサーバ6の制御装置61は、受信したトランザクションデータに含まれる電子署名の有効性を検証するために、電子署名を復号する。具体的には、プラットフォームサーバ6の制御装置61は、図11において説明したS21~S23の処理と同様の処理を実行して、電子署名を復号する。各処理の詳細については、図11において説明したとおりであるので、繰り返し説明しない。
【0160】
S51において、プラットフォームサーバ6の制御装置61は、S50で復号した電子署名の有効性を検証する。具体的には、プラットフォームサーバ6の制御装置61は、電子署名を復号した値と、トランザクションデータに含まれているハッシュ値(第1要求に応じて生成されたトランザクションデータにおいては、対象部品の部品データのハッシュ値であり、第2要求に応じて生成されたトランザクションデータにおいては、終端ハッシュ値である)とを比較する。両者が一致しなかった場合には、プラットフォームサーバ6の制御装置61は、電子署名の有効性を認めず(S51においてNO)、処理をS52に進める。両者が一致した場合には、プラットフォームサーバ6の制御装置61は、電子署名の有効性を認め(S51においてYES)、処理をS53に進める。
【0161】
S52において、プラットフォームサーバ6の制御装置61は、クライアントサーバ3から受けたトランザクションデータに改ざんの可能性があると判断して、トランザクションデータを破棄し、改ざんの可能性があることを示す異常報告を作成する。そして、プラットフォームサーバ6の制御装置61は、処理をS56に進める。
【0162】
S53において、プラットフォームサーバ6の制御装置61は、トランザクション処理を実行する。具体的には、プラットフォームサーバ6の制御装置61は、図11において説明したS26,S27の処理と同様の処理を実行し、トランザクションデータに含まれるKeyの情報により特定される台帳のレコードを生成して、当該台帳に生成されたレコードを追加し、台帳セット60を更新する。
【0163】
S54において、プラットフォームサーバ6の制御装置61は、プルーフレコードを生成する。プルーフレコードは、台帳に追加されたレコードに含まれる情報のうちの、Key、Age、HV、および、Nonceの情報を含む。
【0164】
S55において、プラットフォームサーバ6の制御装置61は、台帳セット60の更新が完了したこと(すなわち、トランザクションデータを処理したこと)を示す正常報告を作成する。プラットフォームサーバ6の制御装置61は、正常報告にプルーフレコードを含める。
【0165】
S56において、プラットフォームサーバ6の制御装置61は、S52において作成された異常報告、または、S55において作成された正常報告をクライアントサーバ3に送信するための制御信号を通信装置64に出力する。これにより、通信装置64を介して、異常報告または正常報告がクライアントサーバ3に送信される。
【0166】
また、S56において、プラットフォームサーバ6の制御装置61は、プルーフレコードを、トランザクションデータの送信元以外の他のクライアントサーバ3(たとえば、B企業,C企業、D企業のクライアントサーバ3)に送信するための制御信号を通信装置64に出力する。これにより、通信装置64を介して、プルーフレコードが他のクライアントサーバ3に送信される。
【0167】
S46において、クライアントサーバ3の制御装置31は、プラットフォームサーバ6から正常報告を受信したか否かを判断する。正常報告を受信したと判断すると(S46においてYES)、クライアントサーバ3の制御装置31は、処理をS47に進める。一方、正常報告を受信していない、すなわち異常報告を受信したと判断すると(S46においてNO)、クライアントサーバ3の制御装置31は、処理をS49に進める。
【0168】
S47において、クライアントサーバ3の制御装置31は、正常報告に含まれるプルーフレコードをコミットレコードとしてコミットテーブル374に追加する。具体的には、クライアントサーバ3の制御装置31は、プルーフレコードのKeyの情報に基づいて、コミットレコードを追加する対象がコミットデータ375であるかコミットデータ376であるかを判断する。そして、クライアントサーバ3の制御装置31は、対象のコミットデータにコミットレコードを追加する。
【0169】
S48において、クライアントサーバ3の制御装置31は、追加したコミットレコードと同じKeyの情報を有するサスペンションレコードを、サスペンションテーブル373から削除する。
【0170】
S49において、クライアントサーバ3の制御装置31は、更新要求に対する処理の結果を、たとえば、表示装置36に表示させたり、ユーザ端末装置7に送信したりする。
【0171】
なお、S56において送信されたプルーフレコードを受信した他のクライアントサーバ3(B企業,C企業、D企業のクライアントサーバ3)も、同様にプルーフレコードをコミットテーブル374に追加することで、コミットテーブル374が更新される。
【0172】
図18は、実施の形態2において、タイムスタンプトークンを取得する処理の手順を示すフローチャートである。図18に示すフローチャートの処理は、入力装置35あるいはユーザ端末装置7から第3要求を受けた際に、制御装置31によって実行される。
【0173】
S61において、制御装置31は、第3要求に含まれている対象部品のIDに基づいて、タイムスタンプトークンを取得する対象となるコミットデータ(コミットデータ375またはコミットデータ376)を特定する。
【0174】
S62において、制御装置31は、S61で特定されたコミットデータの最新のコミットレコードのハッシュ値を生成する。
【0175】
S63において、制御装置31は、S62で生成されたハッシュ値を時刻認証局8に送信するための制御信号を、通信装置34に出力する。これにより、通信装置34を介して、時刻認証局8にハッシュ値が送信される。
【0176】
S64において、制御装置31は、通信装置34を介して、時刻認証局8からタイムスタンプトークンを受信する。これにより、対象部品の部品データの存在時刻の証明が取得される。
【0177】
S65において、制御装置31は、S64で取得されたタイムスタンプトークンを記憶装置37に記憶させる。なお、制御装置31は、タイムスタンプトークンをデータベース4に記憶させてもよい。
【0178】
S66において、制御装置21は、S34で取得されたタイムスタンプトークンを外部サーバ9に送信するための制御信号を、通信装置34に出力する。これにより、通信装置34を介して、外部サーバ9にタイムスタンプトークンが送信される。さらに、制御装置31は、タイムスタンプトークンをコミットテーブル374に追加するために、台帳セット60にタイムスタンプトークンを含めるためのトランザクションデータを生成し、当該トランザクションデータをプラットフォームサーバ6に送信するための制御信号を、通信装置34に出力してもよい。
【0179】
以上のように、実施の形態2に係るデータ管理システム1Aにおいては、プラットフォームサーバ6がトランザクションデータにファイナリティを与える。プラットフォームサーバ6は、2つの台帳67,68を含む台帳セット60を保持する。台帳67には、第1部品の部品データの更新状態が時系列に記憶され、台帳68には、第2部品の部品データの更新状態が時系列に記憶される。そして、台帳セット60が更新されると、台帳セット60に追加されたレコードのサマリであるプルーフレコードがプラットフォームサーバ6から各クライアントサーバ3に送られ、クライアントサーバ3の各々は、プルーフレコードをコミットレコードとして、コミットテーブル374に追加する。コミットテーブル374が実施の形態1に係る分散型台帳セット50に相当する。実施の形態2に係るデータ管理システム1Aの構成においても、一方の台帳(たとえば台帳67)の終端ハッシュ値を、他方の台帳(たとえば台帳68)のレコードに組み込んで関連付けておけば、そのサマリであるコミットデータ同士も関連付けられる。これによって、実施の形態1と同様に、終端ハッシュ値が組み込まれたコミットレコードを基準として、第1部品の部品データと、第2部品の部品データとの存在の順序性を証明することができる。
【0180】
また、各クライアントサーバ3がコミットテーブル374を持ち合うことで、コミットテーブル374の耐改ざん性が高められる。
【0181】
また、クライアントサーバ3は、終端ハッシュ値が組み込まれたコミットデータのレコードに対してタイムスタンプトークンを取得する。終端ハッシュ値が組み込まれたレコードに対してタイムスタンプトークンを取得すれば、第1部品の部品データおよび第2部品の部品データの存在時刻の証明(すなわち、タイムスタンプトークンが示す時刻よりも前に部品データが存在していたことの証明)を取得することができる。
【0182】
また、クライアントサーバ3は、タイムスタンプトークンを外部サーバ9に送信する。タイムスタンプトークンを外部サーバ9でも管理することにより、タイムスタンプトークンの耐改ざん性を高めることができる。
【0183】
[変形例2]
実施の形態2では、コミットテーブル374は、台帳セット60に含まれる情報のうちの一部を有する例について説明した。具体的には、コミットテーブル374のコミットデータ375,376の各々は、台帳セット60の台帳67,68の各々が有する、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報のうちの、Key、Age、HV、および、Nonceの情報を含んで構成された。しかしながら、コミットデータ375,376の各々は、台帳67,68と同じ情報、すなわち、Key、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含んで構成されてもよい。この場合には、プルーフレコードもKey、Age、Obj-HV、Nonce、Sig、Prev-HV、および、HVの情報を含むように生成される。上記のような構成によっても、実施の形態2と同様の効果を奏することができる。
【0184】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0185】
1,1A データ管理システム、2,3 クライアントサーバ、4 データベース、5,6 プラットフォームサーバ、7 ユーザ端末装置、8 時刻認証局、9 外部サーバ、21 制御装置、22 ROM、23 RAM、24 通信装置、25 入力装置、26 表示装置、27 記憶装置、29 バス、31 制御装置、32 ROM、33 RAM、34 通信装置、35 入力装置、36 表示装置、37 記憶装置、39 バス、50 分散型台帳セット、51,52 分散型台帳、60 台帳セット、61 制御装置、62 ROM、63 RAM、64 通信装置、65 記憶装置、67,68 台帳、69 バス、271 秘密鍵、272 複数の公開鍵、371 秘密鍵、372 プルーフデータ、373 サスペンションテーブル、374 コミットテーブル、375,376 コミットデータ、651 複数の公開鍵、2101 情報取得部、2102 ハッシュ生成部、2103 ナンス生成部、2104 電子署名部、2105 トランザクションデータ生成部、2106 トランザクションデータ送信部、2111 情報取得部、2112 終端ハッシュ生成部、2113 ナンス生成部、2114 電子署名部、2115 トランザクションデータ生成部、2116 トランザクションデータ送信部、2121 トランザクションデータ取得部、2122 署名検証部、2123 レコード作成部、2124 台帳更新部、2125 出力部、2131 情報取得部、2132 レコードハッシュ作成部、2133 タイムスタンプトークン取得部、2134 出力部、NW ネットワーク。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18