(57)【特許請求の範囲】
【請求項１】
それぞれが、「複数の係数ａ，ｂと、使用回数ｃと、使用できる所定回数ｎとの少なくとも４つの整数で表され、Ｋ（ｘ）＝ａｘ＋ｂ」で定義される複数のアファイン鍵データを、生成及び保持するアファイン鍵生成保持手段と、
前記アファイン鍵生成保持手段に保持されている複数のアファイン鍵データからｉ番目のアファイン鍵データを選択し、この選択されたｉ番目のアファイン鍵データに基づいて、乱数列データを生成する乱数発生手段と、
前記乱数発生手段が生成したｉ番目のアファイン鍵データの乱数列データの生成への使用回数ｃをカウントし、当該使用回数ｃが前記ｉ番目のアファイン鍵データの所定回数ｎ以上となったと判断した場合に、前記ｉ番目のアファイン鍵データの使用回数ｃを０とし、前記アファイン鍵保持手段に保持されているｊ番目のアファイン鍵データに基づき、前記アファイン鍵生成保持手段に保持されている前記ｉ番目のアファイン鍵データの係数ａ，ｂを更新する制御手段と、
を具備し、前記制御手段は、前記ｉ番目のアファイン鍵データの更新後の係数ｂが０になる場合に、当該更新後の係数ｂを１とし、更に更新後の係数ａが０となる場合に、当該更新後の係数ａを原始根とすることを特徴とする乱数生成装置。
【請求項２】
それぞれが、「複数の係数ａ，ｂと、使用回数ｃと、使用できる所定回数ｎとの少なくとも４つの整数で表され、Ｋ（ｘ）＝ａｘ＋ｂ」で定義される複数のアファイン鍵データを、生成及び保持するアファイン鍵生成保持手段と、
前記アファイン鍵生成保持手段に保持されている複数の複数のアファイン鍵データからｉ番目のアファイン鍵データを選択し、この選択されたｉ番目のアファイン鍵データに基づいて、乱数列データを生成する乱数発生手段と、
前記乱数発生手段が生成したｉ番目のアファイン鍵データの乱数列データの生成への使用回数ｃをカウントし、当該使用回数ｃが前記ｉ番目のアファイン鍵データの所定回数ｎ以上となったと判断した場合に、前記ｉ番目のアファイン鍵データの使用回数ｃを０とし、前記アファイン鍵生成保持手段に保持されているｊ番目のアファイン鍵データに基づき、前記アファイン鍵保持手段に保持されている前記ｉ番目のアファイン鍵データの係数ａ，ｂを更新する制御手段と、
平文を保持するメモリと、
前記乱数発生手段によって生成され乱数列データと、前記メモリに保持されている平文とを排他的論理和により演算し、暗号化文を作成し、前記暗号化文を記録媒体に記録する暗号化手段と、
を具備し、前記制御手段は、前記ｉ番目のアファイン鍵データの更新後の係数ｂが０になる場合に、当該更新後の係数ｂを１とし、更に更新後の係数ａが０となる場合に、当該更新後の係数ａを原始根とすることを特徴とする暗号化システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、容易に解読できないストリーム暗号を用いた暗号化方法、暗号化通信方法及び暗号化通信システムに関するものである。
【０００２】
【従来の技術】
従来より、単純で高速処理が可能な暗号化方法としてストリーム暗号法が知られていた。
【０００３】
ストリーム暗号法とは、ビット列｛ｍｄ｝に対して乱数列｛Ｒｉ｝を生成して、Ｃｄ＝ｍｄ（ｘｏｒ）Ｒｉで暗号文｛Ｃｄ｝を生成する方法である。なお、この明細書中において、以下、ｄは自然数を意味する記号である。ここで、（ｘｏｒ）は排他的論理和を表す。
【０００４】
然しながら、従来のストリーム暗号法は、既知平文攻撃に弱い。既知平文攻撃を回避する方法はいろいろ考案されているが、ストリーム暗号の既知平文攻撃に弱い点は解決されていなかった。
【０００５】
更に、疑似乱数を使用してストリーム暗号を作ることが出来るが、安全性が確保できず、やはり既知平文攻撃によって暗号鍵を特定することが容易に出来た。
【０００６】
例えば、乱数発生法の一つであるレーマー法（Lehmer法）は、整数（ａ，ｂ，ｍ）に対して、初期値をｒ０として乱数を
Ｒｄ＝（ａＲｄ−１＋ｂ）（ｍｏｄ  ｍ）
で定義し、ストリーム暗号を作ることができた。この場合ａ，ｂ，ｍが暗号鍵ということになる。
【０００７】
しかし既知平文攻撃によって乱数列｛Ｒｉ｝を容易に特定でき、これを用いて整数ａ，ｂ，ｍを確定することは容易であった。
【０００８】
このように、特定の疑似乱数生成のアルゴリズムを使用しても、充分多くの暗号化のデータが存在すると未定係数などを確定して暗号鍵が割り出されてしまう。また整数の乗法一回だけでは安全な暗号を構成できていなかった。
【０００９】
数年前から、以上のストリーム暗号の欠点に鑑みて カオス暗号と言われるものが登場してきた。このカオス暗号は安全性が高いという特徴を持つ方式であり、実数の初期値ｘ0と実数ａ，ｂ，ｃを用いて次数の乱数列｛Ｘｄ｝を次のように生成していた。
【００１０】
ｘｄ＝ａｘ２ｄ−１＋ｂｘｄ−１＋ｃ
よく知られているように，数列｛ｘｄ｝は極めて複雑な振る舞い（カオス）をすることが知られている。ここでは、ａ，ｂ，ｃなどが暗号鍵と考えられる。
【００１１】
このような乱数列｛ｙｄ｝，｛ｚｄ｝，・・・を複数準備し、文字列｛ｍｄ｝に対して、その暗号化を
Ｃｄ＝（ｘｄ）（ｘｏｒ）（ｙｄ）（ｘｏｒ）（ｚｄ）（ｘｏｒ）・・・（ｘｏｒ）ｍｄ
のように定義していた。ここで（ｘｄ）はｘｄの整数部分である。
【００１２】
この方法では、実数型の乱数列の一部をマスクし、部分的な情報だけを暗号化に使用して暗号鍵を特定することを困難にしていた。この暗号化方法によれば、ＤＥＳのように特製チップを使用しなくても高速な暗号化がソフトウェアのみで実現されている利点があった。
【００１３】
【発明が解決しようとする課題】
しかしながら、カオス暗号を採用しても、実数の乗法を２回以上使用しなければ暗号化できず、暗号化処理の演算に時間がかかるという欠点があった。また、実数演算はコンパイラや機種によって実装の仕方が異なるため、カオス暗号は本質的に機種依存性を有しており、汎用性に乏しいものであった。
【００１４】
このため、高速で暗号化でき、かつ解読することができない暗号化が求められていた。更に、暗号化は汎用性を有するものであることが求められていた。
【００１５】
本発明は上述した課題を解決することを目的として成されたものであり、高速で暗号化でき、かつ解読することができない汎用性のある暗号化方法及び暗号化システムを提供することを目的とする。
【００１６】
【課題を解決するための手段】
本発明は、上記した目的を達成するべく以下のような形態をとるものである。
【００１７】
課題を解決するための一実施形態として、
それぞれが、「複数の係数ａ，ｂと、使用回数ｃと、使用できる所定回数ｎとの少なくとも４つの整数で表され、Ｋ（ｘ）＝ａｘ＋ｂ」で定義される複数のアファイン鍵データを、生成及び保持するアファイン鍵生成保持手段と、
前記アファイン鍵生成保持手段に保持されている複数のアファイン鍵データからｉ番目のアファイン鍵データを選択し、この選択されたｉ番目のアファイン鍵データに基づいて、乱数列データを生成する乱数発生手段と、
前記乱数発生手段が生成したｉ番目のアファイン鍵データの乱数列データの生成への使用回数ｃをカウントし、当該使用回数ｃが前記ｉ番目のアファイン鍵データの所定回数ｎ以上となったと判断した場合に、前記ｉ番目のアファイン鍵データの使用回数ｃを０とし、前記アファイン鍵保持手段に保持されているｊ番目のアファイン鍵データに基づき、前記アファイン鍵生成保持手段に保持されている前記ｉ番目のアファイン鍵データの係数ａ，ｂを更新する制御手段と、
を具備し、前記制御手段は、前記ｉ番目のアファイン鍵データの更新後の係数ｂが０になる場合に、当該更新後の係数ｂを１とし、更に更新後の係数ａが０となる場合に、当該更新後の係数ａを原始根とすることを特徴とする乱数生成装置である。
【００１８】
課題を解決するための一実施形態として、
それぞれが、「複数の係数ａ，ｂと、使用回数ｃと、使用できる所定回数ｎとの少なくとも４つの整数で表され、Ｋ（ｘ）＝ａｘ＋ｂ」で定義される複数のアファイン鍵データを、生成及び保持するアファイン鍵生成保持手段と、
前記アファイン鍵生成保持手段に保持されている複数の複数のアファイン鍵データからｉ番目のアファイン鍵データを選択し、この選択されたｉ番目のアファイン鍵データに基づいて、乱数列データを生成する乱数発生手段と、
前記乱数発生手段が生成したｉ番目のアファイン鍵データの乱数列データの生成への使用回数ｃをカウントし、当該使用回数ｃが前記ｉ番目のアファイン鍵データの所定回数ｎ以上となったと判断した場合に、前記ｉ番目のアファイン鍵データの使用回数ｃを０とし、前記アファイン鍵生成保持手段に保持されているｊ番目のアファイン鍵データに基づき、前記アファイン鍵保持手段に保持されている前記ｉ番目のアファイン鍵データの係数ａ，ｂを更新する制御手段と、
平文を保持するメモリと、
前記乱数発生手段によって生成され乱数列データと、前記メモリに保持されている平文とを排他的論理和により演算し、暗号化文を作成し、前記暗号化文を記録媒体に記録する暗号化手段と、
を具備し、前記制御手段は、前記ｉ番目のアファイン鍵データの更新後の係数ｂが０になる場合に、当該更新後の係数ｂを１とし、更に更新後の係数ａが０となる場合に、当該更新後の係数ａを原始根とすることを特徴とする暗号化システムである。
【００２８】
【発明の実施の形態】
以下に、本発明に係る一発明の実施形態について添付図面を参照して詳細に説明する。以下に説明する本実施形態では、完全な乱数を一度だけ使用するストリーム暗号を提供することにより、高速に暗号化でき、かつ解読することができない汎用性のある暗号化方法、暗号化通信方法及び暗号化通信システムを提供する。
【００２９】
本発明の第１実施形態から第１２実施形態までが、以下に順に説明されている。
【００３０】
第１〜第３実施形態は、暗号化・復号化の方法の実施形態である。
【００３１】
第４〜第６実施形態は、この暗号化・復号化方法を用いた第１〜第３通信装置の実施形態である。
【００３２】
第７実施形態は、この暗号化・復号化方法を用いた認証方法の実施形態である。
【００３３】
第８実施形態は、この暗号化・復号化方法を用いたネットワークシステム（ルータ装置等）の実施形態である。
【００３４】
第９実施形態は、この暗号化・復号化方法を用いたアプリケーション・コンピュータプログラムの実施形態である。
【００３５】
第１０実施形態は、この暗号化・復号化方法を用いたディスクドライブの実施形態である。
【００３６】
第１１実施形態は、この暗号化・復号化方法を用いた光ディスク記録再生装置の実施形態である。
【００３７】
第１２実施形態は、この暗号化・復号化方法を用いた携帯電話の実施形態である。
【００３８】
＜＜第１の実施形態＞＞
第１実施形態は、本発明の多重アファイン鍵を用いた基本的な暗号化方法と復号化方法を特定するものである。
【００３９】
［本実施形態の暗号化方法の概要］
本実施形態においては、従来のストリーム暗号の欠点を除去するため、ストリーム暗号化に適した乱数の発生原理を模索し、以下に説明する暗号化方法を採用して、解読が事実上不可能で、かつ高速の暗号化、復号化処理を可能とすることができた。以下、本実施形態の暗号化の概要を説明する。
【００４０】
本実施形態においては、既知平文化攻撃に対して弱く、従来は用いられることが無かったストリーム暗号化を、乱数列と多重アファイン鍵（本発明の特徴であり、複数の多重アファイン鍵の係数を秘密鍵とするもので、所定使用回数ごとにその秘密鍵（係数）が書き換えられるため、解読しようとする第三者を排除することが可能）を用いて行なう。
【００４１】
完全な乱数を一度だけ使用するストリーム暗号であるヴァーナム（Vernam）暗号には解読法が存在しないことがシャノン（Shanon）により証明されている。このことは、既知平文攻撃法を排除し、良質な乱数の生成法が見出されれば、安全で高速な暗号法が確立できることを示している。
【００４２】
本発明はこの点に着目し、未定係数法が適用できないような疑似乱数生成法を考案し、この乱数を用いてストリーム暗号を生成することにより、信頼性の高い暗号化を実現した。
【００４３】
具体的には、多重アファイン鍵を用いて良質な乱数を発生させるものであり、この時多重アファイン鍵を一定使用回数ごとにその係数を書き換えていくものである。つまり、一定使用回数ごとに書き換えられる多重アファイン鍵を、第三者の解読が困難な暗号化・復号化の鍵として使用し、更にこの多重アファイン鍵を複数用意することで、書換の際に複数の鍵が相互に参照し合い係数を自動的に更新していくことにより、第三者の未定係数法による暗号解読を排除するものである。
【００４４】
つまり本発明は、鍵の寿命というものを定義し、古くなった鍵（多重アファイン鍵の係数）を自動的に書き替えていく方法、多重アファイン鍵を利用して、良質な乱数列｛Ｒｉ｝を発生しこれを暗号・復号に適用する暗号化方法を提供するものである。
【００４５】
［アファイン鍵の説明］
本実施形態で用いるアファイン鍵を以下に説明する。
【００４６】
本発明で用いられるアファイン鍵とは、暗号化に用いられる乱数列を発生するための多重アファイン鍵の係数に該当する。そして、このアファイン鍵は乱数列発生への所定使用回数ごとに自動更新されることにより、第三者の解読を完全に排除するものである。
【００４７】
有限体Ｆを考えた時に、有限体Ｆは整数の集合とその上の演算を具体的に指定して実現できる。例えば、Ｆ＝Ｚ／（ｐ）（ｐ素数）、または標数ｐのガロア体として表わすことができる。この時の有限体Ｆの上のアファイン鍵Ｋは４個の整数Ｋ＝｛ａ，ｂ，ｃ，ｎ｝で表わすことができる。 ここで整数ｘ∈Ｆへのアファイン鍵Ｋの作用を次のように定義する。
【００４８】
Ｋ（ｘ）＝ａｘ＋ｂ
なお、ｃはアファイン鍵が何回使われたかをカウントするカウンタ、ｎはこの鍵を使用出来る回数の上限（寿命）である。そして、一つのアファイン鍵はレーマー法の疑似乱数を生成する。
【００４９】
そして実際には一つのアファイン鍵を用いるのではなく複数のアファイン鍵を用いる多重アファイン鍵システムを採用する。
【００５０】
多重アファイン鍵システムは、鍵の個数をＭとすると、構造体の表現の意味において複数のアファイン鍵｛K[i]｝（０≦ｉ≦Ｍ−１）と、鍵の書き換え処理を示す一つの手順：プロシージャ（procedure）ｗ（ｉ，ｊ：integer）からなる。
【００５１】
0003923267.tif 000002
ここで、乗法と加法は、考えている有限体の演算を用いるものとする。
【００５２】
このプロシージャにおいて、書き換えようとするｉ番目のアファイン鍵Ｋ［ｉ］の係数ａは、書換の参考となるｊ番目のアファイン鍵Ｋ［ｊ］の係数ａと係数ｂとに基づき、書き換えられることが判る。
【００５３】
更に書き換えようとするｉ番目のアファイン鍵Ｋ［ｉ］の係数ｂは、書換の参考となるｊ番目のアファイン鍵Ｋ［ｊ］の係数ａと係数ｂとに基づき、書き換えられることが判る。
【００５４】
暗号化処理はソフトウェアで実現することが可能であり、ソフトウエアを起動した段階で各K[i]を何らかの方法で初期化する。後述する理由によって、特に断らない場合はK[i].n＝３とする。このように暗号化処理の起動時にアファイン鍵を初期化するように制御しても、後述するように暗号文を解読することは事実上不可能である。
【００５５】
［暗号文生成方法］
次に、本発明の第１実施形態である多重アファイン鍵による平文の暗号化・復号化の手順を、図６，図７のフローチャートを用いて以下に説明する。
【００５６】
図６において、通信文である平文｛ｍｉ｝が暗号化され暗号文｛ｃｉ｝となる順が示される。ここで、乱数列の初期値ｘ０を与え、次のルールで乱数列を生成する。即ち、最初は▲１▼から▲５▼のステップを実行し、その後は▲２▼から▲５▼のステップを繰り返して実行することにより、乱数列の生成および通信文のバイト列｛ｍｉ｝より暗号文ｃｉを生成する処理を行う。
【００５７】
ステップ▲１▼
ｉ＝０として、乱数列の初期値ｘ０を付加する。
【００５８】
即ち、最初に暗号文の先頭に乱数列の初期値ｘ０を添付して互いの同期をとる。これにより、多重アファイン鍵Ｋの設定がなされ、Ｋｄ、ｘの初期化がなされる（Ｓ５１）。
【００５９】
ステップ▲２▼
次に平文ｍｉが読み込まれ（Ｓ５２）、アファイン鍵ｋ［ｉ］を用いて以下の手順で乱数列｛Ｒｉ｝が生成される（Ｓ５３，Ｓ５４）。
【００６０】
ｘｄ＝K[i]（ｘｄ−１），K[i].c＝K[i].c＋１
そして次にＫ［ｉ］．ｃは設定回数ｎ以下であれば、まだ鍵の更新は必要がないため、このまま発生した乱数列｛Ｒｉ｝と平文ｍｉとが排他的論理和で演算されることで暗号化がなされ（Ｓ６０，Ｓ６１）、得られた暗号文Ｃｉが出力される（Ｓ６２）。
【００６１】
ｃｉ＝ｍｉ（ｘｏｒ）（ｘｄ  and ２５５）
（３）のステップ
又、ここでｊをｘの上位８ビットとして、次に使用されるアファイン鍵Ｋを特定される（Ｓ５５）。
【００６２】
ｊ＝（ｘｄ  shr  ８）and（Ｍ−１）
但し、Ｍは鍵の個数を表わし、Ｍは２のべき乗とする。
【００６３】
▲４▼のステップ
もしK[i].c≧K[i].nならばｗ（ｉ，ｊ）を実行し、K[i].c＝０とする。
【００６４】
つまり、書換の必要な回数に使用回数が至っていれば、上記した書換のためのプロシージャｗ（ｉ，ｊ）が実行され、多重アファイン鍵の係数ａ，ｂが書き換えられることになる（Ｓ５７〜Ｓ５９）。
【００６５】
▲５▼のステップ
ｉ＝ｊとする。
【００６６】
上記ステップ▲２▼に戻り、以降次の通信文に対してステップ▲２▼乃至▲５▼のステップを繰り返す。図６のフローチャートでは、ステップＳ６２からステップＳ５２へ処理がすすむ部分に該当する。即ち、以後の処理では互いに多重アファイン鍵、乱数列を自動的に書換えながら暗号化／復号化処理を行うことになる。
【００６７】
この場合には、多重アファイン鍵｛K[i]｝は互いの通信相手共に全く同ように書き換えられていくため、互いの同期がとれているかぎりは共通の鍵情報を共有でき、互いの通信文中に暗号化鍵情報を含めることなく通信等を行うことができる。
【００６８】
［暗号文解読方法］
本発明の多重アファイン鍵による暗号文の解読処理を図７のフローチャートを用いて説明する。基本的に、暗号文の生成方法とこの暗号文の解読方法の手順は、ほとんどが同一のものであると考えて良い。
【００６９】
つまり、その暗号文を解読するには、暗号文が作成された場合と同様の乱数列を生成してやる必要があり、従って多重アファイン鍵Ｋの設定、Ｋｄ、ｘの初期化（Ｓ７１）の初期化の処理は、暗号化のステップＳ５１の処理と同一のものでなければ、同一の乱数列｛Ｒｉ｝は得られない。
【００７０】
従って乱数列生成の手順（Ｓ７２〜Ｓ７５）も、暗号化の乱数列生成の手順（Ｓ５２〜Ｓ５５）と同一でなければならず、更にアファイン鍵の書換処理（Ｓ７６〜Ｓ７９）も暗号化のときの書換処理（Ｓ５６〜Ｓ５９）と同じでなければならない。
【００７１】
最後に復号化の部分については、暗号化の際に平文ｍｉと乱数列｛Ｒｉ｝との排他的論理和を求める（Ｓ６０〜Ｓ６２）のに対して、復号化の際には暗号文Ｃｉと得られた乱数列｛Ｒｉ｝との排他的論理和を求める（Ｓ８０〜Ｓ８２）ことで最初の平文ｍｉが得られるわけだが、これも非常に似ており、結局、暗号化処理と復号化処理はほぼ同一であると言っても間違えではない。
【００７２】
［乱数列の性質］
以上の多重アファイン鍵による方法で生成される乱数列｛Ｒｉ｝は非常に長い周期を持っている。実験によると、２つのアファイン鍵の場合でもＭ２以上の周期となる。３個以上のアファイン鍵を使用すると、周期を測定することができないほどになる。また、レーマー法で問題となる乱数列の高次元疎結晶構造も存在しないことが確認できた。
【００７３】
以上のことから、多重アファイン鍵を用いてストリーム暗号を生成する多重アファイン鍵暗号は非常に高い安全性を有していることが明らかである。
【００７４】
また、このように、多重アファイン鍵による方法で生成される乱数列｛Ｒｉ｝は非常に良質の乱数列であり、繰り返し周期が無視できる長さとなり、この方法により生成した乱数列は暗号化に用いるのみではなく、各種の処理に適用して好結果を得ることができる。
【００７５】
例えば、モンテカルロ法を用いた数値積分などでも良好な結果を得ることができ、一般の演算では膨大な時間が必要となる演算においても、上記方法で発生させた乱数による演算を所定回数行なってその演算結果を評価すれば、少ない演算量で誤差の少ない良質の結果が導き出せる。このため、乱数を利用する各種処理に適用することにより、片寄りのない良好な結果が得られる。
【００７６】
本実施形態では、乱数列｛Ｒｉ｝を１６ビット以上の整数値とする。そして、この下位８ビットを暗号化に使用し、上位８ビットは暗号化には関わらず、鍵の番号を選択するためのデータとして使用する。この上位８ビットのデータは、暗号鍵の外部から見ることができない情報となる。
【００７７】
本実施形態の暗号化においては、鍵の個数は不定であり、鍵の個数を増加させても暗号化の速度にはほとんど影響が出ない。鍵の個数は通常２〜２８＝２５６個のいずれかになる。これらのアファイン鍵が、常時ある確率で更新されながら暗号化が行われる。このため暗号鍵を特定することが非常に困難である。暗号鍵が特定できなければ、本実施形態の暗号は解読が理論上不可能であるヴァーナム暗号（Vernam暗号）と同等と考えることができ、解読法が存在しない暗号ということができる。
【００７８】
［暗号の高速化手法］
以下に説明する本実施形態では、以上のことを考慮に入れて、高速な暗号化、復号化を実現するために以下の手法を用いることとし、一個の乱数を生成するのに一回の整数の乗法を実行するのみで足りるようにしている。またある確率でのアファイン鍵の更新を２回の整数の乗法で実現可能とし、比較的時間のかかる除算を不要としている。
【００７９】
鍵の更新の上限がＮ＝K[i].nで一定ならば、平均して鍵の更新には２／Ｎ回の整数の乗法が使われる。すなわち１バイト当たりの整数の乗法の回数は平均では｛１＋（２／Ｎ）＝（Ｎ＋２）／Ｎ｝となる。Ｎ＝３のときこの値は１．６６６…程度である。すなわち暗号鍵を長くすると安全性が増すが、整数の乗法は１バイト当たり平均で２回未満となる。
【００８０】
暗号の攻撃者から見てK[i].a，K[i].bは併せて４バイトの未知数であり、Ｎ＝３のときは３バイトの乱数を暗号化で使用すると、この鍵は書き換えられてしまう。このため、この場合のアファイン鍵システムは極めて安全である。
【００８１】
ｎｉ＝K[i].nを秘密鍵の情報をもとにランダムに設定すると、平均して鍵の寿命は長くなり、暗号化は高速化される。その分、暗号が解読されやすくなるが、実際には以下のような理由で、解読することはできないと見なすことができる。
【００８２】
鍵の中のいくつかはｎｉ＝３という寿命を持つ。この鍵は比較的頻繁に書き換えられる。一個の鍵の書き換えは、直後の乱数の生成から、確率的に影響する。実際に、一度でもこの鍵が使用されれば、それから後は、アファイン鍵システム自体が、全く別の乱数列を生成するようになる。この場合の整数の乗法の回数は平均すると
0003923267.tif 000003
となる。この値は、Ｍ＝３２，ｎｉ＝３の鍵の個数が５個程度、乱数｛ｎｉ｝の範囲が３≦ｎｉ≦５００の場合では１．０６１８といった値になる。この値は乱数｛ｎｉ｝の取り方に依存するが、実質的には１．１を超えることはない。すなわち、最も安全な上記の場合より５０％程度高速化することができる。
【００８３】
さらに、アファイン鍵の個数を増やした場合、最初の場合より鍵が増加して安全性が高まるが、暗号化の速度は逆に若千ではあるが高速になる。従ってＣＰＵの一次キャッシュメモリに収まる範囲であれば、アファイン鍵の個数は多いほうが有利になる。
【００８４】
以上に説明した暗号化方法を採用すると、安全性を高めても暗号処理速度は遅くならないという優れた作用効果を得ることができる。
【００８５】
［暗号文の解読不可能性の証明］
以上に説明した本実施形態の暗号化方法の安全性を説明する。
【００８６】
これまで、絶対に解読法が存在しないことが証明されている暗号は、上述したヴァーナム（Vernam）暗号だけである。しかしこのヴァーナム（Vernam）暗号は、平文と同じ長さの完全な乱数を秘密鍵として必要とするなど、実用的でない部分がある。この点を改良して実用的な暗号としたのが本実施形態の暗号であり、次のような意味で、完全守秘性を有している。
【００８７】
即ち、本実施形態の暗号で使用する多重アフアイン鍵システムＫ＝｛K[i]｝を考え、すべてのアフアイン鍵の寿命K[i].nを例えば「３」とすると、このとき、３バイトの暗号文について完全守秘性が成立する。
【００８８】
これは以下のような、実験によって確認できる。鍵は一個の場合を想定して守秘性が証明されれば多重鍵についても同ように守秘性が証明されるのは明らかである。
【００８９】
今、アファイン鍵をＫとして以下の処理を想定する。
【００９０】
ステップ１
８ビットの整数の乱数列ｒ１，ｒ２，ｒ３を任意にとる。この乱数を生成するアファイン鍵を以下のように作成する。
【００９１】
ステップ２
Ｋ＝｛ａ，ｂ，ｃ，ｎ｝とし、ａの上位８ビットをａ２、下位８ビットをａ１とする。同ようにｂの上位８ビットをｂ２、下位８ビットをｂ１とする。乱数の初期値ｘ０についても同ように上位８ビットｘ０２、下位８ビットｘ０１を考える。つまり、
ａ＝２５６＊ａ２＋ａ１，  ｂ＝２５６＊ｂ２＋ｂ１，  ｘ０＝２５６＊ｘ０２＋ｘ０１
とする（上位８ビットについては２５６を乗算して実質的に８ビット分シフトしている）。
【００９２】
ステップ３
ここで、まったくランダムにａ１，ａ２，ｂ１，ｂ２のいずれかの値を決めてしまう。例えば、ａ１＝４１などと特定の値を決めて以下の想定を行う。なお、ｘ０１＝ｒ１である。
【００９３】
ステップ４
ステップ３で仮に決めたａ１を除く残りのａ２，ｂ１，ｂ２，ｘ０２を適宜うまく選んでアファイン鍵Ｋを作成すると、このＫで生成される３個の乱数が上記のｒ１，ｒ２，ｒ３に一致するようにできる。このことは簡単なプログラムで実験的に確認できる。
【００９４】
従って、上記アルゴリズムを用いて解読を試みても、事実上無限に近いいくつもの解が存在する結果となり、解読された解のうちのどの解が正解の解であるかを特定することは不可能になる。
【００９５】
つまり、３バイトの暗号については、本実施形態の暗号を解読する手段はまったく存在しないことが証明されたことになる。
【００９６】
さらに、一般の多重アフアイン鍵システムＫ＝｛K[i]｝を考え、ここですべてのアファイン鍵の寿命K[i].nを「３」とすると、この多重アフアイン鍵システムによる暗号には解読法が存在しないことも以下の手法で証明できる。。
【００９７】
まずＫ［０］によって、３バイトの乱数が生成されたとする。この段階でＫ［０］を特定することはできない。これを特定するにはさらに何バイトかの乱数を調べる必要があることは明らかである。
【００９８】
次にＫ［０］は３バイトの暗号化を行ったために鍵の寿命がきてＫ［１］によって書き換えられるとする。するとＫ［０］を特定するにはＫ［１］を特定する必要が生じる。しかし、Ｋ［１］も３回使用されると別の鍵で書き換えられてしまうので特定できない。
【００９９】
Ｋ［１］がＫ［２］によって書き換えられるとする。するとＫ［１］を特定するにはＫ［２］を特定する必要がある。このようにして、この多重アフアイン鍵システムでは、すべてのアフアイン鍵を同時に特定する以外に鍵を特定する方法が存在しないことが分かる。結局、全部の鍵の可能性をしらみつぶしに詞べる方法以外に解読法が存在しない。
【０１００】
ここで使用された多重アファイン鍵システムＫ＝｛K[i]｝の鍵の個数をｅとすると、可能な多重アフアイン鍵システムの個数はｐ＝６５５２１の場合でもｐ２ｅ個以上存在する。この値はｅ＝３２の場合でさえ、１０３０８以上になる。
【０１０１】
従って、例えば多重アファイン鍵の中の一つの鍵のみがアファイン鍵の寿命K[i].nが「３」である場合であれば、事実上の解読法が存在せず、他の鍵の寿命にかかわらず本実施形態の上記暗号を解読することは事実上不可能である。
【０１０２】
［実用的なモデルについての説明］
以上の暗号化処理を実際の実用的なモデルについて説明する。
【０１０３】
実用的なモデルでは、最も安全な例では、有限体はＦ＝Ｚ／（ｐ），ｐ＝６５５２１、アファイン鍵の個数は３２個、書き換えのタイミングはK[i].n＝３，K[i].c＝K[i].a（ｍｏｄ  ３）という場合である。
【０１０４】
この場合における秘密鍵は１６ビットの整数６４個である。
【０１０５】
なお、乱数の初期値は、各暗号文の先頭に添付する方法を用いることが望ましい。そして、例えば一例としてこの初期乱数を元にして保有する多重アファイン鍵を使用して乱数を発生させる処理を所定回数実行させた後に、この時点の発生乱数と鍵の状態を暗号化に使用することをあらかじめ決めておけばよい。この方法を採用すれば、既知平文攻撃を有効に排除できる。
【０１０６】
この場合、アファイン鍵の総数は
0003923267.tif 000004
となり、これは３０９桁の数である。これは宇宙全体の素粒子の数より多いと考えられる数であり、事実上の解読は不可能である。
【０１０７】
以上に説明した第１の実施形態においては、暗号文の先頭に乱数列の初期値ｘ０を添付する方法を説明したが、本発明は以上の例に限定されるものではなく、グループ間の通信への適用をはかった以下のような方法によって同じ秘密鍵を安全に繰り返し使用できる。
【０１０８】
＜＜第２の実施形態＞＞
第２実施形態は、図８及び図９に示すように、最初から与えられた多重アファイン鍵で乱数を発生させるのでなく、秘密鍵Ｈや初期ベクトル値Ｖに基づいて生成された多重アファイン鍵で乱数列を発生する場合の暗号化・復号化方法を特定するものである。
【０１０９】
なお、第２実施形態においても、有限体は上述した第１実施形態と同じものを使用する場合を例として説明を行う。この場合、＜第１の手法＞と＜第２の手法＞とが考えられる。
【０１１０】
［グループ間の通信への適用］
以下に説明する方法は、通信者が複数の通信相手｛Ｂｏｂｊ｝と通信する場合に適する方法である。この場合、通信者は共通の秘密鍵Ｈを通信相手｛Ｂｏｂｊ｝たちと共有する。通信相手｛Ｂｏｂｊ｝は、通信者と通信するために、暗号文の先頭に１６進数の１つの数値である初期値ｖを含む初期ベクトル値Ｖを併せて添付する。そして次の手順で暗号文を作成する。
【０１１１】
＜第１の手法＞
ステップ▲１▼
図８は、本発明の第２実施形態に係る多重アファイン鍵の暗号化処理を説明する説明図である。
【０１１２】
図８において、通信相手｛Ｂｏｂｊ｝は、共通の秘密鍵Ｈ（５１）と初期ベクトルＶ（５２）とに基づき、多重アファイン鍵Ｋ（５４）の生成（５３）を行う。
【０１１３】
ステップ▲２▼
この時点の乱数値ｘ０を初期値として多重アファイン鍵Ｋを使用して、乱数列｛Ｒｉ｝を生成し（５９，６０）、これと排他的論理和（６２）を行うことで通信文ｍｉを暗号化する。これにより、暗号文Ｃｉが出力（６３）される。
【０１１４】
▲３▼のステップ
その後、図８のように（Ｖ，Ｃｉ）を暗号文としてネットワーク等を介して通信者に送出される。
【０１１５】
本発明の特徴である多重アファイン鍵Ｋの書換処理（５５，５７）は、多重アファイン鍵の一定使用回数ごとに自動的に行われ、第三者の解読を不可能にする。
【０１１６】
この暗号文を受け取った通信者（Alice）は、次の手順で暗号を復号化する。
【０１１７】
図９は、本発明の第２実施形態に係る多重アファイン鍵の復号化処理を説明する説明図である。
【０１１８】
ステップ▲１▼
図９において、暗号解読の際には、初めに初期ベクトル値Ｖと暗号文Ｃｉとを受信し（６３）、そして暗号化の場合と同ように、秘密鍵Ｈ（５１）と初期ベクトル値Ｖ（５２）とに基づき、多重アファイン鍵Ｋ（５４）が生成される（５３）。
【０１１９】
ステップ▲２▼
次に、この多重アファイン鍵Ｋが生成された時点の乱数値ｘ０を初期値として多重アファイン鍵Ｋを使用して乱数列｛Ｒｉ｝が生成される（５９）。この乱数列｛Ｒｉ｝と、入力された暗号文Ｃｉとの排他的論理和（７１）とを求めることにより、暗号文の解読が行われ、解読された平文ｍｉが出力されることになる（６１）。
【０１２０】
本発明の特徴である多重アファイン鍵Ｋの書換処理（５５，５７）は、解読処理においても暗号化処理と同ように、多重アファイン鍵の一定使用回数ごとに自動的に行われ、第三者の解読を不可能にしている。
【０１２１】
以上の処理により暗号文の復号化が行える。
【０１２２】
共通の秘密鍵Ｈを持たない部外者は、多重アファイン鍵Ｋを知ることが出来ないため、暗号文を解読することはできない。そしてこの方法では、毎回実質的に異なる鍵を使用するので、恒久的に安全性が保証される。しかし、暗号文の先頭に毎回、１３０バイトの初期ベクトル値Ｖが添付されることになる。
【０１２３】
この部分は用途によっては、次のように簡略化できる。即ち、暗号文Ｃｉの先頭に、初期値ｘ０と鍵変換の情報（α，β）を添付し、これを用いて共通の秘密鍵Ｈから新たな多重アファイン鍵Ｋを生成し、これによって暗号化を行うようにしても良い。この場合に通信制御手順を以下に示す。
【０１２４】
＜第２の手法＞
ステップ▲１▼
通信相手｛Ｂｏｂｊ｝は、１個の１６進数である初期値ｖと秘密鍵Ｈを用いて、２個の１６進数である鍵変換の情報（α，β）を暗号化する。つまり、鍵変換情報（α，β）は、（ｍｏｄ  ｐ）で計算されて（α′，β′）に暗号化される。
【０１２５】
ステップ▲２▼
次に、秘密鍵Ｈから鍵変換情報（α′，β′）を用いて多重アファイン鍵Ｋを生成する。
【０１２６】
秘密鍵Ｈ＝｛Ｈ１，…，Ｈ６４｝に対して多重アファイン鍵Ｋｉ＝α′Ｈｉ十β′（ｍｏｄ  ｐ）とし、新たに多重アファイン鍵Ｋ＝｛Ｋ１，…，Ｋ６４｝を作成する。
【０１２７】
▲３▼のステップ
次に生成された多重アファイン鍵Ｋを用いて同上のアルゴリズムによって乱数Ｒｉを発生し、平文ｍｉの暗号文Ｃを作成する。暗号文として〔ｖ，α，β，Ｃ〕 をネットワークに流し、通信者に送信する。
【０１２８】
以上の暗号文の解読も、同ように共通の秘密鍵Ｈを鍵変換情報（α’，β’）により変換して生成したアファイン鍵を用いて、乱数Ｒｉを発生し復号化を行う。この場合は一つの秘密鍵Ｈはｐ３＝２８１２８１７４７４１５７６１回使用できる。この第２の手法によれば、第１の手法とは異なり、鍵変換情報により元の暗号文がわずか６バイト長くなるだけで済む。
【０１２９】
＜＜第３の実施形態＞＞
第３実施形態は、乱数発生の際の計算方法を簡略化して処理速度の高速化を図った実施形態を特定するものである。つまり、ここでは、有限体としてＺ／（ｐ）：（ｐ＝６５５２１）を用いた場合、整数の乗法とともに、（ｍｏｄ  ｐ）の計算を行う。この計算は、整数の乗法一回分以上に遅い演算ではあるため、この（ｍｏｄ  ｐ）の計算を高速なａｎｄ（２１６−１）などに置き換えられないかを考えてみる。置き換えられれば、実質的に（ｍｏｄ  ２１６）で整数の計算を行うことを意味する。
【０１３０】
すべての計算をａｎｄ（２１６−１）などに置き換える方法で実行すると、多重アファイン鍵システムが次第に退化していき、鍵の成分がすべて「０」になったりする。すなわちこの計算では、鍵の複雑さを維持できない可能性が極めて高い。ところが、乱数列Ｒｉを生成するときの整数の乗法のみを
ｘｄ＝（K[i].a×ｘｄ−１＋K[i].b）ａｎｄ（２１６−１）
で計算し、鍵の書き換えは、これまで通り、（ｍｏｄ  ｐ）で計算すると、生成される乱数は比較的良好である。
【０１３１】
しかし、上記方法でも、K[i].b＝０の場合は上記の計算は、単なる整数の乗法になり、K[i].aが偶数であると、生成される乱数が「０」になる確率が高くなる。そこでK[i].b＝０の場合は、強制的にK[i].b＝１に書き直す。
【０１３２】
また、さらにK[i].a＝０の場合、同じ鍵が繰り返し使用されることになるので、乗法に関する周期の長い「１７」に変更する。１７はｐ＝６５５２１に対する原始根である。この部分を改良したところ、さらに５０％以上の高速化が実現できた。
【０１３３】
以下に、この場合の暗号化のアルゴリズムを段階的に説明する。
【０１３４】
［ａｎｄを使用した暗号化アルゴリズム］
これまで通り、多重アファイン鍵システムＫ＝｛K[i]｝，K[i]＝｛ａ，ｂ，ｃ，ｎ}を考える。{ａ，ｂ，ｃ，ｎ}は（ｍｏｄ  ｐ）で計算した乱数を使用する。またｐ＝６５５２１とする。
【０１３５】
ここで、整数ｘに対するアファイン鍵K[i]の作用を
K[i]（ｘ）＝（K[i].a×ｘ＋K[i].b）ａｎｄ（２１５−１）
とする。この計算を鍵の書き換えにまで適用すると、鍵の複雑さが維持できなくなることは既に述べた。また、少ない確率で、生成される乱数に不具合が発生する場合があるので、第３実施形態では鍵を書き換えるプロシージャｗ（α，β）を次のように変更する。
【０１３６】
0003923267.tif 000005
以上のようにすると、暗号化が高速化され、多重アファイン鍵の複雑さも維持できる。なお、ここで１７は、原始根の一つであり、他の原始根であっても同様の効果を有する。
【０１３７】
なお、以上の説明に処理の単位を１６ビットとしているのは、制御部の（コンピュータの）処理の単位が１６ビット（バイト単位）であるためであり、このために上位８ビット、下位８ビットに分けて処理しているためである。そしてビット中で最も大きな素数がｐ＝６５５２１であることよりこの値を利用したのである。処理の単位がバイト単位でない場合には以上の処理単位に限定されるものではない。
【０１３８】
［高速暗号化の手順］
最も高速な暗号化を可能とする第３実施形態の暗号化の手順を以下に示す。通信者(Alice)と通信相手(Bob)が秘密鍵Ｈを共有し、通信者から通信相手に通信文ｍｉを送る。以下では、アファイン鍵の個数は６４個の場合を例として説明を行う。しかし、この個数に限定されないことは勿論である。
【０１３９】
ステップ▲１▼
通信者（Alice)は初期値としての１個の１６進数の初期値ｖと乱数を成分とする１２８個の整数である初期ベクトルＶを準備する。
【０１４０】
ステップ▲２▼
通信者は初期値ｖと暗号鍵Ｈとを用いて、初期ベクトル値Ｖを暗号化し、これを（ｍｏｄ  ｐ）で計算したものを多重アファイン鍵Ｋとする。
【０１４１】
また、多重アファイン鍵Ｋ［ｉ］.nは秘密鍵Ｈを用いて 次のように設定する。
【０１４２】
Ｋ[i].n＝３（ｉ＝０，１，２，３，４）
Ｋ[i].n＝｛K[i].a（ｍｏｄ  ５００）｝＋３（５≦ｉ≦６３）
▲３▼のステップ
通信者は、この時点での乱数の値ｘ０を初期値として多重アファイン鍵Ｋを用いて、既に説明した暗号化方法に従って通信文ｍｉを暗号化し暗号文Ｃｉ作成する。
【０１４３】
▲４▼のステップ
最後に、通信者は通信相手にネットワークを介して｛Ｖ，Ｃ｝を送信する。
【０１４４】
このようにすると、通信者と通信相手以外の人間は鍵情報である秘密鍵Ｈを知らないので多重アファイン鍵Ｋを求めることができない。｛初期ベクトル値Ｖ｝は非常に多く存在するため、暗号を使用するたびに異なる多重アファイン鍵Ｋが使用されることになり、２つの異なるアファイン鍵Ｋが生成する乱数列｛Ｒｉ｝の間にはまったく相関が無いと考えられるので、既知平文攻撃は無意味になる。
【０１４５】
［高速復号化］
通信相手はこの通信文を受け取ったら、次の手順で暗号文を復号化する。
【０１４６】
ステップ▲１▼
通信相手（Bob）は初期値をｘ０とし、共通鍵Ｋを用いてＫ′を暗号化する。この結果、Ｈ＝Ｋ（Ｋ′）（ｍｏｄ  ｐ）として、通信者（Alice）と同じ多重アファイン鍵Ｈを獲得できる。
【０１４７】
またＨ[i].nも上述のようにしてＫを用いて設定する。
【０１４８】
ステップ▲２▼
ＣをＨで暗号化すると通信文Ｍを得ることができる。
【０１４９】
このようにして、暗号化を高速化することができ、第１実施形態の安全性を重視した場合に比較して約２．５倍程度高速化することができる。例えば、最新の高速パーソナルコンピュータ（インテル製PentiumIIの動作クロック４５０ＭＨＺのＣＰＵ搭載）を用いて１０４８５Ｋバイトのファイルを暗号化したところ、約０.８４秒程度で暗号化処理を終了することが確認できた。これは一秒間に１００メガビット程度を暗号化した計算になる。これは既存のすべての暗号と比較しても３倍以上高速であることを示している。
【０１５０】
以上に説明した各実施形態の多重アファイン鍵暗号化システムは、８ビットの乱数列を生成する装置を定義している。この装置は純粋にソフトウェアのみで実現されているが、１００Ｍビット／秒の速さで乱数を生成できる。この乱数は次の点で優れている。
【０１５１】
・素数ｐによって（ｍｏｄ  ｐ）で実行されるレーマー（Lehmer)法より高速である。
【０１５２】
・レーマー法によって生成される乱数より良質である。
【０１５３】
・本アルゴリズムで生成される乱数は極めて長い周期を持っており、実質的に周期が無いと見なすことが可能である。
【０１５４】
・より複雑な乱数生成のために、アファイン鍵の個数を増やしても、処理速度 が低下しない。
【０１５５】
・アファイン鍵の一部を、より高次の多項式による鍵などに変更して、乱数を改良しても、実質的にはほとんど速度低下が起こらない。
【０１５６】
このような特徴のため、上述した各暗号化処理を実行するための特別なチップを作成した場合においても、そのチップは、高速な乱数生成用のチップとして転用することができ、リアルタイムにモンテカルロ法などを活用する道が開かれる。
【０１５７】
＜＜第４の実施形態＞＞
第４実施形態は、図１に示すように、既に説明した各暗号化方法を具体的に採用した暗号化システムの構成例を特定するものであり、特に第１実施形態の多重アファイン鍵を用いた基本的な暗号化・復号化方法を用いた構成である。図１は上述した暗号化方法によりデータ通信を実現するデータ通信システムの構成例を示す図である。
【０１５８】
図１において、通信者１０は、通信相手２０、３０、４０とネットワークＮＷを介して接続されている。通信者１０、通信相手２０、３０、４０はそれぞれ略同様の構成を備えているため、通信者１０を例として詳細構成を示している。しかし、他の通信相手も同様の構成を備え、上述した各暗号化／復号化処理を実行可能である。
【０１５９】
通信者の通信装置１０は、ＲＯＭ１２に格納されている制御手順に従って装置全体の制御を司る制御部１１、ＲＯＭ１２、ＲＡＭ１３、通信データを保持するメモリ１４、メモリ１４に保持の通信文を暗号化すると共にレシーバ／ドライバ回路１８よりの受信暗号化情報を復号化する暗号化回路１５、暗号化処理におけるアファイン鍵を生成、保持するアファイン鍵保持部１６、アファイン鍵保持部１６に保持のアファイン鍵に従った乱数を発生する乱数発生回路１７、暗号化回路１５よりの暗号化文をネットワークＮＷを介して例えば他の通信相手に送信すると共に他の通信相手よりの暗号化情報などを受け取るレシーバ／ドライバ回路１８などで構成されている。
【０１６０】
［第１の通信制御手順］
このような働きをもつ通信システムにおける第１の通信制御手順を図２に示す。図２に示す第１の通信制御手順は、高速な暗号化通信が可能な方法であり、自己書換によりアファイン鍵を継続的に利用していく方法である。この通信制手順は、企業の部署間、本店−支店間通信など１対１の通信に適した方法である。
【０１６１】
前提として互いのアファイン鍵生成部１６で共通の多重アファイン鍵Ｋを保持しているものとし、乱数発生回路１７は多重アファイン鍵Ｋにより乱数列｛ｒ１，ｒ２，ｒ３，・・・｝が生成されるものとする。従って、データＡＢＣの暗号化／復号化は、Ｘ（ＡＢＣ）＝｛Ａ（ｘｏｒ）ｒ１｝，｛Ｂ（ｘｏｒ）ｒ２｝，｛Ｃ（ｘｏｒ）ｒ３｝である。
【０１６２】
図２に示すように、多重アファイン鍵は通信を行う毎に書き換わっている。そして、送信側受信側ともに書き換わったアファイン鍵を保持しており、この互いに書き換えたアファイン鍵を用いて乱数列を生成して、生成した乱数列を用いて暗号化／復号化を行っている。
【０１６３】
即ち、通信を行う毎に多重アファイン鍵は書き換わっており書き換わった多重アファイン鍵は夫々のアファイン鍵生成部１６で保持しておく。このように、鍵情報が固定でないため、安全性の極めて高い暗号化方法となっている。
【０１６４】
但し、通信上のトラブル時などには互いのアファイン鍵が共通でなくなることも考えられるため、双方のいずれかの要求でアファイン鍵の共通化のシーケンスを備えることが望ましい。
【０１６５】
これは、一方よりのアファイン鍵の送信であっても、互いに予め定めた初期設定されているアファイン鍵に設定し直されるものであっても良い。
【０１６６】
この方法によれば、送信側と受信側との通信に原則として鍵情報が伝送されることがなく、然も暗号化の鍵情報は通信の都度変更となるため、実質的には解読の不可能な、極めて信頼性の高い暗号化が実現する。然もこの場合においても、暗号化を上記方法で行うことにより、非常に高速に処理することができる。
【０１６７】
＜＜第５の実施形態＞＞
第５実施形態は、図３に示すように、予め格納してある多重アファイン鍵Ｋを通信の度に転送される初期ベクトル値Ｖとしての乱数列α、…等により変形されて与えられる多重アファイン鍵Ｋα、…等によって暗号・復号処理が行われる通信システムを特定するものである。
【０１６８】
［第２の通信制御手順］
このような働きをもつ通信システムにおける第２の通信制御手順を図３に示す。図３に示す第２の通信制御手順は、乱数による多重アファイン鍵を変形使用する例であり、ベースとなる多重アファイン鍵Ｋを送受信側双方で固定的に保持（例えばＲＯＭ１２に保持）し、通信する毎に乱数α、β、γで鍵情報の形を変えて暗号化する方法であり、例えば携帯電話の通信内容の暗号化など、不特定多数に対する通信の暗号化に適した方法である。
【０１６９】
前提として多重アファイン鍵Ｋを送信側、受信側共に固定的に保有している。そして、乱数列α、β、γを多重アファイン鍵Ｋで暗号化して得られている値をデータ暗号化に使用する多重アファイン鍵Ｋα、Ｋβ、Ｋγとして使用する。このため、送信側は、例えば通信文（ＡＢＣ）の暗号化文（Ａ’Ｂ’Ｃ’）とともに暗号化に用いる乱数列αを送信する。これにより、受信側ではこの乱数列αを多重アファイン鍵Ｋで暗号化した乱数列を新たな多重アファイン鍵Ｋαとしてこれを用いて更に暗号化文（Ａ’Ｂ’Ｃ’）を復号化する。
【０１７０】
送信側では、乱数発生回路１７での発生乱数を通信の都度変更しているため、乱数で鍵情報の形が変えられることになり、既知平文攻撃などに強い暗号化文とすることができる。また、暗号化も高速で行うことができる。なお、上述した実施形態のように、乱数列α、β、γを１６ビット以上の整数値とした場合に、下位８ビットを暗号化に使用すれば良い。
【０１７１】
＜＜第６の実施形態＞＞
第６実施形態は、図４に示すように、送信側と受信側との間で秘密鍵Ｈと乱数α、βとを交わすことにより、通信毎に互いに多重アファイン鍵Ｋを交換する通信システムを特定している。
【０１７２】
［第３の通信制御手順］
このような働きをもつ通信システムにおける第３の通信制御手順を図４に示す。図４に示す第３の通信制御手順は、通信を開始するたび毎に最初に多重アファイン鍵Ｋを共有する手続を行い、共有した多重アファイン鍵Ｋを用いて暗号化を行う方法である。この方法は、鍵交換に時間はかかるが、ＷＷＷなどの情報プラウザの暗号化等に用いることで高い暗号化効果を得ることができる。
【０１７３】
第３の通信制御手順においては、通信を開始する最初にディッフィー−ヘルマン（Diffie-Hellman)の鍵交換を用いて多重アファイン鍵を共有する手続を行う。
【０１７４】
具体的には、秘密鍵Ｈを多倍長整数又はＺ／ｐの有限次拡大体の元とみなして演算を定義し、乱数をα、βとすると、図４に示すように、まず送信側は秘密鍵Ｈαを生成し、秘密鍵Ｈ、Ｈαを受信側に送る。これを受取った受信側では、受信した秘密鍵Ｈ、Ｈαから多重アファイン鍵Ｋ＝（Ｈα）βを生成する。
【０１７５】
そしてこの暗号化のための多重アファイン鍵Ｋを生成した秘密鍵Ｈβを送信側に返送する。送信側では、受信した秘密鍵Ｈβに基づき暗号化のための多重アファイン鍵Ｋ＝（Ｈα）βを生成する。
【０１７６】
そして、以降各送信データＡＢＣ，ＤＥＦ，ＧＨＩ，・・・をこの多重アファイン鍵Ｋで暗号化して送信し、受信側ではこれを多重アファイン鍵Ｋで復号化する。
【０１７７】
以上に述べた第３の通信制御手順においては、鍵交換処理に１ないし２秒の時間がかかるが、鍵情報が通信の度に毎回変更となるため、解読される可能性は低く、安全性が高い暗号化が提供できる。なお、この方法はさほど通信頻度が高くない通信に適している。
【０１７８】
なお、以上の説明においては、通信の都度多重アファイン鍵を通信する例について説明したが、通信の都度行う場合に限定されるものではなく、例えば毎日の通信の最初にのみ多重アファイン鍵を交換するように制御しても、あるいは一定周期毎に多重アファイン鍵を交換するように制御してもよい。
【０１７９】
更に、アファイン鍵をランダムにかえていくのではなく、予め定めた所定種類のアファイン鍵に順次替えていき一定周期で元の鍵に戻る循環方式でかえていくものであっても良い。即ち、一定周期で先に鍵と同じ鍵を繰り返し用いる方法であっても、事実上の解読は不可能であり、高い安全性が保てる。
【０１８０】
さらに、この方式を用いることにより、送信側と受信側のアファイン鍵の状態がずれたような場合であっても、容易に互いのアファイン鍵の整合性をとることができる。例えば、鍵に特定の番号を付加しておいてこの番号を通知しあうことで互いのアファイン鍵を整合させることも可能である。
【０１８１】
＜＜第７の実施形態＞＞
第７実施形態は、図５に示されるもので、上述した本発明の暗号化・復号化方法を、例えば通信回線を利用したクレジットカード等の個人認証に用いられる認証方法への応用を特定するものである。
【０１８２】
［本実施形態の暗号化方法を用いた認証方法］
このような暗号化方法及び暗号文の通信制御手順を用いる特定相手先の認証方法を以下に説明する。上述した多重アファイン鍵を用いた暗号化文には、実質的な解読法が存在しない。従って、上記暗号化文を利用して特定の相手先認証を行うことにより、部外者が認証内容を解読できない認証方法とすることができる。
【０１８３】
即ち、認証のためのキーワード等を上記暗号化に用いる多重アファイン鍵Ｋとして予め認証対象（認証先１０８）に付与しておき、この多重アファイン鍵Ｋを用いて暗号化した情報を認証元１０７に返送させ、これを複号化してすることにより、通信内容を部外者に知られても部外者が暗号化のための鍵を解読することができないことより、上記認証のためのキーワードが他に解読されることがなく、非常に信頼性の高い、かつ安全性の高い認証方法が提供できる。
【０１８４】
第１の認証方法として、例えば図５の場合のように、認証先１０８（例えばクレジットカードの会員）に予め所定の初期ベクトルＶを付与しておき、認証元１０７は認証時に認証先１０８に前記所定の初期ベクトルＶを用いて発生した乱数列ＨＶ及び通信情報Ｍを送信する。認証先１０８は受信した乱数列ＨＶと予め付与された所定の初期ベクトルを用いて暗号化のための多重アファイン鍵Ｋを生成し、生成した多重アファイン鍵Ｋを用いて通信文Ｍを暗号化した暗号文Ｍ’を認証元１０７に返送する。一方、認証元１０７は乱数列ＨＶと初期ベクトルＶとを用いて暗号化のための多重アファイン鍵Ｋを生成し、生成した多重アファイン鍵Ｋを用いて認証先１０８から受けた暗号文Ｍ’を復号化し、正確に復号化できれば正しい認証先と認証する認証方法である。
【０１８５】
第２の認証方法として、認証元１０７は最初に初期ベクトルＶと所定の通信文Ｍを認証先１０８に送る。認証先１０８は、この初期ベクトルＶに基づき予め付与された多重アファイン鍵Ｋを用いて新たな乱数列Ｒｉを生成し、生成された乱数列Ｒｉを用いて通信文Ｍを暗号化して認証元１０７に返送する。認証元１０７は初期ベクトルＶに基づき認証先１０８と同様の多重アファイン鍵Ｋを用いて新たな乱数列Ｒｉを生成し、生成された乱数列を用いて受けた暗号化文Ｍ’を復号化し、正確に復号化できれば正しい認証先と認証する認証方法である。
【０１８６】
具体例に基づいて以下に説明する。この認証の対象としては、例えば以下の各場合に適用可能である。なお、適用対象としては以下に示す例に限定されるものではなく、個人あるいは電子機器等の装置を特定するための認証であれば種々の場合に適用できることは勿論である。
【０１８７】
（１）インターネット等の通信手段を利用した電子商取引の認証情報に上記暗号化のための多重アファイン鍵を用いる。
【０１８８】
（２）有料テレビ放送の受信許可のためのキーワードに上記暗号化のための多重アファイン鍵を用いる。
【０１８９】
（３）電子機器内に機器ごとに固有の多重アファイン鍵を付与しておき、機器特定のための認証情報として用いる。例えば、携帯電話等の無線機器の通信許可のための認証に上記暗号化のための多重アファイン鍵を用いて無線機器の通信許可の安全性を図る。
【０１９０】
（４）予め個人ごとに固有の多重アファイン鍵を付与しておき、個人特定のための認証情報として用いる。
【０１９１】
具体的な認証のための通信制御手順を図５を参照して説明する。図５は上述した暗号化方法を利用した認証手順例を示す図である。基本的な通信制御手順は上述した実施例の第３の通信制御手順と同様の制御手順を用いる。
【０１９２】
認証の前提条件として、認証対象（認証先）１０８に固有の認証情報として初期ベクトルＶを付与しておく。この初期ベクトルＶは、例えば個人認証カードや認証対象の電子機器内に登録しておけばよい。あるいは、個人の指紋を読み取って例えばフーリエ変換して結果を初期ベクトルＶとして用いてもよく、このようにすれば、機器内に認証情報を記憶する必要がなく、より安全性が高まる。
【０１９３】
認証対象である認証先１０８及び認証元１０７には予め共通の多重アファイン鍵Ｋが用意されているものとする。そして、認証元１０７は、図５に示す認証先１０８との認証手順実行開始前に、認証先１０８に付与した初期ベクトルＶを検索しておき、例えばこの初期ベクトルＶを多倍長整数又はＺ／ｐの有限次拡大体の元とみなして演算を定義し、認証に用いる通信文をＭとすると、図５に示すように、まず送信側である認証元１０７はＨＶを生成し、（Ｖ，Ｍ）を受信側である認証先１０８（認証対象）に送る。
【０１９４】
これを受取った認証先１０８では、受信した（Ｖ，Ｍ）の中のＶから多重アファイン鍵Ｋを生成する。
【０１９５】
そしてこの多重アファイン鍵Ｋを通信文Ｍの暗号化のための多重アファイン鍵Ｋとして用いる。そして、生成した多重アファイン鍵Ｋで通信文Ｍを暗号化して暗号化文Ｍ´を認証元１０７に返送する。
【０１９６】
認証元１０７では、認証先１０８と同ようにして初期ベクトルＶを用いて多重アファイン鍵Ｋを生成する。そして、認証先より受信した暗号化文Ｍ´を生成した多重アファイン鍵Ｋで復号化する。ここで、Ｋ（Ｍ）＝Ｍ´であれば、認証先が正しかったと判断する。そうでなければ、認証先が正しくなかったと判断する。
【０１９７】
なお、以上に述べた認証のための通信制御手順に先だっての認証先の特定が困難である場合には、認証に先立つ通信制御手順として、認証先を特定する情報、例えば認証先のＩＤ番号情報を問合わせてこのＩＤ番号情報を受け取って受取ったＩＤ番号情報より認証先の多重アファイン鍵を検索してくる通信制御手順を行うようにしても良い。
【０１９８】
このように制御しても、ＩＤ番号情報のみが通信されるのみであり、認証手順でも多重アファイン鍵が通信されることがなく、多重アファイン鍵が解読されることがない暗号法を用いて認証を行うために、極めて安全性の高い認証が可能となる。
【０１９９】
また、他の認識方法として、認証元１０７は最初に初期ベクトルＶと所定の通信文Ｍを認証先１０８に送る。認証先１０８は初期ベクトルＶに基づき新たな乱数列｛Ｒｉ｝を生成し、生成された乱数列を用いて受信した通信文Ｍを暗号化して暗号化文Ｍ´を認証元に返送するように制御しても良い。
【０２００】
そして、認証元１０８は初期ベクトルＶを用いて新たな乱数列｛Ｒｉ｝を生成し、生成された乱数列を用いて受信した認証先よりの暗号化文Ｍ´を復号化して正確に復号化できれば正しい認証対象と認証する認証方法としても良い。
【０２０１】
上述した各暗号化方法により暗号化した文を同様の手順で復号化して正確に復号化できれば認証先が正しかったと認証するようにすれば、安全性の高い認証が可能となる。
【０２０２】
＜＜第８の実施形態＞＞
第８実施形態は、図１０に示されるものであり、本発明の暗号化・復号化方法を適用したネットワークシステムに用いられるルータ装置を特定するものである。
【０２０３】
図１０において、上述した多重アファイン鍵を用いた暗号化・復号化方法を用いたネットワークに接続される複数の通信装置１７１，１７２と、ルータ装置１７３とが示されている。通信装置１７１，１７２においては、所定の処理動作を行うアプリケーション１７４に接続される制御部１７５と、この制御部１７５の一部の機能としての暗号化制御部１７６、送受信制御部１７７、ネットワーク制御部１７８とがそれぞれ、多重アファイン鍵による乱数生成部１７９，暗号化／復号化部１８０，ネットワークコントローラに接続されている。そして、このネットワークコントローラ１８１は、一例として社内等の一定の領域に設けられたＬＡＮなどのネットワークＮＷに接続されている。
【０２０４】
このような構成による通信装置１７１，１７２は、上述したように様々な形式において本発明の多重アファイン鍵による乱数列に基づく情報の暗号化・復号化を行い、このネットワークＮＷを介して高いセキュリティを保ちながら、各データの送受信を可能としている。
【０２０５】
又更にルータ装置１７３においては、第１のネットワークＮＷに接続される第１ネットワークコントローラ１８１と更にこれとは異なる外部のネットワークＮＷ２に接続される第２のネットワークインタフェース１８２と、これらの動作を制御している制御部１７５と、この制御部１７５の一部の機能としての暗号化制御部１７６、送受信制御部１７７、ネットワーク制御部１７８とがそれぞれ、多重アファイン鍵による乱数生成部１７９，暗号化／復号化部１８０，ネットワークコントローラ１８１に接続されている。
【０２０６】
このような構成において、ルータ装置１７３は、これらの異なるＬＡＮ同士を接続するものであり、制御部１７５の制御に基づいて、複数のネットワーク間の通信装置や経路の接続を制御するものである。このとき、このルータ装置にあっては、制御部の暗号化制御部１７６の制御の元に、本来のルータ装置の働きに加えて、与えられた所定の情報のみを設定に応じて上述したように本発明の多重アファイン鍵による乱数生成部１７９により発生した乱数列｛Ｒｉ｝に基づき暗号化し、この暗号化文を他の接続した通信装置１７１，１７２等、又、外部のネットワークＮＷ２へ転送することが可能となる。又更に例えば外部のネットワークＮＷ２に対する送受信情報については、必ず本発明の多重アファイン鍵による暗号化・復号化処理を行うことにより、内部のネットワークＮＷの情報を外部に対して機密を保つことが可能となる。この際の暗号化・復号化の行い方は、上述した第１〜第３実施形態に示された方法に限らず、多重アファイン鍵を用いた様々な形態が可能であり、迅速な処理により完全な機密保持を可能とする。
【０２０７】
＜＜第９の実施形態＞＞
第９実施形態は、図１１乃至図２１に示されるように、多重アファイン鍵を用いた暗号化・復号化方法をコンピュータ上で動作可能とするアプリケーション・コンピュータプログラムとして実現したコンピュータプログラム及びこれを格納する媒体更にこのコンピュータプログラムがロードされたコンピュータ装置を特定するものである。
【０２０８】
図１１は、このアプリケーションプログラムの基本動作を示すフローチャート、図１２は、このプログラムのメインメニュを示す画面、図１３は、鍵ファイルの読込の画面、図１４は、暗号化ファイルの読込の画面、図１５は、暗号化処理の開始画面と終了画面を示す図、図１６は、暗号化ファイルの作成の画面、図１７は、複合化処理の対象とする暗号化ファイルの選択の画面、図１８は、復号化処理の開始画面と終了画面を示す図、図１９は、複合化ファイルの作成の画面、図２０は、鍵ファイルの作成の画面、図２１は、このプログラムが実行されるコンピュータシステムの外観図である。
【０２０９】
上述してきた本発明の多重アファイン鍵の暗号化・復号化方法は、例えばパーソナルコンピュータ上のアプリケーション・コンピュータプログラムとして非常に効率よく実現されるものである。それは、暗号化・復号化の各種の設定から暗号化し復号化したファイルの読出や格納を含めて必要な機能を持つものであり、例えばファイルの圧縮・解凍のアプリケーションにも似て容易に操作が可能である。
【０２１０】
以下、図１１の基本動作を表すフローチャートを中心に、操作画面を参考にしながら順に説明していく。
【０２１１】
初期化がなされた当該プログラムは（Ｓ１０１）、例えば図２１に示されたコンピュータシステム１３２，１３３，１３４の画面上１３１において、最初に図１２に示すメインメニュが現れる（Ｓ１０２）。このメニュ画面において、鍵ファイルを読み込むためのリードキー１０２，暗号化処理を行うためのエンコードキー１０３，復号化処理を行うためのデコードキー１０４，鍵の数を設定するための安全鍵数１０５，鍵の書換回数１０６，新鍵ファイルを作成するためのメイクキー１０７，操作等の質問を行うためのクエッションキー１０８が表示され、入力があれば（Ｓ１０３）、このフローチャートに従ってそれぞれ処理されることになる。
【０２１２】
今、一つの文書ファイルをこのプログラムにより暗号化し復号化する手順に従ってこのプログラムの操作を説明する。初めに、暗号化・復号化のための多重アファイン鍵の鍵数１０５を入力し（Ｓ１２１）、本発明の多重アファイン鍵の自動書換のための使用制限回数１０６の入力を行う（Ｓ１２２）。次に、暗号・復号のための乱数生成のための鍵ファイルの指定を行うものであり、図１３に示すようにキー情報のある場所を画面１０９により指定されることで（Ｓ１０４）、この指定された鍵ファイルが読み込まれる（Ｓ１０５）。次に、暗号化すべきファイルを図１４に示す画面１１１より指定して読み込む（Ｓ１０７）。読み込みが完了すれば、図１５の（ａ）の暗号化の開始指示を待つ画面が現れ、ＯＫをクリックすることで、暗号化処理がなされ（Ｓ１１０）、次に図１５の（ｂ）のように処理時間と共に暗号が完了した画面が現れる（Ｓ１１１）。この暗号化処理の具体的な処理内容は先に詳述した第１実施形態等に示された処理に他ならない。
【０２１３】
更に図１５に示すような暗号化済みのファイルを何処に保存するかを訪ねる画面１１４が現れるので、ここで場所を指定するすることで暗号化ファイルが書き込まれる（Ｓ１１３）。
【０２１４】
同様に復号化処理においても、復号化すべきファイルの指定を図１７の画面１２１で指定し（Ｓ１１４）、暗号ファイルを読み込んだ後（Ｓ１１５）、図１８の（ａ）の復号化開始表示をＯＫすると復号化処理（Ｓ１１７）がなされ（ｂ）の処理時間の表示と共に終了が報告される（Ｓ１１８）。そして、復号化されたファイルを書き込む先を図１９の画面１２４で指定されれば（Ｓ１１９）、復号化された平文ファイルは指定された場所に書き込まれる（Ｓ１２０）。
【０２１５】
更にこのプログラムは、多重アファイン鍵の新鍵を生成することも可能であり（Ｓ１２３）、作成された新鍵は図２０の画面１２５により保存先が指定されれば、書き込みが行われる（Ｓ１２５）。
【０２１６】
以上のようにこのプログラムによれば、例えば図２１のコンピュータシステム上で例えばファイルの圧縮解凍のプログラムのように容易な操作により、極めて処理動作が速く秘密保持性が非常に高い多重アファイン鍵の暗号・復号処理を実現することが可能となる。
【０２１７】
なおこのアプリケーション・プログラムは、例えばコンピュータシステムの読み込みが可能な媒体に格納されて設けられ、更に図２１のコンピュータシステム１３２内のＲＯＭ等の記憶領域に予め格納されて設けられていてもよい。又ネットワーク上にプログラムという形で存在するものであっても同等の作用・効果を示すものであることは言うまでもない。
【０２１８】
＜＜第１０の実施形態＞＞
第１０実施形態は、図２２に示されるように、多重アファイン鍵を用いた暗号化・復号化方法を伴う記録媒体の記録再生装置を特定するものである。
【０２１９】
この記録媒体の記録再生装置は、例えばフロッピディスクやハードディスク、ＭＯ等の着脱可能又は不可能な記録媒体の記録再生装置であり、図２２において、その基本構造が示されている。すなわち、外部に対するインタフェース部１５１と、これに接続され全体の動作を制御する制御部１５２であって、この制御部１５２は、それぞれ暗号化制御部１５３，書込制御部１５４，ドライブ制御部１５５，復号化制御部１５６，読出制御部１５７を有しており、それぞれに多重アファイン鍵による乱数生成部１６１，暗号化部１６２，ディスクドライバ１６５，多重アファイン鍵による乱数生成部１６３，復号化部１６４が接続されており、又更に暗号化部１６２には書込ヘッド１６７が、復号化部１６４には読出ヘッド１６８が接続されている。
【０２２０】
このような構成により、この媒体記録再生装置は、その記録処理において、所定回転数の回転がディスクドライバ１６５により加えられる記録媒体１６６に対して、制御部１５２の制御下において、インタフェース部１５１から与えられた所定情報が多重アファイン鍵による乱数生成部１６１により発生した乱数列に応じて暗号部１６２にて暗号化され、この暗号化情報の書込が書込ヘッド１６７によって行われる。
【０２２１】
更に読出処理においては、同様に、ディスクドライバ１６５により回転する記録媒体１６６から読出ヘッド１６８により上記の暗号化情報が読み出され、多重アファイン鍵による乱数生成部１６３による乱数列に応じて復号部１６４にて復号化され、更にインタフェース部１５１を介して外部へと出力される。
【０２２２】
この読出・書込時の暗号化・復号化処理の各形態においては、上述した第１実施形態乃至第３実施形態に限らず全ての実施形態を伴う様々な形態が可能であることは言うまでもない。つまり、多重アファイン鍵は予め格納されたものである場合もあれば、インタフェース部１５１から与えられた秘密鍵Ｈにより特定されるものであっても良い。
【０２２３】
更に上記した暗号化・復号化処理は読取・書込の際に常に自動的に行われるものであっても良いし、ユーザの設定により選択的に行われるものであっても良い。本発明によれば、どの場合でも自動書換される多重アファイン鍵によって、解読が不可能な極めて高い機密性をもった媒体記録再生装置を提供することが可能となる。
【０２２４】
＜＜第１１の実施形態＞＞
第１１実施形態は、図２３に示されるものであり、本発明の多重アファイン鍵の暗号化復号化方法を伴う光ディスク媒体の記録再生装置を特定するものである。
【０２２５】
この実施形態はすなわち、記録媒体としての光ディスク（例えばＤＶＤ−ＲＡＭ）３４０に対して集束光を用いてデータ（情報）を記録したり、上記光ディスク３４０に記録されているデータを再生する光ディスク記録再生装置について、本発明の暗号化復号化方法を適用させてものである。
【０２２６】
図２３において、この光ディスク記録再生装置は、全体の動作を制御するＣＰＵ３９０と、これにデータバスを介して接続されるメモリ３９７と、Ｄ／Ａ変換器３９１とを有しており、更に情報の記録系としては、多重アファイン暗号部３９４と、これに接続される多重アファイン鍵による乱数生成回路３９３と、データ生成回路３７４と、レーザ制御回路３７３を有しており、これらに接続される光学ヘッダ部３６５とを有している。更に情報の再生系としては、データ再生回路３７８とエラー訂正回路３９２と乱数発生回路３９５と復号化部３９６とを有している。更に駆動系としては、この光学ヘッダの移動を行うリニアモータ３６６と駆動コイル３６７とこのリニアモータを制御するリニアモータ制御回路３６８と、更にこの光学ヘッダの近傍に設けられ光ディスク３４０を保持し回転駆動させるモータを制御するモータ制御回路３６４を有している。更に光学系としては、この光学ヘッダ３６５のレーザの光ディスク３４０に対するフォーカシング制御を行うフォーカシング制御回路３８７と、トラッキングを行うトラッキング制御回路３８８とを有している。
【０２２７】
このような構成において、光ディスク３４０に対する情報の記録は以下のように行われる。つまり、モータ制御回路３６４により駆動されるモータにより所定回転数で回転される光ディスク３４０に対して、ＣＰＵ３９０の制御下において、記録すべく入力された所定情報は、暗号化部３９４へと供給され、一定使用回数ごとに書き換えられる多重アファイン鍵に基づく乱数列により、暗号情報へと暗号化される。更にこの暗号情報は、データ生成回路３７４を経て、記録されるべきデータとして記録用のレーザに置き換えられる。そして、光ヘッダ３６５を用いて、光ディスクの所定の記録領域へ記録されるものである。
【０２２８】
この際の多重アファイン暗号部３９４の暗号化処理については、既に上述した本発明の各実施形態の特徴を伴う処理が可能であることは言うまでもない。例えば多重アファイン鍵は初めから与えられている場合に限らず、外部からの暗号鍵Ｈによってその度に生成されるものであっても良い。
【０２２９】
又更に光ディスク３４０に記録された情報の再生処理は以下のように行われる。つまり、上述した回転系と光学系との読み出し動作に基づき、光ディスク３４０の所定領域から光ヘッダ３６５を介して読み出された暗号化情報は、データ再生回路３７８を介して再生信号に置き換えられる。更に一定使用回数の度に書き換えられている多重アファイン鍵による乱数生成回路３９５における多重アファイン鍵により発生された乱数列に基づいて復号化され、再生信号として出力される。
【０２３０】
この場合の暗号化及び復号化処理の具体的な詳細については、既に説明した豊富な実施形態のそれぞれを用いて可能である。つまり一例として、乱数発生のための多重アファイン鍵は予めメモリ３９３等に格納されていても良いし、第２実施形態のように外部から与えられる秘密鍵Ｈ等から書込の度に設定されるものであっても良い。
【０２３１】
以上説明したように、光ディスク記録再生装置においても、本発明の自己書換機能を持った多重アファイン鍵による暗号化復号化処理により、迅速な暗号化によって第三者が読み取ることが困難な機密性の非常に高い光ディスク記録再生装置を提供することが可能である。
【０２３２】
＜＜第１２の実施形態＞＞
第１２実施形態は、図２４に示されるものであり、いわゆる携帯電話等の無線送受信装置であって本発明の多重アファイン鍵による暗号化・復号化処理を伴うものを特定している。
【０２３３】
この無線送受信装置は、その基本的構成が図２４により示され、この図において、この無線送受信装置は、アンテナ２０１と、デュプレクサ２０２と、ＲＦ受信利得可変増幅器２０３と、ＲＦ帯域制限フィルタ２０４と、周波数変換器２０５と、ＩＦ帯域制限フィルタ２０６と、ＩＦ受信利得可変増幅器２０７と、変調・復調部２０８と、ＩＦ送信利得可変増幅器２１１と、周波数変換器２１２と、ＲＦ帯域制限フィルタ２１３と、ＲＦ送信利得可変増幅器２１４と、電力増幅器２１５と、アイソレータ２１６と、ボコーダ２８７と、スピーカ２８８とを有している。
【０２３４】
この無線送受信機はこのような構成において、受信処理について説明すると、基地局から送信されるフォワードリンク信号はアンテナ２０１で受信、デュプレクサ２０２で受信信号帯域内の成分だけフィルタリング、ＲＦ受信利得可変増幅器２０３で増幅あるいは減衰、ＲＦ帯域制限フィルタ２０４で不要成分をフィルタリング、周波数変換器２０５でＲＦ帯からＩＦ帯へ周波数変換、ＩＦ帯域制限フィルタ２０６で不要成分をフィルタリング、ＩＦ受信利得可変増幅器２０７で増幅あるいは減衰され、変調・復調部２０８へ入力する。
【０２３５】
変調・復調部２０８は、例えば直交復調部２８１と、Ａ／Ｄ変換部２８２と、情報信号復調部２８３と、情報信号変調部２８４と、Ｄ／Ａ変換部２８５と、直交変調部２８６で構成される。この構成において、直交復調部２８１で直交復調された信号はＡ／Ｄ変換部２８２でＡ／Ｄ変換され信号復調部２８３で情報信号復調されると共に出力される。さらにこの出力信号は、多重アファイン鍵による乱数生成回路２９１により多重アファイン鍵から発生した乱数列に基づく復号化により、復号化部２９２において復号化信号として出力される。
【０２３６】
これにより、一定使用回数ごとに書き換えられる多重アファイン鍵による極めて機密性の高い暗号化情報の復号化を可能としている。更にこの際の復号処理化は、既に詳述した各実施形態に応じた形での実施が可能である。一例として、第２実施形態における場合であり、暗号文と共に秘密鍵Ｈと初期ベクトルＶとを受信し、これらに応じたアファイン鍵をその度に生成しこれに応じた乱数列を生成し、この乱数列による複合化を行う場合である。これにより、通信毎に新たなアファイン鍵での復号処理が可能となる。
【０２３７】
又、更にこの無線送受信機の送信処理について以下に説明すると、移動局から送信されるリバースリンク信号はボコーダ２８７により与えられ、これを多重アファイン鍵による乱数生成回路２９０から与えられた多重アファイン鍵による乱数列によって、暗号化部２８９にて暗号化する。この暗号化された暗号化信号は、情報信号変調部２８４で変調されて出力されＤ／Ａ変換部２８５でＤ／Ａ変換、直交変調部２８６で直交変調され、ＩＦ送信利得可変増幅器２１１で増幅あるいは減衰され、周波数変換器２１２でＩＦ帯からＲＦ帯へ周波数変換、ＲＦ帯域制限フィルタ２１３で不要成分をフィルタリングして、ＲＦ送信利得可変増幅器２１４で増幅あるいは減衰、電力増幅器２１５で増幅、デュプレクサ２０２で送信信号帯域内の成分だけフィルタリングされて、アンテナ２０１で空間へ送信される。
【０２３８】
このようにして、一定使用回数ごとに自動書換が行われる多重アファイン鍵により暗号化された無線信号は、第三者の解読が不可能なものとして高い機密性を有している。又、この暗号化の際の形態については、既に詳述した各実施形態での暗号化が可能であることは言うまでもない。例えば、多重アファイン鍵は予めメモリ等に格納されているだけでなく、第２実施形態が特定するように、現在、通信している通信相手から供給された復調部２８３からの秘密鍵Ｈや初期ベクトルＶに基づいて作成された新たな多重アファイン鍵であってもよい。この場合は、互いの通信相手同士の固有なアファイン鍵により暗号・復号を伴う通信を行うことが可能になり、極めて機密性の高い通信を実現することができる。
【０２３９】
以上、詳述したように、いわゆる携帯電話等の無線送受信装置においても、本発明の多重アファイン鍵による暗号化部、復号化部を設けることにより、迅速で極めて機密性の高い通話を実現することが可能になる。
【０２４０】
【発明の効果】
以上説明したように、本発明によれば、高速で暗号化でき、かつ解読することができない汎用性のある暗号化方法及び暗号化システムを提供する。
【０２４１】
また、乱数と多重アファイン鍵を用いてストリーム暗号化を行うことにより、既知平文攻撃法を排除し、安全で高速な暗号法を確立する。
【０２４２】
暗号文の通信に際しても、互いに暗号化のための多重アファイン鍵を通信相手間で共通に保持しておくことにより、暗号化の鍵情報を通信することなく暗号化文を通信することができ、安全性の高い解読ができない暗号化通信が可能となる。
【０２４３】
また、第５実施形態（図３）のように、通信毎にアファイン鍵を変更していき、変更したアファイン鍵で通信文の暗号化復号化を行うことにより、安全性の高い解読ができない暗号化通信が可能となる。
【０２４４】
更に、第６実施形態（図４）のように、通信に先立ち暗号化のための鍵情報を互いに共有するように制御して通信毎にアファイン鍵を変更することにより、安全性の高い解読ができない暗号化通信が可能となる。
【０２４５】
また、第７実施形態（図５）のように、認証先に予め付与した多重アファイン鍵を用いて認証元より送られてくる通信文を暗号化し、暗号化文を認証元に送り、認証元では同様の手順で通信文を復号化して正確に復号化できれば認証先が正しかったと認証するようにすれば、安全性の高い認証が可能となる。
【０２４６】
更に、第９実施形態（図１１乃至２１）のように、コンピュータプログラムで多重アファイン鍵の暗号化複合化を行うことにより、非常に容易な操作で、迅速で安全性の高い暗号・復号処理を実現することが可能になる。
【０２４７】
更に、第１０及び１１実施形態（図２２，２３）のように、媒体の記録再生装置の内部に、多重アファイン鍵の暗号化複合化回路を設けることで、安全性の非常に高い情報の記録再生を容易に実現することが出来る。
【０２４８】
更に、第１２実施形態（図２４）のように、多重アファイン鍵の暗号化複合化回路を携帯電話等の無線送受信機に設けることにより、極めて機密性の高い通話等を容易に実現することができる。
【図面の簡単な説明】
【図１】本発明の第１及び第４実施形態に係る一実施形態の暗号化通信システムのシステム構成を示す図である。
【図２】本発明の第１及び第４実施形態の暗号化通信制御手順を説明するための図である。
【図３】本発明の第５実施形態の暗号化通信制御手順を説明するための図である。
【図４】本発明の第６実施形態の暗号化通信制御手順を説明するための図である。
【図５】本発明の第７実施形態の暗号化方法を利用した認証手順例を示す図である。
【図６】本発明の第１実施形態に係る多重アファイン鍵の暗号化処理を説明するフローチャート。
【図７】本発明の第１実施形態に係る多重アファイン鍵の復号化処理を説明するフローチャート。
【図８】本発明の第２実施形態に係る多重アファイン鍵の暗号化処理を説明する説明図。
【図９】本発明の第２実施形態に係る多重アファイン鍵の復号化処理を説明する説明図。
【図１０】本発明の第８実施形態に係る多重アファイン鍵の暗号化・復号化処理を伴うネットワーク通信を行う通信装置の構成を示すブロックダイアグラム。
【図１１】本発明の第９実施形態に係る本発明に係る多重アファイン鍵の暗号・複合処理を行うアプリケーション・コンピュータプログラムの基本動作を示すフローチャート。
【図１２】前記アプリケーション・プログラムのメインメニュを示す画面。
【図１３】前記アプリケーション・プログラムの鍵ファイルの読込の画面。
【図１４】前記アプリケーション・プログラムの暗号化ファイルの読込の画面。
【図１５】前記アプリケーション・プログラムの暗号化処理の開始画面と終了画面を示す図。
【図１６】前記アプリケーション・プログラムの暗号化ファイルの作成の画面。
【図１７】前記アプリケーション・プログラムの複合化処理の対象とする暗号化ファイルの選択の画面。
【図１８】前記アプリケーション・プログラムの復号化処理の開始画面と終了画面を示す図。
【図１９】前記アプリケーション・プログラムの複合化ファイルの作成の画面。
【図２０】前記アプリケーション・プログラムの鍵ファイルの作成の画面。
【図２１】本発明の第９実施形態に係る多重アファイン鍵の暗号・複合処理を行うアプリケーション・コンピュータプログラムが実行されるコンピュータシステムの外観図。
【図２２】本発明の第１０実施形態に係る多重アファイン鍵の暗号化・復号化処理を伴うフロッピディスク等のディスク装置の構成を示すブロックダイアグラム。
【図２３】本発明の第１１実施形態に係る本発明に係る多重アファイン鍵の暗号化・復号化処理を伴う光学ディスク録画再生装置の構成を示すブロックダイアグラム。
【図２４】本発明の第１２実施形態に係る多重アファイン鍵の暗号化・復号化処理を伴う移動携帯電話の構成を示すブロックダイアグラム。
【図１】
0003923267.tif 000006
【図２】
0003923267.tif 000007
【図３】
0003923267.tif 000008
【図４】
0003923267.tif 000009
【図５】
0003923267.tif 000010
【図６】
0003923267.tif 000011
【図７】
0003923267.tif 000012
【図８】
0003923267.tif 000013
【図９】
0003923267.tif 000014
【図１０】
0003923267.tif 000015
【図１１】
0003923267.tif 000016
【図１２】
0003923267.tif 000017
【図１３】
0003923267.tif 000018
【図１４】
0003923267.tif 000019
【図１５】
0003923267.tif 000020
【図１６】
0003923267.tif 000021
【図１７】
0003923267.tif 000022
【図１８】
0003923267.tif 000023
【図１９】
0003923267.tif 000024
【図２０】
0003923267.tif 000025
【図２１】
0003923267.tif 000026
【図２２】
0003923267.tif 000027
【図２３】
0003923267.tif 000028
【図２４】
0003923267.tif 000029