KR102241252B1 - 모듈러 연산 방법, 장치 및 시스템 - Google Patents

모듈러 연산 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR102241252B1
KR102241252B1 KR1020200167733A KR20200167733A KR102241252B1 KR 102241252 B1 KR102241252 B1 KR 102241252B1 KR 1020200167733 A KR1020200167733 A KR 1020200167733A KR 20200167733 A KR20200167733 A KR 20200167733A KR 102241252 B1 KR102241252 B1 KR 102241252B1
Authority
KR
South Korea
Prior art keywords
modular
value
multiplexer
reminder
multiplicand
Prior art date
Application number
KR1020200167733A
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 KR1020200167733A priority Critical patent/KR102241252B1/ko
Application granted granted Critical
Publication of KR102241252B1 publication Critical patent/KR102241252B1/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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/498Computations with decimal numbers radix 12 or 20. using counter-type accumulators
    • G06F7/4983Multiplying; Dividing

Landscapes

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

Abstract

모듈러 연산 장치가 개시된다. 본 장치는 복수의 멀티플렉서 및 쉬프트 레지스터를 포함하며, 이를 이용하여 모듈러 연산을 수행할 수 있다. 이에 따라, 적은 공간을 점유하는 구성들을 이용하여 모듈러 연산을 신속하게 수행할 수 있다.

Description

모듈러 연산 방법, 장치 및 시스템{METHOD, APPARATUS AND SYSTEM FOR PERFORMING MODULAR ARITHMETIC}
본 개시는 하드웨어 기반의 모듈러 연산을 수행하는 방법, 장치 및 시스템에 관한 것이다.
무선 센서 네트워크(Wireless Sensor Network; WSN)란, 유비쿼터스 컴퓨팅(Ubiqutous Computing) 구현을 위한 기반 네트워크로서, 센싱과 통신 기능을 가지고 있는 소형 무선 송수신 장치인 센서 노드(Sensor Node) 및 센서 노드에서 센싱된 정보를 취합하거나 이벤트성 데이터를 외부로 연계하고 관련 센서 네트워크를 관리하는 싱크 노드(Sink Node)로 구성되는 네트워크를 말한다. 이러한 무선 센서 네트워크는 기존의 네트워크와는 달리 의사소통을 목적으로 하는 것이 아니라 자동화된 원격 정보 수집을 기본 목적으로 하는 것이다.
무선 센서 네트워크는 유비쿼터스 환경의 핵심 기술로서 목표물 추적, 환경 감시, 교통정보 관리, 물류 관리 등 여러 응용 분야에 폭넓게 활용되고 있음은 물론 다양한 잠재적 응용 분야에 활용될 수 있다.
최근 타원 곡선 암호(Elliptic Curve Cryptography, ECC)는 무선 센서 네트워크에서 고속 데이터 암호화 및 에너지 효율적이 노드 인증을 위한 최적의 솔루션으로 부상하고 있다.
ECC 프로세스에서 ECC 곱셈(ECCM, Elliptic Curve Scalar Multiplication)은 키 생성 및 인증시에 빈번하게 사용되는 백본 연산으로, ECC 시스템의 성능은 ECC 곱셈의 효율성에 따라 큰 영향을 받게된다.
이에, ECC 곱셈을 효율적으로 수행하는 방법이 필요하다 할 것이다.
한편, 상기와 같은 정보는 본 발명의 이해를 돕기 위한 백그라운드(background) 정보로서만 제시될 뿐이다. 상기 내용 중 어느 것이라도 본 발명에 관한 종래 기술로서 적용 가능할지 여부에 관해, 어떤 결정도 이루어지지 않았고, 또한 어떤 주장도 이루어지지 않는다.
선행 기술 : 공개특허공보 제10-2009-1004421호(공개일: 2009,10.06)
본 발명이 해결하고자 하는 과제는 하드웨어 기반의 모듈러 연산 방법, 장치 및 시스템을 제공하는 데에 있다.
본 발명의 또 다른 과제는, 간단한 구조로 모듈러 연산의 속도를 효과적으로 상승시키는 모듈러 연산 장치를 제공하는 데에 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따른 모듈러 연산(Modular Arithmetic) 장치는 제1 내지 제4 멀티플렉서(Multiplexer); 및 승수(Multiplier, Y)가 저장되는 쉬프트 레지스터(Shift Register)를 포함할 수 있다.
상기 모듈러 연산 장치는, 승수(Y)의 모든 비트(Bit)가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(Multiplicand, X) 및 상기 승수(Y)의 모듈러 곱셈 연산을, 상기 제1 내지 제4 멀티플렉서를 이용하여 수행할 수 있다.
상기 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따른 모듈러 연산 방법은 승수(Y)를 쉬프트 레지스터에 저장하는 단계; 및 상기 쉬프트 레지스터 상에서 상기 승수(Y)의 모든 비트가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산을, 제1 내지 제4 멀티플렉서를 이용하여 수행하는 단계를 포함할 수 있다.
상기 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따른 모듈러 연산 시스템은 복수의 모듈러 연산 장치; 및 복수의 모듈러 연산을 포함하는 연산식을 입력받으면, 상기 복수의 모듈러 연산을 복수의 모듈러 연산 장치에 분배하는 모듈러 연산 스케줄러를 포함할 수 있다.
상기 복수의 모듈러 연산 장치 각각은, 제1 내지 제4 멀티플렉서; 및 승수(Y)가 저장되는 쉬프트 레지스터를 포함할 수 있다.
상기 복수의 모듈러 연산 장치 각각은, 승수(Y)의 모든 비트가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산을 상기 제1 내지 제4 멀티플렉서를 이용하여 수행할 수 있다.
상기 모듈러 연산 스케줄러는, 상기 모듈러 연산 장치들이 도출한 결과 값에 기초하여, 상기 연산식의 결과 값을 출력할 수 있다.
본 발명에서 이루고자 하는 기술적 과제들의 해결 수단은 이상에서 언급한 해결 수단들로 제한되지 않으며, 언급하지 않은 또 다른 해결 수단들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 다양한 실시 예에 의해, 종래 기술에 비해 월등히 빠른 속도의 모듈러 연산이 수행될 수 있으며, 이에 따라 ECC 시스템의 성능이 향상될 수 있다. 또한, 적은 공간을 차지하는 하드웨어를 이용하여 모듈러 연산이 수행될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 모듈러 연산 방법이 적용될 수 있는 시스템을 개략적으로 설명하기 위한 도면,
도 2는 본 발명의 일 실시 예에 따른 모듈러 연산 장치의 하드웨어 구성을 나타내는 블록 구성도,
도 3은 본 발명의 일 실시 예에 따른 모듈러 연산 방법의 알고리즘을 나타내고,
도 4는 본 발명의 일 실시 예에 따른 병렬 기반의 가산기를 나타내고,
도 5(a)는 본 발명의 일 실시 예에 따른 모듈러 연산 방법을 적용한 경우의 소요 시간을 나타내고, 도 5(b)는 비교 예에 따른 모듈러 연산 방법을 적용한 경우의 소요 시간을 나타내며, 마지막으로,
도 6은 본 발명의 일 실시 예에 따른 모듈러 연산 방법의 시퀀스도이다.
이하, 첨부된 도면들을 참조하여 본 발명의 예시적인 실시예들에 대하여 설명한다. 본 발명은 서로 다른 다양한 형태들로 구현될 수 있으며, 본 명세서에 설명된 실시예들로 한정되는 것으로 해석되어서는 안 된다. 도면에서 구성요소들, 계층들 및 영역들의 상대적인 크기는 설명의 명확성을 위해 과장될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 모듈러 연산 방법이 적용될 수 있는 타원 곡선 암호(Elliptic Curve Cryptography, 이하 “ECC”로 약칭함) 시스템을 개략적으로 설명하기 위한 도면이다.
우선, 모듈러 연산(Modular Arithmetic)은 유한개의 원소 만으로 산술 연산을 수행하는 것이라 할 수 있으며, 모듈러 연산은 유한체(Galois Field, GF) 상에서 특정 소수(Prime Number) P에 대해, [1, P-1] 값을 산출할 수 있다.
도 1에 도시된 타원 곡선은 y2 = x3 + ax + b(a, b는 상수)로 표현될 수 있으며, 본 타원 곡선은 타원 곡선 암호(ECC) 시스템이 키 생성 및 인증할 때, 사용될 수 있다.
타원 곡선 상의 임의의 포인트 P를 중심으로 식 R = 2 * P 이 성립할 수 있다(정의). 즉, 타원 곡선 상의 P에 접하는 직선 F가 타원 곡선과 만나는 점을 X축 대칭한 포인트 R은 포인트 P의 2 배가 될 수 있다. 포인트 R에 접하는 또 다른 직선이 타원 곡선과 만나는 지점(O)은 O = 2 * R = 4 * P 식을 만족할 수 있다.
ECC 시스템은 타원 곡선 상의 임의의 포인트 P를 이용하여 공개키(Q)를 생성할 때, 식 Q = d * P (d는 임의의 스칼라이며, 개인키)을 이용할 있다.
ECC 시스템은 개인키(d) 및 포인트 P를 알고 있으므로 공개키(Q)를 쉽게 생성할 수 있다. 그러나, 개인키(d)를 모르는 가상의 침입자의 경우, 공개키(Q)와 임의의 포인트(P)를 알더라도 d를 알아내기가 매우 어렵다.
이에 따라, 최근 블록 체인(Block Chain) 암호 분야를 포함한 다양한 분야에서 ECC 알고리즘에 의한 키 생성 및 인증 프로세스를 사용하고 있으며, 다른 공개키 알고리즘에 비해 적은 비트수를 이용하여 높은 보안성을 갖출 수 있다는 장점이 있다. ECC 시스템의 백본(Back Bone)에서 모듈러 연산이 빈번하게 사용될 수 있다.
도 2는 본 발명의 일 실시 예에 따른 모듈러 연산 장치(100)의 하드웨어 구성을 나타내는 블록 구성도이다.
모듈러 연산 장치(100)는 소수(P)에 의한 피승수(Multiplicand, X) 및 상기 승수(Y)의 모듈러 곱셈 연산을 수행할 수 있다.
모듈러 연산 장치(100)는 제1 내지 제4 멀티플렉서(MUX1~MUX4), 복수의 가산기(Adder1~Adder4), NOT 게이트, 쉬프트 레지스터(SR) 및 저장 레지스터(RR) 등을 포함할 수 있다.
제1 내지 제4 멀티플렉서(MUX1~MUX4)는 여러 개의 입력선 중에서 하나를 선택하여 단일 출력선으로 연결하는 조합회로를 포함할 수 있다.
쉬프트 레지스터(SR)는 모듈러 곱셈의 승수(Multipler, Y)를 저장할 수 있으며, 반복 구간마다, 쉬프트 레지스터(SR)에 저장된 데이터 비트를 오른쪽 방향으로 한 칸씩 이동할 수 있다. 쉬프트 전부터 쉬프트 후까지의 기간을 하나의 반복 구간이라 할 수 있다.
모듈러 연산 장치(100)는 승수(Y)의 모든 비트(Bit)가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(Multiplicand, X) 및 승수(Y)의 모듈러 곱셈 연산을, 제1 내지 제4 멀티플렉서(MUX1~MUX4)를 이용하여 수행할 수 있다.
선택적 실시 예로, 모듈러 연산 장치(100)는 모듈러 곱셈 연산을 아래 [식 1]에 기초하여 수행할 수 있다.
[식 1]
Z = X * Y mod P
여기서, Z는 반복 구간 별 리메인더(Remainder)이며, 0 내지 P-1의 정수이며, 초기 값은 0으로 설정될 수 있다.
모듈러 연산 장치(100)는 나머지 연산(가령, U mod P 또는 V mod P)을 제2 멀티플렉서(MUX2) 및 제4 멀티플렉서(MUX4)를 이용하여 수행할 수 있다.
구체적으로, 제2 멀티플렉서(MUX2)를 예로 설명하면, 모듈러 연산 장치(100)는 U mod P 연산을 수행하기 위해, 제2 멀티플렉서(MUX2), 제1 가산기(Adder1) 및 P를 입력으로 하는 NOT 게이트 등을 이용하여 U mod P 연산을 수행할 수 있다.
이 경우, 제1 가산기(Adder1)는 U 및 P에 대한 2의 보수(NOT 게이트 및 1을 입력)를 합하여, 뺄셈 연산을 수행하여 결과값을 제2 멀티플렉서(MUX2)의 제1 입력단에 입력하고, 제2 멀티플렉서(MUX2)는 사인 비트에 따라 출력(U 또는 U-P 연산값)을 달리 할 수 있다. 상기 과정은 U가 P보다 작을 때까지 반복되어, 결국 U mod P 연산이 수행될 수 있다. 제4 멀티플렉서(MUX4)를 이용하여, V mod P 를 연산하는 과정도 유사하다.
리메인더 레지스터(RR)는 제4 멀티플렉서(MUX4)의 출력단과 연결되어, 중간 결과값 또는 최종 결과값인 리메인더(Z)를 저장할 수 있다.
제4 멀티플렉서(MUX4)는 반복 구간 별로, 제3 멀티플렉서(MUX3)가 출력하는 값(V)에 대해, P를 제수(Divisor)로 하여 리메인더(Z)를 출력할 수 있다.
그러면, 리메인더 레지스터(RR)는 반복 구간 별로 출력된 리메인더(Z)를 오버라이팅(Overwriting) 방식으로 저장할 수 있다. 리메인더 레지스터(RR)는 출력된 리메인더(Z)를 제2 가산기(Adder2)에 입력할 수 있다.
제1 멀티플렉서(MUX1)는 제1 입력단에서 피승수(X)의 값을, 제2 입력단에서 피승수(X)의 2 배값(U)을 입력받을 수 있다. 제1 멀티플렉서(MUX1)는 최초 반복 구간에서 피승수(X)의 값을 출력하고, 상기 최초 반복 구간 이후에는 피승수(X)의 2 배값(U)을 출력할 수 있다.
제3 멀티플렉서(MUX3)는 제1 입력단에서 상기 리메인더(Z) 값을, 제2 입력단에서 상기 리메인더(Z) 값과 상기 제1 멀티플렉서의 출력값(U)의 합산값(Z+U)을 입력받을 수 있다.
이때, 제3 멀티플렉서(MUX3)는 사인 비트를 통해, 쉬프트 레지스터의 LSB(Least Significant Bit)가 1인 경우 합산값(Z+U)을 출력하고, 상기 LSB가 0인 경우 상기 리메인더(Z) 값을 출력할 수 있다.
제2 멀티플렉서(MUX2)는 피승수(X)의 2 배값(U)에 대해, 상기 P를 제수(Divisor)로 나눔 연산한 리메인더를 출력할 수 있다.
선택적 실시 예로, 제1 멀티플렉서로 입력되는 U(2X) 만 그대로 두고, 제4 멀티플렉서(MUX4)의 출력단에서 U를 X mod P 로 연산하는 모듈(소정의 멀티플렉서 포함)이 제2 멀티플렉서(MUX2)를 대체하여 구성될 수도 있다.
선택적 실시 예로, 피승수(X)의 비트 자리수가 상기 승수(Y)의 비트 자리수보다 많도록 구성될 수 있다. 이는, 승수(X)의 쉬프트가 완료되어야 연산이 완료되므로, 연산 속도에 유리할 수 있다.
또한, 본 발명의 일 실시 예에 따른 모듈러 연산 장치(100)는 인터리브드(Interleaved) 모듈러 연산을 수행하며, 다른 연산 방법(가령, Montgomery Ladder 방법)보다 피승수(X)의 크기가 클 때 더욱 효과적이다.
도 3은 본 발명의 일 실시 예에 따른 모듈러 연산 방법을 설명하기 위한 알고리즘이다.
먼저, 입력은 피승수(X), 승수(Y) 및 소수(P)이며, 출력은 리메인더(Z)일 수 있다. 모듈화 연산 방법은 초기화를 수행한 후, 쉬프트 레지스터(SR) 상에서 승수(Y)의 모든 비트가 순차적으로 쉬프트되기까지 알고리즘 코드를 수행할 수 있다.
구체적으로, 모듈러 연산 방법은 최초 반복시에만 U를 X로 설정하고, 최초 반복 이후에는 U를 X의 2 배값으로 설정한다(제1 및 제2 멀티플렉서(MUX1, MUX2) 이용, 3~7 라인).
모듈러 연산 방법은 승수(Y)의 마지막 비트(1 또는 0)에 따라 V 값을 달리 설정할 수 있다(Z+U 또는 Z, 8~12 라인).
모듈러 연산 방법은 V mod P 연산 결과를 Z로 설정하고, U mod P 연산 결과를 X로 설정할 수 있으며(13 라인), 그 다음 Y(승수)의 한 비트를 쉬프트할 수 있다(14 라인).
이하에서는, 아래 [표 1]와 같이, 모듈러 연산 방법은 피승수(X)를 2(0010)로 승수(Y)를 6(0110), 소수(P)를 5(0101)로 설정하여, 반복 구간 별 시뮬레이션을 수행할 수 있다.
최초 반복
(011 0 )
2nd 반복
(01 1 0)
3nd 반복
(0 1 10)
4nd 반복
( 0 110, Y가 0이므로 실행 안함)
X 2->2 2->4 4->3
U 0->2 2->4 4->8
V 0->0 0->4 4->12
Z 0->0 0->4 4->2
도 4는 본 발명의 일 실시 예에 따른 병렬 가산기를 설명하기 위한 도면이다.
본 발명의 일 실시 예에 따른 가산기는 N비트 병렬 가산기이며, 오버플로우(1+1)가 발생(C)하면, 해당 값(C)을 상위 비트에 가산할 수 있다. 최종값은 S(Sn~S0)으로 도출될 수 있으며, Sn이 가장 상위의 비트(MSB)에 해당할 수 있다.
도 5(a)는 본 발명의 일 실시 예에 따른 모듈러 연산 방법을 적용한 경우의 소요 시간을 나타내고, 도 5(b)는 비교 예에 따른 모듈러 연산 방법을 적용한 경우의 소요 시간을 나타낸다.
도 5(a)를 참고하면, 본 발명의 일 실시 예에 따른 모듈러 연산 장치(100)의 연산 속도는 65 ns 로, 비교 예의 257.5보다 1/4 가량 줄어드는 것이 관측될 수 있다. 이는 최소 개수의 연산기(복수의 멀티플렉서, 가산기 등)와 쉬프트 레지스터에 의해 연산이 수행되기 때문이다.
도 5(a) 및 도 5(b)의 경우, 공통적으로, 모두 1 클럭의 사이클은 1 ns 이며, 오프셋(OFFSET) 지연은 0.5ns 로 설정될 수 있다.
또한 본 발명의 일 실시 예에 따른 모듈러 연산 장치(100)의 경우, 효울적인 면적 활용을 제공할 수 있다. 가령, 모듈러 연산 장치(100)는 1491개의 룩업 테이블, 514 개의 점유 슬라이스, 1028 개의 슬라이스 레지스터/플립 플롭이 사용될 수 있으며, 3.03 의 평균 팬아웃이 보장될 수 있다.
또한, 본 발명의 일 실시 예에 따른 모듈러 연산 장치(100)는 256 비트의 필드 사이즈를 갖으며, 257개의 CCR(Clock Cycles Required) 및 1.45 μs 의 소요 시간이 요구될 수 있다. 또한, 본 발명의 일 실시 예에 따른 모듈러 연산 방법에 의하면, 승수(Y)의 비트수가 N 비트보다 작더라도 N+1 의 클럭 사이클을 소비하는 종래 기술의 한계를 극복할 수 있다.
도 6은 본 발명의 일 실시 예에 따른 모듈러 연산 방법의 시퀀스도이다.
모듈러 곱셈 연산이 시작되면, 모듈러 연산 장치(100)는 승수(Y)를 쉬프트 레지스터에 저장한다(S710).
그 다음, 모듈러 연산 장치(100)는 승수(Y)의 모든 비트가 쉬프트 되었는지 확인한다(S720),
만약, 모든 비트가 쉬프트 되었다면(S720), 모듈러 연산 장치(100)는 리메인더(Z)를 출력한다(S730).
만약, 모든 비트가 쉬프트 되지 않았다면(S720), 모듈러 연산 장치(100)는 소수(P)에 의한 피승수(X) 및 승수(Y)의 모듈러 곱셈 연산을 제1 내지 제4 멀티플렉서를 이용하여 수행한다(S740).
상기 멀티플렉서를 이용하여 수행하는 단계(S740)는 아래의 다양한 단계를 포함할 수 있다.
먼저, 상기 멀티플렉서를 이용하여 수행하는 단계(S740)는 소수(P)에 의한 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산을 아래 [식 2]을 이용하여 수행하는 단계를 포함할 수 있다.
[식 2]
Z = X * Y mod P
또한, 상기 멀티플렉서를 이용하여 수행하는 단계(S740)는 제4 멀티플렉서를 이용하여, 반복 구간 별로, 상기 제3 멀티플렉서가 출력하는 값(V)에 대해 상기 P를 제수(Divisor)로 하여 상기 리메인더(Z)를 출력하는 단계 및 리메인더(Z)를 리메인더 레지스터에 오버라이팅 방식으로 저장하는 단계를 포함할 수 있다.
또한, 상기 멀티플렉서를 이용하여 수행하는 단계(S740)는 제1 입력단에서 피승수(X)의 값을, 제2 입력단에서 피승수(X)의 2 배값(U)을 입력받는 상기 제1 멀티플렉서를 이용하여, 최초 반복 구간에서 피승수(X)의 값을 출력하고, 상기 최초 반복 구간 이후에는 피승수(X)의 2 배값(U)을 출력하는 단계를 포함할 수 있다.
또한, 상기 멀티플렉서를 이용하여 수행하는 단계(S740)는 제1 입력단에서 상기 리메인더(Z) 값을, 제2 입력단에서 상기 리메인더(Z) 값과 상기 제1 멀티플렉서의 출력값의 합산값을 입력받는 제3 멀티플렉서를 이용하여, 상기 쉬프트 레지스터의 LSB(Least Significant Bit)가 1인 경우 상기 합산값을 출력하고, 상기 LSB가 0인 경우 상기 리메인더(Z) 값을 출력하는 단계를 포함할 수 있다.
또한, 상기 멀티플렉서를 이용하여 수행하는 단계(S740)는 상기 제2 멀티플렉서를 이용하여, 피승수(X)의 2 배값(U)에 대해, 상기 P를 제수(Divisor)로 나눔 연산한 리메인더를 출력하는 단계를 포함할 수 있다.
여기서, 피승수(X)의 비트 자리수가 상기 승수(Y)의 비트 자리수보다 많도록 구성될 수 있다.
한편, 본 발명의 일 실시 예에 따른 모듈러 연산 시스템은 복수의 모듈러 연산 장치 및 복수의 모듈러 연산을 포함하는 연산식을 입력받으면, 복수의 모듈러 연산을 복수의 모듈러 연산 장치에 분배하는 모듈러 연산 스케줄러를 포함할 수 있다.
여기서, 복수의 모듈러 연산 장치 각각은, 제1 내지 제4 멀티플렉서 및 승수(Y)가 저장되는 쉬프트 레지스터를 포함할 수 있다.
복수의 모듈러 연산 장치 각각은, 승수(Y)의 모든 비트가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산을, 상기 제1 내지 제4 멀티플렉서를 이용하여 수행할 수 있다.
여기서, 모듈러 연산 스케줄러는, 모듈러 연산 장치들이 도출한 결과 값에 기초하여, 상기 연산식의 결과 값을 출력할 수 있다.
상기 모듈러 연산 스케줄러는 연산식의 결과 값을 산출하는데 소요되는 예상 시간을 산출할 수 있다. 모듈러 연산 스케줄러는, 복수의 모듈러 장치의 퍼포먼스에 대한 정보를 통계적으로 저장하여, 소정의 모듈러 연산에 대한 각 장치의 연산 소요 시간을 추정할 수 있다.
앞에서, 본 발명의 특정한 실시예가 설명되고 도시되었지만 본 발명은 기재된 실시예에 한정되는 것이 아니고, 이 기술 분야에서 통상의 지식을 가진 자는 본 발명의 사상 및 범위를 벗어나지 않고서 다른 구체적인 실시예로 다양하게 수정 및 변형할 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 범위는 설명된 실시예에 의하여 정하여 질 것이 아니고 청구범위에 기재된 기술적 사상에 의해 정하여져야 할 것이다.

