KR100564765B1 - Finite field polynomial divider and Method thereof - Google Patents

Finite field polynomial divider and Method thereof Download PDF

Info

Publication number
KR100564765B1
KR100564765B1 KR1020030096896A KR20030096896A KR100564765B1 KR 100564765 B1 KR100564765 B1 KR 100564765B1 KR 1020030096896 A KR1020030096896 A KR 1020030096896A KR 20030096896 A KR20030096896 A KR 20030096896A KR 100564765 B1 KR100564765 B1 KR 100564765B1
Authority
KR
South Korea
Prior art keywords
register
stored value
polynomial
exclusive
value
Prior art date
Application number
KR1020030096896A
Other languages
Korean (ko)
Other versions
KR20050065129A (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 KR1020030096896A priority Critical patent/KR100564765B1/en
Publication of KR20050065129A publication Critical patent/KR20050065129A/en
Application granted granted Critical
Publication of KR100564765B1 publication Critical patent/KR100564765B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

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

Abstract

본 발명은 유한체 다항식 나눗셈 장치 및 그 방법에 관한 것으로 특히, 타원 곡선 암호(Ellitpic Curve Cryptography)를 위한 고속의 유한체 다항식 나눗셈 연산장치 및 그 방법에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a finite field polynomial divider and a method thereof, and more particularly, to a fast finite field polynomial divider and a method for ellitpic curve cryptography.

본 발명이 제공하는 유한체 다항식 나눗셈 장치는 입력 값인 제수 다항식, 피제수 다항식, 기약 다항식를 저장하고, 상기 다항식의 나눗셈 연산의 결과값을 저장하며, 상기 나눗셈 연산을 수행하기 위한 중간 계산값을 저장하는 레지스터부; 상기 레지스터부의 저장값에 대한 배타적 논리합을 수행하는 배타적 논리합 연산부; 상기 레지스터부의 저장값 그리고/또는 상기 배타적 논리합 연산부의 결과값에 대하여 쉬프트 연산을 수행하는 쉬프트 연산부; 상기 제수 다항식 그리고/또는 상기 레지스터부의 저장값의 차수를 구하는 차수 검색부; 및 상기 레지스터부와 쉬프트 연산부의 입력 선택 신호를 생성하기 위하여 상기 레지스터부의 저장값의 차수(order)를 비교하는 차수 비교부를 포함하여 본 발명의 목적 및 기술적 과제를 달성한다.The finite field polynomial divider provided by the present invention stores an input value of a divisor polynomial, a dividend polynomial, and a weak polynomial, stores a result of a division operation of the polynomial, and stores an intermediate calculation value for performing the division operation. part; An exclusive OR operation unit that performs an exclusive OR on a stored value of the register unit; A shift operation unit which performs a shift operation on a stored value of the register unit and / or a result value of the exclusive OR operation unit; An order retrieving unit for obtaining an order of the divisor polynomial and / or a stored value of the register unit; And an order comparison unit for comparing an order of stored values of the register unit to generate an input selection signal of the register unit and the shift calculator.

Description

유한체 다항식 나눗셈 장치 및 그 방법{Finite field polynomial divider and Method thereof}Finite field polynomial divider and method

도 1a는 본 발명이 제공하는 유한체 다항식 나눗셈 장치의 구성도이다.1A is a block diagram of a finite body polynomial divider provided by the present invention.

도 1b는 차수 비교부의 상세한 동작 흐름을 제시한 도면이다.1B is a view showing a detailed operation flow of the order comparison unit.

도 1c는 도 1a에 제시된 나눗셈 장치의 상세 구성도이다.FIG. 1C is a detailed configuration diagram of the division apparatus shown in FIG. 1A.

도 2는 본 발명이 제공하는 유한체 다항식 나눗셈 방법의 상세 흐름도이다.2 is a detailed flowchart of a finite body polynomial division method provided by the present invention.

도 3은 유한체 다항식 나눗셈 예제에 대한 중간값과 결과값을 제시한 도면이다.3 is a diagram showing the median and the result of the finite polynomial division example.

<도면의 주요 부호에 대한 설명><Description of Major Symbols in Drawing>

10 : 레지스터부 11 : 배타적 논리합 연산부 12 : 쉬프트 연산부DESCRIPTION OF SYMBOLS 10 Register part 11 Exclusive AND operation part 12 Shift operation part

13 : 차수 검색부 14 : 차수 비교부13: Order Search Unit 14: Order Comparison Unit

본 발명은 유한체 다항식 나눗셈 장치 및 그 방법에 관한 것으로 특히, 타원 곡선 암호(Ellitpic Curve Cryptography)를 위한 고속의 유한체 다항식 나눗셈 장치 및 그 방법에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a finite field polynomial divider and a method thereof, and more particularly, to a fast finite field polynomial divider and a method for ellitpic curve cryptography.

타원 곡선 암호 시스템(Elliptic Curve Crypto-system : ECC)은 Neal Kobliz와 Victor Miller에 의해 1985년에 제안된 이후로 공개키 암호 시스템으로서 많은 연구가 수행되어 왔다. 이 암호 시스템은 타원 곡선 상의 점들의 이산 대수의 어려움에 기반한 것으로, 같은 안전도에서 비교할 때 기존의 공개키 암호 시스템으로서 널리 활용되는 RSA(Rivest-Shamir-Adleman)/DSA(Digital Signature Algorithm)보다 빠르고, 키의 크기가 작다는 장점이 있다. 예를 들어 약 160 비트의 키 크기를 가지는 ECC의 안전도는 키 크기가 1024 비트인 RSA의 안전도와 동일하다고 알려져 있다. 따라서, 제한된 컴퓨팅 능력 및 메모리를 가지는 스마트 카드 등에 적합한 공개키 암호 시스템으로 주목받고 있다.Elliptic Curve Crypto-system (ECC) has been studied as a public key cryptosystem since it was proposed in 1985 by Neal Kobliz and Victor Miller. The cryptographic system is based on the difficulty of discrete logarithms of points on an elliptic curve, which is faster than the Rivest-Shamir-Adleman (RSA) / Digital Signature Algorithm (DSA), which is widely used as an existing public key cryptosystem when compared at the same level of security. The advantage is that the size of the key is small. For example, an ECC having a key size of about 160 bits is known to be the same as an RSA having a key size of 1024 bits. Therefore, it is attracting attention as a public key cryptographic system suitable for smart cards having limited computing capability and memory.

이러한 타원 곡선 암호에서의 연산은 타원 곡선 위의 점들의 연산으로 구성되는데, 이 타원 곡선 위의 점의 연산에는 서로 다른 두 점의 덧셈, 한 점의 2배 연산 등이 있으며, 이러한 타원 곡선 위의 점의 연산들은 유한체(finite field) 덧셈, 유한체 뺄셈, 유한체 곱셈, 유한체 나눗셈 등의 조합으로 이루어진다.The operation of the elliptic curve cryptography consists of the operations of the points on the elliptic curve. The operations of the points on the elliptic curve include the addition of two different points and the double operation of one point. Point operations consist of a combination of finite field addition, finite field subtraction, finite field multiplication, and finite field division.

상기한 유한체 연산 중에서도 가장 많은 시간을 소요하는 연산은 유한체 나눗셈 연산으로서, 고속의 타원 곡선 암호화를 위하여서는 유한체 나눗셈 연산 속도의 고속성이 필수적이다.Among the finite field operations described above, the most time-consuming operation is a finite field division operation, and the high speed of the finite field division operation speed is essential for a fast elliptic curve encryption.

기존의 유한체 나눗셈 연산은 다음과 같이 진행된다.The existing finite field division operation proceeds as follows.

첫째, 제수 다항식의 유한체 역원을 구한다.First, find the finite body inverse of the divisor polynomial.

둘째, 제수 다항식의 유한체 역원과 피제수 다항식에 대한 유한체 곱셈 결과를 구한다.Second, we obtain the finite field multiplication results for the finite inverse of the divisor polynomial and the dividend polynomial.

기존의 유한체 나눗셈 연산에 소요되는 시간은 유한체 역원을 구하는 시간과 그 역원과 피제수 다항식의 유한체 곱셈 시간의 합으로 주어지므로, 나눗셈 연산에 많은 시간이 소요된다.Since the time required for the conventional finite field division operation is given by the sum of the finite field inverse and the finite field multiplication time of the inverse and the dividend polynomial, much time is required for the division operation.

따라서, 본 발명은 상기와 같은 문제점을 해결하기 위해 창안된 것으로 본 발명의 목적 및 이루고자하는 기술적 과제는 기존의 나눗셈 연산 방식과 달리, 한 번의 연산으로 유한체 다항식 나눗셈 연산을 수행하는 유한체 다항식 나눗셈 장치 및 그 방법을 제공함에 있다.Accordingly, the present invention has been made to solve the above problems, and the object of the present invention and the technical problem to be achieved is a finite polynomial division that performs a finite polynomial division operation in one operation, unlike the conventional division operation method An apparatus and a method thereof are provided.

상기와 같은 목적 및 기술적 과제를 달성하기 위해 본 발명이 제공하는 유한체 다항식 나눗셈 장치는 입력 값인 제수 다항식, 피제수 다항식, 기약 다항식를 저장하고, 상기 다항식의 나눗셈 연산의 결과값을 저장하며, 상기 나눗셈 연산을 수행하기 위한 중간 계산값을 저장하는 레지스터부; 상기 레지스터부의 저장값에 대한 배타적 논리합을 수행하는 배타적 논리합 연산부; 상기 레지스터부의 저장값 그리고/또는 상기 배타적 논리합 연산부의 결과값에 대하여 쉬프트 연산을 수행하는 쉬프트 연산부; 상기 제수 다항식 그리고/또는 상기 레지스터부의 저장값의 차수를 구하는 차수 검색부; 및 상기 레지스터부와 쉬프트 연산부의 입력 선택 신호를 생성하기 위하여 상기 레지스터부의 저장값의 차수(order)를 비교하는 차수 비교부를 포함하여 본 발명의 목적 및 기술적 과제를 달성한다.
상기 레지스터부는, 바람직하게, 상기 제수 다항식을 초기 설정값으로 저장하고, 상기 쉬프트 연산부의 중간 결과값을 저장하는 제1 레지스터; 상기 기약 다항식을 초기 설정값으로 저장하고, 상기 제 1레지스터의 중간 결과값을 저장하는 제2 레지스터; 상기 피제수 다항식을 초기 설정값으로 저장하고, 상기 쉬프트 연산부의 중간 결과값을 저장하고, 상기 다항식의 나눗셈 연산의 결과값을 저장하는 제3 레지스터; 상기 제3 레지스터의 중간 결과값을 저장하는 제4 레지스터; 및 상기 제1 내지 제4 레지스터의 입력을 선택하는 다중화기를 포함하여 본 발명의 목적 및 기술적 과제를 달성한다.
In order to achieve the above object and technical problem, the finite field polynomial division apparatus provided by the present invention stores an input value of a divisor polynomial, a dividend polynomial, and a weak polynomial, stores a result of the division operation of the polynomial, and divides the division operation. A register section for storing an intermediate calculation value for performing the operation; An exclusive OR operation unit that performs an exclusive OR on a stored value of the register unit; A shift operation unit which performs a shift operation on a stored value of the register unit and / or a result value of the exclusive OR operation unit; An order retrieving unit for obtaining an order of the divisor polynomial and / or a stored value of the register unit; And an order comparison unit for comparing an order of stored values of the register unit to generate an input selection signal of the register unit and the shift calculator.
The register unit may include: a first register configured to store the divisor polynomial as an initial setting value and to store an intermediate result value of the shift calculator; A second register storing the abbreviated polynomial as an initial setting value and storing an intermediate result of the first register; A third register configured to store the dividend polynomial as an initial setting value, store an intermediate result value of the shift operator, and store a result value of the division operation of the polynomial; A fourth register for storing an intermediate result of the third register; And a multiplexer for selecting an input of the first to fourth registers to achieve the object and technical problem of the present invention.

상기와 같은 목적 및 기술적 과제를 달성하기 위해 본 발명이 제공하는 유한체 다항식 나눗셈 방법은 (a)상기 제수 다항식의 차수를 구하고, 상기 제1 레지스터에 상기 제수 다항식을 저장하고, 상기 제2 레지스터에 상기 기약 다항식을 저장하고, 상기 제3 레지스터에 상기 피제수 다항식을 저장하고, 상기 제4 레지스터에 0을 저장하는 단계; (b)상기 제1 레지스터 저장값의 차수가 0이 아니고, 상기 제1 레지스터의 최하위비트가 0이 아니고, 상기 제1 레지스터 저장값의 차수가 상기 제2 레지스터 저장값의 차수보다 작지 않으면, 상기 제1 레지스터의 저장값과 상기 제2 레지스터의 저장값에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하여 상기 제1 레지스터에 저장하고, 상기 제3 레지스터의 저장값과 상기 제4 레지스터의 저장값에 대한 배타적 논리합 연산 결과를 상기 제3 레지스터에 저장하는 단계; (c)상기 제1 레지스터 저장값의 차수가 0이 아니고, 상기 제1 레지스터의 최하위비트가 0이 아니고, 상기 제1 레지스터 저장값의 차수가 제2 레지스터 저장값의 차수보다 작으면, 상기 제1 레지스터의 저장값과 상기 제2 레지스터의 저장값을 교환하고, 상기 제3 레지스터의 저장값과 상기 제4 레지스터의 저장값을 교환하고, 상기 제1 레지스터의 저장값과 상기 제2 레지스터의 저장값에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하여 상기 제1 레지스터에 저장하고, 상기 제3 레지스터의 저장값과 상기 제4 레지스터의 저장값에 대한 배타적 논리합 연산 결과를 상기 제3 레지스터에 저장하는 단계; (d)상기 제1 레지스터 저장값의 차수가 0이 아니고, 상기 제1 레지스터의 최하위 비트가 0일 때, 상기 제1 레지스터의 저장값을 1비트 우측 쉬프트하는 단계; (e)상기 (b) 단계 또는 (c) 단계 또는 (d) 단계가 수행된 후, 상기 제3 레지스터의 최하위 비트가 0일 때, 상기 제3 레지스터의 저장값을 1비트 우측 쉬프트 하는 단계; (f)상기 (b) 단계 또는 (c) 단계 또는 (d) 단계가 수행된 후, 상기 제3 레지스터의 최하위 비트가 0이 아닐 때, 상기 제3 레지스터의 저장값과 상기 기약 다항식에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하는 단계; 및 (g)상기 제1 레지스터의 저장값의 차수가 0이 될 때까지 상기 (b)단계 내지 (f)단계를 반복하여, 상기 제1 레지스터의 저장값의 차수가 0이 되면, 상기 제3 레지스터의 저장값을 출력하는 단계를 포함하여 본 발명의 목적 및 기술적 과제를 달성한다.In order to achieve the above object and technical problem, the finite body polynomial division method provided by the present invention includes (a) obtaining an order of the divisor polynomial, storing the divisor polynomial in the first register, and storing the second polynomial in the second register. Storing the abbreviated polynomial, storing the dividend polynomial in the third register, and storing zero in the fourth register; (b) if the order of the first register stored value is not zero, the least significant bit of the first register is not zero, and the order of the first register stored value is not less than the order of the second register stored value, After performing an exclusive OR operation on the stored value of the first register and the stored value of the second register, the result is shifted right by one bit and stored in the first register, and the stored value of the third register and the fourth register. Storing the result of the exclusive OR operation on the stored value of the register in the third register; (c) if the order of the first register stored value is not 0, the least significant bit of the first register is not 0, and the order of the first register stored value is less than the order of the second register stored value, Exchange the stored value of the first register with the stored value of the second register, the stored value of the third register and the stored value of the fourth register, and the stored value of the first register and the storage of the second register. After performing the exclusive OR operation on the value, the result is shifted by one bit to the right and stored in the first register, and the exclusive OR operation result of the stored value of the third register and the stored value of the fourth register is stored in the first register. Storing in three registers; (d) right shifting the stored value of the first register by one bit when the order of the first register stored value is not zero and the least significant bit of the first register is zero; (e) shifting the stored value of the third register one bit to the right when the least significant bit of the third register is 0 after step (b) or (c) or (d) is performed; (f) after step (b) or (c) or (d) is performed, when the least significant bit of the third register is not zero, it is exclusive to the stored value of the third register and the contract polynomial. Performing a OR operation and shifting the result by one bit to the right; And (g) repeating steps (b) to (f) until the degree of the stored value of the first register is zero, and when the degree of the stored value of the first register is zero, the third The object and technical object of the present invention are achieved by outputting the stored value of the register.

이하, 본 발명의 구성, 작용 및 최적의 실시예를 첨부 도면을 참조하여 상세히 설명하되 도면의 구성요소들에 참조번호를 부여함에 있어서 동일 구성요소에 대해서는 비록 다른 도면상에 있더라도 동일 참조번호를 부여하였으며 당해 도면에 대한 설명시 필요한 경우 다른 도면의 구성요소를 인용할 수 있음을 미리 밝혀둔다.Hereinafter, with reference to the accompanying drawings, the configuration, operation and the best embodiments of the present invention will be described in detail with reference to the components of the drawings the same reference numerals are assigned to the same components, even if on different drawings. In the description of the drawings, if necessary, the components of other drawings may be cited in advance.

도 1a는 본 발명이 제공하는 유한체 다항식 나눗셈 연산장치의 구성도이다.Figure 1a is a block diagram of a finite body polynomial division calculation device provided by the present invention.

레지스터부(10)는 입력 값인 제수 다항식 a, 피제수 다항식 b, 기약다항식 f를 저장하고, 다항식 나눗셈의 결과값 b/a mod f을 저장하며, 나눗셈 연산을 수행하기 위한 중간 계산값을 저장하는 부분으로, 나눗셈 연산 시작시에 제수다항식 a, 피제수 다항식 b, 기약 다항식 f으로 설정(초기화)된다. 그리고, 차수 비교부(14)로부터 제어신호를 받아, 배타적 논리합 연산부(11)의 결과값 그리고/또는 상기 쉬프트 연산부(12) 그리고/또는 상기 레지스터부(10)의 결과값을 저장한다.The register unit 10 stores an input value of a divisor polynomial a, a dividend polynomial b, a weak polynomial f, a resultant b / a mod f of the polynomial division, and stores an intermediate calculation value for performing a division operation. Thus, at the start of the division operation, the divisor polynomial a, the dividend polynomial b, and the weak polynomial f are set (initialized). Then, the control signal is received from the order comparison unit 14, and the result value of the exclusive OR operation unit 11 and / or the result value of the shift operation unit 12 and / or the register unit 10 is stored.

배타적 논리합 연산부(11)는 레지스터부(10)의 저장값에 대한 배타적 논리합을 수행하는 부분으로, 유한체 다항식 덧셈을 연산을 수행하는 부분이다. 레지스터부(10)로부터 입력되는 다항식 값에 대한 배타적 논리합을 수행함으로써 유한체 다항식 덧셈을 연산한다. 이는, 본 발명의 유한체 나눗셈 장치는 유한체 다항식 덧셈의 반복으로 구성되어 있기 때문이다.The exclusive OR operation unit 11 performs an exclusive OR on a stored value of the register unit 10, and is a part that performs an operation on a finite body polynomial addition. A finite field polynomial addition is calculated by performing an exclusive OR on the polynomial values input from the register unit 10. This is because the finite field division apparatus of the present invention is composed of repetition of finite polynomial addition.

쉬프트 연산부(12)는 레지스터부(10)의 저장값 그리고/또는 배타적 논리합 연산부(11)의 결과값에 대하여 쉬프트 연산을 수행하는 부분으로, 자신에게 입력되는 유한체 다항식의 차수를 한 차수 줄이는 연산을 수행하는 부분이다. 쉬프트 연산부(12)는 레지스터부(10) 그리고/또는 배타적 논리합 연산부(11)로부터 입력되는 다항식 값에 대한 우측 쉬프트 연산을 수행한다.The shift operation unit 12 performs a shift operation on the stored value of the register unit 10 and / or the result of the exclusive OR operation unit 11. The shift operation unit 12 reduces the order of the finite polynomial inputted to itself by one order. This is the part to perform. The shift operator 12 performs a right shift operation on the polynomial value input from the register unit 10 and / or the exclusive-OR operator 11.

이는, 본 발명의 유한체 나눗셈 장치는 제수 다항식 및 피제수 다항식에 대하여 1비트 우측 쉬프트 연산을 수행함으로써 제수 다항식 및 피제수 다항식의 차수를 줄이는 연산의 반복으로 구성되어 있기 때문이다. 여기서, 쉬프트 연산부(12)의 입력은 레지스터부(10)의 저장값이나 배타적 논리합 연산부(11)의 출력값으로 구성되는 데 이를 구분하기 위한 제어신호는 차수 비교부(14)로부터 입력된다.This is because the finite field division apparatus of the present invention consists of repetition of operations for reducing the order of the divisor polynomial and the dividend polynomial by performing a 1-bit right shift operation on the divisor polynomial and the dividend polynomial. Here, the input of the shift calculating unit 12 is composed of the stored value of the register unit 10 or the output value of the exclusive OR operation unit 11, and a control signal for distinguishing the input is input from the order comparing unit 14.

차수 검색부(13)는 제수 다항식 a 그리고/또는 레지스터부(10)의 저장값의 차수를 구하는 부분이다.The order search section 13 is a section for obtaining the order of the stored value of the divisor polynomial a and / or the register section 10.

차수 비교부(14)는 레지스터부(10) 및 쉬프트 연산부(12)의 입력 선택 신호를 생성하기 위하여 레지스터부(10)의 저장값의 차수(n-th order)를 비교하는 부분으로, 본 발명의 유한체 다항식 나눗셈 장치의 제어 역할을 수행한다. 차수 비교부(14)는 레지스터부(10)의 저장값에 대한 차수를 비교하여 쉬프트 연산부(12)의 입력을 제어하고, 또한 레지스터부(10)의 입력을 제어하게 된다.The order comparison unit 14 compares the order of stored values of the register unit 10 to generate the input selection signals of the register unit 10 and the shift operation unit 12. It acts as a control for the finite field polynomial divider. The order comparison section 14 compares the orders of the stored values of the register section 10 to control the input of the shift calculating section 12, and also controls the input of the register section 10. FIG.

차수 비교부(14)는 내부적으로 두 개의 카운터로 구성됨이 바람직한데, 이는 나눗셈 연산 동안 항상 차수 검색을 하지 않고, 두 개의 카운터를 이용하여, 레지스터부(10)의 차수를 비교함으로써, 차수 검색시 발생하는 회로 상의 지연시간을 제거함으로써, 고속의 회로 구성이 가능하기 때문이다. 차수 비교부(14)의 상세한 동작은 도 1b를 참조하여 설명한다.It is preferable that the order comparison unit 14 is composed of two counters internally, which does not always search the order during the division operation, and compares the orders of the register unit 10 by using the two counters. This is because a high speed circuit configuration is possible by eliminating the delay time on the generated circuit. The detailed operation of the order comparison unit 14 will be described with reference to FIG. 1B.

도 1b는 차수 비교부의 상세한 동작 흐름을 제시한 도면이다.1B is a view showing a detailed operation flow of the order comparison unit.

차수 비교부(14)의 동작은 제1 단계로 제1 카운터에 제수 다항식 a의 차수를 저장하고, 제2 카운터에 기약다항식 f의 차수를 저장한다(S101). 다음으로 제1 카운터가 0이 아니고 제1 레지스터의 최하위비트가 0 이면, 제1 카운터를 감소시킨다(S102). 다음으로 제1 카운터가 0이 아니고 제1 레지스터의 최하위 비트가 0이 아니고 제1 카운터가 제2 카운터보다 작을 때는, 제1 카운터와 제2 카운터의 저장값을 교환하고 상기 제1 카운터를 감소시킨다(S103).The operation of the order comparison unit 14 stores the order of the divisor polynomial a in the first counter in the first step and the order of the weak polynomial f in the second counter (S101). Next, when the first counter is not 0 and the least significant bit of the first register is 0, the first counter is decremented (S102). Next, when the first counter is not zero and the least significant bit of the first register is not zero and the first counter is smaller than the second counter, the stored value of the first counter and the second counter is exchanged and the first counter is decremented. (S103).

다음으로 제1 카운터가 0이 아니고, 제1 레지스터의 최하위비트가 0이 아니고, 제1 카운터가 제2 카운터보다 클 때는, 제1 카운터를 감소시킨다(S104). 다음으로 제1 카운터가 0이 아니고, 제1 레지스터의 최하위비트가 0이 아니고, 상기 제1 카운터가 상기 제2 카운터와 같을 때는, 제1 카운터에 제1 레지스터의 저장값의 차수를 저장한다(S105).Next, when the first counter is not 0, the least significant bit of the first register is not 0, and the first counter is larger than the second counter, the first counter is decremented (S104). Next, when the first counter is not 0, the least significant bit of the first register is not 0, and the first counter is the same as the second counter, the first counter stores the order of the stored value of the first register ( S105).

S102부터 S105는 제1 카운터가 0이 될 때까지 반복되며, 제1 카운터가 0이 되면 차수 비교부(14)의 동작은 종료된다.S102 to S105 are repeated until the first counter becomes 0, and when the first counter becomes 0, the operation of the order comparison unit 14 ends.

도 1c는 도 1a에 제시된 연산장치의 상세 구성도이다. 도 1c를 참조하여 본 발명이 제공하는 연산장치를 상세히 설명한다.FIG. 1C is a detailed configuration diagram of the computing device shown in FIG. 1A. Referring to Figure 1c will be described in detail the computing device provided by the present invention.

레지스터부(10)는 위에서 언급한 바와 같이 입력 값인 제수 다항식 a, 피제수 다항식 b, 기약다항식 f를 저장하고, 다항식 나눗셈의 결과값 b/a mod f을 저장하며, 나눗셈 연산을 수행하기 위한 중간 계산값을 저장하는 부분으로, 제1 레지스터(101)는 제수 다항식 a를 초기 설정값으로 저장하고 쉬프트 연산부(12)의 중간 결과값을 저장한다.As described above, the register unit 10 stores the input value of the divisor polynomial a, the dividend polynomial b, and the weak polynomial f, the resultant value of the polynomial division b / a mod f, and an intermediate calculation for performing a division operation. As a part of storing a value, the first register 101 stores the divisor polynomial a as an initial setting value and stores an intermediate result value of the shift operator 12.

제2 레지스터(102)는 기약 다항식 f을 초기 설정값으로 저장하고, 제 1레지스터(101)의 중간 결과값을 저장하며 제3 레지스터(103)는 피제수 다항식 b를 초기 설정값으로 저장하며 쉬프트 연산부(12)의 중간 결과값을 저장하고, 유한체 나눗셈 연산 결과값을 저장한다. 제4 레지스터(104)는 제3 레지스터(103)의 중간 결과값을 저장한다. 다수의 다중화기들(105, 106, 107, 108)은 제1 내지 제4 레지스터들의 입력들을 선택한다.The second register 102 stores the weak polynomial f as an initial setting value, stores an intermediate result of the first register 101, and the third register 103 stores the dividend polynomial b as an initial setting value and shift operation unit. The intermediate result of (12) is stored, and the result of the finite field division operation is stored. The fourth register 104 stores the intermediate result of the third register 103. Multiplexers 105, 106, 107, 108 select the inputs of the first through fourth registers.

배타적 논리합 연산부(11)는 위에서 언급한 바와 같이 레지스터부(10)의 저장값에 대한 배타적 논리합을 수행하는 부분으로, 유한체 다항식 덧셈을 연산을 수행하는 부분이다. 제1 배타적 논리합 연산기(111)는 제1 레지스터(201)의 저장값과 제2 레지스터(202)의 저장값에 대한 배타적 논리합 연산을 수행한다.As described above, the exclusive OR operation unit 11 performs an exclusive OR on the stored value of the register unit 10, and is a part that performs an operation on a finite polynomial addition. The first exclusive OR operator 111 performs an exclusive OR operation on the stored value of the first register 201 and the stored value of the second register 202.

제2 배타적 논리합 연산기(112)는 제3 레지스터(203)의 저장값과 기약 다항식 f에 대한 배타적 논리합 연산을 수행하며, 제3 배타적 논리합 연산기(113)는 제3 레지스터(103)의 저장값과 제4 레지스터(104)의 저장값에 대한 배타적 논리합 연산을 수행한다. 제4 배타적 논리합 연산기(114)는 제3 배타적 논리합 연산기(113)의 결과값과 기약 다항식 f에 대한 배타적 논리합 연산을 수행한다.The second exclusive OR operator 112 performs an exclusive OR operation on the stored value of the third register 203 and the contracted polynomial f, and the third exclusive OR operator 113 is configured to perform an exclusive OR operation on the stored value of the third register 103. An exclusive OR operation is performed on the stored value of the fourth register 104. The fourth exclusive OR operator 114 performs an exclusive OR operation on the resultant value of the third exclusive OR operator 113 and the contracted polynomial f.

쉬프트 연산부(12)는 위에서 언급한 바와 같이 레지스터부(10)의 저장값 그리고/또는 배타적 논리합 연산부(11)의 결과값에 대하여 쉬프트 연산을 수행하는 부분으로, 제1 우측 쉬프트기(121)는 제1 레지스터(101)의 저장값 또는 제1 배타적 논리합 연산기(111)의 결과값에 대한 우측 쉬프트 연산을 수행하고, 제2 우측 쉬프트기(122)는 제3 레지스터(103)의 저장값 또는 제2 배타적 논리합 연산기(112)의 결과값 또는 제3 배타적 논리합 연산기(113)의 결과값 또는 제4 배타적 논리합 연산기(114)의 결과값에 대한 우측 쉬프트 연산을 수행한다. 다중화기들(123, 124)은 상기 우측 쉬프트기들(121,122)의 입력을 선택한다.As described above, the shift operation unit 12 performs a shift operation on the stored value of the register unit 10 and / or the result value of the exclusive OR operation unit 11, and the first right shifter 121 The right shift operation is performed on the stored value of the first register 101 or the result of the first exclusive OR operation 111, and the second right shifter 122 stores the stored value of the third register 103 or the first value. A right shift operation may be performed on the result of the two exclusive OR operators 112, the result of the third exclusive OR operator 113, or the result of the fourth exclusive OR operator 114. Multiplexers 123 and 124 select the inputs of the right shifters 121 and 122.

도 2는 본 발명이 제공하는 유한체 다항식 나눗셈 연산 방법의 상세 흐름도이다.2 is a detailed flowchart of a finite body polynomial division calculation method provided by the present invention.

우선 제수 다항식 a의 차수를 구하고, 제1 레지스터(R1)에 제수 다항식 a를 저장하고, 제2 레지스터(R2)에 기약 다항식 f를 저장하고, 제3 레지스터(R3)에 피제수다항식 b를 저장하고, 제4 레지스터(R4)에 0을 저장하여 유한체 다항식 나눗셈 연산을 위한 초기화가 이루어진다(S201).First, the degree of divisor polynomial a is obtained, the divisor polynomial a is stored in the first register R1, the abbreviated polynomial f is stored in the second register R2, and the divisor polynomial b is stored in the third register R3. In operation S201, the zero register is stored in the fourth register R4 to perform a finite body polynomial division operation (S201).

다음으로 제1 레지스터(R1) 저장값의 차수가 0이 아니고, 제1 레지스터(R1)의 최하위비트가 0이 아니고, 제1 레지스터 저장값의 차수(R1)가 제2 레지스터(R2) 저장값의 차수보다 작지 않을 때는, 제1 레지스터(R1)의 저장값과 제2 레지스터(R2)의 저장값에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하여 제1 레지스터(R1)에 저장하고[R1 ← (R1 XOR R2) >> 1], 제3 레지스터(R3)의 저장값과 제4 레지스터(R4)의 저장값에 대한 배타적 논리합 연산 결과를 상기 제3 레지스터에 저장한다[R3 ← (R3 XOR R4)](S202).Next, the order of the first register R1 stored value is not 0, the least significant bit of the first register R1 is not 0, and the order R1 of the first register stored value is the second register R2 stored value. If not less than the order of, the exclusive OR operation is performed on the stored value of the first register R1 and the stored value of the second register R2, and the result is shifted right by one bit to the first register R1. [R1 ← (R1 XOR R2) >> 1] and the result of the exclusive OR operation on the stored value of the third register R3 and the stored value of the fourth register R4 in the third register. ← (R3 XOR R4)] (S202).

다음으로, 제1 레지스터(R1) 저장값의 차수가 0이 아니고, 제1 레지스터(R1)의 최하위 비트가 0이 아니고, 제1 레지스터(R1) 저장값의 차수가 제2 레지스터(R2) 저장값의 차수보다 작을 때는, 제1 레지스터(R1)의 저장값과 제2 레지스터(R2)의 저장값을 교환하고[R1 ↔ R2], 제3 레지스터(R3)의 저장값과 제4 레지스터(R4)의 저장값을 교환하고[R3 ↔ R4], 제1 레지스터(R1)의 저장값과 제2 레지스터(R2)의 저장값에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하여 제1 레지스터(R1)에 저장하고[R1 ← (R1 XOR R2) >> 1], 제3 레지스터(R3)의 저장값과 제4 레지스터(R4)의 저장값에 대한 배타적 논리합 연산 결과를 제3 레지스터(R3)에 저장한다[R3 ← (R3 XOR R4)](S203).Next, the order of the first register R1 stored value is not 0, the least significant bit of the first register R1 is not 0, and the order of the first register R1 stored value is stored in the second register R2. When it is smaller than the order of the value, the stored value of the first register R1 and the stored value of the second register R2 are exchanged [R1 ↔ R2], and the stored value of the third register R3 and the fourth register R4. ), And perform an exclusive OR operation on the stored value of [R3 ↔ R4], the stored value of the first register (R1) and the stored value of the second register (R2), and shift the result by 1 bit to the right. [R1 ← (R1 XOR R2) >> 1], and the result of the exclusive OR operation on the stored value of the third register R3 and the stored value of the fourth register R4 is stored in the first register R1. (R3) (R3 XOR R4)] (S203).

다음으로 제1 레지스터(R1) 저장값의 차수가 0이 아니고, 제1 레지스터(R1)의 최하위 비트가 0이면, 제1 레지스터(R1)의 저장값을 1비트 우측 쉬프트한다[R1 ← R1 >> 1](S204).Next, if the order of the first register R1 stored value is not 0 and the least significant bit of the first register R1 is 0, the stored value of the first register R1 is shifted right by one bit [R1 ← R1> > 1] (S204).

다음으로 S202 단계 또는 S203 단계 또는 S204 단계가 수행된 후, 제3 레지스터(R3)의 최하위 비트가 0이면, 제3 레지스터(R3)의 저장값을 1비트 우측 쉬프트한다[R3 ← R3 >> 1](S205).Next, after step S202 or step S203 or S204 is performed, if the least significant bit of the third register R3 is 0, the stored value of the third register R3 is shifted right by one bit [R3 ← R3 >> 1 (S205).

다음으로 S202 단계 또는 S203 단계 또는 S204 단계가 수행된 후, 제3 레지 스터(R3)의 최하위 비트가 0이 아니면, 제3 레지스터(R3)의 저장값과 기약 다항식 f에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트한다[R3 ← (R3 XOR f) >> 1](S206).Next, after the step S202 or the step S203 or the step S204 is performed, if the least significant bit of the third register R3 is not 0, the exclusive OR operation is performed on the stored value of the third register R3 and the weak polynomial f. The result is then shifted right by one bit [R3 ← (R3 XOR f) >> 1] (S206).

다음으로 제1 레지스터(R1)의 저장값의 차수가 0이 될 때까지 S202 단계 내지 S206 단계가 반복되며, 제1 레지스터(R1)의 저장값의 차수가 0이 되면, 제3 레지스터(R3)의 저장값 즉, 나눗셈 연산 결과값 b/a mod f가 출력된다(S207).Next, steps S202 to S206 are repeated until the order of the stored values of the first register R1 is zero, and when the order of the stored values of the first register R1 is zero, the third register R3 is performed. Is stored, that is, the division operation result b / a mod f (S207).

본 발명에 따른 유한체 다항식 나눗셈 연산장치 및 방법을 이용하여, 유한체 다항식 나눗셈 연산의 일례를 든다.An example of a finite body polynomial division operation is given using the apparatus and method for finite body polynomial division according to the present invention.

도 3은 유한체 다항식 나눗셈 예제에 대한 중간값과 결과값을 제시한 것으로, (x2 + x) / (x3 + x +1) mod (x4 + x + 1) 를 계산하는 예제를 기술하였다. 즉, 피제수 다항식은 x2 + x 로서, 이진 벡터 0110으로 표현된다. 제수 다항식은 x3 + x +1으로서, 이진벡터 1011로 표현된다. 기약다항식은 x4 + x + 1으로서, 이진벡터 10011으로 표현된다. 도 3에서 카운터들은 도 1b에 제시된 차수 비교부(14)의 동작 흐름도에 나타난 단계를 따르며, 레지스터들은 상기 도 2의 유한체 다항식 나눗셈 연산 방법의 동작 절차 흐름도를 따른다.FIG. 3 shows the median and resultant values for the finite polynomial division example, describing an example of calculating (x 2 + x) / (x 3 + x +1) mod (x 4 + x + 1) It was. That is, the dividend polynomial is x 2 + x, which is represented by binary vector 0110. The divisor polynomial is x 3 + x +1, which is represented by a binary vector 1011. The weak polynomial is x 4 + x + 1, which is represented by binary vector 10011. In FIG. 3, the counters follow the steps shown in the operation flowchart of the order comparison unit 14 shown in FIG. 1B, and the registers follow the operation procedure flowchart of the finite body polynomial division calculation method of FIG. 2.

본 발명의 유한체 다항식 나눗셈 장치의 초기 설정은 제1 레지스터(101, R1)에 제수 다항식의 이진 벡터 1011이 저장되고, 제2 레지스터(102, R2)에 기약 다항식의 이진 벡터 10011이 저장되고, 제3 레지스터(103, R3)에 피제수 다항식의 이진 벡터 0110이 저장되고, 제4 레지스터(104, R4)는 초기값 0으로 설정된다(S201). 이 때, 차수 비교부(14)는 제1 카운터에 제수 다항식의 차수 3이 저장되고, 제2 카운터에 기약 다항식의 차수 4가 저장된다(S101).In the initial setting of the finite-polynomial division device of the present invention, a binary vector 1011 of a divisor polynomial is stored in a first register (101, R1), a binary vector 10011 of a contract polynomial is stored in a second register (102, R2), The binary vector 0110 of the dividend polynomial is stored in the third register 103 and R3, and the fourth register 104 and R4 are set to an initial value 0 (S201). At this time, the order comparison unit 14 stores the order 3 of the divisor polynomial in the first counter, and the order 4 of the weak polynomial in the second counter (S101).

상기 초기 설정 단계 후, 제1 레지스터의 최하위 비트가 0이 아니고, 제1 카운터가 제2 카운터보다 작으므로 제1 레지스터(101, R1)는 1101 <XOR> 10011의 결과값에 대한 1비트 우측 쉬프트 결과인 1100을 저장하고, 제2 레지스터(102, R2)는 1011을 저장하고, 제3 레지스터(103, R3)는 0110 <XOR> 0000의 결과인 0110을 저장하고, 제4 레지스터(104, R4)는 0110을 저장한다(S203).After the initial setting step, since the least significant bit of the first register is not zero and the first counter is smaller than the second counter, the first register 101 and R1 shift one bit to the result of 1101 <XOR> 10011. The result 1100, the second register 102, R2 stores 1011, the third register 103, R3 stores 0110, the result of 0110 < XOR > 0000, and the fourth register 104, R4. ) Stores 0110 (S203).

상기 S203 단계가 수행된 후 제3 레지스터(103, R3)의 최하위 비트가 0이므로, 제3 레지스터(103, R3)의 저장값인 0110의 1비트 우측 쉬프트 결과인 0011을 제3 레지스터(103, R3)에 저장한다(S205). 이 때 카운터 값은 도 1b의 S103 단계로서 제1 카운터는 기존 저장값에서 1이 감소한 3을 저장하고, 제2카운터는 제1카운터가 이전에 저장하고 있는 값 3을 저장하게 된다.After the step S203 is performed, since the least significant bit of the third registers 103 and R3 is 0, 0011, which is a right shift result of 1 bit of 0110 which is a stored value of the third registers 103 and R3, is converted into a third register 103, R3) (S205). In this case, the counter value is the step S103 of FIG. 1B, in which the first counter stores 3 in which 1 is decreased from the existing stored value, and the second counter stores the value 3 previously stored in the first counter.

계속하여, 도 1b와 도 2에 제시된 절차에 따라 연산을 수행하면, 도 3과 같은 결과를 얻는다.Subsequently, if the calculation is performed according to the procedure shown in Figs. 1B and 2, the result as shown in Fig. 3 is obtained.

도 3의 최하위 행을 수행하고 나면, 제1 카운터의 값이 0이 되어, 카운터의 연산은 종료가 되고, 제1 레지스터(101, R1)의 저장값의 차수가 0이 되어, 제3 레지스터(103, R3)의 저장값인 1101을 나눗셈 연산의 결과로 출력하게 된다(S207).After performing the lowest row of FIG. 3, the value of the first counter becomes 0, the operation of the counter is terminated, and the order of the stored values of the first registers 101 and R1 becomes 0, and the third register ( The stored value 1101 of 103 and R3) is output as a result of the division operation (S207).

본 명세서에서 개시하는 방법 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종 류의 기록장치를 포함한다.The method disclosed herein may also be embodied as computer readable code on a computer readable recording medium. Computer-readable recording media include all types of recording devices that store data that can be read by a computer system.

컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disks, optical data storage devices, and the like, which may also be implemented in the form of carrier waves (for example, transmission over the Internet). do. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다.So far I looked at the center of the preferred embodiment for the present invention. Those skilled in the art will appreciate that the present invention can be implemented in a modified form without departing from the essential features of the present invention.

그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.Therefore, the disclosed embodiments should be considered in descriptive sense only and not for purposes of limitation. The scope of the present invention is shown in the claims rather than the foregoing description, and all differences within the scope will be construed as being included in the present invention.

상기한 바와 같이, 기존의 유한체 다항식 나눗셈 연산 시간은 제수 다항식 역원 연산 시간과 제수 다항식의 역원과 피제수 다항식의 곱셈 연산 시간의 합으로 주어진다.As described above, the conventional finite polynomial division operation time is given as the sum of the divisor polynomial inverse operation time and the multiplication operation time of the inverse of the divisor polynomial and the dividend polynomial.

본 발명에 의하면, 기존의 나눗셈 연산 방법과 달리, 역원을 구하는 시간이 소요되는 한 번의 연산으로 유한체 다항식 나눗셈을 수행함으로, 기존의 제수 다항 식의 역원과 피제수 다항식에 대한 유한체 곱셈을 수행하지 않기 때문에, 유한체 나눗셈 연산 시간이 기존 방식에 의한 나눗셈 연산 시간보다 짧아진다는 장점을 가진다.According to the present invention, unlike the conventional division operation method, by performing a finite body polynomial division in one operation that takes time to find the inverse, the finite field multiplication of the inverse and the dividend polynomial of the existing divisor polynomial is not performed. Since the finite field division operation time is shorter than the conventional division operation time, there is an advantage.

또한, 유한체 나눗셈 연산을 위한 별도의 유한체 곱셈기가 필요하지 않으므로 유한체 나눗셈기의 회로의 크기가 작아지는 장점이 있다.In addition, since a separate finite field multiplier is not required for the finite field division operation, the circuit size of the finite field divider is reduced.

따라서, 본 발명에 의한 유한체 나눗셈 연산 장치 및 그 방법을 활용하면, 스마트카드와 같이 컴퓨팅 능력과 회로의 크기가 제한되는 환경에서, 보다 작은 회로를 이용하여, 고속의 타원 곡선 암호를 구현할 수 있다.Therefore, by utilizing the finite field division apparatus and the method according to the present invention, it is possible to implement a fast elliptic curve cryptography using smaller circuits in an environment in which computing capacity and circuit size are limited, such as a smart card. .

Claims (6)

유한체 다항식 나눗셈 장치에 있어서:In a finite polynomial divider: 입력 값인 제수 다항식, 피제수 다항식, 기약 다항식를 저장하고, 상기 다항식의 나눗셈 연산의 결과값을 저장하며, 상기 나눗셈 연산을 수행하기 위한 중간 계산값을 저장하는 레지스터부;A register unit for storing an input value of a divisor polynomial, a dividend polynomial, a weak polynomial, a result value of a division operation of the polynomial, and an intermediate calculation value for performing the division operation; 상기 레지스터부의 저장값에 대한 배타적 논리합을 수행하는 배타적 논리합 연산부;An exclusive OR operation unit that performs an exclusive OR on a stored value of the register unit; 상기 레지스터부의 저장값 그리고/또는 상기 배타적 논리합 연산부의 결과값에 대하여 쉬프트 연산을 수행하는 쉬프트 연산부;A shift operation unit which performs a shift operation on a stored value of the register unit and / or a result value of the exclusive OR operation unit; 상기 제수 다항식 그리고/또는 상기 레지스터부의 저장값의 차수를 구하는 차수 검색부; 및An order retrieving unit for obtaining an order of the divisor polynomial and / or a stored value of the register unit; And 상기 레지스터부와 쉬프트 연산부의 입력 선택 신호를 생성하기 위하여 상기 레지스터부의 저장값의 차수(order)를 비교하는 차수 비교부를 포함함을 특징으로 하는 유한체 다항식 나눗셈 장치.And an order comparison section for comparing an order of stored values of the register section to generate an input selection signal of the register section and the shift calculation section. 제 1 항에 있어서, 상기 레지스터부는,The method of claim 1, wherein the register unit, 상기 제수 다항식을 초기 설정값으로 저장하고, 상기 쉬프트 연산부의 중간 결과값을 저장하는 제1 레지스터;A first register storing the divisor polynomial as an initial setting value and storing an intermediate result value of the shift operator; 상기 기약 다항식을 초기 설정값으로 저장하고, 상기 제 1레지스터의 중간 결과값을 저장하는 제2 레지스터;A second register storing the abbreviated polynomial as an initial setting value and storing an intermediate result of the first register; 상기 피제수 다항식을 초기 설정값으로 저장하고, 상기 쉬프트 연산부의 중간 결과값을 저장하고, 상기 다항식의 나눗셈 연산의 결과값을 저장하는 제3 레지스터;A third register configured to store the dividend polynomial as an initial setting value, store an intermediate result value of the shift operator, and store a result value of the division operation of the polynomial; 상기 제3 레지스터의 중간 결과값을 저장하는 제4 레지스터; 및A fourth register for storing an intermediate result of the third register; And 상기 제1 내지 제4 레지스터의 입력을 선택하는 다중화기를 포함함을 특징으로 하는 유한체 다항식 나눗셈 장치.And a multiplexer for selecting inputs of the first to fourth registers. 제 1 항 또는 제 2 항에 있어서, 상기 배타적 논리합 연산부는,The method of claim 1 or 2, wherein the exclusive OR operation unit, 상기 제1 레지스터의 저장값과 상기 제2 레지스터의 저장값에 대한 배타적 논리합 연산을 수행하는 제1 배타적 논리합 연산기;A first exclusive OR operator configured to perform an exclusive OR operation on the stored value of the first register and the stored value of the second register; 상기 제3 레지스터의 저장값과 상기 기약 다항식에 대한 배타적 논리합 연산 을 수행하는 제2 배타적 논리합 연산기;A second exclusive OR operator that performs an exclusive OR operation on the stored value of the third register and the short term polynomial; 상기 제3 레지스터의 저장값과 상기 제4 레지스터의 저장값에 대한 배타적 논리합 연산을 수행하는 제3 배타적 논리합 연산기; 및A third exclusive OR operator configured to perform an exclusive OR operation on the stored value of the third register and the stored value of the fourth register; And 상기 제3 배타적 논리합 연산기의 결과값과 상기 기약 다항식에 대한 배타적 논리합 연산을 수행하는 제4 배타적 논리합 연산기를 포함함을 특징으로 하는 유한체 다항식 나눗셈 장치.And a fourth exclusive OR operation for performing an exclusive OR operation on the resultant value of the third exclusive OR operator and the weak polynomial. 제 1 항 또는 제 2 항에 있어서, 상기 쉬프트 연산부는,The shift calculation unit of claim 1 or 2, 상기 제1 레지스터의 저장값 또는 상기 제1 배타적 논리합 연산기의 결과값에 대한 우측 쉬프트 연산을 수행하는 제1 우측 쉬프트기;A first right shifter which performs a right shift operation on a stored value of the first register or a result value of the first exclusive OR operator; 상기 제3 레지스터의 저장값 또는 상기 제2 배타적 논리합 연산기의 결과값 또는 상기 제3 배타적 논리합 연산부의 결과값 또는 상기 제4 배타적 논리합 연산기의 결과값에 대한 우측 쉬프트 연산을 수행하는 제2 우측 쉬프트기; 및A second right shifter that performs a right shift operation on a stored value of the third register or a result of the second exclusive OR operation, a result of the third exclusive OR operation, or a result of the fourth exclusive OR operation; ; And 상기 제1 우측 쉬프트기 및 제2 우측 쉬프트기의 입력을 선택하는 다중화기를 포함함을 특징으로 하는 유한체 다항식 나눗셈 장치.And a multiplexer for selecting inputs of the first right shifter and the second right shifter. 제 1 항에 있어서, 상기 차수의 비교는,The method of claim 1, wherein the order of comparison is 제1 카운터에 피제수 다항식의 차수를 저장하고, 제2 카운터에 기약다항식의 차수를 저장하며;Store the order of the dividend polynomial in a first counter, and store the order of the weak polynomial in a second counter; 상기 제1 카운터가 0이 아니고, 상기 제1 레지스터의 최하위 비트가 0일 때, 상기 제1 카운터를 감소시키며;Decrement the first counter when the first counter is not zero and the least significant bit of the first register is zero; 상기 제1 카운터가 0이 아니고, 상기 제1 레지스터의 최하위 비트가 0이 아니고, 상기 제1 카운터가 상기 제2 카운터보다 작으면, 상기 제1 카운터와 상기 제2 카운터의 저장값을 교환하고, 상기 제1 카운터를 감소시키며;If the first counter is not zero, the least significant bit of the first register is not zero, and the first counter is less than the second counter, the stored value of the first counter and the second counter is exchanged, Decrement the first counter; 상기 제1 카운터가 0이 아니고, 상기 제1 레지스터의 최하위 비트가 0이 아니고, 상기 제1 카운터가 상기 제2 카운터보다 클 때, 상기 제1 카운터를 감소시키며;Decrement the first counter when the first counter is not zero, the least significant bit of the first register is not zero, and the first counter is greater than the second counter; 상기 제1 카운터가 0이 아니고, 상기 제1 레지스터의 최하위 비트가 0이 아니고, 상기 제1 카운터가 상기 제2 카운터와 같을 때, 상기 제1 카운터에 상기 제1 레지스터의 저장값의 차수를 저장하며;Storing the order of the stored value of the first register in the first counter when the first counter is not zero, the least significant bit of the first register is not zero, and the first counter is equal to the second counter. To; 상기 제1 카운터가 0이 될 때까지 상기한 과정들을 반복하고, 상기 제1 카운터가 0이 되면, 상기 나눗셈 연산을 종료함을 특징으로 하는 유한체 다항식 나눗셈 장치.The above processes are repeated until the first counter becomes 0, and when the first counter becomes 0, the division operation is terminated. 제 2 항의 장치를 이용하여,Using the apparatus of claim 2, (a)상기 제수 다항식의 차수를 구하고, 상기 제1 레지스터에 상기 제수 다항식을 저장하고, 상기 제2 레지스터에 상기 기약 다항식을 저장하고, 상기 제3 레지스터에 상기 피제수 다항식을 저장하고, 상기 제4 레지스터에 0을 저장하는 단계;(a) obtaining an order of the divisor polynomial, storing the divisor polynomial in the first register, storing the abbreviated polynomial in the second register, storing the dividend polynomial in the third register, and storing the fourth divider Storing 0 in a register; (b)상기 제1 레지스터 저장값의 차수가 0이 아니고, 상기 제1 레지스터의 최하위비트가 0이 아니고, 상기 제1 레지스터 저장값의 차수가 상기 제2 레지스터 저장값의 차수보다 작지 않으면, 상기 제1 레지스터의 저장값과 상기 제2 레지스터의 저장값에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하여 상기 제1 레지스터에 저장하고, 상기 제3 레지스터의 저장값과 상기 제4 레지스터의 저장값에 대한 배타적 논리합 연산 결과를 상기 제3 레지스터에 저장하는 단계;(b) if the order of the first register stored value is not zero, the least significant bit of the first register is not zero, and the order of the first register stored value is not less than the order of the second register stored value, After performing an exclusive OR operation on the stored value of the first register and the stored value of the second register, the result is shifted right by one bit and stored in the first register, and the stored value of the third register and the fourth register. Storing the result of the exclusive OR operation on the stored value of the register in the third register; (c)상기 제1 레지스터 저장값의 차수가 0이 아니고, 상기 제1 레지스터의 최하위비트가 0이 아니고, 상기 제1 레지스터 저장값의 차수가 제2 레지스터 저장값의 차수보다 작으면, 상기 제1 레지스터의 저장값과 상기 제2 레지스터의 저장값을 교환하고, 상기 제3 레지스터의 저장값과 상기 제4 레지스터의 저장값을 교환하고, 상기 제1 레지스터의 저장값과 상기 제2 레지스터의 저장값에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하여 상기 제1 레지스터에 저장하고, 상기 제3 레지스터의 저장값과 상기 제4 레지스터의 저장값에 대한 배타적 논리합 연산 결과를 상기 제3 레지스터에 저장하는 단계;(c) if the order of the first register stored value is not 0, the least significant bit of the first register is not 0, and the order of the first register stored value is less than the order of the second register stored value, Exchange the stored value of the first register with the stored value of the second register, the stored value of the third register and the stored value of the fourth register, and the stored value of the first register and the storage of the second register. After performing the exclusive OR operation on the value, the result is shifted by one bit to the right and stored in the first register, and the exclusive OR operation result of the stored value of the third register and the stored value of the fourth register is stored in the first register. Storing in three registers; (d)상기 제1 레지스터 저장값의 차수가 0이 아니고, 상기 제1 레지스터의 최하위 비트가 0일 때, 상기 제1 레지스터의 저장값을 1비트 우측 쉬프트하는 단계;(d) right shifting the stored value of the first register by one bit when the order of the first register stored value is not zero and the least significant bit of the first register is zero; (e)상기 (b) 단계 또는 (c) 단계 또는 (d) 단계가 수행된 후, 상기 제3 레지스터의 최하위 비트가 0일 때, 상기 제3 레지스터의 저장값을 1비트 우측 쉬프트 하는 단계;(e) shifting the stored value of the third register one bit to the right when the least significant bit of the third register is 0 after step (b) or (c) or (d) is performed; (f)상기 (b) 단계 또는 (c) 단계 또는 (d) 단계가 수행된 후, 상기 제3 레지스터의 최하위 비트가 0이 아닐 때, 상기 제3 레지스터의 저장값과 상기 기약 다항식에 대하여 배타적 논리합 연산을 수행한 후 그 결과를 1비트 우측 쉬프트하는 단계; 및(f) after step (b) or (c) or (d) is performed, when the least significant bit of the third register is not zero, it is exclusive to the stored value of the third register and the contract polynomial. Performing a OR operation and shifting the result by one bit to the right; And (g)상기 제1 레지스터의 저장값의 차수가 0이 될 때까지 상기 (b)단계 내지 (f)단계를 반복하여, 상기 제1 레지스터의 저장값의 차수가 0이 되면, 상기 제3 레지스터의 저장값을 출력하는 단계를 포함함을 특징으로 하는 유한체 다항식 나눗셈 방법.(g) Steps (b) to (f) are repeated until the order of the stored value of the first register becomes 0, and when the order of the stored value of the first register becomes 0, the third register And a method for outputting a stored value of the finite body polynomial division method.
KR1020030096896A 2003-12-24 2003-12-24 Finite field polynomial divider and Method thereof KR100564765B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030096896A KR100564765B1 (en) 2003-12-24 2003-12-24 Finite field polynomial divider and Method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030096896A KR100564765B1 (en) 2003-12-24 2003-12-24 Finite field polynomial divider and Method thereof

Publications (2)

Publication Number Publication Date
KR20050065129A KR20050065129A (en) 2005-06-29
KR100564765B1 true KR100564765B1 (en) 2006-03-27

Family

ID=37256656

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030096896A KR100564765B1 (en) 2003-12-24 2003-12-24 Finite field polynomial divider and Method thereof

Country Status (1)

Country Link
KR (1) KR100564765B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100865678B1 (en) * 2007-01-16 2008-10-29 충북대학교 산학협력단 method and system for fast inversion of high-speed public-key crypto system

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102272862B1 (en) * 2017-04-27 2021-07-05 한국전자통신연구원 Prime field divider and method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100865678B1 (en) * 2007-01-16 2008-10-29 충북대학교 산학협력단 method and system for fast inversion of high-speed public-key crypto system

Also Published As

Publication number Publication date
KR20050065129A (en) 2005-06-29

Similar Documents

Publication Publication Date Title
CN107040362B (en) Modular multiplication apparatus and method
US4949293A (en) Method and apparatus for computing residue with respect to arbitrary modulus
CN101194457A (en) Randomized modular polynomial reduction method and hardware therefor
US7024560B2 (en) Power-residue calculating unit using Montgomery algorithm
JP5182364B2 (en) Cryptographic processing method with tamper resistance against side channel attack
US6763366B2 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
KR100478974B1 (en) Serial finite-field multiplier
KR100564765B1 (en) Finite field polynomial divider and Method thereof
US8626811B2 (en) Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
US7574469B2 (en) Method for generating the multiplicative inverse in a finite field GF(p)
KR100564764B1 (en) Finite field polynomial multiplier and Method thereof
CN113467752B (en) Division operation device, data processing system and method for private calculation
KR101548174B1 (en) Method for calculating negative inverse of modulus
CN115270155A (en) Method for obtaining maximum common divisor of big number expansion and hardware architecture
KR100564599B1 (en) Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code
JP2004125891A (en) Power remainder computer
KR100297110B1 (en) Modular multiplier
KR100946256B1 (en) Scalable Dual-Field Montgomery Multiplier On Dual Field Using Multi-Precision Carry Save Adder
Knezevic et al. Modular reduction without precomputational phase
KR100322740B1 (en) Modular computing apparatus and method thereof
KR102348797B1 (en) RSA circuit module of RSA encryption system
US7471789B2 (en) Encryption circuit achieving higher operation speed
Ku et al. Parallel Montgomery Multiplication and Squaring over GF (2 m) Based on Cellular Automata
Mostafa Using Random Digit Representation for Elliptic Curve Scalar Multiplication
KR19990086179A (en) Modular computing apparatus and method thereof

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee