KR101326078B1 - 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템 - Google Patents

모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템 Download PDF

Info

Publication number
KR101326078B1
KR101326078B1 KR1020070102588A KR20070102588A KR101326078B1 KR 101326078 B1 KR101326078 B1 KR 101326078B1 KR 1020070102588 A KR1020070102588 A KR 1020070102588A KR 20070102588 A KR20070102588 A KR 20070102588A KR 101326078 B1 KR101326078 B1 KR 101326078B1
Authority
KR
South Korea
Prior art keywords
bit string
bits
multiplication
result
multiplier
Prior art date
Application number
KR1020070102588A
Other languages
English (en)
Other versions
KR20090037124A (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 KR1020070102588A priority Critical patent/KR101326078B1/ko
Priority to US11/980,360 priority patent/US8055696B2/en
Priority to DE102007054316A priority patent/DE102007054316A1/de
Publication of KR20090037124A publication Critical patent/KR20090037124A/ko
Application granted granted Critical
Publication of KR101326078B1 publication Critical patent/KR101326078B1/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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • G09C1/06Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system wherein elements corresponding to the signs making up the clear text are operatively connected with elements corresponding to the signs making up the ciphered text, the connections, during operation of the apparatus, being automatically and continuously permuted by a coding or key member
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Complex Calculations (AREA)

Abstract

연산 처리 방법을 개선한 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를 구비하는 암호 연산 시스템이 개시된다. 상기 모듈러 곱셈 방법의 일실시예에 따르면, 피승수(multiplicand) a(a는 정수)의 제1 비트열과 승수(multiplier) b(b는 정수)의 제1 비트열에 대한 제1 곱셈 연산을 수행하고, 상기 제1 곱셈 결과의 일부 비트들을 제거(elimination)하기 위한 제1 감소(reduction) 연산과정을 포함하는 제1 연산 단계와, 피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하고, 상기 제2 곱셈 결과의 일부 비트들을 제거하기 위한 제2 감소(reduction) 연산과정을 포함하는 제2 연산 단계와, 상기 제1 연산 단계의 결과와 상기 제2 연산 단계의 결과를 이용하여 모듈러 곱셈 결과를 산출하는 단계를 구비하며, 상기 제1 연산 단계와 상기 제2 연산 단계는 서로 독립적으로 수행되는 것을 특징으로 한다.

Description

모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를 구비하는 암호 연산 시스템{Modular Arithmetic Method, Modular Multiplier and Cryptosystem having the same}
본 발명은 모듈러 곱셈 방법에 관한 것으로서, 더 상세하게는 곱셈(multiplication) 방법 및 감소(reduction) 연산 방법을 개선하여 모듈러 곱셈 처리 속도를 향상시킨 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를 구비하는 암호 연산 시스템에 관한 것이다.
암호화 방법은 일반적으로 비밀키(secret key, 또는 대칭키(symmetric-key)) 암호화 방법과 공개키(public key, 비대칭키(asymmetric-key)) 암호화 방법으로 분류될 수 있다.
비밀키 암호화 방식은 두 개의 통신 장치들이 서로 동일한 비밀키를 사용하여 데이터를 암호화하여 송신하거나 또는 수신된 데이터를 복호화하는 것이다. 이처럼 비밀키 암호화 방식에 따르면, 두 통신 장치들이 서로 동일한 비밀키를 공유해야 하므로, 두 통신 장치들만을 위한 안전한 키 전송용 통신 채널이 필요하다.
반면에, 공개키 암호화 방식은 복수의 통신 장치들 각각이 통신하고자 하는 상대측 장치의 공개된 키를 사용하여 데이터를 암호화하여 송신하고, 수신된 데이터를 공개되지 않은 자신만이 보유하고 있는 개인키를 이용하여 복호화하는 것이다. 따라서 공개키 암호화 방식에서는 자신의 공개키와 개인키를 생성한 후, 공개키는 공개하고 개인키만을 안전하게 보유하면 되므로 키를 관리하는 것이 용이하다.
대표적인 공개키 알고리즘으로는, RSA(Ron Rivest, Adi Shamir, Len Adleman) 알고리즘, 타원곡선 암호 알고리즘(ECC) 및 DH(Diffie-Hellman) 알고리즘 등이 존재한다. 그 중, RSA 알고리즘이 적용되는 시스템은 공개키 암호 시스템으로서 가장 널리 사용되고 있는 것으로서, 인수분해 문제 해결의 높은 난이도를 이용한다. 상기 RSA 암호 시스템 등은 암호화뿐만 아니라 전자서명의 용도로도 사용될 수 있다.
RSA 암호 시스템을 포함한 많은 암호 시스템들에 기본적으로 사용되는 연산은 모듈러 멱승(modular exponentiation) 연산이다. 모듈러 멱승을 위해서는 반복적인 모듈러 곱셈 연산이 필요하다. 모듈러 곱셈 연산은, 일반적으로 승수(multiplier)의 비트를 검색한 결과에 기반하여 피승수(multiplicand)를 계속 더해가는 곱셈(multiplication) 연산 방법과, 감소(reduction)를 하기 위해 승수(multiplier) 및 피승수(multiplicand)의 곱셈(multiplication) 결과가 모듈러스(modulus)보다 작아질 때까지 계속해서 모듈러스(modulus)를 빼는 감산 연산으로 구성된다.
일예로서 RSA 암호 시스템은, 평문(plane text) M을 암호화하기 위하여 두 개의 양의 정수로 구성된 공개키(e,n)(e: 암호화 지수)를 이용하여
Figure 112007073004410-pat00001
를 계산한 후 n 으로 나눈 나머지를 암호문(cipher text) C로 사용한다. 복호화의 경우 개인키(d,n)(d: 복호화 지수)를 이용하여 암호문 C 를 d 번 곱한 후 n으로 나누면 이에 따른 나머지가 평문 M이 된다. 상기 암호화 및 복호화를 수식으로 나타내면 다음의 수학식 1과 같다.
Figure 112007073004410-pat00002
Figure 112007073004410-pat00003
,
(e: 암호화 지수, d: 복호화 지수, n: 모듈러스)
이와 같이, 많은 공개키 암호 시스템은 모듈러 곱셈이나 모듈러 곱셈에 기반한 모듈러 멱승 연산을 기초로 하기 때문에 모듈러 곱셈 알고리즘이 얼마나 효율적으로 구현되었으냐가 곧 시스템 성능의 절대적 지표로 나타날 수 있다. 효율적이란 것은, 높은 성능을 유지하면서도 설계의 복잡도 및 회로의 차지 면적 등의 요소를 고려한 결과일 수 있으나, 상기와 같은 요소들 중 어느 하나의 장점에 치중하다보면 다른 요소들의 장점을 포기해야 하는 결과가 발생한다. 일예로서 높은 성능을 갖는 모듈러 곱셈기는 병렬적인 회로 구성을 사용함에 의하여 그 차지하는 면적이 증가할 수 있다. 이에 따라 모듈러 곱셈기(Modelar multiplier)를 구현하는 경우 상기와 같은 요소들의 트레이드-오프(trade off) 전략이 기반이 된다.
한편, 모듈러 곱셈 연산의 수행에서는, 부분 곱셈 연산이 수행되는 횟수에 의해 그 속도가 좌우되므로, 부분 곱셈 동작의 횟수가 증가함에 따라 그 연산 처리 에 소요되는 시간이 증가하게 되며, 또한 감소(reduction) 연산이 갖는 순차적인(Sequential) 연산 특성에 의하도 모듈러 곱셈 연산 수행 시간의 증가를 초래한다. 또한, 모듈러 연산기를 구현하기 위한 하드웨어의 사이즈는 곱셈(multiplication) 연산과 감소(reduction) 연산의 상호 결합(Interleaving)에 의해 영향을 받을 수 있는데, 이는 두 연산간에 상호 결합(Interleaving)이 결여된 경우에는 곱셈(multiplication)을 위한 연산 블록과 감소(reduction)를 위한 연산 블록이 분리되어 구현되야 하기 때문이다.
즉, 모듈러 곱셈의 효율적인 연산을 위해서는, 모듈러 곱셈 연산 전체에 걸친 부분 곱셈 동작의 횟수를 줄이는 방안이라던가, 모듈러 곱셈기에서의 곱셈(multiplication) 연산과 감소(reduction) 연산의 상호 결합(Interleaving)에 대한 고려가 필요하다. 널리 알려진 카라츄바(Karatsuba) 알고리즘의 경우, 다수 비트로 이루어지는 두 수의 곱셈(multiplication) 연산을 수행함에 있어서, 부분 곱셈(multiplication) 연산 횟수를 감소시킴으로써 모듈러 곱셈의 처리속도를 향상시키고자 제안되었다.
그러나, 종래에 제안된 다수의 모듈러 곱셈기의 경우는, 곱셈(multiplication) 연산과 감소(reduction) 연산의 상호 결합(Interleaving)이 결여됨에 따라, 곱셈(multiplication) 연산 블록과 감소(reduction) 연산 블록을 각각 분리하여 구성하였고, 이에 따른 하드웨어 구현이 비효율적이거나 간결하지 못한 문제가 있었다. 또한, 상호 결합(Interleaving) 방식에 기반한 일부의 모듈러 곱셈 연산 방식에 있어서도, 감소(reduction) 연산시 상위 비트열부터 하위 비트열 로의 순차적인(Sequential) 연산방식(left-to-right)이 적용되거나, 또는 하위 비트열부터 상위 비트열로의 순차적인(Sequential) 연산방식(right-to-left)이 적용됨으로써, 모듈러 연산의 처리속도의 측면에서 비효율적인 문제가 발생하였다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 전체적인 부분 곱셈(multiplication) 연산 회수를 줄일 수 있으며, 곱셈 연산 및 감소 연산을 병렬적(Parallel)으로 적용함으로써 모듈러 곱셈을 효율적으로 수행할 수 있는 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를 구비하는 암호 연산 시스템을 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일실시예에 따른 모듈러 곱셈 방법은, 피승수(multiplicand) a(a는 정수)의 제1 비트열과 승수(multiplier) b(b는 정수)의 제1 비트열에 대한 제1 곱셈 연산을 수행하고, 상기 제1 곱셈 결과의 일부 비트들을 제거(elimination)하기 위한 제1 감소(reduction) 연산과정을 수행하는 제1 연산 단계와, 피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하고, 상기 제2 곱셈 결과의 일부 비트들을 제거하기 위한 제2 감소(reduction) 연산과정을 수행하는 제2 연산 단계 및 상기 제1 연산 단계의 결과와 상기 제2 연산 단계의 결과를 이용하여 모듈러 곱셈 결과를 산출하는 단계를 구비하며, 상기 제1 연산 단계와 상기 제2 연산 단계는 서로 독립적으로 수행되는 것을 특징으로 한다.
바람직하게는, 상기 제1 연산 단계와 상기 제2 연산 단계는 동시에 수행될 수 있다.
또한 바람직하게는, 상기 제1 감소(reduction) 연산과정은, 모듈러스의 일부 비트들의 제1 정수배를 상기 제1 곱셈 결과에 합산하는 과정을 더 구비하고, 상기 제2 감소(reduction) 연산과정은, 모듈러스의 다른 일부 비트들의 제2 정수배를 상기 제2 곱셈 결과에 합산하는 과정을 더 구비하는 것을 특징으로 한다.
한편, 상기 피승수(multiplicand)는, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어지며, 상기 승수(multiplier)는, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어질수 있다.
바람직하게는, 제1 감소(reduction) 연산과정은, 상기 제1 곱셈 결과의 일부의 하위 비트들을 제거하기 위하여, 모듈러스의 제1 비트열의 제1 정수배를 상기 제1 곱셈 결과에 합산하며, 제2 감소(reduction) 연산과정은, 상기 제2 곱셈 결과의 일부의 상위 비트들을 제거하기 위하여, 모듈러스의 제2 비트열의 제2 정수배를 상기 제2 곱셈 결과에 합산하는 것을 특징으로 한다.
또한 바람직하게는, 상기 모듈러스는, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어지는 것을 특징으로 한다.
또한 바람직하게는, 제1 연산 단계는, 2n 비트의 제1 곱셈 결과에 대하여 하위 n 비트를 제거하고, 상위 n 비트의 값을 제1 연산 단계의 결과로서 제공하며, 제2 연산 단계는, 2n 비트의 제2 곱셈 결과에 대하여 상위 n 비트를 제거하고, 하위 n 비트의 값을 제2 연산 단계의 결과로서 제공하는 것을 특징으로 한다.
또한 바람직하게는, 상기 모듈러 곱셈 결과를 산출하는 단계는, a*b*R^-1 mod m (단, R=2^n, m=모듈러스)의 값을 모듈러 곱셈값으로 산출하며, t'2*R + t'0 (단, t'0은 n 비트의 제1 연산 단계의 결과값, t'2는 n 비트의 제2 연산 단계의 결과값)으로 산출되는 중간값을 구하는 단계를 구비하는 것을 특징으로 한다.
또한 바람직하게는, 상기 모듈러 곱셈 결과를 산출하는 단계는, 상기 피승수의 제1 비트열과 상기 승수의 제2 비트열을 곱한 제1 값과, 상기 피승수의 제2 비트열과 상기 승수의 제1 비트열을 곱한 제2 값과, 상기 모듈러스의 제1 비트열의 제2 정수배에 해당하는 제3 값과, 상기 모듈러스의 제2 비트열의 제1정수배에 해당하는 제4 값을 상기 중간값에 합산하는 것을 특징으로 한다.
또한 바람직하게는, 상기 모듈러 곱셈 결과를 산출하는 단계는, 수식 (a0+a1)*(b0+b1)를 계산하기 위한 곱셈 연산과, 수식 (q'0+q1)*(m0+m1)계산하기 위한 곱셈 연산을 수행하며, (단, a0은 피승수의 제1 비트열, a1은 피승수의 제2 비트열, b0은 승수의 제1 비트열, b1은 승수의 제2 비트열, q'0은 상기 제1 정수배, q1은 상기 제2 정수배, m0은 모듈러스의 제1 비트열, m1은 모듈러스의 제2 비트열) 상기 모듈러 곱셈 결과를 산출하기 위하여, 다음과 같은 연산을 수행하는 것을 특징으로 한다.
a*b*R^-1 mod m = (a0+a1)(b0+b1) + (q'0+q1)(m0+m1) + t'0 - t'0*R - t'2 + t'2*R
한편, 본 발명의 다른 실시예에 따른 모듈러 곱셈 방법은, 피승수(multiplicand) a(a는 정수)와 승수(multiplier) b(b는 정수)와의 곱셈을 수행하는 단계와, 상기 곱셈 결과(a*b)의 하위 비트들을 제거하기 위한 제1 감소(reduction) 연산 및 상기 곱셈 결과(a*b)의 상위 비트들을 제거하기 위한 제2 감소(reduction) 연산을 수행하는 단계와, 상기 제1 감소(reduction) 연산 결과 및 상기 제2 감소(reduction) 연산 결과를 이용하여 모듈러 곱셈 결과를 산출하는 단계를 구비하며, 상기 제1 감소(reduction) 연산과 상기 제2 감소(reduction) 연산은 서로 독립적으로 수행되는 것을 특징으로 한다.
본 발명의 일실시예에 따른 모듈러 곱셈기는, 피승수(multiplicand) a(a는 정수)의 제1 비트열과 승수(multiplier) b(b는 정수)의 제1 비트열에 대한 제1 곱셈 연산을 수행하고, 상기 제1 곱셈 결과의 일부 비트들을 제거(elimination)하기 위한 제1 감소(reduction) 연산을 수행하는 제1 연산 블록과, 피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하고, 상기 제2 곱셈 결과의 일부 비트들을 제거하기 위한 제2 감소(reduction) 연산을 수행하는 제2 연산 블록 및 상기 제1 연산 블록 및 제2 연산 블록의 출력을 이용하여 모듈러 곱셈 결과를 산출하여 출력하는 제3 연산 블록을 구비하는 것을 특징으로 한다.
본 발명의 일실시예에 따른 암호 연산 시스템은 모듈러 곱셈기를 구비하며, 상기 모듈러 곱셈기는, 피승수(multiplicand) a(a는 정수)의 제1 비트열과 승수(multiplier) b(b는 정수)의 제1 비트열에 대한 제1 곱셈 연산을 수행하고, 상기 제1 곱셈 결과의 일부 비트들을 제거(elimination)하기 위한 제1 감소(reduction) 연산을 수행하는 제1 연산 블록과, 피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하고, 상기 제2 곱셈 결과의 일부 비트들을 제거하기 위한 제2 감소(reduction) 연산을 수행하는 제2 연산 블록 및 상기 제1 연산 블록 및 제2 연산 블록의 출력을 이용하여 모듈러 곱셈 결과를 산출하여 출력하는 제3 연산 블록을 구비하는 것을 특징으로 한다.
상기한 바와 같은 본 발명에 따르면, 모듈러 곱셈에 요구되는 부분 곱셈의 회수를 줄일 수 있으며, 또한 병렬(Parallel) 특성을 갖는 개선된 연산 방법을 적용함으로써 모듈러 곱셈의 처리 속도를 향상시킬 수 있는 효과가 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명에 적용 가능한 상위-to-하위 비트(left-to-right)로의 감소 연산의 일예를 나타내는 도면이다. 도시된 바와 같이 a*b mod m 의 모듈러 연산을 수행하기 위한 감소(reduction) 연산이 상위 비트로부터 하위 비트로의 방향으로 수행된다. left-to-right 연산 방법이 적용되는 예로서, 상호 결합(Interleaving) 방식에 기반하지 않는 Barrett 연산 방법이나, 또는 곱셈(multiplication) 연산의 쉬프트-가산(shift-add) 단계와 나누기(division) 연산의 쉬프트-감산(shift-substract) 단계의 상호 결합(Interleaving) 방식에 기반하는 Blakley 연산 방법 등이 있다. 도 1에는 left-to-right 연산 방법에 기반하여 전체적인 곱 셈(multiplication) 결과에 대하여 감소(reduction) 연산이 수행되는 예가 도시된다.
도시된 바와 같이, 하나 이상의 상위 비트들 a1과 하위 비트들 a0으로 이루어지는 피승수(multiplicand) a와, 하나 이상의 상위 비트들 b1과 하위 비트들 b0으로 이루어지는 승수(multiplier) b에 대한 곱셈(multiplication) 연산이 수행된다. 또한 모듈러스 m에 적절한 정수(q0)를 곱하고 그 결과값을 왼쪽으로 쉬프트 시킨 후, 이를 상기 피승수(multiplicand) a와 승수(multiplier) b의 곱셈 결과(a*b)에 가산(adding) 또는 감산(substracting)한다. 상기 가산(adding) 또는 감산(substracting) 연산을 수행하는 동안, 도 1의 빗금친 부분으로 도시된 바와 같이, 상기 곱셈 결과 a*b의 일부 하위 비트들에 대해서는 가산(adding) 또는 감산(substracting) 연산이 수행되지 않는다.
상기 가산(adding) 또는 감산(substracting) 결과에 의하여 피승수(multiplicand) a와 승수(multiplier) b의 곱셈 결과(a*b)의 일부 상위 비트들을 "0"의 값으로 만든다. 이후, 상기 연산 결과와 모듈러스 m에 소정의 정수(q1)을 곱한 값에 대하여 가산(adding) 또는 감산(substracting) 연산을 수행한다. 상기와 쉬프팅 동작 및 가산(adding) 또는 감산(substracting) 연산을 반복함으로써 a*b mod m 의 값을 산출할 수 있다.
도 2는 본 발명에 적용 가능한 하위-to-상위 비트(right-to-left) 로의 모듈러 곱셈 연산의 일예를 나타내는 도면이다. 도 2에는 right-to-left 연산의 일예로서 모듈러 곱셈 연산이 하위 비트로부터 상위 비트로 수행되는 몽고메 리(Montgomery) 알고리즘이 도시된다.
몽고메리(Montgomery) 방식에 따른 모듈러 연산기는 n 비트의 피승수(multiplicand) a, n 비트의 승수(multiplier) b 및 모듈러스(modulus) m을 입력받아서 a*b*R^-1 mod m을 계산하기 위한 구성을 갖는다. 피승수(multiplicand) a 는 하나 이상의 상위 비트들 a1과 하나 이상의 하위 비트들 a0으로 이루어지며, 승수(multiplier) b는 하나 이상의 상위 비트들 b1과 하나 이상의 하위 비트들 b0로 이루어진다. 또한 상기 R 은 바람직하게는 2^n 값으로 정의될 수 있다.
몽고메리(Montgomery) 방식에 따르면, 먼저 피승수(multiplicand)의 일부 비트 및 승수(multiplier)의 일부 비트들에 대한 부분적인 연산이 수행된다. 일예로서 피승수(multiplicand) 및 승수(multiplier)의 일부 하위 비트들에 대하여 부분적인 연산이 수행되며, 감소(reduction) 연산 과정에서 상기 연산 결과의 최하위 비트(Least Significant Bit)에 대응하여 모듈러스(modulus) m의 소정의 배수 값이 정의된다. 하위 비트들(a0, b0)에 대한 연산 결과는 모듈러스(modulus) m의 소정의 배수 값과 더해짐으로써, 상기 연산 결과의 최하위 비트(Least Significant Bit)를 제거한다(LSB 값을 "0"으로 만든다). 이후 상위 비트 방향(left 방향)으로의 쉬프트 동작에 기반하여 피승수(multiplicand) 및 승수(multiplier)의 상위 비트들에 대한 연산이 수행된다. 또한 상기 상위 비트들의 연산 결과에 대응하여 적절한 모듈러스(modulus) m의 배수 값이 정의되고, 하위 두 번째 비트의 값을 제거하기 위한 감소(reduction) 연산 과정이 수행된다. 상기한 과정을 반복적으로 수행함으로써 전체 연산 결과의 하위 n 비트를 "0"의 값으로 만들고, 상위 n 비트의 값을 a*b*R^-1 mod m 의 값으로 산출할 수 있다.
도 2는 상기와 같은 right-to-left 모듈러 곱셈 연산 과정을 간략히 나타낸 것이다. 하나 이상의 상위 비트들 a1과 하나 이상의 하위 비트들 a0로 이루어지는 피승수(multiplicand) a와, 하나 이상의 상위 비트들 b1과 하나 이상의 하위 비트들 b0로 이루어지는 승수(multiplier) b에 대한 모듈러 곱셈(multiplication) 연산이 수행된다. 감소(reduction) 연산 과정에서 a*b 의 연산결과의 하위 비트들을 순차적으로 제거하기 위하여, a*b 의 연산결과와 모듈러스 m에 소정의 정수 q0'를 곱한 값을 가산(adding)한다. 상기 가산(adding) 수행 동안, 도 2의 빗금친 부분으로 도시된 바와 같이 상기 곱셈(multiplication) 연산결과(a*b)의 일부 상위 비트들에 대해서는 연산이 수행되지 않는다. 이후, 상위 비트 방향(left 방향)으로의 쉬프트 동작에 기반하여 상기 곱셈(multiplication) 연산 및 감소(reduction) 연산을 반복적으로 수행함으로써 a*b 의 연산결과의 하위 비트들을 "0"의 값으로 만든다. 상기 감소(reduction) 연산 수행결과에 의해 산출되는 상위 비트들은 a*b*R^-1 mod m 의 값이 된다.
도 3은 본 발명의 일실시예에 따른 모듈러 곱셈 방법을 나타내는 도면이다. 특히, 본 발명의 일실시예에 따른 모듈러 곱셈에서의 감소(reduction) 연산 방법은, left-to-right 감소(reduction) 연산 방식과 right-to-left 감소(reduction) 연산 방식이 서로 결합된 하이브리드(hybrid) 방식의 감소(reduction) 연산으로서, left-to-right 감소(reduction) 연산과 right-to-left 감소(reduction) 연산은 서로 독립적으로 수행된다.
도 1에서 설명하였던 바와 같이, left-to-right 감소(reduction) 연산 방식에서는, a*b 연산 결과의 상위 비트들에 모듈러스 m의 정수배(q0*m)를 가산(adding) 또는 감산(substracting) 수행하는 경우, a*b 연산 결과의 하위 비트들(빗금친 부분으로 나타낸)은 실제로 연산 수행되지 않는다. 또한 도 2에서의 right-to-left 감소(reduction) 연산 방식에서는, a*b 연산결과의 하위 비트들에 모듈러스 m의 정수배(q'0*m)를 가산(adding) 또는 감산(substracting) 수행하는 경우, a*b 연산 결과의 상위 비트들(빗금친 부분으로 나타낸)은 실제로 연산 수행되지 않는다.
상기와 같은 left-to-right 감소(reduction) 연산 방식에서는 하위 비트들에 대한 연산이 상위비트들에 대한 연산결과에 의존하였으며, right-to-left 감소(reduction) 연산 방식에서는 상위 비트들에 대한 연산이 하위비트들에 대한 연산결과에 의존하였다. 그러나, 본 발명의 일실시예에 따른 모듈러 연산에서는, a*b 연산 결과의 상위 비트들에 대한 감소(reduction) 연산 과정과 a*b 연산결과의 하위 비트들에 대한 감소(reduction) 연산 과정이 독립적으로 수행되며, 바람직하게는 left-to-right 감소(reduction) 연산과 right-to-left 감소(reduction) 연산이 동시에 수행된다.
도 3에는 피승수(multiplicand) a가 하나 이상의 상위 비트열 a1과 하위 비트열 a0으로 이루어지는 것을 나타내고 있으며, 승수(multiplier) b가 하나 이상의 상위 비트열 b1과 하위 비트열 b0으로 이루어지는 것을 나타내고 있다. 일예로서 피승수(multiplicand) a는 2n 비트의 값을 가지며 상위 비트열 a1과 하위 비트열 a0 각각은 n 비트로 이루어질 수 있다. 마찬가지로 승수(multiplier) b는 2n 비트의 값을 가지며 상위 비트열 b1과 하위 비트열 b0 각각은 n 비트로 이루어질 수 있다. 또한 모듈러스 m은 2n 비트의 값일 수 있으며, 본 발명의 일실시예에 따른 모듈러 연산 방법은 a*b*R^-1 mod m 값을 산출하기 위한 알고리즘을 수행한다. 바람직하게는 상기 R은 2^n 값으로 정의될 수 있다.
도 3에 도시된 바와 같이, a*b 의 연산결과의 하위 비트들을 순차적으로 제거하기 위하여 모듈러스 m의 소정의 정수배(q'0*m)를 a*b 의 연산결과에 가산(adding) 또는 감산(substracting)하는 과정이 수행되며, 이와 동시에 a*b 의 연산결과의 상위 비트들을 순차적으로 제거하기 위하여 모듈러스 m의 소정의 정수배(q1*m)를 a*b 의 연산결과에 가산(adding) 또는 감산(substracting)하는 과정이 수행된다. 상기 과정에 의하여, a*b 의 연산결과의 일부 상위 비트들과 일부 하위 비트들은 제거된다("0" 값을 갖는다). 상기 제거된 비트들을 제외한 중간의 비트열 값이 모듈러스 m 보다 작아지면, 상기 중간의 비트열에 의한 값이 a*b*R^-1 mod m을 연산한 결과값이 된다.
상기와 같은 본 발명의 모듈러 곱셈 방법을 도 4를 참조하여 더 상세하게 설명한다.
본 발명의 일실시예에 따른 모듈러 곱셈 방법의 제1 단계는, 피승수(multiplicand) a의 어느 하나의 비트열(일예로서, 하위 비트열 a0)과 승수(multiplier) b의 어느 하나의 비트열(일예로서, 하위 비트열 b0)에 대한 제1 연산과정을 구비한다. 또한 상기 제1 단계는, 피승수(multiplicand) a의 다른 하나의 비트열(일예로서, 상위 비트열 a1)과 승수(multiplier) b의 다른 하나의 비트열(일예로서, 상위 비트열 b1)에 대한 제2 연산과정을 구비한다. 상기 제1 연산과정과 제2 연산과정은 서로 독립적으로 수행되며, 또한 바람직하게는 동시에 수행될 수 있다.
제1 연산과정에서는, 피승수(multiplicand) a의 하위 비트열 a0과 승수(multiplier) b의 하위 비트열 b0과의 곱셈(multiplication) 연산(t0 = a0*b0)이 수행된다. 또한 제1 연산과정은, 상기 곱셈(multiplication) 결과(t0 = a0*b0)의 일부 하위 비트들을 제거하기 위한(일부 하위 비트들을 "0" 으로 만들기 위하여) 제1 감소(reduction) 연산과정을 구비한다. 제1 감소(reduction) 연산과정에서는, 모듈러스 m의 하위 비트열 m0에 정수배를 곱하고(q'0*m0), 이를 상기 곱셈(multiplication) 결과(t0 = a0*b0)와 합산한다. 상기 정수 q'0은 상기 곱셈 결과 t0 = a0*b0의 하위 비트들을 제거하기 위하여 적절하게 선택된다. 상기 합산 결과에 따라 제1 연산결과가 산출된다. 상기 제1 연산결과는 도시된 바와 같이 일부의 하위 비트들이 "0"의 값을 가지며, 일부의 상위 비트들은 t'0 값을 갖는다. 바람직하게는 2n 비트의 모듈러스 m에 대하여 상기 하위 비트열 m0은 n 비트의 값을 갖는다. 또한 제1 연산결과에 있어서 하위 n 비트는 "0"의 값을 가지며, 상위 n 비트는 t'0 값에 해당한다.
한편, 상기 제2 연산과정에서는, 피승수(multiplicand) a 및 승수(multiplier) b의 상위 비트열의 곱셈(multiplication) 연산(t2 = a1*b1)이 수행된다. 또한 상기 제2 연산과정은 상기 곱셈(multiplication) 연산(t2 = a1*b1)의 일부 상위 비트들을 제거하기 위한 제2 감소(reduction) 연산과정을 구비한다. 제2 감소(reduction) 연산과정에서는, 모듈러스 m의 상위 비트열 m1에 정수배를 곱하고(q1*m1), 이를 상기 곱셈(multiplication) 결과(t2 = a1*b1)와 합산한다. 정수 q1은 상기 곱셈 결과 t2 = a1*b1의 상위 비트들을 제거하기 위하여 적절하게 선택된다. 상기 합산 결과에 따라 제2 연산결과가 산출된다. 상기 곱셈 결과 t2 = a1*b1의 상위 비트들을 제거하기 위하여 바람직하게는 상기 정수 q1이 음(-)의 값을 갖는다. 도시된 바와 같이 제2 연산결과는 일부의 상위 비트들(n 비트열)이 "0"의 값을 가지며, 일부의 하위 비트들(n 비트열)은 t'2 값을 갖는다. 또한 2n 비트의 모듈러스 m에 대하여 상위 비트열 m1은 n 비트의 값을 갖는다.
상기한 바와 같이 제1 연산과정과 제2 연산과정은 서로 의존하지 않고 독립적으로 수행된다. 또한 곱셈(multiplication) 결과의 하위 비트들을 제거하기 위한 제1 감소(reduction) 연산과 상위 비트들을 제거하기 위한 제2 감소(reduction) 연산이 독립적으로 수행되기 때문에, 제1 감소(reduction) 연산에 대응하는 모듈러스의 정수 배 값과 제2 감소(reduction) 연산에 대응하는 모듈러스의 정수 배 값은 서로 의존하지 않는다. 이에 따라, left-to-right 감소(reduction) 연산과 right-to-left 감소(reduction) 연산이 서로 독립적으로, 그리고 동시에 수행될 수 있다.
상기와 같은 모듈러 곱셈 방법의 제1 단계가 수행되고 나면, 실제 a*b*R^-1 mod m 값을 산출하기 위한 모듈러 곱셈 방법의 제2 단계가 수행된다.
실제 a*b*R^-1 mod m 값을 산출하기 위해서는, 제2 연산 과정을 통하여 다음과 같은 곱셈(multiplication) 및 합산(adding) 과정을 거쳐야 한다. 즉, 상기 제1 단계의 과정에서는 모듈러스 m 의 하위 비트열 m0과 정수 q'0을 곱한 값을 더하였으므로, 모듈러스 m 의 상위 비트열 m1과 정수 q'0을 곱한 값이 더 더해져야 한다. 이와 마찬가지로 모듈러스 m 의 하위 비트열 m0과 정수 q1을 곱한 값이 더 더해져야 한다.
한편, 상기 제1 단계의 과정에서는, 피승수(multiplicand) a 의 하위 비트열 a0과 승수(multiplier) b의 하위 비트열 b0의 곱셈(multiplication) 연산과, 피승수(multiplicand) a 의 상위 비트열 a1과 승수(multiplier) b의 상위 비트열 b1의 곱셈(multiplication) 연산만이 수행되었으므로, 제2 단계의 과정을 통하여 피승수(multiplicand) a 의 상위 비트열 a1과 승수(multiplier) b의 하위 비트열 b0의 곱셈(multiplication)결과와, 피승수(multiplicand) a 의 하위 비트열 a0과 승수(multiplier) b의 상위 비트열 b1의 곱셈(multiplication) 결과가 더 더해져야 한다.
즉, 제2 단계의 과정을 통하여 아래의 수학식 2에 해당하는 연산을 수행함으로써, 실제의 모듈러 연산값 a*b*R^-1 mod m을 구할 수 있다.
a*b*R^-1 mod m
= t'2*R + t'0 + (a0+a1)(b0+b1) - a0*b0 - a1*b1 + q'0*m1 + q1*m0
(단, R=2^n)
한편, 도 4에 도시된 바와 같이 아래의 수학식 3이 만족되어진다.
a0*b0 + q'0*m0 = t0 + q'0*m0 = t'0*R
a1*b1 + q1*m1 = t2 + q1*m1 = t'2
상기 수학식 2와 수학식 3을 이용하여 수식을 정리하면 다음의 수학식 4가 만족되어진다.
a*b*R^-1 mod m
= (a0+a1)(b0+b1) - (t'0*R - q'0*m0) - (t'2 - q1*m1) + t'0 + t'2*R + q'0*m1 + q1*m0
= (a0+a1)(b0+b1) + (q'0+q1)(m0+m1) + t'0 - t'0*R - t'2 + t'2*R
도 4에 도시된 바와 같이, 본 발명의 일실시예에 따른 모듈러 곱셈 방법은 제2 단계를 통하여 상기 수학식 4에 개시된 연산과정을 수행한다. 즉, 제1 단계의 연산을 통하여 t'2에 해당하는 상위 비트들 및 t'0에 해당하는 하위 비트들로 이루어지는 중간값(t'2 * R + t'0)을 산출하고, 상기 중간값에 (a0+a1)*(b0+b1)의 값과, (q'0+q1)(m0+m1)의 값을 합산한다. 또한 t'0에 해당하는 상위 비트들과 t'2에 해당하는 하위 비트들로 이루어지는 값(t'0*R + t'2)을 감산한다.
상술한 바와 같은 본 발명의 일실시예에 따른 모듈러 곱셈 방법은, left-to-right 기반의 감소(reduction) 연산과 right-to-left 기반의 감소(reduction) 연산을 병렬하게 수행하는 제1 단계에 의하여 중간값(t'2 * R + t'0)을 산출한다. 또한 상기 산출된 중간값을 이용하여 모듈러 곱셈 결과값을 산출함에 있어서, 수학식 4에 개시된 바와 같이 카라츄바(Karatsuba) 연산과 유사한 방식을 효과적으로 이용 할 수 있다. 이에 따라 제2 단계에서 필요로 하는 곱셈(multiplication) 연산의 횟수를 줄일 수 있다. 일예로서, 상기 수학식 2에 도시된 바와 같은 연산을 수행하기 위해서는 3 단계의 곱셈 과정((a0+a1)(b0+b1), q'0*m1 + q1*m0)을 필요로 하나, 상기 수학식 4에 도시된 바와 같은 연산에서는 2 단계의 곱셈 과정((a0+a1)(b0+b1), (q'0+q1)(m0+m1))만이 요구된다.
상술하였던 연산 방법에 따른 실제 모듈러 곱셈의 일예를 아래의 표를 참조하여 설명한다. 실제 구현된 하드웨어에서는 2진 체계에서 연산이 이루어질 것이나, 아래에서는 설명의 편의를 위하여 10진 체계에서의 모듈러 곱셈을 예로 든다.
a 12 34
b 56 78
12*50 -> 0600 0272 <- 34*08
39*10 -> 390 648 <- 81*08
(600-390) -> 0210 0920 <- (272+648)
12*06 -> 0072 2380 <- 34*70
39*07 -> 273 0 <- 81*00
(210+72-273) -> 0009 3300 <- (920+2380+0)
0933 <- t'2*R + t'0
(34+12)(78+56) <- (a0+a1)(b0+b1)
(08+(-17))(81+39) <- (q'0+q1)(m0+m1)
-3309 <- - (t'0*R + t'2)
2708
a*b*R^-1 mod m
상기 표 1은 본 발명의 일실시예에 따른 모듈러 곱셈 연산을 10진 체계의 수로 예를 든 것으로서, a*b*R^-1 mod m를 산출함에 있어서 a=1234, b=5678, 모듈러스 m=3981 이며, R은 10^2를 나타낸다. 또한 a0=34, a1=12이며, b0=78, b1=56 이고, 모듈러스 m에 대하여 m0=81이며 m1=39이다.
상기한 예에서, 피승수(multiplicand) a 의 하위 비트열 a0(34)과 승수(multiplier) b의 하위 비트열 b0(78)의 곱셈 결과(34*78)에서 일부의 하위 비트를 제거하기 위하여, 모듈러스의 하위 비트열 m0(81)의 정수배가 상기 곱셈 결과에 더해진다. 표 1에 도시된 예에서는 81*08과 81*00 값이 상기 곱셈 결과에 더해지며, 이에 따라 상기 곱셈 결과에서 하위 두 개의 비트가 제거된다. 이 경우, t'0은 "33"이 되며, q'0 은 "08" 값이 된다.
한편, 피승수(multiplicand) a 의 상위 비트열 a1(12)과 승수(multiplier) b의 상위 비트열 b1(56)의 곱셈 결과(12*56)에서 일부의 하위 비트를 제거하기 위하여, 모듈러스의 상위 비트열 m0(39)의 정수배가 상기 곱셈 결과에 더해진다. 상기 예에서는 39*(-10)과 39*(-07) 값이 상기 곱셈 결과에 더해지며, 이에 따라 상기 곱셈 결과에서 상위 두 개의 비트가 제거된다. 이 경우, t'2은 "09"이 되며, q1 은 "-17" 값이 된다.
상기와 같은 모듈러 곱셈의 제1 단계가 수행되고 나면, 실제 a*b*R^-1 mod m를 산출하기 위한 제2 단계가 수행된다. 도시된 바와 같이, 상기 수학식 4를 산출하기 위한 요소들의 값이 모두 정의되었으므로, 이를 이용하여 실제 구하고자 하는 모듈러 곱셈값 a*b*R^-1 mod m = 2708 이 구해진다.
도 5는 본 발명의 일실시예에 따른 모듈러 곱셈 방법의 경우와 일반적인 몽고메리 방식의 곱셈 단계의 비교를 나타내는 도면이다. (a)에 도시된 바와 같이 일반적인 몽고메리 방식의 경우, 피승수(multiplicand) a의 상위 비트들 a1과 하위 비트들 a0을 승수(multiplier) b 의 상위 비트들 b1과 하위 비트들 b0 각각에 곱하기 위한 네 개의 곱셈 단계(a0*b0, a0*b1, a1*b0, a1*b1)를 필요로 한다. 또한 상기 네 개의 곱셈 단계(a0*b0, a0*b1, a1*b0, a1*b1) 각각에 대응하여 모듈러스 m에 정수 배를 곱하는 네 개의 곱셈 단계를 추가로 필요로 한다.
반면에, (b)에 도시된 바와 같이 본 발명의 일실시예에 따른 모듈러 곱셈 방법에 의하면, 제1 단계에서 피승수(multiplicand) a의 하위 비트들 a0을 승수(multiplier) b 의 하위 비트들 b0과 곱하는 단계, 그리고 피승수(multiplicand) a의 상위 비트들 a1과 승수(multiplier) b 의 상위 비트들 b1을 곱하는 단계를 필요로 한다. 또한 상기 곱셈 단계(a0*b0, a1*b1) 각각에 대하여 모듈러스 m에 정수 배를 곱하는 두 개의 곱셈 단계를 추가로 필요로 한다.
또한 제2 단계에서는 카라츄바(Karatsuba) 연산과 유사한 방식을 이용하여 모듈러 곱셈의 결과값을 산출하며, 상기 단계에서는 (a0+a1)*(b0+b1) 값을 산출하기 위한 곱셈 단계와, (q'0+q1)*(m0+m1) 값을 산출하기 위한 곱셈 단계만을 구비한다. 즉, (a)에서와 같이 종래의 모듈러 곱셈 연산에 비교하여 (b)에 도시된 바와 같이 본 발명의 일실시예에 따른 모듈러 곱셈 연산에서는 필요로 하는 곱셈 단계의 횟수를 3/4로 줄일 수 있다. 이에 따라 모듈러 곱셈 연산의 속도를 좌우하는 곱셈 단계를 줄일 수 있으므로 그 속도를 향상시킬 수 있다. 또한 상술하였던 바와 같이, 직렬하게 감소(reduction) 연산을 수행하던 종래의 경우와는 달리 본 발명의 경우 left-to-right 감소(reduction) 연산과 right-to-left 감소(reduction) 연산이 병렬하게 수행되므로, 상기 모듈러 곱셈 연산의 속도를 더 향상시킬 수 있다.
도 6은 본 발명의 일실시예에 따른 모듈러 곱셈기를 구성하기 위한 일예를 나타내는 블록도이다. 본 발명의 모듈러 곱셈을 수행하기 위한 실제 하드웨어 구현은 상기 도 6의 블록도에 도시된 바와 같은 연산식으로부터 자명한 것이므로 이에 대한 자세한 설명은 생략한다. 또한 도 6에 도시된 수식은 앞서 설명되었으므로, 이에 대해서는 자세한 설명은 생략한다.
도시된 바와 같이, 본 발명의 모듈러 곱셈기(100)는 피승수(multiplicand) a와 승수(multiplier) b 및 모듈러스 m을 이용하여, 모듈러 곱셈값 a*b*R^-1 mod m를 산출한다. 피승수(multiplicand) a는 제1 비트열(a0[0:n-1])과 제2 비트열(a1[0:n-1])로 이루어질 수 있으며, 바람직하게는 상기 제1 비트열(a0[0:n-1])은 n 비트로 이루어지는 피승수 a의 하위 비트열이며, 상기 제2 비트열(a1[0:n-1])은 n 비트로 이루어지는 피승수 a의 상위 비트열이다.
또한 승수(multiplier) b는 제1 비트열(b0[0:n-1])과 제2 비트열(b1[0:n-1])로 이루어질 수 있으며, 바람직하게는 상기 제1 비트열(b0[0:n-1])은 n 비트로 이루어지는 승수 b의 하위 비트열이며, 상기 제2 비트열(b1[0:n-1])은 n 비트로 이루어지는 승수 b의 상위 비트열이다.
또한 모듈러스 m은 제1 비트열(m0[0:n-1])과 제2 비트열(m1[0:n-1])로 이루어질 수 있으며, 바람직하게는 상기 제1 비트열(m0[0:n-1])은 n 비트로 이루어지는 모듈러스 m의 하위 비트열이며, 상기 제2 비트열(m1[0:n-1])은 n 비트로 이루어지는 모듈러스 m의 상위 비트열이다. 상기와 같은 경우 모듈러 곱셈값 a*b*R^-1 mod m에서 R은 2^n 값일 수 있다.
상기 모듈러 곱셈기(100)는, 모듈러 곱셈 연산의 제1 단계를 수행하기 위한 연산 블록(110)을 구비할 수 있으며, 상기 연산 블록(110)은 제1 연산 블록(111)과 제2 연산 블록(112)으로 이루어질 수 있다.
제1 연산 블록(111)은 피승수 a의 제1 비트열(a0[0:n-1]), 승수 b의 제1 비트열(b0[0:n-1]) 및 모듈러스 m의 제1 비트열(m0[0:n-1])을 입력받는다. 제1 연산 블록(111)은 피승수 a의 제1 비트열(a0[0:n-1])과 승수 b의 제1 비트열(b0[0:n-1])에 대해 곱셈 연산을 수행한다. 또한 상기 곱셈 연산의 결과의 일부 비트들을 제거하기 위하여 감소(reduction) 연산을 수행하고 이에 따른 결과를 출력한다.
자세하게는, 피승수 a의 제1 비트열(a0[0:n-1])과 승수 b의 제1 비트열(b0[0:n-1])을 곱하여, 2n 비트의 곱셈 결과(a0*b0)를 발생한다. 제1 연산 블록(111)에서는 상기 곱셈 결과(a0*b0)의 하위 비트들(바람직하게는, 하위 n 비트)을 제거하기 위하여 제1 감소(reduction) 연산을 수행한다.
상기 제1 감소(reduction) 연산을 수행함에 있어서, 상기 곱셈 결과(a0*b0)에 기반하여 적절한 제1 정수값(q'0)이 설정되고, 모듈러스 m의 제1 비트열(m0[0:n-1])을 상기 제1 정수값과 곱한다(q'0*m0). 상기 2n 비트의 곱셈 결과(a0*b0)는 모듈러스 m의 소정의 정수배와 합해짐에 의하여 하위 n 비트가 제거되고(a0*b0 + q'0*m0), 이에 따른 n 비트의 결과값(t'0[0:n-1])이 제1 연산 블록(111)으로부터 출력된다.
상기 제2 연산 블록(112)도 제1 연산 블록(111)과 유사한 방식에 따라 연산 동작을 수행한다. 바람직하게는, 상기 제2 연산 블록(112)의 동작은 제1 연산 블록(111)의 연산 결과에 영향을 받지 않으며, 두 블록(111, 112)는 서로 독립적으로 동작한다. 또한 바람직하게는 상기 제1 연산 블록(111)의 연산과정과 제2 연산 블록(112)의 연산과정은 동시에 수행된다.
제2 연산 블록(112)은, 피승수 a의 제2 비트열(a1[0:n-1])과 승수 b의 제2 비트열(b1[0:n-1])을 곱하여, 2n 비트의 곱셈 결과(a1*b1)를 발생한다. 또한 상기 곱셈 결과(a1*b1)에 기반하여 적절한 제2 정수값(q1)이 설정되고, 모듈러스 m의 제2 비트열(m1[0:n-1])을 상기 제2 정수값과 곱한다(q1*m1). 상기 2n 비트의 곱셈 결과(a1*b1)는 모듈러스 m의 소정의 정수배와 합해짐에 의하여 상위 n 비트가 제거되고(a1*b1 + q1*m1), 이에 따른 n 비트의 결과값(t'2[0:n-1])이 제2 연산 블록(112)으로부터 출력된다.
상기와 같은 모듈러 곱셈의 제1 단계의 수행결과(t'0[0:n-1], t'2[0:n-1])는 모듈러 곱셈의 제2 단계를 수행하기 위한 제3 연산 블록(120)으로 제공된다. 상기 제3 연산 블록(120)은, 제1 연산 블록(111) 및 제2 연산 블록(112)의 출력을 이용하여 중간값을 산출한다. 바람직하게는 상기 중간값은 t'2*R + t'0에 해당하는 값이다.
또한 제3 연산 블록(120)은 상기 산출된 중간값을 이용하여 실제 모듈러 곱셈 결과를 산출하여 출력한다. 실제 모듈러 곱셈 결과를 산출하기 위하여 제3 연산 블록(120)은 a*b*R^-1 mod m = t'2*R + t'0 + (a0+a1)(b0+b1) - a0*b0 - a1*b1 + q'0*m1 + q1*m0 에 해당하는 연산을 수행하여야 한다.
제3 연산 블록(120)에서 처리되는 전체 곱셈의 횟수를 줄이기 위하여, 상기 제3 연산 블록(120)은 상기 수식을 변형함에 의하여 카라츄바(Karatsuba) 연산과 유사한 형태로서 연산 동작을 수행한다. 상기 산출된 중간값을 이용하면, 카라츄바(Karatsuba) 방식과 유사한 연산방법을 사용함으로써 실제 모듈러 곱셈값을 효과적으로 산출할 수 있다.
제3 연산 블록(120)은 (a0+a1)*(b0+b1)과 (q'0+q1)*(m0+m1)에 해당하는 곱셈 동작만을 수행함으로써 모듈러 곱셈값을 산출할 수 있다. 즉, 상기 중간값(t'2*R + t'0)에 상기 곱셈 결과 (a0+a1)*(b0+b1)와 (q'0+q1)*(m0+m1)를 각각 합산한다. 또한 상기 합산 결과에 -(t'0*R + t'2)를 더 합산함으로써 모듈러 곱셈값 a*b*R^-1 mod m를 산출할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
도 1은 본 발명에 적용 가능한 상위-to-하위 비트(left-to-right)로의 모듈러 곱셈 연산의 일예를 나타내는 도면이다.
도 2는 본 발명에 적용 가능한 하위-to-상위 비트(right-to-left) 로의 모듈러 곱셈 연산의 일예를 나타내는 도면이다.
도 3은 본 발명의 일실시예에 따른 모듈러 곱셈 방법을 나타내는 도면이다.
도 4는 도 3에 도시된 모듈러 곱셈 방법을 더 자세하게 나타내기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 모듈러 곱셈 방법에 요구되는 곱셈 처리 횟수와 일반적인 몽고메리 방식에 요구되는 곱셈 처리 횟수를 비교하기 위한 도면이다.
도 6은 본 발명의 일실시예에 따른 모듈러 곱셈기를 구성하기 위한 일예를 나타내는 블록도이다.
* 도면의 주요부분에 대한 부호의 설명 *
100: 모듈러 곱셈기
111: 제1 연산 블록 112: 제2 연산 블록
113: 제3 연산 블록
a: 피승수(multiplicand) b: 승수(multiplier)
m: 모듈러스
a0[0:n-1]: 피승수의 제1 비트열
a1[0:n-1]: 피승수의 제2 비트열
b0[0:n-1]: 승수의 제1 비트열
b1[0:n-1]: 승수의 제2 비트열
m0[0:n-1]: 모듈러스의 제1 비트열
m1[0:n-1]: 모듈러스의 제2 비트열
q'0: 제1 정수값
q1: 제2 정수값

Claims (25)

  1. 피승수(multiplicand) a(a는 정수)의 제1 비트열과 승수(multiplier) b(b는 정수)의 제1 비트열에 대한 제1 곱셈 연산을 수행하고, 상기 제1 곱셈 결과의 일부 비트들을 제거(elimination)하기 위한 제1 감소(reduction) 연산과정을 수행하는 제1 연산 단계;
    피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하고, 상기 제2 곱셈 결과의 일부 비트들을 제거하기 위한 제2 감소(reduction) 연산과정을 수행하는 제2 연산 단계; 및
    상기 제1 연산 단계의 결과와 상기 제2 연산 단계의 결과를 이용하여 모듈러 곱셈 결과를 산출하는 단계를 구비하며,
    상기 제1 연산 단계와 상기 제2 연산 단계는 서로 독립적으로 수행되는 것을 특징으로 하는 모듈러 곱셈 방법.
  2. 제1항에 있어서,
    상기 제1 연산 단계와 상기 제2 연산 단계는 동시에 수행되는 것을 특징으로 하는 모듈러 곱셈 방법.
  3. 제1항에 있어서,
    상기 제1 감소(reduction) 연산과정은, 모듈러스의 일부 비트들의 제1 정수 배를 상기 제1 곱셈 결과에 합산하는 과정을 더 구비하고,
    상기 제2 감소(reduction) 연산과정은, 모듈러스의 다른 일부 비트들의 제2 정수배를 상기 제2 곱셈 결과에 합산하는 과정을 더 구비하는 것을 특징으로 하는 모듈러 곱셈 방법.
  4. 제1항에 있어서,
    상기 피승수(multiplicand)는, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어지며,
    상기 승수(multiplier)는, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어지는 것을 특징으로 하는 모듈러 곱셈 방법.
  5. 제4항에 있어서,
    제1 감소(reduction) 연산과정은, 상기 제1 곱셈 결과의 일부의 하위 비트들을 제거하기 위하여, 모듈러스의 제1 비트열의 제1 정수배를 상기 제1 곱셈 결과에 합산하며,
    제2 감소(reduction) 연산과정은, 상기 제2 곱셈 결과의 일부의 상위 비트들을 제거하기 위하여, 모듈러스의 제2 비트열의 제2 정수배를 상기 제2 곱셈 결과에 합산하는 것을 특징으로 하는 모듈러 곱셈 방법.
  6. 제5항에 있어서,
    상기 모듈러스는, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어지는 것을 특징으로 하는 모듈러 곱셈 방법.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제5항에 있어서,
    제1 연산 단계는, 2n 비트의 제1 곱셈 결과에 대하여 하위 n 비트를 제거하고, 상위 n 비트의 값을 제1 연산 단계의 결과로서 제공하며,
    제2 연산 단계는, 2n 비트의 제2 곱셈 결과에 대하여 상위 n 비트를 제거하고, 하위 n 비트의 값을 제2 연산 단계의 결과로서 제공하는 것을 특징으로 하는 모듈러 곱셈 방법.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제7항에 있어서, 상기 모듈러 곱셈 결과를 산출하는 단계는,
    a*b*R^-1 mod m (단, R=2^n, m=모듈러스)의 값을 모듈러 곱셈값으로 산출하며,
    t'2*R + t'0 (단, t'0은 n 비트의 제1 연산 단계의 결과값, t'2는 n 비트의 제2 연산 단계의 결과값)으로 산출되는 중간값을 구하는 단계를 구비하는 것을 특징으로 하는 모듈러 곱셈 방법.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제8항에 있어서, 상기 모듈러 곱셈 결과를 산출하는 단계는,
    상기 피승수의 제1 비트열과 상기 승수의 제2 비트열을 곱한 제1 값과, 상기 피승수의 제2 비트열과 상기 승수의 제1 비트열을 곱한 제2 값과, 상기 모듈러스의 제1 비트열의 제2 정수배에 해당하는 제3 값과, 상기 모듈러스의 제2 비트열의 제1정수배에 해당하는 제4 값을 상기 중간값에 합산하는 것을 특징으로 하는 모듈러 곱셈 방법.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제9항에 있어서, 상기 모듈러 곱셈 결과를 산출하는 단계는,
    수식 (a0+a1)*(b0+b1)를 계산하기 위한 곱셈 연산과, 수식 (q'0+q1)*(m0+m1)계산하기 위한 곱셈 연산을 수행하며, (단, a0은 피승수의 제1 비트열, a1은 피승수의 제2 비트열, b0은 승수의 제1 비트열, b1은 승수의 제2 비트열, q'0은 상기 제1 정수배, q1은 상기 제2 정수배, m0은 모듈러스의 제1 비트열, m1은 모듈러스의 제2 비트열)
    상기 모듈러 곱셈 결과를 산출하기 위하여, 다음과 같은 연산을 수행하는 것을 특징으로 하는 모듈러 곱셈 방법.
    a*b*R^-1 mod m = (a0+a1)(b0+b1) + (q'0+q1)(m0+m1) + t'0 - t'0*R - t'2 + t'2*R
  11. 피승수(multiplicand) a(a는 정수)와 승수(multiplier) b(b는 정수)와의 곱셈을 수행하는 단계;
    상기 곱셈 결과(a*b)의 하위 비트들을 제거하기 위한 제1 감소(reduction) 연산 및 상기 곱셈 결과(a*b)의 상위 비트들을 제거하기 위한 제2 감소(reduction) 연산을 수행하는 단계; 및
    상기 제1 감소(reduction) 연산 결과 및 상기 제2 감소(reduction) 연산 결과를 이용하여 모듈러 곱셈 결과를 산출하는 단계를 구비하며,
    상기 제1 감소(reduction) 연산과 상기 제2 감소(reduction) 연산은 서로 독립적으로 수행되는 것을 특징으로 하는 모듈러 곱셈 방법.
  12. 청구항 12은(는) 설정등록료 납부시 포기되었습니다.
    제11항에 있어서,
    상기 제1 감소(reduction) 연산과 상기 제2 감소(reduction) 연산은 동시에 수행되는 것을 특징으로 하는 모듈러 곱셈 방법.
  13. 제11항에 있어서,
    상기 피승수(multiplicand) a와, 상기 승수(multiplier) b와 모듈러스 m 각각은, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어지는 2n 비트의 데이터이며,
    상기 모듈러 곱셈 방법은, a*b*R^-1 mod m (단, R=2^n)의 값을 산출하는 것을 특징으로 하는 모듈러 곱셈 방법.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제13항에 있어서,
    상기 피승수 a와 승수 b와의 곱셈을 수행하는 단계는, 상기 피승수 a의 제1 비트열과 상기 승수 b의 제1 비트열을 곱하는 제1 곱셈단계와, 상기 피승수 a의 제2 비트열과 상기 승수 b의 제2 비트열을 곱하는 제2 곱셈단계를 구비하는 것을 특 징으로 하는 모듈러 곱셈 방법.
  15. 청구항 15은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 제1 감소(reduction) 연산은, 상기 모듈러스 m의 제1 비트열의 제1 정수배를 상기 제1 곱셈단계의 결과에 합산하는 단계를 구비하며,
    상기 제2 감소(reduction) 연산은, 상기 모듈러스 m의 제2 비트열의 제2 정수배를 상기 제2 곱셈단계의 결과에 합산하는 단계를 구비하는 것을 특징으로 하는 모듈러 곱셈 방법.
  16. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.
    제15항에 있어서,
    상기 제1 감소(reduction) 연산에 의하여, 2n 비트의 상기 제1 곱셈단계 결과에 대하여 하위 n 비트가 제거되고, 상위 n 비트의 값이 제1 감소(reduction) 연산 결과로서 제공되고,
    상기 제2 감소(reduction) 연산에 의하여, 2n 비트의 상기 제2 곱셈단계 결과에 대하여 상위 n 비트가 제거되고, 하위 n 비트의 값이 제2 감소(reduction) 연산 결과로서 제공되는 것을 특징으로 하는 모듈러 곱셈 방법.
  17. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.
    제16항에 있어서, 상기 모듈러 곱셈 결과를 산출하는 단계는,
    수식 (a0+a1)*(b0+b1)를 계산하기 위한 곱셈 연산과, 수식 (q'0+q1)*(m0+m1)계산하기 위한 곱셈 연산을 수행하며, (단, a0은 피승수의 제1 비트열, a1은 피승 수의 제2 비트열, b0은 승수의 제1 비트열, b1은 승수의 제2 비트열, q'0은 상기 제1 정수배, q1은 상기 제2 정수배, m0은 모듈러스의 제1 비트열, m1은 모듈러스의 제2 비트열)
    상기 모듈러 곱셈 결과를 산출하기 위하여, 다음과 같은 연산을 수행하는 것을 특징으로 하는 모듈러 곱셈 방법.
    a*b*R^-1 mod m = (a0+a1)(b0+b1) + (q'0+q1)(m0+m1) + t'0 - t'0*R - t'2 + t'2*R (단, t'0은 제1 감소(reduction) 연산 결과값, t'2는 제2 감소(reduction) 연산 결과값)
  18. 피승수(multiplicand) a(a는 정수)의 제1 비트열과 승수(multiplier) b(b는 정수)의 제1 비트열에 대한 제1 곱셈 연산을 수행하고, 상기 제1 곱셈 결과의 일부 비트들을 제거(elimination)하기 위한 제1 감소(reduction) 연산을 수행하는 제1 연산 블록;
    피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하고, 상기 제2 곱셈 결과의 일부 비트들을 제거하기 위한 제2 감소(reduction) 연산을 수행하는 제2 연산 블록; 및
    상기 제1 연산 블록 및 제2 연산 블록의 출력을 이용하여 모듈러 곱셈 결과를 산출하여 출력하는 제3 연산 블록을 구비하는 것을 특징으로 하는 모듈러 곱셈기.
  19. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.
    상기 제1 연산 블록의 연산과정과 상기 제2 연산 블록의 연산과정은 서로 독립적으로 수행되는 것을 특징으로 하는 모듈러 곱셈기.
  20. 청구항 20은(는) 설정등록료 납부시 포기되었습니다.
    제18항에 있어서, 상기 제1 연산 블록은,
    상기 피승수의 제1 비트열과 승수의 제1 비트열에 대한 제1 곱셈 연산을 수행하는 제1 연산부;
    상기 제1 곱셈 연산 결과에 기반하여 제1 정수값을 설정하고, 모듈러스의 제1 비트열과 상기 제1 정수값을 곱한 값을 출력하는 제2 연산부; 및
    상기 제1 연산부 및 제2 연산부의 연산결과를 입력받아, 상기 제1 곱셈 결과의 일부의 하위 비트들을 제거하기 위한 제1 감소 연산을 수행하는 제3 연산부를 구비하는 것을 특징으로 하는 모듈러 곱셈기.
  21. 청구항 21은(는) 설정등록료 납부시 포기되었습니다.
    제20항에 있어서, 상기 제2 연산 블록은,
    상기 피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하는 제4 연산부;
    상기 제2 곱셈 연산 결과에 기반하여 제2 정수값을 설정하고, 모듈러스의 제2 비트열과 상기 제2 정수값을 곱한 값을 출력하는 제5 연산부; 및
    상기 제4 연산부 및 제5 연산부의 연산결과를 입력받아, 상기 제2 곱셈 결과의 일부의 상위 비트들을 제거하기 위한 제2 감소 연산을 수행하는 제6 연산부를 구비하는 것을 특징으로 하는 모듈러 곱셈기.
  22. 청구항 22은(는) 설정등록료 납부시 포기되었습니다.
    제21항에 있어서,
    상기 피승수(multiplicand) a와, 상기 승수(multiplier) b와 모듈러스 m 각각은, 하위 n 비트의 제1 비트열과 상위 n 비트의 제2 비트열로 이루어지는 2n 비트의 데이터이며,
    상기 제3 연산 블록은, 상기 모듈러 곱셈 결과로서 a*b*R^-1 mod m (단, R=2^n)의 값을 산출하는 것을 특징으로 하는 모듈러 곱셈기.
  23. 청구항 23은(는) 설정등록료 납부시 포기되었습니다.
    제22항에 있어서,
    상기 제1 감소(reduction) 연산에 의하여, 2n 비트의 상기 제1 곱셈 결과에 대하여 하위 n 비트가 제거되고, 상위 n 비트의 값(t'0)이 제3 연산부로부터 출력되고,
    상기 제2 감소(reduction) 연산에 의하여, 2n 비트의 상기 제2 곱셈 결과에 대하여 상위 n 비트가 제거되고, 하위 n 비트의 값(t'2)이 제6 연산부로부터 출력되며,
    상기 제3 연산 블록은, t'2*R + t'0의 값을 중간값으로 산출하는 것을 특징으로 하는 모듈러 곱셈기.
  24. 청구항 24은(는) 설정등록료 납부시 포기되었습니다.
    제23항에 있어서, 상기 제3 연산 블록은,
    상기 모듈러 곱셈 결과를 산출하기 위하여, 다음과 같은 연산을 수행하는 것을 특징으로 하는 모듈러 곱셈기.
    a*b*R^-1 mod m = (a0+a1)(b0+b1) + (q'0+q1)(m0+m1) + t'0 - t'0*R - t'2 + t'2*R
  25. 모듈러 곱셈기를 구비하는 암호 연산 시스템에 있어서, 상기 모듈러 곱셈기는,
    피승수(multiplicand) a(a는 정수)의 제1 비트열과 승수(multiplier) b(b는 정수)의 제1 비트열에 대한 제1 곱셈 연산을 수행하고, 상기 제1 곱셈 결과의 일부 비트들을 제거(elimination)하기 위한 제1 감소(reduction) 연산을 수행하는 제1 연산 블록;
    피승수의 제2 비트열과 승수의 제2 비트열에 대한 제2 곱셈 연산을 수행하고, 상기 제2 곱셈 결과의 일부 비트들을 제거하기 위한 제2 감소(reduction) 연산을 수행하는 제2 연산 블록; 및
    상기 제1 연산 블록 및 제2 연산 블록의 출력을 이용하여 모듈러 곱셈 결과 를 산출하여 출력하는 제3 연산 블록을 구비하는 것을 특징으로 하는 암호 연산 시스템.
KR1020070102588A 2007-10-11 2007-10-11 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템 KR101326078B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020070102588A KR101326078B1 (ko) 2007-10-11 2007-10-11 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템
US11/980,360 US8055696B2 (en) 2007-10-11 2007-10-31 Modular multiplication method, modular multiplier and cryptosystem having the same
DE102007054316A DE102007054316A1 (de) 2007-10-11 2007-11-05 Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070102588A KR101326078B1 (ko) 2007-10-11 2007-10-11 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템

Publications (2)

Publication Number Publication Date
KR20090037124A KR20090037124A (ko) 2009-04-15
KR101326078B1 true KR101326078B1 (ko) 2013-11-08

Family

ID=40435566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070102588A KR101326078B1 (ko) 2007-10-11 2007-10-11 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템

Country Status (3)

Country Link
US (1) US8055696B2 (ko)
KR (1) KR101326078B1 (ko)
DE (1) DE102007054316A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102241252B1 (ko) * 2020-12-03 2021-04-15 국민대학교산학협력단 모듈러 연산 방법, 장치 및 시스템

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8438208B2 (en) * 2009-06-19 2013-05-07 Oracle America, Inc. Processor and method for implementing instruction support for multiplication of large operands
US8555038B2 (en) 2010-05-28 2013-10-08 Oracle International Corporation Processor and method providing instruction support for instructions that utilize multiple register windows
KR101929984B1 (ko) 2012-05-17 2018-12-18 삼성전자주식회사 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
KR101321221B1 (ko) * 2013-05-23 2013-10-22 목포대학교산학협력단 암호용 모듈러 곱셈 장치 및 그 방법
US10833868B2 (en) * 2017-12-06 2020-11-10 Intel Corporation Direct anonymous attestation-based apparatus and method
US11106821B2 (en) * 2018-03-20 2021-08-31 Micro Focus Llc Determining pseudonym values using tweak-based encryption
KR102126933B1 (ko) * 2018-11-27 2020-06-25 한성대학교 산학협력단 32-비트 ARMv7-A 프로세서상 곱셈 가속화 방법
CN110908635A (zh) * 2019-11-04 2020-03-24 南京大学 基于同源曲线的后量子密码学的高速模乘器及其模乘方法
US20220121424A1 (en) * 2020-10-21 2022-04-21 PUFsecurity Corporation Device and Method of Handling a Modular Multiplication

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4346451A (en) 1979-06-01 1982-08-24 Aisuke Katayama Dual moduli exponent transform type high speed multiplication system
JP2003114618A (ja) 2001-10-04 2003-04-18 Hitachi Ltd データ処理装置
KR100652376B1 (ko) 2004-07-29 2006-12-01 삼성전자주식회사 분리 연산 가능한 구조를 가지는 모듈러 곱셈기와 이를포함하는 암호화 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100285082B1 (ko) 1993-11-06 2001-03-15 히데오 사카모토 유기기용 표시장치
KR950015177B1 (ko) 1993-12-06 1995-12-23 한국전기통신공사 사전 계산 테이블을 이용한 모듈로 리덕션 방법
FR2726668B1 (fr) 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
US7133889B2 (en) 2001-09-20 2006-11-07 Stmicroelectronics, Inc. Flexible galois field multiplier

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4346451A (en) 1979-06-01 1982-08-24 Aisuke Katayama Dual moduli exponent transform type high speed multiplication system
JP2003114618A (ja) 2001-10-04 2003-04-18 Hitachi Ltd データ処理装置
KR100652376B1 (ko) 2004-07-29 2006-12-01 삼성전자주식회사 분리 연산 가능한 구조를 가지는 모듈러 곱셈기와 이를포함하는 암호화 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
가변길이 고속 RSA 암호시스템의 설계 및 하드웨어 구현(박진영 외 2명, 한국통신학회논문지, '02-9 vol.27 No.9C) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102241252B1 (ko) * 2020-12-03 2021-04-15 국민대학교산학협력단 모듈러 연산 방법, 장치 및 시스템

Also Published As

Publication number Publication date
US20090100120A1 (en) 2009-04-16
US8055696B2 (en) 2011-11-08
KR20090037124A (ko) 2009-04-15
DE102007054316A1 (de) 2009-04-16

Similar Documents

Publication Publication Date Title
KR101326078B1 (ko) 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템
Knezevic et al. Faster interleaved modular multiplication based on Barrett and Montgomery reduction methods
US6151393A (en) Device and method for modular multiplication
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
KR102136911B1 (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
Ding et al. High-speed ECC processor over NIST prime fields applied with Toom–Cook multiplication
Yao et al. Faster pairing coprocessor architecture
JPH11305995A (ja) 計算装置のデ―タ処理高速化方法および装置。
US20120057695A1 (en) Circuits for modular arithmetic based on the complementation of continued fractions
KR101590322B1 (ko) 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법
Crowe et al. A scalable dual mode arithmetic unit for public key cryptosystems
KR100459732B1 (ko) 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
JP3726966B2 (ja) 乗算器及び暗号回路
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
US20100146029A1 (en) Method and apparatus for modular operation
JP4182226B2 (ja) 剰余系の計算方法及び装置並びにプログラム
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
Kudithi et al. Radix-4 interleaved modular multiplication for cryptographic applications
Nti et al. Asic design of low area rsa cryptocore based on montgomery multiplier
US10318245B2 (en) Device and method for determining an inverse of a value related to a modulus
Ambika et al. Data security using serial commutative RSA CORE for multiple FPGA system
Nadjia et al. High throughput parallel montgomery modular exponentiation on FPGA
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
JP3626315B2 (ja) 剰余算装置、情報処理装置及び剰余算方法
Lee et al. A faster modular multiplication based on key size partitioning for RSA public-key cryptosystem

Legal Events

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

Payment date: 20160930

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180927

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190930

Year of fee payment: 7