(57)【要約】  調整値付きブロック暗号において、処理量が少ないブロック暗号処理を実現する調整値付きブロック暗号装置、方法およびプログラムを提供する。  調整値付きブロック暗号装置は、ブロック暗号方式で暗号化を行う暗号化部と、第１暗号処理と第２暗号処理のいずれかを示す指示情報と平文と調整値とを受け付ける入力部と、指示情報が第１暗号処理を示す場合には、調整値を第１調整値と第２調整値に分割し、暗号化部を用いて第１調整値を暗号化してオフセット用暗号を生成し、オフセット用暗号と第２調整値とに基づいてオフセット値を求め、オフセット値と平文との和をとり、暗号化部を用いて和を暗号化して第１暗号文を生成し、指示情報が第２暗号処理を示す場合には、暗号化部を用いて平文を暗号化して第２暗号文を生成する生成部と、を含む。
2009128370.tif 000002
【特許請求の範囲】
【請求項１】
ブロック暗号方式で暗号化を行う暗号化部と、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部と、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部と、を含む調整値付きブロック暗号装置。
【請求項２】
前記生成部は、前記第１調整値が前記平文と異なるように、前記調整値を、前記第１調整値と前記第２調整値に分割する、請求の範囲第１項に記載の調整値付きブロック暗号装置。
【請求項３】
前記生成部は、前記第１暗号文と前記オフセット値との和をとって、第３暗号文を生成する、請求の範囲第１項または第２項に記載の調整値付きブロック暗号装置。
【請求項４】
前記入力部は、さらに、第１オフセット処理と第２オフセット処理のいずれかを示す処理情報を受け付け、
前記生成部は、前記処理情報が前記第１オフセット処理を示す場合には、前記平文の暗号文として、前記第１暗号文を出力し、前記処理情報が前記第２オフセット処理を示す場合には、前記平文の暗号文として、前記第３暗号文を出力する、請求の範囲第３項に記載の調整値付きブロック暗号装置。
【請求項５】
前記生成部は、前記オフセット用暗号と、有限体上にある基数について前記第２調整値を指数とした演算要素と、の乗算を行い、当該乗算の結果を、前記オフセット値とする、請求の範囲第１項から第４項のいずれか１項に記載の調整値付きブロック暗号装置。
【請求項６】
前記生成部は、前記オフセット用暗号と前記第２調整値との和をとり、当該和に対して、前記ブロック暗号方式で行われる置換処理を施して前記オフセット値を求める、請求の範囲第１項から第４項のいずれか１項に記載の調整値付きブロック暗号装置。
【請求項７】
前記平文および前記第２調整値の長さは、１２８ビットであり、
前記暗号化部は、前記ブロック暗号方式として、ブロックの長さを１２８ビットとするＡＥＳを用い、
前記生成部は、前記オフセット用暗号と前記第２調整値との和に対して、前記ＡＥＳに規定された１２８ビット置換処理を施して前記オフセット値を求める、請求の範囲第６項に記載の調整値付きブロック暗号装置。
【請求項８】
前記暗号化部は、前記ブロック暗号方式に応じたブロック暗号アルゴリズムを格納し、当該ブロック暗号アルゴリズムに基づいて暗号化を行う、請求の範囲第１項から第７項のいずれか１項に記載の調整値付きブロック暗号装置。
【請求項９】
ブロック暗号方式で暗号化を行う暗号化部を含む調整値付きブロック暗号装置が行う暗号生成方法であって、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付け、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する、暗号生成方法。
【請求項１０】
前記第１暗号文を生成することは、前記第１調整値が前記平文と異なるように、前記調整値を、前記第１調整値と前記第２調整値に分割することを含む、請求の範囲第９項に記載の暗号生成方法。
【請求項１１】
コンピュータを、
ブロック暗号方式で暗号化を行う暗号化部、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部、および、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部、として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記生成部は、前記第１調整値が前記平文と異なるように、前記調整値を、前記第１調整値と前記第２調整値に分割する、請求の範囲第１１項に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号の運用モードに関し、例えば、ブロック暗号と、ブロック暗号の一部の処理と、の組合せによる、汎用的で高速な調整値付きブロック暗号装置、暗号生成方法、および、記録媒体に関する。
【背景技術】
【０００２】
調整値付きブロック暗号とは、通常のブロック暗号が持つ入出力である、平文、暗号文および鍵以外に、tweakと呼ばれる調整値を持つブロック暗号のことである。【０００３】
調整値付きブロック暗号においては、調整値が異なる二つのブロック暗号の出力（暗号文）が、調整値と入力（平文）を既に知っている攻撃者には、互いに独立でランダムな値に見えることが要求される。この性質が満たされるとき、調整値付きブロック暗号は安全であるという。【０００４】
tweakと同様な補助入力を持つブロック暗号は、いくつか提案されてきた。しかしながら、それらの暗号では、安全性などについて厳密な要求は定義されていなかった。【０００５】
調整値付きブロック暗号の形式的な定義は、非特許文献１において最初になされた。【０００６】
また、非特許文献１において、理論的に安全な調整値付きブロック暗号が、通常のブロック暗号の運用モード（以後「モード」と略す）として得られるということ、つまり、ブロック暗号をブラックボックスとして用いた変換として得られるということが示された。【０００７】
ただし、ここでいう理論的安全性とは、あるブロック暗号のモードとして得られる調整値付きブロック暗号の安全性が、元となるブロック暗号の安全性に帰着できる、つまり、安全なブロック暗号を用いる限り、そのブロック暗号のモードとして得られる調整値付きブロック暗号も安全である、ということを指す。【０００８】
さらに、安全性の定義には、攻撃者が選択平文攻撃（chosen-plaintext  attack,  CPA）のみ実行可能な場合での安全性と、攻撃者が選択平文攻撃と選択暗号文攻撃（chosen-ciphertext  attack,  CCA）とを組み合わせて実行可能な場合での安全性と、の２種類があり、前者をCPA-security、後者をCCA-securityと呼ぶ。【０００９】
安全な調整値付きブロック暗号は、高度な暗号化機能の実現のための鍵となる技術であることが知られている。【００１０】
例えば、非特許文献２では、CCA-securityを有する調整値付きブロック暗号を用いると、大変効率のよい認証機能付き暗号化が実現できることや、CPA-securityを有する調整値付きブロック暗号を用いると、効率のよい、並列実行可能なメッセージ認証コードが実現できることが指摘されている。【００１１】
また、CCA-securityを有する調整値付きブロック暗号は、ディスクセクタ暗号化などのストレージ暗号化のための必須の技術であることも知られている。【００１２】
ここでは、非特許文献１で提案されたモードを、LRWモードと呼ぶことにする。【００１３】
図１は、LRWモードでの暗号化処理、具体的には、LRWモードにおいてnビットブロック暗号（以下、単に「ブロック暗号」と称する。）Eを用いた暗号化処理を説明するためのブロック図である。【００１４】
LRWモードにおいては、ブロック暗号Eを実装した暗号化部１１Ｅ以外に、有限体GF(2n)上で乗算を行う関数mulを実装した乗算部１１Ｍが必要となる。ここで、mul(x,y)は、有限体GF(2n)上での２要素xとyの乗算結果を表す。LRWモードにおいては、関数mulの引数の一つは、nビットの一様乱数K2である。一様乱数K2を、ブロック暗号Eの鍵K1とは独立な鍵とする。関数mulのもうひとつの引数は、tweakである。【００１５】
LRWモードでは、ブロック暗号Eに供給される平文に足す値、および、ブロック暗号Eによって生成された暗号文に足す値を、関数mulが作っている。このような関数（この場合、関数mul）を、「オフセット関数」と呼ぶことにし、オフセット関数の出力を「オフセット」と呼ぶことにする。【００１６】
より一般的には、オフセット関数は、関数mulに限らず、独立な鍵とtweakを引数とした関数Fでよい。【００１７】
ここで、関数Fは、セキュリティパラメータをe（eは０以上１以下）としたとき、任意のc,  x,  x'（ただしxとx'は異なる）について、Pr[f(K,x)  +  f(K,x')=  c]がe以下であるという性質をもつ必要がある。ただし、+は排他的論理和をあらわす。【００１８】
関数Fが、この性質を持つとき、f(K,*)は、e-almost  XOR  universal  (e-AXU)であるという。e-AXU関数は、ユニバーサルハッシュ関数の一種である。ちなみに、関数mulは、1/2n-AXUである。【００１９】
e-AXU関数は、関数mul以外にも、非特許文献３などで提案されている方式で実現可能である。【００２０】
これらのe-AXU関数は、特定の実装環境においては、一般的なブロック暗号より数倍高速である。【００２１】
しかし、どのような計算機環境でも実装可能で、かつ、ブロック暗号より高速であるe-AXU関数は、知られていない。【００２２】
このため、e-AXU関数が高速に実装可能な環境でないと有効でないということが問題になり、さらに、ブロック暗号Eとe-AXU関数（例えば、関数mul）という二つの部品を実装するために、ブロック暗号Eのみを実装する場合と比べて、プログラムのサイズが一般に大きくなるということも問題となる。【００２３】
一方、ブロック暗号Eのみを用いる調整値付きブロック暗号として、非特許文献２に記載のXEXモードも知られている。【００２４】
図２Ａは、XEXモードを説明するためのブロック図である。【００２５】
図２Ａにおいて、tweakは、二つの部分に分けられる。つまり、tweak=(tweak1,tweak2)と表現される。オフセット関数powは、ある基数をb、tweak2を指数とし、tweak1の暗号化E(K1,tweak1)とbtweak2との乗算を行う。すなわち、オフセットは、以下の［数pow］で表される。【００２６】
［数pow］
pow(tweak2,E(K1,tweak1))  =  mul(btweak2,E(K1,tweak1))
関数powを定めるにあたり、基数が複数存在する場合、tweak2は、それら基数の指数の組（例えば、基数がb1とb2なら、tweak2=(tweak21,tweak22)）となっていてもよい。この場合の関数powの第一引数は、b1tweak21とb2tweak22の積、すなわち、mul(b1tweak21,b2tweak22)となる。【００２７】
いずれのケースにおいても、基数を適切に選ぶことにより、オフセットは、tweak2をインクリメントするとき、すなわち、直前のtweak2の値へ1を足すだけのとき、1回のビットシフトと1回の定数の排他的論理和のみで計算できるという利点を持つ。つまり、オフセットの計算は、ブロック暗号の暗号化と比べて、極めて短時間で実行可能である。【００２８】
しかし、ある時点でのtweak2は、直前のtweak2をインクリメントしたものにしかできないため、XEXモードは、tweak2が任意に変わるような応用には適さない。【００２９】
なお、図２Ａに示したXEXモードにおいて、tweak2を定数に固定し、tweak1のみをtweakとして扱うことで、形式的にはtweakの任意の更新ができる。しかしながら、これは、tweakの長さを短くすることになる。そのうえ、オフセットの計算に１ブロックの暗号化の計算量を必要とすることになる。したがって、この場合のXEXモードは、１ブロックメッセージの暗号化に２回のブロック暗号コールを必要とすることになる。【００３０】
LRWモードとXEXモードの両方とも、CCA-securityを有するが、もし、LRWモードとXEXモードにおいて、オフセットによる２回目の排他的論理和を省くと、得られるモードは、CPA-securityのみを有するモードとなる。【００３１】
CPA-securityの方が、安全性の概念としては、CCA-securityよりも弱いが、CPA-securityでも、メッセージ認証などのいくつかの用途には十分であることが知られている。【００３２】
また、XEXモードにおいて、ブロック暗号Eによって生成された暗号文とオフセットとの排他的論理和を省いたモードは、非特許文献２に、XEモードとして定義されている。図２Ｂは、XEモードでの暗号化処理を示したブロック図である。【００３３】
さらに、非特許文献２では、XEモードとXEXモードを混在させたモードであるXEX*モードが提案されている。XEX*モードは、XEモードかXEXモードのどちらで処理を行うかを、利用者が、個別のtweakごとに指定できるモードである。図２Ｃは、XEX*モードでの暗号化処理を示したブロック図である。【００３４】
ただし、XEX*モードでは、あるtweakについてXEモードで処理を行った場合、同じtweakでXEXモードの処理を行うことはできない。逆に、あるtweakについてXEXモードで処理を行った場合、同じtweakでXEモードの処理を行うこともできない。【００３５】
XEモードかXEXモードのどちらを用いるかを指定する１ビットの情報をタグtagと呼ぶ。このように利用者がタグとtweakを指定して使用するモードのことも、ここでは、調整値付きブロック暗号と呼ぶことにする。【００３６】
XEX*モードの利点は、あるtweakでの処理にCPA-securityが求められるが、別のtweakでの処理にはCCA-securityが求められるようなケースにおいて、単純にXEXモードを用いる場合よりも効率が良くなることである。つまり、CPA-securityが求められるtweakでの処理において、XEXモードではなくXEモードを使うことで、暗号文側のオフセットの排他的論理和演算を省略できる。【００３７】
ただし、XEX*モードでは、XEモードを用いる以上、いずれの処理においても平文側の排他的論理和演算は省略できない。具体的には、XEX*モードは、非特許文献４に記載の認証機能付き暗号化モードであるOCB2.0に用いられている。これは、特許文献１に記載のOCBを改良したものである。
【特許文献１】米国特許第７０４６８０２号明細書
【非特許文献１】Moses  Liskov,  Ronald  L.  Rivest,  David  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
【非特許文献２】P.  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
【非特許文献３】S.  Halevi  and  H.  Krawczyk,  MMH:Software  Message  Authentication  in  the  Gbit/second  rates,  Fast  Software  Encryption,  4th  Internatioanl  Workshop,  FSE  '97,  Lecture  Notes  in  Computer  Science;  Vol.  1267,  Feb.  1997
【非特許文献４】T.  Krovetz  and  P.  Rogaway.  The  OCB  Authenticated-Encryption  Algorithm.  Internet  draft,  March  2005
【非特許文献５】J.  Daemen  and  V.  Rijmen,  AES  Proposal:  Rijndael,  AES  submission,  1998.  http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael.pdf
【非特許文献６】S.  Park,  S.  H.  Sung,  S.  Lee,  and  J.  Lim,  Improving  the  Upper  Bound  on  the  Maximum  Differential  and  the  Maximum  Linear  Hull  Probability  for  SPN  Structure  and  AES,  Internatioanl  Workshop,  FSE  2003,  Lecture  Notes  in  Computer  Science;  Vol.  2887,  Feb.  2003
【発明の開示】
【発明が解決しようとする課題】
【００３８】
ブロック暗号のみを用いて調整値付きブロック暗号を実現するXEモード、XEXモードもしくはXEX*モードでは、どのような入力においても、単純なブロック暗号に従った暗号化と比べて処理量が増加してしまう。【００３９】
その理由は、XEモードとXEXモードのいずれも、ブロック暗号Eに供給される平文とオフセットとの排他的論理和演算が必要であり、XEX*モードの処理は、実際にはXEかXEXモードであるからである。【００４０】
本発明の目的は、上述した課題を解決することが可能な調整値付きブロック暗号装置、調整値付きブロック暗号化方法、および、プログラムを提供することである。
【課題を解決するための手段】
【００４１】
本発明の調整値付きブロック暗号装置は、ブロック暗号方式で暗号化を行う暗号化部と、第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部と、前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部と、を含む。【００４２】
本発明の暗号生成方法は、ブロック暗号方式で暗号化を行う暗号化部を含む調整値付きブロック暗号装置が行う暗号生成方法であって、第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付け、前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する。【００４３】
本発明の記録媒体は、コンピュータを、ブロック暗号方式で暗号化を行う暗号化部、第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部、および、前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部、として機能させるプロクラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００４４】
本発明によれば、調整値付きブロック暗号において、処理量が少ないブロック暗号処理を実現することが可能になる。
【図面の簡単な説明】
【００４５】
【図１】LRWモードでの暗号化処理を説明するためのブロック図である。
【図２Ａ】XEXモードを説明するためのブロック図である。
【図２Ｂ】XEモードでの暗号化処理を示したブロック図である。
【図２Ｃ】XEX*モードでの暗号化処理を示したブロック図である。
【図３】本発明の第１の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。
【図４】オフセット関数Fとして４段AESが用いられる場合の例を示した説明図である。
【図５】第１の実施の形態の動作を説明するためのフローチャートである。
【図６】処理指示変数が「０」を示す場合の処理を説明するための説明図である。
【図７】処理指示変数が「１」を示す場合の処理を説明するための説明図である。
【図８】本発明の第２の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。
【図９】第２の実施の形態の動作を説明するためのフローチャートである。
【図１０】処理指示変数が「０」を示す場合の処理を説明するための説明図である。
【図１１】処理指示変数が「１」を示す場合の処理を説明するための説明図である。
【図１２】本発明の第３の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。
【図１３】第３の実施の形態の動作を説明するためのフローチャートである。
【符号の説明】
【００４６】
１０、２０、３０  調整値付きブロック暗号装置
１０Ａ、２０Ａ、３０Ａ  ブロック暗号化部
１０Ｂ、２０Ｂ、３０Ｂ  入力部
１０Ｃ、２０Ｃ、３０Ｃ  生成部
１０Ｃ１、２０Ｃ１、３０Ｃ１  処理選択部
１０Ｃ２、２０Ｃ２、３０Ｃ２  オフセット計算部
１０Ｃ３  両側オフセット暗号化部
２０Ｃ３  片側オフセット暗号化部
３０Ｃ３  タグ依存オフセット暗号化部
１０Ｃ４、２０Ｃ４、３０Ｃ４  付加的暗号化部
１０Ｃ５、２０Ｃ５、３０Ｃ５  出力部
【発明を実施するための最良の形態】
【００４７】
（第１の実施の形態）
［１］構成の説明
次に、本発明の第１の実施の形態について図面を参照して説明する。【００４８】
図３は、第１の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。【００４９】
図３において、調整値付きブロック暗号装置１０は、ブロック暗号化部１０Ａと、入力部１０Ｂと、生成部１０Ｃと、を含む。生成部１０Ｃは、処理選択部１０Ｃ１と、オフセット計算部１０Ｃ２と、両側オフセット暗号化部１０Ｃ３と、付加的暗号化部１０Ｃ４と、出力部１０Ｃ５と、を含む。【００５０】
調整値付きブロック暗号装置１０は、例えば、ＣＰＵとメモリとディスクとを備えたコンピュータにより実現可能である。この場合、調整値付きブロック暗号装置１０は、例えば、ディスクに記録されたプログラム（アプリケーション）に従って動作する。ディスクは、一般的に、コンピュータ（調整値付きブロック暗号装置１０；ＣＰＵ）にて読み取り可能な記録媒体と呼ぶことができる。【００５１】
調整値付きブロック暗号装置１０内のＣＰＵは、プログラムをディスク（記録媒体）から読み取り実行することによって、ブロック暗号化部１０Ａ、入力部１０Ｂ、および、生成部１０Ｃとして機能する。【００５２】
次に、調整値付きブロック暗号装置１０を構成する各部について説明する。【００５３】
ブロック暗号化部１０Ａは、一般的に暗号化手段と呼ぶことができる。【００５４】
ブロック暗号化部１０Ａは、ブロック暗号方式で暗号化を行う。ブロック暗号化部１０Ａは、例えば、ＡＥＳ（Advanced  Encryption  Standard）等のブロック暗号方式に応じたブロック暗号アルゴリズムを格納し、そのブロック暗号アルゴリズムに基づいて暗号化を行う。【００５５】
入力部１０Ｂは、一般的に入力手段と呼ぶことができる。【００５６】
入力部１０Ｂは、暗号化の対象となるnビットの平文と、treakと、処理指示変数と、を受け付ける。treakは、一般的に調整値と呼ぶことができる。処理指示変数は、一般的に指示情報と呼ぶことができる。処理指示変数は、２値（「０」と「１」）のいずれかを示す。なお、本実施形態では、「０」は第１暗号処理を意味し、「１」は第２暗号処理を意味する。【００５７】
入力部１０Ｂは、例えば、キーボードなどの文字入力装置により実現される。入力部１０Ｂは、平文とtweakと処理指示変数とを受け付けると、その平文とtweakと処理指示変数とを、生成部１０Ｃ（具体的には、処理選択部１０Ｃ１）に提供する。【００５８】
生成部１０Ｃは、一般的に生成手段と呼ぶことができる。【００５９】
生成部１０Ｃは、処理指示変数が「０」を示す場合に、tweakをtweak1とtweak2に分割する。tweak1は、一般的に第１調整値と呼ぶことができる。tweak2は、一般的に第２調整値と呼ぶことができる。【００６０】
本実施形態では、生成部１０Ｃは、tweak1が平文と異なるように、tweakをtweak1とtweak2に分割する。【００６１】
生成部１０Ｃは、ブロック暗号化部１０Ａを用いてtweak1を暗号化して、オフセット用暗号を生成する。生成部１０Ｃは、オフセット用暗号とtweak2とに基づいて、オフセット値を求める。【００６２】
例えば、生成部１０Ｃは、オフセット用暗号と、有限体GF(2n)上にある基数についてtweak2を指数とした演算要素と、の乗算を行い、その乗算の結果を、オフセット値とする。【００６３】
また、生成部１０Ｃは、オフセット用暗号とtweak2との和（例えば、排他的論理和）をとり、その和に対して、ブロック暗号化部１０Ａが実行するブロック暗号方式で行われる置換処理を施して、オフセット値を求めてもよい。【００６４】
なお、平文およびtweak2の長さを、１２８ビットとし、ブロック暗号化部１０Ａがブロック暗号方式として、ブロックの長さを１２８ビットとするＡＥＳを用いる場合、生成部１０Ｃは、オフセット用暗号とtweak2との和に対して、ＡＥＳに規定された１２８ビット置換処理、すなわち、ＡＥＳが有する１２８ビット置換処理を施して、オフセット値を求めてもよい。【００６５】
生成部１０Ｃは、オフセット値と平文との和（例えば、排他的論理和）をとり、ブロック暗号化部１０Ａを用いて、その和を暗号化して、第１暗号文を生成する。また、生成部１０Ｃは、第１暗号文とオフセット値との和（例えば、排他的論理和）をとって、第３暗号文を生成する。【００６６】
一方、処理指示変数が「１」を示す場合には、生成部１０Ｃは、入力部１０Ｂからの平文を、ブロック暗号化部１０Ａを用いて暗号化して、第２暗号文を生成する。つまり、処理指示変数が「１」を示す場合には、生成部１０Ｃは、tweakを用いることなく、第２暗号文を生成する。【００６７】
処理選択部１０Ｃ１は、一般的に処理選択手段と呼ぶことができる。【００６８】
処理選択部１０Ｃ１は、入力部１０Ｂからの処理指示変数に応じて、処理を切り替える。具体的には、処理選択部１０Ｃ１は、処理指示変数が「０」を示すとき、平文とtweakを、オフセット計算部１０Ｃ２に出力し、処理指示変数が「１」を示すとき、平文とtweakのうち平文のみを、付加的暗号化部１０Ｃ４に出力する。【００６９】
オフセット計算部１０Ｃ２は、一般的にオフセット計算手段と呼ぶことができる。【００７０】
オフセット計算部１０Ｃ２は、処理指示変数が「０」を示すときに処理選択部１０Ｃ１が出力した平文とtweakを入力とし、  tweakに依存したオフセット値（以下「offset」と称する。）を計算し、offsetと平文とを併せて出力する。【００７１】
オフセット計算部１０Ｃ２は、tweakを、２つの部分系列であるtweak1とtweak2に分解する。オフセット計算部１０Ｃ２は、offsetを、以下の［数offset］に示された数式にしたがって求める。なお、ブロックサイズがnビットの場合、tweakもnビットであり、この処理は、nビット入力、nビット出力の鍵付き関数となる。【００７２】
［数offset］
offset  =  F(E(K,tweak1)  ,tweak2)
［数offset］において、E(K,tweak1)は、nビットブロック暗号Eとその鍵Kによる、tweak1の暗号化を示す。なお、オフセット計算部１０Ｃ２は、ブロック暗号化部１０Ａを用いて、［数offset］に示された数式（オフセット関数F）内の暗号化を行う。【００７３】
ただし、tweak1のとりうる値の集合をNとすれば、Nは、{0,1}nの部分集合であるとする。【００７４】
また、tweak2をsビットとすれば、オフセット関数Fは、n+sビット入力、nビット出力の関数となり、以下の３つの値、MEDP、U、および、MESDPが、十分小さいという条件を満たすことが必要である。【００７５】
MEDP＝max{Pr(F(R,x)  +  F(R,x')=d)}
U＝max{Pr(F(R,x)  =  d)}
MESDP＝max{Pr(F(R,x)  +  R  =d  )}
ここで、Rは、sビットの一様乱数である。MEDPの最大は、あらゆるsビット値のペアx,  x'のうちでxとx'が異なるものと、あらゆるnビット値dについてとられている。UとMESDPの最大は、あらゆるsビット値xとnビット値dについてとられている。【００７６】
また、オフセット関数Fは、鍵付きの関数でもよい。オフセット関数Fが、鍵付きの関数である場合は、オフセット計算部１０Ｃ２は、n+sビット入力以外に独立な鍵Ksubを入力として持ち、MEDP、UおよびMESDPの各確率は、この鍵Ksubの確率分布も含めて定義することになる。特に、MEDPは、最大差分確率と呼ばれる。【００７７】
オフセット関数Fの実現方法については、例えば、非特許文献２に記載のXEXモードにて使用される関数pow（［数pow］に記載）が、条件を満たすものとしてあげられる。【００７８】
近年のブロック暗号は、ほぼ全てが、ラウンド関数と呼ばれる比較的簡単な鍵付きの置換を、鍵を変えながら所定の回数繰り返すことで構成されている。【００７９】
そして、差分攻撃と線形攻撃に対する耐性を持たせるために、ラウンド関数の数回の繰り返しが、MEDP、U、MESDPの３つの値を小さく保証するオフセット関数Fに適合することが多い。【００８０】
具体的には、ラウンド関数の数回の繰り返しをG（ラウンド鍵をKsubとする）とすると、オフセット関数Fを、以下の［数Round］で定義する。【００８１】
［数Round］
F(E(K,tweak1),tweak2)=G(Ksub,E(K,tweak1)+tweak2)
例として、非特許文献６では、非特許文献５に記載のブロック暗号AESにおいて、ラウンド関数の４回の繰り返し（４段AESと呼ぶ）をオフセット関数Fとして使うことが記載されている。【００８２】
図４は、オフセット計算部１０Ｃ２が用いるオフセット関数Fとして、４段AESが用いられる場合の例を示した説明図である。【００８３】
具体的には、［数Round］においてGを４段AESとし、Ksubを１から４段目のラウンド鍵（ただし１段目のラウンド鍵は任意の定数でよいため、実際のKsubの長さは128*3=384ビットとなる。）とし、各ラウンド鍵は一様で独立とする場合、非特許文献６には、MEDPの確率（差分確率）を高々2-113にすることが記載されている。【００８４】
また、Uの確率は、Gが置換の場合には、理論最小値（ブロックサイズがnなら2の-n乗）を持つことと、MESDPで示される確率は、ラウンド関数においてラウンド鍵が排他的論理和される構造では、常に理論最小値2-nとなることから、安全なブロック暗号の短縮段をGとして用いることで、安全性に対して高い信頼性をもつ本実施の形態を構築可能である。【００８５】
両側オフセット暗号化部１０Ｃ３は、一般的に両側オフセット暗号化手段と呼ぶことができる。【００８６】
両側オフセット暗号化部１０Ｃ３は、ブロック暗号化部１０Ａを使用して、オフセット計算部１０Ｃ２が出力したoffsetと平文とに基づき、暗号文（第３暗号文）Ｃを生成する。【００８７】
平文をMとすると、両側オフセット暗号化部１０Ｃ３が出力する暗号文Ｃは、以下の［数twosideOFE］に示した数式に従って求められる。【００８８】
［数twosideOFE］
C=E(K,M+offset)+offset
ただし、Eは、ブロック暗号化部１０Ａによるブロック暗号、KはEの鍵であり、+は排他的論理和を表す。【００８９】
付加的暗号化部１０Ｃ４は、一般的に付加的暗号化手段と呼ぶことができる。【００９０】
付加的暗号化部１０Ｃ４は、処理指示変数が「１」を示す場合に処理選択部１０Ｃ１が出力する平文を、ブロック暗号化部１０Ａを用いて暗号化して、第２暗号文を生成する。【００９１】
ただし、この平文をMoeとすると、Moeはtweak1とは常に異なり、Moeは、{0,1}nとtweak1のとりうる値の集合Nとの差集合に含まれる必要がある。このため、生成部１０Ｃ（具体的には、オフセット計算部１０Ｃ２）は、Moeがtweak1と常に異なるように、tweakを、tweak1とtweak2に分割する。【００９２】
これは、例えば、あらかじめtweak1の最下位ビットを０に固定し、Moeの最下位ビットを１に固定するなどすればよい。【００９３】
第２暗号文は、Coe=E(K,Moe)となり、付加的暗号化部１０Ｃ４は、Coe=E(K,Moe)を出力する。【００９４】
当然、Nがnビット空間全体を占める場合には、付加的暗号化部１０Ｃ４の入力は存在せず、暗号化は実行されない。【００９５】
現実には、Moeは、とりうる値に制限があり、また、安全上E(K,Moe)を復号してMoeを得る処理を利用者が行うことは認められない。【００９６】
このため、例えば、付加的暗号化部１０Ｃ４は、Moeをカウンターとして、得られるE(K,Moe)を擬似乱数とした、加法的ストリーム暗号を実現することが考えられる。【００９７】
これ以外にも、E(K,Moe)は、擬似乱数として任意の用途、例えばパスワード生成や秘密分散など、に用いてもよい。【００９８】
出力部１０Ｃ５は、一般的に出力手段と呼ぶことができる。【００９９】
出力部１０Ｃ５は、両側オフセット暗号化部１０Ｃ３もしくは付加的暗号化部１０Ｃ４が出力した暗号文を、コンピュータディスプレイやプリンターなどへ出力する。【０１００】
［２］動作の説明
図５は、第１の実施の形態の動作を説明するためのフローチャートである。図６は、処理指示変数が「０」を示す場合の処理を説明するための説明図である。図７は、処理指示変数が「１」を示す場合の処理を説明するための説明図である。【０１０１】
以下、図５〜７を参照して、第１の実施の形態の全体の動作について詳細に説明する。【０１０２】
まず、入力部１０Ｂが、平文とtweakと処理指示変数を受け付ける（ステップAE1）。入力部１０Ｂは、その平文とtweakと処理指示変数を、処理選択部１０Ｃ１に提供する。【０１０３】
処理選択部１０Ｃ１は、平文とtweakと処理指示変数を受け付けると、処理指示変数の値によって、通常の暗号化を行うか、付加的暗号化を行うかを判断する（ステップAE2）。【０１０４】
処理指示変数が「０」を示す場合、処理選択部１０Ｃ１は、通常の暗号化を行うと判断し、平文とtweakを、オフセット計算部１０Ｃ２に提供する。一方、処理指示変数が「１」を示す場合、処理選択部１０Ｃ１は、付加的暗号化を行うと判断し、平文とtweakのうち平文のみを、付加的暗号化部１０Ｃ４に提供する。【０１０５】
オフセット計算部１０Ｃ２は、平文とtweakを受け付けると、ブロック暗号化部１０Ａを用いて、［数offset］に示した数式にしたがってoffsetを求める（ステップAE3）。オフセット計算部１０Ｃ２は、そのoffsetと平文を、両側オフセット暗号化部１０Ｃ３に提供する。【０１０６】
両側オフセット暗号化部１０Ｃ３は、offsetと平文を受け付けると、ブロック暗号化部１０Ａを用いて、そのoffsetと平文に基づき［数twosideOFE］に示した数式にしたがって、暗号文を求める（ステップAE4)。両側オフセット暗号化部１０Ｃ３は、その暗号文を、出力部１０Ｃ５に提供する。【０１０７】
一方、付加的暗号化部１０Ｃ４は、平文を受け付けると、ブロック暗号化部１０Ａを用いて、その平文を暗号化し、暗号文を求める（ステップAE5）。付加的暗号化部１０Ｃ４は、その暗号文を、出力部１０Ｃ５に提供する。【０１０８】
最後に、出力部１０Ｃ５は、暗号文を受け付けると、その暗号文を出力する（ステップAE6）。【０１０９】
本実施の形態では、以下の効果を奏する。【０１１０】
付加的暗号化部１０Ｃ４（生成部１０Ｃ）は、ブロック暗号化部１０Ａを用いて平文を暗号化して暗号文を生成する。このため、付加的暗号化部１０Ｃ４は、オフセットの排他的論理和を、平文側、暗号文側とも必要としない暗号化を行う。【０１１１】
したがって、本実施の形態において、オフセット関数Fとして、XEXモードと同じオフセット関数powを用いて実現した場合、XEX（もしくはXE,  XEX*）モードよりも、用途によっては高速に暗号を生成できることである。【０１１２】
また、オフセット計算部１０Ｃ２（生成部１０Ｃ）は、tweak1が平文と異なるように、tweakを、tweak1とtweak2に分割する。このため、付加的暗号化部１０Ｃ４へ入力する平文が、tweak1と常に異なっていれば、付加的暗号化部１０Ｃ４の出力は、通常の暗号化・復号処理とは、独立な擬似乱数として用いることができる。このような乱数は、パスワード生成・秘密分散など、暗号化と関連した様々な処理で用いることができる。【０１１３】
また、別の例として、付加的暗号化部１０Ｃ４へ入力する平文をtweak1と異なるカウンターとすれば、付加的暗号化部１０Ｃ４は、カウンターモードの暗号化を行うことができる。これは、通常のXEXモードに、新たに独立で高速なカウンターモードを付与したことに相当する。【０１１４】
なお、LRWモードでも、tweakを全ゼロにしたときはオフセットが常にゼロとなり、結果的に加算なしの暗号化が実現可能であるが、安全性のために、オフセットの生成において必要な鍵を、ブロック暗号の鍵とは独立に生成する必要があった。従って、本実施の形態よりも、LRWモードの方が、一般に鍵が長くなる。【０１１５】
また、本実施の形態では、オフセット計算部１０Ｃ２（生成部１０Ｃ）は、オフセット用暗号とtweak2との和をとり、その和に対して、ブロック暗号化部１０Ａでのブロック暗号方式で行われる置換処理を施してオフセット値を求める。このため、tweakの更新を行い新たなオフセット値を計算するのに、ブロック暗号の一部の処理だけを必要とする。【０１１６】
したがって、本実施の形態において、ブロック暗号の一部を用いてオフセット関数を実現した場合、tweakの任意の更新が、ブロック暗号のアルゴリズムのみで高速にできる。【０１１７】
XEXモードにおいては、tweak2は、逐次的にしか更新できないため、tweak全体の任意の更新は不可能である。また、LRWモードの場合、tweakの任意の更新が可能であるが、有限体の乗算mulを実装する必要が生じるため、プログラムサイズの増大を招く。【０１１８】
例として、非特許文献５に記載のブロック暗号AESと、AESの段関数の４回の繰り返し（４段AES）とを用いた場合、tweak2のみの更新は、AESそのものの約2.5倍で可能となる。【０１１９】
（第２の実施の形態）
［１］構成の説明
次に、本発明の第２の実施の形態について図面を参照して説明する。【０１２０】
図８は、第２の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。【０１２１】
図８において、調整値付きブロック暗号装置２０は、ブロック暗号化部２０Ａと、入力部２０Ｂと、生成部２０Ｃと、を含む。生成部２０Ｃは、処理選択部２０Ｃ１と、オフセット計算部２０Ｃ２と、片側オフセット暗号化部２０Ｃ３と、付加的暗号化部２０Ｃ４と、出力部２０Ｃ５と、を含む。【０１２２】
調整値付きブロック暗号装置２０は、例えば、ＣＰＵとメモリとディスクとを備えたコンピュータにより実現可能である。この場合、調整値付きブロック暗号装置２０は、例えば、ディスクに記録されたプログラム（アプリケーション）に従って動作する。【０１２３】
調整値付きブロック暗号装置２０内のＣＰＵは、プログラムをディスク（記録媒体）から読み取り実行することによって、ブロック暗号化部２０Ａ、入力部２０Ｂ、および、生成部２０Ｃとして機能する。【０１２４】
なお、ブロック暗号化部２０Ａと、入力部２０Ｂと、処理選択部２０Ｃ１と、オフセット計算部２０Ｃ２と、付加的暗号化部２０Ｃ４と、出力部２０Ｃ５のそれぞれは、第１の実施の形態のブロック暗号化部１０Ａと、入力部１０Ｂと、処理選択部１０Ｃ１と、オフセット計算部１０Ｃ２と、付加的暗号化部１０Ｃ４と、出力部１０Ｃ５のそれぞれと同一構成である。【０１２５】
以下、第２の実施の形態について、第１の実施の形態と異なる点を中心に説明する。【０１２６】
生成部２０Ｃは、一般的に生成手段と呼ぶことができる。【０１２７】
片側オフセット暗号化部２０Ｃ３は、一般的に片側オフセット暗号化手段と呼ぶことができる。【０１２８】
片側オフセット暗号化部２０Ｃ３は、ブロック暗号化部２０Ａを使用して、オフセット計算部２０Ｃ２が出力したoffsetと平文とに基づき、暗号文（第１暗号文）を生成する。【０１２９】
片側オフセット暗号化部２０Ｃ３が出力する暗号文Ｃは、以下の［数onesideOFE］に示した数式に従って求められる。【０１３０】
［数onesideOFE］
C=onesideOFE＝E(K,M+offset)
ただし、Eは、ブロック暗号化部２０Ａによるブロック暗号、KはEの鍵であり、+は排他的論理和を表す。【０１３１】
［２］動作の説明
図９は、第２の実施の形態の動作を説明するためのフローチャートである。図１０は、処理指示変数が「０」を示す場合の処理を説明するための説明図である。図１１は、処理指示変数が「１」を示す場合の処理を説明するための説明図である。【０１３２】
以下、図９〜１１を参照して、第２の実施の形態の全体の動作について詳細に説明する。【０１３３】
まず、入力部２０Ｂが、平文とtweakと処理指示変数を受け付ける（ステップBE1）。入力部２０Ｂは、その平文とtweakと処理指示変数を、処理選択部２０Ｃ１に提供する。【０１３４】
処理選択部２０Ｃ１は、平文とtweakと処理指示変数を受け付けると、処理指示変数の値によって、通常の暗号化を行うか、付加的暗号化を行うかを判断する（ステップBE2）。【０１３５】
処理指示変数が「０」を示す場合、処理選択部２０Ｃ１は、通常の暗号化を行うと判断し、平文とtweakを、オフセット計算部２０Ｃ２に提供する。一方、処理指示変数が「１」を示す場合、処理選択部２０Ｃ１は、付加的暗号化を行うと判断し、平文とtweakのうち平文のみを、付加的暗号化部２０Ｃ４に提供する。【０１３６】
オフセット計算部２０Ｃ２は、平文とtweakを受け付けると、ブロック暗号化部２０Ａを用いて、［数offset］に示した数式にしたがってoffsetを求める（ステップBE3）。オフセット計算部２０Ｃ２は、そのoffsetと平文を、片側オフセット暗号化部２０Ｃ３に提供する。【０１３７】
片側オフセット暗号化部２０Ｃ３は、offsetと平文を受け付けると、ブロック暗号化部２０Ａを用いて、そのoffsetと平文に基づき［数onesideOFE］に示した数式にしたがって、暗号文を求める（ステップBE4)。片側オフセット暗号化部２０Ｃ３は、その暗号文を、出力部２０Ｃ５に提供する。【０１３８】
一方、付加的暗号化部２０Ｃ４は、平文を受け付けると、ブロック暗号化部２０Ａを用いて、その平文を暗号化し、暗号文を求める（ステップBE5）。付加的暗号化部２０Ｃ４は、その暗号文を、出力部２０Ｃ５に提供する。【０１３９】
最後に、出力部２０Ｃ５は、暗号文を受け付けると、その暗号文を出力する（ステップBE6）。【０１４０】
本実施の形態では、第１の実施の形態と同様の効果を奏する。【０１４１】
さらに、本実施の形態では、生成部２０Ｃは、オフセット値と平文との和をとり、ブロック暗号化部２０Ａを用いて、その和を暗号化して第１暗号文を生成する。このため、ＸＥＸモードでの暗号化を行うことができる。【０１４２】
（第３の実施の形態）
［１］構成の説明
次に、本発明の第３の実施の形態について図面を参照して説明する。【０１４３】
図１２は、第３の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。【０１４４】
図１２において、調整値付きブロック暗号装置３０は、ブロック暗号化部３０Ａと、入力部３０Ｂと、生成部３０Ｃと、を含む。生成部３０Ｃは、処理選択部３０Ｃ１と、オフセット計算部３０Ｃ２と、タグ依存オフセット暗号化部３０Ｃ３と、付加的暗号化部３０Ｃ４と、出力部３０Ｃ５と、を含む。【０１４５】
調整値付きブロック暗号装置３０は、例えば、ＣＰＵとメモリとディスクとを備えたコンピュータにより実現可能である。この場合、調整値付きブロック暗号装置３０は、例えば、ディスクに記録されたプログラム（アプリケーション）に従って動作する。【０１４６】
調整値付きブロック暗号装置３０内のＣＰＵは、プログラムをディスク（記録媒体）から読み取り実行することによって、ブロック暗号化部３０Ａ、入力部３０Ｂ、および、生成部３０Ｃとして機能する。【０１４７】
なお、ブロック暗号化部３０Ａと、付加的暗号化部３０Ｃ４と、出力部３０Ｃ５のそれぞれは、第１の実施の形態のブロック暗号化部１０Ａと、付加的暗号化部１０Ｃ４と、出力部１０Ｃ５のそれぞれと同一構成である。【０１４８】
以下、第３の実施の形態について、第１の実施の形態と異なる点を中心に説明する。【０１４９】
入力部３０Ｂは、一般的に入力手段と呼ぶことができる。【０１５０】
入力部３０Ｂは、暗号化の対象となるnビットの平文と、tweakと、処理指示変数と、タグtagを受け付ける。タグtagは、一般的に処理情報と呼ぶことができる。タグtagは、２値（「０」と「１」）のいずれかを示す。なお、本実施形態では、タグtagが示す「０」は第１オフセット処理を意味し、タグtagが示す「１」は第２オフセット処理を意味する。【０１５１】
入力部３０Ｂは、例えば、キーボードなどの文字入力装置により実現される。入力部３０Ｂは、平文とtweakと処理指示変数とタグtagを受け付けると、その平文とtweakと処理指示変数とタグtagを、処理選択部３０Ｃ１に提供する。【０１５２】
処理選択部３０Ｃ１は、一般的に処理選択手段と呼ぶことができる。【０１５３】
処理選択部３０Ｃ１は、入力部３０Ｂからの処理指示変数に応じて、処理を切り替える。具体的には、処理選択部３０Ｃ１は、処理指示変数が「０」を示すとき、平文とtweakとタグtagとを、オフセット計算部３０Ｃ２に出力し、処理指示変数が「１」を示すとき、平文とtweakとタグtagのうち平文のみを、付加的暗号化部３０Ｃ４に出力する。【０１５４】
オフセット計算部３０Ｃ２は、一般的にオフセット計算手段と呼ぶことができる。【０１５５】
オフセット計算部３０Ｃ２は、処理指示変数が「０」を示すときに処理選択部３０Ｃ１が出力した平文とtweakとタグtagとを入力とし、  tweakに依存したoffsetを計算し、offsetと平文とタグtagとを併せて、タグ依存オフセット暗号化部３０Ｃ３に出力する。【０１５６】
タグ依存オフセット暗号化部３０Ｃ３は、一般的にタグ依存オフセット暗号化手段と呼ぶことができる。【０１５７】
タグ依存オフセット暗号化部３０Ｃ３は、入力された平文とタグtagとoffsetを元に、暗号化を行う。具体的には、タグ依存オフセット暗号化部３０Ｃ３は、ブロック暗号化部３０Ａを用いて、以下の［数taggedOFE］に示された数式に従って、暗号文Ｃを生成する。【０１５８】
［数taggedOFE］
C=E(K,M+offset)+sel(tag,offset)  
ただしsel(tag,offset)は、タグtagが「０」を示すとき、nビットの全ゼロ値であり、タグtagが「１」を示すときにoffsetとなる。【０１５９】
［２］動作の説明
図１３は、第３の実施の形態の動作を説明するためのフローチャートである。以下、図１３を参照して、第３の実施の形態の全体の動作について詳細に説明する。【０１６０】
まず、入力部３０Ｂが、平文とtweakとタグと処理指示変数を受け付ける（ステップCE1）。入力部３０Ｂは、その平文とtweakとタグと処理指示変数を、処理選択部３０Ｃ１に提供する。【０１６１】
処理選択部３０Ｃ１は、平文とtweakとタグと処理指示変数を受け付けると、処理指示変数の値によって、通常の暗号化を行うか、付加的暗号化を行うかを判断する（ステップCE2）。【０１６２】
処理指示変数が「０」を示す場合、処理選択部３０Ｃ１は、通常の暗号化を行うと判断し、平文とtweakとタグを、オフセット計算部３０Ｃ２に提供する。一方、処理指示変数が「１」を示す場合、処理選択部３０Ｃ１は、付加的暗号化を行うと判断し、平文とtweakとタグのうち平文のみを、付加的暗号化部３０Ｃ４に提供する。【０１６３】
オフセット計算部３０Ｃ２は、平文とtweakとタグを受け付けると、ブロック暗号化部３０Ａを用いて、［数offset］に示した数式に従ってoffsetを求める（ステップCE3）。オフセット計算部３０Ｃ２は、そのoffsetと平文とタグを、タグ依存オフセット暗号化部３０Ｃ３に提供する。【０１６４】
タグ依存オフセット暗号化部３０Ｃ３は、offsetと平文とタグを受け付けると、ブロック暗号化部３０Ａを用いて、そのoffsetと平文とタグとに基づき［数taggedOFE］に示した数式にしたがって、暗号文を求める（ステップCE4)。タグ依存オフセット暗号化部３０Ｃ３は、その暗号文を、出力部３０Ｃ５に提供する。【０１６５】
一方、付加的暗号化部３０Ｃ４は、平文を受け付けると、ブロック暗号化部２０Ａを用いて、その平文を暗号化し、暗号文を求める（ステップCE5）。付加的暗号化部３０Ｃ４は、その暗号文を、出力部３０Ｃ５に提供する。【０１６６】
最後に、出力部３０Ｃ５は、暗号文を受け付けると、その暗号文を出力する（ステップCE6）。【０１６７】
本実施の形態では、第１の実施の形態と同様の効果を奏する。【０１６８】
さらに、本実施の形態では、生成部３０Ｃは、タグが「０」を示す場合には、平文の暗号文として、第１暗号文を出力し、タグが「１」を示す場合には、平文の暗号文として、第３暗号文を出力する。このため、ＸＥＸ*モードでの暗号化を行うことが可能となる。【０１６９】
上記各実施の形態は、無線もしくは有線のデータ通信における認証と暗号化といった用途や、ストレージ上のデータの暗号化と改ざん防止といった用途に適用できる。【０１７０】
ここで、上記各実施の形態に共通する特徴等をまとめておく。【０１７１】
調整値付きブロック暗号は、nビットブロック暗号の暗号文を生成する前と後で加算（排他的論理和）するオフセット値をtweak（調整値）に依存して生成する。そして、オフセットの生成において必要な乱数を効率よく生成するため、tweakをnビットのtweak1とtweak2に分割し、tweak1をnビットブロック暗号で暗号化した結果を用いる。【０１７２】
ここで、tweak1がとりうる値を、nビット空間のある部分集合Nに制限することで、N以外の平文については、オフセットを加算せず、そのままブロック暗号で暗号化した結果を暗号文として用いることができる。【０１７３】
オフセット加算を省略できることにより、通常のオフセット加算を用いる処理よりも高速な処理が可能となる。【０１７４】
このような付加的暗号化機能は、入力できる平文に制約があることから、通常の意味での暗号化よりも、擬似乱数生成などの役割に適している。【０１７５】
このように、オフセット加算なしの暗号化は、LRWモードでも実現可能であるが、LRWモードは、この目的のために、オフセットの生成において必要な乱数を、ブロック暗号の鍵とは独立に生成する必要があった。【０１７６】
安全性のため、オフセットを生成するための処理にはいくつかの条件があるが、これらの条件は、既存の調整値付きブロック暗号である、XEXモードが用いる方法と同じものが使用可能である。【０１７７】
それ以外にも、ブロック暗号の処理の一部分から導出されるブロック単位の置換と、ブロック暗号そのものとを組み合わせてオフセットを計算する方法も可能である。【０１７８】
前者の処理としては、ブロック暗号の短縮段、つまり段関数の何回かの繰り返しによる置換を用いるのが典型的である。【０１７９】
この置換処理とブロック暗号そのものとを組み合わせて、tweak（特にtweak2）の任意の更新を可能とする高速な調整値付きブロック暗号装置を構成できる。【０１８０】
具体的に、ブロック暗号の一部分から導出される置換処理を用いる場合は、tweak1を入力としたブロック暗号の出力とtweak2との和をとり、これを前述の置換処理に入力することで、オフセットを求める。【０１８１】
XEXモードでは、tweak2は、逐次的にしか更新できず、任意の値への更新は不可能であるのに対して、上記各実施の形態では、ブロック暗号の一部分を用いて、効率よくtweak2の任意の更新が可能である。【０１８２】
この方式は、ブロック暗号自体が安全であり、ブロック暗号の一部分から導出される置換処理の差分確率が小さい場合には、選択平文・暗号文攻撃に理論的に安全な調整値付きブロック暗号となる。【０１８３】
一方、ブロック暗号の出力側へのオフセットの加算を省略した場合は、選択平文攻撃に安全な調整値付きブロック暗号となる。【０１８４】
以上、各実施形態を参照して本願発明を説明したが、本願発明は上記各実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１８５】
この出願は、２００８年４月１５日に出願された日本出願特願２００８−１０５７０６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2009128370.tif 000003
【図２Ａ】
2009128370.tif 000004
【図２Ｂ】
2009128370.tif 000005
【図２Ｃ】
2009128370.tif 000006
【図３】
2009128370.tif 000007
【図４】
2009128370.tif 000008
【図５】
2009128370.tif 000009
【図６】
2009128370.tif 000010
【図７】
2009128370.tif 000011
【図８】
2009128370.tif 000012
【図９】
2009128370.tif 000013
【図１０】
2009128370.tif 000014
【図１１】
2009128370.tif 000015
【図１２】
2009128370.tif 000016
【図１３】
2009128370.tif 000017
【手続補正書】
【提出日】平成21年11月13日(2009.11.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ブロック暗号方式で暗号化を行う暗号化部と、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部と、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、その際、あらかじめ前記第１調整値の取り得る値の集合と、前記第２暗号処理で使われる平文の取り得る値の集合とが排反となるようにし、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部と、を含む調整値付きブロック暗号装置。
【請求項２】
（削除）
【請求項３】
前記生成部は、前記第１暗号文と前記オフセット値との和をとって、第３暗号文を生成する、請求の範囲第１項に記載の調整値付きブロック暗号装置。
【請求項４】
前記入力部は、さらに、第１オフセット処理と第２オフセット処理のいずれかを示す処理情報を受け付け、
前記生成部は、前記処理情報が前記第１オフセット処理を示す場合には、前記平文の暗号文として、前記第１暗号文を出力し、前記処理情報が前記第２オフセット処理を示す場合には、前記平文の暗号文として、前記第３暗号文を出力する、請求の範囲第３項に記載の調整値付きブロック暗号装置。
【請求項５】
前記生成部は、前記オフセット用暗号と、有限体上にある基数について前記第２調整値を指数とした演算要素と、の乗算を行い、当該乗算の結果を、前記オフセット値とする、請求の範囲第１項、第３項または第４項に記載の調整値付きブロック暗号装置。
【請求項６】
前記生成部は、前記オフセット用暗号と前記第２調整値との和をとり、当該和に対して、前記ブロック暗号方式で行われる置換処理を施して前記オフセット値を求める、請求の範囲第１項、第３項または第４項に記載の調整値付きブロック暗号装置。
【請求項７】
前記平文および前記第２調整値の長さは、１２８ビットであり、
前記暗号化部は、前記ブロック暗号方式として、ブロックの長さを１２８ビットとするＡＥＳを用い、
前記生成部は、前記オフセット用暗号と前記第２調整値との和に対して、前記ＡＥＳに規定された１２８ビット置換処理を施して前記オフセット値を求める、請求の範囲第６項に記載の調整値付きブロック暗号装置。
【請求項８】
前記暗号化部は、前記ブロック暗号方式に応じたブロック暗号アルゴリズムを格納し、当該ブロック暗号アルゴリズムに基づいて暗号化を行う、請求の範囲第１項、第３項、第４項、第５項、第６項または第７項に記載の調整値付きブロック暗号装置。
【請求項９】
ブロック暗号方式で暗号化を行う暗号化部を含む調整値付きブロック暗号装置が行う暗号生成方法であって、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付け、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、その際、あらかじめ前記第１調整値の取り得る値の集合と、前記第２暗号処理で使われる平文の取り得る値の集合とが排反となるようにし、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する、暗号生成方法。
【請求項１０】
（削除）
【請求項１１】
コンピュータを、
ブロック暗号方式で暗号化を行う暗号化部、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部、および、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、その際、あらかじめ前記第１調整値の取り得る値の集合と、前記第２暗号処理で使われる平文の取り得る値の集合とが排反となるようにし、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部、として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【手続補正書】
【提出日】平成22年4月14日(2010.4.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ブロック暗号方式で暗号化を行う暗号化部と、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部と、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部と、を含み、
前記生成部は、前記第１調整値の最下位ビットを０に固定し、前記第２暗号処理で使われる平文の最下位ビットを１に固定することによって、前記第１調整値を、前記第２暗号処理で使われる平文と異なるものとする、調整値付きブロック暗号装置。
【請求項２】
（削除）
【請求項３】
前記生成部は、前記第１暗号文と前記オフセット値との和をとって、第３暗号文を生成する、請求の範囲第１項に記載の調整値付きブロック暗号装置。
【請求項４】
前記入力部は、さらに、第１オフセット処理と第２オフセット処理のいずれかを示す処理情報を受け付け、
前記生成部は、前記処理情報が前記第１オフセット処理を示す場合には、前記平文の暗号文として、前記第１暗号文を出力し、前記処理情報が前記第２オフセット処理を示す場合には、前記平文の暗号文として、前記第３暗号文を出力する、請求の範囲第３項に記載の調整値付きブロック暗号装置。
【請求項５】
前記生成部は、前記オフセット用暗号と、有限体上にある基数について前記第２調整値を指数とした演算要素と、の乗算を行い、当該乗算の結果を、前記オフセット値とする、請求の範囲第１項、第３項または第４項に記載の調整値付きブロック暗号装置。
【請求項６】
前記生成部は、前記オフセット用暗号と前記第２調整値との和をとり、当該和に対して、前記ブロック暗号方式で行われる置換処理を施して前記オフセット値を求める、請求の範囲第１項、第３項または第４項に記載の調整値付きブロック暗号装置。
【請求項７】
前記平文および前記第２調整値の長さは、１２８ビットであり、
前記暗号化部は、前記ブロック暗号方式として、ブロックの長さを１２８ビットとするＡＥＳを用い、
前記生成部は、前記オフセット用暗号と前記第２調整値との和に対して、前記ＡＥＳに規定された１２８ビット置換処理を施して前記オフセット値を求める、請求の範囲第６項に記載の調整値付きブロック暗号装置。
【請求項８】
前記暗号化部は、前記ブロック暗号方式に応じたブロック暗号アルゴリズムを格納し、当該ブロック暗号アルゴリズムに基づいて暗号化を行う、請求の範囲第１項、第３項、第４項、第５項、第６項または第７項に記載の調整値付きブロック暗号装置。
【請求項９】
ブロック暗号方式で暗号化を行う暗号化部を含む調整値付きブロック暗号装置が行う暗号生成方法であって、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付け、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成し、
前記第１暗号文を生成することは、前記第１調整値の最下位ビットを０に固定し、前記第２暗号処理で使われる平文の最下位ビットを１に固定することによって、前記第１調整値を、前記第２暗号処理で使われる平文と異なるものとすることを含む、暗号生成方法。
【請求項１０】
（削除）
【請求項１１】
コンピュータを、
ブロック暗号方式で暗号化を行う暗号化部、
第１暗号処理と第２暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部、および、
前記指示情報が前記第１暗号処理を示す場合には、前記調整値を第１調整値と第２調整値に分割し、前記暗号化部を用いて当該第１調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第２調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第１暗号文を生成し、前記指示情報が前記第２暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第２暗号文を生成する生成部、として機能させるためのプログラムを記録し、
前記生成部は、前記第１調整値の最下位ビットを０に固定し、前記第２暗号処理で使われる平文の最下位ビットを１に固定することによって、前記第１調整値を、前記第２暗号処理で使われる平文と異なるものとする、コンピュータ読み取り可能な記録媒体。
【国際調査報告】
2009128370.tif 000018
2009128370.tif 000019
2009128370.tif 000020
2009128370.tif 000021