JP4616169B2 - モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム - Google Patents

モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム Download PDF

Info

Publication number
JP4616169B2
JP4616169B2 JP2005507387A JP2005507387A JP4616169B2 JP 4616169 B2 JP4616169 B2 JP 4616169B2 JP 2005507387 A JP2005507387 A JP 2005507387A JP 2005507387 A JP2005507387 A JP 2005507387A JP 4616169 B2 JP4616169 B2 JP 4616169B2
Authority
JP
Japan
Prior art keywords
mod
reg2
redc
calculation
bit
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
JP2005507387A
Other languages
English (en)
Other versions
JPWO2005013243A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2005013243A1 publication Critical patent/JPWO2005013243A1/ja
Application granted granted Critical
Publication of JP4616169B2 publication Critical patent/JP4616169B2/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/728Methods 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 Montgomery reduction

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、情報セキュリティ分野に属するものであり、暗号処理を目的としたべき乗乗算剰余演算を高速に行うための計算技術に関する。
今後の情報化社会の発展に伴い、電子マネー、住民基本台帳ネットワークなどの情報ネットワークを利用したサービスが普及すると予想される。これらのサービスを安全に運用するためには、情報セキュリティ技術が必須であり、情報セキュリティの基盤技術として暗号技術が用いられる。暗号技術を用いることで、暗号、デジタル署名、認証などの機能を実現し、個人情報を第三者からの不正なアクセスから防ぐことができる。
暗号技術を実現するための暗号方式は現在まで様々な方式が知られており、これらは共通鍵暗号方式と公開鍵暗号方式の2種類に大別される。共通鍵暗号方式と呼ばれるものは、暗号化と復号化で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。公開鍵暗号方式とは、暗号化と復号化で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(個人鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。
秘密鍵暗号方式を用いる場合、前述の秘密鍵を送受信者以外の第三者にわからない安全な形で共有する必要がある。これに対し公開鍵暗号方式は、送受信者間で秘密情報を共有する必要がないというメリットを有するが、処理を行うための計算量が共通鍵暗号方式と比べて非常に大きいというデメリットを有する。よって、公開鍵暗号方式においては、計算処理の高速化が大きな課題となる。
公開鍵暗号方式は、RSA、楕円曲線暗号が代表的な方式として知られている。RSAにおいてはべき乗剰余演算を用いた処理が、楕円曲線暗号においては点のスカラー倍算と呼ばれる演算を用いた処理がそれぞれ行われる。これら2つの演算のいずれについても、整数a,b,nからy=a×b(mod n)(0≦a,b<n)を計算する乗算剰余演算が基本演算として用いられる。ただし、乗算剰余演算をそのままハードウェアもしくはソフトウェアにて実装した場合、処理時間が大きく処理効率が悪いため、乗算剰余処理の代わりにモンゴメリ乗算剰余と呼ばれる演算法を用いて計算するのが一般的である。
モンゴメリ乗算剰余とは、整数a,b,nからy=a×b×R−1(mod n)の形で示されるyを計算する演算法である。ただし、R=2m×kであり、kは1ワードあたりのビット長、mはnの有効ワード長を表す。モンゴメリ乗算剰余を用いることで、通常の乗算剰余処理より高速な処理を実現することができる。モンゴメリ乗算剰余のアルゴリズムを図1に示す。ただし、x=(xm−1,...,x,x)は、整数値xをm個のワード値x(i=m・1,...,1,0,0≦x<2を用いて表現する形式を表す。
前述したように、モンゴメリ乗算剰余で行う演算はa×b×R−1(mod n)であり、通常の乗算剰余演算a×b(mod n)とは異なる演算を行う。よって、べき乗剰余演算およびを正しく実行するためには、モンゴメリ乗算剰余に対して与える入力データをモンゴメリ系と呼ばれるデータに変換する必要がある。通常の乗算剰余演算に与える任意の入力データをx、xをモンゴメリ系に変換したデータをx’とし、xからx’への変換(モンゴメリ変換)をx’=Mont(x)、x’からxへの変換(モンゴメリ逆変換)をx=Mont−1(x’)と表した場合、これらは以下の式で与えられる。
モンゴメリ変換:x’=Mont(x)=x×R(mod n)
モンゴメリ逆変換:x=Mont−1(x’)=x’×R−1(mod n)
モンゴメリ乗算剰余をy=REDC(a,b)=a×b×R−1(mod n)と記したとき、前述のモンゴメリ変換およびモンゴメリ逆変換は、REDCを用いて以下のように表すことができる。ただし、HはH=R(mod n)で表される値であり、事前計算により求められる値である(以下、Hをモンゴメリ変換パラメータと称す)。
モンゴメリ変換:x’=REDC(x,H)=x×R×R−1=x×R(mod n)
(ただし、H=R(mod n))
モンゴメリ逆変換:x=REDC(x’,1)=x’×1×R−1=x’×R−1(mod n)
以上に基づいて、モンゴメリ乗算剰余を用いたべき乗剰余処理のアルゴリズムを図2に示す。
図2では、バイナリ法と呼ばれるべき乗剰余演算法をベースにモンゴメリ乗算剰余を用いたアルゴリズムを示しており、入力値a,d,nからべき乗剰余演算結果y=a(mod n)を計算する。1行目でyの初期値として1を与え、2行目でモンゴメリ変換パラメータH=R(mod n)を計算した後、3行目でaとyに対しモンゴメリ変換を行いa’とy’を得る。4〜7行目のループでは、dのビット値に応じてモンゴメリ乗算剰余を1回もしくは2回繰り返す処理を、dの最下位ビットから最上位ビットについて繰り返す。このループで計算されたy’に対し8行目でモンゴメリ逆変換を行うことで、最終的な演算結果yを得る。
H=R(mod n)を計算するためのもっとも自明な計算法としては、整数a,b,nから加算、減算を繰り返す方法である。R=2とした場合、図3に示すアルゴリズムでHを計算することができる。
図3のアルゴリズムについて説明する。
1行目では、R(mod n)を計算する。R(mod n)の算出法は様々な方法があるが、例えばR=2に対しnの有効ビット長がxである場合、R(mod n)=0−nにより簡単に計算できる。
3〜5行目では、H=R(mod n)に対し、H+Hを計算した後、結果がn以上である場合にnを減算することで、H+H(mod n)の加算剰余(2倍剰余)を行っている。なお、H+Hの計算は、左1ビットシフト演算でも実現可能である。この加算剰余演算をx回繰り返すことで、R×2(mod n)=R(mod n)を算出する。
ただし、図3のアルゴリズムでは、3〜5行目で加算剰余をx回繰り返すため、処理速度が遅いという欠点を有する。例えばnが1024bitの場合のRSA演算では、R=21024であるが、1024回の加算剰余が行う必要があり、この計算量は膨大である。
この欠点を解消した計算法が種々提案されており、以下に示す従来法1(たとえば、特許文献1〜特許文献4)あるいは従来法2(たとえば、特許文献5)などがある。
いずれの方法も、シフト算、減算のみを用いて計算を行うのではなく、REDC演算、シフト算および減算を組み合わせることで全体の計算を高速化していることが特徴である。
以下に、従来法1および従来法2について簡単に説明する。
なお、kを1ワードあたりのビット長、nをmワード値で表現された値、nの最上位から連続する’0’の個数をqとする。例えばk=8の場合、nのビット列が00101011 11001111ならばm=2,q=2であり、nのビット列が10001001 11100110 11100101ならばm=3,q=0である。
〈従来法1〉
従来法1は、主に以下のStepA,StepBから構成される。
ここで、入力:n(剰余の法)とし、出力:R(mod n)(ただし、R=2m×k(mod n)とする。
Figure 0004616169
StepB:REDC演算を用いて、HからH=R(mod n)を計算する。
従来法1におけるStepAとStepBのフローチャートを図4に示す。
図4において、ステップ101では2つのレジスターREG1,REG2に初期値として、REG1:=n,REG2:=0を与える。ただし、nの有効ワード長はmであり、nを右詰でREG1に格納した際の最上位ビットから連続する’0’の個数をqと表す。
ステップ102では、REG1に対し1ビット左シフトをq回繰り返し、REG1=n’=2×nとする。
ステップ103では、REG2:=REG2−REG1を計算し、REG2=2m×k(mod n’)とする。
ステップ104では、以下の処理をv+q回繰り返し、REG2=2m×k+v+qとする。ただし、vはv≧1かつm,kに対し(m×k)/vが2のべき乗となるような整数である。
▲1▼REG2を左1ビットシフトする。
▲2▼REG2≧REG1ならば、REG2:=REG2−REG1を計算する。
ステップ105では、REG1およびREG2に対して1ビット右シフト処理をq回繰り返すことで、REG1=n,REG2=H=2m×k+v(mod n)とする。
ステップ106では、REG2:=REDC(REG2,REG2)をp回繰り返すことで、H=REG2=22×m×k=R(mod n)を計算し、この計算結果を出力して終了する。ただし、pはp=log((m×k)/v)を満たす整数を表し、REDC(A,B)はモンゴメリ乗算剰余REDC(A,B)=A×B×2−m×k(mod n)を表すものとする。
この従来法1に必要な演算回数を以下の表1に示す。ただし、SFTは1ビットシフトを、SUBは減算を、REDCはモンゴメリ乗算剰余演算をそれぞれ表す。
Figure 0004616169
ステップ106におけるpは、p=log((m×k)/v)を満たす整数であるが、これを満たすためには(m×k)/vが整数xを用いて(m×k)/v=2と表せる、すなわち2のべき乗の値である必要がある。従来法1ではこの条件によりvの値の選択が制限されるため、nの有効ビット長によってはvの値を大きくする必要がある。表1から、SFTおよびSUBの計算回数はvに比例するため、vを大きくすることで全体の計算量が大きくなるという欠点がある。
具体的な暗号処理を例にその演算回数を以下を示す。
例1:1024−bit RSA暗号
この場合、nは1024bitである。1ワード=32bitとするとk=32であり、nの有効ワード長m=32となる。1ワードあたりのビット長kとnの有効ワード長mとを乗算したk*mとnの全ビット数とが一致することから、nの最上位ビット=1となりq=0である。また、m×k=1024なので、v=1,2,4...,1024が選択可能である。v=1の場合、SFTが1回、SUBが1.5回、REDCがp=log((32×32)/1)=10回である。
例2:163−bit楕円曲線暗号
この場合、nは163bitである。1ワード=8bitとするとk=8であり、nの有効ワード長m=21となる。nをビット長k=8、有効ワード長m=21で表現すると、最上位に位置するm*k−163=21×8−163=5bitが0となり、q=5となる。また、m×k=168なので、v=21,42,84,168が選択可能である。v=21の場合、SFTが4×5+21=41回、SUBが0.5×(5+21)+1=14回、REDCがp=log((21×8)/21)=3回である。
〈従来法2〉
従来法2は以下のStepA,StepBから構成される。
ここで、入力:n(剰余の法)とし、出力:R(mod n)(ただし、R=2m×k(mod n))とする。
StepA:H=2×R(mod n)を計算する。特許文献5では2×R(mod n)を計算する方法を特定していないが、例として従来法1における2×R(mod n)の計算法を挙げている。
StepB:Hから、REDC演算を用いてH=R(mod n)を計算する。これは、m×kの各ビット値を最上位ビットから最下位ビットの順番に検出し、’0’’1’に応じてREDC演算を1回もしくは2回行うことを繰り返すことで行う。
StepA,StepBのフローチャートを図5に示す。なお、StepAにおける2×R(mod n)の計算法は、従来法1のStepAと同じ方法を用いた場合について示す。
図5において、ステップ201では、2つのレジスターREG1,REG2に対して初期値としてREG1:=n,REG2:=0を与える。ただし、nの有効ワード長はmであり、nを右詰でREG1に格納した際の最上位ビットから連続する’0’の個数をqと表す。
ステップ201では、REG1に対し1ビット左シフトをq回繰り返し、REG1=n’=2×nとする。
ステップ202では、REG2:=REG1−REG2を計算し、REG2=2m×k(mod n’)とする。
ステップ203では、以下の処理をq+v回繰り返し、REG2=2m×k+v+q(mod n’)とする。
▲1▼REG2を左1ビットシフトする。
▲2▼REG2≧REG1ならば、REG2:=REG2−REG1を計算する。
ステップ204では、REG1およびREG2をq回右シフトし、REG0にREG2をコピーし、REG1=n,REG0=REG2=2m×k+v(mod n)とする。ただし、vは整数でありv≧1かつ(m×k)/vが整数である。
ステップ201では、以下の処理をi=p’−2,...,1,0についてp’−1回繰り返すことで、REG2=22×m×k=R(mod n)を計算し、計算結果を出力して終了する。ただし、p’は(m×k)/vのビット長を表し、REDC(A,B)はモンゴメリ乗算剰余REDC(A,B)=A×B×2−m×k(mod n)を表す。
▲3▼REG2:=REDC(REG2,REG2)を計算する
▲4▼(m×k)/vのi番目のビット値=1ならば、REG2:=REDC(REG2,REG0)を計算する。
前述した従来法1の処理を行うためには、p=log((m×k)/v)が整数である必要があり、すなわち(m×k)/vが2のべき乗であるという制限がある。この制限を満たすためには、以下の(i)(ii)の2段階によりm,k,vを設定する必要がある。
(i)nのビット長および1ワードあたりのビット長からm,kを決定する。
(ii)(i)で決定したm,kに対し(m×k)/vが2のべき乗となるようにvの値を設定する。
すなわち、(i)により、nのビット長およびプロセッサにおける1ワードあたりのビット長から一意に決定するm,kの値に対し(ii)でvの値を調整することで(m×k)/vが2のべき乗の値となるように設定する。問題となるのは、(ii)においてvの値を調整する際に、(m×k)/vが2のべき乗の値でなければならないという制限により、vの値が大きくなると、パラメータHの計算処理全体の計算量が大きくなる場合があることである。この問題の具体例は、前述の例1、例2におけるシフトおよび減算の回数を比較することでわかる。例1では、vの値はv=1,2,4,...と非常に小さな値を設定できたが、例2ではv=21,42,...と大きな値を設定する必要がある。表1の通り、全体の計算処理におけるシフトおよび減算回数の合計はvの1.5倍に比例する。つまりv=1の場合と比較して、v=21の場合シフトおよび減算回数の合計が30回増加することになる。
これに対し、従来法2では(m×k)/vが整数であれば処理を行うことができるので、vの値を従来法1より広い条件で設定でき、最適なvの値を設定することで従来法1より少ない計算量でパラメータHを計算することができる。
従来法2に必要な演算回数を表2に示す。ただし、SFTは1ビットシフトを、SUBは減算を、REDCはモンゴメリ乗算剰余演算をそれぞれ表す。なおW(x)は、xの最上位ビットを除く’1’の個数を表し、ステップ206において(m×k)/vのビット値が1である場合のREDC演算の回数である。例えば、W((10000))=0,W((1000101))=2である。ただし(...)は2進表現を表す記号であり、例えば(1101)=13、(11100)=28である。
Figure 0004616169
具体的な暗号処理を例にその演算回数を以下を示す。
例3:1024−bit RSA
この場合、nは1024bitである。1ワード=32bitとするとk=32であり、nの有効ワード長m=32となる。前述と同様に、k*mビットとnの全ビット数が一致していることか、nの最上位ビット=1となりq=0である。また、m×k=1024なので、vは1024の任意の因数(factor)から選択可能である。v=1の場合、SFTが1回、SUBが1.5回、REDCがp=log((32×32)/1)=10回である。
例4:163−bit楕円曲線暗号
この場合、nは163bitである。1ワード=8bitとするとk=8であり、nの有効ワード長m=21となる。この場合も前述と同様に、k*mビットにnを右詰にした場合、最上位21×8・163=5bitが0となりq=5である。また、m×k=168なので、vは168の任意の因数(factor)から選択可能である。v=21の場合、SFTが4×5+21=41回、SUBが0.5×(5+21)+1=14回であり、REDCについては(m×k)/v=(1000)からp’−1+W((m×k)/v)=4−1+0=3回である。またv=1の場合、SFTが4×5+1=21回、SUBが0.5×(5+1)+1=4回であり、REDCについては(m×k)/v=(10101000)からp’−1+W((m×k)/v)=8−1+2=9回である。v=21の場合、従来法1の例2と同一の計算量であるが、v=1の場合SFTを41−21=20回、SUBを14−4=10回、合計30回削減可能である。REDCが9−3=6回増加しているが、REDC演算をコプロ等の専用ハードウェアで高速に処理する場合、SUBもしくはSFTと同程度の時間で計算可能であるため、v=1の方が高速な処理を実現できる。
特開平08−263316号公報
(パテントファミリー:USP5745398,EP712071)
特開平08−339310号公報
(パテントファミリー:USP5751620,EP712070)
特開平11−305995号公報
(パテントファミリー:USP6240436)
米国特許第5912904号公報
(パテントファミリー:EP0601907A2)
米国特許題5777916号公報
(パテントファミリー:EP785503)
発明が解決しようとする課題
前述した従来法1および従来法2では、それぞれ以下の課題1〜課題5に示すように、パラメータvに関する制限、データ値の最上位有効ビット(Most Significant Bit,以下MSB)の算出、およびデータのビット値の検出、という問題を有する。MSBの算出およびビット値の検出にはビット単位の演算処理が必要となるが、これらはソフトウェア実装における処理効率が悪い。
▲1▼従来法1における課題
(課題1)qを算出するために、nのMSBを算出する必要がある。
(課題2)(m×k)/vが2のべき乗という制限がある。
▲2▼従来法2における課題
(課題3)2×R(mod n)の計算に従来法1の方法を用いる場合、nのMSBを算出する必要がある。
(課題4)p’を算出するために、(m×k)/vのMSBを算出する必要がある。
(課題5)REDC演算を繰り返すために、(m×k)/vの各ビット値を検出する必要がある。
課題1および課題3については、それぞれStepA,StepAが原因である。つまり、これらの処理ではREG1,REG2に対してシフト演算を繰り返しているが、シフト演算を繰り返す回数がqの値に依存していることにより問題を生じている。
この問題発生のメカニズムについて、従来法のStepAの処理を示す図6に基づいて説明する。なお、StepAとStepAは同じ処理を行っているので、図6はStepAの処理も表している。
図6の処理では2×R(mod n)の計算を行うために、以下のStepA1,1,StepA1,2,StepA1,3,StepA1,4から構成される処理を行う。
StepA1,1:n’=2×nを計算する(ただし、n’をmワードで表現したとき最上位ビット=1)。
StepA1,2:R(mod n’)=0−n’を計算する。
StepA1,3:R(mod n’)から2q+v×R(mod n’)を計算する。
StepA1,4:2q+v×R(mod n’)から2×R(mod n)を計算する。
上記のStepA1,2において、R(mod n’)の計算を0−n’により行うためには、mワード値n’の最上位ビットが1であることが条件であり、これによりStepA全体でqに応じた回数のシフト処理を必要とする。シフト回数がqに依存する理由を示すために、StepA1,1〜StepA1,4の処理内容の詳細について説明する。
StepA1,1では、REG1=nに対し左qビットシフトを行うことでREG1=n’=n×2を計算している。これにより、mワードで表現されるREG1の最上位ビットが1でない場合、左シフト演算を用いて最上位ビットを1とする。最上位ビットを1とすることで、StepA1,2においてR(mod n’)で示される剰余算を、R(mod n’)=0−n’に示される簡単な計算で行うことができる。
StepA1,2では、REG2=R(mod n’)の演算を目的にREG2:=0−n’の計算を行う。
図7に示すように、n’の最上位ビット=1であり最上位ビットを除いた値が1以上である場合には、0−n’の演算結果における最上位ビットが必ず0となることから、明らかに0≦0−n’<n’となり(mod n’)による剰余値の範囲に収まることとなる。しかしながら、n’の最上位ビット=0の場合は、0−n’の最上位ビットが必ず1となることから、明らかに0−n’≧n’となり剰余値の範囲を超えることになる。したがって、mワードによる演算では、0−n’の演算結果は0−n’=2m×k−n’=R−n’であるが、R−n’の値が目的であるR(mod n’)となるためには、mワードで表現されるn’の最上位ビットが1であることが条件である。
StepA1,3では、StepA1,2で得られたREG2=R(mod n’)に対して2倍剰余算をq+v回繰り返すことでREG2=2q+v×R(mod n’)を計算している。このREG2の値から、StepA1,4において2×R(mod n)を得るために、2倍剰余算はq+v回必要となる。
StepA1,4では、REG2=2q+v×R(mod n’)およびREG1=n’=n×2それぞれに対し、右1ビットシフトをq回繰り返すことで、REG2,REG1の値を補正し目的の値であるREG2=2×R(mod n)を得ている。REG2の値の補正は、x=a×z(mod n×z)を満たすxから、y=a(mod n)を満たすyはy=x/zにより求められることを利用している。
以上から、StepA1,2においてR(mod n’)=0−n’による剰余演算を行うために、最上位ビット=1であるmワード値n’を作成することが原因となり、StepA全体の処理がqに依存した回数分のシフト処理を行う必要があることがわかる。
課題2は、StepBの処理が原因である。この処理においては、H=2×R(mod n)を計算した後、H=REDC(H,H)=(2×R)×(2×R)×R−1=22vR(mod n),H=REDC(H,H=(22v×R)×(22v×R)×R−1=24vR(mod n),...,H=REDC(Hi−1,Hi−1=(22^i×v)×R(mod n),...のように、REDC演算をp回繰り返すことでH=R(mod n)を得る。ただし、2^xとは2のx乗を表す。この結果計算されるHがH=(22^p×v)×R(mod n)=R(mod n)となるためには、22^p×v=R=2m×kである必要があるので、2=(m×k)/vが条件となる。すなわち(m×k)/vが2のべき乗であるという制限が生じる。
課題4、課題5は、従来法2のStepBで用いている計算手順が原因である。StepBが行う処理の概要を図8に示す。
StepBでは、図8に示すように、H=2×R(mod n)を用いてi=p’−2,...,1,0の順番で(m×k)/vのi番目のビット値を検出し、ビット値=0ならばH=REDC(Hi−1,Hi− を、ビット値=1ならばH=REDC(Hi−1,Hi−1,H=REDC(H,Hを繰り返すことで、Hp’−1=R(mod n)を計算する。ただし、p’は(m×k)/vの有効ビット長である。
したがって、StepBにおいて正しい結果を得るためには、p’を求めるための(m×k)/vのMSBの算出と、(m×k)/vの各ビット値の検出の2つの処理が必要であり、この結果、課題4と課題5がそれぞれ発生する。
〈解決法1〉
本発明は、上述したような課題を解決するものであって、以下の解決法1を用いることで課題1および課題3を回避する。この解決法1では、従来法とは異なる手法を用いてRに関する剰余算を行うことで、qに依存せずに2×R(mod n)を計算する処理を実現する。
解決法1の処理を図9に示し、これについて説明する。解決法1では、R(mod n)を計算するためにREG2に初期値2(m−1)×kを与え、これに対し2倍剰余算をk回繰り返すことで2m×k(mod n)を得る。REG2の初期値2(m−1)×kは、(m−1)番目のワード値に1を与え、それ以外のワード値に0を与えることで容易に生成できる。得られたR(mod n)に対し、さらにv回の2倍剰余を行うことで、2×R(mod n)を得ることができる。これらの2倍剰余算は、まとめてk+v回の2倍剰余算により行うことができる。この方法を用いることで、qの値に依存しない処理を実現できるので、nのMSBを算出することが不要となる。
〈解決法2〉
また、本発明では、前述した課題2を解決するための方策として解決法2を提案する。
ここでは、REDCを用いた補正演算を用いることで、pに関する条件を2=(m×k)/vから2≧(m×k)/v>2p−1というより広い条件に変更する。シフト算、減算を用いてH=2×R(mod n)を計算し、従来法1と同様にREDCを用いた2乗算H=REDC(H,Hn,=REDC(H,H,....,H=REDC(Hi−1,Hi−1,...をp回繰り返すことで、その結果、H=(22^p×v)×R(mod n)を演算する。従来法と同様2≠(m×k)/vの場合、すなわち 2>(m×k)/v>2p−1においては、H=(22^p×v)×R(mod n)=R(mod n)とはならないが、この解決法2では、このHに対しH=REDC(H,g)で示される補正演算を行うことでH=R(mod n)を得る。この条件を満たすgはg=2k×G(p,m,k)と表され、G(p,m,k)=2×m−(v×2)/kにより与えられる。2>(m×k)/v>2p−1の場合、G(p,m,k)は1≦G(p,m,k)≦m−1を満たす整数値となる性質を備えているので、gの値はG(p,m,k)−1番目のワード値=1、そのほかのワード値=0とすることで容易に生成できる。前述の補正演算を用いてR(mod n)が計算できることは、H=REDC(H,g)=(22^p×v×R)×(2k×G(p,m,k))×R−1(mod n)=(22^p×v)×(22×m×k−v×2^p)(mod n)=22×m×k(mod n)=R(mod n)により確認できる。また、この解決法2を用いた場合、REDC演算の繰り返しにおいて(m×k)/vのビット値検出を必要としないので、課題5も解決することができる。
〈解決法3〉
前述した課題4については、本発明の解決法3を用いて解決することができる。この解決法3の処理を図10に示す。
ここでは、i=0,1,...,b−1の順番で(m×k)/vのi番目のビット値を検出することを繰り返し、ビット値=0ならばH=REDC(H,Hを、ビット値=1ならばH’=REDC(H’,H),H=REDC(Hi−1,Hi−1)とすることでH’=R(mod n)を計算する。
従来法のStepBではビット値の検出を上位ビット→下位ビットの順に行っていたのに対し、この解決法3では、下位ビット→上位ビットの順に行っている。ただし、H’=R(mod n)およびH=2×R(mod n)であり、bは(m×k)/vの最大ビット長を表す定数である。
このように、解決法3の手順に従うことで、(m×k)/vの各ビット値の’0’’1’のみに応じて計算を行えばよく、(m×k)/vの有効ビット長に依存しない処理を行うので課題4が解決される。また、(m×k)/vが2のべき乗であるという制限がないため、課題2も同時に解決することができる。
本発明では、前述したような解決法1〜解決法3を適宜組み合わせることで課題1〜5を解決することが可能なモンゴメリ乗算剰余における変換パラメータの演算方法、モンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに実行させるためのプログラムおよびモンゴメリ乗算剰余における変換パラメータ演算装置を提案するものである。
本発明の請求項1に係るモンゴメリ乗算剰余における変換パラメータの演算方法は、剰余の法nの有効ワード長をm、1ワード当たりのビット長をk、2m×k=Rとするモンゴメリ乗算剰余における変換パラメータR(mod n)の演算方法であって、A)H=2×R(mod n)(ただし、vは整数であり、v≧1かつ(m×k)/vは整数)を計算する第1工程と、B)i=1,2,...,pに関して、H=REDC(Hi−1,Hi−1を繰り返すことで、H=2×R(mod n)からH=2v×2^p×R(mod n)を計算する(ただし、pは2≧(m×k)/v>2p−1を満たす整数を、REDCはモンゴメリ乗算剰余REDC(a,b)=a×b×R−1(mod n)を、x^iは指数演算xをそれぞれ表す)第2工程と、C)2>(m×k)/vの場合、第2工程で得られたHに対しH=REDC(H,g)を計算することでH=R(mod n)を計算し(ただし、g=2k×E(p,m,k)、E(p,m,k)=2×m−(v×2)/kである)、最後にHをR(mod n)として出力する第3工程とを含む。ここで、第1工程は、A−1)2つのレジスタREG1,REG2を、REG1=n,REG2=2(m−1)×kにより初期化する(ただし、REG1はm個のワードから、REG2はm個以上のワードから構成されるレジスタ)工程と、A−2)REG2に対し、REG1の値を法とした2倍剰余算をk+v回繰り返すことで2×R(mod n)を得る工程とを含む。
この場合、第1工程および第3工程により前述した解決法1および解決法2を実行して、課題1,2,3,5を解決することができる。
本発明の請求項2に係るモンゴメリ乗算剰余における変換パラメータの演算方法は、剰余の法nの有効ワード長をm、1ワード当たりのビット長をk、2m×k=Rとするモンゴメリ乗算剰余における変換パラメータR(mod n)の演算方法であって、A)H’=R(mod n),H=2×R(mod n)を計算する(ただし、vは整数であり、v≧1かつ(m×k)/vは整数)第1工程と、B)H’=R(mod n)を計算し出力する第2工程とを含んでいる。ここで、第2工程は、i=0,1,..,b−1に関して、B−1)(m×k)/vのi番目のビット値=1ならば、H’=REDC(H’,Hを計算する工程と、B−2)H=REDC(Hi−1,Hi−1を計算する工程とを繰り返すことで(ただしbは(m×k)/vの最大ビット長を表す定数、REDCはモンゴメリ乗算剰余演算REDC(a,b)=a×b×R−1(mod n)をそれぞれ表す)、H’=R(mod n)を計算するものである。
この場合、第2工程により前述した解決法3を実行して、課題2および課題4を解決することができる。
本発明の請求項3に係るモンゴメリ乗算剰余における変換パラメータの演算方法は請求項2に記載のモンゴメリ乗算剰余における変換パラメータの演算方法であって、第1工程は、A−1)2つのレジスタREG1,REG2に対し、REG1:=n,REG2:=0により初期化する(ただし、REG1はm個のワードから、REG2はm個のワードから構成されるレジスタであり、kは1ワードあたりのビット長である)工程と、A−2)REG1に対し左1ビットシフトをq回繰り返すことで、REG1=n’=2×nとする(ただし、qはmワードで表現されるnの最上位ビットから連続する’0’の個数を表す)工程と、A−3)REG2:=REG2−REG1を計算することで、REG2=R(mod n’)を計算する工程と、A−4)REG2に対し、2倍剰余演算をq回繰り返すことで、REG2=2×R(mod n’)を計算する工程と、A−5)REG1,REG2に対し、右1ビットシフトをq回繰り返すことで、REG1=n,REG2=R(mod n)を計算した後、REG2の値をH’にコピーする工程と、A−6)REG2に対し、さらにREG1の値を法とした2倍剰余演算をv回繰り返すことで、REG2=2×R(mod n)を計算した後、Hにコピーする工程とを含む。
この場合、第1工程において従来法1を実行することにより、qが小さい場合に全体の計算速度を高速化することが可能となる。
本発明の請求項4に係るモンゴメリ乗算剰余における変換パラメータの演算方法は請求項2に記載のモンゴメリ乗算剰余における変換パラメータの演算方法であって、第1工程は、A−1)2つのレジスタREG1,REG2に対し、REG1:=n,REG2:=2(m−1)×kにより初期化する(ただし、REG1はm個のワードから、REG2はm個以上のワードから構成されるレジスタであり、kは1ワードあたりのビット長である)工程と、A−2)REG2に対しREG1の値を法とした2倍剰余演算をk回繰り返すことで、REG2=2m×k(mod n)=R(mod n)を計算し、H’にコピーする工程と、A−3)REG2に対し2倍剰余演算をさらにv回繰り返すことで、REG2=2×R(mod n)を計算し、Hにコピーする工程とを含む。
この場合、第1工程において前述した解決法1を適用することにより、課題1および課題3を解決することができる。
本発明の請求項5に係るモンゴメリ乗算剰余における変換パラメータの演算方法のプログラムは、剰余の法nの有効ワード長をm、1ワード当たりのビット長をk、2m×k=Rとするモンゴメリ乗算剰余における変換パラメータR(mod n)の演算方法のプログラムであって、A)H=2×R(mod n)(ただし、vは整数であり、v≧1かつ(m×k)/vは整数)を計算する第1工程と、B)i=1,2,...,pに関して、H=REDC(Hi−1,Hi−1を繰り返すことで、H=2×R(mod n)からH=2v×2^p×R(mod n)を計算する(ただし、pは2≧(m×k)/v>2p−1を満たす整数を、REDCはモンゴメリ乗算剰余REDC(a,b)=a×b×R−1(mod n)を、x^1は指数演算xをそれぞれ表す)第2工程と、C)2>(m×k)/vの場合、第2工程で得られたHに対しH=REDC(H,g)を計算することでH=R(mod n)を計算し(ただし、g=2k×E(p,m,k)、E(p,m,k)=2×m−(v×2)/kである)、最後にHをR(mod n)として出力する第3工程とを含み、前記第1工程は、A−1)2つのレジスタREG1,REG2を、REG1=n,REG2=2(m−1)×kにより初期化する(ただし、REG1はm個のワードから、REG2はm個以上のワードから構成されるレジスタ)工程と、A−2)REG2に対し、REG1の値を法とした2倍剰余算をk+v回繰り返すことで2×R(mod n)を得る(ただし、)工程とを含む、モンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに実行させるためのプログラムである。
この場合、請求項1に記載したようなモンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに実行させる場合に、従来法の問題である課題1,2,3,5を解決して高速演算を可能とする。
本発明の請求項6に係るプログラムは、剰余の法nの有効ワード長をm、1ワード当たりのビット長をk、2m×k=Rとするモンゴメリ乗算剰余における変換パラメータR(mod n)の演算方法のプログラムであって、A)H’=R(mod n),H=2×R(mod n)を計算する(ただし、vは整数であり、v≧1かつ(m×k)/vは整数)第1工程と、B)H’=R(mod n)を計算し出力する第2工程とを含み、第2工程は、i=0,1,..,b−1に関して、B−1)(m×k)/vのi番目のビット値=1ならば、H’=REDC(H’,Hを計算する工程と、B−2)H=REDC(Hi−1,Hi−1を計算する工程とを繰り返すことで(ただしbは(m×k)/vの最大ビット長を表す定数、REDCはモンゴメリ乗算剰余演算REDC(a,b)=a×b×R−1(mod n)をそれぞれ表す)H’=R(mod n)を計算する、モンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに実行させるためのプログラムである。
この場合、請求項2に記載したようなモンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに実行させる場合に、従来法の問題である課題2,4を解決して高速演算を可能とする。
本発明の請求項7に係るモンゴメリ乗算剰余における変換パラメータの演算装置は、剰余の法nの有効ワード長をm、1ワード当たりのビット長をk、2m×k=Rとするモンゴメリ乗算剰余における変換パラメータR(mod n)の演算装置であって、m個のワードから構成される第1レジスタREG1と、m個以上のワードから構成される第2レジスタREG2と、2つのレジスタREG1,REG2を、REG1=n,REG2=2(m−1)×kにより初期化する初期化処理部と、第2レジスタREG2に対し、第1レジスタREG1の値を法とした2倍剰余算をk+v回繰り返すことでH=2×R(mod
Figure 0004616169
i=1,2,...,pに関して、H=REDC(Hi−1,Hi−1を繰り返すことで、H=2×R(mod n)からH=2v×2^p×R(mod n)を計算する(ただし、pは2≧(m×k)/v>2p−1を満たす整数を、REDCはモンゴメリ乗算剰余REDC(a,b)=a×b×R−1(mod n)を、x^iは指数演算xをそれぞれ表す)H演算部と、2>(m×k)/vの場合、前記H演算部により得られたHに対しH=REDC(H,g)を計算することでH=R(mod n)を計算し(ただし、g=2k×E(p,m,k)、E(p,m,k)=2×m−(v×2)/kである)、最終的に得られたHをR(mod n)として出力するパラメータ出力部とを備える。
この場合、初期化処理部およびH演算部により解決法1を実現し、課題1,3を解決することが可能となる。また、パラメータ出力部により解決法2を実現し、課題2,5を解決することが可能となる。
本発明の請求項8に係るモンゴメリ乗算剰余における変換パラメータの演算装置は、剰余の法nの有効ワード長をm、1ワード当たりのビット長をk、2m×k=Rとするモンゴメリ乗算剰余における変換パラメータR(mod n)の演算装置であって、H’=R(mod n),H=2×R(mod n)を計算する(ただし、vは整数であり、v≧1かつ(m×k)/vは整数)H演算部と、i=0,1,..,b−1に関して、(m×k)/vのi番目のビット値=1ならば、H’=REDC(H’,Hを計算する工程と、H=REDC(Hi−1,Hi−1を計算する工程とを繰り返すことでH’=R(mod n)を計算し出力する(ただしbは(m×k)/vの最大ビット長を表す定数、REDCはモンゴメリ乗算剰余演算REDC(a,b)=a×b×R−1(mod n)をそれぞれ表す)H’演算部とを含む。
この場合、H’演算部により解決法3を実現することができ、これにより、課題2,4を解決することが可能となる。
図1は、モンゴメリ乗算剰余のアルゴリズムを示す説明図である。
図2は、モンゴメリ乗算剰余を用いたべき乗剰余演算の例を示す説明図である。
図3は、加算、減算を用いた変換パラメータHの計算アルゴリズムを示す説明図である。
図4は、従来法1のフローチャートである。
図5は、従来法2のフローチャートである。
図6は、課題1および課題3の原因となる従来法における2R(mod n)計算処理のフローチャートである。
図7は、従来法におけるR(mod n’)=0−n’の計算が成立するためのn’の条件を示す説明図である。
図8は、従来法2におけるStepBの処理の概要およびそれに伴う課題を示す説明図である。
図9は、本発明の解決法1で用いる2×R(mod n)の計算法を示す説明図である。
図10は、本発明の解決法3で用いるR(mod n)の計算法を示す説明図である。
図11は、本発明の第1実施形態のフローチャートである。
図12は、本発明の第2実施形態のフローチャートである。
図13は、実施例1のフローチャートである。
図14は、実施例2のフローチャートである。
図15は、実施例3のフローチャートである。
図16は、本発明のプログラムを格納する記録媒体の説明図である。
〈第1実施形態〉
本発明の第1実施形態について、図11に示すフローチャートに基づいて説明する。
図11に示すように、この第1実施形態では主にStepA,StepB,StepCから構成される。
ここで、入力:n(剰余の法)、出力:R(mod n)(ただし、R=2m×k(mod n))とする。
StepAでは、シフト算および減算を用いて、H=2m×k+v(mod n)を満たすHを計算する。ここで、vは整数であり、v≧1かつ(m×k)/vが整数であることを満たすものとする。
StepBでは、REDC演算を用いて、HからH=2E(p″,m,k)(mod n)を計算する。ただし、E(p″,m,k)=m×k+v×2p″、p″は2p″>(m×k)/v>2(p″−1)を満たす整数である。
StepCでは、2p″>(m×k)/vならば、g=2k×G(p″,m,k)についてH=REDC(H,G)による補正演算を行う。ただし、GはG(p″,m,k)=2×m−(v×2p″)/kであり、1≦G(p″,m,k)≦m−1の範囲を満たす整数である。演算後にH=R(mod n)を出力し終了する。
この第1実施形態のアルゴリズムについて以下に詳細を示す。
ステップ301では、2つのレジスタに対して初期値として、REG1:=n,REG2:=2(m− 1)×kを与える。ただし、nの有効ワード長はmである。
ステップ302では、REG2に対して、2倍剰余算をk+v回繰り返しREG2=2m×k+v(mod n)とする。ただし、vは整数であり、v≧1かつ(m×k)/vが整数である。
ステップ303では、REG2:=REDC(REG2,REG2)をp″回繰り返すことで、REG2=2E( p″,m,k)(mod n)を計算する。ただし、p″は2p″≧(m×k)/v>2p″−1を満たす整数、E(p″,m,k)=m×k+v×2p″であり、REDC(A,B)はモンゴメリ乗算剰余REDC(A,B)=A×B×2−m×k(mod n)を表す。
ステップ304では、2p″>(m×k)/vならば、REG2:=REDC(REG2,g)による補正演算を行う。ただし、g=2k×G(p″,m,k)およびG(p″,m,k)=2×m−(v×2p″)/kである。REG2=R(mod n)を出力し終了する。
このようにした第1実施形態では、ステップ301,302において、前述した解決法1を用いてREG2=2×R(mod n)の計算を行っており、nのMSBを算出することが不要となる。
また、ステップ303,304では、解決法2を用いることで、2×R(mod n)からR(mod n)の計算を行っており、(m×k)/vが2のべき乗であるという制限を不要としている。ステップ303では、REG2=2×Rにモンゴメリ乗算剰余演算を用いた2乗算をp″回繰り返すことで、REG2=2E(p″,m,k)(mod n)を得ることができる。ただし、p″は2p″≧(m×k)/v>2p″−1を満たす整数であり、E(p″,m,k)=m×k+v×2p″である。ステップ304では、2p″>(m×k)/vの場合にREG2:=REDC(REG2,g)による補正演算を行うことで、REG2=R(mod n)を算出することができる。ただし、g=2k×G(p″,m,k)およびG(p″,m,k)=2×m−(v×2p″)/kである。
このようにして、第1実施形態では、解決法1を用いることで、nのMSBの算出が不要となり、課題1および課題3が解決される。また、解決法2を用いることで、(m×k)/vが2のべき乗であるという制限が不要となり、課題2が解決され、さらに(m×k)/vのビット値検出が不要となり、課題5が解決される。
〈第2実施形態〉
本発明の第2実施形態について、図12に示すフローチャートに基づいて説明する。
この第2実施形態では、図12に示すように、主にStepA,StepBから構成される。ここで、入力をn(剰余の法)、出力をR(mod n)(ただし、R=2m×k(mod n))とする。
StepAでは、H’=R(mod n),H=2×R(mod n)を計算する。
StepBでは、H’,Hから、REDC演算を用いてH=R(mod n)を計算する。この演算では、m×kの各ビット値を最下位ビットから最上位ビットの順に検出し、各ビット値の’0’’1’に応じてREDC演算を1回もしくは2回行うことを繰り返す。
この第2実施形態の場合、従来法2と異なり、(m×k)/vのMSBを算出する必要がないというメリットを有する。ただし、(m×k)/vの最大ビット長を表す定数bが必要となる。
また、StepAにおけるHの算出法については、本発明の第1実施形態におけるStepAに示す方法を用いることで、nの有効ビットを算出が不要となる。
StepA,StepBの詳細を以下に説明する。
ステップ401では、REG1:=nを初期値として与える(ただし、nの有効ワード長はmである)。
ステップ402では、2m×k(mod n)を演算し、その結果をREG0とREG2に対して与えることで、REG0=REG2=2m×k(mod n)とする。
ステップ403では、REG0に対し2倍剰余演算をv回繰り返し、REG0=2m×k+v(mod n)を計算する。ただしvは整数であり、v≧1かつ(m×k)/vが整数であることを満たす。
ステップ404では、以下の▲1▼および▲2▼の処理をi=0,1,...,b−1についてb回繰り返すことで、REG2=22×m×k=R(mod n)を計算して出力し終了する。ただし、bは(m×k)/vの最大ビット長を表す定数、REDC(A,B)はモンゴメリ乗算剰余REDC(A,B)=A×B×2−m×k(mod n)をそれぞれ表す。
▲1▼REG0:=REDC(REG0,REG0)を計算する。
▲2▼m×kのi番目のビット値=1ならば、REG2:=REDC(REG2,REG0)を計算する。
この第2実施形態では、ステップ401においてREG1に初期値nを与えており、第1実施形態と異なりREG2に対する初期値を与えていない。これはステップ402の実現方法によって初期値が異なることによる。
ステップ402では、2m×k(mod n)を演算した上で、この演算結果をREG0とREG2に与え、REG0=REG2=2m×k(mod n)としている。2m×k(mod n)を計算するための実現方法は複数存在するが、たとえば第1実施形態と同様の構成にすることで解決法1を実現することができ、nに関するMSBの算出を不要とすることができる。
ステップ403では、REG0に対し2倍剰余算をv回行うことでREG0=2m×k(mod n)を計算している。
また、ステップ404では、解決法3を実現しており、vに関する制限、および(m×k)/vの有効ビット長カウントを不要としている。ここでは、(m×k)/vの各ビット値を検出し、ビット値に応じてREDC演算を1回もしくは2回行うことで、H=R(mod n)を計算している。このことにより、従来法2ではi番目のビット値を検出する際、(m×k)/vの有効ビット長p’に対しi=p’−2,...,1,0の順に検出していたのに対し、この第2実施形態では(m×k)/vの最大ビット長bに対しi=0,1,...,b−1の順に検出している。つまり、本発明は(m×k)/vの最大ビット長である定数bのみを与えればよく、入力値によって変化する(m×k)/vの有効ビット長を計算する必要がないというメリットを有する。従来法2に対して、i=b−1,...,1,0の順に検出するように変更した場合、b=p’が満たされない限り計算結果がR(mod n)と一致せず、目的であるパラメータHを計算することができなくなる。
このように第2実施形態では、ステップ404において解決法3を実現しており、(m×k)/vが2のべき乗であるという制限がなくなり、また(m×k)/vのMSBの算出が不要となるので課題2および課題4が解決される。
図12では、ステップ402における2m×k(mod n)の計算法を特定していないが、第1実施形態と同様の解決法1を適用することで、nに関するMSBを算出することが不要となり、さらに課題1および課題3を解決することができる。
本発明の第1実施形態を実施した実施例1を図13のフローチャートに基づいて説明する。
図13におけるステップ501〜504は、それぞれ図11のステップ301〜304に対応しており、ステップ302における2倍剰余演算については、ステップ502においてREG2を左1ビットシフトした後、REG2≧REG1ならばREG1からREG1を減算することで行っている。この代わりにREG2:=REG2+REG2の加算処理を行い、REG2≧REG1ならばREG2からREG1を減算する構成とすることも可能である。
この実施例1に必要な計算量を表3に示す。
Figure 0004616169
本発明の第2実施形態を実施した実施例2を図14のフローチャートに基づいて説明する。
図14では、図12のステップ402における2m×k(mod n)の算出方法、およびステップ403における2倍剰余演算の計算方法について特定した実施例である。
ステップ601〜606により図12のステップ401,402の処理を、ステップ606により図12のステップ403の処理を、ステップ607により図12のステップ404の処理をそれぞれ行っている。
ステップ601〜606の処理により、REG0=REG2=2m×k(mod n)演算している。これは、図6に示した方法においてv=0とすることで演算することができる。
ステップ607では、REG0に対し2倍剰余算をv回繰り返すことでREG0=2m×k+v(mod n)とする。
ステップ608では、解決法3を用いて(m×k)/vの各ビット値に応じてREDC演算を1回もしくは2回繰り返すことで、REG2=22×m×k(mod n)=R(mod n)を計算する。
この実施例2に必要な計算量を表4に示す。
Figure 0004616169
本発明の第2実施形態を実施した実施例3を図15のフローチャートに基づいて説明する。
図15では、実施例2と同様に、図12のステップ402における2m×k(mod n)算出法およびステップ403における2倍剰余演算の計算方法について特定した実施例である。ステップ402の計算方法に解決法1の手法を用いることで、実施例2と同様の課題2および課題4を解決する効果に加え、課題1および課題3を解決することができる。
図15について説明する。ステップ701〜703により、図12のステップ401,402の処理を、ステップ704により図12のステップ403の処理を、ステップ705により図12のステップ404の処理をそれぞれ行っている。以下ではこれらの処理について説明する。
ステップ701〜703の処理により、REG0=REG2=2m×k(mod n)を計算している。これは、解決法1でv=0をした場合の処理を行っており、nのMSBの算出を不要とし、課題1および課題3を解決できる。これらの処理によりREG0=REG2=2m×k(mod n)を計算した後、ステップ704,705において解決法3を用いた処理を行い、REG2=R(mod n)を算出する。(m×k)/vが2のべき乗であるという制限がなく、(m×k)/vのMSBの算出が不要であるので、課題4を解決することができる。最後に、REG2の値をパラメータHとして出力し終了する。
この実施例3の計算量を表5に示す。
Figure 0004616169
発明の効果
上述した実施例1〜3では、表6に示すように、各課題1〜5を解決することが可能となる。
Figure 0004616169
さらに、nの条件によって、本発明は従来法より小さな計算量で処理を実現することが可能である。計算量に関する比較を以下の表7に示す。表7では、加算、減算、シフト算の計算量は全て同一と仮定しており、これらの演算をまとめてADDと表記している。また、REDCはモンゴメリ乗算剰余を表す。
Figure 0004616169
表7におけるADDの計算量を比較すると、4.5q+1.5v+1>1.5k+1.5vである場合には、実施例1,3の方が従来法1,2より小さな計算量による処理を実現することができる。このときの条件はk≦3qであり、つまりnの最上位ビットから連続する’0’の個数がk/3以上である場合に、実施例1,3は従来方式よりADDの回数を少なくすることができる。
また、REDCを含めた計算量比較の例を、以下の比較例1,2に示す。
比較例1:1024−bit RSA,1ワード=32bit、v=1の場合。
この場合、nは1024bitである。また、1ワード=32bitなのでk=32であり、1024ビットを表現するためのワード長m=32となる。このとき、nの最上位ビット=1となるので、q=0である。したがって、(m×k)/v=1024=(10000000000)であり、W((m×k)/v)=0である。また、RSA暗号の最大ビット長を1024−bitと仮定し、b=11とする。この条件下で、従来法と本発明に必要な計算量は以下のとおりである。
従来法1
ADDは2.5回、またp=10であるのでREDCは10回。
従来法2
ADDは2.5回、またp’=11,W((m×k)/v)=0であるのでREDCは10回。
ADDは1.5×32+1.5×1=49.5回、またp″=10かつ2p″=(m×k)/vであるのでREDCは10回。
ADDは2.5回、またb=11,W((m×k)/v)=0であるのでREDCは12回。
ADDは1.5×32+1.5×1=49.5回、またb=11,W((m×k)/v)=0であるのでREDCは12回。
これらを表8にまとめる。実施例2を用いることで、従来法の課題を解消しながら、ADDに関する計算量を従来法と同じとすることができる。
Figure 0004616169
比較例2:163−bit楕円曲線暗号、1ワード=8bit、従来法1でv=21、他はv=3の場合。
この場合、nは163bitである。また、1ワードが8ビットなのでk=8であり、163ビットを表現するためのワード長m=21となる。このとき、nの上位8×21−163=5ビットが0となるのでq=5である。vについては、パラメータ選択の制限から従来法1のみv=21とし、従来法2および実施例1,2,3はv=3とする。v=21の場合、(m×k)/v=8=(1000)であり、W((m×k)/v)=0である。またv=3の場合、(m×k)/v=56=(111000)であり、W((m×k)/v)=2である。また、楕円曲線暗号の最大ビット長を255−bitと仮定し、b=8とする。この条件下で、従来法と本発明に必要な計算量は以下のとおりである。
従来法1
ADDは4.5×5+1.5×21=54回、またp=3であるのでREDCは3回。
従来法2
ADDは4.5×5+1.5×3=27回、またp’=6,W((m×k)/v)=2であるのでREDCは7回。
ADDは1.5×8+1.5×3=16.5回、またp″=6かつ2p″>(m×k)/vであるのでREDCは7回。
ADDは4.5×5+1.5×3=27回、またb=8,W((m×k)/v)=2であるのでREDCは10回。
ADDは1.5×8+1.5×3=16.5回、またb=8,W((m×k)/v)=2であるのでREDCは10回。
これらを表9にまとめる。実施例1,3を用いることで、従来法の課題を解消しながら、ADDの回数を従来法より削減することができる。さらに、REDC演算をコプロセッサ等の専用ハードウェアを用いて高速に計算する場合を仮定しADD=REDCとした場合、実施例1の計算量は16.5+7=23.5,実施例3の計算量は16.5+10=26.5となり、従来法1の(54+3=57)、および従来法2の(27+7=34)よりも全体の計算量を小さく抑えることができる。
Figure 0004616169
〈他の実施形態〉
前述した各実施形態は、ハードディスク、CD−ROM、その他の記録媒体に格納されたプログラムをメインメモリ上で展開して、コンピュータを各機能部として機能させるように構成できる。この場合、本発明のモンゴメリ乗算剰余における変換パラメータの演算方法を実現するプログラムは、図16に示すように、CD−ROM311やフレキシブルディスク312などの可搬型記録媒体310、通信回線の先に備えられる他の記録装置330、コンピュータ300のハードディスクやRAMなどの記録媒体320のいずれに記録されるものであってもよく、プログラム実行時にはコンピュータ300の主メモリ上にロードされて実行される。
本発明によれば、パラメータvに関する制限、データ値の最上位有効ビット(Most Significant Bit,以下MSB)の算出、およびデータのビット値の検出という問題を解決し、ソフトウェア実装における処理効率が向上させることができる。このことにより、RSA、楕円曲線暗号などの公開鍵暗号を処理する際の処理速度を向上させることができる。

Claims (1)

  1. 剰余の法nの有効ワード長をm、1ワード当たりのビット長をk、2m×k=Rとするモンゴメリ乗算剰余における変換パラメータR2 (mod n)の演算方法のプログラムであって、
    A)H0=2v×R (mod n)(ただし、vは整数であり、v≧1かつ(m×k)/vは整数)を計算する工程であって、
    A-1)2つのレジスタREG1, REG2を、REG1=n, REG2=2(m-1)×kにより初期化する(ただし、REG1はm個のワードから、REG2はm個のワードと1ビットキャリーレジスタから構成されるレジスタ)工程と、
    A-2)REG2に対し、REG1の値を法とした2倍剰余算をk+v回繰り返すことで2v×R (mod n)を得る(ただし、vは整数であり、v≧1かつ(m×k)/vは整数である)工程と、
    を含む第1工程と、
    B)i=1,2,...,pに関して、Hi=REDC(Hi-1,Hi-1)nを繰り返すことで、H0=2v×R (mod n)からHp=2v×2^p×R(mod n)を計算する(ただし、pは2 p ≧(m×k)/v >2 p-1 を満たす整数を、REDCはモンゴメリ乗算剰余REDC(a,b)n=a×b×R-1 (mod n)を、x^iは指数演算xiをそれぞれ表す)第2工程と、
    C)2p>(m×k)/vの場合、第2工程で得られたHpに対しHp=REDC(Hp, g)nを計算することでHp=R2 (mod n)を計算し(ただし、g=2k×E(p,m,k)、E(p,m,k)=2×m-(v×2p)/kである)、最後にHpをR2 (mod n)として出力する第3工程と、
    を含むモンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに実行させるためのプログラム。
JP2005507387A 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム Expired - Fee Related JP4616169B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2003/009722 WO2005013243A1 (ja) 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム

Publications (2)

Publication Number Publication Date
JPWO2005013243A1 JPWO2005013243A1 (ja) 2006-09-28
JP4616169B2 true JP4616169B2 (ja) 2011-01-19

Family

ID=34113469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005507387A Expired - Fee Related JP4616169B2 (ja) 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム

Country Status (6)

Country Link
US (1) US7792893B2 (ja)
EP (1) EP1650727B1 (ja)
JP (1) JP4616169B2 (ja)
AU (1) AU2003252750A1 (ja)
DE (1) DE60332876D1 (ja)
WO (1) WO2005013243A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4662802B2 (ja) * 2005-03-30 2011-03-30 富士通株式会社 計算方法、計算装置及びコンピュータプログラム
JP5027422B2 (ja) * 2006-02-09 2012-09-19 ルネサスエレクトロニクス株式会社 剰余演算処理装置
EP1845442B1 (en) 2006-04-11 2011-11-09 STMicroelectronics Srl Computation of a modular multiplication with an electronic circuit
EP2015171A1 (fr) * 2007-06-29 2009-01-14 Gemplus Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l'exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée
EP2385461A1 (en) * 2010-04-30 2011-11-09 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
US8626811B2 (en) * 2010-04-30 2014-01-07 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
JP6102649B2 (ja) * 2013-09-13 2017-03-29 株式会社ソシオネクスト 演算回路および演算回路の制御方法
US11508263B2 (en) * 2020-06-24 2022-11-22 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152319A (ja) * 1993-11-30 1995-06-16 Canon Inc 暗号化装置
JPH07199807A (ja) * 1993-12-27 1995-08-04 Canon Inc 暗号化用剰余乗算回路、暗号装置、および暗号通信システム
JPH08263316A (ja) * 1994-11-08 1996-10-11 Sgs Thomson Microelectron Sa モンゴメリ法によるモジュラ乗算の実施方法
JPH08339310A (ja) * 1994-11-08 1996-12-24 Sgs Thomson Microelectron Sa モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法
US5777916A (en) * 1996-01-18 1998-07-07 Sgs-Thomson Microelectronics S.A. Method for the production of an error correction parameter associated with the implementation of modular operations according to the montgomery method
US5912904A (en) * 1996-01-18 1999-06-15 Sgs-Thomson Microelectronics S.A. Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method
JPH11305995A (ja) * 1998-03-30 1999-11-05 Rainbow Technol Inc 計算装置のデ―タ処理高速化方法および装置。
JP2002007112A (ja) * 2000-06-20 2002-01-11 Sony Corp 剰余演算計算方法および剰余演算計算装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69434422T2 (de) * 1993-11-30 2006-04-20 Canon K.K. Verfahren und Anordnung zur Verschlüsselung/Entschlüsselung auf der Basis des Montgomery-Verfahrens unter Verwendung von effizienter modularer Multiplikation
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
FR2771525B1 (fr) * 1997-11-24 2002-10-11 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
US7278090B2 (en) * 2004-03-31 2007-10-02 Nxp B.V. Correction parameter determination system
EP1845442B1 (en) * 2006-04-11 2011-11-09 STMicroelectronics Srl Computation of a modular multiplication with an electronic circuit

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152319A (ja) * 1993-11-30 1995-06-16 Canon Inc 暗号化装置
JPH07199807A (ja) * 1993-12-27 1995-08-04 Canon Inc 暗号化用剰余乗算回路、暗号装置、および暗号通信システム
JPH08263316A (ja) * 1994-11-08 1996-10-11 Sgs Thomson Microelectron Sa モンゴメリ法によるモジュラ乗算の実施方法
JPH08339310A (ja) * 1994-11-08 1996-12-24 Sgs Thomson Microelectron Sa モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法
US5777916A (en) * 1996-01-18 1998-07-07 Sgs-Thomson Microelectronics S.A. Method for the production of an error correction parameter associated with the implementation of modular operations according to the montgomery method
US5912904A (en) * 1996-01-18 1999-06-15 Sgs-Thomson Microelectronics S.A. Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method
JPH11305995A (ja) * 1998-03-30 1999-11-05 Rainbow Technol Inc 計算装置のデ―タ処理高速化方法および装置。
JP2002007112A (ja) * 2000-06-20 2002-01-11 Sony Corp 剰余演算計算方法および剰余演算計算装置

Also Published As

Publication number Publication date
EP1650727A1 (en) 2006-04-26
EP1650727B1 (en) 2010-06-02
US7792893B2 (en) 2010-09-07
WO2005013243A1 (ja) 2005-02-10
US20060235921A1 (en) 2006-10-19
AU2003252750A1 (en) 2005-02-15
EP1650727A4 (en) 2007-07-25
DE60332876D1 (de) 2010-07-15
JPWO2005013243A1 (ja) 2006-09-28

Similar Documents

Publication Publication Date Title
KR101255393B1 (ko) 타원 곡선 점 곱셈
US8504602B2 (en) Modular multiplication processing apparatus
KR100891323B1 (ko) 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
Fan et al. Attacking OpenSSL implementation of ECDSA with a few signatures
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
US20100067690A1 (en) Spa-resistant left-to-right recoding and unified scalar multiplication methods
JP4977300B2 (ja) 暗号法及び装置
EP0952697B1 (en) Elliptic curve encryption method and system
Koppermann et al. 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices
Wang et al. Attacking OpenSSL ECDSA with a small amount of side-channel information
JP4616169B2 (ja) モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
JP3302043B2 (ja) 暗号通信方法及びそのシステム
US7983415B2 (en) Method for performing iterative scalar multiplication which is protected against address bit attack
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
CN1985458B (zh) 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置
JP2005195829A (ja) 復号または署名作成におけるべき乗剰余算の計算方法
CN111614465B (zh) 基于超奇异同源秘钥封装协议的公钥生成方法和装置
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems
KR100368204B1 (ko) 정규 기저를 이용한 역원 계산 알고리즘
JP3999554B2 (ja) 乗算剰余演算方法及び演算装置
Al-Tuwaijry et al. A high speed RSA processor
KR100808953B1 (ko) 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080929

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090420

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100413

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100713

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100817

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100928

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101021

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees