JP6616471B2 - 確率的処理 - Google Patents

確率的処理 Download PDF

Info

Publication number
JP6616471B2
JP6616471B2 JP2018165973A JP2018165973A JP6616471B2 JP 6616471 B2 JP6616471 B2 JP 6616471B2 JP 2018165973 A JP2018165973 A JP 2018165973A JP 2018165973 A JP2018165973 A JP 2018165973A JP 6616471 B2 JP6616471 B2 JP 6616471B2
Authority
JP
Japan
Prior art keywords
data
value
data pool
pool
urng
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018165973A
Other languages
English (en)
Other versions
JP2019012547A (ja
Inventor
ロス,パトリック・ディ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cassy Holdings LLC
Original Assignee
Cassy Holdings LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cassy Holdings LLC filed Critical Cassy Holdings LLC
Publication of JP2019012547A publication Critical patent/JP2019012547A/ja
Application granted granted Critical
Publication of JP6616471B2 publication Critical patent/JP6616471B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/763ASIC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Description

関連出願の相互参照
本発明は、2011年5月27日付で、Patrick Rossにより出願された米国仮特許出願公開第61/519679に基づき、米国特許法第120条による優先権を主張し、その開示が引用により本明細書に援用される。本発明は、2012年5月29日付で、Patrick D. Rossにより出願された米国非仮特許出願公開第13/482723号に基づき、特
許協力条約およびパリ条約による優先権を主張し、その開示が引用により本明細書に援用される。
技術分野
本発明は、情報を保護するための方法およびシステムに関し、具体的には、情報確率的処理を提供する動的アプリケーションを生成する方法およびシステムに関する。
産業上の利用可能性
本発明は、さまざまな方法で、コンピュータゲーム、銀行取引、通信、媒体開発産業のようなさまざまな業種に適用することができるが、これらに限定されない。本発明は、これらの産業により利用されるシステムに使用されるコンピュータハードウェア/ソフトウェアに実装されてもよい。
関連技術の説明
多くのアプリケーションは、内部処理の一部として乱数を必要とする。これらのアプリケーションの一部は、値の均一分布、所定のシード値からの再現性、および繰返すまでに非常に長いサイクルなどのような単純要件を要する。そのために、多くの論文および書籍は、これらの伝統的な乱数発生器を提供する好適なハードウェアおよびソフトウェア関数を記載する。伝統的な乱数発生器は、有用でありながら問題もある。現行の乱数発生器の欠点を対処する前に、一般的には、まず、これらの発生器の動作を再検討する必要がある。
ハードウェアに基づくかまたはソフトウェアに基づくかに関係なく、すべての伝統的な乱数発生器は、多くの共通特性を有する。伝統的な乱数発生器の基礎は、静的ランダム関数を使用することである。これらの関数の各々は、配列における非ゼロの現在データ値を処理して次の乱数にする。その後、各新たな値の処理によって、ランダム配列が生成される。好適な関数を使用すれば、生成されたランダム配列は、殆どすべての既知のランダム性統計テストに合格するだろう。
多くのランダム関数は、テストされ、公開されている。公開された関数の殆どは、乱数の同一配列を繰返す前に、乱数の限定配列を生成する。これらの短いサイクルの長さは、短すぎであり、多くのアプリケーションと互換できない可能性がある。ハードウェアでは、ランダム関数は、殆どの場合、線形フィードバックシフトレジスタ(Linear Feedback Shift Register:LFSR)と称される。存在するソフトウェア関数は少ないが、新しいアプリケーションにおいて設計者に使用できる制定された関数は、数多く存在する。また、殆どのソフトウェアランダム関数は、短いサイクルという同様の属性を共有している。
合格するか不合格になるかに関係なく、サイクルの長さは、統計テストと同じく重要である。複数の公開された関数を非直線的に組合わせることは、サイクルの長さを増やす最も一般的な方法である。関数に基づく乱数発生器は、正確には擬似乱数生成器と呼ばれ、
「クラッキング」(逆算)され易い。乱数発生器がクラッキングされると、クラッカーが配列内の値をそれぞれ予測することができる。経験則としては、伝統的なランダム関数の複雑性を倍にすると、クラッキングに必要な作業量を二乗する効果がある。ハードウェア速度が増加すれば、コンピュータの速度も増加する。したがって、乱数発生器の設計者とそれを破ろうとするクラッカーとの間の戦いは、軍備競争になる。
この経験則に基づき、ハードウェア設計者は、常に複雑な乱数発生関数を採用している。関数駆動型パラダイムが必然的に不完全であるため、設計者とクラッカーとの間の戦いは持久戦になる。新しく設計された乱数発生器が必ず時代遅れになるので、新たな乱数発生器の作成、テストおよび配備にかかるコストは、終わりがない。その結果、繰返し高くなるチップコストは、製品コストに直接転嫁される。この道の終わりが分からないため、設計者は、最新の関数がクラッキングされるまでの時間を予測することができない。
関数の複雑性を増加するのにかかるコストは、複数の形式で現れる。上述のように、必然的に不完全な問題があるため、ハードウェアの軍備競争は持続する。クラッカーより先に進むために、一般的に、ハードウェア技術における各々の飛躍は、対応する新たな発生器の設計を必要とする。このように、コストが高騰するため、多くのアプリケーション設計者がハードウェアに基づくソリューションを控える。システムのコストを削減するために、多くのアプリケーション設計者は、ソフトウェアに基づく乱数発生器を採用する。多くの場合、ソフトウェアソリューションへの移行は、性能を許容できないほど遅らせるか、またはCPUのコストを増加する。専用のシリコンチップを使用しなければ、繰返し発生するコストは低くなるが、実装されたソフトウェアが、システム全体の性能に負担をかかる。ソフトウェアの複雑性が増加すると、システムの性能がそれに逆比例して低下する。
クラッキングされないように、多くの設計者は、秘密(非公開)の設計を採用する。秘密の開発は、限られた検証、限られた検討または限られた再使用に必然的に伴う。遺憾ながら、秘密の開発は、所定の設計が少量であり、一般的には単品当たりのコストが高くなるため、投資の利益還元は限られる。さらに、ハードウェアまたはソフトウェアのサンプルが誰かに入手されると、秘密でこれらの設計の完全性を保つすることはできなくなる。
これらの伝統関数の決定的な弱点は、各ランダム関数が独自のランダム配列を生成するという変えられない単純事実から生じる。言い換えれば、ランダム関数とランダム関数により生成された値の独特の配列との間に1対1の対応関係が存在する。その配列は、生成関数に対して「メロディー」のような役割を果たす。ランダムな「メロディー」は、値と、値が生成された順序との両方として定義される。シード値は、「メロディー」の始点のみを規定する。
すべての伝統的な乱数発生器は、スカラー値(非ゼロの開始シード)を用いて、独特の「メロディー」の始点にインデックスを付ける。伝統的な乱数発生器は静的関数に基づく構成物であるため、シード値は、擬似ランダム配列の開始を規定するキーとして機能するため、一般的に保護されなければならない。殆どの場合において、シード値の大きさは、サイクル全体の長さを示すために、使用される。すべてのハードウェアに基づく伝統的な乱数発生器および殆どのソフトウェアに基づく伝統的な乱数発生器は、乱数の生成を開始するために、非ゼロのシード値を必要する。殆どすべての場合には、ゼロのシード値は、ランダムストリームを生成することができない。
クラッキングとのむだな抗争において、多くの設計者は、秘密(非公開)の設計を採用する。秘密の開発は、限られた検証、限られた検討または限られた再使用を必然的に伴う。遺憾ながら、秘密の開発は、所定の設計が少量であり、一般的には単品当たりのコスト
が高くなるため、投資の利益還元は限られる。さらに、ハードウェアまたはソフトウェアのサンプルが誰かに入手されると、秘密でこれらの設計の完全性を保つすることはできなくなる。本当に必要なのは、真の一方向性関数を実行して非決定的な値のランダムなストリームを生成する真の乱数生成器および/または本明細書に記載された1つ以上の課題および/または当業者が本明細書を理解することにより注目し得る1つ以上の課題を解決する方法またはシステムである。いくつかの改善策は、既に当該分野で行われている。本発明に関連する参考文献の例は、以下でそのまま記載され、各参考文献の支持的な教示は、参照により本明細書に組込まれる。
Rossにより出願された米国特許出願公開第2011/0029588号は、一方向性関数を生成することによって、乱数のストリームを生成するシステムおよび方法を開示している。方法は、すべての可能な範囲値にマッピングされる任意のドメイン値に従って指定される複数のメモリセルを提供するステップと、メモリセルのうち1つに関連付けられたランダムドメイン値を生成するステップと、生成されたランダムドメイン値に関連付けられたデータ値を読出すステップと、データの追加量を形成することによって動的に強化されたデータを生成するステップと、疑いのある非ランダム部分を除去することによってソースデータを作成するステップと、最低限のランダム性要件に応じてソースデータの検証することによって検証されたソースデータを作成するステップと、マスキングモジュール、時間変位モジュール、カオスエンジンモジュール、XORモジュール、上書きモジュール、展開モジュール、除去モジュール、制御プレーンモジュール、またはアドレスプレーンモジュールのようなランダム編集プロセスを用いて、検証されたソースデータをメモリセル位置に統合させるステップとを含む。展開モジュールは、ノイズチャンクを挿入する。
Rossにより出願された米国特許出願公開第2010/0036900号は、一方向性関数を生成することによって、乱数のストリームを生成するシステムおよび方法を開示している。方法は、すべての可能な範囲値にマッピングされる任意のドメイン値に従って指定される複数のメモリセルを提供するステップと、メモリセルのうち1つに関連付けられたランダムドメイン値を生成するステップと、生成されたランダムドメイン値に関連付けられたデータ値を読出すステップと、データの追加量を形成することによって動的に強化されたデータを生成するステップと、疑いのある非ランダム部分を除去することによってソースデータを作成するステップと、最低限のランダム性要件に応じてソースデータの検証することによって検証されたソースデータを作成するステップと、マスキングモジュール、時間変位モジュール、カオスエンジンモジュール、XORモジュール、上書きモジュール、展開モジュール、除去モジュール、制御プレーンモジュール、またはアドレスプレーンモジュールのようなランダム編集プロセスを用いて、検証されたソースデータをメモリセル位置に統合させるステップとを含む。展開モジュールは、ノイズチャンクを挿入する。
これまでに知られている発明は、使用困難、複雑、高価、使用上の制限、応用上の制限、信頼性欠乏、特定可能、確実的、後続のランダムデータセットを処理するのに非常に長い処理時間を必要すること、真の「一方向性」関数ではないこと、または脆弱性と弱点を有するため、権限のないユーザが情報を簡単に復元できることなど、およびこれらの組合わせを含む一連の欠点を有する。
本当に必要なのは、本明細書に記載された1つ以上の課題および/または当業者が本明細書を理解することにより注目し得る1つ以上の課題を解決する方法、システム、機器、装置、コンピュータプログラム、キット、および/またはそれらの組合わせである。
以下の開示情報および/またはそれに付随する情報は、特徴、機能、構造、関連付け、
接続、方法、ステップ、利点、および結果などの非限定的な例として提供され、これらは、「必ず」、「常に」、「決して〜ない」および「確実に」などに限定しないがこれらと逆意味の表現にかかわらず、独立的に、任意の開放的な組合せで、または任意の限定的な組合わせ(からなる)で含まれることができる。提供された任意の寸法は、例示的なものあり、当業者が本開示を読むことにより認識できる機能的に同等な範囲を暗示する。提供される開示は、予言的であると主張されなくても予言的ものである。
発明の開示
本発明は、当技術分野の現状に応じて開発され、特に、現在利用可能な静的(したがって、決定的)ハードウェアおよびソフトウェアソリューションによってまだ完全に解決されていない当技術分野における課題および需要に応じて開発された。したがって、本発明は、ハードウェアまたはソフトウェアのいずれかに応用される動的かつ非決定的ソリューションを生成する方法および/またはシステムを提供するために開発された。本発明の方法および/またはシステムは、情報を確率的処理するためのシステム、方法および/または装置を含むがこれらに限定されない。
本発明の一実施形態によれば、計算装置を用いた情報確率的処理システムが提供される。システムは、プロセッサを備え得るアーキテクトモジュールを含むことができる。アーキテクトモジュールは、データの確率的処理を管理かつ制御するように構成されることができる。アーキテクトモジュールは、実行中に処理アーキテクチャをランダムに変更するように構成され得る実行時間修正モジュールをさらに含むことができる。実行時間修正モジュールは、非決定的データプールモジュールからシードされることができる。アーキテクトモジュールは、実行中に、乱数を用いて複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択するように構成されてもよい。アーキテクトモジュールは、実行中に、乱数を用いて機能的に同等なデータ処理モジュールのうち1つを使用するための実行時間を選択してもよい。
システムは、アーキテクトモジュールに機能的に連結され、関数から導出されていない非決定的な値のストリームを提供するように構成され得る非決定的データプールモジュールを含むことができる。非決定的データプールモジュールは、URNGシステムを含んでもよい。システムは、アーキテクトモジュールに機能的に連結され得る複数の機能的に同等なデータ処理モジュールを含んでもよい。複数の機能的に同等なデータ処理モジュールの各々は、アーキテクトモジュールに呼出されるときに、データを確率的に処理するように構成されてもよい。
システムは、アーキテクトモジュールと機能的に通信することができ、確率的に処理されるべきのデータセットを供給するように構成され得るデータ供給モジュールを含むことができる。システムは、メモリ記憶装置を備え得る構造化メモリモジュールを含むことができる。構造化メモリモジュールは、アーキテクトモジュールに連結されてもよく、所定の処理アーキテクチャを複製しかつ利用した処理アーキテクチャを記録するように、アーキテクトモジュールに十分な情報を提供するように構成されてもよい。構造化メモリモジュールは、時間構造に応じて構造にインデックスを付けるインデックスモジュールを含んでもよい。
システムは、非決定的データプールモジュールに機能的に連結され、共通データプールを確率的に処理することによって、非決定的データプールモジュールに利用されるアプリケーション特有の非決定的データプールを生成するように構成され得る共通データプール処理モジュールを含むことができる。システムは、データ供給モジュールと通信しており
、データ供給モジュールに通信プロトコルマップを供給し、アーキテクトモジュールから確率的に処理された通信プロトコルマップを受信し、および確率的に処理された通信プロトコルマップに従って情報ストリームを変更するように構成され得る通信プロトコルインタフェースを含むことができる。
本発明の一実施形態によれば、計算装置を用いて情報を確率的に処理する方法が提供される。この方法は、非決定的であると検証されかつ関数から導出されていない非決定的データプールを提供するステップを含むことができる。方法は、非決定的データプールが優勢な10/10スコアをもってNIST検定に合格したことを検証するステップを含む。方法は、処理される情報ストリームを提供するステップを含んでもよい。方法は、すべてのランダム化されたデータ処理特性の選択を実行時間まで遅延させるステップを含んでもよい。方法は、プロセッサを用いて、各々がデータを変更するように構成された機能的に同等なデータ処理モジュールのセットから、第1データ処理モジュールをランダムに選択するステップを含んでもよい。方法は、実行中に第1データ処理モジュールを使用するランダム時間を決定するステップを含むことができる。機能的に同等なデータ処理モジュールのセットは、減算、マスキング、NAND、NOR、OR、XOR、ANDおよび加算を含むデータ処理モジュール群から選択されることができる。方法は、非決定的データプールからデータ処理モジュールをランダムに選択するステップをシードしてもよい。
計算装置を用いて情報を確率的に処理する方法は、第1データ処理モジュールを用いて情報ストリームを変更するステップを含んでもよい。方法は、第1データ処理モジュールを用いて情報ストリームを処理するとともに、プロセッサを用いて、機能的に同等なデータ処理モジュールのセットから、置換データ処理モジュールをランダムに選択するステップを含むことができる。方法は、置換データ処理モジュールを用いて、第1データ処理モジュールを置換するステップを含んでもよい。
方法は、置換データ処理モジュールを用いて、情報ストリームを変更するステップを含んでもよい。情報ストリームは、所定の通信プロトコルと、各々が情報ストリームを、所定の通信プロトコル要件を満たさないように充分に処理する第1データ処理モジュールおよび置換データ処理モジュールとに従って構成されてもよい。方法は、情報ストリームがランダム化された複数のデータ処理モジュールの階層によって処理されるように、複数のデータ処理モジュールの使用をランダムに階層化するステップを含んでもよい。
方法は、第1データ処理モジュールおよび置換データ処理モジュールの使用を再現するのに十分な構造化情報を記録するステップをさらに含んでもよい。方法は、同様の時間インデックス位置および同様の非決定的データプールから開始するカウンターパートによる作動される方法が情報ストリームを同様に処理するように、方法の動作を時間インデックスに関連付けるステップを含んでもよい。方法は、非決定的データプールを利用する前に、非決定的データプールを確率的に処理するステップを含んでもよい。方法は、乱数ソースを呼出すたびに、先に呼出されたソースと異なるソースが呼出されるように、ランダム化を管理するステップを含んでもよい。
本発明の一実施形態によれば、供給された情報を確率的に処理するように構成された確率的処理装置が提供される。装置は、プロセッサと、プロセッサに機能的に連結され得る不揮発性メモリ装置とを含んでもよい。不揮発性メモリ装置は、優勢な10/10スコアをもってNIST検定に合格したことが検証された非決定的データプールを含んでもよい。装置は、プロセッサに機能的に連結され、データを受信するように構成され得るデータ入力インターフェースモジュールを含んでもよい。装置は、プロセッサに機能的に連結され、データを送信するように構成され得るデータ出力インターフェースモジュールを含んでもよい。
装置はまた、プロセッサに機能的に連結され得るデータ処理モジュールを含んでもよく、複数の機能的に同等なデータ処理指令セットを含んでもよい。装置は、プロセッサと、データ処理モジュールと、不揮発性メモリ装置とに機能的に連結され得るアーキテクトモジュールを含んでもよい。アーキテクトモジュールは、実行中にデータ処理モジュールをランダムに選択することによって、非決定的データプールからのシード値に応じて、データの確率的処理を管理かつ制御するように構成されてもよい。それによって、データ入力インターフェースモジュールにより受信されたデータが処理され、確率的に処理されたデータがデータ出力インターフェースモジュールに提供される。
29 一実施形態において、以前では静的な単一のソリューションは、同様の実装において多くの動的カスタムソリューションに変換される。このようなソリューションの新しいゲノムは、以下のモジュールの1つまたは複数を含むがそれらに限定されない多数の新技術に基づいている。
・不確定関数−一方向性関数
・不確定乱数生成器
・処理要素の動的選択
・必要になるまで要素の拘束遅延
・要素のオンデマンドリミックス
・データ駆動型実装
動的ソリューションの新しいゲノムの実施形態は、多くの好ましいソリューションを簡素化する。「フリーサイズ」の静的アプリケーションをカスタムソリューションにより置換することは、多くの現在未解決された課題を解決することができる。
別の実施形態において、これらの新技術のすべては集合され、乱数を生成するための開放型アーキテクチャソリューションを形成する。このようなアーキテクチャモデルは、ランダムデータ要件に応じて、非常に低コストの製品から要求の高いアプリケーションまで広がる。よって、関数でデータを処理する代わりに、データでデータをモーフィングすることができる。
さらに別の実施形態において、静的プロトコルを進化型プロトコルにモーフィングする方法が提供される。動的に進化するカスタムプロトコルのハッキングは、不可能である。
さらに別の実施形態において、単純なハッシュ値は、安全なデジタル署名にアップグレードすることができる。「サービス提供者」が安全なデジタル署名のみをサポートする場合、承認されていないハッシュ値は、無視される。したがって、これらのデジタル署名は、取消可能なアクセス制御となる。このアクセス制御方法は、電話番号、電子メールアドレス、IPアドレス、制御システム、金融取引などの任意な種目に拡張することができる。
さらに別の実施形態において、正しく実装されたカスタムソリューションの例は、セッションデータ(後で説明する)が漏洩されていない場合、同様の高価な静的ソリューションよりも逆算されにくいであろう。このことは、同様な周知のハードウェア/ソフトウェアの実装を使用しても、クラッキングに対する同様な抵抗力を有することを意味する。
本明細書の全体において、特徴および利点の言及または類似する言語は、本発明を用いて実現され得る特徴および利点のすべてが本発明の任意の1つの実施形態内に存在するとは意味していない。むしろ、特徴および利点を言及する言語は、一実施形態に関連して説明した特定の特徴、利点または特性が本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の全体における特徴および利点の議論または同様の言
語は、必ずしも同一の実施形態を指すとは限らない。
さらに、説明される本発明の特徴、利点および特性は、1つ以上の実施形態において任意の適切な方法で組合わせることができる。当業者は、特定の実施形態において特定の特徴または利点のうちの1つ以上がなくても本発明を実施できることを認識するであろう。別の例として、特定の実施形態において認識され得る追加の特徴および利点は、本発明のすべての実施形態に存在しない可能性がある。
本発明の特徴および利点は、以下の説明および添付の特許請求の範囲からより明白になり、または以下に記載された本発明の実施によって知ることができる。
本発明の利点を容易に理解するため、上記で簡単に説明した本発明を、添付図面に図示されている特定の実施形態を参照してより具体的に説明する。なお、図面は、縮尺通りに描かれていない。図面は、単なる概略的な表現であり、本発明の特定のパラメータを描写する意図をしていない。したがって、これらの図面は、本発明の代表的な実施形態のみを示しており、その範囲を制限していないことを理解すべきである。添付図面を用いて本発明をさらに具体かつ詳細に説明する。
本発明の一実施形態に従う確率モジュール/プロセスのインスタンス用の処理要素の選択を示すフローチャートである。 本発明の一実施形態に従う所定の処理要素の検証を示すフローチャートである。 本発明の一実施形態に従う情報確率的処理システムを示す図である。 計算装置を用いて情報を確率的に処理する方法を示す図である。 計算装置を用いて情報を確率的に処理する方法を示す図である。 供給された情報を確率的に処理するように構成された確率的処理装置を示す図である。
発明を実施するための形態
本発明の原理をより理解するために、図面に示された例示的な実施形態を参照しながら、特定の用語を用いて説明する。理解すべきことは、本発明の範囲は、これらに限定されないことを意図していることである。関連する技術分野の当業者および本開示を手に入れる者が、本明細書に例示された本発明の特徴に対する任意の変更およびさらなる修飾ならびに本明細書に例示された本発明の原理に対するさらなる用途は、本発明の範囲内に包含されると考えるべきである。
本明細書に記載された機能ユニットの多くは、その実装の独立性をより具体的に強調するために、モジュールとして名付ける。たとえば、モジュールが、カスタムのVLSI回路またはゲートアレイを含むハードウェア回路、論理チップまたはトランジスタのような既製の半導体、または他の個別要素として実装されてもよい。モジュールが、現場でプログラム可能なゲートアレイ、プログラム可能な論理列、プログラム可能な論理装置などのプログラム可能なハードウェア装置に実装されてもよい。
本明細書に記載された任意の機能、特徴、利点、構造など、1つまたは複数のモジュールによって具現化されてもよい。本明細書に記載された機能ユニットの多くは、その実装の独立性をよりより具体的に強調するために、モジュールとして名付ける。たとえば、モジュールが、カスタムのVLSI回路またはゲートアレイを含むハードウェア回路、論理チップまたはトランジスタのような既製の半導体、または他の個別要素として実装されて
もよい。モジュールが、現場でプログラム可能なゲートアレイ、プログラム可能な論理列、プログラム可能な論理装置などのプログラム可能なハードウェア装置に実装されてもよい。
モジュールは、さまざまな種類のプロセッサによって実行されるために、ソフトウェアに実装されてもよい。プログラム可能または実行可能なコードからなる特定のモジュールは、たとえば、オブジェクト、プロシージャまたは関数として編成されたコンピュータ指令の物理または論理ブロックを1つ以上含んでもよい。それにもかかわらず、特定のモジュールの実行ファイルは、同一の物理箇所に配置される必要がなく、異なる場所に格納された個別の指令を含み、これらの指令が論理的に連結されると、モジュールを形成し、モジュールの上記目的を達成するようにしてもよい。
実際には、実行可能なコードからなるモジュールおよび/またはプログラムは、単一の指令または複数の指令であってもよく、異なるプログラム間のいくつかの異なるコードセグメントまたはいくつかのメモリ装置にわたって配布されもよい。同様に、動作データは、モジュール内で識別されてもよく示されてもよい。動作データは、任意適切な種類のデータ構造内で任意の適切な形態で具現化されてもよく編成されてもよい。動作データは、単一のデータセットとしてまとめられてもよく、または異なる記憶装置を含め、異なる場所にわたって配布されてもよく、または単に電子信号として少なくとも部分的にシステムまたはネットワーク上に存在してもよい。
本明細書に記載されたさまざまなシステム要素および/またはモジュールは、デジタルデータを処理するためのプロセッサを備えるホストサーバまたは他の計算システムと、プロセッサに連結され、デジタルデータを格納するためのメモリと、プロセッサに連結され、デジタルデータを入力するための入力デジタイザと、メモリに格納され、プロセッサによりアクセス可能であり、プロセッサにデジタルデータを処理するように指示するための応用プログラムと、プロセッサおよびメモリに接続され、プロセッサにより処理されたデジタルデータから導出された情報を表示するための表示装置と、複数のデータベースとのうち1つまたは複数を含む。当業者が理解するように、本明細書に記載されたコンピュータは、オペレーティングシステム(たとえば、Windows(登録商標)Vista,NT,95/98/2000,OS2、UNIX(登録商標)、Linux(登録商標)、Solaris(登録商標)、Mac OS(登録商標)など)、さまざまな通常のサポートソフトウェアおよびコンピュータ用の典型的関連ドライバを含むことができる。コンピュータは、ネットワークにアクセス可能な自宅またはビジネス環境にあってもよい。例示的な実施形態において、アクセスは、市販のウェブブラウザ・ソフトウェアパッケージを介してインターネットを経由するものである。
本明細書において、機能ブロック要素、スクリーンショット、ユーザとの相互作用、任意の選択、さまざまな処理ステップなどをもって本発明を説明してもよい。本明細書に記載されたものの各々は、本発明の例示的な実施形態における1つまたは複数のモジュールであってもよい。理解すべきことは、これらの機能ブロックは、指定の機能を実行するように構成された任意数のハードウェアおよび/またはソフトウェア要素によって実現することができるということである。たとえば、本発明は、1つ以上のマイクロプロセッサまたは他の制御装置に制御され、さまざまな機能を実行し得るさまざまな集積回路要素、たとえばメモリ要素、処理要素、論理要素、参照テーブルなどを使用することができる。同様に、本発明のソフトウェア要素は、C言語、C++言語、Java(登録商標)、COBOL、アセンブラ言語、PERL、ビジュアルベーシック、ストアドプロシージャ、AJAXおよび拡張マークアップ言語(XML)などの任意のプログラミング言語またはスクリプト言語により実装されてもよく、データ構造、オブジェクト、プロセス、ルーチンまたは他のプログラミング要素と任意に組合わせて実装されたさまざまなアルゴリズムに
より実装されてもよい。また、注意すべきは、本発明は、従来のデータ伝送、シグナル伝達、データ処理、ネットワーク制御等の技術を任意数で使用することができることである。さらに、本発明は、JavaScript(登録商標)、VBScriptなどのクライアント側のスクリプト言語に係るセキュリティ問題を検出または防止することができる。
また、本明細書における機能ユニットおよび/または機能モジュールの多くは、他の機能ユニットおよび/または機能モジュールと「通信する」と記載されている。「通信」とは、コンピュータ、ラップトップコンピュータ、PDA、モジュール、他の種類のハードウェアおよび/またはソフトウェアを含むがこれらに限定されない機能ユニットおよび/または機能モジュールが相互に通信し得る任意の方式および/または方法を指す。いくつかの非限定的な例として、通信は、ネットワーク、無線ネットワーク、ソフトウェア、指令、回路、電話回線、インターネット回線、衛星信号、電気信号、電磁場および/または電磁パルスなどを介して、データおよびメタデータを交信、送信および/または受信することを含む。
本明細書で使用される用語「ネットワーク」は、ハードウェアおよびソフトウェア要素の両方を組込む任意の電子通信手段を含んでもよい。本発明に従う関係者の間の通信は、任意の適切な通信チャネル、たとえば電話ネットワーク、エクストラネット、イントラネット、インターネット、相互作用装置の通信ポイント(販売装置、PDA、携帯電話、キオスクなどのポイント)、オンライン通信、オフライン通信、無線通信、トランスポンダ通信、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ネットワークにより接続されたまたはリンクされた装置などを介して達成してもよい。本発明は、TCP/IP通信プロトコルを介して実装することができるが、IPX、AppleTalk(登録商標)、IP−6、NetBIOS、OSI、または任意数の既存または将来のプロトコルを用いて実装してもよい。ネットワークがインターネットのような公衆ネットワークである場合、安全でなく、盗聴者に開放しているネットワークとみなすことがよい。インターネットとの接続に利用されるプロトコル、規格、およびアプリケーション・ソフトウェアに関連する特定の情報は、一般的に当業者に知られており、本明細書では詳述する必要はない。たとえば、参照によりその内容が本明細書に組込まれた異なる著者による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)を参照。
本明細書の全体を通して、「実施形態」、「実施例」または類似の用語に参照するとは、その実施形態に関連して説明された特定の特徴、構造、特性、またはこれらの組合わせが本発明の少なくとも一実施形態に含まれることを意味する。よって、本明細書の全体を通して現れる「実施形態」、「実施例」および類似の用語は、必ずしもすべてが同一の実施形態を参照するではなく、異なる実施形態または1つ以上の図面を参照してもよい。さらに、2つ以上の特徴、要素などを言及する「実施形態」、「実施例」の表現は、必ずしもこれらの特徴が関連されていることを意味するものではなく、異なってもまたは同一であってもよい。
実施形態または実施例の各陳述は、各実施形態を特徴付ける類似または同一の言語の使用にもかかわらず、実施形態の任意の他の陳述から独立していると考えられるべきである。したがって、1つの実施形態が「別の実施形態」として特定される場合、特定された実施例は、「別の実施形態」という言語により特徴付けられた任意の他の実施形態から独立している。本明細書に記載された特徴、機能などは、請求項および/または従来技術により直接的または間接的に若しくは暗示的または明示的に示され得るように、その全体またはその一部が互いに組合わせることができると考えるべきである。
本明細書において、「含む」、「備える」、「包含する」、「ある」、「特徴付けられる」およびその文法的同等物は、包括的または開放型の用語であり、記載されていない追加の要素または方法のステップを除外しない。「含む」は、より制限的用語「からなる」および「本質的にからなる」を包含すると解釈されるべきである。
代数を用いて微積分問題を解決することは、依然として困難である。これらの数学ツールは、動的問題対静的問題のような異なる種類の問題を対処するために設計されている。間違ったツールを用いて問題を解決すると、必然的に準最適なソリューションしか見つからない。現在、ハードウェアとソフトウェアの開発は、ソリューションを機能性の狭い範囲、通常は静的範囲に制限され、その結果、決定的の範囲に制限される。代数と同様に、これらの実装は、いくつかの問題を解決するために非常に好適なである。しかしながら、動的ソリューションを求めている問題を対処するときに、これらの実装は、依然として不適切である。動的ソリューションに注目する前に、一般には、まず、ソリューションを静的に制限する現行の数学を見直す必要がある。
不確定関数
「確実性」原理は、数学の分野で最も重要である。確実性とは、伝統数学により与えられた関数が、入力値(ドメイン値)を用いて一定の出力(範囲値)を機械的に計算することを意味する。今までは、計算の機械的性質により、一般に、このプロセスは、常に任意のドメイン値を与えると、決定的(範囲)値をもたらす。この決定的関数の現実は、数百年も続いている。
確実性の影響は、特に乱数発生の場合に、主な暗号欠陥として認識してもよい。多くの人は、関数計算の正常確実性を細分化するように、ある量の「エントロピー」(ノイズ)を与えることによって、確実性を低減する解決案を提案している。これらの解決案は主な改善を示すが、数学的確実性からまだ脱離できない。
代数の学生はすべて、等号の両側を神聖的に等しく保つことを教えられ、テストされ、それによって等級付けられ、昇進される。後続の各数学クラスも、その繰返しをし続けている。両側を等しく保つために、一般的に、方程式の右辺に対する操作と同様に、方程式の左辺を操作しなければならない。
関数を数世紀使用した末、決定的関数しか発見されなかった。したがって、決定的関数しか存在しないと思われている。この長い歴史と共通の数学訓練は、非決定的関数の存在可能性に対する認識を妨げている。ドメインと範囲との間に可能なマッピング関係が3つある、すなわち、一対一(従来関数用のドメイン−範囲マッピング)、多数対一(ハッシュ関数に見られるように、同一の範囲にマッピングする多数の異なるドメイン)、および現在欠けている一対多数のドメイン−範囲マッピング関係。
なぜ現在欠けている一対多数のドメイン−範囲マッピングが重要であるでしょうか? 伝統関数は決定的あるため、可逆であるが、この新種関数は、非決定的であるため、不可逆である。ドメイン値から確実性しか生成できない伝統関数とは異なり、この新種関数は、「不確定な」範囲値を提供する。したがって、我々は、この新種関数ファミリの各関数を不確定関数として名付ける。
なぜ不確定関数が逆算できない理由を実証する。我々は、多くの伝統関数のグラフ図を見てきた。これらの伝統的なグラフ図は、任意の範囲値がそのドメイン値に逆マッピングできることを証明している。対照的には、各不確定関数のドメイン値は、不確定関数のすべての範囲値にマッピングされる。1つのドメイン値のグラフ図を1つの垂直線にすると
、すべての有効ドメイン値のグラフ図の場合、不確定関数のグラフ図が完全に「黒」になる。この黒のグラフ図は、範囲値がドメイン値から独立していることを意味する。よって、任意の所定の範囲値を生成した独特のドメイン値を見つけることはできない。不確定関数は、不確実性数学の基礎である。この種の関数は、「不確実性」がデータから非決定的カオス行動へ拡張できるという考えを生み出す。これらのカオス行動は、独特になり得る動的なカスタムのソリューションを作成する手段を規定する。
なぜ代数、ドメイン−範囲の関係およびグラフ図を言及するの? 驚くべきことに、すべての現行のデジタル製品は、既に不確定関数を使用している。しかしながら、これらの製品の設計者は、誰もこの数学関係に気付いていない。この関数は、より一般的な用途によって、単純なRAM(ランダム・アクセス・メモリ)として知られている。ランダムデータを格納しているバッファー内のメモリセルからの読取りは、非決定的な値を生成する。各々の有効メモリアドレスは、可能な範囲値を格納できるメモリセルにマッピングされる。RAM(不確定関数)のグラフ図は黒であるため、メモリ(範囲)値が与えられても、メモリアドレス(ドメイン値)を予測することはできない。これは、確実性数学に対する重大な機能強化である。
不確定関数に使用されるメモリバッファーは、「不確定性プール」と呼ばれている。このプールからの各読取りは、不確定データと呼ばれる非決定的な値を生成する。不確定データは、その真の値が知られていない場合かつその場合に限り、「不確定」のままである。したがって、不確定データプールから値を切離す、すなわち、プールの内容を公開せず、不確定データプールから値を読取ることは、パラドックス問題となる。この問題は、データパラドックスを定める。
不確定関数が必要であるが、不確定関数だけでは、データパラドックスの対処にはまだ不十分でる。不確定関数に続く第1の機能的に完全な技術は、非決定的不確定乱数生成器(URNG)を作成することである。2つの追加のデータパラドックス技術は、不確定性プールの完全性を保護するために必要とされる。
データパラドックスに対する皮肉な解決案
不確定データの属性は、データパラドックスを生成するが、同様の属性は、皮肉な解決案、すなわち、プールから2つの不確定データ値をランダムに選択し、この2つの不確定データ値を加算することによって新たな不確定値を生成することを容易にする。複数の異なる親セットが同一の値をもたらすことができるため、この新たな値は、親値から「切離される」。したがって、「不確実性」の属性は、次世代の値に継承される。一般的に、第1世代の不確定データを明らかにしてはいけないが、第1世代の不確定データを処理して得られた次世代のデータを公開することができる。したがって、データパラドックスは、解決される。ランダムに選択された不確定値が大抵の2進以上の演算子を用いて処理される限り、その結果が非決定的である。よって、関数でデータを処理する代わりに、データでデータをモーフィングすることができる。よって、事実上、数学的確実性から脱離することができた。
次世代の不確定データから第1世代の不確定データを隠すまたは切離す処理は、切離しプロセスと呼ばれている。この文書の先の記載において、切離しプロセスの第1インスタンスは、不確定関数の範囲値に適用されている。不確定性プールの完全性を保護するタスクを完了するために、一般には、範囲値とともに、ドメイン値(メモリアドレス値)を切離さなければならない。
第1世代の不確定データが固定のサイズを有するが、その次世代のデータが任意のサイズを有し得る。比喩的に言えば、処理に対する投資に応じて、この「プール」は、不確実
性の湖、湾または海に拡張することができる。
一般的には、静的関数または静的プロセスは、常に決定的(予測可能な)挙動につながる。この挙動を克服するために、純粋な非決定的手段、すなわち不確定データを採用する。一般的には、内部(URNG)関数、プロセスおよびデータから確定的な挙動を浄化するために、この手段を活用しなければならない。この多重浄化の結果、不確定性のプールのサイズに限定されない非決定的乱数生成器を生成できる。具体的には、ランダム編集プロセスに含まれる不確定データを用いて、アドレスとデータの両方を切離す。
URNGのアウトライン
各URNGのアウトラインは、3つのステップを含む。原始かつ非決定の不確定性プールと、常識から外れた決定的擬似乱数生成器(PRNG)の集合との2つの初期要素を用いて、URNGをスタートさせる。これらの要素から、一般的に内部で使用する中間ツールを構築しなければならない。最初のツールは、不確実ストリームである。不確実ストリームは、好適なPRNGを不確定性プールから読取るアドレス発生器として適用することにより生成される。それによって、原始かつパラドックス上安全でない不確定値のランダムストリームが与えられる。
次の中間ツールは、不確実ストリームを利用する。他の独立したPRNGおよび不確実ストリームをランダム編集プロセスの入力として、不確定関数のドメイン値となる非決定的データプールのアドレスを取得する。これらの比較的に「浄化された」ドメイン値を使用すると、生成歴史のエコー証拠とならない不確定関数の範囲値が生成される。
最後のステップは、範囲値のデータパラドックスを解決する。「浄化された」ドメイン値から得られた2つの範囲値および1つの原始不確定値を用いて、範囲値の切離しを仕上げる。要約すると、不確定データの繰返し使用は、中間ツール内で発見された挙動の一部/大部分/すべてを洗い落す。これらの非決定的アドレスは、不確定関数のパラドックスかつ安全なドメイン値となっている。不確定関数からアドレス(ドメイン値)とデータ(範囲値)の両方を切離すことによって、非決定的乱数生成器の生成という基本目標が達成される。
正しく実装されたURNGは、伝統的なPRNGに比べて、大きな利点を有する。具体的には、クラッキングに対する抵抗力は、関数の複雑性から由来するではなく、不確定データの単純性から由来する。本質上「プライベート」の乱数発生器は、多くのアプリケーションを可能にするすべての新技術を支持する。
「ハードウェア選択器」または「マスク生成器」は、2つの入力値(data0,data1)からビットを取得して新たな値を生成する。「マスク」における各「0」ビットは、data0から各対応ビットを取得し、「マスク」における各「1」ビットは、data1から各対応ビットを取得する。「マスク」値によって指定された破壊的な編集値は、次のような結果を生成する。
result= (~mask & data0)|(mask & data1)
data0およびdata1が決定的であってもよいが、マスクが非決定的(原始の不確定データ)である場合、マスクが一般的に出力に見られない限り、その結果は非決定的(パラドックス上安全値)である。
マスクURNG
マスクURNGは、以下にある10行C言語プロシージャにより示される。このコード例(urng_value)は、上述した3つのステップを含むプロセスに相当する。「Cヘッダ」
セクションは、欠けた詳細を補足する。
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 ]);
};
カオス行動の紹介
不確定データは、URNG内において、ランダムデータ、シード値、マスク値、関数選択器、さらに指令などの多重役割を果たしている。一見では些細な発想が大きな影響を引起す。不確実性の原理によると、多くのプログラミング決定が実行まで出さず、実行中にプログラミング決定がランダムデータに駆動される。ランダム性は、プログラムの実行中に果たしている役割がますます重要になり、アプリケーションに与えた全体的な影響がアプリケーションをより非決定的にさせることである。
データパラドックスを解決する関数の集合が与えられると、ランダムデータを用いて、実行される関数を選択する。ランダムデータが指令(すなわち、関数選択器)として使用される場合、リストを埋めるように、関数の群を選択してもよい。その結果は、異なる関数の間の動的スイッチとなる。このように、実行される可能な関数の動的生成は、カオスエンジンになる。注意すべきことは、リスト内の関数は、いつでも置換されることができ、またはリストの全体は、実行中にランダムデータから動的に再作成されることができることである。このリストの再構成は、ランダムな間隔で定期的に行う必要がある。
すべてのランダム編集プロセスと同様に、指令と編集ストリームの両方の値は、不確定
性プール(すなわち、独立した不確実ストリーム)から得られるが、いずれも出力ストリームに見られない。ここでは、簡単な16指令のカオスエンジン(下記参照)の例を示す。カオスエンジンのインスタンスにおいて、各「指令」は、data0とdata1とマスク値との3つオペランドを含む。これらの値は、「結果」(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
指令の可能なセットは、16よりもはるかに大きく、不確定データは、リスト(リスト内の指令順序および使用される指令)を作成するために使用されたということが理解できる。これらの非決定的カオス行動の全面的な実装は、数百万のURNG用の独特のデータ駆動型指令を生成した。このように、不確定データの非決定的な性質は、非決定的なカオス行動に変換される。URNGにおけるこのカオスソフトウェアは、データでデータをモーフィングする別例になる。
カオスエンジンの根本原理として、任意の関数は、任意数の共通パラメータの下で、呼出すことができる。任意数の再現できる確率システムを作成するために、データ駆動型カオスソフトウェアを使用してもよい。不確定性プールからの独特のランダムデータを用いて、カオスエンジンまたは他の例としてURNGをカスタマイズすることが可能である。カオスソフトウェアの一般的な応用は、「確率的処理」セクションで説明する。
簡単なシミュレーションは、実装パラメータの正しい選択を導くことができる。このマスクURNGにおいて、不確実マスク値から得られた破壊的な編集値のみは、切離しプロセスに使用される。この低コストのURNGは、機能するが、小さな不確定性プールに使用できないことがある。より好適なソリューションは、カオスエンジンから生成できる。カオスURNGは、適度なサイズの不確定性プールから大量のランダムデータを提供することができる。
カオスURNG
カオスURNGは、以下の短いC言語プロシージャによって示される。「Cヘッダ」セクションは、欠けた詳細を補足する。
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);
};
現在、既知の関数駆動型RNGは、わずか数千個しかない。関数駆動型RNGからデータ駆動型RNGに切替えると、国立標準技術研究所NIST(800−22)のランダム性検定パッケージに合格できる独特のRNGが数兆個使用することができる。8/10スコアを有すれば、NIST検定に合格することができる。これまでに、10/10データプールを有する各URNGは、ほぼすべて10/10スコアを受けている。
Figure 0006616471
不確定関数のアドレス指定能力は、不確定性プールを影響せず、プールのアドレスを制御できるということを意味する。したがって、多くの異なるアドレス指定モデルは、同一のプールに適用することができる。
現在、1回のデータ交換は、共通URNG実装によって、任意のまたはすべての暗号鍵を置換する可能性がある。データ交換は、乱数発生器を効果的に交換することができる。したがって、独特のオンデマンド鍵の生成は、以前に鍵の交換を必要としたすべてのプロセスを置換する。データを交換する方法は、メディアの物理的交換から任意形式の無線転送まで、無制限に存在する。どのような手段でも、同一のデータを所持している各関係者は、同時に同一のランダムストリームを作成する手段も所持している。
任意のアクティブ接続、インフラ、または追加の認証を必要としない分散した同様の乱数発生器の使用は、多くのプロトコルを高度に簡素化することができる。さらに、これらを確率的処理に適用すると、カスタムアプリケーション/ソリューションを効果的に交換することができる。
単独の不揮発性記憶を有するURNG実装では、1回目のランダムデータの読込みは、効果的なハードウェアのカプセル化を提供する。この恒久的に保護された実装は、任意数のアプリケーションに使用されるランダムなストリームを提供することができる。
128KBのメモリバッファーは、21048576個の独特の値を保持し、10300,000個の値をはるかに超える。これらの値は、すべて統計的検証プロセスに合格できる程の十分なランダム性を有しないが、そのうちの多数は、合格できる。技術の実装は頻繁に行われるが、好適なランダムデータは「永遠」に維持される。プールデータが秘密になっている限り、任意の適切に実装されたURNGは、ランダム出力ストリームを分析することによってクラックされる可能性が低い。乱数発生器は、複雑な実装よりも、もっぱらデータに基づいてクラッキングに抵抗する。
そろそろ・・・すべく時間
不確定関数に適用されたドメイン値は、不確定性プールに指定されたファイングレイン(Fine Grain)を表し、タイムスタンプは、異なる不確定値ストリームの間により大きな不連続の跳躍を表す。人間は、イベントのヒューマンスケールに対する時間を考える傾向がある。人間が普通に扱うよりもはるかに短いたとえばマイクロ秒の時間間隔、またははるかに長いたとえば数千年の時間間隔は、人間にとって重要性が低い。人間の知覚限界にもかかわらず、時間は、不確定技術において重要である。時間の性質は、多くの用途において利用されている。不確実性の原理の観点から時間の役割を理解できるように、時間の性質を検討することは有用である。一般的に、タイムスタンプは常に、あるゼロポイントに対してスカラー値を意味する。アナログ/ハードウェアクロックは、ある種類の「拍子数」を提示する。ソフトウェアにおいて、一般的に、タイムスタンプの増分は、米国特許5526515に記載されたように、常に現実世界の「拍子数」にマッピングしない場合がある。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。タイムスタンプ間の差は、任意の値に計算することができる。一般的に、時間の基本モデルは、常に「単調に」増加する。
(多くのデジタルプロトコルに見られるような)増加する連続番号は、タイムスタンプを表す共通形式である。しかしながら、この形式は、通常は認識されない。これらの連続値は、現実世界の時間にマッピングしないが、進んでいる時間を合法的に測定することができる。これは、不確実技術に利用された1つの時間形式を表す。
メモリのアドレス指定は、タイムスタンプをアドレス指定計算に混入することによって更新することができる。それによって、この基底の不確定関数は、時間駆動型関数に書直される。時間が不連続の跳躍をもちながら単調に増加し続けると、同一の時間に基づく乱数ストリームは、他の値の時間に現れることがない。
進んでいる時間とソースファイルを組合わせることにより、URNGの各インスタンス用の独特のランダム配列が生成される。よって、ランダム配列は、同一のソースファイルの継続的タッピングに対して完全に「カオス」に維持される。独特の不確定性プールの連続作成は、ランダム配列に対する形式上の分析をブロックするおよび/または阻止する。
不確定時間モデルは、任意のタイムスタンプをURNGシード値に再現できるように転換するために使用される。開放型アーキテクチャ構想として、可能な時間モデルは、数多く存在する。タイムスタンプは、より熟知されている時間度量衡体系にマッピングされてもよくされなくてもよい。これらの時間モデルは、ソースファイルの一部になる。ソースファイルが作成されるたびに、不確定時間モデルも不確実乱数から作成される。時間において、不確実なゼロポイントが選択される。一般的に、任意の入力タイムスタンプは、時間において不確実なゼロポイントからの「不可知」のオフセット(差分)を表す。時間のゼロポイントとタイムスタンプとの差は、(任意の)単位、たとえば日、時、分、秒、ミリ秒などによって表すことができる。時間モデルにおいて、支持されている各時間単位に対し、不確定な倍率を選択する。次に、サポートされる各時間単位をスケーリングするこ
とによって、必要とされるURNGシード値を計算し、その後、それらを合計してシードになる値を得る。このように、不確定時間モデルを介して、公開のタイムスタンプを用いてプライベートシード値を規定することができる。このように、(ソースファイル内にある)同一の時間モデルを共有するものは、同一の乱数ストリームを作成することもできる。これらのシード値は、データ合同数生成器(後述)で発見される値になる不確定性プールに挿入する2つの開始インデックスを表す。この最初のアドレス指定関数を介して、他のすべての初期値は、不確定性のプールから読込まれる。たとえば、
Seed0 = (delta_days * dayscale) + (delta_milliseconds * millisecondscale);
Seed1 = (delta_hours * hourscale) + (delta_minutes * minutescale) + (delta_sec *secondscale);
確率的処理
動的アプリケーションは、多くのソリューションを簡素化する。確率的処理の方法論は、動的ハードウェアまたはソフトウェアアプリケーションを作成するための開放型のアーキテクチャ手段を与える。多くの場合、これらの動的実装の配置は、多くの現行(好ましい)ソリューションを再定義する。動的アプリケーションしか効果的に解決できない追加クラスの問題が存在している。動的デジタルプロトコルに係る例示的な実施形態は、動的アプリケーションを必要とするクラスの問題を対処する。
現行のソフトウェア開発は、汎用的なモデルに定着している。このようなモデルにおいて、手作りのコードユニットは、何らかの形で組立てられ、アプリケーションを作成する。ランダム性は、その後のソフトウェア開発に有効に利用されていない。ランダム性技術の現行配置は、欠点があり、ランダム性の真の強みが利用されていない。ランダム性の現行アプリケーションは、主に、ゲーム(賭博)、ビデオ/コンピュータゲーム、およびシミュレーションにおける繰返し挙動を減少させることに限定されている。
ランダム性のより頑固なアプリケーションは、更新を動的に作成することによって、実行中にアプリケーションを増強をすることができる。更新の動的実行は、母体のアプリケーションを独特になり得るカスタムアプリケーションに変形させる。このランダム性のより包括的な展開は、確率的処理と呼ばれている。
設計時間−実行中バインディング
ソフトウェアオブジェクトパラダイムにおいて、クラス間のバインディング(接続作り)は、実行時の前に完了されている。プログラマの生産性を向上させるために、ツールセットを用いてこのような静的バインディングタスクを完了させる。静的バインディングは、接続の個数が限られているため、その欠点が明らかである。確率的処理は、設計時ではなく実行中において、より多くの利用可能な接続を形成する。
名前で暗示しているように、確率的処理は、ランダム処理に関する。最新の現行アプリケーションに使用されたランダム技術は、サイコロ(確率関数)または「ワイルドカード」値(一定範囲内の任意値)のよう数の少ない一般的なタスクに限られている。確率的処理の原理は、新たな処理をより広い範囲において応用することを可能にする。適切に使用すれば、これらの原理は、多くの以前に未解決の技術的問題を解決することができる。本明細書に挙げられた例は、構想を教えるためであり、確率的処理のサンプル値を提示するだけである。これらの発想を理解するのは簡単であるが、読者は、自分のアプリケーションでこれらの発想をどのように上手く使用する方法を考慮(または再考慮)する必要がある。ハードウェア設計者およびソフトウェア開発者は、これらの要素を理解するようになると、彼らは、この新技術の改革的性質に驚かれるであろう。
効果的な確率的処理の場合、各決定は、設計段階から実行段階に移行することができ、不確実性を増加させる。わずかの費用で、いくつかの機能パラメータをデータ駆動型に変
形することができ、実装のアルゴリズム複雑性を増加させる。同一のデータ駆動型構造において、処理要素の選択および構成は、アルゴリズムの全体複雑性を「爆発的」に増加させることができる。処理要素のオンデマンドリミックスおよび/または機能パラメータの再定義は、不確実性をさらに増加させる。最終的には、単一のソリューションに限定されていた設計は、現在、非決定的になる可能性の高い動的カスタムソリューションを作成する結果になる。
不確実性の原理
不確実性の原理は、動的ハードウェア/ソフトウェアのカスタム実装を生成する数学、コンピュータ科学、電気工学などの発想の独特な集合を表している。自然「ノイズ」のサンプリングを除いて、乱数生成プロセスは、強固的に機能する完全なソリューションを有しなかった。計算の機械的性質を考えると、従来の「関数駆動型」ソリューションは、乱数を有効的に表現することはできない。関数駆動型ソリューションは、致命的な欠点を有するが、データ駆動型ソリューションは、ランダム性を実用的に表現することができる。「不可知」データは、共通の実装を独特のランダムストリームに変換する。
従来の常識は、ハードウェア/ソフトウェアソリューションが開発中に静的に決められると考えているので、これらの従来のソリューションは、必然的に、「フリーサイズ」という考え方につながる。さらに悪いことに、これらの実装は、所定の問題に対し、単一のソリューションを与えることに制限されている。単独のソリューションからの影響としては、これらの実装がしばしば確定になる。決定的挙動は、ランダム性とは正反対である。この欠点のある(決定的)挙動は、静的ソリューションではなく動的ソリューションによって上手く解決される多くのアプリケーションに遍在する。
現在、ソフトウェア(およびハードウェア)アプリケーションは、「連結された」要素の集成として定義されてもよい。要素のセットを制限して単一のソリューションを作成する代わりに、多くのソリューションを作成できるように、「機能的に同等な」要素のプールを拡大する。次に、実行中に、ランダムデータを用いて、アプリケーションのインスタンスを作成するために使用される要素のセットを選択する。このように、ランダムデータにより駆動される一般的な実装から、非決定的である不確実なカスタムソリューションを作成することができる。
不確定乱数生成器(URNG)は、ハードウェアの動的ソリューションであり、ソフトウェアの動的ソリューションでもある。現行のURNG実装には、100以上の要素が、実行中に必要に応じて連結(およびリミックス)され、非決定的乱数生成器を作成する。さらに好適なことに、各URNGがデータ駆動型ソリューションであるため、各URNGの使用は、動的に作成された不確実性のプールに駆動されることができる。不確実性のプールは、一度使用してから廃棄してもよい。この程度のランダム性があれば、これらのURNGを、将来の動的アプリケーションを駆動する手段にしてもよい。
「機能的同等性」は、もっぱらアプリケーション要件に基づく
確率的処理方法論において、「機能的に同等」は、オブジェクトパラダイムに見られる典型的なケースよりもはるかに敏感である。典型的には、ソフトウェアパラダイムは、生産性を向上させるために、実装の多くの副作用を無視するように、開発者を誘導する。場合によっては、これらの副作用は重要であり、無視されると、開発者の目標を損なうことになる。
例として、乱数発生器を言及する。乱数発生器は、何千個もあり、多くが同様の性質を有する。これらの発生器のうち多くは、比較的高速であるが暗号上安全でない。そのうちの数個は、安全であるが遅い。安全な発生器と不安全な発生器との間に分類する場合、各
カテゴリ内の発生器は、概ね同等であるか? 答えは、否定的である。同一の不安全な発生器から複数の乱数を取得した場合、取得された乱数は、1つの値から次の値を予測できる程度に相関している。したがって、これらの乱数は、「ランダム」ではない。安全な発生器からの乱数は、それほど相関していないが、処理速度が遅く、殆ど共有できない。
現行の不安全な乱数発生器は、機能的に同等であると仮定されている。1つの発生器は、単一の乱数ストリームを有するため、乱数を生成するには効果的ではない。これらの不安全な乱数発生器の唯一の機能的同等性は、それらの欠点である。よって、アプリケーションのランダム性需要は、依然として残っている。一般的には、機能的同等性の定義する際に、注意しなければならない。機能的同等性を正しく定義できないと、既存の不安全な乱数発生器と同様に、アプリケーションの設計に欠点を生じさせることになり得る。
確率的処理の新たな方法論を説明するために、現行の乱数発生器に関するいくつかの背景情報は、必要である。任意に指定された「機能的に同等する」処理要素は、有用である独特な副作用を有する可能性がある。最初の教示例において、複数の共通の(欠点がある)乱数発生器は、ソフトウェアライブラリに見られる唯一のデフォルト生成器を置換するために使用される。追加の教示例は、機能的に同等する処理要素をより詳しく示す。
確率的「足場ポイント」
最初の教示例は、メモリアドレスを作成するために、異なる「乱数発生器」に7つの呼出しを与える。伝統的なPRNGが機能的に同等であるため、良好なランダムメモリアドレスを提供する任意の方法は、これらのPRNGを置換することができる。「単一ストリーム」のPRNGの基本的な欠点を克服するために、現行の各呼出しは、異なるPRNGにルーティングされる。よって、PRNGの各々は、異なるランダム配列から値を返答し、同一の配列から7つの連続値を返答するよりもはるかに優れている。複数のPRNGというソリューションは、大きな改善とも言えるが、すべての他の動的アプリケーションに対する最善のソリューションは、URNGを使用して、非相関かつ非決定的な値を提供することである。
上記のソリューションのうちいずれかの配置が失敗すれば、悪い結果を生じる。伝統的なPRNGを適用して処理要素を選択することは、発生器などと同様な欠点に直面し、決定的選択肢しか生成できない。代わりに、処理要素を選択するために、不確定関数または不確実性URNGを使用すれば、非決定的選択肢を生成する。機能的に同等な処理要素を受入れることができるハードウェアまたはソフトウェアアプリケーション内の任意点は、確率的「足場ポイント」と呼ばれる。
処理要素の集合の抽象的概念
アプリケーション固有の処理要素の集合は、多くの選択肢を提供するために作成される。処理要素の集合を規定するとき、一般的には、集合のサイズを決め、各要素の必要な「品質」を決めなければならない。多くの場合、選択できる処理要素が無制限に存在する可能性があるが、大部分のアプリケーションは、正常に配置できる回数を複数もつ集合を必要とする。明らかに、一部のアプリケーションは、独自のカスタム集合を用いて共通の選択肢を置換するだろう。
「処理要素の集合」という用語は、異なる方法で実装できる抽象的概念である。たとえば、ハードウェアにおいて、LFSR(リニアフィードバックシフトレジスタ−伝統的ハードウェアランダムビット値生成器)は、シードされ、ランダムビットストリームを作成する。しかしながら、プログラム可能なLFSRを使用する場合、多くの異なるランダムビットストリームを生成するように再構成されることができる。このように、プログラム可能なLFSRの構成オプションは、可能な集合を決め、それによって選択肢を提供する
。これらの設定オプションは、仮想集合を作成する。
同様に、仮想集合という発想は、オプションによってソフトウェアに適用することができる。たとえば、任意の不確定パラメータのセットは、URNGのランダム編集プロセスのオペランドをさらに処理するように規定することができる。この場合には、オペランドの前処理は、(ビットカウントで)ビット単位左/右回転、ビット単位NOT、逆ビット順などを含むことができる。同一配列のオプションを結果に適用してもよい。これらの不確実なパラメータ(オプション)の展開は、通常サイズの集合を巨大な仮想集合に急増させる。
各処理要素の品質も、アプリケーション固有の設計の選択になる。URNGの場合、最初の特許は、安価でも決定的PRNGの使用に関わる。不確定関数ドメイン値を作成するためのより好適な品質の置換は、(後で説明される)データ合同数生成器で見つけることができる。ここでは、共通のPRNGを想定した有効な教示例で続行する。
処理要素の集合の作成の目的は、実行時間の選択を容易にすることであった。ここでは、ランダムデータを用いて、使用する要素を選択する。図1は、選択処理を示すフローチャートである。選択が必要とされる箇所に注意せよ。
図1は、本発明の一実施形態に従う確率モジュール/プロセスのインスタンス用の処理要素の選択を示すフローチャート(100)である。処理の初期条件は、「Done=0」(110)、すなわち未完了に設定されている。続いて、「Done」までのループ(120)は、PE_tableから可能な処理要素を選択するために使用される不確定値「X」を取得する(130)。この可能な処理要素は、使用中であるか否か(140)が検証される(図2参照)。処理要素が「使用中」である場合、ループ(120)は、次の不確定値の取得に戻る。一方、処理要素が「未使用」である場合、「空き」(使用可能な)エントリであるか否か検証が行われる(150)。処理要素は、この空きエントリに割当てられ(160)、ループは、再スタートする。最後のエントリが埋められた場合、終了条件「Done=1」に設定され、ループは、再スタートする。「Done」がYESの場合、処理要素を選択する実施
形態は、終了する。
図2は、指定の処理要素が「使用中」であるか否か(200)を検証する実施形態を示すフローチャートである。初期条件は、「Found=0」(210)、すなわち未発見に設定
されている。(for)ループは、最初のインデックスから始まり、テーブル全体をインデ
ックスするまで繰返し(220)、その後、ループは終了し、「Found」状態をリターン
する(250)。インデックスされたテーブルエントリは、指定要素230に対して検証される。「Found」の場合、「Found=1」(240)に設定され、(for)ループは、続行
する。
図3は、本発明の一実施形態に従う情報確率的処理システムを示す図である。図示のアーキテクトモジュールは、データプールモジュールと、データ処理モジュールセットと、データ供給モジュールと、構造化メモリモジュールとの各々に連結されている。図示のデータプールモジュールは、共通のデータプール処理モジュールおよび通信プロトコルインタフェースの各々に連結されている。図示のシステムは、情報ストリームを変換する方法で、情報ストリーム(TCP/IPパケット、電話データ、無線通信データ、プライベートプロトコル通信、メディアファイル、データファイル、データベースなど)を処理するように利用される。一般に、この処理は、情報ストリームのハッキングを防止するために行われる。したがって、このシステムは、プライバシーの強化、通信の検証、所有権/通信源の確認など、およびこれらの組合せのために使用することができる。
図示のアーキテクトモジュールは、データの確率的処理を管理かつ制御するように構成され、プロセッサを含むことができ、および/またはプロセッサ、プロセッサモジュール/プロセス装置/システムなどに関連付けることができる。このアーキテクトモジュールは、同様の目的を達成するために、1つまたは複数のスクリプトを含んでもよい。これらのスクリプトは、システムの特定のアプリケーションに置換されてもよくおよび/またはシステムの特定のアプリケーションに関連付けられてもよい。非限定的な例として、スクリプトは、デジタル署名および/または証明を生成するために、最適な機能を提供するように構成されてもよい。アーキテクトモジュールは、他のモジュール、特にデータ処理モジュールを受入れるように動作し得る複数の足場ポイントを含んでもよい。これらの足場ポイントは、予め指定されてもよく、および/または実行中に生成されてもよい。これらの足場ポイントは、互いに相互作用してもよく、各ポイント用のデータソースであってもよい。したがって、データ処理の複雑性は、予め定められててもよく、および/または実行中に生成されてもよい。アーキテクチャモジュールは、足場ポイントの制限に関する指令を含んでもよい。足場ポイントに対する制限は、最大/最小レベル、ポイント、接続、ソース、データ処理要素の冗長性など、およびこれらの組合わせを含むが、これらに限定されない。図示のアーキテクトモジュールは、実行中に、乱数を用いて複数の機能的に同等なデータ処理モジュールからデータ処理モジュールを選択することができる。このアーキテクトモジュールは、実行中に、乱数を用いて、1つまたは複数の機能的に同等なデータ処理モジュールを使用するための実行時間を選択することができる。実行時間は、実際の時間、クロックサイクル、処理されたデータチャンク、データ処理モジュールのサイクルを繰返すことによって行われたサイクルの回数またはサイクルの一部の数など、およびそれらの組合せであってもよい。アーキテクトモジュール制御の非限定的な例は、Wolfらに付与された米国特許第5,430,836号に記載された制御モジュールまたはSwanらに付与された米国特許第6,243,635に記載された制御モジュールであってもよい。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。アーキテクトモジュールは、プロセッサ、状態マシン、スクリプト、決定木などを含むが、これらに限定されない。
図示のアーキテクトモジュールは、実行中に処理アーキテクチャをランダムに変更するように構成される実行時間修正モジュールを含む。この実行時間修正モジュールは、非決定的データプールモジュールからシードされることができる。それによって、PRNGソースにおける足場のランダム性特性を向上させる。この実行時間修正モジュールは、足場ポイントの数に対する変更、足場ポイントの間の相互接続に対する変更、足場ポイントとともに使用されるデータ処理モジュールに対する変更、および/または変更の間の時間間隔に対する変更を行うための指令を含む。このような実行時間修正モジュールは、データ処理タスクを通じて進行状況を追跡してよく、それによって処理されているデータストリームの内容(処理するデータの残り量または残り時間、繰返しストリングの存在、関係者の間の通信サイクルの数など、およびそれらの組合わせ)に関連付けられた情報を受信し且つそれに従って行動してもよく、またはそのような情報の変化に応じて実行中に実行時間修正モジュールの動作を変更してもよい。実行時間修正モジュールの非限定的な例は、小坂らに付与された米国特許第6,898,788号に記載された修正システムまたはNielsenにより出願された米国特許出願公開第2004/0205567号に記載された修
正モジュールであってもよい。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
図示の非決定的データプールモジュールは、アーキテクトモジュールおよび/または関連するモジュールによりアクセスできるように、アーキテクトモジュールに機能的に連結されている。図示の非決定的データプールモジュールは、理想的には伝統関数(非決定的関数)に由来していない非決定的な値のストリームを提供するように構成される。そのようなプールの非限定的な一例において、非決定的データプールモジュールは、URNGシ
ステムの1つ以上の構成要素を含む。そのようなプールは、特定の所望の用途に適合するような大きさにされてもよく、および/または同一または類似の方法で使用され得るより大きなまたはより小さなプールを作成するように使用されてもよい。非決定的データプールの非限定的な例は、Rossにより出願された米国特許公開公報第2010/00036900号および米国特許公開公報第2011/0029588号に記載された不確定乱数発生器であってもよい。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
図示された複数の機能的に同等なデータ処理モジュールは、アーキテクトモジュールに機能的に連結されている。特に、各機能的に同等なデータ処理モジュールは、アーキテクトモジュールによって呼出されるときに、データを確率的に処理するように構成されている。一般的に、このようなデータ処理モジュールは、乱数ストリームと関連して使用される所定の操作を含む。非限定的な例として、このようなデータ処理モジュールは、乱数ストリームからの乱数をビット単位または「チャンク」単位で情報/データストリームの値に追加して、それによって変換されたデータ値を形成してもよく、または呼出されたときにこの操作を繰返してもよい。したがって、このようなモジュールは、一般に、PRNG、URNGなどを含むがこれらに限定されない乱数生成ツールへのアクセスを必要とする。最大復号可能な保護が必要とされる場合、一般にURNGをソースとして選択する。その理由は、URNGは、非決定的(一方向)であり、使用されたプールのコピーをもつ人にとって可逆的であるように動作するからである。データ処理モジュールの非限定的な例としては、Learmonthにより出願された米国特許公開公報第2010/0318851号
に記載されたデータ処理システムまたはBulusuらにより出願された米国特許公開公報第2009/0259862号に記載されたデータ処理モジュールが挙げられる。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
図示のデータ供給モジュールは、アーキテクトモジュールと機能的に通信し、確率的に処理されるべきのデータセットを供給するように構成されている。このようなモジュールは、データの管理、アクセスおよび制御する、さもなければシステムにデータを提供するように構成される指令および/またはハードウェアを含む。システムは、データを変換するためのインタフェースツールを含んでいてもよい。インタフェースツールは、たとえば、データをアナログ形式からデジタル形式に変換するまたは1つのポルトコルから別のプロトコルに変換することによって、ソースデータをシステムにとってより使用可能な形式に変換する。システムは、データを送信/受信するおよび/またはデータを格納することができる。データ供給モジュールの非限定的な例としては、Johnsonらに付与された米国
特許番号第5,957,714号に記載された送込みモジュールまたはBassettらにより
出願された米国特許公開公報第2010/0241417号に記載の供給モジュールが挙げられる。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
図示の構造化メモリモジュールは、アーキテクトモジュールに連結され、アーキテクトモジュールが所定の処理アーキテクチャを複製しおよび/または利用されている処理アーキテクチャを記録し、よってこの処理アーキテクチャが後で同一システムおよび/または類似/付属システムに使用されるように、十分な情報を提供するように構成されている。メモリ記憶装置が、構造化メモリモジュールの一部として含まれてもよく、構造化メモリモジュールに機能的に連結されてもよい。図示の構造化メモリモジュールは、時間構造に応じて構造にインデックスを付けるインデックスモジュールを含む。これによって、さまざまな種類のタイムスタンプを、URNGをシードするためのキーとして使用できるため、特に有利である。このようなタイムスタンプは、一般的に利用可能、短く、作成および/または転送するのに安価であり、関連するシステムが同一のデータプールを用いてデータを逆変換することを可能にする。このようなタイムスタンプは、実際の時間、クロックサイクル、処理されるデータチャンク、データ処理モジュールのサイクルを繰返すことによって行われたサイクルの回数またはサイクルの一部の数など、およびそれらの組合せで
あってもよい。メモリ記憶装置の非限定的な例は、ヒューレット・パッカード社(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らに付与された米国特許第
5,573,244号に記載されたシステムまたはPoundらに付与された米国特許第5,
517,556号に記載されたシステムが挙げられる。
図示の通信プロトコルインタフェースは、データ供給モジュールと通信し、データ供給モジュールに通信プロトコルマップを供給し、アーキテクトモジュールから確率的に処理された通信プロトコルマップを受信し、および/または確率的に処理された通信プロトコルマップに従って情報ストリームを変更するように構成されている。このような通信プロトコルインタフェースは、特別に定義されたデータプロトコルの一定の最低基準を満たすデータに依存する他の装置/システムが情報を拒否するまたは使用できないまたは「表示」できないように、さもなければ情報を使用できないことを決定するように、この情報のストリームを「中断する」するように動作することができる。非限定的な例として、一部のプロトコルは、パリティチェックに合格できない情報パケットを拒否する。通信プロトコルインタフェースは、変換を復元すべきではない人に拒否されるように、情報ストリームの一部またはすべてのパケットがパリティチェックに合格しないように十分に変換されるように動作してもよい。このようなパケットは、盗聴者にとって、単純な不良パケットである。非限定的な通信プロトコルインタフェースの例として、Linらにより出願された
米国特許出願公開第2010/0277104号に記載された回路またはWongらに付与された米国特許第7058075号に記載されインターフェースが挙げられる。上記の文献は、支持的な教示を含むため、本明細書に組込まれる。
本発明の一実施形態によれば、計算装置を用いた情報確率的処理システム10が提供される。システム10は、プロセッサ14を備えるアーキテクトモジュール12を含む。アーキテクトモジュール12は、データの確率的処理を管理かつ制御するように構成される。アーキテクトモジュール2は、実行中に確率アーキテクチャをランダムに変更するように構成された実行時間修正モジュール16を含む。
システム10は、アーキテクトモジュール12に機能的に連結され、関数から導出されていない非確定値のストリームを提供するように構成される非決定的データプールモジュール18を含む。実行時間修正モジュール16は、非決定的データプールモジュール18からシードされる。非決定的データプールモジュール18は、URNGシステム20を含む。システム10は、アーキテクトモジュール12に機能的に連結されている複数の機能的に同等なデータ処理モジュール22を含む。複数の機能的に同等なデータ処理モジュー
ルの各々は、アーキテクトモジュール12に呼出されるときに、データを確率的に処理するように構成されてもよい。アーキテクトモジュール12は、実行中に、乱数を用いて複数の機能的に同等なデータ処理モジュール22からデータ処理モジュールを選択するように構成されてもよい。アーキテクトモジュール12は、実行中に、乱数を用いて機能的に同等なデータ処理モジュール22のうち1つを使用するための実行時間を選択するように構成されてもよい。
システム10は、アーキテクトモジュール12と機能的に通信しており、確率的に処理されるべきのデータセットを供給するように構成されたデータ供給モジュール24を含んでもよい。システム10は、メモリ記憶装置28を備える構造化メモリモジュール26を含む。構造化メモリモジュール26は、アーキテクトモジュール12に連結されており、所定の処理アーキテクチャを複製しかつ利用した処理アーキテクチャを記録するように、アーキテクトモジュール12に十分な情報を提供するように構成されている。構造化メモリモジュール26は、時間構造に応じて構造にインデックスを付けるインデックスモジュール30を含む。
システム10は、非決定的データプールモジュール18に機能的に連結され、共通データプールを確率的に処理することによって非決定的データプールモジュールに利用されるアプリケーション固有の非決定的データプールを生成するように構成される共通データプール処理モジュール34を含む。システム10は、データ供給モジュールと通信しており、データ供給モジュールに通信プロトコルマップを供給し、アーキテクトモジュールから確率的に処理された通信プロトコルマップを受信し、および確率的に処理された通信プロトコルマップに従って情報ストリームを変更するように構成された通信プロトコルインタフェース32を含む。
図4および5は、計算装置を用いて情報を確率的に処理する方法を示す図である。図示のステップは、処理に関する情報を十分にもっている人間がデータ変換を逆算し、それによってデータへのアクセスを許可するとともに、データを一方向的に変換するようにデータ/情報ストリームに対する処理を許可する。データ変換が一方向的に行われたため、変換されたデータにアクセスできる盗聴者および他の人間は、データを簡単にハッキングすることができない。さらに、プロセスは、変換操作中に変更を許容するため、非決定的な値の単一プールは、プールの利用価値を実質的に下げすることなく、ほぼ無限に利用することができる。要約すると、非決定的データプールは、情報ストリーム上で動作するランダムに選択されたデータ変換処理の足場をシードするとともに、データ変換処理に関する十分な情報を記録し、よってこの情報が方法を利用する他のユーザがデータ変換を取消することができ、極めて強力的かつ操作上安価なプライバシー、セキュリティ、認証および他の利点を提供する。図示されたステップは、以下で個別に説明される。図示されたステップの順序は、必ずしも方法の操作に利用される唯一の順序ではないことを理解されたい。さらに、すべてのステップは、方法のさまざまな用途に必要されるではない。
非決定的であることが検証されかつ関数から導出されていない非決定的データプールを提供するステップは、方法を弱点および決定的PRNGの脆弱性に曝すことなく、環境的ランダム性ソースによって提供されていない可逆性を許可するように、方法に用いられる変動基盤を与える。本明細書に記載されたように、このようなプールは、URNGとして形成されてもよい。このようなプールは、記憶されたデータプール、データストリーム、またはその変形などとして提供されてもよい。
処理される情報ストリームを提供するステップは、方法を情報ストリームに従って動作することを可能にする。情報ストリームは、方法を操作し得るシステム/装置に使用可能な形式で情報を提供する任意種類の通信ツール/モジュールを介して提供される。情報は
、(無線、インターネット、イントラネット、バスなどの)通信ネットワークを介してストリームとして提供されてもよく、および/またはハードドライブ、フラッシュメモリ、ROM、RAM、光ディスクなど、およびこれらの組合せに限定されないメモリ装置および/またはメモリフィードへのアクセスを介して提供されてもよい。
第1データ処理モジュールをランダムに選択するステップと、非決定的なデータプールからランダムに選択されたデータ処理モジュールをシードするステップと、第1データ処理モジュールを用いて情報ストリームを変更するステップと、置換データ処理モジュールをランダムに選択するステップと、置換データ処理モジュールを用いて第1データ処理モジュールを置換するステップと、非決定的データプールを利用する前に、非決定的データプールを確率的に処理するステップと、情報ストリームがランダム化された複数のデータ処理モジュールの階層によって処理されるように、複数のデータ処理モジュールの使用をランダムに階層化するステップと、乱数ソースを呼出すたびに、先に呼出されたソースと異なるソースが呼出されるように、ランダム化を管理するステップと、置換データ処理モジュールを用いて情報ストリームを変更するステップとは、方法における構造化された可変性を有する階層を集合的にまたは単独的に提供することによって、単一のデータプールの可用性を増しかつデータプール自身を覆い隠す。ランダム選択は、方法の別のインスタンスを用いて行うことができる。ランダム選択は、プロセッサを用いて実行することができる。データ処理モジュールは、各々がデータを変更するように構成された機能的に同等なデータ処理モジュールのセットから選択されてもよい。データ処理モジュールによって実行される処理の非限定的な例は、減算、マスキング、NAND、NOR、OR、XOR、ANDおよび加算など、およびこれらの組合わせを含む。
第1データ処理モジュールおよび置換データ処理モジュールの使用を再現するのに十分な構造化情報を記録するステップは、一方向性変換の逆算を可能にし、変換されたデータの受信者に有用な利便性を与える。このような記録は、タイムスタンプのように単純であってもよい。対応するシステムは、データのロック解除のキーとして機能するタイムスタンプを可能にするように、タイムスタンプにおいてに十分に同一であるように構成される。このような記録は、より複雑であってもよく、変換されたデータとともにおよび/または変換されたデータと連携して送信/パッケージされる1つまたは複数のスクリプト、データセットおよび/またはデータ処理モジュールを含んでもよい。
すべてのランダム化されたデータ処理特性の選択を実行時間まで遅延させるステップおよび/または実行中に第1データ処理モジュールを使用するランダム時間を決定するステップは、得られた変換を攻撃に対する強さを強化することに非常に有用である。このようなステップは、所定の足場構造を有するが、実行時間まで足場構造に動作するデータ処理モジュールを選択しないおよび/または実行時間まで、システム内に使用されるシード値を選択しない。
所定の通信プロトコルと、各々が情報ストリームを所定の通信プロトコル要件を満たさないように情報ストリームを充分処理する第1データ処理モジュールおよび置換データ処理モジュールとに従って、情報ストリームを構成するステップは、非常に安価(低い処理コスト)でデータの保護を可能にする。その理由は、得られた情報ストリームの時間のみを変更することで、盗聴者は、データを破損したデータとして拒否し、受信者は、データを適切に利用するために、データのわずかな一部を変更すればよいからである。
同様の時間インデックス位置および同様の非決定的データプールから開始するカウンターパートによる作動される方法が情報ストリームを同様に処理するように、方法の動作を時間インデックスに関連付けるステップは、情報ストリームを同様に処理する。
非決定的データプールが優勢な10/10スコアをもってNIST検定に合格したことを検証するステップは、他の方法では見られないセキュリティを提供する。優勢な10/10スコアをもって合格するとは、テスト結果の85%、90%、95%、99%および/または99.9%以上が、非重複テンプレート検定、シリアル検定および線形複雑度検定に対して、10/10スコアを有し、すべてのランダム浮動域テストに対して、2/2または1/1のスコア/が得られたことを意味する。特に、本明細書に参照されるNIST検定は、NIST専門刊行物800−22に見られるP値の均一性および配列の合格割合を検定するテスト、すなわち暗号化アプリケーション用の乱数および擬似乱数生成器を検定するための統計検定パッケージである。統計この検定パッケージは、http://csfc.nist.gov/groups/ST/toolkit/mg/documents/SP800-22b.pdfから参照することができ、その
支持教示が参照により本明細書に組込まれる。1つの非限定的な実施形態において、共通データプールのみが検証/検定され、本明細書に記載された方法を用いて、共通データプールから作成された後続のプールが検定されていない。このような検定が計算上高価であるため、このようにした方が有利である。また、NIST検定に合格したプールは、本発明の方法により変換されても、NIST検定に合格するレベルを実質的に低下せず、引続きNIST検定に合格するということが観察されている。このことは、一般的に、さらなるデータが生成されることに連れて計算が幾何学級数的に高価になる関数のみに可能であるが、現行の方法は、線形的に高価(時間)になる。
本発明の一実施形態によれば、計算装置を用いて情報を確率的に処理する方法40が提供される。方法40は、非決定的であると検証されかつ関数から導出されていない非決定的データプールを提供するステップ(42)を含む。方法40は、非決定的データプールが優勢な10/10スコアをもってNIST検定に合格したことを検証するステップ(44)を含む。方法40は、処理される情報ストリームを提供するステップ(46)を含む。方法40は、すべてのランダム化されたデータ処理特性の選択を実行時間まで遅延させるステップ(48)を含む。方法40は、プロセッサを用いて、各々がデータを変更するように構成された機能的に同等なデータ処理モジュールのセットから、第1データ処理モジュールをランダムに選択するステップ(50)を含む。
方法40は、実行中に第1データ処理モジュールを使用するためのランダム時間を決定するステップ(52)を含む。機能的に同等なデータ処理モジュールのセットは、減算、マスキング、NAND、NOR、OR、XOR、ANDおよび加算を含むデータ処理モジュール群から選択される。方法40は、非決定的データプールからランダムに選択されたデータ処理モジュールをシードするステップ(54)を含む。
計算装置を用いて情報を確率的に処理する方法40は、第1データ処理モジュールを用いて情報ストリームを変更するステップ(56)を含む。方法40は、第1データ処理モジュールを用いて情報ストリームを処理するとともに、プロセッサを用いて、機能的に同等なデータ処理モジュールのセットから、置換データ処理モジュールをランダムに選択するステップ(58)を含む。方法40は、置換データ処理モジュールを用いて、第1データ処理モジュールを置換するステップ(60)を含む。
方法40は、置換データ処理モジュールを用いて情報ストリームを変更するステップ(62)を含む。情報ストリームは、所定の通信プロトコルと、各々が情報ストリームを所定の通信プロトコル要件を満たさないように情報ストリームを充分に処理する第1データ処理モジュールおよび置換データ処理モジュールとに従って構成される。方法40は、情報ストリームがランダム化された複数のデータ処理モジュールの階層によって処理されるように、複数のデータ処理モジュールの使用をランダムに階層化するステップを含む(64)。
方法40は、第1データ処理モジュールおよび置換データ処理モジュールの使用を再現するのに十分な構造化情報を記録するステップ(66)をさらに含む。方法40は、同様の時間インデックス位置および同様の非決定的データプールから開始するカウンターパートによる作動される方法が情報ストリームを同様に処理するように、方法の動作を時間インデックスに関連付けるステップ(68)を含む。方法40は、非決定的データプールを利用する前に、非決定的データプールを確率的に処理するステップ(70)を含む。方法40は、乱数ソースを呼出すたびに、先に呼出されたソースと異なるソースが呼出されるように、ランダム化を管理するステップ(72)を含む。
図6は、供給された情報を確率的に処理するように構成された確率的処理装置を示す図である。図示の装置は、不揮発性メモリ装置と、データ入力インターフェースモジュールと、データ出力インターフェースモジュールと、アーキテクトモジュールとにそれぞれ連結されたプロセッサを含む。動作時、装置は、ユーザが処理されるデータ/情報ストリームを選択することを許可して、処理に関する情報を十分にもっている人間がデータ変換を逆算し、それによってデータのアクセスを許可するとともに、データを一方向的に変換するようにデータ/情報ストリームを処理(変換)する。したがって、単一の装置を使用して、ユーザに、同様に強化されたプライバシー、セキュリティ、認証、検証、検定など、およびそれらの組合わせを提供することができる。
図示のプロセッサは、一般的な電子装置(コンピュータ、サーバ、タブレット、スマートフォンなど)に含まれる1つまたは複数の処理要素を含んでもよい。
図示の不揮発性メモリ装置は、電源を供給しなくてもデータを記憶する1つ以上のメモリ要素を含んでもよい。非限定的な例としては、ハードドライブおよびフラッシュドライブが挙げられる。メモリ装置は、プロセッサに機能的に連結され、優勢なスコア10/10をもってNIST検定に合格したことが確認された非決定的データのプールを含む。
図示のデータ入力インターフェースモジュールは、プロセッサに機能的に連結され、データを受信するように構成されている。データ出力インターフェースモジュールは、プロセッサに機能的に連結され、データを送信するように構成されている。これらのインターフェースモジュールは、データポート、USBポート、シリアルポート、ネットワークカード、無線送信機/受信機など、およびそれらの組合わせを含んでもよい。これらのインターフェースモジュールによって、装置は、他の装置および/またはシステムと通信することができる。
図示のデータ処理モジュールは、プロセッサに機能的に連結され、複数の機能的に同等なデータ処理指令セットまたはそのような関数ライブラリーおよび/またはデータプールを含む。これらは、URNGプール/システムの1つ以上のインスタンスを含んでいてもよい。
図示のアーキテクトモジュールは、プロセッサ、データ処理モジュールおよび/または不揮発性メモリ装置に機能的に連結され、非決定的データプールからのシード値に応じて、データの確率的処理を管理かつ制御するように構成されている。アーキテクトモジュールは、実行中に、データ処理モジュールをランダムに選択することによって、データ入力インターフェースモジュールにより受信したデータを処理し、確率的に処理されたデータをデータ出力インターフェースモジュールに提供する。このようなアーキテクトモジュールは、1つまたは複数の特徴、構造、機能および/または本明細書の各箇所に記載された同様のものを含んでもよい。
本発明の一実施形態によれば、供給された情報を確率的に処理するように構成された確
率的処理装置80が提供される。装置80は、プロセッサ84と、プロセッサ84に機能的に連結された不揮発性メモリ装置86とを含む。不揮発性メモリ装置86は、優勢な10/10スコアをもってNIST検定に合格したことが検証された非決定的データのプール88を含む。装置80は、プロセッサ84に機能的に連結され、データを受信するように構成されたデータ入力インターフェースモジュール82を含む。装置80は、プロセッサ84に機能的に連結され、データを送信するように構成され得るデータ出力インターフェースモジュール92を含む。
装置80は、さらに、プロセッサ84に機能的に連結され得るデータ処理モジュール90と、複数の機能的に同等なデータ処理指令セット96とを含む。装置80は、プロセッサ84とデータ処理モジュール90と不揮発性メモリ装置86とに機能的に連結されたアーキテクトモジュール94を含む。アーキテクトモジュール94は、実行中にデータ処理モジュールをランダムに選択することによって、非決定的データプールからのシード値に応じて、データの確率的処理を管理かつ制御するように構成され、データ入力インターフェースモジュールによって受信したデータを処理し、確率的に処理されたデータをデータ出力インターフェースモジュールに提供する。
不確定アプリケーションパラメータ
静的パラメータが決定的な結果をもたらすため、多くの処理要素が正しく機能するために追加のパラメータを必要とする。これらのパラメータのすべては、可能な限り、不確定関数またはURNGから動的に取得すべきである。このようにして、各追加の不確定パラメータは、不確実性の範囲を拡大し続ける。
コントロールプレーンの職責
「コントロールプレーン」という概念は、最初のURNG特許において取上げられた。その発想自身が変わっていないが、その職責が確率的処理のために一般化されている。処理要素の選択/再選択、処理要素の初期化または再初期化、および確率的足場ポイントの更新は、これらの値/要素の多く/殆ど/すべてを実行中のある時点で動的に置換するような主要目的をもって実行される。
アプリケーションの設計者は、処理要素または動的値を更新するポリシーを定義する責任がある。「カウントダウンカウンター」のような簡単なツールまたは「アプリケーション固有のイベント」のような複雑なツールを定義して、更新をトリガすることができる。これらのポリシーは、重要な実装の詳細になる
確率的開発
確率的処理方法論において、乱数は、処理要素、プログラム制御パラメータおよび単純なデータの選択を含む多くの異なる機能に存在する。適切に構築された確率的処理足場は、ソフトウェア指令として乱数の使用を支持する。この種類の足場の最も簡単な形式は、URNGカオスエンジンである。カオスエンジンは、選択肢のリストから単一の選択を表す。
開発ツールおよび/または想像力の限界によって、開放型のアプリケーションソリューションは、プログラマまたはハードウェア設計者にとって課題となっている。確率的開発概念の使用も、開放型である。処理要素、ステップ、通路、ループおよび配列のいずれかを動的に定義された量で作成することができる。従来のプログラミングにおいて、「制御変数」は、コードを介して経路を指示する。確率的開発において、多くの制御変数は、実行中に、不確定値をもって定義/再定義される。カオス行動の無制限の範囲は、この足場の複雑性によって定義される。一旦足場が設定されると、カオス行動を利用するために必要とされたのは、非決定的な値のみである。この新しく作成された、実行時間不可知のソフトウェアは、アプリケーションの設計を完全に変身させる。
確率的「足場ポイント」の例
以下のルーチンは、設計時の静的プールサイズ、アドレス指定モジュロおよび単一の(ライブラリー)PRNG呼出しを有すると仮定する。明らかに、このルーチンは、より確定的である。したがって、確率的処理の方法論には、PRNG呼出しを選択できる大量のPRNG関数の集合を追加する。以下のPRNG呼出しの各々は、異なる関数を用いて動的に選択され、不確定データを介してシードされる。また、「プールサイズ」と「モジュロ」のような不確定パラメータは、ソースファイルが作成されるときに定義される。このように、不確実性の全体的な範囲が広くなるとともに、単一PRNGの既知欠点の一部が緩和される。正味の効果は、マスクURNGとして知られている非決定的かつ不確定の乱数生成器である。
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 ]);
};
しかしながら、これらのPRNGの動的不可知な置換に新たなシード値の追加および不確定性プールのオンデマンド作成によって、同一の実装は、呼出されるたびに動的カスタムソリューションになる。
確率的足場−カオス例
PRNG関数用の集合およびURNGランダム編集プロセス(REP)関数用の集合を含む2つの集合から開始する。PRNGを選択するときに使用した同一のデータ駆動型プロセスを用いて、REPを選択し、REPリストを作成する。各ランダム編集プロセスは、切離しプロセスである。マスク生成器は、1つの切離しプロセスを表しているが、カオスURNG(上記のコードを参照)は、不確定値を用いて多くの切離しプロセスから選択する。全体的な結果としては、同一の不確定性プールから作成された不確実な乱数は、かなり多くなる。
確率的処理の効果
確率的処理の不確実性は、確率的処理がより有用なランダム性アプリケーションである理由を示している。正確なデータプールがなければ、(実装の情報から)呼出されるカスタムソリューションのバージョンを予測することはできない。ハードウェアおよびソフトウェアにおける現行の(静的)実装は、数学的確実性に準拠している。これらの静的ソリューションは、動的ソリューションに取代れるだろう。これらの不確実性技術は、アプリケーションをカオス的になり、より安価かつより好適なリューションになるようにさせるだろう。
動的デジタルプロトコル
データ構造と行動は、現行のデジタルプロトコルを規定する。開発者は、これらのプロトコルの実装を完璧にするのに勤勉に努力している。この完璧に近い実装は、最新のデジタルプロトコルが非常に脆弱であることを意味する。デジタルプロトコル内の脆弱なデータ構造をどうのように保護するか? データ構造を保護する手段を得るためには、データ構造を意図的に破らなければならない。この皮肉な行動は、データ構造の保護パラドックスを定義する。
このパラドックスを活用するため、確率的処理下で、データ構造の脆弱性をツールとして使用し、動的手段を作成してデータ構造の完璧を独特に「破り」、その後、同一のデータ構造の完璧を独特に「復元」させる。簡単な対比を用いて、この脆弱性の有用性を示す。キヤノンはハエを殺すことができるが、ハエたたきもハエを殺すことができる。両方はタスクを完了することができるが、そのうち1つは、問題の規模に対して全く不適切である。暗号化は、デジタルプロトコルを保護することができるが、キヤノンを用いてイエバエを殺すと同様に、大変過剰であるため、不適切である。
崩壊に対する感受性を理解すれば、プロトコルの内部データ構造を詳しく研究すべきである。現在では、すべてのデジタルプロトコルは、データ構造に対して静的であると定義されている。静的プロトコルデータ構造を暗号化することによってハッキングからの保護を得るよりは、「動的進化」を適用することによってこれらの静的プロトコルデータ構造を不可知な「動くターゲット」に変換すべきである。現在行われている軽量のランダム進化は、(努力をすれば)データ構造を読取ることを可能にしているが、プログラマが次の進化的変化に対する予測を防いでいる。したがって、費用を殆どかけずに、ハッキングに対する暗号化保護が得られる。
デジタルプロトコルの一般例としてのコンピュータ指令を使用して、このような仕組みを実証する。わずかの数ビットを変更することだけで、これらの指令により定義された基盤ソフトウェアを簡単に破ることができる。ほぼすべての場合、各指令の1つのビットを変更するだけで、ソフトウェアプログラムの破壊をもたらす。したがって、ソフトウェアの破壊と復元は、安価で容易にできる。
任意所定のCPUプロセッサは、指令用の公開データ構造を定義する。ソフトウェア指令を破壊し、その後復元するカスタムかつ安価な動的手段は、公開プロトコルをプライベ
ートプロトコルに変換することができる。この変換は、ソフトウェア、書籍およびメディアなど用のデジタル著作権管理(DRM)システムを実装する有用なツールになるだろう。
経済基盤は、カスタムソリューションの需要を決める。人々は、共通のDRMシステムを共有する場合、同様のハッキングリスクも共有している。DVDの一次コピー保護のクラッキングは、共通保護を用いたリスクを示した。一旦DVDの一次コピー保護がクラッキングされると、保護されたすべてのDVDが危険に曝される。したがって、共通保護の共同利用は、保護が破れると大きな経済的利益が得られるため、実際にクラッキングを誘っている。逆に、すべてのメディアがカスタムの保護によって守られている場合、一枚の保護されたメディアがクラッキングされても、他の保護されたメディアを危険に曝すことはないだろう。努力に対する貧しい還元は、殆どの場合、利益を得るためのクラッキングを挫く。
データの共有保護は、より大きな経済的利益を誘うため、一般的に強力な保護(たとえばBlu-ray(登録商標))が必要である。しかしながら、カスタムの保護は、実装をより
簡単にすることができる。動的デジタルプロトコルの配置は、経済の基本ルールをリセットする。経済性とともにプロトコルの脆弱性が有用である理由を説明してから、以下に、実装の詳細を説明する。
カスタムの共通環境
殆どのデジタルプロトコルにおいて、製造者(製造源または創始者)とプロトコルを処理する消費者との2つの関係者がある。動的デジタルプロトコルを成功させるために、一般的に、これらの2つの関係者は、共通のソースファイル、タイムスタンプ、URNG実装、および確率的処理アプリケーションを含む同様のカスタム環境から出発する必要がある。このようにして、両者は、互換性のある動的デジタルプロトコルに処理するためのランダムデータストリームおよびアプリケーションを同様にもっていることを知っている。動的デジタルプロトコルの「製造者」および「消費者」が同期される限り、両者は、ハッキングされる懸念なく、データ構造の交換を続けることができる。全く同様の環境がなければ、プロトコル消費者に受入れる予期のデータ構造を作成することはできない。
データ、アドレス、およびランダム性コントロールプレーンに関する改革
これらの「プレーン」は、各々個別に改革される可能性がある。たとえば、データに影響を与えず、データプールのアドレス指定を変えることができる。同様に、1つのプレーンの状態を固定(凍結)しても、開発者は、他のプレーンを改革することが可能である。このような改革可能性は、不確定関数の性質から由来する。したがって、同様の可能性は、確率的処理(データ/アドレス/制御プレーン)にも存在する。
一般的に、確率的処理は、同一のランダムストリームを再現性よく作成する能力が必要である。この要件は、データの事前生成、実装のリセットまたはこの要件をサポートするURNGプリミティブの構築から得られた無制限数のソリューションによって満たされる。これらのURNGプリミティブは、動的デジタルプロトコルを構築する基礎となる。
任意指定のソースファイルは、不確定性プールと時間モデルとを含む。タイムスタンプは、不確定性プール内において、作成されるURNGのインスタンスを定義するシード値を決定する。したがって、任意のタイムスタンプは、すべての可能なURNGインスタンスへのアドレス指定関数を表す。各URNGインスタンスは、1つのランダムストリームしか生成できないが、同一の不確定性プールから多くの異なるストリームを生成することができる。以下は、サポートプリミティブである。
静的URNGプリミティブ
「静的UNRG」は、ソースファイル内の不確定性プールに基づき、URNGインスタンスを作成する。各独特のタイムスタンプは、同一のデータを共有しながら、URNGの異なるインスタンスを作成する。
t_urng * static_urng (char * source_name, t_timestamp timestamp);
動的URNGプリミティブ
「動的URNG」は、指定のソースファイルとタイムスタンプを利用して、新たな不確定性プールを作成する。この新たな不確定性プールとタイムスタンプは、URNGの動的インスタンスを定義する。したがって、各独特のタイムスタンプは、独特の乱数生成器を生成し、生成された各独特の乱数生成器は、独特の乱数ストリームを生成する。
t_urng * dynamic_urng (char * source_name, t_timestamp timestamp);
同一のソースファイル、タイムスタンプおよび上記のプリミティブは、同一のURNGインスタンスを作成し、その後同一のランダムストリームを生成する。所定のURNGインスタンスが定義された後、データプレーンが割当てられる。
クローンURNGプリミティブ
「クローンURNG」は、所定のURNGインスタンスのコピーを作成する。各クローンは、クローン点から同一の乱数ストリームを生成する。
t_urng * clone_urng (t_urng * urng);
URNG値プリミティブ
「URNG値」は、乱数を取得するための標準なURNGインタフェースプリミティブである。
r_value urng_value (t_urng * urng);
ランダムサブストリーム−インデックス付きURNGプリミティブ
「インデックス付きURNG」は、「インデックス付き」ストリーム内において次の乱数を取得するためのインタフェースプリミティブである。インデックスが変わるたびに、インデックス付きストリームがリセットされる。よって、「リセット」は、インデックス付きURNGの再利用を可能にし、任意のインデックス付きストリームを再生成することができる。例として、同一のインデックス付きストリームが同一のランダムストリームを再生成し始めるように、インデックスを一時値にセットして、その後以前のインデックス位置に復元させる必要がある。インデックス付きURNGインターフェースプリミティブと連動して、クローンURNGインタフェースプリミティブの使用は、任意数の(異なる)連立ランダムストリームが同一の不確定性プールから支持されることを可能にする。
r_value indexed_urng (t_urng * urng, int32_t index);
バーチャルカット−メモリアドレス+オフセット
たとえば、データプールを読取るために使用されるメモリアドレスにオフセットを足すことは、メモリ範囲の原点を移動させることと同様の効果を有する。これは、カードゲームにおいてトランプの「カット」と似ている。
バーチャルシャッフル−メモリアドレスXORシャッフル値
メモリアドレスとともに、ビット単位でシャッフル値のXORをとる行為は、XOR演算によってメモリ範囲が並べ替えられたため、迅速な位置シャッフルと相当する効果を有する。シャッフルしてからカットすることができ、またはカットしてからシャッフルすることもできる。希望であれば、これらの仮想カードトリックは、何度でも行うことができる。
ランダムサブストリーム−メモリアドレスオフセットの使用
メモリアドレスの操作は、いくつかの非常に有用な副作用を生じることができる。通常は、不確定乱数発生器は、1つの乱数ストリームしか生成しない。不確定乱数発生器内に使用された各メモリアドレスにオフセットを足すと、異なるオフセットごとに、異なるランダムサブストリームが生成される。メモリ−オフセット値を選択的に足すことによって、任意数のランダムサブストリームを生成することができる。これによって、必要に応じて、アドレスをランダムに指定可能なサブストリームを得ることができる。このツールは、多くのアプリケーションにおいて非常に有用である。
ソースファイルとURNGインスタンスの識別
殆どの場合、「ファイル」の命名は、一般には、何らかの形式の「名前空間」内において、そのファイルを見つける場所(パス名)を最初に識別する必要である。一般的には、場所の最後の部分だけは、ファイルを命名するために使用される。パス名は、ソースファイルの外部識別を指定する。追加の内部識別は、作成タイムスタンプと非独特の識別子を含む。外部識別および内部識別によって、任意のソースファイルを既知のシステムに位置付けることができる。一旦正しいソースファイルを見つけると、動的識別子(オープンファイルID)を定義することができる。
ソースファイルおよびタイムスタンプは、URNGインスタンスを作成するために使用されるときに、動的URNGインスタンス識別子が与えられる。クローンインスタンスは、作成された後、追加の識別子も与えられる。明らかに、確率的処理アプリケーションは、これらのURNGインスタンス識別子を管理かつ追跡しなければならない。
ハードウェアアプリケーションにおいて、不確定性プールの読込みおよびアドレス発生器の作動は、URNGインスタンスの識別を終える。(「シャッフル」を伴うまたは伴わない)「カット」をサポートする追加のアドレス生成器の各々は、インデックス付きURNGに手段を提供する。
製造者と消費者の同期
データ構造の製造者と消費者とは、最初から同一のソースファイルおよびタイムスタンプをもつことに限り、同一のURNGインスタンスを作成することによって、既に同期の第1レベルに達している。一般的に、確率的処理アプリケーションは、特異のランダム配列を表す値(サブストリーム識別子)を定義しなければならない。これらのサブストリーム識別子は、インデックス付きURNGプリミティブの「インデックス」値となる。確率的処理アプリケーションは、一般的に新たなランダムサブストリームを要求するたびに、新たなインデックス(ストリーム)値を作成することができる。このインデックス値は、データ構造内にあってもなく、いなくてもよい。たとえば、いくつかのインターネットプロトコルは、プロトコル定義に埋込まれた「配列番号」を有する。これらの配列番号は、インデックス値にマッピングされることができる。これらのインデックス値は、ランダム性のファイングレイン(Fine Grain)アドレス(時間)指定関数となる。明らかには、殆どのプロトコル配列番号は、ある理由で順番付けられるが、これらのインデックス値は、連続する必要はない。これらのインデックスを作成および管理するアルゴリズムが正しい限り、インデックス付きURNGプリミティブは、任意所定の(有効の)インデックスに対し、同様のランダムサブストリームを与える。
開始インデックス値は、アプリケーションによって明示的または暗示的に定義されてもよい。取引の会計番号は、明示的に定義されたインデックスの一例を表し、電子メール内の第三付属書類は、暗示的な例を表すことができる。しかしながら、任意のアプリケーション固有のアルゴリズムは、任意(有効の)インデックス値を作成することができる。
アプリケーション固有集合−ハッシュ関数、破壊および復元プロセス
デジタルプロトコル内で脆弱な(静的)データ構造を保護するタスクは、最大2つの異なるアプリケーション固有の処理要素の集合が必要になる。第1集合が、データ構造を単一の値に減少させるある形式の「ハッシュ」関数または巡回冗長検査(CRC)関数である。必要に応じて、第2集合が使用され、データ構造の保護パラドックスを呼出す。
静的データ構造を「破壊および復元」する可能性は、無限であるため、データ構造は、無制限ソリューションの空間となる。静的データ構造を細かく破壊してから復元させるいずれかの可逆手段は、同様に効果的である。静的データ構造を処理する例のリストは、可能なソリューションを表すヒントのみである。一旦静的データ構造が作成されると、任意サイズのビットフリッピング、任意サイズのビットスワッピング、注入されてから削除される任意サイズのデータ、(任意サイズの単位内で)左右に回転させられた任意数のビット、(バイト、16ビット、ワードの)ビット順序の反転からなる任意の組合わせを採用してもよい。データ構造が無制限ソリューションの空間となっているため、より多くのソリューションを生成することができる。
静的データ構造の可逆モーフィングは、多くの既存のハードウェアソリューションおよび/またはソフトウェアソリューションに挿入されることができる。この保護のアップグレードは、既存のシステムに対し、比較的低いコストまたは比較的少ない破壊で達成することができる。
脆弱なデータ構造を保護する別の手段は、動的データ構造に向かって直接移動することである。たとえば、多くの異なるデータ構造は、「可変レコード」手段を介して重ねる(フォーマットする)ことができる。このようにして、同一データの全体をほぼ同一の空間に格納することができる。各可変レコードにおいて、唯一の大きな違いは、同一のフィールドが異なる順序で格納されることである。この場合、製造者と消費者の両方は、使用される変数を同期しなければならない。理想的な同期は、不確定データに基づいて可変レコードを選択すること(または可変レコードを構築するルーチンを選択すること)である。このように、データ構造内の同一のフィールドは、常に時間の経過とともに、動いているように見える。この可変レコードという解決案は、集合を「破壊および復元」する必要がないが、データ構造内のフィールドへのハードウェアアクセス/ソフトウェアアクセスを再工夫する必要がある。
既存の静的データ構造の確実性に対する破壊は、非常に低いコストで取込むことができるため、普及することができる。よって、デジタルプロトコルのセキュリティは、莫大な経費なしで達成することができる。第2集合(ハッシュ関数またはCRC)は、さらに低経費の選択肢を提供する。
CRCメタファーをRoss完全性チェック(RIC)にアップグレード
多くのインターネットプロトコルは、CRC関数を採用して、損傷した(無効の)パケットを検出する。CRCチェックが不合格である場合、パケットが破棄される。これらのプロトコルは、欠落パケットを自然に置換し、一時的なグリッチという唯一の結果を生じる。現在、多くの異なるCRC関数は、ネットワークの全体に配置されている。しかしながら、意図通りに機能させるために、現行のCRCの各呼出しは、一般的に正しい関数を使用しなければならない。このことは、現行のCRCメタファーを定義する。
簡単な質問として、メタファーを変更するときに、間違ったCRC関数が呼出された場合に何が起こるか? この場合、プロトコルは中断され、各要求は破棄される。このCRCチェックの一貫性のある失敗が正しい意図であれば、CRC値が破損の「デジタル署名
」となった。残念ながら、CRC関数が知られた場合に、CRC値は、CRCチェックに合格できる程度にハッキングされることができる。解決案を完成させ、ハッキングを防止するために、一般的にCRCの計算に不確定データを組込む必要がある。必要された(不確定サイズの)不確定データは、正しいURNGインスタンスのみから生成することができる。よって、追加の不確定データを加えたハッシュ/CRC関数の集合は、実際に、各パケットの簡単なCRCメタファーを安全なデジタル署名にアップグレードする。そのため、認証されていないパケットが無視される。CRCメタファーのRIC置換は、コストが十分低いであるため、普及することができる。
集合から不確定に選択されたハッシュ/CRC関数および不確定なサイズを有する不確定データ補遺を用いて、データ補遺が加えられたデータ構造のハッシュ/CRCのRIC値を計算する。サービス提供者は、同一のハッシュ/CRC関数を選択して、同一の不確定な補遺を生成し、RIC値を計算する。認証がデータ構造に含まれる値と一致する場合にのみ、サービスが提供される。
RICの応用
明らかに、RICは、任意のデジタルプロトコルに加えられ、低コストの認証手段を提供することができる。多くのサービスは、認証なしで提供されているが、一部のサービスは、認証(たとえば、セキュア・ソケット・レイヤー(SSL))をサポートする非常に複雑なインフラを有する。一回のデータ交換が完了すると、乱数発生器も交換される。そのため、認証をサポートするために必要された最小限のインフラを設立した。共有の確率的処理アプリケーションがこのデータ交換に使用される場合、ハードウェアまたはソフトウェアにおける動的カスタムのアプリケーションも交換される。
公開アドレスをプライベートアドレスに変換(ファイングレインアクセス制御)
多くのサービス提供者が既知の「公開アドレス」を有すると仮定する。これらのサービス提供者が既にRIC認証をサポートするようにアップグレードされる場合、許可されたサービスのみが提供され、他のすべてのリクエストが無視される。このように、RICは、このサービスに対し、一種の取消可能なアクセス制御となる。このアクセス制御の可能な応用は、無制限である。
RICの効果を示す簡単な例を挙げる。電話が選択的にRIC認証をサポートする場合、日中には、電話番号を「公開する」ことができるとともに、夜間には、アクセスを許可された人に限定(縮小)することができる。RICの効果を示す別の方法は、公開(既知)アドレスをプライベート(認可のみ)アドレスに変換することである。現在では、任意の電子メール、電話番号、制御システム、IPアドレス、財務またはインターネット取引などは、ファイングレインアクセス制御を備えている。
多くのアプリケーションは、ファイングレイン取消可能なアクセス制御を有しないことに悩まされる。たとえば、データベースに与えられた一般的なアクセス権は、すべてのレコードをアクセスできる。その代わりに、多くの組織は、知る必要が承認されたレコードのみにアクセスを動的に制限し、データベースの残りの部分へのアクセスを拒否する。明らかに、このファイングレインアクセス制御は、医療およびIRS組織において有用であろう。この種類アクセス制御は、多くのアプリケーションに利用できる。
確率的足場−同一の特異の破壊/復元アルゴリズム
破壊および復元(BR)プロセスは、確率的足場のフレームワークに従って進む。BRアプリケーションの開発者は各々、BR処理要素を多段階選択するおよび多段階起動させるためのフレームワークを作成する。プログラム制御変数(ステップ数、ステップの順序、BR要素の選択など)に対する制限はすべて、URNGによって生成されたデータによ
って規定される。
同期が正しいURNGインスタンスをもって確立されると、確率的足場の各部分は、同一の特異の不確定データから始まる。フレームワーク内の各サブステップは、追加のデータパラメータを必要とする場合がある。任意のパラメータ、データ項目、選択値、カオス指令などは、一貫性のある(かつ再現可能な)方法でインデックス付きURNGとともに提供されることができる。
明らかに、フレームワークは、破壊が完了した時点で、復元に対処しなければならない。新しい破壊処理要素が以前の破壊処理要素の結果に影響を与える可能性がある場合、復元配列は、逆の順序で破壊処理要素を復元することで、各破壊処理要素を取消す必要がある。「後入れ先出し(LIFO)」スタックの処理は、十分解明された伝統的なアルゴリズムメタファーである。
BRプロセスとRICの両方が採用される場合、RIC値は、任意の変更が行われる前に、計算され、データ構造内に保存される。一旦データ構造が復元されると、RICは、再計算され、データ構造を検証し、認証を確認する。
破壊/復元またはRICのオプション使用
以上のセクションでは、BRプロセスとRICの両方が同時に使用されている場合を説明した。しかしながら、多くの有効なアプリケーションは、一方のみを使用する。多くのデジタルプロトコルにおいて、RICは、アクセス制御の低コスト解決案として単独に利用される。ソフトウェアDRMの場合、BRプロセスは、単独に利用される。RICのみがソフトウェアDRMに採用されている場合、攻撃点が1つであるため、ソフトウェアがハッキングされ易くなり、RICの効果が発揮できなくなる。しかしながら、BRプロセスの単独使用は、ソフトウェアを充分保護できる。その理由は、不正に復元されたソフトウェアがすべて機能しなくなる。BRプロセスのみまたはRICのみを使用するアプリケーションは、多くある。
データ合同数生成器
「線形合同数生成器」は、決定的値を生成する。これらの決定的値は、一般的にURNG実装内でパラドックス安全な値に変換されなければならない。不確定関数用のパラドックス安全なドメイン値を生成するための要件が同様に維持されながら、欠点のあるPRNGを除去すると、プロセスをより好適なランダム性を有するように簡素化することができる。
mask = urng->pool[ prng (1) % urng-> modulo ];
unsafe_1 = prng (4);
unsafe_2 = prng (5);
domain = (~mask & unsafe_1) | (mask & unsafe_2 ) % urng->modulo;
不確定性プールから1つ(または1つ以上)の非決定的な値を用いて、素数モジュロ演算からドメイン値を生成することができる。パラドックス安全なデータを用いて「線形」方程式を置換すると、「線形合同数生成器」の代わりに、データ合同数生成器(DCG)が生成される。不確定性プールに与えたランダムインデックスが2つ(seed0,seed1)である場合、Cコード置換例は、以下である。
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;
注:この実施例では、2つの32ビット値を連結することによって、64ビット値を作成する。連結の代わりに、ほぼすべての2進演算も同様に機能する。単一のプール値が機能するが、同一のアドレス指定配列を繰返す速度が速すぎるという傾向がある。上記の「素数」を置換すれば、異なるドメイン値生成器を作成することができる。DCGの実施形態は、ソフトウェアまたはハードウェアに作成することができる。
「Cヘッダ」
Cヘッダは、上記のコード抜粋に書かれていないいくつかの詳細を補足する。
#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;
上述した実施形態は、本発明の応用原理の単なる例示であることを理解すべきである。本発明は、その精神または本質的な特徴から逸脱することなく、他の特定の形態で実現され得る。上記の実施形態は、すべての点で、単なる例示であり、限定的ではないと考えるべきである。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲と均等な意味および範囲にあるすべての変更は、本発明の範囲内に包含されるべきである。
たとえば、上記の討論は、システム、方法などの具体的な用途について説明したが、その応用は多くあり、場合によって現在の時点で不可知であることを理解すべきである。
さらに、図面は、特定の接続、関係および配列を示すが、特許請求の範囲に記載されていないかつ禁止されていない多くの接続、関係および配列は、想定され、本発明の1つまたは複数の非限定的な実施形態において実施され得ることを理解すべきである。
本発明は、現在最も実用的かつ好ましいであるとみなされる本発明の実施形態に具体的にかつ詳細に関連して完全に説明してきたが、サイズの変更、材料の変更、形状の変更、形式の変更、機能および操作仕方の変更、組立ておよび使用の変更を含むがこれらに限定されない多数の変更が、特許請求の範囲に記載された本発明の原理および構想から逸脱することなく可能であることは、当業者には明らかであろう。さらに、実施形態は、本明細書に記載された特徴、機能、構造および方法のうち1つ以上で構成されまたは実質的に構成されることに制限されてもよいと考えられる。

Claims (15)

  1. コンピューティングシステムの第1のメモリ装置内の第1のデータプールにおけるメモリ位置のアドレスを指定するためのシステムであって、
    a)データプールサイズを有する非決定的データプールを有する第2のメモリ装置と、
    b)格納された素数と、
    c)前記第2のメモリ装置における前記非決定的データプールから、第1の値を取得し、次いで、前記第1の値を前記格納された素数で除算し、第1の余りを決定するハードウェアまたはソフトウェアのモジュロ演算子と、
    d)メモリアクセス動作を行うために、前記第1の余りから得られたドメインを用いて、前記第1のデータプールのアドレスを指定するメモリコントローラとを含み、
    前記第1のデータプールおよび前記非決定的データプールは、同一または異なるデータプールであってよく、前記第1のメモリ装置と前記第2のメモリ装置は、同一または異なる装置であってもよい、システム。
  2. 格納された素数の配列をさらに含み、前記格納された素数は、前記格納された素数の配列から選択される、請求項1に記載のシステム。
  3. 前記非決定的データプールから前記第1の値を取得した位置をインクリメントすることによって、2つの別個の値のうちの一方の値が生成され、前記第1の値を取得した位置をデクリメントすることによって、前記2つの別個の値のうちの他方の値が生成され、
    前記第1の値は、前記2つの別個の値を連結することによって得られる、請求項1または2に記載のシステム。
  4. 前記非決定的データプールから前記第1の値を取得した位置をインクリメントすることによって、2つの別個の値のうちの一方の値が生成され、前記第1の値を取得した位置をデクリメントすることによって、前記2つの別個の値のうちの他方の値が生成され、
    前記第1の値は、前記2つの別個の値に対して2進演算を実行することによって得られる、請求項1または2に記載のシステム。
  5. 前記第1の値は、前記非決定的データプールにインデックスをランダムに付けることによって得られる、請求項1または2に記載のシステム。
  6. 前記非決定的データプールは、関数から導出されていない、請求項1〜のいずれか1項に記載のシステム。
  7. 前記モジュロ演算子はさらに、前記第1の余りを素数であるアドレス指定モジュロで除算し、第2の余りを決定することにより第2の余りを計算し、それにより前記メモリコントローラによって使用される前記ドメインを導出する、請求項1〜のいずれか1項に記載のシステム。
  8. コンピューティング装置のデータプールのメモリアドレスにアクセスするための方法であって、
    a)メモリ装置内に格納された非決定的データプールを提供するステップを含み、前記データプールは、データプールサイズを有し、
    b)素数を提供するステップと、
    c)前記非決定的データプールから第1の値を取得するステップと、
    d)ハードウェアまたはソフトウェアのモジュロ演算子の演算によって、ソフトウェアモジュロ演算子の場合プロセッサを用いて、前記第1の値を前記素数で除算し、その余りを決定することにより、前記第1の値の第1の余り値を計算することによって、前記第1の余り値を生成するステップと、
    e)メモリコントローラを用いて、アドレス値を決定するために前記第1の余り値から得られたドメイン値を使用することによって、データプール内のメモリアドレスにアクセスするステップとを含み、
    前記データプールは、前記非決定的データプールと同様であってもよく異なってもよい、方法。
  9. 前記素数は、第2の素数によって置換される、請求項に記載の方法。
  10. 前記非決定的データプールから前記第1の値を取得した位置をインクリメントすることによって、2つの別個の値のうちの一方の値を生成するステップと、
    前記非決定的データプールから前記第1の値を取得した位置をデクリメントすることによって、前記2つの別個の値のうちの他方の値を生成するステップとをさらに含み、
    前記第1の値は、前記2つの別個の値を連結することによって得られる、請求項8または9に記載の方法。
  11. 前記非決定的データプールから前記第1の値を取得した位置をインクリメントすることによって、2つの別個の値のうちの一方の値を生成するステップと、
    前記非決定的データプールから前記第1の値を取得した位置をデクリメントすることによって、前記2つの別個の値のうちの他方の値を生成するステップとをさらに含み、
    前記第1の値は、前記2つの別個の値に対して2進演算を実行することによって得られる、請求項8または9に記載の方法。
  12. 前記第1の値は、前記非決定的データプールにインデックスをランダムに付けることによって得られる、請求項8または9に記載の方法。
  13. 第1のセットの前記2つの別個の値は、前記非決定的データプールにインデックスをランダムに付けることによって得られる、請求項11に記載の方法。
  14. 前記第1の余り値を第2の素数で除算し、その余り値を決定することにより第2の余り値を計算し、それにより第2の余り値を生成し、前記第2の余り値を前記メモリコントローラに使用される前記ドメイン値として使用することによって、前記余り値から前記ドメイン値を導出するステップをさらに含む、請求項13のいずれか1項に記載の方法。
  15. 前記非決定的データプールは、関数から導出されていない、請求項14のいずれか1項に記載の方法。
JP2018165973A 2012-05-29 2018-09-05 確率的処理 Active JP6616471B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/482,723 US9778912B2 (en) 2011-05-27 2012-05-29 Stochastic processing of an information stream by a processing architecture generated by operation of non-deterministic data used to select data processing modules
US13/482,723 2012-05-29

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016142457A Division JP6400640B2 (ja) 2012-05-29 2016-07-20 確率的処理

Publications (2)

Publication Number Publication Date
JP2019012547A JP2019012547A (ja) 2019-01-24
JP6616471B2 true JP6616471B2 (ja) 2019-12-04

Family

ID=47220061

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2015515130A Active JP5976928B2 (ja) 2012-05-29 2013-05-29 確率的処理
JP2016142457A Active JP6400640B2 (ja) 2012-05-29 2016-07-20 確率的処理
JP2018165973A Active JP6616471B2 (ja) 2012-05-29 2018-09-05 確率的処理

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2015515130A Active JP5976928B2 (ja) 2012-05-29 2013-05-29 確率的処理
JP2016142457A Active JP6400640B2 (ja) 2012-05-29 2016-07-20 確率的処理

Country Status (5)

Country Link
US (4) US9778912B2 (ja)
EP (1) EP2856331A4 (ja)
JP (3) JP5976928B2 (ja)
KR (4) KR20170099407A (ja)
WO (1) WO2013181196A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022177984A1 (en) * 2021-02-16 2022-08-25 Cassy Holdings Llc High clock-efficiency random number generation system and method

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070214036A1 (en) * 2006-03-08 2007-09-13 Gosakan Aravamudan Online product design
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US9063673B2 (en) * 2011-08-30 2015-06-23 Uniquesoft, Llc System and method for implementing application code from application requirements
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
EP3320457B1 (en) 2015-07-10 2021-04-07 Whether Or Knot LLC System and method for electronic data distribution
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US11222172B2 (en) 2017-05-18 2022-01-11 Lakebolt Research System and method for reactive computing
RU181260U1 (ru) * 2017-11-16 2018-07-06 Федеральное государственное бюджетное военное образовательное учреждение высшего образования "Черноморское высшее военно-морское ордена Красной Звезды училище имени П.С. Нахимова" Министерства обороны Российской Федерации Вероятностный вычитатель
TWI799722B (zh) * 2018-03-01 2023-04-21 鈺創科技股份有限公司 收集與分析資料的裝置
CN108648323B (zh) * 2018-05-10 2021-02-19 广州市申迪计算机系统有限公司 目标信息的选取方法、装置、计算机设备和存储介质
US20200027567A1 (en) 2018-07-17 2020-01-23 Petuum Inc. Systems and Methods for Automatically Generating International Classification of Diseases Codes for a Patient Based on Machine Learning
WO2020093201A1 (zh) * 2018-11-05 2020-05-14 北京大学深圳研究生院 基于gspn和鞅理论网络空间拟态防御的安全性建模量化方法
WO2020183250A1 (en) * 2019-03-12 2020-09-17 Ajitkumar Dhanraj Hatti A system for generation and verification of identity and a method thereof
US11654635B2 (en) 2019-04-18 2023-05-23 The Research Foundation For Suny Enhanced non-destructive testing in directed energy material processing

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3400035A1 (de) 1983-01-07 1984-07-12 General Electric Co., Schenectady, N.Y. Simulator fuer statistisches rauschen
US5430836A (en) 1991-03-01 1995-07-04 Ast Research, Inc. Application control module for common user access interface
JPH05241593A (ja) * 1991-12-25 1993-09-21 Matsushita Electric Ind Co Ltd 時系列信号処理装置
GB2288519A (en) * 1994-04-05 1995-10-18 Ibm Data encryption
EP0806068B1 (en) 1995-01-25 2001-09-19 Haworth, Inc. Modular communication system
JPH1020781A (ja) * 1996-06-28 1998-01-23 Nippon Telegr & Teleph Corp <Ntt> 電子署名方法、その検証方法および装置
US6104811A (en) * 1996-08-16 2000-08-15 Telcordia Technologies, Inc. Cryptographically secure pseudo-random bit generator for fast and secure encryption
US5909494A (en) * 1997-02-14 1999-06-01 At&T Corp. System and method for constructing a cryptographic pseudo random bit generator
US6243635B1 (en) 1997-08-27 2001-06-05 Nartron Corporation Integrated seat control with adaptive capabilities
JPH11109859A (ja) * 1997-10-06 1999-04-23 Nec Corp 擬似乱数発生方法および装置
US6298481B1 (en) 1998-10-30 2001-10-02 Segasoft, Inc. System for modifying the functionality of compiled computer code at run-time
US7058075B1 (en) 1999-06-15 2006-06-06 Cisco Technology, Inc. Self-configuring interface for communication protocols
US6678853B1 (en) 1999-12-17 2004-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for generating random code
US7024690B1 (en) * 2000-04-28 2006-04-04 3Com Corporation Protected mutual authentication over an unsecured wireless communication channel
US7739409B2 (en) 2000-09-26 2010-06-15 King Green Ltd. System and method for making available identical random data to seperate and remote parties
ATE348359T1 (de) 2001-01-16 2007-01-15 Ericsson Telefon Ab L M Zufallszahlengenerator basierend auf komprimierung
US6792439B2 (en) * 2001-04-13 2004-09-14 Science Applications International Corp. Method and apparatus for generating random numbers with improved statistical properties
FR2829643A1 (fr) * 2001-09-12 2003-03-14 Everbee Wireless Ltd Procede pour generer des nombres aleatoires
US20040205567A1 (en) 2002-01-22 2004-10-14 Nielsen Andrew S. Method and system for imbedding XML fragments in XML documents during run-time
US7209561B1 (en) * 2002-07-19 2007-04-24 Cybersource Corporation System and method for generating encryption seed values
US7139785B2 (en) 2003-02-11 2006-11-21 Ip-First, Llc Apparatus and method for reducing sequential bit correlation in a random number generator
EP1450250B1 (en) * 2003-02-11 2006-08-23 IP-First LLC Random number generator with selectable dual random bit string engines
US7085791B2 (en) * 2003-02-14 2006-08-01 Lucent Technologies Inc. Method and apparatus for generating a pseudo random number
US7502468B2 (en) 2003-09-02 2009-03-10 Ncipher Corporation Ltd. Method and system for generating a cryptographically random number stream
US7523305B2 (en) * 2003-12-17 2009-04-21 International Business Machines Corporation Employing cyclic redundancy checks to provide data security
US7770014B2 (en) * 2004-04-30 2010-08-03 Microsoft Corporation Randomized signal transforms and their applications
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US20050271207A1 (en) * 2004-06-05 2005-12-08 Helmut Frey Method and system for chaotic digital signature, encryption, and authentication
US7191372B1 (en) * 2004-08-27 2007-03-13 Xilinx, Inc. Integrated data download
US7552156B2 (en) 2004-08-30 2009-06-23 Nunes Ryan J Random number generator
BRPI0517026A (pt) * 2004-10-25 2008-09-30 Rick L Orsini método e sistema analisador de dados seguros
US20060216524A1 (en) 2005-03-23 2006-09-28 3M Innovative Properties Company Perfluoropolyether urethane additives having (meth)acryl groups and hard coats
JP4774509B2 (ja) * 2005-05-13 2011-09-14 国立大学法人お茶の水女子大学 擬似乱数発生システム
WO2007029330A1 (ja) 2005-09-09 2007-03-15 Mitsubishi Denki Kabushiki Kaisha 擬似乱数生成装置
GB0602641D0 (en) 2006-02-09 2006-03-22 Eads Defence And Security Syst High speed data processing system
US7720225B2 (en) 2006-03-07 2010-05-18 Research In Motion Limited Table splitting for cryptographic processes
CN101473298A (zh) 2006-06-20 2009-07-01 Nxp股份有限公司 随机数发生器系统、产生随机数的方法
US20080076525A1 (en) 2006-08-25 2008-03-27 Igt Quantum gaming system
JP4258551B2 (ja) * 2007-01-25 2009-04-30 日本電気株式会社 認証システム、認証方法、及び認証プログラム
US7962539B2 (en) * 2007-04-30 2011-06-14 International Business Machines Corporation System, method and device of generating a random value
US8478980B2 (en) * 2007-05-18 2013-07-02 Verimatix, Inc. System and method for defining programmable processing steps applied when protecting the data
US8171068B2 (en) * 2007-08-31 2012-05-01 International Business Machines Corporation Generating unique pseudorandom numbers
US8448002B2 (en) 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US8312071B2 (en) 2008-04-11 2012-11-13 International Business Machines Corporation Method and structure for provably fair random number generator
US8010846B1 (en) * 2008-04-30 2011-08-30 Honeywell International Inc. Scalable self-checking processing platform including processors executing both coupled and uncoupled applications within a frame
US9292259B2 (en) 2008-08-06 2016-03-22 Cassy Holdings Llc Uncertainty random value generator
US8324824B2 (en) 2009-01-29 2012-12-04 Ixys Corporation 1-wire communication protocol and interface circuit
US9342508B2 (en) 2009-03-19 2016-05-17 Microsoft Technology Licensing, Llc Data localization templates and parsing
US9207911B2 (en) 2009-07-31 2015-12-08 Cassy Holdings Llc Modular uncertainty random value generator and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022177984A1 (en) * 2021-02-16 2022-08-25 Cassy Holdings Llc High clock-efficiency random number generation system and method

Also Published As

Publication number Publication date
US9778912B2 (en) 2017-10-03
JP2019012547A (ja) 2019-01-24
US20180074790A1 (en) 2018-03-15
EP2856331A4 (en) 2016-06-15
JP6400640B2 (ja) 2018-10-03
US9990180B2 (en) 2018-06-05
US10635399B2 (en) 2020-04-28
JP2015519669A (ja) 2015-07-09
KR20150004908A (ko) 2015-01-13
EP2856331A1 (en) 2015-04-08
KR101961843B1 (ko) 2019-03-25
JP5976928B2 (ja) 2016-08-24
KR101677557B1 (ko) 2016-11-18
JP2017016667A (ja) 2017-01-19
KR101772002B1 (ko) 2017-08-28
US20170371623A1 (en) 2017-12-28
KR20160133014A (ko) 2016-11-21
US9965249B2 (en) 2018-05-08
US20180011692A1 (en) 2018-01-11
KR20170099407A (ko) 2017-08-31
US20120303924A1 (en) 2012-11-29
WO2013181196A1 (en) 2013-12-05
KR20180115343A (ko) 2018-10-22

Similar Documents

Publication Publication Date Title
JP6616471B2 (ja) 確率的処理
RU2619895C1 (ru) Система и способы для шифрования данных
JP5886375B2 (ja) 不確定性ランダム値発生器
Johnson et al. A PUF-enabled secure architecture for FPGA-based IoT applications
Lazar et al. Why does cryptographic software fail? A case study and open problems
Bortolozzo et al. Attacking and fixing PKCS# 11 security tokens
CN111049897B (zh) 小程序包的加密上传和解密部署方法、装置、设备和介质
WO2020157590A1 (en) Systems, methods, and storage media for obfuscating a computer program by representing the control flow of the computer program as data
Ateniese et al. Secure outsourcing of cryptographic circuits manufacturing
CN104965701B (zh) 获取应用信息的方法及装置
US20170061106A1 (en) Anti-reverse engineering unified process
WO2015110899A1 (en) Method of protecting secret data when used in a cryptographic algorithm
US20160380766A1 (en) Encryption system with a generator of one-time keys and a method for generating one time-keys
US11277445B2 (en) Programming target devices
Benadjila et al. Randomness of random in Cisco ASA
Marchand et al. Firmware Integrity Protection: A Survey
Paju Distributed EaaS simulation using TEEs: A case study in the implementation and practical application of an embedded computer cluster
Jackson A Trivium-Inspired Pseudorandom Number Generator with a Statistical Comparison to the Randomness of SecureRandom and Trivium
Abrahamsson Security Enhanced Firmware Update Procedures in Embedded Systems
Andersen et al. True Random Bit Generation
Vigário Assessing and Addressing the Security of Persistent Data in the Android Operating System
Abdel-Hamid Watermarking techniques for intellectual property protection in SOC designs
Höberl Securing Visual Sensor Nodes with Physically Unclonable Functions

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181002

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190905

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191107

R150 Certificate of patent or registration of utility model

Ref document number: 6616471

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250