JP2020140120A - 演算処理方法、演算処理装置、及び半導体装置 - Google Patents

演算処理方法、演算処理装置、及び半導体装置 Download PDF

Info

Publication number
JP2020140120A
JP2020140120A JP2019036619A JP2019036619A JP2020140120A JP 2020140120 A JP2020140120 A JP 2020140120A JP 2019036619 A JP2019036619 A JP 2019036619A JP 2019036619 A JP2019036619 A JP 2019036619A JP 2020140120 A JP2020140120 A JP 2020140120A
Authority
JP
Japan
Prior art keywords
bit
cpu
multiplication
arithmetic
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019036619A
Other languages
English (en)
Other versions
JP7286239B2 (ja
Inventor
僚介 斎藤
Ryosuke Saito
僚介 斎藤
福島 和彦
Kazuhiko Fukushima
和彦 福島
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2019036619A priority Critical patent/JP7286239B2/ja
Publication of JP2020140120A publication Critical patent/JP2020140120A/ja
Application granted granted Critical
Publication of JP7286239B2 publication Critical patent/JP7286239B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

【課題】nビットモンゴメリ乗算剰余を用いたnビットの整数倍のビット数のモンゴメリ乗算剰余の算出に要する演算時間を短縮する演算処理方法を提供する。【解決手段】CPUと、CPUの命令によりnビットモンゴメリ乗算剰余の算出、又はnビット乗算を切り換えて行う演算器と、メモリと、を備えた演算処理装置において、nビットの整数倍のビット数のモンゴメリ乗算剰余を算出する演算処理方法は、CPUが、メモリから読み出したプログラムに基づき、nビットモンゴメリ乗算剰余、又はnビット乗算のどちらか一方の演算方法を選択するステップS103と、CPUが、選択した演算方法による演算を演算器に実行させるステップS104、又はS105と、を有する。【選択図】図3

Description

本発明は、演算処理方法、演算処理装置、及び半導体装置に関する。
暗号処理分野では、乗算剰余の算出処理が行われる。例えば、非特許文献1〜3には、モンゴメリ乗算剰余について開示されている。非特許文献1には、モンゴメリ乗算剰余の基本的な内容が開示されている。非特許文献1によれば、モンゴメリ乗算剰余の算出には、数回の乗算とシフト演算とが組み合わされる旨記載されている。モンゴメリ乗算剰余は、除算を必要とせず、他の乗算剰余アルゴリズムと比べて極めて高速で実行することが可能である。このため、モンゴメリ乗算剰余は、暗号処理分野において広く利用されている。
非特許文献2〜3には、nビットモンゴメリ乗算剰余を用いて、2nビットモンゴメリ乗算剰余を算出する方法が開示されている。
Montgomery, Peter L. "Modular multiplication without trial division." Mathematics of computation 44.170 (1985): 519-521. Yoshino, Masayuki, Katsuyuki Okeya, and Camille Vuillaume. "Montgomery multiplication with twice the bit-length of multipliers." IEICE transactions on fundamentals of electronics, communications and computer sciences 91.1 (2008): 203-210. Yoshino, Masayuki, Katsuyuki Okeya, and Camille Vuillaume. "Recursive Double-Size Modular Multiplications from Euclidean and Montgomery Multipliers." IEICE transactions on fundamentals of electronics, communications and computer sciences 93.1 (2010): 180-187.
ここで、従来の暗号処理における、nビットモンゴメリ乗算剰余を用いた2nビットモンゴメリ乗算剰余の算出方法について説明する。図16は、暗号処理を行う従来の演算処理装置の構成の一例を示す図である。演算処理装置1001は、CPU(Central Processing Unit)10、演算器1020、メモリ30を備えている。CPU10は、メモリ30に保持されたプログラムを読み出し、プログラムに基づく命令を演算器1020に送信する。また、CPU10は、演算器1020における演算に必要なデータを、メモリ30から読み出し演算器1020に送信する。
演算器1020は、CPU10から受信した命令及びデータに基づき、モンゴメリ乗算剰余算出の演算等を含むマルチ演算(MultMonDiv)を行う。
メモリ30は、RAM(Random Access Memory)等を備え、CPU10で実行するプログラムや、CPU10や演算器1020における演算結果、演算処理装置1001の設定情報等のデータを保持する。
図17は、従来の暗号処理における2nビットモンゴメリ乗算剰余の算出に係るアルゴリズムを示す図である。図18は、マルチ演算のアルゴリズムを示す図である。図19は、図17のアルゴリズムに対応するフロー図である。図17、図19に示すように、2nビットモンゴメリ乗算剰余の算出には、それぞれの入力値に対し、6回のマルチ演算(Step1〜Step6)が順次実行される。そして、各Stepにおける演算結果を用いて、2nビットモンゴメリ乗算剰余が出力値(Output)として算出される。なお、図19における各ステップを示す符号は、後述する図3等と対応している。
図18に示すように、それぞれのマルチ演算(MultMonDiv)では、例えば「x」、「y」、「w」を入力とし、「q」、「r」が出力される。図18に示すように、それぞれのマルチ演算では、1行目及び4行目において、nビットモンゴメリ乗算剰余の算出(MultMon)が行われる。すなわち、2nビットモンゴメリ乗算(2nビットモンゴメリ乗算剰余)の算出には、12回のnビットモンゴメリ乗算剰余の算出を行う必要がある。
図20は、nビットモンゴメリ乗算剰余の算出に係る演算量と、nビット乗算に係る演算量とを比較する図である。図20に示すように、nビットモンゴメリ乗算剰余の算出に要する演算量は、nビット乗算に要する演算量よりも多く、nビットモンゴメリ乗算剰余の算出には、nビット乗算の1.5倍以上の演算時間が必要となる。そうすると、2nビットモンゴメリ乗算剰余の算出には、nビット乗算の18倍以上の演算時間が必要となる。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本明細書には、複数の実施の形態の演算処理方法等が記載されているが、一実施の形態の演算処理方法を述べると、次の通りである。演算処理方法は、CPUと、CPUの命令によりnビットモンゴメリ乗算剰余の算出、又はnビット乗算を切り換えて行う演算器と、メモリと、を備えた演算処理装置において、nビットの整数倍のビット数のモンゴメリ乗算剰余を算出する演算処理方法である。演算処理方法は、CPUが、メモリから読み出したプログラムに基づき、nビットモンゴメリ乗算剰余の算出、又はnビット乗算から演算方法を選択する第1ステップと、CPUが、選択した演算方法による演算を演算器に実行させる第2ステップと、を有する。
一実施の形態によれば、nビットモンゴメリ乗算剰余を用いたnビットの整数倍のビット数のモンゴメリ乗算剰余の算出に要する演算時間を短縮することが可能となる。
図1は、本発明の実施の形態1に係る演算処理装置の構成の一例を示す図である。 図2は、本発明の実施の形態1に係る2nビットモンゴメリ乗算剰余算出のアルゴリズムを例示する図である。 図3は、図2のアルゴリズムに対応するフロー図である。 図4は、本発明の実施の形態1の変形例に係る2nビットモンゴメリ乗算剰余算出のアルゴリズムを例示する図である。 図5は、図4のアルゴリズムに対応するフロー図である。 図6は、本発明の実施の形態2に係る演算処理装置の構成の一例を示す図である。 図7は、本発明の実施の形態3に係る3nビットモンゴメリ乗算剰余算出のアルゴリズムを例示する図である。 図8は、図7のアルゴリズムに対応するフロー図である。 図9は、本発明の実施の形態4に係る演算処理装置の構成の一例を示す図である。 図10は、本発明の実施の形態4におけるマルチ演算とnビット乗算とを並列実行させる手順の一例を示す図である。 図11は、本発明の実施の形態4におけるマルチ演算とnビット乗算とを並列実行させる手順の他の例を示す図である。 図12は、本発明の実施の形態5に係る演算処理装置の構成の一例を示す図である。 図13は、本発明の実施の形態5に係るマルチ演算のアルゴリズムを例示する図である。 図14は、図13のアルゴリズムに対応するフロー図である。 図15は、図13のアルゴリズムに対応するフロー図である。 図16は、暗号処理を行う従来の演算処理装置の構成の一例を示す図である。 図17は、従来の暗号処理における2nビットモンゴメリ乗算剰余の算出に係るアルゴリズムを示す図である。 図18は、マルチ演算のアルゴリズムを示す図である。 図19は、図17のアルゴリズムに対応するフロー図である。 図20は、nビットモンゴメリ乗算剰余の算出に係る演算量と、nビット乗算に係る演算量とを比較する図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するためのすべての図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は省略する。
(実施の形態1)
本実施の形態では、nビットモンゴメリ乗算剰余の算出を含むマルチ演算(MultMonDiv)と、nビット乗算とを、CPUが適宜選択することにより、2nビットモンゴメリ乗算剰余の算出が行われる。
<演算処理装置の構成>
図1は、本発明の実施の形態1に係る演算処理装置の構成の一例を示す図である。図1は図16に類似しており、演算器1020が演算器20に置き換えられている点が異なる。演算器20は、CPU10の命令により、nビットモンゴメリ乗算剰余の算出(MultMon)と、nビット乗算とを切り換えて実行する。
図2は、本発明の実施の形態1に係る2nビットモンゴメリ乗算剰余算出のアルゴリズムを例示する図である。本実施の形態における2nビットモンゴメリ乗算剰余算出には、図2に示すStep1〜Step6等の演算処理が実行される。図2に示すように、Step1、Step2、Step4、Step6ではnビット乗算が実行され、Step3、Step5ではnビットモンゴメリ乗算剰余の算出や加減算を含むマルチ演算(MultMonDiv)が実行される。
具体的に説明すると、図2のアルゴリズムでは、A=am+a、B=bm+b、N=nm+nを入力として、2nビットの各値{r、q}、{r、q}、(q、r)、{r、q}、(q、r)、{r、q}が算出される。なお、m:=2、M:=m=22nである。a、b、nは各値(A、B、N)における上位ビット(nビット)、a、b、nは各値(A、B、N)における下位ビット(nビット)を示している。また、rは算出された各値の上位ビット(nビット)であり、qは算出された各値の下位ビット(nビット)を示している。
Step1では、[a、b]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step2では、[a+a、b+b]を入力として、これらの乗算が算出される。これにより、2nビットの値{r、q}が算出される。Step3では、[a、b、n]を入力として、マルチ演算(MultMonDiv)が実行される。これにより、2nビットの値(q、r)が算出される。
Step4では、[q、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step5では、[−q+q+r−q、1、n]を入力として、マルチ演算(MultMonDiv)が実行される。これにより、2nビットの値(q、r)が算出される。Step6では、[q、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。
そして、これらの演算結果を用いて、以下の式(1)により、2nビットモンゴメリ乗算剰余が出力値として算出される。
A*B*M−1(mod N)=(r+r−r)m+(q−r+r−r+q−r+r−q) ・・・(1)
<演算処理方法>
図3は、図2のアルゴリズムに対応するフロー図である。図3のフロー図は、ステップS101〜S108を含む。ステップS101では、CPU10は、メモリ30に対してカウント値の初期化を実行し、カウント値を「1」に設定する。ここで、カウント値とは、図2のアルゴリズムにおける処理の進捗状況を識別する値である。詳しくは後述するが、各Stepの処理が完了するごとに、カウント値が更新される。例えば、カウント値が「4」に設定されていれば、図2における処理がStep3まで完了していることが示される。
ステップS102では、図2の各Stepに対応する入力値の準備が行われる。CPU10は、メモリ30から読み出したプログラムに基づき、各Stepの入力値を作成する。例えば、Step1であれば、CPU10は、入力値[a、b]を作成する。また、Step2、5では、CPU10は、加減算を行って入力値を作成する。
ステップS103では、カウント値に応じて、演算方法が選択される。具体的に述べると、カウント値が「3、5」の場合(Yes)、CPU10は、マルチ演算(MultMonDiv)、すなわちnビットモンゴメリ乗算剰余の算出を選択し、ステップS104の処理が実行される。一方、カウント値がそれ以外の値である場合(No)、CPU10は、乗算を選択し、ステップS105の処理が実行される。
CPU10は、ステップS102で作成した入力値を送信するとともに、選択した演算方法を実行するため、演算器20に演算方法を命令する。
例えば、Step1では、カウント値が「1」に設定されているので、CPU10は、乗算を選択する。そして、CPU10は、入力値[a、b]を送信し、演算器20に乗算を行うよう命令する。
ステップS105では、演算器20は、CPU10からの命令に従い、受信した入力値を用いた乗算を行う。例えば、Step1では、演算器20は、入力値[a、b]を用いたnビット乗算を行い、2nビットの値{r、q}を算出する。算出された値は、メモリ30に保持される。
ステップS104では、演算器20におけるnビットモンゴメリ乗算剰余の算出や、CPU10による加減算等の処理が実行される。ステップS104は、図3に示すように、ステップS104a〜S104cを有する。
ステップS104aでは、図18の1行目に対応するnビットモンゴメリ乗算剰余の算出が行われる。CPU10は、読み出したプログラムに基づき、演算器20に対し、nビットモンゴメリ乗算剰余の算出を行うよう命令し、図18に示す入力値[x、y、w]を送信する。入力値は、図2のStep3では[a、b、n]であり、Step5では[−q+q+r−q、1、n]である。CPU10の命令に基づき、演算器20は、入力された値を用いてnビットモンゴメリ乗算剰余の算出を行い、出力値の上位ビットの値rを算出する。ここで算出された値rは、メモリ30に保持される。
ステップS104bでは、図18の4行目に対応するnビットモンゴメリ乗算剰余の算出が行われる。なお、ステップS104bの入力となる図18の2〜3行目の演算は、例えばCPU10において実行される。CPU10は、プログラムに基づき、演算器20に対し、nビットモンゴメリ乗算剰余の算出を行うよう命令し、図18の2〜3行目に対応する値等を入力値として送信する。演算器20は、入力された値を用いてnビットモンゴメリ乗算剰余の算出を行い、出力値の下位ビットの算出用の値r’を算出する。
そして、ステップS104cにおいて、CPU10は、図18の6〜8行目に対応する加算等の各演算を行い、出力値の下位ビットの値qを算出する。そして、CPU10は、出力値として2nビットの値(q、r)を作成する。算出された値は、メモリ30に保持される。
例えば、Step3において、CPU10は、演算器20に対し入力値[a、b、n]に基づくnビットモンゴメリ乗算剰余の算出を2回実行させ、加算等の演算を行って2nビットの値(q、r)を算出する。また、Step5において、CPU10は、演算器20に対し入力値[−q+q+r−q、1、n]に基づくnビットモンゴメリ乗算剰余の算出を2回実行させ、加算等の演算を行って2nビットの値(q、r)を算出する。
ステップS106では、カウント値が「6」であるかどうかが判定される。CPU10は、カウント値が「6」でないと判定した場合(No)、ステップS107において、カウント値を「+1」加算する処理を行う。例えば、Step1の処理が行われた場合、CPU10は、カウント値を1+1=2に更新し、更新したカウント値をメモリ30に保持させる。そして、ステップS102に戻り、Step2以降の処理が続いて実行される。
一方、ステップS106において、CPU10は、カウント値が「6」であると判定した場合(Yes)、Step1〜Step6の処理がすべて完了したと判断し、ステップS108の処理が実行される。ステップS108では、CPU10は、Step1〜Step6における演算結果を用いて出力値を算出する。CPU10は、メモリ30に保持された各演算結果の値を読み出し、式(1)に示す2nビットモンゴメリ乗算剰余を出力値として算出する。算出された出力値は、メモリ30に保持されてもよいし、外部に送信されてもよい。
<本実施の形態による主な効果>
本実施の形態によれば、CPU10は、メモリ30から読み出したプログラムに基づき、nビットモンゴメリ乗算剰余の算出、又はnビット乗算を選択して演算器に実行させる。
この構成によれば、演算時間が長いnビットモンゴメリ乗算剰余を含むマルチ演算の回数を削減し、演算時間が短い乗算が用いられるので、nビットモンゴメリ乗算剰余を用いた2nビットモンゴメリ乗算剰余の算出に係る演算時間を短縮することが可能となる。
削減される演算時間は、nビット乗算とnビットモンゴメリ乗算剰余における演算時間の差によって決まる。具体的に述べると、nビット乗算に対してnビットモンゴメリ乗算剰余の演算時間が遅いほど効果が大きくなる。nビットモンゴメリ乗算剰余がnビット乗算に対してk倍の時間が掛かるとした場合、2nビットモンゴメリ乗算剰余の演算時間は、次の通りとなる。k=3の場合、本実施の形態における演算時間は、従来の約44.4%となる。k=2の場合、本実施の形態における演算時間は、従来の約50%となる。k=1.5の場合、本実施の形態における演算時間は、従来の約55.6%となる。k=1の場合、本実施の形態における演算時間は、従来の約66.7%となる。このように、nビットモンゴメリ乗算剰余の演算時間がnビット乗算の演算時間より長くなると、2nビットモンゴメリ乗算剰余の演算時間の削減効果はより大きくなる。
[変形例]
2nビットモンゴメリ乗算剰余の算出は、図2以外のアルゴリズムでも可能である。そこで、ここでは、図2以外のアルゴリズムを変形例として例示する。図4は、本発明の実施の形態1の変形例に係る2nビットモンゴメリ乗算剰余算出のアルゴリズムを例示する図である。図4のStep1〜Srep5は、図2と同じであるが、図4のStep6がマルチ演算に置き換えられている。図5は、図4のアルゴリズムに対応するフロー図である。
図4のStep6では、[q、n、m−1]を入力として、マルチ演算(MultMonDiv)が実行される。これにより、2nビットの値(q、r)が算出される。出力値である2nビット乗算剰余は、すでに述べた式(1)を用いて算出される。
図5は、図3に対し、ステップS103の処理内容のみが異なる。図4に示すように、Step6においてもマルチ演算が実行される。このため、ステップS103では、カウント値が「3、5、6」の場合(Yes)、CPU10は、マルチ演算(MultMonDiv)を選択し、ステップS104の処理が実行される。一方、カウント値がそれ以外の値「1、2、4」である場合(No)、CPU10は、乗算を選択し、ステップS105の処理が実行される。
本変形例においても、従来の演算方法に比べて2nビットモンゴメリ乗算剰余の演算時間を削減することが可能である。
(実施の形態2)
次に、実施の形態2について説明する。なお、以下では、すでに述べた内容と重複する箇所については、原則として説明を省略する。
図6は、本発明の実施の形態2に係る演算処理装置の構成の一例を示す図である。図6に示す演算処理装置101は、図1の演算器20が演算器120に置き換えられている。演算器120は、CPU10から送信される命令に基づき、nビットモンゴメリ乗算剰余の算出、nビット乗算、及び加減算を切り換えて実行する。
演算器120は、例えば図3のステップS108における出力値の算出を加減算により行う。このように、演算器120は、CPU10が行っていた演算を代わりに実行することができる。また、演算器120は、出力値の算出以外にも、加減算による入力値の算出をCPU10に代わり行ってもよい。
具体的に述べると、図2のStep2において、CPU10は、入力値の算出に必要な値[a、a、b、b]を演算器120に送信し、演算器120に入力値[a+a、b+b]を算出させてもよい。そして、演算器120は、自身が算出した入力値を用いてnビット乗算を実行することができる。
図2、図3におけるその他の場合においても、演算器120は、CPU10に代わり加減算を実行することが可能となる。
本実施の形態によれば、演算器120は、CPU10の命令によりnビットモンゴメリ乗算剰余の算出、nビット乗算、及び加減算を切り換えて行う。この構成によれば、CPU10の負荷が軽減され演算処理装置101における処理が高速化される。また、演算結果を、CPU10に読み出す必要がなくなるので、2nビットモンゴメリ乗算剰余の演算時間がより短縮される。
(実施の形態3)
次に、実施の形態3について説明する。従来手法を用いることにより、2n、4n、8nビット等のモンゴメリ乗算剰余の算出は可能ではあるが、3nビットモンゴメリ乗算剰余の算出には、一旦、4nビットモンゴメリ乗算剰余の算出を行う必要がある。しかし、この方法では、nビットモンゴメリ乗算剰余の算出回数が増え、演算時間が長くなるとともに、4nビットのメモリ領域が必要となる。そこで、本実施の形態では、nビットモンゴメリ乗算剰余やnビット乗算を用いた3nビットモンゴメリ乗算剰余の算出方法について説明する。
図7は、本発明の実施の形態3に係る3nビットモンゴメリ乗算剰余算出のアルゴリズムを例示する図である。本実施の形態における3nビットモンゴメリ乗算剰余算出には、図7のStep1〜Step14等の演算処理が実行される。図7に示すように、Step1〜2、Step4〜8、Step10〜11、Step13〜14ではnビット乗算が実行され、Step3、Step9、Step12ではnビットモンゴメリ乗算剰余の算出や加減算を含むマルチ演算(MultMonDiv)が実行される。このように、本実施の形態では、Step数を増やすことにより、3nビット乗算剰余が直接算出される。
具体的に述べると、図7のアルゴリズムでは、A=a+am+a、B=b+bm+b、N=n+nm+nを入力として、2nビットの各値{r、q}〜{r、q}、(q、r)、{r、q}〜{r、q}、(q、r)、{r、q}〜{r10、q10}、(q11、r11)、{r12、q12}〜{r13、q13}が算出される。なお、m:=2、M:=m=23nである。
Step1では、[a、b]を入力とし、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step2では、[a、b]を入力とし、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step3では、[a、b、n]を入力として、マルチ演算(MultMonDiv)が実行される。これにより、2nビットの値(q、r)が算出される。
Step4では、[a+a、b+b]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step5では、[a+a、b+b]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step6では、[a+a、b+b]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。
Step7では、[q、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step8では、[q、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step9では、[−q+r+q−q、1、n]を入力として、マルチ演算(MultMonDiv)が実行される。これにより、2nビットの値(q、r)が算出される。
Step10では、[q、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r、q}が算出される。Step11では、[q、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r10、q10}が算出される。Step12では、[−q+q−r−r+q+r−q+q−r+r−q10、1、n]を入力として、マルチ演算(MultMonDiv)が実行される。これにより、2nビットの値(q11、r11)が算出される。
Step13では、[q11、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r12、q12}が算出される。Step14では、[q11、n]を入力として、これらの乗算が実行される。これにより、2nビットの値{r13、q13}が算出される。
そして、これらの演算結果を用いて、以下の式(2)により、3nビットモンゴメリ乗算剰余が出力値として算出される。
A*B*M−1(mod N)=(r+r−r12)m+(q−r−r+r+q+r+r−r−q12−r13)m+(−q−r−q+r−r+q+r+q−r+q+r−q−r10+r11−q13) ・・・(2)
図8は、図7のアルゴリズムに対応するフロー図である。図7は、図3に対し、ステップS103、S106の処理内容が異なる。図7に示すように、本実施の形態では、Step3、9、12においてマルチ演算が実行される。このため、図8のステップS103では、カウント値が「3、9、12」の場合(Yes)、CPU10は、マルチ演算(MultMonDiv)を選択し、ステップS104の処理が実行される。一方、カウント値がそれ以外の値「1〜2、4〜8、10〜11、13〜14」である場合(No)、CPU10は、乗算を選択し、ステップS105の処理が実行される。
ステップS106では、カウント値が「14」であるかどうかが判定される。CPU10が、カウント値が「14」でないと判定した場合(No)、ステップS107の処理が実行される。これに対し、CPU10が、カウント値が「14」であると判定した場合(Yes)、ステップS108の処理が実行される。
本実施の形態によれば、演算器20において、nビットモンゴメリ乗算剰余の算出と、nビット乗算とを適宜切り換えて実行することにより、3nビットモンゴメリ乗算剰余の算出が行われる。2nビットモンゴメリ乗算剰余の算出に比べてステップ数が増えているが、nビットモンゴメリ乗算剰余の算出の回数が6回に抑えられており、3nビットモンゴメリ乗算剰余の算出に要する演算時間を短縮させることが可能となる。また、4nビットモンゴメリ乗算剰余の算出を行うことなく、3nビットモンゴメリ乗算剰余を直接算出することが可能となるので、3nビット以上のメモリ領域を用意する必要がなくなり、メモリを有効に利用することが可能となる。
本実施の形態では、3nビットモンゴメリ乗算剰余の算出方法について説明したが、ステップ数を増やすことにより、さらにビット数の大きいnビットの整数倍のビット数のモンゴメリ乗算剰余も短時間で算出可能である。
(実施の形態4)
次に、実施の形態4について説明する。本実施の形態では、nビットモンゴメリ乗算剰余を行う演算器(第1演算器)と、nビット乗算を行う演算器(第2演算器)とがそれぞれ独立して設けられている。図9は、本発明の実施の形態4に係る演算処理装置の構成の一例を示す図である。図9に示す演算処理装置201は、図1の演算器20が演算器221、222に置き換えられている。演算器221は、CPU10の命令に基づきnビットモンゴメリ乗算剰余の算出を実行する。演算器222は、CPU10の命令に基づき、nビット乗算を実行する。
本実施の形態に係る演算処理装置201は、演算器221によるnビットモンゴメリ乗算剰余の算出を含むマルチ演算と、演算器222によるnビット乗算とを並列に実行することが可能である。図10は、本発明の実施の形態4におけるマルチ演算とnビット乗算とを並列実行させる手順の一例を示す図である。図10には、図2のアルゴリズムを例にした並列実行手順が示されている。
図2のアルゴリズムについて検討する。Step3のマルチ演算は、入力値(Input)のみを用いて実行可能である。したがって、Step1のnビット乗算と、Step3のマルチ演算とを並列実行可能である。また、Step3の実行中、Step1に続いてStep2のnビット乗算を並行実行することが可能である。
一方、Step4のnビット乗算には、Step3の演算結果「q」が必要となるので、Step3の処理が完了するまで、Step4を実行することはできない。また、Step5のマルチ演算には、Step4の演算結果「q」が必要となるので、Step4の処理が完了するまで、Step5を実行することができない。また、Step6のnビット乗算には、Step5の演算結果「q」が必要となるので、Step5の処理が完了するまで、Step6を実行することができない。
したがって、図2のアルゴリズムに対し、演算処理装置201では、Step1及びStep3、Step2及びStep3がそれぞれ並行実行可能である。
図11は、本発明の実施の形態4におけるマルチ演算とnビット乗算とを並列実行させる手順の他の例を示す図である。図11は、図7のアルゴリズムを例にした並列実行手順が示されている。図11に示すように、Step3のマルチ演算時には、Step2、6、8のnビット乗算が順次並列実行可能である。Step9のマルチ演算時には、Step1、5、7のnビット乗算が順次並列実行可能である。
一部でnビット乗算の順序が入れ換わっているが、これは、各Stepにおいて必要な値が得られるタイミング等を考慮したためである。例えば、Step1で得られる値「q」は、Step12のマルチ演算まで使用されない。このため、Step1は、必ずしも最初に実行される必要はない。一方、Step9のマルチ演算は、Step8の演算結果「q」が必要なので、Step3と並行して実行されることが望ましい。そうすれば、Step3とStep9とを連続して実行可能となる。その他のStepについても、ここで述べた事情により適宜実行順序が決定される。
本実施の形態によれば、演算器221によるnビットモンゴメリ乗算剰余の算出を含むマルチ演算と、演算器222によるnビット乗算とを並列に実行することが可能であるので、2nビットや3nビット等のモンゴメリ乗算剰余の算出に要する演算時間がより短縮される。
(実施の形態5)
次に、実施の形態5について説明する。本実施の形態では、マルチ演算をnビット乗算及び加減算により実行する場合について説明する。図12は、本発明の実施の形態5に係る演算処理装置の構成の一例を示す図である。図12に示す演算処理装置301は、図1の演算器20が演算器320に置き換えられている。演算器320は、CPU10の命令に基づきnビット乗算を実行する。すなわち、本実施の形態では、演算器においてnビットモンゴメリ乗算剰余の算出が直接行われることはない。
図13は、本発明の実施の形態5に係るマルチ演算のアルゴリズムを例示する図である。図13のマルチ演算では、「a、b、n、m、s」が入力され、「q、r」が出力される。なお、sはn−1(mod m)で規定される値であり、マルチ演算の実行前に、CPU10等で事前に算出しておく。
Step1では、[a、b]を入力として、これらの乗算が実行され、値{c、c}が算出される。なお、b=1の場合、{c、c}=aである。Step2では、[c、s]を入力としてこれらの乗算等を行い、値「q」が算出される。Step3では、[q、n]を入力とする乗算等や、[c、c]を入力とする加減算等が実行される。
図14及び図15は、図13のアルゴリズムに対応するフロー図である。図14は、2nビットモンゴメリ乗算剰余の算出に係るフロー図であり、図3と対応している。図15は、3nビットモンゴメリ乗算剰余の算出に係るフロー図であり、図8と対応している。
図14及び図15では、図3のステップS104がステップS304に置き換えられている。ステップS304は、ステップS304a〜S304eを含んでいる。ステップS304aでは、入力値「b」が1であるどうかが判断される。CPU10が、b≠1と判断すると(No)、ステップS304bの処理が実行される。一方、ステップS304aにおいて、CPU10がb=1と判断すると(Yes)、ステップS304cの処理が実行される。
ステップS304bでは、図13のStep1の処理が実行される。CPU10は値「a、b」を演算器320に送信し、乗算を行うよう命令する。演算器320は、CPU10の命令に従い、[a、b]を入力とする乗算(a*b)を実行する。算出された値{c、c}は、例えばメモリ30に保持される。
ステップS304cでは、図13のStep2の処理が実行される。CPU10は値[c、s]を演算器320に送信し、乗算を行うよう命令する。演算器320は、CPU10の命令に従い、[c、s]を入力とする乗算(c*s)を実行する。算出された値「q」は、例えばメモリ30に保持される。
ステップS304d〜S304eでは、図13のStep2の処理が実行される。ステップS304dにおいて、CPU10は、値[q、n]を演算器320に送信し、乗算を行うよう命令する。演算器320は、CPU10の命令に従い、[q、n]を入力とする乗算(q*n)を実行する。算出された値「q*n」は、例えばメモリ30に保持される。
ステップS304eにおいて、CPU10は、ステップS304で算出された値「q*n」、及び値[c、c]を用いて値「r」を算出する。算出された値「r」は、例えばメモリ30に保持される。このように、マルチ演算により値(q、r)が算出される。このように、乗算及び加減算を含むステップS304のマルチ演算により算出された値は、nビットモンゴメリ乗算剰余の算出及び加算を含むS104のマルチ演算により算出された値と同一である。
図14及び図15のマルチ演算では、2回のnビットモンゴメリ乗算剰余の算出が、3回の乗算に変更されている。したがって、2nビットモンゴメリ乗算剰余の算出では、マルチ演算で6(3×2)回の乗算が実行される。また、3nビットモンゴメリ乗算剰余の算出では、マルチ演算で9(3×3)回の乗算が実行される。また、bの値に応じて、マルチ演算における乗算回数は削減される。
本実施の形態によれば、乗算及び加減算によりマルチ演算が実行される。この構成によれば、nビット乗算剰余の算出を行わなくてもよいので、2nビットや3nビット等のモンゴメリ乗算剰余の算出に要する演算時間がさらに短縮される。
これまで説明した各実施の形態に係る演算処理装置は、例えば、セキュリティ機能が要求されるネットワーク機器、自動車、産業機器等に搭載される。また、演算処理装置は、その他の機能を含めた半導体装置として構成されてもよい。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
1、101、201、301…演算処理装置、10…CPU、20、120、221、222、320…演算器、30…メモリ

Claims (15)

  1. CPUと、
    前記CPUの命令によりnビットモンゴメリ乗算剰余の算出、又はnビット乗算を切り換えて行う演算器と、
    メモリと、
    を備えた演算処理装置において、nビットの整数倍のビット数のモンゴメリ乗算剰余を算出する演算処理方法であって、
    前記CPUが、前記メモリから読み出したプログラムに基づき、nビットモンゴメリ乗算剰余の算出、又はnビット乗算から演算方法を選択する第1ステップと、
    前記CPUが、選択した前記演算方法による演算を前記演算器に実行させる第2ステップと、
    を有する、
    演算処理方法。
  2. 請求項1に記載の演算処理方法において、
    前記第1ステップでは、前記CPUは、nビットモンゴメリ乗算剰余の算出を含むマルチ演算を実行するとき、nビットモンゴメリ乗算剰余の算出を前記演算方法として選択し、乗算を実行するとき、nビット乗算を前記演算方法として選択する、
    演算処理方法。
  3. 請求項1に記載の演算処理方法において、
    前記演算器は、nビットモンゴメリ乗算剰余の算出、nビット乗算、及び加減算を切り換えて行い、
    第1ステップでは、前記CPUが、前記メモリから読み出したプログラムに基づき、nビットモンゴメリ乗算剰余の算出、nビット乗算、及び加減算から前記演算方法を選択する、
    演算処理方法。
  4. 請求項1に記載の演算処理方法において、
    前記演算器は、nビットモンゴメリ乗算剰余の算出を行う第1演算器と、nビット乗算を行う第2演算器と、が独立して設けられており、
    前記CPUは、前記第1ステップにおいてnビットモンゴメリ乗算剰余の算出を選択した場合、前記第2ステップにおいて前記第1演算器による演算を実行させ、前記第1ステップにおいてnビット乗算を選択した場合、前記第2ステップにおいて前記第2演算器による演算を実行させる、
    演算処理方法。
  5. 請求項4に記載の演算処理方法において、
    前記CPUは、前記第1ステップにおいてnビットモンゴメリ乗算剰余の算出及びnビット乗算を選択した場合、前記第2ステップにおいて前記第1演算器による演算と前記第2演算器による演算とを並行して実行させる、
    演算処理方法。
  6. 請求項1に記載の演算処理方法において、
    前記CPUは、2nビット又は3nビットモンゴメリ乗算剰余を算出する、
    演算処理方法。
  7. CPUと、
    前記CPUの命令によりnビットモンゴメリ乗算剰余の算出、又はnビット乗算を切り換えて行う演算器と、
    メモリと、
    を備え、
    前記CPUは、前記メモリから読み出したプログラムに基づき、nビットモンゴメリ乗算剰余の算出、又はnビット乗算を選択して前記演算器に実行させ、nビットの整数倍のビット数のモンゴメリ乗算剰余を算出する、
    演算処理装置。
  8. 請求項7に記載の演算処理装置において、
    前記CPUは、nビットモンゴメリ乗算剰余の算出を含むマルチ演算を実行するとき、nビットモンゴメリ乗算剰余の算出を選択して前記演算器に実行させ、乗算を実行するとき、nビット乗算を選択して前記演算器に実行させる、
    演算処理装置。
  9. 請求項7に記載の演算処理装置において、
    前記演算器は、前記CPUの命令によりnビットモンゴメリ乗算剰余の算出、nビット乗算、及び加減算を切り換えて行う、
    演算処理装置。
  10. 請求項7に記載の演算処理装置において、
    前記演算器は、nビットモンゴメリ乗算剰余の算出を行う第1演算器と、nビット乗算を行う第2演算器と、が独立して設けられている、
    演算処理装置。
  11. 請求項10に記載の演算処理装置において、
    前記CPUは、前記第1演算器におけるnビットモンゴメリ乗算剰余の算出と、前記第2演算器におけるnビット乗算とを並行して実行させる、
    演算処理装置。
  12. 請求項7に記載の演算処理装置において、
    前記CPUは、2nビット又は3nビットモンゴメリ乗算剰余を算出する、
    演算処理装置。
  13. CPUと、
    前記CPUの命令によりnビット乗算を切り換えて行う演算器と、
    メモリと、
    を備え、
    前記CPUは、前記メモリから読み出したプログラムに基づき、nビット乗算を選択して前記演算器に実行させ、nビットの整数倍のビット数のモンゴメリ乗算剰余を算出し、
    前記CPUは、複数回の乗算を含むマルチ演算を実行するとき、及び1回のみの乗算を実行するときのいずれにおいても、nビット乗算を選択して前記演算器に実行させる、
    演算処理装置。
  14. 請求項13に記載の演算処理装置において、
    前記CPUは、2nビット又は3nビットモンゴメリ乗算剰余を算出する、
    演算処理装置。
  15. 請求項7に記載の演算処理装置を備えた、
    半導体装置。
JP2019036619A 2019-02-28 2019-02-28 演算処理方法、演算処理装置、及び半導体装置 Active JP7286239B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019036619A JP7286239B2 (ja) 2019-02-28 2019-02-28 演算処理方法、演算処理装置、及び半導体装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019036619A JP7286239B2 (ja) 2019-02-28 2019-02-28 演算処理方法、演算処理装置、及び半導体装置

Publications (2)

Publication Number Publication Date
JP2020140120A true JP2020140120A (ja) 2020-09-03
JP7286239B2 JP7286239B2 (ja) 2023-06-05

Family

ID=72280305

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019036619A Active JP7286239B2 (ja) 2019-02-28 2019-02-28 演算処理方法、演算処理装置、及び半導体装置

Country Status (1)

Country Link
JP (1) JP7286239B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122141A (ja) * 2003-10-15 2005-05-12 Microsoft Corp モンゴメリ乗算におけるsimd命令の使用
WO2007080652A1 (ja) * 2006-01-13 2007-07-19 Fujitsu Limited モンゴメリ法用乗算剰余計算装置
JP2007212701A (ja) * 2006-02-09 2007-08-23 Renesas Technology Corp 剰余演算処理装置
WO2009034800A1 (ja) * 2007-09-14 2009-03-19 Hitachi, Ltd. 剰余乗算処理装置
JP2010091913A (ja) * 2008-10-10 2010-04-22 Renesas Technology Corp データ処理装置
JP2013057828A (ja) * 2011-09-08 2013-03-28 Canon Inc 情報処理装置およびその方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122141A (ja) * 2003-10-15 2005-05-12 Microsoft Corp モンゴメリ乗算におけるsimd命令の使用
WO2007080652A1 (ja) * 2006-01-13 2007-07-19 Fujitsu Limited モンゴメリ法用乗算剰余計算装置
JP2007212701A (ja) * 2006-02-09 2007-08-23 Renesas Technology Corp 剰余演算処理装置
WO2009034800A1 (ja) * 2007-09-14 2009-03-19 Hitachi, Ltd. 剰余乗算処理装置
JP2010091913A (ja) * 2008-10-10 2010-04-22 Renesas Technology Corp データ処理装置
JP2013057828A (ja) * 2011-09-08 2013-03-28 Canon Inc 情報処理装置およびその方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MASAYUKI YOSHINO ET AL.: "Unbridle the Bit-Length of a Crypto-coprocessor with Montgomery Multiplication", LNSC, INTERNATIONAL WORKSHOP ON SELECTED AREAS IN CRYPTOGRAPHY, vol. 4356, JPN6022032881, 2007, ISSN: 0005063366 *
吉野 雅之 ほか: "コプロセッサの2倍のビット長をもつモンゴメリ乗算", 電子情報通信学会技術研究報告, vol. 106, no. 175, JPN6013019901, 13 July 2006 (2006-07-13), JP, pages 87 - 94, ISSN: 0005063365 *

Also Published As

Publication number Publication date
JP7286239B2 (ja) 2023-06-05

Similar Documents

Publication Publication Date Title
JP5378579B2 (ja) フォールディングを用いるモジュール削減
TW550498B (en) Method and apparatus for modular multiplying and calculating unit for modular multiplying
US10768898B2 (en) Efficient modulo calculation
WO2015164996A1 (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
CN109814838B (zh) 获取加解密运算中的中间结果组的方法、硬件装置和系统
JP3532860B2 (ja) 剰余系表現を利用した演算装置及び方法及びプログラム
US8781112B2 (en) Signed montgomery arithmetic
US7558817B2 (en) Apparatus and method for calculating a result of a modular multiplication
JP2004227344A (ja) 乗算器及び暗号回路
JP2000353077A (ja) 多倍長演算装置
JP5175983B2 (ja) 演算装置
Will et al. Computing mod without mod
JP2020140120A (ja) 演算処理方法、演算処理装置、及び半導体装置
KR20080050226A (ko) 모듈러 곱셈 장치 및 설계 방법
JP4182226B2 (ja) 剰余系の計算方法及び装置並びにプログラム
JP2006508464A (ja) ルックアップテーブルを備える乗算器
JPH06175583A (ja) べき乗剰余演算回路
JP2000207387A (ja) 演算装置及び暗号処理装置
KR20190022023A (ko) 하드웨어 구현된 모듈러 역원 모듈
JP2007286380A (ja) 有限可換群演算方法、装置およびそのプログラム
JP2951685B2 (ja) 固定小数点演算器
JP2010122246A (ja) 逆元演算装置および逆元演算プログラム
JP2004102071A (ja) 多項式剰余系演算装置、方法及びプログラム
JP2007503036A (ja) モジュラ乗算を行うための方法、および2nビットの数を使用してユークリッド乗算を行うための方法
JP2006338215A (ja) ベクトル積和演算回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210811

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221006

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20221213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230313

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20230313

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20230323

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20230328

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230523

R150 Certificate of patent or registration of utility model

Ref document number: 7286239

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150