(57)【要約】  本発明の目的は、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるようなメッセージ認証のさらなる効率化である。ＭＡＣタグリスト生成装置は、メッセージ認証コード（ＭＡＣ）生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、メッセージＭと、を入力するメッセージ入力部と、生成する前記ＭＡＣの数ｓ（ｓは正の整数）について、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するグループテスト行列生成部と、前記メッセージＭについて、前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成することで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成するナンス付線形グループテストＭＡＣ適用部と、ＭＡＣタグリスト出力部と、を含む。
2020065820.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ認証コード（ＭＡＣ）生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、ＭＡＣの対象となるｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、を入力するメッセージ入力部と、
生成する前記ＭＡＣの数ｓ（ｓは正の整数）について、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するグループテスト行列生成部と、
前記メッセージＭについて、前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成することで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成するナンス付線形グループテストＭＡＣ適用部と、
前記ナンス付線形グループテストＭＡＣ適用部が求めたＭＡＣタグリストを出力するＭＡＣタグリスト出力部と、
を含むＭＡＣタグリスト生成装置。
【請求項２】
前記ナンス付線形グループテストＭＡＣ適用部は、
前記グループテスト行列Ｈのｉ行目で１が立つすべての列のインデックスｊ（ｊ＝１，．．．，ｍ）について、
前記アイテムＭ［ｊ］とインデックスｊを前記擬似ランダム関数Ｆに入力し、得られた出力すべての和をとり、さらに、
前記擬似ランダム関数Ｆの出力の和と、前記擬似ランダム関数Ｇへ前記ナンスＮと前記ｉを入力した結果との和をとり、
得られた出力を、前記ｉ番目のテストに対応するＭＡＣ値Ｔ［ｉ］とすることで、
前記ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成する請求項１のＭＡＣタグリスト生成装置。
【請求項３】
グループテスト行列Ｈが、正整数ｓについて行数と列数が共に２＾（２ｓ）＋２＾ｓ＋１の正方行列Ｐの一次独立なｔ個の行ベクトルからなる部分行列であって、
前記正方行列Ｐは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間上の点と直線によって定まる接続行列であり、
テスト行列拡大ルールＲによって生成されるテストベクトルが前記正方行列Ｐの全ての行ベクトルである請求項１又は２のＭＡＣタグリスト生成装置。
【請求項４】
前記グループテスト行列Ｈが、正整数ｓと３以上２＾ｓ＋１以下の整数ｒについて、行数がｒ×（２＾ｓ−１）＋１、列数が２＾（２ｓ）−１＋ｒの行列Ａ＿ｒにおける一次独立なｔ個の行ベクトルからなる部分行列であって、
前記行列Ａ＿ｒは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元アフィン空間の原点を通過する予め指定したｒ本の直線上にあるｒ×（２＾ｓ−１）＋１個の点と、それらの点のいずれかを通過する２＾（２ｓ）−１＋ｒ本の直線によって定まる接続行列であり、
テスト行列拡大ルールＲによって生成されるテストベクトルが前記行列Ａ＿ｒの全ての行ベクトルである請求項１又は２のＭＡＣタグリスト生成装置。
【請求項５】
前記グループテスト行列Ｈは、
ある整数ｒ＞１についてｍ＝２＾ｒ−１，ｔ＝ｒを満たし、
ｍ＋１行ｍ＋１列のアダマール行列Ｈａｄ（ｒ）から第１行目と第１列目を削除し、さらに行列要素である−１と１のうち、−１を０とすることで得られるｍ行ｍ列バイナリ行列ｍｏｄＨａｄ（ｒ）をとり、前記グループテスト行列Ｈはこの行列の有限体ＧＦ（２）上の基底からなり、
テスト行列拡大ルールＲは、前記グループテスト行列Ｈを前記テスト行列拡大ルールＲに従って行の拡大を行った場合にｍｏｄＨａｄ（ｒ）となる請求項１又は２のＭＡＣタグリスト生成装置。
【請求項６】
メッセージ認証コード（ＭＡＣ）タグリスト検証の対象となるナンスＮと、ｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、ｔ個のＭＡＣ値のリストであるＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）と、を入力するメッセージ入力部と、
組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するとともに、前記グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されたテスト行列拡大ルールＲを出力するグループテスト行列生成および拡大部と、
メッセージＭについて前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇと、を用いて、ｊ（ｊ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ＊［ｊ］を生成することで、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成するナンス付線形グループテストＭＡＣ適用部と、
前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊と前記テスト行列拡大ルールＲとを用いて、
前記テスト行列拡大ルールＲが指定する行インデックスの部分集合に対応して前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊のそれぞれで線形結合を行い、
拡大ＭＡＣタグリストｅｘＴ及び検証用拡大ＭＡＣタグリストｅｘＴ＊を出力するＭＡＣタグリスト拡大部と、
前記拡大ＭＡＣタグリストｅｘＴと前記検証用拡大ＭＡＣタグリストｅｘＴ＊とを比較してメッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力するＭＡＣタグリスト検証部と、
前記ＭＡＣタグリスト検証部が出力する検証結果を出力する検証結果出力部と、
を含むＭＡＣタグリスト検証装置。
【請求項７】
前記ナンス付線形グループテストＭＡＣ適用部は、
前記グループテスト行列Ｈのｊ列目で１が立つすべての行のインデックスｉについて、
ｉ番目のアイテムＭ［ｉ］とインデックスｉとを前記擬似ランダム関数Ｆに入力し、得られた出力すべての和をとり、さらに、
前記擬似ランダム関数Ｆの出力の和と、前記擬似ランダム関数Ｇへ前記ナンスＮを入力した結果との和をとり、
得られた出力をｊ番目のテストに対応する検証用ＭＡＣ値Ｔ＊［ｉ］とすることで、
前記検証用ＭＡＣタグリスト  Ｔ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）
を生成する請求項６のＭＡＣタグリスト検証装置。
【請求項８】
グループテスト行列Ｈが、正整数ｓについて行数と列数が共に２＾（２ｓ）＋２＾ｓ＋１の正方行列Ｐの一次独立なｔ個の行ベクトルからなる部分行列であって、
前記正方行列Ｐは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間上の点と直線によって定まる接続行列であり、
前記テスト行列拡大ルールＲによって生成されるテストベクトルが前記正方行列Ｐの全ての行ベクトルである請求項６又は７のＭＡＣタグリスト検証装置。
【請求項９】
前記グループテスト行列Ｈが、正整数ｓと３以上２＾ｓ＋１以下の整数ｒについて、行数がｒ×（２＾ｓ−１）＋１、列数が２＾（２ｓ）−１＋ｒの行列Ａ＿ｒにおける一次独立なｔ個の行ベクトルからなる部分行列であって、
前記行列Ａ＿ｒは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元アフィン空間の原点を通過する予め指定したｒ本の直線上にあるｒ×（２＾ｓ−１）＋１個の点と、それらの点のいずれかを通過する２＾（２ｓ）−１＋ｒ本の直線によって定まる接続行列であり、
前記テスト行列拡大ルールＲによって生成されるテストベクトルが前記行列Ａ＿ｒの全ての行ベクトルである請求項６又は７のＭＡＣタグリスト検証装置。
【請求項１０】
前記グループテスト行列Ｈは、
ある整数ｒ＞１についてｍ＝２＾ｒ−１，ｔ＝ｒを満たし、
ｍ＋１行ｍ＋１列のアダマール行列Ｈａｄ（ｒ）から第１行目と第１列目を削除し、さらに行列要素である−１と１のうち、−１を０とすることで得られるｍ行ｍ列バイナリ行列ｍｏｄＨａｄ（ｒ）をとり、前記グループテスト行列Ｈはこの行列の有限体ＧＦ（２）上の基底からなり、
前記テスト行列拡大ルールＲは、前記グループテスト行列Ｈを前記テスト行列拡大ルールＲに従って行の拡大を行った場合にｍｏｄＨａｄ（ｒ）となる請求項６又は７のＭＡＣタグリスト検証装置。
【請求項１１】
前記グループテスト行列Ｈは、
正の整数ａ，ｂについて（ａ，ｂ）＝ａ！／（ａ−ｂ）！ｂ！をａ個からｂ個選択する場合の数とし、
（（ａ，ｂ））を集合｛１，２，．．．，ａ｝の大きさｂの部分集合の全体としたうえで、
（ｎ，ｄ）×（ｎ，ｋ）２値行列であり、適当な順序で列と行のインデックスを（（ｎ，ｄ））の要素と（（ｎ，ｋ））の要素に対応させたうえで、ある（（ｎ，ｄ））の要素Ｄが（（ｎ，ｋ））の要素Ｋについて、
前記要素Ｄが前記要素Ｋに含まれるときに、
前記グループテスト行列Ｈの（Ｄ，Ｋ）エントリを１とし、それ以外を０とする、
という行列の有限体ＧＦ（２）上の基底からなる、正の整数のパラメータ（ｎ，ｋ，ｄ）を持つＭａｃｕｌａ行列である請求項６又は７のＭＡＣタグリスト検証装置。
【請求項１２】
ｔ行ｍ列のグループテスト行列Ｈを出力するグループテスト行列生成部と、
メッセージＭ［ｉ］を入力するメッセージ入力部と、前記メッセージＭ［ｉ］に対する単一のメッセージ認証コード（ＭＡＣ）タグＴ［ｉ］を求めて出力するＭＡＣ生成部と、をそれぞれ備えたｍ個のノードから送られた、ｍ個のメッセージとタグの対（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）を入力とし、グループテスト行列Ｈに従ってタグの集約を行い、ｔ個の集約タグからなる集約タグリストＶ＝（Ｖ［１］，  ．．．，  Ｖ［ｔ］）と、メッセージのリストＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）と、を出力するＭＡＣタグ集約部と、
前記グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されたテスト行列拡大ルールＲを出力するグループテスト行列生成部と、を備える集約ノードと、
前記テスト行列拡大ルールＲに従って、前記集約タグリストＶの要素の線形結合を求めて、拡大集約タグリストｅｘＶを出力する集約ＭＡＣタグリスト拡大部と、
前記メッセージのリストＭと前記拡大集約タグリストｅｘＶ、前記テスト行列拡大ルールＲと、を用いて検証を行い、改ざんされたノードを特定して検証結果として出力する拡大集約ＭＡＣタグリスト検証部と、
前記拡大集約ＭＡＣタグリスト検証部の出力する検証結果の出力を行う検証結果出力部と、
を備える検証ノードと、
を含む集約ＭＡＣ検証システム。
【請求項１３】
グループテスト行列Ｈが、正整数ｓについて行数と列数が共に２＾（２ｓ）＋２＾ｓ＋１の正方行列Ｐの一次独立なｔ個の行ベクトルからなる部分行列であって、
前記正方行列Ｐは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間上の点と直線によって定まる接続行列であり、
前記テスト行列拡大ルールＲによって生成されるテストベクトルが前記正方行列Ｐの全ての行ベクトルである請求項１２の集約ＭＡＣ検証システム。
【請求項１４】
前記グループテスト行列Ｈが、正整数ｓと３以上２＾ｓ＋１以下の整数ｒについて、行数がｒ×（２＾ｓ−１）＋１、列数が２＾（２ｓ）−１＋ｒの行列Ａ＿ｒにおける一次独立なｔ個の行ベクトルからなる部分行列であって、
前記行列Ａ＿ｒは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元アフィン空間の原点を通過する予め指定したｒ本の直線上にあるｒ×（２＾ｓ−１）＋１個の点と、それらの点のいずれかを通過する２＾（２ｓ）−１＋ｒ本の直線によって定まる接続行列であり、
前記テスト行列拡大ルールＲによって生成されるテストベクトルが前記行列Ａ＿ｒの全ての行ベクトルである請求項１２の集約ＭＡＣ検証システム。
【請求項１５】
前記グループテスト行列Ｈは、
ある整数ｒ＞１についてｍ＝２＾ｒ−１，ｔ＝ｒを満たし、
ｍ＋１行ｍ＋１列のアダマール行列Ｈａｄ（ｒ）から第１行目と第１列目を削除し、さらに行列要素である−１と１のうち、−１を０とすることで得られるｍ行ｍ列バイナリ行列ｍｏｄＨａｄ（ｒ）をとり、前記グループテスト行列Ｈはこの行列の有限体ＧＦ（２）上の基底からなり、
前記テスト行列拡大ルールＲは、前記グループテスト行列Ｈを前記テスト行列拡大ルールＲに従って行の拡大を行った場合にｍｏｄＨａｄ（ｒ）となる請求項１２の集約ＭＡＣ検証システム。
【請求項１６】
メッセージ認証コード（ＭＡＣ）生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、ＭＡＣの対象となるｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、を入力するステップと、
生成する前記ＭＡＣの数ｓ（ｓは正の整数）について、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するステップと、
前記メッセージＭについて、前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成することで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成するステップと、
前記ＭＡＣタグリストを出力するステップと、
を含むＭＡＣタグリスト生成方法。
【請求項１７】
ＭＡＣタグリスト検証の対象となるナンスＮと、ｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、ｔ個のＭＡＣ値のリストであるＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）と、を入力するステップと、
組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するとともに、前記グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されたテスト行列拡大ルールＲを出力するステップと、
メッセージＭについて前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇと、を用いて、ｊ（ｊ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ＊［ｊ］を生成することで、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成するステップと、
前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊と前記テスト行列拡大ルールＲとを用いて、前記テスト行列拡大ルールＲが指定する行インデックスの部分集合に対応して前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊のそれぞれで線形結合を行い、拡大ＭＡＣタグリストｅｘＴ及び検証用拡大ＭＡＣタグリストｅｘＴ＊を出力するステップと、
前記拡大ＭＡＣタグリストｅｘＴと前記検証用拡大ＭＡＣタグリストｅｘＴ＊とを比較してメッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力するステップと、
前記検証結果を出力するステップと、
を含むＭＡＣタグリスト検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＡＣタグリスト生成装置、ＭＡＣタグリスト検証装置、集約ＭＡＣ検証システム、ＭＡＣタグリスト生成方法及びＭＡＣタグリスト検証方法に関する。
【背景技術】
【０００２】
メッセージ認証コード（以下、単に、「メッセージ認証」あるいは“ＭＡＣ”と記す。）とは、メッセージに対して秘密鍵を知るものだけが計算できるタグを付与することで、メッセージが正当であることを保証する技術である。例えばメッセージ認証を用いれば、秘密鍵を共有した２者の通信において、通信の間に行われた、第三者による改ざんを検知することが可能となる。具体的には、送信者がメッセージとタグを受信者に送ったとき、受信者側では受け取ったメッセージからタグを計算し、受信したタグとの一致を確認することで、メッセージが正当な送信者から送られたものかどうかを判断できる。このタグを「認証タグ」又は「ＭＡＣタグ」と呼ぶ。【０００３】
ＭＡＣの基本的な入出力について説明する。秘密鍵Ｋを共有する２者ＡｌｉｃｅとＢｏｂを考え、ＡｌｉｃｅからＢｏｂへメッセージＭを送ることを考える。この場合、ＡｌｉｃｅはＭに対してＫを用いたＭＡＣ関数  ＭＡＣ＿Ｋを適用し、認証タグＴ＝ＭＡＣ＿Ｋ（Ｍ）を求め、Ｂｏｂに対し、（Ｍ，Ｔ）を送信する。【０００４】
Ｂｏｂが受信した情報を（Ｍ’，Ｔ’）とすると、Ｂｏｂは、Ｔ’とＭＡＣ＿Ｋ（Ｍ’）との一致を確認することで、メッセージがＡｌｉｃｅから送られたものかどうかを判断する。Ｔ’とＭＡＣ＿Ｋ（Ｍ’）との一致を確認することで、受け取ったメッセージ（Ｍ’，Ｔ’）がＡｌｉｃｅのそもそも送った（メッセージ、認証タグ）の対であるかがわかり、改ざんの有無をチェック可能である。【０００５】
このようなメッセージ認証方式の一例として、非特許文献１［ＣＭＡＣ］や非特許文献２の［ＨＭＡＣ］がある。【０００６】
一般的なメッセージ認証を用いる場合、メッセージ中の改ざんされた位置に関して情報を得ることは不可能である。これは、改ざんが行われた場合、認証タグの値は正しい値とは異なるランダムな値となるからである。【０００７】
これに対して、メッセージの全体に一度ＭＡＣ関数を適用するのではなく、メッセージを任意の部分に分割し、それらの部分ごとにＭＡＣ関数を適用することで、部分ごとのチェックが可能となり、メッセージに対する改ざん位置を完全に特定することが可能となる。例えばメッセージＭがｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］からなる場合、Ｔ［１］＝ＭＡＣ＿Ｋ（Ｍ［１］），Ｔ［２］＝ＭＡＣ＿Ｋ（Ｍ［２］），．．．，Ｔ［ｍ］＝ＭＡＣ＿Ｋ（Ｍ［ｍ］）をそれぞれ計算する。その上で、メッセージと認証タグのセット（Ｍ，Ｔ［１］，．．．，Ｔ［ｍ］）を送信すればよい。【０００８】
ハードディスク上のデータに対し、ファイルごとや、ディスクセクターごとにＭＡＣをとることがこの方法の例として挙げられる。しかしながら、この方法はｍ個のアイテムに対してｍ個のタグが生成されるため、保存すべきデータ量の増加が大きいという問題がある。【０００９】
一方、非特許文献３［ＧＡＴ０５］に記載されているように、メッセージを、互いに重なりを許し、長さも異なる複数の部分系列に分解し、この部分系列ごとにＭＡＣを適用するというアプローチがある。【００１０】
［例１］
例えば、メッセージＭが７個のアイテムからなるとき、（Ｍ［１］，Ｍ［２］，．．．，Ｍ［７］）を
Ｓ［１］  ＝  （Ｍ［１］，Ｍ［２］，Ｍ［３］，Ｍ［４］）
Ｓ［２］  ＝  （Ｍ［１］，Ｍ［２］，Ｍ［５］，Ｍ［６］）
Ｓ［３］  ＝  （Ｍ［１］，Ｍ［３］，Ｍ［５］，Ｍ［７］）
という３つの部分系列に分解し、それぞれに対してＭＡＣを適用し３つのタグ
Ｔ［１］＝ＭＡＣ（Ｓ［１］），．．．，Ｔ［３］＝ＭＡＣ（Ｓ［３］）
を計算したとする。
この場合、アイテムごとにＭＡＣを適用する場合に７個必要であったタグの数を、３つに減らすことが可能となる。さらに、検証時における
各（Ｔ［ｉ］，Ｓ［ｉ］）に対する検証結果を２値（０ならＭＡＣが正しい、１なら改ざん）のＢ［ｉ］で表現すると、ある時点でメッセージＭに対してＭＡＣタグのチェックを行った結果が
Ｂ［１］＝０，
Ｂ［２］＝１，
Ｂ［３］＝０，
の場合、Ｍ［６］が改ざんされたと特定できる。より正確には、この例では任意の１アイテムの改ざんであれば改ざんされたアイテムの特定が可能である。【００１１】
この性質をより一般に言えば、部分系列の取り方を工夫することにより、改ざんされたアイテム数が所与のしきい値以下のときには、改ざんされたアイテムまで特定することが可能であるということを示している。【００１２】
どのような部分系列にメッセージＭを分解し、またそのテストの結果、どのような改ざんアイテム特定が可能になるかは、組み合わせグループテスト（ＣＧＴ）と呼ばれる組み合わせ問題、特に非適応的組み合わせグループテスト（ＮＣＧＴ）と密接に関連がある。ここで、ＣＧＴ、ＮＣＧＴはそれぞれＣｏｍｂｉｎａｔｏｒｉａｌ  Ｇｒｏｕｐ  Ｔｅｓｔｉｎｇ、Ｎｏｎ−ａｄａｐｔｉｖｅ  ＣＧＴの略である。非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］では、これらのテストについての検討がなされている。ｍ個のアイテム、ｔ個のテストからなるＣＧＴでは、ｔ行ｍ列の２値行列Ｈ（ここではテスト行列と呼ぶ）を構成し、Ｈに従ってテストを行う。Ｈのｉ行ｊ列目の要素が１であれば、ｊ番目のテストでｉ番目のアイテムをテストに含める、ということを指している。【００１３】
例えば、データベースシステムへの適用といった実用面を考えた場合、現実的なシステムの制約などから、不正を行う者が一度に大量のアイテムを改ざんすることは考えにくい。従って、上述したＣＧＴとＭＡＣを組み合わせることにより、タグの総数を抑えつつ、現実的に起こりうる改ざんに対し、その場所を特定可能なデータベースシステムを構築することが可能となる。なお、通常のＭＡＣと同様に、ＣＧＴとＭＡＣを組み合わせた場合、任意の改ざんに対して、改ざんがあったという事実を検出可能という性質は変わらない。【００１４】
なお、非特許文献５［ＣＪＳ０９］に記載のＣｏｒｒｕｐｔｉｏｎ−ｌｏｃａｌｉｚｉｎｇ  ｈａｓｈのように、鍵のないハッシュ関数をＭＡＣの代わりに用いた場合でも、ハッシュ値をメッセージと別の安全な場所に保存するという前提のもとでは同様の効果が望める。また改ざんされたアイテムの特定にいたらなくとも、改ざんされた範囲を絞ることは一般に可能である。【００１５】
次にテスト行列の構成方法について述べる。ｍアイテムに対して高々ｄ個の改ざんを効率よく特定したい場合、テスト行列がｄ−ｄｉｓｊｕｎｃｔという性質を満たせばよいということが知られている。【００１６】
具体的には、ｔ行ｍ列２値行列Ｈがｄ−ｄｉｓｊｕｎｃｔであるとは、Ｈの任意のｄ列のブール和（ビットごとの論理和）をＸとしたときに、残りのｍ−ｄ列のどの１列もＸに含まれないことを指す。【００１７】
これはすなわちＸで１が立つ行インデックス集合をＩ（Ｓ）とすれば、残りのｍ−ｄ列から選んだ任意の１列Ｙについて、Ｉ（Ｙ）がＩ（Ｘ）の部分集合でないことを指す。【００１８】
所与のｄ，ｍについてｄ−ｄｉｓｊｕｎｃｔ行列の最小の行数（すなわち高々ｄアイテムの改ざんを特定可能な最小のテスト数）ｔ＿ｍｉｎ  （ｄ，ｍ）については、
（式１）ｔ＿ｍｉｎ（ｄ，ｍ）＝Ｏ（ｄ＾２  ｌｏｇ  ｍ）
であることが知られている。これを達成する方法はｄ＝１ではよく知られており、ハミング符号のパリティ検査行列などから構成可能である。【００１９】
例えば、上述の［例１］はｍ＝７でのそのような例であり、対応する１−ｄｉｓｊｕｎｃｔ行列は、
（式２）
［１  １  １  １  ０  ０  ０］
［１  １  ０  ０  １  １  ０］
［１  ０  １  ０  １  ０  １］
となる。【００２０】
一方ｄ＞１での構成方法は、いくつか知られているが、一般に最適な方式は構築が難しいことが知られている。例えばＯ（ｄ＾２  ｌｏｇ  ｍ）  を一般に達成する方式として非特許文献６［ＰＲ０８］が知られているが、オーダでなく定数まで含めた実際の効率は不明である。また、ｍに対してある程度大きいｄについては非自明な（すなわち単位行列でない）ｄ−ｄｉｓｊｕｎｃｔ行列の構築は理論上不可能であることが知られている。【００２１】
また、ＮＣＧＴの別の応用として、集約ＭＡＣ（Ａｇｇｒｅｇａｔｅ  ＭＡＣ）がある（非特許文献７［ＫＬ０８］参照）。【００２２】
ここで、集約ＭＡＣについて詳説する。集約ＭＡＣの典型的シナリオとして、ｍ個のノードＳ＿１，．．．，Ｓ＿ｍがそれぞれ独立にメッセージについてＭＡＣを計算し、単一の検証ノードＣがこれらの検証を行うアプリケーションを考える。【００２３】
ここで、ノードＳ＿ｉからの送信メッセージをＭ［ｉ］、ノードＳ＿ｉ固有の鍵をＫ［ｉ］、ＭＡＣタグＴ＿ｉ＝ＭＡＣ（Ｋ＿ｉ，Ｍ＿ｉ）とする。集約ＭＡＣを用いない、一般的な方式ではノードＳ＿ｉの送信情報は（Ｍ［ｉ］，Ｔ［ｉ］）となり、検証ノードＣの受ける情報は（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）となる。検証ノードＣはＫ［１］，．．．，Ｋ［ｍ］を保持しておき、各ｉにつき（Ｍ［ｉ］，Ｔ［ｉ］）それぞれを認証する。【００２４】
この方法だと、アプリケーションによってはｍ個のタグの送信量が問題となることがある。集約ＭＡＣでは、検証ノードＣとノードＳ＿１，．．．，Ｓ＿ｍの間に集約ノード（Ａｇｇｒｅｇａｔｏｒ）Ａを設けることでＡとＣのタグに関する通信量を削減することを目指す。【００２５】
集約ノードＡは鍵を持たず、タグの集約による削減のみを行う。非特許文献７［ＫＬ０８］の集約ＭＡＣでは、集約ノードＡはタグの全ての和をとる。すなわち集約ノードＡは（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）を受信したのち、集約タグＶ＝Ｔ［１］＋Ｔ［２］＋．．．＋Ｔ［ｍ］を求め、検証ノードＣに、（Ｍ［１］，．．．，Ｍ［ｍ］，Ｖ）を送信する。【００２６】
検証ノードＣは、Ｋ［１］，．．．，Ｋ［ｍ］を用いて、各ｉにつきＴ［ｉ］を求め、Ｖの検証を行えばよい。【００２７】
上記の集約ＭＡＣでは、もし全ノードの送信内容に改ざんがない場合には、上記で全送信内容の検証が成功するが、一部のノードの送信内容に改ざんがある（以後これをノードの改ざんと呼ぶことにする）場合は、どのノードの送信内容が改ざんされたのか特定することはできない。【００２８】
これに対して、非特許文献８［ＨＳ１８］では、集約ノードＡがｄ−ｄｉｓｊｕｎｃｔ行列に従ってタグの部分和を複数求めて送信することを提案している。例えば、７ノードからの受信内容（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［７］，Ｔ［７］）について、非特許文献８［ＨＳ１８］の集約ノードＡは
Ｖ［１］  ＝  Ｔ［１］  ＋  Ｔ［２］  ＋  Ｔ［３］  ＋  Ｔ［４］
Ｖ［２］  ＝  Ｔ［１］  ＋  Ｔ［２］  ＋  Ｔ［５］  ＋  Ｔ［６］
Ｖ［３］  ＝  Ｔ［１］  ＋  Ｔ［３］  ＋  Ｔ［５］  ＋  Ｔ［７］
を求めて、検証ノードＣに対し、（Ｍ［１］，．．．，Ｍ［７］，Ｖ［１］，Ｖ［２］，Ｖ［３］）を送信する。【００２９】
これは（式２）の１−ｄｉｓｊｕｎｃｔ行列を用いており、したがって１ノードの改ざんを特定することが可能となる。【００３０】
その他、特許文献１に、改ざんの有無だけではなく改ざんされた位置に関する情報を得ることができるというメッセージ認証コード（ＭＡＣ）のタグリスト生成装置が開示されている。同文献によると、このタグリスト生成装置は、ｍ個（ｍは正の整数）のアイテムＭ［１］・・・［ｍ］から構成されるメッセージを入力するメッセージ入力部と、グループテスト行列生成部と、タグリスト生成部を備える。そして、グループテスト行列生成部は、生成するメッセージ認証コードのタグ数ｓ（ｓは正の整数）について、組み合わせグループテストを定めるｓ行ｍ列のグループテスト行列を生成する。また、タグリスト生成部は、前記グループテスト行列と、可変長入力固定長出力の擬似ランダム関数と、固定長入出力のＴｗｅａｋ付き擬似ランダム関数と、を用いて、前記メッセージに関するｓ個のタグからなるタグリストを生成する。そして、前記タグリスト生成部は、前記メッセージをなすｍ個のアイテムＭ［１］・・・Ｍ［ｍ］それぞれに関するタグの計算を、途中の計算結果を共有しつつ並行に行う、と記載されている。【００３１】
特許文献２には、効率的に帯域増加を防止することができるという認証付暗号化装置の一例が開示されている。また、同文献には、過去に生成した値とは異なるｎビットの初期ベクトルＮ（固定長値、ｎｏｎｃｅ）を生成する初期ベクトル生成手段（固定長値生成部）を備える構成が開示されている（特許文献２の図１参照）。【００３２】
また、非特許文献９［ＢＧＲ９５］は、タグ生成に用いるＭＡＣ関数を提案する文献である。非特許文献１０［Ｍ９６］は、ｄ−ｄｉｓｊｕｎｃｔ行列を構築する方法を紹介している文献である。
【先行技術文献】
【特許文献】
【００３３】
【特許文献１】特開２０１７−７３７１６号公報
【特許文献２】国際公開第２０１６／０６７５２４号
【非特許文献】
【００３４】
【非特許文献１】［ＣＭＡＣ］，ＳＰ  ８００−３８Ｂ， ”Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ：  ｔｈｅ  ＣＭＡＣ．  Ｍｏｄｅ  ｆｏｒ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ”，（Ｍａｙ  ２００５）．
【非特許文献２】［ＨＭＡＣ］，Ｍ．  Ｂｅｌｌａｒｅ，  Ｒ．  Ｃａｎｅｔｔｉ，  Ｈ．  Ｋｒａｗｃｚｙｋ，  ”Ｋｅｙｉｎｇ  ｈａｓｈ  ｆｕｎｃｔｉｏｎｓ  ｆｏｒｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ”，  ＣＲＹＰＴＯ  １９９６，  ｐｐ．１−１５，  Ｓｐｒｉｎｇｅｒ，  Ｈｅｉｄｅｌｂｅｒｇ  （１９９６）．
【非特許文献３】［ＧＡＴ０５］，Ｍｉｃｈａｅｌ  Ｔ．  Ｇｏｏｄｒｉｃｈ，  Ｍｉｋｈａｉｌ  Ｊ．  Ａｔａｌｌａｈ，  Ｒｏｂｅｒｔｏ  Ｔａｍａｓｓｉａ，”Ｉｎｄｅｘｉｎｇ  Ｉｎｆｏｒｍａｔｉｏｎ  ｆｏｒ  Ｄａｔａ  Ｆｏｒｅｎｓｉｃｓ．”，Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  Ｎｅｔｗｏｒｋ  Ｓｅｃｕｒｉｔｙ，  Ｔｈｉｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ，  ＡＣＮＳ  ２００５，  Ｎｅｗ  Ｙｏｒｋ，  ＮＹ，  ＵＳＡ，  Ｊｕｎｅ  ７−１０，  ２００５，  Ｐｒｏｃｅｅｄｉｎｇｓ．  ２００５  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ＩＳＢＮ  ３−５４０−２６２２３−７，  ｐｐ．  ２０６−２２１．
【非特許文献４】［Ｍｉｎ１５］，Ｋａｚｕｈｉｋｏ  Ｍｉｎｅｍａｔｓｕ．，  ”Ｅｆｆｉｃｉｅｎｔ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅｓ  ｗｉｔｈ  Ｃｏｍｂｉｎａｔｏｒｉａｌ  Ｇｒｏｕｐ  Ｔｅｓｔｉｎｇ．”，  ＥＳＯＲＩＣＳ  ２０１５．    Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ  ９３２６．  ＩＳＢＮ  ９７８−３−３１９−２４１７４−６．
【非特許文献５】［ＣＪＳ０９］，Ｇｉｏｖａｎｎｉ  Ｄｉ  Ｃｒｅｓｃｅｎｚｏ，  Ｓｈａｏｑｕａｎ  Ｊｉａｎｇ，  Ｒｅｉｈａｎｅｈ  Ｓａｆａｖｉ−Ｎａｉｎｉ，”Ｃｏｒｒｕｐｔｉｏｎ−Ｌｏｃａｌｉｚｉｎｇ  Ｈａｓｈｉｎｇ．”，Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  −  ＥＳＯＲＩＣＳ  ２００９，  １４ｔｈ  Ｅｕｒｏｐｅａｎ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｒｅｓｅａｒｃｈ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ，  Ｓａｉｎｔ−Ｍａｌｏ，  Ｆｒａｎｃｅ，  Ｓｅｐｔｅｍｂｅｒ  ２１−２３，  ２００９．  Ｐｒｏｃｅｅｄｉｎｇｓ．  Ｓｐｒｉｎｇｅｒ  ２００９  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ＩＳＢＮ  ９７８−３−６４２−０４４４３−４，  ｐｐ．  ４８９−５０４．
【非特許文献６】［ＰＲ０８］，Ｅｌｙ  Ｐｏｒａｔ，  Ａｍｉｒ  Ｒｏｔｈｓｃｈｉｌｄ、”Ｅｘｐｌｉｃｉｔ  Ｎｏｎ−ａｄａｐｔｉｖｅ  Ｃｏｍｂｉｎａｔｏｒｉａｌ  Ｇｒｏｕｐ  Ｔｅｓｔｉｎｇ  Ｓｃｈｅｍｅｓ．”  ＩＣＡＬＰ  （１）  ２００８：  ７４８−７５９．
【非特許文献７】［ＫＬ０８］，Ｊｏｎａｔｈａｎ  Ｋａｔｚ  ａｎｄ  Ｙｅｈｕｄａ  Ｌｉｎｄｅｌｌ，”Ａｇｇｒｅｇａｔｅ  ｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅｓ．”，ＣＴ−ＲＳＡ  ２００８，  ｖｏｌｕｍｅ  ４９６４  ｏｆ  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ．  Ｓｐｒｉｎｇｅｒ，  ２００８．
【非特許文献８】［ＨＳ１８］，Ｓｈｏｉｃｈｉ  Ｈｉｒｏｓｅ  ａｎｄ  Ｊｕｎｊｉ  Ｓｈｉｋａｔａ，”Ｎｏｎ−ａｄａｐｔｉｖｅ  Ｇｒｏｕｐ−Ｔｅｓｔｉｎｇ  Ａｇｇｒｅｇａｔｅ  ＭＡＣ  Ｓｃｈｅｍｅ．”，ＩＳＰＥＣ  ２０１８，  ＩＡＣＲ  ｅＰｒｉｎｔ  ２０１８／４４８．，  インターネット〈URL：https://eprint.iacr.org/2018/448〉
【非特許文献９】［ＢＧＲ９５］，Ｍｉｈｉｒ  Ｂｅｌｌａｒｅ，  Ｒｏｃｈ  Ｇｕｅｒｉｎ，  ａｎｄ  Ｐｈｉｌｌｉｐ  Ｒｏｇａｗａｙ，”ＸＯＲ  ＭＡＣｓ：  Ｎｅｗ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｕｓｉｎｇ  Ｆｉｎｉｔｅ  Ｐｓｅｕｄｏｒａｎｄｏｍ  Ｆｕｎｃｔｉｏｎｓ．”，  ＣＲＹＰＴＯ  ’９５．
【非特許文献１０】［Ｍ９６］，Ａｎｔｈｏｎｙ  Ｍａｃｕｌａ，”Ａ    ｓｉｍｐｌｅ  ｃｏｎｓｔｒｕｃｔｉｏｎ  ｏｆ  ｄ−ｄｉｓｊｕｎｃｔ  ｍａｔｒｉｃｅｓ  ｗｉｔｈ  ｃｅｒｔａｉｎ  ｃｏｎｓｔａｎｔ  ｗｅｉｇｈｔｓ．”，  Ｄｉｓｃｒｅｔｅ  Ｍａｔｈｅｍａｔｉｃｓ  １６２  （１９９６）  ｐａｇｅ  ３１１−３１２．
【発明の概要】
【発明が解決しようとする課題】
【００３５】
以下の分析は、本発明によって与えられたものである。本発明の第１の課題は、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるようなメッセージ認証を、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］等の手法よりもさらに効率よく構築することである。【００３６】
具体的には、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］等の手法では、非適応組み合わせグループテスト（ＮＣＧＴ）の理論から、タグ生成に用いるテスト行列を直接構成している。典型的には、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］等の手法では、ｄ−ｄｉｓｊｕｎｃｔ行列によりテスト行列を構成するため、ｄ−ｄｉｓｊｕｎｃｔ行列を構成困難なパラメータ（ｄ，およびアイテム数ｍ，テスト数ｔ）については効果的な手法を実現できない、という問題点がある。【００３７】
一方、背景技術で述べたように、ｄ＝１の場合の最適な行列構成方法はよく知られているが、ｄ＞１の場合の最適な構成方法は知られておらず、また、ｄがある程度大きくなると、そもそも非自明な、すなわちｔ＜ｍであるようなｄ−ｄｉｓｊｕｃｔ行列が存在しないことも知られている。【００３８】
本発明の目的は、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるようなメッセージ認証のさらなる効率化に貢献できるＭＡＣタグリスト生成装置、ＭＡＣタグリスト検証装置、集約ＭＡＣ検証システム、ＭＡＣタグリスト生成方法及びＭＡＣタグリスト検証方法を提供することを目的とする。
【課題を解決するための手段】
【００３９】
第１の視点によれば、メッセージ認証コード（ＭＡＣ）生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、ＭＡＣの対象となるｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、を入力するメッセージ入力部と、生成する前記ＭＡＣの数ｓ（ｓは正の整数）について、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するグループテスト行列生成部と、前記メッセージＭについて、前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成することで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成するナンス付線形グループテストＭＡＣ適用部と、前記ナンス付線形グループテストＭＡＣ適用部が求めたＭＡＣタグリストを出力するＭＡＣタグリスト出力部と、を含むＭＡＣタグリスト生成装置が提供される。【００４０】
第２の視点によれば、メッセージ認証コード（ＭＡＣ）タグリスト検証の対象となるナンスＮと、ｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、ｔ個のＭＡＣ値のリストであるＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）と、を入力するメッセージ入力部と、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するとともに、前記グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されたテスト行列拡大ルールＲを出力するグループテスト行列生成および拡大部と、メッセージＭについて前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇと、を用いて、ｊ（ｊ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ＊［ｊ］を生成することで、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成するナンス付線形グループテストＭＡＣ適用部と、前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊と前記テスト行列拡大ルールＲとを用いて、前記テスト行列拡大ルールＲが指定する行インデックスの部分集合に対応して前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊のそれぞれで線形結合を行い、拡大ＭＡＣタグリストｅｘＴ及び検証用拡大ＭＡＣタグリストｅｘＴ＊を出力するＭＡＣタグリスト拡大部と、前記拡大ＭＡＣタグリストｅｘＴと前記検証用拡大ＭＡＣタグリストｅｘＴ＊とを比較してメッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力するＭＡＣタグリスト検証部と、ＭＡＣタグリスト検証部が出力する検証結果を出力する検証結果出力部と、を含むＭＡＣタグリスト検証装置が提供される。【００４１】
第３の視点によれば、ｔ行ｍ列のグループテスト行列Ｈを出力するグループテスト行列生成部と、メッセージＭ［ｉ］を入力するメッセージ入力部と、前記メッセージＭ［ｉ］に対する単一のメッセージ認証コード（ＭＡＣ）タグＴ［ｉ］を求めて出力するＭＡＣ生成部と、をそれぞれ備えたｍ個のノードから送られた、ｍ個のメッセージとタグの対（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）を入力とし、グループテスト行列Ｈに従ってタグの集約を行い、ｔ個の集約タグからなる集約タグリストＶ＝（Ｖ［１］，  ．．．，  Ｖ［ｔ］）と、メッセージのリストＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）と、を出力するＭＡＣタグ集約部と、複数の前記グループテスト行列Ｈの行インデックスの部分集合であるテスト行列拡大ルールＲを出力するグループテスト行列生成部と、を備える集約ノードと、前記テスト行列拡大ルールＲに従って、前記集約タグリストＶの要素の線形結合を求めて、拡大集約タグリストｅｘＶを出力する集約ＭＡＣタグリスト拡大部と、前記メッセージリストＭと前記拡大集約タグリストｅｘＶ、前記テスト行列拡大ルールＲと、を用いて検証を行い、改ざんされたノードを特定して検証結果として出力する拡大集約ＭＡＣタグリスト検証部と、前記拡大集約ＭＡＣタグリスト検証部の出力する検証結果の出力を行う検証結果出力部と、を備える検証ノードと、を含む集約ＭＡＣ検証システムが提供される。【００４２】
第４の視点によれば、メッセージ認証コード（ＭＡＣ）生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、ＭＡＣの対象となるｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、を入力するステップと、生成する前記ＭＡＣの数ｓ（ｓは正の整数）について、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するステップと、前記メッセージＭについて、前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成することで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成するステップと、前記ＭＡＣタグリストを出力するステップと、を含むＭＡＣタグリスト生成方法が提供される。本方法は、上記したナンス（Ｎｏｎｃｅ）Ｎ及びメッセージＭを入力として、ＭＡＣタグリストを出力するコンピュータという、特定の機械に結びつけられている。【００４３】
第５の視点によれば、ＭＡＣタグリスト検証の対象となるナンスＮと、ｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、ｔ個のＭＡＣ値のリストであるＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）と、を入力するステップと、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するとともに、複数の前記グループテスト行列Ｈの行インデックスの部分集合であるテスト行列拡大ルールＲを出力するステップと、メッセージＭについて前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇと、を用いて、ｊ（ｊ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ＊［ｊ］を生成することで、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成するステップと、前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊と前記テスト行列拡大ルールＲとを用いて、前記テスト行列拡大ルールＲが指定する行インデックスの部分集合に対応して前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊のそれぞれで線形結合を行い、前記拡大ＭＡＣタグリストｅｘＴ及び前記検証用拡大ＭＡＣタグリストｅｘＴ＊を出力するステップと、前記拡大ＭＡＣタグリストｅｘＴと前記検証用拡大ＭＡＣタグリストｅｘＴ＊とを比較してメッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力するステップと、前記検証結果を出力するステップと、を含むＭＡＣタグリスト検証方法が提供される。本方法は、上記したナンス（Ｎｏｎｃｅ）Ｎ及びメッセージＭを入力として、メッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力するコンピュータという、特定の機械に結びつけられている。【００４４】
第６の視点によれば、上記したＭＡＣタグリスト生成装置、ＭＡＣタグリスト検証装置及び集約ＭＡＣ検証システムの構成装置の機能を実現するためのコンピュータプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジトリーな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００４５】
本発明によれば、改ざんの有無だけでなく改ざんされた位置に関して情報を得られるようなメッセージ認証のさらなる効率化達成することが可能となる。
【図面の簡単な説明】
【００４６】
【図１】本発明の第１の実施形態のＭＡＣタグリスト生成装置の構成を示す図である。
【図２】本発明の第１の実施形態のＭＡＣタグリスト生成装置の動作を表したフローチャートである。
【図３】本発明の第１の実施形態のＭＡＣタグリスト生成装置の各部のデータの流れを示す図である。
【図４】本発明の第２の実施形態のＭＡＣタグリスト検証装置の構成を示す図である。
【図５】本発明の第２の実施形態のＭＡＣタグリスト検証装置の動作を表したフローチャートである。
【図６】本発明の第２の実施形態のＭＡＣタグリスト検証装置の各部のデータの流れを示す図である。
【図７】本発明の第１、第２の実施形態の構成をストレージシステムに適用した例を示す図である。
【図８】本発明の第３の実施形態の集約ＭＡＣ検証システムの構成を示す図である。
【図９】本発明の第３の実施形態の集約ＭＡＣ検証システムの動作を表したフローチャートである。
【図１０】可変長入力の擬似ランダム関数ＦとＧを用いＭＡＣ関数の一例を表した図である。
【図１１】ｍ＝７アイテム、ｔ＝３テストのＭＡＣタグリストを生成する構成の一例を示す図である。
【図１２】本発明を実施可能なコンピュータの構成を示す図である。
【発明を実施するための形態】
【００４７】
［第１の実施形態］
続いて、本発明の第１の実施形態のＭＡＣタグリスト生成装置について図面を参照して詳細に説明する。以下、特に断りのない限り、１ブロックの長さをｎビットとする。
【００４８】
図１は、本発明の第１の実施形態のＭＡＣタグリスト生成装置の構成を示す図である。図１を参照すると、メッセージ入力部１０１と、グループテスト行列生成部１０２と、ナンス付線形グループテストＭＡＣ適用部１０３と、ＭＡＣタグリスト出力部１０４と、を備えたＭＡＣタグリスト生成装置１０が示されている。
【００４９】
メッセージ入力部１０１は、対象となるメッセージＭ、およびナンスＮを入力する手段である。このようなメッセージ入力部１０１は、例えばキーボードなどの文字入力装置や他の装置からデータを受信する通信インタフェースにより実現できる。
【００５０】
以下の説明では、メッセージＭがｍ個の個別のアイテムＭ［１］，．．．，Ｍ［ｍ］より構成されているものとする。それぞれのアイテムは長さも異なってよいし、値が同じものがあってもよい。例えば、それぞれのアイテムは、ハードディスクの１セクタの内容であったり、データベースの１エントリ、あるいは文章情報の１キャラクタでもよい。ナンスＮは処理ごとに更新される、重複しない値である。例えばカウンターや時刻情報からナンスＮを構成することが可能である。ナンスが十分長い場合には乱数であってもよい。
【００５１】
グループテスト行列生成部１０２は、改ざん位置特定のための組み合わせグループテストを生成する。具体的には、グループテスト行列生成部１０２は、テストの数（すなわちＭＡＣの数）ｔと、特定可能な改ざんアイテムの数の最大値ｄに応じて、ｔ行ｍ列の２値行列Ｈを生成する。この行列Ｈの構成は任意であるが、行列Ｈは例えば既存のｄ−ｄｉｓｊｕｎｃｔ行列ＤのＧＦ（２）基底とすることが可能である。すなわち、行列Ｈは、ｄ−ｄｉｓｊｕｎｃｔ行列Ｄの線形独立な行ベクトル全体からなる行列、あるいは、線形独立な行ベクトル全体へ行基本操作（行同士の和）を行って得られる行列ということができる。
【００５２】
［例２］
一例として、以下の行列を考える。
［１  １  ０  ０］
［１  ０  １  ０］
［０  １  １  ０］
［１  ０  ０  １］
［０  １  ０  １］
［０  ０  １  １］
【００５３】
上記［例２］は、６行４列の行列であり、２−ｄｉｓｊｕｎｃｔである。６＞４であるためテスト行列としては不適格、すなわち自明な、各アイテムごとにタグをとる方式のほうが４つのタグで済むため優れている。しかしながら、上記行列のＧＦ（２）基底は、
［１  ０  ０  １］
［０  １  ０  １］
［０  ０  １  １］
となるため、３つのタグで２アイテムの特定が可能となる。
【００５４】
なお、ｍ＝４，ｄ＝２  のときは非自明（行数＜列数となる）な２−ｄｉｓｊｕｎｃｔ行列は存在しないことが知られているため、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］、非特許文献８［ＨＳ１８］では意味のある方式構築は不可能である。
【００５５】
ナンス付線形グループテストＭＡＣ適用部１０３は、メッセージＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）について、ナンスＮを用いてｔ行ｍ列グループテスト行列Ｈが指定する方法でｔ個のＭＡＣタグを生成する。
【００５６】
ＭＡＣタグの生成には可変長入力固定長出力の擬似ランダム関数（ｐｓｅｕｄｏｒａｎｄｏｍ  ｆｕｎｃｔｉｏｎ，ＰＲＦ）ＦとＧを用いる。以下の説明では、簡単のため、擬似ランダム関数Ｆ及びＧの出力長は等しいものとするが、異なる場合は擬似ランダム関数Ｆ，Ｇの出力へ適宜パディングや短縮を用いて長さを合わせることができる。
【００５７】
擬似ランダム関数ＦとＧは異なる鍵を用いていてもよいし、適当な入力ドメイン分離を用いて、単一のＰＲＦから生成してもよい。
【００５８】
図１０は、行列Ｈのｉ番目の行ベクトルＨ［ｉ］がｉ番目のテストでどのアイテムをＭＡＣタグ計算に含めるかを示す。具体的には、Ｈ［ｉ］で１が立つすべての行のインデックスｊについて、Ｍ［ｊ］とｊを連結してＦに入力し、Ｆ（Ｍ［ｊ］，  ｊ）を得る。各ｊについてすべてのＦ（Ｍ［ｊ］，ｊ）の和（例えば排他的論理和）をとり、さらにＮとｉを連結してＧへ入力してＧ（Ｎ，ｉ）を得て、これとの和をとることでｉ番目のテストに対応するＭＡＣ値Ｔ［ｉ］とする。
【００５９】
ナンス付線形グループテストＭＡＣ適用部１０３は、上記の計算をすべてのｉ＝１，．．．，ｔについて行い、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成する。
【００６０】
なお、擬似ランダム関数ＦとＧは、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの標準的なブロック暗号を用いて構成することができる。また、擬似ランダム関数ＦとＧは、ＳＨＡ−２などのハッシュ関数を用いて構成される疑似ランダム関数、例えば、ＣＭＡＣやＨＭＡＣとすることも可能である（非特許文献１、２参照）。
【００６１】
ここで、各ＭＡＣタグの計算は、テストごとに個別に行うのではなく、非特許文献４［Ｍｉｎ１５］と同様に、途中の計算結果を共有しつつ並列に行うことで、大幅に効率よく計算することも可能である（図１０、１１参照）。図１１は、ｍ＝７アイテム、ｔ＝３テストでのＭＡＣタグリストの生成の例を示している。図１１の例では、破線で囲った部分を計算することで、３つのタグからなるタグリストを計算することが可能となっている。
【００６２】
上記したナンス付線形グループテストＭＡＣは、ＦとＧが擬似ランダム関数であり、ナンスがＭＡＣ生成処理のごとに更新されていれば、任意のメッセージについてＭＡＣタグを攻撃者が予測することは困難であり、従って改ざんは困難である。
【００６３】
ＭＡＣタグリスト出力部１０４は、ナンス付線形グループテストＭＡＣ適用部１０３が出力するＭＡＣタグリストを、コンピュータディスプレイやプリンターなどへ出力する。
【００６４】
以上のようなＭＡＣタグリスト生成装置１０はＣＰＵとメモリとディスクにより実現可能である。ＭＡＣタグリスト生成装置の各処理ユニットは、プログラムをディスクに格納しておき、このプログラムをＣＰＵ上で動作させることにより実現することができる（図１２参照）。
【００６５】
続いて、図２のフローチャートを参照して、第１の実施形態の全体の動作について詳細に説明する。まず、メッセージ入力部１０１が、対象となるｍ個のアイテムからなるメッセージＭ及びナンスＮを入力する（図２のステップ１）。
【００６６】
次に、グループテスト行列生成部１０２が、ｔ行ｍ列の２値行列であるグループテスト行列Ｈを生成する（図２のステップ２）。
【００６７】
次に、ナンス付線形グループテストＭＡＣ適用部１０３が、グループテスト行列Ｈを参照して、擬似ランダム関数ＦとＧを用いたナンス付線形グループテストＭＡＣをＭへ適用し、ｔ個のＭＡＣタグからなるＭＡＣタグリストＴを生成する（図２のステップ３）。
【００６８】
最後に、ＭＡＣタグリスト出力部１０４が得られたＭＡＣタグリストＴを出力する（図２のステップ４）。
【００６９】
上記のように動作するＭＡＣタグリスト生成装置１０は、以下のように要約することができる。以下、図３を参照して説明する。
【００７０】
メッセージ入力部１０１は、ＭＡＣ生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、ＭＡＣの対象となるｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）を入力する。
【００７１】
グループテスト行列生成部１０２は、生成するＭＡＣの数ｓについて、組み合わせグループテストのパラメータであるｔ行ｍ列の２値グループテスト行列Ｈを生成する。
【００７２】
前記ナンス（Ｎｏｎｃｅ）Ｎ、メッセージＭ及び２値グループテスト行列Ｈは、ナンス付線形グループテストＭＡＣ適用部１０３に入力される。
【００７３】
ナンス付線形グループテストＭＡＣ適用部１０３は、メッセージＭについて、グループテスト行列ＨとナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇと、を用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成する。具体的には、ナンス付線形グループテストＭＡＣ適用部１０３は、グループテスト行列Ｈのｉ行目で１が立つすべての列のインデックスｊ（ｊ＝１，．．．，ｍ）について、Ｍ［ｊ］とインデックスｊを擬似ランダム関数Ｆに入力する。そして、ナンス付線形グループテストＭＡＣ適用部１０３は、得られた出力すべての和と、さらに擬似ランダム関数Ｇに、ナンスＮとｉを入力した結果との和をとって、ＭＡＣタグＴ［ｉ］を得る。ナンス付線形グループテストＭＡＣ適用部１０３は、すべてのｊ＝１，．．．，ｔについて、上記ＭＡＣタグＴ［ｉ］の計算を行うことで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成する（図１１参照）。
【００７４】
そして、ＭＡＣタグリスト出力部１０４は、ナンス付線形グループテストＭＡＣ適用部が求めたＭＡＣタグリストＴを出力する。
【００７５】
以上のような、第１の実施形態の効果は、第２の実施形態のＭＡＣタグリスト検証装置と合わせて説明する。
【００７６】
［第２の実施形態］
続いて、本発明の第２の実施形態として、本発明の第１の実施形態と対をなすＭＡＣタグリスト検証装置について図面を参照して詳細に説明する。図４は、第２の実施形態のＭＡＣタグリスト検証装置の構成を示すブロック図である。図４を参照すると、メッセージ入力部２０１と、グループテスト行列生成および拡大部２０２と、ナンス付線形グループテストＭＡＣ適用部２０３と、ＭＡＣタグリスト拡大部２０４と、ＭＡＣタグリスト検証部２０５と、検証結果出力部２０６と、を備えた構成が示されている。
【００７７】
メッセージ入力部２０１は、対象となるメッセージＭと、ナンスＮと、第１の実施形態のＭＡＣタグリスト生成装置１０の出力するＭＡＣタグリストＴとを入力する手段である。このようなメッセージ入力部２０１は、例えばキーボードなどの文字入力装置や他の装置からデータを受信する通信インタフェースにより実現できる。
【００７８】
第１の実施形態と同じく、ここでは、メッセージＭがｍ個の個別のアイテムＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）より構成されているものとする。ナンスは、第１の実施形態と同様に、処理ごとに更新される、重複しない値であり、例えばカウンターや時刻情報から構成することが可能である。ナンスが十分長い場合には乱数であってもよい。
【００７９】
グループテスト行列生成および拡大部２０２は、第一の実施形態のＭＡＣタグリスト生成装置１０のグループテスト行列生成部１０２が生成するものと同じ行列Ｈと、テスト行列拡大ルールＲを生成する。テスト行列拡大ルールＲは、行列Ｈを基底とした、より行数の多い行列を生成するために必要となるルールである。具体的には、テスト行列拡大ルールＲは、行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されている。グループテスト行列生成および拡大部２０２は、グループテスト行列生成部に相当する。
【００８０】
ナンス付線形グループテストＭＡＣ適用部２０３は、第一の実施形態のＭＡＣタグリスト生成装置１０のナンス付線形グループテストＭＡＣ適用部１０３と同様の処理をナンスＮ、メッセージＭ、グループテスト行列Ｈについて行い、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）として出力する。
【００８１】
ＭＡＣタグリスト拡大部２０４は、テスト行列拡大ルールＲに従って、検証用ＭＡＣタグリストＴ＊の要素を線形結合し、拡大することで検証用拡大ＭＡＣタグリストｅｘＴ＊を生成する。
【００８２】
ここで、テスト行列拡大ルールＲは、ｖ（但し、ｖ＞ｔ）個の要素Ｒ［１］，．．．，Ｒ［ｖ］からなり、各Ｒ［ｉ］は｛１，．．．，ｔ｝の部分集合である。
【００８３】
このとき、検証用拡大ＭＡＣタグリストはｅｘＴ＊＝（ｅｘＴ＊［１］，．．．，ｅｘＴ＊［ｖ］）と表され、例えばＲ［１］＝｛１，２，４｝であれば、ｅｘＴ＊［１］＝Ｔ＊［１］＋Ｔ＊［２］＋Ｔ＊［４］となる。
【００８４】
同様に、ＭＡＣタグリスト拡大部２０４は、メッセージ入力部２０１から入力されたＭＡＣタグリストＴの要素も同様にテスト行列拡大ルールＲに従って線形結合し、拡大することで拡大ＭＡＣタグリストｅｘＴ＝（ｅｘＴ［１］，．．．，ｅｘＴ［ｖ］）を生成する。そして、ＭＡＣタグリスト拡大部２０４は、ＭＡＣタグリスト検証部２０５に、拡大ＭＡＣタグリストｅｘＴと検証用拡大ＭＡＣタグリストｅｘＴ＊とを出力する。
【００８５】
ＭＡＣタグリスト検証部２０５は、検証用拡大ＭＡＣタグリストｅｘＴ＊と、拡大ＭＡＣタグリストｅｘＴとを、グループテスト行列Ｈおよびテスト行列拡大ルールＲを用いて比較することで、メッセージＭを検証する。具体的には、ＭＡＣタグリスト検証部２０５は、検証用拡大ＭＡＣタグリストｅｘＴ＊と、拡大ＭＡＣタグリストｅｘＴとの比較により、メッセージＭに対する改ざんの有無を判定する。さらに、ＭＡＣタグリスト検証部２０５は、改ざんがあったと判定した場合、改ざんされたアイテムを特定し、検証結果出力部２０６に、そのインデックスを出力する。
【００８６】
ここで、ＭＡＣタグリスト検証部２０５によるメッセージ検証動作の仕組みについて説明する。
【００８７】
まず、グループテスト行列Ｈをテスト行列拡大ルールＲにより拡大した行列、すなわちＲ＝（Ｒ［１］，．．．，Ｒ［ｖ］）について、Ｒ［ｉ］が指定する行列Ｈの行の線形結合をｉ行目とするｖ（ｖ＞ｔ）行ｍ列行列を拡大テスト行列ｅｘＨとする。
【００８８】
ここで、拡大テスト行列ｅｘＨのｉ行目をｅｘＨ［ｉ］とすると、
（式３）
ｅｘＨ［ｉ］＝ＸＯＲ＿｛ｉ：ｉ∈Ｒ［ｉ］｝Ｈ［ｉ］
となる（ＸＯＲ＿Ｓは集合Ｓに含まれるものすべてについての排他的論理和）。なお、グループテスト行列Ｈそのものもテストとして用いることが自然であり、その場合はｅｘＨはＨを含む。
【００８９】
これは例えば、Ｒ［ｉ］＝｛ｉ｝  ｆｏｒ  ｔ＝１，…，  ｔ  として実現することが可能である。
【００９０】
このとき、ｅｘＴ＊＝（ｅｘＴ＊［１］，．．．，ｅｘＴ＊［ｖ］）とｅｘＴ＝（ｅｘＴ［１］，．．．，ｅｘＴ［ｖ］）について、両者のエントリごとの差をとる。そして、差がゼロのケースを０，非ゼロとなるケースを１とした２値ベクトルＢ＝（Ｂ［１］，．．．，Ｂ［ｖ］）を作り、Ｂに対し、拡大テスト行列ｅｘＨを用いた所定の手続きに基づき結果を出力する。
【００９１】
具体的には、Ｂのエントリがすべて０であった場合は改ざんがないと判定し、それ以外の場合は全体において、少なくとも一つのアイテムに改ざんがあると判定し、改ざんされたアイテムの特定を行うために、Ｂ［ｉ］＝０となるすべてのｉ＝１，．．．，ｖについて、ｅｘＨのｉ行目ベクトルＶ＝（Ｖ［１］，．．．，Ｖ［ｍ］）をとりだし、Ｖ［ｊ］＝１となるすべてのｊ＝１，．．．，ｍについてＭ［ｊ］を改ざんなしと判定する。
【００９２】
ＭＡＣタグリスト検証部２０５は、以上の処理を行い、改ざんなしと判定されなかったアイテムすべてを改ざんありとして判定し、そのインデックスすべてを出力する。改ざんがない場合にはどのインデックスも出力されない。
【００９３】
グループテストにおいて、この手続きは拡大テスト行列ｅｘＨをテスト行列とした場合のナイーブデコーダと呼ばれる処理に相当する。
【００９４】
拡大テスト行列ｅｘＨがｄ−ｄｉｓｊｕｎｃｔであれば、上記の手続きにより、改ざんされたアイテムの数がｄ以下の場合、すべての改ざんされたアイテムを特定することが可能である。
【００９５】
また、非特許文献５［ＣＪＳ０９］に記載のように、改ざんなしと判定されたアイテムが実際は改ざんされていたということは起きないため、所望のｄについてｄ−ｄｉｓｊｕｎｃｔでない場合であっても、一般に、改ざんの可能性がある範囲を狭めることができるという効果がある。
【００９６】
検証結果出力部２０６は、ＭＡＣタグリスト検証部２０５の出力する、改ざんされたアイテムのインデックスの情報とをコンピュータディスプレイやプリンターなどへ出力する。
【００９７】
以上のようなＭＡＣタグリスト検証装置２０はＣＰＵとメモリとディスクにより実現可能である。ＭＡＣタグリスト生成装置の各処理ユニットは、プログラムをディスクに格納しておき、このプログラムをＣＰＵ上で動作させることにより実現することができる（図１２参照）。
【００９８】
続いて、図５のフローチャートを参照して、第２の実施形態の全体の動作について詳細に説明する。まず、メッセージ入力部２０１が、対象となるｍ個のアイテムからなるメッセージＭと、ナンスＮ及びＭＡＣタグリストＴを入力する（図５のステップ１１）。
【００９９】
次に、グループテスト行列生成および拡大部２０２が、ｔ行ｍ列の２値行列であるグループテスト行列Ｈとテスト行列拡大ルールＲを生成する（図５のステップ１２）。
【０１００】
次に、ナンス付線形グループテストＭＡＣ適用部２０３が、グループテスト行列Ｈを参照して、擬似ランダム関数Ｆと擬似ランダム関数Ｇを用いたナンス付線形グループテストＭＡＣをメッセージＭへ適用し、ｔ個のＭＡＣタグからなる検証用ＭＡＣタグリストＴ＊を生成する（図５のステップ１３）。
【０１０１】
次に、ＭＡＣタグリスト拡大部２０４が、ＭＡＣタグリストＴと検証用ＭＡＣタグリストＴ＊との双方をテスト行列拡大ルールＲに従って拡大し、それぞれ拡大ＭＡＣタグリストｅｘＴと検証用拡大ＭＡＣタグリストｅｘＴ＊を生成する（図５のステップ１４）。
【０１０２】
次に、ＭＡＣタグリスト検証部２０５が、拡大ＭＡＣタグリストｅｘＴと検証用拡大ＭＡＣタグリストｅｘＴ＊とを、グループテスト行列Ｈの行をテスト行列拡大ルールＲに従って拡大した拡大テスト行列ｅｘＨを用いて比較する。そして、ＭＡＣタグリスト検証部２０５は、メッセージＭ中の改ざんされたアイテムのインデックス集合を出力する（図５のステップ１５）。
【０１０３】
最後に、検証結果出力部２０６は、検証結果として、ＭＡＣタグリスト検証部２０５にて検出された改ざんされたアイテムのインデックス集合を出力する（図５のステップ１６）。
【０１０４】
上記のように動作するＭＡＣタグリスト検証装置２０は、以下のように要約することができる。以下、図６を参照して説明する。
【０１０５】
メッセージ入力部２０１は、ＭＡＣタグリスト検証の対象となる、ｍ個のアイテムからなるメッセージ  Ｍ＝（Ｍ［１］，．．．，Ｍ［ｍ］）、ナンスＮ、ｔ個のＭＡＣのリストであるＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を入力する。
【０１０６】
グループテスト行列生成および拡大部２０２は、ｔ行ｍ列の２値グループテスト行列Ｈを生成する。さらに、グループテスト行列生成および拡大部２０２は、グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素Ｒ［ｉ］で構成されたテスト行列拡大ルールＲを出力する。グループテスト行列生成および拡大部２０２は、グループテスト行列生成部とグループテスト行列生成部とを含む。
【０１０７】
ナンス付線形グループテストＭＡＣ適用部２０３は、メッセージＭについてグループテスト行列ＨとナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成する。具体的には、ナンス付線形グループテストＭＡＣ適用部２０３は、グループテスト行列Ｈのｊ列目で１が立つすべての行のインデックスｉについて、ｉ番目のアイテムＭ［ｉ］とインデックスｉを擬似ランダム関数Ｆに入力し、得られた出力すべての和をとる。さらに、ナンス付線形グループテストＭＡＣ適用部２０３は、この和と、擬似ランダム関数ＧにナンスＮを入力した結果との和をとり、得られた出力をｊ番目のテストに対応する検証用ＭＡＣ値Ｔ＊［ｉ］とする。ナンス付線形グループテストＭＡＣ適用部２０３は、これをすべてのｊ＝１，．．．，ｔについて行い検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成する。
【０１０８】
ＭＡＣタグリスト拡大部２０４は、ＭＡＣタグリストＴと検証用ＭＡＣタグリストＴ＊とテスト行列拡大ルールＲとを用いて、テスト行列拡大ルールＲが指定する行インデックスの部分集合に対応してＴとＴ＊それぞれで線形結合を行い、拡大ＭＡＣタグリストｅｘＴ，検証用拡大ＭＡＣタグリストｅｘＴ＊を出力する。
【０１０９】
ＭＡＣタグリスト検証部２０５は、拡大ＭＡＣタグリストｅｘＴと検証用拡大ＭＡＣタグリストｅｘＴ＊とを比較してメッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力する。
【０１１０】
そして、検証結果出力部２０６が、ＭＡＣタグリスト検証部２０５から出力された検証結果を出力する。
【０１１１】
以上のような、第１、第２の実施形態によれば、組み合わせグループテストを用いて改ざん位置を特定するメッセージ認証において、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］などの手法よりもタグの数を削減できるという効果が奏出される。その理由は、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］ではｔ行ｍ列テスト行列に従って生成したｔ個のタグのみを改ざん特定に用いていたのに対して、第１、第２の実施形態では、タグの線形結合も改ざん特定に用いるように構成したことにある。
【０１１２】
また、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］ではタグが入力メッセージについて疑似ランダム関数を適用した出力となっているために、タグの線形結合は何の有用な情報ももたらさないが、第１、第２の実施形態では、ナンスベースの並列実行可能なＭＡＣを用いることにより、タグがある種の線形性を持っている。従って、第１、第２の実施形態によれば、タグ同士の和を新たなテストとして用いることが可能となっている。
【０１１３】
例えば第１の実施形態において、Ｈの１行目が（１１００．．．０）と２行目が（０１１００．．．０）であったとすると、対応するタグは、
Ｔ［１］＝Ｆ（Ｍ［１］，１）＋Ｆ（Ｍ［２］，２）＋Ｇ（Ｎ，１）
Ｔ［２］＝Ｆ（Ｍ［２］，２）＋Ｆ（Ｍ［３］，３）＋Ｇ（Ｎ，２）
となる（＋はビットごとの排他的論理和を表す）。
【０１１４】
ここで  、
Ｔ［１］＋Ｔ［２］＝Ｆ（Ｍ［１］，１）＋Ｆ（Ｍ［３］，３）＋Ｇ（Ｎ，１）＋Ｇ（Ｎ，２）となるため、Ｔ［１］＋Ｔ［２］はｍ（Ｍ［１］，Ｍ［３］）に改ざんがあるかどうかを検証するタグとして機能する。
【０１１５】
これはＴ［１］，Ｔ［２］のみを用いた改ざん同定では得られない情報である。例えば  Ｔ［１］とＴ［２］のみでは、Ｔ［１］，Ｔ［２］ともに検証ＮＧとなり、Ｍ［２］が改ざんされたのか、あるいはＭ［１］とＭ［３］が改ざんされたのかの二つの可能性が残されている場合、これ以上の切り分けは不可能である。そこで、Ｔ［３］＝Ｔ［１］＋Ｔ［２］を求め、もしＴ［３］の検証がＯＫであった場合にはＭ［２］が改ざんされたことを特定できる。
【０１１６】
また、テスト行列拡大ルールＲは、どのタグの和をとるかを指示するものであり、グループテスト行列Ｈの行インデックスの部分集合を要素とした集合である。上の例ではテスト行列拡大ルールＲの要素として集合｛１，２｝があることに相当する。
【０１１７】
より一般的には、非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］において、あるグループテスト行列Ｈを用いるならば、第１、第２の実施形態ではグループテスト行列ＨのＧＦ（２）基底Ｈ＿ｂ（ｂａｓｉｓ  ｏｖｅｒ  ＧＦ（２））を用いることができる。
【０１１８】
Ｈ＿ｂの行数はもとのグループテスト行列Ｈの線形独立な行の数（すなわち行列のランク）であり、最悪でも元の行数と一致するため、行数の削減（すなわち送信するタグリストの要素数の削減）が期待できる。
【０１１９】
また、実質的に、グループテスト行列ＨのＧＦ（２）基底Ｈ＿ｂからグループテスト行列Ｈと同じテストが実行可能であるため、改ざんアイテムの特定能力は、グループテスト行列Ｈを用いる非特許文献３［ＧＡＴ０５］、非特許文献４［Ｍｉｎ１５］等の方式と同等である。
【０１２０】
なお、第１、第２の実施形態で用いるタグ生成の関数は、非特許文献９［ＢＧＲ９５］に記載のＸＯＲ−ＭＡＣの変種と捉えることができる。ただし、非特許文献９［ＢＧＲ９５］は単体のＭＡＣ関数の提案であり、グループテストの利用や改ざんアイテムの特定に関する記載はない。
【０１２１】
以上のような第１、第２の実施形態の構成は、図７に示すようなストレージシステムに好適に適用することができる。即ち、大規模ストレージ（Ｌａｒｇｅ  Ｓｔｏｒａｇｅ（ＤＢ））に格納されたメッセージＭについて、ナンス付線形グループテストＭＡＣ適用部（Ｎｏｎｃｅ−ｂａｓｅｄ  Ｌｉｎｅａｒ  ＣＧＴＭＡＣ  ｔａｇｇｉｎｇ）にて、ＭＡＣタグリストの生成を行う構成が、第１の実施形態のＭＡＣタグリスト生成装置１０に相当する。そして、これらについて、ナンス付線形グループテストＭＡＣ適用部（Ｎｏｎｃｅ−ｂａｓｅｄ  Ｌｉｎｅａｒ  ＣＧＴＭＡＣ  ｔａｇｇｉｎｇ）にて検証用ＭＡＣタグリストＴ＊を作成し、ＭＡＣタグリストＴ及び検証用ＭＡＣタグリストＴ＊についてそれぞれテスト行列拡大ルールＲを用いて、拡大ＭＡＣタグリストｅｘＴ、検証用拡大ＭＡＣタグリストｅｘＴ＊を作成し、改ざんの有無や場所を特定する構成が、第２の実施形態のＭＡＣタグリスト検証装置２０に相当する。
【０１２２】
［第３の実施形態］
続いて、複数のノードから受信したメッセージとタグを検証する構成を想定した第３の実施形態について図面を参照して説明する。図８は、本発明の第３の実施形態の集約ＭＡＣ検証システムの構成を示すブロック図である。
【０１２３】
図８を参照すると、ｍ台のノードからメッセージとタグを受信する集約ノードＡと、集約ノードＡからメッセージリストＭと、集約タグリストＶとを受信する検証ノードＣとが接続された構成が示されている。
【０１２４】
ノード１〜ｍは、それぞれ、メッセージ入力部３０１と、ＭＡＣ生成部３０２と、を備えている。
【０１２５】
集約ノードＡは、グループテスト行列生成および拡大部３０３と、ＭＡＣタグ集約部３０４と、を備えている。
【０１２６】
検証ノードＣは、集約ＭＡＣタグリスト拡大部３０５と、拡大集約ＭＡＣタグリスト検証部３０６と、検証結果出力部３０７とを備えている。
【０１２７】
メッセージ入力部３０１は、集約ＭＡＣにおけるｉ（ｉ＝１，．．．，ｍ）番目のノードで対象となるメッセージＭ［ｉ］を入力する。これは例えばキーボードなどの文字入力装置や他の装置からデータを受信する通信インタフェースにより実現される。
【０１２８】
ＭＡＣ生成部３０２は、ｉ（ｉ＝１，．．．，ｍ）番目のノードのメッセージＭ［ｉ］について、ＭＡＣタグＴ［ｉ］を求め、メッセージとタグの対（Ｍ［ｉ］，Ｔ［ｉ］）を出力する。このようなＭＡＣ生成部３０２は、ＣＭＡＣ，ＨＭＡＣなどを用いて実現可能である。ＭＡＣの鍵はノードごとに独立でも、従属でもよい。
【０１２９】
グループテスト行列生成および拡大部３０３は、グループテスト行列生成部とグループテスト行列生成部とを含む。即ち、グループテスト行列生成および拡大部３０３は、第２の実施形態のＭＡＣタグリスト検証装置２０のグループテスト行列生成および拡大部２０２と同様に、ｔ行ｍ列のグループテスト行列Ｈと、テスト行列拡大ルールＲを出力する。このテスト行列拡大ルールＲは、第２の実施形態と同様に、グループテスト行列Ｈに対する行の拡大方法（ｔからｖ行（但し、ｖ＞ｔ）に拡大）を指定するルールである。これらの出力は最初に一度行えばよく、集約ノードＡで実行されて検証ノードＣへその結果を提供する形態を採ることができる。また、検証ノードＣ側に、グループテスト行列生成および拡大部３０３を配置し、検証ノードＣが集約ノードＡに、グループテスト行列Ｈと、テスト行列拡大ルールＲを提供する構成も採用可能である。
あるいはその逆でもよい。
【０１３０】
ＭＡＣタグ集約部３０４は、集約ノードにおいて、ｍ個のノードからの出力全体（Ｍ［１］，Ｔ［２］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）について、グループテスト行列Ｈに従ってタグの集約を行い集約タグリストＶ＝（Ｖ［１］，．．．，Ｖ［ｔ］）を求める。そして。ＭＡＣタグ集約部３０４は、メッセージのリスト（Ｍ［１］，．．．，Ｍ［ｍ］）と合わせて、検証ノードＣ側に、集約タグリストＶを出力する。これは、Ｖ［ｉ］をグループテスト行列Ｈのｉ行目が１となる列インデックスｊについて、すべてのＴ［ｊ］の和をとることで実現される。
【０１３１】
集約ＭＡＣタグリスト拡大部３０５は、集約タグリストＶについて、テスト行列拡大ルールＲに従って線形結合を行い、拡大集約タグリストｅｘＶ＝（ｅｘＶ［１］，．．．，ｅｘＶ［ｖ］）（ｖ＞ｔ）を出力する。
【０１３２】
拡大集約ＭＡＣタグリスト検証部３０６は、メッセージリストＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）に対して、各ノードの鍵を用いて検証用タグＴ＊［１］，．．．，Ｔ＊［ｍ］を求め、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｍ］）を生成する。次に、拡大集約ＭＡＣタグリスト検証部３０６は、Ｔ＊に対してグループテスト行列Ｈとテスト行列拡大ルールＲとを用いて、検証用拡大集約タグリストｅｘＶ＊＝（ｅｘＶ＊［１］，．．．，ｅｘＶ＊［ｖ］）を求める。
【０１３３】
次に、拡大集約ＭＡＣタグリスト検証部３０６は、次に、第２の実施形態のＭＡＣタグリスト検証部２０５と同様に、グループテスト行列Ｈとテスト行列拡大ルールＲとを用いて拡大集約タグリストｅｘＶと検証用拡大集約タグリストｅｘＶ＊の比較を行い、改ざんされたノードのインデックス集合を出力する。
【０１３４】
検証結果出力部３０７は、検証結果として、拡大集約ＭＡＣタグリスト検証部３０６の出力する改ざんされたノードのインデックス集合をディスプレイなどに出力する。
【０１３５】
以上のような集約ＭＡＣ検証システム３０の構成ノードは、ＣＰＵとメモリとディスクにより実現可能である。集約ＭＡＣ検証システム３０の各処理ユニットは、プログラムをディスクに格納しておき、このプログラムをＣＰＵ上で動作させることにより実現することができる（図１２参照）。
【０１３６】
続いて、図９のフローチャートを参照して、第３の実施形態の全体の動作について詳細に説明する。まず、各ｉ＝１，．．．，ｍのノードのメッセージ入力部３０１が、対象となるメッセージＭ［ｉ］を入力し、ＭＡＣ生成部３０２によりＭＡＣタグＴ［ｉ］を求め、集約ノードＡへ出力する（図９のステップ２１）。
【０１３７】
次に、グループテスト行列生成および拡大部３０３が、ｔ行ｍ列の２値行列であるグループテスト行列Ｈとテスト行列拡大ルールＲを生成する（図９のステップ２２）。
【０１３８】
次に、集約ノードＡのＭＡＣタグ集約部３０４は、受信した（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）について、グループテスト行列Ｈに従ってＭＡＣタグ集約を行う。そして、ＭＡＣタグ集約部３０４は、ＭＡＣタグ集約により得られた集約タグリストＶ＝（Ｖ［１］，．．．，Ｖ［ｔ］）とメッセージリストＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）とを検証ノードＣへ出力する（図９のステップ２３）。
【０１３９】
次に、検証ノードＣは、受信した集約タグリストＶをテスト行列拡大ルールＲを用いて拡大し、拡大集約タグリストｅｘＶを求める（図９のステップ２４）。
【０１４０】
さらに、検証ノードＣは、受信したメッセージリストＭと各ノードの鍵を用いて検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｍ］）を求める。さらに、検証ノードＣは、グループテスト行列Ｈをテスト行列拡大ルールＲに従って行拡大した拡大テスト行列ｅｘＨを生成し、拡大テスト行列ｅｘＨに従って検証用ＭＡＣタグリストＴ＊の線形結合を求めて検証用拡大集約タグリストｅｘＶ＊を求める（図９のステップ２５）。
【０１４１】
さらに、検証ノードＣは、拡大テスト行列ｅｘＨを用いたナイーブデコーダによって、拡大集約タグリストｅｘＶと検証用拡大集約タグリストｅｘＶ＊との比較を行い、改ざんされたノードを特定し、ノードのインデックス集合を検証結果とする（図９のステップ２６）。
【０１４２】
最後に、検証ノードＣは、検証結果を出力する（図９のステップ２７）。
【０１４３】
上記のように動作する集約ＭＡＣ検証システム３０は、以下のように要約することができる。以下、図８を参照して説明する。
【０１４４】
ｉ番目のノードのメッセージ入力部３０１は、それぞれ独立に対象となるメッセージとして、Ｍ［ｉ］を入力する。
【０１４５】
ＭＡＣ生成部３０２は、ｉ＝１，．．．，ｍについてｉ番目のノードにおいて、それぞれＭ［ｉ］に対する単一のＭＡＣタグＴ［ｉ］を求めて出力する。
【０１４６】
グループテスト行列生成および拡大部３０３は、ｔ行ｍ列のグループテスト行列Ｈ及びテスト行列拡大ルールＲを出力する。
【０１４７】
集約ノードＡのＭＡＣタグ集約部３０４は、ｍ個のメッセージとタグの対（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）を入力とし、グループテスト行列Ｈに従ってタグの集約を行う。そして、ＭＡＣタグ集約部３０４は、ｔ個の集約タグからなる集約タグリストＶ＝（Ｖ［１］，．．．，Ｖ［ｔ］）と、メッセージのリストＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）とを出力する。
【０１４８】
検証ノードＣの集約ＭＡＣタグリスト拡大部３０５は、テスト行列拡大ルールＲに従って集約タグリストＶの要素の線形結合を求めて、拡大集約タグリストｅｘＶを出力する。
【０１４９】
検証ノードＣの拡大集約ＭＡＣタグリスト検証部３０６は、メッセージリストＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）と拡大集約タグリストｅｘＶ、テスト行列拡大ルールＲを用いてメッセージリストＭの検証を行い、改ざんされたノードを特定して検証結果として出力する。
【０１５０】
検証ノードＣの検証結果出力部３０７は、拡大集約ＭＡＣタグリスト検証部３０６による検証結果を出力する。
【０１５１】
上記した第３の実施形態の効果は、第１、第２の実施形態の効果と同様である。さらに、非特許文献８［ＨＳ１８］では、集約ノードＡは、あるテスト行列Ａに従って集約タグリストを求めているが、本実施形態では、集約ノードＡはグループテスト行列Ｈの基底行列のＨｂに従ってタグを集約し、検証ノードＣへ送る。このため、検証ノードＣはテスト行列拡大ルールＲに従って集約タグ同士の和をとり、グループテスト行列Ｈに相当する集約タグを求めることができる。結果として本実施形態では、非特許文献８［ＨＳ１８］等と比較して、送信量を減らしつつ、集約ＭＡＣにおける改ざんノードの特定について、同等以上の改ざん特定能力を保持することが可能である。
【０１５２】
［第４の実施形態］
続いて、上記した第１〜第３の実施形態におけるグループテスト行列Ｈに変更を加えた第４の実施形態について説明する。
【０１５３】
［例２］で示したＭａｃｕｌａの行列を一般的にすると、以下のように生成される。
正の整数ａ，ｂについて（ａ，ｂ）＝ａ！／（ａ−ｂ）！ｂ！をａ個からｂ個選択する場合の数とし、（（ａ，ｂ））を集合｛１，２，．．．，ａ｝の大きさｂの部分集合の全体とする。
【０１５４】
このとき、Ｍａｃｕｌａ行列はパラメータ（ｎ，ｋ，ｄ）に対して、（ｎ，ｄ）ｘ（ｎ，ｋ）行列であり、適当な順序で列と行のインデックスを（（ｎ，ｄ））の要素と（（ｎ，ｋ））の要素に対応させたうえで、ある（（ｎ，ｄ））の要素Ｄが（（ｎ，ｋ））の要素ＫについてＤがＫに含まれるときに、行列の（Ｄ，Ｋ）エントリを１とし、それ以外を０とするものである。
【０１５５】
非特許文献１０［Ｍ９６］に示されているように、Ｍａｃｕｌａ行列はｄ−ｄｉｓｊｕｎｃｔである。
【０１５６】
［例２］で示した行列
［１  １  ０  ０］
［１  ０  １  ０］
［０  １  １  ０］
［１  ０  ０  １］
［０  １  ０  １］
［０  ０  １  １］
は、このＭａｃｕｌａ行列のパラメータ（ｎ＝４，ｋ＝３，ｄ＝２）に相当し、従って２−ｄｉｓｊｕｎｃｔである。
【０１５７】
このＧＦ（２）基底がグループテスト行列Ｈとなるが、それは一意でなく、
［１  ０  ０  １］
［０  １  ０  １］
［０  ０  １  １］
や
［１  １  ０  ０］
［０  １  １  ０］
［０  ０  １  １］
があり、いずれも用いることができる。
【０１５８】
このようにパラメータによってＭａｃｕｌａ行列の行数が列数より大きい、すなわちそのままではｄ−ｄｉｓｊｕｎｃｔ行列として無意味なものであっても、［例２］のように、そのＧＦ（２）基底を用いることで、列数より小さいテスト行列を構成することが可能である。
【０１５９】
第４の実施形態は、以下のように要約される。上記したＭＡＣタグリスト生成装置１０のグループテスト行列生成部１０２、ＭＡＣタグリスト検証装置２０のグループテスト行列生成および拡大部２０２、又は、第３の実施形態のグループテスト行列生成および拡大部３０３は、以下にて規定されるグループテスト行列Ｈを生成する。
【０１６０】
具体的には、ｔ行ｍ列のグループテスト行列Ｈは、正の整数のパラメータ（ｎ，ｋ，ｄ）を持つＭａｃｕｌａ行列で構成される。即ち、正の整数ａ，ｂについて（ａ，ｂ）＝ａ！／（ａ−ｂ）！ｂ！をａ個からｂ個選択する場合の数とし、（（ａ，ｂ））を集合｛１，２，．．．，ａ｝の大きさｂの部分集合の全体とする。そして、このグループテスト行列Ｈは、（ｎ，ｄ）行（ｎ，ｋ）列２値行列であり、適当な順序で列と行のインデックスを（（ｎ，ｄ））の要素と（（ｎ，ｋ））の要素に対応させたうえで、ある（（ｎ，ｄ））の要素Ｄが（（ｎ，ｋ））の要素Ｋについて、要素Ｄが要素Ｋに含まれるときに、行列の（Ｄ，Ｋ）エントリを１とし、それ以外を０とする、という行列の有限体ＧＦ（２）上の基底からなる。
【０１６１】
［第５の実施形態］
続いて、上記した第１〜第３の実施形態におけるグループテスト行列Ｈに変更を加えた第５の実施形態について図面を参照して説明する。
【０１６２】
第５の実施形態におけるｔ行ｍ列のグループテスト行列Ｈは、ある整数ｒについてｍ＝２＾ｒ−１とし、グループテスト行列Ｈをテスト行列拡大ルールＲで拡大した行列ｅｘＨが、ｍ＋１行ｍ＋１列のアダマール行列Ｈａｄ（ｒ）から１行目と１列目を削除し、１と−１からなるエントリのうち、−１を０で置き換えた行列（これをｍｏｄＨａｄ（ｒ）と表記する）となるものである。
【０１６３】
グループテスト行列Ｈは、ｍｏｄＨａｄ（ｒ）の基底となる部分行列（一般に複数存在する）を選べばよく、テスト行列拡大ルールＲは、この部分行列の行和でｍｏｄＨａｄ（ｒ）をなすように選ばれる。このときｔはｒ＋１となる。
【０１６４】
［例３］例えばｒ＝３であれば、Ｈａｄ（ｒ）は
［１    １    １    １    １    １    １    １］
［１  −１    １  −１    １  −１    １  −１］
［１    １  −１  −１    １    １  −１  −１］
［１  −１  −１    １    １  −１  −１    １］
［１    １    １    １  −１  −１  −１  −１］
［１  −１    １  −１  −１    １  −１    １］
［１    １  −１  −１  −１  −１    １    １］
［１  −１  −１    １  −１    １    １  −１］
となり、
ｍｏｄＨａｄ（ｒ）、すなわちｅｘＨは
［０  １  ０  １  ０  １  ０］
［１  ０  ０  １  １  ０  ０］
［０  ０  １  １  ０  ０  １］
［１  １  １  ０  ０  ０  ０］
［０  １  ０  ０  １  ０  １］
［１  ０  ０  ０  ０  １  １］
［０  ０  １  ０  １  １  ０］
となる。
【０１６５】
グループテスト行列Ｈは、この基底の一つである
［０  １  ０  １  ０  １  ０］
［１  ０  ０  １  １  ０  ０］
［０  ０  １  １  ０  ０  １］
［１  １  １  ０  ０  ０  ０］
となり、対応するテスト行列拡大ルールＲは（｛１｝，｛２｝，｛３｝，｛４｝，｛２，３，４｝，｛１，３，４｝，｛１，２，４｝）となる。
【０１６６】
この拡大したテスト行列ｅｘＨは任意のｒ＞１について２−ｄｉｓｊｕｎｃｔであり、従って２アイテム改ざんをｒ＋１＝ｌｏｇ  ｍ＋１タグで同定することが可能である。
【０１６７】
本実施形態によれば、このようにほぼｌｏｇ  ｍのテスト数を用いて２アイテムまでの改ざんを同定でき、２−ｄｉｓｊｕｎｃｔ行列そのものをグループテスト行列Ｈとして用いる方式よりも大幅に効率が向上されることになる。
【０１６８】
第５の実施形態は、以下のように要約される。上記したＭＡＣタグリスト生成装置１０のグループテスト行列生成部１０２、ＭＡＣタグリスト検証装置２０のグループテスト行列生成および拡大部２０２、又は、第３の実施形態のグループテスト行列生成および拡大部３０３は、以下にて規定されるグループテスト行列Ｈを生成する。
【０１６９】
ある整数ｒ＞１についてｍ＝２＾ｒ−１，ｔ＝ｒを満たし、ｍ＋１行ｍ＋１列のアダマール行列Ｈａｄ（ｒ）から第１行目と第１列目を削除し、さらにアダマール行列の要素である−１と１のうち、−１を０とすることで得られるｍ行ｍ列バイナリ行列ｍｏｄＨａｄ（ｒ）をとり、グループテスト行列Ｈはこの行列の有限体ＧＦ（２）上の基底からなり、テスト行列拡大ルールＲは、グループテスト行列Ｈをテスト行列拡大ルールＲに従って行の拡大を行った場合にｍｏｄＨａｄ（ｒ）となる。
【０１７０】
［第６の実施形態］
続いて、上記した第１〜第３の実施形態におけるグループテスト行列Ｈに変更を加えた第６の実施形態について説明する。
【０１７１】
第６の実施形態におけるグループテスト行列Ｈは、正整数ｓについて行数と列数が共に２＾（２ｓ）＋２＾ｓ＋１の正方行列Ｐの一次独立なｔ個の行ベクトルからなる部分行列であって、前記正方行列Ｐは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間上のすべての点と直線から定まる接続行列であり、テスト行列拡大ルールＲによって生成されるテストベクトルを前記正方行列Ｐの全ての行ベクトルとする。
【０１７２】
前記正方行列Ｐの各行は、前記有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間における２＾（２ｓ）＋２＾ｓ＋１個の点に対応し、Ｐの各列は２次元射影空間内の２＾（２ｓ）＋２＾ｓ＋１個の直線に対応する。Ｐの第（ｉ，ｊ）成分は、２次元射影空間の第ｉ番目の点を第ｊ番目の直線が通過する場合に限って１とし、そうでない場合は０とする。Ｐの一次独立な行ベクトル数ｔはｔ＝３＾ｓ＋１であって、これらＰの一次独立な行ベクトルからなる（３＾ｓ＋１）×（２＾（２ｓ）＋２＾ｓ＋１）行列がグループテスト行列Ｈとなる。正方行列Ｐは（２＾ｓ）−ｄｉｓｊｕｎｃｔであり、テスト行列拡大ルールＲによって生成されるテストベクトル全体を前記正方行列Ｐの全ての行ベクトルとすることにより、２＾ｓ個以下の改ざん位置を特定することができる。
【０１７３】
［例４］
例えばｓ＝１の時、有限体ＧＦ（２）を座標成分とする２次元射影空間の点の数と直線の数は共に７であり、７個の点の各々に対して７個の直線の各々が通過するか否かによって定められる接続行列は次の［数１］のように計算される。
［数１］
2020065820.tif 000003
【０１７４】
Ｐの第１行から第４行の４つの行ベクトルは一次独立であって、この４つの行ベクトルからなる４×７行列をグループテスト行列Ｈとし、テスト行列拡大ルールＲによって生成されるテスト行列をＰとすれば、行列Ｐは２−ｄｉｓｊｕｎｃｔであるため、２個以下の改ざん位置を特定可能となる。
【０１７５】
表１は、本実施形態により生成されるテスト行列のサイズをｓ＝１から１３まで示したものである。第２カラムは正方行列Ｐの行数（列数）であり、ランク、閾値はそれぞれＰのランクとｄｉｓｊｕｎｃｔパラメータを表す。すなわちランクｘ、閾値ｙであれば、グループテスト行列Ｈは行数ｘで、テスト行列拡大ルールＲにより拡大されたグループテスト行列Ｈ（すなわちＨ＾Ｒ）は、ｙ−ｄｉｓｊｕｎｃｔとなっている。
［表１］
2020065820.tif 000004
【０１７６】
第６の実施形態は、以下のように要約される。上記したＭＡＣタグリスト生成装置１０のグループテスト行列生成部１０２、ＭＡＣタグリスト検証装置２０のグループテスト行列生成および拡大部２０２、又は、第３の実施形態のグループテスト行列生成および拡大部３０３は、以下にて規定されるグループテスト行列Ｈを生成する。
【０１７７】
グループテスト行列Ｈが、正整数ｓについて行数と列数が共に２＾（２ｓ）＋２＾ｓ＋１の正方行列Ｐの一次独立なｔ個の行ベクトルからなる部分行列であって、前記正方行列Ｐは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間上の点と直線によって定まる接続行列であり、テスト行列拡大ルールＲによって生成されるテストベクトルが前記正方行列Ｐの全ての行ベクトルである。
【０１７８】
［第７の実施形態］
続いて、上記した第１〜第３の実施形態におけるグループテスト行列Ｈに変更を加えた第７の実施形態について説明する。
【０１７９】
第７の実施形態におけるグループテスト行列Ｈは、正整数ｓと３以上２＾ｓ＋１以下の整数ｒについて、行数がｒ×（２＾ｓ−１）＋１、列数が２＾（２ｓ）−１＋ｒの行列Ａ＿ｒにおける一次独立なｔ個の行ベクトルからなる部分行列であって、前記行列Ａ＿ｒは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元アフィン空間の原点を通過する予め指定したｒ本の直線上にあるｒ×（２＾ｓ−１）＋１個の点と、それらの点のいずれかを通過する２＾（２ｓ）−１＋ｒ本の直線によって定まる接続行列であり、テスト行列拡大ルールＲによって生成されるテストベクトルを前記行列Ａ＿ｒの全ての行ベクトルとする。
【０１８０】
Ａ＿ｒの第（ｉ，ｊ）成分は、２次元アフィン空間の前記ｒ×（２＾ｓ−１）＋１個の点からなる集合の第ｉ番目の点を、前記２＾（２ｓ）−１＋ｒ本の直線の集合における第ｊ番目の直線が通過する場合に限って１とし、そうでない場合は０とする。行列Ａ＿ｒの一次独立な行ベクトル数ｔは次式［数２］で与えられる。
［数２］
2020065820.tif 000005
【０１８１】
行列Ａ＿ｒのｔ個の一次独立な行ベクトルからなるｔ×（２＾（２ｓ）−１＋ｒ）行列がグループテスト行列Ｈとなる。行列Ａ＿ｒは（ｒ−２）−ｄｉｓｊｕｎｃｔであり、テスト行列拡大ルールＲによって生成されるテストベクトル全体を前記行列Ａ＿ｒの全ての行ベクトルとすることにより、ｒ−２個以下の改ざん位置を特定することができる。
【０１８２】
［例５］
例えばｓ＝２の時、有限体ＧＦ（４）を座標成分とする２次元アフィン平面において、原点を通過する３本の直線上にある合計１０個の点について、それらのいずれかを通過する直線は１８本あり、これの直線が前記１０個の点を通過するか否かによって定められる接続行列は次の［数３］のように計算される。
［数３］
2020065820.tif 000006
【０１８３】
Ａ＿３の第１行から第８行の８つの行ベクトルは一次独立であって、この８つの行ベクトルからなる８×１８行列をグループテスト行列Ｈとし、テスト行列拡大ルールＲによって生成されるテスト行列をＡ＿３とすれば、Ａ＿３は１−ｄｉｓｊｕｎｃｔであるため、本実施形態により１個の改ざん位置を特定可能となる。
【０１８４】
下記［表２］は本発明により生成される行列Ａ＿ｒのサイズをｒ＝２＾ｓ＋１に固定し、ｓ＝１から１３まで示したものである。［表１］と同様に第２カラム、第３カラムはＡ＿ｒの行数と列数であり、ランク、閾値はそれぞれＡ＿ｒのランクとｄｉｓｊｕｎｃｔパラメータを表す。すなわちランクｘ，閾値ｙであれば、グループテスト行列Ｈは行数ｘで、テスト行列拡大ルールＲにより拡大されたテスト行列Ａ＿ｒ（すなわちＨ＾Ｒ）はｙ−ｄｉｓｊｕｎｃｔとなっている。
【０１８５】
［表２］
2020065820.tif 000007
【０１８６】
第７の実施形態は、以下のように要約される。上記したＭＡＣタグリスト生成装置１０のグループテスト行列生成部１０２、ＭＡＣタグリスト検証装置２０のグループテスト行列生成および拡大部２０２、又は、第３の実施形態のグループテスト行列生成および拡大部３０３は、以下にて規定されるグループテスト行列Ｈを生成する。
【０１８７】
グループテスト行列Ｈが、正整数ｓと３以上２＾ｓ＋１以下の整数ｒについて、行数がｒ×（２＾ｓ−１）＋１、列数が２＾（２ｓ）−１＋ｒの行列Ａ＿ｒにおける一次独立なｔ個の行ベクトルからなる部分行列であって、前記行列Ａ＿ｒは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元アフィン空間の原点を通過する予め指定したｒ本の直線上にあるｒ×（２＾ｓ−１）＋１個の点と、それらの点のいずれかを通過する２＾（２ｓ）−１＋ｒ本の直線によって定まる接続行列であり、前記テスト行列拡大ルールＲによって生成されるテストベクトルが前記行列Ａ＿ｒの全ての行ベクトルである。
【０１８８】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。また、以下の説明において、「Ａ及び／又はＢ」は、Ａ及びＢの少なくともいずれかという意味で用いる。また、図中の各ブロックの入出力の接続点には、ポート乃至インタフェースがあるが図示省略する。
【０１８９】
また、上記した第１〜第７の実施形態に示した手順は、ＭＡＣタグリスト生成装置１０、ＭＡＣタグリスト検証装置２０及び集約ＭＡＣ検証システム３０の構成装置として機能するコンピュータ（図１２の９０００）に、これらの装置としての機能を実現させるプログラムにより実現可能である。このようなコンピュータは、図１２のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１０、通信インタフェース９０２０、メモリ９０３０、補助記憶装置９０４０を備える構成に例示される。すなわち、図１２のＣＰＵ９０１０にて、タグリスト計算プログラムやタグリスト検証プログラムを実行し、その補助記憶装置９０４０等に保持された各計算パラメータの更新処理を実施させればよい。
【０１９０】
即ち、上記した第１〜第７の実施形態に示した各装置の各部（処理手段、機能）は、これらの装置に搭載されたプロセッサに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することができる。
【０１９１】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点によるＭＡＣタグリスト生成装置参照）
［第２の形態］
上記したＭＡＣタグリスト生成装置のナンス付線形グループテストＭＡＣ適用部は、
前記グループテスト行列Ｈのｉ行目で１が立つすべての列のインデックスｊ（ｊ＝１，．．．，ｍ）について、
前記アイテムＭ［ｊ］とインデックスｊを前記擬似ランダム関数Ｆに入力し、得られた出力すべての和をとり、さらに、
前記擬似ランダム関数Ｆの出力の和と、前記擬似ランダム関数Ｇへ前記ナンスＮと前記ｉを入力した結果との和をとり、
得られた出力を、前記ｉ番目のテストに対応するＭＡＣ値Ｔ［ｉ］とすることで、
前記ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成する構成を採ることができる。
［第３の形態］
前記グループテスト行列Ｈは、
正整数ｓについて行数と列数が共に２＾（２ｓ）＋２＾ｓ＋１の正方行列Ｐの一次独立なｔ個の行ベクトルからなる部分行列であって、
前記正方行列Ｐは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間上の点と直線によって定まる接続行列であり、
テスト行列拡大ルールＲによって生成されるテストベクトルが前記正方行列Ｐの全ての行ベクトルであるであることが好ましい。
［第４の形態］
前記グループテスト行列Ｈは、
正整数ｓと３以上２＾ｓ＋１以下の整数ｒについて、行数がｒ×（２＾ｓ−１）＋１、列数が２＾（２ｓ）−１＋ｒの行列Ａ＿ｒにおける一次独立なｔ個の行ベクトルからなる部分行列であって、
前記行列Ａ＿ｒは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元アフィン空間の原点を通過する予め指定したｒ本の直線上にあるｒ×（２＾ｓ−１）＋１個の点と、それらの点のいずれかを通過する２＾（２ｓ）−１＋ｒ本の直線によって定まる接続行列であり、
テスト行列拡大ルールＲによって生成されるテストベクトルが前記行列Ａ＿ｒの全ての行ベクトルであるであることが好ましい。
［第５の形態］
前記グループテスト行列Ｈは、
ある整数ｒ＞１についてｍ＝２＾ｒ−１，ｔ＝ｒを満たし、
ｍ＋１行ｍ＋１列のアダマール行列Ｈａｄ（ｒ）から第１行目と第１列目を削除し、さらに行列要素である−１と１のうち、−１を０とすることで得られるｍ行ｍ列バイナリ行列ｍｏｄＨａｄ（ｒ）をとり、前記グループテスト行列Ｈはこの行列の有限体ＧＦ（２）上の基底からなり、
テスト行列拡大ルールＲは、前記グループテスト行列Ｈを前記テスト行列拡大ルールＲに従って行の拡大を行った場合にｍｏｄＨａｄ（ｒ）となることが好ましい。
［第６の形態］
前記グループテスト行列Ｈは、
正の整数ａ，ｂについて（ａ，ｂ）＝ａ！／（ａ−ｂ）！ｂ！をａ個からｂ個選択する場合の数とし、
（（ａ，ｂ））を集合｛１，２，．．．，ａ｝の大きさｂの部分集合の全体としたうえで、
（ｎ，ｄ）×（ｎ，ｋ）２値行列であり、適当な順序で列と行のインデックスを（（ｎ，ｄ））の要素と（（ｎ，ｋ））の要素に対応させたうえで、ある（（ｎ，ｄ））の要素Ｄが（（ｎ，ｋ））の要素Ｋについて、
前記要素Ｄが前記要素Ｋに含まれるときに、
前記行列Ｈの（Ｄ，Ｋ）エントリを１とし、それ以外を０とする、
という行列の有限体ＧＦ（２）上の基底からなる、正の整数のパラメータ（ｎ，ｋ，ｄ）を持つＭａｃｕｌａ行列であることが好ましい。
［第７の形態］
（上記第２の視点によるＭＡＣタグリスト検証装置参照）
［第８の形態］
上記したＭＡＣタグリスト検証装置のナンス付線形グループテストＭＡＣ適用部は、
前記グループテスト行列Ｈのｊ列目で１が立つすべての行のインデックスｉについて、
ｉ番目のアイテムＭ［ｉ］とインデックスｉとを前記擬似ランダム関数Ｆに入力し、得られた出力すべての和をとり、さらに、
前記擬似ランダム関数Ｇへ前記ナンスＮを入力した結果との和をとり、
得られた出力をｊ番目のテストに対応する検証用ＭＡＣ値Ｔ＊［ｉ］とすることで、
前記検証用ＭＡＣタグリスト  Ｔ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成する構成を採ることができる。
［第９の形態］
（上記第３の視点による集約ＭＡＣ検証システム参照）
［第１０の形態］
（上記第４の視点によるＭＡＣタグリスト生成方法参照）
［第１１の形態］
（上記第５の視点によるＭＡＣタグリスト検証方法参照）
なお、上記第７、第９〜第１１の形態は、第１の形態と同様に、第２〜第６の形態に展開することが可能である。また、上記第９の形態の集約ＭＡＣ検証システムは、集約ノードＡと、検証ノードＣとに分解することができる。
【０１９２】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択（部分的削除を含む）が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【産業上の利用可能性】
【０１９３】
本発明は、無線もしくは有線のデータ通信、あるいは、データベース、ファイルシステム、ウィルススキャン、バージョン管理システムにおける改ざんの検知と改ざん位置特定といった用途に適用できる。
【符号の説明】
【０１９４】
１０  ＭＡＣタグリスト生成装置
２０  ＭＡＣタグリスト検証装置
３０  集約ＭＡＣ検証システム
１０１  メッセージ入力部
１０２  グループテスト行列生成部
１０３  ナンス付線形グループテストＭＡＣ適用部
１０４  ＭＡＣタグリスト出力部
２０１  メッセージ入力部
２０２  グループテスト行列生成および拡大部
２０３  ナンス付線形グループテストＭＡＣ適用部
２０４  ＭＡＣタグリスト拡大部
２０５  ＭＡＣタグリスト検証部
２０６  検証結果出力部
３０１  メッセージ入力部
３０２  ＭＡＣ生成部
３０３  グループテスト行列生成および拡大部
３０４  ＭＡＣタグ集約部
３０５  集約ＭＡＣタグリスト拡大部
３０６  拡大集約ＭＡＣタグリスト検証部
３０７  検証結果出力部
９０００  コンピュータ
９０１０  ＣＰＵ
９０２０  通信インタフェース
９０３０  メモリ
９０４０  補助記憶装置
【図１】
2020065820.tif 000008
【図２】
2020065820.tif 000009
【図３】
2020065820.tif 000010
【図４】
2020065820.tif 000011
【図５】
2020065820.tif 000012
【図６】
2020065820.tif 000013
【図７】
2020065820.tif 000014
【図８】
2020065820.tif 000015
【図９】
2020065820.tif 000016
【図１０】
2020065820.tif 000017
【図１１】
2020065820.tif 000018
【図１２】
2020065820.tif 000019
【手続補正書】
【提出日】令和3年3月24日(2021.3.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メッセージ認証コード（ＭＡＣ）生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、ＭＡＣの対象となるｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、を入力するメッセージ入力部と、
生成する前記ＭＡＣの数ｓ（ｓは正の整数）について、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するグループテスト行列生成部と、
前記メッセージＭについて、前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成することで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成するナンス付線形グループテストＭＡＣ適用部と、
前記ナンス付線形グループテストＭＡＣ適用部が求めたＭＡＣタグリストを出力するＭＡＣタグリスト出力部と、
を含むＭＡＣタグリスト生成装置。
【請求項２】
前記ナンス付線形グループテストＭＡＣ適用部は、
前記グループテスト行列Ｈのｉ行目で１が立つすべての列のインデックスｊ（ｊ＝１，．．．，ｍ）について、
前記アイテムＭ［ｊ］とインデックスｊを前記擬似ランダム関数Ｆに入力し、得られた出力すべての和をとり、さらに、
前記擬似ランダム関数Ｆの出力の和と、前記擬似ランダム関数Ｇへ前記ナンスＮと前記ｉを入力した結果との和をとり、
得られた出力を、前記ｉ番目のテストに対応するＭＡＣ値Ｔ［ｉ］とすることで、
前記ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成する請求項１のＭＡＣタグリスト生成装置。
【請求項３】
メッセージ認証コード（ＭＡＣ）タグリスト検証の対象となるナンスＮと、ｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、ｔ個のＭＡＣ値のリストであるＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）と、を入力するメッセージ入力部と、
組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するとともに、前記グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されたテスト行列拡大ルールＲを出力するグループテスト行列生成および拡大部と、
メッセージＭについて前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇと、を用いて、ｊ（ｊ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ＊［ｊ］を生成することで、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成するナンス付線形グループテストＭＡＣ適用部と、
前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊と前記テスト行列拡大ルールＲとを用いて、
前記テスト行列拡大ルールＲが指定する行インデックスの部分集合に対応して前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊のそれぞれで線形結合を行い、
拡大ＭＡＣタグリストｅｘＴ及び検証用拡大ＭＡＣタグリストｅｘＴ＊を出力するＭＡＣタグリスト拡大部と、
前記拡大ＭＡＣタグリストｅｘＴと前記検証用拡大ＭＡＣタグリストｅｘＴ＊とを比較してメッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力するＭＡＣタグリスト検証部と、
前記ＭＡＣタグリスト検証部が出力する検証結果を出力する検証結果出力部と、
を含むＭＡＣタグリスト検証装置。
【請求項４】
前記ナンス付線形グループテストＭＡＣ適用部は、
前記グループテスト行列Ｈのｊ列目で１が立つすべての行のインデックスｉについて、
ｉ番目のアイテムＭ［ｉ］とインデックスｉとを前記擬似ランダム関数Ｆに入力し、得られた出力すべての和をとり、さらに、
前記擬似ランダム関数Ｆの出力の和と、前記擬似ランダム関数Ｇへ前記ナンスＮを入力した結果との和をとり、
得られた出力をｊ番目のテストに対応する検証用ＭＡＣ値Ｔ＊［ｊ］とすることで、
前記検証用ＭＡＣタグリスト  Ｔ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）
を生成する請求項３のＭＡＣタグリスト検証装置。
【請求項５】
ｔ行ｍ列のグループテスト行列Ｈを出力するグループテスト行列生成部と、
メッセージＭ［ｉ］を入力するメッセージ入力部と、前記メッセージＭ［ｉ］に対する単一のメッセージ認証コード（ＭＡＣ）タグＴ［ｉ］を求めて出力するＭＡＣ生成部と、をそれぞれ備えたｍ個のノードから送られた、ｍ個のメッセージとタグの対（Ｍ［１］，Ｔ［１］），．．．，（Ｍ［ｍ］，Ｔ［ｍ］）を入力とし、グループテスト行列Ｈに従ってタグの集約を行い、ｔ個の集約タグからなる集約タグリストＶ＝（Ｖ［１］，  ．．．，  Ｖ［ｔ］）と、メッセージのリストＭ＝（Ｍ［１］，．．．，Ｍ［ｍ］）と、を出力するＭＡＣタグ集約部と、
前記グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されたテスト行列拡大ルールＲを出力するグループテスト行列生成部と、を備える集約ノードと、
前記テスト行列拡大ルールＲに従って、前記集約タグリストＶの要素の線形結合を求めて、拡大集約タグリストｅｘＶを出力する集約ＭＡＣタグリスト拡大部と、
前記メッセージのリストＭと前記拡大集約タグリストｅｘＶ、前記テスト行列拡大ルールＲと、を用いて検証を行い、改ざんされたノードを特定して検証結果として出力する拡大集約ＭＡＣタグリスト検証部と、
前記拡大集約ＭＡＣタグリスト検証部の出力する検証結果の出力を行う検証結果出力部と、
を備える検証ノードと、
を含む集約ＭＡＣ検証システム。
【請求項６】
グループテスト行列Ｈが、正整数ｓについて行数と列数が共に２＾（２ｓ）＋２＾ｓ＋１の正方行列Ｐの一次独立なｔ個の行ベクトルからなる部分行列であって、
前記正方行列Ｐは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元射影空間上の点と直線によって定まる接続行列であり、
前記テスト行列拡大ルールＲによって生成されるテストベクトルが前記正方行列Ｐの全ての行ベクトルである請求項５の集約ＭＡＣ検証システム。
【請求項７】
前記グループテスト行列Ｈが、正整数ｓと３以上２＾ｓ＋１以下の整数ｒについて、行数がｒ×（２＾ｓ−１）＋１、列数が２＾（２ｓ）−１＋ｒの行列Ａ＿ｒにおける一次独立なｔ個の行ベクトルからなる部分行列であって、
前記行列Ａ＿ｒは、有限体ＧＦ（２＾ｓ）を座標成分とする２次元アフィン空間の原点を通過する予め指定したｒ本の直線上にあるｒ×（２＾ｓ−１）＋１個の点と、それらの点のいずれかを通過する２＾（２ｓ）−１＋ｒ本の直線によって定まる接続行列であり、
前記テスト行列拡大ルールＲによって生成されるテストベクトルが前記行列Ａ＿ｒの全ての行ベクトルである請求項５の集約ＭＡＣ検証システム。
【請求項８】
前記グループテスト行列Ｈは、
ある整数ｒ＞１についてｍ＝２＾ｒ−１，ｔ＝ｒを満たし、
ｍ＋１行ｍ＋１列のアダマール行列Ｈａｄ（ｒ）から第１行目と第１列目を削除し、さらに行列要素である−１と１のうち、−１を０とすることで得られるｍ行ｍ列バイナリ行列ｍｏｄＨａｄ（ｒ）をとり、前記グループテスト行列Ｈはこの行列の有限体ＧＦ（２）上の基底からなり、
前記テスト行列拡大ルールＲは、前記グループテスト行列Ｈを前記テスト行列拡大ルールＲに従って行の拡大を行った場合にｍｏｄＨａｄ（ｒ）となる請求項５の集約ＭＡＣ検証システム。
【請求項９】
メッセージ認証コード（ＭＡＣ）生成の処理ごとに重複しない値であるナンス（Ｎｏｎｃｅ）Ｎと、ＭＡＣの対象となるｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、を入力するステップと、
生成する前記ＭＡＣの数ｓ（ｓは正の整数）について、組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するステップと、
前記メッセージＭについて、前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇとを用いて、ｉ（ｉ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ［ｉ］を生成することで、ＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）を生成するステップと、
前記ＭＡＣタグリストを出力するステップと、
を含むＭＡＣタグリスト生成方法。
【請求項１０】
ＭＡＣタグリスト検証の対象となるナンスＮと、ｍ個のアイテムＭ［１］，．．．，Ｍ［ｍ］から構成されるメッセージＭと、ｔ個のＭＡＣ値のリストであるＭＡＣタグリストＴ＝（Ｔ［１］，．．．，Ｔ［ｔ］）と、を入力するステップと、
組み合わせグループテストのパラメータであるｔ行ｍ列のグループテスト行列Ｈを生成するとともに、前記グループテスト行列Ｈの行インデックスの部分集合である、ｖ個（但し、ｖ＞ｔ）の要素で構成されたテスト行列拡大ルールＲを出力するステップと、
メッセージＭについて前記グループテスト行列Ｈと前記ナンスＮと、可変長入力固定長出力の擬似ランダム関数Ｆ、Ｇと、を用いて、ｊ（ｊ＝１，．．．，ｔ）番目のテストに対応するＭＡＣ値Ｔ＊［ｊ］を生成することで、検証用ＭＡＣタグリストＴ＊＝（Ｔ＊［１］，．．．，Ｔ＊［ｔ］）を生成するステップと、
前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊と前記テスト行列拡大ルールＲとを用いて、前記テスト行列拡大ルールＲが指定する行インデックスの部分集合に対応して前記ＭＡＣタグリストＴと前記検証用ＭＡＣタグリストＴ＊のそれぞれで線形結合を行い、拡大ＭＡＣタグリストｅｘＴ及び検証用拡大ＭＡＣタグリストｅｘＴ＊を出力するステップと、
前記拡大ＭＡＣタグリストｅｘＴと前記検証用拡大ＭＡＣタグリストｅｘＴ＊とを比較してメッセージＭの中の各アイテムの検証および改ざん位置の特定を行い、検証結果として出力するステップと、
前記検証結果を出力するステップと、
を含むＭＡＣタグリスト検証方法。
【国際調査報告】
2020065820.tif 000020
2020065820.tif 000021
2020065820.tif 000022
2020065820.tif 000023
2020065820.tif 000024