(57)【特許請求の範囲】
【請求項１】
追加認証データ付認証暗号のための暗号化装置と復号装置を有する暗号化システムであって、
Ｋを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂを１以上の整数、ｂ＝ｒ＋ｃ、ｆをｂビットの置換演算、｜｜をビット数を示す記号とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
前記暗号化装置は、
Ｎを選択し、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの暗号化用初期値を生成し、前記暗号化用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、前記Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする暗号化用初期値設定部を備え、
追加認証データＡのうち前記暗号化用初期値設定部で用いなかったビットで形成されるビット列Ａ’を、追加認証データとして扱って暗号文ＣとタグＴを求め、Ｃ，Ｔ，Ａ，Ｎの組を出力し、
前記復号装置は、
レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの復号用初期値を生成し、前記復号用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、前記Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする復号用初期値設定部を備え、
追加認証データＡのうち前記復号用初期値設定部で用いなかったビットのビット列Ａ’を、追加認証データとして扱って、メッセージＭ’の復号とタグＴ’の生成と行い、タグＴとタグＴ’とを比較する
暗号化システム。
【請求項２】
認証子生成装置と検証装置を有する認証システムであって、
Ｋを前記認証子生成装置と前記検証装置の両方で共有する秘密鍵、Ａを認証対象のデータ、Ｔをタグ、Ｋ，Ａをビット列、ｂを１以上の整数、ｆをｂビットの置換演算とし、
ステートをｂビットのビット列とし、
前記認証子生成装置は、
Ｋを埋め込むことでｂビットの生成用初期値を生成し、前記生成用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする生成用初期値設定部を備え、
データＡのうち前記生成用初期値設定部で用いなかったビットで形成されるビット列Ａ’を認証対象のデータとして扱って、前記生成用初期値設定部が求めたステートを用いてタグＴを求め、Ｔ，Ａの組を出力し、
前記検証装置は、
Ｋを埋め込むことでｂビットの検証用初期値を生成し、前記検証用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする検証用初期値設定部を備え、
データＡのうち前記検証用初期値設定部で用いなかったビットＡ’を認証対象のデータとして扱って、前記検証用初期値設定部が求めたステートを用いてタグＴ’の生成と行い、タグＴとタグＴ’とを比較する
認証システム。
【請求項３】
Ｋを暗号化装置と復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂを１以上の整数、ｂ＝ｒ＋ｃ、ｆをｂビットの置換演算、｜｜をビット数を示す記号とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
Ｎを選択し、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの暗号化用初期値を生成し、前記暗号化用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、前記Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする暗号化用初期値設定部を備えることを特徴とし、
追加認証データＡのうち前記暗号化用初期値設定部で用いなかったビットで形成されるビット列Ａ’を、追加認証データとして扱って暗号文ＣとタグＴを求め、Ｃ，Ｔ，Ａ，Ｎの組を出力する暗号化装置。
【請求項４】
Ｋを暗号化装置と復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂを１以上の整数、ｂ＝ｒ＋ｃ、ｆをｂビットの置換演算、｜｜をビット数を示す記号とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの復号用初期値を生成し、前記復号用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、前記Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする復号用初期値設定部を備えることを特徴とし、
追加認証データＡのうち前記復号用初期値設定部で用いなかったビットのビット列Ａ’を、追加認証データとして扱って、メッセージＭ’の復号とタグＴ’の生成と行い、タグＴとタグＴ’とを比較する復号装置。
【請求項５】
Ｋを認証子生成装置と検証装置の両方で共有する秘密鍵、Ａを認証対象のデータ、Ｔをタグ、Ｋ，Ａをビット列、ｂを１以上の整数、ｆをｂビットの置換演算とし、
ステートをｂビットのビット列とし、
Ｋを埋め込むことでｂビットの生成用初期値を生成し、前記生成用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする生成用初期値設定部を備えることを特徴とし、
データＡのうち前記生成用初期値設定部で用いなかったビットで形成されるビット列Ａ’を認証対象のデータとして扱って、前記生成用初期値設定部が求めたステートを用いてタグＴを求め、Ｔ，Ａの組を出力する認証子生成装置。
【請求項６】
Ｋを認証子生成装置と検証装置の両方で共有する秘密鍵、Ａを認証対象のデータ、Ｔをタグ、Ｋ，Ａをビット列、ｂを１以上の整数、ｆをｂビットの置換演算とし、
ステートをｂビットのビット列とし、
Ｋを埋め込むことでｂビットの検証用初期値を生成し、前記検証用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする検証用初期値設定部を備えることを特徴とし、
データＡのうち前記検証用初期値設定部で用いなかったビットＡ’を認証対象のデータとして扱って、前記検証用初期値設定部が求めたステートを用いてタグＴ’の生成と行い、タグＴとタグＴ’とを比較する検証装置。
【請求項７】
追加認証データ付認証暗号のための暗号化装置と復号装置が実行する暗号化方法であって、
Ｋを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂを１以上の整数、ｂ＝ｒ＋ｃ、ｆをｂビットの置換演算、｜｜をビット数を示す記号とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
前記暗号化装置が、
Ｎを選択し、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの暗号化用初期値を生成し、前記暗号化用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、前記Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする暗号化用初期値設定ステップを実行し、
追加認証データＡのうち前記暗号化用初期値設定ステップで用いなかったビットで形成されるビット列Ａ’を、追加認証データとして扱って暗号文ＣとタグＴを求め、Ｃ，Ｔ，Ａ，Ｎの組を出力し、
前記復号装置が、
レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの復号用初期値を生成し、前記復号用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、前記Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする復号用初期値設定ステップを実行し
追加認証データＡのうち前記復号用初期値設定ステップで用いなかったビットのビット列Ａ’を、追加認証データとして扱って、メッセージＭ’の復号とタグＴ’の生成と行い、タグＴとタグＴ’とを比較する
暗号化方法。
【請求項８】
認証子生成装置と検証装置が実行する認証方法であって、
Ｋを前記認証子生成装置と前記検証装置の両方で共有する秘密鍵、Ａを認証対象のデータ、Ｔをタグ、Ｋ，Ａをビット列、ｂを１以上の整数、ｆをｂビットの置換演算とし、
ステートをｂビットのビット列とし、
前記認証子生成装置が、
Ｋを埋め込むことでｂビットの生成用初期値を生成し、前記生成用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする生成用初期値設定ステップを実行し、
データＡのうち前記生成用初期値設定ステップで用いなかったビットで形成されるビット列Ａ’を認証対象のデータとして扱って、前記生成用初期値設定ステップが求めたステートを用いてタグＴを求め、Ｔ，Ａの組を出力し、
前記検証装置が、
Ｋを埋め込むことでｂビットの検証用初期値を生成し、前記検証用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする検証用初期値設定ステップを実行し、
データＡのうち前記検証用初期値設定ステップで用いなかったビットＡ’を認証対象のデータとして扱って、前記検証用初期値設定ステップが求めたステートを用いてタグＴ’の生成と行い、タグＴとタグＴ’とを比較する
認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、追加認証データ付きの認証暗号を実行する暗号化システム、暗号化装置、復号装置、暗号化方法、メッセージなどの認証を実行する認証システム、認証子生成装置、検証装置、暗号化方法、認証方法に関する。
【背景技術】
【０００２】
追加認証データ付認証暗号とは、メッセージＭの秘匿および、Ｍと追加認証データＡの認証（改ざん検知）を同時に行う共通鍵暗号プリミティブである。暗号化関数と復号関数の２つの関数から構成される。追加認証データ認証暗号では、受信者と送信者はあらかじめ秘密の鍵Ｋを共有しておく。送信者は、メッセージＭ、追加認証データＡに加えて、暗号化関数を呼び出すたびに変化する値（ナンスと呼ばれる）Ｎを選択する。暗号化関数は、Ｍ，Ａ，Ｎに対応する暗号文ＣとタグＴを生成し、（Ｃ，Ｔ，Ａ，Ｎ）の組を受信者に送る。受信者は（Ｃ，Ｔ，Ａ，Ｎ）を受け取るが、この時点でこれらの値が悪意ある第三者によって改ざんされていないという保証がない。受信者は受け取った（Ｃ，Ｔ，Ａ，Ｎ）と自分が保有するＫを用いて復号関数を計算する。復号関数は、メッセージＭ’とタグＴ’を計算する。計算して得られたＴ’と受信したＴが同じ値であれば、受け取った（Ｃ，Ｔ，Ａ，Ｎ）は正しい値であると判断し、復号されたメッセージとしてＭ’を出力する。Ｔ≠Ｔ’であれば、復号に失敗した（データが改ざんされた）という結果を出力する。
【０００３】
非特許文献１に記載されているSPONGEWRAPは、認証暗号の暗号化関数と復号関数の構成法である。保証したい安全性レベル(ビット数)に比べて比較的大きなサイズの置換（bijective map）を用いて暗号化関数、復号関数を構成するという特徴を持つ。
【０００４】
＜SPONGEWRAP＞
SPONGEWRAPの暗号化関数は、ステートと呼ばれるｂビットのデータを、ｂビットの置換ｆ：｛０，１｝ｂ→｛０，１｝ｂと入力データ（Ｎ，Ａ，Ｍ）と鍵Ｋを用いて繰り返しアップデートを行いながらＣとＴを計算する。またｂビットのステートは、レートと呼ばれるｒビットと、キャパシティと呼ばれるｃ（＝ｂ−ｒ）ビットに分割される。暗号化関数の計算の際、ステートの値は予め定められた初期値ＩＶと呼ばれるｂビットの値に初期化され（例えばＩＶ＝０）、ｆによりｂビットの置換が行われ、ステートが更新される。暗号化関数の具体的な計算手順は以下の手順１から手順４で説明される通りである。図１に、SPONGEWRAPの暗号化での計算構造を示す。
【０００５】
＜手順１＞
鍵Ｋをｒ−１ビット毎に分割する。最終ブロックでは１０＊パディングと呼ばれるパディング処理を施す。具体的には、最終ブロックのビット長がｒ−１ビットより短い場合には、１ビットの値“１”を与し、その後ｒ−１ビットになるまでビット“０”を付与する。最終ブロックのビット長が丁度ｒ−１ビットの場合には、次のブロックの先頭のビットとして 1 ビットの値“１”を与し、その後ｒ−１ビットになるまでビット“０”を付与する。
【０００６】
Ｋをｒ−１ビット毎に分割したそれぞれの値に、フレームビットと呼ばれる１ビットの値を連結し、ｒビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“０”とし、最終ブロックのみフレームビットを“１”とする。ｂビットのステートのうちレート部分のｒビットに対し、Ｋとフレームビットを連結したｒビットの値との排他的論理和を計算し、置換ｆを計算する。ｆの出力を新たなステート値とする。この操作をＫの最終ブロックが排他的論理和されるまで続ける。なお、この処理まではあらかじめ行っておくことができるので、手順１までを初期化と呼んでもよい。
【０００７】
＜手順２＞
ナンスＮと追加認証データＡを連結し、ｒ−１ビット毎に分割する。最終ブロックに対しては１０＊パディングを施す。ＮとＡの連結をｒ−１ビット毎に分割したそれぞれの値に、１ビットのフレームビットを連結し、ｒビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“０”とし、最終ブロックのみフレームビットを“１”とする。ｂビットのステートのうち、レート部分のｒビットに対し、ＮもしくはＡとフレームビットを連結した ｒビットの値との排他的論理和を計算し、置換ｆを計算する。ｆの出力を新たなステート値とする。この操作をＮ，Ａの最終ブロックが排他的論理和されるまで続ける。
【０００８】
＜手順３＞
メッセージＭをｒ−１ビット毎に分割する。最終ブロックに対しては１０＊パディングを施す。Ｍの連結をｒ−１ビット毎に分割したそれぞれの値に、１ビットのフレームビットを連結し、ｒビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“１”とし、最終ブロックのみフレームビットを“０”とする。
【０００９】
ｂビットのステートのうち、レート部分のｒビットに対し、Ｍとフレームビットを連結した r ビットの値との排他的論理和を計算する。計算された ｒビットを暗号文のｒビットとして出力する。ステートに対し置換ｆを計算し、ｆの出力を新たなステート値とする。この操作をＭの最終ブロックが排他的論理和されるまで続ける。Ｍのサイズがｒの倍数でない場合、最終ブロックは端数分のみを暗号文として出力し、ステートに排他的論理和する。
【００１０】
＜手順４＞
ｂビットのステートのうち、レート部分のｒビットをタグのｒビットとして出力する。ステートに対し置換ｆを計算し、ｆの出力を新たなステート値とする。この操作をタグのビット数に達するまで続ける。タグ長がｒの倍数でない場合、最後のｒビットの出力を必要な端数に切り捨ててタグの出力とする。
【００１１】
＜復号＞
SPONGEWRAPの復号関数は、暗号化関数とほぼ同様の計算を行う。図２に、SPONGEWRAPの復号での計算構造を示す。ステートはＩＶに初期化され、暗号化関数の手順１，２同じ処理を行う。手順３は暗号化関数と異なっており、ｂビットのステートのうち、レート部分のｒビットとＣのｒビットの排他的論理和をとり、パディングやフレームビット付与の逆手順を通した値をＭ’のｒ−１ビットとする。ｂビットのステートのうち、レート部分のｒビットをＣのｒビットに置き換え、置換ｆを計算する。ｆの出力を新たなステート値とする。この操作をＣの最終ブロックが排他的論理和されるまで続ける。Ｃの最終ブロックのサイズがｒの倍数でない場合、端数分のみをＭ’の生成とステートの置き換えに利用する。手順３終了後、暗号化関数の手順４と同じ処理を行い、タグＴ’を得る。計算したＴ’と受け取ったＴを比較し、同じ値であればＭ’を復号されたメッセージとして出力する。一致しなかった場合は、復号に失敗したという結果を出力する。
【００１２】
＜donkeySponge＞
非特許文献２に示されたdonkeySpongeは、SPONGEWRAPの追加認証データ処理部分を利用してメッセージ認証コードを計算する方法である。図３にdonkeySpongeの計算構造を示す。メッセージ認証コードを生成する目的では、鍵Ｋおよび入力Ａをｂビットステートの全ビットに排他的論理和をしても安全性を損なうことが無く、効率的に入力データを処理することができる。
【００１３】
＜monkeyDuplex＞
非特許文献２に示されたmonkeyDuplexは、SPONGEWRAPのＫとＮの処理方法に工夫を加え、より効率的な計算を可能にする方法である。Ｋのｃビットまでを、ＩＶのｃビットのキャパシティ部分とする。もしくは、Ｋのｃビットまでと、別に定義されたｃビット定数との排他的論理和をＩＶのｃビットのキャパシティ部分とする。いずれの方法も、暗号化関数，復号関数で手順 １（Ｋの処理）におけるｆの計算関数を少なくすることができるため、計算効率が上昇する。なお、Ｋがｃビットに満たない場合、適切なパディングによりＩＶのｃビットがすべて定義されるようにする。
【００１４】
また、Ｎのｒビットまでを、ＩＶのｒビットのレート部分とする。もしくは、Ｎのｒビットまでと、別に定義されたｒビット定数との排他的論理和をＩＶのｒビットのレート部分とする。手順２におけるｆの計算関数を少なくすることができるため、計算効率が上昇する。なお、Ｎがｒビットに満たない場合、適切なパディングによりＩＶのｒビットがすべて定義されるようにする。monkeyDuplexによるステートの初期化およびＫ，Ｎの処理を図 ４に示す。
【００１５】
＜nonce stealing＞
非特許文献３に示されたnonce stealingは、SPONGEWRAPとは異なり、ブロック暗号をベースに設計された追加認証データ付認証暗号で追加認証データＡをより効率的に処理する方法である。ブロック暗号ベースの追加認証データ付認証暗号では、ナンスＮを平文（初期値）としてブロック暗号を計算することが頻繁に行われる。この際、Ｎの長さは平文よりも小さいことが多い。nonce stealingではこの余剰スペースにＡのデータを埋め込むことで、この後に処理されるA のビット数を少なくできる。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】Guido Bertoni, Joan Daemen, Michael Peeters and Gilles Van  Assche,“Duplexing the Sponge: Single-Pass Authenticated Encryption and Other Applications”, SAC 2011, (eds.) Ali Miri and Serge Vaudenay, LNCS, Vol. 7118, pages 320-337, Springer, 2012.
【非特許文献２】Guido Bertoni, Joan Daemen, Michael Peeters and Gilles Van Assche,“Permutation-based encryption, authentication and authenticated encryption”, Workshop Records of DIAC 2012.
【非特許文献３】Phillip Rogaway,“Authenticated-encryption with associated-data”, ACM CCS 2002, (ed.) Vijayalakshmi Atluri, pages 98-107, ACM, 2002.
【発明の概要】
【発明が解決しようとする課題】
【００１７】
nonce stealingの概念をSPONGEWRAPに取り入れると、初期値ＩＶの余剰スペースにＡのデータを埋めることができる。従って、図４において、padの部分にＡのデータを入れることで、この後に処理されるAのビット数を少なくできる。しかし、既存の追加認証データ付認証暗号技術では、最初の置換演算ｆを行う前にＡを処理する手段がnonce stealingしかない。
【００１８】
本発明は、最初の置換演算ｆを行う前にＡを処理する新たな手段を提供することで、処理スピードを向上させる。
【課題を解決するための手段】
【００１９】
本発明の暗号化システムは、追加認証データ付認証暗号のための暗号化装置と復号装置を有する。まず、Ｋを暗号化装置と復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂを１以上の整数、ｂ＝ｒ＋ｃ、ｆをｂビットの置換演算、｜｜をビット数を示す記号とする。また、ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とする。暗号化装置は、Ｎを選択し、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの暗号化用初期値を生成し、前記暗号化用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする暗号化用初期値設定部を備えることを特徴とする。暗号化装置は、追加認証データＡのうち暗号化用初期値設定部で用いなかったビットで形成されるビット列Ａ’を、追加認証データとして扱って暗号文ＣとタグＴを求め、Ｃ，Ｔ，Ａ，Ｎの組を出力する。復号装置は、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの復号用初期値を生成し、前記復号用初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に、前記Ｋを埋め込んだビットを置き換えた上で、ｆにより置換した結果をステートとする復号用初期値設定部を備えることを特徴とする。復号装置は、追加認証データＡのうち復号用初期値設定部で用いなかったビットのビット列Ａ’を、追加認証データとして扱って、メッセージＭ’の復号とタグＴ’の生成と行い、タグＴとタグＴ’とを比較する。
【００２０】
本発明の認証システムは、認証子生成装置と検証装置を有する。Ｋを認証子生成装置と検証装置の両方で共有する秘密鍵、Ａを認証対象のデータ、Ｔをタグ、Ｋ，Ａをビット列、ｂを１以上の整数、ｆをｂビットの置換演算とする。ステートをｂビットのビット列とする。認証子生成装置は、Ｋを埋め込むことでｂビットの生成用初期値を生成し、生成用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする生成用初期値設定部を備えることを特徴とする。認証子生成装置は、データＡのうち生成用初期値設定部で用いなかったビットで形成されるビット列Ａ’を認証対象のデータとして扱って、生成用初期値設定部が求めたステートを用いてタグＴを求め、Ｔ，Ａの組を出力する。検証装置は、Ｋを埋め込むことでｂビットの検証用初期値を生成し、前記検証用初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする検証用初期値設定部を備えることを特徴とする。検証装置は、データＡのうち検証用初期値設定部で用いなかったビットＡ’を認証対象のデータとして扱って、検証用初期値設定部が求めたステートを用いてタグＴ’の生成と行い、タグＴとタグＴ’とを比較する。
【発明の効果】
【００２１】
排他的論理和の計算コストは、ビットの置換演算ｆの計算コストと比較すると無視できるほど小さい。そして、本発明の暗号化システムと認証システムによれば、初期化を行うとき（最初の置換演算ｆを行う前）に排他的論理和の計算で認証対象のデータの一部を用いるので、ビットの置換演算ｆの回数を少なくできる。したがって、処理スピードを向上できる。
【図面の簡単な説明】
【００２２】
【図１】SPONGEWRAPの暗号化での計算構造を示す図。
【図２】SPONGEWRAPの復号での計算構造を示す図。
【図３】donkeySpongeの計算構造を示す図。
【図４】monkeyDuplexによるステートの初期化およびＫ，Ｎの処理を示す図。
【図５】実施例１の暗号化システムの機能構成例を示す図。
【図６】実施例１の暗号化での計算構造の例を示す図。
【図７】実施例１の復号での計算構造の例を示す図。
【図８】実施例１の暗号化装置の処理フローを示す図。
【図９】実施例１の復号装置の処理フローを示す図。
【図１０】実施例１変形例１の暗号化での計算構造の例を示す図。
【図１１】実施例１変形例１の復号での計算構造の例を示す図。
【図１２】実施例２の認証システムの機能構成例を示す図。
【図１３】実施例２の認証子生成での計算構造の例を示す図。
【図１４】実施例２の検証での計算構造の例を示す図。
【図１５】実施例２の認証子生成装置の処理フローを示す図。
【図１６】実施例２の検証装置の処理フローを示す図。
【発明を実施するための形態】
【００２３】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００２４】
図５に実施例１の暗号化システムの機能構成例を示す。図６は実施例１の暗号化での計算構造の例を示す図、図７は実施例１の復号での計算構造の例を示す図である。また、図８は実施例１の暗号化装置の処理フロー、図９は実施例１の復号装置の処理フローを示す図である。実施例１の暗号化システムは、ネットワーク８００を介して接続された暗号化装置１００と復号装置２００で構成される。まず、Ｋを暗号化装置１００と復号装置２００の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグとする。Ｋ，Ａ，Ｍ，Ｃ，Ｔ，Ｎはビット列で表現される。なお、Ｎはすべてのビットが“０”のビット列を除くビット列である。タグＴはあらかじめビット数ＬＴが定められている。ｒ，ｃ，ｂ，Ｐ，Ｑ，Ｓを１以上の整数、ｂ＝ｒ＋ｃ、ｐを１以上Ｐ以下の整数、ｑを１以上Ｑ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、｜｜をビット数を示す記号とする。また、ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とする。
【００２５】
実施例１の暗号化装置１００の特徴は初期値設定部１１０である。初期値設定部１１０は、Ｎを選択し、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの初期値を生成する。そして、Ｋを埋め込んだビットを、初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に置き換えた上で、ｆにより置換した結果をステートとする。暗号化装置１００のその他の構成部は従来と同じ構成もよいし、何らかの改良を施した構成でもよい。暗号化装置１００は、追加認証データＡのうち初期値設定部１１０で用いなかったビットで形成されるビット列Ａ’を、追加認証データとして扱って暗号文ＣとタグＴを求め、Ｃ，Ｔ，Ａ，Ｎの組を出力する。「排他的論理和」はビット単位の排他的論理和であり、同じ位置のビット同士の排他的論理和を行う演算である。例えば、ビット列“１０１００”とビット列“００１１０”との排他的論理和の結果は“１００１０”である。
【００２６】
実施例１の復号装置２００の特徴も初期値設定部２１０である。初期値設定部２１０は、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの初期値を生成する。そして、Ｋを埋め込んだビットを、Ｋを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に置き換えた上で、ｆにより置換した結果をステートとする。復号装置２００のその他の構成部は従来と同じ構成もよいし、何らかの改良を施した構成でもよい。復号装置２００は、追加認証データＡのうち初期値設定部２１０で用いなかったビットのビット列Ａ’を、追加認証データとして扱って、メッセージＭ’の復号とタグＴ’の生成と行い、タグＴとタグＴ’とを比較する。
【００２７】
＜暗号化装置＞
図１に示した従来技術に上述の特徴を適用した例が図５，６，８に示された暗号化装置１００である。図５に示した暗号化装置１００は、初期値設定部１１０、追加認証データ分割部１２０、メッセージ分割部１３０、追加認証データ計算部１４０、暗号化部１５０、タグ計算部１６０、出力部１９０を備える。
【００２８】
初期値設定部１１０は、上述のように、Ｎを選択し、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの初期値を生成する。そして、Ｋを埋め込んだビットを、初期値のＫを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に置き換えた上で、ｆにより置換した結果をステートとする（Ｓ１１０）。「埋め込む」とは、例えば、Ｎのビット数がｒより小さいときはパディングによってｒビットにした上でレート部分にすることを意味している。ｆはSPONGEWRAPで説明した置換と同じであり、あらかじめ暗号化装置１００と復号装置２００との間で定めておく。なお、nonce stealingの概念とも組み合わせてもよい。すなわち、さらに以下のような処理を行ってもよい。初期値設定部１１０は、レート部分にＮを埋め込む処理では、｜Ｎ｜がｒよりも小さいときには、追加認証データＡの中の（ｒ−｜Ｎ｜）ビットとＮとをレート部分とし、キャパシティ部分にＫを埋め込む処理では、｜Ｋ｜がｃよりも小さいときには、追加認証データＡの中の別の（ｃ−｜Ｋ｜）ビットとＫとをキャパシティ部分とし、排他的論理和の計算で用いる｜Ｋ｜ビットは、初期値の生成に用いていないビットとすればよい。この場合、「追加認証データＡのうち初期値設定部１１０で用いなかったビットで形成されるビット列Ａ’」とは、レート部分に使用された（ｒ−｜Ｎ｜）ビット、キャパシティ部分に使用された（ｃ−｜Ｋ｜）ビット、排他的論理和に使用された｜Ｋ｜ビット以外のビットで形成されるビット列である。図６では、１１０を付した点線で囲まれた部分が初期値設定部に相当する。
【００２９】
図６の例では、追加認証データ分割部１２０は、追加認証データとして扱われるビット列Ａ’を、パディングを用いてｒビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する（Ｓ１２０）。パディングとしては、例えば１０＊パディングを用いればよい。また、ｒの整数倍になるようにパディングを行った上で分割してもよいし、ｒより少ないビット数ごとに分割した上でｒビットになるようにパディングを行ってもよい。図６では、１２０を付した点線で囲まれた部分が追加認証データ分割部に相当する。
【００３０】
メッセージ分割部１３０は、メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割する（Ｓ１３０）。パディングとしては、例えば１０＊パディングを用いればよい。図６では、１３０を付した点線で囲まれた部分がメッセージ分割部に相当する。
【００３１】
追加認証データ計算部１４０、ステートのレート部分に対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ１４０）。図６では、１４０を付した点線で囲まれた部分が追加認証データ計算部に相当する。
【００３２】
暗号化部１５０は、ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐまで繰り返す。そして、暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める（Ｓ１５０）。「結合処理を用いて暗号文Ｃを求める」とは、単に暗号ブロックｄ１，…，ｄＰを結合して暗号文Ｃとすること、および、結合した上でパディング部分を取り除いて暗号文Ｃとすることを含み意味である。図６では、１５０を付した点線で囲まれた部分が暗号化部に相当する。
【００３３】
タグ計算部１６０は、Ｓ＝１の場合はステートのレート部分からタグＴを求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとし、レート部分をタグブロックｔｓとする処理を、ｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１，…，ｔＳを用いてタグＴを求める（Ｓ１６０）。Ｓ＝１の場合は、レート部分をそのままタグＴとしてもよいし、レート部の中からビット数ＬＴだけを切り出してタグＴとしてもよい。Ｓ≧２の場合は、例えば、タグブロックｔ１，…，ｔＳを結合した結果をタグＴとしてもよいし、タグブロックｔ１，…，ｔＳを結合した結果からビット数ＬＴよりも多いビット分を切り捨てて（ビット数ＬＴ分を切り出して）タグＴとしてもよい。また、各タグブロックｔｓから所定のビットを切り出した後、それらを結合してタグＴとしてもよい。なお、Ｓは、ｒ×ＳがタグＴのビット数ＬＴ以上となるようにあらかじめ定めておけばよい。図６では、１６０を付した点線で囲まれた部分がタグ計算部に相当する。出力部１９０は、Ｃ，Ｔ，Ａ，Ｎの組を出力する（Ｓ１９０）。出力されたＣ，Ｔ，Ａ，Ｎの組が復号装置２００に送信される。
【００３４】
＜復号装置＞
図２に示した従来技術に上述の特徴を適用した例が図５，７，９に示された復号装置２００である。図５に示した復号装置２００は、初期値設定部２１０、追加認証データ分割部２２０、暗号文分割部２３０、追加認証データ計算部２４０、復号部２５０、タグ計算部２６０、検証部２７０、入力部２９０を備える。入力部２９０は、暗号化装置１００が送信したＣ，Ｔ，Ａ，Ｎの組を取得する（Ｓ２９０）。
【００３５】
初期値設定部２１０は、上述のように、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込むことでｂビットの初期値を生成する。そして、Ｋを埋め込んだビットを、Ｋを埋め込んだビットと追加認証データＡの中の｜Ｋ｜ビットとの排他的論理和に置き換えた上で、ｆにより置換した結果をステートとする（Ｓ２１０）。なお、nonce stealingの概念とも組み合わせてもよい。すなわち、さらに以下のような処理を行ってもよい。初期値設定部２１０は、レート部分にＮを埋め込む処理では、｜Ｎ｜がｒよりも小さいときには、追加認証データＡの中の（ｒ−｜Ｎ｜）ビットとＮとをレート部分とし、キャパシティ部分にＫを埋め込む処理では、｜Ｋ｜がｃよりも小さいときには、追加認証データＡの中の別の（ｃ−｜Ｋ｜）ビットとＫとをキャパシティ部分とし、排他的論理和の計算で用いる｜Ｋ｜ビットは、初期値の生成に用いていないビットとすればよい。この場合、「追加認証データＡのうち初期値設定部２１０で用いなかったビットで形成されるビット列Ａ’」とは、レート部分に使用された（ｒ−｜Ｎ｜）ビット、キャパシティ部分に使用された（ｃ−｜Ｋ｜）ビット、排他的論理和に使用された｜Ｋ｜ビット以外のビットで形成されるビット列である。図７では、２１０を付した点線で囲まれた部分が初期値設定部に相当する。
【００３６】
図７の例では、追加認証データ分割部２２０は、追加認証データとして扱われるビット列Ａ’を、パディングを用いてｒビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する（Ｓ２２０）。図７では、２２０を付した点線で囲まれた部分が追加認証データ分割部に相当する。
【００３７】
暗号文分割部２３０は、暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する（Ｓ２３０）。暗号文Ｃのビット数がｒの整数倍でないときは、パディングによってｒビットごとの暗号ブロックに分割すればよい。図７では、２３０を付した点線で囲まれた部分が暗号文分割部に相当する。
【００３８】
追加認証データ計算部２４０は、ステートのレート部分に対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ２４０）。図７では、２４０を付した点線で囲まれた部分が追加認証データ計算部に相当する。
【００３９】
復号部２５０は、ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐまで繰り返す。ここでの「排他的論理和」もビット単位の排他的論理和であり、同じ位置のビット同士の排他的論理和を行う演算である。そして、メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする（Ｓ２５０）。図７では、２５０を付した点線で囲まれた部分が復号部に相当する。
【００４０】
タグ計算部２６０は、Ｓ＝１の場合はステートのレート部分からタグＴ’を求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとし、レート部分をタグブロックｔｓ’とする処理を、ｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める（Ｓ２６０）。図７では、２６０を付した点線で囲まれた部分がタグ計算部に相当する。検証部２７０は、タグＴとタグＴ’とを比較する（Ｓ２７０）。復号装置２００は、Ｔ＝Ｔ’のときはメッセージＭ’を復号されたメッセージとする。Ｔ≠Ｔ’のときは復号に失敗したという結果を出力する。
【００４１】
＜効果＞
排他的論理和の計算コストは、ビットの置換演算ｆの計算コストと比較すると無視できるほど小さい。そして、本発明の暗号化システムによれば、初期化を行うとき（最初の置換演算ｆを行う前）に排他的論理和の計算で認証対象のデータの一部を用いるので、ビットの置換演算ｆの回数を少なくできる。したがって、処理スピードを向上できる。
【００４２】
［変形例１］
実施例１では、図１，２に示した従来技術に本発明の特徴である初期値設定部を適用した例を示した。しかし、初期値設定部１１０，２１０以外の構成は、図１，２の構成に限定する必要はない。上述のように、暗号化装置１００は、追加認証データＡのうち初期値設定部１１０で用いなかったビットで形成されるビット列Ａ’を、追加認証データとして扱って暗号文ＣとタグＴを求め、Ｃ，Ｔ，Ａ，Ｎの組を出力すればよい。また、復号装置２００は、追加認証データＡのうち初期値設定部２１０で用いなかったビットのビット列Ａ’を、追加認証データとして扱って、メッセージＭ’の復号とタグＴ’の生成と行い、タグＴとタグＴ’とを比較すればよい。
【００４３】
図１０に本変形例の暗号化での計算構造の例を、図１１に本変形例の復号での計算構造の例を示す。暗号化システムの機能構成例は図５と同じ、暗号化装置の処理フローは図８と同じ、復号装置の処理フローは図９と同じである。実施例１と処理の内容が異なるのは、追加認証データ分割部１２０、追加認証データ計算部１４０、暗号化部１５０、追加認証データ分割部２２０、追加認証データ計算部２４０、復号部２５０であり、他の構成部の処理は同じである。
【００４４】
図１０の例では、追加認証データ分割部１２０は、追加認証データとして扱われるビット列Ａ’を、１０＊１パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する（Ｓ１２０）。１０＊１パディングは、最初と最後のビットを“１”とし、残りのビットを“０”とするパディングである。図１０では、１２０を付した点線で囲まれた部分が追加認証データ分割部に相当する。
【００４５】
追加認証データ計算部１４０、ステート（ｂビット）に対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ１４０）。図１０では、１４０を付した点線で囲まれた部分が追加認証データ計算部に相当する。
【００４６】
暗号化部１５０は、次の（１）〜（３）の処理を行う（Ｓ１５０）。図１０では、１５０を付した点線で囲まれた部分が暗号化部に相当する。
【００４７】
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００４８】
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。なお、ｇは０〜２ｃ−１の整数からなる有限体の元と０と１以外のあらかじめ定めた定数との有限体上での乗算である。
【００４９】
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める。「結合処理を用いて暗号文Ｃを求める」とは、単に暗号ブロックｄ１，…，ｄＰを結合して暗号文Ｃとすること、および、結合した上でパディング部分を取り除いて暗号文Ｃとすることを含み意味である。
【００５０】
図１１の例では、追加認証データ分割部２２０は、追加認証データとして扱われるビット列Ａ’を、１０＊１パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する（Ｓ２２０）。図１１では、２２０を付した点線で囲まれた部分が追加認証データ分割部に相当する。
【００５１】
追加認証データ計算部２４０は、ステート（ｂビット）に対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ２４０）。図１１では、２４０を付した点線で囲まれた部分が追加認証データ計算部に相当する。
【００５２】
復号部２５０は、次の（１）〜（３）の処理を行う（Ｓ２５０）。図１１では、２５０を付した点線で囲まれた部分が復号部に相当する。
【００５３】
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００５４】
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。ｇは暗号化装置１００で用いた有限体上での定数の乗算と同じである。
【００５５】
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする。
【００５６】
このような構成でも、本発明の特徴である初期値設定部１１０，２１０を適用すれば、初期化を行うとき（最初の置換演算ｆを行う前）に排他的論理和の計算で認証対象のデータの一部を用いるので、ビットの置換演算ｆの回数を少なくできる。つまり、実施例１と同じ効果が得られる。
【実施例２】
【００５７】
図１２に実施例２の認証システムの機能構成例を示す。図１３は実施例２の認証子生成での計算構造の例を示す図、図１４は実施例２の検証での計算構造の例を示す図である。また、図１５は実施例２の認証子生成装置の処理フロー、図１６は実施例２の検証装置の処理フローを示す図である。実施例２の認証システムは、ネットワーク８００を介して接続された認証子生成装置３００と検証装置４００で構成される。まず、Ｋを認証子生成装置３００と検証装置４００の両方で共有する秘密鍵、Ａを認証対象のデータ、Ｔをタグとする。Ｋ，Ａ，Ｔはビット列で表現される。タグＴはあらかじめビット数ＬＴが定められている。ｒ，ｃ，ｂ，Ｑ，Ｓを１以上の整数、ｂ＝ｒ＋ｃ、ｑを１以上Ｑ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、｜｜をビット数を示す記号とする。また、ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とする。
【００５８】
実施例２の認証子生成装置３００の特徴は初期値設定部３１０である。初期値設定部３１０は、Ｋを埋め込むことでｂビットの初期値を生成し、初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする。認証子生成装置３００は、データＡのうち初期値設定部３１０で用いなかったビットで形成されるビット列Ａ’を認証対象のデータとして扱って、初期値設定部が求めたステートを用いてタグＴを求め、Ｔ，Ａの組を出力する。
【００５９】
実施例２の検証装置４００の特徴は初期値設定部４１０である。初期値設定部４１０は、Ｋを埋め込むことでｂビットの初期値を生成し、初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする。検証装置４００は、データＡのうち初期値設定部４１０で用いなかったビットＡ’を認証対象のデータとして扱って、初期値設定部４１０が求めたステートを用いてタグＴ’の生成と行い、タグＴとタグＴ’とを比較する。
【００６０】
＜認証子生成装置＞
図１２に示した認証子生成装置３００は、初期値設定部３１０、認証データ分割部３２０、認証データ計算部３４０、タグ計算部３６０、出力部３９０を備える。初期値設定部３１０は、上述のように、Ｋを埋め込むことでｂビットの初期値を生成し、初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする（Ｓ３１０）。「埋め込む」とは、例えば、Ｋのビット数がｂより小さいときはパディングによってｂビットにすることを意味している。
【００６１】
認証データ分割部３２０は、認証対象のデータとして扱われるビット列Ａ’を、パディングを用いてｂビットごとの認証データブロックａ１’，…，ａＱ’に分割する（Ｓ３２０）。パディングとしては、例えば１０＊パディングを用いればよい。図１３では、３２０を付した点線で囲まれた部分が追加認証データ分割部に相当する。
【００６２】
認証データ計算部３４０は、ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ３４０）。図１３では、３４０を付した点線で囲まれた部分が追加認証データ計算部に相当する。
【００６３】
タグ計算部３６０は、Ｓ＝１の場合はステートのレート部分からタグＴを求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとし、レート部分をタグブロックｔｓとする処理を、ｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１，…，ｔＳを用いてタグＴを求める（Ｓ３６０）。Ｓ＝１の場合は、レート部分をそのままタグＴとしてもよいし、レート部の中からビット数ＬＴだけを切り出してタグＴとしてもよい。Ｓ≧２の場合は、例えば、タグブロックｔ１，…，ｔＳを結合した結果をタグＴとしてもよいし、タグブロックｔ１，…，ｔＳを結合した結果からビット数ＬＴよりも多いビット分を切り捨てて（ビット数ＬＴ分を切り出して）タグＴとしてもよい。また、各タグブロックｔｓから所定のビットを切り出した後、それらを結合してタグＴとしてもよい。なお、Ｓは、ｒ×ＳがタグＴのビット数ＬＴ以上となるようにあらかじめ定めておけばよい。図１３では、３６０を付した点線で囲まれた部分がタグ計算部に相当する。出力部３９０は、Ｔ，Ａの組を出力する（Ｓ３９０）。出力されたＴ，Ａの組が検証装置４００に送信される。
【００６４】
＜検証装置＞
図１２に示した検証装置４００は、初期値設定部４１０、認証データ分割部４２０、認証データ計算部４４０、タグ計算部４６０、検証部４７０、入力部４９０を備える。入力部４９０は、認証子生成装置３００が送信したＴ，Ａの組を取得する（Ｓ４９０）。
【００６５】
初期値設定部４１０は、上述のように、Ｋを埋め込むことでｂビットの初期値を生成し、初期値とデータＡの中のｂビットとの排他的論理和をｆにより置換した結果をステートとする（Ｓ４１０）。図１４では、４１０を付した点線で囲まれた部分が初期値設定部に相当する。
【００６６】
認証データ分割部４２０は、認証対象のデータとして扱われるビット列Ａ’を、パディングを用いてｂビットごとの認証データブロックａ１’，…，ａＱ’に分割する（Ｓ４２０）。図１４では、４２０を付した点線で囲まれた部分が認証データ分割部に相当する。
【００６７】
認証データ計算部４４０は、ステートに対して認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ４４０）。図１４では、４４０を付した点線で囲まれた部分が認証データ計算部に相当する。
【００６８】
タグ計算部４６０は、Ｓ＝１の場合はステートのレート部分からタグＴ’を求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとし、レート部分をタグブロックｔｓ’とする処理を、ｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める（Ｓ４６０）。図１４では、４６０を付した点線で囲まれた部分がタグ計算部に相当する。検証部４７０は、タグＴとタグＴ’とを比較する（Ｓ４７０）。Ｔ＝Ｔ’のときは認証子が正しいこと示す情報を出力する。Ｔ≠Ｔ’のときは認証に失敗したという結果を出力する。
【００６９】
＜効果＞
本発明の認証システムによれば、初期化を行うとき（最初の置換演算ｆを行う前）に排他的論理和の計算で認証対象のデータの一部を用いるので、ビットの置換演算ｆの回数を少なくできる。したがって、処理スピードを向上できる。
【００７０】
［プログラム、記録媒体］
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００７１】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【００７２】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００７３】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００７４】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００７５】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００７６】
１００  暗号化装置
１１０，２１０，３１０，４１０  初期値設定部
１２０，２２０  追加認証データ分割部    １３０  メッセージ分割部
１４０，２４０  追加認証データ計算部    １５０  暗号化部
１６０，２６０，３６０，４６０  タグ計算部
１９０，３９０  出力部                  ２００  復号装置
２３０  暗号文分割部                    ２５０  復号部
２７０，４７０  検証部                  ２９０，４９０  入力部
３００  認証子生成装置                  ３２０，４２０  認証データ分割部
３４０，４４０  認証データ計算部        ４００  検証装置
８００  ネットワーク
【図１】
0006273226.tif 000002
【図２】
0006273226.tif 000003
【図３】
0006273226.tif 000004
【図４】
0006273226.tif 000005
【図５】
0006273226.tif 000006
【図６】
0006273226.tif 000007
【図７】
0006273226.tif 000008
【図８】
0006273226.tif 000009
【図９】
0006273226.tif 000010
【図１０】
0006273226.tif 000011
【図１１】
0006273226.tif 000012
【図１２】
0006273226.tif 000013
【図１３】
0006273226.tif 000014
【図１４】
0006273226.tif 000015
【図１５】
0006273226.tif 000016
【図１６】
0006273226.tif 000017