JP2006091086A - モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド - Google Patents

モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド Download PDF

Info

Publication number
JP2006091086A
JP2006091086A JP2004273169A JP2004273169A JP2006091086A JP 2006091086 A JP2006091086 A JP 2006091086A JP 2004273169 A JP2004273169 A JP 2004273169A JP 2004273169 A JP2004273169 A JP 2004273169A JP 2006091086 A JP2006091086 A JP 2006091086A
Authority
JP
Japan
Prior art keywords
integer
montgomery
inverse element
register
value
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.)
Pending
Application number
JP2004273169A
Other languages
English (en)
Inventor
Takashi Endo
隆 遠藤
Takashi Watanabe
高志 渡邊
Toshio Okochi
俊夫 大河内
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 Technology Corp
Original Assignee
Renesas Technology 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 Technology Corp filed Critical Renesas Technology Corp
Priority to JP2004273169A priority Critical patent/JP2006091086A/ja
Publication of JP2006091086A publication Critical patent/JP2006091086A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】
モンゴメリ逆元を計算する場合に、多倍長精度整数演算に時間が掛かることや、演算結果により、処理の時間差によるリーク情報が問題となる。
【解決手段】
従来技術によるモンゴメリ逆元演算方式では、多倍倍長精度整数同士の大小比較を行った後、減算の方向を決定して演算を行っていた。これは、演算の中間結果が常に正の値となることを保証するためであるが、中間結果が負の値になることを容認することで、大小比較を行わず、直接多倍長精度演算を行えるようになり、多倍長精度整数同士の演算回数を削減することができた。
【選択図】図10

Description

本発明は、モンゴメリ逆元演算装置を搭載した半導体装置に係り、特に機密性の高いICカードなどの耐タンパ装置の暗号処理に関するものである。
暗号処理では、多倍長精度の剰余乗算を含み、処理時間の多くが剰余乗算に費やされている。多倍長精度の剰余乗算を行なう方法としては、計算途上でコストの大きい割り算を計算することなしに剰余乗算を行える、モンゴメリ剰余乗算が用いられることが多い。したがって、逆元を計算する際にも逆元を直接モンゴメリ表現上で計算する方法として、ユークリッド互除法 によるモンゴメリ型逆元(E.Savas、 C. K. Koc、 "The Montgomery Modular Inverse - Revised"、 IEEE Transactions on COMPUTERS、 VOL.49、 NO.7、 JULY 2000)が提案されている。図1、図2は従来手法による拡張ユークリッド互除法を用いたモンゴメリ型逆元計算のアルゴリズムである。
ユークリッド互除法によるモンゴメリ方逆元計算方式では、法をa、逆元を計算したい値をbとすると、k=0、p=1、r=0、u=a、q=0、s=1、v=bを初期値として、
Figure 2006091086
Figure 2006091086
なる関係がなりたつ。最終的にmod aした値のみが必要なので、式(1)、式(2)の両辺のmod a を取ると、
Figure 2006091086
Figure 2006091086
となる。
初期値からスタートし、uの値が1となるまで繰り返し次の演算を行う。
処理(1) uが偶数であれば、uを右シフトし、kの値を+1する。kが+1された後も式(4)が成り立つように、s←2sとし、処理(5)に移行する。uが偶数で無い場合は、処理(2)へ移行する。
処理(2) vが偶数であれば、vを右シフトし、kの値を+1する。kが+1された後も式(3)が成り立つように、r←2rとすし、処理(4)に移行する。uが偶数で無い場合は、処理(3)へ移行する。
処理(3) 処理(3)にたどり着くのは、u、vの両者が奇数の場合のみである。したがって、u、vの差を計算すると、必ず偶数となる。まず、u>vの場合は、式(4)から式(3)を引き、両辺を2で割った値で、rとuの値を更新する。具体的には、右辺はu←(u−v)/2、左辺はr←r+sとして、2で割る代わりに、k←k+1とする。kが+1された後も、式(4)が成り立つように、s←2sとし、処理(5)に移行する。u>vでない場合は、処理(4)へ移行する。
処理(4) ここにたどり着くのは、u、vが共に奇数で、u≦vの場合のみである。式(3)から式(4)を引き、両辺を2で割った値で、sとvの値を更新する。具体的には、右辺はv←(v−u)/2、左辺はs←s+rとして、2で割る代わりに、k←k+1とする。kが+1された後も、式(3)が成り立つように、r←2rとし、処理(5)に移行する。
処理(5) vの値が0より大きい場合は、処理(1)へ移行する。
以上の処理により、aが奇数で、aとbが互いに素である場合は、v=0になると、必ずu=1となる。処理(1)から処理(4)のいずれかが1回処理されると、uもしくはvの大きさが半分以下になる。しがたって、aのビット数をn、bのビット数をmとすると、最大n+m+1回の計算により、v=0にたどり着く。右辺の計算は、拡張ユークリッド互除法の演算と等価であるので、aとbが互いに素でない場合には、1120でuが1以上の値となり、エラーとなる。u=1では、式(3)は
Figure 2006091086
となり、両辺に
Figure 2006091086
を掛けると、
Figure 2006091086
を得る。モンゴメリ型逆元で求めたいのは、
Figure 2006091086
であるので、図2に示される処理フローにより、補正を行う。
まず
Figure 2006091086
を乗じ、
Figure 2006091086
を得る。
具体的には、(k−n)回右シフトを行うことにより、式(8)を乗じる。右シフトを行う際に、値が偶数の場合は、最下位ビットが0であるので、右シフトをそのまま行えるが、値が奇数の場合は、最下位ビットが1であるので、右シフトをそのまま行うことはできないため、aを加算して偶数にした後、右シフトを行う。モンゴメリ逆元補正処理の処理フロー図2に示す。2020でループカウンタを設定し、2030でループカウンタのチェックを行う。2040、2050、2060の処理は、rの値を右シフトするための処理で、右シフト可能なように、奇数の場合は法aを加算して、偶数に変換する。k−n回右シフトを行う。 最後に、符号を反転させるためにaから式(9)を引き、
Figure 2006091086
を得る。図2では、2080でこの処理が行われる。
特開平10−207689号公報 "The Montgomery Modular Inverse - Revisited"、IEEE Transactions on COMPUTERS、 VOL.49、 NO.7、 JULY 2000
RSAやECCに代表される公開鍵暗号系では、有限要素体上での演算により暗号処理を行っている。暗号処理では、パラメータのうちの一部を秘密情報として、入力値に対して出力値を計算する。たとえば、RSA暗号では、復号化式
M=Cd mod N
を計算することで、暗号文Cを平文Mに変換できるが、この式のうち、指数のdが秘密情報であり、このdの値が知られてしまうと、RSA暗号では、Nは公開カギの一部であるため、誰でもが復号化式を用いて暗号Cを平文Mに戻すことが出来てしまう。また、Nは2つの大きな素数p,qの積であることを利用して、演算を高速化する方法として、CRT(Chinese Remainder Theorem)演算による高速化手法が知られている。CRT演算では、モジュロN上の演算を、モジュロpおよびモジュロqの演算に分けて計算し、最後に2つの演算結果を合成することで、モジュロN上の演算と同じ結果を得る。RSAの公開指数をeとすると、秘密指数dは、dp=e-1 mod (p-1) およびdq=e-1 mod (q-1)に分割されて計算される。
暗号文Cをそのまま演算に用いる実装の場合は、多くのビットが0で一部のビットのみが1となるように特別に選んだ暗号文Cを入力した場合、演算時の消費電流を観測することで、秘密指数dpおよびdqの推測が可能となる。逆元の定義と、秘密指数dpがp-1以下であることから、1<k≦e なる自然数kにより、
edp=(p-1)k+1
であり、kpについて解くと、
kp=edp+k-1
となる。Nの値は、素数p,qの積であるので、gcd(edp+k-1,N) をkの値を1からeまで変えながら計算すると、gcdの値が1以外の場合に、pが得られ、qの値も q = N / p から簡単に求まり、その結果
d = e-1 mod (p-1)(q-1)
より秘密鍵が分かってしまう。こうしたアタックを防ぐために、乱数rを用意し、
Cp=C mod p
の代りに、
Cpre mod p
を用いて計算し、最後にrの影響を取り除くために、
r-1 mod p
を乗じるという対策手法がある。r-1 mod p を計算する過程で、pが推定できると、結局は秘密鍵dが演算できてしまう。逆元を演算する方法としては、一般に拡張ユークリッド互除法を用いた手法が使われるが、拡張ユークリッド互助法演算では、演算終了時の内部状態が既知であるため、そこに至るまでの演算過程が既知となった場合、法の値が逆算できてしまう。r-1 mod pの場合、法の値がpは推定できることを意味する。
したがって、拡張ユークリッド互助法、および拡張ユークリッド互助法を拡張したアルゴリズムにおいては、演算の手順を外部から隠すことがセキュリティ上重要となる。
従来技術によるモンゴメリ逆元演算方式では、大きなビット長のuとvの大小を比較した後、判定結果によりu−vもしくはv−uのいずれか片方を計算する必要がある。uとvの大小比較を行うには、多倍長精度整数同士の減算を行う必要があり、uとvの大小関係判定後、u≦vであることが判明した場合は、v−uを計算しなおすか、計算結果の符号を反転する必要がある。u−vもしくはu−vを計算するステップでは、uとvの両方が奇数となるため、u−vの値は偶数となる。偶数の値の符号反転を行う場合、必ずキャリーの伝播が発生するため、高速に演算することが難しい。また、高速化のためにu−vを計算し、必要に応じて符号反転処理を行う場合、vとuの大小関係により、演算時間に差が出る。この差がリーク情報となり、秘密情報が推定できる。また、多倍長精度整数の加算器と減算器の両方が必要となる。
従来技術によるモンゴメリ逆元演算方式では、中間結果のu、vが常に正の値となることを保証するためにuとvの大小を比較している。モンゴメリ型逆元演算では、uもしくはvの偶数・奇数が重要な情報となるが、負の値であっても、偶数・奇数の判定は最下位ビットのみで正の値の時と同様に判別できる。したがって、v−uは計算せずに、常にu−vを計算し、結果が負になった場合は、次にu−vを計算する際に補正を行う。本発明の改良型モンゴメリ逆元演算方式では、vの値が負になることを許容することで、uとvの大小判定を、vの値の符号のチェック処理に置き換えることができる。符号の判定は、最上位ビットのみを検査することで判定できるため、減算を必要とする大小比較よりも大幅に計算量を削減可能となる。真のvの値はvの絶対値と等しい。
また、vの最上位ビットの判定後に行われる処理は、判定結果にかかわらずほぼ同一の演算を行うため、リーク情報はきわめて小さくなる。
また、モンゴメリ逆元として、最終的に必要な値は
Figure 2006091086
であるが、従来技術によるモンゴメリ逆元演算では、
Figure 2006091086
を求めた後に、
Figure 2006091086
を計算して、
Figure 2006091086
を求めている。s、rについても負の値を取ることを容認すると、直接
Figure 2006091086
が求められるようになる。
従来技術によるモンゴメリ逆元演算では、ここで得られるrの値は、
0<r<2a
であるので、a以下になるように、
a≦r
である場合は、
r←r−a
を計算する。一方、s、rに負の値を容認した場合、式(3)、式(4)のbを(−b)に置き換え、式(3)を
Figure 2006091086
とおき、式(4)を
Figure 2006091086
とし、式(17)、式(18)が成り立つように、rとsの初期値をそれぞれ、符号を反転し、
r=−0=0
s=−1
とする。u=1と成ったとき、式(17)は、
Figure 2006091086
となるので、rの値は、
Figure 2006091086
となる。また、rやsの値は、常に直前のr、sを2倍にした値であるか、sとrを加算した値であるので、必ず負の値になり、値の範囲は、
−2a<r<0
となる。この値を0≦r<aとするには、まず
r←r+a
の補正を行い、さらに補正後も
r<0
である場合に、
r←r+a
をもう一度計算する。従来技術によるモンゴメリ逆元の最後で、オーバーフローをチェックするための大小判定が必ず必要なのと同様、本発明でも
r←r+a
の補正が必須であるため、計算量的にはほぼ等価であるが、本発明では加算のみで補正が出来るという利点がある。すなわち、s、rについて負の値を認める場合、多倍長精度整数演算器としては加算器のみがあれば、逆元計算が実現できる。
本発明によれば、リーク情報が少なく、高速なモンゴメリ型逆元演算ハードウエアと、モンゴメリ型逆元演算ソフトウエアが実現できる。
図3は本発明の一実施例を示す。法をaとして、bのモンゴメリ型逆元を計算する場合、図3の処理が3190に達すると、
Figure 2006091086
が得られる。処理の流れは従来技術によるモンゴメリ逆元演算とは、uおよびvが奇数である場合の処理が異なる。図2では、3300で囲われた処理に相当する。本発明では、常に(u−v)/2を計算し、結果が正の値の場合は、結果をuに格納し、結果が負の場合は、結果をvに格納する。常に(u−v)/2を計算するので、vの値が正の場合はそのまま(u−v)/2を計算するが、vの値が負の場合は、減算ではなく、加算を行う。従来技術によるモンゴメリ逆元演算との違いは、vの値に負の値が現れるか否かだけであり、vの値が負数になった場合でも、絶対値を計算すれば、従来技術によるモンゴメリ逆元計算で現れる値と同一の値となる。
また、vの値自体は、モンゴメリ演算の終了判定のみで用いるので、負の値を格納しても問題にならない。
図3の実施例の3300の部分をハードウエアで実装した場合の実施例を図5および図7に示す。
図5は本発明の一実施例であり、図3の処理フローのうちの3300の処理を回路化した実施例である。図3の3080の処理は5010に格納されているvの値の最上位ビットを検査することでvが負数であるかを判定し、uとvの加算を行うのか、減算を行うのかをALU5040に伝える。5040では、5030の信号に従って演算の種類を決定し、5060の算術右シフタで右に1ビット算術シフトする。
ここで、算術シフトを用いるのは、シフト対象の値が負の値を取りうるからである。従来技術によるモンゴメリ型逆元演算方法では、図4に示す様(図1の1300の回路化)、つねにu、vが正の値になるように制御しているので、単純なロジカルシフタでシフトすることが可能であるが、本発明では負数が入力される可能性があり、符号フラグ(MSB)を保存する必要がある。得られた演算結果は、一旦uやvとは異なる記憶手段w(5070)に格納される。uとvのいずれにwの値を格納すべきかは、wの値が正の値か、ゼロもしくは負の値であるかに依存する。5080のOR回路により、wの値がゼロもしくは負の値であるときにはwをv側に保存するように、セレクタ5100を制御する。
図6に、u=u−vを計算する代わりに、(−v)を計算して、加算器のみでu−vを計算する際の、(−v)の項を計算する方法に関する説明図を示す。vの値は図3の3300の部分を実行する場合は、常に奇数の値になる。これは、vもしくはuの値が偶数ある間は、3200の点線で囲われた部分のみが実行され、3300の点線で囲われた部分は、uおよびvが両方とも奇数になったときに初めて実行されるからである。
奇数の符号反転の処理では、キャリーの伝播は発生しない。符号反転処理では、すべてのビットを反転させ、+1を行うが、奇数の値のビットをすべて反転させると、最下位ビットは常に0になる。したがって、+1を行う際にも繰り上がりは発生しない。
図7は、図3の3300の部分の処理を図6の符号反転方式を用いて実現したモンゴメリ逆元計算装置の実施例である。7030で、最上位のビットを反転し、その結果を7040の排他的論理回路により、vの最下位ビット以外のビットとxorを演算する。この回路の意図は、vの値が負の場合は、vの値をそのまま加算器7060に送り、uとの和を計算することで、(u−v)を計算し、vの値が非負の場合は、7030の出力は1となるため、7040の排他的論理回路により、vの最下位ビット以外のビットを反転させる。非負の値のvの符号を反転し、−vとして加算器7060に送り、uとの和を計算することで、(u−v)を計算することになる。(u−v)の計算結果は算術右シフタ7080により1ビット右に算術シフトされ、(u−v)/2がwに格納される。
図8は、図1および図2に示される従来技術によるモンゴメリ逆元演算方式により、a=23を法として、b=17に対して、ビット長n=5のモンゴメリ逆元を求める際の、中間結果を示す。図8の8010は、図1および図2の符号に相当する。最終的な結果は、rに格納され、
Figure 2006091086
が得られる。
図9は、本発明の実施例である、図3および図2の処理フローにより、a=23を法として、b=17に対して、ビット長n=5のモンゴメリ逆元を求める際の、中間結果である。従来技術によるモンゴメリ逆元計算の図8と比べて、vの値が負になる事を除いて、同じ中間結果および最終結果が得られる。
図10及び図11は、本発明の実施例のフローを示す。実施例1との違いは、10020で初期値として、s=0の代わりにs=−1を代入している点である。
その結果、図10のフローが10170に達したときには、rには、
k>nであり、最終的に
Figure 2006091086
を得るためには、図11に示される改良版モンゴメリ型逆元補正処理を行う。図11に示される改良版モンゴメリ逆元補正処理は、図2の従来技術によるモンゴメリ逆元補正処理とは、最後に結果の符合を反転するための2080の処理がない点が異なる。
図12は、図10、図11のフローにしたがってa=23を法として、b=17に対して、ビット長n=5のモンゴメリ逆元を求める際の、中間結果である。2080に相当する処理なしに、最終結果が得られている。
図10、図11の実施例の特徴は、多倍長精度整数演算が加算器のみで済む点が特徴である。したがって、ソフトウエアで多倍長演算をインプリメントする場合、演算の種類が1種類であるので、同じルーチンで演算が可能となり、たとえばリーク情報から現在演算に用いているプログラムのコードのアドレスを攻撃者が区別できる場合でも、演算の種類によるリークが生じない。また、ハードウエア実装を行う場合でも、多倍長精度整数の演算器が加算器のみで済むため、ハードウエアの規模が小さくなる。
図13(A)−(C)は従来技術の一実施例であり、図1の処理フローを回路化した実施例である。1030のフローに従い、以下の処理をvが0より大きい間、行う。まず、図13(A)において、uの最下位ビットが0であれば、セレクタ13040はuの値を選択し、セレクタ13070はセレクタ13040の出力を選択するように設定され、右シフタ13080により1/2に変換された値が、セレクタ13130をとおり、u記憶手段13020に格納され、図13(C)に示すように、sの値は、セレクタ13150によりsの値がセレクトされ、左シフタ13160を通り、セレクタ13120を通って、s記憶手段13230に格納される。
図13(A)において、vの最下位ビットが0の場合は、セレクタ13040はvの値を選択し、セレクタ13070はセレクタ13040の出力を選択するように設定され、右シフタ13080により1/2に変換された値が、セレクタ13130をとおり、v記憶手段13010に格納され、図13(C)に示すように、rの値は、セレクタ13150によりsの値がセレクトされ、左シフタ13160を通り、セレクタ13110を通って、r記憶手段13220に格納される。図13(A)において、uおよびvの最下位ビットがいずれも1の場合は、比較回路13030により比較され、u>vの場合は、セレクタ13050はuを選択し、セレクタ13060はvを選択し、減算回路13170はu−vを計算し、セレクタ13070が減算回路13170の出力を選択することで、右シフタ13080は(u−v)/2を出力し、セレクタ13130は出力としてu記憶手段13020側を選択し、u記憶手段13020のuの値が更新され、図13(C)に示すように、加算器13140によりr+sが計算され、左シフタ13160により2倍された後、セレクタ13110を通じて、r記憶手段13220のrの値を更新したのち、セレクタ13150がsの値を選択し、左シフタ13160により値が2倍され、セレクタ13120を通じて、s記憶手段13230のsの値が更新される。
図13(A)において、u≦vの場合は、セレクタ13050はvを選択し、セレクタ13060はuを選択し、減算回路13170はv−uを計算し、セレクタ13070は減算回路13170の出力を選択することで、右シフタ13080は(v−u)/2を出力し、セレクタ13130は出力としてv記憶手段13010側が選択し、v記憶手段13010のvの値が更新され、図13(C)に示すように、加算器13140によりr+sが計算され、左シフタ13160により2倍された後、セレクタ13120を通じて、s記憶手段13230のsの値を更新したのち、セレクタ13150がrの値を選択し、左シフタ13160により値が2倍され、セレクタ13110を通じて、r記憶手段の13220sの値が更新される。その後、図13(B)に示すように、加算器13100によりk記憶手段13090に格納されたkの値に1が加算されて、k記憶手段13090に格納される。
図14は、本発明になるモンゴメリ逆演算装置が内蔵されたICカード用チップ14020を搭載したICカード14010を示す。
図15は、図14に示すICカード用チップのシステムブロック図15010の一例である。なお、このシステムブロックは、CPU15020と、記憶手段であるROM15030、RAM15040およびEEPROM15050と、剰余乗算コプロセッサ15060並びにシリアル通信回路15070から構成されている。
従来技術によるモンゴメリ型逆元計算手順を示す図。 従来技術によるモンゴメリ型逆元計算で用いられる補正処理手順を示す図。 本発明のモンゴメリ型逆元計算手順の一実施例を示す図。 従来技術によるモンゴメリ型逆元計算回路図。 本発明のモンゴメリ型逆元計算回路の一実施例を示す図。 符号反転方式の説明図。 本発明のモンゴメリ型逆元計算回路の一実施例を示す図。 従来技術によるモンゴメリ型逆元計算の内部変数の推移図。 本発明のモンゴメリ型逆元計算の内部変数の推移図。 本発明のモンゴメリ型逆元計算手順の一実施例を示す図。 本発明のモンゴメリ型逆元計算手順の一実施例を示す図。 本発明のモンゴメリ型逆元計算の内部変数の推移図。 従来技術によるモンゴメリ型逆元計算回路のu、v計算回路図。 従来技術によるモンゴメリ型逆元計算回路のk計算回路図。 従来技術によるモンゴメリ型逆元計算回路のr、s計算回路図。 ICカードを示す図。 ICカード用チップのシステムブロック図。
符号の説明
1010…モンゴメリ逆元演算処理開始ポイント、
1020…内部変数初期化処理、
1030…終了判定処理、
1040…uの偶数判定、
1050…uが偶数の場合のuおよびsの更新処理、
1060…vの偶数判定、
1070…vが偶数の場合のvおよびrの更新処理、
1080…uとvの大小判定、
1090…u>vの場合のu、r、sの更新処理、
1100…u≦vの場合のv、s、rの更新処理、
1110…2のベキの更新、
1120…逆元の存在判定、
1130…エラー終了ポイント、
1140…オーバーフロー補正の必要性判定、
1150…オーバーフロー補正処理、
1160…処理終了ポイント、
2010…モンゴメリ逆元補正処理開始ポイント、
2020…ループカウンタ初期化、
2030…ループ終了判定、
2040…奇数判定、
2050…奇数から偶数への補正処理、
2060…結果を2で割る処理、
2070…ループカウンタ更新、
2080…符号反転処理、
2090…処理終了ポイント、
3010…改良版モンゴメリ逆元処理開始ポイント、
3020…内部変数初期化処理、
3030…逆元計算判定処理、
3040…uの偶数判定、
3050…uが偶数の場合のuおよびsの更新処理、
3060…vの偶数判定、
3070…vが偶数の場合のvおよびrの更新処理、
3080…vの符号判定、
3090…vが非負の場合のwの計算処理、
3100…vが負の場合のwの計算処理、
3110…wの符号判定処理、
3120…wが正の値の場合のu、r、sの更新処理、
3130…wがゼロもしくは負の値の場合のv、r、sの更新処理、
3140…2のベキの更新、
3150…逆元の存在判定、
3160…エラー終了ポイント
3170…オーバーフロー補正の必要性判定、
3180…オーバーフロー補正処理、
3190…処理終了ポイント、
4010…v記憶手段、
4020…u記憶手段、
4030…キャリーフラグ出力つき減算演算回路、
4040…キャリーフラグ信号、
4050,4060…セレクタ、
4070…減算演算回路、
4080…右シフタ
4090…セレクタ、
5010…v記憶手段、
5020…u記憶手段、
5030…最上位ビット、
5040…算術演算回路、
5050…ゼロフラグ信号、
5060…算術右シフタ、
5080…OR回路、
5090…選択信号、
5100…セレクタ、
6010…元データ、
6020…最下位ビット、
6030…全ビット反転データ、
6040…最下位ビット、
6050…符号反転データ、
6060…最下位ビット、
7010…v記憶手段、
7020…u記憶手段、
7030…インバータ、
7040…排他論理和、
7050…最下位ビット
7060…加算器、
7070…ゼロフラグ信号、
7080…算術右シフタ、
7090…w記憶手段、
7100…最上位ビット、
7110…OR回路、
7120…選択信号、
7130…セレクタ、
8010…実行ステップ位置、
9010…実行ステップ位置、
10010…改良版モンゴメリ逆元処理開始ポイント、
10020…内部変数初期化処理、
10030…逆元計算判定処理、
10040…uの偶数判定、
10050…uが偶数の場合のuおよびsの更新処理、
10060…vの偶数判定、
10070…vが偶数の場合のvおよびrの更新処理、
10080…vの符号判定、
10090…vが非負の場合のwの計算処理、
10100…vが負の場合のwの計算処理、
10110…wの符号判定処理、
10120…wが正の値の場合のu、r、sの更新処理、
10130…wがゼロもしくは負の値の場合のv、r、sの更新処理、
10140…2のベキの更新、
10150…逆元の存在判定、
10160…エラー終了ポイント、
10170…負数の補正処理、
10180…負数の補正処理終了判定、
10190…処理終了ポイント、
11010…モンゴメリ逆元補正処理開始ポイント、
11020…ループカウンタ初期化、
11030…ループ終了判定、
11040…奇数判定、
11050…奇数から偶数への補正処理、
11060…結果を2で割る処理、
11070…ループカウンタ更新、
11090…処理終了ポイント、
12010…実行ステップ位置、
13010…v記憶手段、
13020…u記憶手段、
13030…大小比較手段、
13040,13050,13060,13070…セレクタ、
13080…右シフタ、
13090…k記憶手段、
13100…加算器、
13110,13120,13130,13150…セレクタ、
13140…加算器、
13160…左シフタ、
13170…減算器、
13220…r記憶手段、
13230…s記憶手段、
14010…ICカード、
14020,15010…ICカードチップ、
15020…CPU、
15030…ROM、
15040…RAM、
15050…EEPROM、
15060…剰余乗算コプロセッサ、
15070…シリアル通信回路。

Claims (12)

  1. 第1の整数aと、
    前記第1の整数aと互いに素である第2の整数bと、
    前記第1の整数aを法として、a<2を満たす整数nとが与えられ、
    前記第2の整数bの逆元を整数b−1としたとき、
    r≡b−1・2 mod aである第3の整数rを計算するモンゴメリ型逆元演算装置を備えた半導体装置において、
    nビット長の整数値を格納する5つの格納部u、v、r、s、wと、
    0から2nまでの値を表現でき、少なくとも{log(n)}+1ビット長の整数値を格納できる2つの格納部k、iとを有し、
    ステップ(1)前記格納部u、v、r、s、およびkにおける格納値の初期状態をそ
    れぞれ、u=a、v=b、r=0、s=1、およびk=0とする、
    ステップ(2)vが0であれば、ステップ(8)の処理を行い、
    vが0以外の値であれば、ステップ(3)の処理を行う、
    ステップ(3)uの値が偶数であれば、u=u/2、s=2sの演算を行なって、ス
    テップ(7)の処理に進み、
    uの値が偶数でなければ、ステップ(4)の処理を行う、
    ステップ(4)vの値が偶数であれば、v=v/2、r=2rの演算を行って、ステ
    ップ(7)の処理に進み、
    vの値が偶数でなければ、ステップ(5)の処理を行う、
    ステップ(5)vの符号が非負の場合は、w=(u−v)/2の演算を行った後、ステ
    ップ(6)の処理を行い、
    vの符号が負の場合は、w=(u+v)/2の演算を行った後、ステッ
    プ(6)の処理を行う、
    ステップ(6)wの符号が負もしくはゼロの場合は、
    v=w、r=r+s、r=2rの演算を行なった後、ステップ(7)の
    処理に進み、
    wの符号が正の場合は、u=w、r=r+s、r=2rの演算を行なっ
    た後、ステップ(7)の処理に進む、
    ステップ(7)k=k+1とし、ステップ(2)の処理に進む、
    ステップ(8)uが1であるか否かを判定し、uが1以外の場合は逆元が存在しないと
    判定して処理を完了し、
    uが1以外の場合は、ステップ(9)の処理に進む、
    ステップ(9)r>aであるか否かを判定し、r>aであれば、r=r−aとし、ステ
    ップ(10)の処理に進み、
    r≦aであれば、ステップ(10)の処理に進む、
    ステップ(10)i=0とし、ステップ(11)の処理を行う、
    ステップ(11)i<k−1であるか否かを判定し、i<k−1の場合は、ステップ(1
    4)の処理を行い、
    i<k−1でない場合は、ステップ(12)の処理を行う、
    ステップ(12)rが奇数の場合は、r=r+aとし、ステップ(13)の処理を行い、
    rが偶数の場合は、ステップ(13)の処理を行う、
    ステップ(13)rを右シフトしその結果をrとし、i=i+1として、ステップ(1
    1)の処理を行う、
    ステップ(14)r=a−rとし、rを実行結果として処理を終了とする、
    上記ステップ(1)乃至(9)の処理を実行する逆元計算部と、
    上記ステップ(10)乃至(14)の処理を実行する逆元補正部とを有するモンゴメリ型逆元演算装置を備えることを特徴とする半導体装置。
  2. 符号を反転する符号反転部を有し、
    前記ステップ(5)において、w=(u−v)/2とする演算処理に代えて、前記符号反転部によりv’=−vを求めた後に、w=(u+v’)/2の演算処理を実行するモンゴメリ型逆元演算装置を備えることを特徴とする請求項1記載の半導体装置。
  3. 前記符合反転部は、vの最下位ビット以外のすべてのビットを反転することで符号反転を行うモンゴメリ型逆元演算装置を備えることを特徴とする請求項2記載の半導体装置。
  4. 加算部および減算部を有し、前記ステップ(5)において、
    vの最上位ビットを用いてvの符号を判定し、前記判定の結果に従い前記加算部と前記減算部のいずれか1つを選択し、
    vの符号が非負の場合は、w=(u−v)/2とする演算を行なった後に、ステップ
    (6)の処理に進み、
    vの符号が負の場合は、w=(u+v)/2とする演算を行なった後に、ステップ(6)の処理を行うモンゴメリ型逆元演算装置を備えることを特徴とする請求項1記載の半導体装置。
  5. 第1の整数aと、
    前記第1の整数aと互いに素である第2の整数bと、
    前記第1の整数aを法として、a<2を満たす整数nとが与えられ、
    前記第2の整数bの逆元を整数b−1としたとき、
    r≡b−1・2 mod aである第3の整数rを計算するモンゴメリ型逆元演算装置を備えた半導体装置において、
    nビット長の整数値を格納する5つの格納部u、v、r、s、wと、
    0から2nまでの値を表現でき、少なくとも{log(n)}+1ビット長の整数値を格納できる2つの格納部k、iとを有し、

    ステップ(1)前記格納部u、v、r、s、およびkにおける格納値の初期状態をそ
    れぞれ、u=a、v=b、r=0、s=−1、およびk=0とする、
    ステップ(2)vが0であれば、ステップ(8)の処理を行い、
    vが0以外の値であれば、ステップ(3)の処理を行う、
    ステップ(3)uの値が偶数であれば、u=u/2、s=2sの演算を行なった後に、
    ステップ(7)の処理に進み、
    uの値が偶数でなければ、ステップ(4)の処理を行う、
    ステップ(4)vの値が偶数であれば、v=v/2、r=2rの演算を行なった後に、
    ステップ(7)の処理に進み、
    vの値が偶数でなければ、ステップ(5)の処理を行う、
    ステップ(5)vの符号が非負の場合は、w=(u−v)/2の演算を行なった後に、
    ステップ(6)の処理を行い、
    vの符号が負の場合は、w=(u+v)/2の演算を行なった後に、ス
    テップ(6)の処理を行う、
    ステップ(6)wの符号が負もしくはゼロの場合は、
    v=wとし、r=r+s、r=2rの演算を行なった後に、ステップ
    (7)の処理に進み、
    wの符号が正の場合は、u=w、r=r+s、r=2rの演算を行った
    後に、ステップ(7)の処理に進む、
    ステップ(7)kをk+1とし、ステップ(2)の処理に進む、
    ステップ(8)uが1であるか否かを判定し、uが1以外の場合は逆元が存在しないと
    判定して処理を完了し、
    uが1以外の場合は、ステップ(9)の処理に進む、
    ステップ(9)r=r+aとし、ステップ(10)の処理に進む、
    ステップ(10)r<0であるか否かを判定し、r<0であれば、ステップ(9)の処理
    に進み、
    r≧0であれば、ステップ(11)の処理に進む、
    ステップ(11)i=0とし、ステップ(11)の処理を行い、
    ステップ(12)i<k−1であるか否かを判定し、i<k−1の場合は、ステップ(1
    3)の処理を行い、
    i<k−1でない場合は、ステップ(15)の処理を行う、
    ステップ(13)rが奇数の場合は、r=r+aとし、ステップ(14)の処理を行い、
    rが偶数の場合は、ステップ(14)の処理を行う、
    ステップ(14)r=r/2、i=i+1の演算を行なった後に、ステップ(12)の処
    理を行う、
    ステップ(15)rを実行結果として処理を終了する、
    上記ステップ(1)乃至(10)の処理を実行する逆元計算部と、
    上記ステップ(11)乃至(15)の処理を実行する逆元補正部とを有するモンゴメリ型逆元演算装置を備えることを特徴とする半導体装置。
  6. 奇数の整数の符号反転部を有し、ステップ(5)において、w=(u−v)/2とする演算処理は、vの符号を反転した(−v)とuの加算処理を行った後に、算術右1ビットシフトを行うことにより、w=(u+(−v))/2の演算処理を行うモンゴメリ型逆元演算装置を備えることを特徴とする請求項5に記載の半導体装置。
  7. 多倍長精度の加算部と全ビットを反転させるNOT演算部とを有し、
    ステップ(1)おいて、v=(a−b)とする演算処理の代わりに、v=a+NOT(b)+1とする演算処理を行うモンゴメリ型逆元演算装置を備えることを特徴とする請求項5に記載の半導体装置。
  8. 第1の整数aと、
    前記第1の整数aと互いに素である第2の整数bと、
    前記第1の整数aを法として、a<2を満たす整数nとが与えられ、
    前記第2の整数bの逆元を整数b−1としたとき、
    r≡b−1・2 mod aである第3の整数rを計算するモンゴメリ型逆元演算装置を備えた半導体装置において、
    初期状態としてaが設定されるuレジスタと、
    初期状態としてbが設定されるvレジスタと、
    初期状態として0が設定されるrレジスタと、
    初期状態として1が設定されるsレジスタと、
    初期状態として0が設定されるkレジスタと、
    uを右シフト、sを左シフト、vを右シフト、rを左シフトのうち指定されたものを実行するビットシフタと、
    uレジスタからvレジスタの内容を減じる処理、uレジスタにvレジスタの内容を加える処理、rレジスタにsレジスタの内容を加える処理、kレジスタに1を加える処理、rレジスタにaを加える処理、およびiに1を加える処理のうち指定されたものを実行する算術演算器と、
    vの最上位ビットの符号が正か否か、vが0か否か、vが偶数か否か、uが偶数か否か、vが正か否か、uが1か否か、rが正か否か、rが偶数か否か、およびiが(k−1)より大きいか否かを判断する判定器と、
    前記ビットシフタ、前記演算器、および前記判定器を制御する制御部とを有するモンゴメリ型逆元演算装置を備えることを特徴とする半導体装置。
  9. 第1の整数aと、
    前記第1の整数aと互いに素である第2の整数bと、
    前記第1の整数aを法として、a<2を満たす整数nとが与えられ、
    前記第2の整数bの逆元を整数b−1としたとき、
    r≡b−1・2 mod aである第3の整数rを計算するモンゴメリ型逆元演算装置を備えた半導体装置において、
    前記整数b、kと法aを入力して逆元X=b−1・2 mod aを求めるモンゴメリ逆元演算部と、
    求められた逆元Xと法aを入力して除算結果r=b−1・2 mod aを求めるモンゴメリ逆元補正演算手部とを備え、
    前記モンゴメリ逆元演算部は、初期状態としてaを保存するuレジスタと、
    初期状態としてbを保存するvレジスタと、
    uおよびvの演算結果を保存するwレジスタと、
    uおよびvが奇数か否かを判定する判定部とを少なくとも有し、
    前記判定部による判定の結果、奇数と判定されたuおよびvを保存する前記uレジスタおよび前記vレジスタと、
    前記vレジスタの最上位ビットの正負符号を判定し、該判定の結果と前記uおよびvを入力し、前記判定の結果が正の場合には、u+vの演算を実行し、前記判定の結果が負の場合は、u−vの演算を実行する算術演算部と、
    前記算術演算部からの出力を右シフトするシフタと、
    前記シフタからの演算結果を保存するwレジスタと、
    wが負の場合には、その値をuレジスタに保存し、wが非負の場合は、vレジスタに保存する判別処理を行なうセレクタとを含むモンゴメリ型逆元演算装置を有する半導体装置。
  10. 前記vレジスタの値に対して、vの最上位のビットを反転し、vの最下位ビット以外のビットとXOR演算を行なう排他的論理回路とを有し、
    前記排他的論理回路の出力を前記算術演算部に入力するモンゴメリ型逆元演算装置を備える請求項9記載の半導体装置。
  11. 請求項1又は5に記載の半導体装置を搭載することを特徴とするICカード。
  12. 請求項8又は9に記載の半導体装置を搭載することを特徴とするICカード。
JP2004273169A 2004-09-21 2004-09-21 モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド Pending JP2006091086A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004273169A JP2006091086A (ja) 2004-09-21 2004-09-21 モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004273169A JP2006091086A (ja) 2004-09-21 2004-09-21 モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド

Publications (1)

Publication Number Publication Date
JP2006091086A true JP2006091086A (ja) 2006-04-06

Family

ID=36232187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004273169A Pending JP2006091086A (ja) 2004-09-21 2004-09-21 モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド

Country Status (1)

Country Link
JP (1) JP2006091086A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101548174B1 (ko) 2008-12-02 2015-09-07 삼성전자주식회사 모듈러스의 음의 역원을 구하는 방법
US9811318B2 (en) 2014-03-31 2017-11-07 Samsung Electronics Co., Ltd. Montgomery multiplication method for performing final modular reduction without comparison operation and montgomery multiplier

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101548174B1 (ko) 2008-12-02 2015-09-07 삼성전자주식회사 모듈러스의 음의 역원을 구하는 방법
US9811318B2 (en) 2014-03-31 2017-11-07 Samsung Electronics Co., Ltd. Montgomery multiplication method for performing final modular reduction without comparison operation and montgomery multiplier

Similar Documents

Publication Publication Date Title
US7904498B2 (en) Modular multiplication processing apparatus
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US8977668B2 (en) Calculating unit for reducing an input number with respect to a modulus
US6795553B1 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
JP3785044B2 (ja) べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体
EP0952697B1 (en) Elliptic curve encryption method and system
EP1600852B1 (en) Method and apparatus for calculating a modular inverse
US7120660B2 (en) Method of and apparatus for modular multiplication
JP2004226674A (ja) 情報処理方法
JP2011512556A (ja) 楕円曲線上の多数の点を計算する装置及び方法
JP4360792B2 (ja) べき乗剰余演算器
JP2006091086A (ja) モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド
US10318245B2 (en) Device and method for determining an inverse of a value related to a modulus
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
Schinianakis et al. RNS-Based Public-Key Cryptography (RSA and ECC)
KR100451570B1 (ko) 에스피에이에 견디는 타원 곡선 암호화 알고리즘을구현하는 방법 및 장치
JP5179933B2 (ja) データ処理装置
JP4306121B2 (ja) 除算回路,乗除算回路
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
JP3999554B2 (ja) 乗算剰余演算方法及び演算装置
JP2007520728A (ja) 改良された逆計算
JP3137599B2 (ja) BのC乗のnを法とした剰余を計算する回路
CN117544297A (zh) 数据加密方法、装置、系统、电子设备及存储介质