KR100535370B1 - 유한 필드상의 산술연산기 - Google Patents

유한 필드상의 산술연산기 Download PDF

Info

Publication number
KR100535370B1
KR100535370B1 KR10-2003-0007226A KR20030007226A KR100535370B1 KR 100535370 B1 KR100535370 B1 KR 100535370B1 KR 20030007226 A KR20030007226 A KR 20030007226A KR 100535370 B1 KR100535370 B1 KR 100535370B1
Authority
KR
South Korea
Prior art keywords
block
value
signal
division
output
Prior art date
Application number
KR10-2003-0007226A
Other languages
English (en)
Other versions
KR20040070978A (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-2003-0007226A priority Critical patent/KR100535370B1/ko
Priority to JP2003401686A priority patent/JP2004240951A/ja
Priority to US10/771,592 priority patent/US7260594B2/en
Publication of KR20040070978A publication Critical patent/KR20040070978A/ko
Application granted granted Critical
Publication of KR100535370B1 publication Critical patent/KR100535370B1/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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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
    • 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

Abstract

본 발명은 유한필드 GF(2m)상에서의 산술연산기에 관한 것으로, 바이너리 확장 최대공약수 알고리즘에 바탕을 둔 나눗셈 알고리즘과, MBS(Most Significant Bit)-first 곱셈 알고리즘으로부터 구현한 산술연산기는 하드웨어 공유를 통하여 곱셈 및 나눗셈 모두를 수행할 수 있고, 본 발명 연산기는 기약다항식의 선택에 어떠한 제약도 두지 않을 뿐 아니라 매우 규칙적이고 모듈화하기 쉽기 때문에 필드 크기 m 에 대하여 확장성 및 유연성을 가지며 곱셈 및 나눗셈 연산을 동일한 하드웨어로 수행할 수 있기 때문에 스마트 카드나 무선통신기기와 같은 저 면적을 요구하는 응용들의 암호화 시스템 구현에 적합한 매우 뛰어난 발명인 것이다.

Description

유한 필드상의 산술연산기 {Arithmetic unit over finite field GF}
본 발명은 유한필드 GF(2m)상에서의 산술연산기에 관한 것으로 더욱 상세하게는 바이너리 확장 최대공약수 알고리즘에 바탕을 둔 나눗셈 알고리즘과 MSB(Most Significant Bit)-first 곱셈 알고리즘으로부터 하드웨어 공유를 통하여 한 개의 동일한 하드웨어를 이용하여 곱셈 및 나눗셈 모두를 수행하는 유한필드 GF(2m)상에서의 산술연산기에 관한 것이다.
종래의 곱셈 및 연산기는 출원번호 특허 1995-22327호에 공지된 바와 같이 곱셈 및 나눗셈 연산용 지원회로는 인가되는 데이타를 저장하기 위한 제1,2레지스터와; 상기 제2레지스터의 출력을 멀티플렉싱하는 제1멀티플렉서와; 상기 제1레지스터와 상기 제1멀티플렉서의 출력을 수신하고 인가되는 산술제어신호에 따라상기 수신된 출력을 산술연산하는 논리산술 연산기와; 상기 논리산술 연산기의 출력을 수신하여 곱셈 및 나눗셈을 위한좌우 시프팅을 행하고 상기 산술제어신호를 제공하는 병렬 리드 및 라이트 가능한 시프트 레지스터와; 상기 논리산술 연산기와 연결되어 네가티브 플래그 및 오버플로우 플래그를 게이팅하여 그 결과를 출력하는 게이트와; 상기 논리산술 연산기의 출력과 상기 게이트의 출력 및 상기 제1멀티플렉서의 출력을 수신하여 멀티플렉싱하는 제2멀티플렉서를 포함하는 곱셈 및 나눗셈 지원회로가 있었다.
도 1 및 도 2에 도시된 알고리즘은 각각 곱셈 및 나눗셈을 위한 것으로 지금까지 연산기는 곱셈만을 위한 구조 또는 나눗셈만을 위한 구조로 구분되어 있었으며, 본 발명과 같이 한 개의 동일한 하드웨어를 이용하여 곱셈 및 나눗셈 모두를 수행하지 못하는 문제점이 있었다.
따라서, 본 발명은 상기 문제점을 해결하기 위해서 안출된 것으로 본 발명의 목적은 한 개의 동일한 하드웨어를 이용하여 유한필드 GF(2m)상에서의 곱셈 및 나눗셈 모두를 수행할 수 있는 기능을 가진 산술연산기를 제공하는데 있다.
본 발명은 상기 언급한 문제점을 감안하여 안출한 것으로서, 본 발명의 목적은 도 1의 곱셈 및 도 2의 나눗셈 알고리즘을 수행할 수 있는 산술연산기를 개발하는 것이며, 컨트롤 로직과, RS-블록, SR-블록, UV-블록의 4개 구성요소로 이루어짐으로써 GF(2m)상의 곱셈 및 나눗셈을 모두 수행하는 하는 기능을 가짐으로써 본 발명의 목적을 달성하였다.
이하, 본 발명의 바람직한 실시예로서 첨부된 도면에 의거하여 상세히 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 곱셈 알고리즘이고, 도 2는 본 발명의 바람직한 실시예에 따른 나눗셈 알고리즘으로서, 각각의 알고리즘을 실행할 수 있는 각각의 곱셈기 및 나눗셈기를 설계하여 그 구조를 분석한 결과 하드웨어의 공유가 가능하다는 사실을 인지하였으며, 본 발명은 이 결과를 종합한 것으로서 한 개의 동일한 하드웨어를 이용하여 GF(2m)상의 곱셈 및 나눗셈 모두를 수행할 수 있는 기능을 가진 산술연산기를 설계한 것이다.
도 3은 본 발명은 바람직한 실시예에 따른 곱셈 및 나눗셈을 동시에 수행하는 연산기의 블록도로 컨트롤 로직부(1), RS-블록부(2), SR-블록부(3), UV-블록부(4)로 구성되어 있으며 상기 컨트롤 로직부(1), RS-블록부(2), SR-블록부(3), UV-블록부(4)는 하기 도 4 내지 도 7에서 상세히 설명한다. 본 발명은 알고리즘의 R과 S의 값을 계산하고 출력값 r0 값을 컨트롤 로직(1)에 전송하기 위하여 다수개의 레지스터인 State (s1),(s2)....(sm), 다수개의 MUX 논리회로 (M0),(M1)....(Mm-1), 다수개의 XOR- Gate (E0),(E1),(Em-1) 및 AND Gate 회로 (A0),(A1),(Am-1)의 출력이 레지스터 (ro),(r1)...(rm-1)로 출력되는 알에스-블록(2)과, 상기 알에스-블록 (2)의 출력을 상태신호 (State) 값에 따라 양방향 레지스터 값이 오른쪽 및 왼쪽으로 이동시키기 위하여 MUX논리 회로 (MU0),(MU1),...(MUm-1)에 입력값 상태신호 (state신호) , 카운터 플래그신호 ( c-flag신호)가 입력되어 출력값을 생성하고 이렇게 생성된 출력값인 출력신호(cnt1),(cnt2),...(cntm)가 상기 MUX논리회로 (MU0),(MU1),...(MUm-1)의 입력값으로 인가되며, 상기 MUX논리회로(MU0),(MU1),...(MUm-1)의 출력값이 레지스터(bn-1/sr0),(bn-2/sr1),...(b0/srm-1)를 통하여 다음의 출력신호(cnt1),(cnt2),...(cntm)로서 MUX논리회로(MU0),(MU1),...(MUm-1)의 입력값으로 입력되는 에스알-블록(3)과, 알고리즘의 U와 V값을 계산하고 ui 및 vi 값을 컨트롤 로직(1)으로 전송하기 위하여 다수개의 MUX논리회로 (MU0),(MU1),... (MUm-1) 및 다수개의 레지스터 (a0/v0),(am-2/v1),(a1/vm-1)로 구성되어 제1, 제 2AND Gate 및 제1, 제 2 XOR Gate로 구성되는 논리부 (B1),...(Bm-2),(Bm-1)를 통하여 레지스터 (Pm-1/u0),(Pm-2/u1),...(P0/um-1)로 a0/u0 값, Pm-1/v0값을 출력하는 유브이-블록(4)과, 나눗셈을 수행하도록 상기 알에스-블록 (2), 에스알-블록(3), 유브이-블록(4)에 필요한 제어신호를 생성하도록 다수개의 ANDGate, ORGate, XOR Gater가 레지스터 (S10),(F10)와 연결된 컨트롤 로직(1)으로 구성된 나눗셈기와; 상기 나눗셈기에서 나눗셈 또는 곱셈을 연산하기 위하여 상기 에스알-블록 (3)내 제어신호 (mult/div) 및 상태신호 (satae)에 의하여 멀티플렉서 (Mu0)를 제어하도록 전단에 구성되는 멀티플렉서 (Mu)와; 상기 나눗셈기에서 나눗셈 또는 곱셈을 연산하기 위하여 상기 유브이-블록 (4)내 콘트롤 신호 (Ctrl1),(Ctrl2),(Ctrl3), 제어신호 (mult/div) 및 플래그신호 (b1/z-flag)에 의하여 후단회로를 제어하는 멀티플렉서 (MUX1),(MUX2),(MUX3)로 구성된ek. 본 발명은 상술한 바와같이 나눗셈기와 그 나눗셈기에 연결된 다수개의 멀티플렉서로 구성되어 나눗셈 또는 곱셈을 과정을 선택하는 것으로 이 다수개의 멀티플렉서는 여러가지 제어신호에 의하여 구동된다. 그리고 곱셈기능의 선택시에도 나눗셈기의 내부 회로을 그대로 사용하여 곱셈기능을 수행하는 것으로 먼저, 나눗셈기를 기본으로 하여 설명한다. 도 4은 상기 도 3의 컨트롤 로직(1)의 내부 회로도로 입력값 (R0)와, 입력값 state (S10)가 인버터(Inverter)를 통해 상기 입력값 (R0)와 같이 AND Gate (A12)의 출력값1을 출력하고, 입력값 state (S10)와, 입력값 (z-flag)가 인버터(Inverter)를 통해 상기 입력값 state (S10) 와 같이 AND Gate (A11)의 출력값2를 출력하여 상기 출력값1과 함께 OR Gate (OR10)에 입력되어 출력값 state (S10)를 만드는 회로와; 입력값 (z-flag)값과, state 값이 AND Gate (A13)를 통해 c-flag (F10)의 출력값을 만드는 회로와; 입력값 (R0), (V0)가 AND Gate (A14)를 통해 출력값을 만들고 입력값 (U0)와 함께 XOR Gate (EO10)의 입력값이 되어 출력 (Ctrl2)를 만드는 회로와; 입력값 (R0)와, 입력값 state가 인버터 회로를 통해 상기 입력값 (R0)와 함께 AND Gate (A15)회로를 통해 출력값 (Ctrl3)를 만드는 회로로 구성되어 있는 컨트롤 로직 회로이다. 상기 컨트롤 로직 회로는 알에스-블록(2), 에스알-블록(3), 유에스-블록(4)에 필요한 제어신호를 생성하는 작용을 한다. 도 5는 상기 도 2의 알에스-블록(2)의 회로도로 상기 도 4에 도시된 컨트롤 로직(1) 회로에서 출력값 Ctrl1, Crrl3는 알에스-블록(2) 회로도의 입력값으로 들어가 출력값 (r0)를 출력한다. 상기 알에스-블록(2)의 세부 회로를 살펴보면 입력값 (r1)은 XOR Gate (E0)의 입력값과, MUX 논리회로 (M0)의 입력값으로 되고 상기 MUX는 입력값 (r1), 콘트롤 로직회로 (1)의 Ctrl3, State (S1)가 입력값이 되어 출력값을 생성하고, 이 출력값은 다시 State (S1) 입력값이 되어 AND Gate 회로 (A0)의 입력값으로 들어간다. 그리고 상기 AND Gate 회로 (A0)는 State (S1)의 출력값이 다시 입력값이 되어 Ctrl1의 입력값과 함께 AND Gate(A0)에 들어가 출력값을 생성한다. 이렇게 생성된 출력값은 상기 레지스터 (r1)의 입력값과 함께 XOR- Gate (E0)의 입력값이 되어 레지스터 (r0)의 출력값을 생성한다. 상기 r과 s는 1-bit 레지스터를 나타내고 있으며 상기 MUX 논리회로 (M0)는 2-input 멀티플렉서(multiplexer)를 나타내고 있다. 또한 레지스터를 나타내는 State (S2),(Sm-2),....(Sm)은 멀티플렉서인 MUX논리회로 (M1),...(Mm-2),(Mm-2)와 연결되고, AND Gate (A0),(A1),...(Am-1),(Am-2), XOR-Gate(E1),...(Em-1),(Em)를 통하여 각각의 레지스터 (r1),...(rm-2),(rm-1)와 연결되어 상기 레지스터 (r0)와 동일하게 각각의 레지스터 (r1),...(rm-2),(rm-1)에서 출력되게 구성한 것이다. 상기 알에스-블록(2)은 도 1 및 도 2에 도시된 종래의 알고리즘에서 R 및 S 값을 계산하는 기능을 가지고 또한 R0 값을 컨트롤 로직부(1)로 전송하는 작용을 한다. 도6은 상기 도3의 에스알-블록(3)의 회로도로 MUX논리 회로 (MU0),(MU1),...(MUm-1)에 입력값 상태산호 (state신호) , 카운터 플래그신호 (c-flag신호)가 입력되어 출력값을 생성하고 이렇게 생성된 출력값인 출력신호(cnt1),(cnt2),...(cntm)가 상기 MUX논리회로 (MU0),(MU1),...(MUm-1)의 입력값으로 인가되며, 상기 MUX논리회로(MU0),(MU1),...(MUm-1)의 출력값이 레지스터(bn-1/sr0),(bn-2/sr1),...(b0/srm-1)이 다음의 출력신호(cnt1),(cnt2),...(cntm)로서 MUX논리회로(MU0),(MU1),...(MUm-1)의 입력값으로 입력된다. 상기와 같은 회로동작을 반복하는 에스알-블록(3) 회로인 것이다. 그리고 bi/sri는 1-bit 레지스터를 나타내고 있으며 MUX는 2-input 멀티플렉서 (multiplexer)를 나타내고 있으며, 여기서 나눗셈 연산을 수행하기 위해서 레지스터인 state 값에 따라 레지스터의 값이 왼쪽 또는 오른쪽 방향으로 이동한다. 도 7은 상기 도 3의 유브이-블록(4)의 회로도로 두 개의 AND Gate 회로에 입력되는 입력값은 g1에 의한 값과 입력값 Ctrl2가 입력되어 제 1 AND Gate의 출력값이 되고, v1에 의한 값과 입력값 Ctrl1가 입력되어 제 2 AND Gate의 출력된 값이 된다. 그리고, 두 개의 XOR Gate 중에서 제 1 XOR Gate는 상기 제 1 AND Gate의 출력값이 입력값이 되고 제 2 XOR Gate는 입력값 u1과, 상기 제 2 AND Gate의 출력값이 입력값이 되어 출력하고 이렇게 출력된 출력값은 상기 제 1 AND Gate의 출력값과 같이 제 1 XOR Gate의 입력값이 되어 u0의 출력값을 출력하게 논리부 (B0)가 구성되어 있다. 나머지 논리부 (B1),...(Bm-2),(Bm-1)도 동일하게 제1, 제 2AND Gate 및 제1, 제 2 XOR Gate로 구성되어 있다. 상기 출력신호u0는 다시 MUX논리회로 (MU0),(MU1),... (MUm-1)의 입력값이 되고 MUX논리회로 (MU0),(MU1),... (MUm-1)의 입력값은 입력값 Ctrl3, 0이 MUX에 들어가 출력된 값과, 상기 Pm-1/u0 값, a0/v0가 입력되어 출력값을 생성한다. 상기 Pi/ui 및 ai/vi는 1-bit 레지스터를 나타내고 있으며 MUX는 2-input 멀티플렉서(multiplexer)를 나타낸다. 상기 유브이블록(4)은 기본적으로 도 1및 도 2에 도시된 알고리즘에서 U 및 V 값을 계산하는 기능을 가진다. 또한 Pi/ui 값 및 ai/vi 값을 상기 도 3의 컨트롤 로직(1)으로 전송해주는 작용을 한다. 이와같이 구성된 본 발명에서 A(x)와 B(x)는 GF(2 m )상의 두 원소이고, G(x)는 GF(2 m )을 정의하는, 즉 GF(2 m )은 대략GF(2)[x]/G(x), 차수 m의 기약 다항식이고, P(x)는 A(x)/B(x) mod G(x)의 결과라고 하면, 각각의 다항식은 다음과 같이 표현되며 계수들은 이진수 0 혹은 1이다. A(x) = am -1 xm -1 + am -2 xm -2 + … + a 1 x + a 0 (1)B(x) = bm -1 xm -1 + bm -2 xm -2 + … + b 1 x + b 0 (2)G(x) = xm + gm -1 xm -1 + … + g 1 x + g 0 (3)P(x) = pm -1 xm -1 + pm -2 xm -2 + … + p 1 x + p 0 (4)도 2의 알고니즘을 분석해보면, 알고리즘의 마지막 반복을 시작할 때 countstate는 항상 1이 된다는 사실을 알 수 있다. 따라서 V값에는 아무런 영향을 미치지 못하기 때문에 실제로 2m-1의 반복 후 우리는 정확한 나눗셈결과 V를 얻을 수 있다. 표 1에 [알고리즘 2]를 수행하는 한 예를 보인다. 표 1 나타나듯이 7(2m-1)번 반복 후 V는 정확한 나눗셈 결과인 x + 1을 가진다. 이를 기반으로한 GF(24)상의 나눗셈의 계산예를 살펴보면 다음의 테이블과 같다. 테이블표 (G(x)=X4+x+1, A(x)=X3+x2+x, B(x)=X3+x+1)
i state count R S U V
Init 0 0 x3+x+1 x4+x+1 x3+x2+x 0
1 1 1 X3+x2 X3+x+1 x2+x+1 X3+x2+x
2 0 0 x2+x X3+x+1 X3+x X3+x2+x
3 0 1 x+1 X3+x+1 x2+1 X3+x2+x
4 1 2 x2 x+1 x3+x2 x2+1
5 1 1 x x+1 x2+x x2+1
6 0 0 1 x+1 x+1 x2+1
7 1 1 1 1 x+1 x+1
8 0 0 0 1 0 x+1
이와같이 도 3의 나눗셈기는 컨트롤 블록 (1), 알에스-블록 (2), 에스알-블록 (3) 그리고 유브이-블록 (4)으로 구성되어있다. 각각에 해당하는 상기 블록들에서 레지스터인 State의 출력은 s 0 항상 1이고, 레지스터의 값인 rm 은 항상 0 이기 때문에 도 4에서 이 계수들을 위한 연산 회로가 필요없게 된다.도 5에 나타나듯이 도 2의 알고리즘의 count 값을 위해서 log2(m+1)-비트 카운터 대신 m-비트 양방향 쉬프트 레지스터를 사용하였다. 이렇게 함으로서 약간의 하드웨어 비용은 증가하나 높은 클락 주파수를 얻을 수 있다. 컨트롤 로직 (1)은 현재의 반복을 위해 각각의 콘트롤 신호 Ctrl1, Ctrl2, Ctrl3 그리고 c-flag의 신호를 생성하고 다음 반복을 위해 statec-flag값을 갱신한다. 1-비트 c-flag 레지스터는 에스알-블록 (2)과 함께 동작하며 나눗셈을 시작할 때 1로서 초기화된다. 도 4의 알에스-블록은 도 2의 알고리즘의 RS에 관한 연산을 수행하고 컨트롤 로직 (1)에 r 0신호를 출력한다. 도 5에 나타나듯이 양방향 쉬프트 레지스터는 state에 따라 왼쪽 혹은 오른쪽으로 쉬프트 되며, cntm 이 1일 때 count 값은 m이 된다. 또한 count가 0으로 감소하게되면, z-flag는 1이 되고 모든 cntm 은 0이 되고, c-flag는 1이 되고 state는 0이 된다. 결국 이것은 나눗셈의 첫 번째 연산 조건과 동일하게 된다. 예를 들어 도 2의 알고니즘으로 부터 나눗셈 연산을 7번 반복후 도 7의 P/U 레지스터는 정확한 나눗셈의 결과를 가지게 되며 아래의 각 단계별 회로의 동작에 의하여 충분히 이해될것이다. 표 1 GF(24)상의 나눗셈 연산 예제 (나눗셈의 경우 mult/div 신호는 1로 설정된다.)
루프(i) Control도4 RS-block도5 SR-block도6 UV-block도7
state c-flag R 레지스터 S 레지스터 SR 레지스터 cnt (c) U 레지스터 V 레지스터
r 0 r 1 r 2 r 3 s 1 s 2 s 3 s 4 sr 0 sr 1 sr 2 sr 3 c 1 c 2 c 3 c 4 u 0 u 1 u 2 u 3 v 0 v 1 v 2 v 3
초기값 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0
1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 1
2 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1
3 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 1
4 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0
5 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0
6 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
7 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0
여기서, 1) 나눗셈의 경우, 그림 6의 B/SR 레지스터는 SR로, 그림 6의P/U 레지스터는 U로, A/V레지스터는 V로 각각 표기하였다. 2) S 레지스터의 s0 비트는 항상 1이기 때문에 생략 되었다. 따라서 인덱스가 1부터 시작된다. 표 1에 기술된 바와 같이 7번의 반복 후 U레지스터는 정확한 나눗셈 결과 x + 1을 가지는 것을 확인할 수 있다. 상기와 같이 나눗셈기가 작동되며, 곱셈기도 상기와 같은 하드웨어를 그대로 이용하고 있으며, 이때 곱셈 및 나눗셈의 선택은 하기의 회로에 의하여 결정된다. 즉 본 발명은 상기와 같이 구성된 나눗셈기와, 상기 나눗셈기에서 나눗셈 또는 곱셈을 연산하기 위하여 도 6의 에스알-블록 (3)내 제어신호 (mult/div) 및 상태신호 (satae)에 의하여 멀티플렉서 (Mu0)를 제어하도록 전단에 구성되는 멀티플렉서 (Mu)와, 상기 나눗셈기에서 나눗셈 또는 곱셈을 연산하기 위하여 도 7의 유브이-블록 (4)내 콘트롤 신호 (Ctrl1),(Ctrl2),(Ctrl3), 제어신호 (mult/div) 및 플래그신호 (b1/z-flag)에 의하여 후단회로를 제어하는 멀티플렉서 (MUX1),(MUX2),(MUX3)로 구성된 것을 특징으로 한다. 즉, 도 1의 곱셈 알고니즘을 수행하기 위하여 곱셈을 위한 입력 다항식은 나눗셈과 동일한 입력 값을 사용한다고 가정하면, 정확한 곱셈 결과 P(x) = x 3이다. 도 1의 곱셈 알고리즘으로부터, 4번 반복 후 우리는 곱셈결과를 얻을 수 있다. 곱셈을 수행할 경우 제어신호 (mult/div 신호), RS블록의 RS 레지스터, 컨트롤로직의 상태신호 (state)는 각각 0으로 초기화 된다. 따라서 SR-block의 양방향 쉬프트 레지스터들은 항상 왼쪽으로 쉬프트 된다. 또한 제어신호 (mult/div 신호)가 0이기 때문에 UV-block에서는 항상 pm -1/u 0zi /z-flag(SR-block 으로부터 신호가 전달됨) 신호가 선택된다. 따라서 우리는 위의 곱셈 알고리즘을 SR-block과 UV-block을 사용하여 구현 할 수 있다. 아래의 표 2는 GF(24)상의 곱셈 연산을 수행하는 과정을 기술하였다. 표 2 GF(24)상의 곱셈 연산 예제
루프(i) Control도4 SR-block도6 UV-block도7
state B 레지스터 P 레지스터 A 레지스터
b 0 b 1 b 2 b 3 p 0 p 1 p 2 p 3 a 0 a 1 a 2 a 3
초기값 0 1 1 0 1 0 0 0 0 0 1 1 1
1 0 0 1 1 0 0 1 1 1 0 1 1 1
2 0 0 0 1 1 1 1 1 1 0 1 1 1
3 0 0 0 0 1 1 1 0 0 0 1 1 1
4 0 0 0 0 0 0 0 0 1 0 1 1 1
여기서 곱셈의 경우그림 6의 B/SR 레지스터는 B 로, 그림 7의P/U 레지스터는 P 로, A/V레지스터는 A로 각각 표기하였다. 이와같이 곱셈 또는 나눗셈의 연산시 여러가지 상태신호 및 제어신호에 의하여 레지스트의 시프트를 선택하여 연산시킬수가 있는 것으로 원하는 연산을 수행하게된다. 이때 사용되는 여러 신호들을 살펴보면, 도 6의 카운터 플래그( c-flag; count-flag)는 나눗셈 알고리즘시 카운터 (count)를 행하기 때문에 반드시 구현되어 있어 (도 2참조), 카운터 (count )의 값은 conti와 같다 (1≤ i ≤ m). 그리고 도 6에서 나눗셈을 수행할시 제어신호 (mult/div 신호)는 "1"로 설정되기 때문에 상태신호 (state)의 값에 따라 MUX(MUX의 선택신호가 0이면 0의 신호를 선택하고 1이면 1의 신호를 선택하는 회로)는 "0" 혹은 "1" 신호가 선택된다. 즉 상태신호 (state)의 값에 따라 나눗셈기에서는 왼쪽 혹은 오른쪽으로 쉬프트되므로 나눗셈 회로의 원래의 SR-block과 동일한 기능을 수행한다. 이에 반하여 곱셈의 연산의 경우는 제어신호 (mult/div) 신호가 항상 "0"이고 상태신호 (state) 역시 항상 "0"의 상태가 된다. 따라서 멀티플렉서 (Mu)는 항상 "1" 의 신호를 출력하기 때문에 B/SR 레지스터 (bn-1/sr0),(bn-2/sr1),...(b0/srm-1)는 항상 왼쪽으로만 쉬프트 되기 때문에 곱셈 회로의 상기 표2에 나타낸 B레지스터와 동일한 기능을 수행한다. 또한 도 7에서 나눗셈 연산을 수행시 제어신호 (mult/div)가 "1"이기 때문에 나눗셈 회로의 원래의 UV-block (4)과 동일한 기능을 수행하며, 곱셈 연산을 수행시 제어신호 (mult/div 신호)는 "0"이기 때문에 멀티플렉서 (MUX1),(MUX2)는 두개의 입력 신호중 "0"의 신호를 항상 선택하게 되므로 멀티플렉서 (MUX1)는 항상 신호 (pm-1/u0 신호)를 출력하고, 아래쪽 멀티플렉서 (MUX2)는 항상 신호 (bi/z-flag 신호)를 출력하게 된다. 여기서 bi/z-flag 신호는 SR-block으로부터 입력되고, Ctrl3 신호와 mult/div 신호를 입력으로 받는 멀티플렉서 (MUX3)는 제어신호 (mult/div 신호)가 항상 "0"이기 때문에 "0"을 출력하므로 도 7의 멀티플렉서 (MM0),(MM1)...(MMm-1)는 상기 표와같이 항상 P/U레지스터의 값을 출력하기 때문에 곱셈 연산 기능을 수행한다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
이상 설명한 바와 같이 표 3은 본 발명과 종래의 곱셈 및 나눗셈 장치를 비교 한 것이다.
[표 3]
기존의 나눗셈기와 본 발명 연산기의 성능 비교표
Brunner Guo 본 발명의 연산기
처리량(1/cycles) 1/2m 1/m 1/2m-1
계산지연시간(cycles) 2m 5m-4 2m-1
최대 처리기 지연시간 Tzero - detector + 2TAND2 + 2TXOR + 2TMUX2 TAND2 + 3TXOR2 + TMUX2 2TAND2 + 3TXOR2 + TXOR2
회로의 구성요소들 AND2 : 3m + log2(m + 1)XOR2 : 3m + log2(m + 1)FF : 4m + log2(m + 1)MUX2 : 8m AND2 : 16m -16XOR2 : 10m -10FF : 44m -43MUX2 : 22m - 22 AND2 : 3m + 7XOR2 : 3m + 1OR2 : 2FF : 5m + 2MUX2 : 3m + 2
트랜지스터 개수 110m + 18log2(m +1) 608m - 432 88m + 84
수행연산 나눗셈 나눗셈 곱셈/나눗셈
ANDi : i-input AND gate
XORi : i-input XOR gate
ORi : i-input OR gate
MUXi : i-to-1 multiplexer
TANDi : 한 개 ANDi gate를 통한 전송지연 시간
TXORi : 한 개 XORi gate를 통한 전송지연 시간
TMUXi : 한 개 MUXi gate를 통한 부동지연 시간
Tzero-detector : log2(m +1)-bit zero-detector의 전송지연 시간
이상 설명한 바와 같이, 본 발명은 나눗셈기 기능만을 기존의 나눗셈기들과 비교 분석한 결과, 계산 지연시간이 감소될 뿐만 아니라 하드웨어 구현을 위한 트랜지스터의 개수도 감소되었고 지금까지 유한필드 GF(2m)상의 연산기 구현을 위해서 독립된 곱셈 및 나눗셈 모듈을 사용했지만, 본 발명을 이용하면 별개의 곱셈 및 나눗셈 모듈을 사용할 필요가 없는 효과가 있으므로 스마트 카드나 무선 통신기기와 같은 저 면적을 요구하는 응용들의 암호화 시스템 구현에 매우 적합하고 필드 크기 m 에 대하여 높은 확장성 및 유연성을 가지기 때문에 유한필드 GF(2m)상의 산술연산기로 다양하게 활용되는 효과가 있으므로 암호화 시스템을 이용하는 장치산업상 매우 유용한 발명인 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 MSB(Most Significant Bit)-first 곱셈 알고리즘,
도 2는 본 발명의 바람직한 실시예에 따른 나눗셈 알고리즘,
도 3은 본 발명은 바람직한 실시예에 따른 곱셈 및 나눗셈을 모두 수행하는 산술연산기의 블록도,
도 4는 본 발명의 바람직한 실시예에 따른 상기 도 3의 컨트롤 로직부의 내부 회로도,
도 5는 본 발명의 바람직한 실시예에 따른 상기 도 3의 알에스-블록부(RS-block)의 회로도,
도 6은 본 발명의 바람직한 실시예에 따른 상기 도 3의 에스일-블록부 (SR-block)의 회로도,
도 7은 본 발명의 바람직한 실시예에 따른 상기 도 3의 유브이-블록부(UV- block)의 회로도이다.
* 도면의 주요부분에 대한 부호의 설명 *
1 : 컨트롤 로직부 2 : 알에스-블록부
3 : 에스알-블록부 4 : 유브이-블록부

Claims (1)

  1. 알고리즘의 R과 S의 값을 계산하고 출력값 r0 값을 컨트롤 로직(1)에 전송하기 위하여 다수개의 레지스터인 State (s1),(s2)....(sm), 다수개의 MUX 논리회로 (M0),(M1)....(Mm-1), 다수개의 XOR- Gate (E0),(E1),(Em-1) 및 AND Gate 회로 (A0),(A1),(Am-1)의 출력이 레지스터 (ro),(r1)...(rm-1)로 출력되는 알에스-블록(2)과, 상기 알에스-블록 (2)의 출력을 상태신호 (State) 값에 따라 양방향 레지스터 값이 오른쪽 및 왼쪽으로 이동시키기 위하여 MUX논리 회로 (MU0),(MU1),...(MUm-1)에 입력값 상태신호 (state신호) , 카운터 플래그신호 ( c-flag신호)가 입력되어 출력값을 생성하고 이렇게 생성된 출력값인 출력신호(cnt1),(cnt2),...(cntm)가 상기 MUX논리회로 (MU0),(MU1),...(MUm-1)의 입력값으로 인가되며, 상기 MUX논리회로(MU0),(MU1),...(MUm-1)의 출력값이 레지스터(bn-1/sr0),(bn-2/sr1),...(b0/srm-1)를 통하여 다음의 출력신호(cnt1),(cnt2),...(cntm)로서 MUX논리회로(MU0),(MU1),...(MUm-1)의 입력값으로 입력되는 에스알-블록(3)과, 알고리즘의 U와 V값을 계산하고 ui 및 vi 값을 컨트롤 로직(1)으로 전송하기 위하여 다수개의 MUX논리회로 (MU0),(MU1),... (MUm-1) 및 다수개의 레지스터 (a0/v0),(am-2/v1),(a1/vm-1)로 구성되어 제1, 제 2AND Gate 및 제1, 제 2 XOR Gate로 구성되는 논리부 (B1),...(Bm-2),(Bm-1)를 통하여 레지스터 (Pm-1/u0),(Pm-2/u1),...(P0/um-1)로 a0/u0 값, Pm-1/v0값을 출력하는 유브이-블록(4)과, 나눗셈을 수행하도록 상기 알에스-블록 (2), 에스알-블록(3), 유브이-블록(4)에 필요한 제어신호를 생성하도록 다수개의 ANDGate, ORGate, XOR Gater가 레지스터 (S10),(F10)와 연결된 컨트롤 로직(1)으로 구성된 나눗셈기와;
    상기 나눗셈기에서 나눗셈 또는 곱셈을 연산하기 위하여 상기 에스알-블록 (3)내 제어신호 (mult/div) 및 상태신호 (satae)에 의하여 멀티플렉서 (Mu0)를 제어하도록 전단에 구성되는 멀티플렉서 (Mu)와;
    상기 나눗셈기에서 나눗셈 또는 곱셈을 연산하기 위하여 상기 유브이-블록 (4)내 콘트롤 신호 (Ctrl1),(Ctrl2),(Ctrl3), 제어신호 (mult/div) 및 플래그신호 (b1/z-flag)에 의하여 후단회로를 제어하는 멀티플렉서 (MUX1),(MUX2),(MUX3)로 구성된 것을 특징으로 하는 유한필드상의 산술연산기.
KR10-2003-0007226A 2003-02-05 2003-02-05 유한 필드상의 산술연산기 KR100535370B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2003-0007226A KR100535370B1 (ko) 2003-02-05 2003-02-05 유한 필드상의 산술연산기
JP2003401686A JP2004240951A (ja) 2003-02-05 2003-12-01 有限フィールドGF(2m)上の算術演算器
US10/771,592 US7260594B2 (en) 2003-02-05 2004-02-03 Arithmetic logic unit over finite field GF(2m)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0007226A KR100535370B1 (ko) 2003-02-05 2003-02-05 유한 필드상의 산술연산기

Publications (2)

Publication Number Publication Date
KR20040070978A KR20040070978A (ko) 2004-08-11
KR100535370B1 true KR100535370B1 (ko) 2005-12-08

Family

ID=32822646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0007226A KR100535370B1 (ko) 2003-02-05 2003-02-05 유한 필드상의 산술연산기

Country Status (3)

Country Link
US (1) US7260594B2 (ko)
JP (1) JP2004240951A (ko)
KR (1) KR100535370B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005048525A1 (de) * 2005-10-07 2007-04-12 Micronas Gmbh Schaltungsarchitektur für eine integrierte Schaltung
CN110048387A (zh) * 2019-04-28 2019-07-23 深圳市华星光电技术有限公司 过流保护电路及显示面板

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP0917047B1 (en) * 1997-11-04 2004-10-13 Nippon Telegraph and Telephone Corporation Apparatus for modular inversion for information security
US6836784B2 (en) * 2001-01-17 2004-12-28 Matsushita Electric Industrial Co., Ltd. Efficient greatest common divisor algorithm using multiprecision arithmetic
US6763366B2 (en) * 2001-05-17 2004-07-13 Matsushita Electric Industrial Co., Ltd. Method for calculating arithmetic inverse over finite fields for use in cryptography
US7068785B2 (en) * 2002-02-05 2006-06-27 Matsushita Electric Industrial Co., Ltd. Table driven method for calculating arithmetic inverse for use in cryptography

Also Published As

Publication number Publication date
KR20040070978A (ko) 2004-08-11
US7260594B2 (en) 2007-08-21
US20040158598A1 (en) 2004-08-12
JP2004240951A (ja) 2004-08-26

Similar Documents

Publication Publication Date Title
Campobello et al. Parallel CRC realization
US6728743B2 (en) Modulo remainder generator
EP1609247B1 (en) Iterative circuit and method for variable width parallel cyclic redundancy check (crc) calculation
US9098332B1 (en) Specialized processing block with fixed- and floating-point structures
US7543011B2 (en) Montgomery modular multiplier and method thereof using carry save addition
RU2008148940A (ru) Способ и устройство кодирования с исправлением ошибок
US7571370B2 (en) Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data
EP0416869B1 (en) Digital adder/accumulator
US6301599B1 (en) Multiplier circuit having an optimized booth encoder/selector
Guo et al. Bit-serial Systolic Array Implementation Of Euclid's Algorithm For Inversion And Division In GF (2/supm)
KR100535370B1 (ko) 유한 필드상의 산술연산기
US20040167955A1 (en) Arithmetic device for multiple precision arithmetic for montgomery multiplication residue arithmetic
US20110060782A1 (en) Hardware Implementation of a Galois Field Multiplier
KR100478974B1 (ko) 직렬 유한체 승산기
US20090077145A1 (en) Reconfigurable arithmetic unit
Grossschadl A low-power bit-serial multiplier for finite fields GF (2/sup m/)
Kim et al. Computation of AB2 multiplication in GF (2m) using low-complexity systolic architecture
KR100513259B1 (ko) 유한 필드상에서의 나눗셈기
KR100953342B1 (ko) 곱셈기의 인코더
KR100450750B1 (ko) 향상된 선형 궤환 시프트 레지스터 구조의 유한체 승산기
US6662346B1 (en) Method and apparatus for reducing power dissipation in finite field arithmetic circuits
US11489544B2 (en) Fast CRC computation circuit using an on-the-fly reconfigurable generator polynomial
Pathak A review of approximate adders for energy-efficient digital signal processing
RU2115231C1 (ru) Устройство кодирования-декодирования информации
RU2149442C1 (ru) Устройство для умножения по модулю семь

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

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131127

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141203

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151203

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20161202

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20171206

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee