KR100480997B1 - GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치 - Google Patents

GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치 Download PDF

Info

Publication number
KR100480997B1
KR100480997B1 KR10-2002-0082218A KR20020082218A KR100480997B1 KR 100480997 B1 KR100480997 B1 KR 100480997B1 KR 20020082218 A KR20020082218 A KR 20020082218A KR 100480997 B1 KR100480997 B1 KR 100480997B1
Authority
KR
South Korea
Prior art keywords
finite field
carry
adder
register
input selector
Prior art date
Application number
KR10-2002-0082218A
Other languages
English (en)
Other versions
KR20040055523A (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 KR10-2002-0082218A priority Critical patent/KR100480997B1/ko
Publication of KR20040055523A publication Critical patent/KR20040055523A/ko
Application granted granted Critical
Publication of KR100480997B1 publication Critical patent/KR100480997B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/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/7209Calculation via subfield, i.e. the subfield being GF(q) with q a prime power, e.g. GF ((2**m)**n) via GF(2**m)
    • 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/7214Calculation via prime subfield, i.e. the subfield being GF(p) with p an integer prime > 3; e.g. GF(p**k) via GF(p)

Abstract

본 발명은 GF(p) 소수 유한체 곱셈 연산과 GF(2^m)의 이진 유한체 곱셈 연산을 모두 수행하는 곱셈 연산 장치에 관한 것이다. 본 발명에 따른 유한체 곱셈 연산 장치는 GF(p) 소수 유한체 타원곡선 암호 시스템과 GF(2^m) 이진 유한체 타원곡선 암호 시스템을 모두 수용할 수 있고, 같은 비트 길이를 가지는 다양한 타원곡선 암호 시스템을 수용할 수 있어, 시스템 효율을 높일 수 있으며, RSA 암호 시스템의 연산 장치로의 확장이 용이하다.

Description

GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치{APPARATUS OF FIELD MULTIPLICATION OVER GF(p) AND GF(2^m)}
본 발명은 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치에 관한 것으로, 특히, GF(p) 소수 유한체 곱셈 연산과 GF(2^m)의 이진 유한체 곱셈 연산을 모두 수행하는 곱셈 연산 장치에 관한 것이다.
큰 수의 유한체 곱셈 연산 장치는 공개키 암호 시스템에서 주로 사용된다. 대표적인 공개키 암호 시스템으로 현재 가장 널리 사용되고 있는 RSA을 들 수 있는데, RSA는 충분한 안전성을 위하여 큰 비트(bit)의 키를 사용하여야 한다는 단점이 있다. 키 길이가 커진다는 말은 그 만큼 필요한 연산 시간과 연산을 위하여 많은 자원이 필요함을 의미한다.
또 다른 대표적인 공개키 암호 시스템으로 타원곡선 암호 시스템을 들 수 있다. 타원곡선 암호 시스템은 타원곡선 상의 이산대수 문제에 안전성의 근간을 두고 있어, 짧은 길이의 키 값으로 높은 안전성을 보장한다. 짧은 길이의 키 값을 사용한다는 것은 그 만큼 연산에 필요한 자원이 적어짐을 의미한다. 이러한 타원곡선 암호 시스템은 현재 GF(p)의 소수 유한체 타원곡선 암호 시스템과 GF(2^m)의 이진 유한체 타원곡선 암호 시스템이 주로 사용되고 있다. 이러한 두 타원곡선 암호 시스템은 사용되는 비트길이에 따른 안전성은 동일하지만, 각 암호 시스템에서 사용되는 유한체 연산의 특성이 달라 유한체에 따라 다른 장치로 구현되고 있다. 특히 유한체 곱셈 연산은 타원곡선 암호 시스템의 대부분 연산을 차지하는데, 유한체에 따라서 캐리(carry)와 리덕션(reduction) 연산 처리가 달라 서로 다른 방법으로 구현되고 있다.
GF(p) 소수 유한체의 곱셈 연산의 일반적인 연산 방법은 알고리즘 1과 같다. 알고리즘 1에서 보는 바와 같이 단계 2에서 두 입력 수의 곱셈 연산을 수행한 후, 단계 3에서 모듈러 리덕션 연산을 수행한다.
알고리즘 1은 다음과 같이 GF(p) 소수 유한체의 곱셈 연산을 한다.
입력(Input) : A, B ∈ [0, p-1], 2n-1 ≤ p < 2n.
출력(Output) : C = A * B mod p
1. C ← 0.
2. for i from n - 1 to 0 do
2.1 C ← 2 * C + A * bi.
3. for i form 2n - 1 to 0 do
3.1 if C > p2i then C ← C - p2i.
4. Return (C).
반면에 GF(2^m) 이진 유한체의 곱셈 연산의 일반적인 연산 방법은 알고리즘 2와 같다. 이진 유한체에서는 소수 유한체와 달리 캐리를 고려할 필요가 없기 때문에 두 수의 곱셈 연산과 동시에 모듈러 리덕션 연산이 수행됨을 알 수 있다(알고리즘 2의 단계 2.2).
알고리즘 2는 다음과 같이 GF(2^m) 이진 유한체의 곱셈 연산을 한다.
입력 : Binary Polynomials a (x) and b (x).
출력 : c (x) = a (x) · b (x) mod f (x).
1. c ← 0.
2. For i from m - 1 to 1 do
2.1 If bi = 1 then c ← c + a.
2.2 c ← c · x mod f (x).
3. If b0 = 1 then c ← c + a.
4. Return (c).
본 발명은 상술한 결점을 해결하기 위하여 안출한 것으로, GF(p) 소수 유한체 곱셈 연산과 GF(2^m)의 이진 유한체 곱셈 연산을 모두 수행할 수 있어 GF(p) 타원곡선 암호 시스템과 GF(2^m) 타원곡선 암호 시스템을 모두 수행할 수 있도록 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치를 제공하는 데 그 목적이 있다.
본 발명의 다른 목적은 레지스터와 연산기의 비트 길이를 확장함으로써 RSA 암호 시스템으로의 응용도 가능하도록 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치를 제공하는 데 있다.
이와 같은 목적을 달성하기 위한 본 발명은, GF(p) 소수 유한체 곱셈 연산과 GF(2^m)의 이진 유한체 곱셈 연산을 모두 수행하는 곱셈 연산 장치에 있어서, 승수와 피승수를 비트 곱셈하는 N×1 곱셈기; 유한체에 따라 캐리 입력을 선택하기 위한 제 1 입력선택기; 상기 N×1 곱셈기의 출력, 섬(Sum) 저장 레지스터의 출력, 및 상기 제 1 입력선택기를 통해 제공되는 캐리 저장 레지스터의 출력을 덧셈 연산하는 상위 CLA 덧셈기; 상기 상위 CLA 덧셈기의 두 섬, 캐리 출력, 및 제 2 입력선택기를 통해 제공되는 모듈러 값을 덧셈 또는 뺄셈 연산하는 하위 CLA 덧셈기; 모듈러 값을 음수 변환하는 음수 변환기; 상기 하위 CLA 덧셈기로부터 제공되는 중간 섬 누적 결과를 저장하는 섬 저장 레지스터; 상기 하위 CLA 덧셈기로부터 제공되는 캐리 누적 결과를 저장하는 캐리 저장 레지스터; GF(p) 유한체 연산의 경우 상기 섬 저장 레지스터로부터 제 3 입력선택기를 통해 제공되는 최종 섬과 상기 캐리 저장 레지스터로부터 제 4 입력선택기를 통해 제공되는 캐리를 덧셈 연산해서 출력하되, 이 덧셈 결과치가 상기 음수 변환기로부터 제 5 입력선택기를 통해 제공되는 모듈러 값보다 클 경우 상기 덧셈 결과치에서 모듈러 값을 빼기 연산해서 출력하는 CSA 덧셈기; 상기 CSA 덧셈기의 캐리 정보를 저장하는 캐리 레지스터; 및 각 유한체에서의 곱셈 연산을 위하여 상기 각 레지스터와 상기 각 입력선택기를 제어하는 제어기를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시예를 상세히 설명하면 다음과 같다.
본 발명에서는 알고리즘 1의 GF(p) 소수 유한체 곱셈 연산 알고리즘을 GF(2^m) 이진 유한체 곱셈 연산과 같이 곱셈 연산과 동시에 모듈러 리덕션 연산이 수행되도록 알고리즘을 수정하여 구현하였다. 수정된 알고리즘은 다음과 같다.
알고리즘 3은 다음과 같이 수정된 GF(p) 소수 유한체의 곱셈 연산을 한다.
입력 : A, B ∈ [0, p-1], 2n-1 ≤ p < 2n.
출력 : C = A * B mod P
1. C ← 0.
2. for i from n - 1 to 0 do
2.1 C ← 2 * C + A * bi.
2.2 q ← ESTIM(C, p).
2.3 C ← C - q * p.
3. if C > p then C ← C - p.
4. Return (C).
알고리즘 3에서 보는 바와 같이 단계 2.2의 ESTIM()함수는 중간 누적 결과인 C와 모듈러 값인 p를 대략적으로 비교하는 함수로 이 결과에 따라서 단계 2.3에서 모듈러 리덕션 연산을 수행한다. 이와 같은 알고리즘 수정은 알고리즘 2의 GF(2^m)의 유한체 곱셈 연산 장치와 자원을 공유할 수 있도록 한다.
이와 같은 알고리즘 2와 알고리즘 3의 유한체 곱셈 알고리즘들의 구현을 도면과 함께 상세히 살펴보면 다음과 같다.
도 1은 본 발명에 따른 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치의 일 실시예를 나타낸 블록도로, 피승수를 저장하는 A 입력 레지스터(100), 승수를 저장하는 B 입력 레지스터(200), GF(p) 유한체의 모듈러 값 또는 GF(2^m)의 최소다항식을 저장하는 모듈러 레지스터(300), 상기 B 입력 레지스터(200)로부터 제공되는 승수와 상기 A 입력 레지스터(100)로부터 제공되는 피승수를 비트 곱셈하는 N×1 곱셈기(400), 유한체에 따라 캐리 입력을 선택하기 위한 입력선택기0(500), N×1 곱셈기(400)의 출력, 섬 저장 레지스터(1100)의 출력, 및 입력선택기0(500)를 통해 제공되는 캐리 저장 레지스터(1200)의 출력을 덧셈 연산하는 상위 CLA 덧셈기(800), 상위 CLA 덧셈기(800)의 두 섬, 캐리 출력, 및 입력선택기1(900)을 통해 제공되는 모듈러 레지스터(300)의 모듈러 값을 덧셈 또는 뺄셈 연산하는 하위 CLA 덧셈기(1000), 모듈러 레지스터(300)로부터 제공되는 모듈러 값을 음수 변환하는 음수 변환기(600), 하위 CLA 덧셈기(1000)로부터 제공되는 중간 섬 누적 결과를 저장하는 섬 저장 레지스터(1100), 하위 CLA 덧셈기(1000)로부터 제공되는 캐리 누적 결과를 저장하는 캐리 저장 레지스터(1200), GF(p) 유한체 연산의 경우 섬 저장 레지스터(1100)로부터 입력선택기2(1300)를 통해 제공되는 최종 섬과 캐리 저장 레지스터(1200)로부터 입력선택기3(1400)을 통해 제공되는 캐리 덧셈 연산 및 음수 변환기(600)로부터 입력선택기4(1700)를 통해 제공되는 모듈러 값 비교와 뺄셈 연산하는 CSA 덧셈기(1600), CSA 덧셈기(1600)의 캐리 정보를 저장하는 캐리 레지스터(1500), 및 각 유한체에서의 곱셈 연산을 위하여 각 레지스터와 각 입력선택기를 제어하는 제어기(700)로 구성된다.
동 도면에 있어서, 도 1의 유한체 곱셈 연산 장치가 GF(2^m) 이진 유한체 곱셈 연산을 수행하는 경우를 알고리즘 2와 비교하여 자세히 살펴보면 다음과 같다.
승수, 피승수, 최소다항식 값이 각각 B 입력 레지스터(200), A 입력 레지스터(100), 모듈러 레지스터(300)에 저장된 후 연산이 시작되면, 먼저 섬 저장 레지스터(1100)가 리셋된 후 알고리즘 2의 단계 2가 수행된다. 단계 2.1의 조건문 "If bi = 1 then"은 B 입력 레지스터(200)의 출력과 A 입력 레지스터(100)의 비트 곱셈으로 구현된다. 이때 B 입력 레지스터의 출력은 한 비트로서 도 2와 도 3과 같은 방식으로 구현된다.
도 2는 도 1에 도시된 B 입력 레지스터(200)의 일 실시예를 나타낸 블록도로, 입력선택을 위한 다수의 다중화기(201) 및 다수의 1비트 레지스터(202)로 구성된다. 입력선택 및 레지스터의 동작은 제어기(700)에 의해 이루어진다. 초기 값 입력시를 제외하고는 쉬프트 레지스터로서 동작한다. 출력 값은 최상위 비트 한 비트만 출력된다.
도 3은 도 1에 도시된 B 입력 레지스터(200)의 다른 실시예를 나타낸 블록도로, 다수의 1비트 레지스터(202) 및 다수의 1비트 레지스터(202)의 출력을 선택하는 다중화기(203)로 구성된다. 다중화기(203)는 제어기(700)에 의해 제어되어, 다수의 1비트 레지스터(202)의 출력을 최상위 비트부터 한 비트씩 선택하여 출력한다.
B 입력 레지스터(200)로부터의 출력은 A 입력 레지스터(100)의 출력과 N×1 곱셈기(400)에서 비트 곱셈이 수행된다. N×1 곱셈기(400)는 B 입력 레지스터(200)의 출력이 '0'이면 '0'을 출력하고 '1'이면 A 입력 레지스터(100)의 출력을 그대로 출력하는 동작을 수행한다.
도 4는 도 1에 도시된 N×1 곱셈기(400)의 일 실시예를 나타낸 논리 회로도로, N개의 AND 게이트(301)가 병렬 연결된다.
알고리즘 2의 단계 2.1의 덧셈 연산 "c ← c + a"과 단계 2.2의 곱셈 연산 "c · x"은 도 1의 상위 CLA 덧셈기(800)에서 수행된다. 단계 2.2의 곱셈 연산은 쉬프트 연산으로 이는 비트 맵핑으로 쉽게 구현되며, 결국 상위 CLA 덧셈기(800)에서 한비트 쉬프트 된 누적 연산 값 c와 N×1 곱셈기(400)의 출력을 더하는 연산이 수행된다. 이때 캐리 저장 레지스터(1200)로부터 출력되는 캐리가 연산에 영향을 미치지 않도록 하기 위하여 입력선택기0(500)의 출력은 '0'이 되며, 입력선택기0(500)은 소수 유한체(GF(p)) 연산시에는 캐리 값이 그대로 입력되도록 동작한다. 덧셈 연산이 수행되는 상위 CLA 덧셈기(800)는 N개의 FA(Full Adder, 전가산기)로 구성된다. 상위 CLA 덧셈기(800)의 출력은 섬과 캐리이며, 이진 유한체 연산 시에는 섬 출력만 연산에 이용하게 된다. 알고리즘 2의 단계 2.2의 연산 "mod f (x)"은 도 1의 하위 CLA 덧셈기(1000)에서 수행된다. 이 연산은 다항식 f(x)로 리덕션시키는 연산으로, 상위 CLA 덧셈기(800)로부터의 출력과 모듈러 레지스터(300)의 출력을 하위 CLA 덧셈기(1000)에서 더함으로써 수행된다. 이때 모듈러 레지스터(300)의 출력은 입력선택기1(900)에서 상위 CLA 덧셈기(800)의 최상위 값에 따라 '0' 또는 f(x)로 선택되어 입력된다. 알고리즘 2의 단계 3은 도 1의 연산 장치에서는 별도로 수행되지 않고 단계 2를 반복하는 동안에 수행된다. 모든 승수 비트에 대하여 연산을 반복 수행후, 섬 저장 레지스터(1100) 값이 최종 연산 결과 값이 된다. 따라서 GF(p)인 소수 유한체 곱셈 연산에서는 별도의 CSA 덧셈기(1600)는 이용되지 않는다.
도 5는 도 1에 도시된 입력선택기0(500)의 일 실시예를 나타낸 논리 회로도로, 도 4의 N×1 곱셈기(400)와 같이 N개의 AND 게이트(501)가 병렬 연결된다.
제어기(700)로부터 제공되는 모드(mode) 신호에 따라서 '0'을 출력하거나 캐리 값을 그대로 출력한다. 제어기(700)로부터 제공되는 제어 신호인 모드 신호가 '0'인 경우 GF(2^m) 유한체 연산이며, '1'인 경우 GF(p)인 유한체 연산이다.
도 6은 도 1에 도시된 상위, 하위 CLA 덧셈기(800, 1000)의 일 실시예를 나타낸 블록도로, N개의 FA로 구성된다. 상위, 하위 CLA 덧셈기(800, 1000)는 3가지 입력을 가지며, 출력은 섬과 캐리 두 가지이다. 상위 CLA 덧셈기(800)의 구성과 하위 CLA 덧셈기(1000)의 구성은 동일하다.
GF(p) 소수 유한체의 곱셈 연산의 경우는 알고리즘 3에 따라 GF(2^m)인 이진 유한체의 경우와 유사한 방식으로 연산된다.
역시 승수, 피승수, 모듈러 값이 각각 B 입력 레지스터(200), A 입력 레지스터(100), 모듈러 레지스터(300)에 저장된 후 연산이 시작되면, 먼저 섬 저장 레지스터(1100)와 캐리 저장 레지스터(1200)가 리셋된 후 알고리즘 3의 단계 2가 수행된다. 알고리즘 3의 단계 2.1 "C ← 2 * C + A * bi"은 도 1의 N×1 곱셈기(400)와 상위 CLA 덧셈기(800)으로 구현된다. 곱셈 연산 "A * bi"은 N×1 곱셈기(400)에서 A 입력 레지스터(100)의 출력과 B 입력 레지스터(200)의 한 비트 출력을 비트 곱 연산을 수행함으로써 이루어지며, 연산 "2 * C"은 역시 섬 저장 레지스터(1100)을 한 비트 쉬프트함으로써 구현된다. 그리고, 두 값의 덧셈 연산은 상위 CLA 덧셈기(800)에서 수행된다. 이는 GF(2^m)인 이진 유한체인 경우와 캐리가 고려되어 연산되는 것을 제외하고는 동일한 연산이다. GF(2^m) 이진 유한체 연산과 달리 GF(p) 소수 유한체 곱셈에서는 캐리가 고려하기 위해서 입력선택기0(500)의 모드 값이 '1'로 설정되어 캐리 저장 레지스터(1200)에 저장되는 캐리 값이 연산에 그대로 반영된다. 알고리즘 3의 단계 2.2와 단계 2.3은 도 1의 하위 CLA 덧셈기(1000)와 음수 변환기(600), 그리고 입력선택기1(900)에 의해 수행된다. 단계 2.2의 "ESTIM(C, p)"는 대략적인 누적 값 C와 모듈러 값 p의 대략적인 크기 비교 함수로서, 함수에 의한 출력 값은 '0', '1', '2' 3가지 중에 하나이다. 이는 정확한 비교 결과가 아니며, 도 1의 연산 장치에서는 상위 CLA 덧셈기(800)의 출력 값이 섬과 캐리의 최상위 두 비트로 판단한다. 이 상위 두 비트에 의해 '0', '1', '2' 값이 생성되며, 이 값은 입력선택기1(900)에서 입력을 선택하는 사용된다. 입력선택기1(900)의 입력은 p, -p, -2p이며, GF(2^m) 이진 유한체 연산에서는 p또는 '0'의 출력을 가지며, GF(p) 소수 유한체 연산에서는 '0', -p, -2p 중에 하나이게 된다. -p와 -2p 값은 음수 변환기(600)에서 생성된다.
도 7은 도 1에 도시된 음수 변환기(600)의 일 실시예를 나타낸 논리 회로도로, n-1개의 XOR 연산기(601)가 병렬로 연결된다.
음수 변환 연산은 n-1부터 1비트까지 모드 값에 따라 XOR 연산하며, 최하위 비트는 모드 값을 그대로 출력함으로써 -p를 연산하며, -p의 상위 n-1비트 값과 '0' 값을 조합하여 -2p를 생성한다. 보통 임의의 수의 음수 변환은 '1'과 비트 크기의 XOR 연산 후, '1'을 더해 주어야 하지만, GF(p) 소수 유한체에서 p는 항상 홀수이기 때문에 별도의 덧셈 연산이 필요없다.
이러한 음수 변환기 출력 -p와 -2p 값을 이용하여, 알고리즘 3의 단계 2.3의 최종 덧셈 연산을 하위 CLA 덧셈기(1000)에서 수행한다.
알고리즘 3의 단계 2 연산이 완료되면, 섬 저장 레지스터(1100)와 캐리 저장 레지스터(1200)에 저장된 값은 서로 더해져야 한다. 또한 이 더해지는 값은 p 값보다 클 수 있는데 이런 경우 p를 다시 한 번 빼주는 연산이 필요하다. 이러한 연산들을 포함하는 단계 3은 도 1의 CSA 덧셈기(1600)에서 수행된다. 도 1의 CSA 덧셈기(1600)는 덧셈 연산을 고속으로 수행하기 위한 것으로, CLA 덧셈기와 달리 작은 비트의 덧셈 연산을 수행한다. 이 CSA 덧셈기(1600)는 3개의 입력을 가지며, 이 3개의 각 입력은 각 입력선택기(1300, 1400, 1700)에 의해 선택된다.
도 8은 도 1에 도시된 입력선택기2(1300)의 일 실시예를 나타낸 도면으로, CSA 덧셈기(1600)가 16비트 덧셈기로 구현되었을 때 다중화기0(1301)로 구성된다. 입력선택기2(1300)는 큰 비트의 버스에서 CSA 덧셈기(1600)의 연산 비트 크기를 선택하는 동작을 수행한다. 입력선택기3(1400)와 입력선택기4(1700)도 동일한 구조로 이루어진다.
이와 같은 각 입력선택기2,3,4(1300, 1400, 1700)와 CSA 덧셈기(1600)를 이용하여, 섬 저장 레지스터(1100)와 캐리 저장 레지스터(1200)의 출력을 음수 변환기(600)의 -p 출력과 CSA 덧셈기(1600)에서 상위 비트 값들부터 연산을 수행한다. 상위 비트 값들부터 연산을 수행하여 CSA 덧셈기(1600)에서 출력되는 캐리 값과 최상위 비트 값으로 크기 비교 결과가 판단되며, 이 결과에 따라서 결과가 양수이면, 섬 저장 레지스터(1100) 값과 캐리 저장 레지스터(1200) 값과 -p를 CSA 덧셈기(1600)에서 최종 덧셈 연산을 수행하여 출력하며, 연산 결과가 음수이면, 섬 저장 레지스터(1100) 값과 캐리 저장 레지스터(1200) 값 만을 CSA 덧셈기(1600)에서 덧셈 연산하여 출력한다.
이상에서 설명한 바와 같이, 본 발명에 따른 유한체 곱셈 연산 장치는 GF(p) 소수 유한체 타원곡선 암호 시스템과 GF(2^m) 이진 유한체 타원곡선 암호 시스템을 모두 수용할 수 있고, 같은 비트 길이를 가지는 다양한 타원곡선 암호 시스템을 수용할 수 있어, 시스템 효율을 높일 수 있으며, RSA 암호 시스템의 연산 장치로의 확장이 용이하다.
도 1은 본 발명에 따른 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치의 일 실시예를 나타낸 블록도,
도 2는 도 1에 도시된 B 입력 레지스터의 일 실시예를 나타낸 블록도,
도 3은 도 1에 도시된 B 입력 레지스터의 다른 실시예를 나타낸 블록도,
도 4는 도 1에 도시된 N×1 곱셈기의 일 실시예를 나타낸 논리 회로도,
도 5는 도 1에 도시된 입력선택기0의 일 실시예를 나타낸 논리 회로도,
도 6은 도 1에 도시된 상위, 하위 CLA 덧셈기의 일 실시예를 나타낸 블록도,
도 7은 도 1에 도시된 음수 변환기의 일 실시예를 나타낸 논리 회로도,
도 8은 도 1에 도시된 입력선택기2의 일 실시예를 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : A 입력 레지스터 200 : B 입력 레지스터
300 : 모듈러 레지스터 400 : N×1 곱셈기
500, 900, 1300, 1400, 1700 : 입력선택기0 내지 입력선택기4
600 : 음수 변환기 700 : 제어기
800, 1000 : 상위, 하위 CLA 덧셈기
1100 : 섬 저장 레지스터 1200 : 캐리 저장 레지스터
1500 : 캐리 레지스터 1600 : CSA 덧셈기

Claims (7)

  1. GF(p) 소수 유한체 곱셈 연산과 GF(2^m)의 이진 유한체 곱셈 연산을 모두 수행하는 곱셈 연산 장치에 있어서,
    승수와 피승수를 비트 곱셈하는 N×1 곱셈기;
    유한체에 따라 캐리 입력을 선택하기 위한 제 1 입력선택기;
    상기 N×1 곱셈기의 출력, 섬 저장 레지스터의 출력, 및 상기 제 1 입력선택기를 통해 제공되는 캐리 저장 레지스터의 출력을 덧셈 연산하는 상위 CLA 덧셈기;
    상기 상위 CLA 덧셈기의 두 섬, 캐리 출력, 및 제 2 입력선택기를 통해 제공되는 모듈러 값을 덧셈 또는 뺄셈 연산하는 하위 CLA 덧셈기;
    모듈러 값을 음수 변환하는 음수 변환기;
    상기 하위 CLA 덧셈기로부터 제공되는 중간 섬 누적 결과를 저장하는 섬 저장 레지스터;
    상기 하위 CLA 덧셈기로부터 제공되는 캐리 누적 결과를 저장하는 캐리 저장 레지스터;
    GF(p) 유한체 연산의 경우 상기 섬 저장 레지스터로부터 제 3 입력선택기를 통해 제공되는 최종 섬과 상기 캐리 저장 레지스터로부터 제 4 입력선택기를 통해 제공되는 캐리를 덧셈 연산해서 출력하되, 이 덧셈 결과치가 상기 음수 변환기로부터 제 5 입력선택기를 통해 제공되는 모듈러 값보다 클 경우 상기 덧셈 결과치에서 모듈러 값을 빼기 연산해서 출력하는 CSA 덧셈기;
    상기 CSA 덧셈기의 캐리 정보를 저장하는 캐리 레지스터; 및
    각 유한체에서의 곱셈 연산을 위하여 상기 각 레지스터와 상기 각 입력선택기를 제어하는 제어기를 포함하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치.
  2. 제 1 항에 있어서, 상기 N×1 곱셈기는 N개의 AND 게이트가 병렬 연결되어 구성되는 것을 특징으로 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치.
  3. 제 1 항에 있어서, 상기 제 1 입력선택기는 N개의 AND 게이트가 병렬 연결되어 구성되는 것을 특징으로 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치.
  4. 제 1 항에 있어서, 상기 상위 CLA 덧셈기는 N개의 전가산기로 구성되는 것을 특징으로 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치.
  5. 제 1 항에 있어서, 상기 하위 CLA 덧셈기는 N개의 전가산기로 구성되는 것을 특징으로 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치.
  6. 제 1 항에 있어서, 상기 음수 변환기는 n-1개의 XOR 연산기가 병렬로 연결되어 구성되는 것을 특징으로 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치.
  7. 제 1 항에 있어서, 상기 제 3, 제 4, 제 5 입력선택기 중 적어도 하나 이상의 입력선택기는 다중화기로 구성되는 것을 특징으로 하는 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치.
KR10-2002-0082218A 2002-12-21 2002-12-21 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치 KR100480997B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0082218A KR100480997B1 (ko) 2002-12-21 2002-12-21 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0082218A KR100480997B1 (ko) 2002-12-21 2002-12-21 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치

Publications (2)

Publication Number Publication Date
KR20040055523A KR20040055523A (ko) 2004-06-26
KR100480997B1 true KR100480997B1 (ko) 2005-04-07

Family

ID=37348192

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0082218A KR100480997B1 (ko) 2002-12-21 2002-12-21 GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치

Country Status (1)

Country Link
KR (1) KR100480997B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101136972B1 (ko) 2008-12-11 2012-04-19 한국전자통신연구원 타원곡선 암호 연산 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100670780B1 (ko) * 2004-10-29 2007-01-17 한국전자통신연구원 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법
KR100653358B1 (ko) * 2005-09-27 2007-02-28 고려대학교 산학협력단 유한체의 병렬곱셈 연산장치
KR100859185B1 (ko) * 2006-05-18 2008-09-18 학교법인 영광학원 유한체 GF(2m)상의 곱셈기
KR100954843B1 (ko) * 2008-08-29 2010-04-28 고려대학교 산학협력단 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101136972B1 (ko) 2008-12-11 2012-04-19 한국전자통신연구원 타원곡선 암호 연산 방법

Also Published As

Publication number Publication date
KR20040055523A (ko) 2004-06-26

Similar Documents

Publication Publication Date Title
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
US6397241B1 (en) Multiplier cell and method of computing
US7831650B2 (en) Method for modular multiplication
EP1471420A2 (en) Montgomery modular multiplier and method thereof using carry save addition
US5261001A (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
US5121429A (en) Digital signal processing
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
KR100459732B1 (ko) 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
KR101925868B1 (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
JP3213628B2 (ja) Mを法として長い整数を乗算するための算術ユニット及びそのような乗算デバイスを具えるr.s.a.変換器
US8244790B2 (en) Multiplier and cipher circuit
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
KR101136972B1 (ko) 타원곡선 암호 연산 방법
WO2022115108A1 (en) An architecture for small and efficient modular multiplication using carry-save adders
KR100486697B1 (ko) 모듈러연산장치및그방법
Huai et al. Efficient architecture for long integer modular multiplication over Solinas prime
KR100428755B1 (ko) 비트 슬라이스 모듈러 곱셈기
JP3210420B2 (ja) 整数上の乗算回路
KR100858559B1 (ko) 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기
Lórencz et al. Subtraction-free almost Montgomery inverse algorithm
KR100656406B1 (ko) 최적 정규 기저용 유한체 연산 장치
Nadjia et al. Montgomery modular exponentiation on FPGA
KR20000008153A (ko) 모듈러 연산장치 및 그 방법
KR20090070061A (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기

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

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee