JP2004226674A - 情報処理方法 - Google Patents
情報処理方法 Download PDFInfo
- Publication number
- JP2004226674A JP2004226674A JP2003014136A JP2003014136A JP2004226674A JP 2004226674 A JP2004226674 A JP 2004226674A JP 2003014136 A JP2003014136 A JP 2003014136A JP 2003014136 A JP2003014136 A JP 2003014136A JP 2004226674 A JP2004226674 A JP 2004226674A
- Authority
- JP
- Japan
- Prior art keywords
- mod
- bit
- value
- calculating
- remainder
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/728—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/723—Modular exponentiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7257—Random modification not requiring correction
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)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】x mod p を直接計算せずに、「図5」に示すように2^(m+n) mod p もしくは、2^(2n) mod pをあらかじめxに乗じておき、その後、2^(−n)もしくは、2^(−m)を乗じて、2^n x mod p を計算する。モンゴメリ剰余乗算を用いる場合は、その後の処理は通例通りとなる。通常の剰余乗算を用いる場合は、べき乗剰余演算の最後に、(2^(−n))^(2^n−1) mod p を乗じ補正する。
【選択図】 図5
Description
【発明の属する技術分野】
本発明は情報処理方法に関し、特に例えば、機密性の高いICカードなどの耐タンパ装置に関するものである。
【0002】
【従来の技術】
RSAの高速演算手法のCRT(Chinese Remainder Theory)演算方式では、 計算の一番最初のステップでx mod pを計算する。CRT演算方式の処理手順を図1に示す。まず、pで還元した値に対して剰余べき乗演算を行い(1010)、qで還元した値に対するべき乗剰余演算を行う(1020)。最後に2つのべき乗剰余演算結果を合成し(1030)最終的な結果を得る。最初のpで還元した値の剰余べき乗演算(1010)およびqで還元した値のべき乗剰余演算(1020)の最初のステップで、それぞれ秘密指数pに対する剰余、秘密指数qに対する剰余を計算する必要がある。べき乗剰余を計算するには、剰余乗算を繰り返し行うことで実現する。
【0003】
1010、1020のべき乗計算には通常、アディションチェイン手法を用いる。アディションチェインとは、たとえば、Z=A^L を計算する場合、指数Lを二進数展開し、
L=L[n−1]*2^(n−1)+L[n−2]*2^(n−2)+ … +L[1]*2^1+L[0]*2^0 (式1)
と置き、指数の加算は掛算になり、指数の乗算がベキ計算になるという指数法則を用いて、Z = A ^ L の計算を
Z := (…( ( (A^L[n−1])^2 * (A^L[n−2]) )^2 * … * (A^L[0]) (式2)
とおく。A^L[i]は、L[i]=1であれば、Aとなり、L[i]=0 であれば、A^0=1 となり、L[i]=0の場合に1の掛算を省略すると、Lを2進表記した際の1となるビット数回の掛算と、m−1回の自乗計算により、A^Lが計算できる。
プログラムにより表現すると、
となる。
【0004】
剰余乗算の方式には大きくモンゴメリ剰余乗算を用いたものと、そうでないものの2つに分けることができる。
【0005】
図2はモンゴメリ剰余乗算を用いた場合のアディションチェインによるべき乗剰余計算の処理フローである。nは、Pを格納するのに十分なビット長を示す。まず、Pに対するxの剰余を2020で求める。モンゴメリ剰余乗算では、乗算の度に2^(−n) mod P が乗ぜられるため、予め2^nを被演算数に乗じておく。以下、R=2^nとおく。被演算数にRを乗ずるのにも、モンゴメリ剰余乗算を用いる。あらかじめR^2を計算しておき、モンゴメリ剰余乗算を用いてx mod Pに乗じ、xR mod P を得る(2040)。モンゴメリ剰余乗算を用いるので、演算の初期値は1の代わりに1にRを乗じたRとする。乗算の処理は、指数の最上位のビットから1ビットづつ取り出すので、カウンタiに最上位ビットの位置を示すn−1を設定する(2050)。指数上位ビットから順に1が立っているかどうかを調べ(2060)、0であれば、1を意味するRを乗じ(2070)、1が立っていれば、xR mod P(=AR)をWに乗じる(2080)。1を意味するRを乗じる処理2070は、計算結果に影響を与えないので、処理速度を重視する場合は省略可能である。ビットの位置カウンタを1ビット分移動し(2090)、最下位ビットまでたどり着いているかチェックを行い(2100)、最下位ビットまで達していない場合は結果を二乗し(2110)、指数の次のビットに対して3060からの処理から処理を繰り返す。2100で最下位ビットまで処理が終了した場合は、2^nが掛かっている影響を取り除くため、2^(−n)を乗じる。モンゴメリ剰余乗算で、1との積を計算することは、2^(−n)を乗じることと等しい(3120)。最後に、結果がP以上の場合は(2130)、Pを減ずる(2140)。一連の処理の中で、2020の剰余演算の結果は、図3に示すように、Pの倍数(3010)を境にPより大であるか小であるかによって、大きく値が変動するため、アタックポイントとなる可能性がある。
【0006】
「図4」はモンゴメリではない剰余乗算を用いてアディションチェインによるべき乗剰余演算を行った場合の処理フローである。Pのビット長をnとおく。つぎに、まずxのPに対する剰余を4020で求める。モンゴメリ剰余乗算を用いた場合の処理と同様、このPに対する剰余を求める演算がアタックポイントとなる可能性がある。通常の剰余乗算を用いるので、演算の初期値は1とし、最上位のビットから1ビットづつ取り出すので、カウンタiに最上位ビットの位置を示すn−1を設定する(4040)。指数上位ビットから順に1が立っているかどうかを調べ(4050)、1が立っていれば、x mod P(=A)をWに乗じ(4070)、ビットの値が0であれば、1を意味を乗じる(4060)。また、1を乗じる処理4060は、計算結果に影響を与えないので、処理速度を重視する場合は省略可能である。4070の処理でx mod P の値が被演算数に使用されるので、ここもアタック対象になる可能性がある。ビットの位置を1ビット下に移動し(3080)、最下位ビットまでたどり着いていない場合は、結果を二乗し(3090)、指数の次のビットの処理を行う。最下位ビットまで処理が終了した場合は、その時点でのWが計算結果となる。
【0007】
以上のように、モンゴメリ剰余乗算を用いている場合も、通常の剰余乗算を行った場合も、Pによる剰余算結果が処理の最初に必要となりアタックポイントとなる可能性がある。
【0008】
【発明が解決しようとしている課題】
RSA暗号は認証や、秘密鍵の配送などに標準的に用いられている暗号で、金融用途等ではその演算の安全性が非常に重要視されている。RSA暗号の高速演算手法として、中国人剰余定理を用いた計算手法が広く用いられているが、その一番最初の演算で、秘密素数pによる剰余計算が必要となる。この計算は、秘密素数pを陽に用いた計算であるので、古くからアタックの対象となっている。pによる剰余計算で問題となるのは、図2に示すようにx がpの倍数近傍(2010)の値の場合 x<kp では、x mod p≒p となり大きな値となる一方、x>kpの場合は、xmod p≒0となり、小さな値となることである。x mod p の値がpを境界として大きく変動するため、入力xが秘密指数pよりも大なのか小であるのかが、電流値等のサイドチャネル情報として識別できる危険性がある。RSA暗号では、大きな素数(現在は、512bit程度の素数が用いられている)p、 qの積Nが容易に因数分解できないことを安全性の根拠としており、Nは公開鍵の一部としてユーザに公開されている。秘密素数pもしくはqがリークすると、N/pは容易に計算可能であるので、秘密鍵dは公開鍵eの(p−1)(q−1)を法とする逆元を計算することにより、求めることが出来る。逆元計算は、拡張ユークリッド互除法により、容易に計算可能である。本発明は、CRT向けの剰余計算を高速かつ安全に行うための計算方法および装置に関するものである。
【0009】
【課題を解決するための手段】
x mod p を直接計算せずに、2^(m+n) mod p もしくは、2^(2n) mod pをあらかじめxに乗じておき、その後、2^(−n)もしくは、2^(−m)を乗じて、2^n x mod p を計算する。pは大きな素数であるので常に奇数となり、2のべき乗とは常に互いに素になるので、2^(−m)mod p もしくは 2^(−n) mod p は必ず存在する。また、2^n x mod p の値は、入力xがpの近傍にある場合でもxとpの大小関係に依存した値の大きな変化は発生せず、2^m x mod pのビット長はpのビット長に近い値となる。したがって、リーク情報からxとpの大小関係を推定することが不可能となり、秘密鍵の漏洩を防止することを可能とする。モンゴメリ剰余乗算を用いる場合には、2^n を乗じた形式は、そのままモンゴメリフォーマットになっているので、以降の処理は、従来の処理フローを使用できる。
【0010】
モンゴメリ剰余乗算を用いない場合には、指数演算計算の最後に、(2^(−n))^(2^n−1) mod p を乗じ、2^n mod p を乗じた影響を補正することで、正しい結果を得る。
【0011】
モンゴメリ乗算以外の剰余乗算を用いる場合は、乗算と自乗を行った後、R^(−2) mod pを乗じる。あらかじめ R^(−2m) mod p を計算しておき、最後にR^(−(2^m)+1) mod p を乗じて補正してもよい。
【0012】
【発明の実施の形態】
図5はモンゴメリ剰余乗算を用いた場合の本発明の一実施例を示す。mを入力xの格納に必要なビット長、nをPの格納に必要なビット長とする。0≦x≦P*Qであるので、必ずm≧nとなる。まず、U=2^U_SQR=2^(2n)U mod Pを計算する(5030)。U_SQR=2^(2n)U mod Pを計算する部分の詳細な処理フローを図7に示す。図7では、2^L*U mod P の計算手順が示されているが、L=2nとして、図7の処理を用いることができる。U_SQRのビット長は、m−2nもしくはnのうちの長い方のビット長になる。5040の計算は、
A_R = (x * U_SQR + M*p ) / 2^m (式3)
となり、x<2^m、M<2^mであるので、
A_R < U_SQR + p (式4)
となる。pのビット長はn以下であるので、A_Rのビット長は、MAX(m−2n、 n)となる。このビット長がn以下となるには、
m−2n < n (式5)
m < 3n (式6)
である必要がある。通常の場合、m≒2n<3n であるので、A_Rのビット長はnとなる。5050の処理を行うには、5040の処理結果がn以下となる必要がある。m < 3n の条件を満たさない場合には、図6に示す別の実施例による方法を行う。5050の処理を別の式で書くと、
( A_R + (−A_R*p^(−1) mod 2^n) * p ) / 2^n (式7)
であるが、A_R < 2^n かつ (−A_R * p^(−1) mod 2^n) < 2^n であるので、
( A_R + (−A_R*p^(−1) mod 2^n) * p ) / 2^n < 1+p (式8)
となり、必ず5050の処理の後の A_R は p以下となり、nビット長で表現できる。また、5050でA_Rの値がpと等しくなるのは、xの値がpの倍数となる場合のみである。
5030から5050までの処理を数式で表現すると、
となる。
5050以降の処理は、図3の3050以降の処理と同一である。xの値がpの倍数となっている場合、図2中の2130、2140の処理にて最終的に補正される。
【0013】
図6はモンゴメリ剰余乗算を用いた場合の本発明の別の一実施例を示す。mを入力xの格納に必要なビット長、nをPの格納に必要なビット長とする。0≦x≦P*Qであるので、必ずm≧nとなる。まず、L=n+mとして、図7に示されるフローに従って、U’_SQR=2^(n+m)U mod Pを計算する(6030)。6040以降の処理を行うためにはU’_SQRのビット数はm以下である必要があるが、U’_SQRは必ずmビット以下になる。6050の処理では、
( A_R + (−A_R*p^(−1) mod 2^m) * p ) / 2^m (式12)
であるが、A_R < 2^n かつ (−A_R * p^(−1) mod 2^m) < 2^m であるので、
( A_R + (−A_R*p^(−1) mod 2^m) * p ) / 2^m < 1+p (式13)
となり、必ず6050の処理の後の A_R は p以下となり、nビット長で表現できる。また、6050でA_Rの値がpと等しくなるのは、xの値がpの倍数となる場合のみである。
6030から6050までの処理を1つの式で表現すると、
となる。
6050以降の処理は、図3の3050以降の処理と同一である。xの値がpの倍数となっている場合、図2中の2130、2140の処理にて最終的に補正される。また、図5の実施例と異なり、m < 3n という条件は必要ない。
【0014】
図5、図6に示される実施例に必要な、2^L*U mod Pを計算する実施例を図7に示す。図7の手順は下位ビットからのアディションチェインにより、W:=2^L*Rmod Pを計算している。Wの初期値は、mビットに収まる形で、w≡2*(2^m) mod Pとなる値にする。Lを2進数表現したときに、最上位以外のビットに1がない場合は、L回の剰余自乗計算のみで計算できるが、L最上位ビット以外に1となるビットが有る場合には、途中で乗算を行う必要がある。従って、L最上位以外のビット位置に1が見つかったか否かを示す変数mulを用意しておく(7005)。7010の処理は、Pの最上位ビットがmの最上位ビットの位置と等しくなるようにシフトをした値を減じて、mビットの値に収まるようにするための処理である。7020、7030、7040、7050の処理は、Wの最上位2ビットを0とするための処理である。この処理は、最終的な演算結果がnビットに収まるようにするために行っている。処理が最上位ビットに達した際かのチェックを行い(7060)達している場合は、変数mulの値をチェックし(7080)、1であれば、YにLの途中のビットに相当する結果が格納されているので、WにYを乗じ(7090)結果とする。処理が最上位ビットにまで達していない場合は、Lの最下位ビット位置に1があるかチェックを行い(7070)見つかった場合は変数YにWの値を保存する。mulの値をチェックし(7100)、最上位以外のビットで1がはじめて見つかった場合は、YにWの値を代入し(7120)、mulに1を設定する(7130)。7120の処理は、本来Yに1を代入しておきY:=Y*Wと計算することと等しい。また、7100のチェックで、すでに最上位以外のビットで1が見つかっている場合は、Yの値に現在のWの値を乗じる(7110)。Rの剰余自乗計算をモンゴメリ剰余乗算で行い(7140)、Lを1ビット右にシフトし(7150)、7060からの処理を繰り返す。
7140の Y*Y*2^(−m) mod p の計算は、
(A*A+M*p)/(2^m) (式17)
と等しい。ここで、
M=−Y*Y*(p^(−1))mod 2^m < 2^m (式18)
である。
したがって、
(Y*Y+M*p)/(2^m) < (Y*Y+2^m*p)/(2^m) (式19)
また、Yをmビット長のメモリに格納したときの、最上位の0となるビットの数をsとすると、
であるので、7140の(Y*Y+M*p)/2^mの演算結果は、1回演算するごとに最上位の0であるビットの数が、s[t+1]:=2s[t]−1となる。従って、2^(m−2s)がpよりも大の場合は、t回計算したあと最上位から連続する0のビット数は、s[0]*2^(t−1)個となり、2^(m−2s)がpよりも小さくなれば、ビット長はpによって決定される。8020、8030、8040、8050の処理で最上位の2ビットは0に設定されるので、s[0]=2となり、t回8140を実行した後のビット数は、m−2^tもしくはnとなる。また、tの回数は、t=log2(L)であるので、ビット数は、max(m−L、 n)となる。
【0015】
図8は通常の剰余乗算を用いた場合の本発明の一実施例を示す。mを入力xの格納に必要なビット長、nをPの格納に必要なビット長とする。まず、図9のフローに従って、2^n mod Pを計算し、Rとする(8020)。次に、入力xにRを乗じる(8030)。最後に補正を行うためのR_ITOTALを計算する(8040)が、この処理はPが確定していれば、入力値xと独立して計算することが可能であるので、予め計算して保存して置いても良い。実際の計算では、まず2^(−n)mod pを「図10」の手順に従って計算し、R_INVとし、RおよびR_INVを元に図11の手順に従って、(R_INV)^(2^n−1) mod P を計算し、R_ITOTALとする。通常の剰余乗算を用いるので、演算の初期値Wは1とし、カウンタiに最上位ビットの位置を示すn−1を設定する(8050)。指数上位ビットから順に1が立っているかどうかを調べ(8060)、1が立っていれば、xR mod P(=A_R)をWに乗じ(4080)、ビットの値が0であれば、1を意味するRを乗じる(8070)。ビットの位置を1ビット下に移動し(8090)、最下位ビットまで処理が終了したかをチェックし(8100)、最下位ビットまで処理がたどり着いていない場合は、結果を二乗し(8110)、指数の次のビットの処理を行う。8070、8080の処理では通常の処理と比べると必ずRが毎回余計に乗じられるため、最下位ビットまで処理が終了した場合は、R^(2^n−1)が余分に乗じられることになる。余分に乗じられたR^(2^n−1)の影響を取り除くために、最後にR_ITOTAL(8210)を乗じる。
【0016】
図9は、図8の実施例中の8020で2^L mod Pを計算する処理の一実施例である。図9の手順は下位ビットからのアディションチェインにより、R:=2^L modPを計算している。Lを2進数表現したときに、最上位以外のビットに1がない場合は、L回の剰余自乗計算のみで計算できるが、L最上位ビット以外に1となるビットが有る場合には、途中で乗算を行う必要がある。Lの最上位以外のビット位置に1が見つかったか否かを示す変数mulを用意し、0に初期化しておく(9005)。次にRを2で初期化する(9010)。処理が最上位ビットに達した際かのチェックを行い(9060)達している場合は、変数mulの値をチェックし(9080)、1であれば、YにLの途中のビットに相当する結果が格納されているので、RにYを乗じ(9090)結果とする。最上位ビットにまで処理が達していない場合は、Lの最下位ビット位置に1があるかチェックを行い(9070)見つかった場合は変数Yに保存する。mulの値をチェックし(9100)、最上位以外のビットで1がはじめて見つかった場合は、YにRの値を代入し(9120)、mulに1を設定する(9130)。9120の処理は、本来Yに1を代入しておきY:=Y*Rと計算することと等しい。また、9100のチェックで、すでに過去に最上位以外のビットで1が見つかっている場合は、Yの値に現在のRの値を乗じる(9110)。Rの剰余自乗を計算し(9140)、Lを1ビット分右シフトしたのち(9150)、再び9060からの処理に戻る。
【0017】
図10は、図8の実施例中の8040でR_INV:=2^(−n) mod Pを計算する処理の一実施例である。図10の手順は下位ビットからのアディションチェインにより、R_INV:=2^(−L) mod Pを計算している。Lを2進数表現したときに、最上位以外のビットに1がない場合は、L回の剰余自乗計算のみで計算できるが、L最上位ビット以外に1となるビットが有る場合には、途中で乗算を行う必要がある。Lの最上位以外のビット位置に1が見つかったか否かを示す変数mulを用意し、0に初期化しておく(10005)。次にRを1/2で初期化する(10010)。1/2に初期化するには、1を1回右シフトすればよいが、1を右シフトすると0になるため、まずPを加えてから右シフトを行う。Pの値は大きな素数であるので、必ず奇数となる。したがって、1+Pは必ず偶数になるため、右シフトが可能である。つぎに処理が最上位ビットに達した際かのチェックを行い(10060)達している場合は、変数mulの値をチェックし(10080)、1であれば、YにLの途中のビットに相当する結果が格納されているので、R_INVにYを乗じ(10090)結果とする。最上位ビットにまで処理が達していない場合は、最上位以外のビット位置に1があるかチェックを行い(10070)見つかった場合は変数Yに保存する。mulの値をチェックし(9100)、最上位以外のビットで1がはじめて見つかった場合は、YにRの値を代入し(9120)、mulに1を設定する(9130)。9120の処理は、本来Yに1を代入しておきY:=Y*Rと計算することと等しい。また、9100のチェックで、すでに過去に最上位以外のビットで1が見つかっている場合は、Yの値に現在のRの値を乗じる(9110)。Rの剰余自乗を計算し(9140)、Lを1ビット分右シフトしたのち(9150)、再び9060からの処理に戻る。
【0018】
図11は、図8の実施例中の8040でR_ITOTAL:=(R_INV)^(2^n−1) mod Pを計算する処理の一実施例である。演算方法は、式26に示すように、R_INV^(2^n)にRを乗ずることにより行う。R_INV^(2^n)は、剰余自乗演算をn回繰り返すことにより計算する。
まず、R_ITOTALをR_INVで初期化し(11010)、つぎに剰余自乗算を行う回数nを変数iに代入(11020)、R_ITOTALの剰余自乗した値をR_ITOTALに代入し(11030)、カウンタ用変数iから1を減じ(11040)、カウンタ変数iの値が0よりも大きければ(11050)、11030からの処理を繰り返す。最後にRをR_ITOTALに剰余乗算した値をR_ITOTALに代入し(11060)、結果として返す。
付記:
1.法N上での計算において、非演算数にあらかじめNと互いに素な値をべき乗した値を乗じ、計算後に前記Nと互いに素な値のべき乗した値の法Nに対する逆元を乗ずることで計算することを特徴とした処理方法。
2.法N上での剰余計算において、非演算数にあらかじめNと互いに素な値をべき乗した値を乗じ、計算後に前記Nと互いに素な値のべき乗した値の法Nに対する逆元を乗ずることを特徴とした処理方法において、法Nが2よりも大きな素数の積であり、前記Nと互いに素である値として2を用いることを特徴とした処理方法。
3.モンゴメリ剰余乗算装置を有し、Pを素数とし、x>Pであるxに対して、x*(2^n) mod P を計算する情報処理装置に於いて、法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をmとし、入力値をx*(2^n) mod Pに変換する際に、2^(2m+n) mod Pを計算するか、あるいは予め用意しておき、モンゴメリ剰余乗算装置によりx1=x*2^(2m+n)*(2^(−m))mod P=x*2^(m+n) mod Pを計算し、さらにx2:=x1*(2^(−m))mod P=x*(2^n) mod Pを計算することにより、x mod Pを陽に求めること無しにx*(2^n) mod P を計算することを特徴とする情報処理装置。
4.Pを素数とし、x>Pであるxに対して、x*(2^n) mod P を計算する情報処理方法に於いて、法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をmとし、入力値をx*(2^n) mod Pに変換する際に、2^(2m+n) mod Pを計算するか、あるいは予め用意しておき、モンゴメリ剰余乗算によりx1=x*2^(2m+n)*(2^(−m))mod P=x*2^(m+n) mod Pを計算し、さらにx2:=x1*(2^(−m))mod P=x*(2^n) mod Pを計算することにより、x mod Pを陽に求めること無しにx*(2^n) mod P を計算することを特徴とする情報処理方法。
5.モンゴメリ剰余乗算装置を有し、Pを素数とし、x>Pであるxに対して、x*(2^n) mod P を計算する情報処理装置に於いて、法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をmとし、入力値をx*(2^n) mod Pに変換する際に、2^(m+2n) mod Pを計算するか、あるいは予め用意しておき、モンゴメリ剰余乗算装置によりx1=x*2^(m+2n)*(2^(−m))mod P=x*2^(2n) mod Pを計算し、さらにx2:=x1*(2^(−n))mod P=x*(2^n) mod Pを計算することにより、x mod Pを陽に求めること無しにx*(2^n) mod P を計算することを特徴とする情報処理装置。
6.Pを素数とし、x>Pであるxに対して、x*(2^n) mod P を計算する情報処理方法に於いて、法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をmとし、入力値をx*(2^n) mod Pに変換する際に、2^(m+2n) mod Pを計算するか、あるいは予め用意しておき、モンゴメリ剰余乗算方式によりx1=x*2^(m+2n)*(2^(−m))mod P=x*2^(2n) mod Pを計算し、さらにx2:=x1*(2^(−n))mod P=x*(2^n) mod Pを計算することにより、x mod Pを陽に求めること無しにx*(2^n) mod P を計算することを特徴とする情報処理方法。
7.法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をm、指数をdとし、べき乗の指数をsビットづつとりだしてsビット毎のべき乗演算の結果を合成して、x^d modPのべき乗剰余演算を行う情報処理装置において、sビットづつ取り出した指数のi番目の指数をd[i]としたとき、x^d[i]modPを演算する代わりに(2^n)^(2^s−1)*x^d[i]mod Pを用いて演算を行い、(2^n)^(2^n−1)*x^d mod Pを計算した後、2^(−n)^(2^n−1)mod Pを乗じて、x^d mod Pを計算することを特徴とする情報処理装置。
8.法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をm、指数をdとし、べき乗の指数をsビットづつとりだしてsビット毎のべき乗演算の結果を合成して、x^d modPのべき乗剰余演算を行う情報処理方法において、sビットづつ取り出した指数のi番目の指数をd[i]としたとき、x^d[i]modPを演算する代わりに(2^n)^(2^s−1)*x^d[i]mod Pを用いて演算を行い、(2^n)^(2^n−1)*x^d mod Pを計算した後、2^(−n)^(2^n−1)mod Pを乗じて、x^d mod Pを計算することを特徴とする情報処理方法。
【0019】
【発明の効果】
本発明によれば、べき乗剰余演算のCRT計算において、秘密素数による入力値の剰余計算を直接行わずに計算できるため、入力を変えながら、消費電流などを観測することで秘密素数を推定することが困難となる。「図12」は通例の方法による計算時のx mod Pのビット長およびハミングウエイト(値を2進数表現した場合に1になっているビットの数)を示す。「図13」は本発明における、x mod Pに相当するx・2^n mod Pのビット長及びハミングウエイトを示す。図12では入力データの値とx mod Pの間に明らかな依存性が現れているが、図13では入力データに依存せず、ビット長およびハミングウエイトが一定値となり、依存性が現れないことが確認できる。
【図面の簡単な説明】
【図1】通例のRSA用CRT演算方式の処理フロー。
【図2】モンゴメリ剰余乗算を用いた場合の、通例のCRT方式向けべき乗剰余演算の処理のフロー。
【図3】xとxを秘密素数pで剰余計算した結果のグラフ。
【図4】通常の剰余乗算を用いた場合の、通例のCRT方式向けべき乗剰余演算の処理のフロー。
【図5】本発明による、モンゴメリ剰余乗算を用いたセキュアな剰余演算処理の一実施例。
【図6】本発明による、モンゴメリ剰余乗算を用いたセキュアな剰余演算処理の別の一実施例。
【図7】本発明による、モンゴメリ剰余乗算を用いたセキュアな剰余演算処理の部分処理一実施例。
【図8】本発明による、セキュアなべき乗剰余演算処理の一実施例。
【図9】本発明による、セキュアなべき乗剰余演算処理の部分処理の一実施例。
【図10】本発明による、セキュアなべき乗剰余演算処理の部分処理の一実施例。
【図11】本発明による、セキュアなべき乗剰余演算処理の部分処理の一実施例。
【図12】通例のxとxを秘密素数pで剰余計算した結果のグラフ。
【図13】本発明によるxとxを秘密素数pで剰余計算した結果のグラフ。
Claims (3)
- ^をベキ乗演算と定義し、Pを素数とし、x>Pであるxに対して、x*(2^n) mod P を計算する情報処理方法に於いて、法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をmとし、入力値をx*(2^n) mod Pに変換する際に、2^(2m+n) mod Pを計算するか、あるいは予め用意しておき、モンゴメリ剰余乗算によりx1=x*2^(2m+n)*(2^(−m))mod P=x*2^(m+n) mod Pを計算し、さらにx2:=x1*(2^(−m))mod P=x*(2^n) modPを計算することにより、x mod Pを陽に求めること無しにx*(2^n) mod P を計算することを特徴とする情報処理方法。
- ^をベキ乗演算と定義し、Pを素数とし、x>Pであるxに対して、x*(2^n) mod P を計算する情報処理方法に於いて、法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をmとし、入力値をx*(2^n) mod Pに変換する際に、2^(m+2n) mod Pを計算するか、あるいは予め用意しておき、モンゴメリ剰余乗算方式によりx1=x*2^(m+2n)*(2^(−m))mod P=x*2^(2n) mod Pを計算し、さらにx2:=x1*(2^(−n))mod P=x*(2^n) mod Pを計算することにより、x mod Pを陽に求めること無しにx*(2^n) mod P を計算することを特徴とする情報処理方法。
- 法をP、入力値をx、法Pを格納するために必要充分なビット数をn、入力値xを格納するために必要なビット長をm、指数をdとし、ベキ乗の指数をsビットづつとりだしてsビット毎のベキ乗演算の結果を合成して、x^d mod Pのベキ乗剰余演算を行う情報処理方法において、sビットづつ取り出した指数のi番目の指数をd[i]としたとき、x^d[i]modPを演算する代わりに(2^n)^(2^s−1)*x^d[i]mod Pを用いて演算を行い、(2^n)^(2^n−1)*x^d mod Pを計算した後、2^(−n)^(2^n−1)mod Pを乗じて、x^d mod Pを計算することを特徴とする情報処理方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003014136A JP2004226674A (ja) | 2003-01-23 | 2003-01-23 | 情報処理方法 |
TW092113863A TW200413954A (en) | 2003-01-23 | 2003-05-22 | Information processing method |
KR1020030040981A KR20040067779A (ko) | 2003-01-23 | 2003-06-24 | 정보 처리방법 |
US10/608,209 US20040148325A1 (en) | 2003-01-23 | 2003-06-30 | Information processing means |
EP03018622A EP1443699A1 (en) | 2003-01-23 | 2003-08-19 | Information processing means and IC card |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003014136A JP2004226674A (ja) | 2003-01-23 | 2003-01-23 | 情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004226674A true JP2004226674A (ja) | 2004-08-12 |
JP2004226674A5 JP2004226674A5 (ja) | 2005-11-04 |
Family
ID=32652817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003014136A Abandoned JP2004226674A (ja) | 2003-01-23 | 2003-01-23 | 情報処理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20040148325A1 (ja) |
EP (1) | EP1443699A1 (ja) |
JP (1) | JP2004226674A (ja) |
KR (1) | KR20040067779A (ja) |
TW (1) | TW200413954A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009122461A1 (ja) | 2008-03-31 | 2009-10-08 | 富士通株式会社 | 電力解析攻撃への対策機能を備えた暗号化方法 |
CN114327370A (zh) * | 2022-03-10 | 2022-04-12 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2842052B1 (fr) * | 2002-07-05 | 2004-09-24 | France Telecom | Procede et dispositifs cryptographiques permettant d'alleger les calculs au cours de transactions |
FR2884004B1 (fr) * | 2005-03-30 | 2007-06-29 | Oberthur Card Syst Sa | Procede de traitement de donnees impliquant une exponentiation modulaire et un dispositif associe |
TW200707277A (en) * | 2005-04-20 | 2007-02-16 | Sean O'neil | Process of and apparatus for counting |
FR2888690A1 (fr) * | 2005-07-13 | 2007-01-19 | Gemplus Sa | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
FR2916113B1 (fr) * | 2007-05-07 | 2009-07-31 | Oberthur Card Syst Sa | Procede de traitement cryptographique d'un message. |
US8774400B2 (en) * | 2008-01-03 | 2014-07-08 | Spansion Llc | Method for protecting data against differntial fault analysis involved in rivest, shamir, and adleman cryptography using the chinese remainder theorem |
US8392494B2 (en) * | 2009-06-26 | 2013-03-05 | Intel Corporation | Method and apparatus for performing efficient side-channel attack resistant reduction using montgomery or barrett reduction |
CN102468956A (zh) * | 2010-11-11 | 2012-05-23 | 上海华虹集成电路有限责任公司 | 适用于rsa模幂计算的方法 |
CN104104504B (zh) * | 2014-07-22 | 2017-05-10 | 大唐微电子技术有限公司 | 一种rsa解密的方法及装置 |
CN104811297B (zh) * | 2015-04-23 | 2018-06-12 | 成都信息工程学院 | 针对RSA之M-ary实现模乘余数输入侧信道攻击 |
CN106452789B (zh) * | 2016-11-02 | 2019-06-18 | 北京宏思电子技术有限责任公司 | 一种多方位防侧信道攻击的签名方法 |
AU2019356344B2 (en) * | 2018-10-10 | 2022-03-31 | Nippon Telegraph And Telephone Corporation | Secure right shift computation system, secure division system, methods therefor, secure computation apparatus, and program |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2726668B1 (fr) * | 1994-11-08 | 1997-01-10 | Sgs Thomson Microelectronics | Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery |
JP3542278B2 (ja) * | 1998-06-25 | 2004-07-14 | 株式会社東芝 | モンゴメリ・リダクション装置及び記録媒体 |
US7607165B2 (en) * | 2001-03-09 | 2009-10-20 | The Athena Group, Inc. | Method and apparatus for multiplication and/or modular reduction processing |
IL143951A0 (en) * | 2001-06-21 | 2003-09-17 | Discretix Technologies Ltd | A method and apparatus for carrying out efficiently arithmetic computations in hardware |
-
2003
- 2003-01-23 JP JP2003014136A patent/JP2004226674A/ja not_active Abandoned
- 2003-05-22 TW TW092113863A patent/TW200413954A/zh unknown
- 2003-06-24 KR KR1020030040981A patent/KR20040067779A/ko not_active Application Discontinuation
- 2003-06-30 US US10/608,209 patent/US20040148325A1/en not_active Abandoned
- 2003-08-19 EP EP03018622A patent/EP1443699A1/en not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009122461A1 (ja) | 2008-03-31 | 2009-10-08 | 富士通株式会社 | 電力解析攻撃への対策機能を備えた暗号化方法 |
US8817973B2 (en) | 2008-03-31 | 2014-08-26 | Fujitsu Limited | Encrypting method having countermeasure function against power analyzing attacks |
CN114327370A (zh) * | 2022-03-10 | 2022-04-12 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN114327370B (zh) * | 2022-03-10 | 2022-06-21 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
Also Published As
Publication number | Publication date |
---|---|
US20040148325A1 (en) | 2004-07-29 |
TW200413954A (en) | 2004-08-01 |
KR20040067779A (ko) | 2004-07-30 |
EP1443699A1 (en) | 2004-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5412274B2 (ja) | サイドチャネル攻撃からの保護 | |
US7639808B2 (en) | Elliptic curve cryptosystem apparatus, elliptic curve cryptosystem method, elliptic curve cryptosystem program and computer readable recording medium storing the elliptic curve cryptosystem program | |
JP3821631B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体 | |
JP4662802B2 (ja) | 計算方法、計算装置及びコンピュータプログラム | |
Walter | Precise bounds for Montgomery modular multiplication and some potentially insecure RSA moduli | |
EP1457875A2 (en) | Apparatus and method for performing montgomery type modular multiplication | |
JP2004226674A (ja) | 情報処理方法 | |
JP2010277085A (ja) | Rsaアルゴリズムにおける素数生成の保護 | |
JP5446678B2 (ja) | 楕円曲線暗号演算装置及び方法 | |
JP5365624B2 (ja) | 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 | |
JP4977300B2 (ja) | 暗号法及び装置 | |
US20100287384A1 (en) | Arrangement for and method of protecting a data processing device against an attack or analysis | |
KR100652377B1 (ko) | 모듈라 지수승 알고리즘, 기록매체 및 시스템 | |
US20020126838A1 (en) | Modular exponentiation calculation apparatus and modular exponentiation calculation method | |
EP0952697B1 (en) | Elliptic curve encryption method and system | |
KR20030075146A (ko) | 암호 체계의 비밀 키 저장 및 복원 방법과 장치 | |
US6609141B1 (en) | Method of performing modular inversion | |
CN116132050A (zh) | 一种消息处理方法、系统、设备及计算机可读存储介质 | |
KR101990861B1 (ko) | 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치 | |
WO2015199675A1 (en) | System and method for securing scalar multiplication against differential power attacks | |
JP2003216026A (ja) | 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム | |
US11973866B2 (en) | Cryptographic processing method, related electronic device and computer program | |
JP5214317B2 (ja) | 暗号処理装置、暗号処理方法及びコンピュータプログラム | |
US10740068B2 (en) | Modular reduction device | |
Lu et al. | A secure modular exponential algorithm resists to power, timing, C safe error and M safe error attacks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050920 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050920 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050920 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090210 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20090226 |