JP2009054075A - 乱数の生成システム及び方法 - Google Patents

乱数の生成システム及び方法 Download PDF

Info

Publication number
JP2009054075A
JP2009054075A JP2007222240A JP2007222240A JP2009054075A JP 2009054075 A JP2009054075 A JP 2009054075A JP 2007222240 A JP2007222240 A JP 2007222240A JP 2007222240 A JP2007222240 A JP 2007222240A JP 2009054075 A JP2009054075 A JP 2009054075A
Authority
JP
Japan
Prior art keywords
random
pulse
random number
counter
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.)
Withdrawn
Application number
JP2007222240A
Other languages
English (en)
Inventor
Osamu Kameda
修 亀田
Masakazu Sato
雅一 佐藤
Noriyoshi Tsuyuzaki
典平 露崎
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to JP2007222240A priority Critical patent/JP2009054075A/ja
Priority to PCT/JP2008/065794 priority patent/WO2009028717A1/ja
Publication of JP2009054075A publication Critical patent/JP2009054075A/ja
Withdrawn legal-status Critical Current

Links

Images

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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 暗号技術や認証技術等で必須となる乱数(特に真正乱数)を多量に、安定的、かつ高速に生成する。
【解決手段】 複数個のランダムパルス発生器に対応して設けられた複数個のカウンタによって、その複数個のランダムパルス発生器にパルスが発生した後の経過時間をそれぞれカウントし、前記複数個のランダムパルス発生器の少なくとも一つにパルスが発生したとき、対応するカウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を読み取り、かつ、読み取った複数個のカウント値に基づいて乱数を出力する
別の方式は、所要ビット数に応じて設けた複数個のランダムパルス発生器から入力されたパルスに応じてレジスタの複数ビットの値を反転させ、このレジスタの各ビットの値を所定のタイミングで読み取り、読み取ったデータに基づいて乱数を出力する。
【選択図】 図1

Description

本発明は、暗号技術や認証技術等で必須となる乱数(特に真正乱数)の生成システム/方法に関し、特に多量の真正乱数を安定的にかつ高速に生成することのできるシステム/方法に関する。
電子商取引や情報通信での情報に対するセキュリティを向上させるため乱数(特に真正乱数)による暗号化の技術が利用されている。真正乱数の生成方法は、例えば、RPG(ランダムパルス発生器、モジュール化されているので以下において、RPGモジュールと称することもある)が利用される。RPGは、RPG素子部分と電子回路部分とから成り、前者は、例えば、原子核の自然崩壊にα粒子を放出する放射体を含んだ溶液を適所(例えば専用のプレート)に滴下したコア部と、放出されたα粒子を受け止め電気信号に変化するセンサ(例えばフォトダイオード)部とが一体に組み合わされている。後者の電子回路はセンサの出力を波形整形及び/又は増幅等する。
このようなRPGモジュールにおいては、α粒子が放出される確率は全く規則性がないから、ある瞬間にパルスが発生する可能性は常に不定である。つまり、あるパルスから次のパルスが発生するまでの経過時間を監視することによって乱数(この例では真正乱数)が得られる(パルスを監視するものとしてカウンタを利用するものは、例えば引用文献1に記載されている)。
ランダムパルス発生器によって発生されるランダムパルスは、例えば図5に示すように、パルスの発生間隔(r1乃至r8)が不定であるため、あるパルスの発生した瞬間からその次のパルスの発生までの経過時間を計測して数値化すれば乱数を得ることができる。以下、このような乱数生成方式をパルス間隔カウント方式と称する(実際のパルス間隔カウント方式は、一様な分布の乱数値を得るために、以下で説明するように対数変換を実施する)。
ランダムパルスの発生確率は、図6に示すように、ある瞬間(t0)から見て、より短い間隔では高く、経過時間が長くなるにつれ(tn)0%へ限りなく近づいていく傾向がある。そのため経過時間をそのまま乱数とした場合、その乱数の値は指数分布に沿った偏りが存在する(指数分布乱数)。
偏りの無い一様分布な乱数を得るには、指数分布乱数値に対数変換を施せばよい。対数計算は複雑だが、変換するだけであれば、予め対応表を用意して参照する方法で済むため、実際の変換は高速に処理できる。
予め用意しておく対応表(変換表)は次のようにして作成する。例えば、0乃至255までの一様分布乱数値を取得したい場合は、指数分布乱数値の範囲を0乃至65535として、それを256階調で区切った表を作成する。このとき、図7に示すように、区切り幅を、指数分布乱数値の0に近いほうを狭く、65535に近いほうを広くなるように対数で求めれば、最終的に0乃至255までの値が満遍なく登場する一様分布乱数の取得可能な対応表(変換表)を作成できる。
パルス間隔カウント方式は、ランダムパルスの発生時に1バイトの真正乱数が確実に求められるが、それは逆に一秒間で求められる乱数の量が、そのパルスの秒間平均発生回数以上にはならないことを意味している。
上述の例で、指数分布乱数が取り得る範囲を65536階調よりも広く取れば、最終的な一様分布乱数も256階調以上にすることも可能だが、変換精度(より0に近いほうが狭くなる)のバランスが保てなくなるおそれがある。実際の検証においても、256:65536の比率が最も安定した効果を得られることが分かっている。
特開2004−127283
ところで、このようなRPGモジュール(一秒間に平均50回程度パルスを発生するものが一般的)は、単独では一度に生成できる乱数の量が少ないので、例えば認証用USBトークンに利用される。しかし、例えば暗号化処理では、一度に大量の乱数が必要になるので、(1)複数個のRPGモジュールをパラレルに並置するか、又は(2)よりパルスの発生頻度の高いRPGモジュール(たとえ秒間数百回乃至1000回以上のパルスを発生するもの)を使用することが考えられる。
大量の乱数を得るため、前述したように、複数個のRPGモジュールをパラレルに並置した場合は、各RPGモジュールのパルス生成数にバラツキがある(現状±17%程度有る)ため、そのバラツキを吸収し一様性を確保するためにはそれぞれのRPGモジュール毎に補正する必要がある、またパルスの発生頻度の高いRPGモジュールを使用する場合は、パルス同士の間隔を計測するマイコンチップ側のタイマー(カウンタ)機能の精度(分解能)に限界があるため、一定のパルス発生回数を超えると追随できず、一様な乱数を生成できない問題があった。
また、乱数の生成量はRPGモジュールにおけるパルスの発生数に依存するが、RPG素子から四方に放出される粒子等は、その全部がセンサによって受け取られるのではなく、たまたまセンサ(フォトダイオード)に衝突した分が受け取られ電気信号に変換されるにすぎない。従って、乱数の量を多くするため、できるだけ多くの粒子等を受け取るためには、センサ(フォトダイオード)のサイズを大きくする必要があるが、そうすれば、RPGモジュール全体のサイズが大きくなって、これを配置する基板におけるレイアウトが難しくなったり、また製品のデザイン上の制約となる。
本件出願人は、多量の乱数を得るために複数個のRPGモジュールを使用する場合に、上述したような従来の問題点を解決するため、パルス間隔カウント差分方式及びパルス・ゲート方式と称する二つの方式を提供する。
本発明に係るパルス間隔カウント差分方式/方法は、複数個のランダムパルス発生器に対応して設けられた複数個のカウンタによって、その複数個のランダムパルス発生器にパルスが発生した後の経過時間をそれぞれカウントし、前記複数個のランダムパルス発生器の少なくとも一つにパルスが発生したとき、対応するカウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を読み取り、かつ、読み取った複数個のカウント値に基づいて乱数を出力することを特徴とする。
また同方式に係る乱数生成システムの別の実施形態では、ランダムパルス発生器から対応するカウンタにパルスが到来する度に、当該カウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を同時に読み取る。
また同方式に係る乱数生成システムの更に別の実施形態では、前記カウンタが、ランダム発生器からパルスが到来したときにリセットされ、その後の経過時間をカウントする。
本発明に係るパルス・ゲート方式に係る乱数生成システム/方法は、所要ビット数に応じて設けた複数個のランダムパルス発生器から入力されたパルスに応じてレジスタの複数ビットの値を反転させ、このレジスタの各ビットの値を所定のタイミングで読み取り、読み取ったデータに基づいて乱数を出力することを特徴とする。
また、同方式に係る乱数生成システム/方法の別の実施形態では、前記複数ビットのレジスタの値を、一定の周期でサンプリングして読み取る。
また、同方式に係る乱数生成システム/方の更に別の実施形態では、の値を、前記ランダムパルス発生器からパルスが前記レジスタの何れかのビットに入力するのに応じてサンプリングして読み取る。
本発明は、更に、RPG素子から四方に放出される粒子等を、無駄なくできるだけ多く受け取るために、ランダムパルスを放出するコア部とそのコア部からのパルスを感知するセンサ部を有するランダムパルス発生デバイスであって、前記センサ部は複数個のセンサ素子を有し、その複数個のセンサ素子は、マトリクス状に配列されかつ互いが論理和となるように接続されたランダムパルス発生デバイスを提供する。
また、このランダムパルス発生デバイスでは、前記コア部と、前記複数個のセンサ素子からなるセンサ部とが、互いが一つのユニットとなるようにモジュール化されている。
本発明におけるパルス間隔カウント差分方式による乱数生成システム/方法では、複数個の乱数発生器の中の少なくとも一つにパルスが発生したとき、対応するカウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を読み取り、かつ、読み取った複数個のカウント値に基づいて乱数を出力する。このように、本発明では、いずれかのランダムパルス発生器にパルスが発生したとき、対応するカウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタがそれまでにカウントした値も含めて乱数としてしまうので、多量の乱数の生成が可能である。
また、あるランダムパルス発生器から対応するカウンタに次のパルスが到来するまでの期間に、他のカウンタがカウントするカウント値(具体的には、その間に発生したクロック・パルスの数)など予測が付かない。そのため、当該ランダムパルス発生器からのパルスがカウンタに到来したときにそのカウンタと他のカウンタとのカウント値に基づいて生成するパルスにおいても不規則性は維持される。
本発明に係るパルス・ゲート方式よる乱数生成システム/方法では、パルスの発生間隔が不定にさえなっていれば、間隔そのものを計測(カウント)しないので、従来の方法のように、タイマー(カウンタ)の機能の限界を考慮する必要はなく、多量にパルスを発生するRPGモジュールでも追随できるため、結果的に多量の乱数を生成できる。また、多数のRPGモジュールを使うことにより多量の乱数を得ようとする従来の方法の場合では、RPGモジュール間のバラツキを補正する必要があったが、本発明では、原理的にそのような補正を行う必要がない。
また本発明では、RPGモジュール等のコア部からの信号を感知するセンサ部が複数個のセンサ素子(フォトダイオード)を有し、その複数個のセンサ素子は、マトリクス状に配列されかつ互いが論理和となるように接続されているから、基板上の占有面積が小さくなるとともに、センサ素子(フォトダイオード)の表面積が拡大したのと同等の効果がえられ、コア部から放出されたパルスを効率よく感知することができるから、多量の乱数を得ることができる。また消費電力も小さくて済む。
図1は、本発明の一実施形態に従う乱数生成システムを示すブロック図である。図示において、ランダムパルス発生器(RPGモジュール)(1a乃至1n)は複数個あり、それぞれのランダムパルス発生器に対応してカウンタ(2a乃至2n)も複数個設けられている。各カウンタは、対応するランダムパルス発生器にランダムパルスが発生した後の経過時間(クロック・パルス)をカウントする。より具体的には、ランダムパルス発生器で発生したパルスがカウンタに到来する度にカウンタをリセットさせ、リセットされた後の経過時間をカウントする。プロセッサ3は、これら複数個のカウンタを制御する機能を有し、複数個のカウンタ中の少なくとも一つにパルスが発生したとき、対応するカウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を読み取り、かつ、読み取った複数個のカウント値に基づいて乱数を出力する。より具体的には、制御手段は、ランダムパルス発生器から対応するカウンタにパルスが到来する度に、当該カウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を同時に読み取り、かつ、読み取った複数個のカウンタのカウント値に基づいて乱数を出力する。以下、本発明による乱数の生成方式を、前述したパルス間隔カウント方式と区別するために、パルス間隔カウント差分方式と称する。
本発明のパルス間隔カウント差分方式による乱数生成システムおいては、前述したパルス間隔カウント方式と同様に、パルスからパルスまでの経過時間を計測するためのカウンタ機構を実装している。そのカウンタ機構の基本的な状態遷移は図2に示す通りである。即ち、待機状態(電源投入時、初期化時など)にあるカウンタにランダムパルスが到来するとリセットされ、クロック・パルスをカウントし始める(カウンタ加算)、そして次のランダムパルスが到来すると、またリセットされ、次のランダムパルスが来るまでクロックパスルをカウントする。本発明に係るシステムでは、カウンタをリセットする際に、その直前までのカウンタ値を乱数値と確定する。
本発明に係るパルス間隔カウント差分方式の乱数生成システムは、図1に示すようにRPGモジュールを複数搭載し、同時に前述したカウンタ機構も対応するRPGモジュールと一対となるよう複数搭載する。このままでは、単に従来のパルス間隔カウント方式を複数設けただけに過ぎないが、本発明では、独立して機能しているカウンタ機構において、互いのカウンタ値を参照する機能を与えることで、複数の乱数値を同時に得ることが可能となる。つまり、あるRPGモジュールでランダムパルスが発生すると対応するカウンタをリセットするが、その際に、当該カウンタ機構のカウンタ値を含め又は含めずに当該カウンタとは別の複数のカウンタ機構が保持しているカウンタ値も取得して、これらを同時に発生した乱数値として確定する。
あるRPGモジュールにおいて次のランダムパルスが発生するまでの期間内に、他のRPGジュールにおいてカウントしたクロック・パルスのカウント数がいくつになるかは予測不能である。そのため、たとえカウンタの加算クロックの周期が全てのRPGモジュールにおいて共通であったとしても、それぞれのカウンタにランダムパルスが到来してリセットされるタイミングは異なる。そのため、上記の方式で得たカウント値に基づき確定された数も、不規則性を持った乱数となる。
別言すれば、カウンタ用のクロックは、RPGモジュールに対応して設けられた複数のカウンタのいずれに対しても同じ周期で供給されるが、対応するRPGモジュールから届く不定期なパルス(ランダムパルス)によって、それぞれのカウンタは不規則なタイミングでゼロクリア(リセット)される。そのため、それぞれのカウンタのカウント値はバラバラの値(乱数)を取ることになる。しかも、一つのRPGモジュールからのパルスが対応するカウンタの到達したときは、他のモジュールの対応するカウンタ(複数)は進行中(計数中)であるため、その瞬間におけるカウンタ(複数)の値を取得すれば、それらは乱数値となる。
次に、本発明に係る乱数生成システムについて、図3のタイミングチャートを参照してその動作を説明する。この実施形態では、4個のRPGモジュール(PA乃至PD)と4個のカウンタ機構(CA乃至CD)とがそれぞれ対となって搭載されている例を挙げる。
図3の時間t0は、モジュールPAのランダムパルスが発生した瞬間の一つであって、このときカウンタCAは、前回のランダムパルスの到来からクロック・パルスを5個カウントしているので、カウント値6を呈する。即ち、従来のパルス間隔カウント方式に従って、カウンタCAから6という乱数を確定できる。同時にカウンタCB、CC、CDのそれぞれからも、2、1、3という乱数が確定できる。カウンタCAにランダムパルスが到来した時点でカウンタCAはリセットされ再びカウントが始まるが、カウンタCB、CC、CDにはランダムが発生したわけではないので、そのままカウントが継続される。
なお、上述の例では、ランダムパルスの到来したカウンタCAのカウント値を使用しているが、これを読み取らずに(使用しないで)乱数を生成することも可能である。実用的なアルゴリズムではこちらの方が簡単であるので採用されることが多いであろう。なお、図3のチャートにおいて、「使用しない」とあるのは、このような読み取らないパルス間を示す。
図3の時間t1は、モジュールPDのランダムパルスが発生した瞬間の一つである。このときも、時間t0のときと同様に各カウンタのカウント値を拾ってみると、カウンタCA、CB、CC、CDから順に3、5、4、6という乱数が確定できる。なおカウンタCDのカウント値は読み取らなくてもよい。
図3の時間t2は、モジュールPCのランダムパルスが発生した瞬間の一つである。このときも、同様に各カウンタのカウント値を拾ってみると、カウンタCA、CB、CC、CDから順に2、4、3、5という乱数が確定できる。なおカウンタCCのカウント値は読み取らなくてもよい。
図3の時間t3は、モジュールPBのランダムパルスが発生した瞬間の一つである。このときも、同様に各カウンタのカウント値を拾ってみると、カウンタCA、CB、CC、CDから順に1、3、3、2という乱数が確定できる。なおカウンタCBのカウント値は読み取らなくてもよい。
このように、本発明に係るパルス間隔カウント差分方式の乱数生成システムでは、いずれかのRPGモジュールにおいてランダムパルスが発生したとき、そのモジュールに対応するカウンタのカウント値を含め又は含めずにそのモジュールとは別のモジュールに対応する複数のカウンタのカウント途中のカウント値も乱数として確定する。つまり、ある一つのRPGモジュールにランダムパルスが発生するごとに、そのモジュールを含め又は含めずにその他のRPGモジュールの数を合計した個数(この実施形態では4個又は3個)の乱数が得られる。そして、このような個数の乱数を得る機会は、搭載する各モジュールとカウンタの対の全てに存在する。
ところで、RPGモジュールにおけるパルスの秒間平均発生回数は決まっているので、それを仮に1000cpsであったとすると、上述の実施形態(リセットされるカウンタのカウント値を使用しない場合)における「一秒間に得られる乱数の数は、「1パルスごとに得られる乱数の数(3)」×「搭載モジュール数(4)」×「平均パルス数(1000)」=12000バイト/秒となる。
以下に、同じ条件でRPGモジュールの搭載数を4、8,16,32としたときの得られる乱数の数を表にすると、
Figure 2009054075
なお、図示のタイミングチャートにおけるクロック・パルス周期は、図からパルスの数をカウントできる程度にしてあるが、実際には1000cps平均の1パルス毎に65536以上カウントできる周期が必要である。そこで、多少の余裕を考慮して1/1000秒に65536カウント以上、即ち133MHz(7.5ns)が妥当である。
上記実施形態では、モジュールを追加すれば、平均パルス数も1000cpsのままで、生成量を更に増加させることができる。表から明らかなように、搭載モジュールの数が2倍に増えれば、乱数の量は4倍以上に増える計算となる。
一時間は3600秒であるから、モジュールの数が32個の場合は一時間でおよそ3.5ギガバイト強の乱数が生成できる計算となる(夕方の5時から翌朝の9時までの16時間かけて乱数を貯めたとすれば、57ギガバイト強になる)。
このアルゴリズムの結果、通常は指数分布を示し乱数を得るのに指数変換が必要だが、今回のアルゴリズムは何らの変換及びその他の作業は必要とせずカウンタ値そのままの数字で一様性を確保できる。またこの傾向はRPGの数量が増加すればするほど見られる傾向である。理由はRPGが増加すればするほど各RPGのカウントの組み合わせの場合の数が∞に広がるためである。また実際のアルゴリズムは65536(16bit)を256(8bit)まで落としているが16bitの上位8bitと下位8bitを足して乱数を生成している。このことにより完璧に予測不可能な高速な真正乱数が生成される。
図4は、本発明に係る乱数生成システムの動作を示すフローチャートである。このシステムの動作は、所定のプログラムに従いプロセッサ3(図1)が制御する。
図示において、RPGnのnは、搭載するRPGモジュールを区別する番号を示す。例えばRPGモジュールを8個搭載しているのであれば、それぞれのRPGモジュールはRPG0からRPG7によって表される。
ステップS1において、カウンタ用クロック(クロック・パルス)が発生していれば、ステップS2に進み、RPGnに対応するカウンタがそのクロック・パルスをカウントアップしてステップS3に進む。ステップS1において、カウンタ用クロックが発生していなければ、ステップS2をスキップしてステップS3に進む。
ステップS3において、モジュールRPGnにランダムパルスが発生していれば、ステップS4に進み、対応するカウンタのカウント値を含め又は含めずにそのRPGモジュールとは別の複数のRPGモジュールに対応するカウンタのカウント値を取得し、これらの値を乱数として確定し、次いでステップS5でモジュールRPGnに対応するカウンタをリセットしカウント値を0にする。例えば、8個のモジュールRPG0乃至RPG7を搭載していて、RPG0にランダムパルスが発生したのであれば、RPG0に対応するカウンタのカウント値を含め又は含めずにその対応するモジュールRPG0とは別の複数のモジュールRPG1乃至RPG7の対応するカウンタ(7個)のカウント中のカウント値を取得して、これらの値を乱数として出力する。
ステップS3においてモジュールRPGnにランダムパルスが発生していなければ、ステップS1に戻り、対応するカウンタはクロック・パルスをカウントし続ける。
図8は、本発明に係る乱数生成システムの基本原理(以下、パルスゲート方式と称する)を説明する説明図である。この原理は、一個のRPGモジュールの出力パルスの変化を乱数の1ビットの変化に見立て、複数のRPGモジュールの出力パルスの変化の様子を周期的にサンプリングすることで乱数を得るものである。この方式/方法によれば、パルス発生頻度の多いRPGモジュールでも、これに追随して真正乱数を生成することができる。
図示の例では、8個のRPGモジュール1a乃至1hを、8ビットのゲート・レジスタのそれぞれのビットに一体一で割り当ててある。このゲート・レジスタの各ビット「#0」乃至「#7」は、RPGモジュールからパルスが到来するたびに0と1を反転させる。このようなゲート・レジスタは、フリップフロップ・ロジックで簡単に構築することができる。図示のゲート・レジスタには、常に8ビットのデータが存在していて、その内容が、到来するパルス次第で変化する。この8ビットのゲート・レジスタ(フリップフロップ)を周期的にサンプリングすることにより、ゲートの内容が読み出され、読み出されたデータが乱数を形成する。
このような原理に基づくシステムでは、フリップフロップをサンプリングした後から次のサンプリングをするまでの間に、8個あるRPGモジュールのいずれか一つがパルスを発生していれば、前記二回のサンプリング結果は異なる。パルスの平均発生回数が多ければ多いほど、前回のサンプリングの結果から値が変化している可能性が高くなるので、サンプリングの周期を速くすることができ、その結果より多くの乱数が得られることになる。
また、乱数の1ビット当りのパルス発生間隔が指数関数的に変化するものであったとしても、本発明による乱数生成システムでは、8ビット全体としてみた場合、ただ変化しているか、いないかが乱数の源となっているから、このシステムで得られる乱数は最初から一様な乱数である。言い換えれば、従来方式では、パルス発生回数のバラツキを吸収し一様性を確保するために、RPGモジュールごとに補正を行う必要があったが、本発明のシステム/方法では、そのような補正をすることなく、一様性を確保した真正乱数の生成が可能である。
図9は、図8の例において、8ビットのゲート・レジスタ(フリップフロップ)の初期値が0であったと仮定し、ゲート・レジスタの各ビットに、当該ビットに割り当てられたRPGモジュールからパルスが到来するたびに、そのビットの内容が反転する様子をシミュレートしたものである。各ビットに到来するパルスは、対応するRPGモジュールで規則性なくバラバラに発生したものである。なお、図の最上段(初期)から、縦方向に時間が経過している。
図示において、「#0」乃至「#7」はゲート・レジスタの各ビットを示し、「RPG#1パルス」乃至「RPG#7パルス」は、それぞれのビットに対応するRPGモジュールから到来するパルスを示す。各ビットの内容は、RPGモジュールからパルスが到来する度に反転する。この例では、ゲート・レジスタは4クロック周期でサンプリングされ、読み出された各ビットの内容が、ビット数分まとめて図の右側に示されている。パルスの発生タイミングが不定であるので、読み出されたデータは充分乱数となって、6バイト分の乱数が出力されている。パルスの発生回数が増加すれば、各ビットの変化量も増加する。
図9において、レジスタの各ビットの値は、一定の周期でサンプリングして読み取られているが、ランダムパルス発生器からパルスがレジスタの何れかのビットに入力するのに応じてサンプリングして読み取ってもよい。図示の例において、最上段から、パルスの発生タイミングを確認して、8ビットのレジスタのいずれか一つのビットにRPGモジュールからパルスが到来していれば、そのときの横軸に該当する各ビットの値をサンプリングすると、その数は20回確認できる。それ故、図示の例では、最大でバイトの乱数を得る可能性がある。
このように、本発明の場合のサンプリング周期は、従来方式が採用しているタイマーの周期よりも遥かに余裕があるため、パルスの発生回数の増加に比例して、より速い周期でサンプリングが可能であり、その結果、乱数の生成量をより増加させることができる。即ち、パルスの発生回数が2倍に増えれば、各ビットの変化量も2倍となるため、例示のもの半分の2クロック周期でサンプリングすることができ、結果として乱数の生成量も2倍となる。
図10は、図9に示したシミュレーションのタイムチャートを示す。図の左側に、ゲートのビット「#0」乃至「#7」のそれぞれに到来するパルスを時系列で示し、右側には、パルスが到来するたびに各ビットの内容(値0か値1、パルスで示す)が反転する様子を示す。右図の最上段は、クロック・パルスCLKで、この4クロック毎に、ビットの内容が読みだされ、読み出された内容が、右図の最下段に示す。これは、図9の右側に示すものと同じである。
図11は、本発明にかかる乱数生成器をPCのPCI基板に適用した例である。
図示において、RPGユニット1は8個のRPG(ランダムパルス発生器)で構成され、RPGの各々で発生したパルスは、ビットパターン生成ユニット2に出力される。この実施形態では、RPGを8個使用するが、その数は乱数の桁の数に対応し、限定的ではない。
ビットパターン生成ユニット2は、この実施形態では、例えばフリップフロップ・ロジックで構成されたゲート・レジスタを含む。図10に示すように、レジスタの各ビット「#0」乃至「#7」の内容は、RPGからパルスが到来する度に反転を繰り返す、即ち値1(Highレベル)から値0(Lowレベル)に、またはその反対に変化する。このビットパターン生成ユニット2は、ランダムに生成するパルス列を、ランダムにHighレベルとLowレベルを変化させる矩形パルスに変換(波形整形)する手段として機能する。ゲート・レジスタは、サンプリングクロック生成ユニット3で生成されたクロック信号によってサンプリングされ(図示の例では、4クロック周期でサンプリングされる)、ビット「#0」乃至「#7」の値(0又は1)がデータ・バッファ4に蓄えられる。データ・バッファが一杯になったら、バス(ここではPCIバス)5を介してPC本体側に送られる。
図12a、12bは、こうした本発明の乱数生成器の動作を示すフローチャートである。ここでの動作は、ビットパターン生成ユニット2(ゲート・レジスタ)のビット毎に独立して行われる。図12aのステップS1において、対応するRPGユニットでパルスが発生しているか否かが判断され、YESであるならステップS2に進み、対応するゲート・レジスタのビット値の0/1を反転する。サンプリングクロック生成ユニット3では、図12bのステップS3でクロック信号を生成し、ステップS4において、ゲート・レジスタを、クロック信号の所定のタイミングで(即ち、所定クロック数毎に)サンプリングし、取得したビット「#0」乃至「#7」の値(0又は1)をデータ・バッファ4に蓄える。次いで、データ・バッファが一杯になったら、ステップS5で、データ・バッファの内容(乱数となっている)がバス(ここではPCIバス)を介してPC本体側に送られる。なお、こうした一連の動作は、PC本体側にロードされた所定のプログラムに従い実行される。
図13は、本発明にかかる乱数生成器をUSBユニットに適用した例である。
基本的な構成は図12a、12bの例と同様であるが、データ・バッファ4に蓄積されたデータが、パラレル・シリアル変換ユニット6、USBコントローラ7及びUSBバス8を介しPC本体側に送られる点が相違する。
次に、乱数の量を増大させる乱数生成システムに使用されるランダムパルス発生デバイスの実施形態を図14に示す。この実施形態では、RPGで生成したランダムパルスをできるだけロスなく受け取るために、コア部から放出されたパルスを感知するセンサ部(フォトダイオード)を複数個のセンサ素子10で構成し、その複数個のセンサ素子をマトリクス状に配列し、かつ互いが論理和となるように接続する。
また、コア部はRPG素子を含む溶液であって、この溶液を、複数個のセンサ素子をマトリクス状に配列したセンサ部の上を覆うように滴下し、コア部とセンサ部とを互いが一つのユニットとなるようにモジュール化する。こうすれば、RPGモジュールを配置する基板上の占有面積が小さくなるとともに、センサ素子(フォトダイオード)の表面積が拡大したのと同等の効果がえられ、コア部から放出された信号を効率よく感知することができるから、多量の乱数を得ることができ、また消費電力も小さくて済む。なお、図14の左側は、コア部の溶液を滴下する前を示し、右側は溶液を滴下した後を示す。
本発明の一実施形態に従う乱数生成システムを示すブロック図である。 本発明に係る乱数生成システムで使用するカウンタの基本的な状態遷移を示す図である。 本発明に係る乱数生成システムの各部におけるタイミングを示す図である。 本発明に係る乱数生成システムの動作を示すフローチャートである。 一般的なランダムパルス発生器によって発生されるランダムパルスの例を示す図である。 一般的なランダムパルスの、経過時間に対する発生確率を示すグラフである。 対数変換のための変換表を作成する方法を示す参考図である。 本発明に係るパルス・ゲート方式による乱数生成システムの基本原理を説明する説明図である。 図8において、ゲート・レジスタの動作をシミュレーションするための図である。 図9に示すシミュレーションのタイムチャートである。 本発明にかかる乱数生成器をPCのPCI基板に適用した場合のブロック図である。 本発明に係る乱数生成器の動作を示すフローチャートである。 本発明に係る乱数生成器の動作を示すフローチャートである。 本発明にかかる乱数生成器をPCのUSBユニットに適用した場合のブロック図である。 乱数の量を増大させるためのランダムパルス発生デバイスの一実施形態を示す説明図である。

Claims (14)

  1. 複数個のランダムパルス発生器と、
    前記複数個のランダムパルス発生器に対応して設けられ、その複数個のランダムパルス発生器にパルスが発生した後の経過時間をそれぞれカウントする複数個のカウンタと、
    前記複数個のカウンタを制御する制御手段とを有し、
    前記制御手段は、前記複数個のランダムパルス発生器の少なくとも一つにパルスが発生したとき、対応するカウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を読み取り、かつ、読み取った複数個のカウント値に基づいて乱数を出力する、乱数生成システム。
  2. 請求項1に記載の乱数生成システムにおいて、前記制御手段は、ランダムパルス発生器から対応するカウンタにパルスが到来する度に、当該カウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を同時に読み取ることを特徴とする、乱数生成システム。
  3. 請求項1に記載の乱数生成システムにおいて、前記カウンタは、ランダム発生器からパルスが到来したときにリセットされ、その後の経過時間をカウントすることを特徴とする乱数生成システム。
  4. 複数個のランダムパルス発生器に対応して設けられた複数個のカウンタによって、その複数個のランダムパルス発生器にパルスが発生した後の経過時間をそれぞれカウントするカウント・ステップと、
    前記複数個のランダムパルス発生器の少なくとも一つにパルスが発生したとき、対応するカウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を読み取るステップと、
    前記読み取った複数個のカウント値に基づいて乱数を出力するステップとを含む、乱数生成方法。
  5. 請求項4に記載の乱数生成方法において、前記読み取りステップは、ランダムパルス発生器から対応するカウンタにパルスが到来する度に、当該カウンタのカウント値を含め又は含めずにその対応するカウンタとは別の複数のカウンタのカウント値を同時に読み取ることを特徴とする、乱数生成方法。
  6. 請求項4に記載の乱数生成方法において、前記カウント・ステップは、ランダム発生器からパルスが到来したときにカウンタをリセットし、その後の経過時間をカウントすることを特徴とする乱数生成方法。
  7. 所要のビット数に応じて設けた複数個のランダムパルス発生器と、
    前記複数個のランダム発生器に対応させて設けられ、その複数個のランダムパルス発生器から入力されたそれぞれのパルスに応じて値を反転させる複数ビットのレジスタと、
    該レジスタの各ビットの値を所定のタイミングで読み取る読み取り手段と、
    前記読み取り手段で読み取ったデータに基づいて乱数を出力する乱数出力手段とからなる乱数生成システム。
  8. 前記読み取り手段は、前記複数ビットのレジスタの値を、一定の周期でサンプリングして読み取ることを特徴とする請求項7に記載の乱数生成システム。
  9. 前記読み取り手段は、前記複数ビットのレジスタの値を、前記ランダムパルス発生器からパルスが前記レジスタの何れかのビットに入力するのに応じてサンプリングして読み取ることを特徴とする請求項7に記載の乱数生成システム。
  10. 複数個のランダムパルス発生器から入力されたそれぞれのパルスに応じてレジスタの複数ビットの値を反転させるステップと、
    前記レジスタの各ビットの値を所定のタイミングで読み取るステップと、
    前記読み取りステップで読み取ったデータに基づいて乱数を出力するステップとからなる乱数生成方法。
  11. 前記読み取りステップは、前記複数ビットのレジスタの値を、一定の周期でサンプリングして読み取ることを特徴とする請求項10に記載の乱数生成方法。
  12. 前記読み取りステップは、前記複数ビットのレジスタの値を、前記ランダムパルス発生器からパルスが前記レジスタの何れかのビットに入力するのに応じてサンプリングして読み取ることを特徴とする請求項10に記載の乱数生成方法。
  13. ランダムパルスを放出するコア部とそのコア部から放出されたパルスを感知するセンサ部を有するランダムパルス発生デバイスであって、前記センサ部は複数個のセンサ素子を有し、その複数個のセンサ素子は、マトリクス状に配列されかつ互いが論理和となるように接続されたランダムパルス発生デバイス。
  14. 前記コア部と、前記複数個のセンサ素子からなるセンサ部とは、互いが一つのユニットとなるようにモジュール化されていることを特徴とする、請求項13に記載のランダムパルス発生デバイス。
JP2007222240A 2007-08-29 2007-08-29 乱数の生成システム及び方法 Withdrawn JP2009054075A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007222240A JP2009054075A (ja) 2007-08-29 2007-08-29 乱数の生成システム及び方法
PCT/JP2008/065794 WO2009028717A1 (ja) 2007-08-29 2008-08-27 乱数の生成システム及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007222240A JP2009054075A (ja) 2007-08-29 2007-08-29 乱数の生成システム及び方法

Publications (1)

Publication Number Publication Date
JP2009054075A true JP2009054075A (ja) 2009-03-12

Family

ID=40387417

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007222240A Withdrawn JP2009054075A (ja) 2007-08-29 2007-08-29 乱数の生成システム及び方法

Country Status (2)

Country Link
JP (1) JP2009054075A (ja)
WO (1) WO2009028717A1 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004017191A1 (ja) * 2002-08-14 2004-02-26 Institute For Advanced Studies Co., Ltd. 乱数生成装置及び乱数生成方法
EP1755033B1 (en) * 2004-05-24 2013-12-11 Leisure Electronics Technology Co., Ltd. Random number extraction method and random number generation device using the same

Also Published As

Publication number Publication date
WO2009028717A1 (ja) 2009-03-05

Similar Documents

Publication Publication Date Title
EP1755033B1 (en) Random number extraction method and random number generation device using the same
CN104636115B (zh) 一种真随机数后处理装置及方法
CN102375720B (zh) 异步先入先出存储器fifo的读写控制处理方法、电路及系统
WO2014112999A1 (en) Grouping of physically unclonable functions
WO2006019615A2 (en) Random number generation
CN106708671A (zh) 一种片上系统总线行为检测方法和装置
Pedreschi et al. A high-resolution TDC-based board for a fully digital trigger and data acquisition system in the NA62 experiment at CERN
JP2002268875A (ja) 乱数生成装置
DE60230179D1 (de) Verfahren und vorrichtung zum verhindern von rauschbeeinflussung eines auf der basis von flip-flop-metastabilität arbeitenden zufallszahlengenerators
US9037624B1 (en) Using memory access times for random number generation
KR101334111B1 (ko) 쿼드 데이터 레이트(qdr) 제어기 및 그의 실현방법
JP2009054075A (ja) 乱数の生成システム及び方法
WO2021224605A1 (en) Random number generator
CN109240130A (zh) 可程序化接脚位准的控制电路
CN113556228B (zh) 可用作种子的伪随机数的生成与相应唯一编码的生成方法
CN107016292A (zh) 防止通过功率分析进行窃听的电子电路及防止窃听的方法
CN104064220B (zh) 随机熔丝感测
Champion et al. TiCkS: A flexible White-Rabbit based time-stamping board
US20040073732A1 (en) Parameter generating circuit for deciding priority of master blocks and method of generating parameter
CN102012881A (zh) 基于总线监控器的系统芯片总线优先级动态配置装置
JPH11296348A (ja) 自然乱数およびハイブリッド乱数生成装置
Li et al. Poster: A hardware fingerprint using gpu core frequency variations
TWI569278B (zh) 記憶體測試資料產生電路與方法
JP3997950B2 (ja) 周期性擬似雑音発生方法と装置
JP3997951B2 (ja) 周期性擬似雑音発生方法と装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20101102