KR20020063793A - 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 - Google Patents
몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 Download PDFInfo
- Publication number
- KR20020063793A KR20020063793A KR1020010058509A KR20010058509A KR20020063793A KR 20020063793 A KR20020063793 A KR 20020063793A KR 1020010058509 A KR1020010058509 A KR 1020010058509A KR 20010058509 A KR20010058509 A KR 20010058509A KR 20020063793 A KR20020063793 A KR 20020063793A
- Authority
- KR
- South Korea
- Prior art keywords
- surplus
- circuit
- register
- power
- bit
- Prior art date
Links
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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
멱승 잉여 연산 회로는 외부 버스와의 인터페이스인 I/F(인터페이스) 회로(101)와, 키 e를 유지하는 e 레지스터(102)와, 몽고메리 변환을 하는 승수(multiplier) Y를 유지하는 Y 레지스터(103)와, 키 N을 유지하는 N 레지스터(104)와, 몽고메리 변환의 연산 시에 실행하는 2B+N의 값을 유지하는 B2N 레지스터(105)와, 평문 X를 유지하는 X 레지스터(106)와, 암호화 및 복호화를 위한 연산을 실행하는 연산 회로(107)와, 연산 결과 P를 유지하는 P 레지스터(108)와, 멱승 잉여 연산 실행 시의 상태 머신(state machine)으로서 역할하는 멱승 잉여 제어 회로(109)와, 몽고메리 승산 잉여 연산과 잉여 연산 실행 시의 상태 머신으로서의 역할을 다 하는 몽고메리 승산 잉여·잉여 제어 회로(110)와, 가산 및 감산의 연산 제어를 실행하는 가산·감산 제어 회로(111)를 포함한다.
Description
본 발명은 정보 통신 네트워크, 교통, 금융, 의료, 유통 등의 분야에서 사용되는 정보의 암호화 기술 및 복호화 기술에서 사용되는 멱승 잉여(power-residue) 연산기에 관한 것으로, 특히, 몽고메리(Montgomery) 알고리즘을 이용한 멱승 잉여 연산기에 관한 것이다.
정보 통신 기술이 발전함에 따라, 정보 네트워크 상의 보안 확보(데이터의 도용이나 파괴를 방지하는 것)가 중요시되고 있다. 그 때문에, 정보의 암호화 기술 및 복호화 기술이 채용되는 경우가 많고, 그 적용 분야는 단순한 정보 통신 분야뿐만 아니라, 교통, 금융, 의료, 유통 등의 주변 분야에까지 확장되고 있다. 이러한 종류의 암호화 기술 및 복호화 기술에는, 고도의 보안을 단순한 원리로 실현할 수 있는 것이 요구된다.
우선, 이러한 종류의 기술을 쉽게 이해하기 위해서, 정보의 암호화·복호화에 대해서 개략적으로 설명한다. 암호의 분야에서는, "비대칭 암호 알고리즘"이 질적으로 우수하다. 비대칭 암호 알고리즘이라는 것은 암호화키와 복호화키가 다르게 되어 있고, 그 중 한쪽으로부터 다른 쪽이 "용이하게 계산될 수 없는" 암호 알고리즘을 말한다. 이 비대칭 암호 알고리즘의 대표적인 것으로, 멱승 잉여 연산(어떤 수 X를 몇 번이고 승산하여 N으로 나눈 나머지를 취하는 계산)을 이용하는 타입의 RSA(Rivest-Shamir-Adleman scheme) 암호가 있다.
RSA 암호를 생성하기 위해서는, 다음 수학식 (1)의 멱승 잉여 연산의 형식이 기본적으로 사용된다. 수학식 (1)은 XY를 N으로 나누었을 때의 나머지를 구하는 것을 의미한다. 또한, 수학식 (1)에 있어서, X는 암호화(복호화)의 대상이 되는 평문, Y 및 N은 암호화(복호화)를 위한 키(key)이다.
XYmodN…(1)
이러한 멱승 잉여 연산을 이용함으로써, 정보의 암호화 및 복호화가 용이하게 실행되고, 또한 X, Y, N의 피연산 함수(operand) 비트 길이를 길게 함으로써, 각 키의 해독을 곤란하게 할 수 있다.
그러나, 피연산 함수 비트 길이를 길게 하면, 멱승 잉여 연산에 장시간이 필요하게 된다. 그래서, 피연산 함수 비트 길이가 긴 멱승 잉여 연산을 어떻게 단시간에 종료시킬 것인가가 관건이 된다.
다음에, RSA 암호를 예로 취하여, 멱승 잉여 연산을 사용한 암호화 처리 및 복호화 처리에 대하여 설명한다.
(RSA 암호의 암호화 및 복호화에 대하여)
(1) RSA 암호의 암호화에는, 다음 수학식 (2)가 이용된다.
C=MemodN…(2)
복호화에는, 다음 수학식 (3)이 이용된다.
M=CdmodN…(3)
여기서, M은 암호화의 대상이 되는 평문이고, C는 암호화된 평문, 즉 암호문이다. 또한, 수학식 (2)에서의 e및 N은 암호화키, 수학식 (3)에서의 d 및 N은 복호화키이다. 또한, 이하의 수학식 (4) 및 수학식 (5)의 관계가 사전에 주어져 있다.
N=p·q…(4)
1≡e·dmod{LCM(p-1, q-1)}…(5)
여기서, 「≡」은 좌변과 우변이 서로 유사한 것을 의미하고, 「LCM」은 최소 공배수를 의미한다. 또한, p와 q는 서로소인 정수이다. 또한, e및 N은 공개키이며, d, p 및 q는 비밀키이다.
수학식 (4) 및 수학식 (5)는 모두 암호 알고리즘에서의 멱승 잉여 연산의 수치 조건을 정의하고 있다. 수학식 (4)는 N은 서로소인 큰 소수 p 및 q의 적(product)인 것을 나타내고 있다. p 및 q는 모두 기수이기 때문에, 당연히 N은 기수이어야 한다. 수학식 (5)는 수학식 (4)에서 나타낸 p 및 q로부터 각각 1을 감산한 값끼리의 최소 공배수이고, e 및 d의 적 e·d를 해당 최소 공배수로 나누었을때의 나머지가 1이 되는 것을 나타내고 있다.
수학식 (4) 및 수학식 (5)의 조건에 근거하고, 평문 M은 수학식 (2)를 이용하여 암호화되고, 또한 암호화된 평문 M(암호문 C)은 수학식 (3)을 이용하여 복호화된다.
(멱승 잉여 연산의 연산 방법에 대하여)
다음에, 암호화·복호화에서 사용되는 멱승 잉여 연산의 연산 방법을 설명한다. A=MemodN의 멱승 잉여 연산은 정수 e의 2진수 전개를 e=ek-1…e1e0으로 하여, 이하의 흐름 1에 나타내는 반복 제곱적 방법(iterative square product method)을 이용함으로써 실행된다.
(흐름 1)
begin
A=1
for i=k-1 to 0
begin
A=A2modN…(6)
If ei=1 then A=A·MmodN…(7)
end
end
A에 저장된 값이 구하고자 하는 멱승 잉여 연산의 해가 된다.
이상과 같이 연산의 기본은, 수학식 (6) 및 수학식 (7)에 도시하는 바와 같이, 승산과 제산(mod 연산)이다. 승산은 초기값을 1로 하는 A의 값에 대하여 A×A 또는 A×M을 실행하는 부분이다. 제산은 각각의 승산에서 얻어진 값에 대하여 modN(N으로 나누었을 때의 나머지를 구하는 연산)을 실행하는 부분이다. 이 승산과 제산(A×AmodN, A×MmodN)을 1쌍의 연산으로 하여, "e"의 비트값에 따라서 반복 연산이 행해진다. 즉, "e"의 최상위 비트로부터 최하위 비트까지의 각 비트의 내용에 의해서 "승산과 제산"이 행해진다.
멱승 잉여 연산은 기본으로 되는 잉여 연산(mod 연산)을 반복하여 실행함으로써 해가 얻어지는 것을 나타내었지만, 반복 회수 자체는 겨우 수백 내지 수천 회이기 때문에, 소프트웨어에 의한 처리로도 충분히 대응할 수 있다. 그러나, 잉여 연산 자체, 즉 제산을 하드웨어에 의해서 실행하기 위해서는, 규모가 큰 연산 회로와 복잡한 처리 순서가 필요하게 된다. 이 때문에, 개선이 요구되고 있었다. 통상, e, d, M, N 등은 1024비트 정도의 큰 정수가 이용되고 있기 때문에, 고속 지수 계산법을 사용하여도 한 번의 RSA 연산으로 평균 1500회 정도의 다중 정밀도 승산과 잉여 연산을 실행해야 한다. 특히, 잉여 연산은 근사법, 잉여 테이블 방식, 몽고메리의 알고리즘 등의 다양한 고속화 방법이 제안되어 있다.
이러한, RSA 암호로 대표되는 공개키 암호의 대부분에서 이용되는 멱승 잉여 연산을 고속으로 처리하기 위해서는, 1회당 잉여 연산의 고속화가 요구된다. 몽고메리의 알고리즘은 잉여 연산을 고속 처리하는 알고리즘이다. 특히, 승산 잉여 연산에서는, 제산을 비트 시프트 등으로 간략화할 수 있기 때문에, 공개키 암호(RSA 암호 등)에서 이용되는 멱승 잉여 연산을 고속 처리할 수 있다고 하는 특징이 있다.
한편, 중국인에 의한 잉여 정리에 따라, 합성수(composite number)를 모듈로 하는 연산은 합성수를 구성하는 서로소인 인수를 모듈로 하는 연산으로부터 계산할 수 있다. 이것을 1024비트 길이 RSA 암호 처리에 적용하면, 실제로 필요한 하드웨어로서는, 1024비트 길이의 모듈 N에 의한 멱승 잉여 연산 회로가 아니고, 512비트 길이의 정수(여기서는 p 및 q에 상당함)를 모듈로 하는 연산 회로만으로 된다. 이 때문에 하드웨어의 소형화에 기여한다.
멱승 잉여 연산은 기본으로 되는 잉여 연산(mod 연산)을 실행하는 순서가 매우 복잡하기 때문에, 연산 회로의 규모가 커지는 것을 언급하였다. 따라서, 몽고메리는 잉여 연산(mod 연산)을 전술한 바와 같은 일반적인 방법으로 실행하지 않고, "승산"과 간단한 비트열 처리로 실행함으로써 해를 구하는 방법을 제안하고 있다. 이하에 몽고메리가 제안하고 있는 방법에 대하여 간단히 설명한다.
(몽고메리의 알고리즘)
잉여 연산의 고속화를 실현하는 한 방법인 몽고메리의 알고리즘에 대하여 설명한다.
몽고메리의 알고리즘은 잉여 모듈 N(N> 1)과, 잉여 모듈 N과 서로소인 기수R(R>N)을 이용하면, 피잉여수를 T로 한 경우, TR-1modN의 계산이 기수 R에 의한 제산만으로 가능하다고 하는 성질을 이용하고 있다. 이에 따라, N에 의한 제산을 이용하지 않고 잉여 계산을 실행할 수 있다. 여기서, N, R, R-1및 T는 정수이다. 피잉여수 T는 0≤T<R·N을 만족하는 수이다. R-1은 잉여 모듈 N 상에서의 기수 R의 역수이다. 또한, 여기서, R·R-1-N·N'=1(0≤R-1<N, 0≤N'<R)의 관계를 만족하는 정수 N'을 고려할 수 있다. 또한, 기수 R에 2의 멱승수를 사용한 경우, 기수 R에 의한 제산을 시프트 조작으로 치환할 수 있다. 이 때문에, T+TR-1modN(피잉여수를 T로 한 경우의 TR-1modN)의 계산을 고속으로 처리할 수 있다.
다음에, 알고리즘 1로서, T→TR-1modN의 알고리즘 MR(T)를 나타낸다. 단, 알고리즘 1에 있어서(T+m·N)/R은 반드시 우수리 없이 나누어지는 것이 증명되어 있다.
(알고리즘 1)
T→TR-1modN의 알고리즘 Y=MR(T)는 다음과 같이 표시된다.
M=(TmodR)·N'modR…(8)
Y=(T+m·N)/R…(9)
ifY≥N then Y=Y-N
Y< N then return Y
한 번의 MR에서는, 잉여 TmodN이 아니라 TR-1modN이 구해질 뿐이다. 따라서, 잉여 TmodN을 구하기 위해서는, 다음에 도시하는 바와 같이, MR(T)과 미리 구해 둔 R2modN의 적으로, 다시 MR연산을 실행하면 된다.
MR(MR(T)(R2modN))
=(TR-1modN)(R2modN)R-1modN
=TR-1·R2·R-1modN
=TmodN
이와 같이 하여, 잉여 TmodN을 구할 수 있다.
이상의 것으로부터, 몽고메리법에 의한 승산 잉여 연산을 사용하여, 이것을 멱승 잉여 연산의 반복 제곱적 방법(반복 2승법)으로 실현하는 알고리즘을 아래에 나타낸다. 키 e의 상위 비트로부터 검색하여, 키의 비트값이 1인 경우에는, MR(X·Y)의 몽고메리 승산 잉여 연산을 실행한다.
Y=Rr (Rr=R2modN(R=2k+2))
X=M
X=MR(X, Y)…(10)
Y=MR(1·Y)…(11)
For j=k to 1
if ej==1 then Y=MR(X·Y)…(12)
if j> 1 then Y=MR(XY)…(13)
end
Y=MR(1·Y)…(14)
Y=YmodN…(15)
여기서, MR(X·Y)와 MR(Y·X)는 같고, ej는 키 e의 j번째 비트를 나타낸다. 512비트 길이의 정수인 경우 k=512로 되어, 512비트의 멱승 잉여 연산은 514비트의 몽고메리 승산 잉여 연산과 512비트 잉여 연산으로 실현할 수 있다.
또한, 하드웨어로서 실장하는 데에 가장 알맞은 기수(基數) W의 순차 계산으로 몽고메리 승산 잉여 연산 결과 P=MR(B·A)를 구하면, 이하와 같이 된다.
W=2d
N0'=N'modW
P=0
For j=0 to k
M=(PmodW)·N0'…(16)
P=((P+(AmodW)B·W+M·N)/W) mod2k…(17)
A=A/W…(18)
end
d는 자연수로서, 하드웨어에 의존하는 수이다. 이와 같이 하여, 몽고메리승산 잉여 연산 결과 P를 구할 수 있다. d=1의 기수 2의 순차 계산으로 514비트 몽고메리 승산 잉여 연산 결과 P=MR(B·A)를 구하면, 이하와 같이 된다.
N0'=N'mod2
P=0
for j=0 to 514
M=(Pmod2)N0'…(19)
P=((P+(Amod2)·B·2+M·N)/2)mod2514…(20)
A=A/2…(21)
end
이상과 같이, 멱승 잉여 연산을 실현하기 위해서, 하드웨어로 512비트 길이의 멱승 잉여 연산에 몽고메리 법을 사용하고, 소프트웨어로 중국인에 의한 잉여 정리를 이용한 처리를 사용하는 것이 종래에 채용되어 있다. 하드웨어로의 실장 방식은 여러 방식이 있고, 실제로 다양한 방식이 채용되어 있다고 생각된다.
그러나, 종래의 회로에서는, 도 8에 도시한 바와 같은 순서로 처리가 행하여지고 있다. 즉, 512비트 길이의 멱승 잉여 연산에 몽고메리 법을 사용한 회로를 실장한 하드웨어를 이용하여, 수학식 (10) 내지 수학식 (18)을 식 그대로 실행하고 있다. 예컨대, ej==0일 때는 수학식 (12)을 생략하고 있다. 한편, 수학식 (17)에서는 매회 모든 계산을 실행하고 있다. 그 때문에, 복잡한 처리 순서가 필요로 되어, 고속화가 더욱 더 요구되고 있다. 또한, 회로 규모가 작게 처리되어,LSI(Large Scale Integration)화에 적합한 회로가 필요하게 되므로, 연산 처리를 가능한 한 간략화하여 전체의 계산량을 줄여, 처리 속도를 향상시키는 것이 필요하다.
본 발명은 상술의 과제를 해결하기 위해서 이루어진 것으로, 고속 처리가 가능한 멱승 잉여 연산기를 제공하는 것을 목적으로 한다.
도 1은 멱승 잉여 연산 회로의 하드웨어 구성을 나타내는 블럭도,
도 2는 연산 회로 내에 마련된 파이프라인 처리(pipeline process)를 실행하는 가산기의 하드웨어 구성을 나타내는 블럭도,
도 3은 멱승 잉여 연산 처리의 흐름도,
도 4 내지 도7은 신호의 타이밍을 나타내는 타이밍도,
도 8은 종래의 멱승 잉여 연산 처리의 흐름도.
도면의 주요 부분에 대한 부호의 설명
101 : I/F 회로102 : e 레지스터
103 : Y 레지스터104 : N 레지스터
105 : B2N 레지스터106 : X 레지스터
107 : 연산 회로108 : P 레지스터
109 : 멱승 잉여 제어 회로
110 : 몽고메리 승산 잉여·잉여 제어 회로
111 : 가산·감산 제어 회로112 : 모드 레지스터
113 : 명령 레지스터114 : 상태 레지스터
115 : 내부 버스701∼715 : 가산 회로
716∼719, 721∼725 : SlaveC 회로720, 726 : MainC 회로
727∼741 : SubC 회로742∼752 : LookC 회로
본 발명의 일 국면에 따른 멱승 잉여 연산기는 몽고메리 승산 잉여 연산을 실행할 때의 한쪽의 인수를 2배한 값과 잉여 모듈을 가산한 값을 유지하는 레지스터와, 이 레지스터에 접속되고, 레지스터에 유지된 값을 참조하여, 몽고메리 승산 잉여 연산을 실행하는 몽고메리 승산 잉여 연산 실행부와, 몽고메리 승산 잉여 연산 실행부에 접속되고, 몽고메리 승산 잉여 연산 실행부와의 사이에서 데이터를 교환하고, 멱승 잉여 연산을 실행하는 멱승 잉여 연산 실행부를 포함한다.
몽고메리 승산 잉여 연산에 빈번하게 이용되는 값을 레지스터에 유지함으로써, 몽고메리 승산 잉여 연산을 고속으로 실행할 수 있다.
바람직하게는, 멱승 잉여 연산 실행부는 2진수로 표현된 멱지수의 각 비트의 값에 관계없이, 몽고메리 승산 잉여 연산 실행부에서 몽고메리 승산 잉여 연산을 실행하여, 멱승 잉여 연산을 실행한다.
멱지수의 각 비트의 값에 관계없이, 몽고메리 승산 잉여 연산이 항상 실행된다. 이 때문에, 멱승 잉여 연산기를 암호화 장치 및 복호화 장치에 이용한 경우에도, 타이밍 공격(resistance to timing)에 대한 내성을 확보할 수 있다.
더욱 바람직하게는, 멱승 잉여 연산기는 멱승 잉여 연산 실행부에서의 연산 모드를 유지하는 모드 레지스터를 더 포함하되, 멱승 잉여 연산 실행부는 모드 레지스터에 유지된 값에 근거하여, 2진수로 표현된 멱지수의 각 비트의 값에 기초한 몽고메리 승산 잉여 연산의 실행 여부를 판단하여, 몽고메리 승산 잉여 연산을 실행한다.
모드 레지스터에 유지된 값에 근거하여, 2진수로 표현된 멱지수의 각 비트의 값에 기초한 몽고메리 승산 잉여 연산의 실행 여부를 판단한다. 이 때문에, 테스트 시에는, 2진수로 표현된 멱지수의 각 비트의 값에 기초한 몽고메리 승산 잉여 연산을 실행하도록 하여, 실제 사용할 때는, 멱지수의 각 비트의 값에 관계없이, 몽고메리 승산 잉여 연산을 항상 실행하도록 하면, 테스트 시간을 단축할 수 있고, 또한 타이밍 공격에 대한 내성을 확보할 수 있다.
더욱 바람직하게는, 멱승 잉여 연산 실행부는 2진수로 표현된 멱지수의 각 비트의 값에 근거하여, 몽고메리 승산 잉여 연산의 실행 여부를 판단하여, 몽고메리 승산 잉여 연산을 실행한다.
2진수로 표현된 멱지수의 각 비트의 값에 근거하여, 몽고메리 승산 잉여 연산의 실행 여부를 판단하여, 몽고메리 승산 잉여 연산을 실행한다. 이 때문에, 비트값으로서 1이 출현할 때까지의 동안은 몽고메리 승산 잉여 연산의 결과를 미리알고 있는 경우가 있다. 이러한 경우에, 처리를 생략함으로써, 고속으로 처리할 수 있다.
더욱 바람직하게는, 멱승 잉여 연산 실행부는 2진수의 비트열을 가산하는 가산기를 포함하며, 가산기는 2진수의 비트열을 소정 비트마다 분할하고, 분할 후의 비트열끼리 가산을 실행하는 복수의 서브 가산기를 포함한다.
가산기를 서브 가산기로 분할하여 파이프라인 처리를 실행함으로써, 고속으로 가산을 실행할 수 있다. 이 때문에, 멱승 잉여 연산을 고속으로 실행할 수 있게 된다.
더욱 바람직하게는, 멱승 잉여 연산기는 몽고메리 승산 잉여 연산 실행부 및 멱승 잉여 연산 실행부에 접속되어, 연산의 일부를 취출하여 실행하기 위한 회로를 더 포함한다.
멱승 잉여 연산 시에 행하는 각종 연산을 취출하여 실행함으로써, 다양한 종류의 암호화 처리를 실현할 수 있게 된다.
본 발명의 상기 및 그 밖의 목적, 특징, 국면 및 이익 등은 첨부 도면을 참조로 하여 설명하는 이하의 상세한 실시예로부터 더욱 명백해질 것이다.
(멱승 잉여 연산 회로의 전체 구성)
도 1을 참조하여, 본 발명의 실시예 1에 따른 멱승 잉여 연산 회로는 외부 버스와의 인터페이스인 I/F(인터페이스) 회로(101)와, 키 e를 유지하는 e 레지스터(102)와, 몽고메리 변환을 행하는 승수 Y를 유지하는 Y 레지스터(103)와,키 N을 유지하는 N 레지스터(104)와, 몽고메리 변환 연산 시에 행하는 2B+N의 값을 유지하는 B2N 레지스터(105)와, 평문 X를 유지하는 X 레지스터(106)와, 암호화 및 복호화를 위한 연산을 실행하는 연산 회로(107)와, 연산 결과 P를 유지하는 P 레지스터(108)와, 멱승 잉여 연산 실행 시의 상태 머신(state machine)으로서 역할하는 멱승 잉여 제어 회로(109)를 포함한다.
또한, 제곱 승산 잉여 연산 회로는 몽고메리 승산 잉여 연산과 잉여 연산의 실행 시의 상태 머신으로서 역할 하는 몽고메리 승산 잉여·잉여 제어 회로(110)와, 가산 및 감산의 연산 제어를 실행하는 가산·감산 제어 회로(111)와, 각종 모드를 유지하는 모드 레지스터(112)와, 명령을 유지하는 명령 레지스터(113)와, 상태를 유지하는 상태 레지스터(114)와, 각종 레지스터와 연산 회로(107) 사이에서의 데이터 교환을 실행하기 위한 내부 버스(115)를 더 포함한다.
멱승 잉여 연산을 실행하는 데 있어서, 고속화를 실현하기 위해서 몽고메리법에 의한 승산 잉여 연산을 사용하고 있지만, 그 몽고메리 법의 연산 [P=MR(B·A)]를 행하기 전에 [2B+N]의 계산을 실행하고, 그 결과를 B2N 레지스터(105)에 저장한다.
몽고메리 법의 연산 MR(B·A)의 동작에 대하여 설명한다. 여기서, B=X, A=Y인 경우를 고려한다. 우선, [2B+N]의 계산을 실행한다. [2B+N]의 연산은 이하와 같이 하여 실행된다. 연산 회로(107)는 N 레지스터(104)에 유지된 값을 0과 가산하여, P 레지스터(108)에 기억한다. 연산 회로(107)는 X 레지스터(106)에 유지된 값을 2배하고, 그 값과 P 레지스터(108)에 유지된 값을 가산하여, P 레지스터(108)에 기록한다. 몽고메리 승산 잉여·잉여 제어 회로(110)는 P 레지스터(108)에 유지된 값을 B2N 레지스터(105)에 기록한다. 다음에, 수학식 (19), 수학식 (20) 및 수학식 (21)의 연산을 515회 반복하여 실행한다.
몽고메리 승산 잉여 연산 중 수학식 (20)을 계산할 때, Amod2==1 및 M==1인 경우는 B2N 레지스터(105)로부터 데이터를 판독하고, 내부 버스(115)를 통해서 판독된 데이터와 P 레지스터(108)에 기억된 값을 연산 회로(107)에서 가산한다. 또한, Amod2==0 및 M==1인 경우는 N 레지스터(104)로부터 데이터를 판독하여 연산 회로(107)에서 P 레지스터(108)에 기억된 값과 가산한다. Amod2==0 및 M==0인 경우는 [0+P]의 가산을 실행한다. 0은 내부 버스(115)를 흐르는 데이터를 0으로 하는 등으로 생성된다. e 레지스터(102)는 키 e, Y 레지스터(103)는 Y, N 레지스터(104)는 모듈 N, X 레지스터(106)는 X를 유지하는 레지스터이며, P 레지스터(108)는 몽고메리 승산 잉여 연산의 수학식 중에서 수학식 (19) 및 수학식 (20)에서 구해지는 값 P를 유지하는 레지스터이다.
(연산 회로(107)에 마련된 가산기의 구성)
도 2를 참조하여, 연산 회로(107) 내에 마련된 파이프라인 처리를 실행하는 가산기에 대하여 설명한다.
이 가산기는 몽고메리 승산 잉여 연산을 실행하는 가산기의 구성을 복수의 서브 가산기로 분할하여, 가산기의 캐리(carry)의 단수를 적게 한 구성으로 하고 있다. 가산기는 서브 가산기 내의 캐리 회로(SubC 회로)(727∼741)와, 서브 가산기 내에서 캐리가 발생할 가능성을 나타내는 캐리 회로(LookC 회로)(742∼752)와, 서브 가산기 사이에서 캐리를 전파시키기 위한 캐리 회로(MainC 회로)(720, 726)와, 가산 결과를 얻기 위한 캐리 회로(SlaveC 회로)(716∼719) 및 (721∼725)와, 실제로 가산 처리를 실행하는 가산 회로(adder)(701∼715)를 포함한다.
캐리 회로(LookC)(742∼752)는 하위의 서브 가산기에서 캐리가 발생했다고 가정하여, 비트끼리의 가산을 실행하여, 캐리가 발생할 가능성을 판단한다.
일례로서, 15비트의 파이프라인 처리를 실행하는 가산기에 대하여 설명한다.
15비트일 경우, 하위 비트로부터 4+5+6=15의 단수가 적당하다. 우선, 4단의 서브 가산기 내에서는 통상적으로 가산이 실행되고, 캐리가 검출되어, 가산 결과가 얻어진다. 5단의 서브 가산기에서는, 4단의 서브 가산기로부터의 캐리를 포함해서 SlaveC 회로와 adder 회로에 의해 5단의 가산 결과를 얻는다. 한편, 5단 내에서만 캐리를 SubC 회로로 검출한다. 또한, LookC 회로는 하위의 비트로부터 캐리가 발생했다고 가정하여 캐리 신호를 검출한다.
그리고, 4단의 서브 가산기로부터의 캐리 신호에서 다음 6단의 서브 가산기로의 캐리를 SubC 회로(735)와 LookC 회로(745)로부터의 신호 중 어느 신호로 할 것인가를 MainC 회로(720)가 선택한다. 마찬가지로 6단의 서브 가산기에서도 가산 결과를 얻는다.
예컨대, 4단의 서브 가산기에서 「1111+1110」의 가산이 행해지는 경우를 상정한다. 각 비트에서의 연산은 이하와 같이 된다.
0비트 0+1=1 캐리 없음
1비트 1+1=0 캐리 있음
2비트 1+1+1(1비트로부터의 캐리)=1 캐리 있음
3비트 1+1+1(2비트로부터의 캐리)=1 캐리 있음
이 때, SubC 회로(730)로부터는「캐리 있음」의 신호가 MainC 회로(720)에 인가된다. 따라서, 이 경우, MainC 회로(720)는 하위의 서브 가산기로부터 캐리가 있다고 하여 가산 연산을 실행한 LookC(742∼746)의 캐리를, 5단의 서브 가산기의 캐리로서 6단의 서브 가산기에 출력한다. 반대로, SubC 회로(730)로부터「캐리 없음」의 신호가 MainC 회로(720)에 인가되면, MainC 회로(720)는 SubC 회로(735)의 캐리를 출력한다.
이와 같이, 서브 가산기로서 분할되어 있지 않은 경우, 14비트의 가산은 0비트로부터의 캐리를 갖고 가산해야 하기 때문에, 14단의 회로 분량의 시간이 필요하지만, 복수로 분할하면, 0비트로부터의 캐리는 SubC(727∼730), MainC 회로(720), SlaveC 회로(721∼725)의 10단 분량의 처리 시간으로 끝난다.
예컨대, 「000101011001101」과 「010000011110010」을 가산하는 경우에 대하여 설명한다. SubC 회로(727)는 0비트 째끼리의 가산 (1+0)을 행한다. 가산 결과 (1)은 가산 회로(701)에 공급된다. 또한, 캐리 (0)은 SubC 회로(728) 및 가산 회로(702)에 공급된다. 가산 회로(701)는 SubC 회로(727)로부터 수신한 값을 0비트 째의 가산 결과로서 출력한다.
SubC 회로(728)는 1비트 째의 값(0 및 1)과, 0비트 째로부터의 캐리 (0)과의 가산 (0+1+0)을 실행한다. 가산 결과 (1)은 가산 회로(702)에 공급된다. 또한,캐리 (0)은 SubC 회로(729) 및 가산 회로(703)에 공급된다. 가산 회로(702)는 0비트 째의 캐리 (0)과 2비트 째의 가산 결과 (1)을 가산하여, 1비트 째의 가산 결과 (1)을 출력한다. 마찬가지로, 가산 회로(703∼715)에서는, 이전 비트의 캐리와 목표로 하는 비트의 가산 결과의 가산이 행해진다.
LookC 회로(742)는 4단의 서브 가산기에서 캐리가 발생했다고 가정하여 4비트 째 캐리의 계산을 실행한다. 즉, 4비트 째의 값끼리의 가산과 캐리(1)의 가산 (0+1+1)이 실행된다. 연산 결과의 캐리는 LookC 회로(743)에 인가된다. LookC 회로(747)에서도 동일한 처리가 행해진다.
LookC 회로(743)는 5비트 째의 값과 LookC 회로(742)로부터의 캐리의 가산 연산 (0+1+1)을 실행하여, 연산 결과의 캐리 (1)을 LookC(744)에 공급한다. LookC 회로(744∼746) 및 (748∼752)에서도 마찬가지의 처리가 행해진다. LookC 회로(746)의 출력은 MainC 회로(720)에 공급된다. LookC 회로(752)의 출력은 MainC 회로(726)에 공급된다.
SubC 회로(731)는 5비트 째끼리의 가산 (0+1)을 실행한다. 가산 결과(1)는 가산 회로(705) 및 SlaveC 회로(716)에 공급된다. 캐리(0)는 SubC 회로(732)에 공급된다. SubC 회로(736)에서도 동일한 처리가 행해진다.
SubC 회로(732)는 6비트 째끼리의 가산과 5비트 째의 캐리 (0)의 가산 (0+1+0)을 실행한다. 가산 결과 (1)은 가산 회로(706) 및 SlaveC 회로(717)에 공급된다. 캐리 (0)은 SubC 회로(733)에 공급된다. 마찬가지로, SubC 회로(733∼735)에서, 이전 비트의 캐리와 목표로 하는 비트값의 가산이 행해진다.또한, SubC 회로(735)에서의 가산 결과는 가산 회로(709)에만 공급되고, SubC 회로(735)에서의 캐리는 MainC 회로(720)에 공급된다. SubC 회로(736∼741)에서도 동일한 처리가 행해진다.
SlaveC 회로(716)는 3비트 째의 캐리 (0)과 4비트 째의 가산 결과 (1)을 가산하여, 캐리를 가산 회로(706) 및 SlaveC 회로(717)에 공급한다. SlaveC 회로(717∼719) 및 (721∼725)에서도 마찬가지의 처리가 행해진다.
MainC 회로(720)는 SubC 회로(730)가 출력하는 전단의 서브 가산기의 캐리가 1인 경우에는, LookC의 출력을 SlaveC 회로(721)에 공급하고, 캐리가 0인 경우에는, SubC 회로(735)가 출력하는 캐리를 SlaveC 회로(721)에 공급한다. MainC 회로(726)도 동일한 처리를 실행한다.
전술한 바와 같이 하여, 15비트의 데이터끼리의 가산이 행해진다. 즉, SubC 회로, LookC 회로 및 MainC 회로에서 계산이 행해진 후, SlaveC 회로 및 가산 회로에서 계산이 행해진다. 이와 같이, 2단계로 나누어서 가산 처리가 실행된다.
예로 든 15비트에서는 그다지 큰 단수의 차이는 발생하지 않고 있지만, 보다 큰 비트의 가산기, 예컨대, 130비트에서는, 분할하지 않는 경우는 129단 분량의 처리 시간이 걸리는 것에 대하여, 분할한 경우는 30단 분량의 처리 시간으로 끝난다. 또한, 6단의 서브 가산기의 캐리에 오는 0비트로부터의 캐리를 구하기 위한 회로의 단수를 5단(SubC 회로(727∼730), MainC 회로(720)의 5단)으로 하고, 6단의 서브 가산기 내의 캐리를 구하기 위한 회로의 단수를 6단(SubC 회로(736∼741)와 LookC 회로(747∼752)의 2개 모두 6단)으로 하고 있다. 이러한 구성으로 함으로써, 보다큰 비트의 가산기에서도 단수의 차이가 거의 없는 구성으로 할 수 있다. 이에 따라, 타이밍 등에 대한 회로 설계가 용이하게 되어, 회로 규모도 작게 할 수 있다는 효과가 있다.
또한, 130비트의 파이프라인에서의 가산기에서는, 4단, 5단, 6단, 7단, 8단, 9단, 10단, 11단, 12단, 13단, 14단, 15단 및 16단의 서브 가산기로 가산기를 구성하는 것이 적당하다.
(멱승 잉여 연산 처리에 대하여)
도 3은 멱승 잉여 연산 처리의 흐름도이다. 도 4는 신호의 타이밍을 나타내는 타이밍도이다.
종래에는, 몽고메리법에 의한 승산 잉여 연산을 사용하여 멱승 잉여 연산을 실행하는 경우, 키 e의 비트를 검색하여 ej==1인 경우는, 수학식 (12)의 [Y=MR(X·Y)]를 실행하고, ej==0인 경우는, 수학식 (12) [Y=MR(X·Y)]를 생략하여 실행하지 않았다. 본 실시예에서는, ej의 값에 관계없이 항상 수학식 (12)의 [MR(X·Y)]를 실행한다. 수학식 (12)의 연산 결과를 Y 레지스터(103)에 기억시킬 때에 ej의 값(301)을 체크하여, ej==1인 경우는 Y 레지스터 기록 신호(304)를 출력하여 Y 레지스터(103)에 연산 결과를 기록하고, ej==0인 경우는 Y 레지스터 기록 신호(304)를 출력하지 않아 Y 레지스터(103)에 연산 결과를 기록하지 않도록 한다. 이와 같이, 수학식 (12)을 항상 실행함으로써, 멱승 잉여 연산 시간을 일정하게 할 수 있다. MR(X·Y) 연산 신호(302)는 "H"일 때, 연산 중인 것을 나타낸다. Y 레지스터 기록 신호(303)는 "H"일 때, Y 레지스터(103)에 데이터를 기록하는 것을 나타낸다.
이상과 같이, 수학식 (12)의 연산을 항상 실행하도록 했기 때문에, 연산 시간이 키의 값에 관계없이 일정하게 된다. 이 때문에, 타이밍 공격에 대한 내성을 확보할 수 있다고 하는 효과가 있다. 또한, 타이밍 공격이란, 암호문, 키의 길이에 따라서 처리 시간이 변화되는 것에 주목하고, 암호의 해독을 하는 것을 의미한다.
(멱승 잉여 연산 이외의 연산에 대하여)
멱승 잉여 연산기에는, 멱승 잉여 제어 회로(109), 몽고메리 승산 잉여·잉여 제어 회로(110) 및 가산·감산 제어 회로(111)가 포함된다. 이 때문에, 이들 제어 회로를 단독 또는 조합하여 사용함으로써, 몽고메리 승산 잉여 연산, 잉여 연산, 저장 연산, 가산, 감산, 조건부 가산, 조건부 감산 등의 각종 연산을 독립적으로 실행할 수 있다.
이와 같이 멱승 잉여 연산을 구성하는 각종 연산을 독립적으로 실행할 수 있도록 함으로써, RSA 암호 이외의 각종 암호 연산을 실행할 수 있게 된다. 또한, 어떤 원인으로 멱승 잉여 연산기가 동작하지 않는 경우에, 각종 연산을 독립적으로 실행함으로써, 동작하지 않는 원인을 구명할 수 있다.
이상 설명한 바와 같이, 본 실시예에서는, 빈번하게 이용되는 [2B+N]의 결과를 유지하는 B2N 레지스터(105)를 마련함으로써, 몽고메리 승산 잉여 연산의 고속화와 연산 회로의 간략화를 도모할 수 있다.
(실시예 2)
본 발명의 실시예 2에 따른 멱승 잉여 연산기는 실시예 1에 따른 멱승 잉여 연산기와 마찬가지의 하드웨어 구성을 갖는다. 따라서, 그에 대한 상세한 설명은 생략한다.
도 5는 실시예 2에서의 신호의 타이밍을 나타내는 타이밍도이다. 본 실시예에서는, 모드 레지스터(112)에 소정값을 설정함으로써, 멱승 잉여 연산의 실행 방법을 다르게 한 것이다.
스킵 모드 신호(401)가 "H"인 경우에는, ej==0일 때는 수학식 (12)을 연산하지 않고서 수학식 (13) [Y=MR(Y·Y)]만을 연산한다. 스킵 모드 신호(401)가 "L"인 경우에는, 실시예 1과 마찬가지로 동작한다.
이상과 같이, 수학식 (12)의 연산을 생략하는 모드를 설정할 수 있도록 했기 때문에, 테스트 시간의 단축을 도모할 수 있다.
(실시예 3)
본 발명의 실시예 3에 따른 멱승 잉여 연산기는 실시예 1에 따른 멱승 잉여 연산기와 마찬가지의 하드웨어 구성을 갖는다. 따라서, 그에 대한 상세한 설명은 생략한다.
도 6은 실시예 3에서의 신호의 타이밍을 나타내는 타이밍도이다. 통상의 방법으로 멱승 잉여 연산을 실행하면, 수학식 (11)의 연산 결과는
Y=MR(1·Y)=1·R2·R-1modN
=RmodN
으로 된다. 최초의 j=k로부터 ej==0의 사이, 조건식대로, 수학식 (12)에서는 Y의 값은 변화하지 않는다. 따라서, 수학식 (13)의 연산만을 고려하면,
Y=MR(Y·Y)=RmodN·RmodN·R-1modN
=R·R·R-1modN
=RmodN
으로 되어, 연산 결과는 동일하다. 이상과 같이 ej==1에서 수학식 (12) [Y=MR(X·Y)]를 연산하고 Y의 값이 변화될 때까지는 수학식 (13) [Y=MR(Y·Y)]를 연산하여도 Y의 값은 변화하지 않는다. 따라서, ej==1이 될 때까지는 수학식 (12) 및 수학식 (13)의 연산을 실행하지 않아도 상관이 없다는 것을 알 수 있다.
통상은 연산 시간을 일정하게 하기 위해서 모든 연산을 실행하지만, 모드 레지스터(112)에 값을 설정함으로써, 서치 모드 신호(501)를 "H"로 하고, 반복 연산(수학식 (12) 및 수학식 (13))에 있어서, ej==1이 될 때까지는 수학식 (12) 및 (13)의 연산을 실행하지 않고서 [j-1]의 연산만 실행한다. 이와 같이, ej==1인지 여부를 체크하는 모드를 마련했다.
이상과 같이, 수학식 (12) 및 (13)의 연산을 생략하는 모드를 설정할 수 있도록 했기 때문에, 키 e의 값에 따라서는 테스트 시간이 크게 단축될 수 있다고 하는 효과가 있다.
(실시예 4)
본 발명의 실시예 4에 따른 멱승 잉여 연산기는, 실시예 1에 따른 멱승 잉여 연산기와 마찬가지의 하드웨어 구성을 갖는다. 따라서, 그에 대한 상세한 설명은 생략한다.
도 7은 실시예 4에서의 신호의 타이밍을 나타내는 타이밍도이다. 본 실시예에서는, 실시예 2에서 설명한 스킵 모드 및 실시예 3에서 설명한 서치 모드를 모두 모드 레지스터(112)에 설정할 수 있다.
예컨대, 이들 양 모드를 설정한 경우에는, ej==1이 될 때까지는 수학식 (12) 및 수학식 (13)을 연산하지 않는다. 일단 ej==1이 된 후에는 수학식 (12) 및 수학식 (13)을 모두 연산한다. 그 후에는, ej의 값에 따라서, ej==0일 때는, 수학식 (12)을 생략하고 수학식 (13)만 실행한다. 또한, ej==1일 때는 수학식 (12) 및 수학식 (13) 모두를 연산한다.
이상 설명한 바와 같이, 스킵 모드 및 서치 모드의 양 모드를 모드 레지스터(112)에 설정함으로써, 실시예 2 또는 실시예 3보다도 테스트 시간을 더욱 단축할 수 있다.
본 발명에 따르면, 몽고메리 승산 잉여 연산에 빈번하게 이용되는 값을 레지스터에 유지함으로써, 몽고메리 승산 잉여 연산을 고속으로 실행할 수 있다.
상기에 있어서, 본 발명의 바람직한 실시예에 대해서 설명하였는데, 본 발명의 특허 청구 범위를 이탈하지 않으면서 당업자는 다양한 변경을 행할 수 있음은 물론이다.
Claims (3)
- 몽고메리 승산 잉여 연산을 실행할 때의 한쪽 인수를 2배한 값과 잉여의 법(residual modulo)을 가산한 값을 유지하는 레지스터와,상기 레지스터에 접속되고, 상기 레지스터에 유지된 값을 참조하여, 몽고메리 승산 잉여 연산을 실행하는 몽고메리 승산 잉여 연산 실행부와,상기 몽고메리 승산 잉여 연산 실행부에 접속되고, 상기 몽고메리 승산 잉여 연산 실행부와의 사이에서 데이터를 교환하여, 멱승 잉여 연산을 실행하는 멱승 잉여 연산 실행부를 포함하는 멱승 잉여 연산기.
- 제 1 항에 있어서,상기 멱승 잉여 연산 실행부는2진수로 표현된 멱지수의 각 비트값에 관계없이, 몽고메리 승산 잉여 연산 실행부에서 몽고메리 승산 잉여 연산을 실행하여, 멱승 잉여 연산을 실행하는멱승 잉여 연산기.
- 제 1 항에 있어서,멱승 잉여 연산 실행부에서의 연산 모드를 유지하는 모드 레지스터를 더 포함하되,상기 멱승 잉여 연산 실행부는 상기 모드 레지스터에 유지된 값에 근거하여, 2진수로 표현된 멱지수의 각 비트값에 근거한 몽고메리 승산 잉여 연산을 실행할지 여부를 판단하여, 몽고메리 승산 잉여 연산을 실행하는멱승 잉여 연산기.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2001-00021128 | 2001-01-30 | ||
JP2001021128A JP2002229445A (ja) | 2001-01-30 | 2001-01-30 | べき乗剰余演算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20020063793A true KR20020063793A (ko) | 2002-08-05 |
KR100442218B1 KR100442218B1 (ko) | 2004-07-30 |
Family
ID=18886731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-0058509A KR100442218B1 (ko) | 2001-01-30 | 2001-09-21 | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7024560B2 (ko) |
JP (1) | JP2002229445A (ko) |
KR (1) | KR100442218B1 (ko) |
CN (1) | CN1242321C (ko) |
DE (1) | DE10141460A1 (ko) |
TW (1) | TW509882B (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100481586B1 (ko) * | 2002-11-22 | 2005-04-08 | 한국전자통신연구원 | 모듈러 곱셈 장치 |
KR101006105B1 (ko) * | 2009-10-28 | 2011-01-07 | (주)성주 워터피아건설 | 분수용 잠수 노즐 |
KR101011998B1 (ko) * | 2010-06-04 | 2011-01-31 | 신공항하이웨이 주식회사 | 액상 제설재 살포장치 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002229445A (ja) * | 2001-01-30 | 2002-08-14 | Mitsubishi Electric Corp | べき乗剰余演算器 |
JP2002358010A (ja) * | 2001-05-31 | 2002-12-13 | Mitsubishi Electric Corp | べき乗剰余演算器 |
US7187770B1 (en) * | 2002-07-16 | 2007-03-06 | Cisco Technology, Inc. | Method and apparatus for accelerating preliminary operations for cryptographic processing |
JP4360792B2 (ja) | 2002-09-30 | 2009-11-11 | 株式会社ルネサステクノロジ | べき乗剰余演算器 |
JP2004145010A (ja) | 2002-10-24 | 2004-05-20 | Renesas Technology Corp | 暗号回路 |
US7532720B2 (en) * | 2003-10-15 | 2009-05-12 | Microsoft Corporation | Utilizing SIMD instructions within montgomery multiplication |
US20060059219A1 (en) * | 2004-09-16 | 2006-03-16 | Koshy Kamal J | Method and apparatus for performing modular exponentiations |
FR2880149B1 (fr) * | 2004-12-23 | 2007-03-30 | Oberthur Card Syst Sa | Procede de traitement de donnees et dispositif associe |
CN100382012C (zh) * | 2005-05-18 | 2008-04-16 | 上海迪申电子科技有限责任公司 | 一种操作数长度可伸缩的蒙哥马利模乘器运算方法 |
JP5179933B2 (ja) * | 2008-04-18 | 2013-04-10 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
JP5247773B2 (ja) * | 2010-08-03 | 2013-07-24 | 中国電力株式会社 | 暗号装置及びその方法 |
CN103888246A (zh) * | 2014-03-10 | 2014-06-25 | 深圳华视微电子有限公司 | 低功耗小面积的数据处理方法及其数据处理装置 |
JP6262085B2 (ja) * | 2014-06-25 | 2018-01-17 | ルネサスエレクトロニクス株式会社 | データ処理装置及び復号処理方法 |
TWI784406B (zh) * | 2020-06-04 | 2022-11-21 | 熵碼科技股份有限公司 | 採用迭代計算的模數運算電路 |
CN112491543B (zh) * | 2020-11-24 | 2022-06-07 | 杭州电子科技大学 | 基于改进的蒙哥马利模幂电路的ic卡解密方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4977595A (en) * | 1989-04-03 | 1990-12-11 | Nippon Telegraph And Telephone Corporation | Method and apparatus for implementing electronic cash |
JP3302043B2 (ja) * | 1992-05-18 | 2002-07-15 | キヤノン株式会社 | 暗号通信方法及びそのシステム |
FR2726667B1 (fr) * | 1994-11-08 | 1997-01-17 | Sgs Thomson Microelectronics | Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery |
JP3615622B2 (ja) * | 1996-06-28 | 2005-02-02 | 株式会社ルネサステクノロジ | マイクロコンピュータ |
JPH1165439A (ja) * | 1996-08-09 | 1999-03-05 | Nippon Telegr & Teleph Corp <Ntt> | N進表現暗号による通信および認証方法、ならびにそれらの装置、およびn進表現暗号による通信および認証プログラムを格納した記憶媒体 |
JP3570114B2 (ja) * | 1996-10-21 | 2004-09-29 | 富士ゼロックス株式会社 | データ検証方法およびデータ検証システム |
EP0878796B1 (en) * | 1997-05-13 | 2006-04-19 | Kabushiki Kaisha Toshiba | Information recording apparatus, information reproducing apparatus, and information distribution system |
KR100257123B1 (ko) | 1997-05-16 | 2000-05-15 | 문상재 | 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법 |
KR100256776B1 (ko) * | 1997-06-26 | 2000-05-15 | 유기영 | 몽고메리 모듈러 승산 장치 |
DE69826963T2 (de) * | 1997-11-04 | 2005-11-17 | Nippon Telegraph And Telephone Corp. | Gerät für die modulare Inversion zur Sicherung von Information |
JP3616897B2 (ja) | 1998-01-27 | 2005-02-02 | 富士通株式会社 | モンゴメリ法による乗算剰余計算装置 |
JP3542278B2 (ja) * | 1998-06-25 | 2004-07-14 | 株式会社東芝 | モンゴメリ・リダクション装置及び記録媒体 |
JP2000165375A (ja) | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
US6578061B1 (en) * | 1999-01-19 | 2003-06-10 | Nippon Telegraph And Telephone Corporation | Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon |
JP2002229445A (ja) * | 2001-01-30 | 2002-08-14 | Mitsubishi Electric Corp | べき乗剰余演算器 |
JP4360792B2 (ja) * | 2002-09-30 | 2009-11-11 | 株式会社ルネサステクノロジ | べき乗剰余演算器 |
-
2001
- 2001-01-30 JP JP2001021128A patent/JP2002229445A/ja not_active Withdrawn
- 2001-05-31 TW TW090113222A patent/TW509882B/zh not_active IP Right Cessation
- 2001-06-11 US US09/877,074 patent/US7024560B2/en not_active Expired - Fee Related
- 2001-08-23 DE DE10141460A patent/DE10141460A1/de not_active Ceased
- 2001-09-21 KR KR10-2001-0058509A patent/KR100442218B1/ko not_active IP Right Cessation
- 2001-09-21 CN CNB011408537A patent/CN1242321C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100481586B1 (ko) * | 2002-11-22 | 2005-04-08 | 한국전자통신연구원 | 모듈러 곱셈 장치 |
KR101006105B1 (ko) * | 2009-10-28 | 2011-01-07 | (주)성주 워터피아건설 | 분수용 잠수 노즐 |
KR101011998B1 (ko) * | 2010-06-04 | 2011-01-31 | 신공항하이웨이 주식회사 | 액상 제설재 살포장치 |
Also Published As
Publication number | Publication date |
---|---|
DE10141460A1 (de) | 2002-08-14 |
KR100442218B1 (ko) | 2004-07-30 |
JP2002229445A (ja) | 2002-08-14 |
CN1242321C (zh) | 2006-02-15 |
CN1368674A (zh) | 2002-09-11 |
US7024560B2 (en) | 2006-04-04 |
US20020101984A1 (en) | 2002-08-01 |
TW509882B (en) | 2002-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
US5982900A (en) | Circuit and system for modulo exponentiation arithmetic and arithmetic method of performing modulo exponentiation arithmetic | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
EP1014617A2 (en) | Method and apparatus for elliptic curve cryptography and recording medium therefor | |
US20110161390A1 (en) | Modular multiplication processing apparatus | |
US6772942B2 (en) | Arithmetic circuit to increase the speed of a modular multiplication for a public key system for encryption | |
Karakoyunlu et al. | Efficient and side-channel-aware implementations of elliptic curve cryptosystems over prime fields | |
US20090268900A1 (en) | Signed montgomery arithmetic | |
KR20040060445A (ko) | 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 | |
KR20040067779A (ko) | 정보 처리방법 | |
JP3302043B2 (ja) | 暗号通信方法及びそのシステム | |
JP2000010479A (ja) | モンゴメリ・リダクション装置及び記録媒体 | |
KR100457177B1 (ko) | 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 | |
US6609141B1 (en) | Method of performing modular inversion | |
JP2004004341A (ja) | べき乗剰余計算装置、べき乗剰余計算方法及びプログラム | |
US7113593B2 (en) | Recursive cryptoaccelerator and recursive VHDL design of logic circuits | |
KR100564599B1 (ko) | 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 | |
JP2005055488A (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
JP2002358010A (ja) | べき乗剰余演算器 | |
KR100974624B1 (ko) | 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
US7403965B2 (en) | Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication | |
KR20020086005A (ko) | 타원곡선 암호 시스템을 위한 역원 연산기 | |
US7471789B2 (en) | Encryption circuit achieving higher operation speed | |
JP2002215022A (ja) | 有限体データ記録媒体、有限体データ演算方法及びその装置、そのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120629 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20130705 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |