JP3842641B2 - モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法 - Google Patents

モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法 Download PDF

Info

Publication number
JP3842641B2
JP3842641B2 JP2001389175A JP2001389175A JP3842641B2 JP 3842641 B2 JP3842641 B2 JP 3842641B2 JP 2001389175 A JP2001389175 A JP 2001389175A JP 2001389175 A JP2001389175 A JP 2001389175A JP 3842641 B2 JP3842641 B2 JP 3842641B2
Authority
JP
Japan
Prior art keywords
remainder
montgomery multiplication
calculation
result
unit
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
JP2001389175A
Other languages
English (en)
Other versions
JP2003186397A (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
Priority to JP2001389175A priority Critical patent/JP3842641B2/ja
Publication of JP2003186397A publication Critical patent/JP2003186397A/ja
Application granted granted Critical
Publication of JP3842641B2 publication Critical patent/JP3842641B2/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

Description

【0001】
【発明の属する技術分野】
本発明は、モンゴメリ乗算を用いるコプロセッサを使用して、剰余演算や乗算を容易に実現する演算装置及び方法に関する。
【0002】
【従来の技術】
近年のコンビュータネットワークの発達により、データベースの検索や電子メール、電子ニュース等の電子化された情報について、ネットワークを経由して送受する機会が急速に増加してきている。さらに、これらを利用して、オンラインショッピング等のサービスも提供されつつある。
【0003】
しかし、これらの金銭授受を伴うサービスが拡大するにつれて、ネットワーク上の電子化されたデータを盗聴する、改ざんする、他人になりすましてサービスを享受する等のいわゆるネットワーク犯罪の増加という新たな問題点も指摘されている。特に無線を利用しているネットワーク環境においては、通信の傍受が容易であることから、特にこれらの行為を防止する対策が望まれている。
【0004】
これらの問題に対して暗号技術(encryption technology)を応用した暗号化電子メールや利用者認証システムが提案され、種々のネットワークにも導入されつつある。かかる観点から、コンピュータネットワーク環境において、暗号化技術は必要不可欠であると考えられる。
【0005】
このような暗号技術の中の1つにディジタル署名、すなわち認証に適した公開鍵暗号方式(public Key cryptosystem)があるが、暗号化/復号化に大量の演算処理が必要となることから、処理自体の高速化に対する要望は強く、それに対して種々の高速化アルゴリズムも開示されている。
【0006】
【発明が解決しようとする課題】
一般に、公開鍵暗号方式の代表例の一つであるRSA方式においては、乗算剰余演算が最も多く使用される。したがって、乗算剰余演算部分をコプロセッサ等によってハードウェア化することによって、全体の演算処理を高速化することが可能となる。
【0007】
一方、ハードウェア化による演算処理の高速化のみならず、処理アルゴリズムの工夫による演算処理の高速化の試みもなされており、代表的なものとして中国人剰余定理(Chinese Remainder Theorem:以下「CRT」という。)を用いて処理速度を数倍にまで上げることが良く行われている。
【0008】
しかしながら、CRTを用いる場合においては、乗算剰余演算以外に剰余演算、乗算、加減算等がさらに必要となってくる。したがって、ソフトウェアとして実装する場合は図1(a)に示すような構成に、乗算剰余演算を行うモンゴメリ乗算のみをコプロセッサで独立して行うハードウェア化による処理の高速化を図る場合には、図1(b)のような構成となる。
【0009】
図1(a)及び図1(b)において、1及び2はRSA−CRT関連処理ルーチンを、3は外部とのインタフェースを、4から8は各々の演算処理を行うための処理ルーチンを示している。
【0010】
図1(a)及び図1(b)からも明らかなように、乗算剰余演算をモンゴメリ乗算を行うコプロセッサで高速に処理したとしても、モンゴメリ乗算以外に剰余算、乗算、加減算を行う回路もしくはルーチンが必要となってしまう。
【0011】
すなわち、図1(a)に示すようにRSA−CRT処理に関する演算を全てソフトウェアで実装する場合、使用する演算の種類が多ければ多いほど、ソフトウェアとしての構成モジュールが増大することから、CPU負荷も含めた計算機資源消費の軽減を図る観点からも、用いる演算の種類は少なければ少ないほど良い。
【0012】
一方、図1(b)に示すようにコプロセッサ化(ハードウェア化)を図る場合であっても、コプロセッサ化されるのは、最も使用頻度が高いモンゴメリ乗算ルーチン5であり、その他の演算ルーチン、特に剰余ルーチン7や乗算ルーチン8については、ファームウェアで処理することになる。このような構成とすると、ファームウェアにおける処理によるオーバーヘッドが大きくなってしまい、たとえCRTを用いてファームウェアにおける演算処理の高速化を図ったとしても、その高速性が半減してしまうという問題が残されている。また、その他の演算ルーチンまでコプロセッサ化すれば、コプロセッサ自体の規模が大きくなってしまい、コプロセッサ化した利点が失われてしまうことになる。
【0013】
本発明は、上記問題を解決するために、高速処理可能なコプロセッサによるモンゴメリ乗算と、処理負荷の小さい加減算によって、比較的処理負荷の高い乗算や剰余算を実行することができるモンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法を提供することを目的とする。
【0014】
【課題を解決するための手段】
上記目的を達成するために本発明にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置は、正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数13)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算装置であって、剰余演算の対象となる被剰余数C及び剰余数pを入力する剰余演算入力部と、(数13)における最も次数の高い第一の被剰余値Csを保存する第一記憶部と、被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに初期値から1だけ減算してカウントするカウンタ部と、第一記憶部に保存されている第一の被剰余値Csに対して剰余数pを用いて(数14)に示すモンゴメリ乗算を実行するモンゴメリ乗算部と、モンゴメリ乗算部における演算結果を保存する第二記憶部と、第二記憶部に保存されている演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算する加算部と、加算部における演算結果を保存する第三記憶部と、第三記憶部に保存されている加算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する条件判定部と、条件判定部における判定結果に応じて、第三記憶部に保存されている演算結果に対してそれぞれ減算による補正をする補正演算部と、補正演算部における演算結果を保存する補正演算結果保存部とを含み、(数13)における全ての次数における被剰余値について、カウンタ部における被剰余値の次数sが0(ゼロ)になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とする。
【0015】
【数13】
R=2n
C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
【0016】
【数14】
R=2n
a=Cs
b=R2mod p
Mont_mul(a,b,R,p)=a*b*R-1(mod p)
かかる構成により、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算を行うことができることから、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【0017】
また、上記目的を達成するために本発明にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置は、正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(y≧n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算装置であって、剰余演算の対象となる被剰余数C及び剰余数pを入力する剰余演算入力部と、入力された被剰余数Cに対して剰余数pを用いた(数15)に示すモンゴメリ乗算を実行する第一モンゴメリ乗算部と、第一モンゴメリ乗算部における演算結果を保存する第一モンゴメリ乗算結果保存部と、第一モンゴメリ乗算結果保存部に保存されている演算結果を新たな被剰余数C’として、剰余数pを用いた(数16)に示すモンゴメリ乗算を実行する第二モンゴメリ乗算部と、第二モンゴメリ乗算部における演算結果を保存する第二モンゴメリ乗算結果保存部とを含み、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とする。
【0018】
【数15】
C’=Mont_mul(C,2y,22n,p)
【0019】
【数16】
Cp=Mont_mul(C’,22nmod p,2y,p)
このように、剰余数が被剰余数の半分以上のビット数で構成されている場合であっても、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算を行うことができることから、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【0020】
さらに、上記目的を達成するために本発明にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置は、正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(3n>2y>2n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算装置であって、剰余演算の対象となる被剰余数C及び剰余数pを入力する剰余演算入力部と、入力された被剰余数Cの下位yビットであるClに対して剰余数pを用いた(数17)に示すモンゴメリ乗算を実行する第一モンゴメリ乗算部と、第一モンゴメリ乗算部における演算結果L1を保存する第一モンゴメリ乗算結果保存部と、入力された被剰余数Cの上位(2n−y)ビットであるChに対して剰余数pを用いた(数18)に示すモンゴメリ乗算を実行する第二モンゴメリ乗算部と、第二モンゴメリ乗算部における演算結果を保存する第二モンゴメリ乗算結果保存部と、第二モンゴメリ乗算結果保存部に保存されている演算結果を新たな被剰余数L2’として、剰余数pを用いた(数19)に示すモンゴメリ乗算を実行する第三モンゴメリ乗算部と、第三モンゴメリ乗算部における乗算結果L2を保存する第三モンゴメリ乗算結果保存部と、第一モンゴメリ乗算結果保存部に保存されている演算結果L1と第三モンゴメリ乗算結果保存部に保存されている演算結果L2とを加算する演算結果加算部と、演算結果加算部における加算結果と剰余数pの大小を判定し、剰余数pよりも大きければ、加算結果から剰余数pを減算して、調整結果L3を保存する加算結果調整部と、加算結果調整部における演算結果L3に対して剰余数pを用いた(数20)に示すモンゴメリ乗算を実行する第四モンゴメリ乗算部と、第四モンゴメリ乗算部における乗算結果Cpを保存する第四モンゴメリ乗算結果保存部とを含み、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とする。
【0021】
【数17】
L1=Mont_mul(Cl,1,2y,p)
【0022】
【数18】
L2’=Mont_mul(Ch,2(2n-y)/22y,2(2n-y)/2y,p)
【0023】
【数19】
L2=Mont_mul(L2’,22ymod p,2y,p)
【0024】
【数20】
Cp=Mont_mul(L3,22ymod p,2y,p)
かかる構成によっても、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算を行うことができることから、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【0025】
また、本発明にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置は、nビット(nは自然数)の正の整数a、bを乗算の対象として入力する乗算入力部と、(数21)に示すモンゴメリ乗算を実行する第五モンゴメリ乗算部と、第五モンゴメリ乗算部における演算結果a*bを保存する第五モンゴメリ乗算結果保存部をさらに含み、モンゴメリ乗算と加減算を行うことのみでaとbの乗算を行うことができることが好ましい。
【0026】
【数21】
a*b=Mont_mul(a,b,22n,22n−1)
比較的演算処理負荷の大きい乗算についても、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて行うことができることから、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となるからである。
【0027】
また、本発明は、上記のようなモンゴメリ乗算を用いるコプロセッサを使用する演算装置の機能をコンピュータの処理ステップとして実行するソフトウェアを特徴とするものであり、具体的には、正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数22)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算方法であって、剰余演算の対象となる被剰余数C及び剰余数pを入力する工程と、(数22)における最も次数の高い第一の被剰余値Csを保存する工程と、被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに初期値から1だけ減算してカウントする工程と、保存されている第一の被剰余値Csに対して剰余数pを用いて(数23)に示すモンゴメリ乗算を実行する工程と、モンゴメリ乗算の演算結果を保存する工程と、保存されているモンゴメリ乗算の演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算する工程と、加算による演算結果を保存する工程と、保存されている加算による演算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する工程と、判定する工程における判定結果に応じて、保存されている加算による演算結果に対して、それぞれ減算による補正をする工程と、補正による演算結果を保存する工程とを含み、(数22)における全ての次数における被剰余値について、カウンタ部における被剰余値の次数sが1になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うモンゴメリ乗算を用いるコプロセッサを使用する演算方法並びにそのような方法を具現化するコンピュータ実行可能なプログラムであることを特徴とする。
【0028】
【数22】
R=2n
C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
【0029】
【数23】
R=2n
a=Cs
b=R2mod p
Mont_mul(a,b,R,p)=a*b*R-1(mod p)
かかる構成により、コンピュータ上へ当該プログラムをロードさせ実行することで、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算を行うことができることから、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することができるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現することが可能となる。
【0030】
【発明の実施の形態】
(実施の形態1)
以下、本発明の実施の形態1にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置について、図面を参照しながら説明する。図2は本発明の実施の形態1にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図である。
【0031】
図2において、11は剰余演算入力部を示しており、被剰余数Cと剰余数pを入力することになる。本実施の形態1においては、被剰余数Cが2n進数で表すことができるものとする。すなわち、被剰余数Cが(数24)のように表すことができるものとし、最も次数の高いものをCsとする。
【0032】
【数24】
R=2n
C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
次に、12はカウンタ部であり、上述した被剰余数Cが2n進数で表した場合の次数sをカウンタとして用い、繰り返し演算を1回行うごとに‘1’ずつ減算していき、sが1になるまで繰り返すようにするものである。sが0(ゼロ)に到達した時点におけるCpの値が求める剰余演算値となる。
【0033】
また、13は第一記憶部を示しており、入力された被剰余数C及び剰余数p、さらには被剰余数Cを2n進数で表した数値が記憶されている。そして、かかる数値を用いてモンゴメリ乗算を行うことになる。
【0034】
14はモンゴメリ乗算部を示している。本実施の形態1においては、モンゴメリ乗算部14で行われるモンゴメリ乗算は、(数25)で表される演算である。(数25)においては、a≦R,b≦R,a*b<R*pであることが前提条件となる。
【0035】
【数25】
a=Cs
b=R2mod p
Mont_mul(a,b,R,p)=a*b*R-1(mod p)
なお、(数25)によって演算されるモンゴメリ乗算の結果については、次のステップで用いるために第二記憶部15に保存しておくことになる。
【0036】
次に16は加算部を示しており、第二記憶部15に保存されているモンゴメリ乗算の演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算するものである。これは、以下に示すような演算を実行するためである。説明を簡単にするために、ここでは被剰余数Cが(数26)で表された場合について説明する。
【0037】
【数26】
R=2n
C=Cs*R2+C(s-1)*R+C0
この場合、C=(Cs*R+C(s-1))*R+C0と変形することができるので、剰余演算値Cp=C mod pは(数27)のように表すことができる。
【0038】
【数27】
C2’=(Cs*R)mod p
C1’=(((Cs*R)mod p)+C(s-1))mod p
Cp=(((((Cs*R)mod p)+C(s-1))mod p)*R)mod p+C0)mod p
すなわち、
C1’=(C2’+C(s-1))mod p
Cp=(C1’*R)mod p
したがって、(数27)においてC2’が(数25)に示すモンゴメリ乗算で表すことができることから、C1’を求めるには、モンゴメリ乗算の演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算することになるのである。そして、加算部16における演算結果は第三記憶部17に保存されることになる。
【0039】
次に、18は条件判定部を示しており、モンゴメリ乗算における制約条件より、保存されている加算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する。そして、補正演算部19においては、条件判定部18における判定結果に応じてC1’に対して減算による補正が行われる。
【0040】
すなわち、条件判定部18における判定に応じて、加算結果が剰余数pの2倍以上である場合、剰余数p以上であり、かつ剰余数pの2倍より小さい場合、あるいは剰余数pより小さい場合のそれぞれに対して、(C1’−2p)、(C1’−p)、C1’と補正することにより、C1’を求めることになる。なお、補正演算結果については、補正演算結果保存部20に保存することになる。
【0041】
そして、C1’が求まると、カウンタ部12へ戻ってカウンタsが減算されるとともに、(数27)においてCpが(数25)に示すモンゴメリ乗算と同様に(数28)で表すことができることから、Cpを求めるために、C1’を用いた(数28)に示すモンゴメリ乗算をモンゴメリ乗算部14で行うことになる。
【0042】
【数28】
a=C1’
b=R2mod p
Mont_mul(a,b,R,p)=a*b*R-1(mod p)
そして、C1’と同様に、加算部16において次に次数の高い第二の被剰余値C0を加算し、加算結果について条件判定部18を用いて、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する。そして、条件判定部18における判定に応じて、モンゴメリ乗算の演算結果が剰余数pの2倍以上である場合、剰余数p以上であり、かつ剰余数pの2倍より小さい場合、あるいは剰余数pより小さい場合のそれぞれに対して、(Cp−2p)、(Cp−p)、Cpと補正することにより、最終的なCpを求めることができることになる。なお、最終的な補正演算結果についても、補正演算結果保存部20に保存することになる。
【0043】
このような演算を繰り返し行うことで、次数が高い任意の被剰余数Cについてもモンゴメリ乗算と加減算を行うことのみで剰余数pによる剰余演算を行うことができることになる。
【0044】
次に、本発明の実施の形態1にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れについて説明する。図3に本発明の実施の形態1にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れ図を示す。
【0045】
まず図3において、被剰余数Cと剰余数pを入力する(ステップS301)。ここでは、被剰余数Cが2n進数で表すことができるものとする。すなわち、被剰余数Cが(数29)のように表すことができるものとし、最も次数の高いものをCsとする。
【0046】
【数29】
R=2n
C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
次に、初期値として最も次数が高い項であるCsを演算の対象とする(ステップS302)。そして、次数を1ずつインクリメントしていくループ演算を行うことになる(ステップS303)。ここでは、先に次数を‘1’だけインクリメントしてから、以降の演算を行うようにしているので、ループ演算の終了時にはsが‘0’(ゼロ)となる。
【0047】
次に、(数30)に示すモンゴメリ乗算を行う(ステップS304)。そして、モンゴメリ乗算の演算結果に、1つだけ低い次数の項を加算する(ステップS305)。
【0048】
【数30】
t=Mont_mul(t,R2mod p,R,p)
そして、加算結果について剰余数pとの大小比較を行い(ステップS306、S308)、減算による補正を行う(ステップS307、S309)。すなわち、加算結果が剰余数pの2倍よりも大きい場合には(ステップS306:Yes)、2pだけ減算し(ステップS308)、加算結果が剰余数pよりも大きい場合には(ステップS307:Yes)、pだけ減算することになる(ステップS309)。
【0049】
以上の演算処理を繰り返し行い、最終的に次数sが‘0’(ゼロ)になった時点における演算結果を、求める剰余演算値Cpとして出力することになる(ステップS310)。
【0050】
以上のように本実施の形態1によれば、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算を行うことができることから、図1に示すような処理負荷の大きい剰余ルーチン7を必要とせず、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【0051】
(実施の形態2)
次に、本発明の実施の形態2にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置について、図面を参照しながら説明する。図4は本発明の実施の形態2にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図である。
【0052】
図4において、11は実施の形態1と同様に剰余演算入力部を示しており、被剰余数Cと剰余数pを入力することになる。本実施の形態2においては、被剰余数Cが2n(nは自然数)ビットであるのに対して、剰余数pがyビット(y>n)である場合を想定している。
【0053】
また、41は第一モンゴメリ乗算部を示しており、(数31)に示すモンゴメリ乗算を行うものである。なお、第一モンゴメリ乗算部41における演算結果を次の工程で用いることから、演算結果については第一モンゴメリ乗算結果保存部42に保存しておくことになる。
【0054】
【数31】
C’=Mont_mul(C,2y,22n,p)
次に、43は第二モンゴメリ乗算部を示しており、第一モンゴメリ乗算結果保存部に保存されている演算結果を新たな被剰余数C’として、剰余数pを用いた(数32)に示すモンゴメリ乗算を実行することになる。
【0055】
【数32】
Cp=Mont_mul(C’,22nmod p,2y,p)
まず、第一モンゴメリ乗算部41では、(数31)に基づいて(数33)に示すようにC’を導出することができる。
【0056】
【数33】
Figure 0003842641
そして、算出されたC’を新たな被剰余数として、剰余数pを用いた(数32)に示すモンゴメリ乗算を実行すると、(数34)に示すように、剰余演算値Cpを求めることができる。
【0057】
【数34】
Figure 0003842641
また、第二モンゴメリ乗算部43における演算結果については、第二モンゴメリ乗算結果保存部44に保存され、出力されることになる。以上の手順で演算処理を行うことにより、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことができるようになる。
【0058】
次に、本発明の実施の形態2にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れについて説明する。図5に本発明の実施の形態2にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れ図を示す。
【0059】
図5において、まず被剰余数Cと剰余数pを入力する(ステップS501)。ここでは、被剰余数Cが2nビットであるのに対して、剰余数pがyビット(2n>y≧n)である場合を想定している。もちろん一般的な公開鍵方式のように、公開鍵Nに対して秘密鍵p及びqがある場合において、Nのビット数がp及びqのビット数の和に等しく、かつpのビット数とqのビット数が等しい場合についても含まれることになる。
【0060】
次に、(数35)に示すようなモンゴメリ乗算を行い(ステップS502)、演算結果を用いて(数36)に示すモンゴメリ乗算を行うことになる(ステップS503)。
【0061】
【数35】
t=Mont_mul(C,2y,22n,p)
【0062】
【数36】
t=Mont_mul(t,22nmod p,2y,p)
以上の演算処理を実行することで、最終的に求まった演算結果を、求める剰余値Cpとして出力することになる(ステップS504)。
【0063】
以上のように本実施の形態2によれば、剰余数が被剰余数の半分以上のビット数で構成されている場合であっても、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算を行うことができることから、図1に示すような処理負荷の大きい剰余ルーチン7を必要とせず、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【0064】
(実施の形態3)
次に、本発明の実施の形態3にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置について、図面を参照しながら説明する。図6は本発明の実施の形態3にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図である。
【0065】
図6において、11は実施の形態1及び2と同様に剰余演算入力部を示しており、被剰余数Cと剰余数pを入力することになる。本実施の形態3においては、被剰余数Cが2n(nは自然数)ビットであるのに対して、剰余数pがyビット(3n>2y>2n)である場合を想定しており、実施の形態2の場合について、より一般的にしたものである。
【0066】
ここで、入力された被剰余数Cの下位yビットの値をCl、上位(2n−y)ビットの値をChとする。したがって、C=(Cl+Ch*2y)が成立することになる。
【0067】
次に、61は第一モンゴメリ乗算部を示しており、被剰余数Cの下位yビットの値をClについて剰余数pを用いた(数37)に示すモンゴメリ乗算を実行するものである。
【0068】
【数37】
L1=Mont_mul(Cl,1,2y,p)
=Cl*2-ymod p
なお、第一モンゴメリ乗算部61において演算された結果L1については、第一モンゴメリ乗算結果保存部62に保存されることになる。
【0069】
一方、63は第二モンゴメリ乗算部を示しており、剰余数Cの上位(2n−y)ビットであるChについて剰余数pを用いた(数38)に示すモンゴメリ乗算を実行するものである。
【0070】
【数38】
Figure 0003842641
そして、第二モンゴメリ乗算部63における演算結果を第二モンゴメリ乗算結果保存部64に保存した後、第三モンゴメリ乗算部65において、当該保存されている演算結果を新たな被剰余数L2’として、剰余数pを用いた(数39)に示すモンゴメリ乗算を実行することになる。
【0071】
【数39】
Figure 0003842641
なお、第三モンゴメリ乗算部65における乗算結果L2については、第三モンゴメリ乗算結果保存部66において保存されることになる。
【0072】
次に、67は演算結果加算部を示しており、第一モンゴメリ乗算結果保存部62に保存されている演算結果L1と第三モンゴメリ乗算結果保存部66に保存されている演算結果L2とを加算するものである。
【0073】
そして、68は加算結果判定部を示しており、演算結果加算部66における加算結果と剰余数pの大小を判定するものである。そして、加算結果判定部68において、加算結果が剰余数pよりも大きいと判定された場合には、加算結果調整部69において、当該加算結果から剰余数pを減算することにで、調整結果L3を保存することになる。
【0074】
そして最後に、70は第四モンゴメリ乗算部を示しており、加算結果調整部69における演算結果L3に対して剰余数pを用いた(数40)に示すモンゴメリ乗算を実行するものである。第四モンゴメリ乗算部70における乗算結果Cpについては、第四モンゴメリ乗算結果保存部71に保存されて出力されることになる。
【0075】
【数40】
Figure 0003842641
(数40)において、括弧内は被剰余数Cそのものであることから、このような手順を経ることにより、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算C mod pを行うことが可能となる。
【0076】
次に、本発明の実施の形態3にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れについて説明する。図7に本発明の実施の形態3にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れ図を示す。
【0077】
図7において、まず被剰余数Cと剰余数pを入力する(ステップS701)。ここでは、被剰余数Cが2nビットであるのに対して、剰余数pがyビット(3n>2y>2n)である場合を想定している。ここで入力された被剰余数Cの下位yビットの値をCl、上位(2n−y)ビットの値をChとする。
【0078】
次に、入力された被剰余数Cの下位yビットの値をClについて、(数41)に示すようなモンゴメリ乗算を行う(ステップS702)。
【0079】
【数41】
t1=Mont_mul(Cl,1,2y,p)
一方、入力された被剰余数Cの上位(2n−y)ビットの値をChについては、まず(数42)に示すようなモンゴメリ乗算を行い(ステップS703)、その後、(数42)の演算結果を用いて、(数43)に示すようなモンゴメリ乗算を行う(ステップS704)。
【0080】
【数42】
t2=Mont_mul(Ch,2(2n-y)/22y,2(2n-y)/2y,p)
【0081】
【数43】
t2=Mont_mul(t2,22ymod p,2y,p)
次に、(数41)及び(数43)で算出されたt1とt2を加算し(ステップS705)、加算された結果であるtと剰余数pの大小を判定する(ステップS706)。そして、加算結果tが剰余数pよりも大きいと判定された場合(ステップS706:Yes)、当該加算結果tから剰余数pを減算する補正を行うことになる(ステップS707)。
【0082】
そして最後に、補正された演算結果tに対して剰余数pを用いた(数44)に示すモンゴメリ乗算を実行する(ステップS708)。
【0083】
【数44】
t=Mont_mul(t,22ymod p,2y,p)
以上の演算処理を実行することで、最終的に求まった演算結果を、求める剰余演算値Cpとして出力することになる(ステップS709)。
【0084】
以上のように本実施の形態3によれば、剰余数が被剰余数のちょうど半分のビット数で構成されていない場合であっても、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算を行うことができることから、図1に示すような処理負荷の大きい剰余ルーチン7を必要とせず、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【0085】
(実施の形態4)
次に、本発明の実施の形態4にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置について、図面を参照しながら説明する。図8は本発明の実施の形態4にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図である。本実施の形態4においては、比較的処理負荷の大きい乗算をモンゴメリ乗算と加減算で実現する点に特徴を有する。
【0086】
図8において、81は乗算入力部を示しており、乗算の対象となる自然数aとbを入力するものである。本実施の形態4においては、乗算の対象となる自然数aとbが、ともにn(nは自然数)ビットである場合について説明する。
【0087】
次に、82は第五モンゴメリ乗算部を示しており、入力された自然数aとbを用いて、(数45)に示すモンゴメリ乗算を実行するものである。
【0088】
【数45】
Figure 0003842641
(数45)において、a<22n、b<22nであることから、a*bについては、(a*b)≦(22n−1)が成立することは自明である。また、2-2n=1mod(22n−1)であることから、(a*b)≦(22n−1)である限り、(数46)においてM=a*bとなる。したがって、(数45)の右辺は乗算(a*b)の演算結果を表すことになることから、第五モンゴメリ乗算部におけるモンゴメリ乗算を行うことで乗算の解を求めることが可能となる。
【0089】
そして、第五モンゴメリ乗算部82における乗算結果については、第五モンゴメリ乗算結果保存部83に保存されて出力されることになる。
【0090】
次に、本発明の実施の形態4にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れについて説明する。図9に本発明の実施の形態4にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムの処理の流れ図を示す。
【0091】
図9において、まず乗算の対象となる自然数aとbを入力する(ステップS901)。ここでは、自然数aとbは、ともにn(nは自然数)ビットの自然数であるものとする。
【0092】
次に、入力された自然数aとbについて、(数46)に示すようなモンゴメリ乗算を行う(ステップS902)。
【0093】
【数46】
t=Mont_mul(a,b,22n,22n−1)
そして、以上の演算処理を実行することで、最終的に求まった演算結果を、求める乗算結果a*bとして出力することになる(ステップS903)。
【0094】
以上のように本実施の形態4によれば、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、処理負荷の比較的大きい乗算を行うことができることから、図1に示すような処理負荷の大きい乗算ルーチン8を必要とせず、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【0095】
なお、本発明の実施の形態にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を実現するプログラムは、図10に示すように、CD−ROM102−1やフレキシブルディスク102−2等の可搬型記録媒体102だけでなく、通信回線の先に備えられた他の記憶装置101や、コンピュータ103のハードディスクやRAM等の記録媒体104のいずれに記憶されるものであっても良く、プログラム実行時には、プログラムはローディングされ、主メモリ上で実行される。
【0096】
また、本発明の実施の形態にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置により生成されたモンゴメリ乗算の演算結果等についても、図10に示すように、CD−ROM102−1やフレキシブルディスク102−2等の可搬型記録媒体102だけでなく、通信回線の先に備えられた他の記憶装置101や、コンピュータ103のハードディスクやRAM等の記録媒体104のいずれに記憶されるものであっても良く、例えば本発明にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置を利用する際にコンピュータ103により読み取られる。
【0097】
(付記1) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数47)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算装置であって、
剰余演算の対象となる被剰余数C及び剰余数pを入力する剰余演算入力部と、(数47)における最も次数の高い第一の被剰余値Csを保存する第一記憶部と、
被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに前記初期値から1だけ減算してカウントするカウンタ部と、
前記第一記憶部に保存されている前記第一の被剰余値Csに対して剰余数pを用いて(数48)に示すモンゴメリ乗算を実行するモンゴメリ乗算部と、
前記モンゴメリ乗算部における演算結果を保存する第二記憶部と、
前記第二記憶部に保存されている演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算する加算部と、
前記加算部における演算結果を保存する第三記憶部と、
前記第三記憶部に保存されている演算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する条件判定部と、
前記条件判定部における判定結果に応じて、前記第三記憶部に保存されている演算結果に対してそれぞれ減算による補正をする補正演算部と、
前記補正演算部における演算結果を保存する補正演算結果保存部とを含み、
(数47)における全ての次数における被剰余値について、前記カウンタ部における被剰余値の次数sが1になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算装置。
【0098】
【数47】
R=2n
C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
【0099】
【数48】
R=2n
a=Cs
b=R2mod p
Mont_mul(a,b,R,p)=a*b*R-1(mod p)
(付記2) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(y≧n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算装置であって、
剰余演算の対象となる被剰余数C及び剰余数pを入力する剰余演算入力部と、
入力された前記被剰余数Cに対して前記剰余数pを用いた(数49)に示すモンゴメリ乗算を実行する第一モンゴメリ乗算部と、
前記第一モンゴメリ乗算部における演算結果を保存する第一モンゴメリ乗算結果保存部と、
前記第一モンゴメリ乗算結果保存部に保存されている演算結果を新たな被剰余数C’として、前記剰余数pを用いた(数50)に示すモンゴメリ乗算を実行する第二モンゴメリ乗算部と、
前記第二モンゴメリ乗算部における演算結果を保存する第二モンゴメリ乗算結果保存部とを含み、
モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算装置。
【0100】
【数49】
C’=Mont_mul(C,2y,22n,p)
【0101】
【数50】
Cp=Mont_mul(C’,22nmod p,2y,p)
(付記3) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(3n>2y>2n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算装置であって、
剰余演算の対象となる被剰余数C及び剰余数pを入力する剰余演算入力部と、
入力された前記被剰余数Cの下位yビットであるClに対して前記剰余数pを用いた(数51)に示すモンゴメリ乗算を実行する第一モンゴメリ乗算部と、
前記第一モンゴメリ乗算部における演算結果L1を保存する第一モンゴメリ乗算結果保存部と、
入力された前記被剰余数Cの上位(2n−y)ビットであるChに対して前記剰余数pを用いた(数52)に示すモンゴメリ乗算を実行する第二モンゴメリ乗算部と、
前記第二モンゴメリ乗算部における演算結果を保存する第二モンゴメリ乗算結果保存部と、
前記第二モンゴメリ乗算結果保存部に保存されている演算結果を新たな被剰余数L2’として、剰余数pを用いた(数53)に示すモンゴメリ乗算を実行する第三モンゴメリ乗算部と、
前記第三モンゴメリ乗算部における演算結果L2を保存する第三モンゴメリ乗算結果保存部と、
前記第一モンゴメリ乗算結果保存部に保存されている演算結果L1と前記第三モンゴメリ乗算結果保存部に保存されている演算結果L2とを加算する演算結果加算部と、
前記演算結果加算部における加算結果と前記剰余数pの大小を判定し、前記剰余数pよりも大きければ、前記加算結果から前記剰余数pを減算して、調整結果L3を保存する加算結果調整部と、
前記加算結果調整部における演算結果L3に対して前記剰余数pを用いた(数54)に示すモンゴメリ乗算を実行する第四モンゴメリ乗算部と、
前記第四モンゴメリ乗算部における演算結果Cpを保存する第四モンゴメリ乗算結果保存部とを含み、
モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算装置。
【0102】
【数51】
L1=Mont_mul(Cl,1,2y,p)
【0103】
【数52】
L2’=Mont_mul(Ch,2(2n-y)/22y,2(2n-y)/2y,p)
【0104】
【数53】
L2=Mont_mul(L2’,22ymod p,2y,p)
【0105】
【数54】
Cp=Mont_mul(L3,22ymod p,2y,p)
(付記4) nビット(nは自然数)の正の整数a、bを乗算の対象として入力する乗算入力部と、
(数55)に示すモンゴメリ乗算を実行する第五モンゴメリ乗算部と、
前記第五モンゴメリ乗算部における演算結果a*bを保存する第五モンゴメリ乗算結果保存部をさらに含み、
モンゴメリ乗算と加減算を行うことのみでaとbの乗算を行うことができる付記1から3のいずれか一項に記載のモンゴメリ乗算を用いるコプロセッサを使用する演算装置。
【0106】
【数55】
a*b=Mont_mul(a,b,22n,22n−1)
(付記5) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数56)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算方法であって、
剰余演算の対象となる被剰余数C及び剰余数pを入力する工程と、
(数56)における最も次数の高い第一の被剰余値Csを保存する工程と、
被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに前記初期値から1だけ減算してカウントする工程と、
保存されている前記第一の被剰余値Csに対して剰余数pを用いて(数57)に示すモンゴメリ乗算を実行する工程と、
前記モンゴメリ乗算の演算結果を保存する工程と、
保存されている前記モンゴメリ乗算の演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算する工程と、
加算による演算結果を保存する工程と、
保存されている前記加算による演算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する工程と、
前記判定する工程における判定結果に応じて、保存されている前記加算による演算結果に対して、それぞれ減算による補正をする工程と、
前記補正による演算結果を保存する工程とを含み、
(数56)における全ての次数における被剰余値について、前記カウンタ部における被剰余値の次数sが1になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算方法。
【0107】
【数56】
R=2n
C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
【0108】
【数57】
R=2n
a=Cs
b=R2mod p
Mont_mul(a,b,R,p)=a*b*R-1(mod p)
(付記6) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(y≧n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算方法であって、
剰余演算の対象となる被剰余数C及び剰余数pを入力する工程と、
入力された前記被剰余数Cに対して前記剰余数pを用いた(数58)に示す第一のモンゴメリ乗算を実行する工程と、
前記第一のモンゴメリ乗算における演算結果を保存する工程と、
保存されている前記第一のモンゴメリ乗算の演算結果を新たな被剰余数C’として、前記剰余数pを用いた(数59)に示す第二のモンゴメリ乗算を実行する工程と、
前記第二のモンゴメリ乗算における演算結果を保存する工程とを含み、
モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算方法。
【0109】
【数58】
C’=Mont_mul(C,2y,22n,p)
【0110】
【数59】
Cp=Mont_mul(C’,22nmod p,2y,p)
(付記7) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(3n>2y>2n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算方法であって、
剰余演算の対象となる被剰余数C及び剰余数pを入力する工程と、
入力された前記被剰余数Cの下位yビットであるClに対して前記剰余数pを用いた(数60)に示す第一のモンゴメリ乗算を実行する工程と、
前記第一のモンゴメリ乗算における演算結果L1を保存する工程と、
入力された前記被剰余数Cの上位(2n−y)ビットであるChに対して前記剰余数pを用いた(数61)に示す第二のモンゴメリ乗算を実行する工程と、
前記第二のモンゴメリ乗算における演算結果を保存する工程と、
保存されている前記第二のモンゴメリ乗算における演算結果を新たな被剰余数L2’として、剰余数pを用いた(数62)に示す第三のモンゴメリ乗算を実行する工程と、
前記第三のモンゴメリ乗算における演算結果L2を保存する工程と、
保存されている前記第一のモンゴメリ乗算における演算結果L1と前記第三のモンゴメリ乗算における演算結果L2とを加算する工程と、
前記加算による演算結果と前記剰余数pの大小を判定し、前記剰余数pよりも大きければ、前記加算による演算結果から前記剰余数pを減算して、調整結果L3を保存する工程と、
前記調整結果L3に対して前記剰余数pを用いた(数63)に示す第四のモンゴメリ乗算を実行する工程と、
前記第四のモンゴメリ乗算部における演算結果Cpを保存する工程とを含み、
モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算方法。
【0111】
【数60】
L1=Mont_mul(Cl,1,2y,p)
【0112】
【数61】
L2’=Mont_mul(Ch,2(2n-y)/22y,2(2n-y)/2y,p)
【0113】
【数62】
L2=Mont_mul(L2’,22ymod p,2y,p)
【0114】
【数63】
Cp=Mont_mul(L3,22ymod p,2y,p)
(付記8) nビット(nは自然数)の正の整数a、bを乗算の対象として入力する工程と、
(数64)に示す第五のモンゴメリ乗算を実行する工程と、
前記第五のモンゴメリ乗算における演算結果a*bを保存する工程をさらに含み、
モンゴメリ乗算と加減算を行うことのみでaとbの乗算を行うことができる付記5から7のいずれか一項に記載のモンゴメリ乗算を用いるコプロセッサを使用する演算方法。
【0115】
【数64】
a*b=Mont_mul(a,b,22n,22n−1)
(付記9) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数65)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算方法を具現化するコンピュータ実行可能なプログラムであって、
剰余演算の対象となる被剰余数C及び剰余数pを入力するステップと、
(数65)における最も次数の高い第一の被剰余値Csを保存するステップと、
被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに前記初期値から1だけ減算してカウントするステップと、
保存されている前記第一の被剰余値Csに対して剰余数pを用いて(数66)に示すモンゴメリ乗算を実行するステップと、
前記モンゴメリ乗算の演算結果を保存するステップと、
保存されている前記モンゴメリ乗算の演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算するステップと、
加算による演算結果を保存するステップと、
保存されている前記加算による演算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定するステップと、
前記判定するステップにおける判定結果に応じて、保存されている前記加算による演算結果に対して、それぞれ減算による補正をするステップと、
前記補正による演算結果を保存するステップとを含み、
(数65)における全ての次数における被剰余値について、前記カウンタ部における被剰余値の次数sが1になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするコンピュータ実行可能なプログラム。
【0116】
【数65】
R=2n
C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
【0117】
【数66】
R=2n
a=Cs
b=R2mod p
Mont_mul(a,b,R,p)=a*b*R-1(mod p)
(付記10) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(y≧n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算方法を具現化するコンピュータ実行可能なプログラムであって、
剰余演算の対象となる被剰余数C及び剰余数pを入力するステップと、
入力された前記被剰余数Cに対して前記剰余数pを用いた(数67)に示す第一のモンゴメリ乗算を実行するステップと、
前記第一のモンゴメリ乗算における演算結果を保存するステップと、
保存されている前記第一のモンゴメリ乗算の演算結果を新たな被剰余数C’として、前記剰余数pを用いた(数68)に示す第二のモンゴメリ乗算を実行するステップと、
前記第二のモンゴメリ乗算における演算結果を保存するステップとを含み、
モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするコンピュータ実行可能なプログラム。
【0118】
【数67】
C’=Mont_mul(C,2y,22n,p)
【0119】
【数68】
Cp=Mont_mul(C’,22nmod p,2y,p)
(付記11) 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cが2nビット(nは自然数)であるのに対し、剰余数pがyビット(3n>2y>2n)であるモンゴメリ乗算を用いるコプロセッサを使用する演算方法を具現化するコンピュータ実行可能なプログラムであって、
剰余演算の対象となる被剰余数C及び剰余数pを入力するステップと、
入力された前記被剰余数Cの下位yビットであるClに対して前記剰余数pを用いた(数69)に示す第一のモンゴメリ乗算を実行するステップと、
前記第一のモンゴメリ乗算における演算結果L1を保存するステップと、
入力された前記被剰余数Cの上位(2n−y)ビットであるChに対して前記剰余数pを用いた(数70)に示す第二のモンゴメリ乗算を実行するステップと、
前記第二のモンゴメリ乗算における演算結果を保存するステップと、
保存されている前記第二のモンゴメリ乗算における演算結果を新たな被剰余数L2’として、剰余数pを用いた(数71)に示す第三のモンゴメリ乗算を実行するステップと、
前記第三のモンゴメリ乗算における演算結果L2を保存するステップと、
保存されている前記第一のモンゴメリ乗算における演算結果L1と前記第三のモンゴメリ乗算における演算結果L2とを加算するステップと、
前記加算による演算結果と前記剰余数pの大小を判定し、前記剰余数pよりも大きければ、前記加算による演算結果から前記剰余数pを減算して、調整結果L3を保存するステップと、
前記調整結果L3に対して前記剰余数pを用いた(数72)に示す第四のモンゴメリ乗算を実行するステップと、
前記第四のモンゴメリ乗算部における演算結果Cpを保存するステップとを含み、
モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするコンピュータ実行可能なプログラム。
【0120】
【数69】
L1=Mont_mul(Cl,1,2y,p)
【0121】
【数70】
L2’=Mont_mul(Ch,2(2n-y)/22y,2(2n-y)/2y,p)
【0122】
【数71】
L2=Mont_mul(L2’,22ymod p,2y,p)
【0123】
【数72】
Cp=Mont_mul(L3,22ymod p,2y,p)
(付記12) nビット(nは自然数)の正の整数a、bを乗算の対象として入力するステップと、
(数73)に示す第五のモンゴメリ乗算を実行するステップと、
前記第五のモンゴメリ乗算における演算結果a*bを保存するステップをさらに含み、
モンゴメリ乗算と加減算を行うことのみでaとbの乗算を行うことができる付記9から11のいずれか一項に記載のモンゴメリ乗算を用いるコプロセッサを使用する演算方法を具現化するコンピュータ実行可能なプログラム。
【0124】
【数73】
a*b=Mont_mul(a,b,22n,22n−1)
【0125】
【発明の効果】
以上のように本発明にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置によれば、コプロセッサに含まれているモンゴメリ乗算回路と、演算処理負荷の比較的小さい加減算回路のみを用いて、剰余演算や乗算を行うことができることから、ファームウェア全体の容量を最小限に止めることができ、演算処理負荷も抑制することが可能となる。
【図面の簡単な説明】
【図1】 従来のモンゴメリ乗算を用いる演算装置の構成図
【図2】 本発明の実施の形態1にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図
【図3】 本発明の実施の形態1にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置における処理の流れ図
【図4】 本発明の実施の形態2にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図
【図5】 本発明の実施の形態2にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置における処理の流れ図
【図6】 本発明の実施の形態3にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図
【図7】 本発明の実施の形態3にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置における処理の流れ図
【図8】 本発明の実施の形態4にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置の構成図
【図9】 本発明の実施の形態4にかかるモンゴメリ乗算を用いるコプロセッサを使用する演算装置における処理の流れ図
【図10】 コンピュータ環境の例示図
【符号の説明】
1 RSA−CRTルーチン
2 RSAルーチン
3 インタフェース
4 べき乗剰余ルーチン
5 モンゴメリ乗算ルーチン
6 加減算ルーチン
7 剰余ルーチン
8 乗算ルーチン
11 剰余演算入力部
12 カウンタ部
13 第一記憶部
14 モンゴメリ乗算部
15 第二記憶部
16 加算部
17 第三記憶部
18 条件判定部
19 補正演算部
20 補正演算結果保存部
41、61 第一モンゴメリ乗算部
42、62 第一モンゴメリ乗算結果保存部
43、63 第二モンゴメリ乗算部
44、64 第二モンゴメリ乗算結果保存部
65 第三モンゴメリ乗算部
66 第三モンゴメリ乗算結果保存部
67 演算結果部
68 加算結果判定部
69 加算結果調整部
70 第四モンゴメリ乗算部
71 第四モンゴメリ乗算結果保存部
81 乗算入力部
82 第五モンゴメリ乗算部
83 第五モンゴメリ乗算結果保存部
101 回線先の記憶装置
102 CD−ROMやフレキシブルディスク等の可搬型記録媒体
102−1 CD−ROM
102−2 フレキシブルディスク
103 コンピュータ
104 コンピュータ上のRAM/ハードディスク等の記録媒体

Claims (3)

  1. 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数1)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算装置であって、
    剰余演算の対象となる被剰余数C及び剰余数pを入力する剰余演算入力部と、
    (数1)における最も次数の高い第一の被剰余値CSを保存する第一記憶部と、
    被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに前記初期値から1だけ減算してカウントするカウンタ部と、
    前記第一記憶部に保存されている前記第一の被剰余値Csに対して剰余数pを用いて(数2)に示すモンゴメリ乗算を実行するモンゴメリ乗算部と、
    前記モンゴメリ乗算部における演算結果を保存する第二記憶部と、
    前記第二記憶部に保存されている演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算する加算部と、
    前記加算部における演算結果を保存する第三記憶部と、
    前記第三記憶部に保存されている加算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する条件判定部と、
    前記条件判定部における判定結果に応じて、前記第三記憶部に保存されている演算結果に対してそれぞれ減算による補正をする補正演算部と、
    前記補正演算部における演算結果を保存する補正演算結果保存部とを含み、
    (数1)における全ての次数における被剰余値について、前記カウンタ部における被剰余値の次数sが0(ゼロ)になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算装置。
    [数1]
    R=2n
    C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
    [数2]
    R=2n
    a=Cs
    b=R2mod p
    Mont_mul(a,b,R,p)=a*b*R-1(mod p)
  2. 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数9)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算方法であって、
    剰余演算の対象となる被剰余数C及び剰余数pを入力する工程と、
    (数9)における最も次数の高い第一の被剰余値Csを保存する工程と、
    被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに前記初期値から1だけ減算してカウントする工程と、
    保存されている前記第一の被剰余値Csに対して剰余数pを用いて(数10)に示すモンゴメリ乗算を実行する工程と、
    前記モンゴメリ乗算の演算結果を保存する工程と、
    保存されている前記モンゴメリ乗算の演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算する工程と、
    加算による演算結果を保存する工程と、
    保存されている前記加算による演算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定する工程と、
    前記判定する工程における判定結果に応じて、保存されている前記加算による演算結果に対して、それぞれ減算による補正をする工程と、
    前記補正による演算結果を保存する工程とを含み、
    (数9)における全ての次数における被剰余値について、前記カウンタ部における被剰余値の次数sが1になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするモンゴメリ乗算を用いるコプロセッサを使用する演算方法。
    [数9]
    R=2n
    C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
    [数10]
    R=2n
    a=Cs
    b=R2mod p
    Mont_mul(a,b,R,p)=a*b*R-1(mod p)
  3. 正の整数C、pを入力として、Cのpによる剰余演算C mod pを実行して剰余演算値Cpを求める場合において、剰余演算の対象となる被剰余数Cを(数11)に示すように2n進数で表現するモンゴメリ乗算を用いるコプロセッサを使用する演算方法を具現化するコンピュータ実行可能なプログラムであって、
    剰余演算の対象となる被剰余数C及び剰余数pを入力するステップと、
    (数11)における最も次数の高い第一の被剰余値Csを保存するステップと、
    被剰余値の次数のうち最も高い次数sを初期値として、繰り返し演算をするごとに前記初期値から1だけ減算してカウントするステップと、
    保存されている前記第一の被剰余値Csに対して剰余数pを用いて(数12)に示すモンゴメリ乗算を実行するステップと、
    前記モンゴメリ乗算の演算結果を保存するステップと、
    保存されている前記モンゴメリ乗算の演算結果に、次に次数の高い第二の被剰余値C(s-1)を加算するステップと、
    加算による演算結果を保存するステップと、
    保存されている前記加算による演算結果が、剰余数pの2倍以上か、剰余数p以上であり、かつ剰余数pの2倍より小さいか、あるいは剰余数pより小さいか否かを判定するステップと、
    前記判定するステップにおける判定結果に応じて、保存されている前記加算による演算結果に対して、それぞれ減算による補正をするステップと、
    前記補正による演算結果を保存するステップとを含み、
    (数11)における全ての次数における被剰余値について、前記カウンタ部における被剰余値の次数sが1になるまで同様の演算を繰り返すことで、モンゴメリ乗算と加減算を行うことのみでCのpによる剰余演算を行うことを特徴とするコンピュータ実行可能なプログラム。
    [数11]
    R=2n
    C=Cs*Rs+C(s-1)*R(s-1)+・・・+C1*R+C0
    [数12]
    R=2n
    a=Cs
    b=R2mod p
    Mont_mul(a,b,R,p)=a*b*R-1(mod p)
JP2001389175A 2001-12-21 2001-12-21 モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法 Expired - Fee Related JP3842641B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001389175A JP3842641B2 (ja) 2001-12-21 2001-12-21 モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001389175A JP3842641B2 (ja) 2001-12-21 2001-12-21 モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法

Publications (2)

Publication Number Publication Date
JP2003186397A JP2003186397A (ja) 2003-07-04
JP3842641B2 true JP3842641B2 (ja) 2006-11-08

Family

ID=27597473

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001389175A Expired - Fee Related JP3842641B2 (ja) 2001-12-21 2001-12-21 モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法

Country Status (1)

Country Link
JP (1) JP3842641B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5387291B2 (ja) * 2009-09-29 2014-01-15 富士通株式会社 演算プログラム、演算方法、および演算装置

Also Published As

Publication number Publication date
JP2003186397A (ja) 2003-07-04

Similar Documents

Publication Publication Date Title
US7904498B2 (en) Modular multiplication processing apparatus
US8209369B2 (en) Signal processing apparatus and method for performing modular multiplication in an electronic device, and smart card using the same
Kaihara et al. A hardware algorithm for modular multiplication/division
US8862651B2 (en) Method and apparatus for modulus reduction
CA2592875A1 (en) Accelerated verification of digital signatures and public keys
US20080219438A1 (en) Method and Apparatus for Generating a Public Key in a Manner That Counters Power Analysis Attacks
KR20040067779A (ko) 정보 처리방법
US6609141B1 (en) Method of performing modular inversion
JP3842641B2 (ja) モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法
JP2937982B2 (ja) モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法
JP2004125891A (ja) べき乗剰余演算器
CN111614465B (zh) 基于超奇异同源秘钥封装协议的公钥生成方法和装置
CN209560522U (zh) 获取加解密运算中的中间结果组的硬件装置
Wu An efficient common-multiplicand-multiplication method to the Montgomery algorithm for speeding up exponentiation
US10318245B2 (en) Device and method for determining an inverse of a value related to a modulus
Arazi et al. On calculating multiplicative inverses modulo $2^{m} $
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
KR100194769B1 (ko) 메모리를 사용하여 유한체상에서 역원을 구하는 방법
Kaihara et al. A hardware algorithm for modular multiplication/division based on the extended Euclidean algorithm
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems
Wu et al. Modular arithmetic analyses for RSA cryptosystem
Lu et al. A Multibit Left-Shift Modular Inverse Hardware Algorithm and its Implementation
KR20040037555A (ko) 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템
JP2004151234A (ja) べき乗演算装置
Kong Modular multiplication in the residue number system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060719

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060810

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100818

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110818

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120818

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120818

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130818

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees