(57)【要約】      （修正有）【課題】改ざんの有無だけではなく改ざんされた位置に関する情報を得ることができるメッセージ認証を効率よく構築する。【解決手段】タグリスト生成装置４００は、メッセージ入力部４０１と、グループテスト行列生成部４０２と、タグリスト生成部４０３と、を備える。メッセージ入力部４０１は、ｍ個のアイテムＭから構成されるメッセージを入力する。グループテスト行列生成部４０２は、生成するメッセージ認証コードのタグ数ｓについて、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する。タグリスト生成部４０３は、グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、メッセージに関するｓ個のタグからなるタグリストを生成する。タグリスト生成部４０３は、ｍ個のアイテムＭそれぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う。【選択図】図１
2017073716.tif 000002
【特許請求の範囲】
【請求項１】
ｍ個（ｍは正の整数）のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力するメッセージ入力部と、
生成するメッセージ認証コードのタグ数ｓ（ｓは正の整数）について、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する、グループテスト行列生成部と、
前記グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、前記メッセージに関するｓ個のタグからなるタグリストを生成する、タグリスト生成部と、
を備え、
前記タグリスト生成部は、前記メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う、タグリスト生成装置。
【請求項２】
前記タグリスト生成部は、
前記グループテスト行列のｉ行目（ｉは正の整数）にて、テストが必要と設定された列のインデックスｊ（ｊは正の整数）について、
ｊ番目の前記アイテムＭ［ｊ］とインデックスｊを連結して前記擬似ランダム関数に入力することと、
前記擬似ランダム関数の出力の合計を状態変数Ｚ［ｉ］として生成することと、
少なくとも前記状態変数Ｚ［ｉ］を前記擬似ランダム関数に入力し、前記擬似ランダム関数の出力をタグＴ［ｉ］に設定することと、
を前記グループテスト行列のインデックスｉについて繰り返し、前記タグリストを生成する、請求項１のタグリスト生成装置。
【請求項３】
初期ベクトルを生成する初期ベクトル生成部をさらに備え、
前記タグリスト生成部は、前記初期ベクトルと前記状態変数Ｚ［ｉ］を秘密ではないパラメータであるＴｗｅａｋに設定し、前記擬似ランダム置換に入力する、請求項２のタグリスト生成装置。
【請求項４】
前記グループテスト行列生成部は、
前記ｍ個のアイテムＭ［１］・・・Ｍ［ｍ］におけるｄ個（ｄは正の整数）の改ざんが特定可能であり、且つ、前記生成されたｓ個のタグのうち、ｅ個（ｅは正の整数）までのタグの改ざんを特定可能な行列を、前記グループテスト行列として生成する、請求項１乃至３のいずれか一項に記載のタグリスト生成装置。
【請求項５】
前記タグリスト生成部は、
前記擬似ランダム関数の出力長と前記擬似ランダム置換の入力長が異なる場合には、前記擬似ランダム関数の出力を拡張する又は短縮することで、前記擬似ランダム関数の出力長と前記擬似ランダム置換の入力長を一致させる、請求項１乃至４のいずれか一項に記載のタグリスト生成装置。
【請求項６】
少なくとも前記タグリストを外部装置に出力する、タグリスト出力部をさらに備える、請求項１乃至５のいずれか一項に記載のタグリスト生成装置。
【請求項７】
請求項１乃至６のいずれか一項に記載のタグリスト生成装置が生成するタグリストを用いて、前記メッセージにおける改ざんを検証する、タグリスト検証装置。
【請求項８】
請求項１乃至６のいずれか一項に記載のタグリスト生成装置が生成するタグリストを用いて、前記メッセージの更新に応じて、前記生成されたタグリストを更新する、タグリスト更新装置。
【請求項９】
ｍ個（ｍは正の整数）のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力するステップと、
生成するメッセージ認証コードのタグ数ｓ（ｓは正の整数）について、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する、ステップと、
前記グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、前記メッセージに関するｓ個のタグからなるタグリストを生成する、ステップと、
を含み、
前記タグリストを生成するステップは、前記メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う、タグリスト生成方法。
【請求項１０】
タグリスト生成装置に搭載されたコンピュータに実行させるプログラムであって、
ｍ個（ｍは正の整数）のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力する処理と、
生成するメッセージ認証コードのタグ数ｓ（ｓは正の整数）について、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する、処理と、
前記グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、前記メッセージに関するｓ個のタグからなるタグリストを生成する、処理と、
を実行し、
前記タグリストを生成する処理は、前記メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラムに関する。特に、共通鍵暗号又はハッシュ関数を用いたメッセージ認証コードに係るタグリストを対象とする、タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラムに関する。
【背景技術】
【０００２】
近年、メッセージ認証コード（ＭＡＣ；Message Authentication Code、以下メッセージ認証と表記する）が情報処理システム、通信システムにて使用されることが多い。メッセージ認証とは、メッセージに対して秘密鍵を知る者だけが計算できるタグを付与することで、メッセージが正当であることを保証する技術である。例えば、メッセージ認証を用いることで、秘密鍵を共有した２者の通信において、当該２者の通信の間に行われた、第３者によるメッセージ改ざんを検知することが可能となる。具体的には、送信者がメッセージとタグを受信者に送った際に、受信者側では受け取ったメッセージからタグを計算し、受信したタグとの一致を確認することで、メッセージが正当な送信者から送られたものか否かが判定できる。
【０００３】
ここで、ＭＡＣ（メッセージ認証）の基本的な入出力を説明する。例えば、秘密鍵Ｋを共有する２人の人物Ａ、Ｂを想定し、人物Ａから人物ＢにメッセージＭを送る場合を考える。この場合、人物Ａは、メッセージＭに対して秘密鍵Ｋを用いたＭＡＣ関数（ＭＡＣ＿Ｋ）を適用し、認証タグＴ＝ＭＡＣ＿Ｋ（Ｍ）を求める。人物Ａは、メッセージＭと認証タグ（Ｍ、Ｔ）を人物Ｂに送信する。人物Ｂが受信した情報を（Ｍ’、Ｔ’）と表記すると、人物Ｂは認証タグＴ’とＭＡＣ＿Ｋ（Ｍ’）の一致を確認することで、受け取ったメッセージ（Ｍ’、Ｔ’）が、人物Ａが送った情報（メッセージＭ、認証タグＴ）の対であるか否かが判明し、改ざんの有無がチェック可能となる。上記のような一例として、非特許文献１に記載のＨＭＡＣ（Hash-based MAC）や、非特許文献２に記載のＣＭＡＣ（Cipher-based MAC）が挙げられる。
【０００４】
なお、通常のメッセージ認証を用いる場合、メッセージ中の改ざんされた位置に関する情報を得ることは不可能である。メッセージの改ざんが行われた場合、認証タグの値は正しい値とは異なるランダムな値となるためである。このような問題に対し、メッセージの全体にＭＡＣ関数を適用するのではなく、メッセージを任意の部分に分割し、それらの部分ごとにＭＡＣ関数を適用することで、部分ごとのチェックが行われることがある。このような部分ごとのチェックにより、メッセージに対する改ざん位置を特定することが可能となる。
【０００５】
例えば、メッセージＭがｍ（ｍは正の整数、以下同じ）個のアイテムＭ［１］、・・・、Ｍ［ｍ］からなる場合、Ｔ［１］＝ＭＡＣ＿Ｋ（Ｍ［１］）、Ｔ［２］＝ＭＡＣ＿Ｋ（Ｍ［２］）、・・・、Ｔ［ｍ］＝ＭＡＣ＿Ｋ（Ｍ［ｍ］）を求め、相手方に（Ｍ、Ｔ［１］、・・・、Ｔ［ｍ］）を送信すればよい。例えば、ハードディスク上のデータに対し、ファイルごとやディスクセクターごとにＭＡＣを計算することが、上記手法の適用例として挙げられる。
【０００６】
しかしながら、上記手法は、ｍ個のアイテムに対してｍ個のタグが生成されるため、保存すべきデータ量の増加が大きいという問題がある。一方、非特許文献３に開示されるように、メッセージにおける互いの重なりを許容し、長さも異なる複数の部分系列にメッセージを分解し、当該部分系列ごとにＭＡＣを適用するという手法（アプローチ）が存在する。
【０００７】
［第１の例］
例えば、メッセージＭが７個のアイテムから構成されるとき、メッセージＭ（Ｍ［１］、Ｍ［２］、・・・、Ｍ［７］）を、以下の３つの部分系列に分解する。
Ｓ［１］＝（Ｍ［１］、Ｍ［２］、Ｍ［３］、Ｍ［４］）；
Ｓ［２］＝（Ｍ［１］、Ｍ［２］、Ｍ［５］、Ｍ［６］）；
Ｓ［３］＝（Ｍ［１］、Ｍ［３］、Ｍ［５］、Ｍ［７］）；
【０００８】
その上で、各部分系列に対してＭＡＣを適用することで、３つのタグＴ［１］＝ＭＡＣ（Ｓ［１］）、Ｔ［２］＝ＭＡＣ（Ｓ［２］）、Ｔ［３］＝ＭＡＣ（Ｓ［３］）が計算されたものとする。この場合、アイテムごとにＭＡＣを適用する場合に７個必要であったタグが、３個に減らすことができる。
【０００９】
さらに、メッセージ改ざんの有無に関する検証時におけるタグと部分系列（Ｔ［ｉ］、Ｓ［ｉ］）に対する検証結果を２値（例えば、「０」であればＭＡＣは正しい；「１」であればメッセージの改ざんあり）のＢ［ｉ］で表現すると、例えば、チェックの結果は以下のように表現できる（ｉは正の整数、以下同じ）。
Ｂ［１］＝０；
Ｂ［２］＝１；
Ｂ［３］＝０；
【００１０】
ある特定の時点でメッセージＭに対してＭＡＣタグのチェックを行った結果が上記の場合、Ｍ［６］が改ざんされた箇所であると特定可能である。より正確には、上記の例では任意の１アイテムの改ざんであれば、改ざんされたアイテムの特定が可能である。このことは、部分系列の取り方を工夫することにより、改ざんされたアイテム数が所与の閾値以下のときには、改ざんされたアイテムまで特定することが可能であることを示している。
【００１１】
なお、メッセージＭをどのような部分系列に分解し、又、その結果どのような改ざんアイテムの特定が可能になるかは、非特許文献３に開示されている。非特許文献３の開示によれば、組み合わせグループテスト（ＣＧＴ；Combinatorial Group Testing）と呼ばれる組み合わせ問題と密接に関連がある。例えば、ｍ個のアイテムとｓ個のテストからなるＣＧＴでは、ｓ行ｍ列の２値行列Ｗ（以下、グループテスト行列又はＣＧＴ行列と表記する）を構成し、当該行列Ｗに従ってテストが行われる。ＣＧＴ行列Ｗのｉ行ｊ列目の要素が「１」であれば、ｊ番目のテストにてｉ番目のアイテムをテストに含めるということを示す（ｊは正の整数、以下同じ）。
【００１２】
データベースシステムに上記手法を適用する場合を考えると、現実的なシステムの制約などから、不正を行う者が一度に大量のアイテムを改ざんすることは考えにくい。そのため、ＣＧＴとＭＡＣを組み合わせることにより、タグの総数を抑えつつ、現実的に起こりうる改ざんに対し、その場所を特定可能なデータベースシステムを構築することができる。なお、通常のＭＡＣと同様に、ＣＧＴとＭＡＣを組み合わせた場合、任意の改ざんに対して、改ざんがあったという事実を検出可能という性質は変わらない。
【００１３】
なお、非特許文献４に開示された「Corruption-localizing hash」のように、鍵のないハッシュ関数をＭＡＣの代わりに用いた場合でも、ハッシュ値をメッセージと別の安全な場所に保存するという前提のもとでは同様の効果が望める。また、改ざんされたアイテムの特定に至らなくとも、改ざんされた範囲を絞ることは、通常可能である。
【００１４】
ここで、非特許文献３に開示された改ざん位置特定可能なＭＡＣ方式では、ＭＡＣのタグは改ざんされていないことが求められる。その理由は、上記ＭＡＣ方式が用いるテスト行列は「disjunct matrix」と呼ばれる行列であるからである。具体的には、行列が「d-disjunct」であるとき、ｄ個までのデータアイテムの改ざんは特定可能であるが、タグのみの改ざんがあった場合には特定可能な改ざんの数に関して何ら保証はないためである（ｄは正の整数、以下同じ）。
【００１５】
同様に、非特許文献４に開示される手法においても、計算対象のデータが存在すればハッシュ値の計算自体は可能であり、ハッシュ値は改ざんされないことが前提条件である。タグ（又はハッシュ値）のみの改ざんは、該当するテストにおいて対応する部分データに改ざんがないのにも関わらず、テスト結果で不一致と判定されるため、所謂、「false positive」（擬陽性）に相当する。
【００１６】
また、非特許文献３に開示される方式は、データと秘密鍵のみからタグを求める方式であるため、過去のデータとタグの組を観測しておき、ある時点でデータとタグを置き換える攻撃（所謂、リプレイ攻撃）には無力である。ここで、非特許文献３の方式では、攻撃者はそもそも改ざん可能なデータの量において制約があるとするモデルのため、データとタグ全体を置き換えるような通常のリプレイ攻撃は排除されているといえる。しかし、この場合でも一部のデータとタグの置き換えは、通常、可能であり（便宜上、部分的なリプレイと表記する）、このとき置き換えられたデータとタグに対応するテストは成功してしまう。言い換えれば、テストにおける「false negative」（擬陰性）を容易に起こせることになる。
【先行技術文献】
【非特許文献】
【００１７】
【非特許文献１】Dworkin, M., "Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication", NIST Special Publication 800-38B, [online], 2005年5月, [2015年9月18日検索], <URL:http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf>
【非特許文献２】M. Bellare, R. Canetti, H. Krawczyk, "Keying hash functions for message authentication", CRYPTO 1996, pp.1-15, Springer, Heidelberg (1996).
【非特許文献３】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, Proceedings. 2005 Lecture Notes in Computer Science ISBN 3-540-26223-7, pp. 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. Proceedings. Springer 2009 Lecture Notes in Computer Science ISBN 978-3-642-04443-4, pp. 489-504
【発明の概要】
【発明が解決しようとする課題】
【００１８】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【００１９】
ここで、非特許文献３や非特許文献４に開示された方式を、既存のハッシュ関数（例えば、ＳＨＡ-２（Secure Hash Algorithm-2）等）やメッセージ認証（例えば、ＣＭＡＣ等）により実行すると、１つのタグを計算する基本的な方式と比較し、計算量が大幅に増加する。通常のＭＡＣ関数は、入力長に対して線形オーダの計算量を有するため、その計算量の概算は、ｓ個のＭＡＣ計算をｍ個のアイテムに対して行うことは単純に計算量がｓ倍となる。
【００２０】
より正確には、計算量の増加はどのようなＣＧＴ（組み合わせグループテスト）を実行するかに依存する。例えば、上述の［第１の例］と同様に任意の１アイテムの改ざんを特定可能なＣＧＴを構成する場合を考える。例えば、アイテム数がｍ個の場合、テストの数（即ち、タグの数）はｌｏｇ_２ｍ個必要となる。また、ほぼ全てのテストがメッセージのｍ／２個を用いる。従って、ＭＡＣの計算量が、処理するアイテム数に比例するものと考えると、通常のＭＡＣのタグを１つ生成する場合に比べて（１／２）ｌｏｇ_２ｍ倍の計算量が必要となる。データベース等のアプリケーションでは、アイテム数ｍの数が極めて大きいことが予想されるため、例え（１／２）ｌｏｇ_２ｍ倍であっても、計算量の増加は著しいものになる。さらに、ｄ個のアイテムの改ざんを同定しようとする場合、テストの数はＯ（ｄ２ｌｏｇ_２ｍ）個必要となることが知られており、全体での計算量は、単一のＭＡＣタグを計算することに比べて大幅に増加することが多い。
【００２１】
また、アプリケーションによっては、既にタグを計算したアイテムの値を更新することがあり得るが、非特許文献３や非特許文献４に開示された方式を、既存のハッシュ関数やメッセージ認証で実現する場合に、アイテム更新に伴うタグの再計算を効率的に行うことができず、該当するテストのやり直し（最初から再計算）が必要となる。
【００２２】
本発明は、改ざんの有無だけではなく改ざんされた位置に関する情報を得ることができるメッセージ認証を効率よく構築することに寄与する、タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２３】
本発明の第１の視点によれば、ｍ個（ｍは正の整数）のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力するメッセージ入力部と、生成するメッセージ認証コードのタグ数ｓ（ｓは正の整数）について、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する、グループテスト行列生成部と、前記グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、前記メッセージに関するｓ個のタグからなるタグリストを生成する、タグリスト生成部と、を備え、前記タグリスト生成部は、前記メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う、タグリスト生成装置が提供される。
【００２４】
本発明の第２の視点によれば、ｍ個（ｍは正の整数）のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力するステップと、生成するメッセージ認証コードのタグ数ｓ（ｓは正の整数）について、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する、ステップと、前記グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、前記メッセージに関するｓ個のタグからなるタグリストを生成する、ステップと、を含み、前記タグリストを生成するステップは、前記メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う、タグリスト生成方法が提供される。
【００２５】
本発明の第３の視点によれば、タグリスト生成装置に搭載されたコンピュータに実行させるプログラムであって、ｍ個（ｍは正の整数）のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力する処理と、生成するメッセージ認証コードのタグ数ｓ（ｓは正の整数）について、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する、処理と、前記グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、前記メッセージに関するｓ個のタグからなるタグリストを生成する、処理と、を実行し、前記タグリストを生成する処理は、前記メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う、プログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（non-transient）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００２６】
本発明の各視点によれば、改ざんの有無だけではなく改ざんされた位置に関する情報を得ることができるメッセージ認証を効率よく構築することに寄与する、タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラムが、提供される。
【図面の簡単な説明】
【００２７】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係るＭＡＣタグリスト生成装置のハードウェア構成の一例を示すブロック図である。
【図３】第１の実施形態に係るＭＡＣタグリスト生成装置の処理構成の一例を示すブロック図である。
【図４】第１の実施形態における第２の例を説明するための図である。
【図５】ＭＡＣタグリストの計算量を説明するための図である。
【図６】ＭＡＣタグリストの計算量を説明するための図である。
【図７】第１の実施形態に係るＭＡＣタグリスト生成装置の動作の一例を示すフローチャートである。
【図８】第２の実施形態に係るＭＡＣタグリスト検証装置の処理構成の一例を示すブロック図である。
【図９】第２の実施形態に係るＭＡＣタグリスト検証装置の動作の一例を示すフローチャートである。
【図１０】第３の実施形態に係るＭＡＣタグリスト更新装置の処理構成の一例を示すブロック図である。
【図１１】第３の実施形態に係るＭＡＣタグリスト更新装置の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２８】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００２９】
一実施形態に係るタグリスト生成装置４００は、メッセージ入力部４０１と、グループテスト行列生成部４０２と、タグリスト生成部４０３と、を備える。メッセージ入力部４０１は、ｍ個のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力する。グループテスト行列生成部４０２は、生成するメッセージ認証コードのタグ数ｓについて、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する。タグリスト生成部４０３は、グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム置換と、を用いて、メッセージに関するｓ個のタグからなるタグリストを生成する。さらに、タグリスト生成部４０３は、メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う。
【００３０】
タグリスト生成装置４００は、メッセージをなすｍ個のアイテムＭそれぞれに関するタグの計算を、グループテスト行列により規定されるテストごとに個別に行うのではなく、途中の計算結果を共有しつつ並行に行う。その結果、タグリスト生成装置４００は、共通鍵暗号又はハッシュ関数を用いたメッセージ認証方式に関し、特に受信側で改ざんの有無だけでなく改ざんの場所を特定可能なタグリストを効率的に生成することができる。
【００３１】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
【００３２】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００３３】
図２は、第１の実施形態に係るＭＡＣタグリスト生成装置１０のハードウェア構成の一例を示すブロック図である。ＭＡＣタグリスト生成装置１０は、情報処理装置（コンピュータ）により構成可能であり、図２に例示する構成を備える。例えば、ＭＡＣタグリスト生成装置１０は、内部バスにより相互に接続される、ＣＰＵ（Central Processing Unit）１１、メモリ１２、入出力インターフェイス１３及び通信手段であるＮＩＣ（Network Interface Card）１４等を備える。なお、図２に示す構成は、ＭＡＣタグリスト生成装置１０のハードウェア構成を限定する趣旨ではない。ＭＡＣタグリスト生成装置１０は、図示しないハードウェアを含んでもよい。あるいは、ＭＡＣタグリスト生成装置１０に含まれるＣＰＵ等の数も図２の例示限定する趣旨ではなく、例えば、複数のＣＰＵがＭＡＣタグリスト生成装置１０に含まれていてもよい。
【００３４】
メモリ１２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、補助記憶装置（ハードディスク等）である。
【００３５】
入出力インターフェイス１３は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
【００３６】
図３は、第１の実施形態に係るＭＡＣタグリスト生成装置１０の処理構成の一例を示すブロック図である。図３を参照すると、ＭＡＣタグリスト生成装置１０は、メッセージ入力部１０１と、初期ベクトル生成部１０２と、グループテスト行列生成部１０３と、ブロックスライス並列ＭＡＣ適用部１０４と、ＭＡＣタグリスト出力部１０５と、を含んで構成される。上記の各処理モジュールは、例えば、メモリ１２に格納されたプログラムをＣＰＵ１１が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能を何らかのハードウェア、及び／又は、ソフトウェアで実行する手段があればよい。
【００３７】
なお、以降の説明において、特段の釈明がない限りは、１ブロックの長さをｎビットとする（ｎは正の整数、以下同じ）。
【００３８】
メッセージ入力部１０１は、対象となるメッセージＭを入力する手段である。メッセージ入力部１０１は、例えば、キーボード等の文字入力装置により実現される。第１の実施形態では、メッセージＭがｍ個の個別のアイテムＭ［１］、・・・、Ｍ［ｍ］により構成されているものとする。なお、それぞれのアイテムは、長さが互いに異なるものでもよいし、値が同じであってもよい。例えば、ハードディスクの１セクタの内容や、データベースの１エントリ、あるいは、文章情報の１キャラクタ（１文字）等が各アイテムの具体例として例示される。
【００３９】
初期ベクトル生成部１０２は、ＭＡＣ計算に用いる初期ベクトルＮを生成する手段である。初期ベクトルＮは、新たなデータアイテムを処理するたびに更新される値である必要がある。例えば、カウンターや時刻情報を用いることが考えられる。
【００４０】
グループテスト行列生成部１０３は、改ざん位置特定のための組み合わせグループテスト（ＣＧＴ）を生成する手段である。具体的には、グループテスト行列生成部１０３は、テストの数（即ち、ＭＡＣの数）であるｓと、特定可能な改ざんアイテムの数の最大値ｄに応じて、ｓ行ｍ列の２値行列Ｗを生成する。
【００４１】
例えば、上述の［第１の例］では、メッセージＭ（Ｍ［１］、Ｍ［２］、・・・、Ｍ［７］）を、以下の３つの部分系列に分解している。
Ｓ［１］＝（Ｍ［１］、Ｍ［２］、Ｍ［３］、Ｍ［４］）；
Ｓ［２］＝（Ｍ［１］、Ｍ［２］、Ｍ［５］、Ｍ［６］）；
Ｓ［３］＝（Ｍ［１］、Ｍ［３］、Ｍ［５］、Ｍ［７］）；
この場合、グループテスト行列生成部１０３が、グループテスト行列Ｗを下記の式（１）に設定することと等価である。
［１１１１０００］
Ｗ＝［１１００１１０］・・・（１）
［１０１０１０１］
この場合はｄ＝１個の改ざんを特定可能である。
【００４２】
上記のような行列は、d-disjunctであると称される。但し、本願開示が目的とするタグの改ざんに対する耐性（より正確には、タグの改ざんにより伴い生じる個々のテストの「false positive」への耐性）は、行列がd-disjunctであることでは保証できない。そこで、本願開示では、グループテスト行列は、「d-disjunct」且つ「e-error correcting」であるとする。このことにより、ｅ個までのテストの「false positive」に耐性のある行列となり、高々ｅ個までのタグの改ざんがあっても、高々ｄ個までのデータアイテムの改ざんを特定可能となる。なお、上記のｄとｅはユーザが定めるパラメータとなる。
【００４３】
具体的なパラメータｄ、ｅに対応した行列の生成方法は、下記の参考文献１及び２に開示されている。
［参考文献１］Mahdi Cheraghchi, "Noise-Resilient Group Testing: Limitations and Constructions", FCT 2009: 62-73.
［参考文献２］Hung Q. Ngo、Ely Porat、Atri Rudra, "Efficiently Decodable Error-Correcting List Disjunct Matrices and Applications-(Extended Abstract)", ICALP (1) 2011: 557-568.
【００４４】
このように、グループテスト行列生成部１０３は、ｍ個のアイテムＭ［１］・・・Ｍ［ｍ］におけるｄ個の改ざんが特定可能であり、且つ、生成されたｓ個のタグのうち、ｅ個までのタグの改ざんを特定可能な、「d-disjunct」且つ「e-error correcting」である行列を、グループテスト行列Ｗとして生成する。
【００４５】
ブロックスライス並列ＭＡＣ適用部１０４は、ｍ個のアイテムからなるメッセージＭ＝（Ｍ［１］、・・・、Ｍ［ｍ］）について、ｓ行ｍ列のグループテスト行列Ｗが指定する方法によりｓ個のＭＡＣタグを生成する手段である。ブロックスライス並列ＭＡＣ適用部１０４が、上述のタグリスト生成部４０３に相当する。
【００４６】
ブロックスライス並列ＭＡＣ適用部１０４は、ＭＡＣタグの生成に、可変長入力固定長出力の擬似ランダム関数（ＰＲＦ；Pseudorandom Function）Ｆと、固定長入出力のTweak付き擬似ランダム置換（ＴＰＲＰ；Tweakable Pseudorandom Permutation）Ｇを用いる。ここで Tweakとは秘密ではないパラメータであり、擬似ランダム置換Ｇは、任意のTweak ＴについてＧ（Ｔ、＊）が鍵付きの置換となるという関数である。Tweak付き擬似ランダム置換は、擬似ランダム置換の拡張であり、Tweak付きブロック暗号（Tweakable block cipher）とも称される。その安全性定義や構成方法は、例えば、下記の参考文献３に開示されている。
［参考文献３］M. Liskov, R. Rivest, D. Wagner, "Tweakable Block Ciphers”, Advances in Cryptology - CRYPTO 2002, 22nd Annual International Cryptology Conference, Santa Barbara, California, USA, August 18-22, 2002, Proceedings. Lecture Notes in Computer Science 2442 Springer 2002, pp. 31-46.
【００４７】
なお、以下の説明において、特段の釈明がなく、擬似ランダム関数Ｆと表記した場合には、「可変長入力固定長出力の擬似ランダム関数Ｆ」を意味し、擬似ランダム置換Ｇと表記した場合には、「Tweak付き擬似ランダム置換Ｇ」を意味するものとする。
【００４８】
また、第１の実施形態では、理解の容易のため、擬似ランダム関数Ｆの出力長は、擬似ランダム置換Ｇの入出力長と等しいものとするが、両者が異なる場合には、ブロックスライス並列ＭＡＣ適用部１０４が、擬似ランダム関数Ｆの出力へ拡張（例えば、パディング）や短縮を適宜用いることで、両者の長さを一致させればよい。
【００４９】
グループテスト行列Ｗは、どのテストがどのアイテムを含めるかを指定するものであり、具体的にはｉ行ｊ列成分が「１」であれば、ｉ番目のＭＡＣタグ計算がＭ［ｊ］を含めることを意味する。ブロックスライス並列ＭＡＣ適用部１０４による具体的な計算は以下のとおりである。
【００５０】
初めに、ブロックスライス並列ＭＡＣ適用部１０４は、各テストのインデックスｉに関し、グループテスト行列Ｗのｉ行目で「１」が設定されている（即ち、テストが必要と設定されている）全ての列のインデックスｊについて、アイテムＭ［ｊ］とインデックスｊを連結し、擬似ランダム関数Ｆに等外連結した結果を入力して得られる出力Ｆ（ｊ、Ｍ［ｊ］）の和を算出し、当該和をＺ［ｉ］とする。次に、ブロックスライス並列ＭＡＣ適用部１０４は、上記Ｚ［ｉ］を擬似ランダム置換Ｇに入力する。その際、Tweakは、初期ベクトルＮとインデックスｉを連結してTweak=（Ｎ、ｉ）として与える。ブロックスライス並列ＭＡＣ適用部１０４は、擬似ランダム置換Ｇにより得られた出力Ｇ（（Ｎ、ｉ）、Ｚ［ｉ］）をｉ番目のテストに対応するＭＡＣ値Ｔ［ｉ］とする。ブロックスライス並列ＭＡＣ適用部１０４は、上記の計算を、全てのｉ（＝１、・・・、ｓ）について繰り返し行い、ＭＡＣタグリストＴ＝（Ｔ［１］、・・・、Ｔ［ｓ］）を生成する。
【００５１】
なお、擬似ランダム関数Ｆと擬似ランダム置換Ｇは、標準的なブロック暗号やハッシュ関数を用いて構成可能である。例えば、各アイテムのビット長が高々ｎビットである場合、擬似ランダム関数Ｆと擬似ランダム置換Ｇによる処理は、n-bitブロック暗号Ｅを用いた下記の参考文献４のＰＭＡＣと類似した構成が可能である。
［参考文献４］P. Rogaway, "Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC”, Advances in Cryptology- ASIACRYPT'04. LNCS 3329, pp. 16-31, 2004. 
【００５２】
ここでは、ブロック暗号Ｅによる平文ブロックＸの暗号化をＥ（Ｘ）と表記し、具体的な処理の一例を［第２の例］として説明する。なお、［第２の例］では、ガロア体（Galois Field）ＧＦ（２ｎ）上の元であるＸとＹの積をＸＹ、加算（なお、ビットごとのＸＯＲと等価）をＸ＋Ｙとそれぞれ表記する。また、ガロア体ＧＦ（２ｎ）上の元は、n-bitで表現できるため、n-bit変数として扱う。
【００５３】
［第２の例］
なお、第２の例を説明するにあたり、諸条件は以下の通りとする。初期ベクトルＮは、１からカウントアップするカウンターとする。初期ベクトルＮの暗号化ＶをＥ（Ｎ）と表記する（Ｖ＝Ｅ（Ｎ））。全ゼロ平文の暗号化ＬをＥ（００・・・０）と表記する（Ｌ＝Ｅ（００・・・０））。つまり、Ｖは初期ベクトルＮの暗号化、Ｌは全ゼロ平文の暗号化である。さらに、擬似ランダム関数Ｆ（ｊ、Ｘ）をＥ（２ｊＬ＋Ｘ）とし、擬似ランダム置換Ｇ（（Ｎ、ｉ）、Ｘ）をＥ（２ｉＶ＋Ｘ）とする。
【００５４】
上記の諸条件の下で、ｉ番目のＭＡＣタグ生成で、ｈ個のアイテムＭ［ｊ［１］］、・・・、Ｍ［ｊ［ｈ］］が含まれるならば、Ｚ［ｉ］をＦ（ｊ［１］、Ｍ［ｊ［１］］）＋・・・＋Ｆ（ｊ［ｈ］、Ｍ［ｊ［ｈ］］）とし、Ｇ（（Ｎ、ｉ）、Ｚ［ｉ］）がタグＴ［ｉ］として出力される。当該処理が、全てのインデックスｉ（ｉ＝１、・・・、ｓ）について行われる。但し、２ｉは、ガロア体ＧＦ（２ｎ）上の生成元２のｉ乗を示す。この際のｉ番目のテストに対するタグ計算を抽出して記載すると図４の通りとなる。当該形式は、ＰＭＡＣに類似するものであるが、［第２の例］における入力データは（Ｍ［ｊ［１］］、・・・、Ｍ［ｊ［ｈ］］）であるのに対し、本来のＰＭＡＣでは、Ｆ（１、Ｍ［ｊ［１］］）＋Ｆ（２、Ｍ［ｊ［２］］）＋・・・＋Ｆ（ｈ、Ｍ［ｊ［ｈ］］）を擬似ランダム置換Ｇにより処理する形式となる。また、ＰＭＡＣでは、最後のデータアイテムは擬似ランダム関数Ｆを通さずに単に中間変数へのＸＯＲとなるが、第１の実施形態では、安全性の要件を考慮し、当該形式（中間変数へのＸＯＲ）を採用しない。換言するならば、第１の実施形態における擬似ランダム関数Ｆへのインデックスの与え方は、ｉ番目のテストにおいて、グループテスト行列Ｗの（ｉ、ｊ）成分が「１」となる全てのｊについて、Ｆ（ｊ、Ｍ［ｊ］）を中間変数として加算し、それ以外のｊについてはＭ［ｊ］に依存せず全ゼロ値を加算していると捉えることもできる。
【００５５】
なお、各アイテムのデータ長が可変である場合には、可変長入力の擬似ランダム関数Ｆを、ＨＭＡＣやＣＭＡＣ等へインデックスｊとＭ［ｊ］を連結して入力することで、Ｆ（ｊ、Ｍ［ｊ］）を実現すればよい。また、擬似ランダム置換Ｇは、通常のTweakableブロック暗号を用いてもよい。
【００５６】
ブロックスライス並列ＭＡＣ適用部１０４は、各ＭＡＣタグの計算をテストごとに個別に行うのではなく、途中の計算結果を共有しつつ並列に行っている。その結果、大幅且つ効率的にＭＡＣタグの計算が行われる。なぜならば、Ｍ［ｉ］を含む２つのテストでは共にＦ（ｉ、Ｍ［ｉ］）を用いるためである。
【００５７】
例えば、上述の［第１の例］に示す３つの部分系列に対し、ブロックスライス並列ＭＡＣ適用部１０４によるＭＡＣタグリスト生成を考える。また、その場合のグループテスト行列Ｗは、上記式（１）のとおりである。なお、３つの状態変数Ｚ［１］、Ｚ［２］、Ｚ［３］を用意し、初期値を０とする。この場合、以下の手続によりＭＡＣタグリストが計算できる。
【００５８】
始めに、式（１）のグループテスト行列Ｗを参照すると、当該行列Ｗの１列目（ｊ＝１）は全て１であるので、状態変数Ｚ［１］〜Ｚ［３］は以下のとおりである。
Ｚ［１］＜＝Ｆ（１、Ｍ［１］）；
Ｚ［２］＜＝Ｆ（１、Ｍ［１］）；  Ｚ［３］＜＝Ｆ（１、Ｍ［１］）；
【００５９】
次に、グループテスト行列Ｗの２列目（ｊ＝２）では、１行目と２行目が「１」であり、３行目が「０」である。従って、１番目のテストと２番目のテスト（ｉ＝１、２）では上記状態変数Ｚ［１］、Ｚ［２］にＦ（２、Ｍ［２］）を加算する。その結果、状態変数  Ｚ［１］及びＺ［２］は以下のとおりとなる。
Ｚ［１］＜＝Ｚ［１］＋Ｆ（２、Ｍ［２］）；
Ｚ［２］＜＝Ｚ［２］＋Ｆ（２、Ｍ［２］）；
なお、状態変数Ｚ［３］は全ゼロ値を加算するため、値に変化がなく表記を省略している。
【００６０】
以上のような計算をｊ＝３〜７について繰り返すと以下のようになる。
［ｊ＝３の場合］
Ｚ［１］＜＝Ｚ［１］＋Ｆ（３、Ｍ［３］）；
Ｚ［３］＜＝Ｚ［３］＋Ｆ（３、Ｍ［３］）；
［ｊ＝４の場合］
Ｚ［１］＜＝Ｚ［１］＋Ｆ（４、Ｍ［４］）；
［ｊ＝５の場合］
Ｚ［２］＜＝Ｚ［２］＋Ｆ（５、Ｍ［５］）；
Ｚ［３］＜＝Ｚ［３］＋Ｆ（５、Ｍ［５］）；
［ｊ＝６の場合］
Ｚ［２］＜＝Ｚ［２］＋Ｆ（６、Ｍ［６］）；
［ｊ＝７の場合］
Ｚ［３］＜＝Ｚ［３］＋Ｆ（７、Ｍ［７］）；
【００６１】
全てのインデックスｊに関する状態変数の計算が終了すると、状態変数Ｚ［１］〜Ｚ［３］が初期ベクトルＮと連結され、擬似ランダム置換Ｇに入力され、下記のＭＡＣタグリストＴ［１］〜Ｔ［３］が計算される。
Ｔ［１］＜＝Ｇ（Ｎ、Ｚ［１］）；
Ｔ［２］＜＝Ｇ（Ｎ、Ｚ［２］）；
Ｔ［３］＜＝Ｇ（Ｎ、Ｚ［３］）；
【００６２】
上記のＭＡＣタグリストの計算では、擬似ランダム関数Ｆの呼び出し回数は、アイテム数と同じ７回である（図５参照）。
【００６３】
次に、上記計算を通常のＭＡＣ（例えば、非特許文献１に開示されたＣＭＡＣ）を用いて以下の部分系列に対する計算をする場合を考える。
Ｓ［１］＝（Ｍ［１］、Ｍ［２］、Ｍ［３］、Ｍ［４］）；
Ｓ［２］＝（Ｍ［１］、Ｍ［２］、Ｍ［５］、Ｍ［６］）；
Ｓ［３］＝（Ｍ［１］、Ｍ［３］、Ｍ［５］、Ｍ［７］）；
この場合、語頭が同じ部分を除けば計算を共有することができないため、全体の計算量はより大きくなる。
【００６４】
あるいは、参考文献４に記載のＰＭＡＣを用いることで、共有可能な部分は増加するが、それでも大部分の箇所は共有が不可能である。例えば、図６に示すように、Ｓ［１］からＳ［３］に対して従来どおりにＰＭＡＣを用いる場合（即ち、Ｓ［１］〜Ｓ［３］のいずれもが４ブロックのデータとして扱い、１から７まであるアイテムＭのインデックスは無視する場合）、Ｍ［３］に対する計算結果は共有できず、擬似ランダム関数Ｆを８回呼び出す必要がある。対して、図５に示すように、第１の実施形態に係る方式であれば、Ｍ［３］に対する結果も共有可能となり、擬似ランダム関数Ｆの呼び出しは７回に留まる。図５と図６の例示では、アイテム数ｍ＝７、改ざん特定可能なアイテム数ｄ＝１の場合であり、擬似ランダム関数Ｆの呼び出し回数の差は僅かに１回であるが、アイテム数ｍや改ざん可能なアイテム数ｄが増えれば、上記の差は大きく広がる。例えば、ｍ＝１５であれば、ｄ＝１であっても擬似ランダム関数Ｆの呼び出し回数の差は５回となる。
【００６５】
第１の実施形態におけるブロックスライス並列ＭＡＣ適用部１０４によるＭＡＣタグの計算手続をまとめると以下のようになる。ブロックスライス並列ＭＡＣ適用部１０４は、任意のｓ行ｍ列のグループテスト行列Ｗに対して、擬似ランダム関数Ｆの呼び出し回数はｍ回、擬似ランダム置換Ｇの読み出し回数はｓ回となる。また、通常のＭＡＣを用いていて、仮に、計算の共有を行えず、且つ、行列が十分密であるとすれば、擬似ランダム関数Ｆの呼び出し回数は概算でｓ×ｍ回となる。従って、第１の実施形態に係るＭＡＣタグの計算では、大幅な計算量の削減がなされていることが理解される。このように、ブロックスライス並列ＭＡＣ適用部１０４は、各テストを個別に行うのではなく、中間変数を共有しつつ全てのテストを並列に実行する。なお、本願開示では、当該方法を「ブロックスライス並列ＭＡＣ」方式と称する。
【００６６】
本願開示のブロックスライス並列ＭＡＣは、ＰＭＡＣ等の並列実行可能なＭＡＣにおいて、グループテストの行ベクトルのｉ番目の成分が「１」である時には、アイテムそのものとインデックスｉの情報を用いて生成した擬似乱数をＭＡＣの中間変数に加算し、ｉ番目の成分が「０」である時は、アイテムの値によらず全ゼロ値を加算する、と捉えることもできる。
【００６７】
また、本願開示のブロックスライス並列ＭＡＣは、通常のＭＡＣをそれぞれのテストで行う場合と同様に、Ｆが擬似ランダム関数であれば、任意のメッセージについてＭＡＣタグを攻撃者が予測することは困難である。このことは、任意の異なるアイテムインデックスの集合（ただし空集合は除く）ＢとＢ’を考えたとき、Ｂに含まれる全てのｊについてＦ（ｊ、Ｍ［ｊ］）の和を計算した値と、Ｂ’に含まれる全てのｊ’についてＦ（ｊ’、Ｍ［ｊ’］）の和を計算した値と、が一致する確率がアイテムの値によらず圧倒的に低いことから理解される。つまり、本願開示において、ｉ番目のＭＡＣタグはＦ（ｊ、Ｍ［ｊ］）の和を計算した値を、Tweak（Ｎ、ｉ）を用いてTweak付き擬似ランダム置換Ｇに適用した値であるため、出力の予測は困難である。その結果、改ざんが困難となる。
【００６８】
また、初期ベクトルＮは、ＭＡＣタグの計算のたびに更新（毎回更新）される値であるため、通常のリプレイ攻撃のみならず部分的なリプレイ攻撃（即ち、過去に計算された正規のデータとＭＡＣタグの組を観測したもとで、特定のＭＡＣタグ生成に使われるデータとタグのみ過去の値に置き換える攻撃）も、初期ベクトルＮが改ざんされていないという仮定の下、通常の改ざんとして高い確率で検出が可能となる。なお、前述のように、仮に初期ベクトルＮをＭＡＣタグの計算に用いない場合、攻撃者は部分的なリプレイ攻撃が可能であり、テスト結果において攻撃者が「false negative」を容易に起こせるようになる。一方、「false negative」に対応可能なテスト行列は効率が悪いことが知られており（例えば、参考文献１を参照）、「false negative」を事実上無視できることによりテスト行列の効率をあげる（即ち、所与のアイテムの最大改ざん数に対して必要なテストの数を減らす）ことが可能となる。
【００６９】
図３に示すＭＡＣタグリスト出力部１０５は、ブロックスライス並列ＭＡＣ適用部１０４が出力するＭＡＣタグリストＴを、初期ベクトルＮと合わせて表示装置（液晶ディスプレイ等）や出力装置（プリンタ等）に出力する手段である。あるいは、ＭＡＣタグリスト出力部１０５は、初期ベクトルＮに加え、ＭＡＣタグリストＴの生成に用いた他の情報（例えば、グループテスト行列Ｗ）を他の装置に向けて出力してもよい。
【００７０】
次に、図７を参照しつつ、第１の実施形態に係るＭＡＣタグリスト生成装置１０の動作を説明する。
【００７１】
ステップＳ１０１において、メッセージ入力部１０１は、対象となるｍ個のアイテムからなるメッセージＭを入力する。
【００７２】
次に、初期ベクトル生成部１０２は、初期ベクトルＮを生成する（ステップＳ１０２）。その後、グループテスト行列生成部１０３は、ｓ行ｍ列の２値行列であるグループテスト行列Ｗを生成する（ステップＳ１０３）。
【００７３】
ステップＳ１０４において、ブロックスライス並列ＭＡＣ適用部１０４は、初期ベクトルＮとグループテスト行列Ｗを参照して、擬似ランダム関数ＦとTweak付き擬似ランダム置換Ｇを用いたブロックスライス並列ＭＡＣを、メッセージＭへ適用しｓ個のＭＡＣタグからなるＭＡＣタグリストＴを生成する。
【００７４】
ステップＳ１０５において、ＭＡＣタグリスト出力部１０５は、ブロックスライス並列ＭＡＣ適用部１０４から取得したＭＡＣタグリストＴを出力する。 
【００７５】
以上のように、第１の実施形態に係るＭＡＣタグリスト生成装置１０は、各ＭＡＣタグの計算をテストごとに個別に行うのではなく、途中の計算結果を共有しつつＭＡＣタグの計算を並列に行う。その結果、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるようなメッセージ認証が効率的に構築される（第１の効果）。
【００７６】
ここで、データの改ざんのみでなく、部分的にタグの改ざんがあっても上記の性質（改ざんの有無だけでなくその位置に関する情報が得られる）を保持するＭＡＣタグが生成されることが望ましい。
【００７７】
上記事項（タグの改ざんも許容する）が望まれる理由は以下の通りである。本願開示の利用形態によっては、攻撃者からみてデータとタグの双方に同等のコストでアクセスし改ざんできると考えることが妥当であるからである。例えば、データベース上のデータのＭＡＣ計算を行う場合、タグの改ざんを許容しないモデルに従うためには、タグはデータベースのある記憶装置とは異なるアクセス制限のある記憶装置に保存されていることが必要である。このことは、例えば、物理的に異なるハードディスクを用意したり、タグの保存場所へのアクセス管理などの追加コストが発生したりする。また、データ通信に適用する場合、タグの改ざんを許容しないモデルに従う場合、データとタグとを同一の通信チャンネルで送ることは現実的ではない。従って、タグのみ物理的に異なるチャネルで送信する、あるいは、データはインターネット経由、タグは携帯電話ネットワークにより送信するといった手段を用いる必要が生じる。つまり、タグの改ざんも許容する方式であれば、データベース上のデータの保護に用いる場合、データとＭＡＣタグを同じストレージ、同じレベルのアクセス制限の上で保管することが可能となる。また、タグの改ざんも許容する方式であれば、データ通信の保護に用いる場合、データとＭＡＣタグとを同じチャネルで送信することが可能となる。
【００７８】
上記事項に関し、本願開示のブロックスライス並列ＭＡＣは、「d-disjunct」且つ「e-error correcting」であるグループテスト行列Ｗを用いて生成されるため、データの改ざんのみでなく、部分的にタグの改ざんがあってもその検出と位置の特定が可能となる（第２の効果）。
【００７９】
さらにまた、データとタグの一部あるいは全部を過去の値に置き換えるリプレイ攻撃に対する耐性を有するＭＡＣタグが生成されることが望ましい。
【００８０】
上記事項（リプレイ攻撃に対する耐性）が望まれる理由は以下の通りである。データとタグが逐次更新されている環境で、攻撃者がこれを観測している場合には上述のリプレイ、あるいは部分的なリプレイ攻撃の危険性があり、なおかつ、テストにおける「false negative」を引き起こすためである。「False negative」は、いわば改ざん位置の見逃しに相当するため重大である。基本的なＭＡＣタグの計算は基本的には状態変数（カウンターなど）を含まないものであり、この場合、原理的にリプレイ攻撃を防ぐことは困難である。
【００８１】
上記事項に関し、本願開示のブロックスライス並列ＭＡＣは、ＭＡＣタグの計算のたびに初期ベクトルＮが更新されて生成されるため、初期ベクトルＮが改ざんされていないという仮定の下、通常の改ざんとして高い確率で検出が可能となる（第３の効果）。
【００８２】
第１の実施形態に係るＭＡＣタグリスト生成装置１０は、改ざんの有無だけでなく改ざんされた位置に関して情報が得られるメッセージ認証が効率よく構成可能である。また、そのように構築されたメッセージ認証（ブロックスライス並列ＭＡＣ）は、タグの一部が改ざんされていた場合でも改ざんの検出と位置特定が可能であると共に、部分的なリプレイ攻撃を検知可能であるという性質を有する。
【００８３】
以上のように、第１の実施形態では、並列実行可能なメッセージ認証コード（ＭＡＣ）を対象のメッセージ（即ち、アイテムのリスト）へ適用する際、グループテストの行ベクトルのｉ列目の成分が「１」のときには、アイテムそのものとインデックスｉの情報を擬似ランダム関数へ入力することで生成する擬似乱数をＭＡＣの中間変数へ加算し、「０」のときにはアイテムの値によらず全ゼロ値を加算する。さらに、並列実行可能なＭＡＣをグループテスト行列と単純に組み合わせる、即ち、ｊ番目の行ベクトルで「１」が設定される列インデックスの示すアイテムをすべて連結した系列をｊ番目のテストの入力とする場合、ｉ列目の成分が「１」である２つのテストの間で、ｉ番目のアイテムに対する計算結果を共有できるとは限らず、それぞれ別の計算が必要となる場合がある。しかし、本願開示の方法により、グループテスト行列の内容によらず、ｉ列目の成分が「１」である２つのテストの間では、常にｉ番目のアイテムに対する計算結果を共有できるため、計算量の大幅な効率化が実現できる。さらにまた、テスト行列はタグの改ざんがないというモデルにおいては disjunt行列を用いればよいが、タグの改ざんも許容するモデルのほうが利用シーン（適用場面）は広がる。このとき、タグの改ざんはテストにおいて「false positive」となるため、グループテストにおいて一定数の「false positive」を許容する行列を用いる。さらにまた、初期ベクトルをタグ計算に含め、また初期ベクトルの改ざんはないものとすることで、攻撃者によるリプレイ、あるいは部分的なリプレイを通常の改ざんと同様に検出可能とし、結果として（必要なテスト回数＝タグの数）の増加を招く「false negative」が起こる確率を十分小さくし、必要なタグの数を小さく抑えることができる。
【００８４】
［第２の実施形態］
続いて、第２の実施形態について図面を参照して詳細に説明する。
【００８５】
図８は、第２の実施形態に係るＭＡＣタグリスト検証装置２０の処理構成の一例を示すブロック図である。なお、ＭＡＣタグリスト検証装置２０は、第１の実施形態に係るＭＡＣタグリスト生成装置１０と同様のハードウェア構成により実現可能であるため、ＭＡＣタグリスト検証装置２０の図２に相当する説明は省略する。
【００８６】
図８を参照すると、ＭＡＣタグリスト検証装置２０は、検証メッセージ入力部２０１と、ブロックスライス並列ＭＡＣ適用部２０２と、ＭＡＣタグリスト検証及び改ざん位置特定部２０３と、検証結果出力部２０４と、を含んで構成される。
【００８７】
検証メッセージ入力部２０１は、検証の対象となるメッセージＭと、第１の実施形態に係るＭＡＣタグリスト生成装置１０が出力する、ＭＡＣタグリストＴ、初期ベクトルＮ及びｓ行ｍ列の２値グループテスト行列Ｗと、を入力する手段である。検証メッセージ入力部２０１は、例えば、キーボードなどの文字入力装置により実現される。なお、第１の実施形態と同様に、メッセージＭはｍ個の個別のアイテム、Ｍ［１］、・・・、Ｍ［ｍ］により構成されているものとする。
【００８８】
ブロックスライス並列ＭＡＣ適用部２０２は、第１の実施形態に係るブロックスライス並列ＭＡＣ適用部１０４と同様の機能を有する。そのため、ブロックスライス並列ＭＡＣ適用部２０２に関する詳細な説明を省略する。ブロックスライス並列ＭＡＣ適用部２０２が出力するＭＡＣタグリストをＴ’＝（Ｔ’［１］、・・・、Ｔ’［ｓ］）と記載し、適宜、チェック用ＭＡＣタグリストと表記する。
【００８９】
ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、ブロックスライス並列ＭＡＣ適用部２０２の出力するチェック用ＭＡＣタグリストＴ’と、検証メッセージ入力部２０１の出力するＭＡＣタグリストＴと、を比較し、メッセージＭに対する改ざんの有無を検証する手段、且つ、改ざんがある場合に、そのアイテムを特定し対応するインデックスを出力する手段である。
【００９０】
ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、チェック用ＭＡＣタグリストＴ’＝（Ｔ’［１］、・・・、Ｔ’［ｓ］）とＭＡＣタグリストＴ＝（Ｔ［１］、・・・、Ｔ［ｓ］）とのエントリごとの差分を計算し、その差がゼロの場合を「０」、非ゼロの場合を「１」とした２値ベクトルＢ＝（Ｂ［１］、・・・、Ｂ［ｓ］）を作成する。さらに、ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、２値ベクトルＢに対し所定の手続き（復号；decode）を施し、当該手続に基づき結果を出力する。
【００９１】
具体的には、ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、２値ベクトルＢのエントリが全て「０」であった場合には、改ざんが存在しないと判定する。一方、ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、上記以外の結果の場合には、メッセージＭの全体において少なくとも１つのアイテムの改ざんが存在すると判定する。
【００９２】
上記のアイテム改ざんが存在する場合、ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、さらに、Ｂ［ｉ］＝０となる全てのｉ＝１、・・・、ｓについて、検証メッセージ入力部２０１が出力するグループテスト行列Ｗのｉ行目ベクトルＶ＝（Ｖ［１］、・・・、Ｖ［ｍ］）を取り出す。その上で、ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、Ｖ［ｊ］＝１となる全てのインデックスｊについて、Ｍ［ｊ］には改ざんなしと判定する（即ち、Ｂ［ｉ］＝０となったｉ番目のテストに含まれたアイテムは全て改ざんなしと判定される）。ＭＡＣタグリスト検証及び改ざん位置特定部２０３は、以上の処理を行い、改ざんなしとは判定されなかったアイテムを抽出し、当該アイテムの全てを改ざんありとして出力する。
【００９３】
なお、上記の手続は、「naive decoding」と呼ばれており、「false positive」と「false negative」の存在を考慮した通常の手続は、例えば、下記の参考文献５の１１頁に記載されている。
［参考文献５］"Error-correcting group testing matrices", [2015年9月18日検索], ＜ＵＲＬ＝https://www.cse.buffalo.edu/~hungngo/classes/2011/709/lectures/12.pdf＞
【００９４】
第２の実施形態では、参考文献１や参考文献２、参考文献５に記載の方法により、グループテスト行列Ｗが上記の手続きにより、アイテムの改ざんが高々ｄ個、タグの改ざんが高々ｓ個であり、初期ベクトルＮの改ざんがない場合に、すべての改ざんされたアイテムを特定することが可能である。
【００９５】
また、非特許文献４に記載のように、改ざんなしと判定されたアイテムが実際は改ざんされていたということは起きないため、「d-disjunctive」であるか否かに関わらず、一般的に、改ざんの可能性がある範囲を狭めることができる。最も広い定義としては参考文献５に記載の(d,L,e_0,e_1)-list-disjunct行列においてe_0=s, e_1=0とすることで、アイテムの改ざんが高々ｄ個、タグの改ざんが高々ｓ個のときに、「naive decoding」により、高々Ｌ個の冗長な判定を許容する（即ち、改ざんがあるとして出力したアイテムのうち高々Ｌ個は、実際には改ざんされていない可能性がある）もとで、改ざんされたｄ個のアイテムを特定することが可能となる。
【００９６】
検証結果出力部２０４は、ＭＡＣタグリスト検証及び改ざん位置特定部２０３の出力する、改ざんの有無と、改ざんされたアイテムを特定する情報とを表示装置や出力装置に出力する手段である。
【００９７】
次に、図９を参照しつつ、第２の実施形態に係るＭＡＣタグリスト検証装置２０の動作を説明する。
【００９８】
ステップＳ２０１において、検証メッセージ入力部２０１は、対象となるｍ個のアイテムからなるメッセージＭと、ＭＡＣタグリストＴと、ｓ行ｍ列のグループテスト行列Ｗと、初期ベクトルＮと、を入力する。
【００９９】
ステップＳ２０２において、ブロックスライス並列ＭＡＣ適用部２０２が、初期ベクトルＮとグループテスト行列Ｗを参照して、擬似ランダム関数ＦとTweak付き擬似ランダム置換Ｇを用いたブロックスライス並列ＭＡＣをメッセージＭに適用し、ｓ個のＭＡＣタグからなるチェック用ＭＡＣタグリストＴ’を生成する。
【０１００】
ステップＳ２０３において、ＭＡＣタグリスト検証及び改ざん位置特定部２０３が、チェック用ＭＡＣタグリストＴ’とＭＡＣタグリストＴを比較し、改ざんの有無、及び、メッセージＭ中の改ざんされたアイテムのインデックスを検証結果として生成する。
【０１０１】
ステップＳ２０４において、検証結果出力部２０４は、前ステップにて生成された検証結果を出力する。
【０１０２】
以上のように、第２の実施形態に係るＭＡＣタグリスト検証装置２０は、第１の実施形態に係るＭＡＣタグリスト生成装置１０が生成するＭＡＣタグリストを用いて、メッセージＭにおける改ざんの有無及び改ざん位置を特定することができる。
【０１０３】
［第３の実施形態］
続いて、第３の実施形態について図面を参照して詳細に説明する。
【０１０４】
図１０は、第３の実施形態に係るＭＡＣタグリスト更新装置３０の処理構成の一例を示すブロック図である。なお、ＭＡＣタグリスト更新装置３０は、第１の実施形態に係るＭＡＣタグリスト生成装置１０と同様のハードウェア構成により実現可能であるため、ＭＡＣタグリスト更新装置３０の図２に相当する説明は省略する。
【０１０５】
図１０を参照すると、ＭＡＣタグリスト更新装置３０は、メッセージ入力部３０１と、ブロックスライス並列ＭＡＣ更新部３０２と、ＭＡＣタグリスト出力部３０３と、を含んで構成される。
【０１０６】
メッセージ入力部３０１は、対象となるメッセージＭと、第１の実施形態に係るＭＡＣタグリスト生成装置１０の出力するＭＡＣタグリストＴ、ｓ行ｍ列の２値グループテスト行列Ｗと、更新するアイテムのインデックスｒ（ｒは正の整数、以下同じ）と、更新後のアイテムの値Ｍ’［ｒ］と、更新前の初期ベクトルＮと、更新後の初期ベクトルＮ’と、を入力する手段である。メッセージ入力部３０１は、例えば、キーボード等の文字入力装置により実現される。なお、第１の実施形態と同様に、メッセージＭはｍ個の個別のアイテム、Ｍ［１］、・・・、Ｍ［ｍ］により構成されているものとし、更新するアイテムのインデックスｒの値は１以上ｍ以下とする。
【０１０７】
ブロックスライス並列ＭＡＣ更新部３０２は、第１の実施形態に係るＭＡＣタグリスト生成装置１０の出力するグループテスト行列Ｗから、ｒ列目が「１」である行ベクトルのインデックスをすべて取り出し、集合Ｂ＝｛ｒ［１］、・・・、ｒ［ｈ］｝とする。なお、インデックスが集合Ｂに含まれるテストについては、Ｍ［ｒ］を使ってＭＡＣタグ計算を行っており、Ｍ［ｒ］をＭ’［ｒ］へ更新した状態でＭＡＣタグを計算する必要がある。さらに、全てのテストでタグ計算に用いる初期ベクトルをＮから更新後の初期ベクトルＮ’へ更新する必要がある。
【０１０８】
上記の処理は、参考文献４のＰＭＡＣにおけるタグ更新と同様な手続きで実現可能である。具体的には、以下の手続きが実行される。その際、第１及び第２の実施形態にて記載の可変長入力固定長出力の擬似ランダム関数Ｆ、固定長入出力のTweak付き擬似ランダム置換Ｇが用いられる。
【０１０９】
ブロックスライス並列ＭＡＣ更新部３０２は、ＭＡＣタグリストをＴ＝（Ｔ［１］、・・・、Ｔ［ｓ］）とし、ｉ番目のテストについて、インデックスｉが集合Ｂに含まれる場合は、擬似ランダム置換Ｇの逆関数Ｇ−１を、tweakを（Ｎ、ｉ）としてＴ［ｉ］に適用する。さらに、ブロックスライス並列ＭＡＣ更新部３０２は、得られた中間変数Ｚ［ｉ］＝  Ｇ−１（（Ｎ、ｉ）、Ｔ［ｉ］）にＦ（ｒ，Ｍ［ｒ］）とＦ（ｒ，Ｍ’［ｒ］）を加算し、新たな中間変数Ｚ’［ｉ］を得る。上記の計算により、過去の計算でＺ［ｉ］に含まれていたＦ（ｒ、Ｍ［ｒ］）がキャンセルされ、代わりにＦ（ｒ、Ｍ’［ｒ］）が含まれることになるため、正しく中間変数の更新がなされたことになる。一方、インデックスｉが集合Ｂに含まれない場合には、Ｚ［ｉ］が求められることは同じであるが、新たな中間変数Ｚ’［ｉ］は変更しない（Ｚ’［ｉ］＝Ｚ［ｉ］）。
【０１１０】
ブロックスライス並列ＭＡＣ更新部３０２は、以上の処理を全てのインデックスｉ＝１、・・・、ｓについて実行した後、全てのｉについてＺ’［ｉ］を、tweak（Ｎ’、ｉ）を用いた擬似ランダム置換Ｇで暗号化し、新たなタグ  Ｔ''［ｉ］＝Ｇ（（Ｎ’、ｉ），Ｚ’［ｉ］）を得る。
【０１１１】
集合Ｂの大きさｈについて、上記の手続は、２×ｈ回、擬似ランダム関数Ｆを呼び出し、ｓ回擬似ランダム置換Ｇとその逆関数Ｇ−１を呼び出せば終了するため、全体を再計算するよりも効率的である。
【０１１２】
ＭＡＣタグリスト出力部３０３は、ブロックスライス並列ＭＡＣ更新部３０２が出力する、更新されたＭＡＣタグリストをコンピュータディスプレイやプリンターなどへ出力する手段である。
【０１１３】
次に、図１１を参照しつつ、第３の実施形態に係るＭＡＣタグリスト更新装置３０の動作を説明する。
【０１１４】
ステップＳ３０１において、メッセージ入力部３０１が、対象となるｍ個のアイテムからなるメッセージＭと、ＭＡＣタグリストＴと、ｓ行ｍ列のグループテスト行列Ｗと、更新するアイテムのインデックスｒと、更新後のアイテムの値Ｍ’［ｒ］と、更新前の初期ベクトルＮと、更新後の初期ベクトルＮ’と、を入力する。
【０１１５】
ステップＳ３０２において、ブロックスライス並列ＭＡＣ更新部３０２が、グループテスト行列Ｗと更新するアイテムのインデックスｒを参照して、ｒ列目が「１」である行ベクトルのインデックスをすべて取り出し、集合Ｂ＝｛ｉ［１］、・・・、ｉ［ｈ］｝に設定する。さらに、ブロックスライス並列ＭＡＣ更新部３０２は、インデックスが集合Ｂに含まれるすべてのテストについて、更新前のアイテムＭ［ｒ］と更新後のアイテムＭ’［ｒ］を用いてタグを更新する。
【０１１６】
ステップＳ３０３において、ＭＡＣタグリスト出力部３０３が、更新されたＭＡＣタグリストＴ’’を出力する。
【０１１７】
以上のように、第３の実施形態に係るＭＡＣタグリスト更新装置３０は、第１の実施形態に係るＭＡＣタグリスト生成装置１０が生成するＭＡＣタグリストを用いて、メッセージＭが更新されたことに応じて、ＭＡＣタグリスト生成装置１０により生成されたＭＡＣタグリストを更新することができる。
【０１１８】
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、無線もしくは有線のデータ通信、あるいは、データベース、ファイルシステム、ウィルススキャン、バージョン管理システムにおける改ざんの検知と改ざん位置特定といった用途に好適に適用可能である。
【０１１９】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
上述の第１の視点に係るタグリスト生成装置のとおりである。
［付記２］
前記タグリスト生成部は、
前記グループテスト行列のｉ行目（ｉは正の整数）にて、テストが必要と設定された列のインデックスｊ（ｊは正の整数）について、
ｊ番目の前記アイテムＭ［ｊ］とインデックスｊを連結して前記擬似ランダム関数に入力することと、
前記擬似ランダム関数の出力の合計を状態変数Ｚ［ｉ］として生成することと、
少なくとも前記状態変数Ｚ［ｉ］を前記擬似ランダム関数に入力し、前記擬似ランダム関数の出力をタグＴ［ｉ］に設定することと、
を前記グループテスト行列のインデックスｉについて繰り返し、前記タグリストを生成する、付記１のタグリスト生成装置。
［付記３］
初期ベクトルを生成する初期ベクトル生成部をさらに備え、
前記タグリスト生成部は、前記初期ベクトルと前記状態変数Ｚ［ｉ］を秘密ではないパラメータであるＴｗｅａｋに設定し、前記擬似ランダム置換に入力する、付記２のタグリスト生成装置。
［付記４］
前記グループテスト行列生成部は、
前記ｍ個のアイテムＭ［１］・・・Ｍ［ｍ］におけるｄ個（ｄは正の整数）の改ざんが特定可能であり、且つ、前記生成されたｓ個のタグのうち、ｅ個（ｅは正の整数）までのタグの改ざんを特定可能な行列を、前記グループテスト行列として生成する、付記１乃至３のいずれか一に記載のタグリスト生成装置。
［付記５］
前記タグリスト生成部は、
前記擬似ランダム関数の出力長と前記擬似ランダム置換の入力長が異なる場合には、前記擬似ランダム関数の出力を拡張する又は短縮することで、前記擬似ランダム関数の出力長と前記擬似ランダム置換の入力長を一致させる、付記１乃至４のいずれか一に記載のタグリスト生成装置。
［付記６］
少なくとも前記タグリストを外部装置に出力する、タグリスト出力部をさらに備える、付記１乃至５のいずれか一に記載のタグリスト生成装置。
［付記７］
付記１乃至６のいずれか一に記載のタグリスト生成装置が生成するタグリストを用いて、前記メッセージにおける改ざんを検証する、タグリスト検証装置。
［付記８］
付記１乃至６のいずれか一に記載のタグリスト生成装置が生成するタグリストを用いて、前記メッセージの更新に応じて、前記生成されたタグリストを更新する、タグリスト更新装置。
［付記９］
上述の第２の視点に係るタグリスト生成方法のとおりである。
［付記１０］
上述の第３の視点に係るプログラムのとおりである。
なお、付記９の形態及び付記１０の形態は、付記１の形態と同様に、付記２の形態〜付記８の形態に展開することが可能である。
【０１２０】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１２１】
１０  ＭＡＣタグリスト生成装置
１１  ＣＰＵ
１２  メモリ
１３  入出力インターフェイス
１４  ＮＩＣ
２０  ＭＡＣタグリスト検証装置
３０  ＭＡＣタグリスト更新装置
１０１、３０１、４０１  メッセージ入力部
１０２  初期ベクトル生成部
１０３、４０２  グループテスト行列生成部
１０４、２０２  ブロックスライス並列ＭＡＣ適用部
１０５、３０３  ＭＡＣタグリスト出力部
２０１  検証メッセージ入力部
２０３  ＭＡＣタグリスト検証及び改ざん位置特定部
２０４  検証結果出力部
３０２  ブロックスライス並列ＭＡＣ更新部
４００  タグリスト生成装置
４０３  タグリスト生成部
【図１】
2017073716.tif 000003
【図２】
2017073716.tif 000004
【図３】
2017073716.tif 000005
【図４】
2017073716.tif 000006
【図５】
2017073716.tif 000007
【図６】
2017073716.tif 000008
【図７】
2017073716.tif 000009
【図８】
2017073716.tif 000010
【図９】
2017073716.tif 000011
【図１０】
2017073716.tif 000012
【図１１】
2017073716.tif 000013