(57)【要約】【課題】改ざん検出コードを含めた最新のレコード全体が削除された場合でも、削除を検出可能な記録装置を提供する。【解決手段】統合ハッシュ生成部はデータハッシュを順次に入力し、データハッシュから統合ハッシュＴ１、Ｔ２等（Ｔ１等と記す）を生成して順次出力する。ハッシュ管理部は、統合ハッシュ生成部から順次出力されたＴ１，Ｔ２等を順次格納する。統合ハッシュ制御部は、順次格納されるＴ１等の格納状況、格納順位を監視し、最初のＴ１格納後に次のＴ２が格納されるとＴ１、Ｔ２のペアを出力し、Ｔ２の後にＴ３が格納されるとＴ３、Ｔ２のペアを出力すると共にＴ３、Ｔ１のペアを出力し、以降順次、Ｔｋ（ｋは４以上の整数）が格納されるとＴｋ、Ｔｋ−１のペアを出力すると共にＴｋ、Ｔ１のペアを出力する。中間ハッシュ生成部は、統合ハッシュ制御部から出力された各ペアを入力し、ペアごとにペアから中間ハッシュを生成する。【選択図】図８
2010107832.tif 000002
【特許請求の範囲】
【請求項１】
データを順次に入力し、順次に入力した前記データのハッシュ値を生成して順次に出力する第１ハッシュ生成部と、
前記第１ハッシュ生成部によって順次に出力された前記ハッシュ値を順次に格納するハッシュ格納部と、
前記ハッシュ格納部により順次に格納される前記ハッシュ値の格納状況と格納順位とを監視することにより、前記ハッシュ格納部に最初の第１ハッシュ値が格納された後に次の第２ハッシュ値が格納されると前記ハッシュ格納部から第１ハッシュ値と第２ハッシュ値とをペアとして出力し、第２ハッシュ値の後に次の第３ハッシュ値が格納されると第３ハッシュ値と第２ハッシュ値とをペアとして出力すると共に第３ハッシュ値と第１ハッシュ値とをペアとして出力し、以降順次、第ｋ（ｋは４以上の整数）ハッシュ値が格納されると第ｋハッシュ値と第ｋ−１ハッシュ値とをペアとして出力すると共に第ｋハッシュ値と第１ハッシュ値とをペアとして出力するハッシュ制御部と、
前記ハッシュ制御部から出力された各ペアを入力し、入力したペアごとに、ペアから新たな新ハッシュ値を生成する第２ハッシュ生成部と
を備えたことを特徴とするハッシュ生成装置。
【請求項２】
前記ハッシュ格納部は、
Ｎ（Ｎ：Ｎ≧ｋの整数）個のハッシュ値を一つずつ格納するＮ個の格納領域を備え、
前記ハッシュ制御部は、
前記ハッシュ格納部のＮ個目の格納領域にＮ番目の第Ｎハッシュ値が格納されると、前記ハッシュ格納部から格納順位の古い順に少なくとも一つのハッシュ値を格納領域から削除し、未削除のハッシュ値のうち最も格納順位の古いハッシュ値と第Ｎハッシュ値とをペアとして前記第２ハッシュ生成部に出力し、
前記ハッシュ格納部は、
前記ハッシュ制御部によってハッシュ値が削除された領域に、前記第１ハッシュ生成部から出力されたハッシュ値を順次に格納し、
前記ハッシュ制御部は、
以降、前記ハッシュ格納部にＮ個のハッシュ値が格納されると、格納順位の最も古いハッシュ値から順に少なくとも一つのハッシュ値を格納領域から削除し、未削除のハッシュ値のうち格納順位の最も古いハッシュ値とＮ個目に格納された格納順位の最も新しいハッシュ値とをペアとして前記第２ハッシュ生成部に出力することを特徴とする請求項１記載のハッシュ生成装置。
【請求項３】
前記ハッシュ生成装置は、さらに、
前記第１ハッシュ生成部が入力した複数のデータと、前記第１ハッシュ生成部により生成された前記複数のデータのハッシュ値と、前記第２ハッシュ生成部により各ペアから生成された複数の新ハッシュ値とを所定の記憶装置に格納すると共に、少なくとも一つの所定のデータの削除を指令する削除指令に従うことにより前記記憶装置に格納された複数のデータから前記所定のデータと、前記所定のデータのハッシュ値と、前記所定のデータのハッシュ値を元として生成された新ハッシュ値とを削除し、削除した前記所定のデータのうち最も古いデータよりもひとつ古いデータから生成された未削除のハッシュ値と、削除したデータのうち最も新しいデータよりもひとつ新しいデータから生成された未削除のハッシュ値とから、前記第２ハッシュ生成部に新ハッシュ値を生成させるデータ更新部
を備えたことを特徴とする請求項１または２のいずれかに記載のハッシュ生成装置。
【請求項４】
前記第１ハッシュ生成部と前記第２ハッシュ生成部とは、
同一の鍵を用いた鍵付きハッシュ演算によって、ハッシュ値を生成することを特徴とする請求項１〜３のいずれかに記載のハッシュ生成装置。
【請求項５】
ハッシュ値を順次に格納するハッシュ格納部と、
先後連続して前記ハッシュ格納部に格納された２つのハッシュ値から新たな新ハッシュ値を生成すると共に、前記ハッシュ格納部に格納されたハッシュ値のうち最も過去に格納されたハッシュ値と、前記ハッシュ格納部に格納されたハッシュ値のうち最も最近に格納されたハッシュ値とから、新たな新ハッシュ値を生成するハッシュ生成部と
を備えたことを特徴とするハッシュ生成装置。
【請求項６】
前記ハッシュ生成装置は、さらに、
前記ハッシュ格納部が複数のハッシュ値を格納している場合において、予め設定された規則に従って、前記ハッシュ格納部に格納されたハッシュ値を格納時期の古い順に少なくとも一つ削除するハッシュ制御を備え、
前記ハッシュ生成部は、
前記ハッシュ制御部によって前記ハッシュ格納部に格納されたハッシュ値が格納時期の古い順に少なくとも一つ削除された場合には、削除されたハッシュ値のうち格納時期の最も新しいハッシュ値の直後に格納された未削除のハッシュ値と、最も最近に格納された未削除のハッシュ値とから、新たな新ハッシュ値を生成することを特徴とする請求項５記載のハッシュ生成装置。
【請求項７】
データが正当かどうかを検証する検証装置において、
少なくとも所定のデータと、前記所定のデータを対象として請求項１記載のハッシュ生成装置によって生成された複数の新ハッシュ値とが格納された記憶媒体から、前記所定のデータと前記複数の新ハッシュ値とを読み出す検証側データ読出部と、
前記検証側データ読出部から前記所定のデータを順次に入力し、順次に入力した前記所定のデータのハッシュ値を生成して順次に出力する検証側第１ハッシュ生成部と、
前記検証側第１ハッシュ生成部によって順次に出力された前記ハッシュ値を順次に格納する検証側ハッシュ格納部と、
前記検証側ハッシュ格納部により順次に格納される前記ハッシュ値の格納状況と格納順位とを監視することにより、前記検証側ハッシュ格納部に最初の第１ハッシュ値が格納された後に次の第２ハッシュ値が格納されると前記検証側ハッシュ格納部から第１ハッシュ値と第２ハッシュ値とをペアとして出力し、第２ハッシュ値の後に次の第３ハッシュ値が格納されると第３ハッシュ値と第２ハッシュ値とをペアとして出力すると共に第３ハッシュ値と第１ハッシュ値とをペアとして出力し、以降順次、第ｋ（ｋは４以上の整数）ハッシュ値が格納されると第ｋハッシュ値と第ｋ−１ハッシュ値とをペアとして出力すると共に第ｋハッシュ値と第１ハッシュ値とをペアとして出力する検証側ハッシュ制御部と、
前記検証側ハッシュ制御部から出力された各ペアを入力し、入力したペアごとに、ペアから新たな新ハッシュ値を生成する検証側第２ハッシュ生成部と、
前記検証側第２ハッシュ生成部によって生成された複数の新ハッシュ値と、前記検証側データ読出部により前記記憶媒体から読み出された複数の新ハッシュ値とを比較し、一致するかどうかを検証する検証側新ハッシュ値検証部と
を備えたことを特徴とする検証装置。
【請求項８】
前記記憶媒体は、
連続する所定の連続データと、前記連続データを対象として請求項１記載のハッシュ生成装置の前記第２ハッシュ生成部によって生成された複数の新ハッシュ値と、前記複数の新ハッシュ値の生成の元となった複数のハッシュ値であって請求項１記載のハッシュ生成装置の前記第１ハッシュ生成部によって生成された複数のハッシュ値とを少なくとも格納し、
前記検証装置は、さらに、
前記記憶媒体に格納されている前記連続データのうちの途中の一部分のデータの削除を指令する削除指令が入力される検証側データ入力部と、
前記検証側データ入力部に入力された削除指令の示す一部分のデータを前記記憶媒体に格納されている前記連続データから削除すると共に、削除された一部分のデータの両側に残余する残余データに対応する各ハッシュ値を前記記録媒体においてペアとして特定して前記検証側第２ハッシュ生成部に渡し、前記ペアから新ハッシュ値を前記検証側第２ハッシュ生成部に生成させ、生成させた前記新ハッシュ値を前記記憶媒体に格納する検証側データ更新部と
を備えたことを特徴とする請求項７記載の検証装置。
【請求項９】
前記記憶媒体は、
連続する所定の連続データと、前記連続データを対象として前記検証側第２ハッシュ生成部によって生成された複数の新ハッシュ値と、前記複数の新ハッシュ値の生成の元となった複数のハッシュ値であって前記検証側第１ハッシュ生成部によって生成された複数のハッシュ値とを少なくとも格納し、
前記検証装置は、さらに、
前記記憶媒体に格納されている前記連続データのうちの途中の一部分のデータの削除を指令する削除指令が入力される検証側データ入力部と、
前記検証側データ入力部に入力された削除指令の示す一部分のデータを前記記憶媒体に格納されている前記連続データから削除すると共に、削除された一部分のデータの両側に残余する残余データに対応する各ハッシュ値を前記記録媒体においてペアとして特定して前記検証側第２ハッシュ生成部に渡し、前記ペアから新ハッシュ値を前記検証側第２ハッシュ生成部に生成させ、生成させた前記新ハッシュ値を前記記憶媒体に格納する検証側データ更新部と
を備えたことを特徴とする請求項７記載の検証装置。
【請求項１０】
コンピュータを
ハッシュ値を順次に格納するハッシュ格納部、
先後連続して前記ハッシュ格納部に格納された２つのハッシュ値から新たな新ハッシュ値を生成すると共に、前記ハッシュ格納部に格納されたハッシュ値のうち最も過去に格納されたハッシュ値と、前記ハッシュ格納部に格納されたハッシュ値のうち最も最近に格納されたハッシュ値とから、新たな新ハッシュ値を生成するハッシュ生成部、
として機能させるためのハッシュ生成プログラム。
【請求項１１】
ハッシュ値をハッシュ格納部に順次に格納するステップと、
先後連続して前記ハッシュ格納部に格納された２つのハッシュ値から新たな新ハッシュ値を生成すると共に、前記ハッシュ格納部に格納されたハッシュ値のうち最も過去に格納されたハッシュ値と、前記ハッシュ格納部に格納されたハッシュ値のうち最も最近に格納されたハッシュ値とから、新たな新ハッシュ値を生成するステップと
を備えたことを特徴とするハッシュ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、画像や音声などのデータのハッシュ値を生成するハッシュ生成装置、検証装置、ハッシュ生成プログラム、ハッシュ生成方法に関する。
【背景技術】
【０００２】
従来のデータ改ざん検出方法・検出装置は、データに所定のハッシュ演算を施して改ざん検出コードを算出し、さらにその改ざん検出コードと１つ前のデータの改ざん検出コードとをマージしたものに所定のハッシュ演算を施して改ざん検出コードを算出する。そして、算出した改ざん検出コードによって、データの変更、削除、追加等の改ざん検出を行っていた（例えば、特許文献１）。
【特許文献１】国際公開第ＷＯ２００４／０６８３５０号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
（１）しかし、従来の改ざん検出方法／装置では、最新の、改ざん検出コードを含めたレコード全体が削除された場合に、削除されたことを検出することができないという課題があった。
（２）さらに、従来の改ざん検出装置では、データ更新・編集処理を適切に行うことができないため、正当な権限を持つ人のデータ更新・編集と、悪意を持った人の改ざんとを区別できず、何れも改ざんされたと判断してしまうという課題があった。
【０００４】
本発明は、改ざん検出コードを含めたデータ全体の追加・削除・変更等の改ざんを検知可能であり、また、正当な権限を持つ人のデータ更新・編集と、悪意を持った人のデータ更新・編集を区別して改ざんを検知可能な装置の提供を目的とする。
【課題を解決するための手段】
【０００５】
この発明のハッシュ生成装置は、
データを順次に入力し、順次に入力した前記データのハッシュ値を生成して順次に出力する第１ハッシュ生成部と、
前記第１ハッシュ生成部によって順次に出力された前記ハッシュ値を順次に格納するハッシュ格納部と、
前記ハッシュ格納部により順次に格納される前記ハッシュ値の格納状況と格納順位とを監視することにより、前記ハッシュ格納部に最初の第１ハッシュ値が格納された後に次の第２ハッシュ値が格納されると前記ハッシュ格納部から第１ハッシュ値と第２ハッシュ値とをペアとして出力し、第２ハッシュ値の後に次の第３ハッシュ値が格納されると第３ハッシュ値と第２ハッシュ値とをペアとして出力すると共に第３ハッシュ値と第１ハッシュ値とをペアとして出力し、以降順次、第ｋ（ｋは４以上の整数）ハッシュ値が格納されると第ｋハッシュ値と第ｋ−１ハッシュ値とをペアとして出力すると共に第ｋハッシュ値と第１ハッシュ値とをペアとして出力するハッシュ制御部と、
前記ハッシュ制御部から出力された各ペアを入力し、入力したペアごとに、ペアから新たな新ハッシュ値を生成する第２ハッシュ生成部と
を備えたことを特徴とする。
【発明の効果】
【０００６】
この発明は新ハッシュ値をリング状につなげるので、改ざん検出コードを含めた最新のレコード全体が削除された場合でも、削除されたことを検出することができる。
【発明を実施するための最良の形態】
【０００７】
実施の形態１．
以下に、図１〜図１０を参照して実施の形態１を説明する。以下の実施の形態は、ドライブレコーダについて述べたものである。ドライブレコーダは、航空機に搭載されているフライトデータレコーダの自動車版といえる。ドライブレコーダは自動車で重大な事故が発生した場合に、その走行中の画像、音声などのデータを記録装置に保存し、事故調査の解析に使うことを目的としている。また、ドライブレコーダ装置が記録したデータを示談交渉や裁判時の証拠として採用できれば、交渉や裁判を早期に終わらせることが期待できる。しかし、例えば、データの画像の順序を入れ替えたり、異なる画像に編集したり、音声を捏造したり、運転操作の履歴を偽造したりして、自分に有利に交渉・裁判を進めようとする者がいる可能性がある。このため、データの改変やデータの順序の入替えなどの改竄を検知できる必要がある。最近は、事故の発生有無に関わらず、データを常に記録装置に保存する常時記録機能を搭載したドライブレコーダも存在する。常時記録機能では、データを常に記録装置に保存するため、記録装置の全領域に記録すると、以降は古いデータから上書きして記録する。このため、常時記録機能のデータに対しても、データの改変やデータの順序の入替えなどの改竄を検知できることが必要である。特に常時記録では、上書き処理を施しても、データの依存性（データに抜けがないことなどの保証）を担保する必要がある。
【０００８】
実施の形態１では、常時記録で、記録装置の全領域に記録するまでの処理について説明する。
【０００９】
（鍵付きハッシュ演算）
また、以下で述べる実施の形態の説明において、鍵付きハッシュ演算とは、共通鍵を知らなければハッシュ値を算出したり検証したりすることができないハッシュ値を算出することである。
【００１０】
図１は、コンピュータで実現されるドライブレコーダ装置１００、あるいは再生・検証装置２００のハードウェア資源の一例を示す図である。また、実施の形態４で後述する編集装置５００、実施の形態５で後述するドライブレコーダ装置１００ａもコンピュータであり、図１と同様のハードウェア構成である。以下のハードウェアの説明はドライブレコーダ装置１００について説明するが、他の再生・検証装置２００についても同じである。
【００１１】
図１において、ドライブレコーダ装置１００は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、操作キー８１４、通信ボード８１６、磁気ディスク装置８２０、記憶媒体（記憶装置）と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００１２】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード８１６、操作キー８１４などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３などは出力部、出力装置、再生部の一例である。通信ボード８１６は、ネットワークに接続可能である。
【００１３】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００１４】
上記プログラム群８２３には、以下に述べる実施の形態の説明において、「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００１５】
ファイル群８２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明する情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００１６】
また、以下に述べる実施の形態の説明においては、データや信号値は、ＲＡＭ８１２のメモリ、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１７】
また、以下に述べる実施の形態の説明において、「〜部」として説明するものは、「手段」、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ８１１に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００１８】
図２は、実施の形態１における記録装置であるドライブレコーダ装置１００の機能ブロックの一例を示すブロック構成図である。
【００１９】
図２において、
（１）撮像装置１０１は、例えばＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）カメラなどを用いて、画像を撮影して電気信号に変換する装置である。撮像装置１０１は、例えば３０分の１秒（所定の撮影間隔時間）に１枚の割合で静止画像を撮影する。
（２）音声録音装置１０２は、音声を入力して電気信号に変換する装置である。
（３）センサ情報取得装置１０３は、各センサが出力した情報を入力して電気信号に変換する装置である。例えば加速度センサから車両に加わる加速度の情報を取得する。
（４）鍵管理部１０４は、データハッシュ生成部１４０、統合ハッシュ生成部１０５、中間ハッシュ生成部１０８で使用する共通鍵を管理する。
（５）統合ハッシュ生成部１０５（第１ハッシュ生成部の一例）は、画像ハッシュ生成部１４１と音声ハッシュ生成部１４２とセンサハッシュ生成部１４３が出力する「ハッシュ値」とデータと鍵管理部１０４の鍵に基づいて、鍵付きハッシュ演算を行い、統合ハッシュ（ハッシュ値）を生成する。
（６）ハッシュ管理部１０７１（ハッシュ格納部）は統合ハッシュ生成部１０５が出力したハッシュ値を格納する装置である。
（７）統合ハッシュ制御部１０７は、ハッシュ管理部１０７１に格納されたハッシュ値の追加・削除・選択などを行う装置である。特に中間ハッシュ値を生成するために必要なハッシュ値の選択を行う。
（８）中間ハッシュ生成部１０８（第２ハッシュ生成部の一例）は、統合ハッシュ制御部１０７が出力するデータと鍵管理部１０４の鍵に基づいて鍵付きハッシュ演算を行い、中間ハッシュ（新ハッシュ）を生成する。
（９）データ書込部１０９は、データ取得部１３０とデータハッシュ生成部１４０と中間ハッシュ生成部１０８から出力されたデータを記憶媒体１１１に出力する。
（１０）データ更新部１１０は、中間ハッシュ生成部１０８から出力されたデータを使用して記憶媒体１１１に記憶済のデータの一部を書き換える。
（１１）記憶媒体１１１は、画像データ、音声データ、センサデータ、各ハッシュ値を記憶する。
【００２０】
（データ生成部１２０）
データ生成部１２０は、画像データ生成部１２１、音声データ生成部１２２、センサデータ生成部１２３から構成される。
（１）画像データ生成部１２１は、例えばＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）エンコーダなどを用いて、画像データを生成する装置である。画像データ生成部１２１は、撮像装置１０１が撮影した画像に基づいて、画像データを生成する。
（２）音声データ生成部１２２は、例えばＰＣＭ（Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）コーデックなどを用いて、音声データを生成する装置である。音声データ生成部１２２は、音声録音装置１０２が入力した音声を表わす電気信号を入力し、入力した電気信号に基づいて、音声を表わす連続した音声データを生成する。
（３）センサデータ生成部１２３は、センサ情報取得装置１０３が検知した状態を表わす電気信号を入力し、入力した電気信号に基づいて、連続したセンサデータを生成する。
【００２１】
（データ取得部１３０）
データ取得部１３０は、画像データ取得部１３１、音声データ取得部１３２、センサデータ取得部１３３から構成される。
（１）画像データ取得部１３１は、画像データ生成部１２１が記録した画像データを取得する。
（２）音声データ取得部１３２は、音声データ生成部１２２が記録した音声データを取得する。
（３）センサデータ取得部１３３は、センサデータ生成部１２３が記録したセンサデータを取得する。
【００２２】
（データハッシュ生成部１４０）
データハッシュ生成部１４０は、画像ハッシュ生成部１４１、音声ハッシュ生成部１４２、センサハッシュ生成部１４３から構成される。
（１）画像ハッシュ生成部１４１（第１ハッシュ生成部の一例）は、画像データ取得部１３１が取得したデータと鍵管理部１０４の鍵に基づいて鍵付きハッシュ演算を行う装置である。
（２）音声ハッシュ生成部１４２（第１ハッシュ生成部の一例）は、音声データ取得部１３２が取得したデータと鍵管理部１０４の鍵に基づいて鍵付きハッシュ演算を行う。
（３）センサハッシュ生成部１４３（第１ハッシュ生成部の一例）は、センサデータ取得部１３３が取得したデータと鍵管理部１０４の鍵に基づいて鍵付きハッシュ演算を行う。
【００２３】
（動作概要）
次に動作の概要を説明する。図３は、ドライブレコーダ装置１００の動作の流れの一例を示すフローチャートである。
【００２４】
ドライブレコーダ装置１００が起動すると、撮像装置１０１、音声録音装置１０２、センサ情報取得装置１０３が並行に動作し、画像データ生成部１２１、音声データ生成部１２２、センサデータ生成部１２３が、それぞれ画像、音声、センサデータを生成する（Ｓ１０１、Ｓ１０２、Ｓ１０３）。その後、画像データ取得部１３１、音声データ取得部１３２、センサデータ取得部１３３が、それぞれ画像、音声、センサデータを取得する（Ｓ１０４、Ｓ１０５、Ｓ１０６）。なお、画像データ取得部１３１、音声データ取得部１３２、センサデータ取得部１３３は、少なくともＳ１０９、Ｓ１１０の処理が終わるまでは取得したデータを保持する。
【００２５】
一定時間経過するまで各データの生成と取得（Ｓ１０１〜Ｓ１０６）を繰り返し、一定時間経過する（Ｓ１０７）とハッシュ生成工程に移る。なお、ハッシュの生成の間も、各データの生成と取得処理は行われている。つまり、ドライブレコーダ装置１００が停止するまで各データの生成と取得処理は継続する。ハッシュ生成工程で必要なハッシュ値を算出し（Ｓ１０８）、画像データ取得部１３１、音声データ取得部１３２、センサデータ取得部１３３と画像ハッシュ生成部１４１、音声ハッシュ生成部１４２、センサハッシュ生成部１４３と中間ハッシュ生成部１０８の出力データをデータ書込部１０９が記憶媒体１１１に書き込む（Ｓ１０９）。ただし、先頭と末尾の統合ハッシュ値から生成した中間ハッシュについては、データ更新部１１０が、すでに記憶媒体１１１に書き込まれている前の時点の先頭と末尾の統合ハッシュ値から生成した中間ハッシュを上書きして、記憶媒体１１１に書き込む（Ｓ１１０）。
【００２６】
（ハッシュ生成工程）
図４は、ハッシュ生成工程（Ｓ１０８）の詳細を示したフローチャートである。
【００２７】
（ハッシュの生成、統合ハッシュ、中間ハッシュ）
ハッシュはデータ単体のハッシュ（データハッシュという場合がある）、統合ハッシュ、中間ハッシュの順で生成する。ここで、「統合ハッシュ」とは、図５の説明で後述するが、画像、音声及びセンサのデータハッシュから生成したハッシュである。また、「中間ハッシュ」とは、図８等の説明で後述するが、統合ハッシュと統合ハッシュとから生成されるハッシュである。２つの統合ハッシュを連結する機能を有するため、「中間」と呼んでいる。
（１）画像ハッシュ生成部１４１は、画像データと共通鍵を入力として鍵付きハッシュ演算を行い、画像データのハッシュである画像ハッシュを生成する（Ｓ２０１）。
（２）音声ハッシュ生成部１４２は、音声データと共通鍵を入力として鍵付きハッシュ演算を行い、音声データのハッシュである音声ハッシュを生成する（Ｓ２０２）。
（３）センサハッシュ生成部１４３は、センサデータと共通鍵を入力として鍵付きハッシュ演算を行い、センサデータのハッシュであるセンサハッシュを生成する（Ｓ２０３）。
【００２８】
その後、統合ハッシュ生成部１０５は、画像ハッシュと音声ハッシュとセンサハッシュと共通鍵を入力として鍵付きハッシュ演算を行い、画像ハッシュと音声ハッシュとセンサハッシュを統合したデータのハッシュ値である統合ハッシュを生成する（Ｓ２０４）。
【００２９】
（統合ハッシュ生成の詳細）
図５は、統合ハッシュの生成を説明する図である。統合ハッシュ生成部１０５は、画像ハッシュ生成部１４１が生成した複数の画像ハッシュ１〜画像ハッシュｎを連結して鍵付きハッシュ演算を行い、新たに画像ハッシュ（１−ｎ）を生成する。統合ハッシュ生成部１０５は、同様に、音声ハッシュ生成部１４２が生成した複数の音声ハッシュ１〜音声ハッシュｎを連結して鍵付きハッシュ演算を行い、新たに音声ハッシュ（１−ｎ）を生成し、センサハッシュ生成部１４３が生成した複数のセンサハッシュ１〜センサハッシュｎを連結して鍵付きハッシュ演算を行い、新たにセンサハッシュ（１−ｎ）を生成する。最後に、生成した画像ハッシュ（１−ｎ）、音声ハッシュ（１−ｎ）、センサハッシュ（１−ｎ）を連結して鍵付きハッシュ演算を行い、「統合ハッシュ」を生成する。
【００３０】
なお、以下の実施の形態１〜５では、図５に示す統合ハッシュを生成し、統合ハッシュから中間ハッシュを生成する例を述べているが、図５において、例えば、「画像ハッシュ１」のみを用いてもよい。すなわち、収集するデータは画像のみとし、音声及びセンサデータは収集しない（収集してもよいがハッシュ生成の対象としない）。その場合、統合ハッシュ生成部１０５は不要である。その場合、図５では左の画像ハッシュのみが対象となるが、その際、画像ハッシュ１〜画像ハッシュｎをまとめることは必須ではない。まとめてもよいし、一つの画像ハッュでもかまわない。一つの場合には、「画像ハッシュ１」が統合ハッシュ相当としてハッシュ管理部１０７１に格納され、画像ハッシュ１〜画像ハッシュｎとしてまとめられる場合には、画像ハッシュ（１−ｎ）が統合ハッシュ相当としてハッシュ管理部１０７１に格納される。
【００３１】
図６は、ハッシュ管理部１０７１の構成を示す図である。ハッシュ管理部１０７１はリングバッファである。図６のリングバッファは、１０個の統合ハッシュを格納可能な１０個の格納領域を有する構成である。
図６において、
（１）「ｔａｉｌ」は、ハッシュ管理部１０７１（リングバッファ）に格納された一番古いデータをさすポインタである。
（２）「ｔｏｐ」は、リングバッファに格納された一番新しいデータをさすポインタである。
（３）「ｎｅｘｔ」は、次のデータの書き込み位置をさすポインタである。
（４）「ｆｕｌｌ」は、上書き処理の実行が必要なことをさすポインタである。「初期位置は」ｔａｉｌ＝ＮＵＬＬ，ｔｏｐ＝ＮＵＬＬであり，ｎｅｘｔは一番左，ｆｕｌｌは一番右である。統合ハッシュ生成部１０５は、生成した統合ハッシュをハッシュ管理部１０７１（図６（ａ）のｎｅｘｔポインタがさすバッファ）に格納する（Ｓ２０５）。ハッシュ管理部１０７１は、統合ハッシュ制御部１０７によって管理（監視）、制御される。すなわち、統合ハッシュ制御部１０７は、ハッシュ管理部１０７１により順次に格納される統合ハッシュ値の格納状況と格納順位とを監視する。統合ハッシュを連結したデータのハッシュ値である「中間ハッシュ」を生成するため、統合ハッシュ制御部１０７がハッシュ管理部１０７１に格納された統合ハッシュから必要なものを取り出し、中間ハッシュ生成部１０８の入力として与える。
【００３２】
（統合ハッシュの取り出しルール）
図６（ｂ）は、図６におけるｎｅｘｔポインタがさす格納領域にあらたに統合ハッシュが格納された場合を示している。統合ハッシュが新たに格納されると、統合ハッシュ制御部１０７は、まず、統合ハッシュの組１１（ペア）をハッシュ管理部１０７１から取り出し、中間ハッシュ生成部１０８の入力として与える。統合ハッシュの組１１は、最近格納された統合ハッシュ（図６（ｂ）でｔｏｐがさすハッシュ）と、その直前に格納された統合ハッシュとの「ペア」である。次に、統合ハッシュ制御部１０７は、図６（ｂ）の統合ハッシュの組１２（ペア）を中間ハッシュ生成部１０８の入力として与える。ハッシュの組１２は、最近格納されたハッシュ（図６（ｂ）でｔｏｐがさすハッシュ）と、最古（最も古く格納された）の統合ハッシュ（図６（ｂ）でｔａｉｌがさすハッシュ）との「ペア」である。中間ハッシュ生成部１０８は、これら統合ハッシュの値と共通鍵を入力として「鍵付きハッシュ演算」を行い、「中間ハッシュ」（新ハッシュ）を生成する（Ｓ２０６）。
【００３３】
（データ構造）
図７は、実施の形態１におけるデータ構造の例を示す図である。一定時間ごとに点線枠内のデータが順に生成され、中間ハッシュ値が計算される。各点線枠内の画像データと画像ハッシュ、音声データと音声ハッシュ、センサデータとセンサハッシュはそれぞれ１つのブロックでしか表現していないが、複数のデータが存在していても構わない。
【００３４】
（枠１）
画像ハッシュ３１３は、画像データ３１０と共通鍵３０１に基づいて画像ハッシュ生成部１４１が算出した鍵付きハッシュ値である。音声ハッシュ３１４は、音声データ３１１と共通鍵３０１に基づいて音声ハッシュ生成部１４２が算出した鍵付きハッシュ値である。センサハッシュ３１５は、センサデータ３１２と共通鍵３０１に基づいてセンサハッシュ生成部１４３が算出した鍵付きハッシュ値である。統合ハッシュ３１６は、画像ハッシュ３１３と音声ハッシュ３１４とセンサハッシュ３１５と共通鍵３０１に基づいて統合ハッシュ生成部１０５が算出した鍵付きハッシュ値である。
【００３５】
（枠２）
次に画像ハッシュ３２３は、画像データ３２０と共通鍵３０１に基づいて画像ハッシュ生成部１４１が算出した鍵付きハッシュ値である。音声ハッシュ３２４は、音声データ３２１と共通鍵３０１に基づいて音声ハッシュ生成部１４２が算出した鍵付きハッシュ値である。センサハッシュ３２５は、センサデータ３２２と共通鍵３０１に基づいてセンサハッシュ生成部１４３が算出した鍵付きハッシュ値である。統合ハッシュ３２６は、画像ハッシュ３２３と音声ハッシュ３２４とセンサハッシュ３２５と共通鍵３０１に基づいて統合ハッシュ生成部１０５が算出した鍵付きハッシュ値である。「中間ハッシュ３２７」は、統合ハッシュ３１６と統合ハッシュ３２６と共通鍵３０１に基づいて中間ハッシュ生成部１０８が算出した鍵付きハッシュ値である。
【００３６】
（枠３）
次に画像ハッシュ３３３は、画像データ３３０と共通鍵３０１に基づいて画像ハッシュ生成部１４１が算出した鍵付きハッシュ値である。音声ハッシュ３３４は、音声データ３３１と共通鍵３０１に基づいて音声ハッシュ生成部１４２が算出した鍵付きハッシュ値である。センサハッシュ３３５は、センサデータ３３２と共通鍵３０１に基づいてセンサハッシュ生成部１４３が算出した鍵付きハッシュ値である。統合ハッシュ３３６は、画像ハッシュ３３３と音声ハッシュ３３４とセンサハッシュ３３５と共通鍵３０１に基づいて統合ハッシュ生成部１０５が算出した鍵付きハッシュ値である。「中間ハッシュ３３７」は、統合ハッシュ３２６と統合ハッシュ３３６と共通鍵３０１に基づいて中間ハッシュ生成部１０８が算出した鍵付きハッシュ値である。さらに、「中間ハッシュ３１７」は、統合ハッシュ３３６と統合ハッシュ３１６と共通鍵３０１に基づいて、中間ハッシュ生成部１０８が算出した鍵付きハッシュ値である。
【００３７】
（枠ｎ）
次に画像ハッシュ３４３は、画像データ３４０と共通鍵３０１に基づいて画像ハッシュ生成部１４１が算出した鍵付きハッシュ値である。音声ハッシュ３４４は、音声データ３４１と共通鍵３０１に基づいて音声ハッシュ生成部１４２が算出した鍵付きハッシュ値である。センサハッシュ３４５は、センサデータ３４２と共通鍵３０１に基づいてセンサハッシュ生成部１４３が算出した鍵付きハッシュ値である。統合ハッシュ３４６は、画像ハッシュ３４３と音声ハッシュ３４４とセンサハッシュ３４５と共通鍵３０１に基づいて統合ハッシュ生成部１０５が算出した鍵付きハッシュ値である。「中間ハッシュ３４７」は、統合ハッシュ３４６と、ひとつ前の統合ハッシュ（ｎ−１）（図示なし）と、共通鍵３０１とに基づいて、中間ハッシュ生成部１０８が算出した鍵付きハッシュ値である。「中間ハッシュ３１７」は、統合ハッシュ３４６と、統合ハッシュ３１６と、共通鍵３０１とに基づいて、中間ハッシュ生成部１０８が算出した鍵付きハッシュ値である。データ更新部１１０は、以前の「中間ハッシュ３１７」を上書きして記録する。
【００３８】
図７に示したように、中間ハッシュはリング状につながれる。
【００３９】
図８は、中間ハッシュが生成される動作を模式的に示した図であり、図６（ｂ）、あるいは図７をさらに具体的に説明する図である。Ｔ１〜Ｔ１０は、リングバッファに格納された統合ハッシュを示している。以下は統合ハッシュ制御部１０７、中間ハッシュ生成部１０８、データ更新部１１０の動作である。
（１）統合ハッシュ制御部１０７は、Ｔ１の次にＴ２が格納されるとＴ１、Ｔ２を中間ハッシュ生成部１０８に出力し、中間ハッシュ生成部１０８が中間ハッシュ（１、２）を生成する。中間ハッシュ（１、２）は統合ハッシュ１と統合ハッシュ２から生成した中間ハッシュを示す。
（２）統合ハッシュ制御部１０７は、Ｔ３が格納されるとＴ３、Ｔ２を中間ハッシュ生成部１０８に出力するとともに、Ｔ３（最新の統合ハッシュ）、Ｔ１（最古の統合ハッシュ）を中間ハッシュ生成部１０８に出力する。中間ハッシュ生成部１０８は、中間ハッシュ（２、３）、（３、１）を生成する。これにより、ハッシュが、１−２、２−３、３−１と、リング状に連結される。
（３）統合ハッシュ制御部１０７は、Ｔ４が格納されるとＴ４、Ｔ３を中間ハッシュ生成部１０８に出力するとともに、Ｔ４、Ｔ１を中間ハッシュ生成部１０８に出力する。中間ハッシュ生成部１０８は、中間ハッシュ（３、４）、（４、１）を生成する。データ更新部１１０は、中間ハッシュ（３、１）を上書きして中間ハッシュ（４、１）とする。これにより、ハッシュが、１−２、２−３、３−４、４−１と、リング状に連結される。
（４）統合ハッシュ制御部１０７は、Ｔ５が格納されるとＴ５、Ｔ４を中間ハッシュ生成部１０８に出力するとともに、Ｔ５、Ｔ１を中間ハッシュ生成部１０８に出力する。中間ハッシュ生成部１０８は、中間ハッシュ（４、５）、（５、１）を生成する。データ更新部１１０は、中間ハッシュ（４、１）を上書きして中間ハッシュ（５、１）にとする。これにより、ハッシュが、１−２、２−３、３−４、４−５、５−１と、リング状に連結される。以降、統合ハッシュＴ１０が格納されるまで、同様の処理である。
【００４０】
以上がドライブレコーダ装置１００の説明である。以降、再生・検証装置２００の説明を行う。
【００４１】
（再生・検証装置２００）
図９は、実施の形態１の再生・検証装置２００（検証装置）の構成の一例を示すブロック構成図である。
（１）再生・出力部２０１は画像、音声の再生とセンサデータ、ハッシュ値検証結果の出力を行う。
（２）データ読出部２０２は、記憶媒体２０３内のデータを読み出す。
（３）記憶媒体２０３はドライブレコーダ装置１００で記録されたデータが格納されている。
（４）検証判定部２０４は、データが改ざんされているか否かを最終判定する。
（５）データハッシュ検証部２０５は、各データ単体の改ざんの有無を検証する。
（６）中間ハッシュ検証部２０６は、再生・検証装置２００で生成した中間ハッシュと記憶媒体２０３で格納した中間ハッシュが等しいかどうかを検証する。
（７）鍵管理部２０７はドライブレコーダ装置１００で保持する鍵と同じ共通鍵を保持する。
（８）統合ハッシュ生成部２０８は、データハッシュ生成部２３０のハッシュデータを入力して鍵付きハッシュ計算を行う。
（９）ハッシュ管理部２０９は、統合ハッシュ生成部２０８が出力したハッシュ値を格納する。
（１０）統合ハッシュ制御部２１０は、ハッシュ管理部２０９を管理・制御する。
（１１）中間ハッシュ生成部２１１は、統合ハッシュのデータからハッシュ値を生成する。
（１２）データ取得部２２０は画像データ取得部２２１、音声データ取得部２２２、センサデータ２２３から構成される。記録媒体に格納された画像、音声、センサデータを取得する。
（１３）データハッシュ生成部２３０は、画像ハッシュ生成部２３１、音声ハッシュ生成部２３２、センサハッシュ生成部２３３から構成される各データのハッシュ値を生成する。
（１４）ハッシュ取得部２４０は、画像ハッシュ取得部２４１、音声ハッシュ取得部２４２、センサハッシュ２４３、中間ハッシュ２４４から構成され、記録媒体に格納された画像、音声、センサハッシュと中間ハッシュを取得する。
【００４２】
（動作の説明）
次に動作について説明する。なお、再生・検証装置２００の鍵付きハッシュ演算はドライブレコーダ装置１００の鍵付きハッシュ演算と同様である。
【００４３】
図１０は、再生・検証装置２００の動作を示したフローチャートである。データ読出部２０２が記憶媒体２０３からデータを読み出し、画像、音声、センサデータをデータ取得部２２０へ、ハッシュ値をハッシュ取得部２４０へ送る（Ｓ３０１）。データ取得部２２０はデータを受け取ると、データハッシュ生成部２３０へデータを送る。データハッシュ生成部２３０は画像、音声、センサデータの鍵付きハッシュを計算し、ハッシュ値を生成する（Ｓ３０２）。
【００４４】
次に、データハッシュ検証部２０５は、データハッシュ生成部２３０で生成したハッシュと画像ハッシュ取得部２４１、音声ハッシュ取得部２４２、センサハッシュ取得部２４３で取得したハッシュを比較して、データハッシュ値が等しいかどうか検証する。等しくないデータハッシュ値が存在する場合（Ｓ３０３  ＮＯ）、データハッシュ検証部２０５は、検証判定部２０４へ検証結果を送り、検証判定部２０４は改ざん有と判定する。データ再生・出力部２０１は、改ざん有の結果を出力する（Ｓ３０８）。Ｓ３０３でデータハッシュが全て等しい場合（Ｓ３０３  ＹＥＳ）、統合ハッシュ生成部２０８、中間ハッシュ生成部２１１でそれぞれ統合ハッシュ、中間ハッシュを生成する（Ｓ３０４）。
【００４５】
次に、中間ハッシュ検証部２０６は、中間ハシュ生成部２１１で生成した中間ハッシュと中間ハッシュ取得部２４４で取得したハッシュを比較して中間ハッシュ値が等しいかどうか検証する。等しくない中間ハッシュ値が存在する場合（Ｓ３０５  ＮＯ）、中間ハッシュ検証部２０６は検証判定部２０４へ検証結果を送る。データハッシュが等しいにも関わらず中間ハッシュが異なるときとは、例えば、最新の、改ざん検出コード（データハッシュ、中間ハッシュ）を含めたレコード全体が削除されたような場合である。再生・検証装置２００は、このように、従来では検出できなかった、最新の、改ざん検出コード（データハッシュ、中間ハッシュ）を含めたレコード全体が削除された事実を検出できる。この検証結果を受信すると、検証判定部２０４は改ざん有と判定する。データ再生・出力部２０１は、改ざん有の結果を出力する（Ｓ３０８）。Ｓ３０５でハッシュが全て等しい場合（Ｓ３０５  ＹＥＳ）、検証判定部２０４は改ざん無と判定し、データ再生・出力部２０１は、改ざん無の結果を出力し（Ｓ３０６）、画像、音声データを再生する（Ｓ３０７）。
【００４６】
以上のように、本実施の形態１によれば、ドライブレコーダ装置１００で画像データのハッシュ、音声データのハッシュ、センサデータのハッシュ、統合ハッシュ、中間ハッシュを生成し、再生・検証装置２００で改ざん検証を行うことにより、データの追加・削除・変更等の改ざんを検知することができる。すなわち、悪意のある者によるデータの改ざんや消去の事実を検出する感度を向上することができる。特に中間ハッシュをリング状につなげたことで、従来の改ざん検出方法／装置では検知できない、最新のハッシュデータを含めたデータ全体が削除された場合でも、検出することが可能となる。また、統合ハッシュ制御部１０７を設けたことで、一つ前の統合ハッシュとの連結だけでなく、先頭（ｔｏｐ）と末尾（ｔａｉｌ）の統合ハッシュも容易に連結でき、容易に任意の場所の中間ハッシュを生成できる。なお、今回の実施の形態では、統合ハッシュは記憶媒体１１１に格納していないが、統合ハッシュも記憶媒体１１１に格納しても良い。その場合は再生・検証装置２００で統合ハッシュの比較も行う。
【００４７】
実施の形態２．
次に図１１〜図１４を用いて実施の形態２を説明する。実施の形態１では、常時記録のデータで、記録装置（ハッシュ管理部１０７１）の全領域に記録するまでの処理を説明したが、実施の形態２では、記録装置（ハッシュ管理部１０７１）の全領域に統合ハッシュを記録した後は、以降のデータは、一番古いデータ全体を上書きして記録する場合の処理について説明する。すなわち実施の形態２は、ハッシュ管理部１０７１の全記憶領域に統合ハッシュが記録された場合には、一番古い統合ハッシュを削除すると共に、図１４で後述するように、削除される統合ハッシュに関係する画像データのデータ、中間ハッシュも記憶媒体１１１から削除する構成である。
【００４８】
実施の形態２も、ドライブレコーダ、及び再生・検証装置に関するが、その構成は、実施の形態１のドライブレコーダ１００、再生・検証装置２００と同様であるため省略する。
【００４９】
図１１は、上書き記録時のハッシュ処理の一例を示すフローチャートである。図１１では、統合ハッシュ生成処理までは実施の形態１と同様の処理のため記述を省略してある。図１２は、統合ハッシュ制御部１０７による上書処理を説明するための図である。
【００５０】
図１１のフローチャートを説明する。統合ハッシュ生成部１０５は、自己の出力をハッシュ管理部１０７１（図１２の状態１において、ｎｅｘｔポインタがさすバッファ）に格納する（Ｓ４０１）。統合ハッシュ制御部１０７は、ハッシュ管理部１０７１からＳ４０１で格納した統合ハッシュとその直前の統合ハッシュを取り出し（図１２の状態２に示す「（ｉ）中間ハッシュ生成部１０８へ」の部分）、中間ハッシュ生成部１０８へ送る。中間ハッシュ生成部１０８は、送られてきたデータ（中間ハッシュ）と共通鍵に基づいて鍵付きハッシュ演算を行い、中間ハッシュを生成する（Ｓ４０２）。
【００５１】
その後、統合ハッシュ制御部１０７は、ハッシュ管理部１０７１の更新を行う。具体的には図１２の状態２、状態３に示すように、上書き処理が必要な場合はメモリがいっぱいになっている（図１２の状態２においてｎｅｘｔ＝ｆｕｌｌ）。このため、統合ハッシュ制御部１０７は、最古のハッシュ（ｔａｉｌが挿すハッシュ）（格納順位の最も古い）を削除する。統合ハッシュ制御部１０７は、「ｔａｉｌ」が削除後の最古の統合ハッシュを指すように変更する（Ｓ４０３）。
【００５２】
次に、統合ハッシュ制御部１０７は、更新後の最新の統合ハッシュと最古の統合ハッシュ（図１２の状態３に示す「（ｉｉ）中間ハッシュ生成部１０８へ」の部分）（ｉｉ）のハッシュ）を取り出し、中間ハッシュ生成部１０８へ送る。中間ハッシュ生成部１０８は送られてきたデータと共通鍵に基づいて鍵付きハッシュ演算を行い、ハッシュを生成する（Ｓ４０４）。次にデータ更新部１１０が、記憶媒体１１１に格納されている最古のデータ（図１４に示す枠１内のデータ及び中間ハッシュ４１７、４２７）を削除し、Ｓ４０４で生成された中間ハッシュを、データ削除後の最古のデータの中間ハッシュに上書きして書き込む。その後、データ書込部１０９が今回生成したデータを記憶媒体１１１に書き込む（Ｓ４０５）。
【００５３】
（統合ハッシュ制御部１０７によるハッシュ管理部１０７１の更新処理）
図１２の状態４、状態５を用いて、統合ハッシュ制御部１０７が行うハッシュ管理部１０７１のバッファの更新処理を具体的に説明する。バッファはリングバッファである。また、図６の説明で述べたように、ｔａｉｌ，ｔｏｐ，ｎｅｘｔ，ｆｕｌｌの４つのポインタを使用する。図１２の状態４において、データ（統合ハッシュ）が、ｎｅｘｔポインタがさすバッファに格納されると、統合ハッシュ制御部１０７は、ｎｅｘｔポインタとｆｕｌｌポインタが同じバッファをさしているかどうか調べる。同じバッファをさしている場合、統合ハッシュ制御部１０７は、ｔｏｐポインタをｎｅｘｔポインタのさすバッファをさすようにする。次に、統合ハッシュ制御部１０７はｎｅｘｔポインタを１つ隣（図では右）に移動し、移動後のバッファの内容を削除する。次に統合ハッシュ制御部１０７はｔａｉｌ，ｆｕｌｌポインタを１つ隣に移動する。
【００５４】
図１３は、実施の形態２におけるデータ構造の１例を示す図である。図１３は、ｎ＋１番目のデータを書き込むため、上書き処理で最古の１番目のデータが消去される場合を示す図である。上書き処理で、具体的にはデータ４１０〜データ４１７のデータが削除される。また、「中間ハッシュ４２７」（統合ハッシュ４２６、４１６から生成））は、削除された統合ハッシュ４１６を使用して生成されているため、このデータも削除する。「中間ハッシュ４５７」（統合ハッシュ４２６、４４６から生成））は、削除後の最古のデータ（２番目のデータ）と、最新のデータ（ｎ＋１番目のデータ）の統合ハッシュ４２６、４４６に基づき再生成された鍵付きハッシュ値である。このように上書きが発生した場合でも、中間ハッシュを１つ生成しなおすだけでよい。
【００５５】
図１４は、図１２、図１３をさらに詳しく説明するための図である。図１４の４つの四角全体はハッシュ管理部１０７１（リングバッファ）を示す。また、ｄ１、Ｄ１等は、統合ハッシュを示す。また（１、２）等は中間ハッシュを示し、統合ハッシュｄ１、ｄ２から生成されたことを示す。また、（１、２）等につけた「×印」は、更新されることを示す。
（ａ）で、リングバッファに統合ハッシュｄ１（以下、ｄ１等という）が格納される。
（ｂ）でｄ２が格納され、
（ｃ）でｄ３が格納される。
（ｄ）でＤ１が格納されると最新のＤ１と直前のｄ３とが統合ハッシュ制御部１０７により取得され、
（ｅ）最古のｄ１が削除され、その後、最新のＤ１と未削除の最古のｄ２とが統合ハッシュ制御部１０７に取得される。
【００５６】
（ｆ）でＤ２が格納されると最新のＤ２と直前のＤ１とが統合ハッシュ制御部１０７により取得され、
（ｇ）最古のｄ２が削除され、その後、最新のＤ２と未削除の最古のｄ３とが統合ハッシュ制御部１０７に取得される。以下同様に、（ｈ）〜（ｋ）と続く。
【００５７】
以上より、本実施の形態２によれば、上書き発生時でもハッシュを再構成することにより、実施の形態１と同様にデータの追加・削除・変更等の改ざんを検知することができる。また、統合ハッシュ制御部１０７を設けたことで、上書き時のハッシュ生成処理も容易に実現できる。上書き時は中間ハッシュを１つ生成しなおすだけでよく、計算量を軽減することができる。もちろん、上書き時の処理により、改ざん有と判定されることはない。
【００５８】
実施の形態３．
次に図１５〜図１６を参照して、実施の形態３を説明する。以上の実施の形態２では、上書き処理ごとにハッシュの再構成処理を行う必要がある。実施の形態３は、上書き発生時の処理をまとめて行う方法について述べる。
【００５９】
ドライブレコーダ１００と再生・検証装置２００の構成は、実施の形態１と同様であるため省略する。
【００６０】
図１５は、ハッシュ管理部１０７１の内部構成の一例を示した図である。ｆｕｌｌ（１）までデータが格納されると上書きが発生する状態になったことがわかり、ｆｕｌｌ（２）までデータが格納されると、統合ハッシュ制御部１０７は上書き処理を実行する。統合ハッシュ制御部１０７はｆｕｌｌ（２）にデータが格納されるまでは上書き処理を実行しない。
【００６１】
図１６は、実施の形態３の上書き時の処理を示したフローチャート図である。図１６では、統合ハッシュ生成までは実施の形態１と同様の処理のため記述を省略してある。
【００６２】
統合ハッシュ生成部１０５は自己の出力をハッシュ管理部１０７１に格納する（Ｓ５０１）。統合ハッシュ制御部１０７は、ハッシュ管理部１０７１からＳ５０１で格納された統合ハッシュと、その直前の統合ハッシュを取り出し、中間ハッシュ生成部１０８へ送る。中間ハッシュ生成部１０８は、送られてきたデータと共通鍵からハッシュを生成する（Ｓ５０２）。その後、統合ハッシュ制御部１０７は、ハッシュ管理部１０７１の図０１５に示したｆｕｌｌ（２）までデータ（統合ハッシュ）が格納されたかどうかチェックし、格納されていなければ（Ｓ５０３  ＮＯ）、その後の更新処理は行わない。Ｓ５０３でｆｕｌｌ（２）までデータ（統合ハッシュ）が格納されていれば（Ｓ５０３  ＹＥＳ）、統合ハッシュ制御部１０７は、ハッシュ管理部１０７１の更新を行う。
【００６３】
具体的には図１５にあるように、上書き処理が必要な場合はメモリがいっぱいになっているので、ｆｕｌｌ（１），ｆｕｌｌ（２）間の個数分、最古のハッシュ（ｔａｉｌの示すハッシュ）からハッシュを削除する。統合ハッシュ制御部１０７は、ｔａｉｌを削除後の最古のハッシュをさすようにする（Ｓ５０４）。次に、統合ハッシュ制御部１０７は、更新後の最新の統合ハッシュと未削除の最古の統合ハッシュとを取り出し、中間ハッシュ生成部１０８へ送る。中間ハッシュ生成部１０８は、送られてきたデータ（統合ハッシュ）と共通鍵とから、中間ハッシュを生成する（Ｓ５０５）。なお、図１５において、ｆｕｌｌ（１），ｆｕｌｌ（２）を同一の格納領域をさすように設定した場合は、実施の形態２（図１２）の場合になる。ｆｕｌｌ（１），ｆｕｌｌ（２）との間隔は、つまり、一度に削除するべき統合ハッシュの個数は、実装にあわせて自由に設定することができる。すなわち、統合ハッシュ制御部１０７は、ハッシュ管理部１０７１が複数の統合ハッシュ（ハッシュ値）を格納している場合において、設定（予め設定された規則）に従って、ハッシュ管理部１０７１シュに格納された統合ハッシュを格納時期の古い順に少なくとも一つ削除する。また、Ｓ５０５（及び図１５）のように、中間ハッシュ生成部１０８（ハッシュ生成部）は、統合ハッシュ制御部１０７によって統合ハッシュが格納時期の古い順に少なくとも一つ削除された場合には、削除された統合ハッシュのうち格納時期の最も新しいハッシュ値の直後に格納された未削除のハッシュ値と、最も最近に格納された未削除のハッシュ値とから、新たな新ハッシュ値を生成する。
【００６４】
（データの更新）
次に、データ更新部１１０は、統合ハッシュ制御部１０７からの通知を受け、記憶媒体１１１に格納されている最古のデータ（図１３の場合と同様）からｆｕｌｌ（１），ｆｕｌｌ（２）間に対応するデータを削除し、Ｓ５０４の更新後の中間ハッシュ（未削除の最古の統合ハッシュと最新の統合ハッシュから生成された中間ハッシュ）をデータ削除後の最古のデータに関する中間ハッシュに上書きして書き込む（再リング化）。その後、データ書込部１０９が、今回生成したデータを記憶媒体１１１に書き込む。
【００６５】
以上より、本実施の形態３によれば、上書き発生時に複数のデータをまとめて、一度にハッシュを再構成することにより、処理の効率化を実現できる。統合ハッシュ制御部１０７を設けたことで、本実施の形態３の処理は容易に実現でき、まとめる単位も容易に変更可能である。
【００６６】
実施の形態４．
図１７〜図１９を参照して実施の形態４を説明する。常時記録データを裁判等の証拠として提出する際、必要な部分だけを切り取りたいと考えるかもしれない。しかし、改ざん目的の切り取りと区別するためには、鍵を知っている正当な第三者（機関）だけが切り取り等の編集機能を持つ必要がある。実施の形態４では、正当な第三者が容易に編集可能な処理について説明する。
【００６７】
図１７は編集装置５００（編集機能を持つ検証装置）の構成を示した図である。実施の形態１の再生・検証装置２００（図９の検証装置）と同じ構成要素は説明を省略する。図１７の編集装置５００は、実施の形態１の図９の再生・検証装置２００に対して、データ入力部４０１、データ更新部４０２を加えた構成である。
【００６８】
データ入力部４０１（検証側データ入力部）は、編集箇所などのユーザが入力したデータを受け取る。データ更新部４０２（検証側データ更新部）は、データ入力部４０１からの入力とハッシュ値とに基づいてデータの更新（編集）を行い、結果を記憶媒体２０３に格納する。
【００６９】
図１８は、編集装置５００の動作の一例を示すフローチャートである。始めにデータ読出部２０２（検証側データ読出部）が読み出したデータに対し、改ざんの有無を検証する（Ｓ６０１）。検証方法は実施の形態１で説明した方法と同様のため、ここでは説明を省略する。改ざんが見つかった場合（Ｓ６０２  有）、検証判定部２０４は改ざん有と判定し、データ再生・出力部２０１に結果を出力する（Ｓ６０６）。Ｓ６０２で改ざんが見つからなかった場合（Ｓ６０２  無）、データ入力部４０１からの入力を待つ。入力されるデータは切り取り範囲情報、鍵情報等を含むものである。入力（例えばデータの削除を指令する削除指令）があった場合（Ｓ６０３  有）、データ更新部４０２が、ユーザの指示に従ってデータを編集する（Ｓ６０４）。編集されたデータは、記憶媒体２０３に格納される（Ｓ６０５）。
【００７０】
図１９は実施の形態４におけるデータ構造の１例を示す図である。図１９で編集作業の詳細を述べる。データ更新部４０２は、データ入力部４０１から「３番目から６番目のデータを削除したい」というデータ（削除指令の一例）を受け取る。データ更新部４０２は、３番目から６番目のデータ（途中の一部分のデータ）を削除する。次に統合ハッシュ６２６と統合ハッシュ６７６に基づいて鍵付きハッシュ演算を行い、中間ハッシュ７１７（新ハッシュ値）を生成する。これにより、削除後も中間ハッシュはリング状につながることになる。
【００７１】
図１９における中間ハッシュ７１７の生成（図１８のＳ５０４の処理内容）について、さらに具体的に説明する。データ更新部４０２は、検証処理の過程で、データハッシュ生成部２３０（第１ハッシュ生成部の一例）が入力した複数のデータと、統合ハッシュ生成部２０７（第１ハッシュ生成部の一例）により生成された統合ハッシュ（ハッシュ値）と、中間ハッシュ生成部２１１（第２ハッシュ生成部）により各ペアから生成された複数の中間ハッシュ（新ハッシュ値）とを記憶媒体２０３に格納している。あるいは、図示していないＲＡＭ、フラッシュメモリ、磁気ディスク装置等の記憶装置に格納してもよい。なお、検証処理の過程で「改ざん無し」（Ｓ６０２  無）の判定であれは、編集の対象は、検証対象となったドライブレコーダ装置１００により記録生成されたデータでも良いのはもちろんである。すなわち、図１９に示した一連のデータは、「改ざん無し」（Ｓ６０２  無）の判定であれは、ドライブレコーダ装置１００により記録生成されたデータでも良いし、検証過程で再生・検証装置２００（検証装置）によって記録、生成されたデータでもかまわない。したがって、図１９に示す一連のデータは記録媒体２０３に格納されているデータであるが、ドライブレコーダ装置１００により記録生成されたデータでもよいし、あるいは再生・検証装置２００（編集装置５００も再生・検証装置２００である）によって生成されたデータでもよい。なお図１９において、「画像データ、音声データ、センサデータ」は、当然に、ドライブレコーダ装置１００により記録されたデータである。Ｓ５０４において、データ更新装置４０２（検証装置）は、データ入力部４０１が受け付けた、「３番目から６番目のデータ」の削除指令に従うことにより、図１９に示すように、記憶部媒体２０３に格納された複数のデータ（連続データの一例）のうち「３番目から６番目のデータ（画像データ、音声データ、センサデータ）」（所定のデータ、途中の一部分のデータ）と、「３番目から６番目のデータ」のデータの統合ハッシュ値（ハッシュ値）と、「３番目から６番目のデータ」のデータのハッシュ値を元として生成された中間ハッシュ（新ハッシュ値）６３７〜６７７を削除する。そして、データ更新部４０２は、削除したデータのうち最も古いデータよりもひとつ古いデータ（一方の残余データ）から生成された統合ハッシュ値６２６（一方の残余データに対応するハッシュ値）と、削除したデータのうち最も新しいデータよりもひとつ新しいデータ（他方の残余データ）から生成された統合ハッシュ値６７６（他方の残余データに対応するハッシュ値）とから、中間ハッシュ生成部２１１（第２ハッシュ生成部）に中間ハッシュ７１７（新ハッシュ値）を生成させる。データ更新部４０２は、この中間ハッシュ７１７を記憶媒体２０３に格納する。これにより、削除後も中間ハッシュは、リング状につながることになる。
【００７２】
以上より、データの改ざん有無も判定し、かつ正当な第３者がデータを容易に編集できる。中間ハッシュの再生成処理もこれまでと同様１つ生成しなおすだけでよく、計算量を軽減することができる。
【００７３】
実施の形態５．
次に図２０、図２１を使用して実施の形態５を説明する。実施の形態１の処理は、イベント記録のような短時間の記録に対しても適用可能である。実施の形態２では、イベント記録データに適用した場合の処理について説明する。なお、再生・検証装置２００の処理は実施の形態１と同様なため、ドライブレコーダ装置１００の処理のみ記載する。
【００７４】
図２０は、実施の形態５のドライブレコーダ装置１００ａのブロック構成図である。実施の形態１のドライブレコーダ装置１００（図２）に対して、イベント検出部５０１、出力範囲決定部５０２を追加した構成である。
【００７５】
イベント検出部５０１は、入力されたセンサ情報を解析してイベント記録を行うか否かを判定する。出力範囲決定部５０２は、イベント記録データとして記憶媒体１１１に記録するデータの範囲を決定する。
【００７６】
次に動作の詳細について説明する。図２１は、実施の形態５におけるドライブレコーダ装置１００ａの動作の流れの一例を示すフローチャートである。
【００７７】
ドライブレコーダ装置１００ａが起動すると、撮像装置１０１、音声録音装置１０２、センサ情報取得装置１０３が並行に動作し、画像データ生成部１２１、音声データ生成部１２２、センサデータ生成部１２３がそれぞれ画像、音声、センサデータを生成する（Ｓ７０１）。その後、画像データ取得部１３１、音声データ取得部１３２、センサデータ取得部１３３が、それぞれ画像、音声、センサデータを取得する（Ｓ７０２）。Ｓ７０２と並行して、イベント検出部５０１は、センサデータ生成部１２３からセンサ情報を取得して、イベント記録を行うか否かを判定する（Ｓ７０３）。その後、出力範囲決定部５０２が、イベント検出部５０１の結果を受け取り、イベント記録を行う場合は、記憶媒体１１１に記録するデータの範囲を決定する（Ｓ７０４）。イベント記録を実行する場合（Ｓ７０５  ＹＥＳ）は、ハッシュ生成工程に移る。ハッシュ生成方法は実施の形態１と同様である。なお、ハッシュの生成の間も、各データの生成と取得処理は行われている。つまり、ドライブレコーダ装置１００が停止するまで各データの生成と取得処理は継続する。ハッシュ生成工程で必要なハッシュ値を算出し（Ｓ７０６）、画像データ取得部１３１、音声データ取得部１３２、センサデータ取得部１３３と画像ハッシュ生成部１４１、音声ハッシュ生成部１４２、センサハッシュ生成部１４３と中間ハッシュ生成部１０８の出力データを記憶媒体１１１に書き込む（Ｓ７０７）。ただし、先頭と末尾の統合ハッシュ値から生成した中間ハッシュについては、データ更新部１１０が、すでに記憶媒体１１１に書き込まれている前の時点の先頭と末尾の統合ハッシュ値から生成した中間ハッシュを上書きして、記憶媒体１１１に書き込む（Ｓ７０８）。例えば２０秒のイベント記録データを１秒ごとにまとめて記憶媒体１１１に記録する場合、先頭の統合ハッシュは最初の１秒分のデータに対する統合ハッシュであり、末尾の統合ハッシュは最後の１秒（１９秒〜２０秒まで）分のデータに対する統合ハッシュとなる。
【００７８】
以上のように、本実施の形態５によれば、イベント記録の場合でも、ドライブレコーダ装置１００ａで画像データのハッシュ、音声データのハッシュ、センサデータのハッシュ、統合ハッシュ、中間ハッシュを生成し、再生・検証装置２００で改ざん検証を行うことにより、データの追加・削除・変更等の改ざんを検知することができる。特に中間ハッシュをリング状につなげたことで、従来の改ざん検出方法／装置では検知できない、末尾のハッシュデータを含めたデータ全体が削除された場合でも、検出することが可能となる。また、統合ハッシュ制御部１０７を設けたことで、一つ前の統合ハッシュとの連結だけでなく、先頭（ｔｏｐ）と末尾（ｔａｉｌ）の統合ハッシュも容易に連結でき、容易に任意の場所の中間ハッシュを生成できる。
【００７９】
なお、今回の実施の形態では、統合ハッシュは記憶媒体１１１に格納していないが、統合ハッシュも記憶媒体１１１に格納しても良い。その場合は再生・検証装置２００で統合ハッシュの比較も行う。なお、上記では２０秒のイベント記録データを１秒ごとにまとめる例を示したが、２０秒ごとにまとめる場合も考えられる。その際は統合ハッシュが１つしか生成されないため、記録する画像データの枚数などのメタデータから統合ハッシュを生成して、その後中間ハッシュを生成してもよい。この場合、再生・検証装置２００はメタデータの内容を共有していれば、ドライブレコーダ装置１００で行った演算と同様の演算が可能である。
【００８０】
以上の実施の形態１〜５では、記録装置、再生・検証装置、編集装置として実現されるハッシュ生成装置の実施の形態を説明したが、ハッシュ生成装置が行う「ハッシュ生成方法」の実施の形態として把握することもできる。また、ハッシュ生成装置を、コンピュータに実行させる「ハッシュ生成プログラム」の実施の形態として把握することもできる。さらに、「ハッシュ生成プログラム」を記録したコンピュータ実行可能な「記録媒体」の実施の形態として把握することも可能である。
【図面の簡単な説明】
【００８１】
【図１】実施の形態１の記録装置等のハードウェア構成の一例。
【図２】実施の形態１の記録装置のブロック図。
【図３】実施の形態１の記録装置の動作を示すフローチャート。
【図４】実施の形態１のハッシュ生成工程のフローチャート。
【図５】実施の形態１の統合ハッシュの生成を説明する図。
【図６】実施の形態１の統合ハッシュ制御部１０７の動作を説明する図。
【図７】実施の形態１のデータ構造を示す図。
【図８】図６を補足する図。
【図９】実施の形態１の再生・検証装置２００のブロック図。
【図１０】実施の形態１の再生・検証装置２００の動作を示すフローチャート。
【図１１】実施の形態２のハッシュ上書き処理のフローチャート。
【図１２】実施の形態２の統合ハッシュ制御部１０７のハッシュ上書き処理を説明する図。
【図１３】実施の形態２のデータ構造を示す図。
【図１４】図１２、図１３を補足する図。
【図１５】実施の形態３の統合ハッシュ制御部１０７の動作を説明する図。
【図１６】実施の形態３の書き処理のフローチャート。
【図１７】実施の形態４の編集装置５００のブロック図。
【図１８】実施の形態４の編集装置５００の動作を示すフローチャート。
【図１９】実施の形態４のデータ構造を示す図。
【図２０】実施の形態５の記録装置のブロック図。
【図２１】実施の形態５の記録装置の動作を示すフローチャート。
【符号の説明】
【００８２】
１０１  撮像装置、１０２  音声録音装置、１０３  センサ情報取得装置、１２０  データ生成部、１２１  画像データ生成部、１２２  音声データ生成部、１２３  センサデータ生成部、１３０  データ取得部、１３１  画像データ取得部、１３２  音声データ取得部、１３３  センサデータ取得部、１４０  データハッシュ生成部、１４１  画像ハッシュ生成部、１４２  音声ハッシュ生成部、１４３  センサハッシュ生成部、１０４  鍵管理部、１０５  統合ハッシュ生成部、１０７  統合ハッシュ制御部、１０７１  ハッシュ管理部、１０８  中間ハッシュ生成部、１０９  データ書込部、１１０  データ更新部、１１１  記憶媒体。
【図１】
2010107832.tif 000003
【図２】
2010107832.tif 000004
【図３】
2010107832.tif 000005
【図４】
2010107832.tif 000006
【図５】
2010107832.tif 000007
【図６】
2010107832.tif 000008
【図７】
2010107832.tif 000009
【図８】
2010107832.tif 000010
【図９】
2010107832.tif 000011
【図１０】
2010107832.tif 000012
【図１１】
2010107832.tif 000013
【図１２】
2010107832.tif 000014
【図１３】
2010107832.tif 000015
【図１４】
2010107832.tif 000016
【図１５】
2010107832.tif 000017
【図１６】
2010107832.tif 000018
【図１７】
2010107832.tif 000019
【図１８】
2010107832.tif 000020
【図１９】
2010107832.tif 000021
【図２０】
2010107832.tif 000022
【図２１】
2010107832.tif 000023