KR20040067779A - 정보 처리방법 - Google Patents

정보 처리방법 Download PDF

Info

Publication number
KR20040067779A
KR20040067779A KR1020030040981A KR20030040981A KR20040067779A KR 20040067779 A KR20040067779 A KR 20040067779A KR 1020030040981 A KR1020030040981 A KR 1020030040981A KR 20030040981 A KR20030040981 A KR 20030040981A KR 20040067779 A KR20040067779 A KR 20040067779A
Authority
KR
South Korea
Prior art keywords
mod
value
surplus
bit
bits
Prior art date
Application number
KR1020030040981A
Other languages
English (en)
Inventor
엔도타카시
가미나가마사히로
와타나베타카시
Original Assignee
가부시키가이샤 히타치세이사쿠쇼
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 가부시키가이샤 히타치세이사쿠쇼 filed Critical 가부시키가이샤 히타치세이사쿠쇼
Publication of KR20040067779A publication Critical patent/KR20040067779A/ko

Links

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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • 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
    • 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/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random 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

RSA 암호의 고속연산 방법으로서, 중국인 잉여정리를 이용한 계산방법이 널리 사용되고 있지만, 최초의 연산에서, 비밀소수 p에 의한 잉여 계산이 필요하게 된다. 이 계산은, 비밀소수 p를 양으로 이용한 계산이므로, 옛날부터 공격(attack)의 대상으로 되어 있다.
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를 곱해서 보정한다.

Description

정보 처리방법{Information processing means}
본 발명은 정보 처리방법에 관한 것으로서, 특히 예를 들면, 기밀성(機密性)이 높은 IC카드 등의 내(耐)탬퍼(tamper resistant)장치에 관한 것이다.
RSA의 고속 연산방법의 CRT(Chinese Remainder Theory) 연산방식에서는, 계산의 제일 최초의 스텝에서 x mod p를 계산한다. CRT 연산방식의 처리 절차를 도1에 나타낸다. 우선, p로 환원한 값에 대해서 잉여(剩餘) 누승 연산(modular exponetiation)을 행하여 (1010), q로 환원한 값에 대해 누승(累乘) 잉여연산을 행한다(1020). 최후에 2개 의 누승 잉여연산 결과를 합성하여(1030) 최종적인 결과를 얻는다. 최초의 p로 환원한 값의 잉여 누승연산(1010) 및 q로 환원한 값 누승 잉여연산(1020)의 최초의 스텝에서, 각각 비밀지수(secret exponent) p에 대한 잉여, 비밀지수 q에 대한 잉여를 계산할 필요가 있다. 누승 잉여를 계산하기 위해서는, 잉여 승산을 반복해서 행하는 것으로 실현한다.
1010, 1020의 누승 계산에는 통상, 에디션 체인(addition chain)방법을 이용한다. 에디션 체인이란, 예를 들면, Z = A^L 을 계산하는 경우, 지수 L을 2진수로 전개하여,
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을 계산할 수 있다.
프로그램에 의해 표현하면,
Z = 1
for(i = n-1 ; i >= 0 ; i++ ){
W := W*W;
if(L[i]==1 ) then Z := Z*A; else W := W*1;
}
이 된다.
잉여 승산의 방식에는 크게 몽고메리 잉여 승산(Montgomery modularmultiplication)을 이용한 것과, 그렇지 않은 것 2개에 나눌 수 있다.
도 2는 몽고메리 잉여 승산을 이용한 경우의 에디션 체인에 의한 누승 잉여 계산의 처리 플로우다. n은, P를 저장하는데 충분한 비트 길이를 나타낸다.
우선, P에 대한 x의 잉여를 2020에서 구한다. 몽고메리 잉여 승산에서는, 승산할 때마다 2^(-n)mod p가 곱해지기 때문에, 미리 2^n을 피연산수(operand)에 곱해 놓는다.이하, 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보다 큰가 작은가에 따라, 크게 값이 변동하기 때문에, 어택 포인트(attack point)가 될 가능성이 있다.
「도 4」는 몽고메리가 아닌 잉여 승산을 이용해서 에디션 체인(addition chain)에 의한 누승 잉여 연산을 행한 경우의 처리 플로우다. 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가 계산 결과가 된다.
이상과 같이, 몽고메리 잉여 승산을 이용하고 있는 경우도, 통상의 잉여 승산을 행한 경우도, P에 의한 잉여 연산결과가 처리의 최초에 필요하게 되어 어택 포인트가 될 가능성이 있다.
RSA 암호는 인증과, 비밀 열쇠의 배송 등에 표준적으로 사용되어 있는 암호로서, 금융 용도 등에서는 그 연산의 안전성이 대단히 중요시되고 있다. RSA 암호의 고속연산 방법으로서, 중국인 잉여(나머지)정리(Chinese Remainder Theorem)를 이용한 계산 방법이 널리 이용되어 있지만, 그 가장 최초의 연산에서, 비밀소수 p에 의한 잉여 계산이 필요하게 된다. 이 계산은, 비밀소수 p를 양(陽)으로 이용한 계산이므로, 옛날부터 어택의 대상으로 되어 있다. p에 의한 잉여 계산에서 문제가 되는 것은, 도 2에 나타내는 바와 같이 x가 p의 배수(倍數)근방(2010)의 값인 경우 x < kp에서는, x mod p≒p로 되어 큰 값이 되는 한편, x > kp인 경우는, x mod p≒0으로 되고, 작은 값이 되는 것이다. x mod p의 값이 p를 경계로 하여 크게 변동하기 때문에, 입력 x가 비밀지수 p보다도 큰 것인가 작은 것인가가, 전류 값 등의 사이드 채널정보로서 식별할 수 있는 위험성이 있다. RSA 암호에서는, 큰 소수(현재는, 512bit 정도의 소수가 이용되고 있다) p, q의 곱셈(N)이 용이하게 인수 분해할 수 없는 것을 안전성의 근거로 해 놓고, N은 공개 열쇠의 일부로서 유저에게 공개되어 있다. 비밀소수 p 혹은 q가 리크하면, N/p는 용이하게 계산 가능한 것이므로, 비밀 열쇠 d는 공개 열쇠 e의 (p-1)(q-1)을 법(法)으로 하는 역원(逆元)을 계산하는 것에 의해, 구할 수 있다. 역원 계산은, 확장 유클리드 호제법(extended Euclid's algorithm)에 의해, 용이하게 계산 가능하다. 본 발명은, CRT용의 잉여 계산을 고속으로 안전하게 행하기 위한 계산 방법 및 장치에 관한 것이다.
도 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로 잉여 계산한 결과의 그래프이다.
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^nx mod p의 값은, 입력 x가 p의 근방에 있는 경우에도 x와 p의 대소(大小)관계에 의존한 값의 큰 변화는 발생하지 않고, 2^mx mod p의 비트 길이는 p의 비트 길이에 가까운 값이 된다. 따라서, 리크 정보로부터 x와 p의 대소관계를 추정하는 것이 불가능이 되어, 비밀 열쇠의 누설을 방지하는 것이 가능하다. 몽고메리 잉여 승산을 이용하는 경우에는, 2^n을 곱한 형식은, 그대로 몽고메리 포맷으로 되어 있으므로, 이후의 처리는, 종래의 처리 플로우를 사용할 수 있다.
몽고메리 잉여 승산을 이용하지 않는 경우에는, 지수연산 계산의 최후에, (2^(-n))^(2^n-1) mod p를 곱하고, 2^n mod p를 곱한 영향을 보정하는 것으로, 올바른 결과를 얻는다.
몽고메리 승산 이외의 잉여 승산을 이용하는 경우는, 승산과 제곱을 행한 후, R^(-2) mod p를 곱한다. 미리 R^(-2m)mod p를 계산해 놓고, 최후에 R^(-(2^m)+1) mod p를 곱해서 보정해도 된다.
도 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까지의 처리를 수식으로 표현하면,
A_R = x*2^(2n)*2^(m)*2^(-m)*2(-n) mod p (수식 9)
= x*2^(2n+m-m-n) mod p (수식 10)
= x*2^n mod p (수식 11)
이 된다.
5050 이후의 처리는, 도 3의 3050 이후의 처리와 동일하다. x의 값이 p의 배수로 되어 있는 경우, 도 2중의 2130, 2140의 처리에서 최종적으로 보정된다.
도 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개의 수식으로 표현하면,
A_R = x*2^(n+m)*2^(m)*2^(-m)*2(-m) mod p (수식 14)
= x*2^(n+m+m-m-m) mod p (수식 15)
= x*2^n mod p (수식 16)
이 된다.
6050 이후의 처리는, 도 3의 3050 이후의 처리와 동일하다. x의 값이 p의 배수로 되어 있는 경우, 도 2중의 2130, 2140의 처리에서 최종적으로 보정된다. 또한, 도 5의 실시예와 달리, m < 3n 이라는 조건은 필요없다.
도 5, 도 6에 나타내는 실시예에 필요한, 2^L*U mod p를 계산하는 실시예를 도 7에 나타낸다. 도 7의 절차는 하위 비트로부터의 에디션 체인에 의해, W:= 2^L*R mod 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라고 하면,
Y < 2^(m-s) (수식20)
Y <= 2^(m-s)-1 (수식 21)
(Y*Y+2^m*p)/(2^m) <= ((2^(m-s)-1)^2+2^m*p)/2^m (수식 22)
= 2^(m-2s)-2^(1-s)+2^(-m)+p (수식 23)
<2^(m-2s)+p+1 (수식 24)
이므로, 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)이 된다.
도 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)을 곱한다.
도 9는, 도 8의 실시예중의 8020에서 2^L mod P를 계산하는 처리의 일실시예이다. 도 9의 절차는 하위 비트로부터의 에디션 체인에 의해, R:= 2^L mod P를 계산하고 있다. 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에서의 처리로 되돌아간다.
도 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에서의 처리로 되돌아간다.
도 11은, 도 8의 실시예중의 8040로 R_ITOTAL:= (R_INV)^(2^n-1) mod P를계산하는 처리의 일실시예이다. 연산 방법은, 수식 26에 나타내는 바와 같이, R_INV^(2^n)에 R을 곱하는 것에 의해 행한다. R_INV^(2^n)은, 잉여제곱 연산을 n회 반복하는 것에 의해 계산한다.
(R_INV)^(2^n-1) mod P = R_INV^(2^n)*R_INV^(-1) mod P (수식 25)
= R_INV^(2^n)*R mod P (수식 26)
우선, 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 mod P의 누승 잉여 연산을 행하는 정보 처리장치에 있어서, s비트씩 꺼낸 지수의 i번째의 지수를 d[i]라고 한 경우, x^d[i] mod P를 연산하는 대신에 (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 mod P의 누승 잉여 연산을 행하는 정보 처리방법에 있어서, s비트씩 꺼낸 지수의 i번째의 지수를 d[i]이라 한 경우, x^d[i] mod P를 연산하는 대신에 (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를 계산하는 것을 특징으로 하는 정보 처리방법.
본 발명에 의하면, 누승 잉여연산의 CRT 계산에 있어서, 비밀소수에 의한 입력 값의 잉여 계산을 직접 행하지 않고 계산할 수 있기 때문에, 입력을 바꾸면서, 소비 전류 등을 관측하는 것으로 비밀소수를 추정하는 것이 곤란하게 된다.「도 12」는 통례의 방법에 의한 계산시의 x mod P의 비트 길이 및 허밍 웨이트(weight)(값을 2진수로 표현한 경우에 1로 되어 있는 비트의 수)를 나타낸다.「도 13」은 본 발명에서의, x mod P에 상당하는 xㆍ2^n mod P의 비트 길이 및 허밍 웨이트를 나타낸다. 도 12에서는 입력 데이터의 값과 x mod P의 사이에 명백하게 의존성이 나타나고 있지만, 도 13에서는 입력 데이터에 의존하지 않고, 비트 길이 및 허밍 웨이트가 일정한 값이 되어, 의존성이 나타나지 않는 것을 확인할 수 있다.

Claims (3)

  1. ^을 누승(powers)연산으로 정의하고, P를 소수로 하여, x > P인 x에 대해서, x*(2^n) mod P를 계산하는 정보 처리방법에 있어서,
    법(modulus)을 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를 계산하는 것을 특징으로 하는 정보 처리방법.
  2. ^을 누승연산으로 정의하고, 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를 계산하는 것을 특징으로 하는 정보 처리방법.
  3. 법을 P, 입력 값을 x, 법 P를 저장하기 위해 필요 충분한 비트 수를 n, 입력 값 x를 저장하기 위해 필요한 비트 길이를 m, 지수를 d라고 하고, 누승의 지수를 s비트씩 꺼내서 s비트마다의 누승 연산의 결과를 합성하여, x^d mod P의 누승 잉여연산을 행하는 정보 처리방법에 있어서,
    s비트씩 꺼낸 지수의 i번째의 지수를 d[i]라 한 경우, x^d[i] mod P를 연산하는 대신에 (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를 계산하는 것을 특징으로 하는 정보 처리방법.
KR1020030040981A 2003-01-23 2003-06-24 정보 처리방법 KR20040067779A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00014136 2003-01-23
JP2003014136A JP2004226674A (ja) 2003-01-23 2003-01-23 情報処理方法

Publications (1)

Publication Number Publication Date
KR20040067779A true KR20040067779A (ko) 2004-07-30

Family

ID=32652817

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030040981A KR20040067779A (ko) 2003-01-23 2003-06-24 정보 처리방법

Country Status (5)

Country Link
US (1) US20040148325A1 (ko)
EP (1) EP1443699A1 (ko)
JP (1) JP2004226674A (ko)
KR (1) KR20040067779A (ko)
TW (1) TW200413954A (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
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
WO2006110954A1 (en) * 2005-04-20 2006-10-26 Synaptic Laboratories Limited 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
WO2009122461A1 (ja) 2008-03-31 2009-10-08 富士通株式会社 電力解析攻撃への対策機能を備えた暗号化方法
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 北京宏思电子技术有限责任公司 一种多方位防侧信道攻击的签名方法
CN112805770B (zh) * 2018-10-10 2023-10-03 日本电信电话株式会社 秘密右移位运算系统及方法、秘密除法运算系统及方法、秘密计算装置以及记录介质
CN114327370B (zh) * 2022-03-10 2022-06-21 湖北芯擎科技有限公司 计算蒙哥马利模乘算法中mr值的方法及电路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
US20040148325A1 (en) 2004-07-29
EP1443699A1 (en) 2004-08-04
JP2004226674A (ja) 2004-08-12
TW200413954A (en) 2004-08-01

Similar Documents

Publication Publication Date Title
CN101194457B (zh) 随机模数化多项式约简方法及其硬件
Schindler A timing attack against RSA with the chinese remainder theorem
KR101255393B1 (ko) 타원 곡선 점 곱셈
CN109791517B (zh) 保护并行乘法运算免受外部监测攻击
US10361854B2 (en) Modular multiplication device and method
JP3821631B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
US20060093137A1 (en) Elliptic curve cryptosystem apparatus, elliptic curve cryptosystem method, elliptic curve cryptosystem program and computer readable recording medium storing the elliptic curve cryptosystem program
US20070185950A1 (en) Modular multiplication processing apparatus
JP2009537025A (ja) サイドチャネル攻撃からの保護
JP2008293034A (ja) タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
KR20040067779A (ko) 정보 처리방법
TWI403144B (zh) 隨機化模數減化方法及其硬體
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
US20110170685A1 (en) Countermeasure method and devices for asymmetric encryption with signature scheme
US20040028221A1 (en) Cryptographic method and cryptographic device
US8781112B2 (en) Signed montgomery arithmetic
EP0952697B1 (en) Elliptic curve encryption method and system
US6175850B1 (en) Scheme for carrying out modular calculations based on redundant binary calculation
US6609141B1 (en) Method of performing modular inversion
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
CN1985458A (zh) 增强的自然蒙哥马利指数掩蔽
JP2003233307A (ja) 秘密鍵を用いた耐タンパ暗号処理
US11973866B2 (en) Cryptographic processing method, related electronic device and computer program
KR102348797B1 (ko) Rsa 암호화 시스템의 rsa 회로 모듈

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid