JP3591857B2 - 擬似乱数生成方法及び装置、通信方法及び装置 - Google Patents
擬似乱数生成方法及び装置、通信方法及び装置 Download PDFInfo
- Publication number
- JP3591857B2 JP3591857B2 JP33124193A JP33124193A JP3591857B2 JP 3591857 B2 JP3591857 B2 JP 3591857B2 JP 33124193 A JP33124193 A JP 33124193A JP 33124193 A JP33124193 A JP 33124193A JP 3591857 B2 JP3591857 B2 JP 3591857B2
- Authority
- JP
- Japan
- Prior art keywords
- random number
- pseudo
- integer
- equation
- montgomery
- 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.)
- Expired - Fee Related
Links
Images
Description
【産業上の利用分野】
本発明は、暗号通信、特に、データの秘匿、発信者・着信者の認証、暗号鍵の共有、零知識証明プロトコル等で必要な乱数生成を用いた通信方法とその装置に関する。また、例えば、モンテカルロシミュレーション等で必要な乱数生成方法とその装置に関する。
【0002】
【従来の技術】
暗号通信で用いる乱数列は、ある時点までの生成した乱数列のみからその時点以降に生成する乱数が容易に予測できないことが必要である。文献「Primality and Cryptography」(Evangelos Kranakis著、JOHN 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】
これらの方法から生成された疑似乱数列b1 ,b2 ,…,bi のみからbi+1 を求めることは、Nを因数分解するのと同程度の手間が必要であることが知られている。つまり、ある時点までに生成された疑似乱数列のみからその時点以降に生成されるべき乱数を求めるための計算量は、Nを因数分解するのに必要な計算量と同等であることが知られている。ただし、Nを因数分解することを計算量的に困難にするためにはp,qを数百ビット程度にする必要がある。このように、ある時点までに生成された乱数列のみからその時点以降に生成されるべき乱数を予測することが計算量的に困難となるような方法により生成された乱数は、暗号学的に安全な疑似乱数と呼ばれている。
【0007】
式(1)、式(3)のような演算は、次式で示される乗算剰余と呼ばれる演算に含まれる。
Q=υ・ν mod N (Q,υ,νは整数) (式5)
このような乗算剰余を効率的に演算する方法としてモンゴメリ法(P.L.Montgomery “Modular multiplication without trial division”Math.of Computation,vol.44,1985,pp.519−521 参照)が知られている。このモンゴメリ法を用いれば、法Nによる除算を行うことなく演算できるので、通常の乗算剰余より効率的に処理できる。
【0008】
モンゴメリ法を用いた場合の乗算剰余をMont(υ,ν)とすると、Mont(υ,ν)は互いに素な数であるRを用いて、
Mont(υ,ν)≡υ・ν・R−1(mod N) (式6)
により与えられる。
【0009】
モンゴメリ法では、上式の計算結果Mont(υ,ν)を得るために
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)に示したべき乗剰余演算を繰り返すことによって実行することができる。具体的に乗算剰余の繰り返しによって、
べき乗剰余xi+1 =xi e mod N(i=0,1,2,…,s)を順次計算する手順は以下の[アルゴリズム1]に示すようになる。また、そのフローチャートを図13に示す。ただし、ただし、eをkビットからなる整数でe=[ek ek−1 …e2 e1 ]で表わすとする。
【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 mod N を計算する手順は以下のようになる。ただし、RはNと互いに素である整数とし、eは先程と同じくkビットからなる整数でe=[ek ek−1 …e2 e1 ]で表わせるとする。このアルゴリズムを実行すれば、式(2)で得られる系列xi (i=0,1,2,…,s)を得ることができる。
[アルゴリズム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)で生成される系列xi+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部分の出力として得られる
系列yi+1 (i=0,1,2,…s)は、式(3)で得られる系列xi+1 (i=0,1,2,…s)に対して式(16)のような関係にある。
【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に対するFOR−NEXT部分の出力として得られるyi+1からxi+1=Mont(yi+1,1)(=R−1・yi+1 mod N)と補正する必要があった。
【0018】
【発明が解決しようとする課題】
しかしながら、上述した安全な疑似乱数生成方法を用いた場合には、p,qを数百ビット程度にする必要があるため演算量が大きく、特に式(1)、式(3)部分の計算量が大きいため、高速に疑似乱数を生成できず、その疑似乱数に基づいて通信データの生成/再生を高速に行えないという問題があった。
【0019】
本発明は上記従来例に鑑みてなされたもので、安全な疑似乱数をより高速にかつ容易に生成可能とすることを目的とする。また、そのようにして生成された擬似乱数を用いて通信データの暗号化/復号を高速に実行可能とすることを目的とする。
【0020】
【課題を解決するための手段】
上記の目的を達成するための本発明による擬似乱数発生装置は以下の構成を備える。即ち、
所定の整数Nと、前記Nと互いに素な整数Rとを用いて、漸化式Xi+1=R−1・Xi 2 modN (i=0,1,2,…,s)をモンゴメリ法に基づいてXi+1=(Xi 2+(Xi 2・(−N− 1 modR) modR)・N)/Rによって計算するようにして、所定の初期値X 0 から当該漸化式により数列X1,X2,X3,…Xs+1を順次求める計算手段と、
前記漸化式X i+1 = R −1 ・X i 2 modNにより求められた数列の各Xiから所定のビット部分を抽出し、その抽出された抽出データを疑似乱数データとする抽出手段とを備える。
【0021】
また、本発明の他の形態による擬似乱数発生装置は以下の構成を備える。即ち、
任意のυ,νに対して、υ・ν・R−1 modNをモンゴメリ法に基づいて(υ・ν+(υ・ν・(−N−1 modR) modR)・N)/Rによって演算する処理をMont(υ,ν)と表すとき、所定の整数Nと、前記Nと互いに素な整数Rとを用いて、漸化式Xi+1=R−( e −1)・Xi emod N (i=0,1,2,…,s)をモンゴメリ法に基づいてMont(Xi + 1,Xi)及びMont(Xi + 1,Xi + 1)を用いて計算するようにして、所定の初期値X 0 から当該漸化式により数列X1,X2,X3,…Xs+1を順次求める計算手段と、
前記漸化式X i+1 = R −( e −1) ・X i e mod Nにより求められた数列の各Xiから所定のビット部分を抽出し、その抽出された抽出データを疑似乱数データとする抽出手段とを備える。
【0022】
また、本発明の他の形態による通信装置は、
上記疑似乱数生成装置により生成された疑似乱数データを用いて通信データを暗号化して送信する送信手段と、
暗号化されたデータを受信して、当該暗号化されたデータを前記疑似乱数生成装置により生成された疑似乱数データを用いて復号する受信手段とを有する。
【0024】
【作用】
上記構成の擬似乱数生成装置によれば、所定の整数Nと、前記Nと互いに素な整数Rとを用いて、漸化式Xi+1=R-1・Xi 2 modN(i=0,1,2,…,s)をモンゴメリ法に基づいてXi+1=(Xi 2+ (Xi 2・(−N-1modR) modR)・N)/Rによって計算するようにして、所定の初期値X 0 から当該漸化式により数列X1,X2,X3,…Xs+1を順次求める。そして、求めた数列の各Xiから所定のビット部分を抽出することにより疑似乱数データが得られる。
【0025】
また、本発明の他の態様による擬似乱数発生装置によれば、任意のυ,νに対して、υ・ν・R-1 modNをモンゴメリ法に基づいて(υ・ν+(υ・ν・(−N-1modR) modR)・N)/Rによって演算する処理をMont(υ,ν)と表すとき、所定の整数Nと、所定の初期値X0と、前記Nと互いに素な整数Rとを用いて、漸化式Xi+1=R-(e-1)・Xi emod N (i=0,1,2,…,s)をモンゴメリ法に基づいてMont(Xi + 1,Xi)及びMont(Xi + 1,Xi + 1)を用いて計算するようにして、所定の初期値から当該漸化式により数列X1,X2,X3,…Xs+1を順次求める。そして、この数列の各Xiから所定のビット部分を抽出することにより擬似乱数データが得られる。
【0026】
更に、本発明の通信装置は、上述の擬似乱数生成装置によって生成された疑似乱数データを用いて通信データを暗号化して送信する。また、そのように暗号化されたデータを受信して、当該暗号化されたデータを上述の擬似乱数生成装置によって生成された疑似乱数データを用いて復号する。
【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はyi+1 のハードコアビットであるので、式(11)、式(17)を用いた疑似乱数生成の安全性も、式(1)を用いた疑似乱数生成と同程度である。
【0031】
以上のように本実施例によれば、式(13)の処理を行うことなく、式(1)と同程度の安全性を有する疑似乱数列をより高速に、或はより小さな回路規模で生成することを可能にし、本実施例の方法を用いることで、高速に通信データの生成/再生を行うことができる。
【0032】
次に、式(11)、式(17)を用いた疑似乱数生成の安全性も式(1)を用いた疑似乱数生成と同程度であることの証明を行う。その前に用いる記号等を簡単に定義する。詳しくは、文献「現代暗号理論」(池野、小山著、昭和61年発行、電子情報通信学会、14−15、95−96)参照されたい。
・平方剰余:
X2 ≡c(modp)に解があるときcはpの平方剰余、解がないときは平方非剰余という。
【0033】
【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.134,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,…)をパラレルでラッチし、その下位log2nビットを純にシリアルに出力するようなパラレル入力シリアル出力のシフトレジスタを用いることができる。
【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 mod R」を計算して、結果をN’に設定する。
【0046】
ステップS2では、乱数生成のための任意の初期値をy0にセットする。
【0047】
ステップS3では、yi 2・N’mod 2tの演算を行い、結果をN’に設定する。
【0048】
ステップS4では、乱数生成の繰り返し数を示すiを「0」に初期化する。
【0049】
ステップS5では、「yi 2・N’mod 2t」を計算して、結果をMに設定する。尚、ここで、「yi 2・N’」を2tで割る処理が基本になるので、除算は
「yi 2・N’」を「t」ビットシフト処理すればよいので高速に処理できる。
【0050】
ステップS6では、「(yi 2+M・N)/2t」の演算を行い、結果を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】
以上の処理を行うことで、配列領域randに一連の疑似乱数列が生成される。
【0055】
尚、モンゴメリ法による疑似乱数生成方法を示してきたが、一般に自乗演算結果X2に任意の定数Cを掛けた数C・X2に対し剰余演算を行い、その結果得られるy=C・X2 modNの所定ビットから疑似乱数を生成することもできる。図4は、第2の実施例による疑似乱数生成装置20の構成を示す図である。疑似乱数生成装置20は、自乗剰余演算装置21と論理演算装置22から構成される。
【0056】
自乗剰余演算装置21は、初期値y0 と任意の定数Cから、次式に基づく演算を連鎖的に行い、y1,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
は、両者とも乗算剰余演算であるため、自乗剰余装置21を構成としては、乗算剰余演算を行えるものであればよい。特にハードウエアにより構成する場合には、文献「並列処理によるRSA暗号装置の構成法」(岩村、松本、今井;電子情報通信学会論文A、vol.J75−A,No.8,pp.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]を実行することによりえられる系列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=lsb(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,RR)の演算を行い、その結果を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,RR)の演算を行い、その結果をyi+1に設定する。
【0068】
ステップS14では、eの各ビットをポイントするビットポインタjを、まずkに設定する。ここで、kはeのビット長であり予め設定されているとする。そして、このステップにエントリするごとに、ビットポインタjをカウントダウンし、次のステップへ進む。カウントダウンは1まで行う。
【0069】
ステップS15では、ビットポインタjで指定されるeのビットが「1」であるかどうかチェックする。そして、「1」であればステップS16へ進み、
Mont(yi+1,yi)の演算を行い、その結果をyi+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からはyi+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 ek−1 …e2 e1 ]の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に対し、判定回路はej =1及びj>1を判定し、判定結果に応じてメモリ98に対するアドレス信号を出力する。メモリ98はyiとyi+1を保持するが、yi+1はモンゴメリ演算器95の出力結果により随時更新される。メモリ98は、判定部96からのアドレス信号に応じて、モンゴメリ演算の出力yi+1 を記憶し、判定部96からのアドレス信号に応じて読み出し、モンゴメリ演算器95へyi+1あるいはyiを出力する。モンゴメリ演算器95はメモリ98からの出力に応じてモンゴメリ演算を行なう。判定部96のjに対するカウンタを1カウントダウンさせ、j=0となるまでこの手順を繰り返す。
【0078】
4.j=0となったら、判定部96は出力部97に対しイネーブル信号を出し、出力部97はj=0の時のyi+1をラッチする。出力部97はラッチしたyi+1をべき乗余剰演算結果として出力し、同時にyi+1をモンゴメリ演算器95の次の入力としてメモリ98で保持する。判定部96のiに対するカウンタを1カウントアップさせ、i=sとなるまで手順3.、手順4.を繰り返す。
【0079】
5.終了。
べき乗余剰演算装置90からの出力は、論理演算装置91に入力される。論理演算装置91では、入力されたy1 ,y2 ,…のそれぞれ下位log2n(但し、nはNの2進表示による桁数)ビットの範囲にある任意の(複数/単位)ビットから疑似乱数を生成し、出力する。
【0080】
論理演算装置91は、入力されたy1 ,y2 ,…のそれぞれ下位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]を以下に示す。
このアルゴリズムを実行することによりえられる系列yi (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)で生成される系列xi (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で剰余をとった値である(式(28)参照)。
【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)」の演算をおこない、その結果をyi+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では、入力バッファ84から、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=2t (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は判定部86に入力される。判定部86では、eを[ek ek−1 …e2 e1 ]のkビットに分解する。更に判定部86が備えるi及びjに対する2つのカウンタに対してi=0,j=kと設定する。入力バッファ84に入力されたR,Nはモンゴメリ演算器85に設定され、モンゴメリ演算の初期値y0 ,y1 =Rはメモリ88に保持される。
【0102】
2.i=0,j=kに対し、判定回路はej =1及びj>1を判定し、判定結果に応じてメモリ88に対するアドレス信号を出力する。メモリ88はyi とyi+1 を保持するが、yi+1 はモンゴメリ演算器85の出力結果により随時更新される。メモリ88は判定部86からのアドレス信号に応じてモンゴメリ演算器85の出力yi+1 を記憶し、判定部86からのアドレス信号に応じて読み出しモンゴメリ演算器85へyi+1 あるいはyi を出力する。モンゴメリ演算器85はメモリ88からの出力に応じてモンゴメリ演算を行なう。判定部86のjに対するカウンタを1カウンタダウンさせ、j=0となるまでこの手順を繰り返す。
【0103】
3.j=0となったら判定部86は出力部87に対し、イネーブル信号を出し、出力部87はj=0の時のyi+1をラッチする。出力部87はラッチしたyi+1をべき乗剰余演算結果として出力し、同時にyi+1 をモンゴメリ演算器85の次の入力としてメモリ88で保持する。判定部86のiに対するカウンタを1カウントアップさせ、i=sとなるまで手順2.と手順3.を繰り返す。
【0104】
4.終了。
上記入力バッファ84としてはy0 (=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 ,…のそれぞれ下位log2n(但し、nはNの2進表示による桁数)ビットの範囲にある任意の(複数/単位)ビットから疑似乱数を生成し、出力する。
【0107】
論理演算装置81は、入力されたy1 ,y2 ,…のそれぞれ下位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、判定部76、乗算剰余演算器75、メモリ78、出力部77からなる。
【0115】
次に、べき乗剰余演算装置70の動作の手順を述べる。
1.入力バッファ74には、x0 ,e,N,sが入力される。入力バッファ74に入力されたe,sは判定部76に入力される。判定部76ではeを[ek ek−1 …e2 e1 ]のkビットに分解する。更に判定部76が備えるi及びjに対する2つのカウンタに対してi=0,j=kと設定する。入力バッファ74に入力されたR,Nは乗算剰余演算器75に設定され、乗算剰余演算の初期値x0 ,x1 =1はメモリ78に保持される。
【0116】
2.i=0,j=kに対し、判定部76は、ej =1及びj>1を判定し、判定結果に応じてメモリ78に対するアドレス信号を出力する。メモリ78はxi とxi+1を保持するが、xi+1は乗算剰余演算器75の出力結果により随時更新される。メモリ78は判定部76からのアドレス信号に応じて乗算剰余演算の出力xi+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はラッチしたyi+1をべき乗剰余演算結果として出力し、同時にxi+1を乗算剰余演算器75の次の入力としてメモリ78で保持する。判定部76のiに対するカウンタを1カウントアップさせ、i=sとなるまで手順2.、手順3.を繰り返す。
【0118】
4.終了。
入力バッファ74としては、x0 ,e,N,sの各入力値をラッチし保持するレジスタ、判定部76としてはej =1及びj>1を判定する比較器とi及びjに対するカウンタとアドレス指定信号やイネーブル信号を出力する論理回路で構成できる。メモリ78は書き込み/読み出しがランダムに行なえるRAM、出力部77としては判定部76からのイネーブル信号に応じてxi+1 の出力値をラッチし保持するレジスタ等で容易に構成できる。
【0119】
前述のように、べき乗剰余演算は乗算剰余演算の繰り返しで実現できる。べき乗剰余演算装置70及び乗算剰余器での乗算剰余演算を、例えばハードウエアにより構成する場合には、文献 「並列処理によるRSA暗号装置の構成b法」(岩村,松本,今井;電子情報通信学会論文誌A,vol.J75−A,No.8,pp.1301−1311,1992)に示される公知の乗算剰余演算方法を用いることもできる。
【0120】
乗算剰余演算器72からの出力は、論理演算装置71に入力される。論理演算装置71では入力されたy1,y2 ,…のそれぞれ下位log2 n(但し、nはNの2進表示による桁数)ビットの範囲にある任意の(複数/単数)ビットから疑似乱数を生成し、出力する。
【0121】
論理演算装置71は、入力されたy1 ,y2 ,…のそれぞれ下位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(41)と、予め作られた通信文mi(42)をビット毎に排他的論理和「mi(+)ki」を排他的論理和器43で計算し、その結果の暗号文ciを受信器46に送信する。
【0130】
3.通信の受信者Bは、送信元Aと共有している秘密の鍵KABの全て又は一部を受信器Bの乱数生成器47の初期値として乱数生成器47に設定し、乱数系列ki を生成させる。
【0131】
4.受信器Bでは、生成した乱数系列kiと受信した暗号文ciをビット毎に排他的論理和「ci(+)ki」をとり、その出力が通信文mi(48)として復元される。
【0132】
この手順に従えば、正規の受信者Bだけがその秘密の鍵KABを知っているので受け取った暗号文を本来の通信文に複合でき、それ以外の加入者(C〜N)はその暗号文をする際に用いられた秘密の鍵を知らないのでその内容を知ることができない。このことにより秘匿通信が実現される。
【0133】
また、図10のようにあらかじめ暗号鍵が配布されているのではなく、暗号通信を行うに先立って送・受信者間で暗号鍵を共有する必要がある携帯のネットワークにおいても、公知の鍵共有を行えば同じ手順で暗号通信を実現することができる。
【0134】
尚、第5の実施例に示した暗号通信ネットワークでは通信文の送信者と受信者の間で固有かつ秘密の鍵を共有しているので、暗号文を受け取り、意味をなす通信文に複号できるということは、通信文がその鍵のもう一人の所有者から送信されたということを受診者に保証している。そのため、第3の実施例に示した秘匿通信システムでは、通信の発信者及び着信者の認証も行うことができる。
【0135】
以上説明した様に、本実施例の方法とその装置で生成された疑似乱数を用いることで、高速に通信データの生成/再生を行う暗号通信ネットワークを実現できる。
【0136】
[第6の実施例]
第5の実施例のようにあらかじめ暗号鍵が配布されているのではなく、暗号通信を行うに先立って送・受信者間で暗号鍵を共有する必要がある形態のネットワークにおいて、盗聴の可能性のある通信路を介した場合でも安全に暗号鍵を共有できる方式としてDiffie−Hellmanの方式(W.Doffie and M.E.Hellman “ 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
Claims (5)
- 所定の整数Nと、前記Nと互いに素な整数Rとを用いて、漸化式Xi+1=R−1・Xi 2modN (i=0,1,2,…,s)をモンゴメリ法に基づいてXi+1=(Xi 2+(Xi 2・(−N− 1 modR) modR)・N)/Rによって計算するようにして、所定の初期値X 0 から当該漸化式により数列X1,X2,X3,…Xs+1を順次求める計算手段と、
前記漸化式X i+1 = R −1 ・X i 2 modNにより求められた数列の各Xiから所定のビット部分を抽出し、その抽出された抽出データを疑似乱数データとする抽出手段とを備えることを特徴とする疑似乱数生成装置。 - 前記Nは奇数であって、前記整数Rとして、tを整数とする2tを選択し、
前記計算手段は、前記モンゴメリ法に基づく演算における前記整数Rによる除算項を、その除算項の被除数をtビットシフトすることで計算することを特徴とする請求項1に記載の疑似乱数生成装置。 - 任意のυ,νに対して、υ・ν・R−1 modNをモンゴメリ法に基づいて(υ・ν+(υ・ν・(−N−1 modR) modR)・N)/Rによって演算する処理をMont(υ,ν)と表すとき、所定の整数Nと、前記Nと互いに素な整数Rとを用いて、漸化式Xi+1=R−( e −1)・Xi emod N (i=0,1,2,…,s)をモンゴメリ法に基づいてMont(Xi + 1,Xi)及びMont(Xi + 1,Xi + 1)を用いて計算するようにして、所定の初期値X 0 から当該漸化式により数列X1,X2,X3,…Xs+1を順次求める計算手段と、
前記漸化式X i+1 = R −( e −1) ・X i e mod Nにより求められた数列の各Xiから所定のビット部分を抽出し、その抽出された抽出データを疑似乱数データとする抽出手段と、
を備えることを特徴とする疑似乱数生成装置。 - 前記Nは奇数であって、前記整数Rとして、tを整数とする2tを選択し、
前記計算手段は、前記モンゴメリ法に基づく演算における前記整数Rによる除算項を、その除算項の被除数をtビットシフトすることで計算することを特徴とする請求項3に記載の疑似乱数生成装置。 - 請求項1または3に記載の疑似乱数生成装置と、
前記疑似乱数生成装置により生成された疑似乱数データを用いて通信データを暗号化して送信する送信手段と、
暗号化されたデータを受信して、当該暗号化されたデータを前記疑似乱数生成装置により生成された疑似乱数データを用いて復号する受信手段とを有することを特徴とする通信装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33124193A JP3591857B2 (ja) | 1993-12-27 | 1993-12-27 | 擬似乱数生成方法及び装置、通信方法及び装置 |
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 |
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 |
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 |
US08/350,110 US5666419A (en) | 1993-11-30 | 1994-11-29 | Encryption device and communication apparatus using same |
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 JPH07193565A (ja) | 1995-07-28 |
JP3591857B2 true 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) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8155306B2 (en) * | 2004-12-09 | 2012-04-10 | Intel Corporation | Method and apparatus for increasing the speed of cryptographic processing |
US8971530B2 (en) * | 2009-06-24 | 2015-03-03 | Intel Corporation | Cryptographic key generation using a stored input value and a stored count value |
JP5875719B1 (ja) * | 2015-01-29 | 2016-03-02 | 日本電信電話株式会社 | 乱数生成装置、乱数生成方法、およびプログラム |
JP7067338B2 (ja) | 2018-07-25 | 2022-05-16 | 富士通株式会社 | 通信装置、光伝送装置、光伝送方法、および通信システム |
-
1993
- 1993-12-27 JP JP33124193A patent/JP3591857B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07193565A (ja) | 1995-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0656709B1 (en) | Encryption device and apparatus for encryption/decryption based on the Montgomery method using efficient modular multiplication | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
WO1993006672A1 (en) | Method and apparatus for public key exchange in a cryptographic system | |
EP1708081B1 (en) | Method and device for calculating a Montgomery conversion parameter | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
US7050579B1 (en) | Cryptographic methods and apparatus using word-wise montgomery multiplication | |
KR100508092B1 (ko) | 저전력 모듈로 곱셈을 수행하는 연산장치 | |
US7319750B1 (en) | Digital circuit apparatus and method for accelerating preliminary operations for cryptographic processing | |
Nawaz et al. | The WG stream cipher | |
JP3591857B2 (ja) | 擬似乱数生成方法及び装置、通信方法及び装置 | |
JP2007187908A (ja) | サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法 | |
JPH11212456A (ja) | モンゴメリ法による乗算剰余計算装置 | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
KR20010067016A (ko) | 알에스에이 공개키 암호 고속화 장치 및 방법 | |
US6687728B2 (en) | Method and apparatus for arithmetic operation and recording medium of method of operation | |
JP3615405B2 (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
KR20100062565A (ko) | 모듈러스의 음의 역원을 구하는 방법 | |
JP4502817B2 (ja) | 楕円曲線スカラー倍計算方法および装置 | |
Tynymbayev et al. | Development of Modular Reduction Based on the Divider by Blocking Negative Remainders for Critical Cryptographic Applications | |
US7403965B2 (en) | Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication | |
JP4019762B2 (ja) | 逆元演算装置、逆元演算方法、rsa鍵対生成装置、rsa鍵対生成方法 | |
KR19990064878A (ko) | 고속의 모듈라 멱승 연산기 | |
KR100406138B1 (ko) | 엔티알유 암/복호화 장치 | |
Cheddour et al. | Scientific African | |
Ghadi | Improving the Robustness of RSA Encryption Through Input-Based Key Generation. |
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 |