(57)【特許請求の範囲】
【請求項１】
入力データを初期分割手段で二つの部分データに分割し、これら部分データの一つに対し、非線形関数手段で鍵記憶手段に蓄積された鍵データに依存したデータ変換処理を行い、その非線形関数手段の出力データを前記部分データの他方の一つに線形演算手段で作用させ、その線形演算手段の出力データと前記非線形関数手段の入力部分データとの配列順番を交換手段で交換し、前記交換手段よりこの交換されたデータを二つの部分データとして前記非線形関数手段と、前記線形演算手段と前記交換手段とを繰返し手段で複数回繰返し、前記繰返し手段の最終回の繰返しにおける前記交換手段よりの二つのデータを一つの出力データに最終結合手段で結合して、その出力データを出力する暗号装置において、
前記非線形関数手段は、入力されたデータに前記鍵記憶手段に蓄積された鍵データに基づいて線形変換を行う鍵依存線形変換手段と、
その鍵依存線形手段の出力データを複数個のビット列に分割する分割手段と、
これらビット列にそれぞれ非線形変換を行う第一の非線形変換手段と、
前記第一の非線形変換手段のそれぞれの出力ビット列間で線形変換を行う第一の線形変換手段と、
その第一の線形変換手段の出力ビット列の少くとも一部に非線形変換を行う第二の非線形変換手段と、
その第二の非線形変換手段の出力ビット列を結合して前記非線形関数手段の出力データとする結合手段とを備えることを特徴とする暗号装置。
【請求項２】
請求項１に記載の暗号装置において、
前記結合手段の出力データを線形変換して前記非線形関数手段の出力データとする第二の線形変換手段を備えることを特徴とする暗号装置。
【請求項３】
請求項１または請求項２に記載の暗号装置において、
前記第一の線形変換手段は、前記鍵記憶手段に蓄積された鍵データに基づいて線形変換を行う手段であることを特徴とする暗号装置。
【請求項４】
請求項２に記載の暗号装置において、
前記第二の線形変換手段は、前記鍵記憶手段に蓄積された鍵データに基づいて線形変換を行う手段であることを特徴とする暗号装置。
【請求項５】
請求項１から請求項４までのいずれかに記載の暗号装置において、
前記入力データに線形変換を行って前記初期分割手段へ供給する初期線形変換手段を備えることを特徴とする暗号装置。
【請求項６】
請求項１から請求項５までのいずれかに記載の暗号装置において、
前記最終結合手段の出力データに線形変換を行って暗号装置の出力とする最終線形変換手段を備えることを特徴とする暗号装置。
【請求項７】
請求項５または請求項６に記載の暗号装置において、
前記初期線形変換手段は前記鍵記憶手段に蓄積された鍵データに基づいて線形変換を行う手段であることを特徴とする暗号装置。
【請求項８】
請求項６に記載の暗号装置において、
前記最終線形変換手段は前記鍵記憶手段に蓄積された鍵データに基づいて線形変換を行う手段であることを特徴とする暗号装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データの通信または蓄積において、データを秘匿するための暗号化装置、特に、秘密鍵の制御のもとでデータをブロック単位で暗号化または復号を行う共通鍵暗号方式による暗号化装置に関するものである。
【０００２】
【従来の技術】
データを秘匿するための暗号化装置に含まれる代表的な共通鍵暗号方式には、米国連邦標準暗号であるＤＥＳ（Data Encryption Standard）暗号がある。
図８は、ＤＥＳ暗号の機能構成を示す。ＤＥＳ暗号では、５６ビットの秘密鍵を用い、６４ビットのデータブロック単位に暗号化または復号を行う。図８において、暗号化処理は、平文Ｐの６４ビットを初期変転部１１において初期転値で変換した後、３２ビットごとのブロックデータＬ0 ，Ｒ0 に分割される。次に、Ｒ0 は図９に示す関数演算部１２への入力として用いられ、関数演算部１２において４８ビットの拡大鍵ｋ0 の制御のもとにｆ（Ｒ0 ，ｋ0 ）に変換される。この変換データｆ（Ｒ0 ，ｋ0 ）とＬ0 との排他的論理和を回路１３でとり、さらにその値とＲ0 とを入れ替えて、次のブロックデータＬ1 ，Ｒ1 を生成する。すなわち、Ｒ1 ＝Ｌ0 （＋）ｆ（Ｒ0 ，ｋ0 ），Ｌ1 ＝Ｒ0 である。このように二つのブロックデータＬ0 ，Ｒ0 を入力として演算部１２と排他的論理和回路１３とデータの入れ替えとによりＬ1 ，Ｒ1 を出力する処理段１４0 が構成され、同じような処理段１４1 〜１４15が縦続的に設けられる。つまり各処理段１４i （０＜ｉ＜１６）では、Ｒi+1 ＝Ｌi （＋）ｆ（Ｒi ，ｋi ），Ｌi+1 ＝Ｒi の処理が行われ、最後にＲ16，Ｌ16を統合して６４ビットにした後、最終転値部１５において最終転値で変換して暗号文６４ビットを出力する。復号処理においては、関数ｆに入力する拡大鍵ｋ0 ，ｋ1 ，…，ｋ14，ｋ15の順序だけを逆転させて、ｋ15，ｋ14，…，ｋ1 ，ｋ0 の順に入力するようにする点を除けば、暗号化処理と同じ手順で実行できる。なお、拡大鍵ｋ0 ，ｋ1 ，…，ｋ14，ｋ15は、暗号化処理とは別の拡大鍵生成ルーチン１６で５６ビットの秘密鍵が４８ビットの拡大鍵１６個の計７６８ビットに拡大されることによって生成される。
【０００３】
さて、関数演算内部１２の処理は、図９に示すように行われる。まず、３２ビットのブロックデータＲi は拡大転値部１７で４８ビットデータＥ（Ｒi ）に変換される。これに拡大鍵ｋi とで排他的論理和を回路１８で取り、４８ビットデータＥ（Ｒi ）（＋）ｋi に変換した後、８個の６ビットごとのサブブロックデータに分割する。この８個のサブブロックデータはそれぞれ異なるＳ−ｂｏｘＳ0 〜Ｓ7 に入力され、各々が４ビットの出力を得る。なお、このＳ−ｂｏｘＳj （ｊ＝０，１，…，７）は６ビットの入力データから４ビットの出力データに変換する非線形変換テーブルであり、ＤＥＳ暗号の本質的な安全性を担っている部分である。Ｓ−ｂｏｘＳ0 〜Ｓ7 の８つの出力データは、再び連結されて３２ビットデータになった後、転置変換部１９を経て、図８に示されるように、Ｌi と排他的論理和される関数ｆの出力ｆ（Ｒi ，ｋi ）となる。
【０００４】
次に、暗号解読法について述べる。ＤＥＳ暗号を始めとする従来の共通鍵暗号方式についてはさまざまな方面から暗号解読が試みられており、そのなかでも、極めて効果的な解読法であるのがＥ．Biham およびＡ．Shamirによって提案された差分解読法（“Differential Cryptanalysis of DES-like Cryptosystems. ”Proceedings of CRYPTO'90）と松井によって提案された線形解読法（“ＤＥＳ暗号の線形解読法（Ｉ），”１９９３年暗号と情報セキュリティシンポジウムＳＣＩＳ９３−３Ｃ）である。
【０００５】
差分解読法は、２つのデータＸ，Ｘ* の差分をΔＸ＝Ｘ（＋）Ｘ* としたとき、解読者が入手している平文・暗号文の２組を以下の式に適用して、最終ラウンドにおける拡大鍵ｋ15を求めることを目的としている。
ｆ（Ｌ16，ｋ15)(+)ｆ((Ｌ16(+) ΔＬ16),ｋ15）＝ΔＲ16(+) ΔＲ14
このとき、Ｌ16，ΔＬ16，ΔＲ16は暗号文から得られるデータであるので既知の情報である。このため、解読者がΔＲ14を正しく求めることができるならば、上式はｋ15のみが未知定数となり、既知の平文・暗号文の組を用いてｋ15に関する全数探索を行うことで、解読者は必ず正しいｋ15を見つけだすことができる。一方、ΔＲ14についてみてみると、この値は中間差分値であるため、一般には求めることが困難である。そこで、１ラウンド目から最終ラウンドの一つ前までのラウンド目までにおいて、各ラウンドが確率ｐi でΔＲi+1 ＝ΔＬi （+)Δ｛ｆ（ΔＲi ）｝，ΔＬi+1 ＝ΔＲi+1 のように近似されるとおく。ここでのポイントは、あるΔＲi が入力されたとき、拡大鍵ｋi の値に関わらず、確率ｐi でΔ｛ｆ（ΔＲi ）｝を予測できるということにある。このように近似できるのは、Δ｛ｆ（ΔＲi ）｝に影響を与えるのが非線形な変換であるＳ−ｂｏｘの部分だけであり、しかもＳ−ｂｏｘにおいて、入力差分によっては差分出力の分布に極めて大きな偏りが生じるためである。例えば、Ｓ１−ｂｏｘでは、入力差分「１１０１００」のとき、１／４の確率で出力差分「００１０」に変換されるためである。そこで、各々のＳ−ｂｏｘが確率ｐsiで入力差分と出力差分との関係が予測できるとおき、これらを組み合わせることで各ラウンドの近似を求める。さらに、各ラウンドでの近似を連結していくことで、ΔＲ14は確率Ｐ＝Πｐi でΔＬ0 ，ΔＲ0 （ΔＬ0 ，ΔＲ0 は平文から得られるデータであるので既知の情報である）から求められることになる。なお、この確率Ｐが大きいほど、暗号解読が容易である。このようにして、拡大鍵ｋ15が求められると、今度は１段少ない１５段ＤＥＳ暗号とみなして、同様の手法で、拡大鍵ｋ14を求めていくということを繰り返して、最終的に拡大鍵ｋ0 まで求めていく。
【０００６】
Biham らによると、この解読法では、２47組の選択された既知平文・暗号文の組があればＤＥＳ暗号を解読できるとしている。
また、線形解読法は、以下の線形近似式を構成し、解読者が入手している平文・暗号文の組による最尤法を用いて拡大鍵を求めることを目的としている。
（Ｌ0 ，Ｒ0)・Γ（Ｌ0 ，Ｒ0)(+)(Ｌ16, Ｒ16）・Γ( Ｌ16, Ｒ16）＝（ｋ0 ，ｋ1 ，…，ｋ15）・Γ（ｋ0 ，ｋ1 ，…，ｋ15）
ただし、Γ（Ｘ）はＸの特定のビット位置を選択するベクトルを表し、マスク値という
線形近似式の役割は、暗号アルゴリズム内部を線形表現で近似的に置き換え、平文・暗号文の組に関する部分と拡大鍵に関する部分とに分離することにある。つまり、平文・暗号文の組に関して、平文の特定のビット位置の値と暗号文の特定のビット位置の値との全ての排他的論理和が一定値となり、その値は拡大鍵の特定のビット位置の値の排他的論理和に等しくなることを表している。したがって、解読者は（Ｌ0 ，Ｒ0)・Γ（Ｌ0 ，Ｒ0)(+)(Ｌ16, Ｒ16）・Γ( Ｌ16, Ｒ16）の情報から（ｋ0 ，ｋ1 ，…，ｋ15）・Γ（ｋ0 ，ｋ1 ，…，ｋ15）（１ビット）の情報が得られるということになる。このとき、（Ｌ0 ，Ｒ0)，（Ｌ16，Ｒ16）はそれぞれ平文・暗号文のデータであるので既知の情報である。このため、解読者がΓ（Ｌ0 ，Ｒ0)，Γ（Ｌ16，Ｒ16），Γ（ｋ0 ，ｋ1 ，…，ｋ15）を正しく求めることができるならば、（ｋ0 ，ｋ1 ，…，ｋ15）・Γ（ｋ0 ，ｋ1 ，…，ｋ15）  （１ビット）を求めることができる。
【０００７】
ＤＥＳ暗号では、非線形な変換が起きる部分はＳ−ｂｏｘしかないため、Ｓ−ｂｏｘについてのみ線形表現ができれば、容易に線形近似式が構成できる。そこで、各々のＳ−ｂｏｘが確率ｐsiで線形表現できるとおく。ここでのポイントは、Ｓ−ｂｏｘに対する入力マスク値が与えられたとき、確率ｐsiでその出力マスク値を予測できるということにある。これは、非線形変換テーブルであるＳ−ｂｏｘにおいて、入力マスク値によっては差分マスク値の分布に極めて大きな偏りが生じるためにおこる。例えば、Ｓ５−ｂｏｘでは、入力マスク値「０１００００」のとき、３／１６の確率で出力マスク値「１１１１」が予測されるためである。これらＳ−ｂｏｘにおけるマスク値を組み合わせることによって、各ラウンドが確率ｐi で入力マスク値と出力マスク値のあいだに線形近似することができ、各ラウンドでの線形近似を連結していくことで、Γ（Ｌ0 ，Ｒ0)，Γ（Ｌ16，Ｒ16），Γ（ｋ0 ，ｋ1 ，…，ｋ15）は確率Ｐ＝２n-1 ・Π｜ｐi −1/2 ｜で求められることになる。なお、この確率Ｐが大きいほど、暗号解読が容易である。
【０００８】
松井によると、この解読法で、２43組の既知平文・暗号文の組を用いて、ＤＥＳ暗号の解読に成功している。
さて、上記の解読法に対抗するためには、確率Ｐが十分に小さくなればよい。このため、確率Ｐを小さくするための提案がさまざま行われており、なかでも従来の暗号方式において、もっとも簡単に安全性を高めるための方法がラウンド数を増やすことであった。例えば、ＤＥＳ暗号を３つつなげたTriple-DES暗号は、実質的にＤＥＳのラウンド数を１６段から４８段に増やした暗号方式であり、確率Ｐは、ＤＥＳ暗号よりもはるかに小さい。
【０００９】
【発明が解決しようとする課題】
しかし、上記の解読法に対抗するための対策として、ラウンド数を増加させることは、暗号化速度を犠牲にすることになる。例えば、ラウンド数を３倍に増やせば、暗号化速度は１／３になる。つまり、現在のＤＥＳ暗号の暗号化速度はPentium ＰＣクラスで約１０Ｍｂｐｓであるため、Triple−ＤＥＳ暗号ともなると約３．５Ｍｂｐｓまで暗号化速度が低下する。一方で、ネットワークやコンピュータなどは年々高速化しており、暗号化装置もそれらの高速化に対応したものが望まれている。
【００１０】
このため、従来の暗号装置では、それらの高速化の要求に対して、安全性と高速性を同時に満たすことはきわめて困難な状況になっている。
この発明の目的は、上記の点を鑑みなされたもので、関数ｆを安全性と高速性を同時に満たすような構造にすることによって、ラウンド数を増加させることなく安全性を確保し、かつ高速な暗号化処理が可能となるような暗号装置を提供することにある。
【００１１】
【課題を解決するための手段】
この発明では、特に非線形関数手段において、非線形関数手段の入力データに鍵記憶手段に蓄積された鍵データに基づいて線形変換を行う鍵依存線形変換手段と、この鍵依存線形変換手段の出力データを複数個のビット列に分割する分割手段と、これら分割された各ビット列に非線形変換をそれぞれ行う第一の非線形変換手段と、その第一の非線形変換手段の各々の出力ビット列間で線形変換を行う第一の線形変換手段と、その第一の線形変換手段の出力ビット列の一部またはすべてに非線形変換を行う第二の非線形変換手段と、その第二の非線形変換手段の出力ビット列をその非線形関数手段の出力データに結合する結合手段とを備えることを特徴とする。
【００１２】
さらに安全性を向上させるには、前記結合手段の出力データを前記非線形関数手段の出力データに線形変換を行う第二の線形変換手段を備えることを特徴とする。
また、前記第一の線形変換手段または前記第二の線形変換手段、もしくはその両方の手段が、データの線形変換を行うときに、前記鍵記憶手段に蓄積された鍵データに基づいて線形変換を行う鍵依存線形変換手段であることを特徴とする。作用
この発明によれば、Ｓ−ｂｏｘにおける確率がｐsi＜ｐb ＜１であるとき（ｐb はＳ−ｂｏｘの最大確率）、各ラウンドを近似するときの確率はｐi ＜ｐb 2 （ただし、差分解読法の場合は関数ｆへの入力差分が０でないとき、線形解読法の場合は関数ｆでの出力マスク値が０でないとき）となることが保証される。また、関数ｆが全単射（入力が異なれば出力が必ず異なる）であるとき、暗号方式のラウンド数を３ｍとすると、暗号方式としての確率はＰ＜ｐi 2m＜ｐb 4mとなる。一般に、暗号方式ではＰ＜２-64 であれば差分解読法や線形解読法に対して安全とされるため、ｍ＞−１６／（log2（ｐb ））を満たせばよく、ｐb ＜２-4であればＤＥＳ暗号の１６ラウンドよりも少ないラウンド数で安全性を確保できる。なお安全性の確率はｍラウンドの倍数ごとに変化する。
【００１３】
また、少なくとも２つのＳ−ｂｏｘが並列に処理できるような配置となっているため、並列処理ができないものと比較して２倍以上の処理速度を出すことが可能である。
ゆえに、差分解読法や線形解読法に対する安全性を、高速な関数で、かつ比較的少ないラウンド数で確保できるため、安全性と高速性を両立させた暗号装置を提供することが可能になる。
【００１４】
【発明の実施の形態】
実施例１
以下、この発明の一実施例を図面を用いて説明する。
図１は、この発明の一実施例を示す暗号装置における、暗号化処理手順の機能構成を示したものである。
【００１５】
平文に相当する入力データＰを入力手段３０１から暗号装置内に入力する。入力データＰは鍵記憶手段３２２に蓄積されている鍵データｆｋによる鍵依存初期線形変換手段３０２で変換された後、初期分割手段３０３で二つのデータＬ0 ，Ｒ0 に分割される。例えば６４ビットのデータが３２ビットづつのデータＬ0 ，Ｒ0 にビット分割される。データＲ0 は、鍵記憶手段３２２に蓄積されている鍵データｋ00，ｋ10，ｋ20とともに非線形関数手段３０４に入力され、非線形関数手段３０４で変換処理を行われてデータＹ0 に変換される。データＹ0 とデータＬ0 は線形演算手段３０５で演算されてデータＬ0 * に変換される。データＬ0 * とデータＲ0 は交換手段３０６でデータ位置の交換が行われ、Ｌ1 ＝Ｒ0 ，Ｒ1 ＝Ｌ0 * のように交換される。以下、二つのデータＬ1 ，Ｒ1 について上記と同様の処理を繰り返し行う。すなわち、二つのデータＬi ，Ｒi について、データＲi は、鍵記憶手段３２２に蓄積されている鍵データｋ0i，ｋ1i，ｋ2iとともに非線形関数手段３０４に入力され、非線形関数手段３０４で変換処理を行われて、データＹi に変換される。データＹi とデータＬi は線形演算手段３０５で演算されてデータＬi * に変換される。データＬi * とデータＲi は交換手段３０６でデータ位置の交換が行われ、Ｌi+1 ＝Ｒi ，Ｒi+1 ＝Ｌi * のように交換される。線形演算手段３０５は例えば排他的論理和演算を行うものである。
【００１６】
暗号方式としての安全性を確保するための適切な繰り返し回数をｎとすると、繰り返し処理の結果、データＬn ，Ｒn が得られる。このデータＬn ，Ｒn を最終結合手段３０７で結合しつまり例えば３２ビットの各Ｌn ，Ｒn をビット結合して６４ビットのデータとし、その後鍵記憶手段３２２に蓄積されている鍵データｅｋによる鍵依存最終線形変換手段３０８で変換し、出力手段３０９から暗号文として出力データＣを出力する。
【００１７】
復号については、暗号化処理手順と逆の手順をたどることによって、暗号文Ｃから平文Ｐが得られる。例えば図１において入力データの代りに暗号文データを入力し、鍵データを図１とは逆に、ｅｋ，ｋ0(n-1)，ｋ1(n-1)，ｋ2(n-1)，…，ｋ01，ｋ11，ｋ21，ｋ00，ｋ10，ｋ20，ｆｋを順次与えればよい。
次に、非線形関数手段３０４の内部を詳細に説明する。図２は、非線形関数手段３０４の内部の機能構成を抜き出して示したものである。
【００１８】
データＲi は、鍵記憶手段３２２に蓄積されている鍵データｋ0i，ｋ1i，ｋ2iとともに非線形関数手段３０４への入力データとなる。データＲi は、鍵データｋ0iによる鍵依存線形変換手段３４１によりデータＲi * に線形変換される。次に、データＲi * は分割手段３４２において例えば８ビットづつの４つのデータｉｎ0 ，ｉｎ1 ，ｉｎ2 ，ｉｎ3 にビット分割される。４つのデータｉｎ0 ，ｉｎ1 ，ｉｎ2 ，ｉｎ3 は、それぞれ非線形変換手段３４３，３４４，３４５，３４６において、データｍｉｄ00，ｍｉｄ01，ｍｉｄ02ｍｉｄ03に非線形変換された後、鍵依存線形変換手段３４７に入力される。鍵依存線形変換手段３４７では、鍵データｋ1iにより例えば図３に示すように、線形処理される。即ちデータｍｉｄ00，ｍｉｄ01，ｍｉｄ02，ｍｉｄ03はそれぞれ処理系３０0 〜３０3 に入力され、処理系３０1 でｍｉｄ00とｍｉｄ01との排他的論理和が回路３１1 でとられ、また処理系３０2 でｍｉｄ02とｍｉｄ03の排他的論理和が回路３１2 でとられ、更に回路３１1 の出力と回路３１2 の出力の排他的論理和が回路３２2 でとられる。回路３１1 の出力と回路３２2 の出力との排他的論理和が回路３１1 でとられ、回路３３1 の出力とｍｉｄ00の排他的論理和が回路３４0 でとられ、回路３２2 の出力とｍｉｄ03との排他的論理和が回路３４3 でとられ、回路３４0 ，３３1 ，３２2 ，３４3 の各出力と鍵データｋ1i0,ｋ1i1,ｋ1i2,ｋ1i3 との各排他的論理和が回路３５0 〜３５3 でそれぞれとられて、それぞれｍｉｄ10，ｍｉｄ11，ｍｉｄ12，ｍｉｄ13を出力する。つまりデータｍｉｄ00，ｍｉｄ01，ｍｉｄ02，ｍｉｄ03は相互に関連づけられた後、それぞれ鍵データｋ1i0,ｋ1i1,ｋ1i2,ｋ1i3 に依存した線形変換が行われる。論理式で示すと下記の論理演算がなされる。
【００１９】
mid10＝ mid00(+)mid02(+)mid03(+)k1i0,mid11 ＝mid02(+)mid03(+)k1i1，
mid12＝ mid00(+)mid01(+)mid02(+)mid03(+)k1i2,mid13 ＝mid00(+)mid01(+)mid02(+)k1i3
次にこれらデータｍｉｄ10，ｍｉｄ11，ｍｉｄ12，ｍｉｄ13は、それぞれ非線形変換手段３４８，３４９，３５０，３５１において、データｏｕｔ0 ，ｏｕｔ1 ，ｏｕｔ2 ，ｏｕｔ3 に非線形変換された後、結合手段３５２において、一つのデータＹi * に結合される。つまり例えば４つの８ビットのデータが１つの３２ビットデータにビット結合される。最後に、データＹi * は、鍵データｋ2iによる鍵依存線形変換手段３５３において、データＹi に線形変換され、非線形関数手段３０４からの出力データＹi が生成される。非線形変換手段３４３〜３４６，３４８〜３５１の各１つの手段それぞれ、例えばＤＥＳ暗号のＳ−ｂｏｘの１つの要素のようなもので、それぞれ入力データに応じた異った出力データを出力するものである。
【００２０】
ここで、非線形変換手段３４３〜３４６は４つ並列に配置されており、その変換処理は相互に関連していないため、これらは並列実行が可能である。また、非線形変換手段３４８〜３５１についても同様のことがいえる。
さらに、非線形変換手段３４８〜３５１については、鍵依存線形変換手段３４７が任意の鍵依存線形変換方法をとることを可能にするために配置されている。このため、鍵依存線形変換手段３４７が、例えば図３のように特定の線形変換であることがあらかじめわかっている場合には、非線形変換手段３４８〜３５１の一部を削除しても、差分解読法および線形解読法に対する安全性が低下しないようにすることができ、削除した分だけ暗号化処理速度の向上が望める。例えば、鍵依存線形変換手段３４７が図３で表されているとき、非線形変換手段３４９，３５０を削除しても差分解読法および線形解読法に対する安全性は低下しない一方で、暗号化速度が約３３％向上する。つまり鍵依存線形変換手段３４７が予め決っている場合は差分解読法、線形解読法に対しては非線形変換手段３４８〜３５１の一部はその存在が安全性に関係ない場合があり、その部分は省略できる。なお、鍵データｆｋ，ｋ00，ｋ10，ｋ20，ｋ01，ｋ11，ｋ21，…，ｋ0(n-1)，ｋ1(n-1)，ｋ2(n-1)，ｅｋは図１において鍵入力手段３２０から暗号装置内に入力された鍵情報Ｋｅｙから鍵データ生成手段３２１によって変換され、鍵記憶手段３２２に蓄積されたデータである。鍵データ生成手段３２１による鍵データの生成はＤＥＳ暗号の拡大鍵生成アルゴリズム１６と同様に行うことができる。
【００２１】
上記のように構成された暗号装置の場合、例えば、非線形変換手段３４３〜３４６，３４８〜３５１の各１つづつが差分解読法および線形解読法に対して確率ｐb ＝２-6で近似表現できるように設計されているならば、各ラウンドは非線形変換を必ず２回行うため、確率ｐi ＜２-12 で近似表現することができ、暗号装置全体としてはラウンド数を３ｍとして、確率Ｐ＜２-24mで近似表現できることになる。ここで、例えばｍ＝４（ラウンド数１２段）とすると、Ｐ＜２-96 となり、差分解読法および線形解読法に対して十分安全な暗号装置となる。
【００２２】
また、鍵依存初期線形変換手段３０２、鍵依存最終線形変換手段３０８、鍵依存線形変換手段３４７，３５３は鍵に依存する線形変換手段であるため、差分解読法および線形解読法以外の解読法に対しても十分な安全性を兼ね備え、もっとも安全性を重視した暗号装置である。
なお、この発明はこの例に特定されるだけでなく、例えば高速性を望むのであれば、これら鍵依存初期線形変換手段３０２、鍵依存最終線形変換手段３０８、鍵依存線形変換手段３５３については、そのいずれか、もしくはすべてを削除することが可能である。この場合、差分解読法および線形解読法に対する安全性は低下しない一方で、削除した分だけ暗号化処理速度の向上が望める。ただし他の解読法に対しては弱くなるおそれはある。また、鍵依存初期線形変換手段３０２、鍵依存最終線形変換手段３０８、鍵依存線形変換手段３４７，３５３のいずれか、もしくはすべてを鍵に依存しない線形変換手段に変更することも可能である。この場合、差分解読法および線形解読法以外の解読法に対しても安全性が低下しない一方で、インプリメントを最適化することにより、暗号化処理速度の向上が望める。なお、線形変換手段としては、ビット位置を予め決めた関係で入れかえる転置、予め決めたビット数だけ回転シフトするなどを行う。鍵依存線形変換手段は、鍵データに応じたビット数だけ回転シフトする、あるいは、鍵データとの排他的論理和演算を行うものなどである。
実施例２
図４は、この発明の他の実施例を示す。
【００２３】
平文に相当する入力データＰを入力手段３０１から暗号装置内に入力する。入力データＰは初期分割手段３０３で二つのデータＬ0 ，Ｒ0 に分割される。データＲ0 は、鍵記憶手段３２２に蓄積されている鍵データｋ00，ｋ20とともに非線形関数手段３０４に入力され、非線形関数手段３０４で変換処理を行われて、データＹ0 に変換される。データＹ0 とデータＬ0 は線形演算手段３０５で演算され、データＬ0 * に変換される。データＬ0 * とデータＲ0 は交換手段３０６でデータ位置の交換が行われ、Ｌ1 ＝Ｒ0 ，Ｒ1 ＝Ｌ0 * のように交換される。以下、二つのデータＬ1 ，Ｒ1 について上記と同様の処理を繰り返し行う。すなわち、二つのデータＬi ，Ｒi について、データＲi は、鍵記憶手段３２２に蓄積されている鍵データｋ0i，ｋ2iとともに非線形関数手段３０４に入力され、非線形関数手段３０４で変換処理を行われて、データＹi に変換される。データＹi とデータＬi は線形演算手段３０５で演算され、データＬi * に変換される。データＬi * とデータＲi は交換手段３０６でデータ位置の交換が行われ、Ｌi+1 ＝Ｒi ，Ｒi+1 ＝Ｌi * のように変換される。
【００２４】
暗号方式としての安全性を確保するための適切な繰り返し回数をｎとすると、繰り返し処理の結果、データＬn ，Ｒn が得られる。このデータＬn ，Ｒn を最終結合手段３０７で結合した後、出力手段３０９から暗号文として出力データＣを出力する。
復号については、暗号化処理手順と逆の手順をたどることによって、暗号文Ｃから平文Ｐが得られる。
【００２５】
次に、非線形関数手段３０４の内部を詳細に説明する。図５Ａは、非線形関数手段３０４の内部の機能構成を抜き出して示したものである。
データＲi は、鍵記憶手段３２２に蓄積されている鍵データｋ0i，ｋ2iとともに非線形関数手段３０４への入力データとなる。データＲi は、データｋ0iによる鍵依存線形変換３４１において、データＲi * に線形変換される。次に、データＲi * は分割手段３４２において４つのデータｉｎ0 ，ｉｎ1 ，ｉｎ2 ，ｉｎ3 に分割される。４つのデータｉｎ0 ，ｉｎ1 ，ｉｎ2 ，ｉｎ3 は、それぞれ非線形変換手段３４３，３４４，３４５，３４６において、データｍｉｄ00，ｍｉｄ01，ｍｉｄ02，ｍｉｄ03に非線形変換された後、線形変換手段３５４に入力される。線形変換手段３５４では、例えば図５Ｂに示すように相互に関連づけるように変換される。これは図３中の鍵データとの論理演算を省略した場合と同一の例であり、下記の式で表わせる。
【００２６】
mid10＝ mid00(+)mid02(+)mid03,mid11＝mid02(+)mid03,
mid12＝ mid00(+)mid01(+)mid02(+)mid03,mid13＝mid00(+)mid01(+)mid02
この線形変換で、データｍｉｄ10，ｍｉｄ11，ｍｉｄ12，ｍｉｄ13が生成され、そのうちのデータｍｉｄ10，ｍｉｄ13は、それぞれ非線形変換手段３４８，３５１において、データｏｕｔ0 ，ｏｕｔ3 に非線形変換された後、結合手段３５２において、４つのデータｏｕｔ0 ，ｍｉｄ11，ｍｉｄ12，ｏｕｔ3 を一つのデータＹi * に結合される。最後に、データＹi * は、データｋ2iによる鍵依存線形変換手段３５３において、データＹi に線形変換され、非線形関数手段３０４からの出力データＹi が生成される。
【００２７】
ここで、非線形変換手段３４３〜３４６は４つ並列に配置されており、その変換処理は相互に関連していないため、これらは並列実行が可能である。また、非線形変換手段３４８，３５１についても同様のことがいえる。
なお、鍵データｋi は、鍵入力手段３２０から暗号装置内に入力された鍵情報Ｋｅｙから鍵データ生成手段３２１によって変換され、鍵記憶手段３２２に蓄積されたデータである。
【００２８】
上記のように構成された暗号装置の場合、例えば、非線形変換手段３４３〜３４６，３４８，３５１が差分解読法および線形解読法に対して確率ｐb ＝２-6で近似表現できるように設計されているならば、実施例１と同様に各ラウンドは確率ｐi ＜２-12 で近似表現することができ、暗号装置全体としてはラウンド数を３ｍとして、確率ｐ＜２-24mで近似表現できることになる。ここで、例えばｍ＝４（ラウンド数１２段）とすると、Ｐ＜２-96 となり、差分解読法および線形解読法に対して十分安全な暗号装置となる。
【００２９】
また、鍵依存線形変換手段３５３があるため、差分解読法と線形解読法以外の解読法に対しても安全性にマージンがある構造であり、かつ実施例１よりも構造が簡素化されているため、高速である。つまり、安全性と高速性のバランスを重視した暗号装置である。
実施例３
図６は、この発明の更に他の実施例を示す。
【００３０】
平文に相当する入力データＰを入力手段３０１から暗号装置内に入力する。入力データＰは初期分割手段３０３で二つのデータＬ0 ，Ｒ0 に分割される。データＲ0 は、鍵記憶手段３２２に蓄積されている鍵データｋ0 とともに非線形関数手段３０４に入力され、非線形関数手段３０４で変換処理を行われて、データＹ0 に変換される。データＹ0 とデータＬ0 は線形演算手段３０５で演算され、データＬ0 * に変換される。データＬ0 * とデータＲ0 は交換手段３０６でデータ位置の交換が行われ、Ｌ1 ＝Ｒ0 ，Ｒ1 ＝Ｌ0 * のように変換される。以下、二つのデータＬ1 ，Ｒ1 について上記と同様の処理を繰り返し行う。すなわち、二つのデータＬi ，Ｒi について、データＲi は、鍵記憶手段３２２に蓄積されている鍵データｋi とともに非線形関数手段３０４に入力され、非線形関数手段３０４で変換処理を行われて、データＹi に変換される。データＹi とデータＬi は線形演算手段３０５で演算され、データＬi * に変換される。データＬi * とデータＲi は交換手段３０６でデータ位置の交換が行われ、Ｌi+1 ＝Ｒi ，Ｒi+1 ＝Ｌi * のように変換される。
【００３１】
暗号方式としての安全性を確保するための適切な繰り返し回数をｎとすると、繰り返し処理の結果、データＬn ，Ｒn が得られる。このデータＬn ，Ｒn を最終結合手段３０７で結合した後、出力手段３０９から暗号文として出力データＣを出力する。
復号については、暗号化処理手順と逆の手順をたどることによって、暗号文Ｃから平文Ｐが得られる。
【００３２】
次に、非線形関数手段３０４の内部を詳細に説明する。図７は、非線形関数手段３０４の機能構成を抜き出して示したものである。
非線形関数手段３０４への入力データＲi は、鍵記憶手段３２２に蓄積されている鍵データｋi とともに鍵依存線形変換３４１への入力となる。データＲi は、データｋi による鍵依存線形変換３４１において、データＲi * に線形変換される。次に、データＲi * は分割手段３４２において４つのデータｉｎ0 ，ｉｎ1 ，ｉｎ2 ，ｉｎ3 に分割される。４つのデータｉｎ0 ，ｉｎ1 ，ｉｎ2 ，ｉｎ3 は、それぞれ非線形変換手段３４３，３４４，３４５，３４６において、データｍｉｄ00，ｍｉｄ01，ｍｉｄ02，ｍｉｄ03に非線形変換された後、線形変換手段３５４に入力される。線形変換手段３５４では、例えば実施例２の図５Ｂと同じように、
mid10＝ mid00(+)mid02(+)mid03,mid11＝mid02(+)mid03,
mid12＝ mid00(+)mid01(+)mid02(+)mid03,mid13＝mid00(+)mid01(+)mid02
に線形変換し、データｍｉｄ10，ｍｉｄ11，ｍｉｄ12，ｍｉｄ13を生成する。ついで、データｍｉｄ10，ｍｉｄ13は、それぞれ非線形変換手段３４８，３５１において、データｏｕｔ0 ，ｏｕｔ3 に非線形変換された後、結合手段３５２において、４つのデータｏｕｔ0 ，ｍｉｄ11，ｍｉｄ12，ｏｕｔ3 を一つのデータに結合され、非線形関数手段３０４からの出力データＹi が生成される。
【００３３】
ここで、非線形変換手段３４３〜３４６は４つ並列に配置されており、その変換処理は相互に関連していないため、これらは並列実行が可能である。また、非線形変換手段３４８，３５１についても同様のことがいえる。
なお、鍵データｋi は、鍵入力手段３２０から暗号装置内に入力された鍵情報Ｋｅｙから鍵データ生成手段３２１によって変換され、鍵記憶手段３２２に蓄積されたデータである。
【００３４】
上記のように構成された暗号装置の場合、例えば、非線形変換手段３４３〜３４６，３４８，３５１が差分解読法および線形解読法に対して確率ｐb ＝２-6で近似表現できるように設計されているならば、各ラウンドは確率ｐi ＜２-12 で近似表現することができ、暗号装置全体としてはラウンド数を３ｍとして、確率Ｐ＜２-24mで近似表現できることになる。ここで、例えばｍ＝４（ラウンド数１２段）とすると、Ｐ＜２-96 となり、差分解読法および線形解読法に対して十分安全な暗号装置となる。
【００３５】
また、差分解読法および線形解読法に対して十分な安全性を確保するために最低限必要な手段しか実行しない構造であるため、もっとも高速性を重視した暗号装置である。
上述において、非線形関数手段３０４中の各分割手段３４２は４分割に限らず、複数に分割すればよい。なお、４分割の場合においては、第二の非線形変換手段は図５Ａ、図７に示したように二つのみとすることができる。
【００３６】
【発明の効果】
以上、詳細に説明したように、この発明によれば、非線形関数手段で入力データを複数に分割し、かつそれぞれ非線形変換を行い、その後、相互に線形交換を行い、更に少くとも一部を非線形交換することによりデータの通信または蓄積においてデータを秘匿するための暗号装置について、安全性が高く、かつ高速性を兼ね備えた暗号装置を提供することができる。
【図面の簡単な説明】
【図１】この発明の実施例１の機能構成を示す図。
【図２】実施例１における非線形関数手段３０４の詳細な機能構成例を示す図。
【図３】図２中の鍵依存線形変換手段３４７の具体例を示す図。
【図４】この発明の実施例２の機能構成を示す図。
【図５】Ａは実施例２における非線形関数手段３０４の詳細な機能構成を示す図、Ｂはこの手段３０４中の具体例を示す図である。
【図６】この発明の実施例３の機能構成を示す図。
【図７】実施例３における非線形関数手段３０４の詳細な機能構成を示す図。
【図８】従来のＤＥＳ暗号装置の機能構成を示す図。
【図９】図８中のｆ関数演算部１２の具体的機能構成を示す図。
【図１】
0003782210.tif 000002
【図２】
0003782210.tif 000003
【図３】
0003782210.tif 000004
【図４】
0003782210.tif 000005
【図５】
0003782210.tif 000006
【図６】
0003782210.tif 000007
【図７】
0003782210.tif 000008
【図８】
0003782210.tif 000009
【図９】
0003782210.tif 000010