(57)【特許請求の範囲】
【請求項１】
入力されたデータを、ｋ個のブロックに分割する入力部と、
ラウンド毎に生成された暗号鍵を用いて、前記ブロック２つを組としてＦｅｉｓｔｅｌ置換を施すＲラウンド分のＦｅｉｓｔｅｌ置換部と、
前記分割数ｋの半数の２ｔ個（但し、ｔ＞２）のノードを持つｄｅＢｒｕｉｊｎグラフのｔビットの系列で表されたノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への矢線の色を決定する下記関数
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ  ｉｆ  ｕ１＝ｕｔ，
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ＋１  ｉｆ  ｕ１≠ｕｔを用いて、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換を行うブロック置換部と、
前記置換後のｋ個のブロックを結合して出力する出力部と、
を備えるブロック暗号装置。
【請求項２】
前記ブロック置換部は、
前記Ｆｅｉｓｔｅｌ置換部から出力された中間文Ｙ＝（ｙ［０］，．．．，ｙ［ｋ−１］）を入力とし、
０〜ｋ−１のブロック番号ｉがｋ／２未満で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
前記ブロック番号ｉがｋ／２以上で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
という置換を適用してラウンド出力文Ｚ＝（ｚ［０］，．．．，ｚ［ｋ−１］）を出力する請求項１のブロック暗号装置。
【請求項３】
前記対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換に代えて、
該中間文Ｙに対し、４ブロック毎に、右巡回置換と、左巡回置換を交互に行う第１のブロック置換と、
第１のブロック置換の結果に対してｋ個のブロック全体の右また左２ブロック巡回置換を行うことでラウンド出力文Ｚ＝（ｚ［０］，．．．，ｚ［ｋ−１］）を出力する第２のブロック置換とを行う請求項１のブロック暗号装置。
【請求項４】
前記ブロックの分割数ｋは、８の倍数であり、
前記対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換に代えて、
前記ブロック置換部は、
前記分割数ｋの半数の４ｗ個（但し、ｗ＞１）のノードを持つ次数２のグラフの
各ノード（ｊ＝０，１，．．．，ｗ−１）について、
ノード４ｊから、第１の色の矢線をノード４ｊ＋１へ、第２の色の矢線をノード４ｊ＋２へ、
ノード４ｊ＋１から、第１の色の矢線をノード４ｊ＋２へ、第２の色の矢線をノード４ｊ＋１へ、
ノード４ｊ＋２から、第１の色の矢線をノード４（ｊ＋１）へ、第２の色の矢線をノード４ｊ＋３へ、
ノード４ｊ＋３から、第１の色の矢線をノード４ｊ＋３へ、第２の色の矢線をノード４（ｊ＋１）へ
それぞれ遷移させる、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した有向グラフ（但し、ノード４ｗはノード０と見なす。）に相当するブロック置換を行う請求項１のブロック暗号装置。
【請求項５】
ブロック暗号装置の入力部が、入力されたデータを、ｋ個のブロックに分割するステップと、
前記ブロック暗号装置のＦｅｉｓｔｅｌ置換部が、ラウンド毎に生成された暗号鍵を用いて、前記ブロック２つを組としてＦｅｉｓｔｅｌ置換を施すＲラウンド分のＦｅｉｓｔｅｌ置換を行って、ブロック置換部に出力するステップと、
前記ブロック暗号装置のブロック置換部が、前記分割数ｋの半数の２ｔ個（但し、ｔ＞２）のノードを持つｄｅＢｒｕｉｊｎグラフのｔビットの系列で表されたノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への矢線の色を決定する下記関数
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ  ｉｆ  ｕ１＝ｕｔ，
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ＋１  ｉｆ  ｕ１≠ｕｔを用いて、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換を行うステップと、
前記ブロック暗号装置の出力部が、前記置換後のｋ個のブロックを結合して出力するステップと、
を含むブロック暗号化方法。
【請求項６】
前記ブロックの置換を行うステップは、前記ブロック置換部が、
前記Ｆｅｉｓｔｅｌ置換後の中間文Ｙ＝（ｙ［０］，．．．，ｙ［ｋ−１］）を入力とし、
０〜ｋ−１のブロック番号ｉがｋ／２未満で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
前記ブロック番号ｉがｋ／２以上で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
という置換を適用してラウンド出力文Ｚ＝（ｚ［０］，．．．，ｚ［ｋ−１］）を出力する請求項５のブロック暗号化方法。
【請求項７】
前記対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換に代えて、
前記ブロック置換部が、
該中間文Ｙに対し、４ブロック毎に、右巡回置換と、左巡回置換を交互に行う第１のブロック置換と、
第１のブロック置換の結果に対してｋ個のブロック全体の右また左２ブロック巡回置換を行うことでラウンド出力文Ｚ＝（ｚ［０］，．．．，ｚ［ｋ−１］）を出力する第２のブロック置換とを行う請求項５のブロック暗号化方法。
【請求項８】
前記ブロック暗号装置の入力部による前記ブロックの分割数ｋは、８の倍数であり、
前記対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換に代えて、
前記ブロック置換部が、
前記分割数ｋの半数の４ｗ個（但し、ｗ＞１）のノードを持つ次数２のグラフの
各ノード（ｊ＝０，１，．．．，ｗ−１）について、
ノード４ｊから、第１の色の矢線をノード４ｊ＋１へ、第２の色の矢線をノード４ｊ＋２へ、
ノード４ｊ＋１から、第１の色の矢線をノード４ｊ＋２へ、第２の色の矢線をノード４ｊ＋１へ、
ノード４ｊ＋２から、第１の色の矢線をノード４（ｊ＋１）へ、第２の色の矢線をノード４ｊ＋３へ、
ノード４ｊ＋３から、第１の色の矢線をノード４ｊ＋３へ、第２の色の矢線をノード４（ｊ＋１）へ
それぞれ遷移させる、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した有向グラフ（但し、ノード４ｗはノード０と見なす。）に相当するブロック置換を行う請求項５のブロック暗号化方法。
【請求項９】
入力されたデータを、ｋ個のブロックに分割する処理と、
ラウンド毎に生成された暗号鍵を用いて、前記ブロック２つを組としてＦｅｉｓｔｅｌ置換を施すＲラウンド分のＦｅｉｓｔｅｌ置換を行う処理と、
前記分割数ｋの半数の２ｔ個（但し、ｔ＞２）のノードを持つｄｅＢｒｕｉｊｎグラフのｔビットの系列で表されたノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への矢線の色を決定する下記関数
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ  ｉｆ  ｕ１＝ｕｔ，
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ＋１  ｉｆ  ｕ１≠ｕｔを用いて、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換を行う処理と、
前記置換後のｋ個のブロックを結合して出力する処理と、
をコンピュータに実行させ、前記コンピュータを入力部、Ｆｅｉｓｔｅｌ置換部、ブロック置換部及び出力部を備えるブロック暗号装置として機能させるプログラム。
【請求項１０】
前記コンピュータの前記ブロック置換部としての前記ブロックの置換を行う処理は、
前記Ｆｅｉｓｔｅｌ置換後の中間文Ｙ＝（ｙ［０］，．．．，ｙ［ｋ−１］）を入力とし、
０〜ｋ−１のブロック番号ｉがｋ／２未満で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
前記ブロック番号ｉがｋ／２以上で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
という置換を適用してラウンド出力文Ｚ＝（ｚ［０］，．．．，ｚ［ｋ−１］）を出力するものである請求項９のプログラム。
【請求項１１】
前記対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換に代えて、
前記コンピュータの前記ブロック置換部として
該中間文Ｙに対し、４ブロック毎に、右巡回置換と、左巡回置換を交互に行う第１のブロック置換処理と、
第１のブロック置換の結果に対してｋ個のブロック全体の右また左２ブロック巡回置換を行うことでラウンド出力文Ｚ＝（ｚ［０］，．．．，ｚ［ｋ−１］）を出力する第２のブロック置換処理とを前記コンピュータに実行させる請求項９のプログラム。
【請求項１２】
前記コンピュータの入力部としての前記ブロックの分割数ｋは、８の倍数であり、
前記対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換に代えて、
前記コンピュータの前記ブロック置換部として
前記分割数ｋの半数の４ｗ個（但し、ｗ＞１）のノードを持つ次数２のグラフの
各ノード（ｊ＝０，１，．．．，ｗ−１）について、
ノード４ｊから、第１の色の矢線をノード４ｊ＋１へ、第２の色の矢線をノード４ｊ＋２へ、
ノード４ｊ＋１から、第１の色の矢線をノード４ｊ＋２へ、第２の色の矢線をノード４ｊ＋１へ、
ノード４ｊ＋２から、第１の色の矢線をノード４（ｊ＋１）へ、第２の色の矢線をノード４ｊ＋３へ、
ノード４ｊ＋３から、第１の色の矢線をノード４ｊ＋３へ、第２の色の矢線をノード４（ｊ＋１）へ
それぞれ遷移させる、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した有向グラフ（但し、ノード４ｗはノード０と見なす。）に相当するブロック置換を前記コンピュータに実行させる請求項９のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２００９−２４６３０７号（２００９年１０月２７日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ブロック暗号装置、ブロック暗号化方法およびプログラムに関し、特に、特に、Ｆｅｉｓｔｅｌ置換を用いたブロック暗号装置、ブロック暗号化方法およびプログラムに関する。
【背景技術】
【０００２】
ブロック暗号とは、共通鍵暗号の一種であり、ある定められたブロックサイズの平文を鍵を用いて暗号化する技術である。ブロック暗号の代表的な構成方法として、Ｆｅｉｓｔｅｌ置換を用いる方式がある。Ｆｅｉｓｔｅｌ置換は、１ブロックを二つの単位ブロックＡ、Ｂに分割し、ラウンド関数と呼ばれる鍵付きの非線形関数に片方の単位ブロックＡを入力し、その出力を他方の単位ブロックＢへ排他的論理和したのち、単位ブロックをスワップして出力するものである。具体的には、ラウンド関数Ｆと入力（Ａ，Ｂ）に対して（Ｂ，Ｂ＋Ｆ（Ａ））を出力する。この処理を所定のラウンド数分繰り返して、暗号文を生成する。【０００３】
上記のＦｅｉｓｔｅｌ置換を一般化し、１ブロックを二つ以上に分割して、単位ブロック二つごとにＦｅｉｓｔｅｌ置換を適用する方法も知られており、一般化Ｆｅｉｓｔｅｌネットワーク（Ｇｅｎｅｒａｌｉｚｅｄ  Ｆｅｉｓｔｅｌ  Ｎｅｔｗｏｒｋ；ＧＦＮ）とも呼ばれている。【０００４】
ＧＦＮにおいては、１ブロックをある偶数ｋについてｋ単位ブロックに分割する。このｋは分割数と呼ばれる。単位ブロックがｎビットの場合、１平文はｋｎビットとなる。１ブロックを分割して得られたｋ個の単位ブロックを（ｍ［０］，ｍ［１］，・・・，ｍ［ｋ−１］）とした場合、ＧＦＮの１ラウンドは、ＢｌｏｃｋＰｅｒｍ（ｍ［０］，Ｆ（ｍ［０］）＋ｍ［１］，ｍ［２］，Ｆ（ｍ［２］）＋ｍ［３］，・・・，Ｆ（ｍ［ｋ−２］），Ｆ（ｍ［ｋ−２］）＋ｍ［ｋ−１］）となる。Ｆはラウンド関数であり、ＢｌｏｃｋＰｅｒｍはｋ単位ブロックのポジションを入れ替える置換である。【０００５】
ここで、ＢｌｏｃｋＰｅｒｍとしては巡回置換を使うものが標準的である。すなわち、
［数１］ＢｌｏｃｋＰｅｒｍ
ＢｌｏｃｋＰｅｒｍ（ｖ［０］，ｖ［１］，・・・，ｖ［ｋ−１］）＝（ｖ［１］，  ｖ［２］，・・・，ｖ［ｋ−１］，ｖ［０］）
となる。なお０番目の入力ブロックからｋ−１番目の入力ブロックまでそれぞれに対応する出力ブロックの番号を並べたリスト表現では、このＢｌｏｃｋＰｅｒｍは、｛１，２，．．．，ｋ−１，０｝と表現される。【０００６】
分割数ｋ＝４として巡回置換を用いたＧＦＮの例としては、非特許文献１の“ＣＬＥＦＩＡ”が挙げられる。分割数ｋ＝４の巡回置換を用いたＧＦＮの例を図１０に示す。【０００７】
一方、ＧＦＮを含めた、ブロック暗号の構造的な安全性を評価する手法として、疑似ランダム性と強疑似ランダム性がある。【０００８】
これはターゲットのブロック暗号が分割数ｋ、単位ブロックｎビットのＲラウンドＧＦＮの場合、全部でＲｋ／２個あるラウンド関数をすべて独立な疑似ランダム関数と見なしたとき、ブロック暗号全体がｋｎビットの疑似ランダム置換および強疑似ランダム置換となるかを評価するものである。【０００９】
ここで、疑似ランダム関数Ｆは任意の入力ｘから疑似乱数Ｆ（ｘ）（真の乱数と計算量的に判別が困難な系列）を出力する関数、疑似ランダム置換Ｅは任意の平文ｘから重複のない疑似乱数Ｅ（ｘ）を暗号文として出力する置換、強疑似ランダム置換Ｅは、Ｅが疑似ランダム置換の条件を満たしたうえに、Ｅの逆置換Ｄについても、任意の暗号文ｙから重複のない疑似乱数Ｄ（ｙ）を平文として出力するものである。強疑似ランダム置換は、現実に望みうる最も強い安全性を持つブロック暗号を意味する。【００１０】
例えばＢｌｏｃｋＰｅｒｍを巡回置換とした場合、非特許文献２により、ｋ＋１ラウンドのＧＦＮが疑似ランダム置換、２ｋラウンドのＧＦＮが強疑似ランダム置換となることが知られている。これらの評価は、実際のブロック暗号を構築するに当たって最小限必要なラウンド数を与えるものである。安全性と計算量の観点から、疑似ランダム性と強疑似ランダム性がより少ないラウンド数で満たされるブロック暗号が望ましいため、疑似ランダム性と強疑似ランダム性が満たされるラウンド数は、実際のブロック暗号の構造的な善し悪しを評価する指標としてよく使われている。【００１１】
実際のブロック暗号において使われるラウンド関数は疑似ランダム関数よりも一般的に弱いため、疑似ランダム性のために必要な最小ラウンド数よりもある程度ラウンド数を多くとり、安全性におけるマージンを確保している。もちろん、小さいラウンド数で疑似ランダム性と強疑似ランダム性が満たされる方が、あるレベルの安全性マージンを確保するのに必要なラウンド数を削減でき、全体の計算量削減が可能となる。【００１２】
なお、Ｆｅｉｓｔｅｌ型ではなくＳｕｂｓｔｉｔｕｔｉｏｎ−Ｐｅｒｍｕｔａｔｉｏｎ  ｎｅｔｗｏｒｋ型（ＳＰＮ型）のブロック暗号においては、ｋｎビットブロック入力（ｍ［０］，ｍ［１］，・・・，ｍ［ｋ−１］）に対して鍵付き非線形置換Ｓを用いてＭｉｘ（Ｓ（ｍ［０］），Ｓ（ｍ［１］），・・・，Ｓ（ｍ［ｋ−１］））という処理を１ラウンドとしている。ここでＭｉｘはｋｎビットの線形変換であるが、Ｍｉｘがｎビットブロック単位の入れ替えによる置換では異なるブロック間の影響がないため、いかなる場合でも安全ではない。Ｍｉｘはブロック間の線形演算を含んだ置換であることが必要である。【００１３】
例えば、非特許文献３の“ＳＡＦＥＲ”に記載の１２８ビットブロック暗号ＳＡＦＥＲ＋では、ｋ＝１６、ｎ＝８として、Ｐｓｅｕｄｏ−Ｈａｄａｍａｒｄ  Ｔｒａｎｓｆｏｒｍ（ＰＨＴ）と呼ばれる２ブロック単位の行列演算と、ブロック単位の入れ替えによる置換Ａｒｍｅｎｉａｎ  Ｓｈｕｆｆｌｅとを組み合わせることでＭｉｘを実現している。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】Taizo Shirai,Kyoji Shibutani,Toru Akishita,Shiho Moriai,Tetsu Iwata:The 128-Bit Blockcipher CLEFIA.Alex Biryukov(Ed.):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.181-195.
【非特許文献２】Shiho Moriai,Serge Vaudenay:On the Pseudorandomness of Top-Level Schemes of Block Ciphers.Tatsuaki Okamoto (Ed.): Advances in Cryptology - ASIACRYPT 2000, 6th International Conference on the Theory and Application of Cryptology and Information Security, Kyoto, Japan, December 3-7, 2000, Proceedings. Lecture Notes in Computer Science 1976 Springer 2000, pp. 289-302.
【非特許文献３】James L. Massey: On the Optimality of SAFER+ Diffusion. Proceedings of the Second AES Candidate Conference, National Institute of Standards and Technology, 1999. (http://csrc.nist.gov/archive/aes/round1/conf2/papers/massey.pdf)
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上記非特許文献１から３の全開示内容はその引用をもって本書に繰込み記載する。
以下に本発明による関連技術の分析を与える。
非特許文献３の“ＳＡＦＥＲ”では、Ａｒｍｅｎｉａｎ  Ｓｈｕｆｆｌｅについて、グラフに基づき以下のように探索的に発見したとしている。まず（ｍ［０］，ｍ［１］，・・・，ｍ［ｋ−１］）を置換ＢｌｏｃｋＰｅｒｍにより置換した結果を（ｃ［０］，ｃ［１］，・・・，ｃ［ｋ−１］）とする。この置換ＢｌｏｃｋＰｅｒｍをｋ／２個のノードのグラフで表現することを考える。ｓ＝（ｋ／２）−１として、グラフ中のノードにｎｏｄｅ＝０，．．．，ｓというラベルを付ける。ノードｉがｍ［２ｉ］とｍ［２ｉ＋１］を表すものとする。非特許文献３の“ＳＡＦＥＲ”に記載されるように、一般にはＢｌｏｃｋＰｅｒｍは、入出次数２、すなわち、どのノードに入る枝の数も２本で、どのノードから出て行く枝の数もまた２本である有向グラフと、そのグラフ上の枝への４色の彩色により一意に表現可能である。【００１６】
さらに、ＢｌｏｃｋＰｅｒｍについて、全ての偶数番目の入力ブロックは奇数番目の出力ブロックに置換され、全ての奇数番目の入力ブロックは偶数番目の出力ブロックへ置換されることを要請する。すなわち、ある偶数ｉ，ｉ’と奇数ｊ，ｊ’についてｃ［ｉ］＝ｍ［ｊ］かつｃ［ｊ’］＝ｍ［ｉ’］である。【００１７】
上記制約を満たす任意のＢｌｏｃｋＰｅｒｍを一意に表現するには、上述の有向グラフの枝への彩色パターンは２色で十分となる。具体的には、ｋ／２個のノードへラベル０，１，・・・，ｓ（ｓ＝（ｋ／２）−１）をつけて、各ノードから出る２本の枝の色が赤（第１の色；便宜的に細線で表す）と青（第２の色；便宜的に太線で表す）がそれぞれ一本ずつ、かつ、各ノードへ入る２本の枝も赤と青がそれぞれ一本ずつであるように彩色する。以降、このような枝の彩色ルールのことを「Ｔｙｐｅ−２枝彩色」と呼ぶ。【００１８】
これらの条件を満たす、枝が２色に彩色された有向グラフが与えられると、ノードｉからノードｊへの赤い枝を、ブロックｍ［２ｉ］のブロックｃ［２ｊ＋１］への置換と対応させて、ノードｉ’からノードｊ’への青い枝を、ブロックｍ［２ｉ’＋１］のブロックｃ［２ｊ’］への置換と対応させることで、置換ＢｌｏｃｋＰｅｒｍが一意に定まる。逆にＢｌｏｃｋＰｅｒｍが与えられたときに、対応する有向グラフも一意に定まる。なお、非特許文献３の“ＳＡＦＥＲ”では枝彩色の行われていない入出次数２の有向グラフをスケルトンと呼んでいる。【００１９】
非特許文献３の“ＳＡＦＥＲ”のＡｒｍｅｎｉａｎ  Ｓｈｕｆｆｌｅは、オーダー３の２値ｄｅ  ＢｒｕｉｊｎグラフＢ（３）をわずかに変形させたグラフをスケルトンとし、これに適当なＴｙｐｅ−２枝彩色を行って得られる置換である。【００２０】
ここでｄｅ  ＢｒｕｉｊｎグラフＢ（ｄ）について定義する。シンボル数が２でオーダーｄの２値ｄｅ  ＢｒｕｉｊｎグラフＢ（ｄ）は、ノード数２ｄの有向グラフであり、入出次数は、シンボル数と同じく２である。このとき、各ノードはｄビット値（ｄ＝３なら０００，００１，・・・，１１１）で表現される。あるｄビット値ｘの下位ｄ−１ビット値をＬＳ（ｘ）とし、ビット系列同士の連結を｜｜で表すとすると、グラフＢ（ｄ）においてノードｘから出る２本の枝は、ノードＬＳ（ｘ）｜｜０とＬＳ（ｘ）｜｜１へ入ることになる。【００２１】
２値ｄｅ  ＢｒｕｉｊｎグラフＢ（ｄ）のユニークな特徴として、グラフの直径、すなわち任意の２ノード間の遷移に必要な枝の数の最大値がｄであることが知られている。これは、ノード数２ｄ、次数２の有向グラフとしては理論最小値である。【００２２】
非特許文献３の“ＳＡＦＥＲ”では、Ａｒｍｅｎｉａｎ  Ｓｈｕｆｆｌｅのスケルトンの直径が、オーダー３の２値ｄｅ  ＢｒｕｉｊｎグラフＢ（３）の直径と同じ理論最小値である３を達成することから、ＳＰＮ型ブロック暗号で、線形変換ＭｉｘをＰＨＴとＡｒｍｅｎｉａｎ  Ｓｈｕｆｆｌｅを組み合わせて実現することにより、ある種の安全性評価が最適化されることを示している。【００２３】
冒頭に述べたように、一般化Ｆｅｉｓｔｅｌネットワークに基づく分割数ｋのブロック暗号において、単位ブロックの置換として一般的な巡回置換を用いると、疑似ランダム性と強疑似ランダム性を達成するのにそれぞれｋ＋１と２ｋラウンドを必要とし、ラウンド数を少なくしたいという要請がある。【００２４】
本発明は、上記した分析の下、なされたものであって、一般化Ｆｅｉｓｔｅｌネットワークに基づくブロック暗号において、疑似ランダム性と強疑似ランダム性に必要なラウンド数を低減できるよう構成されたブロック暗号装置、ブロック暗号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の第１の視点によれば、入力されたデータを、ｋ個のブロックに分割する入力部と、ラウンド毎に生成された暗号鍵を用いて、前記ブロック２つを組としてＦｅｉｓｔｅｌ置換を施すＲラウンド分のＦｅｉｓｔｅｌ置換部と、前記分割数ｋの半数の２ｔ個（但し、ｔ＞２）のノードを持つｄｅＢｒｕｉｊｎグラフのｔビットの系列で表されたノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への矢線の色を決定する下記関数
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ  ｉｆ  ｕ１＝ｕｔ，
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ＋１  ｉｆ  ｕ１≠ｕｔを用いて、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換を行うブロック置換部と、前記置換後のｋ個のブロックを結合して出力する出力部と、を備えるブロック暗号装置が提供される。【００２６】
本発明の第２の視点によれば、ブロック暗号装置の入力部が、入力されたデータを、ｋ個のブロックに分割するステップと、前記ブロック暗号装置のＦｅｉｓｔｅｌ置換部が、ラウンド毎に生成された暗号鍵を用いて、前記ブロック２つを組としてＦｅｉｓｔｅｌ置換を施すＲラウンド分のＦｅｉｓｔｅｌ置換を行って、ブロック置換部に出力するステップと、前記ブロック暗号装置のブロック置換部が、前記分割数ｋの半数の２ｔ個（但し、ｔ＞２）のノードを持つｄｅＢｒｕｉｊｎグラフのｔビットの系列で表されたノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への矢線の色を決定する下記関数ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ  ｉｆ  ｕ１＝ｕｔ，ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ＋１  ｉｆ  ｕ１≠ｕｔを用いて、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換を行うステップと、前記ブロック暗号装置の出力部が、前記置換後のｋ個のブロックを結合して出力するステップと、を含むブロック暗号化方法が提供される。本方法は、入力されたデータを暗復号するコンピュータという、特定の機械に結びつけられている。
【００２７】
本発明の第３の視点によれば、入力されたデータを、ｋ個のブロックに分割する処理と、ラウンド毎に生成された暗号鍵を用いて、前記ブロック２つを組としてＦｅｉｓｔｅｌ置換を施すＲラウンド分のＦｅｉｓｔｅｌ置換を行う処理と、前記分割数ｋの半数の２ｔ個（但し、ｔ＞２）のノードを持つｄｅＢｒｕｉｊｎグラフのｔビットの系列で表されたノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への矢線の色を決定する上記関数ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）を用いて、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換を行う処理と、前記置換後のｋ個のブロックを結合して出力する処理と、をコンピュータに実行させ、前記コンピュータを入力部、Ｆｅｉｓｔｅｌ置換部、ブロック置換部及び出力部を備えるブロック暗号装置として機能させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００２８】
本発明によれば、より少ないラウンド数で疑似ランダム性と強疑似ランダム性を達成できる一般化Ｆｅｉｓｔｅｌネットワークを用いたブロック暗号が得られることになる。その理由は、２値ｄｅＢｒｕｉｊｎグラフからも明らかなとおり、本発明のブロック置換が、２色に彩色されたグラフで表現した場合の十分距離（ｓｕｆｆｉｃｉｅｎｔ  ｄｉｓｔａｎｃｅ；ＳＤ）が巡回置換の場合よりも大幅に小さくなることある。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１の実施形態の構成を示す図［Ｓｔｒｕｃ１］である。
【図２】本発明の第１の実施形態の構成を処理ブロックで表した図［Ｂｌｏｃｋ１］である。
【図３】本発明の第１の実施形態のブロック置換（分割数８の場合）をグラフで表した図［ＣｄＢ０］と対応するリスト表現を表した図である（太線が青（第２色）、細線が赤（第１色）に対応する。）。
【図４】本発明の第１の実施形態の動作を示すフローチャート［Ｆｌｏｗ１］である。
【図５】本発明の第１の実施形態のブロック置換（分割数１６の場合）をグラフで表した図［ＣｄＢ１］である（太線が青（第２色）、細線が赤（第１色）に対応する。）。
【図６】本発明の第１の実施形態のブロック置換（分割数３２の場合）をグラフで表した図［ＣｄＢ２］である（太線が青（第２色）、細線が赤（第１色）に対応する。）。
【図７】図４［ＣｄＢ１］のグラフに対応するブロック置換（分割数１６の場合）を表した図［Ｐｅｒｍ１］である。
【図８】分割数８の左巡回置換をグラフで表した図［Ｃｙｃｌｉｃｇｐｈ］である（太線が青（第２色）、細線が赤（第１色）に対応する。）。
【図９】本発明の第２の実施形態の１ラウンド分の構成（分割数１６の場合）を示す図［Ｓｔｒｕｃ２］である。
【図１０】本発明の第２の実施形態のブロック置換（分割数１６の場合）をグラフで表した図［ＳＳ１］である（太線が青（第２色）、細線が赤（第１色）に対応する。）。
【図１１】分割数ｋ＝４の巡回置換を用いたＧＦＮの例を示す図［ＣｙｃｌｉｃＧＦＮ］である。
【発明を実施するための形態】
【００３０】
はじめに本発明の概要を説明する。本発明に係るブロック暗号装置は、入力されたデータを、ｋ個のブロックに分割する入力部と、ラウンド毎に生成された暗号鍵を用いて、前記ブロック２つを組としてＦｅｉｓｔｅｌ置換を施すＲラウンド分のＦｅｉｓｔｅｌ置換部と、前記分割数ｋの半数の２ｔ個（但し、ｔ＞２）のノードを持つｄｅＢｒｕｉｊｎグラフのｔビットの系列で表されたノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への矢線の色を決定する下記関数
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ  ｉｆ  ｕ１＝ｕｔ，
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ＋１  ｉｆ  ｕ１≠ｕｔ
を用いて、偶数ブロックから奇数ブロックへの遷移を第１の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第２の色の矢線で表した、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当する置換を行うブロック置換部と、前記置換後のｋ個のブロックを結合して出力する出力部と、を備える。
【００３１】
前記ブロック置換部における対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフに相当するブロック置換処理は、Ｆｅｉｓｔｅｌ置換にて出力された中間文Ｙ＝（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）を、
ブロック番号ｉ（ｉ＝０〜ｋ−１）がｋ／２未満で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
前記ブロック番号ｉがｋ／２以上で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
という置換にて実現できる。このとき、ラウンド出力文Ｚとして（ｚ［０］，ｚ［１］，・・・，ｚ［ｋ−１］）が出力される。このようなＦｅｉｓｔｅｌ置換とブロック置換とを必要繰り返し、最後にＦｅｉｓｔｅｌ置換を適用して暗号文が出力される。
【００３２】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図１［Ｓｔｒｕｃ１］は、本発明の第１の実施形態の構成を示す図である。図２［Ｂｌｏｃｋ１］は、本発明の第１の実施形態の構成を処理ブロックで表した図である。
【００３３】
図２を参照すると、入力部１００と、鍵拡大部１０１と、ラウンド数Ｒ個分のＦｅｉｓｔｅｌ置換部１０２と、Ｒ−１個分のブロック置換部１０３と、出力部１０４と、を備えたブロック暗号装置１０が示されている。
【００３４】
ブロック暗号装置１０は、ＣＰＵ、メモリ、ディスク等を備えた各種の情報処理装置により実現可能である。また、ブロック暗号装置１０の上記各部は、プログラムをディスクに格納しておき、このプログラムをＣＰＵ上で動作させることにより実現することができる。
【００３５】
次に、ブロック暗号装置１０の上記各部について説明する。なお、以下の説明では、ブロック暗号の分割数ｋを、ある２ｔ＋１（但し、ｔは２以上の正数）とする。また、ラウンド数をＲとする。
【００３６】
入力部１００は、対象となる平文Ｍと秘密鍵ＳＫを入力する手段である。例えば、外部からデータを入力する装置やキーボードなどの文字入力装置等により入力部１００を実現することができる。
【００３７】
鍵拡大部１０１は、秘密鍵ＳＫからＲラウンド分のラウンド関数への鍵を導出する手段である。秘密鍵ＳＫを入力とした関数で十分な出力幅があればどのような関数でもよい。
【００３８】
Ｆｅｉｓｔｅｌ置換部１０２は、ラウンドへの入力文Ｘ（ｎ×ｋビット）をｎビットごとに分割してｋ個の単位ブロックｘ［０］，ｘ［１］，・・・，ｘ［ｋ−１］について、２ブロックごとにＦｅｉｓｔｅｌ置換を適用して中間文Ｙ＝（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）を出力する。
【００３９】
なお、最初のラウンド入力文Ｘは平文Ｍに初期化される。また、各Ｆｅｉｓｔｅｌ置換は、（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）＝（ｘ［０］，Ｆ（ｘ［０］）＋ｘ［１］，ｘ［２］，Ｆ（ｘ［２］）＋ｘ［３］，・・・，ｘ［ｋ−２］，Ｆ（ｘ［ｋ−２］）＋ｘ［ｋ−１］）で表される。ここで、Ｆはｎビット入出力のラウンド関数であり、その鍵は鍵拡大部１０１により導出される。各ラウンド関数の鍵は処理する偶数番目ブロックのインデックス（０，２，・・・，ｋ−２）によって異なっていてもよいし、同一でもよい。
【００４０】
ブロック置換部１０３は、中間文Ｙ＝（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）をｎビットブロック単位で並び替えてラウンド出力文Ｚ＝（ｚ［０］，ｚ［１］，・・・，ｚ［ｋ−１］）を得る置換であり、２値ｄｅ  ＢｒｕｉｊｎグラフＢ（ｓ）について、以下のルールでｔｙｐｅ２枝彩色することで定義される。
【００４１】
２ｔ個のノードを持つ２値ｄｅＢｒｕｉｊｎグラフＢ（ｔ）を考え、各ノードをｔビット系列（００．．０，００．．１，・・・，１１．．１）で表すものとする。
【００４２】
２色に枝彩色するにあたり、色を赤（細線；第１色）と青（太線；第２色）とし、またバイナリで表現する場合はそれぞれ０と１に対応させるものとする。
【００４３】
ノードｕ＝（ｕ１，ｕ２，・・・，ｕｔ）からノードｖ＝（ｖ１，ｖ２，・・・，ｖｔ）への枝があるとき、その色のバイナリ表現を決定するために下記関数ｃｏｌｏｒｆｕｎｃを用いる。
［ｃｏｌｏｒｆｕｎｃ］
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ  ｉｆ  ｕ１＝ｕｔ，
ｃｏｌｏｒｆｕｎｃ（ｕ，ｖ）＝ｖｔ＋１  ｉｆ  ｕ１≠ｕｔ，
ここでｖｔ＋１はｖｔのビット反転である。具体的に、例えばｕ１＝ｕｔの場合、ｕの最上位からのｎ−１ビット系列ＬＳ（ｕ）に、０を右から付けたノードＬＳ（ｕ）｜｜０については枝の色を赤に（細線、バイナリ表現では０に）し、１を右から付けたノードＬＳ（ｕ）｜｜１については枝の色を青に（太線、バイナリ表現では１に）彩色する。
【００４４】
同様に、ｕ１≠ｕｔの場合は、彩色のルールを反転して彩色が行われる。この彩色方法は２値ｄｅＢｒｕｉｊｎグラフＢ（ｔ）に対してｔｙｐｅ２枝彩色であり、かつ対称性を持つものである。
【００４５】
図３［ＣｄＢ０］は、分割数ｋ＝８として彩色した対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフである。図の右に示したとおり、分割数ｋ＝８のとき置換ＢｌｏｃｋＰｅｒｍは、ｋ／２個、つまり４つ（２（３−１））のノードを持つグラフで表現できる。そして、ｓ＝（ｋ／２）−１として、グラフ中のノードにｎｏｄｅ＝０，１，２，３というラベルを付ける。上記関数ｃｏｌｏｒｆｕｎｃにより枝が２色に彩色された有向グラフが与えられると、あるノードｍからあるノードｎへの赤い枝（細線）を、偶数ブロックｙ［２ｍ］から奇数ブロックｚ［２ｎ＋１］への置換と対応させ、ノードｍ’からノードｎ’への青い枝を、奇数ブロックｙ［２ｍ’＋１］から偶数ブロックｚ［２ｎ’］への置換と対応させることで、置換ＢｌｏｃｋＰｅｒｍは一意に定まる。例えば、図３［ＣｄＢ０］のブロック置換は、図１のブロック置換部１０３におけるブロック置換に対応し、｛１，２，７，４，３，０，５，６}というリストで表現できる。
【００４６】
この彩色方法による置換は、ラウンド入力文Ｙ＝（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）と、ラウンド出力文Ｚ＝（ｚ［０］，ｚ［１］，・・・，ｚ［ｋ−１］）で表現すると、
上記ブロック番号ｉがｋ／２未満で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
前記ブロック番号ｉがｋ／２以上で、かつ
・ｉ  ｍｏｄ  ４が０の場合、ｙ［ｉ］＝ｚ［２ｉ＋３  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が１の場合、ｙ［ｉ］＝ｚ［２ｉ−２  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が２の場合、ｙ［ｉ］＝ｚ［２ｉ＋１  ｍｏｄ  ｋ］
・ｉ  ｍｏｄ  ４が３の場合、ｙ［ｉ］＝ｚ［２ｉ  ｍｏｄ  ｋ］
となる。
【００４７】
なお、図３のグラフの矢印を逆向きにした置換も実現可能である。これは、図１におけるブロックの番号の順序を逆順に変えればよい。
【００４８】
出力部１０４は、最終段のＦｅｉｓｔｅｌ置換部１０２から出力されたＹ＝（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）を結合して暗号文を出力する手段である。具体的には、コンピュータディスプレイ、プリンターまたは各種のデータ出力装置により実現することができる。
【００４９】
なお、上記したブロック暗号装置における各処理は、ブロック暗号装置を構成するコンピュータに実行させるプログラムにより実現することができる。
【００５０】
続いて、上記本発明の第１の実施形態に係るブロック暗号装置の動作について図面を参照して詳細に説明する。図４［Ｆｌｏｗ１］は、本発明の第１の実施形態の動作を示すフローチャートである。
【００５１】
図４を参照すると、まず、入力部１００に、平文Ｍと秘密鍵ＳＫを入力されると（図４のステップＡ１）、鍵拡大部１０１にて、秘密鍵ＳＫを用いて、Ｒラウンド分の拡大鍵が生成される（図４のステップＡ２）。
【００５２】
次にラウンド数のカウンターをＪ＝１とし、ラウンド入力文Ｘ＝（ｘ［０］，ｘ［１］，・・・，ｘ［ｋ−１］）の初期値を平文Ｍに設定し（図４のステップＡ３）、偶数（ｉ＝０，２，４，・・・，ｋ−２）のブロックと奇数ブロックとの組（ｘ［ｉ］，ｘ［ｉ＋１］）にＪラウンド目の拡大鍵を用いたＦｅｉｓｔｅｌ置換を適用して中間文Ｙ＝（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）を得る（図４のステップＡ４）。
【００５３】
カウンターＪがＲ未満の場合、中間文Ｙをブロック毎に置換してラウンド出力文Ｚ＝（ｚ［０］，ｚ［１］，・・・，ｚ［ｋ−１］）を得る（図４のステップＡ５）、さらにＪをインクリメント（１つ増加）したのちラウンド入力文ＸをＺに更新する（図４のステップＡ６）。
【００５４】
一方、カウンターＪがＲと一致する場合、出力部１０４が、得られた中間文Ｙを暗号文として出力する（図４のステップＡ７）。
【００５５】
以上のように、暗号文を生成するには、ラウンド入力文Ｘの初期値を平文Ｍとして、Ｆｅｉｓｔｅｌ置換部１０２でラウンド入力文Ｘから中間文Ｙを生成し、ブロック置換部１０３により中間文Ｙを置換してラウンド出力文Ｚを得て、ラウンド入力文Ｘの内容をＺに更新する。この処理をＲラウンド繰り返して暗号文を得る。なお本実施形態では、最後のＲラウンド目のブロック置換部１０３は、安全性に寄与しないため、省略している。従ってＦｅｉｓｔｅｌ置換部１０２は合計Ｒ回、ブロック置換部１０３は合計Ｒ−１回、それぞれ処理を実行することになる。
【００５６】
上記図１、図３に示したブロック置換は、分割数が８のときのものであるが、分割数が増えた場合も同様に方法によりグラフを作成し、一意にブロック置換を定めることができる。図５［ＣｄＢ１］、図６［ＣｄＢ２］は、それぞれ分割数が１６（ｔ＝３（ｋ＝１６に相当））、３２（ｔ＝４（ｋ＝３２に相当））である場合における、対称なＴｙｐｅ２枝彩色を施した２値ｄｅＢｒｕｉｊｎグラフを示す。
【００５７】
また、図５、図６のグラフに対応するブロック置換は、次のとおり、リスト表現することができる。
【００５８】
ｔ＝３、分割数ｋ＝１６のときを示す図５のグラフは、｛１，２，７，４，９，１０，１５，１２，３，０，５，６，１１，８，１３，１４｝というリスト表現に変換できる。
【００５９】
同様にｔ＝４、分割数ｋ＝３２のときを示す図６のグラフは、｛１，２，７，４，９，１０，１５，１２，１７，１８，２３，２０，２５，２６，３１，２８，３，０，５，６，１１，８，１３，１４，１９，１６，２１，２２，２７，２４，２９，３０｝というリスト表現に変換できる。
【００６０】
図７［Ｐｅｒｍ１］は、図５［ＣｄＢ１］のグラフに対応するブロック置換（分割数１６の場合）を表した図である。分割数１６の場合、図１のＦｅｉｓｔｅｌ置換部１０２およびブロック置換部１０３がそれぞれ図７［Ｐｅｒｍ１］に示したものとなる。
【００６１】
以上のようなブロック置換部１０３を持つ本実施形態では、従来の巡回置換を用いた一般化Ｆｅｉｓｔｅｌネットワークのブロック暗号と比べて、実質的に１ラウンドの計算量は変えないまま、疑似ランダム性と強疑似ランダム性のために必要な最小ラウンド数を少なくすることが可能となる。
【００６２】
これは、枝が青（太線）と赤（細線）に彩色されたグラフでブロック置換を表現した場合の十分距離（ｓｕｆｆｉｃｉｅｎｔ  ｄｉｓｔａｎｃｅ，ＳＤ）が、巡回置換の場合の十分距離（ＳＤ）よりも大幅に小さくなることから導かれる。ここで、十分距離（ＳＤ）がＮであるとは、ノード間の移動において、最初の２回と最後の移動が青で、かつ赤の枝を連続して用いない、つまり赤の枝で移動した次は必ず青の枝を使う、というルールに従うときに、任意の２ノード間で長さＮのパスが存在することをいう。
【００６３】
十分距離（ＳＤ）と疑似ランダム性に必要なラウンド数は比例し、具体的には十分距離がＮのとき、ラウンド数がＮ＋２で疑似ランダム性が保証される。さらに復号側で用いられる逆置換の十分距離もＮの場合は、２Ｎ＋２で強疑似ランダム性も保証される。
【００６４】
図８に示す巡回置換のグラフ（図Ｃｙｃｌｉｃｇｐｈに分割数８の場合の図を示す）では十分距離がノード数の２倍、つまり分割数ｋに一致するが、本実施形態で用いるブロック置換は、ある程度ｋを大きくとったとき、２Ｌｏｇ  ｋの十分距離を、置換と逆置換の双方で達成している。具体的には、図６に示した２値ｄｅ  ＢｒｕｉｊｎグラフＢ（４）に基づくｋ＝３２のブロック置換は、十分距離８を達成するが、一方ｋ＝３２の巡回置換では十分距離３２となる。これにより、疑似ランダム性と強疑似ランダム性に必要なラウンド数をそれぞれ約６５％削減することが可能である。
【００６５】
なお、非特許文献３にも２値ｄｅ  Ｂｒｕｉｊｎグラフを利用する置換が示されているが、同文献に開示されたグラフは偶奇が“常に変わる”置換ではない（同文献のＦｉｇ．９の例えば一番左のグラフ参照）。また、同文献２には、どのようにすれば対称なｔｙｐｅ２枝彩色を施した２値ｄｅ  Ｂｒｕｉｊｎグラフが一般的に得られるかは記載されておらず、８ノードの２値ｄｅ  ＢｒｕｉｊｎグラフＢ（３）をわずかに変形させて適当な彩色を行い、分割数ｋ＝１６の置換であるＡｒｍｅｎｉａｎ  Ｓｈｕｆｆｌｅを提案したに過ぎない。
【００６６】
本実施形態からも明らかなとおり、本発明は、非特許文献３と比較してＧＦＮを用いるという本質的な相違を別としても、分割数１６以外に対応できる点で汎用的である。本発明によれば、ターゲットとするブロック暗号のブロックサイズ及びラウンド関数の入出力幅を柔軟に設定することができるようになる。
【００６７】
さらに本発明の対称なｔｙｐｅ２枝彩色された２値ｄｅ  Ｂｒｕｉｊｎグラフによる置換はＡｒｍｅｎｉａｎ  Ｓｈｕｆｆｌｅと異なり、左右対称であるため、実装の回路規模もしくはプログラムサイズを小さくすることが可能である。
【００６８】
［第２の実施形態］
続いて、ブロック置換にグラフに、第２の発明の実施形態について説明する。本実施形態の構成は、図２に示した第１の実施形態のブロック暗号装置と基本的構成を同一にし、そのブロック置換に変更を加えたものであるので、以下のその相違点を中心に説明する。
【００６９】
図９は、本発明の第２の実施形態の１ラウンド分の構成（分割数１６の場合）を示す図［Ｓｔｒｕｃ２］である。
【００７０】
本実施形態では、分割数ｋは８の倍数であり、ここでは、ｗ＝２の１６とする。
【００７１】
ブロック置換部１０３は、中間文Ｙ＝（ｙ［０］，ｙ［１］，・・・，ｙ［ｋ−１］）をｎビットブロック単位で並び替えてラウンド出力文Ｚ＝（ｚ［０］，ｚ［１］，・・・，ｚ［ｋ−１］）を得る置換であり、以下で定義されるグラフ（以下、「ステッピングストーングラフ（ＳＳ）」と称する。）により定義される。
【００７２】
図１０は、本発明の第２の実施形態のブロック置換（分割数１６の場合）をステッピングストーングラフ（ＳＳ）で表した図［ＳＳ１］である（太線が青（第２色）、細線が赤（第１色）に対応する。）。
【００７３】
ステッピングストーングラフ（ＳＳ）は、第１の実施形態と同様、ノード数を分割数ｋの半数、すなわち４ｗとし、次数２でｔｙｐｅ２枝彩色されたグラフである。
【００７４】
各ノード（ｊ＝０，１，．．．，ｗ−１）について、
ノード４ｊは赤（第１色）の枝をノード４ｊ＋１へ、青（第２色）の枝をノード４ｊ＋２へ、
ノード４ｊ＋１は赤（第１色）の枝をノード４ｊ＋２へ、青（第２色）の枝をノード４ｊ＋１へ、
ノード４ｊ＋２は赤（第１色）の枝をノード４（ｊ＋１）へ、青（第２色）の枝をノード４ｊ＋３へ、
ノード４ｊ＋３は赤（第１色）の枝をノード４ｊ＋３へ、青（第２色）の枝をノード４（ｊ＋１）へ、
と彩色した矢線を追加することによって作成できる有向グラフである。ただしノード４ｗはノード０と見なす。
【００７５】
図１０［ＳＳ１］のグラフによる置換は、図９のブロック置換部１０３ａに対応し、まず、４ブロックごとの巡回置換（巡回の方向は右と左で交互）を行ったのち、ｋブロック全体の右２ブロック巡回置換を行うことに相当する。
【００７６】
以上のようなブロック置換部１０３を持つ本実施形態においても、従来の巡回置換を用いた一般化Ｆｅｉｓｔｅｌネットワークのブロック暗号と比べて、実質的に１ラウンドの計算量は変えないまま、疑似ランダム性と強疑似ランダム性のために必要な最小ラウンド数を少なくすることが可能となる。これは、先の述べた十分距離（ＳＤ）を約ｋ／４＋８とすることができることから導かれる。具体的には、ステッピングストーングラフ（ＳＳ）に基づくｋ＝３２の置換は、十分距離１６を達成するが、一方ｋ＝３２の巡回置換では十分距離３２となる。
【００７７】
また、本実施形態は、図９に示すように、４ブロックごとの１ブロック巡回置換とｋブロック全体での２ブロック巡回置換を組み合わせて置換が実現できるため、非常にシンプルな実装とすることができる。
【００７８】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記の実施形態のブロック暗号装置は、同一の構成にて復号装置として動作することができる。
本発明の全開示（請求の範囲及び図面を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００７９】
１０  ブロック暗号化装置
１００  入力部
１０１  鍵拡大部
１０２  Ｆｅｉｓｔｅｌ置換部
１０３、１０３ａ  ブロック置換部
１０４  出力部
【図１】
0005488608.tif 000002
【図２】
0005488608.tif 000003
【図３】
0005488608.tif 000004
【図４】
0005488608.tif 000005
【図５】
0005488608.tif 000006
【図６】
0005488608.tif 000007
【図７】
0005488608.tif 000008
【図８】
0005488608.tif 000009
【図９】
0005488608.tif 000010
【図１０】
0005488608.tif 000011
【図１１】
0005488608.tif 000012