JP6881111B2 - 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム - Google Patents
暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム Download PDFInfo
- Publication number
- JP6881111B2 JP6881111B2 JP2017134879A JP2017134879A JP6881111B2 JP 6881111 B2 JP6881111 B2 JP 6881111B2 JP 2017134879 A JP2017134879 A JP 2017134879A JP 2017134879 A JP2017134879 A JP 2017134879A JP 6881111 B2 JP6881111 B2 JP 6881111B2
- Authority
- JP
- Japan
- Prior art keywords
- state
- exclusive
- bit
- bit string
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Description
上記の課題を解決するために、本発明の他の態様によれば、復号データ生成装置は、秘密鍵Kのビット長をcビットとし、rビットのレート部分とcビットのキャパシティ部分とを含むbビットの情報をステートとし、メッセージMのビット長を|M|とし、追加データAのビット長を|A|とし、 |A x |を1以上c/2以下の整数の何れかとし、暗号化データCとタグTと追加データAに含まれる(|A|-|A x |)ビット分の値A'とを受け取る入力部と、 m=1,2,…,|M|/rとし、|M|/r個の暗号化データC m を含む暗号化データC=(C 1 ,C 2 ,…,C |M|/r )に含まれる暗号化データC |M|/r とcビットのタグTとを連結した値をステートS m の初期値S |M|/r とし、ステートS |M|/r のキャパシティ部分S C,|M|/r とcビットの秘密鍵Kとの排他的論理和S C,|M|/r xor Kを求める第三排他的論理和部と、 暗号化する際に用いた置換fの逆関数をf -1 とし、ステートS |M|/r のキャパシティ部分S C,|M|/r を排他的論理和S C,|M|/r xor Kに置換えたビット列を逆関数f -1 を用いて置換し、ステートS |M|/r-1 を求める第三置換部と、 m=1,2,…,(|M|/r)-1において、ステートS m のレート部分S R,m と、暗号化データC m との排他的論理和S R,m xor C m を復号データM m+1,D として出力する第四排他的論理和部と、 ステートS m のレート部分S R,m を暗号化データC m に置換えたビット列を逆関数f -1 を用いて置換し、ステートS m-1 を求める第四置換部と、 値A'のビット長を|A'|とし、n=1,2,…,|A'|/rとし、値A'を|A'|/r個に分割して得られる各値をA' n とし、予め定めたビット列と秘密鍵Kとを連結した値を復号ステートの初期値S 0,D とし、bビットの復号ステートS n-1,D のレート部分S R,n-1,D のrビットに対し、値A' n との排他的論理和S R,n-1,D xor A' n を求める第五排他的論理和部と、 復号ステートS n-1,D のレート部分S R,n-1,D を排他的論理和S R,n-1,D xor A' n に置換えたビット列を置換fを用いて置換し、復号ステートS n,D を求める第五置換部と、 復号ステートS |A'|/r,D のキャパシティ部分S C,|A'|/r,D と、|A x |ビット分の0からなるビット列と(c-|A x |)ビット分の所定のビット列gとを連結して得られるビット列00…0||gとの排他的論理和S C,|A'|/r,D xor 00…0||gを計算し、計算結果により復号ステートS |A'|/r,D を更新する境界除去部と、 更新された復号ステートS |A'|/r,D のキャパシティ部分S C,|A'|/r,D のビット列gに対応する部分と、ステートS 0 のキャパシティ部分S C,0 のビット列gに対応する部分とが一致するか否かによりメッセージ認証を行い、一致する場合には、キャパシティ部分S C,|A'|/r,D の|A x |ビット分の0からなるビット列に対応する部分と、キャパシティ部分S C,0 の|A x |ビット分の0からなるビット列に対応する部分との排他的論理和をA x として出力し、復号ステートS |A'|/r,D のレート部分S R,|A'|/r,D とステートS 0 のレート部分S R,0 との排他的論理和を復号データM 1,D として出力する認証部とを含む。
上記の課題を解決するために、本発明の他の態様によれば、追加データ付き認証暗号システムは、暗号化データ生成装置と復号データ生成装置とを含む。暗号化データ生成装置は、秘密鍵Kのビット長をcビットとし、rビットのレート部分とcビットのキャパシティ部分とを含むbビットの情報をステートとし、メッセージMのビット長を|M|とし、追加データAのビット長を|A|とし、|Ax|を1以上c/2以下の整数の何れかとし、追加データAを秘匿対象の|Ax|ビット分の値Axと(|A|-|Ax|)ビット分の値A'とに分割する分割部と、n=1,2,…,|A'|/rとし、値A'を|A'|/r個に分割して得られる各値をA'nとし、予め定めたビット列と秘密鍵Kとを連結した値を暗号化ステートの初期値S0とし、bビットの暗号化ステートSn-1のレート部分SR,n-1のrビットに対し、値A'nとの排他的論理和SR,n-1 xor A'nを求める第一排他的論理和部と、bビットのビット列dをbビットのビット列eに置換する関数を置換fとし、暗号化ステートSn-1のレート部分SR,n-1を排他的論理和SR,n-1 xor A'nに置換えたビット列を置換fを用いて置換し、暗号化ステートSnを求める第一置換部と、暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rと、値Axと(c-|Ax|)ビット分の所定のビット列gとを連結して得られるビット列Ax||gとの排他的論理和SC,|A'|/r xor Ax||gを計算し、暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rを排他的論理和SC,|A'|/r xor Ax||gに置換えたビット列を新たな暗号化ステートS|A'|/rとする境界設定部と、m=1,2,…,|M|/rとし、メッセージMを|M|/r個に分割して得られる各値をMmとし、bビットの暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1のrビットに対し、メッセージMmとの排他的論理和SR,|A'|/r+m-1 xor Mmを求める第二排他的論理和部と、暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1を排他的論理和SR,|A'|/r+m-1 xor Mmに置換えたビット列を置換fを用いて置換し、暗号化ステートS|A'|/r+mを求め、暗号化ステートS|A'|/r+mのレート部分のrビットを暗号化データCmとし、|M|/r個の暗号化データCmを含む暗号化データC=(C1,C2,…,C|M|/r)を出力する第二置換部と、暗号化ステートS|A'|/r+|M|/rのキャパシティ部分SC,|A'|/r+|M|/rと秘密鍵Kとの排他的論理和をタグTとして出力するタグ生成部と、暗号化データCとタグTと値A'とを出力する出力部を含む。復号データ生成装置は、暗号化データCとタグTと追加データAに含まれる(|A|-|Ax|)ビット分の値A'とを受け取る入力部と、暗号化データC=(C1,C2,…,C|M|/r)に含まれる暗号化データC|M|/rとcビットのタグTとを連結した値をステートSmの初期値S|M|/rとし、ステートS|M|/rのキャパシティ部分SC,|M|/rとcビットの秘密鍵Kとの排他的論理和SC,|M|/r xor Kを求める第三排他的論理和部と、置換fの逆関数をf-1とし、ステートS|M|/rのキャパシティ部分SC,|M|/rを排他的論理和SC,|M|/r xor Kに置換えたビット列を逆関数f-1を用いて置換し、ステートS|M|/r-1を求める第三置換部と、m=1,2,…,(|M|/r)-1において、ステートSmのレート部分SR,mと、暗号化データCmとの排他的論理和SR,m xor Cmを復号データMm+1,Dとして出力する第四排他的論理和部と、ステートSmのレート部分SR,mを暗号化データCmに置換えたビット列を逆関数f-1を用いて置換し、ステートSm-1を求める第四置換部と、予め定めたビット列と秘密鍵Kとを連結した値を復号ステートの初期値S0,Dとし、bビットの復号ステートSn-1,Dのレート部分SR,n-1,Dのrビットに対し、値A'nとの排他的論理和SR,n-1,D xor A'nを求める第五排他的論理和部と、復号ステートSn-1,Dのレート部分SR,n-1,Dを排他的論理和SR,n-1,D xor A'nに置換えたビット列を置換fを用いて置換し、復号ステートSn,Dを求める第五置換部と、復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dと、|Ax|ビット分の0からなるビット列と(c-|Ax|)ビット分の所定のビット列gとを連結して得られるビット列00…0||gとの排他的論理和SC,|A'|/r,Dxor 00…0||gを計算し、計算結果により復号ステートS|A'|/r,Dを更新する境界除去部と、更新された復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dのビット列gに対応する部分と、ステートS0のキャパシティ部分SC,0のビット列gに対応する部分とが一致するか否かによりメッセージ認証を行い、一致する場合には、キャパシティ部分SC,|A'|/r,Dの|Ax|ビット分の0からなるビット列に対応する部分と、キャパシティ部分SC,0の|Ax|ビット分の0からなるビット列に対応する部分との排他的論理和をAxとして出力し、復号ステートS|A'|/r,Dのレート部分SR,|A'|/r,DとステートS0のレート部分SR,0との排他的論理和を復号データM1,Dとして出力する認証部とを含む。
この発明の実施形態は、暗号化処理の手順2.において、追加データAの下位c/2ビットの値をキャパシティ部分に排他的論理和する。また、追加データAの下位c/2ビットは受信者に別途送る必要が無く、暗号文CとタグTの中に組み込むことで、受信者が復号の途中で復元する。このような構成とすることで、追加データAの下位c/2ビットを秘密ナンスとして利用し、秘密ナンスを利用できるAPEを実現することができる。
図10、図11を参照して、実施形態の追加データ付き認証暗号システムが実行する追加データ付き認証暗号方法のうち、暗号化装置1が実行する暗号化方法について説明する。
暗号化装置1の記憶部10には、rビットのレート部分とcビットのキャパシティ部分とからなるbビットのステート(以下、復号装置2の記憶部20に記憶されるステートと区別するために、暗号化ステートとも呼ぶ)と、復号装置2との間であらかじめ共有した共通鍵K(以下、秘密鍵Kともいう)とが記憶されている。例えば、ステートは512ビットとし、レート部分は256ビット、キャパシティ部分は256ビットに構成する(すなわち、b=512, r=256, c=256)。レート部分とキャパシティ部分の長さの比は、処理速度と安全性のトレードオフの関係となっている。レート部分の長さが大きくなると、処理速度は向上するが安全性は低下する。逆に、キャパシティ部分の長さが大きくなると、安全性が向上するが処理速度が低下する。したがって、b, r, cの各値は、所望の処理速度と安全性のバランスを鑑みて適宜設計すればよい。
ステップS11において、暗号化装置1の入力部11へ、追加データAとメッセージMとの組(A, M)が入力される。追加データAとメッセージMとはいずれもr ビットの倍長のデータとする。なお、追加データAとメッセージMとをr ビットの倍長のデータに限定するものではなく、r ビットの倍長ではない場合には、例えば、10*パディングを施して、r ビットの倍長のデータに変更して本実施形態を適用してもよい。入力部11は、メッセージMをメッセージ計算部16へ、追加データAを分割部13へ入力する。
ステップS12において、暗号化装置1の初期化部12は、予め定めたビット列と秘密鍵Kとを連結した値を暗号化ステートの初期値S0として設定する。例えば、初期化部12は、記憶部10に記憶されている暗号化ステートのうち、レート部分の値を0(すなわち、すべてのビットが0のビット列)に、キャパシティ部分の値を秘密鍵Kの値に設定して初期化する。
ステップS13において、暗号化装置1の分割部13は、入力部11から追加データAを受け取り、追加データAを秘匿対象の|Ax|ビット分の値Axと(|A|-|Ax|)ビット分の値A'とに分割する。ここで、|Ax|を1以上c/2以下の整数の何れかとする。本実施形態では、|Ax|をc/2とし、追加データAを上位(|A|-(c/2)|)ビット分の値A'と、下位c/2ビット分の値Axとに分割する。値Axを例えば秘密ナンスとして利用することができる。|Ax|と(|A|-|Ax|)との比は、秘密ナンスとして利用できる大きさ(情報量)と安全性のトレードオフの関係となっている。|Ax|が大きくなると、より大きな情報量の秘密ナンスを利用できるが安全性は低下する。逆に、|Ax|が小さくなると、安全性が向上するが情報量が小さくなる。したがって、|Ax|の値は、所望の秘密ナンスの情報量と安全性のバランスを鑑みて適宜設計すればよい。なお、(|A|-|Ax|)ビット分の値A'はr ビットの倍長のデータとする。ただし、値A'をr ビットの倍長のデータに限定するものではなく、r ビットの倍長ではない場合には、例えば、10*パディングを施して、r ビットの倍長のデータに変更して本実施形態を適用してもよい。
ステップS14において、暗号化装置1の追加データ計算部14は、分割部13から値A'を受け取り、その値A'を用いて記憶部10に記憶された暗号化ステートの値を更新する。
追加データ計算部14の分割部141は、値A'をrビットのブロックに分割する。なお、値A'のビット長を|A'|とし、n=1,2,…,|A'|/rとし、値A'を|A'|/r個に分割して得られる各値をA'nとする。
追加データ計算部14の排他的論理和部142は、bビットのステートSn-1のレート部分SR,n-1のrビットに対し、値A'nとの排他的論理和SR,n-1 xor A'nを求める。
追加データ計算部14の置換部143は、暗号化ステートSn-1のレート部分SR,n-1を排他的論理和SR,n-1 xor A'nに置換えたビット列を置換fを用いて置換し、暗号化ステートSnを求める。なお、置換f:{0, 1}b→{0, 1}bは、bビットのビット列dをbビットのビット列eに置換する関数であり、入力された値を復元する逆関数f-1:{0, 1}b→{0, 1}b(bビットのビット列eをbビットのビット列dに置換する関数)を定義できる関数である。置換fとしては、例えば、非特許文献2に記載されている技術を用いることができる。n=1から順にn=|A'|/rまで排他的論理和部142及び置換部143の処理を繰り返す。
ステップS15において、暗号化装置1の境界設定部15は、追加データ計算部14から暗号化ステートS|A'|/rを、分割部13から値Axを受け取り、暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rと、値Axと(c-|Ax|)ビット分の所定のビット列gとを連結して得られるビット列Ax||gとの排他的論理和SC,|A'|/r xor Ax||gを計算し、暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rを排他的論理和SC,|A'|/r xor Ax||gに置換えたビット列を新たな暗号化ステートS|A'|/rとする。本実施形態では、(c-|Ax|)=c/2とし、ビット列gは、1ビットの1、(c/2)-1ビットの0からなるビット列である。本実施形態では、c/2ビットの値Ax、1ビットの1、(c/2)-1ビットの0の順番で上位ビットから連結する。この操作は、受信者が暗号化データCと追加データAとの境界を判別できるようにするために行われるものである。なお、ビット列gは復号処理に先立ち予め暗号化装置1と復号装置2との間であらかじめ共有しておく。
ステップS16において、暗号化装置1のメッセージ計算部16は、入力部11からメッセージMを受け取り、そのメッセージMを用いて記憶部10に記憶された暗号化ステートの値を更新する。
メッセージ計算部16の分割部161は、メッセージMをrビットのブロックに分割する。メッセージMのビット長を|M|とし、m=1,2,…,|M|/rとし、メッセージMを|M|/r個に分割して得られる各値をMmとする。
メッセージ計算部16の排他的論理和部162は、bビットの暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1のrビットに対し、メッセージMmとの排他的論理和SR,|A'|/r+m-1 xor Mmを求める。
メッセージ計算部16の置換部163は、暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1を排他的論理和SR,|A'|/r+m-1xor Mmに置換えたビット列を置換fを用いて置換し、暗号化ステートS|A'|/r+mを求め、暗号化ステートS|A'|/r+mのレート部分のrビットを暗号化データCmとし、|M|/r個の暗号化データCmを含む暗号化データC=(C1,C2,…,C|M|/r)を出力する。
ステップS17において、暗号化装置1のタグ生成部17は、暗号化ステートS|A'|/r+|M|/rをメッセージ計算部16から受け取り、秘密鍵Kを記憶部10から取り出し、暗号化ステートS|A'|/r+|M|/rのキャパシティ部分SC,|A'|/r+|M|/rと秘密鍵Kとの排他的論理和を計算し、その計算結果をタグTとして出力する。
ステップS18において、暗号化装置1の出力部18は、暗号化データCをメッセージ計算部16から、タグTをタグ生成部17から、値A'を分割部から受け取り、暗号化データCとタグTと追加データAに含まれる(|A|-|Ax|)ビット分の値A'との組(C, T, A')を復号装置2へ送信する。
図12から図13を参照して、実施形態の追加データ付き認証暗号システムが実行する追加データ付き認証暗号方法のうち、復号装置2が実行する復号方法について説明する。
復号装置2の記憶部20には、rビットのレート部分とcビットのキャパシティ部分とからなるbビットの2つのステート(以下、暗号化装置1の記憶部10に記憶される暗号化ステートと区別するために、一方のステートを単にステートと呼び、他方を復号ステートと呼ぶ)と、暗号化装置1との間であらかじめ共有した秘密鍵Kとが記憶されている。b, r, cの各値は、暗号化装置1の記憶部10に記憶されたステートと同じものとする。
ステップS21において、復号装置2の入力部21へ、暗号化装置1から受信した暗号化データCとタグTと追加データAに含まれる(|A|-|Ax|)ビット分の値A'との組(C, T, A')が入力される。本実施形態では、値A'は追加データAに含まれる上位(|A|-(c/2)|)ビット分のデータである。入力部21は、暗号化データCの最終ブロックとタグTとを第一初期化部22へ、値A'を追加データ計算部26へ、暗号化データCの最終ブロック以外の各ブロックを暗号化データ逆計算部24へそれぞれ入力する。
ステップS22において、復号装置2の第一初期化部22は、入力部21から暗号化データCの最終ブロックとタグTとを受け取り、記憶部20に記憶されているステートのうち、レート部分の値を暗号化データCの最終ブロックの値に、キャパシティ部分の値をタグTの値に設定して初期化する。言い換えると、第一初期化部22は、暗号化データC=(C1,C2,…,C|M|/r)に含まれる暗号化データC|M|/rとcビットのタグTとを連結した値をステートSmの初期値S|M|/rとして設定する。なお、以降の処理において、m=|M|/r,(|M|/r)-1,…,0の順でステートSmを更新していく。
ステップS23において、復号装置2のタグ復号部23は、第一初期化部22からステートS|M|/rを受け取り、そのキャパシティ部分SC,|M|/rとcビットの秘密鍵Kとの排他的論理和SC,|M|/r xor Kを求める。
ステップS24において、復号装置2の暗号化データ逆計算部24は、入力部21から暗号化データCの最終ブロック以外の各ブロックを受け取り、その暗号化データCの各ブロックCmを用いて記憶部20に記憶されたステートSmの値を更新する。
暗号化データ逆計算部24の逆置換部241は、bビットのステート全体に対し、置換fの逆関数f-1を計算し、その計算結果を新たなステートの値とする。例えば、m=|M|/r(暗号化データCの最終ブロック)において、逆置換部241は、ステートS|M|/rのキャパシティ部分SC,|M|/rを排他的論理和SC,|M|/rxor Kに置換えたビット列を逆関数f-1を用いて置換し、ステートS|M|/r-1を求める。また、m=(|M|/r)-1,(|M|/r)-2,…,1において、逆置換部241は、ステートSmのレート部分SR,mを暗号化データCmに置換えたビット列を逆関数f-1を用いて置換し、ステートSm-1を求める。なお、逆関数f-1:{0, 1}b→{0, 1}bは、上述の通り、置換fの逆関数fであり、bビットのビット列eをbビットのビット列dに置換する関数である。
m=|M|/r-1,(|M|/r)-2,…,2,1において、暗号化データ逆計算部24の排他的論理和部242は、ステートSmのレート部分SR,mと、暗号化データCmとの排他的論理和SR,m xor Cmを計算し、計算結果を復号データMm+1,Dとして出力部30から出力する。なお、|M|/r個の復号データMm,Dを結合したものを最終的に出力する復号データMD=(M1,D||M2,D||…||M|M|/r,D)とする。ただし、復号データM1,D(第一ブロックの暗号化データを復号したもの)は、後述する認証部29において得られる値を用いる。改ざん等なされていなければM=MDとなる。
ステップS26において、復号装置2の追加データ計算部26は、入力部21から値A'を受け取り、その値A'を用いて記憶部20に記憶された復号ステートの値を更新する。この場合、追加データ計算部26は以下のように構成する。
追加データ計算部26の分割部261は、値A'をrビットのブロックに分割する。なお、値A'のビット長を|A'|とし、n=1,2,…,|A'|/rとし、|A'|/r個に分割された値A'をA'nとする。
追加データ計算部26の排他的論理和部263は、bビットの復号ステートSn-1,Dのレート部分SR,n-1,Dのrビットに対し、値A'nとの排他的論理和SR,n-1,D xor A'nを求める。なお、復号ステートSn-1,Dの初期値S0,Dは、暗号化装置1で用いた初期値S0と同じ値を用いる。
追加データ計算部26の置換部264は、復号ステートSn-1,Dのレート部分SR,n-1,Dを排他的論理和SR,n-1,Dxor A'nに置換えたビット列を置換fを用いて置換し、復号ステートSn,Dを求める。置換部163と同様の方法により置換することができる。
ステップS27において、復号装置2の境界除去部27は、追加データ計算部26から復号ステートS|A'|/r,Dを受け取り、復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dと、|Ax|ビット分の0からなるビット列と(c-|Ax|)ビット分の所定のビット列gとを連結して得られるビット列00…0||gとの排他的論理和SC,|A'|/r,D xor 00…0||gを計算し、その計算結果により復号ステートS|A'|/r,Dを更新する。なお、本実施形態では、前述の通り、|Ax|=c/2であり、ビット列gは、1ビットの1、(c/2)-1ビットの0からなるビット列である。
ステップS29において、復号装置2の認証部29は、境界除去部27で更新された復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,D(復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dと、|Ax|ビット分の0からなるビット列と(c-|Ax|)ビット分の所定のビット列gとを連結して得られるビット列00…0||gとの排他的論理和SC,|A'|/r,Dxor 00…0||g)のビット列gに対応する部分と、ステートS0のキャパシティ部分SC,0のビット列gに対応する部分とが一致するか否かによりメッセージ認証を行う。例えば、復号ステートS|A'|/r,DとステートS0とを例えば記憶部20などに記憶する。その後、記憶部20に記憶されたSC,|A'|/r,Dのビット列gに対応する部分と、SC,0のビット列gに対応する部分とを比較する。2つの値が等しい場合は、ステップS301へ処理を進め、復号ステートS|A'|/r,Dのレート部分SR,|A'|/r,DとステートS0のレート部分SR,0との排他的論理和を、復号データMDの第一ブロック(復号データM1,D)として、更新された復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dの|Ax|ビット分の0からなるビット列に対応する部分と、ステートS0のキャパシティ部分SC,0の|Ax|ビット分の0からなるビット列に対応する部分との排他的論理和をAxとして、出力部30から出力する。二つの値が等しくない場合は、ステップS302へ処理を進め、復号に失敗した旨を表すエラーコードを出力部30から出力する。
以上の構成により、処理量や送信量を抑えつつ、秘密ナンスを利用できるAPEを実現することができる。また、APEでは、(C,T,A)の全ビットを受信者に送らなければならないため、通信コストが大きいが、本実施形態では、(C,T,A)に代えて、(C,T,A')を送信するため、c/2ビット(|Ax|=|A|-|A'|)分だけ通信コストを抑えることができる。さらに、従来のAPEでは、Aの長さを|A|としたとき、暗号化でAを処理する際に|A|/r回の置換fを計算する必要があり、計算コストが大きいが、本実施形態では、r<c/2の場合、暗号化処理でAxはメッセージの第一ブロックと同時に計算されるため、置換fを計算する回数が減る。これにより、計算コストが改善される。同様に、復号処理ではAではなくA'しか計算されないため、関数fを計算する回数が減る。これにより、計算コストが改善される。
第一実施形態と異なる部分を中心に説明する。
図14、図15を参照して、実施形態の追加データ付き認証暗号システムが実行する追加データ付き認証暗号方法のうち、暗号化装置1が実行する暗号化方法について説明する。
ステップS11において、暗号化装置1の入力部11へ、追加データAとメッセージMとの組(A, M)が入力される。入力部11は、メッセージMを分割部13へ、追加データAを追加データ計算部14及び出力部18へ入力する。
ステップS12において、暗号化装置1の初期化部12は、予め定めたビット列と秘密鍵Kとを連結した値を暗号化ステートの初期値S0として設定する。
ステップS13において、暗号化装置1の分割部13は、入力部11からメッセージMを受け取り、メッセージMを|Mx|ビット分の値Mxと(|M|-|Mx|)ビット分の値M'とに分割する。ここで、|Mx|を1以上c/2以下の整数の何れかとする。本実施形態では、|Mx|をc/2とし、メッセージMを上位(|M|-(c/2)|)ビット分の値M'と、下位c/2ビット分の値Mxとに分割する。|Mx|と(|M|-|Mx|)との比は、抑えることができる処理量や送信量と安全性のトレードオフの関係となっている。|Mx|が大きくなると、より大きく処理量や送信量を抑えることができるが安全性は低下する。逆に、|Mx|が小さくなると、安全性が向上するが処理量や送信量を抑える量が小さくなる。したがって、|Mx|の値は、所望の抑制量と安全性のバランスを鑑みて適宜設計すればよい。なお、(|M|-|Mx|)ビット分の値M'はr ビットの倍長のデータとする。ただし、値M'をr ビットの倍長のデータに限定するものではなく、r ビットの倍長ではない場合には、例えば、10*パディングを施して、r ビットの倍長のデータに変更して本実施形態を適用してもよい。
ステップS14において、暗号化装置1の追加データ計算部14は、入力部11から追加データAを受け取り、追加データAを用いて記憶部10に記憶された暗号化ステートの値を更新する。この構成は従来技術と同様の方法により実現できる。例えば、追加データ計算部14は以下のように構成する。
追加データ計算部14の分割部141は、追加メッセージAをrビットのブロックに分割する。なお、追加メッセージAのビット長を|A|とし、n=1,2,…,|A|/rとし、追加メッセージAを|A|/r個に分割して得られる各値をAnとする。
追加データ計算部14の排他的論理和部142は、bビットのステートSn-1のレート部分SR,n-1のrビットに対し、値Anとの排他的論理和SR,n-1 xor Anを求める。
追加データ計算部14の置換部143は、暗号化ステートSn-1のレート部分SR,n-1を排他的論理和SR,n-1 xor Anに置換えたビット列を置換fを用いて置換し、暗号化ステートSnを求める。n=1から順にn=|A|/rまで排他的論理和部142及び置換部143の処理を繰り返す。
ステップS15において、暗号化装置1の境界設定部15は、追加データ計算部14から暗号化ステートS|A|/rを、分割部13から値Mxを受け取り、暗号化ステートS|A|/rのキャパシティ部分SC,|A|/rと、値Mxと(c-|Mx|)ビット分の所定のビット列g2とを連結して得られるビット列Mx||g2との排他的論理和SC,|A|/r xor Mx||g2を計算し、暗号化ステートS|A|/rのキャパシティ部分SC,|A|/rを排他的論理和SC,|A|/r xor Mx||g2に置換えたビット列を新たな暗号化ステートS|A|/rとする。本実施形態では、(c-|Mx|)=c/2とし、ビット列g2は、1ビットの1、(c/2)-1ビットの0からなるビット列である。本実施形態では、c/2ビットの値Mx、1ビットの1、(c/2)-1ビットの0の順番で上位ビットから連結する。なお、ビット列g2は復号処理に先立ち予め暗号化装置1と復号装置2との間であらかじめ共有しておく。
ステップS16において、暗号化装置1のメッセージ計算部16は、分割部13から値M'を受け取り、その値M'を用いて記憶部10に記憶された暗号化ステートの値を更新する。
メッセージ計算部16の分割部161は、値M'をrビットのブロックに分割する。値M'のビット長を|M'|とし、m=1,2,…,|M'|/rとし、値M'を|M'|/r個に分割して得られる各値をM'mとする。
メッセージ計算部16の排他的論理和部162は、bビットの暗号化ステートS|A|/r+m-1のレート部分SR,|A|/r+m-1のrビットに対し、値M'mとの排他的論理和SR,|A|/r+m-1 xor M'mを求める。
メッセージ計算部16の置換部163は、暗号化ステートS|A|/r+m-1のレート部分SR,|A|/r+m-1を排他的論理和SR,|A|/r+m-1xor M'mに置換えたビット列を置換fを用いて置換し、暗号化ステートS|A|/r+mを求め、暗号化ステートS|A|/r+mのレート部分のrビットを暗号化データCmとし、|M'|/r個の暗号化データCmを含む暗号化データC=(C1,C2,…,C|M'|/r)を出力する。
ステップS17において、暗号化装置1のタグ生成部17は、暗号化ステートS|A|/r+|M'|/rをメッセージ計算部16から受け取り、秘密鍵Kを記憶部10から取り出し、暗号化ステートS|A|/r+|M'|/rのキャパシティ部分SC,|A|/r+|M'|/rと秘密鍵Kとの排他的論理和を計算し、その計算結果をタグTとして出力する。
ステップS18において、暗号化装置1の出力部18は、暗号化データCをメッセージ計算部16から、タグTをタグ生成部17から、追加データAを入力部11から受け取り、暗号化データCとタグTと追加データAとの組(C, T, A)を復号装置2へ送信する。
図16から図17を参照して、実施形態の追加データ付き認証暗号システムが実行する追加データ付き認証暗号方法のうち、復号装置2が実行する復号方法について説明する。
ステップS21において、復号装置2の入力部21へ、暗号化装置1から受信した暗号化データCとタグTと追加データAとの組(C, T, A)が入力される。入力部21は、暗号化データCの最終ブロックとタグTとを第一初期化部22へ、追加データAを追加データ計算部26へ、暗号化データCの最終ブロック以外の各ブロックを暗号化データ逆計算部24へそれぞれ入力する。
ステップS22において、復号装置2の第一初期化部22は、入力部21から暗号化データCの最終ブロックとタグTとを受け取り、記憶部20に記憶されているステートのうち、レート部分の値を暗号化データCの最終ブロックの値に、キャパシティ部分の値をタグTの値に設定して初期化する。言い換えると、第一初期化部22は、暗号化データC=(C1,C2,…,C|M'|/r)に含まれる暗号化データC|M'|/rとcビットのタグTとを連結した値をステートSmの初期値S|M'|/rとして設定する。なお、以降の処理において、m=|M'|/r,(|M|/r)-1,…,0の順でステートSmを更新していく。
ステップS23において、復号装置2のタグ復号部23は、第一初期化部22からステートS|M'|/rを受け取り、そのキャパシティ部分SC,|M'|/rとcビットの秘密鍵Kとの排他的論理和SC,|M'|/r xor Kを求める。
ステップS24において、復号装置2の暗号化データ逆計算部24は、入力部21から暗号化データCの最終ブロック以外の各ブロックを受け取り、その暗号化データCの各ブロックCmを用いて記憶部20に記憶されたステートSmの値を更新する。
暗号化データ逆計算部24の逆置換部241は、bビットのステート全体に対し、置換fの逆関数f-1を計算し、その計算結果を新たなステートの値とする。例えば、m=|M'|/r(暗号化データCの最終ブロック)において、逆置換部241は、ステートS|M'|/rのキャパシティ部分SC,|M'|/rを排他的論理和SC,|M'|/rxor Kに置換えたビット列を逆関数f-1を用いて置換し、ステートS|M'|/r-1を求める。また、m=(|M'|/r)-1,(|M'|/r)-2,…,1において、逆置換部241は、ステートSmのレート部分SR,mを暗号化データCmに置換えたビット列を逆関数f-1を用いて置換し、ステートSm-1を求める。
m=|M'|/r-1,(|M'|/r)-2,…,2,1において、暗号化データ逆計算部24の排他的論理和部242は、ステートSmのレート部分SR,mと、暗号化データCmとの排他的論理和SR,m xor Cmを計算し、計算結果を復号データMm+1,Dとして出力部30から出力する。なお、((|M'|/r)+1)個の復号データMm,Dを結合したものを最終的に出力する復号データMD=(Mx D||M1,D||M2,D||…||M|M'|/r,D)とする。ただし、復号データMx D,M1,D(第一ブロックの暗号化データを復号したもの)は、後述する認証部29において得られる値を用いる。改ざん等なされていなければM=MDとなる。
ステップS26において、復号装置2の追加データ計算部26は、入力部21から追加データAを受け取り、その追加データAを用いて記憶部20に記憶された復号ステートの値を更新する。この場合、追加データ計算部26は以下のように構成する。
追加データ計算部26の分割部261は、追加データAをrビットのブロックに分割する。なお、追加データAのビット長を|A|とし、n=1,2,…,|A|/rとし、|A|/r個に分割された追加データAを値Anとする。
追加データ計算部26の排他的論理和部263は、bビットの復号ステートSn-1,Dのレート部分SR,n-1,Dのrビットに対し、値Anとの排他的論理和SR,n-1,D xor Anを求める。なお、復号ステートSn-1,Dの初期値S0,Dは、暗号化装置1で用いた初期値S0と同じ値を用いる。
追加データ計算部26の置換部264は、復号ステートSn-1,Dのレート部分SR,n-1,Dを排他的論理和SR,n-1,Dxor Anに置換えたビット列を置換fを用いて置換し、復号ステートSn,Dを求める。置換部163と同様の方法により置換することができる。
ステップS27において、復号装置2の境界除去部27は、追加データ計算部26から復号ステートS|A|/r,Dを受け取り、復号ステートS|A|/r,Dのキャパシティ部分SC,|A|/r,Dと、|Mx|ビット分の0からなるビット列と(c-|Mx|)ビット分の所定のビット列g2とを連結して得られるビット列00…0||g2との排他的論理和SC,|A|/r,Dxor 00…0||g2を計算し、その計算結果により復号ステートS|A|/r,Dを更新する。なお、本実施形態では、前述の通り、|Mx|=c/2であり、ビット列g2は、1ビットの1、(c/2)-1ビットの0からなるビット列である。
ステップS29において、復号装置2の認証部29は、境界除去部27で更新された復号ステートS|A|/r,Dのキャパシティ部分SC,|A|/r,D(復号ステートS|A|/r,Dのキャパシティ部分SC,|A|/r,Dと、|Mx|ビット分の0からなるビット列と(c-|Mx|)ビット分の所定のビット列g2とを連結して得られるビット列00…0||g2との排他的論理和SC,|A|/r,D xor 00…0||g2)のビット列g2に対応する部分と、ステートS0のキャパシティ部分SC,0のビット列g2に対応する部分とが一致するか否かによりメッセージ認証を行う。例えば、復号ステートS|A|/r,DとステートS0とを例えば記憶部20などに記憶する。その後、記憶部20に記憶されたSC,|A|/r,Dのビット列g2に対応する部分と、SC,0のビット列g2に対応する部分とを比較する。2つの値が等しい場合は、ステップS301へ処理を進め、復号ステートS|A|/r,Dのレート部分SR,|A|/r,DとステートS0のレート部分SR,0との排他的論理和を、復号データMDの第一ブロック(復号データM1,D)として、更新された復号ステートS|A|/r,Dのキャパシティ部分SC,|A|/r,Dの|Mx|ビット分の0からなるビット列に対応する部分と、ステートS0のキャパシティ部分SC,0の|Mx|ビット分の0からなるビット列に対応する部分との排他的論理和をMxとして、出力部30から出力する。二つの値が等しくない場合は、ステップS302へ処理を進め、復号に失敗した旨を表すエラーコードを出力部30から出力する。
以上の構成により、第一実施形態と同様に、処理量や送信量を抑えることができる。
本発明は上記の実施形態及び変形例に限定されるものではない。例えば、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
また、上記の実施形態及び変形例で説明した各装置における各種の処理機能をコンピュータによって実現してもよい。その場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
Claims (9)
- 暗号化データ生成装置と復号データ生成装置とを含む追加データ付き認証暗号システムであって、
前記暗号化データ生成装置は、
秘密鍵Kのビット長をcビットとし、rビットのレート部分とcビットのキャパシティ部分とを含むbビットの情報をステートとし、メッセージMのビット長を|M|とし、追加データAのビット長を|A|とし、
|Ax|を1以上c/2以下の整数の何れかとし、追加データAを秘匿対象の|Ax|ビット分の値Axと(|A|-|Ax|)ビット分の値A'とに分割する分割部と、
n=1,2,…,|A'|/rとし、前記値A'を|A'|/r個に分割して得られる各値をA'nとし、予め定めたビット列と秘密鍵Kとを連結した値を暗号化ステートの初期値S0とし、bビットの暗号化ステートSn-1のレート部分SR,n-1のrビットに対し、値A'nとの排他的論理和SR,n-1 xor A'nを求める第一排他的論理和部と、
bビットのビット列dをbビットのビット列eに置換する関数を置換fとし、前記暗号化ステートSn-1のレート部分SR,n-1を前記排他的論理和SR,n-1 xor A'nに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を暗号化ステートSnとして求める第一置換部と、
暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rと、前記値Axと(c-|Ax|)ビット分の所定のビット列gとを連結し、連結して得られるビット列Ax||gとの排他的論理和SC,|A'|/rxor Ax||gを計算し、前記暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rを前記排他的論理和SC,|A'|/rxor Ax||gに置換え、置換えたビット列を新たな前記暗号化ステートS|A'|/rとする境界設定部と、
m=1,2,…,|M|/rとし、前記メッセージMを|M|/r個に分割して得られる各値をMmとし、bビットの暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1のrビットに対し、メッセージMmとの排他的論理和SR,|A'|/r+m-1xor Mmを求める第二排他的論理和部と、
前記暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1を前記排他的論理和SR,|A'|/r+m-1xor Mmに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を暗号化ステートS|A'|/r+mとして求め、前記暗号化ステートS|A'|/r+mのレート部分のrビットを暗号化データCmとし、|M|/r個の暗号化データCmを含む暗号化データC=(C1,C2,…,C|M|/r)を出力する第二置換部と、
暗号化ステートS|A'|/r+|M|/rのキャパシティ部分SC,|A'|/r+|M|/rと秘密鍵Kとの排他的論理和をタグTとして出力するタグ生成部と、
前記暗号化データCと前記タグTと前記値A'とを出力する出力部を含み、
前記復号データ生成装置は、
前記暗号化データCと前記タグTと前記追加データAに含まれる(|A|-|Ax|)ビット分の前記値A'とを受け取る入力部と、
前記暗号化データC=(C1,C2,…,C|M|/r)に含まれる暗号化データC|M|/rとcビットの前記タグTとを連結した値をステートSmの初期値S|M|/rとし、ステートS|M|/rのキャパシティ部分SC,|M|/rとcビットの前記秘密鍵Kとの排他的論理和SC,|M|/rxor Kを求める第三排他的論理和部と、
前記置換fの逆関数をf-1とし、前記ステートS|M|/rのキャパシティ部分SC,|M|/rを前記排他的論理和SC,|M|/r xor Kに置換え、置換えたビット列を逆関数f-1を用いて置換し、置換したビット列をステートS|M|/r-1として求める第三置換部と、
m=1,2,…,(|M|/r)-1において、ステートSmのレート部分SR,mと、暗号化データCmとの排他的論理和SR,m xor Cmを復号データMm+1,Dとして出力する第四排他的論理和部と、
前記ステートSmのレート部分SR,mを暗号化データCmに置換え、置換えたビット列を逆関数f-1を用いて置換し、置換したビット列をステートSm-1として求める第四置換部と、
予め定めたビット列と秘密鍵Kとを連結した値を復号ステートの初期値S0,Dとし、bビットの復号ステートSn-1,Dのレート部分SR,n-1,Dのrビットに対し、値A'nとの排他的論理和SR,n-1,D xor A'nを求める第五排他的論理和部と、
前記復号ステートSn-1,Dのレート部分SR,n-1,Dを前記排他的論理和SR,n-1,Dxor A'nに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を復号ステートSn,Dとして求める第五置換部と、
復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dと、|Ax|ビット分の0からなるビット列と(c-|Ax|)ビット分の所定のビット列gとを連結し、連結して得られるビット列00…0||gとの排他的論理和SC,|A'|/r,D xor 00…0||gを計算し、計算結果により復号ステートS|A'|/r,Dを更新する境界除去部と、
更新された復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dのビット列gに対応する部分と、ステートS0のキャパシティ部分SC,0のビット列gに対応する部分とが一致するか否かによりメッセージ認証を行い、一致する場合には、前記キャパシティ部分SC,|A'|/r,Dの|Ax|ビット分の0からなるビット列に対応する部分と、前記キャパシティ部分SC,0の|Ax|ビット分の0からなるビット列に対応する部分との排他的論理和をAxとして出力し、復号ステートS|A'|/r,Dのレート部分SR,|A'|/r,DとステートS0のレート部分SR,0との排他的論理和を復号データM1,Dとして出力する認証部とを含み、
上記置換fは、ランダム置換と区別不能な置換である、
追加データ付き認証暗号システム。 - 暗号化データ生成装置と復号データ生成装置とを含む追加データ付き認証暗号システムであって、
前記暗号化データ生成装置は、
秘密鍵Kのビット長をcビットとし、rビットのレート部分とcビットのキャパシティ部分とを含むbビットの情報をステートとし、メッセージMのビット長を|M|とし、追加データAのビット長を|A|とし、
|Mx|を1以上c/2以下の整数の何れかとし、メッセージMを|Mx|ビット分の値Mxと(|M|-|Mx|)ビット分の値M'とに分割する分割部と、
n=1,2,…,|A|/rとし、前記メッセージAを|A|/r個に分割して得られる各値をAnとし、予め定めたビット列と秘密鍵Kとを連結した値を暗号化ステートの初期値S0とし、bビットの暗号化ステートSn-1のレート部分SR,n-1のrビットに対し、値Anとの排他的論理和SR,n-1 xor Anを求める第一排他的論理和部と、
bビットのビット列dをbビットのビット列eに置換する関数を置換fとし、前記暗号化ステートSn-1のレート部分SR,n-1を前記排他的論理和SR,n-1 xor Anに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を暗号化ステートSnとして求める第一置換部と、
暗号化ステートS|A|/rのキャパシティ部分SC,|A|/rと、前記値Mxと(c-|Mx|)ビット分の所定のビット列g2とを連結し、連結して得られるビット列Mx||g2との排他的論理和SC,|A|/rxor Mx||g2を計算し、前記暗号化ステートS|A|/rのキャパシティ部分SC,|A|/rを前記排他的論理和SC,|A|/rxor Mx||g2に置換え、置換えたビット列を新たな前記暗号化ステートS|A|/rとする境界設定部と、
m=1,2,…,|M'|/rとし、前記値M'を|M'|/r個に分割して得られる各値をM'mとし、bビットの暗号化ステートS|A|/r+m-1のレート部分SR,|A|/r+m-1のrビットに対し、値M'mとの排他的論理和SR,|A|/r+m-1 xor M'mを求める第二排他的論理和部と、
前記暗号化ステートS|A|/r+m-1のレート部分SR,|A|/r+m-1を前記排他的論理和SR,|A|/r+m-1xor M'mに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を暗号化ステートS|A|/r+mとして求め、前記暗号化ステートS|A|/r+mのレート部分のrビットを暗号化データCmとし、|M'|/r個の暗号化データCmを含む暗号化データC=(C1,C2,…,C|M'|/r)を出力する第二置換部と、
暗号化ステートS|A|/r+|M'|/rのキャパシティ部分SC,|A|/r+|M'|/rと秘密鍵Kとの排他的論理和をタグTとして出力するタグ生成部と、
前記暗号化データCと前記タグTと前記追加データAとを出力する出力部を含み、
前記復号データ生成装置は、
前記暗号化データCと前記タグTと前記追加データAとを受け取る入力部と、
前記暗号化データC=(C1,C2,…,C|M'|/r)に含まれる暗号化データC|M'|/rとcビットの前記タグTとを連結した値をステートSmの初期値S|M'|/rとし、ステートS|M'|/rのキャパシティ部分SC,|M'|/rとcビットの前記秘密鍵Kとの排他的論理和SC,|M'|/rxor Kを求める第三排他的論理和部と、
前記置換fの逆関数をf-1とし、前記ステートS|M'|/rのキャパシティ部分SC,|M'|/rを前記排他的論理和SC,|M'|/r xor Kに置換え、置換えたビット列を逆関数f-1を用いて置換し、置換したビット列をステートS|M'|/r-1として求める第三置換部と、
m=1,2,…,(|M'|/r)-1において、ステートSmのレート部分SR,mと、暗号化データCmとの排他的論理和SR,m xor Cmを復号データMm+1,Dとして出力する第四排他的論理和部と、
前記ステートSmのレート部分SR,mを暗号化データCmに置換え、置換えたビット列を逆関数f-1を用いて置換し、置換したビット列をステートSm-1として求める第四置換部と、
予め定めたビット列と秘密鍵Kとを連結した値を復号ステートの初期値S0,Dとし、bビットの復号ステートSn-1,Dのレート部分SR,n-1,Dのrビットに対し、値Anとの排他的論理和SR,n-1,D xor Anを求める第五排他的論理和部と、
前記復号ステートSn-1,Dのレート部分SR,n-1,Dを前記排他的論理和SR,n-1,Dxor Anに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を復号ステートSn,Dとして求める第五置換部と、
復号ステートS|A|/r,Dのキャパシティ部分SC,|A|/r,Dと、|Mx|ビット分の0からなるビット列と(c-|Mx|)ビット分の所定のビット列g2とを連結し、連結して得られるビット列00…0||g2との排他的論理和SC,|A|/r,Dxor 00…0||g2を計算し、計算結果により復号ステートS|A|/r,Dを更新する境界除去部と、
更新された復号ステートS|A|/r,Dのキャパシティ部分SC,|A|/r,Dのビット列g2に対応する部分と、ステートS0のキャパシティ部分SC,0のビット列g2に対応する部分とが一致するか否かによりメッセージ認証を行い、一致する場合には、前記キャパシティ部分SC,|A|/r,Dの|Mx|ビット分の0からなるビット列に対応する部分と、前記キャパシティ部分SC,0の|Mx|ビット分の0からなるビット列に対応する部分との排他的論理和をMxとして出力し、復号ステートS|A|/r,Dのレート部分SR,|A|/r,DとステートS0のレート部分SR,0との排他的論理和を復号データM1,Dとして出力する認証部とを含み、
上記置換fは、ランダム置換と区別不能な置換である、
追加データ付き認証暗号システム。 - 請求項1又は2に記載された暗号化データ生成装置。
- 請求項1又は2に記載された復号データ生成装置。
- 暗号化データ生成装置と復号データ生成装置とを用いた追加データ付き認証暗号方法であって、
前記暗号化データ生成装置が、
秘密鍵Kのビット長をcビットとし、rビットのレート部分とcビットのキャパシティ部分とを含むbビットの情報をステートとし、メッセージMのビット長を|M|とし、追加データAのビット長を|A|とし、
|Ax|を1以上c/2以下の整数の何れかとし、追加データAを秘匿対象の|Ax|ビット分の値Axと(|A|-|Ax|)ビット分の値A'とに分割する分割ステップと、
n=1,2,…,|A'|/rとし、前記値A'を|A'|/r個に分割して得られる各値をA'nとし、予め定めたビット列と秘密鍵Kとを連結した値を暗号化ステートの初期値S0とし、bビットの暗号化ステートSn-1のレート部分SR,n-1のrビットに対し、値A'nとの排他的論理和SR,n-1 xor A'nを求める第一排他的論理和ステップと、
bビットのビット列dをbビットのビット列eに置換する関数を置換fとし、前記暗号化ステートSn-1のレート部分SR,n-1を前記排他的論理和SR,n-1 xor A'nに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を暗号化ステートSnとして求める第一置換ステップと、
暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rと、前記値Axと(c-|Ax|)ビット分の所定のビット列gとを連結し、連結して得られるビット列Ax||gとの排他的論理和SC,|A'|/rxor Ax||gを計算し、前記暗号化ステートS|A'|/rのキャパシティ部分SC,|A'|/rを前記排他的論理和SC,|A'|/rxor Ax||gに置換え、置換えたビット列を新たな前記暗号化ステートS|A'|/rとする境界設定ステップと、
m=1,2,…,|M|/rとし、前記メッセージMを|M|/r個に分割して得られる各値をMmとし、bビットの暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1のrビットに対し、メッセージMmとの排他的論理和SR,|A'|/r+m-1xor Mmを求める第二排他的論理和ステップと、
前記暗号化ステートS|A'|/r+m-1のレート部分SR,|A'|/r+m-1を前記排他的論理和SR,|A'|/r+m-1xor Mmに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を暗号化ステートS|A'|/r+mとして求め、前記暗号化ステートS|A'|/r+mのレート部分のrビットを暗号化データCmとし、|M|/r個の暗号化データCmを含む暗号化データC=(C1,C2,…,C|M|/r)を出力する第二置換ステップと、
暗号化ステートS|A'|/r+|M|/rのキャパシティ部分SC,|A'|/r+|M|/rと秘密鍵Kとの排他的論理和をタグTとして出力するタグ生成ステップと、
前記暗号化データCと前記タグTと前記値A'とを出力する出力ステップを実行し、
前記復号データ生成装置が、
前記暗号化データCと前記タグTと前記追加データAに含まれる(|A|-|Ax|)ビット分の前記値A'とを受け取る入力ステップと、
前記暗号化データC=(C1,C2,…,C|M|/r)に含まれる暗号化データC|M|/rとcビットの前記タグTとを連結した値をステートSmの初期値S|M|/rとし、ステートS|M|/rのキャパシティ部分SC,|M|/rとcビットの前記秘密鍵Kとの排他的論理和SC,|M|/rxor Kを求める第三排他的論理和ステップと、
前記置換fの逆関数をf-1とし、前記ステートS|M|/rのキャパシティ部分SC,|M|/rを前記排他的論理和SC,|M|/r xor Kに置換え、置換えたビット列を逆関数f-1を用いて置換し、置換したビット列をステートS|M|/r-1として求める第三置換ステップと、
m=1,2,…,(|M|/r)-1において、ステートSmのレート部分SR,mと、暗号化データCmとの排他的論理和SR,m xor Cmを復号データMm+1,Dとして出力する第四排他的論理和ステップと、
前記ステートSmのレート部分SR,mを暗号化データCmに置換え、置換えたビット列を逆関数f-1を用いて置換し、置換したビット列をステートSm-1として求める第四置換ステップと、
予め定めたビット列と秘密鍵Kとを連結した値を復号ステートの初期値S0,Dとし、bビットの復号ステートSn-1,Dのレート部分SR,n-1,Dのrビットに対し、値A'nとの排他的論理和SR,n-1,D xor A'nを求める第五排他的論理和ステップと、
前記復号ステートSn-1,Dのレート部分SR,n-1,Dを前記排他的論理和SR,n-1,Dxor A'nに置換え、置換えたビット列を置換fを用いて置換し、置換したビット列を復号ステートSn,Dとして求める第五置換ステップと、
復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dと、|Ax|ビット分の0からなるビット列と(c-|Ax|)ビット分の所定のビット列gとを連結し、連結して得られるビット列00…0||gとの排他的論理和SC,|A'|/r,D xor 00…0||gを計算し、計算結果により復号ステートS|A'|/r,Dを更新する境界除去ステップと、
更新された復号ステートS|A'|/r,Dのキャパシティ部分SC,|A'|/r,Dのビット列gに対応する部分と、ステートS0のキャパシティ部分SC,0のビット列gに対応する部分とが一致するか否かによりメッセージ認証を行い、一致する場合には、前記キャパシティ部分SC,|A'|/r,Dの|Ax|ビット分の0からなるビット列に対応する部分と、前記キャパシティ部分SC,0の|Ax|ビット分の0からなるビット列に対応する部分との排他的論理和をAxとして出力し、復号ステートS|A'|/r,Dのレート部分SR,|A'|/r,DとステートS0のレート部分SR,0との排他的論理和を復号データM1,Dとして出力する認証ステップとを実行し、
上記置換fは、ランダム置換と区別不能な置換である、
追加データ付き認証暗号方法。 - 請求項5に記載された前記暗号化データ生成装置が、前記分割ステップと、前記第一排他的論理和ステップと、前記第一置換ステップと、前記境界設定ステップと、前記第二排他的論理和ステップと、前記第二置換ステップと、前記タグ生成ステップと、前記出力ステップを実行する、
暗号化データ生成方法。 - 請求項5に記載された前記復号データ生成装置が、前記入力ステップと、前記第三排他的論理和ステップと、前記第三置換ステップと、前記第四排他的論理和ステップと、前記第四置換ステップと、前記第五排他的論理和ステップと、前記第五置換ステップと、前記境界除去ステップと、前記認証ステップとを実行する、
復号データ生成方法。 - 請求項3の暗号化データ生成装置として、コンピュータを機能させるためのプログラム。
- 請求項4の復号データ生成装置として、コンピュータを機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017134879A JP6881111B2 (ja) | 2017-07-10 | 2017-07-10 | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017134879A JP6881111B2 (ja) | 2017-07-10 | 2017-07-10 | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019015918A JP2019015918A (ja) | 2019-01-31 |
JP6881111B2 true JP6881111B2 (ja) | 2021-06-02 |
Family
ID=65357972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017134879A Active JP6881111B2 (ja) | 2017-07-10 | 2017-07-10 | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6881111B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230139104A1 (en) * | 2020-04-23 | 2023-05-04 | Nec Corporation | Authenticated encryption apparatus, authenticated decryption apparatus, authenticated encryption system, method, and computer readable medium |
JP6958706B1 (ja) * | 2020-10-15 | 2021-11-02 | 凸版印刷株式会社 | プリント化粧金属板、及びドア |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105453482B (zh) * | 2013-08-02 | 2019-06-21 | 日本电气株式会社 | 认证加密设备、认证加密方法以及用于认证加密的程序 |
JP6273226B2 (ja) * | 2015-02-26 | 2018-01-31 | 日本電信電話株式会社 | 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法 |
-
2017
- 2017-07-10 JP JP2017134879A patent/JP6881111B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019015918A (ja) | 2019-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106888080B (zh) | 保护白盒feistel网络实施方案以防错误攻击 | |
JP6084757B2 (ja) | 可変入力長調整可能暗号の構造および使用 | |
EP2352251A1 (en) | Content decoding apparatus, content decoding method and integrated circuit | |
WO2001078298A1 (fr) | Systeme et procede de traitement d'informations | |
JP6735926B2 (ja) | 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム | |
JP5198539B2 (ja) | 記憶装置、アクセス装置およびプログラム | |
JP6881111B2 (ja) | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム | |
JP4843563B2 (ja) | 情報記録媒体のセキュリティ方法、情報処理装置及びプログラム | |
JP2006311383A (ja) | データ管理方法、データ管理システムおよびデータ管理装置 | |
JP6273226B2 (ja) | 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法 | |
JP4843587B2 (ja) | 情報記録媒体のセキュリティ方法、情報処理装置、プログラム及び記録媒体 | |
JP5512559B2 (ja) | 暗号化装置、復号装置、暗号化システム、暗号化方法、プログラム | |
JP6830867B2 (ja) | 追加データ付き認証暗号システム、復号装置、追加データ付き認証暗号方法、およびプログラム | |
JP6881112B2 (ja) | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム | |
JP7325689B2 (ja) | 暗号文変換システム、変換鍵生成方法、及び、変換鍵生成プログラム | |
JP7428239B2 (ja) | メモリ処理装置、メモリ検証装置、メモリ更新装置、メモリ保護システム、方法及びプログラム | |
JP7012920B2 (ja) | 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム | |
JP6723958B2 (ja) | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム | |
JP6732698B2 (ja) | 追加データ付き認証暗号システム、暗号化装置、復号装置、追加データ付き認証暗号方法、およびプログラム | |
JP6830868B2 (ja) | 追加データ付き認証暗号システム、復号装置、追加データ付き認証暗号方法、およびプログラム | |
WO2015173905A1 (ja) | 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム | |
JP5268413B2 (ja) | 開示制限処理装置及びデータ処理システム及びプログラム | |
JP4829864B2 (ja) | 情報記録媒体のセキュリティ方法、プログラム及び記録媒体 | |
WO2022215249A1 (ja) | 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム | |
JP4587452B2 (ja) | 複数鍵暗号化装置、複数鍵復号装置、複数鍵暗号化システム及びプログラム。 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190819 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200608 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200707 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200831 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210126 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210319 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210406 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210419 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6881111 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |