KR100564765B1 - Finite field polynomial divider and Method thereof - Google Patents
Finite field polynomial divider and Method thereof Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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
도 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
13 : 차수 검색부 14 : 차수 비교부13: Order Search Unit 14: Order Comparison Unit
본 발명은 유한체 다항식 나눗셈 장치 및 그 방법에 관한 것으로 특히, 타원 곡선 암호(Ellitpic Curve Cryptography)를 위한 고속의 유한체 다항식 나눗셈 장치 및 그 방법에 관한 것이다.BACKGROUND OF THE
타원 곡선 암호 시스템(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
배타적 논리합 연산부(11)는 레지스터부(10)의 저장값에 대한 배타적 논리합을 수행하는 부분으로, 유한체 다항식 덧셈을 연산을 수행하는 부분이다. 레지스터부(10)로부터 입력되는 다항식 값에 대한 배타적 논리합을 수행함으로써 유한체 다항식 덧셈을 연산한다. 이는, 본 발명의 유한체 나눗셈 장치는 유한체 다항식 덧셈의 반복으로 구성되어 있기 때문이다.The exclusive OR
쉬프트 연산부(12)는 레지스터부(10)의 저장값 그리고/또는 배타적 논리합 연산부(11)의 결과값에 대하여 쉬프트 연산을 수행하는 부분으로, 자신에게 입력되는 유한체 다항식의 차수를 한 차수 줄이는 연산을 수행하는 부분이다. 쉬프트 연산부(12)는 레지스터부(10) 그리고/또는 배타적 논리합 연산부(11)로부터 입력되는 다항식 값에 대한 우측 쉬프트 연산을 수행한다.The
이는, 본 발명의 유한체 나눗셈 장치는 제수 다항식 및 피제수 다항식에 대하여 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
차수 검색부(13)는 제수 다항식 a 그리고/또는 레지스터부(10)의 저장값의 차수를 구하는 부분이다.The
차수 비교부(14)는 레지스터부(10) 및 쉬프트 연산부(12)의 입력 선택 신호를 생성하기 위하여 레지스터부(10)의 저장값의 차수(n-th order)를 비교하는 부분으로, 본 발명의 유한체 다항식 나눗셈 장치의 제어 역할을 수행한다. 차수 비교부(14)는 레지스터부(10)의 저장값에 대한 차수를 비교하여 쉬프트 연산부(12)의 입력을 제어하고, 또한 레지스터부(10)의 입력을 제어하게 된다.The
차수 비교부(14)는 내부적으로 두 개의 카운터로 구성됨이 바람직한데, 이는 나눗셈 연산 동안 항상 차수 검색을 하지 않고, 두 개의 카운터를 이용하여, 레지스터부(10)의 차수를 비교함으로써, 차수 검색시 발생하는 회로 상의 지연시간을 제거함으로써, 고속의 회로 구성이 가능하기 때문이다. 차수 비교부(14)의 상세한 동작은 도 1b를 참조하여 설명한다.It is preferable that the
도 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
다음으로 제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
도 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
제2 레지스터(102)는 기약 다항식 f을 초기 설정값으로 저장하고, 제 1레지스터(101)의 중간 결과값을 저장하며 제3 레지스터(103)는 피제수 다항식 b를 초기 설정값으로 저장하며 쉬프트 연산부(12)의 중간 결과값을 저장하고, 유한체 나눗셈 연산 결과값을 저장한다. 제4 레지스터(104)는 제3 레지스터(103)의 중간 결과값을 저장한다. 다수의 다중화기들(105, 106, 107, 108)은 제1 내지 제4 레지스터들의 입력들을 선택한다.The
배타적 논리합 연산부(11)는 위에서 언급한 바와 같이 레지스터부(10)의 저장값에 대한 배타적 논리합을 수행하는 부분으로, 유한체 다항식 덧셈을 연산을 수행하는 부분이다. 제1 배타적 논리합 연산기(111)는 제1 레지스터(201)의 저장값과 제2 레지스터(202)의 저장값에 대한 배타적 논리합 연산을 수행한다.As described above, the exclusive OR
제2 배타적 논리합 연산기(112)는 제3 레지스터(203)의 저장값과 기약 다항식 f에 대한 배타적 논리합 연산을 수행하며, 제3 배타적 논리합 연산기(113)는 제3 레지스터(103)의 저장값과 제4 레지스터(104)의 저장값에 대한 배타적 논리합 연산을 수행한다. 제4 배타적 논리합 연산기(114)는 제3 배타적 논리합 연산기(113)의 결과값과 기약 다항식 f에 대한 배타적 논리합 연산을 수행한다.The second exclusive OR
쉬프트 연산부(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
도 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
본 발명의 유한체 다항식 나눗셈 장치의 초기 설정은 제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
상기 초기 설정 단계 후, 제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
상기 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
계속하여, 도 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
본 명세서에서 개시하는 방법 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종 류의 기록장치를 포함한다.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)
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102272862B1 (en) * | 2017-04-27 | 2021-07-05 | 한국전자통신연구원 | Prime field divider and method thereof |
-
2003
- 2003-12-24 KR KR1020030096896A patent/KR100564765B1/en not_active IP Right Cessation
Cited By (1)
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 |