(57)【要約】  本発明の目的は、共通鍵ブロック暗号の実装規模の増加を最小限に抑えながら、解読法の一つである不能差分攻撃に対する耐性を向上させることである。データをｎ個に分割してデータ変換を行う一般化Ｆｅｉｓｔｅｌ構造の途中に、線形演算によってデータ変換を行う拡散処理手順を追加する。本構成により、一般化Ｆｅｉｓｔｅｌ構造の拡散性の弱さを補ない、最大不能差分ラウンド数を小さくする（図１）。
2009075337.tif 000002
【特許請求の範囲】
【請求項１】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を用い、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間で、線形演算によるデータ変換を行う拡散処理を少なくとも１回実行すること、
を特徴とする暗号化方法。
【請求項２】
前記拡散処理は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うことを特徴とする請求項１記載の暗号化方法。
【請求項３】
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を行う請求項１又は２記載の暗号化方法。
【請求項４】
前記拡散処理は、各行がそれぞれ異なり、かつ、出力するすべてのデータに、すべての入力データを作用させる行列による線形変換処理である請求項１又は２記載の暗号化方法。
【請求項５】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を用い、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間で、線形演算によるデータ変換を行う拡散処理を少なくとも１回実行すること、
を特徴とする復号化方法。
【請求項６】
前記拡散処理は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うことを特徴とする請求項５記載の復号化方法。
【請求項７】
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を行う請求項５又は６記載の復号化方法。
【請求項８】
前記拡散処理は、各行がそれぞれ異なり、かつ、出力するすべてのデータに、すべての入力データを作用させる行列による線形変換処理である請求項５又は６記載の復号化方法。
【請求項９】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を含み、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理手段が、少なくとも１つ配置されていること、
を特徴とする暗号化装置。
【請求項１０】
前記拡散処理手段は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うことを特徴とする請求項９記載の暗号化装置。
【請求項１１】
前記拡散処理手段は、前記ｎ個の入力データのうちの所定個数のデータが入力される複数の拡散処理手段によって構成され、
前記各拡散処理手段が、それぞれ前記所定個数のデータについて線形演算によるデータ変換を行う請求項９又は１０記載の暗号化装置。
【請求項１２】
前記拡散処理手段は、各行がそれぞれ異なり、かつ、出力するすべてのデータに、すべての入力データを作用させる行列による線形変換処理を行う請求項９又は１０記載の暗号化装置。
【請求項１３】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を含み、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理手段が、少なくとも１つ配置されていること、
を特徴とする復号化装置。
【請求項１４】
前記拡散処理手段は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うことを特徴とする請求項１３記載の復号化装置。
【請求項１５】
前記拡散処理手段は、前記ｎ個の入力データのうちの所定個数のデータが入力される複数の拡散処理手段によって構成され、
前記各拡散処理手段が、それぞれ前記所定個数のデータについて線形演算によるデータ変換を行う請求項１３又は１４記載の復号化装置。
【請求項１６】
前記拡散処理手段は、各行がそれぞれ異なり、かつ、出力するすべてのデータに、すべての入力データを作用させる行列による線形変換処理を行う請求項１３又は１４記載の復号化装置。
【請求項１７】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造による非線形変換処理をコンピュータに複数回実行させ、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を、前記コンピュータに少なくとも１回実行させる暗号化プログラム。
【請求項１８】
前記拡散処理は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換処理である請求項１７記載の暗号化プログラム。
【請求項１９】
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を行う請求項１７又は１８記載の暗号化プログラム。
【請求項２０】
前記拡散処理は、各行がそれぞれ異なり、かつ、出力するすべてのデータに、すべての入力データを作用させる行列による線形変換処理である請求項１７又は１８記載の暗号化プログラム。
【請求項２１】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造による非線形変換処理をコンピュータに複数回実行させ、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を、前記コンピュータに少なくとも１回実行させる復号化プログラム。
【請求項２２】
前記拡散処理は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換処理である請求項２１記載の復号化プログラム。
【請求項２３】
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を行う請求項２１又は２２記載の復号化プログラム。
【請求項２４】
前記拡散処理は、各行がそれぞれ異なり、かつ、出力するすべてのデータに、すべての入力データを作用させる行列による線形変換処理である請求項２１又は２２記載の復号化プログラム。
【請求項２５】
請求項１乃至４いずれか一に記載の暗号化方法を実行する機能を備え、
データを暗号化する情報処理装置。
【請求項２６】
請求項５乃至８いずれか一に記載の復号化方法を実行する機能を備え、
データを復号化する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本願は、先の日本特許出願２００７−３２２０２１号（２００７年１２月１３日出願）の優先権を主張するものであり、前記先の出願の全記載内容は、本書に引用をもって繰込み記載されているものとみなされる。
本発明は、データを秘匿するための暗号化方法、暗号化装置、暗号化プログラム及びこれらと対をなす復号化方法、復号化装置、復号化プログラムに関し、特に、共通鍵ブロック暗号を用いたものに関する。
【背景技術】
【０００２】
通信データや蓄積データを秘匿する技術として共通鍵ブロック暗号がある。その代表的なものとしてＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がある。ＤＥＳではＦｅｉｓｔｅｌ構造と呼ばれる構造が採用されている。Ｆｅｉｓｔｅｌ構造は、入力データを２つに分割して攪拌処理を行うという特徴がある。Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理について各種の特許出願がなされているが、ごく最近のものとして、特許文献１、２に記載の暗号処理装置を挙げることができる。【０００３】
Ｆｅｉｓｔｅｌ構造に入力するデータの分割数を２以上に拡張した構造を、一般化Ｆｅｉｓｔｅｌ構造または変形Ｆｅｉｓｔｅｌ構造と呼ぶ（以下、本明細書では、前者の「一般化Ｆｅｉｓｔｅｌ構造」を統一使用する。）。【０００４】
図１５は、ｎ個に分割されたデータを暗復号処理する一般化Ｆｅｉｓｔｅｌ構造（ｎ系列一般化Ｆｅｉｓｔｅｌ構造）１ラウンド分の構成を表している。分割数ｎ＝２の場合が上述したＤＥＳに該当する。【０００５】
ラウンド処理９では、入力データｘ１はそのまま出力データｙｎになると共に、非線形変換処理であるＦ関数９０で鍵データＫｒとの攪拌を行い、排他的論理和９１で入力データｘ２に作用させ、出力データｙ１となる。その他の入力データｘｉ（ｉ＞２）はそのまま出力データｙｉ−１となる。図１５の例では、１ラウンドで、分割したデータの１個の非線形変換が行われる。【０００６】
図１６は、一般化Ｆｅｉｓｔｅｌ構造の別のタイプの例である。図１６の例では、１ラウンドで、ｎ／２個のデータの非線形変換が行われる。【０００７】
以降、上記２つの一般化Ｆｅｉｓｔｅｌ構造を区別するために、図１５の構造を持つ一般化Ｆｅｉｓｔｅｌ構造をＴｙｐｅ−Ｉ、図１６の構造を持つ一般化Ｆｅｉｓｔｅｌ構造をＴｙｐｅ−IIと呼ぶ。【０００８】
非特許文献１は、上記一般化Ｆｅｉｓｔｅｌ構造を持つブロック暗号に対する不能差分特性探索法を提案する文献である。非特許文献２には、ラウンド関数の線形変換層の設計手法が開示されている。なお、非特許文献２のラウンド関数がＳＰＮ構造で構成されていることを前提としており、本発明の一般化Ｆｅｉｓｔｅｌ構造と基本構成を異にするものである。【０００９】
【特許文献１】特開２００７−１９２８９３号公報
【特許文献２】特開２００７−１９９１５６号公報
【非特許文献１】角尾幸保，辻原悦子，中嶋浩貴，久保博靖，「変形Ｆｅｉｓｔｅｌ構造を持つブロック暗号の不可能差分」,２００７年暗号と情報セキュリティシンポジウム、２００７年１月２３日
【非特許文献２】神田 雅透、高嶋 洋一、松本 勉、青木 和麻呂、太田 和夫、「少数のＳ−ｂｏｘを用いたラウンド関数の構成について（その３）」、電子情報通信学会技術研究報告書 ＩＳＥＣ９８−３、ｐｐ．２１−３０
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記特許文献ならびに非特許文献の開示事項は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明によって与えられたものである。
一般化Ｆｅｉｓｔｅｌ構造において、分割数ｎを大きくするということはＦ関数の処理サイズを小さくすることを意味している。Ｆ関数は実装規模に最も影響する処理であり、Ｆ関数の処理サイズが小さくなると、小規模な実装が可能になるというメリットがある。【００１１】
一方、安全性の面では、分割数ｎを大きくすると暗号解読手法の一つである不能差分攻撃に対する耐性が低下するという問題点がある。【００１２】
ここで、不能差分攻撃方法の概要を説明する。不能差分攻撃方法とは、Ｒ＋１ラウンドの暗号化アルゴリズムに対して、差分αを与えた（差がαであるデータ対を与える）とき、Ｒラウンド後のデータの差分がβになることがない、つまり確率１で差分αから差分βになることはないという暗号アルゴリズムの特性を利用する攻撃法である。【００１３】
このラウンド数Ｒを”不能差分ラウンド数”と呼ぶ。Ｒ＋１ラウンド後の鍵を仮定することによって、暗号文対から１ラウンド遡ったデータ対を求める。求めたデータ対の差分を計算し、もしその差分がβであったならば、仮定した鍵を棄却し、鍵の候補を絞り込むことができる。【００１４】
図１７は、非特許文献１の探索方法により調査した分割数と不能差分ラウンド数の関係を表した表である。Ｆ関数が全単射（入力のすべての要素が出力のすべてと１対１に対応）である場合、Ｆｅｉｓｔｅｌ構造（ｎ＝２）では不能差分特性が存在する最大ラウンド数は５であるが、分割数ｎを大きくすると最大不能差分ラウンド数も増加する。これは、不能差分攻撃が確率１の特性を使うためであり、分割数ｎを大きくすると暗号化手段の拡散効果が弱くなるためである。【００１５】
図１８は４系列Ｔｙｐｅ−II一般化Ｆｅｉｓｔｅｌ構造に差分αを与えたときの差分の変化を表したものである。与える差分αの値は既知であるが、Ｆ関数では不明な鍵データが使われるため、出力される差分の値は不明である。図１８の排他的論理和９１ａや９１ｂのように、値が不明な差分値と他の差分値が排他的論理和されると、結果として差分が消える可能性がある。【００１６】
図１８の例では４ラウンドまでしか確率１の差分は存在しない。図１８の確率１の差分経路より、ｎを大きくすると確率１の経路が延びることが明らかである。【００１７】
上記に示したように、一般化Ｆｅｉｓｔｅｌ構造において分割数ｎを大きくすると、Ｆ関数を小型化できるメリットがある一方で、不能差分攻撃の適用可能ラウンド数が大きくなるため、その対策として暗号化手段のラウンド数を増やさねばならず、結果として処理速度の低下を招くという問題点がある。【００１８】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、一般化Ｆｅｉｓｔｅｌ構造における、最大不能差分攻撃に対する耐性を向上させた暗号化方法、暗号化装置、暗号化プログラム及びこれらと対をなす復号化方法、復号化装置、復号化プログラム方法を提供することにある。
【課題を解決するための手段】
【００１９】
本発明の第１の視点によれば、データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を用い、前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間で、線形演算によるデータ変換を行う拡散処理を少なくとも１回実行する暗号化方法、及び、該暗号化方法に対応する復号化方法が提供される。【００２０】
本発明の第２の視点によれば、データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を含み、前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理手段が、少なくとも１つ配置されている暗号化装置、及び、該暗号化装置に対応する復号化装置が提供される。【００２１】
本発明の第３の視点によれば、データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造による非線形変換処理をコンピュータに複数回実行させ、前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を、前記コンピュータに少なくとも１回実行させる暗号化プログラム、及び、該暗号化プログラムに対応する復号化プログラムが提供される。
【発明の効果】
【００２２】
本発明によれば、暗号化処理全体のラウンド数を増やすことなく不能差分攻撃に対する耐性を高めるとともに、暗復号処理の時間を短縮することが可能となる。その理由は、一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を導入して、一般化Ｆｅｉｓｔｅｌ構造における最大不能差分ラウンド数の増加を抑制したことにある。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態の暗号化手段（暗号化装置）の構成を示す図である。
【図２】本発明の第１の実施形態の拡散処理手段で行われる処理を行列で表した図である。
【図３】本発明の第１の実施形態の拡散処理手段で行われる処理を行列で表した別の図である。
【図４】本発明の第１の実施形態の復号化手段（復号化装置）の構成を示す図である。
【図５】Ｔｙｐｅ−Ｉ一般化Ｆｅｉｓｔｅｌ構造の復号化処理の例を示す図である。
【図６】Ｔｙｐｅ−II一般化Ｆｅｉｓｔｅｌ構造の暗号化と復号化における鍵の使用順を示す図である。
【図７】本発明の第２の実施形態の暗号化手段（暗号化装置）の構成を示す図である。
【図８】本発明の第２の実施形態の復号化手段（復号化装置）の構成を示す図である。
【図９】本発明の第１実施例の４系列一般化Ｆｅｉｓｔｅｌ構造と４行４列の行列による暗号化手段（暗号化装置）の構成を示す図である。
【図１０】図９の拡散処理手段の構成例を示す図である。
【図１１】ＭＤＳ行列の例を表す図である。
【図１２】本発明の第２実施例の８系列一般化Ｆｅｉｓｔｅｌ構造と４行４列の行列２つによる暗号化手段（暗号化装置）の構成を示す図である。
【図１３】本発明の暗号化装置と復号化装置を搭載した情報処理装置（ＩＣモジュール）の例である。
【図１４】本発明の暗号化装置と復号化装置を搭載した情報処理装置（通信装置）の例である。
【図１５】一般化Ｆｅｉｓｔｅｌ構造（Ｔｙｐｅ−Ｉ）を説明するための図である。
【図１６】一般化Ｆｅｉｓｔｅｌ構造（Ｔｙｐｅ−II）を説明するための図である。
【図１７】一般化Ｆｅｉｓｔｅｌ構造における分割数Ｎと不能差分ラウンド数の関係を示す図である。
【図１８】４系列一般化Ｆｅｉｓｔｅｌ構造における差分の伝搬の例を示す図である。
【符号の説明】
【００２４】
１  暗号化手段
２  復号化手段
１０、１２、１４、１ｓ、２０、２２、２４  一般化Ｆｅｉｓｔｅｌ処理手段
１１、１１ａ、１１ｂ、１３、２１、２３、２５  拡散処理手段
７０  ＩＣモジュール
７１  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
７２  メモリ
７３  送受信部
７４  暗復号処理部
７５  乱数発生部
８１  データ圧縮手段
８３  符号化手段
８５  データ復元手段
【発明を実施するための最良の形態】
【００２５】
続いて、本発明の好適な実施形態について図面を参照して詳細に説明する。【００２６】
［第１の実施形態］
図１は、本発明の第１の実施形態の暗号化手段（暗号化装置）の構成を表した図である。図１を参照すると、一般化Ｆｅｉｓｔｅｌ構造を構成するＦｅｉｓｔｅｌ処理手段１０、１２の間に、拡散処理手段１１を配置した構成の暗号化手段１が示されている。【００２７】
平文Ｐは、ｐ１〜ｐｎに分割され、一般化Ｆｅｉｓｔｅｌ処理手段１０に入力され、拡散処理手段１１、一般化Ｆｅｉｓｔｅｌ処理手段１２の順で処理される。最終段の一般化Ｆｅｉｓｔｅｌ処理手段１２の出力データｃ１〜ｃｎを結合することで、暗号文Ｃが得られる構造となっている。【００２８】
一般化Ｆｅｉｓｔｅｌ処理手段１０、１２は、それぞれ鍵データＫ１、Ｋ２にて非線形変換を行う１ラウンド１以上のＴｙｐｅ−ＩまたはＴｙｐｅ−IIのｎ系列一般化Ｆｅｉｓｔｅｌ構造によって構成される。【００２９】
拡散処理手段１１は、各出力ｙｉに入力ｘ１〜ｘｎのうちの２つ以上を線形演算によって影響させる処理であり、図２に示すｎ行ｎ列の行列演算で表現することができる。【００３０】
行列の要素は、拡散処理手段１１が全単射になるよう選択する必要があり、その条件として、その行列が逆行列を持つという条件が必要である。すなわち、行列をＭ、単位行列をＩとしたとき、Ｍ・Ｍ−１＝Ｉを満たす逆行列をＭ−１を持つ必要がある。【００３１】
なお、行列Ｍが逆行列を持つか否かは、”ガウスの消去法”によってｒａｎｋを調べればよく、ｒａｎｋ（Ｍ）＝ｎであれば行列Ｍは逆行列を持つ。【００３２】
また、拡散処理手段１１は、図３に示すように、入力データを幾つかのグループに分け、それぞれのグループにおいて、ｎ個の入力データのうちの所定個数のデータについて行列演算を行う構成にすることも可能である。【００３３】
なお、図３のように複数の拡散処理手段を並列配置した構成を採る場合であっても、各々の行列は上記に示したように逆行列を持つことが条件となる。このような構成では、拡散処理手段全体での拡散性は低下するが、全体での演算量を減らすことができる。【００３４】
図４は、図１の暗号化手段１に対応する復号化手段２の構成を表した図である。図４を参照すると、一般化Ｆｅｉｓｔｅｌ構造を構成するＦｅｉｓｔｅｌ処理手段２０、２２の間に、拡散処理手段２１を配置した構成の復号化手段２が示されている。【００３５】
図４のＦｅｉｓｔｅｌ処理手段２０、２２は、それぞれ１ラウンド１以上のＴｙｐｅ−ＩまたはＴｙｐｅ−IIのｎ系列一般化Ｆｅｉｓｔｅｌ構造によって構成され、それぞれ図１のＦｅｉｓｔｅｌ処理手段１２、１０の逆関数である。図４の拡散処理手段２１は、図１の拡散処理手段１１の逆関数である。【００３６】
拡散処理手段２１は、図１の拡散処理手段１１の行列の逆行列になる。ここで、行列ＭがＭ＝Ｍ−１の関係にあるならば、拡散処理手段は暗号化処理と復号化処理で共有することができる。【００３７】
暗号文Ｃは、ｃ１〜ｃｎに分割され、一般化Ｆｅｉｓｔｅｌ処理手段２０に入力され、拡散処理手段２１、一般化Ｆｅｉｓｔｅｌ処理手段２２の順で処理される。最終段の一般化Ｆｅｉｓｔｅｌ処理手段２２の出力データｐ１〜ｐｎを結合することで、平文Ｐが得られる構造となっている。【００３８】
分割数ｎ＝２の通常のＦｅｉｓｔｅｌ構造では、暗号化処理と復号化処理との構造を共有することができ、ラウンド処理で使用する鍵（ラウンド鍵）の使用順序を逆にするだけで暗号化／復号化を実現できる。【００３９】
これに対し、３系列以上のＴｙｐｅ−Ｉ一般化Ｆｅｉｓｔｅｌ構造では、ラウンド鍵の使用順序を逆にすることに加え、暗号化とは逆の方向にデータをクロスさせる必要があるため、暗号化処理と復号化処理で構造の共有はできない（図５参照）。【００４０】
一方、Ｔｙｐｅ−II一般化Ｆｅｉｓｔｅｌ構造では、２／ｎ個の非線形変換が行われるため、ラウンド数によっては構造自体の共有は可能である。但しこの場合においても図１０に示すように、ラウンド鍵は暗号化処理とは逆順に使用することに加え、一部のラウンド鍵はラウンド鍵の内部で鍵のローテーションが必要である（例えば、図６の暗号化処理の第２ラウンドと、復号化処理の第４ラウンド参照。）。【００４１】
以上のように、本実施形態によれば、拡散処理手段による攪拌が行われるため、暗号化処理全体のラウンド数を増やすことなく不能差分攻撃に対する耐性を高めることができる。換言すれば、不能差分攻撃に対する耐性を確保しながらラウンド数を削減できるため、暗号化処理の処理時間の短縮も可能となる。【００４２】
［第２の実施形態］
続いて、拡散処理手段を２段とした本発明の第２の実施形態について説明する。図７は、本発明の第２の実施形態の暗号化手段の構成を表した図である。図７を参照すると、一般化Ｆｅｉｓｔｅｌ構造を構成するＦｅｉｓｔｅｌ処理手段１０、１２、１４の間に、拡散処理手段１１、１３を配置した構成の暗号化手段１が示されている。【００４３】
図８は、図７の暗号化手段に対応する復号化手段の構成を表した図である。図８を参照すると、一般化Ｆｅｉｓｔｅｌ構造を構成するＦｅｉｓｔｅｌ処理手段２０、２２、２４の間に、拡散処理手段２１、２３を配置した構成の復号化手段２が示されている。【００４４】
本実施形態は、拡散処理手段が２箇所に挿入されていること以外は、上記した第１の実施形態と同じである。このように、本発明における追加する拡散処理手段の数に制限はなく、ラウンド数と必要とされる不能差分攻撃に対する耐性に応じて拡散処理手段を配置することができる。
【実施例１】
【００４５】
次に、具体的な実施例を用いて本発明を実施するための最良の形態を説明する。図９は、４系列Ｔｙｐｅ−II一般化Ｆｅｉｓｔｅｌ処理手段１ｓと、４行４列の行列による拡散処理手段１１で構成した暗号処理手段の例である。【００４６】
図９の拡散処理手段１１の行列では、出力の各々に３つの入力が影響する。拡散処理手段１１の行列を式で表すと、８回の排他的論理和演算で出力を計算することができるが、簡単化することにより、図１０に示すように６回の排他的論理和で構成することもできる（非特許文献２参照）。なお、上記引用をもって、上記非特許文献２の全開示内容は本書に繰込み記載されたものとする。【００４７】
また、拡散処理手段１１として、図１１に示すような、Ｍａｘｉｍｕｍ Ｄｉｓｔａｎｃｅ  Ｓｅｐａｒａｂｌｅ（ＭＤＳ）行列を用いることもできる。図１１の下段の式からも明らかなように、０要素を含まず、各行がそれぞれ異なる（それぞれユニークである。）この種の行列は、出力のそれぞれにすべての入力が影響するので、拡散処理手段１１よりも拡散性に優れている。【００４８】
なお、ＭＤＳ行列における要素が２以上のものは、有限体ＧＦ（２ｍ）上の乗算を行う（ｍはブロックサイズ／ｎ）。
【実施例２】
【００４９】
図１２は、８系列Ｔｙｐｅ−II一般化Ｆｅｉｓｔｅｌ処理手段１ｓと、４行４列の行列による２つの拡散処理手段１１ａ、１１ｂで構成した暗号処理手段の例である。【００５０】
なお、図１２の例では、拡散処理手段１１ａ、１１ｂで用いる行列は同一の行列となっているが、異なる行列を使うことも可能である。【００５１】
なお、本発明の上記実施形態及び実施例で説明した暗号化方法及び復号化方法は、例えば、パーソナルコンピュータ、ＩＣカード、リーダライタ等のコンピュータに上記した一般化Ｆｅｉｓｔｅｌ処理及び拡散処理を実行させるプログラム、あるいは、上記した各種情報処理装置に搭載するハードウェア回路により実現することができる。【００５２】
図１３は、本発明に係る暗号化装置及び復号化装置の一具体例としてのＩＣモジュール７０を示している。図１３に示すＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７１は、暗復号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。【００５３】
メモリ７２は、ＣＰＵ７１が実行するプログラム、演算パラメータなどの固定データを格納するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＰＵ７１において実行されるプログラム、および、該プログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。【００５４】
また、メモリ７２は、一般化Ｆｅｉｓｔｅｌ処理及び拡散処理に必要な鍵データや行列データ等の格納領域としても使用される。なお、これらのデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。【００５５】
送受信部７３は、外部とのデータ通信を実行するデータ通信処理部であり、例えば外部のリーダライタ等とのデータ通信（暗号化されたデータのやり取り）を実行する。【００５６】
暗復号処理部７４は、送受信部７３を介して送受信するデータについて、上述したＦｅｉｓｔｅｌ構造の途中に拡散処理を導入した暗号化処理及び復号化処理を実行する。【００５７】
乱数発生部７５は、暗復号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。【００５８】
図１３の例では、暗復号処理部を独立して設けた構成としているが、例えば、メモリ７２に一般化Ｆｅｉｓｔｅｌ処理及び拡散処理を実行するためのプログラムを格納しておき、ＣＰＵが該プログラムを読み出して実行し、暗号化手段、あるいは、復号化手段として機能するように構成することもできる。【００５９】
また本発明は、上記したＩＣモジュールのほか、音声通信端末やデータ通信装置における通信データを秘匿するための暗復号化装置といった用途にも適用できる。図１４は、音声等の通信データを秘匿して通信を行う通信装置のデータ処理部の例である。【００６０】
データを送信する場合、図１４に示すように、まず、データ圧縮手段８１が、送信前データの圧縮を行う。次に、圧縮されたデータＰは、本発明の暗号化手段１で暗号化される。最後は符号化手段８３で暗号化したデータＣに対してエラー訂正用の符号化を行い、暗号化送信データを送信する。【００６１】
データを受信する場合は、符号化手段８３が暗号化受信データのエラー訂正を行う。エラー訂正されたデータＣは、本発明の復号化手段２で復号される。最後に、データ復元手段８５が圧縮を解き、復元データを得る。【００６２】
以上本発明の好適な実施形態を説明したが、本発明は、上記した実施形態及び実施例の記載に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。【００６３】
例えば、上記した実施形態及び実施例で説明した一連の処理は、ハードウェア、ソフトウェア、あるいは、両者の組み合わせにより構成することが可能であり、本発明が適用されるシステムの用途等により、適宜変更を加えることができる。【００６４】
また、本発明の暗号化プログラム又は復号化プログラムは、記録媒体としてのハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ Ｄｉｓｃ Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）、ＭＯ（Ｍａｇｎｅｔｏ Ｏｐｔｉｃａｌ）ディスク、ＤＶＤ(ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、半導体メモリ等の形態で、配布し、任意のコンピュータにおいて実行できるようにすることができる。【００６５】
また、上記した暗号化プログラム又は復号化プログラムは、ネットワーク上のファイルサーバ等に格納しておき、適宜、ダウンロードして使用できるようにすることもできる。
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図１】
2009075337.tif 000003
【図２】
2009075337.tif 000004
【図３】
2009075337.tif 000005
【図４】
2009075337.tif 000006
【図５】
2009075337.tif 000007
【図６】
2009075337.tif 000008
【図７】
2009075337.tif 000009
【図８】
2009075337.tif 000010
【図９】
2009075337.tif 000011
【図１０】
2009075337.tif 000012
【図１１】
2009075337.tif 000013
【図１２】
2009075337.tif 000014
【図１３】
2009075337.tif 000015
【図１４】
2009075337.tif 000016
【図１５】
2009075337.tif 000017
【図１６】
2009075337.tif 000018
【図１７】
2009075337.tif 000019
【図１８】
2009075337.tif 000020
【手続補正書】
【提出日】平成21年5月11日(2009.5.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を用い、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間で、線形演算によるデータ変換を行う拡散処理を少なくとも１回実行し、かつ、
前記拡散処理として、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うこと、
を特徴とする暗号化方法。
【請求項２】
（削除）
【請求項３】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を用い、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間で、線形演算によるデータ変換を行う拡散処理を少なくとも１回実行し、かつ、
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を行うこと、
を特徴とする暗号化方法。
【請求項４】
（削除）
【請求項５】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を用い、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間で、線形演算によるデータ変換を行う拡散処理を少なくとも１回実行し、かつ、
前記拡散処理として、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うこと、
を特徴とする復号化方法。
【請求項６】
（削除）
【請求項７】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を用い、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間で、線形演算によるデータ変換を行う拡散処理を少なくとも１回実行し、かつ、
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を行うこと、
を特徴とする復号化方法。
【請求項８】
（削除）
【請求項９】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を含み、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理手段が、少なくとも１つ配置され、かつ、
前記拡散処理手段は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うこと、
を特徴とする暗号化装置。
【請求項１０】
（削除）
【請求項１１】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を含み、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理手段が、少なくとも１つ配置され、かつ、
前記拡散処理手段は、前記ｎ個の入力データのうちの所定個数のデータが入力される複数の拡散処理手段によって構成され、
前記各拡散処理手段が、それぞれ前記所定個数のデータについて線形演算によるデータ変換を行うこと、
を特徴とする暗号化装置。
【請求項１２】
（削除）
【請求項１３】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を含み、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理手段が、少なくとも１つ配置され、かつ、
前記拡散処理手段は、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換を行うこと、
を特徴とする復号化装置。
【請求項１４】
（削除）
【請求項１５】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造を含み、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理手段が、少なくとも１つ配置され、かつ、
前記拡散処理手段は、前記ｎ個の入力データのうちの所定個数のデータが入力される複数の拡散処理手段によって構成され、
前記各拡散処理手段が、それぞれ前記所定個数のデータについて線形演算によるデータ変換を行うこと、
を特徴とする復号化装置。
【請求項１６】
（削除）
【請求項１７】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造による非線形変換処理をコンピュータに複数回実行させ、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を、前記コンピュータに少なくとも１回実行させ、かつ、
前記拡散処理として、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換処理を実行させる暗号化プログラム。
【請求項１８】
（削除）
【請求項１９】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造による非線形変換処理をコンピュータに複数回実行させ、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を、前記コンピュータに少なくとも１回実行させ、かつ、
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を実行させる暗号化プログラム。
【請求項２０】
（削除）
【請求項２１】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造による非線形変換処理をコンピュータに複数回実行させ、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を、前記コンピュータに少なくとも１回実行させ、かつ、
前記拡散処理として、
出力するｎ個のデータの各々に、２個以上の入力データを作用させる線形変換処理を実行させる復号化プログラム。
【請求項２２】
（削除）
【請求項２３】
データをｎ個に分割して鍵データとの攪拌処理を行う一般化Ｆｅｉｓｔｅｌ構造による非線形変換処理をコンピュータに複数回実行させ、
前記一般化Ｆｅｉｓｔｅｌ構造のラウンド間に、線形演算によるデータ変換を行う拡散処理を、前記コンピュータに少なくとも１回実行させ、かつ、
前記拡散処理として、前記ｎ個の入力データを２以上のグループに分けて、それぞれのグループ毎に線形演算によるデータ変換を実行させる復号化プログラム。
【請求項２４】
（削除）
【請求項２５】
請求項１または３に記載の暗号化方法を実行する機能を備え、
データを暗号化する情報処理装置。
【請求項２６】
請求項５または７に記載の復号化方法を実行する機能を備え、
データを復号化する情報処理装置。
【国際調査報告】
2009075337.tif 000021
2009075337.tif 000022
2009075337.tif 000023
2009075337.tif 000024