KR100502071B1 - High-performance elliptic curve crypto processor - Google Patents

High-performance elliptic curve crypto processor Download PDF

Info

Publication number
KR100502071B1
KR100502071B1 KR10-2002-0080285A KR20020080285A KR100502071B1 KR 100502071 B1 KR100502071 B1 KR 100502071B1 KR 20020080285 A KR20020080285 A KR 20020080285A KR 100502071 B1 KR100502071 B1 KR 100502071B1
Authority
KR
South Korea
Prior art keywords
elliptic curve
input
scalar multiplication
storing
coordinate
Prior art date
Application number
KR10-2002-0080285A
Other languages
Korean (ko)
Other versions
KR20040053833A (en
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-0080285A priority Critical patent/KR100502071B1/en
Publication of KR20040053833A publication Critical patent/KR20040053833A/en
Application granted granted Critical
Publication of KR100502071B1 publication Critical patent/KR100502071B1/en

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
    • 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

Landscapes

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

Abstract

본 발명은 고성능 타원곡선 암호화 장치 구현에 관한 것으로, 본 발명의 타원곡선 암호화 장치는 타원곡선의 스칼라 곱셈 연산인 kP 연산을 수행한다. 이때, k는 곱셈 상수 값으로 타원곡선 차수(order)보다 작은 임의의 정수값이며, P는 타원곡선 위의 임의의 점, 또는 타원곡선 기저점이다. 즉, 본 발명은 고성능 타원곡선 암호화 장치에 있어 프로젝티브 좌표계에서의 타원곡선 연산 기법과 윈도우 연산 기법을 최적화하며, 또한 기저점의 스칼라 곱셈 연산과 임의의 좌표의 스칼라 곱셈 연산이 모두 효율적으로 수행될 수 있도록 하여 타원곡선 암호 처리의 주된 연산인 스칼라 곱셈 연산을 고속으로 처리 가능하도록 함으로써, 타원곡선 스칼라 곱셈 연산에 대하여 빠른 처리 능력을 보장하며, 이를 통하여 타원곡선 암호 프로토콜이 사용되는 서버 시스템에서 보조 연산 장치로 사용하여 전체 시스템 처리 성능을 향상시킬 수 있는 이점이 있다. 또한 타원곡선 암호화 장치에서 하드웨어 자원을 효율적으로 사용할 수 있게 되어 높은 성능을 얻을 수 있으며, 여러 타원곡선 암호 시스템으로 확장이 용이하게 되는 이점이 있다. The present invention relates to a high performance elliptic curve encryption device implementation. The elliptic curve encryption device of the present invention performs a kP operation, which is a scalar multiplication operation of an elliptic curve. Where k is a multiplying constant value and is an arbitrary integer smaller than the order of the elliptic curve, and P is an arbitrary point on the elliptic curve, or an elliptic curve base point. That is, the present invention optimizes the elliptic curve calculation method and the window operation method in the projected coordinate system in the high performance elliptic curve encryption device, and also the scalar multiplication operation of the base point and the scalar multiplication operation of the arbitrary coordinates can be efficiently performed. By enabling fast processing of scalar multiplication operation, which is the main operation of elliptic curve cryptography, it guarantees fast processing ability for elliptic curve scalar multiplication operation. The advantage of using it as a device is to improve the overall system processing performance. In addition, it is possible to efficiently use hardware resources in an elliptic curve encryption device, thereby obtaining high performance, and it is advantageous to be easily extended to various elliptic curve encryption systems.

Description

고성능 타원곡선 암호화 장치{HIGH-PERFORMANCE ELLIPTIC CURVE CRYPTO PROCESSOR}High-performance elliptic curve encryption device {HIGH-PERFORMANCE ELLIPTIC CURVE CRYPTO PROCESSOR}

본 발명은 타원곡선 암호화 장치에 관한 것으로, 특히 프로젝티브(Projective) 좌표계에서의 타원곡선 연산 기법과 윈도우(Window) 연산 기법을 최적화하며, 또한 기저점의 스칼라 곱셈 연산과 임의의 좌표의 스칼라 곱셈 연산이 모두 효율적으로 수행될 수 있도록 하는 고성능 타원곡선 암호화 장치에 관한 것이다.The present invention relates to an elliptic curve encryption device, and in particular, to optimize an elliptic curve calculation method and a window calculation method in a projective coordinate system, and also to perform a scalar multiplication operation of a base point and a scalar multiplication operation of an arbitrary coordinate. All of these relates to a high performance elliptic curve encryption device that can be efficiently performed.

일반적으로, 암호 시스템은 크게 비밀키 암호 시스템과 공개키 암호 시스템으로 구분되어진다. 비밀키 암호 시스템은 비밀 채널로 공유된 비밀키를 가지고 상호간의 암호 통신을 하는 방식으로 송, 수신자가 동일한 키에 의하여 암호화 및 복호화 과정을 수행하므로, 키를 안전하게 전송하고 보관함에 어려움이 있다. 이와 같은 키 분배 어려움을 해결한 것이 공개키 암호 알고리즘이다. 공개키 암호는 암호화하는 키와 복호화하는 키가 서로 다른 암호 시스템으로 암호 통신을 원하는 상대의 공개키를 받아서 암호화하여 전송하면 수신측은 자신만의 개인키를 가지고 암호문을 복호화 할 수 있다. 공개키 암호 알고리즘은 키 분배의 문제점을 해결함과 동시의 전자서명의 기능을 제공한다. 하지만 공개키 암호 알고리즘은 암,복호화의 연산량이 매우 큰 단점을 가지고 있기 때문에 데이터 암호화보다는 비밀키 분배나 전자서명 혹은 인증이 필요한 응용에 사용되고 있다. In general, the cryptographic system is largely divided into a secret key cryptosystem and a public key cryptosystem. The secret key cryptosystem has a secret key shared by a secret channel, so that the sender and receiver perform encryption and decryption by the same key in a manner of mutually encrypted communication with each other, thus making it difficult to securely transmit and store the key. The public key cryptographic algorithm solves such a problem of key distribution. In public key cryptography, a cipher system having a different encryption key and a decryption key receives a public key of a counterpart who wants encryption communication, encrypts it, and transmits it. The receiving side can decrypt the cipher text with its own private key. The public key cryptographic algorithm solves the problem of key distribution and provides the function of simultaneous digital signature. However, the public key cryptography algorithm has a disadvantage in that the computation amount of encryption and decryption is very large. Therefore, the public key cryptography algorithm is used for applications requiring secret key distribution, digital signature, or authentication rather than data encryption.

대표적인 공개키 암호 시스템으로 RSA를 들 수 있다. RSA는 현재 가장 많이 사용되고 있는 공개키 암호 시스템이지만, 충분한 안전성을 위하여 큰 비트의 키를 사용하여야 한다는 단점이 있다. 키 길이가 커진다는 말은 그 만큼 필요한 연산 시간과 연산을 위하여 많은 자원이 필요함을 의미한다. A representative public key cryptosystem is RSA. RSA is the most commonly used public key cryptosystem, but has a disadvantage of using a large bit of key for sufficient security. Increasing the key length means that much computation time and resources are required.

이에 반해 타원곡선 암호 시스템은 타원곡선 상의 이산대수 문제에 안전성의 근간을 두고 있어, 짧은 길이의 키 값으로 높은 안전성을 보장한다. 짧은 길이의 키 값을 사용한다는 것은 그 만큼 연산에 필요한 자원이 적어짐을 의미한다. 실제로 타원곡선 암호 시스템은 소프트웨어 구현으로도 높은 성능을 얻을 수 있으며, 많은 시스템에서 이러한 소프트웨어 구현으로 타원곡선 암호 시스템을 구현하고 있다. 하지만, 서버급 시스템의 경우 처리하여야 하는 데이터가 많기 때문에 암호 처리에 많은 어려움이 있으며, 이러한 시스템에서의 암호 처리는 별도의 고속 하드웨어 장치가 필요한 문제점이 있었다. On the other hand, the elliptic curve cryptographic system is based on the safety of discrete algebra on the elliptic curve, which guarantees high security with short key length. Using a short key value means that less resources are needed for the operation. In fact, an elliptic curve cryptographic system can achieve high performance even with a software implementation, and many systems implement an elliptic curve cryptographic system with this software implementation. However, in the case of a server-class system, there is a lot of difficulty in the encryption process because there is a lot of data to be processed, the encryption process in such a system has a problem that requires a separate high-speed hardware device.

따라서, 본 발명의 목적은 타원곡선 암호화 장치에 있어서, 프로젝티브 좌표계에서의 타원곡선 연산 기법과 원도우 연산 기법을 최적화하며, 또한 기저점의 스칼라 곱셈 연산과 임의의 좌표의 스칼라 곱셈 연산이 모두 효율적으로 수행될 수 있도록 하여 타원곡선 암호 처리의 주된 연산인 스칼라 곱셈 연산을 고속으로 처리 가능하도록 함으로써, 타원곡선 스칼라 곱셈 연산에 대하여 빠른 처리 능력을 보장하며, 이를 통하여 타원곡선 암호 프로토콜이 사용되는 서버 시스템에서 보조 연산 장치로 사용하여 전체 시스템 처리 성능을 향상시킬 수 있는 고성능 타원곡선 암호화 장치를 제공함에 있다.Accordingly, it is an object of the present invention to optimize an elliptic curve calculation method and a window calculation method in an elliptic curve encryption device, and to efficiently perform both a scalar multiplication operation of a base point and a scalar multiplication operation of an arbitrary coordinate. By enabling it to be performed, the scalar multiplication operation, which is the main operation of the elliptic curve cryptographic processing, can be processed at high speed, thereby ensuring fast processing ability for the elliptic curve scalar multiplication operation. It is to provide a high performance elliptic curve encryption device that can be used as an auxiliary computing device to improve the overall system processing performance.

상술한 목적을 달성하기 위한 본 발명은 고성능 타원곡선 암호화 장치에 있어서, 곱셈 상수 K 값을 저장하고 고정 기반 콤 방법(fixed base comb method) 스칼라 곱셈 연산과 윈도 방법 스칼라 곱셈 연산에서의 곱셈 상수 출력을 위한 제1저장수단과; 타원곡선 입력 좌표 저장 및 중간 연산 결과, 최종 출력 결과를 저장하기 위한 제2저장수단과; 어파인(affine) 좌표에서 프로젝티브 좌표로의 변환 및 중간 연산 결과를 저장하기 위한 제3저장수단과; 타원곡선 덧셈 연산에 필요한 새로운 좌표값 저장을 위한 제4저장수단과; 유한체 곱셈 연산을 위한 승산 연산 수단과; 유한체 역수 연산을 위한 역수 연산 수단과; 상기 승산 연산 수단과 역승산 연산 수단들을 이용하여 다양한 타원곡선 연산들을 수행하기 위한 부가연산수단과; 상기 저장수단과 연산수단들의 입력을 선택하는 다중화수단과; 상기 모든 블록들이 프로젝티브 좌표계에서의 타원곡선 덧셈 연산과 타원곡선 제곱연산, 고정 기반 콤 방식 스칼라 곱셈 연산, 윈도우 방법 스칼라 곱셈 연산 등을 수행하도록 제어하는 제어수단;을 포함하는 것을 특징으로 한다.In the high performance elliptic curve encryption apparatus, the present invention stores a multiplication constant K value and outputs a multiplication constant output in a fixed base comb method scalar multiplication operation and a window method scalar multiplication operation. First storage means for; Second storage means for storing elliptic curve input coordinates, intermediate calculation results, and final output results; Third storage means for storing transformations from affine coordinates to projected coordinates and intermediate calculation results; Fourth storage means for storing new coordinate values required for the elliptic curve addition operation; Multiplication operation means for a finite field multiplication operation; Reciprocal arithmetic means for finite body reciprocal arithmetic; Additional computation means for performing various elliptic curve operations using the multiplication and inverse multiplication operations; Multiplexing means for selecting an input of said storage means and arithmetic means; And control means for controlling all of the blocks to perform an elliptic curve addition operation, an elliptic curve square operation, a fixed-based comb-based scalar multiplication operation, and a window-based scalar multiplication operation in the projected coordinate system.

이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예의 동작을 상세하게 설명한다.Hereinafter, with reference to the accompanying drawings will be described in detail the operation of the preferred embodiment according to the present invention.

도 1 본 발명의 실시 예에 따른 고성능 타원곡선 암호화 장치의 블록 구성도이다. 상기 도 1을 참조하면, 1 is a block diagram of a high performance elliptic curve encryption apparatus according to an exemplary embodiment of the present invention. Referring to FIG. 1,

본 발명의 고성능 타원곡선 암호화 장치는 곱셈 상수 k값 저장 및 고정 기반 콤 방식(fixed-base comb method) 스칼라 곱셈 연산과 윈도우 방식(window method) 스칼라 곱셈 연산에서의 적절한 곱셈 상수 출력을 위한 K 레지스터(100)와; 타원곡선 입력 x 좌표 저장 및 중간 연산 결과, 최종 x 좌표 출력 결과를 저장하기 위한 X0 레지스터(300)와; X0 레지스터(300)의 입력을 선택하기 위한 다중화기1(800)와; 타원곡선 입력 y 좌표 저장 및 중간 연산 결과, 최종 y 좌표 출력 결과를 저장하기 위한 Y0 레지스터(400)와; Y0 레지스터(400)의 입력을 선택하기 위한 다중화기2(900)와; 입력된 어파인(affine) 좌표 값의 프로젝티브(projective) 좌표로의 변환과 중간 연산 결과 저장을 위한 Z0 레지스터(500)와; Z0 레지스터(500)의 입력을 선택하기 위한 다중화기3(1000)와; 타원곡선 덧셈 연산에 필요한 새로운 x 좌표값 저장을 위한 X1 레지스터(600)와; 타원곡선 덧셈 연산에 필요한 새로운 y 좌표값 저장을 위한 Y1 레지스터(700)와; 유한체 곱셈 연산을 위한 승산기들(2000, 2100, 2200, 2300)과; 승산기들의 입력을 선택하기 위한 다중화기들(1500, 1600, 1700, 1800)과;유한체 역수 연산을 위한 역승산기(2400)와; 역승산기(2400)의 입력을 선택하기 위한 다중화기8(1900)와; 제한된 연산 수단들을 이용해 다양한 연산을 수행하기 위한 기타 연산 블록(1300)과; 미리 수행되어 저장되는 스칼라 곱셈 연산 결과를 저장하기 위한 메모리(1400)와; 이러한 메모리(1400)의 인터페이스를 위한 메모리 인터페이스(200)와; 메모리 입력을 선택하기 위한 다중화기0(1200)와; 그리고 이러한 모든 블록들이 프로젝티브(projective) 좌표계에서의 타원곡선 덧셈 연산과 타원곡선 제곱 연산, 어파인(affine) 좌표계에서의 타원곡선 덧셈 연산과 타원곡선 제곱 연산, 고정 기반 콤 방식(fixed-base comb method) 스칼라 곱셈 연산, 윈도우 방식(window method) 스칼라 곱셈 연산 등을 수행하도록 제어하는 제어기(1100)로 이루어진다. The high performance elliptic curve encryption apparatus of the present invention stores a multiplying constant k value and a K register for outputting an appropriate multiplying constant in a fixed-base comb method scalar multiplication operation and a window method scalar multiplication operation. 100); An X0 register 300 for storing an elliptic curve input x coordinate and intermediate calculation result and a final x coordinate output result; A multiplexer 1 800 for selecting an input of the X0 register 300; A Y0 register 400 for storing an elliptic curve input y coordinate and an intermediate operation result and a final y coordinate output result; A multiplexer 2 900 for selecting an input of the Y0 register 400; A Z0 register 500 for converting input affine coordinate values into projective coordinates and storing intermediate calculation results; A multiplexer 3 (1000) for selecting an input of the Z0 register 500; An X1 register 600 for storing a new x coordinate value required for an elliptic curve addition operation; A Y1 register 700 for storing a new y coordinate value required for an elliptic curve addition operation; Multipliers 2000, 2100, 2200, and 2300 for finite field multiplication operations; Multiplexers 1500, 1600, 1700, and 1800 for selecting inputs of multipliers; inverse multiplier 2400 for finite reciprocal arithmetic; A multiplexer 8900 for selecting an input of the inverse multiplier 2400; Other arithmetic block 1300 for performing various arithmetic using limited arithmetic means; A memory 1400 for storing a scalar multiplication operation result which is previously performed and stored; A memory interface 200 for the interface of the memory 1400; A multiplexer 0 (1200) for selecting a memory input; And all these blocks are elliptic curve addition operation in projective coordinate system, elliptic curve square operation, elliptic curve addition operation in affine coordinate system and elliptic curve square operation, fixed-base comb method. method) consists of a controller 1100 which controls to perform a scalar multiplication operation, a window method scalar multiplication operation, and the like.

상기 도 1의 고성능 타원곡선 암호화 장치는 기저점의 스칼라 곱셈 연산에 대해서는 아래의 [표 1]에서와 같은 고정 기반 콤 방식(fixed-based comb method) 스칼라 곱셈 연산 기법과 프로젝티브(projective) 좌표계에서의 연산 기법으로 구현된다.The high-performance elliptic curve encryption apparatus of FIG. 1 is based on a scalar multiplication operation and a projected coordinate system of a fixed-based comb method as shown in Table 1 below. It is implemented by the operation technique of.

[표 1]TABLE 1

[알고리즘 1] Fixed-base comb method 스칼라 곱셈 연산 기법[Algorithm 1] Fixed-base comb method scalar multiplication 입력 : Window width w, d =, k = (kt-1,.., k1, k0)2, P∈E(F2 m).출력 : kP.1. 선행연산. 모든 (aw-1,..., a1, a0)∈Z2 m에 대하여 [aw-1,.., a1, a0]P 계산,단, [aw-1,.., a1, a0]P = aw-12(w-1)dP +...+ a222dP + a121dP + a0 P.2. k를 Kw-1 ||...|| K1 ||K0로 분리(필요한 경우 상위에 '0'을 추가),단, Kj 는 비트 길이가 d이며, Ki j 는 Kj의 I번째 비트를 뜻함.3. Q ← 0.4. For i for d-1 down to 0 do4.1 Q ← 2Q.4.2 Q ← Q + [Ki w-1 ,...., Ki 1 , Ki 0]P.5. Return(Q).Input: Window width w, d =, k = (kt-1, .., kOne, k0)2, P∈E (F2 mOutput: kP.1. Preceding operation. All (aw-1, ..., aOne, a0) ∈Z2 mAbout [aw-1, .., aOne, a0] P calculation, except for [aw-1, .., aOne, a0] P = aw-12(w-1) dP + ... + a222dP + aOne21dP + a0 P.2. k to kw-1 || ... || KOne || K0Separated by (add '0' to parent if necessary), but Kj Is a bit length d, Ki j KjIt means the I's bit of 3. Q ← 0.4. For i for d-1 down to 0 do4.1 Q ← 2Q.4.2 Q ← Q + [Ki w-1 , ...., Ki One , Ki 0] P.5. Return (Q).

상기 [표 1]의 알고리즘에서 단계1은 단계 4.2의 [Ki w-1 ,...., Ki 1 , Ki 0]P 연산에 필요한 모든 값들을 미리 계산하는 단계로, 여기서 계산된 결과는 상기 도 1의 메모리(1400) 저장된다.In the algorithm of [Table 1], step 1 is a step of pre-calculating all the values necessary for [K i w-1 , ...., K i 1 , K i 0 ] P operation of step 4.2, The result is stored in the memory 1400 of FIG.

도 2는 상기 도 1의 메모리 구조 일예를 도시한 것이다. 상기 도 2를 참조하면, 메모리(1400)는 2t의 폭을 가지는 입출력 데이터 버스를 가지며, 2W+1의 데이터 깊이를 가진다. 이와 같은 구조의 메모리(1400)는 x 좌표값과 y 좌표값을 한번에 저장하고 출력할 수 있어서 타원곡선 연산에 효율적이다. 이때 상기 도 2와 같은 메모리(1400)는 데이터 폭이 매우 크기 때문에 하나의 메모리로 구현되지 않을 수도 있는데 이와 같은 경우 도 3과 같이 데이터 폭이 작은 메모리들(1401,1402,1403)을 이용하여 데이터 폭이 큰 메모리 블록을 구성할 수 있다.FIG. 2 illustrates an example of the memory structure of FIG. 1. Referring to FIG. 2, the memory 1400 has an input / output data bus having a width of 2t and a data depth of 2 W + 1 . The memory 1400 having such a structure can store and output the x coordinate value and the y coordinate value at one time, which is efficient for elliptic curve calculation. In this case, the memory 1400 as shown in FIG. 2 may not be implemented as a single memory because the data width is very large. In this case, data using the memories 1401, 1402 and 1403 having a small data width as shown in FIG. It is possible to configure a large memory block.

단계 1에서 미리 계산된 결과는 시스템 버스(data, addr, wen)를 통하여 메모리에 저장되며, 이때 시스템 버스와 메모리 버스와의 인터페이스는 메모리 인터페이스 블록(200)에서 처리된다. The result calculated in step 1 is stored in the memory through the system bus (data, addr, wen), and the interface between the system bus and the memory bus is processed in the memory interface block 200.

도 4는 상기 도 1의 메모리 인터페이스의 상세 블록 구성도이다. 상기 메모리 인터페이스 블록(200)은 시스템 버스로부터 전송되는 데이터를 메모리 버스의 데이터 폭 단위로 저장하기 위한 레지스터들(202,203,204)과, 시스템 버스로부터의 어드레스와 제어신호를 메모리 버스의 어드레스와 제어신호로 변환하는 메모리 제어기(201)로 구성된다. 메모리 제어기(201)는 모든 레지스터들(202,203,204)에 데이터가 저장되면, 이를 다시 메모리에 저장하기 위한 어드레스와 제어신호를 발생한다. 4 is a detailed block diagram illustrating the memory interface of FIG. 1. The memory interface block 200 converts registers 202, 203, and 204 for storing data transmitted from the system bus in units of data width of the memory bus, and converts addresses and control signals from the system bus into addresses and control signals of the memory bus. Memory controller 201. When data is stored in all the registers 202, 203, and 204, the memory controller 201 generates an address and a control signal for storing the data again in the memory.

상기 [표 1]의 알고리즘1에서 단계 2와 단계 4를 위한 스칼라 곱셈 상수값 연산은 상기 도 1의 K 레지스터(100)에서 수행된다. K 레지스터(100)는 쉬프트 레지스터 구성되며, 시스템 버스로부터의 전송되는 곱셈 상수값을 저장하고, 알고리즘 수행에 따라 적절한 비트를 출력하는 동작을 한다. In the algorithm 1 of Table 1, a scalar multiplication constant value calculation for steps 2 and 4 is performed in the K register 100 of FIG. K register 100 is configured as a shift register, and stores the multiplication constant value transmitted from the system bus, and operates to output the appropriate bit in accordance with the algorithm performance.

도 5는 상기 도 1의 K 레지스터에서의 동작 개념을 도시한 것으로, 특히 163 비트 타원곡선에 대하여 상기 [표 1]의 알고리즘에서 window width를 4로 하는 경우 K 레지스터의 동작 예를 도시한 것이다.FIG. 5 illustrates an operation concept of the K register of FIG. 1. In particular, FIG. 1 illustrates an operation example of the K register when the window width is 4 in the algorithm of Table 1 with respect to the 163 bit elliptic curve.

상기 도 5에서 보는 바와 같이 최상위 비트로부터 41비트씩 떨어진 4비트를 출력하고, 전체 레지스터를 한 비트씩 쉬프트 하는 동작을 수행하며, 이러한 동작을 상기 [표 1]에 도시된 알고리즘의 단계 4가 반복될 때마다 반복한다. As shown in FIG. 5, four bits are output 41 bits away from the most significant bit, and the entire register is shifted by one bit. This operation is repeated by step 4 of the algorithm shown in [Table 1]. Repeat each time.

상기 알고리즘의 단계 4.1에서의 타원곡선 제곱 연산(2Q)과 타원곡선 덧셈 연산(Q + P)은 시스템 성능을 높이기 위하여 프로젝티브(projective) 좌표계에서의 제곱 연산과 덧셈 연산으로 구현된다. 이때, 초기 스칼라 곱셈 연산을 위하여 입력되는 값은 어파인(affine) 좌표계의 값이기 때문에 이를 프로젝티브(projective) 좌표계의 값으로 변환하여야 한다. 이러한 좌표변환은 아래의 [수학식 1]에서와 같은 수식으로 이루어지며, 이러한 동작은 암호화 장치의 X0 레지스터(300)와 Y0 레지스터(400)에 x와 y 좌표값을 입력할 때 Z0 레지스터(500)에 '1'을 저장함으로써 수행된다. The elliptic curve square operation (2Q) and the elliptic curve addition operation (Q + P) in step 4.1 of the algorithm are implemented by the square operation and the addition operation in the projected coordinate system to improve the system performance. In this case, since an input value for the initial scalar multiplication operation is a value of an affine coordinate system, it must be converted into a value of a projective coordinate system. This coordinate transformation is performed by the equation as shown in [Equation 1] below. This operation is performed by inputting the x and y coordinate values to the X0 register 300 and the Y0 register 400 of the encryption device. Is performed by storing '1'.

상기와 같이 좌표 변환 후, 타원곡선 제곱 연산과 타원곡선 덧셈 연산은 아래의 [수학식 2]와 [수학식 3]에서와 같은 수식으로 이루어진다.(단 a, b는 타원곡선 파라미터임.)After the coordinate transformation as described above, the elliptic curve square operation and the elliptic curve addition operation are performed by the following equations as shown in [Equation 2] and [Equation 3] (where a and b are elliptic curve parameters).

상기 도 1의 타원곡선 암호화 장치는 기저점에 대한 스칼라 곱셈 연산을 위하여 상기 [표 1]에 도시된 알고리즘을 수행하면서 위와 같은 타원곡선 제곱 연산과 타원곡선 덧셈 연산을 4개의 승산기(2000, 2100, 2200, 2300)와 역승산기(2400)를 반복적으로 사용하여 구현한다. The elliptic curve encryption apparatus of FIG. 1 performs four algorithms of the elliptic curve square operation and the elliptic curve addition operation while performing the algorithm shown in [Table 1] for the scalar multiplication operation of the base point. 2200 and 2300 and inverse multiplier 2400 are implemented repeatedly.

도 6은 상기 도 1의 4개의 승산기들을 반복 사용하여 상기 [수학식 2]의 타원곡선 제곱 연산을 구현한 일 실시 예를 도시한 것이다. FIG. 6 illustrates an embodiment of implementing the elliptic curve square operation of Equation 2 by repeatedly using the four multipliers of FIG. 1.

상기 도 6에서 보여지는 바와 같이 프로젝티브(projective) 좌표의 타원곡선 제곱 연산은 연산되어지는 값 저장과 최종 결과값 저장을 위한 X0 레지스터(300), Y0 레지스터(400), Z0 레지스터(500)와, 승산 연산을 위한 승산기(2000, 2100, 2200, 2300), 타원곡선의 파라미터 값 저장을 위한 a 레지스터(1301), b 레지스터(1302), 그리고, 각 레지스터와 연산기들 사이의 유한체 덧셈 연산과 덧셈기(1308, 1309, 1310, 1311)와 유한체 제곱 연산을 위한 제곱승기(1303, 1304, 1305, 1306, 1307)로 구성되며, 이때 상기 a 레지스터(1301), b 레지스터(1302), 유한체 덧셈기와 유한체 제곱승기등은 상기 도1의 기타 연산 블록(1300)내에서 간단한 로직으로 구현된다. As shown in FIG. 6, the elliptic curve square operation of the projected coordinates is performed by the X0 register 300, the Y0 register 400, and the Z0 register 500 for storing the calculated value and the final result value. Multipliers (2000, 2100, 2200, 2300) for multiplication operations, a register (1301), b register (1302) for storing parameter values of an elliptic curve, and finite field addition operations between registers and operators. Adders 1308, 1309, 1310, and 1311 and square multipliers 1303, 1304, 1305, 1306, and 1307 for finite field square operations, wherein the a registers 1301, b registers 1302, and finite bodies Adders, finite square multipliers, and the like are implemented with simple logic in the other operation block 1300 of FIG.

상기 도 6에서의 타원곡선 제곱 연산을 상기 [수학식 2]와 비교하여 자세히 살펴보면, X0 레지스터(300), Y0 레지스터(400), Z0 레지스터(500)의 각 출력을 제곱승기들(1303, 1304, 1305, 1306, 1307)에서 유한체 제곱연산을 수행한 후 승산 연산을 수행하면, 단계 1(S600)의 승산기2(2200)의 연산 결과는 Z2가 되며, 승산기 3(2300)의 연산 결과는 b * Z0 4가 된다. 단계 1(S600)의 승산기3(2300)의 결과는 단계 1(S600)의 제곱승기(1306)의 결과인 X0 4와 덧셈기(1308)에서 유한체 덧셈 연산 되어 X2가 되며, 덧셈기(1309)에서는 Y0 2 + b * Z0 4가 연산된다. 또한 단계2의 승산기2(2200)에서는 a * Z2가 계산되고, 승산기0(2000)에서는 b * Z0 4 * Z 2가 계산된다. 마지막 단계 3의 덧셈기(1310)에서는 a * Z2 + Y0 2 + b * Z0 4가 계산되고, 이를 단계2(S602)의 덧셈기(1308)의 결과와 승산기1(2100)에서 승산 연산을 수행하면 X2 * (a * Z2 + Y0 2 + b * Z0 4)가 계산되며, 이를 단계 2(S602)의 승산기0(2000)의 결과와 유한체 덧셈 연산을 수행하여 Y2가 연산 된다. 연산 결과인 X2, Y2, Z2는 다시 각각 X0 레지스터(300), Y0 레지스터(400), Z0 레지스터(500)에 저장된다.Looking at the elliptic curve square operation in FIG. 6 in detail with respect to Equation 2, the outputs of the X0 register 300, the Y0 register 400, and the Z0 register 500 are square multipliers 1303 and 1304. If the multiplication operation is performed after the finite field square operation is performed at 1305, 1306, and 1307, the operation result of the multiplier 2 (2200) in step 1 (S600) becomes Z 2 , and the operation result of the multiplier 3 (2300). Becomes b * Z 0 4 . The result of multiplier 3 (2300) of step 1 (S600) is X 0 4 , which is the result of the square multiplier 1306 of step 1 (S600), and the adder 1308 is a finite field addition operation that results in X 2 , and adder 1309. ), Y 0 2 + b * Z 0 4 is calculated. In addition, a * Z 2 is calculated in the multiplier 2 (2200) of step 2, and b * Z 0 4 * Z 2 is calculated in the multiplier 0 (2000). In the adder 1310 of the last step 3, a * Z 2 + Y 0 2 + b * Z 0 4 is calculated, and the result of the adder 1308 of step 2 (S602) is multiplied by the multiplier 1 (2100). X 2 * (a * Z 2 + Y 0 2 + b * Z 0 4 ) is calculated, and the result of multiplier 0 (2000) of step 2 (S602) is performed and a finite addition operation is performed to obtain Y 2 . It is calculated. The calculation results X 2 , Y 2 , and Z 2 are again stored in the X0 register 300, the Y0 register 400, and the Z0 register 500, respectively.

도 7은 상기 도 1의 4개의 승산기들을 반복 사용하여 상기 [수학식 3]의 타원곡선 덧셈 연산을 구현한 일 실시예를 도시한 것이다.FIG. 7 illustrates an embodiment of implementing the elliptic curve addition operation of Equation 3 by repeatedly using the four multipliers of FIG. 1.

상기 도 7에서 보여지는 바와 같이 projective 좌표의 타원곡선 덧셈 연산은 연산 되어지는 값 저장과 최종 결과값 저장을 위한 X0 레지스터(300), Y0 레지스터(400), Z0 레지스터(500)와, 타원곡선 덧셈 연산이 수행될 새로운 좌표값 저장을 위한 X1 레지스터(600), Y1 레지스터(700)와, 승산 연산을 위한 승산기(2000, 2100, 2200, 2300), 타원곡선의 파라미터 값 저장을 위한 a 레지스터(1301), 그리고, 각 레지스터와 연산기들 사이의 유한체 덧셈 연산을 위한 덧셈기(1312, 1313, 1317, 1318, 1319, 1320, 1321, 1322)와 유한체 제곱 연산을 위한 제곱승기(1305, 1314, 1315, 1316)로 구성된다. As shown in FIG. 7, the elliptic curve addition operation of the projective coordinate is performed by the X0 register 300, the Y0 register 400, the Z0 register 500, and the elliptic curve addition for storing the calculated value and the final result value. X1 register 600, Y1 register 700 for storing the new coordinate value to be performed, multipliers 2000, 2100, 2200, 2300 for multiplication operation, and a register 1301 for storing parameter values of the elliptic curve. ), And adders (1312, 1313, 1317, 1318, 1319, 1320, 1321, 1322) for finite field addition operations between registers and operators and square multipliers (1305, 1314, 1315) for finite field square operations. 1316).

상기 도 7에서의 타원곡선 덧셈연산을 상기 [수학식 3]과 비교하여 살펴보면, 단계 1(s700)의 승산기 2의 결과는 X1 * Z0가 되고, 승산기 3의 결과는 Y1 * Z0 2 가 된다. 단계 2(s702)의 덧셈기(1312)에서는 수식3의 B 값이 연산되고, 덧셈기(1313)에서는 A 값이 계산된다. 연산된 B 값은 단계 2(s702)의 승산기0(2000)에서 Z0 값과 승산되어 C 값이 계산되고, 승산기 1(2100)에서는 a * Z0 2가 계산된다. 단계 3(s704)의 제곱승기(1316)에서는 C값을 유한체 제곱 연산하여 Z2 값이 계산되고, 덧셈기(1317)에서는 C + aZ02이 계산된다. 이러한 연산 결과와 단계 1(s700)과 단계 2(s702)의 연산 결과를 이용하여 단계 3(s704)의 승산기들에서 연산을 수행하면, 승산기0(2000)의 결과는 E가 되고, 승산기1(2100)의 결과는 D가 된다. 그리고, 승산기 2(2200)의 결과는 X1 * Z2가 되고, 승산기3(2300)의 결과는 Y1 * Z2가 된다. 단계 4(s706)에서 승산기0와 승산기1의 결과를 덧셈기(1318)에서 유한체 덧셈 연산을 수행 후, 단계 2의 제곱승기(1315)에서 연산된 A2과 덧셈 연산을 수행하면 X2값이 얻어진다. X2 값은 단계 3(s704)의 승산기2(2200)와 승산기3(2300)의 결과와 덧셈기(1320, 1321)에서 유한체 덧셈연산이 수행되면, 각각 F와 G값이 연산된다. 이들 결과를 단계 4의 승산기0(2000)에서 승산 연산하면 E * F 가 계산되고, 승산기1(2100)에서는 Z2 * G가 계산된다. 이들 결과를 단계 4(s706)의 덧셈기(1322)에서 유한체 덧셈 연산하면 Y2가 계산된다. 역시 마찬가지로 연산 결과인 X2, Y2, Z2는 다시 각각 X0 레지스터(300), Y0 레지스터(400), Z0 레지스터(500)에 다시 저장된다.Looking at the elliptic curve addition operation in FIG. 7 compared with Equation 3, the result of multiplier 2 in step 1 (s700) is X 1 * Z 0 , and the result of multiplier 3 is Y 1 * Z 0. Becomes 2 In the adder 1312 of step 2 (s702), the B value of Equation 3 is calculated, and the A value is calculated in the adder 1313. The calculated B value is multiplied by the Z 0 value in multiplier 0 (2000) of step 2 (s702) to calculate the C value, and a * Z 0 2 is calculated in multiplier 1 (2100). In step 3 (s704), the square multiplier 1316 calculates the value of Z 2 by finite-square calculation of the C value, and C + aZ0 2 is calculated in the adder 1317. If the operation is performed in the multipliers of step 3 (s704) using the result of the operation and the operation results of steps 1 (s700) and 2 (s702), the result of multiplier 0 (2000) is E, and multiplier 1 ( The result of 2100 is D. The result of multiplier 2 2200 is X 1 * Z 2 , and the result of multiplier 3 2300 is Y 1 * Z 2 . In step 4 (s706), the result of the multiplier 0 and the multiplier 1 is performed by the adder 1318, and after performing the addition operation with A 2 calculated in the square multiplier 1315 of step 2, the value of X 2 is reduced. Obtained. The value of X 2 is the result of the multiplier 2200 and the multiplier 3 2300 of step 3 (s704) and the finite-add operation is performed in the adders 1320 and 1321, respectively, and the F and G values are calculated. When these results are multiplied by multiplier 0 (2000) of step 4, E * F is calculated, and Z 2 * G is calculated by multiplier 1 (2100). These results are computed by the finite field addition operation in the adder 1322 of step 4 (s706), and Y 2 is calculated. Similarly, the calculation results X 2 , Y 2 , and Z 2 are again stored in the X0 register 300, the Y0 register 400, and the Z0 register 500, respectively.

상기 도 6과 도 7의 각 승산기(2000,2100,2200,2300)와 역승산기(2400), 그리고 레지스터 사이의 데이터 패스와 유한체 덧셈기와 유한체 제곱승기 등은 기타 연산 블록(1300)에 구현되며, 여러 데이터 패스들 중에서 각 단계에 맞는 적절한 입력 선택은 연산기와 레지스터 입력단에 있는 다중화기와 제어기에 의해 이루어진다. The multipliers 2000, 2100, 2200, and 2300, the inverse multiplier 2400, and the data paths between the registers, the registers, and the finite field adder and the finite field multiplier of FIGs. 6 and 7 are implemented in the other operation block 1300. Among the various data paths, the appropriate input selection for each step is made by the multiplexer and controller at the operator and register inputs.

상기 [표 1]에 도시된 알고리즘1의 단계 4가 반복되는 동안 타원곡선 덧셈 연산과 타원곡선 제곱 연산은 반드시 한번씩 반복적으로 수행되는데, 도 6과 도7과 같은 연산 순서로 연산을 수행하면 도 7의 단계 4(S706)와 도 6의 단계 1(S600) 또는 도 6의 단계 3(S604)과 도 7의 단계 1(S700)을 병렬로 수행할 수 있어 연산시간을 줄일 수 있다. 또한 상기 알고리즘1 단계 4.2에서의 [Ki w-1 ,., Ki 1 , Ki 0]P 연산은 메모리부터 필요한 데이터를 불러오는 연산인데, 이는 타원곡선 제곱 연산 중에 수행한다.While step 4 of Algorithm 1 shown in [Table 1] is repeated, the elliptic curve addition operation and the elliptic curve square operation are repeatedly performed once, and the operation is performed in the same operation order as in FIGS. 6 and 7. Step 4 (S706) of FIG. 6 and step 1 (S600) of FIG. 6 or step 3 (S604) of FIG. 6 and step 1 (S700) of FIG. 7 may be performed in parallel, thereby reducing computation time. In addition, [K i w-1 ,., K i 1 , K i 0 ] P operation in step 4.2 of Algorithm 1 is an operation for retrieving necessary data from memory, which is performed during an elliptic curve square operation.

프로젝티브(Projective) 좌표계를 이용한 타원곡선 덧셈 연산과 타원곡선 제곱 연산의 최종 결과는 아래의 [수학식 4]에서와 같이 다시 어파인(affine) 좌표값으로 변환하여야 한다. The final result of the elliptic curve addition operation and the elliptic curve square operation using the projective coordinate system must be converted back to the affine coordinate value as shown in [Equation 4] below.

도 8은 상기 도 1의 승산기들과 역승산기를 사용하여 상기 [수학식 4]의 좌표 변환 연산을 구현한 일 실시 예를 도시한 것이다.FIG. 8 illustrates an embodiment of implementing the coordinate transformation operation of Equation 4 using the multipliers and inverse multipliers of FIG. 1.

상기 도 8에서 보여지는 바와 같이 프로젝티브(projective) 좌표의 어파인(affine) 좌표 연산은 변환할 프로젝티브(projective) 좌표를 저장과 변환된 어파인(affine) 좌표값을 저장하기 위한 X0 레지스터(300), Y0 레지스터(400), Z0 레지스터(500)와 역승산기(2400)와 승산기(2200, 2300)과 유한체 제곱승기(1323)으로 구성된다. 변환된 최종 x 좌표값은 역승산기(2400)와 승산기3(2300)의 연산 결과로 얻어지며, y 좌표값은 역승산기(2400)와 유한체 제곱승기(1323), 승산기2(2200)의 연산 결과로 계산된다. As shown in FIG. 8, the affine coordinate operation of the projective coordinates includes an X0 register for storing the projected coordinates to be converted and the converted affine coordinate values ( 300, the Y0 register 400, the Z0 register 500, the inverse multiplier 2400, the multipliers 2200 and 2300, and the finite square multiplier 1323. The transformed final x coordinate value is obtained as the result of the calculation of the inverse multiplier 2400 and the multiplier 3 (2300), and the y coordinate value is the operation of the inverse multiplier 2400, the finite field square multiplier (1323), and the multiplier (2200). The result is calculated.

임의의 좌표점에 대한 스칼라 곱셈 연산은 기저점의 스칼라 곱셈 연산과 달리 필요한 값을 미리 연산하여 저장할 수 없기 때문에, 별도의 연산이 수행되어야 한다. 임의의 좌표값에 대한 스칼라 곱셈 연산을 위해서는 아래 [표 2]에 도시된 알고리즘2에와 같은 window method 스칼라 곱셈 연산 기법이 이용된다. Since a scalar multiplication operation for an arbitrary coordinate point is unlike a scalar multiplication operation of a base point, a separate operation must be performed because a required value cannot be calculated and stored in advance. For the scalar multiplication operation for arbitrary coordinate values, the window method scalar multiplication operation technique as shown in Algorithm 2 shown in [Table 2] is used.

[표 2]TABLE 2

[알고리즘 2] Window method 스칼라 곱셈 연산[Algorithm 2] Window method scalar multiplication Input : k, P, wOutput : kP1. Compute Pi = iP, for I∈{1, 2, 3,..., 2w-1-1}.2. Q ← 03. for i form l-1 downto 0 do3.1 Q ← 2WQ.3.2 Q ← Q + Pki 4. Return (Q).Input: k, P, w Output: kP1. Compute P i = iP, for I ∈ {1, 2, 3, ..., 2 w-1 −1}. Q ← 03. for i form l-1 downto 0 do3.1 Q ← 2 W Q.3.2 Q ← Q + P ki 4. Return (Q).

상기 알고리즘 2의 단계 1의 메모리 테이블에 저장할 데이터를 위한 선행 연산에는 어파인(affine) 좌표에서의 타원곡선 제곱 연산과 타원곡선 덧셈 연산이 이용되며, 단계 3의 타원곡선 연산은 기저점의 스칼라 곱셈 연산과 마찬가지로 프로젝티브(projective) 좌표에서의 타원곡선 제곱 연산과 타원곡선 덧셈 연산이 그대로 이용된다. 어파인(Affine) 좌표에서의 타원곡선 제곱 연산과 타원곡선 덧셈 연산은 아래 [표 3]에 도시된 알고리즘 3에서와 같이 수행된다. The elliptic curve square operation and the elliptic curve addition operation in affine coordinates are used for the preceding operation for the data to be stored in the memory table of Step 1 of Algorithm 2, and the elliptic curve operation of Step 3 is a scalar multiplication of the base point. Like the operation, the elliptic curve square operation and the elliptic curve addition operation in projective coordinates are used as they are. The elliptic curve square operation and the elliptic curve addition operation in affine coordinates are performed as in Algorithm 3 shown in Table 3 below.

[표 3]TABLE 3

[알고리즘 3] 타원곡선 연산 (affine 좌표)[Algorithm 3] Elliptic Curve Calculation (affine Coordinate) Input : P0 = (x0, y0) , P1 = (x1, y1).Output : P2 = P0 + P1 = (x2, y2).1. If P0 = P1 (doubling)x2 = λ2+λ+a, y2 =λ(x0 + x2) + x2 + y0 where ( λ = x0+ y0 / x0 )2. Else if P0 P1 (point addition)x2 = λ2+λ + x0 + x1 + a,y2 = λ(x0 + x2) + x2 + y0 where ( λ= ( y1 + y0) / ( x1 + x0 ) )3. Return (x2, y2)Input: P 0 = (x 0 , y 0 ), P 1 = (x 1 , y 1 ) .Output: P 2 = P 0 + P 1 = (x 2 , y 2 ). If P 0 = P 1 (doubling) x 2 = λ 2 + λ + a, y 2 = λ (x 0 + x 2 ) + x 2 + y 0 where (λ = x 0 + y 0 / x 0 ) 2 . Else if P 0 P 1 (point addition) x 2 = λ 2 + λ + x 0 + x 1 + a, y 2 = λ (x 0 + x 2 ) + x 2 + y 0 where (λ = (y 1 + y 0 ) / (x 1 + x 0 )) 3. Return (x 2 , y 2 )

도 9는 상기 도 1의 승산기들을 이용하여 어파인(affine) 좌표에서의 타원곡선 제곱 연산을 구현한 일 실시 예를 도시한 것이다.FIG. 9 illustrates an embodiment of implementing an elliptic curve square operation in affine coordinates using the multipliers of FIG. 1.

상기 도 9에서 보여지는 바와 같이 어파인(affine) 좌표에서의 타원곡선 제곱 연산을 구현하기 위하여 연산의 입력과 출력을 저장하기 위한 X0 레지스터(300), Y0 레지스터(400)와, 타원곡선 파라미터 저장을 위한 a 레지스터(1301)와, 역승산기(2400)와 승산기(2200, 2300), 그리고 유한체 제곱승기(1326)과 유한체 덧셈기(1324, 1325, 1327, 1328, 1329, 1330)으로 구성된다. 동작을 [알고리즘 3]의 단계 1과 함께 자세히 살펴보면, 역승산기(2400)에서는 1/ x0가 연산되고, 이를 단계 2(S902)의 승산기2(2200)에서 Y0와 승산 연산하여 y0 / x0 를 계산한다. 단계 3(S904)의 덧셈기(1324)에서는 단계2(S902)의 승산기(2200) 결과와 X0를 더하여 λ를 계산하고 이를 제곱승기(1326)에서 제곱하고, 덧셈기(1325)에서 a 값과 더한 후, 두 결과를 덧셈기(1327)에서 더하여 X2를 계산한다. X2값은 덧셈기(1328)에서 다시 X0와 더해지고, 단계 3의 승산기(2300)에서 λ와 곱셈 연산이 수행된다. 승산기의 결과는 덧셈기(1329)의 결과인 x2 + y0와 더해져 최종 Y2값을 계산한다. 연산된 X2와 Y2값은 다시 X0레지스터(300)와 Y0 레지스터(400)에 저장된다.As shown in FIG. 9, an X0 register 300, a Y0 register 400, and an elliptic curve parameter storage for storing an input and an output of an operation in order to implement an elliptic curve squared operation in affine coordinates. Is composed of a register 1301, an inverse multiplier 2400 and a multiplier 2200, 2300, and a finite field multiplier 1326 and a finite field adder 1324, 1325, 1327, 1328, 1329, and 1330. . Looking at the operation in detail with Step 1 of [Algorithm 3], 1 / x 0 is calculated in the inverse multiplier 2400 and multiplies Y 0 in the multiplier 2 2200 of step 2 S902 by y 0 /. Calculate x 0 . In the adder 1324 of step 3 (S904), the result of the multiplier 2200 of step 2 (S902) and X 0 are added to calculate λ, and the square is multiplied by the square multiplier 1326, and the value a is added to the adder 1325. Then, the two results are added in the adder 1327 to calculate X 2 . The X 2 value is added with X 0 again in the adder 1328, and multiplication with λ is performed in multiplier 2300 of step 3. The result of the multiplier is added to x 2 + y 0 , which is the result of adder 1329, to calculate the final Y 2 value. The calculated X 2 and Y 2 values are again stored in the X0 register 300 and the Y0 register 400.

도 10은 상기 도 1의 승산기들을 이용하여 어파인(affine) 좌표에서의 타원곡선 덧셈 연산을 구현한 일 실시 예를 도시한 것이다.FIG. 10 illustrates an embodiment of implementing an elliptic curve addition operation in affine coordinates using the multipliers of FIG. 1.

상기 도 10에서 보여지는 바와 같이 어파인(affine) 좌표에서의 타원곡선 덧셈 연산을 구현하기 위하여 연산의 입력과 출력을 저장하기 위한 X0 레지스터(300), Y0 레지스터(400)와, 타원곡선 덧셈 연산이 수행될 새로운 좌표값 저장을 위한 X1 레지스터(600), Y1 레지스터(700)와, 타원곡선 파라미터 저장을 위한 a 레지스터(1301)와, 역승산기(2400)와 승산기(2000, 2300), 그리고 유한체 제곱승기(1335)과 유한체 덧셈기(1331, 1332, 1333, 1334, 1336, 1337, 1338, 1339)으로 구성된다. 동작을 [알고리즘 3]의 단계 2와 함께 자세히 살펴보면, 단계 1(S100)의 덧셈기(1331, 1332)에서는 각각 x1 + x0와 y1 + y0 가 계산되고, 역승산기(2400)에서는 1/ (x1 + x0)가 연산된다. 역승산기의 결과를 단계 2(S102)의 승산기0(2000)에서 y1 + y0 와 승산 연산하여 λ를 계산한다. λ를 제곱승기(1335)에서 제곱하고, 이를 덧셈기(1336)에서 덧셈기(1333, 1334)의 결과인 λ+ x0 + x1 + a 와 더하여 X2를 계산한다. X2값은 덧셈기(1337)에서 다시 X0와 더해져 단계 3(S104)의 승산기(2300)에서 λ와 곱셈 연산이 수행된다. 승산기의 결과는 덧셈기(1338)의 결과인 x2 + y0와 더해져 최종 Y2값을 계산한다. 역시 연산된 X2와 Y2값은 다시 X0레지스터(300)와 Y0 레지스터(400)에 저장된다. 어파인(affine) 좌표에서의 타원곡선 연산도 위와 같은 구조로 연산을 수행하면 타원곡선 덧셈 연산과 타원곡선 곱셈 연산을 병렬로 수행할 수 있는 장점이 있다.As shown in FIG. 10, in order to implement an elliptic curve addition operation in affine coordinates, an X0 register 300, a Y0 register 400, and an elliptic curve addition operation are used to store the input and output of the operation. Registers X1 600, Y1 700 for storing new coordinate values to be performed, a register 1301 for storing elliptic curve parameters, inverse multiplier 2400 and multipliers 2000, 2300, and finite Sieve square multiplier 1335 and finite body adders 1331, 1332, 1333, 1334, 1336, 1337, 1338, and 1339. Looking at the operation in detail with Step 2 of [Algorithm 3], x 1 + x 0 and y 1 + y 0 are calculated in the adders 1331 and 1332 of step 1 (S100), respectively, and 1 in the inverse multiplier 2400. / (x 1 + x 0 ) is calculated. Λ is calculated by multiplying the result of the inverse multiplier by y 1 + y 0 in multiplier 0 (2000) of step 2 (S102). [lambda] is squared at the square multiplier 1335, and X 2 is calculated by adding it to λ + x 0 + x 1 + a which is the result of the adders 1333 and 1334 in the adder 1336. The X 2 value is added to X 0 again in the adder 1335 to perform a multiplication with lambda in the multiplier 2300 of step 3 (S104). The result of the multiplier is added to x 2 + y 0 which is the result of adder 1338 to calculate the final Y 2 value. The calculated X 2 and Y 2 values are again stored in the X0 register 300 and the Y0 register 400. The elliptic curve operation in affine coordinates also has the advantage that the elliptic curve addition operation and the elliptic curve multiplication operation can be performed in parallel.

상기 [표 3]에 도시된 알고리즘 3의 단계 3 연산은 기저점의 스칼라 곱셈 연산과 동일하게 프로젝티브(projective) 좌표계에서의 타원곡선 제곱 연산과 타원곡선 덧셈 연산이 그대로 이용된다. 단, 단계 3.2에서 Pki값을 불러오는 연산에서 K 레지스터의 출력이 기저점의 스칼라 곱셈 연산인 경우와 다르게 상위 비트들이 그대로 출력된다.Step 3 of Algorithm 3 shown in [Table 3] uses the elliptic curve square operation and the elliptic curve addition operation in the projected coordinate system in the same manner as the scalar multiplication operation of the base point. However, in the operation of reading the P ki value in step 3.2, the upper bits are output as they are, unlike the case where the output of the K register is a scalar multiplication operation of the base point.

도 11은 상기 K 레지스터에서의 동작 개념을 도시한 것으로, 윈도우(window) 크기는 2이며, 윈도우(window) 크기가 4인 콤 기법(comb method) 스칼라 곱셈 연산도 수행할 수 있도록 4비트의 출력을 가진다. 이때 K 레지스터는 상기 알고리즘 3의 단계 3이 반복될수록 윈도우(window) 크기인 2만큼 쉬프트된다. K 레지스터는 모드에 따라서 윈도우 기법(window method)이나 콤 기법(comb method)으로 구분되어 동작한다.FIG. 11 illustrates a concept of operation in the K register, and a 4-bit output to perform a comb method scalar multiplication operation having a window size of 2 and a window size of 4. Has At this time, the K register is shifted by 2, which is a window size, as step 3 of the algorithm 3 is repeated. The K register operates according to the mode, divided into a window method and a comb method.

한편 상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.Meanwhile, in the above description of the present invention, specific embodiments have been described, but various modifications may be made without departing from the scope of the present invention. Therefore, the scope of the invention should be determined by the claims rather than by the described embodiments.

이상에서 설명한 바와 같이, 본 발명은 고성능 타원곡선 암호화 장치에 있어 프로젝티브 좌표계에서의 타원곡선 연산 기법과 윈도우 연산 기법을 최적화하며, 또한 기저점의 스칼라 곱셈 연산과 임의의 좌표의 스칼라 곱셈 연산이 모두 효율적으로 수행될 수 있도록 하여 타원곡선 암호 처리의 주된 연산인 스칼라 곱셈 연산을 고속으로 처리 가능하도록 함으로써, 타원곡선 스칼라 곱셈 연산에 대하여 빠른 처리 능력을 보장하며, 이를 통하여 타원곡선 암호 프로토콜이 사용되는 서버 시스템에서 보조 연산 장치로 사용하여 전체 시스템 처리 성능을 향상시킬 수 있는 이점이 있다. 또한 타원곡선 암호화 장치에서 하드웨어 자원을 효율적으로 사용할 수 있게 되어 높은 성능을 얻을 수 있으며, 여러 타원곡선 암호 시스템으로 확장이 용이하게 되는 이점이 있다.As described above, the present invention optimizes the elliptic curve calculation method and the window calculation method in the projected coordinate system in the high performance elliptic curve encryption device, and further, both the scalar multiplication operation of the base point and the scalar multiplication operation of the arbitrary coordinates are performed. By enabling efficient execution, it is possible to process the scalar multiplication operation, which is the main operation of the elliptic curve cryptography, at high speed, thereby guaranteeing the fast processing ability for the elliptic curve scalar multiplication operation. It can be used as a cooperative unit in the system to improve the overall system processing performance. In addition, it is possible to efficiently use hardware resources in an elliptic curve encryption device, thereby obtaining high performance, and it is advantageous to be easily extended to various elliptic curve encryption systems.

도 1은 본 발명의 실시 예에 따른 고성능 타원곡선 암호화 장치 블록 구성도,1 is a block diagram of a high performance elliptic curve encryption apparatus according to an embodiment of the present invention;

도 2는 상기 도 1의 타원곡선 암호화 장치내 메모리 구성도,FIG. 2 is a block diagram of a memory in the elliptic curve encryption device of FIG.

도 3은 상기 도 1의 메모리의 상세 구조도,3 is a detailed structural diagram of the memory of FIG. 1;

도 4는 상기 도 1의 타원곡선 암호화 장치내 메모리 인터페이스의 상세 구조도,4 is a detailed structural diagram of a memory interface in the elliptic curve encryption device of FIG.

도 5는 상기 도 1의 타원곡선 암호화 장치내 K 레지스터의 동작 개념도,5 is a conceptual view of operation of the K register in the elliptic curve encryption device of FIG.

도 6은 본 발명의 실시 예에 따른 타원곡선 제곱 연산 동작 개념도,6 is a conceptual diagram of an operation of elliptic curve square according to an embodiment of the present invention;

도 7은 본 발명의 실시 예에 따른 타원곡선 덧셈 연산 동작 개념도,7 is a conceptual diagram of an operation for adding an elliptic curve according to an embodiment of the present invention;

도 8은 본 발명의 실시 예에 따른 좌표 연산 동작 개념도,8 is a conceptual diagram of coordinate operation according to an embodiment of the present invention;

도 9는 본 발명의 실시 예에 따른 타원곡선 제곱 연산 동작 개념도,9 is a conceptual diagram of an operation of elliptic curve square according to an embodiment of the present invention;

도 10은 본 발명의 실시 예에 따른 타원곡선 덧셈 연산 동작 개념도,10 is a conceptual diagram of an operation for adding an elliptic curve according to an embodiment of the present invention;

도 11은 본 발명의 실시 예에 따른 K 레지스터에서의 동작 개념도.11 is a conceptual diagram of operation in a K register according to an embodiment of the present invention;

Claims (10)

고성능 타원곡선 암호화 장치에 있어서, In the high performance elliptic curve encryption device, 곱셈 상수 K 값을 저장하고 고정기반 콤 방식 스칼라 곱셈 연산과 윈도 방법 스칼라 곱셈 연산에서의 곱셈 상수 출력을 위한 제1저장수단과;First storage means for storing a multiplication constant K value and outputting a multiplication constant in a fixed-based comb-based scalar multiplication operation and a window-based scalar multiplication operation; 타원곡선 입력 좌표 저장 및 중간 연산 결과, 최종 출력 결과를 저장하기 위한 제2저장수단과;Second storage means for storing elliptic curve input coordinates, intermediate calculation results, and final output results; 어파인(affine) 좌표에서 프로젝티브 좌표로의 변환 및 중간 연산 결과를 저장하기 위한 제3저장수단과;Third storage means for storing transformations from affine coordinates to projected coordinates and intermediate calculation results; 타원곡선 덧셈 연산에 필요한 새로운 좌표값 저장을 위한 제4저장수단과;Fourth storage means for storing new coordinate values required for the elliptic curve addition operation; 유한체 곱셈 연산을 위한 승산 연산 수단과;Multiplication operation means for a finite field multiplication operation; 유한체 역수 연산을 위한 역수 연산 수단과;Reciprocal arithmetic means for finite field reciprocal calculations; 상기 승산 연산 수단과 역승산 연산 수단들을 이용하여 다양한 타원곡선 연산들을 수행하기 위한 부가연산수단과;Additional computation means for performing various elliptic curve operations using the multiplication and inverse multiplication operations; 상기 저장수단과 연산수단들의 입력을 선택하는 다중화수단과;Multiplexing means for selecting an input of said storage means and arithmetic means; 상기 모든 블록들이 프로젝티브 좌표계에서의 타원곡선 덧셈 연산과 타원곡선 제곱연산, 고정기반 콤 방식 스칼라 곱셈 연산, 윈도우 방법 스칼라 곱셈 연산 등을 수행하도록 제어하는 제어수단;을 포함하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.A control means for controlling all the blocks to perform an elliptic curve addition operation, an elliptic curve square operation, a fixed-based comb-based scalar multiplication operation, a window-based scalar multiplication operation, and the like in a projected coordinate system. Curved encryption device. 제1항에 있어서,The method of claim 1, 상기 타원곡선 암호화장치는, 미리 수행되어 저장되는 스칼라 곱셈 연산 결과를 위한 메모리와;The elliptic curve encryption device may include a memory for a scalar multiplication operation result that is previously performed and stored; 상기 메모리의 인터페이스를 위한 메모리 인터페이스 수단;을 더 포함하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.Memory interface means for the interface of the memory; high performance elliptic curve encryption apparatus further comprises. 제1항에 있어서,The method of claim 1, 상기 다중화 수단은, 상기 제2저장수단의 입력을 선택하는 다중화기와;The multiplexing means comprises: a multiplexer for selecting an input of the second storage means; 상기 제3저장수단의 입력을 선택하는 다중화기와;A multiplexer for selecting an input of the third storage means; 상기 승산수단의 입력을 선택하는 다중화기와;A multiplexer for selecting an input of the multiplication means; 상기 역승산수단의 입력을 선택하는 다중화기;를 포함하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.High performance elliptic curve encryption apparatus comprising a; multiplexer for selecting the input of the inverse multiplication means. 제3항에 있어서,The method of claim 3, 상기 다중화 수단은, 상기 메모리의 입력을 선택하는 다중화기;를 더 포함하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.The multiplexing means further comprises a multiplexer for selecting the input of the memory. 제1항에 있어서,The method of claim 1, 상기 제1저장수단은, 고정기반 콤 방식 스칼라 곱셈 연산을 곱셈 상수 연산과 윈도우 방법 스칼라 곱셈 연산을 위한 곱셈 상수 연산을 모두 수행하는 쉬프트 레지스터로 구성되는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.And said first storage means comprises a shift register for performing both a fixed-based comb-based scalar multiplication operation and a multiplication constant operation for a window-based scalar multiplication operation. 제1항에 있어서,The method of claim 1, 상기 제2저장수단은, 타원곡선 입력 x 좌표 저장 및 중간 연산 결과, 최종 x 좌표 출력 결과를 저장하는 쉬프트 레지스터와;The second storage means includes: a shift register for storing an elliptic curve input x coordinate storage and an intermediate operation result and a final x coordinate output result; 타원곡선 입력 y 좌표 저장 및 중간 연산 결과, 최종 y 좌표 출력 결과를 저장하는 쉬프트 레지스터;를 포함하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.And an shift register for storing an elliptic curve input y coordinate, an intermediate operation result, and a final y coordinate output result. 제1항에 있어서,The method of claim 1, 상기 제4저장수단은, 타원곡선 덧셈 연산에 필요한 새로운 x 좌표값을 저장하는 쉬프트 레지스터와,The fourth storage means includes: a shift register for storing a new x coordinate value required for an elliptic curve addition operation; 타원곡선 덧셈 연산에 필요한 새로운 y 좌표값을 저장하는 쉬프트 레지스터;를 포함하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.And a shift register for storing a new y coordinate value required for an elliptic curve addition operation. 제3항에 있어서,The method of claim 3, 상기 제2저장수단의 입력을 선택하는 다중화기는, 상기 타원곡선 입력 x 좌표를 저장하는 쉬프트 레지스터로의 입력을 선택하는 제1다중화기와;A multiplexer for selecting the input of the second storage means includes: a first multiplexer for selecting an input to a shift register for storing the elliptic curve input x coordinate; 상기 타원곡선 입력 y 좌표를 저장하는 쉬프트 레지스터로의 입력을 선택하는 제2다중화기;를 포함하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.And a second multiplexer for selecting an input to a shift register for storing the elliptic curve input y-coordinate. 제1항에 있어서,The method of claim 1, 상기 타원곡선 암호화 장치는, 상기 기저점의 스칼라 곱셈 연산을 수행함에 있어 고정기반 콤 방식 스칼라 곱셈 연산 기법과 프로젝티브 좌표에서 타원곡선 연산 기법을 사용하며, 프로젝티브 좌표에서의 타원곡선 덧셈 연산과 타원곡선 곱셈 연산의 일부분이 병렬로 처리하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.The elliptic curve cryptography apparatus uses a fixed-based comb-based scalar multiplication operation technique and an elliptic curve operation technique in projected coordinates, and performs an elliptic curve addition operation and an ellipse in projected coordinates. A high performance elliptic curve encryption device, characterized in that part of the curve multiplication operation is processed in parallel. 제1항에 있어서,The method of claim 1, 상기 타원곡선 암호화 장치는, 임의의 스칼라 곱셈 연산 수행시에는 , 윈도우 방법 스칼라 곱셈 연산 기법을 이용하며, 선행 연산의 테이블 계산을 위해 어파인 좌표에서의 타원곡선 연산을 이용하고, 선행 연산이 아닌 주된 스칼라 곱셈 연산에서는 프로젝티브 좌표에서의 타원곡선 연산을 이용하며, 어파인 좌표와 프로젝티브 좌표에서의 타원곡선 덧셈연산과 타원곡선 곱셈 연산의 일부분을 병렬로 처리하는 것을 특징으로 하는 고성능 타원곡선 암호화 장치.The elliptic curve encryption apparatus uses a window method scalar multiplication operation technique when performing an arbitrary scalar multiplication operation, uses an elliptic curve operation in affine coordinates for a table calculation of the preceding operation, The scalar multiplication operation uses an elliptic curve operation in projected coordinates, and performs an elliptic curve addition operation in affine and projected coordinates and a part of an elliptic curve multiplication in parallel. .
KR10-2002-0080285A 2002-12-16 2002-12-16 High-performance elliptic curve crypto processor KR100502071B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0080285A KR100502071B1 (en) 2002-12-16 2002-12-16 High-performance elliptic curve crypto processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0080285A KR100502071B1 (en) 2002-12-16 2002-12-16 High-performance elliptic curve crypto processor

Publications (2)

Publication Number Publication Date
KR20040053833A KR20040053833A (en) 2004-06-25
KR100502071B1 true KR100502071B1 (en) 2005-07-25

Family

ID=37346990

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0080285A KR100502071B1 (en) 2002-12-16 2002-12-16 High-performance elliptic curve crypto processor

Country Status (1)

Country Link
KR (1) KR100502071B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101524661B1 (en) * 2014-04-03 2015-06-03 고려대학교 산학협력단 Calculating apparatus and method for Triple-Base Chain elliptic curve scalar multiplication by reordering

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101481402B1 (en) * 2012-10-31 2015-01-14 고려대학교 산학협력단 System of encryption/decryption and Method thereof in smart card in public key crypto algorithm
KR102460248B1 (en) * 2019-02-21 2022-10-31 한국전자통신연구원 Finite division operator, elliptic curve cryptosystem having the same and operating method thereof
KR102360837B1 (en) * 2021-03-29 2022-02-08 국민대학교산학협력단 Method, apparatus and system for operating point multiplication

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101524661B1 (en) * 2014-04-03 2015-06-03 고려대학교 산학협력단 Calculating apparatus and method for Triple-Base Chain elliptic curve scalar multiplication by reordering

Also Published As

Publication number Publication date
KR20040053833A (en) 2004-06-25

Similar Documents

Publication Publication Date Title
Harn Public-key cryptosystem design based on factoring and discrete logarithms
US7308096B2 (en) Elliptic scalar multiplication system
US11658815B2 (en) System and method for performing key operations during a multi-party computation process
CN101005350B (en) Encryption processing apparatus, encryption processing method
US6993136B2 (en) Cryptographic key exchange method using efficient elliptic curve
CN100388663C (en) Method and device for detecting a key pair and for generating rsa keys
US7062043B1 (en) Method of elliptic curve digital signature using coefficient splitting
JP2003098962A (en) Method and device for calculating elliptic curve scalar multiple, and recording medium
Pandey et al. An RNS implementation of the elliptic curve cryptography for IoT security
KR100502071B1 (en) High-performance elliptic curve crypto processor
US7062044B1 (en) Method of elliptic curve cryptographic key agreement using coefficient splitting
US7024559B1 (en) Method of elliptic curve digital signature using expansion in joint sparse form
Budati et al. High speed data encryption technique with optimized memory based RSA algorithm for communications
JP3615405B2 (en) Method and apparatus for calculating points on elliptic curve on element body
US6614909B1 (en) Methods, systems, and circuits for generating keys for public key cryptosystems using parallel processing for modular operations of IC cards
JP2000132096A (en) Scalar double calculation method and apparatus the method
Manajaih Modular arithmetic in RSA cryptography
JP2000137436A (en) Calculating method of point on elliptic curve on prime field and device therefor
US7505585B2 (en) Method of generating cryptographic key using elliptic curve and expansion in joint sparse form and using same
KR100423810B1 (en) Crypto Processing apparatus for Elliptic Curve Cryptosystem
KR100406138B1 (en) apparatus for NTRU Cryptosystem
Yamaguchi et al. A study on reconfigurable computing system for cryptography
JP2004253950A (en) Electronic signature high-speed forming method and apparatus by pre-calculation
JP3278790B2 (en) Public key encryption method and public key encryption system
CN117014208B (en) Data encryption method, device, system, electronic equipment and storage medium

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
FPAY Annual fee payment

Payment date: 20080701

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee