実施形態1.
[構成の説明]
以下、本発明の実施形態を、図面を参照して説明する。図1は、本発明による認証暗号化装置の第1の実施形態の構成例を示すブロック図である。
上述したように、認証暗号化方式がTweakable ブロック暗号で使用されるプリミティブに関するビット長と同じビット長のチェックサムを計算する場合、ステートサイズが増大するという課題がある。
使用されるプリミティブに関するビット長をn としたとき、本実施形態の認証暗号化装置100は、上記の課題を解決するために、s<n であるs ビットのチェックサムを計算する。
ステートサイズと暗号の安全性との関係は、通常トレードオフの関係に該当する。すなわち、ステートサイズが削られると、暗号の安全性が低下する。しかし、本実施形態において、n/2<=s<nであるとき、漸近的な安全性は、s=n のときの漸近的な安全性から変化しない。以下、上記の理由と共に、本実施形態の認証暗号化装置100の具体的な構成および動作を説明する。
図1に示すように、本実施形態の認証暗号化装置100は、平文入力手段110と、初期ベクトル生成手段120と、第1暗号化手段130と、第1計算手段140と、第2暗号化手段150と、暗号文出力手段160とを備える。本実施形態の認証暗号化装置100は、タグを生成するためにチェックサムを計算する。
以下、認証暗号化装置100を構成する各手段を説明する。平文入力手段110は、暗号化対象の平文M が入力される機能を有する。
初期ベクトル生成手段120は、過去に自身が生成した値と異なる初期ベクトルを生成する機能を有する。例えば、初期ベクトル生成手段120は、最初に任意の固定値を出力し、出力した値を記憶する。2回目以降に初期ベクトルを出力する場合、初期ベクトル生成手段120は、記憶されている直前に生成された初期ベクトルの値に1が加えられた値を出力してもよい。
上記の場合、直前に生成された初期ベクトルがN であるとき、新たな初期ベクトルN'は、N' = N+1になる。すなわち、初期ベクトル生成手段120による初期ベクトルN の更新処理は、更新関数f(N) = N+1で表現される。
また、初期ベクトルN のデータ長は、n ビットとする。仮に初期ベクトルN がn ビットより短い場合、初期ベクトル生成手段120は、初期ベクトルN に適当にパディングする。
第1暗号化手段130は、初期ベクトル生成手段120が出力する初期ベクトルN を用いて、平文入力手段110が出力する平文M を、Tweakable ブロック暗号で暗号化する機能を有する。
具体的には、第1暗号化手段130は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。第1暗号化手段130は、暗号化された結果を暗号文C として出力する。
第1暗号化手段130は、通常のn ビットのデータを入出力するブロック暗号E や、鍵なしの暗号学的置換P を用いてもTweakable ブロック暗号を実現できる。例えば、平文M がm 個のn ビットの平文ブロックM[1],M[2],・・・,M[m] で構成され、第1暗号化手段130が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)) ・・・式(10)
なお、式(10)における「+」は、ビットごとの排他的論理和を表す。また、式(10)におけるmult(・,・)は、ガロア体GF(2n)上の2つの元の乗算を表す。また、式(10)における2iは、ガロア体GF(2n)上の2のi乗を表す。
また、第1暗号化手段130は、非特許文献3に記載されているLRW や、非特許文献5に記載されているTEM モードを用いても、Tweakable ブロック暗号を実現できる。
第1計算手段140は、平文入力手段110が出力する平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める機能を有する。
例えば、第1計算手段140は、全平文ブロックの上位s ビットの対応するビット(m 個の平文ブロックの同一位置のビット)ごとの排他的論理和(XOR) を、チェックサムSUM として出力してもよい。もし最終の平文ブロックがs ビットに満たない場合、第1計算手段140は、適当なパディングを最終の平文ブロックに施した上で、ビットごとに排他的論理和をとればよい。
また、第1計算手段140は、排他的論理和の代わりに算術加算や巡回符号(CRC:Cyclic Redundancy Check) 等を使用してチェックサムSUM を計算してもよい。
第2暗号化手段150は、第1計算手段140が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。パディング関数は、例えばn ビットに満たないチェックサムSUM の部分を、100 ・・・0 で埋めればよい。
次いで、第2暗号化手段150は、変換された後のチェックサムSUM を、初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。具体的には、第2暗号化手段150は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
次いで、第2暗号化手段150は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換する。変換されたt ビットの値が、生成されたタグT である。短縮関数は、例えば入力に対して上位t ビットの値のみを出力する関数である。
第2暗号化手段150は、非特許文献3に記載されているLRW 、非特許文献4に記載されているXEX*モード、または非特許文献5に記載されているTEM モード等の第1暗号化手段130が使用しているTweakable ブロック暗号の構成方法と同様の構成方法を用いてよい。しかし、第2暗号化手段150には、第1暗号化手段130で用いられたTweak と異なるTweak をTweakable ブロック暗号で用いることが求められる。
例えば、第1暗号化手段130が(N, 1),(N, 2),・・・,(N, m) の各Tweak を用いた場合、第2暗号化手段150は、(N, m+1)のTweak を用いて、Tweakable ブロック暗号での暗号化を実行すればよい。例えば、上記のタグT の算出例は、以下のように表される。
SUM_n = SUM || 10(n-s-1) ・・・式(11)
Tag_n = E(K, mult(2(m+1), E(K, N)) + SUM_n) ・・・式(12)
T = msb_t(Tag_n) ・・・式(13)
なお、式(11)で使用されている表記「A || B」は、文字列A と文字列B の結合を表す。また、式(11)における0(n-s-1)は、0 が(n-s-1) 個並べられたビット列を表す。なお、100=1 である。また、式(13)におけるmsb_t(・) は、入力に対して上位t ビットの値を出力する関数である。
暗号文出力手段160は、第1暗号化手段130が出力する暗号文C と、第2暗号化手段150が出力するタグT とを連結して出力する機能を有する。
[動作の説明]
以下、本実施形態の認証暗号化装置100の認証暗号化を実行する動作を図2を参照して説明する。図2は、第1の実施形態の認証暗号化装置100による認証暗号化処理の動作を示すフローチャートである。
最初に、平文入力手段110に、暗号化対象の平文M が入力される(ステップS101)。平文入力手段110は、入力された平文M を第1暗号化手段130と第2暗号化手段150に入力する。
次いで、初期ベクトル生成手段120は、過去に生成した値と異なる値の初期ベクトルN を生成する(ステップS102)。初期ベクトル生成手段120は、生成された初期ベクトルN を第1暗号化手段130と第2暗号化手段150に入力する。
次いで、第1暗号化手段130は、初期ベクトル生成手段120から入力された初期ベクトルN を用いて、平文入力手段110から入力された平文M を、Tweakable ブロック暗号で暗号化する(ステップS103)。第1暗号化手段130は、暗号化で得られた暗号文C を暗号文出力手段160に入力する。
次いで、第1計算手段140は、平文入力手段110から入力された平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める(ステップS104)。第1計算手段140は、求められたチェックサムSUM を第2暗号化手段150に入力する。
次いで、第2暗号化手段150は、第1計算手段140から入力されたs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。次いで、第2暗号化手段150は、初期ベクトル生成手段120から入力された初期ベクトルN を用いて、変換された後のチェックサムSUM を、Tweakable ブロック暗号で暗号化する。
次いで、第2暗号化手段150は、暗号化されたチェックサムSUM を、適当な短縮関数を用いてt<=nであるt ビットの値に変換することによって、タグT を生成する(ステップS105)。第2暗号化手段150は、生成されたタグT を暗号文出力手段160に入力する。
次いで、暗号文出力手段160は、第1暗号化手段130から入力された暗号文C と、第2暗号化手段150から入力されたタグT とを連結した上で出力する(ステップS106)。出力した後、認証暗号化装置100は、認証暗号化処理を終了する。
[効果の説明]
本実施形態の認証暗号化装置100は、認証暗号での暗号化処理におけるチェックサム計算のために求められるメモリサイズを、漸近的な安全性を低下させずにn ビットからs ビットに削減できる。よって、認証暗号化装置100は、安全性を保ったまま、ステートサイズを(n-s) ビット削減できる。
通常、ステートサイズと暗号の安全性との関係は、トレードオフの関係に該当する。すなわち、ステートサイズが削られると、暗号の安全性が低下する。しかし、本実施形態の認証暗号化装置100が実行する認証暗号化処理において、n/2<=s<nのときの漸近的な安全性は、s=n のときの漸近的な安全性と同様である。
その理由は、s=n のときの漸近的な安全性では、第1暗号化手段130および第2暗号化手段150で用いられるTweakable ブロック暗号の構成による安全性のオーダと、タグ長による安全性のオーダが支配的である。
すなわち、チェックサム計算に関するビット長から導かれる安全性のオーダは、認証暗号全体の安全性に漸近的には寄与しない。従って、チェックサムのビット長s がn/2<=s<nのとき、漸近的な安全性のオーダは変化しない。
但し、s<n/2 であり、かつタグ長t がt>=n/2である場合、チェックサム計算に関するビット長から導かれる安全性のオーダは、認証暗号全体の安全性に対して支配的になるため、漸近的な安全性は保たれない。タグ長t がt<n/2 である場合、チェックサムのビット長s がs>=tとされれば、漸近的な安全性は損なわれない。
実施形態2.
[構成の説明]
次に、本発明による認証復号装置の第2の実施形態を、図面を参照して説明する。図3は、本発明による認証復号装置の第2の実施形態の構成例を示すブロック図である。
図3に示すように、本実施形態の認証復号装置200は、暗号文入力手段210と、初期ベクトル入力手段220と、復号手段230と、第2計算手段240と、第3暗号化手段250と、タグ検査手段260と、平文出力手段270とを備える。
以下、認証復号装置200を構成する各手段を説明する。暗号文入力手段210は、連結された復号対象の暗号文C とタグT とが入力される機能を有する。また、初期ベクトル入力手段220は、復号に使用される対象の初期ベクトルN が入力される機能を有する。
復号手段230は、初期ベクトル入力手段220が出力する初期ベクトルN を用いて、暗号文入力手段210が出力する暗号文C を、Tweakable ブロック暗号で復号する機能を有する。
具体的には、復号手段230は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。復号手段230は、復号された結果を平文M として出力する。
復号手段230は、第1の実施形態の第1暗号化手段130の逆関数として作用する。例えば、暗号文C がm 個のn ビットの暗号文ブロックC[1],C[2],・・・,C[m] で構成され、第1暗号化手段130が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)) ・・・式(14)
なお、式(14)における「+」は、ビットごとの排他的論理和を表す。また、式(14)におけるmult(・,・)は、ガロア体GF(2n)上の2つの元の乗算を表す。また、式(14)における2iは、ガロア体GF(2n)上の2のi乗を表す。
第2計算手段240は、復号手段230が出力する平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める機能を有する。第2計算手段240が有する機能は、第1の実施形態の第1計算手段140が有する機能と同様である。
第3暗号化手段250は、第2計算手段240が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第3暗号化手段250は、変換された後のチェックサムSUM を、初期ベクトル入力手段220が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。具体的には、第3暗号化手段250は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
次いで、第3暗号化手段250は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換する。変換されたt ビットの値が、生成されたタグT’である。すなわち、第3暗号化手段250が有する機能は、第1の実施形態の第2暗号化手段150が有する機能と同様である。
タグ検査手段260は、暗号文入力手段210が出力するタグT と、第3暗号化手段250が出力するタグT’とを比較する機能を有する。比較されたタグT とタグT’が一致した場合、タグ検査手段260は、「ACK 」を示す検証結果B を出力する。
また、比較されたタグT とタグT’が一致しない場合、タグ検査手段260は、「NCK 」を示す検証結果B を出力する。なお、「ACK 」は「受理」を意味し、「NCK 」は「不受理」を意味する。
平文出力手段270は、復号手段230が出力する平文M と、タグ検査手段260が出力する検証結果B とを入力とする。「ACK 」を示す検証結果B が入力された場合、平文出力手段270は、平文M を出力する。また、「NCK 」を示す検証結果B が入力された場合、平文出力手段270は、エラーメッセージ⊥を出力する。
[動作の説明]
以下、本実施形態の認証復号装置200の認証復号を実行する動作を図4を参照して説明する。図4は、第2の実施形態の認証復号装置200による認証復号処理の動作を示すフローチャートである。
最初に、暗号文入力手段210に、復号対象の暗号文C と、タグT とが入力される(ステップS201)。暗号文入力手段210は、入力された暗号文C を復号手段230に入力する。また、暗号文入力手段210は、入力されたタグT をタグ検査手段260に入力する。
次いで、初期ベクトル入力手段220に、復号に使用される対象の初期ベクトルN が入力される(ステップS202)。初期ベクトル入力手段220は、入力された初期ベクトルN を復号手段230と第3暗号化手段250とに入力する。
次いで、復号手段230は、初期ベクトル入力手段220から入力された初期ベクトルN を用いて、暗号文入力手段210から入力された暗号文C を、Tweakable ブロック暗号で復号する(ステップS203)。復号手段230は、復号された平文M を、第2計算手段240と平文出力手段270とに入力する。
次いで、第2計算手段240は、復号手段230から入力された平文M の部分系列を基に、簡易な計算でs<n であるs ビットのチェックサムSUM を求める(ステップS204)。第2計算手段240は、求められたチェックサムSUM を第3暗号化手段250に入力する。
次いで、第3暗号化手段250は、第2計算手段240から入力されたs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。次いで、第3暗号化手段250は、初期ベクトル入力手段220が出力する初期ベクトルN を用いて、変換された後のチェックサムSUM をTweakable ブロック暗号で暗号化する。
次いで、第3暗号化手段250は、暗号化されたチェックサムSUM を、適当な短縮関数を用いてt<=nであるt ビットの値に変換することによって、タグT’を生成する(ステップS205)。第3暗号化手段250は、生成されたタグT’をタグ検査手段260に入力する。
次いで、タグ検査手段260は、暗号文入力手段210から入力されたタグT と、第3暗号化手段250から入力されたタグT’とを比較する。比較されたタグT とタグT’が一致した場合、タグ検査手段260は、「ACK 」を示す検証結果B を平文出力手段270に入力する。また、比較されたタグT とタグT’が一致しない場合、タグ検査手段260は、「NCK 」を示す検証結果B を平文出力手段270に入力する(ステップS206)。
次いで、平文出力手段270は、タグ検査手段260から入力された検証結果B が「ACK 」を示す場合、復号手段230から入力された平文M を出力する。また、平文出力手段270は、タグ検査手段260から入力された検証結果B が「NCK 」を示す場合、エラーメッセージ⊥を出力する(ステップS207)。平文M またはエラーメッセージ⊥を出力した後、認証復号装置200は、認証復号処理を終了する。
[効果の説明]
本実施形態の認証復号装置200は、認証暗号での復号処理におけるチェックサム計算のために求められるメモリサイズを、漸近的な安全性を低下させずにn ビットからs ビットに削減できる。よって、認証復号装置200は、安全性を保ったまま、ステートサイズを(n-s) ビット削減できる。
すなわち、認証復号装置200は、認証暗号での復号処理において、第1の実施形態の認証暗号化装置100が奏する効果と同様の効果を奏する。また、認証復号装置200が上記の効果を奏する理由は、認証暗号化装置100が効果を奏する理由と同様である。
以下、第1の実施形態の認証暗号化装置100および第2の実施形態の認証復号装置200の具体例をいくつか説明する。
<具体例1>
本具体例における認証暗号化装置100と認証復号装置200は、特許文献1~特許文献4に記載されているOCB や、非特許文献6に記載されているOPP に適用可能である。以下、本具体例における認証暗号化装置100を構成する各手段が有する具体的な機能をそれぞれ説明する。
最初に、認証暗号化装置100の平文入力手段110が出力する平文M が、(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]とで構成されているとする。
認証暗号化装置100の第1暗号化手段130は、認証暗号化装置100の初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで平文M を暗号化する。
具体的には、第1暗号化手段130は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
例えば、第1暗号化手段130は、平文ブロックM[1],M[2],・・・,M[m-1] に対して、秘密鍵K 、Tweak(N, i)(1<=i<m) を用いて、C[i] = TE(K, (N, i), M[i])と暗号化する。
また、第1暗号化手段130は、平文ブロックM[m]に対して、n ビットの固定値Fix 、および秘密鍵K 、Tweak(N, m) を用いて、C[m] = TE(K, (N, m), Fix) + M[m]と暗号化する。最終的に、第1暗号化手段130は、暗号文C = C[1]C[2]・・・C[m]を生成する。
例えば、XEX*モードのTweakable ブロック暗号で暗号化する場合、第1暗号化手段130は、以下のように平文ブロックM[i](1<=i<m)を暗号化する。
C[i] = E(K, mult(2i, E(K, N)) + M[i]) + mult(2i, E(K, N)) ・・・式(15)
また、第1暗号化手段130は、以下のように平文ブロックM[m]を暗号化する。
C[m] = M[m] + msb_n’(Pad_n) (Pad_n = E(K, mult(2m, E(K, N)) + 0n))
・・・式(16)
なお、式(15)~式(16)における「+」は、ビットごとの排他的論理和を表す。また、式(15)~式(16)におけるmult(・,・)は、ガロア体GF(2n)上の2つの元の乗算を表す。また、式(15)における2iは、ガロア体GF(2n)上の2のi乗を表す。また、式(16)における「0n」は、0がn個並べられたビット列を表す。また、式(16)におけるmsb_n’(・)は、入力に対して上位n’ビットの値を出力する関数である。
また、認証暗号化装置100の第1計算手段140は、認証暗号化装置100の平文入力手段110が出力する平文M の平文ブロックM[i]のうち、任意のs<n であるs ビットの部分系列Ms[i] を加算する。
具体的には、第1計算手段140は、Ms[1],Ms[2],・・・,Ms[m-1]のビットごとの排他的論理和をチェックサムSUM とする。次いで、第1計算手段140は、s ビットのチェックサムSUM と、最終の平文ブロックM[m]とを出力する。
例えば、M[i]をMs[i] に変換するために、第1計算手段140は、M[i]の上位s ビットの値を抽出すればよい。M[i]の上位s ビットの値が抽出される場合、第1計算手段140は、以下のようにチェックサムSUM を計算する。
SUM = msb_s(M[1]) + msb_s(M[2]) + ・・・ + msb_s(M[m-1]) ・・・式(17)
また、認証暗号化装置100の第2暗号化手段150は、認証暗号化装置100の第1計算手段140が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第2暗号化手段150は、変換された後のチェックサムSUM を、初期ベクトル生成手段120が出力する初期ベクトルN と、第1計算手段140が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
具体的には、第2暗号化手段150は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、n’=n の場合とn’≠n の場合とで使い分けられるTweak と秘密鍵とから一意に定められるマスク値と、適当なパディング関数でn ビットの値に変換されたM[m]を加算する。
次いで、第2暗号化手段150は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。
例えば、認証暗号化装置100の第1暗号化手段130が(N, 1),(N, 2),・・・,(N, m) の各Tweak を用いた場合、第2暗号化手段150は、n’=n のときは(N, m, 1) のTweak 、n’≠n のときは(N, m, 2) のTweak をそれぞれ用いればよい。
例えば、n’≠n のとき、第2暗号化手段150による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)
次に、本具体例における認証復号装置200を構成する各手段が有する具体的な機能をそれぞれ説明する。最初に、認証復号装置200の暗号文入力手段210が出力する暗号文C が、(m-1) 個のn ビットの暗号文ブロックC[1],C[2],・・・,C[m-1] と、n’<=n であるn’ビットの暗号文ブロックC[m]とで構成されているとする。
認証復号装置200の復号手段230は、認証暗号化装置100の第1暗号化手段130の逆関数として作用する。すなわち、復号手段230は、認証復号装置200の初期ベクトル入力手段220が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号文C を復号する。具体的には、復号手段230は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
例えば、復号手段230は、暗号文ブロック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])と復号する。
また、復号手段230は、暗号文ブロックC[m]に対して、n ビットの固定値Fix 、および秘密鍵K 、Tweak(N, m) を用いて、M[m] = TE(K, (N, m), Fix) + C[m]と復号する。最終的に、復号手段230は、平文M = M[1]M[2]・・・M[m]を生成する。
例えば、認証暗号化装置100の第1暗号化手段130がXEX*モードのTweakable ブロック暗号で平文M を暗号化している場合、復号手段230は、秘密鍵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)) ・・・式(18)
また、復号手段230は、以下のように暗号文ブロックC[m]を復号できる。
M[m] = C[m] + msb_n’(Pad_n) (Pad_n = E(K, mult(2m, E(K, N)) + 0n))
・・・式(19)
また、認証復号装置200の第2計算手段240は、認証復号装置200の復号手段230が出力する平文M の平文ブロックM[i]のうち、任意のs<n であるs ビットの部分系列Ms[i] を加算する。
具体的には、第2計算手段240は、Ms[1],Ms[2],・・・,Ms[m-1] の排他的論理和をチェックサムSUM とする。次いで、第2計算手段240は、s ビットのチェックサムSUM と、最終の平文ブロックM[m]とを出力する。すなわち、第2計算手段240が実行する処理は、認証暗号化装置100の第1計算手段140が実行する処理と同様である。
また、認証復号装置200の第3暗号化手段250は、認証復号装置200の第2計算手段240が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第3暗号化手段250は、変換された後のチェックサムSUM を、初期ベクトル入力手段220が出力する初期ベクトルN と、第2計算手段240が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
具体的には、第3暗号化手段250は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、n’=n の場合とn’≠n の場合とで使い分けられるTweak と秘密鍵とから一意に定められるマスク値と、適当なパディング関数でn ビットの値に変換されたM[m]を加算する。
次いで、第3暗号化手段250は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT’を生成する。すなわち、第3暗号化手段250が実行する処理は、認証暗号化装置100の第2暗号化手段150が実行する処理と同様である。
図5は、認証暗号化装置100による認証暗号化処理の具体例を示す説明図である。
例えば、認証暗号化装置100の第1暗号化手段130は、図5に示す暗号化処理を行う。すなわち、第1暗号化手段130は、平文M を構成する(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]を、初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号化する。
図5に示すように、第1暗号化手段130は、平文ブロック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))
また、図5に示すように、第1暗号化手段130は、平文ブロックM[m]に対して、n ビットの固定値Fix 、および秘密鍵K 、Δ(K, (N, m)) を用いて、以下のように暗号化する。
C[m] = M[m] + msb_n’(Pad_n) (Pad_n = E(K, Δ(K, (N, m)) + 0n))
最終的に、第1暗号化手段130は、暗号文C = C[1]C[2]・・・C[m]を生成する。
なお、認証復号装置200の復号手段230が暗号文入力手段210が出力する暗号文C に対して実行する復号処理は、図5に示す暗号化処理の逆処理になる。
また、認証暗号化装置100の第1計算手段140は、図5に示すチェックサム計算処理を行う。すなわち、第1計算手段140は、認証暗号化装置100の平文入力手段110が出力する平文M の平文ブロックM[i]のうち、任意のs<n であるs ビットの部分系列Ms[1],Ms[2],・・・,Ms[m-1] の排他的論理和をビットごとにとる。例えば、第1計算手段140は、式(17)の計算を行う。
第1計算手段140は、ビットごとの排他的論理和をチェックサムSUM とする。次いで、第1計算手段140は、s ビットのチェックサムSUM と、最終の平文ブロックM[m]とを出力する。なお、認証復号装置200の第2計算手段240が、復号手段230が出力する平文M に対して実行するチェックサム計算処理も、図5に示すチェックサム計算処理と同様である。
また、認証暗号化装置100の第2暗号化手段150は、図5に示すタグ生成処理を行う。すなわち、第2暗号化手段150は、認証暗号化装置100の第1計算手段140が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第2暗号化手段150は、変換された後のチェックサムSUM を、初期ベクトル生成手段120が出力する初期ベクトルN と、第1計算手段140が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
図5に示すように、第2暗号化手段150は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に加算されるTweak と秘密鍵とから一意に定められるマスク値を、n’=n の場合とn’≠n の場合とで使い分けている。また、第2暗号化手段150は、適当なパディング関数でn ビットの値に変換されたM[m]も加算する。
また、図5に示すように、第2暗号化手段150は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。なお、認証復号装置200の第3暗号化手段250が第2計算手段240が出力するs ビットのチェックサムSUM に対して実行するタグ生成処理も、図5に示すタグ生成処理と同様である。
また、本具体例の認証暗号化装置100の第1計算手段140は以下のようにチェックサムを計算し、第2暗号化手段150は以下のようにタグを生成してもよい。以下、本具体例の変形例を説明する。
第1計算手段140は、認証暗号化装置100の平文入力手段110が出力する平文M の平文ブロックM[i]のうち任意のn/2 ビットの部分系列のビットごとの排他的論理和を、M[1]からM[m-1]に渡ってとる。次いで、第1計算手段140は、ビットごとの排他的論理和をチェックサムSUM とし、n/2 ビットのチェックサムSUM と最終の平文ブロックM[m]とを出力する。
次いで、認証暗号化装置100の第2暗号化手段150は、第1計算手段140が出力するn/2 ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第2暗号化手段150は、変換された後のチェックサムSUM を、初期ベクトル生成手段120が出力する初期ベクトルN と、第1計算手段140が出力するn’ビットの平文ブロックM[m]とを用いて、Tweakable ブロック暗号で暗号化する。
具体的には、第2暗号化手段150は、n ビットのデータを入出力するプリミティブの入力、または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値と、適当なパディング関数でn ビットの値に変換されたM[m]を加算する。
次いで、第2暗号化手段150は、暗号化で得られたn ビットのTag_nを、適当な分割関数を用いて2つのn/2 ビットのTag1とTag2に分割する。次いで、第2暗号化手段150は、n’=n のときはT=Tag1、n’≠n のときはT=Tag2として、n/2 ビットのタグT を生成する。例えば、タグT は、以下のように生成される。
T = Tag1 = (msb_(n/2))(Tag_n) (n’=n) ・・・式(20)
T = Tag2 = (lsb_(n/2))(Tag_n) (n’≠n) ・・・式(21)
なお、式(20)における(msb_(n/2))(・)は、入力に対して上位n/2 ビットの値を出力する関数である。また、式(21)における(lsb_(n/2))(・)は、入力に対して下位n/2 ビットの値を出力する関数である。
第2暗号化手段150が分割関数を用いる場合、使用されるTweak の場合分けが無くなる。使用されるTweak の場合分けは、平文にパディング処理が施されたか否かが見分けられるように行われる。
しかし、タグの長さがn/2 ビットである場合、第2暗号化手段150は、チェックサムがTweakable 暗号で暗号化されたn ビットの結果を2つに分割した後であっても場合分けを実行できる。使用されるTweak の場合分けよりも、使用される暗号化されたn/2 ビットの値の場合分けの方が、より効率的に行われる。
なお、本具体例の認証復号装置200の第2計算手段240も、上述した認証暗号化装置100の第1計算手段140によるチェックサム計算処理と同様のチェックサム計算処理を実行することによって、復号手段230が出力する平文M を基にチェックサムを計算してもよい。
また、本具体例の認証復号装置200の第3暗号化手段250も、上述した認証暗号化装置100の第2暗号化手段150によるタグ生成処理と同様のタグ生成処理を実行することによって、第2計算手段240が出力するチェックサムSUM を基にn/2 ビットのタグT’を生成してもよい。以上の変形例により、使用されるTweak の場合分けが削除される。
[効果の説明]
第1の実施形態および第2の実施形態のように、全てs<n であるs ビットのブロックからチェックサムが計算されると安全性が保たれなくなり、タグが容易に偽造される。
第1の具体例における認証暗号化方式での最終ブロックは、CTR モードのブロックである。タグの偽造を防いで安全性を保つためには、n’<=n であるn’ビットの最終の平文ブロックM[m]全て、すなわちn’ビットの値がチェックサムSUM に加算されることが求められる。
しかし、n’ビットの値がチェックサムSUM に加算されると、得られるチェックサムSUM のビット数は、s ビットとn’ビットのいずれか大きい方になる。n’>sである場合、ステートサイズが(n-s) ビット削減されるという、第1の実施形態および第2の実施形態で期待される効果が得られない。
よって、最終の平文ブロックM[m]のみTweakable ブロック暗号で用いられるマスク値に加算されれば、安全性と効率性が同時に実現される。
第1の具体例の認証暗号化装置100と認証復号装置200のn/2<=s<nの場合の安全性は、第1の実施形態および第2の実施形態と同様、s=n の場合の安全性と漸近的に等しくなる。
以下、s=n/2 の場合のOCB における安全性を説明する。処理単位が1ブロック暗号化の場合、上述したように通常のOCB のステートサイズは3nビットである。また、OCB に適用された第1の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても2.5nビットである。すなわち、0.5nビットのステートサイズが削減される。
また、処理単位が任意のiブロック暗号化の場合、通常のOCB のステートサイズは、(2i+1)nビットである。また、OCB に適用された第1の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても(2i+0.5)n ビットである。やはり、0.5nビットのステートサイズが削減される。
また、漸近的な安全性のオーダは、通常のOCB による方式、およびOCB に適用された第1の具体例で実現される方式共に、O(2(n/2)) である。すなわち、漸近的な安全性は損なわれずに、暗号化処理と復号処理の両方でステートサイズが0.5nビット削減される。よって、第1の具体例の認証暗号化装置100と認証復号装置200は、安全性と効率性を同時に実現可能である。
<具体例2>
本具体例における認証暗号化装置100と認証復号装置200は、特許文献5に記載されているOTR に適用可能である。以下、本具体例における認証暗号化装置100を構成する各手段が有する具体的な機能をそれぞれ説明する。
最初に、認証暗号化装置100の平文入力手段110が出力する平文M が、(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]とで構成されているとする。また、m を偶数とし、m/2=hmとする。
認証暗号化装置100の第1暗号化手段130は、認証暗号化装置100の初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで平文M を暗号化する。
具体的には、第1暗号化手段130は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
例えば、第1暗号化手段130は、秘密鍵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] ・・・式(22)
C[2j] = TE(K, (N, j, 1), C[2j-1]) + M[2j-1] ・・・式(23)
C[m] = TE(K, (N, hm, 0), M[m-1]) + M[m] ・・・式(24)
C[m-1] = TE(K, (N, hm, 1), C[m]) + M[m-1] ・・・式(25)
最終的に、第1暗号化手段130は、暗号文C = C[1]C[2]・・・C[m]を生成する。
なお、m が奇数である場合、第1暗号化手段130は、M[1], ・・・,M[m-1] までは上記のように暗号化する。次いで、第1暗号化手段130は、固定値がTweakable ブロック暗号で暗号化されたn ビットのPad_n とM[m]を加算することによって、M[m]を暗号化する。n’≠n のとき、第1暗号化手段130は、Pad_n を適当な短縮関数を用いてn ビットの値に変換する。
例えばm が奇数である場合、hm = (m+1)/2とする。第1暗号化手段130は、平文ブロック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] ・・・式(26)
C[2j] = E(K, Δ(K, (N, j, 1)) + C[2j-1]) + M[2j-1] ・・・式(27)
C[m] = msb_n’(Pad_n) + M[m] (Pad_n = E(K, Δ(K, (N, hm, 0)) + 0n))
・・・式(28)
なお、式(26)~式(28)における「+」は、ビットごとの排他的論理和を表す。また、式(26)~式(28)におけるΔ(K, Tw) は、秘密鍵K とTweak Twとから一意に定められるn ビットのマスク値である。また、式(28)における「0n」は、0がn個並べられたビット列を表す。また、式(28)におけるmsb_n’(・)は、入力に対して上位n’ビットの値を出力する関数である。
また、認証暗号化装置100の第1計算手段140は、認証暗号化装置100の平文入力手段110が出力する平文M と、初期ベクトル生成手段120が出力する初期ベクトルN と、Tweakable ブロック暗号TEとを用いて、Z = TE(K, (N, hm, 0), M[m-1]) を計算する。
具体的には、第1計算手段140は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
第1計算手段140は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]と、算出されたZ のうち任意のs ビットの部分系列を加算することによって、s ビットのチェックサムSUM を計算する。
例えば、M[2i] をMs[2i]に変換するために、第1計算手段140は、M[2i] の上位s ビットの値を抽出すればよい。上位s ビットの値を抽出する場合、第1計算手段140は、以下のようにチェックサムSUM を計算する。
SUM = msb_s(M[2]) + msb_s(M[4]) + ・・・ + msb_s(M[m-2]) + msb_s(Z)
・・・式(29)
また、m が奇数である場合、hm = (m+1)/2とする。第1計算手段140は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]の排他的論理和をビットごとにとる。
第1計算手段140は、ビットごとの排他的論理和を適当なパディング関数を用いてn’ビットの値に変換し、変換された値とn’ビットの平文ブロックM[m]を加算することによって、チェックサムSUM を計算する。第1計算手段140は、計算されたチェックサムSUM を出力する。
また、認証暗号化装置100の第2暗号化手段150は、認証暗号化装置100の第1計算手段140が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第2暗号化手段150は、変換された後のチェックサムSUM を、初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
具体的には、第2暗号化手段150は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。Tweak は、m が偶数である場合または奇数である場合、およびn’=n である場合またはn’≠n である場合の組み合わせで得られる4通りのケースごとに使い分けられる。
次いで、第2暗号化手段150は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。
例えば、認証暗号化装置100の第1暗号化手段130が(N, 1, 0),(N, 1, 1),(N, 2, 0),(N, 2, 1),・・・,(N, hm, 0),(N, hm, 1)の各Tweak を用いたとする。認証暗号化装置100の第2暗号化手段150は、m が偶数かつn’=n のときは(N, hm, 3, 0) のTweak 、m が偶数かつn’≠n のときは(N, hm, 1, 1) のTweak をそれぞれ用いればよい。
また、第2暗号化手段150は、m が奇数かつn’=n のときは(N, hm, 2, 0) のTweak 、m が奇数かつn’≠n のときは(N, hm, 0, 1) のTweak をそれぞれ用いればよい。
例えば、m が偶数かつn’≠n のとき、第2暗号化手段150によるXEモードのTweakable ブロック暗号での暗号化は、以下の式で表される。
SUM_n = SUM || 0(n-s)
Tag_n = E(K, Δ(K, (N, hm, 1, 1)) + SUM_n)
T = msb_t(Tag_n)
次に、本具体例における認証復号装置200を構成する各手段が有する具体的な機能をそれぞれ説明する。最初に、認証復号装置200の暗号文入力手段210が出力する暗号文C が、(m-1) 個のn ビットの暗号文ブロックC[1],C[2],・・・,C[m-1] と、n’<=n であるn’ビットの暗号文ブロックC[m]とで構成されているとする。また、m を偶数とし、m/2=hmとする。
認証復号装置200の復号手段230は、認証暗号化装置100の第1暗号化手段130の逆関数として作用する。すなわち、復号手段230は、認証復号装置200の初期ベクトル入力手段220が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号文C を復号する。
具体的には、復号手段230は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
例えば、復号手段230は、秘密鍵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]
最終的に、復号手段230は、平文M = M[1]M[2]・・・M[m]を生成する。例えば、復号手段230は、秘密鍵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] ・・・式(30)
M[2j] = E(K, Δ(K, (N, j, 0)) + M[2j-1]) + C[2j-1] ・・・式(31)
M[m-1] = E(K, Δ(K, (N, hm, 1)) + (C[m]||10(n-n’-1)))) + C[m-1]
・・・式(32)
M[m] = msb_n’(E(K, Δ(K, (N, hm, 0)) + M[m-1])) + C[m] ・・・式(33)
なお、式(30)~式(33)における「+」は、ビットごとの排他的論理和を表す。また、式(30)~式(33)におけるΔ(K, Tw) は、秘密鍵K とTweak Twとから一意に定められるn ビットのマスク値である。また、式(32)における「0n」は、0がn個並べられたビット列を表す。また、式(33)におけるmsb_n’(・)は、入力に対して上位n’ビットを出力する関数である。
また、認証復号装置200の復号手段230が出力する平文M が、(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m]とで構成されているとする。また、m を偶数とし、m/2=hmとする。
認証復号装置200の第2計算手段240は、認証復号装置200の復号手段230が出力する平文M と、初期ベクトル入力手段220が出力する初期ベクトルN と、Tweakable ブロック暗号TEとを用いて、Z = TE(K, (N, hm, 0), M[m-1]) を計算する。
具体的には、第2計算手段240は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。
第2計算手段240は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]と、算出されたZ のうち任意のs ビットの部分系列を加算することによって、s ビットのチェックサムSUM を計算する。すなわち、第2計算手段240によるチェックサム計算処理は、認証暗号化装置100の第1計算手段140によるチェックサム計算処理と同様である。
また、認証復号装置200の第3暗号化手段250は、認証復号装置200の第2計算手段240が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第3暗号化手段250は、変換された後のチェックサムSUM を、初期ベクトル入力手段220が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
具体的には、第3暗号化手段250は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、Tweak と秘密鍵とから一意に定められるマスク値を加算する。Tweak は、m が偶数である場合または奇数である場合、およびn’=n である場合またはn’≠n である場合の組み合わせで得られる4通りのケースごとに使い分けられる。
次いで、第3暗号化手段250は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT’を生成する。すなわち、第3暗号化手段250によるタグ生成処理は、認証暗号化装置100の第2暗号化手段150によるタグ生成処理と同様である。
図6は、認証暗号化装置100による認証暗号化処理の他の具体例を示す説明図である。
例えば、認証暗号化装置100の第1暗号化手段130は、図6に示す暗号化処理を行う。すなわち、第1暗号化手段130は、平文M を構成する(m-1) 個のn ビットの平文ブロックM[1],M[2],・・・,M[m-1] と、n’<=n であるn’ビットの平文ブロックM[m](m は偶数、m/2=hm)を、初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号TEで暗号化する。
図6に示すように、第1暗号化手段130は、秘密鍵K 、およびTweak(N, j, 0),(N, j, 1)(1<=j<=hm-1)を用いて、各平文ブロックを暗号化する。例えば、第1暗号化手段130は、式(22)~式(25)の計算を行う。
最終的に、第1暗号化手段130は、暗号文C = C[1]C[2]・・・C[m]を生成する。なお、認証復号装置200の復号手段230が暗号文入力手段210が出力する暗号文C に対して実行する復号処理は、図6に示す暗号化処理の逆処理になる。
また、認証暗号化装置100の第1計算手段140は、図6に示すチェックサム計算処理を行う。すなわち、第1計算手段140は、認証暗号化装置100の平文入力手段110が出力する平文M と、初期ベクトル生成手段120が出力する初期ベクトルN と、Tweakable ブロック暗号TEとを用いて、Z = TE(K, (N, hm, 0), M[m-1]) を計算する。
第1計算手段140は、M[2i](i=1,・・・,hm-1)のうち、任意のs<n であるs ビットの部分系列Ms[2i]と、算出されたZ のうち任意のs ビットの部分系列を加算することによって、s ビットのチェックサムSUM を計算する。
例えば、第1計算手段140は、式(29)の計算を行う。なお、認証復号装置200の第2計算手段240が、復号手段230が出力する平文M に対して実行するチェックサム計算処理も、図6に示すチェックサム計算処理と同様である。
また、認証暗号化装置100の第2暗号化手段150は、図6に示すタグ生成処理を行う。すなわち、第2暗号化手段150は、認証暗号化装置100の第1計算手段140が出力するs ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第2暗号化手段150は、変換された後のチェックサムSUM を、初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
図6に示すように、第2暗号化手段150は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に加算されるTweak と秘密鍵とから一意に定められるマスク値を使い分けている。
具体的には、第2暗号化手段150は、m が偶数である場合または奇数である場合、およびn’=n である場合またはn’≠n である場合の組み合わせで得られる4通りのケースごとにマスク値を使い分けている。次いで、第2暗号化手段150は、暗号化されたチェックサムSUM を適当な短縮関数を用いてt ビット(t<=n)の値に変換することによって、タグT を生成する。
なお、認証復号装置200の第3暗号化手段250が第2計算手段240が出力するs ビットのチェックサムSUM に対して実行するタグ生成処理は、図6に示すタグ生成処理と同様である。
また、本具体例の認証暗号化装置100の第1計算手段140は以下のようにチェックサムを計算し、第2暗号化手段150は以下のようにタグを生成してもよい。以下、本具体例の変形例を説明する。
第1計算手段140は、M[2i](i=1,・・・,hm-1)のうち、任意のn/2 ビットの部分系列Mn/2[2i]と、算出されたZ のうち任意のn/2 ビットの部分系列を加算することによって、n/2 ビットのチェックサムSUM を計算する。
また、認証暗号化装置100の第2暗号化手段150は、認証暗号化装置100の第1計算手段140が出力するn/2 ビットのチェックサムSUM を、適当なパディング関数を用いてn ビットの値に変換する。
次いで、第2暗号化手段150は、変換された後のチェックサムSUM を、初期ベクトル生成手段120が出力する初期ベクトルN を用いて、Tweakable ブロック暗号で暗号化する。
具体的には、第2暗号化手段150は、n ビットのデータを入出力するブロック暗号の入力または入力と出力、または鍵なし暗号学的置換の入力または入力と出力に、m が偶数である場合と奇数である場合とで使い分けられるTweak と秘密鍵とから一意に定められるマスク値を加算する。
次いで、第2暗号化手段150は、暗号化で得られたn ビットのTag_nを、適当な分割関数を用いて2つのn/2 ビットのTag1とTag2に分割する。次いで、第2暗号化手段150は、n’=n のときはT=Tag1、n’≠n のときはT=Tag2として、n/2 ビットのタグT を生成する。例えば、タグT は、以下のように生成される。
T = Tag1 = (msb_(n/2))(Tag_n) (n’=n) ・・・式(34)
T = Tag2 = (lsb_(n/2))(Tag_n) (n’≠n) ・・・式(35)
なお、式(34)における(msb_(n/2))(・)は、入力に対して上位n/2 ビットの値を出力する関数である。また、式(35)における(lsb_(n/2))(・)は、入力に対して下位n/2 ビットの値を出力する関数である。
上記のように、第2暗号化手段150が分割関数を用いる場合、使用されるTweak が4種類から2種類に削減される。すなわち、使用されるTweak の種類が半分に削減される。
タグの長さがn/2 ビットである場合、第2暗号化手段150は、チェックサムがTweakable 暗号で暗号化されたn ビットの結果を2つに分割した後であっても場合分けを実行できる。よって、4通りの場合分けが2通りの場合分けに削減される。使用されるTweak の場合分けよりも、使用される暗号化されたn/2 ビットの値の場合分けの方が、より効率的に行われる。
なお、本具体例の認証復号装置200の第2計算手段240も、上述した認証暗号化装置100の第1計算手段140によるチェックサム計算処理と同様のチェックサム計算処理を実行することによって、復号手段230が出力する平文M を基にチェックサムを計算してもよい。
また、本具体例の認証復号装置200の第3暗号化手段250も、上述した認証暗号化装置100の第2暗号化手段150によるタグ生成処理と同様のタグ生成処理を実行することによって、第2計算手段240が出力するチェックサムSUM を基にn/2 ビットのタグT’を生成してもよい。以上の変形例により、使用されるTweak の種類が半分に削減される。
[効果の説明]
第2の具体例の認証暗号化装置100と認証復号装置200のn/2<=s<nの場合の安全性は、第1の実施形態および第2の実施形態と同様、s=n の場合の安全性と漸近的に等しくなる。
以下、s=n/2 の場合のOTR における安全性を説明する。処理単位が1つのFeistel 構造である場合、通常のOTR のステートサイズは4nビットである。4nビットの内訳は、1つのFeistel 構造で平文を処理するために用いられるメモリ分の2nビットと、マスクの値を保持するメモリ分のn ビットと、計算されたチェックサムの値を保持するメモリ分のn ビットである。
また、OTR に適用された第2の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても3.5nビットである。すなわち、0.5nビットのステートサイズが削減される。
また、処理単位が任意のi個のFeistel 構造である場合、通常のOTR のステートサイズは、(3i+1)nビットである。また、OTR に適用された第2の具体例で実現される方式のステートサイズは、暗号化と復号のどちらにおいても(3i+0.5)n ビットである。やはり、0.5nビットのステートサイズが削減される。
また、漸近的な安全性のオーダは、通常のOTR による方式、およびOTR に適用された第2の具体例で実現される方式共に、O(2(n/2)) である。すなわち、漸近的な安全性は損なわれずに、暗号化処理と復号処理の両方でステートサイズが0.5nビット削減される。よって、第2の具体例の認証暗号化装置100と認証復号装置200は、安全性と効率性を同時に実現可能である。
以下、第1の実施形態の認証暗号化装置100のハードウェア構成の具体例、および第2の実施形態の認証復号装置200のハードウェア構成の具体例を説明する。
図7は、本発明による認証暗号化装置100のハードウェア構成例を示す説明図である。図7に示す認証暗号化装置100は、CPU(Central Processing Unit)101と、主記憶部102と、通信部103と、補助記憶部104とを備える。また、ユーザが操作するための入力部105や、ユーザに処理結果または処理内容の経過を提示するための出力部106を備えてもよい。
図8は、本発明による認証復号装置200のハードウェア構成例を示す説明図である。図8に示す認証復号装置200は、CPU201と、主記憶部202と、通信部203と、補助記憶部204とを備える。また、ユーザが操作するための入力部205や、ユーザに処理結果または処理内容の経過を提示するための出力部206を備えてもよい。
主記憶部102および主記憶部202は、データの作業領域やデータの一時退避領域として用いられる。主記憶部102および主記憶部202は、例えばRAM(Random Access Memory)である。
通信部103および通信部203は、有線のネットワークまたは無線のネットワーク(情報通信ネットワーク)を介して、周辺機器との間でデータを入力および出力する機能を有する。
補助記憶部104および補助記憶部204は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、半導体メモリが挙げられる。
入力部105および入力部205は、データや処理命令を入力する機能を有する。入力部105および入力部205は、例えばキーボードやマウス等の入力デバイスである。平文入力手段110は、例えば入力部105により実現される。また、暗号文入力手段210、および初期ベクトル入力手段220は、例えば入力部205により実現される。
出力部106および出力部206は、データを出力する機能を有する。出力部106および出力部206は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。暗号文出力手段160は、例えば出力部106により実現される。また、平文出力手段270は、例えば出力部206により実現される。
また、図7に示すように、認証暗号化装置100において、各構成要素は、システムバス107に接続されている。また、図8に示すように、認証復号装置200において、各構成要素は、システムバス207に接続されている。
補助記憶部104は、例えば、図1に示す初期ベクトル生成手段120、第1暗号化手段130、第1計算手段140、および第2暗号化手段150を実現するためのプログラムを記憶している。
なお、認証暗号化装置100は、ハードウェアにより実現されてもよい。例えば、認証暗号化装置100は、内部に図1に示すような機能を実現するプログラムが組み込まれたLSI(Large Scale Integration)等のハードウェア部品が含まれる回路が実装されてもよい。
また、認証暗号化装置100は、図7に示すCPU101が図1に示す各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現されてもよい。
ソフトウェアにより実現される場合、CPU101が補助記憶部104に格納されているプログラムを、主記憶部102にロードして実行し、認証暗号化装置100の動作を制御することによって、各機能がソフトウェアにより実現される。
補助記憶部204は、例えば、図3に示す復号手段230、第2計算手段240、第3暗号化手段250、およびタグ検査手段260を実現するためのプログラムを記憶している。
なお、認証復号装置200は、ハードウェアにより実現されてもよい。例えば、認証復号装置200は、内部に図3に示すような機能を実現するプログラムが組み込まれたLSI等のハードウェア部品が含まれる回路が実装されてもよい。
また、認証復号装置200は、図8に示すCPU201が図3に示す各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現されてもよい。
ソフトウェアにより実現される場合、CPU201が補助記憶部204に格納されているプログラムを、主記憶部202にロードして実行し、認証復号装置200の動作を制御することによって、各機能がソフトウェアにより実現される。
また、各構成要素の一部または全部は、汎用の回路(circuitry)または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
次に、本発明の概要を説明する。図9は、本発明による認証暗号化装置の概要を示すブロック図である。本発明による認証暗号化装置10は、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数(例えば、式(10)の暗号化関数)に、暗号化対象の平文を構成する所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値(例えば、Tweak )と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段11(例えば、第1暗号化手段130)と、平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段12(例えば、第1計算手段140)とを備える。
そのような構成により、認証暗号化装置は、漸近的な安全性を低下させずにチェックサムの計算で増大するステートサイズを削減できる。
また、暗号化手段11は、暗号化関数の出力にマスク値を加算することによって平文ブロックを暗号化してもよい。
そのような構成により、認証暗号化装置は、XEX モードのTweakable ブロック暗号で平文ブロックを暗号化できる。
また、認証暗号化装置10は、認証タグを生成する生成手段(例えば、第2暗号化手段150)を備え、生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段11で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化し、暗号化されたチェックサムを所定のビット数以下のビット数のデータに変換することによって認証タグを生成してもよい。
そのような構成により、認証暗号化装置は、ビット数が所定のビット数未満であるチェックサムを基に認証タグを生成できる。
また、生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化してもよい。
そのような構成により、認証暗号化装置は、XEX モードのTweakable ブロック暗号でチェックサムを暗号化できる。
また、暗号化手段11は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、平文を構成しビット数が所定のビット数以下である最終ブロックとを加算することによって最終ブロックを暗号化してもよい。
そのような構成により、認証暗号化装置は、ビット数が所定のビット数以下の最終ブロックを暗号化できる。
また、算出手段12は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、最終ブロックを所定のビット数のデータに変換し、変換されたチェックサムを、最終ブロックのビット数が所定のビット数に一致するか否かで値が異なる調整値、秘密鍵、および変換された最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化してもよい。
そのような構成により、認証暗号化装置は、認証タグが容易に偽造されることを防ぐことができる。
また、第1ビット列のビット数は、所定のビット数の半分の数であり、算出手段12は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、最終ブロックを所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段11で用いられた調整値以外の調整値、秘密鍵、および変換された最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化し、暗号化されたチェックサムを第1ビット列のビット数の2つのデータに分割し、最終ブロックのビット数が所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力してもよい。
そのような構成により、認証暗号化装置は、Tweak を使い分けずに認証タグを生成できる。
また、暗号化手段11は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が所定のビット数以下である最終ブロックを、前から順に2つのブロックの組ごとに分け、分けられた組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、分けられた組の中の偶数番目の平文ブロックとを加算することによって当該組の奇数番目の暗号文ブロックを生成し、マスク値が加算された奇数番目の暗号文ブロックが入力された暗号化関数の出力と、分けられた組の中の奇数番目の平文ブロックとを加算することによって当該組の偶数番目の暗号文ブロックを生成し、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、最終組の中の偶数番目の平文ブロックとを加算することによって最終組の偶数番目の暗号文ブロックを生成し、マスク値が加算された最終組の偶数番目の暗号文ブロックが入力された暗号化関数の出力と、最終組の中の奇数番目の平文ブロックとを加算することによって最終組の奇数番目の暗号文ブロックを生成してもよい。
そのような構成により、認証暗号化装置は、OTR に適用可能になる。
また、算出手段12は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、変換されたチェックサムを、最終ブロックのビット数が所定のビット数に一致するか否かで値が異なる調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって変換されたチェックサムを暗号化してもよい。
そのような構成により、認証暗号化装置は、OTR に適用可能になる。
また、第1ビット列のビット数は、所定のビット数の半分の数であり、算出手段12は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、暗号化されたチェックサムを第1ビット列のビット数の2つのデータに分割し、最終ブロックのビット数が所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力してもよい。
そのような構成により、認証暗号化装置は、Tweak を使い分けずに認証タグを生成できる。
また、認証暗号化装置10は、暗号化手段11により生成された暗号文と認証タグとを併せて出力する暗号文出力手段(例えば、暗号文出力手段160)を備えてもよい。また、認証暗号化装置10は、暗号化対象の平文が入力される平文入力手段(例えば、平文入力手段110)を備えてもよい。また、認証暗号化装置10は、初期ベクトルを生成する初期ベクトル生成手段(例えば、初期ベクトル生成手段120)を備えてもよい。
また、図10は、本発明による認証復号装置の概要を示すブロック図である。本発明による認証復号装置20は、所定のビット数のデータが入力されると所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値(例えば、Tweak )と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号手段21(例えば、復号手段230)と、暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段22(例えば、第2計算手段240)とを備える。
そのような構成により、認証復号装置は、漸近的な安全性を低下させずにチェックサムの計算で増大するステートサイズを削減できる。
また、復号手段21は、復号関数の出力にマスク値を加算することによって暗号文ブロックを復号してもよい。
そのような構成により、認証復号装置は、XEX モードのTweakable ブロック暗号で暗号文ブロックを復号できる。
また、認証復号装置20は、認証タグを生成する生成手段(例えば、第3暗号化手段250)を備え、生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムと、復号手段21で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で、所定のビット数のデータが入力されると所定のビット数のデータを出力する暗号化関数に入力することによって変換されたチェックサムを暗号化し、暗号化されたチェックサムを所定のビット数以下のビット数のデータに変換することによって認証タグを生成してもよい。
そのような構成により、認証復号装置は、ビット数が所定のビット数未満であるチェックサムを基に認証タグを生成できる。
また、生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化してもよい。
そのような構成により、認証復号装置は、XEX モードのTweakable ブロック暗号でチェックサムを暗号化できる。
また、認証復号装置20は、復号処理の検証結果を出力する出力手段(例えば、タグ検査手段260および平文出力手段270)を備え、出力手段は、暗号文と共に入力された認証タグと一致する認証タグが生成されると受理を表す検証結果を出力し、入力された認証タグと一致しない認証タグが生成されると不受理を表す検証結果を出力してもよい。
そのような構成により、認証復号装置は、復号処理の検証結果を提示できる。
また、出力手段は、受理を表す検証結果と共に復号された平文を出力し、不受理を表す検証結果と共にエラーメッセージを出力してもよい。
そのような構成により、認証復号装置は、復号処理の検証結果に応じて平文またはエラーメッセージを提示できる。
また、認証復号装置20は、復号対象の暗号文と認証タグとが入力される暗号文入力手段(例えば、暗号文入力手段210)を備えてもよい。また、認証復号装置20は、初期ベクトルが入力される初期ベクトル入力手段(例えば、初期ベクトル入力手段220)を備えてもよい。
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下に限られない。
(付記1)所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化手段と、前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備えることを特徴とする認証暗号化装置。
(付記2)暗号化手段は、暗号化関数の出力にマスク値を加算することによって平文ブロックを暗号化する付記1記載の認証暗号化装置。
(付記3)認証タグを生成する生成手段を備え、前記生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記所定のビット数以下のビット数のデータに変換することによって前記認証タグを生成する付記1または付記2記載の認証暗号化装置。
(付記4)生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化する付記3記載の認証暗号化装置。
(付記5)暗号化手段は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、平文を構成しビット数が前記所定のビット数以下である最終ブロックとを加算することによって前記最終ブロックを暗号化する付記3または付記4記載の認証暗号化装置。
(付記6)算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記5記載の認証暗号化装置。
(付記7)第1ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第1ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記第1ビット列のビット数の2つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記5記載の認証暗号化装置。
(付記8)暗号化手段は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に2つのブロックの組ごとに分け、分けられた組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の偶数番目の平文ブロックとを加算することによって当該組の奇数番目の暗号文ブロックを生成し、マスク値が加算された前記奇数番目の暗号文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の奇数番目の平文ブロックとを加算することによって当該組の偶数番目の暗号文ブロックを生成し、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力と、前記最終組の中の偶数番目の平文ブロックとを加算することによって前記最終組の偶数番目の暗号文ブロックを生成し、マスク値が加算された前記最終組の偶数番目の暗号文ブロックが入力された暗号化関数の出力と、前記最終組の中の奇数番目の平文ブロックとを加算することによって前記最終組の奇数番目の暗号文ブロックを生成する付記3または付記4記載の認証暗号化装置。
(付記9)算出手段は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記8記載の認証暗号化装置。
(付記10)第1ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、平文を構成する最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第1ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、暗号化されたチェックサムを前記第1ビット列のビット数の2つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記8記載の認証暗号化装置。
(付記11)所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号手段と、前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出手段とを備えることを特徴とする認証復号装置。
(付記12)復号手段は、復号関数の出力にマスク値を加算することによって暗号文ブロックを復号する付記11記載の認証復号装置。
(付記13)認証タグを生成する生成手段を備え、前記生成手段は、算出されたチェックサムを所定のビット数のデータに変換し、変換されたチェックサムと、復号手段で用いられた調整値以外の調整値と秘密鍵とから一意に定められるマスク値を加算した上で、前記所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記所定のビット数以下のビット数のデータに変換することによって前記認証タグを生成する付記11または付記12記載の認証復号装置。
(付記14)生成手段は、暗号化関数の出力にマスク値を加算することによってチェックサムを暗号化する付記13記載の認証復号装置。
(付記15)復号手段は、マスク値が加算された所定のビット数の固定値が入力された暗号化関数の出力と、暗号文を構成しビット数が前記所定のビット数以下である最終ブロックとを加算することによって前記最終ブロックを復号する付記13または付記14記載の認証復号装置。
(付記16)算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記15記載の認証復号装置。
(付記17)第1ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、平文を構成する最終ブロック以外の複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第1ビット列における対応ビットの排他的論理和をチェックサムとして算出し、生成手段は、前記最終ブロックを前記所定のビット数のデータに変換し、変換されたチェックサムを、暗号化手段で用いられた調整値以外の調整値、秘密鍵、および変換された前記最終ブロックから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化し、暗号化されたチェックサムを前記第1ビット列のビット数の2つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記15記載の認証復号装置。
(付記18)復号手段は、暗号文を構成する最終ブロック以外の奇数個の所定のビット数の暗号文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に2つのブロックの組ごとに分け、分けられた組の中のマスク値が加算された奇数番目の暗号文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の偶数番目の暗号文ブロックとを加算することによって当該組の奇数番目の平文ブロックを生成し、マスク値が加算された前記奇数番目の平文ブロックが入力された暗号化関数の出力と、前記分けられた組の中の奇数番目の暗号文ブロックとを加算することによって当該組の偶数番目の平文ブロックを生成し、分けられた最終組の中のマスク値が加算された偶数番目の暗号文ブロックが入力された暗号化関数の出力と、前記最終組の中の奇数番目の暗号文ブロックとを加算することによって前記最終組の奇数番目の平文ブロックを生成し、マスク値が加算された前記最終組の奇数番目の平文ブロックが入力された暗号化関数の出力と、前記最終組の中の偶数番目の暗号文ブロックとを加算することによって前記最終組の偶数番目の平文ブロックを生成する付記13または付記14記載の認証復号装置。
(付記19)算出手段は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に2つのブロックの組ごとに分け、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、前記平文を構成する前記最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、変換されたチェックサムを、前記最終ブロックのビット数が前記所定のビット数に一致するか否かで値が異なる調整値と秘密鍵とから一意に定められるマスク値を加算した上で暗号化関数に入力することによって前記変換されたチェックサムを暗号化する付記18記載の認証復号装置。
(付記20)第1ビット列のビット数は、所定のビット数の半分の数であり、算出手段は、平文を構成する最終ブロック以外の奇数個の所定のビット数の平文ブロックおよびビット数が前記所定のビット数以下である最終ブロックを、前から順に2つのブロックの組ごとに分け、分けられた最終組の中のマスク値が加算された奇数番目の平文ブロックが入力された暗号化関数の出力を計算し、前記平文を構成する前記最終ブロック以外の偶数番目の各平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の前記第1ビット列における対応ビットの排他的論理和を計算し、計算された排他的論理和と計算された出力との排他的論理和をビットごとにとることによってチェックサムを算出し、生成手段は、暗号化されたチェックサムを前記第1ビット列のビット数の2つのデータに分割し、前記最終ブロックのビット数が前記所定のビット数に一致するか否かに応じて分割された各データのいずれかを認証タグとして出力する付記18記載の認証復号装置。
(付記21)復号処理の検証結果を出力する出力手段を備え、前記出力手段は、暗号文と共に入力された認証タグと一致する認証タグが生成されると受理を表す検証結果を出力し、前記入力された認証タグと一致しない認証タグが生成されると不受理を表す検証結果を出力する付記13から付記20のうちのいずれかに記載の認証復号装置。
(付記22)出力手段は、受理を表す検証結果と共に復号された平文を出力し、不受理を表す検証結果と共にエラーメッセージを出力する付記21記載の認証復号装置。
(付記23)所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化し、前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出することを特徴とする認証暗号化方法。
(付記24)所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号し、前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出することを特徴とする認証復号方法。
(付記25)コンピュータに、所定のビット数のデータが入力されると前記所定のビット数のデータを出力する暗号化関数に、暗号化対象の平文を構成する前記所定のビット数の平文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって平文ブロックを暗号化する暗号化処理、および前記平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理を実行させるための認証暗号化プログラム。
(付記26)コンピュータに、所定のビット数のデータが入力されると前記所定のビット数のデータを出力する復号関数に、復号対象の暗号文を構成する前記所定のビット数の暗号文ブロックを過去の値に重複しない初期ベクトルを含む調整値と秘密鍵とから一意に定められるマスク値を加算した上で入力することによって暗号文ブロックを復号する復号処理、および前記暗号文が復号された平文を構成する複数の平文ブロックそれぞれのうちの前記所定のビット数未満のビット数の第1ビット列における対応ビットの排他的論理和をチェックサムとして算出する算出処理を実行させるための認証復号プログラム。
産業上の利用の可能性
本発明は、無線または有線のデータ通信における暗号化とメッセージ認証、または無線センサデバイスと情報収集サーバとの間で行われる通信の保護に好適に適用される。