KR100451570B1 - Method and apparatus for implementing elliptic curve cryptosystem resisting against simple power attacks - Google Patents

Method and apparatus for implementing elliptic curve cryptosystem resisting against simple power attacks Download PDF

Info

Publication number
KR100451570B1
KR100451570B1 KR10-2002-0066222A KR20020066222A KR100451570B1 KR 100451570 B1 KR100451570 B1 KR 100451570B1 KR 20020066222 A KR20020066222 A KR 20020066222A KR 100451570 B1 KR100451570 B1 KR 100451570B1
Authority
KR
South Korea
Prior art keywords
operator
sum
elliptic curve
value
register
Prior art date
Application number
KR10-2002-0066222A
Other languages
Korean (ko)
Other versions
KR20040037648A (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-0066222A priority Critical patent/KR100451570B1/en
Publication of KR20040037648A publication Critical patent/KR20040037648A/en
Application granted granted Critical
Publication of KR100451570B1 publication Critical patent/KR100451570B1/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]

Landscapes

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

Abstract

본 발명은 SPA(Simple Power Attacks)에 견디는 타원 곡선 암호화 알고리즘을 구현하는 방법에 관한 것으로 키값의 자리수가 증가할 때마다 배수 연산을 하는 제1배수연산자와 상기 제1배수연산자와 제1합산연산자를 합산하여 출력하는 제2합산연산자와 상기 키값의 자리값이 1일때만 상기 제2합산연산자의 출력값을 상기 제1합산연산자로 입력시키는 타원 곡선 암호화 알고리즘을 구현하는 방법에 있어서, 상기 제1배수연산자를 제2배수연산자로 출력하고, 상기 제1배수연산자가 배수 연산하는 과정과 상기 제2배수연산자와 제1합산연산자를 합산 연산하여 제2합산연산자로 출력하는 과정을 병렬 처리하는 것을 특징으로 하는 에스피에이에 견디는 타원 곡선 암호화 알고리즘을 구현하였다.The present invention relates to a method for implementing an elliptic curve encryption algorithm that withstands simple power attacks (SPA), wherein the first multiplex operator, the first multiplex operator, and the first multiplicand operator perform a multiplex operation every time the number of key values increases. A method for implementing an elliptic curve encryption algorithm for inputting an output value of the second sum operator into the first sum operator only when a second sum operator and a sum value of the key value are 1; Outputs as a second multiple operator, multiplying the first multiple operator and multiplying the second multiple operator and the first total operator to output the second multiple operator in parallel. We implemented an elliptic curve encryption algorithm that resists SP.

Description

에스피에이에 견디는 타원 곡선 암호화 알고리즘을 구현하는 방법 및 장치{METHOD AND APPARATUS FOR IMPLEMENTING ELLIPTIC CURVE CRYPTOSYSTEM RESISTING AGAINST SIMPLE POWER ATTACKS}METHOD AND APPARATUS FOR IMPLEMENTING ELLIPTIC CURVE CRYPTOSYSTEM RESISTING AGAINST SIMPLE POWER ATTACKS}

본 발명은 타원 곡선 암호화 알고리즘을 구현하는 방법 및 장치에 관한 것으로, SPA(Simple Power Attacks)에 견디는 타원 곡선 암호화 알고리즘을 구현하는 방법 및 장치에 관한 것이다.The present invention relates to a method and apparatus for implementing an elliptic curve encryption algorithm, and to a method and apparatus for implementing an elliptic curve encryption algorithm to withstand Simple Power Attacks (SPA).

정보통신망의 발전과 더불어 다양한 정보가 네트워크를 통하여 교류되고 있다. 송신자가 전자 우편이나 전자 문서 전달 시스템 등을 통하여 귀중한 메시지를전달하고자 할 때, 메시지 송신자의 입장에서는 정당한 수신자가 정보를 제대로 받았는 지, 그리고 수신자의 입장에서는 메시지의 생성자가 정당한 송신자가 맞는지 등을 확인할 메커니즘이 필요하다.With the development of information and communication network, various information is exchanged through network. When a sender wants to deliver a valuable message through an e-mail or electronic document delivery system, the sender needs to check whether the right recipient has received the right information, and from the recipient's point of view, the message creator is the right sender. Mechanism is needed.

정보의 암호, 복호 기술이란 정보를 키 값을 이용하여 암호화하여 전송하고 수신자는 키 값으로 복호화 과정을 통해 원래의 정보를 추출하는 방법으로 제3자가 그 내용을 중간에 가로채도 원래의 정보를 알아낼 수 없게 하는 것이다.The encryption and decryption technology of the information is transmitted by encrypting the information using the key value, and the receiver extracts the original information by decrypting the key value to find the original information even if a third party intercepts the content. It cannot be.

암호, 복호 방식으로는 대칭키(Symmetric Key)방식과 비대칭키(Asymmetric Key)방식이 있다. 대칭키에 기반한 암호화는 암호화될 때의 키(Ke)와 복호화될 때의 키(Kd)가 같은 키이다. 즉 Ke=Kd 이다.Encryption and decryption methods include symmetric key and asymmetric key. The encryption based on the symmetric key is the same key Ke when encrypted and key Ke when decrypted. That is, Ke = Kd.

대칭키 암호 기술은 암호화와 복호화에서 빠른 속도를 가지는 장점이 있으나, 키 관리 및 분배에 있어서 어려운 단점이 있다. 각 송신자와 수신자간 모두 서로 다른 키를 가지고 있어야 하므로 관리하는 키의 숫자가 많아지며, 송신자와 수신자는 같은 키를 가지고 있어야 하므로 키가 전달되는 과정에서 노출될 가능성이 큰 이유로 키의 분배가 어렵다.Symmetric key cryptography has the advantage of high speed in encryption and decryption, but has the disadvantage of difficulty in key management and distribution. Since each sender and receiver must have different keys, the number of keys to be managed increases, and since the sender and receiver must have the same key, it is difficult to distribute the keys because they are likely to be exposed in the process of delivering the keys.

그러나, 네트워크 환경이 급속도로 발달하면서 익명의 다수와 안전한 통신을 위해서는 효율적인 키 관리 및 분배 기법이 필요하게 되었다. 적은 수의 키로 다수의 상대방과 안전한 통신을 가능하게 하고 전자서명 용도로도 활용할 수 있는 효율적 암호기법이 필요하게 된 것이다. 이와 같은 배경에서 등장한 암호화 기법이 공개키 방식이다.However, with the rapid development of the network environment, efficient key management and distribution schemes are required for anonymous and secure communication. There is a need for an efficient encryption technique that enables secure communication with a large number of parties with a small number of keys and can also be used for digital signatures. The encryption technique that appeared in such a background is the public key method.

공개키 암호 기술은 공개키(Public Key)와 개인키(Private Key)를 사용해서인증과 서명 그리고 암호화를 수행한다. 암호화 키와 복호화 키가 다르기 때문에 비대칭 암호화(Asymmetric cipher)라고도 불리우며, 이 때에 공개키는 남에게 공개되고, 개인키만 자신이 보관하기 때문에 비밀키라고도 한다. 즉, Kd != Ke 이다.Public key cryptography uses public and private keys to perform authentication, signing, and encryption. It is also called asymmetric cipher because the encryption key and the decryption key are different. In this case, the public key is disclosed to others, and it is also called a secret key because only the private key is kept by itself. That is, Kd! = Ke.

공개키 암호 기술에서는 비밀키와 공개키를 이용한다. 비밀키는 그 소유자만이 알고 있고 공개키는 공개된다. 공개키는 누구나 알 수 있게 공개하는 키이기 때문에 공개하는 측면에서는 문제가 되지 않지만 중간에 제3자가 공개키를 위조 혹은 변조했을 경우 그 사실을 알 수 없기 때문에 제3자에 의해 비밀 문서를 가로채기 당할 수 있는 문제가 있다.Public-key cryptography uses secret and public keys. Only the owner knows the private key, and the public key is public. Since public key is a public key that anyone can know, it is not a problem in terms of disclosure, but if a third party forges or tamperes with a public key in the middle, it cannot be known. There is a problem that can be suffered.

이렇게 공개된 공개키가 위/변조되지 않았음을 보장하는 문제, 즉 공개키의 무결성을 보장하기 위해 등장한 것이 공개키 기반구조(Public Key Infrastructure; PKI)이다. 공개키 기반구조에서는 공개키와 그 공개키의 소유자를 연결하여 주는 인증서(Certificates)를 공개한다. 인증서는 신뢰할 수 있는 인증기관의 서명문이므로 신뢰 객체가 아닌 사람은 그 문선의 내용을 변경할수 없도록 하며, 변경했을 경우 서명 값을 통해 인증서의 위/변조 사실을 알아낼 수 있다.The public key infrastructure (PKI) has emerged to ensure that the public key is not tampered with. The public key infrastructure exposes certificates that link the public key with its owner. Since the certificate is signed by a trusted certificate authority, non-trusted persons cannot change the contents of the content, and if changed, the signature value can be used to find out the forgery / falsification of the certificate.

한편, 상술한 공개키 방식은 대칭키에 비해 키 관리는 단순하지만 알고리즘의 복잡도가 증가하여 처리속도가 느려지는 문제가 있으며 메시지의 크기가 커질 경우 부담은 더욱 증가한다. 공개키 방식으로 종래에 가장 널리 사용해왔던 알고리즘은 RSA(Rivest, Shamir, Adleman)이다.On the other hand, the public key scheme described above has a simpler key management compared to a symmetric key, but has a problem of slowing down processing speed due to an increase in complexity of an algorithm, and a burden increases when a message size increases. The most widely used algorithm for the public key method is RSA (Rivest, Shamir, Adleman).

그러나, 상기 RSA는 암호화 및 복호화를 위해 막대한 계산량이 필요한 것은 물론 처리속도가 느리다는 단점이 계속 지적되었다. 한마디로 전자상거래 환경에서RSA를 이용해 공개키 암호시스템을 구축한다는 것은 중앙처리장치(CPU), 메모리 등의 하드웨어의 엄청난 고급화를 수반한다. 더욱이 앞으로 개인이 하나씩의 공개키를 취득하게 될 공개키 기반구조(PKI)하에서 이동형 단말 장치(Mobile Appliance)를 이용하고자 할 때 처리 용량, 속도 개선은 불가피한 것이다.However, it has been pointed out that the RSA requires a large amount of computation for encryption and decryption as well as a slow processing speed. In short, building a public key cryptosystem using RSA in an e-commerce environment entails a massive upscaling of hardware such as central processing units (CPUs) and memory. Furthermore, when a mobile appliance is to be used under a public key infrastructure (PKI), in which an individual will acquire one public key, processing capacity and speed improvement are inevitable.

이에 대응하는 새로운 공개키 방식이 제시되고 있는데 바로 타원 곡선의 원리를 이용한 타원곡선 암호화 방법이다.A new public key scheme has been proposed, which is an elliptic curve encryption method using the elliptic curve principle.

상기 타원곡선 암호화 방법(Elliptic Curve Cryptosystem; 이하 'ECC시스템')은 이동 통신기기, 스마트 카드나 전자 화폐, 소형 컴퓨터 등을 사용하는 통신시스템에서 최근에 널리 각광받고 있는 공개키 암호 시스템이다. 상기 ECC시스템은 RSA와 같은 다른 공개키 암호 표준들에 비해 대역폭 및 계산 시간의 관점에서 보다 효율적이며, 다른 암호 표준들과 같은 수준의 안정성을 제공하면서도 암호화 및 복호화에 사용되는 키(Key)값의 크기를 더욱 작게 한다는 장점을 제공한다.The Elliptic Curve Cryptosystem (hereinafter referred to as an 'ECC System') is a public key cryptography system that is widely used in communication systems using mobile communication devices, smart cards, electronic money, small computers, and the like. The ECC system is more efficient in terms of bandwidth and computation time than other public key cryptographic standards such as RSA, and provides the same level of stability as other cryptographic standards while providing the same key value used for encryption and decryption. It offers the advantage of smaller size.

상기 ECC시스템은 당해 분야 통상의 지식을 가진 자에게 잘 알려진 바와 같이, 타원 곡선상의 점들의 집합에서, 덧셈(addition), 배수(doubling), 뺄셈(subtraction), 스칼라 곱셈(scalar multiplication) 등의 연산을 정의하여 구현한 공개키(public key) 암호시스템이다. 즉, 상기 ECC시스템은 유한체(finite fields)위에서 정의된 타원곡선 집합에서의 이산 대수 문제에 기초한 암호시스템이다. 이러한 ECC시스템의 개념이 도 1에 도시되어 있다.The ECC system, as is well known to those skilled in the art, operates on a set of points on an elliptic curve, such as addition, doubling, subtraction, scalar multiplication, and the like. A public key cryptosystem that defines and implements. In other words, the ECC system is a cryptographic system based on a discrete algebra problem in a set of elliptic curves defined on finite fields. The concept of such an ECC system is shown in FIG.

상기 도 1을 참조하면, 타원곡선(Elliptic curve)과 점(point) 연산이 정의되어 있다. 덧셈은 P와 Q의 연산이며 "P+Q"로 표시된다. 배수는 P+P를 의미하며 일반적으로 "2P"로 표시된다. 뺄셈은 P와 Q=(x2, -y2)의 덧셈 연산이며, "P-Q"로 표시된다. 스칼라 곱셈 "nP"는 n개의 P가산, 즉 P+P+...+P를 의미한다. 상기 nP의 연산은 덧셈, 배수, 뺄셈을 반복적으로 사용하여 구할 수 있는데, 모듈러(modular)멱승의 구현에서 사용되는 2진 방정식(binary method)과 유사한 방식으로 구현된다. 예를 들어, 33P를 구할 경우, P를 32번 가산하지 않고, 33을 2진수로 표현한 (100001)2를 이용한다. 즉, (100001)2P=2(2(2(2(2P))))+P와 같이 계산하면, 5번의 배수와 1번의 덧셈으로 33P를 구할 수 있다. 상기 타원곡선에 대해서는 여러 가지 정의가 존재하지만, 대표적으로 다음과 같이 정의된다. 타원 곡선은 다항식의 해집합과 무한원점(0)을 말한다. 이러한 타원 곡선에 대한 연산은 통상 하기의 <표 1>과 같이 표현된다. 하기의 <표 1>에 나타낸 바와 같은 표현은 당해 분야 통상의 지식을 가진 자에게 잘 알려진 사실이므로, 이에 대한 구체적인 설명은 생략하기로 한다.Referring to FIG. 1, an elliptic curve and a point operation are defined. Addition is the operation of P and Q and is denoted by "P + Q". A multiple means P + P and is usually labeled "2P". Subtraction is an addition operation of P and Q = (x 2 , -y 2 ), denoted by "PQ". Scalar multiplication "nP" means n P additions, ie P + P + ... + P. The operation of nP can be obtained by repeatedly adding, multiplying, and subtracting, which is implemented in a manner similar to the binary method used in the implementation of modular power. For example, when 33P is obtained, (100001) 2 in which 33 is expressed in binary not using P is added 32 times. In other words, if (100001) 2 P = 2 (2 (2 (2 (2P)))) + P, 33P can be obtained by 5 multiples and 1 addition. Various definitions exist for the elliptic curve, but are typically defined as follows. Elliptic curve is polynomial Is the solution set and infinite origin (0). Operations on such elliptic curves are typically expressed as shown in Table 1 below. Expression as shown in Table 1 below is well known to those skilled in the art, so a detailed description thereof will be omitted.

상기 <표 1>에서 알 수 있듯이, x1, y1, x2, y2등에 대한 연산은 모듈러 덧셈, 뺄셈, 곱셈, 나눗셈이다. 본 발명과 관련한 ECC는 하기의 <표 2>에 나타낸 바와 같이, 크기가 2n인 갈로아 체(Galois field) GF(2n)상에서의 타원 곡선을 사용한다. 통상 이러한 유한체는 확대 갈로아 체(Extension Galois field)라 불리운다. 그러므로, x+y 또는 x-y연산은 간단한 배타적 논리합(XOR : eXclusive OR) 연산이 된다. 따라서 갈로아 체 개념을 사용하는 ECC에서는 곱셈 연산(x×y)과, 역원연산(x-1)이 중요한 연산이 된다.As can be seen from Table 1, operations on x 1 , y 1 , x 2 , y 2, and the like are modular addition, subtraction, multiplication, and division. ECC in connection with the present invention uses an elliptic curve on Galois field GF (2 n ) of size 2 n , as shown in Table 2 below. Typically such finite bodies are called extension galois fields. Therefore, the x + y or xy operation is a simple exclusive OR (XOR: eXclusive OR) operation. Therefore, in ECC using the Galoache concept, multiplication operations (x × y) and inverse operations (x- 1 ) become important operations.

도 2는 본 발명이 적용되는 일반적인 ECC시스템의 블록 다이아그램이다.2 is a block diagram of a general ECC system to which the present invention is applied.

상기 도 2를 참조하면, ECC시스템은 입출력기(Chip IO Block; 70)와 제어기(Control Logic Block; 60)와, 제곱연산기(Squaring Logic Block; 20)와, 덧셈/배수/뺄셈연산기(Addition/Doubling/Subtraction Logic Block; 20)와, 곱셈기(Multiplier Logic Block; 10)로 구성된다. 이러한 ECC시스템은 통상 하나의 칩(chip)으로 구현된다.Referring to FIG. 2, the ECC system includes an input / output (Chip IO Block) 70, a controller (Control Logic Block) 60, a square operation (Squaring Logic Block) 20, and an addition / multiply / subtraction operator (Addition / Doubling / Subtraction Logic Block 20) and a multiplier logic block 10. Such an ECC system is usually implemented with one chip.

상기 곱셈기(10)는 n비트(bits)의 s와 t를 입력하여 유한체 GF(2n)상에서 곱셈 연산을 하고, 그 곱셈 연산 결과에 따른 n비트의 s*t를 구한다. 상기 제곱연산기(20)는 n비트의 z에 대하여 유한체 GF(2n)상에서 제곱 연산을 하고 그 제곱 연산 결과에 따른 z2를 구한다. 상기 제곱연산기(20)는 상기 곱셈기(10)와 연계하여 구현될 수도 있고, 상기 곱셈기(10)와 별도로 구현될 수도 있다. 상기 역원연산기(Inversion Logic Block; 30)는 g를 입력하여 유한체 GF(2n)상에서 역원 연산을 하고, 그 역원 연산 결과에 따른 g-1을 출력한다. 이때 상기 역원연산기(30)는 상기 곱셈기(10)와 상기 제곱연산기(20)를 이용하여 역원 연산을 수행할 수도 있고, 상기 역원연산기(30)를 독립적으로 구현하여 역원 연산을 수행할 수도 있다. 상기 덧셈/배수/뺄셈연산기(40)는 P1, P2를 입력하여 유한체 GF(2n)상에서 덧셈, 배수, 뺄셈 연산을 수행하고, 그 연산 결과에 따른 P3를 출력한다. 이때 상기 덧셈/배수/뺄셈연산기(40)는 상기 역원연산기(30), 상기 곱셈기(10) 및 상기 제곱연산기(20)를 이용하여 연산을 수행한다. 스칼라 곱셈 연산기(50)는 n을 입력하여 유한체 GF(2n)상에서 스칼라 곱셈 연산을 수행하고, 그 연산 결과에 따른 kP를 출력한다. 이때 상기 스칼라 곱셈 연산기(50)는 상기 덧셈/배수/뺄셈연산기(40)를 반복적으로 사용하여 스칼라 곱셈 연산을 수행한다. 상기 제어기(60)는 상기 칩 입출력기(70)의 내부 제어 레지스터(control register)에 저장되는 명령들(addition, doubling, subtraction, scalar multiplication)을 해석하여 각 블록들 동작을 제어한다. 상기 칩 입출력기(70)는 칩 외부에서 주소(addr)와 데이터(data)를 입력받아 계산에 필요한 n, P1, P2, a를 해당 블록으로 전달하고, 게산 결과값 P3를 전달받아 데이터로서 출력한다. 또한 상기 칩 입출력기(70)는 명령들을 내부 제어 레지스터에 저장해 두었다가 상기 제어기(60)에 전달한다.The multiplier 10 inputs n bits s and t to perform a multiplication operation on the finite field GF (2 n ), and obtains n bits s * t according to the multiplication operation result. The square operator 20 performs a square operation on n-bit z on the finite field GF (2 n ) and obtains z 2 according to the square operation result. The square operator 20 may be implemented in conjunction with the multiplier 10 or may be implemented separately from the multiplier 10. The Inversion Logic Block 30 inputs g to perform inverse operation on the finite field GF ( 2n ), and outputs g −1 according to the result of the inverse operation. In this case, the inverse operator 30 may perform an inverse operation using the multiplier 10 and the square operator 20, or perform an inverse operation by independently implementing the inverse operator 30. The add / multiply / subtractor 40 inputs P 1 and P 2 to perform addition, multiplication, and subtraction on finite field GF (2 n ), and outputs P 3 according to the result of the operation. In this case, the addition / multiply / subtractor 40 performs an operation using the inverse operator 30, the multiplier 10, and the square operator 20. The scalar multiplication operator 50 inputs n to perform a scalar multiplication operation on the finite field GF (2 n ), and outputs kP according to the operation result. In this case, the scalar multiplication operator 50 performs a scalar multiplication operation by repeatedly using the addition / multiply / subtraction operator 40. The controller 60 interprets instructions (addition, doubling, subtraction, scalar multiplication) stored in an internal control register of the chip input / output 70 to control operations of each block. The chip input / output unit 70 receives an address adder and data from the outside of the chip, transfers n, P 1 , P 2 , and a required for the calculation to the corresponding block, and receives the calculation result P 3 . Output as data. In addition, the chip input / output 70 stores instructions in an internal control register and transmits the instructions to the controller 60.

상기 연산 로직에서 스칼라 곱셈 연산은 상술한 바와 같이 다수의 배수 연산들과 덧셈 연산들로 간단히 구할 수 있다. 통상적으로 상기 방법은 하기의 <알고리즘 1>과 같은 오름차순이진연산(right-to-left binary method)에 의해 구현될 수 있으며, 반대로 k의 상위부터 계산하는 내림차순이진연산(left-to-right binary method)에 의한 구현도 가능하다.The scalar multiplication operation in the operation logic can be obtained simply by a plurality of multiple operations and addition operations as described above. Typically, the method may be implemented by the right-to-left binary method, such as <Algorithm 1> below, on the contrary, the left-to-right binary method that calculates from the top of k Can also be implemented.

<알고리즘 1>Algorithm 1

INPUT : P∈Ea,b, k=(kn-1, kn-2, …, k1, k0) 는 정수INPUT: P∈E a, b , k = (k n-1 , k n-2 ,…, k 1 , k 0 ) is an integer

OUTPUT : kPOUTPUT: kP

1. Q1←O, R1←P1.Q 1 ← O, R 1 ← P

2. for i from 0 to n-12.for i from 0 to n-1

2.1. if(ki!= 0) Q2←Q1+R1 2.1. if (k i ! = 0) Q 2 ← Q 1 + R 1

2.2. R1←R1+R1 2.2. R 1 ← R 1 + R 1

3. return Q1 3. return Q 1

한편, 상기 <알고리즘 1>의 step 2.1은 ki가 1일때만 계산이 수행되어 SPA(Simple Power Attacks)에 취약하다. 즉, 상기 step 2.1의 덧셈(Addition) 연산이 수행될 때는 연산이 수행되지 않을 때에 비해 파워(power)의 소모량이 크므로, 외부에서 상기 파워 소모 차이를 감지하여 상기 k값을 알아낼 수 있다. 따라서, 보안에 대한 취약성을 가지게 되는 단점이 있다.On the other hand, step 2.1 of <Algorithm 1> is vulnerable to Simple Power Attacks (SPA) since the calculation is performed only when k i is 1. That is, when the addition operation of step 2.1 is performed, power consumption is greater than when the operation is not performed, and thus the k value may be determined by externally detecting the difference in power consumption. Therefore, there is a disadvantage of having a vulnerability to security.

상기 <알고리즘 1>의 보안 취약점을 해소하기 위하여 ki값에 관계없이 상기 덧셈 연산을 수행하는 하기 <알고리즘 2>의 방안이 제안되었다.In order to solve the security vulnerability of <Algorithm 1>, the following <Algorithm 2> method of performing the addition operation regardless of the value of k i has been proposed.

<알고리즘 2>Algorithm 2

INPUT : P∈Ea,b, k=(kn-1, kn-2, …, k1, k0) 는 정수INPUT: P∈E a, b , k = (k n-1 , k n-2 ,…, k 1 , k 0 ) is an integer

OUTPUT : kPOUTPUT: kP

1. Q1←O, Q2←O, R1←P1.Q 1 ← O, Q 2 ← O, R 1 ← P

2. for i from 0 to n-12.for i from 0 to n-1

2.1. Q2←Q1+R1 2.1. Q 2 ← Q 1 + R 1

2.2. R1←R1+R1 2.2. R 1 ← R 1 + R 1

2.3. 2.3.

3. return Q1 3. return Q 1

상기 <알고리즘 2>에 의하면 Q2라는 임시 버퍼를 두어 상기 덧셈 연산이 ki값에 관계없이 항상 연산하도록 하였다. 따라서, 외부에 의한 SPA 침입에 대해 키값(k)이 노출되지 않게 된다.According to the above <Algorithm 2>, a temporary buffer called Q 2 is provided so that the addition operation is always performed regardless of the k i value. Therefore, the key value k is not exposed to the SPA intrusion by the outside.

또한, 상기 step 2.3에서는 상기 <알고리즘 1>에서 구현한 조건 연산자를 사용하지 않고 동일한 연산을 효과적으로 구현하기 위하여 상기 <알고리즘 2>의 step 2.3과 같이 구현하는 것이 가능하다.In addition, in step 2.3, in order to implement the same operation effectively without using the conditional operator implemented in Algorithm 1, it may be implemented as in Step 2.3 of Algorithm 2.

한편, 상기 <알고리즘 2>는 상술한 바와 같이 SPA에 대해서는 막을 수 있지만 상기 <알고리즘 1>에서 ki=1일 때에만 step 2.1을 계산하였던 것을 모든 ki값에 대해 계산함으로 인해 연산 시간이 길어지게 되었다.[Algorithm 2>, on the other hand, can prevent the SPA as described above, but the calculation time is long due to calculating for all k i values that step 2.1 was calculated only when k i = 1 in <Algorithm 1>. I lost.

보다 구체적으로 설명하면, 정수값 k가 임의의 수라면 보통의 오름차순이진연산에서 연산회수는이고, 선계산을 하지 않고 일반적인 타원곡선에 적용되는 것 중에서 효율적인 스칼라 곱셈 연산 방법인 NAF(Non-Adjacent Form)을 사용하여 연산회수를 표한한다면이다. 그러나, 상술한 SPA에 견디는 알고리즘들은가 되므로, n값이 커짐에 따라 상기 두 방법보다 연산회수가 현저히 많아지게 되므로, 연산 시간도 현저히 길어지게 되는 단점이 있다.More specifically, if the integer value k is any number, then in normal ascending binary operation, the number of operations is If the number of operations is expressed using NAF (Non-Adjacent Form), an efficient scalar multiplication method, which is applied to a general elliptic curve without performing line calculation to be. However, the algorithms that withstand SPA described above Therefore, as n increases, the number of operations becomes significantly larger than those of the above two methods, and thus, the operation time also becomes significantly longer.

따라서, 본 발명의 목적은 연산 속도가 개선되고 SPA(Simple Power Attacks)에 견딜 수 있는 타원 곡선 암호화 알고리즘에서의 스칼라 곱셈 연산 방법을 구현하는 방법 및 장치를 제공함에 있다.Accordingly, it is an object of the present invention to provide a method and apparatus for implementing a scalar multiplication operation method in an elliptic curve encryption algorithm that can improve computation speed and withstand simple power attacks (SPA).

상기한 목적을 달성하기 위한 본 발명은, 타원 곡선 암호화 알고리즘에서의 스칼라 배수연산 과정중에서 키값의 자리수가 증가할 때마다 배수 연산을 하는 제1 배수연산자(R2)와 상기 제1 배수연산자(R2)와 제1 합산연산자(Q1)를 합산하여 출력하는 제2 합산연산자(Q2)와 상기 키값의 자리값이 1일때만 상기 제2 합산연산자(Q2)의 출력값을 상기 제1 합산연산자(Q1)로 입력시키는 타원 곡선 암호화 알고리즘을 구현하는 방법에 있어서, 상기 제1 배수연산자(R2)를 제2 배수연산자(R1)로 출력하고, 상기 제1 배수연산자(R2)가 배수 연산하는 과정과 상기 제2 배수연산자(R1)를 제1합산연산자(Q1)와 합산 연산하여 제2 합산연산자(Q2)로 출력하는 과정을 병렬 처리하는 것을 특징으로 한다.The present invention for achieving the above object, the first multiplex operator (R 2 ) and the first multiplexer (R 2 ) to perform a multiply operation every time the number of digits of the key value increases during the scalar multiplication operation in the elliptic curve encryption algorithm 2) and the first summing operator (second summing operator (Q 2) and the spot value of the key value 20 001 when the first sum of the output of the second summing operator (Q 2) for summing the outputs Q 1) In a method for implementing an elliptic curve encryption algorithm input by an operator Q 1 , the first multiple operator R 2 is output as a second multiple operator R 1 , and the first multiple operator R 2 is output. Multiplying the second multiplexing operator R 1 with the first summation operator Q 1 and outputting it to the second summation operator Q 2 in parallel.

상기 제1합산연산자는, 상기 키값의 소정 자리의 값 '0'또는 '1'에 1을 합산한 값을 m값으로 하여, 제m합산연산자를 입력시키는 것을 특징으로 한다.The first summation operator is configured to input the mth summation operator by setting the value obtained by adding 1 to the value '0' or '1' of the predetermined position of the key value as the m value.

한편, 상기 제1배수연산자의 배수 연산 과정은, 역변환 연산, 제곱 연산 및 곱셈 연산 중에서 선택된 어느 하나 이상의 연산을 포함하여 진행하는 것을 특징으로 하며, 상기 제2배수연산자와 제1합산연산자의 합산 연산 과정은, 역변환 연산, 제곱 연산 및 다수의 곱셈 연산들을 포함하여 진행하는 것을 특징으로 한다.On the other hand, the multiplication operation of the first fold operator, characterized in that it proceeds to include any one or more operations selected from the inverse transform operation, square operation and multiplication operation, the sum operation of the second fold operator and the first summing operator The process is characterized by including an inverse transform operation, a square operation and a multiplication operation.

또한, 상기 제2배수연산자와 제1합산연산자의 합산 연산 과정에 사용되는 상기 제2배수연산자는 상기 키값의 이전 자리 연산의 배수 연산과정에서 생성된 제1배수연산자로부터 출력된 값을 사용하는 것을 특징으로 한다.In addition, the second fold operator used in the summing operation of the second fold operator and the first summing operator uses the value output from the first fold operator generated in the multiplication operation of the previous digit operation of the key value. It features.

상기한 목적을 달성하기 위한 본 발명은, 타원 곡선 암호화 알고리즘에서의 스칼라 배수 연산 장치에 있어서, 제1 배수연산자(R2)의 저장을 위한 제1 레지스터와, 상기 제1 배수연산자(R2)로부터의 출력을 제2 배수연산자(R1)로 저장시키기 위한 제2 레지스터와, 제1 합산연산자(Q1)의 저장을 위한 제3 레지스터와, 제2 합산연산자(Q2)의 저장을 위한 제4 레지스터와, 상기 제1 레지스터로부터 출력된 제1 배수연산자(R2)를 입력받아 배수 연산하는 배수 연산기와, 상기 제2 배수연산자(R1)와 상기 제1 합산연산자(Q1)를 합산 연산 하여 제2 합산연산자(Q2)로 출력시키는 합산 연산기와, 상기 스칼라 배수 연산에서의 키값의 자리값에 따라 상기 제1 합산연산자(Q1) 및 상기 제2 합산연산자(Q2) 중에서 선택적으로 제1 합산연산자(Q1)로 출력시키는 제1 선택기를 구비하는 것을 특징으로 한다.The present invention for achieving the above object, according to the scalar multiple calculation unit in the elliptic curve cryptographic algorithms, the first of the first register for storage of multiple operators (R 2), wherein the first multiple operators (R 2) A second register for storing the output from the second multiplex operator R 1 , a third register for storing the first sum operator Q 1 , and for storing the second sum operator Q 2 . A multiplier operator that receives a fourth register, a first multiplier operator R 2 output from the first register, and multiplies the second multiplier operator R 1 and the first sum operator Q 1 . from the summing arithmetic unit for summing operation by the second summer output to the operator (Q 2), said scalar first summing operator (Q 1) and said second summing operator (Q 2) in accordance with the position values of the key values in a multiple operation optionally, the first selection of output to the first summation operator (Q 1) In that it comprises the features.

상기 제1 배수연산자(R2)의 초기값 설정을 위해 제2 선택기를 상기 제1 레지스터의 입력단에 추가하여 더 구비하는 것을 특징으로 한다.A second selector may be further added to an input terminal of the first register to set an initial value of the first multiplex operator R 2 .

한편, 상기 배수 연산기는 역변환 로직, 제곱로직 및 곱셈로직 중에서 선택된 어느 하나 이상의 로직을 포함하는 것을 특징으로 하며, 상기 합산 연산기는 역변환 로직, 제곱로직 및 곱셈로직 중에서 선택된 어느 하나 이상의 로직을 포함하는 것을 특징으로 한다.The multiplier operator may include one or more logic selected from inverse transform logic, square logic, and multiplication logic, and the summing operator includes one or more logic selected from inverse transform logic, square logic, and multiplication logic. It features.

또한, 상기 배수 연산기의 역변환 로직, 제곱로직 및 곱셈로직은 상기 합산 연산기에서 재사용 가능한 것을 특징으로 한다.In addition, the inverse transform logic, the square logic, and the multiplication logic of the multiple operator are reusable in the sum operator.

상기한 목적을 달성하기 위한 본 발명은, 타원 곡선 암호화 알고리즘에서의 스칼라 배수 연산 장치에 있어서, 제1 배수연산자(R2)의 x좌표값 및 y좌표값을 각각 저장하기 위한 제1 레지스터 및 제2 레지스터와, 제2 배수연산자(R1)의 x좌표값 및y좌표값을 각각 저장하기 위한 제3 레지스터 및 제4 레지스터와, 제1 합산연산자(Q1)의 x좌표값 및 y좌표값을 각각 저장하기 위한 제5 레지스터 및 제6 레지스터와, 제2 합산연산자(Q2)의 x좌표값 및 y좌표값을 각각 저장하기 위한 제7 레지스터 및 제8 레지스터와, 상기 각 레지스터들로부터 출력되는 값들을 입력받아 상기 스칼라 배수 연산의 각 과정중에서 사용되는 값들을 출력시키는 제어기와, 상기 제어기로부터 선택되어 출력된 상기 각 연산자들을 입력받아 역변환 연산시키는 역변환 연산기와, 상기 제어기 및 상기 역변환 연산기로부터 출력되는 상기 각 연산자들을 입력받아 곱셈 연산하는 곱셈 연산기와, 상기 제5 레지스터 내지 제8 레지스터의 값들을 입력받아 키값의 자리값에 따라 상기 제5 레지스터 및 제6레지스터로부터의 입력값과 제7 레지스터 및 제8레지스터로부터의 입력값중에서 선택하여 출력시키는 선택기를 포함하는 것을 특징으로 한다.The present invention for achieving the above object is, in the scalar multiple arithmetic unit in the elliptic curve encryption algorithm, the first register for storing the x-coordinate value and the y-coordinate value of the first multiple operator R 2 , respectively; 2 registers, a third register and a fourth register for storing the x and y coordinate values of the second multiplex operator R 1 , and the x and y coordinate values of the first sum operator Q 1, respectively. A fifth register and a sixth register for storing the data, a seventh register and an eighth register for storing the x- and y-coordinate values of the second sum operator Q 2 , respectively; A controller for receiving the input values and outputting values used in each process of the scalar multiple operation, an inverse transform calculator for receiving and inversely transforming the respective operators selected and output from the controller, and the controller And a multiplication operator for receiving and multiplying the operators output from the inverse transform operator, and receiving the values of the fifth and eighth registers from the fifth and sixth registers according to the position values of the key values. And a selector for selecting and outputting a value and an input value from the seventh register and the eighth register.

도 1은 종래 기술에 따른 타원 곡선 암호화 방법의 개념을 나타낸 도면이다.1 is a diagram illustrating a concept of an elliptic curve encryption method according to the prior art.

도 2는 종래 기술에 따른 타원 곡선 암호화 알고리즘을 구현한 도면이다.2 is a view of implementing an elliptic curve encryption algorithm according to the prior art.

도 3은 본 발명의 실시예에 따른 타원 곡선 암호화 알고리즘의 스칼라 배수연산을 구현한 블록도이다.3 is a block diagram of a scalar multiple operation of an elliptic curve encryption algorithm according to an embodiment of the present invention.

도 4는 본 발명의 실시예에 따른 타원 곡선 암호화 알고리즘을 구체화하여 구현한 블록도이다.4 is a block diagram embodying and implementing an elliptic curve encryption algorithm according to an embodiment of the present invention.

이하 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 도면들 중 참조번호들 및 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호들 및 부호들로 나타내고 있음에 유의해야 한다. 하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.DETAILED DESCRIPTION A detailed description of preferred embodiments of the present invention will now be described with reference to the accompanying drawings. It should be noted that reference numerals and like elements among the drawings are denoted by the same reference numerals and symbols as much as possible even though they are shown in different drawings. In the following description of the present invention, if it is determined that a detailed description of a related known function or configuration may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted.

상술한 종래기술의 <알고리즘 2>의 속도 개선을 위해 본 발명에서는 하기 <알고리즘 3>을 구현한다.In the present invention, the following <Algorithm 3> is implemented to improve the speed of the above-described <Algorithm 2>.

<알고리즘 3>Algorithm 3

INPUT : P∈Ea,b, k=(kn-1, kn-2, …, k1, k0) 는 정수INPUT: P∈E a, b , k = (k n-1 , k n-2 ,…, k 1 , k 0 ) is an integer

OUTPUT : kPOUTPUT: kP

1. Q1←O, Q2←O, R1←O, R2←P1.Q 1 ← O, Q 2 ← O, R 1 ← O, R 2 ← P

2. for i from 1 to n2.for i from 1 to n

2.1. R1←R2 2.1. R 1 ← R 2

2.2. R2←R2+R2 2.2. R 2 ← R 2 + R 2

2.3. Q2←Q1+R1 2.3. Q 2 ← Q 1 + R 1

2.4. 2.4.

3. return Q1 3. return Q 1

상기 본 발명에서 제안하는 <알고리즘 3>은 배수 연산(doubling)을 수행하는 R2에 추가하여 R1이라는 매개변수를 더 설정함으로써, 상기 배수 연산(doubling) 및 합산 연산(addition)을 동시에 수행하게 할 수 있다. 따라서, 상기 합산 연산(addition)을 모든 ki값에 대해 수행하더라도 종래의 상기 <알고리즘 2>에서의 연산 속도보다 빠르게 할 수 있다.Algorithm 3 proposed in the present invention sets the parameter R 1 in addition to R 2 performing doubling, thereby simultaneously performing the doubling and addition operations. can do. Therefore, even if the addition operation is performed on all k i values, it is possible to make it faster than the calculation speed of the conventional <Algorithm 2>.

즉, 상기 종래 기술의 <알고리즘 2>에서는 상기 배수 연산이 진행된 이후에다음 자리의 합산 연산이 수행되지만, 상기 <알고리즘 3>에서는 상기 배수 연산이 진행되는 과정 중에라도 이전 배수 연산 결과값이 R1에 저장되어, 상기 R1값을 이용하여 합산 연산을 동시에 수행하므로, 전체 연산 속도를 빠르게 할 수 있다.That is, in Algorithm 2 of the prior art, a sum operation of a next digit is performed after the multiplication operation is performed, but in Algorithm 3, the previous multiplication operation result value is R 1 even during the multiplication operation. In addition, since the summation operation is simultaneously performed using the R 1 value, the entire calculation speed can be increased.

상기 본 발명의 실시예에 따른 상기 <알고리즘 3>을 하드웨어적으로 구현한 도면이 도 3이다.3 is a diagram of hardware implementation of the <Algorithm 3> according to the embodiment of the present invention.

상기 도 3을 참조하면, 본 발명의 실시예에 따른 타원곡선 암호화 알고리즘의 구현 장치는 복수개의 선택기(100 및 150)들과, 복수개의 레지스터(110, 130, 140, 160 및 180)들과, 배수 연산기(120) 및 합산 연산기(170)를 포함한다. 상기 선택기(100 및 150)들은 멀티플렉서(Multiplexer)로서 구현될 수 있다.Referring to FIG. 3, an apparatus for implementing an elliptic curve encryption algorithm according to an embodiment of the present invention includes a plurality of selectors 100 and 150, a plurality of registers 110, 130, 140, 160, and 180, And a multiplier operator 120 and a sum operator 170. The selectors 100 and 150 may be implemented as multiplexers.

상기 배수 연산기(120)는 제1 배수연산자(R2)를 입력받아 상기 제1 배수연산자(R2)에 대한 배수 연산을 매 인덱스 i 마다 1회씩 수행하게 된다. 따라서, 상기 배수 연산기(120)의 출력값은 제1 선택기(100)를 거쳐 제1 레지스터(R2, 110)로 입력된다. 상기 제1 선택기(100)는 상기 제1 배수자(R2)의 초기값을 설정해 주기 위한 장치이다. 즉, 상기 제1 선택기의 최초 출력값으로는 P값을 출력하며, 이후 매 인덱스 i 마다는 상기 배수 연산기(120)로부터 입력받은 값을 상기 제1 레지스터(110)로 출력시킨다.The multiple computing unit 120 is receiving the first multiple operators (R 2) carried out once for every index i, the draining operation for draining the first operator (R 2). Therefore, the output value of the multiple operator 120 is input to the first registers R 2 and 110 via the first selector 100. The first selector 100 is a device for setting the initial value of the first drain (R 2 ). That is, a P value is output as an initial output value of the first selector, and then a value received from the multiplier operator 120 is output to the first register 110 at every index i.

또한, 상기 제1 레지스터(110)에 저장되어 있는 R2값은 본 발명에 따라 추가된 제2 레지스터(R1, 130)으로 입력되어 합산 연산 과정에 사용된다. 즉, 상기 제2레지스터(R1, 130)로부터 출력된 R1값은 합산 연산기(170)으로 입력된다. 상기 합산 연산기(170)는 상기 제2 레지스터(R1, 130)로부터 출력된 R1값과 제3 레지스터(Q1, 160)에 저장된 Q1을 함께 입력받아 상기 두 입력값을 합산 연산한다.In addition, the R 2 value stored in the first register 110 is input to the second registers R 1 and 130 added according to the present invention and used for the summation calculation process. That is, the R 1 value output from the second registers R 1 and 130 is input to the sum calculator 170. The summing arithmetic unit 170 is the second register (R 1, 130), the R 1 value and a third register for receiving with a Q 1 stored in the (Q 1, 160) output from the computed sum of the two input values.

한편, 상기 합산 연산기(170)로부터 출력된 합산 연산값은 제4 레지스터(Q2, 140)에 저장되며, 상기 저장된 값은 제2 선택기(150)로 입력된다.Meanwhile, the sum operation value output from the sum operator 170 is stored in the fourth registers Q 2 and 140, and the stored value is input to the second selector 150.

상기 제2 선택기(150)에서는 매 인덱스 i 마다 ki-1의 값이 '1'인지 '0'인지 판단하여 제3 레지스터(Q1, 160)으로 출력하게 된다.The second selector 150 determines whether the value of k i-1 is '1' or '0' for each index i and outputs the result to the third registers Q 1 and 160.

상기 판단결과 ki-1의 값이 '1'일 경우에는 상기 제4 레지스터(140)로부터 입력받은 Q2값을 출력하며, ki-1의 값이 '0'인 경우에는 상기 제3 레지스터(160)로부터 입력받은 Q1값을 출력한다. 즉, ki-1의 값이 '0'인 경우에는 Q1값의 변화가 없게 되므로 상기 본 발명의 알고리즘을 만족하게 된다.If the result of the determination k i-1 is '1', the Q 2 value received from the fourth register 140 is output. When k i-1 is '0', the third register is output. Outputs the Q 1 value received from (160). That is, when the value of k i-1 is '0', there is no change in the Q 1 value, thereby satisfying the algorithm of the present invention.

상기 제2 선택기(150)에서 현재 진행되고 있는 인덱스 i의 이전 값으로 판단하는 이유는 본 발명에서는 종래 알고리즘과는 달리 배수 연산(doubling)이 먼저 진행됨으로 인해, 합산 연산(addition)의 단계가 1 인덱스값만큼 계속 시프트(shift)되어 수행되기 때문이다.The reason why the second selector 150 determines the previous value of the index i currently being performed is different from that of the conventional algorithm, since the doubling is performed first. This is because the shift operation is continuously performed by the index value.

또한, 추가적으로 제5 레지스터(180)을 구비하여 k값을 저장하며 상기 각 연산 단위마다 ki-1값을 출력하여 상기 제2 선택기(150)로 입력시키는 것이 바람직하다.In addition, it is preferable to further include a fifth register 180 to store the k value, output a k i-1 value for each operation unit, and input the k i-1 value to the second selector 150.

최종적으로, 모든 인덱스 i값에 대한 상기 각 연산들이 종료되면 Q1에 저장되어 있는 값이 출력되며, 상기 출력값은 kP가 된다.Finally, when each operation for all index i values is finished, the value stored in Q 1 is outputted, and the output value is kP.

한편, 상술한 바에 의하면, 상기 배수 연산(doubling) 및 합산 연산(addition)은 다수의 역변환 연산, 제곱 연산 및 다수의 곱셈 연산들로 구성된다.Meanwhile, as described above, the doubling and addition operations include a plurality of inverse transform operations, a square operation, and a plurality of multiplication operations.

이하에서는 상기 도 3에서 도시한 알고리즘 구현예를 도 4를 참조하여 보다 구체적으로 설명한다.Hereinafter, the algorithm implementation shown in FIG. 3 will be described in more detail with reference to FIG. 4.

상기 도 4는 배수 연산 및 합산 연산의 내부 연산을 포함하여 구성되는 타원 곡선 알고리즘을 세부적인 하드웨어 도면으로 구현한 것이다.4 is a detailed hardware diagram of an elliptic curve algorithm including internal operations of multiplication and summation operations.

우선, R2=(R2,x, R2,y), R1=(R1,x, R1,y), Q1=(Q1,x, Q1,y), Q2=(Q2,x, Q2,y)이라고 가정한다.First, R 2 = (R 2, x , R 2, y ), R 1 = (R 1, x , R 1, y ), Q 1 = (Q 1, x , Q 1, y ), Q 2 = Assume (Q 2, x , Q 2, y ).

상기 도 4를 참조하면, 상기 도 3에 대한 구체적인 구현도로써 본 발명의 실시예에 따른 타원곡선 암호화 알고리즘의 구현 장치는 복수개의 선택기(202, 203, 216 및 217), 복수개의 레지스터(201, 204 내지 213), 복수개의 제어기(214 및 219), 역변환 연산기(215) 및 곱셈 연산기(218)들로 구성된다.Referring to FIG. 4, the apparatus for implementing an elliptic curve encryption algorithm according to an embodiment of the present invention as a detailed implementation diagram of FIG. 3 includes a plurality of selectors 202, 203, 216, and 217, and a plurality of registers 201,. 204 through 213, a plurality of controllers 214 and 219, an inverse transform operator 215, and a multiplication operator 218.

상기 각 레지스터(201, 204 내지 213)들은 본 발명의 연산에 사용되는 각 파라메터들로써 k, g, a, Q1,x, Q1,y, R1,x, R1,y, R2,x, R2,y, Q2,x, Q2,y등의 값을 저장한다.The registers 201, 204 to 213 are k, g, a, Q 1, x , Q 1, y , R 1, x , R 1, y , R 2, as the respective parameters used in the operation of the present invention . Stores the values x , R 2, y , Q 2, x , Q 2, y, and so on.

또한, 상기 역변환 연산기(215) 및 곱셈 연산기(218)는 본 발명에 따른 알고리즘상의 배수 연산 및 합산 연산시 수행되는 세부 연산 절차인 역변환 연산 및 곱셈 연산을 수행한다. 상기 배수 연산 및 합산 연산은 파이프 라인(pipeline) 방식으로 동시에 이루어지기 때문에, 상기 역변환 연산기(215) 및 곱셈 연산기(218)를 하나씩만 구비하여도 상기 두 연산에서 공통적으로 사용할 수 있다. 즉, 상기 배수 연산과정에서 역변환 연산기(215)를 사용할 때, 상기 합산 연산에서 곱셈 연산기(218)를 사용하며, 상기 합산 연산에서 역변환 연산기(215)를 사용할 때, 상기 배수 연산에서 곱셈 연산기(218)를 사용하는 것이 가능하다. 상기와 같은 연산의 구체적인 절차는 후술하기로 한다.In addition, the inverse transform operator 215 and the multiplication operator 218 perform an inverse transform operation and a multiplication operation, which are detailed calculation procedures that are performed in the multiplication and summation operations according to the present invention. Since the multiplying and summing operations are performed simultaneously in a pipelined manner, even if the inverse transform operator 215 and the multiplication operator 218 are provided one by one, they can be commonly used in the two operations. That is, when the inverse operator 215 is used in the multiplication operation, a multiplication operator 218 is used in the addition operation, and when the inverse operator 215 is used in the addition operation, the multiplication operator 218 is used in the multiplication operation. It is possible to use). The detailed procedure of the above operation will be described later.

한편, 제1 제어기(214) 및 제2 제어기(219)는 상기 합산 연산 및 배수 연산 절차를 제어하여 각 파라메터들이 상술한 알고리즘의 소정 절차대로 연산될 수 있도록 한다. 예컨대, 상기 배수 연산과정이 시작되면 R2,x를 저장하고 있는 레지스터(210)로부터 입력받은 상기 R2,x를 상기 역변환 연산기(215)로 출력하여, 상기 역변환 연산기(215)에서를 계산하도록 한다. 상기 연산이 수행되는 중, 상기 제1 제어기(214)는 Q1,x, Q1,y, R1,x, R1,y를 저장하고 있는 각 레지스터들(206 내지 209)로부터 상기 각 파라메터들을 입력받아 제4 선택기(217)로 출력하며, 최종적으로 곱셈 연산기(218)를 통해 Q2,x및 Q2,y값을 계산한다.On the other hand, the first controller 214 and the second controller 219 controls the sum operation and the multiplication operation procedure so that each parameter can be calculated according to the predetermined procedure of the algorithm described above. For example, when the drainage operation process starts R 2, by storing the x wherein R 2, received from the register 210, which outputs a x in the inverse computing unit 215, in the inverse computing unit 215 To be calculated. While the operation is being performed, the first controller 214 may store the parameters from the registers 206 to 209 storing Q 1, x , Q 1, y , R 1, x , R 1, y . These signals are received and output to the fourth selector 217, and finally the Q 2, x and Q 2, y values are calculated by the multiplication operator 218.

또한, 상기 제1 선택기(202) 및 제2 선택기(203)는 k값을 저장하고 있는 레지스터(201)로부터 각 인덱스 i 마다 ki-1값을 입력받고, 상기 입력된 ki-1값에 따라 Q1,x및 Q1,y와 Q2,x및 Q2,y중에서 선택하여 각각 Q1,x및 Q1,y로 출력한다.In addition, the first selector 202 and the second selector 203 receive a k i-1 value for each index i from the register 201 storing the k value, and apply the k i-1 value to the input k i-1 value. Therefore, Q 1, x and Q 1, y and Q 2, x and Q 2, y are selected and output as Q 1, x and Q 1, y , respectively.

이하에서는, 상기 도 3 및 도 4에서 상술한 하드웨어 구성에 의한 본 발명에 따른 속도가 개선된 타원 곡선 암호화 알고리즘의 구체적인 수행 절차를 상기 <알고리즘 3> 및 하기 <표 3>을 참조하여 설명한다.Hereinafter, a detailed execution procedure of an elliptic curve encryption algorithm with improved speed according to the present invention by the hardware configuration described above with reference to FIGS. 3 and 4 will be described with reference to <Algorithm 3> and <Table 3>.

(알고리즘 3에 대한 세부 실행절차)Detailed Procedure for Algorithm 3

[T = 1 일 때][When T = 1]

단계 1 :를 계산한다. (step 2.2의 세부단계), (Inversion(215)을 이용),Step 1: Calculate (substep 2.2), (using Inversion (215)),

단계 2 :,의 값을 각각,에 저장한다. (step 2.1)Step 2: , Value of each , Store in (step 2.1)

단계 3 :를 계산하여 λ에 저장한다. (step 2.2의 세부단계), (Multiplication(218)을 이용),Step 3: Calculate and store in λ. (substep 2.2), (using Multiplication (218)),

의 계산을 시작한다.(step 2.3의 세부단계) Start the calculation of (detailed steps in step 2.3).

단계 4 :를 계산하여 임시 저장소()에 보관한다.(step 2.2의 세부단계), (는 step 2.3에서 사용되나 step 4까지는 사용되지 않음)Step 4: To calculate temporary storage ( ) (In detail in step 2.2), ( Is used in step 2.3 but not until step 4)

의 계산을 계속 진행한다.(step 2.3의 세부단계) Continue with the calculation of (detailed steps in step 2.3).

단계 5 :를 계산하여 임시 저장소()에 보관한다.(step 2.2의 세부단계)Step 5: To calculate temporary storage ( ) (In detail in step 2.2)

의 계산을 완료한다.(step 2.3의 세부단계) Complete the calculation of (detailed steps in step 2.3).

단계 6 :,의 값을 각각,에 저장한다. (step 2.2의 세부 마지막 단계)Step 6: , Value of each , Store in (final final step in step 2.2)

[T > 1 일 때][When T> 1]

단계 1 :의 계산을 시작한다. (step 2.2의 세부단계)Step 1: Begin the calculation of. (details in step 2.2)

를 계산하여 λ에 저장한다.(step 2.3의 세부단계) Calculate and store in λ (Detailed Step in Step 2.3)

단계 2 :의 계산을 계속한다. (step 2.2의 세부단계)Step 2: Continue counting. (details in step 2.2)

를 계산하여에 저장한다.(step 2.3의 세부단계) By calculating Save in (Step 2.3)

단계 3 :의 계산을 완료한다. (step 2.2의 세부단계)Step 3: Complete the calculation. (details in step 2.2)

를 계산하여에 보관한다.(step 2.3의 세부단계) By calculating (In step 2.3)

단계 4 : ki-1값에 의해,의 값을,에 저장하거나 저장하지 않는다.(step 2.4)Step 4: by k i-1 value , The value of , Save to or don't save (step 2.4)

단계 5 :,의 값을 각각,에 저장한다. (step 2.1)Step 5: , Value of each , Store in (step 2.1)

단계 6 :를 계산하여 λ에 저장한다. (step 2.2의 세부단계)Step 6: Calculate and store in λ. (details in step 2.2)

의 계산을 시작한다.(step 2.3의 세부단계) Start the calculation of (detailed steps in step 2.3).

단계 7 :를 계산하여 임시 저장소()에 보관한다.(step 2.2의 세부단계), (는 step 4에서로 값이 저장되거나 버려지므로 여기서 임시 저장소로 사용할 수 있다.)Step 7: To calculate temporary storage ( ) (In detail in step 2.2), ( In step 4 The value is stored or discarded and can be used as temporary storage here.)

의 계산을 계속 진행한다.(step 2.3의 세부단계) Continue with the calculation of (detailed steps in step 2.3).

단계 8 :를 계산하여 임시 저장소()에 보관한다.(step 2.2의 세부단계), (는 step 4에서로 값이 저장되거나 버려지므로 여기서 임시 저장소로 사용할 수 있다.)Step 8: To calculate temporary storage ( ) (In detail in step 2.2), ( In step 4 The value is stored or discarded and can be used as temporary storage here.)

의 계산을 완료한다.(step 2.3의 세부단계) Complete the calculation of (detailed steps in step 2.3).

단계 9 :,의 값을 각각,에 저장한다. (step 2.2의 세부 마지막 단계)Step 9: , Value of each , Store in (final final step in step 2.2)

<종래기술과 본 발명의 속도 비교><Comparison of speed between the prior art and the present invention>

하기에서는 본 발명의 실시예에 따른 속도가 개선된 타원 곡선 암호화 알고리즘에 의한 구현과 종래 기술에 따른 알고리즘의 성능을 하기 <표 4> 및 <표 5>에 에 의해 비교한다.In the following, the implementation of the improved elliptic curve encryption algorithm according to an embodiment of the present invention and the performance of the algorithm according to the prior art are compared by the following Tables 4 and 5.

하기 <표 4>는 종래 기술에 따른 <알고리즘 2>에 대한 연산단계를 보여주는표이다.Table 4 below shows a calculation step for Algorithm 2 according to the prior art.

ii CycleCycle Addition(Q2←Q1+R1)Addition (Q 2 ← Q 1 + R 1 ) Q2의 변화Q 2 change Doubling(R1←2R1)Doubling (R 1 ← 2R 1 ) R1의 변화Change in R 1 i=0i = 0 1c1c InvInv 2c2c 3c3c 4c4c 5c5c MultMult InvInv 6c6c SqSq Q2의 x값 갱신Update x value of Q 2 7c7c MultMult Q2의 y값 갱신Update the y value of Q 2 8c8c 9c9c MultMult 10c10c SqSq R1의 x값 갱신Update x value of R 1 i=1i = 1 11c11c InvInv MultMult R1의 y값 갱신Update y value of R 1 12c12c 13c13c 14c14c 15c15c MultMult InvInv 16c16c SqSq Q2의 x값 갱신Update x value of Q 2 17c17c MultMult Q2의 y값 갱신Update the y value of Q 2 18c18c 19c19c MultMult 20c20c SqSq R1의 x값 갱신Update x value of R 1

상기 <표 4>를 참조하면, f(x)가 n-비트(bit) 짜리 다항식일 때, 역변환 연산은 근사 몽고메리 역변환 알고리즘(almost Montgomery Inverse algorithm)이나 근사 역변환 알고리즘(almost Inverse algorithm)을 사용하면, 최소 4c 사이클(160bits)에서 6.2c 사이클(256bits)이 소요된다. 상기 결과는 논문 "Architectures for Unified Field Inversion with Applications in Elliptic Curve Cryptography", E. Savas and C. K. Koc, The 9th IEEE International Conference on Electronics, Circuits and Systems-ICECS 2002 에 게재되어 있다.Referring to Table 4, when f (x) is an n-bit polynomial, the inverse transform operation is performed using an approximation Montgomery Inverse algorithm or an approximate Inverse algorithm. It takes at least 4c cycles (160bits) to 6.2c cycles (256bits). The results are published in the articles "Architectures for Unified Field Inversion with Applications in Elliptic Curve Cryptography", E. Savas and C. K. Koc, The 9th IEEE International Conference on Electronics, Circuits and Systems-ICECS 2002.

이때, 곱셈 연산(Multiplication)이 배수합산 알고리즘(double-and-add algorithm)을 사용하여 직렬(serial)로 계산하면 c 사이클(cycle)에 계산된다. 그러므로, 상기 <표 4>를 참조하면 배수 연산(doubling) 부분에서 역변환연산(Inversion)이 실행되고 있을 때, 합산 연산(addition)에서 필요한 곱셈 연산(Multiplication)을 3번 실행할 수 있다. 그러므로 전체 스칼라 곱셈 알고리즘에서 3번의 곱셈 연산 시간을 줄일 수 있다. 그러나, 합산 연산(addition)의 과정에서 R1을 사용하므로, 배수 연산(doubling)의 세부 연산 중에 최소한 제곱 연산(Squaring)이 끝나야 다음 단계 합산 연산(addition)의 세부 연산인 역변환연산(Inversion)을 수행할 수 있다.In this case, multiplication is calculated in cycle c when the serial calculation is performed using a double-and-add algorithm. Therefore, referring to Table 4, when inversion is being performed in the doubling portion, multiplication required in addition may be performed three times. Thus, three multiplication operations can be reduced in the full scalar multiplication algorithm. However, addition Since R 1 is used in the process of, doubling At least a square operation must be completed during the detailed operation of to perform the inversion, which is a detailed operation of the next step addition operation.

따라서, 상기 ki에 대한 각 인덱스 i 마다 연산 시간은 10c cycle이 소요된다. 결론적으로, n 비트의 키에 대해 총 연산에 소요되는 시간은 10nc가 된다.Therefore, the calculation time for each index i for k i takes 10c cycles. As a result, the total operation time for the n-bit key is 10 nc.

한편, 하기 <표 5>를 참조하여 본 발명의 알고리즘에 따른 연산시간을 계산하면 8nc가 산출된다.Meanwhile, referring to Table 5 below, 8nc is calculated by calculating the calculation time according to the algorithm of the present invention.

ii CycleCycle Doubling(R2←R2+R2)Doubling (R 2 ← R 2 + R 2 ) R2의 변화Change in R 2 Addition(Q2←Q1+R1)Addition (Q 2 ← Q 1 + R 1 ) Q2의 변화Q 2 change i=0i = 0 1c1c InvInv 2c2c 3c3c 4c4c R1←R2(즉, R1=P)R 1 ← R 2 (ie R 1 = P) 5c5c MultMult InvInv 6c6c SqSq R2의 x값 갱신Update x value of R 2 7c7c MultMult R2의 y값 갱신, 즉R2=2PY value update of R 2, namely R 2 = 2P 8c8c i=1i = 1 9c9c InvInv MultMult 10c10c SqSq Q2의 x좌표 값 갱신Update x-coordinate of Q 2 11c11c MultMult Q2의 y좌표 값 갱신Update the y coordinate value of Q 2 12c12c R1←R2(즉, R1=2P)R 1 ← R 2 (ie R 1 = 2P) 13c13c MultMult InvInv 14c14c SqSq R2의 x값 갱신Update x value of R 2 15c15c MultMult R2의 y값 갱신, 즉R2=4PY value update of R 2, namely R 2 = 4P 16c16c

상기 <표 5>를 참조하면, 상기 합산 연산(addition)의 역변환 연산(Inversion)은 상기 배수 연산(doubling)의 역변환 연산(Inversion)이 끝나고 바로 수행이 가능하다. 즉, 상기 합산 연산(addition)에서는 상기 배수 연산의 결과로 생성된 R2를 사용하는 것이 아니라, 이전 단계의 R2를 버퍼링한 R1값을 사용하므로, 배수 연산(doubling)이 끝나기를 기다릴 필요가 없다. 또한, 종래에는 각 인덱스 i 마다 합산연산을 먼저하고 배수연산을 진행하였지만, 상기와 같은 본 발명에서는 이전 배수연산에 대한 값을 버퍼링해 둠으로써 상기 배수연산을 합산연산보다 더 먼저 수행할 수 있다.Referring to Table 5, an inversion of the addition operation may be performed immediately after the inversion of the doubling operation is completed. That is, the addition operation does not use R 2 generated as a result of the multiple operation, but uses the R 1 value buffered from the previous step R 2 , so it is necessary to wait for the doubling operation to be completed. There is no. In addition, in the related art, the sum operation is performed first for each index i and the multiplication operation is performed. However, in the present invention as described above, the multiplication operation may be performed earlier than the sum operation by buffering a value for the previous drain operation.

따라서, 상기 종래 연산과 비교할 때 5c 및 6c 부분의 연산 시간이 단축되므로, ki에 대한 각 인덱스 i 마다 연산 시간은 8c cycle이 소요된다. 결론적으로, n 비트의 키에 대해 총 연산에 소요되는 시간은 8nc가 되므로, 연산 대상 비트수가 증가할수록 상기 두 연산간의 연산 시간차이는 커지게 된다.Therefore, since the computation time of the 5c and 6c portion is shortened compared to the conventional operation, the computation time takes 8c cycle for each index i for k i . In conclusion, since the time required for the total operation for the key of n bits is 8 nc, the operation time difference between the two operations becomes larger as the number of bits to be operated increases.

참고적으로 상기와 같은 연산 방법들은 파이프라인(pipeline) 방식이라고 하며, 작은 시간에 보다 많은 명령어를 처리하기 위한 방법이다. 즉, 하나의 사이클 내에서 명령어는 부분적으로 실행되므로, 하나의 프로세서(processor)를 서로 다른 기능을 가진 여러 개의 서브프로세서(subprocessor)로 나누어 각 프로세서가 동시에 서로 다른 데이터를 처리하도록 하는 방법이다.For reference, the above computational methods are called pipelines and are methods for processing more instructions in a smaller time. That is, since the instructions are partially executed in one cycle, a processor is divided into several subprocessors having different functions so that each processor can process different data at the same time.

한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이 다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.Meanwhile, in the detailed description of the present invention, specific embodiments have been described, but various modifications are possible without departing from the scope of the present invention. Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined not only by the scope of the following claims, but also by those equivalent to the scope of the claims.

상술한 바와 같은 본 발명은, 타원 곡선 암호화 알고리즘에서 SPA에 견디는 알고리즘을 구현하면서, SPA에 견디는 구조를 구현함에 있어 발생되어지는 속도가 느려지는 문제점을 개선하였다. 또한, 암호화 알고리즘의 키값이 증가함에 따라 상기 암호화 알고리즘의 처리 속도는 종래 기술에 비해 그 차이가 현저해진다.The present invention as described above, while implementing the SPA-resistant algorithm in the elliptic curve encryption algorithm, the problem that the speed that is generated in implementing the structure to withstand SPA is improved. In addition, as the key value of the encryption algorithm increases, the difference in processing speed of the encryption algorithm becomes more noticeable than in the prior art.

Claims (11)

타원 곡선 암호화 알고리즘에서의 스칼라 배수연산 과정중에서 키값의 자리수가 증가할 때마다 배수 연산을 하는 제1 배수연산자(R2)와 상기 제1 배수연산자(R2)와 제1 합산연산자(Q1)를 합산하여 출력하는 제2 합산연산자(Q2)와 상기 키값의 자리값이 1일때만 상기 제2 합산연산자(Q2)의 출력값을 상기 제1 합산연산자(Q1)로 입력시키는 타원 곡선 암호화 알고리즘을 구현하는 방법에 있어서,The first multiplex operator R 2 , the first multiplex operator R 2 , and the first summation operator Q 1 that perform a multiply operation each time the number of digits of a key value increases in the scalar multiplication operation in an elliptic curve encryption algorithm. Elliptic curve encryption for inputting the output value of the second sum operator Q 2 to the first sum operator Q 1 only when the sum of the second sum operator Q 2 and the position of the key value is 1 In the method of implementing the algorithm, 상기 제1 배수연산자(R2)를 제2 배수연산자(R1)로 출력하고, 상기 제1 배수연산자(R2)가 배수 연산하는 과정과 상기 제2 배수연산자(R1)를 제1합산연산자(Q1)와 합산 연산하여 제2 합산연산자(Q2)로 출력하는 과정을 병렬 처리하는 것을 특징으로 하는 에스피에이에 견디는 타원 곡선 암호화 알고리즘을 구현하는 방법.Said first multiple operators (R 2) a second multiple operators (R 1) to the output, the first multiple operators (R 2) a multiple operation first summation process and the second multiple operators (R 1) to operator to implement the (Q 1) and the sum calculated by the second summation operator sp elliptic curve cryptography algorithms resistant thereto, characterized in that the parallel output to a process for (Q 2). 제1항에 있어서,The method of claim 1, 상기 제1합산연산자는,The first summing operator, 상기 키값의 소정 자리의 값 '0'또는 '1'에 1을 합산한 값을 m값으로 하여, 제m합산연산자를 입력시키는 것을 특징으로 하는 에스피에이에 견디는 타원 곡선 암호화 알고리즘을 구현하는 방법.And an m-th summation operator is input by setting a value obtained by adding 1 to a value '0' or '1' of the predetermined value of the key value as an m value. 제1항에 있어서,The method of claim 1, 상기 제1배수연산자의 배수 연산 과정은,The multiple operation process of the first multiple operator, 역변환 연산, 제곱 연산 및 곱셈 연산 중에서 선택된 어느 하나 이상의 연산을 포함하여 진행하는 것을 특징으로 하는 에스피에이에 견디는 타원 곡선 암호화 알고리즘을 구현하는 방법.18. A method for implementing an elliptic curve cryptographic algorithm, which is tolerate an SP, comprising at least one operation selected from an inverse transform operation, a square operation, and a multiplication operation. 제1항에 있어서,The method of claim 1, 상기 제2배수연산자와 제1합산연산자의 합산 연산 과정은,The summing operation process of the second fold operator and the first summing operator, 역변환 연산, 제곱 연산 및 곱셈 연산 중에서 선택된 어느 하나 이상의 연산을 포함하여 진행하는 것을 특징으로 하는 에스피에이에 견디는 타원 곡선 암호화 알고리즘을 구현하는 방법.18. A method for implementing an elliptic curve cryptographic algorithm, which is tolerate an SP, comprising at least one operation selected from an inverse transform operation, a square operation, and a multiplication operation. 제1항에 있어서,The method of claim 1, 상기 제2배수연산자와 제1합산연산자의 합산 연산 과정에 사용되는 상기 제2배수연산자는 상기 키값의 이전 자리 연산의 배수 연산과정에서 생성된 제1배수연산자로부터 출력된 값을 사용하는 것을 특징으로 하는 에스피에이에 견디는 타원곡선 암호화 알고리즘을 구현하는 방법.The second fold operator used in the summing operation of the second fold operator and the first summing operator uses a value output from the first fold operator generated in the multiplication operation of the previous digit operation of the key value. A method of implementing an elliptic curve encryption algorithm that resists SP. 타원 곡선 암호화 알고리즘에서의 스칼라 배수 연산 장치에 있어서,In the scalar multiple operation apparatus in an elliptic curve encryption algorithm, 제1 배수연산자(R2)의 저장을 위한 제1 레지스터와,A first register for storing the first multiple operator R 2 , 상기 제1 배수연산자(R2)로부터의 출력을 제2 배수연산자(R1)로 저장시키기 위한 제2 레지스터와,A second register for storing the output from the first multiple operator R 2 as a second multiple operator R 1 ; 제1 합산연산자(Q1)의 저장을 위한 제3 레지스터와,A third register for storing the first sum operator Q 1 , 제2 합산연산자(Q2)의 저장을 위한 제4 레지스터와,A fourth register for storing the second sum operator Q 2 , 상기 제1 레지스터로부터 출력된 제1 배수연산자(R2)를 입력받아 배수 연산하는 배수 연산기와,A multiplier calculator for receiving a first multiplier operator R 2 output from the first register and performing a multiply operation; 상기 제2 배수연산자(R1)와 상기 제1 합산연산자(Q1)를 합산 연산 하여 제2 합산연산자(Q2)로 출력시키는 합산 연산기와,A sum calculator configured to sum the second multiple operator R 1 and the first sum operator Q 1 and output the sum sum to the second sum operator Q 2 ; 상기 스칼라 배수 연산에서의 키값의 자리값에 따라 상기 제1 합산연산자(Q1) 및 상기 제2 합산연산자(Q2) 중에서 선택적으로 제1 합산연산자(Q1)로 출력시키는 제1 선택기를 구비하는 것을 특징으로 하는 타원 곡선 암호화 장치.A first selector for selectively outputting from the first sum operator Q 1 and the second sum operator Q 2 to the first sum operator Q 1 according to the position value of the key value in the scalar multiplication operation; Elliptic curve encryption device, characterized in that. 제6항에 있어서,The method of claim 6, 상기 제1 배수연산자(R2)의 초기값 설정을 위해 제2 선택기를 상기 제1 레지스터의 입력단에 추가하여 더 구비하는 것을 특징으로 하는 타원 곡선 암호화 장치.Elliptic curve encryption device further comprises a second selector in addition to the input terminal of the first register for setting the initial value of the first multiple operator (R 2 ). 제6항에 있어서,The method of claim 6, 상기 배수 연산기는,The multiplier calculator, 역변환 로직, 제곱로직 및 곱셈로직 중에서 선택된 어느 하나 이상의 로직을 포함하는 것을 특징으로 하는 타원 곡선 암호화 장치.An elliptic curve encryption device comprising at least one logic selected from inverse transform logic, square logic, and multiplication logic. 제6항에 있어서,The method of claim 6, 상기 합산 연산기는,The sum calculator, 역변환 로직, 제곱로직 및 곱셈로직 중에서 선택된 어느 하나 이상의 로직을 포함하는 것을 특징으로 하는 타원 곡선 암호화 장치.An elliptic curve encryption device comprising at least one logic selected from inverse transform logic, square logic, and multiplication logic. 제8항 또는 제9항에 있어서,The method according to claim 8 or 9, 상기 배수 연산기의 역변환 로직, 제곱로직 및 곱셈로직은 상기 합산 연산기에서 재사용 가능한 것을 특징으로 하는 타원 곡선 암호화 장치.The inverse transform logic, the square logic and the multiplication logic of the multiplier operator are reusable in the sum calculator. 타원 곡선 암호화 알고리즘에서의 스칼라 배수 연산 장치에 있어서,In the scalar multiple operation apparatus in an elliptic curve encryption algorithm, 제1 배수연산자(R2)의 x좌표값 및 y좌표값을 각각 저장하기 위한 제1 레지스터 및 제2 레지스터와,A first register and a second register for storing the x and y coordinate values of the first multiple operator R 2 , respectively; 제2 배수연산자(R1)의 x좌표값 및 y좌표값을 각각 저장하기 위한 제3 레지스터 및 제4 레지스터와,A third register and a fourth register for storing the x and y coordinate values of the second multiplex operator R 1 , respectively; 제1 합산연산자(Q1)의 x좌표값 및 y좌표값을 각각 저장하기 위한 제5 레지스터 및 제6 레지스터와,A fifth register and a sixth register for storing the x- and y-coordinate values of the first sum operator Q 1 , respectively; 제2 합산연산자(Q2)의 x좌표값 및 y좌표값을 각각 저장하기 위한 제7 레지스터 및 제8 레지스터와,A seventh and eighth registers for storing the x and y coordinate values of the second sum operator Q 2 , respectively; 상기 각 레지스터들로부터 출력되는 값들을 입력받아 상기 스칼라 배수 연산의 각 과정중에서 사용되는 값들을 출력시키는 제어기와,A controller which receives values output from the registers and outputs values used during each scalar multiple operation; 상기 제어기로부터 선택되어 출력된 상기 각 연산자들을 입력받아 역변환 연산시키는 역변환 연산기와,An inverse transform calculator configured to receive the inverse transform operation by receiving the respective operators selected and output from the controller; 상기 제어기 및 상기 역변환 연산기로부터 출력되는 상기 각 연산자들을 입력받아 곱셈 연산하는 곱셈 연산기와,A multiplication operator for receiving and multiplying the operators output from the controller and the inverse transform operator; 상기 제5 레지스터 내지 제8 레지스터의 값들을 입력받아 키값의 자리값에 따라 상기 제5 레지스터 및 제6레지스터로부터의 입력값과 제7 레지스터 및 제8레지스터로부터의 입력값중에서 선택하여 출력시키는 선택기를 포함하는 것을 특징으로 하는 타원 곡선 암호화 장치.A selector which receives the values of the fifth to eighth registers and selects among the input values from the fifth and sixth registers and the input values from the seventh and eighth registers according to the position values of the key values and outputs the selected values; Elliptic curve encryption device, characterized in that it comprises a.
KR10-2002-0066222A 2002-10-29 2002-10-29 Method and apparatus for implementing elliptic curve cryptosystem resisting against simple power attacks KR100451570B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0066222A KR100451570B1 (en) 2002-10-29 2002-10-29 Method and apparatus for implementing elliptic curve cryptosystem resisting against simple power attacks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0066222A KR100451570B1 (en) 2002-10-29 2002-10-29 Method and apparatus for implementing elliptic curve cryptosystem resisting against simple power attacks

Publications (2)

Publication Number Publication Date
KR20040037648A KR20040037648A (en) 2004-05-07
KR100451570B1 true KR100451570B1 (en) 2004-10-08

Family

ID=37335934

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0066222A KR100451570B1 (en) 2002-10-29 2002-10-29 Method and apparatus for implementing elliptic curve cryptosystem resisting against simple power attacks

Country Status (1)

Country Link
KR (1) KR100451570B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100891323B1 (en) 2005-05-11 2009-03-31 삼성전자주식회사 Method and apparatus to increase complexity of power analysis based on random point representation in binary field Elliptic Curve CryptographyECC
KR100867989B1 (en) * 2006-12-06 2008-11-10 한국전자통신연구원 SPA-resistant Left-to-Right Recoding and Unified Scalar Multiplication Methods

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353077A (en) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd Mutifold length arithmetic unit
KR20020086005A (en) * 2001-05-10 2002-11-18 학교법인 정석학원 Inverse operator for elliptic curve cryptosystems
KR20020094256A (en) * 2001-06-08 2002-12-18 이광엽 Apparatus and method of finite-field inversion and multiplication based on elliptic curve cryptography
KR100373669B1 (en) * 1999-09-29 2003-02-26 가부시키가이샤 히타치세이사쿠쇼 The device for processing secret information, recording medium for storing program and system therefor
KR20030027397A (en) * 2001-09-28 2003-04-07 주식회사장미디어인터렉티브 High speed operating remainder of a specific big integer for the public key cryptosystem

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353077A (en) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd Mutifold length arithmetic unit
KR100373669B1 (en) * 1999-09-29 2003-02-26 가부시키가이샤 히타치세이사쿠쇼 The device for processing secret information, recording medium for storing program and system therefor
KR20020086005A (en) * 2001-05-10 2002-11-18 학교법인 정석학원 Inverse operator for elliptic curve cryptosystems
KR20020094256A (en) * 2001-06-08 2002-12-18 이광엽 Apparatus and method of finite-field inversion and multiplication based on elliptic curve cryptography
KR20030027397A (en) * 2001-09-28 2003-04-07 주식회사장미디어인터렉티브 High speed operating remainder of a specific big integer for the public key cryptosystem

Also Published As

Publication number Publication date
KR20040037648A (en) 2004-05-07

Similar Documents

Publication Publication Date Title
CN109039640B (en) Encryption and decryption hardware system and method based on RSA cryptographic algorithm
EP1014617A2 (en) Method and apparatus for elliptic curve cryptography and recording medium therefor
EP1708081B1 (en) Method and device for calculating a Montgomery conversion parameter
JP2008252299A (en) Encryption processing system and encryption processing method
KR100442218B1 (en) Power-residue calculating unit using montgomery algorithm
WO2008106790A1 (en) Integer division in a manner that counters a power analysis attack
EP0952697B1 (en) Elliptic curve encryption method and system
JP2004304800A (en) Protection of side channel for prevention of attack in data processing device
KR100457177B1 (en) Serial-Parallel Multiplier to Multiply Two Elements in the Finite Field
KR20040095526A (en) Modular multiplication circuit with low power
CN117134900A (en) Structure for realizing asymmetric encryption and control method
KR100451570B1 (en) Method and apparatus for implementing elliptic curve cryptosystem resisting against simple power attacks
JP4423900B2 (en) Scalar multiplication calculation method, apparatus and program for elliptic curve cryptography
US20080263115A1 (en) Very long arithmetic logic unit for security processor
Sun et al. Design of a scalable RSA and ECC crypto-processor
Do-Nguyen et al. Multi-Functional Resource-Constrained Elliptic Curve Cryptographic Processor
Rasslan et al. New Generic Design to Expedite Asymmetric Cryptosystems Using Three-levels of Parallelism.
US20080275932A1 (en) Integer Division In A Manner That Counters A Power Analysis Attack
Schinianakis et al. RNS-Based Public-Key Cryptography (RSA and ECC)
Ghayoula et al. RSA-1024 Cryptography on Artix-7 FPGA: Medical Imaging Application
Sklavos et al. Design, architecture and performance evaluation of the wireless transport layer security
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
KR100341507B1 (en) Elliptic Curve Cryptography and Digital Signature Method using fast finite field operations
JPH1152854A (en) Arithmetic unit device on finite field and group computing device on elliptic curve
Somsuk The alternative Method to Finish Modular Exponentiation and Point Multiplication Processes

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee