(57)【特許請求の範囲】
【請求項１】
計算装置を用いた情報確率的処理システムであって、
ａ）プロセッサを備えるアーキテクトモジュールを含み、前記アーキテクトモジュールは、処理アーキテクチャを生成することによって、データの確率的処理を管理かつ制御するように構成され、
ｂ）前記アーキテクトモジュールに機能的に連結された非決定的データプールモジュールを含み、前記非決定的データプールモジュールは、非決定的な値のストリームを提供するように構成され、
ｃ）前記アーキテクトモジュールに機能的に連結された複数の機能的に同等なデータ処理モジュールを含み、前記複数の機能的に同等なデータ処理モジュールの各々は、前記アーキテクトモジュールに呼出されるときに、データを確率的に処理するように構成され、
ｄ）前記アーキテクトモジュールと機能的に通信するデータ供給モジュールを含み、前記データ供給モジュールは、確率的に処理される所望のデータセットを供給するように構成され、前記アーキテクトモジュールは、前記データセットの確率的処理のために、前記複数の機能的に同等なデータ処理モジュールから前記処理アーキテクチャに使用されるデータ処理モジュールを選択し、当該データ処理モジュールの使用を管理し、
ｅ）メモリ記憶装置を備える構造化メモリモジュールを含み、前記構造化メモリモジュールは、前記アーキテクトモジュールに機能的に連結され、前記処理アーキテクチャを記録するように構成されている、システム。
【請求項２】
前記アーキテクトモジュールは、乱数を用いて前記複数のデータ処理モジュールからデータ処理モジュールを選択する、請求項１に記載のシステム。
【請求項３】
前記アーキテクトモジュールは、実行中に前記処理アーキテクチャをランダムに変更する実行時間修正モジュールをさらに含み、請求項１に記載のシステム。
【請求項４】
前記アーキテクトモジュールは、乱数を用いて、選択されたデータ処理モジュール用の実行時間を選択する、請求項１に記載のシステム。
【請求項５】
前記システムは、データプール処理モジュールをさらに含み、前記データプール処理モジュールは、前記データプールモジュールに機能的に連結され、共通データプールを処理することによってアプリケーション特有のデータプールを生成するように構成される、請求項１に記載のシステム。
【請求項６】
前記構造化メモリモジュールは、所定の処理アーキテクチャを複製するように前記アーキテクトモジュールに十分な情報を提供するように構成されている、請求項１に記載のシステム。
【請求項７】
前記アーキテクトモジュールは、ＣＲＣ計算要素をさらに含む、請求項１に記載のシステム。
【請求項８】
情報ストリームを確率的に処理する方法であって、
ａ）確率的に処理される情報ストリームを提供するステップと、
ｂ）非決定的データプールを提供するステップと、
ｃ）複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するステップと、
ｄ）前記選択されたデータ処理モジュールの動作を構造化することによって、処理アーキテクチャを生成するステップと、
ｅ）前記処理アーキテクチャに従って前記情報ストリームを処理することによって、前記情報ストリームを確率的に変更するステップと、
ｆ）処理アーキテクチャの使用を再現するのに十分な構造化情報を記録するステップとを含み、
前記非決定的データプールを提供するステップと、前記データ処理モジュールを選択するステップと、前記処理アーキテクチャを生成するステップと、前記構造化情報を記録するステップと、前記情報ストリームを変更するステップとの各々は、これらのステップを実行時間まで遅延させるステップを含む、方法。
【請求項９】
情報ストリームを確率的に処理する方法であって、
ａ）確率的に処理される情報ストリームを提供するステップと、
ｂ）非決定的データプールを提供するステップと、
ｃ）複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するステップと、
ｄ）前記選択されたデータ処理モジュールの動作を構造化することによって、処理アーキテクチャを生成するステップと、
ｅ）前記処理アーキテクチャに従って前記情報ストリームを処理することによって、前記情報ストリームを確率的に変更するステップとを含み、
前記非決定的データプールを提供するステップは、前記非決定的データプールを確率的に処理することによってアプリケーション特有のデータプールを生成するステップをさらに含む、方法。
【請求項１０】
情報ストリームを確率的に処理する方法であって、
ａ）確率的に処理される情報ストリームを提供するステップと、
ｂ）非決定的データプールを提供するステップと、
ｃ）複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するステップと、
ｄ）前記選択されたデータ処理モジュールの動作を構造化することによって、処理アーキテクチャを生成するステップと、
ｅ）前記処理アーキテクチャに従って前記情報ストリームを処理することによって、前記情報ストリームを確率的に変更するステップとを含み、
前記データ処理モジュールを選択するステップと、前記処理アーキテクチャを生成するステップとは、データ処理モジュールをランダムに選択するために、乱数を提供するステップと、前記選択されたデータ処理モジュールの使用期間をランダムに決定するために、乱数を提供するステップと、前記選択されたデータ処理モジュールをシードするために、乱数を提供するステップとをさらに含む、方法。
【請求項１１】
ｆ）実行中に、ランダムに選択された置換データ処理モジュールを用いて、前記選択されたデータ処理モジュールを置換するステップと、
ｇ）前記置換データ処理モジュールを用いて、前記情報ストリームの変更を続行するステップとをさらに含む、請求項１０に記載の方法。
【請求項１２】
情報ストリームを確率的に処理する方法であって、
ａ）確率的に処理される情報ストリームを提供するステップと、
ｂ）非決定的データプールを提供するステップと、
ｃ）複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するステップと、
ｄ）前記選択されたデータ処理モジュールの動作を構造化することによって、処理アーキテクチャを生成するステップと、
ｅ）前記処理アーキテクチャに従って前記情報ストリームを処理することによって、前記情報ストリームを確率的に変更するステップと、
ｆ）前記情報ストリームがデータ処理モジュールの複数のランダム化された層を介して処理されるように、複数のデータ処理モジュールの使用をランダムに階層化するステップとを含む、方法。
【請求項１３】
各層は、ランダムに選択された一連の足場ポイントを含む、請求項１２に記載の方法。
【請求項１４】
各層は、異なる乱数を用いて構成されている、請求項１３に記載の方法。
【請求項１５】
情報ストリームを確率的に処理する方法であって、
ａ）確率的に処理される情報ストリームを提供するステップと、
ｂ）非決定的データプールを提供するステップと、
ｃ）複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するステップと、
ｄ）前記選択されたデータ処理モジュールの動作を構造化することによって、処理アーキテクチャを生成するステップと、
ｅ）前記処理アーキテクチャに従って前記情報ストリームを処理することによって、前記情報ストリームを確率的に変更するステップとを含み、
前記情報ストリームを提供するステップは、前記情報ストリームを所定のプロトコルに構成するステップをさらに含む、方法。
【請求項１６】
前記処理アーキテクチャとともに、非確定データを前記情報ストリームのＣＲＣ計算素子に組込むことによって、前記プロトコルにユーザの認証を提供するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
情報ストリームを確率的に処理する方法であって、
ａ）確率的に処理される情報ストリームを提供するステップと、
ｂ）非決定的データプールを提供するステップと、
ｃ）複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するステップと、
ｄ）前記選択されたデータ処理モジュールの動作を構造化することによって、処理アーキテクチャを生成するステップと、
ｅ）前記処理アーキテクチャに従って前記情報ストリームを処理することによって、前記情報ストリームを確率的に変更するステップと、
ｆ）処理アーキテクチャの使用を再現するのに十分な構造化情報を記録するステップとを含み、
前記構造化情報を記録するステップは、カウンターパートによる前記方法の動作が同一の時間インデックス位置から始まるように、同期値を記録するステップをさらに含む、方法。
【請求項１８】
確率的に処理された情報ストリームを復元する方法であって、
ａ）特定の処理アーキテクチャプールに関連付けられ、確率論的に処理された情報ストリームを受信するステップと、
ｂ）非決定的データプールを提供するステップと、
ｃ）前記特定の処理アーキテクチャと、前記特定の処理アーキテクチャにおける１つまたは複数のデータ処理モジュールの使用を再現するのに十分な構造化情報を提供するステップと、
ｄ）複数の機能的に同等なデータ処理モジュールから１つまたは複数のデータ処理モジュールを選択することによって前記特定の処理アーキテクチャを生成し、記録された前記構造化情報に応じて当該特定の処理アーキテクチャを構造化するステップと、
ｅ）生成された前記特定の処理アーキテクチャを介して、前記確率的に処理された情報ストリームを逆処理することによって、前記確率的に処理された情報ストリームをオリジナルの情報ストリームに復元するステップとを含む、方法。
【請求項１９】
前記構造化情報を提供するステップは、前記特定の処理アーキテクチャを十分再現するように、受信された前記確率的に処理された情報ストリーム内で捜し出した顕在的構造化情報を提供するステップをさらに含む、請求項１８に記載の方法。
【請求項２０】
前記構造化情報を提供するステップは、非顕在的情報から、前記特定の処理アーキテクチャを再現するのに十分な構造化情報を生成するステップをさらに含む、請求項１８に記載の方法。
【請求項２１】
前記非決定的データプールを提供するステップは、受信した処理アーキテクチャに従って前記非決定的データプールを処理することによって、アプリケーション特有のデータプールを生成するステップをさらに含む、請求項１８に記載の方法。
【請求項２２】
情報ストリームを確率的に処理するように構成された確率的処理装置であって、
ａ）アーキテクトモジュールを含み、前記アーキテクトモジュールは、処理アーキテクチャに従って、情報ストリームの確率的処理を管理および制御するように構成され、
ｂ）アーキテクトモジュールと機能的に通信する構造化メモリモジュールを含み、前記構造化メモリモジュールは、所定の処理アーキテクチャを複製するように前記アーキテクトモジュールに十分な情報を提供しかつ利用した処理アーキテクチャを記録するように構成され、
ｃ）プロセッサと機能的に通信する入力モジュールを含み、前記入力モジュールは、プロセッサに確率的に処理されるべき受信した情報ストリームを前記プロセッサに供給するように構成され、
ｄ）前記プロセッサと前記アーキテクトモジュールとに機能的に連結された非決定的データプールを備える不揮発性メモリ装置を含み、前記不揮発性メモリ装置は、関数から導出されていない非決定的な値のストリームを前記アーキテクトモジュールに提供するように構成され、
ｅ）プロセッサを備えかつ前記アーキテクトモジュールに連結されたデータ処理モジュールを含み、前記データ処理モジュールは、前記アーキテクトモジュールに呼出されるときに、前記処理アーキテクチャに従って、前記情報ストリームを確率的に処理するように構成され、
ｆ）前記データ処理モジュールと機能的に通信する出力モジュールを含み、前記出力モジュールは、前記データ処理モジュールから前記確率的に処理された情報ストリームを受信しかつ前記確率的に処理された情報ストリームを送信するように構成される、装置。
【請求項２３】
前記データ処理モジュールは、データ処理指令セットをさらに含む、請求項２２に記載の装置。
【請求項２４】
前記データ処理モジュールは、前記情報ストリームを確率的に処理するために、関数またはデータプールのライブラリーをさらに含む、請求項２２に記載の装置。
【請求項２５】
前記データ処理モジュールは、ＣＲＣ計算要素をさらに含む、請求項２２に記載の装置。
【請求項２６】
請求項８〜２１のいずれか１項に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本発明は、２０１１年５月２７日付で、Patrick Rossにより出願された米国仮特許出願公開第６１／５１９６７９に基づき、米国特許法第１２０条による優先権を主張し、その開示が引用により本明細書に援用される。本発明は、２０１２年５月２９日付で、Patrick D. Rossにより出願された米国非仮特許出願公開第１３／４８２７２３号に基づき、特許協力条約およびパリ条約による優先権を主張し、その開示が引用により本明細書に援用される。
【０００２】
技術分野
本発明は、情報を保護するための方法およびシステムに関し、具体的には、情報確率的処理を提供する動的アプリケーションを生成する方法およびシステムに関する。
【０００３】
産業上の利用可能性
本発明は、さまざまな方法で、コンピュータゲーム、銀行取引、通信、媒体開発産業のようなさまざまな業種に適用することができるが、これらに限定されない。本発明は、これらの産業により利用されるシステムに使用されるコンピュータハードウェア／ソフトウェアに実装されてもよい。
【背景技術】
【０００４】
関連技術の説明
多くのアプリケーションは、内部処理の一部として乱数を必要とする。これらのアプリケーションの一部は、値の均一分布、所定のシード値からの再現性、および繰返すまでに非常に長いサイクルなどのような単純要件を要する。そのために、多くの論文および書籍は、これらの伝統的な乱数発生器を提供する好適なハードウェアおよびソフトウェア関数を記載する。伝統的な乱数発生器は、有用でありながら問題もある。現行の乱数発生器の欠点を対処する前に、一般的には、まず、これらの発生器の動作を再検討する必要がある。
【０００５】
ハードウェアに基づくかまたはソフトウェアに基づくかに関係なく、すべての伝統的な乱数発生器は、多くの共通特性を有する。伝統的な乱数発生器の基礎は、静的ランダム関数を使用することである。これらの関数の各々は、配列における非ゼロの現在データ値を処理して次の乱数にする。その後、各新たな値の処理によって、ランダム配列が生成される。好適な関数を使用すれば、生成されたランダム配列は、殆どすべての既知のランダム性統計テストに合格するだろう。
【０００６】
多くのランダム関数は、テストされ、公開されている。公開された関数の殆どは、乱数の同一配列を繰返す前に、乱数の限定配列を生成する。これらの短いサイクルの長さは、短すぎであり、多くのアプリケーションと互換できない可能性がある。ハードウェアでは、ランダム関数は、殆どの場合、線形フィードバックシフトレジスタ（Linear Feedback Shift Register：ＬＦＳＲ）と称される。存在するソフトウェア関数は少ないが、新しいアプリケーションにおいて設計者に使用できる制定された関数は、数多く存在する。また、殆どのソフトウェアランダム関数は、短いサイクルという同様の属性を共有している。
【０００７】
合格するか不合格になるかに関係なく、サイクルの長さは、統計テストと同じく重要である。複数の公開された関数を非直線的に組合わせることは、サイクルの長さを増やす最も一般的な方法である。関数に基づく乱数発生器は、正確には擬似乱数生成器と呼ばれ、「クラッキング」（逆算）され易い。乱数発生器がクラッキングされると、クラッカーが配列内の値をそれぞれ予測することができる。経験則としては、伝統的なランダム関数の複雑性を倍にすると、クラッキングに必要な作業量を二乗する効果がある。ハードウェア速度が増加すれば、コンピュータの速度も増加する。したがって、乱数発生器の設計者とそれを破ろうとするクラッカーとの間の戦いは、軍備競争になる。
【０００８】
この経験則に基づき、ハードウェア設計者は、常に複雑な乱数発生関数を採用している。関数駆動型パラダイムが必然的に不完全であるため、設計者とクラッカーとの間の戦いは持久戦になる。新しく設計された乱数発生器が必ず時代遅れになるので、新たな乱数発生器の作成、テストおよび配備にかかるコストは、終わりがない。その結果、繰返し高くなるチップコストは、製品コストに直接転嫁される。この道の終わりが分からないため、設計者は、最新の関数がクラッキングされるまでの時間を予測することができない。
【０００９】
関数の複雑性を増加するのにかかるコストは、複数の形式で現れる。上述のように、必然的に不完全な問題があるため、ハードウェアの軍備競争は持続する。クラッカーより先に進むために、一般的に、ハードウェア技術における各々の飛躍は、対応する新たな発生器の設計を必要とする。このように、コストが高騰するため、多くのアプリケーション設計者がハードウェアに基づくソリューションを控える。システムのコストを削減するために、多くのアプリケーション設計者は、ソフトウェアに基づく乱数発生器を採用する。多くの場合、ソフトウェアソリューションへの移行は、性能を許容できないほど遅らせるか、またはＣＰＵのコストを増加する。専用のシリコンチップを使用しなければ、繰返し発生するコストは低くなるが、実装されたソフトウェアが、システム全体の性能に負担をかかる。ソフトウェアの複雑性が増加すると、システムの性能がそれに逆比例して低下する。
【００１０】
クラッキングされないように、多くの設計者は、秘密（非公開）の設計を採用する。秘密の開発は、限られた検証、限られた検討または限られた再使用に必然的に伴う。遺憾ながら、秘密の開発は、所定の設計が少量であり、一般的には単品当たりのコストが高くなるため、投資の利益還元は限られる。さらに、ハードウェアまたはソフトウェアのサンプルが誰かに入手されると、秘密でこれらの設計の完全性を保つすることはできなくなる。
【００１１】
これらの伝統関数の決定的な弱点は、各ランダム関数が独自のランダム配列を生成するという変えられない単純事実から生じる。言い換えれば、ランダム関数とランダム関数により生成された値の独特の配列との間に１対１の対応関係が存在する。その配列は、生成関数に対して「メロディー」のような役割を果たす。ランダムな「メロディー」は、値と、値が生成された順序との両方として定義される。シード値は、「メロディー」の始点のみを規定する。
【００１２】
すべての伝統的な乱数発生器は、スカラー値（非ゼロの開始シード）を用いて、独特の「メロディー」の始点にインデックスを付ける。伝統的な乱数発生器は静的関数に基づく構成物であるため、シード値は、擬似ランダム配列の開始を規定するキーとして機能するため、一般的に保護されなければならない。殆どの場合において、シード値の大きさは、サイクル全体の長さを示すために、使用される。すべてのハードウェアに基づく伝統的な乱数発生器および殆どのソフトウェアに基づく伝統的な乱数発生器は、乱数の生成を開始するために、非ゼロのシード値を必要する。殆どすべての場合には、ゼロのシード値は、ランダムストリームを生成することができない。
【００１３】
クラッキングとのむだな抗争において、多くの設計者は、秘密（非公開）の設計を採用する。秘密の開発は、限られた検証、限られた検討または限られた再使用を必然的に伴う。遺憾ながら、秘密の開発は、所定の設計が少量であり、一般的には単品当たりのコストが高くなるため、投資の利益還元は限られる。さらに、ハードウェアまたはソフトウェアのサンプルが誰かに入手されると、秘密でこれらの設計の完全性を保つすることはできなくなる。本当に必要なのは、真の一方向性関数を実行して非決定的な値のランダムなストリームを生成する真の乱数生成器および／または本明細書に記載された１つ以上の課題および／または当業者が本明細書を理解することにより注目し得る１つ以上の課題を解決する方法またはシステムである。いくつかの改善策は、既に当該分野で行われている。本発明に関連する参考文献の例は、以下でそのまま記載され、各参考文献の支持的な教示は、参照により本明細書に組込まれる。
【００１４】
Rossにより出願された米国特許出願公開第２０１１／００２９５８８号は、一方向性関数を生成することによって、乱数のストリームを生成するシステムおよび方法を開示している。方法は、すべての可能な範囲値にマッピングされる任意のドメイン値に従って指定される複数のメモリセルを提供するステップと、メモリセルのうち１つに関連付けられたランダムドメイン値を生成するステップと、生成されたランダムドメイン値に関連付けられたデータ値を読出すステップと、データの追加量を形成することによって動的に強化されたデータを生成するステップと、疑いのある非ランダム部分を除去することによってソースデータを作成するステップと、最低限のランダム性要件に応じてソースデータの検証することによって検証されたソースデータを作成するステップと、マスキングモジュール、時間変位モジュール、カオスエンジンモジュール、ＸＯＲモジュール、上書きモジュール、展開モジュール、除去モジュール、制御プレーンモジュール、またはアドレスプレーンモジュールのようなランダム編集プロセスを用いて、検証されたソースデータをメモリセル位置に統合させるステップとを含む。展開モジュールは、ノイズチャンクを挿入する。
【００１５】
Rossにより出願された米国特許出願公開第２０１０／００３６９００号は、一方向性関数を生成することによって、乱数のストリームを生成するシステムおよび方法を開示している。方法は、すべての可能な範囲値にマッピングされる任意のドメイン値に従って指定される複数のメモリセルを提供するステップと、メモリセルのうち１つに関連付けられたランダムドメイン値を生成するステップと、生成されたランダムドメイン値に関連付けられたデータ値を読出すステップと、データの追加量を形成することによって動的に強化されたデータを生成するステップと、疑いのある非ランダム部分を除去することによってソースデータを作成するステップと、最低限のランダム性要件に応じてソースデータの検証することによって検証されたソースデータを作成するステップと、マスキングモジュール、時間変位モジュール、カオスエンジンモジュール、ＸＯＲモジュール、上書きモジュール、展開モジュール、除去モジュール、制御プレーンモジュール、またはアドレスプレーンモジュールのようなランダム編集プロセスを用いて、検証されたソースデータをメモリセル位置に統合させるステップとを含む。展開モジュールは、ノイズチャンクを挿入する。
【００１６】
これまでに知られている発明は、使用困難、複雑、高価、使用上の制限、応用上の制限、信頼性欠乏、特定可能、確実的、後続のランダムデータセットを処理するのに非常に長い処理時間を必要すること、真の「一方向性」関数ではないこと、または脆弱性と弱点を有するため、権限のないユーザが情報を簡単に復元できることなど、およびこれらの組合わせを含む一連の欠点を有する。
【００１７】
本当に必要なのは、本明細書に記載された１つ以上の課題および／または当業者が本明細書を理解することにより注目し得る１つ以上の課題を解決する方法、システム、機器、装置、コンピュータプログラム、キット、および／またはそれらの組合わせである。
【００１８】
以下の開示情報および／またはそれに付随する情報は、特徴、機能、構造、関連付け、接続、方法、ステップ、利点、および結果などの非限定的な例として提供され、これらは、「必ず」、「常に」、「決して〜ない」および「確実に」などに限定しないがこれらと逆意味の表現にかかわらず、独立的に、任意の開放的な組合せで、または任意の限定的な組合わせ（からなる）で含まれることができる。提供された任意の寸法は、例示的なものあり、当業者が本開示を読むことにより認識できる機能的に同等な範囲を暗示する。提供される開示は、予言的であると主張されなくても予言的ものである。
【発明の概要】
【課題を解決するための手段】
【００１９】
発明の開示
本発明は、当技術分野の現状に応じて開発され、特に、現在利用可能な静的（したがって、決定的）ハードウェアおよびソフトウェアソリューションによってまだ完全に解決されていない当技術分野における課題および需要に応じて開発された。したがって、本発明は、ハードウェアまたはソフトウェアのいずれかに応用される動的かつ非決定的ソリューションを生成する方法および／またはシステムを提供するために開発された。本発明の方法および／またはシステムは、情報を確率的処理するためのシステム、方法および／または装置を含むがこれらに限定されない。
【００２０】
本発明の一実施形態によれば、計算装置を用いた情報確率的処理システムが提供される。システムは、プロセッサを備え得るアーキテクトモジュールを含むことができる。アーキテクトモジュールは、データの確率的処理を管理かつ制御するように構成されることができる。アーキテクトモジュールは、実行中に処理アーキテクチャをランダムに変更するように構成され得る実行時間修正モジュールをさらに含むことができる。実行時間修正モジュールは、非決定的データプールモジュールからシードされることができる。アーキテクトモジュールは、実行中に、乱数を用いて複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するように構成されてもよい。アーキテクトモジュールは、実行中に、乱数を用いて機能的に同等なデータ処理モジュールのうち１つを使用するための実行時間を選択してもよい。
【００２１】
システムは、アーキテクトモジュールに機能的に連結され、関数から導出されていない非決定的な値のストリームを提供するように構成され得る非決定的データプールモジュールを含むことができる。非決定的データプールモジュールは、ＵＲＮＧシステムを含んでもよい。システムは、アーキテクトモジュールに機能的に連結され得る複数の機能的に同等なデータ処理モジュールを含んでもよい。複数の機能的に同等なデータ処理モジュールの各々は、アーキテクトモジュールに呼出されるときに、データを確率的に処理するように構成されてもよい。
【００２２】
システムは、アーキテクトモジュールと機能的に通信することができ、確率的に処理されるべきのデータセットを供給するように構成され得るデータ供給モジュールを含むことができる。システムは、メモリ記憶装置を備え得る構造化メモリモジュールを含むことができる。構造化メモリモジュールは、アーキテクトモジュールに連結されてもよく、所定の処理アーキテクチャを複製しかつ利用した処理アーキテクチャを記録するように、アーキテクトモジュールに十分な情報を提供するように構成されてもよい。構造化メモリモジュールは、時間構造に応じて構造にインデックスを付けるインデックスモジュールを含んでもよい。
【００２３】
システムは、非決定的データプールモジュールに機能的に連結され、共通データプールを確率的に処理することによって、非決定的データプールモジュールに利用されるアプリケーション特有の非決定的データプールを生成するように構成され得る共通データプール処理モジュールを含むことができる。システムは、データ供給モジュールと通信しており、データ供給モジュールに通信プロトコルマップを供給し、アーキテクトモジュールから確率的に処理された通信プロトコルマップを受信し、および確率的に処理された通信プロトコルマップに従って情報ストリームを変更するように構成され得る通信プロトコルインタフェースを含むことができる。
【００２４】
本発明の一実施形態によれば、計算装置を用いて情報を確率的に処理する方法が提供される。この方法は、非決定的であると検証されかつ関数から導出されていない非決定的データプールを提供するステップを含むことができる。方法は、非決定的データプールが優勢な１０／１０スコアをもってＮＩＳＴ検定に合格したことを検証するステップを含む。方法は、処理される情報ストリームを提供するステップを含んでもよい。方法は、すべてのランダム化されたデータ処理特性の選択を実行時間まで遅延させるステップを含んでもよい。方法は、プロセッサを用いて、各々がデータを変更するように構成された機能的に同等なデータ処理モジュールのセットから、第１データ処理モジュールをランダムに選択するステップを含んでもよい。方法は、実行中に第１データ処理モジュールを使用するランダム時間を決定するステップを含むことができる。機能的に同等なデータ処理モジュールのセットは、減算、マスキング、ＮＡＮＤ、ＮＯＲ、ＯＲ、ＸＯＲ、ＡＮＤおよび加算を含むデータ処理モジュール群から選択されることができる。方法は、非決定的データプールからデータ処理モジュールをランダムに選択するステップをシードしてもよい。
【００２５】
計算装置を用いて情報を確率的に処理する方法は、第１データ処理モジュールを用いて情報ストリームを変更するステップを含んでもよい。方法は、第１データ処理モジュールを用いて情報ストリームを処理するとともに、プロセッサを用いて、機能的に同等なデータ処理モジュールのセットから、置換データ処理モジュールをランダムに選択するステップを含むことができる。方法は、置換データ処理モジュールを用いて、第１データ処理モジュールを置換するステップを含んでもよい。
【００２６】
方法は、置換データ処理モジュールを用いて、情報ストリームを変更するステップを含んでもよい。情報ストリームは、所定の通信プロトコルと、各々が情報ストリームを、所定の通信プロトコル要件を満たさないように充分に処理する第１データ処理モジュールおよび置換データ処理モジュールとに従って構成されてもよい。方法は、情報ストリームがランダム化された複数のデータ処理モジュールの階層によって処理されるように、複数のデータ処理モジュールの使用をランダムに階層化するステップを含んでもよい。
【００２７】
方法は、第１データ処理モジュールおよび置換データ処理モジュールの使用を再現するのに十分な構造化情報を記録するステップをさらに含んでもよい。方法は、同様の時間インデックス位置および同様の非決定的データプールから開始するカウンターパートによる作動される方法が情報ストリームを同様に処理するように、方法の動作を時間インデックスに関連付けるステップを含んでもよい。方法は、非決定的データプールを利用する前に、非決定的データプールを確率的に処理するステップを含んでもよい。方法は、乱数ソースを呼出すたびに、先に呼出されたソースと異なるソースが呼出されるように、ランダム化を管理するステップを含んでもよい。
【００２８】
本発明の一実施形態によれば、供給された情報を確率的に処理するように構成された確率的処理装置が提供される。装置は、プロセッサと、プロセッサに機能的に連結され得る不揮発性メモリ装置とを含んでもよい。不揮発性メモリ装置は、優勢な１０／１０スコアをもってＮＩＳＴ検定に合格したことが検証された非決定的データプールを含んでもよい。装置は、プロセッサに機能的に連結され、データを受信するように構成され得るデータ入力インターフェースモジュールを含んでもよい。装置は、プロセッサに機能的に連結され、データを送信するように構成され得るデータ出力インターフェースモジュールを含んでもよい。
【００２９】
装置はまた、プロセッサに機能的に連結され得るデータ処理モジュールを含んでもよく、複数の機能的に同等なデータ処理指令セットを含んでもよい。装置は、プロセッサと、データ処理モジュールと、不揮発性メモリ装置とに機能的に連結され得るアーキテクトモジュールを含んでもよい。アーキテクトモジュールは、実行中にデータ処理モジュールをランダムに選択することによって、非決定的データプールからのシード値に応じて、データの確率的処理を管理かつ制御するように構成されてもよい。それによって、データ入力インターフェースモジュールにより受信されたデータが処理され、確率的に処理されたデータがデータ出力インターフェースモジュールに提供される。
２９  一実施形態において、以前では静的な単一のソリューションは、同様の実装において多くの動的カスタムソリューションに変換される。このようなソリューションの新しいゲノムは、以下のモジュールの１つまたは複数を含むがそれらに限定されない多数の新技術に基づいている。
【００３０】
・不確定関数−一方向性関数
・不確定乱数生成器
・処理要素の動的選択
・必要になるまで要素の拘束遅延
・要素のオンデマンドリミックス
・データ駆動型実装
動的ソリューションの新しいゲノムの実施形態は、多くの好ましいソリューションを簡素化する。「フリーサイズ」の静的アプリケーションをカスタムソリューションにより置換することは、多くの現在未解決された課題を解決することができる。
【００３１】
別の実施形態において、これらの新技術のすべては集合され、乱数を生成するための開放型アーキテクチャソリューションを形成する。このようなアーキテクチャモデルは、ランダムデータ要件に応じて、非常に低コストの製品から要求の高いアプリケーションまで広がる。よって、関数でデータを処理する代わりに、データでデータをモーフィングすることができる。
【００３２】
さらに別の実施形態において、静的プロトコルを進化型プロトコルにモーフィングする方法が提供される。動的に進化するカスタムプロトコルのハッキングは、不可能である。
【００３３】
さらに別の実施形態において、単純なハッシュ値は、安全なデジタル署名にアップグレードすることができる。「サービス提供者」が安全なデジタル署名のみをサポートする場合、承認されていないハッシュ値は、無視される。したがって、これらのデジタル署名は、取消可能なアクセス制御となる。このアクセス制御方法は、電話番号、電子メールアドレス、ＩＰアドレス、制御システム、金融取引などの任意な種目に拡張することができる。
【００３４】
さらに別の実施形態において、正しく実装されたカスタムソリューションの例は、セッションデータ（後で説明する）が漏洩されていない場合、同様の高価な静的ソリューションよりも逆算されにくいであろう。このことは、同様な周知のハードウェア／ソフトウェアの実装を使用しても、クラッキングに対する同様な抵抗力を有することを意味する。
【００３５】
本明細書の全体において、特徴および利点の言及または類似する言語は、本発明を用いて実現され得る特徴および利点のすべてが本発明の任意の１つの実施形態内に存在するとは意味していない。むしろ、特徴および利点を言及する言語は、一実施形態に関連して説明した特定の特徴、利点または特性が本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書の全体における特徴および利点の議論または同様の言語は、必ずしも同一の実施形態を指すとは限らない。
【００３６】
さらに、説明される本発明の特徴、利点および特性は、１つ以上の実施形態において任意の適切な方法で組合わせることができる。当業者は、特定の実施形態において特定の特徴または利点のうちの１つ以上がなくても本発明を実施できることを認識するであろう。別の例として、特定の実施形態において認識され得る追加の特徴および利点は、本発明のすべての実施形態に存在しない可能性がある。
【００３７】
本発明の特徴および利点は、以下の説明および添付の特許請求の範囲からより明白になり、または以下に記載された本発明の実施によって知ることができる。
【００３８】
本発明の利点を容易に理解するため、上記で簡単に説明した本発明を、添付図面に図示されている特定の実施形態を参照してより具体的に説明する。なお、図面は、縮尺通りに描かれていない。図面は、単なる概略的な表現であり、本発明の特定のパラメータを描写する意図をしていない。したがって、これらの図面は、本発明の代表的な実施形態のみを示しており、その範囲を制限していないことを理解すべきである。添付図面を用いて本発明をさらに具体かつ詳細に説明する。
【図面の簡単な説明】
【００３９】
【図１】本発明の一実施形態に従う確率モジュール／プロセスのインスタンス用の処理要素の選択を示すフローチャートである。
【図２】本発明の一実施形態に従う所定の処理要素の検証を示すフローチャートである。
【図３】本発明の一実施形態に従う情報確率的処理システムを示す図である。
【図４】計算装置を用いて情報を確率的に処理する方法を示す図である。
【図５】計算装置を用いて情報を確率的に処理する方法を示す図である。
【図６】供給された情報を確率的に処理するように構成された確率的処理装置を示す図である。
【発明を実施するための形態】
【００４０】
発明を実施するための形態
本発明の原理をより理解するために、図面に示された例示的な実施形態を参照しながら、特定の用語を用いて説明する。理解すべきことは、本発明の範囲は、これらに限定されないことを意図していることである。関連する技術分野の当業者および本開示を手に入れる者が、本明細書に例示された本発明の特徴に対する任意の変更およびさらなる修飾ならびに本明細書に例示された本発明の原理に対するさらなる用途は、本発明の範囲内に包含されると考えるべきである。
【００４１】
本明細書に記載された機能ユニットの多くは、その実装の独立性をより具体的に強調するために、モジュールとして名付ける。たとえば、モジュールが、カスタムのＶＬＳＩ回路またはゲートアレイを含むハードウェア回路、論理チップまたはトランジスタのような既製の半導体、または他の個別要素として実装されてもよい。モジュールが、現場でプログラム可能なゲートアレイ、プログラム可能な論理列、プログラム可能な論理装置などのプログラム可能なハードウェア装置に実装されてもよい。
【００４２】
本明細書に記載された任意の機能、特徴、利点、構造など、１つまたは複数のモジュールによって具現化されてもよい。本明細書に記載された機能ユニットの多くは、その実装の独立性をよりより具体的に強調するために、モジュールとして名付ける。たとえば、モジュールが、カスタムのＶＬＳＩ回路またはゲートアレイを含むハードウェア回路、論理チップまたはトランジスタのような既製の半導体、または他の個別要素として実装されてもよい。モジュールが、現場でプログラム可能なゲートアレイ、プログラム可能な論理列、プログラム可能な論理装置などのプログラム可能なハードウェア装置に実装されてもよい。
【００４３】
モジュールは、さまざまな種類のプロセッサによって実行されるために、ソフトウェアに実装されてもよい。プログラム可能または実行可能なコードからなる特定のモジュールは、たとえば、オブジェクト、プロシージャまたは関数として編成されたコンピュータ指令の物理または論理ブロックを１つ以上含んでもよい。それにもかかわらず、特定のモジュールの実行ファイルは、同一の物理箇所に配置される必要がなく、異なる場所に格納された個別の指令を含み、これらの指令が論理的に連結されると、モジュールを形成し、モジュールの上記目的を達成するようにしてもよい。
【００４４】
実際には、実行可能なコードからなるモジュールおよび／またはプログラムは、単一の指令または複数の指令であってもよく、異なるプログラム間のいくつかの異なるコードセグメントまたはいくつかのメモリ装置にわたって配布されもよい。同様に、動作データは、モジュール内で識別されてもよく示されてもよい。動作データは、任意適切な種類のデータ構造内で任意の適切な形態で具現化されてもよく編成されてもよい。動作データは、単一のデータセットとしてまとめられてもよく、または異なる記憶装置を含め、異なる場所にわたって配布されてもよく、または単に電子信号として少なくとも部分的にシステムまたはネットワーク上に存在してもよい。
【００４５】
本明細書に記載されたさまざまなシステム要素および／またはモジュールは、デジタルデータを処理するためのプロセッサを備えるホストサーバまたは他の計算システムと、プロセッサに連結され、デジタルデータを格納するためのメモリと、プロセッサに連結され、デジタルデータを入力するための入力デジタイザと、メモリに格納され、プロセッサによりアクセス可能であり、プロセッサにデジタルデータを処理するように指示するための応用プログラムと、プロセッサおよびメモリに接続され、プロセッサにより処理されたデジタルデータから導出された情報を表示するための表示装置と、複数のデータベースとのうち１つまたは複数を含む。当業者が理解するように、本明細書に記載されたコンピュータは、オペレーティングシステム（たとえば、Ｗｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａ，ＮＴ，９５／９８／２０００，ＯＳ２、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）、Ｍａｃ  ＯＳ（登録商標）など）、さまざまな通常のサポートソフトウェアおよびコンピュータ用の典型的関連ドライバを含むことができる。コンピュータは、ネットワークにアクセス可能な自宅またはビジネス環境にあってもよい。例示的な実施形態において、アクセスは、市販のウェブブラウザ・ソフトウェアパッケージを介してインターネットを経由するものである。
【００４６】
本明細書において、機能ブロック要素、スクリーンショット、ユーザとの相互作用、任意の選択、さまざまな処理ステップなどをもって本発明を説明してもよい。本明細書に記載されたものの各々は、本発明の例示的な実施形態における１つまたは複数のモジュールであってもよい。理解すべきことは、これらの機能ブロックは、指定の機能を実行するように構成された任意数のハードウェアおよび／またはソフトウェア要素によって実現することができるということである。たとえば、本発明は、１つ以上のマイクロプロセッサまたは他の制御装置に制御され、さまざまな機能を実行し得るさまざまな集積回路要素、たとえばメモリ要素、処理要素、論理要素、参照テーブルなどを使用することができる。同様に、本発明のソフトウェア要素は、Ｃ言語、Ｃ＋＋言語、Ｊａｖａ（登録商標）、ＣＯＢＯＬ、アセンブラ言語、ＰＥＲＬ、ビジュアルベーシック、ストアドプロシージャ、ＡＪＡＸおよび拡張マークアップ言語（ＸＭＬ）などの任意のプログラミング言語またはスクリプト言語により実装されてもよく、データ構造、オブジェクト、プロセス、ルーチンまたは他のプログラミング要素と任意に組合わせて実装されたさまざまなアルゴリズムにより実装されてもよい。また、注意すべきは、本発明は、従来のデータ伝送、シグナル伝達、データ処理、ネットワーク制御等の技術を任意数で使用することができることである。さらに、本発明は、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＶＢＳｃｒｉｐｔなどのクライアント側のスクリプト言語に係るセキュリティ問題を検出または防止することができる。
【００４７】
また、本明細書における機能ユニットおよび／または機能モジュールの多くは、他の機能ユニットおよび／または機能モジュールと「通信する」と記載されている。「通信」とは、コンピュータ、ラップトップコンピュータ、ＰＤＡ、モジュール、他の種類のハードウェアおよび／またはソフトウェアを含むがこれらに限定されない機能ユニットおよび／または機能モジュールが相互に通信し得る任意の方式および／または方法を指す。いくつかの非限定的な例として、通信は、ネットワーク、無線ネットワーク、ソフトウェア、指令、回路、電話回線、インターネット回線、衛星信号、電気信号、電磁場および／または電磁パルスなどを介して、データおよびメタデータを交信、送信および／または受信することを含む。
【００４８】
本明細書で使用される用語「ネットワーク」は、ハードウェアおよびソフトウェア要素の両方を組込む任意の電子通信手段を含んでもよい。本発明に従う関係者の間の通信は、任意の適切な通信チャネル、たとえば電話ネットワーク、エクストラネット、イントラネット、インターネット、相互作用装置の通信ポイント（販売装置、ＰＤＡ、携帯電話、キオスクなどのポイント）、オンライン通信、オフライン通信、無線通信、トランスポンダ通信、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ネットワークにより接続されたまたはリンクされた装置などを介して達成してもよい。本発明は、ＴＣＰ／ＩＰ通信プロトコルを介して実装することができるが、ＩＰＸ、ＡｐｐｌｅＴａｌｋ（登録商標）、ＩＰ−６、ＮｅｔＢＩＯＳ、ＯＳＩ、または任意数の既存または将来のプロトコルを用いて実装してもよい。ネットワークがインターネットのような公衆ネットワークである場合、安全でなく、盗聴者に開放しているネットワークとみなすことがよい。インターネットとの接続に利用されるプロトコル、規格、およびアプリケーション・ソフトウェアに関連する特定の情報は、一般的に当業者に知られており、本明細書では詳述する必要はない。たとえば、参照によりその内容が本明細書に組込まれた異なる著者によるDILIP NAIK, INTERNET STANDARDS AND PROTOCOLS (1998)、JAVA 2 COMPLETE (Sybex 1999)、Eborah RayとEric RayによるMASTERING HTML 4.0 (1997)、およびLoshiNによるTCP/IP CLEARLY EXPLAINED (1997)を参照。
【００４９】
本明細書の全体を通して、「実施形態」、「実施例」または類似の用語に参照するとは、その実施形態に関連して説明された特定の特徴、構造、特性、またはこれらの組合わせが本発明の少なくとも一実施形態に含まれることを意味する。よって、本明細書の全体を通して現れる「実施形態」、「実施例」および類似の用語は、必ずしもすべてが同一の実施形態を参照するではなく、異なる実施形態または１つ以上の図面を参照してもよい。さらに、２つ以上の特徴、要素などを言及する「実施形態」、「実施例」の表現は、必ずしもこれらの特徴が関連されていることを意味するものではなく、異なってもまたは同一であってもよい。
【００５０】
実施形態または実施例の各陳述は、各実施形態を特徴付ける類似または同一の言語の使用にもかかわらず、実施形態の任意の他の陳述から独立していると考えられるべきである。したがって、１つの実施形態が「別の実施形態」として特定される場合、特定された実施例は、「別の実施形態」という言語により特徴付けられた任意の他の実施形態から独立している。本明細書に記載された特徴、機能などは、請求項および／または従来技術により直接的または間接的に若しくは暗示的または明示的に示され得るように、その全体またはその一部が互いに組合わせることができると考えるべきである。
【００５１】
本明細書において、「含む」、「備える」、「包含する」、「ある」、「特徴付けられる」およびその文法的同等物は、包括的または開放型の用語であり、記載されていない追加の要素または方法のステップを除外しない。「含む」は、より制限的用語「からなる」および「本質的にからなる」を包含すると解釈されるべきである。
【００５２】
代数を用いて微積分問題を解決することは、依然として困難である。これらの数学ツールは、動的問題対静的問題のような異なる種類の問題を対処するために設計されている。間違ったツールを用いて問題を解決すると、必然的に準最適なソリューションしか見つからない。現在、ハードウェアとソフトウェアの開発は、ソリューションを機能性の狭い範囲、通常は静的範囲に制限され、その結果、決定的の範囲に制限される。代数と同様に、これらの実装は、いくつかの問題を解決するために非常に好適なである。しかしながら、動的ソリューションを求めている問題を対処するときに、これらの実装は、依然として不適切である。動的ソリューションに注目する前に、一般には、まず、ソリューションを静的に制限する現行の数学を見直す必要がある。
【００５３】
不確定関数
「確実性」原理は、数学の分野で最も重要である。確実性とは、伝統数学により与えられた関数が、入力値（ドメイン値）を用いて一定の出力（範囲値）を機械的に計算することを意味する。今までは、計算の機械的性質により、一般に、このプロセスは、常に任意のドメイン値を与えると、決定的（範囲）値をもたらす。この決定的関数の現実は、数百年も続いている。
【００５４】
確実性の影響は、特に乱数発生の場合に、主な暗号欠陥として認識してもよい。多くの人は、関数計算の正常確実性を細分化するように、ある量の「エントロピー」（ノイズ）を与えることによって、確実性を低減する解決案を提案している。これらの解決案は主な改善を示すが、数学的確実性からまだ脱離できない。
【００５５】
代数の学生はすべて、等号の両側を神聖的に等しく保つことを教えられ、テストされ、それによって等級付けられ、昇進される。後続の各数学クラスも、その繰返しをし続けている。両側を等しく保つために、一般的に、方程式の右辺に対する操作と同様に、方程式の左辺を操作しなければならない。
【００５６】
関数を数世紀使用した末、決定的関数しか発見されなかった。したがって、決定的関数しか存在しないと思われている。この長い歴史と共通の数学訓練は、非決定的関数の存在可能性に対する認識を妨げている。ドメインと範囲との間に可能なマッピング関係が３つある、すなわち、一対一（従来関数用のドメイン−範囲マッピング）、多数対一（ハッシュ関数に見られるように、同一の範囲にマッピングする多数の異なるドメイン）、および現在欠けている一対多数のドメイン−範囲マッピング関係。
【００５７】
なぜ現在欠けている一対多数のドメイン−範囲マッピングが重要であるでしょうか？  伝統関数は決定的あるため、可逆であるが、この新種関数は、非決定的であるため、不可逆である。ドメイン値から確実性しか生成できない伝統関数とは異なり、この新種関数は、「不確定な」範囲値を提供する。したがって、我々は、この新種関数ファミリの各関数を不確定関数として名付ける。
【００５８】
なぜ不確定関数が逆算できない理由を実証する。我々は、多くの伝統関数のグラフ図を見てきた。これらの伝統的なグラフ図は、任意の範囲値がそのドメイン値に逆マッピングできることを証明している。対照的には、各不確定関数のドメイン値は、不確定関数のすべての範囲値にマッピングされる。１つのドメイン値のグラフ図を１つの垂直線にすると、すべての有効ドメイン値のグラフ図の場合、不確定関数のグラフ図が完全に「黒」になる。この黒のグラフ図は、範囲値がドメイン値から独立していることを意味する。よって、任意の所定の範囲値を生成した独特のドメイン値を見つけることはできない。不確定関数は、不確実性数学の基礎である。この種の関数は、「不確実性」がデータから非決定的カオス行動へ拡張できるという考えを生み出す。これらのカオス行動は、独特になり得る動的なカスタムのソリューションを作成する手段を規定する。
【００５９】
なぜ代数、ドメイン−範囲の関係およびグラフ図を言及するの？  驚くべきことに、すべての現行のデジタル製品は、既に不確定関数を使用している。しかしながら、これらの製品の設計者は、誰もこの数学関係に気付いていない。この関数は、より一般的な用途によって、単純なＲＡＭ（ランダム・アクセス・メモリ）として知られている。ランダムデータを格納しているバッファー内のメモリセルからの読取りは、非決定的な値を生成する。各々の有効メモリアドレスは、可能な範囲値を格納できるメモリセルにマッピングされる。ＲＡＭ（不確定関数）のグラフ図は黒であるため、メモリ（範囲）値が与えられても、メモリアドレス（ドメイン値）を予測することはできない。これは、確実性数学に対する重大な機能強化である。
【００６０】
不確定関数に使用されるメモリバッファーは、「不確定性プール」と呼ばれている。このプールからの各読取りは、不確定データと呼ばれる非決定的な値を生成する。不確定データは、その真の値が知られていない場合かつその場合に限り、「不確定」のままである。したがって、不確定データプールから値を切離す、すなわち、プールの内容を公開せず、不確定データプールから値を読取ることは、パラドックス問題となる。この問題は、データパラドックスを定める。
【００６１】
不確定関数が必要であるが、不確定関数だけでは、データパラドックスの対処にはまだ不十分でる。不確定関数に続く第１の機能的に完全な技術は、非決定的不確定乱数生成器（ＵＲＮＧ）を作成することである。２つの追加のデータパラドックス技術は、不確定性プールの完全性を保護するために必要とされる。
【００６２】
データパラドックスに対する皮肉な解決案
不確定データの属性は、データパラドックスを生成するが、同様の属性は、皮肉な解決案、すなわち、プールから２つの不確定データ値をランダムに選択し、この２つの不確定データ値を加算することによって新たな不確定値を生成することを容易にする。複数の異なる親セットが同一の値をもたらすことができるため、この新たな値は、親値から「切離される」。したがって、「不確実性」の属性は、次世代の値に継承される。一般的に、第１世代の不確定データを明らかにしてはいけないが、第１世代の不確定データを処理して得られた次世代のデータを公開することができる。したがって、データパラドックスは、解決される。ランダムに選択された不確定値が大抵の２進以上の演算子を用いて処理される限り、その結果が非決定的である。よって、関数でデータを処理する代わりに、データでデータをモーフィングすることができる。よって、事実上、数学的確実性から脱離することができた。
【００６３】
次世代の不確定データから第１世代の不確定データを隠すまたは切離す処理は、切離しプロセスと呼ばれている。この文書の先の記載において、切離しプロセスの第１インスタンスは、不確定関数の範囲値に適用されている。不確定性プールの完全性を保護するタスクを完了するために、一般には、範囲値とともに、ドメイン値（メモリアドレス値）を切離さなければならない。
【００６４】
第１世代の不確定データが固定のサイズを有するが、その次世代のデータが任意のサイズを有し得る。比喩的に言えば、処理に対する投資に応じて、この「プール」は、不確実性の湖、湾または海に拡張することができる。
【００６５】
一般的には、静的関数または静的プロセスは、常に決定的（予測可能な）挙動につながる。この挙動を克服するために、純粋な非決定的手段、すなわち不確定データを採用する。一般的には、内部（ＵＲＮＧ）関数、プロセスおよびデータから確定的な挙動を浄化するために、この手段を活用しなければならない。この多重浄化の結果、不確定性のプールのサイズに限定されない非決定的乱数生成器を生成できる。具体的には、ランダム編集プロセスに含まれる不確定データを用いて、アドレスとデータの両方を切離す。
【００６６】
ＵＲＮＧのアウトライン
各ＵＲＮＧのアウトラインは、３つのステップを含む。原始かつ非決定の不確定性プールと、常識から外れた決定的擬似乱数生成器（ＰＲＮＧ）の集合との２つの初期要素を用いて、ＵＲＮＧをスタートさせる。これらの要素から、一般的に内部で使用する中間ツールを構築しなければならない。最初のツールは、不確実ストリームである。不確実ストリームは、好適なＰＲＮＧを不確定性プールから読取るアドレス発生器として適用することにより生成される。それによって、原始かつパラドックス上安全でない不確定値のランダムストリームが与えられる。
【００６７】
次の中間ツールは、不確実ストリームを利用する。他の独立したＰＲＮＧおよび不確実ストリームをランダム編集プロセスの入力として、不確定関数のドメイン値となる非決定的データプールのアドレスを取得する。これらの比較的に「浄化された」ドメイン値を使用すると、生成歴史のエコー証拠とならない不確定関数の範囲値が生成される。
【００６８】
最後のステップは、範囲値のデータパラドックスを解決する。「浄化された」ドメイン値から得られた２つの範囲値および１つの原始不確定値を用いて、範囲値の切離しを仕上げる。要約すると、不確定データの繰返し使用は、中間ツール内で発見された挙動の一部／大部分／すべてを洗い落す。これらの非決定的アドレスは、不確定関数のパラドックスかつ安全なドメイン値となっている。不確定関数からアドレス（ドメイン値）とデータ（範囲値）の両方を切離すことによって、非決定的乱数生成器の生成という基本目標が達成される。
【００６９】
正しく実装されたＵＲＮＧは、伝統的なＰＲＮＧに比べて、大きな利点を有する。具体的には、クラッキングに対する抵抗力は、関数の複雑性から由来するではなく、不確定データの単純性から由来する。本質上「プライベート」の乱数発生器は、多くのアプリケーションを可能にするすべての新技術を支持する。
【００７０】
「ハードウェア選択器」または「マスク生成器」は、２つの入力値（ｄａｔａ０，ｄａｔａ１）からビットを取得して新たな値を生成する。「マスク」における各「０」ビットは、ｄａｔａ０から各対応ビットを取得し、「マスク」における各「１」ビットは、ｄａｔａ１から各対応ビットを取得する。「マスク」値によって指定された破壊的な編集値は、次のような結果を生成する。
【００７１】
result= (~mask & data0)|(mask & data1)
ｄａｔａ０およびｄａｔａ１が決定的であってもよいが、マスクが非決定的（原始の不確定データ）である場合、マスクが一般的に出力に見られない限り、その結果は非決定的（パラドックス上安全値）である。
【００７２】
マスクＵＲＮＧ
マスクＵＲＮＧは、以下にある１０行Ｃ言語プロシージャにより示される。このコード例（urng_value）は、上述した３つのステップを含むプロセスに相当する。「Ｃヘッダ」セクションは、欠けた詳細を補足する。
typedef struct
{
uint32_t  poolsize; // allocation size in r_values
uint32_t  modulo;   // prime number addressing modulo
t_prng    prng[ NUM_STOCHASTIC_POINTS ]; // PRNG addressing functions
r_value  *pool;     // data pool pointer
} t_urng;
r_value urng_value (t_urng *urng)
{
r_value unsafe_1, unsafe_2;  // paradox unsafe PRNG deterministic values
r_value domain_1, domain_2;  // paradox safe domain values
r_value mask1, mask2, mask3; // Raw nondeterministic values from the pool
// Use 3 independent PRNGs to read uncertain mask values from the pool
mask1 = urng->pool[ prng (1) % urng->modulo ];
mask2 = urng->pool[ prng (2) % urng->modulo ];
mask3 = urng->pool[ prng (3) % urng->modulo ];
// Convert deterministic PRNG values into a paradox safe domain values
unsafe_1 = prng (4);
unsafe_2 = prng (5);
domain_1 = (~mask1 & unsafe_1) | (mask1 & unsafe_2 ) % urng->modulo;
unsafe_1 = prng (6);
unsafe_2 = prng (7);
domain_2 = (~mask2 & unsafe_1) | (mask2 & unsafe_2 ) % urng->modulo;
// Manufacture a nondeterministic value from the pool while hiding domain and
range
return (~mask3 & urng->pool[ domain_1 ]) | (mask3 & urng->pool[ domain_2 ]);
};
カオス行動の紹介
不確定データは、ＵＲＮＧ内において、ランダムデータ、シード値、マスク値、関数選択器、さらに指令などの多重役割を果たしている。一見では些細な発想が大きな影響を引起す。不確実性の原理によると、多くのプログラミング決定が実行まで出さず、実行中にプログラミング決定がランダムデータに駆動される。ランダム性は、プログラムの実行中に果たしている役割がますます重要になり、アプリケーションに与えた全体的な影響がアプリケーションをより非決定的にさせることである。
【００７３】
データパラドックスを解決する関数の集合が与えられると、ランダムデータを用いて、実行される関数を選択する。ランダムデータが指令（すなわち、関数選択器）として使用される場合、リストを埋めるように、関数の群を選択してもよい。その結果は、異なる関数の間の動的スイッチとなる。このように、実行される可能な関数の動的生成は、カオスエンジンになる。注意すべきことは、リスト内の関数は、いつでも置換されることができ、またはリストの全体は、実行中にランダムデータから動的に再作成されることができることである。このリストの再構成は、ランダムな間隔で定期的に行う必要がある。
【００７４】
すべてのランダム編集プロセスと同様に、指令と編集ストリームの両方の値は、不確定性プール（すなわち、独立した不確実ストリーム）から得られるが、いずれも出力ストリームに見られない。ここでは、簡単な１６指令のカオスエンジン（下記参照）の例を示す。カオスエンジンのインスタンスにおいて、各「指令」は、ｄａｔａ０とｄａｔａ１とマスク値との３つオペランドを含む。これらの値は、「結果」（Result）に処理される。示されたように、いくつかの指令は、マスク値を使用していない。
【００７５】
Result = Data0 - Data1;  // standard math subtract operation
Result = Data1 - Data0;  // standard math subtract operation
Result = (~Mask & Data0) | (Mask & Data1); // normal mask Generator
Result = (Mask & Data0) | (~Mask & Data1); // the other mask Generator
Result = (~Mask & ~Data0) | (Mask & Data1);
Result = (~Mask & Data0) | (Mask & ~Data1);
Result = ~(Data0 & Data1); // bitwise NAND between two data elements
Result = ~(Data0 | Data1); // bitwise NOR between two data
Result = Data0 | Data1;  // bitwise OR between two data elements
Result = Data0 ^ Data1;  // bitwise XOR between two data elements
Result = Data0 & Data1;  // bitwise AND between two data elements
Result = Data0 + Data1;  // standard math add operation
Result = ~Data0 | Data1; // Comp Data0, bitwise OR two data elements
Result = Data0 | ~Data1; // Comp Data1, bitwise OR two data elements
Result = ~Data0 ^ Data1; // Comp Data0, bitwise XOR two data elements
Result = Data0 ^ ~Data1; // Comp Data1, bitwise XOR two data elements
指令の可能なセットは、１６よりもはるかに大きく、不確定データは、リスト（リスト内の指令順序および使用される指令）を作成するために使用されたということが理解できる。これらの非決定的カオス行動の全面的な実装は、数百万のＵＲＮＧ用の独特のデータ駆動型指令を生成した。このように、不確定データの非決定的な性質は、非決定的なカオス行動に変換される。ＵＲＮＧにおけるこのカオスソフトウェアは、データでデータをモーフィングする別例になる。
【００７６】
カオスエンジンの根本原理として、任意の関数は、任意数の共通パラメータの下で、呼出すことができる。任意数の再現できる確率システムを作成するために、データ駆動型カオスソフトウェアを使用してもよい。不確定性プールからの独特のランダムデータを用いて、カオスエンジンまたは他の例としてＵＲＮＧをカスタマイズすることが可能である。カオスソフトウェアの一般的な応用は、「確率的処理」セクションで説明する。
【００７７】
簡単なシミュレーションは、実装パラメータの正しい選択を導くことができる。このマスクＵＲＮＧにおいて、不確実マスク値から得られた破壊的な編集値のみは、切離しプロセスに使用される。この低コストのＵＲＮＧは、機能するが、小さな不確定性プールに使用できないことがある。より好適なソリューションは、カオスエンジンから生成できる。カオスＵＲＮＧは、適度なサイズの不確定性プールから大量のランダムデータを提供することができる。
【００７８】
カオスＵＲＮＧ
カオスＵＲＮＧは、以下の短いＣ言語プロシージャによって示される。「Ｃヘッダ」セクションは、欠けた詳細を補足する。
typedef struct
{
r_value   instruction; // random value holding instructions
r_value   PC;          // current instruction counter within above instruction
edit_process operation[ MAX_REPS ]; // table of chaos operations (Random Edit
Processes)
} t_chaos;
typedef struct
{
uint32_t  poolsize; // allocation size in r_values
uint32_t  modulo;   // prime number addressing modulo
t_prng prng[ NUM_STOCHASTIC_POINTS ]; // PRNG addressing functions
t_chaos cpuAdr0;    // address chaos engine
t_chaos cpuAdr1;    // address chaos engine
t_chaos cpudata;    // data chaos engine
r_value *pool;      // data pool pointer
} t_curng;
r_value get_instruction (t_curng *urng, t_chaos *cpu)
{
r_value instruction, instr;
instruction = cpu->instruction; // local copy of instruction block
if (cpu->PC >= INSTRUCTIONS_PER_WORD) { // need new block?
instruction = urng->pool[ prng(0) % urng->modulo ]; // get next instruction block
cpu->PC = 0; // reset to start of block
}
instr = instruction & INSTRUCTION_MASK; // slice off instruction from word
cpu->instruction = instruction >> INSTRUCTION_SHIFT; // move to next
instruction
cpu->PC++;
return instr;
};
r_value urng_value (t_curng *urng)
{
r_value unsafe_1, unsafe_2;  // paradox unsafe PRNG deterministic values
r_value domain_1, domain_2;  // paradox safe domain values
r_value mask1, mask2, mask3; // Raw nondeterministic values from the pool
r_value instr;               // chaos instruction
// Use 3 independent PRNGs to read uncertain mask values from the pool
mask1 = urng->pool[ prng (1) % urng->modulo ];
mask2 = urng->pool[ prng (2) % urng->modulo ];
mask3 = urng->pool[ prng (3) % urng->modulo ];
//
// Decouple paradox unsafe (deterministic) values with address chaos engines
// to create two paradox safe (nondeterministic) domain values.
//
unsafe_1 = prng (4);
unsafe_2 = prng (5);
instr    = get_instruction( urng, &urng->cpuAdr0 );
domain_1 = (*urng->cpuAdr0.operation[instr]) (unsafe_1,unsafe_2,mask1) % urng-
>modulo;
unsafe_1 = prng (6);
unsafe_2 = prng (7);
instr = get_instruction( urng, &urng->cpuAdr1 );
domain_2 = (*urng->cpuAdr1.operation[instr]) (unsafe_1,unsafe_2,mask2) % urng-
>modulo;
//
// Using data chaos engines to decouple range values from uncertainty function
//
instr = get_instruction( urng, &urng->cpudata );
return (*urng->cpudata.operation[instr])(urng->pool[domain_1], urng-
>pool[domain_2], mask3);
};
現在、既知の関数駆動型ＲＮＧは、わずか数千個しかない。関数駆動型ＲＮＧからデータ駆動型ＲＮＧに切替えると、国立標準技術研究所ＮＩＳＴ（８００−２２）のランダム性検定パッケージに合格できる独特のＲＮＧが数兆個使用することができる。８／１０スコアを有すれば、ＮＩＳＴ検定に合格することができる。これまでに、１０／１０データプールを有する各ＵＲＮＧは、ほぼすべて１０／１０スコアを受けている。
【００７９】
【表１】
0005976928.tif 000002
【００８０】
＊不確定関数のアドレス指定能力は、不確定性プールを影響せず、プールのアドレスを制御できるということを意味する。したがって、多くの異なるアドレス指定モデルは、同一のプールに適用することができる。
【００８１】
現在、１回のデータ交換は、共通ＵＲＮＧ実装によって、任意のまたはすべての暗号鍵を置換する可能性がある。データ交換は、乱数発生器を効果的に交換することができる。したがって、独特のオンデマンド鍵の生成は、以前に鍵の交換を必要としたすべてのプロセスを置換する。データを交換する方法は、メディアの物理的交換から任意形式の無線転送まで、無制限に存在する。どのような手段でも、同一のデータを所持している各関係者は、同時に同一のランダムストリームを作成する手段も所持している。
【００８２】
任意のアクティブ接続、インフラ、または追加の認証を必要としない分散した同様の乱数発生器の使用は、多くのプロトコルを高度に簡素化することができる。さらに、これらを確率的処理に適用すると、カスタムアプリケーション／ソリューションを効果的に交換することができる。
【００８３】
単独の不揮発性記憶を有するＵＲＮＧ実装では、１回目のランダムデータの読込みは、効果的なハードウェアのカプセル化を提供する。この恒久的に保護された実装は、任意数のアプリケーションに使用されるランダムなストリームを提供することができる。
【００８４】
１２８ＫＢのメモリバッファーは、２１０４８５７６個の独特の値を保持し、１０３００，０００個の値をはるかに超える。これらの値は、すべて統計的検証プロセスに合格できる程の十分なランダム性を有しないが、そのうちの多数は、合格できる。技術の実装は頻繁に行われるが、好適なランダムデータは「永遠」に維持される。プールデータが秘密になっている限り、任意の適切に実装されたＵＲＮＧは、ランダム出力ストリームを分析することによってクラックされる可能性が低い。乱数発生器は、複雑な実装よりも、もっぱらデータに基づいてクラッキングに抵抗する。
【００８５】
そろそろ・・・すべく時間
不確定関数に適用されたドメイン値は、不確定性プールに指定されたファイングレイン（Fine Grain）を表し、タイムスタンプは、異なる不確定値ストリームの間により大きな不連続の跳躍を表す。人間は、イベントのヒューマンスケールに対する時間を考える傾向がある。人間が普通に扱うよりもはるかに短いたとえばマイクロ秒の時間間隔、またははるかに長いたとえば数千年の時間間隔は、人間にとって重要性が低い。人間の知覚限界にもかかわらず、時間は、不確定技術において重要である。時間の性質は、多くの用途において利用されている。不確実性の原理の観点から時間の役割を理解できるように、時間の性質を検討することは有用である。一般的に、タイムスタンプは常に、あるゼロポイントに対してスカラー値を意味する。アナログ／ハードウェアクロックは、ある種類の「拍子数」を提示する。ソフトウェアにおいて、一般的に、タイムスタンプの増分は、米国特許５５２６５１５に記載されたように、常に現実世界の「拍子数」にマッピングしない場合がある。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。タイムスタンプ間の差は、任意の値に計算することができる。一般的に、時間の基本モデルは、常に「単調に」増加する。
【００８６】
（多くのデジタルプロトコルに見られるような）増加する連続番号は、タイムスタンプを表す共通形式である。しかしながら、この形式は、通常は認識されない。これらの連続値は、現実世界の時間にマッピングしないが、進んでいる時間を合法的に測定することができる。これは、不確実技術に利用された１つの時間形式を表す。
【００８７】
メモリのアドレス指定は、タイムスタンプをアドレス指定計算に混入することによって更新することができる。それによって、この基底の不確定関数は、時間駆動型関数に書直される。時間が不連続の跳躍をもちながら単調に増加し続けると、同一の時間に基づく乱数ストリームは、他の値の時間に現れることがない。
【００８８】
進んでいる時間とソースファイルを組合わせることにより、ＵＲＮＧの各インスタンス用の独特のランダム配列が生成される。よって、ランダム配列は、同一のソースファイルの継続的タッピングに対して完全に「カオス」に維持される。独特の不確定性プールの連続作成は、ランダム配列に対する形式上の分析をブロックするおよび／または阻止する。
【００８９】
不確定時間モデルは、任意のタイムスタンプをＵＲＮＧシード値に再現できるように転換するために使用される。開放型アーキテクチャ構想として、可能な時間モデルは、数多く存在する。タイムスタンプは、より熟知されている時間度量衡体系にマッピングされてもよくされなくてもよい。これらの時間モデルは、ソースファイルの一部になる。ソースファイルが作成されるたびに、不確定時間モデルも不確実乱数から作成される。時間において、不確実なゼロポイントが選択される。一般的に、任意の入力タイムスタンプは、時間において不確実なゼロポイントからの「不可知」のオフセット（差分）を表す。時間のゼロポイントとタイムスタンプとの差は、（任意の）単位、たとえば日、時、分、秒、ミリ秒などによって表すことができる。時間モデルにおいて、支持されている各時間単位に対し、不確定な倍率を選択する。次に、サポートされる各時間単位をスケーリングすることによって、必要とされるＵＲＮＧシード値を計算し、その後、それらを合計してシードになる値を得る。このように、不確定時間モデルを介して、公開のタイムスタンプを用いてプライベートシード値を規定することができる。このように、（ソースファイル内にある）同一の時間モデルを共有するものは、同一の乱数ストリームを作成することもできる。これらのシード値は、データ合同数生成器（後述）で発見される値になる不確定性プールに挿入する２つの開始インデックスを表す。この最初のアドレス指定関数を介して、他のすべての初期値は、不確定性のプールから読込まれる。たとえば、
Seed0 = (delta_days * dayscale) + (delta_milliseconds * millisecondscale);
Seed1 = (delta_hours * hourscale) + (delta_minutes * minutescale) + (delta_sec *
secondscale);
確率的処理
動的アプリケーションは、多くのソリューションを簡素化する。確率的処理の方法論は、動的ハードウェアまたはソフトウェアアプリケーションを作成するための開放型のアーキテクチャ手段を与える。多くの場合、これらの動的実装の配置は、多くの現行（好ましい）ソリューションを再定義する。動的アプリケーションしか効果的に解決できない追加クラスの問題が存在している。動的デジタルプロトコルに係る例示的な実施形態は、動的アプリケーションを必要とするクラスの問題を対処する。
【００９０】
現行のソフトウェア開発は、汎用的なモデルに定着している。このようなモデルにおいて、手作りのコードユニットは、何らかの形で組立てられ、アプリケーションを作成する。ランダム性は、その後のソフトウェア開発に有効に利用されていない。ランダム性技術の現行配置は、欠点があり、ランダム性の真の強みが利用されていない。ランダム性の現行アプリケーションは、主に、ゲーム（賭博）、ビデオ／コンピュータゲーム、およびシミュレーションにおける繰返し挙動を減少させることに限定されている。
【００９１】
ランダム性のより頑固なアプリケーションは、更新を動的に作成することによって、実行中にアプリケーションを増強をすることができる。更新の動的実行は、母体のアプリケーションを独特になり得るカスタムアプリケーションに変形させる。このランダム性のより包括的な展開は、確率的処理と呼ばれている。
【００９２】
設計時間−実行中バインディング
ソフトウェアオブジェクトパラダイムにおいて、クラス間のバインディング（接続作り）は、実行時の前に完了されている。プログラマの生産性を向上させるために、ツールセットを用いてこのような静的バインディングタスクを完了させる。静的バインディングは、接続の個数が限られているため、その欠点が明らかである。確率的処理は、設計時ではなく実行中において、より多くの利用可能な接続を形成する。
【００９３】
名前で暗示しているように、確率的処理は、ランダム処理に関する。最新の現行アプリケーションに使用されたランダム技術は、サイコロ（確率関数）または「ワイルドカード」値（一定範囲内の任意値）のよう数の少ない一般的なタスクに限られている。確率的処理の原理は、新たな処理をより広い範囲において応用することを可能にする。適切に使用すれば、これらの原理は、多くの以前に未解決の技術的問題を解決することができる。本明細書に挙げられた例は、構想を教えるためであり、確率的処理のサンプル値を提示するだけである。これらの発想を理解するのは簡単であるが、読者は、自分のアプリケーションでこれらの発想をどのように上手く使用する方法を考慮（または再考慮）する必要がある。ハードウェア設計者およびソフトウェア開発者は、これらの要素を理解するようになると、彼らは、この新技術の改革的性質に驚かれるであろう。
【００９４】
効果的な確率的処理の場合、各決定は、設計段階から実行段階に移行することができ、不確実性を増加させる。わずかの費用で、いくつかの機能パラメータをデータ駆動型に変形することができ、実装のアルゴリズム複雑性を増加させる。同一のデータ駆動型構造において、処理要素の選択および構成は、アルゴリズムの全体複雑性を「爆発的」に増加させることができる。処理要素のオンデマンドリミックスおよび／または機能パラメータの再定義は、不確実性をさらに増加させる。最終的には、単一のソリューションに限定されていた設計は、現在、非決定的になる可能性の高い動的カスタムソリューションを作成する結果になる。
【００９５】
不確実性の原理
不確実性の原理は、動的ハードウェア／ソフトウェアのカスタム実装を生成する数学、コンピュータ科学、電気工学などの発想の独特な集合を表している。自然「ノイズ」のサンプリングを除いて、乱数生成プロセスは、強固的に機能する完全なソリューションを有しなかった。計算の機械的性質を考えると、従来の「関数駆動型」ソリューションは、乱数を有効的に表現することはできない。関数駆動型ソリューションは、致命的な欠点を有するが、データ駆動型ソリューションは、ランダム性を実用的に表現することができる。「不可知」データは、共通の実装を独特のランダムストリームに変換する。
【００９６】
従来の常識は、ハードウェア／ソフトウェアソリューションが開発中に静的に決められると考えているので、これらの従来のソリューションは、必然的に、「フリーサイズ」という考え方につながる。さらに悪いことに、これらの実装は、所定の問題に対し、単一のソリューションを与えることに制限されている。単独のソリューションからの影響としては、これらの実装がしばしば確定になる。決定的挙動は、ランダム性とは正反対である。この欠点のある（決定的）挙動は、静的ソリューションではなく動的ソリューションによって上手く解決される多くのアプリケーションに遍在する。
【００９７】
現在、ソフトウェア（およびハードウェア）アプリケーションは、「連結された」要素の集成として定義されてもよい。要素のセットを制限して単一のソリューションを作成する代わりに、多くのソリューションを作成できるように、「機能的に同等な」要素のプールを拡大する。次に、実行中に、ランダムデータを用いて、アプリケーションのインスタンスを作成するために使用される要素のセットを選択する。このように、ランダムデータにより駆動される一般的な実装から、非決定的である不確実なカスタムソリューションを作成することができる。
【００９８】
不確定乱数生成器（ＵＲＮＧ）は、ハードウェアの動的ソリューションであり、ソフトウェアの動的ソリューションでもある。現行のＵＲＮＧ実装には、１００以上の要素が、実行中に必要に応じて連結（およびリミックス）され、非決定的乱数生成器を作成する。さらに好適なことに、各ＵＲＮＧがデータ駆動型ソリューションであるため、各ＵＲＮＧの使用は、動的に作成された不確実性のプールに駆動されることができる。不確実性のプールは、一度使用してから廃棄してもよい。この程度のランダム性があれば、これらのＵＲＮＧを、将来の動的アプリケーションを駆動する手段にしてもよい。
【００９９】
「機能的同等性」は、もっぱらアプリケーション要件に基づく
確率的処理方法論において、「機能的に同等」は、オブジェクトパラダイムに見られる典型的なケースよりもはるかに敏感である。典型的には、ソフトウェアパラダイムは、生産性を向上させるために、実装の多くの副作用を無視するように、開発者を誘導する。場合によっては、これらの副作用は重要であり、無視されると、開発者の目標を損なうことになる。
【０１００】
例として、乱数発生器を言及する。乱数発生器は、何千個もあり、多くが同様の性質を有する。これらの発生器のうち多くは、比較的高速であるが暗号上安全でない。そのうちの数個は、安全であるが遅い。安全な発生器と不安全な発生器との間に分類する場合、各カテゴリ内の発生器は、概ね同等であるか？  答えは、否定的である。同一の不安全な発生器から複数の乱数を取得した場合、取得された乱数は、１つの値から次の値を予測できる程度に相関している。したがって、これらの乱数は、「ランダム」ではない。安全な発生器からの乱数は、それほど相関していないが、処理速度が遅く、殆ど共有できない。
【０１０１】
現行の不安全な乱数発生器は、機能的に同等であると仮定されている。１つの発生器は、単一の乱数ストリームを有するため、乱数を生成するには効果的ではない。これらの不安全な乱数発生器の唯一の機能的同等性は、それらの欠点である。よって、アプリケーションのランダム性需要は、依然として残っている。一般的には、機能的同等性の定義する際に、注意しなければならない。機能的同等性を正しく定義できないと、既存の不安全な乱数発生器と同様に、アプリケーションの設計に欠点を生じさせることになり得る。
【０１０２】
確率的処理の新たな方法論を説明するために、現行の乱数発生器に関するいくつかの背景情報は、必要である。任意に指定された「機能的に同等する」処理要素は、有用である独特な副作用を有する可能性がある。最初の教示例において、複数の共通の（欠点がある）乱数発生器は、ソフトウェアライブラリに見られる唯一のデフォルト生成器を置換するために使用される。追加の教示例は、機能的に同等する処理要素をより詳しく示す。
【０１０３】
確率的「足場ポイント」
最初の教示例は、メモリアドレスを作成するために、異なる「乱数発生器」に７つの呼出しを与える。伝統的なＰＲＮＧが機能的に同等であるため、良好なランダムメモリアドレスを提供する任意の方法は、これらのＰＲＮＧを置換することができる。「単一ストリーム」のＰＲＮＧの基本的な欠点を克服するために、現行の各呼出しは、異なるＰＲＮＧにルーティングされる。よって、ＰＲＮＧの各々は、異なるランダム配列から値を返答し、同一の配列から７つの連続値を返答するよりもはるかに優れている。複数のＰＲＮＧというソリューションは、大きな改善とも言えるが、すべての他の動的アプリケーションに対する最善のソリューションは、ＵＲＮＧを使用して、非相関かつ非決定的な値を提供することである。
【０１０４】
上記のソリューションのうちいずれかの配置が失敗すれば、悪い結果を生じる。伝統的なＰＲＮＧを適用して処理要素を選択することは、発生器などと同様な欠点に直面し、決定的選択肢しか生成できない。代わりに、処理要素を選択するために、不確定関数または不確実性ＵＲＮＧを使用すれば、非決定的選択肢を生成する。機能的に同等な処理要素を受入れることができるハードウェアまたはソフトウェアアプリケーション内の任意点は、確率的「足場ポイント」と呼ばれる。
【０１０５】
処理要素の集合の抽象的概念
アプリケーション固有の処理要素の集合は、多くの選択肢を提供するために作成される。処理要素の集合を規定するとき、一般的には、集合のサイズを決め、各要素の必要な「品質」を決めなければならない。多くの場合、選択できる処理要素が無制限に存在する可能性があるが、大部分のアプリケーションは、正常に配置できる回数を複数もつ集合を必要とする。明らかに、一部のアプリケーションは、独自のカスタム集合を用いて共通の選択肢を置換するだろう。
【０１０６】
「処理要素の集合」という用語は、異なる方法で実装できる抽象的概念である。たとえば、ハードウェアにおいて、ＬＦＳＲ（リニアフィードバックシフトレジスタ−伝統的ハードウェアランダムビット値生成器）は、シードされ、ランダムビットストリームを作成する。しかしながら、プログラム可能なＬＦＳＲを使用する場合、多くの異なるランダムビットストリームを生成するように再構成されることができる。このように、プログラム可能なＬＦＳＲの構成オプションは、可能な集合を決め、それによって選択肢を提供する。これらの設定オプションは、仮想集合を作成する。
【０１０７】
同様に、仮想集合という発想は、オプションによってソフトウェアに適用することができる。たとえば、任意の不確定パラメータのセットは、ＵＲＮＧのランダム編集プロセスのオペランドをさらに処理するように規定することができる。この場合には、オペランドの前処理は、（ビットカウントで）ビット単位左／右回転、ビット単位ＮＯＴ、逆ビット順などを含むことができる。同一配列のオプションを結果に適用してもよい。これらの不確実なパラメータ（オプション）の展開は、通常サイズの集合を巨大な仮想集合に急増させる。
【０１０８】
各処理要素の品質も、アプリケーション固有の設計の選択になる。ＵＲＮＧの場合、最初の特許は、安価でも決定的ＰＲＮＧの使用に関わる。不確定関数ドメイン値を作成するためのより好適な品質の置換は、（後で説明される）データ合同数生成器で見つけることができる。ここでは、共通のＰＲＮＧを想定した有効な教示例で続行する。
【０１０９】
処理要素の集合の作成の目的は、実行時間の選択を容易にすることであった。ここでは、ランダムデータを用いて、使用する要素を選択する。図１は、選択処理を示すフローチャートである。選択が必要とされる箇所に注意せよ。
【０１１０】
図１は、本発明の一実施形態に従う確率モジュール／プロセスのインスタンス用の処理要素の選択を示すフローチャート（１００）である。処理の初期条件は、「Done=0」（１１０）、すなわち未完了に設定されている。続いて、「Done」までのループ（１２０）は、PE_tableから可能な処理要素を選択するために使用される不確定値「Ｘ」を取得する（１３０）。この可能な処理要素は、使用中であるか否か（１４０）が検証される（図２参照）。処理要素が「使用中」である場合、ループ（１２０）は、次の不確定値の取得に戻る。一方、処理要素が「未使用」である場合、「空き」（使用可能な）エントリであるか否か検証が行われる（１５０）。処理要素は、この空きエントリに割当てられ（１６０）、ループは、再スタートする。最後のエントリが埋められた場合、終了条件「Done=1」に設定され、ループは、再スタートする。「Done」がYESの場合、処理要素を選択する実施形態は、終了する。
【０１１１】
図２は、指定の処理要素が「使用中」であるか否か（２００）を検証する実施形態を示すフローチャートである。初期条件は、「Found=0」（２１０）、すなわち未発見に設定されている。（for）ループは、最初のインデックスから始まり、テーブル全体をインデックスするまで繰返し（２２０）、その後、ループは終了し、「Found」状態をリターンする（２５０）。インデックスされたテーブルエントリは、指定要素２３０に対して検証される。「Found」の場合、「Found=1」（２４０）に設定され、（for）ループは、続行する。
【０１１２】
図３は、本発明の一実施形態に従う情報確率的処理システムを示す図である。図示のアーキテクトモジュールは、データプールモジュールと、データ処理モジュールセットと、データ供給モジュールと、構造化メモリモジュールとの各々に連結されている。図示のデータプールモジュールは、共通のデータプール処理モジュールおよび通信プロトコルインタフェースの各々に連結されている。図示のシステムは、情報ストリームを変換する方法で、情報ストリーム（ＴＣＰ／ＩＰパケット、電話データ、無線通信データ、プライベートプロトコル通信、メディアファイル、データファイル、データベースなど）を処理するように利用される。一般に、この処理は、情報ストリームのハッキングを防止するために行われる。したがって、このシステムは、プライバシーの強化、通信の検証、所有権／通信源の確認など、およびこれらの組合せのために使用することができる。
【０１１３】
図示のアーキテクトモジュールは、データの確率的処理を管理かつ制御するように構成され、プロセッサを含むことができ、および／またはプロセッサ、プロセッサモジュール／プロセス装置／システムなどに関連付けることができる。このアーキテクトモジュールは、同様の目的を達成するために、１つまたは複数のスクリプトを含んでもよい。これらのスクリプトは、システムの特定のアプリケーションに置換されてもよくおよび／またはシステムの特定のアプリケーションに関連付けられてもよい。非限定的な例として、スクリプトは、デジタル署名および／または証明を生成するために、最適な機能を提供するように構成されてもよい。アーキテクトモジュールは、他のモジュール、特にデータ処理モジュールを受入れるように動作し得る複数の足場ポイントを含んでもよい。これらの足場ポイントは、予め指定されてもよく、および／または実行中に生成されてもよい。これらの足場ポイントは、互いに相互作用してもよく、各ポイント用のデータソースであってもよい。したがって、データ処理の複雑性は、予め定められててもよく、および／または実行中に生成されてもよい。アーキテクチャモジュールは、足場ポイントの制限に関する指令を含んでもよい。足場ポイントに対する制限は、最大／最小レベル、ポイント、接続、ソース、データ処理要素の冗長性など、およびこれらの組合わせを含むが、これらに限定されない。図示のアーキテクトモジュールは、実行中に、乱数を用いて複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択することができる。このアーキテクトモジュールは、実行中に、乱数を用いて、１つまたは複数の機能的に同等なデータ処理モジュールを使用するための実行時間を選択することができる。実行時間は、実際の時間、クロックサイクル、処理されたデータチャンク、データ処理モジュールのサイクルを繰返すことによって行われたサイクルの回数またはサイクルの一部の数など、およびそれらの組合せであってもよい。アーキテクトモジュール制御の非限定的な例は、Wolfらに付与された米国特許第５，４３０，８３６号に記載された制御モジュールまたはSwanらに付与された米国特許第６，２４３，６３５に記載された制御モジュールであってもよい。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。アーキテクトモジュールは、プロセッサ、状態マシン、スクリプト、決定木などを含むが、これらに限定されない。
【０１１４】
図示のアーキテクトモジュールは、実行中に処理アーキテクチャをランダムに変更するように構成される実行時間修正モジュールを含む。この実行時間修正モジュールは、非決定的データプールモジュールからシードされることができる。それによって、ＰＲＮＧソースにおける足場のランダム性特性を向上させる。この実行時間修正モジュールは、足場ポイントの数に対する変更、足場ポイントの間の相互接続に対する変更、足場ポイントとともに使用されるデータ処理モジュールに対する変更、および／または変更の間の時間間隔に対する変更を行うための指令を含む。このような実行時間修正モジュールは、データ処理タスクを通じて進行状況を追跡してよく、それによって処理されているデータストリームの内容（処理するデータの残り量または残り時間、繰返しストリングの存在、関係者の間の通信サイクルの数など、およびそれらの組合わせ）に関連付けられた情報を受信し且つそれに従って行動してもよく、またはそのような情報の変化に応じて実行中に実行時間修正モジュールの動作を変更してもよい。実行時間修正モジュールの非限定的な例は、小坂らに付与された米国特許第６，８９８，７８８号に記載された修正システムまたはNielsenにより出願された米国特許出願公開第２００４／０２０５５６７号に記載された修正モジュールであってもよい。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
【０１１５】
図示の非決定的データプールモジュールは、アーキテクトモジュールおよび／または関連するモジュールによりアクセスできるように、アーキテクトモジュールに機能的に連結されている。図示の非決定的データプールモジュールは、理想的には伝統関数（非決定的関数）に由来していない非決定的な値のストリームを提供するように構成される。そのようなプールの非限定的な一例において、非決定的データプールモジュールは、ＵＲＮＧシステムの１つ以上の構成要素を含む。そのようなプールは、特定の所望の用途に適合するような大きさにされてもよく、および／または同一または類似の方法で使用され得るより大きなまたはより小さなプールを作成するように使用されてもよい。非決定的データプールの非限定的な例は、Rossにより出願された米国特許公開公報第２０１０／０００３６９００号および米国特許公開公報第２０１１／００２９５８８号に記載された不確定乱数発生器であってもよい。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
【０１１６】
図示された複数の機能的に同等なデータ処理モジュールは、アーキテクトモジュールに機能的に連結されている。特に、各機能的に同等なデータ処理モジュールは、アーキテクトモジュールによって呼出されるときに、データを確率的に処理するように構成されている。一般的に、このようなデータ処理モジュールは、乱数ストリームと関連して使用される所定の操作を含む。非限定的な例として、このようなデータ処理モジュールは、乱数ストリームからの乱数をビット単位または「チャンク」単位で情報／データストリームの値に追加して、それによって変換されたデータ値を形成してもよく、または呼出されたときにこの操作を繰返してもよい。したがって、このようなモジュールは、一般に、ＰＲＮＧ、ＵＲＮＧなどを含むがこれらに限定されない乱数生成ツールへのアクセスを必要とする。最大復号可能な保護が必要とされる場合、一般にＵＲＮＧをソースとして選択する。その理由は、ＵＲＮＧは、非決定的（一方向）であり、使用されたプールのコピーをもつ人にとって可逆的であるように動作するからである。データ処理モジュールの非限定的な例としては、Learmonthにより出願された米国特許公開公報第２０１０／０３１８８５１号に記載されたデータ処理システムまたはBulusuらにより出願された米国特許公開公報第２００９／０２５９８６２号に記載されたデータ処理モジュールが挙げられる。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
【０１１７】
図示のデータ供給モジュールは、アーキテクトモジュールと機能的に通信し、確率的に処理されるべきのデータセットを供給するように構成されている。このようなモジュールは、データの管理、アクセスおよび制御する、さもなければシステムにデータを提供するように構成される指令および／またはハードウェアを含む。システムは、データを変換するためのインタフェースツールを含んでいてもよい。インタフェースツールは、たとえば、データをアナログ形式からデジタル形式に変換するまたは１つのポルトコルから別のプロトコルに変換することによって、ソースデータをシステムにとってより使用可能な形式に変換する。システムは、データを送信／受信するおよび／またはデータを格納することができる。データ供給モジュールの非限定的な例としては、Johnsonらに付与された米国特許番号第５，９５７，７１４号に記載された送込みモジュールまたはBassettらにより出願された米国特許公開公報第２０１０／０２４１４１７号に記載の供給モジュールが挙げられる。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
【０１１８】
図示の構造化メモリモジュールは、アーキテクトモジュールに連結され、アーキテクトモジュールが所定の処理アーキテクチャを複製しおよび／または利用されている処理アーキテクチャを記録し、よってこの処理アーキテクチャが後で同一システムおよび／または類似／付属システムに使用されるように、十分な情報を提供するように構成されている。メモリ記憶装置が、構造化メモリモジュールの一部として含まれてもよく、構造化メモリモジュールに機能的に連結されてもよい。図示の構造化メモリモジュールは、時間構造に応じて構造にインデックスを付けるインデックスモジュールを含む。これによって、さまざまな種類のタイムスタンプを、ＵＲＮＧをシードするためのキーとして使用できるため、特に有利である。このようなタイムスタンプは、一般的に利用可能、短く、作成および／または転送するのに安価であり、関連するシステムが同一のデータプールを用いてデータを逆変換することを可能にする。このようなタイムスタンプは、実際の時間、クロックサイクル、処理されるデータチャンク、データ処理モジュールのサイクルを繰返すことによって行われたサイクルの回数またはサイクルの一部の数など、およびそれらの組合せであってもよい。メモリ記憶装置の非限定的な例は、ヒューレット・パッカード社（3000 Hanover Street, Palo Alto, CA, 94304 USA）製のHP Storage Works P2000 G3 Modular Smart Array System、およびソニーアメリカ子会社（550 Madison Avenue, New York, NY, 10022 USA）製のSony Pocket Bit USB Flash Driveを含むことができる。データ記憶モジュールは、データベースまたはデータファイルであってもよく、メモリ記憶装置は、ハードドライブまたはテープであってもよい。データベースの非限定的な例としては、Filemaker社（5261 Patrick Henry Drive Santa Clara, CA, 95054 USA）製のFileMaker  Pro 11が挙げられる。
【０１１９】
図示の共通データプール処理モジュールは、非決定的データプールモジュールに機能的に連結され、共通の非決定的なデータプールを確率的に処理することによって非決定的データプールモジュールに使用されるアプリケーション固有の非決定的データプールを生成するように構成されている。このように、ユーザは、共通プールの完全性を損なうことなく、多くの異なる設定で使用することができおよび多種多様の他のユーザと（転換された形で）共有することができる個人的な非決定的データプールを生成することができる。システムを用いて、共通プールを共有せずかつセットの完全性を損なうことなく、単一の共通プールから（仮想的に）無制限の数の非決定的データプールを生成することができる。データプール処理モジュールの非限定的な例としては、Mindeらに付与された米国特許第５，５７３，２４４号に記載されたシステムまたはPoundらに付与された米国特許第５，５１７，５５６号に記載されたシステムが挙げられる。
【０１２０】
図示の通信プロトコルインタフェースは、データ供給モジュールと通信し、データ供給モジュールに通信プロトコルマップを供給し、アーキテクトモジュールから確率的に処理された通信プロトコルマップを受信し、および／または確率的に処理された通信プロトコルマップに従って情報ストリームを変更するように構成されている。このような通信プロトコルインタフェースは、特別に定義されたデータプロトコルの一定の最低基準を満たすデータに依存する他の装置／システムが情報を拒否するまたは使用できないまたは「表示」できないように、さもなければ情報を使用できないことを決定するように、この情報のストリームを「中断する」するように動作することができる。非限定的な例として、一部のプロトコルは、パリティチェックに合格できない情報パケットを拒否する。通信プロトコルインタフェースは、変換を復元すべきではない人に拒否されるように、情報ストリームの一部またはすべてのパケットがパリティチェックに合格しないように十分に変換されるように動作してもよい。このようなパケットは、盗聴者にとって、単純な不良パケットである。非限定的な通信プロトコルインタフェースの例として、Linらにより出願された米国特許出願公開第２０１０／０２７７１０４号に記載された回路またはWongらに付与された米国特許第７０５８０７５号に記載されインターフェースが挙げられる。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
【０１２１】
本発明の一実施形態によれば、計算装置を用いた情報確率的処理システム１０が提供される。システム１０は、プロセッサ１４を備えるアーキテクトモジュール１２を含む。アーキテクトモジュール１２は、データの確率的処理を管理かつ制御するように構成される。アーキテクトモジュール２は、実行中に確率アーキテクチャをランダムに変更するように構成された実行時間修正モジュール１６を含む。
【０１２２】
システム１０は、アーキテクトモジュール１２に機能的に連結され、関数から導出されていない非確定値のストリームを提供するように構成される非決定的データプールモジュール１８を含む。実行時間修正モジュール１６は、非決定的データプールモジュール１８からシードされる。非決定的データプールモジュール１８は、ＵＲＮＧシステム２０を含む。システム１０は、アーキテクトモジュール１２に機能的に連結されている複数の機能的に同等なデータ処理モジュール２２を含む。複数の機能的に同等なデータ処理モジュールの各々は、アーキテクトモジュール１２に呼出されるときに、データを確率的に処理するように構成されてもよい。アーキテクトモジュール１２は、実行中に、乱数を用いて複数の機能的に同等なデータ処理モジュール２２からデータ処理モジュールを選択するように構成されてもよい。アーキテクトモジュール１２は、実行中に、乱数を用いて機能的に同等なデータ処理モジュール２２のうち１つを使用するための実行時間を選択するように構成されてもよい。
【０１２３】
システム１０は、アーキテクトモジュール１２と機能的に通信しており、確率的に処理されるべきのデータセットを供給するように構成されたデータ供給モジュール２４を含んでもよい。システム１０は、メモリ記憶装置２８を備える構造化メモリモジュール２６を含む。構造化メモリモジュール２６は、アーキテクトモジュール１２に連結されており、所定の処理アーキテクチャを複製しかつ利用した処理アーキテクチャを記録するように、アーキテクトモジュール１２に十分な情報を提供するように構成されている。構造化メモリモジュール２６は、時間構造に応じて構造にインデックスを付けるインデックスモジュール３０を含む。
【０１２４】
システム１０は、非決定的データプールモジュール１８に機能的に連結され、共通データプールを確率的に処理することによって非決定的データプールモジュールに利用されるアプリケーション固有の非決定的データプールを生成するように構成される共通データプール処理モジュール３４を含む。システム１０は、データ供給モジュールと通信しており、データ供給モジュールに通信プロトコルマップを供給し、アーキテクトモジュールから確率的に処理された通信プロトコルマップを受信し、および確率的に処理された通信プロトコルマップに従って情報ストリームを変更するように構成された通信プロトコルインタフェース３２を含む。
【０１２５】
図４および５は、計算装置を用いて情報を確率的に処理する方法を示す図である。図示のステップは、処理に関する情報を十分にもっている人間がデータ変換を逆算し、それによってデータへのアクセスを許可するとともに、データを一方向的に変換するようにデータ／情報ストリームに対する処理を許可する。データ変換が一方向的に行われたため、変換されたデータにアクセスできる盗聴者および他の人間は、データを簡単にハッキングすることができない。さらに、プロセスは、変換操作中に変更を許容するため、非決定的な値の単一プールは、プールの利用価値を実質的に下げすることなく、ほぼ無限に利用することができる。要約すると、非決定的データプールは、情報ストリーム上で動作するランダムに選択されたデータ変換処理の足場をシードするとともに、データ変換処理に関する十分な情報を記録し、よってこの情報が方法を利用する他のユーザがデータ変換を取消することができ、極めて強力的かつ操作上安価なプライバシー、セキュリティ、認証および他の利点を提供する。図示されたステップは、以下で個別に説明される。図示されたステップの順序は、必ずしも方法の操作に利用される唯一の順序ではないことを理解されたい。さらに、すべてのステップは、方法のさまざまな用途に必要されるではない。
【０１２６】
非決定的であることが検証されかつ関数から導出されていない非決定的データプールを提供するステップは、方法を弱点および決定的ＰＲＮＧの脆弱性に曝すことなく、環境的ランダム性ソースによって提供されていない可逆性を許可するように、方法に用いられる変動基盤を与える。本明細書に記載されたように、このようなプールは、ＵＲＮＧとして形成されてもよい。このようなプールは、記憶されたデータプール、データストリーム、またはその変形などとして提供されてもよい。
【０１２７】
処理される情報ストリームを提供するステップは、方法を情報ストリームに従って動作することを可能にする。情報ストリームは、方法を操作し得るシステム／装置に使用可能な形式で情報を提供する任意種類の通信ツール／モジュールを介して提供される。情報は、（無線、インターネット、イントラネット、バスなどの）通信ネットワークを介してストリームとして提供されてもよく、および／またはハードドライブ、フラッシュメモリ、ＲＯＭ、ＲＡＭ、光ディスクなど、およびこれらの組合せに限定されないメモリ装置および／またはメモリフィードへのアクセスを介して提供されてもよい。
【０１２８】
第１データ処理モジュールをランダムに選択するステップと、非決定的なデータプールからランダムに選択されたデータ処理モジュールをシードするステップと、第１データ処理モジュールを用いて情報ストリームを変更するステップと、置換データ処理モジュールをランダムに選択するステップと、置換データ処理モジュールを用いて第１データ処理モジュールを置換するステップと、非決定的データプールを利用する前に、非決定的データプールを確率的に処理するステップと、情報ストリームがランダム化された複数のデータ処理モジュールの階層によって処理されるように、複数のデータ処理モジュールの使用をランダムに階層化するステップと、乱数ソースを呼出すたびに、先に呼出されたソースと異なるソースが呼出されるように、ランダム化を管理するステップと、置換データ処理モジュールを用いて情報ストリームを変更するステップとは、方法における構造化された可変性を有する階層を集合的にまたは単独的に提供することによって、単一のデータプールの可用性を増しかつデータプール自身を覆い隠す。ランダム選択は、方法の別のインスタンスを用いて行うことができる。ランダム選択は、プロセッサを用いて実行することができる。データ処理モジュールは、各々がデータを変更するように構成された機能的に同等なデータ処理モジュールのセットから選択されてもよい。データ処理モジュールによって実行される処理の非限定的な例は、減算、マスキング、ＮＡＮＤ、ＮＯＲ、ＯＲ、ＸＯＲ、ＡＮＤおよび加算など、およびこれらの組合わせを含む。
【０１２９】
第１データ処理モジュールおよび置換データ処理モジュールの使用を再現するのに十分な構造化情報を記録するステップは、一方向性変換の逆算を可能にし、変換されたデータの受信者に有用な利便性を与える。このような記録は、タイムスタンプのように単純であってもよい。対応するシステムは、データのロック解除のキーとして機能するタイムスタンプを可能にするように、タイムスタンプにおいてに十分に同一であるように構成される。このような記録は、より複雑であってもよく、変換されたデータとともにおよび／または変換されたデータと連携して送信／パッケージされる１つまたは複数のスクリプト、データセットおよび／またはデータ処理モジュールを含んでもよい。
【０１３０】
すべてのランダム化されたデータ処理特性の選択を実行時間まで遅延させるステップおよび／または実行中に第１データ処理モジュールを使用するランダム時間を決定するステップは、得られた変換を攻撃に対する強さを強化することに非常に有用である。このようなステップは、所定の足場構造を有するが、実行時間まで足場構造に動作するデータ処理モジュールを選択しないおよび／または実行時間まで、システム内に使用されるシード値を選択しない。
【０１３１】
所定の通信プロトコルと、各々が情報ストリームを所定の通信プロトコル要件を満たさないように情報ストリームを充分処理する第１データ処理モジュールおよび置換データ処理モジュールとに従って、情報ストリームを構成するステップは、非常に安価（低い処理コスト）でデータの保護を可能にする。その理由は、得られた情報ストリームの時間のみを変更することで、盗聴者は、データを破損したデータとして拒否し、受信者は、データを適切に利用するために、データのわずかな一部を変更すればよいからである。
【０１３２】
同様の時間インデックス位置および同様の非決定的データプールから開始するカウンターパートによる作動される方法が情報ストリームを同様に処理するように、方法の動作を時間インデックスに関連付けるステップは、情報ストリームを同様に処理する。
【０１３３】
非決定的データプールが優勢な１０／１０スコアをもってＮＩＳＴ検定に合格したことを検証するステップは、他の方法では見られないセキュリティを提供する。優勢な１０／１０スコアをもって合格するとは、テスト結果の８５％、９０％、９５％、９９％および／または９９．９％以上が、非重複テンプレート検定、シリアル検定および線形複雑度検定に対して、１０／１０スコアを有し、すべてのランダム浮動域テストに対して、２／２または１／１のスコア／が得られたことを意味する。特に、本明細書に参照されるＮＩＳＴ検定は、ＮＩＳＴ専門刊行物８００−２２に見られるＰ値の均一性および配列の合格割合を検定するテスト、すなわち暗号化アプリケーション用の乱数および擬似乱数生成器を検定するための統計検定パッケージである。統計この検定パッケージは、http://csfc.nist.gov/groups/ST/toolkit/mg/documents/SP800-22b.pdfから参照することができ、その支持教示が参照により本明細書に組込まれる。１つの非限定的な実施形態において、共通データプールのみが検証／検定され、本明細書に記載された方法を用いて、共通データプールから作成された後続のプールが検定されていない。このような検定が計算上高価であるため、このようにした方が有利である。また、ＮＩＳＴ検定に合格したプールは、本発明の方法により変換されても、ＮＩＳＴ検定に合格するレベルを実質的に低下せず、引続きＮＩＳＴ検定に合格するということが観察されている。このことは、一般的に、さらなるデータが生成されることに連れて計算が幾何学級数的に高価になる関数のみに可能であるが、現行の方法は、線形的に高価（時間）になる。
【０１３４】
本発明の一実施形態によれば、計算装置を用いて情報を確率的に処理する方法４０が提供される。方法４０は、非決定的であると検証されかつ関数から導出されていない非決定的データプールを提供するステップ（４２）を含む。方法４０は、非決定的データプールが優勢な１０／１０スコアをもってＮＩＳＴ検定に合格したことを検証するステップ（４４）を含む。方法４０は、処理される情報ストリームを提供するステップ（４６）を含む。方法４０は、すべてのランダム化されたデータ処理特性の選択を実行時間まで遅延させるステップ（４８）を含む。方法４０は、プロセッサを用いて、各々がデータを変更するように構成された機能的に同等なデータ処理モジュールのセットから、第１データ処理モジュールをランダムに選択するステップ（５０）を含む。
【０１３５】
方法４０は、実行中に第１データ処理モジュールを使用するためのランダム時間を決定するステップ（５２）を含む。機能的に同等なデータ処理モジュールのセットは、減算、マスキング、ＮＡＮＤ、ＮＯＲ、ＯＲ、ＸＯＲ、ＡＮＤおよび加算を含むデータ処理モジュール群から選択される。方法４０は、非決定的データプールからランダムに選択されたデータ処理モジュールをシードするステップ（５４）を含む。
【０１３６】
計算装置を用いて情報を確率的に処理する方法４０は、第１データ処理モジュールを用いて情報ストリームを変更するステップ（５６）を含む。方法４０は、第１データ処理モジュールを用いて情報ストリームを処理するとともに、プロセッサを用いて、機能的に同等なデータ処理モジュールのセットから、置換データ処理モジュールをランダムに選択するステップ（５８）を含む。方法４０は、置換データ処理モジュールを用いて、第１データ処理モジュールを置換するステップ（６０）を含む。
【０１３７】
方法４０は、置換データ処理モジュールを用いて情報ストリームを変更するステップ（６２）を含む。情報ストリームは、所定の通信プロトコルと、各々が情報ストリームを所定の通信プロトコル要件を満たさないように情報ストリームを充分に処理する第１データ処理モジュールおよび置換データ処理モジュールとに従って構成される。方法４０は、情報ストリームがランダム化された複数のデータ処理モジュールの階層によって処理されるように、複数のデータ処理モジュールの使用をランダムに階層化するステップを含む（６４）。
【０１３８】
方法４０は、第１データ処理モジュールおよび置換データ処理モジュールの使用を再現するのに十分な構造化情報を記録するステップ（６６）をさらに含む。方法４０は、同様の時間インデックス位置および同様の非決定的データプールから開始するカウンターパートによる作動される方法が情報ストリームを同様に処理するように、方法の動作を時間インデックスに関連付けるステップ（６８）を含む。方法４０は、非決定的データプールを利用する前に、非決定的データプールを確率的に処理するステップ（７０）を含む。方法４０は、乱数ソースを呼出すたびに、先に呼出されたソースと異なるソースが呼出されるように、ランダム化を管理するステップ（７２）を含む。
【０１３９】
図６は、供給された情報を確率的に処理するように構成された確率的処理装置を示す図である。図示の装置は、不揮発性メモリ装置と、データ入力インターフェースモジュールと、データ出力インターフェースモジュールと、アーキテクトモジュールとにそれぞれ連結されたプロセッサを含む。動作時、装置は、ユーザが処理されるデータ／情報ストリームを選択することを許可して、処理に関する情報を十分にもっている人間がデータ変換を逆算し、それによってデータのアクセスを許可するとともに、データを一方向的に変換するようにデータ／情報ストリームを処理（変換）する。したがって、単一の装置を使用して、ユーザに、同様に強化されたプライバシー、セキュリティ、認証、検証、検定など、およびそれらの組合わせを提供することができる。
【０１４０】
図示のプロセッサは、一般的な電子装置（コンピュータ、サーバ、タブレット、スマートフォンなど）に含まれる１つまたは複数の処理要素を含んでもよい。
【０１４１】
図示の不揮発性メモリ装置は、電源を供給しなくてもデータを記憶する１つ以上のメモリ要素を含んでもよい。非限定的な例としては、ハードドライブおよびフラッシュドライブが挙げられる。メモリ装置は、プロセッサに機能的に連結され、優勢なスコア１０／１０をもってＮＩＳＴ検定に合格したことが確認された非決定的データのプールを含む。
【０１４２】
図示のデータ入力インターフェースモジュールは、プロセッサに機能的に連結され、データを受信するように構成されている。データ出力インターフェースモジュールは、プロセッサに機能的に連結され、データを送信するように構成されている。これらのインターフェースモジュールは、データポート、ＵＳＢポート、シリアルポート、ネットワークカード、無線送信機／受信機など、およびそれらの組合わせを含んでもよい。これらのインターフェースモジュールによって、装置は、他の装置および／またはシステムと通信することができる。
【０１４３】
図示のデータ処理モジュールは、プロセッサに機能的に連結され、複数の機能的に同等なデータ処理指令セットまたはそのような関数ライブラリーおよび／またはデータプールを含む。これらは、ＵＲＮＧプール／システムの１つ以上のインスタンスを含んでいてもよい。
【０１４４】
図示のアーキテクトモジュールは、プロセッサ、データ処理モジュールおよび／または不揮発性メモリ装置に機能的に連結され、非決定的データプールからのシード値に応じて、データの確率的処理を管理かつ制御するように構成されている。アーキテクトモジュールは、実行中に、データ処理モジュールをランダムに選択することによって、データ入力インターフェースモジュールにより受信したデータを処理し、確率的に処理されたデータをデータ出力インターフェースモジュールに提供する。このようなアーキテクトモジュールは、１つまたは複数の特徴、構造、機能および／または本明細書の各箇所に記載された同様のものを含んでもよい。
【０１４５】
本発明の一実施形態によれば、供給された情報を確率的に処理するように構成された確率的処理装置８０が提供される。装置８０は、プロセッサ８４と、プロセッサ８４に機能的に連結された不揮発性メモリ装置８６とを含む。不揮発性メモリ装置８６は、優勢な１０／１０スコアをもってＮＩＳＴ検定に合格したことが検証された非決定的データのプール８８を含む。装置８０は、プロセッサ８４に機能的に連結され、データを受信するように構成されたデータ入力インターフェースモジュール８２を含む。装置８０は、プロセッサ８４に機能的に連結され、データを送信するように構成され得るデータ出力インターフェースモジュール９２を含む。
【０１４６】
装置８０は、さらに、プロセッサ８４に機能的に連結され得るデータ処理モジュール９０と、複数の機能的に同等なデータ処理指令セット９６とを含む。装置８０は、プロセッサ８４とデータ処理モジュール９０と不揮発性メモリ装置８６とに機能的に連結されたアーキテクトモジュール９４を含む。アーキテクトモジュール９４は、実行中にデータ処理モジュールをランダムに選択することによって、非決定的データプールからのシード値に応じて、データの確率的処理を管理かつ制御するように構成され、データ入力インターフェースモジュールによって受信したデータを処理し、確率的に処理されたデータをデータ出力インターフェースモジュールに提供する。
【０１４７】
不確定アプリケーションパラメータ
静的パラメータが決定的な結果をもたらすため、多くの処理要素が正しく機能するために追加のパラメータを必要とする。これらのパラメータのすべては、可能な限り、不確定関数またはＵＲＮＧから動的に取得すべきである。このようにして、各追加の不確定パラメータは、不確実性の範囲を拡大し続ける。
【０１４８】
コントロールプレーンの職責
「コントロールプレーン」という概念は、最初のＵＲＮＧ特許において取上げられた。その発想自身が変わっていないが、その職責が確率的処理のために一般化されている。処理要素の選択／再選択、処理要素の初期化または再初期化、および確率的足場ポイントの更新は、これらの値／要素の多く／殆ど／すべてを実行中のある時点で動的に置換するような主要目的をもって実行される。
【０１４９】
アプリケーションの設計者は、処理要素または動的値を更新するポリシーを定義する責任がある。「カウントダウンカウンター」のような簡単なツールまたは「アプリケーション固有のイベント」のような複雑なツールを定義して、更新をトリガすることができる。これらのポリシーは、重要な実装の詳細になる
確率的開発
確率的処理方法論において、乱数は、処理要素、プログラム制御パラメータおよび単純なデータの選択を含む多くの異なる機能に存在する。適切に構築された確率的処理足場は、ソフトウェア指令として乱数の使用を支持する。この種類の足場の最も簡単な形式は、ＵＲＮＧカオスエンジンである。カオスエンジンは、選択肢のリストから単一の選択を表す。
【０１５０】
開発ツールおよび／または想像力の限界によって、開放型のアプリケーションソリューションは、プログラマまたはハードウェア設計者にとって課題となっている。確率的開発概念の使用も、開放型である。処理要素、ステップ、通路、ループおよび配列のいずれかを動的に定義された量で作成することができる。従来のプログラミングにおいて、「制御変数」は、コードを介して経路を指示する。確率的開発において、多くの制御変数は、実行中に、不確定値をもって定義／再定義される。カオス行動の無制限の範囲は、この足場の複雑性によって定義される。一旦足場が設定されると、カオス行動を利用するために必要とされたのは、非決定的な値のみである。この新しく作成された、実行時間不可知のソフトウェアは、アプリケーションの設計を完全に変身させる。
【０１５１】
確率的「足場ポイント」の例
以下のルーチンは、設計時の静的プールサイズ、アドレス指定モジュロおよび単一の（ライブラリー）ＰＲＮＧ呼出しを有すると仮定する。明らかに、このルーチンは、より確定的である。したがって、確率的処理の方法論には、ＰＲＮＧ呼出しを選択できる大量のＰＲＮＧ関数の集合を追加する。以下のＰＲＮＧ呼出しの各々は、異なる関数を用いて動的に選択され、不確定データを介してシードされる。また、「プールサイズ」と「モジュロ」のような不確定パラメータは、ソースファイルが作成されるときに定義される。このように、不確実性の全体的な範囲が広くなるとともに、単一ＰＲＮＧの既知欠点の一部が緩和される。正味の効果は、マスクＵＲＮＧとして知られている非決定的かつ不確定の乱数生成器である。
【０１５２】
typedef struct
{
uint32_t poolsize; // allocation size in r_values
uint32_t modulo;   // prime number addressing modulo
t_prng prng[ NUM_STOCHASTIC_POINTS ]; // PRNG addressing functions
r_value * pool;    // data pool pointer
} t_urng;
r_value urng_value (t_urng *urng)
{
r_value unsafe_1, unsafe_2;  // paradox unsafe PRNG deterministic values
r_value domain_1, domain_2;  // paradox safe domain values
r_value mask1, mask2, mask3; // Raw nondeterministic values from the pool
// Use 3 independent PRNGs to read uncertain mask values from the pool
mask1 = urng->pool[ prng (1) % urng->modulo ];
mask2 = urng->pool[ prng (2) % urng->modulo ];
mask3 = urng->pool[ prng (3) % urng->modulo ];
// Convert deterministic PRNG values into a paradox safe domain values
unsafe_1 = prng (4);
unsafe_2 = prng (5);
domain_1 = (~mask1 & unsafe_1) | (mask1 & unsafe_2 ) % urng->modulo;
unsafe_1 = prng (6);
unsafe_2 = prng (7);
domain_2 = (~mask2 & unsafe_1) | (mask2 & unsafe_2 ) % urng->modulo;
// Manufacture a nondeterministic value from the pool while hiding domain and range
return (~mask3 & urng->pool[ domain_1 ]) | (mask3 & urng->pool[domain_2 ]);
};
しかしながら、これらのＰＲＮＧの動的不可知な置換に新たなシード値の追加および不確定性プールのオンデマンド作成によって、同一の実装は、呼出されるたびに動的カスタムソリューションになる。
【０１５３】
確率的足場−カオス例
ＰＲＮＧ関数用の集合およびＵＲＮＧランダム編集プロセス（ＲＥＰ）関数用の集合を含む２つの集合から開始する。ＰＲＮＧを選択するときに使用した同一のデータ駆動型プロセスを用いて、ＲＥＰを選択し、ＲＥＰリストを作成する。各ランダム編集プロセスは、切離しプロセスである。マスク生成器は、１つの切離しプロセスを表しているが、カオスＵＲＮＧ（上記のコードを参照）は、不確定値を用いて多くの切離しプロセスから選択する。全体的な結果としては、同一の不確定性プールから作成された不確実な乱数は、かなり多くなる。
【０１５４】
確率的処理の効果
確率的処理の不確実性は、確率的処理がより有用なランダム性アプリケーションである理由を示している。正確なデータプールがなければ、（実装の情報から）呼出されるカスタムソリューションのバージョンを予測することはできない。ハードウェアおよびソフトウェアにおける現行の（静的）実装は、数学的確実性に準拠している。これらの静的ソリューションは、動的ソリューションに取代れるだろう。これらの不確実性技術は、アプリケーションをカオス的になり、より安価かつより好適なリューションになるようにさせるだろう。
【０１５５】
動的デジタルプロトコル
データ構造と行動は、現行のデジタルプロトコルを規定する。開発者は、これらのプロトコルの実装を完璧にするのに勤勉に努力している。この完璧に近い実装は、最新のデジタルプロトコルが非常に脆弱であることを意味する。デジタルプロトコル内の脆弱なデータ構造をどうのように保護するか？  データ構造を保護する手段を得るためには、データ構造を意図的に破らなければならない。この皮肉な行動は、データ構造の保護パラドックスを定義する。
【０１５６】
このパラドックスを活用するため、確率的処理下で、データ構造の脆弱性をツールとして使用し、動的手段を作成してデータ構造の完璧を独特に「破り」、その後、同一のデータ構造の完璧を独特に「復元」させる。簡単な対比を用いて、この脆弱性の有用性を示す。キヤノンはハエを殺すことができるが、ハエたたきもハエを殺すことができる。両方はタスクを完了することができるが、そのうち１つは、問題の規模に対して全く不適切である。暗号化は、デジタルプロトコルを保護することができるが、キヤノンを用いてイエバエを殺すと同様に、大変過剰であるため、不適切である。
【０１５７】
崩壊に対する感受性を理解すれば、プロトコルの内部データ構造を詳しく研究すべきである。現在では、すべてのデジタルプロトコルは、データ構造に対して静的であると定義されている。静的プロトコルデータ構造を暗号化することによってハッキングからの保護を得るよりは、「動的進化」を適用することによってこれらの静的プロトコルデータ構造を不可知な「動くターゲット」に変換すべきである。現在行われている軽量のランダム進化は、（努力をすれば）データ構造を読取ることを可能にしているが、プログラマが次の進化的変化に対する予測を防いでいる。したがって、費用を殆どかけずに、ハッキングに対する暗号化保護が得られる。
【０１５８】
デジタルプロトコルの一般例としてのコンピュータ指令を使用して、このような仕組みを実証する。わずかの数ビットを変更することだけで、これらの指令により定義された基盤ソフトウェアを簡単に破ることができる。ほぼすべての場合、各指令の１つのビットを変更するだけで、ソフトウェアプログラムの破壊をもたらす。したがって、ソフトウェアの破壊と復元は、安価で容易にできる。
【０１５９】
任意所定のＣＰＵプロセッサは、指令用の公開データ構造を定義する。ソフトウェア指令を破壊し、その後復元するカスタムかつ安価な動的手段は、公開プロトコルをプライベートプロトコルに変換することができる。この変換は、ソフトウェア、書籍およびメディアなど用のデジタル著作権管理（ＤＲＭ）システムを実装する有用なツールになるだろう。
【０１６０】
経済基盤は、カスタムソリューションの需要を決める。人々は、共通のＤＲＭシステムを共有する場合、同様のハッキングリスクも共有している。ＤＶＤの一次コピー保護のクラッキングは、共通保護を用いたリスクを示した。一旦ＤＶＤの一次コピー保護がクラッキングされると、保護されたすべてのＤＶＤが危険に曝される。したがって、共通保護の共同利用は、保護が破れると大きな経済的利益が得られるため、実際にクラッキングを誘っている。逆に、すべてのメディアがカスタムの保護によって守られている場合、一枚の保護されたメディアがクラッキングされても、他の保護されたメディアを危険に曝すことはないだろう。努力に対する貧しい還元は、殆どの場合、利益を得るためのクラッキングを挫く。
【０１６１】
データの共有保護は、より大きな経済的利益を誘うため、一般的に強力な保護（たとえばBlu-ray（登録商標））が必要である。しかしながら、カスタムの保護は、実装をより簡単にすることができる。動的デジタルプロトコルの配置は、経済の基本ルールをリセットする。経済性とともにプロトコルの脆弱性が有用である理由を説明してから、以下に、実装の詳細を説明する。
【０１６２】
カスタムの共通環境
殆どのデジタルプロトコルにおいて、製造者（製造源または創始者）とプロトコルを処理する消費者との２つの関係者がある。動的デジタルプロトコルを成功させるために、一般的に、これらの２つの関係者は、共通のソースファイル、タイムスタンプ、ＵＲＮＧ実装、および確率的処理アプリケーションを含む同様のカスタム環境から出発する必要がある。このようにして、両者は、互換性のある動的デジタルプロトコルに処理するためのランダムデータストリームおよびアプリケーションを同様にもっていることを知っている。動的デジタルプロトコルの「製造者」および「消費者」が同期される限り、両者は、ハッキングされる懸念なく、データ構造の交換を続けることができる。全く同様の環境がなければ、プロトコル消費者に受入れる予期のデータ構造を作成することはできない。
【０１６３】
データ、アドレス、およびランダム性コントロールプレーンに関する改革
これらの「プレーン」は、各々個別に改革される可能性がある。たとえば、データに影響を与えず、データプールのアドレス指定を変えることができる。同様に、１つのプレーンの状態を固定（凍結）しても、開発者は、他のプレーンを改革することが可能である。このような改革可能性は、不確定関数の性質から由来する。したがって、同様の可能性は、確率的処理（データ／アドレス／制御プレーン）にも存在する。
【０１６４】
一般的に、確率的処理は、同一のランダムストリームを再現性よく作成する能力が必要である。この要件は、データの事前生成、実装のリセットまたはこの要件をサポートするＵＲＮＧプリミティブの構築から得られた無制限数のソリューションによって満たされる。これらのＵＲＮＧプリミティブは、動的デジタルプロトコルを構築する基礎となる。
【０１６５】
任意指定のソースファイルは、不確定性プールと時間モデルとを含む。タイムスタンプは、不確定性プール内において、作成されるＵＲＮＧのインスタンスを定義するシード値を決定する。したがって、任意のタイムスタンプは、すべての可能なＵＲＮＧインスタンスへのアドレス指定関数を表す。各ＵＲＮＧインスタンスは、１つのランダムストリームしか生成できないが、同一の不確定性プールから多くの異なるストリームを生成することができる。以下は、サポートプリミティブである。
【０１６６】
静的ＵＲＮＧプリミティブ
「静的ＵＮＲＧ」は、ソースファイル内の不確定性プールに基づき、ＵＲＮＧインスタンスを作成する。各独特のタイムスタンプは、同一のデータを共有しながら、ＵＲＮＧの異なるインスタンスを作成する。
【０１６７】
t_urng * static_urng (char * source_name, t_timestamp timestamp);
動的ＵＲＮＧプリミティブ
「動的ＵＲＮＧ」は、指定のソースファイルとタイムスタンプを利用して、新たな不確定性プールを作成する。この新たな不確定性プールとタイムスタンプは、ＵＲＮＧの動的インスタンスを定義する。したがって、各独特のタイムスタンプは、独特の乱数生成器を生成し、生成された各独特の乱数生成器は、独特の乱数ストリームを生成する。
【０１６８】
t_urng * dynamic_urng (char * source_name, t_timestamp timestamp);
同一のソースファイル、タイムスタンプおよび上記のプリミティブは、同一のＵＲＮＧインスタンスを作成し、その後同一のランダムストリームを生成する。所定のＵＲＮＧインスタンスが定義された後、データプレーンが割当てられる。
【０１６９】
クローンＵＲＮＧプリミティブ
「クローンＵＲＮＧ」は、所定のＵＲＮＧインスタンスのコピーを作成する。各クローンは、クローン点から同一の乱数ストリームを生成する。
【０１７０】
t_urng * clone_urng (t_urng * urng);
ＵＲＮＧ値プリミティブ
「ＵＲＮＧ値」は、乱数を取得するための標準なＵＲＮＧインタフェースプリミティブである。
【０１７１】
r_value urng_value (t_urng * urng);
ランダムサブストリーム−インデックス付きＵＲＮＧプリミティブ
「インデックス付きＵＲＮＧ」は、「インデックス付き」ストリーム内において次の乱数を取得するためのインタフェースプリミティブである。インデックスが変わるたびに、インデックス付きストリームがリセットされる。よって、「リセット」は、インデックス付きＵＲＮＧの再利用を可能にし、任意のインデックス付きストリームを再生成することができる。例として、同一のインデックス付きストリームが同一のランダムストリームを再生成し始めるように、インデックスを一時値にセットして、その後以前のインデックス位置に復元させる必要がある。インデックス付きＵＲＮＧインターフェースプリミティブと連動して、クローンＵＲＮＧインタフェースプリミティブの使用は、任意数の（異なる）連立ランダムストリームが同一の不確定性プールから支持されることを可能にする。
【０１７２】
r_value indexed_urng (t_urng * urng, int32_t index);
バーチャルカット−メモリアドレス＋オフセット
たとえば、データプールを読取るために使用されるメモリアドレスにオフセットを足すことは、メモリ範囲の原点を移動させることと同様の効果を有する。これは、カードゲームにおいてトランプの「カット」と似ている。
【０１７３】
バーチャルシャッフル−メモリアドレスＸＯＲシャッフル値
メモリアドレスとともに、ビット単位でシャッフル値のＸＯＲをとる行為は、ＸＯＲ演算によってメモリ範囲が並べ替えられたため、迅速な位置シャッフルと相当する効果を有する。シャッフルしてからカットすることができ、またはカットしてからシャッフルすることもできる。希望であれば、これらの仮想カードトリックは、何度でも行うことができる。
【０１７４】
ランダムサブストリーム−メモリアドレスオフセットの使用
メモリアドレスの操作は、いくつかの非常に有用な副作用を生じることができる。通常は、不確定乱数発生器は、１つの乱数ストリームしか生成しない。不確定乱数発生器内に使用された各メモリアドレスにオフセットを足すと、異なるオフセットごとに、異なるランダムサブストリームが生成される。メモリ−オフセット値を選択的に足すことによって、任意数のランダムサブストリームを生成することができる。これによって、必要に応じて、アドレスをランダムに指定可能なサブストリームを得ることができる。このツールは、多くのアプリケーションにおいて非常に有用である。
【０１７５】
ソースファイルとＵＲＮＧインスタンスの識別
殆どの場合、「ファイル」の命名は、一般には、何らかの形式の「名前空間」内において、そのファイルを見つける場所（パス名）を最初に識別する必要である。一般的には、場所の最後の部分だけは、ファイルを命名するために使用される。パス名は、ソースファイルの外部識別を指定する。追加の内部識別は、作成タイムスタンプと非独特の識別子を含む。外部識別および内部識別によって、任意のソースファイルを既知のシステムに位置付けることができる。一旦正しいソースファイルを見つけると、動的識別子（オープンファイルＩＤ）を定義することができる。
【０１７６】
ソースファイルおよびタイムスタンプは、ＵＲＮＧインスタンスを作成するために使用されるときに、動的ＵＲＮＧインスタンス識別子が与えられる。クローンインスタンスは、作成された後、追加の識別子も与えられる。明らかに、確率的処理アプリケーションは、これらのＵＲＮＧインスタンス識別子を管理かつ追跡しなければならない。
【０１７７】
ハードウェアアプリケーションにおいて、不確定性プールの読込みおよびアドレス発生器の作動は、ＵＲＮＧインスタンスの識別を終える。（「シャッフル」を伴うまたは伴わない）「カット」をサポートする追加のアドレス生成器の各々は、インデックス付きＵＲＮＧに手段を提供する。
【０１７８】
製造者と消費者の同期
データ構造の製造者と消費者とは、最初から同一のソースファイルおよびタイムスタンプをもつことに限り、同一のＵＲＮＧインスタンスを作成することによって、既に同期の第１レベルに達している。一般的に、確率的処理アプリケーションは、特異のランダム配列を表す値（サブストリーム識別子）を定義しなければならない。これらのサブストリーム識別子は、インデックス付きＵＲＮＧプリミティブの「インデックス」値となる。確率的処理アプリケーションは、一般的に新たなランダムサブストリームを要求するたびに、新たなインデックス（ストリーム）値を作成することができる。このインデックス値は、データ構造内にあってもなく、いなくてもよい。たとえば、いくつかのインターネットプロトコルは、プロトコル定義に埋込まれた「配列番号」を有する。これらの配列番号は、インデックス値にマッピングされることができる。これらのインデックス値は、ランダム性のファイングレイン（Fine Grain）アドレス（時間）指定関数となる。明らかには、殆どのプロトコル配列番号は、ある理由で順番付けられるが、これらのインデックス値は、連続する必要はない。これらのインデックスを作成および管理するアルゴリズムが正しい限り、インデックス付きＵＲＮＧプリミティブは、任意所定の（有効の）インデックスに対し、同様のランダムサブストリームを与える。
【０１７９】
開始インデックス値は、アプリケーションによって明示的または暗示的に定義されてもよい。取引の会計番号は、明示的に定義されたインデックスの一例を表し、電子メール内の第三付属書類は、暗示的な例を表すことができる。しかしながら、任意のアプリケーション固有のアルゴリズムは、任意（有効の）インデックス値を作成することができる。
【０１８０】
アプリケーション固有集合−ハッシュ関数、破壊および復元プロセス
デジタルプロトコル内で脆弱な（静的）データ構造を保護するタスクは、最大２つの異なるアプリケーション固有の処理要素の集合が必要になる。第１集合が、データ構造を単一の値に減少させるある形式の「ハッシュ」関数または巡回冗長検査（ＣＲＣ）関数である。必要に応じて、第２集合が使用され、データ構造の保護パラドックスを呼出す。
【０１８１】
静的データ構造を「破壊および復元」する可能性は、無限であるため、データ構造は、無制限ソリューションの空間となる。静的データ構造を細かく破壊してから復元させるいずれかの可逆手段は、同様に効果的である。静的データ構造を処理する例のリストは、可能なソリューションを表すヒントのみである。一旦静的データ構造が作成されると、任意サイズのビットフリッピング、任意サイズのビットスワッピング、注入されてから削除される任意サイズのデータ、（任意サイズの単位内で）左右に回転させられた任意数のビット、（バイト、１６ビット、ワードの）ビット順序の反転からなる任意の組合わせを採用してもよい。データ構造が無制限ソリューションの空間となっているため、より多くのソリューションを生成することができる。
【０１８２】
静的データ構造の可逆モーフィングは、多くの既存のハードウェアソリューションおよび／またはソフトウェアソリューションに挿入されることができる。この保護のアップグレードは、既存のシステムに対し、比較的低いコストまたは比較的少ない破壊で達成することができる。
【０１８３】
脆弱なデータ構造を保護する別の手段は、動的データ構造に向かって直接移動することである。たとえば、多くの異なるデータ構造は、「可変レコード」手段を介して重ねる（フォーマットする）ことができる。このようにして、同一データの全体をほぼ同一の空間に格納することができる。各可変レコードにおいて、唯一の大きな違いは、同一のフィールドが異なる順序で格納されることである。この場合、製造者と消費者の両方は、使用される変数を同期しなければならない。理想的な同期は、不確定データに基づいて可変レコードを選択すること（または可変レコードを構築するルーチンを選択すること）である。このように、データ構造内の同一のフィールドは、常に時間の経過とともに、動いているように見える。この可変レコードという解決案は、集合を「破壊および復元」する必要がないが、データ構造内のフィールドへのハードウェアアクセス／ソフトウェアアクセスを再工夫する必要がある。
【０１８４】
既存の静的データ構造の確実性に対する破壊は、非常に低いコストで取込むことができるため、普及することができる。よって、デジタルプロトコルのセキュリティは、莫大な経費なしで達成することができる。第２集合（ハッシュ関数またはＣＲＣ）は、さらに低経費の選択肢を提供する。
【０１８５】
ＣＲＣメタファーをRoss完全性チェック（ＲＩＣ）にアップグレード
多くのインターネットプロトコルは、ＣＲＣ関数を採用して、損傷した（無効の）パケットを検出する。ＣＲＣチェックが不合格である場合、パケットが破棄される。これらのプロトコルは、欠落パケットを自然に置換し、一時的なグリッチという唯一の結果を生じる。現在、多くの異なるＣＲＣ関数は、ネットワークの全体に配置されている。しかしながら、意図通りに機能させるために、現行のＣＲＣの各呼出しは、一般的に正しい関数を使用しなければならない。このことは、現行のＣＲＣメタファーを定義する。
【０１８６】
簡単な質問として、メタファーを変更するときに、間違ったＣＲＣ関数が呼出された場合に何が起こるか？  この場合、プロトコルは中断され、各要求は破棄される。このＣＲＣチェックの一貫性のある失敗が正しい意図であれば、ＣＲＣ値が破損の「デジタル署名」となった。残念ながら、ＣＲＣ関数が知られた場合に、ＣＲＣ値は、ＣＲＣチェックに合格できる程度にハッキングされることができる。解決案を完成させ、ハッキングを防止するために、一般的にＣＲＣの計算に不確定データを組込む必要がある。必要された（不確定サイズの）不確定データは、正しいＵＲＮＧインスタンスのみから生成することができる。よって、追加の不確定データを加えたハッシュ／ＣＲＣ関数の集合は、実際に、各パケットの簡単なＣＲＣメタファーを安全なデジタル署名にアップグレードする。そのため、認証されていないパケットが無視される。ＣＲＣメタファーのＲＩＣ置換は、コストが十分低いであるため、普及することができる。
【０１８７】
集合から不確定に選択されたハッシュ／ＣＲＣ関数および不確定なサイズを有する不確定データ補遺を用いて、データ補遺が加えられたデータ構造のハッシュ／ＣＲＣのＲＩＣ値を計算する。サービス提供者は、同一のハッシュ／ＣＲＣ関数を選択して、同一の不確定な補遺を生成し、ＲＩＣ値を計算する。認証がデータ構造に含まれる値と一致する場合にのみ、サービスが提供される。
【０１８８】
ＲＩＣの応用
明らかに、ＲＩＣは、任意のデジタルプロトコルに加えられ、低コストの認証手段を提供することができる。多くのサービスは、認証なしで提供されているが、一部のサービスは、認証（たとえば、セキュア・ソケット・レイヤー（ＳＳＬ））をサポートする非常に複雑なインフラを有する。一回のデータ交換が完了すると、乱数発生器も交換される。そのため、認証をサポートするために必要された最小限のインフラを設立した。共有の確率的処理アプリケーションがこのデータ交換に使用される場合、ハードウェアまたはソフトウェアにおける動的カスタムのアプリケーションも交換される。
【０１８９】
公開アドレスをプライベートアドレスに変換（ファイングレインアクセス制御）
多くのサービス提供者が既知の「公開アドレス」を有すると仮定する。これらのサービス提供者が既にＲＩＣ認証をサポートするようにアップグレードされる場合、許可されたサービスのみが提供され、他のすべてのリクエストが無視される。このように、ＲＩＣは、このサービスに対し、一種の取消可能なアクセス制御となる。このアクセス制御の可能な応用は、無制限である。
【０１９０】
ＲＩＣの効果を示す簡単な例を挙げる。電話が選択的にＲＩＣ認証をサポートする場合、日中には、電話番号を「公開する」ことができるとともに、夜間には、アクセスを許可された人に限定（縮小）することができる。ＲＩＣの効果を示す別の方法は、公開（既知）アドレスをプライベート（認可のみ）アドレスに変換することである。現在では、任意の電子メール、電話番号、制御システム、ＩＰアドレス、財務またはインターネット取引などは、ファイングレインアクセス制御を備えている。
【０１９１】
多くのアプリケーションは、ファイングレイン取消可能なアクセス制御を有しないことに悩まされる。たとえば、データベースに与えられた一般的なアクセス権は、すべてのレコードをアクセスできる。その代わりに、多くの組織は、知る必要が承認されたレコードのみにアクセスを動的に制限し、データベースの残りの部分へのアクセスを拒否する。明らかに、このファイングレインアクセス制御は、医療およびＩＲＳ組織において有用であろう。この種類アクセス制御は、多くのアプリケーションに利用できる。
【０１９２】
確率的足場−同一の特異の破壊／復元アルゴリズム
破壊および復元（ＢＲ）プロセスは、確率的足場のフレームワークに従って進む。ＢＲアプリケーションの開発者は各々、ＢＲ処理要素を多段階選択するおよび多段階起動させるためのフレームワークを作成する。プログラム制御変数（ステップ数、ステップの順序、ＢＲ要素の選択など）に対する制限はすべて、ＵＲＮＧによって生成されたデータによって規定される。
【０１９３】
同期が正しいＵＲＮＧインスタンスをもって確立されると、確率的足場の各部分は、同一の特異の不確定データから始まる。フレームワーク内の各サブステップは、追加のデータパラメータを必要とする場合がある。任意のパラメータ、データ項目、選択値、カオス指令などは、一貫性のある（かつ再現可能な）方法でインデックス付きＵＲＮＧとともに提供されることができる。
【０１９４】
明らかに、フレームワークは、破壊が完了した時点で、復元に対処しなければならない。新しい破壊処理要素が以前の破壊処理要素の結果に影響を与える可能性がある場合、復元配列は、逆の順序で破壊処理要素を復元することで、各破壊処理要素を取消す必要がある。「後入れ先出し（ＬＩＦＯ）」スタックの処理は、十分解明された伝統的なアルゴリズムメタファーである。
【０１９５】
ＢＲプロセスとＲＩＣの両方が採用される場合、ＲＩＣ値は、任意の変更が行われる前に、計算され、データ構造内に保存される。一旦データ構造が復元されると、ＲＩＣは、再計算され、データ構造を検証し、認証を確認する。
【０１９６】
破壊／復元またはＲＩＣのオプション使用
以上のセクションでは、ＢＲプロセスとＲＩＣの両方が同時に使用されている場合を説明した。しかしながら、多くの有効なアプリケーションは、一方のみを使用する。多くのデジタルプロトコルにおいて、ＲＩＣは、アクセス制御の低コスト解決案として単独に利用される。ソフトウェアＤＲＭの場合、ＢＲプロセスは、単独に利用される。ＲＩＣのみがソフトウェアＤＲＭに採用されている場合、攻撃点が１つであるため、ソフトウェアがハッキングされ易くなり、ＲＩＣの効果が発揮できなくなる。しかしながら、ＢＲプロセスの単独使用は、ソフトウェアを充分保護できる。その理由は、不正に復元されたソフトウェアがすべて機能しなくなる。ＢＲプロセスのみまたはＲＩＣのみを使用するアプリケーションは、多くある。
【０１９７】
データ合同数生成器
「線形合同数生成器」は、決定的値を生成する。これらの決定的値は、一般的にＵＲＮＧ実装内でパラドックス安全な値に変換されなければならない。不確定関数用のパラドックス安全なドメイン値を生成するための要件が同様に維持されながら、欠点のあるＰＲＮＧを除去すると、プロセスをより好適なランダム性を有するように簡素化することができる。
【０１９８】
mask     = urng->pool[ prng (1) % urng-> modulo ];
unsafe_1 = prng (4);
unsafe_2 = prng (5);
domain   = (~mask & unsafe_1) | (mask & unsafe_2 ) % urng->modulo;
不確定性プールから１つ（または１つ以上）の非決定的な値を用いて、素数モジュロ演算からドメイン値を生成することができる。パラドックス安全なデータを用いて「線形」方程式を置換すると、「線形合同数生成器」の代わりに、データ合同数生成器（ＤＣＧ）が生成される。不確定性プールに与えたランダムインデックスが２つ（seed0，seed1）である場合、Ｃコード置換例は、以下である。
【０１９９】
uint64_t y;
uint32_t hi, low, domain;
hi     = urng->pool[ seed0++ % urng->modulo ];
low    = urng->pool[ seed1-- % urng->modulo ];
y      = ((uint64_t) hi << 32) | (low);
domain = ( y % prime ) % urng->modulo;
注：この実施例では、２つの３２ビット値を連結することによって、６４ビット値を作成する。連結の代わりに、ほぼすべての２進演算も同様に機能する。単一のプール値が機能するが、同一のアドレス指定配列を繰返す速度が速すぎるという傾向がある。上記の「素数」を置換すれば、異なるドメイン値生成器を作成することができる。ＤＣＧの実施形態は、ソフトウェアまたはハードウェアに作成することができる。
【０２００】
「Ｃヘッダ」
Ｃヘッダは、上記のコード抜粋に書かれていないいくつかの詳細を補足する。
#define MAX_REPS              16
#define INSTRUCTIONS_PER_WORD 8
#define INSTRUCTION_MASK      0xF
#define INSTRUCTION_SHIFT     4
#defineNUM_STOCHASTIC_POINTS  7
#define prng( num ) ((*urng->prng[ num ].PRNG)( &urng->prng[ num ].state ))
typedef uint32_t r_value; // base type of uncertainty value
// generic PRNG function
typedef r_value (*PRNG_function)(r_value* seed);
// generic Random Edit Process
typedef r_value (*edit_process)(r_value, r_value, r_value);
typedef struct
{
PRNG_function PRNG;
r_value state;
} t_prng;
// STRUCTURE : t_chaos
//
// Chaos CPU
//   instruction (block) currently 4 bits each
//   PC Program Counter within instruction block
//   16 CPU operations indexed via 4 bit instruction
//   each operation is a generic Random Edit Process
//   each operation is randomly selected via uncertainty value from REP table
//
// Since each instruction block is randomly fished from pool of uncertainty and then
// used to perform random operations against other random streams, the Chaos Engine
// is an appropriate name.
typedef struct
{
r_value  instruction; // random value holding instructions
r_value  PC; // current instruction counter within above instruction
edit_process operation[ MAX_REPS ]; // table of chaos operations (Random Edit
Processes)
} t_chaos;
typedef struct
{
uint32_t poolsize;  // allocation size in r_values
uint32_t modulo;    // prime number addressing modulo
t_prng prng[ NUM_STOCHASTIC_POINTS ]; // PRNG addressing functions
t_chaos cpuAdr0;    // address chaos engine
t_chaos cpuAdr1;    // address chaos engine
30 t_chaos cpudata; // data chaos engine
r_value *pool;              // data pool pointer
} t_curng;
typedef struct
{
uint32_t poolsize; // allocation size in r_values
uint32_t modulo;   // prime number addressing modulo
t_prng prng[ NUM_STOCHASTIC_POINTS ]; // PRNG addressing functions
r_value *pool;     // data pool pointer
} t_urng;
上述した実施形態は、本発明の応用原理の単なる例示であることを理解すべきである。本発明は、その精神または本質的な特徴から逸脱することなく、他の特定の形態で実現され得る。上記の実施形態は、すべての点で、単なる例示であり、限定的ではないと考えるべきである。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲と均等な意味および範囲にあるすべての変更は、本発明の範囲内に包含されるべきである。
【０２０１】
たとえば、上記の討論は、システム、方法などの具体的な用途について説明したが、その応用は多くあり、場合によって現在の時点で不可知であることを理解すべきである。
【０２０２】
さらに、図面は、特定の接続、関係および配列を示すが、特許請求の範囲に記載されていないかつ禁止されていない多くの接続、関係および配列は、想定され、本発明の１つまたは複数の非限定的な実施形態において実施され得ることを理解すべきである。
【０２０３】
本発明は、現在最も実用的かつ好ましいであるとみなされる本発明の実施形態に具体的にかつ詳細に関連して完全に説明してきたが、サイズの変更、材料の変更、形状の変更、形式の変更、機能および操作仕方の変更、組立ておよび使用の変更を含むがこれらに限定されない多数の変更が、特許請求の範囲に記載された本発明の原理および構想から逸脱することなく可能であることは、当業者には明らかであろう。さらに、実施形態は、本明細書に記載された特徴、機能、構造および方法のうち１つ以上で構成されまたは実質的に構成されることに制限されてもよいと考えられる。
【図１】
0005976928.tif 000003
【図２】
0005976928.tif 000004
【図３】
0005976928.tif 000005
【図４】
0005976928.tif 000006
【図５】
0005976928.tif 000007
【図６】
0005976928.tif 000008