KR102496446B1 - 모듈러 연산을 위한 워드 병렬 연산 방법 - Google Patents

모듈러 연산을 위한 워드 병렬 연산 방법 Download PDF

Info

Publication number
KR102496446B1
KR102496446B1 KR1020200132562A KR20200132562A KR102496446B1 KR 102496446 B1 KR102496446 B1 KR 102496446B1 KR 1020200132562 A KR1020200132562 A KR 1020200132562A KR 20200132562 A KR20200132562 A KR 20200132562A KR 102496446 B1 KR102496446 B1 KR 102496446B1
Authority
KR
South Korea
Prior art keywords
modular
word
multiplication
value
bit
Prior art date
Application number
KR1020200132562A
Other languages
English (en)
Other versions
KR20220049212A (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 KR1020200132562A priority Critical patent/KR102496446B1/ko
Publication of KR20220049212A publication Critical patent/KR20220049212A/ko
Application granted granted Critical
Publication of KR102496446B1 publication Critical patent/KR102496446B1/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
    • G06F7/722Modular multiplication
    • 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/721Modular inversion, reciprocal or quotient calculation
    • 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/728Methods 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 using Montgomery reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords

Abstract

본 발명은 모듈러 연산을 위한 워드 병렬 연산 방법에 관한 것으로, 모듈러 곱셈의 승수와 피승수를 복수 비트의 워드 단위로 분할하는 단계와, 상기 분할된 워드 단위에 대응하는 복수개의 워드를 병렬로 모듈러 곱셈 연산을 수행하는 단계를 포함함으로써, 공개키 암호의 하드웨어 구현에 있어서 응용분야의 요구 성능에 최적화된 하드웨어 구조를 용이하게 설계할 수 있다.

Description

모듈러 연산을 위한 워드 병렬 연산 방법{WORD-PARALLEL CALCULATION METHOD FOR MODULAR ARITHMETIC}
본 발명은 공개키 암호의 하드웨어 구현에 있어서 응용분야의 요구 성능에 최적화된 하드웨어 구조를 용이하게 설계할 수 있는 모듈러 연산을 위한 워드 병렬 연산 방법에 관한 것이다.
잘 알려진 바와 같이, 대표적인 공개키 암호에는 ECC(elliptic curve cryptography), RSA(Rivest, Shamir, Adleman) 등이 있으며, 최근 에드워드곡선(edward curve) 또한 주목 받고 있다.
여기에서, RSA는 매우 큰 소수(prime number)의 곱으로 이루어진 정수의 인수분해가 어렵다는 점에 안전성의 기반을 두고 있으며, 전자서명이 가능하여 다양한 분야의 보안에 사용되고 있다.
그리고, ECC는 RSA보다 짧은 길이의 키를 사용하면서도 비슷한 안전성을 얻을 수 있어 많은 국제 표준(ISO, ANSI, NIST, SECG)에서 공개키 암호 방식으로 채택되고 있다.
또한, ECC와 에드워드곡선 공개키 암호의 연산은 점 덧셈(point addition)과 점 두배(point doubling) 연산의 반복으로 계산되며, 점 덧셈 연산과 점 두배 연산은 유한체(finite field) 상의 모듈러 가산 및 감산, 모듈러 곱셈이 필수로 사용되고, 모듈러 역원 연산 또한 공개키 암호 연산 과정 중 필수적으로 사용된다.
이러한 모듈러 가산 및 감산 연산은 이진(binary) 가산 및 감산 연산이 수행된 후, 그 결과를 모듈러 값과 비교하여 필요시 축약(reduction) 연산을 거쳐 최종 결과 값이 얻어지게 되는데, 모듈러 곱셈은 이진 곱셈과 모듈러 축약 연산을 위한 나눗셈 연산으로 계산될 수 있으며, 나눗셈 연산을 사용하지 않는 모듈러 곱셈 방법도 사용될 수 있다.
여기에서, 소수체 상의 모듈러 곱셈 방법으로는 기수(radix) 곱셈, 인터리브(interleaved) 모듈러 곱셈, 시프트-가산 곱셈, 몽고메리 곱셈 등 다양한 방법들이 사용될 수 있다.
또한, 모듈러 역원 연산을 구현하는 대표적인 방법은 최대 공약수(GCD)를 이용하는 방법과 페르마 소정리(Fermat’s little theorem)를 이용하는 방법이 있는데, 페르마 소정리에 의해 정수 a와 소수 p에 대해
Figure 112020108428403-pat00001
의 관계가 성립하므로, 양변을
Figure 112020108428403-pat00002
을 나누면 식
Figure 112020108428403-pat00003
로 모듈러 역원을 계산할 수 있다.
이러한 방법은 정수 a의 멱승 연산을 통해 a의 모듈러 역원
Figure 112020108428403-pat00004
을 계산할 수 있지만, 매우 많은 연산량을 필요로 하는 문제점이 있다.
또 다른 방법으로 유클리드 호제법을 이용한 모듈러 역원 계산 방법이 있으며, 소모 사이클 및 연산량을 줄이기 위한 다양한 형태의 변형된 방법들이 사용될 수 있다.
상술한 바와 같은 모듈러 연산은 유한 개의 원소로 구성되는 유한체(finite field) 내에서 이루어지는 연산으로, 유한체 그룹 내 원소간의 연산 결과가 그룹 내의 원소의 값을 가지며, 모듈러 연산에는 모듈러 가산 및 감산, 모듈러 곱셈, 모듈러 역원, 모듈러 나눗셈 등이 있으며, 모듈러 합동 특성을 이용할 수 있다.
최근 무선 통신의 보편화로 공개키 암호의 중요성이 높아지고 있으며, 키교환 프로토콜, 무선통신 보안 규격, 드론 및 자율주행 이동체 보안, 블록체인 등 공개키 암호의 응용분야가 확대되고 있는데, 공개키 암호 알고리듬과 프로토콜은 소프트웨어 또는 하드웨어로 구현될 수 있으나, 소프트웨어로 구현하는 경우는 보안시스템에서 요구하는 보안 안전성, 처리속도, 전력소비 등의 요구 조건을 만족하기 힘든 문제점이 있고, 보안 알고리듬과 프로토콜을 하드웨어로 구현하는 경우, 보안 안전성이 우수하며, 보안시스템에서 요구하는 처리속도, 면적, 전력소비 등에 맞게 최적화하여 구현하는 것이 가능한 장점이 있다.
아울러, 공개키 암호는 사용되는 응용분야에 따라 요구되는 성능 요건(처리속도, 하드웨어 복잡도, 전력소비 등)이 달라지므로, 응용분야의 성능 요건에 따라 하드웨어를 재설계해야 하는 불편함이 존재하는데, 예를 들어, 사물인터넷(IoT) 보안에는 저면적과 저전력 소모가 중요한 요소이며, 처리 속도는 중요하지 않은 반면에, 자율주행 이동체, 블록체인 등의 응용분야에서는 고속 처리가 중요한 요소가 된다.
상술한 바와 같이 공개키 암호의 하드웨어 구현을 위해 필수적으로 사용되는 유한체 연산회로 중, 연산 과정이 복잡하고 연산량이 많아서 처리속도, 하드웨어 복잡도(사용되는 게이트 수), 전력소비 등에 큰 영향을 미치는 소수체 상의 모듈러 곱셈과 모듈러 역원을 계산하는 기법과 하드웨어 장치의 구조에 대해 기술 개발이 필요한 실정이다.
1. 한국공개특허 제10-2003-0033580호(2003.05.01.공개)
본 발명은 공개키 암호의 하드웨어 구현에 있어서 응용분야의 요구 성능에 최적화된 하드웨어 구조를 용이하게 설계할 수 있는 모듈러 연산을 위한 워드 병렬 연산 방법을 제공하고자 한다.
또한, 본 발명은 ECC, RSA 등 공개키 암호의 하드웨어 구현에 있어서, 소수체 상의 모듈러 곱셈과 모듈러 역원 계산을 위해 피연산자 데이터를 일정 크기의 워드 단위로 분할하고, 다수 개의 워드를 동시에 병렬로 연산함으로써, 응용분야의 성능 요건에 따른 처리속도, 하드웨어 복잡도 및 전력소비를 구현할 수 있는 모듈러 연산을 위한 워드 병렬 연산 방법을 제공하고자 한다.
본 발명의 실시예들의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따르면, 모듈러 곱셈의 승수와 피승수를 복수 비트의 워드 단위로 분할하는 단계와, 상기 분할된 워드 단위에 대응하는 복수개의 워드를 병렬로 모듈러 곱셈 연산을 수행하는 단계를 포함하는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 곱셈 연산을 수행하는 단계는, 몽고메리 모듈러 곱셈 연산을 적용하되, 복수개의 처리요소(PE) 배열블록, 복수 비트의 이진곱셈기, 복수 비트의 가산기, 레지스터파일블록, 컨트롤러블록, 복수의 선택기 및 복수의 분배기를 포함하는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 곱셈 연산을 수행하는 단계는, 상기 몽고메리 모듈러 곱셈 연산을 통해 유한체 상에서 곱셈 연산을 수행하며, 복수 비트의 모듈러값과, 복수 비트의 승수 데이터와, 피승수 데이터를 입력받아 복수 비트의 곱셈 결과를 출력하는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 곱셈 연산을 수행하는 단계는, 최하위 워드부터 워드 단위 곱셈을 통해 부분곱을 생성하며, 상기 생성된 부분곱을 가산하여 곱셈 연산을 수행하는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 곱셈 연산을 수행하는 단계는, 상기 모듈러값에 대응하는 최하위 워드로부터 계산되는 값을 상기 몽고메리 모듈러 곱셈의 축약 연산에 사용하고, 합동 특성을 이용하여 부분곱 가산 결과에 대응하는 최하위 워드가 0이 되도록 만들어 데이터 손실 없이 최하위 워드를 제거하는데 사용하는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 연산을 위한 워드 병렬 연산 방법은, 복수 비트의 정수와 모듈러값을 복수 크기의 워드로 분할하는 단계와, 상기 분할된 복수 크기의 워드에 대해 처리요소 배열을 이용하여 복수개의 워드를 병렬로 모듈러 역원 연산을 수행하는 단계를 포함하는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 역원 연산을 수행하는 단계는, 몽고메리 모듈러 역원 연산을 적용하되, 복수개의 처리요소(PE) 배열블록, 레지스터파일블록, 계수기블록, 컨트롤러블록 및 복수의 선택기를 포함하는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 역원 연산을 수행하는 단계는, 상기 복수 비트의 정수 및 모듈러값을 입력받아 복수 비트의 모듈러 역원 연산 결과를 유사 몽고메리 도메인 상의 값으로 출력하며, 상기 유사 몽고메리 도메인 상의 값은 보정되어 몽고메리 도메인 상의 값으로 변환되고, 복수의 반복루프를 통해 몽고메리 역원 연산이 수행되는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 역원 연산을 수행하는 단계는, 몽고메리 역원 연산의 소요 사이클 수를 줄이기 위해, 한 번에 여러 비트를 시프트시켜 반복루프 횟수를 감소시키는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 모듈러 역원 연산을 수행하는 단계는, while 반복루프에 의해 계산되며, 상기 정수 및 모듈러값의 현재 값에 따라 연산 동작모드가 결정되어 가산 및 감산 연산과 시프트 연산을 위한 데이터가 선택되고 연산이 수행되는 모듈러 연산을 위한 워드 병렬 연산 방법이 제공될 수 있다.
또한, 본 발명의 실시예에 따르면, 상기 워드 병렬 연산 방법을 이용한 상기 모듈러 곱셈 연산과 상기 모듈러 역원 연산은 서로 독립적으로 수행될 수 있다.
본 발명은 공개키 암호의 하드웨어 구현에 있어서 응용분야의 요구 성능에 최적화된 하드웨어 구조를 용이하게 설계할 수 있다.
또한, 본 발명은 ECC, RSA 등 공개키 암호의 하드웨어 구현에 있어서, 소수체 상의 모듈러 곱셈과 모듈러 역원 계산을 위해 피연산자 데이터를 일정 크기의 워드 단위로 분할하고, 다수 개의 워드를 동시에 병렬로 연산함으로써, 응용분야의 성능 요건에 따른 처리속도, 하드웨어 복잡도 및 전력소비를 구현할 수 있다.
도 1은 본 발명의 실시예에 따라 워드 병렬 연산 방법에 의한 모듈러 곱셈을 수행하는 과정을 나타낸 슈도코드이고,
도 2 및 도 3은 본 발명의 실시예에 따라 워드 병렬 연산 방법에 의한 모듈러 곱셈을 수행하는 과정을 예시한 도면이며,
도 4 및 도 5는 본 발명의 실시예에 따른 모듈러 연산기 중에서 모듈러 곱셈기를 예시한 도면이고,
도 6은 본 발명의 실시예에 따라 워드 병렬 연산 방법에 의한 모듈러 역원을 계산하는 과정을 나타낸 슈도코드이며,
도 7 및 도 8은 본 발명의 실시예에 따른 모듈러 연산기 중에서 모듈러 역원기를 예시한 도면이다.
본 발명의 실시예들에 대한 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따라 워드 병렬 연산 방법에 의한 모듈러 곱셈 연산을 수행하는 과정을 나타낸 슈도코드이고, 도 2 및 도 3은 본 발명의 실시예에 따라 워드 병렬 연산 방법에 의한 모듈러 곱셈 연산을 수행하는 과정을 예시한 도면이며, 도 4 및 도 5는 본 발명의 실시예에 따른 모듈러 연산기 중에서 모듈러 곱셈기를 예시한 도면이다.
도 1을 참조하면, 본 발명의 실시예에 따른 워드 병렬 연산 방법에 의한 모듈러 곱셈 연산을 수행하는 과정은, 모듈러 곱셈의 승수와 피승수를 복수 비트의 워드 단위로 분할하는 단계와, 분할된 워드 단위에 대응하는 복수개의 워드를 병렬로 모듈러 곱셈 연산을 수행하는 단계를 포함할 수 있다.
여기에서, 모듈러 곱셈 연산을 수행하는 단계에서는 예를 들면, 몽고메리 모듈러 곱셈 연산을 적용할 수 있는데, 복수개의 처리요소(PE) 배열블록, 복수 비트의 이진곱셈기, 복수 비트의 가산기, 레지스터파일블록, 컨트롤러블록, 복수의 선택기 및 복수의 분배기를 포함하되, 승수데이터, 피승수 데이터 및 모듈러값은 각각 복수 비트 크기를 갖는 복수의 워드로 분할될 수 있다.
그리고, 모듈러 곱셈 연산을 수행하는 단계에서는 몽고메리 모듈러 곱셈 연산을 통해 유한체 상에서 곱셈 연산을 수행할 수 있으며, 복수 비트의 모듈러값과, 복수 비트의 승수 데이터와, 피승수 데이터를 입력받아 복수 비트의 곱셈 결과를 출력할 수 있다.
또한, 모듈러 곱셈 연산을 수행하는 단계에서는 최하위 워드부터 워드 단위 곱셈을 통해 부분곱을 생성하며, 생성된 부분곱을 가산하여 곱셈 연산이 수행될 수 있다.
한편, 모듈러 곱셈 연산을 수행하는 단계에서는 모듈러값의 최하위 워드로부터 계산되는 값을 몽고메리 모듈러 곱셈의 축약 연산에 사용할 수 있고, 합동 특성을 이용하여 부분곱 가산 결과의 최하위 워드가 0이 되도록 만들어 데이터 손실 없이 최하위 워드를 제거하는데 사용될 수 있다.
예를 들면, 도 1에 도시한 바와 같은 슈도코드에서는 모듈러 곱셈의 승수 A와 피승수 B를 w 비트의 워드 단위로 분할하고, 복수개의 워드를 병렬로 연산하는 모듈러 곱셈 연산 과정을 나타내고 있는데, 몽고메리 모듈러 곱셈은 유한체 상에서 곱셈 연산이 이루어지며, L 비트의 모듈러값 N과, L 비트의 승수 데이터 A와 피승수 데이터 B를 입력 받아 L 비트의 곱셈결과
Figure 112020108428403-pat00005
(단,
Figure 112020108428403-pat00006
)를 출력할 수 있다.
그리고, 모듈러 곱셈을 위한 입력 데이터(A, B, N)은 w 비트(예를 들어, w=32 비트) 크기의 워드 m개로 분할되어 연산되며, 최하위 워드부터 워드 단위 곱셈을 통해 부분곱을 생성하고, 생성된 부분곱을 가산하여 곱셈 연산이 수행될 수 있다.
이러한 슈도코드에서
Figure 112020108428403-pat00007
는 모듈러 값 N의 최하위 워드
Figure 112020108428403-pat00008
로부터
Figure 112020108428403-pat00009
로 계산될 수 있고,
Figure 112020108428403-pat00010
는 몽고메리 모듈러 곱셈의 축약 연산 과정에 사용되며, 합동 특성을 이용하여 부분곱 가산결과의 최하위 워드가 0이 되도록 만들어 데이터 손실 없이 최하위 워드를 제거하는데 사용될 수 있다.
이와 같이, 몽고메리 모듈러 곱셈 방법은 부분곱 가산과정에서 합동 특성을 이용해 최하위 워드를 제거하는 모듈러 축약 연산이 포함되므로, 곱셈결과에
Figure 112020108428403-pat00011
이 포함될 수 있다.
그리고, i-루프는 승수 데이터 A를 m개의 워드로 분할하여 m회 반복 연산하는 과정을 나타내고, j-루프는 피승수 데이터 B를 m개의 워드로 분할하여 반복 처리하는 과정을 나타내는데, 연산회로를 구성하는 처리요소(PE : processing element)의 개수
Figure 112020108428403-pat00012
에 따라
Figure 112020108428403-pat00013
회 반복 연산될 수 있고, j-루프 내부의 동시 처리(concurrent) k-루프는
Figure 112020108428403-pat00014
개의 PE에 의해
Figure 112020108428403-pat00015
개의 피승수 워드가 병렬로 연산되는 과정을 나타낼 수 있다.
상술한 바와 같은 도 1의 슈도코드에 따른 연산 과정에 대해 상세히 설명하면, 첫째, 단계1 내지 단계5에서는 매 i-루프의 반복에서 축약 연산 과정에 사용되는 q 데이터를 생성하기 위해 부분곱의 하위 워드 데이터(
Figure 112020108428403-pat00016
)를 미리 생성할 수 있는데,
Figure 112020108428403-pat00017
개의 PE에 의해
Figure 112020108428403-pat00018
개의 워드가 병렬로 연산될 수 있고, 각각의 PE에서
Figure 112020108428403-pat00019
Figure 112020108428403-pat00020
의 곱 (
Figure 112020108428403-pat00021
)에 의해 부분곱 워드가 생성되며,
Figure 112020108428403-pat00022
회 반복 연산으로 m개의 워드가 처리될 수 있다.
둘째, 단계7 내지 단계9에서는 매 i-루프 반복이 시작될 때마다 캐리 데이터를 초기화하고, 매 i-루프의 축약연산을 위해 모듈러 합동에 필요한 q 값을 생성할 수 있는데, 생성된 q 값은 추후에
Figure 112020108428403-pat00023
워드 생성에 사용될 수 있고, 생성된
Figure 112020108428403-pat00024
는 합동 특성에 의해 항상 0이 되어 최하위 워드가 제거되어도 데이터 손실이 없도록 만들 수 있다.
셋째, 단계10 내지 단계11에서는 j-루프는
Figure 112020108428403-pat00025
회 만큼 반복 연산되며, 이전 j-루프에서 저장된 캐리 값(C_add1, C_add2)을 가져오는데, j=0인 경우에는, 단계7에서 초기화된 데이터가 사용될 수 있다.
넷째, 단계12 내지 단계19에서는
Figure 112020108428403-pat00026
개의 처리요소(PE) 배열에 의해
Figure 112020108428403-pat00027
개의 피승수 워드를 병렬로 연산하며, 곱셈 연산과 가산 연산으로 구성되는데, 단계13 내지 단계15에서 승수 워드(
Figure 112020108428403-pat00028
)와 피승수 워드(
Figure 112020108428403-pat00029
)의 곱셈 연산을 통해 부분곱을 생성할 수 있고, 생성된 부분곱의 상위 워드(
Figure 112020108428403-pat00030
)는 (k+1)번째 워드의 부분곱 가산에 사용되고, 생성된 부분곱의 하위 워드(
Figure 112020108428403-pat00031
)는 (k-1)번째 워드에서 생성된 부분곱의 상위 워드(
Figure 112020108428403-pat00032
)와 가산되며, 이전 i-루프에서 생성된 부분곱 가산결과 s 워드와 가산될 수 있다.
그리고, i-루프 연산이 1회 완료되면, 하나의 승수 워드(
Figure 112020108428403-pat00033
)와 m개의 피승수 워드 간의 곱셈에 의한 부분곱 생성과 부분곱 가산 연산에 의해 m+1개 워드의 부분곱 가산결과가 생성될 수 있다.
또한, 단계16 내지 단계18에서는 단계13 내지 단계15에서 연산된 m+1개의 부분곱 가산결과 워드에 대한 축약(reduction) 연산을 처리할 수 있는데, 생성된 m+1개의 워드(
Figure 112020108428403-pat00034
내지
Figure 112020108428403-pat00035
)중에서 최하위 워드
Figure 112020108428403-pat00036
으로 만들어 이를 제거할 수 있고, 단계13 내지 단계15와 동일하게 곱셈 1회, 가산 2회의 연산 구조를 가지며, 단계9에서 생성된 q 데이터와 모듈러 값의 워드 n을 이용하여 축약 연산을 수행할 수 있다.
다섯째, 단계20 내지 단계24에서는
Figure 112020108428403-pat00037
개의 피승수 워드가 병렬로 연산되는 동시 처리(concurrent) k-루프에서 생성된 캐리 값(
Figure 112020108428403-pat00038
,
Figure 112020108428403-pat00039
)을 저장하여 다음 j-루프의 단계11에서 사용할 수 있는데, 마지막 j-루프의 경우에는, 마지막 워드가 연산된 PE의 캐리 값을 저장하여 추후 최상위 워드(
Figure 112020108428403-pat00040
)를 생성하는 가산 연산에 사용될 수 있다.
여섯째, 단계26에서는 i-루프의 마지막 연산으로, j-루프가 완료되면 단계12 내지 단계19에 의해 생성된 캐리 값들과 이전 i-루프의 캐리값(
Figure 112020108428403-pat00041
)를 가산하여 최상위 워드(
Figure 112020108428403-pat00042
)와 캐리 값(
Figure 112020108428403-pat00043
)을 생성할 수 있다.
일곱째, 단계28 내지 단계30에서는 m회의 i-루프 반복 연산이 완료되면, 곱셈결과값(S)과 모듈러값(N)을 비교하여
Figure 112020108428403-pat00044
인 경우에
Figure 112020108428403-pat00045
연산으로 최종 축약 연산을 수행할 수 있다.
상술한 바와 같은 과정을 통해, 두 정수 A, B의 모듈러 곱셈결과
Figure 112020108428403-pat00046
가 출력된다. 단계16 내지 단계18의 축약 연산을 통해 매 i-루프마다 부분곱 가산결과의 최하위 워드(
Figure 112020108428403-pat00047
)가 제거되며, m 회의 i-루프 반복을 통해 m개의 하위 워드가 제거되므로,
Figure 112020108428403-pat00048
가 포함된 결과 값이 출력된다.
도 2와 도 3을 참조하면, 상술한 바와 같은 도 1의 슈도코드의 연산 과정을 도식화하여 예시한 것으로, 도 2는 L=192, w=32, m=6,
Figure 112020108428403-pat00049
인 경우의 연산 과정을 나타내는데, i-루프는 6회, j-루프는 3회 반복되며(
Figure 112020108428403-pat00050
), j-루프 내부의 병렬연산 동시 처리(concurrent) k-루프는 2개의 PE에 의해 2개 워드가 병렬로 연산될 수 있다.
여기에서, j=0일 때, 워드
Figure 112020108428403-pat00051
Figure 112020108428403-pat00052
가 생성되며, 워드
Figure 112020108428403-pat00053
는 0의 값을 갖고, 마지막 j-루프인 j=2일 때, PE에서 부분곱 가산결과 워드(
Figure 112020108428403-pat00054
,
Figure 112020108428403-pat00055
)가 생성되며, 단계26의 가산 연산을 통해 최상위 워드(
Figure 112020108428403-pat00056
)가 생성될 수 있다.
또한, 도 3은 L=192, w=32, m=6,
Figure 112020108428403-pat00057
=3인 경우의 연산 과정을 나타내는데, i-루프는 6회, j-루프가 2회 반복되며(
Figure 112020108428403-pat00058
), j-루프 내부의 병렬연산 동시 처리(concurrent) k-루프는 3개의 PE에 의해 3개의 워드가 병렬로 연산될 수 있다.
상술한 바와 같은 도 2와 도 3을 비교하면, 2개의 PE가 사용되는 도 2의 경우 (
Figure 112020108428403-pat00059
), 총 18회의 반복 연산이 진행되고, 3개의 PE가 사용되는 도 3의 경우 (
Figure 112020108428403-pat00060
), 총 12회의 반복 연산이 수행될 수 있다.
여기에서, 모듈러 곱셈 연산에 소요되는 시간은 반복 연산 횟수와 비례관계를 갖게 되는데, 도 2와 도 3에 나타낸 바와 같이, 사용되는 PE 개수에 따라 모듈러 곱셈 연산에 소요되는 시간과 하드웨어 복잡도가 달라지므로, 확장 가능형 모듈러 곱셈 연산 방법 및 확장 가능형 하드웨어 구조를 구현 및 제공할 수 있다.
도 4를 참조하면, 상술한 바와 같은 도 1의 슈도코드를 하드웨어로 구현한 모듈러 곱셈기로서, 확장 가능형 몽고메리 모듈러 곱셈기의 구성을 나타내는데,
Figure 112020108428403-pat00061
개 PE의 1차원 배열과, w비트 이진곱셈기(Bin_Mul)와, w비트 가산기(Adder)와, S 데이터, q 데이터, 중간연산 결과의 캐리 값 등을 저장하는 레지스터파일블록(Reg_File)과, 연산 과정에 필요한 제어신호들을 생성하는 컨트롤러블록(CNTL)과, 다수개의 선택기(MUX) 및 분배기(DEMUX)로 구성될 수 있다.
여기에서, PE 배열을 구성하는
Figure 112020108428403-pat00062
개의 PE는
Figure 112020108428403-pat00063
개의 워드를 병렬로 동시에 처리하며, 이는 상술한 바와 같은 도 1의 슈도코드에서 동시 처리(concurrent) k-루프를 의미한다.
그리고, 사용되는 PE의 개수
Figure 112020108428403-pat00064
에 따라 병렬로 연산되는 워드 개수가 결정되며, 이를 통해 연산에 소요되는 클록 사이클 수(즉, 연산 속도)와 회로 면적을 조절할 수 있다.
또한, 데이터 입출력 포트(A, B, N, Out_data)는 사용되는 PE의 개수
Figure 112020108428403-pat00065
에 따라 크기가 달라지며,
Figure 112020108428403-pat00066
(예를 들어,
Figure 112020108428403-pat00067
)가 되고, 이진 곱셈기(Bin_Mult)는 도 1의 슈도코드의 단계9에서 q를 생성하는 곱셈 연산에 사용되며, 선택기1(MUX1)에 의해 매 i-루프에서 사용되는
Figure 112020108428403-pat00068
데이터가 선택될 수 있다.
또한, 레지스터파일블록(Reg_File)으로부터 PE의 연산에 사용되는
Figure 112020108428403-pat00069
개의 워드가 선택기1(MUX1)에 의해 선택되어 PE 배열로 입력될 수 있고, 사용되는 PE의 개수
Figure 112020108428403-pat00070
에 따라 선택기1(MUX1)에 의해 선택되는 워드의 개수가 달라지며, 동시에 연산되는 워드의 개수 및 곱셈 연산에 소모되는 사이클 수가 조절될 수 있다.
여기에서, 선택기M(0) 내지 M(
Figure 112020108428403-pat00071
-1)은 외부에서 입력되는 데이터와 레지스터파일블록(Reg_File)에서 출력되는 데이터 중 선택해서 PE로 입력되도록 하는데, PE 배열 내부에서 연산이 완료된 후, 출력된 데이터는 레지스터파일블록(Reg_File)에 저장되며, 연산된 캐리 값은 선택기2(MUX2)에 의해 도 1의 슈도코드의 단계20 내지 단계24와 같이 최상위 캐리 값이 선택되어 저장된다.
이때, 마지막 j-루프의 경우에는 가산기(Adder)에서 단계26의 최상위 워드
Figure 112020108428403-pat00072
을 연산하며, 레지스터파일블록(Reg_File)에 저장될 수 있다.
도 5를 참조하면, 상술한 바와 같은 도 4의 모듈러 곱셈기에 구비되는 PE의 내부 블록도를 나타내는데, w 비트 이진 곱셈기(Bin_Mult)와 w 비트 가산기 2개 (adder1, adder2), 선택기(MUX) 1개와 레지스터(PP_reg)로 구성될 수 있다.
여기에서, PE는 상술한 바와 같은 도 1의 슈도코드의 단계1 내지 단계5의 연산을 수행하여 부분곱의 하위 워드
Figure 112020108428403-pat00073
를 출력하며, 단계12 내지 단계19의 연산을 수행하여 가산기2(adder2)의 가산결과를 출력할 수 있다.
그리고, PE는 연산과정에 따라 선택기(MUX)에 의해 연산결과를 선택하여 출력할 수 있는데, 상술한 바와 같은 도 1의 슈도코드의 동시 처리(concurrent) k-루프 내에서 1회의 곱셈 연산과 2회의 가산 연산이 각 PE에 의해 병렬로 연산되며, 이를 위해 PE 내부의 이진 곱셈기와 가산기가 직렬형태로 구현될 수 있다.
또한, 이진 곱셈기는 상술한 바와 같은 도 1의 슈도코드의 단계13과 단계16의 곱셈 연산을 수행하며, 가산기1(adder1)은 단계14 및 단계17의 가산 연산을 각각 수행하고, 가산기2(adder2)는 단계15 및 단계18의 가산 연산을 각각 수행할 수 있다.
여기에서. 각 가산기는 1 비트 캐리 값을 가지며, 인접한 PE 간에 캐리 값이 전달되어 연산에 사용될 수 있는데, PE의 배열에 의한 가산기의 지연을 줄이기 위해 캐리선택 가산기(carry select adder)를 사용하여 구현할 수 있으며, 최악경로 지연을 줄이기 위해 이진 곱셈기와 가산기 사이에 레지스터(PP_reg)를 삽입할 수 있다.
그리고, PE 내부에 최악경로 지연을 줄이기 위한 레지스터(PP_reg)의 삽입으로 인해, 이진 곱셈 연산과 가산 연산을 동일 사이클 내에 수행할 수 없으며, 2사이클에 걸쳐 연산될 수 있다.
이때, 추가로 소모되는 사이클을 최소화하기 위해 PL와 PH 생성 시에 연산 중간 결과 값이 사용되지 않는 점을 이용할 수 있는데, 곱셈 연산이 실행된 뒤, 2회의 가산 연산과 다음 연산 과정의 곱셈 연산을 동시에 수행하는 구조로, 상술한 바와 같은 도 1의 슈도코드에서 i=0이고, j=0인 초기 연산의 경우, 단계13의 곱셈 연산이 수행되고, i=m이고, j=ite-1인 마지막 연산의 경우, 단계17과 단계18의 가산 연산이 수행될 수 있다.
또한, 그 이외의 연산 과정에서는, 단계14와 단계15의 가산 연산과 단계16의 곱셈 연산이 동시에 연산되며, 단계17과 단계18의 가산 연산과 단계13의 곱셈 연산이 동시에 연산되며, 이들 연산은 교대로 반복 수행될 수 있다.
다음에, 도 6은 본 발명의 실시예에 따라 워드 병렬 연산 방법에 의한 모듈러 역원 연산을 수행하는 과정을 나타낸 슈도코드이며, 도 7 및 도 8은 본 발명의 실시예에 따른 모듈러 연산기 중에서 모듈러 역원기를 예시한 도면이다.
도 6을 참조하면, 본 발명의 실시예에 따른 워드 병렬 연산 방법에 의한 모듈러 역원 연산을 수행하는 과정은, 복수 비트의 정수와 모듈러값을 복수 크기의 워드로 분할하는 단계와, 상기 분할된 복수 크기의 워드에 대해 처리요소 배열을 이용하여 복수개의 워드를 병렬로 모듈러 역원 연산을 수행하는 단계를 포함할 수 있다.
여기에서, 모듈러 역원 연산을 수행하는 단계에서는 몽고메리 모듈러 역원 연산 방식을 적용할 수 있는데, 복수개의 처리요소(PE) 배열블록, 레지스터 파일블록, 계수기블록, 컨트롤러블록 및 복수의 선택기를 포함할 수 있다.
이러한 모듈러 역원은 유한체 상의 임의의 정수에 대한 곱의 역원을 의미하고, 몽고메리 모듈러 역원 연산은 복수 비트의 정수와 모듈러값을 입력받아 복수 비트의 모듈러 역원 연산 결과를 유사 몽고메리 도메인 상의 값으로 출력할 수 있다.
또한, 모듈러 역원 연산을 수행하는 단계에서는 유사 몽고메리 도메인 상의 값은 보정되어 몽고메리 도메인 상의 값으로 변환될 수 있고, 복수의 반복루프를 통해 몽고메리 역원 연산이 수행될 수 있다.
한편, 모듈러 역원 연산을 수행하는 단계에서는 몽고메리 역원 연산의 소요 사이클 수를 줄이기 위해, 한 번에 여러 비트를 시프트시켜 반복루프 횟수를 줄일 수 있다.
상술한 바와 같은 모듈러 역원 연산을 수행하는 단계에서는 while 반복루프에 의해 계산되며, U와 V 데이터의 현재 값에 따라 연산 동작모드가 결정되어 가산 및 감산 연산과 시프트 연산을 위한 데이터가 선택되고 연산이 수행될 수 있다.
예를 들면, 도 6에 도시한 바와 같은 슈도코드는 본 발명의 실시예에 따른 워드 병렬 연산 방법에 의한 몽고메리 모듈러 역원(Montgomery modular inverse) 연산을 수행하는 과정을 나타내는데, L 비트의 정수 A와 모듈러 값 N을 w 비트(예를 들어,
Figure 112020108428403-pat00074
비트) 크기의 워드 m개로 분할하고, PE 배열에 의해 복수의 워드를 병렬로 연산할 수 있다.
여기에서, 모듈러 역원이란 유한체 상의 임의의 정수 A에 대한 곱의 역원
Figure 112020108428403-pat00075
을 의미하는데, 몽고메리 모듈러 역원 연산은 L 비트의 정수 A와 모듈러값 N을 입력받아 L 비트의 모듈러 역원 연산 결과를 유사 몽고메리 도메인 상의 값
Figure 112020108428403-pat00076
으로 출력하며, 이를 ‘Almost Montgomery Inverse’라고 한다.
또한, k는
Figure 112020108428403-pat00077
범위의 값을 갖는데, 유사 몽고메리 도메인 상의 값
Figure 112020108428403-pat00078
은 보정 단계(correction phase)를 거쳐 몽고메리 도메인 상의 값
Figure 112020108428403-pat00079
로 변환될 수 있고, 몽고메리 역원 연산 알고리듬은 k 회의 반복루프를 통해 연산이 수행될 수 있으며, 연산결과에
Figure 112020108428403-pat00080
가 곱해져서 유사 몽고메리 도메인 상의 값으로 출력될 수 있다.
이러한 k는 정수 A의 값에 영향을 받으며, 평균적으로 약
Figure 112020108428403-pat00081
의 값을 가질 수 있고, 몽고메리 역원 연산의 소요 사이클 수를 줄이기 위해, 한 번에 여러 비트를 시프트시켜 반복루프 횟수를 줄일 수 있으며, 3 비트씩 스캔하는 경우, 소요 사이클 수가 약 22% 감소하여 평균 반복루프 횟수는
Figure 112020108428403-pat00082
이 되고, 상술한 바와 같은 도 6의 슈도코드에는 3 비트 스캔이 적용되었으며, 스캔 비트 크기는 다양하게 적용될 수 있다.
이러한 도 6의 슈도코드에서, 몽고메리 역원 연산은 단계2 내지 단계57의 while 반복루프에 의해 계산되며, U와 V의 현재 값에 따라 연산 동작모드가 결정되어 가산 및 감산 연산과 시프트 연산을 위한 데이터가 선택되고 해당 연산이 수행될 수 있다.
또한, 도 6의 슈도코드 상에서,
Figure 112020108428403-pat00083
는 x 데이터 워드를 y 비트만큼 오른쪽 시프트 시키는 연산을 의미하며,
Figure 112020108428403-pat00084
는 x 데이터 워드를 y 비트만큼 왼쪽 시프트 시키는 연산을 의미하는데, 동시 처리(concurrent) j-루프는
Figure 112020108428403-pat00085
개의 PE를 이용하여
Figure 112020108428403-pat00086
개의 워드를 병렬로 연산하는 동작을 의미하며, i-루프의 반복 횟수는 워드 개수 m과 사용되는 PE의 개수
Figure 112020108428403-pat00087
에 의해
Figure 112020108428403-pat00088
로 결정될 수 있다.
상술한 바와 같은 슈도코드의 연산 과정을 구체적으로 설명하면, 첫째, 단계1에서는 연산에서 사용되는 데이터를 초기화시킬 수 있는데, L 비트의 모듈러 값 N과 정수 데이터 A를 입력받을 수 있다.
둘째, 단계2 내지 단계57에서는 역원 연산을 진행하는 반복루프로, U와 V의 현재 데이터에 따라 반복루프의 연산과정이 달라지며, V가 0이 될 때까지 반복 연산을 수행할 수 있는데, 반복루프는 조건문에 따라 단계4 내지 단계18, 단계19 내지 단계33, 단계34 내지 단계44, 단계45 내지 단계56 중 하나의 연산을 수행할 수 있으며, 매 반복루프마다 시프트 연산의 캐리값(
Figure 112020108428403-pat00089
,
Figure 112020108428403-pat00090
)을 초기화하여 사용할 수 있다.
이때, U와 V 데이터의 하위 여러 비트를 스캔하여 연속 시프트 동작을 실행하는 경우, 한 사이클에 여러 비트를 시프트시켜서 평균 소요 사이클을 줄일 수 있다. 여기에서, 도 6에 도시한 바와 같은 슈도코드에는 3 비트 스캔을 적용한 경우를 나타낸다.
셋째, 단계4 내지 단계18에서는 U의 현재 데이터가 짝수인 경우의 연산 과정을 나타내는데, 단계5 내지 단계11은 데이터 U의 하위 3비트를 스캔하여 연속 시프트 동작을 위한 SN 값 설정 및 k 데이터를 가산할 수 있다. 이때, 한 사이클에 연속 시프트 동작이 이루어지는 비트에 따라 SN 값을 결정하며, 반복루프 횟수를 나타내는 k 값이 결정될 수 있다.
또한, 단계12 내지 단계18은 워드 단위 시프트 연산으로 구성되며, 동시 처리(concurrent) j-루프는 PE 배열에 의해
Figure 112020108428403-pat00091
개의 워드를 병렬 연산하고, i-루프는
Figure 112020108428403-pat00092
회만큼 반복 수행될 수 있으며, 데이터 U와 S를 워드 단위로 분할하여 각 워드를 SN 비트 시프트 연산하고, LS 시프트 연산의 캐리값은 다음 루프에서 사용될 수 있다. 여기에서, RS 시프트 연산의 캐리값
Figure 112020108428403-pat00093
은 단계15에 의해 이전 워드의 알맞은 위치에 저장될 수 있다.
넷째, 단계19 내지 단계33에서는 U의 현재 데이터가 홀수이고, V의 현재 데이터가 짝수인 경우 연산 과정을 나타내는데, 단계4 내지 단계18과 유사한 형태를 가질 수 있고, 단계27 내지 단계33은 단계12 내지 단계18과 동일한 연산 구조를 가질 수 있으며, V와 R 데이터의 워드 단위 시프트 연산이 수행될 수 있다.
다섯째, 단계34 내지 단계44에서는 U와 V의 현재 데이터가 홀수이며,
Figure 112020108428403-pat00094
인 경우의 연산 과정을 나타내는데, 가산 연산이 포함되어 있으므로 여러 비트를 스캔하지 않기 때문에, SN 값은 1로 고정되며, k 값 또한 1만큼 가산될 수 있고, PE 내부의 2개의 가산기를 이용하여 가산과 감산 연산이 동시에 수행될 수 있다.
여기에서, 단계38의 U-V의 감산 연산은 PE 내부의 가산기1(Adder1)에서 계산될 수 있고, 단계39의 S+R의 가산 연산은 가산기2(Adder2)에서 계산될 수 있으며, 시프트기에 의해 감산 연산결과와 S 데이터의 워드 단위 시프트 연산이 수행될 수 있다.
여섯째, 단계45 내지 단계56에서는 U와 V의 현재 데이터가 홀수이고,
Figure 112020108428403-pat00095
인 경우의 연산 과정을 나타내는데, 단계34 내지 단계44와 유사한 연산 과정을 수행할 수 있으며, 단계49와 단계50의 V-U 감산 연산과 S+R의 가산 연산이 각각 PE 내부의 가산기1(adder1)과 가산기2(adder2)에서 연산되며, 단계36 내지 단계44와 동일한 연산 구조를 가질 수 있다.
일곱째, 단계58에서는 축약과정이 포함된 역원 연산결과의 출력 과정을 나타내는데, 반복루프의 연산 결과 R이 출력된 후, PE 내부의 가산기1(Adder1)과 가산기2(Adder2)를 통해 N-R 연산과 2N-R 연산이 동시에 수행될 수 있으며,
Figure 112020108428403-pat00096
이면 N-R을 출력하고,
Figure 112020108428403-pat00097
이면 2N-R을 출력할 수 있다.
상술한 바와 같은 연산 과정을 통해 유사 몽고메리 도메인 상의 역원 연산 결과
Figure 112020108428403-pat00098
와 while 반복루프의 반복 횟수를 나타내는 k 값이 출력될 수 있는데, 반복루프 1회에 소요되는 사이클 수는
Figure 112020108428403-pat00099
로 나타낼 수 있으며, 1 사이클마다
Figure 112020108428403-pat00100
개의 워드가 병렬로 연산될 수 있고, 역원 연산에 소요되는 평균 반복 횟수는
Figure 112020108428403-pat00101
회이며, 평균 소요 사이클은
Figure 112020108428403-pat00102
로 나타낼 수 있다. 따라서 사용되는 PE의 개수에 따라 소요 사이클 수와 하드웨어 복잡도를 조정할 수 있다.
도 7을 참조하면, 상술한 바와 같은 도 6의 슈도코드를 하드웨어로 구현한 모듈러 역원기로서, 확장 가능형 몽고메리 모듈러 역원기의 구성을 나타내는데, 도 6에 도시한 바와 같은 슈도코드의 연산을 수행하는 PE 배열 블록, 레지스터 파일블록(Reg_File), 계수기블록(K-counter), 제어신호를 생성하는 컨트롤러블록(CNTL), 복수의 선택기 등으로 구성될 수 있다.
여기에서, PE 배열 블록은 모듈러 역원을 연산하는 회로를 나타내며, PE의 1차원 배열과 다수개의 선택기(MUX)로 구성되어 사용되는 PE의 개수
Figure 112020108428403-pat00103
에 따라 연산속도와 하드웨어 복잡도가 달라질 수 있고, 레지스터파일블록(Reg_File)은 U, V, R, S 데이터 및 캐리 값을 저장하며, U_reg, V_reg, R_reg, S_reg, N_reg 레지스터와 캐리 레지스터들로 구성될 수 있다.
또한, 컨트롤러블록(CNTL)은 U와 V의 현재 값에 따라 SN 값과 동작모드를 결정할 수 있는데, SN 값은 연속 시프트 되는 비트 수를 나타내며, 도 6에 도시한 바와 같은 슈도코드에서는 3 비트 스캔을 적용하므로 1에서 3 범위의 값을 가질 수 있다.
그리고, 도 6에 도시한 바와 같은 슈도코드에서 단계4, 단계19, 단계34, 단계45의 조건문과 과정58의 축약 및 출력 과정에 의해 연산 동작모드가 결정될 수 있는데, 이에 따라 PE로 입력되는 데이터와 PE의 연산 동작이 결정될 수 있고, 계수기블록(K-counter)은 내부에 가산기를 포함하며, 반복루프마다 컨트롤러블록(CNTL)에서 생성되는 SN 값을 가산하여 k 값을 결정하여 역원 연산이 완료되면 최종 k 값을 출력할 수 있다.
또한, 동작모드 신호와 선택기(MUX_I1 내지 MUX_I4)에 의해 레지스터파일블록(Reg_File)의 데이터 중 연산에 필요한 데이터가 선택될 수 있고, 컨트롤러블록(CNTL)의 신호에 따라 각 사이클에 연산되는
Figure 112020108428403-pat00104
개의 워드가 결정될 수 있으며, 결정된
Figure 112020108428403-pat00105
개의 워드는 PE 배열의 가산기 및 시프트기에 입력되어 동시에 연산될 수 있다. 이는 슈도코드 상의 동시 처리(concurrent) j-루프를 의미한다.
이때, PE의 가산기 및 시프트기의 캐리 데이터는 인접한 PE로 전달되며, 최상위 PE의 캐리 데이터는 저장되어 다음 루프에서 사용될 수 있고, PE 배열에 의해 연산이 완료된 데이터는 선택기(MUX_O1 내지 MUX_O4)에 의해 레지스터에 저장될 수 있다.
따라서, 사용되는 PE의 개수
Figure 112020108428403-pat00106
에 의해 병렬 연산되는 워드 수와 반복루프 1회에 소요되는 사이클 수가 결정되므로, 역원 연산기의 응용분야에서 요구되는 성능에 맞춰 사용되는 PE의 개수를 조정하여 구현할 수 있다.
도 8을 참조하면, 본 발명의 실시예에 따른 PE의 내부 블록도를 나타내는데, 32 비트 가산기 2개(Adder1, Adder2), 오른쪽 시프트기(R_Sft) 1개, 왼쪽 시프트기(L_Sft) 1개와 선택기 2개(MUX1,MUX2)로 구성될 수 있다.
여기에서, 오른쪽 시프트기(R_Sft)와 왼쪽 시프트기(L_Sft)는 데이터를 입력받아 SN 값만큼 시프트 연산을 수행할 수 있고, 선택기(MUX1, MUX2)는 도 8에 도시한 바와 같은 초기 컨트롤러블록(Int_CNTL)에서 생성된 연산 동작 모드에 따라 데이터를 선택해 연산기로 입력시킬 수 있다.
그리고, PE의 가산기1(Adder1)은 U-V와 V-U의 감산 연산과 N-R의 감산 연산을 수행할 수 있고, 가산기2(Adder2)는 R+S의 가산 연산과 2N-R의 감산 연산을 수행할 수 있는데, 가산기1(Adder1)이 단계34, 단계45의 조건문에 의해 단계38, 단계49의 감산 연산을 수행하는 경우, 선택기1(MUX1)에 의해 가산기1(Adder1)의 연산 결과가 오른쪽 쉬프트기(R_Sft)로 입력되어 단계40 및 단계51의 시프트 연산이 수행될 수 있고, 단계4, 단계19의 조건문에 의해 시프트 연산만 수행되는 경우, 선택기1(MUX1)에 의해 외부의 입력 데이터가 선택되어 시프트 연산이 수행될 수 있다.
또한, 도 6에 도시한 바와 같은 슈도코드에서 단계58은 축약 과정을 포함한 데이터 출력 과정을 나타내며, N-R의 연산과 2N-R의 연산이 PE 배열에 의해 동시에 수행될 수 있는데, 가산기1(Adder1)을 통해 N-R의 연산이 수행되며, 왼쪽 시프트기(L_Sft)를 통해 N을 2N으로 연산하고, 가산기2(Adder2)를 통해 2N-R 연산이 수행될 수 있으며, 선택기2(MUX2)는 축약 연산을 위해 왼쪽 시프트기(L_Sft)의 결과를 가산기2(Adder2)의 입력으로 선택하고, 반복루프를 실행할 때에는 외부의 입력을 가산기2(Adder2)의 입력으로 선택할 수 있다.
한편, PE 내부의 시프트기 2개는 각 3 비트의 캐리 데이터를 가지며, 가산기 2개는 각 1 비트의 캐리 데이터를 갖는데, 각 PE의 캐리 데이터는 인접한 PE로 전달될 수 있으며, PE의 1차원 배열로 인한 최악경로(critical path) 지연을 줄이기 위해 캐리선택 가산기(carry select adder)를 사용할 수 있고, 오른쪽 쉬프트기(R_Sft)의 캐리 데이터는 연산 과정 중 알맞은 위치에 즉시 저장되며, 마지막 동시 처리(concurrent) j-루프에서 생성된 왼쪽 시프트기(L_Sft)의 캐리 데이터는 저장되어 다음 루프의 연산에서 사용될 수 있다.
상술한 바와 같이 본 발명은 ECC, RSA 기반 공개키 암호의 하드웨어 구현에 필수적으로 사용되는 모듈러 곱셈과 모듈러 역원 계산을 위해 피연산자 데이터를 일정 크기(예를 들면, 32-비트)의 워드(word) 단위로 분할하고, 다수 개의 워드를 동시에 병렬로 연산하는 기법과 그 기법을 적용하여 모듈러 연산기(즉, 모듈러 곱셈기 및 모듈러 역원 연산기를 포함함)를 확장 가능형(scalable) 하드웨어로 구현함으로써, 복수의 키길이를 지원함과 아울러 응용분야의 요구 조건(예를 들면, 연산 속도, 하드웨어 복잡도 등)을 만족하는 모듈러 곱셈기와 모듈러 역원기를 효율적으로 설계할 수 있다.
또한, 본 발명에 의한 모듈러 곱셈기와 모듈러 역원기는 워드 단위로 연산을 수행하는 처리요소(PE)의 일차원 배열과, 처리요소 배열의 동작을 제어하는 컨트롤 블록과, 유한체 연산에 사용되는 데이터와 중간 결과값을 저장하는 레지스터와, 처리요소 간의 캐리 데이터를 저장하는 레지스터들을 포함한다.
이상의 설명에서는 본 발명의 다양한 실시예들을 제시하여 설명하였으나 본 발명이 반드시 이에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능함을 쉽게 알 수 있을 것이다.

Claims (10)

  1. 공개키 암호를 하드웨어로 구현하기 위한 모듈러 연산기의 모듈러 연산을 위한 워드 병렬 연산 방법에 있어서,
    모듈러 곱셈의 승수와 피승수를 복수 비트의 워드 단위로 분할하는 단계;
    상기 분할된 워드 단위에 대응하는 복수개의 워드를 병렬로 하여 모듈러 곱셈 연산을 수행하는 단계;
    를 포함하며,
    상기 모듈러 곱셈 연산을 수행하는 단계는, 몽고메리 모듈러 곱셈 연산을 적용하되, 복수개의 처리요소 배열블록, 복수 비트의 이진곱셈기, 복수 비트의 가산기, 레지스터파일블록, 컨트롤러블록, 복수의 선택기 및 복수의 분배기를 포함하는 모듈러 연산을 위한 워드 병렬 연산 방법.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 모듈러 곱셈 연산을 수행하는 단계는, 상기 몽고메리 모듈러 곱셈 연산을 통해 유한체 상에서 곱셈 연산을 수행하며, 복수 비트의 모듈러값과, 복수 비트의 승수 데이터와, 피승수 데이터를 입력받아 복수 비트의 곱셈 결과를 출력하는 모듈러 연산을 위한 워드 병렬 연산 방법.
  4. 청구항 3에 있어서,
    상기 모듈러 곱셈 연산을 수행하는 단계는, 최하위 워드부터 워드 단위 곱셈을 통해 부분곱을 생성하며, 상기 생성된 부분곱을 가산하여 곱셈 연산을 수행하는 모듈러 연산을 위한 워드 병렬 연산 방법.
  5. 청구항 4에 있어서,
    상기 모듈러 곱셈 연산을 수행하는 단계는, 상기 모듈러값에 대응하는 최하위 워드로부터 계산되는 값을 상기 몽고메리 모듈러 곱셈의 축약 연산에 사용하고, 합동 특성을 이용하여 부분곱 가산 결과에 대응하는 최하위 워드가 0이 되도록 만들어 데이터 손실 없이 최하위 워드를 제거하는데 사용하는 모듈러 연산을 위한 워드 병렬 연산 방법.
  6. 청구항 1, 3 내지 청구항 5 중 어느 한 항에 있어서,
    상기 모듈러 연산을 위한 워드 병렬 연산 방법은,
    복수 비트의 정수와 모듈러값을 복수 크기의 워드로 분할하는 단계와,
    상기 분할된 복수 크기의 워드에 대해 처리요소 배열을 이용하여 복수개의 워드를 병렬로 하여 모듈러 역원 연산을 수행하는 단계
    를 포함하는 모듈러 연산을 위한 워드 병렬 연산 방법.
  7. 청구항 6에 있어서,
    상기 모듈러 역원 연산을 수행하는 단계는, 몽고메리 모듈러 역원 연산을 적용하되, 복수개의 처리요소(PE) 배열블록, 레지스터파일블록, 계수기블록, 컨트롤러블록 및 복수의 선택기를 포함하는 모듈러 연산을 위한 워드 병렬 연산 방법.
  8. 청구항 7에 있어서,
    상기 모듈러 역원 연산을 수행하는 단계는, 상기 복수 비트의 정수 및 모듈러값을 입력받아 복수 비트의 모듈러 역원 연산 결과를 유사 몽고메리 도메인 상의 값으로 출력하며, 상기 유사 몽고메리 도메인 상의 값은 보정되어 몽고메리 도메인 상의 값으로 변환되고, 복수의 반복루프를 통해 몽고메리 역원 연산이 수행되는 모듈러 연산을 위한 워드 병렬 연산 방법.
  9. 청구항 8에 있어서,
    상기 모듈러 역원 연산을 수행하는 단계는, 몽고메리 역원 연산의 소요 사이클 수를 줄이기 위해, 한 번에 여러 비트를 시프트시켜 반복루프 횟수를 감소시키는 모듈러 연산을 위한 워드 병렬 연산 방법.
  10. 청구항 9에 있어서,
    상기 모듈러 역원 연산을 수행하는 단계는, while 반복루프에 의해 계산되며, 상기 정수 및 모듈러값의 현재 값에 따라 연산 동작모드가 결정되어 가산 및 감산 연산과 시프트 연산을 위한 데이터가 선택되고 연산이 수행되는 모듈러 연산을 위한 워드 병렬 연산 방법.
KR1020200132562A 2020-10-14 2020-10-14 모듈러 연산을 위한 워드 병렬 연산 방법 KR102496446B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200132562A KR102496446B1 (ko) 2020-10-14 2020-10-14 모듈러 연산을 위한 워드 병렬 연산 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200132562A KR102496446B1 (ko) 2020-10-14 2020-10-14 모듈러 연산을 위한 워드 병렬 연산 방법

Publications (2)

Publication Number Publication Date
KR20220049212A KR20220049212A (ko) 2022-04-21
KR102496446B1 true KR102496446B1 (ko) 2023-02-06

Family

ID=81437419

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200132562A KR102496446B1 (ko) 2020-10-14 2020-10-14 모듈러 연산을 위한 워드 병렬 연산 방법

Country Status (1)

Country Link
KR (1) KR102496446B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102498123B1 (ko) * 2022-07-15 2023-02-09 인하대학교 산학협력단 동형암호를 위한 가변적으로 동작하는 ntt 기반 다항식 곱셈기 장치 및 방법
CN117234458B (zh) * 2023-11-09 2024-02-23 深圳大普微电子股份有限公司 乘法阵列、数据处理方法、处理终端及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100428755B1 (ko) * 2001-08-31 2004-04-30 주식회사 현대시스콤 비트 슬라이스 모듈러 곱셈기
KR20030033580A (ko) 2001-10-24 2003-05-01 김진혁 고속 저전력의 오무라 감산방법을 이용하는 모듈라 연산방법 및 그 장치

Also Published As

Publication number Publication date
KR20220049212A (ko) 2022-04-21

Similar Documents

Publication Publication Date Title
Marzouqi et al. A high-speed FPGA implementation of an RSD-based ECC processor
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
CN109814838B (zh) 获取加解密运算中的中间结果组的方法、硬件装置和系统
KR102496446B1 (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
Rodríguez-Henríquez et al. Parallel Itoh–Tsujii multiplicative inversion algorithm for a special class of trinomials
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
Shieh et al. A new algorithm for high-speed modular multiplication design
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
Gutub et al. Efficient scalable VLSI architecture for Montgomery inversion in GF (p)
Brumley et al. Conversion algorithms and implementations for Koblitz curve cryptography
Dimitrov et al. Another look at inversions over binary fields
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
WO2001076132A1 (en) Scalable and unified multiplication methods and apparatus
Ozcan et al. A high performance full-word Barrett multiplier designed for FPGAs with DSP resources
JP2004227344A (ja) 乗算器及び暗号回路
KR101136972B1 (ko) 타원곡선 암호 연산 방법
Wang et al. New VLSI architectures of RSA public-key cryptosystem
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
WO2023043467A1 (en) A method and architecture for performing modular addition and multiplication sequences
WO2022115108A1 (en) An architecture for small and efficient modular multiplication using carry-save adders
Deschamps et al. Hardware implementation of finite-field division
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
JP4223819B2 (ja) べき乗剰余演算装置及びそのプログラム
Gutub et al. Efficient scalable hardware architecture for Montgomery inverse computation in GF (p)
Zadeh Division and inversion over finite fields

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant