KR101977873B1 - 하드웨어 구현된 모듈러 역원 모듈 - Google Patents

하드웨어 구현된 모듈러 역원 모듈 Download PDF

Info

Publication number
KR101977873B1
KR101977873B1 KR1020170107740A KR20170107740A KR101977873B1 KR 101977873 B1 KR101977873 B1 KR 101977873B1 KR 1020170107740 A KR1020170107740 A KR 1020170107740A KR 20170107740 A KR20170107740 A KR 20170107740A KR 101977873 B1 KR101977873 B1 KR 101977873B1
Authority
KR
South Korea
Prior art keywords
modular
modular inverse
inverse
mod
elliptic curve
Prior art date
Application number
KR1020170107740A
Other languages
English (en)
Other versions
KR20190022023A (ko
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 국방과학연구소
Priority to KR1020170107740A priority Critical patent/KR101977873B1/ko
Publication of KR20190022023A publication Critical patent/KR20190022023A/ko
Application granted granted Critical
Publication of KR101977873B1 publication Critical patent/KR101977873B1/ko

Links

Images

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/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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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/721Modular inversion, reciprocal or quotient calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Complex Calculations (AREA)

Abstract

하드웨어-구현되는 타원곡선 암호화(ECC) 알고리즘 처리 장치가 제공된다. 장치는 알고리즘 처리 중의 데이터를 저장하기 위한 적어도 하나의 저장부; 우측정렬 시프트 (right shift) 방식으로 ax = 1 (mod m)의 관계에 있는 a의 모듈러 역 x (단, x = a-1 (mod m)임)을 연산하는 모듈러 역 연산부; 및 상기 알고리즘 처리 과정에서의 모듈러 덧셈을 수행하는 적어도 하나의 모듈러 덧셈 연산부를 포함한다.

Description

하드웨어 구현된 모듈러 역원 모듈{HARDWARE-IMPLEMENTED MODULAR INVERSION MODULE}
하드웨어 구현된 모듈러 역원 모듈에 연관되며, 보다 특정하게는 타원 곡선 암호 시스템(ECC, Elliptic Curve Cryptosystem)에서 사용되는 역원 모듈을 오른쪽 시프트(Right-Shift) 구현하는 기술에 연관된다.
제품과 기기들이 지능화되는 4차 산업 혁명에서는 보안이 더 중요해질 것으로 예상된다. 그러나 기존의 서버나 광통신 등의 환경과 달리 계산 능력과 무선 통신 전송량은 제한되어 있기 때문에 앞으로 더 짧은 키를 사용하면서도 RSA와 비슷한 암호학적 강도를 갖는 타원 곡선 암호 시스템(ECC, Elliptic Curve Cryptosystem)의 사용이 늘어날 것이다.
한편 모듈러 역(Modular inverse) 알고리즘은 타원 곡선 암호 시스템에서 필요한 유한체 연산 중에서 가장 많은 계산량을 가지고 있다. 그래서 사영 좌표계(projective coordinates)을 사용하여 modular inverse를 제거하는 방법이 주로 사용되었다. 그러나 이 방법은 MM(modular multiplication) 등의 횟수가 증가하며 타원 곡선 상의 연산을 계산하는 수식이 복잡해져 구현 복잡도가 상승하고 면적이 증가할 수 있다는 한계가 있다. 그리고 마지막 추가연산에서 반드시 한 번은 modular inversion이 필요할 뿐만 아니라 타원 곡선 암호 기반의 서명 알고리즘인 ECDSA를 수행하기 위해서도 몇 번의 MI(modular inverse)가 필요하다. 따라서 만약 빠른 modular inverse 모듈을 구현할 수 있다면 사영 좌표계 사용없이 하드웨어 ECC 모듈을 좀 더 간단하고 작은 면적으로 구현하는 것이 가능하다.
대한민국 공개특허 제1020100062565호(2010.06.10), "모듈러스의 음의 역원을 구하는 방법" 대한민국 등록특허 제1005851190000호(2006.05.24), "암호화 장치, 암호화 방법 및 그 기록매체" 대한민국 공개특허 제1020120088316호(2012.08.08), "몽고메리 역원 계산 장치 및 이를 이용한 몽고메리 역원 계산 방법"
일측에 따르면, 하드웨어-구현되는 타원곡선 암호화 알고리즘 처리 장치가 제공된다. 장치는: 알고리즘 처리 중의 데이터를 저장하기 위한 적어도 하나의 저장부; 우측정렬 시프트 (right shift) 방식으로 ax ≡ 1 (mod m)의 관계에 있는 a의 모듈러 역 x (단, x ≡ a-1 (mod m)임)을 연산하는 모듈러 역 연산부; 및 상기 알고리즘 처리 과정에서의 모듈러 덧셈을 수행하는 적어도 하나의 모듈러 덧셈 연산부를 포함한다.
일실시예에 따르면 상기 모듈러 역 연산부는, aR≡U (mod m), aS≡V (mod m)를 만족하도록 R, S, U, 및 V 각각의 초기 값을 설정하고, 상기 U 및 상기 V의 값을 오른쪽 쉬프트와 뺄셈을 통해 줄여 나가서 상기 U 및 상기 V 중 어느 하나가 1이 되는 경우에 상기 a의 모듈러 역원인 상기 x를 결정한다.
일실시예에 따르면 상기 제어부는 상기 R의 초기 값을 0로 주고, 상기 S의 초기 값을 1으로 주고, 상기 U의 초기 값을 -m으로 주고, 상기 V의 초기 값을 a로 줌으로써, 상기 저장부에 상기 U 대신 -U를 저장하고 상기 R 대신 -R을 저장하여 처리한다.
일실시예에 따르면 상기 제어부는, 상기 S의 초기 값으로 1대신 b을 주어 모듈라 역 대신 a
Figure 112017082349974-pat00001
b-1 (mod m)을 구하는 모듈라 나눗셈(MD, Modular Division)을 수행하도록 할 수 있다.
일실시예에 따르면 상기 모듈러 역 연산부는 (-R)+S 연산의 결과가 홀수인 경우 상기 m 또는 -m을 더해주는 덧셈기를 상기 -R과 상기 S을 더하는 덧셈기 뒤에 더 포함할 수 있다.
일실시예에 따르면 상기 모듈러 역 연산부는 (-U)+V 연산의 결과가 짝수이므로 최하위 비트 중 적어도 하나의 0을 제거하도록, 동일 싸이클에서 오른쪽 정렬(right shift) 하여 (-U)+V의 결과를 상기 저장부에 저장할 수 있다.
일실시예에 따르면 상기 모듈러 역 연산부는 오른쪽 쉬프트해야할 (-U), V, (-U)+V 연산의 결과 중 하나의 최하위 2 비트가 모두 0일 경우, 1-bit 쉬프트 대신 2-bit 쉬프트 되도록 하여 속도를 더 개선할 수 있다.
나아가, (-U), 또는 V, (-U)+V 연산의 결과 중 하나를 2-bit 쉬프트할 때, 함께 쉬프트되는 (-R), S, (-R)+S 연산의 결과 중 하나의 최하위 2 비트 중 적어도 1 비트가 0이 아닐 경우, 0, m, -m, 및 2m 중 어느 하나를 더해주어 상기 최하위 2-bit을 0으로 만들고 다시 2-bit 쉬프트 되도록 하여 속도를 더 개선할 수도 있다.
나아가, (-R)+S 연산의 결과를 2-bit shift할 때 (-R)+S의 결과를 기다리지 않고 (-R)와 S 각각의 최하위 2-bit만 더한 결과를 기준으로 0, m, -m, 및 2m 중 하나를 선택하도록 하여 딜레이를 줄일 수 있다.
도 1은 일실시예에 따른 ECC 알고리즘 처리 장치의 블록도이다.
도 2는 일실시예에 따른 ECC 알고리즘의 처리 과정을 설명하기 위해 제시되는 참고도이다.
도 3a는 일실시예에 따른 모듈러 역 연산부의 블록도이다.
도 3b는 일실시예들에 따른 ECC 알고리즘의 처리 과정에서의 RS 연산과 LS 연산을 비교하여 설명하기 위한 참고도이다.
도 4는 일실시예에 따른 모듈러 역원 연산부의 예시적 블록도이다.
도 5는 다른 일실시예에 따른 모듈러 역원 연산부의 예시적 블록도이다.
도 6은 또 다른 일실시예에 따른 모듈러 역원 연산부의 예시적 블록도이다.
이하에서, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 권리범위는 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명에서 사용되는 용어는, 연관되는 기술 분야에서 일반적이고 보편적인 것으로 선택되었으나, 기술의 발달 및/또는 변화, 관례, 기술자의 선호 등에 따라 다른 용어가 있을 수 있다. 따라서, 아래 설명에서 사용되는 용어는 기술적 사상을 한정하는 것으로 이해되어서는 안 되며, 실시예들을 설명하기 위한 예시적 용어로 이해되어야 한다.
또한 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세한 그 의미를 기재할 것이다. 따라서 아래 설명에서 사용되는 용어는 단순한 용어의 명칭이 아닌 그 용어가 가지는 의미와 명세서 전반에 걸친 내용을 토대로 이해되어야 한다.
Elliptic Curve Cryptosystem in GF(p)
최근 요구되는 보안 강도에 따른 ECC의 키 길이는 256-bit로, 워드 길이인 32-bit 또는 64-bit보다 커 소프트웨어로 구현 시 워드 단위로 나누어 계산해야 한다. 이는 계산 능력이 뛰어난 서버급 환경에서는 큰 문제가 되지 않으나, 자원이 제한된 임베디드 시스템 환경의 경우 ECC 연산은 큰 부담으로 작용할 수 있다. 이와 달리 ECC를 하드웨어로 구현할 경우 ECC의 알고리즘 특성에 맞춘 전용 모듈로 구현할 수 있어 계산 속도를 크게 증가시킬 수 있다. ECC도 다른 공개키 암호 알고리즘과 마찬가지로 유한체(finite field) 상에서의 연산인 모듈러 덧셈(MA, Modular Addition), 모듈러 역(MI, Modular Inversion), 모듈러 곱셈(MM, Modular Multiplication)을 사용한다. 이 중 MI는 다른 대표적인 공개키 암호 알고리즘인 RSA에서는 거의 사용되지 않으나 ECC에서는 빈번하게 사용되는데, MA나 MM에 비해 계산량이 많아 ECC 전체 성능에 큰 영향을 미친다. 따라서 ECC의 하드웨어 설계 시 MI의 효율적인 구현은 매우 중요하다.
MI를 하드웨어로 구현에 대한 기존 접근에서는 MI 알고리즘인 유클리드 모듈러 역(EM, Euclidean Modular inverse), 이진 RS 모듈러 역(RS, binary Right-Shift modular inverse), 이진 LS(LS, binary Left-Shift modular inverse) 중에서 RS가 하드웨어 구현 시 가장 속도가 빠르다고 알려져 있다. 그러나, 하드웨어 구현 시 덧셈기가 많이 추가되는 등의 이유로 면적이 상대적으로 크다고 알려져 있다.
이하에서 설명하는 실시예들에 따르면, 하드웨어 구현 시 가장 속도가 빠른 RS 방식의 MI를 제시하면서도, 기존의 구현보다 면적을 크게 줄였다. 또한, 속도 면에서도 기존보다 싸이클 수가 줄어드는 구조를 제시한다. 또한, 후술하겠지만 이러한 실시예들은 몽고메리 모듈러 역(MMI, Montgomery Modular Inverse) 알고리즘에도 적용이 가능하여 여러 가지 장점이 있다.
모듈러 역원 연산 알고리즘
MI(modular inverse) 알고리즘으로는 최대 공약수(GCB: Greatest Common B를 구하는 것에 기반한 방법이 많이 사용된다. 최대 공약수를 구하기 위해 값들을 왼쪽 또는 오른쪽으로 정렬한 후 서로 빼거나 더하는 과정이 반복하여 값을 최대 공약수로 줄여나가게 된다. 소프트웨어 설계의 경우 한정된 자원(CPU의 ALU)로만 덧셈/뺄셈이 수행되기 때문에 추가적인 덧셈/뺄셈을 가진 오른쪽 정렬 방식이 느리나 하드웨어 설계에서는 덧셈기를 더 추가하는 것이 가능하므로 빠른 modular inverse가 가능하다. 그리고 발명한 modular inverse는 구조를 덧셈기의 양을 최소화하고 소모되는 클럭 싸이클을 크게 줄일 수 있는 방법이 포함되어 있다.
ECC 연산 처리 장치의 구조
도 1은 일실시예에 따른 ECC 알고리즘 처리 장치의 블록도이다.
기본적으로 데이터를 저장하기 위한 레지스터 등의 저장 공간과 모듈러 연산을 위한 모듈러 역, 모듈러 곱, 모듈러 덧셈/뺄셈 모듈, 그리고 이들을 동작과 입출력을 제어하기 위한 제어 로직을 포함하게 된다.
일실시예에 따르면 하드웨어-구현되는 타원곡선 암호화 알고리즘 처리 장치가 제공된다. 장치에는 레지스터 같이 알고리즘 처리 중의 데이터를 저장하기 위한 적어도 하나의 저장부가 포함된다. 그리고 모듈러 역 연산부(MI 모듈)이 포함되는데, 이 모듈러 역 연산부의 구조들에 대한 다양한 실시예들은 보다 상세히 후술한다.
모듈러 역 연산부는 우측정렬 시프트 (RS: right shift) 방식의 연산을 하드웨어적으로 구현한 모듈이다. MI는 ax = 1 (mod m)의 관계에 있는 a의 모듈러 역 x (단, x = a-1 (mod m)임)을 연산한다.
그 밖에 다양한 모듈러 덧셈부/뺄셈부 등이 더 포함된다.
ECC 연산 과정
도 2는 일실시예에 따른 ECC 알고리즘의 처리 과정을 설명하기 위해 제시되는 참고도이다.
p가 소수일 때 유한체 GF(p) 상에서의 타원 곡선은 y2 (mod p) = x3 + ax + b (mod p)를 만족하는 (x, y) 점들의 집합과 항등원인 무한대 점 O를 의미한다. 타원 곡선 상에서 두 점에 대한 연산은 포인트 합(PA, Point Addition), 포인트 승(PD, Point Doubling)으로 나뉘며 도 3a는 이를 설명하기 위한 것이다.
PA는 서로 다른 두 점 간의 덧셈으로, 두 점을 지나는 직선이 타원 곡선과 만나는 다른 한 점을 구한 후 이를 다시 x축 대칭하여 구할 수 있다. PD는 서로 같은 두 점 간의 덧셈으로, 이 두 점에서 타원 곡선의 접선이 타원 곡선과 만나는 다른 한 점을 구한 후 이를 다시 x축 대칭하여 구할 수 있다. 이를 구하기 위한 구체적인 수식은 다음 표와 같다.
Point addition
(x1, y1) + (x2, y2)
Point doubling
2(x1, y1)
x3
Figure 112017082349974-pat00002
Figure 112017082349974-pat00003
y3
Figure 112017082349974-pat00004
Figure 112017082349974-pat00005
위 표 1에서 볼 수 있듯이 PA와 PD를 수행하기 위해서는 모듈러 곱셈, 모듈러 역(또는 나눗셈), 모듈러 덧셈/뺄셈이 필요함을 알 수 있다. PA와 PD를 반복하여 키 생성, ECDH, ECDSA의 주요 연산인 포인트 곱(PM, Point Multiplication)을 수행하게 된다. 일반적인 하드웨어 ECC 모듈의 구조는 다음과 같다.
기본적으로 데이터를 저장하기 위한 레지스터 등의 저장 공간과 모듈러 연산을 위한 모듈러 역, 모듈러 곱, 모듈러 덧셈/뺄셈 모듈, 그리고 이들을 동작과 입출력을 제어하기 위한 제어 로직을 포함하게 된다.
모듈러 역 모듈의 구조 및 왼쪽 정렬 방식과 오른쪽 정렬 방식 비교
도 3a는 일실시예에 따른 모듈러 역 연산부의 블록도이다.
일실시예에 따르면 상기 모듈러 역 연산부는, aR≡U (mod m), aS≡V (mod m)를 만족하도록 R, S, U, 및 V 각각의 초기 값을 설정하고, 상기 U 및 상기 V의 값을 오른쪽 쉬프트와 뺄셈을 통해 줄여 나가서 상기 U 및 상기 V 중 어느 하나가 1이 되는 경우에 상기 a의 모듈러 역원인 상기 x를 결정한다.
여기서 상기 제어부는 상기 R의 초기 값을 1로 주고, 상기 S의 초기 값을 0으로 주고, 상기 U의 초기 값을 -m으로 주고, 상기 V의 초기 값을 a로 줌으로써, 상기 저장부에 상기 U 대신 -U를 저장하고 상기 R 대신 -R을 저장하여 처리한다.
위에서 말한 초기화 값은 모듈러 역 모듈이 동작을 시작할 때 데이터 저장부의 레지스터 값의 초기 값을 의미한다. 제어부는 데이터 저장부의 내용을 읽어 들여 연산부로 보내 연산을 수행하고 그 결과를 다시 데이터 저장부에 저장시키는 역할을 수행한다. 모듈러 역 알고리즘에 따라 연산부에서 수행하는 연산과 제어부의 제어 방법이 달라진다. 연산부에 덧셈기가 하나만 있을 경우 소프트웨어 환경과 비슷하며, 이 경우 왼쪽 정렬 기반의 모듈러 역 알고리즘의 속도가 더 빠를 수 있다. 아래에서 설명하겠지만 오른쪽 정렬 기반 알고리즘은 추가 연산이 있지만 덧셈기의 수가 충분한 경우 오른쪽 정렬 기반 모듈러 역 알고리즘의 속도가 더 빠르게 된다. 도 3b는 이를 설명하기 위한 것이다.
도 3b는 일실시예들에 따른 ECC 알고리즘의 처리 과정에서의 RS 연산과 LS 연산을 비교하여 설명하기 위한 참고도이다. 도 3b의 (a)에서는 가장 왼쪽(most significant bit, MSB)만 0이 되나, (b)에서는 가장 오른쪽(least significant bit, LSB) 뿐만 아니라 뺄셈으로 인한 carry 이동으로 MSB도 높은 확률로 0이 된다. 빼는 두수가 비슷한 크기의 값이었다면, MSB측 bit은 1 bit이 아니라 더 많은 bit이 0이 될 수 있다. 즉, 뺄셈 시 값이 줄어드는 효과가 (b)가 더 빠르다.
기존의 right shift binary inverse 알고리즘
기존의 오른쪽 정렬 기반 알고리즘은 a-1 (mod m)을 구하고자 할 때, 즉, ax = 1 (mod m)를 만족하는 x를 구할 때, aR≡U (mod m), aS≡V (mod m)를 만족하는 R, S, U, V를 0, 1, m, a로 초기화한 후 right shift를 통해 오른쪽 정렬 후 두 식을 서로 빼어 U와 V의 값을 줄여나가는 방식을 사용한다. 즉, U가 짝수면 R와 함께 오른쪽 shift, V가 짝수면 S와 함께 오른쪽 shift, U와 V가 모두 홀수면 U>V일 때 U=U-V, R=R-S, U<V일 때 V=V-U, S=S-R이 수행된다. 이를 통해 U나 V가 1이 되면 aR≡1 (mod m) 또는 aS≡1 (mod m)이 되므로, R나 S가 a의 역원이 된다.
짝수 U 또는 V를 오른쪽 shift할 때 R과 S가 홀수인 경우 바로 shift하면 1이었던 최하위 bit의 정보가 사라지므로 m을 더하는 추가 연산이 더 필요하다. U-V와 V-U의 선택은 U>V에 의해 결정되므로, U-V>0일 경우 U-V의 값을 그대로 사용하면 되나 U-V<0일 경우 V-U 연산이 추가로 더 필요하다(V-U = -(U-V)이나 이 또한 덧셈 연산이 필요함). 이러한 추가 연산 때문에 왼쪽 정렬에 기반을 둔 modular inverse 알고리즘에 비해 더 많은 덧셈/뺄셈 연산이 필요하게 된다. 특히 소프트웨어 설계에선 한정된 ALU에서 덧셈/뺄셈이 수행되는 것이므로 실행 속도가 많이 느려지게 된다.
제안하는 일실시예 : U의 초기 값에 -m을 제공하며 RS 방식의 MI를 구현
도 4는 일실시예에 따른 모듈러 역원 연산부의 예시적 블록도이다.
발명의 내용은 오른쪽 정렬에 기반을 둔 right shift binary inverse algorithm을 하드웨어로 구현하는 것이다. 우선 modulus m의 bit 길이 n 단위로 덧셈을 수행(워드 단위로 나누지 않음)하도록 하여 제어 회로를 단순화한다. n=256일 때에도 100MHz 이상의 고속 설계가 가능하다. 그리고 right shift와 뺄셈을 각각 별도의 클럭 싸이클에 수행하지 않는다. U와 V 간 뺄셈의 결과는 항상 짝수이므로 뺄셈의 결과는 별도의 클럭 싸이클을 소모하지 않고 뺄셈과 동일한 싸이클 내에서 right shift하여 저장되도록 한다(하드웨어에서는 shift 연산은 비용없는 shift된 wire 연결일 뿐임). 마지막으로 필요한 덧셈기를 필요한 만큼 포함하도록 하여 자원 공유에 따른 클럭 싸이클 수 증가를 방지한다. 이 때 필요한대로 추가된 덧셈기의 수가 많을 수 있으나(5~6개) 제안하는 방법으로 이를 크게 줄일 수 있다(3개).
기존의 알고리즘에선 U=U-V, V=V-U, R=R-S, S=S-R 연산이 수행되나 U와 R가 저장되는 레지스터에 -U와 -R을 저장한다면 수식은 (-U)=(-U)+V, V=(-U)+V, (-R)=(-R)+S, S=(-R)+S이 되어, (-U)+V와 (-R)+S 연산만 필요하게 된다. R와 S에서 +m을 위한 덧셈기까지 포함하여 3개의 덧셈기만 필요하다. 이를 위해 필요한 것은 U와 R의 초기값 값을 음수로 변경하여 입력하는 것뿐이다. U와 R의 초기값은 m, 0이므로, U에만 -m으로 변경하여 입력하면 된다. Right shift binary inverse 알고리즘은 modulus m이 홀수일 때에만 가능한 연산이며 타원곡선 암호에서 m은 항상 홀수이다. 따라서 -m은 m의 최하위 bit만 제외하고 bitwise inverting하는 것만으로 쉽게 구할 수 있다.
제안하는 다른 일실시예: 속도를 더욱 개선
도 4는 다른 일실시예에 따른 모듈러 역원 연산부의 예시적 블록도이다.
UV는 V가 짝수일 때 (-U), (-U)가 짝수일 때 V, 둘 다 홀 수 일 때 (-U)+V를 나타내고, RS는 V가 짝수일 때 (-R), (-U)가 짝수일 때 S, 둘 다 홀 수 일 때 (-R)+S를 나타낸다고 하자.
일실시예에 따르면 상기 모듈러 역 연산부는 상기 RS가 홀수인 경우 상기 m 또는 -m을 더해주는 덧셈기를 상기 -R과 상기 S을 더하는 덧셈기 뒤에 더 포함할 수 있다.
일실시예에 따르면 상기 모듈러 역 연산부는 (-U)+V 연산의 결과가 짝수이므로 최하위 비트 중 적어도 하나의 0을 제거하도록, 동일 싸이클에서 오른쪽 정렬(right shift) 하여 (-U)+V의 결과를 상기 저장부에 저장할 수 있다.
일실시예에 따르면 상기 모듈러 역 연산부는 상기 UV의 최하위 2 비트가 모두 0일 경우, 2-bit 쉬프트 되도록 하여 속도를 더 개선할 수 있다.
나아가, 상기 모듈러 역 연산부는 상기 RS의 최하위 2 비트 중 적어도 1 비트가 0이 아닐 경우, 0, m, -m, 및 2m 중 어느 하나를 더해주어 상기 최하위 2-bit을 0으로 만들고 다시 2-bit 쉬프트 되도록 하여 속도를 더 개선할 수도 있다.
구체적으로, 본 실시예에서는 UV의 최하위 2 bit이 모두 0일 경우 왼쪽으로 2-bit 쉬프트 되도록 하여 속도를 더 개선할 수 있다. 이 때 RS의 최하위 2-bit은 0이 아닐 수도 있으나 0, m, -m, 2m 중 하나와 더해 최하위 2-bit을 0으로 만드는 것이 가능하다. 그림 2에서 *의 선택 방법은 다음 표와 같다.
UV RS의 최하위 2-bit m의 최하위 2-bit = 1일 때 m의 최하위 2-bit = 3일 때
최하위 1-bit만 0 0, 2 0
1, 3 m
최하위 2-bit이 0 0 0
1 -m m
2 2m
3 m -m
도 4를 참조하여 설명한 실시예와 비교하였을 때 m 종류의 선택이 기존 0, -m, m에서 2m이 하나 더 추가될 뿐이며 1 bit shift에 2-bit shift가 더 추가되었기 때문에 multiplexer만 늘어날 뿐 덧셈기나 레지스터 등 비용이 큰 소자는 없어 면적 오버헤드는 크지 않다.
추가적 실시예: 몽고메리 역원(Montgomery inverse) 모듈에의 응용
도 6은 또 다른 일실시예에 따른 Almost Montgomery inverse 모듈의 예시적 블록도이다. 앞서 설명한 방법(면적을 줄이는 방법과 속도를 높이는 방법)은 RS 알고리즘과 비슷한 구조의 Montgomery inverse 모듈에도 적용 가능하다. Montgomery inverse 알고리즘은 a-1
Figure 112017082349974-pat00006
2n(mod m)을 계산하는 알고리즘으로 크게 두 단계로 나뉜다. 첫 단계는 almost Montgomery inverse라 불리며 a-1
Figure 112017082349974-pat00007
2k(mod m) (n<k<2n)을 계산하고 두 번째 단계에서는 이를 a-1
Figure 112017082349974-pat00008
2n로 변환한다. almost Montgomery inverse는 RS와 흡사하기 때문에 앞서 사용했던 방법을 적용하면 다음과 같은 구조를 갖는다.
RS 알고리즘과 동일하게 변수 U와 R에 -U와 -R을 저장하도록 하여 덧셈기의 양을 줄일 수 있다. RS 알고리즘과 달리 R, S를 계산하는 쪽에 m, -m, 2m을 더하는 연산이 없어 더 적은 덧셈기가 소모된다. 상기 도 6 내에서 1-bit shift 부분에 "제안하는 발명2"에서 RS 알고리즘의 속도를 향상시켰던 것처럼 추가로 2-bit shift와 이를 위한 multiplexer를 추가하여도 되며, RS 알고리즘과 달리 m을 더하는 연산이 없기 때문에 3-bit shift와 이를 위한 multiplexer를 추가하는 것이 가능하다. 그 이상의 shift도 추가할 수 있으나 그에 따른 속도 향상 효과는 갈수록 떨어진다.
알고리즘 설명
Algorithm 1은 RS와 RS의 면적을 개선한 알고리즘으로, 음영 표시의 왼쪽은 원래 RS를, 오른쪽은 RS의 면적을 개선한 RS variant를 나타낸다. 나머지 부분은 공통 사용 부분이다. Algorithm 1의 while문의 루프 불변자(loop invariant)는
aR ≡U (mod m), aS ≡ V (mod m) --- (1)
이다. Algorithm 1의 첫 번째 줄에서 R, S, U, V는 각각 0, 1, m, a로 초기화되며, while문 내에서 right-shift와 뺄셈을 통해 U와 V에 저장된 값이 지속적으로 감소된다. V = 0일 때 U의 값이 0이면 a-1(mod m)이 존재하지 않으며, U의 값이 1이면 aR≡ 1 (mod m)이 되어, R에 저장되어 있는 값이 a-1 (mod m)이 된다. ECC 알고리즘에서 modulus m은 항상 소수이므로 역원이 존재하지 않는 경우는 없다. 이하에서는 역원이 존재하는 경우만 가정하여 설명한다. 표 3은 상술한 Algorithm 1의 예시이다.
Figure 112017082349974-pat00009
앞서 설명한 바와 같이 RS는 14째 줄의 U > V의 결과에 따라 U-V와 V-U의 선택이 달라진다. U > V 연산은 결국 U-V > 0이므로 U-V 연산은 기본적으로 수행되며, 그 결과가 음수일 경우 V-U 를 위한 추가 연산이 필요하다. 이들은 서로 덧셈의 역원 관계로 V-U = -(U-V)로도 계산이 가능하나, 2의 보수를 계산하는 과정 역시 덧셈기가 필요하다. 별도의 클럭 싸이클을 소모하지 않으려면 U-V와 V-U 각각에 덧셈기가 하나씩 필요하다. R-S와 S-R 연산을 수행하는 것도 마찬가지 이유로 2개의 덧셈기가 필요하다. 그리고 홀수 R과 S를 right-shift하기 위한 +m 연산(6번째 줄과 10번째 줄)까지 고려하면 소모 클럭 싸이클 수와 최상 경로(critical path)를 최소화하면서 RS를 하드웨어로 설계하는 것은 적어도 5∼6개의 덧셈기가 필요하다.
그런데, 오른쪽에서 대안으로 제시한 본 실시예에서는, U가 저장되는 레지스터에 (-U)를 저장하고, R이 저장되는 레지스터에 (-R)을 저장하는 식으로 간단한 수식만 바꾸었는데, 요구되는 덧셈기의 수를 반으로 줄였다. (달라진 주요 부분은 Algorithm 1의 첫 번째 줄과 12∼21번째 줄 음영 표시의 오른쪽 참고) 즉, 변경된 알고리즘에서는 변수 U와 R에 -U와 -R을 저장한다. 이를 위해 U가 m이 아닌 -m으로 초기화되며, 초기 값이 0인 R에서는 아무런 변화가 없다. 변경 결과 덧셈 연산만 존재하게 되어, (-U) + V, (-R) + S에 각 하나, 홀수 R과 S에 대한 +m (공용 사용)을 위해 하나, 총 3개의 덧셈기가 필요하다. 종래에 추가로 필요하던 5개의 덧셈기에 비해 덧셈기 수가 3개로 줄었다.
이상에서 설명된 장치는 메모리의 하드웨어 구성요소, 메모리를 제어 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 메모리 동작 제어 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (7)

  1. 하드웨어-구현되는 타원곡선 암호화 알고리즘 처리 장치에 있어서,
    알고리즘 처리 중의 데이터를 저장하기 위한 적어도 하나의 저장부;
    우측정렬 시프트 (right shift) 방식으로 ax = 1 (mod m)의 관계에 있는 a의 모듈러 역 x (단, x = a-1 (mod m)임)을 연산하는 모듈러 역 연산부; 및
    상기 알고리즘 처리 과정에서의 모듈러 덧셈을 수행하는 적어도 하나의 모듈러 덧셈 연산부
    를 포함하고,
    상기 모듈러 역 연산부는,
    aR=U (mod m), aS=V (mod m)를 만족하도록 R, S, U, 및 V 각각의 초기 값을 설정하고, 상기 U 및 상기 V의 값을 줄여 나가서 상기 U 및 상기 V 중 어느 하나가 1이 되는 경우에 상기 a의 모듈러 역원인 상기 x를 결정하는 타원곡선 암호화 알고리즘 처리 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 모듈러 역 연산부는 상기 R의 초기 값을 0로 주고, 상기 S의 초기 값을 1으로 주고, 상기 U의 초기 값을 -m으로 주고, 상기 V의 초기 값을 a로 줌으로써, 상기 저장부에 상기 U 대신 -U를 저장하고 상기 R 대신 -R을 저장하여 처리하는 타원곡선 암호화 알고리즘 처리 장치.
  4. 제3항에 있어서,
    상기 모듈러 역 연산부는 (-R)+S 연산의 결과가 음수인 경우 상기 m을 더해주는 덧셈기를 상기 -R과 상기 S을 더하는 덧셈기 뒤에 더 포함하는 타원곡선 암호화 알고리즘 처리 장치.
  5. 제3항에 있어서,
    상기 모듈러 역 연산부는 (-U)+V 연산의 결과가 짝수이므로 최하위 비트 중 적어도 하나의 0을 제거하도록, 동일 싸이클에서 오른쪽 정렬(right shift) 하여 (-U)+V의 결과를 상기 저장부에 저장하는 타원곡선 암호화 알고리즘 처리 장치.
  6. 제5항에 있어서,
    상기 모듈러 역 연산부는 (-U)+V 연산의 결과의 최하위 2 비트가 모두 0일 경우, 2-bit 쉬프트 되도록 하여 속도를 더 개선하는 타원곡선 암호화 알고리즘 처리 장치.
  7. 제5항에 있어서,
    상기 모듈러 역 연산부는 쉬프트해야 할 (-R), S, (-R)+S 연산의 결과 중 하나의 최하위 2 비트 중 적어도 1 비트가 0이 아닐 경우, 0, m, -m, 및 2m 중 어느 하나를 더해주어 상기 최하위 2 비트를 0으로 만들고 다시 2-bit 쉬프트 되도록 하여 속도를 더 개선하는 타원곡선 암호화 알고리즘 처리 장치.
KR1020170107740A 2017-08-25 2017-08-25 하드웨어 구현된 모듈러 역원 모듈 KR101977873B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170107740A KR101977873B1 (ko) 2017-08-25 2017-08-25 하드웨어 구현된 모듈러 역원 모듈

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170107740A KR101977873B1 (ko) 2017-08-25 2017-08-25 하드웨어 구현된 모듈러 역원 모듈

Publications (2)

Publication Number Publication Date
KR20190022023A KR20190022023A (ko) 2019-03-06
KR101977873B1 true KR101977873B1 (ko) 2019-08-28

Family

ID=65761291

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170107740A KR101977873B1 (ko) 2017-08-25 2017-08-25 하드웨어 구현된 모듈러 역원 모듈

Country Status (1)

Country Link
KR (1) KR101977873B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112685758B (zh) * 2020-12-31 2024-02-06 南方电网科学研究院有限责任公司 基于椭圆曲线加密算法的数据加密系统
CN117014208B (zh) * 2023-08-09 2024-04-09 海光信息技术股份有限公司 数据加密方法、装置、系统、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2937982B2 (ja) * 1997-01-27 1999-08-23 株式会社東芝 モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法
KR100585119B1 (ko) 2004-01-07 2006-06-01 삼성전자주식회사 암호화 장치, 암호화 방법 및 그 기록매체
KR100805272B1 (ko) * 2006-04-26 2008-02-20 고려대학교 산학협력단 부호화를 이용하는 곱셈 장치 및 그 방법
KR101548174B1 (ko) 2008-12-02 2015-09-07 삼성전자주식회사 모듈러스의 음의 역원을 구하는 방법
KR101794807B1 (ko) 2011-01-31 2017-11-08 삼성전자주식회사 몽고메리 역원 계산 장치 및 이를 이용한 몽고메리 역원 계산 방법

Also Published As

Publication number Publication date
KR20190022023A (ko) 2019-03-06

Similar Documents

Publication Publication Date Title
Liu et al. Efficient ring-LWE encryption on 8-bit AVR processors
Sasdrich et al. Efficient elliptic-curve cryptography using Curve25519 on reconfigurable devices
McIvor et al. Hardware Elliptic Curve Cryptographic Processor Over $ rm GF (p) $
Öztürk et al. Low-power elliptic curve cryptography using scaled modular arithmetic
Daly et al. An FPGA implementation of a GF (p) ALU for encryption processors
Oliveira et al. Two is the fastest prime: lambda coordinates for binary elliptic curves
US20120057695A1 (en) Circuits for modular arithmetic based on the complementation of continued fractions
US20090136025A1 (en) Method for scalarly multiplying points on an elliptic curve
Hutter et al. NaCl’s crypto_box in hardware
Bos et al. Montgomery arithmetic from a software perspective
Parrilla et al. Elliptic curve cryptography hardware accelerator for high-performance secure servers
Oliveira et al. The Montgomery ladder on binary elliptic curves
Dong et al. Ec-ecc: Accelerating elliptic curve cryptography for edge computing on embedded gpu tx2
Sasdrich et al. Cryptography for next generation TLS: implementing the RFC 7748 elliptic curve448 cryptosystem in hardware
KR101977873B1 (ko) 하드웨어 구현된 모듈러 역원 모듈
EP1600852A2 (en) Method and apparatus for calculating a modular inverse
Sasdrich et al. Exploring RFC 7748 for hardware implementation: Curve25519 and Curve448 with side-channel protection
Pornin Optimized binary gcd for modular inversion
JP3726966B2 (ja) 乗算器及び暗号回路
Dong et al. Utilizing the Double‐Precision Floating‐Point Computing Power of GPUs for RSA Acceleration
Chen et al. A high-performance unified-field reconfigurable cryptographic processor
Javeed et al. Area‐time efficient point multiplication architecture on twisted Edwards curve over general prime field GF (p)
JP2006259735A (ja) Simd処理を用いた楕円曲線点8倍化
US7558817B2 (en) Apparatus and method for calculating a result of a modular multiplication
Safieh et al. Area efficient coprocessor for the elliptic curve point multiplication

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