KR100399048B1 - 타원곡선 암호화 장치 - Google Patents

타원곡선 암호화 장치 Download PDF

Info

Publication number
KR100399048B1
KR100399048B1 KR10-2001-0034306A KR20010034306A KR100399048B1 KR 100399048 B1 KR100399048 B1 KR 100399048B1 KR 20010034306 A KR20010034306 A KR 20010034306A KR 100399048 B1 KR100399048 B1 KR 100399048B1
Authority
KR
South Korea
Prior art keywords
value
storage means
elliptic curve
curve encryption
polynomial
Prior art date
Application number
KR10-2001-0034306A
Other languages
English (en)
Other versions
KR20020095937A (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-2001-0034306A priority Critical patent/KR100399048B1/ko
Publication of KR20020095937A publication Critical patent/KR20020095937A/ko
Application granted granted Critical
Publication of KR100399048B1 publication Critical patent/KR100399048B1/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/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

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 타원곡선 암호화 장치에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, IC카드 등과 같이 면적 사용이 제한적인 시스템에서 사용자 인증 및 서명, 그리고 대칭키 시스템의 키 값 교환 등을 위하여 짧은 키를 가지면서도 높은 안전도를 가질 수 있는 타원곡선 암호화 장치를 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은, 타원곡선 암호화 장치에 있어서, 타원곡선 암호화를 위한 연산의 계수 값을 저장하기 위한 제 1 저장 수단; 타원곡선 암호화를 위한 연산의 입력값을 저장하기 위한 제 2 저장 수단; 상기 제 1 저장 수단과 상기 제 2 저장 수단의 값을 이용하여 타원곡선 암호화 연산을 수행하기 위한 타원곡선 암호화 연산 수단; 상기 타원곡선 암호화 연산 수단의 출력 값을 저장한 후 다음 연산에 사용되도록 상기 타원곡선 암호화 연산 수단으로 입력하기 위한 제 3 저장 수단; 및 상기 제 1 저장 수단의 값에 따라 상기 타원곡선 암호화 연산 수단을 제어하고 연산 결과 값의 전송을 통제하기 위한 타원곡선 암호화 제어 수단을 포함함.
4. 발명의 중요한 용도
본 발명은 개방형 IC카드 등에 이용됨.

Description

타원곡선 암호화 장치{Apparatus of Elliptic Curve Cryptosystem}
본 발명은 타원곡선 암호화 장치에 관한 것이다.
종래의 암호화 장치는 크게 대칭키 암호화 장치와 공개키 암호화 장치로 구분되어진다.
이 중, 대칭키 암호화 장치는 비밀 채널로 공유된 비밀키를 가지고 상호간의 암호 통신을 하는 방식으로 송, 수신자가 동일한 키에 의하여 암호화 및 복호화 과정을 수행하므로, 키를 안전하게 전송하고 보관함에 어려움이 있다. 이와 같은 키 분배 어려움을 해결한 것이 공개키 암호화 장치이다. 공개키 암호는 암호화하는 키와 복호화하는 키가 서로 다른 암호화 장치로 암호 통신을 원하는 상대의 공개키를 받아서 암호화하여 전송하면 수신 측은 자신만의 개인키를 가지고 암호문을 복호화 할 수 있다. 이에 따라, 공개키 암호화 장치는 키 분배의 문제점을 해결함과 동시에 전자서명의 기능을 제공한다. 하지만, 공개키 암호화 장치는 암, 복호화의 연산량이 매우 큰 단점을 가지고 있기 때문에 데이터 암호화보다는 비밀키 분배나 전자서명 혹은 인증이 필요한 응용 분야에 사용되고 있다.
현재까지 많은 공개키 암호화 장치가 만들어져 있는데, 이중 현재 가장 널리 사용되는 공개키 암호화 장치는 소인수 분해의 문제점을 이용한 "RSA(Rivest-Shamir-Adelman)"이다. 하지만, "RSA" 공개키 암호화 장치는 사용되는 키 길이가 긴 단점이 있다. 여기서, 사용되는 키 길이가 길다는 것은 그 만큼 연산 시간과 연산에 필요한 하드웨어가 늘어나게 된다는 것을 의미한다.
이에 반해, 본 발명에서 구현하고자 하는 타원곡선 암호화 장치는 다른 공개키 암호화 장치들에 비해 키 길이가 짧기 때문에 IC 카드와 같이 전력이나 면적사용이 제한적인 응용 분야에 적합한 공개키 암호화 장치이다. 특히, 타원곡선 암호화 장치는 유한체위에서 정의된 타원곡선 군에서의 이산대수의 어려움에 안전성의 근간을 두고 있기 때문에, "Diffe-Hellman 키교환 교환 scheme", "ElGamal", "Schnorr", "DSS", "Massey-Omura", "KEA" 등의 구현에 사용될 수 있으며 또한, 짧은 키를 가지고도 현재 널리 사용되고 있는 "RSA"와 같은 공개키 암호화 장치와 동등한 안전도를 제공한다.
그리고, 타원곡선 암호화 장치가 짧은 키를 갖는다는 것은 그 만큼 연산에 필요한 하드웨어가 작아지므로 IC카드와 같이 면적에 제약이 많은 시스템에서 전자서명이나 인증, 또는 대칭키 시스템의 키값 교환 등의 사용에 적합하게 된다. 하지만, "RSA"와 마찬가지로 구현 속도가 대칭키에 비해 매우 느리기 때문에 실제 응용에 있어서 하드웨어 구현이 힘든 문제점이 있다.
본 발명은, 상기한 바와 같은 문제점을 해결하기 위하여 제안된 것으로, IC카드 등과 같이 면적 사용이 제한적인 시스템에서 사용자 인증 및 서명, 그리고 대칭키 시스템의 키 값 교환 등을 위하여 짧은 키를 가지면서도 높은 안전도를 가질 수 있는 타원곡선 암호화 장치를 제공하는데 그 목적이 있다.
도 1 은 본 발명에 따른 타원곡선 암호화 장치를 내장한 IC카드의 일실시예 구성도.
도 2 는 본 발명에 따른 nP 연산이 가능한 타원곡선 암호화 장치의 일실시예 구성도.
도 3 은 본 발명에 따른 타원곡선 암호 연산 모듈의 일실시예 상세 구성도.
도 4 는 본 발명에 따른 다항 연산기의 일실시예 상세 구성도.
도 5 는 본 발명에 따른 다항 곱셈기의 일실시예 상세 구성도.
도 6 은 본 발명에 따른 다항 역승산기의 일실시예 상세 구성도.
도 7 은 본 발명의 다른 실시예인 메모리를 연산 레지스터로 사용한 타원곡선 암호화 장치의 일실시예 구성도.
* 도면의 주요 부분에 대한 부호의 설명
201 : N레지스터 202 : P레지스터
203 : Temp레지스터 204 : 타원곡선 암호 제어기
205 : 타원곡선 암호 연산 모듈
상기 목적을 달성하기 위하여 본 발명의 장치는, 타원곡선 암호화 장치에 있어서, 타원곡선 암호화를 위한 연산의 계수 값을 저장하기 위한 제 1 저장 수단; 타원곡선 암호화를 위한 연산의 입력값을 저장하기 위한 제 2 저장 수단; 상기 제 1 저장 수단과 상기 제 2 저장 수단의 값을 이용하여 타원곡선 암호화 연산을 수행하기 위한 타원곡선 암호화 연산 수단; 상기 타원곡선 암호화 연산 수단의 출력 값을 저장한 후 다음 연산에 사용되도록 상기 타원곡선 암호화 연산 수단으로 입력하기 위한 제 3 저장 수단; 및 상기 제 1 저장 수단의 값에 따라 상기 타원곡선 암호화 연산 수단을 제어하고 연산 결과 값의 전송을 통제하기 위한 타원곡선 암호화 제어 수단을 포함하여 이루어진 것을 특징으로 한다.
또한, 본 발명의 장치는, 타원곡선 암호화 장치에 있어서, 타원곡선 암호화를 위한 연산의 계수값, 타원곡선 암호화를 위한 연산의 입력값 및 연산의 중간 값을 저장하기 위한 저장 수단; 상기 저장 수단에 저장된 값을 이용하여 타원곡선 암호화 연산을 수행하기 위한 타원곡선 암호화 연산 수단; 상기 저장 수단을 제어하고, 상기 저장 수단의 값에 따라 상기 타원곡선 암호화 연산 수단을 제어하고, 상기 타원곡선 암호화 연산 수단의 연산 결과값의 전송을 통제하기 위한 타원곡선 암호화 제어 수단; 및 상기 저장 수단이 타원곡선 암호화를 위한 연산의 계수값, 타원곡선 암호화를 위한 연산의 입력값 및 연산의 중간 값을 나누어 저장하도록 하기 위한 메모리 정합 수단을 포함하여 이루어진 것을 특징으로 한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
도 1 은 본 발명에 따른 타원곡선 암호화 장치를 내장한 IC카드의 일실시예 구성도이다.
도 1 에 도시된 바와 같이, 본 발명에 따른 타원곡선 암호화 장치를 내장한 IC카드는 인터페이스 로직(11), 중앙 처리부(CPU)(12), 메모리 관리부(MMU : Memory Management Unit)(13), 타원곡선(ECC : Elliptic Curve Crypto)암호화 장치(14), 시스템 버스(15), 보안 로직(16), 이이피롬(EEPROM)(17), 롬(ROM : Read Only Memory)(18) 및 램(RAM)을 구비한다.
본 발명이 적용되는 IC카드에서 타원곡선 암호화를 위한 주요 연산은 타원곡선 암호화 장치(14)에서 이루어지며, 그 외 상위 프로그램은 중앙 처리부(12)에서 실행된다. 연산에 필요한 메모리로는 타원곡선 암호화 장치(14)에 내장된 레지스터를 사용하거나 램(19)을 사용한다.
도 2 는 본 발명에 따른 nP 연산이 가능한 타원곡선 암호화 장치의 일실시예 구성도이다.
도 2 에 도시된 바와 같이, 본 발명에 따른 타원곡선 암호화 장치는 nP 연산에서 n을 나타내는 값을 저장하는 N레지스터(201), P를 나타내는 값을 저장하는 P레지스터(202), 타원곡선 암호 연산 모듈(205)의 출력 값을 저장한 후 다음 연산에 사용되도록 하는 Temp레지스터(203), N레지스터의 값에 따라 타원곡선 암호 연산 모듈(205)을 제어하는 타원곡선 암호 제어기(204) 및 nP연산을 수행하는 타원곡선암호 연산 모듈(205)을 구비한다.
그 동작을 상세히 살펴보면, AMBA(Advanced Microprocessor Bus Architecture)와 같은 시스템 버스(15)를 통하여 n과 P값을 N레지스터(201)와 P레지스터(202)에 입력받는다. 이 때, 각 입출력 레지스터는 미리 할당된 주소 값에 의하여 입력되어, 시스템 인터페이스 처리는 타원곡선 암호 제어기(204)에서 이루어진다. N레지스터(201)는 쉬프트 레지스터이며, 타원곡선 암호 제어기(204)는 N레지스터(201)로부터 최상위값을 입력받아서, 입력된 값이 "0"인가 "1"인가에 따라 타원곡선 암호 연산 모듈(205)을 제어한다. 상기의 입력된 값이 "1"일 경우 Temp레지스터(203)의 입력값을 두배한 후 다시 P레지스터(202)의 값을 더하고, 상기의 입력된 값이 "0"일 경우에는 Temp레지스터(203)의 입력값에 P레지스터(202)의 값만을 더한다. 이와 같이, 한 비트의 n 값에 대한 연산이 이루어지면 n 레지스터를 쉬프트시킨 후 연산을 반복한다. Temp 레지스터(203)는 타원곡선 암호 연산 모듈(205)의 출력 값을 저장한 후 다음 연산의 입력값으로 사용하기 위한 임시 레지스터이다. 또한, 여기에 최종 출력 값도 저장된다. 최종 출력이 나오면 타원곡선 암호 제어기(204)는 인터럽트 신호를 중앙처리부(12)에 전달하여 연산이 끝났음을 알리고, 시스템 버스(15)를 통하여 출력 값을 전송한다.
도 3 은 본 발명에 따른 타원곡선 암호 연산 모듈의 일실시예 상세 구성도이다.
도 3 에 도시된 바와 같이, 본 발명은 두개의 좌표 값을 입력받는 X1, Y1, X2, Y2레지스터(301 내지 304), 타원곡선 상수를 입력받는 A레지스터(305), 덧셈,곱셈, 역승산의 기본 연산을 수행하는 다항 연산기(307), 다항 연산기(307) 및 출력 레지스터를 제어하는 연산 제어기(306), 다항 연산기(307)의 출력을 저장하는 X3, Y3레지스터(308, 309) 및 각각의 데이터 값을 전달하는 내부 데이터 버스(310)를 구비한다.
각 동작을 상세히 살펴보면, 입력으로 두 개의 (), ()좌표 값과 타원곡선 상수 a를 입력받아 새로운 좌표 ()를 출력한다. 이 때, 타원곡선 상수 a는 초기 값으로 입력되며, 이후 연산에서 계속 사용된다. 연산 제어기(306)는 다항 연산기(307)와 출력 레지스터들을 제어하는데, "입력값의 두배 연산이냐", "두 입력값의 덧셈 연산이냐" 에 따라서 다른 연산을 취한다. 만약, 입력값의 두배 연산이면, 출력이 다음의 <수학식1>과 같은 연산에 의해 이루어지도록 연산 제어기(306)가 동작한다.
,
그리고, 두 입력값에 대한 덧셈 연산이면, 출력이 다음의 <수학식 2>와 같은 연산에 의해 이루어지도록 연산 제어기(306)가 동작한다.
,
연산 중간 결과값으로 다음 연산에 다시 사용되는 값들은레지스터(308)와레지스터(309)에 저장되어 필요시에 다시 사용된다.
도 3 에 도시된 바와 같은 타원곡선 암호 연산 모듈(205)을 암호 프로세서로 구현하고 나면, 도 2 에서와 같이 입출력을 시스템버스(15)에 연결하고 연산 제어기(306)에 시스템 인터페이스를 내장시켜 구현하게 된다. 이럴 경우 도 2 의 타원 곡선 암호 제어기(204)의 역할을 중앙 처리부(12)에서 프로그램적으로 처리하여야 한다. 즉, 프로그램에서 초기에 a값을 입력하고 연산시 n값을 판단하여 두 배 연산인지 두 포인터의 덧셈 연산인지를 타원곡선 암호 연산 모듈(205)의 연산 제어기(306)에 알려주어 연산 동작을 수행한다. 연산 제어기(306)는 연산이 끝나면 인터럽트를 발생하여 연산이 끝났음을 알리고, 중앙 처리부(12)는 상기의 연산 결과를 가져와 다음 연산을 수행한다.
도 4 는 본 발명에 따른 다항 연산기의 일실시예 상세 구성도이다.
도 4 에 도시된 바와 같이, 본 발명에 따른 다항 연산기(307)는 다항 역승산기(401), 다항 곱셈기(402) 및 2개의 다중화부(403, 404)를 구비한다. 이때, 다항 덧셈기는 다항 곱셈기(402)에 내장된다. 상기 두 개의 연산블록의 출력은 제 1 및 제 2 다중화기(403, 404)에 의해서 선택되는데, 이를 위한 제어 신호는 도 2 의 타원곡선 암호 제어기(204)에서 출력된다.
이하 도 5 내지 도 6 에서는 상기 다항 연산기(307)의 내부에 포함된 세부 블럭들에 대하여 자세히 살펴보기로 한다.
도 5 는 본 발명에 따른 다항 곱셈기의 일실시예 상세 구성도 이다.
본 발명에 따른 다항 곱셈기(402)는 X, Y레지스터(501, 502)에서 입력 값을 받아 Z레지스터(507)로 결과를 출력한다. 이 경우, 결과는 X레지스터(501)와 Y레지스터(502)의 곱셈 연산 값이거나 덧셈 연산 값이 된다.
다항 곱셈기(402)의 세부 동작은 다음과 같다. X레지스터(501)와 Y레지스터(502)의 출력되는 데이터는 Nx1 논리곱 게이트(AND)(504)로 최상위 비트만 입력된다. X레지스터(501)와 Y레지스터(502)로부터 출력되는 데이터에 대하여 AND 연산을 수행한 후, 누적 레지스터로 사용되는 Z레지스터(507)의 값과 제 1 다항 덧셈기(505)에서 덧셈 연산을 수행한다.
상기의 제 1 다항 연산의 출력 값은 제 3 다중화기(509)에서 X레지스터(501)의 출력값과 다중화된다. 또한, Y레지스터(502)의 출력 값은 최소 다항식 레지스터(503)의 출력 값과 제 4 다중화기(510)에서 다중화된다.
곱셈 제어기(508)는 이러한 일련의 과정과 레지스터들을 제어하며, 또한 덧셈기 연산과 곱셈기 연산 동작 구분을 위해 사용되는 제 3 및 제 4 다중화기(509, 510)를 제어한다. 즉, 곱셈 제어기(508)의 제어에 의해 제 3 및 제 4 다중화기(509, 510)는 곱셈 연산 또는 덧셈 연산을 결정하게 된다.
곱셈 연산일 경우에, 제 3 다중화기(509)는 두 가지 입력값 중에서 제 1 다항 덧셈기(505)를 통과한 값을 출력으로 하고, 제 4 다중화기(510)는 두 가지 입력값 중에서 최소다항식 레지스터(503)의 값을 출력한다. 상기의 제 3 및 4 다중화기(509, 510)에서 선택된 값은 제 2 다항 덧셈기(506)에서 덧셈 연산이 수행되어 Z레지스터(507)로 출력된다. 상기의 출력 값이 곱셈 연산의 결과 값이다. 이러한 곱셈 연산은 Y레지스터(502)를 한 비트씩 쉬프트하면서 모든 Y레지스터(502) 값에 대해서 반복 수행하게 된다.
또한, 덧셈 연산일 경우에, 제 3 다중화기(509)는 두 가지 입력값 중에서 X레지스터(501)의 값을 출력으로 하고, 제 4 다중화기(510)는 두 가지 입력값 중에서 Y레지스터(502)의 값을 출력한다. 상기의 제 3 및 4 다중화기(509, 510)에서 선택된 값은 제 2 다항 덧셈기(506)에서 덧셈 연산이 수행되어 Z레지스터(507)로 출력된다. 상기의 출력 값이 덧셈 연산의 출력 값이다. 이러한 다항 덧셈 연산은 한 클럭만 이루어진다.
이때, 최소다항식 레지스터(503)값은 도 3 의 타원곡선 암호 연산 모듈(205)의 A레지스터(305)값과 같이 초기에 입력되며, 시스템 버스(15)를 통해 입력되어 연산과정에 수정 없이 계속 사용된다. 이와 같은 A레지스터(305)값과 최소다항식 레지스터(503)값은 본 발명이 다양한 타원곡선 시스템에 적용될 수 있도록 해준다. 그리고, 투사 좌표(projective coordinate)방식의 연산을 이용하면 역승산기 없이 곱셈기만으로 타원곡선 암호 시스템을 구현할 수 있다.
도 6 은 본 발명에 따른 다항 역승산기의 일실시예 상세 구성도이다.
본 발명에 따른 다항 역승산기의 구현 알고리즘은 준 역수(AIA : Almost Inverse Algorithm)알고리즘으로, 다음과 같다.
Initialize k = 0, B = 1, C =0 , F = A, G = M(minimal polynomial)
Loop1 : While F is even, do F = F / x, C = C * x, k = k + 1.
If F = 1, then return B, k.
If deg(F) < deg(G), then exchange F, G and exchange B, C.
F = F + G, B = B + C
Goto Loop1
Loop2 : If B = odd, then B = B + M.
B = B / x, k = k - 1.
If k = 0, then return B
Goto Loop2
여기서, B, C, F, G는 각각 B, C, F, G레지스터의 값을 의미하고, 또한 A는 타원곡선 상수값, M은 최소다항식값, k는 지수 값을 의미한다.
본 발명에 따른 다항 역승산기(401)는 위와 같은 알고리즘을 구현하기 위하여 도 6 과 같이 F(603), G(604), C(608), B(609)레지스터와 각각의 레지스터(603, 604, 608, 609)에 대한 입력을 결정하기 위한 F(601), G(602), C(606), B(607)다중화기와, F레지스터(603)와 G레지스터(604)값의 차수를 비교하기 위한 차수 비교기(612), 지수 값을 저장하기 위한 K레지스터(614), 레지스터 값들의 덧셈연산을 위한 제 3 및 제 4 다항 덧셈기(605, 610) 그리고, 최종적인 출력연산을 위한 최소다항식 덧셈기(611)와 이들을 제어하는 역승산 제어기(613)를 구비한다.
세부 동작을 상세히 보면, 다항 역승산기(401)는 초기 입력값으로 내부 데이터 버스(310)로부터의 입력값(G)과 최소다항식 레지스터(503)으로부터의 입력값(H)을 가진다. 내부 데이터 버스(310)로부터의 입력값은 차수 비교기(612)와 F레지스터(603)에 입력된다. 또한, 최소다항식 레지스터(503)로부터의 입력값은 차수 비교기(612)와 G레지스터(604)로 입력된다. 그리고, C레지스터(608)는 0으로, B레지스터(609)는 1로 초기화된다. 이후 역승산기의 동작은 크게 3단계로 이루어진다.
첫 번째 단계에서는 F레지스터(603)의 마지막 비트 값이 0인가 확인하여, 0이면 F레지스터(603)와 C레지스터(608)를 각각 오른쪽과 왼쪽으로 쉬프트시키면서, K레지스터(614)값을 1 증가시킨다. 상기의 동작을 F 레지스터(603) 값의 마지막 비트 값이 1이 될 때까지 반복한다. 마지막 비트 값이 1이 되면 두 번째 단계로 넘어가게 된다.
두 번째 단계에서는 차수 비교기(612)를 이용하여 F 레지스터(603)와 G 레지스터(604)값의 차수를 비교하여 F레지스터 값의 차수가 더 크면 F = F + G, B = B + C 동작을 수행한다. 만약 G 레지스터(604) 값의 차수가 더 크면 덧셈 동작을 하기 전에 F레지스터(603)와 G레지스터(604), C레지스터(608)와 B레지스터(609)의 값을 각각 교환한다. 이때, 차수비교는 차수 비교기(612)의 내부 레지스터 저장 값에 의해서 이루어지며, 레지스터를 적절히 제어함으로써 덧셈 동작과 교환 동작이 동시에 이루어진다. 첫 번째 단계와 두 번째 단계를 계속 반복하게 되는데, 첫 번째 단계 후 F레지스터(603)값이 1이 되면 세 번째 단계로 넘어간다.
세 번째 단계에서는 B레지스터(609)값의 마지막 비트 값을 체크하여 0이면 오른쪽으로 쉬프트하고, 1이면 최소다항식을 더하여 오른쪽으로 쉬프트한다. 이러한 동작을 K레지스터(614)의 값만큼 반복하여 최종출력을 출력한다. 역승산 제어기(613)는 상기와 같은 일련의 동작들이 이루어지도록 다중화기와 레지스터를 제어하며, 동작이 끝났을 때 상위 제어기에 동작이 끝났음을 알리게 된다.
도 5 와 도 6 에 따른 다항 곱셈기와 다항 역승산기만으로 암호 프로세서를 구현할 수 있다. 이러한 경우 위와 마찬가지로 인터페이스를 수정하고 도2 와 도 3 의 제어기 동작을 중앙 처리부의 프로그램으로 구현하면 된다.
도 7 은 본 발명의 다른 실시예인 메모리를 연산 레지스터로 사용한 타원곡선 암호화 장치의 일실시예 구성도이다.
본 발명에 따른 타원곡선 암호화 장치는 상기의 도 1 에서 구현된 구성과는 다르게 구성될 수도 있다. 도 7 은 본 발명에 따른 타원곡선 암호화 장치가 다르게 구성된 일실시예의 구성도이다. 이하 도 7 에 도시된 구성도를 도 2 에 도시된 구성도와 비교하며 그 구성간의 차이점과 구현에 있어서의 공통점을 살펴본다.
도 7 에 도시된 구성도는 도 2 에 도시된 바와는 달리 N레지스터(201), P레지스터(202) 및 Temp레지스터(203)대신에 램(19)을 사용하도록 한다. 여기서, 램(19)을 사용하기 위해 본 실시예에서는 별도의 메모리 인터페이스(141)를 추가한다. 또한, 타원곡선 암호 제어기(143)에서 메모리 제어까지 수행하게 되며, 시스템 버스의 버스 크기 입출력 레지스터(142)만을 가지게 된다. 따라서, 많은 연산들이 반복적으로 중간 결과 값들을 램(19)에 저장했다가 다시 불러와 수행되게 된다. 이에 따라, 연산기의 많은 부분을 차지하는 레지스터를 크게 줄일 수 있다. 이 경우, 타원곡선 암호 연산 모듈(144)의 연산 단위가 시스템 버스 단위로 수정되어야 한다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
상기한 바와 같은 본 발명은, 전자 상거래, 전자화폐, 사용자 신분 확인, 사용자 키 관리, 결재 시스템 등에서 높은 안전도와 고성능을 제공하는 타원곡선 암호화 장치로 사용될 수 있다.
또한, 본 발명은 IC카드 및 PDA, 휴대용 단말기 등과 같이 제한된 메모리 용량 및 저성능 프로세서 컴퓨팅 환경에서, 효율적인 키 교환, 서명, 사용자 인증 등의 용도로 사용될 수 있다.
또한, 본 발명은 타원곡선 암호알고리즘 처리에 많은 시간을 요하는 곱셈, 역승산, 모듈라 연산, 스칼라 곱을 하드웨어적인 방법으로 고속으로 처리할 수 있어서, IC카드 응용 시스템에서 필요로 하는 실시간 처리 요건을 만족시킬 수 있는 효과가 있다.
또한, 본 발명은 다양한 기저 다항식을 고속으로 처리할 수 있는 모듈라 연산기를 가지므로, 개방형 IC카드, 다양한 응용 소프트웨어를 수용하는 휴대용 단말기에서 사용할 수 있다.
또한, 본 발명은 시스템 성능 및 면적에 따라서 다양한 방법으로 선택적으로 구현할 수 있는 효과가 있다.

Claims (13)

  1. 타원곡선 암호화 장치에 있어서,
    타원곡선 암호화를 위한 연산의 계수 값을 저장하기 위한 제 1 저장 수단;
    타원곡선 암호화를 위한 연산의 입력값을 저장하기 위한 제 2 저장 수단;
    상기 제 1 저장 수단과 상기 제 2 저장 수단의 값을 이용하여 타원곡선 암호화 연산을 수행하기 위한 타원곡선 암호화 연산 수단;
    상기 타원곡선 암호화 연산 수단의 출력 값을 저장한 후 다음 연산에 사용되도록 상기 타원곡선 암호화 연산 수단으로 입력하기 위한 제 3 저장 수단; 및
    상기 제 1 저장 수단의 값에 따라 상기 타원곡선 암호화 연산 수단을 제어하고 연산 결과 값의 전송을 통제하기 위한 타원곡선 암호화 제어 수단
    을 포함하는 타원곡선 암호화 장치.
  2. 제 1 항에 있어서,
    상기 타원곡선 암호화 제어 수단은,
    상기 제 1 저장 수단의 값 중 최상위 값을 입력받아, 그 값이 1이면 상기 제 3 저장 수단의 값을 두배한 후 상기 제 2 저장 수단의 값을 더하고, 그 값이 0이면 상기 제 3 저장 수단의 값에 상기 제 2 저장 수단의 값을 더하도록 상기 타원곡선 암호화 연산 수단을 제어하는 것을 특징으로 하는 타원곡선 암호화 장치.
  3. 제 1 항에 있어서,
    상기 타원곡선 암호화 연산 수단은,
    상기 제 2 저장 수단의 출력값 중 좌표축의 x값을 나타내는 값을 저장하기 위한 제 4 저장 수단;
    상기 제 2 저장 수단의 출력값 중 좌표축의 y값을 나타내는 값을 저장하기 위한 제 5 저장 수단;
    상기 제 3 저장 수단의 출력값 중 좌표축의 x값을 나타내는 값을 저장하기 위한 제 6 저장 수단;
    상기 제 3 저장 수단의 출력값 중 좌표축의 y값을 나타내는 값을 저장하기 위한 제 7 저장 수단;
    외부의 데이터 버스로부터 타원곡선 상수값을 입력받아 저장하기 위한 제 8 저장 수단;
    덧셈, 곱셈, 역승산의 기본 연산을 수행하기 위한 다항 연산 수단;
    상기 다항 연산 수단의 출력값 중 좌표축의 x값을 나타내는 값을 저장하기 위한 제 9 저장 수단;
    상기 다항 연산 수단의 출력값 중 좌표축의 y값을 나타내는 값을 저장하기 위한 제 10 저장 수단;
    상기 제 4 저장 수단 내지 상기 제 10 저장 수단의 데이터 값을 전달하기 위한 내부 데이터 전송 수단; 및
    상기 타원곡선 암호화 제어 수단의 제어에 따라 상기 다항 연산 수단을 제어하기 위한 연산 제어 수단
    을 포함하는 타원곡선 암호화 장치.
  4. 타원곡선 암호화 장치에 있어서,
    타원곡선 암호화를 위한 연산의 계수값, 타원곡선 암호화를 위한 연산의 입력값 및 연산의 중간 값을 저장하기 위한 저장 수단;
    상기 저장 수단에 저장된 값을 이용하여 타원곡선 암호화 연산을 수행하기 위한 타원곡선 암호화 연산 수단;
    상기 저장 수단을 제어하고, 상기 저장 수단의 값에 따라 상기 타원곡선 암호화 연산 수단을 제어하고, 상기 타원곡선 암호화 연산 수단의 연산 결과값의 전송을 통제하기 위한 타원곡선 암호화 제어 수단; 및
    상기 저장 수단이 타원곡선 암호화를 위한 연산의 계수값, 타원곡선 암호화를 위한 연산의 입력값 및 연산의 중간 값을 나누어 저장하도록 하기 위한 메모리 정합 수단
    을 포함하는 타원곡선 암호화 장치.
  5. 제 4 항에 있어서,
    상기 타원곡선 암호화 제어 수단은,
    상기 저장 수단의 저장값 중 연산을 위한 계수값의 최상위 값을 입력받아, 상기 최상위 값이 1이면 상기 저장 수단의 저장값 중 연산의 중간 값을 두배한 후 상기 저장 수단의 저장값 중 연산의 입력값을 더하고, 상기 최상위 값이 0이면 상기 저장 수단의 저장값 중 연산의 중간 값에 상기 저장 수단의 저장값 중 연산의 입력값을 더하도록 상기 타원곡선 암호화 연산 수단을 제어하는 것을 특징으로 하는 타원곡선 암호화 장치.
  6. 제 4 항에 있어서,
    상기 타원곡선 암호화 연산 수단은,
    상기 저장 수단의 출력값 중 좌표축의 x값을 나타내는 값을 저장하기 위한 제 1 저장 수단;
    상기 저장 수단의 출력값 중 좌표축의 y값을 나타내는 값을 저장하기 위한 제 2 저장 수단;
    상기 저장 수단의 출력값 중 좌표축의 x값을 나타내는 값을 저장하기 위한 제 3 저장 수단;
    상기 저장 수단의 출력값 중 좌표축의 y값을 나타내는 값을 저장하기 위한 제 4 저장 수단;
    외부의 데이터 버스로부터 타원곡선 상수값을 입력받아 저장하기 위한 제 5저장 수단;
    덧셈, 곱셈, 역승산의 기본 연산을 수행하기 위한 다항 연산 수단;
    상기 다항 연산 수단의 출력값 중 좌표축의 x값을 나타내는 값을 저장하기 위한 제 6 저장 수단;
    상기 다항 연산 수단의 출력값 중 좌표축의 y값을 나타내는 값을 저장하기 위한 제 7 저장 수단;
    상기 제 1 저장 수단 내지 상기 제 7 저장 수단의 데이터 값을 전달하기 위한 내부 데이터 전송 수단; 및
    상기 타원곡선 암호 제어 수단의 제어에 따라 상기 다항 연산 수단을 제어하기 위한 연산 제어 수단
    을 포함하는 타원곡선 암호화 장치.
  7. 제 3 항 또는 제 6 항에 있어서,
    상기 다항 연산 수단은,
    상기 내부 데이터 전송 수단으로부터 데이터를 입력받아 상기 연산 제어 수단의 제어에 따라 역승산 연산을 수행하기 위한 다항 역승산 수단;
    상기 내부 데이터 전송 수단과 외부 테이터 버스로부터 데이터를 입력받아 상기 연산 제어 수단의 제어에 따라 곱셈 또는 덧셈 연산을 수행하기 위한 다항 곱셈 수단; 및
    상기 연산 제어 수단의 제어에 따라 상기 다항 역승산 수단 또는 상기 다항 곱셈 수단의 출력값 중 하나를 선택하여 출력하기 위한 제 1 및 제 2 다중화 수단
    을 포함하는 타원곡선 암호화 장치.
  8. 제 7 항에 있어서,
    상기 다항 곱셈 수단은,
    상기 내부 데이터 전송 수단으로부터 입력받은 데이터를 저장하기 위한 제 11 및 제 12 저장 수단;
    상기 외부 데이터 버스로부터 최소다항식값을 전달받아 저장하기 위한 제 13 저장 수단;
    상기 제 11 및 제 12 저장 수단으로부터 데이터를 전달받아 상기 전달받은 두 데이터에 대해 논리합 연산을 수행하여 출력하기 위한 논리합 연산 수단;
    상기 논리합 연산 수단을 통한 출력 값과 중간 연산 값을 더하는 제 1 다항 덧셈 수단;
    상기 제 11 저장 수단의 출력 값과 상기 제 1 다항 덧셈 수단의 출력값 중 하나를 선택하기 위한 제 3 다중화 수단;
    상기 제 12 저장 수단의 출력값과 상기 제 13 저장 수단의 출력값 중 하나를 선택하기 위한 제 4 다중화 수단;
    상기 제 3 및 제 4 다중화 수단의 출력값을 입력받아 덧셈 연산을 수행하기위한 제 2 다항 덧셈 수단;
    상기 제 2 다항 덧셈 수단의 출력값을 저장하고 그 출력값을 상기 제 1 다항 덧셈 수단에 전달하기 위한 제 14 저장 수단; 및
    상기 연산 제어 수단의 제어에 따라 상기 제 11 및 제 12 저장 수단과 상기 제 3 및 제 4 다중화 수단을 제어하여 곱셈 또는 덧셈 연산이 수행되도록 하기 위한 곱셈 제어 수단
    을 포함하는 타원곡선 암호화 장치.
  9. 제 8 항에 있어서,
    상기 곱셈 제어 수단은,
    상기 연산 제어 수단의 제어에 따라 곱셈 연산인 경우에는 상기 제 3 다중화 수단으로부터 상기 제 1 다항 덧셈 수단의 출력값이 선택되도록 하고, 상기 제 4 다중화 수단에서는 상기 제 13 저장 수단의 출력값이 선택되도록 제어하는 것을 특징으로 하는 타원곡선 암호화 장치.
  10. 제 8 항에 있어서,
    상기 곱셈 제어 수단은,
    상기 연산 제어 수단의 제어에 따라 덧셈 연산인 경우에는 상기 제 3 다중화수단으로부터 상기 제 11 저장 수단의 출력값이 선택되도록 하고, 상기 제 4 다중화 수단에서는 상기 제 12 저장 수단의 출력값이 선택되도록 제어하는 것을 특징으로 하는 타원곡선 암호화 장치.
  11. 제 7 항에 있어서,
    상기 다항 역승산 수단은,
    상기 내부 데이터 전송 수단으로부터의 입력값을 전달받아 저장하기 위한 제 11 저장 수단;
    상기 다항 곱셈 수단으로부터 최소다항식값을 전달받아 저장하기 위한 제 12 저장 수단;
    상기 제 11 저장 수단 및 상기 제 12 저장 수단의 값을 더하기 위한 제 1 다항 덧셈 수단;
    상기 내부 데이터 전송 수단으로부터의 입력값과 상기 다항 곱셈 수단으로부터의 최소다항식값을 전달받아 상기 제 11 및 제 12 저장 수단의 차수를 비교하기 위한 차수 비교 수단;
    상기 제 11 저장 수단의 값을 한자리씩 쉬프트시켜 저장하기 위한 제 13 저장 수단;
    상기 제 13 저장 수단에 저장을 위해 상기 제 11 저장 수단의 값을 한자리씩 쉬프트할 때마다 값을 1씩 증가시켜 지수 값을 저장하기 위한 제 14 저장 수단;
    상기 다항 곱셈 수단으로부터 최소다항식값을 전달받아 상기 최소다항식값을 더하여 출력하기 위한 최소 다항 덧셈 수단;
    상기 차수 비교 수단의 결과에 의해 현재 저장 값에 상기 제 13 저장 수단의 저장된 값을 더하여 저장하기 위한 제 15 저장 수단;
    상기 제 13 저장 수단의 값과 상기 제 15 저장 수단의 값을 더하여 상기 제 15 저장 수단에 전달하기 위한 제 2 다항 덧셈 수단; 및
    상기 제 11 내지 제 15 저장 수단 및 상기 차수 비교 수단을 제어하고 역승산 동작 완료 시에 상위 제어 수단에 동작 완료 신호를 전달하기 위한 역승산 제어 수단
    을 포함하는 타원곡선 암호화 장치.
  12. 제 11 항에 있어서,
    상기 역승산 제어 수단은,
    상기 차수 비교 수단의 차수 비교 결과, 상기 제 11 저장 수단의 차수보다 상기 제 12 저장 수단의 차수가 높으면 상기 제 11 저장 수단과 상기 제 12 저장 수단의 값을 바꾸고, 상기 제 13 저장 수단과 상기 제 15 저장 수단의 값을 바꾸는 것을 특징으로 하는 타원곡선 암호화 장치.
  13. 제 11 항에 있어서,
    상기 역승산 제어 수단은,
    상기 제 11 저장 수단의 마지막 비트 값을 확인하여 그 값이 0이면 상기 제 11 저장 수단을 오른쪽으로 쉬프트시키고 상기 제 12 저장 수단을 왼쪽으로 쉬프트시키며 상기 제 14 저장 수단의 값을 1씩 증가시키는 제 1 과정;
    상기 제 11 저장 수단의 마지막 비트 값이 1이면 상기 차수 비교 수단에 의해 상기 제 11 저장 수단의 차수와 상기 제 12 저장 수단의 차수를 비교하는 제 2 과정;
    상기 제 2 과정의 비교 결과, 상기 제 11 저장 수단의 차수보다 상기 제 12 저장 수단의 차수가 높으면, 상기 제 11 저장 수단과 상기 제 12 저장 수단의 값을 바꾸고, 상기 제 13 저장 수단과 상기 제 15 저장 수단의 값을 바꾸는 제 3 과정;
    상기 제 2 과정의 비교 결과, 상기 제 12 저장 수단의 차수보다 상기 제 11 저장 수단의 차수가 높으면, 상기 제 11 저장 수단의 다음 값을 현재의 제 11 저장 수단의 값과 상기 제 12 저장 수단의 값을 더하는 것으로 하고, 상기 제 15 저장 수단의 다음 값을 현재의 제 15 저장 수단의 값과 상기 제 13 저장 수단의 값을 더하는 것으로 하는 제 4 과정;
    상기 제 11 저장 수단의 값이 1인 경우, 상기 제 15 저장 수단의 마지막 비트 값을 확인하여 상기 값이 0이면 오른쪽으로 쉬프트시키고, 1이면 최소 다항식만큼 더해서 왼쪽으로 쉬프트시키는 제 5 과정; 및
    상기 5 과정의 동작을 상기 제 14 저장 수단의 값만큼 반복하는 제 6 과정
    를 포함하는 동작을 수행하는 것을 특징으로 하는 타원곡선 암호화 장치.
KR10-2001-0034306A 2001-06-18 2001-06-18 타원곡선 암호화 장치 KR100399048B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0034306A KR100399048B1 (ko) 2001-06-18 2001-06-18 타원곡선 암호화 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0034306A KR100399048B1 (ko) 2001-06-18 2001-06-18 타원곡선 암호화 장치

Publications (2)

Publication Number Publication Date
KR20020095937A KR20020095937A (ko) 2002-12-28
KR100399048B1 true KR100399048B1 (ko) 2003-09-26

Family

ID=27709669

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0034306A KR100399048B1 (ko) 2001-06-18 2001-06-18 타원곡선 암호화 장치

Country Status (1)

Country Link
KR (1) KR100399048B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756506A (ja) * 1993-08-11 1995-03-03 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線に基づく暗号の鍵生成装置
US5948051A (en) * 1996-01-15 1999-09-07 Sgs-Thomson Microelectronics S.A. Device improving the processing speed of a modular arithmetic coprocessor
JPH11288215A (ja) * 1998-01-28 1999-10-19 Hitachi Ltd Icカ―ド
US6141420A (en) * 1994-07-29 2000-10-31 Certicom Corp. Elliptic curve encryption systems
KR20020054202A (ko) * 2000-12-27 2002-07-06 오길록 유한체내에서 다단 구조의 역수 계산 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756506A (ja) * 1993-08-11 1995-03-03 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線に基づく暗号の鍵生成装置
US6141420A (en) * 1994-07-29 2000-10-31 Certicom Corp. Elliptic curve encryption systems
US5948051A (en) * 1996-01-15 1999-09-07 Sgs-Thomson Microelectronics S.A. Device improving the processing speed of a modular arithmetic coprocessor
JPH11288215A (ja) * 1998-01-28 1999-10-19 Hitachi Ltd Icカ―ド
KR20020054202A (ko) * 2000-12-27 2002-07-06 오길록 유한체내에서 다단 구조의 역수 계산 장치

Also Published As

Publication number Publication date
KR20020095937A (ko) 2002-12-28

Similar Documents

Publication Publication Date Title
US6434585B2 (en) Computationally efficient modular multiplication method and apparatus
US5742530A (en) Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
EP1248409B1 (en) Attack-resistant cryptographic method and apparatus
US6182104B1 (en) Circuit and method of modulo multiplication
US20110161390A1 (en) Modular multiplication processing apparatus
EP1808762B1 (en) Encryption processing apparatus, encryption processing method, and computer program
CN100583757C (zh) 一种ecc\rsa加解密协处理器
Hutter et al. A cryptographic processor for low-resource devices: Canning ECDSA and AES like sardines
US20120057695A1 (en) Circuits for modular arithmetic based on the complementation of continued fractions
US20060222175A1 (en) Computation method, computing device and computer program
Rankine Thomas—a complete single chip RSA device
US8458492B2 (en) Crypto-engine for cryptographic processing of data
KR100436814B1 (ko) 아이씨카드용 알에스에이 암호 연산 장치
EP1445891A1 (en) Elliptic curve scalar multiple calculation method and device, and storage medium
CN114579078A (zh) 一种加速器、加速方法和电子设备
US7912886B2 (en) Configurable exponent FIFO
KR100453230B1 (ko) 초타원곡선 암호화 프로세싱 장치
KR100416291B1 (ko) 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법
EP1818810B1 (en) Circuit and method for multiplying long integer values
KR100399048B1 (ko) 타원곡선 암호화 장치
US20080263115A1 (en) Very long arithmetic logic unit for security processor
KR100498754B1 (ko) 소수체를 기반으로 하는 공개키 암호장치
KR100423810B1 (ko) 타원곡선 암호화 장치
KR20020086005A (ko) 타원곡선 암호 시스템을 위한 역원 연산기
JP5179933B2 (ja) データ処理装置

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: 20090901

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee