KR100453230B1 - 초타원곡선 암호화 프로세싱 장치 - Google Patents

초타원곡선 암호화 프로세싱 장치 Download PDF

Info

Publication number
KR100453230B1
KR100453230B1 KR10-2002-0069061A KR20020069061A KR100453230B1 KR 100453230 B1 KR100453230 B1 KR 100453230B1 KR 20020069061 A KR20020069061 A KR 20020069061A KR 100453230 B1 KR100453230 B1 KR 100453230B1
Authority
KR
South Korea
Prior art keywords
block
elliptic curve
curve encryption
super
input
Prior art date
Application number
KR10-2002-0069061A
Other languages
English (en)
Other versions
KR20040041186A (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 KR10-2002-0069061A priority Critical patent/KR100453230B1/ko
Priority to US10/385,671 priority patent/US20040091105A1/en
Publication of KR20040041186A publication Critical patent/KR20040041186A/ko
Application granted granted Critical
Publication of KR100453230B1 publication Critical patent/KR100453230B1/ko

Links

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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • 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

Landscapes

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

Abstract

초타원곡선(Hyperelliptic curve) 암호화 프로세싱 장치를 개시한다.
본 발명은 초타원곡선 암호화 알고리즘을 고속으로 처리하는데 적합한 초타원곡선 암호화 프로세싱 기술에 관한 것이다. 본 발명에서 제안하는 암호화 프로세서는 초타원곡선 암호화 알고리즘을 효율적으로 수행하는 하드웨어 구조를 갖는데, 초타원곡선 암호화 알고리즘은 공개키 암호화 알고리즘인 RSA보다 더 작은 키 길이와 더 빠른 수행 속도를 갖는다.
타원곡선 암호화 알고리즘에서는 그 값이 1인 지너스라는 내부 특성 요소를 가지는데, 이외에도 다양한 지너스 값을 가질 수 있다. 즉, 초타원곡선 암호화 알고리즘에서는 2 이상의 지너스 값을 가진다.
지너스 값이 1보다 큰 초타원곡선 암호화 알고리즘은 지너스가 1인 타원곡선 암호화 알고리즘보다 더 작은 키 값을 가지면서도 동일한 안전성(level of security)을 제공하기 때문에, 휴대폰이나 PDA, 스마트 카드와 같이 제한된 메모리의 휴대용 장치에서 효율적으로 적용될 수 있으며, 초타원곡선 암호화 프로세서의 일반화(generalization)된 특성으로 인하여, 기존의 타원곡선 암호화 알고리즘과도 호환성(compatibility)이 뛰어나다.
본 발명에서 제안하는 초타원곡선 암호화 프로세싱 장치는 지너스 값이 1과 2인 경우의 효율적인 체(field) 연산 수단과 링(ring) 연산 수단, 자코비안(Jacobian) 연산 제어 수단, 하드웨어 제어 수단, 내장형 메모리(embeddedmemory), 내부 상호 연결 수단(internal interconnection device), 외부 인터페이스 수단(external interface device)으로 구성된다.

Description

초타원곡선 암호화 프로세싱 장치{HYPERELLIPTIC CURVE CRTPTO PROCESSOR HARDWARE APPARATUS}
본 발명은 초타원곡선(Hyperelliptic curve) 암호화 프로세싱 장치에 관한 것으로, 특히, 초타원곡선의 지너스(genus) 파라미터 값이 1인 타원곡선 암호화 알고리즘과 지너스 값이 2인 초타원곡선 암호화 알고리즘을 하드웨어로 처리하면서 초타원곡선 암호화 알고리즘을 고속으로 처리하는데 적합한 초타원곡선 암호화 프로세싱 장치에 관한 것이다.
초타원곡선 암호화 프로세서가 속하는 공개키 암호화 프로세서에 대한 종래의 기술을 살펴보면, 타원곡선 암호화 프로세서에 관한 기술과, 공개키 암호화 알고리즘인 RSA 암호화 프로세서에 관한 기술이 존재한다.
하지만, 전자의 타원곡선 암호화 프로세서에서는 갈로아체GF(2163)상에서 다항식 기저(polynomial basis)만을 가지며, 특히, 단일 최소 다항식(minimal polynomial)만을 처리할 수 있다. 이러한 경우, 해당 타원곡선 암호화 알고리즘에 대해서는 효율적으로 처리할 수 있지만, 다른 타원곡선 암호화 알고리즘은 수용할 수 없다는 단점이 있다.
또한, RSA 암호화 프로세서에서는 기본적으로 지수승 연산을 토대로하기 때문에 연산 시간이 많이 소요될 뿐만 아니라, 안전성(security)을 제공하기 위해서 1024비트 혹은 2048비트 길이의 키 길이가 요구된다. 즉, 메모리 및 하드웨어 자원과 소비 전력이 필요이상으로 요구되기 때문에, 휴대폰이나 PDA, 스마트카드와 같은 휴대용 장치에는 적합하지 않다는 단점이 있다.
또한, 대칭키 암호화 프로세서에 대한 기술의 경우, 대칭키 암호화 알고리즘이 메시지에 대한 암호화(encryption)를 주목적으로 하기 때문에, 전자 상거래(electronic commerce) 분야에서 중요한 사용자 인증(user authentication) 및 키 분배(key distribution), 서명(signature) 등에는 사용할 수 없거나 비효율적이라는 단점이 있다.
즉, 종래의 공개키 암호화 프로세서는 1024비트 혹은 2048비트 정도로 긴 키 값을 필요로 하는 RSA 암호화 프로세서 혹은 특정 비트 길이 혹은 특정 최소 다항식을 갖는 타원곡선 암호화 프로세서가 대부분인 바, 제한된 자원(constraint resources)의 내장형 시스템에는 사용할 수 없을 뿐만 아니라, 사용할 수 있는 응용 분야가 한정되어 있어서 타 분야로의 응용이 어렵다는 문제가 있었다.
본 발명은 상술한 문제를 해결하기 위해 안출한 것으로, 지너스 값이 1인 타원곡선 암호화 알고리즘과 지너스 값이 2인 초타원곡선 암호화 알고리즘을 동시에 고속으로 실행시키도록 한 초타원곡선 암호화 프로세싱 장치를 제공하는데 그 목적이 있다.
본 발명의 다른 목적은, 초타원곡선 암호화 알고리즘용 하드웨어를 공유하여 실행함으로써 하드웨어 복잡도(complexity)를 줄이도록 한 초타원곡선 암호화 프로세싱 장치를 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따르면, 초타원곡선 암호화 프로세싱 장치에 있어서, PCI(Peripheral Component Interconnect) 인터페이스 블록과 DMA(Direct Memory Access) 및 데이터 입/출력을 제어하는 입/출력 제어 블록과; PCI 인터페이스 블록을 통해 제공되는 외부 명령어 및 입력 데이터를 저장하는 입력 메모리 블록과; 초타원곡선 암호화 연산 결과값 및 중간값을 저장하는 출력 메모리 블록과; 입력 메모리 블록 및 출력 메모리 블록의 입/출력 데이터 경로를 제어하는 MUX와; MUX를 통해 제공되는 외부 명령어 및 입력 데이터에 따라 지너스(genus) 값이 1인 타원곡선 암호화 알고리즘과 지너스 값이 2인 초타원곡선 암호화 알고리즘을 수행하는 암호 코어 블록과; 입력 메모리 블록으로부터 입력된 명령에 따라, 암호 코어 블록을 제어하는 제어 수단을 구비하는 초타원곡선 암호화 프로세싱 장치를 제공한다.
도 1은 본 발명의 바람직한 실시예에 따른 초타원곡선 암호화 프로세싱 장치의 구성 블록도,
도 2는 도 1의 초타원곡선 암호화 프로세싱 장치의 연산 코어 블록의 상세 구성 블록도,
도 3은 도 2의 곱셈 블록과 역원 및 최대공약수 연산 블록에서 사용되는 가산기 및 시프터의 구성 블록도,
도 4는 도 2의 연산 블록에서 사용되는 비교기 및 연산기의 구성 블록도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 디바이스 드라이버 110 : PCI 입출력 버스
120 : 입출력 제어 블록 130 : PCI 인터페이스 블록
140 : 입력 메모리 블록 150 : 출력 메모리 블록
160 : 입출력 데이터 경로 제어용 MUX
170 : 제어기 180 : 암호 코어 블록
210 : 다대다 상호 연결망 220 : 자코비안(Jacobian) 연산 제어부
230 : 레지스터 파일 240 : 체(field) 연산부
250 : 링(ring) 연산부
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세하게 설명한다.
설명에 앞서, 본 실시예에 적용되는 초타원곡선 암호화 프로세싱 장치는, 곱셈(multiplication) 계산과 제곱승(squaring) 계산, 덧셈, 뺄셈 연산에 공통으로 사용할 수 있는 체 연산 블록 및 링 연산 블록 구조를 가지는 것을 특징으로 한다.
예컨대, (A + B ) << C를 위한 하드웨어 블록에서 데이터 경로(data path)만 제어함으로서, A << ( B + C )를 한 사이클 안에 수행할 수 있다. 또한, 여기에서 사용되는 좌 시프트(left shift) 연산은 배럴 시프터(barrel shifter)로 구성하여,한 클럭에 임의의 비트를 시프트할 수 있도록 구성한다. 결과적으로, 이 연산 블록은 체 곱셈과 링 곱셈, 체 상에서의 역원 계산에서 공통으로 사용할 수 있으므로 효율적인 하드웨어 구조를 가진다.
또한, 본 발명에 따른 초타원곡선 암호화 프로세서의 비교 및 판단 동작을 수행하는 하드웨어 블록은 비교 및 판단을 위한 하드웨어 블록과 계산을 위한 하드웨어 블록이 병렬(parallel)로 동작하기 때문에, 지연시간(delay time)을 최소화하여 높은 동작 속도를 제공하는 것을 특징으로 한다.
체 및 링에서의 곱셈 및 축약 연산(multiplication and reduction), 제곱승 및 축약 연산(squaring and reduction)은 한 사이클 내에서 수행된다.
초타원곡선 암호화 알고리즘상에서의 디바이저(divisor)에 대한 덧셈(addition)과 더블링(doubling) 연산은 본 발명에 따른 자코비안 제어기에 의해 체 연산 블록과 링 연산 블록이 제어됨으로써 구현될 수 있다.
디바이저의 덧셈과 더블링 동작은 "캔터(Cantor)" 알고리즘에 의해 수행되며, 이를 통하여 "semi-reduced divisor" 값을 얻는다.
디바이저에 대한 덧셈과 더블링 연산 수행시, "semi-reduced divisor"에 대한 축약(reduction) 동작이 필요한데, 이는 가우스(Gauss) 축약 알고리즘과 라그랑지(Lagrange) 축약 알고리즘을 채택하여 수행한다. 가우스 축약 알고리즘과 라그랑지 축약 알고리즘은 본 발명에서 제안하는 링에서의 덧셈 및 뺄셈 블록, 나눗셈 블록, 다항식 축약(polynomial reduction) 블록, 비교 및 연산 블록(pre-calculation and selection block)을 통하여 구현된다.
스칼라 곱셈(또는 디바이저 곱셈)을 수행함에 있어서, 디바이저간의 가산과 더블링 연산은 병렬로 수행하여, 스칼라 곱셈의 효율성을 높인다. 이를 위하여, 파이프라인 구조로 설계된 최대공약수(great common division) 및 역원 계산 블록, 나눗셈 블록을 가진다.
고속 스칼라 곱셈을 위하여 연산 시간이 비교적 오래 소요되는 최대공약수 연산 블록(체에서의 역원 연산 블록과 동일한 블록임)과 링에서의 나눗셈 연산 블록을 파이프라인 구조로 만들며, 연산 시간이 비교적 짧은 덧셈 및 뺄셈 연산 블록, 곱셈 연산 블록, 제곱승 연산 블록은 고성능을 위하여 다수의 연산 블록을 가지도록 한다.
파이프라인 구조로 설계된 디바이저의 덧셈과 더블링 연산 블록은 마치 해당 연산 블록이 다수 존재하는 것처럼 보이기 때문에, 스칼라 곱셈 알고리즘을 고속으로 동작할 수 있도록 한다.
본 발명에서 제안한 초타원곡선 암호화 프로세서의 기본 구조는 도 1과 같으며, 도 2는 도 1에 있는 초타원곡선 암호화 프로세서의 연산 코어를 구체적으로 보여주는 블록 구조도이고, 도 3은 도 2에서 도시 된 곱셈 블록과 역원 및 최대공약수 연산 블록에서 효율적인 하드웨어의 공유(sharing)를 위해 사용하는 가산기 및 시프터(adder and shifter) 연산기 구조도, 도 4는 도 2에 도시된 연산 블록에서 고속 동작을 위해 사용하는 비교 및 연산 블록(pre-calculation and selection)의 구조도이다.
먼저, 도 1에 도시된 초타원곡선 암호화 프로세서는 외부 시스템의 디바이스드라이버(100)와 연결되며, 내부적으로는 PCI 인터페이스(130)를 가지기 때문에, PCI 버스(110)를 갖는 모든 시스템에 적용될 수 있다.
본 암호화 프로세서의 암호 부분을 제외한 주변 블록을 살펴보면, DMA 및 데이터 입출력을 제어하는 입출력 제어 블록(120), PCI 인터페이스 블록(130), 외부 명령어 저장 및 입력 데이터 저장을 위한 입력 메모리 블록(140), 암호 코어 블록(180)에서의 결과값 혹은 중간값을 저장하는 출력 메모리(150), 입출력 데이터 경로 제어용 MUX(160), 제어기(170)등으로 구성된다.
그리고, 초타원곡선 암호화 알고리즘을 수행하는 암호 코어 블록(180)은 지너스값이 1인 타원곡선 암호화 알고리즘과 지너스값이 2인 초타원곡선 암호화 알고리즘을 고속으로 처리하는데 필요한 연산 요소들을 가지는데, 크게 체(field) 연산부(240)와 링 연산부(250), 디바이저 연산을 제어하는 자코비안 연산 제어부(220), 레지스터 파일(230), 상호 연결망(210)으로 구성된다.
이러한 암호 코어 블록(180)은 도 2를 참조하여 보다 상세히 기술하기로 한다.
도 2에 도시한 바와 같이, 암호 코어 블록(180)은, 체 연산부(240)내의 역원 및 최대공약수 연산 블록(241), 덧셈 및 뺄셈 블록(242), 곱셈 및 축약 블록(243), 제곱승 및 축약 연산 블록(244), 링 연산부(250)내의 나눗셈 연산 블록(251)을 포함한다.
이들 연산 블록들은 고성능 다대다 상호 연결망(210)을 통하여 서로 연결되는 바, 외부 제어기(170) 및 자코비안 연산 제어부(220)에 의해 그 동작이 제어되며, 연산시 필요한 입력 데이터 및 연산 중간 결과는 레지스터 파일(230)에 저장된다.
이들 중, 역원 및 최대공약수 연산 블록(241)과 링 연산부(250)에서의 나눗셈 연산 블록(251)은 파이프라인으로 구성되어 고속 동작이 가능하다.
다른 연산 블록들은 초타원곡선 암호화 프로세서의 성능 향상을 위하여, 다중으로(multiple)로 구성할 수 있다.
한편, 디바이저의 덧셈과 더블링 동작은 전술한 연산 요소들을 사용하여 계산된다.
초타원곡선 암호화 프로세싱 과정은 스칼라 곱셈 차원에서 수행하며, 스칼라 곱셈은 디바이저의 덧셈과 더블링 연산으로 구성된다. 이는 본 발명에서 제안하는 체(field)와 링(ring) 연산 요소를 제어기(170, 220)로 적절히 데이터 경로를 제어함으로써 필요한 최대공약수 연산과 나눗셈 연산, 제곱승, 모듈라 연산, 덧셈, 뺄셈 등을 수행하여 얻을 수 있다.
디바이저의 덧셈과 더블링은 '캔터' 알고리즘을 사용하여 구현하며, '캔터' 알고리즘은 합성 스텝(composition step)과 축약 스텝(reduction step)으로 구성되는데, 축약 스텝은 가우스 축약 또는 라그랑지 축약으로 수행된다.
이하에서는, 도 1에 도시된 초타원곡선 암호화 프로세서의 세부 기능 및 동작 과정을 구체적으로 설명하기로 한다.
도 1의 디바이스 드라이버(100)는 본 발명에서 제안하는 초타원곡선 암호화 프로세서를 사용하는 시스템에서 이를 인식할 수 있도록 해주는 것으로, 윈도우 운영체제인 경우에는 VxD 혹은 WDM 드라이버 형태를 가진다. 본 초타원곡선 암호화 프로세서가 PCI 버스(110) 인터페이스를 가지므로, 이에 적합한 디바이스 드라이버가 필요하다. 응용 시스템에서는 이를 통하여, 초타원곡선 암호화 프로세서에 명령어를 줄 수 있으며, 데이터에 대한 입출력과 인터럽트 신호 수신 등이 가능하다.
초타원곡선 암호화 프로세서의 PCI 인터페이스부(130)는 초타원곡선 암호화 프로세서에서 사용되는 호스트 시스템의 PCI 명령어 및 데이터 트랜잭션(transaction)을 해석하여, 적절한 통신을 가능하게 하는 블록으로서 PCI 설정 레지스터(PCI configuration register)와 타겟 모드(target mode) 제어기, 마스터 모드(master mode) 제어기 등으로 구성된다. 또한, 마스트 모드(master mode)인 경우에는 입출력 제어 블록(120)과 함께 DMA전송도 가능하게 된다.
입력 메모리 블록(140)은 본 발명에 따른 초타원곡선 암호화 프로세서의 명령어와 데이터를 입력받아 저장하는 블록으로서, 주소값(address)에 의해 서로 구분된다. 입력된 명령어는 제어기(170)에 의해 그 의미가 해석되어 적절한 동작이 수행된다.
출력 메모리 블록(150)에는 초타원곡선 암호화 프로세서의 초타원곡선 암호 연산 결과 및 중간 결과값이 저장된다. 최종 연산 결과는 PCI 인터페이스부(130)에 의해 인터럽트 신호를 호스트 시스템에 보낸 후, 결과값을 응용 시스템에 전송한다. 출력 메모리 블록(150)의 데이터는 MUX(160)에 의해 다시 암호 코어 블록(180)으로 입력된다.
제어기(170)는 입력 메모리 블록(140)으로부터 입력된 명령에 따라, 암호 코어 블록(180)을 제어한다. 이러한 제어기(170)는 암호 코어 블록(180)내의 상호 연결망(210), 자코비안 연산 제어부(220), 레지스터 파일(230), 체 연산부(240), 링 연산부(250)를 제어하여, 원하는 체 연산, 링 연산, 디바이저 연산, 스칼라 연산 등을 수행한다.
암호 코어 블록(180)은 초타원곡선 암호화 프로세서의 핵심 암호 연산인 체 연산, 링 연산, 디바이저 연산 등을 수행할 수 있도록 한다. 이에 대한 자세한 설명은 도 2에서 기술하기로 한다.
도 2는 초타원곡선 암호화 프로세서의 핵심 암호 연산부 구조이다.
덧셈 및 뺄셈 블록(242)은 본 발명에서처럼 특성(Characteristic) 2인 체(field) 및 링(ring)상에서는 배타적 OR(Exclusive OR) 연산으로 간단히 구현될 수 있다. 이러한 덧셈 및 뺄셈 블록(242)의 입출력은 체(field)인 경우에는 비트 스트림 값이고 링(ring)일 경우에는 체 요소(field element) 값이 된다. 또한, 덧셈 및 뺄셈 블록(242)의 연산 동작에는 클럭이 필요 없기 때문에, 자코비안 연산 제어부(220)에서 상호 연결망(210)을 적절히 제어할 경우, 다른 연산 블록(예를 들어, 곱셈 연산 블록, 제곱승 연산 블록 등)과 연결하여 사용할 수 있다.
곱셈 및 축약 블록(243)은 체(field) 및 링(ring)에서 공유되어(shared) 사용될 수 있다. 이 경우 차이점은, 입출력되는 값이 비트 스트림인지, 아니면 체 요소인지에 따라 구분되는데, 이는 레지스터 파일(230)과 연산 제어부(220)에 의해 조절된다. 곱셈은 다수의 클록 사이클이 소요되며, 곱셈 결과 혹은 중간 계산값은 클록 사이클을 필요로 하지 않는 축약(reduction) 회로에 의해 계산된다.
역수 및 최대공약수 연산 블록(241)은 체(field)인 경우와 링(ring)인 경우로 구분하여 서로 상이하게 계산된다. 본 발명에서는 기존의 확장된 유클리디안 알고리즘(Extended Euclidean Algorithm)을 기반으로 하여 역수 및 최대 공약수를 계산한다. 체(field)에서는 역수 계산을 필요로 하고 링(ring)에서는 최대 공약수 계산을 필요로 한다. 이러한 역수 및 최대공약수 연산 블록(241)에는 연산 속도를 높이기 위해 도 3에서 제시한 'Adder-shifter' 연산기와 'Pre-calculation-Selection' 연산기가 사용된다.
파이프라인 구조로 설계된 디바이저의 덧셈과 더블링 연산 블록은 마치 해당 연산 블록이 다수 존재하는 것처럼 보이기 때문에, 스칼라 곱셈 알고리즘을 고속으로 동작시킬 수 있다.
그리고, 역수 및 최대 공약수 연산에는 많은 클록 사이클을 필요로 하는데, 이 경우, 파이프라인용 레지스터를 추가하여, 스칼라 곱셈 차원에서 병렬성을 제공할 수 있도록 한다. 파이프라인 레지스터는 도 4의 비교기(comparator : 430)의 지연 시간(delay time)을 최소화할 수 있는 회로에 위치시켜서, 고속화 및 병렬 처리를 가능케 한다.
제곱승 및 축약 연산 블록(244)은 곱셈 및 축약 연산 블록(243)과 유사한 구조를 갖는다. 이러한 제곱승 및 축약 연산 블록(244)도 체(field) 및 링(ring)에 모두 사용할 수 있는 입출력 메모리를 레지스터 파일(230)에 구비한다.
나눗셈 연산 블록(251)은 링(ring) 연산에서만 필요로 하며, 이는 체(field) 상에서의 역수 계산과는 달리 몫과 나머지 값을 모두 필요로 한다. 그러므로, 고속화하기에 많은 어려움이 있다. 본 발명에서는 파이프라인 기법을 적용하여 고속화 및 병렬성을 제공한다.
한편, 암호 연산 코어 블록(180)에 있는 연산 블록들은 고성능 다대다(many-to-many) 상호 연결망(Interconnection Network, 210)을 통하여 서로 연결된다. 다대다 상호 연결망(210)은 기존의 버스와 같이 일대일(one-to-one) 통신 방식에 비해, 동시에 여러 메시지가 각각 다른 연산 요소들 사이에 통신할 수 있다. 즉, 결과적으로 전체 연산 블록들 간의 대역폭(bandwidth) 성능을 높인다. 본 발명에서는 다대다 상호 연결망으로서 MIN(Multistage Interconnection Network) 혹은 매쉬(mesh) 구조의 연결망을 사용한다.
자코비안 연산 제어부(220)는 초타원곡선 암호화 알고리즘의 핵심 동작을 수행하는 수단으로서, 타원곡선 암호화 알고리즘의 포인트(point)에 해당하는 초타원곡선 암호화 알고리즘의 디바이저에 대한 연산을 수행한다.
디바이저간의 가산 및 더블링을 위해서는 전술한 체(field) 및 링(ring)에서의 연산 요소를 모두 필요로 하기 때문에, 자코비안 연산 제어부(220)는 상술한 각 연산 요소와 상호 연결망(210), 레지스터 파일(230)을 제어하는 기능을 수행한다.
레지스터 파일(230)에는 연산시 필요한 입력 데이터와 연산 중간 결과 데이터가 저장되는데, 체(field)와 링(ring)에서 모두 사용할 수 있도록 가변 길이(variable length)의 데이터를 저장할 수 있는 구조적인 특징을 갖는다.
도 3은 (A + B ) << C 연산과 A+(B << C) 연산을 고속으로 모두 수행할 수 있는 하드웨어 구조에 관한 것이다.
도 3에 도시한 바와 같이, MUX(390, 350)의 경로 선택은 자코비안 연산 제어부(220)에 의해 선택적으로 제어된다. ( A + B ) << C의 동작은 입력 (310)과 (320)이 XOR(330)에 입력되고, 그 결과값이 MUX(350)를 통과함으로써 시프터(360)에 의해 C값만큼 시프트 된다. 시프트 값은 시프트 제어기(370)에 의해 결정된다. 시프터(360)는 배럴 시프터(barrel shifter) 구조를 갖기 때문에 임의의 비트 값을 한 사이클 내에 수행할 수 있다.
A + ( B << C ) 값을 계산하기 위해서는 A값은 XOR(330)로 입력되어야 하고, B 입력값은 MUX(350)를 통과해야 한다. 시프터(360)에 입력된 B 값은 C 만큼 시프트 된 후, MUX(390)를 통과하여, 입력 A(310)와 XOR(330)된다.
이 구조에서 MUX(350, 390)의 하드웨어 복잡도가 크면, 연산의 공유 효과가 없어지기 때문에, 패스 트랜지스터(Pass-transistor)를 사용하여 MUX(350, 390)를 구현한다.
시프터 제어기(370)는 배럴 시프터인 시프터(360)의 연결 상태를 제어하여, 몇 비트를 시프트할지를 결정하게 된다. 이 연산 블록은 체 곱셈과 링 곱셈, 체 상에서의 역원 계산시 사용하는 EEA 알고리즘에서 공통으로 사용된다.
도 4는 초타원곡선 암호화 알고리즘 수행시에 필요로 하는 최대공약수 값 계산, 역수 계산 등에서 효율적인 연산을 가능하게 하는 'Pre-calculation and selection' 연산기 구조도로서, 초타원곡선 암호화 알고리즘을 수행할 때, 비교 및 판단 동작을 수행하는 부분은 본 발명에서 제안하는 하드웨어 구조를 가진다.
이로서, 비교 및 판단을 위한 하드웨어 블록과 계산을 위한 하드웨어 블록이병렬(parallel)로 동작할 수 있고 결과적으로 지연시간(delay time)을 줄여 동작 속도를 높인다.
도 4는 5개의 가산기 및 시프터 회로(440, 450, 460, 470, 480)로 구성되는데, 이는 최대공약수 값을 계산하는 EEA 알고리즘이 평균적으로 2만큼의 차이로 감소하는 경우가 많기 때문이며, 이 경우, 2에 대한 5가지의 차이값{-2, -1, 0, 1, 2}을 병렬로 처리하는 하드웨어 구조를 갖는다.
많은 클록 사이클이 소요되는 역수 및 최대공약수 연산 회로에 파이프라인용 레지스터를 추가하여 병렬성을 제공한다. 도 4의 MUX(490)의 앞 부분과 비교기(430)의 지연 시간(delay time)을 최소화하는 위치에 파이프라인 레지스터를 추가하여, 고속화 및 병렬성을 제공한다.
도 4의 비교기(430)는 많은 로직으로 구성되기 때문에 많은 지연 시간을 갖는다. 여기에서의 비교 연산 동작과 가산 및 시프터 연산을 병렬로 수행하고, 비교 연산 동작이 끝난 시점에 최종 결과를 선택하게 함으로서 동작 속도를 높인다. 또한, 파이프라인 레지스터를 추가하여 동작 속도와 스칼라 곱셈 차원에서의 병렬성을 제공한다.
상기와 같은 구조로 개발된 초타원곡선 암호화 프로세서는 다음과 같은 효과가 있다.
첫째, 짧은 키 값으로도 높은 비도(level of security)를 제공하며, 하드웨어적으로도 높은 공유성을 가지기 때문에, 제한된 메모리 자원(constraint memoryresources)과 소비 전력(power consumption)을 갖는 휴대폰과 PDA, 스마트카드 등과 같은 휴대용 장비(mobile device)에서 효율적인 사용자 인증(user authentication) 및 키 분배(key distribution), 서명(signature), 암호화 및 복호화(encryption and decryption)를 제공한다.
둘째, 종래의 공개키 암호화 알고리즘인 RSA보다 더 작은 길이의 키 값으로도 더 높은 비도를 보장하며, 수행 속도도 더욱 빠르다. 그리고, 초타원곡선 암호화 프로세서의 지너스 값이 1인 경우에는 타원곡선 암호화 알고리즘도 수행할 수 있다.
셋째, 전자 상거래용 서버, 보안 라우터, 보안 게이트웨이, 키 분배 센터 등 대량의 공개키 암호화 알고리즘을 고속으로 처리해야 하는 대형 보안 시스템에서 효율적으로 사용할 수 있다.
이상, 본 발명을 실시예에 근거하여 구체적으로 설명하였지만, 본 발명은 이러한 실시예에 한정되는 것이 아니라, 후술하는 특허청구범위의 요지를 벗어나지 않는 범위내에서 여러 가지 변형이 가능한 것은 물론이다.

Claims (9)

  1. 초타원곡선(Hyperelliptic curve) 암호화 프로세싱 장치에 있어서,
    PCI(Peripheral Component Interconnect) 인터페이스 블록과 DMA(Direct Memory Access) 및 데이터 입/출력을 제어하는 입/출력 제어 블록과;
    상기 PCI 인터페이스 블록을 통해 제공되는 외부 명령어 및 입력 데이터를 저장하는 입력 메모리 블록과;
    초타원곡선 암호화 연산 결과값 및 중간값을 저장하는 출력 메모리 블록과;
    상기 입력 메모리 블록 및 상기 출력 메모리 블록의 입/출력 데이터 경로를 제어하는 MUX와;
    상기 MUX를 통해 제공되는 외부 명령어 및 입력 데이터에 따라 지너스(genus) 값이 1인 타원곡선 암호화 알고리즘과 상기 지너스 값이 2인 초타원곡선 암호화 알고리즘을 수행하는 암호 코어 블록과;
    상기 입력 메모리 블록으로부터 입력된 명령에 따라, 상기 암호 코어 블록을 제어하는 제어 수단을 구비하는 초타원곡선 암호화 프로세싱 장치.
  2. 제 1 항에 있어서,
    상기 암호 코어 블록은,
    곱셈, 제곱승, 덧셈 및 뺄셈 연산을 수행하는 체(field) 및 링(ring) 연산부와;
    상기 체 및 링 연산부의 디바이저(divisor) 연산을 제어하는 자코비안(Jacobian) 연산 제어부와;
    연산에 필요한 입력 데이터 및 중간 결과 데이터가 저장되는 레지스터 파일과;
    상기 체 및 링 연산부, 상기 자코비안 연산 제어부, 상기 레지스터 파일을 서로 연결하는 상호 연결망으로 구성되는 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
  3. 제 2 항에 있어서,
    상기 체 연산부는,
    덧셈 및 뺄셈 연산 블록과;
    곱셈 및 축약 연산 블록과;
    역원 및 최대공약수 연산 블록과;
    제곱승 및 축약 연산 블록으로 이루어지며,
    상기 링 연산부는, 나눗셈 연산 블록으로 각각 이루어지는 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
  4. 제 3 항에 있어서,
    상기 덧셈 및 뺄셈 연산 블록, 상기 곱셈 및 축약 연산 블록, 상기 역원 및 최대공약수 연산 블록, 상기 제곱승 및 축약 연산 블록, 상기 나눗셈 연산 블록은각기 공유되되, 상기 체 연산부의 입력 데이터 형식은 비트 스트림(bit stream)이며, 상기 링 연산부의 입력 데이터 형식은 체 요소(field element)인 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
  5. 제 2 항에 있어서,
    상기 암호 코어 블록은,
    확장된 유클리디안 알고리즘(EEA)을 사용하여 상기 체 연산부에서의 역수 계산과 상기 링 연산부에서의 최대공약수 계산을 모두 수행하되, 상기 유클리디안 알고리즘의 입력 레지스터의 특정 입력 버퍼를 1로 설정하는 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
  6. 제 3 항 또는 제 5 항에 있어서,
    상기 유클리디안 알고리즘에서의 역수 및 최대공약수 연산과, 상기 곱셈 및 축약 연산 블록, 상기 제곱승 및 축약 블록에서의 연산은 연산식 (A + B) << C 및 A+(B << C)에 의해 수행되며, 상기 연산식은 XOR 블록, 배럴 시프터(barrel shifter) 블록, 시프터 제어기, 데이터 경로 제어용 MUX에 의해 구현되는 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
  7. 제 6 항에 있어서,
    상기 유클리디안 알고리즘에서의 역수 및 최대공약수 연산과, 상기 곱셈 및축약 연산 블록, 상기 제곱승 및 축약 연산 블록에서의 연산은 비교 및 특정 기능 연산을 병렬로 처리하는 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
  8. 제 3 항 또는 제 5 항에 있어서,
    상기 초타원곡선 암호화 프로세싱 장치는,
    상기 역수 계산과 최대공약수 계산을 수행하는 유클리디안 알고리즘 블록과 상기 링 연산부에서의 나눗셈 연산 블록에 파이프라인 레지스터를 더 구비하는 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
  9. 제 8 항에 있어서,
    상기 유클리디안 알고리즘 블록과 나눗셈 연산 블록은 상기 초타원곡선 암호화 프로세싱 장치의 스칼라 곱셈에 필요한 자코비안 덧셈(addition)과 더블링(doubling)의 병렬 처리가 가능한 것을 특징으로 하는 초타원곡선 암호화 프로세싱 장치.
KR10-2002-0069061A 2002-11-08 2002-11-08 초타원곡선 암호화 프로세싱 장치 KR100453230B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2002-0069061A KR100453230B1 (ko) 2002-11-08 2002-11-08 초타원곡선 암호화 프로세싱 장치
US10/385,671 US20040091105A1 (en) 2002-11-08 2003-03-12 Apparatus for hyperelliptic-curve cryptography processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0069061A KR100453230B1 (ko) 2002-11-08 2002-11-08 초타원곡선 암호화 프로세싱 장치

Publications (2)

Publication Number Publication Date
KR20040041186A KR20040041186A (ko) 2004-05-17
KR100453230B1 true KR100453230B1 (ko) 2004-10-15

Family

ID=32226259

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0069061A KR100453230B1 (ko) 2002-11-08 2002-11-08 초타원곡선 암호화 프로세싱 장치

Country Status (2)

Country Link
US (1) US20040091105A1 (ko)
KR (1) KR100453230B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100679627B1 (ko) * 2005-03-26 2007-02-28 박영수 암복호화방법
CA2542556C (en) 2005-06-03 2014-09-16 Tata Consultancy Services Limited An authentication system executing an elliptic curve digital signature cryptographic process
US7961872B2 (en) * 2006-12-04 2011-06-14 Lsi Corporation Flexible hardware architecture for ECC/HECC based cryptography
US8189775B2 (en) * 2010-02-18 2012-05-29 King Fahd University Of Petroleum & Minerals Method of performing cipher block chaining using elliptic polynomial cryptography
US8385541B2 (en) * 2010-02-18 2013-02-26 King Fahd University Of Petroleum And Minerals Method of performing elliptic polynomial cryptography with elliptic polynomial hopping
US8331558B2 (en) * 2010-02-18 2012-12-11 King Fahd University Of Petroleum And Minerals Method of cipher block chaining using elliptic curve cryptography
US8509426B1 (en) 2010-12-01 2013-08-13 King Fahd University Of Petroleum And Minerals XZ-elliptic curve cryptography system and method
US8699701B2 (en) 2010-12-01 2014-04-15 King Fahd University Method of performing XZ-elliptic curve cryptography for use with network security protocols
CN103297223B (zh) * 2013-05-07 2017-06-06 北京航空航天大学 基于动态可重构的自恢复容错aes装置及其加密方法
KR101980448B1 (ko) * 2017-10-27 2019-05-20 인하대학교 산학협력단 Rsa 알고리즘 용 몽고메리 알고리즘 파라미터 계산 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848159A (en) * 1996-12-09 1998-12-08 Tandem Computers, Incorporated Public key cryptographic apparatus and method
US6021201A (en) * 1997-01-07 2000-02-01 Intel Corporation Method and apparatus for integrated ciphering and hashing
JP2000206879A (ja) * 1999-01-14 2000-07-28 Internatl Business Mach Corp <Ibm> 標数2のガロア体上で定義される超楕円曲線のヤコビ多様体の群演算を実施する装置及び方法
JP3551853B2 (ja) * 1999-08-27 2004-08-11 日本電気株式会社 αYa+βXb+1=0という形の定義方程式をもつ代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体
WO2001024439A1 (fr) * 1999-09-29 2001-04-05 Hitachi, Ltd. Dispositif, programme ou systeme de traitement d'informations secretes
US7043015B2 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Methods for point compression for Jacobians of hyperelliptic curves

Also Published As

Publication number Publication date
KR20040041186A (ko) 2004-05-17
US20040091105A1 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
JP3789454B2 (ja) 暗号コプロセッサを有するストリームプロセッサ
Khan et al. High-Speed and Low-Latency ECC Processor Implementation Over GF ($2^{m}) $ on FPGA
Sasdrich et al. Efficient elliptic-curve cryptography using Curve25519 on reconfigurable devices
US20130301826A1 (en) System, method, and program for protecting cryptographic algorithms from side-channel attacks
KR100453230B1 (ko) 초타원곡선 암호화 프로세싱 장치
CN100583757C (zh) 一种ecc\rsa加解密协处理器
CN110059493B (zh) 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统
CN114666038B (zh) 一种大位宽数据处理方法、装置、设备及存储介质
CN109190413B (zh) 一种基于fpga和md5加密的串行通信系统
US20080148011A1 (en) Carry/Borrow Handling
KR20220078155A (ko) 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치
US20170302438A1 (en) Advanced bus architecture for aes-encrypted high-performance internet-of-things (iot) embedded systems
JP2004533671A (ja) 多項式演算オペレーション
CN101630244A (zh) 一种流水线型椭圆曲线双标量乘法系统及方法
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
Sun et al. Design of a scalable RSA and ECC crypto-processor
US20220269487A1 (en) Efficient Montgomery Multiplier
CN111641495A (zh) 基于Keeloq的数字电路加密方法及装置
Shukla Asynchronous hardware implementations for crypto primitives
KR100406139B1 (ko) 대칭 및 비대칭키 암호 연산 처리 시스템 및 그 처리 방법
Vu et al. Flexible and energy-efficient crypto-processor for arbitrary input length processing in blockchain-based iot applications
CN104346134A (zh) 用于执行缩小和舍入算术运算的数据处理装置和方法
KR20020086005A (ko) 타원곡선 암호 시스템을 위한 역원 연산기
TWI403952B (zh) A large integer modulus index chip structure for signature cryptography
Leung et al. A low power asynchronous GF (2ˆ173) ALU for elliptic curve crypto-processor

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20081001

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee