KR102057648B1 - 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기 - Google Patents

중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기 Download PDF

Info

Publication number
KR102057648B1
KR102057648B1 KR1020130001227A KR20130001227A KR102057648B1 KR 102057648 B1 KR102057648 B1 KR 102057648B1 KR 1020130001227 A KR1020130001227 A KR 1020130001227A KR 20130001227 A KR20130001227 A KR 20130001227A KR 102057648 B1 KR102057648 B1 KR 102057648B1
Authority
KR
South Korea
Prior art keywords
multiplier
recording
modified
bit
multiplicand
Prior art date
Application number
KR1020130001227A
Other languages
English (en)
Other versions
KR20140089230A (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 KR1020130001227A priority Critical patent/KR102057648B1/ko
Priority to US14/139,113 priority patent/US9164732B2/en
Publication of KR20140089230A publication Critical patent/KR20140089230A/ko
Application granted granted Critical
Publication of KR102057648B1 publication Critical patent/KR102057648B1/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
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47GHOUSEHOLD OR TABLE EQUIPMENT
    • A47G1/00Mirrors; Picture frames or the like, e.g. provided with heating, lighting or ventilating means
    • A47G1/06Picture frames
    • A47G1/0605Picture frames made from extruded or moulded profiles, e.g. of plastic or metal
    • A47G1/0611Picture frames made from extruded or moulded profiles, e.g. of plastic or metal the profiles having clamping action; Elongated clips
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47GHOUSEHOLD OR TABLE EQUIPMENT
    • A47G1/00Mirrors; Picture frames or the like, e.g. provided with heating, lighting or ventilating means
    • A47G1/06Picture frames
    • A47G1/0616Ornamental frames, e.g. with illumination, speakers or decorative features
    • A47G1/0622Ornamental frames, e.g. with illumination, speakers or decorative features with illumination
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47GHOUSEHOLD OR TABLE EQUIPMENT
    • A47G1/00Mirrors; Picture frames or the like, e.g. provided with heating, lighting or ventilating means
    • A47G1/06Picture frames
    • A47G2001/0666Frontloading picture frames

Abstract

본 발명에 따른 곱셈 방법은, 중복 형태의 승수에 리코딩 상수를 더함으로써 상기 승수를 변형하는 단계; 상기 변형된 승수를 이용하여 리코딩을 수행하는 단계; 및 상기 리코딩을 수행한 결과값들을 이용하여 상기 승수와 피승수의 부분곱을 수행하는 단계를 포함한다.

Description

중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기{MUTIPLICATION METHOD AND MODULAR MULTIPLIER USING REDUNDANT FORM RECODING}
본 발명은 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기에 관한 것이다.
공개키 암호 알고리즘의 대표적인 예는 소인수 분해 문제(integer factorization problem)의 어려움에 기반한 RSA와 타원곡선 이산대수 문제(elliptic curve discrete logarithm problem: ECDLP)의 어려움에 기반한 타원곡선 암호시스템(ecliptic curve cryptosystem: ECC)이다. 이러한 RSA와 ECC를 구현하는데 있어서 가장 기본이 되는 연산은 모듈러 연산(modular operation)으로써, RSA와 ECC의 성능은 모듈러 연산 구현에 좌우될 수 있다. 즉, 모듈러 계산 유닛(modular arithmetic unit)의 성능이 좋을수록, 모듈러 연산에 기반한 RSA와 ECC의 성능도 향상될 수 있다.
본 발명의 목적은 계산 속도를 증가시키는 곱셈 방법 및 그것을 이용한 모듈러 곱셈기를 제공하는데 있다.
본 발명의 실시 예에 따른 곱셈 방법은, 중복 형태의 승수에 리코딩 상수를 더함으로써 상기 승수를 변형하는 단계; 상기 변형된 승수를 이용하여 리코딩을 수행하는 단계; 및 상기 리코딩을 수행한 결과값들을 이용하여 상기 승수와 피승수의 부분곱을 수행하는 단계를 포함한다.
실시 예에 있어서, 상기 리코딩 상수는 상기 피승수의 비트 크기와 동일한 '1010 ... 1010'이다.
실시 예에 있어서, 상기 승수를 변형하는 단계는 비트 단위로 연산을 수행하는 단계를 포함하고, 상기 변형된 승수의 비트 단위 연산 값들 각각은 2 비트의 썸 비트와 1 비트의 캐리 비트로 구성된다.
실시 예에 있어서, 상기 승수를 변형하는 단계는 비트 단위로 연산을 수행하는 단계를 포함하고, 상기 비트 단위 연산은, 전가산, 반가산, 및 변형된 반가산을 포함하고, 상기 변형된 반가산은 제 1 입력 비트, 제 2 입력 비트 및 '1'을 더한다.
실시 예에 있어서, 상기 승수를 변형하는 단계는 비트 단위로 연산을 수행하는 단계를 포함하고, 상기 비트 단위 연산은 인버팅 및 전가산을 포함한다.
실시 예에 있어서, 상기 비트 단위 연산값들 각각(ri)은 아래의 수학식
Figure 112013001134917-pat00001
을 만족한다.
실시 예에 있어서, 상기 리코딩을 수행한 결과값들 각각은 0, 상기 피승수, 상기 피승수의 2의 보수, 상기 피승수의 쉬프트 값, 상기 쉬프트 값의 2의 보수 중 어느 하나로 결정된다.
실시 예에 있어서, 상기 리코딩을 수행하는 단계는, 아래의 수학식
Figure 112013001134917-pat00002
을 만족하고, 여기서, A는 상기 피승수, B는 상기 승수, n는 , 상기 피승수의 비트 크기이고,
Figure 112013001134917-pat00003
,
Figure 112013001134917-pat00004
,
Figure 112013001134917-pat00005
, i가 홀수일 때,
Figure 112013001134917-pat00006
이고, P2i는 부분곱이고, B's는 상기 변형된 승수의 썸 비트이고, B'c는 상기 변형된 승수의 캐리 비트이다.
본 발명의 실시 예에 따른 모듈러 곱셈기는, 피승수와 변형된 승수 비트를 곱셈하는 부분 곱셈부; 모듈러스와 변형된 몫 비트를 곱셈하는 모듈러스 곱셈부; 이전 누산값, 상기 부분 곱셈부 및 상기 모듈러스 곱셈부들의 출력 값들을 입력 받고, 몽고메리 알고리즘에 따라 누산값을 계산하는 누산기; 상기 계산된 누산값을 저장하는 레지스터; 및 상기 이전 누산값을 이용하여 몫을 발생하는 몫 발생기를 포함하고, 상기 변형된 몫 비트는 중복 형태의 몫을 리코딩한 값이다.
실시 예에 있어서, 중복 형태의 상기 이전 누산값에 리코딩 상수를 더함으로써 상기 이전 누산값을 변형하고, 상기 변형된 이전 누산값을 리코딩하는 제 1 리코딩부; 및 중복 형태의 상기 몫에 상기 리코딩 상수를 더함으로써 상기 몫을 변형하고, 상기 변형된 몫을 리코딩하는 제 2 리코딩부를 더 포함한다.
실시 예에 있어서, 상기 제 1 및 제 2 리코딩부들 각각은, 반가산기 및 변형된 반가산기가 반복되는 제 1 열; 및 전가산기 및 반가산기가 반복되는 제 2 열로 구성되고, 상기 변형된 반가산기는, 제 1 입력 비트, 제 2 입력 비트 및 '1'을 더한다.
실시 예에 있어서, 상지 제 1 및 제 2 리코딩부들 각각은, 인버터들이 간헐적으로 위치하는 제 1 열; 및 전가산기가 반복되는 제 2 열로 구성된다.
실시 예에 있어서, 상기 누산값의 크기는 상기 승수 비트의 크기 및 상기 몫 비트의 크기와 동일하다.
실시 예에 있어서, 상기 몫 발생기는 상기 이전 누산값의 최하위 디지트를 리코딩한 값을 승수로 이용한다.
실시 예에 있어서, 상기 최하위 디지트를 리코딩한 값은 중복 형태로 존재한다.
실시 예에 있어서, 상기 최하위 디지트의 크기는 기수(radix)에 의해 결정된다.
실시 예에 있어서, 상기 몫 발생기의 결과값은 중복 형태로 존재한다.
상술한 바와 같이 본 발명의 실시 예에 따른 모듈로 곱셈기 및 그것의 곱셈 방법은 중복 형태 리코딩을 이용하여 곱셈 연산을 수행함으로써, 간단한 하드웨어 구조이면서 큰 성능 향상을 가질 수 있다.
도 1은 본 발명에 따른 중복 형태 리코딩 변형 과정을 하드웨어적으로 구현한 중복 형태 리코딩 변형부에 대한 제 1 실시 예를 예시적으로 보여주는 도면이다.
도 2는 본 발명에 따른 중복 형태 리코딩 변형 과정을 하드웨어적으로 구현한 중복 형태 리코딩 변형부에 대한 제 2 실시 예를 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 중복 형태 리코딩을 수행하는 곱셈기를 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 모듈러 곱셈기를 예시적으로 보여주는 블록도이다.
도 5는 본 발명에 따른 모듈러 곱셈기를 갖는 암호 프로세서를 갖는 보안 시스템을 예시적으로 보여주는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
일반적으로, 곱셈 연산은 부분곱의 합으로 정의된다. 이를 수식으로 표현하면 다음과 같다.
Figure 112013001134917-pat00007
여기서
Figure 112013001134917-pat00008
이다.
여기서 부분곱은
Figure 112013001134917-pat00009
...
Figure 112013001134917-pat00010
이다. 만일, bi=0이면, 합산할 필요가 없다. 따라서, 평균 n/2개의 부분곱이 발생되며, 최악의 경우 n 개의 부분곱이 발생될 것이다. 이렇게 발생되는 부분곱들을 합산함으로써, 곱셈 연산의 최종 결과가 발생될 것이다. 이때 발생되는 부분곱의 개수를 줄인다면, 곱셈 연산이 간단해질 수 있다.
일반적으로, 부분곱의 개수를 줄이기 위하여 리코딩(recoding) 방식이 이용된다. 여기서 리코딩은 곱셈을 효율적으로 구현하기 위하여 승수의 값을 원래의 값에서 수학적으로 등가인 다른 값으로 치환하는 것이다. 가장 대표적으로 알려진 방식이 부스 리코딩(Booth recoding)이다.
부스 리코딩을 적용할 경우, 평균 n/3 개의 부분곱이 발생되며, 최악의 경우 n/2개의 부분곱이 발생된다. 하지만, 부스 리코딩의 경우 부분곱이 발생되는 부분곱의 비트 위상이 가변적이다. 그런데 부스 리코딩을 하드웨어적으로 설계하려면 가변적인 상황에 대해 모두 물리적으로 구현되어야 하기 때문에, 리코딩을 통한 구조간소화 혹은 성능 향상의 효과가 어렵다. 한편, 이를 극복하기 위하여 변형 부스 리코딩(modified Booth recoding)의 경우 부분곱의 개수가 n/2로 고정되고, 발생되는 부분곱의 비트 위상 또한 고정된다.
하지만 상술 된 리코딩 방식들(Booth recoding, modified Booth recoding)은 기본적으로, 리코딩하고자 하는 승수가 비중복 형태(non-redundant form)로 있음을 가정하고 있다. 즉, 하나의 승수 값이 하나의 숫자로 표현된다. 하지만, 승수가 중복 형태(redundant form)로 존재할 수 있다. 즉, 하나의 승수 값이 두개의 숫자의 합의 형태로 존재하는 것이다. 승수가 중복 형태로 존재할 경우, 곱셈 연산은 다음과 같이 표현될 수 있다.
Figure 112013001134917-pat00011
여기서 A는 피승수, B는 승수, BC는 승수의 캐리(carry), BS는 승수의 썸(sum)이다. 이러한 중복 형태의 승수는, 누산기(accumulator)와 같은 논리 회로에서 캐리-세이브-애더(carry-save-adder, CSA)를 사용할 경우 흔히 발생한다. 하위 비트에서 발생한 캐리를 상위 비트로 전파(propagation)하지 않고 별도의 숫자로 나타냄으로써, 전파 지연(propagation delay)이 획기적으로 줄어든다. 따라서, 공개키 암호연산 등과 같이 워드(word)의 크기가 큰 경우, 중간 결과값을 중복 형태로 표현한다. 여기서 중간 결과값은 이전 누산값과 부분곱의 합이다.
수학식 2에서처럼, 중복의 형태로 존재하는 승수(B)를 리코딩하기 위해서, 먼저 승수(B)를 비중복 형태로 변형해주는 과정이 필요하다. 그런데 이러한 변형과정에는 일반적으로 덧셈 연산이 필요하다. 그런데 덧셈 연산 방식에 따라 상당히 큰 지연 복잡도(delay complexity) 및 면적 복잡도(area complexity)가 발생될 수 있다.
이러한 오버헤드를 줄이기 위하여 중복 부스 리코딩(redundant Booth recoding)이 제안되었다. 중복 부스 리코딩은 중복 형태의 승수를 입력 받아, 부스 리코딩 값으로 변환시켜 준다. 이를 리코딩을 위해 발생되는 전파 지연이 승수의 비트 크기와 무관한 고정된 크기로 발생되기 때문에, 전파 지연의 오버헤드를 크게 개선할 수 있다. 하지만, 종래의 덧셈을 수행하기 위해 필요한 최소 크기의 가산기인 RCA(ripple carry adder)보다 상당히 큰 하드웨어가 소요된다.
본 발명은, 간단한 변형(transformation)으로 중복 형태의 승수(B = BC + BS)를 리코딩할 수 있는 방식을 제안함으로써, 비중복 형태로의 전환 없이 곱셈 연산을 수행할 수 있다. 그 결과로써, 본 발명의 실시 예에 따른 곱셈 방법은 종래의 그것에서 사용하는 덧셈 연산에 비교하여, 지연 복잡도 및 면적 복잡도를 획기적으로 줄일 수 있다. 또한, 종래의 중복 부스 리코딩에 비교하여 작은 하드웨어 크기로 구현될 수 있다. 본 발명은, 곱셈을 수행하는 모든 연산기에 적용될 가능성이 있으며, 특히 승수가 중복 형태로 존재할 경우, 연산기 수행성능을 획기적으로 증가시키거나, 하드웨어적인 복잡도를 획기적으로 줄일 수 있다.
이에 더불어, 중복 형태의 승수를 곱하는 방식은 공개키 연산기에서 일반적으로 사용하고 있는 몽고메리(Montgomery) 곱셈기에 적절하게 적용될 수 있다.
종래에는, 공개키 연산기의 지연 복잡도를 줄이기 위해, 파이프라이닝(Pipelining)이 일반적으로 사용되었다. 하지만, 이러한 방식은 하드웨어의 크기가 커지고 부가적인 후처리 연산(post-processing)을 필요하게 되는 등의 오버헤드가 발생하게 된다. 본 발명에서는, 중복형태의 승수를 곱하는 방식을 공개키 몽고메리 곱셈기(혹은, 공개키 연산기)에 적용함으로써, 부가적으로 발생하는 오버헤드의 문제점을 근본적으로 해결하고 있다.
중복 형태 리코딩을 위한 간단한 변형
중복 형태 리코딩(redundant form recoding, RFR)을 수행하기 위해서는, 먼저 중복 형태 리코딩 변형(redundant form recoding transformation, 이하 'RFR-변형')이 수행된다. 이러한 RFR-변형 과정은 승수(B)에 특정한 리코딩 상수(RFR-constant)를 더해주고, 그 결과값을 특정한 형태(RFR-form)로 변환하는 과정으로 구성될 것이다.
실시 예에 있어서, 특정한 리코딩 상수(RFR-constant)는 '1010...1010'이다. 여기서, 특정 상수(RFR-constant)의 비트 크기는 피연산자(혹은, 피승수)의 크기와 동일할 수 있다.
먼저, 리코딩하고자 하는 승수(B)가 다음과 같이 중복 형태로 존재한다고 가정하자.
Figure 112013001134917-pat00012
여기서, 승수(B)에 특정한 리코딩 상수(RFR-constant)를 더하여 변형시킨 값을 변형된 승수(B')이라고 할 때, 변형된 승수(B')는 아래의 수학식과 같이 표현될 것이다. 여기서 변형된 승수(B')는 중복 형태로 존재한다고 가정하겠다.
Figure 112013001134917-pat00013
여기서 B'C는 변형된 승수(B')의 캐리이고, B'S는 변형된 상수(B')의 썸이다. 이 RFR-변형 과정은 간단한 하드웨어 구조로 구현될 수 있다.
도 1은 본 발명에 따른 RFR-변형 과정을 하드웨어적인 구조로 구현한 중복 형태 리코딩 변형부에 대한 제 1 실시 예를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 중복 형태 리코딩 변형부(12)는 변형된 반가산기(HA', modified half adder) 및 반가산기(HA, half adder)가 반복되는 제 1 열과, 전가산기(FA, full adder) 및 반가산기(HA, half adder)가 반복되는 제 2 열로 구성된다. 여기서, 전가산기(FA), 반가산기(HA), 및 변형된 반가산기(HA')의 의미는 아래의 수학식으로 표현될 것이다.
Figure 112013001134917-pat00014
Figure 112013001134917-pat00015
Figure 112013001134917-pat00016
여기서, a, b는 입력 비트이고, c는 이웃한 반가산기(HA)의 캐리 비트이다.
한편, 본 발명은 하드웨어적인 크기를 줄이기 위하여 도 1에 도시된 중복 형태 리코딩 변형부(12)를 최적화시키는 구조로 구현될 수 있다.
도 2는 본 발명에 따른 RFR-변형 과정을 하드웨어적인 구조로 구현한 중복 형태 리코딩 변형부에 대한 제 2 실시 예를 예시적으로 보여주는 도면이다. 도 2를 참조하면, 중복 형태 리코딩 변형부(12-1)는 인버터(inverter, INV)가 간헐적으로 반복되어 배치되는 제 1 열과 전가산기(FA)가 연속적으로 반복되어 배치된 제 2 열로 구성된다. 중복 형태 리코딩 변형부(12-1)는 도 1에 도시된 중복 형태 리코딩 변형부(12)를 최적화시킨 구조이다.
이때, HDL(Hardware Description Language)의 디자인 컴파일러에서 앤드 게이트(AND gate)가 낸드 게이트(NAND gate)로 전환되고, 오어 게이트(OR gate)가 노어 게이트(NOR gate)로 전환되는 과정을 거치기 때문에, 인버터(INV)는 일반적으로 오버헤드로 작용하지 않는다. 따라서, 중복 형태 리코딩 변형부(12-1)는, 가장 하드웨어 크기가 작은 덧셈기인 RCA(ripple carry adder)와 동일한 수준의 하드웨어 크기로 구현될 수 있다.
중복 형태 리코딩부(12, 12-1)는 비트 단위로 연산을 수행할 것이다. 여기서 비트 단위 연산값들(r0, r2, r4, r6, r8, r10, r12, r14) 각각은, 캐리 1 비트(왼쪽으로 출력하는 신호)와 썸 1 비트(아래로 출력하는 신호)로 출력될 것이다.
수학식 5을 참조하면, 중복 형태 리코딩 상수(RFR-constant)는 변형된 반가산기(HA')를 통해 입력 비트들(a, b)에 더해지고 있다.
RFR-변형의 연산값들은, 도 1 및 도 2에 도시된 바와 같이,r0, r2, r4, r6, r8, r10, r12, r14 형태로 출력된다. 각각의 연산값(ri)은 2 비트의 변형된 승수의 썸(B'S)과 1 비트의 변형된 승수의 캐리(B'C)로 구성된다. 여기서, 2 비트의 변형된 승수의 썸(B'S)의 최대값은 3이고, 1 비트의 변형된 승수의 캐리(B'C)의 최대값은 1이다. 따라서, 연산값(ri)의 범위는 다음과 같은 수학식으로 표현될 것이다.
Figure 112013001134917-pat00017
중복 형태 리코딩
각각의 결과값(ri), 즉, s'2i +1, S'2i, c'2i 의 조합은 아래의 수학식으로 리코딩될 수 있다.
Figure 112013001134917-pat00018
여기서,
Figure 112013001134917-pat00019
,
Figure 112013001134917-pat00020
,
Figure 112013001134917-pat00021
, i가 홀수일 때,
Figure 112013001134917-pat00022
이다.
상술 된 수학식 7에서, '-2'는 중복 형태 리코딩 변형을 통해 임의로 2를 더해주었던 것을 보상하기 위한 값이다. 결과적으로, [0, 4] 범위의 값을 갖는 ri에 2를 빼주었으므로, 부분곱(P2i)의 값은 {-2A, -A, 0, A, 2A}중 하나로 결정될 것이다. 여기서, -A는 피승수(A)의 2의 보수(2's compliment), -2A는 -A의 쉬프트한 값이고, 2A는 피승수(A)를 쉬프트한 값이다.
이러한 리코딩 결과값들은 변조된 부스 리코딩의 그것들과 동일할 것이다.
본 발명의 실시 예에 따른 리코딩 공식은 아래의 표와 같이 표현될 수 있다.
s'2i +1 s'2i c'2i Partial Product P2i
0 0 0 -2A
0 0 1 -A
0 1 0 -A
0 1 1 0
1 0 0 0
1 0 1 A
1 1 0 A
1 1 1 2A
구현 복잡도
종래의 변조된 부스 리코딩(modified Booth recoding)과 본 발명의 실시 예에 따른 중복 형태 리코딩(RFR recoding)의 구현 복잡도(implementation complexity)는 면적 복잡도(area complexity)와 지연 복잡도(delay complexity) 측면에서 비교될 수 있다.
도 3은 본 발명의 실시 예에 따른 중복 형태 리코딩을 수행하는 곱셈기(10)를 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 곱셈기(10)는 중복 형태 리코딩 변형부(12), 중복 형태 리코딩부(14), 및 부분곱셈부(16)를 포함한다.
변조된 부스 리코딩(modified Booth recoding)과 같은 일반적인 리코딩의 경우, 중복 형태의 승수를 먼저 비중복 형태로 변환하는 과정(예를 들어, non-adjacent form transformation, 이하, 'NRF-변형')을 거처야 한다. 반면에, 중복 형태 리코딩(redundant form recoding)의 경우, 'RFR-변형'이 요구된다.
NRF-변형은 일반적인 덧셈으로 구현되기 때문에, 어떠한 덧셈기를 사용하느냐에 따라 복잡도의 정도가 달라진다. 따라서, 면적에 최적화된 덧셈기인 리플-캐리-애더(ripple-carry adder, RCA)와 지연에 최적화된 덧셈기인 캐리-셀렉터-애더(carry-select adder, CSA), 두 가지 경우를 함께 비교해보도록 하겠다. 다음 표를 참조하면, NRF-변형에 사용될 수 있는 RCA 및 CSA와 RFR-변형에 대한 면적 복잡도와 지연 복잡도를 비교한 것을 볼 수 있다.
RCA CSA RBR RFR
면적 복잡도 θ(n) θ(nlog n) θ(n) θ(n)
지연 복잡도 θ(n) θ(log n) θ(1) θ(1)
면적-지연 효율성 θ(n2) θ(n(log n)2) θ(n) θ(n)
상술 된 표 2를 참조하면, RFR-변형의 면적 복잡도는 가장 작은 덧셈기인 RCA와 동일하고, 지연 복잡도는 가장 빠른 덧셈기인 CSA보다 월등히 작은 것을 볼 수 있다. 면적 복잡도와 지연 복잡도를 곱한 면적-지연 효율성(area-delay efficiency)에서도 RFR-변형이 월등히 우수하다.
종래 기술 중, 중복 부스 리코딩(redundant Booth recoding;RBR)의 경우, θ( )표기 방식에서 RFR과 동일한 면적 및 지연 복잡도를 가진다. 하지만, 실제적인 하드웨어 복잡도는 RFR이 훨씬 우세하다(복잡도 θ()로 표현할 경우, 상수 계수는 무시하게 됨). 상술 된 바와 같이, 본 발명의 RFR 방식의 하드웨어 구성은 기본적으로 리플-캐리-애더와 동일하게 구성될 수 있는데, 이는 RFR이 최소한의 하드웨어로 구성될 수 있음을 의미한다.
또한, RFR의 경우, 기본적으로 '1010 ... 1010'의 상수를 더하는 과정이며, 이는 경우에 따라 전처리(preprocessing)가 가능하다. 이로 인해, 하드웨어의 구조 및 연산하는 수식에 따라, '1010 ... 1010'의 덧셈은 하드웨어의 구성에서 제외될 수도 있으며, 이 경우 하드웨어의 구성은 더욱 간단해 질 수 있다.
공개키 연산기에 중복 형태 리코딩 적용
공개키 연산기의 기본적인 연산은 모듈러 곱셈이며, 피연산자의 크기 또한 상당히 크기 때문에, 중복 형태 리코딩(RFR)을 적용하기 위한 최적의 응용(application)일 것이다. 예를 들어, RSA 공개키 연산의 경우, 최소 1024 비트의 곱셈으로 이루어져 있다.
공개키 연산에서 가장 널리 사용하는 곱셈 알고리즘 중 하나가 몽고메리(montgomery) 곱셈 알고리즘으로, 모듈러 연산이 효율적으로 수행될 수 있다. 먼저 몽고메리 곱셈 알고리즘은 다음과 같이 기술될 수 있다.
Figure 112013001134917-pat00023
상술 된 몽고메리 곱셈 알고리즘을 수행하는 모듈러 곱셈기의 구조는 도 3에 도시된 바와 같다.
도 4는 본 발명의 실시 예에 따른 모듈러 곱셈기를 예시적으로 보여주는 블록도이다. 도 4를 참조하면, 모듈러 곱셈기(100)는 부분 곱셈부(110), 모듈러스 곱셈부(120), 누산기(130), 레지스터(140), 몫 발생기(150), 및 제 1 내지 제 3 리코딩부들(161, 162, 163)을 포함한다.
부분 곱셈부(110)는 피승수(A)와 승수 비트(bi')를 곱셈 연산할 것이다. 모듈러스 곱셈부(120)는 모듈러스(M)와 변형된 몫 비트(qi')를 곱셈 연산할 것이다. 누산기(130)는 이전 누산값(Si -1), 제 1 및 제 2 부분 곱셈부들(110, 120)의 출력 값들을 입력 받고, 상술 된 몽고메리 알고리즘 1를 이용하여 누산값(Si)을 계산한다. 레지스터(140)는 계산된 누산값(Si)를저장한다. 몫 발생기(150)는 이전 누산값(Si-1)에서 최하위 디지트(si-1)가 변형된 값을 입력 받고, 상술 된 몽고메리 알고리즘 1를 이용하여 몫(qi -1)을 발생한다.
레지스터(140)로부터 출력되는 si -1 는 레지스터(140)에 저장된 누산값(Si)의 최하위 디지트(LSD)이다. 이 최하위 디지트(si)의 크기는 기수에 의해 결정된다. 예를 들어, 기수가 216이면, 그 크기는 16 비트이다.
도 4에서 도시된 바와 같이, 모듈러 곱셈은 3개의 곱셈 연산들, 즉, A×bi, M×qi -1, m'×si - 1 으로 구성된다. 여기서, A×bi에서 A와 bi는 중간 결과값이 아닌 사용자 입력값이므로, 비중복 형태로 존재할 수 있다. 반면에, M×qi -1의 qi - 1와 m'×si- 1 의 si -1 는 모두 이전 연산의 중간 결과값이므로, 중복 형태로 존재한다. 따라서 M×qi -1의 qi - 1와 m'×si - 1 의 si -1 는 중복 형태 리코딩을 적용할 수 있다. 여기서, m'은 NIM (Negative Inverse of Modulus)의 최하위 디지트이다.
아래의 표는 제 1 리코딩부(161) 및 제 2 리코딩부(162)에 대해 RCA, CSA 및 RFR을 적용한 경우에 대한 지연 복잡도를 비교한 것이다.
RCA CSA RFR
리코딩 1 n log n 1
si -1×m' log n 1og n log n
리코딩 2 n log n 1
qi -1×M log n log n log n
Accumulator 1 1 1
Overall 2n + 2log n + 1 4log n + 1 2log n + 3
표 3을 참조하면, 면적 복잡도가 비슷한 RCA와 RFR를 비교하면, 복잡도 차원(complexity order)이 θ(n)에서 θ(log n)로 줄어든다. 또한, 면적 복잡도가 상당히 큰 CSA와 비교하더라도, 지연 복잡도가 약 1/2로 줄어든다.
여기서, 중복 부스 리코딩 (RBR) 의 경우는 비교대상에서 제외되었다. 이는, 기존의 몽고메리 곱셈 연산기에서 지연 복잡도를 줄이기 위해 RBR을 포함한 중복 리코딩(redundant recoding)을 적용하는 예가 없었기 때문이다 (기존에, 파이프라이닝(Pipelining) 등의 기법을 적용한 예들이 있으나, 이는 하드웨어의 크기를 증가시키고 후처리 연산이 필요하게 되는 등의 오버헤드를 발생시켜, 근본적인 지연 문제를 해결하지 못하고 있다). 즉, 중복 리코딩을 몽고메리 곱셈 연산기에 적용하는 방식을 본 발명의 일부로 포함한다.
도 5는 본 발명에 따른 모듈러 곱셈기를 갖는 암호 프로세서를 포함하는 보안 시스템(1000)을 예시적으로 보여주는 블록도이다. 도 5를 참조하면, 보안 시스템(1000)은 중앙처리장치(1100), 암호 프로세서(1200), 롬(1300), 램(1400), 및 암호 프로세서용 메모리(1500)를 포함한다.
중앙처리장치(1100)는 보안 시스템(1000)의 전반적인 동작을 제어한다. 암호 프로세서(1200)는 중앙처리장치(1100)의 제어에 따라 암호, 인증 및 전자 서명을 가능하게 하는 명령을 해독하고, 데이터를 처리한다. 암호 프로세서(1200)는 도 1 내지 도 3에 설명된 중복 형태 리코딩을 이용한 곱셈 동작을 수행한다. 롬(1300)과 램(1400)은 보안 시스템(1000)을 구동하는데 필요한 데이터를 저장한다. 암호 프로세서용 메모리(1500)는 암호 프로세서(1200)의 구동에 필요한 데이터를 저장한다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10: 곱셈기
12: 중복 형태 리코딩 변형부
13: 중복 형태 리코딩부
14: 부분 곱셈부
100: 모듈러 곱셈기
161: 제 1 리코딩부
162: 제 2 리코딩부
163: 제 3 리코딩부

Claims (10)

  1. 중복 형태의 승수에 피승수의 비트 크기와 동일한 비트 크기를 가지는 리코딩 상수를 더함으로써 상기 승수를 변형하는 단계;
    상기 변형된 승수의 썸(sum) 비트, 상기 변형된 승수의 캐리(carry) 비트 및 상기 리코딩 상수를 기반으로 리코딩을 수행하는 단계; 및
    상기 리코딩을 수행한 결과값들을 이용하여 상기 승수와 상기 피승수의 부분곱을 수행하는 단계를 포함하고,
    상기 중복 형태의 승수는 상기 승수의 값이 두 개의 숫자의 합의 형태로 존재하는 곱셈 방법.
  2. 제 1 항에 있어서,
    상기 리코딩 상수는 '1010 ... 1010'인 곱셈 방법.
  3. 제 1 항에 있어서,
    상기 승수를 변형하는 단계는 비트 단위로 연산을 수행하는 단계를 포함하고,
    상기 변형된 승수의 비트 단위 연산 값들 각각은 2 비트의 썸 비트와 1 비트의 캐리 비트로 구성되는 곱셈 방법.
  4. 제 1 항에 있어서,
    상기 승수를 변형하는 단계는 비트 단위로 연산을 수행하는 단계를 포함하고,
    상기 비트 단위 연산은, 인버팅 및 전가산을 포함하고,
    상기 변형된 반가산은 제 1 입력 비트, 제 2 입력 비트 및 '1'을 더하는 곱셈 방법.
  5. 제 1 항에 있어서,
    상기 승수를 변형하는 단계는 비트 단위로 연산을 수행하는 단계를 포함하고,
    상기 비트 단위 연산은, 전가산, 반가산, 및 변형된 반가산을 포함하고,
    상기 변형된 반가산은 제 1 입력 비트, 제 2 입력 비트 및 '1'을 더하는 곱셈 방법.
  6. 제 5 항에 있어서,
    상기 비트 단위 연산값들 각각(ri)은 아래의 수학식
    Figure 112013001134917-pat00024
    을 만족하는 곱셈 방법.
  7. 제 1 항에 있어서,
    상기 리코딩을 수행한 결과값들 각각은 0, 상기 피승수, 상기 피승수의 2의 보수, 상기 피승수의 쉬프트 값, 상기 쉬프트한 값의 2의 보수 중 어느 하나로 결정되는 곱셈 방법.
  8. 제 1 항에 있어서,
    상기 리코딩을 수행하는 단계는, 아래의 수학식
    Figure 112013001134917-pat00025

    을 만족하고,
    여기서, A는 상기 피승수, B는 상기 승수, n는 상기 피승수의 비트 크기이고,
    Figure 112013001134917-pat00026
    ,
    Figure 112013001134917-pat00027
    ,
    Figure 112013001134917-pat00028
    , i가 홀수일 때,
    Figure 112013001134917-pat00029
    이고, P2i는 부분곱이고, B's는 상기 변형된 승수의 썸 비트이고, B'c는 상기 변형된 승수의 캐리 비트인 곱셈 방법.
  9. 피승수와 승수 비트를 곱셈하는 부분 곱셈부;
    모듈러스와 변형된 몫 비트를 곱셈하는 모듈러스 곱셈부;
    이전 누산값, 상기 부분 곱셈부 및 상기 모듈러스 곱셈부의 출력 값들을 입력 받고, 몽고메리 알고리즘에 따라 누산값을 계산하는 누산기;
    상기 계산된 누산값을 저장하는 레지스터;중복 형태의 상기 이전 누산값에 리코딩 상수를 더함으로써 상기 이전 누산값을 변형하고, 상기 변형된 이전 누산값을 리코딩하는 제 1 리코딩부;
    상기 변형된 이전 누산값을 이용하여 몫을 발생하는 몫 발생기; 및
    상기 몫 발생기로부터 제공된 중복 형태의 상기 몫에 상기 리코딩 상수를 더함으로써 상기 몫을 변형하고, 상기 변형된 몫을 리코딩하는 제 2 리코딩부를 포함하고,
    상기 모듈러스 곱셈부로 제공되는 상기 변형된 몫 비트는 상기 제2 리코딩부로부터 출력되는 값이고,
    상기 리코딩 상수는 상기 피승수의 비트 크기와 동일한 비트 크기를 가지는 모듈러 곱셈기.
  10. 삭제
KR1020130001227A 2013-01-04 2013-01-04 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기 KR102057648B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130001227A KR102057648B1 (ko) 2013-01-04 2013-01-04 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기
US14/139,113 US9164732B2 (en) 2013-01-04 2013-12-23 Multiplication method and modular multiplier using redundant form recoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130001227A KR102057648B1 (ko) 2013-01-04 2013-01-04 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기

Publications (2)

Publication Number Publication Date
KR20140089230A KR20140089230A (ko) 2014-07-14
KR102057648B1 true KR102057648B1 (ko) 2019-12-20

Family

ID=51060969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130001227A KR102057648B1 (ko) 2013-01-04 2013-01-04 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기

Country Status (2)

Country Link
US (1) US9164732B2 (ko)
KR (1) KR102057648B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101929984B1 (ko) * 2012-05-17 2018-12-18 삼성전자주식회사 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
KR102338863B1 (ko) 2015-09-09 2021-12-13 삼성전자주식회사 연산을 제어하기 위한 장치 및 방법
CN110889259B (zh) * 2019-11-06 2021-07-09 北京中科胜芯科技有限公司 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100508092B1 (ko) * 2003-05-09 2005-08-17 삼성전자주식회사 저전력 모듈로 곱셈을 수행하는 연산장치
KR100652376B1 (ko) 2004-07-29 2006-12-01 삼성전자주식회사 분리 연산 가능한 구조를 가지는 모듈러 곱셈기와 이를포함하는 암호화 시스템
US7801937B1 (en) 2004-09-01 2010-09-21 Altera Corporation Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5184318A (en) 1989-09-05 1993-02-02 Cyrix Corporation Rectangular array signed digit multiplier
JP3153370B2 (ja) 1993-01-14 2001-04-09 三菱電機株式会社 乗算装置
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
FR2793971B1 (fr) 1999-05-20 2001-08-31 France Telecom Multiplieur de nombres complexes
US6446104B1 (en) * 1999-09-15 2002-09-03 Sun Microsystems, Inc. Double precision floating point multiplier having a 32-bit booth-encoded array multiplier
KR100413529B1 (ko) * 2000-11-25 2003-12-31 학교법인 포항공과대학교 잉여 이진수 연산을 채택한 디지털 곱셈 장치 및 방법
KR20020047509A (ko) 2000-12-13 2002-06-22 신경욱 여분 이진 부분곱을 이용한 복소수 승산방법 및 이를적용한 복소수 승산기
US20030158880A1 (en) 2002-02-13 2003-08-21 Ng Kenneth Y. Booth encoder and partial products circuit
JP3726966B2 (ja) * 2003-01-23 2005-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 乗算器及び暗号回路
JP5088854B2 (ja) 2006-09-25 2012-12-05 株式会社明治 拡散強調画像撮影のための造影用組成物
US7519646B2 (en) 2006-10-26 2009-04-14 Intel Corporation Reconfigurable SIMD vector processing system
KR20110105555A (ko) * 2010-03-19 2011-09-27 삼성전자주식회사 효율적인 하드웨어 구성을 갖는 몽고메리 승산기
US8583902B2 (en) * 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100508092B1 (ko) * 2003-05-09 2005-08-17 삼성전자주식회사 저전력 모듈로 곱셈을 수행하는 연산장치
KR100652376B1 (ko) 2004-07-29 2006-12-01 삼성전자주식회사 분리 연산 가능한 구조를 가지는 모듈러 곱셈기와 이를포함하는 암호화 시스템
US7801937B1 (en) 2004-09-01 2010-09-21 Altera Corporation Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
H. Orup. 'Simplifying quotient determination in high-radix modular multiplication'. Proceedings of the 12th Symposium on Computer Arithmetic, 1995.07., pp.193-199.

Also Published As

Publication number Publication date
US9164732B2 (en) 2015-10-20
US20140192977A1 (en) 2014-07-10
KR20140089230A (ko) 2014-07-14

Similar Documents

Publication Publication Date Title
Erle et al. Decimal multiplication with efficient partial product generation
US8229109B2 (en) Modular reduction using folding
US8977668B2 (en) Calculating unit for reducing an input number with respect to a modulus
US7930337B2 (en) Multiplying two numbers
US8862651B2 (en) Method and apparatus for modulus reduction
US9268564B2 (en) Vector and scalar based modular exponentiation
WO2015164996A1 (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
KR101326078B1 (ko) 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템
Wang et al. Fast scalable radix-4 Montgomery modular multiplier
US9811318B2 (en) Montgomery multiplication method for performing final modular reduction without comparison operation and montgomery multiplier
KR102057648B1 (ko) 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
Dwivedi An efficient multiplication algorithm using Nikhilam method
US7558817B2 (en) Apparatus and method for calculating a result of a modular multiplication
JP2000010479A (ja) モンゴメリ・リダクション装置及び記録媒体
KR101977873B1 (ko) 하드웨어 구현된 모듈러 역원 모듈
JP2937982B2 (ja) モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法
CN111064567B (zh) 一种sidh特殊域快速模乘方法
Ye et al. Energy-efficient architecture for word-based Montgomery modular multiplication algorithm
JP3434220B2 (ja) 逆元演算装置、及びそのプログラム記録媒体
Sanu et al. Parallel montgomery multipliers
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
JP2000276046A (ja) 楕円曲線演算装置、演算方法及びその方法を実施するプログラムを記録した記録媒体
Huai et al. Efficient architecture for long integer modular multiplication over Solinas prime
JP2790327B2 (ja) 剰余乗算回路および剰余乗算方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right