KR20160017319A - 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법 - Google Patents

연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법 Download PDF

Info

Publication number
KR20160017319A
KR20160017319A KR1020140099941A KR20140099941A KR20160017319A KR 20160017319 A KR20160017319 A KR 20160017319A KR 1020140099941 A KR1020140099941 A KR 1020140099941A KR 20140099941 A KR20140099941 A KR 20140099941A KR 20160017319 A KR20160017319 A KR 20160017319A
Authority
KR
South Korea
Prior art keywords
montgomery
significant bit
modulus
word
parameter
Prior art date
Application number
KR1020140099941A
Other languages
English (en)
Inventor
신선수
신종훈
안경문
이용기
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140099941A priority Critical patent/KR20160017319A/ko
Priority to US14/722,761 priority patent/US20160034255A1/en
Publication of KR20160017319A publication Critical patent/KR20160017319A/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/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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명에 따른 연산 장치의 몽고메리 파라미터 계산 방법은, 모듈러스의 최상위 비트의 위치를 검출하는 단계; 상기 검출된 최상위 비트에 대한 위치 정보를 이용하여 초기 값을 계산하는 단계; 및 상기 초기 값에 대한 몽고메리 덧셈 혹은 곱셈을 반복 수행함으로써 중간 값 및 몽고메리 파라미터를 계산하는 단계를 포함한다.

Description

연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법{ARITHMETIC DEVICE, MONTGOMERY PARAMETER CALCULATION METHOD AND MODULAR MULTIPLICATION METHOD THEREOF}
본 발명은 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법에 관한 것이다.
RSA, ECC와 같이 가장 많이 쓰이고 있는 공개키 암호알고리즘에서 기반으로 하고 있는 연산이 모듈러 연산이다. 모듈러 연산에서 기본이 되는 연산으로 모듈러 덧셈/뺄셈/곱셈이 있다. 실제 공개키 암호알고리즘에서 주로 사용되는 연산인 모듈러 exponentiation/scalar 곱셈은 모듈러 덧셈/뺄셈/곱셈을 반복 수행하여 구할 수 있게 된다.
본 발명의 목적은 기존의 하드웨어 기반에서 최소한의 리소스를 추가하여 효율적으로 계산하는 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 그것의 모듈러 곱셈 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 연산 장치의 몽고메리 파라미터 계산 방법은, 모듈러스의 최상위 비트의 위치를 검출하는 단계; 상기 검출된 최상위 비트에 대한 위치 정보를 이용하여 초기 값을 계산하는 단계; 및 상기 초기 값에 대한 몽고메리 덧셈 혹은 곱셈을 반복 수행함으로써 중간 값 및 몽고메리 파라미터를 계산하는 단계를 포함한다.
실시 예에 있어서, 상기 모듈러스를 입력 받는 단계를 더 포함한다.
실시 예에 있어서, 상기 최상위 비트의 위치를 검출하는 단계 이전에, 상기 모듈러스에 대하여 모듈러스 뺄셈을 수행하는 단계를 더 포함한다.
실시 예에 있어서, 상기 최상위 비트의 위치를 검출하는 단계는, 상기 모듈러스를 워드 단위로 구분하고, 상기 구분된 워드들에 대하여 순차적으로 상기 최상위 비트의 위치를 검출하는 단계를 포함한다.
실시 예에 있어서, 상기 최상위 비트의 위치를 검출하는 단계는, non-zero인 최상위 비트를 스캔하는 단계를 포함한다.
실시 예에 있어서, 상기 최상위 비트의 위치를 검출하는 단계는, 상기 non-zero인 최상위 비트가 검출되기 전까지의 zero의 개수를 카운팅하는 단계를 더 포함한다.
실시 예에 있어서, 상기 최상위 비트의 위치로부터 몽고메리 덧셈을 수행함으로써 상기 중간값이 계산된다.
실시 예에 있어서, 상기 최상위 비트의 위치를 기준으로 다음 비트의 위치로부터 몽고메리 덧셈을 수행함으로써 상기 중간 값이 계산된다.
실시 예에 있어서, 상기 중간 값은 2( word _ sz + word _ sz / div )* word _ num mod M고, 여기서 word_sz는 워드 크기이고, div는 하드웨어 상수이고, word_num는 워드 개수, M는 상기 모듈러스이다.
실시 예에 있어서, 상기 몽고메리 파라미터는 2 word _ sz * word _ num *2 mod M 이다.
실시 예에 있어서, word_sz/div가 정수가 되는 범위 내에서 대응하는 횟수만큼 몽고메리 곱셈을 반복함으로써, 상기 몽고메리 파라미터가 계산된다.
실시 예에 있어서, 상기 몽고메리 파라미터를 저장 장치에 저장하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 연산 장치는, 몽고메리 연산을 수행하는 몽고메리 연산 유닛; 및 상기 몽고메리 연산 유닛을 제어하고, 모듈러스의 최상위 비트를 검출하고, 상기 검출된 최상위 비트의 위치에 대응하는 초기 값을 계산하고, 상기 초기 값에 대한 몽고메리 덧셈 혹은 몽고메리 곱셈을 반복 수행함으로써 몽고메리 파라미터를 계산하는 몽고메리 연산 유닛 제어기를 포함한다.
실시 예에 있어서, 상기 몽고메리 연산 유닛 제어기는, 상기 모듈러스의 최상위 비트를 검출하기 위한 모듈러스 체커를 포함한다.
실시 예에 있어서, 상기 모듈러스 체커는 워드 단위로 non-zero 비트를 검출한다.
실시 예에 있어서, 상기 몽고메리 연산 유닛 제어기는, 상기 최상위 비트가 검출되기까지 zero 비트의 개수를 카운팅하는 반복 카운터를 포함한다.
실시 예에 있어서, 상기 몽고메리 연산 유닛 제어기는, 상기 초기 값으로부터 상기 몽고메리 파라미터를 계산하기 위하여 상기 몽고메리 덧셈 혹은 상기 몽고메리 곱셈을 반복하도록 상기 몽고메리 연산 유닛을 제어하는 시퀀스 제어기를 포함한다.
실시 예에 있어서, 상기 초기 값, 몽고메리 덧셈의 결과값(상기 중간 값) 혹은 상기 몽고메리 곱셈의 결과 값을 저장 장치를 더 포함한다.
실시 예에 있어서, 상기 중간 값은 상기 최상위 비트에 대응하는 위치로부터 몽고메리 덧셈을 수행함으로써 계산된다.
본 발명의 실시 예에 따른 연산 장치의 모듈러 곱셈 방법은: 모듈러스의 최상위 비트에 대한 위치 정보로부터 몽고메리 파라미터를 계산하는 단계; 상기 몽고메리 파라미터를 이용하여 오퍼런드들을 몽고메리 도메인으로 변환하는 단계; 상기 변환된 오퍼런드들에 대한 몽고메리 곱셈을 수행하는 단계; 및 상기 몽고메리 곱셈의 결과값을 상기 몽고메리 파라미터를 이용한 역연산과정을 통하여 정수 도메인으로 변환하는 단계를 포함한다.
본 발명의 실시 예에 따른 연산 장치 및 그것의 연산 방법은 몽고메리 모듈러 연산 유닛을 활용하여 최소한의 하드웨어를 추가함으로써, 몽고메리 파라미터를 계산할 수 있다.
본 발명의 연산 장치 및 그것의 연산 방법은, 하드웨어 크기를 최소화하기 위해 내부의 연산 레지스터의 크기를 워드 단위로 이용함으로써, 전체 하드웨어의 게이트 카운트(gate count) 및 전력 소모를 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 모듈러 곱셈 방법을 개략적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 연산 장치를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 연산 장치의 몽고메리 파라미터를 계산하는 방법을 예시적으로 보여주는 흐름도이다.
도 4는 도 2에 도시된 모듈러스의 MSB 위치를 검색하는 방법을 예시적으로 보여주는 도면이다.
도 5는 어느 하나의 모듈러스로부터 초기 값 및 중간 값을 계산하는 과정에 대한 실시 예를 보여주는 도면이다.
도 6은 다른 모듈러스로부터 초기 값 및 중간 값을 계산하는 과정에 대한 실시 예를 보여주는 도면이다.
도 7은 어느 하나의 모듈러스로부터 초기 값 및 중간 값을 계산하는 과정에 대한 다른 실시 예를 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 하드웨어 상수를 고려한 몽고메리 모듈러 곱셈을 통하여 몽고메리 파라미터를 계산하는 과정을 보여주는 흐름도이다.
도 9는 본 발명의 다른 실시 예에 따른 연산 장치를 예시적으로 보여주는 블록도이다.
도 10은 본 발명에 따른 암호 프로세서를 갖는 보안 시스템을 예시적으로 보여주는 블록도이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
일반적으로 몽고메리 연산(Montgomery arithmetic)은 모듈러스(modulus)가 클 때 효율적으로 모듈러 연산을 수행할 수 있다. 모듈러 덧셈/뺄셈/곱셈 중에서 비용이 가장 큰 것은 모듈러 곱셈이다. 일반적인 모듈러 곱셈은 감산의 비용이 크기 때문에 몽고메리 곱셈으로 구현된다. 여기서 몽고메리 곱셈은 정수(integer) 도메인이 아닌 몽고메리 도메인으로 변환(transform)하여 연산하는 방법이다.
도 1은 본 발명의 실시 예에 따른 모듈러 곱셈 방법을 개략적으로 보여주는 도면이다. 도 1을 참조하면, 정수 도메인에서 오퍼런드들(A, B)의 모듈러 곱셈(AB mod M)은, 몽고메리 도메인에서 변환된 오퍼런드들(AR, BR)의 몽고메리 곱셈(ABR mod M)으로 변환된다. 몽고메리 도메인 변환을 위하여 몽고메리 도메인 파라미터(R 혹은 R2)가 필요하다. 여기서 M는 모듈러스(modulus) 값이다.
일반적으로, 모듈러 덧셈/뺄셈/곱셈이 구현된 하드웨어에 최소한의 리소스가 추가되면, 도메인 전환(conversion)을 통한 모듈러 지수(exponentiation)을 계산하기 위해 필요한 값인 몽고메리 도메인 파라미터(R)의 계산이 가능하다. 본 발명의 실시 예에 따른 몽고메리 도메인 파라미터(R)의 정의는 다음과 같다.
M < R, gcd(R, M) = 1, M < R 이면서, |M|은 M의 오퍼런드(operand) 크기 일 때, 몽고메리 도메인 파라미터 R = 2x ( x ≥ |M| )이다.
몽고메리 도메인에서 수행된 결과값(ABR mod M)은, 몽고메리 파라미터를 이용하여 역연산 과정을 통하여 정수 도메인에서 모듈러 곱셈(AB mod M)으로 변환된다.
도 2는 본 발명의 실시 예에 따른 연산 장치(10)를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 연산 장치(10)는 모듈러 연산 장치(100) 및 그것의 연산 과정에 필요한 적어도 하나의 입력 값, 연산 과정에서 발생된 적어도 하나의 중간 값 혹은 연산 과정에서 발생된 적어도 하나의 결과 값을 저장하는 저장 장치(200)를 포함한다.
모듈러 연산 장치(100)는, 도 2에 도시된 바와 같이, 적어도 하나의 몽고메리 연산 유닛(MAU, 120) 및 그것을 제어하는 몽고메리 연산 유닛 제어기(MAU CTRL, 140)을 포함한다.
몽고메리 연산 유닛(120)은 몽고메리 도메인에서 오퍼런드들을 입력 받고 몽고메리 연산을 수행할 수 있다. 실시 예에 있어서, 몽고메리 연산은 모듈러 덧셈, 뺄셈, 혹은 곱셈일 수 있다.
몽고메리 연산 유닛 제어기(140)는 몽고메리 연산 유닛(120)을 제어한다. 몽고메리 연산 유닛 제어기(140)는 모듈러스 체커(141), 반복 카운터(142) 및 시퀀스 제어기(143)를 포함한다.
모듈러스 체커(141)는, 도 1에 도시된 바와 같이 몽고메리 파라미터(R2 mod M)을 계산하기 위한 초기 값(initial value, IV)를 계산하기 위해, 모듈러스(M)의 MSB(most significant bit)의 위치를 검출할 수 있다.
반복 카운터(142)는 오퍼런드 크기 및 모듈러스(M)의 MSB의 위치에 따라 모듈러 덧셈의 연산 카운팅을 수행할 수 있다.
시퀀스 제어기(143)는 몽고메리 파라미터(R2 mod M) 계산을 수행하기 위한 모듈러 연산 시퀀스를 제어한다.
저장 장치(200)는 몽고메리 연산에 필요한 입출력 값 및 중간 연산 결과값을 저장할 수 있다. 실시 예에 있어서, 저장 장치(200)는 도 2에 도시된 바와 같이 모듈러 연산 장치(100)의 외부에 구현될 수 있다. 예를 들어, 저장 장치(200)는 SRAM(static random access memory) 혹은 DRAM(dynamic random access memory)과 같은 휘발성 메모리 장치, PRAM(phase-change RAM) 혹은 MRAM(Magnetic RAM) 같은 비휘발성 메모리 장치로 구현될 수 있다. 다른 실시 예에 있어서, 저장 장치는 모듈러 연산 장치(100)의 내부에 구성된 레지스터(register)형태로 구현될 수 있다.
본 발명의 실시 예에 따른 연산 장치(10)는 모듈러 덧셈/뺄셈/곱셈을 수행하는 모든 연산기에 적용될 수 있으며, 종래의 그것과 비교하여 최소한의 하드웨어 리소스 추가만으로, 몽고메리 파라미터(R2 mod M)을 계산할 수 있다.
또한, 최소한의 하드웨어 사이즈로 구현되었음에도 불구하고, 큰 오퍼런드 크기에서 불필요한 싸이클 오버헤드가 발생하지 않는다. 따라서 본 발명의 연산 장치(10) 및 그것의 모듈러 연산 방법은 하드웨어로 구현하여 사용할 경우 전체 RSA(Rivest Shamir Adelman), ECC(Elliptic Curve Cryptosystems) 연산 수행 시간을 단축 시킬 수 있다.
본 발명의 연산 장치(10) 및 그것의 모듈러 연산 방법은, 하드웨어 크기를 최소화하기 위해 내부의 연산 레지스터의 크기를 워드(word) 단위로 이용한다. 이로써, 전체 하드웨어의 게이트 카운트(gate count) 및 전력 소모가 줄어들 수 있다.
또한, 본 발명의 연산 장치(10) 및 그것의 모듈러 연산 방법은, 워드 단위의 모듈러 덧셈/곱셈 연산이 반복 수행됨으로써, 몽고메리 파라미터(R2 mod M)을 계산한다. 모듈러 연산 중에 메모리 접근이 병렬적으로 일어나도록 구현될 수 있다. 이는 전체 메모리 접근 회수를 최대한으로 줄임으로써 연산 속도를 향상시킬 수 있다.
또한, 본 발명의 연산 장치(10) 및 그것의 모듈러 연산 방법은, 모듈러 연산 유닛(120)을 기반으로 구현되는데, 몽고메리 파라미터(R2 mod M)을 계산하기 위한 초기 값(initial value, IV)를 계산하기 위해 모듈러스(M)의 MSB(most significant bit)을 체크하고, 초기 값(IV)에서 모듈러 덧셈을 반복 수행함으로써 중간 값을 계산한다. 이러한 모듈러 덧셈은 입력 값의 부호(sign)에 따라 결과값이 효과적으로 보정될 수 있다. 이에 중간 값을 계산하기 위한 모듈러 덧셈 연산에서 크기를 비교하기 위한 뺄셈 연산을 필요치 않게 된다. 그 결과로써, 전체 연산에서 모듈러 덧셈 연산의 전체 회수가 줄어들 수 있다. 그 만큼 연산 속도가 향상될 수 있다.
도 3은 본 발명의 실시 예에 따른 연산 장치의 몽고메리 파라미터(R2 mod M)을 계산하는 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 3를 참조하면, 몽고메리 파라미터(R2 mod M)를 계산하는 방법은 다음과 같다.
우선적으로 모듈러스(M)이 입력된다. 입력된 모듈러스(M)의 MSB의 위치가 검색된다(S110). 예를 들어, MSB 위치 검색 동작은 MSB 앞에 위치한 "zero" 값의 개수를 카운팅함으로써 수행될 수 있다. 본 발명에 따른 하드웨어는 워드 단위의 대역폭(band width)로 구현됨으로써, 모듈러스(M)의 최상위 워드부터 워드 단위로 순차적으로 읽고, 그 값이 0인지 아닌지 판별될 것이다. 만일, 해당 워드가 0의 값을 가지면, 순차적으로 다음 워드를 읽고, 0 이 아닐 경우 해당 워드에서 non-zero인 MSB의 위치가 검색된다. 이로써, MSB의 앞에 위치한 "zero" 값의 개수가 계산된다. 실시 예에 있어서, MSB의 위치 검색 전에 모듈러스(M)에 대한 모듈러 뺄셈(M - M mod M)을 수행할 수도 있다.
MSB 검출 동작을 통해 non-zero인 MSB의 위치가 검색되면, 필요한 초기 값(IV)이 계산된다. 초기 값(IV)은 아래의 수학식을 만족할 수 있다.
Figure pat00001
여기서, word_sz는 워드 크기이고, word_num는 워드의 개수이고, zero_num는 모듈러스(M)의 MSB 앞에 위치한 "zero"의 개수이다. 한편, 중간 값의 지수인, 파워(power)는 다음과 같이 정의된다.
Figure pat00002
여기서 div는 하드웨어 관련 상수이고, word_sz/div는 정수이다. 중간 값(R0 mod M)은 초기 값(IV)과 "zero"의 개수를 이용하여 계산될 수 있다(S120). 중간 값(R0 mod M)은 아래의 수학식으로 계산된다.
Figure pat00003
이후, 중간 값(R0 mod M)에 대한 모듈러 덧셈 혹은 모듈러 곱셈을 반복 수행함으로써, 몽고메리 파라미터(R2 mod M)가 계산된다(S130).
도 4는 도 2에 도시된 모듈러스(M)의 MSB 위치를 검색하는 방법을 예시적으로 보여주는 도면이다. 도 1 내지 도 4를 참조하면, 모듈러스(M)의 MSB 위치를 검색하는 방법은 다음과 같다. 워드 체커(혹은, 모듈러스 체커(141))에서 모듈러스(M)의 MSB 위치를 계산하기 위해서 워드 단위로 모듈러스(M)가 검색 될 수 있다(S111). 모듈러스(M)에 대응하는 워드 값에 MSB가 위치하는지를 확인한다. 즉, 제로 값(zero value)를 갖는지 아닌지가 판별된다. 해당 워드에 MSB가 위치하면, 1-비트 스캐너(1-bit Scanner)에서 MSB의 위치를 찾기 위한 스캐닝 동작이 수행된다(S112). 제로 값 카운터는 모듈러 덧셈의 연산 회수를 계산하기 위해 필요한 MSB앞에 위치하는 제로 값의 개수를 계산하여 출력하게 된다(S113).
상술 된 MSB 검출 과정을 통해 non-zero인 MSB의 위치를 찾으면, 중간 값(R0 mod M)을 계산하기 위해 필요한 초기 값(IV)이 계산될 수 있다. 초기 값(IV) 및 모듈러 덧셈의 연산 회수를 계산하는 과정은 아래에서 자세하게 설명하도록 하겠다.
모듈러스(M)의 non-zero MSB를 검출하는 과정에서, 모듈러스(M)의 오퍼런드 크기와 MSB가 몇 번째 워드에 위치하느냐에 따라 최대 연산 싸이클이 달라진다. 하지만 최대 소모 싸이클에 해당하는 모듈러스(M)가 입력으로 사용될 가능성은 거의 없다고 볼 수 있다. 몽고메리 파라미터(R2 mod M)을 계산하는 전체 연산 싸이클에서 차지하는 비중은 아주 작다. 반면에 이를 통해 계산된 값은 중간 값(R0 mod M)을 계산하기 위해 필요한 모듈러 덧셈 연산 회수를 간단한 로직을 통해 계산할 수 있다.
상술 된 바와 같이, 모듈러스(M)의 MSB 위치를 검출하면, 해당 위치에 1의 값을 갖는 변수가 저장된다. 이렇게 저장된 값이 중간 값(R0 mod M)을 계산하기 위한 초기 값(IV)이 될 수 있다. 중간 값(R0 mod M)은 모듈러스(M)의 MSB앞에 위치하는 "0"의 개수와 초기 값(IV)을 이용해 모듈러 덧셈 연산을 반복 수행함으로써 계산될 수 있다.
한편, 모듈러스(M)의 오퍼런드 크기와 MSB 앞에 위치하는 "0"의 개수에 따라 수행되어야 하는 모듈러 덧셈 회수가 달라질 수 있다.
아래에서는 모듈러스(M)에서 중간 값(R0 mod M)을 계산하기 위한 초기 값(IV)을 계산하는 방법과 모듈러 덧셈 회수를 계산하는 방법을 설명하도록 하겠다. 설명의 편의를 위하여 모듈러스(M)의 오퍼런드의 크기(operand_size)는 128 비트, word_sz=32, word_num=4, div=16, R0 mod M = 2136 이라고 가정하겠다.
도 5는 어느 하나의 모듈러스(M)로부터 중간 값(R0 mod M)을 계산하는 과정에 대한 실시 예를 보여주는 도면이다. 도 5를 참조하면, 모듈러스(M)의 MSB의 위치에 "1"의 값을 취한 값이 초기 값(IV)으로 사용된다. 초기 값(IV)을 시작으로 9번의 모듈러 덧셈을 수행함으로써 중간 값(R0 mod M)이 계산된다.
도 6은 다른 모듈러스(M)로부터 중간 값(R0 mod M)을 계산하는 과정에 대한 실시 예를 보여주는 도면이다. 도 6을 참조하면, 모듈러스(M)의 MSB의 위치에 "1"의 값을 취한 값이 초기 값(IV)으로 사용된다. 초기 값(IV)을 시작으로 15번의 모듈러 덧셈을 수행함으로써 중간 값(R0 mod M)이 계산된다. 여기서 a는 모듈러스(M)에서 MSB의 zero head의 개수이다.
한편, 도 5 및 도 6에 도시된 바와 같이, 모듈러스(M)의 MSB의 위치에 "1"의 값을 취한 값만으로 초기 값(IV)을 설정할 필요는 없다. 유동적으로 모듈러스(M)의 MSB의 위치의 앞쪽으로 "1"의 값을 갖는 초기 값(IV)으로 설정할 수도 있다.
도 7은 어느 하나의 모듈러스(M)로부터 중간 값(R0 mod M)을 계산하는 과정에 대한 다른 실시 예를 보여주는 도면이다. 도 7을 참조하면, 모듈러스(M)의 MSB의 위치보다 앞에 "1"의 값을 갖는 초기 값(IV)으로 설정하는 것은 중간 값(R0 mod M)을 계산하기 위한 모듈러 덧셈 연산 회수를 그 만큼 줄일 수 있다.
R0 mod M 값을 계산하기 위해 필요한 모듈러 덧셈 회수는 워드 개수(word_num)와 모듈러스(M)의 MSB앞에 위치하는 zero 개수에 따라 다음과 같이 정의된다.
Figure pat00004
여기서 a는 모듈러스(M)의 MSB에서 "1"이 나오기 전까지 연속적인 "0"의 개수이다. R0 mod M을 계산하기 위해서 모듈러 덧셈이 위의 계산식에 해당하는 횟수만큼 반복적으로 수행된다.
본 발명의 실시 예에 따른 모듈러 덧셈 스킴은, -M < result < M에 해당하는 결과값(result)을 갖는다. 따라서 결과값 보정을 위한 별도의 연산과정 없이, 초기 값(IV)을 초기 값으로 해당 반복 회수만큼의 모듈러 덧셈 연산을 수행한다. 또한 R0 mod M을 계산하기 위해 필요한 초기 값(IV)은 모듈러스(M)의 MSB 위치에서부터 몇 비트 앞의 위치까지 "1"의 값을 취해 다양하게 구할 수 있다. 이는 모듈러 덧셈의 반복 회수를 줄이게 함으로써, 연산 속도를 향상시킬 수 있다.
다음은 중간 값(R0 mod M)을 계산하기 위해 필요한 모듈러 연산 동작의 회수를 종래 기술의 그것과 비교한 표이다.

종래 기술 본 발명
ADD SUB ADD
256 비트 17 6 17
1024 비트 65 22 65
2049 비트 129 44 129
단, 다음의 2가지 조건 하에서 계산한 값임을 주의한다. 모듈러스(M)의 MSB앞에 zero value가 없는 경우를 가정하여 계산한 결과이다. 따라서 zero value의 개수에 따라 그 수만큼 모듈러 연산 동작은 증가한다. 몽고메리 파라미터(R2 mod M)을 계산하기 위해 중간 값(R0 mod M)에 대한 몽고메리 곱셈하는 회수를 4회가 되도록 하드웨어 상수(div)값을 16 으로 고정시킨 경우이다. 하드웨어 상수(div)는 word_sz/div가 정수가 되는 범위 내에서 하드웨어 구현에 따라 다양하게 선택 가능하다.
표 1을 참조하면, 본 발명의 실시 예에 따른 중간 값(R0 mod M)을 계산할 경우 종래 기술에서의 뺄셈(SUB)에 해당하는 연산이 제외됨으로써, 실제 동작 싸이클이 감소될 수 있다.
마지막으로 중간 값(R0 mod M)를 이용해 몽고메리 모듈러 곱셈을 반복 수행함으로써, 몽고메리 파라미터(R2 mod M)값이 계산된다. 앞에서 설명한 바와 같이2(word_sz+(word_sz/div))*word_num mod M로 정의되는 중간 값(R0 mod M)에서 하드웨어 상수(div)값을 어떻게 정의하느냐에 따라 모듈러 곱셈의 개수가 달라질 수 있다.
몽고메리 곱셈의 연산 수행 시간은 모듈러 덧셈에 비해 훨씬 크기 때문에, 오퍼런드 크기가 커짐에 따라 몽고메리 곱셈 연산 수행 회수가 많아지면 결과적으로 전체 연산 속도가 느려질 수 있다. 따라서, 본 발명의 실시 예에 따른 몽고메리 연산은 하드웨어 상수(div)에 따라 몽고메리 곱셈의 반복 회수를 조절할 수 있다. 이는 다양한 오퍼런드 크기에서 효과적인 연산 회수를 결정함으로써, 전체적인 연산속도를 향상시킬 수 있다.
본 발명의 실시 예에 따른 몽고메리 연산 방법은 최소한의 하드웨어 리소스 추가를 통해 몽고메리 도메인 파라미터를 계산한다. 또한 본 발명의 실시 예에 따른 몽고메리 연산 방법은, 종래의 그것과 비교하여 모듈러스(M)의 MSB를 검출함으로써 초기 값(IV)과 모듈러 덧셈 개수를 계산함으로써 전체 연산 과정에서의 모듈러 덧셈과 모듈러 뺄셈의 회수를 줄일 수 있다. 그 결과로써 연산시간이 대폭적으로 줄어들 수 있다.
도 8은 본 발명의 실시 예에 따른 하드웨어 상수(div)를 고려한 몽고메리 모듈러 곱셈을 통하여 몽고메리 파라미터(R2 mod M)를 계산하는 과정을 보여주는 흐름도이다. 도 1 내지 도 8를 참조하면, 몽고메리 파라미터(R2 mod M)를 계산하는 과정은 다음과 같다. 아래에서는 설명의 편의를 위하여 div = 16 이라고 가정하겠다.
중간 값(R0 mod M)에 대한 제 1 몽고메리 곱셈이 수행된다. 제 1 몽고메리 곱셈의 결과로써 제 1 연산값(R1)이 계산된다(S210). 여기서 제 1 연산값(R1)은 다음 수학식을 만족한다.
Figure pat00005
제 1 연산값(R1)에 대한 제 2 몽고메리 곱셈이 수행된다. 제 2 몽고메리 곱셈의 결과로써 제 2 연산값(R2)이 계산된다(S220). 여기서 제 2 연산값(R2)은 다음 수학식을 만족한다.
Figure pat00006
제 2 연산값(R2)에 대한 제 3 몽고메리 곱셈이 수행된다. 제 3 몽고메리 곱셈의 결과로써 제 3 연산값(R3)이 계산된다(S230). 여기서 제 3 연산값(R3)은 다음 수학식을 만족한다.
Figure pat00007
제 3 연산값(R3)에 대한 제 4 몽고메리 곱셈이 수행된다. 제 4 몽고메리 곱셈의 결과로써 제 4 연산값(R4)이 계산된다(S240). 여기서 제 4 연산값(R4)은 다음 수학식을 만족한다.
Figure pat00008
결론적으로 제 4 연산값(R4)은 몽고메리 파라미터(R2 mod M)이 된다.
한편, 도 2에 도시된 연산 장치(10)는 저장 장치(200)가 모듈러 연산 장치(100)의 외부에 존재한다. 본 발명이 반드시 여기에 제한될 필요는 없다. 메모리 장치는 모듈러 연산 장치 내부에 존재하도록 구현될 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 연산 장치(20)를 예시적으로 보여주는 블록도이다. 도 9를 참조하면, 연산 장치(20)를 구성하는 모듈러 연산 장치(100a)는 모듈러 연산 유닛(120), 모듈러 연산 유닛 제어기(140) 및 저장 장치(160)를 포함한다. 도 2에 도시된 그것과 비교하여, 모듈러 연산 장치(100a)는 저장 장치(160)를 모듈러 연산 장치(100a) 내부에 포함한다.
도 10은 본 발명에 따른 암호 프로세서를 갖는 보안 시스템(1000)을 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 보안 시스템(1000)은 중앙처리장치(1100), 암호 프로세서(1200), 롬(1300), 램(1400), 및 메모리(1500)를 포함한다. 실시 예에 있어서, 보안 시스템(1000)은 스마트 카드일 수 있다.
중앙처리장치(1100)는 보안 시스템(1000)의 전반적인 동작을 제어한다. 암호 프로세서(1200)는 중앙처리장치(1100)의 제어에 따라 암호, 인증 및 전자 서명을 가능하게 하는 명령을 해독하고, 데이터를 처리한다. 암호 프로세서(1200)는 도 1 내지 도 8에서 설명된 몽고메리 연산 방법을 이용하여 암복화 동작을 수행하도록 구현될 수 있다. 롬(1300)과 램(1400)은 보안 시스템(1000)을 구동하는데 필요한 데이터를 저장한다. 메모리(1500)는 암호 프로세서(1200)의 구동에 필요한 데이터를 저장한다.
본 발명에 따른 보안 시스템(1000)은 종래의 그것과 비교하여 하드웨어 리소스를 줄이면서 동시에 연산 시간을 대폭적으로 줄일 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10: 연산 장치
100: 모듈러 연산 장치
120: 몽고메리 연산 유닛
140: 몽고메리 연산 유닛 제어기
141: 모듈러 체커
142: 반복 카운터
143: 시퀀스 제어기
200: 저장 장치
R: 몽고메리 도메인 파라미터
IV: 초기 값
R0 mod M: 중간 값
R2 mod M: 몽고메리 파라미터
M: 모듈러스

Claims (10)

  1. 연산 장치의 몽고메리 파라미터 계산 방법에 있어서:
    모듈러스의 최상위 비트(most significant bit)의 위치를 검출하는 단계;
    상기 검출된 최상위 비트에 대한 위치 정보를 이용하여 초기 값을 계산하는 단계; 및
    상기 초기 값에 대한 몽고메리 덧셈 혹은 곱셈을 반복 수행함으로써 중간 값 및 몽고메리 파라미터를 계산하는 단계를 포함하는 몽고메리 파라미터 계산 방법.
  2. 제 1 항에 있어서,
    상기 최상위 비트의 위치를 검출하는 단계 이전에, 상기 모듈러스에 대하여 모듈러스 뺄셈을 수행하는 단계를 더 포함하는 몽고메리 파라미터 계산 방법.
  3. 제 1 항에 있어서,
    상기 최상위 비트의 위치를 검출하는 단계는,
    상기 모듈러스를 워드 단위로 구분하고, 상기 구분된 워드들에 대하여 순차적으로 상기 최상위 비트의 위치를 검출하는 단계를 포함하는 몽고메리 파라미터 계산 방법.
  4. 제 3 항에 있어서,
    상기 최상위 비트의 위치를 검출하는 단계는, non-zero인 최상위 비트를 스캔하는 단계; 및 상기 non-zero인 최상위 비트가 검출되기 전까지의 zero의 개수를 카운팅하는 단계를 포함하는 몽고메리 파라미터 계산 방법.
  5. 제 1 항에 있어서,
    상기 최상위 비트의 위치로부터 몽고메리 덧셈을 수행함으로써 상기 중간 값이 계산되는 몽고메리 파라미터 계산 방법.
  6. 제 1 항에 있어서,
    상기 최상위 비트의 위치를 기준으로 다음 비트의 위치로부터 몽고메리 덧셈을 수행함으로써 상기 중간 값이 계산되는 몽고메리 파라미터 계산 방법.
  7. 제 1 항에 있어서,
    상기 중간 값은 2( word _ sz + word _ sz / div )* word _ num mod M고,
    여기서 word_sz는 워드 크기이고, div는 하드웨어 상수이고, word_num는 워드 개수, M는 상기 모듈러스인 몽고메리 파라미터 계산 방법.
  8. 제 7 항에 있어서,
    상기 몽고메리 파라미터는 2 word _ sz * word _ num *2 mod M 인 몽고메리 파라미터 계산 방법.
  9. 몽고메리 연산을 수행하는 몽고메리 연산 유닛; 및
    상기 몽고메리 연산 유닛을 제어하고, 모듈러스의 최상위 비트를 검출하고, 상기 검출된 최상위 비트의 위치에 대응하는 초기 값을 계산하고, 상기 초기 값에 대한 몽고메리 덧셈 혹은 몽고메리 곱셈을 반복 수행함으로써 중간 값 및 몽고메리 파라미터를 계산하는 몽고메리 연산 유닛 제어기를 포함하는 연산 장치.
  10. 연산 장치의 모듈러 곱셈 방법에 있어서:
    모듈러스의 최상위 비트에 대한 위치 정보로부터 몽고메리 파라미터를 계산하는 단계;
    상기 몽고메리 파라미터를 이용하여 오퍼런드들을 몽고메리 도메인으로 변환하는 단계;
    상기 변환된 오퍼런드들에 대한 몽고메리 곱셈을 수행하는 단계; 및
    상기 몽고메리 곱셈의 결과값을 상기 몽고메리 파라미터를 이용한 역연산과정을 통하여 정수 도메인으로 변환하는 단계를 포함하는 모듈러 곱셈 방법.
KR1020140099941A 2014-08-04 2014-08-04 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법 KR20160017319A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140099941A KR20160017319A (ko) 2014-08-04 2014-08-04 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법
US14/722,761 US20160034255A1 (en) 2014-08-04 2015-05-27 Arithmetic Devices, Montgomery Parameter Calculation Method and Modular Multiplication Method Thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140099941A KR20160017319A (ko) 2014-08-04 2014-08-04 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법

Publications (1)

Publication Number Publication Date
KR20160017319A true KR20160017319A (ko) 2016-02-16

Family

ID=55180092

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140099941A KR20160017319A (ko) 2014-08-04 2014-08-04 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법

Country Status (2)

Country Link
US (1) US20160034255A1 (ko)
KR (1) KR20160017319A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190047341A (ko) * 2017-10-27 2019-05-08 인하대학교 산학협력단 Rsa 알고리즘 용 몽고메리 알고리즘 파라미터 계산 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114021734B (zh) * 2021-10-14 2022-04-12 深圳致星科技有限公司 用于联邦学习和隐私计算的参数计算装置、系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278090B2 (en) * 2004-03-31 2007-10-02 Nxp B.V. Correction parameter determination system
US8386546B2 (en) * 2009-02-27 2013-02-26 George Mason Intellectual Properties, Inc. Montgomery multiplication architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190047341A (ko) * 2017-10-27 2019-05-08 인하대학교 산학협력단 Rsa 알고리즘 용 몽고메리 알고리즘 파라미터 계산 방법

Also Published As

Publication number Publication date
US20160034255A1 (en) 2016-02-04

Similar Documents

Publication Publication Date Title
CN101194457B (zh) 随机模数化多项式约简方法及其硬件
KR101062558B1 (ko) 암호화 기법 연산을 위한 컴퓨터 판독 가능한 저장 매체, 시스템 및 방법
CN107040362B (zh) 模乘设备和方法
KR102132261B1 (ko) 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기
US7986779B2 (en) Efficient elliptic-curve cryptography based on primality of the order of the ECC-group
Kudithi An efficient hardware implementation of the elliptic curve cryptographic processor over prime field
CN101371285B (zh) 加密处理装置、加密处理方法
US11003769B2 (en) Elliptic curve point multiplication operation method and apparatus
US20170180114A1 (en) Countermeasure method for an electronic component implementing an elliptic curve cryptography algorithm
US10833868B2 (en) Direct anonymous attestation-based apparatus and method
KR20160017319A (ko) 연산 장치, 그것의 몽고메리 파라미터 계산 방법 및 모듈러 곱셈 방법
CN106371803B (zh) 用于蒙哥马利域的计算方法和计算装置
KR101929984B1 (ko) 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
de Clercq et al. Efficient software implementation of ring-LWE encryption
Howe et al. Compact and provably secure lattice-based signatures in hardware
CN104579651A (zh) 椭圆曲线密码点乘运算的方法和装置
US8290151B2 (en) Device and method for determining an inverse of a value related to a modulus
Realpe-Muñoz et al. High-performance elliptic curve cryptoprocessors over GF (2^ m) GF (2 m) on Koblitz curves
Nedjah et al. Four hardware implementations for the m-ary modular exponentiation
Knezevic et al. Modular reduction without precomputational phase
Phatak et al. Fast modular reduction for large wordlengths via one linear and one cyclic convolution
JP6308845B2 (ja) 演算装置、演算方法、及びプログラム
SHANTHI et al. VLSI Design of a Large-Number Multiplier for Fully Homomorphic Encryption
CN114706557A (zh) 一种asic芯片及蒙哥马利模乘的实现方法和装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid