JP5014081B2 - データ処理装置及びデータ処理方法及びプログラム - Google Patents

データ処理装置及びデータ処理方法及びプログラム Download PDF

Info

Publication number
JP5014081B2
JP5014081B2 JP2007299961A JP2007299961A JP5014081B2 JP 5014081 B2 JP5014081 B2 JP 5014081B2 JP 2007299961 A JP2007299961 A JP 2007299961A JP 2007299961 A JP2007299961 A JP 2007299961A JP 5014081 B2 JP5014081 B2 JP 5014081B2
Authority
JP
Japan
Prior art keywords
data
hash value
order
event
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007299961A
Other languages
English (en)
Other versions
JP2009128956A (ja
Inventor
晃由 山口
恒夫 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007299961A priority Critical patent/JP5014081B2/ja
Publication of JP2009128956A publication Critical patent/JP2009128956A/ja
Application granted granted Critical
Publication of JP5014081B2 publication Critical patent/JP5014081B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Description

本発明は、データの改竄を防止するための技術に関し、特にイベントログの改竄を防止する技術に関する。
ビルの入退場や映像監視、端末ログインなどにおいて、犯罪や情報漏洩が発生した場合に備え、その原因追究を行うために、入退場イベントや監視映像、ログインイベントを記録する必要がある。
これらのイベント情報は、当然ながら改竄されてはならない。
また、イベント情報に個人情報を含む場合は、不用意に第三者に開示されてはならない。
記録したイベントが改竄されているか否かをチェックするために、ハッシュ値による検証を行う場合がある。
ハッシュとは、任意長のイベント情報から固定長のダイジェスト値を求める演算であり、イベント情報とそのハッシュ値を保存し、参照時にイベント情報からハッシュ値を求め、保存しているハッシュ値との比較を行う。
イベント情報が改竄されると、ハッシュ値が異なるため、改竄が検出できる。
イベント情報の改竄には、イベント情報本体のデータの改竄だけでなく、イベント情報本体の消去や偽イベントの挿入といった操作もある。
従来、これに対処するにはタイムスタンプを用いる方法(非特許文献1)や連続するイベント情報全体のハッシュチェーンを求める方法(非特許文献1)、イベント情報にノード情報を付けて連接する方法(特許文献1)がある。
特開2006−343790号公報 ブルース・シュナイア著「暗号技術大全」pp.87
イベント情報にタイムスタンプを用いる方法では、時刻の正確な同期が必要となる。
ネットワークに接続されている場合は、NTP(Network Time Protocol)プロトコルにより同期は可能であるが、ネットワークに接続できない環境の場合は時刻の同期がとれないという課題がある。
また、NTPは認証機能を有していないため、NTPサーバになりすまして攻撃対象の時刻を改変する事が可能であるという課題がある。
連続するイベント情報全体のハッシュを求める方法では、欠落したイベント情報を後から挿入する場合に、全イベント情報のハッシュ値に対するハッシュチェーンを再計算せねばならず、演算コストがかかるという課題がある。
イベント情報にノード情報を付けて連接する方法では、イベント情報に、イベントの前後関係を記憶するノード情報をつけて、ノードをたどれるようにすることで、イベントの連続性を保証している。この方法の場合、イベント情報以外に、イベント情報のノード番号やノードの相対関係を示す情報、挿入・削除を示す情報などを、すべてのイベント情報に付加する必要があり、蓄積すべきデータサイズが増大するという課題がある。
また、ノードの挿入を繰り返すと、多くの相対関係を記録せねばならず、ノードサイズが増大するという課題がある。
本発明は、これらの課題を解決することを主な目的の一つとしており、正確に同期した時計を用いず、イベントの連続性を検証可能であり、イベントの挿入・削除が可能であり、かつイベントの挿入・削除を繰り返しても、蓄積すべき情報量が増えないデータ改竄防止技術、データ改竄検証技術を実現することを主な目的とする。
本発明に係るデータ処理装置は、
データを順序づけて記憶するデータ記憶部と、
前記データ記憶部に新たに記憶させる挿入データと、前記データ記憶部に記憶させる際の前記挿入データの挿入位置を示す挿入位置情報とを入力する入力部と、
データn(n≧1)個を抽出個数とし、前記データ記憶部に記憶されているデータのデータ順序に従い、前記挿入位置から前記抽出個数分の範囲内にあるデータを1次隣接データとして抽出し、前記挿入データ及び前記1次隣接データ又は前記挿入データ及び前記1次隣接データの各々から派生するデータを用いて、前記挿入データ及び前記1次隣接データの範囲でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を算出する順序改竄検知ハッシュ値算出部とを有し、
前記データ記憶部は、
前記順序改竄検知ハッシュ値算出部により算出された順序改竄検知ハッシュ値と前記挿入データとを対応づけて前記挿入位置において記憶することを特徴とする。
本発明によれば、挿入対象データ及び1次隣接データ間の範囲内でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を挿入対象データと1次隣接データに基づいて計算することができ、データ間の相対関係を示す情報、挿入・削除を示す情報などを付加する必要がない。
また、データ挿入時には、挿入対象データの順序改竄検知ハッシュ値の計算とともに、1次隣接データについて順序改竄検知ハッシュ値を再計算するだけで足りる。つまり、データ挿入時は、最大で2n+1個の順序改竄検知ハッシュ値を計算するのみで足り、蓄積されているデータの先頭からハッシュチェーンを再計算する場合に比べて計算負荷、計算時間を大幅に削減することができ、各種リソースを効率的に活用することができる。
実施の形態1.
図1は、本実施の形態に係るイベントログ管理装置1の構成例を示すブロック図である。
イベントログ管理装置1は、データ処理装置の例である。
図1に示すイベントログ管理装置1において、入力部11は、挿入対象のイベント情報(挿入データ)や挿入対象のイベント情報の挿入位置を示す挿入位置情報等を入力する。
イベント情報とは、例えば、入退場イベントや監視映像、ログインイベント等が示される情報である。また、その他に、センサで測定した温度、湿度、気圧、速度、高度等のイベントや、コンピュータにおけるI/O(Input/Output)イベント、CPU(Central Processing Unit)使用率、メモリ使用率、ネットワークにおけるパケット流量等のイベントが示される情報でもよい。
また、後述するように、蓄積イベントリスト記憶部13はイベント情報を順序づけて記憶するが、挿入位置情報とは、蓄積イベントリスト記憶部13における記憶順序において挿入対象のイベント情報を挿入する位置を特定する情報である。
イベント蓄積部12は、蓄積イベントリスト記憶部13から挿入位置付近のイベントリストを取得する。イベントリストとは、複数行のレコードから構成され、各レコードには、イベント情報、単体ハッシュ及びハッシュチェーン(連続性ハッシュ値ともいう)の組が含まれる。また、イベントリストとは、蓄積イベントリスト記憶部13に記憶されている蓄積イベントリストの一部である。
また、イベント蓄積部12は、入力部11により入力された挿入対象のイベント情報、挿入対象の単体ハッシュ値及びハッシュチェーンの組を蓄積イベントリスト記憶部13に格納する。
蓄積イベントリスト記憶部13は、イベント情報を単体ハッシュ値及びハッシュチェーンとともに順序づけて記憶する。蓄積イベントリスト記憶部13は、データ記憶部の例である。
イベント情報には、図3に示すように、単体ハッシュ値とハッシュチェーンが付加される。
そして、イベント情報、単体ハッシュ値、ハッシュチェーンの組の配列がインベントリストである。
詳細は、後述するが、単体ハッシュ値とはイベント情報単体での改竄を検知するための値である。
単体ハッシュ値は、イベント情報単体にハッシュ演算を行って得られる値である。
ハッシュチェーン(連続性ハッシュ値)とはイベント情報間の順序(連鎖関係)の改竄を検知するための値である。ハッシュチェーンは、挿入対象のイベント情報及び挿入位置の前後のイベント情報の単体ハッシュ値に対してハッシュ演算を行って得られる値である。また、ハッシュチェーンは、順序改竄検知ハッシュ値の例である。
イベントリストにおいてイベント情報は所定の順序に従って配列される。そして、挿入位置情報は、イベントリストの配置順序においてどの位置に挿入対象のイベント情報を挿入するかを指定する。
蓄積イベントリスト記憶部13に蓄積されているイベントリストを蓄積イベントリストという。蓄積イベントリストは、データベースやファイル等、所定の形式で蓄積イベントリスト記憶部13に蓄積されている。
また、イベントログ管理装置1の構成要素のうち、入力部11、イベント蓄積部12及び蓄積イベントリスト記憶部13以外の要素は、イベント情報挿入機構100、改竄検知機構300、イベント情報削除機構500の3つの機能に分類される。
イベント情報挿入機構100には、単体ハッシュ値計算部101、連続性ハッシュ値計算部103及びイベント挿入部104が含まれる。
改竄検知機構300には、イベント抽出部301、単体ハッシュ検証部302及び連続性ハッシュ値検証部303が含まれる。
イベント情報削除機構500には、連続性ハッシュ値再計算部501及びイベント削除部502が含まれる。
イベント情報挿入機構100に含まれる各要素間及び入力部11、イベント蓄積部12及び蓄積イベントリスト記憶部13との関係は、図2に示す通りである。なお、単体ハッシュ値計算部101、連続性ハッシュ値計算部103及びイベント挿入部104の詳細は、図2を参照しながら後述する。
また、改竄検知機構300に含まれる各要素間及び入力部11、イベント蓄積部12及び蓄積イベントリスト記憶部13との関係は、図4に示す通りである。イベント抽出部301、単体ハッシュ検証部302及び連続性ハッシュ値検証部303の詳細は、図4を参照しながら後述する。
また、イベント情報削除機構500に含まれる各要素間及び入力部11、イベント蓄積部12及び蓄積イベントリスト記憶部13との関係は、図6に示す通りである。連続性ハッシュ値再計算部501及びイベント削除部502の詳細は、図6を参照しながら後述する。
また、図1では、一つのイベントログ管理装置1にイベント情報挿入機構100、改竄検知機構300、イベント情報削除機構500の3つの機能が存在している例を示しているが、イベント情報挿入機構100、改竄検知機構300、イベント情報削除機構500の各機能がそれぞれ別のコンピュータに配置されていてもよい。
次に、図2を参照して、イベント情報挿入機構100に含まれる単体ハッシュ値計算部101、連続性ハッシュ値計算部103及びイベント挿入部104を説明する。
単体ハッシュ値計算部101は、入力部11からイベント情報105(挿入データ)を取得し、イベント情報105の単体ハッシュ値109を求める。単体ハッシュ値計算部101は、単体ハッシュ値算出部の例である。
ハッシュ値計算にはMD5(Message Digest Algorithm 5)やSHA1(Secure Hash Algorithm 1)等の暗号ハッシュを用いる。また、前記ハッシュ計算に秘密の情報(鍵)がないと計算できないHMAC(Keyed−Hashing for Message Authentication code)やCMAC(Cipher−based Message Authentication code)、公開鍵暗号を用いる電子署名を用いてもよい。イベント情報105の単体ハッシュ値は以下の式1となる。
ただし、Hash()はハッシュ計算を示す。
単体ハッシュ値109=Hash(イベント情報105)・・・(式1)
式1の代わりに式2を用いてもよい。
ただし、|はデータの連接を示し、Rndは乱数を示す。乱数とハッシュ値、イベント情報との連接順は任意でよいが、検証側と同じである必要がある。
単体ハッシュ値109=Rnd|Hash(イベント情報105|Rnd)・・・(式2)
また、イベント情報105の改竄を、ハッシュを用いなくても検知可能であれば、イベント情報105をそのまま出力してもよい。ハッシュを用いなくてもイベント情報105の改竄が検知可能な場合とは、例えば、イベント情報の性質・内容から判断して改竄が明らかに分かるような場合である。
計算結果(単体ハッシュ値109)は連続性ハッシュ値計算部103に送られる。
イベント蓄積部12は挿入位置情報106を入力とし、蓄積イベントリスト記憶部13に蓄積されている蓄積イベントリストのうち挿入位置付近のイベントリスト108を連続性ハッシュ値計算部103及びイベント挿入部104に出力する。
蓄積イベントリストは、データベースやファイル等、所定の形式で蓄積イベントリスト記憶部13に蓄積されている。
イベントリスト108は、蓄積イベントリストの一部であり、挿入位置情報106に示される挿入位置が含まれるイベントリストである。
イベントリスト108には、具体的には、挿入位置の前2n(n≧1)個分のイベント情報及び挿入位置の後ろ2n個分のイベント情報が含まれる。
蓄積イベントリストに挿入位置の前後2n(n≧1)個分のイベントがない場合は、そのまま出力する。
追記のように頻繁に発生する操作のために、イベント蓄積部12は蓄積イベントリストにおける最終位置の前n個分のイベント情報、単体ハッシュ値、ハッシュチェーンの組を一時記憶部(不図示)に記憶させていてもよい。
または、最終位置の前n個分の単体ハッシュ値のみを一時記憶部に記憶させていてもよい。
一時記憶部は、いわゆるキャッシュメモリにより構成され、蓄積イベントリスト記憶部13よりも高速に動作可能である。
そして、挿入位置が蓄積イベントリスト記憶部13に記憶されている蓄積イベントリストの最後尾のデータの後である場合は、イベント蓄積部12は一時記憶部に記憶されているn個分のイベント情報、単体ハッシュ値、ハッシュチェーンの組又はn個分の単体ハッシュ値のみを取得し、連続性ハッシュ値計算部103にn個分のイベント情報、単体ハッシュ値、ハッシュチェーンの組又はn個分の単体ハッシュ値のみを出力する。
イベント挿入部104はイベント情報105と、イベント情報105の単体ハッシュ値109、連続性ハッシュ値110をイベントリスト108に追加する。
単体ハッシュ値109は、単体ハッシュ値計算部101により生成されたものであり、連続性ハッシュ値110は、後述する連続性ハッシュ値計算部103により生成されたものである。
後述するように、連続性ハッシュ値計算部103は、イベント情報105の連続性ハッシュ値110を計算するだけでなく、イベント情報105の挿入位置の前n個及び後ろn個のイベント情報の連続性ハッシュ値も再計算するが、イベント挿入部104は、これら前n個及び後ろn個のイベント情報の連続性ハッシュ値を再計算された連続性ハッシュ値に更新する。
イベント情報105、単体ハッシュ値109、連続性ハッシュ値110が追加され、また、前n個及び後ろn個分の連続性ハッシュ値が更新された後のイベントリストを追加後イベントリスト111という。
イベント蓄積部12は追加後イベントリスト111をデータベースやファイル等、所定の形式で蓄積イベントリスト記憶部13に格納する。
また、イベント蓄積部12は、一時記憶部(図2に不図示)に保持している情報(最後尾から前n個のイベント情報のハッシュチェーン)に変更があれば追加後イベンリスト111の内容に基づき更新する。
連続性ハッシュ値計算部103はイベントリスト108とイベント情報の単体ハッシュ値109から連続性ハッシュ値110を計算する。連続性ハッシュ値計算部103は、順序改竄検知ハッシュ値算出部の例である。
ここで、位置kの単体ハッシュ値をRHash_(k)、ハッシュチェーンをSHash_(k)と表記する。
連続性ハッシュ値計算部103は、−n≦m≦nを満たす全てのmについて、以下の式3を計算する。
ただし、Hash()はハッシュ計算を示し、|はデータの連接を示す。
式3で、RHash_(k+m−n)がイベントリスト108に存在しない場合は連接しない。
また、m≠0で、SHash_(k+m)がイベントリスト108に存在しなければ、SHash_(k+m)を計算しない。
式3で得られたSHash_(k+m) (−n≦m≦n)を連続性ハッシュ値110として出力する。
SHash_(k+m)=
Hash(RHash_(k+m−n)|…|RHash_(k+m−1)|RHash_(k+m)|RHash_(k+m+1)|…|RHash_(k+m+n))・・・(式3)
換言すれば、連続性ハッシュ値計算部103は、データn(n≧1)個を抽出個数とし、蓄積イベントリスト記憶部13に記憶されているデータ、すなわち蓄積イベントリストのデータ順序に従い、挿入位置から抽出個数分の範囲内(前n個分、後ろn個分)にあるイベント情報を1次隣接データとして抽出し、挿入対象のイベント情報105及び1次隣接データ(挿入位置から前n個、後ろn個の範囲にあるイベント情報)、またはイベント情報105及び1次隣接データの各々から派生するデータを用いて、イベント情報105及び1次隣接データの範囲でのデータ順序の改竄を検知可能な連続性ハッシュ値(順序改竄検知ハッシュ値)を算出する。
イベント情報105及び1次隣接データの各々から派生するデータとは、具体的には、イベント情報105の単体ハッシュ値109と、1次隣接データの各々の単体ハッシュ値である。
更に、連続性ハッシュ値計算部103は、1次隣接データごとに1次隣接データの位置から抽出個数分の範囲内(前n個分、後ろn個分)にあるイベント情報を2次隣接データとして抽出し、1次隣接データ及び2次隣接データ(各1次隣接データから前n個、後ろn個の範囲にあるイベント情報)、または1次隣接データ及び2次隣接データの各々から派生するデータを用いて、1次隣接データ及び2次隣接データの範囲でのデータ順序の改竄を検知可能な連続性ハッシュ値(順序改竄検知ハッシュ値)を1次隣接データごとに算出する。
1次隣接データ及び2次隣接データの各々から派生するデータとは、具体的には、1次隣接データの各々の単体ハッシュ値と、2次隣接データの各々の単体ハッシュ値である。
そして、蓄積イベントリスト記憶部13は、追加後イベントリスト111を記憶するが、追加後イベントリスト111は、イベント情報105、単体ハッシュ値109、連続性ハッシュ値110の組が挿入位置に挿入されているイベントリストである。このため、蓄積イベントリスト記憶部13は、追加後イベントリスト111を記憶することで、連続性ハッシュ値計算部103により算出された連続性ハッシュ値110とイベント情報105を対応づけて挿入位置において記憶することになる。
同様に、追加後イベントリスト111は、1次隣接データ(挿入位置からn個前、n個後ろの範囲にあるイベント情報)の連続性ハッシュ値が更新されているイベントリストである。このため、蓄積イベントリスト記憶部13は、追加後イベントリスト111を記憶することで、連続性ハッシュ値計算部103により算出された連続性ハッシュ値を対応する1次隣接データに対応づけて記憶することになる。
ここで、連続性ハッシュ値計算部103の動作を図3に示すイベントリストを例に示す。
以下では、n=1を例にして説明する。
なお、図3では図示していないが、イベントリストには、挿入位置情報106に示される挿入位置を連続性ハッシュ値計算部103が判別できるように、レコード番号等のデータの順序を示す情報が付加されており、連続性ハッシュ値計算部103はこのレコード番号等を参照して挿入位置を判断する。
挿入位置220にイベント情報105を挿入する場合、以下の式4、5に従い、ハッシュチェーン219、213を計算する。ハッシュチェーン219、213を連続性ハッシュ値110としてイベント挿入部104に出力する。
ハッシュチェーン219=Hash(単体ハッシュ値109|単体ハッシュ値207)・・・(式4)
ハッシュチェーン213=Hash(単体ハッシュ値109|単体ハッシュ値207|単体ハッシュ値208)・・・(式5)
つまり、n=1なので、連続性ハッシュ値計算部103は、挿入位置220の1個前のイベント情報と1個後ろのイベント情報を1次隣接データとするが、挿入位置220の1個前のイベント情報は存在しないので、1個後ろのイベント情報201のみを1次隣接データとして抽出する。
そして、連続性ハッシュ値計算部103は、イベント情報105の単体ハッシュ値109と1次隣接データであるイベント情報201の単体ハッシュ値207を用いて、上記の式4によりハッシュチェーン219を計算する。
また、連続性ハッシュ値計算部103は、1次隣接データであるイベント情報201の1個前のイベント情報と1個後ろのイベント情報を2次隣接データとして抽出する。
図3の例では、イベント情報105とイベント情報202が2次隣接データとして抽出される。
このように、連続性ハッシュ値計算部103は、1次隣接データの位置から抽出個数分の範囲内に挿入位置が含まれる場合は挿入対象のイベント情報も2次隣接データとして抽出する。
そして、連続性ハッシュ値計算部103は、2次隣接データであるイベント情報105の単体ハッシュ値109とイベント情報202の単体ハッシュ値208と、1次隣接データあるイベント情報201の単体ハッシュ値207を用いて、上記の式5によりハッシュチェーン213を計算する。
挿入位置221に挿入する場合、式6、7、8に従い、ハッシュチェーン219、214、215を計算する。ハッシュチェーン219、214、215を連続性ハッシュ値110としてイベント挿入部104に出力する。
ハッシュチェーン219=Hash(単体ハッシュ値208|単体ハッシュ値109|単体ハッシュ値209)・・・(式6)
ハッシュチェーン214=Hash(単体ハッシュ値207|単体ハッシュ値208|単体ハッシュ値109)・・・(式7)
ハッシュチェーン215=Hash(単体ハッシュ値109|単体ハッシュ値209|単体ハッシュ値210)・・・(式8)
連続性ハッシュ値計算部103は、挿入位置221の1個前のイベント情報202と1個後ろのイベント情報203を1次隣接データとして抽出する。
そして、連続性ハッシュ値計算部103は、イベント情報105の単体ハッシュ値109と1次隣接データであるイベント情報202の単体ハッシュ値208とイベント情報203の単体ハッシュ値209を用いて、上記の式6によりハッシュチェーン219を計算する。
また、連続性ハッシュ値計算部103は、1次隣接データであるイベント情報202の1個前のイベント情報201と1個後ろのイベント情報105を2次隣接データとして抽出する。
そして、連続性ハッシュ値計算部103は、2次隣接データであるイベント情報201の単体ハッシュ値207とイベント情報105の単体ハッシュ値109と、1次隣接データあるイベント情報202の単体ハッシュ値208を用いて、上記の式7によりハッシュチェーン214を計算する。
更に、連続性ハッシュ値計算部103は、1次隣接データであるイベント情報203の1個前のイベント情報105と1個後ろのイベント情報204を2次隣接データとして抽出する。
そして、連続性ハッシュ値計算部103は、2次隣接データであるイベント情報105の単体ハッシュ値109とイベント情報204の単体ハッシュ値210と、1次隣接データあるイベント情報203の単体ハッシュ値209を用いて、上記の式8によりハッシュチェーン215を計算する。
挿入位置222に挿入する場合、式9、10に従い、ハッシュチェーン219、218を計算する。ハッシュチェーン219、218を連続性ハッシュ値110としてイベント挿入部104に出力する。
ハッシュチェーン219=Hash(単体ハッシュ値212|単体ハッシュ値109)・・・(式9)
ハッシュチェーン218=Hash(単体ハッシュ値211|単体ハッシュ値212|単体ハッシュ値109)・・・(式10)
連続性ハッシュ値計算部103は、挿入位置222の1個前のイベント情報と1個後ろのイベント情報を1次隣接データとするが、挿入位置222の1個後ろのイベント情報は存在しないので、1個前のイベント情報206のみを1次隣接データとして抽出する。
そして、連続性ハッシュ値計算部103は、イベント情報105の単体ハッシュ値109と1次隣接データであるイベント情報206の単体ハッシュ値212を用いて、上記の式9によりハッシュチェーン219を計算する。
また、連続性ハッシュ値計算部103は、1次隣接データであるイベント情報206の1個前のイベント情報と1個後ろのイベント情報を2次隣接データとして抽出する。
図3の例では、イベント情報205とイベント情報105が2次隣接データとして抽出される。
このように、連続性ハッシュ値計算部103は、1次隣接データの位置から抽出個数分の範囲内に挿入位置が含まれる場合は挿入対象のイベント情報も2次隣接データとして抽出する。
そして、連続性ハッシュ値計算部103は、2次隣接データであるイベント情報205の単体ハッシュ値211とイベント情報105の単体ハッシュ値109と、1次隣接データあるイベント情報206の単体ハッシュ値212を用いて、上記の式10によりハッシュチェーン218を計算する。
挿入位置223に挿入する場合、式11に従い、ハッシュチェーン219を計算する。ハッシュチェーン219を連続性ハッシュ値110としてイベント挿入部104に出力する。
ハッシュチェーン219=Hash(単体ハッシュ値109)・・・(式11)
連続性ハッシュ値計算部103は、挿入位置223の1個前のイベント情報と1個後ろのイベント情報を1次隣接データとするが、挿入位置の1個前も1個後ろもイベント情報は存在しないので、1次隣接データは存在しない。
この場合は、連続性ハッシュ値計算部103は、イベント情報105の単体ハッシュ値109のみを用いて、上記の式11によりハッシュチェーン219を計算する。
また、1次隣接データが存在しないので、2次隣接データも存在せず、連続性ハッシュ値計算部103は、ハッシュチェーン219のみを計算する。
挿入位置220、221、222にイベント情報105を挿入する場合は、1次隣接データのハッシュチェーンが再計算されるため、イベント挿入部104は、再計算されたハッシュチェーン、つまり、イベントリスト108のハッシュチェーンSHash_(k+m) (m≠0)を上書きする。
そして、追加後のイベントリストを追加後イベントリスト111として出力し、イベント蓄積部12に出力する。
以上の説明では、n=1の例を説明したが、nの値は2以上であってもよい。
nの値は、要求されるセキュリティ強度及びイベント情報の挿入時の連続性ハッシュ値の計算効率により決定される。
但し、nの値が大きすぎると、連続性ハッシュ値の計算において過度な時間及び負荷が生じるため、nの値を例えば10以下とすることが考えられる。
図8は、イベント情報の挿入時の各要素の動作例を示すフローチャート図である。
以下、図8を用いて各要素の動作を説明する。
先ず、入力部11が、挿入対象のイベント情報105及び挿入位置情報106を入力する(S801)(入力ステップ)。
そして、入力部11は、単体ハッシュ値計算部101にイベント情報105を出力し、連続性ハッシュ値計算部103に挿入位置情報106を出力し、イベント挿入部104にイベント情報105及び挿入位置情報106を出力し、また、イベント蓄積部12に挿入位置情報を出力する。
次に、イベント蓄積部12が挿入位置情報106に示される挿入位置から少なくとも前2n個分のレコード、少なくとも後ろ2n個のレコードを蓄積イベントリスト記憶部13の蓄積イベントリストから抽出し、イベントリスト108を生成し(S802)、連続性ハッシュ値計算部103及びイベント挿入部104に出力する。
次に、連続性ハッシュ値計算部103がイベントリスト108を取得し、挿入位置に基づき、イベントリスト108において1次隣接データ及び2次隣接データを特定し、それぞれの単体ハッシュ値を取得する(S803)(順序改竄検知ハッシュ値算出ステップ)。
また、単体ハッシュ値計算部101がイベント情報105から単体ハッシュ値を計算し(S804)、単体ハッシュ値109として連続性ハッシュ値計算部103に出力する。
また、単体ハッシュ値計算部101は、単体ハッシュ値109をイベント挿入部104にも出力する。
なお、S803の処理とS804の処理の順序は逆でもよいし、同時進行でもよい。
連続性ハッシュ値計算部103は、単体ハッシュ値計算部101からイベント情報105の単体ハッシュ値109を取得し、挿入対象のイベント情報105、1次隣接データごとに、単体ハッシュ値を用いてハッシュチェーンを計算する(S805)(順序改竄検知ハッシュ値算出ステップ)。
その後、連続性ハッシュ値計算部103は、挿入対象のイベント情報105のハッシュチェーン110及び1次隣接データの各々の再計算後のハッシュチェーンをイベント挿入部104に出力する。
次に、イベント挿入部104が、連続性ハッシュ値計算部103から、挿入対象のイベント情報105のハッシュチェーン110及び1次隣接データの各々の再計算後のハッシュチェーンを受信し、イベントリスト108に、イベント情報105、単体ハッシュ値109、ハッシュチェーン110を挿入位置に書き込むとともに、1次隣接データの再計算されたハッシュチェーンを書き込み(上書きし)、追加後イベントリスト111をイベント蓄積部12に出力する(S806)。
図2の例では、イベント挿入部104は、イベント情報105を入力部11から受信し、単体ハッシュ値109を単体ハッシュ値計算部101から受信することになっているが、連続性ハッシュ値計算部103からイベント情報105及び単体ハッシュ値109も受信するようにしてもよい。
次に、イベント蓄積部12が追加後イベントリスト111をイベント挿入部104から受信し、追加後イベントリスト111を蓄積イベントリストに上書きして蓄積イベントリスト記憶部13に格納する(S807)(データ格納ステップ)。
なお、図2及び図8の説明では、イベント挿入部104が、イベントリスト108にイベント情報105、単体ハッシュ値109、ハッシュチェーン110を書き込むとともに、1次隣接データの再計算されたハッシュチェーンを書き込み(上書きし)、追加後イベントリスト111とする例を説明したが、連続性ハッシュ値計算部103が追加後イベントリスト111を生成するようにしてもよい。
連続性ハッシュ値計算部103は、イベント情報105、単体ハッシュ値109、イベントリスト108、挿入位置情報106を入力し、また、イベント情報105のハッシュチェーン110及び1次隣接データの再計算ハッシュチェーンを計算するので、これらを用いて追加後イベントリスト111を生成することができ、追加後イベントリスト111をイベント蓄積部12に出力することができる。
なお、連続性ハッシュ値計算部103が追加後イベントリスト111を生成する場合は、イベント挿入部104を省略することができる。
次に、図4を参照して、改竄検知機構300に含まれるイベント抽出部301、単体ハッシュ検証部302及び連続性ハッシュ値検証部303を説明する。
改竄検知においては、入力部11は、データ順序の改竄有無の検証が行われる位置を検証位置として示す検証位置情報305を入力し、検証位置情報305をイベント蓄積部12及びイベント抽出部301に出力する。
イベント蓄積部12は、検証位置情報305に基づき蓄積イベントリストから、イベントリスト306を出力する。
イベントリスト306は、検証位置情報305で示される検証位置にあるイベント情報、単体ハッシュ値、ハッシュチェーンの組と、その前n個分及び後ろn個分のイベント情報、単体ハッシュ値、ハッシュチェーンの組を含む。nの値は挿入時と同じである。
該当する位置のイベント情報、単体ハッシュ値、ハッシュチェーンの組が存在しない場合は、それを含まずにイベントリスト306を生成する。
イベント抽出部301は検証位置情報305とイベントリスト306から該当するイベント情報308(検証位置にあるイベント情報)、イベント情報308の単体ハッシュ値307、イベント情報308のハッシュチェーン309、イベント情報308の前n個の単体ハッシュ値及び後ろn個の単体ハッシュ値310をイベントリスト306より抽出する。nの値は挿入時と同じである。
そして、イベント抽出部301は、イベント情報308とイベント情報308の単体ハッシュ値307を単体ハッシュ検証部302に出力し、イベント情報308の単体ハッシュ値307、イベント情報308の前後の単体ハッシュ値310、イベント情報のハッシュチェーン309を連続性ハッシュ値検証部303に出力する。
単体ハッシュ検証部302は、イベント情報308のハッシュ値を求め、イベント抽出部301から取得したイベント情報308の単体ハッシュ値307と比較し、その結果を単体ハッシュ検証結果311として出力する。
前述の式1を用いた場合は、下記の式12によりRhashを計算する。
Rhashとイベント情報308の単体ハッシュ値307が一致したらTrueとし、一致しない場合はFalseとする。
前述の式2を用いた場合は、下記の式13によりRhashを計算する。
そして、結果を単体ハッシュ検証結果311として出力する。
Rhash=Hash(イベント情報306)・・・(式12)
Rhash=Hash(イベント情報306|単体ハッシュ値307の乱数成分)・・・(式13)
連続性ハッシュ値検証部303は、イベント抽出部301から取得したイベント情報308の単体ハッシュ値307とイベント情報308前後の単体ハッシュ値310から式14を用いてSHashを求め、イベント抽出部301から取得したイベント情報308のハッシュチェーン309と比較し、その結果を連続性ハッシュ値検証結果312として出力する。
連続性ハッシュ値検証部303は、順序改竄検知部の例である。
式14で、イベントの位置情報304の示すイベントリストの位置をkとする。一致したらTrue、一致しなければFalseとする。結果を連続性ハッシュ値検証結果312として出力する。
SHash=Hash(RHash_(k−n)|…|RHash_(k−1)|RHash_(k)|RHash_(k+1)|…|RHash_(k+n))・・・(式14)
次に、連続性ハッシュ値検証部303の動作を図5に示すイベントリストを例に示す。
ここでは、n=1として説明する。
検証位置419のイベントの連続性を検証する場合、式15に従い、一時ハッシュShashを計算する。
Shashとハッシュチェーン413とが一致した場合はTrueとし、一致しない場合はFalseとする。
Shash=Hash(単体ハッシュ値407|単体ハッシュ値408)・・・(式15)
つまり、この場合は、検証位置419の1個前のレコードが存在しないため、連続性ハッシュ値検証部303は検証位置419の1個後ろのレコードにある単体ハッシュ値408を取得し、検証位置419にある単体ハッシュ値407とともに式15により一時ハッシュShashを計算する。
検証位置420のイベントの連続性を検証する場合、式16に従い、一時ハッシュShashを計算する。
Shashとハッシュチェーン415とが一致した場合はTrueとし、一致しない場合はFalseとする。
Shash=Hash(単体ハッシュ値408|単体ハッシュ値409|単体ハッシュ値410)・・・(式16)
つまり、この場合は、検証位置420の1個前にも1個後ろにもレコードが存在するため、連続性ハッシュ値検証部303は検証位置419の1個前のレコードにある単体ハッシュ値408と1個後ろのレコードにある単体ハッシュ値410を取得し、検証位置420にある単体ハッシュ値409とともに式16により一時ハッシュShashを計算する。
検証位置421のイベントの連続性を検証する場合、式17に従い、一時ハッシュShashを計算する。
Shashとハッシュチェーン418とが一致した場合はTrueとし、一致しない場合はFalseとする。
Shash=Hash(単体ハッシュ値411|単体ハッシュ値412)・・・(式17)
つまり、この場合は、検証位置421の1個後ろのレコードが存在しないため、連続性ハッシュ値検証部303は検証位置421の1個前のレコードにある単体ハッシュ値411を取得し、検証位置421にある単体ハッシュ値412とともに式17により一時ハッシュShashを計算する。
図9は、イベント情報の順序の改竄有無の検証時の各要素の動作例を示すフローチャート図である。
以下、図9を用いて各要素の動作を説明する。
先ず、入力部11が、検証位置情報305を入力し(S901)、検証位置情報305をイベント蓄積部12及びイベント抽出部301に出力する。
次に、イベント蓄積部12は、検証位置情報305に基づき蓄積イベントリストから、イベントリスト306を生成し、イベント抽出部301に出力する(S902)。
イベントリスト306は、前述したように、検証位置情報305で示される検証位置にあるイベント情報、単体ハッシュ値、ハッシュチェーンの組と、その前n個分及び後ろn個分のイベント情報、単体ハッシュ値、ハッシュチェーンの組を含む。nの値は挿入時と同じである。
また、イベント抽出部301が、検証位置情報305とイベントリスト306から該当するイベント情報308、イベント情報308の単体ハッシュ値307、イベント情報308のハッシュチェーン309、イベント情報308の前n個の単体ハッシュ値及び後ろn個の単体ハッシュ値310をイベントリスト306より抽出し、イベント情報308とイベント情報308の単体ハッシュ値307を単体ハッシュ検証部302に出力し、イベント情報308の単体ハッシュ値307、イベント情報308の前後の単体ハッシュ値310、イベント情報のハッシュチェーン309を連続性ハッシュ値検証部303に出力する。
その後、単体ハッシュ検証部302による単体ハッシュ値の検証及び連続性ハッシュ値検証部303によるハッシュチェーンの検証が並行して行われる。
単体ハッシュ検証部302では、イベント情報308とイベント情報308の単体ハッシュ値307をイベント抽出部301から取得し(S903)、イベント情報308の単体ハッシュ値を計算し(S904)、イベント抽出部301から取得したイベント情報308の単体ハッシュ値307とS904で計算した単体ハッシュ値を比較し、その結果を単体ハッシュ検証結果311として出力する(S906)。
2つの単体ハッシュ値が同じ値であれば、イベント情報308の改竄が行われていないことになり、2つの単体ハッシュ値の値が異なっていれば、イベント情報308の改竄が行われたことになる。
連続性ハッシュ値検証部303は、イベント抽出部301からイベント情報308の単体ハッシュ値307、イベント情報308の前後の単体ハッシュ値310、イベント情報のハッシュチェーン309を取得し(S907)、イベント情報308の単体ハッシュ値307とイベント情報308前後の単体ハッシュ値310から一時ハッシュを計算し(S908)、一時ハッシュとイベント抽出部301から取得したイベント情報308のハッシュチェーン309とを比較し(S909)、その結果を連続性ハッシュ値検証結果312として出力する(S910)。
2つのハッシュチェーンが同じ値であれば、イベント情報308の前後においてイベント情報の順序(連続性)の改竄(不正なイベント情報の挿入、削除、順序の入れ替え等)が行われていないことになり、2つのハッシュチェーンの値が異なっていれば、イベント情報308の前後においてイベント情報の順序(連続性)の改竄が行われたことになる。
次に、図6を参照して、イベント情報削除機構500に含まれる連続性ハッシュ値再計算部501及びイベント削除部502を説明する。
イベント情報の削除では、入力部11が、削除対象となるイベント情報(削除対象データ)の位置である削除位置を示す削除位置情報504を入力し、イベント蓄積部12、連続性ハッシュ値再計算部501及びイベント削除部502に削除位置情報504を出力する。
イベント蓄積部12は、削除位置情報504を入力し、削除位置に基づき蓄積イベントリストから、イベントリスト505を出力する。
イベントリスト505は削除位置にあるイベント情報のレコードとその前2n個分のイベント情報のレコード及び後ろ2n個分のイベント情報のレコードを含む。
nの値は挿入時と同値とする。
イベント削除部502は、削除位置情報504から、再計算後イベントリスト506の当該イベント情報のレコード(削除対象のイベント情報、単体ハッシュ値、ハッシュチェーンの組)を削除して、削除後イベントリスト507を出力する。
イベント蓄積部12は削除後イベントリスト507をデータベースやファイル等、所定の形式で蓄積イベントリスト記憶部13に格納する。
また、前述した一時記憶部に最後尾からn個分のイベント情報を記憶させている場合に、一時記憶部に記憶させている内容に変更があれば更新する。
連続性ハッシュ値再計算部501は、削除位置情報504、イベントリスト505を入力し、削除位置情報504が示す位置の前後n(n≧1)個分のハッシュチェーンを再計算する。
結果を再計算後イベントリスト506として出力する。
連続性ハッシュ値再計算部501は、順序改竄検知ハッシュ値算出部の例である。
連続性ハッシュ値再計算部501は、削除対象のイベント情報(削除対象データ)を除いたデータ順序に従い、削除位置から抽出個数分の範囲内(前n個、後ろn個の範囲)にあるイベント情報を1次隣接データとして抽出するとともに、1次隣接データごとに1次隣接データの位置から抽出個数分の範囲内(前n個、後ろn個の範囲)にあるイベント情報を2次隣接データとして抽出し、1次隣接データ及び2次隣接データ又は1次隣接データ及び2次隣接データの各々から派生するデータを用いて、1次隣接データ及び2次隣接データの範囲でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を1次隣接データごとに算出する。
1次隣接データ及び2次隣接データの各々から派生するデータとは、具体的には、1次隣接データの各々の単体ハッシュ値と、2次隣接データの各々の単体ハッシュ値である。
そして、蓄積イベントリスト記憶部13は、削除後イベントリスト507を記憶するが、削除後イベントリスト507は、削除対象のイベント情報のレコードが削除され、また削除対象のイベント情報の前後のイベント情報(1次隣接データ)の再計算後のハッシュチェーンが示されているイベントリストである。
このため、蓄積イベントリスト記憶部13は、削除後イベントリスト507を記憶することで、削除対象のイベント情報を削除するとともに、連続性ハッシュ値再計算部501により算出されたハッシュチェーンを対応する1次隣接データに対応づけて記憶することになる。
次に、連続性ハッシュ値再計算部501の動作について、図7を用いて説明する。
ここでは、n=1として説明する。
なお、図7では図示していないが、イベントリストには、削除位置情報504に示される削除位置を連続性ハッシュ値再計算部501が判別できるように、レコード番号等のデータの順序を示す情報が付加されており、連続性ハッシュ値再計算部501はこのレコード番号等を参照して削除位置を判断する。
削除位置619のイベントを削除する場合、式16に従い、ハッシュチェーン614を計算し、イベントリスト505を書き換える。
結果を再計算後イベントリスト506として出力する。ただし、Hash()はハッシュ計算を示し、|はデータの連接を示す。
ハッシュチェーン614=Hash(単体ハッシュ値608|単体ハッシュ値609)・・・(式16)
n=1なので、連続性ハッシュ値再計算部501は、削除位置619の1個前のイベント情報と1個後ろのイベント情報を1次隣接データとするが、削除位置の1個前のイベント情報は存在しないので、1個後ろのイベント情報602のみを1次隣接データとして抽出する。
また、連続性ハッシュ値再計算部501は、1次隣接データであるイベント情報602の1個前のイベント情報と1個後ろのイベント情報を2次隣接データとして抽出する。
図7の例では、イベント情報601とイベント情報603が対応するが、イベント情報601は削除対象なので、イベント情報603のみが2次隣接データとして抽出される。
そして、連続性ハッシュ値再計算部501は、2次隣接データであるイベント情報603の単体ハッシュ値609と1次隣接データあるイベント情報602の単体ハッシュ値608を用いて、上記の式16によりハッシュチェーン614を再計算する。
削除位置620のイベントを削除する場合は、式17、18に従い、ハッシュチェーン614、616を計算し、イベントリスト505を書き換える。結果を再計算後イベントリスト506として出力する。
ハッシュチェーン614=Hash(単体ハッシュ値607|単体ハッシュ値608|単体ハッシュ値610)・・・(式17)
ハッシュチェーン616=Hash(単体ハッシュ値608|単体ハッシュ値610|単体ハッシュ値611)・・・(式18)
連続性ハッシュ値再計算部501は、削除位置620の1個前のイベント情報602と1個後ろのイベント情報604を1次隣接データとして抽出する。
また、連続性ハッシュ値再計算部501は、削除対象のイベント情報603を除いた順序において、1次隣接データであるイベント情報602の1個前のイベント情報と1個後ろのイベント情報を2次隣接データとして抽出する。
図7の例では、イベント情報601とイベント情報604が2次隣接データとして抽出される。
そして、連続性ハッシュ値再計算部501は、2次隣接データであるイベント情報601の単体ハッシュ値607及びイベント情報604の単体ハッシュ値610と1次隣接データあるイベント情報602の単体ハッシュ値608を用いて、上記の式17によりハッシュチェーン614を再計算する。
また、連続性ハッシュ値再計算部501は、削除対象のイベント情報603を除いた順序において、1次隣接データであるイベント情報604の1個前のイベント情報と1個後ろのイベント情報を2次隣接データとして抽出する。
図7の例では、イベント情報602とイベント情報605が2次隣接データとして抽出される。
そして、連続性ハッシュ値再計算部501は、2次隣接データであるイベント情報602の単体ハッシュ値608及びイベント情報605の単体ハッシュ値611と1次隣接データあるイベント情報604の単体ハッシュ値610を用いて、上記の式18によりハッシュチェーン616を再計算する。
削除位置621のイベントを削除する場合、式19に従い、ハッシュチェーン617を計算し、イベントリスト505を書き換える。結果を再計算後イベントリスト506として出力する。
ハッシュチェーン617=Hash(単体ハッシュ値610|単体ハッシュ値611)・・・(式19)
連続性ハッシュ値再計算部501は、削除位置621の1個前のイベント情報と1個後ろのイベント情報を1次隣接データとするが、削除位置の1個後ろのイベント情報は存在しないので、1個前のイベント情報605のみを1次隣接データとして抽出する。
また、連続性ハッシュ値再計算部501は、1次隣接データであるイベント情報605の1個前のイベント情報と1個後ろのイベント情報を2次隣接データとして抽出する。
図7の例では、イベント情報604のみが2次隣接データとして抽出される。
そして、連続性ハッシュ値再計算部501は、2次隣接データであるイベント情報604の単体ハッシュ値610と1次隣接データあるイベント情報605の単体ハッシュ値611を用いて、上記の式19によりハッシュチェーン617を再計算する。
図10は、イベント情報の削除時の各要素の動作例を示すフローチャート図である。
以下、図10を用いて各要素の動作を説明する。
先ず、入力部11が、削除位置情報504を入力し(S1001)、イベント蓄積部12、連続性ハッシュ値再計算部501及びイベント削除部502に削除位置情報504を出力する。
次に、イベント蓄積部12が、削除位置情報504を入力し、削除位置に基づき蓄積イベントリストから、イベントリスト505を生成する(S1002)。
イベントリスト505は削除位置にあるイベント情報のレコードとその前2n個分のイベント情報のレコード及び後ろ2n個分のイベント情報のレコードを含む。
そして、イベント蓄積部12は、イベントリスト505を連続性ハッシュ値再計算部501に出力する。
次に、連続性ハッシュ値再計算部501はイベント蓄積部12からイベントリスト505を取得するとともに、イベントリスト505上で1次隣接データ及び2次隣接データを特定し、それぞれの単体ハッシュ値を取得する(S1003)。
次に、連続性ハッシュ値再計算部501は、1次隣接データごとに単体ハッシュ値を用いてハッシュチェーンを再計算し、再計算ハッシュチェーンを該当する箇所に書き込む(上書きする)(S1004)。
そして、連続性ハッシュ値再計算部501は、再計算ハッシュチェーンが書き込まれたイベントリストを再計算後イベントリスト506としてイベント削除部502に出力する。
イベント削除部502は、連続性ハッシュ値再計算部501から再計算後イベントリスト506を取得し、削除位置情報503から、再計算後イベントリスト506の削除対象のイベント情報のレコード(イベント情報、単体ハッシュ値、ハッシュチェーンの組)を削除して、削除後イベントリスト507を出力する(S1005)。
最後に、イベント蓄積部12が、削除後イベントリスト507をイベント削除部502から取得し、蓄積イベントリスト記憶部13に格納する(S1006)。
なお、図6及び図10の説明では、イベント削除部502が、再計算後イベントリスト506から削除対象のイベント情報のレコードを削除して、削除後イベントリスト507とする例を説明したが、連続性ハッシュ値再計算部501が削除後イベントリスト507を生成するようにしてもよい。
連続性ハッシュ値再計算部501は、イベントリスト505、削除位置情報504を入力するので、削除対象のイベント情報を判断できる。このため、連続性ハッシュ値再計算部501は、削除対象のイベント情報のレコードを削除することも可能である。
なお、連続性ハッシュ値再計算部501が削除後イベントリスト507を生成する場合は、イベント削除部502を省略することができる。
ここで、本実施の形態の効果について述べる。
イベント情報本体の改竄は、当該イベント情報の単体ハッシュ値を検証することで、検証可能である。
また、イベント情報(及びその単体ハッシュ値、ハッシュチェーン)が不正に挿入された場合、挿入されたと推定される位置前後のイベント情報のハッシュチェーンを検証することで、不正挿入を検証可能である。
また、イベント情報(及びその単体ハッシュ値、ハッシュチェーン)が不正に削除された場合、削除されたと推定される位置前後のイベント情報のハッシュチェーンを検証することで、不正削除を検証可能である。
あるイベント情報とその単体ハッシュ値が、別のイベント情報とその単体ハッシュ値と入れ替えら得た場合、不正に入れ替えられたと推定される位置のハッシュチェーンを検証することで、不正な入れ替えを検証可能である。
さらに、1つのイベントの保持に必要な情報は、単体ハッシュ値とハッシュチェーンのみであり、これ以上の情報を保持する必要がないため、蓄積すべき情報量は増大しない。
また、イベント情報を挿入する場合は、挿入するイベント情報についてのハッシュチェーンを計算し、また、1次隣接データのハッシュチェーンを再計算するだけで足り、蓄積イベントリストの先頭からハッシュチェーンを再計算する必要がない。
つまり、本実施の形態によれば、イベント情報挿入時は、最大で2n+1個のハッシュチェーンを計算するのみであり、蓄積イベントリストの先頭からハッシュチェーンを再計算する場合に比べて計算負荷、計算時間を大幅に削減することができ、各種リソースを効率的に活用することができる。
また、同様に、イベント情報を削除する場合も、1次隣接データのハッシュチェーンを再計算するだけで足り、蓄積イベントリストの先頭からハッシュチェーンを再計算する必要がない。
つまり、本実施の形態によれば、イベント情報削除時は、最大で2n個のハッシュチェーンを計算するのみであり、蓄積イベントリストの先頭からハッシュチェーンを再計算する場合に比べて計算負荷、計算時間を大幅に削減することができ、各種リソースを効率的に活用することができる。
実施の形態2.
実施の形態1では、連続性ハッシュ値の計算時の入力は、単体ハッシュ値のみであったが、本実施の形態では単体ハッシュ値に加え、乱数も用いて連続性ハッシュ値を計算する場合について述べる。
イベント情報の挿入時のデータフロー及び動作は図2及び図8と同じである。
実施の形態1との違いは連続性ハッシュ値計算部103の計算方法である。
連続性ハッシュ値計算部103は、イベントリスト108とイベント情報の単体ハッシュ値109から連続性ハッシュ値110を計算する。
位置kの単体ハッシュ値をRHash_(k)、ハッシュチェーンをSHash_(k)と表記する。
−n≦m≦nを満たす全てのmについて、式20を計算する。
ただし、Hash()はハッシュ計算を示し、|はデータの連接を示す。Rndは乱数を示す。
乱数の連接順は任意でよいが、検証側と同じである必要がある。
式3で、RHash_(k+m−n)がイベントリスト108に存在しない場合は連接しない。
また、m≠0で、SHash_(k+m)がイベントリスト108に存在しなければ、SHash_(k+m)を計算しない。
式20で得られたSHash_(k+m) (−n≦m≦n)を連続性ハッシュ値110として出力する。
SHash_(k+m)=Rnd|Hash(RHash_(k+m−n)|…|RHash_(k+m−1)|RHash_(k+m)|RHash_(k+m+1)|…|RHash_(k+m+n)|Rnd)・・・(式20)
連続性ハッシュ値計算部103の動作を図3に示すイベントリストを例に示す。n=1とする。
挿入位置220に挿入する場合、式21、22に従い、ハッシュチェーン219、213を計算する。
ハッシュチェーン219、213を連続性ハッシュ値110として出力する。
ハッシュチェーン219=Rnd|Hash(単体ハッシュ値109|単体ハッシュ値207|Rnd)・・・(式21)
ハッシュチェーン213=Rnd|Hash(単体ハッシュ値109|単体ハッシュ値207|単体ハッシュ値208|Rnd)・・・(式22)
挿入位置221に挿入する場合、式23、24、25に従い、ハッシュチェーン219、214、215を計算する。
ハッシュチェーン219、214、215を連続性ハッシュ値110として出力する。
ハッシュチェーン219=Rnd|Hash(単体ハッシュ値208|単体ハッシュ値109|単体ハッシュ値209|Rnd)・・・(式23)
ハッシュチェーン214=Rnd|Hash(単体ハッシュ値207|単体ハッシュ値208|単体ハッシュ値109|Rnd)・・・(式24)
ハッシュチェーン215=Rnd|Hash(単体ハッシュ値109|単体ハッシュ値209|単体ハッシュ値210|Rnd)・・・(式25)
挿入位置222に挿入する場合、式26、27に従い、ハッシュチェーン218、219を計算する。
ハッシュチェーン218、219を連続性ハッシュ値110として出力する。
ハッシュチェーン219=Rnd|Hash(単体ハッシュ値212|単体ハッシュ値109|Rnd)・・・(式26)
ハッシュチェーン218=Rnd|Hash(単体ハッシュ値211|単体ハッシュ値212|単体ハッシュ値109|Rnd)・・・(式27)
挿入位置223に挿入する場合、式28に従い、ハッシュチェーン219を計算する。
ハッシュチェーン219を連続性ハッシュ値110として出力する。
ハッシュチェーン219=Rnd|Hash(単体ハッシュ値109|Rnd)・・・(式28)
このように、1次隣接データ、2次隣接データの抽出方法は同じであるが、ハッシュチェーンの計算に乱数を付加している点が、実施の形態1との違いである。
図5にイベントの改竄検知を行う構成図を示す。
処理フローは図9と同様である。
実施の形態1との違いは連続性ハッシュ値検証部303の計算方法である。
連続性ハッシュ値検証部303は、イベント情報308の単体ハッシュ値307とイベント情報308前後の単体ハッシュ値310から式29を用いてSHashを求め、イベント情報308のハッシュチェーン309のハッシュ成分と比較し、その結果を連続性ハッシュ値検証結果312として出力する。
式29で、イベントの位置情報304の示すイベントリストの位置をkとする。
一致したらTrue、一致しなければFalseとする。結果を連続性ハッシュ値検証結果312として出力する。
SHash=Hash(RHash_(k−n)|…|RHash_(k−1)|RHash_(k)|RHash_(k+1)|…|RHash_(k+n)|ハッシュチェーン309の乱数成分)・・・(式29)
連続性ハッシュ値検証部303の動作を図5に示すイベントリストを例に示す。n=1とする。
検証位置419のイベントの連続性を検証する場合、式30に従い、一時ハッシュShashを計算する。
Shashとハッシュチェーン413のハッシュ成分とが一致した場合はTrueとし、一致しない場合はFalseとする。
Shash=Hash(単体ハッシュ値407|単体ハッシュ値408|ハッシュチェーン413の乱数成分)・・・(式30)
検証位置420のイベントの連続性を検証する場合、式31に従い、一時ハッシュShashを計算する。
Shashとハッシュチェーン415のハッシュ成分とが一致した場合はTrueとし、一致しない場合はFalseとする。
Shash=Hash(単体ハッシュ値408|単体ハッシュ値409|単体ハッシュ値410|ハッシュチェーン415の乱数成分)・・・(式31)
検証位置421のイベントの連続性を検証する場合、式32に従い、一時ハッシュShashを計算する。
Shashとハッシュチェーン418のハッシュ成分とが一致した場合はTrueとし、一致しない場合はFalseとする。
Shash=Hash(単体ハッシュ値411|単体ハッシュ値412|ハッシュチェーン418の乱数成分)・・・(式32)
図6にイベントの削除を行う構成図を示す。
処理フローは図10と同様である。
実施の形態1との違いは連続性ハッシュ値再計算部501の計算方法である。
連続性ハッシュ値再計算部501は、削除位置情報503、イベントリスト505を入力し、削除位置情報503が示す位置の前後n(n≧1)個分のハッシュチェーンを再計算する。
結果を再計算後イベントリスト506として出力する。
連続性ハッシュ値再計算部501の動作について、図7を用いて説明する。
説明ではn=1とする。
削除位置619のイベントを削除する場合、式33に従い、ハッシュチェーン614を計算し、イベントリスト505を書き換える。
結果を再計算後イベントリスト506として出力する。ただし、Hash()はハッシュ計算を示し、|はデータの連接を示す。Rndは乱数を示す。
ハッシュチェーン614=Rnd|Hash(単体ハッシュ値608|単体ハッシュ値609|Rnd)・・・(式33)
削除位置620のイベントを削除する場合、式34、35に従い、ハッシュチェーン614、616を計算し、イベントリスト505を書き換える。結果を再計算後イベントリスト506として出力する。
ハッシュチェーン614=Rnd|Hash(単体ハッシュ値607|単体ハッシュ値608|単体ハッシュ値610|Rnd)・・・(式34)
ハッシュチェーン616=Rnd|Hash(単体ハッシュ値608|単体ハッシュ値610|単体ハッシュ値611|Rnd)・・・(式35)
削除位置621のイベントを削除する場合、式36に従い、ハッシュチェーン617を計算し、イベントリスト505を書き換える。結果を再計算後イベントリスト506として出力する。
ハッシュチェーン617=Rnd|Hash(単体ハッシュ値610|単体ハッシュ値611|Rnd)・・・(式36)
このように、1次隣接データ、2次隣接データの抽出方法は同じであるが、ハッシュチェーンの計算に乱数を付加している点が、実施の形態1との違いである。
本実施の形態の効果について述べる。改竄等に対する効果は実施の形態1と同じである。
本実施の形態では、乱数を変えることで、イベントが同じ値でも、異なるハッシュ値を生成できる。
ここで、実施の形態1及び実施の形態2に係るイベントログ管理装置の特徴を以下にて再言する。
実施の形態1及び実施の形態2では、イベントログを収集・蓄積する装置であって、イベントログを収集する手段と、前記イベントログ単体のハッシュ値(単体ハッシュ値)を求める手段と、前記イベントログの単体ハッシュ値と、前記イベントが発生する前または後1つ以上のイベントログの単体ハッシュ値とを用いて前記イベントログの連続性を検証するハッシュ値(ハッシュチェーン)を計算する手段と、前記イベントが発生する前または後1つ以上のイベントログのハッシュチェーンを再計算する手段とを備えたイベントログ管理装置について説明した。
実施の形態1及び実施の形態2では、前記イベントログの単体ハッシュ値を求める手段において、イベントログ本体と乱数から単体ハッシュ値を計算し、前記乱数と前記単体ハッシュ値を連接したデータを前記イベントログとともに蓄積することを特徴としたイベントログ管理装置について説明した。
実施の形態1及び実施の形態2では、前記イベントログのハッシュチェーンを求める手段において、前記イベントが発生する前または後1つ以上のイベントログの単体ハッシュ値と乱数からハッシュチェーンを計算し、前記乱数と前記ハッシュチェーンを連接したデータを前記イベントログとともに蓄積することを特徴としたイベントログ管理装置について説明した。
実施の形態1及び実施の形態2では、イベントログを蓄えたリストと、イベントログの挿入位置を示す情報から、前記イベントログを挿入する位置の前後1つ以上のイベントログの単体ハッシュ値とハッシュチェーンを抽出する手段をさらに備えたイベントログ管理装置について説明した。
実施の形態1及び実施の形態2では、イベントログを蓄えたリストと、イベントログの挿入位置を示す情報から、前記イベントログを挿入する位置の前後1つ以上のイベントログの単体ハッシュ値とハッシュチェーンを抽出する手段において、イベントログの最終位置の1つ以上前のイベントログの単体ハッシュ値とハッシュチェーンを一時記憶に蓄える手段をさらに備えたイベントログ管理装置について説明した。
実施の形態1及び実施の形態2では、前記イベントログを蓄えたリストと、前記イベントログの挿入位置を示す情報から、前記イベントログと、前記イベントログの単体ハッシュ値と、前記イベントログのハッシュチェーンと、前記イベントが発生する前または後1つ以上のイベントログのハッシュチェーンを、前記イベントログを蓄えたリストに挿入または上書きする手段をさらに備えたイベントログ管理装置について説明した。
実施の形態1及び実施の形態2では、前記イベントログを蓄えたリストに蓄えられたイベントを参照する手段と、前記参照されたイベントに対応するハッシュ値を求める手段と、前記参照されたイベントの前または後1つ以上のイベントのハッシュ値を求める手段と、前記参照されたイベントに対応するハッシュ値と、前記参照されたイベントの前または後1つ以上のイベントのハッシュ値からハッシュ値を計算する手段と、前記参照されたイベントに対応するハッシュ値と、前記参照されたイベントの前または後1つ以上のイベントのハッシュ値から求めたハッシュ値を、前記イベントログを蓄えたリストから抽出する手段と、前記求めたハッシュ値と前記抽出したハッシュ値とを比較する手段とを備えたイベントログ管理装置について説明した。
実施の形態1及び実施の形態2では、前記イベントログを蓄えたリストと、イベントログの削除位置を示す情報から、削除位置前後のイベントログのハッシュチェーンを計算し、前記ハッシュチェーンを用いて前記イベントリストを更新し、前記イベントログの削除位置にあたるイベントを削除することをさらに備えたイベントログ管理装置について説明した。
最後に、実施の形態1、2に示したイベントログ管理装置1のハードウェア構成例について説明する。
図11は、実施の形態1、2に示すイベントログ管理装置1のハードウェア資源の一例を示す図である。
なお、図11の構成は、あくまでもイベントログ管理装置1のハードウェア構成の一例を示すものであり、イベントログ管理装置1のハードウェア構成は図11に記載の構成に限らず、他の構成であってもよい。
図11において、イベントログ管理装置1は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。蓄積イベントリスト記憶部13はこれら記憶装置により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されていても構わない。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
イベントログ管理装置1の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1、2の説明において「〜部」、「〜手段」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1、2の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の評価」、「〜の更新」、「〜の設定」、「〜の抽出」、「〜の生成」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1、2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1、2の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1、2の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1、2の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1、2に示すイベントログ管理装置1は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
実施の形態1、2に係るイベントログ管理装置の構成例を示す図。 実施の形態1に係るイベント情報挿入時のデータフロー例を示す図。 実施の形態1に係るイベント情報挿入時のハッシュチェーンの生成例を説明する図。 実施の形態1に係る改竄検証時のデータフロー例を示す図。 実施の形態1に係る改竄検証時のハッシュチェーンの生成例を説明する図。 実施の形態1に係るイベント情報削除時のデータフロー例を示す図。 実施の形態1に係るイベント情報削除時のハッシュチェーンの生成例を説明する図。 実施の形態1に係るイベント情報挿入時の動作例を示すフローチャート図。 実施の形態1に係る改竄検証時の動作例を示すフローチャート図。 実施の形態1に係るイベント情報削除時の動作例を示すフローチャート図。 実施の形態1、2に係るイベントログ管理装置のハードウェア構成例を示す図。
符号の説明
1 イベントログ管理装置、11 入力部、12 イベント蓄積部、13 蓄積イベントリスト記憶部、100 イベント情報挿入機構、101 単体ハッシュ値計算部、103 連続性ハッシュ値計算部、104 イベント挿入部、300 改竄検知機構、301 イベント抽出部、302 単体ハッシュ検証部、303 連続性ハッシュ値検証部、500 イベント情報削除機構、501 連続性ハッシュ値再計算部、502 イベント削除部。

Claims (22)

  1. データを順序づけて記憶するデータ記憶部と、
    前記データ記憶部に新たに記憶させる挿入データと、前記データ記憶部に記憶させる際の前記挿入データの挿入位置を示す挿入位置情報とを入力する入力部と、
    データn(nの値は1以上であって、4nが前記データ記憶部内のデータの総数未満となる範囲の任意の値)個を抽出個数とし、前記データ記憶部に記憶されているデータのデータ順序に従い、前記挿入位置から前方に前記抽出個数分の範囲内にあるデータ及び前記挿入位置から後方に前記抽出個数分の範囲内にあるデータを1次隣接データとして抽出し、前記挿入データ及び前記1次隣接データ又は前記挿入データ及び前記1次隣接データの各々から派生するデータを用いて、前記挿入データ及び前記1次隣接データの範囲でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を算出する順序改竄検知ハッシュ値算出部とを有し、
    前記データ記憶部は、
    前記順序改竄検知ハッシュ値算出部により算出された順序改竄検知ハッシュ値と前記挿入データとを対応づけて前記挿入位置において記憶することを特徴とするデータ処理装置。
  2. 前記順序改竄検知ハッシュ値算出部は、
    前記挿入データ単体にハッシュ演算を行って得られた単体ハッシュ値を取得するとともに、1次隣接データごとに、1次隣接データ単体にハッシュ演算を行って得られた単体ハッシュ値を取得し、取得した各データの単体ハッシュ値を用いて順序改竄検知ハッシュ値を算出することを特徴とする請求項に記載のデータ処理装置。
  3. 前記順序改竄検知ハッシュ値算出部は、
    1次隣接データごとに1次隣接データの位置から前記抽出個数分の範囲内にあるデータを2次隣接データとして抽出し、1次隣接データ及び2次隣接データ又は1次隣接データ及び2次隣接データの各々から派生するデータを用いて、1次隣接データ及び2次隣接データの範囲でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を1次隣接データごとに算出し、
    前記データ記憶部は、
    前記順序改竄検知ハッシュ値算出部により算出された順序改竄検知ハッシュ値を対応する1次隣接データに対応づけて記憶することを特徴とする請求項1又は2に記載のデータ処理装置。
  4. 前記順序改竄検知ハッシュ値算出部は、
    1次隣接データの位置から前方に前記抽出個数分の範囲内にあるデータ及び1次隣接データの位置から後方に前記抽出個数分の範囲内にあるデータを2次隣接データとして抽出することを特徴とする請求項に記載のデータ処理装置。
  5. 前記順序改竄検知ハッシュ値算出部は、
    1次隣接データごとに、1次隣接データ単体にハッシュ演算を行って得られた単体ハッシュ値を取得するとともに、2次隣接データごとに、2次隣接データ単体にハッシュ演算を行って得られた単体ハッシュ値を取得し、取得した各データの単体ハッシュ値を用いて1次隣接データごとの順序改竄検知ハッシュ値を算出することを特徴とする請求項又はに記載のデータ処理装置。
  6. 前記順序改竄検知ハッシュ値算出部は、
    1次隣接データの位置から抽出個数分の範囲内に前記挿入位置が含まれる場合に前記挿入データを2次隣接データとして抽出することを特徴とする請求項のいずれかに記載のデータ処理装置。
  7. 前記入力部は、
    削除対象となる削除対象データの位置である削除位置を示す削除位置情報を入力し、
    前記順序改竄検知ハッシュ値算出部は、
    前記削除対象データを除いたデータ順序に従い、前記削除位置から前記抽出個数分の範囲内にあるデータを1次隣接データとして抽出するとともに、1次隣接データごとに1次隣接データの位置から前記抽出個数分の範囲内にあるデータを2次隣接データとして抽出し、1次隣接データ及び2次隣接データ又は1次隣接データ及び2次隣接データの各々から派生するデータを用いて、1次隣接データ及び2次隣接データの範囲でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を1次隣接データごとに算出し、
    前記データ記憶部は、
    前記削除対象データを削除するとともに、前記順序改竄検知ハッシュ値算出部により算出された順序改竄検知ハッシュ値を対応する1次隣接データに対応づけて記憶することを特徴とする請求項1〜のいずれかに記載のデータ処理装置。
  8. 前記順序改竄検知ハッシュ値算出部は、
    1次隣接データの位置から前方に前記抽出個数分の範囲内にあるデータ及び1次隣接データの位置から後方に前記抽出個数分の範囲内にあるデータを2次隣接データとして抽出することを特徴とする請求項に記載のデータ処理装置。
  9. 前記順序改竄検知ハッシュ値算出部は、
    1次隣接データごとに、1次隣接データ単体にハッシュ演算を行って得られた単体ハッシュ値を取得するとともに、2次隣接データごとに、2次隣接データ単体にハッシュ演算を行って得られた単体ハッシュ値を取得し、取得した各データの単体ハッシュ値を用いて1次隣接データごとの順序改竄検知ハッシュ値を算出することを特徴とする請求項又はに記載のデータ処理装置。
  10. 前記データ記憶部は、
    データと前記順序改竄検知ハッシュ値算出部により算出された順序改竄検知ハッシュ値とを対応づけて記憶しており、
    前記順序改竄検知ハッシュ値算出部によりいずれかのデータが1次隣接データとして抽出され当該データに対して新たな順序改竄検知ハッシュ値が算出された場合に、当該データに対して記憶している順序改竄検知ハッシュ値を新たに算出された順序改竄検知ハッシュ値に更新することを特徴とする請求項のいずれかに記載のデータ処理装置。
  11. 前記順序改竄検知ハッシュ値算出部は、
    取得した各データの単体ハッシュ値と乱数を用いて順序改竄検知ハッシュ値を算出することを特徴とする請求項及びのいずれかに記載のデータ処理装置。
  12. 前記データ記憶部は、
    データと当該データの単体ハッシュ値とを対応づけて記憶しており、
    前記データ処理装置は、更に、
    前記入力部から前記挿入データを取得し、前記挿入データの単体ハッシュ値を算出する単体ハッシュ値算出部を有し、
    前記順序改竄検知ハッシュ値算出部は、
    前記単体ハッシュ値算出部から前記挿入データの単体ハッシュ値を取得し、前記データ記憶部から1次隣接データの単体ハッシュ値を取得することを特徴とする請求項に記載のデータ処理装置。
  13. 前記データ処理装置は、更に、
    前記データ記憶部よりも高速で動作し、前記データ記憶部に記憶されている最後尾のデータの単体ハッシュ値を少なくとも記憶する一時記憶部を有し、
    前記順序改竄検知ハッシュ値算出部は、
    前記挿入位置が前記データ記憶部に記憶されている最後尾のデータの後である場合に、前記一時記憶部に記憶されている単体ハッシュ値を取得することを特徴とする請求項又はに記載のデータ処理装置。
  14. 前記順序改竄検知ハッシュ値算出部は、
    前記挿入データ単体に乱数を付加してハッシュ演算を行って得られた単体ハッシュ値を取得するとともに、1次隣接データ単体に乱数を付加してハッシュ演算を行って得られた単体ハッシュ値を取得し、取得した各データの単体ハッシュ値を用いて順序改竄検知ハッシュ値を算出することを特徴とする請求項に記載のデータ処理装置。
  15. 前記順序改竄検知ハッシュ値算出部は、
    1次隣接データごとに、1次隣接データ単体に乱数を付加してハッシュ演算を行って得られた単体ハッシュ値を取得するとともに、2次隣接データごとに、2次隣接データ単体に乱数を付加してハッシュ演算を行って得られた単体ハッシュ値を取得し、取得した各データの単体ハッシュ値を用いて1次隣接データごとの順序改竄検知ハッシュ値を算出することを特徴とする請求項及びのいずれかに記載のデータ処理装置。
  16. 前記データ記憶部は、
    データと前記順序改竄検知ハッシュ値算出部により算出された順序改竄検知ハッシュ値とを対応づけて記憶しており、
    前記入力部は、
    データ順序の改竄有無の検証が行われる位置を検証位置として示す検証位置情報を入力し、
    前記データ処理装置は、更に、
    前記検証位置に位置するデータに対応づけられている順序改竄検知ハッシュ値と、前記検証位置から前記抽出個数分の範囲内にあるデータに対応づけられている順序改竄検知ハッシュ値とを取得し、取得した順序改竄検知ハッシュ値を用いてデータ順序の改竄の有無を検証する順序改竄検証部を有することを特徴とする請求項1〜15のいずれかに記載のデータ処理装置。
  17. 前記順序改竄検証部は、
    順序改竄検知ハッシュ値ごとに、順序改竄検知ハッシュ値に対応づけられているデータ単体にハッシュ演算を行って得られた単体ハッシュ値を取得するとともに、当該データの位置から前記抽出個数分の範囲内にある各データの単体にハッシュ演算を行って得られた単体ハッシュ値を取得し、取得した単体ハッシュ値を用いて検査用のハッシュ値を算出し、算出した検査用のハッシュ値と、照合の対象となる順序改竄検知ハッシュ値とを照合してデータ順序の改竄の有無を検証することを特徴とする請求項16に記載のデータ処理装置。
  18. 前記順序改竄検証部は、
    取得した順序改竄検知ハッシュ値を順次照合の対象とし、照合の対象とした順序改竄検知ハッシュ値に対応づけられているデータ単体に乱数を付加してハッシュ演算を行って得られた単体ハッシュ値を取得するとともに、当該データの位置から前記抽出個数分の範囲内にある各データの単体に乱数を付加してハッシュ演算を行って得られた単体ハッシュ値を取得し、取得した単体ハッシュ値を用いて検査用のハッシュ値を算出し、算出した検査用のハッシュ値と照合の対象とした順序改竄検知ハッシュ値とを照合してデータ順序の改竄の有無を検証することを特徴とする請求項16に記載のデータ処理装置。
  19. 前記順序改竄検証部は、
    取得した単体ハッシュ値に乱数を付加して検査用のハッシュ値を算出することを特徴とする請求項17又は18に記載のデータ処理装置。
  20. 前記データ記憶部は、
    データと当該データの単体ハッシュ値とを対応づけて記憶しており、
    前記データ処理装置は、更に、
    前記データ記憶部から順序改竄検知ハッシュ値に対応づけられているデータと当該データの単体ハッシュ値を取得するとともに、順序改竄検知ハッシュ値に対応づけられているデータから単体ハッシュ値を算出し、算出した単体ハッシュ値と前記データ記憶部から取得した単体ハッシュ値とを照合してデータ単体における改竄の有無を検証する単体ハッシュ値検証部とを有することを特徴とする請求項1719のいずれかに記載のデータ処理装置。
  21. データを順序づけて記憶するデータ記憶部を有するコンピュータが、前記データ記憶部に新たに記憶させる挿入データと、前記データ記憶部に記憶させる際の前記挿入データの挿入位置を示す挿入位置情報とを入力する入力ステップと、
    前記コンピュータが、データn(nの値は1以上であって、4nが前記データ記憶部内のデータの総数未満となる範囲の任意の値)個を抽出個数とし、前記データ記憶部に記憶されているデータのデータ順序に従い、前記挿入位置から前方に前記抽出個数分の範囲内にあるデータ及び前記挿入位置から後方に前記抽出個数分の範囲内にあるデータを1次隣接データとして抽出し、前記挿入データ及び前記1次隣接データ又は前記挿入データ及び前記1次隣接データの各々から派生するデータを用いて、前記挿入データ及び前記1次隣接データの範囲でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を算出する順序改竄検知ハッシュ値算出ステップと、
    前記コンピュータが、前記順序改竄検知ハッシュ値算出ステップにより算出された順序改竄検知ハッシュ値と前記挿入データとを対応づけて前記データ記憶部の前記挿入位置に格納するデータ格納ステップとを有することを特徴とするデータ処理方法。
  22. データを順序づけて記憶するデータ記憶部を有するコンピュータに、
    前記データ記憶部に新たに記憶させる挿入データと、前記データ記憶部に記憶させる際の前記挿入データの挿入位置を示す挿入位置情報とを入力する入力処理と、
    データn(nの値は1以上であって、4nが前記データ記憶部内のデータの総数未満となる範囲の任意の値)個を抽出個数とし、前記データ記憶部に記憶されているデータのデータ順序に従い、前記挿入位置から前方に前記抽出個数分の範囲内にあるデータ及び前記挿入位置から後方に前記抽出個数分の範囲内にあるデータを1次隣接データとして抽出し、前記挿入データ及び前記1次隣接データ又は前記挿入データ及び前記1次隣接データの各々から派生するデータを用いて、前記挿入データ及び前記1次隣接データの範囲でのデータ順序の改竄を検知可能な順序改竄検知ハッシュ値を算出する順序改竄検知ハッシュ値算出処理と、
    前記順序改竄検知ハッシュ値算出処理により算出された順序改竄検知ハッシュ値と前記挿入データとを対応づけて前記データ記憶部の前記挿入位置に格納するデータ格納処理と実行させることを特徴とするプログラム。
JP2007299961A 2007-11-20 2007-11-20 データ処理装置及びデータ処理方法及びプログラム Expired - Fee Related JP5014081B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007299961A JP5014081B2 (ja) 2007-11-20 2007-11-20 データ処理装置及びデータ処理方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007299961A JP5014081B2 (ja) 2007-11-20 2007-11-20 データ処理装置及びデータ処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009128956A JP2009128956A (ja) 2009-06-11
JP5014081B2 true JP5014081B2 (ja) 2012-08-29

Family

ID=40819860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007299961A Expired - Fee Related JP5014081B2 (ja) 2007-11-20 2007-11-20 データ処理装置及びデータ処理方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5014081B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2933216B1 (fr) * 2008-06-27 2012-12-21 Nicolas Reffe Procede et systeme de validation d'une succession d'evenements vecus par un dispositif
JP5381542B2 (ja) * 2009-09-17 2014-01-08 日本電気株式会社 不正アクセス検出装置、不正アクセス検出プログラム、および、不正アクセス検出方法
JP5548419B2 (ja) * 2009-09-30 2014-07-16 富士通株式会社 署名生成装置、署名検証装置、署名生成方法、署名検証方法、署名生成プログラム、および署名検証プログラム
JP6257504B2 (ja) * 2014-12-09 2018-01-10 三菱電機株式会社 移動端末装置及び情報処理システム及び情報処理方法及びプログラム
CN107172003B (zh) * 2016-03-08 2020-08-04 创新先进技术有限公司 一种发布信息的处理方法、装置及信息发布系统
JP2021061576A (ja) * 2019-10-08 2021-04-15 グラビティ株式会社 データ管理システム、データ管理方法、データ管理装置、及びデータ管理プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003143139A (ja) * 2001-11-07 2003-05-16 Fujitsu Ltd デジタルデータ記憶・検証プログラムおよびデジタルデータ記憶・検証方法
JP4439879B2 (ja) * 2003-11-13 2010-03-24 日本電信電話株式会社 データ処理装置および履歴検証方法
JP4235193B2 (ja) * 2005-06-07 2009-03-11 日本電信電話株式会社 イベント履歴蓄積装置、イベント情報検証装置、イベント履歴蓄積方法、イベント情報検証方法およびイベント情報処理システム

Also Published As

Publication number Publication date
JP2009128956A (ja) 2009-06-11

Similar Documents

Publication Publication Date Title
US20090328218A1 (en) Data processing system, data processing method, and program
US7167986B2 (en) Upgradeable timestamp mechanism
US20160292396A1 (en) System and method for authenticating digital content
JP5014081B2 (ja) データ処理装置及びデータ処理方法及びプログラム
US8572050B2 (en) Method and system for real time system log integrity protection
US8190915B2 (en) Method and apparatus for detecting data tampering within a database
WO2010134192A1 (ja) 電子機器及び鍵生成プログラム及び記録媒体及び鍵生成方法
JP2006511877A (ja) ソフトウェアの改ざんを事前に対処することによって検出するためのシステムおよび方法
US7721113B2 (en) Data alteration detecting method, data alteration detecting device and data alteration detecting program
CN108399338A (zh) 基于进程行为的平台完整性状态信息度量方法
CN110800312B (zh) 用于证明内容呈现的媒体信道监视
CN109255232B (zh) 一种软件加载方法以及软件加载装置
US20190074974A1 (en) Cryptographically Linking Related Events Processed Across Multiple Processing Systems
CN109145604A (zh) 一种勒索软件智能检测方法及系统
EP3742367A1 (en) Method for determining information integrity and computer system using the same
Kumar et al. SIGNIFICANCE of hash value generation in digital forensic: A case study
JP4512697B2 (ja) デジタルフォレンジック保全装置
JP6149523B2 (ja) ファイル改ざん検知システム
US11295031B2 (en) Event log tamper resistance
KR101893504B1 (ko) 리눅스 환경에서 파일 무결성 검증 장치 및 방법
JP2005182509A (ja) 計算機システム並びにデータ改竄検出方法
JP6494887B1 (ja) 検査装置、検査方法及び検査プログラム
US11163909B2 (en) Using multiple signatures on a signed log
US20240056465A1 (en) System and method of managing and auditing training data based on distributed ledger technology
JP2008123247A (ja) ログ管理方式及びログ管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100916

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120223

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120508

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120605

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees