KR20020094440A - 유한체 곱셈장치 - Google Patents

유한체 곱셈장치 Download PDF

Info

Publication number
KR20020094440A
KR20020094440A KR1020010032625A KR20010032625A KR20020094440A KR 20020094440 A KR20020094440 A KR 20020094440A KR 1020010032625 A KR1020010032625 A KR 1020010032625A KR 20010032625 A KR20010032625 A KR 20010032625A KR 20020094440 A KR20020094440 A KR 20020094440A
Authority
KR
South Korea
Prior art keywords
bit
information
exclusive
input
bits
Prior art date
Application number
KR1020010032625A
Other languages
English (en)
Inventor
윤중철
이정엽
정석원
Original Assignee
주식회사 시큐리티테크놀로지스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 시큐리티테크놀로지스 filed Critical 주식회사 시큐리티테크놀로지스
Priority to KR1020010032625A priority Critical patent/KR20020094440A/ko
Publication of KR20020094440A publication Critical patent/KR20020094440A/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/725Finite field arithmetic over elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/58Indexing scheme relating to groups G06F7/58 - G06F7/588
    • G06F2207/583Serial finite field implementation, i.e. serial implementation of finite field arithmetic, generating one new bit or trit per step, e.g. using an LFSR or several independent LFSRs; also includes PRNGs with parallel operation between LFSR and outputs

Landscapes

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

Abstract

본 발명은 타원곡선 암호화(ECC)를 위한 유한체 곱셈기에 관한 것으로서, 제1 입력정보에 비트 '0'이 추가되어 생성된 (n+1)비트 중간정보를 미리 설정된 회수 m에 의해 정해지는 (n/m)비트씩 m번 순환 시프트시키면서 m개의 시프트 정보들을 순차적으로 생성하는 입력부와, 제1 입력정보와 제2 입력정보를 내적 연산하는 초기 내적부와, 순차적으로 생성되는 m개의 시프트 정보들 각각에 대하여 시프트 정보들 각각을 1비트씩 (n/m)번 순환 시프트시키면서 미리 정해지는 위치의 1비트가 제외된 (n/m)개의 정보들과 제2 입력정보를 내적 연산하는 내적부와, 순차적으로 생성되는 m개의 시프트 정보들 각각에 대하여 내적부의 내적 연산결과와 초기 내적부의 내적 연산결과를 배타적 논리합 연산하는 배타적 논리합 연산부와, 순차적으로 생성되는 m개의 시프트 정보들 각각에 대한 배타적 논리합 연산결과들을 조합하여 n비트 곱셈결과를 출력하는 출력부를 포함한다. 이로써 본 발명은 구조가 간단하고 크기가 작은 곱셈장치를 구현할 수 있다.

Description

유한체 곱셈장치{FINITE FIELD MULTIPLIER APPARATUS}
본 발명은 보안기술에 관한 것으로서, 특히 타원곡선 암호화(Elliptic CurveCryptographic: ECC)를 위한 유한체 GF(2n)곱셈장치에 관한 것이다.
정보화 기술이 발달함에 따라 원격통신, 네트워크, 셀룰러 통신, 무선통신, 스마트 카드, 영상통신 등의 데이터 전송의 사용이 혁신적으로 증가하고 있다. 이러한 정보 시스템 내에서 축적, 처리, 전송되는 데이터는 전기적 현상을 이용하여 디지털화 및 대용량화되고 있기 때문에, 정보에 대한 적절한 보호 조치가 없으면 전송이나 처리 또는 기억장치에 보관된 상태에서 불법 유출, 삭제 및 수정 등의 위험에 노출되기 쉽다. 정보 시스템의 정보보호를 위한 대책으로는 설비면에서의 물리적 대책, 관리, 운영면에서의 인적자원에 대한 관리대책, 기술면에서의 대책, 법제도면에서의 대책이 있을 수 있다. 그 가운데 가장 경제적이면서 정보 시스템이 요구하는 정보의 보안 수준에 따라 효율적이면서도 계층적인 보안 대책을 제공할 수 있는 방법이 기술면에서의 정보 보호 대책인 암호화를 이용하는 방법이다.
알려진 암호화 방식으로는 공통키 암호방식과 공개키 암호방식이 있다. 공통키 암호방식은 암호화와 복호화에 동일한 키를 사용하기 때문에 송신자와 수신자가 비밀 통신을 하기 전에 키를 사전 분배하여 보관하고 있어야 한다. 반면에 공개키 암호방식은 암호화키와 복호화키를 분리하여 암호화키는 공개하고 복호화키는 비밀리에 보관하도록 되어 있다. 이 방식에서는 송신자가 수신자의 공개 암호화키로 평문을 암호화하여 전송하면 수신자는 자신이 비밀리에 보관하고 있던 복호화키로 암호문을 복호화한다.
도 1은 일반적인 공개키 암호화 시스템의 블럭 구성도를 나타낸 것이다.
도 1을 참조하면, 송신자측의 암호화 장치 10과 수신자측의 복호화 장치 20은 암호 및 디지털 서명 서비스 등을 보장하기 위하여 일반적으로 널리 알려진 RSA 공개키 암호 알고리즘 또는 타원곡선 암호화 알고리즘을 사용한다. 수신자측의 복호화 장치는 수학적인 역변환에 의한 공개키와 비밀키를 연산하여 공개키는 모든 사람들이 알 수 있는 공개 게시판 22에 공지하고 개인키는 수신자측의 복호화 장치 20에서 비밀로 보관한다.
송신자측의 암호화 장치 10은 암호화하고자 하는 평문 메시지 14를 공개 게시판 12에 보관된 공개키를 이용하여 암호화한 후, 암호화된 암호문 16을 통신채널 24를 통하여 수신자측의 복호화 장치 20으로 전송한다. 수신자측의 복호화 장치 20은 자신이 공개 게시판 12에 공개한 공개키에 대응되는 비밀키로 송신측의 암호화 장치 10으로부터 제공된 암호문 16을 복호화하여 송신자측의 암호화 장치 10에서 전송한 원래의 평문 메시지 14를 복원한다.
특히 발전된 공개키 암호화 기술인 타원곡선 암호화 기술은 최근 들어 크게 주목받고 있는데 그 원리에 대해서는 미국특허 6,141,420에 상세히 개시되어 있다. 이에 따르면, 타원곡선 암호화 기술은 통상 GF(2n)로 표현되는 다항식 기저 유한체내에 있는 타원곡선을 이용하여, 상기 타원곡선 상에 있는 복수의 점 좌표들의 다중 합(Multiple Additions)으로 계산되는 상기 타원곡선 상에 있는 또 하나의 점 좌표를 구하고 상기 구해진 점 좌표와 상기 다중 합의 회수를 나타내는 n 값을 키(key)로 하여 평문 데이터를 암호화하고 암호문을 복호화한다.
이러한 타원곡선 암호화 기술은 n비트의 이진수 비트열로 표현될 수 있는 점 좌표들에 대한 합, 곱, 제곱, 역원 등의 연산들을 요구하는데 이러한 연산들은 다양한 하드웨어와 소프트웨어로 구현될 수 있다. 특히 최소 160 이상의 차수를 가지는 다항식을 계산하여야 하는 타원곡선 암호화 하드웨어에서 연산들 중 가장 큰 부분을 차지하는 것은 곱셈기이다. 통상적인 곱셈기는 구성이 간단하고 규칙적이지만 유한체에서 정의된 곱셈기는 보다 많은 구성요소들을 필요로 한다. 따라서 곱셈기의 공간 복잡도(space complexity)와 시간 복잡도(time complexity)를 최소화하는 것은 매우 중요하다.
도 2는 타원곡선 암호화를 위한 종래기술에 의한 유한체 곱셈장치의 구성을 나타낸 도면이다. 도 2를 참조하면 곱셈장치 100은 순환 시프터들 CS(Cyclic Shifters) 111, 교환기들 E(Exchanges) 113, 초기 내적기(Inner Product: IP) 115, 내적기들 IP 117, 배타적 논리합 게이트들 XOR 119로 구성된다. 도 2에서 블럭 110의 상세 구성은 도 3에 나타내었고 블럭 CS와 블럭 E의 상세 구성은 도 4에 나타내었다. 이하 도 2 내지 도 4를 참조하여 종래기술에 의한 곱셈장치의 동작에 대하여 설명한다.
곱셈장치 100은 n비트의 입력 a와 n비트의 입력 b를 곱하여 n비트의 출력 e(=a*b)를 출력한다. 이때 다항식 기반의 표현에서 입력 a는 a0+ a1x ... + an-1xn-1= (a0, ... an-1)의 형태이고 입력 b는 b0+ b1x ... + bn-1xn-1= (b0, ... bn-1)의 형태이고 출력 e는 e0+ e1x ... + en-1xn-1= (e0, ... en-1)의 형태이다. 상기의 곱셈은 하기의 절차들에 의하여 수행된다.
초기 내적기(Inner Product: IP) 115는 a와 b를 입력받아 내적값 d를 출력한다. 여기서 내적은 a와 b의 역순으로 대응하는 비트들을 각각 앤드 연산한 후 배타적 논리합(XOR) 연산하는 것이다. 내적기의 상세한 구성은 도 5에 도시될 것이다. 초기 내적기 115가 내적기들 117과 다른 점은 입력들이 (n-1)비트가 아닌 n비트라는 것이다. 내적기들 117 중 하나인 제1 내적기 IP1이 a에서 최하위 1비트를 제외한 (n-1)비트의 a'과 b에서 최하위 1비트를 제외한 (n-1)비트 b'의 내적값 c0을 구하면, 제1 배타적 논리합-게이트 XOR1은 상기 d와 상기 c0을 배타적 논리합 연산하여 e0을 출력한다.
한편 내적기들 117 중 다른 하나인 제2 내적기 IP2는, 순환 시프터들 111 중 하나인 제1 순환 시프터 CS1을 이용하여 a를 1비트 레프트 순환 시프트한 후 최하위 1비트를 제외한 (n-1)비트의 a''와, 교환기들 113 중 하나인 제1 교환기 E1을 이용하여 b의 첫 번째 비트와 두 번째 비트를 교환한 후 최하위 1비트를 제외한 (n-1)비트의 b''의 내적값 c1을 구한다. 도 4를 참조하면, i번째 순환 시프터는 (a0, a1, ... an-2, an-1)을 (ai, ai+1, ... an-1, a0, ... ai-2, ai-1)로 레프트 순환 시프트하며, i번째 교환기는 b0을 bi와 상호 교환한다. 제2 배타적 논리합 게이트 XOR2는 상기 d와 상기 c1을 배타적 논리합 연산하여 e1을 출력한다. 이러한 식으로 제1 내지 제n 배타적 논리합 게이트 XOR1 내지 XORn이 e0내지 en-1을 출력하면 a*b의 결과인 n비트 e의 계산이 완료된다.
일 예로서, 입력 a와 입력 b가 각각 172비트라고 하면 도 2의 곱셈장치는 도 5와 같이 구현된다. 도 5를 참조하면 172비트 곱셈기 200은 171개의 순환 시프터 201과 171개의 교환기 203, 1개의 초기 내적기 205, 172개의 내적기 207, 172개의 배타적 논리합 게이트 209를 가진다.
도 5를 보면, 순환 시프터들 201의 구성들은 모두 동일하며 제1 내지 제172 내적기들 207의 구성들도 동일하지만 교환기들 203의 구성은 서로 다르다. 이때 크기가 작은 곱셈기를 설계하기 위하여 도 5의 구성을 변형시킨다고 하면 순환 시프터들 201은 중복 사용할 수 있지만 교환기들 203은 중복 사용할 수 없다. 게다가 초기 내적기 205는 다른 내적기들 207과는 다른 입력을 받기 때문에 내적기들 205,207을 중복 사용하기에도 복잡한 구현상의 문제들(입력의 일치 등)이 발생하게 된다.
즉, 종래기술에 의한 곱셈기는 비교적 규칙적인 반복 구성을 가짐에도 불구하고 구성요소들을 중복 사용할 수 없었기 때문에 공간 복잡도와 시간 복잡도가 크고 단가가 비싸다는 문제점을 가지고 있었다.
따라서 상기한 바와 같이 동작되는 종래 기술의 문제점을 해결하기 위하여 창안된 본 발명의 목적은, 단순화된 구성을 가지는 유한체 곱셈장치를 제공하는 것이다.
본 발명의 다른 목적은, 내적기들을 중복 사용하여 크기를 줄일 수 있는 유한체 곱셈장치를 제공하는 것이다.
상기한 바와 같은 목적을 달성하기 위하여 창안된 본 발명의 실시예는, n비트 제1 입력정보와 n비트 제2 입력정보를 곱셈 연산하여 n비트 곱셈결과를 출력하는 유한체 곱셈장치에 있어서,
상기 제1 입력정보에 비트 '0'이 추가되어 생성된 (n+1)비트 중간정보를 미리 설정된 회수 m에 의해 정해지는 (n/m)비트씩 m번 순환 시프트시키면서 m개의 시프트 정보들을 순차적으로 생성하는 입력부와,
상기 제1 입력정보와 상기 제2 입력정보를 내적 연산하는 초기 내적부와,
상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대하여, 상기 시프트 정보들 각각을 1비트씩 (n/m)번 순환 시프트시키면서 미리 정해지는 위치의 1비트가 제외된 (n/m)개의 정보들과 상기 제2 입력정보를 내적 연산하는 내적부와,
상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대하여, 상기 내적부의 내적 연산결과와 상기 초기 내적부의 내적 연산결과를 배타적 논리합 연산하는 배타적 논리합 연산부와,
상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대한 상기 배타적 논리합 연산결과들을 조합하여 n비트 곱셈결과를 출력하는 출력부를 포함한다.
도 1은 일반적인 공개키 암호화 시스템의 블럭 구성도.
도 2는 종래기술에 의한 유한체 곱셈장치의 구성을 나타낸 도면.
도 3은 도 2에서 블럭 110의 상세 구성을 나타낸 도면.
도 4는 도 2에서 블럭 CS와 E의 상세 구성을 나타낸 도면.
도 5는 종래기술에 의한 172비트 유한체 곱셈장치의 구성을 나타낸 도면.
도 6은 본 발명을 설명하기 위한 유한체 곱셈장치의 구성을 나타낸 도면.
도 7은 도 6에서 블럭 310의 상세 구성을 나타낸 도면.
도 8은 본 발명에 따른 유한체 곱셈장치의 간략한 구성을 나타낸 도면.
도 9는 도 8의 구성을 172비트 유한체 곱셈장치로 구현한 회로도
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대한 동작 원리를 상세히 설명한다. 도면상에 표시된 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호로 나타내었으며, 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 6은 본 발명을 설명하기 위한 유한체 곱셈장치의 구성을 나타낸 도면이다. 도 6을 참조하면 곱셈장치 300은 적어도 순환 시프터들 311, 초기 내적기 313, 내적기들 315를 포함하여 구성된다. 도 6에서 블럭 310의 상세 구성은 도 7에 나타내었다. 이하 도 6 내지 도 7을 참조하여 곱셈장치 300의 동작에 대하여 설명한다.
곱셈장치 300은 n비트의 제1 입력정보 a와 n비트의 제2 입력정보 b를 곱셈 연산하여 n비트의 출력 c(=a*b)를 출력한다. 이때 곱셈장치 300은 상기 a의 최상위 비트에 비트 '0'을 추가한 (n+1)비트의 중간정보 aa를 이용한다. 다항식 기반의 표현에서 중간정보 aa는 a0+ a1x ... + an-1xn-1+ 0xn= (a0, ... an-1, 0)의 형태이고제2 입력정보 b는 b0+ b1x ... + bn-1xn-1= (b0, ... bn-1)의 형태이고 출력 c는 c = c0+ c1x ... + cn-1xn-1= (c0, ... cn-1)의 형태이다. 상기의 곱셈은 하기의 절차들에 의하여 수행된다.
초기 내적기 313은 중간정보 aa에서 최하위 비트를 제외한 n비트의 aa'와 n비트의 b를 입력받아 내적값 cn을 구한다.(도 7) 여기서 내적은 aa'와 b의 서로 역순으로 대응하는 위치의 비트들을 각각 앤드 연산한 후 배타적 논리합 연산하는 것으로 정의된다. 즉, aa' = (a1, ... an-1, 0)이고 b = (b0, ... bn-1)일 때, 초기 내적기 313은 '0'과 b0, an-1과 b1, ... a1과 bn-1을 각각 앤드 연산한 결과를 배타적 논리합 연산한다.
한편 제1 내적기 IP1은, 제1 순환 시프터 CS1을 이용하여 aa를 1비트 레프트 순환 시프트한 후 최하위 1비트를 제외한 n비트의 aa''과 n비트의 b의 내적값 c'n-1을 구한다. 도 7을 참조하면, i번째 순환 시프터는 (a0, a1, ... an-2, an-1, 0)을 (ai, ai+1, ... an-1, 0, a0, ... ai-2, ai-1)로 레프트 순환 시프트한다. 제1 배타적 논리합 게이트 XOR1은 상기 cn과 상기 c'n-1을 배타적 논리합 연산하여 cn-1을 출력한다. 이러한 식으로 제1 내지 제(n-1) 배타적 논리합 게이트가 c0내지 cn-1을 출력하면 a*b의 결과인 n비트 c = (c0, ... cn-1)의 계산이 완료된다.
상기와 같이 동작하는 도 6의 곱셈장치 300을 도 2의 곱셈장치 100과 비교하여 보면 모든 내적기들의 입력이 n비트이며 그 구성이 매우 간결하고 규칙적이다. 따라서 내적기들을 중복 사용하는 구성으로 변형시킬 수 있다.
도 8은 내적기들을 중복 사용하는 본 발명에 따른 유한체 곱셈장치의 간략한 구성을 나타낸 것이다. 도 8을 참조하면 유한체 곱셈장치 400은 입력부 410과 초기 내적부 420, 내적부 430, 배타적 논리합 연산부 440, 제어부 450, 출력부 460을 가진다. 도 9는 도 8의 구성을 172비트 곱셈장치로 구현한 회로도이다. 발명의 이해를 용이하게 하기 위하여 도 9를 참조하여 본 발명의 구성과 동작을 구체적으로 살펴보기로 한다.
도 9에서 제1 입력정보 a와 제2 입력정보 b는 각각 172비트이지만 4*1 멀티플렉서들의 사용과 데이터 버스들의 적절한 배치로 순환 시프터들을 대신함으로써 내적부 430을 4회 중복 사용할 수 있다. 참고적으로, 칩 설계 및 버스 배치의 편의를 위하여 172비트의 a는 비트스왑(bit-swap)되었다. 즉, a[0:171]은 비트스왑된 a[171:0]이 되었고 비트스왑된 a[171:0]의 최하위에 '0'을 추가하면 비트스왑된 aa가 된다. 또한 곱셈장치 400은 곱셈결과의 최하위 비트 e0부터 계산하도록 설계되었다. 이는 순환 시프트 방향을 반대로 함으로써 이루어진다.
CLK는 곱셈장치 400을 동작시키는 시스템 클럭 신호이며 mul_enable은 곱셈장치 400을 시동하는 이네이블 신호이고 RST_N은 출력부 460내의 레지스터들을 초기화시키는 리셋 신호이다. mul-enable 신호에 의하여 동작명령이 내려지면 곱셈장치 400은 입력 a와 입력 b를 받아들인다. 이때 a는 단순히 신호 버스의 재배치에 의하여 비트스왑되며 최상위에 '0'이 추가된다.(즉 비트스왑된 aa)
입력부 410은 각각 제1 내지 제4 입력포트를 가지는 173개의 멀티플렉서들 MUX1 내지 MUX173으로 구성된다. 멀티플렉서들 MUX1 내지 MUX173의 제1 입력포트들로는 aa의 각 비트들 aa[172], aa[171], aa[170], ...aa[2], aa[1], aa[0]이 하나씩 입력되고, 제2 입력포트들로는 43회 레프트 순환 시프트된 aa의 각 비트들 aa[129], aa[128], aa[127], ...aa[132], aa[131], aa[130]이 하나씩 입력되고, 제3 입력포트들로는 43*2회 레프트 순환 시프트된 aa의 각 비트들 aa[86], aa[85], aa[84], ...aa[89], aa[88], aa[87]이 하나씩 입력되고, 제4 입력포트들로는 43*3회 레프트 순환 시프트된 aa의 각 비트들 aa[43], aa[42], aa[41], ...aa[46], aa[45], aa[44]가 하나씩 입력된다. 이러한 구성은 매 버스 사이클에서 0*43회 내지 3*43회 레프트 순환 시프트된 4개의 173비트 시프트 정보 c[172:0]을 순차적으로 출력한다.
초기 내적부 420은 172비트 a와 172비트 b에 대한 내적 연산결과 d_out을 구한다.
내적부 430은 제1 내지 제43 내적기들 IP1 내지 IP43으로 구성되며, 버스 배치를 이용하여 순환 시프트를 수행하고 내적을 구한다. 입력부 410으로부터 제공되는 173비트의 시프트 정보 c[173:0]은 각 내적기들 IP1 내지 IP43내에서 버스 배치에 의하여 1비트씩 레프트 순환 시프트된다. 내적기들 IP1 내지 IP43은 0 내지 42회 레프트 순환 시프트된 c에서 최상위 비트를 제외한 하위 172비트의 정보와 b에대한 내적 연산결과 d[0], d[1], ...d[41], d[42]를 구한다.
배타적 논리합 연산부 440은 제1 내지 제43 배타적 논리합 게이트들 XOR1 내지 XOR43으로 구성된다. 배타적 논리합 게이트들 XOR1 내지 XOR43 각각은 IP1 내지 IP43로부터 출력된 내적 연산결과 d[0], d[1], ...d[41], d[42] 각각과 상기 초기 내적부 420으로부터 출력된 내적 연산결과 d_out을 배타적 논리합 연산하여 배타적 논리합 연산결과 d'[0], d'[1], ...d'[41], d'[42]를 출력한다.
제어부 450은 입력부 410의 멀티플렉서들 MUX1 내지 MUX173에게 2비트 선택신호 mux_xel을 제공하여 현재 클럭 사이클에 해당하는 시프트 정보를 선택하여 출력하도록 하며 또한 출력부 460의 입출력을 제어한다.
출력부 460은 제1 내지 제3 레지스터들 R1 내지 R3으로 구성된다. 각각의 레지스터들 R1 내지 R3은 해당하는 버스 사이클에서 배타적 논리합 게이트들 XOR1 내지 XOR43으로부터 출력되는 배타적 논리합 연산결과 e[0], e[1], ...e[41], e[42]를 저장하고, 곱셈이 완료되면 배타적 논리합 연산결과들을 조합하여 출력한다.
상기와 같이 구성되는 도 9에서 곱셈은 하기의 절차들에 의하여 수행되는데, 여기서 곱셈을 완료하기 위해서는 4개의 클럭 사이클이 필요함에 유의하여야 한다.
매 클럭 사이클마다 초기 내적부 420은 172비트의 제1 입력정보 a와 172비트의 제2 입력정보 b를 내적한다. 여기서 초기 내적부 420은 a와 b의 대응하는 위치의 비트들을 각각 앤드 연산한 후 배타적 논리합 연산한다. 즉, a = (an-1, ... a0)이고 b = (bn-1, ... b0)일 때, 초기 내적부 420은 an-1과 bn-1, an-2과 bn-2, ... a0와b0을 각각 앤드 연산한 결과를 배타적 논리합 연산하여 내적 연산결과 d_out을 출력한다.
제1 클럭 사이클에서, 제어부 450은 입력부 410으로 제공되는 mux_sel 신호를 "00"으로 초기화하여 멀티플렉서들 MUX1 내지 MUX173이 제1 입력포트의 aa[172:0]을 선택하여 c[172:0]으로서 출력하도록 한다. 내적부 430의 제1 내적기 IP1은 버스 배치를 이용하여 상기 c[172:0]을 1회 레프트 순환 시프트한 후 최상위 1비트를 제외한 172비트 c'과 172비트 b의 내적 연산결과 d[0]을 구한다. 배타적 논리합 연산부 440의 제1 배타적 논리합 게이트 XOR1은 상기 d_out와 상기 d[0]을 배타적 논리합 연산하여 d'[0]을 출력한다. 제2 내적기 IP2는 버스 배치를 이용하여 상기 c[172:0]을 2회 레프트 순환 시프트한 후 최상위 1비트를 제외한 172비트 c''과 172비트 b의 내적 연산결과 d[1]을 구한다. 제2 배타적 논리합 게이트 XOR2은 상기 d_out와 상기 d[1]을 배타적 논리합 연산하여 d'[1]을 출력한다. 이러한 식으로 제1 내지 제43 배타적 논리합 게이트가 d'[0] 내지 d'[42]를 출력하면, 제어부 450은 reg_0_enable 신호를 이용하여 출력부 460의 제1 레지스터 R1을 쓰기 이네이블함으로써, 배타적 논리합 연산부 440에서 출력된 d'[0:42]를 제1 레지스터 R1에 저장한다. 제1 레지스터 R1에 저장된 값은 e[42:0]으로서 출력될 것이다.
제2 클럭 사이클에서, 제어부 450은 입력부 410으로 입력되는 mux_sel 신호를 "01"로 초기화하여 멀티플렉서들 MUX1 내지 MUX173이 제2 입력포트의 (aa129, ...aa130)를 선택하여 c[172:0]으로서 출력하도록 한다. 내적부 430의 제1 내적기IP1은 버스 배치를 이용하여 상기 c[172:0]를 1회 레프트 순환 시프트한 후 최상위 1비트를 제외한 172비트 c'과 172비트 b의 내적 연산결과 d[0]을 구한다. 제1 배타적 논리합 게이트 XOR1은 상기 d_out와 상기 d[0]을 배타적 논리합 연산하여 d'[0]을 출력한다. 이러한 식으로 제1 내지 제43 배타적 논리합 게이트가 d'[0] 내지 d'[42]를 출력하면, 제어부 450은 reg_1_enable 신호를 이용하여 제2 레지스터 R2을 쓰기 이네이블함으로써, 배타적 논리합 연산부 440에서 출력된 d'[0:42]를 제2 레지스터 R2에 저장한다. 제2 레지스터 R2에 저장된 값은 e[85:43]으로서 출력될 것이다.
제3 클럭 사이클에서, 제어부 450은 입력부 410으로 입력되는 mux_sel 신호를 "10"으로 초기화하여 멀티플렉서들 MUX1 내지 MUX173이 제3 입력포트의 (aa86, ...aa87)를 선택하여 c[172:0]으로서 출력하도록 한다. 내적부 430의 제1 내적기 IP1은 버스 배치를 이용하여 상기 c[172:0]을 1비트 레프트 순환 시프트한 후 최상위 1비트를 제외한 172비트의 c'과 172비트 b의 내적 연산결과 d[0]을 구한다. 제1 배타적 논리합 게이트 XOR1은 상기 d_out와 상기 d[0]을 배타적 논리합 연산하여 d'[0]을 출력한다. 이러한 식으로 제1 내지 제43 배타적 논리합 게이트가 d'[0] 내지 d'[42]를 출력하면, 제어부 450은 reg_2_enable 신호를 이용하여 제3 레지스터 R3을 쓰기 이네이블함으로써, 배타적 논리합 연산부 440에서 출력된 d'[0:42]를 제3 레지스터 R3에 저장한다. 제3 레지스터 R3에 저장된 값은 e[128:86]으로서 출력될 것이다.
마지막으로 제4 클럭 사이클에서, 제어부 450은 입력부 410으로 입력되는 mux_sel 신호를 "11"로 초기화하여 멀티플렉서들 MUX1 내지 MUX173이 제4 입력포트인 (aa43, ...aa44)을 선택하여 c[172:0]으로서 출력하도록 한다. 내적부 430의 제1 내적기 IP1은 버스 배치를 이용하여 상기 c[172:0]을 1비트 레프트 순환 시프트한 후 최상위 1비트를 제외한 172비트의 c'과 172비트 b의 내적 연산결과 d[0]을 구한다. 제1 배타적 논리합 게이트 XOR1은 상기 d_out와 상기 d[0]을 배타적 논리합 연산하여 d'[0]을 출력한다. 이러한 식으로 제1 내지 제43 배타적 논리합 게이트가 d'[0] 내지 d'[42]를 출력하면, 제어부 450은 곱셈이 완료된 것으로 판단한다. 제 4 클럭 사이클에서 출력된 d'[0:42]는 e[171:129]로서 출력될 것이다.
곱셈이 완료되는 제4 클럭 사이클에서 제어부 450은 reg_0_enable, reg_1_enable, reg_2_enable 신호를 이용하여 제1 내지 제3 레지스터를 읽기 이네이블함으로써, 제1 내지 제3 클럭 사이클에서 제1 내지 제3 레지스터에 저장된 값들을 제4 클럭 사이클에서 출력된 d'[0:42], 즉 e[171:129]와 조합하여 최종 결과값인 e[171:0]을 출력한다.
한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 예를 들어 상기한 실시예에서 내적부를 단지 2회만 중복 사용한다고 하면 필요한 내적기들의 개수는 172/2=86개가 될 것이다. 또한 이 분야의 기술에 숙련된 당업자라면 본 발명의 상세한 설명으로부터 내적부를 m번 중복 사용하는 임의의 n비트 곱셈장치를 용이하게 구현할 수 있을 것이다. 이 경우 필요한 내적기들의 개수는 n/m개이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되지 않으며, 후술되는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
이상에서 상세히 설명한 바와 같이 동작하는 본 발명에 있어서, 개시되는 발명중 대표적인 것에 의하여 얻어지는 효과를 간단히 설명하면 다음과 같다.
본 발명은 곱셈장치 하드웨어의 구성에서 가장 큰 크기를 가지는 내적기들을 중복 사용하도록 함으로써 시간지연을 가지는 대신 구조가 간단하고 크기가 작은 곱셈장치를 구현할 수 있는 효과가 있다.

Claims (9)

  1. n비트 제1 입력정보와 n비트 제2 입력정보를 곱셈 연산하여 n비트 곱셈결과를 출력하는 유한체 곱셈장치에 있어서,
    상기 제1 입력정보에 비트 '0'이 추가되어 생성된 (n+1)비트 중간정보를 미리 설정된 회수 m에 의해 정해지는 (n/m)비트씩 m번 순환 시프트시키면서 m개의 시프트 정보들을 순차적으로 생성하는 입력부와,
    상기 제1 입력정보와 상기 제2 입력정보를 내적 연산하는 초기 내적부와,
    상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대하여, 상기 시프트 정보들 각각을 1비트씩 (n/m)번 순환 시프트시키면서 미리 정해지는 위치의 1비트가 제외된 (n/m)개의 정보들과 상기 제2 입력정보를 내적 연산하는 내적부와,
    상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대하여, 상기 내적부의 내적 연산결과와 상기 초기 내적부의 내적 연산결과를 배타적 논리합 연산하는 배타적 논리합 연산부와,
    상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대한 상기 배타적 논리합 연산결과들을 조합하여 n비트 곱셈결과를 출력하는 출력부를 포함함을 특징으로 하는 상기 곱셈장치.
  2. 제 1 항에 있어서, 상기 입력부는 상기 중간정보를 (n/m)*(i-1)비트씩 시프트시킨 시프트 정보를 순차적으로 생성하며, 여기서 상기 i는 상기 m보다 작거나 같은 양의 정수임을 특징으로 하는 상기 곱셈장치.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 입력부는 상기 m개의 (n+1)비트 시프트 정보들의 각 비트들을 입력받아 순차적으로 생성하는 (n+1)개의 m*1 멀티플렉서들로 구성됨을 특징으로 하는 상기 곱셈장치.
  4. 제 1 항에 있어서, 상기 멀티플렉서들로 상기 m개의 (n+1)비트 시프트 정보들의 각 비트들을 선택하기 위한 선택신호를 제공하는 제어부를 더 포함함을 특징으로 하는 상기 곱셈장치.
  5. 제 1 항에 있어서, 상기 내적부는 상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대한 내적 연산을 m번 중복 수행하는 (n/m)개의 내적기들로 구성됨을 특징으로 하는 상기 곱셈장치.
  6. 제 5 항에 있어서, 상기 (n/m)개의 내적기들 중 i번째 내적기는 상기 m개의시프트 정보들 각각을 (i-1)비트만큼 순환 시프트시키며, 여기서 상기 i는 n/m보다 작거나 같은 양의 정수임을 특징으로 하는 상기 곱셈장치.
  7. 제 1 항에 있어서, 상기 배타적 논리합 연산부는 상기 순차적으로 생성되는 m개의 시프트 정보들 각각에 대한 배타적 논리합 연산을 m번 중복 수행하는 (n/m)개의 배타적 논리합 게이트들로 구성됨을 특징으로 하는 상기 곱셈장치.
  8. 제 1 항에 있어서, 상기 출력부는 상기 배타적 논리합 연산결과들을 순차적으로 저장하는 (m-1)개의 레지스터들을 구비하고, 최종 배타적 논리합 연산이 완료되면 상기 레지스터들에 저장된 배타적 논리합 연산결과들과 상기 최종 배타적 논리합 연산결과를 조합하여 출력함을 특징으로 하는 상기 곱셈장치.
  9. 제 8 항에 있어서, 상기 레지스터들의 읽기 및 쓰기 동작을 제어하는 제어부를 더 포함함을 특징으로 하는 상기 곱셈장치.
KR1020010032625A 2001-06-11 2001-06-11 유한체 곱셈장치 KR20020094440A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010032625A KR20020094440A (ko) 2001-06-11 2001-06-11 유한체 곱셈장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010032625A KR20020094440A (ko) 2001-06-11 2001-06-11 유한체 곱셈장치

Publications (1)

Publication Number Publication Date
KR20020094440A true KR20020094440A (ko) 2002-12-18

Family

ID=27708630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010032625A KR20020094440A (ko) 2001-06-11 2001-06-11 유한체 곱셈장치

Country Status (1)

Country Link
KR (1) KR20020094440A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100444905B1 (ko) * 2001-12-17 2004-08-21 이용석 유한체 곱셈기
US7539719B2 (en) 2003-10-16 2009-05-26 Samsung Electronics Co., Ltd. Method and apparatus for performing multiplication in finite field GF(2n)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100444905B1 (ko) * 2001-12-17 2004-08-21 이용석 유한체 곱셈기
US7539719B2 (en) 2003-10-16 2009-05-26 Samsung Electronics Co., Ltd. Method and apparatus for performing multiplication in finite field GF(2n)

Similar Documents

Publication Publication Date Title
Chen et al. A symmetric image encryption scheme based on 3D chaotic cat maps
CA2244337C (en) Encryption processor with shared memory interconnect
US6831979B2 (en) Cryptographic accelerator
US8301905B2 (en) System and method for encrypting data
Karthigaikumar et al. Simulation of image encryption using AES algorithm
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
GB2453367A (en) Cryptographic processing using isomorphic mappings of Galois fields
Singh et al. An efficient hardware design and implementation of advanced encryption standard (AES) algorithm
GADED et al. Composite field arithematic based s-box for aes algorithm
US20040223609A1 (en) Data encryption method
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
KR20020094440A (ko) 유한체 곱셈장치
CN110071927B (zh) 一种信息加密方法、系统及相关组件
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
KR100494560B1 (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
JP5578422B2 (ja) 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム
ES2293665T3 (es) Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits.
JP2002358012A (ja) 情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置
RU2097931C1 (ru) Способ шифрования двоичной информации и устройство для его осуществления
KR20190041900A (ko) 암호화 장치 및 복호화 장치, 이들의 동작방법
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム
US20240187209A1 (en) Data encryption and decryption using screens and lfsr-generated logic blocks
CN101093627B (zh) 密码编译码装置
CA2617389C (en) Encryption processor with shared memory interconnect
JP2005529365A (ja) Aesミックスカラム変換

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application