JP2016130939A - 乱数生成装置、乱数生成方法、およびプログラム - Google Patents

乱数生成装置、乱数生成方法、およびプログラム Download PDF

Info

Publication number
JP2016130939A
JP2016130939A JP2015004886A JP2015004886A JP2016130939A JP 2016130939 A JP2016130939 A JP 2016130939A JP 2015004886 A JP2015004886 A JP 2015004886A JP 2015004886 A JP2015004886 A JP 2015004886A JP 2016130939 A JP2016130939 A JP 2016130939A
Authority
JP
Japan
Prior art keywords
random number
column
partial
numbers
mersenne
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.)
Granted
Application number
JP2015004886A
Other languages
English (en)
Other versions
JP5875717B1 (ja
Inventor
大 五十嵐
Masaru Igarashi
大 五十嵐
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015004886A priority Critical patent/JP5875717B1/ja
Priority to CN201680005553.3A priority patent/CN107209660B/zh
Priority to US15/541,417 priority patent/US10509630B2/en
Priority to PCT/JP2016/050803 priority patent/WO2016114292A1/ja
Priority to EP16737363.8A priority patent/EP3232319B1/en
Application granted granted Critical
Publication of JP5875717B1 publication Critical patent/JP5875717B1/ja
Publication of JP2016130939A publication Critical patent/JP2016130939A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】所定の集合に属する乱数を高速に生成する。
【解決手段】乱数取得部15が2進数で表現された乱数の各桁の値を要素に含む第1列を得る。論理積演算部16は、当該第1列と、2進数で表現された単数または複数のメルセンヌ数の各桁の値および零値を要素に含む第2列と、の要素単位の論理積演算結果である第3列を得る。
【選択図】図1

Description

本発明は、乱数生成技術に関し、特に、所定の集合に属する乱数を生成する技術に関する。
n個のランダムビットを生成し、それらを各桁の値とする2進数表現値に対応する10進数表現値aとp−1との大小判定を行い、a>p−1であれば処理をやり直し、そうでなければaを乱数として採用する乱数生成方法がある(例えば、非特許文献1参照)。pを素数とすれば素体上の乱数を生成できる。
ヨハネス ブーフマン、「暗号理論入門―暗号アルゴリズム、署名と認証、その数学的基礎」、シュプリンガー・フェアラーク東京、2001年7月、P114.
上述の方法では、nに対してpを二進数で表現したときの要素数が小さいときに乱数の生成確率が極度に低下し、乱数の生成速度が低下してしまう。
本発明の課題は、所定の集合に属する乱数を高速に生成することである。
2進数で表現された乱数の各桁の値を要素に含む第1列を得、当該第1列と、2進数で表現された単数または複数のメルセンヌ数の各桁の値および零値を要素に含む第2列と、の要素単位の論理積演算結果である第3列を得る。
これにより、所定の集合に属する乱数を高速に生成できる。
図1は実施形態の乱数生成装置の機能構成を例示したブロック図である。 図2Aは実施形態の乱数生成方法を例示したフロー図である。図2Bは等号判定処理を例示したフロー図である。 図3A〜図3Cは実施形態の第1〜3列を例示した図である。
以下、本発明の実施形態を説明する。
[概要]
実施形態では以下のように所定の集合に属する乱数を生成する。まず、2進数で表現された乱数(バイナリ乱数)の各桁の値を要素に含む「第1列」を得る(乱数取得ステップ)。この乱数は一様乱数であってもよいし、一様乱数でなくてもよい。なお、「乱数」の概念は真正乱数および擬似乱数を含む。乱数は予め生成されていてもよいし、「第1列」を得る際に生成されてもよい。「第1列」は2進数で表現された乱数の各桁の値のみを要素としてもよいし、さらにそれ以外の要素を含んでもよい。次に、「第1列」と「第2列」との要素単位の論理積演算結果(要素ごとのAND演算結果、例えば、ビットAND演算結果)である「第3列」を得る(論理積演算ステップ)。ただし「第2列」は、2進数で表現された単数または複数のメルセンヌ数p(ただし、i=0,・・・,N−1であり、Nは1以上の整数)の各桁の値および零値を要素に含む列である。「第2列」の要素数は、例えば「第1列」の要素数と同一である。「第2列」は、メルセンヌ数pの各桁の値および零値のみを要素としてもよいし、さらにそれ以外の要素(例えば、固定値や属性情報など)を含んでもよい。メルセンヌ数pは2n(i)−1を満たす整数であり、2進数で表現されたメルセンヌ数pはn(i)個の1からなる列1・・・1である。ただし、n(i)は特定の正整数である。pの一例はメルセンヌ素数であり、例えばn(i)=2,3,5,7,13,17,19,31,61等のときpはメルセンヌ素数となる。「第3列」は「第1列」を「第2列」でマスクした列となり、2進数で表現された桁数n(i)の乱数tを含む列となる。このような乱数tはメルセンヌ数pを法とする剰余環(剰余類)上の乱数として扱うことができる。特にpがメルセンヌ素数であれば、乱数tはメルセンヌ素数pを法とする剰余体(素体)上の乱数として扱うことができる。pを法とする剰余環上ではp=2n(i)−1と0とが同値であり(2n(i)−1 mod(2n(i)−1)=0)、「第3列」が含むN個の乱数t(ただし、i=0,・・・,N−1)は、「必ず」、pを法とする剰余環上の乱数として扱える。そのため、環境によって乱数の生成確率が低下する従来技術に比べ、高速に剰余環上の乱数を生成できる。
ただし、pを法とする剰余環ではpと0とが同値と扱われるため(0はpの同値類)、乱数tが一様乱数となるとは限らない。すなわち、「第1列」が表す乱数が一様乱数である場合、tが0,1,・・・,pとなる確率はそれぞれ1/2n(i)であり、tがpまたは0となる確率は1/2n(i)−1である。そのため、上記の剰余環上では、0の生成確率(言い換えるとpの生成確率)は1/2n(i)−1となり、その他の乱数の生成確率は1/2n(i)となる。剰余環上の一様乱数を得るためには、t=pとなった場合に、生成した乱数を破棄し、乱数取得ステップおよび論理積演算ステップをやり直せばよい。言い換えると、「第1列」が「第1部分列」を含み、「第2列」に含まれた「第2部分列」が何れかのメルセンヌ数pを表し、「第3列」が「第1部分列」と「第2部分列」との要素単位の論理積演算結果である「第3部分列」を含み、「第2部分列」と「第3部分列」とが一致する場合に乱数取得ステップおよび論理積演算ステップの処理を再び実行すればよい。このような構成でもt=pとなる確率(「第2部分列」と「第3部分列」とが一致する確率)は1/2n(i)−1程度であり、高速に剰余環上の一様乱数を生成できる。
あるいはt=0となった場合に乱数取得ステップおよび論理積演算ステップをやり直してもよい。言い換えると、「第3部分列」の要素が零からなる場合(「第3部分列」が零ベクトルの場合)に乱数取得ステップおよび論理積演算ステップの処理を再び実行してもよい。これによっても剰余環上の一様乱数を高速に生成できる。
またNを2以上の整数とし、「第2列」が2進数で表現された複数のメルセンヌ数pの各桁の値および零値を要素に含む列とした場合、複数個の剰余環上の乱数を並列処理によって生成でき、より高速な乱数生成が可能となる。2進数で表現されたメルセンヌ数pの桁数(ビット長)n(i)は、互いに同一であってもよいし、同一でなくてもよい。
このような並列処理によって剰余環上の一様乱数を生成する場合、(1)一括等号判定によってi=0,・・・,N−1についてt=pとなるか否かの判定を一括して行い、(2)それらの等号判定結果x(ただし、i=0,・・・,N−1)の和演算または積演算によって何れかのiについてt=pとなるか否かを表す集約判定結果xを得、(3)集約判定結果xが何れかのiについてt=pとなることを示す場合に乱数取得ステップおよび論理積演算ステップをやり直してもよい。言い換えると、(1)一括等号判定によって複数の「第2部分列」のそれぞれと複数の「第3部分列」のそれぞれとが一致するか否かを表す複数の等号判定結果x(ただし、i=0,・・・,N−1)のそれぞれを得、(2)複数の等号判定結果xの和演算または積演算によって何れかの「第2部分列」と「第3部分列」とが一致するか否かを表す集約判定結果xを得、(3)集約判定結果xが何れかの「第2部分列」と「第3部分列」とが一致することを表す場合に、乱数取得ステップおよび論理積演算ステップの処理を再び実行しもよい。ただし、「第1列」が複数の「第1部分列」を含み、「第2列」に含まれた複数の「第2部分列」のそれぞれが複数のメルセンヌ数pの各桁の値を表し、「第3列」が複数の「第3部分列」を含み、複数の「第3部分列」のそれぞれが、複数の「第1部分列」のそれぞれと複数の「第2部分列」のそれぞれとの要素単位の論理積演算結果tである。ここで、一括等号判定や和演算や積演算の演算量は小さい。また上述のようにt=pとなる確率は1/2n(i)−1程度であり、何れかのiについてt=pとなる可能性は低い。そのため、剰余環上の一様乱数をより高速に生成できる。
あるいは、(4)一括等号判定によってi=0,・・・,N−1についてt=0となるか否かの判定を一括して行い、(5)それらの等号判定結果x(ただし、i=0,・・・,N−1)の和演算または積演算によって何れかのiについてt=0となるか否かを表す集約判定結果xを得、(6)集約判定結果xが何れかのiについてt=0となることを示す場合に乱数取得ステップおよび論理積演算ステップをやり直してもよい。言い換えると、(4)一括等号判定によって複数の「第3部分列」のそれぞれの要素が零からなるか否かを表す複数の等号判定結果x(ただし、i=0,・・・,N−1)のそれぞれを得、(5)複数の等号判定結果xの和演算または積演算によって何れかの「第3部分列」の要素が零からなるか否かを表す集約判定結果xを得、(6)集約判定結果xが何れかの「第3部分列」の要素が零からなることを表す場合に、乱数取得ステップおよび論理積演算ステップの処理を再び実行してもよい。この場合も剰余環上の一様乱数を高速に生成できる。
[第1実施形態]
次に、第1実施形態を説明する。本形態では、pがメルセンヌ素数である場合を説明する。
<構成>
図1に例示するように、本形態の乱数生成装置1は、バイナリ乱数生成部11、記憶部12、入力部13、マスク生成部14、乱数取得部15、論理積演算部16、および出力部18を有する。乱数生成装置1は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)やRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
<処理>
本形態では、「第1列」「第2列」「第3列」をそれぞれL個の要素からなるベクトルとして扱い、乱数生成装置1がLビット精度で演算を行うものとする。なお、Lは2進数で表現されたメルセンヌ素数p,・・・,pN−1の合計要素数n(0)+・・・+n(N−1)よりも大きな正整数である。Lは定数であってもよいし、入力されたメルセンヌ素数p,・・・,pN−1に応じて定められてもよい。想定されるメルセンヌ素数p,・・・,pN−1の大きさが予め定められている場合にはLを定数とできる。
図2Aに例示するように、まずメルセンヌ素数p,・・・,pN−1を特定する情報が入力部13に入力される。この情報の例はメルセンヌ素数p,・・・,pN−1そのものやn(0),・・・,n(N−1)などである。メルセンヌ素数p,・・・,pN−1を特定する情報はマスク生成部14に送られる(ステップS13)。
マスク生成部14は、2進数で表現されたメルセンヌ素数p,・・・,pN−1の各桁の値および零値を要素に含むL個の要素からなるベクトルM∈{0,1}(第2列)を得て出力する。図3A〜図3CにベクトルMの具体例を示す。図3Aの例はn(0)=・・・=n(N−1)=7の例である。この例のベクトルMは、先頭のz個(ただし、z=L−(n(0)+・・・+n(N−1)))の要素が0であり、残りの要素がすべて1である。言い換えると、先頭のz個の0からなる部分列zeroに続いて、2進数で表現されたメルセンヌ素数pN−1,・・・,pが配置されている。図3Bの例もn(0)=・・・=n(N−1)=7の例である。ただし、この例では1個の0の要素zeroに続いて2進数で表現された1個のメルセンヌ素数p(ただし、i=N−1,・・・,0)が配置され、0と2進数で表現されたメルセンヌ素数pとが交互に配置されている。図3Cは、先頭のz個の0からなる部分列zeroに続いて、2進数で表現されたメルセンヌ素数pN−1,・・・,pが配置されている。しかしながら、メルセンヌ素数pN−1,・・・,pのすべてが同一ではない。その他、図3Bの例においてメルセンヌ素数pN−1,・・・,pのすべてが同一でなくてもよい。生成されたベクトルMは論理積演算部16に送られる(ステップS14)。
乱数取得部15は記憶部12にL個の要素からなるLビットのバイナリ乱数ベクトルr∈{0,1}(第1列)が残存しているかを判定する(ステップS12)。バイナリ乱数ベクトルrが残存している場合には、乱数取得部15は記憶部12からバイナリ乱数ベクトルrを読み出して出力する(ステップS15)。読み出されたバイナリ乱数ベクトルrは記憶部12から削除される。一方、バイナリ乱数ベクトルrが残存していない場合には、バイナリ乱数生成部11がLビットのバイナリ乱数ベクトルr∈{0,1}を生成して記憶部12に格納し、乱数取得部15は記憶部12からバイナリ乱数ベクトルrを読み出して出力する(ステップS15)。なお、処理の高速化のため、バイナリ乱数生成部11は並列処理によって複数個のバイナリ乱数ベクトルrを生成して記憶部12に格納することが望ましい。出力されたバイナリ乱数ベクトルrは論理積演算部16に送られる。
論理積演算部16は、バイナリ乱数ベクトルrとベクトルMとの要素単位の論理積演算(ビットAND演算)を行い、その演算結果であるベクトルt∈{0,1}(第3列)を得て出力する。ベクトルMの第j要素(ただし、j=0,・・・,L−1)が0である場合、ベクトルtの第j要素は0となり、ベクトルMの第j要素が1である場合、ベクトルtの第j要素はバイナリ乱数ベクトルrの第j要素となる。すなわち、ベクトルtはバイナリ乱数ベクトルrをベクトルMでマスクして得られるベクトルである。ベクトルMが含む2進数で表現されたメルセンヌ素数pの要素列(部分列)に対応するベクトルtの要素列を部分列tと表現する。例えば、2進数で表現されたメルセンヌ素数pがベクトルMの第j要素から第j要素までの要素列である場合、部分列tはベクトルtの第j要素から第j要素までの要素列である。例えば、図3Aの例の場合、バイナリ乱数ベクトルrの先頭のz個の要素は(rN,z−1,・・・,rN,0)∈{0,1}からなる部分列rである。しかし、ベクトルMは先頭のz個の要素がすべて0であるため、ベクトルtの先頭のz個の要素もすべて0となる。それ以降のベクトルMの要素はすべて1であるため、ベクトルtのそれ以降の部分列tN−1,・・・,t(ただし、tはti,6,・・・,ti,0∈{0,1}からなる部分列)は、バイナリ乱数ベクトルrの部分列rN−1,・・・,r(ただし、rはri,6,・・・,ri,0∈{0,1}からなる部分列)となる。例えば、図3Bの例の場合、バイナリ乱数ベクトルrは部分列rN−1,・・・,r(ただし、rはri,7,・・・,ri,0∈{0,1}からなる部分列)からなる。ベクトルMは0と1111111とからなる部分列01111111をN個持つため、ベクトルtの部分列tN−1,・・・,t(ただし、tはti,6,・・・,ti,0∈{0,1}からなる部分列)は、バイナリ乱数ベクトルrの部分列rN−1,・・・,r(ただし、rはri,6,・・・,ri,0∈{0,1}からなる部分列)となる。例えば、図3Cの例の場合、ベクトルMは先頭のz個の要素がすべて0であり、残りの要素がすべて1である。そのため、ベクトルtの先頭のz個の要素がすべて0となり、それ以降の部分列tN−1,・・・,tは、バイナリ乱数ベクトルrの部分列rN−1,・・・,rとなる。得られたベクトルtは出力部18に送られる(ステップS16)。
出力部18は、ベクトルtをそのまま出力してもよいし、ベクトルtが含む部分列tN−1,・・・,tのみを出力してもよい。部分列t(ただし、i=0,・・・,N−1)はそれぞれ、メルセンヌ素数pを法とする剰余体(素体)上の乱数として扱われる(ステップS18)。素体上の乱数がさらに必要な場合には、ステップS13からS18の処理またはS11〜S18の処理を繰り返せばよい。
<本形態の特徴>
従来のようにバイナリ乱数ベクトルrが表す値と素数pとの大小判定によって素体上の乱数を生成する場合、バイナリ乱数ベクトルrの要素数Lに対してpを二進数で表現したときの要素数が小さいと、当該素体上の乱数の生成確率が極度に低下し、乱数の生成速度が低下してしまう。例えば、バイナリ乱数ベクトルrが一様乱数を表し、pを二進数で表現したときの要素数がL−1である場合、pがメルセンヌ素数であれば当該素体上の乱数の生成確率は50%となり、pがメルセンヌ素数以外の素数であれば生成確率50%未満となる。この成功確率は並列処理を行い場合により低下する。例えば、成功確率が50%程度のときに1000個の素数生成を並列して行おうとすると、失敗確率が99.9%程度となり、ほとんど成功せずに極度に性能が低下する。
これに対して、本形態では確実に素体上の乱数を生成できるため、高速に素体上の乱数を生成できる。さらに、要素ごとの論理積演算を並列で一括に行って(N≧2)乱数生成を行っても成功確率は低下しないため、このような並列処理によってさらに高速に素体上の乱数を生成できる。また、多くのコンピュータはビットAND演算(要素ごとの論理積演算)を並列に高速に処理でき、本形態の方法を効率的に実装できる。さらに、本形態のビットAND演算はLビットのレジスタで実行でき、従来のように大小比較を行うものに比べて記憶容量を削減できる。
[第2実施形態]
本形態では素体上の一様乱数を生成する。以下では、これまで説明した事項との相違点を中心に説明し、既に説明した事項についてはそれらと同じ参照番号を引用して説明を省略する。
<構成>
図1に例示するように、本形態の乱数生成装置2は、バイナリ乱数生成部11、記憶部12、入力部13、マスク生成部14、乱数取得部15、論理積演算部16、判定部27、および出力部18を有する。乱数生成装置2は、例えば、上述したコンピュータに所定のプログラムが読み込まれることで構成されてもよいし、少なくとも一部の要素がハードウェアのみによって構成されてもよい。
<処理>
ステップS11〜S16の処理は第1実施形態と同じである。ただし、第2実施形態では、入力部13に入力されたメルセンヌ素数pおよびステップS16で得られたベクトルtが判定部27に入力される。判定部27はベクトルtが含む何れかの部分列tとメルセンヌ素数p(ただし、i=0,・・・,N−1)とが一致するかを判定(等号判定)する(ステップS27)。何れかのi=0,・・・,N−1においてt=pである場合、判定部27はベクトルtを破棄し(tが不合格)、処理をステップS12に戻す。一方、すべてのi=0,・・・,N−1においてt≠pである場合、ベクトルtが出力部18に送られる(tが合格)。以降は第1実施形態と同じである。
なお、ステップS27の等号判定はiごとに独立に行われてもよいが、図2Bに例示するように一括処理されてもよい。図2Bの例では、判定部27の一括等号判定部が、すべてのi=0,・・・,N−1についてt=pであるか否かの等号判定を一括して行い(一括等号判定)、等号判定結果xの列を得る。ただし、t=pである場合にはx=2−1であり、t≠pである場合にはx=0である。なお、kは正の整数であり、0<k×N≦Lを満たす(ステップS271)。次に、判定部27の集約演算部が等号判定結果x(ただし、i=0,・・・,N−1)の集約OR演算(和演算)を行い、その演算結果である集約判定結果xを得る。ただし、何れかの等号判定結果x(ただし、i=0,・・・,N−1)が2−1である場合(0でない場合)にはx=2k’−1であり、すべての等号判定結果x(ただし、i=0,・・・,N−1)が0である場合にはx=0である。なお、kは正整数であり、0<k≦Lを満たす。k=kであってもよいし、k≠kであってもよい(ステップS272)。その後、判定部27の集約判定部がx=0であるか否かを判定する(ステップS273)。ここで、x=2−1であれば集約判定部はベクトルtを破棄し(tが不合格)(ステップS274)、処理をステップS12に戻す。一方、x=0であれば集約判定部はベクトルtを出力部18に送る(tが合格)(ステップS275)。
その他、一括等号判定部がt=pである場合にx=0とし、t≠pである場合にx=2−1とし、集約演算部がx(ただし、i=0,・・・,N−1)の集約AND演算(積演算)を行い、その演算結果である集約判定結果xを得てもよい。ただし、何れかの等号判定結果x(ただし、i=0,・・・,N−1)が0である場合にはx=0であり、すべての等号判定結果x(ただし、i=0,・・・,N−1)が2−1である場合にはx=2k’−1である。この場合、x=0であれば集約判定部はベクトルtを破棄し(tが不合格)、処理をステップS12に戻す。一方、x=2−1であれば集約判定部はベクトルtを出力部18に送る(tが合格)。
<本形態の特徴>
前述したように、バイナリ乱数ベクトルrが一様乱数を表すのであれば、部分列tはそれぞれ、メルセンヌ素数pを法とする剰余体(素体)上の一様乱数となる。t=pとなる確率は1/2n(i)−1程度であり、Lの大きさにかかわらず成功確率は高い。本形態でもほぼ確実に乱数生成に成功するので、部分列t(i=0,・・・,N−1)の等号判定を並列で一括に行っても成功確率がほとんど低下せず、ステップS27で不合格となる確率は低い。例えば、p=261−1(すなわち、n(i)=61)のとき、1000並列の一括生成で失敗する確率は1/251と十分低く、やり直しのオーバーヘッドが極小である。そのため、上述のようにステップS27の等号判定を一括処理すれば、より高速に素体上の一様乱数を得ることができる。すなわち、上述の一括等号判定、集約OR演算(または集約AND演算)の演算コストは低い。例えばL=256の場合、多くのコンピュータではこれらの処理を1クロックで処理できる。また、現在の多くのコンピュータには分岐予測機能があり、分岐計算をする前に、実績の多い方の分岐で先に処理を始めてしまうため、やり直しの確率が低いと条件分岐が実質0クロックになる。また、マスクであるベクトルM∈{0,1}に含まれるメルセンヌ素数p,・・・,pN−1が等号判定基準と一致するため、マスク処理のためにベクトルMを格納しておいたレジスタを等号判定処理にも利用でき、少ないレジスタでこれらの処理を実現できる。また、等号判定は従来方式で用いられる大小比較に比べて効率がよいという利点もある(ビット数nに対し、大小比較は回路規模O(n)/深さO(n)または回路規模O(nlog n)/深さO(log n)であるのに対し、等号判定は回路規模O(n)/深さO(logn)である)。
[第3実施形態]
本形態でも素体上の一様乱数を生成する。以下ではこれまで説明した事項との相違点を中心に説明し、既に説明した事項についてはそれらと同じ参照番号を引用して説明を省略する。
<構成>
図1に例示するように、本形態の乱数生成装置3は、バイナリ乱数生成部11、記憶部12、入力部13、マスク生成部14、乱数取得部15、論理積演算部16、判定部37、および出力部18を有する。乱数生成装置3は、例えば、上述したコンピュータに所定のプログラムが読み込まれることで構成されてもよいし、少なくとも一部の要素がハードウェアのみによって構成されてもよい。
<処理>
ステップS11〜S16の処理は第1実施形態と同じである。ただし、第3実施形態では、ステップS16で得られたベクトルtが判定部37に入力される。判定部37はベクトルtが含む何れかの部分列tが零ベクトルであるか(t=0)を判定する(ステップS37)。何れかのi=0,・・・,N−1においてt=0である場合、判定部37はベクトルtを破棄し(tが不合格)、処理をステップS12に戻す。一方、すべてのi=0,・・・,N−1においてt≠0である場合、ベクトルtが出力部18に送られる(tが合格)。以降は第1実施形態と同じである。
なお、第2実施形態と同様、ステップS37の等号判定はiごとに独立に行われてもよいが、図2Bに例示するように一括処理されてもよい。図2Bの例では、判定部37の一括等号判定部が、すべてのi=0,・・・,N−1についてt=0であるか否かの等号判定を一括して行い(一括等号判定)、等号判定結果xの列を得る。ただし、t=0である場合にはx=2−1であり、t≠0である場合にはx=0である(ステップS371)。それ以降のステップS272〜S275は第2実施形態と同じである。
その他、一括等号判定部がt=0である場合にx=0とし、t≠0である場合にx=2−1とし、集約演算部がx(ただし、i=0,・・・,N−1)の集約AND演算(積演算)を行い、その演算結果である集約判定結果xを得てもよい。ただし、何れかの等号判定結果x(ただし、i=0,・・・,N−1)が0である場合にはx=0であり、すべての等号判定結果x(ただし、i=0,・・・,N−1)が2−1である場合にはx=2k’−1である。この場合、x=0であれば集約判定部はベクトルtを破棄し(tが不合格)、処理をステップS12に戻す。一方、x=2−1であれば集約判定部はベクトルtを出力部18に送る(tが合格)。
<本形態の特徴>
本形態でも第2実施形態と同様に、高速に素体上の一様乱数を生成できる。
[その他の変形例等]
なお、本発明は上述の実施の形態に限定されるものではない。例えば、予めメルセンヌ素数pが乱数生成装置に設定されていてもよい。この場合には、ステップS13および入力部13を省略することができる。さらに予めベクトルMが乱数生成装置に設定されていてもよい。この場合には、さらにステップS14およびマスク生成部14を省略できる。また、予めバイナリ乱数ベクトルrを記憶部12に格納しておいてもよい。また、メルセンヌ素数に代えて合成数のメルセンヌ数が用いられてもよい。例えば、メルセンヌ数p,・・・,pN−1のすべてが合成数であってもよいし、メルセンヌ数p,・・・,pN−1が素数と合成数とを含んでもよい。
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
本発明は、例えば、秘密分散、秘密計算、公開鍵暗号、共通鍵暗号、電子署名等の各種の暗号技術に利用できる。
1〜3 乱数生成装置

Claims (9)

  1. 2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得部と、
    前記第1列と、2進数で表現された単数または複数のメルセンヌ数の各桁の値および零値を要素に含む第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算部と、
    を有する乱数生成装置。
  2. 請求項1の乱数生成装置であって、
    前記第1列が第1部分列を含み、前記第2列に含まれた第2部分列が何れかの前記メルセンヌ数を表し、前記第3列が前記第1部分列と前記第2部分列との要素単位の論理積演算結果である第3部分列を含み、前記第2部分列と前記第3部分列とが一致する場合に前記乱数取得部および前記論理積演算部の処理を再び実行する、乱数生成装置。
  3. 請求項1の乱数生成装置であって、
    前記第1列が第1部分列を含み、前記第2列に含まれた第2部分列が何れかの前記メルセンヌ数を表し、前記第3列が前記第1部分列と前記第2部分列との要素単位の論理積演算結果である第3部分列を含み、前記第3部分列の要素が零からなる場合に前記乱数取得部および前記論理積演算部の処理を再び実行する、乱数生成装置。
  4. 請求項1から3の何れかの乱数生成装置であって、
    前記第2列は前記複数のメルセンヌ数の各桁の値を含む、乱数生成装置。
  5. 請求項4の乱数生成装置であって、
    前記第1列が複数の第1部分列を含み、前記第2列に含まれた複数の第2部分列のそれぞれが前記複数のメルセンヌ数の各桁の値を表し、前記第3列が複数の第3部分列を含み、前記複数の第3部分列のそれぞれが、前記複数の第1部分列のそれぞれと前記複数の第2部分列のそれぞれとの要素単位の論理積演算結果であり、
    一括等号判定によって前記複数の第2部分列のそれぞれと前記複数の第3部分列のそれぞれとが一致するか否かを表す複数の等号判定結果のそれぞれを得、前記複数の等号判定結果の和演算または積演算によって何れかの前記第2部分列と前記第3部分列とが一致するか否かを表す集約判定結果を得、前記集約判定結果が何れかの前記第2部分列と前記第3部分列とが一致することを表す場合に、前記乱数取得部および前記論理積演算部の処理を再び実行させる判定部を有する、乱数生成装置。
  6. 請求項4の乱数生成装置であって、
    前記第1列が複数の第1部分列を含み、前記第2列に含まれた複数の第2部分列のそれぞれが前記複数のメルセンヌ数の各桁の値を表し、前記第3列が複数の第3部分列を含み、前記複数の第3部分列のそれぞれが、前記複数の第1部分列のそれぞれと前記複数の第2部分列のそれぞれとの要素単位の論理積演算結果であり、
    一括等号判定によって前記複数の第3部分列のそれぞれの要素が零からなるか否かを表す複数の等号判定結果のそれぞれを得、前記複数の等号判定結果の和演算または積演算によって何れかの前記第3部分列の要素が零からなるか否かを表す集約判定結果を得、前記集約判定結果が何れかの前記第3部分列の要素が零からなることを表す場合に、前記乱数取得部および前記論理積演算部の処理を再び実行させる判定部を有する、乱数生成装置。
  7. 請求項1から6の何れかの乱数生成装置であって、
    前記メルセンヌ数の少なくとも一部がメルセンヌ素数である、乱数生成装置。
  8. 乱数取得部が、2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得ステップと、
    論理積演算部が、前記第1列と、2進数で表現された単数または複数のメルセンヌ数の各桁の値および零値を要素に含む第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算ステップと、
    を有する乱数生成方法。
  9. 請求項1から7の何れかの乱数生成装置としてコンピュータを機能させるためのプログラム。
JP2015004886A 2015-01-14 2015-01-14 乱数生成装置、乱数生成方法、およびプログラム Active JP5875717B1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2015004886A JP5875717B1 (ja) 2015-01-14 2015-01-14 乱数生成装置、乱数生成方法、およびプログラム
CN201680005553.3A CN107209660B (zh) 2015-01-14 2016-01-13 随机数生成装置、随机数生成方法
US15/541,417 US10509630B2 (en) 2015-01-14 2016-01-13 Random number generation apparatus, random number generation method and program
PCT/JP2016/050803 WO2016114292A1 (ja) 2015-01-14 2016-01-13 乱数生成装置、乱数生成方法、およびプログラム
EP16737363.8A EP3232319B1 (en) 2015-01-14 2016-01-13 Random number generation apparatus, random number generation method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015004886A JP5875717B1 (ja) 2015-01-14 2015-01-14 乱数生成装置、乱数生成方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP5875717B1 JP5875717B1 (ja) 2016-03-02
JP2016130939A true JP2016130939A (ja) 2016-07-21

Family

ID=55434697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015004886A Active JP5875717B1 (ja) 2015-01-14 2015-01-14 乱数生成装置、乱数生成方法、およびプログラム

Country Status (5)

Country Link
US (1) US10509630B2 (ja)
EP (1) EP3232319B1 (ja)
JP (1) JP5875717B1 (ja)
CN (1) CN107209660B (ja)
WO (1) WO2016114292A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107193530B (zh) * 2017-04-28 2020-04-24 广州酷狗计算机科技有限公司 一种生成随机数的方法和装置
CN117519646B (zh) * 2024-01-08 2024-03-26 深圳市纽创信安科技开发有限公司 随机数据生成方法及装置、电子设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54107640A (en) * 1978-02-08 1979-08-23 Ibm Random number generating digital data processor
EP0085130A1 (en) * 1982-02-02 1983-08-10 Omnet Associates Method and apparatus for maintaining the privacy of digital messages conveyed by public transmission
JPH0766322B2 (ja) * 1985-06-07 1995-07-19 日本電気株式会社 素数判定器
US6298360B1 (en) * 1995-05-26 2001-10-02 Sun Microsystems, Inc. Method and apparatus for generating a highly random number while using existing circuitry
JP2000122851A (ja) * 1998-10-12 2000-04-28 Mitsubishi Electric Corp 情報ランダム化方法とそのプログラムを記録した記憶媒体
JP4629300B2 (ja) * 2002-07-05 2011-02-09 富士通株式会社 暗号学的擬似乱数発生装置及びプログラム
WO2004031941A1 (ja) * 2002-09-30 2004-04-15 Fdk Corporation 物理乱数の一様化手法と物理乱数発生装置
JP2007178966A (ja) * 2005-12-27 2007-07-12 Shuichi Kamizono 擬似乱数を生成するアルゴリズム
US9207911B2 (en) * 2009-07-31 2015-12-08 Cassy Holdings Llc Modular uncertainty random value generator and method
CN103490885B (zh) * 2013-10-14 2017-01-04 北京华大信安科技有限公司 采用中国剩余定理的rsa的计算方法及计算装置

Also Published As

Publication number Publication date
WO2016114292A1 (ja) 2016-07-21
JP5875717B1 (ja) 2016-03-02
US10509630B2 (en) 2019-12-17
US20180011691A1 (en) 2018-01-11
CN107209660A (zh) 2017-09-26
EP3232319A1 (en) 2017-10-18
EP3232319B1 (en) 2020-10-07
EP3232319A4 (en) 2018-08-15
CN107209660B (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
US20200366460A1 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
JP5957120B1 (ja) 秘密分散方法、秘密分散システム、分散装置、およびプログラム
EP3096309B1 (en) Secret calculation method, secret calculation system, sorting device, and program
CN107735830B (zh) 秘密计算装置、秘密计算方法和记录介质
CN104919754B (zh) 篡改检测装置、篡改检测方法、以及程序
CN112805769B (zh) 秘密s型函数计算系统、装置、方法及记录介质
CN113630234A (zh) 使用同态加密的加密方法及装置
JPWO2018193507A1 (ja) 認証タグ生成装置、認証タグ検証装置、方法及びプログラム
JP5875717B1 (ja) 乱数生成装置、乱数生成方法、およびプログラム
CN106796765B (zh) 非减序列判定装置、非减序列判定方法以及记录介质
US9182943B2 (en) Methods and devices for prime number generation
JP6367959B2 (ja) 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム
US11722290B2 (en) Method and apparatus for modulus refresh in homomorphic encryption
JPWO2017168798A1 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
JP7055142B2 (ja) 暗号アプリケーションのための素数を生成する方法
JP5875719B1 (ja) 乱数生成装置、乱数生成方法、およびプログラム
WO2020178736A1 (en) Quantum-resistant cryptoprocessing
JP2016157053A (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法
US20240129106A1 (en) Apparatus and method with homomorphic encryption operation
CN117857004A (zh) 具有同态加密操作的装置和方法
US20230171085A1 (en) Homomorphic encryption apparatus and method
JP6023852B1 (ja) 検知機能付加装置、検知装置、およびプログラム
US20220400005A1 (en) Generating prime numbers
JP6093718B2 (ja) 拡大体乗算装置、拡大体乗算方法及びプログラム
CN116980140A (zh) 数字签名处理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151216

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: 20160112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160119

R150 Certificate of patent or registration of utility model

Ref document number: 5875717

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150