KR102253211B1 - 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법 - Google Patents

소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법 Download PDF

Info

Publication number
KR102253211B1
KR102253211B1 KR1020190107140A KR20190107140A KR102253211B1 KR 102253211 B1 KR102253211 B1 KR 102253211B1 KR 1020190107140 A KR1020190107140 A KR 1020190107140A KR 20190107140 A KR20190107140 A KR 20190107140A KR 102253211 B1 KR102253211 B1 KR 102253211B1
Authority
KR
South Korea
Prior art keywords
modular
word
value
elliptic curve
montgomery
Prior art date
Application number
KR1020190107140A
Other languages
English (en)
Other versions
KR20210026410A (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 KR1020190107140A priority Critical patent/KR102253211B1/ko
Publication of KR20210026410A publication Critical patent/KR20210026410A/ko
Application granted granted Critical
Publication of KR102253211B1 publication Critical patent/KR102253211B1/ko

Links

Images

Classifications

    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-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/722Modular multiplication
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

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

Abstract

본 발명은 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법에 관한 것으로, 더욱 상세하게는 소수체와 이진체 상의 다양한 크기의 타원곡선을 지원하면서, EC-DSA, EC-ElGamal, EC-DH 등 타원곡선 기반 공개키 암호 시스템의 하드웨어 구현이 가능한 연산장치 및 방법에 관한 것이다.
이를 위해 본 발명은 ω-비트 크기의 모듈러 가산/감산기와, ω-비트 크기의 워드 기반 몽고메리 모듈러 곱셈기를 포함하는 워드 기반 유한체 연산기와; 타원곡선 도메인 파라미터와 워드 기반 유한체 연산의 중간 결과값을 저장하는 메모리와; 동작모드를 설정하기 위한 값을 저장하며 워드 기반 유한체 연산의 중간 결과값을 저장하는 레지스터 블록과; 상기 워드 기반 유한체 연산기, 메모리 및 레지스터 블록을 제어하는 동작모드 제어부;를 포함한다.

Description

소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법{Computing Apparatus and Method for Hardware Implementation of Public-Key Cryptosystem Supporting Elliptic Curves over Prime Field and Binary Field}
본 발명은 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법에 관한 것으로, 더욱 상세하게는 소수체와 이진체 상의 다양한 크기의 타원곡선을 지원하면서, EC-DSA, EC-ElGamal, EC-DH 등 타원곡선 기반 공개키 암호 시스템의 하드웨어 구현이 가능한 연산장치 및 방법에 관한 것이다.
5G 이동통신기술이 상용화됨에 따라 무선 네트워크를 통해 연결되는 장치와 전송되는 정보 량이 기하급수적으로 증가하고 있으며 특히, 사물인터넷(Internet of Things), 자율주행 자동차, 무인 비행체(드론), 스마트 홈, 스마트 헬스 기기, 개인정보 단말기, 전자지갑, 가상화폐 등 유선 및 무선 네트워크에 연결되어 정보를 전송, 저장, 처리하는 장치와 시스템이 증가함에 따라 사이버 공격으로부터 정보와 장치를 보호하기 위한 정보보안 기술의 중요성이 더욱 커지고 있다.
기밀성(Confidentiality), 인증(Authentication), 그리고 무결성(Integrity) 검증 등의 정보보안 기능을 위해 비밀키(대칭키) 암호 방식, 공개키 암호 방식, 그리고 암호학적 해시 함수 등이 사용되고 있다. 전자서명, 키 교환, 인증 등을 위한 공개키 암호 방식으로는 RSA(Rivest, Shamir, Adleman) 암호와 타원곡선 암호(Elliptic Curve Cryptography)가 대표적으로 널리 사용되고 있다. RSA 암호 방식은 1024-비트 또는 2048-비트의 매우 큰 키 길이를 필요로 하여 메모리와 하드웨어 요구량이 크다는 단점이 있다. 반면에, 타원곡선 암호는 수 백 비트 정도의 키 길이로 RSA와 유사한 보안 강도를 가져, 하드웨어 및 소프트웨어 구현에 유리하다는 장점을 가지며, 최근에는 자율주행 자동차, 드론, 전자지갑, 가상화폐 등의 보안을 위해 타원곡선 공개키 암호 방식의 사용이 급속히 확대되고 있다.
타원곡선 공개키 암호 방식에 사용되는 타원곡선은 미국 국립표준기술연구소(NIST)와 SEC-2의 표준 문서에 다양한 크기(키 길이)의 타원곡선들이 정의되고 있으며, 이를 기반으로 타원곡선 기반 전자서명 프로토콜인 EC-DSA, 타원곡선 기반 키 교환 프로토콜인 EC-DH(Diffie-Hellman), 타원곡선 기반 메시지 암호 및 복호 프로토콜인 EC-ElGamal 등 다양한 공개키 암호 프로토콜들이 구현되고 있다.
타원곡선 암호는 적용되는 유한체(finite field)에 따라 소수체 상의 타원곡선 암호와 이진체 상의 타원곡선 암호로 구분되며, 체의 크기도 여러 가지가 사용된다. NIST의 전자서명 표준인 FIPS 186-4에는 소수체 상의 5가지(192, 224, 256, 384, 521 비트) 크기와 이진체 상의 5가지(163, 233, 283, 409, 571 비트) 크기의 타원곡선이 규정되어 있으며, SEC-2에는 소수체상의 8가지(secp192k1, secp192r1, secp224k1, secp224r1, secp256k1, secp256r1, secp384r1, secp521r1)와 이진체 상의 12가지(sect163k1, sect163r1, sect163r2, sect233k1, sect233r1, sect239k1, sect283k1, sect283r1, sect409k1, sect409r1, sect571k1, sect571r1) 타원곡선이 규정되어 있다.
타원곡선 암호는 응용 분야와 시스템에 따라 유한체와 타원곡선의 크기가 다르며, 이에 따라 타원곡선 방정식 계수, 생성점 값, 모듈러 값 등 도메인 파라미터가 달라진다. 타원곡선 암호의 전용 하드웨어 구현을 위해서는 국내외 표준에 규정되어 있는 다양한 타원곡선을 지원할 수 있도록 연산장치와 연산방법의 유연성이 필요하다.
또한, EC-DSA, EC-ElGamal, EC-DH 등 타원곡선 암호 응용 프로토콜의 구현을 위해서는 점 스칼라 곱셈(point scalar multiplication; PSM), 점 덧셈(point addition; PA), 점 뺄셈(point subtraction; PS), 점 두배(point doubling; PD)의 타원곡선 점 연산뿐만아니라 모듈러 덧셈(modular addition; MA), 모듈러 뺄셈(modular subtraction; MS), 모듈러 곱셈(modular multiplication; MM), 모듈러 나눗셈(modular division; MD), 모듈러 역원(modular inversion; MI)의 유한체 모듈러 산술연산이 필요하다. 또한, EC-ElGamal의 암호화를 위해서는 메시지 데이터를 타원곡선 상의 점으로 매핑하는 과정이 필요하며, 이를 위해서는 모듈러 제곱근(modular square root; MSQRT) 계산이 필요하다.
이에 따라 하나의 하드웨어 장치를 이용하여 다양한 크기의 소수체 및 이진체 타원곡선을 지원하며, 타원곡선 점 연산, 유한체 모듈러 산술연산, 그리고 메시지의 타원곡선 점 매핑기능을 제공하는 효율적 연산장치 및 연산방법의 개발이 필요한 실정이다.
본 발명은 상기의 문제점을 해결하기 위해 안출된 것으로서 워드기반 유한체 연산장치와 메모리 그리고 이들에 대한 효율적인 제어방법을 통해 미국 국립표준기술연구소와 SEC-2의 표준문서에 정의된 다양한 키 길이의 타원곡선들을 지원함으로써 타원곡선 기반 전자서명(EC-DSA), EC-ElGamal, EC-DH(Diffie-Hellman) 등 타원곡선 공개키 암호 시스템의 하드웨어 구현이 가능한 연산장치 및 방법을 제공함에 그 목적이 있다.
본 발명은 상기의 목적을 달성하기 위해 아래와 같은 특징을 갖는다.
ω-비트 크기의 모듈러 가산/감산기와, ω-비트 크기의 워드 기반 몽고메리 모듈러 곱셈기를 포함하는 워드 기반 유한체 연산기와; 타원곡선 도메인 파라미터와 워드 기반 유한체 연산의 중간 결과값을 저장하는 메모리와; 동작모드를 설정하기 위한 값을 저장하며 워드 기반 유한체 연산의 중간 결과값을 저장하는 레지스터 블록과; 상기 워드 기반 유한체 연산기, 메모리 및 레지스터 블록을 제어하는 동작모드 제어부;를 포함한다.
여기서 상기 레지스터 블록에 저장되며, 동작모드 제어부에 의해 제어되는 동작모드는 타원곡선 점 연산모드과, 유한체 모듈러 연산모드를 포함한다.
아울러 상기 동작모드는 데이터를 몽고메리 도메인으로 매핑하기 위한
Figure 112019089393916-pat00001
계산모드와, 몽고메리 도메인의 연산결과를 정수 도메인으로 변환하는 역매핑모드와, 좌표계 변환을 위한 연산과, 몽고메리 모듈러 곱셈 과정에서 합동(congruence)을 이용한 축약에 사용되기 위한
Figure 112019089393916-pat00002
값의 계산모드와, 임의의 메시지 값을 타원곡선 상의 점으로 매핑하는 과정에서 필요한 모듈러 제곱근 계산모드를 포함한다.
또한 상기 워드 기반 몽고메리 모듈러 곱셈기는 소수체 상의 곱셈과 이진체 상의 곱셈을 선택적으로 계산하는 ω-비트 크기의 듀얼 필드 곱셈기와, ω-비트 크기의 듀얼 필드 가산기와, ω-비트 크기의 레지스터와, 1-비트 캐리저장 레지스터와, 2-비트 캐리저장 레지스터와, 1-비트 가산기와, 복수 개의 선택기를 포함한다.
아울러 본 발명의 일실시예에 따른 연산방법으로 상기 연산장치를 통해 타원곡선 도메인 파라미터와 데이터가 연산장치에 입력되는 제1단계와; 동작모드 제어부의 제어에 따라 타원곡선에 따른 초기 파라미터 값으로서 워드기반 몽고메리 모듈러 곱셈을 위해 데이터를 몽고메리 도메인으로 매핑하는데 필요한
Figure 112019089393916-pat00003
가 계산되고,
Figure 112019089393916-pat00004
값과 데이터를 몽고메리 모듈러 곱셈하여 몽고메리 도메인으로 매핑하는 제2단계와; 동작모드에 따른 동작모드 제어부의 제어에 따라 타원곡선 점 연산(PSM, PA, PS, PD)과 유한체 모듈러 연산(MM, MD, MI, MA, MS)이 수행되는 제3단계와; 좌표계 변환 단계로, 소수체의 경우에는 자코비안(Jacobian) 좌표계에서 2차원 아핀(affine) 좌표계로, 이진체의 경우에는 로페즈-다합(Lopez-Dahab) 좌표계에서 2차원 아핀 좌표계로 변환이 수행되는 제4단계와; 몽고메리 도메인에서 계산된 연산결과에 포함되어 있는
Figure 112019089393916-pat00005
을 제거하기 위해 리매핑되는 제5단계와; 상기 제5단계의 결과데이터가 출력되는 제6단계;를 포함한다.
여기서 상기 연산장치는 유한체 연산기의 비트 크기에 따라 반복적인 연산을 통해 다수의 형태를 가지는 타원곡선을 지원하며, 타원곡선에 따라 달라지는 모듈러 값 p를 외부에서 입력받은 후, 몽고메리 모듈러 곱셈 및 유한체 연산에 필요한
Figure 112019089393916-pat00006
값과, 몽고메리 곱셈 과정에서 합동(congruence)을 이용한 축약 연산에 사용되는
Figure 112019089393916-pat00007
를 계산하도록 구성된다.
또한 상기 연산장치는 타원곡선 기반의 EC-ElGamal 암호화를 위해 메시지 데이터를 타원곡선 상의 점으로 매핑하는 과정에서 필요한 모듈러 제곱근 연산을 계산하도록 구성된다.
본 발명에 따르면 유한체 연산기와 메모리 및 이들의 동작 제어를 통해 소수체와 이진체 상의 다양한 크기의 타원곡선 암호를 단일 하드웨어로 처리하는 방법을 제공하며, 또한 부가적인 연산 장치 없이 모듈러 산술연산과 메시지의 타원곡선 점 매핑 방법을 제공함으로써 하드웨어 복잡도를 감소시키고, 타원곡선 암호를 기반으로 하는 다양한 공개키 암호 프로토콜의 구현에 적용될 수 있어 유용성과 비용절감의 효과가 있다.
도 1은 본 발명의 일실시예에 따른 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치를 개략적으로 나타내는 블럭도이다.
도 2는 본 발명의 일실시예에 따른 도 1의 워드기반 몽고메리 모듈러 곱셈기의 내부 구성을 나타내는 블럭도이다.
도 3은 본 발명의 일실시예에 따른 소수체와 이진체를 지원하는 워드 기반 몽고메리 곱셈기의 동작 슈도코드를 나타내는 도면이다.
도 4는 본 발명의 일실시예에 따라
Figure 112019089393916-pat00008
계산 과정의 슈도코드를 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따라
Figure 112019089393916-pat00009
계산 과정의 슈도코드를 나타내는 도면이다.
도 6은 본 발명의 다른 실시예에 따른 메시지 데이터 X를 타원곡선 상의 점 (X,Y)로 매핑하는 방법의 슈도코드의 나타내는 도면이다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 설명하기 위하여 이하에서는 본 발명의 바람직한 실시예를 예시하고 이를 참조하여 살펴본다.
먼저, 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니며, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 또한 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 발명을 설명함에 있어서, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 본 발명의 일실시예에 따른 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치를 개략적으로 나타내는 블럭도이며, 도 2는 본 발명의 일실시예에 따른 도 1의 워드기반 몽고메리 모듈러 곱셈기의 내부 구성을 나타내는 블럭도이다.
또한 도 3은 본 발명의 일실시예에 따른 소수체와 이진체를 지원하는 워드 기반 몽고메리 곱셈기의 동작 슈도코드를 나타내는 도면이고, 도 4는 본 발명의 일실시예에 따라
Figure 112019089393916-pat00010
계산 과정의 슈도코드를 나타내는 도면이며, 도 5는 본 발명의 일실시예에 따라
Figure 112019089393916-pat00011
계산 과정의 슈도코드를 나타내는 도면이며, 도 6은 본 발명의 일실시예에 따른 메시지 데이터 X를 타원곡선 상의 점 (X,Y)로 매핑하는 방법의 슈도코드의 나타내는 도면이다.
도면을 참조하면 본 발명의 일실시예에 따른 하드웨어 구현을 위한 연산장치(100)는 ω-비트 크기의 모듈러 가산/감산기(11)와, ω-비트 크기의 워드 기반 몽고메리 모듈러 곱셈기(12)를 포함하는 워드 기반 유한체 연산기(10)와, 타원곡선 도메인 파라미터와 워드 기반 유한체 연산의 중간 결과값을 저장하는 메모리(20)와, 동작모드를 설정하기 위한 값을 저장하며 워드 기반 유한체 연산의 중간 결과값을 저장하는 레지스터 블록(30)과, 상기 워드 기반 유한체 연산기(10), 메모리(20) 및 레지스터 블록(30)을 제어하는 동작모드 제어부(40)로 이루어진다.
여기서 워드 기반 유한체 연산기(10)는 ω-비트 크기의 모듈러 가산/감산기(11)와, ω-비트 크기의 워드 기반 몽고메리 모듈러 곱셈기(12)로 구성되는데, ω는 기계어 명령어나 연산을 통해 레지스터에 옮겨놓을 수 있는 데이터의 단위를 의미하는 워드(word)의 크기이며, 자연수로서 바람직하게는 16-비트 또는 32-비트 또는 48-비트 또는 64-비트 등 필요에 따라 적절하게 선택되어 구현될 수 있다.
메모리(20)는 외부에서 입력되는 타원곡선 계수 값, 키 값, 모듈러 값(소수체의 경우에는 소수 p, 이진체의 경우에는 기약다항식), 타원곡선의 생성점 값을 저장하며, 또한 몽고메리 모듈러 곱셈을 위해 데이터를 몽고메리 도메인으로 매핑하기 위해 내부적으로 계산된
Figure 112019089393916-pat00012
((여기서 R=2N이고, N은 타원곡선의 크기를 나타내는 비트 수, p는 소수체의 경우 모듈러 값, 이진체의 경우 기약다항식을 나타냄)과 워드 기반 유한체 연산의 중간 결과값을 저장한다.
레지스터 블록(30)은 동작모드를 설정하기 위한 값을 저장하며, 또한 내부적으로 계산된
Figure 112019089393916-pat00013
(여기서,
Figure 112019089393916-pat00014
는 모듈러 값 p의 최하위 워드이고, ω는 워드의 크기)값을 저장하여 몽고메리 모듈러 곱셈 과정에서 합동을 이용한 축약에 사용되도록 한다.
또한, 메모리(20)에 저장된 키 값을 워드 단위로 읽어 저장하여 점 연산과 유한체 모듈러 연산에 사용되도록 하며, 또한 워드 기반 유한체 연산의 중간 결과 값들을 저장한다.
동작모드 제어부(40)는 레지스터 블록(30)의 동작모드설정 레지스터의 값에 따라 워드 기반 유한체 연산기(10)와 메모리(20)와 레지스터 블록(30)의 동작을 제어한다.
본 발명의 일실시예에 따른 유한체 연산장치와 제어방법에 의한 동작모드는 타원곡선 점 연산(PSM, PA, PS, PD)과 유한체 모듈러 연산(MM, MD, MI, MA, MS)을 포함하며, 또한 데이터를 몽고메리 도메인으로 매핑하기 위한
Figure 112019089393916-pat00015
계산과 그 역매핑, 좌표계 변환을 위한 연산과, 몽고메리 모듈러 곱셈 과정에서 합동을 이용한 축약에 사용되기 위한
Figure 112019089393916-pat00016
값의 계산과, 임의의 메시지 값을 타원곡선 상의 점으로 매핑하는 과정에서 필요한 모듈러 제곱근 계산 등을 포함한다.
동작모드설정 레지스터의 설정 값의 한 예로 아래 [표 1]과 같다.
Figure 112019089393916-pat00017
이러한 다양한 동작모드에 의해 타원곡선 기반 전자서명 EC-DSA, 타원곡선 기반 키 교환 프로토콜인 EC-DH(Diffie-Hellman), 타원곡선 기반 메시지 암호 및 복호 프로토콜인 EC-ElGamal 등의 다양한 공개키 암호 프로토콜 구현이 가능해진다.
여기서 상기 타원곡선 점 연산모드는 공개키 암호 프로토콜에서 사용되는 타원곡선 상의 점(point) 스칼라 곱셈(PSM), 점 덧셈(PA), 점 두배(PD), 점 뺄셈(PS) 연산을 구현할 수 있으며, 소수체 상의 타원곡선 점 연산과 이진체 상의 타원곡선 점 연산을 선택적으로 계산한다.
아울러 유한체 모듈러 연산모드는 공개키 암호 프로토콜에서 사용되는 모듈러 덧셈(MA), 모듈러 뺄셈(MS), 모듈러 곱셈(MM), 모듈러 나눗셈(MD), 모듈러 역원(MI) 연산을 구현할 수 있다.
이때 모듈러 곱셈은 워드 기반 유한체 연산기(10)의 워드 기반 몽고메리 모듈러 곱셈기(12)를 통해 수행되는데, 이러한 워드 기반 몽고메리 모듈러 곱셈기(12)는 소수체 상의 곱셈과 이진체 상의 곱셈을 선택적으로 계산하는 ω-비트 크기의 듀얼 필드 곱셈기(12a)와, ω-비트 크기의 듀얼 필드 가산기(12b)와, ω-비트 크기의 레지스터(12c)와, 1-비트 캐리저장 레지스터(12d)와, 2-비트 캐리저장 레지스터(12e)와, 1-비트 가산기(12f)와, 복수 개의 선택기(12g)를 포함하여 구성된다.
이와 같은 워드 기반 몽고메리 모듈러 곱셈기(12)를 통해 연산이 수행되는 과정은 도 3에 도시된 바와 같다.
이를 살펴보면, 우선 단계 단계 1 내지 단계 4에서는 워드 기반 몽고메리 곱셈을 수행하기 전에, 유한체 곱셈 결과 S와, 곱셈에 의한 캐리 값 C1-1, C2-1와, 덧셈에 의한 캐리 값 cy1, cy2의 초기값을 모두 0으로 설정한 단계 1은 곱셈연산의 시작에서 초기값이 설정되고, 단계 3 및 단계 4는 i-루프가 시작될 때 마다 초기값이 설정된다.
또한 단계 7과 단계 18은 피승수의 워드 ai와 승수의 워드 bj의 곱셈 ai × bj을 연산한다. 곱셈 결과 값 중, 상위 워드 C1은 (j+1)-루프 연산에서 캐리 입력으로 사용되며, 하위 워드 P1은 j-루프의 부분 곱으로 사용된다.
아울러 단계 8 과 단계 19는 소수체 상의 연산은 단계 8의 j-루프에서 계산된 부분 곱 P1,(j-1)-루프에서 계산된 곱셈의 캐리 값 C1j-1, 덧셈연산에 의한 캐리 값 cy1, (i-1)-루프에서 계산된 부분 곱의 합동 값 sj을 가산하여 부분 곱의 합 H와 캐리 출력 cy1을 계산한다.
이진체 상에서 연산은 단계 19를 통해서 P1, C1j-1, sj을 XOR연산하여 부분 곱의 합 H를 계산한다.
또한 단계 9 내지 단계-11과 단계 20 내지 단계 22는 최하위 워드인 j=0일 때, 모듈러 합동을 위한 데이터
Figure 112019089393916-pat00018
와 부분 곱의 합 H를 곱하여 s-1=0인 모듈러 합동 값 S를 만들기 위한 데이터 qi 값을 계산한다. 계산된 qi 값은 소수체 상의 연산에서는 단계 12 및 단계 13, 이진체 상의 연산에서는 단계 23 및 단계 24를 통해서 모듈러 합동 값 sj-1이 계산된다.
단계 12와 단계 13 및 단계 23와 단계 24는 덧셈연산에 의해 s-1=0인 모듈러 합동 값 S를 생성한다. 최하위 워드인 j=0인 경우에, 소수체 상의 연산에서 s-1=0이 되는 과정은 아래의 (1) 내지 (3)과 같으며, 이진체 상의 연산에서는 덧셈 연산이 XOR로 처리된다.
(1) 단계 10 :
Figure 112019089393916-pat00019
(2) 단계 12 :
Figure 112019089393916-pat00020
Figure 112019089393916-pat00021
(3) 단계 13 :
Figure 112019089393916-pat00022
Figure 112019089393916-pat00023
한편 단계 15와 단계 26은 곱셈연산 결과의 최상위 워드 sm-1을 계산한다. sm-1은 워드보다 1-비트 증가된 크기를 갖는다. 소수체 상의 연산에서는 덧셈에 의한 캐리가 발생하여 sm-1의 최상위 비트 smsb는 0 또는 1의 값을 가질 수 있으며, 이진체 상의 연산에서는 덧셈에 의한 캐리가 발생하지 않으므로, smsb=0이다.
또한 단계 29는 i-루프의 반복이 완료되어 부분곱 가산이 완료되면, 소수체 상의 곱셈 결과값 S와 모듈러 값 p을 비교하여 S>p일 경우에는 S-p의 뺄셈 연산으로 축약을 수행한다. 최종 곱셈 결과 값의 모듈러 축약 연산은 모듈러 가산/감산기(11)에서 계산된다.
한편 데이터를 몽고메리 도메인으로 매핑하기 위한
Figure 112019089393916-pat00024
계산모드에 따른 수행과정을 설명하도록 한다.
모듈러 값 p에 대해 데이터 A, B를 몽고메리 곱셈 알고리듬으로 모듈러 곱셈을 계산하면, MM(A,B,p)=A×B×R-1 mod p가 되며, 곱셈 결과에 R-1=2-N(여기서, N은 모듈러 값 p의 비트 수를 나타냄)이 곱해진 형태로 출력된다.
R-1이 곱해진 형태로 곱셈 결과가 얻어지는 이유는, 합동 성질을 이용하여 부분곱 가산 결과의 최하위 워드를 0으로 만들고, 이를 제거하여 축약 연산을 처리하기 때문이다. 따라서 몽고메리 알고리듬에 의한 모듈러 곱셈을 위해서는 아래 [표 2]와 같이, 곱셈의 피연산자 A와 B에 R2=22N을 곱해서 몽고메리 도메인으로 변환하는 매핑과, 몽고메리 곱셈 결과인 ABR을 역매핑해서 곱셈 결과 AB를 만드는 계산이 필요하다.
Figure 112019089393916-pat00025
몽고메리 도메인 매핑에 사용되는 R2 값은 R2=2N×2N mod p로 계산되며, 타원 곡선에 따라 모듈러 값 p와 p의 비트 수 N이 다르다. 본 발명에 따른 워드 기반 유한체 연산기(10)의 워드 기반 몽고메리 모듈러 곱셈기(12)는 몽고메리 모듈러 곱셈을 계산하므로,
Figure 112019089393916-pat00026
가 되어 R2 값을 계산할 수 없다.
본 발명에서는 워드 기반 몽고메리 모듈러 곱셈기(12)를 이용하여 R2 값을 계산하기 위해 도 4의 슈도코드로 표현되는 계산 방법을 제공한다.
본 발명에서 제공하는 도 4의 슈도코드에 의한 방법은 단순한 시프트와 뺄셈 연산을 2(m×ω)-회 반복 계산하여 부가적인 하드웨어 없이
Figure 112019089393916-pat00027
값을 효율적으로 계산할 수 있다.
여기서, ω는 워드 기반 유한체 연산기에서 처리되는 워드의 크기를 나타내며, m=N/ω 는 모듈러 값 p를 구성하는 ω-비트 워드의 개수를 나타낸다.
한편 몽고메리 모듈러 곱셈 과정에서 합동을 이용한 축약에 사용되기 위한
Figure 112019089393916-pat00028
값의 계산 과정을 살펴보도록 한다.
도 2에 도시된 바와 같이 워드 기반 몽고메리 모듈러 곱셈기의 동작 슈도코드에 의한 몽고메리 모듈러 곱셈 연산 과정에서 합동을 이용하여 부분곱 가산 결과의 최하위 워드를 0으로 만들기 위해서는 상수 값
Figure 112019089393916-pat00029
가 필요하다.
여기서,
Figure 112019089393916-pat00030
는 모듈러 값 p의 최하위 워드(ω-비트)를 나타내며, 타원곡선에 따라 모듈러 값 p와 p의 비트 수 N이 다르다.
본 발명에서는 워드 기반 유한체 연산기(10)를 이용하여
Figure 112019089393916-pat00031
값을 계산하기 위해 도 5에 도시된 슈도코드로 표현되는 계산 방법을 제공한다.
본 발명에 따른 도 5의 슈도코드에 의한 방법은 워드 기반 몽고메리 곱셈을 (ω-2)-회 반복 계산하여
Figure 112019089393916-pat00032
의 곱의 역원
Figure 112019089393916-pat00033
을 구한 후, 그 결과를 0에서 뺄셈 연산하여 부가적인 하드웨어 없이
Figure 112019089393916-pat00034
값을 효율적으로 계산할 수 있다.
또한 타원곡선 기반의 EC-ElGamal 암호화를 위해 메시지 데이터 x를 타원곡선 상의 점 (x, y)로 매핑하는 과정이 필요한데, 이를 위해서는 아래 (식 1)의 타원곡선 방정식에 타원곡선 계수 a와 b 그리고 메시지 데이터 x를 대입하여 (식 2)에 의해 y2 equ 값을 계산하고, z=y2 equ 의 모듈러 제곱근
Figure 112019089393916-pat00035
를 구하면, 메시지 x를 타원곡선 상의 점 (x,
Figure 112019089393916-pat00036
)로 매핑할 수 있다.
Figure 112019089393916-pat00037
z=y2에 대해 z(p-1)/2 = y(p-1) 이므로, 페르마 소정리(Fermat’s little theorem)에 의해
Figure 112019089393916-pat00038
이 되며, 타원곡선의 모듈러 값 p에 대해 (p+1) mod 4=0인 경우에 대해 (식 3)이 성립하므로, z의 제곱근
Figure 112019089393916-pat00039
은 (식 4)와 같이 표현된다.
Figure 112019089393916-pat00040
따라서, (식 2)에 의해 z=y2 equ을 계산하고, (식 4)에 의해 z의 모듈러 제곱근 zsqrt를 구할 수 있다. 그러나 z=y2 equ의 모듈러 제곱근이 존재하지 않는 경우도 있으므로, 계산된 zsqrt 값을 제곱하여 y2 cal=z2 sqrt을 계산하고, (식 2)로 계산된 y2 equ와 비교해서 모듈러 제곱근의 존재 여부를 판단해야 한다. 만약 y2 cal=y2 equ이면, (식 4)에 의해 계산된 zsqrt 값은 z=y2 equ의 제곱근이며, 메시지 데이터 x를 타원곡선 상의 점 (x, y)=(x, zsqrt)로 매핑이 완료된다. 만약, y2 cal≠y2 equ이면, (식 4)에 의해 계산된 값은 z=y2 equ의 제곱근 값이 아니며, 이 경우에는 메시지 데이터를 x+1로 변경하여, 앞에서 설명된 과정을 반복한다.
물론 새로운 메시지 데이터를 입력받아 단계 1부터 다시 반복할 수도 있다.
본 발명은 도 1의 워드 기반 유한체 연산기를 이용하여 앞에서 설명된 과정에 따라 메시지 데이터 x를 타원곡선 상의 점 (x, y)로 매핑하기 위한 도 6의 슈도코드로 표현되는 방법을 제공한다.
본 발명에 의한 도 6의 슈도코드에서 A와 B는 (식 1)의 타원곡선 방정식의 계수 a와 b를 각각 나타내며, X는 메시지 데이터 x를 나타내고, p는 타원곡선의 모듈러 값을 나타낸다.
도 6의 슈도코드에 의한 상세 연산 과정은 아래와 같다.
우선 단계 1은 메시지 데이터 X와 타원곡선 계수 A와 B를 각각 몽고메리 도메인으로 매핑하며, 본 발명에 의한 도 4의
Figure 112019089393916-pat00041
값 계산 방법에 의해 계산된다.
단계 2는 (p+1) mod 4=0이 성립하는 경우(NIST 표준의 타원곡선 P-192, P-256, P-384, P-521)에 대해, (p+1)/4를 계산한다.
단계 3은 y2 cal의 제곱근 zsqrt를 계산하기 위한 초기 값을 설정한다.
단계 4 내지 단계 7은 (식 2)에 의해 y2 equ를 본 발명에 의한 도 3의 워드 기반 몽고메리 모듈러 곱셈 방법과 모듈러 가산/감산기에 의해 계산한다.
단계 8 내지 단계 15는 (식 4)의 관계를 이용하여 zsqrt 값을 본 발명에 의한 도 3의 워드 기반 몽고메리 모듈러 곱셈 방법으로 계산한다.
단계 16은 단계 8 내지 단계 15에서 계산된 zsqrt 값을 제곱 연산하여 y2 cal 값을 본 발명에 의한 도 3의 워드 기반 몽고메리 모듈러 곱셈 방법으로 계산한다.
단계 17 내지 단계 18은 y2 cal=y2 equ이면, 단계 8 내지 단계 15에서 계산된 zsqrt 값은 모듈러 제곱근 값이며, 단계 23으로 이동한다.
단계 19 내지 단계 21은 y2 cal≠y2 equ이면 단계 8 내지 단계 15에서 계산된 zsqrt 값은 모듈러 제곱근 값이 아니며, 이 경우에는 메시지 데이터 x를 x+1로 변경하기 위해 몽고메리 도메인에서 모듈러 가산 (XR+R) mod p을 계산하고, 단계 2로 이동하여 다시 계산한다.
또는 새로운 메시지 데이터를 입력받아 단계 1부터 다시 반복할 수도 있다.
단계 23 및 단계 24는 단계-17에 의해 유효한 모듈러 제곱근으로 확인된 zsqrt는 몽고메리 도메인의 값이므로, 본 발명에 의한 도 3의 워드 기반 몽고메리 모듈러 곱셈 방법에 의한 역매핑을 통해 타원곡선 상의 x-좌표 값 X와 y-좌표 값 Y로 변환된다.
한편 타원곡선 점 연산 방법은 본 발명에 따른 연산장치에 의해 공개키 암호 프로토콜에서 사용되는 타원곡선 상의 점(point) 스칼라 곱셈(PSM), 점 덧셈(PA), 점 두배(PD), 점 뺄셈(PS) 연산을 구현할 수 있으며, 소수체 상의 타원곡선 점 연산과 이진체 상의 타원곡선 점 연산을 선택적으로 계산한다.
소수체 상의 타원곡선 점 연산 과정에는 자코비안(Jacobian) 투영(projection) 좌표계가 적용되며, 2차원 아핀(affine) 좌표계를 적용하는 방식에서 필요한 유한체 나눗셈 연산 없이 유한체 곱셈, 유한체 덧셈, 유한체 뺄셈으로 점 연산을 계산할 수 있다. 이진체 상의 타원곡선 점 연산 과정에는 로페즈-다합(Lopez-Dahab) 투영 좌표계가 적용되며, 2차원 아핀(affine) 좌표계를 적용하는 방식에서 필요한 유한체 나눗셈 연산 없이 유한체 곱셈, 유한체 덧셈, 유한체 뺄셈으로 점 연산을 계산할 수 있다.
본 발명의 장치와 방법에 의한 타원곡선 상의 점 연산을 위한 상세 동작순서는 다음과 같다.
우선 점 덧셈은,
「① 타원곡선 도메인 파라미터와, 타원곡선 상의 점 (Ax, Ay)와 (Bx, By) 값 입력 → ②
Figure 112019089393916-pat00042
값과
Figure 112019089393916-pat00043
값 계산 → ③ 워드 기반 몽고메리 곱셈 WMM(Ax, R2, p)=A* x, WMM(Ay, R2, p)=A* y와 WMM(Bx, R2, p)=B* x, WMM(By, R2, p)=B* y, WMM(1, R2, p)=1*에 의해 몽고메리 도메인으로 매핑 → ④ 자코비안 좌표계(소수체 상의 타원곡선의 경우) 또는 로페즈-다합 좌표계(이진체 상의 타원곡선의 경우)로 매핑된 점 Az=(A* x, A* y, 1*)와 Bz=(B* x, B* y, 1*)에 대해 모듈러 가산 및 감산과 몽고메리 모듈러 곱셈의 반복 연산에 의해 점 덧셈 (Q* x, Q* y, Q* z)=Az+Bz을 계산 → ⑤ 점 덧셈 연산결과 (Q* x, Q* y, Q* z)를 아핀 좌표계의 점 (Q* x/(Q* z)c, Q* y/(Q* z)d)=(P* x, P* y)으로 좌표계 변환하며, 이 때, 자코비안 좌표계의 경우에 c=2, d=3 을 적용하여 계산하고, 로페즈-다합 좌표계의 경우에는 c=1, d=2 를 적용하여 계산함 → ⑥ 아핀 좌표계로 변환된 점 (P* x, P* y)를 워드 기반 몽고메리 곱셈 WMM(P* x, 1, p)=Px와 WMM(P* y, 1, p)=Py에 의한 리매핑으로 점 덧셈 연산결과 (Px, Py)를 계산 → ⑦ 점 덧셈 연산결과 값 (Px, Py)를 출력」
으로 계산된다.
다음으로 점 두배는,
「① 타원곡선 도메인 파라미터와, 타원곡선 상의 점 (Ax, Ay) 값 입력 → ②
Figure 112019089393916-pat00044
값과
Figure 112019089393916-pat00045
값 계산 → ③ 워드 기반 몽고메리 곱셈 WMM(Ax, R2, p)=A* x, WMM(Ay, R2, p)=A* y와 WMM(1, R2, p)=1*에 의해 몽고메리 도메인으로 매핑 → ④ 자코비안 좌표계(소수체 상의 타원곡선의 경우) 또는 로페즈-다합 좌표계(이진체 상의 타원곡선의 경우)로 매핑된 점 Az=(A* x, A* y, 1*)에 대해 모듈러 가산 및 감산과 몽고메리 모듈러 곱셈의 반복 연산에 의해 점 두배 (Q* x, Q* y, Q* z)=2Az를 계산 → ⑤ 점 두배 연산결과 (Q* x, Q* y, Q* z)를 아핀 좌표계의 점 (Q* x/(Q* z)c, Q* y/(Q* z)d)=(P* x, P* y)으로 좌표계 변환하며, 이 때, 자코비안 좌표계의 경우에 c=2, d=3을 적용하여 계산하고, 로페즈-다합 좌표계의 경우에는 c=1, d=2를 적용하여 계산함 → ⑥ 아핀 좌표계로 변환된 점 (P* x, P* y)를 워드 기반 몽고메리 곱셈 WMM(P* x, 1, p)=Px와 WMM(P* y, 1, p)=Py에 의한 리매핑으로 점 두배 연산결과 (Px, Py)를 계산 → ⑦ 점 두배 연산결과 값 (Px, Py)를 출력」
으로 계산된다.
다음으로 점 스칼라 곱셈은 ① 타원곡선 도메인 파라미터와, 타원곡선 상의 점 (Ax, Ay) 값과 키 값 K입력 → ②
Figure 112019089393916-pat00046
값과
Figure 112019089393916-pat00047
값 계산 → ③ 워드 기반 몽고메리 곱셈 WMM(Ax, R2, p)=A* x, WMM(Ay, R2, p)=A* y와 WMM(1, R2, p)=1*에 의해 몽고메리 도메인으로 매핑 → ④ 자코비안 좌표계(소수체 상의 타원곡선의 경우) 또는 로페즈-다합 좌표계(이진체 상의 타원곡선의 경우)로 매핑된 점 Az=(A* x, A* y, 1*)에 대해 상기 점 덧셈 연산과 상기 점 두배 연산에 의해 점 스칼라 곱셈 을 계산 (Q* x, Q* y, Q* z)=K×Az을 계산 → ⑤ 점 스칼라 곱셈 연산결과 (Q* x, Q* y, Q* z)를 아핀 좌표계의 점 (Q* x/(Q* z)c, Q* y/(Q* z)d)=(P* x, P* y)으로 좌표계 변환하며, 이 때 자코비안 좌표계의 경우에 c=2, d=3을 적용하여 계산하고, 로페즈-다합 좌표계의 경우에는 c=1, d=2를 적용하여 계산함 → ⑥ 아핀 좌표계로 변환된 점 (P* x, P* y)를 워드 기반 몽고메리 곱셈 WMM(P* x, 1, p)=Px와 WMM(P* y, 1, p)=Py에 의한 리매핑으로 점 스칼라 곱셈 연산결과 (Px, Py)를 계산 → ⑦ 점 스칼라 곱셈 연산결과 값 (Px, Py)를 출력」
으로 계산된다.
다음으로 점 뺄셈은,
「① 타원곡선 도메인 파라미터와, 타원곡선 상의 점 (Ax, Ay)와 (Bx, By)값 입력 → ②
Figure 112019089393916-pat00048
값과
Figure 112019089393916-pat00049
값 계산 → ③ 워드 기반 몽고메리 곱셈 WMM(Ax, R2, p)=A* x, WMM(Ay, R2, p)=A* y와 WMM(Bx, R2, p)=B* x, WMM(By, R2, p)=B* y, WMM(1, R2, p)=1*에 의해 몽고메리 도메인으로 매핑 → ④ 몽고메리 도메인으로 매핑된 점 B의 y-좌표 값 B* y에 대해 0-B* y mod p의 모듈러 뺄셈 연산으로 x-축에 대한 대칭점 -B* y를 계산 → ⑤ 자코비안 좌표계(소수체 상의 타원곡선의 경우) 또는 로페즈-다합 좌표계(이진체 상의 타원곡선의 경우)로 매핑된 점 Az=(A* x, A* y, 1*)와 Bz=(B* x,-B* y, 1*)에 대해 모듈러 가산 및 감산과 몽고메리 모듈러 곱셈의 반복 연산에 의해 점 뺄셈 (Q* x, Q* y, Q* z)=Az -B z 을 계산 → ⑥ 점 뺄셈 연산결과 (Q* x, Q* y, Q* z)를 아핀 좌표계의 점 (Q* x/(Q* z)c, Q* y/(Q* z)d)=(P* x, P* y)으로 좌표계 변환 연산하며, 자코비안 좌표계의 경우에 c=2, d=3이고, 로페즈-다합 좌표계의 경우에는 c=1, d=2를 적용 → ⑦ 아핀 좌표계로 변환된 점 (P* x, P* y)를 워드 기반 몽고메리 곱셈 WMM(P* x, 1, p)=Px와 WMM(P* y, 1, p)=Py에 의한 리매핑으로 점 뺄셈 연산결과 (Px, Py)를 계산 → ⑧ 점 뺄셈 연산결과 값 (Px, Py)를 출력」
으로 계산된다.
한편 본 발명에 따른 연산장치(100)는 공개키 암호 프로토콜에 사용되는 모듈러 덧셈(MA), 모듈러 뺄셈(MS), 모듈러 곱셈(MM), 모듈러 나눗셈(MD), 모듈러 역원(MI) 연산을 구현할 수 있다. 모듈러 연산을 위한 상세 동작순서는 다음과 같다.
우선 모듈러 덧셈은
① 피연산자 A, B와 모듈러 값 p 입력 → ② 모듈러 덧셈 연산 Q=A+B mod p를 계산 → ③ 모듈러 덧셈 연산결과 값 Q를 출력한다.
다음으로 모듈러 뺄셈은
① 피연산자 A, B와 모듈러 값 p 입력 → ② 모듈러 뺄셈 연산 Q=A-B mod p를 계산 → ③ 모듈러 뺄셈 연산결과 값 Q를 출력한다.
또한 모듈러 곱셈은
① 피연산자 A, B와 모듈러 값 p입력 → ②
Figure 112019089393916-pat00050
값과
Figure 112019089393916-pat00051
값 계산 → ③ 워드 기반 몽고메리 곱셈 WMM(A, R2, p)=A*에 의해 피연산자 A를 몽고메리 도메인으로 매핑 → ④ 워드 기반 몽고메리 곱셈 WMM(A*, B, p)에 의해 모듈러 곱셈 연산 Q=A×B mod p를 계산 → ⑤ 모듈러 곱셈 연산결과 값 Q를 출력한다.
아울러 모듈러 역원은
① 피연산자 A와 모듈러 값 p 입력 → ②
Figure 112019089393916-pat00052
값과
Figure 112019089393916-pat00053
값 계산 → ③ 워드 기반 몽고메리 곱셈 WMM(A, R2, p)=A*와, WMM(1, R2, p)=1*에 의해 몽고메리 도메인으로 매핑 → ④ 워드 기반 몽고메리 곱셈 WMM(A*, T, p)의 반복 연산에 의해 피연산자 A*의 모듈러 역원
Figure 112019089393916-pat00054
을 계산 → ⑤ 워드 기반 몽고메리 곱셈 WMM(
Figure 112019089393916-pat00055
, 1, p)에 의한 리매핑으로 모듈러 역원 Q=A-1 mod p 계산 → ⑥ 모듈러 역원 연산결과 값 Q를 출력한다.
마지막으로 모듈러 나눗셈은
① 피연산자 A, B와 모듈러 값 p 입력 → ②
Figure 112019089393916-pat00056
값과
Figure 112019089393916-pat00057
값 계산 → ③ 워드 기반 몽고메리 곱셈 WMM(B, R2, p)=B*와, WMM(1, R2, p)=1*에 의해 몽고메리 도메인으로 매핑 → ④ 워드 기반 몽고메리 곱셈 WMM(B*, T, p)의 반복 연산에 의해 피연산자 B*의 모듈러 역원
Figure 112019089393916-pat00058
을 계산 → ⑤ 워드 기반 몽고메리 곱셈 WMM(A,
Figure 112019089393916-pat00059
, p)에 의해 모듈러 나눗셈 Q=(A/B) mod p를 계산 → ⑥ 모듈러 나눗셈 연산결과 값 Q를 출력한다.
아울러 본 발명의 일실시예에 따른 연산방법으로 상기 연산장치를 통해 타원곡선 도메인 파라미터와 데이터가 연산장치에 입력되는 제1단계와, 동작모드 제어부(40)의 제어에 따라 타원곡선에 따른 초기 파라미터 값으로서 워드기반 몽고메리 모듈러 곱셈을 위해 데이터를 몽고메리 도메인으로 매핑하는데 필요한
Figure 112019089393916-pat00060
가 계산되는 제2단계와, 동작모드에 따른 동작모드 제어부(40)의 제어에 따라 타원곡선 점 연산(PSM, PA, PS, PD)과 유한체 모듈러 연산(MM, MD, MI, MA, MS)이 수행되는 제3단계와, 좌표계 변환 단계로, 소수체의 경우에는 자코비안(Jacobian) 좌표계에서 2차원 아핀(affine) 좌표계로, 이진체의 경우에는 로페즈-다합(Lopez-Dahab) 좌표계에서 2차원 아핀 좌표계로 변환이 수행되는 제4단계와, 몽고메리 도메인에서 계산된 연산결과에 포함되어 있는
Figure 112019089393916-pat00061
을 제거하기 위해 리매핑(re-mapping)되는 제5단계와, 상기 제5단계의 결과데이터가 출력되는 제6단계로 이루어진다.
전술한 바와 같이 본 발명에 따른 연산방법은 연산장치에 타원곡선 도메인 파라미터와 데이터가 입력된 후 동작모드 제어부(40)의 제어에 따라 몽고메리 도메인으로 매핑하는데 필요한
Figure 112019089393916-pat00062
가 계산된다.
Figure 112019089393916-pat00063
의 계산 과정은 전술한 바와 같다.
그런 다음 동작모드 제어부(40)의 제어에 따라 타원곡선 점 연산(PSM, PA, PS, PD)과 유한체 모듈러 연산(MM, MD, MI, MA, MS)이 수행되며, 타원곡선 점 연산과 유한체 모듈러 연산 과정은 전술한 바와 같다.
그런 다음 좌표계를 변환하는 단계가 수행되는데, 소수체의 경우에는 자코비안(Jacobian) 좌표계에서 2차원 아핀(affine) 좌표계로, 이진체의 경우에는 로페즈-다합(Lopez-Dahab) 좌표계에서 2차원 아핀 좌표계로 변환을 수행하게 된다.
다음으로 몽고메리 도메인에서 계산된 연산결과에 포함되어 있는
Figure 112019089393916-pat00064
을 제거하기 위해 부가적인 하드웨어 없이 본 발명에 따른 연산장치를 이용하여 내부적으로 계산하는 리매핑(re-mapping) 단계가 수행되고, 최종적으로 결과가 출력되게 된다.
본 발명에 따른 연산방법에서 연산장치는 유한체 연산기의 비트 크기에 따라 반복적인 연산을 통해 다수의 형태를 가지는 타원곡선을 지원하며, 타원곡선에 따라 달라지는 모듈러 값 p를 외부에서 입력받은 후, 몽고메리 모듈러 곱셈 및 유한체 연산에 필요한
Figure 112019089393916-pat00065
값과, 몽고메리 곱셈 과정에서 합동(congruence)을 이용한 축약 연산에 사용되는
Figure 112019089393916-pat00066
를 계산하도록 구성되게 되며, 타원곡선 기반의 EC-ElGamal 암호화를 위해 메시지 데이터를 타원곡선 상의 점으로 매핑하는 과정에서 필요한 모듈러 제곱근 연산을 계산할 수 있어 외부의 별도 하드웨어 부가 없이 효율적이며 신속하게 계산이 이루어질 수 있다.
이와 같이 본 발명은 도면에 도시된 일실시예를 참고로 설명되었으나, 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.
따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 워드 기반 유한체 연산기 20 : 메모리
30 : 레지스터 블록 40 : 동작모드 제어부
100 : 연산장치

Claims (7)

  1. ω-비트 크기의 모듈러 가산/감산기(11)와, ω-비트 크기의 워드 기반 몽고메리 모듈러 곱셈기(12)를 포함하는 워드 기반 유한체 연산기(10)와;
    타원곡선 도메인 파라미터와 워드 기반 유한체 연산의 중간 결과값을 저장하는 메모리(20)와;
    동작모드를 설정하기 위한 값을 저장하며 워드 기반 유한체 연산의 중간 결과값을 저장하는 레지스터 블럭(30)과;
    상기 워드 기반 유한체 연산기(10), 메모리(20) 및 레지스터 블록(30)을 제어하는 동작모드 제어부(40);를 포함하며,
    상기 레지스터 블록(30)에 저장되며, 동작모드 제어부(40)에 의해 제어되는 상기 동작모드는
    타원곡선 점 연산모드와,
    유한체 모듈러 연산모드를 포함하되,
    상기 동작모드는
    데이터를 몽고메리 도메인으로 매핑하기 위한
    Figure 112021013808142-pat00080
    계산모드와,
    몽고메리 도메인의 연산결과를 정수 도메인으로 변환하는 역매핑모드와,
    좌표계 변환을 위한 연산과, 몽고메리 모듈러 곱셈 과정에서 합동을 이용한 축약에 사용되기 위한
    Figure 112021013808142-pat00081
    값의 계산모드와,
    임의의 메시지 값을 타원곡선 상의 점으로 매핑하는 과정에서 필요한 모듈러 제곱근 계산모드를 더 포함하는 것을 특징으로 하는 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치.
    (여기서 R=2N이고, N은 타원곡선의 크기를 나타내는 비트 수, p는 소수체의 경우 모듈러 값, 이진체의 경우 기약다항식을 나타내며,
    Figure 112021013808142-pat00082
    는 모듈러 값 p의 최하위 워드이고, ω는 워드의 크기를 나타내는 자연수)
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 워드 기반 몽고메리 모듈러 곱셈기(12)는
    소수체 상의 곱셈과 이진체 상의 곱셈을 선택적으로 계산하는 ω-비트 크기의 듀얼 필드 곱셈기(12a)와,
    ω-비트 크기의 듀얼 필드 가산기(12b)와,
    ω-비트 크기의 레지스터(12c)와,
    1-비트 캐리저장 레지스터(12d)와,
    2-비트 캐리저장 레지스터(12e)와,
    1-비트 가산기(12f)와,
    복수 개의 선택기(12g)를 포함하는 것을 특징으로 하는 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치.
  5. 제1항 또는 제4항에 의한 연산장치를 통해 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산 방법으로서,
    타원곡선 도메인 파라미터와 데이터가 연산장치에 입력되는 제1단계와;
    동작모드 제어부(40)의 제어에 따라 타원곡선에 따른 초기 파라미터 값으로서 워드기반 몽고메리 모듈러 곱셈을 위해 데이터를 몽고메리 도메인으로 매핑하는데 필요한
    Figure 112021013808142-pat00070
    가 계산되는 제2단계와;
    동작모드에 따른 동작모드 제어부(40)의 제어에 따라 타원곡선 점 연산(PSM, PA, PS, PD)과 유한체 모듈러 연산(MM, MD, MI, MA, MS)이 수행되는 제3단계와;
    좌표계 변환 단계로, 소수체의 경우에는 자코비안(Jacobian) 좌표계에서 2차원 아핀(affine) 좌표계로, 이진체의 경우에는 로페즈-다합(Lopez-Dahab) 좌표계에서 2차원 아핀 좌표계로 변환이 수행되는 제4단계와;
    몽고메리 도메인에서 계산된 연산결과에 포함되어 있는
    Figure 112021013808142-pat00071
    을 제거하기 위해 리매핑되는 제5단계와;
    상기 제5단계의 결과데이터가 출력되는 제6단계;를 포함하는 것을 특징으로 하는 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산방법.
    (여기서 R=2N이고, N은 타원곡선의 크기를 나타내는 비트 수, p는 소수체의 경우 모듈러 값, 이진체의 경우 기약다항식을 나타냄)
  6. 제5항에 있어서,
    상기 연산장치는
    유한체 연산기의 비트 크기에 따라 반복적인 연산을 통해 다수의 형태를 가지는 타원곡선을 지원하며, 타원곡선에 따라 달라지는 모듈러 값 p를 외부에서 입력받은 후, 몽고메리 모듈러 곱셈 및 유한체 연산에 필요한
    Figure 112019089393916-pat00072
    값과, 몽고메리 곱셈 과정에서 합동(congruence)을 이용한 축약 연산에 사용되는
    Figure 112019089393916-pat00073
    를 계산하도록 구성되는 것을 특징으로 하는 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산방법.
  7. 제5항에 있어서,
    상기 연산장치는
    타원곡선 기반의 EC-ElGamal 암호화를 위해 메시지 데이터를 타원곡선 상의 점으로 매핑하는 과정에서 필요한 모듈러 제곱근 연산을 계산하도록 구성되는 것을 특징으로 하는 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산방법.
KR1020190107140A 2019-08-30 2019-08-30 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법 KR102253211B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190107140A KR102253211B1 (ko) 2019-08-30 2019-08-30 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190107140A KR102253211B1 (ko) 2019-08-30 2019-08-30 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법

Publications (2)

Publication Number Publication Date
KR20210026410A KR20210026410A (ko) 2021-03-10
KR102253211B1 true KR102253211B1 (ko) 2021-05-17

Family

ID=75148263

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190107140A KR102253211B1 (ko) 2019-08-30 2019-08-30 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법

Country Status (1)

Country Link
KR (1) KR102253211B1 (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100436814B1 (ko) * 2001-12-20 2004-06-23 한국전자통신연구원 아이씨카드용 알에스에이 암호 연산 장치
KR102006222B1 (ko) * 2018-01-05 2019-08-01 금오공과대학교 산학협력단 타원곡선 암호와 rsa 공개키 암호를 통합 구현하기 위한 연산장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Sakiyama, Kazuo, et al. "A PARALLEL PROCESSING HARDWARE ARCHITECTURE FOR ELLIPTIC CURVE CRYPTOSYSTEMS", IEEE (2006.)*
이상현, 신경욱, GF(2^m) 상의 타원곡선 B-233을 지원하는 32-비트 WMM 기반 ECC 프로세서, 한국정보통신학회 (2018.05.)*

Also Published As

Publication number Publication date
KR20210026410A (ko) 2021-03-10

Similar Documents

Publication Publication Date Title
US7904498B2 (en) Modular multiplication processing apparatus
US9942039B1 (en) Applying modular reductions in cryptographic protocols
JP4067818B2 (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
TW200844847A (en) Chinese remainder theorem-based computation method for cryptosystems
US20090136025A1 (en) Method for scalarly multiplying points on an elliptic curve
JP2004501385A (ja) 楕円曲線暗号化方法
JPWO2007080652A1 (ja) モンゴメリ法用乗算剰余計算装置
JP4351987B2 (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP2006259735A (ja) Simd処理を用いた楕円曲線点8倍化
CN112350827B (zh) 一种基于Koblitz曲线的加速标量乘计算的椭圆曲线加解密方法和系统
Vijayakumar et al. Comparative study of hyperelliptic curve cryptosystem over prime field and its survey
US7187770B1 (en) Method and apparatus for accelerating preliminary operations for cryptographic processing
KR102253211B1 (ko) 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법
CN111897578A (zh) 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
TW201704988A (zh) 用於蒙哥馬利域的計算方法、計算裝置和電腦軟體產品
CN110233727B (zh) 一种sm2运算方法、系统、设备及计算机存储介质
KR102006222B1 (ko) 타원곡선 암호와 rsa 공개키 암호를 통합 구현하기 위한 연산장치 및 방법
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
Realpe-Muñoz et al. High-performance elliptic curve cryptoprocessors over GF (2^ m) GF (2 m) on Koblitz curves
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP3515306B2 (ja) 逆元演算装置
JPH1152854A (ja) 有限体上の四則演算装置及び楕円曲線上の群演算装置
KR20020086005A (ko) 타원곡선 암호 시스템을 위한 역원 연산기

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant