KR101731921B1 - 하드웨어 타입 소수 판별 장치 및 그 방법 - Google Patents

하드웨어 타입 소수 판별 장치 및 그 방법 Download PDF

Info

Publication number
KR101731921B1
KR101731921B1 KR1020170022538A KR20170022538A KR101731921B1 KR 101731921 B1 KR101731921 B1 KR 101731921B1 KR 1020170022538 A KR1020170022538 A KR 1020170022538A KR 20170022538 A KR20170022538 A KR 20170022538A KR 101731921 B1 KR101731921 B1 KR 101731921B1
Authority
KR
South Korea
Prior art keywords
test
division
module
prime
modular exponentiation
Prior art date
Application number
KR1020170022538A
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 KR1020170022538A priority Critical patent/KR101731921B1/ko
Application granted granted Critical
Publication of KR101731921B1 publication Critical patent/KR101731921B1/ko

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7204Prime number generation or prime number testing

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 발명은 어떤 수가 소수(prime number)인지 판별하는 장치 및 그 방법에 관한 것으로서, 특히, 하드웨어 타입 소수 판별 장치 및 그 방법에 관한 것이다. 본 발명에 따른, 하드웨어 와이어되는(hardware-wired) 소수(prime number) 판별 장치에 있어서, 상기 장치는, 입력되는 임의의 홀수인 r이 미리 지정된 k 개의 소수에 의해 나누어지지 않는지 나눗셈 시도(trial division) 테스트를 수행하고, 상기 나눗셈 시도 테스트를 통과하는 경우의 상기 임의의 홀수 r을 결과 값 r'1으로 리턴하는 TD 연산 모듈 및 상기 r'1에 m 회의 모듈러 지수 연산을 수행하여 나머지가 1이 되는지의 페르마 테스트를 수행하고, 상기 테스트를 통과하는 경우의 상기 r'1을 소수로 판별하여 제공하는 모듈러 지수 연산 모듈을 포함한다.

Description

하드웨어 타입 소수 판별 장치 및 그 방법{HARDWARE-WIRED APPARATUS AND METHOD OF DISCRIMINATING PRIME NUMBERS}
본 발명은 어떤 수가 소수(prime number)인지 판별하는 장치 및 그 방법에 관한 것으로서, 특히, 하드웨어 타입 소수 판별 장치 및 그 방법에 관한 것이다.
큰 소수(prime number)는 현대 암호학의 기초로서 RSA(Rivest Shamir Adleman), ElGamal, DSS(Digital Signature Standard), ECC(Elliptic Curve Cryptosystems)와 같은 표준 공개키 암호 시스템에서 널리 이용되고 있다.
오늘날 더욱 진보된 악성 공격들로부터 이러한 시스템들을 안전하게 유지하기 위해서는 더욱 큰 소수가 요구되고 있는 실정이다. 예시적으로, 초기의 RSA는 512비트의 키를 이용했지만 현재는 1024비트에서 2048비트의 키까지 요구되고 있다.
소수는 임의의 홀수를 생성하여 소수인지 검사하고, 소수일 경우 그 값을 반환하고, 소수가 아닌 경우에 난수를 생성하고, 소수인지 새롭게 검사하는 과정을 반복하게 된다. 이 중 소수를 판별하는 과정에 매우 많은 시간이 소모된다.
종래의 소수를 판별하는 방식으로는 결정적 검사법과 확률적 검사법이 존재한다. 결정적 검사법은 검사를 통과한 난수가 확률 1로 소수임을 보장하여, 예시적으로 나눗셈 시도 테스트(TD: Trial Division), Pocklingtons 검사, 타원 곡선 유사체, 자코비 합 시험, 마우어 알고리즘, Shawe 테일러 알고리즘 및 AKS 시험 등이 존재한다.
나아가, 확률적 검사법은 매우 큰 s에 대해 1-(0.5)s의 확률로 해당 검사를 통과한 난수가 소수임을 보장하며, 페르마 테스트, 밀러-라빈 테스트, Solovay-쉬트 라쎈 테스트, Frobenious의 랜덤 테스트, 레만 테스트 등이 존재한다.
한편, 소수 생성에 많이 사용되는 trial division과 페르마 테스트의 조합의 성능은 trial division에서 사용하는 소수의 개수 k의 선택에 따라 크게 달라진다. 쉽게 수정이 가능한 소프트웨어 환경과 달리 하드웨어 구현에서는 조정을 통해 k를 알아내는 것은 매우 큰 비용과 시간이 소모된다.
따라서, 종래의 소프트웨어 방식에서의 k를 선택하는 방법은 이미 알려져 있으나 병렬 처리가 가능한 하드웨어에서는 k를 선택하는 다른 방법이 필요하다.
한국공개특허공보 제10-2015-0128798호, 2015.11.18 공개.
본 발명에 따른 하드웨어 타입 소수 판별 장치 및 그 방법은, 병렬 처리가 가능한 하드웨어에서 소수의 개수 k를 결정하는 방법에 대하여 제안한다.
본 발명에 따른, 하드웨어 와이어되는(hardware-wired) 소수(prime number) 판별 장치에 있어서, 상기 장치는, 입력되는 임의의 홀수인 r이 미리 지정된 k 개의 소수에 의해 나누어지지 않는지 나눗셈 시도(trial division) 테스트를 수행하고, 상기 나눗셈 시도 테스트를 통과하는 경우의 상기 임의의 홀수 r을 결과 값 r'1으로 리턴하는 TD 연산 모듈 및 상기 r'1에 m 회의 모듈러 지수 연산을 수행하여 나머지가 1이 되는지의 페르마 테스트를 수행하고, 상기 테스트를 통과하는 경우의 상기 r'1을 소수로 판별하여 제공하는 모듈러 지수 연산 모듈을 포함한다.
일 예에 있어서, 상기 나눗셈 시도 테스트 중인 상기 홀수 r이 상기 k 개의 소수 중 적어도 하나에 의해 나누어져서 상기 나눗셈 시도 테스트를 통과하지 못하는 경우, 상기 r에 2를 가산한 값은 상기 r로 갱신되고, 상기 갱신된 r은 상기 TD 연산 모듈로 입력되며, 상기 r에 대한 갱신은, 상기 나눗셈 시도 테스트를 통과하는 상기 r'1 이 도출될 때까지 반복되는 것을 특징으로 한다.
일 예에 있어서, 상기 TD 연산 모듈에 의해 기 제공된 상기 r'1에 대하여, 상기 모듈러 지수 연산 모듈이 상기 페르마 테스트를 수행하는 동안, 상기 TD 연산 모듈은 상기 기 제공된 상기 r'1에 2씩 가산하면서 상기 나눗셈 시도 테스트를 회귀 반복하여 상기 나눗셈 시도 테스트를 통과하는 새로운 값인 r'2을 도출하는 것을 특징으로 한다.
일 예에 있어서, 상기 r'1이 상기 모듈러 지수 연산 모듈이 수행하는 상기 페르마 테스트를 통과하지 못하는 경우, 상기 모듈러 지수 연산 모듈은 상기 TD 연산 모듈이 제공하는 상기 r'2에 대하여 상기 페르마 테스트를 수행하고, 상기 TD 연산 모듈은, 상기 모듈러 지수 연산 모듈이 상기 TD 연산 모듈이 제공하는 상기 r'2에 대하여 상기 페르마 테스트를 수행하는 동안, 상기 기 제공한 상기 r'2에 2씩 가산하면서 상기 나눗셈 시도 테스트를 회귀 반복하여 상기 나눗셈 시도 테스트를 통과하는 새로운 값인 r'3을 도출하는 것을 특징으로 한다.
일 예에 있어서, 상기 k는 수학식 7 및 수학식 8에 따른 최적의 값으로 설정되고, 상기 수학식 7은,
Figure 112017017534103-pat00001
이고, 상기 수학식 8은,
Figure 112017017534103-pat00002
인 것을 특징으로 한다.
본 발명에 따른 하드웨어 타입 소수 판별 장치 및 그 방법은, 나눗셈 시도 테스트(TD: Trial Division) 연산 모듈의 속도와 모듈러 지수 연산(Modular Exponentiation) 모듈의 속도를 기반으로, 전체 성능에 영향을 주는 TD 연산에서 사용하는 소수의 개수 k를 쉽게 결정할 수 있다.
또한, 본 발명에 따른 하드웨어 타입 소수 판별 장치 및 그 방법은, TD 연산 모듈의 속도와 모듈러 지수 연산 모듈의 속도를 기반으로, 소수 생성의 기대 시간을 예측할 수 있으며, 그 결과 k를 찾아내기 위해 소모되는 비용과 시간을 절약할 수 있다.
나아가, 본 발명에 따른 하드웨어 타입 소수 판별 장치 및 그 방법은 소수 생성기를 사용하는 어플리케이션 개발 및 운영 시 소수 생성의 기대 시간 정보를 활용할 수 있다.
도 1은 일실시예에 따른 소수 판별 장치의 블록도를 나타낸다.
도 2는 페르마 테스트와 병렬 수행되는 나눗셈 시도 테스트의 과정을 설명하는 흐름도이다.
도 3은 나눗셈 시도 테스트와 병렬 수행되는 페르마 테스트의 과정을 설명하는 흐름도이다.
도 4는 일실시예에 따른 소수 판별 장치가 나눗셈 시도 테스트 및 페르마 테스트를 병렬적으로 수행하는 과정을 설명하는 예시도이다.
도 5a 및 도 5b는 최적의 병렬 조합을 나타내는 k의 값을 도시하는 그래프이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 “~사이에”와 “바로~사이에” 또는 “~에 직접 이웃하는” 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, “포함하다” 또는 “가지다” 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다.
도 1은 일실시예에 따른 소수 판별 장치의 블록도를 나타낸다. 도 1을 참조하면, 소수 판별 장치(100)는 나눗셈 시도 테스트(TD: Trial Division) 연산 모듈(110, 이하, ‘TD 연산 모듈’로 명명함) 및 모듈러 지수 연산(Modular Exponentiation) 모듈(120)을 포함할 수 있다. 본 실시예에 따른 소수 판별 장치는 임의의 홀수 r을 시작 수로 지정하여 TD 연산 모듈(110) 및 모듈러 지수 연산 모듈(120)을 병렬적으로 이용하여 소수를 생성할 수 있다.
TD 연산 모듈(110)은 미리 지정된 k 개의 소수를 이용하여, 입력된 임의의 홀수 r을 나눌 수 있다.
보다 구체적으로, TD 연산 모듈(110)은 미리 지정된 k 개의 소수 각각을 순차적으로 이용하여 상기 임의의 홀수 r을 나눌 수 있다. 미리 지정된 k 개의 소수는 하나의 단어로 표현 가능한 홀수 소수(p1<p2<…<pk)를 나타낼 수 있다.
예를 들어, 본 실시예에서는 상기 임의의 홀수 r이 시작수로서 입력되기 때문에 짝수인 소수 2는 상기 미리 지정된 k 개의 소수에서 제외될 수 있다.
본 실시예에 따른 TD 연산 모듈(110)은 상기 임의의 홀수 r이 pk보다 작은 인수를 가지는지 여부를 증명하여 상기 임의의 홀수 r이 합성수라는 것을 보이는데 이용될 수 있다.
모듈러 지수 연산 모듈(120)은 상기 TD 연산 모듈(110)을 통과한 임의의 홀수 r에 대해 페르마 테스트를 수행할 수 있다.
보다 구체적으로, 모듈러 지수 연산 모듈(120)은 미리 지정된 상수 A를 r-1승하여 상기 r로 나누고, 그 나머지 값이 1과 같은지 여부를 확인할 수 있다. 또한, 합성수가 상기 페르마 테스트를 통과하는 것을 방지하기 위해, 모듈러 지수 연산은 기설정된 복수 개의 서로 다른 A에 대해 상기 페르마 테스트를 반복 수행할 수 있다.
일 실시예로서, r이 512비트의 소수인 경우에 모듈러 지수 연산 모듈(120)은 6번의 페르마 테스트를 수행할 수 있다. 다른 일실시예로서, r이 1024비트 소수인 경우에 모듈러 지수 연산 모듈(120)은 3번의 페르마 테스트를 수행할 수 있다.
다른 일실시예로서, 모듈러 지수 연산 모듈(120)은 페르마 테스트를 통과하는 카마이클수를 검출하기 위해, nontrival square root가 존재하는지를 추가적으로 검출하는 밀러-라빈 테스트를 병렬 수행할 수 있다.
보다 구체적으로, nontrival square root은 +1 또는 -1이 아니면서 modular squaring 이후에 1이 되는 값을 나타낼 수 있다.
또 다른 일실시예로서, 모듈러 지수 연산 모듈(120)은 제곱 및 곱셉의 반복으로 구현되는 모듈러 곱셈(multiplication)의 반복으로 구현될 수 있다. 보다 구체적으로, 모듈러 지수 연산 모듈(120)은 n비트의 정수에 대해 제곱 연산은 n-1번 및 곱셈 연산은 지수 값의 해밍 웨이트만큼 수행할 수 있다.
보다 구체적으로, 해밍 웨이트는 이진수(binary number)로 표시한 경우의 1의 개수를 나타낼 수 있다. 본 실시예에서 지수 값은 r-1이 되고, 상기 해밍 웨이트의 기댓값은 (n-2)/2가 될 수 있다. 본 실시예에서, 모듈러 지수 연산 모듈(120)이 소비하는 기대 시간 expn은 아래의 수학식 1과 같이 계산될 수 있다.
가)
Figure 112017017534103-pat00003
상기 수학식 1에서 muln은 n비트의 정수에 대한 모듈러 곱셈의 기대 시간을 나타낸다.
도 2는 페르마 테스트와 병렬 수행되는 나눗셈 시도 테스트의 과정을 설명하는 흐름도이다.
도 2를 참조하면, 도 1에서 살펴본, 소수 판별 장치(100)에 포함되는 TD 연산 모듈(110)은 r을 입력 받고, 입력된 r이 미리 지정된 k 개의 소수로 나눠지는지 여부를 판단하는 단계(S210)를 수행할 수 있다. 보다 구체적으로, r은 임의의 홀수를 나타낼 수 있다. S210단계에서 k는 소수 판별 장치에 미리 지정된 설정값에 따라 크기가 결정될 수 있다. 보다 구체적으로, k는 임의의 자연수를 나타낼 수 있다. k의 값의 크기에 따라 TD 연산 모듈(110)이 수행하는 나눗셈 시도 테스트의 수행 시간과 임의의 홀수 r이 실제로 소수인 확률의 크기가 결정될 수 있다.
일 실시예로서, TD 연산 모듈(110)은 나눗셈 시도 테스트가 수행되는 제1 주기를 단축하기 위해 임계치 이하 크기를 값는 k1을 설정값으로서 지정할 수 있다. 다른 일 실시예로서, TD 연산 모듈(110)은 나눗셈 시도 테스트의 결과로서 출력되는 r이 실제로 소수인 확률을 높이기 위해 임계치 이상 크기를 갖는 k2를 설정값으로서 지정할 수 있다.
본 실시예에서 소수 판별 장치는 나눗셈 시도 테스트와 페르마 테스트가 병렬로 수행되는 환경에서의 최적의 k 값을 설정값으로서 지정할 수 있다. 최적의 k 값이 설정되는 과정에 관한 보다 자세한 설명은 아래에서 추가되는 도면과 함께 후술한다.
S210 단계에서 임의의 홀수인 r이 k 개의 소수에 의해 나누어지지 않는 경우에 소수 판별 장치는 단계(S220)를 수행할 수 있다. S220단계에서 소수 판별 장치는 페르마 테스트를 병렬 수행하는 모듈러 지수 연산 모듈로 상기 임의의 홀수 r을 결과값으로서 리턴할 수 있다.
하지만, S210단계에서 상기 임의의 홀수인 r이 k 개의 소수 중 적어도 하나에 의해 나누어지는 경우에 소수 판별 장치는 단계(S230)를 수행할 수 있다. S230단계에서 소수 판별 장치는 상기 임의의 홀수 r에 2를 가산한 값을 홀수 r로 새롭게 갱신할 수 있다. 또한, 소수 판별 장치는 새로운 r에 대해 상기 나눗셈 시도 테스트를 회귀 반복하여 수행할 수 있다.
위와 같은 단계들에 따라, 소수 판별 장치의 TD 연산 모듈(110)은 k 개의 소수로 나눠지지 않는 임의의 홀수 r을 찾을 때까지, 상기 r을 2만큼 가산시켜가며 그 결과값을 찾고, 페르마 테스트를 병렬로 수행 중인 모듈러 지수 연산 모듈(120)로 리턴할 수 있다.
도 3은 나눗셈 시도 테스트와 병렬 수행되는 페르마 테스트의 과정을 설명하는 흐름도이다. 도 3을 참조하면, 소수 판별 장치에 포함되는 모듈러 지수 연산 모듈(120)은 r을 입력 받고, 미리 지정된 A1을 r-1승하여 상기 r로 나눈 나머지가 1과 같은지 여부를 판단하는 단계(S310)를 수행할 수 있다. 예시적으로, A1은 임의의 자연수일 수 있다.
보다 구체적으로, 상기 r은 TD 연산 모듈(110)의 나눗셈 시도 테스트의 결과값으로서 리턴되는 값을 나타낼 수 있다.
S310단계에서 A1을 r-1승하여 상기 r로 나눈 나머지가 1이 아닌 경우에, 모듈러 지수 연산 모듈은 병렬 수행된 나눗셈 시도 테스트의 새로운 결과값 r'을 이용하는 단계(S320)를 수행할 수 있다. 모듈러 지수 연산 모듈은 병렬 수행의 결과로서 새롭게 도출된 r'을 이용하여 페르마 테스트를 시작할 수 있다.
한편, S310단계에서 A1을 r-1승하여 상기 r로 나눈 나머지가 1인 경우에는, 모듈러 지수 연산 모듈을 페르마 테스트를 반복 수행하기 위한 A2가 존재하는지 여부를 판단하는 단계(S330)를 수행할 수 있다. 모듈러 지수 연산 모듈(120)은 미리 지정된 설정값으로서 m회의 모듈러 지수 연산의 수행 횟수가 결정될 수 있다. 이 경우에, 모듈러 지수 연산 모듈(120)은 추가적인 페르마 테스트를 반복하기 위한 m-1개의 A2를 포함할 수 있다.
S330단계에서 더 이상 페르마 테스트를 반복 수행할 A2가 존재하지 않는 경우에, 모듈러 지수 연산 모듈(120)은 상기 r을 소수로 결정하는 단계(340)를 수행할 수 있다. 다시 말하여, 모듈러 지수 연산 모듈(120)은 미리 지정된 m회의 페르마 테스트를 상기 r이 통과한 경우에, 상기 r을 소수로 결정할 수 있다.
다른 한편으로, 단계(S330)에서 페르마 테스트를 반복 수행하기 위한 A2가 여전히 존재하는 경우에, 모듈러 지수 연산 모듈(120)은 새로운 A2를 A1으로 지정하는 단계(S350)를 수행하고 페르마 테스트를 반복하여 수행할 수 있다.
도 4는 일실시예에 따른 소수 판별 장치가 나눗셈 시도 테스트 및 페르마 테스트를 병렬적으로 수행하는 과정을 설명하는 예시도이다.
도 4를 참조하면, 시간 흐름에 따라 소수 판별 장치 내에서 나눗셈 시도 테스트 및 페르마 테스트가 병렬적으로 수행되는 과정이 도시된다.
도 4를 참조하면, 소수 판별 장치의 TD 연산 모듈(110)은 임의의 홀수 r을 시작값으로서 나눗셈 시도 테스트를 테스트 절차 T0동안 수행할 수 있다.
본 실시예에서 TD 연산 모듈(110)은 미리 지정된 k 개의 홀수 소수들(p1,p2,… ,pk)을 이용하여 상기 나눗셈 시도 테스트를 수행할 수 있다.
일실시예로서, TD 연산 모듈(110)은 상기 r이 소수 p1에 의해 나눠지지 않는다는 결과(411)를 계산할 수 있다. 또한, TD 연산 모듈(110)은 상기 r이 소수 p2에 의해 나눠지지 않는다는 결과(412)를 계산할 수 있다. 마찬가지로, TD 연산 모듈(110)은 상기 r이 소수 p3에 의해 나눠지지 않는다는 결과(413)를 계산할 수 있다.
한편, TD 연산 모듈(110)은 상기 r이 k 개의 홀수 소수들 중 어느 하나에 의해 나눠지는 경우, k 개의 홀수 소수들 중 적어도 하나에 의해 나눠진다는 결과(420)를 도출할 수 있다.
결과(420)가 도출된 경우에, TD 연산 모듈(110)은 상기 r을 2만큼 가산하여 r+2에 대해 새로운 나눗셈 시도 테스트를 수행할 수 있다.
한편, 임의의 홀수 r'1이 미리 지정된 k 개의 홀수 소수들 전체에 대해 나눠지지 않는 결과(410)가 도출된 경우, TD 연산 모듈(110)은 r'1을 후보 숫자로서 모듈러 지수 연산 모듈에 출력할 수 있다.
상기 r'1을 입력 받은 모듈러 지수 연산 모듈은 페르마 테스트에 관한 테스트 절차 F1을 개시할 수 있다.
본 실시예에 따른 소수 판별 장치는 새로운 시간 구간에서 병렬적으로 나눗셈 시도 테스트와 페르마 테스트를 동시에 수행할 수 있다. 이와 동시에 TD 연산 모듈은 r'1+2를 새로운 시작값으로 하여, 나눗셈 시도 테스트를 통과한 새로운 후보 숫자 r'2를 찾을 때까지 나눗셈 시도 테스트에 관한 테스트 절차 T1을 병렬적으로 계속 수행할 수 있다. 앞서 기재한 바와 같이, TD 연산 모듈은 r'1+2,r'1+4등에 관한 나눗셈 시도 테스트를 지속적으로 수행할 수 있다.
모듈러 지수 연산 모듈(120)은 n비트의 정수에 대해 모듈러 제곱 연산(430) 또는 모듈러 곱셈 연산(440)을 순차적으로 수행할 수 있다. 위와 같은 과정에 따라, 모듈러 지수 연산 모듈(120)은 ar'1-1을 r'1로 나눈 나머지가 1이 되는지 여부를 판단하고 그 결과에 따라 r'1을 소수로 판단할 수 있는지 여부를 결정할 수 있다. 모듈러 지수 연산 모듈(120)의 동작에 관한 자세한 설명은 도 3과 함께 기재된 설명이 그대로 적용될 수 있어 중복되는 설명은 생략하기로 한다.
나눗셈 시도 테스트에 관한 테스트 절차 T0가 우선적으로 수행된 제1 동기와는 다르게 이후의 절차에서는 Ti와 Ei의 종료 시간이 불일치하는 경우가 존재한다. 예를 들어, 이 경우에 소수 판별 장치는 이전의 Ti-1및 Ei-1가 모두 완료될 때까지 기다림(wait) 절차를 수행하여 이후의 테스트 절차 Ti및 Ei이 서로 동기화 되도록 제2 동기 및 제3 동기를 일치시킬 수 있다.
도 5a 및 도 5b는 최적의 병렬 조합을 나타내는 k의 값을 도시하는 그래프이다. 일반적으로 최종 소수를 생성하기 까지 나눗셈 시도 테스트가 수행되는 횟수 x의 기댓값은 아래의 수학식 2와 같다.
Figure 112017017534103-pat00004
또한, 나눗셈 시도 테스트가 한 번 수행되는데 걸리는 시간 T(Ti)의 기댓값은 아래의 수학식 3과 같다.
Figure 112017017534103-pat00005
또한, 페르마 테스트가 한 번 수행되는데 걸리는 시간 T(Fi)의 기댓값은 아래의 수학식 4와 같다.
Figure 112017017534103-pat00006
divn은 n비트의 정수를 하나의 단어로 표현되는 홀수 소수로 나누는데 필요한 시간을 나타낸다. 또한, expn은 n비트 정수에 대한 모듈러 지수 연산의 기대 시간이다.
도 4에서 설명된 실시예를 참조하면, 나눗셈 시도 테스트의 경우에는 초기에 한 번 단독으로 수행되고, 그 이후에는 나눗셈 시도 테스트(Ti)와 페르마 테스트(Fi)가 병렬로 수행된다는 것을 알 수 있다. 예시적으로, 마지막 테스트 절차인 i=x인 경우에는 미리 지정된 m번의 모듈러 지수 연산이 수행될 수 있다. 따라서, 본 실시예에 따른 소수 판별 장치를 이용하여 소수 생성에 걸리는 시간의 기댓값은 아래의 수학식 5와 같이 나타낼 수 있다.
Figure 112017017534103-pat00007
본 실시예에 따를 때, 초기 테스트 절차로서의 한 번의 나눗셈 시도 테스트와 그 이후의 나눗셈 시도 테스트와 페르마 테스트의 병렬 수행, 그리고 m번의 모듈러 지수 연산이 병렬 수행되어 상기 기댓값이 계산될 수 있다.
본 실시예에 따를 때, n비트 소수 생성 시의 기대시간 ETn(k)는 아래의 수학식 6과 같이 정리될 수 있다.
Figure 112017017534103-pat00008
본 실시예의 소수 판별 장치는 나눗셈 시도 테스트와 페르마 테스트의 시작이 동기화되어 있어 나눗셈 시도 테스트와 모듈러 지수 연산이 병렬로 수행되는 구간의 시간 소모는 E[T(Ti)]와 expn둘 중 큰 값에 의해 결정될 수 있다. 또한, E[T(Ti)]은 k 값의 크기에 따라 결정될 수 있다. 예시적으로, k가 소정값보다 작은 경우에는 E[T(Ti)]이 작아서 나눗셈 시도 테스트가 먼저 끝난 뒤, 모듈러 지수 연산이 종료될 때까지 대기하게 될 수 있다. 이 경우에는 소수 생성의 기대 시간은 expn에 의해 결정될 수 있다. 다른 일실시예로서, k가 소정값보다 큰 경우에는 E[T(Ti)]이 증가하게 되어 모듈러 지수 연산이 먼저 종료하게 된 경우라도 나눗셈 시도 연산의 종료를 기다리게 될 수 있다. 이 경우에 소수 생성의 기대 시간은 E[T(Ti)]에 의해 결정될 수 있다.
상기 수학식 6에서 E[T(Ti)]와 E[x]를 대체하면 아래의 수학식 7과 같은 식을 획득할 수 있다. 본 실시예의 소수 판별 장치는 아래의 수학식 7 및 수학식 8에 따라 최적의 k0를 결정할 수 있다. 또한, 소수 판별 장치가 FPGA 또는 ASIC(Application Specific Integrated Circuit)을 이용하여 적어도 일시적으로 구현되는 경우에, 상기 k0값에 따라 필요한 하드웨어 모듈의 개수가 미리 예측될 수 있다.
Figure 112017017534103-pat00009
상기 수학식 7에서 k0는 E[T(Ti)]=expn을 만족하는 값으로서 아래의 수학식 8을 만족하는 값을 나타낸다.
Figure 112017017534103-pat00010
상기 수학식 8과 같이, k0는 expn와 divn의 비율로 결정된다는 것을 알 수 있다. k를 상기 수학식 7에 적용하여 소수를 생성하는데 걸리는 기대 시간이 계산될 수 있다. 앞서 기재한 수학식 7에 기초하여, FPGA 또는 ASIC로 구현된 하드웨어 와이어되는 소수 판별 장치를 이용하여 아래의 표 1과 같은 최적의 k가 계산될 수 있다.
ρ'=mvln/divn n=512(m=6) n=1024(m=3)
1 480 1000
2 900 1950
3 1380 2850
4 1860 3800
8 3560 7812
12 5720 11350
16 7160 15800
20 9200 18950
24 10720 22550
28 12540 27850
32 13800 30850
도 5a를 참조하면, n=512인 경우에 소수 판별 장치에 의해 계산된 최적의 k 값의 그래프가 도시된다. 또한, 도 5b를 참조하면, n=1024인 경우에 소수 판별 장치에 의해 계산된 최적의 k 값의 그래프가 도시된다. 표 1은 상기 수학식 1에 따라 expn대신에 muln과 divn의 비율(ρ')에 따를 최적의 k가 나타낸다. 본 실시예에 따르는 경우에, 시스템 개발자는 상기 표 1과 같이 최적의 k를 결정하고, TD 모듈이 갖는 소수의 개수를 최소화하여 면적 및 비용을 감소시키고, 가장 빠른 속도를 갖는 병렬 조합의 하드웨어 소수 생성기를 제작하는 것이 가능할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (5)

  1. 하드웨어 와이어되는(hardware-wired) 소수(prime number) 판별 장치에 있어서, 상기 장치는:
    입력되는 임의의 홀수인 r이 미리 지정된 k 개의 소수에 의해 나누어지지 않는지 나눗셈 시도(trial division) 테스트를 수행하고, 상기 나눗셈 시도 테스트를 통과하는 경우의 상기 임의의 홀수 r을 결과 값 r'1으로 리턴하는 TD 연산 모듈; 및
    상기 r'1에 m 회의 모듈러 지수 연산을 수행하여 나머지가 1이 되는지의 페르마 테스트를 수행하고, 상기 테스트를 통과하는 경우의 상기 r'1을 소수로 판별하여 제공하는 모듈러 지수 연산 모듈을 포함하는 소수 판별 장치.
  2. 제1항에 있어서,
    상기 나눗셈 시도 테스트 중인 상기 홀수 r이 상기 k 개의 소수 중 적어도 하나에 의해 나누어져서 상기 나눗셈 시도 테스트를 통과하지 못하는 경우,
    상기 r에 2를 가산한 값은 상기 r로 갱신되고, 상기 갱신된 r은 상기 TD 연산 모듈로 입력되며,
    상기 r에 대한 갱신은, 상기 나눗셈 시도 테스트를 통과하는 상기 r'1 이 도출될 때까지 반복되는 것을 특징으로 하는 소수 판별 장치.
  3. 제1항에 있어서,
    상기 TD 연산 모듈에 의해 기 제공된 상기 r'1에 대하여, 상기 모듈러 지수 연산 모듈이 상기 페르마 테스트를 수행하는 동안, 상기 TD 연산 모듈은 상기 기 제공된 상기 r'1에 2씩 가산하면서 상기 나눗셈 시도 테스트를 회귀 반복하여 상기 나눗셈 시도 테스트를 통과하는 새로운 값인 r'2을 도출하는 것을 특징으로 하는 소수 판별 장치.
  4. 제3항에 있어서,
    상기 r'1이 상기 모듈러 지수 연산 모듈이 수행하는 상기 페르마 테스트를 통과하지 못하는 경우,
    상기 모듈러 지수 연산 모듈은 상기 TD 연산 모듈이 제공하는 상기 r'2에 대하여 상기 페르마 테스트를 수행하고,
    상기 TD 연산 모듈은, 상기 모듈러 지수 연산 모듈이 상기 TD 연산 모듈이 제공하는 상기 r'2에 대하여 상기 페르마 테스트를 수행하는 동안, 상기 기 제공한 상기 r'2에 2씩 가산하면서 상기 나눗셈 시도 테스트를 회귀 반복하여 상기 나눗셈 시도 테스트를 통과하는 새로운 값인 r'3을 도출하는 것을 특징으로 하는 소수 판별 장치.
  5. 제1항에 있어서,
    상기 k는 수학식 7 및 수학식 8에 따른 최적의 값으로 설정되고,
    상기 수학식 7은,
    Figure 112017017534103-pat00011
    이고,
    상기 수학식 8은,
    Figure 112017017534103-pat00012
    인 것을 특징으로 하는 소수 판별 장치.
KR1020170022538A 2017-02-20 2017-02-20 하드웨어 타입 소수 판별 장치 및 그 방법 KR101731921B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170022538A KR101731921B1 (ko) 2017-02-20 2017-02-20 하드웨어 타입 소수 판별 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170022538A KR101731921B1 (ko) 2017-02-20 2017-02-20 하드웨어 타입 소수 판별 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101731921B1 true KR101731921B1 (ko) 2017-05-02

Family

ID=58742584

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170022538A KR101731921B1 (ko) 2017-02-20 2017-02-20 하드웨어 타입 소수 판별 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101731921B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190081904A (ko) * 2017-12-29 2019-07-09 이상지 자연수에 적용가능하며 무조건적이며 결정론 방식을 이용한 소수판별 및 소인수분해 방법
CN113377813A (zh) * 2021-06-08 2021-09-10 上海商米科技集团股份有限公司 全局唯一标识码生成方法、设备、系统和计算机可读介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007218997A (ja) 2006-02-14 2007-08-30 Toshiba Corp 素数生成装置、プログラム及び方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007218997A (ja) 2006-02-14 2007-08-30 Toshiba Corp 素数生成装置、プログラム及び方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190081904A (ko) * 2017-12-29 2019-07-09 이상지 자연수에 적용가능하며 무조건적이며 결정론 방식을 이용한 소수판별 및 소인수분해 방법
KR102000914B1 (ko) 2017-12-29 2019-07-17 이상지 자연수에 적용가능하며 무조건적이며 결정론 방식을 이용한 소수판별 및 소인수분해 방법
CN113377813A (zh) * 2021-06-08 2021-09-10 上海商米科技集团股份有限公司 全局唯一标识码生成方法、设备、系统和计算机可读介质
CN113377813B (zh) * 2021-06-08 2023-08-29 上海商米科技集团股份有限公司 全局唯一标识码生成方法、设备、系统和计算机可读介质

Similar Documents

Publication Publication Date Title
US8903882B2 (en) Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product
US7603558B2 (en) Montgomery transform device, arithmetic device, IC card, encryption device, decryption device and program
EP2228716B1 (en) Fault-resistant calculcations on elliptic curves
US10209958B2 (en) Reproducible stochastic rounding for out of order processors
Lórencz New algorithm for classical modular inverse
KR101731921B1 (ko) 하드웨어 타입 소수 판별 장치 및 그 방법
Karmakar et al. Efficient finite field multiplication for isogeny based post quantum cryptography
Gutub et al. Scalable VLSI architecture for GF (p) Montgomery modular inverse computation
Gleixner et al. Linear programming using limited-precision oracles
Sreedhar et al. A fast large-integer extended GCD algorithm and hardware design for verifiable delay functions and modular inversion
CN115062342A (zh) 隐私计算方法、装置、电子设备和可读存储介质
Yan et al. An implementation of Montgomery modular multiplication on FPGAs
KR101666974B1 (ko) 소수 생성
US11502836B2 (en) Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product
KR101929984B1 (ko) 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
JP7055142B2 (ja) 暗号アプリケーションのための素数を生成する方法
AbuDaqa et al. Taxonomy and Practical Evaluation of Primality Testing Algorithms
JP6173571B2 (ja) 回路設計装置および回路設計プログラム
Pomykała et al. On reducing factorization to the discrete logarithm problem modulo a composite
Yakymenko et al. Polynomial Rabin cryptosystem based on the operation of addition
KR101918741B1 (ko) 안전소수 판별 방법
KR101764343B1 (ko) 여분 기저 기반의 유한체상 곱셈 장치 및 방법
Kim et al. Design and analysis of efficient parallel hardware prime generators
US8805904B2 (en) Method and apparatus for calculating the number of leading zero bits of a binary operation
US11159183B2 (en) Residue checking of entire normalizer output of an extended result

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant