JP2017005409A - データ認証システム、データ認証装置、方法およびプログラム - Google Patents

データ認証システム、データ認証装置、方法およびプログラム Download PDF

Info

Publication number
JP2017005409A
JP2017005409A JP2015115534A JP2015115534A JP2017005409A JP 2017005409 A JP2017005409 A JP 2017005409A JP 2015115534 A JP2015115534 A JP 2015115534A JP 2015115534 A JP2015115534 A JP 2015115534A JP 2017005409 A JP2017005409 A JP 2017005409A
Authority
JP
Japan
Prior art keywords
authentication
message
tests
verification
applying
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.)
Pending
Application number
JP2015115534A
Other languages
English (en)
Inventor
一彦 峯松
Kazuhiko Minematsu
一彦 峯松
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2015115534A priority Critical patent/JP2017005409A/ja
Publication of JP2017005409A publication Critical patent/JP2017005409A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】改ざん位置の特定ないし限定が可能なデータの認証方式を効率よく構築する。【解決手段】データ認証装置50は、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の認証タグを生成する2層ハッシュ木適用手段501を備え、2層ハッシュ木適用手段501は、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグの生成処理で共用する。【選択図】図12

Description

本発明は、認証タグを用いてデータの改ざんを検出するためのデータ認証システム、データ認証装置、データ認証方法およびデータ認証プログラムに関する。
任意のメッセージの入力に対して固定長の短いハッシュ値を出力するハッシュ関数がある。ハッシュ関数の暗号学的な安全性としては、衝突困難性(Collision-resistance、CR)が挙げられる。これは、ハッシュ関数Hについて任意の異なる2つの入力x,x’に対して、H(x)=H(x’)を見つける、すなわち出力の衝突を起こすものを見つけることが困難であることを指す。
保護する対象のデータDについて衝突困難性を有するハッシュ関数Hのハッシュ値T=H(D)を、データ認証用のタグである認証タグとして保持しておくことで、後にデータDがデータD’に改ざんされた場合にT’=H(D’)とTを比較することで、安全に改ざんを検出することができる。例えば、SHA−2などの一般的な暗号学的ハッシュ関数は、衝突困難性を有するものとみなされており、上記のような改ざんの検出用途等に用いられている。
ハッシュ関数を用いた改ざんの検出技術に関連して、例えば、非特許文献1〜3に記載の技術がある。
非特許文献1〜3には、組み合わせグループテスト(combinatorial group testing, CGT)と呼ばれる組み合わせ問題を利用した、メッセージの改ざん検出技術の一例が記載されている。
また、本発明に関連する技術として、非特許文献4には、符号理論を用いて、グループテストの適切なテスト数およびテスト毎のアイテムを決定する手法が記載されている。
Michael T. Goodrich, Mikhail J. Atallah, Roberto Tamassia, "Indexing Information for Data Forensics.", Applied Cryptography and Network Security, Third International Conference, ACNS 2005, New York, NY, USA, June 7-10, 2005, p.206-221. Giovanni Di Crescenzo, Shaoquan Jiang, Reihaneh Safavi-Naini, "Corruption-Localizing Hashing.", Computer Security - ESORICS 2009, 14th European Symposium on Research in Computer Security, Saint-malo, France, September 21-23, 2009. p.489-504. Annalisa De Bonis, Giovanni Di Crescenzo, "Combinatorial Group Testing for Corruption Localizing Hashing.", COCOON 2011, p.579-591. Ely Porat, AMir Rothschild, "Explicit Non-Adaptive Combinatorial Group Testing Schemes.", ICALP 2008.
一般に、メッセージの全体に対して1回のハッシュ関数を適用して1つの認証タグを生成する方法(以下、「one−tag法」という。)の場合、メッセージ中の改ざん位置の情報を得るのは不可能である。これは、改ざんが行われた場合、ハッシュ値の値は正しい値とは全く異なるランダムな値となるからである。
この問題に対して、例えば、メッセージの全体に1回のハッシュ関数を適用するのではなく、メッセージを任意の部分に分割し、それらの部分ごとにハッシュ関数を適用する方法がある。この方法によれば、部分ごとのチェックが可能となる。すなわち、メッセージに対する改ざん位置を、分割後の部分の範囲内に特定することが可能になる。
例えばメッセージMがm個のアイテムM[1],...,M[m]からなる場合に、各アイテムに対してハッシュ関数を適用して、認証タグT[1]=H(M[1]),...,T[m]=H(M[m])を求める例が挙げられる。なお、求めたm個の認証タグ(T[1],...,T[m])は、改ざんの危険のない場所に保持されればよい。以下、このような改ざんを検出したい最小単位であるアイテムの各々に対してハッシュ関数を適用して認証タグを生成する方法を「each−tag法」という場合がある。
メッセージの分割例としては、ハードディスク上のデータに対し、ファイルごとやディスクセクタごとに分けることが挙げられる。しかし、each−tag法はm個のアイテムに対してm個のタグが生成されるため、保存すべきデータ量の増加が大きいという問題がある。
そこで、非特許文献1や非特許文献2に記載されているように、CGTを利用して、メッセージを、互いに重なりを許す複数の部分系列に分解し、この部分系列ごとにハッシュ関数を適用するというアプローチがある。
例えば、メッセージM=(M[1],...,M[7])のように、メッセージが7個のアイテムからなるとき、該メッセージを、
S[1]=(M[1],M[2],M[3],M[4]),
S[2]=(M[1],M[2],M[5],M[6]),
S[3]=(M[1],M[3],M[5],M[7])
という3つの部分系列S[1]〜S[3]に分解し、それぞれに対してハッシュ関数を適用して、3つの認証タグT[1],...,T[3]を計算しとする。すなわち、
T[1]=H(S[1]),
T[2]=H(S[2]),
T[3]=H(S[3])
を計算したとする。
この場合、each法において7つ必要であった認証タグの数を、3つに減らすことが可能となる。
なお、改ざん位置は、各(T[i],S[i])に対する検証結果から、CGT理論に基づき特定ないし限定される。以下、部分系列を例示する際に、上記の部分系列S[1]〜S[3]のことを「第1の分解例」という場合がある。
CGTの性質をより一般に言えば、部分系列の取り方を工夫することにより、改ざんされたアイテム数が所与のしきい値以下のときには、改ざんされたアイテムまで特定することが可能となる。
どのような部分系列に分解し、またその結果どのような改ざんアイテムの特定が可能になるかは、非特許文献1に記載されているように、組み合わせ問題(CGT)と密接に関連する。
例えば、非特許文献1には、特定の分布を持つ乱数を用いてCGT行列を生成する方法が記載されている。また、非特許文献2には、巡回行列を用いてCGT行列を生成する方法が記載されている。また、非特許文献3には、より明示的にCGTとハッシュ関数を用いた方法が開示されている。
ここで、CGT行列とは、グループテストに用いるテスト毎の部分系列(アイテムの組合せ)を示す2値行列である。例えば、r個のアイテムおよびs個のテストからなるCGTでは、s行r列の2値行列であるCGT行列Wを生成して、生成したCGT行列Wに従ってテストを行う。CGT行列Wは、i行のj列目の要素が1であれば、j番目のテストでi番目のアイテムをテストに含める、といったことが示されればよい。以下、非特許文献1〜3に記載されているような、CGTを利用して各グループテスト毎にハッシュ関数を適用する方法を「単純CGT−tag法」という場合がある。
ところで、データベースシステムに記憶されているデータ群に対して、認証タグを用いて改ざんの検出を行うことを考えた場合、現実的なシステムの制約などから、不正者が一度に大量のアイテム(ファイルやディスクセクタ)を改ざんすることは考えにくい。このような場合に、CGTを利用してテスト毎(より具体的には、部分系列毎)に認証タグを生成する単純CGT−tag法は、認証タグの総数を抑えつつ、現実的に起こりうる改ざんに対し、その場所を特定可能なデータベースシステムを構築することができるため、好ましい。なお、各アイテムにハッシュ関数を適用した場合と同様、CGTの各テストにハッシュ関数を適用した場合であっても、任意の改ざんに対して、改ざんがあったという事実を検出可能という性質は変わらない。
なお、非特許文献1には、認証タグとして、鍵付きのハッシュ関数の出力値であるメッセージ認証コード(Message authentication code, MAC)を用いる例が記載されているのに対して、非特許文献2には、鍵のないハッシュ関数の出力値であるハッシュ値を用いる例が記載されている。鍵のないハッシュ関数の場合、タグ計算を誰でも行うことができるため、求めたタグ(ハッシュ値)をメッセージと別の安全な場所に保存する必要が一般に生じるが、得られる効果(改ざん検出効果)としては鍵付きであっても鍵なしであっても基本的に変わらない。
このように、非特許文献1〜3に記載されているような単純CGT−tag法を用いれば、each法と比べて認証タグの総数を抑えつつ、改ざんの有無に加えて改ざん位置の特定ないし限定が可能である。しかし、単純にCGTを利用してテスト毎に認証タグを生成する方法(単純CGT−tag法)は、one−tag法に比べて計算量が大幅に増加するという問題がある。
一般的なハッシュ関数は入力長に対して線形オーダーの計算量を持つ。このため、おおまかに言えば、s個の認証タグを計算するために、仮にm個のアイテムからなる入力に対するハッシュ関数の計算をs回行うとすると、単純に計算量をs倍する効果を持つ。
より正確に言えば、どれだけ計算量が増加するかはどのようなCGTを実行するかに依存する。例えば、上記の第1の分解例のように、アイテム数がmのメッセージMに対して、任意の1アイテムの改ざんを特定可能にするCGTを適用した場合、必要なテストの数sは、log(m)となることが知られている。また、ほぼすべてのテストにおいてr=m/2個のアイテムが用いられる。
従って、ハッシュ関数の計算量が、入力されるアイテム数に比例すると考えると、単純CGT−tag法は、改ざん有無のみを検出するために認証タグを1つ生成する場合(one−tag法)に比べて、約(1/2)log(m)倍の計算量が必要となる。データベースなどのアプリケーションでは、mは極めて大きいことが予想されるため、たとえ(1/2)log(m)倍であっても、計算量の増加は著しいものになる。
さらに、一般にd個のアイテムの改ざんを同定しようとする場合、CGTによるテストの数sは、O(dlog(m))となることが知られている。したがって、仮に各テストの部分系列がr=m/2個程度のアイテムを含んでいるとすると、one−tag法に比べて、d個のアイテムの改ざんを同定するために、約(d/2)log(m)倍の計算量が必要となる。ここで、O()はオーダ記法を表している。
そこで、本発明は、改ざん位置の特定ないし限定が可能なデータの認証方式を効率よく構築することを目的とする。
なお、改ざん位置の範囲を特定することと、改ざん位置の範囲を限定することの違いは、基本的に事前に想定する攻撃のモデルと、個々のテスト結果の一致/不一致の情報をどう解釈するかに依存する。したがって、改善位置の範囲の特定と限定の違いは、個々のテストにおける認証タグの計算方法とは切り離して考えることが可能であり、本発明では、改ざん位置の範囲の特定と限定とを特に区別せず取り扱うものとする。また、非特許文献2に記載されているように、CGTを用いた場合、同時に改ざんされたアイテム数が多い場合には改ざん位置の特定に至らないことが考えられるが、その場合でも改ざんされた範囲を限定することは一般に可能である。
本発明によるデータ認証装置は、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の認証タグを生成する2層ハッシュ木適用手段を備え、2層ハッシュ木適用手段は、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグの生成処理で共用することを特徴とする。
本発明によるデータ認証装置は、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の検証用の認証タグであってテストの数に応じた複数の検証用の認証タグを生成する2層ハッシュ木適用手段と、メッセージに予め対応づけられている複数の認証タグと、複数の検証用の認証タグとを比較して、メッセージに対する改ざんの有無および改ざんがあった場合にその範囲を特定ないし限定する認証タグ検証手段とを備え、第2の2層ハッシュ木適用手段は、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグの生成処理で共用することを特徴とする。
また、本発明によるデータ認証システムは、認証タグ生成装置と、認証タグ検証装置とを備え、認証タグ生成装置は、改ざん検出の対象とされるメッセージについて、メッセージに含まれるアイテムに対するグループテストに用いる1つ以上の部分系列であって、互いに重複を許す1つ以上のアイテムからなる1つ以上の部分系列を生成するグループテスト生成手段と、部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の認証タグを生成する2層ハッシュ木適用手段とを含み、認証タグ検証装置は、改ざん検出の対象とされるメッセージから、2層ハッシュ木生成適用手段と同様の方法を用いて、テストの数に応じた複数の検証用の認証タグを生成する第2の2層ハッシュ木適用手段と、メッセージに予め対応づけられている複数の認証タグと、複数の検証用の認証タグとを比較して、メッセージに対する改ざんの有無および改ざんがあった場合にその範囲を特定ないし限定する認証タグ検証手段とを含み、2層ハッシュ木適用手段は、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグの生成処理で共用することを特徴とする。
また、本発明によるデータ認証方法は、情報処理装置が、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の認証タグを生成する過程で、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグの生成処理で共用することを特徴とする。
また、本発明によるデータ認証方法は、情報処理装置が、所定のタイミングで、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の認証タグを生成し、所定のタイミングで、メッセージから、複数の認証タグを生成した方法と同じ方法を用いて、テストの数に応じた複数の検証用の認証タグを生成し、複数の認証タグと、複数の検証用の認証タグとを比較して、メッセージに対する改ざんの有無およびおよび改ざんがあった場合にその範囲を特定ないし限定し、ブロックスライス2層ハッシュ木構造の適用に際して、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグの生成処理で共用することを特徴とする。
また、本発明によるデータ認証プログラムは、コンピュータに、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の認証タグを生成する処理を実行させ、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグを生成する処理で共用させることを特徴とする。
また、本発明によるデータ認証プログラムは、コンピュータに、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の検証用の認証タグを生成する処理、およびメッセージに予め対応づけられている複数の認証タグと、第2の2層ハッシュ木適用手段により生成された複数の検証用の認証タグとを比較して、メッセージに対する改ざんの有無および改ざんがあった場合にその範囲を特定ないし限定する処理を実行させ、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグを生成する処理で共用させることを特徴とする。
本発明によれば、改ざん位置の特定ないし限定が可能なデータの認証方式を効率よく構築することができる。
第1の実施形態の認証タグ生成装置の構成例を示すブロック図である。 2層ハッシュ木構造の概念図である。 2層ハッシュ木構造による、ある1つのテストに対応した認証タグ(ハッシュ値)の計算処理の例を示す説明図である。 第1の分解例に対する愚直な方法の適用例を示す説明図である。 第1の分解例に対する本実施形態の認証タグ生成方法の適用例を示す説明図である。 第1の分解例に対する本実施形態の認証タグ生成方法の適用例(別例)を示す説明図である。 第1の実施形態の認証タグ生成装置の動作の一例を示すフローチャートである。 第2の実施形態の認証タグ検証装置の構成例を示すブロック図である。 第2の実施形態の認証タグ検証装置の動作の一例を示すフローチャートである。 第3の実施形態のデータ認証システムの構成例を示すシステム構成図である。 本実施形態のデータ認証システムの適用例を示す説明図である。 本発明によるデータ認証装置の他の構成例を示すブロック図である。 本発明によるデータ認証装置の他の構成例を示すブロック図である。 本発明によるデータ認証システムの概要を示すブロック図である。
以下、本発明の実施形態を図面を参照して説明する。以下、特に断りのない限り、1ブロックの長さをnビットとする。
実施形態1.
図1は、第1の実施形態の認証タグ生成装置の構成例を示すブロック図である。図1に示す認証タグ生成装置10は、メッセージ入力手段101と、グループテスト生成手段102と、2層ハッシュ木適用手段103と、認証タグ出力手段104とを備える。
認証タグ生成装置10は、例えば、CPU(Central Processing Unit)と各種記憶装置(メモリやディスク等)と各種入出力装置(マウスやキーボード等)とを備えたコンピュータにより実現可能である。また、認証タグ生成装置の各手段は、プログラムを記憶装置に格納しておき、このプログラムをCPU上で動作させることにより実現することができる。
メッセージ入力手段101は、改ざんの検出対象とされるメッセージMを入力する。ここでは、メッセージMがm個のアイテムより構成されている、すなわちM=(M[1],...,M[m])とする。それぞれのアイテムM[j](j=1,...,m)は、長さが異なっていてもよいし、値が同じものがあってもよい。アイテムの例としては、例えば、ハードディスクの1セクタの内容であったり、データベースの1エントリあるいは文字情報の1キャラクタであってもよい。メッセージ入力手段101は、例えば、キーボードなどの文字入力装置により実現される。
グループテスト生成手段102は、改ざん位置の特定ないし限定のための組み合わせグループテストにおけるテスト毎のアイテムの組み合わせを決定し、該組み合わせを示すグループテスト行列Wを生成する。具体的には、入力されたメッセージMのアイテム数m、および特定可能な改ざんアイテム数の最大値dに応じて、s行m列の2値行列を生成する。ここで、sはテストの数(これは生成する認証タグの数でもある)を表している。以下、グループテストにおけるテスト毎の、メッセージのアイテムの組み合わせを、単に部分系列という場合がある。
例えば、上記の第1の分解例ではメッセージM=(M[1],...,M[7])を、
S[1]=(M[1],M[2],M[3],M[4])
S[2]=(M[1],M[2],M[5],M[6])
S[3]=(M[1],M[3],M[6],M[7])
という3つの部分系列S[1]〜S[3]に分解・再構築しているが、これは、グループテスト生成手段102が以下の式(1)に示すようなグループテスト行列Wを生成することと同意である。
Figure 2017005409
式(1)に示されるグループテスト行列Wは、第i行の第j列の値が1であれば、i番目のテストにアイテムM[j]を用いることを表し、値が0であればi番目のテストにアイテムM[j]を用いないことを表している。例えば、式(1)のグループテスト行列Wの第1行の行ベクトルrWは、(1,1,1,1,0,0,0)であるが、これは、第1のテストに、アイテムM[1],M[2],M[3],M[4]という計4つのアイテムが用いられることを表している。また、例えば、式(1)のグループテスト行列Wの第2行の行ベクトルrWは、(1,1,0,0,1,1,0)であるが、これは、第2のテストに、アイテムM[1],M[2],M[5],M[6]という計4つのアイテムが用いられることを表している。このように、グループテスト行列Wの役割は、各要素の値により、各テストに対応するタグ計算においてメッセージ中のどのアイテムを使用するかを示すことにある。
グループテスト行列の生成方法、すなわちグループテストに用いる部分系列の決定方法としては、任意の既存の手法が利用可能である。グループテスト生成手段102は、例えば、非特許文献1に記載されている手法を利用してグループテスト行列Wを生成してもよい。なお、非特許文献1には、特定の分布を持つ乱数を用いてグループテスト行列を生成する手法が記載されている。また、グループテスト生成手段102は、例えば、非特許文献2に記載されている手法を利用してグループテスト行列Wを生成してもよい。なお、非特許文献2には、部分系列の巡回を用いてグループテスト行列を生成する手法が記載されている。また、グループテスト生成手段102は、非特許文献4に記載されている手法を利用してグループテスト行列Wを生成してもよい。なお、非特許文献4には、テストの数sが、O(dlog(m))を達成するように、符号理論を用いてグループテスト行列を生成する手法が記載されている。
2層ハッシュ木適用手段103は、改ざん検出の対象とされるメッセージMに対して、グループテスト生成手段102により決定されたグループテストの部分系列の各々に対して2層ハッシュ木構造を適用してs個の認証タグを生成する。認証タグの生成には、可変調入力・固定長出力の2種類のハッシュ関数を用いる。すなわち、テスト毎に、当該テストに用いるとされた部分系列(アイテムの組合せ)に対して、2種類のハッシュ関数H()とH’()を組み合わせた2層ハッシュ木構造を適用して、s個の認証タグを生成する。
さらに、本実施形態の2層ハッシュ木適用手段103は、各テストの部分系列に2層ハッシュ木構造を適用する際に、複数のテストで用いられるアイテムについて、当該アイテム(仮にM[i]とする)を第1のハッシュ関数H()に与えた出力z[j]=H(M[j])を、異なるテスト間で共有する。2層ハッシュ木適用手段103は、例えば、あるテストに対応する認証タグの計算処理で求めた出力z[j]を、他のテストに対応する認証タグの計算処理でも使用可能にしたり、最初に各アイテムについて第1のハッシュ関数H()に与えておき、その出力を任意のテストに対応する認証タグの計算処理で使用可能にする等により、テスト間での共有を行う。
図2は、2層ハッシュ木構造の概念図である。図2に示すように、2層ハッシュ木構造は、ノードにハッシュ値を持つ木構造であって、かつノードの階層が2層の木構造である。上位ノードのハッシュ値(図の例でいう“Top hash”)は、下位ノードのハッシュ値(図の例でいう“hash1_1”〜“hash1_5”)を結合した結果に対してハッシュ関数を適用した結果得られるハッシュ値である。本例では、2層のハッシュ木構造を用いるので、図中の“Top hash”が、最終的に求めるハッシュ値(認証タグ)となる。また、本例では、部分系列の各々に対して2層ハッシュ木構造を適用するので、1つの2層ハッシュ木構造としては、部分系列に含まれるアイテムの数だけ下位ノードを有していればよい。なお、部分系列に含まれるアイテムをそれぞれ第1のハッシュ関数に与えて得られた出力の各々が、下位ノードの各々に相当する。以下、ある部分系列に対して1回のハッシュ関数を適用して認証タグを生成する単純CGT−tag法との比較に際し、本例のような、当該部分系列を任意のブロック(ここでは、アイテム単位)に分割して2段階にハッシュ関数を適用して最終的に1つの認証タグを生成する手法を、ブロックスライス2層ハッシュ木構造という場合がある。
図3は、H()とH’()とを用いた2層ハッシュ木構造による、ある1つのテストに対応した認証タグの計算処理の例を模式的に示す説明図である。なお、図3において処理は上から下へと進む。今、第1のテストに5個のアイテム(仮に、M[1]〜M[5]とする)が用いられるとする。この場合、第1のテストに対応する認証タグの生成処理は、概念的に次のように表される。まず当該テストの部分系列の各アイテムに対して第1のハッシュ関数H()を適用する。そして、得られたハッシュ値を全て結合したものを、第2のハッシュ関数H’()の入力として得られたハッシュ値を、当該テストに対応する認証タグとする。なお、図3の例を簡易な式で表すと次の通りとなる。なお、“||”はデータの連結処理を表している。
T[1]=H’(H(M[1])||H(M[2])||・・・||H(M[5])
・・・(2)
ここで、H()およびH’()には、AESなど標準的なブロック暗号に用いられる関数やSHA−2などのハッシュ関数を用いてもよい。また、H()とH’()とは単一の関数に異なる定数(0と1など)を入力アイテムに含む(連結する)よう構成されたものであってもよい。
2層ハッシュ木適用手段103は、上記の式(2)の計算を、全てのテストの部分系列に対して行う。ただし、後述するように、本実施形態では異なるテスト間で第1のハッシュ関数の出力を共有する。これにより、計算量の増加を抑制する。
具体的には、アイテムM[j]を使用するテストが2つあった場合、この2つのテストでは、共に第1のハッシュ関数の出力、すなわちH(M[j])を用いている。本願発明は、このことに着目して、各テストに対応する認証タグの計算を、テスト毎に個別に2種類のハッシュ関数を適用して行うのではなく、途中の計算結果をテスト間で共有しつつ並列に行うようにする。
まず、本実施形態の認証タグ生成方法の比較例として、単純に、テスト毎にブロックスライス2層ハッシュ木構造を適用する方法について説明する。以下、当該方法を「愚直な方法」という場合がある。
(愚直な方法)
この方法では、テストのインデックスi=1,...,s、アイテムのインデックスj=1,...,mとして、各iについて、グループテスト行列Wのi行目で値が1である列jを見つけ、見つかった全てのjについて、それぞれ対応するアイテムM[j]を第1のハッシュ関数H()に与えた出力を計算する。そして、得られた全ての出力を連結した上で、第2のハッシュ関数H’()に入力する。そのようにして得られた出力を、当該i番目のテストに対応する認証タグT[i]とする。これを全てのiについて行い、認証タグリストTL=(T[1],...,T[s])を得る。
図4は、第1の分解例に対する愚直な方法の適用例を示す説明図である。図4に示す内容を、簡易な式で表すと次の通りとなる。
・i=1
[第1のハッシュ関数適用処理]
Z[i]=H(M[1])||H(M[2])||H(M[3])||H(M[4])
[第2のハッシュ関数適用処理]
T[i]=H’(Z[i])
・i=2
[第の1ハッシュ関数適用処理]
Z[i]=H(M[1])||H(M[2])||H(M[5])||H(M[6])
[第2のハッシュ関数適用処理]
T[i]=H’(Z[i])
・i=3
[第1のハッシュ関数適用処理]
Z[i]=H(M[1])||H(M[3])||H(M[5])||H(M[7])
[第2のハッシュ関数適用処理]
T[i]=H’(Z[i])
これにより、TL=(T[1],T[2],T[3])を得る。
次に、本実施形態の認証タグ生成方法について説明する。2層ハッシュ木適用手段103は、例えば次のようにして、愚直な方法と同様の認証タグリストTLを生成する。まず、2層ハッシュ木適用手段103は、s個の状態変数Z[1],...Z[s]を用意する。なお、各状態変数はゼロ値で初期化されているものとする。そして、2層ハッシュ木適用手段103は、アイテムのインデックスjを1からmまで順に示しつつ、H(M[j])の計算を1回ずつ行う。ここでは、仮に、その出力がbufに一時的に保持されるとする。なお、buf=H(m[j])である。
そして、各jにおいてH(M[j])を計算した際に、その出力を、当該アイテムM[j]を用いるテストに対応する状態変数Z[i]に連結させる。すなわち、グループ行列Wにおいてi行j列の成分が1の値である全てのiについて、状態変数Z[i]<=Z[i]||bufを計算する。なお、“<=”は右辺と左辺とで同じ変数が用いられる場合に、右辺の計算を行った後にその結果を左辺の変数に代入することを明示的に表す代入記号として用いているが、一般に“=”と同様である。このような処理を、j=1,...,mの全てに対して行う。これにより、各テストの部分系列に含まれる各アイテムに対して第1のハッシュ関数を適用して得られた出力の連結結果が、テスト毎に、状態変数Z[i]に保持される。そして、そのようにして得られた状態変数Z[i]の各々に対してH’()を適用して、各テストに応じた認証タグを得る。ここでは、T[i]=H’(Z[i])を計算すればよい。この処理(第2のハッシュ関数の適用処理)を、すべてのiについて行えば、認証グリストTL=(T[1],...,T[s])を得ることができる。
図5および図6は、第1の分解例に対する本実施形態の認証タグ生成方法の適用例を示す説明図である。本方法の特徴は、CGTを利用しつつ、テストごとに2層ハッシュ木構造を適用して認証タグを生成する過程で、あるアイテムに対して第1のハッシュ関数を適用して得られた結果を、同じアイテムを用いる他のテストで利用することにある。なお、図5の例では、各テストに応じた認証タグの生成処理の中で、必要なアイテムに対して第1のハッシュ関数を適用しているのに対して、図6の例では、最初に全てのアイテムに対して第1のハッシュ関数を適用している点が異なるが、これらはいずれであってもよい。
なお、図6に示す内容を、簡易な式で表すと次の通りとなる。
(本実施形態の認証タグ生成方法)
[初期化処理]
Z[1]=0
Z[2]=0
Z[3]=0
[第1のハッシュ関数適用処理]
・j=1
buf=H(m[j])
Z[1]<=Z[1]||buf
Z[2]<=Z[2]||buf
Z[3]<=Z[3]||buf
・j=2
buf=H(m[j])
Z[1]<=Z[1]||buf
Z[2]<=Z[2]||buf
・j=3
buf=H(m[j])
Z[1]<=Z[1]||buf
Z[3]<=Z[3]||buf
・j=4
buf=H(m[j])
Z[1]<=Z[1]||buf
・j=5
buf=H(m[j])
Z[2]<=Z[2]||buf
Z[3]<=Z[3]||buf
・j=6
buf=H(m[j])
Z[2]<=Z[2]||buf
・j=7
buf=H(m[j])
Z[3]<=Z[3]||buf
[第2のハッシュ関数適用処理]
T[1]=H’(Z[1])
T[2]=H’(Z[2])
T[3]=H’(Z[3])
これにより、TL=(T[1],T[2],T[3])を得る。
愚直な方法では、図4に示すように、認証タグリストTLを得るための第1のハッシュ関数H()の呼び出し回数が約アイテム数m×テスト数sのm・s回必要となる(図中の破線内を参照)。これに対して、本実施形態の認証タグ生成方法は、図5および図6に示すように、認証タグリストTLを得るための第1のハッシュ関数H()の呼び出し回数がアイテム数mと同じ7回で済む(図中の破線内を参照)。
なお、仮に単純CGT−tag法を用いた場合、すなわち部分系列に対してハッシュ値を計算する方法の場合、SHA−2などの一般的なハッシュ関数では、語頭が同じ部分を除けば計算を共有できないため、全体の計算量が大きくなる。グループテストにおける各テストの部分系列における語頭の一致する部分は大きいとは限らず、従って大部分は共有不可能であると考えられる。
なお、ブロックスライス2層ハッシュ木構造を利用して認証タグを生成する場合、H’()の計算回数は計算方法によらず、s回である。各テストにおけるH’()の入力長は、H’()を適用する直前の状態変数Z[i]の長さ、すなわち当該テストの部分系列に対する第1のハッシュ関数の適用による各出力値の連結後の長さとなるが、これはグループテスト行列Wの列重みとH()の出力長の積と等しい。列重みの最大値はmであるので、i個の状態変数全体の長さはオーダ記法を用いるとO(m・s)となる。
しかし、H’()は一般的なハッシュ関数であれば、圧縮関数(compression function)と呼ばれる固定長入出力の関数を繰り返して処理を行うことになり、その場合、H’()の入力が全て定まってからH’()を適用するのではなく、入力すべきデータ(本例でいえば、Z[i])をブロックごと(例えば、1回のH()の出力値ごと)にとりこみ、H’()の圧縮関数を適用することが可能である。このとき、圧縮関数の出力値(たとえば、256ビットの定数長)を保持しておけば、1つのテストに対応する計算が可能となる。全体の実行に関しては、s個の圧縮関数の出力値を保持しておけばよく、結果として本実施形態のタグ計算処理に必要なメモリ量はO(s)とすることができる。
以上をまとめると、愚直な方法ではH()の呼び出し回数がO(ms)、H’()の呼び出し回数がs回、必要なメモリ量がO(m・s)となるところ、本実施形態の認証タグ生成方法によれば、H()の呼び出し回数をm回、H’()の呼び出し回数をs回、必要なメモリ量をO(s)とすることができる。例えば、データのアイテムの長さnがH()の出力長よりも大幅に長い場合、愚直な方法ではH()の計算量が支配的になるが、本実施形態の認証タグ生成方法によれば、この部分を大きく削減する効果がある。
認証タグ出力手段104は、2層ハッシュ木適用手段103が生成した認証タグリストTLを出力する。認証タグ出力手段104は、例えば、ディスプレイ装置やプリンタ装置や所定のネットワークノード(データベースや管理サーバなど)等へ認証タグリストを出力してもよい。
次に、本実施形態の動作を説明する。図7は、本実施形態の認証タグ生成装置10の動作の一例を示すフローチャートである。図7に示す例では、まず、メッセージ入力手段101が、改ざん検出の対象とされるメッセージMを入力する(ステップS101)。本例では、メッセージ入力手段101は、m個のアイテムからなるメッセージM=(M[1]〜M[m])を入力する。
次に、グループテスト生成手段102が、入力されたメッセージMのアイテム数m、および特定可能な改ざんアイテム数の最大値dに基づいて、グループテストの各テストに用いる部分系列を決定して、グループテスト行列Wを生成する(ステップS102)。グループテスト生成手段102は、例えば、m個のアイテムからなるメッセージMを、グループテスト理論に基づいて、互いに重なりを許す1つ以上のアイテムからなるs個の部分系列に分解し、得られたs個の部分系列を示すs行m列の2値行列であるグループテスト行列Wを生成する。
次に、2層ハッシュ木適用手段103が、グループテスト行列Wを基に、可変長入力・固定長出力のハッシュ関数H()およびH’()を用いたブロックスライス2層ハッシュ木構造を、メッセージM(より具体的には、メッセージMから生成される各テスト用の部分系列)に適用し、s個の認証タグからなる認証タグリストTLを生成する(ステップS103)。
このとき、2層ハッシュ木適用手段103は、ハッシュ計算における部分データ間の類似性を利用しつつ、各テストの部分系列に対してブロックスライス2層ハッシュ木構造を適用する。より具体的には、グループ行列Wの列ベクトルの値に応じて、第1のハッシュ関数を適用する処理に代えて、他のテストで既に算出済みのハッシュ値を用いる。2層ハッシュ木適用手段103は、例えば、テスト数であるs個の状態変数Z[]を用意し、メッセージの各アイテムを所定の順に第1のハッシュ関数H()を適用して得えられた結果(ハッシュ値)を、当該アイテムを使用する他のテストに対応した状態変数Z[]に反映(逐次連結)させることで、異なるテストにおける第1のハッシュ関数の結果を利用可能にしてもよい。また、例えば、2層ハッシュ木適用手段103は、s個の状態変数Z[]を用意し、メッセージの各アイテムを所定の順に第1のハッシュ関数H()を適用して得られた結果(ハッシュ値)を、当該アイテムを使用するテストの各々における第2のハッシュ関数の圧縮関数に適用し、その出力値を、当該テストに対応する状態変数Z[]に保持させることで、異なるテストにおける第1のハッシュ関数の結果を利用可能にしてもよい。
最後に、認証タグ出力手段104が、得られた認証タグリストTLを出力する(ステップS104)。
以上のように、本実施形態によれば、改ざん位置の特定ないし限定が可能な認証タグリストを効率よく生成することができる。より具体的には、改ざん位置の特定ないし限定が可能な認証タグリストを、必要なメモリ量を抑止しつつ、少ない計算量で生成することができる。したがって、改ざん位置の特定ないし限定が可能なデータの認証方式を効率よく構築することができる。
一般的なハッシュ関数を用いて1回のハッシュ関数の適用により認証タグを生成する(単純なCGT−tag法)場合、メッセージがm個の同じ長さのアイテムから構成される場合に、列重みの最大値で考えると、mに比例した計算量を要する。また、グループテスト全体では(行列が十分密であると仮定して)s×mに比例した計算量となる。これに対して、本実施形態の認証タグ生成方法によれば次に示すように大幅の計算量の削減が見込まれる。
すなわち、本実施形態の認証タグ生成方法は、2種類のハッシュ関数H()とH’()を組み合わせた2層のハッシュ木構造をテスト毎に適用するものであり、かつ、共通のアイテムを用いるテスト間で、当該アイテムを第1のハッシュ関数に与えた出力をともに内部の計算で用いる構成を採用している。このため、グループテストの組み合わせ内容にかかわらず、s+mに比例した計算量となる。sまたはmが大きいとき、単純なCGT−tag法に比べて大幅ま計算量の削減が可能である。
また、each−tag法との比較においても、本実施形態の認証タグ生成方法は、ほぼ同等の計算量で、保存すべきデータ量をより少なくすることができる。
なお、本実施形態において、各アイテムの中間ハッシュ値は最後まで保持しておく必要はなく、関連するデータ処理(例えば、当該アイテムを利用するテストの状態変数Zに反映する処理や圧縮関数の実行処理)を行う間のみ保持されていればよい。
また、衝突困難性に関して、本実施形態では、ブロックスライス2層ハッシュ木構造を用いているため、H()とH’()とがそれぞれ衝突困難性を有する関数であれば、個々のテストにおいて出力を衝突させるような2つのデータを見つけるのは困難である。なお、異なるテスト同士での出力の衝突は作られる場合があるが、一般的な用途においてはそのような異なるテスト同士での出力の衝突は問題とならない。あるいは、状態変数Z[i]に、さらにテスト毎のインデックスi=1〜sまたは該iに固有のデータを連結することにより、そのような異なるテスト間の出力衝突についても発見を困難にすることができる。
実施形態2.
次に、本発明の第2の実施形態について図面を参照して説明する。図8は、第2の実施形態の認証タグ検証装置の構成例を示すブロック図である。図8に示す認証タグ検証装置20は、データ入力手段201と、2層ハッシュ木適用手段202と、認証タグ検証手段203と、検証結果出力手段204とを備える。
認証タグ検証装置20は、認証タグ生成装置10と同様、例えば、CPUと各種記憶装置(メモリやディスク等)と各種入出力装置(マウスやキーボード等)とを備えたコンピュータにより実現可能である。また、認証タグ検証装置の各手段は、プログラムを記憶装置に格納しておき、このプログラムをCPU上で動作させることにより実現することができる。
データ入力手段201は、改ざん検出の対象とされるメッセージMと、メッセージMに対して既に生成されている認証タグリストTLと、認証タグリストTLの生成に用いたグループテストの部分系列を示す情報としてのグループテスト行列Wとを入力する。なお、データ入力手段201に入力される、認証タグリストTLおよびグループテスト行列Wは、例えば、第1の実施形態の認証タグ生成装置10が当該メッセージMに対して生成した認証タグリストTLおよびグループテスト行列Wである。データ入力手段201は、例えば、キーボードなどの文字入力装置により実現される。
第1の実施形態と同様、以下では、メッセージMがm個の個別のアイテムより構成されているものとする。すなわち、M=(M[1],...,M[m])とする。
2層ハッシュ木適用手段202は、改ざん検出の対象とされるメッセージMに対して、入力されたグループテスト行列Wを基に、可変長入力・固定長出力のハッシュ関数H()およびH’()を用いたブロックスライス2層ハッシュ木構造を適用し、s個の検証用認証タグを含む検証用認証タグリストを生成する。なお、2層ハッシュ木適用手段202による検証用認証タグの生成方法は、2層ハッシュ木適用手段103による認証タグの生成方法と同じである。以下、2層ハッシュ木適用手段202により生成されたs個の検証用認証タグをT’[1],...,T’[s]と記し、s個の検証用認証タグT’[1],...,T’[s]を含む検証用認証タグリストを、TL’と記す。なお、TL’=(T’[1],...,T’[s])である。
認証タグ検証手段203は、入力された認証タグリストTLと、2層ハッシュ木適用手段202により生成された検証用認証タグリストTL’とを比較し、メッセージMに対する改ざんの有無を判定するとともに、改ざん有りと判定された場合には改ざん位置(本例の場合、改ざんされたアイテム)を特定ないし限定する。また、認証タグ検証手段203は、改ざんの有無および改ざん位置を示す情報を出力する。認証タグ検証手段203は、改ざん位置を示す情報として、例えば、改ざんされたアイテムのインデックス等を出力してもよい。なお、改ざん無しの場合に改ざん位置を示す情報を無効値に設定するなどして、該情報で改ざんの有無をも示すようにしてもよい。
認証タグ検証手段203は、例えば、次のようにして改ざん有無の判定および改ざん位置の特定ないし限定することができる。すなわち、TLとTL’とに対して、エントリごと(例えば、T[i]とT’[i]等。ただし、i=1,...,s)の差をとり、当該エントリのインデックスiに対応する要素bとして、差がゼロの場合に0、差が非ゼロの場合に1をとる2値ベクトルB=(b[1],...,b[s])を生成してもよい。そして、生成された2値ベクトルBに対し、所定の手続き(復号。より具体的にはグループテストにおける解の解法処理等)を行い、その結果を出力してもよい。
具体例として、認証タグ検証手段203は、2値ベクトルBのエントリがすべて0であった場合には改ざんなしと判定してもよい。また、認証タグ検証手段203は、それ以外の場合にはメッセージ全体において、少なくとも1つのアイテムに改ざんがあると判定してもよい。後者の場合(いずれかのエントリが1であった場合)、さらに認証タグ検証手段203は、b[i]=0となる、すべてのi(ただし、i=1,...,s)について、入力されたグループテスト行列Wのi行目の行ベクトルrW=(wi1,...,wik)を取り出し、rW中、wij=1となるすべてのjについて、m[j]を改ざんなしと判定してもよい。以上の処理を行い、改ざんなしと判定されなかったアイテムすべてを改ざん有りとする。
グループテスト行列Wがd−disjunctiveと呼ばれる性質を満たす場合、上記の手続きにより、もし改ざんされたアイテムの数がd以下の場合、すべての改ざんされたアイテムを特定することが可能である。また、入力された認証タグリストTLに改ざんが行われていないもとでは、改ざんなしと判定されたアイテムが実際は改ざんされていたということは起きないため、d−disjunctiveであるか否かに関わらず、一般的に、改ざんの可能性がある範囲を狭める効果がある。
検証結果出力手段204は、認証タグ検証手段203による検証結果を示す情報、より具体的には、改ざんの有無および改ざんがあった場合の改ざん位置を示す情報、を出力する。検証結果出力手段204は、例えば、ディスプレイ装置やプリンタ装置や所定のネットワークノード(データベースや管理サーバなど)等へ検証結果を示す情報を出力してもよい。
図9は、本実施形態の認証タグ検証装置20の動作の一例を示すフローチャートである。図9に示す例では、まず、データ入力手段201が、改ざん検出の対象とされるメッセージMと、メッセージMに対して生成された認証タグリストTLと、s行m列のグループテスト行列Wとを入力する(ステップS201)。
次に、2層ハッシュ木適用手段202が、入力されたグループテスト行列Wに基づいて、メッセージMから、s個の検証用認証タグからなる検証用認証タグリストTL’=(T’[1],...,T’[s])を生成する(ステップS202)。
次に、認証タグ検証手段203が、生成された検証用認証タグリストTL’と、ステップS201で入力された認証タグリストTLとを比較し、改ざんの有無、および改ざんされていた場合には改ざんされたアイテムを特定し、検証結果とする(ステップS203)。
最後に、検証結果出力手段204が、認証タグ検証手段203による検証結果(改ざんの有無および改ざんされたアイテムの特定結果)を示す情報を出力する(ステップS204)。
以上のように、本実施形態によれば、改ざん位置の特定ないし限定をするための検証用認証タグリストを効率よく生成することができる。これは、検証用認証タグリストも、第1の実施形態と同様の方法を用いて生成されるためである。
実施形態3.
図10は、本実施形態のデータ認証システムの構成例を示すシステム構成図である。図10に示すように、本実施形態のデータ認証システム1は、認証タグ生成装置10と、認証タグ検証装置20と、認証タグ記憶装置30とを備えている。
認証タグ生成装置10および認証タグ検証装置20は、上記の実施形態のそれと同様である。認証タグ記憶装置30は、認証タグ生成装置10が生成した認証タグリストTLを記憶する。認証タグ記憶装置30は、例えば、認証タグリストTLとともに、当該認証タグリストの生成対象とされたメッセージMの識別子と、該認証タグリストの生成に用いたグループテスト行列Wとを記憶してもよい。
なお、認証タグ記憶装置30は、認証タグ生成時に用いるハッシュ関数H()およびH’()として、鍵付きのハッシュ関数を用いる場合などには、省略されてもよい。その場合、認証タグ生成装置10により生成された認証タグリストTLは、メッセージMとともに、認証タグ検証装置20もしくはメッセージMの宛て先とされる任意の装置に送付されてもよい。
また、認証タグ生成装置10と認証タグ検証装置20とは、1つの装置によって実現されてもよい。すなわち、1つの装置が、認証タグ生成装置10の機能(各手段)と認証タグ検証装置20の機能(各手段)とを有していてもよい。そのような場合、該装置において、2層ハッシュ木適用手段103が検証用認証タグリストを生成することも可能である。なお、その場合において2層ハッシュ木適用手段202は省略可能である。また、認証タグ生成装置10と認証タグ検証装置20とを特に区別せずに、データ認証装置と呼んでもよい。
また、図11は、ストレージシステムに本実施形態のデータ認証システムを適用した場合の各装置における処理例を示す説明図である。図11に示す例は、データベース(図中のLarge storage)に記憶されている8個のアイテムからなるメッセージMを改ざん検出の対象とする場合の例である。本例において、m=8である。
本例では、まず、認証タグ生成装置10が、所定のタイミング(所定周期やユーザ等から検証指示があったとき等)で、ストレージに記憶されているメッセージMに対して、認証タグリストTLを生成する処理を行う。認証タグ生成装置10のメッセージ入力手段101は、例えば、ユーザから検証指示があった場合に、ストレージに記憶されているメッセージMを読み込む。
そして、認証タグ生成装置10のグループテスト生成手段102が、改ざん検出の対象とされるメッセージM=(M[1],...,M[8])に対して、改ざん検出用のグループテストに用いる部分系列を決定して、s行m列のグループテスト行列Wを生成する(図中の(1)参照)。本例では、2個のテストが必要であるとして、2つのテストの各々について、用いる部分系列が決定されたとする。以下、本例において、s=2である。なお、部分系列の具体例は記載省略する。
次に、認証タグ生成装置10の2層ハッシュ木適用手段103が、メッセージMに含まれる、グループテスト行列Wが示す各テストの部分系列に対して、2層ハッシュ木構造を適用して、s個の認証タグT[1],T[2]からなる認証タグリストTL’を生成する(図中の(2)参照)。なお、上述したように、テスト毎の部分系列に2層ハッシュ木構造を適用する際に、各アイテムに対する第1のハッシュ関数の結果を、m個の状態変数に保持して、他のテストでも利用する。
生成された認証タグリストTL=(T[1],T[2])は、例えば、認証タグ用のストレージ(図中のSmall storage)に、メッセージMの識別情報と対応づけて記憶される(図中の(3)参照)。
今、改ざん者(Adbersary)が、ストレージに記憶されているメッセージMの任意のアイテムを改ざんしたとする(図中の(4)参照)。本例では、アイテムM[3]がアイテムM’[3]に変更されたものとする。
また、本例の認証タグ検証装置20は、例えば、任意のタイミング(所定周期やユーザ等から検証指示があったとき等)で、ストレージに記憶されているメッセージMについて、改ざん有無の検証を行う。認証タグ検証装置20のデータ入力手段201が、例えば、ユーザから検証指示があった場合に、ストレージに記憶されているメッセージMと、該メッセージMに対して生成された認証タグリストTLと、認証タグリストTLの生成に用いたグループテスト行列Wを読み込む。
そして、改ざん有無の検証処理として、認証タグ検証装置20の2層ハッシュ木適用手段202が、ストレージに記憶されているメッセージMと、該メッセージMの認証タグ生成に用いたグループテスト行列Wとを用いて、検証用認証タグリストTL’=(T’[1],T’[2])を生成する(図中の(5)参照)。なお、図中では、“CGT-based Hash”の後に“Verification”と記載されているが、検証用に認証タグリストを生成することを表しているだけであって、検証用認証タグリストTL’の生成方法は、認証タグリストTLの生成方法と同じである。
次に、認証タグ検証手段203が、認証タグ用のストレージ(Small storage)に記憶されている認証タグリストTL=(T[1],T[2])と、生成された検証用認証タグリストTL’=(T’[1],T’[2])とを比較し、メッセージMに対する改ざんの有無を判定するとともに、改ざん有りと判定された場合には改ざん位置(本例の場合、改ざんされたアイテム)を特定ないし限定する(図中の(6)参照)。本例では、上述したようにアイテムM[3]が改ざんされており、上記の比較処理で、T[1]≠T’[1]および/またはT[2]≠T’[2]となる。また、その結果から、グループテストアルゴリズムに基づき、改ざんされたアイテムとしてM[3]が特定されるものとする。
最後に、検証結果出力手段204が、検証結果を示す情報として、改ざん有りの旨およびアイテムM[3]が改ざんされた旨を示す情報を出力する(図中の(7)参照)。
なお、図11では、本実施形態のデータ認証システムを、ストレージシステムに適用する例を示したが、データ認証システムは、例えば、ストレージシステム以外にも、無線もしくは有線のデータ通信や、ファイルシステムや、ウィルススキャンや、バージョン管理システムに対しても適用可能である。
次に、本発明の概要を説明する。図12は、本発明によるデータ認証装置の他の構成例を示すブロック図である。図12に示すように、本発明によるデータ認証装置50は、2層ハッシュ木適用手段501を備える。
2層ハッシュ木適用手段501は、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、メッセージに対応する複数の認証タグであってテストの数に応じた複数の認証タグを生成する。
2層ハッシュ木適用手段501は、このとき、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、複数のテストに対応する認証タグの生成処理で共用する。
2層ハッシュ木適用手段501は、例えば、改ざん検出の対象とされるメッセージを、M=(M[1],...,M[m])、(ただしmはアイテム数)とし、組み合わせグループテストの数をsとした場合、s個の初期化済みの状態変数Z[1],...,Z[s]を用意し、j=1,...,mについて、j番目のアイテムM[j]を第1のハッシュ関数H()に適用し、中間ハッシュ値H(M[j])を得て、当該アイテムを使用するテストi(ただし、i=1,...,s)がある場合に、状態変数Z[i]に中間ハッシュ値H(M[j])を連結する処理を、jの全てに対して行い、最終的に得られた状態変数Z[1],...,Z[s]の各々に対して第2のハッシュ関数H()に適用して、s個の認証タグまたはs個の検証用の認証タグを生成してもよい。
また、2層ハッシュ木適用手段501は、例えば、改ざん検出の対象とされるメッセージを、M=(M[1],...,M[m])、(ただしmはアイテム数)とし、組み合わせグループテストの数をsとした場合、s個の初期化済みの状態変数Z[1],...,Z[s]を用意し、j=1,...,mについて、j番目のアイテムM[j]を第1のハッシュ関数H()に適用し、中間ハッシュ値H(M[j])を得て、当該アイテムを使用するテストi(ただし、i=1,...,s)がある場合に、状態変数Z[i]に、中間ハッシュ値H(M[j])を第2のハッシュ関数の圧縮関数に適用して得られた結果を記憶させる処理を、所定の順番でjの全てに対して行い、s個の認証タグまたはs個の検証用の認証タグを生成してもよい。
また、データ認証装置50は、改ざん検出の対象とされるメッセージについて、メッセージに含まれるアイテムに対する組み合わせグループテストに用いる1つ以上の部分系列であって、互いに重複を許す1つ以上のアイテムからなる1つ以上の部分系列を生成するグループテスト生成手段(図示省略)を備えていてもよい。
また、図13は、本発明によるデータ認証装置の他の構成例を示すブロック図である。図13に示すように、本発明によるデータ認証装置50は、2層ハッシュ木適用手段502と、認証タグ検証手段503とを備えていてもよい。
2層ハッシュ木適用手段502は、上記の2層ハッシュ木適用手段501と同様の方法により、改ざん検出の対象とされるメッセージに対応する複数の検証用の認証タグであってテストの数に応じた複数の検証用の認証タグを生成する。
認証タグ検証手段503は、メッセージに予め対応づけられている複数の認証タグと、生成された複数の検証用の認証タグとを比較して、メッセージに対する改ざんの有無および改ざんがあった場合にその範囲を特定ないし限定する。
また、図14は、本発明によるデータ認証システムの概要を示すブロック図である。図14に示すように、本発明によるデータ認証システム6は、認証タグ生成装置61と、認証タグ検証装置62とを備えていてもよい。
認証タグ生成装置61は、グループテスト生成手段601と、2層ハッシュ木適用手段602とを含んでいてもよい。
グループテスト生成手段601は、改ざん検出の対象とされるメッセージについて、メッセージに含まれるアイテムに対するグループテストに用いる1つ以上の部分系列であって、互いに重複を許す1つ以上のアイテムからなる1つ以上の部分系列を生成する。
2層ハッシュ木適用手段602の構成および機能は、上記の2層ハッシュ木適用手段501と同様でよい。
また、認証タグ検証装置62は、第2の2層ハッシュ木適用手段603と、認証タグ検証手段604とを含んでいてもよい。
第2の2層ハッシュ木適用手段603の構成および機能は、上記の2層ハッシュ木適用手段502と同様でよい。
認証タグ検証手段604の構成および機能は、上記の認証タグ検証手段503と同様でよい。
このような構成によれば、改ざん位置の特定ないし限定が可能なデータの認証方式を効率よく構築することができる。
以上、本実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
本発明は、例えば、ストレージシステムや、無線もしくは有線のデータ通信や、ファイルシステムや、ウィルススキャンや、バージョン管理システム等におけるデータの改ざん検出および改ざん位置の特定ないし限定用途に好適に適用可能である。
1、6 データ認証システム
10、61 認証タグ生成装置
101 メッセージ入力手段
102 グループテスト生成手段
103 2層ハッシュ木適用手段
104 認証タグ出力手段
20、62 認証タグ検証装置
201 データ入力手段
202 2層ハッシュ木適用手段
203 認証タグ検証手段
204 検証結果出力手段
30 認証タグ記憶装置
50 データ認証装置
501、502、602 2層ハッシュ木適用手段
503、604 認証タグ検証手段
601 グループテスト生成手段
603 第2の2層ハッシュ木適用手段

Claims (10)

  1. 改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、前記メッセージに対応する複数の認証タグであって前記テストの数に応じた複数の認証タグを生成する2層ハッシュ木適用手段を備え、
    前記2層ハッシュ木適用手段は、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、前記複数のテストに対応する認証タグの生成処理で共用する
    ことを特徴とするデータ認証装置。
  2. 改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、前記メッセージに対応する複数の検証用の認証タグであって前記テストの数に応じた複数の検証用の認証タグを生成する2層ハッシュ木適用手段と、
    前記メッセージに予め対応づけられている複数の認証タグと、前記複数の検証用の認証タグとを比較して、前記メッセージに対する改ざんの有無および改ざんがあった場合にその範囲を特定ないし限定する認証タグ検証手段とを備え、
    前記第2の2層ハッシュ木適用手段は、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、前記複数のテストに対応する認証タグの生成処理で共用する
    ことを特徴とするデータ認証装置。
  3. 2層ハッシュ木適用手段は、
    改ざん検出の対象とされるメッセージを、M=(M[1],...,M[m])、(ただしmはアイテム数)とし、組み合わせグループテストの数をsとした場合、s個の初期化済みの状態変数Z[1],...,Z[s]を用意し、j=1,...,mについて、j番目のアイテムM[j]を第1のハッシュ関数H()に適用し、中間ハッシュ値H(M[j])を得て、当該アイテムを使用するテストi(ただし、i=1,...,s)がある場合に、状態変数Z[i]に前記中間ハッシュ値H(M[j])を連結する処理を、前記jの全てに対して行い、最終的に得られた状態変数Z[1],...,Z[s]の各々に対して第2のハッシュ関数H()に適用して、s個の認証タグまたはs個の検証用の認証タグを生成する
    請求項1または請求項2に記載のデータ認証装置。
  4. 2層ハッシュ木適用手段は、
    改ざん検出の対象とされるメッセージを、M=(M[1],...,M[m])、(ただしmはアイテム数)とし、組み合わせグループテストの数をsとした場合、s個の初期化済みの状態変数Z[1],...,Z[s]を用意し、j=1,...,mについて、j番目のアイテムM[j]を第1のハッシュ関数H()に適用し、中間ハッシュ値H(M[j])を得て、当該アイテムを使用するテストi(ただし、i=1,...,s)がある場合に、状態変数Z[i]に、前記中間ハッシュ値H(M[j])を第2のハッシュ関数の圧縮関数に適用して得られた結果を記憶させる処理を、所定の順番で前記jの全てに対して行い、s個の認証タグまたはs個の検証用の認証タグを生成する
    請求項1または請求項2に記載のデータ認証装置。
  5. 改ざん検出の対象とされるメッセージについて、前記メッセージに含まれるアイテムに対する組み合わせグループテストに用いる1つ以上の部分系列であって、互いに重複を許す1つ以上のアイテムからなる1つ以上の部分系列を生成するグループテスト生成手段を備えた
    請求項1から請求項4のうちのいずれか1項に記載のデータ認証装置。
  6. 認証タグ生成装置と、認証タグ検証装置とを備え、
    前記認証タグ生成装置は、
    改ざん検出の対象とされるメッセージについて、前記メッセージに含まれるアイテムに対するグループテストに用いる1つ以上の部分系列であって、互いに重複を許す1つ以上のアイテムからなる1つ以上の部分系列を生成するグループテスト生成手段と、
    前記部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、前記メッセージに対応する複数の認証タグであって前記テストの数に応じた複数の認証タグを生成する2層ハッシュ木適用手段とを含み、
    前記認証タグ検証装置は、
    改ざん検出の対象とされるメッセージから、前記2層ハッシュ木生成適用手段と同様の方法を用いて、前記テストの数に応じた複数の検証用の認証タグを生成する第2の2層ハッシュ木適用手段と、
    前記メッセージに予め対応づけられている複数の認証タグと、前記複数の前記検証用の認証タグとを比較して、前記メッセージに対する改ざんの有無および改ざんがあった場合にその範囲を特定ないし限定する認証タグ検証手段とを含み、
    前記2層ハッシュ木適用手段は、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、前記複数のテストに対応する認証タグの生成処理で共用する
    ことを特徴とするデータ認証システム。
  7. 情報処理装置が、
    改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、前記メッセージに対応する複数の認証タグであって前記テストの数に応じた複数の認証タグを生成する過程で、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、前記複数のテストに対応する認証タグの生成処理で共用する
    ことを特徴とするデータ認証方法。
  8. 情報処理装置が、
    所定のタイミングで、改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、前記メッセージに対応する複数の認証タグであって前記テストの数に応じた複数の認証タグを生成し、
    所定のタイミングで、前記メッセージから、前記複数の認証タグを生成した方法と同じ方法を用いて、前記テストの数に応じた複数の検証用の認証タグを生成し、
    前記複数の認証タグと、前記複数の検証用の認証タグとを比較して、前記メッセージに対する改ざんの有無およびおよび改ざんがあった場合にその範囲を特定ないし限定し、
    前記ブロックスライス2層ハッシュ木構造の適用に際して、複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、前記複数のテストに対応する認証タグの生成処理で共用する
    ことを特徴とするデータ認証方法。
  9. コンピュータに、
    改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、前記メッセージに対応する複数の認証タグであって前記テストの数に応じた複数の認証タグを生成する処理を実行させ、
    複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、前記複数のテストに対応する認証タグを生成する処理で共用させる
    ためのデータ認証プログラム。
  10. コンピュータに、
    改ざん検出の対象とされるメッセージに含まれるアイテムからなる部分系列であって、組み合わせグループテストに基づき生成された1つ以上の部分系列の各々に対して、ブロックスライス2層ハッシュ木構造を適用して、前記メッセージに対応する複数の認証タグであって前記テストの数に応じた複数の検証用の認証タグを生成する処理、および
    前記メッセージに予め対応づけられている複数の前記認証タグと、前記第2の2層ハッシュ木適用手段により生成された複数の前記検証用の認証タグとを比較して、前記メッセージに対する改ざんの有無および改ざんがあった場合にその範囲を特定ないし限定する処理を実行させ、
    複数のテストに共通に用いられるアイテムについて、1度の第1のハッシュ関数の適用処理により得られた出力値を、前記複数のテストに対応する認証タグを生成する処理で共用させる
    ためのデータ認証プログラム。
JP2015115534A 2015-06-08 2015-06-08 データ認証システム、データ認証装置、方法およびプログラム Pending JP2017005409A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015115534A JP2017005409A (ja) 2015-06-08 2015-06-08 データ認証システム、データ認証装置、方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015115534A JP2017005409A (ja) 2015-06-08 2015-06-08 データ認証システム、データ認証装置、方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2017005409A true JP2017005409A (ja) 2017-01-05

Family

ID=57752410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015115534A Pending JP2017005409A (ja) 2015-06-08 2015-06-08 データ認証システム、データ認証装置、方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2017005409A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020065820A1 (ja) * 2018-09-27 2020-04-02 日本電気株式会社 Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法
US11251965B2 (en) 2017-04-17 2022-02-15 Nec Corporation Authentication tag generation apparatus, authentication tag verification apparatus, method and program

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11251965B2 (en) 2017-04-17 2022-02-15 Nec Corporation Authentication tag generation apparatus, authentication tag verification apparatus, method and program
WO2020065820A1 (ja) * 2018-09-27 2020-04-02 日本電気株式会社 Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法
JPWO2020065820A1 (ja) * 2018-09-27 2021-08-30 日本電気株式会社 Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法
JP7107381B2 (ja) 2018-09-27 2022-07-27 日本電気株式会社 Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法
US11750398B2 (en) 2018-09-27 2023-09-05 Nec Corporation MAC tag list generation apparatus, MAC tag list verification apparatus, aggregate MAC verification system and method

Similar Documents

Publication Publication Date Title
JP6138896B2 (ja) 悪質な脆弱性のあるファイルを検出する方法、装置及び端末
US8578498B2 (en) Virus localization using cryptographic hashing
US8442218B2 (en) Method and apparatus for compound hashing via iteration
US10686589B2 (en) Combining hashes of data blocks
US11080398B2 (en) Identifying signatures for data sets
JP7343584B2 (ja) 製品の同一性を識別するためのシステム及び方法
CN111563365B (zh) 试验标准工单修改信息处理方法、装置和计算机设备
JP6743702B2 (ja) Macタグリスト生成装置、macタグリスト検証装置、macタグリスト生成方法、macタグリスト検証方法およびプログラム
Idalino et al. Locating modifications in signed data for partial data integrity
JP7347501B2 (ja) Macタグリスト生成装置、macタグリスト検証装置、方法及びプログラム
US20200117795A1 (en) System and method for generating and authenticating a trusted polymorphic and distributed unique hardware identifier
JP2017005409A (ja) データ認証システム、データ認証装置、方法およびプログラム
CN109033818B (zh) 终端、验证方法和计算机可读存储介质
Popic et al. Privacy-preserving read mapping using locality sensitive hashing and secure kmer voting
JP6844696B2 (ja) 認証タグ生成装置、認証タグ検証装置、方法及びプログラム
JP2017073716A (ja) タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラム
US8832450B2 (en) Methods and apparatus for data hashing based on non-linear operations
CN105933303B (zh) 一种文件篡改的检测方法及装置
CN109347948A (zh) 一种基于区块链技术的大数据防篡改方法及系统
CN115567212A (zh) 文件处理方法、装置、计算机设备和计算机可读存储介质
CN109033831A (zh) 一种病毒检测方法、装置、电子设备及存储介质
US9454605B1 (en) Transferring data between devices using bar codes
CN109993002B (zh) 一种数据完整性保护方法和装置
US10754719B2 (en) Diagnosis device, diagnosis method, and non-volatile recording medium
Kishore et al. Faster file imaging framework for digital forensics