KR102132261B1 - 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 - Google Patents
비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 Download PDFInfo
- Publication number
- KR102132261B1 KR102132261B1 KR1020140037898A KR20140037898A KR102132261B1 KR 102132261 B1 KR102132261 B1 KR 102132261B1 KR 1020140037898 A KR1020140037898 A KR 1020140037898A KR 20140037898 A KR20140037898 A KR 20140037898A KR 102132261 B1 KR102132261 B1 KR 102132261B1
- Authority
- KR
- South Korea
- Prior art keywords
- multiplier
- quotient
- modulus
- code
- montgomery
- Prior art date
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/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/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
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
- G06F7/5338—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
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
본 발명에 따른 몽고메리 곱셈기는, 승수와 피승수를 곱셈하는 부분곱 계산 유닛; 모듈러스와 몫 부호를 반영한 몫을 곱셈하는 모듈러스 감산 계산 유닛; 상기 부분곱 계산 유닛의 출력값과 상기 모듈러스 감산 계산 유닛의 출력 값을 이전 싸이클의 중간값에 누산하는 누산 유닛; 상기 누산 유닛의 누산값을 입력 받고 다음 싸이클에 이용될 몫을 계산하는 몫 계산 유닛; 및 상기 승수, 상기 피승수, 및 상기 몫을 이용하여 상기 다음 싸이클에 이용될 몫 부호를 결정하는 몫 부호 결정 유닛을 포함한다.
Description
본 발명은 몽고메리 곱셈기 및 그것의 곱셈 방법에 관한 것이다.
모듈러(modular) 연산은 RSA(Rivest Shamir Adelman), ECC(elliptic curve cryptography)와 같이 가장 많이 쓰이고 있는 공개키 암호 알고리즘에서 기반으로 하고 있는 연산이다. 모듈러 연산에서 기본이 되는 연산은 모듈러 덧셈/뺄셈과 모듈러 곱셈이 있다. 모듈러 나눗셈은 그 계산 량이 커서 대부분의 알고리즘에서 사용하지 않으며, 필요한 경우에만 모듈러 곱셈을 이용하여 모듈러 나눗셈을 계산한다. 모듈러 곱셈 또한 모듈러 덧셈의 집합으로 계산이 가능하다. 이 경우는 직렬화된(serialized) 곱셈에 해당하며 연산의 속도가 매우 느리다. 따라서, 일반적으로 모듈러 곱셈은 수행 성능을 높이기 위해 기수(radix)를 증가시켜 디지트-직렬화된(digit-serialized) 곱셈의 형태로 구현된다.
이에 따라, 공개키 연산기가 기본적으로 수행하는 연산은 모듈러 덧셈/뺄셈 그리고 모듈러 곱셈이다. 그런데, 모듈러 곱셈의 연산이 모듈러 덧셈/뺄셈의 연산보다 복잡하고 임계 경로(critical path)가 길기 때문에, 전체적인 보안 연산기의 최대 동작 주파수(maximum frequency)는 모듈러 곱셈이 어떻게 구현되는가에 좌우된다.
모듈러 곱셈 알고리즘은 크게 두 가지의 연산으로 구성된다. 여기서 두 가지 연산은 곱셈 연산과 감산(reduction) 연산이다. 하드웨어 설계에 가장 널리 쓰이는 모듈러 곱셈 알고리즘이 몽고메리(Montgomery) 곱셈 알고리즘이다. 몽고메리 곱셈 알고리즘은 감산 연산을 효율적으로 수행할 수 있다.
본 발명의 목적은 하드웨어 비용 및 동작 싸이클을 최소화시키는 몽고메리 곱셈기 및 그것의 곱셈 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 몽고메리 곱셈기는, 승수와 피승수를 곱셈하는 부분곱 계산 유닛; 모듈러스와 몫 부호를 반영한 몫을 곱셈하는 모듈러스 감산 계산 유닛; 상기 부분곱 계산 유닛의 출력값과 상기 모듈러스 감산 계산 유닛의 출력 값을 이전 싸이클의 중간값에 누산하는 누산 유닛; 상기 누산 유닛의 누산값을 입력 받고 다음 싸이클에 이용될 몫을 계산하는 몫 계산 유닛; 및 상기 승수, 상기 피승수, 및 상기 몫을 이용하여 상기 다음 싸이클에 이용될 몫 부호를 결정하는 몫 부호 결정 유닛을 포함한다.
실시 예에 있어서, 상기 승수, 상기 피승수 및 상기 모듈러스는 래딕스 기반의 비트들로 구성된다.
실시 예에 있어서, 상기 승수는 부스 레코딩된 값이다.
실시 예에 있어서, 상기 승수를 저장하는 승수 레지스터를 더 포함한다.
실시 예에 있어서, 상기 몫을 부스 레코딩하는 부스 레코딩을 더 포함한다.
실시 예에 있어서, 상기 몫을 저장하는 몫 레지스터를 더 포함한다.
실시 예에 있어서, 상기 모듈러스는 저장하는 모듈러스 레지스터를 더 포함한다.
실시 예에 있어서, 상기 승수 및 상기 피승수 각각은 (-m, m) 존재하는 정수이고, 상기 m는 상기 모듈러스이다.
실시 예에 있어서, 상기 몫 부호 결정 유닛은 싸이클에서 계산되는 몫을 트래킹함으로써 상기 몫 부호를 결정한다.
본 발명의 실시 예에 따른 몽고메리 곱셈기의 곱셈 방법은, 승수와 피승수에 대한 부분곱을 계산하는 단계; 이전 싸이클에서 계산된 몫에 대한 몫 부호를 결정하는 단계; 상기 결정된 몫 부호에 따라 모듈러스 감산을 계산하는 단계; 및 상기 부분곱과 상기 모듈러스 감산을 이전 싸이클의 중간값에 누산하는 단계를 포함한다.
실시 예에 있어서, 상기 승수를 부스 레코딩하는 단계를 더 포함한다.
실시 예에 있어서, 상기 누산된 값을 이용하여 다음 싸이클에 사용된 몫을 계산하는 단계를 더 포함한다.
실시 예에 있어서, 상기 계산된 몫을 부스 레코딩 하는 단계를 더 포함한다.
실시 예에 있어서, 상기 몫 부호를 계산하는 단계는 싸이클마다 몫을 트래킹함으로써 상기 몫 부호를 결정하는 단계를 포함한다.
실시 예에 있어서, 상기 몫 부호는 상기 트래킹된 몫의 최상위 비트의 부호에 따라 결정된다.
본 발명의 실시 예에 따른 몽고메리 곱셈기 및 그것의 곱셈 동작은 몫 부호를 반영한 모듈러스 감산 연산을 수행함으로써 출력값을 모듈러스 크기와 비교할 필요가 없고, 그만큼 하드웨어 비용 및 동작 싸이클을 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 몽고메리 곱셈기의 개념을 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 몽고메리 곱셈기를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 몽고메리 곱셈기의 동작 방법을 예시적으로 보여주는 흐름도이다.
도 4는 본 발명에 따른 모듈러 곱셈기를 갖는 암호 프로세서를 포함하는 보안 시스템(1000)을 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 몽고메리 곱셈기를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 몽고메리 곱셈기의 동작 방법을 예시적으로 보여주는 흐름도이다.
도 4는 본 발명에 따른 모듈러 곱셈기를 갖는 암호 프로세서를 포함하는 보안 시스템(1000)을 예시적으로 보여주는 블록도이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명의 실시 예에 따른 몽고메리 곱셈(Montgomery multiplication) 알고리즘은 곱셈 연산에 최종 감산(final reduction; output range를 (-2m, 2m)에서 (-m, m)으로 줄이는 연산)을 포함할 수 있다. 이로 인하여, 출력 값을 모듈러스(modulus)와 크기를 비교할 필요가 없다. 즉, 최종 감산 연산을 위한 관련 로직과 동작 싸이클(operation cycle)이 필요 없다. 즉, 하드웨어 비용 및 성능 면에서 유리하다.
아래는 일반적인 몽고메리 곱셈 알고리즘을 보여주는 표이다.
몽고메리 곱셈의 입력은 모듈러스(modulus, m), 피승수(multiplicand, x) 및 승수(multiplier, y)을 포함한다. 모듈러스(m), 피승수(x), 승수(y)는 래딕스(radix, b) 기반의 디지트값으로 입력된다. 위에 개시된 몽고메리 곱셈 알고리즘의 걍우 피승수(x) 및 승수(y)는 (0,m) 범위에 존재한다. 몽고메리 상수(R)는 래딕스(b)의 n승이다. 여기서 n는 2보다 큰 정수이다. 모듈러스(m)과 래딕스(b)는 서로소 관계이다.
몽고메리 곱셈의 출력은 xyR-1 mod m 이다.
위에 개시된 몽고메리 알고리즘의 Step. 2를 실행한 후 중간값(A)는 [0, 2m)의 범위(range) 에 존재한다. 따라서 이 중간값(A)를 다음 연산에 적합하도록 감산(reduction)하는 단계(Step. 3)가 필요하다. 하지만 Step. 3을 실행하기 위해서는 비교적 많은 하드웨어 비용(A와 m을 비교하는 로직)과 동작 싸이클(A와 m을 메모리로부터 읽어 오는데 필요한 싸이클 혹은 A와 m를 저장하고 있을 내부 메모리 메모리, A와 m를 비교 연산, A-m 연산)이 필요하다. 특히, 몽고메리 곱셈기를 multi-precision으로 구현할 경우, 비용 증가률 및 성능 감소률은 더욱 커질 수 있다. 또한, 감산 연산(A-m)은 중간값(A)에 따라 선택적으로 실행되기 때문에, 부채널 공격(side channel attack)에 취약할 수 있다.
한편, 몽고메리 곱셈기를 하드웨어로 구현할 때, Step 2.2의 부분 곱(partial product)(xiy, qim)는 부스 레코딩(booth recoding)을 이용할 수 있다. 부스 레코딩은, 부분 곱(xiy, qim)의 xi 또는 qi의 종류가 {0, 1, 2, 3}에서 {-2, -1, 0, 1, 2}로 바뀌기 때문에 3에 대한 연산을 구현할 필요가 없다. 따라서 하드웨어 비용이 줄어들 수 있다.
이 경우 위의 알고리즘은 아래와 같이 수정이 된다. 알고리즘의 기술 편의상 n을 짝수라고 가정한다. 음수는 2의 보수(2's complement)로 표현을 한다. 그리고 an 포함하는 상위의 비트는 부호 패딩(sign padding)이다. 아래는 부스 레코딩(booth recoding)을 이용하는 몽고메리 곱셈 알고리즘을 보여주는 표이다.
그런데, 하드웨어 비용을 줄이기 위해 부스 레코딩을 적용하였을 경우, 부호화된 숫자(signed number)를 처리하기 위한 추가 동작이 필요하다(i = n 일 때 step).
아래에서는 상술 된 몽고메리 곱셈 알고리즘에서 최종 감산 동작이 필요한 이유를 설명하도록 하겠다. 아래에서는 설명의 편의를 위하여 래딕스(b)를 2이라고 하겠다. 입력을 x와 y, m이라고 하면, 몽고메리 곱셈 연산은 아래의 수학식을 만족한다.
Montgomery multiplication (x, y, m) = (xy + qm)/2n
x, y, m의 크기(bit-length)를 n이다. 그리고 - m < x < m 이고, -m < y < m 이면, - m2 < xy < m2 이다.
부스 레코딩을 사용할 경우, 몫(qi)은 {-2, -1, 0, 1, 2} 중에 하나의 값이다. 따라서 qm의 최대값과 최소값은 아래의 수학식을 만족한다.
- 2m2/3 < qm < 2m2/3
따라서 xy + qm은, -2m2 < -5m2/3 < xy + qm < 5m2/3 < 2m2 , m < 2n 이므로-2m < (xy + qm)/2n < 2m 이다. 즉, 최종 감산 동작을 하기 전에 몽고메모리 곱셈의 값은 (-2m, 2m) 에 존재한다. 결과적으로 이러한 몽고메리 곱셈 알고리즘은 최종적인 감산 연산을 수행할 필요가 있다. 이를 수식으로 나타내면 아래와 같다.
(xy + qm)/2n + q'm
도 1은 본 발명의 실시 예에 따른 몽고메리 곱셈기의 개념을 설명하기 위한 도면이다. 도 1을 참조하면, x, y, 및 q의 부호들에 따라 감산 여부(q')가 결정될 수 있다. xy+qm의 크기를 오퍼런드(operand, x, y, q)의 부호에 따라 아래와 같이 구분하면 아래의 표와 같다.
몽고메리 곱셈에서 입력인 x, y의 부호는 이미 알고 있기 때문에 감산 몫(reduction quotient; q)의 부호만 사전에 계산될 수 있다면, 중간값(A)과 modular(m)의 크기를 비교할 필요 없이 최종 감산 동작이 수행될 수 있다. 이때 최종 감산에 사용되는 감산 계수(reduction coefficient)는 q'이다. 따라서, 오퍼런드들(x, y, q)의 부호들에 따라 감산 동작 여부가 결정될 수 있다.
아래는 이러한 특징을 이용한 본 발명의 실시 예에 따른 몽고메리 곱셈 알고리즘을 보여주는 표이다.
앞에서 소개된 몽고메리 곱셈 알고리즘과 달리, 입력(x, y)은 [-m, m)에 존재한다. 몽고메리 곱셈의 출력(xyR-1 mod m)은 최종적으로 A+q_sign*m가 된다.
한편, q_sign은 qi의 값을 트래킹(tracking)함으로서 계산될 수 있다. 왜냐하면 몫(q)은 아래의 수학식을 만족하기 때문이다.
q = qn -22n-2+ qn -42n-4 + ... +q122 + q020
수학식을 참조하면, 최상위 qn -2 비트에 따라 전체 부호가 결정된다. 최상위 qn-2 비트가 0이라면, 그 다음 최상위 비트인 qn -4 비트가 전체 부호를 결정한다. 이하의 비트는 동일하게 부호를 결정할 수 있다.
본 발명의 실시 예에 따른 몽고메리 곱셈 알고리즘은 부호(sign) 부분을 처리하기 위해 추가적인 감산 연산(reduction operation)을 진행할 필요가 없다. 또한 Step. 3에서 감산을 위해 모듈러스(m)와 중간값(A)을 비교할 필요가 없다. 추가로 Step. 3의 감산 부분이 Step. 2에 포함될 수 있다. 이로 인해 하드웨어 구현시 모듈러스(m)와 크기를 비교하는 로직(logic)이 필요 없다. Step. 2에 감산을 포함하여 전체 동작 성능이 향상될 수 있다.
본 발명의 실시 예에 따른 몽고메리 곱셈 알고리즘의 장점을 정리하면 아래와 같다. 첫째로, 중간값(A)과 모듈러스(m) 크기를 비교할 필요가 없다. 둘째로, 크기 비교 로직이 필요 없다. 셋째로, 크기 비교에 드는 동작 싸이클이 필요 없다. 넷째로, multi-precision 동작의 경우, 전체 동작 싸이클이 줄어들 수 있다. 크기 비교 프로process가 필요 없기 때문에, 최종 감산(step 3)을 step 2.5와 합병(merge)될 수 있다.
도 2는 본 발명의 실시 예에 따른 몽고메리 곱셈기를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 몽고메리 곱셈기(100)는 부분곱 계산 유닛(110), 모듈러스 감산 계산 유닛(120), 누산 유닛(130), 몫 계산 유닛(140), 제 1 및 제 2 레코딩 유닛들(150, 160) 및 몫 부호 결정 유닛(170)을 포함한다.
부분곱 계산 유닛(110)은 현재 싸이클에서의 피승수(x)와 승수(y')를 곱셈 연산한다. 여기서 승수(y')는 승수(y)가 부스 레코딩된 값일 수 있다. 모듈러스 감산 계산 유닛(120)은 모듈러스(m)과 몫 부호(q_sign)을 반영한 몫(q')을 곱셈 연산한다. 여기서 몫(q')은 몫(q)이 부스 레코딩된 값일 수 있다. 누산 유닛(130)은 부분곱 유닛(110)의 출력값(xy')과 모듈러스 곱셈 유닛(120)의 출력값(q'm)을 이전 싸이클의 중간값에 누산(accumulate)한다. 몫 계산 유닛(140)은 누적 유닛(130)의 누산값(xy'+q'm)으로부터 다음 싸이클에서 사용될 몫(q)을 계산한다. 제 1 레코딩 유닛(150)은 승수(y)를 입력 받아 그것의 부스 레코딩된 값(y')을 출력한다. 제 2 레코딩 유닛(160)은 몫(q)과 몫 부호(q_sign)을 입력 받아 그것의 부스 레코딩된 값(q')을 출력한다. 몫 부호 결정 유닛(170)은 싸이클마다 반복되는 몫(qi)을 트래킹함으로써 몫 부호(q_sign)을 결정한다.
도시되지 않았지만, 승수(x), 피승수(y), 모듈러스(m)를 저장하기 위한 레지스터들이 더 포함될 수 있다. 한편, 누산 유닛(130)은 최종적으로 몽고메리 곱셈의 최종값으로 xyR-1 mod m를 출력한다.
본 발명의 실시 예에 따른 몽고메리 곱셈기(100)는 곱셈 연산에 최종 감산(final reduction; output range를 (-2m, 2m)에서 (-m, m)으로 줄이는 연산)을 포함함으로써, 출력 값을 모듈러스(modulus)와 크기를 비교할 필요가 없다. 따라서, 본 발명의 몽고메리 곱셈기(100)는 최종 감산 연산을 위한 관련 로직과 동작 싸이클(operation cycle)을 필요치 않는다. 즉, 본 발명의 몽고메리 곱셈기(100)는 종래의 그것과 비교하여 하드웨어 비용 및 성능 면에서 유리하다.
한편, 도 1에서 본 발명의 몽고메리 곱셈기(100)는 부스 레코딩을 사용한다. 하지만, 본 발명이 반드시 여기에 제한될 필요는 없다. 본 발명의 몽고메리 곱셈기는 부스 레코딩을 사용하지 않을 수도 있다.
도 3은 본 발명의 실시 예에 따른 몽고메리 곱셈기의 동작 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 3을 참조하면, 몽고메리 곱셈 동작은 다음과 같다.
현재 싸이클(예를 들어, i번째 몽고메리 곱셈 연산)에서 승수(x)와 피승수(y)에 대한 부분곱(xy)이 계산된다(S110). 이전 싸이클(i-1번째 몽고메리 곱셈 연산)에서 결정된 중간값(A)으로부터 계산된 몫(q)에 대한 몫 부호(q_sign)가 결정된다(S120). 여기서 몫 부호(q_sign)는 싸이클 마다 몫을 트래킹함으로써 결정될 수 있다. 몫 부호(q_sign)을 이용한(반영한) 모듈러스 감산이 계산된다(S130). 부분곱과 모듈러스 감산이 이전 중간값(A)에 누적된다(S140). 상술 된 동작이 반복된다.
본 발명의 실시 예에 따른 몽고메리 곱셈 동작은 몫 부호(q_sign)를 이용한 모듈러스 감산 동작을 수행함으로써 최종적인 감산 동작을 필요치 않는다.
도 4는 본 발명에 따른 모듈러 곱셈기를 갖는 암호 프로세서를 포함하는 보안 시스템(1000)을 예시적으로 보여주는 블록도이다. 도 4를 참조하면, 보안 시스템(1000)은 중앙처리장치(1100), 암호 프로세서(1200), 버퍼 메모리(1300), 코드 메모리(1400), 비휘발성 메모리 인터페이스(1500), 및 적어도 하나의 비휘발성 메모리(1600)를 포함한다.
중앙처리장치(1100)는 보안 시스템(1000)의 전반적인 동작을 제어한다. 암호 프로세서(1200)는 중앙처리장치(1100)의 제어에 따라 암호, 인증 및 전자 서명을 가능하게 하는 명령을 해독하고, 데이터를 처리한다. 암호 프로세서(1200)는 도 2 에 도시된 모듈러 곱셈기(100) 중 적어도 하나를 포함한다. 버퍼 메모리(1300)는 보안 시스템(1000)을 구동하는데 필요한 데이터, 예를 들어, 입출력 데이터 혹은 암호 처리과정에서 필요한 데이터를 저장할 수 있다. 버퍼 메모리(1300)는 디램, 에스램과 같은 휘발성 메모리 장치로 구현될 수 있다. 코드 메모리(1400)는 보안 시스템(1000)을 운용하는데 필요한 코드 데이터를 저장하거나, 암호화 및 전자 서명 등에 필요한 메모리 장치(1400)는 암호화 및 전자 서명 등에 필요한 키(key)와 같이 보호 받아야 하는 데이터를 위한 보안모듈 및 모듈러스를 저장할 수 있다. 코드 메모리(1400)는 롬, 피램 등과 같은 비휘발성 메모리 장치로 구현될 수 있다. 비휘발성 메모리 인터페이스(1500)는 적어도 하나의 비휘발성 메모리 장치(1600)와 인터페이싱을 수행한다. 여기서 비휘발성 메모리 장치(1600)는 사용자 데이터를 저장한다.
본 발명에 따른 보안 시스템(1000)은 종래의 그것과 비교하여 최종 단계의 감산 연산을 필요로 하지 않음으로써 하드웨어 크기를 줄이고, 그에 따른 동작 싸이클을 줄임으로써, 보다 빠르게 데이터를 처리할 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
100: 몽고메리 곱셈기
110: 부분곱 계산 유닛
120: 모듈러스 감산 계산 유닛
130: 누산 유닛
140: 몫 계산 유닛
150, 160: 부스 레코딩 유닛
170: 몫 부호 결정 유닛
110: 부분곱 계산 유닛
120: 모듈러스 감산 계산 유닛
130: 누산 유닛
140: 몫 계산 유닛
150, 160: 부스 레코딩 유닛
170: 몫 부호 결정 유닛
Claims (10)
- 승수와 피승수를 곱셈하는 부분곱 계산 유닛;
모듈러스와 이전 싸이클에서 결정된 몫 부호를 반영한 감산 계수를 곱셈하는 모듈러스 감산 계산 유닛;
상기 부분곱 계산 유닛의 출력값과 상기 모듈러스 감산 계산 유닛의 출력 값을 상기 이전 싸이클의 중간값에 누산하는 누산 유닛;
상기 누산 유닛의 누산값을 입력 받고 다음 싸이클에 이용될 몫을 계산하는 몫 계산 유닛; 및
상기 승수, 상기 피승수, 및 상기 몫을 이용하여 상기 다음 싸이클에 이용될 몫 부호를 결정하는 몫 부호 결정 유닛을 포함하고,
상기 감산 계수는 상기 이전 싸이클에서 결정된 몫 부호, 상기 부분곱 계산 유닛의 출력 부호를 기반으로 결정되는 몽고메리 곱셈기. - 제 1 항에 있어서,
상기 승수는 부스 레코딩된 값인 몽고메리 곱셈기. - 제 1 항에 있어서,
상기 승수를 저장하는 승수 레지스터를 더 포함하는 몽고메리 곱셈기. - 제 1 항에 있어서,
상기 몫을 부스 레코딩하는 부스 레코딩을 더 포함하는 몽고메리 곱셈기. - 제 1 항에 있어서,
상기 몫을 저장하는 몫 레지스터를 더 포함하는 몽고메리 곱셈기. - 제 1 항에 있어서,
상기 모듈러스는 저장하는 모듈러스 레지스터를 더 포함하는 몽고메리 곱셈기. - 제 1 항에 있어서,
상기 승수 및 상기 피승수 각각은 (-m, m) 존재하는 정수이고,
상기 m는 상기 모듈러스인 몽고메리 곱셈기. - 제 1 항에 있어서,
상기 몫 부호 결정 유닛은 싸이클에서 계산되는 몫을 트래킹함으로써 상기 몫 부호를 결정하는 몽고메리 곱셈기. - 몽고메리 곱셈기의 곱셈 방법에 있어서:
승수와 피승수에 대한 부분곱을 계산하는 단계;
이전 싸이클에서 계산된 몫에 대한 몫 부호를 결정하는 단계;
상기 결정된 몫 부호 및 부분곱의 결과에 대한 부호를 기반으로 감산 계수를 결정하고, 상기 결정된 감산 계수 및 모듈러스를 기반으로 모듈러스 감산을 계산하는 단계; 및
상기 부분곱과 상기 모듈러스 감산을 이전 싸이클의 중간값에 누산하는 단계를 포함하는 곱셈 방법. - 제 9 항에 있어서,
상기 승수를 부스 레코딩하는 단계를 더 포함하는 곱셈 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140037898A KR102132261B1 (ko) | 2014-03-31 | 2014-03-31 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
US14/672,656 US9811318B2 (en) | 2014-03-31 | 2015-03-30 | Montgomery multiplication method for performing final modular reduction without comparison operation and montgomery multiplier |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140037898A KR102132261B1 (ko) | 2014-03-31 | 2014-03-31 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150114104A KR20150114104A (ko) | 2015-10-12 |
KR102132261B1 true KR102132261B1 (ko) | 2020-08-06 |
Family
ID=54190444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140037898A KR102132261B1 (ko) | 2014-03-31 | 2014-03-31 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9811318B2 (ko) |
KR (1) | KR102132261B1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102132261B1 (ko) * | 2014-03-31 | 2020-08-06 | 삼성전자주식회사 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
EP3513293A4 (en) * | 2016-09-16 | 2020-05-20 | University Of Southern California | SYSTEMS AND METHODS FOR REDUCING ERRORS IN COMBINATIVE LOGIC |
KR102425475B1 (ko) * | 2020-11-18 | 2022-07-27 | 고려대학교 산학협력단 | 모듈러 곱셈 방법 |
CN112486457B (zh) * | 2020-11-23 | 2022-12-20 | 杭州电子科技大学 | 一种实现改进的fios模乘算法的硬件系统 |
CN115348002B (zh) * | 2021-05-12 | 2024-05-10 | 中国科学院声学研究所 | 一种基于多字长乘法指令的Montgomery模乘快速计算方法 |
CN114327370B (zh) * | 2022-03-10 | 2022-06-21 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN117785129B (zh) * | 2024-02-23 | 2024-05-07 | 蓝象智联(杭州)科技有限公司 | 一种基于gpu的蒙哥马利模乘运算方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002003608A1 (en) | 2000-06-29 | 2002-01-10 | The State Of Oregon Acting By And Through The State Board Of Higher Education On Befalf Of The University Of Oregon | Method and apparatus for incomplete modular arithmetic |
KR20020049659A (ko) | 2000-12-20 | 2002-06-26 | 김동훈 | 계산된 모듈라 결과값을 이용한 모듈라 곱셈방법 및 그 장치 |
IL143951A0 (en) | 2001-06-21 | 2003-09-17 | Discretix Technologies Ltd | A method and apparatus for carrying out efficiently arithmetic computations in hardware |
US7035889B1 (en) | 2001-12-31 | 2006-04-25 | Cavium Networks, Inc. | Method and apparatus for montgomery multiplication |
JP4177125B2 (ja) | 2003-01-22 | 2008-11-05 | 三菱電機株式会社 | 演算装置及び演算装置の演算方法 |
JP2004258141A (ja) | 2003-02-24 | 2004-09-16 | Fujitsu Ltd | モンゴメリ乗算剰余の多倍長演算のための演算装置 |
JP2004273169A (ja) | 2003-03-05 | 2004-09-30 | Mitsui Mining & Smelting Co Ltd | 電解二酸化マンガン |
KR100458031B1 (ko) * | 2003-03-14 | 2004-11-26 | 삼성전자주식회사 | 몽고메리 유형의 모듈라 곱셈 장치 및 방법 |
US20040252829A1 (en) | 2003-04-25 | 2004-12-16 | Hee-Kwan Son | Montgomery modular multiplier and method thereof using carry save addition |
JP2005031472A (ja) | 2003-07-07 | 2005-02-03 | Sony Corp | 演算処理方法、および演算処理装置 |
KR20050088506A (ko) * | 2004-03-02 | 2005-09-07 | 삼성전자주식회사 | 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기 |
US7519644B2 (en) * | 2004-05-27 | 2009-04-14 | King Fahd University Of Petroleum And Minerals | Finite field serial-serial multiplication/reduction structure and method |
KR100652376B1 (ko) | 2004-07-29 | 2006-12-01 | 삼성전자주식회사 | 분리 연산 가능한 구조를 가지는 모듈러 곱셈기와 이를포함하는 암호화 시스템 |
JP2006091086A (ja) | 2004-09-21 | 2006-04-06 | Renesas Technology Corp | モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド |
KR100617384B1 (ko) | 2004-09-24 | 2006-08-31 | 광주과학기술원 | Rsa 보안 모듈의 몽고메리 곱셈기 |
JP5027422B2 (ja) | 2006-02-09 | 2012-09-19 | ルネサスエレクトロニクス株式会社 | 剰余演算処理装置 |
US7805479B2 (en) | 2006-03-28 | 2010-09-28 | Michael Andrew Moshier | Scalable, faster method and apparatus for montgomery multiplication |
FR2917198B1 (fr) | 2007-06-07 | 2010-01-29 | Thales Sa | Operateur de reduction modulaire ameliore. |
US8781112B2 (en) | 2007-11-02 | 2014-07-15 | Certicom Corp. | Signed montgomery arithmetic |
KR101128505B1 (ko) | 2008-12-03 | 2012-03-27 | 한국전자통신연구원 | 모듈러 곱셈 연산 방법 및 장치 |
JP2010139544A (ja) | 2008-12-09 | 2010-06-24 | Renesas Electronics Corp | 剰余演算装置、及び剰余演算方法 |
KR101019242B1 (ko) | 2009-02-27 | 2011-03-04 | 고려대학교 산학협력단 | 확장된 몽고메리 레더를 이용한 스칼라 곱셈 방법 |
US8433736B2 (en) | 2009-02-27 | 2013-04-30 | George Mason Intellectual Properties, Inc. | Scalable Montgomery multiplication architecture |
KR101590322B1 (ko) * | 2009-05-15 | 2016-02-19 | 삼성전자주식회사 | 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법 |
US8527570B1 (en) | 2009-08-12 | 2013-09-03 | Marvell International Ltd. | Low cost and high speed architecture of montgomery multiplier |
KR20110105555A (ko) | 2010-03-19 | 2011-09-27 | 삼성전자주식회사 | 효율적인 하드웨어 구성을 갖는 몽고메리 승산기 |
FR2974202B1 (fr) | 2011-04-18 | 2013-04-12 | Inside Secure | Procede de multiplication de montgomery |
FR2974201B1 (fr) | 2011-04-18 | 2013-04-12 | Inside Secure | Circuit de multiplication de montgomery |
KR20120136758A (ko) | 2011-06-10 | 2012-12-20 | 삼성전자주식회사 | 모듈러 연산기, 이를 포함하는 장치, 및 그 동작 방법 |
KR102143252B1 (ko) | 2011-10-11 | 2020-08-11 | 백스터 인터내셔널 인코포레이티드 | 지혈 조성물 |
KR101929984B1 (ko) | 2012-05-17 | 2018-12-18 | 삼성전자주식회사 | 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법 |
KR102132261B1 (ko) * | 2014-03-31 | 2020-08-06 | 삼성전자주식회사 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
-
2014
- 2014-03-31 KR KR1020140037898A patent/KR102132261B1/ko active IP Right Grant
-
2015
- 2015-03-30 US US14/672,656 patent/US9811318B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20150114104A (ko) | 2015-10-12 |
US9811318B2 (en) | 2017-11-07 |
US20150277855A1 (en) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102132261B1 (ko) | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 | |
US8977668B2 (en) | Calculating unit for reducing an input number with respect to a modulus | |
Liu et al. | New speed records for Montgomery modular multiplication on 8-bit AVR microcontrollers | |
CN101213513A (zh) | 保护数据处理装置免受密码攻击或分析的设备和方法 | |
JP5182364B2 (ja) | サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法 | |
JP5977996B2 (ja) | サイドチャンネル攻撃に対する抵抗力のあるモジュラー累乗法及び装置 | |
US8417760B2 (en) | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication | |
KR101925868B1 (ko) | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 | |
US8781112B2 (en) | Signed montgomery arithmetic | |
KR101929984B1 (ko) | 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법 | |
US8364740B2 (en) | Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands | |
Gutub et al. | Serial vs. parallel elliptic curve crypto processor designs | |
Li et al. | Research in fast modular exponentiation algorithm based on FPGA | |
US8364737B2 (en) | Device and method for calculating a result of a sum with a calculating unit with limited word length | |
US8626811B2 (en) | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine | |
Will et al. | Computing mod without mod | |
KR102057648B1 (ko) | 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기 | |
CN102646033B (zh) | 提供了加密和签名功能的rsa算法的实现方法和装置 | |
CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
Al Saffar et al. | High performance methods of elliptic curve scalar multiplication | |
US20160034255A1 (en) | Arithmetic Devices, Montgomery Parameter Calculation Method and Modular Multiplication Method Thereof | |
US10318245B2 (en) | Device and method for determining an inverse of a value related to a modulus | |
Ibrahim et al. | New and improved word-based unified and scalable architecture for radix 2 Montgomery modular multiplication algorithm | |
KR20100062565A (ko) | 모듈러스의 음의 역원을 구하는 방법 | |
Mentens et al. | FPGA-oriented secure data path design: implementation of a public key coprocessor |
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 |