(57)【要約】  ｋ分割一般化Ｆｅｉｓｔｅｌ構造の転置処理部は、転置処理部への入力データをＹ０，Ｙ１，…，Ｙｋ−１（ｎビット×ｋ個）とし、転置処理部からの出力データをＺ０，Ｚ１，…，Ｚｋ−１とし、Ｙｉ（ｉ＝０，１，…，ｋ−１）をｓ分割（ｓ＝２，４，…，ｎ）したものをＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１とし、Ｚｉをｓ分割したものをＺｉ，０，Ｚｉ，１，…，Ｚｉ，ｓ−１とした場合に、Ｙａ，ｔ（ｔ＝０，１，…，ｓ−１）をＺｂ，ｕ（ｕ＝０，１，…，ｓ−１、ｕ≠ｔ）に転置するときには、Ｙｂ，ｕをＺａ，ｔに転置する。ｋ分割一般化Ｆｅｉｓｔｅｌ型の共通鍵ブロック暗号の転置処理部を、暗号化処理と復号化処理との間で共有し、暗号処理装置の実装規模を削減する。
2012067052.tif 000002
【特許請求の範囲】
【請求項１】
ｍ×ｋビットの入力データをｋ個（ｍ，ｋはいずれも偶数）のｍビットワード（以下単に「ワード」という。）ｘ０，ｘ１，…，ｘｋ−２，ｘｋ−１に分割し、ワードｘｉ（ｉ＝０，２，…，ｋ−２）をＦ関数により鍵データを用いて変換を行い、ワードｘｉ＋１に作用させたものをワードＹｉ＋１として出力するとともに、ワードｘｉをそのままワードＹｉとして出力するＦ関数処理部と、
前記ワードＹｉ（ｉ＝０，１，…，ｋ−１）をｓ個（ｓ＝２，４，…，ｍ）のサブワードＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１に分割し、転置条件Ｐｘ（ｘ＝１，２，…，ｓ／２−１）と転置条件Ｑｘ（ｘ＝１，２，…，ｓ／２−１）により、サブワードＹｉ，ｗ［ｘ］をサブワードＺｐｘ［ｉ］，ｗ［ｙ］に転置させ、サブワードＹｉ，ｗ［ｙ］をサブワードＺｑｘ［ｉ］，ｗ［ｘ］に転置させ、ワードＺｉ，０Ｚｉ，１…Ｚｉ，ｓ−１を第ｉのワードとして出力する転置処理部と、を備え、
前記転置条件Ｐｘ＝（ｐｘ［０］，ｐｘ［１］，ｐｘ［２］，…，ｐｘ［ｋ−１］）は、第ｉのサブワードを第ｐｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｐｘ［ｉ］≠ｐｘ［ｊ］であり、
前記転置条件Ｑｘ＝（ｑｘ［０］，ｑｘ［１］，ｑｘ［２］，…，ｑｘ［ｋ−１］）は、第ｉのサブワードを第ｑｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｑｘ［ｉ］≠ｑｘ［ｊ］であり、
ｑｘ［ｐｘ［ｉ］］＝ｉであり、
前記ｗ［ｔ］（ｔ＝０，１，…，ｓ−１）は、ｗ［ｔ］∈｛０，１，２，…，ｓ−１｝であり、ｔ≠Ｔならばｗ［ｔ］≠ｗ［Ｔ］である、ことを特徴とする暗号処理装置。
【請求項２】
入力データをＹ０，Ｙ１，…，Ｙｋ−１（ｎビット×ｋ個）とし、出力データをＺ０，Ｚ１，…，Ｚｋ−１とし、Ｙｉ（ｉ＝０，１，…，ｋ−１）をｓ分割（ｓ＝２，４，…，ｎ）したものをＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１とし、Ｚｉをｓ分割したものをＺｉ，０，Ｚｉ，１，…，Ｚｉ，ｓ−１とした場合に、Ｙａ，ｔ（ｔ＝０，１，…，ｓ−１）をＺｂ，ｕ（ｕ＝０，１，…，ｓ−１、ｕ≠ｔ）に転置するときには、Ｙｂ，ｕをＺａ，ｔに転置する転置処理部を備えていることを特徴とする、ｋ分割一般化Ｆｅｉｓｔｅｌ構造に基づく暗号処理装置。
【請求項３】
ｍ×ｋビットの入力データをｋ個（ｍ，ｋはいずれも偶数）のｍビットワード（以下単に「ワード」という。）ｘ０，ｘ１，…，ｘｋ−２，ｘｋ−１に分割し、ワードｘｉ（ｉ＝０，２，…，ｋ−２）をＦ関数により鍵データを用いて変換を行い、ワードｘｉ＋１に作用させたものをワードＹｉ＋１として出力するとともに、ワードｘｉをそのままワードＹｉとして出力するＦ関数処理部をさらに備えていることを特徴とする、請求項２に記載の暗号処理装置。
【請求項４】
ｍ×ｋビットの平文または暗号文を前記Ｆ関数処理部に入力し、その出力を前記転置処理部に入力し、その出力を再度前記Ｆ関数処理部に入力することを所定のラウンド数にわたって繰り返し、最後にＦ関数処理を実施し、その出力を暗号文（平文）とすることで、ｍ×ｋビットのデータを暗号化または復号化することを特徴とする、請求項１ないし３のいずれか１項に記載の暗号処理装置。
【請求項５】
前記Ｆ関数処理部からの出力および前記転置処理部からの出力を受けるとともに、前記所定のラウンド数にわたる繰り返しの最中である場合には前記転置処理部からの出力を選択して出力し、それ以外の場合には前記Ｆ関数処理部からの出力を選択して出力する第１セレクタと、
前記平文または暗号文、および、前記第１のセレクタからの出力を受けるとともに、前記所定のラウンド数にわたる繰り返しの開始前である場合には前記平文または暗号文を選択して出力し、それ以外の場合には前記第１のセレクタからの出力を選択して出力する第２のセレクタと、をさらに備え、
前記Ｆ関数処理部は、前記第２のセレクタからの出力を受けることを特徴とする、請求項４に記載の暗号処理装置。
【請求項６】
ｍ×ｋビットの入力データをｋ個（ｍ，ｋはいずれも偶数）のｍビットワード（以下単に「ワード」という。）ｘ０，ｘ１，…，ｘｋ−２，ｘｋ−１に分割し、ワードｘｉ（ｉ＝０，２，…，ｋ−２）をＦ関数により鍵データを用いて変換を行い、ワードｘｉ＋１に作用させたものをワードＹｉ＋１とするとともに、ワードｘｉをそのままワードＹｉとする工程と、
前記ワードＹｉ（ｉ＝０，１，…，ｋ−１）をｓ個（ｓ＝２，４，…，ｍ）のサブワードＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１に分割し、転置条件Ｐｘ（ｘ＝１，２，…，ｓ／２−１）と転置条件Ｑｘ（ｘ＝１，２，…，ｓ／２−１）により、サブワードＹｉ，ｗ［ｘ］をサブワードＺｐｘ［ｉ］，ｗ［ｙ］に転置させ、サブワードＹｉ，ｗ［ｙ］をサブワードＺｑｘ［ｉ］，ｗ［ｘ］に転置させ、ワードＺｉ，０Ｚｉ，１…Ｚｉ，ｓ−１を第ｉのワードとする工程と、を含み、
前記転置条件Ｐｘ＝（ｐｘ［０］，ｐｘ［１］，ｐｘ［２］，…，ｐｘ［ｋ−１］）は、第ｉのサブワードを第ｐｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｐｘ［ｉ］≠ｐｘ［ｊ］であり、
前記転置条件Ｑｘ＝（ｑｘ［０］，ｑｘ［１］，ｑｘ［２］，…，ｑｘ［ｋ−１］）は、第ｉのサブワードを第ｑｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｑｘ［ｉ］≠ｑｘ［ｊ］であり、
ｑｘ［ｐｘ［ｉ］］＝ｉであり、
前記ｗ［ｔ］（ｔ＝０，１，…，ｓ−１）は、ｗ［ｔ］∈｛０，１，２，…，ｓ−１｝であり、ｔ≠Ｔならばｗ［ｔ］≠ｗ［Ｔ］である、ことを特徴とする暗号処理方法。
【請求項７】
入力データをＹ０，Ｙ１，…，Ｙｋ−１（ｎビット×ｋ個）とし、出力データをＺ０，Ｚ１，…，Ｚｋ−１とし、Ｙｉ（ｉ＝０，１，…，ｋ−１）をｓ分割（ｓ＝２，４，…，ｎ）したものをＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１とし、Ｚｉをｓ分割したものをＺｉ，０，Ｚｉ，１，…，Ｚｉ，ｓ−１とした場合に、Ｙａ，ｔ（ｔ＝０，１，…，ｓ−１）をＺｂ，ｕ（ｕ＝０，１，…，ｓ−１、ｕ≠ｔ）に転置するときには、Ｙｂ，ｕをＺａ，ｔに転置する工程を含むことを特徴とする、ｋ分割一般化Ｆｅｉｓｔｅｌ構造に基づく暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１０−２５４８０４号（２０１０年１１月１５日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、暗号処理装置および暗号処理方法に関し、特に、データを通信または蓄積する際に共通鍵ブロック暗号に基づいてデータを秘匿ないし解読する暗号処理装置および暗号処理方法に関する。
【背景技術】
【０００２】
通信データまたは蓄積データを秘匿する技術として、共通鍵ブロック暗号が知られている。ブロック暗号においては、暗号化すべきデータをブロック長と呼ばれる所定の単位に区切って暗号化が行われる。代表的なブロック暗号として、１９７０年代に提案されたＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がある。ＤＥＳは、データ攪拌部の構造としてＦｅｉｓｔｅｌ構造を採用している。【０００３】
図４は、ｍビットの平文Ｐからｍビットの暗号文Ｃを生成するｒラウンドＦｅｉｓｔｅｌ構造による暗号化処理を示す図である。Ｆｅｉｓｔｅｌ構造１ラウンド分の処理は、Ｆ関数処理部１０と転置処理部１１とを含む。Ｆ関数処理部１０は、２つのｍ／２ビットデータと鍵データＫｉを入力とし、一方のデータをそのまま出力するとともに、一方のデータにＦ関数で鍵データＫｉによる変換を行ったものと他方のデータとの間で排他的論理和（図４の＋に丸印記号。以下、「ＸＯＲ」という。）を求めて出力する。転置処理部１１は、受け取った２つのデータを入れ替えて出力する。最終の第ｒラウンドのみ転置処理手部１１を行わず、Ｆ関数処理部１０による処理のみを行う。【０００４】
図５は、図４の暗号化処理に対応する復号化処理を示す図である。図５の復号化処理は、図４の暗号化処理と同一のＦ関数処理部１０と転置処理部１１とを含む。Ｆｅｉｓｔｅｌ構造による復号化は、暗号化処理を逆順（図４を下から遡る）で行えばよい。【０００５】
Ｆ関数処理部１０および転置処理部１１は、いずれも上下対称な構造を有する。また、図４の暗号化処理、および、図５の復号化処理は、全体としても上下対称な構造を有する。したがって、各ラウンドで使用する鍵データの使用順序を逆にするだけで、暗号化と復号化の双方が可能となる。このように、ＤＥＳによると、暗号化処理と復号化処理との間でラウンド処理を共有することができ、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に代表されるＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ）構造と比較して実装規模を削減することができる。【０００６】
また、Ｆｅｉｓｔｅｌ構造の分割数を２以上に拡張した一般化Ｆｅｉｓｔｅｌ構造が知られている（非特許文献１）。非特許文献１においては、一般化Ｆｅｉｓｔｅｌ構造は、Ｆｅｉｓｔｅｌ−Ｔｙｐｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ（ＦＴＴ）と呼ばれている。非特許文献１では、Ｔｙｐｅ−１からＴｙｐｅ−３までの３種類の構造が提案されているが、ここではＴｙｐｅ−２について説明する。以下、特に断らない限り、「一般化Ｆｅｉｓｔｅｌ構造」は、Ｔｙｐｅ−２の一般化Ｆｅｉｓｔｅｌ構造をいう。【０００７】
図６は、一般化Ｆｅｉｓｔｅｌ構造を一例として示す図である。図は、データを８分割する一般化Ｆｅｉｓｔｅｌ構造の暗号化処理を示す。一般化Ｆｅｉｓｔｅｌ構造１ラウンド分の処理は、Ｆ関数処理部３０と転置処理部３１とを含む。Ｆ関数処理部３０は、Ｆ関数処理部１０を４並列として構成される。一般にｋ分割の場合には、Ｆ関数処理部３０は、Ｆ関数処理部１０をｋ／２並列として構成される。Ｆ関数処理部３０は、８つのｍ／８ビットデータを２つ対にした４組のデータについてＦ関数による変換処理を行い、８つのデータを出力する。転置処理部３１は、８つのデータを左に巡回シフトする。最終の第ｒラウンドのみ転置処理部３１の処理を行わず、Ｆ関数処理部３０の処理のみを行う。【０００８】
なお、転置処理部３１における転置処理を巡回シフト以外とした一般化Ｆｅｉｓｔｅｌ構造も、特願２００９−２４６３０６号において提案されている。【０００９】
図７は、図６の暗号化処理に対応する復号化処理を示す図である。復号化処理におけるＦ関数処理部３０と、暗号化処理におけるＦ関数処理部３０は、同一である。しかしながら、転置処理部４０は転置処理部３１を上下反転させたものであるから、転置処理部４０と暗号化処理における転置処理部３１とは異なっている。【００１０】
以上より、Ｆｅｉｓｔｅｌ構造では、暗号化処理と復号化処理との間でＦ関数処理部１０および転置処理部１１を共有することができる。一方、一般化Ｆｅｉｓｔｅｌ構造では、暗号化処理と復号化処理との間で転置処理部を共有することはできない。【００１１】
一例として、特許文献１に、拡張型Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理において、暗号化関数と復号関数とを共通化した構成が記載されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−０５８８２６号公報
【非特許文献】
【００１３】
【非特許文献１】Ｙ．Ｚｈｅｎｇ，Ｔ．Ｍａｔｓｕｍｏｔｏ，Ｈ．Ｉｍａｉ，“Ｏｎ  ｔｈｅ  Ｃｏｎｓｔｒｕｃｔｉｏｎ  ｏｆ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒｓ  Ｐｒｏｖａｂｌｙ  Ｓｅｃｕｒｅ  ａｎｄ  Ｎｏｔ  Ｒｅｌｙｉｎｇ  ｏｎ  Ａｎｙ  Ｕｎｐｒｏｖｅｄ  Ｈｙｐｏｔｈｅｓｅｓ，”ＣＲＹＰＴＯ  １９８９，ＬＮＣＳ  ｖｏｌ．４３５，ｐｐ．４６１−４８０，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，１９９０．
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者によってなされたものである。【００１５】
上述の暗号化処理をハードウェア実装する方法について説明する。ハードウェア実装に用いられるデバイスとして、専用ＬＳＩやＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が挙げられる。【００１６】
図８は、暗号化処理にＦｅｉｓｔｅｌ構造を用いた場合の暗号化装置の構成を一例として示すブロック図である。図８を参照すると、暗号処理装置５０は、拡大鍵生成部５１およびデータ変換部５２を備えている。【００１７】
拡大鍵生成部５１は、外部から入力される秘密鍵から拡大鍵Ｋｉを生成し、データ変換部５２へ送出する。なお、拡大鍵生成部５１は外部から入力される暗号化／復号化信号に応じて、暗号化または復号化のいずれかの拡大鍵を生成する。【００１８】
データ変換部５２は、平文Ｐ（または暗号文Ｃ）を受け、拡大鍵生成部５１から受けた拡大鍵データを用いて、暗号化処理（または復号化処理）を行い、暗号文Ｃ（または平文Ｐ）を生成して出力する。【００１９】
図９は、データ変換部５２の詳細を示す図である。図９を参照すると、データ変換部５２は、セレクタ６０、６４、レジスタ６１、Ｆ関数処理部６２、および、転置処理部６３を備えている。ただし、図９は、１ラウンドあたりの暗号化処理のデータパスを示すことを目的とし、ループ（ラウンド）処理などの制御部は省略されている。図９を参照して、平文Ｐ（または暗号文Ｃ）の入力から暗号文Ｃ（または平文Ｐ）の出力までの流れを説明する。【００２０】
入力された平文Ｐ（または暗号文Ｃ）は、セレクタ６０を介してレジスタ６１に保存される。暗号化（復号化）処理の開始時には、セレクタ６０は平文Ｐ（または暗号文Ｃ）を選択する。一方、ラウンド処理が開始されると、セレクタ６０はセレクタ６４からの出力データを選択する。規定のラウンド数に達するまで、以下の処理を繰り返す。【００２１】
レジスタ６１に保持されたデータは、Ｆ関数処理部６２で拡大鍵データＫｉによる変換が行われる。Ｆ関数処理部６２から出力されたｍビットデータは、２分岐する。分岐した一方のｍビットデータは、そのままセレクタ６４へ入力される。他方のｍビットデータは、転置処理部６３でｍ／２ビットのデータに分割され、入れ替えた状態でセレクタ６４へ入力される。セレクタ６４は、ラウンド情報（非図示）に応じて２入力の一方を選択する。第１ラウンドから第ｒ−１ラウンドまでの処理の場合には、セレクタ６４は転置処理部６３からの出力データを選択してセレクタ６０に入力する。一方、第ｒラウンドの処理の場合には、セレクタ６４はＦ関数処理部６２からの出力データを選択してセレクタ６０へ入力する。レジスタ６１のデータが読み出されてから書き戻されるまでの処理が１ラウンド分の処理に相当する。【００２２】
一方、図１０は、暗号化処理に一般化Ｆｅｉｓｔｅｌ構造を用いた場合の暗号化装置の構成を一例として示すブロック図である。図１０を参照すると、暗号処理装置７０は、拡大鍵生成部５１およびデータ変換部５３を備えている。暗号処理装置７０は、暗号化／復号化信号がデータ変換部５３にも入力されている点において、図８の暗号処理装置５０と相違する。【００２３】
図１１は、データ変換部５３の詳細を示す図である。図１１を参照すると、データ変換部５３は、セレクタ８０、８５、８６、レジスタ８１、Ｆ関数処理部８２、および、転置処理部８３、８４を備えている。ここでは、図１１に示したデータ変換部５３と図９に示したデータ変換部５２との差分について説明する。一般化Ｆｅｉｓｔｅｌ構造を用いていることから、暗号化用の転置処理部８３と復号化用の転置処理部８４とが必要となる。このとき、暗号化または復号化に応じて、転置処理部８３および転置処理部８４からの出力を選択するセレクタ８５が必要とされる。Ｆ関数処理部８２から出力されたｍビットデータの各ビットは、３分岐する。第１のｍビットデータはそのままセレクタ８６へ入力され、第２のｍビットデータは転置処理部８３へ入力され、第３のｍビットデータは転置処理部８４へ入力される。セレクタ８５は、外部から入力される暗号化／復号化信号に応じて、転置処理部８３および転置処理部８４から出力されたデータのうちの一方を出力選択してセレクタ８６に出力する。【００２４】
以上により、暗号化処理と復号化処理との間で、Ｆｅｉｓｔｅｌ構造の転置処理を共有することができる。一方、一般化Ｆｅｉｓｔｅｌ構造では、暗号化用転置処理と復号化用転置処理を共通化することができないため、暗号化と復号化とを切り替えるセレクタ８５が必要となる。したがって、一般化Ｆｅｉｓｔｅｌ構造においては、ハードウェア実装の規模の増大を招くという問題がある。また、セレクタ８５自体は、暗号の強度にはなんら寄与しない。したがって、セレクタ８５による処理は、小規模化を進める上では無駄な処理といえる。【００２５】
なお、特許文献１に記載された暗号処理装置においては、ラウンド鍵を入れ替えることでスワップ処理の共有を実現している。しかしながら、ラウンド鍵を入れ替えるためには、暗号化と復号化を認識して鍵を入れ替えるか否かを切り替えるための処理が必要とされる。したがって、切り替え処理が鍵スケジュール（すなわち、秘密鍵からラウンド鍵を生成する関数）に移動したにすぎず、特許文献１に記載された暗号処理装置によると、ハードウェア実装の規模を削減することは困難である。【００２６】
そこで、一般化Ｆｅｉｓｔｅｌ構造を用いた場合のＦ関数処理部の小型化のメリットを生かしつつ、暗号化処理と復号化処理との間で転置処理部を共有することで、暗号化処理のための転置処理部と復号化処理のための転置処理部とを切り替えるためのセレクタを不要とし、小規模な実装が可能な暗号処理装置を提供することが課題となる。本発明の目的は、かかる課題を解決する暗号処理装置および暗号処理方法を提供することにある。
【課題を解決するための手段】
【００２７】
本発明の第１の視点に係る暗号処理装置は、
ｍ×ｋビットの入力データをｋ個（ｍ，ｋはいずれも偶数）のｍビットワード（以下単に「ワード」という。）ｘ０，ｘ１，…，ｘｋ−２，ｘｋ−１に分割し、ワードｘｉ（ｉ＝０，２，…，ｋ−２）をＦ関数により鍵データを用いて変換を行い、ワードｘｉ＋１に作用させたものをワードＹｉ＋１として出力するとともに、ワードｘｉをそのままワードＹｉとして出力するＦ関数処理部と、
前記ワードＹｉ（ｉ＝０，１，…，ｋ−１）をｓ個（ｓ＝２，４，…，ｍ）のサブワードＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１に分割し、転置条件Ｐｘ（ｘ＝１，２，…，ｓ／２−１）と転置条件Ｑｘ（ｘ＝１，２，…，ｓ／２−１）により、サブワードＹｉ，ｗ［ｘ］をサブワードＺｐｘ［ｉ］，ｗ［ｙ］に転置させ、サブワードＹｉ，ｗ［ｙ］をサブワードＺｑｘ［ｉ］，ｗ［ｘ］に転置させ、ワードＺｉ，０Ｚｉ，１…Ｚｉ，ｓ−１を第ｉのワードとして出力する転置処理部と、を備え、
前記転置条件Ｐｘ＝（ｐｘ［０］，ｐｘ［１］，ｐｘ［２］，…，ｐｘ［ｋ−１］）は、第ｉのサブワードを第ｐｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｐｘ［ｉ］≠ｐｘ［ｊ］であり、
前記転置条件Ｑｘ＝（ｑｘ［０］，ｑｘ［１］，ｑｘ［２］，…，ｑｘ［ｋ−１］）は、第ｉのサブワードを第ｑｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｑｘ［ｉ］≠ｑｘ［ｊ］であり、
ｑｘ［ｐｘ［ｉ］］＝ｉであり、
前記ｗ［ｔ］（ｔ＝０，１，…，ｓ−１）は、ｗ［ｔ］∈｛０，１，２，…，ｓ−１｝であり、ｔ≠Ｔならばｗ［ｔ］≠ｗ［Ｔ］である。【００２８】
本発明の第２の視点に係る、ｋ分割一般化Ｆｅｉｓｔｅｌ構造に基づく暗号処理装置は、
入力データをＹ０，Ｙ１，…，Ｙｋ−１（ｎビット×ｋ個）とし、出力データをＺ０，Ｚ１，…，Ｚｋ−１とし、Ｙｉ（ｉ＝０，１，…，ｋ−１）をｓ分割（ｓ＝２，４，…，ｎ）したものをＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１とし、Ｚｉをｓ分割したものをＺｉ，０，Ｚｉ，１，…，Ｚｉ，ｓ−１とした場合に、Ｙａ，ｔ（ｔ＝０，１，…，ｓ−１）をＺｂ，ｕ（ｕ＝０，１，…，ｓ−１、ｕ≠ｔ）に転置するときには、Ｙｂ，ｕをＺａ，ｔに転置する転置処理部を備えている。【００２９】
本発明の第３の視点に係る暗号処理方法は、
ｍ×ｋビットの入力データをｋ個（ｍ，ｋはいずれも偶数）のｍビットワード（以下単に「ワード」という。）ｘ０，ｘ１，…，ｘｋ−２，ｘｋ−１に分割し、ワードｘｉ（ｉ＝０，２，…，ｋ−２）をＦ関数により鍵データを用いて変換を行い、ワードｘｉ＋１に作用させたものをワードＹｉ＋１とするとともに、ワードｘｉをそのままワードＹｉとする工程と、
前記ワードＹｉ（ｉ＝０，１，…，ｋ−１）をｓ個（ｓ＝２，４，…，ｍ）のサブワードＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１に分割し、転置条件Ｐｘ（ｘ＝１，２，…，ｓ／２−１）と転置条件Ｑｘ（ｘ＝１，２，…，ｓ／２−１）により、サブワードＹｉ，ｗ［ｘ］をサブワードＺｐｘ［ｉ］，ｗ［ｙ］に転置させ、サブワードＹｉ，ｗ［ｙ］をサブワードＺｑｘ［ｉ］，ｗ［ｘ］に転置させ、ワードＺｉ，０Ｚｉ，１…Ｚｉ，ｓ−１を第ｉのワードとする工程と、を含み、
前記転置条件Ｐｘ＝（ｐｘ［０］，ｐｘ［１］，ｐｘ［２］，…，ｐｘ［ｋ−１］）は、第ｉのサブワードを第ｐｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｐｘ［ｉ］≠ｐｘ［ｊ］であり、
前記転置条件Ｑｘ＝（ｑｘ［０］，ｑｘ［１］，ｑｘ［２］，…，ｑｘ［ｋ−１］）は、第ｉのサブワードを第ｑｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｑｘ［ｉ］≠ｑｘ［ｊ］であり、
ｑｘ［ｐｘ［ｉ］］＝ｉであり、
前記ｗ［ｔ］（ｔ＝０，１，…，ｓ−１）は、ｗ［ｔ］∈｛０，１，２，…，ｓ−１｝であり、ｔ≠Ｔならばｗ［ｔ］≠ｗ［Ｔ］である。【００３０】
本発明の第４の視点に係る、ｋ分割一般化Ｆｅｉｓｔｅｌ構造に基づく暗号処理方法は、
入力データをＹ０，Ｙ１，…，Ｙｋ−１（ｎビット×ｋ個）とし、出力データをＺ０，Ｚ１，…，Ｚｋ−１とし、Ｙｉ（ｉ＝０，１，…，ｋ−１）をｓ分割（ｓ＝２，４，…，ｎ）したものをＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１とし、Ｚｉをｓ分割したものをＺｉ，０，Ｚｉ，１，…，Ｚｉ，ｓ−１とした場合に、Ｙａ，ｔ（ｔ＝０，１，…，ｓ−１）をＺｂ，ｕ（ｕ＝０，１，…，ｓ−１、ｕ≠ｔ）に転置するときには、Ｙｂ，ｕをＺａ，ｔに転置する工程を含む。
【発明の効果】
【００３１】
本発明に係る暗号処理装置および暗号処理方法によると、一般化Ｆｅｉｓｔｅｌ構造を用いた場合のＦ関数処理部の小型化のメリットを生かしつつ、暗号化処理と復号化処理との間で転置処理部を共有することで、暗号化処理のための転置処理部と復号化処理のための転置処理部とを切り替えるためのセレクタを不要とし、小規模な実装が可能な暗号処理装置を提供することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の転置処理を適用した一般化Ｆｅｉｓｔｅｌ構造をハードウェア実装したときのデータパスを表す図である。
【図２】第１の実施形態の転置処理例を示す図である。
【図３】第２の実施形態の転置処理例を示す図である。
【図４】ｒラウンドＦｅｉｓｔｅｌ構造の暗号化処理を示す図である。
【図５】ｒラウンドＦｅｉｓｔｅｌ構造の復号化処理を示す図である。
【図６】８分割一般化Ｆｅｉｓｔｅｌ構造の暗号化処理１ラウンド分を示す図である。
【図７】８分割一般化Ｆｅｉｓｔｅｌ構造の復号化処理１ラウンド分を示す図である。
【図８】Ｆｅｉｓｔｅｌ構造を用いた暗号化装置の構成を示すブロック図である。
【図９】Ｆｅｉｓｔｅｌ構造をハードウェア実装したときのデータパスを示す図である。
【図１０】一般化Ｆｅｉｓｔｅｌ構造を用いた暗号化装置の構成を示すブロック図である。
【図１１】一般化Ｆｅｉｓｔｅｌ構造をハードウェア実装したときのデータパスを示す図である。
【発明を実施するための形態】
【００３３】
はじめに、本発明の概要について説明する。なお、この概要に付記した図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００３４】
図１を参照すると、本発明の暗号処理装置は、ｍ×ｋビットの入力データをｋ個（ｍ，ｋはいずれも偶数）のｍビットワード（以下単に「ワード」という。）ｘ０，ｘ１，…，ｘｋ−２，ｘｋ−１に分割し、ワードｘｉ（ｉ＝０，２，…，ｋ−２）をＦ関数により鍵データを用いて変換を行い、ワードｘｉ＋１に作用させたものをワードＹｉ＋１として出力するとともに、ワードｘｉをそのままワードＹｉとして出力するＦ関数処理部（１０３）と、前記ワードＹｉ（ｉ＝０，１，…，ｋ−１）をｓ個（ｓ＝２，４，…，ｍ）のサブワードＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１に分割し、転置条件Ｐｘ（ｘ＝１，２，…，ｓ／２−１）と転置条件Ｑｘ（ｘ＝１，２，…，ｓ／２−１）により、サブワードＹｉ，ｗ［ｘ］をサブワードＺｐｘ［ｉ］，ｗ［ｙ］に転置させ、サブワードＹｉ，ｗ［ｙ］をサブワードＺｑｘ［ｉ］，ｗ［ｘ］に転置させ、ワードＺｉ，０Ｚｉ，１…Ｚｉ，ｓ−１を第ｉのワードとして出力する転置処理部（１０４）と、を備えている。
【００３５】
暗号処理装置は、ｍ×ｋビットの平文または暗号文をＦ関数処理部（１０３）に入力し、その出力を転置処理部（１０４）に入力し、その出力を再度Ｆ関数処理部（１０３）に入力することを所定のラウンド数にわたって繰り返し、最後にＦ関数処理を実施し、その出力を暗号文（平文）とすることで、ｍ×ｋビットのデータを暗号化または復号化する。
【００３６】
ここで、転置条件Ｐｘ＝（ｐｘ［０］，ｐｘ［１］，ｐｘ［２］，…，ｐｘ［ｋ−１］）は、第ｉのサブワードを第ｐｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｐｘ［ｉ］≠ｐｘ［ｊ］である。また、転置条件Ｑｘ＝（ｑｘ［０］，ｑｘ［１］，ｑｘ［２］，…，ｑｘ［ｋ−１］）は、第ｉのサブワードを第ｑｘ［ｉ］のサブワードに転置するとともに、ｉ≠ｊならばｑｘ［ｉ］≠ｑｘ［ｊ］である。さらに、ｑｘ［ｐｘ［ｉ］］＝ｉである。また、ｗ［ｔ］（ｔ＝０，１，…，ｓ−１）は、ｗ［ｔ］∈｛０，１，２，…，ｓ−１｝であり、ｔ≠Ｔならばｗ［ｔ］≠ｗ［Ｔ］である。
【００３７】
また、図１を参照すると、暗号処理装置は、Ｆ関数処理部（１０３）からの出力および転置処理部（１０４）からの出力を受けるとともに、上記所定のラウンド数にわたる繰り返しの最中である場合には転置処理部（１０４）からの出力を選択して出力し、それ以外の場合にはＦ関数処理部（１０３）からの出力を選択して出力する第１セレクタ（１０５）と、平文または暗号文、および、第１のセレクタ（１０５）からの出力を受けるとともに、上記所定のラウンド数にわたる繰り返しの開始前である場合には平文または暗号文を選択して出力し、それ以外の場合には第１のセレクタ（１０５）からの出力を選択して出力する第２のセレクタ（１０１）と、をさらに備えていてもよい。このとき、Ｆ関数処理部（１０３）は、第２のセレクタ（１０１）からの出力を受ける。
【００３８】
かかる暗号処理装置によると、一般化Ｆｅｉｓｔｅｌ構造を用いた場合のＦ関数処理部の小型化のメリットを生かしつつ、暗号化処理と復号化処理との間で転置処理部（１０４）を共有することで、暗号化処理のための転置処理部と復号化処理のための転置処理部とを切り替えるためのセレクタが不要となる。したがって、かかる暗号処理装置によると、小規模な実装が可能となる。
【００３９】
本発明において、以下の形態が可能である。
［形態１］
前記第１の視点に係る暗号処理装置のとおりである。
［形態２］
前記第２の視点に係る暗号処理装置のとおりである。
［形態３］
暗号処理装置は、ｍ×ｋビットの入力データをｋ個（ｍ，ｋはいずれも偶数）のｍビットワード（以下単に「ワード」という。）ｘ０，ｘ１，…，ｘｋ−２，ｘｋ−１に分割し、ワードｘｉ（ｉ＝０，２，…，ｋ−２）をＦ関数により鍵データを用いて変換を行い、ワードｘｉ＋１に作用させたものをワードＹｉ＋１として出力するとともに、ワードｘｉをそのままワードＹｉとして出力するＦ関数処理部をさらに備えていることが好ましい。
［形態４］
暗号処理装置は、ｍ×ｋビットの平文または暗号文を前記Ｆ関数処理部に入力し、その出力を前記転置処理部に入力し、その出力を再度前記Ｆ関数処理部に入力することを所定のラウンド数にわたって繰り返し、最後にＦ関数処理を実施し、その出力を暗号文（平文）とすることで、ｍ×ｋビットのデータを暗号化または復号化するようにしてもよい。
［形態５］
暗号処理装置は、前記Ｆ関数処理部からの出力および前記転置処理部からの出力を受けるとともに、前記所定のラウンド数にわたる繰り返しの最中である場合には前記転置処理部からの出力を選択して出力し、それ以外の場合には前記Ｆ関数処理部からの出力を選択して出力する第１セレクタと、前記平文または暗号文、および、前記第１のセレクタからの出力を受けるとともに、前記所定のラウンド数にわたる繰り返しの開始前である場合には前記平文または暗号文を選択して出力し、それ以外の場合には前記第１のセレクタからの出力を選択して出力する第２のセレクタと、をさらに備え、前記Ｆ関数処理部は、前記第２のセレクタからの出力を受けるようにしてもよい。
［形態６］
前記第３の視点に係る暗号処理方法のとおりである。
［形態７］
前記第４の視点に係る暗号処理方法のとおりである。
【００４０】
（実施形態１）
第１の実施形態に係る暗号処理装置ついて、図面を参照して詳細に説明する。本実施形態においては、暗号処理装置全体の構成は、一例として、図８に示すブロック図の構成とする。
【００４１】
図１は、本実施形態の暗号処理装置におけるデータ変換部１００をハードウェア実装した場合の構成を示す図である。すなわち、本実施形態では、図８の暗号処理装置５０におけるデータ変換部５２を、図１に示すデータ変換部１００とする。図１を参照すると、データ変換部１００は、セレクタ１０１、１０５、レジスタ１０２、Ｆ関数処理部１０３、および、転置処理部１０４を備えている。
【００４２】
データ変換部１００によって、平文Ｐ（または暗号文Ｃ）から暗号文Ｃ（または平文Ｐ）を生成する手順は、図９に示したデータ変換部５２における手順と同様である。
Ｆ関数処理部１０３は、図１１に示したデータ変換部５３において、Ｆ関数処理部８２が６分割である場合に相当する。
【００４３】
図２は、６分割一般化Ｆｅｉｓｔｅｌ構造に対して本発明の転置処理を適用したものである（１ラウンド分）。本実施形態では、図１の転置処理部１０４は、図２の転置処理部９０によって構成されている。
【００４４】
転置処理部９０への入力データをＹ０，Ｙ１，…，Ｙ５とし、出力データをＺ０，Ｚ１，…，Ｚ５とする。また、Ｙｉを２分割したデータをＹｉ，０，Ｙｉ，１とし、Ｚｉを２分割したデータをＺｉ，０，Ｚｉ，１とする。
【００４５】
転置処理Ｐ１および転置処理Ｑ１は、それぞれ次のとおりである。
【００４６】
Ｐ１≡（ｐ１［０］，ｐ１［１］，ｐ１［２］，ｐ１［３］，ｐ１［４］，ｐ１［５］）
＝（５，０，１，２，３，４）
【００４７】
Ｑ１≡（ｑ１［０］，ｑ１［１］，ｑ１［２］，ｑ１［３］，ｑ１［４］，ｑ１［５］）
＝（１，２，３，４，５，０）
【００４８】
ここで、Ｙｉ，０をＺｐ１［ｉ］，１へ転置させ、Ｙｉ，１をＺｑ１［ｉ］，０へ転置させる。例えば、ｉ＝０の場合、Ｙ０，０はＺ５，１へ転置し、Ｙ５，１はＺ０，０へ転置する。
【００４９】
図２の転置処理部９０において、実線は転置処理Ｐ１に相当し、破線は転置処理Ｑ１に相当する。
【００５０】
図１０に示した暗号処理装置７０のデータ変換部５３は、図１１に示すように、暗号化用の転置処理部８３および復号化用の転置処理部８４を必要とし、これらの出力を選択するためのセレクタ８５を必要とする。
【００５１】
一方、本実施形態のデータ変換部１００は、暗号化処理と復号化処理との間で、転置処理部１０４を共有することができる。したがって、データ変換部１００は、図１１のセレクタ８５に相当するセレクタを必要としない。このとき、データ変換部１００は、図１１の暗号化／復号化信号に相当する切り替えのための信号も必要としない。
【００５２】
なお、本実施形態は、いかなる分割数（偶数）ｋについても適用することができる。任意の分割数ｋについて本実施形態の構成を説明すると、次のとおりである。すなわち、本実施形態の暗号処理装置は、ｋ分割一般化Ｆｅｉｓｔｅｌ構造の転置処理部として、次の転置処理部１０４を備えていることになる。転置処理部１０４への入力データをＹ０，Ｙ１，…，Ｙｋ−１（ｎビット×ｋ個）とし、転置処理部１０４からの出力データをＺ０，Ｚ１，…，Ｚｋ−１とする。また、Ｙｉ（ｉ＝０，１，…，ｋ−１）をｓ分割（ｓ＝２，４，…，ｎ）したものをＹｉ，０，Ｙｉ，１，…，Ｙｉ，ｓ−１とする。同様に、Ｚｉをｓ分割したものをＺｉ，０，Ｚｉ，１，…，Ｚｉ，ｓ−１とする。このとき、転置処理部１０４は、Ｙａ，ｔ（ｔ＝０，１，…，ｓ−１）をＺｂ，ｕ（ｕ＝０，１，…，ｓ−１、ｕ≠ｔ）に転置するとき、Ｙｂ，ｕをＺａ，ｔに転置する。
【００５３】
ハードウェア実装において、転置処理部１０４は単なる配線に過ぎない。したがって、接続元と接続先をどのように変えようとも実装規模には影響しない。一般化Ｆｅｉｓｔｅｌ構造の転置処理を本実施形態の転置処理部１０４を用いて行うことにより、暗号化および復号化において転置処理部１０４を共有することができる。したがって、分割したデータサイズで転置を行う一般化Ｆｅｉｓｔｅｌ構造で必要とされた転置処理切り替え用のセレクタが不要となる。ゆえに、本実施形態に係る暗号処理装置によると、ハードウェア実装の規模を削減することができる。
【００５４】
（実施形態２）
次に、第２の実施形態に係る暗号処理装置について、図面を参照して説明する。本実施形態においても、第１の実施形態と同様に、暗号処理装置全体の構成は、一例として、図８に示すブロック図の構成とする。また、本実施形態においても、図８の暗号処理装置５０におけるデータ変換部５２を、図１に示すデータ変換部１００とする。
【００５５】
図３は、本実施形態における転置処理部１１０の構成を示す図である。本実施形態では、図１の転置処理部１０４は、図３の転置処理部１１０によって構成されている。
【００５６】
図３を参照すると、本実施形態においては、転置処理部１１０への６個の入力データＹｉと出力データＺｉをそれぞれ４分割している点で、図２に示した第１の実施形態における転置処理部９０と相違する。
【００５７】
図２を参照すると、第１の実施形態においては、各入出力データＹｉ，Ｚｉを２分割し、転置処理Ｐとその逆転置処理Ｑとを組み合わせた。一方、図３を参照すると、本実施形態においては、転置処理Ｐ１とその逆転置処理Ｑ１、転置処理Ｐ２とその逆転置処理Ｑ２の４つ転置処理を組み合わせる。
【００５８】
Ｙｉを４分割したものをＹｉ，０，Ｙｉ，１，Ｙｉ，２，Ｙｉ，３とする。同様に、Ｚｉを４分割したものをＺｉ，０，Ｚｉ，１，Ｚｉ，２，Ｚｉ，３とする。
【００５９】
このとき、Ｙｉ，ｔをＺｐ１［ｉ］，ｕへ転置し、Ｙｉ，ｖをＺｐ２［ｉ］，ｗへ転置し、Ｙｉ，ｗをＺｑ２［ｉ］，ｖへ転置し、Ｙｉ，ｕをＺｑ１［ｉ］，ｔへ転置する。
【００６０】
図３の転置処理部１１０の転置処理Ｐ１、Ｑ１、Ｐ２、Ｑ２は、それぞれ以下のとおりである。
【００６１】
Ｐ１≡（ｐ１［０］，ｐ１［１］，ｐ１［２］，ｐ１［３］，ｐ１［４］，ｐ１［５］）
＝（５，０，１，２，３，４）
【００６２】
Ｑ１≡（ｑ１［０］，ｑ１［１］，ｑ１［２］，ｑ１［３］，ｑ１［４］，ｑ１［５］）
＝（１，２，３，４，５，０）
【００６３】
Ｐ２≡（ｐ２［０］，ｐ２［１］，ｐ２［２］，ｐ２［３］，ｐ２［４］，ｐ２［５］）
＝（３，０，１，４，５，２）
【００６４】
Ｑ２≡（ｑ２［０］，ｑ２［１］，ｑ２［２］，ｑ２［３］，ｑ２［４］，ｑ２［５］）
＝（１，２，５，０，３，４）
【００６５】
また、ｔ＝０，ｕ＝３，ｖ＝１，ｗ＝２であるが、他の組み合わせとすることも可能である。
【００６６】
図３の転置処理部１１０において、細実線は転置処理Ｐ１に相当し、太実線は転置処理Ｐ２に相当し、破線は転置処理Ｑ１に相当し、点線はＱ２に相当する。
【００６７】
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【００６８】
本発明は、音声通信端末やデータ通信装置などの通信データの秘匿や、ストレージ上の蓄積データの暗号化といった用途に適用できる。
【符号の説明】
【００６９】
１０、３０、６２、８２、１０３    Ｆ関数処理部
１１、３１、４０、６３、８３、８４、９０、１０４、１１０    転置処理部
５０、７０    暗号処理装置
５１    拡大鍵生成部
５２、５３、１００    データ変換部
６０、６４、８０、８５、８６、１０１、１０５    セレクタ
６１、８１、１０２    レジスタ
Ｃ    暗号文
Ｐ    平文
【図１】
2012067052.tif 000003
【図２】
2012067052.tif 000004
【図３】
2012067052.tif 000005
【図４】
2012067052.tif 000006
【図５】
2012067052.tif 000007
【図６】
2012067052.tif 000008
【図７】
2012067052.tif 000009
【図８】
2012067052.tif 000010
【図９】
2012067052.tif 000011
【図１０】
2012067052.tif 000012
【図１１】
2012067052.tif 000013
【国際調査報告】
2012067052.tif 000014
2012067052.tif 000015
2012067052.tif 000016
2012067052.tif 000017
2012067052.tif 000018
2012067052.tif 000019