(57)【要約】  改ざんの有無だけでなく改ざんされた位置に関して情報を得られるメッセージ認証を効率よく実施可能なＭＡＣタグリスト生成装置が開示される。係るＭＡＣタグリスト生成装置は、取得したメッセージＭが分割されてなる複数のアイテムに基づいて、組み合わせグループテストのパラメータであるグループテスト行列Ｗを生成するグループテスト行列生成手段と、前記生成されたグループテスト行列Ｗの行ごとに、当該行を構成する前記アイテムに擬似ランダム関数を適用した結果を共有しながら、当該結果を加算し、当該加算した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴを生成するＭＡＣタグリスト生成手段を備える。
2016063512.tif 000002
【特許請求の範囲】
【請求項１】
取得したメッセージＭが分割されてなる複数のアイテムに基づいて、組み合わせグループテストのパラメータであるグループテスト行列Ｗを生成するグループテスト行列生成手段と、
前記生成されたグループテスト行列Ｗの行ごとに、当該行を構成する前記アイテムに擬似ランダム関数を適用した結果を共有しながら、当該結果を加算し、当該加算した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴを生成するＭＡＣタグリスト生成手段と
を備えたＭＡＣタグリスト生成装置。
【請求項２】
前記グループテスト行列生成手段は、前記メッセージＭが分割されてなる前記アイテムの数がｍ、前記ＭＡＣタグリスト生成部が生成するＭＡＣタグの数がｓのとき、ｓ行ｍ列の２値グループテスト行列を生成する
請求項１記載のＭＡＣタグリスト生成装置。
【請求項３】
前記ＭＡＣタグリスト生成手段は、前記グループテスト行列Ｗのｊ行目で、”１”がたつすべての列のインデックスｉについて、当該行のｉ列目にあたるアイテムと前記インデックスｉとを、前記擬似ランダム関数に入力し、得られた結果の排他的論理和を前記擬似ランダム置換に入力し、得られた結果を、ｊ行目を構成するアイテムに関するＭＡＣタグＴ［ｊ］として生成する
請求項２記載のＭＡＣタグリスト生成装置。
【請求項４】
前記ＭＡＣタグリスト生成手段は、前記生成したｊ行目を構成するアイテムに関するＭＡＣタグＴ［ｊ］を、ｊ＝１，・・・，ｓ行について生成した結果を、前記ＭＡＣタグリストＴ＝（Ｔ［１］，・・・，Ｔ［ｓ］）として生成する
請求項３記載のＭＡＣタグリスト生成装置。
【請求項５】
請求項１乃至請求項４のいずれか１項記載のＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得する取得手段と、
取得したメッセージＭが分割されてなる複数のアイテムのうち、前記取得したグループテスト行列Ｗの行を構成する前記アイテムに、擬似ランダム関数を適用した結果を共有しながら、当該結果の排他的論理和を算出し、当該算出した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴ’を生成する検証ＭＡＣタグリスト生成手段と、
前記取得手段が取得したＭＡＣタグリストＴと、前記検証ＭＡＣタグリスト生成部が生成したＭＡＣタグリストＴ’とを比較することにより、メッセージＭに含まれる各アイテムについて改ざんの有無を判定する検証手段と
を備えたＭＡＣタグリスト検証装置。
【請求項６】
請求項１乃至請求項４のいずれか１項記載のＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得する取得手段と、
更新するアイテムのインデックスｉと、更新後のアイテムの値Ｍ’［ｉ］とを取得し、前記ＭＡＣタグリストＴのうち、前記グループテスト行列Ｗの、ｉ列目が”１”であるすべての行のインデックスの集合Ｂに関するＭＡＣタグリストＴに、擬似ランダム置換の逆関数を適用し、得られた結果と、前記インデックスｉと前記アイテムＭ［ｉ］と前記アイテムＭ’［ｉ］と、前記擬似ランダム置換とに基づいて、前記ＭＡＣタグリストＴを更新するＭＡＣタグリスト更新手段と
を備えたＭＡＣタグリスト更新装置。
【請求項７】
前記ＭＡＣタグリスト更新手段は、前記擬似ランダム置換の逆関数を適用して得られた結果に、前記アイテムＭ［ｉ］と前記インデックスｉとを前記擬似ランダム関数に入力して得られた結果と、前記アイテムＭ’［ｉ］と前記インデックスｉとを前記擬似ランダム関数に入力し得られた結果とを加算し、得られた結果を、前記擬似ランダム置換に適用した結果により、前記ＭＡＣタグを更新する
を備えた請求項６記載のＭＡＣタグリスト更新装置。
【請求項８】
取得したメッセージＭが分割されてなる複数のアイテムに基づいて、組み合わせグループテストのパラメータであるグループテスト行列Ｗを生成し、
前記生成されたグループテスト行列Ｗの行ごとに、当該行を構成する前記アイテムに擬似ランダム関数を適用した結果を共有しながら、当該結果を加算し、当該加算した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴを生成する
ＭＡＣタグリスト生成方法。
【請求項９】
請求項１乃至請求項４のいずれか１項記載のＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得し、
取得したメッセージＭが分割されてなる複数のアイテムのうち、前記取得したグループテスト行列Ｗの行を構成する前記アイテムに、擬似ランダム関数を適用した結果を共有しながら、当該結果の排他的論理和を算出し、当該算出した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴ’を生成し、
前記取得したＭＡＣタグリストＴと、前記検証ＭＡＣタグリスト生成部が生成したＭＡＣタグリストＴ’とを比較することにより、メッセージＭに含まれる各アイテムについて改ざんの有無を判定する
ＭＡＣタグリスト検証方法。
【請求項１０】
請求項１乃至請求項４のいずれか１項記載のＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得し、
更新するアイテムのインデックスｉと、更新後のアイテムの値Ｍ’［ｉ］とを取得し、前記ＭＡＣタグリストＴのうち、前記グループテスト行列Ｗの、ｉ列目が”１”であるすべての行のインデックスの集合Ｂに関するＭＡＣタグリストＴに、擬似ランダム置換の逆関数を適用し、得られた結果と、前記インデックスｉと前記アイテムＭ［ｉ］と前記アイテムＭ’［ｉ］と、前記擬似ランダム置換とに基づいて、前記ＭＡＣタグリストＴを更新する
ＭＡＣタグリスト更新方法。
【請求項１１】
取得したメッセージＭが分割されてなる複数のアイテムに基づいて、組み合わせグループテストのパラメータであるグループテスト行列Ｗを生成する処理と、
前記生成されたグループテスト行列Ｗの行ごとに、当該行を構成する前記アイテムに擬似ランダム関数を適用した結果を共有しながら、当該結果を加算し、当該加算した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴを生成する処理と
を、コンピュータに実行させるＭＡＣタグリスト生成プログラムを記録する記録媒体。
【請求項１２】
請求項１乃至請求項４のいずれか１項記載のＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得する処理と、
取得したメッセージＭが分割されてなる複数のアイテムのうち、前記取得したグループテスト行列Ｗの行を構成する前記アイテムに、擬似ランダム関数を適用した結果を共有しながら、当該結果の排他的論理和を算出し、当該算出した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴ’を生成する処理と、
前記取得したＭＡＣタグリストＴと、前記検証ＭＡＣタグリスト生成部が生成したＭＡＣタグリストＴ’とを比較することにより、メッセージＭに含まれる各アイテムについて改ざんの有無を判定するする処理と
を、コンピュータに実行させるＭＡＣタグリスト検証プログラムを記録する記録媒体。
【請求項１３】
請求項１乃至請求項４のいずれか１項記載のＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得する処理と、
更新するアイテムのインデックスｉと、更新後のアイテムの値Ｍ’［ｉ］とを取得し、前記ＭＡＣタグリストＴのうち、前記グループテスト行列Ｗの、ｉ列目が”１”であるすべての行のインデックスの集合Ｂに関するＭＡＣタグリストＴに、擬似ランダム置換の逆関数を適用し、得られた結果と、前記インデックスｉと前記アイテムＭ［ｉ］と前記アイテムＭ’［ｉ］と、前記擬似ランダム置換とに基づいて、前記ＭＡＣタグリストＴを更新するする処理と
を、コンピュータに実行させるＭＡＣタグリスト更新プログラムを記録する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵暗号ないしハッシュ関数を用いたメッセージ認証技術に関する。
【背景技術】
【０００２】
メッセージ認証コード（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ、以降、「メッセージ認証」あるいは「ＭＡＣ」と称する）方式は、メッセージに対して秘密鍵を知るものだけが計算できるタグを付与することで、メッセージが正当であることを保証する技術である。メッセージ認証方式を用いれば、例えば、秘密鍵を共有した２者の通信において、通信の間に行われた、第３者による改ざんを検知することが可能となる。【０００３】
具体的には、送信者からメッセージとタグが受信者に送られると、受信者は、受け取ったメッセージからタグを計算すると共に、計算したタグと受信したタグとの一致を判断する。これにより、受信者は、メッセージが正当な送信元から送られたものかどうかを判断できる。【０００４】
ＭＡＣの基本的な入出力について説明する。秘密鍵Ｋを共有する２者ＡｌｉｃｅとＢｏｂにおいて、ＡｌｉｃｅからＢｏｂへメッセージＭを送る場合について説明する。Ａｌｉｃｅは、Ｍに対して、Ｋを用いたＭＡＣ関数ＭＡＣ＿Ｋを適用し、認証タグＴ＝ＭＡＣ＿Ｋ（Ｍ）を求めると共に、メッセージ（Ｍ，Ｔ）をＢｏｂへ送信する。【０００５】
Ｂｏｂが受信した情報を（Ｍ’，Ｔ’）とする。Ｂｏｂは、Ｔ’とＭＡＣ＿Ｋ（Ｍ’）の一致を判断することにより、受け取ったメッセージ（Ｍ’，Ｔ’）が、Ａｌｉｃｅが送ったメッセージと認証タグとの対であるか否かがわかる。これにより、改ざんの有無をチェック可能である。【０００６】
このような方式の一例として、非特許文献１のＣＭＡＣ（Ｃｉｐｈｅｒ−ｂａｓｅｄ  ＭＡＣ）や非特許文献２のＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  ＭＡＣ）がある。【０００７】
一般的なメッセージ認証を用いる場合、メッセージ中の改ざんされた位置に関して情報を得ることは困難である。これは、改ざんが行われた場合、認証タグの値は、正しい値とは異なるランダムな値となるからである。【０００８】
これに対して、メッセージの全体にＭＡＣ関数を一度適用するのではなく、メッセージを任意の部分に分割し、それらの部分ごとにＭＡＣ関数を適用することにより、部分ごとのチェックを可能とする技術が一般に用いられている。これにより、メッセージに対する改ざん位置を特定することが可能となる。【０００９】
例えば、メッセージＭがｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］からなる場合、各アイテムに対して、以下のようにタグを求める。
2016063512.tif 000003
そして、（Ｍ，Ｔ［１］，．．．，Ｔ［ｍ］）を受信者に送信する。受信者は、受信した（Ｍ，Ｔ［１］，．．．，Ｔ［ｍ］）に基づいて、改ざん位置を特定することができる。【００１０】
ハードディスクにおけるデータに対し、ファイルごとや、ディスクセクターごとにＭＡＣを適用することがこの方法の例として挙げられる。しかし、この方法は、ｍ個のアイテムに対してｍ個のタグが生成されるので、保存すべきデータ量の増加が大きいという問題がある。【００１１】
一方、非特許文献３に記載されるように、メッセージを、互いに重なりを許し、長さも異なる複数の部分系列に分解し、この部分系列ごとにＭＡＣを適用するというアプローチがある。【００１２】
例えば、非特許文献３に記載される「例１」について説明する。「例１」では、メッセージＭが７個のアイテムからなるとき、（Ｍ［１］，Ｍ［２］，．．．，Ｍ［７］）を、
2016063512.tif 000004
という３つの部分系列に分解する。そして、それぞれに対してＭＡＣを適用し、３つのタグ、
2016063512.tif 000005
を計算する。【００１３】
この例では、アイテムごとにＭＡＣを適用する場合に７個必要であったタグの数を、３つに減らすことが可能となる。さらに、検証時における各（Ｔ［ｉ］，Ｓ［ｉ］）に対する検証結果を２値（すなわち、”０”ならＭＡＣは正しい、”１”なら改ざんされた）のＢ［ｉ］で表現すると、以下のように改ざん位置が特定できる。すなわち、ある時点でメッセージＭに対してＭＡＣタグのチェックを行った結果が、
2016063512.tif 000006
である場合、結果が”１”であるＢ［２］のみに含まれるアイテムがＭ［６］であることから、Ｍ［６］が改ざんされたと特定できる。より正確には、この例では、任意の１アイテムの改ざんであれば、改ざんされたアイテムの特定が可能である。【００１４】
この性質は、部分系列の作り方を工夫することにより、改ざんされたアイテム数が所与のしきい値以下のときには、改ざんされたアイテムを特定することが可能であるということを示している。【００１５】
どのような部分系列に分解し、またその結果どのような改ざんアイテムの特定が可能になるかは、非特許文献３で述べられているように、組み合わせグループテスト（ｃｏｍｂｉｎａｔｏｒｉａｌ  ｇｒｏｕｐ  ｔｅｓｔｉｎｇ：以降、「ＣＧＴ」と称する）と呼ばれる組み合わせ問題と密接に関連がある。【００１６】
ｍ個のアイテムと、ｓ個のテストからなるＣＧＴでは、ｓ行ｍ列の２値行列Ｗ（ここでは、「ＣＧＴ行列」と呼ぶ）を構成し、Ｗに従ってテストを行う。すなわち、Ｗのｊ行ｉ列目の要素が１であれば、ｊ番目のテストでｉ番目のアイテムをテストに含める、ということをさしている。【００１７】
例えば、データベースシステムへの適用を考えた場合、現実的なシステムの制約などから、不正を行うものが一度に大量のアイテムを改ざんすることは考えにくい。したがって、このように、ＣＧＴとＭＡＣとを組み合わせることにより、タグの総数を抑えつつ、現実的に起こりうる改ざんに対し、その場所を特定可能なデータベースシステムを構築することが可能となる。なお、通常のＭＡＣと同様に、ＣＧＴとＭＡＣを組み合わせた場合、任意の改ざんに対して、改ざんがあったという事実を検出可能という性質は変わらない。【００１８】
ここで、非特許文献４に記載のＣｏｒｒｕｐｔｉｏｎ−ｌｏｃａｌｉｚｉｎｇ  ｈａｓｈのように、鍵のないハッシュ関数をＭＡＣの代わりに用いた場合でも、ハッシュ値をメッセージと別の安全な場所に保存するという前提のもとでは、同様の効果が望める。また、改ざんされたアイテムの特定に至らなくても、改ざんされた範囲を絞ることは一般に可能である。【００１９】
非特許文献５には、符号理論を用いてテストを構成する手法が開示される。非特許文献６には、ｎビットブロック暗号Ｅを用いたＰＭＡＣ（Ｐａｒａｌｌｅｌｉｚａｂｌｅ  ＭＡＣ）について開示される。
【先行技術文献】
【非特許文献】
【００２０】
【非特許文献１】NIST Special Publication 800-38B, Morris Dworkin, Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication.
【非特許文献２】Mihir Bellare、 Ran Canetti、 Hugo Krawczyk, ”Keying Hash Functions for Message Authentication”, CRYPTO'96, pp.1-15, 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.
【非特許文献５】Explicit Non-Adaptive Combinatorial Group Testing Schemes, Ely Porat, Amir Rothschild, ICALP 2008.
【非特許文献６】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.
【発明の概要】
【発明が解決しようとする課題】
【００２１】
非特許文献３、非特許文献４に記載の技術を、既知の”ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−２”などのハッシュ関数や、”ＣＭＡＣ”といったメッセージ認証方式で実行すると、タグを一つだけ計算する基本的な方法に比べ、計算量が大幅に増加する。一般的なＭＡＣ関数は、入力長に対して線形オーダの計算量を持つ。したがって、大まかに言うと、ｓ個のＭＡＣ計算をｍ個のアイテムに対して行うことは、計算量をｓ倍にする。【００２２】
より正確に言うと、計算量の増加は、どのようなＣＧＴを実行するかに依存している。例えば、「例１」と同様に、任意の１アイテムの改ざんを特定可能なＣＧＴを構成する場合、アイテム数がｍのとき、テストの数（すなわちタグの数）はｌｏｇ２ｍ（以降、「ｌｏｇ＿２ｍ」とも表記する）個必要である。また、ほぼすべてのテストは、ｍ／２個のメッセージを用いる。【００２３】
このように、ＭＡＣの計算量は処理するアイテム数に比例すると考えると、上記実行は、通常のＭＡＣのタグを一つ生成する場合に比べて、約（１／２）ｌｏｇ＿２ｍ倍の計算量となる。【００２４】
データベースなどのアプリケーションでは、ｍの数は極めて大きいことが予想されるので、たとえ（１／２）ｌｏｇ＿２ｍ倍であっても、計算量の増加は著しいものとなる。さらに、一般にｄ個のアイテムの改ざんを同定しようとする場合、テストの数はＯ（ｄ＾２ｌｏｇ＿２ｍ）個必要となることが知られている。したがって、仮に、各テストがｍ／２程度のアイテムを含んでいるとすると、約（ｄ＾２／２）ｌｏｇ＿２ｍ倍の計算量となる。なお、”Ｏ”は計算量を示す記号である。【００２５】
また、アプリケーションによっては、既にタグを計算したアイテムの値を更新することがありうる。しかしながら、非特許文献３、非特許文献４に記載の技術を、既知のハッシュ関数やメッセージ認証方式で実現している場合、アイテムの更新に伴うタグの再計算を効率的に行うことができず、該当するテストすべてを最初から再計算する必要がある。【００２６】
本願発明は、上記課題を鑑みてなされたものであり、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるメッセージ認証を、効率よく実施可能なＭＡＣタグリスト生成装置等を提供することを主要な目的とする。
【課題を解決するための手段】
【００２７】
本発明の第１のＭＡＣタグリスト生成装置は、取得したメッセージＭが分割されてなる複数のアイテムに基づいて、組み合わせグループテストのパラメータであるグループテスト行列Ｗを生成するグループテスト行列生成手段と、前記生成されたグループテスト行列Ｗの行ごとに、当該行を構成する前記アイテムに擬似ランダム関数を適用した結果を共有しながら、当該結果を加算し、当該加算した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴを生成するＭＡＣタグリスト生成手段を備える。【００２８】
本発明の第１のＭＡＣタグリスト検証装置は、ＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得する取得手段と、取得したメッセージＭが分割されてなる複数のアイテムのうち、前記取得したグループテスト行列Ｗの行を構成する前記アイテムに、擬似ランダム関数を適用した結果を共有しながら、当該結果の排他的論理和を算出し、当該算出した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴ’を生成する検証ＭＡＣタグリスト生成手段と、前記取得手段が取得したＭＡＣタグリストＴと、前記検証ＭＡＣタグリスト生成部が生成したＭＡＣタグリストＴ’とを比較することにより、メッセージＭに含まれる各アイテムについて改ざんの有無を判定する検証手段とを備える。【００２９】
本発明の第１のＭＡＣタグリスト更新装置は、ＭＡＣタグリスト生成装置からグループテスト行列ＷとＭＡＣタグリストＴとを取得する取得手段と、更新するアイテムのインデックスｉと、更新後のアイテムの値Ｍ’［ｉ］とを取得し、前記ＭＡＣタグリストＴのうち、前記グループテスト行列Ｗの、ｉ列目が”１”であるすべての行のインデックスの集合Ｂに関するＭＡＣタグリストＴに、擬似ランダム置換の逆関数を適用し、得られた結果と、前記インデックスｉと前記アイテムＭ［ｉ］と前記アイテムＭ’［ｉ］と、前記擬似ランダム置換とに基づいて、前記ＭＡＣタグリストＴを更新するＭＡＣタグリスト更新手段とを備える。【００３０】
本発明の第１のＭＡＣタグリスト生成方法は、取得したメッセージＭが分割されてなる複数のアイテムに基づいて、組み合わせグループテストのパラメータであるグループテスト行列Ｗを生成し、前記生成されたグループテスト行列Ｗの行ごとに、当該行を構成する前記アイテムに擬似ランダム関数を適用した結果を共有しながら、当該結果を加算し、当該加算した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴを生成する。【００３１】
なお同目的は、上記の各構成を有するＭＡＣタグリスト生成方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記録媒体によっても達成される。
【発明の効果】
【００３２】
本願発明によれば、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるメッセージ認証を、効率よく実施可能であるという効果が得られる。
【図面の簡単な説明】
【００３３】
【図１】本発明の第１の実施形態に係るＭＡＣタグリスト生成装置の構成を示す図である。
【図２】本発明の第１の実施形態に係るＭＡＣタグリスト生成装置によるＭＡＣタグリストの生成の流れを示すフローチャートである。
【図３】本発明の第１の実施形態に係るＭＡＣタグリスト生成装置によりＭＡＣタグＴが算出される過程を説明する図である。
【図４】ＰＭＡＣをＳ［１］からＳ［３］に適用してＭＡＣタグＴを算出する過程を説明する図である。
【図５】本発明の第１の実施形態に係るＭＡＣタグリスト生成装置による方式をＳ［１］からＳ［３］に適用してＭＡＣタグＴを算出する過程を説明する図である。
【図６】本発明の第２の実施形態に係るＭＡＣタグリスト検証装置の構成を示すブロック図である。
【図７】本発明の第２の実施形態に係るＭＡＣタグリスト検証装置によるＭＡＣタグリストの検証の流れを示すフローチャートである。
【図８】本発明の第３の実施形態に係るＭＡＣタグリスト更新装置の構成を示すブロック図である。
【図９】本発明の第３の実施形態に係るＭＡＣタグリスト更新装置によるＭＡＣタグリストの更新の流れを示すフローチャートである。
【図１０】本発明の第４の実施形態に係るＭＡＣタグリスト生成装置の構成を示すブロック図である。
【図１１】本発明の各実施形態に係る情報処理装置のハードウエア構成を例示する図である。
【発明を実施するための形態】
【００３４】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００３５】
第１の実施形態
図１は、本発明の第１の実施形態に係るＭＡＣタグリスト生成装置１００の構成を示す図である。図１に示すように、ＭＡＣタグリスト生成装置１００は、メッセージ入力部１０１、グループテスト行列生成部１０２、ブロックスライス並列ＭＡＣ適用部（ＭＡＣタグリスト生成手段）１０３およびＭＡＣタグリスト出力部１０４を備える。
【００３６】
ＭＡＣタグリスト生成装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、メモリと、ディスク（記憶媒体）により実現可能である。ＭＡＣタグリスト生成装置の各部は、プログラムをディスクに格納しておき、このプログラムをＣＰＵがメモリに読み出すと共に実行することにより、実現できる。なお、以下の説明では、特に断りのない限り、１アイテムの長さをｎビットとする。また、”＋”または”加算”は、ビットごとの排他的論理和（ＸＯＲ）を表す。
【００３７】
次に、ＭＡＣタグリスト生成装置１００の構成要素の動作について説明する。図２は、ＭＡＣタグリスト生成装置１００によるＭＡＣタグリストの生成の流れを示すフローチャートである。図１、図２を参照して、ＭＡＣタグリスト生成装置１００がＭＡＣタグリストを生成する動作について説明する。
【００３８】
メッセージ入力部１０１は、対象となるメッセージＭを、グループテスト行列生成部１０２に供給する（Ｓ１１１）。例えば、メッセージ入力部１０１は、キーボードなどの文字入力装置により実現される。またメッセージ入力部１０１は、コンピュータのＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの通信インタフェース、またはプログラムの入力インタフェースであってもよい。
【００３９】
ここでは、メッセージＭは、ｍ個の個別のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されていると仮定する。それぞれのアイテムは、異なる長さを有してもよいし、同じ値のアイテムが含まれてもよい。メッセージＭは、例えば、ハードディスクの１セクタを示す情報でも、データベースの１エントリを示す情報でも、あるいは文章情報の１キャラクタでもよい。
【００４０】
グループテスト行列生成部１０２は、メッセージ入力部１０１から取得したメッセージＭに基づいて、改ざん位置特定のための組み合わせグループテスト行列Ｗを生成する（Ｓ１１２）。具体的には、グループテスト行列生成部１０２は、テストの数（すなわちＭＡＣの数）ｓと、特定可能な改ざんアイテムの数の最大値ｄに応じて、ｓ行ｍ列の２値行列Ｗを生成する。
【００４１】
例えば、非特許文献３に記載されている「例１」の場合、Ｍ＝（Ｍ［１］，Ｍ［２］，．．．，Ｍ［７］）は、
2016063512.tif 000007
という３つの部分系列に分解されることを示した。これは、
2016063512.tif 000008
という３×７行列のグループテスト行列Ｗを生成することを意味している。このＷにおいて、各部分系列がアイテムを含む位置に１が立つ。この他にも、グループテスト行列の生成には、任意の既存の手法が利用可能である。
【００４２】
例えば、非特許文献３は、特定の分布を持つ乱数を用いて、グループテスト行列を生成する方法を開示する。また、非特許文献４は、部分系列の巡回を用いて、グループテスト行列を生成する方法を開示する。
【００４３】
一般に、テストの数ｓはＯ（ｄ＾２ｌｏｇ＿２ｍ）となることが知られている。これを達成するように、符号理論を用いてテストを構成する手法として、例えば、非特許文献５に記載の技術が知られている。
【００４４】
続いて、ブロックスライス並列ＭＡＣ適用部１０３は、ｍ個のアイテムからなるメッセージＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）について、ｓ行ｍ列のグループテスト行列Ｗに基づいて、ｓ個のＭＡＣタグからなるＭＡＣタグリストＴを生成する（Ｓ１１３）。
【００４５】
ＭＡＣタグリスト出力部１０４は、ブロックスライス並列ＭＡＣ適用部１０３が生成したＭＡＣタグリストＴを、コンピュータディスプレイやプリンターなどへ出力する（Ｓ１１４）。
【００４６】
以下、ブロックスライス並列ＭＡＣ適用部１０３によるＭＡＣタグリストの生成について、詳細に説明する。
【００４７】
ＭＡＣタグの生成には、可変長を入力し固定長を出力する（可変長入力固定長出力）関数である擬似ランダム関数（ｐｓｅｕｄｏｒａｎｄｏｍ  ｆｕｎｃｔｉｏｎ，  ＰＲＦ）Ｆと、固定長を入力し固定長を出力する（固定長入出力）擬似ランダム置換（ｐｓｅｕｄｏｒａｎｄｏｍ  ｐｅｒｍｕｔａｔｉｏｎ，  ＰＲＰ）Ｇが用いられる。
【００４８】
説明の便宜上、Ｆの出力長はＧの入出力長と等しいものとする。Ｆの出力長がＧの入出力長と異なる場合、Ｆの出力に適宜パディングや短縮を用いることにより、長さを合わせればよい。
【００４９】
Ｗの役割は、そのｉ行目の行ベクトルがｉ番目のテストでどのアイテムをＭＡＣタグ計算に含めるかを示すものである。
【００５０】
具体的には、ブロックスライス並列ＭＡＣ適用部１０３は、まず、Ｗのｊ行目で１がたつすべての列のインデックスｉについて、ｉ番目のアイテムＭ［ｉ］とインデックスｉとを連結して、Ｆに入力し、出力Ｆ（ｉ，Ｍ［ｉ］）を得る。
【００５１】
次に、上記１がたつすべてのｉについてＦ（ｉ，Ｍ［ｉ］）の和（排他的論理和）を算出し、算出した結果をＺとしてＧへ入力する。それにより得られた出力Ｇ（Ｚ）を、ｊ番目のテストに対応するＭＡＣタグＴ［ｊ］とする。
【００５２】
これをすべてのｊ＝１，．．．，ｓについて行い、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｓ］）を生成する。
【００５３】
ＦとＧは、標準的なブロック暗号やハッシュ関数を用いて構成可能である。例えば、各アイテムのビット長が、高々ｎビットである場合、ＦとＧは、ｎビットブロック暗号Ｅを用いた非特許文献６のＰＭＡＣと類似した構成が可能である。なお、ブロックサイズがｎビット（ｎは１以上の整数）のブロック暗号を、一般にｎビットブロック暗号と呼ぶ。
【００５４】
具体的には、ｊ行目で１がたつ列のインデックスがｉ［１］，．．．，ｉ［ｈ］であるとき、Ｆ（ｉ，Ｍ［ｉ］）をＥ（ｍｕｌｔ（ｃｏｎｓｔ（ｉ），Ｌ）＋Ｍ［ｉ］）とし、Ｚ＝Ｆ（ｉ［１］，Ｍ［ｉ［１］］）＋Ｆ（ｉ［２］，Ｍ［ｉ［２］］）＋．．．＋Ｆ（ｉ［ｈ］，Ｍ［ｉ［ｈ］］）とし、Ｇ（Ｚ）をＥ（ｍｕｌｔ（ｃｏｎｓｔ’，Ｌ）＋Ｚ）とすると、Ｇ（Ｚ）がＴ［ｊ］となる。
【００５５】
ただし、ＬはＥ（ｃｏｎｓｔ’’）、ｃｏｎｓｔ（ｉ），ｃｏｎｓｔ’，ｃｏｎｓｔ’’は、ガロア体ＧＦ（２＾ｎ）上の元、ｍｕｌｔ（Ａ，Ｂ）は、ガロア体ＧＦ（２＾ｎ）上の元であるＡとＢの乗算、Ａ＋Ｂは、ＡとＢのガロア体ＧＦ（２＾ｎ）上の加算、すなわちビットごとのＸＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ）を、それぞれ表す。
【００５６】
ここで、ｃｏｎｓｔ（１），．．．，ｃｏｎｓｔ（ｍ），ｃｏｎｓｔ’，ｃｏｎｓｔ’’は、互いに異なるという条件が安全性の観点から必要である。例えば、ＰＭＡＣと同様に、ｃｏｎｓｔ（ｉ）＝２＾ｉ，ｃｏｎｓｔ’＝０，ｃｏｎｓｔ’’＝３とすることが可能である。これは、ブロック暗号の入力に、ｉに依存したマスクを施していると考えることができる。
【００５７】
ただし、ＰＭＡＣでは、メッセージの最終ブロックをＥに適用せず、直接、排他的論理和を算出（ＸＯＲ）しているが、これは本実施形態では安全性の観点から行うことはできない。
【００５８】
なお、各アイテムの長さがｎビット以上の場合は、可変長入力固定長出力の擬似ランダム関数Ｆを、ＨＭＡＣなどの鍵付きハッシュ関数Ｈで直接的に実現、すなわちｉとＭ［ｉ］とを連結してＨに与えることで、Ｆ（ｉ，Ｍ［ｉ］）を実現すればよい。より効率よい方式としては、上記と同様に、Ｈの入力前半のｎビットに、ｉに応じたマスクを施すことで、Ｆ（ｉ，Ｍ［ｉ］）を実現すればよい。いずれの場合においても、擬似ランダム置換Ｇは、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などのブロック暗号で実現可能である。
【００５９】
図３は、上記のように、可変長入力固定長出力の擬似ランダム関数Ｆと、固定長入出力の擬似ランダム置換Ｇとを用いて、ＭＡＣタグＴが算出される例を説明する図である。図３に示すＦＫ３００は、可変長のデータ（例えば０＾ｎ（オールゼロのｎビット系列））を入力し、固定長のデータ（例えばＬ）を出力する擬似ランダム関数であるＦ（Ｋ，＊）を示す。また、ＧＫ’２４０は、中間変数Ｓを入力し、ＭＡＣタグＴを出力する擬似ランダム置換Ｇ（Ｋ’）を示す。
【００６０】
ここで、各ＭＡＣタグの計算は、テストごとに個別に行うのではなく、途中の計算結果（中間変数）を共有しつつ並列に行うことで、大幅に効率よく計算が可能である。なぜなら、Ｍ［ｉ］を含む二つのテストでは、共にＦ（ｉ，Ｍ［ｉ］）を用いるからである。
【００６１】
例えば、上述の「例１」の場合について説明する。３つの状態変数Ｚ［１］，Ｚ［２］，Ｚ［３］を用意し、それぞれ初期値を０とすると、以下の手続きによりＭＡＣタグリストが計算できる。すなわち、
2016063512.tif 000009
2016063512.tif 000010
2016063512.tif 000011
2016063512.tif 000012
2016063512.tif 000013
2016063512.tif 000014
2016063512.tif 000015
2016063512.tif 000016
という手続きにより、３つのＭＡＣタグリストが計算できる。このとき、Ｆの呼び出し回数は、アイテム数と同じ７回となる（詳細は図５を参照して後述する）。
【００６２】
仮に、これを通常のＭＡＣ、例えば非特許文献１のＣＭＡＣを用いて部分系列、
2016063512.tif 000017
に対するＭＡＣをそれぞれ計算する場合、各部分系列の語頭が同じ部分を除けば計算を共有できない。したがって、全体の計算量がより大きくなる。
【００６３】
非特許文献６のＰＭＡＣを用いる場合は、より共有可能な部分が増えるが、それでも一般に大部分は共有不可能である。
【００６４】
図４は、ＰＭＡＣをＳ［１］からＳ［３］に適用してＭＡＣタグＴを算出する過程を説明する図である。また、図５は、本実施形態の方式をＳ［１］からＳ［３］に適用してＭＡＣタグＴを算出する過程を説明する図である。図４において、関数２５０は、図３と同様に、可変長のアイテムＭ［１］を入力し、固定長のＦ（１，Ｍ［１］）を出力する擬似ランダム関数Ｆを表す。また、図４において、Ｇ２６０は、Ｆ（１，Ｍ［１］），．．．，Ｆ（４，Ｍ［４］）の排他的論理和を入力し、ＭＡＣタグＴ［１］を出力する擬似ランダム置換Ｇを示す。図４および図５において、関数２５０およびＧ２６０とそれぞれ同形の図形は、それぞれ同様の意味を示す。
【００６５】
図４に示すように、ＰＭＡＣをＳ［１］からＳ［３］に対して用いる場合、Ｍ［３］に対する計算結果は、Ｓ［２］を算出する過程で異なる値となるので、他のテストに対して共有できない。したがって、図４に示す場合では、点線で囲った部分における計算をする必要がある。すなわち、Ｆを８回呼び出す必要がある。
【００６６】
これに対して、図５に示すように、本実施形態の方式によれば、Ｍ［３］に対する計算結果を、他のテストに共有可能である。したがって、図５に示す場合では、点線で囲った部分の計算をすればよい。すなわちＦを７回呼び出すのみでよい。図４と図５に示す例では、Ｆの呼び出し回数の差はわずか１回であるが、アイテム数が増えればこの差は大きく広がる。例えば、アイテム数が１５であれば、Ｆの呼び出し回数の差は５回となり、呼び出し回数削減の効果は大きい。
【００６７】
本実施形態の計算手続きは、上記の例を一般化したものである。すなわち、本実施形態によれば、任意のｓ行ｍ列グループテスト行列に対して、Ｆの呼び出し回数はｍ、Ｇの呼び出し回数はｓとなる。つまり、本実施形態による計算量は、行列の内容にかかわらず（ｓ＋ｍ）に比例した計算量となる。これに対して、通常のＭＡＣを用い、仮に、計算結果の共有を全く行うことができず、かつ行列が十分密であるとすれば、Ｆの呼び出し回数はおよそｓ×ｍ回となる。したがって、本実施形態によれば、大幅な計算量の削減が可能となる。
【００６８】
このように、本実施形態では、各ＭＡＣタグの計算を個別に行わず中間変数を共有しつつ、並列に行う。本実施形態では、この方法を、「ブロックスライス並列ＭＡＣ」と呼ぶ。
【００６９】
本実施形態におけるブロックスライス並列ＭＡＣは、以下のように捉えることもできる。すなわち、ＰＭＡＣなどの並列実行可能なＭＡＣにおいて、グループテスト行列の行ベクトルのｉ番目の成分の値が、”１”のときにはアイテムそのものとインデックスｉの情報を用いて生成した擬似乱数をＭＡＣの中間変数へ加算し、上記成分が”０”のときにはアイテムの値によらず全ゼロ値を加算する、と捉えることもできる。
【００７０】
また、本実施形態におけるブロックスライス並列ＭＡＣを行う場合、通常のＭＡＣをそれぞれのテストで行う場合と同様に、Ｆが擬似ランダム関数であれば、任意のメッセージについて、ＭＡＣタグを攻撃者が予測することは困難である。
【００７１】
これは、任意の異なるアイテムインデックスの集合（ただし空集合は除く）ＢとＢ’を考えたとき、
Ｂに含まれるすべてのｉについてＦ（ｉ，Ｍ［ｉ］）の和を算出した値と、
Ｂ’に含まれるすべてのｊについてＦ（ｊ，Ｍ［ｊ］）の和を算出した値と、
が一致する確率は、アイテムの値によらず非常に低いからである。
【００７２】
それぞれのＭＡＣタグは、Ｆ（ｉ，Ｍ［ｉ］）の和を算出した値を、擬似ランダム置換Ｇに適用した値であるので、Ｇへの入力が一致しない限り、出力の予測は困難である。したがって、改ざんは困難となる。
【００７３】
以上のように、本第１の実施形態よれば、ｓ行ｍ列グループテスト行列Ｗのある列が共に”１”である行（すなわちテスト）に関するＭＡＣタグの生成において、それぞれｉ番目のアイテムを擬似ランダム関数に与えた出力Ｆ（ｉ，Ｍ［ｉ］）を、互いに共用できる。すべてのｉに対してＦ（ｉ，Ｍ［ｉ］）の和Ｚを擬似ランダム置換Ｇに適用することにより、ＭＡＣタグを生成する。上記構成を採用することにより、本第１の実施形態によれば、ＭＡＣタグリストの生成にあたる計算量は（ｓ＋ｍ）に比例した計算量となる。したがって、組み合わせグループテストを用いて改ざんの有無および改ざん位置を特定するメッセージ認証を、計算量を増大させることなく効率よく実行できるという効果が得られる。
【００７４】
第２の実施形態
次に、本発明の第２の実施形態について、図面を参照して説明する。
【００７５】
図６は、本発明の第２の実施形態に係るＭＡＣタグリスト検証装置２００の構成を示すブロック図である。図６に示すように、ＭＡＣタグリスト検証装置２００は、メッセージ入力部（取得手段）２０１と、ブロックスライス並列ＭＡＣ適用部（検証ＭＡＣタグリスト生成手段）２０２と、検証部（検証手段）２０３と、検証結果出力部２０４と、を備える。
【００７６】
ＭＡＣタグリスト検証装置２００は、ＣＰＵと、メモリと、ディスク（記憶媒体）により実現可能である。ＭＡＣタグリスト検証装置２００の各部は、プログラムをディスクに格納しておき、このプログラムをＣＰＵがメモリに読み出すと共に実行することにより、実現できる。
【００７７】
次に、ＭＡＣタグリスト検証装置２００の構成要素の動作について説明する。図７は、ＭＡＣタグリスト検証装置２００によるＭＡＣタグリストの検証の流れを示すフローチャートである。図６、図７を参照して、ＭＡＣタグリスト検証装置２００がＭＡＣタグリストを検証する動作について説明する。
【００７８】
メッセージ入力部２０１は、対象となるメッセージＭをブロックスライス並列ＭＡＣ適用部２０２に供給する（Ｓ２１１）。メッセージ入力部２０１は、また、第１の実施形態において説明したＭＡＣタグリスト生成装置１００が出力するＭＡＣタグリストＴとｓ行ｍ列の２値グループテスト行列Ｗとを、ブロックスライス並列ＭＡＣ適用部２０２に供給する（Ｓ２１１）。メッセージ入力部２０１は、例えばキーボードなどの文字入力装置により実現される。またメッセージ入力部２０１は、コンピュータのＬＡＮやＵＳＢなどの通信インタフェース、またはプログラムの入力インタフェースであってもよい。
【００７９】
第１の実施形態と同じく、ここでは、メッセージＭは、ｍ個の個別のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されていると仮定する。
【００８０】
ブロックスライス並列ＭＡＣ適用部２０２は、第１の実施形態のＭＡＣタグリスト生成装置１００におけるブロックスライス並列ＭＡＣ適用部１０３と同一の構成を有する。すなわち、ブロックスライス並列ＭＡＣ適用部２０２は、グループテスト行列Ｗに基づいて、第１の実施形態にて説明した擬似ランダム関数Ｆと擬似ランダム置換Ｇを用いたブロックスライス並列ＭＡＣを、対象となるメッセージＭに適用する。これにより、ｓ個のＭＡＣタグからなるＭＡＣタグリストを生成する（Ｓ２１２）。ここでは、ブロックスライス並列ＭＡＣ適用部２０２が生成したＭＡＣタグリストを、Ｔ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｓ］）とし、これを「チェック用ＭＡＣタグリスト」と呼ぶ。
【００８１】
検証部２０３は、生成されたチェック用ＭＡＣタグリストＴ＊と、メッセージ入力部２０１から取得したＭＡＣタグリストＴとを比較し、メッセージＭに対する改ざん有無の判断と、改ざんが有った場合は改ざんされた位置（アイテム）の特定を行う（Ｓ２１３）。
【００８２】
検証結果出力部２０４は、検証部２０３が行った、改ざん有無の判断結果と、改ざんされたアイテムを特定する情報とを、コンピュータディスプレイやプリンターなどへ出力する（Ｓ２１４）。
【００８３】
以下、検証部２０３の動作について具体的に説明する。
【００８４】
検証部２０３は、Ｔ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｓ］）と、Ｔ＝（Ｔ［１］，．．．，Ｔ［ｓ］）とのエントリごとの差を検出する。検証部２０３は、上記差がゼロとなるケースを”０”、非ゼロとなるケースを”１”とする２値ベクトルＢ＝（Ｂ［１］，．．．，Ｂ［ｓ］）を作成する。そして、検証部２０３は、Ｂに対して所定の手続き（復号：ｄｅｃｏｄｅ）を行い、その結果を出力する。
【００８５】
具体的には、検証部２０３は、Ｂのエントリがすべて”０”である場合、改ざんがないと判定し、それ以外の場合、全体のうち少なくとも一つのアイテムに改ざんがあると判定する。
【００８６】
改ざんがあると判定した場合、検証部２０３は、さらに、Ｂ［ｉ］＝０となるすべてのｉ＝１，．．．，ｓについて、メッセージ入力部２０１から取得したグループテスト行列Ｗのｉ行目ベクトルＶ＝（Ｖ［１］，．．．，Ｖ［ｍ］）を取り出す。検証部２０３は、Ｖ［ｊ］＝１となるすべてのｊについて、Ｍ［ｊ］は改ざんなしと判定する。
【００８７】
そして、検証部２０３は、上記処理の結果、改ざんなしと判定されなかったアイテムすべてを、改ざんありと判定する。
【００８８】
グループテスト行列Ｗがｄ−ｄｉｓｊｕｎｃｔｉｖｅと呼ばれる性質を満たす場合、上記の手続きにより、もし改ざんされたアイテムの数がｄ以下の場合、すべての改ざんされたアイテムを特定することが可能である。
【００８９】
また非特許文献４に記載のように、改ざんなしと判定されたアイテムが実際は改ざんされていたという事態は起きないので、ｄ−ｄｉｓｊｕｎｃｔｉｖｅであるか否かに関わらず、一般的に、改ざんの可能性がある範囲を狭める効果がある。
【００９０】
以上のように、本第２の実施形態によれば、ブロックスライス並列ＭＡＣ適用部２０２は、ＭＡＣタグリスト生成装置１００が生成したグループテスト行列Ｗと、擬似ランダム関数Ｆと擬似ランダム置換Ｇとを用いたブロックスライス並列ＭＡＣを、対象となるメッセージＭに適用する。これにより、ブロックスライス並列ＭＡＣ適用部２０２は、チェック用ＭＡＣタグリストＴ＊を生成する。検証部２０３は、生成されたチェック用ＭＡＣタグリストＴ＊と、メッセージ入力部２０１から取得したＭＡＣタグリストＴとを比較し、メッセージＭに対する改ざん有無の判断と、改ざんされた位置の特定を行う。この構成を採用することにより、本第２の実施形態によれば、組み合わせグループテストを用いて改ざんの有無および改ざん位置を特定するメッセージ認証を、計算量を増大させることなく効率よく実行できるという効果が得られる。
【００９１】
第３の実施形態
次に、本発明の第３の実施形態について、図面を参照して説明する。
【００９２】
図８は、本発明の第３の実施形態に係るＭＡＣタグリスト更新装置３００の構成を示すブロック図である。図８に示すように、ＭＡＣタグリスト更新装置３００は、メッセージ入力部３０１と、ブロックスライス並列ＭＡＣ更新部（ＭＡＣタグリスト更新手段）３０２と、ＭＡＣタグリスト出力部３０３と、を備える。
【００９３】
ＭＡＣタグリスト更新装置３００は、ＣＰＵと、メモリと、ディスク（記憶媒体）により実現可能である。ＭＡＣタグリスト更新装置３００の各部は、プログラムをディスクに格納しておき、このプログラムをＣＰＵがメモリに読み出すと共に実行することにより、実現できる。
【００９４】
本第３の実施形態では、上記第１の実施形態において説明した、ｍ個の個別のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭのうち、いずれかのアイテムが更新された場合のＭＡＣタグリストの更新について説明する。すなわち、メッセージＭのうち、いずれかのアイテムが更新された場合に、メッセージＭに関して全体を再計算するのではなく、ブロックスライス並列ＭＡＣ更新部３０２によりＭＡＣタグリストを更新することについて説明する。
【００９５】
次に、ＭＡＣタグリスト更新装置３００の構成要素の動作について説明する。図９は、ＭＡＣタグリスト更新装置３００によるＭＡＣタグリストの更新の流れを示すフローチャートである。図８、図９を参照して、ＭＡＣタグリスト更新装置３００がＭＡＣタグリストを更新する動作について説明する。
【００９６】
メッセージ入力部３０１は、対象となるメッセージＭをブロックスライス並列ＭＡＣ更新部３０２（以下、単に「更新部３０２」とも表記する）に供給する（Ｓ３１１）。メッセージ入力部２０１は、また、第１の実施形態において説明したＭＡＣタグリスト生成装置１００が出力するＭＡＣタグリストＴとｓ行ｍ列の２値グループテスト行列Ｗとを、更新部３０２に供給する（Ｓ３１１）。
【００９７】
さらに、メッセージ入力部３０１は、更新するアイテムのインデックスｉと、更新後のアイテムの値Ｍ’［ｉ］を、更新部３０２に供給する（Ｓ３１１）。
【００９８】
メッセージ入力部３０１は、例えばキーボードなどの文字入力装置により実現される。またメッセージ入力部３０１は、コンピュータのＬＡＮやＵＳＢなどの通信インタフェース、またはプログラムの入力インタフェースであってもよい。
【００９９】
第１の実施形態と同じく、ここでは、メッセージＭが、ｍ個の個別のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されていると仮定し、更新するアイテムのインデックスｉは、１以上ｍ以下であると仮定する。
【０１００】
更新部３０２は、第１の実施形態のＭＡＣタグリスト生成装置１００が出力するグループテスト行列Ｗから、ｉ列目が”１”である行ベクトルのインデックスの集合Ｂ＝｛ｉ［１］，．．．，ｉ［ｈ］｝に含まれるすべてのテストについて、Ｍ［ｉ］とＭ’［ｉ］を用いてＭＡＣタグを更新する（Ｓ３１２）。
【０１０１】
ＭＡＣタグリスト出力部３０３は、更新部３０２が更新したＭＡＣタグリストを、コンピュータディスプレイやプリンターなどへ出力する（Ｓ３１３）。
【０１０２】
以下、更新部３０２の具体的な動作について説明する。
【０１０３】
更新部３０２は、第１の実施形態のＭＡＣタグリスト生成装置１００が出力するグループテスト行列Ｗから、ｉ列目が”１”である行ベクトルのインデックスをすべて取り出し、それらを集合Ｂ＝｛ｉ［１］，．．．，ｉ［ｈ］｝とする。
【０１０４】
インデックスがＢに含まれるテストについて、Ｍ［ｉ］を使ってＭＡＣタグ計算を行っているので、Ｍ［ｉ］をＭ’［ｉ］に更新した場合、Ｍ’［ｉ］を使ってＭＡＣタグを計算しなければならない。これは、非特許文献６のＰＭＡＣにおけるタグ更新と同様な手続きで実現可能である。具体的には以下の手続きを行う。
【０１０５】
まず、更新部３０２は、第１および第２の実施形態において説明した可変長入力固定長出力の擬似ランダム関数Ｆ、固定長入出力の擬似ランダム置換Ｇを用いて、Ｇの逆関数Ｇ＾−１を、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｓ］）のうちインデックスがＢに含まれるもののリスト、すなわち（Ｔ［ｉ［１］］，．．．，Ｔ［ｉ［ｈ］］）に適用する。
【０１０６】
続いて、更新部３０２は、得られた中間変数Ｚ［ｉ［１］］，．．．，Ｚ［ｉ［ｈ］］に、Ｆ（ｉ，Ｍ［ｉ］）とＦ（ｉ，Ｍ’［ｉ］）を加算し、新たな中間変数Ｚ’［ｉ［１］］，．．．，Ｚ’［ｉ［ｈ］］（Ｚ’［ｉ［ｊ］］＝Ｚ［ｉ［ｊ］］＋Ｆ（ｉ，Ｍ［ｉ］）＋Ｆ（ｉ，Ｍ’［ｉ］）、ただしｊ＝１，．．．，ｈ）を求める。
【０１０７】
さらに、更新部３０２は、各中間変数Ｚ’にＧを適用し、
2016063512.tif 000018
を求める。更新部３０２は、ここで求められたＴ’［ｉ［１］］，．．．，Ｔ’［ｉ［ｈ］］により、タグの値を更新する。
【０１０８】
更新部３０２は、残りのタグを、値を変えずに更新し（ｉはＢに含まれない場合、Ｔ’［ｉ］＝Ｔ［ｉ］）、更新されたＭＡＣタグリストＴ’＝（Ｔ’［１］，．．．，Ｔ’［ｓ］）を出力する。
【０１０９】
上記手続きは、Ｂの大きさｈに対し、２ｈ回Ｆを呼び出し、ｈ回ＧとＧ＾−１を呼び出すと終了する。したがって、（ｓ＋ｍ）に比例した計算量を有する全体の再計算よりも、上記更新手続きにより、効率的にＭＡＣタグリストを更新できる。
【０１１０】
以上のように、本第３の実施形態によれば、ブロックスライス並列ＭＡＣ更新部３０２は、第１の実施形態のＭＡＣタグリスト生成装置１００が出力するグループテスト行列Ｗから、以下についてＭＡＣタグを更新する。すなわち、ｉ列目が”１”である行ベクトルのインデックスの集合Ｂ＝｛ｉ［１］，．．．，ｉ［ｈ］｝に含まれるすべてのテストについて、Ｍ［ｉ］とＭ’［ｉ］を用いてＭＡＣタグを更新する。この構成を採用することにより、本第３の実施形態によれば、アイテムの値が更新された際にＭＡＣタグの再計算を、効率的に実行できるという効果が得られる。
【０１１１】
なお、上記各実施形態では、ＭＡＣタグリスト生成装置、ＭＡＣタグリスト検証装置およびＭＡＣタグリスト更新装置を、それぞれ個別の装置として説明したが、ＭＡＣタグリスト検証装置が、ＭＡＣタグリスト生成装置を含む構成としてもよい。あるいは、ＭＡＣタグリスト更新装置が、ＭＡＣタグリスト生成装置を含む構成としてもよい。あるいは、ＭＡＣタグリスト生成装置、ＭＡＣタグリスト検証装置およびＭＡＣタグリスト更新装置を含む装置を構成してもよい。
【０１１２】
第４の実施形態
図１０は、本発明の第４の実施形態に係るＭＡＣタグリスト生成装置４００の構成を示す図である。図１０に示すように、ＭＡＣタグリスト生成装置４００は、グループテスト行列生成部４１０と、ＭＡＣタグリスト生成部４２０を備える。
【０１１３】
グループテスト行列生成部４１０は、取得したメッセージＭが分割されてなる複数のアイテムに基づいて、組み合わせグループテストのパラメータであるグループテスト行列Ｗを生成する。
【０１１４】
ＭＡＣタグリスト生成部４２０は、生成されたグループテスト行列Ｗの行ごとに、当該行を構成する前記アイテムに擬似ランダム関数を適用した結果を共有しながら、当該結果を加算する。そして、ＭＡＣタグリスト生成部４２０は、当該加算した結果を擬似ランダム置換に適用することにより、前記メッセージＭに関するＭＡＣタグのリストであるＭＡＣタグリストＴを生成する。
【０１１５】
上記構成を採用することにより、本第４の実施形態によれば、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるメッセージ認証を、効率よく実施可能であるという効果が得られる。
【０１１６】
なお、図１等に示したＭＡＣタグリスト生成装置、ＭＡＣタグリスト検証装置およびＭＡＣタグリスト更新装置の各部は、図１１に例示するハードウエア資源において実現される。すなわち、図１１に示す構成は、ＣＰＵ１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、外部接続インタフェース１３および記憶媒体１４を備え、これらは互いに内部バス１５により接続されている。ＣＰＵ１０は、ＲＯＭ１２または記憶媒体１４に記憶された各種ソフトウエア・プログラム（コンピュータ・プログラム）を、ＲＡＭ１１に読み出して実行することにより、上記各装置の全体的な動作を司る。すなわち、上記各実施形態において、ＣＰＵ１０は、ＲＯＭ１２または記憶媒体１４を適宜参照しながら、上記各装置が備える各機能（各部）を実行するソフトウエア・プログラムを実行する。
【０１１７】
また、上述した各実施形態では、図１等に示した各装置における各ブロックに示す機能を、図１１に示すＣＰＵ１０が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、図１等に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
【０１１８】
また、各実施形態を例に説明した本発明は、上記各装置に対して、上記説明した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、ＣＰＵ１０がＲＡＭ１１に読み出して実行することによって達成される。
【０１１９】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【０１２０】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１２１】
この出願は、２０１４年１０月２３日に出願された日本出願特願２０１４−２１６３６１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１２２】
本発明は、例えば、無線もしくは有線のデータ通信、あるいはデータベース、ファイルシステム、ウィルススキャン、バージョン管理システムにおける改ざんの検知と改ざん位置特定といった用途に適用できる。
【符号の説明】
【０１２３】
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  外部接続インタフェース
１４  記憶媒体
１００、４００  ＭＡＣタグリスト生成装置
１０１、２０１、３０１  メッセージ入力部
１０２、４１０  グループテスト行列生成部
１０３、２０２  ブロックスライス並列ＭＡＣ適用部
１０４、３０３  ＭＡＣタグリスト出力部
２００  ＭＡＣタグリスト検証装置
２０１  メッセージ入力部
２０４  検証結果出力部
３００  ＭＡＣタグリスト更新装置
３０２  ブロックスライス並列ＭＡＣ更新部
４２０  ＭＡＣタグリスト生成部
【図１】
2016063512.tif 000019
【図２】
2016063512.tif 000020
【図３】
2016063512.tif 000021
【図４】
2016063512.tif 000022
【図５】
2016063512.tif 000023
【図６】
2016063512.tif 000024
【図７】
2016063512.tif 000025
【図８】
2016063512.tif 000026
【図９】
2016063512.tif 000027
【図１０】
2016063512.tif 000028
【図１１】
2016063512.tif 000029
【国際調査報告】
2016063512.tif 000030
2016063512.tif 000031
2016063512.tif 000032
2016063512.tif 000033