KR100564599B1 - 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 - Google Patents

역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 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
Application number
KR1020030096216A
Other languages
English (en)
Other versions
KR20050064645A (ko
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/ko
Priority to US11/021,351 priority patent/US7680272B2/en
Publication of KR20050064645A publication Critical patent/KR20050064645A/ko
Application granted granted Critical
Publication of KR100564599B1 publication Critical patent/KR100564599B1/ko

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/58Random or pseudo-random number generators
    • 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/726Inversion; Reciprocal calculation; Division of elements of a finite field
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; 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/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

Abstract

본 발명은 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체이다. 상기 역원 계산 회로는 제1난수 및 제2난수를 발생하는 난수 발생기; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 인버터를 구비한다. 상기 제1난수는 DPA를 방지하기 위한 난수이고, 상기 제2난수는 시간 공격을 방지하기 위한 난수이다.
몽고메리 역원 알고리즘, 역원

Description

역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체{Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 역원계산 회로의 블락도를 나타낸다.
도 2는 도 1에 도시된 인버터의 회로도를 나타낸다.
본 발명은 암호 응용 회로에 관한 것으로, 보다 상세하게는 시간공격 (timing attack)과 차동전력해석(DPA: Differential Power Analysis) 공격에 강한 역원 계산회로, 역원계산 방법 및 상기 역원계산 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
암호(cryptography)는 원래 국가의 비밀을 보안할 목적으로 군사·외교분야에서 사용되었다. 그리고 금융기관들은 전자자금이동(Electronic Funds Transfer) 을 위하여 암호를 사용했다. 따라서 암호는 경제, 금융분야에서 널리 사용된 이래, 동일성의 인증(Authentication), 암호화 키에 대한 관리(Key Management), 디지탈 서명(Digital Signature), 및 신원확인(Identity Verification) 등 광범위하게 사용되고 있다.
암호해독은 해독키의 관리소홀, 비밀번호의 예측가능성, 또는 통신망에서 키보드 입력에 대한 모니터링 등으로도 가능하다. 여기서 암호해독은 암호해독행위자가 암호문만을 가지고 평문에 대한 해독을 감행하는 방법(소위 무작정공격; Bruteforce Attack)이 아니라 평문의 암호화에 사용된 알고리즘의 종류, 사용된 운영체제 등 시스템에 대한 모든 정보를 알고있는 상태에서 암호화에 사용된 키만 모르는 경우에 그 키를 찾아내어 암호문을 평문으로 해독하려는 행위를 지칭한다.
암호를 해독하는 기술로는 단순 암호문 공격(Ciphertext Only Attack), 이미 알고 있는 평문공격(Known Plaintext Attack), 선택 평문공격(Chosen Plaintext Attack), 최적 선택 평문 공격(Adaptively Chosen Plaintext Attack), 시간 공격 (timing attack) 및 DPA(또는 전력분석 공격이라고도 한다.) 등이 있다.
시간 공격은 암호 알고리즘의 연산 수행시간 정보를 이용하여 특정한 비트의 값이 0인지 또는 1인지를 판단하고, 이에 따라 암호를 해독하는 방법을 말한다. 그리고 차동전력해석 공격은 입력 비트값에 따라 암호 알고리즘이 사용하는 전력량을 분석하고, 이에 따라 비밀키의 비트값을 알아냄으로서 암호를 해독하는 방법을 말한다.
이진 유한체(binary finite field, GF(2n))에서 정의되는 타원곡선 암호법 (elliptic curve cryptography)은 아핀 좌표계(affine coordinate)를 이용한 암호법과 사영 좌표계(projective coordinate)를 이용한 암호법으로 나뉜다.
아핀 좌표계는 타원곡선 상의 좌표를 (x, y)로 표현하고, 사영 좌표계는 타원곡선 상의 좌표를 (X, Y, Z)로 표현한다. 따라서 아핀 좌표계의 타원곡선 상의 점과 사영 좌표계의 타원곡선 상의 점의 관계는 수학식 1로 표현된다.
Figure 112003049380371-pat00001
타원곡선에서의 연산은 덧셈(addition) 연산과 더블링(doubling) 연산이 있다. 덧셈 연산은 더하는 두 점들이 서로 다를 때 사용되고, 더블링 연산은 더하는 두 점들이 서로 같은 때 사용된다.
이진 유한체(GF(2n))에서 정의된 아핀 좌표계에서의 연산식은 수학식 2와 같다.
Figure 112003049380371-pat00002
수학식 2에서 보는 바와 같이 유한체(GF(2n))에서 정의된 타원곡선에서의 덧셈 연산과 더블링 연산은 유한체(GF(2n))들의 연산(즉, 덧셈, 제곱, 곱셈, 역원계산)으로 이루어진다. 각 타원곡선에서의 덧셈 연산과 더블링 연산에 필요한 연산의 수와 종류는 표 1과 같다.
연산의 종류 연산의 수
점 덧셈(point addition) 1I + 2M + 1S
점 더블링(point doubling) 1I + 2M + 1S
여기서 I는 유한체(GF(2n))의 역원계산을 나타내고, M은 유한체(GF(2n))의 곱셈을 나타내고, S는 유한체(GF(2n))의 제곱을 나타낸다. 유한체(GF(2n))의 덧셈은 비트끼리의 배타논리합(bitwise XOR)으로 구현될 수 있으므로, 유한체(GF(2n))의 덧셈을 구현하는 것과 유한체(GF(2n))의 덧셈의 연산속도는 무시할 수 있으므로, 유한체(GF(2n))의 덧셈은 표 1로부터 제외했다.
유한체(GF(2n))의 역원계산은 유한체(GF(2n))의 곱셈과 유한체(GF(2n))의 제 곱에 비하여 타원곡선 암호법에서 많은 비중을 차지하는 연산이다. 따라서 타원곡선 암호법에서 역원계산을 필요로하지 않는 사영 좌표계서의 연산이 사용되는 경우도 있다.
그런데 아핀 좌표계를 이용한 타원곡선에서의 덧셈 연산과 더블링 연산이 부채널 공격(side channel attack)에 취약하게 된다면, 타원곡선 암호법의 안전성은 감소한다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 시간 공격과 차동전력해석공격에 강한 역원계산회로를 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 역원 계산 회로는 제1난수 및 제2난수를 발생하는 난수 발생기; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 인버터를 구비한다.
상기 제1난수는 DPA를 방지하기 위한 난수이고, 상기 제2난수는 시간 공격을 방지하기 위한 난수이다.
상기 기술적 과제를 달성하기 위한 역원 계산 방법은 제1난수 및 제2난수를 발생하는 단계; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신 하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 구비한다.
상기 기술적 과제를 달성하기 위한 컴퓨터로 읽을 수 있는 기록매체는 제1난수 및 제2난수를 발생하는 단계; 및 유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 실행시키기 위한 프로그램을 기록한다.
상기 제1난수는 상기 제2난수보다 늦게 발생되는 것이 바람직하다. 상기 제1난수는 2비트로 구성되고, 상기 제2난수는 2n보다 크고 3n보다 작은 값을 갖고, 상기 n은 유한체의 차수이다.
상기 다수개의 제1비트들과 상기 다수개의 제3비트들이 n비트로 구성되는 경우, 상기 다수개의 제2비트들은 (n+1)비트로 구성되는 것이 바람직하다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
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)은 다음과 같다.
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))
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):= 1
2: k := 0
3: while (v(x) != 0)
4: if u(0) = 0 then u(x) := u(x)/x, s(x) := x·s(x)
5: else if v(0) = 0 then v(x) := v(x)/x, r(x) := x·r(x)
6: else if deg(u(x)) > deg(v(x)) then
u(x) := (u(x) + v(x)) / x
r(x) := r(x) + s(x)
s(x) := xs(x)
7: else v(x) := (v(x) + u(x)) / x
s(x) := s(x) + r(x)
r(x) := xr(x)
8: k := k + 1
9: if deg(r(x)) = deg(p(x)) then r(x) := r(x) + p(x)
10: 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의 조건은 다음과 같다.
deg(a(x) ≤ k ≤ deg(p(x)) + deg(a(x)) + 1,
즉, n이 유한체(GF(2n))의 차수일때 k ≤ 2n이다.
상기 몽고메리 역원 알고리즘에서 역원계산을 위한 연산시간 및 k는 유한체(GF(2n))의 원소 a(x)에 따라 다르다. 그러나 상기 몽고메리 역원 알고리즘을 구현한 역원 계산회로로 동일한 유한체(GF(2n))의 원소 a(x)를 반복하여 입력하는 경우, 상기 원소 a(x)의 역원을 계산하기 위한 연산 시간을 동일하다. 따라서 상기 역원계산 회로는 시간공격에 취약하다.
따라서 시간공격에 강하도록 종래의 몽고메리 역원 알고리즘을 개선한 몽고메리 알고리즘(이하 '제1 몽고메리 역원 알고리즘'이라 한다.)은 다음과 같다.
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)← 1
3. m ← random value, 2n ≤m ≤ 3n
4. while (k < m)
4.1 if (v(x) ≠ 0)
4.1.1 if(u0 ≠ 0) u(x) ← u(x)/x, s(x) ← x·s(x)
4.1.2 else if (v0 ≠ 0) v(x) ← v(x)/x, r(x) ← x·r(x)
4.1.3 else if (deg(u(x)) > deg(v(x))) then
u(x) ← (u(x) + v(x))/x
r(x) ← r(x) + s(x)
s(x) ← x·s(x)
4.1.4 else v(x) ← (v(x) + u(x))/x
s(x) ← s(x) + r(x)
r(x) ← x·r(x)
4.2 else
4.2.1 if (rn = 1) r(x) ← r(x) + p(x)
4.2.2 r(x) ← x·r(x)
4.3 k ← k + 1
5. if (deg(r(x)) = deg(p(x))) r(x) ← r(x) + p(x)
6. OUTPUT r(x), k
상기 제1 몽고메리 역원 알고리즘(또는 제1 몽고메리 역원 알고리즘을 구현 한 하드웨어)은 몽고메리 역원 알고리즘에 난수(random number; m)를 도입했다. 난수(m)의 범위는 2n과 3n사이의 임의의 수이다. 여기서 n은 유한체(GF(2n))의 차수를 의미한다.
몽고메리 역원 알고리즘은 (v(x) != 0)동안만 역원계산을 한다. 또한, 상기 제1 몽고메리 역원 알고리즘은 (v(x) ≠ 0)일때 단계 4.1을 수행하나, v(x)가 0이되면 단계 4.2를 수행한다.
따라서 단계 4.2는 단계 4에서 정의된 난수(m)가 될 때까지 역원계산을 수행하므로, 제1 몽고메리 역원 알고리즘은 동일한 입력(예컨대, 역원을 구하고자하는 유한체(GF(2n))의 원소)에 대하여도 상기 입력에 대한 역원을 계산하는 시간이 서로 다르다. 따라서 제1 몽고메리 역원 알고리즘은 시간 공격에 강한다.
이 때 몽고메리 역원 알고리즘에서 a(x)-1xk의 k는 2n보다 작은 수이고, 제1 몽고메리 역원 알고리즘에서 a(x)-1xm의 m은 2n보다 크고 3n보다 작은 수이다.
a(x)-1xk와 a(x)-1xm의 관계는 제1 몽고메리 역원 알고리즘에서 단계 4.1이 끝난 경우 단계 4.2가 수행되므로 다음과 같은 관계가 있다.
a(x)-1xm = a(x)-1xkx(m-k)
따라서 제1 몽고메리 역원 알고리즘은 v(x) = 0이 되기 전에 항상 단계 4.1을 수행한다. 따라서 제1 몽고메리 역원 알고리즘은 DPA에 취약하다.
따라서 시간공격 및 DPA에 강하도록 제1 몽고메리 역원 알고리즘을 개선한 본 발명의 실시예에 따른 알고리즘(이하 '제2 몽고메리 역원 알고리즘'라 한다.)은 다음과 같다.
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)← 1
3. m ← random value, 2n ≤m ≤ 3n
4. while (k < m or v(x) ≠ 0)
4.1 R ← random value, 0 ≤ R ≤ 3
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.2 else if (v0 ≠ 0) v(x) ← v(x)/x, r(x) ← x·r(x)
4.2.3 else if (deg(u(x)) > deg(v(x))) then
u(x) ← (u(x) + v(x))/x
r(x) ← r(x) + s(x)
s(x) ← x·s(x)
4.2.4 else v(x) ← (v(x) + u(x))/x
s(x) ← s(x) + r(x)
r(x) ← x·r(x)
4.3 else
4.3.1 if (rn = 1) r(x) ← r(x) + p(x)
4.3.2 r(x) ← x·r(x)
4.3.3 if (sn = 1) s(x) ← s(x) + p(x)
4.3.4 s(x) ← x·s(x)
4.4 k ← k + 1
5. if (deg(r(x)) = deg(p(x))) r(x) ← r(x) + p(x)
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 몽고메리 역원 알고리즘은 동일한 입력에 대하여도 동일한 연산을 수행하지 않는다.
난수(R)는 0부터 3사이의 임의의 값을 갖고, v(x)가 0이 아니고 R이 0인 경우에만 단계 4.3이 수행되므로, 1/4의 확률로 단계 4.3이 수행된다. 만일 난수(R)가 0과 1중에서 하나만 선택되는 경우, 단계 4.2와 단계 4.3은 각각 1/2의 확률로 수행된다.
본 발명에 따른 역원계산 회로는 제2 몽고메리 역원 알고리즘을 구현한 것으로, 상기 역원계산 회로는 도 1 및 도 2를 참조하여 상세히 설명된다.
도 1은 본 발명의 실시예에 따른 역원계산 회로의 블락도를 나타낸다. 도 1 을 참조하면, 역원계산 회로(100)는 인버터(200) 및 난수 발생기(400)를 구비한다.
난수 발생기(400)는 제1난수(R) 및 제2난수(m)을 발생한다. 제1난수(R)는 DPA를 방지하기 위한 난수이다. 본 발명에 따른 난수 발생기에서 발생되는 제1난수(R)의 범위는 0부터 3까지이므로, 제1난수(R)의 값은 2비트로 표현될 수 있다. 그러나 본 발명에 따른 제1난수(R)의 범위는 0부터 3까지로 한정되는 것이 아니다.
제2난수(m)는 시간공격을 방지하기 위한 난수이다. 제2난수(m)는 2n보다 크고 3n보다 작은 값을 갖는다. 여기서 n은 유한체(GF(2n))의 차수를 나타낸다.
인버터(200)는 a(x) 및 p(x)를 수신하고, 제1난수(R) 및 제2난수(m)에 응답하여, r(x)를 출력한다. 여기서 a(x)는 역원을 구하고자 하는 유한체(GF(2n))의 원소를 나타낸다. a(x)는 (n-1)차 다항식이고, n비트들로 표현된다.
p(x)는 모듈러 연산을 위한 n차 다항식이고, (n+1)비트들로 표현된다. r(x)는 a(x)의 역원으로 (n-1)차 다항식이고, n비트들로 표현된다.
도 2는 도 1에 도시된 인버터의 회로도를 나타낸다. 도 1, 제2 몽고메리 역원 알고리즘, 및 도 2를 참조하여 인버터의 구조 및 동작이 상세히 설명된다.
각 레지스터(201, 203, 205, 및 207)는 u(x), v(x), s(x), 및 r(x)를 저장한다.
오른쪽 쉬프트 레지스터들(209, 211, 및 213)각각은 입력 데이터를 수신하고, 상기 데이터를 오른쪽으로 1비트씩 이동(shift)시키고, 각 MSB(most significant bit)에 0을 저장한다. 예컨대 레지스터(201)로부터 출력되는 데이터가 00011인 경우, 오른쪽 쉬프트 레지스터(209)는 00011을 수신하고 00001을 출력한다.
그러나, 오른쪽 쉬프트 레지스터(215)는 입력 데이터를 수신하고, 상기 데이터를 오른쪽으로 1비트씩 이동시키고, MSB에 1을 저장한다. 따라서 레지스터(233)로부터 출력되는 데이터가 11000인 경우, 오른쪽 쉬프트 레지스터(215)는 11000을 수신하고 11100을 출력한다.
왼쪽 쉬프트 레지스터들(217, 219, 221, 및 223)각각은 입력 데이터를 수신하고, 상기 데이터를 왼쪽으로 1비트씩 이동시키고, 각 LSB(least significant bit)에 0을 저장한다.
배타 논리합 게이트(225, 227, 231, 및 229)는 두 개의 입력 데이터를 비트단위(bitwise)로 배타 논리합 연산을 수행한다. 예컨대 배타 논리합 게이트(225)는 레지스터(201)로부터 출력되는 데이터와 레지스터(203)으로부터 출력되는 데이터를 비트단위로 배타 논리합 한다.
레지스터(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)으로부터 출력되는 데이터를 수신하고, 이들을 비트단위로 논리곱한다.
제어 로직 유닛(300)은 레지스터(201)의 LSB(u0), 레지스터(203)의 LSB(v0), 레지스터(207)의 MSB(rn), 및 논리곱 회로(235)의 출력신호에 기초하여 제어신호들을 발생한다. 상기 제어신호들 각각은 대응되는 먹스(237, 239, 241, 및 243)와 대응되는 레지스터(201, 203, 205, 및 207)로 입력된다. 각 레지스터(201, 203, 205, 및 207)는 대응되는 제어신호에 응답하여 저장된 데이터를 갱신한다.
도 2는 제2 몽고메리 역원 알고리즘을 구현한 것으로, 각 단계와 대응되는 회로를 설명하면 다음과 같다.
단계 4.2.1는 레지스터(209)와 먹스(237), 및 레지스터(217)와 먹스(241)로 구현된다. 단계 4.2.2는 레지스터(213)와 먹스(239), 및 레지스터(219)와 먹스 (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)로 구현된다.
단계 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)로 구현된다.
단계 4.3.1과 단계 4.3.2는 XOR3(231), 왼쪽 쉬프트 레지스터(219), 왼쪽 쉬프트 레지스터(221) 및 먹스(243)로 구현된다.
단계 4.3.3와 단계 4.3.4는 왼쪽 쉬프트 레지스터(217), 왼쪽 쉬프트 레지스터(223) 및 먹스(241)로 구현된다.
단계 4.2.3에서 deg(u(x)) > deg(v(x))는 레지스터(233)와 AND회로(235)에 의하여 다음과 같이 구현된다.
연산을 시작할 때, 레지스터(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이다.
예컨대, 유한체(GF(24))에서 초기에 레지스터(233)에 저장된 데이터는 (10000)이고 v(x)는 (00111)이라고 가정하면, v(x)의 차수는 2차이다.
단계 4.2.1이 수행되고 레지스터(201)에 저장된 데이터가 갱신된다면, u(x)의 차수는 3차이다. 이때 레지스터(233)의 데이터는 (11000)이 된다. 논리곱 회로(235)에 의하여 논리곱이 수행되면, 그 결과는 (00000)이다. 이 경우 u(x)는 실질적으로 3차이고 v(x)는 2차이다.
단계 4.2.1이 다시 수행된다면, u(x)는 2차가 되고 레지스터(233)에는 (11100)이 저장된다. 이때 논리곱 회로(235)에는 (00100)이 저장된다. 제어로직 유닛(300)은 저장된 정보를 이용하여 단계 4.2.4를 수행한다. 본 발명에 따른 역원계산 회로는 스마트 카드 등의 암호화 장치에 사용될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 역원계산 회로, 역원계산 방법 및 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체는 시간 공격과 차동 전력해석공격에 강하다.

Claims (11)

  1. 역원 계산 회로에 있어서,
    제1난수 및 제2난수를 발생하는 난수 발생기; 및
    유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 인버터를 구비하는 것을 특징으로 하는 역원계산 회로.
  2. 제1항에 있어서, 상기 제1난수는 상기 제2난수보다 늦게 발생되는 것을 특징으로 하는 역원계산 회로.
  3. 제1항에 있어서, 제1난수는 2비트로 구성되는 것을 특징으로 하는 역원계산 회로.
  4. 제1항에 있어서, 상기 제2난수는 2n보다 크고 3n보다 작은 값을 갖고, 상기 n은 유한체의 차수인 것을 특징으로 하는 역원계산 회로.
  5. 제1항에 있어서, 상기 다수개의 제1비트들과 상기 다수개의 제3비트들이 n비트로 구성되는 경우, 상기 다수개의 제2비트들은 (n+1)비트로 구성되는 것을 특징으로 하는 역원계산 회로.
  6. 역원 계산 방법에 있어서,
    제1난수 및 제2난수를 발생하는 단계; 및
    유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 구비하는 것을 특징으로 하는 역원계산 방법.
  7. 컴퓨터로 읽을 수 있는 기록매체에 있어서,
    제1난수 및 제2난수를 발생하는 단계; 및
    유한체의 제1원소를 표현하는 다수개의 제1비트들을 제1입력으로 수신하고 유한체의 제2원소를 표현하는 다수개의 제2비트들을 제2입력으로 수신하고, 상기 제1난수 및 상기 제2난수에 응답하여 상기 제1원소의 역원을 표현하는 다수개의 제3비트들을 출력하는 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  8. 제7항에 있어서, 상기 제1난수는 상기 제2난수보다 늦게 발생되는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.
  9. 제7항에 있어서, 상기 제1난수는 2비트로 구성되는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.
  10. 제7항에 있어서, 상기 제2난수는 2n보다 크고 3n보다 작은 값을 갖고, 상기 n은 유한체의 차수인 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.
  11. 제7항에 있어서, 상기 다수개의 제1비트들과 상기 다수개의 제3비트들이 n비트로 구성되는 경우, 상기 다수개의 제2비트들은 (n+1)비트로 구성되는 것을 특징 으로 하는 컴퓨터로 읽을 수 있는 기록매체.
KR1020030096216A 2003-12-24 2003-12-24 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 KR100564599B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020030096216A KR100564599B1 (ko) 2003-12-24 2003-12-24 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
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 (ko) 2003-12-24 2003-12-24 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체

Publications (2)

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

Family

ID=36583871

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030096216A KR100564599B1 (ko) 2003-12-24 2003-12-24 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체

Country Status (2)

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

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2880149B1 (fr) * 2004-12-23 2007-03-30 Oberthur Card Syst Sa Procede de traitement de donnees et dispositif associe
CA2594670C (en) 2005-01-21 2014-12-23 Certicom Corp. Elliptic curve random number generation
EP1865481A1 (en) * 2005-03-31 2007-12-12 Matsushita Electric Industrial Co., Ltd. Data encryption device and data encryption method
KR101548174B1 (ko) 2008-12-02 2015-09-07 삼성전자주식회사 모듈러스의 음의 역원을 구하는 방법
US8924740B2 (en) * 2011-12-08 2014-12-30 Apple Inc. Encryption key transmission with power analysis attack resistance
CN106548806B (zh) * 2016-10-13 2019-05-24 宁波大学 一种能够防御dpa攻击的移位寄存器

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3855497T2 (de) 1988-10-18 1997-03-13 Philips Electronics Nv Datenverarbeitungsgerät zur Berechnung eines multiplikativ invertierten Elements eines endigen Körpers
US6088453A (en) * 1997-01-27 2000-07-11 Kabushiki Kaisha Toshiba Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation
JPH1152851A (ja) 1997-07-31 1999-02-26 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上の群演算装置
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
DE69826963T2 (de) * 1997-11-04 2005-11-17 Nippon Telegraph And Telephone Corp. Gerät für die modulare Inversion zur Sicherung von Information
US5982895A (en) * 1997-12-24 1999-11-09 Motorola, Inc. Finite field inverse circuit for use in an elliptic curve processor
JP2002519722A (ja) * 1998-06-03 2002-07-02 クリプターグラフィー リサーチ インコーポレイテッド スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス
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 (ja) * 1999-07-16 2009-10-28 パナソニック株式会社 有限体上の連立方程式求解装置及び逆元演算装置
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 (ja) 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
KR20020086005A (ko) 2001-05-10 2002-11-18 학교법인 정석학원 타원곡선 암호 시스템을 위한 역원 연산기
KR20030003435A (ko) 2001-06-30 2003-01-10 주식회사 시큐리티테크놀로지스 암호시스템에 사용하기 위한 최적의 역원을 구하기 위한방법 및 장치
TW557636B (en) * 2002-03-26 2003-10-11 Ind Tech Res Inst Random number generator
KR100720726B1 (ko) * 2003-10-09 2007-05-22 삼성전자주식회사 Rsa 알고리즘을 이용한 보안유지시스템 및 그 방법
KR101061906B1 (ko) * 2004-02-19 2011-09-02 삼성전자주식회사 전력분석공격에 안전한 기본 연산 장치 및 방법
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 (ko) 2005-06-29
US7680272B2 (en) 2010-03-16
US20060126828A1 (en) 2006-06-15

Similar Documents

Publication Publication Date Title
US20050147243A1 (en) Cryptographic apparatus, cryptographic method, and storage medium thereof
Courtois Higher order correlation attacks, XL algorithm and cryptanalysis of Toyocrypt
US7864951B2 (en) Scalar multiplication method with inherent countermeasures
US9772821B2 (en) Cryptography method comprising an operation of multiplication by a scalar or an exponentiation
JP4671571B2 (ja) 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
US20050283714A1 (en) Method and apparatus for multiplication in Galois field, apparatus for inversion in Galois field and apparatus for AES byte substitution operation
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
JP2001337599A (ja) 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
JP2004304800A (ja) データ処理装置におけるサイドチャネル攻撃防止
KR100574965B1 (ko) 유한체 곱셈기
US11824986B2 (en) Device and method for protecting execution of a cryptographic operation
US20060212506A1 (en) Scalar multiplication apparatus and method
US7983415B2 (en) Method for performing iterative scalar multiplication which is protected against address bit attack
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
JP2003255831A (ja) 楕円曲線スカラー倍計算方法及び装置
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
EP4297330A1 (en) Method and system for protecting cryptographic operations against side-channel attacks
Monfared et al. Secure and efficient exponentiation architectures using Gaussian normal basis
JP3881273B2 (ja) 暗号鍵生成装置、暗号鍵生成プログラムおよびそのプログラムを記録した記録媒体
KR20210067961A (ko) 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법
JP2008224830A (ja) 耐タンパーベキ乗演算方法

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

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140618

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150224

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 13