Claims (16)

  1. 모듈러 연산(Modular Arithmetic) 장치로서,
    제1 내지 제4 멀티플렉서(Multiplexer); 및
    승수(Multiplier, Y)가 저장되는 쉬프트 레지스터(Shift Register)를 포함하며,
    상기 승수(Y)의 모든 비트(Bit)가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(Multiplicand, X) 및 상기 승수(Y)의 모듈러 곱셈 연산을, 상기 제1 내지 제4 멀티플렉서를 이용하여 수행하는, 모듈러 연산 장치.
  2. 제1항에 있어서,
    상기 소수(P)에 의한 상기 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산은 아래 [식 1]에 의해 수행되는, 모듈러 연산 장치
    [식 1]
    Z = X * Y mod P
    (여기서, Z는 상기 반복 구간 별 리메인더(Remainder)이며, 0 내지 P-1의 정수이며, 초기 값은 0으로 설정됨).
  3. 제2항에 있어서,
    상기 제4 멀티플렉서의 출력단과 연결되어 상기 리메인더(Z)를 저장하는 리메인더 레지스터를 더 포함하며,
    상기 제4 멀티플렉서는,
    반복 구간 별로, 상기 제3 멀티플렉서가 출력하는 값(V)에 대해, 상기 P를 제수(Divisor)로 하여 상기 리메인더(Z)를 출력하고,
    상기 리메인더 레지스터는,
    반복 구간 별로 출력된 상기 리메인더(Z)를 오버라이팅(Overwriting) 방식으로 저장하도록 구성되는, 모듈러 연산 장치.
  4. 제1항에 있어서,
    상기 제1 멀티플렉서는,
    제1 입력단에서 피승수(X)의 값을, 제2 입력단에서 피승수(X)의 2 배값(U)을 입력받고,
    최초 반복 구간에서 피승수(X)의 값을 출력하고, 상기 최초 반복 구간 이후에는 피승수(X)의 2 배값(U)을 출력하도록 구성되는, 모듈러 연산 장치.
  5. 제2항에 있어서,
    상기 제3 멀티플렉서는,
    제1 입력단에서 상기 리메인더(Z) 값을, 제2 입력단에서 상기 리메인더(Z) 값과 상기 제1 멀티플렉서의 출력값의 합산값을 입력받고,
    상기 쉬프트 레지스터의 LSB(Least Significant Bit)가 1인 경우 상기
    합산값을 출력하고, 상기 LSB가 0인 경우 상기 리메인더(Z) 값을 출력하도록 구성되는, 모듈러 연산 장치.
  6. 제4항에 있어서,
    상기 제2 멀티플렉서는,
    피승수(X)의 2 배값(U)에 대해, 상기 P를 제수(Divisor)로 나눔 연산한 리메인더를 출력하도록 구성되는, 모듈러 연산 장치.
  7. 제1항에 있어서,
    상기 피승수(X)의 비트 자리수가 상기 승수(Y)의 비트 자리수보다 많도록 구성되는, 모듈러 연산 장치.
  8. 모듈러 연산 방법으로서,
    승수(Y)를 쉬프트 레지스터에 저장하는 단계; 및
    상기 쉬프트 레지스터 상에서 상기 승수(Y)의 모든 비트가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산을, 제1 내지 제4 멀티플렉서를 이용하여 수행하는 단계를 포함하는, 모듈러 연산 방법.
  9. 제8항에 있어서,
    상기 멀티플렉서를 이용하여 수행하는 단계는,
    상기 소수(P)에 의한 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산을
    아래 [식 2]을 이용하여 수행하는 단계를 포함하는, 모듈러 연산 방법
    [식 2]
    Z = X * Y mod P
    (여기서, Z는 상기 반복 구간 별 리메인더(Remainder)이며, 0 내지 P-1의 정수이며, 초기 값은 0으로 설정됨).
  10. 제9항에 있어서,
    상기 멀티플렉서를 이용하여 수행하는 단계는,
    상기 제4 멀티플렉서를 이용하여, 반복 구간 별로, 상기 제3 멀티플렉서가 출력하는 값(V)에 대해 상기 P를 제수(Divisor)로 하여 상기 리메인더(Z)를 출력하는 단계; 및
    상기 리메인더(Z)를 리메인더 레지스터에 오버라이팅 방식으로 저장하는 단계를 포함하는, 모듈러 연산 방법.
  11. 제8항에 있어서,
    상기 멀티플렉서를 이용하여 수행하는 단계는,
    제1 입력단에서 피승수(X)의 값을, 제2 입력단에서 피승수(X)의 2 배값(U)을 입력받는 상기 제1 멀티플렉서를 이용하여, 최초 반복 구간에서 피승수(X)의 값을 출력하고, 상기 최초 반복 구간 이후에는 피승수(X)의 2 배값(U)을 출력하는 단계를 포함하는, 모듈러 연산 방법.
  12. 제9항에 있어서,
    상기 멀티플렉서를 이용하여 수행하는 단계는,
    제1 입력단에서 상기 리메인더(Z) 값을, 제2 입력단에서 상기 리메인더(Z) 값과 상기 제1 멀티플렉서의 출력값의 합산값을 입력받는 제3 멀티플렉서를 이용하여, 상기 쉬프트 레지스터의 LSB(Least Significant Bit)가 1인 경우 상기 합산값을 출력하고, 상기 LSB가 0인 경우 상기 리메인더(Z) 값을 출력하는 단계를 포함하는, 모듈러 연산 방법.
  13. 제11항에 있어서,
    상기 멀티플렉서를 이용하여 수행하는 단계는,
    상기 제2 멀티플렉서를 이용하여, 피승수(X)의 2 배값(U)에 대해, 상기 P를 제수(Divisor)로 나눔 연산한 리메인더를 출력하는 단계를 포함하는, 모듈러 연산 방법.
  14. 제8항에 있어서,
    상기 피승수(X)의 비트 자리수가 상기 승수(Y)의 비트 자리수보다 많도록 구성되는, 모듈러 연산 방법.
  15. 모듈러 연산 시스템으로서,
    복수의 모듈러 연산 장치; 및
    복수의 모듈러 연산을 포함하는 연산식을 입력받으면, 상기 복수의 모듈러 연산을 복수의 모듈러 연산 장치에 분배하는 모듈러 연산 스케줄러를 포함하며,
    복수의 모듈러 연산 장치 각각은,
    제1 내지 제4 멀티플렉서; 및
    승수(Y)가 저장되는 쉬프트 레지스터를 포함하며,
    복수의 모듈러 연산 장치 각각은,
    상기 승수(Y)의 모든 비트가 순차적으로 쉬프트되기까지 반복 구간 별로, 소수(P)에 의한 피승수(X) 및 상기 승수(Y)의 모듈러 곱셈 연산을, 상기 제1 내지 제4 멀티플렉서를 이용하여 수행하며,
    상기 모듈러 연산 스케줄러는,
    상기 모듈러 연산 장치들이 도출한 결과 값에 기초하여, 상기 연산식의 결과 값을 출력하도록 구성되는, 모듈러 연산 시스템.
  16. 제15항에 있어서,
    상기 모듈러 연산 스케줄러는,
    상기 연산식의 결과 값을 산출하는데 소요되는 예상 시간을 산출하도록 구성되는, 모듈러 연산 시스템.

KR1020200167733A 2020-12-03 2020-12-03 모듈러 연산 방법, 장치 및 시스템 KR102241252B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200167733A KR102241252B1 (ko) 2020-12-03 2020-12-03 모듈러 연산 방법, 장치 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200167733A KR102241252B1 (ko) 2020-12-03 2020-12-03 모듈러 연산 방법, 장치 및 시스템

Publications (1)

Publication Number Publication Date
KR102241252B1 true KR102241252B1 (ko) 2021-04-15

Family

ID=75440691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200167733A KR102241252B1 (ko) 2020-12-03 2020-12-03 모듈러 연산 방법, 장치 및 시스템

Country Status (1)

Country Link
KR (1) KR102241252B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114840175A (zh) * 2022-06-30 2022-08-02 中科声龙科技发展(北京)有限公司 一种实现取余运算的装置、方法及运算芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000000770A (ko) * 1998-06-03 2000-01-15 정선종 모듈러 곱셈장치
KR20030097906A (ko) * 2001-06-01 2003-12-31 콸콤 인코포레이티드 시분할 멀티플렉스 동기화 시퀀스를 탐색하기 위한 방법및 장치
KR101136972B1 (ko) * 2008-12-11 2012-04-19 한국전자통신연구원 타원곡선 암호 연산 방법
KR101326078B1 (ko) * 2007-10-11 2013-11-08 삼성전자주식회사 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000000770A (ko) * 1998-06-03 2000-01-15 정선종 모듈러 곱셈장치
KR20030097906A (ko) * 2001-06-01 2003-12-31 콸콤 인코포레이티드 시분할 멀티플렉스 동기화 시퀀스를 탐색하기 위한 방법및 장치
KR101326078B1 (ko) * 2007-10-11 2013-11-08 삼성전자주식회사 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템
KR101136972B1 (ko) * 2008-12-11 2012-04-19 한국전자통신연구원 타원곡선 암호 연산 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114840175A (zh) * 2022-06-30 2022-08-02 中科声龙科技发展(北京)有限公司 一种实现取余运算的装置、方法及运算芯片
CN114840175B (zh) * 2022-06-30 2022-09-13 中科声龙科技发展(北京)有限公司 一种实现取余运算的装置、方法及运算芯片

Similar Documents

Publication Publication Date Title
Islam et al. FPGA implementation of high-speed area-efficient processor for elliptic curve point multiplication over prime field
Hossain et al. High‐performance elliptic curve cryptography processor over NIST prime fields
Islam et al. Area-time efficient hardware implementation of modular multiplication for elliptic curve cryptography
JP3784156B2 (ja) モジュラ掛け算方法
Asif et al. High‐throughput multi‐key elliptic curve cryptosystem based on residue number system
Shah et al. A high‐speed RSD‐based flexible ECC processor for arbitrary curves over general prime field
Seo et al. Binary and prime field multiplication for public key cryptography on embedded microprocessors
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
Karakoyunlu et al. Efficient and side-channel-aware implementations of elliptic curve cryptosystems over prime fields
Chen et al. Scalable and systolic dual basis multiplier over GF (2m)
US7412474B2 (en) Montgomery modular multiplier using a compressor and multiplication method
Harb et al. FPGA implementation of the ECC over GF (2m) for small embedded applications
KR102241252B1 (ko) 모듈러 연산 방법, 장치 및 시스템
Orup et al. A high-radix hardware algorithm for calculating the exponential ME modulo N.
Hu et al. A high speed processor for elliptic curve cryptography over NIST prime field
US6763366B2 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
Javeed et al. Area‐time efficient point multiplication architecture on twisted Edwards curve over general prime field GF (p)
KR20040067779A (ko) 정보 처리방법
Rashidi Efficient hardware implementations of point multiplication for binary Edwards curves
Fournaris et al. Affine coordinate binary edwards curve scalar multiplier with side channel attack resistance
KR20040055550A (ko) 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기
Gulen et al. Elliptic‐curve cryptography for wireless sensor network nodes without hardware multiplier support
Arazi et al. On calculating multiplicative inverses modulo $2^{m} $
Jeon et al. Low-power exponent architecture in finite fields