(57)【要約】【課題】本発明は、あいまいな時間情報を用いずに検証対象のイベント情報の発生順序を正確に検証できるようにするとともに、検証対象のイベント情報が改ざんされているのか否かを正確に検証できるようにする技術の提供を目的とする。【解決手段】発生するイベント情報ごとにハッシュ値を作成し、その作成したハッシュ値とそのイベント情報とを記録するハッシュノードを生成して、その生成順に連鎖させることでハッシュノードチェーンを生成する。イベント情報を検証するときには、ハッシュノードの記録するハッシュ値とイベント情報とを使ってハッシュノードチェーンの正当性を評価し、検証対象のイベント情報とそれに対応付けられるハッシュノードの記録するイベント情報とが一致するのか否かを検証する。これにより、検証対象のイベント情報の発生順序とそれらのイベント情報が改ざんされているのか否かを検証できるようになる。【選択図】図１５
2006343790.tif 000002
【特許請求の範囲】
【請求項１】
イベント情報の発生履歴の管理に用いられるイベントハッシュ値を作成するイベントハッシュ作成方法であって、
少なくとも時間情報、場所情報、モノの識別情報からなるイベント情報を入力する過程と、
上記入力したイベント情報と、同一のイベント情報構成要素値について１つ前に入力したイベント情報に応じて作成したイベントハッシュ値とに基づいて、上記入力したイベント情報に対応するイベントハッシュ値を作成する過程とを備えることを、
特徴とするイベントハッシュ作成方法。
【請求項２】
イベント情報の発生履歴を蓄積するイベント履歴蓄積方法であって、
少なくとも時間情報、場所情報、モノの識別情報からなるイベント情報を入力する過程と、
上記入力したイベント情報と、同一のイベント情報構成要素値について１つ前に入力したイベント情報に応じて作成したハッシュ値とに基づいて、上記入力したイベント情報に対応するハッシュ値を作成して、その入力したイベント情報に対応付けられるハッシュノードとして定義されて、その作成したハッシュ値を記録するハッシュノードを生成する過程と、
新たに生成したハッシュノードと同一のイベント情報構成要素値について１つ前に生成したハッシュノードとの間に親子関係を設定することでハッシュノードチェーンを生成して蓄積装置に蓄積する過程とを備えることを、
特徴とするイベント履歴蓄積方法。
【請求項３】
請求項２に記載のイベント履歴蓄積方法において、
上記生成する過程では、上記入力したイベント情報についても記録するハッシュノードを生成することを、
特徴とするイベント履歴蓄積方法。
【請求項４】
請求項２又は３に記載のイベント履歴蓄積方法において、
上記蓄積する過程では、これまでに使用していた蓄積装置に代えて別の蓄積装置を使用することになる場合には、これまでに使用していた蓄積装置に対して最後に蓄積したハッシュノードを、これから使用する蓄積装置にも蓄積することを、
特徴とするイベント履歴蓄積方法。
【請求項５】
請求項２ないし４のいずれか１項に記載のイベント履歴蓄積方法において、
新たに生成したハッシュノードを既に生成してあるハッシュノードチェーンに追加する場合に、新たに生成したハッシュノードとそのハッシュノードチェーンの持つ分岐元となるハッシュノードとの間に分岐関係を設定することで、その追加を実行する過程を備えることを、
特徴とするイベント履歴蓄積方法。
【請求項６】
請求項２ないし４のいずれか１項に記載のイベント履歴蓄積方法において、
既に生成してあるハッシュノードチェーンの持つあるハッシュノードを削除する場合に、そのハッシュノードの持つ状態記録域に、削除されたハッシュノードであることを示す情報を設定することで、その削除を実行する過程を備えることを、
特徴とするイベント履歴蓄積方法。
【請求項７】
請求項２ないし４のいずれか１項に記載のイベント履歴蓄積方法において、
複数のモノに対してある操作が施される場合に、それらのモノのイベント情報に対応するハッシュ値とその操作の情報とに基づいて、その操作の情報に対応するハッシュ値を作成して、その操作の情報とその作成したハッシュ値とを記録する操作イベントノードを生成する過程を備えることを、
特徴とするイベント履歴蓄積方法。
【請求項８】
入力したイベント情報と、同一のイベント情報構成要素値について１つ前に入力したイベント情報に応じて作成したハッシュ値とに基づいて、その入力したイベント情報に対応するハッシュ値を作成して、その入力したイベント情報に対応付けられるハッシュノードとして定義されて、その作成したハッシュ値を記録するハッシュノードを生成するとともに、新たに生成したハッシュノードと同一のイベント情報構成要素値について１つ前に生成したハッシュノードとの間に親子関係を設定することにより生成されたハッシュノードチェーンを蓄積する装置を参照することで、検証対象として与えられるイベント情報を検証するイベント情報検証方法であって、
検証対象のイベント情報に基づいて、ハッシュノードチェーン上の検索範囲を絞り込む過程と、
上記検索範囲に含まれる全てのハッシュノードを処理対象として、処理対象のハッシュノードに対応付けられるイベント情報と、その処理対象のハッシュノードの１つ前のハッシュノードの記録するハッシュ値とに基づいてハッシュ値を作成して、その作成したハッシュ値がその処理対象のハッシュノードの記録するハッシュ値と一致するのか否かを評価することを繰り返すことでハッシュノードチェーンの正当性を評価して、その評価結果に基づいて検証対象のイベント情報を検証する過程と、
上記検証の結果を出力する過程とを備えることを、
特徴とするイベント情報検証方法。
【請求項９】
請求項８に記載のイベント情報検証方法において、
上記検証する過程では、処理対象のハッシュノードがハッシュノードチェーンから分岐する形で登録されている場合には、そのハッシュノードに対応付けられるイベント情報と、分岐元のハッシュノードの記録するハッシュ値とに基づいてハッシュ値を作成して、その作成したハッシュ値がそのハッシュノードの記録するハッシュ値と一致するのか否かを評価することを、
特徴とするイベント情報検証方法。
【請求項１０】
請求項８に記載のイベント情報検証方法において、
上記検証する過程では、処理対象のハッシュノードの持つ状態記録域に、削除されたハッシュノードであることを示す情報が設定されている場合には、その情報を無視する形でハッシュノードチェーンの正当性を評価して、ハッシュノードに対応付けられるイベント情報を使って検証対象のイベント情報の検証を行う際に、その情報を考慮して検証を行うことを、
特徴とするイベント情報検証方法。
【請求項１１】
請求項８に記載のイベント情報検証方法において、
上記検証する過程では、複数のモノに対してある操作が施される場合にあって、それらのモノのイベント情報に対応するハッシュ値とその操作の情報とに基づいて作成されたハッシュ値と、その操作の情報とを記録する操作イベントノードが蓄積されている場合には、操作情報についても検証対象として、ハッシュ値を使って操作イベントノードの記録する操作情報の正当性を評価し、その評価結果に基づいて検証対象の操作情報を検証することを、
特徴とするイベント情報検証方法。
【請求項１２】
イベント情報の発生履歴を蓄積し、その蓄積データを使ってイベント情報を検証するイベント情報処理システムであって、
１つ又は複数の処理手段で構成されて、イベント情報を入力して、その入力したイベント情報と同一のイベント情報構成要素値について１つ前に入力したイベント情報に応じて作成したハッシュ値とに基づいて、その入力したイベント情報に対応するハッシュ値を作成し、それを記録するハッシュノードを生成して、それと同一のイベント情報構成要素値について１つ前に生成したハッシュノードとの間に親子関係を設定することでハッシュノードチェーンを生成して蓄積装置に蓄積し、さらに、この処理にあたって、分岐関係を設定することで、新たに生成したハッシュノードのハッシュノードチェーンへの追加を可能にするとともに、ハッシュノードの持つ状態記録域に削除ハッシュノードであることを示す情報を設定することでハッシュノードチェーンからのハッシュノードの削除を可能にする第１の処理機構と、
１つ又は複数の処理手段で構成されて、検証対象のイベント情報に基づいて上記蓄積装置に蓄積されるハッシュノードチェーン上の検索範囲を絞り込み、その検索範囲に含まれる全てのハッシュノードを処理対象として、処理対象のハッシュノードに対応付けられるイベント情報と、その処理対象のハッシュノードの１つ前のハッシュノードの記録するハッシュ値とに基づいてハッシュ値を作成して、その作成したハッシュ値がその処理対象のハッシュノードの記録するハッシュ値と一致するのか否かを評価することを繰り返すことでハッシュノードチェーンの正当性を評価して、その評価結果に基づいて検証対象のイベント情報を検証し、さらに、この処理にあたって、分岐関係を使って追加されたハッシュノードについても同様の方法で評価を行うとともに、削除ハッシュノードであることを示す情報が状態記録域に設定されているハッシュノードについては、その情報を無視する形で評価を行うことで検証対象のイベント情報を検証して、その検証結果を出力する第２の処理機構とを備えることを、
特徴とするイベント情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント情報の発生履歴の管理に用いられるイベントハッシュ値を作成するイベントハッシュ作成方法と、そのイベントハッシュ作成方法を用いてイベント情報の発生履歴を蓄積するイベント履歴蓄積方法と、そのイベント履歴蓄積方法により蓄積されたイベント履歴情報を使ってイベント情報を検証するイベント情報検証方法と、そのイベント履歴蓄積方法およびイベント情報検証方法により構築されるイベント情報処理システムとに関する。
【背景技術】
【０００２】
モノの移動を電子的記録として蓄積し、受け取った人がその発出元や通過履歴を確認するということを実現するために、いくつかの方法がある。
【０００３】
その多くは、「時間」、「場所」、「モノの識別情報」をＩＣタグやネットワークの蓄積装置に格納し、後からその蓄積情報を参照して履歴情報を確認する（トレースする）というものである（例えば、特許文献１，２、非特許文献１参照）。
【０００４】
例えば、通過する拠点、拠点で、ＩＣタグ中に「時間」、「場所」などの情報を追加・蓄積しておき、そのＩＣタグを受けとった人が、そのＩＣタグ中の情報を参照してその履歴を確認するものである。また別の例としては、モノが通過した拠点、拠点で、データベースなどの蓄積装置に「時間」、「場所」、「モノの識別情報」などの情報を追加・蓄積し、ネットワークでそれらの蓄積装置を結ぶなどして、複数の利用者からその履歴情報を参照することを可能とするものである。
【０００５】
履歴の順序はもっぱら格納された時刻情報によっており、その時刻は、モノの通過を検出した拠点のクライアントシステムの時間情報であったり、蓄積機能（ＩＣタグ自身や履歴蓄積装置）が持つ時間情報を元にしている。その時間の確からしさについては、装置自身の時間チューニング機能を用いて人が適宜時間合わせを行ったり、ＮＴＰ（Network Time Protocol)などの時刻補正機能を設けて、いかに関連機器の時間を正確に保つかという取り組みが行われている。そして、その履歴を確認する場合には、蓄積された時間情報の順にイベントが発生したとみなすことが一般的である。
【０００６】
また、一般に情報の順序の連続性を検証可能な手段としてハッシュチェーンがあり、あるハッシュ関数Ｆに対して複数のハッシュ値Ｈmnを入力として新たなハッシュ値Ｈn+1 を求めるという操作を繰り返すことによりできたハッシュ値Ｈの列は、その前後関係を、
Ｈn+1 ＝Ｆ（Ｈ1n ,Ｈ2n ,・・・・, Ｈmn）
の関係が成り立つことを利用して検証可能であることが知られている（例えば、非特許文献２参照）。
【０００７】
そして、Ｈn とＨn+1 とはハッシュ関数を介して密接に関係しているため、Ｈn とＨn+1 との間に新たなＨa を挿入することは事実上不可能であり、新たなＨa を挿入するときには、Ｆ（Ｈn,Ｈa ）を求めることによりＨn+1 以降のハッシュ値を全て再計算する必要がある。
【０００８】
このハッシュ関数の性質を利用したサービスとして、例えばタイムスタンプサービス（例えば、非特許文献２参照）や、米国Ｓurety 社の技術を使ったＮＴＴデータ株式会社が提供する電子文書の存在証明サービスがある（例えば、非特許文献３参照）。
【特許文献１】特開平７−６１５３２号公報
【特許文献２】特開平８−２６８５１３号公報
【非特許文献１】EPCglobal Version 1.0 Specifications. Savant Specification. [Online]，インターネット＜ＵＲＬ：http://www.epcglobalinc.org/about/AutoID-Archive/documents/6-auto-id-savant-1-0.pdf ＞
【非特許文献２】暗号技術大全, ブルースシュナイア著, 「４．１章  タイムスタンプサービスの連結プロトコル」
【非特許文献３】ＮＴＴデータ株式会杜,  "セキュアシール",［On line 平成17年３月24日検索］, インターネット＜ＵＲＬ： http://www.ssc.nttdata.co.jp/outline/outline01.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００９】
モノの通過やモノへの操作を表すイベント情報（モノの識別情報、時間情報、場所情報など）を入力として蓄積装置に蓄積していく場合、イベント情報を作成するクライアント側のシステムタイマが正確でなかったり、クライアント間で無視できない時間の誤差があったり、履歴を蓄積するサーバの時間に変更が加えられた場合には、格納されているイベント情報の順序が信頼できないものとなってしまう。
【００１０】
従来技術では、正確なＮＴＰサーバを用いてクライアント側やサーバのシステム時刻を整合させることを行うが、これには全てのクライアント、サーバの装置がＮＴＰを利用して時刻の調整を行わなければならず、ＩＣタグや携帯端末のような独立した時計を持っているものや、ネットワークサービスを受けることができない装置については対処をすることが不可能であった。
【００１１】
そして、ＮＴＰサーバを用いない場合には、イベント情報の作成に関与する全ての装置の時間をある範囲の誤差内に合わせておくことも困難である。
【００１２】
また、格納されている情報が改ざんされたり、何らかの原因で異なる情報が格納されていることの可能性を払拭できず、これから、蓄積している装置そのものの耐タンパ性や格納時間の正当性を証明することが必要であり課題であった。
【００１３】
また、同時に蓄積されている履歴を参照した場合、その返却情報としてのイベント情報が改ざんされていないかどうかを確認できることが必要であり課題であった。
【００１４】
このような事情を考慮して、本発明は、モノの移動やモノへの操作を検知しイベント情報を作成する装置の時間情報が正確でなくても、また、イベント情報を格納する装置の時間情報が正確でなくても、その格納順序を保証して検証可能とするための手段をハッシュチェーンの性質を利用して提供することと、蓄積されたイベント情報が何らかの原因で改ざんされたことを検知できる手段をハッシュチェーンの性質を利用して提供することを目的とする。
【００１５】
一方、イベントの履歴情報を格納する処理の中で、クライアントなどでイベント情報作成の欠落が生じた場合に、事後に、その欠落イベントを履歴情報格納装置のデータに挿入することが必要になる。
【００１６】
しかるに、従来のハッシュチェーン計算方式では、いったん作成されたハッシュチェーンに対して新たなハッシュ値を挿入することは、挿入地点以降のハッシュ値をすべて再計算することが必要であることから、挿入場所によっては多大な計算量が必要となり課題であった。
【００１７】
このような事情を考慮して、本発明は、ハッシュチェーンを使って上述の目的を実現するにあたって、イベント情報の欠落が生じた場合にあって、その後に、その欠落イベントを挿入するときに、その計算量を従来のハッシュチェーン計算方式より削減する手段を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記の目的を達成するために、本発明は、イベント情報に対応付けられるノード（ハッシュノード：基本的にはイベント情報とそれから作成されるハッシュ値とを記録する）を記録の基本要素として位置づけて、発生するイベント情報ごとにハッシュ値を作成してそれを記録するハッシュノードを生成し、その生成したハッシュノードをその生成順に連鎖させることでハッシュノードチェーンを生成することにより、改ざんが困難でイベント情報の発生順序を検証可能なシステムを実現する。
【００１９】
ここで、このハッシュノードは、イベント情報とそれから作成されるハッシュ値とを記録することが好ましいが、イベント情報が別の蓄積装置に保存されている場合には、イベント情報については記録しないで、どの蓄積装置のどの格納位置に保存されているのかを示す情報を記録するようにしても、本発明は実現可能である。
【００２０】
本発明のイベント情報処理システムは、以下に説明するイベント履歴蓄積装置とイベント情報検証装置とで構成される。
【００２１】
〔１〕本発明のイベント履歴蓄積装置の構成
本発明のイベント履歴蓄積装置は、イベント情報の発生履歴を蓄積するものであり、これを実現するために、
（ａ）少なくとも時間情報、場所情報、モノの識別情報からなるイベント情報を入力する      入力手段と、
（ｂ）入力したイベント情報と、同一のイベント情報構成要素値について１つ前に入力し      たイベント情報に応じて作成したハッシュ値とに基づいて、その入力したイベント      情報に対応するハッシュ値を作成して、その入力したイベント情報に対応付けられ      るハッシュノードとして定義されて、その作成したハッシュ値とその入力したイベ      ント情報とを記録するハッシュノードを生成する生成手段と、
（ｃ）新たに生成したハッシュノードと同一のイベント情報構成要素値について１つ前に      生成したハッシュノードとの間に親子関係を設定することでハッシュノードチェー      ンを生成して、ハッシュノードチェーン蓄積装置に蓄積する実行手段と、
（ｄ）新たに生成したハッシュノードを既に生成してあるハッシュノードチェーンに追加      する場合に、新たに生成したハッシュノードとそのハッシュノードチェーンの持つ      分岐元となるハッシュノードとの間に分岐関係を設定することで、その追加を実行      する追加手段と、
（ｅ）既に生成してあるハッシュノードチェーンの持つあるハッシュノードを削除する場      合に、そのハッシュノードの持つ状態記録域に、削除されたハッシュノードである      ことを示す情報を設定することで、その削除を実行する削除手段と、
（ｆ）複数のモノに対してある操作が施される場合に、それらのモノのイベント情報に対      応するハッシュ値とその操作の情報とに基づいて、その操作の情報に対応するハッ      シュ値を作成し、その操作の情報とその作成したハッシュ値とを記録する操作イベ      ントノードを生成して、操作イベントノード蓄積装置に蓄積する操作イベント処理      手段とを備える
という構成を採る。
【００２２】
この構成を採るときに、実行手段は、これまでに使用していた蓄積装置に代えて別の蓄積装置を使用することになる場合には、これまでに使用していた蓄積装置に対して最後に蓄積したハッシュノードを、これから使用する蓄積装置にも蓄積するように処理し、これにより、これから使用する蓄積装置にハッシュノードチェーンを蓄積していくときに、これまでに使用していた蓄積装置を参照することなく、その蓄積に入ることができるようになる。
【００２３】
以上の各処理手段が動作することで実現される本発明のイベント履歴蓄積方法はコンピュータプログラムでも実現できるものであり、このコンピュータプログラムは、適当なコンピュータ読み取り可能な記録媒体に記録して提供されたり、ネットワークを介して提供され、本発明を実施する際にインストールされてＣＰＵなどの制御手段上で動作することにより本発明を実現することになる。
【００２４】
〔２〕本発明のイベント情報検証装置の構成
本発明のイベント情報検証装置は、本発明のイベント履歴蓄積装置により生成されたハッシュノードチェーンを蓄積するハッシュノードチェーン蓄積装置を参照することで、検証対象として与えられるイベント情報を検証するものであり、これを実現するために、
（ａ）検証対象のイベント情報に基づいて、ハッシュノードチェーン上の検索範囲を絞り      込む検索範囲設定手段と、
（ｂ）絞り込んだ検索範囲に含まれる全てのハッシュノードを処理対象として、処理対象      のハッシュノードに対応付けられるイベント情報と、その処理対象のハッシュノー      ドの１つ前のハッシュノードの記録するハッシュ値とに基づいてハッシュ値を作成      して、その作成したハッシュ値がその処理対象のハッシュノードの記録するハッシ      ュ値と一致するのか否かを評価することを繰り返すことでハッシュノードチェーン      の正当性を評価して、その評価結果に基づいて検証対象のイベント情報を検証する      検証手段と、
（ｃ）検証結果を出力する出力手段とを備える
という構成を採る。
【００２５】
ここで、検証手段は、最初に、検証対象のイベント情報がハッシュノードに対応付けられるイベント情報と一致するのか否かを検証することで、検証対象のイベント情報の中から改ざんされていないものを抽出して、その後、ハッシュノードチェーンの正当性を評価することで、検証対象のイベント情報が改ざんされていないのか否かということと、それらのイベント情報の発生順序を検証したり、あるいは、最初に、ハッシュノードチェーンの正当性を評価し、その後、検証対象のイベント情報がハッシュノードに対応付けられるイベント情報と一致するのか否かを検証することで、検証対象のイベント情報が改ざんされていないのか否かということと、それらのイベント情報の発生順序を検証する。
【００２６】
この構成を採るときにあって、検証手段は、処理対象のハッシュノードがハッシュノードチェーンから分岐する形で登録されている場合には、そのハッシュノードに対応付けられるイベント情報と、分岐元のハッシュノードの記録するハッシュ値とに基づいてハッシュ値を作成して、その作成したハッシュ値がそのハッシュノードの記録するハッシュ値と一致するのか否かを評価する。
【００２７】
また、検証手段は、処理対象のハッシュノードの持つ状態記録域に、削除されたハッシュノードであることを示す情報が設定されている場合には、その情報を無視する形でハッシュノードチェーンの正当性を評価して、検証対象のイベント情報がハッシュノードに対応付けられるイベント情報と一致するのか否かを検証する際に、その情報を考慮して検証を行う。
【００２８】
また、検証手段は、本発明のイベント履歴蓄積装置により操作イベントノードが操作イベントノード蓄積装置に蓄積されている場合には、操作情報についても検証対象として、ハッシュ値を使って操作イベントノードの記録する操作情報の正当性を評価し、検証対象の操作情報がその正当なものとして評価された操作情報と一致するのか否かを検証することで、検証対象の操作情報を検証する。
【００２９】
以上の各処理手段が動作することで実現される本発明のイベント情報検証方法はコンピュータプログラムでも実現できるものであり、このコンピュータプログラムは、適当なコンピュータ読み取り可能な記録媒体に記録して提供されたり、ネットワークを介して提供され、本発明を実施する際にインストールされてＣＰＵなどの制御手段上で動作することにより本発明を実現することになる。
【００３０】
〔３〕本発明のイベント情報処理システムの実装形態
本発明で扱うモノについては、複数の拠点をまたがってイベント情報を発生するものと、複数の拠点をまたがらないでイベント情報を発生するものとがある。例えば、企業Ａ内や企業Ｂ内だけでイベント情報を発生するモノもあれば、企業Ａから企業Ｂへと搬送されることで、企業Ａと企業Ｂとの双方でイベント情報を発生するモノもある。
【００３１】
複数の拠点をまたがらないモノのイベント情報については、各拠点ごとに本発明のイベント履歴蓄積装置を備えるようにして、それが備えるローカルなハッシュノードチェーン蓄積装置にハッシュノードチェーンを蓄積するようにし、一方、複数の拠点をまたがるモノのイベント情報については、各拠点に共有となる形態で本発明のイベント履歴蓄積装置を備えるようにして、それが備えるグローバルなハッシュノードチェーン蓄積装置にハッシュノードチェーンを蓄積するという構成を採ることが好ましい。
【００３２】
このような構成を採る場合には、あるモノについてのイベント情報が発生すると、そのモノが複数の拠点をまたがるものであるのか、複数の拠点をまたがらないものであるのかを判断して、その判断結果に基づいて、複数の拠点をまたがらないモノについては、そのイベント情報をイベント情報の発生拠点に対応付けて備えられる本発明のイベント履歴蓄積装置に転送し、一方、複数の拠点をまたがるモノについては、各拠点に共有となる形態で備えられる本発明のイベント履歴蓄積装置に転送するという振り分け機構を用意することになる。
【００３３】
ここで、本発明のイベント情報検証装置については、本発明のイベント履歴蓄積装置のそれぞれに対応付けて備えるという構成を採ることも可能であるし、通信ネットワークを利用することで、複数の本発明のイベント履歴蓄積装置に共有となる形態で備えるという構成を採ることも可能である。
【００３４】
〔４〕本発明の動作
〔４−１〕本発明のイベント履歴蓄積装置の動作
上述のように構成される本発明のイベント履歴蓄積装置では、少なくとも時間情報、場所情報、モノの識別情報からなるイベント情報が発生すると、先ず最初に、そのイベント情報を入力する。
【００３５】
続いて、その入力したイベント情報と、同一のイベント情報構成要素値（例えば同一のモノ）について１つ前に入力したイベント情報に応じて作成したハッシュ値とに基づいて、その入力したイベント情報に対応するハッシュ値を作成して、その入力したイベント情報に対応付けられるハッシュノードとして定義されて、その作成したハッシュ値とその入力したイベント情報とを記録するハッシュノードを生成する。
【００３６】
例えば、入力したイベント情報をＥn 、同一のイベント情報構成要素値について１つ前に入力したイベント情報に応じて作成したハッシュ値をＨn-1 、ハッシュ関数をＦ，Ｆ1 , Ｆ2 で表すならば、
Ｈn ＝Ｆ（Ｅn ，Ｈn-1 ）
という関係式に従って、その入力したイベント情報に対応するハッシュ値Ｈn を作成したり、Ｆ1(Ｅn)に従ってテンポラリなハッシュ値Ｔn を作成してから、
Ｈn ＝Ｆ2(Ｔn ，Ｈn-1 ）
という関係式に従って、その入力したイベント情報に対応するハッシュ値Ｈn を作成して、その作成したハッシュ値Ｈn とその入力したイベント情報Ｅn とを記録するハッシュノードを生成するのである。
【００３７】
続いて、新たに生成したハッシュノードと同一のイベント情報構成要素値について１つ前に生成したハッシュノードとの間に親子関係を設定することでハッシュノードチェーンを生成して、ハッシュノードチェーン蓄積装置に蓄積する。
【００３８】
すなわち、新たに生成したハッシュノードＱn のノード識別情報をＮn 、そのハッシュノードＱn の持つ前ノードポインタをＰＰn と表し、同一のイベント情報構成要素値について１つ前に生成したハッシュノードＱn-1 のノード識別情報をＮn-1 、そのハッシュノードＱn-1 の持つ次ノードポインタをＰＦn-1 と表すならば、ハッシュノードＱn の持つ前ノードポインタＰＰn にノード識別情報をＮn-1 を設定するとともに、ハッシュノードＱn-1 の持つ次ノードポインタＰＦn-1 にノード識別情報をＮn を設定することでハッシュノードチェーンを生成して、ハッシュノードチェーン蓄積装置に蓄積するのである。
【００３９】
このようにして蓄積されるハッシュノードチェーンは改ざんが困難で発生順序が検証可能であるという性質を持つことから、ハッシュノードに記録されるイベント情報が改ざんされたのか否かということを検証できるようになるともに、ハッシュノードに記録されるイベント情報の発生順序を検証できるようになる。
【００４０】
しかるに、ハッシュノードチェーンは、そのようなことを実現できる性質の裏返しとして、ハッシュノードの追加が困難であるとともに、ハッシュノードの削除が困難であるという性質を持つ。
【００４１】
そこで、本発明のイベント履歴蓄積装置では、新たに生成したハッシュノードを既に生成してあるハッシュノードチェーンに追加する場合には、新たに生成したハッシュノードとそのハッシュノードチェーンの持つ分岐元となるハッシュノードとの間に分岐関係を設定することで、その追加を実行する。
【００４２】
すなわち、ハッシュノードチェーンの持つ分岐元となるハッシュノードをＱn 、そのハッシュノードＱn のノード識別情報をＮn 、そのハッシュノードＱn の持つ分岐先ポインタをＰＢn 、追加するハッシュノードをＱb 、そのハッシュノードＱb のノード識別情報をＮb 、そのハッシュノードＱb の持つ分岐元ポインタをＰＲb で表すならば、ハッシュノードＱn の持つ分岐先ポインタＰＢn にノード識別情報Ｎb を設定するとともに、ハッシュノードＱb の持つ分岐元ポインタＰＲb にノード識別情報Ｎn することで、ハッシュノードＱb の追加を実行するのである。
【００４３】
このような追加方法を用いれば、既に生成してあるハッシュノードチェーンのハッシュ値については再計算する必要がないので、ハッシュノードを極めて簡単に追加することができるようになる。
【００４４】
そして、本発明のイベント履歴蓄積装置では、既に生成してあるハッシュノードチェーンの持つあるハッシュノードを削除する場合には、そのハッシュノードの持つ状態記録域に、削除されたハッシュノードであることを示す情報を設定することで、その削除を実行する。
【００４５】
すなわち、ハッシュノードチェーンからハッシュノードを削除するのではなくて、そのハッシュノードの持つ状態記録域に、削除されたハッシュノードであることを示す情報を設定することで、その削除を実行するのである。
【００４６】
このような削除方法を用いれば、既に生成してあるハッシュノードチェーンのハッシュ値については再計算する必要がないので、ハッシュノードを極めて簡単に削除することができるようになる。
【００４７】
一方、モノに関するイベント情報の他に、複数のモノに対して施された操作の情報についても検証したい場合が起こる。
【００４８】
そこで、このような要求に応えるべく、本発明のイベント履歴蓄積装置では、複数のモノに対してある操作が施される場合に、それらのモノのイベント情報に対応するハッシュ値とその操作の情報とに基づいて、その操作の情報に対応するハッシュ値を作成し、その操作の情報とその作成したハッシュ値とを記録する操作イベントノードを生成して、操作イベントノード蓄積装置に蓄積するという構成を採っている。
【００４９】
このようにして、本発明のイベント履歴蓄積装置は、少なくとも時間情報、場所情報、モノの識別情報からなるイベント情報が発生すると、発生するイベント情報ごとにハッシュ値を作成して、その作成したハッシュ値とそのイベント情報とを記録するハッシュノードを生成し、その生成したハッシュノードをその生成順に連鎖させることでハッシュノードチェーンを生成して、ハッシュノードチェーン蓄積装置に蓄積するように処理するのである。
【００５０】
そして、複数のモノに対してある操作が施される場合に、それらのモノのイベント情報に対応するハッシュ値とその操作の情報とに基づいて、その操作の情報に対応するハッシュ値を作成し、その操作の情報とその作成したハッシュ値とを記録する操作イベントノードを生成して、操作イベントノード蓄積装置に蓄積するように処理するのである。
【００５１】
〔４−２〕本発明のイベント情報検証装置の動作
この本発明のイベント履歴蓄積装置の処理を受けて、上述のように構成される本発明のイベント情報検証装置では、イベント情報の検証要求があると、まず最初に、検証対象のイベント情報に基づいてハッシュノードチェーン上の検索範囲を絞り込む。
【００５２】
例えば、検証対象のイベント情報からそのイベント情報の発生した時間帯を特定することで、ハッシュノードチェーン上の検索範囲を絞り込んだり、検証対象のイベント情報の識別子からそのイベント情報を記録するハッシュノードを特定することで、ハッシュノードチェーン上の検索範囲を絞り込むことなどにより、ハッシュノードチェーン上の検索範囲を絞り込むのである。
【００５３】
続いて、その絞り込んだ検索範囲に含まれる全てのハッシュノードを処理対象として、処理対象のハッシュノードの記録するイベント情報と、その処理対象のハッシュノードの１つ前のハッシュノードの記録するハッシュ値とに基づいてハッシュ値を作成して、その作成したハッシュ値がその処理対象のハッシュノードの記録するハッシュ値と一致するのか否かを評価することを繰り返すことでハッシュノードチェーンの正当性を評価して、その評価結果に基づいて検証対象のイベント情報を検証する。
【００５４】
すなわち、ハッシュノードチェーンが正当であることの評価結果が得られることで、ハッシュノードの記録するイベント情報が改ざんされていないことが分かると、検証対象のイベント情報とそれに対応付けられるハッシュノードの記録するイベント情報とが一致するのか否かを検証して、一致する場合には、検証対象のイベント情報が正当なものであると判断し、一致しない場合には、検証対象のイベント情報が正当なものではないと判断するのである。
【００５５】
また、別の方法として、ハッシュノードチェーンの正当性の評価を行う前に、検証対象のイベント情報とそれに対応付けられるハッシュノードの記録するイベント情報とが一致するのか否かを検証して、一致しない場合には、直ちに検証対象のイベント情報が正当なものではないと判断し、一致する場合には、ハッシュノードチェーンの正当性の評価を行って、ハッシュノードチェーンが正当であることの評価結果が得られる場合には、検証対象のイベント情報が正当なものであると判断するのである。
【００５６】
ここで、ハッシュノードチェーンが正当であることの評価結果が得られない場合には、ハッシュノードの記録するイベント情報が改ざんされている可能性があるので、検証対象のイベント情報についてその検証を行うことはできないことになる。
【００５７】
続いて、その検証結果を出力することで、どの検証対象のイベント情報について検証できたのかを出力する。このとき、検証したイベント情報について、ハッシュノードチェーン上の並びに並べて出力することで、その発生順序についても出力することがある。
【００５８】
この検証を行うにあたって、本発明のイベント履歴蓄積装置が分岐関係を使ってハッシュノードをハッシュノードチェーンに追加することがあるので、ハッシュノードがハッシュノードチェーンから分岐する形で追加登録されている場合には、その追加されたハッシュノードの記録するイベント情報と、分岐元のハッシュノードの記録するハッシュ値とに基づいてハッシュ値を作成して、その作成したハッシュ値がその追加されたハッシュノードの記録するハッシュ値と一致するのか否かを評価することで、その追加されたハッシュノードの記録するイベント情報が正当なものであるのか否かを判断する。
【００５９】
また、本発明のイベント履歴蓄積装置がハッシュノードの持つ状態記録域に削除情報を設定することでハッシュノードチェーンからハッシュノードを削除することがあるので、処理対象のハッシュノードの持つ状態記録域に削除が設定されている場合には、その削除情報を無視する形でハッシュノードチェーンの正当性を評価して、検証対象のイベント情報がそれに対応付けられるハッシュノードの記録するイベント情報と一致するのか否かを検証する際に、その削除情報が設定されている場合には一致しないと判断することで、検証対象のイベント情報の検証を行う。
【００６０】
また、本発明のイベント履歴蓄積装置が操作イベントノードを生成して操作イベントノード蓄積装置に蓄積することがあるので、操作イベントノードが蓄積されている場合には、操作情報についても検証対象として、検証対象の操作情報に対応付けられる操作イベントノードのハッシュ値を作成して、その作成したハッシュ値がその操作イベントノードの記録するハッシュ値と一致するのか否かを評価することで、その操作イベントノードの記録する操作情報が正当なものであるのか否かを評価し、正当な操作情報であるという評価が得られた場合には、その操作情報と検証対象の操作情報とが一致するのか否かを検証することで、検証対象の操作情報を検証する。
【００６１】
ここで、操作イベントノードの記録する操作情報が正当であることの評価結果が得られない場合には、その操作情報が改ざんされている可能性があるので、検証対象の操作情報についてその検証を行うことはできないことになる。
【発明の効果】
【００６２】
以上の説明で明らかなように、本発明によれば、次の効果がある。
【００６３】
（１）ハッシュノードチェーンを用いる効果
新たに発生するイベントの情報は予見不可能であり、ハッシュノードチェーンを改ざんするためには、前後で矛盾の無いハッシュ値を発見し、しかも、その元情報がイベント情報として意味のある形式・値を持たなければならない。したがって、ハッシュノードチェーンを改ざんすることは実質上不可能となる。これから、本発明によれば、イベント情報を正確に検証できるようになる。
【００６４】
（２）イベント情報（時間、場所、ＩＤ）をそのまま格納することによる効果
時間情報はあいまいであり、これからイベント情報の順序を検証するための情報としては用いることができないものの、検証の基準を時間をキーとすることで検索範囲を容易に絞り込むことができる。これから、本発明によれば、イベント情報の検索範囲を容易に絞り込むことができるようになる。
【００６５】
（３）既存のハッシュノードチェーンへの影響を最小限にする追加削除方法の効果
ハッシュノードというハッシュ値を記録したデータ構造を用いるときにあって、既存のイベント履歴の途中のハッシュ値やその他の付加情報を再計算することなく別のハッシュノードを挿入・削除することを可能とし、履歴情報の柔軟性を向上する。これは読み取り率が低いとされるＩＣタグなどの未読み取りイベント情報を適切な環境で後から追加することや、誤って読み込むことで登録されたイベント情報の削除を可能とする。これから、本発明によれば、実用的なシステムを構築できるようになる。
【００６６】
（４）検証処理の効果化
イベント生成端末などから入力された時間情報を利用しなくても、イベント情報の順序性を検証できるようになる。これから、本発明によれば、あいまいな時間情報を用いずにイベント情報の順序性を検証できるようになる。
【発明を実施するための最良の形態】
【００６７】
以下、「モノの識別情報」、「時間情報」、「場所情報」からなるイベント情報Ｅn を用いた場合の実施の形態に従って本発明を詳細に説明する。
【００６８】
図１に、本発明におけるイベントハッシュ値の作成フローの一例を示す。なお、図面中では、イベントハッシュ値を単にハッシュ値と記載することがある。
【００６９】
この作成フローに示すように、イベントハッシュ値を作成する場合、先ず最初に、先頭のイベントハッシュ値Ｈ0 を定め（ステップＳ１０）、続いて、変数ｎに１をセットする（ステップＳ１１）。
【００７０】
続いて、イベントの入力を待って（ステップＳ１２）、イベントの入力を受けとると、入力情報からイベント情報Ｅn を選択取得し（ステップＳ１３）、この取得したイベント情報Ｅn をハッシュ関数Ｆに入力することでテンポラリなハッシュ値Ｔn を作成する（ステップＳ１４）。
【００７１】
続いて、作成したテンポラリなハッシュ値Ｔn を１つ前に作成したイベントハッシュ値Ｈn-1 とともに再度ハッシュ関数Ｆに入力することで新たなイベントハッシュ値を作成して、それを入力イベントのイベントハッシュ値Ｈn とする（ステップＳ１５）。続いて、変数ｎの値を１つインクリメントしてから（ステップＳ１６）、再びイベントの入力を待つ（ステップＳ１２）。
【００７２】
以降、入力イベントが受け取られるたびに同じ処理を繰り返す。これにより、Ｈn(ｎ≧１）からなるイベントハッシュ値のチェーンが作成される。
【００７３】
このようにして作成されるイベントハッシュ値のチェーンは、改ざんされると前後関係Ｈn ＝Ｆ（Ｆ（Ｅn)，Ｈn-1)が成り立たなくなったり、入力されるイベントが外部から与えられるなどして予測不可能な値である場合には偽造したデータを入れ替えることができないという特徴を持つ。
【００７４】
図２に、このイベントハッシュ値の作成時におけるデータの流れを示す。ここで、ハッシュ関数の関与のさせ方について、同じものを使うか何回使うかについてはその実現の仕方に依存する。
【００７５】
図３に、ハッシュノードチェーンの構成例を示し、図４に、ハッシュノードチェーンを構成するときの概念図を示す。
【００７６】
つぎに、この図３および図４を参照して、ハッシュノードおよびそのチェーンについて説明する。
【００７７】
図１の作成フローにより作成されるイベントハッシュ値だけでは、その履歴の探索やイベントに関わる情報を保持できないことから、図３に示すように、付加情報とともにイベントハッシュ値をハッシュノード３１０，３２０として構成することにより、情報処理するのに意味のある履歴情報として実現する。
【００７８】
ここで、３１１，３２１はノードＩＤであり、ハッシュノードを一意に特定するための識別情報である。３１２，３２２は削除フラグであり、そのハッシュノードが削除された状態にあるのか否かを示す情報である。３１３，３２３はモノＩＤであり、本イベントが発生したモノを識別する情報である。３１４，３２４はリーダＩＤであり、本イベントを読み取ったリーダを識別する情報であって、一般にリーダが固定されていれば場所を特定する情報である。３１５，３２５はタイムスタンプであり、本イベントが発生した時間情報である。３１６，３２６は親ノードＩＤであり、上位のハッシュノードへのポインタである。３１７，３２７は子ノードＩＤであり、下位のハッシュノードへのポインタである。３１８，３２８は本発明のイベントハッシュ作成手段（図４中に示す４８０）により作成されたイベント情報のハッシュ値（イベントハッシュ値）である。
【００７９】
図４から分かるように、予め与えられたルートハッシュノード４１０があるときに、イベントハッシュ作成手段４８０からイベントハッシュ値４２０が入力されると、ハッシュノード４５０のノードＩＤを定めた後、ルートハッシュノード４１０の子ノードＩＤにそのノードＩＤを設定する。ハッシュノード４５０では、そのノードＩＤを設定することに加えて、親ノードＩＤとしてルートハッシュノード４１０のノードＩＤを格納し、イベントハッシュ値として入力されたイベントハッシュ値４２０を格納し、さらに、イベントａからモノＩＤ情報、リーダＩＤ情報、タイムスタンプ情報を取得して格納する。
【００８０】
以下、イベントｂ，ｃが入力されたときにも、同様にして直列のハッシュノードのチェーンが作成される。このとき、最後に作成されたハッシュノードがカレントハッシュノードとなり、次のイベントが入力されたときのイベントハッシュ作成時の入力情報の１つとなる。
【００８１】
これにより、ある１つのハッシュノードチェーンである同じモノＩＤのイベント情報をつなげていくことにより、そのモノの移動履歴をトレース可能な情報鎖を実現できるし、ある同じリーダＩＤを持つイベント情報をつなげていくことにより、ある場所を通過したモノの順序をトレース可能な情報鎖を実現できる。
【００８２】
つぎに、図５、図６、図７に従って、操作イベントの履歴情報の蓄積方法について説明する。
【００８３】
まず、操作イベントの履歴管理は、その一意性を担保するために、操作種別と関連するモノの情報と操作の時間情報とを用いてハッシュノードのチェーンを構成する。
【００８４】
図５は、２つの箱５１０，５２０を１つの外箱５３０に梱包するという操作を示すイメージ図である。
【００８５】
図６は、イベント種別を“箱詰め”として、箱詰めの外箱５３０を検出したイベントをイベント親ノードとし、梱包される２つの箱５１０，５２０を検出したイベントをイベント子ノードとして、ハッシュノードチェーンを構成する例を示している。
【００８６】
ハッシュノード６３０は外箱５３０を表しており、外箱５３０のモノＩＤとイベントとして検出されたときの時間情報と読み込みリーダＩＤとが設定されており、いつどこで何が検知されたかが分かるようになっている。ハッシュノード６４０，６５０はそれぞれ梱包される箱５１０，５２０を表しており、同じく、いつどこで何が検知されたかが分かるようになっている。
【００８７】
操作イベントノード６６０は箱５１０，５２０，外箱５３０に対する操作を表しており、イベント親モノＩＤ６６１には外箱５３０のモノＩＤが設定され、イベント子１モノＩＤ６６２には箱５１０のモノＩＤが設定され、イベント子２モノＩＤ６６３には箱５２０のモノＩＤが設定され、イベント種別６６５には箱詰め操作を表示する情報が設定され、タイムスタンプ６６４には操作（箱詰め）された時間が設定され、イベント親ノードＩＤ６６６にはハッシュノード６３０のノードＩＤが設定され、イベント子１ノードＩＤ６６７にはハッシュノード６４０のノードＩＤが設定され、イベント子２ノードＩＤ６６８にはハッシュノード６５０のノードＩＤが設定されている。
【００８８】
以上の情報を元にして操作が行われたことによる関連情報を一意に特定するために、イベント種別６６５とタイムスタンプ６６４と関連するモノのイベントハッシュ値６３１，６４１，６５１とを入力として、上述した処理と同様に、ハッシュ関数を用いて操作イベントハッシュ値６６９を生成して格納する。
【００８９】
図７は、操作イベント履歴を作成する例を複数のモノを挙げて示しており、モノＩＤ００１，００２，００３，００４，００５，００６に関して、そのハッシュノードのチェーンを格納している様子を７１１，７１２，７１３，７１４，７１５，７１６で図示している。
【００９０】
そして、操作イベントノード７２１，７２２，７２３，７２４，７２５は、それぞれ操作イベントのノード（ハッシュノード）であり、例えば、操作イベントノード７２１は、モノＩＤ００１の品物がハッシューノード７３１→７３２→７３３→７３４という履歴を経てきたときにあって、モノＩＤ００４の品物がハッシュノード７３５として検知されたときに何らかの操作が行われたということを表している。
【００９１】
つぎに、図８、図９に従って、ハッシュノードの途中追加方法について説明する。
【００９２】
例えば、ＩＣタグなどの情報をリーダから読み取り、イベントとして扱う場合、情報の読み取り漏れのために、あるモノの情報を読み取れないことでイベント漏れが発生する場合がある。このとき、既に読み取られているものがハッシュノードチェーンとして登録されている場合、追加するにはイベントハッシュ値の再計算など多大な処理が必要となる可能性がある。
【００９３】
そこで、それを回避するために、本発明では、追加するハッシュノードは既存のハッシュノードの格納するイベントハッシュ値には影響を与えないようにするために分岐するようにしている。
【００９４】
図８は、ハッシュノード８２０（イベントＡ）とハッシュノード８３０（イベントＢ）との間に、ハッシュノード８５０（イベントＣ）が追加されている様子を示している。
【００９５】
図９は、その場合におけるハッシュノードの構成例であり、ハッシュノードの相関情報として、ブランチノードＩＤ９１３とブランチ元ノードＩＤ９３２とを設けることにより、ハッシュノード９１０とハッシュノード９２０との間にハッシュノード９３０を挿入可能としている。
【００９６】
ハッシュノード検索時にブランチノードＩＤ９１３に値が設定されているときには、そのハッシュノード中の子ノードＩＤ９１２よりも優先して探索することにより、イベントＡとイベントＢとの間にイベントＣが挿入されている状態を実現できる。このとき、追加されたハッシュノード９３０のイベントハッシュ値９３３は、分岐元であるハッシュノード９１０の格納するイベントハッシュ値９１４を使って上述したイベントハッシュ値の作成方法により作成されることになる。
【００９７】
つぎに、図１０、図１１に従って、ハッシュノードの削除方法について説明する。
【００９８】
例えば、誤った読み込みや蓄積装置の故障などにより、いったん格納されたハッシュノードを削除する必要がある。このとき、既に読み取られているものがハッシュノードチェーンとして登録されている場合、削除するにはイベントハッシュ値の再計算など多大な処理が必要となる可能性がある。
【００９９】
そこで、それを回避するために、本発明では、予め用意されたハッシュノードの持つ削除フラグをＯＮにし、ハッシュノード検索時に削除フラグの値がＯＮ設定されているときには、そのハッシュノードをスキップすることで前後のハッシュノードの格納するイベントハッシュ値に影響を与えずにハッシュノードの削除を実現するようにしている。ただし、子ノードにあたるハッシュノードの検証を行うときには、依然として削除されたハッシュノードの格納するイベントハッシュ値を使用することになる。
【０１００】
図１０は、ハッシュノードＢを削除する場合の様子を示している。図１１は、その場合におけるハッシュノードの構成例である。削除されたハッシュノード１１２１の子ノードにあたるハッシュノード１１３１の検証を行うときには、依然として削除されたハッシュノード１１２１の格納するイベントハッシュ値１１２２を使用することになる。
【０１０１】
つぎに、図１２、図１３、図１４に従って、イベント履歴情報の検証方法について説明する。
【０１０２】
ここで、図１２はイベントの検証の概要図であり、図１３はイベントの検証フローの一例であり、図１４はイベントの検証時におけるデータの流れを示す。
【０１０３】
図１２に示すように、イベント検証手段１２３０は、受け取った検証対象のイベント群１２００（検証対象となる外部入力のイベント群であって、モノＩＤ、リーダＩＤ、イベント発生時刻を含むイベントのリスト）をハッシュノードチェーン蓄積装置１２４０の持つ順序で取得して検証して、検証に成功したイベントを検証済みイベントリスト１２２０を使って返却するとともに、検証に失敗したイベントを未検証イベントリスト１２１０を使って返却する。
【０１０４】
図１３がその検証フローの一例である。
【０１０５】
この検証フローに示すように、１つ以上の外部からのイベント情報を検証対象として受け取ると（ステップＳ１３１０）、その入力した検証対象のイベント情報に対応するハッシュノード情報をハッシュノードチェーン蓄積装置１２４０から全て取得する（ステップＳ１３１１）。このとき、ハッシュノードチェーン蓄積装置１２４０にないイベント情報を未検証イベントリスト１２１０に追加する（ステップＳ１３１２）。
【０１０６】
ここで、このステップＳ１３１１では、検証対象のイベント情報とそれに対応付けられるハッシュノードチェーン上に記録されるイベント情報とが完全に一致するのか否かを調べて、完全に一致するものについてハッシュノードチェーン蓄積装置１２４０からハッシュノード情報を取得するようにしており、これから、ハッシュノードチェーン蓄積装置１２４０にないイベント情報が検証対象として入力されてきた場合には、そのイベント情報は直ちに未検証イベントリスト１２１０に追加されることになる。
【０１０７】
なお、ハッシュノードチェーン上に記録されるイベント情報が改ざんされていることで、検証対象のイベント情報がハッシュノードチェーン蓄積装置１２４０に蓄積されていないことも起こるが、この場合には、イベント情報の検証を行うことができないので、検証対象のイベント情報を未検証イベントリスト１２１０に追加することについて何の問題も起こらない。
【０１０８】
続いて、取得したハッシュノードについてノードＩＤ順にソートし、その最大ノード番号Ｍと最小ノード番号Ｎとを用いて、ハッシュノードチェーン蓄積装置１２４０から、再度Ｍ番目とＮ番目との間にある全てのハッシュノード情報と、ノードＩＤ＝Ｎ−１のハッシュノード情報とを取得する（ステップＳ１３１３）。
【０１０９】
各ハッシュノードの検証処理は、Ｎ番目のハッシュノードを起点にして（ステップＳ１３１４）、検証するハッシュノードに含まれるモノＩＤ、リーダＩＤ、時刻のイベント情報をハッシュ関数に入力することでテンポラリなハッシュ値Ｔn を作成する（ステップＳ１３１５）。そして、その作成したテンポラリなハッシュ値Ｔn と、親ハッシュノードに格納されているイベントハッシュ値Ｈn-1 とをハッシュ関数に入力することでイベントハッシュ値を作成して、その作成したイベントハッシュ値を検証するハッシュノードの持つイベントハッシュ値Ｈn と比較して等しいのかを検証する（ステップＳ１３１６）。
【０１１０】
検証するイベントハッシュ値が壊れていなかったり、イベント情報が改ざんされていない場合には、このとき２つのイベントハッシュ値が一致し検証に成功する（ステップＳ１３１７）。このときには、検証済みイベントリスト１２２０に追加する（ステップＳ１３１８）。
【０１１１】
一方、検証するイベントハッシュ値が壊れていたり、イベント情報が改ざんされている場合には、このとき２つのイベントハッシュ値が不一致となり検証に失敗する（ステップＳ１３１７）。検証時に検証不一致のハッシュノードがあった場合、それ以降の検証対象のハッシュノードについては検証せずに未検証イベントリスト１２１０に追加する（ステップＳ１３２１）。
【０１１２】
前述のハッシュノードの削除方法でも触れたように、ハッシュノードの削除状態に関わらず全てのハッシュノードが検証対象である。また、ハッシュノードが見つからない場合には（ステップＳ１３１２）、検証対象外として返却してもよい。また、ステップＳ１３１３でノードＩＤ順にソートする場合に、ブランチノードがあった場合には、そのブランチ中のハッシュノードを優先して探索し並べる。
【０１１３】
以上に説明した検証については、ステップＳ１３１３で得られたハッシュノードが終わるまで継続する（ステップＳ１３１９，ステップＳ１３２０）。検証結果は検証済みイベントリスト１２２０および未検証イベントリスト１２１０を返却することで行う（ステップＳ１３２２）。このとき実装によっては、検証不一致リストと検証範囲に入っていないハッシュノードを含む対象外リストとを分けて返却してもよい。
【０１１４】
ここで、この図１３に示す検証フローでは、ステップＳ１３１１で、検証対象のイベント情報とそれに対応付けられるハッシュノードチェーン上に記録されるイベント情報とが完全に一致するのか否かを調べて、完全に一致するものについてハッシュノードチェーン蓄積装置１２４０からハッシュノード情報を取得するようにしているが、そのような一致の判断を行わずに、検証対象のイベント情報について無条件にハッシュノードチェーン蓄積装置１２４０からハッシュノード情報を取得するようにして、ステップＳ１３１７でハッシュノードの正当性を確認した後に、検証対象のイベント情報とそれに対応付けられるハッシュノードに記録されるイベント情報とが完全に一致するのか否かを調べて、それに応じて、検証済みイベントリスト１２２０と未検証イベントリスト１２１０とに振り分けるようにしてもよい。
【０１１５】
このようにして、イベント検証手段１２３０は、図１２に示すように、受け取った検証対象のイベント群１２００をハッシュノードチェーン蓄積装置１２４０の持つ順序で取得して検証して、検証に成功したイベント情報を検証済みイベントリスト１２２０を使って返却するとともに、検証に失敗したイベント情報を未検証イベントリスト１２１０を使って返却するように処理するのである。
【０１１６】
ここで、図１３の検証フローでは説明していないが、図５〜図７で説明した操作イベントノードが蓄積されている場合には、操作イベントノードの記録する情報を使って操作情報を検証することになる。
【０１１７】
すなわち、検証対象の操作情報に対応付けられる操作イベントノードの記録するイベント種別、操作の時間情報および関連するモノのイベントハッシュ値をハッシュ関数に入力することで操作イベントハッシュ値を作成して、その作成した操作イベントハッシュ値がその操作イベントノードの記録する操作イベントハッシュ値と等しいのか否かを検証することで、その操作イベントノードの記録する操作情報が正当なものであるのか否かを評価して、正当な操作情報であるという評価が得られた場合には、その操作情報と検証対象の操作情報とが一致するのか否かを検証することで、検証対象の操作情報を検証することになる。
【０１１８】
つぎに、図１５に従って、本発明により実現されるイベント履歴情報蓄積システムについて説明する。
【０１１９】
この図に示すように、本発明により実現されるイベント履歴情報蓄積システム１５００は、その一例として、イベント生成端末１５１０，１５２０，１５３０と、イベント原本蓄積装置１５４０と、ハッシュノードチェーン蓄積サーバ１５５０と、それらを結ぶネットワーク１５６０とから構成される。
【０１２０】
イベント生成端末１５１０は、イベント情報送受信手段１５１１と、イベント情報取得・作成手段１５１２と、モノＩＤ情報取得手段１５１３と、場所情報取得手段１５１４と、時刻発生手段１５１５と、ＩＣタグリーダ／ライタ１５１６とから構成され、その他のイベント発生端末１５２０，１５３０も同様の構成である。
【０１２１】
イベント原本蓄積装置１５４０は、その中のイベント原本蓄積手段１５４１にイベント原本（イベント情報）そのものを蓄積しており、例えばイベント検索手段１５４２やイベント参照手段１５４３により、ユーザに対してイベント情報を応用したサービスを提供している。
【０１２２】
ここで、イベント原本を蓄積する手段としては、箱１５７０と一緒に移動する可搬型イベント蓄積手段１５８０（例えばＩＣカードやメモリ付ＩＣタグ）を用いて、イベント情報を格納して箱１５７０と同時に移動させてもよい。
【０１２３】
ハッシュノードチェーン蓄積サーバ１５５０は、本発明の各方法を手段として実現・具備したサーバであり、イベントハッシュ作成手段１５５１と、イベント履歴蓄積手段１５５２と、イベント履歴追加手段１５５３と、イベント履歴検証手段１５５４と、イベント履歴削除手段１５５５と、操作イベント登録手段１５５６と、ハッシュノードチェーン蓄積装置１５５７とから構成される。
【０１２４】
ここで、この図の例では、ハッシュノードチェーン蓄積装置１５５７は、３つのモノＩＤ＝Ａ，Ｂ，Ｃのモノについて、それぞれ個別のハッシュノードチェーンを格納して履歴を蓄積していることを想定している。
【０１２５】
このように構成されるイベント履歴情報蓄積システム１５００では、例えばＩＣタグ１５７１の添付された箱１５７０がイベント生成端末１５１０→イベント生成端末１５２０→イベント生成端末１５３０と移動していくときに、ＩＣタグ１５７１の内容（モノＩＤ）がＩＣタグリーダ／ライタ１５１６，１５２１，１５３１に読み取られる場合を考えると、まずＩＣタグリーダ／ライタ１５１６を通してモノＩＤ情報取得手段１５１３でモノＩＤが取得され、それと同時に、場所情報取得手段１５１４でリーダＩＤが取得され、時刻発生手段１５１５で例えばシステムタイマの時間が取得されて、イベント情報取得・作成手段１５１２によりイベント情報に加工される。
【０１２６】
このようにしてイベント生成端末１５１０で作成されたイベント情報は、ネットワーク１５６０を通してイベント原本蓄積装置１５４０およびハッシュノードチェーン蓄積サーバ１５５０に渡される。また、図示しないローカルイベント蓄積手段にも無線により格納されてもよい。
【０１２７】
例えば、ハッシュノードチェーン蓄積サーバ１５５０に渡されたイベントＡは、イベントハッシュ作成手段１５５１により生成されるイベントハッシュ値とともにイベント履歴蓄積手段１５５２に渡され、上述したハッシュノード作成方法によりハッシュノードとして構成されて、ハッシュノードチェーン蓄積装置１５５７の該当するモノＩＤに対応したハッシュノードチェーンの末尾にＡ５として追加される。
【０１２８】
同様に、イベント生成端末１５２０，１５３０と通過した履歴は、イベント原本蓄積装置１５４０や可搬型イベント蓄積手段１５８０に時間情報とともに蓄積されるとともに、ハッシュノードチェーン蓄積装置１５５７にはＡ６，Ａ７として本願発明の方法により蓄積される。
【０１２９】
このとき、時刻発生手段１５１５の基準となる時間情報がイベント生成端末１５１０，１５２０，１５３０で異なっていた場合（例えば国際間移動により基準時間が違っていたり、機器メンテナンスのエラーで誤った時間が設定されていた場合）には、イベント原本蓄積装置１５４０や可搬型イベント蓄積手段１５８０に格納したイベント情報を参照すると通過順序が実際とは異なって返却されることがある。
【０１３０】
そこで、本発明では、例えばイベント原本蓄積装置１５４０から参照した複数のイベント情報を、ハッシュノードチェーン蓄積サーバ１５５０のイベント履歴検証手段１５５４に入力して本発明の検証方法により検証するようにしているのである。
【０１３１】
この検証により、それらのイベントが改ざんされているのか否かということや、正確な順序を知ることができる。
【０１３２】
つぎに、イベントが複数の拠点にまたがって発生する場合に実行する本発明の処理について説明する。
【０１３３】
図１６は、箱１６４０が複数の企業Ａ，Ｂにまたがって移動し、その履歴が個々のイベント原本蓄積装置１６１１，１６２１に格納されると同時に、そのときの読み取りイベントのハッシュノードがそれぞれローカルハッシュノードチェーン蓄積サーバ１６１４，１６２４に蓄積される場合における本発明のイベント履歴情報蓄積システムの一例を示している。
【０１３４】
このイベント履歴情報蓄積システムでは、２社間で共有するイベント情報のハッシュノードを第３者の管理する共有ハッシュノードチェーン蓄積サーバ１６３０に保管するようにしており、イベント情報選別手段１６１５，１６２５が各企業のローカルハッシュノードチェーン蓄積サーバ１６１４，１６２４に具備されている点と、企業間で共有されるモノのハッシュノードを共有するための共有ハッシュノードチェーン蓄積サーバ１６３０が企業ごとに設置されたローカルハッシュノードチェーン蓄積サーバ１６１４，１６２４と同等の機能を有する手段として別に設置されている点とに特徴がある。
【０１３５】
イベント情報選別手段１６１５，１６２５は、例えば企業間を流通するようなパレットなどの特定のモノにつくＩＣタグのイベントを選別するものであり、選別されたイベント情報はイベント情報送受信手段１６１６，１６２６を通して共有ハッシュノードチェーン蓄積サーバ１６３０に伝えられて、その共有ハッシュノードチェーン蓄積サーバ１６３０に格納される。
【０１３６】
図１６に示すイベント履歴情報蓄積システムでは、例えばＩＣタグの添付された箱１６４０がイベント生成端末１６１２→イベント生成端末１６１３→イベント生成端末１６２２→イベント生成端末１６２３と移動していくときに、図１５のイベント生成端末と同様の方法でイベント情報が生成されて、企業Ａを通過していくときの例で説明するならば、その企業Ａ内にあるローカルハッシュノードチェーン蓄積サーバ１６１４に蓄積されるが、そのサーバにあるイベント情報選別手段１６１５は予め定められた選別基準に基づきイベント情報を共有するか否かを識別して、企業Ａのみのイベント情報であればローカルハッシュノードチェーン蓄積サーバ１６１４に格納し、共有するイベント情報の場合にはイベント情報送受信手段１６１６を通して共有ハッシュノードチェーン蓄積サーバ１６３０に格納する。
【０１３７】
以上、図１６についてイベント情報を登録する場合について具体的に説明したが、イベント情報を追加、削除、検証する方法については、図１５に記述する手段と同様の手段が各ローカルハッシュノードチェーン蓄積サーバ１６１４，１６２４に具備されている。
【０１３８】
つまり、その他にイベントを追加、削除、検証する場合にも、一旦ローカルハッシュノードチェーン蓄積サーバ１６１４，１６２４に要求を出すことにより、共有されているイベントか否かをイベント情報選別手段１６１５により識別して、企業Ａに格納されているときにはローカルハッシュノードチェーン蓄積サーバ１６１４の各手段により、また、企業Ｂに格納されているときにはローカルハッシュノードチェーン蓄積サーバ１６２４の各手段により、また、共有されているときには共有ローカルハッシュノードチェーン蓄積サーバ１６３０の手段により実施される。
【０１３９】
図示実施形態例に従って本発明を説明したが、本発明はこれに限定されるものではない。例えば、実施形態例では、同一のモノに係るイベント情報についてハッシュノードチェーンを構成することで説明したが、同一の場所に係るイベント情報についてハッシュノードチェーンを構成するというように、モノ以外のイベント情報構成要素値に係るイベント情報についてハッシュノードチェーンを構成することでもよい。
【図面の簡単な説明】
【０１４０】
【図１】イベントハッシュ値の作成フローである。
【図２】イベントハッシュ値の作成処理におけるデータの流れの説明図である。
【図３】ハッシュノードチェーンの説明図である。
【図４】ハッシュノードチェーンを構成するときの説明図である。
【図５】箱詰め操作のイメージ図である。
【図６】箱詰め操作のハッシュノードチェーンの説明図である。
【図７】操作イベント履歴の説明図である。
【図８】ハッシュノード追加の説明図である。
【図９】ハッシュノード追加におけるハッシュノードチェーンの説明図である。
【図１０】ハッシュノード削除の説明図である。
【図１１】ハッシュノード削除におけるハッシュノードチェーンの説明図である。
【図１２】イベント検証処理の説明図である。
【図１３】イベントの検証フローである。
【図１４】イベントの検証処理におけるデータの流れの説明図である。
【図１５】本発明により実現されるイベント履歴情報蓄積システムの一例を示す図である。
【図１６】本発明により実現されるイベント履歴情報蓄積システムの他の一例を示す図である。
【符号の説明】
【０１４１】
１５００  イベント履歴情報蓄積システム
１５１０  イベント生成端末
１５１１  イベント情報送受信手段
１５１２  イベント情報取得・作成手段
１５１３  モノＩＤ情報取得手段
１５１４  場所情報取得手段
１５１５  時刻発生手段
１５１６  ＩＣタグリーダ／ライタ
１５４０  イベント原本蓄積装置
１５５０  ハッシュノードチェーン蓄積サーバ
１５５１  イベントハッシュ作成手段
１５５２  イベント履歴蓄積手段
１５５３  イベント履歴追加手段
１５５４  イベント履歴検証手段
１５５５  イベント履歴削除手段
１５５６  操作イベント登録手段
１５５７  ハッシュノードチェーン蓄積装置
【図１】
2006343790.tif 000003
【図２】
2006343790.tif 000004
【図３】
2006343790.tif 000005
【図４】
2006343790.tif 000006
【図５】
2006343790.tif 000007
【図６】
2006343790.tif 000008
【図７】
2006343790.tif 000009
【図８】
2006343790.tif 000010
【図９】
2006343790.tif 000011
【図１０】
2006343790.tif 000012
【図１１】
2006343790.tif 000013
【図１２】
2006343790.tif 000014
【図１３】
2006343790.tif 000015
【図１４】
2006343790.tif 000016
【図１５】
2006343790.tif 000017
【図１６】
2006343790.tif 000018