JP3999554B2 - 乗算剰余演算方法及び演算装置 - Google Patents

乗算剰余演算方法及び演算装置 Download PDF

Info

Publication number
JP3999554B2
JP3999554B2 JP2002117364A JP2002117364A JP3999554B2 JP 3999554 B2 JP3999554 B2 JP 3999554B2 JP 2002117364 A JP2002117364 A JP 2002117364A JP 2002117364 A JP2002117364 A JP 2002117364A JP 3999554 B2 JP3999554 B2 JP 3999554B2
Authority
JP
Japan
Prior art keywords
mod
memory
solution
multiplication
stored
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
Application number
JP2002117364A
Other languages
English (en)
Other versions
JP2003316262A (ja
Inventor
博 山崎
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2002117364A priority Critical patent/JP3999554B2/ja
Priority to US10/282,107 priority patent/US7206799B2/en
Publication of JP2003316262A publication Critical patent/JP2003316262A/ja
Application granted granted Critical
Publication of JP3999554B2 publication Critical patent/JP3999554B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/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
    • G06F7/729Methods 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 using representation by a residue number system
    • 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
    • G06F7/727Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は,情報通信ネットワーク,交通,金融,医療,流通等の分野において使用される情報の暗号化技術及び復号化技術に関し,特に情報の暗号化及び復号化を実現するための乗算剰余演算方法及び演算装置に関する。
【0002】
【従来の技術】
情報通信技術の発展に伴い,情報ネットワーク上のセキュリティーの確保(データの盗用や破壊の防止等)が重要視されるようになった。そのため情報の暗号化技術及び復号化技術が,情報通信分野のみならず,交通,金融,医療,流通等の身近な分野でも使用されつつある。従って,この種の暗号化技術及び復号化技術では,高度なセキュリティーを高速に処理することが要求される。
【0003】
暗号化及び復号化技術においては,「非対象暗号アルゴリズム」が質的に優れている。非対象暗号アルゴリズムとは,暗号化鍵と復号化鍵とが異なり,そのいずれか一方から他方が容易に計算できない暗号アルゴリズムをいう。
【0004】
この非対象暗号アルゴリズムの代表的なものに,乗算剰余演算を用いるタイプのRSA暗号(3人の開発者の頭文字から命名される),エルガマル暗号,ラビン暗号,ウイリアムス暗号等がある。そして,暗号アルゴリズムを応用した「ディジタル署名」のシステムがあり,現在その標準化の動きがある。その対象となっている代表的なものは,RSA署名法,エルガマル署名法,シュノア署名法,DSA(Digital Signature Algorithm)署名法等である。これらは全て長いビット長の乗算剰余演算を使用するタイプのものである。従って,これらディジタル署名のシステムを実現するためには,長いビット長の乗算剰余演算を短時間で終了することのできる演算方法及び演算装置の開発が必要不可欠である。
【0005】
上記のRSA暗号,エルガマル暗号,ラビン暗号,ウイリアムス暗号等は,式”A×BmodN”の乗算剰余演算の形式を基本として使用する。この式は,A×BをNで割ったときの余りを求めることを意味する。暗号化(復号化)においては,Aは暗号化(復号化)の対象となる「平文」であり,B及びNは暗号化(復号化)のための「鍵(キー)」である。
【0006】
この乗算剰余演算を用いて情報の暗号化及び復号化を実行するとき,A,B,Nのビット長を長くすることで各鍵の解読を困難にすることができる。一方,A,B,Nのビット長を長くすると,乗算剰余演算に長時間を要することになる。そこで,A,B,Nのビット長が長い乗算剰余演算をいかに高速に処理するかが重要な問題である。
【0007】
モンゴメリ(Montgomery)は,乗算と簡単なビット列処理とを行うことによって剰余演算(mod算)の解を得る仕組みを提案している。そして従来の乗算剰余演算では,例えば,特開平11−212456号公報,特開2000−132376号公報,特開2001−51832号公報などに示されるように,このモンゴメリ手法を利用している。
【0008】
モンゴメリ手法による乗算剰余演算のアルゴリズムは,剰余の法N(N>1)と,剰余の法Nと互いに素であり,かつNよりも大きい基数Rとを用いる。そして被剰余数Xから,X×R’modNの演算が基数Rによる除算のみで行えることを利用している。
【0009】
ここで,N,N’,R,R’及びXは整数であり,被剰余数Xは,0≦X<R×Nである。また,R’は剰余の法N下での基数Rの逆数(インバース値)であり,R×R’−N×N’=1(0≦R’<N,0≦N’<R)の関係が満たされる。
【0010】
この基数Rに2のべき乗数を用いると,基数Rによる除算を2進法演算処理におけるシフト操作に置き換えることができる。このためX→X×R’modNの演算は,電子演算装置による高速処理が可能になる。
【0011】
まず,M,R,Nとの間の関係で,
Figure 0003999554
となる。
【0012】
そして,上記の結果より,
Figure 0003999554
となる。この式により,X+M・NをRで割ったときの余りは「0」,即ち,X+M・Nは,Rで割り切れることが証明される。
【0013】
そして,X→X×R’modNのアルゴリズム;Y=REDC(X)は,次のように実現される。
【0014】
アルゴリズム;Y=REDC(X)
M=(XmodR)×N’modR
Y=(X+M・N)/R
if Y≧N then Y=Y−N
Y<N then return Y
【0015】
上記1回のREDC演算では,剰余XmodNではなく,X×R’modNが求まる。剰余XmodNを求めるには,次のように,REDC(X)と,予め求めておいたRmodNとの積で,再びREDC演算を行う。
【0016】
Figure 0003999554
【0017】
このようにして,剰余XmodNを求めることができる。ここで,乗算剰余演算”A×BmodN”に,モンゴメリアルゴリズムを展開する。通常形式の乗算剰余演算f(x)では,
f(x)=A×BmodN
であるが,モンゴメリ手法の剰余演算f’(x)では,
f’(x)=A×B×R’modN
とする。
【0018】
そして,まず「プリ演算」として,N’,RmodN,そしてRmodNを算出する。ここでRは,法Nより少しだけ大きい2の階乗であり,R’はmodN算のもとでのRのインバース値(即ち,R×R’modN=1)である。また,N’はモンゴメリ手法の下でのNのインバース値(即ち,R×R’−N×N’=1)であり,0<N’<R である。
【0019】
次に,算出されたRmodNをBとして,
A×B×R’modN
を算出し,これをAとする。そして更に,
A×B×R’modN
を算出し,これをAとする。以上の手順により,A×BmodNが得られる。
【0020】
このようにモンゴメリ手法によるアルゴリズムでは,Nによる除算を用いることなく乗算剰余演算が実行できる。
【0021】
【発明が解決しようとする課題】
しかし,従来のモンゴメリ手法によるアルゴリズムには,以下の問題点があった。
【0022】
即ち,上述のようにN値からN’,RmodN,そしてRmodNを算出する「プリ演算」が必要であるため乗加算演算の回数が多く,従って演算時間がかかる。例えば,従来のモンゴメリ手法においてハードウェア資源に乗加算器を使用した場合に必要な演算回数は,以下のようになる。
【0023】
N値を2進法で考えた場合に1の立っている数をm個とする。「N’」の算出には,m回の乗加算が必要である。また,「RmodN」の算出には,「R−N」の1回の減算が必要である。また,「RmodN」の算出には,30回程度の乗加算が必要である。更に,「A×B×R’modN」の算出には,3回の乗加算が必要である。
【0024】
以上より,N値がnビット長で,すべてのビットに1が立っているとする(m=n)と,従来のモンゴメリ手法を用いて必要となる総演算回数は,乗加算が(n+33)回,減算が1回である。
【0025】
また,従来のモンゴメリ手法によるアルゴリズムでは,N値は「奇数」であること,指定されたビット長の最上位ビットが1であること,の2つの入力値制限がある。
【0026】
更に,ハードウェアとして使用する乗加算器の演算可能な最大ビット数を超えた乗算剰余演算は不可能である。
【0027】
そこで本発明は,(1)乗加算演算回数を減らして演算時間を高速化できること,(2)入力値に制限がないこと,更には,(3)ハードウェアとして使用する乗加算器の演算可能な最大ビット長を超える剰余演算が可能であること,を実現した,モンゴメリ手法によらない新規な乗算剰余演算方法及び演算装置を提供することを目的とする。
【0028】
【課題を解決するための手段】
本発明における乗算剰余演算は,次の2つの公式を応用する。
1)(X+X)modN=((XmodN)+(XmodN))modN
2)XmodN=a((X/a)mod(N/a))
【0029】
まず,N=2−M,X=α×2+βとすると,上記1)の公式から,次式
XmodN=(α×M+β)modN
が導かれる。なぜならば,
Figure 0003999554
となるからである。
【0030】
この式の右辺のα×M+βを繰り返し演算すると,ビット幅が収束していく。この性質を利用すると,以下に示す本発明の”A×BmodN”の乗算剰余演算方法が構成される。
【0031】
即ち,上記目的を達成するための本発明の”A×BmodN”の解を求める乗算剰余演算方法は,
Nの1の立っている最大ビット番号をnとし,2n+1modNを求め,その解をbとする第1ステップと,
A×Bを求め,その解をXとする第2ステップと,
XmodNを,
(X/2n+1×b+Xmod2n+1)modN
に変換する第3ステップと,
(X/2n+1×b+Xmod2n+1)modNを,
(Xn/2n+1×b+Xnmod2n+1)modN
に変換し,Xnのビット長がn+1になるまで,
Xn/2n+1×b+Xnmod2n+1
の演算を繰り返す第4ステップと,
Xn−Nを求め,”A×BmodN”の解とする第5ステップと,
を含むことを特徴とする。
【0032】
このような構成により,(1)乗加算演算回数を減らして演算時間を高速化でき,(2)入力値の制限をなくすことができ,更に,(3)ハードウェアとして使用する乗加算器の演算可能な最大ビット長を超える剰余演算ができる。
【0033】
また,上記目的を達成するための本発明の他の”A×BmodN”の解を求める乗算剰余演算方法は,
Nの1の立っている最大ビット番号をnとし,2n+1modNを求め,その解をbとする第1ステップと,
A×Bを求め,その解をXとする第2ステップと,
n+mmodNを,
(2n+m/2n+1×b+2n+mmod2n+1)modN
に変換し,その解をbmとする第3ステップと,
XmodNを,
(Xn/2n+m×bm+Xnmod2n+m)modN
に変換し,Xnのビット長がn+mになるまで,
Xn/2n+m×bm+Xnmod2n+m
の演算を繰り返し,その解をX’とする第4ステップと,
X’modNを,
(X’n/2n+1×b+X’nmod2n+1)modN
に変換し,X’nのビット長がn+1になるまで,
X’n/2n+1×b+X’nmod2n+1
の演算を繰り返す第5ステップと,
X’n−Nを求め,”A×BmodN”の解とする第6ステップと,を含むことを特徴とする。
【0034】
このような構成により,(1)乗加算演算回数を減らして演算時間を高速化でき,(2)入力値の制限をなくすことができる。
【0035】
また,上記目的を達成するための本発明の他の”A×BmodN”の解を求める乗算剰余演算方法は,
Nの1が立っている最大ビット番号をsとし,2s+1modNを求め,その解をbとする第1ステップと,
A×Bを求め,その解をXとする第2ステップと,
Xのビット長をn(n>s)とし,Xを,
×2 n−s +X (n−s<s)
に変換し,これを基にXmodNを,
(X×2n−s+X)modN
に変換し,更に,
((X ×2 n−s modN)+(X modN))modN
に変換し,その解をX’とする第3ステップと,
’modNを,
(X’/2s+1×b+X’mod 2s+1)modN
に変換し,X’のビット長がs+1になるまで乗加算演算を繰り返し,その解をbHとする第4ステップと,
modNを減算で求め,その解をbLとする第5ステップと,
(bH+bL)modNを求め,”A×BmodN”の解とする第6ステップと,を含むことを特徴とする。
【0036】
このような構成により,(1)乗加算演算回数を減らして演算時間を高速化でき,(2)入力値の制限をなくすことができ,更に,(3)ハードウェアとして使用する乗加算器の演算可能な最大ビット長を超える剰余演算ができる。
【0037】
また,上記目的を達成するための本発明の「A×B+C」を演算する乗加算演算装置は,それぞれ所定のビット毎にブロック化されてA値,B値,及び,C値データを格納するAmメモリ,Bmメモリ,Cm1メモリ,及び,Cm2メモリの4つのメモリと,これら4つのメモリよりそれぞれデータを受けるArレジスタ,Brレジスタ,及び,Crレジスタの3つのレジスタと,これら3つのレジスタのデータによってAr×Br+Crを演算する乗加算器と,この乗加算器の演算結果の上位ビットを格納するHrレジスタと,下位ビットを格納するLrレジスタと,Cm1メモリとCm2メモリの前後に配置され,Cm1メモリまたはCm2メモリへのデータの入出力を制御する2つのセレクタとで構成され,Lrレジスタの内容は,Cm2メモリまたはCm1メモリ,及び,Amメモリに格納され,Hrレジスタの内容は,Cm1メモリまたはCm2メモリに格納され,Cm1メモリとCm2メモリとは,演算の度に交互に使用されることを特徴とする。
【0038】
【発明の実施の形態】
以下に,本発明のいくつかの実施の形態を,図面を用いて説明する。
【0039】
(第1の実施形態)
第1の実施形態では,以下の手順で”A×BmodN”の解を求める。まず,Nの1の立っている最大ビット番号をnとする。そして,2n+1modNを求め,その解をbとする(第1ステップ)。
【0040】
次に,A×Bを求め,その解をXとする(第2ステップ)。
【0041】
次に,XmodNを,
(X/2n+1×b+Xmod2n+1)modN
に変換する(第3ステップ)。
【0042】
次に,(X/2n+1×b+Xmod2n+1)modNを,
(Xn/2n+1×b+Xnmod2n+1)modN
に変換し,Xnのビット長がn+1になるまで,
Xn/2n+1×b+Xnmod2n+1
の演算を繰り返す(第4ステップ)。
【0043】
最後に,Xn−Nを求め,これを”A×BmodN”の解とする(第5ステップ)。
【0044】
このようにして,(1)乗加算演算回数を減らして演算時間を高速化でき,(2)入力値の制限をなくすことができる。なお,第1の実施形態では,(3)ハードウェアとして使用する乗加算器の演算可能な最大ビット長を超える剰余演算も可能である。
【0045】
図1は,第1の実施形態の手順を実行するための乗加算演算装置の構成図の一例である。この乗加算演算装置は,Amメモリ1,Bmメモリ2,Cm1メモリ3,Cm2メモリ4の,各32×nビットの4つのメモリと,Arレジスタ5,Brレジスタ6,Crレジスタ7の,各32ビットの3つのレジスタと,32ビットの乗加算器12と,乗加算器12の演算結果を格納するHrレジスタ8,Lrレジスタ9の各32ビットの2つのレジスタと,2つのセレクタ10,11とで構成される。
【0046】
この乗加算演算装置は,A×B+Cを演算する場合,次のように動作する。まず,A値がAmメモリ1,B値がBmメモリ2,C値がCm1メモリ3に格納される。各メモリのデータは32ビット毎にブロック化されており,これを次のように表す。
【0047】
Amメモリ
={Am(n),Am(n−1),・・・,Am(2),Am(1)}
Bmメモリ
={Bm(n),Bm(n−1),・・・,Bm(2),Bm(1)}
Cm1メモリ
={Cm1(n),Cm1(n−1),・・・,Cm1(2),Cm1(1)}
【0048】
次に,Amメモリ1からAm(1)のデータがArレジスタ5へ転送される。同様にして,Bmメモリ2,Cm1メモリ3からそれぞれBrレジスタ6,Crレジスタ7へ,それぞれBm(1),Cm(1)のデータが転送される。
【0049】
次に,「Ar×Br+Cr」の32ビットの乗加算演算が乗加算器12で行われる。その演算結果の下位データはLrレジスタ9へ,上位データはHrレジスタ8へ格納される。さらに,Lrレジスタ9の内容は,Cm2メモリ4に格納され,Hrレジスタ8の内容は,Cm1メモリ3のCm1(1)に上書きされる。
【0050】
次に,Ar,Br,Crレジスタを利用して,順次,
Am(1)×Bm(2)+Cm1(2),
・・・,
Am(1)×Bm(n−1)+Cm1(n−1),
Am(1)×Bm(n)+Cm1(n)
が演算され,Hrレジスタ8の内容が,その都度Cm1メモリ3に上書きされる。
【0051】
次に,Am(2)×Bm(1)+Cm1(1)が演算される。その結果のLrレジスタ9の内容が,Cm2メモリ4のCm2(2)に格納される。そして順次,
Am(2)×Bm(2)+Cm1(2),
・・・,
Am(2)×Bm(n−1)+Cm1(n−1),
Am(2)×Bm(n)+Cm1(n)
が演算され,Hrレジスタ8の内容が,その都度Cm1メモリ3に上書きされる。
【0052】
最後に,Am(n)×Bm(1)+Cm1(1)が演算される。その結果のLrレジスタ9の内容が,Cm2メモリ4のCm2(n)に格納される。そして順次,
Am(n)×Bm(2)+Cm1(2),
・・・,
Am(n)×Bm(n−1)+Cm1(n−1),
Am(n)×Bm(n)+Cm1(n)
が演算され,Hrレジスタ8の内容は,その都度Amメモリ1に格納される。従って,最終解の下位データはCm2メモリ4に,上位データはAmメモリ1に格納される。
【0053】
そして次の演算は,Amメモリ1×Bmメモリ2+Cm2メモリ4で行われる。次の演算では,最終解の下位データはCm2メモリ4に,上位データはAmメモリ1に格納される。Cm1メモリ3とCm2メモリ4とは,演算の度に交互に使用される。
【0054】
第1の実施形態において,図1の乗加算演算装置を用いると,第2ステップのA×Bの演算は,A値をAmメモリ1,B値をBmメモリ2に格納し,Cm1メモリ3をクリアして演算することで実行できる。また,第3ステップの
X/2n+1×b+Xmod2n+1
の演算は,X値の上位データをAmメモリ1に,bをBmメモリ2に,X値の下位データをCm1メモリ3に格納して演算することで実行できる。
【0055】
また,第4ステップの
Xn/2n+1×b+Xnmod2n+1
の演算は,Xnの上位データをAmメモリ1に,Xnの下位データをCm1メモリ3及びCm2メモリ4に交互に格納して演算することで実行できる。そして,Xnのビット長がn+1になるまで
Xn/2n+1×b+Xnmod2n+1
の演算を繰り返す。
【0056】
第1の実施形態によれば,”A×BmodN”のA,B,Nのビット長をnビットとすると,演算回数は次のようになる。第2ステップで乗加算が1回,第4ステップでは1回の演算でXnのビット長が1ずつ減っていくので,2n−n=nより乗加算がn回,第1,第5ステップで減算が各1回である。従って,”A×BmodN”のビット長がnビットのとき,第1の実施形態では乗加算がn+1回,減算が2回である。このように,従来のモンゴメリ手法による乗加算演算に比較して,演算回数が大きく低減されている。また,第1の実施形態では,N値に制限がない。
【0057】
(第2の実施形態)
第2の実施形態では,以下の手順で”A×BmodN”の解を求める。まず,Nの1の立っている最大ビット番号をnとする。そして,2n+1modNを求め,その解をbとする(第1ステップ)。
【0058】
次に,A×Bを求め,その解をXとする(第2ステップ)。
【0059】
次に,2n+mmodNを,
(2n+m/2n+1×b+2n+mmod2n+1)modN
に変換し,その解をbmとする(第3ステップ)。
【0060】
次に,XmodNを,
(Xn/2n+m×bm+Xnmod2n+m)modN
に変換し,Xnのビット長がn+mになるまで,
Xn/2n+m×bm+Xnmod2n+m
の演算を繰り返し,その解をX’とする(第4ステップ)。
【0061】
次に,X’modNを,
(X’n/2n+1×b+X’nmod2n+1)modN
に変換し,X’nのビット長がn+1になるまで,
X’n/2n+1×b+X’nmod2n+1
の演算を繰り返す(第5ステップ)。
【0062】
最後に,X’n−Nを求め,これを”A×BmodN”の解とする(第6ステップ)。
【0063】
第2の実施形態でも第1の実施形態と同様にして,図1の乗加算演算装置を用いて実行することができる。そして,第2の実施形態によれば,”A×BmodN”のA,B,Nのビット長をnビットとすると,演算回数は次のようになる。
【0064】
第2ステップで乗加算が1回,第3ステップで乗加算がm回,第4ステップで乗加算がn/m回,第5ステップで乗加算がm回である。また,第1ステップ,第3ステップ,第6ステップで減算が各1回,計3回である。従って,"A×BmodN"のビット長がnビットのとき,第2の実施形態では乗加算がn/m+2m+1回,減算が3回である。
【0065】
n+1>n/m+2m+1とすると,n>1,m>1であるので,n>2m/(m−1)を満たすnであれば,第2の実施形態の演算回数は,第1の実施形態より更に少なくなる。例えば,n=1024,m=32とすると,第1の実施形態では1025回の乗加算演算が必要であるが,第2の実施形態では96回の乗加算演算で実行できる。また,第2の実施形態でもN値に制限がない。
【0066】
(第3の実施形態)
第2の実施形態では,以下の手順で”A×BmodN”の解を求める。まず,Nの1が立っている最大ビット番号をsとし,2s+1modNを求め,その解をbとする(第1ステップ)。
【0067】
次に,A×Bを求め,その解をXとする(第2ステップ)。
【0068】
次に,Xのビット長をn(n>s)とする。Xはこのままでは乗加算演算ができないので,Xを,
×2 n−s +X (n−s<s)
に変換し,これを基にXmodNを,
(X×2n−s+X)modN
に変換し,更に,
((X ×2 n−s modN)+(X modN))modN
に変換する。X×2n−sは,ビット長がX,2n−sのいずれもsビット以下なので,乗加算器で演算可能である。その解をX’とする(第3ステップ)。
【0069】
次に,X’modNを,
(X’/2s+1×b+X’mod 2s+1)modN
に変換し,X’のビット長がs+1になるまで乗加算演算を繰り返し,その解をbHとする(第4ステップ)。
【0070】
次に,XmodNを減算で求める。Xのビット長はs以下なので,減算で解が求まる。その解をbLとする(第5ステップ)。
【0071】
最後に,(bH+bL)modNを求め,これを”A×BmodN”の解とする(第6ステップ)。
【0072】
このように,第3の実施形態によれば,剰余演算”XmodN”のXのビット長が,使用するハードウェア資源の乗加算演算装置が演算可能な最大ビット長を超える場合にも対応できる。
【0073】
また,第3の実施形態でも第1の実施形態と同様にして,図1の乗加算演算装置を用いて実行することができる。そして,第3の実施形態によれば,図1の乗加算演算装置の演算可能な最大ビット長をsビットとし,”A×BmodN”のA,B,Nのビット長をnビットとすると,演算回数は次のようになる。
【0074】
第4ステップで乗加算がn−s回,第6ステップで乗加算が1回である。また,第1ステップ,第4ステップ,第5ステップ,第6ステップで減算が各1回,計4回である。従って,図1の乗加算演算装置の演算可能な最大ビット長がsビットで,"A×BmodN"のビット長がnビットのとき,第3の実施形態では乗加算がn−s+1回,減算が4回である。また,第3の実施形態でもN値に制限がない。
【0075】
以上,添付図面を参照しながら本発明の乗算剰余演算方法及び演算装置の好適な実施形態について説明したが,本発明はこれらの例に限定されない。いわゆる当業者であれば,特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり,それらについても当然に本発明の技術的範囲に属するものと了解される。
【0076】
【発明の効果】
本発明により,(1)乗加算演算回数を減らして演算時間を高速化でき,(2)入力値に制限をなくし,更に,(3)ハードウェアとして使用する乗加算器の演算可能な最大ビット長を超える剰余演算を可能にした,モンゴメリ手法によらない新規な乗算剰余演算方法及び演算装置が提供された。
【図面の簡単な説明】
【図1】図1は,本発明の第1〜第3の実施形態の乗算剰余演算を実行するための乗加算演算装置の構成図の一例である。
【符号の説明】
1 Amメモリ
2 Bmメモリ
3 Cm1メモリ
4 Cm2メモリ
5 Arレジスタ
6 Brレジスタ
7 Crレジスタ
8 Hrレジスタ
9 Lrレジスタ
10,11 セレクタ
12 乗加算器

Claims (3)

  1. メモリと乗加算器とを有する乗加算演算装置を利用して、”A×B mod N”の解を求める乗算剰余演算方法であって,
    前記乗加算器により、Nの1の立っている最大ビット番号とされて,2n+1 mod Nが求められ,その解として前記メモリに格納される第1ステップと,
    前記乗加算器により、A×Bが求められ,その解として前記メモリに格納される第2ステップと,
    前記乗加算器により、X mod N
    (X/2n+1×b+X mod 2n+1) mod N
    に変換される第3ステップと,
    前記乗加算器により、(X/2n+1×b+X mod 2n+1) mod N
    X・n/2n+1×b+X・n mod 2n+1) mod N
    に変換され前記メモリに格納された解を用いて、X・nのビット長がn+1になるまで,
    X・n/2n+1×b+X・n mod 2n+1
    の演算が繰り返される第4ステップと,
    前記乗加算器により、X・n−Nが求められて,”A×B mod N”の解とされる第5ステップと,
    を含むことを特徴とする、”A×B mod N”の解を求める乗算剰余演算方法。
  2. メモリと乗加算器とを有する乗加算演算装置を利用して、”A×B mod N”の解を求める乗算剰余演算方法であって,
    前記乗加算器により、Nの1の立っている最大ビット番号とされて,2n+1 mod Nが求められ,その解として前記メモリに格納される第1ステップと,
    前記乗加算器により、A×Bが求められ,その解として前記メモリに格納される第2ステップと,
    所定数mについて、前記乗加算器により、n+m mod N
    (2n+m/2n+1×b+2n+m mod 2n+1) mod N
    に変換され,その解がb として前記メモリに格納される第3ステップと,
    前記乗加算器により、X mod N
    X・n/2n+m× X・n mod 2n+m) mod N
    に変換され前記メモリに格納された解を用いて、X・nのビット長がn+mになるまで,
    X・n/2n+m× X・n mod 2n+m
    の演算が繰り返され,その解X’として前記メモリに格納される第4ステップと,
    前記乗加算器により、X’ mod N
    X’・n/2n+1×b+X’・n mod 2n+1) mod N
    に変換され前記メモリに格納された解を用いて、X’・nのビット長がn+1になるまで,
    X’・n/2n+1×b+X’・n mod 2n+1
    の演算が繰り返される第5ステップと,
    前記乗加算器により、X’・n−Nが求められて,”A×B mod N”の解とされる第6ステップと,
    を含むことを特徴とする、”A×B mod N”の解を求める乗算剰余演算方法。
  3. メモリと乗加算器とを有する乗加算演算装置を利用して、”A×B mod N”の解を求める乗算剰余演算方法であって,
    前記乗加算器により、Nの1が立っている最大ビット番号とされ,2s+1 mod Nが求められ,その解として前記メモリに格納される第1ステップと,
    前記乗加算器により、A×Bが求められ,その解として前記メモリに格納される第2ステップと,
    前記乗加算器により、Xのビット長n(n>s)とされ,X
    × n−s +X(n−s<s)
    に変換されこれに基づいてX mod N
    (X×2n−s+X) mod N
    に変換され,更に,
    (X ×2 n−s mod N)+(X mod N)) mod N
    に変換され ×2 n−s として前記メモリに格納される第3ステップと,
    前記乗加算器により、’ mod N
    (X’/2s+1×b+X’ mod 2s+1) mod N
    に変換され前記メモリに格納された解を用いて、’のビット長がs+1になるまで乗加算演算が繰り返され,その解がb として前記メモリに格納される第4ステップと,
    前記乗加算器により、 mod Nが減算で求められ,その解がb として前記メモリに格納される第5ステップと,
    前記乗加算器により、前記メモリに格納された解を用いて、(b+b) mod Nが求められて,”A×B mod N”の解とされる第6ステップと,
    を含むことを特徴とする、”A×B mod N”の解を求める乗算剰余演算方法。
JP2002117364A 2002-04-19 2002-04-19 乗算剰余演算方法及び演算装置 Expired - Fee Related JP3999554B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002117364A JP3999554B2 (ja) 2002-04-19 2002-04-19 乗算剰余演算方法及び演算装置
US10/282,107 US7206799B2 (en) 2002-04-19 2002-10-29 Modular multiplication method and calculating device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002117364A JP3999554B2 (ja) 2002-04-19 2002-04-19 乗算剰余演算方法及び演算装置

Publications (2)

Publication Number Publication Date
JP2003316262A JP2003316262A (ja) 2003-11-07
JP3999554B2 true JP3999554B2 (ja) 2007-10-31

Family

ID=29207826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002117364A Expired - Fee Related JP3999554B2 (ja) 2002-04-19 2002-04-19 乗算剰余演算方法及び演算装置

Country Status (2)

Country Link
US (1) US7206799B2 (ja)
JP (1) JP3999554B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
JP3616897B2 (ja) 1998-01-27 2005-02-02 富士通株式会社 モンゴメリ法による乗算剰余計算装置
JP2000132376A (ja) 1998-10-27 2000-05-12 Fujitsu Ltd 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
JP4177526B2 (ja) 1999-08-05 2008-11-05 富士通株式会社 乗算剰余演算方法および乗算剰余回路
US6697831B2 (en) * 2002-02-28 2004-02-24 Ess Technology, Inc. Device and method for performing multiple modulus conversion using inverse modulus multiplication

Also Published As

Publication number Publication date
JP2003316262A (ja) 2003-11-07
US7206799B2 (en) 2007-04-17
US20030200246A1 (en) 2003-10-23

Similar Documents

Publication Publication Date Title
US7320015B2 (en) Circuit and method for performing multiple modulo mathematic operations
CN101194457B (zh) 随机模数化多项式约简方法及其硬件
JP3784156B2 (ja) モジュラ掛け算方法
US8504602B2 (en) Modular multiplication processing apparatus
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
JP4783382B2 (ja) モンゴメリ法用乗算剰余計算装置
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
US7050579B1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
US20040174995A1 (en) Cryptosystems
JP4616169B2 (ja) モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
JPH11212456A (ja) モンゴメリ法による乗算剰余計算装置
JP3999554B2 (ja) 乗算剰余演算方法及び演算装置
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
Arazi et al. On calculating multiplicative inverses modulo $2^{m} $
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
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
JP3626315B2 (ja) 剰余算装置、情報処理装置及び剰余算方法
JP3435473B2 (ja) 暗号化・復号化方法及び装置
JP3137599B2 (ja) BのC乗のnを法とした剰余を計算する回路
JP2005221830A (ja) 逆元演算装置、演算処理装置および演算処理方法
JP2006091086A (ja) モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070809

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100817

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20100817

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees