(57)【特許請求の範囲】
【請求項１】
データ・ストリーム受信手段、リング発生器および暗号化器を有する暗号システムであって：
前記データ・ストリーム受信手段はデータ・ストリームを受信するよう構成されており；
前記リング発生器は、（ａ）乱数列中の一つの乱数を複数のRNS剰余値として表現するために複数のRNS算術演算を実行するよう構成された計算手段、（ｂ）前記複数のRNS剰余値のそれぞれを互いに素な基数系に変換して、前記複数のRNS剰余値のそれぞれが少なくとも一つの数字を含むようにするよう構成された変換手段、および（ｃ）前記複数のRNS剰余値のそれぞれに関連付けられた選ばれた組み合わせの数字を使って複数の出力列数の任意の置換配列を生成するよう構成された置換手段を有しており、前記任意の置換配列は巡回構造を使って決定され；
前記暗号化器は前記データ・ストリーム受信手段および前記リング発生器に結合され、前記暗号化器は、前記データ・ストリームに前記複数の出力列数を組み込むまたは組み合わせることによって、修正されたデータ・ストリームを生成するよう構成されている、
暗号システム。
【請求項２】
前記乱数は0からn!−1の範囲内の値をもち、前記巡回構造はn個の元をもつ、請求項１記載の暗号システム。
【請求項３】
前記複数の出力列数のそれぞれは、前記n個の元のうちの個々の元に関連付けられている、請求項２記載の暗号システム。
【請求項４】
前記計算手段はさらに、互いに素な数を法として使って前記複数のRNS剰余値を計算するよう構成され、前記互いに素な数は、n!によって定義される十進数に等しい積をもつよう選択される、請求項１記載の暗号システム。
【請求項５】
前記変換手段はさらに、前記複数のRNS剰余値のそれぞれを異なる互いに素な基数系に変換するよう構成される、請求項１記載の暗号システム。
【請求項６】
前記選ばれた組み合わせの数字は、それらの数字によって決定できる値の範囲が、前記巡回構造中の利用可能な選択されていない元の数に等しいように選ばれる、請求項１記載の暗号システム。
【請求項７】
前記置換手段はさらに、前記選ばれた組み合わせの数字の値を使って、前記巡回構造中の利用可能な選択されていないある元を選択するよう構成される、請求項１記載の暗号システム。
【請求項８】
前記置換手段はさらに、孫子の剰余定理を使って少なくとも二つのRNS剰余値に関連付けられた少なくとも二つの数字を組み合わせ、前記少なくとも二つの数字とは異なる基数をもつ数字を得るよう構成される、請求項１記載の暗号システム。
【請求項９】
前記修正されたデータ・ストリームを復号するのに利用される復号列を生成するよう構成された第二のリング発生器をさらに有する、請求項１記載の暗号システム。
【請求項１０】
前記第二のリング発生器に電子的に接続された復号器をさらに有し、該復号器が、前記修正されたデータ・ストリームおよび前記復号列を利用して復号方法を実行することによって復号されたデータを生成するよう構成されている、請求項９記載の暗号システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の装置は、乱数列の反復周期を延長するよう構成された手段を有する暗号システムに関する。より詳細には、本発明の装置は、複数の数の任意の置換配列（permutation  ordering）に基づいて乱数列を生成するよう構成されたリング発生器に関する。
【背景技術】
【０００２】
乱数列を必要とする多くの暗号システムは典型的にはリング発生器（ring  generator）および／または巡回構造（cyclic  structure）を含む。リング発生器は、反復されたマッピングを通じて可能な出力を網羅的に生成する有限体上の単純な構造である。マッピングは、既約多項式が理想的である、加法的および乗法的マッピングの何らかの組み合わせである。たとえば、リング発生器は、有限ガロア体GF[11]上の既約多項式f(x)＝3x3＋3x2＋xの反復計算を含む。リング発生器の主たる制限は、その軌道が高度に決定論的であるということである。よって、マッピングおよび現在の有限体条件を知ることで、出力列（output  sequence）を完全に知ることができる。
【０００３】
乱数列を必要とする暗号システムでは、リング発生器はしばしばデータ・ビットの列を修正するためのアルゴリズムにおいて用いられる。そのようなアルゴリズムは典型的には、有限体すなわちガロア体で実行される算術演算を含む。有限体すなわちガロア体GF[p]とは、有限個の元、すなわち{0,1,2,...,p−1}のみを含む体である。よって、有限体すなわちガロア体で実行されるあらゆる算術演算の結果は、その体に含まれる元である。有限体すなわちガロア体GF[p]はガロア標数pによって定義される有限体の大きさを有する。よって、時間不変な演算子の反復マッピングを通じて生成される任意の出力列はp番目の要素ごとに反復する。この反復挙動が相関を生じ、それにより、pが小さいときは出力列のデコードを比較的簡単にしてしまう。よって、アルゴリズムは典型的には有限体すなわちガロア体の大きさを拡張して反復周期が長くなるようにする操作を含む。
【０００４】
当技術分野において知られている、有限体すなわちガロア体GF[p]を拡張する多くの方法がある。ここで、pは2の整数冪2kである。同型内で有限体すなわちガロア体GF[2k]を拡張するそのような方法の最も簡単なものは、入力ビット数を増やすことを含む。他の方法としては、そのリング発生器を他の発生器に結合することを含む。たとえば、リング発生器は、孫子の剰余定理（CRT:  Chinese  Remainder  Theorem）を実装するデジタル・ハードウェアから構成される任意の数の他の発生器（互いに素な標数をもつものとする）に結合されてもよい。理解されるはずであるように、CRT計算は混合基数計算を組み合わせるために実行される。CRT計算は、発生器への入力が互いに素な数である場合にのみ使用されうる。この方法の利点にもかかわらず、この方法はある種の欠点がある。たとえば、この方法はその性質上、巡回的であり、固定である。デジタル・ハードウェアを用いた奇素数を基数とする元のCRT計算は、計算量的に非効率的である。また、互いに素な数および初期条件があらかじめわかっていれば、発生器の出力列は高度に決定論的である。
【０００５】
乱数列を必要とする暗号システムはまた、典型的には、出力列をマスクして外部の観察者が出力列を判別できないようにするために、決定論的なスクランブリング方法に依拠する。スクランブリング方法は、任意の所与の入力列に対して出力のエントロピーを増すために使われる。よって、これらの暗号システムはスクランブラーを含む。スクランブラーは決定論的なスクランブル・アルゴリズムに従って動作するので、スクランブルされた信号からもとの信号を復元できる。決定論的なスクランブル方法および関連するアルゴリズムは当業者にはよく知られており、よって本稿では詳述しない。
【０００６】
しかしながら、一つのそのようなスクランブル方法が、データをスクランブルするために換字ボックス（Sボックス）関数を使用する決定論的なスクランブル・アルゴリズムを実装することを含むことは理解しておくべきである。Sボックスは、出力列をリバース・エンジニアリングから守るために暗号システムの出力列に追加的な変化を加えるために使われる、数の配列である。Sボックス関数はしばしばいくつかの所望される属性をもつ。たとえば、決定論的スクランブル・アルゴリズムはSボックスを使い、決定論的スクランブル解除アルゴリズムはSボックスの逆を使う。よって、Sボックス関数は、スクランブルされた列から出力列が得られるよう、可逆である。この決定論的スクランブル方法はまた、ファイステル構造のような複雑な混合ネットワークを生成することも含む。理解されるはずであるように、ファイステル構造は複数ラウンドの反復操作を組み合わせる。そのような操作は、これに限られないが、ビット・シャッフル、非線形関数および線形関数を含む。この決定論的スクランブル方法の利点にもかかわらず、この方法はある種の欠点がある。たとえば、この決定論的スクランブル方法は時間不変である。この決定論的スクランブル方法はまた、資源集約的であることもある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上のことに鑑み、有限体またはガロア体の大きさを拡張する方法であって、従来式の有限体拡張方法よりも計算効率がよい方法に対する必要が残っている。また、出力列のエントロピーを増す可逆な方法であって、従来式の決定論的スクランブル方法よりも計算効率がよい方法に対する必要もある。そのような方法はまた、暗号システムに高度なセキュリティ機能を提供するために設計される必要もある。さらに最も重要なことに、多様な暗号システム用途で使用できる、数の任意の置換配列を発生させる方法および装置に対する必要がある。
【課題を解決するための手段】
【０００８】
本発明は暗号システムに関する。暗号システムはデータ・ストリーム源、リング発生器および暗号化器を有する。データ・ストリーム源は、入力データ・ストリームを提供するよう構成されている。リング発生器は、計算手段、変換手段および置換手段を有する。計算手段は、乱数列中の一つの乱数を一つまたは複数のRNS剰余値として表現するために一つまたは複数のRNS算術演算を実行するよう構成されている。変換手段は、RNS剰余値のそれぞれを互いに素な基数系に変換して、RNS剰余値のそれぞれが少なくとも一つの数字を含むようにするよう構成される。置換手段は、RNS剰余値のそれぞれに関連付けられた選ばれた組み合わせの数字を使って出力列の数の任意の置換配列を生成するよう構成されている。任意の置換配列は巡回構造を使って決定される。暗号化器はデータ・ストリーム源およびリング発生器に結合される。暗号化器は、入力データ・ストリームに出力列の数を組み込むまたは組み合わせることによって、修正されたデータ・ストリームを生成するよう構成される。
【０００９】
本発明のある側面によれば、乱数列中の各乱数は、0からn!−1の範囲内の値をもつ。巡回構造はn個の元をもつ。出力列の数のそれぞれは、このn個の元のうちの個々の元に関連付けられている。
【００１０】
本発明の別の側面によれば、計算手段はさらに、互いに素な数を法として使ってRNS剰余値を計算するよう構成される。互いに素な数は、n!によって定義される十進数に等しい積をもつよう選択される。変換手段はさらに、RNS剰余値のそれぞれを異なる互いに素な基数系に変換するよう構成される。
【００１１】
本発明の別の側面によれば、前記選ばれた組み合わせの数字は、それらの数字（digits）によって決定できる値（values）の範囲が、巡回構造中の利用可能な選択されていない元の数に等しいように選ばれる。置換手段は、前記選ばれた組み合わせの数字（digits）の値（a  value）を使って、巡回構造中の利用可能な選択されていないある元を選択するよう構成される。置換手段はまた、孫子の剰余定理を使って少なくとも二つのRNS剰余値に関連付けられた少なくとも二つの数字を組み合わせ、前記少なくとも二つの数字の積に等しい異なる基数をもつ数字を得るよう構成される。置換手段はさらに、孫子の剰余定理を使って一つまたは複数の追加的な巡回リング発生器と組み合わさるよう構成される。置換手段は、異なる基数をもつ前記数字を使って、巡回構造中の利用可能な選択されていないある元を選択するよう構成される。
【００１２】
本発明の別の側面によれば、暗号化器は乗算器、加算器、デジタル論理デバイスおよびフィードバック機構のうちの少なくとも一つを含む。暗号化器は、入力データ・ストリームをマスクするために組み合わせ法を実行するようにも構成される。該組み合わせ法は、標準的な乗算演算、ガロア拡大体での乗算演算、qを法とする加算演算、qを法とする減算演算およびビットごとの論理演算を含みうる。
【００１３】
本発明のさらにもう一つの側面によれば、暗号システムは修正データ・ストリーム受信手段を有する。修正データ・ストリーム受信手段は修正されたデータ・ストリームを受信するよう構成される。暗号システムは、第二のリング発生器をも有する。第二のリング発生器は復号列を生成するよう構成される。暗号システムはさらに復号器を有する。復号器は、修正データ・ストリーム受信手段および第二のリング発生器に電子的に接続されている。復号器は、修正データ・ストリームおよび復号列を使って復号方法を実行することによって復号されたデータを生成するよう構成される。
【００１４】
第二の暗号システムが提供される。第二の暗号システムはデータ・ストリーム受信手段（DSRM）、第一のリング発生器および拡散操作器を有する。DSRMはデータ・ストリームを受信するよう構成される。第一のリング発生器は計算手段、変換手段および置換手段を有する。計算手段は、乱数列中の一つの乱数を複数のRNS剰余値として表現するために複数のRNS算術演算を実行するよう構成されている。変換手段は、RNS剰余値のそれぞれを互いに素な基数系に変換して、RNS剰余値のそれぞれが少なくとも一つの数字を含むようにするよう構成される。置換手段は、RNS剰余値のそれぞれに関連付けられた選ばれた組み合わせの数字を使って出力列の数の任意の置換配列を生成するよう構成されている。任意の置換配列は巡回構造を使って決定される。拡散操作器はDSRMおよび第一のリング発生器に結合される。拡散操作器は、出力列の数の前記任意の置換配列を使ってデータ・ストリームを置換すること（permuting）によって拡散されたデータ・ストリームを生成するよう構成される。
【００１５】
本発明のある側面によれば、乱数は0からn!−1の範囲内の値をもち、巡回構造はn個の元をもつ。出力列の数のそれぞれは、このn個の元のうちの個々の元に関連付けられている。計算手段はさらに、互いに素な数を法として使ってRNS剰余値を計算するよう構成される。互いに素な数は、n!によって定義される十進数に等しい積をもつよう選択される。変換手段はさらに、RNS剰余値のそれぞれを異なる互いに素な基数系に変換するよう構成される。前記選ばれた組み合わせの数字は、それらの数字（digits）によって決定できる値（values）の範囲が、巡回構造中の利用可能な選択されていない元の数に等しいように選ばれる。
【００１６】
置換手段は、前記選ばれた組み合わせの数字（digits）の値（a  value）を使って、巡回構造中の利用可能な選択されていないある元を選択するよう構成される。置換手段はまた、孫子の剰余定理を使って少なくとも二つのRNS剰余値に関連付けられた少なくとも二つの数字を組み合わせ、前記数字とは異なる基数をもつ数字を得るよう構成される。置換手段はさらに、孫子の剰余定理を使って一つまたは複数の追加的な巡回リング発生器と組み合わさるよう構成される。置換手段は、異なる基数をもつ前記数字を使って、巡回構造中の利用可能な選択されていないある元を選択するよう構成される。
【００１７】
本発明のさらにもう一つの側面によれば、暗号システムは拡散データ・ストリーム受信手段（DDSRM）、第二のリング発生器および逆拡散操作器を有する。DDSRMは拡散されたデータ・ストリームを受信するよう構成される。第二のリング発生器は逆拡散列を生成するよう構成される。逆拡散列は擬似乱数または擬似カオス的乱数を含む。逆拡散操作器はDDSRMおよび第二のリング発生器に結合されている。拡散操作器は、逆拡散列を使って逆拡散操作を実行することによって、拡散されたデータ・ストリームの拡散を解除するよう構成される。
【００１８】
諸実施形態について図面を参照しつつ述べる。図面において、各図を通じて同様の符号は同様の項目を表す。
【発明を実施するための最良の形態】
【００１９】
ここで、本発明について以下に、付属の図面を参照しつつより十全に記載する。図面には本発明の例示的な実施形態が示されている。しかしながら、本発明は数多くの異なる形態で実施されてもよく、本稿に記載される実施形態に限定されると解釈すべきではない。たとえば、本発明は、方法、データ処理システムまたはコンピュータ・プログラム・プロダクトとして実施できる。よって、本発明は、完全にハードウェアの実施形態として、完全にソフトウェアの実施形態として、あるいはハードウェア／ソフトウェア実施形態としての形をとることができる。
【００２０】
本発明のいくつかの実施形態は、乱数列の反復周期を延長するためのアルゴリズムを提供する。そのような実施形態はまた、数の任意の置換配列を生成するアルゴリズムをも提供する。この点で、そのようなアルゴリズムは多様な暗号システム用途において使用できることを理解しておくべきである。たとえば、そのようなアルゴリズムは、有限体すなわちガロア体の大きさを効率的に拡張するためのリング発生器またはその他の巡回構造において実装されることができる。本アルゴリズムは決定論的なスクランブル方法でも実装できる。そのようなシナリオでは、本アルゴリズムは、マスクするために、出力列の部分集合に適用できる。本アルゴリズムはさらに、乱数列の反復周期を長くするために、擬似乱数発生器において実装されることもできる。
【００２１】
図１を参照すると、数列の反復周期を延ばすアルゴリズムの概念図が与えられている。これに関し、乱数列RN0,…,RNNが生成されていることは理解されるはずである。各乱数RN0,…,RNNは0からn!−1までの間の整数値をもつ。乱数列RN0,…,RNNはある時間周期ののちに反復する。よって、この時間周期を延長するためのアルゴリズムが用いられる。このアルゴリズムについて以下で（図１、図２との関連で）詳細に述べる。
【００２２】
再び図１を参照すると、本アルゴリズムは、何らかの規定された算術プロセスによって計算済みの乱数RN0をもって始まる。そのような算術プロセスは当業者にはよく知られている。よって、規定された算術プロセスについては本稿では詳述しない。しかしながら、この算術プロセスが、擬似乱数または擬似カオス的数を計算するための算術プロセスでよいことは理解されるはずである。また、乱数列RN0,…,RNNの各乱数が0からn!−1までの間の十進数値をもつことができることも理解されるはずである。n!は、乱数列RN0,…,RNNの要素がとりうる可能な値全体を表す十進数値と等価な階乗である。
【００２３】
乱数RN0,…,RNNは十進法表現または二進法表現で表せる。乱数列RN0,…,RNNが十進法表現で表される場合、乱数列RN0,…,RNNは十進法の数字の列である。ここで、本稿で使われる「数字（digit）」の用語は、位取り記数法における単一の記号を指す。たとえば、列45は数字4および数字5を有する。数字4は、数字5の値の10倍であるよう重み付けされている。十進数列の各数字は、値0、1、2、3、4、5、6、7、8または9をもつ。十進数列は、特定のアルゴリズム用途に従って選択された数字の長さをもつ。乱数列RN0,…,RNNが位取り二進法表現で表される場合、各乱数RN0,…,RNNは数字の二進列である。二進列の各数字は0の値または1の値をもつ。二進列は、特定のアルゴリズム用途に従って選択された数字の長さをもつ。
【００２４】
各乱数RN0,…,RNNは、RNS算術演算を使って剰余数系（RNS:  residue  number  system）の剰余値RV0,…,RVJの集合として表せる。モジュラー算術（modular  arithmetic）は当業者にはよく知られている。よって、そのような演算は本稿では詳述しない。しかしながら、RNS剰余値が式(1)によって定義できることは理解されるはずである。
RVp＝RNn  mod  mp      (1)
ここで、
RVpは、mpを法として乱数RNnを表すRNS剰余値であり；
RNnは乱数列RN0,…,RNNにおける乱数の一つであり；
mpは、基数k基数の値をもつことのできる法である。
【００２５】
法mp＝m0km0,m1km1,…,mJkmJはn!の一意的な素因数分解によって定義される値をもつよう選択される。上記したように、n!は、乱数列RN0,…,RNNが等しくなれる全可能な値の数である。これに関し、理解されるはずだが、数論の基本定理（FTA:  Fundamental  Theorem  of  Arithmetic）を使って、乱数を一意的な互いに素な数の積として書くことができ、それは、個々の素数の別々の冪に分離されても自動的に互いに素である。本稿で使われるところの「互いに素な数」という句は、最大公約数が1である数の集まりをいう。たとえば、8の階乗（8!）は、40,320の値をもつ十進数に等しい。この十進数は素数の積として表せる（40,320＝2K2・3K3・5K5・7K7＝27・32・51・71）。そのようなシナリオにおいて、数列RN0,…,RNK中の各乱数をRSN剰余値RV0,…,RVJの集合として表すために用いられる各RNS算術演算は、互いに素な数27、32、51、71をそれぞれ法m0km0、m1km1、 m2km2、m3km3として使うことができる。理解されるはずであるように、剰余数系は、個々の法ができるだけ小さいときに計算効率における利得の最大の潜在力を与える。さらに、デジタル・ハードウェアは二進算術のために最適化されているので、因子2は特別な場合である（本来的に効率的）。
【００２６】
再び図１を参照すると、各RNS剰余値RV0,…,RVJは異なる互いに素の数系の表現で表せる。この点で、異なる互いに素の数系を使うことの利点として、一剰余空間における演算が他の剰余空間とは独立に実行できるということがあることは理解されるはずである。複数の剰余計算を独立して実行したのち、それらの計算の結果が、孫子の剰余定理アルゴリズムのようなアルゴリズムを介して再び組み合わされることができる。再び組み合わせた結果は、乱数RN0,…,RNNによって定義される同型（isomorphism）内での諸数の置換配列と同じである諸数の置換配列を効率的に実装するために使用できる。
【００２７】
本発明のある実施形態によれば、RNS剰余値RV0は二進数系（すなわち基数2の系）表現で表せる。よって、剰余値RV0２進は二進数字の列である。各二進数字は0または1の値をもつ。RNS剰余値RV1は三進数系（すなわち基数3の系）表現で表せる。よって、RNS剰余値RV1３進は三進数字の列である。各三進数字は0、1または2の値をもつ。RNS剰余値RV2は五進数系（すなわち基数5の系）表現で表せる。よって、RNS剰余値RV2 ５進は五進数字の列である。各五進数字は0、1、2、3または4の値をもつ。RNS剰余値RV3は七進数系（すなわち基数7の系）表現で表せる。よって、RNS剰余値RV3７進は七進数字の列である。各七進数字は0、1、2、3、4、5または6の値をもつ。それでも、本発明はこの点について限定されない。
【００２８】
再び図１を参照すると、RNS剰余値RV0２進,…,RVJ
mJ進の全部または一部の選ばれた組み合わせを使って、数の部分的または完全な任意の置換配列が生成される。これに関し、各RNS剰余値RV0２進,…,RVJ
mJ進が一つまたは複数の数字を有していることは理解されるはずである。たとえば、RNS剰余値RV0２進は二進数字b1b2…bK2からなることができる。RNS剰余値RV1３進は三進数字t1t2…tK3からなることができる。RNS剰余値RV2５進は五進数字pt1pt2…ptK5からなることができる。RNS剰余値RV3７進は七進数字s1s2…sK7からなることができる。そのようなシナリオにおいて、出力列の諸数の任意の置換配列が決定でき、図２のＡに示されるような巡回構造に適用されることができる。
【００２９】
ここで図２のＡおよびＢを参照すると、巡回構造２００は複数の元Ａ、Ｂ、…Ｈを有している。元Ａ、Ｂ、…Ｈの数はn!の十進数nによって定義される。上記のように、n!は、乱数列RN0,…,RNNが等しくなれる全可能な値の数である。本稿で開示する方法が元Ａ、Ｂ、…Ｈのうちの特定の一つを指定するために、各元に対応する開始位置（starting  position）値を割り当てることが有用である。図２のＡおよびＢに示された本発明の実施形態によれば、元Ａは開始位置0をもつ。元Ｂは開始位置1をもつ。元Ｃは開始位置2をもつ、などとなっている。だが、本発明はこの点に関して限定されるものではない。たとえば、元Ａは代替的に開始位置1をもっていてもよい。元Ｂは代替的に開始位置2をもっていてもよい。元Ｃは代替的に開始位置3をもっていてもよい、などである。同様に、本稿で開示される方法が特定の出力列を指定するために、各元に対応する出力列数（output  sequence  number）を割り当てることが有用である。図２のＡおよびＢに示した本発明の実施形態によれば、元Ａは対応する出力列数1をもつ。元Ｂは対応する出力列数2をもつ。元Ｃは対応する出力列数3をもつ、などである。だが、本発明はこの点に関して限定されるものではない。
【００３０】
再び図１ならびに図２のＡおよびＢを参照すると、巡回構造２００の元の列が、RNS剰余値RV0,…,RVJの全部または一部を使って決定される。たとえば、巡回構造２００に８つの可能な元Ａ、Ｂ、…Ｈがあるとすると、出力列の最初の数は、三つの剰余値RV0２進数字（たとえばb1b2b3）の任意の組を使って一意的に決定できる。理解されるはずであるように、数字の組b1b2b3は関連する十進の値0、1、2、3、4、5、6または7をもつことができる。たとえば、二進数字b1b2b3が000という二進値をもつ場合、この二進値は十進値0に変換される。これに対し、二進数字b1b2b3が111という二進値をもつ場合、この二進値は7という十進値に変換される。この数字の組b1b2b3が関連する十進値3をもつとすると、巡回構造２００列中の開始元は、元Ａ〜Ｈのうちで開始位置3をもつ元、すなわち図２のＣに示されるように元Ｄである。したがって、出力列の最初の数は十進値4、すなわち図２のＢに示されるように元Ｄに関連する出力列数の値をもつ。
【００３１】
結果として、今や巡回構造２００の列における第二の元として選択する７つの元Ａ、Ｂ、Ｃ、Ｅ、Ｆ、Ｇ、Ｈがある。よって、出力列の第二の数は、剰余値RV3７進の七進数字（たとえばs1）を使って一意的に決定できる。理解されるはずであろうように、七進数字s1は関連する十進の値0、1、2、3、4、5または6をもつことができる。七進数字s1が関連する十進値4をもつとすると、巡回構造２００列中の第二の元は、元Ａ〜ＣおよびＥ〜Ｈのうちで位置4をもつ元、すなわち図２のＣに示されるように元Ｆである。出力列の第二の数は十進値6、すなわち図２のＢに示されるように元Ｆに関連する出力列数の値をもつ。
【００３２】
これで巡回構造２００の列における第三の元として選択する６つの元Ａ、Ｂ、Ｃ、Ｅ、Ｇ、Ｈがある。よって、出力列の第三の数は、剰余値RV0２進の二進数字（たとえばb4）およびRNS剰余値RV1３進の三進数字t1（たとえばt1）を使って一意的に決定できる。理解されるはずであろうように、第四の二進数字b4は値0または1をもつことができる。第一の三進数字t1は値0、1または2をもつことができる。これら二つの混合基数の数字は孫子の剰余定理（CRT）を介して組み合わせて、単一の有効六進数字の値を得てもよい。CRTまたは同様の方法を介した混合基数の再結合は当業者にはよく理解されている。したがって、CRTおよび同様の方法については本稿では詳述しない。第四の二進数字b4が値1をもち、第一の三進数字t1が値0をもつとすると、巡回構造２００列中の第三の元は、元Ａ〜Ｃ、ＥおよびＧ〜Ｈのうちで位置3にある元、すなわち図２のＣに示されるように元Ｅである。注目すべき点として、3という位置値はCRTを使って得られる。出力列の第三の数は十進値5、すなわち図２のＢに示されるように元Ｅに関連する出力列数の値をもつ。
【００３３】
これで巡回構造２００の列における第四の元として選択する５つの元Ａ、Ｂ、Ｃ、Ｇ、Ｈがある。よって、出力列の第四の数は、RNS剰余値RV2５進の五進数字（たとえばpt1）を使って一意的に決定できる。理解されるはずであるように、五進数字pt1は十進値0、1、2、3または4をもつことができる。五進数字pt1が十進値1をもつとすると、巡回構造２００列中の第四の元は、元Ａ〜ＣおよびＧ〜Ｈのうちで位置1にある元、すなわち図２のＣに示されるように元Ｂである。出力列の第四の数は十進値2、すなわち図２のＢに示されるように元Ｂに関連する出力列数の値をもつ。
【００３４】
これで今や巡回構造２００の列における第五の元として選択する４つの元Ａ、Ｃ、Ｇ、Ｈがある。よって、出力列の第五の数は、二つのRNS剰余値RV0２進数字（たとえばb5b6）の組を使って一意的に決定できる。理解されるはずであるように、二進数字の組b5b6は関連する十進値0、1、2または3をもつことができる。たとえば二進数字の組b5b6が二進値00をもつとすると、この二進値は十進値0に変換される。これに対し、二進数字の組b5b6が二進値11をもつとすると、この二進値は十進値3に変換される。二進数字の組b5b6が十進値3をもつ場合、巡回構造２００列中の第五の元は、元Ａ、Ｃ、Ｇ、Ｈのうちで位置3にある元、すなわち図２のＣに示されるように元Ｈである。出力列の第五の数は十進値8、すなわち図２のＢに示されるように元Ｈに関連する出力列数の値をもつ。
【００３５】
これで巡回構造２００の列における第六の元として選択する３つの元Ａ、Ｃ、Ｇがある。よって、出力列の第六の数は、RNS剰余値RV1３進の三進数字（たとえばt2）を使って一意的に決定できる。理解されるはずであるように、第二の三進数字t2は値0、1または2をもつことができる。第二の三進数字t2が十進値0をもつとすると、巡回構造２００列中の第六の元は、元Ａ、ＣおよびＧのうちで位置0にある元、すなわち図２のＣに示されるように元Ａである。出力列の第六の数は十進値1、すなわち図２のＢに示されるように元Ａに関連する出力列数の値をもつ。
【００３６】
これで巡回構造２００の列における第七の元として選択する２つの元Ｃ、Ｇがある。よって、出力列の第七の数は、RNS剰余値RV0２進の最後の二進数字（たとえばb7）を使って一意的に決定できる。理解されるはずであろうように、第七の二進数字b7は値0または1をもつことができる。第七の二進数字b7が値1をもつとすると、巡回構造２００列中の第七の元は、元ＣおよびＧのうちで位置1にある元、すなわち図２のＣに示されるように元Ｇである。出力列の第七の数は十進値7、すなわち図２のＢに示されるように元Ｇに関連する出力列数の値をもつ。
【００３７】
結果として、巡回構造２００の列における第八の元として選択する唯一の元Ｃがある。よって、出力列の第八の数は十進値3、すなわち図２のＢに示されるように元Ｃに関連する出力列数の値をもつ。
【００３８】
上記のプロセスは、複数の乱数RN0,…,RNNのそれぞれについて逐次的に実行できる。これに関し、数1ないしnの可能な出力列はn!通りあることは理解されるはずである。上記のように、n!は、乱数RN0,…,RNNがとりうる全可能な値の数である。結果として、複数の出力列における数の配列は、n・n!＋1出力まで反復しない。
【００３９】
以下の例は、本発明をさらに例解するために提供される。しかしながら、本発明の範囲はそれによっていかなる仕方であれ限定されると考えるべきではない。
【００４０】
〈例１〉
乱数RN0は十進値0ないし40,319をもつことができる。よって、乱数RN0がとりうる全可能な値は40,320通りである。数論の基本定理を使って、数40,320は8!＝8・7・…・1＝27・32・51・71と書ける。実際上、そのようなシナリオにおいて用いられる巡回構造はn個の元、すなわち8個の元を含む。
【００４１】
乱数RN0をRNS剰余値RV0、…、RV3として表すために用いられる各RNS算術演算は互いに素な数27、32、51、71を法m0km0、m1km1、m2km2、m3km3の集合として使う。よって、RNS剰余値RV0、…、RV3は式(2)〜(5)
RV0＝RN0  mod  27      (2)
RV1＝RN0  mod  32      (3)
RV2＝RN0  mod  51      (4)
RV3＝RN0  mod  71      (5)
によって定義できる。
【００４２】
RNS剰余値RV0、…、RV3は、乱数RN0の値を式(2)〜(5)に代入することによって計算できる。乱数RN0が10,311に等しければ、RNS剰余値RV0は71に等しい。RNS剰余値RV1は6に等しい。RNS剰余値RV2は1に等しい。RNS剰余値RV3は0に等しい。よって、RNS剰余値RV0、…、RV3は式(6)〜(9)
RV0＝RN0  mod  27＝71      (6)
RV1＝RN0  mod  32＝6      (7)
RV2＝RN0  mod  51＝1      (8)
RV3＝RN0  mod  71＝0      (9)
によって定義される。
【００４３】
RNS剰余値RV0、…、RV3のそれぞれは異なる基数系で表現される。具体的には、RNS剰余値RV0は二進法で表される。よって、RNS剰余値RV0２進は、値1000111をもつ二進数字の列である。RNS剰余値RV1は三進法で表される。よって、RNS剰余値RV1３進は、値20をもつ三進数字の列である。RNS剰余値RV2は五進法で表される。よって、RNS剰余値RV2５進は、値1をもつ五進数字である。RNS剰余値RV3は七進法で表される。よって、RNS剰余値RV3７進は、値0をもつ七進数字である。したがって、RNS剰余値RV0２進、…、RV3７進は、式(10)〜(13)
RV0２進＝RN0  mod  27＝71＝1000111  (10)
RV1３進＝RN0  mod  32＝6＝20        (11)
RV2５進＝RN0  mod  51＝1＝1        (12)
RV3７進＝RN0  mod  71＝0＝0        (13)
によって定義できる。
【００４４】
出力列の第一の数は、RNS剰余値RV0２進の最後の三つの二進数字111を使って決定される。出力列の第二の数は、RNS剰余値RV3７進の七進数字0を使って決定される。出力列の第三の数は、RNS剰余値RV0２進の第四の二進数字0およびRNS剰余値RV1３進の第二の三進数字を使って決定される。出力列の第四の数は、RNS剰余値RV2５進の五進数字1を使って決定される。出力列の第五の数は、RNS剰余値RV0２進の第二および第三の二進数字00を使って決定される。出力列の第六の数は、RNS剰余値RV1３進の第一の三進数字2を使って決定される。出力列の第七の数は、RNS剰余値RV0２進の第一の二進数字1を使って決定される。結果として、出力列は81243765となる。
【００４５】
〈例２〉
大きさが52の階乗（52!）の乱数列が、数発生プロセスの任意の組み合わせを介して選ばれる。大きさが52の階乗（52!）の乱数列は、8かける10の67乗（8・1067）に等しい。数論の基本定理を使って、8かける10の67乗（8・1067）は、52!＝52・51・…・1＝249・323・512・78・114・134・173・193・232・291・311・371・411・431・471と書ける。あるいはまた、より効率的に、各基数での15個の独立な乱数発生器の集まりを、大きさが52の階乗（52!）の有効乱数を生成するために等価に使うことができる。上記（図１〜図２および例１に関係した）と同じ論理に従って、出力列の第一の数は、二つの二進数字および一つの十三進数字を使って決定される。出力列の第二の数は、一つの三進数字および一つの十七進数字を使って決定される。出力列の第三の数は、一つの二進数字および二つの五進数字を使って決定される、などとなる。理解されるはずであるように、これらの数学的演算は、並列に実行されるようにハードウェアで実装されてもよい。この並列処理構成は、比較的高速かつ効率的な計算につながる。
【００４６】
〈例３〉
こうした組み合わせ技法に基づく乱数発生器は、巡回リング２００でのようなn＝233個の元の任意のマッピングを使って、その出力をいくつかの他の巡回リング発生器と組み合わせて構築できる。この組み合わせは、孫子の剰余定理のような方法を使って実行されうる。追加的な巡回リング発生器の標数が239、241、251のような233を超える奇素数であれば、有効反復期間は乗法的に長くなる。この例での４つの数に基づくと、出力列は十の459乗（10459）出力よりあとになってはじめて反復することになる。さらに、これらの追加的な巡回リング発生器の組み込みは、置換マッピングの決定論的な性質をマスクする助けになる。
【００４７】
ここで図３を参照すると、任意の置換配列を生成するための方法３００の流れ図が与えられている。方法３００はステップ３０２で始まり、ステップ３０４に続く。ステップ３０４では、巡回構造２００の元の総数nが選択される。このステップ３０４はまた、巡回構造２００の各元について開始位置を選択することも含む。たとえば、元Ａは位置0をもち、元Ｂは位置1をもち、元Ｃは位置2をもつ、といった具合である。このステップ３０４はさらに、各元についての出力列数を選択することを含む。たとえば、元Ａに関連付けられる出力列数は値1をもち、元Ｂに関連付けられる出力列数は値2をもつ、といった具合である。その後、ステップ３０６が実行される。ステップ３０６は、乱数RNがとりうる全可能な値の数n!を選択することを含みうる。
【００４８】
図３に示されるように、方法３００はステップ３０８に続く。ステップ３０８では、全可能な値の数n!によって定義される十進数が、互いに素な数の積として書かれる。ステップ３１０では、これらの互いに素な数が、RNS剰余値RV0、…、RVJを計算するための法m0km0、m1km1、…、mJkmJとして使われる。その後、ステップ３１２が実行され、乱数RNが生成される。その後、RNS算術演算が実行されて、乱数RNがRNS剰余値RV0、…、RVJの集合に変換される。
【００４９】
ステップ３１６では、算術演算が実行されて剰余数系からのRNS剰余値RV0、…、RVJが基数系に変換される。基数系は、これに限られないが、二進数系、三進数系、五進数系、七進数系、十一進数系、十三進数系、十七進数系、十九進数系、二十三進数系、二十九進数系および三十一進数系を含む。これに関し、各RNS剰余値RV0、…、RVJが異なる基数系に変換されることができることは理解しておくべきである。
【００５０】
その後、ステップ３１８が実行されて、RNS剰余値RV0、…、RVJの全部または一部の選択された組み合わせを使って、出力列数の一意的な置換配列が生成される。これに関し、置換配列は、決定され、図２Ａに示されるもののような巡回構造に適用されることができることは理解されるはずである。これに関し、各出力列数は巡回構造２００のある元に関連付けられていることは理解されるはずである。RNS剰余値RV0、…、RVJの全部または一部の各組み合わせが、巡回構造２００のどの元が前記組み合わせの十進値に等しい位置をもつかを判別するために使われる。ひとたび元が同定されたら、その元に関連付けられている出力列数が出力列に追加される。ステップ３１８ののち、ステップ３２０が実行される。ステップ３２０では、置換配列が巡回構造２００、長さnのビット列、データ・ストリーム修正用途または他の用途に適用される。これに関し、乱数列の生成された要素がその後の使用のために出力されることは理解されるはずである。たとえば、デジタル・データ・ストリームが前記出力列数を使って修正される。その後、ステップ３２２が実行されて方法３００はステップ３１２に戻る。
【００５１】
理解されるはずであるように、出力列は、ステップ３１２〜３２０のサイクルごとに変化する置換配列順をもつ。つまり、出力列数の置換配列順は、各乱数0、1、…、n!−1について一意的である。よって、各出力列の置換配列順はランダムのように見える。また、出力列数の置換配列順はn・n!出力の間は反復しはじめない。これも理解されるはずであるように、方法３００は多様な暗号システム用途において使用できる。たとえば、そのような方法は乱数列が利用可能であることに基づく暗号システムのリング発生器において有利に実装されることができる。そのようなシナリオでは、リング発生器は、任意に大きく選ばれた継続期間をもつ出力数列を生成できる。
【００５２】
ここで図４を参照すると、本発明の構成を実装するのに使えるリング発生器４００の一つの実施形態が示されている。リング発生器４００は乱数発生（RNG:  random  number  generating）モジュール４０２、計算モジュール４０４、４０６、４０８および置換モジュール４１０を有する。RNGモジュール４０２は、何らかの定義された算術プロセスを使って乱数列RN0、…、RNNを計算するよう構成されたハードウェアおよびソフトウェアを有する。そのような算術プロセスは当業者にはよく知られている。よって、前記の定義された算術プロセスは本稿では詳述しない。しかしながら、乱数列RN0、…、RNNが擬似乱数または擬似カオス的数のいかなる選ばれた列でもよいことは理解しておくものとする。
【００５３】
再び図４を参照すると、RNGモジュール４０２はまた、乱数列RN0、…、RNNを十進数系から二進数系に変換するよう構成されたハードウェアおよびソフトウェアをも有することができる。これに関し、二進数系表現で表された乱数列RN0、…、RNNが0の値および1の値をもつ数字の列を含むことは理解されるはずである。よって、二進数系表現はある数字長さBL（たとえば8桁）をもつ。RNGモジュール４０２はさらに、乱数列RN0、…、RNNを計算モジュール４０４、４０６、４０８に通信するよう構成されたハードウェアおよびソフトウェアを有する。
【００５４】
各計算モジュール４０４、４０６、４０８は、列RN0、…、RNN中の乱数をRNS剰余値RV0、…、RVJの集合に変換するためにRNS算術演算を実行するよう構成されたハードウェアおよびソフトウェアを有する。これに関し、列RN0、…、RNN中の乱数をRNS剰余値RV0、…、RVJの集合として表すために用いられる各RNS算術演算は、異なる互いに素な数を法m0km0、m1km1、…、mJkmJとして使うことは理解されるはずである。各互いに素な数は、各乱数RN0、…、RNNがとれる全可能な値の数n!に等しい十進数によって決まる。その十進数は、互いに素な数の積として表現される。これらの互いに素な数が法m0km0、m1km1、…、mJkmJとして使われる。
【００５５】
再び図４を参照すると、各計算モジュール４０４、４０６、４０８はまた、各RNS剰余値RV0、…、RVJを剰余数系から基数系に変換するよう構成されたハードウェアおよびソフトウェアも有する。これに関し、各計算モジュール４０４、４０６、４０８はそれぞれのRNS剰余値RV0、…、RVJを剰余数系から特定の基数系に変換するよう構成されている。たとえば、計算モジュール４０４はRNS剰余値RV0を二進数系に変換するよう構成されている。計算モジュール４０６はRNS剰余値RV1を三進数系に変換するよう構成されている。計算モジュール４０８はRNS剰余値RVJを七進数系に変換するよう構成されている。ただし、本発明はこの点について限定されるものではない。
【００５６】
各計算モジュール４０４、４０６、４０８はさらに、それぞれの剰余値RV0、…、RVJを置換モジュール４１０に通信するよう構成されたハードウェアおよびソフトウェアを有する。置換モジュール４１０は、RNS剰余値RV0、…、RVJの全部または一部の選択された組み合わせを使って諸出力列数の任意の置換配列を生成するよう構成されたハードウェアおよびソフトウェアを有する。置換モジュール４１０はまた、諸出力列数の一意的な置換配列を有する出力を生成するよう構成されたハードウェアおよびソフトウェアをも有する。これに関し、置換配列は決定され、図２Ａに示されたもののような巡回構造に適用されることは理解されるはずである。これに関し、各出力列数が巡回構造２００のある元に関連付けられていることは理解されるはずである。RNS剰余値RV0、…、RVJの全部または一部の各組み合わせは、前記巡回構造のどの元が前記組み合わせの十進値に等しい位置をもつかを決定するために使われる。ひとたび元が同定されたら、その元に関連付けられている出力列数が出力列に追加される。置換モジュール４１０はさらに、出力列を外部装置（図示せず）に通信するよう構成されたハードウェアおよびソフトウェアを有する。外部装置は、出力列に含まれる出力列数を使ってデジタル・データ・ストリームを修正するよう構成されていることができる。本発明のある側面によれば、置換モジュール４１０は孫子の剰余定理を使って一つまたは複数の追加的な巡回リング発生器（cyclic  ring  generator）と組み合わさるよう構成される。ただし、本発明はこれに関し限定されるものではない。
【００５７】
当業者は、リング発生器４００がRNSベースの置換マッピングの例示的なアーキテクチャを示していることを理解するであろう。しかしながら、本発明はこの点について限定されるものではなく、他のいかなるリング発生器アーキテクチャでも限定なしに使用できる。
【００５８】
ここで図５を参照すると、本発明の構成を実装するために使用できる暗号システム（cryptographic  system）５００の一つの実施形態が示されている。暗号システム５００は、データ・ストリーム源５０２、暗号化装置（encryption  device）５０４および復号装置（decryption  device）５０６を有する。データ・ストリーム源５０２はデータ・ストリームを生成するよう構成されたハードウェアおよび／またはソフトウェアを有することができる。データ・ストリームは、声データ、ビデオ・データ、ユーザ識別データ、署名データおよび／またはその他といったペイロード・データを含むことができる。データ・ストリームはデジタル・データ・ストリームであることもできる。データ・ストリーム源５０２はまた、そのデータ・ストリームを暗号化装置５０４に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。
【００５９】
暗号化装置５０４は暗号化列（encryption  sequence）を生成するよう構成されたハードウェアおよび／またはソフトウェアを有する。暗号化列は、擬似乱数または擬似カオス的乱数を含む。暗号化装置５０４はまた、暗号化列を使ってデータ・ストリームを修正する動作を実行するよう構成されたハードウェアおよび／またはソフトウェアをも有する。暗号化装置５０４はさらに、修正されたデータ・ストリームを復号装置５０６に通信するよう構成されたハードウェアおよび／またはソフトウェアを有する。暗号化装置５０４は図６との関係でのちに詳述する。
【００６０】
復号装置５０６は復号列（decryption  sequence）を生成するよう構成されたハードウェアおよび／またはソフトウェアを有する。復号列は擬似乱数または擬似カオス的な乱数を含む。復号列は、暗号化装置５０４によって生成された暗号化列と同じであることができる。復号装置５０６はまた、受信された修正されたデータ・ストリームを復号する動作を実行するよう構成されたハードウェアおよび／またはソフトウェアをも有する。そのような復号動作は当業者にはよく知られており、したがって本稿では詳述しない。復号装置５０６はまた、復号されたデータを外部装置（図示せず）に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。復号装置５０４は図７との関係でのちに詳述する。
【００６１】
ここで図６を参照すると、図５の暗号化装置５０４の一つの実施形態が示されている。暗号化装置５０４はデータ・ストリーム受信手段（DSRM:  data  stream  receiving  means）６０２、リング発生器４００および暗号化器（encryptor）６０４を有する。挙げられた構成要素６０２、６０４のそれぞれは当業者にはよく知られており、よって本稿で詳述はしない。しかしながら、読者が本発明を理解するのを助けるために、暗号化装置５０４の簡単な説明を与えておく。
【００６２】
再び図６を参照すると、DSRM６０２は、データ・ストリーム源５０２（図５との関係で上述）のような外部装置からのデータ・ストリームを受信するよう構成されたハードウェアおよび／またはソフトウェアを有する。DSRM６０２はまた、データ・ストリームを暗号化器６０４に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。これに関し、DSRM６０２が暗号化器６０４に電子的に接続されていることは理解されるはずである。
【００６３】
リング発生器４００は一般に暗号化列を発生するよう構成されている。図４との関係で与えた上記の議論は、単一の乱数列についてリング発生器４００を理解するために十分である。しかしながら、リング発生器４００はそこで生成された暗号化列の数を置換し、並べ替えるよう構成されていることもできる。これに関し、一般化された置換法がリング発生器４００内部の乱数列に適用されて、それによりリング発生器出力が内部的に発生された乱数列の何らかの置換された組み合わせとなるようにしてもよい。リング発生器４００はまた、暗号化列を暗号化器６０４に通信するようにも構成される。これに関し、リング発生器４００が暗号化器６０４に電子的に接続されることは理解されるはずである。
【００６４】
暗号化器６０４は、暗号化列をデータ・ストリームに組み込むまたは組み合わせることによって修正されたデータ・ストリームを生成するよう構成されている。より詳細には、暗号化器６０４はデータ・ストリームをマスクするために、ある組み合わせ法を実行するよう構成される。その組み合わせ法は、標準的な乗算、ガロア拡大体内での乗算、qを法とする加算、qを法とする減算、ビットごとの論理演算または他の任意の標準的な組み合わせ法であってよい。これに関し、暗号化器６０４が乗算器、加算器、デジタル論理デバイス、フィードバック機構または同様の組み合わせ機能デバイスを含むことができることは理解されるはずである。
【００６５】
ここで図７を参照すると、図５の復号装置５０６の一つの実施形態が示されている。復号装置５０６は修正データ・ストリーム受信手段（MDSRM:  modified  data  stream  receiving  means）７０２、リング発生器４００および復号器（decryptor）７０４を有する。挙げられた構成要素７０２、７０４のそれぞれは当業者にはよく知られており、よって本稿で詳述はしない。しかしながら、読者が本発明を理解するのを助けるために、復号装置５０６の簡単な説明を与えておく。
【００６６】
再び図７を参照すると、MDSRM７０２は、暗号化装置５０４（図５との関係で上述）のような外部装置からの修正データ・ストリームを受信するよう構成されたハードウェアおよび／またはソフトウェアを有する。MDSRM７０２はまた、修正データ・ストリームを復号器７０４に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。これに関し、MDSRM７０２が復号器７０４に電子的に接続されていることは理解されるはずである。
【００６７】
リング発生器４００は一般に復号列を発生するよう構成されている。図４との関係で与えた上記の議論は、単一の乱数列についてリング発生器４００を理解するために十分である。しかしながら、リング発生器４００はそこで生成された暗号化列の数を置換し、並べ替えるよう構成されていることもできる。リング発生器４００は、復号列を復号器７０４に通信するようにも構成される。これに関し、リング発生器４００が復号器７０４に電子的に接続されることは理解されるはずである。復号器７０４は、修正データ・ストリームおよび復号列を使って復号方法を実行することによって復号データを生成するよう構成されている。復号方法は当業者にはよく知られており、ここでは詳述しない。
【００６８】
注目すべき点として、リング発生器は拡散（diffusion）プロセスにおいても使用できる。拡散プロセスは当業者にはよく知られており、よってここでは詳述しない。しかしながら、拡散プロセスが暗号システム５００（図５〜図７との関連で上述）によって実行される暗号化プロセスとは異なることは理解しておくべきである。上記のように、暗号化プロセスは一般に平文を暗号文に変換し、しばしばデータの統計的性質を変えることを含む。平文および暗号文は当業者にはよく知られており、ここでは詳述しない。変換は暗号化列をデータ・ストリームに組み込むまたは組み合わせることによって達成される。より詳細には、暗号化プロセスは、標準的な乗算、ガロア拡大体内での乗算、qを法とする加算、qを法とする減算、ビットごとの論理演算または他の任意の標準的な組み合わせ法を含む。理解されるはずであるように、暗号化プロセスは：（ａ）データ・セキュリティを高め、（ｂ）データ完全性を保証し、（ｃ）デジタル・データ・ストリームの各キャラクタが平文形式から暗号文形式に変換されることを保証するために実行される。これに対し、拡散プロセスは一般に、データをデータ・ストリームまたは暗号化されたデータ・ストリーム全体に広げることによってデータの属性をマスクすることに関わるが、原子的な単位の統計的性質を直接変えることはない。このマスキングは：（ａ）データ・ストリーム中のビットの並べ替え、および／または（ｂ）データ・ストリーム中のビットのシフトによって実行される。これもまた理解されるはずであるように、拡散プロセスは、デジタル・データ・ストリームの各キャラクタが修正されたデータ・ストリーム（または暗号化されたデータ・ストリーム）において同じ生起確率をもつことを保証し、よって原始的なデータ単位の選ばれた統計的性質を維持するために実行される。
【００６９】
ここで図８を参照すると、本発明の構成を実装するために使用できる暗号システム８００の一つの実施形態が示されている。暗号システム８００は、データ・ストリーム源８０２、拡散装置８０４および逆拡散装置８０６を有する。データ・ストリーム源８０２はデータ・ストリームを生成するよう構成されたハードウェアおよび／またはソフトウェアを有することができる。データ・ストリームは、声データ、ビデオ・データ、ユーザ識別データ、署名データおよび／またはその他といったペイロード・データを含むことができる。データ・ストリームはデジタル・データ・ストリームであることもできる。データ・ストリーム源８０２はまた、そのデータ・ストリームを拡散装置８０４に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。
【００７０】
拡散装置８０４は拡散列（diffusion  sequence）を生成するよう構成されたハードウェアおよび／またはソフトウェアを有する。拡散列は、擬似乱数または擬似カオス的乱数を含む。拡散装置８０４はまた、拡散列を使って受信されたデータ・ストリームを置換する動作を実行するよう構成されたハードウェアおよび／またはソフトウェアをも有する。拡散操作が置換された要素の統計的な特性を変えないことを注意しておくべきである。拡散操作はまた、拡散列のいかなる部分も出力に封入しはせず、メッセージを知ることなく拡散列を容易に暗号解読することを防ぐ。むしろ、拡散操作は拡散列をデータに対する操作器として使っている。これに関し、「拡散」の用語が、入力データ・ストリームの論理的なデータ・パターンを見えにくくし、みかけのエントロピーを高めるための諸アルゴリズムを実装する諸方法を指すことは理解されるはずである。そのようなアルゴリズムは、これに限られないが、データ暗号化標準（DES:  data  encryption  standard）アルゴリズムおよび高度暗号化標準（AES:  advanced  encryption  standard）アルゴリズムに見出すことができる。理解されるはずであるように、DES方法は一般に、拡散を提供するためにデータ・ストリーム中のビットの並べ替えを実行することに関わる。AES方法は一般に、拡散を提供するために行シフトおよび列混合のステップを実行することに関わる。これもまた理解されるはずであるように、拡散は、デジタル・データ・ストリームの各キャラクタが修正された（または拡散された）データ・ストリームにおける同じ生起確率をもつことを保証するために実行される。多くの場合、より十全にデータを拡散させるために、複数ラウンドの拡散操作器（diffusion  operator）が適用される。実際上、修正された（または暗号化された）データ・ストリームに存在する数学的なパターンのリバース・エンジニアリングはより困難になる。
【００７１】
再び図８を参照すると、拡散装置８０４はさらに、拡散されたデータ・ストリームを逆拡散装置８０６に通信するよう構成されたハードウェアおよび／またはソフトウェアを有する。拡散装置８０４は図９との関係でのちに詳述する。
【００７２】
逆拡散装置８０６は、逆拡散列を生成するよう構成されたハードウェアおよび／またはソフトウェアを有する。逆拡散列は擬似乱数または擬似カオス的乱数を含む。逆拡散列は拡散装置８０４によって生成された拡散列と同じであることができる。逆拡散装置８０６はまた、受信された拡散されたデータ・ストリームの拡散をもとに戻す動作を実行するよう構成されたハードウェアおよび／またはソフトウェアをも有する。そのような逆拡散動作は当業者にはよく知られており、したがって本稿では詳述しない。逆拡散装置８０６はまた、拡散解除されたデータ・ストリームを外部装置（図示せず）に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。
【００７３】
ここで図９を参照すると、図８の拡散装置８０４の一つの実施形態が示されている。拡散装置８０４はデータ・ストリーム受信手段（DSRM:  data  stream  receiving  means）９０２、リング発生器４００および拡散操作器９０４を有する。挙げられた構成要素９０２、９０４のそれぞれは当業者にはよく知られており、よって本稿で詳述はしない。しかしながら、読者が本発明を理解するのを助けるために、拡散装置８０４の簡単な説明を与えておく。
【００７４】
再び図９を参照すると、DSRM９０２は、データ・ストリーム源８０２（図８との関係で上述）のような外部装置からのデータ・ストリームを受信するよう構成されたハードウェアおよび／またはソフトウェアを有する。DSRM９０２はまた、データ・ストリームを拡散操作器９０４に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。これに関し、DSRM９０２が拡散操作器９０４に電子的に接続されていることは理解されるはずである。
【００７５】
リング発生器４００は一般に拡散列を発生するよう構成されている。拡散列は、制御された統計的性質のために修正された任意の乱数列の形を取ってよい。図４との関係で与えた上記の議論は、リング発生器４００を理解するために十分である。リング発生器４００は、拡散列を拡散操作器９０４に通信するようにも構成される。これに関し、リング発生器４００が拡散操作器９０４に電子的に接続されることは理解されるはずである。拡散操作器９０４は、データ・ストリームおよび拡散列を使って拡散操作を実行することによって拡散されたデータ・ストリームを生成するよう構成されている。拡散操作は当業者にはよく知られており、よってここでは詳述しない。
【００７６】
ここで図１０を参照すると、図８の逆拡散装置８０６の一つの実施形態が示されている。逆拡散装置８０６は、拡散データ・ストリーム受信手段（DDSRM:  diffused  data  stream  receiving  means）１００２、リング発生器４００および逆拡散操作器（reverse  diffusion  operator）１００４を有する。挙げられた構成要素１００２、１００４のそれぞれは当業者にはよく知られており、よって本稿で詳述はしない。しかしながら、読者が本発明を理解するのを助けるために、逆拡散装置８０６の簡単な説明を与えておく。
【００７７】
再び図１０を参照すると、DDSRM１００２は、拡散装置８０４のような外部装置からの拡散データ・ストリームを受信するよう構成されたハードウェアおよび／またはソフトウェアを有する。DDSRM１００２はまた、拡散データ・ストリームを逆拡散操作器１００４に通信するよう構成されたハードウェアおよび／またはソフトウェアをも有する。これに関し、DDSRM１００２が逆拡散操作器１００４に電子的に接続されていることは理解されるはずである。
【００７８】
リング発生器４００は一般に逆拡散列（reverse  diffusion  sequence）を発生するよう構成されている。逆拡散列は、制御された統計的性質のために修正されたいかなる乱数列の形をってもよい。図４との関係で与えた上記の議論は、リング発生器４００を理解するために十分である。リング発生器４００は、逆拡散列を逆拡散操作器１００４に通信するようにも構成されている。これに関し、リング発生器４００が逆拡散操作器１００４に電子的に接続されていることは理解されるはずである。逆拡散操作器１００４は、データ・ストリームおよび逆拡散列を使って逆拡散操作を実行することによって拡散をもとに戻されたデータ・ストリームを生成するよう構成されている。逆拡散操作は当業者にはよく知られており、よってここでは詳述しない。
【００７９】
本発明の以上の記載に照らして、本発明がハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組み合わせにおいて実現できることは認識されるはずである。本発明に基づいて数字の任意の置換配列を生成する方法は、一つの処理システムにおける中央集中の仕方で実現でき、あるいは種々の要素がいくつかの相互接続された処理システムに横断して広がっている分散した仕方で実現されることができる。本稿に記載された諸方法を実行するために適応されたいかなる種類のコンピュータ・システムまたは他の装置も好適である。ハードウェアとソフトウェアの典型的な組み合わせは、ロードされ実行されたときにコンピュータ・プロセッサを制御して本稿に記載された諸方法を実行させるコンピュータ・プログラムをもつ汎用コンピュータ・プロセッサであることができる。もちろん、特定用途向け集積回路（ASIC）および／またはFPGAも同様の結果を達成するために使うことができる。
【００８０】
本発明は、本稿に記載された諸方法の実装を可能にするあらゆる特徴を有し、コンピュータ・システムにロードされたときにそれらの諸方法を実行できるコンピュータ・プログラム・プロダクトに組み込まれることもできる。今のコンテキストにおけるコンピュータ・プログラムまたはアプリケーションは、情報処理機能をもつシステムに特定の機能を、直接に、あるいはａ）別の言語、コードまたは記法への変換；ｂ）異なる物質的な形態での再現の一方または両方に続いて、実行させることを意図した命令の集合の、任意の言語、コードまたは記法におけるいかなる表現をも意味する。さらに、上記の記載は単に例示的であることが意図されており、本発明を、付属の請求項に述べられることによる以外のいかなる仕方であっても限定することは意図されていない。
【図面の簡単な説明】
【００８１】
【図１】本発明の理解のために有用な、数列の反復周期を伸ばすためのアルゴリズムの概念図である。
【図２】Ａは、本発明の理解のために有用な、巡回構造の概略図である。Ｂは、本発明の理解のために有用な、関連付けられた開始位置の値および出力列の数とともに巡回構造の元を示す表である。Ｃは、本発明の理解のために有用な、巡回構造の元の位置の変更の概略図である。
【図３】本発明の理解のために有用な、複数の数の任意の置換配列を生成する方法の流れ図である。
【図４】本発明の理解のために有用な、リング発生器のブロック図である。
【図５】本発明の理解のために有用な、暗号システムのブロック図である。
【図６】本発明の理解のために有用な、図５の暗号化装置のブロック図である。
【図７】本発明の理解のために有用な、図５の復号装置のブロック図である。
【図８】本発明の理解のために有用な、暗号システムのブロック図である。
【図９】本発明の理解のために有用な、図８の拡散装置のブロック図である。
【図１０】本発明の理解のために有用な、図８の逆拡散装置のブロック図である。
【符号の説明】
【００８２】
２００  巡回構造
３００  任意の置換配列を生成するための方法
３０２  開始
３０４  巡回リング２００について元の総数nを選択；各元について開始位置を選択；各元について出力列数を選択
３０６  乱数RNについて総数n!の可能な値を選択
３０８  数論の基本定理を使って、総数n!の可能な値によって定義される十進数を互いに素な数の積として書く
３１０  上記の互いに素な数を、RNS剰余値RV0,...,RVJを計算するための法m0,...,mJとして使う
３１２  乱数RNを生成
３１４  RNS算術演算を実行して乱数RNをRNS剰余値RV0,...,RVJの集合に変換
３１６  算術演算を実行してRNS剰余値RV0,...,RVJを剰余数系から特定の基数系に変換
３１８  剰余値RV0,...,RVJの全部または一部の選択された組み合わせを使って、巡回リング２００の元に関連付けられた出力列数の任意の置換配列を生成
３２０  上記の置換配列を巡回構造２００、長さnのビット列、デジタル・データ・ストリーム修正用途または他の用途に適用
３２２  ステップ３１２に戻る
４００  本発明の構成を実装するのに使えるリング発生器の一つの実施形態
４０２  乱数発生モジュール
４０４  計算モジュール
４０６  計算モジュール
４０８  計算モジュール
４１０  置換モジュール
５００  暗号システム
５０２  デジタル・データ・ストリーム源
５０４  暗号化装置
５０６  復号装置
６０２  データ・ストリーム受信手段
６０４  暗号化器
７０２  修正データ・ストリーム受信手段
７０４  復号器
８００  暗号システム
８０２  デジタル・データ・ストリーム源
８０４  拡散装置
８０６  逆拡散装置
９０２  データ・ストリーム受信手段
９０４  拡散操作器
１００２  拡散データ・ストリーム受信手段
１００４  逆拡散操作器
【図１】
0004871944.tif 000002
【図２】
0004871944.tif 000003
【図３】
0004871944.tif 000004
【図４】
0004871944.tif 000005
【図５】
0004871944.tif 000006
【図６】
0004871944.tif 000007
【図７】
0004871944.tif 000008
【図８】
0004871944.tif 000009
【図９】
0004871944.tif 000010
【図１０】
0004871944.tif 000011