[go: up one dir, main page]

KR100564599B1 - Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code - Google Patents

Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code Download PDF

Info

Publication number
KR100564599B1
KR100564599B1 KR1020030096216A KR20030096216A KR100564599B1 KR 100564599 B1 KR100564599 B1 KR 100564599B1 KR 1020030096216 A KR1020030096216 A KR 1020030096216A KR 20030096216 A KR20030096216 A KR 20030096216A KR 100564599 B1 KR100564599 B1 KR 100564599B1
Authority
KR
South Korea
Prior art keywords
random number
inverse
bits
input
computer
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
KR1020030096216A
Other languages
Korean (ko)
Other versions
KR20050064645A (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 KR1020030096216A priority Critical patent/KR100564599B1/en
Priority to US11/021,351 priority patent/US7680272B2/en
Publication of KR20050064645A publication Critical patent/KR20050064645A/en
Application granted granted Critical
Publication of KR100564599B1 publication Critical patent/KR100564599B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/726Inversion; Reciprocal calculation; Division of elements of a finite field
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/728Methods 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 using Montgomery reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체이다. 상기 역원 계산 회로는 제1난수 및 제2난수를 발생하는 난수 발생기; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 인버터를 구비한다. 상기 제1난수는 DPA를 방지하기 위한 난수이고, 상기 제2난수는 시간 공격을 방지하기 위한 난수이다. The present invention is a computer-readable recording medium having recorded thereon an inverse calculation circuit, an inverse calculation method, and a program for executing the inversion calculation method. The inverse calculating circuit includes a random number generator for generating a first random number and a second random number; And receiving a plurality of first bits representing a first element of a finite body as a first input, and receiving a plurality of second bits representing a second element of a finite body as a second input, wherein the first random number and the And an inverter for outputting a plurality of third bits representing the inverse of the first element in response to a second random number. The first random number is a random number for preventing DPA, and the second random number is a random number for preventing a time attack.

몽고메리 역원 알고리즘, 역원Montgomery inverse algorithm, inverse

Description

역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체{Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code} An inverse calculation circuit, an inverse calculation method, and storage medium encoded with computer-readable computer program code, which records an inverse calculation circuit, an inverse calculation method, and a program for executing the inverse calculation method.

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.The detailed description of each drawing is provided in order to provide a thorough understanding of the drawings cited in the detailed description of the invention.

도 1은 본 발명의 실시예에 따른 역원계산 회로의 블락도를 나타낸다. 1 shows a block diagram of an inverse calculating circuit according to an embodiment of the present invention.

도 2는 도 1에 도시된 인버터의 회로도를 나타낸다. FIG. 2 shows a circuit diagram of the inverter shown in FIG. 1.

본 발명은 암호 응용 회로에 관한 것으로, 보다 상세하게는 시간공격 (timing attack)과 차동전력해석(DPA: Differential Power Analysis) 공격에 강한 역원 계산회로, 역원계산 방법 및 상기 역원계산 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.The present invention relates to a cryptographic application circuit, and more particularly, to the inverse calculation circuit, the inverse calculation method, and the inverse calculation method, which are resistant to a timing attack and a differential power analysis (DPA) attack. A computer readable recording medium having recorded a program.

암호(cryptography)는 원래 국가의 비밀을 보안할 목적으로 군사·외교분야에서 사용되었다. 그리고 금융기관들은 전자자금이동(Electronic Funds Transfer) 을 위하여 암호를 사용했다. 따라서 암호는 경제, 금융분야에서 널리 사용된 이래, 동일성의 인증(Authentication), 암호화 키에 대한 관리(Key Management), 디지탈 서명(Digital Signature), 및 신원확인(Identity Verification) 등 광범위하게 사용되고 있다.Cryptography was originally used in the military and diplomatic fields for the purpose of securing the secrets of the state. And financial institutions used cryptography for Electronic Funds Transfer. Therefore, since cryptography has been widely used in the economic and financial fields, it has been widely used, such as authentication of identity, key management of digital keys, digital signature, and identity verification.

암호해독은 해독키의 관리소홀, 비밀번호의 예측가능성, 또는 통신망에서 키보드 입력에 대한 모니터링 등으로도 가능하다. 여기서 암호해독은 암호해독행위자가 암호문만을 가지고 평문에 대한 해독을 감행하는 방법(소위 무작정공격; Bruteforce Attack)이 아니라 평문의 암호화에 사용된 알고리즘의 종류, 사용된 운영체제 등 시스템에 대한 모든 정보를 알고있는 상태에서 암호화에 사용된 키만 모르는 경우에 그 키를 찾아내어 암호문을 평문으로 해독하려는 행위를 지칭한다.Decryption can also be done by neglecting decryption keys, predictability of passwords, or monitoring of keyboard input on the network. Here, decryption is not a method in which the decryption agent decrypts plain text using only the ciphertext (so-called bruteforce attack), but knows all the information about the system such as the type of algorithm used for encryption of the plaintext and the operating system used. If you do not know only the key used for encryption, it refers to the act of finding the key and decrypting the ciphertext into plain text.

암호를 해독하는 기술로는 단순 암호문 공격(Ciphertext Only Attack), 이미 알고 있는 평문공격(Known Plaintext Attack), 선택 평문공격(Chosen Plaintext Attack), 최적 선택 평문 공격(Adaptively Chosen Plaintext Attack), 시간 공격 (timing attack) 및 DPA(또는 전력분석 공격이라고도 한다.) 등이 있다.Decryption techniques include Ciphertext Only Attack, Known Plaintext Attack, Chosen Plaintext Attack, Adaptive Chosen Plaintext Attack, and Time Attack. timing attack) and DPA (also known as power analysis attack).

시간 공격은 암호 알고리즘의 연산 수행시간 정보를 이용하여 특정한 비트의 값이 0인지 또는 1인지를 판단하고, 이에 따라 암호를 해독하는 방법을 말한다. 그리고 차동전력해석 공격은 입력 비트값에 따라 암호 알고리즘이 사용하는 전력량을 분석하고, 이에 따라 비밀키의 비트값을 알아냄으로서 암호를 해독하는 방법을 말한다.Time attack refers to a method of determining whether a value of a specific bit is 0 or 1 by using operation execution time information of an encryption algorithm, and thus decrypting a cipher. The differential power analysis attack analyzes the amount of power used by the encryption algorithm according to the input bit value, and accordingly, refers to a method of decrypting the password by finding the bit value of the secret key.

이진 유한체(binary finite field, GF(2n))에서 정의되는 타원곡선 암호법 (elliptic curve cryptography)은 아핀 좌표계(affine coordinate)를 이용한 암호법과 사영 좌표계(projective coordinate)를 이용한 암호법으로 나뉜다. Elliptic curve cryptography, defined in the binary finite field (GF (2 n )), is divided into cryptography using affine coordinates and cryptography using projective coordinates.

아핀 좌표계는 타원곡선 상의 좌표를 (x, y)로 표현하고, 사영 좌표계는 타원곡선 상의 좌표를 (X, Y, Z)로 표현한다. 따라서 아핀 좌표계의 타원곡선 상의 점과 사영 좌표계의 타원곡선 상의 점의 관계는 수학식 1로 표현된다.The affine coordinate system expresses the coordinates on the elliptic curve as (x, y), and the projective coordinate system expresses the coordinates on the elliptic curve as (X, Y, Z). Therefore, the relationship between the point on the elliptic curve of the affine coordinate system and the point on the elliptic curve of the projective coordinate system is expressed by Equation 1.

Figure 112003049380371-pat00001
Figure 112003049380371-pat00001

타원곡선에서의 연산은 덧셈(addition) 연산과 더블링(doubling) 연산이 있다. 덧셈 연산은 더하는 두 점들이 서로 다를 때 사용되고, 더블링 연산은 더하는 두 점들이 서로 같은 때 사용된다. Operations on elliptic curves include addition and doubling operations. The addition operation is used when the two points to add are different, and the doubling operation is used when the two points to add are the same.

이진 유한체(GF(2n))에서 정의된 아핀 좌표계에서의 연산식은 수학식 2와 같다.The equation in the affine coordinate system defined in the binary finite field GF (2 n ) is shown in Equation 2.

Figure 112003049380371-pat00002
Figure 112003049380371-pat00002

수학식 2에서 보는 바와 같이 유한체(GF(2n))에서 정의된 타원곡선에서의 덧셈 연산과 더블링 연산은 유한체(GF(2n))들의 연산(즉, 덧셈, 제곱, 곱셈, 역원계산)으로 이루어진다. 각 타원곡선에서의 덧셈 연산과 더블링 연산에 필요한 연산의 수와 종류는 표 1과 같다.Add operation and doubling operations on the elliptic curve defined on the finite field (GF (2 n)), as shown in equation (2) is a finite field operation of the (GF (2 n)) (i.e., add, square, multiplication and inverse Calculation). Table 1 shows the number and types of operations required for addition and doubling operations in each elliptic curve.

연산의 종류Type of operation 연산의 수 Number of operations 점 덧셈(point addition)Point addition 1I + 2M + 1S1I + 2M + 1S 점 더블링(point doubling)Point doubling 1I + 2M + 1S1I + 2M + 1S

여기서 I는 유한체(GF(2n))의 역원계산을 나타내고, M은 유한체(GF(2n))의 곱셈을 나타내고, S는 유한체(GF(2n))의 제곱을 나타낸다. 유한체(GF(2n))의 덧셈은 비트끼리의 배타논리합(bitwise XOR)으로 구현될 수 있으므로, 유한체(GF(2n))의 덧셈을 구현하는 것과 유한체(GF(2n))의 덧셈의 연산속도는 무시할 수 있으므로, 유한체(GF(2n))의 덧셈은 표 1로부터 제외했다. Where I denotes the inverse calculation of the finite field (GF (2 n)), M denotes a multiplication in the finite field (GF (2 n)), S denotes the power of the finite field (GF (2 n)). Finite field (GF (2 n)) addition is may be implemented by an exclusive-OR (bitwise XOR) between the bit and the finite field (GF (2 n)) as finite field (GF (2 n) to implement the addition of the Since the computation speed of the addition of) is negligible, the addition of the finite field GF (2 n ) is excluded from Table 1.

유한체(GF(2n))의 역원계산은 유한체(GF(2n))의 곱셈과 유한체(GF(2n))의 제 곱에 비하여 타원곡선 암호법에서 많은 비중을 차지하는 연산이다. 따라서 타원곡선 암호법에서 역원계산을 필요로하지 않는 사영 좌표계서의 연산이 사용되는 경우도 있다. Finite field calculate inverses of (GF (2 n)) is a finite field is a calculation takes up a large share of the elliptic curve cryptography, compared to the product of the multiplier and the finite field (GF (2 n)) of the (GF (2 n)) . Therefore, in elliptic curve cryptography, calculations of projective coordinate systems are sometimes used that do not require inverse calculation.

그런데 아핀 좌표계를 이용한 타원곡선에서의 덧셈 연산과 더블링 연산이 부채널 공격(side channel attack)에 취약하게 된다면, 타원곡선 암호법의 안전성은 감소한다. However, if the addition and doubling operations in the elliptic curve using the affine coordinate system are vulnerable to side channel attack, the safety of the elliptic curve cryptography is reduced.

따라서 본 발명이 이루고자 하는 기술적인 과제는 시간 공격과 차동전력해석공격에 강한 역원계산회로를 제공하는 것이다.Therefore, the technical problem to be achieved by the present invention is to provide a reverse circuit calculation circuit resistant to time attack and differential power analysis attack.

상기 기술적 과제를 달성하기 위한 역원 계산 회로는 제1난수 및 제2난수를 발생하는 난수 발생기; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 인버터를 구비한다.The reverse source calculation circuit for achieving the technical problem comprises a random number generator for generating a first random number and a second random number; And receiving a plurality of first bits representing a first element of a finite body as a first input, and receiving a plurality of second bits representing a second element of a finite body as a second input, wherein the first random number and the And an inverter for outputting a plurality of third bits representing the inverse of the first element in response to a second random number.

상기 제1난수는 DPA를 방지하기 위한 난수이고, 상기 제2난수는 시간 공격을 방지하기 위한 난수이다.The first random number is a random number for preventing DPA, and the second random number is a random number for preventing a time attack.

상기 기술적 과제를 달성하기 위한 역원 계산 방법은 제1난수 및 제2난수를 발생하는 단계; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신 하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 구비한다.Inverter calculation method for achieving the technical problem comprises the steps of generating a first random number and a second random number; And receiving a plurality of first bits representing a first element of a finite body as a first input and receiving a plurality of second bits representing a second element of a finite body as a second input, wherein the first random number and the And outputting a plurality of third bits representing the inverse of the first element in response to a second random number.

상기 기술적 과제를 달성하기 위한 컴퓨터로 읽을 수 있는 기록매체는 제1난수 및 제2난수를 발생하는 단계; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 실행시키기 위한 프로그램을 기록한다. The computer-readable recording medium for achieving the technical problem is a step of generating a first random number and a second random number; And receiving a plurality of first bits representing a first element of a finite body as a first input, and receiving a plurality of second bits representing a second element of a finite body as a second input, wherein the first random number and the A program for executing the step of outputting a plurality of third bits representing the inverse of the first element in response to a second random number is recorded.

상기 제1난수는 상기 제2난수보다 늦게 발생되는 것이 바람직하다. 상기 제1난수는 2비트로 구성되고, 상기 제2난수는 2n보다 크고 3n보다 작은 값을 갖고, 상기 n은 유한체의 차수이다.Preferably, the first random number is generated later than the second random number. The first random number is composed of 2 bits, the second random number has a value larger than 2n and smaller than 3n, and n is an order of finite field.

상기 다수개의 제1비트들과 상기 다수개의 제3비트들이 n비트로 구성되는 경우, 상기 다수개의 제2비트들은 (n+1)비트로 구성되는 것이 바람직하다. When the plurality of first bits and the plurality of third bits are composed of n bits, the plurality of second bits may be configured of (n + 1) bits.

본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings which illustrate preferred embodiments of the present invention and the contents described in the accompanying drawings.

이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. Like reference numerals in the drawings denote like elements.

The 9th IEEE Internal Conference on Electronics, Circuit and System에서 "Architectures for unified field inversion with application in elliptic curve cryptography"란 제목으로 E. Savas, C. K. Koc에 의하여 제시된 유한체(GF(2n))에서 몽고메리 역원 알고리즘(Montgomery inverse algorithm)은 다음과 같다.Montgomery inverse algorithm in the finite body (GF (2 n )) presented by E. Savas, CK Koc, entitled "Architectures for unified field inversion with application in elliptic curve cryptography" at The 9th IEEE Internal Conference on Electronics, Circuit and System. Montgomery inverse algorithm is as follows.

Input: a(x) and p(x), where deg(a(x)) < deg(p(x)) Input : a (x) and p (x), where deg (a (x)) <deg (p (x))

Output: r(x) and k, where r = a(x)-1xk (mod p(x)) Output : r (x) and k, where r = a (x) -1 x k (mod p (x))

and deg(a(x)) ≤ k ≤ deg(p(x)) + deg(a(x)) + 1 and deg (a (x)) ≤ k ≤ deg (p (x)) + deg (a (x)) + 1

1: u(x) := p(x), v(x):= a(x), r(x):= 0, and s(x):= 11: u (x): = p (x), v (x): = a (x), r (x): = 0, and s (x): = 1

2: k := 02: k: = 0

3: while (v(x) != 0)3: while (v (x)! = 0)

4: if u(0) = 0 then u(x) := u(x)/x, s(x) := x·s(x)4: if u (0) = 0 then u (x): = u (x) / x, s (x): = xs (x)

5: else if v(0) = 0 then v(x) := v(x)/x, r(x) := x·r(x) 5: else if v (0) = 0 then v (x): = v (x) / x, r (x): = xr (x)

6: else if deg(u(x)) > deg(v(x)) then6: else if deg (u (x))> deg (v (x)) then

u(x) := (u(x) + v(x)) / xu (x): = (u (x) + v (x)) / x

r(x) := r(x) + s(x)r (x): = r (x) + s (x)

s(x) := xs(x)s (x): = xs (x)

7: else v(x) := (v(x) + u(x)) / x7: else v (x): = (v (x) + u (x)) / x

s(x) := s(x) + r(x)s (x): = s (x) + r (x)

r(x) := xr(x)r (x): = xr (x)

8: k := k + 18: k: = k + 1

9: if deg(r(x)) = deg(p(x)) then r(x) := r(x) + p(x)9: if deg (r (x)) = deg (p (x)) then r (x): = r (x) + p (x)

10: return r(x) and k10: return r (x) and k

여기서 a(x)는 유한체(GF(2n))의 원소이고 (n-1)차 다항식이다. 또한, p(x)는 모듈러 연산을 위한 n차 다항식이다. r(x)는 a(x)의 역원이고 (n-1)차 다항식이다. 여기서 a(x)의 차수(deg(a(x)))는 p(x)의 차수(deg(p(x)))보다 작다. 상기 몽고메리 역원 알고리즘은 유한체 (GF(2n))의 원소 a(x)에 대해 a(x)-1xk 를 계산한다. 이때 k의 조건은 다음과 같다.Where a (x) is an element of finite body (GF (2 n )) and a (n-1) order polynomial. Also, p (x) is an n th order polynomial for modular operation. r (x) is the inverse of a (x) and is the (n-1) order polynomial. Here, the order of a (x) deg (a (x)) is smaller than the order of p (x) deg (p (x)). The Montgomery inverse algorithm calculates a (x) -1 x k for element a (x) of the finite field GF (2 n ). The condition of k is as follows.

deg(a(x) ≤ k ≤ deg(p(x)) + deg(a(x)) + 1,deg (a (x) ≤ k ≤ deg (p (x)) + deg (a (x)) + 1,

즉, n이 유한체(GF(2n))의 차수일때 k ≤ 2n이다.That is, when n is the order of the finite body GF (2 n ), k ≦ 2n.

상기 몽고메리 역원 알고리즘에서 역원계산을 위한 연산시간 및 k는 유한체(GF(2n))의 원소 a(x)에 따라 다르다. 그러나 상기 몽고메리 역원 알고리즘을 구현한 역원 계산회로로 동일한 유한체(GF(2n))의 원소 a(x)를 반복하여 입력하는 경우, 상기 원소 a(x)의 역원을 계산하기 위한 연산 시간을 동일하다. 따라서 상기 역원계산 회로는 시간공격에 취약하다.In the Montgomery inverse algorithm, the computation time and k for inverse calculation depend on the element a (x) of the finite field GF (2 n ). However, when repeatedly inputting elements a (x) of the same finite body (GF (2 n )) as an inverse calculation circuit implementing the Montgomery inverse algorithm, the calculation time for calculating the inverse of the element a (x) is determined. same. Thus, the inverse calculating circuit is vulnerable to time attack.

따라서 시간공격에 강하도록 종래의 몽고메리 역원 알고리즘을 개선한 몽고메리 알고리즘(이하 '제1 몽고메리 역원 알고리즘'이라 한다.)은 다음과 같다. Therefore, the Montgomery algorithm (hereinafter referred to as 'the first Montgomery inverse algorithm') that improves the conventional Montgomery inverse algorithm to be resistant to time attack is as follows.

1. Input a(x) and p(x), where deg(a(x)) < deg(p(x)) 1.Input a (x) and p (x), where deg (a (x)) <deg (p (x))

2. u(x) ← p(x), v(x)← a(x), r(x)← 0, and s(x)← 1U (x) ← p (x), v (x) ← a (x), r (x) ← 0, and s (x) ← 1

3. m ← random value, 2n ≤m ≤ 3n 3.m ← random value, 2n ≤m ≤ 3n

4. while (k < m)While (k <m)

4.1 if (v(x) ≠ 0)4.1 if (v (x) ≠ 0)

4.1.1 if(u0 ≠ 0) u(x) ← u(x)/x, s(x) ← x·s(x)4.1.1 if (u 0 ≠ 0) u (x) ← u (x) / x, s (x) ← xs (x)

4.1.2 else if (v0 ≠ 0) v(x) ← v(x)/x, r(x) ← x·r(x)4.1.2 else if (v 0 ≠ 0) v (x) ← v (x) / x, r (x) ← xr (x)

4.1.3 else if (deg(u(x)) > deg(v(x))) then4.1.3 else if (deg (u (x))> deg (v (x))) then

u(x) ← (u(x) + v(x))/xu (x) ← (u (x) + v (x)) / x

r(x) ← r(x) + s(x)r (x) ← r (x) + s (x)

s(x) ← x·s(x)s (x) ← xs (x)

4.1.4 else v(x) ← (v(x) + u(x))/x4.1.4 else v (x) ← (v (x) + u (x)) / x

s(x) ← s(x) + r(x)s (x) ← s (x) + r (x)

r(x) ← x·r(x)r (x) ← xr (x)

4.2 else4.2 else

4.2.1 if (rn = 1) r(x) ← r(x) + p(x)4.2.1 if (r n = 1) r (x) ← r (x) + p (x)

4.2.2 r(x) ← x·r(x)4.2.2 r (x) ← xr (x)

4.3 k ← k + 14.3 k ← k + 1

5. if (deg(r(x)) = deg(p(x))) r(x) ← r(x) + p(x)5.if (deg (r (x)) = deg (p (x))) r (x) ← r (x) + p (x)

6. OUTPUT r(x), k 6.OUTPUT r (x), k

상기 제1 몽고메리 역원 알고리즘(또는 제1 몽고메리 역원 알고리즘을 구현 한 하드웨어)은 몽고메리 역원 알고리즘에 난수(random number; m)를 도입했다. 난수(m)의 범위는 2n과 3n사이의 임의의 수이다. 여기서 n은 유한체(GF(2n))의 차수를 의미한다. The first Montgomery inverse algorithm (or hardware implementing the first Montgomery inverse algorithm) introduced a random number (m) in the Montgomery inverse algorithm. The range of random numbers (m) is any number between 2n and 3n. N is the order of the finite body (GF (2 n )).

몽고메리 역원 알고리즘은 (v(x) != 0)동안만 역원계산을 한다. 또한, 상기 제1 몽고메리 역원 알고리즘은 (v(x) ≠ 0)일때 단계 4.1을 수행하나, v(x)가 0이되면 단계 4.2를 수행한다. The Montgomery inverse algorithm calculates inverses only for (v (x)! = 0). Further, the first Montgomery inverse algorithm performs step 4.1 when (v (x) ≠ 0), but performs step 4.2 when v (x) is zero.

따라서 단계 4.2는 단계 4에서 정의된 난수(m)가 될 때까지 역원계산을 수행하므로, 제1 몽고메리 역원 알고리즘은 동일한 입력(예컨대, 역원을 구하고자하는 유한체(GF(2n))의 원소)에 대하여도 상기 입력에 대한 역원을 계산하는 시간이 서로 다르다. 따라서 제1 몽고메리 역원 알고리즘은 시간 공격에 강한다.Therefore, step 4.2 performs inverse calculation until the random number m defined in step 4 is obtained, so that the first Montgomery inverse algorithm uses elements of the same input (e.g., finite field GF ( 2n ) to obtain inverse sources). ), The time for calculating the inverse for the input is also different. Thus, the first Montgomery inverse algorithm is resistant to time attack.

이 때 몽고메리 역원 알고리즘에서 a(x)-1xk의 k는 2n보다 작은 수이고, 제1 몽고메리 역원 알고리즘에서 a(x)-1xm의 m은 2n보다 크고 3n보다 작은 수이다. In this Montgomery inverse algorithm, k of a (x) -1 x k is smaller than 2n, and m of a (x) -1 x m in the first Montgomery inverse algorithm is larger than 2n and smaller than 3n.

a(x)-1xk와 a(x)-1xm의 관계는 제1 몽고메리 역원 알고리즘에서 단계 4.1이 끝난 경우 단계 4.2가 수행되므로 다음과 같은 관계가 있다.The relationship between a (x) -1 x k and a (x) -1 x m has the following relationship since step 4.2 is performed when step 4.1 is completed in the first Montgomery inverse algorithm.

a(x)-1xm = a(x)-1xkx(m-k) a (x) -1 x m = a (x) -1 x k x (mk)

따라서 제1 몽고메리 역원 알고리즘은 v(x) = 0이 되기 전에 항상 단계 4.1을 수행한다. 따라서 제1 몽고메리 역원 알고리즘은 DPA에 취약하다.Thus, the first Montgomery inverse algorithm always performs step 4.1 before v (x) = 0. Thus, the first Montgomery inverse algorithm is vulnerable to DPA.

따라서 시간공격 및 DPA에 강하도록 제1 몽고메리 역원 알고리즘을 개선한 본 발명의 실시예에 따른 알고리즘(이하 '제2 몽고메리 역원 알고리즘'라 한다.)은 다음과 같다. Therefore, the algorithm according to the embodiment of the present invention which improves the first Montgomery inverse algorithm to be resistant to time attack and DPA (hereinafter, referred to as a 'second Montgomery inverse algorithm') is as follows.

1. Input a(x) and p(x), where deg(a(x)) < deg(p(x)) 1.Input a (x) and p (x), where deg (a (x)) <deg (p (x))

2. u(x) ← p(x), v(x)← a(x), r(x)← 0, and s(x)← 1U (x) ← p (x), v (x) ← a (x), r (x) ← 0, and s (x) ← 1

3. m ← random value, 2n ≤m ≤ 3n 3.m ← random value, 2n ≤m ≤ 3n

4. while (k < m or v(x) ≠ 0)While (k <m or v (x) ≠ 0)

4.1 R ← random value, 0 ≤ R ≤ 3 4.1 R ← random value, 0 ≤ R ≤ 3

4.2 if (v(x) ≠ 0 and R ≠ 0)4.2 if (v (x) ≠ 0 and R ≠ 0)

4.2.1 if(u0 ≠ 0) u(x) ← u(x)/x, s(x) ← x·s(x)4.2.1 if (u 0 ≠ 0) u (x) ← u (x) / x, s (x) ← xs (x)

4.2.2 else if (v0 ≠ 0) v(x) ← v(x)/x, r(x) ← x·r(x)4.2.2 else if (v 0 ≠ 0) v (x) ← v (x) / x, r (x) ← xr (x)

4.2.3 else if (deg(u(x)) > deg(v(x))) then4.2.3 else if (deg (u (x))> deg (v (x))) then

u(x) ← (u(x) + v(x))/xu (x) ← (u (x) + v (x)) / x

r(x) ← r(x) + s(x)r (x) ← r (x) + s (x)

s(x) ← x·s(x)s (x) ← xs (x)

4.2.4 else v(x) ← (v(x) + u(x))/x4.2.4 else v (x) ← (v (x) + u (x)) / x

s(x) ← s(x) + r(x)s (x) ← s (x) + r (x)

r(x) ← x·r(x)r (x) ← xr (x)

4.3 else4.3 else

4.3.1 if (rn = 1) r(x) ← r(x) + p(x)4.3.1 if (r n = 1) r (x) ← r (x) + p (x)

4.3.2 r(x) ← x·r(x)4.3.2 r (x) ← xr (x)

4.3.3 if (sn = 1) s(x) ← s(x) + p(x)4.3.3 if (s n = 1) s (x) ← s (x) + p (x)

4.3.4 s(x) ← x·s(x)4.3.4 s (x) ← xs (x)

4.4 k ← k + 14.4 k ← k + 1

5. if (deg(r(x)) = deg(p(x))) r(x) ← r(x) + p(x)5.if (deg (r (x)) = deg (p (x))) r (x) ← r (x) + p (x)

6. OUTPUT r(x), k 6.OUTPUT r (x), k

본 발명에 따른 제2 몽고메리 역원 알고리즘에는 난수(R)를 도입하었다. 난수(R)는 매 반복(iteration)마다 0과 3사이의 임의 값을 갖는다. v(x)가 0이 아니고 R이 0이 아닌 경우, 단계 4.2가 수행된다. 즉, v(x)가 0이 아니고 R이 0인 경우, 단계 4.3이 수행된다. 따라서 본 발명에 따른 제2 몽고메리 역원 알고리즘은 동일한 입력에 대하여도 동일한 연산을 수행하지 않는다. In the second Montgomery inverse algorithm according to the present invention, a random number R is introduced. The random number R has a random value between 0 and 3 in every iteration. If v (x) is not zero and R is not zero, step 4.2 is performed. That is, if v (x) is not zero and R is zero, step 4.3 is performed. Thus, the second Montgomery inverse algorithm according to the present invention does not perform the same operation on the same input.

난수(R)는 0부터 3사이의 임의의 값을 갖고, v(x)가 0이 아니고 R이 0인 경우에만 단계 4.3이 수행되므로, 1/4의 확률로 단계 4.3이 수행된다. 만일 난수(R)가 0과 1중에서 하나만 선택되는 경우, 단계 4.2와 단계 4.3은 각각 1/2의 확률로 수행된다.Since the random number R has a random value between 0 and 3, and step 4.3 is performed only when v (x) is not 0 and R is 0, step 4.3 is performed with a probability of 1/4. If only one random number R is selected from 0 and 1, steps 4.2 and 4.3 are performed with a probability of 1/2 respectively.

본 발명에 따른 역원계산 회로는 제2 몽고메리 역원 알고리즘을 구현한 것으로, 상기 역원계산 회로는 도 1 및 도 2를 참조하여 상세히 설명된다. The inverse calculating circuit according to the present invention implements a second Montgomery inverse algorithm, which is described in detail with reference to FIGS. 1 and 2.

도 1은 본 발명의 실시예에 따른 역원계산 회로의 블락도를 나타낸다. 도 1 을 참조하면, 역원계산 회로(100)는 인버터(200) 및 난수 발생기(400)를 구비한다.1 shows a block diagram of an inverse calculating circuit according to an embodiment of the present invention. Referring to FIG. 1, the inverse calculating circuit 100 includes an inverter 200 and a random number generator 400.

난수 발생기(400)는 제1난수(R) 및 제2난수(m)을 발생한다. 제1난수(R)는 DPA를 방지하기 위한 난수이다. 본 발명에 따른 난수 발생기에서 발생되는 제1난수(R)의 범위는 0부터 3까지이므로, 제1난수(R)의 값은 2비트로 표현될 수 있다. 그러나 본 발명에 따른 제1난수(R)의 범위는 0부터 3까지로 한정되는 것이 아니다.The random number generator 400 generates a first random number R and a second random number m. The first random number R is a random number for preventing DPA. Since the range of the first random number R generated by the random number generator according to the present invention is from 0 to 3, the value of the first random number R may be represented by 2 bits. However, the range of the first random number R according to the present invention is not limited to 0 to 3.

제2난수(m)는 시간공격을 방지하기 위한 난수이다. 제2난수(m)는 2n보다 크고 3n보다 작은 값을 갖는다. 여기서 n은 유한체(GF(2n))의 차수를 나타낸다.The second random number m is a random number for preventing a time attack. The second random number m has a value larger than 2n and smaller than 3n. Where n represents the order of the finite body (GF (2 n )).

인버터(200)는 a(x) 및 p(x)를 수신하고, 제1난수(R) 및 제2난수(m)에 응답하여, r(x)를 출력한다. 여기서 a(x)는 역원을 구하고자 하는 유한체(GF(2n))의 원소를 나타낸다. a(x)는 (n-1)차 다항식이고, n비트들로 표현된다. The inverter 200 receives a (x) and p (x), and outputs r (x) in response to the first random number R and the second random number m. Where a (x) represents the element of the finite body (GF (2 n )) for which the inverse is to be obtained. a (x) is a (n-1) order polynomial and is represented by n bits.

p(x)는 모듈러 연산을 위한 n차 다항식이고, (n+1)비트들로 표현된다. r(x)는 a(x)의 역원으로 (n-1)차 다항식이고, n비트들로 표현된다. p (x) is an nth order polynomial for modular operation, represented by (n + 1) bits. r (x) is the inverse of a (x), which is a (n-1) order polynomial, represented by n bits.

도 2는 도 1에 도시된 인버터의 회로도를 나타낸다. 도 1, 제2 몽고메리 역원 알고리즘, 및 도 2를 참조하여 인버터의 구조 및 동작이 상세히 설명된다.FIG. 2 shows a circuit diagram of the inverter shown in FIG. 1. The structure and operation of the inverter are described in detail with reference to FIG. 1, the second Montgomery inverse algorithm, and FIG. 2.

각 레지스터(201, 203, 205, 및 207)는 u(x), v(x), s(x), 및 r(x)를 저장한다. Each register 201, 203, 205, and 207 stores u (x), v (x), s (x), and r (x).

오른쪽 쉬프트 레지스터들(209, 211, 및 213)각각은 입력 데이터를 수신하고, 상기 데이터를 오른쪽으로 1비트씩 이동(shift)시키고, 각 MSB(most significant bit)에 0을 저장한다. 예컨대 레지스터(201)로부터 출력되는 데이터가 00011인 경우, 오른쪽 쉬프트 레지스터(209)는 00011을 수신하고 00001을 출력한다. Each of the right shift registers 209, 211, and 213 receives input data, shifts the data one bit to the right, and stores zeros in each most significant bit (MSB). For example, when the data output from the register 201 is 00011, the right shift register 209 receives 00011 and outputs 00001.

그러나, 오른쪽 쉬프트 레지스터(215)는 입력 데이터를 수신하고, 상기 데이터를 오른쪽으로 1비트씩 이동시키고, MSB에 1을 저장한다. 따라서 레지스터(233)로부터 출력되는 데이터가 11000인 경우, 오른쪽 쉬프트 레지스터(215)는 11000을 수신하고 11100을 출력한다. However, the right shift register 215 receives the input data, shifts the data one bit to the right, and stores 1 in the MSB. Therefore, when the data output from the register 233 is 11000, the right shift register 215 receives 11000 and outputs 11100.

왼쪽 쉬프트 레지스터들(217, 219, 221, 및 223)각각은 입력 데이터를 수신하고, 상기 데이터를 왼쪽으로 1비트씩 이동시키고, 각 LSB(least significant bit)에 0을 저장한다.Each of the left shift registers 217, 219, 221, and 223 receives input data, shifts the data one bit to the left, and stores zero in each least significant bit (LSB).

배타 논리합 게이트(225, 227, 231, 및 229)는 두 개의 입력 데이터를 비트단위(bitwise)로 배타 논리합 연산을 수행한다. 예컨대 배타 논리합 게이트(225)는 레지스터(201)로부터 출력되는 데이터와 레지스터(203)으로부터 출력되는 데이터를 비트단위로 배타 논리합 한다. The exclusive OR gates 225, 227, 231, and 229 perform an exclusive OR operation bitwise on two input data. For example, the exclusive OR gate 225 exclusively ORs the data output from the register 201 and the data output from the register 203 in units of bits.

레지스터(233)는 유한체(GF(2n))의 차수를 저장하기 위한 레지스터로, 연산초기에 1000...0으로 설정된다. u(x)가 유한체(GF(2n))이고, degU(x)가 (degUn,degUn-1,..., degU1, degU0)이라고 가정하면, degU n=1이고, degUn-1 = degU1 = degU0 = 0이다. 논리곱 회로(235)는 레지스터(203)로부터 출력되는 데이터와 레지 스터(233)으로부터 출력되는 데이터를 수신하고, 이들을 비트단위로 논리곱한다.The register 233 is a register for storing the order of the finite field GF (2 n ), and is set to 1000 ... 0 at the beginning of the operation. If u (x) is a finite body (GF (2 n )) and degU (x) is (degU n , degU n-1 , ..., degU 1 , degU 0 ), then degU n = 1, degU n-1 = degU 1 = degU 0 = 0. The AND circuit 235 receives the data output from the register 203 and the data output from the register 233, and logically multiplies them bit by bit.

제어 로직 유닛(300)은 레지스터(201)의 LSB(u0), 레지스터(203)의 LSB(v0), 레지스터(207)의 MSB(rn), 및 논리곱 회로(235)의 출력신호에 기초하여 제어신호들을 발생한다. 상기 제어신호들 각각은 대응되는 먹스(237, 239, 241, 및 243)와 대응되는 레지스터(201, 203, 205, 및 207)로 입력된다. 각 레지스터(201, 203, 205, 및 207)는 대응되는 제어신호에 응답하여 저장된 데이터를 갱신한다. The control logic unit 300 includes the LSB (u 0 ) of the register 201, the LSB (v 0 ) of the register 203, the MSB (r n ) of the register 207, and the output signal of the AND product circuit 235. Generate control signals based on Each of the control signals is input to registers 201, 203, 205, and 207 corresponding to muxes 237, 239, 241, and 243. Each register 201, 203, 205, and 207 updates the stored data in response to a corresponding control signal.

도 2는 제2 몽고메리 역원 알고리즘을 구현한 것으로, 각 단계와 대응되는 회로를 설명하면 다음과 같다.2 is an implementation of the second Montgomery inverse algorithm, the circuit corresponding to each step is as follows.

단계 4.2.1는 레지스터(209)와 먹스(237), 및 레지스터(217)와 먹스(241)로 구현된다. 단계 4.2.2는 레지스터(213)와 먹스(239), 및 레지스터(219)와 먹스 (243)로 구현된다. Step 4.2.1 is implemented with registers 209 and mux 237, and registers 217 and mux 241. Step 4.2.2 is implemented with registers 213 and mux 239, and registers 219 and mux 243.

단계 4.2.3에서 u(x) ← (u(x) + v(x))/x는 배타 논리합 게이트(XOR1; 225), 오른쪽 쉬프트 레지스터(RSHT2; 211) 및 먹스(MUX1; 237)로 구현되고, r(x) ← r(x) + s(x)는 배타 논리합 게이트(XOR2; 227), 및 먹스(MUX4; 243)로 구현되고, s(x) ← x·s(x)는 왼쪽 쉬프트 레지스터(217) 및 먹스(MUX3; 241)로 구현된다.In step 4.2.3 u (x) ← (u (x) + v (x)) / x is implemented with an exclusive OR gate (XOR1; 225), right shift register (RSHT2; 211) and mux (MUX1; 237). R (x) ← r (x) + s (x) are implemented with an exclusive OR gate (XOR2; 227), and a mux (MUX4; 243), and s (x) ← x · s (x) is left It is implemented with a shift register 217 and a mux (MUX3) 241.

단계 4.2.4에서 v(x) ← (v(x) + u(x))/x는 배타 논리합 게이트(XOR1; 225), 오른쪽 쉬프트 레지스터(211) 및 먹스(MUX2; 239)로 구현되고, s(x) ← s(x) + r(x)는 배타 논리합 게이트(XOR2; 227) 및 먹스(MUX3; 241)로 구현되고, r(x) ← x·r(x)는 왼쪽 쉬프트 레지스터(219) 및 먹스(MUX4; 243)로 구현된다.In step 4.2.4 v (x) ← (v (x) + u (x)) / x is implemented with an exclusive OR gate (XOR1; 225), right shift register 211 and mux (MUX2; 239), s (x) ← s (x) + r (x) are implemented with exclusive OR gates (XOR2; 227) and mux (MUX3; 241), and r (x) ← xr (x) is the left shift register ( 219) and MUX4; 243.

단계 4.3.1과 단계 4.3.2는 XOR3(231), 왼쪽 쉬프트 레지스터(219), 왼쪽 쉬프트 레지스터(221) 및 먹스(243)로 구현된다.Steps 4.3.1 and 4.3.2 are implemented with XOR3 231, left shift register 219, left shift register 221 and mux 243.

단계 4.3.3와 단계 4.3.4는 왼쪽 쉬프트 레지스터(217), 왼쪽 쉬프트 레지스터(223) 및 먹스(241)로 구현된다. Steps 4.3.3 and 4.3.4 are implemented with a left shift register 217, a left shift register 223 and a mux 241.

단계 4.2.3에서 deg(u(x)) > deg(v(x))는 레지스터(233)와 AND회로(235)에 의하여 다음과 같이 구현된다.In step 4.2.3, deg (u (x))> deg (v (x)) is implemented by the register 233 and the AND circuit 235 as follows.

연산을 시작할 때, 레지스터(233)에 저장된 데이터는 100...0이다. 단계 4.2.1또는 단계 4.2.3의 u(x) ← (u(x) + v(x))/x가 수행되고, 레지스터(201)에 저장된 데이터가 갱신될 때마다 u(x)의 차수는 감소한다. 상기 차수가 감소될 때 마다 레지스터(233)는 레지스터(215)로부터 출력되는 데이터를 수신하고 저장한다. 이 때 u(x)의 차수가 v(x)의 차수보다 큰 경우 논리합 회로(235)에 저장되는 데이터는 000,,,0이다. At the start of the operation, the data stored in register 233 is 100 ... 0. U (x) ← (u (x) + v (x)) / x in step 4.2.1 or step 4.2.3 is performed, and the order of u (x) each time data stored in the register 201 is updated Decreases. Each time the order is reduced, the register 233 receives and stores data output from the register 215. At this time, when the order of u (x) is greater than the order of v (x), the data stored in the OR circuit 235 is 000 ,,, 0.

예컨대, 유한체(GF(24))에서 초기에 레지스터(233)에 저장된 데이터는 (10000)이고 v(x)는 (00111)이라고 가정하면, v(x)의 차수는 2차이다. For example, assuming that the data initially stored in the register 233 in the finite field GF (2 4 ) is (10000) and v (x) is (00111), the order of v (x) is secondary.

단계 4.2.1이 수행되고 레지스터(201)에 저장된 데이터가 갱신된다면, u(x)의 차수는 3차이다. 이때 레지스터(233)의 데이터는 (11000)이 된다. 논리곱 회로(235)에 의하여 논리곱이 수행되면, 그 결과는 (00000)이다. 이 경우 u(x)는 실질적으로 3차이고 v(x)는 2차이다. If step 4.2.1 is performed and the data stored in the register 201 is updated, the order of u (x) is cubic. At this time, the data of the register 233 becomes (11000). If the AND is performed by the AND circuit 235, the result is (00000). In this case u (x) is substantially cubic and v (x) is quadratic.

단계 4.2.1이 다시 수행된다면, u(x)는 2차가 되고 레지스터(233)에는 (11100)이 저장된다. 이때 논리곱 회로(235)에는 (00100)이 저장된다. 제어로직 유닛(300)은 저장된 정보를 이용하여 단계 4.2.4를 수행한다. 본 발명에 따른 역원계산 회로는 스마트 카드 등의 암호화 장치에 사용될 수 있다.If step 4.2.1 is performed again, u (x) becomes secondary and 11100 is stored in register 233. At this time, the logical product circuit 235 is stored (00100). The control logic unit 300 performs step 4.2.4 using the stored information. The inverse calculating circuit according to the present invention can be used in an encryption device such as a smart card.

본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.Although the present invention has been described with reference to one embodiment shown in the drawings, this is merely exemplary, and those skilled in the art will understand that various modifications and equivalent other embodiments are possible therefrom. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.

상술한 바와 같이 본 발명에 따른 역원계산 회로, 역원계산 방법 및 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체는 시간 공격과 차동 전력해석공격에 강하다.As described above, the computer-readable recording medium that records the inverse calculating circuit, the inverse calculating method, and the program for executing the method according to the present invention is resistant to time attack and differential power analysis attack.

Claims (11)

역원 계산 회로에 있어서,In the inverse calculation circuit, 제1난수 및 제2난수를 발생하는 난수 발생기; 및A random number generator for generating a first random number and a second random number; And 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 인버터를 구비하는 것을 특징으로 하는 역원계산 회로. Receive a plurality of first bits representing a first element of a finite body as a first input, and receive a plurality of second bits representing a second element of a finite body as a second input, wherein the first random number and the first And an inverter for outputting a plurality of third bits representing the inverse of the first element in response to the random number. 제1항에 있어서, 상기 제1난수는 상기 제2난수보다 늦게 발생되는 것을 특징으로 하는 역원계산 회로.The inverse calculation circuit of claim 1, wherein the first random number is generated later than the second random number. 제1항에 있어서, 제1난수는 2비트로 구성되는 것을 특징으로 하는 역원계산 회로.The inverse calculating circuit according to claim 1, wherein the first random number is composed of two bits. 제1항에 있어서, 상기 제2난수는 2n보다 크고 3n보다 작은 값을 갖고, 상기 n은 유한체의 차수인 것을 특징으로 하는 역원계산 회로.2. The inverse calculating circuit according to claim 1, wherein the second random number has a value larger than 2n and smaller than 3n, and n is an order of a finite body. 제1항에 있어서, 상기 다수개의 제1비트들과 상기 다수개의 제3비트들이 n비트로 구성되는 경우, 상기 다수개의 제2비트들은 (n+1)비트로 구성되는 것을 특징으로 하는 역원계산 회로. The inverse calculating circuit of claim 1, wherein when the plurality of first bits and the plurality of third bits comprise n bits, the plurality of second bits comprise (n + 1) bits. 역원 계산 방법에 있어서,In the inverse calculation method, 제1난수 및 제2난수를 발생하는 단계; 및Generating a first random number and a second random number; And 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 구비하는 것을 특징으로 하는 역원계산 방법. Receive a plurality of first bits representing a first element of a finite body as a first input, and receive a plurality of second bits representing a second element of a finite body as a second input, wherein the first random number and the first And outputting a plurality of third bits representing the inverse of the first element in response to the random number. 컴퓨터로 읽을 수 있는 기록매체에 있어서,In a computer-readable recording medium, 제1난수 및 제2난수를 발생하는 단계; 및Generating a first random number and a second random number; And 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Receive a plurality of first bits representing a first element of a finite body as a first input, and receive a plurality of second bits representing a second element of a finite body as a second input, wherein the first random number and the first 2. A computer readable recording medium having recorded thereon a program for executing a step of outputting a plurality of third bits representing the inverse of the first element in response to a random number. 제7항에 있어서, 상기 제1난수는 상기 제2난수보다 늦게 발생되는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.8. The computer-readable recording medium of claim 7, wherein the first random number is generated later than the second random number. 제7항에 있어서, 상기 제1난수는 2비트로 구성되는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.8. The computer-readable recording medium of claim 7, wherein the first random number consists of two bits. 제7항에 있어서, 상기 제2난수는 2n보다 크고 3n보다 작은 값을 갖고, 상기 n은 유한체의 차수인 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.8. The computer-readable recording medium of claim 7, wherein the second random number has a value greater than 2n and less than 3n, and n is a finite order. 제7항에 있어서, 상기 다수개의 제1비트들과 상기 다수개의 제3비트들이 n비트로 구성되는 경우, 상기 다수개의 제2비트들은 (n+1)비트로 구성되는 것을 특징 으로 하는 컴퓨터로 읽을 수 있는 기록매체.8. The computer-readable device of claim 7, wherein when the plurality of first bits and the plurality of third bits comprise n bits, the plurality of second bits comprise (n + 1) bits. 9. Recording media.
KR1020030096216A 2003-12-24 2003-12-24 Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code Expired - Lifetime KR100564599B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020030096216A KR100564599B1 (en) 2003-12-24 2003-12-24 Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code
US11/021,351 US7680272B2 (en) 2003-12-24 2004-12-23 Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030096216A KR100564599B1 (en) 2003-12-24 2003-12-24 Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code

Publications (2)

Publication Number Publication Date
KR20050064645A KR20050064645A (en) 2005-06-29
KR100564599B1 true KR100564599B1 (en) 2006-03-29

Family

ID=36583871

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030096216A Expired - Lifetime KR100564599B1 (en) 2003-12-24 2003-12-24 Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code

Country Status (2)

Country Link
US (1) US7680272B2 (en)
KR (1) KR100564599B1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2880149B1 (en) * 2004-12-23 2007-03-30 Oberthur Card Syst Sa DATA PROCESSING METHOD AND ASSOCIATED DEVICE
JP5147412B2 (en) 2005-01-21 2013-02-20 サーティコム コーポレーション Elliptic curve random number generation
WO2006112114A1 (en) * 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. Data encryption device and data encryption method
KR101548174B1 (en) 2008-12-02 2015-09-07 삼성전자주식회사 Method for calculating negative inverse of modulus
US8924740B2 (en) * 2011-12-08 2014-12-30 Apple Inc. Encryption key transmission with power analysis attack resistance
CN106548806B (en) * 2016-10-13 2019-05-24 宁波大学 A kind of shift register that DPA can be defendd to attack

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3855497T2 (en) 1988-10-18 1997-03-13 Philips Electronics Nv Data processing device for calculating a multiplicatively inverted element of a finite body
US6088453A (en) * 1997-01-27 2000-07-11 Kabushiki Kaisha Toshiba Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation
US6038581A (en) 1997-01-29 2000-03-14 Nippon Telegraph And Telephone Corporation Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
JPH1152851A (en) 1997-07-31 1999-02-26 Nippon Telegr & Teleph Corp <Ntt> Group operation unit on elliptic curve
EP0917047B1 (en) * 1997-11-04 2004-10-13 Nippon Telegraph and Telephone Corporation Apparatus for modular inversion for information security
US5982895A (en) * 1997-12-24 1999-11-09 Motorola, Inc. Finite field inverse circuit for use in an elliptic curve processor
JP2002519722A (en) * 1998-06-03 2002-07-02 クリプターグラフィー リサーチ インコーポレイテッド Improved DES and other cryptographic processes for smart cards and other cryptographic systems to minimize leakage
US6578061B1 (en) * 1999-01-19 2003-06-10 Nippon Telegraph And Telephone Corporation Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
US6298135B1 (en) 1999-04-29 2001-10-02 Motorola, Inc. Method of preventing power analysis attacks on microelectronic assemblies
JP4354609B2 (en) * 1999-07-16 2009-10-28 パナソニック株式会社 Simultaneous equation solving apparatus and inverse element computing apparatus on finite field
CA2298990A1 (en) * 2000-02-18 2001-08-18 Cloakware Corporation Method and system for resistance to power analysis
US7050579B1 (en) * 2000-03-31 2006-05-23 State Of Oregon Acting By And Through The State Board Of Education On Behalf Of Oregon State University Cryptographic methods and apparatus using word-wise montgomery multiplication
JP3950638B2 (en) 2001-03-05 2007-08-01 株式会社日立製作所 Tamper resistant modular processing method
KR20020086005A (en) 2001-05-10 2002-11-18 학교법인 정석학원 Inverse operator for elliptic curve cryptosystems
KR20030003435A (en) 2001-06-30 2003-01-10 주식회사 시큐리티테크놀로지스 Optimal finite field inversion method and device for use in a elliptic curve cryptosystem
TW557636B (en) * 2002-03-26 2003-10-11 Ind Tech Res Inst Random number generator
KR100720726B1 (en) * 2003-10-09 2007-05-22 삼성전자주식회사 Security maintenance system using RSA algorithm and method
KR101061906B1 (en) * 2004-02-19 2011-09-02 삼성전자주식회사 Basic Computing Device and Method Safe for Power Analysis Attack
US7386027B2 (en) * 2004-03-31 2008-06-10 Matsushita Electric Industrial Co., Ltd. Methods and apparatus for generating and processing wideband signals having reduced discrete power spectral density components

Also Published As

Publication number Publication date
KR20050064645A (en) 2005-06-29
US20060126828A1 (en) 2006-06-15
US7680272B2 (en) 2010-03-16

Similar Documents

Publication Publication Date Title
US7864951B2 (en) Scalar multiplication method with inherent countermeasures
Courtois Higher order correlation attacks, XL algorithm and cryptanalysis of Toyocrypt
KR100585119B1 (en) Encryption apparatus, encryption method and recording medium thereof
US9772821B2 (en) Cryptography method comprising an operation of multiplication by a scalar or an exponentiation
JP4671571B2 (en) Secret information processing device and memory for storing secret information processing program
CN109039640B (en) An encryption and decryption hardware system and method based on RSA cryptographic algorithm
US20050283714A1 (en) Method and apparatus for multiplication in Galois field, apparatus for inversion in Galois field and apparatus for AES byte substitution operation
JP2008252299A (en) Cryptographic processing system and cryptographic processing method
JP2001337599A (en) Scalar multiplication method and device in elliptic curve cryptography, and storage medium
US11824986B2 (en) Device and method for protecting execution of a cryptographic operation
KR100442218B1 (en) Power-residue calculating unit using montgomery algorithm
JP4668931B2 (en) Encryption processor with tamper resistance against power analysis attacks
KR20060116612A (en) Encryption method and apparatus for increasing complexity of power decryption using random point representation in binary field ECC
EP3776305B1 (en) Using cryptographic blinding for efficient use of montgomery multiplication
JP2004304800A (en) Prevention of side channel attacks in data processing equipment
KR100574965B1 (en) Finite Field Multiplier
KR20210067961A (en) Device and method for operation of encrypted data using fully homomorphic encryption
US20060212506A1 (en) Scalar multiplication apparatus and method
KR100564599B1 (en) Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code
US7983415B2 (en) Method for performing iterative scalar multiplication which is protected against address bit attack
EP4297330A1 (en) Method and system for protecting cryptographic operations against side-channel attacks
Banik et al. Image encryption based on module learning with error using dynamic S-boxes
Li et al. Power Analysis Attacks against QUAD.
Monfared et al. Secure and efficient exponentiation architectures using Gaussian normal basis
JP2024540262A (en) White-box processing for encoding large integer values

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20031224

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20050831

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20060220

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20060321

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20060322

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20090309

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20100315

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20110302

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20120229

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20130228

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20130228

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20140618

Year of fee payment: 9

PR1001 Payment of annual fee

Payment date: 20140618

Start annual number: 9

End annual number: 9

FPAY Annual fee payment

Payment date: 20150224

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20150224

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 11

PR1001 Payment of annual fee

Payment date: 20160218

Start annual number: 11

End annual number: 11

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20170220

Start annual number: 12

End annual number: 12

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 13

PR1001 Payment of annual fee

Payment date: 20180219

Start annual number: 13

End annual number: 13

PR1001 Payment of annual fee

Payment date: 20230223

Start annual number: 18

End annual number: 18

PC1801 Expiration of term

Termination date: 20240624

Termination category: Expiration of duration