KR20040055550A - 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 - Google Patents

유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 Download PDF

Info

Publication number
KR20040055550A
KR20040055550A KR1020030013788A KR20030013788A KR20040055550A KR 20040055550 A KR20040055550 A KR 20040055550A KR 1020030013788 A KR1020030013788 A KR 1020030013788A KR 20030013788 A KR20030013788 A KR 20030013788A KR 20040055550 A KR20040055550 A KR 20040055550A
Authority
KR
South Korea
Prior art keywords
multiplier
elements
modular
multiplication
parallel
Prior art date
Application number
KR1020030013788A
Other languages
English (en)
Other versions
KR100457177B1 (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 한국전자통신연구원
Publication of KR20040055550A publication Critical patent/KR20040055550A/ko
Application granted granted Critical
Publication of KR100457177B1 publication Critical patent/KR100457177B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B33/00Constructional parts, details or accessories not provided for in the other groups of this subclass
    • G11B33/02Cabinets; Cases; Stands; Disposition of apparatus therein or thereon
    • G11B33/04Cabinets; Cases; Stands; Disposition of apparatus therein or thereon modified to store record carriers
    • G11B33/0405Cabinets; Cases; Stands; Disposition of apparatus therein or thereon modified to store record carriers for storing discs
    • G11B33/0433Multiple disc containers
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47BTABLES; DESKS; OFFICE FURNITURE; CABINETS; DRAWERS; GENERAL DETAILS OF FURNITURE
    • A47B88/00Drawers for tables, cabinets or like furniture; Guides for drawers
    • A47B88/40Sliding drawers; Slides or guides therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs
    • G11B2220/2545CDs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs
    • G11B2220/2562DVDs [digital versatile discs]; Digital video discs; MMCDs; HDCDs

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은, 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, 유한체 상의 곱하려는 두 원소 A(x), B(x)중 임의의 한 원소 B(x)를 두 부분으로 나누어 각각 원소 A(x)와 부분곱셈을 한 후, 상기 연산된 각각의 결과를 재차 모듈러 감산하여 보다 빠르게 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기를 제공하는데 그 목적이 있음.
3. 발명의 해결방법의 요지
본 발명은, 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기에 있어서, 병렬로 승수 데이터를 입력받아 선택신호에 따라 교차적으로 제 1 승수 데이터 및 제 2 승수 데이터를 출력하기 위한 다중화 수단; 상기 다중화 수단으로부터 전송받은 제 1 승수 데이터와 외부로부터 입력받은 피승수 데이터를 부분곱 연산한 후 모듈러 연산하여 제 1 연산값을 출력하고, 상기 다중화 수단으로부터 전송받은 제 2 승수 데이터와 상기 외부로부터 입력받은 피승수 데이터를 부분곱 연산한 후 모듈러 연산하여 제 2 연산값을 출력하기 위한 반곱셈 수단; 주기가 상기 선택신호의 2배인 클럭에 따라 상기 반곱셈 수단에 의해 연산된 제 1 연산값을 제 1 주기에서 저장하고 제 2 주기에서 출력하기 위한 저장 수단; 및 상기 반곱셈 수단으로부터입력받은 제 2 연산값과 상기 저장 수단으로부터 입력받은 제 1 연산값을 모듈러 감산하기 위한 모듈러 감산 수단을 포함한다.
4. 발명의 중요한 용도
본 발명은 타원곡선 암호시스템 등에 이용됨.

Description

유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기{Serial-Parallel Multiplier to Multiply Two Elements in the Finite Field}
본 발명은 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기에 관한 것으로, 더욱 상세하게는 유한체 상의 곱하려는 두 원소인 피승수(A(x))와 승수(B(x))중 승수(B(x))를 두 부분으로 나누어 각각 피승수(A(x))와 부분곱셈을 한 후, 상기 연산된 각각의 결과를 재차 모듈러 감산하여 보다 빠르게 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기에 관한 것이다.
컴퓨터시스템과 네트웍이 증가하면서 전자 정보 교환이 급속히 확산되고 사회 전반에 걸쳐 컴퓨터 시스템의 이용이 증가하여 정보 처리 능력이 증대되고 있다. 이에 따라 현대 사회는 정보화 사회라고 불리울 만큼 정보의 효율적 이용이 중요하게 인식되고 있다. 그러나, 현재의 컴퓨터 및 네트웍의 기반을 이루는 디지털 기술은 데이터의 도용, 변경, 삭제 등이 용이해 개인의 정보 보호뿐만 아니라 기업이나 국가의 보안에 많은 문제점을 야기할 수 있다.
이를 해결하기 위하여 암호 기술이 필요하게 되었고, 정보의 암호화와 전자서명 및 인증을 통하여 정보의 원하지 않는 누출을 막을 수 있으며, 전자상거래 등과 같은 새로운 문화를 가능하게 만들었다.
인류가 암호를 처음 사용한 것은 4000년 전으로 추정되고, 체계적인 암호 방식을 사용한 것은 기원전(B.C) 2000년 경 줄리우스 시져(Julius Caesar)라고 알려져 있다. 그러나, 그 형태가 최근에 이르기까지 모두 동일하였다. 즉, 평문(plain-text)을 알아볼 수 없는 암호문(cipher-text)으로 변형시키는데 사용되는 키(key)와 암호문을 다시 알아볼 수 있는 형태의 복호문으로 바꾸는데 사용되는 키가 같았다. 이러한 방식의 암호시스템을 대칭적 암호시스템(symmetric cryptosystem) 또는 비밀키 암호시스템(secret-key cryptosystem)이라고 한다.
그러나, 대칭적 암호시스템은 두 가지 커다란 단점을 가지고 있다. 첫째, 정보를 비밀리에 교환하고자 하는 사람들은 키를 공유해야 하므로 별도의 안전한 정보전송 통로를 필요로 한다는 점이다. 이로 인해 비밀 정보를 공유하고자 하는 집단이 많아질수록 비밀키의 개수는 기하 급수적으로 증가하게 되므로, 이의 관리에 많은 문제점이 생길 수 있다. 또 다른 단점은 최근들어 그 활용도가 중요해진 전자서명(digital signature)을 효과적으로 구현할 수 없다는 점이다.
이러한 문제점들을 해결하기 위해서, 1976년에 디피(Diffie)와 헬맨 (Hellman)이 공개키 암호시스템(public-key cryptosystem)을 제안하였다. 공개키 암호시스템에서는 암호화(encryption)와 복호화(decryption)에서 사용하는 키를 구분하여 암호화에 사용하는 키를 공개키(public-key), 복호화에 사용하는 키를 개인키(private-key)라고 하며, 공개키는 모든 사람에게 공개하고 개인키는 자신만이 알고 있도록 관리한다.
공개키 암호시스템의 안전성은 단방향 함수(one-way function)에 근거를 두고 있으며, 알에스에이(RSA)와 엘가멜(ElGamal) 암호법으로 대표된다. 단방향 함수란 한쪽 방향으로의 계산은 쉬운 반면, 반대 방향의 계산은 매우 힘든 함수를 말한다. 예를 들어, 알에스에이(RSA) 암호법의 기반이 되는 단방향 함수는 정수의 소인수분해 문제로서, 매우 큰 두 소수 p와 q의 곱 n = pq가 주어졌을 때 이를 다시 p와 q로 소인수분해하기 힘들다는 사실을 가정하고 있다.
기존의 공개키 암호시스템에서 사용하던 단방향 함수는 여러가지 공격방법이 연구되어 개인키를 모르고도 암호문을 해독할 수 있게 되었다. 이러한 공격을 막기위한 대책은 아직까지는 키의 길이를 증가시키는 방법이 유일하며, 현재는 1024 비트 정도가 되어야 안전한 것으로 알려져 있다. 그러나, 키의 길이를 계속해서 증가시키면 그만큼 키를 관리하는데 어려움이 커지고 암호화나 복호화에 걸리는 계산 시간이 늘어나는 단점이 있다. 이로 인해, 공개키 암호시스템의 개념적 장점에도 불구하고 다양한 용도에 활용되지 못하고 있다. 특히, 스마트카드(smart card), 이동 단말기 등과 같이 기억 용량과 계산 능력이 부족한 환경에서는 공개키 암호시스템을 사용하기 힘들다.
이상과 같은 문제점을 극복하기 위해서 다양한 단방향 함수들이 제안되어, 새로운 공개키 암호시스템을 만들기 위한 연구가 많이 진행되어 왔지만, 대부분 안전성이나 실용성을 인정받지 못했다. 이 중 타원곡선 상에서의 이산 대수 문제를 기반으로하는 타원곡선 암호시스템은 높은 보안성과 다양한 특성으로 인해서 최근까지 많은 연구의 대상이 되었다.
타원곡선 암호시스템의 가장 큰 장점은 140 ~ 200 비트의 키로도, 기존의 알에스에이(RSA)나 엘가멜(ElGamal) 암호시스템에서 512 ~ 1024 비트의 키로 얻을 수 있는 보안성을 제공할 수 있다는 점이다. 또한, 타원곡선의 매개 변수만 변화시켜서 새로운 암호시스템을 만드는 것이 용이하여, 각각의 집단에서 각기 다른 암호체제를 구축할 수 있다. 이밖에도 기존의 공개키 암호시스템이 제공하는 기밀성(confidentiality), 사용자 인증(entity authentication), 자료의 무결성 (data integrity), 부인 방지(non-repudiation) 및 인증된 키 교환(authenticated key exchange)과 같은 제반 정보 보호 서비스를 제공할 수 있다.
타원곡선 암호시스템(elliptic curve cryptosystem)은 1985년에 코블리츠 (Koblitz)와 뮐러(Miller)에 의하여 각각 독자적으로 제안되었다. 타원곡선 암호의 기본 아이디어는 유한체(finite field)의 이산대수(discrete logarithm)에서 사용하는 곱셈군(multiplicative group) Fq*을 타원곡선의 덧셈군(additive group)으로 바꾸어 사용하는 것이다. 하지만, 이 암호가 처음 제안될 당시에는 타원곡선군 위에서의 연산이 너무 어려워 뮐러(Miller)와 코블리츠(Koblitz) 자신들도 타원곡선 암호를 비실용적인 것으로 보았다. 그러나, 이후 많은 수학자와 암호학자들의 연구에 의해 타원곡선위에서의 연산이 쉽게 구현될 수 있게 되었다.
타원곡선 암호시스템의 성능을 향상시키기 위한 연구는 크게 두 가지로 나누어 볼 수 있다. 첫째는 타원곡선 군(group)의 연산을 효율적으로 수행할 수 있도록 하는 상위 계층(high-level) 알고리즘의 개발로서, 이러한 방식은 기존의 암호시스템에 대한 연구에서 모듈러 멱승 등을 빠르게 수행하기 위한 방법들과 크게 다르지 않으므로 기존의 알고리즘들을 타원곡선에 적용시키려는 접근 방법으로 볼 수 있다. 둘째는 하위 계층(low-level) 알고리즘 개발로 분류할 수 있는 연구들로서, 타원곡선이 정의되는 유한체(finite field)에서의 연산을 효율적으로 수행하고자 하는 연구들이 이에 속하며, 본 발명 역시 이에 속한다.
타원곡선 암호시스템을 위한 하드웨어 연산기의 연구는 타원곡선이 사용하는 유한체의 선택에 따라 다양성을 갖고 있다. 여기서, 유한체란 유한한 개수의 원소를 갖는 체(Field)로서, 체는 덧셈과 곱셈에 대해 닫혀있는 가환군(abelian)이고, 유한체는 덧셈과 곱셈에 대한 역원과 항등원이 존재하며, 교환법칙과 결합법칙이 성립한다고 정의되며, 그 종류로는 크게 정수 n에 대해 원소의 개수가개인 이진체(binary field)와 소수(p>2)에 대해 원소의 개수가 p개인 소수체(prime field)로 나눌 수 있다.
또한, 하드웨어 연산기는 유한체를 생성하는 기약다항식으로 이항다항식 (binomial), 삼항다항식(trinomial), 오항다항식 (pentanomial), AOP(all one polynomial) 중에서 어떤 것을 선택하느냐에 따라 그 구조가 달라진다. 그리고, 같은 기약다항식을 사용하더라도 원소를 표현하기 위해 사용하는 기저를 정규기저, 다항식기저, 쌍대기저 등 무엇을 선택하느냐에 따라 연산기의 장단점이 발생한다. 타원곡선용 하드웨어 연산기는 생성 기약다항식과 기저 선택 후에 유한체 구조의 특성에 따라 직렬연산기, 병렬연산기 또는 직렬-병렬연산기의 구조를 갖는다.
한편, 직렬곱셈기는 공간복잡도(space complexity)의 우수성으로 인해 주로환경의 제약이 많은 단말기나 스마트 카드용으로 개발되고 있고, 병렬곱셈기는 시간복잡도(time complexity)의 우수성으로 인해 고속 연산용으로 개발되고 있다. 직렬-병렬 곱셈기는 최근 몇 년 동안 유한체의 차수가 합성수 nk인 경우위의 n차 확장체로 생각하여 부분체의 연산은 병렬로 처리하고, 전체적으로는 직렬로 처리하는 방식으로, 직렬곱셈기(serial multiplier)보다는 시간 복잡도가 적고, 병렬곱셈기(parallel multiplier)보다는 공간복잡도가 작은 우수한 구조로 인식되고 있다.
하지만, 현재까지 제안된 직렬-병렬(Serial-Parallel) 곱셈기는 두 부분으로 나누어 병렬로 입력되는 승수 데이터를 반곱셈하는 과정이 없기 때문에 유한체의 차수가 합성수인 경우에만 그 연산이 가능하다는 단점이 있을 뿐만 아니라, 실제 계산 시간이 짧지 않다는 문제점도 있다.
본 발명은 상기 문제점을 해결하기 위하여 제안된 것으로, 유한체 상의 곱하려는 두 원소인 피승수(A(x))와 승수(B(x))중 승수(B(x))를 두 부분으로 나누어 각각 피승수(A(x))와 부분곱셈을 한 후, 상기 연산된 각각의 결과를 재차 모듈러 감산하여 보다 빠르게 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기를 제공하는데 그 목적이 있다.
도 1 은 본 발명에 따른 유한체의 차수가 짝수인 경우에 이용되는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 일실시예 구성도.
도 2 는 본 발명에 따른 유한체의 차수가 홀수인 경우에 이용되는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 일실시예 구성도.
도 3 은 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 반곱셈부에 대한 일실시예 상세 구성도.
도 4 는 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 곱셈행렬 생성부에 대한 일실시예 상세 회로도.
도 5 는 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 선택부에 대한 일실시예 상세 회로도.
도 6 은 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 내적부에 대한 일실시예 상세 회로도.
도 7 은 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 모듈러 감산부에 대한 일실시예 상세 회로도.
* 도면의 주요 부분에 대한 부호의 설명
11, 21 : 다중화부 12, 22 : 반곱셈부
13, 23 : 저장부 14, 24 : 모듈러 감산부
상기 목적을 달성하기 위한 본 발명의 장치는, 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기에 있어서, 병렬로 승수 데이터를 입력받아 선택신호에 따라 교차적으로 제 1 승수 데이터 및 제 2 승수 데이터를 출력하기 위한 다중화 수단; 상기 다중화 수단으로부터 전송받은 제 1 승수 데이터와 외부로부터 입력받은 피승수 데이터를 부분곱 연산한 후 모듈러 연산하여 제 1 연산값을 출력하고, 상기 다중화 수단으로부터 전송받은 제 2 승수 데이터와 상기 외부로부터 입력받은 피승수 데이터를 부분곱 연산한 후 모듈러 연산하여 제 2 연산값을 출력하기 위한 반곱셈 수단; 주기가 상기 선택신호의 2배인 클럭에 따라 상기 반곱셈 수단에 의해 연산된 제 1 연산값을 제 1 주기에서 저장하고 제 2 주기에서 출력하기 위한 저장 수단; 및 상기 반곱셈 수단으로부터 입력받은 제 2 연산값과 상기 저장 수단으로부터 입력받은 제 1 연산값을 모듈러 감산하기 위한 모듈러 감산 수단을 포함하는 것을 특징으로 한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
도 1 은 본 발명에 따른 유한체의 차수가 짝수인 경우에 이용되는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 일실시예 구성도이다.
본 발명에 따른 유한체의 차수가 짝수인 경우에 이용되는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 구성을 설명하기 앞서 다음과 같은 정의를 한다.
n은 자연수이고, n/2보다 작은 k에 대해 n차 삼항 기약다항식 P(x)는 하기의 [수학식 1]과 같다.
+ +1
그리고, 유한체을 만들었을 때, 두 원소 A(x)(승수 데이터), B(x)(피승수 데이터)는 하기의 [수학식 2]와 같다. 여기서, 최종 구하려는 식은 A(x)B(x) mod P(x) 이다.
,
B(x) =
그리고, n이 짝수(n=2m)이면 A(x), B(x)는 하기의 [수학식 3]과 같다.
,
B(x) =이다.
여기서, 직렬-병렬 구조를 만들기 위하여 입력 B(x)를 두 부분으로 나누면 하기의 [수학식 4]와 같다.
또한, 다항식 기저로 A(x)와 b(x)를 표현하면 하기의 [수학식 5]와 같다.
, , ... , , ),
B(x) = (,, ... ,,, ... ,,)
그리고, [수학식 5]의 B(x)를으로 묶어내면 하기의 [수학식 6]과 같다.
여기서,=,=라 하면 B(x)는 하기의 [수학식 7]과 같다. 여기서,은 제 1 승수 데이터,는 제 2 승수 데이터라 지칭한다.
그리고, n이 홀수(n=2m-1)이면 A(x)와 B(x)는 하기의 [수학식 8]과 같다.
B(x) =
여기서, 직렬-병렬 구조를 만들기 위하여 입력 B(x)를 두 부분으로 나누면
B(x) =이고
으로 묶어내면
B(x) =이다.
여기서,=,=라 하면 짝수인 경우와 비교했을 때의 항이 하나 적음을 알 수 있다. 따라서, 아무런 의미를 갖지 않는을 더하여 m개의 항을 만든다.
결국, B(x)를 두분으로 나눈 결과는 하기의 [수학식 9]와 같다.
그리고, [수학식 8]의 B(x)를 식 A(x)B(x) mod P(x)에 대입하면 하기의 [수학식 10]과 같다.
상기 [수학식 10]에서= F(x),= G(x) 라 하면 A(x)B(x)mod P(x)값은 하기의 [수학식 11]과 같다.
mod P(x) + G(x)
그리고, 유한체의 차수가 짝수(n=2m)일때 F(x)와 G(x)는 하기의 [수학식 12]와 같다.
G(x) =
한편, 유한체의 차수가 홀수(n=2m-1)일때 F(x)와 G(x)는 하기의 [수학식 13]과 같다.
G(x) =
본 발명에 따른 유한체의 차수가 짝수인 경우에 이용되는 직렬-병렬 곱셈기는, 곱하려는 두 원소 A(x), B(x)중 임의의 원소 B(x)를 두 부분으로 나눈(제 1 승수 데이터)과(제 2 승수 데이터)를 출력하는데 있어서, 1비트 선택신호가 1일 경우 m비트을 출력하고, 1비트 선택신호가 0일 경우 m비트를 서로 교차적으로 출력하기 위한 다중화부(11), 상기 다중화부(11)로부터 선택신호가 1일때 출력된 m비트과 2m비트 A(피승수 데이터)를 곱셈 연산한 후, 모듈러 연산 P(x)를 하여 제 1 연산값(F(x))을 출력하고, 상기 다중화부(11)로부터 선택신호가 0일때 출력된 m비트와 2m비트 A를 곱셈 연산한 후, 모듈러 연산 P(x)를 하여 제 2 연산값(G(x))을 출력하기 위한 반곱셈부(12), 클럭(clock)이 0에서 1로 바뀔 때 동작하여 상기 반곱셈부(12)에 의해 연산된 제 1 연산값을 저장하고 있다가, 클럭이 한 주기를 지나 다시 0에서 1로 바뀔 때 저장하고 있던 제 1 연산값을 모듈러 감산부(14)로 전송하기 위한 저장부(13), 상기 반곱셈부(12)에 의해 연산된 제 2 연산값과 상기 저장부(13)에 저장되어 있는 제 1 연산값을 모듈러 감산하기 위한 모듈러 감산부(14)를 포함한다.
여기서, 상기 다중화부(11)는 선택신호가 0에서 1로 바뀔 때와 1에서 0으로 바뀔 때 동작하지만, 상기 저장부(13)는 클럭신호가 0에서 1로 바뀔 때만 동작한다. 그리고, 상기 선택신호의 주기는 상기 클럭신호 주기의 반이다. 따라서, 상기선택신호가 0에서 1로 바뀔 때 상기 클럭신호도 0에서 1로 바뀐다. 이후, 상기 선택신호가 1에서 0으로 바뀔 때 상기 클럭신호는 이미 한 주기를 지나 다시 0에서 1로 바뀐다.
또한, 상기 모듈러 감산부(14)는 상기 클럭신호가 짝수차 주기일때 결과값을 출력한다. 그 이유는 홀수차 주기일때는 정상적인 결과값을 얻을 수 없기 때문이다. 그래서, 본 발명은 두 주기만에 연산 결과를 얻을 수 있다.
도 2 는 본 발명에 따른 유한체의 차수가 홀수인 경우에 이용되는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 일실시예 구성도이다.
본 발명에 따른 유한체의 차수가 홀수인 경우에 이용되는 직렬-병렬 곱셈기 역시 짝수인 경우에 이용되는 직렬-병렬 곰셈기와 같은 구조를 가지며, 그 동작에 있어서도 같다. 다만, 반곱셈부(22)에 입력으로 들어오는 A의 수가 하나 적어 내부버스가 짝수일 경우의 2m이 아니라 2m-1이며, 그 출력 또한 2m-1이다. 또한, 저장부(23)과 모듈러 감산부(24)의 출력 버스의 수 역시 2m-1이다.
하지만, 유한체의 차수가 홀수인 경우에 상기의 최고차 항에 의미없는 수를 더함으로써, 도 1 의 직렬-병렬 곱셈기 하나로 유한체의 차수가 짝수이든 홀수이든 관계없이 모두를 연산할 수 있다.
도 3 은 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 반곱셈부에 대한 일실시예 상세 구성도이다.
도 3 에 도시된 바와 같이, 유한체 상의 두 원소의 곱을 구하는 직렬-병렬곱셈기의 반곱셈부(12)는, 2m비트 A를 입력받아 마스트로비토(Mastrovito) 행렬의 전체행들중 k+1행부터 k+m행까지의 행을 만들기 위한 곱셈행렬 생성부(301), 상기 곱셈행렬 생성부(301)로부터 만들어진 마스트로비토 행렬의 각 행들과, 상기 곱셈행렬 생성부(301)를 거치지 않고 입력된 2m비트 A에 대한 행벡터를 구하고 상기 행벡터를 순환이동하여 왼쪽에서 m비트를 선택하기 위한 선택부(302, 303, 304, 305, 306, 307), 상기 선택부(302, 303, 304, 305, 306, 307)로부터 생성된 마스트로비토의 각 행벡터와 입력 B벡터의 내적을 통해의 각 비트를 구하기 위한 내적부(308, 309, 310, 311, 312 ,313)를 포함한다.
여기서, 선택부는 1에서 2m까지, 내적부는 0부터 2m-1까지 그 총수는 서로 같고,는 B(x)가 홀수일 때와 짝수일 때를 모두 포함함을 의미한다. 그리고 (2m-1)차 다항식 A(x)와 (m-1)차 다항식의 곱은=이다.
따라서,를 다항식 기저로 표현한 벡터를 i번째 열로 갖는 3m x m 행렬과 j번째 행이인 m x 1 행렬의 곱셈으로 나타낼 수 있다. 3m x m 행렬에서차를 넘는 행에 대해 기약다항식 P(x)로 모듈러 감산을 한 후 얻은 행렬이 2m x m 마스트로비토 행렬이다.
즉, 반곱셈부(12)는 마스트로비토 행렬을 구한 후, 이 행렬과를 원소로 가진 m x 1 행렬을 곱해를 구한다.
도 4 는 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 곱셈행렬 생성부에 대한 일실시예 상세 회로도이다.
도 4 에 도시된 바와 같이, 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 곱셈행렬 생성부(301)는 마스트로비토 행렬 중 k+1번째 행부터 k+m번째 행까지의 1 x 2m 행벡터를 구한다.
이를 좀 더 상세히 살펴보면, 먼저, A(x)를 다항식기저를 이용하여 (,, ...,)로 표현한다. 그리고 이 행벡터를 오른쪽으로 k 번 순환이동(cyclic shift)한 벡터에 (,, ... ,, 0, ..., 0)을 더하여 새로운 1 x 2m 행벡터를 구한다.
도 5 는 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 선택부에 대한 일실시예 상세 회로도이다.
도 5 에 도시된 바와 같이, 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 선택부(302, 303, 304, 305, 306, 307)는 마스트로비토 행렬의 1번째 행부터 k번째 행까지는 A(x)의 행벡터 (,, ...,)를 오른쪽으로 1, ...,k번 순환이동하고, m+k+1행부터 2m행까지는 m+k+1, ..., 2m번 순환이동한 행벡터 중 왼쪽에서부터 m비트를 선택한다.
또한, k+1행부터 k+m행까지는 곱셈행렬 생성부(301)의 출력 벡터(,, ...,)를 k+1, ..., k+m번 오른쪽으로 순환이동한 행벡터 중 왼쪽에서부터 m비트를 선택한다.
즉, 본 발명에 따른 선택부(302, 303, 304, 305, 306, 307)는 입력으로 들어오는 행벡터를 i번 오른쪽으로 순환이동한 후, 왼쪽에서부터 m비트를 선택한다.
도 6 은 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 내적부에 대한 일실시예 상세 회로도이다.
도 6 에 도시된 바와 같이, 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 내적부(308, 309, 310, 311, 312, 313)는 선택부(302, 303, 304, 305, 306, 307)를 통해 선택된 m비트 행벡터 값과 반곱셈부(12)의 입력 B(x)에 대한 열벡터의 내적인 하기의 [수학식 14]을 연산한다.
도 7 은 본 발명에 따른 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기의 모듈러 감산부에 대한 일실시예 상세 회로도이다.
도 7 에 도시된 바와 같이, 본 발명에 따른 모듈러 감산부(14)는 저장부(13)에 저장되어 있던 F(x) =와 반곱셈부(12)로부터 직접 입력된 G(x) =를 이용하여 상기 [수학식 11]를 연산한다.
이를 좀 더 상세히 살펴보면, F(x)를 다항식기저 방식으로 벡터 표현하면 F(x) = (, ...,)이고 G(x) = (, ...,)이다. 따라서, F(x)=(+...+)+ (+...+)이므로, F(x)mod P(x) = 이다.
이를 벡터로 표현하면, (, ...,,, ...,) + (0,...,, ...,, 0, ..., 0) 이다. 여기서, (0, ...,, ...,, 0, ..., 0)벡터는항부터항까지의 값으로 (, ...,)값을 갖는다.
여기서, 저장부(13)와 모듈러 감산부(14)의 동작에 대해 살펴보면, 반곱셈부(12)에 의해 연산된 제 1 연산값은 저장부(13)는 물론 모듈러 감산부(14)로 전송된다. 최초 저장부(13)에는 데이터가 존재하지 않기 때문에 상기 제 1 연산값을 저장하고, 모듈러 감산부(14)는 반곱셈부(12)로부터만 제 1 연산값을 전송받고 저장부(13)로부터는 연산값을 전송받지 못했기 때문에 모듈러 감산을 하지 않는다.
이후, 반곱셈부(12)에 의해 연산된 제 2 연산값은 저장부(13)와 모듈러 감산부(14)로 전송된다. 저장부(13)는 이미 저장하고 있는 제 1 연산값을 모듈러 감산부(14)로 전송한 후, 제 2 연산값을 저장한다.
한편, 모듈러 감산부(14)는 반곱셈부(12)로부터 전송받은 제 2 연산값과 저장부(13)로부터 전송받은 제 1 연산값을 이용하여 모듈러 감산을 한다.
따라서, 저장부(13)는 교차적으로 제 1 연산값과 제 2 연산값을 저장하게 된다. 그에 따라 저장부(12)로부터 전송받은 제 2 연산값과 다음 주기에 입력되는 타 제 1 연산값이 모듈러 감산부(14)에서 모듈러 감산이 되지만, 그 결과값은 본 발명에서의 최종 결과값에 이용되지 않는다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
상기와 같은 본 발명은, 병렬 곱셈기보다 작은 공간복잡도를 갖고, 두 클럭내에 두 원소의 곱셈 결과를 출력할 수 있어 직렬 곱셈기보다 작은 시간복잡도를 갖기 때문에, 다양한 환경에 적용할 수 있는 효과가 있다.
또한, 본 발명은, 안정성과 용이성 등의 장점으로 유선과 무선 환경에 모두 사용할 수 있는 타원곡선 암호시스템에 적용하여 두 원소를 곱하는 연산을 효율적으로 할 수 있는 효과가 있다.

Claims (5)

  1. 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기에 있어서,
    병렬로 승수 데이터를 입력받아 선택신호에 따라 교차적으로 제 1 승수 데이터 및 제 2 승수 데이터를 출력하기 위한 다중화 수단;
    상기 다중화 수단으로부터 전송받은 제 1 승수 데이터와 외부로부터 입력받은 피승수 데이터를 부분곱 연산한 후 모듈러 연산하여 제 1 연산값을 출력하고, 상기 다중화 수단으로부터 전송받은 제 2 승수 데이터와 상기 외부로부터 입력받은 피승수 데이터를 부분곱 연산한 후 모듈러 연산하여 제 2 연산값을 출력하기 위한 반곱셈 수단;
    주기가 상기 선택신호의 2배인 클럭에 따라 상기 반곱셈 수단에 의해 연산된 제 1 연산값을 제 1 주기에서 저장하고 제 2 주기에서 출력하기 위한 저장 수단; 및
    상기 반곱셈 수단으로부터 입력받은 제 2 연산값과 상기 저장 수단으로부터 입력받은 제 1 연산값을 모듈러 감산하기 위한 모듈러 감산 수단
    을 포함하는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기.
  2. 제 1 항에 있어서,
    상기 다중화 수단은,
    1비트 선택신호를 입력받아, 1과 0일 때 제 1 및 제 2 승수 데이터를 각각 출력하는 것을 특징으로 하는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기.
  3. 제 1 항에 있어서,
    상기 반곱셈 수단은,
    외부로부터 상기 피승수 데이터를 입력받아 마스트로비토(Mastrovito) 행렬의 전체 행들중 소정의 행들을 생성하기 위하여 삼항 기약다항식으로 모듈러 연산하기 위한 곱셈행렬 생성 수단;
    상기 곱셈행렬 생성 수단으로부터 입력받은 행벡터와 상기 외부로부터 입력받은 피승수 데이터를 소정의 순환이동 후, 왼쪽에서부터 소정 비트의 행벡터 값을 선택하기 위한 다수의 선택 수단; 및
    상기 다수의 선택 수단에 의해 선택된 소정의 행벡터 값과 상기 다중화 수단으로부터 전송된 각 승수 데이터를 이용하여 내적을 연산하기 위한 다수의 내적 수단
    을 포함하는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 저장 수단은,
    제 1 주기에서 상기 반곱셈 수단에 의해 연산된 제 1 연산값을 저장하였다가 클럭이 0에서 1로 바뀌는 제 2 주기에서 동작하여 저장하고 있는 제 1 연산값을 모듈러 감산 수단으로 전송하고 상기 반곱셈 수단에 의해 연산된 제 2 연산값을 저장하고, 클럭이 다시 0에서 1로 바뀔 때 동작하여 저장하고 있는 제 2 연산값을 상기 모듈러 감산 수단으로 전송하고 상기 반곱셈 수단에 의해 연산된 새로운 연산값을 저장하는 과정을 반복하는 것을 특징으로 하는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기.
  5. 제 4 항에 있어서,
    상기 모듈러 감산 수단은,
    상기 클럭신호가 홀수차일때와 짝수차일때 모두 연산을 하지만 짝수차일때의 연산결과를 출력하여 두 주기만에 연산결과를 얻을 수 있는 것을 특징으로 하는 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기.
KR10-2003-0013788A 2002-12-20 2003-03-05 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 KR100457177B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020020081949 2002-12-20
KR20020081949 2002-12-20

Publications (2)

Publication Number Publication Date
KR20040055550A true KR20040055550A (ko) 2004-06-26
KR100457177B1 KR100457177B1 (ko) 2004-11-16

Family

ID=37348215

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0013788A KR100457177B1 (ko) 2002-12-20 2003-03-05 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기

Country Status (1)

Country Link
KR (1) KR100457177B1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100893695B1 (ko) * 2006-12-15 2009-04-17 영동대학교 유한체 상의 고속 직렬 곱셈기 구조
KR100950581B1 (ko) * 2007-12-06 2010-04-01 고려대학교 산학협력단 여분 표현을 사용하는 유한체 비트―병렬 곱셈 장치 및방법
KR100954579B1 (ko) * 2008-02-20 2010-04-26 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
KR100954583B1 (ko) * 2008-02-20 2010-04-26 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
KR100954586B1 (ko) * 2008-08-27 2010-04-26 고려대학교 산학협력단 다항식 기저 기반의 이진체 병렬 곱셈 장치 및 방법과 이를이용한 마이크로프로세서
KR101213399B1 (ko) * 2009-09-10 2013-01-10 고려대학교 산학협력단 비트-병렬 다항식 기저 곱셈 방법
CN102929574A (zh) * 2012-10-18 2013-02-13 复旦大学 Gf(2163)域上的脉动乘法器设计方法
KR101418686B1 (ko) * 2013-08-02 2014-07-10 공주대학교 산학협력단 유한체에서 타입 4 가우시안 정규기저를 이용한 이차 미만의 공간 복잡도를 갖는 병렬 곱셈 연산방법 및 그 연산장치
WO2020105797A1 (ko) * 2018-11-22 2020-05-28 부산대학교 산학협력단 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100976232B1 (ko) 2009-02-13 2010-08-17 고려대학교 산학협력단 고속 비트-병렬 다항식 곱셈기, 그 곱셈 방법
KR100976229B1 (ko) 2009-02-13 2010-08-17 고려대학교 산학협력단 저면적 비트-병렬 다항식 곱셈기, 그 곱셈 방법

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100893695B1 (ko) * 2006-12-15 2009-04-17 영동대학교 유한체 상의 고속 직렬 곱셈기 구조
KR100950581B1 (ko) * 2007-12-06 2010-04-01 고려대학교 산학협력단 여분 표현을 사용하는 유한체 비트―병렬 곱셈 장치 및방법
KR100954579B1 (ko) * 2008-02-20 2010-04-26 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
KR100954583B1 (ko) * 2008-02-20 2010-04-26 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
KR100954586B1 (ko) * 2008-08-27 2010-04-26 고려대학교 산학협력단 다항식 기저 기반의 이진체 병렬 곱셈 장치 및 방법과 이를이용한 마이크로프로세서
KR101213399B1 (ko) * 2009-09-10 2013-01-10 고려대학교 산학협력단 비트-병렬 다항식 기저 곱셈 방법
CN102929574A (zh) * 2012-10-18 2013-02-13 复旦大学 Gf(2163)域上的脉动乘法器设计方法
KR101418686B1 (ko) * 2013-08-02 2014-07-10 공주대학교 산학협력단 유한체에서 타입 4 가우시안 정규기저를 이용한 이차 미만의 공간 복잡도를 갖는 병렬 곱셈 연산방법 및 그 연산장치
WO2020105797A1 (ko) * 2018-11-22 2020-05-28 부산대학교 산학협력단 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체

Also Published As

Publication number Publication date
KR100457177B1 (ko) 2004-11-16

Similar Documents

Publication Publication Date Title
Agnew et al. An implementation for a fast public-key cryptosystem
EP1044405B1 (en) Power signature attack resistant cryptography
EP1014617A2 (en) Method and apparatus for elliptic curve cryptography and recording medium therefor
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US6038581A (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
Hafsa et al. A hardware-software co-designed AES-ECC cryptosystem
CN110049013B (zh) 一种基于sm2和rsa加密算法的加解密系统及工作方法
KR100457177B1 (ko) 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
Jaiswal et al. Hardware implementation of text encryption using elliptic curve cryptography over 192 bit prime field
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
Clancy Analysis of FPGA-based hyperelliptic curve cryptosystems
CA2129203C (en) Public key cryptography utilizing elliptic curves
Kalaiarasi et al. A parallel elliptic curve crypto-processor architecture with reduced clock cycle for FPGA platforms
Saju et al. Design and execution of highly adaptable elliptic curve cryptographic processor and algorithm on FPGA using Verilog HDL
KR100341507B1 (ko) 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법
Tahat et al. A cryptosystem based on chaotic maps and factoring problems
El-sisi et al. Reconfigurable implementation of Karatsuba multiplier for Galois field in elliptic curves
Pathirage et al. Multi-Prime RSA Verilog Implementation Using 4-Primes
Poomagal et al. Modular multiplication algorithm in cryptographic processor: A review and future directions
Thomas 16 Very-Large-Scale
Ahlqvist Elliptic Curves and Cryptography
Yünüak Modular exponentiation methods in cryptography
Li Design of a novel hybrid cryptographic processor

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20081104

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee