説明

ハッシュ生成装置及び検証装置及びハッシュ生成プログラム及びハッシュ生成方法

【課題】改ざん検出コードを含めた最新のレコード全体が削除された場合でも、削除を検出可能な記録装置を提供する。
【解決手段】統合ハッシュ生成部はデータハッシュを順次に入力し、データハッシュから統合ハッシュT1、T2等(T1等と記す)を生成して順次出力する。ハッシュ管理部は、統合ハッシュ生成部から順次出力されたT1,T2等を順次格納する。統合ハッシュ制御部は、順次格納されるT1等の格納状況、格納順位を監視し、最初のT1格納後に次のT2が格納されるとT1、T2のペアを出力し、T2の後にT3が格納されるとT3、T2のペアを出力すると共にT3、T1のペアを出力し、以降順次、Tk(kは4以上の整数)が格納されるとTk、Tk−1のペアを出力すると共にTk、T1のペアを出力する。中間ハッシュ生成部は、統合ハッシュ制御部から出力された各ペアを入力し、ペアごとにペアから中間ハッシュを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、例えば、画像や音声などのデータのハッシュ値を生成するハッシュ生成装置、検証装置、ハッシュ生成プログラム、ハッシュ生成方法に関する。
【背景技術】
【0002】
従来のデータ改ざん検出方法・検出装置は、データに所定のハッシュ演算を施して改ざん検出コードを算出し、さらにその改ざん検出コードと1つ前のデータの改ざん検出コードとをマージしたものに所定のハッシュ演算を施して改ざん検出コードを算出する。そして、算出した改ざん検出コードによって、データの変更、削除、追加等の改ざん検出を行っていた(例えば、特許文献1)。
【特許文献1】国際公開第WO2004/068350号
【発明の開示】
【発明が解決しようとする課題】
【0003】
(1)しかし、従来の改ざん検出方法/装置では、最新の、改ざん検出コードを含めたレコード全体が削除された場合に、削除されたことを検出することができないという課題があった。
(2)さらに、従来の改ざん検出装置では、データ更新・編集処理を適切に行うことができないため、正当な権限を持つ人のデータ更新・編集と、悪意を持った人の改ざんとを区別できず、何れも改ざんされたと判断してしまうという課題があった。
【0004】
本発明は、改ざん検出コードを含めたデータ全体の追加・削除・変更等の改ざんを検知可能であり、また、正当な権限を持つ人のデータ更新・編集と、悪意を持った人のデータ更新・編集を区別して改ざんを検知可能な装置の提供を目的とする。
【課題を解決するための手段】
【0005】
この発明のハッシュ生成装置は、
データを順次に入力し、順次に入力した前記データのハッシュ値を生成して順次に出力する第1ハッシュ生成部と、
前記第1ハッシュ生成部によって順次に出力された前記ハッシュ値を順次に格納するハッシュ格納部と、
前記ハッシュ格納部により順次に格納される前記ハッシュ値の格納状況と格納順位とを監視することにより、前記ハッシュ格納部に最初の第1ハッシュ値が格納された後に次の第2ハッシュ値が格納されると前記ハッシュ格納部から第1ハッシュ値と第2ハッシュ値とをペアとして出力し、第2ハッシュ値の後に次の第3ハッシュ値が格納されると第3ハッシュ値と第2ハッシュ値とをペアとして出力すると共に第3ハッシュ値と第1ハッシュ値とをペアとして出力し、以降順次、第k(kは4以上の整数)ハッシュ値が格納されると第kハッシュ値と第k−1ハッシュ値とをペアとして出力すると共に第kハッシュ値と第1ハッシュ値とをペアとして出力するハッシュ制御部と、
前記ハッシュ制御部から出力された各ペアを入力し、入力したペアごとに、ペアから新たな新ハッシュ値を生成する第2ハッシュ生成部と
を備えたことを特徴とする。
【発明の効果】
【0006】
この発明は新ハッシュ値をリング状につなげるので、改ざん検出コードを含めた最新のレコード全体が削除された場合でも、削除されたことを検出することができる。
【発明を実施するための最良の形態】
【0007】
実施の形態1.
以下に、図1〜図10を参照して実施の形態1を説明する。以下の実施の形態は、ドライブレコーダについて述べたものである。ドライブレコーダは、航空機に搭載されているフライトデータレコーダの自動車版といえる。ドライブレコーダは自動車で重大な事故が発生した場合に、その走行中の画像、音声などのデータを記録装置に保存し、事故調査の解析に使うことを目的としている。また、ドライブレコーダ装置が記録したデータを示談交渉や裁判時の証拠として採用できれば、交渉や裁判を早期に終わらせることが期待できる。しかし、例えば、データの画像の順序を入れ替えたり、異なる画像に編集したり、音声を捏造したり、運転操作の履歴を偽造したりして、自分に有利に交渉・裁判を進めようとする者がいる可能性がある。このため、データの改変やデータの順序の入替えなどの改竄を検知できる必要がある。最近は、事故の発生有無に関わらず、データを常に記録装置に保存する常時記録機能を搭載したドライブレコーダも存在する。常時記録機能では、データを常に記録装置に保存するため、記録装置の全領域に記録すると、以降は古いデータから上書きして記録する。このため、常時記録機能のデータに対しても、データの改変やデータの順序の入替えなどの改竄を検知できることが必要である。特に常時記録では、上書き処理を施しても、データの依存性(データに抜けがないことなどの保証)を担保する必要がある。
【0008】
実施の形態1では、常時記録で、記録装置の全領域に記録するまでの処理について説明する。
【0009】
(鍵付きハッシュ演算)
また、以下で述べる実施の形態の説明において、鍵付きハッシュ演算とは、共通鍵を知らなければハッシュ値を算出したり検証したりすることができないハッシュ値を算出することである。
【0010】
図1は、コンピュータで実現されるドライブレコーダ装置100、あるいは再生・検証装置200のハードウェア資源の一例を示す図である。また、実施の形態4で後述する編集装置500、実施の形態5で後述するドライブレコーダ装置100aもコンピュータであり、図1と同様のハードウェア構成である。以下のハードウェアの説明はドライブレコーダ装置100について説明するが、他の再生・検証装置200についても同じである。
【0011】
図1において、ドライブレコーダ装置100は、プログラムを実行するCPU810(Central Processing Unit)を備えている。CPU810は、バス825を介してROM(Read Only Memory)811、RAM(Random Access Memory)812、表示装置813、操作キー814、通信ボード816、磁気ディスク装置820、記憶媒体(記憶装置)と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置820の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【0012】
RAM812は、揮発性メモリの一例である。ROM811、磁気ディスク装置820等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード816、操作キー814などは、入力部、入力装置の一例である。また、通信ボード816、表示装置813などは出力部、出力装置、再生部の一例である。通信ボード816は、ネットワークに接続可能である。
【0013】
磁気ディスク装置820には、オペレーティングシステム821(OS)、ウィンドウシステム822、プログラム群823、ファイル群824が記憶されている。プログラム群823のプログラムは、CPU810、オペレーティングシステム821、ウィンドウシステム822により実行される。
【0014】
上記プログラム群823には、以下に述べる実施の形態の説明において、「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU810により読み出され実行される。
【0015】
ファイル群824には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明する情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU810によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0016】
また、以下に述べる実施の形態の説明においては、データや信号値は、RAM812のメモリ、磁気ディスク装置820の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス825や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0017】
また、以下に述べる実施の形態の説明において、「〜部」として説明するものは、「手段」、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM811に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU810により読み出され、CPU810により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0018】
図2は、実施の形態1における記録装置であるドライブレコーダ装置100の機能ブロックの一例を示すブロック構成図である。
【0019】
図2において、
(1)撮像装置101は、例えばCCD(Charge Coupled Device)カメラなどを用いて、画像を撮影して電気信号に変換する装置である。撮像装置101は、例えば30分の1秒(所定の撮影間隔時間)に1枚の割合で静止画像を撮影する。
(2)音声録音装置102は、音声を入力して電気信号に変換する装置である。
(3)センサ情報取得装置103は、各センサが出力した情報を入力して電気信号に変換する装置である。例えば加速度センサから車両に加わる加速度の情報を取得する。
(4)鍵管理部104は、データハッシュ生成部140、統合ハッシュ生成部105、中間ハッシュ生成部108で使用する共通鍵を管理する。
(5)統合ハッシュ生成部105(第1ハッシュ生成部の一例)は、画像ハッシュ生成部141と音声ハッシュ生成部142とセンサハッシュ生成部143が出力する「ハッシュ値」とデータと鍵管理部104の鍵に基づいて、鍵付きハッシュ演算を行い、統合ハッシュ(ハッシュ値)を生成する。
(6)ハッシュ管理部1071(ハッシュ格納部)は統合ハッシュ生成部105が出力したハッシュ値を格納する装置である。
(7)統合ハッシュ制御部107は、ハッシュ管理部1071に格納されたハッシュ値の追加・削除・選択などを行う装置である。特に中間ハッシュ値を生成するために必要なハッシュ値の選択を行う。
(8)中間ハッシュ生成部108(第2ハッシュ生成部の一例)は、統合ハッシュ制御部107が出力するデータと鍵管理部104の鍵に基づいて鍵付きハッシュ演算を行い、中間ハッシュ(新ハッシュ)を生成する。
(9)データ書込部109は、データ取得部130とデータハッシュ生成部140と中間ハッシュ生成部108から出力されたデータを記憶媒体111に出力する。
(10)データ更新部110は、中間ハッシュ生成部108から出力されたデータを使用して記憶媒体111に記憶済のデータの一部を書き換える。
(11)記憶媒体111は、画像データ、音声データ、センサデータ、各ハッシュ値を記憶する。
【0020】
(データ生成部120)
データ生成部120は、画像データ生成部121、音声データ生成部122、センサデータ生成部123から構成される。
(1)画像データ生成部121は、例えばJPEG(Joint Photographic Experts Group)エンコーダなどを用いて、画像データを生成する装置である。画像データ生成部121は、撮像装置101が撮影した画像に基づいて、画像データを生成する。
(2)音声データ生成部122は、例えばPCM(Pulse Code Modulation)コーデックなどを用いて、音声データを生成する装置である。音声データ生成部122は、音声録音装置102が入力した音声を表わす電気信号を入力し、入力した電気信号に基づいて、音声を表わす連続した音声データを生成する。
(3)センサデータ生成部123は、センサ情報取得装置103が検知した状態を表わす電気信号を入力し、入力した電気信号に基づいて、連続したセンサデータを生成する。
【0021】
(データ取得部130)
データ取得部130は、画像データ取得部131、音声データ取得部132、センサデータ取得部133から構成される。
(1)画像データ取得部131は、画像データ生成部121が記録した画像データを取得する。
(2)音声データ取得部132は、音声データ生成部122が記録した音声データを取得する。
(3)センサデータ取得部133は、センサデータ生成部123が記録したセンサデータを取得する。
【0022】
(データハッシュ生成部140)
データハッシュ生成部140は、画像ハッシュ生成部141、音声ハッシュ生成部142、センサハッシュ生成部143から構成される。
(1)画像ハッシュ生成部141(第1ハッシュ生成部の一例)は、画像データ取得部131が取得したデータと鍵管理部104の鍵に基づいて鍵付きハッシュ演算を行う装置である。
(2)音声ハッシュ生成部142(第1ハッシュ生成部の一例)は、音声データ取得部132が取得したデータと鍵管理部104の鍵に基づいて鍵付きハッシュ演算を行う。
(3)センサハッシュ生成部143(第1ハッシュ生成部の一例)は、センサデータ取得部133が取得したデータと鍵管理部104の鍵に基づいて鍵付きハッシュ演算を行う。
【0023】
(動作概要)
次に動作の概要を説明する。図3は、ドライブレコーダ装置100の動作の流れの一例を示すフローチャートである。
【0024】
ドライブレコーダ装置100が起動すると、撮像装置101、音声録音装置102、センサ情報取得装置103が並行に動作し、画像データ生成部121、音声データ生成部122、センサデータ生成部123が、それぞれ画像、音声、センサデータを生成する(S101、S102、S103)。その後、画像データ取得部131、音声データ取得部132、センサデータ取得部133が、それぞれ画像、音声、センサデータを取得する(S104、S105、S106)。なお、画像データ取得部131、音声データ取得部132、センサデータ取得部133は、少なくともS109、S110の処理が終わるまでは取得したデータを保持する。
【0025】
一定時間経過するまで各データの生成と取得(S101〜S106)を繰り返し、一定時間経過する(S107)とハッシュ生成工程に移る。なお、ハッシュの生成の間も、各データの生成と取得処理は行われている。つまり、ドライブレコーダ装置100が停止するまで各データの生成と取得処理は継続する。ハッシュ生成工程で必要なハッシュ値を算出し(S108)、画像データ取得部131、音声データ取得部132、センサデータ取得部133と画像ハッシュ生成部141、音声ハッシュ生成部142、センサハッシュ生成部143と中間ハッシュ生成部108の出力データをデータ書込部109が記憶媒体111に書き込む(S109)。ただし、先頭と末尾の統合ハッシュ値から生成した中間ハッシュについては、データ更新部110が、すでに記憶媒体111に書き込まれている前の時点の先頭と末尾の統合ハッシュ値から生成した中間ハッシュを上書きして、記憶媒体111に書き込む(S110)。
【0026】
(ハッシュ生成工程)
図4は、ハッシュ生成工程(S108)の詳細を示したフローチャートである。
【0027】
(ハッシュの生成、統合ハッシュ、中間ハッシュ)
ハッシュはデータ単体のハッシュ(データハッシュという場合がある)、統合ハッシュ、中間ハッシュの順で生成する。ここで、「統合ハッシュ」とは、図5の説明で後述するが、画像、音声及びセンサのデータハッシュから生成したハッシュである。また、「中間ハッシュ」とは、図8等の説明で後述するが、統合ハッシュと統合ハッシュとから生成されるハッシュである。2つの統合ハッシュを連結する機能を有するため、「中間」と呼んでいる。
(1)画像ハッシュ生成部141は、画像データと共通鍵を入力として鍵付きハッシュ演算を行い、画像データのハッシュである画像ハッシュを生成する(S201)。
(2)音声ハッシュ生成部142は、音声データと共通鍵を入力として鍵付きハッシュ演算を行い、音声データのハッシュである音声ハッシュを生成する(S202)。
(3)センサハッシュ生成部143は、センサデータと共通鍵を入力として鍵付きハッシュ演算を行い、センサデータのハッシュであるセンサハッシュを生成する(S203)。
【0028】
その後、統合ハッシュ生成部105は、画像ハッシュと音声ハッシュとセンサハッシュと共通鍵を入力として鍵付きハッシュ演算を行い、画像ハッシュと音声ハッシュとセンサハッシュを統合したデータのハッシュ値である統合ハッシュを生成する(S204)。
【0029】
(統合ハッシュ生成の詳細)
図5は、統合ハッシュの生成を説明する図である。統合ハッシュ生成部105は、画像ハッシュ生成部141が生成した複数の画像ハッシュ1〜画像ハッシュnを連結して鍵付きハッシュ演算を行い、新たに画像ハッシュ(1−n)を生成する。統合ハッシュ生成部105は、同様に、音声ハッシュ生成部142が生成した複数の音声ハッシュ1〜音声ハッシュnを連結して鍵付きハッシュ演算を行い、新たに音声ハッシュ(1−n)を生成し、センサハッシュ生成部143が生成した複数のセンサハッシュ1〜センサハッシュnを連結して鍵付きハッシュ演算を行い、新たにセンサハッシュ(1−n)を生成する。最後に、生成した画像ハッシュ(1−n)、音声ハッシュ(1−n)、センサハッシュ(1−n)を連結して鍵付きハッシュ演算を行い、「統合ハッシュ」を生成する。
【0030】
なお、以下の実施の形態1〜5では、図5に示す統合ハッシュを生成し、統合ハッシュから中間ハッシュを生成する例を述べているが、図5において、例えば、「画像ハッシュ1」のみを用いてもよい。すなわち、収集するデータは画像のみとし、音声及びセンサデータは収集しない(収集してもよいがハッシュ生成の対象としない)。その場合、統合ハッシュ生成部105は不要である。その場合、図5では左の画像ハッシュのみが対象となるが、その際、画像ハッシュ1〜画像ハッシュnをまとめることは必須ではない。まとめてもよいし、一つの画像ハッュでもかまわない。一つの場合には、「画像ハッシュ1」が統合ハッシュ相当としてハッシュ管理部1071に格納され、画像ハッシュ1〜画像ハッシュnとしてまとめられる場合には、画像ハッシュ(1−n)が統合ハッシュ相当としてハッシュ管理部1071に格納される。
【0031】
図6は、ハッシュ管理部1071の構成を示す図である。ハッシュ管理部1071はリングバッファである。図6のリングバッファは、10個の統合ハッシュを格納可能な10個の格納領域を有する構成である。
図6において、
(1)「tail」は、ハッシュ管理部1071(リングバッファ)に格納された一番古いデータをさすポインタである。
(2)「top」は、リングバッファに格納された一番新しいデータをさすポインタである。
(3)「next」は、次のデータの書き込み位置をさすポインタである。
(4)「full」は、上書き処理の実行が必要なことをさすポインタである。「初期位置は」tail=NULL,top=NULLであり,nextは一番左,fullは一番右である。統合ハッシュ生成部105は、生成した統合ハッシュをハッシュ管理部1071(図6(a)のnextポインタがさすバッファ)に格納する(S205)。ハッシュ管理部1071は、統合ハッシュ制御部107によって管理(監視)、制御される。すなわち、統合ハッシュ制御部107は、ハッシュ管理部1071により順次に格納される統合ハッシュ値の格納状況と格納順位とを監視する。統合ハッシュを連結したデータのハッシュ値である「中間ハッシュ」を生成するため、統合ハッシュ制御部107がハッシュ管理部1071に格納された統合ハッシュから必要なものを取り出し、中間ハッシュ生成部108の入力として与える。
【0032】
(統合ハッシュの取り出しルール)
図6(b)は、図6におけるnextポインタがさす格納領域にあらたに統合ハッシュが格納された場合を示している。統合ハッシュが新たに格納されると、統合ハッシュ制御部107は、まず、統合ハッシュの組11(ペア)をハッシュ管理部1071から取り出し、中間ハッシュ生成部108の入力として与える。統合ハッシュの組11は、最近格納された統合ハッシュ(図6(b)でtopがさすハッシュ)と、その直前に格納された統合ハッシュとの「ペア」である。次に、統合ハッシュ制御部107は、図6(b)の統合ハッシュの組12(ペア)を中間ハッシュ生成部108の入力として与える。ハッシュの組12は、最近格納されたハッシュ(図6(b)でtopがさすハッシュ)と、最古(最も古く格納された)の統合ハッシュ(図6(b)でtailがさすハッシュ)との「ペア」である。中間ハッシュ生成部108は、これら統合ハッシュの値と共通鍵を入力として「鍵付きハッシュ演算」を行い、「中間ハッシュ」(新ハッシュ)を生成する(S206)。
【0033】
(データ構造)
図7は、実施の形態1におけるデータ構造の例を示す図である。一定時間ごとに点線枠内のデータが順に生成され、中間ハッシュ値が計算される。各点線枠内の画像データと画像ハッシュ、音声データと音声ハッシュ、センサデータとセンサハッシュはそれぞれ1つのブロックでしか表現していないが、複数のデータが存在していても構わない。
【0034】
(枠1)
画像ハッシュ313は、画像データ310と共通鍵301に基づいて画像ハッシュ生成部141が算出した鍵付きハッシュ値である。音声ハッシュ314は、音声データ311と共通鍵301に基づいて音声ハッシュ生成部142が算出した鍵付きハッシュ値である。センサハッシュ315は、センサデータ312と共通鍵301に基づいてセンサハッシュ生成部143が算出した鍵付きハッシュ値である。統合ハッシュ316は、画像ハッシュ313と音声ハッシュ314とセンサハッシュ315と共通鍵301に基づいて統合ハッシュ生成部105が算出した鍵付きハッシュ値である。
【0035】
(枠2)
次に画像ハッシュ323は、画像データ320と共通鍵301に基づいて画像ハッシュ生成部141が算出した鍵付きハッシュ値である。音声ハッシュ324は、音声データ321と共通鍵301に基づいて音声ハッシュ生成部142が算出した鍵付きハッシュ値である。センサハッシュ325は、センサデータ322と共通鍵301に基づいてセンサハッシュ生成部143が算出した鍵付きハッシュ値である。統合ハッシュ326は、画像ハッシュ323と音声ハッシュ324とセンサハッシュ325と共通鍵301に基づいて統合ハッシュ生成部105が算出した鍵付きハッシュ値である。「中間ハッシュ327」は、統合ハッシュ316と統合ハッシュ326と共通鍵301に基づいて中間ハッシュ生成部108が算出した鍵付きハッシュ値である。
【0036】
(枠3)
次に画像ハッシュ333は、画像データ330と共通鍵301に基づいて画像ハッシュ生成部141が算出した鍵付きハッシュ値である。音声ハッシュ334は、音声データ331と共通鍵301に基づいて音声ハッシュ生成部142が算出した鍵付きハッシュ値である。センサハッシュ335は、センサデータ332と共通鍵301に基づいてセンサハッシュ生成部143が算出した鍵付きハッシュ値である。統合ハッシュ336は、画像ハッシュ333と音声ハッシュ334とセンサハッシュ335と共通鍵301に基づいて統合ハッシュ生成部105が算出した鍵付きハッシュ値である。「中間ハッシュ337」は、統合ハッシュ326と統合ハッシュ336と共通鍵301に基づいて中間ハッシュ生成部108が算出した鍵付きハッシュ値である。さらに、「中間ハッシュ317」は、統合ハッシュ336と統合ハッシュ316と共通鍵301に基づいて、中間ハッシュ生成部108が算出した鍵付きハッシュ値である。
【0037】
(枠n)
次に画像ハッシュ343は、画像データ340と共通鍵301に基づいて画像ハッシュ生成部141が算出した鍵付きハッシュ値である。音声ハッシュ344は、音声データ341と共通鍵301に基づいて音声ハッシュ生成部142が算出した鍵付きハッシュ値である。センサハッシュ345は、センサデータ342と共通鍵301に基づいてセンサハッシュ生成部143が算出した鍵付きハッシュ値である。統合ハッシュ346は、画像ハッシュ343と音声ハッシュ344とセンサハッシュ345と共通鍵301に基づいて統合ハッシュ生成部105が算出した鍵付きハッシュ値である。「中間ハッシュ347」は、統合ハッシュ346と、ひとつ前の統合ハッシュ(n−1)(図示なし)と、共通鍵301とに基づいて、中間ハッシュ生成部108が算出した鍵付きハッシュ値である。「中間ハッシュ317」は、統合ハッシュ346と、統合ハッシュ316と、共通鍵301とに基づいて、中間ハッシュ生成部108が算出した鍵付きハッシュ値である。データ更新部110は、以前の「中間ハッシュ317」を上書きして記録する。
【0038】
図7に示したように、中間ハッシュはリング状につながれる。
【0039】
図8は、中間ハッシュが生成される動作を模式的に示した図であり、図6(b)、あるいは図7をさらに具体的に説明する図である。T1〜T10は、リングバッファに格納された統合ハッシュを示している。以下は統合ハッシュ制御部107、中間ハッシュ生成部108、データ更新部110の動作である。
(1)統合ハッシュ制御部107は、T1の次にT2が格納されるとT1、T2を中間ハッシュ生成部108に出力し、中間ハッシュ生成部108が中間ハッシュ(1、2)を生成する。中間ハッシュ(1、2)は統合ハッシュ1と統合ハッシュ2から生成した中間ハッシュを示す。
(2)統合ハッシュ制御部107は、T3が格納されるとT3、T2を中間ハッシュ生成部108に出力するとともに、T3(最新の統合ハッシュ)、T1(最古の統合ハッシュ)を中間ハッシュ生成部108に出力する。中間ハッシュ生成部108は、中間ハッシュ(2、3)、(3、1)を生成する。これにより、ハッシュが、1−2、2−3、3−1と、リング状に連結される。
(3)統合ハッシュ制御部107は、T4が格納されるとT4、T3を中間ハッシュ生成部108に出力するとともに、T4、T1を中間ハッシュ生成部108に出力する。中間ハッシュ生成部108は、中間ハッシュ(3、4)、(4、1)を生成する。データ更新部110は、中間ハッシュ(3、1)を上書きして中間ハッシュ(4、1)とする。これにより、ハッシュが、1−2、2−3、3−4、4−1と、リング状に連結される。
(4)統合ハッシュ制御部107は、T5が格納されるとT5、T4を中間ハッシュ生成部108に出力するとともに、T5、T1を中間ハッシュ生成部108に出力する。中間ハッシュ生成部108は、中間ハッシュ(4、5)、(5、1)を生成する。データ更新部110は、中間ハッシュ(4、1)を上書きして中間ハッシュ(5、1)にとする。これにより、ハッシュが、1−2、2−3、3−4、4−5、5−1と、リング状に連結される。以降、統合ハッシュT10が格納されるまで、同様の処理である。
【0040】
以上がドライブレコーダ装置100の説明である。以降、再生・検証装置200の説明を行う。
【0041】
(再生・検証装置200)
図9は、実施の形態1の再生・検証装置200(検証装置)の構成の一例を示すブロック構成図である。
(1)再生・出力部201は画像、音声の再生とセンサデータ、ハッシュ値検証結果の出力を行う。
(2)データ読出部202は、記憶媒体203内のデータを読み出す。
(3)記憶媒体203はドライブレコーダ装置100で記録されたデータが格納されている。
(4)検証判定部204は、データが改ざんされているか否かを最終判定する。
(5)データハッシュ検証部205は、各データ単体の改ざんの有無を検証する。
(6)中間ハッシュ検証部206は、再生・検証装置200で生成した中間ハッシュと記憶媒体203で格納した中間ハッシュが等しいかどうかを検証する。
(7)鍵管理部207はドライブレコーダ装置100で保持する鍵と同じ共通鍵を保持する。
(8)統合ハッシュ生成部208は、データハッシュ生成部230のハッシュデータを入力して鍵付きハッシュ計算を行う。
(9)ハッシュ管理部209は、統合ハッシュ生成部208が出力したハッシュ値を格納する。
(10)統合ハッシュ制御部210は、ハッシュ管理部209を管理・制御する。
(11)中間ハッシュ生成部211は、統合ハッシュのデータからハッシュ値を生成する。
(12)データ取得部220は画像データ取得部221、音声データ取得部222、センサデータ223から構成される。記録媒体に格納された画像、音声、センサデータを取得する。
(13)データハッシュ生成部230は、画像ハッシュ生成部231、音声ハッシュ生成部232、センサハッシュ生成部233から構成される各データのハッシュ値を生成する。
(14)ハッシュ取得部240は、画像ハッシュ取得部241、音声ハッシュ取得部242、センサハッシュ243、中間ハッシュ244から構成され、記録媒体に格納された画像、音声、センサハッシュと中間ハッシュを取得する。
【0042】
(動作の説明)
次に動作について説明する。なお、再生・検証装置200の鍵付きハッシュ演算はドライブレコーダ装置100の鍵付きハッシュ演算と同様である。
【0043】
図10は、再生・検証装置200の動作を示したフローチャートである。データ読出部202が記憶媒体203からデータを読み出し、画像、音声、センサデータをデータ取得部220へ、ハッシュ値をハッシュ取得部240へ送る(S301)。データ取得部220はデータを受け取ると、データハッシュ生成部230へデータを送る。データハッシュ生成部230は画像、音声、センサデータの鍵付きハッシュを計算し、ハッシュ値を生成する(S302)。
【0044】
次に、データハッシュ検証部205は、データハッシュ生成部230で生成したハッシュと画像ハッシュ取得部241、音声ハッシュ取得部242、センサハッシュ取得部243で取得したハッシュを比較して、データハッシュ値が等しいかどうか検証する。等しくないデータハッシュ値が存在する場合(S303 NO)、データハッシュ検証部205は、検証判定部204へ検証結果を送り、検証判定部204は改ざん有と判定する。データ再生・出力部201は、改ざん有の結果を出力する(S308)。S303でデータハッシュが全て等しい場合(S303 YES)、統合ハッシュ生成部208、中間ハッシュ生成部211でそれぞれ統合ハッシュ、中間ハッシュを生成する(S304)。
【0045】
次に、中間ハッシュ検証部206は、中間ハシュ生成部211で生成した中間ハッシュと中間ハッシュ取得部244で取得したハッシュを比較して中間ハッシュ値が等しいかどうか検証する。等しくない中間ハッシュ値が存在する場合(S305 NO)、中間ハッシュ検証部206は検証判定部204へ検証結果を送る。データハッシュが等しいにも関わらず中間ハッシュが異なるときとは、例えば、最新の、改ざん検出コード(データハッシュ、中間ハッシュ)を含めたレコード全体が削除されたような場合である。再生・検証装置200は、このように、従来では検出できなかった、最新の、改ざん検出コード(データハッシュ、中間ハッシュ)を含めたレコード全体が削除された事実を検出できる。この検証結果を受信すると、検証判定部204は改ざん有と判定する。データ再生・出力部201は、改ざん有の結果を出力する(S308)。S305でハッシュが全て等しい場合(S305 YES)、検証判定部204は改ざん無と判定し、データ再生・出力部201は、改ざん無の結果を出力し(S306)、画像、音声データを再生する(S307)。
【0046】
以上のように、本実施の形態1によれば、ドライブレコーダ装置100で画像データのハッシュ、音声データのハッシュ、センサデータのハッシュ、統合ハッシュ、中間ハッシュを生成し、再生・検証装置200で改ざん検証を行うことにより、データの追加・削除・変更等の改ざんを検知することができる。すなわち、悪意のある者によるデータの改ざんや消去の事実を検出する感度を向上することができる。特に中間ハッシュをリング状につなげたことで、従来の改ざん検出方法/装置では検知できない、最新のハッシュデータを含めたデータ全体が削除された場合でも、検出することが可能となる。また、統合ハッシュ制御部107を設けたことで、一つ前の統合ハッシュとの連結だけでなく、先頭(top)と末尾(tail)の統合ハッシュも容易に連結でき、容易に任意の場所の中間ハッシュを生成できる。なお、今回の実施の形態では、統合ハッシュは記憶媒体111に格納していないが、統合ハッシュも記憶媒体111に格納しても良い。その場合は再生・検証装置200で統合ハッシュの比較も行う。
【0047】
実施の形態2.
次に図11〜図14を用いて実施の形態2を説明する。実施の形態1では、常時記録のデータで、記録装置(ハッシュ管理部1071)の全領域に記録するまでの処理を説明したが、実施の形態2では、記録装置(ハッシュ管理部1071)の全領域に統合ハッシュを記録した後は、以降のデータは、一番古いデータ全体を上書きして記録する場合の処理について説明する。すなわち実施の形態2は、ハッシュ管理部1071の全記憶領域に統合ハッシュが記録された場合には、一番古い統合ハッシュを削除すると共に、図14で後述するように、削除される統合ハッシュに関係する画像データのデータ、中間ハッシュも記憶媒体111から削除する構成である。
【0048】
実施の形態2も、ドライブレコーダ、及び再生・検証装置に関するが、その構成は、実施の形態1のドライブレコーダ100、再生・検証装置200と同様であるため省略する。
【0049】
図11は、上書き記録時のハッシュ処理の一例を示すフローチャートである。図11では、統合ハッシュ生成処理までは実施の形態1と同様の処理のため記述を省略してある。図12は、統合ハッシュ制御部107による上書処理を説明するための図である。
【0050】
図11のフローチャートを説明する。統合ハッシュ生成部105は、自己の出力をハッシュ管理部1071(図12の状態1において、nextポインタがさすバッファ)に格納する(S401)。統合ハッシュ制御部107は、ハッシュ管理部1071からS401で格納した統合ハッシュとその直前の統合ハッシュを取り出し(図12の状態2に示す「(i)中間ハッシュ生成部108へ」の部分)、中間ハッシュ生成部108へ送る。中間ハッシュ生成部108は、送られてきたデータ(中間ハッシュ)と共通鍵に基づいて鍵付きハッシュ演算を行い、中間ハッシュを生成する(S402)。
【0051】
その後、統合ハッシュ制御部107は、ハッシュ管理部1071の更新を行う。具体的には図12の状態2、状態3に示すように、上書き処理が必要な場合はメモリがいっぱいになっている(図12の状態2においてnext=full)。このため、統合ハッシュ制御部107は、最古のハッシュ(tailが挿すハッシュ)(格納順位の最も古い)を削除する。統合ハッシュ制御部107は、「tail」が削除後の最古の統合ハッシュを指すように変更する(S403)。
【0052】
次に、統合ハッシュ制御部107は、更新後の最新の統合ハッシュと最古の統合ハッシュ(図12の状態3に示す「(ii)中間ハッシュ生成部108へ」の部分)(ii)のハッシュ)を取り出し、中間ハッシュ生成部108へ送る。中間ハッシュ生成部108は送られてきたデータと共通鍵に基づいて鍵付きハッシュ演算を行い、ハッシュを生成する(S404)。次にデータ更新部110が、記憶媒体111に格納されている最古のデータ(図14に示す枠1内のデータ及び中間ハッシュ417、427)を削除し、S404で生成された中間ハッシュを、データ削除後の最古のデータの中間ハッシュに上書きして書き込む。その後、データ書込部109が今回生成したデータを記憶媒体111に書き込む(S405)。
【0053】
(統合ハッシュ制御部107によるハッシュ管理部1071の更新処理)
図12の状態4、状態5を用いて、統合ハッシュ制御部107が行うハッシュ管理部1071のバッファの更新処理を具体的に説明する。バッファはリングバッファである。また、図6の説明で述べたように、tail,top,next,fullの4つのポインタを使用する。図12の状態4において、データ(統合ハッシュ)が、nextポインタがさすバッファに格納されると、統合ハッシュ制御部107は、nextポインタとfullポインタが同じバッファをさしているかどうか調べる。同じバッファをさしている場合、統合ハッシュ制御部107は、topポインタをnextポインタのさすバッファをさすようにする。次に、統合ハッシュ制御部107はnextポインタを1つ隣(図では右)に移動し、移動後のバッファの内容を削除する。次に統合ハッシュ制御部107はtail,fullポインタを1つ隣に移動する。
【0054】
図13は、実施の形態2におけるデータ構造の1例を示す図である。図13は、n+1番目のデータを書き込むため、上書き処理で最古の1番目のデータが消去される場合を示す図である。上書き処理で、具体的にはデータ410〜データ417のデータが削除される。また、「中間ハッシュ427」(統合ハッシュ426、416から生成))は、削除された統合ハッシュ416を使用して生成されているため、このデータも削除する。「中間ハッシュ457」(統合ハッシュ426、446から生成))は、削除後の最古のデータ(2番目のデータ)と、最新のデータ(n+1番目のデータ)の統合ハッシュ426、446に基づき再生成された鍵付きハッシュ値である。このように上書きが発生した場合でも、中間ハッシュを1つ生成しなおすだけでよい。
【0055】
図14は、図12、図13をさらに詳しく説明するための図である。図14の4つの四角全体はハッシュ管理部1071(リングバッファ)を示す。また、d1、D1等は、統合ハッシュを示す。また(1、2)等は中間ハッシュを示し、統合ハッシュd1、d2から生成されたことを示す。また、(1、2)等につけた「×印」は、更新されることを示す。
(a)で、リングバッファに統合ハッシュd1(以下、d1等という)が格納される。
(b)でd2が格納され、
(c)でd3が格納される。
(d)でD1が格納されると最新のD1と直前のd3とが統合ハッシュ制御部107により取得され、
(e)最古のd1が削除され、その後、最新のD1と未削除の最古のd2とが統合ハッシュ制御部107に取得される。
【0056】
(f)でD2が格納されると最新のD2と直前のD1とが統合ハッシュ制御部107により取得され、
(g)最古のd2が削除され、その後、最新のD2と未削除の最古のd3とが統合ハッシュ制御部107に取得される。以下同様に、(h)〜(k)と続く。
【0057】
以上より、本実施の形態2によれば、上書き発生時でもハッシュを再構成することにより、実施の形態1と同様にデータの追加・削除・変更等の改ざんを検知することができる。また、統合ハッシュ制御部107を設けたことで、上書き時のハッシュ生成処理も容易に実現できる。上書き時は中間ハッシュを1つ生成しなおすだけでよく、計算量を軽減することができる。もちろん、上書き時の処理により、改ざん有と判定されることはない。
【0058】
実施の形態3.
次に図15〜図16を参照して、実施の形態3を説明する。以上の実施の形態2では、上書き処理ごとにハッシュの再構成処理を行う必要がある。実施の形態3は、上書き発生時の処理をまとめて行う方法について述べる。
【0059】
ドライブレコーダ100と再生・検証装置200の構成は、実施の形態1と同様であるため省略する。
【0060】
図15は、ハッシュ管理部1071の内部構成の一例を示した図である。full(1)までデータが格納されると上書きが発生する状態になったことがわかり、full(2)までデータが格納されると、統合ハッシュ制御部107は上書き処理を実行する。統合ハッシュ制御部107はfull(2)にデータが格納されるまでは上書き処理を実行しない。
【0061】
図16は、実施の形態3の上書き時の処理を示したフローチャート図である。図16では、統合ハッシュ生成までは実施の形態1と同様の処理のため記述を省略してある。
【0062】
統合ハッシュ生成部105は自己の出力をハッシュ管理部1071に格納する(S501)。統合ハッシュ制御部107は、ハッシュ管理部1071からS501で格納された統合ハッシュと、その直前の統合ハッシュを取り出し、中間ハッシュ生成部108へ送る。中間ハッシュ生成部108は、送られてきたデータと共通鍵からハッシュを生成する(S502)。その後、統合ハッシュ制御部107は、ハッシュ管理部1071の図015に示したfull(2)までデータ(統合ハッシュ)が格納されたかどうかチェックし、格納されていなければ(S503 NO)、その後の更新処理は行わない。S503でfull(2)までデータ(統合ハッシュ)が格納されていれば(S503 YES)、統合ハッシュ制御部107は、ハッシュ管理部1071の更新を行う。
【0063】
具体的には図15にあるように、上書き処理が必要な場合はメモリがいっぱいになっているので、full(1),full(2)間の個数分、最古のハッシュ(tailの示すハッシュ)からハッシュを削除する。統合ハッシュ制御部107は、tailを削除後の最古のハッシュをさすようにする(S504)。次に、統合ハッシュ制御部107は、更新後の最新の統合ハッシュと未削除の最古の統合ハッシュとを取り出し、中間ハッシュ生成部108へ送る。中間ハッシュ生成部108は、送られてきたデータ(統合ハッシュ)と共通鍵とから、中間ハッシュを生成する(S505)。なお、図15において、full(1),full(2)を同一の格納領域をさすように設定した場合は、実施の形態2(図12)の場合になる。full(1),full(2)との間隔は、つまり、一度に削除するべき統合ハッシュの個数は、実装にあわせて自由に設定することができる。すなわち、統合ハッシュ制御部107は、ハッシュ管理部1071が複数の統合ハッシュ(ハッシュ値)を格納している場合において、設定(予め設定された規則)に従って、ハッシュ管理部1071シュに格納された統合ハッシュを格納時期の古い順に少なくとも一つ削除する。また、S505(及び図15)のように、中間ハッシュ生成部108(ハッシュ生成部)は、統合ハッシュ制御部107によって統合ハッシュが格納時期の古い順に少なくとも一つ削除された場合には、削除された統合ハッシュのうち格納時期の最も新しいハッシュ値の直後に格納された未削除のハッシュ値と、最も最近に格納された未削除のハッシュ値とから、新たな新ハッシュ値を生成する。
【0064】
(データの更新)
次に、データ更新部110は、統合ハッシュ制御部107からの通知を受け、記憶媒体111に格納されている最古のデータ(図13の場合と同様)からfull(1),full(2)間に対応するデータを削除し、S504の更新後の中間ハッシュ(未削除の最古の統合ハッシュと最新の統合ハッシュから生成された中間ハッシュ)をデータ削除後の最古のデータに関する中間ハッシュに上書きして書き込む(再リング化)。その後、データ書込部109が、今回生成したデータを記憶媒体111に書き込む。
【0065】
以上より、本実施の形態3によれば、上書き発生時に複数のデータをまとめて、一度にハッシュを再構成することにより、処理の効率化を実現できる。統合ハッシュ制御部107を設けたことで、本実施の形態3の処理は容易に実現でき、まとめる単位も容易に変更可能である。
【0066】
実施の形態4.
図17〜図19を参照して実施の形態4を説明する。常時記録データを裁判等の証拠として提出する際、必要な部分だけを切り取りたいと考えるかもしれない。しかし、改ざん目的の切り取りと区別するためには、鍵を知っている正当な第三者(機関)だけが切り取り等の編集機能を持つ必要がある。実施の形態4では、正当な第三者が容易に編集可能な処理について説明する。
【0067】
図17は編集装置500(編集機能を持つ検証装置)の構成を示した図である。実施の形態1の再生・検証装置200(図9の検証装置)と同じ構成要素は説明を省略する。図17の編集装置500は、実施の形態1の図9の再生・検証装置200に対して、データ入力部401、データ更新部402を加えた構成である。
【0068】
データ入力部401(検証側データ入力部)は、編集箇所などのユーザが入力したデータを受け取る。データ更新部402(検証側データ更新部)は、データ入力部401からの入力とハッシュ値とに基づいてデータの更新(編集)を行い、結果を記憶媒体203に格納する。
【0069】
図18は、編集装置500の動作の一例を示すフローチャートである。始めにデータ読出部202(検証側データ読出部)が読み出したデータに対し、改ざんの有無を検証する(S601)。検証方法は実施の形態1で説明した方法と同様のため、ここでは説明を省略する。改ざんが見つかった場合(S602 有)、検証判定部204は改ざん有と判定し、データ再生・出力部201に結果を出力する(S606)。S602で改ざんが見つからなかった場合(S602 無)、データ入力部401からの入力を待つ。入力されるデータは切り取り範囲情報、鍵情報等を含むものである。入力(例えばデータの削除を指令する削除指令)があった場合(S603 有)、データ更新部402が、ユーザの指示に従ってデータを編集する(S604)。編集されたデータは、記憶媒体203に格納される(S605)。
【0070】
図19は実施の形態4におけるデータ構造の1例を示す図である。図19で編集作業の詳細を述べる。データ更新部402は、データ入力部401から「3番目から6番目のデータを削除したい」というデータ(削除指令の一例)を受け取る。データ更新部402は、3番目から6番目のデータ(途中の一部分のデータ)を削除する。次に統合ハッシュ626と統合ハッシュ676に基づいて鍵付きハッシュ演算を行い、中間ハッシュ717(新ハッシュ値)を生成する。これにより、削除後も中間ハッシュはリング状につながることになる。
【0071】
図19における中間ハッシュ717の生成(図18のS504の処理内容)について、さらに具体的に説明する。データ更新部402は、検証処理の過程で、データハッシュ生成部230(第1ハッシュ生成部の一例)が入力した複数のデータと、統合ハッシュ生成部207(第1ハッシュ生成部の一例)により生成された統合ハッシュ(ハッシュ値)と、中間ハッシュ生成部211(第2ハッシュ生成部)により各ペアから生成された複数の中間ハッシュ(新ハッシュ値)とを記憶媒体203に格納している。あるいは、図示していないRAM、フラッシュメモリ、磁気ディスク装置等の記憶装置に格納してもよい。なお、検証処理の過程で「改ざん無し」(S602 無)の判定であれは、編集の対象は、検証対象となったドライブレコーダ装置100により記録生成されたデータでも良いのはもちろんである。すなわち、図19に示した一連のデータは、「改ざん無し」(S602 無)の判定であれは、ドライブレコーダ装置100により記録生成されたデータでも良いし、検証過程で再生・検証装置200(検証装置)によって記録、生成されたデータでもかまわない。したがって、図19に示す一連のデータは記録媒体203に格納されているデータであるが、ドライブレコーダ装置100により記録生成されたデータでもよいし、あるいは再生・検証装置200(編集装置500も再生・検証装置200である)によって生成されたデータでもよい。なお図19において、「画像データ、音声データ、センサデータ」は、当然に、ドライブレコーダ装置100により記録されたデータである。S504において、データ更新装置402(検証装置)は、データ入力部401が受け付けた、「3番目から6番目のデータ」の削除指令に従うことにより、図19に示すように、記憶部媒体203に格納された複数のデータ(連続データの一例)のうち「3番目から6番目のデータ(画像データ、音声データ、センサデータ)」(所定のデータ、途中の一部分のデータ)と、「3番目から6番目のデータ」のデータの統合ハッシュ値(ハッシュ値)と、「3番目から6番目のデータ」のデータのハッシュ値を元として生成された中間ハッシュ(新ハッシュ値)637〜677を削除する。そして、データ更新部402は、削除したデータのうち最も古いデータよりもひとつ古いデータ(一方の残余データ)から生成された統合ハッシュ値626(一方の残余データに対応するハッシュ値)と、削除したデータのうち最も新しいデータよりもひとつ新しいデータ(他方の残余データ)から生成された統合ハッシュ値676(他方の残余データに対応するハッシュ値)とから、中間ハッシュ生成部211(第2ハッシュ生成部)に中間ハッシュ717(新ハッシュ値)を生成させる。データ更新部402は、この中間ハッシュ717を記憶媒体203に格納する。これにより、削除後も中間ハッシュは、リング状につながることになる。
【0072】
以上より、データの改ざん有無も判定し、かつ正当な第3者がデータを容易に編集できる。中間ハッシュの再生成処理もこれまでと同様1つ生成しなおすだけでよく、計算量を軽減することができる。
【0073】
実施の形態5.
次に図20、図21を使用して実施の形態5を説明する。実施の形態1の処理は、イベント記録のような短時間の記録に対しても適用可能である。実施の形態2では、イベント記録データに適用した場合の処理について説明する。なお、再生・検証装置200の処理は実施の形態1と同様なため、ドライブレコーダ装置100の処理のみ記載する。
【0074】
図20は、実施の形態5のドライブレコーダ装置100aのブロック構成図である。実施の形態1のドライブレコーダ装置100(図2)に対して、イベント検出部501、出力範囲決定部502を追加した構成である。
【0075】
イベント検出部501は、入力されたセンサ情報を解析してイベント記録を行うか否かを判定する。出力範囲決定部502は、イベント記録データとして記憶媒体111に記録するデータの範囲を決定する。
【0076】
次に動作の詳細について説明する。図21は、実施の形態5におけるドライブレコーダ装置100aの動作の流れの一例を示すフローチャートである。
【0077】
ドライブレコーダ装置100aが起動すると、撮像装置101、音声録音装置102、センサ情報取得装置103が並行に動作し、画像データ生成部121、音声データ生成部122、センサデータ生成部123がそれぞれ画像、音声、センサデータを生成する(S701)。その後、画像データ取得部131、音声データ取得部132、センサデータ取得部133が、それぞれ画像、音声、センサデータを取得する(S702)。S702と並行して、イベント検出部501は、センサデータ生成部123からセンサ情報を取得して、イベント記録を行うか否かを判定する(S703)。その後、出力範囲決定部502が、イベント検出部501の結果を受け取り、イベント記録を行う場合は、記憶媒体111に記録するデータの範囲を決定する(S704)。イベント記録を実行する場合(S705 YES)は、ハッシュ生成工程に移る。ハッシュ生成方法は実施の形態1と同様である。なお、ハッシュの生成の間も、各データの生成と取得処理は行われている。つまり、ドライブレコーダ装置100が停止するまで各データの生成と取得処理は継続する。ハッシュ生成工程で必要なハッシュ値を算出し(S706)、画像データ取得部131、音声データ取得部132、センサデータ取得部133と画像ハッシュ生成部141、音声ハッシュ生成部142、センサハッシュ生成部143と中間ハッシュ生成部108の出力データを記憶媒体111に書き込む(S707)。ただし、先頭と末尾の統合ハッシュ値から生成した中間ハッシュについては、データ更新部110が、すでに記憶媒体111に書き込まれている前の時点の先頭と末尾の統合ハッシュ値から生成した中間ハッシュを上書きして、記憶媒体111に書き込む(S708)。例えば20秒のイベント記録データを1秒ごとにまとめて記憶媒体111に記録する場合、先頭の統合ハッシュは最初の1秒分のデータに対する統合ハッシュであり、末尾の統合ハッシュは最後の1秒(19秒〜20秒まで)分のデータに対する統合ハッシュとなる。
【0078】
以上のように、本実施の形態5によれば、イベント記録の場合でも、ドライブレコーダ装置100aで画像データのハッシュ、音声データのハッシュ、センサデータのハッシュ、統合ハッシュ、中間ハッシュを生成し、再生・検証装置200で改ざん検証を行うことにより、データの追加・削除・変更等の改ざんを検知することができる。特に中間ハッシュをリング状につなげたことで、従来の改ざん検出方法/装置では検知できない、末尾のハッシュデータを含めたデータ全体が削除された場合でも、検出することが可能となる。また、統合ハッシュ制御部107を設けたことで、一つ前の統合ハッシュとの連結だけでなく、先頭(top)と末尾(tail)の統合ハッシュも容易に連結でき、容易に任意の場所の中間ハッシュを生成できる。
【0079】
なお、今回の実施の形態では、統合ハッシュは記憶媒体111に格納していないが、統合ハッシュも記憶媒体111に格納しても良い。その場合は再生・検証装置200で統合ハッシュの比較も行う。なお、上記では20秒のイベント記録データを1秒ごとにまとめる例を示したが、20秒ごとにまとめる場合も考えられる。その際は統合ハッシュが1つしか生成されないため、記録する画像データの枚数などのメタデータから統合ハッシュを生成して、その後中間ハッシュを生成してもよい。この場合、再生・検証装置200はメタデータの内容を共有していれば、ドライブレコーダ装置100で行った演算と同様の演算が可能である。
【0080】
以上の実施の形態1〜5では、記録装置、再生・検証装置、編集装置として実現されるハッシュ生成装置の実施の形態を説明したが、ハッシュ生成装置が行う「ハッシュ生成方法」の実施の形態として把握することもできる。また、ハッシュ生成装置を、コンピュータに実行させる「ハッシュ生成プログラム」の実施の形態として把握することもできる。さらに、「ハッシュ生成プログラム」を記録したコンピュータ実行可能な「記録媒体」の実施の形態として把握することも可能である。
【図面の簡単な説明】
【0081】
【図1】実施の形態1の記録装置等のハードウェア構成の一例。
【図2】実施の形態1の記録装置のブロック図。
【図3】実施の形態1の記録装置の動作を示すフローチャート。
【図4】実施の形態1のハッシュ生成工程のフローチャート。
【図5】実施の形態1の統合ハッシュの生成を説明する図。
【図6】実施の形態1の統合ハッシュ制御部107の動作を説明する図。
【図7】実施の形態1のデータ構造を示す図。
【図8】図6を補足する図。
【図9】実施の形態1の再生・検証装置200のブロック図。
【図10】実施の形態1の再生・検証装置200の動作を示すフローチャート。
【図11】実施の形態2のハッシュ上書き処理のフローチャート。
【図12】実施の形態2の統合ハッシュ制御部107のハッシュ上書き処理を説明する図。
【図13】実施の形態2のデータ構造を示す図。
【図14】図12、図13を補足する図。
【図15】実施の形態3の統合ハッシュ制御部107の動作を説明する図。
【図16】実施の形態3の書き処理のフローチャート。
【図17】実施の形態4の編集装置500のブロック図。
【図18】実施の形態4の編集装置500の動作を示すフローチャート。
【図19】実施の形態4のデータ構造を示す図。
【図20】実施の形態5の記録装置のブロック図。
【図21】実施の形態5の記録装置の動作を示すフローチャート。
【符号の説明】
【0082】
101 撮像装置、102 音声録音装置、103 センサ情報取得装置、120 データ生成部、121 画像データ生成部、122 音声データ生成部、123 センサデータ生成部、130 データ取得部、131 画像データ取得部、132 音声データ取得部、133 センサデータ取得部、140 データハッシュ生成部、141 画像ハッシュ生成部、142 音声ハッシュ生成部、143 センサハッシュ生成部、104 鍵管理部、105 統合ハッシュ生成部、107 統合ハッシュ制御部、1071 ハッシュ管理部、108 中間ハッシュ生成部、109 データ書込部、110 データ更新部、111 記憶媒体。

【特許請求の範囲】
【請求項1】
データを順次に入力し、順次に入力した前記データのハッシュ値を生成して順次に出力する第1ハッシュ生成部と、
前記第1ハッシュ生成部によって順次に出力された前記ハッシュ値を順次に格納するハッシュ格納部と、
前記ハッシュ格納部により順次に格納される前記ハッシュ値の格納状況と格納順位とを監視することにより、前記ハッシュ格納部に最初の第1ハッシュ値が格納された後に次の第2ハッシュ値が格納されると前記ハッシュ格納部から第1ハッシュ値と第2ハッシュ値とをペアとして出力し、第2ハッシュ値の後に次の第3ハッシュ値が格納されると第3ハッシュ値と第2ハッシュ値とをペアとして出力すると共に第3ハッシュ値と第1ハッシュ値とをペアとして出力し、以降順次、第k(kは4以上の整数)ハッシュ値が格納されると第kハッシュ値と第k−1ハッシュ値とをペアとして出力すると共に第kハッシュ値と第1ハッシュ値とをペアとして出力するハッシュ制御部と、
前記ハッシュ制御部から出力された各ペアを入力し、入力したペアごとに、ペアから新たな新ハッシュ値を生成する第2ハッシュ生成部と
を備えたことを特徴とするハッシュ生成装置。
【請求項2】
前記ハッシュ格納部は、
N(N:N≧kの整数)個のハッシュ値を一つずつ格納するN個の格納領域を備え、
前記ハッシュ制御部は、
前記ハッシュ格納部のN個目の格納領域にN番目の第Nハッシュ値が格納されると、前記ハッシュ格納部から格納順位の古い順に少なくとも一つのハッシュ値を格納領域から削除し、未削除のハッシュ値のうち最も格納順位の古いハッシュ値と第Nハッシュ値とをペアとして前記第2ハッシュ生成部に出力し、
前記ハッシュ格納部は、
前記ハッシュ制御部によってハッシュ値が削除された領域に、前記第1ハッシュ生成部から出力されたハッシュ値を順次に格納し、
前記ハッシュ制御部は、
以降、前記ハッシュ格納部にN個のハッシュ値が格納されると、格納順位の最も古いハッシュ値から順に少なくとも一つのハッシュ値を格納領域から削除し、未削除のハッシュ値のうち格納順位の最も古いハッシュ値とN個目に格納された格納順位の最も新しいハッシュ値とをペアとして前記第2ハッシュ生成部に出力することを特徴とする請求項1記載のハッシュ生成装置。
【請求項3】
前記ハッシュ生成装置は、さらに、
前記第1ハッシュ生成部が入力した複数のデータと、前記第1ハッシュ生成部により生成された前記複数のデータのハッシュ値と、前記第2ハッシュ生成部により各ペアから生成された複数の新ハッシュ値とを所定の記憶装置に格納すると共に、少なくとも一つの所定のデータの削除を指令する削除指令に従うことにより前記記憶装置に格納された複数のデータから前記所定のデータと、前記所定のデータのハッシュ値と、前記所定のデータのハッシュ値を元として生成された新ハッシュ値とを削除し、削除した前記所定のデータのうち最も古いデータよりもひとつ古いデータから生成された未削除のハッシュ値と、削除したデータのうち最も新しいデータよりもひとつ新しいデータから生成された未削除のハッシュ値とから、前記第2ハッシュ生成部に新ハッシュ値を生成させるデータ更新部
を備えたことを特徴とする請求項1または2のいずれかに記載のハッシュ生成装置。
【請求項4】
前記第1ハッシュ生成部と前記第2ハッシュ生成部とは、
同一の鍵を用いた鍵付きハッシュ演算によって、ハッシュ値を生成することを特徴とする請求項1〜3のいずれかに記載のハッシュ生成装置。
【請求項5】
ハッシュ値を順次に格納するハッシュ格納部と、
先後連続して前記ハッシュ格納部に格納された2つのハッシュ値から新たな新ハッシュ値を生成すると共に、前記ハッシュ格納部に格納されたハッシュ値のうち最も過去に格納されたハッシュ値と、前記ハッシュ格納部に格納されたハッシュ値のうち最も最近に格納されたハッシュ値とから、新たな新ハッシュ値を生成するハッシュ生成部と
を備えたことを特徴とするハッシュ生成装置。
【請求項6】
前記ハッシュ生成装置は、さらに、
前記ハッシュ格納部が複数のハッシュ値を格納している場合において、予め設定された規則に従って、前記ハッシュ格納部に格納されたハッシュ値を格納時期の古い順に少なくとも一つ削除するハッシュ制御を備え、
前記ハッシュ生成部は、
前記ハッシュ制御部によって前記ハッシュ格納部に格納されたハッシュ値が格納時期の古い順に少なくとも一つ削除された場合には、削除されたハッシュ値のうち格納時期の最も新しいハッシュ値の直後に格納された未削除のハッシュ値と、最も最近に格納された未削除のハッシュ値とから、新たな新ハッシュ値を生成することを特徴とする請求項5記載のハッシュ生成装置。
【請求項7】
データが正当かどうかを検証する検証装置において、
少なくとも所定のデータと、前記所定のデータを対象として請求項1記載のハッシュ生成装置によって生成された複数の新ハッシュ値とが格納された記憶媒体から、前記所定のデータと前記複数の新ハッシュ値とを読み出す検証側データ読出部と、
前記検証側データ読出部から前記所定のデータを順次に入力し、順次に入力した前記所定のデータのハッシュ値を生成して順次に出力する検証側第1ハッシュ生成部と、
前記検証側第1ハッシュ生成部によって順次に出力された前記ハッシュ値を順次に格納する検証側ハッシュ格納部と、
前記検証側ハッシュ格納部により順次に格納される前記ハッシュ値の格納状況と格納順位とを監視することにより、前記検証側ハッシュ格納部に最初の第1ハッシュ値が格納された後に次の第2ハッシュ値が格納されると前記検証側ハッシュ格納部から第1ハッシュ値と第2ハッシュ値とをペアとして出力し、第2ハッシュ値の後に次の第3ハッシュ値が格納されると第3ハッシュ値と第2ハッシュ値とをペアとして出力すると共に第3ハッシュ値と第1ハッシュ値とをペアとして出力し、以降順次、第k(kは4以上の整数)ハッシュ値が格納されると第kハッシュ値と第k−1ハッシュ値とをペアとして出力すると共に第kハッシュ値と第1ハッシュ値とをペアとして出力する検証側ハッシュ制御部と、
前記検証側ハッシュ制御部から出力された各ペアを入力し、入力したペアごとに、ペアから新たな新ハッシュ値を生成する検証側第2ハッシュ生成部と、
前記検証側第2ハッシュ生成部によって生成された複数の新ハッシュ値と、前記検証側データ読出部により前記記憶媒体から読み出された複数の新ハッシュ値とを比較し、一致するかどうかを検証する検証側新ハッシュ値検証部と
を備えたことを特徴とする検証装置。
【請求項8】
前記記憶媒体は、
連続する所定の連続データと、前記連続データを対象として請求項1記載のハッシュ生成装置の前記第2ハッシュ生成部によって生成された複数の新ハッシュ値と、前記複数の新ハッシュ値の生成の元となった複数のハッシュ値であって請求項1記載のハッシュ生成装置の前記第1ハッシュ生成部によって生成された複数のハッシュ値とを少なくとも格納し、
前記検証装置は、さらに、
前記記憶媒体に格納されている前記連続データのうちの途中の一部分のデータの削除を指令する削除指令が入力される検証側データ入力部と、
前記検証側データ入力部に入力された削除指令の示す一部分のデータを前記記憶媒体に格納されている前記連続データから削除すると共に、削除された一部分のデータの両側に残余する残余データに対応する各ハッシュ値を前記記録媒体においてペアとして特定して前記検証側第2ハッシュ生成部に渡し、前記ペアから新ハッシュ値を前記検証側第2ハッシュ生成部に生成させ、生成させた前記新ハッシュ値を前記記憶媒体に格納する検証側データ更新部と
を備えたことを特徴とする請求項7記載の検証装置。
【請求項9】
前記記憶媒体は、
連続する所定の連続データと、前記連続データを対象として前記検証側第2ハッシュ生成部によって生成された複数の新ハッシュ値と、前記複数の新ハッシュ値の生成の元となった複数のハッシュ値であって前記検証側第1ハッシュ生成部によって生成された複数のハッシュ値とを少なくとも格納し、
前記検証装置は、さらに、
前記記憶媒体に格納されている前記連続データのうちの途中の一部分のデータの削除を指令する削除指令が入力される検証側データ入力部と、
前記検証側データ入力部に入力された削除指令の示す一部分のデータを前記記憶媒体に格納されている前記連続データから削除すると共に、削除された一部分のデータの両側に残余する残余データに対応する各ハッシュ値を前記記録媒体においてペアとして特定して前記検証側第2ハッシュ生成部に渡し、前記ペアから新ハッシュ値を前記検証側第2ハッシュ生成部に生成させ、生成させた前記新ハッシュ値を前記記憶媒体に格納する検証側データ更新部と
を備えたことを特徴とする請求項7記載の検証装置。
【請求項10】
コンピュータを
ハッシュ値を順次に格納するハッシュ格納部、
先後連続して前記ハッシュ格納部に格納された2つのハッシュ値から新たな新ハッシュ値を生成すると共に、前記ハッシュ格納部に格納されたハッシュ値のうち最も過去に格納されたハッシュ値と、前記ハッシュ格納部に格納されたハッシュ値のうち最も最近に格納されたハッシュ値とから、新たな新ハッシュ値を生成するハッシュ生成部、
として機能させるためのハッシュ生成プログラム。
【請求項11】
ハッシュ値をハッシュ格納部に順次に格納するステップと、
先後連続して前記ハッシュ格納部に格納された2つのハッシュ値から新たな新ハッシュ値を生成すると共に、前記ハッシュ格納部に格納されたハッシュ値のうち最も過去に格納されたハッシュ値と、前記ハッシュ格納部に格納されたハッシュ値のうち最も最近に格納されたハッシュ値とから、新たな新ハッシュ値を生成するステップと
を備えたことを特徴とするハッシュ生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate