JP2009531761A - 乱数を発生するための方法および装置 - Google Patents

乱数を発生するための方法および装置 Download PDF

Info

Publication number
JP2009531761A
JP2009531761A JP2009502097A JP2009502097A JP2009531761A JP 2009531761 A JP2009531761 A JP 2009531761A JP 2009502097 A JP2009502097 A JP 2009502097A JP 2009502097 A JP2009502097 A JP 2009502097A JP 2009531761 A JP2009531761 A JP 2009531761A
Authority
JP
Japan
Prior art keywords
bit
bits
generated
random
value
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.)
Pending
Application number
JP2009502097A
Other languages
English (en)
Inventor
アラン シューマッハ
Original Assignee
シューマッハ,アラン
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 シューマッハ,アラン filed Critical シューマッハ,アラン
Publication of JP2009531761A publication Critical patent/JP2009531761A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】ソフトウェアに基づき高品位の乱数を発生すること
【解決手段】極めて一般的な方法では、コイン投げの結果は、ランダムに分布した同じ数の0ビットと1ビットとを含むランダムビットテーブルから1つのビットをランダムに選択することにより、再現される。発生すべき乱数はコイン投げシミュレーションのその後の結果からビットごとに組み合わせられる。従って、nRND個のビットBR(ここで、1≦i≦nRND−1である)を有する乱数を発生するための方法は、a)mBFT個のアドレス指定可能なビットBT(ここで、0≦j≦mBFT−1である)を有するスタティックビットテーブルBFT(このスタティックビットテーブルは同じ数の「0」ビットと「1」ビットとを任意の分布で含む)を設けるステップと、b)1≦i≦nRND−1の前記乱数のビットBRiに対し、0からmBFT−1までのレンジ内のアドレスFAを発生し、前記スタティックビットテーブルから前記アドレスFAを有するビットBTFAを選択し、前記スタティックビットテーブルからの前記ビットBTFAに等しくなるよう、前記乱数のうちの前記ビットBR(BR=BTFA)をセットするステップとを備える。

Description

本発明は、一般的には、真の乱数を発生するための方法および装置に関し、より詳細には、かかる乱数を発生するためのソフトウェアに基づく方法および装置に関する。
乱数は、種々の目的のために使用され、シミュレーション研究、情報処理、通信および暗号化などのシステムでキーとなる役割を果たしている。
乱数は、他のより長いシーケンスの疑似乱数を作成するプロセスのための初期入力、すなわちシードとして使用されることが多い。真の乱数は一般に、同じシーケンスの結果を発生するのに繰り返すことのできない、物理的処理の結果として得られる。例えば原子核同位体の崩壊、雷放電によって生じる静電荷、または地球の磁気球体におけるシフトによって誘導されるスプリアスな電荷は、すべて乱数の発生を促進するのに使用できるが、これら乱数は別の場所または別の時間では再生できない。
真の乱数発生器は、統計的に互いに独立した出力を発生する。従って、所定の時間におけるデバイスの出力またはステートの一部のセットの折衷は、過去に発生された、または将来発生される乱数のセキュリティを損なうものではない。他方、真の乱数発生器は、設計が技巧的であり(多くの設計は、精密な製造プロセスに依存している)、これらはテストが困難であり、チップの入力(例えばVcc)を操作し得る敵対者に対して脆弱であり、乱数を発生するレートは通常かなり低い。
より高速かつより低コストで乱数を発生するには、多少とも許容できるランダム性特性を示す疑似乱数を発生するような数学に基づくいくつかのプロセッサがこれまで開発されている。
これらプロセスは、乱数に類似するが、技術的にはランダムでない結果を発生するので、適切には疑似乱数処理と称することがきる。これらプロセスは、短い乱数シードを、乱数に類似する特性を有する、より長い疑似乱数シーケンスに変換するようになっており、初期の乱数シードおよびプロセスの性質からその後の疑似乱数のすべてが、厳密に誘導される。
高速処理速度は、これら技術のキーとなる利点であり、処理における計算が複雑であるので、処理の結果生じる疑似乱数シーケンスを予測することは極端に困難である。しかしながら、一旦初期乱数シードが提供されると、プロセスに新しいランダム性は導入されない。
本発明の目的は、高品位の乱数を発生するためのソフトウェアに基づく方法を提供することにある。
この目的は、請求項1に記載の、乱数を発生するための方法によって達成される。この方法は、ベルヌーイの試行のように、「公正な」コインを投げると、裏と表が出る確率が正確に50%となることに対応して、0ビットになるか1ビットになるかの確率が、正確に50%であるという原理に基づく。コイン投げにおける決定的な事実は、前の結果と次の結果とが独立していることである。ランダム性の異なるソースを組み合わせることにより、現時点で示される方法は、ソフトウェアによってこのようなコイン投げの原理をまねたものである。
極めて一般的な方法では、コイン投げの結果は、ランダムに分布した同じ数の0ビットと1ビットとを含むランダムビットテーブルから1つのビットをランダムに選択することにより、再現される。発生すべき乱数はコイン投げシミュレーションのその後の結果からビットごとに組み合わせられる。従って、nRND個のビットBR(ここで、1≦i≦nRNDである)を有する乱数を発生するための方法は、
a)mBFT個のアドレス指定可能なビットBT(ここで、0≦j≦mBFT−1である)を有するスタティックビットテーブルBFT(このスタティックビットテーブルは同じ数の「0」ビットと「1」ビットとを任意の分布で含む)を設けるステップと、
b)1≦i≦nRNDの前記乱数のビットBRに対し、0からmBFT−1までのレンジ内のアドレスFAを発生し、前記スタティックビットテーブルから前記アドレスFAを有するビットBTFAを選択し、前記スタティックビットテーブル(BR=BTFA)からの前記ビットBTFAに等しくなるよう、前記乱数のうちの前記ビットBRをセットするステップとを備える。
ビットフィッシングテーブルBFTと称されるスタティックビットテーブルは、同じ数の「0」ビットと「1」ビットとで、ランダムに満たされた一次元のビットテーブルでよい。BFT内のランダムなビットは、本発明の発生される乱数出力の「エンドレスな」変化および予測不能性の基礎を成す。本発明に示すような方法に含まれる「0」ビットおよび「1」ビットのランダムな分布を生じさせる任意の適当な方法により、ランダムビットテーブルBFT自身をランダムに発生する。
ディメンジョン(ランダムビットの総数)は、アプリケーションのタイプによって決まる。実現上の理由から、このディメンジョンは、(8キロバイトに対応する)65536ビットから(512メガバイトに対応する)4294967296ビットまでの範囲の2の指数として選択することが好ましい。後者の限界は、32ビットプロセッサアーキテクチャにおける技術的限界を構成するものと見なされる。
暗号アプリケーションに対しては8KB、16KB、32KBおよび64KBのバージョンが特に重要である。その理由は、これらバージョンはスマートカードまたはUSBトークンの安全メモリ内に容易に適すからである。BFTは、発生される数のランダム性に対する決定的な要素であるので、シードではなく、BFTだけが暗号アプリケーションにおいて秘密に保持すべき要素となる。トップのセキュリティアプリケーションには8KBだけの秘密で十分であることが理解できよう。
実際に8KB(265535)の2003529...×1019728の可能なテーブルの間では、32768個の「0」ビットおよび32768個の「1」ビットを有する6,244451...×1019725個の異なるテーブルが存在する。従って、8キロバイトの所定のBFTに対しては、元のビットと比較して50%以上の同一ビットを有するテーブルを探す前に、約10141個のテーブルを発生しなければならない。60%以上の同じビットを有するテーブルを探すには、約10572個のテーブルを発生し、70%同じビットまで達しなければならず、次に102341個のテーブルを発生しなければならない、などである。地球上の人口が1000億人に達し、どの人も毎秒1つのテーブルを必要とすると仮定した場合、我々は1000年たってもビット位置が55%以上同じである2つのテーブルを見つけることはできないであろう。所定のテーブルに対してビット位置が55%以上同じテーブルを得る確率は1:10141であるので、いわゆる誕生日パラドックスを適用すると、ビットが55%同じである2つのテーブルを探すには、1070以上のテーブルを必要とする。1000年以内に発生されるテーブルの総数が合計3153×1021であることを検討すると、これらテーブルを探し出す見込みは極めて低い。
本発明に係わる方法は、簡単な8キロバイトの秘密テーブルのこのような膨大なポテンシャルを、何十億の何十億倍もの、予測不能で、かつ良好に分布した乱数に効率的に変換できる。
本発明は、乱数を発生するためにビット位置ごとに処理を進めることに留意すべきである。このため、発生すべき乱数の長さnRNDは、特定のアプリケーションに適した任意の数に等しくなるように選択できる。
スタティックビットテーブルBFTから選択すべきビットのアドレスFAは、所定のレンジ内のアドレスの高品位のランダム性を保証する任意の適当な方法によってランダムに発生できる。本発明の好ましい実施例は、アドレスFAを発生するための前記ステップは、
a)基本ランダム性値BRV(各基本ランダム性値BRVはlビットの長さを有している)の数qを提供するステップと、
b)前記q個の基本ランダム性値BRVのうちの各々のlビットのうちの選択されたビットを抽出し、前記選択されたビットから前記アドレスFAを組み立てるステップを備える。
可能な一実施例では、4つの基本ランダム性値BRV1からBRV4まで存在し、すなわちq=4であり、各値は32ビットの長さを有し、すなわちl=32となる。次に最終アドレスは、4つのBRVから異なるビット位置を組み立てたものとなる。
良好に分布した乱数を得るには、発生される最終アドレスFAも、ビットフィッシングテーブルBFTのアドレススペース全体にわたってランダムに分布していなければならない。発生されるアドレスのランダム性を保証するために、前記q個の基本ランダム性値BRVのlビットの選択されたビットを抽出する前記ステップは、前記q個の基本ランダム性値BRVの各々と多数の所定の特定の最終アドレスアセンブリパラメータFAAPのうちの選択されたビットとのAND演算を実行するステップを含み、前記選択されたビットからの前記アドレスFAを組み立てる前記ステップは、前記AND演算の結果を最終アドレスレジスタに転送するステップを含むことが好ましい。
好ましい実施例では、前記最終アドレスパラメータFAAPは、発生すべき乱数の各ビットBRiに対し、前記アドレスFAを組み立てるために、各基本ランダム性値BRVから選択されたビットの数pFAが同じ(pFA=mBFT/q)となるように構成されている。前記最終アドレスパラメータFAAPは、乱数のl/pFAビットBRの発生の後に、基本ランダム性値BRVの前記lビットのうちの各ビットが正確に1回選択されているように構成されている。このことは、前記基本ランダム性値BRVの各ビットが1回だけ使用され、かつ所定の回数の実行の後で各BRVのビットのすべてが1回しか使用されないようにFAAPsが決定されていることを意味する。
上記実施例では、最終アドレスアセンブリパラメータFAAPは、例えば、次のビットをフィッシングするために最終BFPアドレスを組み立てるのに使用される16個の特殊な値(4の4つのグループ)となっている。これら16の値は、4つの列A、B、C、Dと、4つの行1、2、3、4に配列できる。
BFTから抽出するための次のビットBRiを決定するよう、最終アドレスFAを組み立てるには、1つの列(A1、A2、A3、A4)からの4つのパラメータを使用する。次のサイクル、すなわち次のビットBRiのFAの発生中は、本方法はBラインからの4つのパラメータを使用し、次にCラインからの4つのパラメータを使用し、次にDラインからの4つのパラメータを使用する。良好に計算されたFAAPは、アドレスのどのビットも適当に組み立てられることを保証する。
FAAP値は、4サイクル中に異なるビットとのアドレス組み立てにどのBRVも関与するように選択されている。FAAPの値は、BRVのうちの同じビットが二度と使用されないように決定されており、そうでない場合には、発生される乱数の良好な分布が危険なものとなる。行ごとの4つのパラメータにおいて位置ごとに、1つのパラメータを使用することによって、このことを満たしている。
FAAP値は(極めてランダムのように見える)所定のテーブルとして任意に決定でき、プログラム命令内に含めることができる。暗号アプリケーションにおける秘密セッション鍵としてランダムFAAPテーブルを使用したい場合、これらFAAP値はランダムに発生されたテーブルでもよい。
前記基本ランダム性値BRVは、疑似乱数PRNDを発生し、少なくとも1つのフィードバック変更子の値FBM(前記フィードバック変更子は、所定の数の、前に発生されたビットBRによって影響される)を提供し、前記発生された疑似乱数のうちの少なくとも一部と前記少なくとも1つのフィードバック変更子の値FBMとのXOR演算を実行することによって発生することが好ましい。
疑似乱数PRNDは、例えばリニア合同発生器によって発生でき、lPRNDビットの長さを有し、少なくとも1つのフィードバック変更子FBMは、lビットの長さ(lPRND≧lである)を有することができる。この場合、基本ランダム性値BRVの発生は、前記発生された疑似乱数PRNDの最後のlビットと、前記少なくとも1つのフィードバック変更子FBMとのXOR演算を含むことができる。
本方法の好ましい実施例では、基本ランダム性値の形成に複数のフィードバック変更子を使用する。本方法は、BRVを形成するために4つの32ビット値(FBM1〜FBM4)のテーブルを使用できる。
フィードバック変更子は、前に発生されたビットBR、例えば最後に発生された32ビットの所定の数によって影響されるはずである。この理由から、フィードバック変更子FBMは、所定の32ビット長さの基本変更子の値BMと最後に発生された32のビットBRとのXOR演算を実行することによって発生することが好ましい。本方法の可能な実施例では、前記少なくとも1つのフィードバック変更子の値FBMは、複数の所定のlビット長さの基本変更子の値BMのうちの1つと前に発生された最後のl個のビットBRとのXOR演算を実行することによって発生され、フィードバック変更子の各発生後に、前記複数の基本変更子の値BMのうちの基本変更子の値BMを周期的に入れ替える。この基本変更子は、例えば16個の無符号の32ビットの整数BM1〜BM16のテーブルから構成できる。
発生された最後の32ビットのフィードバックは、発生されるFBMの値に影響するが、その値自身を決定するわけではない。それにもかかわらず、我々は発生された最後の32ビットがこれら値の計算に影響することを示すために、フィードバックなる用語を使用している。
本方法の好ましい実施例では、フィードバック変更子FBMは、周期的に、例えば8、16、24または32ビットのリクエストされた乱数が終了するごとに更新される。このことは、例えばフィードバック変更子FBM3をFBM4へ変換し、FBM2をFBM3へ変換し、FBM1をFBM2へ変換し、次のBMと発生された最後の32ビットとのXOR演算をすることにより、新しいFBM1を形成することによって達成できる。BM16を使用した後に、BM1と共に再び次のサイクルが開始する。
基本変更子BMは、本方法の初期化ステップ中に発生できる。これら値を計算するための推奨される方法は、2つの値のブロックを交互に満たすことにある。すなわちこれら値の最良の秘密を保証するために、BFTのランダムにフィッシングされたビットとXOR演算されたLCGの64ビットの疑似乱数で1つのブロックを満たし、次に264の可能なビットからの所定のシードに対するユニーク性を保証するために、変更されていないLCG乱数で1つのブロックを満たすことである。
本発明の方法は、任意の標準的なコンピュータ、例えば簡単なパソコンで容易に実施できる。従って、本発明は、乱数を発生するための上記方法のすべてのステップを実行するためのプログラムコードを含むコンピュータプログラムまたはこれまで開示した乱数を発生するための方法をプログラマブルプロセッサに実施させるようになっている命令を含む、コンピュータで使用可能なメディアに記憶されたコンピュータプログラム製品にも関する。
更に本発明は、前記プログラムがコンピュータで実行されるときに、本発明の方法のすべてのステップを実行するためのプログラムコードを有するメモリ手段と、前記方法を実施するために、前記プログラムコードを実行させるための実行環境とを含むコンピュータデバイスにも関する。好ましい実施例ではコンピュータデバイスは起動時に一つあるいはそれ以上の前期方法に対する初期値パラメーターを修正するための手段をさらに有することができる。安全なメモリ内の同じチップに記憶されたランダムビットテーブルBFTを有しなければならない、かかるコンピュータデバイスは、再生産できない予測不能な乱数を発生するための有名なブラックボックスとなっている。
乱数を発生するための方法の一実施例の次の説明から、本発明はより明らかとなろう。
同じ確率で(最後に発生されるものを含む)所定長さのビットストリングに対する理論的に可能な組み合わせのどれかを得るために、我々は、現在の疑似乱数発生器の代数学的アプローチを放棄しなければならない。本発明に係わる方法の基本的な「エンドレスな」可能性は、ビットフィッシングテーブル(BFT)とも称される乱数テーブルから主に生じるものである。
このテーブルの大きさ、通常は2を指数とするビットの数は、8キロバイトの小さい数から512メガバイトの(32ビットのプロセッサに対する)技術的限界まで変化し得る。1と0を同じ確率で発生することを保証するために、同じ数の1ビットと0ビットをテーブルは有していなければならない。予測不可能性を最大限に保証するため、テーブルは十分に良質なランダム品質を保っていなければならない。
乱数を発生するために、本発明の方法は、50%の確率で1と0とを得るのにビット位置ごとの処理を行う。ビット当たりの第1ステップは、(ランダム性の異なるソースを組み合わせることにより)BFTのサイズのレンジ内のランダムアドレスFAを発生することであり、第2のステップは、ランダムテーブルからこのビットを取り出し、これを構築中の乱数に加えることである。
第1の場合の方法を作動させるには、64ビットバージョンの古典的な疑似乱数発生器(LCG)を使用できる。古典的なリニア合同発生器は、新しい方法を作動するためにしか使用されないが、本発明で提案する方法の出力は、LCGが発生する乱数に決して相関化しないことに留意すべきである。このLCGの主な特徴は、64ビットの264の異なるユニークな値が、ランダムに、かつ予測できる順序で生じることである。ランダム性の原理に対するこれら事実は、シードごとに最小264ビットからのストリングのユニーク性を保証するのに、本発明の方法で有利に使用される。よって他の可能な介入を受けることなく、個々のビットフィッシングテーブルBFT(264の可能なシードを有し、どのシードも少なくとも264ビットの異なるランダムストリングを発生するように)ごとに、少なくとも最低で2128ビットを確実に発生することができる。
このシード方法は、本発明の方法の初期部分であり、LCGが発生する数百の第1疑似乱数値を必要とする。このシード方法は2つの異なる目標を満たさなければならない。第1の目標は16の基本変更子(BM)に対する値を計算することであり、これら基本変更子は、LCGおよびBFTからの一部の情報を8個のレジスタ内で組み合わせ、更に8個のレジスタ内でLCGからの変更されていない値を組み合わせることによって計算される。LCGとBFTを組み合わせることにより、シードについて知り、更にシードごとのユニーク性を保証する他の半分を変更しないことにより、これらレジスタからの値を推測する可能性を排除できる。これらの値は次回のさいシーディングまで変更されない。
第2の目標は、パイプを満たすことである。このことは、LCG疑似乱数の助けによりBFTからビットを抽出することにより、通常の発生サイクルで必要な異なるレジスタに対するスタート値をランダムに計算することを意味する。このことは、4つの32ビットフィードバック変更子(FBM)、4つの32ビット基本ランダム性値(BRV)および発生された最後の32ビットを有するレジスタに関係している。
オプションのスピード最適化方針として、最初のサイクルでBFTの選択された部分として検討すべき乱数値で32ビットのレジスタを満たすことができる。この最初の発生サイクルでは、この乱数値を使用し、常に1サイクル進んでいる、次のサイクルである第2サイクルで使用すべき次の乱数値に対するリクエストをスタートする。このようにすることにより、プロセッサが待ち時間中に一部の作業を行うことができるようにメモリ内のBFTへアクセスする際の不快な遅延を部分的に解消できる。
このシード方法が一旦終了すると、「コイン投げ」をスタートできる。提案する方法の基本サイクルは、4ビットを発生することである。これは、BFTから選択すべきビットの最終アドレスを計算するために使用される方法に起因するからである。実際の構成例では、スピードを最適にするためにワンラウンドにおいて8ビットの数を発生するのに2つの基本サイクルをつなげることができる。
1つのビットの発生は次のように進む。
・次のLCG数を計算する。
・LCGからの、上方の32ビットと1つのFBMとを(4つのうちの1つを周期的に)XOR演算することにより、1つのBRVを(4つのうちの1つを周期的に)再計算する。
・特定の最終アドレス組み立てパラメータ(FAAP)に定義された選択されたビットを、「AND」命令により、BRV1から最終アドレス(FA)レジスタに転送する。
・次のFAAPに基づき、BRV2からの一部のビットを加える。
・BRV3からも同じように行う。
・BRV4からも同じように行う。
・これら演算の後で、BFTから抽出するためのビットのアドレスを得て、構築中の乱数にこのビットを加える。
(8ビット、16ビット、24ビットまたは32ビットの無符号の整数に対し)8ビットの発生を1回、2回、3回または4回実行した後に、FBMsのテーブルを更新するために、このメインサイクルを離れなければならない。FBM3をFBM4に変換し、FBM2をFBM3に変換し、FBM1をFBM2に変換する。FBM1は、発生された最後の32ビットと、周期的に決定された基本変更子(BM)とをXOR演算することによって再計算される。
次に、1、2、3または4バイトに対する次の発生サイクルを再びスタートできる。より多数の乱数を高速で発生することが必要である場合、一度に32ビットを発生することが推奨される。一方、本明細書の読者は、基本変更子サイクルを異なるように進め、最後の32ビットレジスタが同じにならないようにしているので、32ビットの1回のリクエストから16ビットの2回のリクエストへ(恐らくは時間クロックに基づき、または経過時間に基づき)ランダムに変更することにより、再生できない乱数の発生が可能となることが、これら説明から容易に理解できよう。本可能性については、実行時ランダム性という用語が使用されている。
説明するように264ビットごとの264の異なるビットストリング(LCGの異なるシードごとに1つ)を得る。異なるBFTsに対しては、当然ながら完全に異なるストリングを得ることになる。
このことは本方法がLCGの時間外で働く前に、所定のテーブルに対し、かつシードごとに258個の64ビットの整数しか有しないことを意味するのではないかと主張する人があろう。実際にLCGの最初のサイクルの後で、FBMsの同じステートに侵入する機会が生じる低い可能性が存在する。
しかしながら、このことは心配する問題ではない。まず、第1の理由は、毎秒10億個の64ビットの整数を発生する場合でも、この発生までに9年以上待たなければならないと容易に計算できるからであり、第2の理由は、ある日、この問題が生じた場合、264ビットを発生した後に自動的に新しいシーディングを強制できるからである。マルチプロセッサシステムでの並列処理により、大量の乱数を発生したい場合、プロセッサごとに異なるBFTを取り出したり、または1つのBFTを取り出し、プロセッサごとに異なるシードを使用するように選択できる。
ラン時間のランダム性またはFAAPsなどの自動変更のような、他の可能性も存在するので、PRGNsで作業する場合に行わなければならないような周期性を計算しようとする試みは適当でないと信じられる。本発明の方法は、確率の基本法則によってしか制限されない、(256ビットの長さを検討する場合)今まで見られず、かつ繰り返しのない乱数を発生する可能性を、どのスピードでも提供できる。所望するように乱数を再現可能なものとして、または再現できないものとして得ることができる。暗号アプリケーションのために真に再現できない乱数を得るには、パワーアップごとにシードを自動的に増加し、外部から読み取りできない安全なメモリ内の同じチップに記憶された秘密BFTを有する特別設計のマイクロコンピュータを使用することが推奨される。かかるマイクロコンピュータは、再現できない予測不能な乱数を発生するための有名なブラックボックスとなる。
達成可能な速度に関して3GHzの64ビットEMTを有するインテルペンティアム4では、8KB BFTを用いると、毎秒124メガビット(すなわち毎秒15.5メガバイト)まで、更に64KB BFTを用いると、毎秒115メガビットまでを測定した。180MHzで作動する小型のARM9では、得られたレートは毎秒1.3メガビットであった。プログラム言語はハンドコード化されたアセンブラー最適化を行わないC−99である。
キャッシュとメインメモリとの間のアクセス速度の差に起因し、極めて大きいBFTsを用いた場合に速度は急激に低下する。
結論として、本発明は真の乱数の特性を有する高品位の乱数を発生するためのソフトウェアに基づく方法を提案するものである。従って、この方法は、任意の標準的なコンピュータで真の乱数の発生を可能にする。
ほとんどの公知の疑似乱数発生器と対照的に、本方法によって発生される乱数は、前方向および後方向の双方に完全に予測不能である。暗号アプリケーションのための特別設計された疑似ランダムビット発生器を除けば、PRNGsは前方向および後方向に予測可能な乱数を発生する。乱数は数学的な関数からの結果であるので、数の小さいシーケンスを知れば、前に発生されたシーケンスおよび次のシーケンスを計算できる。
提案する方法は、ビットフィッシングテーブルの概念に基づき、乱数の発生を可能にし、このため、ビットフィッシングテーブルが秘密である限り、シーケンスの一部の知識に基づいて既知の部分の前後の未知のストリングを計算することは絶対不可能である。
BFTについては知っているが、シードについては知らない場合、シードを計算することはできないが、恐らくはこれまで使用されたシードを探すために264個の可能なシードのすべてを試行しなければならないことになる。シードおよびBFTについては知っているが、FAAPの値を有していなければ、ランダムに計算されたFAAPsを我々が使用するケースでは、10億の10億倍もの可能なFAAPsを試行しなければならないことになる。
更にPRNGsのすべては基本的には周期性を有しており、その後、PRNGは同じ乱数を繰り返し始める。これはPRNGs内で使用される数学的関数に起因するものである。古典的な32ビットのLCGに対して、実際に最新のデスクトップコンピュータで数分内にこの事実を証明できるが、48ビットまたは64ビットのバージョンに対しては、時間がより長くなることに起因して、この作業はより困難となる。提案する方法に対し、我々はこの問題には関係していない。BFTのどのバージョンも、264の長さの264の異なるストリングのユニークな発生を保証できる。これまでの説明で示したように、この値、すなわちランタイムのランダム性およびFAAPsの変更を超える異なる可能性が存在する。発生のために264ビットの長さを超えるよう、この方法を拡張する最も容易な方法は、旧いシード+1で自動的に新しくシーディングすることである。シーディングのこのような簡単な変更は、異なるストリングの数を2128まで拡張できる。
「PRNGの出力は、一般にシードの決定的関数である。すなわちすべての真のランダム性はシードの発生に制限される。プロセスの決定的性質により、「疑似ランダム」なる用語となっている。疑似ランダムシーケンスの各要素は、シードから再現可能であるので、疑似ランダムシーケンスの再生または有効性が必要な場合、シードをセーブすればよい。」(NIST特別出版800−22Aのパラグラフ2、ポイント1.1.4、暗号用途のための乱数および疑似乱数発生器に適した統計学的テスト)現時点で提案する方法の場合、シードはある役割を果たすが、主要な役割を果たすわけではなく、絶対的に唯一の役割を果たすわけではない。ランダム性の主なソースは、ビットフィッシングテーブル(BFT)であり、シード、FAAPsおよびランタイムランダム性により発生器の作動中に導入される外部の可能なランダム性は、このランダム性の補足的ソースとなっている。

Claims (15)

  1. RND個のビットBR(ここで、1≦i≦nRNDである)を有する乱数を発生するための方法であって、この方法は、
    a)mBFT個のアドレス指定可能なビットBT(ここで、0≦j≦mBFT−1である)を有するスタティックビットテーブルBFT(このスタティックビットテーブルは同じ数の「0」ビットと「1」ビットとを任意の分布で含む)を設けるステップと、
    b)1≦i≦nRNDの前記乱数のビットBRに対し、
    i.0からmBFT−1までのレンジ内のアドレスFAを発生し、
    ii.前記スタティックビットテーブルから前記アドレスFAを有するビットBTFAを選択し、
    iii.前記スタティックビットテーブルからの前記ビットBTFAに等しくなるよう、前記乱数のうちの前記ビットBRをセットする(ここでBRi=BTFAである)ステップとを備える、乱数を発生するための方法。
  2. アドレスFAを発生するための前記ステップは、
    a)基本ランダム性値BRV(各基本ランダム性値BRVはlビットの長さを有している)の数qを提供するステップと、
    b)前記q個の基本ランダム性値BRVのうちの各々のlビットのうちの選択されたビットを抽出し、前記選択されたビットから前記アドレスFAを組み立てるステップを備える、請求項1に記載の方法。
  3. 前記q個の基本ランダム性値BRVのlビットの選択されたビットを抽出する前記ステップは、前記q個の基本ランダム性値BRVの各々と多数の所定の特定の最終アドレスアセンブリパラメータFAAPのうちの選択されたビットとのAND演算を実行するステップを含み、前記選択されたビットからの前記アドレスFAを組み立てる前記ステップは、前記AND演算の結果を最終アドレスレジスタに転送するステップを含む、請求項2に記載の方法。
  4. 前記最終アドレスパラメータFAAPは、発生すべき乱数の各ビットBRに対し、前記アドレスFAを組み立てるために、各基本ランダム性値BRVから選択されたビットの数pFAが同じ(pFA=mBFT/q)となるように構成されている、請求項3に記載の方法。
  5. 前記最終アドレスパラメータFAAPは、乱数のl/pFAビットBRの発生の後に、基本ランダム性値BRVの前記lビットのうちの各ビットが正確に1回選択されているように構成されている、請求項4に記載の方法。
  6. 前記基本ランダム性値BRVは、
    a)疑似乱数PRNDを発生し、
    b)少なくとも1つのフィードバック変更子の値FBM(前記フィードバック変更子は、所定の数の、前に発生されたビットBRによって影響される)を提供し、
    c)前記発生された疑似乱数のうちの少なくとも一部と前記少なくとも1つのフィードバック変更子の値FBMとのXOR演算を実行することによって発生される、請求項2〜5のうちのいずれか1項に記載の方法。
  7. 前記基本ランダム性値BRVは、
    a)リニア合同発生器によりlPRND(ここでlPRND≧l)のビット長さを有する疑似乱数PRNDを発生し、
    b)lビットの長さを有する少なくとも1つのフィードバック変更子の値FBM(前記フィードバック変更子は、所定の数の、前に発生されたビットBRによって影響される)を提供し、
    c)前記発生された疑似乱数のうちの最後のlビットと前記少なくとも1つのフィードバック変更子の値FBMとのXOR演算を実行することによって発生される、請求項2〜5のうちのいずれか1項に記載の方法。
  8. 前記少なくとも1つのフィードバック変更子の値FBMは、所定のlビット長さの基本変更子の値BMと前に発生された最後のl個のビットBRとのXOR演算を実行することによって発生される、請求項6または7に記載の方法。
  9. 前記少なくとも1つのフィードバック変更子の値FBMは周期的に更新される、請求項6または7のうちのいずれか1項に記載の方法。
  10. 前記少なくとも1つのフィードバック変更子の値FBMは、複数の所定のlビット長さの基本変更子の値BMのうちの1つと前に発生された最後のl個のビットBRとのXOR演算を実行することによって発生され、フィードバック変更子の各発生後に、前記複数の基本変更子の値BMのうちの基本変更子の値BMを周期的に入れ替える、請求項8〜9のうちのいずれか1項に記載の方法。
  11. 2つの値のブロックを交互に満たすことによって、すなわち前記スタティックビットテーブル(BFT)のランダムに選択されたビットと発生された疑似乱数とのXOR演算の結果を1つのブロックに満たすこと、および発生された変更されていない疑似乱数で1つのブロックを満たすことを交互に行うことによって、本方法の初期化ステップ中に前記基本変更子の値BMを発生する、請求項8〜10のうちのいずれか1項に記載の方法。
  12. 請求項1〜11のうちのいずれか1項に記載の乱数を発生するための方法をプログラマブルプロセッサに実行させるようになっている命令を特徴とする、コンピュータで使用可能なメディアに記憶されたコンピュータプログラム製品。
  13. 前記プログラムがコンピュータで実行されるときに、請求項1〜11のうちのいずれか1項に記載の方法のすべてのステップを実行するためのプログラムコードを含むコンピュータプログラム。
  14. 前記プログラムがコンピュータで実行されるときに、請求項1〜11のうちのいずれか1項に記載の方法のすべてのステップを実行するためのプログラムコードを有するメモリ手段と、
    請求項1〜11のうちのいずれか1項に記載の方法を実施するために、前記プログラムコードを実行させるための実行環境とを含むコンピュータデバイス。
  15. パワーアップごとに前記方法のための1つ以上の初期パラメータを補正するための手段を更に備える、請求項14に記載のコンピュータデバイス。
JP2009502097A 2006-03-31 2007-03-29 乱数を発生するための方法および装置 Pending JP2009531761A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP06112142A EP1840730A1 (en) 2006-03-31 2006-03-31 Method and apparatus for generating true random numbers
PCT/EP2007/053045 WO2007113214A1 (en) 2006-03-31 2007-03-29 Method and apparatus for generating random numbers

Publications (1)

Publication Number Publication Date
JP2009531761A true JP2009531761A (ja) 2009-09-03

Family

ID=37597075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009502097A Pending JP2009531761A (ja) 2006-03-31 2007-03-29 乱数を発生するための方法および装置

Country Status (6)

Country Link
US (2) US8370412B2 (ja)
EP (2) EP1840730A1 (ja)
JP (1) JP2009531761A (ja)
CN (2) CN102622204A (ja)
CA (1) CA2648080A1 (ja)
WO (1) WO2007113214A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1840730A1 (en) * 2006-03-31 2007-10-03 Alain Schumacher Method and apparatus for generating true random numbers
US20100058424A1 (en) * 2008-08-26 2010-03-04 Comcast Cable Holdings, Llc System and method for controlling signal traffic peaks on a video interactive network
US9160399B2 (en) 2012-05-24 2015-10-13 Massachusetts Institute Of Technology System and apparatus for decoding tree-based messages
FR3000826B1 (fr) 2013-01-07 2015-01-16 Morpho Procede d'acces a l'ensemble des cellules d'une zone memoire a des fins d'ecriture ou de lecture de blocs de donnees dans lesdites cellules.
CN109102616B (zh) * 2013-05-30 2022-08-05 丁义荣 可验证的计算机排位方法
US9270412B2 (en) * 2013-06-26 2016-02-23 Massachusetts Institute Of Technology Permute codes, iterative ensembles, graphical hash codes, and puncturing optimization
US9645793B2 (en) * 2013-12-05 2017-05-09 Infineon Technologies Ag Random permutation generator and method for generating a random permutation sequence
CN105005462B (zh) * 2015-09-06 2017-08-08 电子科技大学 一种混合式随机数发生器及其产生随机数的方法
KR101914701B1 (ko) * 2016-12-29 2019-01-14 한국과학기술원 스토캐스틱 컴퓨팅 기반의 에스엔지 및 이를 이용한 뉴로모픽 회로

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59151184A (ja) * 1983-01-07 1984-08-29 ゼネラル・エレクトリツク・カンパニイ ランダム・ノイズ・シミユレ−タ
US4499551A (en) * 1982-09-27 1985-02-12 At&T Bell Laboratories Rapid generation of discrete random variates from general distributions
JPS62144243A (ja) * 1985-12-18 1987-06-27 Nec Corp 乱数発生器
JPS6467022A (en) * 1987-09-07 1989-03-13 Mitsubishi Electric Corp Digital noise generator
JPH04123130A (ja) * 1990-09-13 1992-04-23 Nippon Telegr & Teleph Corp <Ntt> 任意確率分布に従う擬似乱数の発生回路
JPH07134647A (ja) * 1993-11-09 1995-05-23 Matsushita Electric Ind Co Ltd 乱数発生装置
FR2829643A1 (fr) * 2001-09-12 2003-03-14 Everbee Wireless Ltd Procede pour generer des nombres aleatoires

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3703727A (en) * 1971-06-18 1972-11-21 Bell Telephone Labor Inc Method for generating random numerical quantities
US20030112970A1 (en) * 2001-08-26 2003-06-19 Arindam Mitra How to generate unbreakable key through any communication channel
JP3696209B2 (ja) * 2003-01-29 2005-09-14 株式会社東芝 シード生成回路、乱数生成回路、半導体集積回路、icカード及び情報端末機器
EP1840730A1 (en) * 2006-03-31 2007-10-03 Alain Schumacher Method and apparatus for generating true random numbers
WO2008032044A1 (en) * 2006-09-13 2008-03-20 Astrium Limited Random number generation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4499551A (en) * 1982-09-27 1985-02-12 At&T Bell Laboratories Rapid generation of discrete random variates from general distributions
JPS59151184A (ja) * 1983-01-07 1984-08-29 ゼネラル・エレクトリツク・カンパニイ ランダム・ノイズ・シミユレ−タ
JPS62144243A (ja) * 1985-12-18 1987-06-27 Nec Corp 乱数発生器
JPS6467022A (en) * 1987-09-07 1989-03-13 Mitsubishi Electric Corp Digital noise generator
JPH04123130A (ja) * 1990-09-13 1992-04-23 Nippon Telegr & Teleph Corp <Ntt> 任意確率分布に従う擬似乱数の発生回路
JPH07134647A (ja) * 1993-11-09 1995-05-23 Matsushita Electric Ind Co Ltd 乱数発生装置
FR2829643A1 (fr) * 2001-09-12 2003-03-14 Everbee Wireless Ltd Procede pour generer des nombres aleatoires

Also Published As

Publication number Publication date
WO2007113214A1 (en) 2007-10-11
US8370412B2 (en) 2013-02-05
CA2648080A1 (en) 2007-10-11
US20100241680A1 (en) 2010-09-23
US20140136584A1 (en) 2014-05-15
EP1840730A1 (en) 2007-10-03
EP2002330B1 (en) 2015-05-20
CN102622204A (zh) 2012-08-01
EP2002330A1 (en) 2008-12-17
CN101416152A (zh) 2009-04-22

Similar Documents

Publication Publication Date Title
JP2009531761A (ja) 乱数を発生するための方法および装置
US6275586B1 (en) Cryptographically secure pseudo random number generator
US8131789B2 (en) True random number generator
JP2014178716A (ja) 不確定性ランダム値発生器
TWI220041B (en) Random number generator bit string filter
KR20090024804A (ko) 난수 발생기 시스템, 난수 생성 방법 및 컴퓨터 판독가능 매체
TW201636829A (zh) 具有改進的排程效率之密碼編譯雜湊電路
TW200409016A (en) Microprocessor with random number generator and instruction for storing random data
AL-khatib et al. Acoustic lightweight pseudo random number generator based on cryptographically secure LFSR
Matsumoto et al. Common defects in initialization of pseudorandom number generators
TW200415507A (en) Random number generator with selectable dual random bit string engines
Marsaglia Seeds for random number generators
Yadav Design and analysis of digital true random number generator
US8510359B2 (en) Pseudo-random number generation device, pseudo-random number generation program, and medium containing pseudo-random number generation program
JP4709685B2 (ja) 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置
US11907684B2 (en) High clock-efficiency random number generation system and method
Occil Random Number Generator Recommendations for Applications
JP4160150B2 (ja) 遊技機用乱数装置
JP6782863B1 (ja) 乱数生成器
Singh et al. An empirical study of non-cryptographically secure pseudorandom number generators
US11237800B2 (en) Time-shifted seed for random number generator
US20230273772A1 (en) High clock-efficiency random number generation system and method
Chugunkov et al. Develompent and Study of Stochastic Algorithms for Lightweight Devices Architecture
Wiśniewska Comparing quality of pseudo-and true-random numbers obtained from different sources
Jackson et al. Quadrivium: A Trivium-Inspired Pseudorandom Number Generator.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120110

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120203

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120210

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120302

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120515

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120810

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120817

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121211