JPH07193565A - 疑似乱数を用いた通信方法とその装置 - Google Patents

疑似乱数を用いた通信方法とその装置

Info

Publication number
JPH07193565A
JPH07193565A JP5331241A JP33124193A JPH07193565A JP H07193565 A JPH07193565 A JP H07193565A JP 5331241 A JP5331241 A JP 5331241A JP 33124193 A JP33124193 A JP 33124193A JP H07193565 A JPH07193565 A JP H07193565A
Authority
JP
Japan
Prior art keywords
pseudo
random number
mod
communication
pseudo random
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
JP5331241A
Other languages
English (en)
Other versions
JP3591857B2 (ja
Inventor
Takahisa Yamamoto
貴久 山本
Keiichi Iwamura
恵市 岩村
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP33124193A priority Critical patent/JP3591857B2/ja
Priority to US08/350,110 priority patent/US5666419A/en
Priority to EP94308810A priority patent/EP0656709B1/en
Priority to DE69434422T priority patent/DE69434422T2/de
Priority to AT94308810T priority patent/ATE299631T1/de
Publication of JPH07193565A publication Critical patent/JPH07193565A/ja
Application granted granted Critical
Publication of JP3591857B2 publication Critical patent/JP3591857B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 安全な疑似乱数をより高速にかつ容易に生成
する疑似乱数を用いた通信方法とその装置を提供するこ
とを目的とする。 【構成】 疑似乱数生成装置1は、自乗剰余演算装置2
と論理演算装置3を備える。自乗剰余演算装置2は、初
期値y0と剰余演算の法であるNと互いに素である任意
の定数Rから、次式に示す演算を連鎖的に行い、y1
2 ,…を生成する。yi+1 =(yi 2+M・N)/R
(i=0,1,2,…)、ただし、M=yi 2・N’mo
d R、N’=−N-1 mod R。 R(=2t)はNと互
いに素な整数である。自乗剰余演算装置2のyi+1出力
線5に、シーケンシャルに出力されるy1,y2,…の各値
は論理演算装置3に入力される。論理演算装置3では、
入力されたy1,y2,…の任意の(単数/複数)ビットを
切り出して、それを疑似乱数として出力線6に疑似乱数
を出力する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、暗号通信、特に、デー
タの秘匿、発信者・着信者の認証、暗号鍵の共有、零知
識証明プロトコル等で必要な乱数生成を用いた通信方法
とその装置に関する。また、例えば、モンテカルロシミ
ュレーション等で必要な乱数生成方法とその装置に関す
る。
【0002】
【従来の技術】暗号通信で用いる乱数列は、ある時点ま
での生成した乱数列のみからその時点以降に生成する乱
数が容易に予測できないことが必要である。文献「Prim
alityand Cryptography」(Evangelos Kranakis著、J
OHN WILEY&SONS発行、pp.108-137)に
は、上の条件を満たす疑似乱数系列が掲載されている。
【0003】つまり、疑似乱数列をb1 , b2 ,…とす
るとビットbi は,X0 を任意に与える初期値、p,q
をp≡q≡3(mod4)である素数として、 Xi+1 =Xi 2 mod N (i=0,1,2,…) (式1) bi =lsb(Xi )(i=1,2,…) (式2) によって与えれる(ただし、N=p・q,lsbは最下
位ビットを表わす)。
【0004】また、文献「暗号と情報セキュリティ」
(辻重男、笠原正雄編著、昭晃堂発行、pp.86 )には、
別の疑似乱数列生成方法が掲載されている。
【0005】つまり、疑似乱数列をb1,b2,…とすると
ビットbi は、x0 を任意に与える初期値、p,qを素
数、eをL(Lはp−1とq−1の最小公倍数)と互い
に素な数として、 xi+1 =xi e mod N (i=0,1,2,…) (式3) bi =lsb(xi )(i=1,2,…) (式4) によって与えられる(ただし、N=p・q,lsbは最
下位ビットを表わす)。
【0006】これらの方法から生成された疑似乱数列b
1 ,b2 ,…,bi のみからbi+1を求めることは、N
を因数分解するのと同程度の手間が必要であることが知
られている。つまり、ある時点までに生成された疑似乱
数列のみからその時点以降に生成されるべき乱数を求め
るための計算量は、Nを因数分解するのに必要な計算量
と同等であることが知られている。ただし、Nを因数分
解することを計算量的に困難にするためにはp,qを数
百ビット程度にする必要がある。このように、ある時点
までに生成された乱数列のみからその時点以降に生成さ
れるべき乱数を予測することが計算量的に困難となるよ
うな方法により生成された乱数は、暗号学的に安全な疑
似乱数と呼ばれている。
【0007】式(1)、式(3)のような演算は、次式
で示される乗算剰余と呼ばれる演算に含まれる。 Q=υ・ν mod N (Q,υ,νは整数) (式5) このような乗算剰余を効率的に演算する方法としてモン
ゴメリ法(P.L.Montgomery “Modular multiplicatio
n without trial division”Math.of Computation,vo
l.44,1985,pp.519-521 参照)が知られている。このモ
ンゴメリ法を用いれば、法Nによる除算を行うことなく
演算できるので、通常の乗算剰余より効率的に処理でき
る。
【0008】モンゴメリ法を用いた場合の乗算剰余をM
ont(υ,ν)とすると、Mont(υ,ν)は互い
に素な数であるRを用いて、 Mont(υ,ν)≡υ・ν・R-1(mod N) (式6) により与えられる。
【0009】モンゴメリ法では、上式の計算結果Mon
t(υ,ν)を得るために Mont(υ,ν)=(υ・ν+M・N)/R (式7) ただし、 M=υ・ν・N’mod R (式8) N’=−N-1 mod R (式9) という演算を行っている。
【0010】Nが奇数の場合、R=2t (tは任意の整
数)とすればRとNは互いに素な整数になる。この場
合、Rによる除算及び剰余演算は実質的な演算を必要と
せず、Mont(υ,ν)を乗算と加算のみで高速に計
算できる。
【0011】モンゴメリ法を用いた場合の自乗剰余演算
の計算手順は、式(1)と同じパラメ−タとNと互いに
素な数であるRを用いて、 y0 =R・X0 mod N (式10) yi+1 =R-1・yi 2 mod N (i=0,1,2,…) (式11) によって与えられる。
【0012】この場合、式(1)と式(11)で生成さ
れる系列を比較すると、 yi =R・Xi mod N (i=0,1,2,…) (式12) となり、式(11)で生成される系列yi (i=0,
1,2,…)は、式(1)で生成される系列Xi (i=
0,1,2…)にRを掛けたものになっている。よって
従来では、暗号学的に安全な疑似乱数系列として、Xi
の最下位ビットの系列であるbi を生成するために、演
算で得られたyi に対し、 Xi =R-1・yi mod N (i=0,1,2,…) (式13) という演算を行う必要があった。
【0013】一方、式(3)は、式(5)に示したべき
乗剰余演算を繰り返すことによって実行することができ
る。具体的に乗算剰余の繰り返しによって、べき乗剰余
i+1 =xi e mod N(i=0,1,2,…,s)を
順次計算する手順は以下の[アルゴリズム1]に示すよう
になる。また、そのフローチャートを図13に示す。た
だし、ただし、eをkビットからなる整数でe=[ek
k-1…e21 ]で表わすとする。 [アルゴリズム1] INPUT x0 ,e,N、s (**1) FOR i=0 TO s (**2) xi+1 =1 FOR j=k TO 1 IF ej =1 THEN xi+1=xi+1・xi mod N IF j>1 THEN xi+1=xi+1・xi+1 mod N NEXT OUTPUT xi+1 (=xi e mod N) NEXT (**9)
【0014】ライン(**1)のINPUT文では、x0
e、N、sの各値を入力する。ここで、sは剰余演算の
繰り返し数である。ライン(**2)のFOR文は、ライ
ン(**9)までの処理を、変数iに関して「0」から
「s」まで繰り返すコマンドであり、べき乗剰余xi+1
(i=0,1,2,…,s)を順次求める処理を繰り返
させる。
【0015】次に、モンゴメリ法の計算手順を用いた乗
算剰余の繰り返しによるべき乗剰余xi+1 =xi e mo
d N を計算する手順は以下のようになる。ただし、R
はNと互いに素である整数とし、eは先程と同じくkビ
ットからなる整数でe=[e kk-1 …e21 ]で表
わせるとする。このアルゴリズムを実行すれば、式
(2)で得られる系列xi (i=0,1,2,…,s)
を得ることができる。 [アルゴリズム2] INPUT x0 ,e,N,s,RR =R2 mod N FOR i=0 TO s yi=Mont(xi ,RR) (*1) yi+1=Mont(1,RR) (*2) FOR j=k TO 1 IF ej =1 THEN yi+1 =Mont(yi+1,yi) IF j>1 THEN yi+1 =Mont(yi+1,yi+1) NEXT xi+1 =Mont(yi+1,1) (*3) OUTPUT xi+1 (=xi e mod N) NEXT [アルゴリズム2]に従って式(2)をモンゴメリ法によ
り計算する場合に、jに対するFOR−NEXT部分の
出力として得られる系列yi+1 (i=0,1,2,…,
s)は、式(1)と同じパラメ−タとNと互いに素な数
であるRを用いて、 y0 =R・x0 mod N (式14) yi+1 =R-(e-1)・yi e mod N (i=0,1,2,…) (式15) と表わされる。
【0016】この場合、式(3)で生成される系列x
i+1 (i=0,1,2,…)と式(15)で生成される
系列yi+1 (i=0,1,2,…)とを比較すると、 yi =R・xi mod N (i=0,1,2,…) (式16) となっている。つまり、[アルゴリズム2]に従って式
(3)をモンゴメリ法により計算する場合に、jに対す
るFOR−NEXT部分の出力として得られる系列y
i+1 (i=0,1,2,…s)は、式(3)で得られる
系列xi+1 (i=0,1,2,…s)に対して式(1
6)のような関係にある。
【0017】よって、入力xiに対してモンゴメリ法を
用いないべき乗剰余演算の[アルゴリズム1]で得られる
演算結果xi+1(xi e mod N)を、モンゴメリ法を
用いたべき剰余演算の[アルゴリズム2]により得るため
には、[アルゴリズム2]の式(*1)により、xiをyi
=Mont(xi,RR)(=R・xi mod N)に補
正し、式(*3)により出力xi+1としてjに対するF
OR−NEXT部分の出力として得られるyi+1からx
i+1=Mont(yi+1,1)(=R-1・yi+1 mod
N)と補正する必要があった。
【0018】
【発明が解決しようとする課題】しかしながら、上述し
た安全な疑似乱数生成方法を用いた場合には、p,qを
数百ビット程度にする必要があるため演算量が大きく、
特に式(1)、式(3)部分の計算量が大きいため、高
速に疑似乱数を生成できず、その疑似乱数に基づいて通
信データの生成/再生を高速に行えないという問題があ
った。
【0019】本発明は上記従来例に鑑みてなされたもの
で、安全な疑似乱数をより高速にかつ容易に生成し高速
に通信データの生成/再生を行う疑似乱数を用いた通信
方法とその装置を提供することを目的とする。
【0020】
【課題を解決するための手段】上記目的を達成するた
め、本発明の疑似乱数を用いた通信方法とその装置は、
以下の構成を備える。即ち、所定の値Nを法とし、所定
の初期値X0と、所定の値Cとに基づいて、漸化式Xi+1
=C・Xi 2 mod N をi=0,1,2,...,sの順で繰り返し
計算し、数列X1,X2,X3,...Xs+1を求める計算工程
と、前記数列から所定部分を抽出し、その抽出された抽
出データを疑似乱数データとする抽出工程と、前記疑似
乱数データに基づいて、通信データを生成/再生する通
信工程とを備える。
【0021】また、別の発明は、所定の値Nを法とし、
所定の初期値X0と、所定の値Cとに基づいて、漸化式
i+1=C・Xi e mod N をi=0,1,2,...,sの順で繰
り返し計算し、数列X1,X2,X3,...Xs+1を求め、前記
数列から所定部分を抽出し、その抽出された抽出データ
を疑似乱数データとすし、前記疑似乱数データに基づい
て、通信データを生成/再生する通信工程とを備える。
【0022】また、さらに別の発明は、所定の値Nを法
とし、所定の初期値X0と、所定の値Cとに基づいて、
漸化式Xi+1=C・Xi 2 mod N をi=0,1,2,...,sの
順で繰り返し計算し、数列X1,X2,X3,...Xs+1を求め
る計算手段と、前記数列から所定部分を抽出し、その抽
出された抽出データを疑似乱数データとする抽出手段
と、前記疑似乱数データに基づいて、通信データを生成
/再生する通信手段と、を備える。
【0023】さらに別の発明は、所定の値Nを法とし、
所定の初期値X0と、所定の値Cとに基づいて、漸化式
i+1=C・Xi e mod N をi=0,1,2,...,sの順で繰
り返し計算し、数列X1,X2,X3,...Xs+1を求める計算
手段と、前記数列から所定部分を抽出し、その抽出され
た抽出データを疑似乱数データとする抽出手段と、前記
疑似乱数データに基づいて、通信データを生成/再生す
る通信手段と、を備える。
【0024】
【作用】以上の構成において、所定の値Nを法とし、所
定の初期値X0と、所定の値Cとに基づいて、漸化式X
i+1=C・Xi 2 mod N をi=0,1,2,...,sの順で繰り
返し計算し、数列X1,X2,X3,...Xs+1を求め、前記数
列から所定部分を抽出し、その抽出された抽出データを
疑似乱数データとすし、前記疑似乱数データに基づい
て、通信データを生成/再生する。
【0025】また、別の発明は、所定の値Nを法とし、
所定の初期値X0と、所定の値Cとに基づいて、漸化式
i+1=C・Xi e mod N をi=0,1,2,...,sの順で繰
り返し計算し、数列X1,X2,X3,...Xs+1を求め、前記
数列から所定部分を抽出し、その抽出された抽出データ
を疑似乱数データとし、前記疑似乱数データに基づい
て、通信データを生成/再生する。
【0026】また、さらに別の発明は、所定の値Nを法
とし、所定の初期値X0と、所定の値Cとに基づいて、
漸化式Xi+1=C・Xi 2 mod N をi=0,1,2,...,sの
順で繰り返し計算し、数列X1,X2,X3,...Xs+1を、計
算手段が求め、前記数列から所定部分を、抽出手段が抽
出し、その抽出された抽出データを疑似乱数データと
し、通信手段が、前記疑似乱数データに基づいて、通信
データを生成/再生する。
【0027】さらに別の発明は、所定の値Nを法とし、
所定の初期値X0と、所定の値Cとに基づいて、漸化式
i+1=C・Xi e mod N をi=0,1,2,...,sの順で繰
り返し計算し、数列X1,X2,X3,...Xs+1を、計算手段
が求め、前記数列から所定部分を、抽出手段が抽出し、
その抽出された抽出データを疑似乱数データとし、前記
疑似乱数データに基づいて、通信手段が通信データを生
成/再生する。
【0028】
【実施例】以上説明した課題を解決する本発明の第1の
実施例について、以下、適宜図を参照しながら説明す
る。
【0029】本実施例による疑似乱数生成方法は、暗号
学的に暗算な疑似乱数系列として式(12)のyi から
直接、 αi =lsb(yi )(i=0,1,2,…) (式17) によって得られたαi を用いることにより、式(13)
の演算を省くことを可能にし、出力乱数の安全性を低下
させることなく疑似乱数の生成速度を向上させたもので
ある。
【0030】式(1)で用いた疑似乱数生成の安全性
は、Xi+1 からbi を求めることが非常に困難であるこ
と、つまりbi がXi+1のハードコアビットであること
を利用している。式(11)、(17)を用いた疑似乱
数生成の場合もXi+1 にある定数Rを掛けたyi+1 から
αi を求めることは非常に困難である。つまり、αi
i+1 のハードコアビットであるので、式(11)、式
(17)を用いた疑似乱数生成の安全性も、式(1)を
用いた疑似乱数生成と同程度である。
【0031】以上のように本実施例によれば、式(1
3)の処理を行うことなく、式(1)と同程度の安全性
を有する疑似乱数列をより高速に、或はより小さな回路
規模で生成することを可能にし、本実施例の方法を用い
ることで、高速に通信データの生成/再生を行うことが
できる。
【0032】次に、式(11)、式(17)を用いた疑
似乱数生成の安全性も式(1)を用いた疑似乱数生成と
同程度であることの証明を行う。その前に用いる記号等
を簡単に定義する。詳しくは、文献「現代暗号理論」
(池野、小山著、昭和61年発行、電子情報通信学会、
14−15、95−96)参照されたい。・平方剰余:
2 ≡c(modp)に解があるときcはpの平方剰
余、解がないときは平方非剰余という。
【0033】・ルジャンドル記号(x/p):pを素数
とし、X≠ 0 (mod p)のとき、 (x/p)= 1 :xがpの平方剰余の時 ―1 :xがpの平方非剰余の時 ・Z* N:Nと互いに素で0からN―1までの範囲の整
数。
【0034】・ヤコビ記号(x/N):x∈Z* Nと、N
=p・q(p,qは素数)に対し、ヤコビ記号(x/
N)は、ルジャンドル記号(x/p)を用いて、 (x/N)=(x/p)(x/q) で表される。 ・Z* N(+1)={x∈Z* N|(x/N)=1} ・Z* N(―1)={x∈Z* N|(x/N)=―1} ・Q1={x∈Z* N|(x/p)=(x/q)=1} ・Q2={x∈Z* N|(x/p)=(x/q)=―1} ・Q3={x∈Z* N|(x/p)=―(x/q)=1} ・Q4={x∈Z* N|(x/p)=―(x/q)=―
1} 式(11)、式(17)を用いた疑似乱数生成の安全性
が式(1)を用いた疑似乱数生成の安全性と同じである
ことを示すのは次の命題を証明することに等しい。 [命題]「式(11)、(17)より生成された疑似乱数
列αi+1 ,αi+2 ,…からαi を正しく推測できるな
ら、任意のc(c∈Z* N(+1))に対して、その平方
剰余を判定できる。」 [証明]R∈Q1の時、任意のc(c∈Z* N(+1))に
対して、 b=R・c mod N yi+1 =R-1・b2 modN とし、yi+1 を初期値として、式(11)、式(17)
によりαi+1 ,αi+2 ,…を生成する。
【0035】このとき、 b∈Z* N(+1) yi+1∈Q1 となる。このとき、 yi+1 =R-1・z2 mod N yi+1 ・R=z2 mod N の解をZj (j=1,2,3,4)(ただし、Zj∈Qj
)とすると、 Z1 ≡−Z2 (mod N) Z3 ≡−Z4 (mod N) より、仮定を用いて、 αi =lsb(z1) を予想することができる。よって、 αi =lsb(b)なら b∈Q1 そのときc∈Q1 αi ≠lsb(b)なら b∈Q2 そのときc∈Q2 同様にR∈Q2 ,R∈Q3 ,R∈Q4 の時も、cの平方
剰余性を判定できる。
【0036】証明終わり。図1は本実施例による疑似乱
数生成装置1の構成を示す図である。疑似乱数生成装置
1は、自乗剰余演算装置2と、論理演算装置3から構成
される。
【0037】自乗剰余演算装置2は、初期値y0 と剰余
演算の法であるNと互いに素である任意の定数Rから、
次式に示す演算を連鎖的に行い、y1 ,y2 ,…を生成
する。 yi+1 =R-1・yi 2 mod N (i=0,1,2,…) (式18) N=p・q (式19) ただし、p、qは、p≡q≡3(mod 4)である素
数。
【0038】Rは、Nと互いに素な任意の数。生成され
たy1 ,y2 ,…は、yi+1出力線5にシーケンシャル
に出力される。
【0039】上式で表わされる演算方式は、前述のよう
にモンゴメリ法と呼ばれるものである。モンゴメリ法で
は、実際に計算結果yi+1 を得るために、次式の演算を
行う。 yi+1 =(yi 2+M・N)/R (i=0,1,2,…) (式20) ただし、 M=yi 2・N’mod R (式21) N’=−N-1 mod R (式22) ここで、Nは奇数であるので、R=2t (tは任意の整
数)とすればRとNは互いに素な整数になる。この場
合、Rによる除算及び剰余演算は実質的な演算を必要と
せず、yi+1 を乗算と加算演算で高速に計算できる。
【0040】自乗剰余演算装置2の構成としては、例え
ばハードウエアで構成する場合には、加算機と、乗算器
と、Rによる除算及び剰余演算のためのビットシフトを
行うシフタ等の基本演算器を備えることによって、容易
にモンゴメリの方法による演算を実行できる。さらに、
文献「モンゴメリー法を用いたべき乗アルゴリズムとシ
ストリックアレイ」(岩村、松本、今井;vol.92,No.13
4,pp.49-54,1992 )に示される公知のモンゴメリ演算回
路を用いることもできる。
【0041】自乗剰余演算装置2のyi+1出力線5に、
シーケンシャルに出力されるy1 ,y2 ,…の各値は論
理演算装置3に入力される。論理演算装置3では、入力
されたy1,y2,…のそれぞれ下位log2n(但し、nはN
の2進表示による桁数)ビットの範囲にある任意の(単
数/複数)ビットを切り出して、それを疑似乱数として
出力線6に疑似乱数を出力する。例えば、下位log2nビ
ット全てを疑似乱数としてもよいし、最下位ビットだけ
を疑似乱数として出力してもよい。
【0042】論理演算装置3を、例えばハードウエアに
より構成する場合には、入力された入力されたyi (i
=1,2,…)をパラレルでラッチし、その下位log2
ビットを純にシリアルに出力するようなパラレル入力シ
リアル出力のシフトレジスタを用いることができる。
【0043】図2は、第1の実施例である疑似乱数生成
方法をソフトウエアで実現するための疑似乱数生成プロ
グラムを搭載したデータ処理装置15の構成を示す図で
ある。ここで、CPU10は、疑似乱数生成プログラム
を搭載したデータ処理装置15全体の制御を行う。キー
ボード11は、疑似乱数生成プログラムの起動コマンド
や疑似乱数生成プログラムのための各種パラメータ値な
どの入力を行う。ROM13には、本実施例の疑似乱数
を生成する疑似乱数生成プログラム等が予め格納されて
おり、CPU10によって読み出されながら実行され
る。RAM14は、疑似乱数生成プログラムを実行させ
るなどの作業領域であり、また疑似乱数生成結果が格納
される。
【0044】第3図は、疑似乱数生成プログラムの処理
過程を説明するフローチャートである。以下このフロー
チャートに基づき疑似乱数生成プログラムの処理過程を
説明する。疑似乱数生成プログラムは、式(7)〜式
(9)の演算の実行を基本としている。
【0045】ステップS1では、3(mod 4)であ
る素数を任意に選び、pとqに設定する。そして、p・
qの乗算を行い、結果をNに設定する。そして、Nと互
いに素な任意の数をRに設定する。さらに、R=2t
満たす「t」値を計算する。またさらに、「−N-1 mo
d R」を計算して、結果をN’に設定する。
【0046】ステップS2では、乱数生成のための任意
の初期値をy0にセットする。
【0047】ステップS3では、yi 2・N’mod 2t
の演算を行い、結果をN’に設定する。
【0048】ステップS4では、乱数生成の繰り返し数
を示すiを「0」に初期化する。
【0049】ステップS5では、「yi 2・N’mod
t」を計算して、結果をMに設定する。尚、ここで、
「yi 2・N’」を2tで割る処理が基本になるので、除
算は「yi 2・N’」を「t」ビットシフト処理すればよ
いので高速に処理できる。
【0050】ステップS6では、「(yi 2+M・N)/
t」の演算を行い、結果をyi+1に設定する。ここでの
除算も「t」ビットシフトが基本となるので高速に処理
できる。
【0051】ステップS7では、yiから、所定数の所
定位置のビット列を切り出して、rand(i)に設定
する。尚、rand(i)は1次元の配列である。
【0052】ステップS8では、i値を所定のEnd値
と比較して、i値がEnd値より小さければ、ステップ
S9へ進む。尚、End値は、予め生成したい乱数列の
量に対応して設定されている。これは、例えば、キーボ
ード11からでもよいし、本疑似乱数生成プログラムを
呼び出す別のプログラムで設定してもよい。
【0053】ステップS9では、次の乱数を生成するた
めにiをカウントアップする。そして、ステップS5か
らの処理に戻り、次の乱数の生成を継続する。
【0054】以上の処理を行うことで、配列領域ran
dに一連の疑似乱数列が生成される。
【0055】尚、モンゴメリ法による疑似乱数生成方法
を示してきたが、一般に自乗演算結果X2に任意の定数
Cを掛けた数C・X2に対し剰余演算を行い、その結果
得られるy=C・X2 modNの所定ビットから疑似乱
数を生成することもできる。図4は、第2の実施例によ
る疑似乱数生成装置20の構成を示す図である。疑似乱
数生成装置20は、自乗剰余演算装置21と論理演算装
置22から構成される。
【0056】自乗剰余演算装置21は、初期値y0 と任
意の定数Cから、次式に基づく演算を連鎖的に行い、y
1,y2,…を生成する。 yi+1 =C・yi 2 mod N (i=0,1,2,…) N=p・q ただし、p,qはp≡q≡3(mod4)である素数。
図4の自乗剰余演算装置21に示された演算、即ち、 yi 2 mod N C・yi 2 mod N は、両者とも乗算剰余演算であるため、自乗剰余装置2
1を構成としては、乗算剰余演算を行えるものであれば
よい。特にハードウエアにより構成する場合には、文献
「並列処理によるRSA暗号装置の構成法」(岩村、松
本、今井;電子情報通信学会論文A、vol.J75-A,No.8,p
p.1301-1311,1992)に示される公知の乗算剰余演算回路
を用いることもできる。自乗剰余演算装置からの出力
は、論理演算装置に入力される。論理演算装置では入力
されたy1,y2,…のそれぞれ下位log2n(ただし、nは
Nの2進表示による桁数)ビットの範囲にある任意の
(複数/単数)ビットから疑似乱数を生成し出力する。
【0057】論理演算装置22は入力されたy1,y2,…
のそれぞれ下位log2nビットの範囲にある任意のビット
を疑似乱数として出力することができる。例えば、下位
log2nビット全てを疑似乱数とすることも、最下位ビッ
トだけを疑似乱数として出力することもできる。
【0058】以上、詳細に説明した様に本発明の実施例
によれば、暗号学的に安全な疑似乱数をモンゴメリ法に
より生成する場合、式(11)により得られるyi の所
定のビットを疑似乱数として用いることにより、安全性
を低下させることなく、従来必要であった式(13)の
演算を不要にできる。そのことにより、従来と同程度の
安全性を有する疑似乱数列を高速に、或はより小さな回
路規模で生成することが可能である。
【0059】以上説明した様に、本実施例の方法とその
装置で生成された疑似乱数を用いることで、高速に通信
データの生成/再生を行うことができる。
【0060】[第2の実施例]第2の実施例による疑似
乱数生成器は、[アルゴリズム2]の式(*3)で示され
た演算を省くことにより、式(3)と同程度の安全性を
有する疑似乱数列をより高速に、或はより小さな回路規
模で生成することを可能とすることを目的としている。
【0061】まず、[アルゴリズム2]の式(*3)で示
された演算を省いた時の[アルゴリズム3]を以下に示
す。 [アルゴリズム3] INPUT x0 ,e,N,RR =R2 mod N y0 =Mont(x0,RR) FOR i=0 TO s yi+1 =Mont(1,RR ) FOR j=k TO 1 IF ej =1 THEN yi+1 =Mont(yi+1 ,yi ) IF j>1 THEN yi+1 =Mont(yi+1 ,yi+1 ) NEXT OUTPUT yi+1 (=R-(e-1)・yi e mod N) NEXT この[アルゴリズム3]を実行することによりえられる系
列yi (i=0,1,2,…,s)は、式(15)によ
り示される。式(*3)を省略した場合の第5の実施例
による疑似乱数生成器は、暗号学的に疑似乱数系列とし
ての式(15)のyi から αi =lsb(yi )(i=0,1,2,…) (式23) によって得られたαi を用いる。
【0062】ここで、式(15)と式(23)を用いた
疑似乱数生成の安全性について考察する。式(3)で用
いた疑似乱数生成の安全性は、xi+1 からbi を求める
ことが困難であること、つまりbi がxi+1 のハードコ
アビットであることを利用している。式(15)で得ら
れる系列yi(i=0,1,2,…)は、式(3)で得
られる系列xi (i=0,1,2,…)に定数Rを掛け
てNで剰余をとった値である(式(16)参照)。よっ
て、xi+1 からbi =lsb(xi )を求めることが非
常に困難であれば、xi+1 に定数Rを掛けてNで剰余を
とったyi+1 (=R・xi+1 mod N)からαi=ls
b(yi)(lsb(R・xi mod N))を求めることも非
常に困難である。つまり、ai はyi+1のハードコアビ
ットであるので、式(15)と式(23)を用いた疑似
乱数生成の安全性も式(3)を用いた疑似乱数生成と同
程度である。
【0063】次に、図5を用いて、[アルゴリズム3]を
実行するための処理フローを説明する。
【0064】ステップS10では、x0、e、N、sの
各値を入力する。ここで、sは剰余演算の繰り返し数で
ある。
【0065】ステップS11では、Mont(x0
R)の演算を行い、その結果をy0に設定する。ここ
で、Mont(x0 ,RR)は、x0 ,RRを変数とし、
式(7)、式(8)、式(9)の演算を行う関数であ
る。但し、式(9)は、予め計算しておくことができ、
N’は定数として扱えるため、実際には、式(7)、式
(8)を演算してMont(x0 ,RR)を求める。式
(7)、式(8)の演算において、法Rは予め2tで表
現されているため、必要な除算は、ビットシフトで実行
できる。
【0066】ステップS12では、剰余演算の繰り返し
数のカウンタiを、まず「0」に初期化する。そして、
このステップにエントリするごとに、カウンタiをカウ
ントアップし、次のステップへ進む。カウントアップは
sまで行う。
【0067】ステップS13では、Mont(1,
R)の演算を行い、その結果をyi+1に設定する。
【0068】ステップS14では、eの各ビットをポイ
ントするビットポインタjを、まずkに設定する。ここ
で、kはeのビット長であり予め設定されているとす
る。そして、このステップにエントリするごとに、ビッ
トポインタjをカウントダウンし、次のステップへ進
む。カウントダウンは1まで行う。
【0069】ステップS15では、ビットポインタjで
指定されるeのビットが「1」であるかどうかチェック
する。そして、「1」であればステップS16へ進み、
Mont(yi+1,yi)の演算を行い、その結果をy
i+1に設定する。「0」であればステップS17へ進
む。
【0070】ステップS18では、ビットポインタjが
「1」以上かどうかチェックし、「1」以上でなけれ
ば、ステップS28へ進む。「1」以上であればステッ
プS18へ進み、「Mont(yi+1,yi+1)」の演算
をおこない、その結果をyi+1に設定する。
【0071】ステップS19では、ビットポインタjが
「k〜1」区間の値であるかチェックし、その区間値で
あれば、ステップS14からの剰余演算処理へ戻る。そ
の区間値以外であればステップS100へ進む。
【0072】ステップS100では、yi+1 (i=0,1,
2,...)を記憶装置等に格納する。
【0073】ステップS101では、カウンタiが「0
〜s」区間の値であるかチェックし、その区間値であれ
ば、ステップS12からの処理に戻り、次の剰余演算処
理を行う。その区間値以外であれば、剰余演算処理を終
了する。
【0074】図6は、第2の実施例の疑似乱数生成装置
93である。べき乗余剰演算装置93は演算はアルゴリ
ズム3に従って初期値x0 ,剰余演算の法であるN,N
と互いにそである任意の定数R、べきeから、以下の演
算を連鎖的に行ない、y1,y2,…を生成する。 y0 =R・x0 mod N (式24) yi+1 =R-(e-1)・yi e mod N (i=0,1,2,…) (式25) ここで、N=p・q ただし、p,qは素数。
【0075】e(≧2)は任意の定数。べき乗余剰演算
装置90では、アルゴリズム3を実行している。べき乗
余剰演算装置90の入力は初期値x0,べきe,演算の
法N,定数R,RR=R2 modN,iに対する繰り返
し演算回数sである。べき乗余剰演算装置90からはy
i+ 1 (i=0,1,…,s)が順次出力される。べき乗
余剰演算装置90は、入力バッファ94、判定部96、
モンゴメリ演算器95、メモリ98、出力部97からな
る。べき乗余剰演算装置90の動作手順を次に述べる。 1.入力バッファ94にはx0 ,e,N,R,RR ,s
が入力される。入力バッファ94に入力されたe,sは
判定部96に入力される。判定部96では、eを[ek
k-1 …e21 ]のkビットに分解する。更に判定部
96が備えるi及びjに対する2つのカウンタに対して
i=0,j=kと設定する。入力バッファ94に入力さ
れたR,Nはモンゴメリ演算器95に設定され、モンゴ
メリ演算の初期値x0 ,RR はメモリ98に保持され
る。
【0076】2.メモリ98にあるx0 ,RR によりモ
ンゴメリ演算器95においてy0 が算出され、y1 =R
と共にモンゴメリ演算の初期値としてメモリ98に保持
される。
【0077】3.i=0,j=kに対し、判定回路はe
j =1及びj>1を判定し、判定結果に応じてメモリ9
8に対するアドレス信号を出力する。メモリ98はyi
とyi+1を保持するが、yi+1はモンゴメリ演算器95の
出力結果により随時更新される。メモリ98は、判定部
96からのアドレス信号に応じて、モンゴメリ演算の出
力yi+1 を記憶し、判定部96からのアドレス信号に応
じて読み出し、モンゴメリ演算器95へyi+1あるいは
iを出力する。モンゴメリ演算器95はメモリ98か
らの出力に応じてモンゴメリ演算を行なう。判定部96
のjに対するカウンタを1カウントダウンさせ、j=0
となるまでこの手順を繰り返す。
【0078】4.j=0となったら、判定部96は出力
部97に対しイネーブル信号を出し、出力部97はj=
0の時のyi+1をラッチする。出力部97はラッチした
i+1をべき乗余剰演算結果として出力し、同時にyi+1
をモンゴメリ演算器95の次の入力としてメモリ98で
保持する。判定部96のiに対するカウンタを1カウン
トアップさせ、i=sとなるまで手順3.、手順4.を
繰り返す。
【0079】5.終了。べき乗余剰演算装置90からの
出力は、論理演算装置91に入力される。論理演算装置
91では、入力されたy1 ,y2 ,…のそれぞれ下位l
og2n(但し、nはNの2進表示による桁数)ビット
の範囲にある任意の(複数/単位)ビットから疑似乱数
を生成し、出力する。
【0080】論理演算装置91は、入力されたy1 ,y
2 ,…のそれぞれ下位log2nビットの範囲にある任
意のビットを疑似乱数として出力することができる。例
えば、下位log2nビット全てを疑似乱数とすること
も、最下位ビットだけを疑似乱数として出力することも
できる。
【0081】論理演算装置として例えば、ハードウエア
により構成する場合には、入力されたyi (i=1,
2,…)をパラレルでラッチし、その下位log2nビ
ットを順次シリアルに出力するパラレル入力シリアル出
力のシフトレジスタを用いることができる。
【0082】以上のように第2の実施例によれば、[ア
ルゴリズム2]において従来必要であった式(*3)の
処理を省いた[アルゴリズム3]の計算手順により、式
(3)と同程度の安全性を有する疑似乱数列をより高速
に、或はより小さな回路規模で生成できる。
【0083】以上説明した様に、本実施例の方法とその
装置で生成された疑似乱数を用いることで、高速に通信
データの生成/再生を行うことができる。
【0084】[第3の実施例]第3の実施例による疑似
乱数生成器は、[アルゴリズム2]の式(*1)、式(*
3)で示された演算を両方とも省くことにより、式
(3)と同程度の安全性を有する疑似乱数列をより高速
に、或はより小さな回路規模で生成することを可能とす
ることを目的としている。
【0085】第3の実施例の[アルゴリズム4]を以下に
示す。 [アルゴリズム4] INPUT y0 (=x0),e,N,R FOR i=0 TO s yi+1=R FOR j=k TO 1 IF ej =1 THEN yi+1 =Mont(yi+1,yi) IF j>1 THEN yi+1 =Mont(yi+1,yi+1) NEXT OUTPUT yi+1 (=R-(e-1)・yi e mod N) NEXT このアルゴリズムを実行することによりえられる系列y
i (i=0,1,2,…,s)は、Nと互いに素である
Rを用いて、 y0 =x0 mod N (式26) yi+1 =R-(e-1)・yi e mod N (i=0,1,2,…) (式27) と表わされる。この場合、式(3)で生成される系列x
i (i=0,1,2,…)と式(27)で生成される系
列yi (i=0,1,2,…)とを比較すると、 yi =R**(1-ei)・xi modN(i=0,1,2,…) (式28) となっている。尚、ここで、「R**(1-ei)」は、Rの(1
-ei)乗を意味するものとする。
【0086】式(*1)、式(*3)を省略した場合の
本実施例による疑似乱数生成器は、暗号学的に安全な疑
似乱数系列として式(27)のyi から、 ai’=lsb(yi) (i=0,1,2,…) (式29) によって得られたai’を用いる。
【0087】この場合も安全性に関して前述の式(*
3)を省略した場合と同じことが言える。式(27)で
得られる系列yi (i=0,1,2,…)は、式(3)
で得られる系列xi (x=0,1,2,…)に定数R**
(1-ei+1)を掛けてNで剰余をとった値である(式(2
8)参照)。
【0088】よって、xi+1 からbi =lsb(xi
を求めることが非常に困難であれば、xi+1 に定数R**
(1-ei+1)を掛けてNで剰余をとった yi+1(=(R**(1-ei+1)・xi+1) mod N)から ai '=lsb(yi)(=lsb((R**(1-ei+1)・xi)
mod N))を求めることも非常に困難である。つま
り、ai 'はyi+1のハードコアビットであるので、式
(27)と式(29)を用いた疑似乱数生成の安全性も
式(3)を用いた疑似乱数生成と同程度である。
【0089】次に、図7を用いて、[アルゴリズム3]を
実行するための処理フローを説明する。
【0090】ステップS200では、y0、e、N、s
の各値を入力する。ここで、sは剰余演算の繰り返し数
である。
【0091】ステップS201では、剰余演算の繰り返
し数のカウンタiを、まず「0」に初期化する。そし
て、このステップにエントリするごとに、カウンタiを
カウントアップし、次のステップへ進む。カウントアッ
プはsまで行う。
【0092】ステップS202では、Rをyi+1に設定
する。
【0093】ステップS203では、eの各ビットをポ
イントするビットポインタjを、まずkに設定する。こ
こで、kはeのビット長であり予め設定されているとす
る。そして、このステップにエントリするごとに、ビッ
トポインタjをカウントダウンし、次のステップへ進
む。カウントダウンは1まで行う。ステップS204で
は、ビットポインタjで指定されるeのビットが「1」
であるかどうかチェックする。そして、「1」であれば
ステップS205へ進み、Mont(yi+1,yi)の演
算を行い、その結果をyi+1に設定する。「0」であれ
ばステップS206へ進む。
【0094】ステップS206では、ビットポインタj
が「1」以上かどうかチェックし、「1」以上でなけれ
ば、ステップS207進む。「1」以上であればステッ
プS208へ進み、「Mont(yi+1,yi+1)」の演
算をおこない、その結果をy i+1に設定する。
【0095】ステップS208では、ビットポインタj
が「k〜1」区間の値であるかチェックし、その区間値
であれば、ステップS203からの剰余演算処理へ戻
る。その区間値以外であればステップS209へ進む。
【0096】ステップS209では、yi+1 (i=0,1,
2,...)を記憶装置等に格納する。
【0097】ステップS210では、カウンタiが「0
〜s」区間の値であるかチェックし、その区間値であれ
ば、ステップS12からの処理に戻り、次の剰余演算処
理を行う。その区間値以外であれば、剰余演算処理を終
了する。
【0098】図8は、第3の実施例の疑似乱数生成装置
83の構成を示す図である。疑似乱数生成装置83は、
べき乗剰余演算装置80と論理演算装置81を備える。
べき乗剰余演算装置80は演算を[アルゴリズム4]に従
って、初期値y0 ,剰余演算の法であるN,Nと互いに
素である任意の定数R、べきe等を入力バッファ84に
入力する。この入力は、例えばキーボード11を用いて
入力する。モンゴメリ演算器85では、入力バッファ8
4から、N,R、y0の各値を入力し、次式に相当する
演算を行いyi+1 (i=0,1,2,...)の数列、即ち、y1
,y2 ,…を順次求める。 yi+1 =R-(e-1)・yi e mod N (i=0,1,2,…) (式30) ただし、N=p・q p,qは素数 e: e≧2を満たす任意の定数 尚、p,qは予め設定されているとする。また、N(=
p・q)も予め計算されているとする。モンゴメリ演算
器85での実際の演算方法は、上式を直接計算するので
はなく、モンゴメリ法を適用した以下に示す等価式に基
づいて演算を行う。
【0099】[アルゴリズム4]で用いられているモンゴ
メリ法による演算Mont(u,v)は前述のように、
式(7)〜式(9)の演算を行なっている。
【0100】上述のようにNは奇数であるので、R=2
t (tは任意の整数)とすればRとNは互いに素な整数
になる。この場合、Rによる乗算及び剰余演算は実質的
な演算を必要とせず、Mont(u,v)を乗算と加算
のみで高速に計算できる。よって、このモンゴメリ法に
よる演算の繰り返しにより実現できるべき乗剰余演算も
高速に計算できる。
【0101】べき乗剰余演算では、[アルゴリズム4]を
実行している。べき乗剰余演算装置80の入力バッファ
84に対する入力は初期値y0 (=x0),べきe,演
算の法N,定数R,iに対する繰り返し演算回数sであ
る。べき乗剰余演算装置80の出力部87からはyi+1
(i=0,1,…,s)が順次出力される。べき乗剰余
演算装置80は、入力バッファ84、判定部86、モン
ゴメリ演算器85、メモリ88、出力部87を備える。
べき乗剰余演算装置80の動作の手順を述べる。 1.入力バッファにはyo =(x0 ),e,N,R,s
が入力される。入力手段に入力されたe,sは判定部8
6に入力される。判定部86では、eを[ek ek-1 …
e2 e1 ]のkビットに分解する。更に判定部86が備
えるi及びjに対する2つのカウンタに対してi=0,
j=kと設定する。入力バッファ84に入力されたR,
Nはモンゴメリ演算器85に設定され、モンゴメリ演算
の初期値y 0 ,y1 =Rはメモリ88に保持される。
【0102】2.i=0,j=kに対し、判定回路はe
j =1及びj>1を判定し、判定結果に応じてメモリ8
8に対するアドレス信号を出力する。メモリ88はyi
とyi+ 1 を保持するが、yi+1 はモンゴメリ演算器85
の出力結果により随時更新される。メモリ88は判定部
86からのアドレス信号に応じてモンゴメリ演算器85
の出力yi+1 を記憶し、判定部86からのアドレス信号
に応じて読み出しモンゴメリ演算器85へyi+1 あるい
はyi を出力する。モンゴメリ演算器85はメモリ88
からの出力に応じてモンゴメリ演算を行なう。判定部8
6のjに対するカウンタを1カウンタダウンさせ、j=
0となるまでこの手順を繰り返す。
【0103】3.j=0となったら判定部86は出力部
87に対し、イネーブル信号を出し、出力部87はj=
0の時のyi+1をラッチする。出力部87はラッチした
i+1をべき乗剰余演算結果として出力し、同時にyi+1
をモンゴメリ演算器85の次の入力としてメモリ88
で保持する。判定部86のiに対するカウンタを1カウ
ントアップさせ、i=sとなるまで手順2.と手順3.
を繰り返す。
【0104】4.終了。上記入力バッファ84としては
0 (=x0),e,N,Rの各入力値をラッチし保持
するレジスタ、判定部86としてはej =1及びj>1
を判定する比較器とi及びjに対するカウンタとアドレ
ス指定信号やイネーブル信号を出力する論理回路で構成
できる。メモリ88は書き込み/読み出しがランダムに
行なえるRAM、出力部87としては判定部86からの
イネーブル信号に応じてyi+1 の出力値をラッチし保持
するレジスタ等で構成できる。
【0105】上記モンゴメリ法の演算を行なう手段とし
て、例えばハードウエアにより構成する場合には、加算
器と、乗算器と、Rによる除算剰余演算のためのビット
シフトをシフタ等の基本要素から構成できる。更に、文
献、「モンゴメリ法を用いたべき乗アルゴリズムとシス
トリックアレイ」(岩村,松本,今井;信学技報,vol.
92,No.134,pp.49-54,1992 )に示される公知のモンゴメ
リ演算回路を用いることもできる。
【0106】べき乗余剰演算装置80からの出力は、論
理演算装置81に入力される。論理演算装置81では、
入力されたy1 ,y2 ,…のそれぞれ下位log2
(但し、nはNの2進表示による桁数)ビットの範囲に
ある任意の(複数/単位)ビットから疑似乱数を生成
し、出力する。
【0107】論理演算装置81は、入力されたy1 ,y
2 ,…のそれぞれ下位log2nビットの範囲にある任
意のビットを疑似乱数として出力することができる。例
えば、下位log2nビット全てを疑似乱数とすること
も、最下位ビットだけを疑似乱数として出力することも
できる。
【0108】論理演算装置として例えば、ハードウエア
により構成する場合には、入力されたyi (i=1,
2,…)をパラレルでラッチし、その下位log2nビ
ットを順次シリアルに出力するパラレル入力シリアル出
力のシフトレジスタを用いることができる。
【0109】以上説明したように、第3の実施例によれ
ば、[アルゴリズム2]において従来必要であった式(*
1),式(*3)の処理を省いた[アルゴリズム4]の計
算手順により、式(3)と同程度の安全性を有する疑似
乱数列をより高速に、あるいはより小さな回路規模で生
成することを可能にしたものである。
【0110】この場合、モンゴメリ法を用いたことによ
る乗算剰余演算の高速化に加えて、[アルゴリズム2]に
必要であった入力に対する変換と出力を得るための変換
が不要になるので、演算全体としての高速化が期待でき
る。
【0111】以上説明した様に、本実施例の方法とその
装置で生成された疑似乱数を用いることで、高速に通信
データの生成/再生を行うことができる。
【0112】[第4の実施例]以上説明して実施例で
は、モンゴメリ法による疑似乱数生成方法を示したが、
一般にべき乗演算結果xe に任意の定数Cを掛けた数C
・xe に対し剰余演算を行ない、その結果得られるy=
C・xe mod Nの所定ビットから疑似乱数を生成す
ることもできる。
【0113】図9は、第4の実施例による疑似乱数生成
装置の構成図73である。べき乗余剰演算装置70は初
期値x0 ,剰余演算の法であるN,べきeから、次式の
演算を連鎖的に行ない、x1 ,x2 ,…を生成する。 xi+1 =xi e mod N (i=0,1,2,…) (式31) ここで、N=p・q ただし、p,qを素数 e(≧2)は任意の定数。 乗算剰余演算器70は入力値xi+1 (i=0,1,2,
…)、剰余演算の法であるNから、 yi+1 =C・xi+1 mod N (i=0,1,2,…) (式32) という演算を行ない、y1 ,y2 ,…を生成する。
【0114】べき乗剰余演算装置70では、[アルゴリ
ズム1]を実行している。べき乗剰余演算装置70の入
力は、初期値x0 ,べきe,演算の法N,iに対する繰
り返し演算回数sである。べき乗剰余演算装置70から
はxi+1 (i=0,1,…,s)が順次出力される。べ
き乗剰余演算装置70は、入力バッファ74、判定部7
6、乗算剰余演算器75、メモリ78、出力部77から
なる。
【0115】次に、べき乗剰余演算装置70の動作の手
順を述べる。 1.入力バッファ74には、x0 ,e,N,sが入力さ
れる。入力バッファ74に入力されたe,sは判定部7
6に入力される。判定部76ではeを[ekk- 1 …e
21 ]のkビットに分解する。更に判定部76が備え
るi及びjに対する2つのカウンタに対してi=0,j
=kと設定する。入力バッファ74に入力されたR,N
は乗算剰余演算器75に設定され、乗算剰余演算の初期
値x0 ,x 1 =1はメモリ78に保持される。
【0116】2.i=0,j=kに対し、判定部76
は、ej =1及びj>1を判定し、判定結果に応じてメ
モリ78に対するアドレス信号を出力する。メモリ78
はxi とxi+1を保持するが、xi+1は乗算剰余演算器7
5の出力結果により随時更新される。メモリ78は判定
部76からのアドレス信号に応じて乗算剰余演算の出力
i+1を記憶し、判定部76からのアドレス信号に応じ
て読み出し、乗算剰余演算器75へ、xi+1あるいはxi
を出力する。乗算剰余演算器75は、メモリ78からの
出力に応じて乗算剰余演算を行なう。判定部76のjに
対するカウンタを1カウントダウンさせ、j=0となる
までこの手順を繰り返す。
【0117】3.j=0となったら判定部76は出力部
77に対しイネーブル信号を出し、出力部77はj=0
の時のxi+1 をラッチする。出力部77はラッチしたy
i+1をべき乗剰余演算結果として出力し、同時にxi+1
乗算剰余演算器75の次の入力としてメモリ78で保持
する。判定部76のiに対するカウンタを1カウントア
ップさせ、i=sとなるまで手順2.、手順3.を繰り
返す。
【0118】4.終了。入力バッファ74としては、x
0 ,e,N,sの各入力値をラッチし保持するレジス
タ、判定部76としてはej =1及びj>1を判定する
比較器とi及びjに対するカウンタとアドレス指定信号
やイネーブル信号を出力する論理回路で構成できる。メ
モリ78は書き込み/読み出しがランダムに行なえるR
AM、出力部77としては判定部76からのイネーブル
信号に応じてxi+1 の出力値をラッチし保持するレジス
タ等で容易に構成できる。
【0119】前述のように、べき乗剰余演算は乗算剰余
演算の繰り返しで実現できる。べき乗剰余演算装置70
及び乗算剰余器での乗算剰余演算を、例えばハードウエ
アにより構成する場合には、文献 「並列処理によるR
SA暗号装置の構成b法」(岩村,松本,今井;電子情
報通信学会論文誌A,vol.J75-A,No.8,pp.1301-1311,19
92)に示される公知の乗算剰余演算方法を用いることも
できる。
【0120】乗算剰余演算器72からの出力は、論理演
算装置71に入力される。論理演算装置71では入力さ
れたy1,y2 ,…のそれぞれ下位log2 n(但し、
nはNの2進表示による桁数)ビットの範囲にある任意
の(複数/単数)ビットから疑似乱数を生成し、出力す
る。
【0121】論理演算装置71は、入力されたy1 ,y
2 ,…のそれぞれ下位log2 nビットの範囲にある任
意のビットを疑似乱数として出力することができる。例
えば、下位log2 nビット全てを疑似乱数とすること
も、最下位ビットだけを疑似乱数として出力することも
できる。
【0122】以上説明した様に、本実施例の方法とその
装置で生成された疑似乱数を用いることで、高速に通信
データの生成/再生を行うことができる。
【0123】[第5の実施例]これまで述べてきたよう
に、上記の疑似乱数生成方法によって生成された疑似乱
数は解析に対して強いので、この疑似乱数を暗号化方式
に用いることにより安全な暗号通信が実現できる。以
下、通信文と乱数との間でビット毎に排他的論理和をと
る暗号化方式(ストリーム暗号)による暗号通信ネット
ワークにおいて、以上説明してきた実施例の乱数生成器
を用いた暗号通信での応用例を以下説明する。
【0124】図10は、ネットワークの加入者間で固有
かつ秘密の暗号鍵を共有している共通鍵暗号通信ネット
ワーク30を示す。A,B,C,…,Nはそのネットワ
ークの各加入者である。通信ネットワーク34は、ネッ
トワークの加入者A,B,C,…,N31間の通信を可
能とするネットワークである。各加入者A,B,C,
…,Nの下の各サークル内の各符号KAB,KAC,…は、
それぞれの加入者が共有している暗号鍵を意味する。例
えば、各符号KAB,KAC,…は、それぞれ加入者A−B
間、加入者A−C間で共有している暗号鍵,…を示して
いる。
【0125】図11は、本実施例の乱数生成器を用いた
暗号装置及び複合装置を含む通信装置の構成をブロック
図により示したものである。
【0126】図12は、図10、図11で示された暗号
通信システムにおけるA、B間の秘匿通信の様子を示し
ている。
【0127】図12において、送信者Aが使用する送信
器45から受信者Bの利用する受信器46への暗号通信
は以下の手順で行う。
【0128】1.通信の送信者Aは、送信者Bと共有し
ている秘密の鍵KABの全て又は一部を乱数生成器40の
初期値として、乱数生成器40に設定し、乱数系列ki
(41)を生成させる。
【0129】2.送信器Aで生成した乱数系列ki(4
1)と、予め作られた通信文mi(42)をビット毎に
排他的論理和「mi(+)ki」を排他的論理和器43で計
算し、その結果の暗号文ciを受信器46に送信する。
【0130】3.通信の受信者Bは、送信元Aと共有し
ている秘密の鍵KABの全て又は一部を受信器Bの乱数生
成器47の初期値として乱数生成器47に設定し、乱数
系列k i を生成させる。
【0131】4.受信器Bでは、生成した乱数系列ki
と受信した暗号文ciをビット毎に排他的論理和「c
i(+)ki」をとり、その出力が通信文mi(48)として
復元される。
【0132】この手順に従えば、正規の受信者Bだけが
その秘密の鍵KABを知っているので受け取った暗号文を
本来の通信文に複合でき、それ以外の加入者(C〜N)
はその暗号文をする際に用いられた秘密の鍵を知らない
のでその内容を知ることができない。このことにより秘
匿通信が実現される。
【0133】また、図10のようにあらかじめ暗号鍵が
配布されているのではなく、暗号通信を行うに先立って
送・受信者間で暗号鍵を共有する必要がある携帯のネッ
トワークにおいても、公知の鍵共有を行えば同じ手順で
暗号通信を実現することができる。
【0134】尚、第5の実施例に示した暗号通信ネット
ワークでは通信文の送信者と受信者の間で固有かつ秘密
の鍵を共有しているので、暗号文を受け取り、意味をな
す通信文に複号できるということは、通信文がその鍵の
もう一人の所有者から送信されたということを受診者に
保証している。そのため、第3の実施例に示した秘匿通
信システムでは、通信の発信者及び着信者の認証も行う
ことができる。
【0135】以上説明した様に、本実施例の方法とその
装置で生成された疑似乱数を用いることで、高速に通信
データの生成/再生を行う暗号通信ネットワークを実現
できる。
【0136】[第6の実施例]第5の実施例のようにあ
らかじめ暗号鍵が配布されているのではなく、暗号通信
を行うに先立って送・受信者間で暗号鍵を共有する必要
がある形態のネットワークにおいて、盗聴の可能性のあ
る通信路を介した場合でも安全に暗号鍵を共有できる方
式としてDiffie-Hellmanの方式(W.Doffie and M.E.Hel
lman “ Direction in crytography ”,IEEE,IT,vol.
IT-22,No.6,1976 )が良く知られている。その際に用い
る乱数として本実施例により生成した乱数を用いること
ができる。
【0137】その場合に用いる乱数は、送信者と着信者
で同じものを持つ必要はないため、乱数発生器に設定す
る初期値は任意の値を用いればよい。
【0138】尚、本発明は、複数の機器から構成される
システムに適用しても1つの機器から成る装置に適用し
ても良い。また、本発明は、システム或は装置にプログ
ラムを供給することによって達成される場合にも適用で
きることはいうまでもない。
【0139】以上、詳細に説明した実施例によって、暗
号学的に安全な疑似乱数をモンゴメリ法により生成する
場合、式(15あるいは式(25により得られるyi の
所定ビットを疑似乱数として用いることにより、安全性
を低下させることなく、従来必要であった式(*3)あ
るいは式(*1),式(*3)の演算を不要にしたもの
である。そのことにより、従来と同程度の安全性を有す
る疑似乱数をより高速に、あるいはより小さな回路規模
で生成することが可能である。そのため、その生成され
た疑似乱数を用いることで、高速に通信データの生成/
再生を行うことができる。
【0140】
【発明の効果】以上説明したように本発明によれば、安
全な疑似乱数をより高速にかつ容易に生成し高速に通信
データの生成/再生を行うことができる。
【0141】
【図面の簡単な説明】
【図1】第1の実施例による疑似乱数生成装置の構成を
示す図である。
【図2】本発明の疑似乱数生成処理を実行するデータ処
理装置の図である。
【図3】第1の実施例による疑似乱数生成プログラムの
フローチャートである。
【図4】モンゴメリ法以外の方法による疑似乱数発生方
法の一例を示す図である。
【図5】第2の実施例による疑似乱数生成プログラムの
フローチャートである。
【図6】第2の実施例による疑似乱数生成装置の構成を
示す図である。
【図7】第3の実施例による疑似乱数生成のフローチャ
ートである。
【図8】第3の実施例による疑似乱数生成装置の構成を
示す図である。
【図9】第4の実施例による疑似乱数生成装置の構成を
示す図である。
【図10】第5の実施例による共通鍵暗号通信ネットワ
ークを示す図である。
【図11】第5の実施例による通信装置の構成図であ
る。
【図12】第5の実施例による暗号通信システムでの秘
匿通信の様子を示す図である。
【符号の説明】
10 CPU 11 キーボード 12 デイスプレイモニタ 13 疑似乱数発生プログラム 14 RAM
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 G09C 1/00 9364−5L

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 疑似乱数を用いた通信方法であって、 所定の値Nを法とし、所定の初期値X0と、所定の値C
    とに基づいて、漸化式Xi+1=C・Xi 2 mod N をi=
    0,1,2,...,sの順で繰り返し計算し、数列X1,X2,
    3,...Xs+1を求める計算工程と、 前記数列から所定部分を抽出し、その抽出された抽出デ
    ータを疑似乱数データとする抽出工程と、 前記疑似乱数データに基づいて、通信データを生成/再
    生する通信工程と、を備えることを特徴とする疑似乱数
    を用いた通信方法。
  2. 【請求項2】 前記漸化式は、モンゴメリ法に基づいて
    演算されることを特徴とする請求項1に記載の疑似乱数
    を用いた通信方法。
  3. 【請求項3】 前記モンゴメリ法に基づいて演算される
    前記漸化式の数列解は、 前記所定のNと互いに素な整数Rを選択し、 モンゴメリ法による漸化式 Xi+1=(Xi 2 + (Xi 2 ・(−N-1 mod R) mod
    R)・N)/R (i=0,1,2,...,s)の演算によって得られ
    ることを特徴とする請求項2に記載の疑似乱数を用いた
    通信方法。
  4. 【請求項4】 前記整数Rは、tを整数とする2tべき
    形式で置き換え可能で、 前記モンゴメリ法による漸化式の前記整数Rによる除算
    項は、その除算項の非除数をtビットシフトすることで
    計算されることを特徴とする請求項3に記載の疑似乱数
    を用いた通信方法。
  5. 【請求項5】 疑似乱数を用いた通信方法であって、 所定の値Nを法とし、所定の初期値X0と、所定の値C
    とに基づいて、漸化式Xi+1=C・Xi e mod N をi=
    0,1,2,...,sの順で繰り返し計算し、数列X1,X2,
    3,...Xs+1を求める計算工程と、 前記数列から所定部分を抽出し、その抽出された抽出デ
    ータを疑似乱数データとする抽出工程と、 前記疑似乱数データに基づいて、通信データを生成/再
    生する通信工程と、を備えることを特徴とする疑似乱数
    を用いた通信方法。
  6. 【請求項6】 前記漸化式は、モンゴメリ法に基づいて
    演算されることを特徴とする請求項5に記載の疑似乱数
    を用いた通信方法。
  7. 【請求項7】 前記モンゴメリ法に基づいて演算される
    前記漸化式の数列解は、u、vを整数の引き数とし、Q
    を出力結果とする乗算剰余式 Q=(u・v+(u・v・(-N-1 mod R) mod R)
    ・N)/R の演算を行う演算工程を備えることを特徴とする請求項
    6に記載の疑似乱数生成方法。
  8. 【請求項8】 疑似乱数を用いた通信装置であって、 所定の値Nを法とし、所定の初期値X0と、所定の値C
    とに基づいて、漸化式Xi+1=C・Xi 2 mod N をi=
    0,1,2,...,sの順で繰り返し計算し、数列X1,X2,
    3,...Xs+1を求める計算手段と、 前記数列から所定部分を抽出し、その抽出された抽出デ
    ータを疑似乱数データとする抽出手段と、 前記疑似乱数データに基づいて、通信データを生成/再
    生する通信手段と、を備えることを特徴とする疑似乱数
    を用いた通信装置。
  9. 【請求項9】 前記漸化式は、モンゴメリ法に基づいて
    演算されることを特徴とする請求項8に記載の疑似乱数
    を用いた通信装置。
  10. 【請求項10】 前記モンゴメリ法に基づいて演算され
    る前記漸化式の数列解は、 前記所定のNと互いに素な整数Rを選択し、 モンゴメリ法による漸化式 Xi+1=(Xi 2 + (Xi 2 ・(−N-1 mod R) mod
    R)・N)/R (i=0,1,2,...,s)の演算によって得られ
    ることを特徴とする請求項9に記載の疑似乱数を用いた
    通信装置。
  11. 【請求項11】 前記整数Rは、tを整数とする2t
    き形式で置き換え可能で、 前記モンゴメリ法による漸化式の前記整数Rによる除算
    項は、その除算項の非除数をtビットシフトすることで
    計算されることを特徴とする請求項10に記載の疑似乱
    数を用いた通信装置。
  12. 【請求項12】 疑似乱数を用いた通信装置であって、 所定の値Nを法とし、所定の初期値X0と、所定の値C
    とに基づいて、漸化式Xi+1=C・Xi e mod N をi=
    0,1,2,...,sの順で繰り返し計算し、数列X1,X2,
    3,...Xs+1を求める計算手段と、 前記数列から所定部分を抽出し、その抽出された抽出デ
    ータを疑似乱数データとする抽出手段と、 前記疑似乱数データに基づいて、通信データを生成/再
    生する通信手段と、を備えることを特徴とする疑似乱数
    を用いた通信装置。
  13. 【請求項13】 前記漸化式は、モンゴメリ法に基づい
    て演算されることを特徴とする請求項12に記載の疑似
    乱数を用いた通信装置。
  14. 【請求項14】 前記モンゴメリ法に基づいて演算され
    る前記漸化式の数列解は、u、vを整数の引き数とし、
    Qを出力結果とする乗算剰余式 Q=(u・v+(u・v・(-N-1 mod R) mod R)
    ・N)/R の演算を行う演算手段を備えることを特徴とする請求項
    13に記載の疑似乱数生成装置。
JP33124193A 1993-11-30 1993-12-27 擬似乱数生成方法及び装置、通信方法及び装置 Expired - Fee Related JP3591857B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP33124193A JP3591857B2 (ja) 1993-12-27 1993-12-27 擬似乱数生成方法及び装置、通信方法及び装置
US08/350,110 US5666419A (en) 1993-11-30 1994-11-29 Encryption device and communication apparatus using same
EP94308810A EP0656709B1 (en) 1993-11-30 1994-11-29 Encryption device and apparatus for encryption/decryption based on the Montgomery method using efficient modular multiplication
DE69434422T DE69434422T2 (de) 1993-11-30 1994-11-29 Verfahren und Anordnung zur Verschlüsselung/Entschlüsselung auf der Basis des Montgomery-Verfahrens unter Verwendung von effizienter modularer Multiplikation
AT94308810T ATE299631T1 (de) 1993-11-30 1994-11-29 Verfahren und anordnung zur verschlüsselung/entschlüsselung auf der basis des montgomery-verfahrens unter verwendung von effizienter modularer multiplikation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33124193A JP3591857B2 (ja) 1993-12-27 1993-12-27 擬似乱数生成方法及び装置、通信方法及び装置

Publications (2)

Publication Number Publication Date
JPH07193565A true JPH07193565A (ja) 1995-07-28
JP3591857B2 JP3591857B2 (ja) 2004-11-24

Family

ID=18241480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33124193A Expired - Fee Related JP3591857B2 (ja) 1993-11-30 1993-12-27 擬似乱数生成方法及び装置、通信方法及び装置

Country Status (1)

Country Link
JP (1) JP3591857B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008523728A (ja) * 2004-12-09 2008-07-03 インテル コーポレイション 暗号化処理のスピードを向上させるための方法及び装置
JP2011010277A (ja) * 2009-06-24 2011-01-13 Intel Corp 格納されている入力値および格納されているカウント値を利用する暗号化鍵生成
JP5875719B1 (ja) * 2015-01-29 2016-03-02 日本電信電話株式会社 乱数生成装置、乱数生成方法、およびプログラム
US11228426B2 (en) 2018-07-25 2022-01-18 Fujitsu Limited Communication device that performs encrypted communication and communication system

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008523728A (ja) * 2004-12-09 2008-07-03 インテル コーポレイション 暗号化処理のスピードを向上させるための方法及び装置
JP2011010277A (ja) * 2009-06-24 2011-01-13 Intel Corp 格納されている入力値および格納されているカウント値を利用する暗号化鍵生成
US8971530B2 (en) 2009-06-24 2015-03-03 Intel Corporation Cryptographic key generation using a stored input value and a stored count value
US9800409B2 (en) 2009-06-24 2017-10-24 Intel Corporation Cryptographic key generation using a stored input value and a stored count value
US10341099B2 (en) 2009-06-24 2019-07-02 Intel Corporation Cryptographic key generation using a stored input value and a stored count value
JP5875719B1 (ja) * 2015-01-29 2016-03-02 日本電信電話株式会社 乱数生成装置、乱数生成方法、およびプログラム
US11228426B2 (en) 2018-07-25 2022-01-18 Fujitsu Limited Communication device that performs encrypted communication and communication system
US11722294B2 (en) 2018-07-25 2023-08-08 Fujitsu Limited Communication device that performs encrypted communication and communication system

Also Published As

Publication number Publication date
JP3591857B2 (ja) 2004-11-24

Similar Documents

Publication Publication Date Title
EP0656709B1 (en) Encryption device and apparatus for encryption/decryption based on the Montgomery method using efficient modular multiplication
US7120248B2 (en) Multiple prime number generation using a parallel prime number search algorithm
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US6795553B1 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
US20110161390A1 (en) Modular multiplication processing apparatus
EP1708081B1 (en) Method and device for calculating a Montgomery conversion parameter
JP2009229615A (ja) データ処理システム及びデータ処理方法
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
JPH11305995A (ja) 計算装置のデ―タ処理高速化方法および装置。
US7024560B2 (en) Power-residue calculating unit using Montgomery algorithm
US6480606B1 (en) Elliptic curve encryption method and system
Tahir Design and Implementation of RSA Algorithm using FPGA
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
Omorog et al. Enhanced pseudorandom number generator based on Blum-Blum-Shub and elliptic curves
US7319750B1 (en) Digital circuit apparatus and method for accelerating preliminary operations for cryptographic processing
US6609141B1 (en) Method of performing modular inversion
JPH07193565A (ja) 疑似乱数を用いた通信方法とその装置
JP2007187908A (ja) サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法
US7113593B2 (en) Recursive cryptoaccelerator and recursive VHDL design of logic circuits
KR101548174B1 (ko) 모듈러스의 음의 역원을 구하는 방법
KR101472800B1 (ko) 공개키 암호화 연산에서의 윈도우의 크기를 변경하는 방법
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
Schinianakis et al. RNS-Based Public-Key Cryptography (RSA and ECC)
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031205

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040308

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040312

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040824

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080903

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090903

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090903

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100903

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100903

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110903

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110903

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120903

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees