(57)【要約】  認証暗号化装置１０は、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段１１と、平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段１２とを備える。
2020095382.tif 000002
【特許請求の範囲】
【請求項１】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段と、
前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備える
ことを特徴とする認証暗号化装置。
【請求項２】
暗号化手段は、暗号化関数の出力にマスク値を加算することによって平文ブロックを暗号化する
請求項１記載の認証暗号化装置。
【請求項３】
認証タグを生成する生成手段を備え、
前記生成手段は、
算出されたチェックサムを所定のビット数のデータに変換し、
変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、
暗号化されたチェックサムを前記所定のビット数以下のビット数のデータに変換することによって前記認証タグを生成する
請求項１または請求項２記載の認証暗号化装置。
【請求項４】
生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化する
請求項３記載の認証暗号化装置。
【請求項５】
暗号化手段は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、平文を構成しビット数が前記所定のビット数以下である最終ブロックとを加算することによって前記最終ブロックを暗号化する
請求項３または請求項４記載の認証暗号化装置。
【請求項６】
算出手段は、
平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、
生成手段は、
前記最終ブロックを前記所定のビット数のデータに変換し、
変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する
請求項５記載の認証暗号化装置。
【請求項７】
第１ビット列のビット数は、
所定のビット数の半分の数であり、
算出手段は、
平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、
生成手段は、
前記最終ブロックを前記所定のビット数のデータに変換し、
変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、
暗号化されたチェックサムを前記第１ビット列のビット数の２つのデータに分割し、
前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する
請求項５記載の認証暗号化装置。
【請求項８】
暗号化手段は、
平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に２つのブロックの組ごとに分け、
分けられた組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の偶数番目の平文ブロックとを加算することによって当該組の奇数番目の暗号文ブロックを生成し、
マスク値が加算された前記奇数番目の暗号文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の奇数番目の平文ブロックとを加算することによって当該組の偶数番目の暗号文ブロックを生成し、
分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、前記最終組の中の偶数番目の平文ブロックとを加算することによって前記最終組の偶数番目の暗号文ブロックを生成し、
マスク値が加算された前記最終組の偶数番目の暗号文ブロックが入力された暗号化関数の出力と、前記最終組の中の奇数番目の平文ブロックとを加算することによって前記最終組の奇数番目の暗号文ブロックを生成する
請求項３または請求項４記載の認証暗号化装置。
【請求項９】
算出手段は、
分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、
平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和を計算し、
計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、
生成手段は、
変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する
請求項８記載の認証暗号化装置。
【請求項１０】
第１ビット列のビット数は、
所定のビット数の半分の数であり、
算出手段は、
分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、
平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第１ビット列における対応ビットの排他的論理和を計算し、
計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、
生成手段は、
暗号化されたチェックサムを前記第１ビット列のビット数の２つのデータに分割し、
前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する
請求項８記載の認証暗号化装置。
【請求項１１】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号手段と、
前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備える
ことを特徴とする認証復号装置。
【請求項１２】
復号手段は、復号関数の出力にマスク値を加算することによって暗号文ブロックを復号する
請求項１１記載の認証復号装置。
【請求項１３】
認証タグを生成する生成手段を備え、
前記生成手段は、
算出されたチェックサムを所定のビット数のデータに変換し、
変換されたチェックサムと、復号手段で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で、前記所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、
暗号化されたチェックサムを前記所定のビット数以下のビット数のデータに変換することによって前記認証タグを生成する
請求項１１または請求項１２記載の認証復号装置。
【請求項１４】
生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化する
請求項１３記載の認証復号装置。
【請求項１５】
復号処理の検証結果を出力する出力手段を備え、
前記出力手段は、
暗号文と共に入力された認証タグと一致する認証タグが生成されると受理を表す検証結果を出力し、
前記入力された認証タグと一致しない認証タグが生成されると不受理を表す検証結果を出力する
請求項１３または請求項１４記載の認証復号装置。
【請求項１６】
出力手段は、
受理を表す検証結果と共に復号された平文を出力し、
不受理を表す検証結果と共にエラーメッセージを出力する
請求項１５記載の認証復号装置。
【請求項１７】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化し、
前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する
ことを特徴とする認証暗号化方法。
【請求項１８】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号し、
前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する
ことを特徴とする認証復号方法。
【請求項１９】
コンピュータに、
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化処理、および
前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理
を実行させるための認証暗号化プログラム。
【請求項２０】
コンピュータに、
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号処理、および
前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理
を実行させるための認証復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラムに関し、特に共通鍵暗号が使用される認証暗号化方式が適用された認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラムに関する。
【背景技術】
【０００２】
認証暗号(Authenticated Encryption;AE) は、事前に共有された秘密鍵を用いて、平文メッセージ（以下、単に平文と呼ぶ。）に対する暗号化と、改ざんの検知に用いられる認証タグ（以下、単にタグとも呼ぶ。）の計算を同時に実行する技術である。【０００３】
通信路を通過する通信内容にAEが適用されると、盗聴に対する内容の秘匿と、不正な改ざんに対する検知が共に実現される。すなわち、通信内容がより強く保護される。【０００４】
以下、AEにおける基本的な入出力の例を示す。本例では、秘密鍵K を共有する２者として、Alice とBob を考える。また、AEの暗号化関数をAEnc、AEの復号関数をADecとする。また、暗号化対象の平文をM とする。また、初期ベクトルと呼ばれる変数N を導入する。【０００５】
最初に、AEで暗号化されたメッセージをAlice がBob に通信する場合を説明する。まず、Alice が変数N を生成した後、(C,T) = AEnc_K(N,M) の計算を行う。AEnc_Kは、秘密鍵K がパラメータである関数である。また、C は暗号文である。また、T はタグと呼ばれる、固定長の改ざん検出用の変数である。Alice は、生成された(N,C,T) をBob に送信する。【０００６】
Bob は、情報(N',C',T')を受信する。次いで、Bob は、復号処理としてADec_K(N',C',T')を計算する。もし、通信の途中で改ざんが行われており、(N',C',T') ≠ (N,C,T) である場合、ADec_K(N',C',T')は、改ざんが行われたことを示すエラーメッセージになる。【０００７】
もし、通信の途中で改ざんが行われておらず、(N',C',T') = (N,C,T)である場合、ADec_K(N',C',T') = Mとなる。すなわち、暗号化された平文M が、正しく復号される。上記の認証暗号化方式の例として、非特許文献１に記載されているCCM や、非特許文献２に記載されているGCM がある。【０００８】
また、AEの中には、入出力長が特定の長さである部品が組み合わせられて実現されるAEがある。具体的には、組み合わせられる部品は、特定のビット長のデータが入力されると、入力されたデータと同じビット長のデータを出力する。【０００９】
以下、上記の部品を、認証暗号におけるプリミティブと呼ぶ。また、プリミティブに関する入出力長を、n ビットとする。プリミティブの例として、ブロック暗号、鍵なしの暗号学的置換、およびTweakable ブロック暗号が挙げられる。【００１０】
例えば、ブロック暗号は、k ビットの秘密鍵K とn ビットの平文M とを入力として、n ビットの暗号文C を出力する。ブロック暗号による処理は、E(K, M) = C と表される。【００１１】
また、鍵なしの暗号学的置換は、n ビットの平文M を入力として、n ビットの暗号文C を出力する。鍵なしの暗号学的置換による処理は、P(M) = Cと表される。【００１２】
また、Tweakable ブロック暗号は、k ビットの秘密鍵K と、twビットのTweak （調整値）Twと、n ビットの平文M とを入力として、n ビットの暗号文C を出力する。Tweakable ブロック暗号による処理は、TE(K, Tw, M) = Cと表される。【００１３】
上記のTweakable ブロック暗号は、ブロック暗号E や鍵なしの暗号学的置換P でも実現される。例えば、非特許文献３に記載されている方式が用いられると、ブロック暗号E の秘密鍵K と異なる鍵L を持ち、入出力長がn ビットである鍵付き関数H も使用されて、Tweakable ブロック暗号による処理は、以下の式で表される。【００１４】
LRW(K, Tw, M) = E(K, H(L, Tw) + M) + H(L, Tw) ・・・式（１）【００１５】
なお、式（１）における「＋」は、ビットごとのXOR （排他的論理和）を表す。以下、特に断りのない限り、本明細書中の式における「＋」は、ビットごとのXOR を表す。【００１６】
非特許文献３に記載されている方式に従うと、鍵付き関数H がAXU ユニバーサルハッシュ関数である場合、式（１）が表す処理は、安全なTweakable ブロック暗号を実現する。すなわち、ランダムに選ばれた秘密鍵L と、任意の異なる２つの入力X とX'に関して、確率Pr[H(L, X) + H(L, X') = c]がいかなるn ビットのc に対しても小さい場合、式（１）が表す処理は、安全なTweakable ブロック暗号を実現する。【００１７】
また、非特許文献４に記載されているXEX*モードが用いられると、暗号化処理全体の鍵がブロック暗号の１つの鍵のみになる。なお、XEX*モードは、Tweakable ブロック暗号のXEX モードとXEモードの総称である。XEX*モードのTweakable ブロック暗号による処理は、Tweak Tw = (i, N) に対して、以下の式で表される。【００１８】
XEX(K, Tw, M) = E(K, mult(2i, E(K, N)) + M) + mult(2i, E(K, N))
・・・式（２）
XE(K, Tw, M) = E(K, mult(2i, E(K, N)) + M)  ・・・式（３）【００１９】
なお、式（２）〜式（３）における mult（・，・）は、ガロア体GF(2n)上の２つの元の乗算を表す。また、式（２）〜式（３）における2iは、ガロア体GF(2n)上の２のｉ乗を表す。【００２０】
また、非特許文献５に記載されているTEM モードが用いられると、鍵なしの暗号学的置換P と、秘密鍵K を持ち入出力長がn ビットである鍵付き関数H が使用されて、Tweakable ブロック暗号による処理は、以下の式で表される。【００２１】
TEM(K, Tw, M) = P(H(K, Tw) + M) + H(K, Tw) ・・・式（４）【００２２】
非特許文献５に記載されている方式に従うと、鍵付き関数H がAXU ユニバーサルハッシュ関数であり、かつ鍵付き関数H がuniform である場合、式（４）が表す処理は、安全なTweakable ブロック暗号を実現する。【００２３】
なお、鍵付き関数H がAXU ユニバーサルハッシュ関数である場合、鍵付き関数H は、ランダムに選ばれた秘密鍵K と、任意の異なる２つの入力X とX'に関して、確率Pr[H(K, X) + H(K, X') = c]がいかなるn ビットのc に対しても小さいという条件を満たす。【００２４】
また、鍵付き関数H がuniform である場合、鍵付き関数H は、ランダムに選ばれた秘密鍵K と、任意の入力X と任意の出力Y に関して、確率Pr[H(K, X) = Y] が十分に小さいという条件を満たす。【００２５】
AEを実現する方法として、例えば汎用結合がある。汎用結合は、暗号化方式として安全な方式と、改ざん検知方法として安全な方式を組み合わせる方法である。汎用結合の例として、暗号化方式であるCTR モードと改ざん検知方法であるGHASH が組み合わせられたGCM が挙げられる。【００２６】
また、汎用結合で生成された方式も含めて、１ブロックの平文あたりのプリミティブの使用回数が漸近的に２回である方式を、レート1/2 の方式と呼ぶ。レート1/2 の方式には、例えば上述したGCM 、CCM がある。【００２７】
また、１ブロックの平文あたりのプリミティブの使用回数が漸近的に１回である方式を、レート１の方式と呼ぶ。レート１の方式には、例えば特許文献１〜特許文献４に記載されている認証暗号化方式であるOCB や、特許文献５に記載されている認証暗号化方式であるOTR がある。【００２８】
OCB は、XEX*モードのTweakable ブロック暗号が用いられて構成されるレート１の認証暗号化方式である。XEX*モードのTweakable ブロック暗号は、XEX モードのTweakable ブロック暗号と、XEモードのTweakable ブロック暗号とで構成される。OCB において、XEX*モードのTweakable ブロック暗号による処理は、ブロック暗号E が使用されて、以下の式で表される。【００２９】
XEX(K, Tw, M) = E(K, Δ(K, Tw) + M) + Δ(K, Tw) ・・・式（５）
XE(K, Tw, M) = E(K, Δ(K, Tw) + M) ・・・式（６）【００３０】
なお、式（５）〜式（６）におけるマスクの値Δ(K, Tw) は、Tweak Twと秘密鍵K とから一意に定められる値である。例えば、上述したように、マスクの値は、ガロア体上の乗算が用いられて計算されてもよい。OCB では、XEX*モードのTweakable ブロック暗号がECB モードのように用いられることによって、平文が暗号化される。【００３１】
次に、OCB による改ざん検知方法を説明する。最初に、OCB は、平文をn ビットごとに区切る。次いで、OCB は、区切られたn ビットの平文の排他的論理和をビットごとにとる。ビットごとに排他的論理和をとることによって得られたn ビットの値は、チェックサムと呼ばれる。【００３２】
具体的には、平文M がm 個のn ビットの平文ブロックM[1],M[2],・・・,M[m] で構成される場合、チェックサムSUM は、以下のように計算される。【００３３】
SUM = M[1] + M[2] + ・・・ + M[m] ・・・式（７）【００３４】
次いで、OCB は、得られたチェックサムをXEモードのTweakable ブロック暗号で暗号化する。暗号化されたチェックサムがタグになる。【００３５】
また、OTR は、XEモードのTweakable ブロック暗号が用いられて構成されるレート１の認証暗号化方式である。OCB と同様に、OTR も、改ざん検知方法としてチェックサムを計算し、計算されたチェックサムを暗号化することによってタグを生成する。【００３６】
但し、全ての平文ブロックの排他的論理和をビットごとにとることによってチェックサムを得る代わりに、OTR は、偶数番目の平文ブロックのみの排他的論理和をビットごとにとることによってチェックサムを得る。【００３７】
具体的には、平文M がm 個のn ビットの平文ブロックM[1],M[2],・・・,M[m] で構成され、m が偶数である場合、チェックサムSUM は、以下のように計算される。【００３８】
SUM = M[2] + M[4] + ・・・ + M[m-2] + M[m] ・・・式（８）【００３９】
また、OCB やOTR 以外のレート１の認証暗号化方式の例として、非特許文献６に記載されているTEM モードを用いたOPP がある。
【先行技術文献】
【特許文献】
【００４０】
【特許文献１】米国特許第７０４６８０２号明細書
【特許文献２】米国特許第７２００２２７号明細書
【特許文献３】米国特許第７９４９１２９号明細書
【特許文献４】米国特許第８３２１６７５号明細書
【特許文献５】米国特許出願公開第２０１６／０１７３２７６号明細書
【非特許文献】
【００４１】
【非特許文献１】NIST Special Publication 800-38C Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentialit
【非特許文献２】NIST Special Publication 800-38D Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC
【非特許文献３】M. Liskov, R. L. Rivest, D. Wagner, "Tweakable Block Ciphers," Advances in Cryptology - CRYPTO 2002, 22nd Annual International Cryptology Conference, Santa Barbara, California, USA, August 18-22, 2002, Proceedings. Lecture Notes in Computer Science 2442 Springer 2002, pp. 31-46.
【非特許文献４】Phillip Rogaway, "Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC," Advances in Cryptology - ASIACRYPT 2004, 10th International Conference on the Theory and Application of Cryptology and Information Security, Jeju Island, Korea, December 5-9, 2004, Proceedings. Lecture Notes in Computer Science 3329 Springer 2004, pp. 16-31.
【非特許文献５】Cogliati, B., Lampe, R., Seurin, Y, "Tweaking Even-Mansour ciphers. In: Gennaro, R., Robshaw, M.J.B. (eds.)," CRYPTO 2015, Part I. LNCS, vol. 9215, pp. 189-208. Springer, Heidelberg (2015).
【非特許文献６】Granger, Robert and Jovanovic, Philipp Svetolik and  Mennink, Bart and Neves, Samuel, "Improved Masking for Tweakable Blockciphers with  Applications to Authenticated Encryption," JNCS, vol. 9665, pp. 31. 263-293, 2016.
【発明の概要】
【発明が解決しようとする課題】
【００４２】
OCB やOTR 等に代表されるn ビットのチェックサムを計算する認証暗号化方式には、ステートサイズが大きくなるという課題がある。ステートサイズは、処理単位ごとに保持することが求められるメモリサイズを意味する。ステートサイズは、暗号化方式の１つの評価基準である。【００４３】
例えば、OCB の場合、１ブロック暗号化を処理単位と考える。OCB における１ブロック暗号化は、以下の式で表される。【００４４】
C[i] = E(K, Δ(K, Tw) + M[i]) + Δ(K, Tw) ・・・式（９）【００４５】
なお、式（９）におけるK は、ブロック暗号E の秘密鍵である。また、M[i]は、i 番目の平文ブロックである。また、C[i]は、i 番目の暗号文ブロックである。また、Twは、Tweak（調整値）である。また、マスクの値Δ(K, Tw) は、Tweak Twと秘密鍵K とから一意に定められる値である。【００４６】
１ブロック暗号化が処理単位である場合、OCB のステートサイズは、3nビットになる。3nビットの内訳は、１つの平文ブロックの暗号化用のメモリ分のn ビットと、マスクの値Δ(K, Tw) を保持するメモリ分のn ビットと、計算されたチェックサムの値を保持するメモリ分のn ビットである。【００４７】
なお、マスクの値とチェックサムの値が保持される理由は、(i+1) 番目の平文ブロックの処理に、i 番目の平文ブロックの処理で用いられたマスクの値とチェックサムの値が求められるためである。【００４８】
ワイヤレスセンサやRFID(Radio Frequency IDentifier)タグ等、計算リソースに制約が課されているハードウェアに暗号化方式が実装される場合、許容されるステートサイズの大きさは、回路規模の大きさに比例する。よって、暗号化方式の実装、特にハードウェアへの暗号化方式の実装において、ステートサイズの大きさは、重要な評価基準である。【００４９】
しかし、チェックサムを計算する認証暗号化方式のステートサイズは、暗号化処理や復号処理のみを行う暗号化方式のステートサイズよりも、チェックサムのビット数であるn ビット分増加するという性質を有する。【００５０】
上述したOCB の場合、チェックサムの計算に求められるステートサイズは、ステートサイズ全体の1/3 を占める。しかし、ステートサイズが大きい方が暗号化方式の安全性がより高まるため、認証暗号化方式の実装者は、ステートサイズを安易に削減できない。【００５１】
上記のように、ステートサイズと暗号の安全性との関係は、通常トレードオフの関係に該当する。すなわち、ステートサイズが安易に削られると、漸近的な安全性が低下する。なお、漸近的な安全性は、n を無限大に発散させたときに得られる安全性オーダの値に相当する。【００５２】
［発明の目的］
そこで、本発明は、上述した課題を解決する、漸近的な安全性を低下させずにチェックサムの計算で増大するステートサイズを削減できる認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラムを提供することを目的とする。
【課題を解決するための手段】
【００５３】
本発明による認証暗号化装置は、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段と、平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備えることを特徴とする。【００５４】
本発明による認証復号装置は、所定のビット数のデータが入力されると所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号手段と、暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備えることを特徴とする。【００５５】
本発明による認証暗号化方法は、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化し、平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出することを特徴とする。【００５６】
本発明による認証復号方法は、所定のビット数のデータが入力されると所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号し、暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出することを特徴とする。【００５７】
本発明による認証暗号化プログラムは、コンピュータに、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化処理、および平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理を実行させることを特徴とする。【００５８】
本発明による認証復号プログラムは、コンピュータに、所定のビット数のデータが入力されると所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号処理、および暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理を実行させることを特徴とする。
【発明の効果】
【００５９】
本発明によれば、漸近的な安全性を低下させずにチェックサムの計算で増大するステートサイズを削減できる。
【図面の簡単な説明】
【００６０】
【図１】本発明による認証暗号化装置の第１の実施形態の構成例を示すブロック図である。
【図２】第１の実施形態の認証暗号化装置１００による認証暗号化処理の動作を示すフローチャートである。
【図３】本発明による認証復号装置の第２の実施形態の構成例を示すブロック図である。
【図４】第２の実施形態の認証復号装置２００による認証復号処理の動作を示すフローチャートである。
【図５】認証暗号化装置１００による認証暗号化処理の具体例を示す説明図である。
【図６】認証暗号化装置１００による認証暗号化処理の他の具体例を示す説明図である。
【図７】本発明による認証暗号化装置のハードウェア構成例を示す説明図である。
【図８】本発明による認証復号装置のハードウェア構成例を示す説明図である。
【図９】本発明による認証暗号化装置の概要を示すブロック図である。
【図１０】本発明による認証復号装置の概要を示すブロック図である。
【発明を実施するための形態】
【００６１】
実施形態１．
［構成の説明］
以下、本発明の実施形態を、図面を参照して説明する。図１は、本発明による認証暗号化装置の第１の実施形態の構成例を示すブロック図である。
【００６２】
上述したように、認証暗号化方式がTweakable ブロック暗号で使用されるプリミティブに関するビット長と同じビット長のチェックサムを計算する場合、ステートサイズが増大するという課題がある。
【００６３】
使用されるプリミティブに関するビット長をn としたとき、本実施形態の認証暗号化装置１００は、上記の課題を解決するために、s<n であるs ビットのチェックサムを計算する。
【００６４】
ステートサイズと暗号の安全性との関係は、通常トレードオフの関係に該当する。すなわち、ステートサイズが削られると、暗号の安全性が低下する。しかし、本実施形態において、n/2<=s<nであるとき、漸近的な安全性は、s=n のときの漸近的な安全性から変化しない。以下、上記の理由と共に、本実施形態の認証暗号化装置１００の具体的な構成および動作を説明する。
【００６５】
図１に示すように、本実施形態の認証暗号化装置１００は、平文入力手段１１０と、初期ベクトル生成手段１２０と、第１暗号化手段１３０と、第１計算手段１４０と、第２暗号化手段１５０と、暗号文出力手段１６０とを備える。本実施形態の認証暗号化装置１００は、タグを生成するためにチェックサムを計算する。
【００６６】
以下、認証暗号化装置１００を構成する各手段を説明する。平文入力手段１１０は、暗号化対象の平文M が入力される機能を有する。
【００６７】
初期ベクトル生成手段１２０は、過去に自身が生成した値と異なる初期ベクトルを生成する機能を有する。例えば、初期ベクトル生成手段１２０は、最初に任意の固定値を出力し、出力した値を記憶する。２回目以降に初期ベクトルを出力する場合、初期ベクトル生成手段１２０は、記憶されている直前に生成された初期ベクトルの値に１が加えられた値を出力してもよい。
【００６８】
上記の場合、直前に生成された初期ベクトルがN であるとき、新たな初期ベクトルN'は、N' = N+1になる。すなわち、初期ベクトル生成手段１２０による初期ベクトルN の更新処理は、更新関数f(N) = N+1で表現される。
【００６９】
また、初期ベクトルN のデータ長は、n ビットとする。仮に初期ベクトルN がn ビットより短い場合、初期ベクトル生成手段１２０は、初期ベクトルN に適当にパディングする。
【００７０】
第１暗号化手段１３０は、初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、平文入力手段１１０が出力する平文M を、Tweakable ブロック暗号で暗号化する機能を有する。
【００７１】
具体的には、第１暗号化手段１３０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。第１暗号化手段１３０は、暗号化された結果を暗号文C として出力する。
【００７２】
第１暗号化手段１３０は、通常のn ビットのデータを入出力するブロック暗号E や、鍵なしの暗号学的置換P を用いてもTweakable ブロック暗号を実現できる。例えば、平文M がm 個のn ビットの平文ブロックM[1],M[2],・・・,M[m] で構成され、第１暗号化手段１３０がXEX モードのTweakable ブロック暗号で平文M を暗号化する場合、平文ブロックM[i](1<=i<=m) は、秘密鍵K が用いられるブロック暗号E で以下のように暗号化される。
【００７３】
C[i] = E(K, mult(2i, E(K, N)) + M[i]) + mult(2i, E(K, N)) ・・・式（１０）
【００７４】
なお、式（１０）における「＋」は、ビットごとの排他的論理和を表す。また、式（１０）におけるmult（・，・）は、ガロア体GF(2n)上の２つの元の乗算を表す。また、式（１０）における2iは、ガロア体GF(2n)上の２のｉ乗を表す。
【００７５】
また、第１暗号化手段１３０は、非特許文献３に記載されているLRW や、非特許文献５に記載されているTEM モードを用いても、Tweakable ブロック暗号を実現できる。
【００７６】
第１計算手段１４０は、平文入力手段１１０が出力する平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める機能を有する。
【００７７】
例えば、第１計算手段１４０は、全平文ブロックの上位s ビットの対応するビット（m 個の平文ブロックの同一位置のビット）ごとの排他的論理和(XOR) を、チェックサムSUM として出力してもよい。もし最終の平文ブロックがs ビットに満たない場合、第１計算手段１４０は、適当なパディングを最終の平文ブロックに施した上で、ビットごとに排他的論理和をとればよい。
【００７８】
また、第１計算手段１４０は、排他的論理和の代わりに算術加算や巡回符号(CRC:Cyclic Redundancy Check) 等を使用してチェックサムSUM を計算してもよい。
【００７９】
第２暗号化手段１５０は、第１計算手段１４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。パディング関数は、例えばn ビットに満たないチェックサムSUM の部分を、100 ・・・0 で埋めればよい。
【００８０】
次いで、第２暗号化手段１５０は、変換された後のチェックサムSUM を、初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。具体的には、第２暗号化手段１５０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【００８１】
次いで、第２暗号化手段１５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換する。変換されたt ビットの値が、生成されたタグT である。短縮関数は、例えば入力に対して上位t ビットの値のみを出力する関数である。
【００８２】
第２暗号化手段１５０は、非特許文献３に記載されているLRW 、非特許文献４に記載されているXEX*モード、または非特許文献５に記載されているTEM モード等の第１暗号化手段１３０が使用しているTweakable ブロック暗号の構成方法と同様の構成方法を用いてよい。しかし、第２暗号化手段１５０には、第１暗号化手段１３０で用いられたTweak と異なるTweak をTweakable ブロック暗号で用いることが求められる。
【００８３】
例えば、第１暗号化手段１３０が(N, 1),(N, 2),・・・,(N, m) の各Tweak を用いた場合、第２暗号化手段１５０は、(N, m+1)のTweak を用いて、Tweakable ブロック暗号での暗号化を実行すればよい。例えば、上記のタグT の算出例は、以下のように表される。
【００８４】
SUM_n = SUM || 10(n-s-1) ・・・式（１１）
Tag_n = E(K, mult(2(m+1), E(K, N)) + SUM_n) ・・・式（１２）
T = msb_t(Tag_n) ・・・式（１３）
【００８５】
なお、式（１１）で使用されている表記「A || B」は、文字列A と文字列B の結合を表す。また、式（１１）における0(n-s-1)は、0 が(n-s-1) 個並べられたビット列を表す。なお、100=1 である。また、式（１３）におけるmsb_t(・) は、入力に対して上位t ビットの値を出力する関数である。
【００８６】
暗号文出力手段１６０は、第１暗号化手段１３０が出力する暗号文C と、第２暗号化手段１５０が出力するタグT とを連結して出力する機能を有する。
【００８７】
［動作の説明］
以下、本実施形態の認証暗号化装置１００の認証暗号化を実行する動作を図２を参照して説明する。図２は、第１の実施形態の認証暗号化装置１００による認証暗号化処理の動作を示すフローチャートである。
【００８８】
最初に、平文入力手段１１０に、暗号化対象の平文M が入力される（ステップS101）。平文入力手段１１０は、入力された平文M を第１暗号化手段１３０と第２暗号化手段１５０に入力する。
【００８９】
次いで、初期ベクトル生成手段１２０は、過去に生成した値と異なる値の初期ベクトルN を生成する（ステップS102）。初期ベクトル生成手段１２０は、生成された初期ベクトルN を第１暗号化手段１３０と第２暗号化手段１５０に入力する。
【００９０】
次いで、第１暗号化手段１３０は、初期ベクトル生成手段１２０から入力された初期ベクトルN を用いて、平文入力手段１１０から入力された平文M を、Tweakable ブロック暗号で暗号化する（ステップS103）。第１暗号化手段１３０は、暗号化で得られた暗号文C を暗号文出力手段１６０に入力する。
【００９１】
次いで、第１計算手段１４０は、平文入力手段１１０から入力された平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める（ステップS104）。第１計算手段１４０は、求められたチェックサムSUM を第２暗号化手段１５０に入力する。
【００９２】
次いで、第２暗号化手段１５０は、第１計算手段１４０から入力されたs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。次いで、第２暗号化手段１５０は、初期ベクトル生成手段１２０から入力された初期ベクトルN を用いて、変換された後のチェックサムSUM を、Tweakable ブロック暗号で暗号化する。
【００９３】
次いで、第２暗号化手段１５０は、暗号化されたチェックサムSUM を、適当な短縮関数を用いてt<=nであるt ビットの値に変換することによって、タグT を生成する（ステップS105）。第２暗号化手段１５０は、生成されたタグT を暗号文出力手段１６０に入力する。
【００９４】
次いで、暗号文出力手段１６０は、第１暗号化手段１３０から入力された暗号文C と、第２暗号化手段１５０から入力されたタグT とを連結した上で出力する（ステップS106）。出力した後、認証暗号化装置１００は、認証暗号化処理を終了する。
【００９５】
［効果の説明］
本実施形態の認証暗号化装置１００は、認証暗号での暗号化処理におけるチェックサム計算のために求められるメモリサイズを、漸近的な安全性を低下させずにn ビットからs ビットに削減できる。よって、認証暗号化装置１００は、安全性を保ったまま、ステートサイズを(n-s) ビット削減できる。
【００９６】
通常、ステートサイズと暗号の安全性との関係は、トレードオフの関係に該当する。すなわち、ステートサイズが削られると、暗号の安全性が低下する。しかし、本実施形態の認証暗号化装置１００が実行する認証暗号化処理において、n/2<=s<nのときの漸近的な安全性は、s=n のときの漸近的な安全性と同様である。
【００９７】
その理由は、s=n のときの漸近的な安全性では、第１暗号化手段１３０および第２暗号化手段１５０で用いられるTweakable ブロック暗号の構成による安全性のオーダと、タグ長による安全性のオーダが支配的である。
【００９８】
すなわち、チェックサム計算に関するビット長から導かれる安全性のオーダは、認証暗号全体の安全性に漸近的には寄与しない。従って、チェックサムのビット長s がn/2<=s<nのとき、漸近的な安全性のオーダは変化しない。
【００９９】
但し、s<n/2 であり、かつタグ長t がt>=n/2である場合、チェックサム計算に関するビット長から導かれる安全性のオーダは、認証暗号全体の安全性に対して支配的になるため、漸近的な安全性は保たれない。タグ長t がt<n/2 である場合、チェックサムのビット長s がs>=tとされれば、漸近的な安全性は損なわれない。
【０１００】
実施形態２．
［構成の説明］
次に、本発明による認証復号装置の第２の実施形態を、図面を参照して説明する。図３は、本発明による認証復号装置の第２の実施形態の構成例を示すブロック図である。
【０１０１】
図３に示すように、本実施形態の認証復号装置２００は、暗号文入力手段２１０と、初期ベクトル入力手段２２０と、復号手段２３０と、第２計算手段２４０と、第３暗号化手段２５０と、タグ検査手段２６０と、平文出力手段２７０とを備える。
【０１０２】
以下、認証復号装置２００を構成する各手段を説明する。暗号文入力手段２１０は、連結された復号対象の暗号文C とタグT とが入力される機能を有する。また、初期ベクトル入力手段２２０は、復号に使用される対象の初期ベクトルN が入力される機能を有する。
【０１０３】
復号手段２３０は、初期ベクトル入力手段２２０が出力する初期ベクトルN を用いて、暗号文入力手段２１０が出力する暗号文C を、Tweakable ブロック暗号で復号する機能を有する。
【０１０４】
具体的には、復号手段２３０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。復号手段２３０は、復号された結果を平文M として出力する。
【０１０５】
復号手段２３０は、第１の実施形態の第１暗号化手段１３０の逆関数として作用する。例えば、暗号文C がm 個のn ビットの暗号文ブロックC[1],C[2],・・・,C[m] で構成され、第１暗号化手段１３０がXEX モードのTweakable ブロック暗号で平文M を暗号化している場合、C[i](1<=i<=m) は、秘密鍵K が用いられたブロック暗号E と、ブロック暗号E に対する復号関数D とで以下のように復号される。
【０１０６】
M[i] = D(K, mult(2i, E(K, N)) + C[i]) + mult(2i, E(K, N)) ・・・式（１４）
【０１０７】
なお、式（１４）における「＋」は、ビットごとの排他的論理和を表す。また、式（１４）におけるmult（・，・）は、ガロア体GF(2n)上の２つの元の乗算を表す。また、式（１４）における2iは、ガロア体GF(2n)上の２のｉ乗を表す。
【０１０８】
第２計算手段２４０は、復号手段２３０が出力する平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める機能を有する。第２計算手段２４０が有する機能は、第１の実施形態の第１計算手段１４０が有する機能と同様である。
【０１０９】
第３暗号化手段２５０は、第２計算手段２４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０１１０】
次いで、第３暗号化手段２５０は、変換された後のチェックサムSUM を、初期ベクトル入力手段２２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。具体的には、第３暗号化手段２５０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【０１１１】
次いで、第３暗号化手段２５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換する。変換されたt ビットの値が、生成されたタグT’である。すなわち、第３暗号化手段２５０が有する機能は、第１の実施形態の第２暗号化手段１５０が有する機能と同様である。
【０１１２】
タグ検査手段２６０は、暗号文入力手段２１０が出力するタグT と、第３暗号化手段２５０が出力するタグT’とを比較する機能を有する。比較されたタグT とタグT’が一致した場合、タグ検査手段２６０は、「ACK 」を示す検証結果B を出力する。
【０１１３】
また、比較されたタグT とタグT’が一致しない場合、タグ検査手段２６０は、「NCK 」を示す検証結果B を出力する。なお、「ACK 」は「受理」を意味し、「NCK 」は「不受理」を意味する。
【０１１４】
平文出力手段２７０は、復号手段２３０が出力する平文M と、タグ検査手段２６０が出力する検証結果B とを入力とする。「ACK 」を示す検証結果B が入力された場合、平文出力手段２７０は、平文M を出力する。また、「NCK 」を示す検証結果B が入力された場合、平文出力手段２７０は、エラーメッセージ⊥を出力する。
【０１１５】
［動作の説明］
以下、本実施形態の認証復号装置２００の認証復号を実行する動作を図４を参照して説明する。図４は、第２の実施形態の認証復号装置２００による認証復号処理の動作を示すフローチャートである。
【０１１６】
最初に、暗号文入力手段２１０に、復号対象の暗号文C と、タグT とが入力される（ステップS201）。暗号文入力手段２１０は、入力された暗号文C を復号手段２３０に入力する。また、暗号文入力手段２１０は、入力されたタグT をタグ検査手段２６０に入力する。
【０１１７】
次いで、初期ベクトル入力手段２２０に、復号に使用される対象の初期ベクトルN が入力される（ステップS202）。初期ベクトル入力手段２２０は、入力された初期ベクトルN を復号手段２３０と第３暗号化手段２５０とに入力する。
【０１１８】
次いで、復号手段２３０は、初期ベクトル入力手段２２０から入力された初期ベクトルN を用いて、暗号文入力手段２１０から入力された暗号文C を、Tweakable ブロック暗号で復号する（ステップS203）。復号手段２３０は、復号された平文M を、第２計算手段２４０と平文出力手段２７０とに入力する。
【０１１９】
次いで、第２計算手段２４０は、復号手段２３０から入力された平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める（ステップS204）。第２計算手段２４０は、求められたチェックサムSUM を第３暗号化手段２５０に入力する。
【０１２０】
次いで、第３暗号化手段２５０は、第２計算手段２４０から入力されたs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。次いで、第３暗号化手段２５０は、初期ベクトル入力手段２２０が出力する初期ベクトルN を用いて、変換された後のチェックサムSUM をTweakable ブロック暗号で暗号化する。
【０１２１】
次いで、第３暗号化手段２５０は、暗号化されたチェックサムSUM を、適当な短縮関数を用いてt<=nであるt ビットの値に変換することによって、タグT’を生成する（ステップS205）。第３暗号化手段２５０は、生成されたタグT’をタグ検査手段２６０に入力する。
【０１２２】
次いで、タグ検査手段２６０は、暗号文入力手段２１０から入力されたタグT と、第３暗号化手段２５０から入力されたタグT’とを比較する。比較されたタグT とタグT’が一致した場合、タグ検査手段２６０は、「ACK 」を示す検証結果B を平文出力手段２７０に入力する。また、比較されたタグT とタグT’が一致しない場合、タグ検査手段２６０は、「NCK 」を示す検証結果B を平文出力手段２７０に入力する（ステップS206）。
【０１２３】
次いで、平文出力手段２７０は、タグ検査手段２６０から入力された検証結果B が「ACK 」を示す場合、復号手段２３０から入力された平文M を出力する。また、平文出力手段２７０は、タグ検査手段２６０から入力された検証結果B が「NCK 」を示す場合、エラーメッセージ⊥を出力する（ステップS207）。平文M またはエラーメッセージ⊥を出力した後、認証復号装置２００は、認証復号処理を終了する。
【０１２４】
［効果の説明］
本実施形態の認証復号装置２００は、認証暗号での復号処理におけるチェックサム計算のために求められるメモリサイズを、漸近的な安全性を低下させずにn ビットからs ビットに削減できる。よって、認証復号装置２００は、安全性を保ったまま、ステートサイズを(n-s) ビット削減できる。
【０１２５】
すなわち、認証復号装置２００は、認証暗号での復号処理において、第１の実施形態の認証暗号化装置１００が奏する効果と同様の効果を奏する。また、認証復号装置２００が上記の効果を奏する理由は、認証暗号化装置１００が効果を奏する理由と同様である。
【０１２６】
以下、第１の実施形態の認証暗号化装置１００および第２の実施形態の認証復号装置２００の具体例をいくつか説明する。
【０１２７】
＜具体例１＞
本具体例における認証暗号化装置１００と認証復号装置２００は、特許文献１〜特許文献４に記載されているOCB や、非特許文献６に記載されているOPP に適用可能である。以下、本具体例における認証暗号化装置１００を構成する各手段が有する具体的な機能をそれぞれ説明する。
【０１２８】
最初に、認証暗号化装置１００の平文入力手段１１０が出力する平文M が、(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]とで構成されているとする。
【０１２９】
認証暗号化装置１００の第１暗号化手段１３０は、認証暗号化装置１００の初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで平文M を暗号化する。
【０１３０】
具体的には、第１暗号化手段１３０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【０１３１】
例えば、第１暗号化手段１３０は、平文ブロックM[1],M[2],・・・,M[m-1] に対して、秘密鍵K 、Tweak(N, i)(1<=i<m) を用いて、C[i] = TE(K, (N, i), M[i])と暗号化する。
【０１３２】
また、第１暗号化手段１３０は、平文ブロックM[m]に対して、n ビットの固定値Fix 、および秘密鍵K 、Tweak(N, m) を用いて、C[m] = TE(K, (N, m), Fix) + M[m]と暗号化する。最終的に、第１暗号化手段１３０は、暗号文C = C[1]C[2]・・・C[m]を生成する。
【０１３３】
例えば、XEX*モードのTweakable ブロック暗号で暗号化する場合、第１暗号化手段１３０は、以下のように平文ブロックM[i](1<=i<m)を暗号化する。
【０１３４】
C[i] = E(K, mult(2i, E(K, N)) + M[i]) + mult(2i, E(K, N)) ・・・式（１５）
【０１３５】
また、第１暗号化手段１３０は、以下のように平文ブロックM[m]を暗号化する。
【０１３６】
C[m] = M[m] + msb_n’(Pad_n)  (Pad_n = E(K, mult(2m, E(K, N)) + 0n))
・・・式（１６）
【０１３７】
なお、式（１５）〜式（１６）における「＋」は、ビットごとの排他的論理和を表す。また、式（１５）〜式（１６）におけるmult（・，・）は、ガロア体GF(2n)上の２つの元の乗算を表す。また、式（１５）における2iは、ガロア体GF(2n)上の２のｉ乗を表す。また、式（１６）における「0n」は、０がｎ個並べられたビット列を表す。また、式（１６）におけるmsb_n’（・）は、入力に対して上位n’ビットの値を出力する関数である。
【０１３８】
また、認証暗号化装置１００の第１計算手段１４０は、認証暗号化装置１００の平文入力手段１１０が出力する平文M の平文ブロックM[i]のうち、任意のs<n であるs ビットの部分系列Ms[i] を加算する。
【０１３９】
具体的には、第１計算手段１４０は、Ms[1],Ms[2],・・・,Ms[m-1]のビットごとの排他的論理和をチェックサムSUM とする。次いで、第１計算手段１４０は、s ビットのチェックサムSUM と、最終の平文ブロックM[m]とを出力する。
【０１４０】
例えば、M[i]をMs[i] に変換するために、第１計算手段１４０は、M[i]の上位s ビットの値を抽出すればよい。M[i]の上位s ビットの値が抽出される場合、第１計算手段１４０は、以下のようにチェックサムSUM を計算する。
【０１４１】
SUM = msb_s(M[1]) + msb_s(M[2]) + ・・・ + msb_s(M[m-1]) ・・・式（１７）
【０１４２】
また、認証暗号化装置１００の第２暗号化手段１５０は、認証暗号化装置１００の第１計算手段１４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０１４３】
次いで、第２暗号化手段１５０は、変換された後のチェックサムSUM を、初期ベクトル生成手段１２０が出力する初期ベクトルN と、第１計算手段１４０が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
【０１４４】
具体的には、第２暗号化手段１５０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、n’＝n の場合とn’≠n の場合とで使い分けられるTweak と秘密鍵とから一意に定められるマスク値と、適当なパディング関数でn ビットの値に変換されたM[m]を加算する。
【０１４５】
次いで、第２暗号化手段１５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。
【０１４６】
例えば、認証暗号化装置１００の第１暗号化手段１３０が(N, 1),(N, 2),・・・,(N, m) の各Tweak を用いた場合、第２暗号化手段１５０は、n’＝n のときは(N, m, 1) のTweak 、n’≠n のときは(N, m, 2) のTweak をそれぞれ用いればよい。
【０１４７】
例えば、n’≠n のとき、第２暗号化手段１５０によるXEX*モードのTweakable ブロック暗号での暗号化は、以下の式で表される。
【０１４８】
Mask = Δ(K, (N, m, 2)) + (M[m] || 10(n-n’-1))
SUM_n = SUM || 0(n-s)
Tag_n = E(K, Mask + SUM_n)
T = msb_t(Tag_n)
【０１４９】
次に、本具体例における認証復号装置２００を構成する各手段が有する具体的な機能をそれぞれ説明する。最初に、認証復号装置２００の暗号文入力手段２１０が出力する暗号文C が、(m-1) 個のn ビットの暗号文ブロックC[1],C[2],・・・,C[m-1] と、n’<=n であるn’ビットの暗号文ブロックC[m]とで構成されているとする。
【０１５０】
認証復号装置２００の復号手段２３０は、認証暗号化装置１００の第１暗号化手段１３０の逆関数として作用する。すなわち、復号手段２３０は、認証復号装置２００の初期ベクトル入力手段２２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号文C を復号する。具体的には、復号手段２３０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【０１５１】
例えば、復号手段２３０は、暗号文ブロックC[1],C[2],・・・,C[m-1] に対して、秘密鍵K 、Tweak(N, i)(1<=i<m) 、およびTweakable ブロック暗号TEの復号関数TDを用いて、M[i] = TD(K, (N, i), C[i])と復号する。
【０１５２】
また、復号手段２３０は、暗号文ブロックC[m]に対して、n ビットの固定値Fix 、および秘密鍵K 、Tweak(N, m) を用いて、M[m] = TE(K, (N, m), Fix) + C[m]と復号する。最終的に、復号手段２３０は、平文M = M[1]M[2]・・・M[m]を生成する。
【０１５３】
例えば、認証暗号化装置１００の第１暗号化手段１３０がXEX*モードのTweakable ブロック暗号で平文M を暗号化している場合、復号手段２３０は、秘密鍵K を持つブロック暗号E と、ブロック暗号E に対する復号関数D を用いて、以下のように暗号文ブロックC[i](1<=i<m)を復号できる。
【０１５４】
M[i] = D(K, mult(2i, E(K, N)) + C[i]) + mult(2i, E(K, N)) ・・・式（１８）
【０１５５】
また、復号手段２３０は、以下のように暗号文ブロックC[m]を復号できる。
【０１５６】
M[m] = C[m] + msb_n’(Pad_n)  (Pad_n = E(K, mult(2m, E(K, N)) + 0n))
・・・式（１９）
【０１５７】
また、認証復号装置２００の第２計算手段２４０は、認証復号装置２００の復号手段２３０が出力する平文M の平文ブロックM[i]のうち、任意のs<n であるs ビットの部分系列Ms[i] を加算する。
【０１５８】
具体的には、第２計算手段２４０は、Ms[1],Ms[2],・・・,Ms[m-1] の排他的論理和をチェックサムSUM とする。次いで、第２計算手段２４０は、s ビットのチェックサムSUM と、最終の平文ブロックM[m]とを出力する。すなわち、第２計算手段２４０が実行する処理は、認証暗号化装置１００の第１計算手段１４０が実行する処理と同様である。
【０１５９】
また、認証復号装置２００の第３暗号化手段２５０は、認証復号装置２００の第２計算手段２４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０１６０】
次いで、第３暗号化手段２５０は、変換された後のチェックサムSUM を、初期ベクトル入力手段２２０が出力する初期ベクトルN と、第２計算手段２４０が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
【０１６１】
具体的には、第３暗号化手段２５０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、n’＝n の場合とn’≠n の場合とで使い分けられるTweak と秘密鍵とから一意に定められるマスク値と、適当なパディング関数でn ビットの値に変換されたM[m]を加算する。
【０１６２】
次いで、第３暗号化手段２５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT’を生成する。すなわち、第３暗号化手段２５０が実行する処理は、認証暗号化装置１００の第２暗号化手段１５０が実行する処理と同様である。
【０１６３】
図５は、認証暗号化装置１００による認証暗号化処理の具体例を示す説明図である。
【０１６４】
例えば、認証暗号化装置１００の第１暗号化手段１３０は、図５に示す暗号化処理を行う。すなわち、第１暗号化手段１３０は、平文M を構成する(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]を、初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号化する。
【０１６５】
図５に示すように、第１暗号化手段１３０は、平文ブロックM[1],M[2],・・・,M[m-1] に対して、秘密鍵K 、Δ(K, (N, i))(1<=i<m) を用いて、以下のように暗号化する。
【０１６６】
C[i] = E(K, Δ(K, (N, i)) + M[i]) + Δ(K, (N, i))
【０１６７】
また、図５に示すように、第１暗号化手段１３０は、平文ブロックM[m]に対して、n ビットの固定値Fix 、および秘密鍵K 、Δ(K, (N, m)) を用いて、以下のように暗号化する。
【０１６８】
C[m] = M[m] + msb_n’(Pad_n)  (Pad_n = E(K, Δ(K, (N, m)) + 0n))
【０１６９】
最終的に、第１暗号化手段１３０は、暗号文C = C[1]C[2]・・・C[m]を生成する。
【０１７０】
なお、認証復号装置２００の復号手段２３０が暗号文入力手段２１０が出力する暗号文C に対して実行する復号処理は、図５に示す暗号化処理の逆処理になる。
【０１７１】
また、認証暗号化装置１００の第１計算手段１４０は、図５に示すチェックサム計算処理を行う。すなわち、第１計算手段１４０は、認証暗号化装置１００の平文入力手段１１０が出力する平文M の平文ブロックM[i]のうち、任意のs<n であるs ビットの部分系列Ms[1],Ms[2],・・・,Ms[m-1] の排他的論理和をビットごとにとる。例えば、第１計算手段１４０は、式（１７）の計算を行う。
【０１７２】
第１計算手段１４０は、ビットごとの排他的論理和をチェックサムSUM とする。次いで、第１計算手段１４０は、s ビットのチェックサムSUM と、最終の平文ブロックM[m]とを出力する。なお、認証復号装置２００の第２計算手段２４０が、復号手段２３０が出力する平文M に対して実行するチェックサム計算処理も、図５に示すチェックサム計算処理と同様である。
【０１７３】
また、認証暗号化装置１００の第２暗号化手段１５０は、図５に示すタグ生成処理を行う。すなわち、第２暗号化手段１５０は、認証暗号化装置１００の第１計算手段１４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０１７４】
次いで、第２暗号化手段１５０は、変換された後のチェックサムSUM を、初期ベクトル生成手段１２０が出力する初期ベクトルN と、第１計算手段１４０が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
【０１７５】
図５に示すように、第２暗号化手段１５０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に加算されるTweak と秘密鍵とから一意に定められるマスク値を、n’＝n の場合とn’≠n の場合とで使い分けている。また、第２暗号化手段１５０は、適当なパディング関数でn ビットの値に変換されたM[m]も加算する。
【０１７６】
また、図５に示すように、第２暗号化手段１５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。なお、認証復号装置２００の第３暗号化手段２５０が第２計算手段２４０が出力するs ビットのチェックサムSUM に対して実行するタグ生成処理も、図５に示すタグ生成処理と同様である。
【０１７７】
また、本具体例の認証暗号化装置１００の第１計算手段１４０は以下のようにチェックサムを計算し、第２暗号化手段１５０は以下のようにタグを生成してもよい。以下、本具体例の変形例を説明する。
【０１７８】
第１計算手段１４０は、認証暗号化装置１００の平文入力手段１１０が出力する平文M の平文ブロックM[i]のうち任意のn/2 ビットの部分系列のビットごとの排他的論理和を、M[1]からM[m-1]に渡ってとる。次いで、第１計算手段１４０は、ビットごとの排他的論理和をチェックサムSUM とし、n/2 ビットのチェックサムSUM と最終の平文ブロックM[m]とを出力する。
【０１７９】
次いで、認証暗号化装置１００の第２暗号化手段１５０は、第１計算手段１４０が出力するn/2 ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０１８０】
次いで、第２暗号化手段１５０は、変換された後のチェックサムSUM を、初期ベクトル生成手段１２０が出力する初期ベクトルN と、第１計算手段１４０が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
【０１８１】
具体的には、第２暗号化手段１５０は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値と、適当なパディング関数でn ビットの値に変換されたM[m]を加算する。
【０１８２】
次いで、第２暗号化手段１５０は、暗号化で得られたn ビットのTag_nを、適当な分割関数を用いて２つのn/2 ビットのTag1とTag2に分割する。次いで、第２暗号化手段１５０は、n’＝n のときはT=Tag1、n’≠n のときはT=Tag2として、n/2 ビットのタグT を生成する。例えば、タグT は、以下のように生成される。
【０１８３】
T = Tag1 = (msb_(n/2))(Tag_n) (n’＝n) ・・・式（２０）
T = Tag2 = (lsb_(n/2))(Tag_n) (n’≠n) ・・・式（２１）
【０１８４】
なお、式（２０）における(msb_(n/2))（・）は、入力に対して上位n/2 ビットの値を出力する関数である。また、式（２１）における(lsb_(n/2))（・）は、入力に対して下位n/2 ビットの値を出力する関数である。
【０１８５】
第２暗号化手段１５０が分割関数を用いる場合、使用されるTweak の場合分けが無くなる。使用されるTweak の場合分けは、平文にパディング処理が施されたか否かが見分けられるように行われる。
【０１８６】
しかし、タグの長さがn/2 ビットである場合、第２暗号化手段１５０は、チェックサムがTweakable 暗号で暗号化されたn ビットの結果を２つに分割した後であっても場合分けを実行できる。使用されるTweak の場合分けよりも、使用される暗号化されたn/2 ビットの値の場合分けの方が、より効率的に行われる。
【０１８７】
なお、本具体例の認証復号装置２００の第２計算手段２４０も、上述した認証暗号化装置１００の第１計算手段１４０によるチェックサム計算処理と同様のチェックサム計算処理を実行することによって、復号手段２３０が出力する平文M を基にチェックサムを計算してもよい。
【０１８８】
また、本具体例の認証復号装置２００の第３暗号化手段２５０も、上述した認証暗号化装置１００の第２暗号化手段１５０によるタグ生成処理と同様のタグ生成処理を実行することによって、第２計算手段２４０が出力するチェックサムSUM を基にn/2 ビットのタグT’を生成してもよい。以上の変形例により、使用されるTweak の場合分けが削除される。
【０１８９】
［効果の説明］
第１の実施形態および第２の実施形態のように、全てs<n であるs ビットのブロックからチェックサムが計算されると安全性が保たれなくなり、タグが容易に偽造される。
【０１９０】
第１の具体例における認証暗号化方式での最終ブロックは、CTR モードのブロックである。タグの偽造を防いで安全性を保つためには、n’<=n であるn’ビットの最終の平文ブロックM[m]全て、すなわちn’ビットの値がチェックサムSUM に加算されることが求められる。
【０１９１】
しかし、n’ビットの値がチェックサムSUM に加算されると、得られるチェックサムSUM のビット数は、s ビットとn’ビットのいずれか大きい方になる。n’>sである場合、ステートサイズが(n-s) ビット削減されるという、第１の実施形態および第２の実施形態で期待される効果が得られない。
【０１９２】
よって、最終の平文ブロックM[m]のみTweakable ブロック暗号で用いられるマスク値に加算されれば、安全性と効率性が同時に実現される。
【０１９３】
第１の具体例の認証暗号化装置１００と認証復号装置２００のn/2<=s<nの場合の安全性は、第１の実施形態および第２の実施形態と同様、s=n の場合の安全性と漸近的に等しくなる。
【０１９４】
以下、s=n/2 の場合のOCB における安全性を説明する。処理単位が１ブロック暗号化の場合、上述したように通常のOCB のステートサイズは3nビットである。また、OCB に適用された第１の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても2.5nビットである。すなわち、0.5nビットのステートサイズが削減される。
【０１９５】
また、処理単位が任意のｉブロック暗号化の場合、通常のOCB のステートサイズは、(2i+1)nビットである。また、OCB に適用された第１の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても(2i+0.5)n ビットである。やはり、0.5nビットのステートサイズが削減される。
【０１９６】
また、漸近的な安全性のオーダは、通常のOCB による方式、およびOCB に適用された第１の具体例で実現される方式共に、O(2(n/2)) である。すなわち、漸近的な安全性は損なわれずに、暗号化処理と復号処理の両方でステートサイズが0.5nビット削減される。よって、第１の具体例の認証暗号化装置１００と認証復号装置２００は、安全性と効率性を同時に実現可能である。
【０１９７】
＜具体例２＞
本具体例における認証暗号化装置１００と認証復号装置２００は、特許文献５に記載されているOTR に適用可能である。以下、本具体例における認証暗号化装置１００を構成する各手段が有する具体的な機能をそれぞれ説明する。
【０１９８】
最初に、認証暗号化装置１００の平文入力手段１１０が出力する平文M が、(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]とで構成されているとする。また、m を偶数とし、m/2=hmとする。
【０１９９】
認証暗号化装置１００の第１暗号化手段１３０は、認証暗号化装置１００の初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで平文M を暗号化する。
【０２００】
具体的には、第１暗号化手段１３０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【０２０１】
例えば、第１暗号化手段１３０は、秘密鍵K 、Tweak(N, j, 0), (N, j, 1)(1<=j<=hm-1) を用いて、以下のように各平文ブロックを暗号化する。
【０２０２】
C[2j-1] = TE(K, (N, j, 0), M[2j-1]) + M[2j] ・・・式（２２）
C[2j]   = TE(K, (N, j, 1), C[2j-1]) + M[2j-1] ・・・式（２３）
C[m]   = TE(K, (N, hm, 0), M[m-1]) + M[m] ・・・式（２４）
C[m-1] = TE(K, (N, hm, 1), C[m]) + M[m-1] ・・・式（２５）
【０２０３】
最終的に、第１暗号化手段１３０は、暗号文C = C[1]C[2]・・・C[m]を生成する。
【０２０４】
なお、m が奇数である場合、第１暗号化手段１３０は、M[1], ・・・,M[m-1] までは上記のように暗号化する。次いで、第１暗号化手段１３０は、固定値がTweakable ブロック暗号で暗号化されたn ビットのPad_n とM[m]を加算することによって、M[m]を暗号化する。n’≠n のとき、第１暗号化手段１３０は、Pad_n を適当な短縮関数を用いてn ビットの値に変換する。
【０２０５】
例えばm が奇数である場合、hm = (m+1)/2とする。第１暗号化手段１３０は、平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]に対して、秘密鍵K 、Tweak(N, j, 0), (N, j, 1)(1<=j<=hm-1) を用いて、XEモードのTweakable ブロック暗号で以下のように暗号化を行う。
【０２０６】
C[2j-1] = E(K, Δ(K, (N, j, 0)) + M[2j-1]) + M[2j] ・・・式（２６）
C[2j]   = E(K, Δ(K, (N, j, 1)) + C[2j-1]) + M[2j-1] ・・・式（２７）
C[m]   = msb_n’(Pad_n) + M[m]  (Pad_n = E(K, Δ(K, (N, hm, 0)) + 0n))
・・・式（２８）
【０２０７】
なお、式（２６）〜式（２８）における「＋」は、ビットごとの排他的論理和を表す。また、式（２６）〜式（２８）におけるΔ(K, Tw) は、秘密鍵K とTweak Twとから一意に定められるn ビットのマスク値である。また、式（２８）における「0n」は、０がｎ個並べられたビット列を表す。また、式（２８）におけるmsb_n’（・）は、入力に対して上位n’ビットの値を出力する関数である。
【０２０８】
また、認証暗号化装置１００の第１計算手段１４０は、認証暗号化装置１００の平文入力手段１１０が出力する平文M と、初期ベクトル生成手段１２０が出力する初期ベクトルN と、Tweakable ブロック暗号TEとを用いて、Z = TE(K, (N, hm, 0), M[m-1]) を計算する。
【０２０９】
具体的には、第１計算手段１４０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【０２１０】
第１計算手段１４０は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]と、算出されたZ のうち任意のs ビットの部分系列を加算することによって、s ビットのチェックサムSUM を計算する。
【０２１１】
例えば、M[2i] をMs[2i]に変換するために、第１計算手段１４０は、M[2i] の上位s ビットの値を抽出すればよい。上位s ビットの値を抽出する場合、第１計算手段１４０は、以下のようにチェックサムSUM を計算する。
【０２１２】
SUM = msb_s(M[2]) + msb_s(M[4]) + ・・・ + msb_s(M[m-2]) + msb_s(Z)
・・・式（２９）
【０２１３】
また、m が奇数である場合、hm = (m+1)/2とする。第１計算手段１４０は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]の排他的論理和をビットごとにとる。
【０２１４】
第１計算手段１４０は、ビットごとの排他的論理和を適当なパディング関数を用いてn’ビットの値に変換し、変換された値とn’ビットの平文ブロックM[m]を加算することによって、チェックサムSUM を計算する。第１計算手段１４０は、計算されたチェックサムSUM を出力する。
【０２１５】
また、認証暗号化装置１００の第２暗号化手段１５０は、認証暗号化装置１００の第１計算手段１４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０２１６】
次いで、第２暗号化手段１５０は、変換された後のチェックサムSUM を、初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
【０２１７】
具体的には、第２暗号化手段１５０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。Tweak は、m が偶数である場合または奇数である場合、およびn’＝n である場合またはn’≠n である場合の組み合わせで得られる４通りのケースごとに使い分けられる。
【０２１８】
次いで、第２暗号化手段１５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。
【０２１９】
例えば、認証暗号化装置１００の第１暗号化手段１３０が(N, 1, 0),(N, 1, 1),(N, 2, 0),(N, 2, 1),・・・,(N, hm, 0),(N, hm, 1)の各Tweak を用いたとする。認証暗号化装置１００の第２暗号化手段１５０は、m が偶数かつn’＝n のときは(N, hm, 3, 0) のTweak 、m が偶数かつn’≠n のときは(N, hm, 1, 1) のTweak をそれぞれ用いればよい。
【０２２０】
また、第２暗号化手段１５０は、m が奇数かつn’＝n のときは(N, hm, 2, 0) のTweak 、m が奇数かつn’≠n のときは(N, hm, 0, 1) のTweak をそれぞれ用いればよい。
【０２２１】
例えば、m が偶数かつn’≠n のとき、第２暗号化手段１５０によるXEモードのTweakable ブロック暗号での暗号化は、以下の式で表される。
【０２２２】
SUM_n = SUM || 0(n-s)
Tag_n = E(K, Δ(K, (N, hm, 1, 1)) + SUM_n)
T = msb_t(Tag_n)
【０２２３】
次に、本具体例における認証復号装置２００を構成する各手段が有する具体的な機能をそれぞれ説明する。最初に、認証復号装置２００の暗号文入力手段２１０が出力する暗号文C が、(m-1) 個のn ビットの暗号文ブロックC[1],C[2],・・・,C[m-1] と、n’<=n であるn’ビットの暗号文ブロックC[m]とで構成されているとする。また、m を偶数とし、m/2=hmとする。
【０２２４】
認証復号装置２００の復号手段２３０は、認証暗号化装置１００の第１暗号化手段１３０の逆関数として作用する。すなわち、復号手段２３０は、認証復号装置２００の初期ベクトル入力手段２２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号文C を復号する。
【０２２５】
具体的には、復号手段２３０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【０２２６】
例えば、復号手段２３０は、秘密鍵K 、およびTweak(N, j, 0),(N, j, 1)(1<=j<=hm-1)を用いて、以下のように各暗号文ブロックを復号する。
【０２２７】
M[2j-1] = TE(K, (N, j, 1), C[2j-1]) + C[2j]
M[2j]   = TE(K, (N, j, 0), M[2j-1]) + C[2j-1]
M[m-1] = TE(K, (N, hm, 1), C[m]) + C[m-1]
M[m]   = TE(K, (N, hm, 0), M[m-1]) + C[m]
【０２２８】
最終的に、復号手段２３０は、平文M = M[1]M[2]・・・M[m]を生成する。例えば、復号手段２３０は、秘密鍵K 、およびTweak(N, j, 0),(N, j, 1)(1<=j<=hm-1)を用いて、XEモードのTweakable ブロック暗号で以下のように復号を行う。
【０２２９】
M[2j-1] = E(K, Δ(K, (N, j, 1)) + C[2j-1]) + C[2j] ・・・式（３０）
M[2j]   = E(K, Δ(K, (N, j, 0)) + M[2j-1]) + C[2j-1] ・・・式（３１）
M[m-1] = E(K, Δ(K, (N, hm, 1)) + (C[m]||10(n-n’-1)))) + C[m-1] 
・・・式（３２）
M[m]   = msb_n’(E(K, Δ(K, (N, hm, 0)) + M[m-1])) + C[m] ・・・式（３３）
【０２３０】
なお、式（３０）〜式（３３）における「＋」は、ビットごとの排他的論理和を表す。また、式（３０）〜式（３３）におけるΔ(K, Tw) は、秘密鍵K とTweak Twとから一意に定められるn ビットのマスク値である。また、式（３２）における「0n」は、０がｎ個並べられたビット列を表す。また、式（３３）におけるmsb_n’（・）は、入力に対して上位n’ビットを出力する関数である。
【０２３１】
また、認証復号装置２００の復号手段２３０が出力する平文M が、(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]とで構成されているとする。また、m を偶数とし、m/2=hmとする。
【０２３２】
認証復号装置２００の第２計算手段２４０は、認証復号装置２００の復号手段２３０が出力する平文M と、初期ベクトル入力手段２２０が出力する初期ベクトルN と、Tweakable ブロック暗号TEとを用いて、Z = TE(K, (N, hm, 0), M[m-1]) を計算する。
【０２３３】
具体的には、第２計算手段２４０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
【０２３４】
第２計算手段２４０は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]と、算出されたZ のうち任意のs ビットの部分系列を加算することによって、s ビットのチェックサムSUM を計算する。すなわち、第２計算手段２４０によるチェックサム計算処理は、認証暗号化装置１００の第１計算手段１４０によるチェックサム計算処理と同様である。
【０２３５】
また、認証復号装置２００の第３暗号化手段２５０は、認証復号装置２００の第２計算手段２４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０２３６】
次いで、第３暗号化手段２５０は、変換された後のチェックサムSUM を、初期ベクトル入力手段２２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
【０２３７】
具体的には、第３暗号化手段２５０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。Tweak は、m が偶数である場合または奇数である場合、およびn’＝n である場合またはn’≠n である場合の組み合わせで得られる４通りのケースごとに使い分けられる。
【０２３８】
次いで、第３暗号化手段２５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT’を生成する。すなわち、第３暗号化手段２５０によるタグ生成処理は、認証暗号化装置１００の第２暗号化手段１５０によるタグ生成処理と同様である。
【０２３９】
図６は、認証暗号化装置１００による認証暗号化処理の他の具体例を示す説明図である。
【０２４０】
例えば、認証暗号化装置１００の第１暗号化手段１３０は、図６に示す暗号化処理を行う。すなわち、第１暗号化手段１３０は、平文M を構成する(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m](m は偶数、m/2=hm)を、初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号化する。
【０２４１】
図６に示すように、第１暗号化手段１３０は、秘密鍵K 、およびTweak(N, j, 0),(N, j, 1)(1<=j<=hm-1)を用いて、各平文ブロックを暗号化する。例えば、第１暗号化手段１３０は、式（２２）〜式（２５）の計算を行う。
【０２４２】
最終的に、第１暗号化手段１３０は、暗号文C = C[1]C[2]・・・C[m]を生成する。なお、認証復号装置２００の復号手段２３０が暗号文入力手段２１０が出力する暗号文C に対して実行する復号処理は、図６に示す暗号化処理の逆処理になる。
【０２４３】
また、認証暗号化装置１００の第１計算手段１４０は、図６に示すチェックサム計算処理を行う。すなわち、第１計算手段１４０は、認証暗号化装置１００の平文入力手段１１０が出力する平文M と、初期ベクトル生成手段１２０が出力する初期ベクトルN と、Tweakable ブロック暗号TEとを用いて、Z = TE(K, (N, hm, 0), M[m-1]) を計算する。
【０２４４】
第１計算手段１４０は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]と、算出されたZ のうち任意のs ビットの部分系列を加算することによって、s ビットのチェックサムSUM を計算する。
【０２４５】
例えば、第１計算手段１４０は、式（２９）の計算を行う。なお、認証復号装置２００の第２計算手段２４０が、復号手段２３０が出力する平文M に対して実行するチェックサム計算処理も、図６に示すチェックサム計算処理と同様である。
【０２４６】
また、認証暗号化装置１００の第２暗号化手段１５０は、図６に示すタグ生成処理を行う。すなわち、第２暗号化手段１５０は、認証暗号化装置１００の第１計算手段１４０が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０２４７】
次いで、第２暗号化手段１５０は、変換された後のチェックサムSUM を、初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
【０２４８】
図６に示すように、第２暗号化手段１５０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に加算されるTweak と秘密鍵とから一意に定められるマスク値を使い分けている。
【０２４９】
具体的には、第２暗号化手段１５０は、m が偶数である場合または奇数である場合、およびn’＝n である場合またはn’≠n である場合の組み合わせで得られる４通りのケースごとにマスク値を使い分けている。次いで、第２暗号化手段１５０は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。
【０２５０】
なお、認証復号装置２００の第３暗号化手段２５０が第２計算手段２４０が出力するs ビットのチェックサムSUM に対して実行するタグ生成処理は、図６に示すタグ生成処理と同様である。
【０２５１】
また、本具体例の認証暗号化装置１００の第１計算手段１４０は以下のようにチェックサムを計算し、第２暗号化手段１５０は以下のようにタグを生成してもよい。以下、本具体例の変形例を説明する。
【０２５２】
第１計算手段１４０は、M[2i](i=1,・・・,hm-1)のうち、任意のn/2 ビットの部分系列Mn/2[2i]と、算出されたZ のうち任意のn/2 ビットの部分系列を加算することによって、n/2 ビットのチェックサムSUM を計算する。
【０２５３】
また、認証暗号化装置１００の第２暗号化手段１５０は、認証暗号化装置１００の第１計算手段１４０が出力するn/2 ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
【０２５４】
次いで、第２暗号化手段１５０は、変換された後のチェックサムSUM を、初期ベクトル生成手段１２０が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
【０２５５】
具体的には、第２暗号化手段１５０は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、m が偶数である場合と奇数である場合とで使い分けられるTweak と秘密鍵とから一意に定められるマスク値を加算する。
【０２５６】
次いで、第２暗号化手段１５０は、暗号化で得られたn ビットのTag_nを、適当な分割関数を用いて２つのn/2 ビットのTag1とTag2に分割する。次いで、第２暗号化手段１５０は、n’＝n のときはT=Tag1、n’≠n のときはT=Tag2として、n/2 ビットのタグT を生成する。例えば、タグT は、以下のように生成される。
【０２５７】
T = Tag1 = (msb_(n/2))(Tag_n) (n’＝n) ・・・式（３４）
T = Tag2 = (lsb_(n/2))(Tag_n) (n’≠n) ・・・式（３５）
【０２５８】
なお、式（３４）における(msb_(n/2))（・）は、入力に対して上位n/2 ビットの値を出力する関数である。また、式（３５）における(lsb_(n/2))（・）は、入力に対して下位n/2 ビットの値を出力する関数である。
【０２５９】
上記のように、第２暗号化手段１５０が分割関数を用いる場合、使用されるTweak が４種類から２種類に削減される。すなわち、使用されるTweak の種類が半分に削減される。
【０２６０】
タグの長さがn/2 ビットである場合、第２暗号化手段１５０は、チェックサムがTweakable 暗号で暗号化されたn ビットの結果を２つに分割した後であっても場合分けを実行できる。よって、４通りの場合分けが２通りの場合分けに削減される。使用されるTweak の場合分けよりも、使用される暗号化されたn/2 ビットの値の場合分けの方が、より効率的に行われる。
【０２６１】
なお、本具体例の認証復号装置２００の第２計算手段２４０も、上述した認証暗号化装置１００の第１計算手段１４０によるチェックサム計算処理と同様のチェックサム計算処理を実行することによって、復号手段２３０が出力する平文M を基にチェックサムを計算してもよい。
【０２６２】
また、本具体例の認証復号装置２００の第３暗号化手段２５０も、上述した認証暗号化装置１００の第２暗号化手段１５０によるタグ生成処理と同様のタグ生成処理を実行することによって、第２計算手段２４０が出力するチェックサムSUM を基にn/2 ビットのタグT’を生成してもよい。以上の変形例により、使用されるTweak の種類が半分に削減される。
【０２６３】
［効果の説明］
第２の具体例の認証暗号化装置１００と認証復号装置２００のn/2<=s<nの場合の安全性は、第１の実施形態および第２の実施形態と同様、s=n の場合の安全性と漸近的に等しくなる。
【０２６４】
以下、s=n/2 の場合のOTR における安全性を説明する。処理単位が１つのFeistel 構造である場合、通常のOTR のステートサイズは4nビットである。4nビットの内訳は、１つのFeistel 構造で平文を処理するために用いられるメモリ分の2nビットと、マスクの値を保持するメモリ分のn ビットと、計算されたチェックサムの値を保持するメモリ分のn ビットである。
【０２６５】
また、OTR に適用された第２の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても3.5nビットである。すなわち、0.5nビットのステートサイズが削減される。
【０２６６】
また、処理単位が任意のｉ個のFeistel 構造である場合、通常のOTR のステートサイズは、(3i+1)nビットである。また、OTR に適用された第２の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても(3i+0.5)n ビットである。やはり、0.5nビットのステートサイズが削減される。
【０２６７】
また、漸近的な安全性のオーダは、通常のOTR による方式、およびOTR に適用された第２の具体例で実現される方式共に、O(2(n/2)) である。すなわち、漸近的な安全性は損なわれずに、暗号化処理と復号処理の両方でステートサイズが0.5nビット削減される。よって、第２の具体例の認証暗号化装置１００と認証復号装置２００は、安全性と効率性を同時に実現可能である。
【０２６８】
以下、第１の実施形態の認証暗号化装置１００のハードウェア構成の具体例、および第２の実施形態の認証復号装置２００のハードウェア構成の具体例を説明する。
【０２６９】
図７は、本発明による認証暗号化装置１００のハードウェア構成例を示す説明図である。図７に示す認証暗号化装置１００は、ＣＰＵ（Central Processing Unit）１０１と、主記憶部１０２と、通信部１０３と、補助記憶部１０４とを備える。また、ユーザが操作するための入力部１０５や、ユーザに処理結果または処理内容の経過を提示するための出力部１０６を備えてもよい。
【０２７０】
図８は、本発明による認証復号装置２００のハードウェア構成例を示す説明図である。図８に示す認証復号装置２００は、ＣＰＵ２０１と、主記憶部２０２と、通信部２０３と、補助記憶部２０４とを備える。また、ユーザが操作するための入力部２０５や、ユーザに処理結果または処理内容の経過を提示するための出力部２０６を備えてもよい。
【０２７１】
主記憶部１０２および主記憶部２０２は、データの作業領域やデータの一時退避領域として用いられる。主記憶部１０２および主記憶部２０２は、例えばＲＡＭ（Random Access Memory）である。
【０２７２】
通信部１０３および通信部２０３は、有線のネットワークまたは無線のネットワーク（情報通信ネットワーク）を介して、周辺機器との間でデータを入力および出力する機能を有する。
【０２７３】
補助記憶部１０４および補助記憶部２０４は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory）、半導体メモリが挙げられる。
【０２７４】
入力部１０５および入力部２０５は、データや処理命令を入力する機能を有する。入力部１０５および入力部２０５は、例えばキーボードやマウス等の入力デバイスである。平文入力手段１１０は、例えば入力部１０５により実現される。また、暗号文入力手段２１０、および初期ベクトル入力手段２２０は、例えば入力部２０５により実現される。
【０２７５】
出力部１０６および出力部２０６は、データを出力する機能を有する。出力部１０６および出力部２０６は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。暗号文出力手段１６０は、例えば出力部１０６により実現される。また、平文出力手段２７０は、例えば出力部２０６により実現される。
【０２７６】
また、図７に示すように、認証暗号化装置１００において、各構成要素は、システムバス１０７に接続されている。また、図８に示すように、認証復号装置２００において、各構成要素は、システムバス２０７に接続されている。
【０２７７】
補助記憶部１０４は、例えば、図１に示す初期ベクトル生成手段１２０、第１暗号化手段１３０、第１計算手段１４０、および第２暗号化手段１５０を実現するためのプログラムを記憶している。
【０２７８】
なお、認証暗号化装置１００は、ハードウェアにより実現されてもよい。例えば、認証暗号化装置１００は、内部に図１に示すような機能を実現するプログラムが組み込まれたＬＳＩ（Large Scale Integration）等のハードウェア部品が含まれる回路が実装されてもよい。
【０２７９】
また、認証暗号化装置１００は、図７に示すＣＰＵ１０１が図１に示す各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現されてもよい。
【０２８０】
ソフトウェアにより実現される場合、ＣＰＵ１０１が補助記憶部１０４に格納されているプログラムを、主記憶部１０２にロードして実行し、認証暗号化装置１００の動作を制御することによって、各機能がソフトウェアにより実現される。
【０２８１】
補助記憶部２０４は、例えば、図３に示す復号手段２３０、第２計算手段２４０、第３暗号化手段２５０、およびタグ検査手段２６０を実現するためのプログラムを記憶している。
【０２８２】
なお、認証復号装置２００は、ハードウェアにより実現されてもよい。例えば、認証復号装置２００は、内部に図３に示すような機能を実現するプログラムが組み込まれたＬＳＩ等のハードウェア部品が含まれる回路が実装されてもよい。
【０２８３】
また、認証復号装置２００は、図８に示すＣＰＵ２０１が図３に示す各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現されてもよい。
【０２８４】
ソフトウェアにより実現される場合、ＣＰＵ２０１が補助記憶部２０４に格納されているプログラムを、主記憶部２０２にロードして実行し、認証復号装置２００の動作を制御することによって、各機能がソフトウェアにより実現される。
【０２８５】
また、各構成要素の一部または全部は、汎用の回路（circuitry）または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０２８６】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０２８７】
次に、本発明の概要を説明する。図９は、本発明による認証暗号化装置の概要を示すブロック図である。本発明による認証暗号化装置１０は、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数（例えば、式（１０）の暗号化関数）に、暗号化対象の平文を構成する所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値（例えば、Tweak ）と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段１１（例えば、第１暗号化手段１３０）と、平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段１２（例えば、第１計算手段１４０）とを備える。
【０２８８】
そのような構成により、認証暗号化装置は、漸近的な安全性を低下させずにチェックサムの計算で増大するステートサイズを削減できる。
【０２８９】
また、暗号化手段１１は、暗号化関数の出力にマスク値を加算することによって平文ブロックを暗号化してもよい。
【０２９０】
そのような構成により、認証暗号化装置は、XEX モードのTweakable ブロック暗号で平文ブロックを暗号化できる。
【０２９１】
また、認証暗号化装置１０は、認証タグを生成する生成手段（例えば、第２暗号化手段１５０）を備え、生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段１１で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化し、暗号化されたチェックサムを所定のビット数以下のビット数のデータに変換することによって認証タグを生成してもよい。
【０２９２】
そのような構成により、認証暗号化装置は、ビット数が所定のビット数未満であるチェックサムを基に認証タグを生成できる。
【０２９３】
また、生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化してもよい。
【０２９４】
そのような構成により、認証暗号化装置は、XEX モードのTweakable ブロック暗号でチェックサムを暗号化できる。
【０２９５】
また、暗号化手段１１は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、平文を構成しビット数が所定のビット数以下である最終ブロックとを加算することによって最終ブロックを暗号化してもよい。
【０２９６】
そのような構成により、認証暗号化装置は、ビット数が所定のビット数以下の最終ブロックを暗号化できる。
【０２９７】
また、算出手段１２は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、最終ブロックを所定のビット数のデータに変換し、変換されたチェックサムを、最終ブロックのビット数が所定のビット数に一致するか否かで値が異なる調整値、秘密鍵、および変換された最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化してもよい。
【０２９８】
そのような構成により、認証暗号化装置は、認証タグが容易に偽造されることを防ぐことができる。
【０２９９】
また、第１ビット列のビット数は、所定のビット数の半分の数であり、算出手段１２は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、最終ブロックを所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段１１で用いられた調整値以外の調整値、秘密鍵、および変換された最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化し、暗号化されたチェックサムを第１ビット列のビット数の２つのデータに分割し、最終ブロックのビット数が所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力してもよい。
【０３００】
そのような構成により、認証暗号化装置は、Tweak を使い分けずに認証タグを生成できる。
【０３０１】
また、暗号化手段１１は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が所定のビット数以下である最終ブロックを、前から順に２つのブロックの組ごとに分け、分けられた組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、分けられた組の中の偶数番目の平文ブロックとを加算することによって当該組の奇数番目の暗号文ブロックを生成し、マスク値が加算された奇数番目の暗号文ブロックが入力された暗号化関数の出力と、分けられた組の中の奇数番目の平文ブロックとを加算することによって当該組の偶数番目の暗号文ブロックを生成し、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、最終組の中の偶数番目の平文ブロックとを加算することによって最終組の偶数番目の暗号文ブロックを生成し、マスク値が加算された最終組の偶数番目の暗号文ブロックが入力された暗号化関数の出力と、最終組の中の奇数番目の平文ブロックとを加算することによって最終組の奇数番目の暗号文ブロックを生成してもよい。
【０３０２】
そのような構成により、認証暗号化装置は、OTR に適用可能になる。
【０３０３】
また、算出手段１２は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、変換されたチェックサムを、最終ブロックのビット数が所定のビット数に一致するか否かで値が異なる調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化してもよい。
【０３０４】
そのような構成により、認証暗号化装置は、OTR に適用可能になる。
【０３０５】
また、第１ビット列のビット数は、所定のビット数の半分の数であり、算出手段１２は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、暗号化されたチェックサムを第１ビット列のビット数の２つのデータに分割し、最終ブロックのビット数が所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力してもよい。
【０３０６】
そのような構成により、認証暗号化装置は、Tweak を使い分けずに認証タグを生成できる。
【０３０７】
また、認証暗号化装置１０は、暗号化手段１１により生成された暗号文と認証タグとを併せて出力する暗号文出力手段（例えば、暗号文出力手段１６０）を備えてもよい。また、認証暗号化装置１０は、暗号化対象の平文が入力される平文入力手段（例えば、平文入力手段１１０）を備えてもよい。また、認証暗号化装置１０は、初期ベクトルを生成する初期ベクトル生成手段（例えば、初期ベクトル生成手段１２０）を備えてもよい。
【０３０８】
また、図１０は、本発明による認証復号装置の概要を示すブロック図である。本発明による認証復号装置２０は、所定のビット数のデータが入力されると所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値（例えば、Tweak ）と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号手段２１（例えば、復号手段２３０）と、暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段２２（例えば、第２計算手段２４０）とを備える。
【０３０９】
そのような構成により、認証復号装置は、漸近的な安全性を低下させずにチェックサムの計算で増大するステートサイズを削減できる。
【０３１０】
また、復号手段２１は、復号関数の出力にマスク値を加算することによって暗号文ブロックを復号してもよい。
【０３１１】
そのような構成により、認証復号装置は、XEX モードのTweakable ブロック暗号で暗号文ブロックを復号できる。
【０３１２】
また、認証復号装置２０は、認証タグを生成する生成手段（例えば、第３暗号化手段２５０）を備え、生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムと、復号手段２１で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数に入力することによって変換されたチェックサムを暗号化し、暗号化されたチェックサムを所定のビット数以下のビット数のデータに変換することによって認証タグを生成してもよい。
【０３１３】
そのような構成により、認証復号装置は、ビット数が所定のビット数未満であるチェックサムを基に認証タグを生成できる。
【０３１４】
また、生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化してもよい。
【０３１５】
そのような構成により、認証復号装置は、XEX モードのTweakable ブロック暗号でチェックサムを暗号化できる。
【０３１６】
また、認証復号装置２０は、復号処理の検証結果を出力する出力手段（例えば、タグ検査手段２６０および平文出力手段２７０）を備え、出力手段は、暗号文と共に入力された認証タグと一致する認証タグが生成されると受理を表す検証結果を出力し、入力された認証タグと一致しない認証タグが生成されると不受理を表す検証結果を出力してもよい。
【０３１７】
そのような構成により、認証復号装置は、復号処理の検証結果を提示できる。
【０３１８】
また、出力手段は、受理を表す検証結果と共に復号された平文を出力し、不受理を表す検証結果と共にエラーメッセージを出力してもよい。
【０３１９】
そのような構成により、認証復号装置は、復号処理の検証結果に応じて平文またはエラーメッセージを提示できる。
【０３２０】
また、認証復号装置２０は、復号対象の暗号文と認証タグとが入力される暗号文入力手段（例えば、暗号文入力手段２１０）を備えてもよい。また、認証復号装置２０は、初期ベクトルが入力される初期ベクトル入力手段（例えば、初期ベクトル入力手段２２０）を備えてもよい。
【０３２１】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０３２２】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下に限られない。
【０３２３】
（付記１）所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段と、前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備えることを特徴とする認証暗号化装置。
【０３２４】
（付記２）暗号化手段は、暗号化関数の出力にマスク値を加算することによって平文ブロックを暗号化する付記１記載の認証暗号化装置。
【０３２５】
（付記３）認証タグを生成する生成手段を備え、前記生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記所定のビット数以下のビット数のデータに変換することによって前記認証タグを生成する付記１または付記２記載の認証暗号化装置。
【０３２６】
（付記４）生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化する付記３記載の認証暗号化装置。
【０３２７】
（付記５）暗号化手段は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、平文を構成しビット数が前記所定のビット数以下である最終ブロックとを加算することによって前記最終ブロックを暗号化する付記３または付記４記載の認証暗号化装置。
【０３２８】
（付記６）算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記５記載の認証暗号化装置。
【０３２９】
（付記７）第１ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記第１ビット列のビット数の２つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記５記載の認証暗号化装置。
【０３３０】
（付記８）暗号化手段は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に２つのブロックの組ごとに分け、分けられた組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の偶数番目の平文ブロックとを加算することによって当該組の奇数番目の暗号文ブロックを生成し、マスク値が加算された前記奇数番目の暗号文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の奇数番目の平文ブロックとを加算することによって当該組の偶数番目の暗号文ブロックを生成し、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、前記最終組の中の偶数番目の平文ブロックとを加算することによって前記最終組の偶数番目の暗号文ブロックを生成し、マスク値が加算された前記最終組の偶数番目の暗号文ブロックが入力された暗号化関数の出力と、前記最終組の中の奇数番目の平文ブロックとを加算することによって前記最終組の奇数番目の暗号文ブロックを生成する付記３または付記４記載の認証暗号化装置。
【０３３１】
（付記９）算出手段は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記８記載の認証暗号化装置。
【０３３２】
（付記１０）第１ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第１ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、暗号化されたチェックサムを前記第１ビット列のビット数の２つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記８記載の認証暗号化装置。
【０３３３】
（付記１１）所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号手段と、前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備えることを特徴とする認証復号装置。
【０３３４】
（付記１２）復号手段は、復号関数の出力にマスク値を加算することによって暗号文ブロックを復号する付記１１記載の認証復号装置。
【０３３５】
（付記１３）認証タグを生成する生成手段を備え、前記生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムと、復号手段で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で、前記所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記所定のビット数以下のビット数のデータに変換することによって前記認証タグを生成する付記１１または付記１２記載の認証復号装置。
【０３３６】
（付記１４）生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化する付記１３記載の認証復号装置。
【０３３７】
（付記１５）復号手段は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、暗号文を構成しビット数が前記所定のビット数以下である最終ブロックとを加算することによって前記最終ブロックを復号する付記１３または付記１４記載の認証復号装置。
【０３３８】
（付記１６）算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記１５記載の認証復号装置。
【０３３９】
（付記１７）第１ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第１ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記第１ビット列のビット数の２つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記１５記載の認証復号装置。
【０３４０】
（付記１８）復号手段は、暗号文を構成する最終ブロック以外の奇数個の所定のビット数の暗号文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に２つのブロックの組ごとに分け、分けられた組の中のマスク値が加算された奇数番目の暗号文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の偶数番目の暗号文ブロックとを加算することによって当該組の奇数番目の平文ブロックを生成し、マスク値が加算された前記奇数番目の平文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の奇数番目の暗号文ブロックとを加算することによって当該組の偶数番目の平文ブロックを生成し、分けられた最終組の中のマスク値が加算された偶数番目の暗号文ブロックが入力された暗号化関数の出力と、前記最終組の中の奇数番目の暗号文ブロックとを加算することによって前記最終組の奇数番目の平文ブロックを生成し、マスク値が加算された前記最終組の奇数番目の平文ブロックが入力された暗号化関数の出力と、前記最終組の中の偶数番目の暗号文ブロックとを加算することによって前記最終組の偶数番目の平文ブロックを生成する付記１３または付記１４記載の認証復号装置。
【０３４１】
（付記１９）算出手段は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に２つのブロックの組ごとに分け、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、前記平文を構成する前記最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記１８記載の認証復号装置。
【０３４２】
（付記２０）第１ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に２つのブロックの組ごとに分け、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、前記平文を構成する前記最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第１ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、暗号化されたチェックサムを前記第１ビット列のビット数の２つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記１８記載の認証復号装置。
【０３４３】
（付記２１）復号処理の検証結果を出力する出力手段を備え、前記出力手段は、暗号文と共に入力された認証タグと一致する認証タグが生成されると受理を表す検証結果を出力し、前記入力された認証タグと一致しない認証タグが生成されると不受理を表す検証結果を出力する付記１３から付記２０のうちのいずれかに記載の認証復号装置。
【０３４４】
（付記２２）出力手段は、受理を表す検証結果と共に復号された平文を出力し、不受理を表す検証結果と共にエラーメッセージを出力する付記２１記載の認証復号装置。
【０３４５】
（付記２３）所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化し、前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出することを特徴とする認証暗号化方法。
【０３４６】
（付記２４）所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号し、前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出することを特徴とする認証復号方法。
【０３４７】
（付記２５）コンピュータに、所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化処理、および前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理を実行させるための認証暗号化プログラム。
【０３４８】
（付記２６）コンピュータに、所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号処理、および前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理を実行させるための認証復号プログラム。
【産業上の利用の可能性】
【０３４９】
本発明は、無線または有線のデータ通信における暗号化とメッセージ認証、または無線センサデバイスと情報収集サーバとの間で行われる通信の保護に好適に適用される。
【符号の説明】
【０３５０】
１０、１００  認証暗号化装置
１１  暗号化手段
１２、２２  算出手段
１０１、２０１  ＣＰＵ
１０２、２０２  主記憶部
１０３、２０３  通信部
１０４、２０４  補助記憶部
１０５、２０５  入力部
１０６、２０６  出力部
１０７、２０７  システムバス
１１０  平文入力手段
１２０  初期ベクトル生成手段
１３０  第１暗号化手段
１４０  第１計算手段
１５０  第２暗号化手段
１６０  暗号文出力手段
２０、２００  認証復号装置
２１、２３０  復号手段
２１０  暗号文入力手段
２２０  初期ベクトル入力手段
２４０  第２計算手段
２５０  第３暗号化手段
２６０  タグ検査手段
２７０  平文出力手段
【図１】
2020095382.tif 000003
【図２】
2020095382.tif 000004
【図３】
2020095382.tif 000005
【図４】
2020095382.tif 000006
【図５】
2020095382.tif 000007
【図６】
2020095382.tif 000008
【図７】
2020095382.tif 000009
【図８】
2020095382.tif 000010
【図９】
2020095382.tif 000011
【図１０】
2020095382.tif 000012
【手続補正書】
【提出日】令和3年4月26日(2021.4.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段と、
前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備える
ことを特徴とする認証暗号化装置。
【請求項２】
暗号化手段は、暗号化関数の出力にマスク値を加算することによって平文ブロックを暗号化する
請求項１記載の認証暗号化装置。
【請求項３】
認証タグを生成する生成手段を備え、
前記生成手段は、
算出されたチェックサムを所定のビット数のデータに変換し、
変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、
暗号化されたチェックサムを前記所定のビット数以下のビット数のデータに変換することによって前記認証タグを生成する
請求項１または請求項２記載の認証暗号化装置。
【請求項４】
生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化する
請求項３記載の認証暗号化装置。
【請求項５】
暗号化手段は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、平文を構成しビット数が前記所定のビット数以下である最終ブロックとを加算することによって前記最終ブロックを暗号化する
請求項３または請求項４記載の認証暗号化装置。
【請求項６】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号手段と、
前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備える
ことを特徴とする認証復号装置。
【請求項７】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化し、
前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する
ことを特徴とする認証暗号化方法。
【請求項８】
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号し、
前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する
ことを特徴とする認証復号方法。
【請求項９】
コンピュータに、
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化処理、および
前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理
を実行させるための認証暗号化プログラム。
【請求項１０】
コンピュータに、
所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号処理、および
前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第１ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理
を実行させるための認証復号プログラム。
【国際調査報告】
2020095382.tif 000013
2020095382.tif 000014
2020095382.tif 000015
2020095382.tif 000016
2020095382.tif 000017
2020095382.tif 000018