(57)【要約】【課題】拡張フェイステル構造をとる暗号としてのＭＡＲＳやＲＣ６においては、強度を保つのに必要な多段構造により処理速度が低下する欠点があり、膨大な大容量データを短時間で処理するデータ暗号処理には不利となる課題がある。【解決手段】１ブロック分のデータを分岐処理にて分岐し、前記分岐したデータを前処理関数ＰＩ（必要なら鍵依存）で変換する。さらにフェイステルブロック処理において、前記変換処理結果に対し基本ツインフェイステル合成構造、ダブルツインフェイステル合成構造、またはマルチラインフェイステル構造により撹乱する。そして、前記撹乱した出力を交換し、前記交換した出力を逆ＰＩ変換のＰＦ関数（必要なら鍵Ｋ０依存）で変換し、前記変換した出力を合成（逆分岐）する。【選択図】        図６
2004334112.tif 000002
【特許請求の範囲】
【請求項１】
秘密鍵を用いてデータを暗号化する暗号器であって、
１ブロック分のデータを分岐する分岐処理手段と、
前記分岐処理手段により分岐したデータを前処理関数で変換処理する変換処理手段と、
前記変換処理手段による処理結果に対し、インボリューション構造にこだわらないフェイステルブロックにより撹乱するフェイステルブロック処理手段と、
前記フェイステルブロック処理手段により撹乱した出力を交換する交換処理手段と、
前記交換処理手段により交換した出力を前記変換処理に対する逆変換の後処理関数で変換する逆変換処理手段と、
前記逆変換処理手段により変換した出力を合成する合成処理手段と、
を備えたことを特徴とする暗号器。
【請求項２】
前記フェイステルブロックは、２ラインフェイステル構造を拡張し、高速性と強さを兼ねるための所定の制約のもとに規定される関数を用いた基本ツインフェイステル合成構造、ダブルツインフェイステル合成構造、またはマルチラインフェイステル構造のいずれかであることを特徴とする請求項１記載の暗号器。
【請求項３】
前記フェイステルブロックは、２ラインフェイステル構造を拡張し、高速性と強さを兼ねる任意の関数を用いた基本ツインフェイステル合成構造、ダブルツインフェイステル合成構造、またはマルチラインフェイステル構造のいずれかであることを特徴とする請求項１記載の暗号器。
【請求項４】
前記制約のもとに規定される関数は、相異なる内部関数と外部関数は、少なくとも２つ設けられているツイン構造をとるものであることを特徴とする請求項２記載の暗号器。
【請求項５】
前記制約のもとに規定される関数は、内部関数が、非線形ビット撹乱特性が全ビットまたはその半数まで及ぶものであることを特徴とする請求項２記載の暗号器。
【請求項６】
前記制約のもとに規定される関数は、ライン合成用外部関数が１ライン非線形可逆変換関数であることを特徴とする請求項２記載の暗号器。
【請求項７】
前記制約のもとに規定される関数は、ライン合成用外部関数が、少なくとも１つの落とし戸付き可逆関数を含むことを特徴とする請求項２記載の暗号器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、秘密鍵を用いてデータを暗号化する暗号器に関する。
【０００２】
【従来の技術】
現在、パーソナルコンピュータの性能が飛躍的に高くなり、ＣＰＵの動作速度もＧＨｚオーダとなって極めて高い処理能力を持つに至っている。その性能の進歩は１年で倍になるほどの状況であり、２００５年ごろには１０ＧＨｚ／２０ＧＨｚで動作することが技術的に予定されている。このようなことから、高度で複雑な処理や高速性が要求される各種リアルタイム変換処理や大容量高速データ処理も非常に安価にソフトウェア処理だけで可能になっている。
ソフトウェアプロセッシングでは、データ変換、データ符号化、データベース化が任意に統合化されて処理可能になる利点は大きい。
【０００３】
また、現在、高速インターネット、ＣＡＴＶおよびＡＤＳＬなどが普及し、大容量のデータをインターネットで交換できるブロードバンドネット時代になってきている。そして、パーソナルコンピュータとハードディスクなどの記録システムも、その容量はテラバイト領域に入って、ビデオ映像などの巨大なファイルを大量に処理し保存できるようになっている。
【０００４】
しかしながら、インターネットとパーソナルコンピュータの普及に伴いウィルスやデータ盗難などのセキュリティ性が問題となっており、完璧なセキュリティは非常に困難であることから、基本的に全データを暗号化して保存することが求められているが、多種大量のデータでは暗号ソフトウェアの速度と解読に際しての安全性が問題となる。
【０００５】
なお、大容量データとしては、ロッシー圧縮前の生データ、編集後の最高品質で最高価格なディジタル原画（デジカメやＣＧ等のＲＧＢ、ＴＩＦＦ等の原画）があり、これをロスレス圧縮したものもある。無損失な原画の販売ビジネスは高価で有望であるが、違法にコピーされた場合には原画であるが故の不利益も大きく、このためロスレス圧縮原画のように価値の高いコンテンツであればあるほど暗号によるガードが必要になってくる。
このような原画は大容量であることから、ロスレス圧縮しても暗号処理には高速化が必須であり、さらに暗号解読に対する強度向上も必須な状況である。
【０００６】
図１０は、従来の秘密鍵暗号の代表的な構造例としての基本構造を示すブロック図である。大きく分けて３つのブロックからなり、例えば、最も代表的なＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）の場合には、初期処理（Ｐｒｅ−Ｐｒｏｃｅｓｓ）５１がビット置換を含むΤ、ブロック処理（Ｂｌｏｃｋ  Ｐｒｏｃｅｓｓ）５２が１６段のフェイステル構造、後処理（Ｐｏｓｔ−Ｐｒｏｃｅｓｓ）５３がビット逆置換を含むΤ−１である。
初期処理５１では、６４ｂｉｔのブロック入力が３２ｂｉｔごとに左（Ｌ）と右（Ｒ）へ分岐される。後処理５３では、逆置換後に各３２ｂｉｔが６４ｂｉｔに合成（逆分岐Ｂｒ−１）されて出力される。
【０００７】
図１１は、ＤＥＳのフェイステル構造を示すブロック図である。ＤＥＳのフェイステル構造は、図１１に示すように片関数結合６１と交換６２により構成されている。関数の内部は、第１拡大置換Τ１（Ｒ＿ｍ）、鍵とＸＯＲ結合ΤＫ（Τ１，Ｋ）＝Τ１＋Ｋ、およびＳ−ＢｏｘＳ（Τ１＋Ｋ）、最後に置換Τ２（Ｓ）で関数ｆが構成される。これを連結式で書けばｆ（Ｋ＿ｍ，Ｒ＿ｍ）＝Τ２・Ｓ・ＴＫである。
ブロック部分を関数Ｇｍで示せば、Ｇｍ（Ｋ＿ｍ，Ｒ＿ｍ，Ｌ＿ｍ）＝Ｓｗａｐ（Ｒ＿ｍ，Ｌ＿ｍ＋ｆ（Ｋ＿ｍ，Ｒ＿ｍ））であり、総合ＧはＧｍの多段で構成され、
Ｇ＝Ｓｗａｐ・Ｇｍ・Ｇｍ−１・．．．．・Ｇ２・Ｇ１
Ｇ≡Ｇ−１の合同関係となる。
【０００８】
また、Ｓ−Ｂｏｘは８ブロックからなり、１ブロックは６ｂｉｔを４ｂｉｔに変換する非線形な関数である。ＤＥＳの強さはこの非線形なＳ−Ｂｏｘの特性にあるといわれているが、入力のビット変化に対して出力のそれは少なくランダム特性が低い。
このランダム特性を向上させるために、このフェイステル構造が１６段構成されており、各段に鍵スケジュールにおいて生成された固有の鍵が与えられる。この１６段の処理によりデータは撹乱され、ビットランダム性では、理想乱数に対して９０％以上の確率で擬似乱数に変換される。そのためにＤＥＳは非常に強い暗号として２０年以上の暗号耐性を保っている。
【０００９】
ＤＥＳ処理の全体を関数Ｆで示せば、平文Ｄ、鍵Ｋにて
Ｃ＝Ｆ（Ｄ．Ｋ）＝Ｂｒ−１・Τ−１・Ｇ・Ｂｒ・Τ
である。
復号では、
Ｄ＝Ｆ（Ｃ．Ｋ）＝Ｂｒ−１・Τ−１・Ｇ−１・Ｂｒ・Τ
であり、
Ｇ≡Ｇ−１  の関係から、
Ｆ≡Ｆ−１  の合同関係になる。
このように、暗号化と復号化で同じ構造をもつような構造をインボリューション構造という。このインボリューション構造は、過去のハードウェアプロセッシングの時代において、同一ＬＳＩを用いて暗号化と復号化が可能であり便利であったが、そのための強い制約により設計自由度が犠牲になる。現在および未来においてソフトウェアプロセッシングが有利になる時代では、このような制約はほとんど意味を失う。
【００１０】
ところでこのようなＤＥＳの構造には、ビット置換が多用されているためにこれをそのままソフトウェアで作成すると多重ループ処理の非常に遅い処理になる欠点がある。また、Ｓ−Ｂｏｘビット撹乱効果が少なく多段構成を必要とし、処理速度が低下する欠点がある。
さらにＤＥＳでは、鍵のビット数が５６ｂｉｔと短いために、ＣＰＵ性能が向上した現代では鍵総当たり手法でも短時間で解読される。この総当たり手法は、全ての可能な鍵を与え、適当な既知入力に対する出力と既知出力とを比較して解読する手法である。
【００１１】
このようにＤＥＳの構造自体は強いが鍵が短いという欠点があり、強度を増加させるためにＤＥＳを３回繰り返すＴｒｉｐｌｅ  ＤＥＳが知られている。しかしながら、このＴｒｉｐｌｅ  ＤＥＳは処理速度が非常に遅い上に鍵の長さも１１２ｂｉｔと少なく、１２８ｂｉｔ以上が要求されている場合には実用上対応できない。
また、ＤＥＳはブロック処理のビット数が６４ｂｉｔであるが、これを４ラインへ分岐し、１２８ｂｉｔへ拡張して多段処理する場合がある。図１２は、この多段処理する場合のブロック図である。これは、拡張フェイステルブロック暗号であるが、ＤＥＳの欠点はそのまま保存されている。
【００１２】
このようなＤＥＳの欠点を改善するために、最近、ＤＥＳに変わる次世代の標準ブロック暗号として募集評価されてＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が制定された。ＡＥＳとして選定された暗号化技術ラインダール（Ｒｊｎｄａｅｌ）は、ＧＦ（２）と拡大体ＧＦ（２＾８）上の可逆演算を利用し、実用処理としては単純なＬＵＴだけで処理をなすＳＰＮ構造である。ＳＰＮ構造はフェイステル構造とは異なり、ラインが交差しながら変換と撹乱が進む。ＡＥＳのＳ−Ｂｏｘとしては、ＤＥＳとは大きく異なる構造として、可逆構造、ＬＵＴ変換が容易な８ｂｉｔ変換構造を特徴とする。
【００１３】
一方、最終ＡＥＳ候補の中に拡張フェイステル構造をとる暗号としてＭＡＲＳやＲＣ６がある。図１３は、前記拡張フェイステル構造を示すブロック図である。このような拡張フェイステル構造は、４段で一巡する構造であるが故に、強度を保つには多段構造を必要とする。
【００１４】
他方、最終ＡＥＳ候補の中に擬似フェイステル構造をとる暗号としてＴｗｏｆｉｓｈがある。例えば、１２８ｂｉｔデータを４つの３２ｂｉｔデータに分割し、その２つを独立にＳ−Ｂｏｘ等で変換し、他のＬｉｎｅへ合成する直前で加合する。完全なフェイステル構造ではないが、ほぼフェイステル構造（擬似フェイステル構造）とみなせる（例えば論文１参照）。
【００１５】
【論文１】
ｈｔｔｐ：／／ｃｓｒｃ．ｎｉｓｔ．ｇｏｖ／ｅｎｃｒｙｐｔｉｏｎ／ａｅｓ／
【００１６】
【発明が解決しようとする課題】
従来のフェイステル暗号および暗号処理方法は以上のようなものであり、ＤＥＳの欠点を改善する前記暗号化技術ラインダールの構造は、現代的解読手法の代表である差分攻撃や線形攻撃に対しては強いことが知られているが、これらの固有構造に対する攻撃手法に対しては未知数であり、最近では、暗号化技術ラインダールのような構造に対して有望な攻撃手法が発表されつつあり、ＡＥＳの暗号強度が問題になりつつあるという課題がある。
【００１７】
また、前記拡張フェイステル構造をとる暗号としてのＭＡＲＳやＲＣ６においては、強度を保つのに必要な多段構造により処理速度が低下する欠点があり、膨大な大容量データを短時間で処理するデータ暗号処理には不利となる課題がある。
【００１８】
また、擬似フェイステル構造をとる暗号としてのＴｗｏｆｉｓｈにおいては、メインの撹乱特性が独立で行われるために総合撹乱作用が低下し、解読危険性を増大させる欠点がある。さらに、８ｂｉｔブロック可逆変換を基盤にする小さなＳ−Ｂｏｘの並列構造は、速度低下と同時にＡＥＳ同類の攻撃を受ける可能性があるという課題がある。
【００１９】
そこで、本発明は、ＤＥＳやＡＥＳとその候補で代表されるような現代暗号、暗号手法の高速化と強度向上を図れる、秘密鍵を用いてデータを暗号化する暗号器を提供することを目的とする。
【００２０】
【課題を解決するための手段】
本発明に係る暗号器は、１ブロック分のデータを分岐する分岐処理手段と、前記分岐処理手段により分岐したデータを前処理関数で変換処理する変換処理手段と、前記変換処理手段による処理結果に対し、インボリューション構造にこだわらないフェイステルブロックにより撹乱するフェイステルブロック処理手段と、前記フェイステルブロック処理手段により撹乱した出力を交換する交換処理手段と、  前記交換処理手段により交換した出力を前記変換処理に対する逆変換の後処理関数で変換する逆変換処理手段と、前記逆変換処理手段により変換した出力を合成する合成処理手段とを備えたことを特徴とする。
【００２１】
本発明の暗号器は、１ブロック分のデータを分岐処理手段により分岐し、前記分岐したデータを変換処理手段により前処理関数で変換処理し、その処理結果に対し、フェイステルブロック処理手段がインボリューション構造にこだわらないフェイステルブロックにより撹乱し、前記撹乱した出力を交換処理手段により交換し、前記交換した出力を逆変換処理手段が前記変換処理に対する逆変換の後処理関数で変換し、前記変換した出力を合成処理手段により合成し、インボリューション保存の制約がある場合の構造の限定化を回避し、特に、高速性と強さを兼ねるための所定の制約のもとに規定される関数を用いることで、秘密鍵を用いてデータを暗号化するＤＥＳやＡＥＳとその候補で代表されるような現代暗号、暗号手法の高速化と強度向上を実現する。
【００２２】
【発明の実施の形態】
一般に現代の暗号手法が満たされる条件は、（１）鍵以外の全ての情報（内部処理等）が公開されていることと（２）その条件にて暗号が計算量的に十分な強さをもつことであり、このような規約が共通に認識されている。つまり、暗号はその処理構造が公開され、しかも全てのデータ（平文、暗号文等）が知られていても鍵が解読されない条件において暗号と認められる。本発明のフェイステル暗号および暗号処理方法は、このような条件を満たす可変構造を持つ秘密鍵暗号に属する。そして、以下の説明において、平文Ｄ、暗号文Ｃ、総合暗号関数Ｆ、鍵Ｋ、前処理関数ＰＩ、ｊ個のライン合成用外部関数ｈ＿ｊ、ｉ個の内部関数ｆ＿ｉ、後処理関数ＰＦ、交換関数Ｓｗａｐ、分岐関数Ｂｒ、左分岐Ｌ、右分岐Ｒ、可変係数Ｖ、段の番号ｍ、関数直結結合を″・″で示す。
【００２３】
以下、本発明の実施の一形態について説明する。
先ず、基本的な暗号器としての基本構造を説明する。
図１は、この実施の形態の暗号器の基本構造を説明するためのブロック図である。この暗号器の基本構造は、データ入力（Ｄ，Ｃ′）と、鍵（Ｋ０，Ｋ１）に依存して定められる。ここで、もしＫ０＝Ｋ１なら、１つの鍵による暗号を形成する。本発明のフェイステル暗号および暗号処理方法の以下に示す全実施の形態においてはそれを限定しない。図１に示す暗号器の基本構造は３つのブロックに別れており、前処理部（分岐処理手段、変換処理手段）１とラインフェイステルブロック処理部（フェイステルブロック処理手段、交換処理手段）２と後処理部（逆変換処理手段、合成処理手段）３である。
【００２４】
先ず前処理部１について説明すると、この前処理部１は、適当な可逆関数ＰＰ（Ｋ１，Ｂｒ（Ｄ））により、全体の結合関数ＰＩとしてＰＩ＝ＰＰ・Ｂｒであり、逆関数ＰＩ−１＝Ｂｒ−１・ＰＰ−１である。
【００２５】
次に、ラインフェイステルブロック処理部２について説明する。
このラインフェイステルブロック処理部２のラインフェイステルブロック処理には、２ラインフェイステル構造とマルチラインフェイステル構造とがある。
図２は２ラインフェイステル構造を示すブロック図である。この２ラインフェイステル構造は、一般的に、従来技術でも説明した図１１に示す構造と、図２に示す構造がある。これら図２と図１１に示す２ラインフェイステル構造を式で示す。
適当な非線形内部関数ｆ（Ｋ，Ｒ）を含めて結合関数を新たにｆ（Ｋ，Ｒ，Ｌ）＝（ｆｒ，ｆ１）、ｆ１＝ｆ（Ｋ，Ｒ）により、ｍ段にての関数Ｇｍは、片結合の場合、Ｇｍ＝Ｓｗａｐ｛Ｒｍ，Ｌｍ＋ｆ１ｍ｝である。一般的な直接関数結合の場合は、Ｇｍ＝Ｓｗａｐ｛ｆＲ（ｍ＋１），ｆＬ（ｍ＋１）｝である。但し、（ｆＲ（ｍ＋１），ｆＬ＿ｍ＋１）＝ｆ（Ｒ＿ｍ，Ｌ＿ｍ）
【００２６】
図１１に示す２ラインフェイステル構造は完全なインボリューション構造であるが、他方は条件付きインボリューションである。また、図１１に示す２ラインフェイステル構造では、１つのＸＯＲ結合であるために差分線形解読に対して攻撃を受け易い構造となっている。他方の構造は、ＸＯＲ結合である２ラインフェイステル構造よりも攻撃に対し強そうに思われるが、実際はインボリューション保存の制約があると構造が限定され易い。
しかし、ハードウェアでなくソフトウェアプロセッシングが優勢な状況下では、インボリューションである制約においては実用上の問題が少ない。つまり、ソフトウェアプロセッシングが主体であるこの実施の形態のフェイステル暗号および暗号処理方法においては、必ずしもインボリューション構造にこだわる必要がない。また、この実施の形態のフェイステル暗号および暗号処理方法では、暗号の強さと高速性に重点を置いているためにインボリューション構造を有しているか否かは任意であり、関数の選定は非常に広くなり、無限数の関数が予想される。
また、この実施の形態のフェイステル暗号および暗号処理方法は、現状において強いとみなされている暗号のフェイステル構造を保存した状態でのさらなる強化を提案するものである。
【００２７】
先ず、従来よく利用されている図１１に示すＸＯＲ結合である２ラインフェイステル構造を内在するように拡張する。つまり、図２に示す２ラインフェイステル構造の利点と、図１１に示すＸＯＲ結合である２ラインフェイステル構造の利点を合わせた構造を持つようにし、かつ高速性と強さの両方を兼ねる関数を用いる。
【００２８】
この構造に該当する関数は、インボリューション制約を破棄することで無数に存在するが、この実施の形態では実用的な図３および図４に示す２ライン型の構造を例に説明する。図３は、この２ライン型の構造を示すブロック図である。図３に示す２ライン型の構造は基本ツインフェイステル合成構造、図４に示す２ライン型の構造はダブルツインフェイステル合成構造である。
【００２９】
先ず、図３に示す基本ツインフェイステル合成構造について説明する。図中の関数は無数に存在するが、ここでは次の制約を設ける。
制約１．相異なる内部関数と外部関数は、少なくとも２つ設けるツイン構造をとる。
制約２．内部関数は、非線形ｂｉｔ撹乱特性が全ｂｉｔまたはその半数までに及ぼす。
制約３．ライン合成用外部関数ｈは１ライン非線形可逆変換関数。
制約４．ｑはマルチライン非線形可逆変換関数。
制約５．ライン合成用外部関数ｈまたはｑの関数は、少なくとも１つの落とし戸付き可逆関数を含む。これら関数は、当然ながら高速なものが推奨される。
ｍ段目において図３での関係式は、
ｆ１＝ｆ１（Ｒｍ，Ｋｍ），ｆ２＝ｆ１（Ｒｍ，Ｋｍ），ｆ３＝ｆ３（Ｒｍ，Ｋｍ）
Ｌｍ′＝ｈ１（ｆ１，Ｌｍ）ｍＬｍ″＝ｈ２（ｆ２，Ｌｍ′）
ｇｍ（Ｋｍ，Ｒｍ，Ｌｍ）＝ｑ（ｆ３，Ｒｍ，Ｌｍ″）
である。ここで、ｆ３は制約２によって省略が許される。
総合Ｇｍ＝Ｓｗａｐ・ｇｍ＝Ｓｗａｐ（ｑ（ｆ３（Ｒｍ，Ｋｍ），Ｒｍ，ｈ２（ｆ２（Ｒｍ，Ｋｍ），ｈ１（ｆ１（Ｒｍ，Ｋｍ），Ｌｍ））））であり、
逆変換は、
Ｇｍ−１＝ｇｍ−１・Ｓｗａｐ
メタ表現すれば、
ｇｍ−１＝ｑ−１（ｆ３（Ｒｍ，Ｋｍ），Ｒｍ，ｈ２−１（ｆ２（Ｒｍ，Ｋｍ），ｈ１−１（ｆ１（Ｒｍ，Ｋｍ），Ｌｍ）））でありインボリューションではない。
Ｍ段での総合は、
Ｇ＝Ｓｗａｐ・ＧＭ・．．・Ｇｍ・．．・Ｇ１の逆変換Ｇ−１＝Ｇ１−１・．．・ＧＭ−１・Ｓｗａｐである。
【００３０】
次に、ダブルツインフェイステル合成構造について説明する。
図４は、このダブルツインフェイステル合成構造を示すブロック図である。前記各制約のもとで、ダブル構造にて全ライン合成を１段で実現する。ｍ段目において、図４での関係式は、前記の式より、
ｆ１＝ｆ１（Ｒｍ，Ｋ１ｍ），ｆ２＝ｆ１（Ｒｍ，Ｋ１ｍ），ｆ３＝ｆ３（Ｒｍ，Ｋ１ｍ）
Ｌｍ′＝ｈ１（ｆ１，Ｌｍ）ｍＬｍ″＝ｈ２（ｆ２，Ｌｍ′）
ｇ１ｍ（Ｋ１ｍ，Ｒｍ，Ｌｍ）＝（Ｒｍ，Ｌｍ″）
これらの関数を″′″で継続させれば、
ｇ２ｍ＝ｇ２ｍ（Ｋ２ｍ，Ｓｗａｐ（ｇ１ｍ））＝ｇ２ｍ（Ｋ２ｍ，Ｓｗａｐ（Ｒｍ，Ｌｍ″））＝ｇ２ｍ（Ｋ１ｍ，Ｋ２ｍ，ｒｍ，Ｌｍ）＝（Ｒｍ″，Ｌｍ″）
総合ｇｍは、
ｇｍ（Ｋ１ｍ，Ｋ２ｍ，Ｒｍ，Ｌｍ）＝ｑ（ｆ３，ｆ３′，Ｒｍ″，Ｌｍ″）である。ここで、ｆ３とｆ３′は制約２によって省略が許される。
総合Ｇｍ＝Ｓｗａｐ・ｇｍ＝Ｓｗａｐ・ｑ・ｇ２ｍ・Ｓｗａｐ・ｇ１ｍ
ｇ１ｍ＝ｇ１ｍ（Ｒｍ，ｈ２（ｆ２（Ｒｍ，Ｋ１ｍ），ｈ１（ｆ１（Ｒｍ，Ｋ１ｍ），Ｌｍ））））
ｇ２ｍ＝ｇ２ｍ（Ｌｍ″，ｈ２′（ｆ２′（Ｌｍ″，Ｋ２ｍ），ｈ１′（ｆ１′（Ｌｍ″，Ｋ２ｍ），Ｒｍ））））
であり、
逆変換は、
Ｇｍ−１＝ｇｍ−１・Ｓｗａｐ＝ｇ１ｍ−１・Ｓｗａｐ・ｇ２ｍ−１・ｑ−１・Ｓｗａｐ
メタ表現すれば、
ｇ１ｍ−１＝ｇ１ｍ−１（Ｒｍ，ｈ２−１（ｆ２（Ｒｍ，Ｋ１ｍ），ｈ１−１（ｆ１（Ｒｍ，Ｋ１ｍ），Ｌｍ））））
ｇ２ｍ−１＝ｇ１ｍ−１（Ｌｍ″，ｈ２−１（ｆ２（Ｌｍ″，Ｋ２ｍ），ｈ１−１（ｆ１（Ｌｍ″，Ｋ２ｍ），Ｒｍ）））
でありインボリューションではない。
Ｍ段での総合は、
Ｇ＝Ｓｗａｐ・ＧＭ・．．・Ｇｍ・．．・Ｇ１の逆変換Ｇ−１＝Ｇ１−１・．．・ＧＭ−１・Ｓｗａｐである。
【００３１】
次に、マルチラインフェイステル構造について説明する。
図３に示す基本ツインフェイステル合成構造をマルチラインフェイステル構造でも表現できる。図５は、このマルチラインフェイステル構造を示すブロック図である。ここでは４ラインの場合を例にして説明するが、これに限定されるものではない。
図５においては、図３および図４に示す２ラインの各ラインを単純に２分割したものである。そして、内部関数への入力を分割ライン入力とするのみであり、２ライン入力を内部関数でランダムに混合し、２分割して出力する。
この構造から前記した関数をそのまま利用可能であり、これらの説明は省略する。
【００３２】
次に後処理部３について説明する。
この後処理部３では後処理関数ＰＦとしてＰＦ＝Ｂｒ−１・ＰＰ−１が定められている。
【００３３】
次に、全体の処理について説明する。
暗号化Ｃ＝Ｆ（Ｄ，Ｋ）＝ＰＦ・Ｇ・ＰＩ＝Ｂｒ−１・ＰＰ−１・Ｇ・ＰＰ・Ｂｒ
復号化Ｄ＝Ｆ（Ｃ，Ｋ）＝Ｂｒ−１・ＰＰ−１・Ｇ−１・ＰＰ・Ｂｒ
以上のような暗号化処理および復号化処理が基本構造であり、前記各制約のもとでの各関数は無数に存在し、実際の応用では、適時、速度と強さを評価して決定する。
例えば、簡素な例として、データ入力（ｘ，ｙ）、鍵ｋにおいて、暗号分野においてさまざまに利用されている関数を用い、ｈ１を適当なモジュロ演算関数Ｍｏｄ（ｘ，ｙ）、ｈ２を落とし戸Ａ付き入力適応Ｓｈｉｆｔ関数ＳｈｉｆｔＡ（ｘ，ｙ）、ｆ１をＸＯＲと非可逆制限付きＮ次Ｍ連アフィン変換Ｌｉｍｉｔ｛ΠＡｆｆｉｎｅＮ（ｘＸＯＲｋ）｝、ｆ２をｆ１とＳｈｉｆｔ（ｆ１，ｘＸＯＲｋ）、ｑを低次可逆ウエーブレット変換Ｗｄｔ（ｘ，ｙ）で構成する。ｆ３は省略する。
すると、次の関係式になる。
総合Ｇｍ＝Ｓｗａｐ・ｇｍ＝Ｓｗａｐ（Ｗｄｔ（Ｒｍ，ＳｈｉｆｔＡ（ＳｈｉｆｔＡ（Ｒｍ，Ｋｍ），Ｍｏｄ（Ｌｉｍｉｔ｛ΠＡｆｆｉｎｅＮ（ＲｍＸＯＲＫｍ）｝，Ｌｍ））））
このような演算は、非常に高速に処理され、しかもビット撹乱は全ビットへ波及する。そして、内部関数による全ビット撹乱効果と鍵解読困難性の両立を達成するとともに、外部関数による落とし戸付き直列変換作用により、少ない段数においても実現可能となり、高速化と強度向上を図れる特性が得られ易い。
【００３４】
図６は、この実施の形態の暗号器における暗号処理方法の動作を示すフローチャートである。以下、このフローチャートに従って暗号処理方法を説明する。
先ず、初期化処理を行う（ステップＳ１）。この初期化処理では、ループ処理のための入力データ容量を取得し、適当なデータバッファを作成しデータをそのデータバッファへ読み込み、さらに鍵を鍵スケジュールにより設定し、またその他の必要な系の初期パラメータの設定などのイニシャライズを行う。
【００３５】
続いて、必要であるなら鍵による各関数係数の設定を行う（ステップＳ２）。このステップＳ２は変換係数の鍵依存設定を行うステップであり、あらかじめ関数の計算構造はさまざまに選定されている。そして、鍵によって各係数を適時に決定する。この決定方法は無数に存在するためその方法は限定しない。
【００３６】
続いてループ処理を行う（ステップＳ３）。このループ処理では、例えば１２８ビットの１ブロック分のデータを前記初期化処理で作成したデータバッファから読み込む。また、このループ処理は、分岐処理（ステップＳ３１、分岐処理手段）、ＰＩ変換処理（ステップＳ３２、変換処理手段）、フェイステルブロック処理（ステップＳ３３、フェイステルブロック処理手段）、交換処理（ステップＳ３４、交換処理手段）、逆ＰＩ変換処理（ステップＳ３５、逆変換処理手段）、合成処理（ステップＳ３６、合成処理手段）を含む。また、このループ処理では、図３に示す基本ツインフェイステル合成構造、図４に示すダブルツインフェイステル合成構造、または図５に示すようなマルチラインフェイステル構造により処理する。
分岐処理（ステップＳ３１）では、１ブロック分のデータを分岐する。ＰＩ変換処理（ステップＳ３２）では、前記分岐したデータを前処理関数ＰＩ（必要なら鍵依存）で変換する。これら分岐処理（ステップＳ３１）とＰＩ変換処理（ステップＳ３２）は図１の基本構造で説明した前処理部１で行う処理である。
フェイステルブロック処理（ステップＳ３３）では、前記ステップＳ３２の処理結果に対し図３に示す基本ツインフェイステル合成構造、図４に示すダブルツインフェイステル合成構造、または図５に示すようなマルチラインフェイステル構造により撹乱する。交換処理（ステップＳ３４）では、前記撹乱した出力を交換する。これらステップＳ３３とステップＳ３４の処理はラインフェイステルブロック処理部２で行う処理である。
逆ＰＩ変換処理（ステップＳ３５）では、前記ステップＳ３４で交換した出力を逆ＰＩ変換のＰＦ関数（必要なら鍵Ｋ０依存）で変換する。合成処理（ステップＳ３６）では、前記変換した出力を合成（逆分岐）する。これらステップＳ３５とステップＳ３６で行う処理は後処理部３で行う処理である。
そして、前記合成した例えば１２８ビットの１ブロック分のデータを前記バッファに書き込む。または、必要ならストリームデータとして出力する。そして、前記初期化処理で取得したデータ容量以内ならループを繰り返し、そうでなければ次のステップＳ３８へ進む（ステップＳ３７）。ステップＳ３８は後処理であり、書込みバッファをファイルへ書き込むか、または必要ならストリームデータとして全て出力し、バッファを削除する。
【００３７】
図７、図８および図９は、実験的に得られたビット撹乱分散特性を示す特性図であり、図７は高速関数型ＤＥＳ暗号の２段でのビット撹乱分散特性、図８はＡＥＳ候補で最も高速であったＲＣ６暗号の２段によるビット撹乱分散特性である。図９は、図３に示した基本ツインフェイステル合成構造の２段でのビット撹乱分散特性、または図４に示したダブルツインフェイステル合成構造の１段でのビット撹乱分散特性である。
図７、図８および図９のビット撹乱分散特性から明らかなように、図７の高速関数型ＤＥＳ暗号の２段でのビット撹乱分散特性は最も悪く、図８のＲＣ６暗号の２段によるビット撹乱分散特性は双峰特性を示しておりビット撹乱分散特性が不利であるのに対し、図９に示す基本ツインフェイステル合成構造の２段でのビット撹乱分散特性、またはダブルツインフェイステル合成構造の１段でのビット撹乱分散特性においては、ビット撹乱分散特性は最も良好であり、１段でも理想ランダム特性に接近した特性が得られている。
【００３８】
前記各ビット撹乱分散特性から明らかなように、図９に示すこの実施の形態のフェイステル暗号は、最も少ない段数で強いランダム特性が得られている。このランダム特性は、前記制約条件を満たしつつ現代解読耐性を持つような関数のもとで得られるものである。従って、従来よりも安全性と高速化を同時に満たす暗号が期待できる。
【００３９】
なお、以上の実施の形態により説明した本発明に係る暗号器によるフェイステル暗号および暗号処理方法は、主にソフトウェアプロセッシング分野をターゲットにしており、Ｃ／Ｃ＋＋言語およびアセンブラ言語での評価を対象とするが、アセンブラの場合にはより高速（図よりも数倍高速）な速度が期待できるものの、プラットフォームに依存するという欠点がある。そして、ソフトウェア処理であっても１ＧＨｚのＣＰＵでの実装速度を数１０Ｍから１００ＭＨ／ｓ程度、リアルタイム圧縮と同時に１２８ｂｉｔ鍵で暗号化しても強度と速度を満たす事が期待できる。但し、総合速度はＣＰＵの速度のみならず、メモリ状態（仮想メモリ等）やＨＤＤの速度も関係するが、ＨＤＤが１００ＭＢ／ｓ以上の現在以降では、大規模バックアップなどでの暗号処理も１００ＭＢ／ｓ程度の速度が望まれ、このフェイステル暗号および暗号処理方法の効用が期待される。
【００４０】
以上のように、この実施の形態によれば、現状において強いとみなされている暗号のフェイステル構造を保存した状態でのさらなる高速化と強化が期待できるフェイステル暗号および暗号処理方法を実現した暗号器を提供できる効果がある。
【００４１】
【発明の効果】
本発明によれば、１ブロック分のデータを分岐する分岐処理手段と、前記分岐処理手段により分岐したデータを前処理関数で変換処理する変換処理手段と、前記変換処理手段による処理結果に対し、インボリューション構造にこだわらないフェイステルブロックにより撹乱するフェイステルブロック処理手段と、前記フェイステルブロック処理手段により撹乱した出力を交換する交換処理手段と、前記交換処理手段により交換した出力を前記変換処理に対する逆変換の後処理関数で変換する逆変換処理手段と、前記逆変換処理手段により変換した出力を合成する合成処理手段とを備えるように構成したので、インボリューション保存の制約がある場合の構造の限定化が回避でき、また、高速性と強さを兼ねるための所定の制約のもとに規定される関数を用いることで、秘密鍵を用いてデータを暗号化するＤＥＳやＡＥＳとその候補で代表されるような現代暗号、暗号手法の高速化と強度向上を図れる効果がある。
【図面の簡単な説明】
【図１】この発明の実施の一形態の暗号器の基本構造を説明するためのブロック図である。
【図２】この発明の実施の一形態における２ラインフェイステル構造を示すブロック図である。
【図３】この発明の実施の一形態における２ライン型の構造を示すブロック図である。
【図４】この発明の実施の一形態におけるダブルツインフェイステル合成構造を示すブロック図である。
【図５】この発明の実施の一形態におけるマルチラインフェイステル構造を示すブロック図である。
【図６】この発明の実施の一形態の暗号器における暗号処理方法の動作を示すフローチャートである。
【図７】高速関数型ＤＥＳ暗号の２段でのビット撹乱分散特性を示す特性図である。
【図８】ＡＥＳ候補で最も高速であったＲＣ６暗号の２段によるビット撹乱分散特性を示す特性図である。
【図９】基本ツインフェイステル合成構造の２段でのビット撹乱分散特性、またはダブルツインフェイステル合成構造の１段でのビット撹乱分散特性を示す特性図である。
【図１０】従来の秘密鍵暗号の代表的な構造例としての基本構造を示すブロック図である。
【図１１】ＤＥＳのフェイステル構造を示すブロック図である。
【図１２】ブロック処理のビット数６４ｂｉｔを４ラインへ分岐し、１２８ｂｉｔへ拡張して多段処理する場合のブロック図である。
【図１３】拡張フェイステル構造を示すブロック図である。
【符号の説明】
１……前処理部（分岐処理手段、変換処理手段）、２……ラインフェイステルブロック処理部（フェイステルブロック処理手段、交換処理手段）、３……後処理部（逆変換処理手段、合成処理手段）、ステップＳ３１……分岐処理（分岐処理手段）、ステップＳ３２……ＰＩ変換処理（変換処理手段）、ステップＳ３３……フェイステルブロック処理（フェイステルブロック処理手段）、ステップＳ３４……交換処理（交換処理手段）、ステップＳ３５……逆ＰＩ変換処理（逆変換処理手段）、ステップＳ３６……合成処理（合成処理手段）。
【図１】
2004334112.tif 000003
【図２】
2004334112.tif 000004
【図３】
2004334112.tif 000005
【図４】
2004334112.tif 000006
【図５】
2004334112.tif 000007
【図６】
2004334112.tif 000008
【図７】
2004334112.tif 000009
【図８】
2004334112.tif 000010
【図９】
2004334112.tif 000011
【図１０】
2004334112.tif 000012
【図１１】
2004334112.tif 000013
【図１２】
2004334112.tif 000014
【図１３】
2004334112.tif 000015