(57)【特許請求の範囲】
【請求項１】
計算機によって使用可能な記録媒体に格納されたデータの暗号方法であって、計算機が入力情報ｘを関数Ｆでコード化した情報Ｆ（ｘ）を出力するキーを用いて処理する方法において、関数Ｆは少なくとも２に等しいランクの非相関モジュールＭKを使用し、Ｆ（ｘ）=［Ｆ’（ＭK）］（ｘ）である（ここで、Ｋはランダムキーであり、Ｆ’はコード化関数である）ことを特徴とするデータの暗号方法。
【請求項２】
前記入力情報ｘを所定の長さの要素ｘ0に分割することを特徴とする請求項１に記載の暗号方法。
【請求項３】
前記関数Ｆが、Ｆ（ｘ）=Ｆ’（ＭK（ｘ））の形式であることを特徴とする請求項１および２のいづれか１項に記載の暗号方法。
【請求項４】
前記コード化関数Ｆ’が、以下に示すよう２つの関数Ｆ”およびＧ”に分割されることを特徴とする請求項１および２のいづれか１項に記載の暗号方法：
Ｆ（ｘ）：Ｆ”（ＭK（Ｇ”（ｘ）））
【請求項５】
前記非相関モジュールＭKが、逆変換可能であることを特徴とする請求項１から４のいづれか１項に記載の暗号方法。
【請求項６】
前記非相関モジュールが、ＭK（ｘ）=ａｘ＋ｂ（ここで、Ｋ=（ａ，ｂ）、ａ≠０）であることを特徴とする請求項５に記載の暗号方法。
【請求項７】
前記非相関モジュールが、ＭK（ｘ）=ａ/（ｘ＋ｂ）＋ｃ（ここで、Ｋ=（ａ，ｂ，ｃ）、ａ≠０）であることを特徴とする請求項５に記載の暗号方法。
【請求項８】
前記関数Ｆが、関数Ｆiをｎ回の反復処理するファイステル関数であることを特徴とする請求項５に記載の暗号方法。
【請求項９】
前記各反復において、Ｆi（ｘ）=Ｆ’i（ＭK（ｘ））であることを特徴とする請求項８に記載の暗号方法。
【請求項１０】
前記各反復において、Ｆi（ｘ）=Ｆ”i（ＭK（Ｇ”i（ｘ）））であることを特徴とする請求項８に記載の暗号方法。
【請求項１１】
ＭK（ｘ）=ｋ1＋ｋ2ｘ＋ｋ3ｘ2＋・・・＋ｋtｘt-1（ここで、Ｋ=（ｋ1，ｋ2，ｋ3，・・・，ｋt））であることを特徴とする請求項１０に記載の暗号方法。
【発明の詳細な説明】
本発明は処理装置で利用可能な媒体に記録したデータを非相関化する方法に関する。
知られているデータの暗号化方法または暗号方法は多くある。これらはデータをコード化する役目をし、キーを所有する認定された受信者のみデータを読むことができる。暗号化の重要性は情報通信網と同時に高まっており、法律制定に伴いその利用が普及することは予想できる。
いくつかの暗号化方法により、無条件機密保護を提供することができるが、処理に手間がかかる技術手段を必要とするため、通信が遅くなったり、キーの交換管理の費用が高くなったりし、実際に使用できないものさえある。
例えば、暗号化されていないメッセージのフローを暗号化するために、バーナム暗号化方法(Vernam encryption method)では同じ長さのキーのフローを必要とし、送信者と受信者間の同期を達成するのが難しくなる。
無条件機密保護の条件は、1949年、シャノン(Shannon)によって形式化された。彼は情報理論を基に、無条件機密保護には、キーが、劣化することなく暗号化できるメッセージ全体の大きさと少なくとも同等でなくてはならないことを示した。
暗号化操作は、処理装置で利用可能な媒体に記録され、よく送信されるデータの保護を確実にするため実施する。一連の機密にすべきメッセージの暗号化には、少数のメッセージに対して独立にこれらの操作を実施しなければならない。
現在用いられる主な暗号化操作は米国政府が採用するデータ暗号化規格(DES:digital data encryption standard)である。この操作はいわゆるファイステル(Feistel)スキームに続く単純な関数の(16段の)反復に基づく。反復数が多いのは、暗号化されたメッセージ間の相関を弱めるためである。
DESについては多くの文献、特にダグラス スティンソン(Douglas STINSON)による「暗号化、理論と実践」(″Encryption,Theory and Practice″(International Thompson Publishing))という題名の出版物で説明されている。
暗号化の信頼性を改善し、徹底的な調査から保護するため、キーの長さを長くし、オーダー1の非相関の導入が提案されている。これは下記2つの文献の著者達が提案してきたことである:Advances in Cryptology-CRYPTO 96,16th Annual International Cryptology Conference,Santa Barbara,August 18-22 1996,Proceedings no.Conf.16,August 18th 1996,Koblitz N(ED),pages 252-267 KILIAN J.et al.、およびAdvances in Cryptology-ASIACRYPT,Fujiyoshida,November 11-14 1991,no.Conf.1,November 11th 1991,Hideki Imai;Rivest R L;Tsutomu Matsumoto,pages 210-224 by EVEM S.et al.
しかし、この方法では近年開発された線形および微分暗号解読技術で可能になった攻撃から保護するのに十分ではない。
本発明の目的は、最適な機密性を提供し、大規模でない計算ソースのみを必要とする比較的単純な関数を用いて実施できるデータ暗号法を提供することにある。
この目的のため、本発明は計算機によって使用可能な媒体に格納されたデータの暗号方法に関し、この方法では、計算機が入力情報xを関数Fでコード化した情報F(x)を出力するキーを用いて処理する。
本発明において、関数Fは少なくとも2に等しいランクの非相関モジュールMKを使用し、F(x)=[F’(MK)](x)である(ここで、Kはランダムキーであり、F’は暗号関数である)。
一般に、非相関モジュールは、キーを含む関数MKでメッセージxを変換する役目を行い、ランダムな変数のキーを有する任意のt個の異なるメッセージから得た分散MK(x1),...,MK(xt)が均一またはほぼ均一な分散を有するようにする。
こうした非相関モジュールは、入力情報xに対して所定の長さのデータx0を出力する情報分割装置(information dividing device)の後、データ暗号化装置内で使用できる。
本発明は、関数Fでコード化したメッセージc1,...,ctのt個のブロックがその関数についてのいかなる統計的情報も与えないように実施できる。
それぞれが個々の利点を有する種々の実施例において、本発明は任意の技術的に実行可能な組み合わせによる下記特性を有する:
−入力情報xは所定の長さの要素x0に分割され、
−関数Fは、F(x)=F’(MK(x))の形式であり、
−コード化関数F’は2つの関数F”およびG”に分割され、
F(x)=F”(MK(G”(x)))、
−非相関モジュールMKは逆変換可能であり、
−非相関モジュールは、MK(x)=ax+bであり(ここで、K=(a,b)、a≠0)、
−非相関モジュールは、MK(x)=a/(x+b)+cであり(ここで、K=(a,b,c)、a≠0)、
−関数Fは、関数Fiをn回の反復それぞれに適用するファイステル関数であり、
−非相関モジュールMKは逆変換可能であり、
−各反復で、Fi(x)=F’i(MK(x))であり、
−各反復で、Fi(x)=F”i(MK(G”i(x)))であり、
−MK(x)=k1+k2x+k3x2+...+ktxt-1
(ここで、K=k1,k2,k3,...,kt)である。
以下、本発明を図および実施例を用いてより詳細に説明する。
図1は、8段の反復のファイステルスキームに適用した本発明を示す。
記録データを暗号化する本発明の方法は、F(x)=[F’(MK)](x)(ここで、Kはランダムなキー、F’はコード化関数である)である非相関モジュールMKを用いた秘密キーを実施するのが有利である。
コード化関数F’は2つの関数F”およびG”に分割され、F(x)=F”(MK(G”(x)))であるのが有利である。
このような非相関モジュールは、逆変換可能な関数Fおよび任意の関数Fに使用できる。
関数Fが逆変換可能である時、暗号方法は暗号化方法である。つまり、キーの保有者が入力情報を再生できる。関数Fが逆変換できない場合、暗号方法でデータを認証できる。
パラメータ値t=2で、関数MKは:
MK(x)=ax+b
であるのが有利である(ここで、K=(a,b)、a≠0、記号+はメッセージスペースの翻訳を表す)。
非相関はオーダー2で完全になる。逆変換操作は:
(MK)-1(y)=a-1y-a-1b
パラメータ値t=3の場合の他の実施例で、関数MKは:
MK(x)=a/(x+b)+c
であるのが有利である。(ここで、K=(a,b,c)、a≠0。この演算では、1/0=0とする。)逆変換操作は下記のとおり:
(MK)-1(y)=a/(y-c)-b
非相関モジュールMKの使用は逆変換不可能な関数の場合でも同様に有利である。
加算および乗算を定義するメッセージのような代数構造を用いる。例えば、有限な集合における演算または素数の切り捨てモジュロ演算を用いる。
全てのパラメータ値tに、MK(x)=k1+k2x+k3x2+...+ktxt-1ここで、K=(k1,k2,k3,...,kt)の形式の非相関関数を提案できる。
ファイステル1暗号化のスキームを図1に示す。
64ビットの平文xのブロックに対して、x=L0R0を設定する(ここで、L0は数列xの初めの32ビットを、R0は残りの32ビットを有する)。
等しい関数fの4段の反復をxに適用する。1≦i≦4で、LiRiを下記の法則に従って計算する:
Li=Ri-1
Ri=Li-1+f(Ri-1+Ki)
ここで、＋記号は2本の数列のビットごとのEOR(排他的OR)を表す。K1,K2,K3,K4はKから計算された32ビットの数列である。
この結果は(L4,R4)となる。これは、例えば下記のように、非相関モジュールを適用する式L4R4に組み込まれる:
K5K6×L4R4+K7K8
(K5,K6,K7,K8は各々32ビットの数列である)。
この結果は、ファイステルスキームによる2番目の関数に対する入力L’0R’0の役目をし、L’4R’4=F(x)という結果を導く前記のものに類似する。
K’1,K’2,K’3,K’4もまた32ビットの数列である。
ここでキーはK1,K2,K3,K4,K’1,K’2,K’3,K’4,K5,K6,K7,K8である。
一般に、関数F”およびG”は任意の暗号化関数でよい。
ここで、2つの実施例を詳細に説明する:
これらの好ましい実施例の1番目では、8段の反復のファイステルスキームを用いる。G”は4つの関数f1,f2,f3,f4の連続処理、F”は4つの関数f5,f6,f7,f8の連続処理である(関数fiは関数fおよびランダムキーKから定義する)。
関数fは下記の方法で定義する:
もしxが32ビットワードであれば、まず下記φ(x)を定義する:
φ(x)=x+256.S(xmod256)mod232
ここで、Sは例えば付録1の表に表した関数で、uは横軸に、vは縦軸に表し、各々が16進数である。(u,v)=xを座標(u,v)に示す値を有する値S(x)に対応させる。
f(x)を下記式で定義する:
f(x)=φ(R11L(φ(x))+rmod232)
(ここで、R11Lは、11ビットの左への巡回置換であり、rは定数で、例えば下記のようにsで定義される:
r=b7s15162および
0004317593.tif 000002
キーKは、各々64ビットの数列Kiを8個連結してできた256ビットの数列である:K=(K1K2K3...K8)。
ファイステルスキームは、関数fiを用いて実施する:
fi(x)=f(x▲＋▼ki)
ここで、kiを下記のように定義し:
0004317593.tif 000003
非相関モジュールは下記式となる:
M(uv)=（uv▲＋▼K5K6)×K7K8
2番目の好ましい実施例では、32段の反復のファイステルスキームを使用する:
最初の実施例に比べて、キーKは2048ビットの数列、rはその値を保持し、関数fはf’に置換される:
f’(x)=R11L(x)+rmod232
関数fiは関数f’iに置換される:
f’i(x)=f’(x.K2i-1+K2imod232−5)。
付録1
0004317593.tif 000004
0004317593.tif 000005
【図１】
0004317593.tif 000006