KR100417136B1 - 다항식 기저에서 유한체 승산 장치 및 그 방법 - Google Patents
다항식 기저에서 유한체 승산 장치 및 그 방법 Download PDFInfo
- Publication number
- KR100417136B1 KR100417136B1 KR10-2001-0019861A KR20010019861A KR100417136B1 KR 100417136 B1 KR100417136 B1 KR 100417136B1 KR 20010019861 A KR20010019861 A KR 20010019861A KR 100417136 B1 KR100417136 B1 KR 100417136B1
- Authority
- KR
- South Korea
- Prior art keywords
- storage means
- multiplication
- storing
- digit
- register
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/726—Inversion; Reciprocal calculation; Division of elements of a finite field
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Complex Calculations (AREA)
Abstract
1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 다항식 기저에서 유한체 승산 장치 및 그 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, 레지스터의 수를 감소시키기 위하여 디지트-시리얼 방식을 사용하고, 또한 디지트-시리얼 방식이 갖는 단점인 실행 사이클 수의 증가를 보완하기 위한 LFSR 클럭발생기를 포함하는 다항식 기저에서 유한체 승산 장치 및 그 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은, 다항식 기저에서의 유한체 승산 장치에 있어서, 유한체 승산에 필요한 승수(multiplier), 피승수(multiplicand) 및 연산 결과인 곱(product)을 디지트(Digit)단위로 나누어 저장하기 위한 제 1 저장 수단; 상기 제 1 저장 수단을 이용해 연산을 수행하는 과정에 필요한 중간값을 저장하여 연산을 보조하고 최종 결과를 저장하기 위한 제 2 저장 수단; 상기 제 1 저장 수단이 필요한 값을 상기 제 2 저장 수단에서 읽거나 쓰도록 하기 위한 상기 제 2 저장 수단의 주소를 발생시키기 위한 주소 발생 수단; 및 상기 제 1 저장 수단에 시스템 클럭과 분리되어 작동하는 고속의 클럭을 공급하기 위한 클럭 발생 수단을 포함함.
4. 발명의 중요한 용도
본 발명은 스마트카드 등에 이용됨.
Description
본 발명은 다항식 기저에서 유한체 승산 장치 및 그 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
스마트카드와 공개키 암호(public-key cryptography)는 20여년전부터 갖고 있던 생각이었다. 그러나, IC 카드에 적합한 공개키 암호 회로의 구현 방법이 발달하지 못하여 스마트카드와 공개키 암호가 결합된 것은 불과 수년전의 일이 되었다. 최근에는 "RSA(Rivest Shamir Adleman)", "US Digital Signature Strandard","Russign Gost 34.10" 과 같은 암호가 많은 IC 카드에 응용되고 있다.
스마트카드에 사용될 수 있는 공개키의 개념은 1976년 "W. Diffie"와 "M. E. Hellman"이 "New Directions in Cryptography"에서 공개키 암호의 개념을 처음 소개하였다. 이후 1978년 소인수분해의 어려움에 기반을 둔 "RSA"가 소개되어 지금까지 넓게 사용되고 있다. 그러나, "RSA"는 비도를 높이기 위해 1024 비트 이상으로 확장되는 추세이기 때문에, 스마트카드와 같이 제한된 면적에 탑재되는데 어려움이 있다. 이에 따라, 1987년 "Koblitz"와 "Miller"는 공개키 암호화에 타원곡선(ECC : Elliptic Curve Cryptography)암호 알고리즘을 적용하였는데, 이 타원곡선 암호 알고리즘(ECC)은 적은 비트로 높은 비도를 보이기 때문에 최근 스마트 카드와 같은 IC카드의 암호화 구현에 사용되는 추세에 있다.
이러한 타원곡선 암호시스템은 유한체의 곱셈군에 근거한 시스템으로써 하기와 같은 장점을 가진다. 첫째, 군(Group)을 제공할 수 있는 다양한 타원곡선을 활용할 수 있어서 암호 시스템 설계가 용이하고, 둘째, 초특이 타원곡선을 피하면 이 군에서 하위지수적 시간 알고리즘(subexponential time algorithms)이 존재하지 않는다. 즉, 안전한 암호 시스템을 설계하는 것이 용이하다. 그리고, 셋째로는 타원곡선 암호 시스템은 다른 공개키 방식에 비해 좀 더 작은 키 길이를 가지고 같은 안전도를 제공하는 것이 가능하게 되며(예컨데, RSA 1024비트 키=ECC 160비트 키), 마지막으로 타원곡선에서 가산은 유한체에서의 연산을 포함하므로, 하드웨어(H/W)와 소프트웨어(S/W)로 구현하기가 용이하다.
한편, 종래의 다항식 기반 유한체상에서 일반적인 승산기 구조는 비트-시리얼(bit-serial)방식과 비트-패러렐(bit-parallel)방식으로 구현된다. 여기서 비트 패러렐 방식의 경우 하나의 클럭으로 동작이 가능하지만 구현에 필요한 하드웨어 면적때문에 카드에서는 사용될 수 없어 대부분의 스마트 카드가 비트-시리얼 구조를 채택하고 있다. 이러한 비트-시리얼 구조의 승산기는 LFSR(Linear Feedback Shift Register)를 주로 사용하여 설계되는데, 설계시 암호 비트수에 비례하여 레지스터의 수가 증가함으로써 전체적인 승산기의 면적을 크게 차지하게 되는 문제점이 있다.
또한, 스마트카드에 내장되는 칩에는 마이크로 프로세서, 메모리, 암호화 프로세서, 입출력 제어회로 등이 포함되는데, 이러한 스마트카드 칩은 카드 리더(reader) 시스템과의 인터페이스를 원할히 하기 위하여 그 규격이 국제적으로 정하여져 있으며 칩의 크기가 한정되어 있다. 따라서, 마이크로 프로세서, 메모리, 암호화 프로세서, 입출력 제어회로와 같은 기능이 한정된 공간에서 구현되어야 하기 때문에 최소 면적의 회로 구조를 갖추어야 한다. 이에 따라 카드에 있어 가장 큰 면적을 차지하는 승산기를 최소로 만드는 것이 요구된다.
또한, 스마트카드에서 승산기가 최소면적을 갖는 구조는 일반적으로 시리얼 구조를 갖기 때문에 이에 따른 실행 클럭 사이클 수가 늘어나게 된다. 그런데, 스마트카드의 시스템 클럭은 소비전력을 줄이고 신뢰성을 높이기 위해 낮은 주파수의 클럭을 사용하기 때문에, 실행 클럭 사이클의 증가는 암호화 프로세서의 구현에 장애가 되고 있다. 이를 해결하기 위해서는 시리얼 승산기 구조에 새로운 클럭발생기를 포함시키는 것이 요구된다.
본 발명은, 상기한 바와 같은 문제점을 해결하기 위하여 제안된 것으로, 레지스터의 수를 감소시키기 위하여 디지트-시리얼 방식을 사용하고, 또한 디지트-시리얼 방식이 갖는 단점인 실행 사이클 수의 증가를 보완하기 위한 LFSR 클럭발생기를 포함하는 다항식 기저에서 유한체 승산 장치 및 그 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는데 그 목적이 있다.
도 1 은 본 발명에 따른 유한체 승산 장치의 일실시예 구성도.
도 2 는 본 발명에 따른 유한체 승산 장치에 있어서, 주메모리의 일부 영역에서의 승산 데이터의 일실시예 배치도.
도 3 은 본 발명에 따른 유한체 승산 장치에 있어서, 데이터 영역별로 분리된 계수기를 갖는 주소발생기의 일실시예 구성도.
도 4 는 본 발명에 따른 유한체 승산 장치에 있어서, AT계수기의 일실시예 상태 변화도.
도 5 는 본 발명에 따른 유한체 승산 장치에 있어서, AT계수기의 일실시예 회로도.
도 6 은 본 발명에 따른 유한체 승산 장치에 있어서, 각 레지스터의 일실시예 상태 변화도.
도 7 은 본 발명에 적용되는 쉬프트 레지스터 클럭발생기의 지연회로의 일실시예 회로도.
도 8 는 본 발명에 적용되는 최대 경로 지연 회로를 채택한 쉬프트 레지스터클럭 발생기의 일실시예 구성도.
도 9 는 본 발명에 따른 유한체 승산 방법에 대한 일실시예 동작 흐름도.
* 도면의 주요 부분에 대한 부호의 설명
11 : A레지스터 12 : B레지스터
13 : T레지스터 14 : Z레지스터
15 : 주메모리(RAM) 16 : 주소 발생기
101 : 32비트 2X1 다중화기 102 : 제1 2X1 다중화기
103 : 제2 2X1 다중화기 104 : 제3 2X1 다중화기
105 : 제4 2X1 다중화기
상기 목적을 달성하기 위한 본 발명은, 다항식 기저에서의 유한체 승산 장치에 있어서, 유한체 승산에 필요한 승수(multiplier), 피승수(multiplicand) 및 연산 결과인 곱(product)을 디지트(Digit)단위로 나누어 저장하기 위한 제 1 저장 수단; 상기 제 1 저장 수단을 이용해 연산을 수행하는 과정에 필요한 중간값을 저장하여 연산을 보조하고 최종 결과를 저장하기 위한 제 2 저장 수단; 상기 제 1 저장 수단이 필요한 값을 상기 제 2 저장 수단에서 읽거나 쓰도록 하기 위한 상기 제 2 저장 수단의 주소를 발생시키기 위한 주소 발생 수단; 및 상기 제 1 저장 수단에 시스템 클럭과 분리되어 작동하는 고속의 클럭을 공급하기 위한 클럭 발생 수단을 포함한다.
한편, 본 발명은, 다항식 기저의 유한체 승산 장치에 적용되는 유한체 승산 방법에 있어서, 승산 데이터를 디지트 단위로 나누어 순차적으로 입력받는 제 1 단계; 상기 입력된 디지트에 다항 감소가 있는지를 조사하여 다항감소가 있으면 임시 저장 레지스터에 그 값을 저장하고 다항감소가 없으면 다음 단계로 진행하는 제 2 단계; 상기 승산 입력 데이터를 피승수를 저장하는 레지스터 및 승수를 저장하는 레지스터에 로드시키는 제 3 단계; 상기 승산 데이터를 나눈 디지트 단위 수만큼 쉬프트 동작을 수행하는 제 4 단계; 상기 제 4 단계의 쉬프트 동작을 수행한 결과값을, 결과를 저장하기 위한 레지스터에 저장하는 제 5 단계; 및 상기 승산 데이터의 마지막 디지트에 이르기까지 상기 제 1 내지 제 5 단계를 반복 수행하는 제 6 단계를 포함한다.
한편, 본 발명은, 프로세서를 구비한 유한체 승산 장치에, 승산 데이터를 디지트 단위로 나누어 순차적으로 입력받는 제 1 기능; 상기 입력된 디지트에 다항 감소가 있는지를 조사하여 다항감소가 있으면 임시 저장 레지스터에 그 값을 저장하고 다항감소가 없으면 다음 기능로 진행하는 제 2 기능; 상기 승산 입력 데이터를 피승수를 저장하는 레지스터 및 승수를 저장하는 레지스터에 로드시키는 제 3 기능; 상기 승산 데이터를 나눈 디지트 단위 수만큼 쉬프트 동작을 수행하는 제 4 기능; 상기 제 4 기능에 의한 쉬프트 동작을 수행한 결과값을, 결과를 저장하기 위한 레지스터에 저장하는 제 5 기능; 및 상기 승산 데이터의 마지막 디지트에 이르기까지 상기 제 1 내지 제 5 기능의 동작을 반복 수행하도록 하는 제 6 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
일예로, 본 발명의 구성 및 작용을 설명하기 위하여 여기에서는 다항식 기저를 바탕으로 기약다항식으로 하기의 [수학식1]을 이용하여 설명한다.
도 1 은 본 발명에 따른 유한체 승산 장치의 일실시예 구성도이다.
도 1 에 도시된 바와 같이, 승산 장치 내부는 A, B, T, Z레지스터(11 내지 14)와 5개의 2x1 다중화기(MUX)(101 내지 105), 주메모리(15), 주소발생기(addrgen)(16) 및 클럭발생기(17)를 구비한다.
그 동작과 기능을 자세히 살펴보면, 우선 A 레지스터(11)는 유한체 승산에 필요한 피승수(multiplicand)를 저장하는 쉬프트 레지스터이며, B 레지스터(12)는 유한체 승산에 필요한 승수(multiplier)를 저장하는 쉬프트 레지스터이다. 또한, Z 레지스터(14)는 유한체 승산의 연산결과인 곱(product)이 저장되는 레지스터로, Z 레지스터(14)의 값을 주메모리(15)에 쓰는(Write) 동작은 하나의 디지트 승산이 완료된 후에 수행된다. 따라서, 본 발명의 바람직한 실시예로 보여지는 193비트 승산의 경우에는, Z레지스터(14)의 값을 주메모리(15)에 쓰는(Write) 동작은 한번의 승산과정에서 6번 발생한다. 이때, 하나의 디지트 승산이란 32비트 A 레지스터값(11)과 193비트 B 레지스터(12)의 값의 승산을 의미한다. 또한, T 레지스터(13)는 A 레지스터(11)와 연결된 쉬프트 레지스터이며, A 레지스터(11)로부터 쉬프트(shift)된 비트를 입력받아 저장한다. A 레지스터(11)의 값은 승산과정에서 유한체 승산의 특징인 모듈(module)화 때문에 값이 변형되어 다음 승산때 활용하기 위하여 저장이 필요한데, 이를 위해 T 레지스터(13)를 구비한다.
여기서, A레지스터(11)와 T레지스터(13)는 직렬로 연결되고 T레지스터(13)의 맨 왼쪽 비트(t0)는 A레지스터(11)의 맨 오른쪽 비트(a31)에 연결되므로 A레지스터(11)와 T레지스터(13)는 일련의 순환 쉬프트 레지스터를 구성하게 된다.
각각의 레지스터를 통한 연산과정을 보면, 쉬프트 레지스터인 B레지스터(12)가 맨 오른쪽 비트부터 쉬프트 클럭에 따라 순차적으로 출력되어, 역시 쉬프트 레지스터인 A레지스터(11)의 32비트(최종 디지트 연산에서는 33비트)와 병렬로 유한체(GF(2)) 곱셈연산을 수행하고, 그 결과를 Z레지스터(14)의 값과 다시 병렬로 유한체(GF(2)) 덧셈 연산을 수행한 후, 그 결과값을 Z레지스터(14)에 저장함으로써 연산을 수행한다.
또한, 본 발명의 바람직한 실시예에 있어서, A, B, T, Z레지스터(11 내지 14)는 기본적으로 32비트 크기이며 별도로 a192, z192, b192, t32로 명칭을 갖는 1비트가 확장되어 33비트를 만든다. 상기와 같이 확장한 이유는 승산데이터의 193번째 비트의 연산 때문이다. 즉, 본 발명에서 설계하는 승산기는 193비트 암호화에 이용되기 때문에 32비트를 단위로 회로를 설계하면 최상위 1비트가 별도로 남게된다. 상기의 남게되는 1비트를 위하여 32번의 쉬프트 연산을 한번 더 수행하기 보다는 마지막 디지트에서 33비트 쉬프트 연산을 수행하는 것이 효율적이기 때문에 1비트를 확장하도록 한다.
그리고, 32비트 2x1 다중화기(101)는 T 레지스터(13)의 값과 Z 레지스터(14)의 값 가운데 하나를 선택하여 주메모리(15)에 저장하기 위한 것이다.
그리고, A레지스터(11)에 있는 제1 2x1 다중화기(102)는 T레지스터(13)의 맨오른쪽 비트를 순환시켜 15번째 비트에 유한체 곱셈을 하는데 사용된다. 이것은 계수 감소(modular reduction)를 위한 동작으로 a0 ~ a31 에 대한 승산에만 필요하고 그 이외의 승산에는 필요하지 않기 때문에 다중화기에 의해 선택된다.
그리고, B, T, Z레지스터에 있는 다중화기(103, 104, 105)는 193번째 비트를 처리하기 위하여 사용된다. 즉, B레지스터(12)의 다중화기(103)는 b0과 b192를 입력으로 B레지스터(12)의 193비트의 승산을 처리한다.
또한, T레지스터(13)의 다중화기(104)는 Z, B 레지스터와 마찬가지로 32비트로 나누어지지 않는 193비트의 마지막 1비트를 처리하기 위하여 존재한다. 즉, 마지막 1비트를 처리하기 위해서는 T레지스터(13)의 다중화기(104)의 선택신호가 0 이 되고 t32비트가 A레지스터로 전달되고, 마지막 1비트 처리가 아닌 정상적인 32비트 디지트처리 동작에서는 선택신호가 1이 되어 t31비트가 A레지스터로 전달된다. 그리고, 2X1 다중화기(104)는 t31과 t32를 입력으로 T레지스터(13)의 193비트의 승산을 처리한다.
또한, Z레지스터(14)의 다중화기(105)는 z31과 z192를 입력으로 Z레지스터(14)의 193비트의 승산을 처리한다.
그리고, 주메모리(RAM)(15)는 본 승산기의 활용방법에 따라 구조를 달리 할 수 있도록 하는데, 예를 들면 본 승산기를 사용하는 시스템의 메모리를 활용하거나 승산기 전용의 메모리를 사용토록 할 수 있다. 또한, 주메모리(15)는 승산기의 승산 단위에 따라 메모리의 엑세스 단위로 하고 있다. 예컨데 본 발명의 바람직한 실시예는 32비트 버스를 사용하여 메모리(15)에 32비트 단위(word의 크기)로 읽기 또는 쓰기를 하도록 한다.
그리고, 주소발생기(addrgen)(16)는 주메모리(15)에서 A, B레지스터(11, 12)의 값을 읽거나, T레지스터(13)의 값을 저장하거나 또는 읽을 때, 그리고 Z레지스터(14)의 값을 저장할 때 필요한 각각의 메모리주소를 발생시키는 장치이다.
그리고, 클럭발생기(17)는 A, B, T, Z레지스터에 클럭을 공급하기 위한 장치이다. 본 발명에 따른 승산기는 디지트 시리얼 방식을 사용하므로, 실행 클럭 사이클 수가 늘어나게 된다. 여기에, 시스템 클럭은 소비전력을 줄이고 신뢰성을 높이기 위해 낮은 주파수의 클럭을 사용하기 때문에, 실행 클럭 사이클의 증가를 만회하기 위해서는 빠른 클럭을 공급할 필요가 있게 된다. 이에 따라, 본 발명은 시스템 클럭과는 별도의 클럭 발생기(17)를 구비하여 각각의 레지스터에 좀 더 빠른 클럭을 공급하도록 한다.
도 2 는 본 발명에 따른 유한체 승산 장치에 있어서, 주메모리의 일부 영역에서의 승산 데이터의 일실시예 배치도이다.
일반적으로 비트-시리얼/비트-패러렐 승산기는 승산이 시작되기 전에 주메모리에 있는 유한체 승산 데이터 A, B를 승산기 레지스터에 모두 로드(load)하고, 승산이 종료된 후 승산 결과값을 주메모리에 저장하거나 다른 레지스터로 전송하게 된다. 따라서, 승산이 진행되는 도중에는 메모리 억세스(access)가 발생하지 않는다.
그러나, 본 발명에서 제안하는 디지트-시리얼 승산기의 경우에는 승산데이터 A,B를 32비트 디지트 단위로 억세스하고 승산중에 발생되는 중간데이터(T)와 디지트 승산 결과값(Z)을 32비트 단위로 씀으로써 승산중에 지속적으로 메모리 억세스가 발생하도록 한다.
여기서, 주메모리에 저장되는 데이터는 193 비트의 길이를 갖는 승산기의 입력 데이터 A, B와 193 비트의 승산결과값(Z) 및 중간데이터(T)이다.
상기와 같은 4가지 유형(A, B, Z, T)의 데이터가 메모리에 할당되는 형식은 도 2 에 도시된 바와 같다. A, T, B, Z의 순서로 할당되는 이유는 주소발생기와 제어신호를 단순하게 하기 위하여 본 발명에서 제안하는 방법이다. 이와같이 메모리에 할당된 데이터 영역을 보다 자세히 나타내면 하기의 [표1]과 같다.
[표1]에 표시된 바에 따르면, 주소 A0가 승산기에 할당되는 메모리 영역의 시작 주소(start address)로 간주할 수 있으며, 각각의 주소는 A, T, B, Z순으로 메모리에 할당된다. 또한, [표1]에 나타난 각각의 주소에는 32비트의 데이터가 할당되며 각 데이터의 범위를 표시한다.
본 발명에서 설정한 바람직한 일실시예의 메모리는 32비트 데이터 폭(data width)을 갖는 것으로 가정하였다. 만일 메모리의 데이터 폭이 16비트 또는 8비트로 축소된다면, 그에 따라 주소를 2배 또는 4배로 확장하여 사용할 수 있다.
또한, 시작 주소의 설정은 메모리 주소의 하위 5비트가 "00000"이 되도록 한다. 그 이유는 A, T, B, Z순으로 메모리를 억세스하는데 사용되는 주소의 계산에 필요한 덧셈기의 숫자를 최소화하기 위해서이다. 즉, 하위 5비트가 0에서 시작하지 않고 임의의 주소에서 시작한다면 주소를 계산하는데 메모리 주소 비트수만큼의 덧셈기가 필요하며 이것은 승산기 회로의 크기를 증가시키는 큰 요인이 된다.
따라서, 본 발명에서 제안된 승산기가 차지하는 메모리영역이 27워드(words)이기 때문에, 27워드 가운데 하나를 억세스하기 위한 주소를 만들기 위해서는 시작 주소의 하위 5비트를 27워드 가운데 하나를 나타내도록 한다. 또한, [표1]에서 " ' "으로 표시된 비트는 다항 감소(polynomial reduction)를 위하여 피드백(feedback)연산으로 비트가 변형된 것을 의미한다.
도 3 은 본 발명에 따른 유한체 승산 장치에 있어서, 데이터 영역별로 분리된 계수기를 갖는 주소발생기의 일실시예 구성도이다.
도 3 에 도시된 바와 같이 주소발생기는 AT계수기(31), B계수기(32), Z계수기(33), 2X1 다중화기(34) 및 3X1 다중화기(35)를 구비한다.
본 발명의 바람직한 실시예에 따른 승산기가 32비트 디지트 단위로 승산을 수행하기 때문에, A, T, B, Z영역의 데이터는 32비트 단위로 주메모리로부터 로드되거나 또는 주메모리에 저장된다. 이때, 주메모리로부터의 로드 또는 주메모리에의 저장은 A, T, B, Z영역의 데이터가 순서대로 이루어지기보다는 혼합되어 이루어진다.
따라서 A, T, B, Z영역의 데이터에 대한 로드 또는 저장을 위해, 주소발생기는 A, T, B, Z영역의 데이터를 별도로 관리하여야 한다. 이것은 A, T, B, Z레지스터 각각을 위한 계수기(counter)가 있어야 한다는 것을 의미한다.
이에 따라, 본 발명에서는 계수기가 차지하는 회로의 면적을 줄이기 위하여, A레지스터와 T레지스터의 계수기를 결합하는 방법을 제안한다. A레지스터와 T레지스터의 억세스는 연속적으로 발생한다는 점에 착안하여 메모리에서 A영역과 T영역을 연속으로 위치시키고, AT계수기(31)라고 하는 한 개의 계수기로 이 부분의 주소를 관리하도록 한다. 이와 같이, AT계수기(31)를 이용하면 A계수기와 T계수기를 분리하여 설계하는 것보다 회로를 감소시킬수 있을 뿐만 아니라 계수기를 증가(increment)하기 위한 제어신호의 발생이 대폭 축소되어 회로를 간략화하고 저전력을 달성할 수 있는 잇점이 있다.
그리고, B계수기(32)와 Z계수기(33)는 각각 B레지스터와 Z레지스터의 엑세스 동작을 계산한다.
그리고, 3x1 다중화기(35)는 승산동작에 따라 AT영역, B영역, Z영역의 주소를 선택하도록하고, 2x1 다중화기(34)는 AT계수기의 출력을 그대로 출력하거나 "5(0101)"값(301)을 더하여 출력하는 것을 선택하는데 이용된다.
여기서, "5"값을 더하는 경우는 첫 번째 디지트(a31 ... a0)의 데이터가 승산과정을 거치는 동안 발생된 T 값을 메모리에 저장하는 경우이다. 예를 들어, A2의 데이터가 T 레지스터에 로드되고 32번의 쉬프트를 통하여 승산이 완료되면 A1의 데이터가 변형되어 T로 이동되며 이 값을 T7에 저장하여야 한다. 이때, T7의 주소는 A2보다 "5"만큼 증가한 값이다. 연속하여 같은 방법으로 A3가 T에 로드되고 승산이 이루어지면 T 값을 T8에 저장한다. 즉, A3보다 "5" 증가한 주소이다.
또한, 주소발생기에서 3x1 다중화기(35)의 출력은 5비트이며 이것은 시작 주소(start address)(303)의 하위 5비트(302)와 교체되어 최종적으로 메모리 주소(memory address)가 만들어 진다.
도 4 는 본 발명에 따른 유한체 승산 장치에 있어서, AT계수기의 일실시예 상태 변화도이다.
본 발명에서 제안된 AT계수기의 동작원리와 구조를 자세히 살펴보면 다음과 같다. AT계수기는 도 4 에 도시된 바와 같이, 7진 계수기이지만 계수기의 시작값이 "1"씩 점차 증가하는 특별한 형식을 갖는다. 즉, 1부터 6까지는 A 영역의 주소를 나타내고 7부터 12까지는 T 영역을 표시한다.
도 4 에 도시된 바와 같이, 첫번째 줄은 AT 계수기가 A의 첫번째 디지트(a31 ....a0)를 승산하기 위해서 발생하는 주소를 나타내며 A1, A2, A3, A4, A5, A6, T7의 32비트 데이터가 차례로 T 레지스터에 로드되도록 동작하는 것을 표시한다. 두번째 줄은 6번째 디지트(a191 .... a160)에 해당하는 주소로 6번째 디지트 승산에서는 A2, A3, A4, A5, A6, T7, T8의 순서로 승산기 레지스터에 로드된다. 5번째 디지트는 A3부터, 4번째 디지트는 A4부터, 3번째 디지트는 A5부터, 그리고 2번째 디지트는 A6부터 로드되는 것을 의미한다.
도 5 는 본 발명에 따른 유한체 승산 장치에 있어서, AT계수기의 일실시예 회로도이다.
본 발명에 따른 AT계수기는 7진 계수기(51), 5진 계수기(52) 및 4비트 덧셈기(53)를 구비한다. 각각의 구성부분을 좀 더 자세히 살펴보면, 3개의 T 플립-플롭(Flip-Flop)으로 7진 계수기(51)를 만들고, 7진 계수기(51)의 출력을 다시 3개의 T 플립-플롭으로 구성된 5진 계수기(52)의 클럭으로 사용한다. 상기 5진 계수기(52)의 출력과 상기 7진 계수기(51)의 출력을 함께 4비트 덧셈기(53)의 입력으로 하여 최종 AT계수기의 출력을 만든다.
도 6 은 본 발명에 따른 유한체 승산 장치에 있어서, 각 레지스터의 일실시예 상태 변화도이다
도 6 에서, P(61)가 다항 감소(polynomial reduction)의 유무를 표시하고 P=1이면 즉, 다항 감소가 있으면 해당 디지트에 피드백 경로가 있음을 나타낸다. 피드백 경로가 있으면 해당 디지트의 값이 피드백에 의하여 변형되기 때문에 이 변형된 값을 다음 디지트가 이용할 수 있도록 메모리에 저장하여야 하는데 TW(temporary write)(62)가 이를 나타낸다. 또한, ATR(63)과 BR(64)은 승산 입력데이터를 T레지스터(또는 A레지스터)와 B 레지스터에 로드하는 동작을 나타낸다. 로드가 완료되면 32번의 쉬프트(65)가 발생한다.
상기의 쉬프트동작을 통하여 승산이 이루어 지는데, 32 쉬프트(65)가 완료되면 현재 디지트의 피드백 여부에 따라 TW(62) 동작을 수행하든가 아니면 바로 ATR(63)로 진행된다. ATR(63)로 바로 진행하는 것은 피드백이 없기 때문에 A값이 변형되지 않아서, 이를 별도로 저장할 필요가 없다는 뜻이다. 다음 ATR(63)과 BR(64)은 승산 입력 데이터의 다음 32비트를 로드하고 다시 32번의 쉬프트(65)를수행한다. 이러한 과정이 6번 반복됨으로써 승산이 완료된다.
본 발명에서 제안하는 일실시예의 승산기는 삼항식의 기약다항식이므로 첫 번째 디지트에서만 피드백 경로가 형성된다. 즉, 첫 번째 디지트에서만 TW(62)동작이 이루어지고 그다음 디지트에서는 ATR(63), BR(64)동작만이 반복된다.
도 7 은 본 발명에 적용되는 쉬프트 레지스터 클럭발생기의 지연회로의 일실시예 회로도이다.
디지트-시리얼 구조는 비트-시리얼 구조에 비하여 구현되는 회로의 면적에서는 크게 장점이 있는 반면 실행시간이 크게 증가하는 단점을 갖고 있다. 본 발명에서 제안하고자 하는 삼항(trinomial) 기약다항식 승산기의 경우 디지트-시리얼 구조는 비트-시리얼 구조에 비하여 약 70%의 면적을 줄였다. 그러나, 실행시간은 5.7배가 증가하게 된다.
본 발명에서는 디지트-시리얼 구조의 승산기 실행 사이클수를 줄이는 방법으로 LFSR의 임계 경로(critical path)를 분석하고 이를 활용한 고속 클럭발생기를 사용하도록 하였다. 이 방법은 임계 경로보다 긴 지연(delay) 회로를 이용하여 클럭을 발생하는 것으로 디지털 시스템 설계에서는 널리 활용되는 방법은 아니지만 LFSR이 규칙적인 구조의 회로를 갖는다는 점을 이용한 방법으로 이미 사용되고 있다.
이와 같은 지연(Delay)을 이용한 클럭발생기는 시스템클럭 주파수의 10배정도의 클럭을 만들어 내기 때문에 70%가량의 실행 사이클수를 단축하여 193비트 LFSR에 비하여 1.7배 정도 증가하게 된다.
클럭 발생기의 원리를 설명하면 다음과 같다. 우선 LFSR구조에서 임계 경로를 결정하여 클럭 발생기의 지연 회선(delay line)의 기준값으로 사용한다. LFSR에서 연산이 이루어지는 경로는 크게 두가지로 볼 수 있다. 도 7 에 도시된 바와 같이,(707)와 b0(702)의 논리곱(AND)(709)연산 결과와(711)를 배타적논리합(XOR)(713)연산을 하고 그 결과를 다시(711)에 저장하는 경로1(path1)과,(707)와(704)를 배타적논리합(XOR)(706)연산(=1인 경우)을 한 후(708)에 저장하는 경로2(path2)가 있다. 상기 두가지 경로에서 논리곱(AND)연산이 포함된 경로1이 경로2보다 임계 경로가 됨을 알 수 있다.
경로1의 경로 지연을 보다 정확하게 예측하여 보면 다음의 [수학식2]와 같이 산출할 수 있다.
LFSR 클럭 발생기에서 출력되는 클럭의 주기(period)는 최소 경로 지연(path delay)를 초과하여야 한다. LFSR 클럭은 LFSR에서 쉬프트 및 승산결과 저장에만 사용되며, 또한 A, B, Z, T 레지스터의 클럭으로 사용된다. 따라서, 지연 오차에 의한 오동작의 문제는 발생하지 않는다. 메모리 로드/저장 및 승산에 필요한 기타 동작에는 시스템 클럭을 사용한다.
도 8 은 본 발명에 적용되는 최대 경로 지연 회로를 채택한 쉬프트 레지스터 클럭 발생기의 일실시예 구성도이다.
쉬프트 레지스터의 클럭 발생기는 쉬프트 레지스터의 쉬프트 동작에 사용되는 클럭의 발생장치를 말하는데, 도 9 에 도시된 바와 같이, 본 발명에 따른 클럭발생장치는 배타적논리합 게이트(XOR Gate)(81), 지연(Delay)회로(82) 및 클럭 드라이버(clock driver)(83)를 구비한다.
도 8 의 클럭 발생기에 의한 클럭은 도 6 의 32SF상태에서 필요하며, 상기 32SF상태에 들어가면 32SF_EN신호가 인가(enable)되고, 도 8 의 클럭발생기가 동작하여 32SF_CLK 출력단으로 클럭을 출력하여 A, B, T 및 Z레지스터에 공급한다.
그리고, 지연회로(82)는 도 7 에서 계산된 경로 지연(path delay)값을 사용한 회로이다.
그리고, 클럭 드라이버(83)는 다수의 쉬프트 레지스터에 클럭을 공급하기 위한 드라이버(driver)회로이다. 도 8 의 클럭은 A, B, Z 및 T레지스터에서 모두 사용하기 때문에 큰 용량의 드라이버를 사용하여야 한다.
그 동작을 자세히 살펴보면, 32SF_EN신호와 지연회로(82)를 거친 신호를 배타적논리합 게이트(81)를 통해 고속의 클럭으로 출력하고, 다시 상기의 출력된 신호를 지연회로(82) 및 클럭드라이버(83)로 보낸다. 상기 지연회로(82)를 거친 신호는 다시 배타적논리합 게이트(81)로 입력되고, 클럭드라이버(83)로 전해진 신호는 각각의 레지스터의 클럭으로 공급된다.
도 9 는 본 발명에 따른 유한체 승산 방법에 대한 일실시예 동작 흐름도이다.
본 발명의 유한체 승산기는 디지트-시리얼 구조를 갖기 때문에 32비트 단위로 승산이 이루어진 후, 레지스터를 갱신하고 다음 32비트의 승산이 진행된다. 본 발명의 바람직한 실시예에 따른 193비트 승산에서는 이러한 과정이 6번 반복이 된다. 이러한 승산 과정을 흐름도로 나타내면 도 9 에 도시된 바와 같다.
우선, 193비트 승산데이터를 32비트 디지트 단위로 나누면(901) 6 디지트와 1비트로 구성된다. 1비트는 최종 디지트에서 처리하는 것으로 간주하면(즉, 최종 디지트는 33비트가 된다.) 6번의 반복연산이 발생함을 알 수 있다. 상기에서 나뉘어진 각 디지트를 입력하고(902), 이들 디지트는 다항 감소(polynomial reduction)를 포함하는지 여부에 따라 동작을 구분하게 된다(903).
즉, 다항 감소가 있으면 해당 디지트에 피드백 경로가 있음을 나타낸다. 피드백 경로가 있으면 해당 디지트의 값이 피드백에 의하여 변형되기 때문에 이 변형된 값을 다음 디지트가 이용할 수 있도록 메모리에 저장하여야 하는데 이를 위해 임시 쓰기(TW : temporary write)동작을 수행한다(904). 임시 쓰기 동작을 수행한 후(904) 또는 다항 감소가 없는 경우(903)에는, 승산 입력 데이터를 AT레지스터와 B레지스터에 로드(load)한다(905, 906). 상기 레지스터에 로드가 완료되면 32번의 쉬프트 동작을 수행한다(907). 상기 32번의 쉬프트 동작이 완료되면 그 값을 Z레지스터에 저장한다(908).
상기의 쉬프트 동작의 수행(907)을 통하여 승산이 이루어 지는데, 32 쉬프트가 완료되면, 다음 32비트 디지트를 입력받아(902) 디지트의 피드백 여부에 따라 다음 디지트의 승산은 임시 쓰기 동작을 수행하든가(904) 아니면 바로 905의 AT레지스터에의 로드 동작으로 진행된다.
AT레지스터에의 로드 동작으로 바로 진행하는 것(905)은 피드백이 없기 때문에 A 레지스터의 값이 변형되지 않아서, 이를 별도로 저장할 필요가 없다는 뜻이다. 다음 AT레지스터와 B레지스터는 승산 입력 데이터의 다음 32비트를 로드하고 다시 32번의 쉬프트를 수행한다. 이러한 과정이 6번 반복됨으로써 승산이 완료된다(909).
본 발명에서 제안하는 일실시예의 승산기는 삼항식의 기약다항식이므로 첫 번째 디지트에서만 피드백 경로가 형성된다. 즉, 첫 번째 디지트에서만 임시 쓰기 동작(904)이 이루어지고 그다음 디지트에서는 다항 감소가 없어서 AT레지스터에 로드하고(905), B레지스터에 로드하는(906) 동작만 반복된다.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
상기한 바와 같은 본 발명은, 다항식의 차수가 높은 유한체 승산에서 디지트 시리얼 방식을 사용함으로써 부피가 작은 회로를 제공하고, 시스템의 클럭과 다른 고속의 다른 클럭 발생기를 이용함으로써 고속의 승산이 가능하도록 한다.
이에 따라, 본 발명은 스마트카드와 같은 전자카드의 암호화 프로세서 회로에서 부피를 감소시키고 빠른 속도를 가지며 비도를 높이는 효과가 있다.
Claims (11)
- 삭제
- 다항식 기저에서의 유한체 승산 장치에 있어서,유한체 승산에 필요한 승수(multiplier), 피승수(multiplicand) 및 연산 결과인 곱(product)을 디지트(Digit)단위로 나누어 저장하기 위한 제 1 저장 수단;상기 제 1 저장 수단을 이용해 승수 및 피승수 값을 저장하고 연산을 수행하는 과정에 필요한 중간값을 저장하여 연산을 보조하며 최종 결과를 저장하기 위한 제 2 저장 수단;상기 제 1 저장 수단이 필요한 값을 상기 제 2 저장 수단에서 읽거나 쓰도록 하기 위한 상기 제 2 저장 수단의 주소를 발생시키기 위한 주소 발생 수단; 및상기 제 1 저장 수단에 시스템 클럭과 분리되어 작동하는 고속의 클럭을 공급하기 위한 클럭 발생 수단을 포함하고,상기 제 1 저장 수단은,디지트(Digit)단위로 나뉜 비트수를 가지고 유한체 승산에 필요한 피승수를 저장하기 위한 제 3 저장 수단;디지트(Digit)단위로 나뉜 비트수를 가지고 유한체 승산에 필요한 승수를 저장하기 위한 제 4 저장 수단;디지트(Digit)단위로 나뉜 비트수를 가지고 상기 제 3 저장 수단의 값을 임시로 저장하여 다음 연산에 사용하도록 하기 위한 제 5 저장 수단; 및디지트(Digit)단위로 나뉜 비트수를 가지고 상기 제 3 저장 수단과 상기 제 4 저장 수단을 이용한 유한체 승산의 연산 결과인 곱을 저장하기 위한 제 6 저장 수단을 포함하는 다항식 기저의 유한체 승산장치.
- 제 2 항에 있어서,상기 제 3 내지 제 6 저장 수단이 연산을 수행할 때, 최상위 1 비트가 남는 경우,마지막 디지트에서 통상의 디지트보다 1비트 많은 연산을 수행하도록 상기 제 3 내지 제 6 저장 수단의 비트수를 확장하기 위한 제 1 다중화 수단을 더 포함하는 다항식 기저의 유한체 승산장치.
- 제 2 항 또는 제 3 항에 있어서,상기 제 3 저장 수단의 마지막 비트와 상기 제 5 저장 수단의 첫번째 비트를 연결하고, 상기 제 3 저장 수단의 첫번째 비트와 상기 제 5 저장 수단의 마지막 비트를 직렬로 연결하여 순환 쉬프트 저장 수단을 형성하는 것을 특징으로 하는 다항식 기저의 유한체 승산장치.
- 제 2 항 또는 제 3 항에 있어서,상기 제 2 저장 수단은,외부 시스템의 메모리를 사용하는 것으로 이용하는 것을 특징으로 하는 다항식 기저의 유한체 승산 장치.
- 제 2 항 또는 제 3 항에 있어서,상기 제 2 저장 수단은,승산 장치 자체내의 메모리를 이용하는 것을 특징으로 하는 다항식 기저의 유한체 승산 장치.
- 제 2 항 또는 제 3 항에 있어서,상기 주소 발생 수단은,상기 제 3 또는 제 5 저장 수단의 동작 횟수를 기산하기 위한 제 1 계수 수단;상기 제 4 저장 수단의 동작 횟수를 기산하기 위한 제 2 계수 수단;상기 제 6 저장 수단의 동작 횟수를 기산하기 위한 제 3 계수 수단;상기 제 1 계수 수단의 출력에 대해, 상기 제 3 저장 수단의 출력인지 상기 제 5 저장 수단의 출력인지를 구분하기 위한 소정의 값을 더하여 다중화하기 위한 제 2 다중화 수단; 및상기 제 2 계수 수단, 상기 제 3 계수 수단 및 상기 제 2 다중화 수단의 출력값을 입력으로하여 상기 제 2 저장 수단의 주소를 출력하기 위한 제 3 다중화 수단을 포함하는 다항식 기저의 유한체 승산 장치.
- 제 7 항에 있어서,상기 주소 발생 수단은,상기 제 2 저장 수단의 시작 주소를 하위 5비트가 "00000"이 되도록 설정하는 것을 특징으로 하는 다항식 기저의 유한체 승산 장치.
- 제 2 항 또는 제 3 항에 있어서,상기 클럭 발생 수단은,동작 가능 신호와 지연 수단을 거친 신호를 배타적 논리합하여 고속의 클럭을 출력하기 위한 배타적 논리합 연산 수단;상기 배타적 논리합 연산 수단의 출력을 받아 경로 지연값만큼을 지연시키기 위한 지연수단; 및상기 배타적 논리합 연산 수단의 출력을 받아 상기 제 3 내지 제 6 저장 수단으로 클럭을 전달하기 위한 클럭 구동 수단을 포함하는 다항식 기저의 유한체 승산 장치.
- 다항식 기저의 유한체 승산 장치에 적용되는 유한체 승산 방법에 있어서,승산 데이터를 디지트 단위로 나누어 순차적으로 입력받는 제 1 단계;상기 입력된 디지트에 다항 감소가 있는지를 조사하여 다항감소가 있으면 임시 저장 레지스터에 그 값을 저장하고 다항감소가 없으면 다음 단계로 진행하는 제 2 단계;상기 승산 입력 데이터를 피승수를 저장하는 레지스터 및 승수를 저장하는 레지스터에 로드시키는 제 3 단계;상기 승산 데이터를 나눈 디지트 단위 수만큼 쉬프트 동작을 수행하는 제 4 단계;상기 제 4 단계의 쉬프트 동작을 수행한 결과값을, 결과를 저장하기 위한 레지스터에 저장하는 제 5 단계; 및상기 승산 데이터의 마지막 디지트에 이르기까지 상기 제 1 내지 제 5 단계를 반복 수행하는 제 6 단계를 포함하는 다항식 기저의 유한체 승산 방법.
- 프로세서를 구비한 유한체 승산 장치에,승산 데이터를 디지트 단위로 나누어 순차적으로 입력받는 제 1 기능;상기 입력된 디지트에 다항 감소가 있는지를 조사하여 다항감소가 있으면 임시 저장 레지스터에 그 값을 저장하고 다항감소가 없으면 다음 기능으로 진행하는 제 2 기능;상기 승산 입력 데이터를 피승수를 저장하는 레지스터 및 승수를 저장하는 레지스터에 로드시키는 제 3 기능;상기 승산 데이터를 나눈 디지트 단위 수만큼 쉬프트 동작을 수행하는 제 4 기능;상기 제 4 기능에 의한 쉬프트 동작을 수행한 결과값을, 결과를 저장하기 위한 레지스터에 저장하는 제 5 기능; 및상기 승산 데이터의 마지막 디지트에 이르기까지 상기 제 1 내지 제 5 기능의 동작을 반복 수행하도록 하는 제 6 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2001-0019861A KR100417136B1 (ko) | 2001-04-13 | 2001-04-13 | 다항식 기저에서 유한체 승산 장치 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2001-0019861A KR100417136B1 (ko) | 2001-04-13 | 2001-04-13 | 다항식 기저에서 유한체 승산 장치 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20020079144A KR20020079144A (ko) | 2002-10-19 |
KR100417136B1 true KR100417136B1 (ko) | 2004-02-05 |
Family
ID=27701031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-0019861A KR100417136B1 (ko) | 2001-04-13 | 2001-04-13 | 다항식 기저에서 유한체 승산 장치 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100417136B1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100416291B1 (ko) * | 2001-06-08 | 2004-01-31 | 이광엽 | 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법 |
KR100450750B1 (ko) * | 2002-04-17 | 2004-10-01 | 한국전자통신연구원 | 향상된 선형 궤환 시프트 레지스터 구조의 유한체 승산기 |
KR100550015B1 (ko) * | 2003-12-18 | 2006-02-08 | 한국전자통신연구원 | GF(3^m)의 유한체 곱셈 연산에 적합한 유한체 곱셈연산 장치, 이에 적합한 mod 3 비트 곱셈기, 그리고이에 적합한 mod 3 비트열 덧셈기 |
KR100954583B1 (ko) * | 2008-02-20 | 2010-04-26 | 고려대학교 산학협력단 | 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법 |
KR100954579B1 (ko) * | 2008-02-20 | 2010-04-26 | 고려대학교 산학협력단 | 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법 |
KR100954586B1 (ko) * | 2008-08-27 | 2010-04-26 | 고려대학교 산학협력단 | 다항식 기저 기반의 이진체 병렬 곱셈 장치 및 방법과 이를이용한 마이크로프로세서 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4107458A (en) * | 1976-08-23 | 1978-08-15 | Constant James N | Cipher computer and cryptographic system |
JPS57141753A (en) * | 1981-02-25 | 1982-09-02 | Nec Corp | Multiplication circuit |
US5742530A (en) * | 1992-11-30 | 1998-04-21 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
KR19990086179A (ko) * | 1998-05-26 | 1999-12-15 | 윤종용 | 모듈러 연산장치 및 그 방법 |
-
2001
- 2001-04-13 KR KR10-2001-0019861A patent/KR100417136B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4107458A (en) * | 1976-08-23 | 1978-08-15 | Constant James N | Cipher computer and cryptographic system |
JPS57141753A (en) * | 1981-02-25 | 1982-09-02 | Nec Corp | Multiplication circuit |
US5742530A (en) * | 1992-11-30 | 1998-04-21 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
KR19990086179A (ko) * | 1998-05-26 | 1999-12-15 | 윤종용 | 모듈러 연산장치 및 그 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20020079144A (ko) | 2002-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1293891B2 (en) | Arithmetic processor accomodating different finite field size | |
US6691143B2 (en) | Accelerated montgomery multiplication using plural multipliers | |
Öztürk et al. | Low-power elliptic curve cryptography using scaled modular arithmetic | |
JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
US6085210A (en) | High-speed modular exponentiator and multiplier | |
JP4408712B2 (ja) | 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路 | |
Abdul-Aziz Gutub et al. | Scalable and unified hardware to compute montgomery inverse in GF (p) and GF (2 n) | |
Gutub et al. | Scalable VLSI architecture for GF (p) Montgomery modular inverse computation | |
Gutub et al. | Efficient scalable VLSI architecture for Montgomery inversion in GF (p) | |
US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
Abdulrahman et al. | High-speed hybrid-double multiplication architectures using new serial-out bit-level mastrovito multipliers | |
KR100417136B1 (ko) | 다항식 기저에서 유한체 승산 장치 및 그 방법 | |
O’Rourke | Efficient NTRU implementations | |
KR100478974B1 (ko) | 직렬 유한체 승산기 | |
US6963644B1 (en) | Multi-word arithmetic device for faster computation of cryptosystem calculations | |
JP2001034167A (ja) | 演算装置及び暗号処理装置 | |
KR100416291B1 (ko) | 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법 | |
O'Rourke et al. | Achieving NTRU with Montgomery multiplication | |
JP4360792B2 (ja) | べき乗剰余演算器 | |
JP2000207387A (ja) | 演算装置及び暗号処理装置 | |
US5999953A (en) | Method for the production of a parameter Jo associated with the implementation of a modular operation according to the Montgomery method | |
MONICA et al. | High-Throughput VLSI Architecture for Montgomery Modular Multiplication Algorithm by using PASTA | |
Kurniawan | ASIC design and implementation of a parallel exponentiation algorithm using optimized scalable Montgomery multipliers | |
Drutarovský et al. | Implementation of Scalable Montgomery Multiplication coprocessor in Altera reconfigurable hardware | |
Park | Hardware design of scalable and unified modular division and Montgomery multiplication |
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: 20091231 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |