(57)【要約】  本発明のブロック暗号化装置は、（ｎ＋ｍ）ビット平文にユニバーサルハッシュ関数ベースの置換を適用し、ｎビットの第１の中間変数とｍビットの第２の中間変数を生成する攪拌手段（１０１）と、ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、第２の中間変数を調整値として第１の中間変数を暗号化し、ｍビットの第３の中間変数と（ｎ−ｍ）ビットの第４の中間変数を生成する第１の単位ブロック暗号化手段（１０２）と、上記暗号化関数を用いて第３の中間変数を調整値として第２の中間変数と第４の中間変数を連結したｎビットの中間変数を暗号化することで、ｎビットの第５の中間変数を生成する第２の単位ブロック暗号化手段（１０３）と、第３の中間変数と第５の中間変数を連結した結果にユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット暗号文を生成する逆攪拌手段（１０４）とを有する。
2012105352.tif 000002
【特許請求の範囲】
【請求項１】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、暗号化対象の（ｎ＋ｍ）ビット平文が入力される平文入力手段と、
前記（ｎ＋ｍ）ビット平文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｎビットの第１の中間変数とｍビットの第２の中間変数を生成する攪拌手段と、
ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第２の中間変数を調整値として前記第１の中間変数を暗号化し、ｍビットの第３の中間変数と（ｎ−ｍ）ビットの第４の中間変数を生成する第１の調整値付き単位ブロック暗号化手段と、
前記ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第３の中間変数を調整値として、前記第２の中間変数と前記第４の中間変数を連結したｎビットの中間変数を暗号化することで、ｎビットの第５の中間変数を生成する第２の調整値付き単位ブロック暗号化手段と、
前記第３の中間変数と前記第５の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット暗号文を生成する逆攪拌手段と、
前記（ｎ＋ｍ）ビット暗号文を出力する暗号文出力手段と、
を有するブロック暗号化装置。
【請求項２】
請求項１に記載のブロック暗号化装置において、
前記ユニバーサルハッシュ関数ベースの置換および前記ユニバーサルハッシュ関数ベースの逆置換が、ｎビット入力ｍビット出力のユニバーサルハッシュ関数をラウンド関数としたFeistel型置換で構成される、ブロック暗号化装置。
【請求項３】
請求項１または２に記載のブロック暗号化装置において、
前記ｍビット調整値付きｎビットブロック暗号の暗号化関数は、
ｎ以上で任意の正の整数Ｌについて、ｎビットブロック、Ｌビット鍵のブロック暗号の暗号化関数Ｅと、Ｌビットブロックの暗号化関数Ｇを用いて、調整値を該暗号化関数Ｇで暗号化した結果をさらに該暗号化関数Ｅの鍵として用いてｎビット平文を暗号化するものである、ブロック暗号化装置。
【請求項４】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、復号対象の（ｎ＋ｍ）ビット暗号文が入力される暗号文入力手段と、
前記（ｎ＋ｍ）ビット暗号文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｍビットの第１の中間変数とｎビットの第２の中間変数を生成する攪拌手段と、
ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第１の中間変数を調整値として前記第２の中間変数を復号し、（ｎ−ｍ）ビットの第３の中間変数とｍビットの第４の中間変数を生成する第２の調整値付き単位ブロック復号手段と、
前記ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第４の中間変数を調整値として前記第１の中間変数と前記第３の中間変数を連結したｎビットの中間変数を復号することで、ｎビットの第５の中間変数を生成する第１の調整値付き単位ブロック復号手段と、
前記第５の中間変数と前記第４の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット平文を生成する逆攪拌手段と、
前記（ｎ＋ｍ）ビット平文を出力する平文出力手段と、
を有する復号装置。
【請求項５】
請求項４に記載の復号装置において、
前記ユニバーサルハッシュ関数ベースの置換および前記ユニバーサルハッシュ関数ベースの逆置換が、
ｎビット入力ｍビット出力のユニバーサルハッシュ関数をラウンド関数としたFeistel型置換で構成される、復号装置。
【請求項６】
請求項４または５に記載の復号装置において、
前記ｍビット調整値付きｎビットブロック暗号の復号関数は、
ｎ以上で任意の正の整数Ｌについて、ｎビットブロック、Ｌビット鍵のブロック暗号の復号関数Ｄと、Ｌビットブロックの暗号化関数Ｇを用いて、調整値を該暗号化関数Ｇで暗号化した結果をさらに該復号関数Ｄの鍵として用いてｎビット暗号文を復号するものである、復号装置。
【請求項７】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット平文から暗号文を生成するための暗号化方法であって、
前記（ｎ＋ｍ）ビット平文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｎビットの第１の中間変数とｍビットの第２の中間変数を生成し、
ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第２の中間変数を調整値として前記第１の中間変数を暗号化し、ｍビットの第３の中間変数と（ｎ−ｍ）ビットの第４の中間変数を生成し、
前記ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第３の中間変数を調整値として、前記第２の中間変数と前記第４の中間変数を連結したｎビットの中間変数を暗号化することで、ｎビットの第５の中間変数を生成し、
前記第３の中間変数と前記第５の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット暗号文を生成し、
前記（ｎ＋ｍ）ビット暗号文を出力する、暗号化方法。
【請求項８】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット暗号文から平文を生成するための復号方法であって、
前記（ｎ＋ｍ）ビット暗号文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｍビットの第１の中間変数とｎビットの第２の中間変数を生成し、
ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第１の中間変数を調整値として前記第２の中間変数を復号し、（ｎ−ｍ）ビットの第３の中間変数とｍビットの第４の中間変数を生成し、
前記ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第４の中間変数を調整値として前記第１の中間変数と前記第３の中間変数を連結したｎビットの中間変数を復号することで、ｎビットの第５の中間変数を生成し、
前記第５の中間変数と前記第４の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット平文を生成し、
前記（ｎ＋ｍ）ビット平文を出力する、復号方法。
【請求項９】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット平文から暗号文をコンピュータに生成させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記（ｎ＋ｍ）ビット平文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｎビットの第１の中間変数とｍビットの第２の中間変数を生成し、
ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第２の中間変数を調整値として前記第１の中間変数を暗号化し、ｍビットの第３の中間変数と（ｎ−ｍ）ビットの第４の中間変数を生成し、
前記ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第３の中間変数を調整値として、前記第２の中間変数と前記第４の中間変数を連結したｎビットの中間変数を暗号化することで、ｎビットの第５の中間変数を生成し、
前記第３の中間変数と前記第５の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット暗号文を生成し、
前記（ｎ＋ｍ）ビット暗号文を出力する処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット暗号文から平文をコンピュータに生成させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記（ｎ＋ｍ）ビット暗号文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｍビットの第１の中間変数とｎビットの第２の中間変数を生成し、
ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第１の中間変数を調整値として前記第２の中間変数を復号し、（ｎ−ｍ）ビットの第３の中間変数とｍビットの第４の中間変数を生成し、
前記ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第４の中間変数を調整値として前記第１の中間変数と前記第３の中間変数を連結したｎビットの中間変数を復号することで、ｎビットの第５の中間変数を生成し、
前記第５の中間変数と前記第４の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット平文を生成し、
前記（ｎ＋ｍ）ビット平文を出力する処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号の運用モードに関し、特にｎビットブロック暗号による汎用的で高い安全性を持つ、ｎ以上２ｎ未満のビットブロック暗号の技術に関する。
【背景技術】
【０００２】
ブロック暗号とは、鍵により一意に定まる置換の集合であり、置換への入力が平文、出力が暗号文にそれぞれ相当する。平文と暗号文の長さをブロックサイズという。ブロックサイズがｎビット（ｎは１以上の整数）のブロック暗号を、一般にｎビットブロック暗号と呼ぶ。【０００３】
２ｎビットブロックサイズのブロック暗号を構成する場合、ｎビット入出力のラウンド関数と呼ばれる処理を用いた２ｎビット置換を繰り返す方法がある。例えば、DES（Data  Encryption  Standard）は64ビットブロックサイズであり、32ビット入出力長のラウンド関数と呼ばれる処理を用いたFeistel型置換と呼ばれる置換を繰り返すことで構成されている。DESなどの実用的なブロック暗号ではラウンド関数の処理は比較的シンプルであり、ラウンド関数の出力自体の乱数性は低い（乱数と容易に判別が可能）ため、Feistel型置換の繰り返し回数を十分大きく取り、64ビット全体の乱数性を高める必要がある。DESの場合は16回の繰り返しを行っている。【０００４】
一般にブロック暗号のブロックサイズは64,128などに固定され、可変でないため、それ以外のブロックサイズでのブロック暗号を構築するには、ブロック暗号を含めた既存の暗号化処理を部品として用いるアプローチが一般的である。このアプローチの利点は、部品の計算量的な安全性に基づき、ある種の安全性証明が可能となる点である。例えば、Feistel置換と呼ばれる代表的なブロック暗号構成手法において、部品となるラウンド関数の出力が真の乱数と効率的に判別できないほど高い乱数性を持つならば、このFeistel型置換を3回から4回繰り返すことで、全体として計算量的安全性が保証された２ｎビットブロック暗号となることがLubyとRackoffにより証明されている。【０００５】
よく考えられた既存のｎビットブロック暗号は計算量的に高い乱数性を持つと考えられるため、LubyとRackoffによる証明結果に基づき、DESをラウンド関数とした128ビットブロック暗号や、128ビットブロック暗号であるAES（Advanced  Encryption  Standard）をラウンド関数とした256ビットブロック暗号を構成することが可能である。【０００６】
このようなブロック暗号を、既存のｎビットブロックサイズのブロック暗号を部品として用いて２ｎビットブロックサイズを実現しているという意味で、「倍ブロック長ブロック暗号」と呼ぶ。【０００７】
また、倍ブロックではなく、ｎ以上２ｎ未満のブロックサイズを実現する手法もある。達成したいブロックサイズを（ｎ＋ｍ）ビット（ただし、ｍは１以上ｎ未満）として、このブロックサイズのブロック暗号を、「部分ブロック長ブロック暗号」と呼ぶ。【０００８】
これらの暗号機能は、平文と暗号文長が一致する暗号化（これを等長暗号化と呼ぶ）を実現するため実用的価値がある。通常のCBCモードなどの暗号化では任意の長さの平文を暗号化可能であるが、その代わり常に初期ベクトルという値が暗号文に付与され、暗号文長が平文長よりも長くなる。例えば、96ビットの系列を等長暗号化しようとする場合、既存の代表的なブロック暗号ではブロックサイズが64か128の2通りしか存在せず、これらを部品として用いて何らかの部分ブロック暗号を実現することが必要となる。【０００９】
倍ブロック長ブロック暗号の構成方法は、例えば、NaorとReingoldによる非特許文献１に開示されている。この文献には、4回のFeistel型置換の繰り返しによる方法など様々提案されている。図１１および図１２は、4回のFeistel型置換の繰り返しによる方法の一例を示す図である。図１１は平文xL,  xRから暗号文yL,  yRを生成する手順を示し、図１２は暗号文yL,  yRを平文xL,  xRに戻す手順を示す。【００１０】
この方法を含めほとんどの場合、その安全性保証は、一つの鍵で処理する暗号化回数ｑが２ｎ／２よりも十分に小さい（これをｑ≪２ｎ／２と表す)場合に限られている。２ｎ／２はバースデー限界と呼ばれ、バースデー限界程度の回数の暗号化の結果を用いた攻撃は一般にバースデー攻撃と呼ばれる。このような攻撃は、64ビットブロック暗号を用いた場合には現実的な脅威となり、また128ビットブロック暗号を用いた場合でも将来的なリスクと考えられるため、対策が必要である。【００１１】
例えば、Feistel型置換を4回繰り返す構成の場合、ラウンド関数によらずバースデー攻撃により攻撃が可能であることが知られている。【００１２】
一方、部分ブロック長ブロック暗号の場合は、RistenpartとRogawayによる、非特許文献２に開示されているXLSが知られている。これは、ｎビットブロック暗号を3回用いて（ｎ＋ｍ）ビットブロック暗号を実現するものであるが、その安全性はやはり一つの鍵で処理する暗号化回数ｑが２ｎ／２よりも十分に小さい場合に限られており、ｎのバースデー限界までの安全性のみを保証するものとなっている。【００１３】
一方、ｎのバースデー限界を超えた安全性を持つ倍ブロック長ブロック暗号や部分ブロック長ブロック暗号の構成方法としては、非特許文献１や非特許文献３などにおいて、Feistel型置換をLubyとRackoffによる証明結果よりも多く繰り返すことで達成する方法が知られている。これは場合によっては入力を不均等に分割したFeistel型置換を用いることもある。しかしながら、Feistel置換をベースとした方式はいずれも達成する安全性の限界に比べて繰り返しの回数が非常に多く、またターゲットのブロックサイズによっては、部品となる関数としてブロック暗号をそのまま使うと安全性の劣化が許容できない（バースデー限界までの安全性に落ちてしまう）などの問題がある。【００１４】
後者の問題は、非特許文献４に記載の手法などを使い、ブロック暗号を逆関数の存在しない関数へ変換する処理を行ってから部品とすればよいが、さらなる計算量の増加を招くこととなる。例えば、非特許文献１では、（ｎ＋ｍ）ビットの部分ブロック長ブロック暗号で、ｑの限界を２（ｎ＋ｍ）／２にまで向上させる場合、（ｎ＋ｍ）回のラウンド関数コールが必要になることが記載されている。非特許文献５では、Feistel置換の比較的少ない繰り返し（6回）でバースデー限界を超えた安全性を得ると主張されているが、証明が漸近的であり、定量的安全性評価が困難という問題がある。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】M.  Naor,  O.  Reingold,  On  the  Construction  of  Pseudo-Random  Permutations:  Luby-Rackoff  Revisited,  Electronic  Colloquium  on  Computational  Complexity  (ECCC)  4(5),  1997.
【非特許文献２】T.  Ristenpart  and  P.  Rogaway.  How  to  Enrich  the  Message  Space  of  a  Cipher,  Fast  Software  Encryption,  14th  International  Workshop,  FSE  2007,  Luxembourg,  Luxembourg,  March  26-28,  2007,  Revised  Selected  Papers.  Lecture  Notes  in  Computer  Science  4593  Springer  2007,  pp.  101-118.
【非特許文献３】B.  Morris,  P.  Rogaway,  and  T.  Stegers.,  How  to  Encipher  Messages  on  a  Small  Domain  :  Deterministic  Encryption  and  the  Thorp  Shuffle,  Advances  in  Cryptology  -  CRYPTO  2009,  29th  Annual  International  Cryptology  Conference,  Santa  Barbara,  CA,  USA,  August  16-20,  2009.  Proceedings.  Lecture  Notes  in  Computer  Science  5677  Springer  2009,  pp.  286-302.
【非特許文献４】S.  Lucks,  The  Sum  of  PRPs  Is  a  Secure  PRF,  Advances  in  Cryptology  -  EUROCRYPT  2000,  International  Conference  on  the  Theory  and  Application  of  Cryptographic  Techniques,  Bruges,  Belgium,  May  14-18,  2000,  Proceeding.  Lecture  Notes  in  Computer  Science  1807  Springer  2000,  pp.  470-484.
【非特許文献５】J.  Patarin,  Security  of  Random  Feistel  Schemes  with  5  or  More  Rounds,  Advances  in  Cryptology  -  CRYPTO  2004,  24th  Annual  International  Cryptology  Conference,  Santa  Barbara,  California,  USA,  August  15-19,  2004,  Proceedings.  Lecture  Notes  in  Computer  Science  3152  Springer  2004,  pp.  106-122.
【発明の概要】
【００１６】
上述の、ブロック暗号を用いた部分ブロック長ブロック暗号構成方法では、バースデー限界までの安全性を保証するがそれ以上の安全性を持たない方法か、バースデー限界を超えた安全性を持つが非常に効率の悪い方法のいずれかしかないという問題がある。
【００１７】
本発明の目的の一つは、バースデー限界を超えた安全性を持ち、演算効率のよいブロック暗号化装置、復号装置、暗号化方法、復号方法、およびコンピュータに実行させるためのプログラムを提供することである。
【００１８】
本発明の一側面のブロック暗号化装置は、ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、暗号化対象の（ｎ＋ｍ）ビット平文が入力される平文入力手段と、（ｎ＋ｍ）ビット平文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｎビットの第１の中間変数とｍビットの第２の中間変数を生成する攪拌手段と、ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、第２の中間変数を調整値として第１の中間変数を暗号化し、ｍビットの第３の中間変数と（ｎ−ｍ）ビットの第４の中間変数を生成する第１の調整値付き単位ブロック暗号化手段と、ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、第３の中間変数を調整値として、第２の中間変数と第４の中間変数を連結したｎビットの中間変数を暗号化することで、ｎビットの第５の中間変数を生成する第２の調整値付き単位ブロック暗号化手段と、第３の中間変数と第５の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット暗号文を生成する逆攪拌手段と、（ｎ＋ｍ）ビット暗号文を出力する暗号文出力手段と、を有する構成である。
【００１９】
また、本発明の一側面の復号装置は、ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、復号対象の（ｎ＋ｍ）ビット暗号文が入力される暗号文入力手段と、（ｎ＋ｍ）ビット暗号文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｍビットの第１の中間変数とｎビットの第２の中間変数を生成する攪拌手段と、ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、第１の中間変数を調整値として第２の中間変数を復号し、（ｎ−ｍ）ビットの第３の中間変数とｍビットの第４の中間変数を生成する第２の調整値付き単位ブロック復号手段と、ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、第４の中間変数を調整値として第１の中間変数と第３の中間変数を連結したｎビットの中間変数を復号することで、ｎビットの第５の中間変数を生成する第１の調整値付き単位ブロック復号手段と、第５の中間変数と第４の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット平文を生成する逆攪拌手段と、（ｎ＋ｍ）ビット平文を出力する平文出力手段と、を有する構成である。
【００２０】
また、本発明の一側面の暗号化方法は、ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット平文から暗号文を生成するための暗号化方法であって、（ｎ＋ｍ）ビット平文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｎビットの第１の中間変数とｍビットの第２の中間変数を生成し、ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、第２の中間変数を調整値として第１の中間変数を暗号化し、ｍビットの第３の中間変数と（ｎ−ｍ）ビットの第４の中間変数を生成し、ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、第３の中間変数を調整値として、第２の中間変数と第４の中間変数を連結したｎビットの中間変数を暗号化することで、ｎビットの第５の中間変数を生成し、第３の中間変数と第５の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット暗号文を生成し、（ｎ＋ｍ）ビット暗号文を出力するものである。
【００２１】
また、本発明の一側面の復号方法は、ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット暗号文から平文を生成するための復号方法であって、（ｎ＋ｍ）ビット暗号文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｍビットの第１の中間変数とｎビットの第２の中間変数を生成し、ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、第１の中間変数を調整値として第２の中間変数を復号し、（ｎ−ｍ）ビットの第３の中間変数とｍビットの第４の中間変数を生成し、ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、第４の中間変数を調整値として第１の中間変数と第３の中間変数を連結したｎビットの中間変数を復号することで、ｎビットの第５の中間変数を生成し、第５の中間変数と第４の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット平文を生成し、（ｎ＋ｍ）ビット平文を出力するものである。
【００２２】
また、本発明の一側面のプログラムは、上記本発明の暗号化方法をコンピュータに実行させるためのプログラムである。さらに、本発明の一側面のプログラムは、上記本発明の復号方法をコンピュータに実行させるためのプログラムである。
【図面の簡単な説明】
【００２３】
【図１】図１は第１の実施形態の部分ブロック長ブロック暗号化装置の一構成例を示すブロック図である。
【図２】図２は図１に示した部分ブロック長ブロック暗号化装置を実現する情報処理装置の一構成例を示すブロック図である。
【図３】図３は第１の実施形態の部分ブロック長ブロック暗号化装置における情報処理の流れを示す図である。
【図４】図４は図１に示した第１の攪拌手段および第２の逆攪拌手段について、図３に示した構成とは異なる場合の構成例を示す図である。
【図５】図５は第１の実施形態の部分ブロック長ブロック暗号化装置で用いられる調整値付きブロック暗号の暗号化関数を説明するための図である。
【図６】図６は第１の実施形態の部分ブロック長ブロック暗号化装置の動作手順を示すフローチャートである。
【図７】図７は第２の実施形態の部分ブロック長ブロック復号装置の一構成例を示すブロック図である。
【図８】図８は第２の実施形態の部分ブロック長ブロック復号装置における情報処理の流れを示す図である。
【図９】図９は第２の実施形態の部分ブロック長ブロック復号装置で用いられる調整値付きブロック暗号の復号関数を説明するための図である。
【図１０】図１０は第２の実施形態の部分ブロック長ブロック復号装置の動作手順を示すフローチャートである。
【図１１】図１１は倍ブロック長ブロック暗号について、関連する暗号化装置の一構成例を示す図である。
【図１２】図１２は倍ブロック長ブロック暗号について、関連する復号装置の一構成例を示す図である。
【発明を実施するための形態】
【００２４】
本実施形態のブロック暗号化装置および復号装置は、現実のブロック暗号を用いて、ｎに関するバースデー限界を超えた安全性を持つ部分ブロック長ブロック暗号を効率よく構成することを可能にしたものである。本実施形態のブロック暗号化装置および復号装置は、部分ブロック長ブロック暗号に関する装置である。以下では、本実施形態のブロック暗号化装置を「部分ブロック長ブロック暗号装置」と称し、本実施形態の復号装置を「部分ブロック長ブロック復号装置」と称する。
【００２５】
（第１の実施形態）
本実施形態の部分ブロック長ブロック暗号化装置の構成を説明する。図１は本実施形態の部分ブロック長ブロック暗号化装置の一構成例を示すブロック図である。
【００２６】
図１に示すように、本実施形態の部分ブロック長ブロック暗号化装置１０は、平文入力手段１００と、第１の攪拌手段１０１と、第１の調整値付き単位ブロック暗号化手段１０２と、第２の調整値付き単位ブロック暗号化手段１０３と、第２の逆攪拌手段１０４と、暗号文出力手段１０５とを有する。
【００２７】
図１に示した部分ブロック長ブロック暗号化装置１０を、図２に示す情報処理装置１５０で実現することが可能である。図２に示すように、情報処理装置１５０は、入力部１５１、制御部１５２、および出力部１５３を有するコンピュータの一種である。制御部１５２は、プログラムを記憶するメモリ５１と、プログラムにしたがって処理を実行するＣＰＵ（Central  Processing  Unit）５２とを有する。
【００２８】
ＣＰＵ５２がプログラムを実行することで、図１に示した第１の攪拌手段１０１、第１の調整値付き単位ブロック暗号化手段１０２、第２の調整値付き単位ブロック暗号化手段１０３、および第２の逆攪拌手段１０４が情報処理装置１５０に仮想的に構成される。入力部１５１が平文入力手段１００に相当し、出力部１５３が暗号文出力手段１０５に相当する。
【００２９】
なお、メモリ５１は、不揮発性メモリおよびＲＡＭ（Random  Access  Memory）などの主記憶部に相当するが、ハードディスク装置のような大容量の記憶領域を備えた副記憶部（不図示）が情報処理装置１５０に設けられていてもよい。プログラムの容量が大きすぎてメモリ５１に全て入らない場合、プログラムを副記憶部に格納しておき、ＣＰＵ５２による処理の進度に応じて、次に実行される処理の内容が記述された部分を副記憶部のプログラムから順次メモリ５１に読み込ませることで、大容量のプログラムの処理でも実行することが可能となる。
【００３０】
次に、図１に示した部分ブロック長ブロック暗号化装置１０を構成する各手段について説明する。図３は、本実施形態の部分ブロック長ブロック暗号化装置における情報処理の流れを示す図である。
【００３１】
本実施形態では、ターゲットとするブロックサイズを（ｎ＋ｍ）ビット(ｍは１以上ｎ未満）、内部で用いる調整値付きブロック暗号のブロックサイズをｎビット、調整値の長さをｍビットとする場合で説明する。
【００３２】
調整値付きブロック暗号とは、秘密鍵以外に調整値（tweak）と呼ばれるパラメータを用いて暗号化を行うブロック暗号のことを指す。調整値と鍵が定まれば、平文と暗号文は一対一で対応することが条件である。すなわち、調整値付きブロック暗号(tweakable  block  cipher)の暗号化関数TWENCと、対応する復号関数TWDECが存在するとき、平文M、暗号文C、鍵K、調整値Tについて、常に、式（１）を満たす。
【００３３】
【数１】
2012105352.tif 000003
この式で、双方向矢印は左右の命題の等価性を示す。式（１）を含めた調整値付きブロック暗号の形式的な定義と安全性要件は、非特許文献６に開示されているため、その詳細な説明を省略する。非特許文献６とは、「M.  Liskov,  R.  Rivest,  D.  Wagner,  Tweakable  Block  Ciphers,  Advances  in  Cryptology  -  CRYPTO  2002,  22nd  Annual  International  Cryptology  Conference,  Santa  Barbara,  California,  USA,  August  18-22,  2002,  Proceedings.  Lecture  Notes  in  Computer  Science  2442  Springer  2002,  pp.  31-46.」である。
【００３４】
平文入力手段１００は、暗号化の対象となる（ｎ＋ｍ）ビットの平文を入力するための手段である。平文入力手段１００は、例えば、キーボードなどの文字入力装置である。また、平文入力手段１００は、接続された他の装置からデータを受信するためのインタフェース装置、または、磁気記録媒体や光ディスクからデータを読み出す読み取り装置であってもよい。
【００３５】
第１の攪拌手段１０１は、入力された（ｎ＋ｍ）ビットの平文へシンプルな鍵付き置換mix1を適用するものである。
【００３６】
鍵付き置換mix1は、任意の異なる２つの、（ｎ＋ｍ）ビット平文x,  x'を、x=(xL,xR)、x'=(x'L,x'R)とする。ただしxLとx'Lはｎビット、xRとx'Rはｍビットである。そして、鍵付き置換mix1は、対応するmix1の出力を(SE,TE)  =  mix1(xL,xR)および(SE',TE')  =  mix1(x'L,x'R)とする。ただし、SEとSE'はｎビット、TEとTE'はｍビットである。この場合、どのような平文対であっても、以下の条件（式（２））を十分小さいeについて満たすことが必要である。
【００３７】
【数２】
2012105352.tif 000004
ただし、確率はmix1の鍵のランダムネスによって定義される。
【００３８】
具体的には、mix1はアンバランス型のFeistel置換を用いる方法がある。これは、ｎビット入力ｍビット出力の鍵付き関数Hを用いて、式（３）および式（４）とすればよい。
【００３９】
【数３】
2012105352.tif 000005
【００４０】
【数４】
2012105352.tif 000006
ただし、＋はビットごとの排他的論理和（XOR）演算を表す。
【００４１】
ここで、鍵付き関数Hが、任意の異なるxLとx'Lに対して式（５）を満たせば、式（２）の条件を満たせることになる。
【００４２】
【数５】
2012105352.tif 000007
Hがこの条件を満たすとき、Hはe-almost  XOR  ユニバーサルであると呼ばれる。これはユニバーサルハッシュ関数の一種であり、有限体上の入力と鍵の乗算で実現可能である。
【００４３】
または、非特許文献７に開示されているような、具体的な実装環境に特化した関数を用いてもよい。非特許文献７とは、「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」である。ここに開示された方法を用いて第１の攪拌手段１０１を実現した場合の構成を図４に示す。図４は攪拌手段および逆攪拌手段をFeistel型置換で実現する場合を示す。
【００４４】
第１の調整値付き単位ブロック暗号化手段１０２は、第１の攪拌手段１０１の出力を用いて暗号化処理を行う。具体的には、第１の攪拌手段１０１の出力(SE,TE)（SEはｎビット、TEはｍビット）について、第１の調整値付き単位ブロック暗号化手段１０２は、ある調整値付きブロック暗号(tweakable  block  cipher)の暗号化関数TWENC1を用いて、式（６）とする。
【００４５】
【数６】
2012105352.tif 000008
ここで、TWENC1(K1,(TE,SE))は鍵K1、ｍビットのtweak  TEを用いて、ｎビットの平文SEを暗号化する処理を示す。また、「||」はビットの連結を表し、式（６）の出力は、UEのｍビットとZEの（ｎ−ｍ）ビットの合計ｎビットとなる。ｎビットのSEが第１の中間変数に相当し、ｍビットのTEが第２の中間変数に相当する。ｍビットのUEが第３の中間変数に相当し、（ｎ−ｍ）ビットのZEが第４の中間変数に相当する。
【００４６】
第１の調整値付き単位ブロック暗号化手段１０２で用いる調整値付きブロック暗号は、式（６）が示すように、ｍビット調整値を持ち、ｎビットブロックサイズである。
【００４７】
具体的な構成方法としては、既存のブロック暗号もしくはそのシリアル合成に対して、中間変数の一部へ調整値を加算する方式がある。例えば、Feistel暗号については、このようなアプローチの妥当性が非特許文献８に開示されている。非特許文献８とは、「D.  Goldenberg,  S.  Hohenberger,  M.  Liskov,  E.  C.  Schwartz,  H.  Seyalioglu,  On  Tweaking  Luby-Rackoff  Blockciphers,  Advances  in  Cryptology  -  ASIACRYPT  2007,  13th  International  Conference  on  the  Theory  and  Application  of  Cryptology  and  Information  Security,  Kuching,  Malaysia,  December  2-6,  2007,  Proceedings.  Lecture  Notes  in  Computer  Science  4833  Springer  2007,  pp.  342-356.」である。
【００４８】
また、調整値に依存したブロック暗号の鍵更新を利用することで、既存の（通常の、調整値付きでない）ｎビットブロック暗号のアルゴリズムに手を加えることなく構成することも可能である。例えば、ｎビットブロック、Ｌ（Ｌはｎ以上の正の整数；例えば２ｎ）ビット鍵を持つ通常のブロック暗号の暗号化関数Eと、Ｌビットブロックの暗号化関数Gがあれば、TWENC1を、式（７）とすることが可能である。
【００４９】
【数７】
2012105352.tif 000009
ここで、E(V,  M)はＬビットのVを鍵としたｎビット平文Mの暗号化で、pad(T)はｍビットのTをＬビットへパディング（例えば、全ゼロを付け加えるなど）する処理であり、G(K1,pad(T))は鍵K1によるＬビットのpad(T)の暗号化である。このときのTWENCを図５に示す。
【００５０】
図５に示すように、暗号化関数TWENCは、ｎ以上で任意の正の整数Ｌについて、ｎビットブロック、Ｌビット鍵のブロック暗号の暗号化関数Ｅと、Ｌビットブロックの暗号化関数Ｇを用いて、ｍビットの調整値を暗号化関数Ｇで暗号化した結果をさらに暗号化関数Ｅの鍵として用いてｎビット平文を暗号化するものである。
【００５１】
図５において、第１の調整値付き単位ブロック暗号化手段１０２の場合、図５に示すTWENCはTWENC1と表され、図５に示す鍵KはK1と表される。また、第２の調整値付き単位ブロック暗号化手段１０３の場合、図５に示すTWENCはTWENC2と表され、図５に示す鍵KはK2と表される。
【００５２】
例えば、n=64,L=112とすると、Eを2-key  Triple  DESの暗号化関数、GをAESの暗号化関数（ただし、出力を128ビットから適当に112ビットへ短縮）とすることが可能である。GをAESの暗号化関数とした場合、他にもEとしてBlowfish,  MISTY1  (n=64,L=128)などの64ビットブロック暗号の暗号化関数を用いることが可能である。このTWENC1を用いた場合、式（６）の処理は、式（８）となる。
【００５３】
【数８】
2012105352.tif 000010
図３に示すsepは中間変数の分割処理を意味し、図３に示すconはバイナリ系列の連結を意味する。
【００５４】
第２の調整値付き単位ブロック暗号化手段１０３は、第１の調整値付き単位ブロック暗号化手段１０２において、式（６）に従って出力されたｍビットのUEと（ｎ−ｍ）ビットのZE、およびｎビットのTEを用いた暗号化処理を行う。
【００５５】
具体的には、第２の調整値付き単位ブロック暗号化手段１０３は、ある調整値付きブロック暗号の暗号化関数TWENC2（ｍビット調整値、ｎビットブロック）を用いて、式（９）とする。
【００５６】
【数９】
2012105352.tif 000011
ここで、UE,ZE,TEは式（６）に従い、K2はTWENC2の鍵である。ｎビットのVEは第５の中間変数に相当する。
【００５７】
暗号化関数TWENC2は第１の調整値付き単位ブロック暗号化手段１０２が用いるTWENC1と異なるアルゴリズムでもよいし、同じアルゴリズムでもよい。後者の場合、任意のM,K,TについてTWENC2(K,T,M)=TWENC1(K,T,M)となる。さらに、K2は第１の調整値付き単位ブロック暗号化手段１０２が用いる鍵K1と同じでもよいし、独立でもよい。
【００５８】
第２の逆攪拌手段１０４は、第２の調整値付き単位ブロック暗号化手段１０３の（ｎ＋ｍ）ビット出力へシンプルな鍵付き置換invmix2を適用する処理を行う。第２の逆攪拌手段１０４の入力を(UE,VE)とすると、出力はinvmix2(UE,VE)となる。
【００５９】
invmix2は、その逆置換をmix2としたとき（すなわち任意の（ｎ＋ｍ）ビットxについてmix2(invmix2(x))  =  x）、mix2が第１の攪拌手段１０１におけるmix1と同様の性質を持つとする。
【００６０】
具体的には、任意の異なる２つの、（ｎ＋ｍ）ビット暗号文y,  y'を、y=(yL,yR)、y'=(y'L,y'R)とする。ただし、yLとy'Lはｍビット、yRとy'Rはｎビットである。また、対応するmix2の出力を、(UE,VE)  =  mix2(yL,yR)および(UE',VE')  =  mix2(y'L,y'R)とする。この場合、どのような暗号文対であっても、以下の条件（式（１０））を十分小さいgについて満たすことが必要である。
【００６１】
【数１０】
2012105352.tif 000012
ここで、mix2はmix1の処理を左右反転させたものでよく、invmix2はmix2を定めれば一意に定まる。
【００６２】
具体的には、invmix2は、mix1と同様にFeistel置換でよい。このときinvmix2の入力を(UE,VE)、出力を(yL,yR)とすれば、式（１１）とすればよい。
【００６３】
【数１１】
2012105352.tif 000013
ここで用いる鍵付き関数Hの鍵は、第１の攪拌手段１０１が用いるHの鍵と等しくてもよいし、独立でもよい。Feistel置換を用いて第２の逆攪拌手段１０４を実現した場合の構成を図４に示す。
【００６４】
暗号文出力手段１０５は、第２の逆攪拌手段１０４から入力される（ｎ＋ｍ）ビットの暗号文(yL,yR)を出力する手段である。ディスプレイ装置やプリンターなどで実現可能である。
【００６５】
次に、本実施形態の部分ブロック長ブロック暗号化装置１０の動作を説明する。図６は本実施形態の部分ブロック長ブロック暗号化装置の動作手順を示すフローチャートである。
【００６６】
平文入力手段１００に平文(xL,xR)が入力されると（ステップ３０１）、第１の攪拌手段１０１は、鍵付き置換を用いて平文(xL,xR)を撹拌して中間変数(SE,TE)を求める（ステップ３０２）。次に、第１の調整値付き単位ブロック暗号化手段１０２は、中間変数TEの、あるｍビット部分を調整値として式（６）に従って中間変数SEを暗号化し、中間変数UE、ZEを求める（ステップ３０３）。次に、第２の調整値付き単位ブロック暗号化手段１０３は、中間変数UEの、あるｍビット部分を調整値として、中間変数ZEと中間変数TEを連結した結果を暗号化し、中間変数VEを求める（ステップ３０４）。その後、第２の逆攪拌手段１０４が鍵付き逆置換を用いて中間変数(UE,VE)を逆撹拌して暗号文(yL,yR)を生成し、暗号文(yL,yR)が暗号文出力手段１０５から出力される（ステップ３０５）。
【００６７】
（第２の実施形態）
本実施形態の部分ブロック長ブロック復号装置の構成を説明する。図７は本実施形態の部分ブロック長ブロック復号装置の一構成例を示すブロック図である。
【００６８】
本実施形態の部分ブロック長ブロック復号装置２０は、暗号文入力手段２００と、第２の攪拌手段２０１と、第２の調整値付き単位ブロック復号手段２０２と、第１の調整値付き単位ブロック復号手段２０３と、第１の逆攪拌手段２０４と、平文出力手段２０５とを有する。
【００６９】
なお、図７に示す部分ブロック長ブロック復号装置１０を、図２に示した情報処理装置１５０で実現することが可能であり、ここでは、その詳細な説明を省略する。
【００７０】
次に、図７に示した部分ブロック長ブロック復号装置２０を構成する各手段について説明する。図８は、本実施形態の部分ブロック長ブロック復号装置における情報処理の流れを示す図である。
【００７１】
本実施形態も、ターゲットとするブロックサイズを（ｎ＋ｍ）ビット(ｍは１以上ｎ未満）、内部で用いる調整値付きブロック暗号のブロックサイズをｎビット、調整値の長さをｍビットとする場合で説明する。
【００７２】
暗号文入力手段２００は、復号の対象となる（ｎ＋ｍ）ビットの暗号文を入力する手段である。暗号文入力手段２００は、例えば、キーボードなどの文字入力装置である。また、暗号文入力手段２００は、インタフェース装置または読み取り装置であってもよい。
【００７３】
第２の攪拌手段２０１は、入力された（ｎ＋ｍ）ビットの暗号文へ鍵付き置換mix2を適用するものである。鍵付き置換mix2は、第１の実施形態におけるinvmix2の逆関数であればよい。
【００７４】
第２の調整値付き単位ブロック復号手段２０２は、第２の攪拌手段２０１の出力を用いた復号処理である。具体的には、第２の攪拌手段２０１の出力を(UD,VD)（UDはｍビット、VDはｎビット）とした場合、第２の調整値付き単位ブロック復号手段２０２は、第１の実施形態における第２の調整値付き単位ブロック暗号化手段１０３の用いる調整値付きブロック暗号の暗号化関数TWENC2に対応した復号関数TWDEC2を用いて、(UD,VD)から、式（１２）として（ｎ−ｍ）ビットのZDとｍビットのTDを求め、(ZD,UD,TD)を出力する。
【００７５】
【数１２】
2012105352.tif 000014
TWDEC2の鍵K2は式（９）におけるK2と同じ値である。ｍビットのUDが第１の中間変数に相当し、ｎビットのVDが第２の中間変数に相当し、（ｎ−ｍ）ビットのZDが第３の中間変数に相当し、ｍビットのTDが第４の中間変数に相当する。
【００７６】
もしTWENC2が式（７）と同様にｎビットブロック、Ｌビット鍵を持つブロック暗号の暗号化関数EとＬビットブロックの暗号化関数Gにより行われる場合、暗号化関数Eに対応する復号関数Dを用いて、TWDEC2は、式（１３）と定義される。
【００７７】
【数１３】
2012105352.tif 000015
このときのTWDECを図９に示す。
【００７８】
図９に示すように、復号関数TWDECは、ｎ以上で任意の正の整数Ｌについて、ｎビットブロック、Ｌビット鍵のブロック暗号の復号関数Ｄと、Ｌビットブロックの暗号化関数Ｇを用いて、ｍビットの調整値を暗号化関数Ｇで暗号化した結果をさらに復号関数Ｄの鍵として用いてｎビット暗号文を復号するものである。
【００７９】
図９において、第１の調整値付き単位ブロック復号手段２０３の場合、図９に示すTWDECはTWDEC1と表され、図９に示す鍵KはK1と表される。また、第２の調整値付き単位ブロック復号手段２０２の場合、図９に示すTWDECはTWDEC2と表され、図９に示す鍵KはK2と表される。
【００８０】
このTWDEC2を用いた場合、式（１２）の処理は、式（１４）となる。
【００８１】
【数１４】
2012105352.tif 000016
第１の調整値付き単位ブロック復号手段２０３は、第２の調整値付き単位ブロック復号手段２０２の出力を用いた復号処理である。
【００８２】
具体的には、第１の調整値付き単位ブロック復号手段２０３は、第１の実施形態における第１の調整値付き単位ブロック暗号化手段１０２が用いる調整値付きブロック暗号の暗号化関数TWENC1（ｍビット調整値、ｎビットブロック）に対応する復号関数TWDEC1を用いて、(UD,ZD,TD)から、式（１５）とし、(SD,TD)を出力する。
【００８３】
【数１５】
2012105352.tif 000017
TWDEC1の鍵K1は、式（６）におけるK1と同じ値である。もしTWENC1が式（８）のように行われる場合、TWDEC1はTWDEC2と同様にｎビットブロック、Ｌビット鍵を持つブロック暗号の復号関数DとＬビットブロックの暗号化関数Gにより、式（１６）となる。
【００８４】
【数１６】
2012105352.tif 000018
ｎビットのSDは第５の中間変数に相当する。復号関数TWDEC1は第２の調整値付き単位ブロック復号手段２０２が用いるTWDEC2と異なるアルゴリズムでもよいし、同じアルゴリズムでもよい。後者の場合、任意のC,K,TについてTWDEC1(K,T,C)=TWDEC2(K,T,C)となる。さらに、K1は第２の調整値付き単位ブロック復号手段２０２が用いる鍵K2と同じでもよいし、独立でもよい。
【００８５】
第１の逆攪拌手段２０４は、第１の調整値付き単位ブロック復号手段２０３の出力へ鍵付き置換invmix1を適用するものである。invmix1は第１の実施形態における第１の攪拌手段１０１が用いる置換mix1の逆置換である。
【００８６】
平文出力手段２０５は、第１の逆攪拌手段２０４から与えられる平文(xL,xR)を出力する手段である。ディスプレイ装置やプリンターなどで実現可能である。
【００８７】
次に、本実施形態の部分ブロック長ブロック復号装置２０の動作を説明する。図１０は本実施形態の部分ブロック長ブロック復号装置の動作手順を示すフローチャートである。
【００８８】
暗号文入力手段２００に暗号文(yL,yR)が入力されると（ステップ４０１）、第２の攪拌手段２０１は、鍵付き置換を用いて暗号文(yL,yR)を撹拌して中間変数(UD,VD)を求める（ステップ４０２）。次に、第２の調整値付き単位ブロック復号手段２０２は、中間変数UDの、あるｍビット部分を調整値として式（１２）に従って中間変数VDを復号し、中間変数ZD、TDを求める（ステップ４０３）。次に、第１の調整値付き単位ブロック復号手段２０３は、中間変数TDの、あるｍビット部分を調整値として、中間変数UDと中間変数ZDを連結した結果を復号し、中間変数SDを求める（ステップ４０４）。その後、第１の逆攪拌手段２０４が鍵付き逆置換を用いて中間変数(SD,TD)を逆撹拌して平文(xL,xR)を生成し、平文(xL,xR)が平文出力手段２０５から出力される（ステップ４０５）。
【００８９】
第１および第２の実施形態によれば、部品として用いる（ｍビット調整値、ｎビットブロックの）調整値付きブロック暗号が理論的に安全で、攻撃者が用いる平文・暗号文対の数が２（ｎ＋ｍ）／２より十分小さい場合に理論的安全性を持つため、バースデー攻撃に対する理論的耐性を持つ。そのため、バースデー限界を超えた安全性を保証する部分ブロック長ブロック暗号を効率よく実現することができる。耐性の強さはｍに正比例して大きくなる。
【００９０】
調整値付きブロック暗号自体にもｎのバースデー限界を超えた安全性が求められるが、調整値の長さ（要求する安全性のレベルにより決まる）によっては通常のブロック暗号で実現可能である。また、非特許文献９に記載のHasty  Pudding  Cipherのように一から設計された調整値付きブロック暗号アルゴリズムが存在し、また、非特許文献８に記載のように、通常のブロック暗号のアルゴリズムにおける中間変数へ調整値を加算することで調整値付きブロック暗号を作るアプローチも提案されており、これらの成果に基づいたアルゴリズムで、ｎのバースデー限界を超えた安全性を有する調整値付きブロック暗号を実現することも可能である。
【００９１】
非特許文献９とは、「R.  Schroeppel,  Specification  for  the  Hasty  Pudding  Cipher,  http://  www.  cs.  arizona.  edu/  ~rcs/  hpc/  hpc-spec.」である。
【００９２】
さらに、上述の実施形態において、最初と最後は攪拌と呼ばれる処理が必要であるが、これはユニバーサルハッシュ関数で実現可能であり、実装環境に応じて最適化することで、ブロック暗号よりも大幅に高速に動作させることが可能である。
【００９３】
上述の実施形態で説明した、本発明の一例である（ｎ＋ｍ）ビットブロック暗号を、具体的には、通信やデータストレージにおける暗号化に使用する場合に、暗号モードとして使用することが考えられる。すなわち、暗号化の対象となるパケットなどの情報を（ｎ＋ｍ）ビットごとに分割し、通信であればＣＢＣ（Cipher  Block  Chaining）モードが適用できる。ハードディスクなどデータストレージの暗号化においては、非特許文献６に記載の方式を応用して適用可能である。また、通常のブロック暗号とは異なる特定長のメッセージを効率よく暗号化することが可能である。
【００９４】
例えばn=64,m=32とおくことで96ビットの等長暗号化が可能となる。等長暗号化は通常のＣＢＣなどの暗号化で起こる出力データの増加がないため、通信帯域の削減やデータのフォーマットを保ったままの暗号化に有用である。上述の96ビット等長暗号化の場合、64ビットブロック暗号を用いた、非特許文献２に開示された方法では32ビットの安全性（すなわち２３２回の暗号化での安全性）しか保証できないが、本発明では、上述の64ビットブロック暗号と128ビットブロック暗号を組み合わせることで、48ビットの安全性を保証することが可能となる。
【００９５】
本発明の効果の一例として、バースデー限界を超えた安全性を保証する部分ブロック長ブロック暗号を効率よく実現することができる。
【００９６】
また、本発明のプログラムの場合に限らず、本発明のプログラムを記録したコンピュータ読み取り可能な記録媒体であってもよい。本発明のプログラムを通信回線を介して他の情報処理装置に送信する場合に限らず、本発明のプログラムを記録媒体を介して他の情報処理装置にインストールすることが可能となる。
【００９７】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【００９８】
本発明を、無線または有線のデータ通信における認証と暗号化などの用途や、ストレージ上のデータの暗号化と改ざん防止などの用途に適用できる。【００９９】
なお、この出願は、２０１１年１月３１日に出願された日本出願の特願２０１１−１８３５９の内容が全て取り込まれており、この日本出願を基礎として優先権を主張するものである。
【符号の説明】
【０１００】
１０    部分ブロック長ブロック暗号化装置
２０    部分ブロック長ブロック復号装置
１００    平文入力手段
１０１    第１の撹拌手段
１０２    第１の調整値付き単位ブロック暗号化手段
１０３    第２の調整値付き単位ブロック暗号化手段
１０４    第２の逆撹拌手段
１０５    暗号文出力手段
２００    暗号文入力手段
２０１    第２の撹拌手段
２０２    第２の調整値付き単位ブロック復号手段
２０３    第１の調整値付き単位ブロック復号手段
２０４    第１の逆撹拌手段
２０５    平文出力手段
【図１】
2012105352.tif 000019
【図２】
2012105352.tif 000020
【図３】
2012105352.tif 000021
【図４】
2012105352.tif 000022
【図５】
2012105352.tif 000023
【図６】
2012105352.tif 000024
【図７】
2012105352.tif 000025
【図８】
2012105352.tif 000026
【図９】
2012105352.tif 000027
【図１０】
2012105352.tif 000028
【図１１】
2012105352.tif 000029
【図１２】
2012105352.tif 000030
【手続補正書】
【提出日】平成25年6月28日(2013.6.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット平文から暗号文をコンピュータに生成させるためのプログラムであって、
前記（ｎ＋ｍ）ビット平文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｎビットの第１の中間変数とｍビットの第２の中間変数を生成し、
ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第２の中間変数を調整値として前記第１の中間変数を暗号化し、ｍビットの第３の中間変数と（ｎ−ｍ）ビットの第４の中間変数を生成し、
前記ｍビット調整値付きｎビットブロック暗号の暗号化関数を用いて、前記第３の中間変数を調整値として、前記第２の中間変数と前記第４の中間変数を連結したｎビットの中間変数を暗号化することで、ｎビットの第５の中間変数を生成し、
前記第３の中間変数と前記第５の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット暗号文を生成し、
前記（ｎ＋ｍ）ビット暗号文を出力する処理を前記コンピュータに実行させるためのプログラム。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
ｎを１以上の整数とし、ｍを１以上ｎ未満の整数とするとき、（ｎ＋ｍ）ビット暗号文から平文をコンピュータに生成させるためのプログラムであって、
前記（ｎ＋ｍ）ビット暗号文に対してユニバーサルハッシュ関数ベースの置換を適用し、ｍビットの第１の中間変数とｎビットの第２の中間変数を生成し、
ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第１の中間変数を調整値として前記第２の中間変数を復号し、（ｎ−ｍ）ビットの第３の中間変数とｍビットの第４の中間変数を生成し、
前記ｍビット調整値付きｎビットブロック暗号の復号関数を用いて、前記第４の中間変数を調整値として前記第１の中間変数と前記第３の中間変数を連結したｎビットの中間変数を復号することで、ｎビットの第５の中間変数を生成し、
前記第５の中間変数と前記第４の中間変数を連結した結果に対してユニバーサルハッシュ関数ベースの逆置換を適用し、（ｎ＋ｍ）ビット平文を生成し、
前記（ｎ＋ｍ）ビット平文を出力する処理を前記コンピュータに実行させるためのプログラム。
【国際調査報告】
2012105352.tif 000031
2012105352.tif 000032
2012105352.tif 000033
2012105352.tif 000034