KR101423947B1 - 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법 - Google Patents

확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법 Download PDF

Info

Publication number
KR101423947B1
KR101423947B1 KR1020110087960A KR20110087960A KR101423947B1 KR 101423947 B1 KR101423947 B1 KR 101423947B1 KR 1020110087960 A KR1020110087960 A KR 1020110087960A KR 20110087960 A KR20110087960 A KR 20110087960A KR 101423947 B1 KR101423947 B1 KR 101423947B1
Authority
KR
South Korea
Prior art keywords
modular
subtraction
result
prime
nist
Prior art date
Application number
KR1020110087960A
Other languages
English (en)
Other versions
KR20130024487A (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 KR1020110087960A priority Critical patent/KR101423947B1/ko
Publication of KR20130024487A publication Critical patent/KR20130024487A/ko
Application granted granted Critical
Publication of KR101423947B1 publication Critical patent/KR101423947B1/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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/723Modular exponentiation

Landscapes

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

Abstract

본 발명은 확장된 NIST 소수를 이용한 모듈러 곱셈, 모듈러 지수승 방법 및 그 방법을 기록한 기록매체에 관한 것으로, 본 발명에 따른 모듈러 곱셈 방법은, 두 개의 정수를 입력받아 입력된 정수를 승산한 후, 승산된 값에 대해 q로 제 1 모듈러 감산을 수행하고, 제 1 모듈러 감산 결과에 대해 소수 p로 제 2 모듈러 감산을 수행하며, q와 p는 양의 홀수 h에 대하여
Figure 112011068073763-pat00090
를 만족한다.

Description

확장된 NIST 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법{Modular multiplication and modular exponentiation using extended NIST prime}
본 발명은 모듈러 연산에 관한 것으로, 특히 NIST 소수에 기초하여 RSA, 타원 곡선 암호 시스템, 페어링 기반 암호 시스템 등의 스마트 그리드(smart grid) 보안 분야에서 활용될 수 있는 모듈러 곱셈, 모듈러 지수승 방법 및 이를 기록한 기록매체에 관한 것이다.
모듈러 연산의 효율적인 구현은 RSA, 타원 곡선 암호 시스템, 페어링 기반 암호시스템 등의 고속화를 위해 매우 중요하므로 많은 연구가 진행되어왔다. 그 중 모듈러 지수승 연산에 가장 빠른 방법은 이하에서 제시되는 비특허문헌1에 따른 몽고메리 지수승 알고리즘(Montgomery Exponentiation Algorithm)이며 몽고메리 지수승 알고리즘은 특수한 표현 방법을 이용하여 나눗셈 연산을 비트 시프트 연산으로 대체한다. 이 때, 시프트 연산은 나눗셈 연산에 비해 훨씬 가벼우므로 몽고메리 지수승 알고리즘은 일반적인 지수승 알고리즘에 비하여 빠르게 지수승 연산을 수행할 수 있다.
또한, 모듈러스 p가 특수한 형태일 경우에도 모듈러 연산의 효율성을 높일 수 있다. 비특허문헌2와 같이
Figure 112011068073763-pat00001
의 형태를 가지는 메르센 수(Mersenne numbers)가 잘 알려진 예이다. 그러나 암호학적으로 유용한 메르센 수는 많지 않다. 이에 J. Solinas는 보다 일반적인 메르센 수를 제안하였다. Solinas 수는
Figure 112011068073763-pat00002
의 형태로 나타나며 t는 2의 지수승 형태이다. 이러한 표현법을 이용하면 덧셈 연산만으로 모듈러 감산 연산을 수행할 수 있다.
NIST 소수는 Solinas 수의 특수한 형태로서, t의 지수가 워드 사이즈(Wordsize)의 배수인 소수들이다. 표준 문서 FIPS 186-2에서는 NIST 소수(NIST Primes)를 이용하여 소수체 기반의 타원 곡선 암호 알고리즘을 구현하도록 권장한다. NIST 소수는 모듈러 감산 알고리즘에 특화된 형태이기 때문에 일반 소수에 비하여 빠른 모듈러 연산을 수행할 수 있다. 그러나 그 수가 많지 않아 타원 곡선 및 페어링 암호 알고리즘에 적용하기에 충분한 소수체를 제공하고 있지 않다.
P. L. Montgomery, "Modular multiplication without trial division", Math. Comp, 44, 1985. R. Crandall, "Method and apparatus for public key exchange in a cryptographic system", U. S. Patent number 5159632, 1985.
본 발명이 해결하고자 하는 기술적 과제는 종래의 NIST 소수의 수가 많지 않다는 문제로 인해 타원 곡선 및 페어링 암호 알고리즘에 적용하기에 충분한 소수체를 제공하지 못하는 제약을 해소하고, 몽고메리 곱셈 및 지수승 알고리즘 이상의 성능과 효율을 갖는 모듈러 연산에 제시되고 있지 못하다는 암호화 분야의 한계를 극복하고자 한다.
상기 기술적 과제를 해결하기 위하여, 본 발명의 일 실시예에 따른 적어도 하나의 프로세서(processor)를 이용한 모듈러 곱셈 방법은, 두 개의 정수를 입력받는 단계; 상기 입력된 정수를 승산하는 단계; 상기 승산된 값에 대해 q로 제 1 모듈러(modular) 감산을 수행하는 단계; 및 상기 제 1 모듈러 감산 결과에 대해 소수 p로 제 2 모듈러 감산을 수행하는 단계를 포함하고, 상기 q와 p는 양의 홀수 h에 대하여
Figure 112011068073763-pat00003
를 만족한다.
상기된 모듈러 곱셈 방법에서 상기 소수 p는 소수 인수를 갖는 NIST 소수 형태의 양수이다.
또한, 상기된 모듈러 곱셈 방법에서 상기 제 2 모듈러 감산은, 상기 제 1 모듈러 감산 결과와 상기 소수 p를 입력받고, 상기 제 1 모듈러 감산 결과가 상기 소수 p보다 큰 만큼 상기 소수 p를 왼쪽 시프트(shift)하고, 상기 시프트 결과를 1 만큼 오른쪽 시프트하고, 상기 제 1 모듈러 감산 결과에서 상기 시프트 결과를 감산하고, 만약 상기 감산 결과가 상기 소수 p보다 크다면 상기 과정을 반복하며, 이상의 연산 결과 산출된 감산 결과를 반환하는 것이 바람직하다.
상기 기술적 과제를 해결하기 위하여, 본 발명의 다른 실시예에 따른 적어도 하나의 프로세서(processor)를 이용한 모듈러 지수승 방법은,
Figure 112011068073763-pat00004
및 양수
Figure 112011068073763-pat00005
를 입력받는 단계; A에 대해 2의 지수승하고, q로 모듈러 감산을 수행하는 단계; 만약
Figure 112011068073763-pat00006
이면, A와 g를 승산하고, q로 모듈러 감산을 수행하는 단계; 상기 모듈러 감산을 t회 만큼 반복 수행하는 단계; 및 상기 수행 결과에 대해 p로 모듈러 감산을 수행하여 그 결과를 반환하는 단계를 포함하고, 상기 q와 p는 양의 홀수 h에 대하여
Figure 112011068073763-pat00007
를 만족하고, 상기 p는 소수 인수를 갖는 NIST 소수 형태의 양수이다.
또한, 상기된 모듈러 지수승 방법에서, 상기 q는 상기 p와 동일한 수의 워드 블록을 사용하며, 상기 h는 상기 워드 사이즈의 절반 이하를 사용하는 것이 바람직하다.
한편, 이하에서는 상기 기재된 모듈러 곱셈 방법과 모듈러 지수승 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
본 발명의 다양한 실시예들은 확장된 NIST 소수를 이용한 모듈러 곱셈, 모듈러 지수승을 제안함으로써, 타원 곡선 및 페어링 암호 알고리즘에서 활용할 수 있는 충분한 수의 소수체를 제공할 수 있으며, 몽고메리 곱셈 및 지수승 알고리즘보다 효율적인 모듈러 연산을 수행할 수 있으므로, 소수체 기반의 타원 곡선 암호 시스템 의 페어링 기반 암호 시스템의 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예들이 채택하고 있는 모듈러스 q를 이용한 모듈러 감산을 설명하기 위한 예시도이다.
도 2는 본 발명의 실시예들이 채택하고 있는 모듈러 q 감산 알고리즘을 도시한 도면이다.
도 3은 본 발명의 실시예들이 채택하고 있는 모듈러 p 감산 알고리즘을 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 적어도 하나의 프로세서를 이용한 모듈러 곱셈 방법을 도시한 흐름도이다.
도 5는 도 4에 따른 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수를 이용한 모듈러 곱셈 알고리즘을 도시한 도면이다.
도 6은 본 발명의 다른 실시예에 따른 적어도 하나의 프로세서를 이용한 모듈어 지수승 알고리즘을 도시한 도면이다.
도 7은 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 알고리즘의 실행 시간을 종래의 연산 방법과 비교하여 도시한 도면이다.
도 8은 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수를 이용한 모듈러 연산의 평균 실행 시간을 종래의 연산 방법과 비교하여 도시한 도면이다.
도 9는 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수와 종래의 NIST 소수의 개수를 비교하여 도시한 도면이다.
본 발명의 실시예들을 설명하기에 앞서, 우선 본 발명의 실시예들이 구현되는 암호화 기술의 특징에 대해 소개하고, 이러한 실시예들이 구현되는 환경의 특징으로부터 안출될 수 있는 본 발명의 기본적인 아이디어를 제시하고자 한다.
대용량 암호 키를 사용하는 정보 보호 기술 분야에서는 모듈러 곱셈을 고속화하기 위한 연구들이 지속적으로 이루어져 왔다. 특히, 암호화된 정보에 대한 해독 기술이 발달함에 따라 이에 대응하여 많은 암호화 기술들이 암호 알고리즘의 빈도를 강화하기 위해 모듈러 곱셈을 반복적으로 사용하는 연산 구조를 채택하고 있다. 따라서, 암호 알고리즘의 처리 속도를 향상시키기 위해서는 모듈러 곱셈 연산을 고속화시키는 것이 무엇보다 중요하다.
이러한 모듈러 곱셈 연산과 관련하여, FIPS 186-2 표준은 다음의 수학식 1과 같은 NIST 소수를 이용하여 타원 곡선 암호 시스템을 구현하도록 권장한다.
Figure 112011068073763-pat00008
Figure 112011068073763-pat00009
을 제외한 NIST 소수는 모두 지수가 32의 배수인 항들의 합으로 이루어져 있다. 이러한 형태를 이용하여 32비트 워드사이즈를 사용하는 컴퓨터에서 효율적인 모듈러 감산 연산이 수행될 수 있다.
앞서 언급한 바와 같이 이러한 NIST 소수는 Solinas 수의 특수한 형태로서, t의 지수가 워드 사이즈(Wordsize)의 배수인 소수들이다. 특히, NIST 소수는 모듈러 감산 알고리즘에 특화된 형태이기 때문에 일반 소수에 비하여 빠른 모듈러 연산이 가능하다는 장점을 갖는다. 그러나, NIST 소수는 그 수가 많지 않아 타원 곡선 및 페어링 암호 알고리즘에 적용하기에 충분한 소수체를 제공하지 못한다는 점이 약점으로 지적되었다.
따라서, 이하에서 제시될 본 발명의 실시예들은 이러한 NIST 소수의 형태에 착안한 확장된 NIST 소수를 제안하고자 한다. 이러한 확장된 NIST 소수를 이용하여 모듈러 연산을 수행함으로써 종래의 몽고메리 곱셈이나 몽고메리 지수승 연산에 비해 향상된 성능의 암호화 연산이 가능하다.
이제, 확장된 NIST 소수를 제안하고, 이의 연산 효율성에 대하여 논한다. 먼저 확장된 NIST 소수를 정의하기 위해 소수 p를 이루는 2의 지수승 항의 개수를
Figure 112011068073763-pat00010
라 하다. 즉,
Figure 112011068073763-pat00011
일 때,
Figure 112011068073763-pat00012
는 3이다. 확장된 NIST 소수는 다음과 같이 정의된다.
[정의] Solinas 수
Figure 112011068073763-pat00013
를 만족하는 양의 홀수 h가 존재할 때, 소수 p를 확장된 NIST 소수(Extended NIST Prime : ENP)라 한다.
즉, 이상의 정의와 같이 소수 인수를 갖는 NIST 소수 형태의 양수를 찾아 이 소수 인수를 확장된 NIST 소수(ENP)로 사용한다. 이하에서는, 이상과 같이 정의된 확장된 NIST 소수를 이용한 모듈러 연산 방법에 대해 설명한다.
(1) 모듈러 감산
본 발명의 실시예들은 정수 c에 대해 통상적인 NIST 소수와 같은 방법으로
Figure 112011068073763-pat00014
을 효율적으로 연산한 후, 그 결과 값을
Figure 112011068073763-pat00015
에 대하여 연산한다.
설명의 편의를 위해, 285 비트 확장된 NIST 소수(ENP)
Figure 112011068073763-pat00016
Figure 112011068073763-pat00017
Figure 112011068073763-pat00018
인 예를 사용하여 모듈러 감산 연산을 수행한다.
Figure 112011068073763-pat00019
인 정수인 c를 선택하면 다음의 수학식 2와 같이 나타낼 수 있다.
Figure 112011068073763-pat00020
이상의 수학식 2의 표현 방법을 이용하면,
Figure 112011068073763-pat00021
연산은 수학식 3와 같이 10개의 288 비트 정수의 덧셈으로 연산 가능하다.
Figure 112011068073763-pat00022
도 1은 본 발명의 실시예들이 채택하고 있는 모듈러스 q를 이용한 모듈러 감산을 설명하기 위한 예시도로서, 이상의 모듈러스 q 감산의 10 개의 288 비트 정수가 어떻게 도출되었는지를 도시하고 있다.
도 2는 본 발명의 실시예들이 채택하고 있는 모듈러 q 감산 알고리즘을 도시한 도면으로서, 도 2에 도시된 알고리즘 1은 모듈러스 ENP
Figure 112011068073763-pat00023
에 대한
Figure 112011068073763-pat00024
연산 알고리즘이다.
도 2를 참조하면, 모듈러 q 감산 알고리즘은 그 입력값으로서
Figure 112011068073763-pat00025
Figure 112011068073763-pat00026
이고, 기저
Figure 112011068073763-pat00027
Figure 112011068073763-pat00028
를 입력받는다.
입력 값에 기초하여 우선, 288비트의 정수를 다음과 같이 정의한다.
Figure 112011068073763-pat00029
Figure 112011068073763-pat00030
Figure 112011068073763-pat00031
Figure 112011068073763-pat00032
그런 다음, 정의된 정수에 대한
Figure 112011068073763-pat00033
를 수행하여 결과로서 반환한다. 이상과 같은 모듈러 q 감산을 통해
Figure 112011068073763-pat00034
의 결과값을 얻을 수 있다.
이제,
Figure 112011068073763-pat00035
의 결과값으로부터 확장된 NIST 소수 p에 의한 모듈러 감산을 수행한다.
도 3은 본 발명의 실시예들이 채택하고 있는 모듈러 p 감산 알고리즘을 도시한 도면으로서,
Figure 112011068073763-pat00036
의 결과를
Figure 112011068073763-pat00037
에 대하여 연산하는 알고리즘 2를 예시하고 있다. 특히, 도 3은
Figure 112011068073763-pat00038
의 결과값과 모듈러스 ENP
Figure 112011068073763-pat00039
를 입력받아
Figure 112011068073763-pat00040
를 결과값으로 산출한다.
알고리즘 2는 입력값에 대해 앞서 알고리즘 1에 의한 모듈러 감산 결과(
Figure 112011068073763-pat00041
의 연산 결과를 의미한다.)가 확장된 NIST 소수 p(
Figure 112011068073763-pat00042
를 의미한다.)보다 큰지 여부를 검사한 후, 해당 조건을 만족하는 동안 왼쪽 시프트(shift)를 수행한다. 즉, 알고리즘 1에 의한 모듈러 감산 결과가 확장된 소수 p보다 큰 만큼 소수 p를 왼쪽 시프트한다. 이어서, 이상의 시프트 결과를 1 만큼 오른쪽 시프트한다.
다음으로, 알고리즘 2는 알고리즘 1에 의한 모듈러 감산 결과에서 이상의 시프트된 결과를 감산하여 감산 결과를 저장한다. 이 때, 감산 결과가 확장된 NIST 소수 p보다 크다면 이상의 알고리즘 2의 전체 과정을 반복하게 된다.
마지막으로, 이상의 연산 결과 산출된 감산 결과를 결과값으로 반환한다.
(2) 모듈러 곱셈
본 발명의 실시예들은 확장된 NIST 소수를 이용하여 모듈러 곱셈 연산을 수행함에 있어, 이상의 알고리즘 1 및 알고리즘 2에 의한 모듈러 감산을 순차적으로 진행한다.
도 4는 본 발명의 일 실시예에 따른 적어도 하나의 프로세서를 이용한 모듈러 곱셈 방법을 도시한 흐름도로서, 이상의 연산 과정을 간략화하여 도식화하였다. 본 실시예에 따른 모듈러 곱셈 방법에서, q와 p는 양의 홀수 h에 대하여
Figure 112011068073763-pat00043
를 만족함은 기본 전제로 한다. 즉, 확장된 NIST 소수에 대한 이상의 모듈러 곱셈 연산은 이상의 전제가 있기 때문에 가능한 것이며, 단지 2 회의 모듈러 감산을 순차적으로 수행함으로써 그 결과값을 얻을 수 있다.
410 단계에서, 본 발명의 실시예에 따른 모듈러 곱셈기는 두 개의 정수를 입력받는다.
420 단계에서, 모듈러 곱셈기는 410 단계를 통해 입력된 정수를 승산한다.
430 단계에서, 모듈러 곱셈기는 420 단계를 통해 승산된 값에 대해 q로 제 1 모듈러(modular) 감산을 수행한다. 이러한 제 1 모듈러 감산은 앞서 도 2를 통해 설명한 바 있는 알고리즘 1에 대응한다.
440 단계에서, 모듈러 곱셈기는 430 단계를 통해 산출된 제 1 모듈러 감산 결과에 대해 소수 p로 제 2 모듈러 감산을 수행한다. 이러한 제 2 모듈러 감산은 앞서 도 3을 통해 설명한 바 있는 알고리즘 2에 대응한다.
본 실시예에서 모듈러 곱셈기는 이상에서 기술될 일련의 연산을 수행하기 위한 적어도 하나의 프로세서를 구비한다. 이러한 프로세서는 입력값에 대해 승산과 모듈러 감산을 연속적으로 수행함으로써 최종적으로 모듈러 곱셈의 결과값을 반환한다. 구현의 관점에서 이러한 모듈러 곱셈기는 상기된 프로세서가 일련의 연산을 수행하는 과정에서 연산 그 자체 또는 임시 저장을 위한 공간으로서 사용되는 저장 공간(memory) 내지 레지스터(register), 그리고 승산 및 제산을 간편히 수행할 수 있는 시프터(shifter)를 더 포함할 수 있다. 물론, 이들 연산들을 상기된 프로세서와 메모리를 통해 수행하기 위해 부가적인 소프트웨어 코드(software code)가 활용될 수 있음은 당연하다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 이상의 실시예가 구현될 수 있는 하드웨어 구성을 자유롭게 구성할 수 있으므로, 여기서는 새로운 모듈러 곱셈의 방법론과 연산의 순차적인 구성에 집중하여 소개하도록 한다.
도 5는 도 4에 따른 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수를 이용한 모듈러 곱셈 알고리즘을 도시한 도면으로, 모듈러스 ENP에 대한 정수 A와 B의 곱은 알고리즘 3과 같이 세 단계에 걸쳐 수행된다.
알고리즘 3은 우선 입력값으로 두 개의 정수
Figure 112011068073763-pat00044
Figure 112011068073763-pat00045
(이 때,
Figure 112011068073763-pat00046
이다.)를 입력받는다.
1 단계에서, 모듈러 곱셈기는 입력된 두 개의 정수에 대한 곱을 연산한다.
2 단계에서, 모듈러 곱셈기는 곱 연산의 결과로부터 제 1 모듈러 감산을 수행한다. 즉,
Figure 112011068073763-pat00047
연산을 수행한다. 이러한 과정은 앞서 소개한 알고리즘 1에 따른다.
3 단계에서, 모듈러 곱셈기는 제 1 모듈러 감산의 결과에 대해 제 2 모듈러 감산을 수행한다. 즉,
Figure 112011068073763-pat00048
연산을 수행한다. 이러한 과정은 앞서 소개한 알고리즘 2에 따른다.
기존의 NIST 소수를 이용한 알고리즘과 비교할 때, 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수를 이용함에 따라 새롭게 추가된 연산은 알고리즘 3의 세 번째 단계에 해당한다. 이상과 같은 알고리즘 3에 따라 본 발명의 실시예들은 보다 많은 수의 확장된 NIST 소수를 활용할 수 있으면서도 여전히 간단한 모듈러 곱셈 방법에 따라 연산을 수행할 수 있다.
이제, 소프트웨어로 구현한 모듈러 곱셈의 연산의 효율성을 분석하기 위해 마이크로프로세서의 워드 곱셈 연산 시간
Figure 112011068073763-pat00049
과 나눗셈 연산 시간
Figure 112011068073763-pat00050
를 정의한다. 큰 수의 곱셈, 제곱과 나눗셈 연산의 수행 시간은 다음의 수학식 4와 같다고 알려져 있다.
Figure 112011068073763-pat00051
수학식 4에서
Figure 112011068073763-pat00052
은 각각 큰 수의 곱셈과 제곱의 수행 시간이며, 피승수는 n 워드이다.
Figure 112011068073763-pat00053
는 큰 수의 나눗셈 수행 시간이며, 피제수는
Figure 112011068073763-pat00054
워드이며 제수는
Figure 112011068073763-pat00055
워드이다.
(3) 모듈러 지수승
확장된 NIST 소수를 이용한 지수승 연산에서는
Figure 112011068073763-pat00056
연산이 전체 연산의 작은 부분을 차지하므로 매우 효율적으로 연산을 수행할 수 있다. 도 6을 참조하여 확장된 NIST 소수를 이용한 지수승 연산에 대해 설명하도록 한다.
도 6은 본 발명의 다른 실시예에 따른 적어도 하나의 프로세서를 이용한 모듈어 지수승 알고리즘을 도시한 도면으로서, 본 실시예에서는 left-to-right binary 지수승 알고리즘에 기반한 알고리즘 4을 이용하였다. 이미 모듈러 곱셈 과정을 통해 설명한 바와 같이, 알고리즘 4를 통해 q와 p는 양의 홀수 h에 대하여
Figure 112011068073763-pat00057
를 만족하고, p는 소수 인수를 갖는 NIST 소수 형태의 양수인 것은 당연하다.
알고리즘 4는 입력값으로
Figure 112011068073763-pat00058
및 양수
Figure 112011068073763-pat00059
를 입력받는다.
우선, 알고리즘 4는 A에 초기값을 할당하고, A에 대해 2의 지수승(즉,
Figure 112011068073763-pat00060
를 연산한다.)한 후, q로 모듈러 감산(
Figure 112011068073763-pat00061
)을 수행한다. 그런 다음, 만약
Figure 112011068073763-pat00062
이면, A와 g를 승산하고, q로 모듈러 감산(
Figure 112011068073763-pat00063
)을 수행한다.
이상의 모듈러 감산 과정을 일정 횟수(t회) 만큼 반복 수행한 후, 수행 결과에 대해 p로 모듈러 감산(
Figure 112011068073763-pat00064
)을 수행하여 그 결과를 반환한다.
본 실시예를 통해 모듈러 지수승을 수행하는 장치는 이상에서 기술될 일련의 연산을 수행하기 위한 적어도 하나의 프로세서를 구비한다. 이러한 프로세서는 입력값에 대해 승산과 q 모듈러 감산을 반복적으로 수행하고, 이에 연속하여 p 모듈러 감산을 수행함으로써 최종적으로 모듈러 지수승의 결과값을 반환한다. 구현의 관점에서 본 장치는 상기된 프로세서가 일련의 연산을 수행하는 과정에서 연산 그 자체 또는 임시 저장을 위한 공간으로서 사용되는 저장 공간(memory) 내지 레지스터(register), 그리고 승산 및 제산을 간편히 수행할 수 있는 시프터(shifter)를 더 포함할 수 있다. 물론, 이들 연산들을 상기된 프로세서와 메모리를 통해 수행하기 위해 부가적인 소프트웨어 코드(software code)가 활용될 수 있음은 당연하다.
한편, 이상의 알고리즘 4에서, q가 p보다 많은 워드 블록을 사용한다면 과정 4와 7역시 p보다 많은 워드 블록을 차지하게 된다. 이에 따라 단계 3과 6에서 p보다 큰 워드 블록을 갖는 수들의 곱셈 연산이 수행되어야 한다. 이 경우, p와 같은 워드 블록을 갖는 수들의 곱셈 연산을 하는 경우에 비하여 복잡도가 증가하게 된다. 또한 h가 너무 크면 과정 10의 모듈러 감산에 소모되는 비용이 증가한다. 따라서, 이하의 [Remark 1]에서는 효율적인 모듈러 연산을 위해 q와 h를 제한할 수 있음을 제안한다.
[Remark 1] 효율적인 모듈러 연산을 위해 q는 p와 동일한 수의 워드 블록을 사용하며 h는 워드 사이즈의 절반 이하를 사용하도록 제한한다.
이러한 제한에 의해 본 발명의 실시예들에 따른 모듈러 연산의 효율이 향상될 수 있다.
도 7은 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 알고리즘의 실행 시간을 종래의 연산 방법과 비교하여 실시한 실험 결과를 도시한 도면이다. 도 7에서는 모듈러스로 통상적인 NIST 소수를 이용한 모듈러 연산과 확장된 NIST 소수를 이용한 모듈러 연산의 실험 결과를 비교한다.
본 실험에서 q와 h는 상기된 [Remark 1]을 따르고,
Figure 112011068073763-pat00065
를 만족하는 32∼2048 비트 소수 중에서 확장된 NIST 소수를 찾는 실험을 수행하였다. 모듈러 연산 실험 결과는 발견된 확장된 NIST 소수 중 가장 나쁜 경우를 기준으로 수행하였다. 이 때의
Figure 112011068073763-pat00066
Figure 112011068073763-pat00067
Figure 112011068073763-pat00068
로 이루어지며, 1649 비트의 임의의(random) 소수를 생성하여 일반적인 모듈러 연산 알고리즘과 몽고메리 알고리즘을 수행하였다.
도 7을 통해 확인할 수 있듯이, 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수(ENP)를 이용한 모듈러 연산에 대하여, 모듈러 곱셈 알고리즘의 경우, 일반적인 모듈러 곱셈 및 몽고메리 모듈러 곱셈에 비해 향상된 연산 효율을 나타낸다. 또한, 모듈러 지수승 알고리즘의 경우에도 일반적인 모듈러 지수승 연산뿐만 아니라 몽고메리 모듈러 지수승 연산과 비교하여도 그 효율의 우수함을 확인할 수 있다.
도 8은 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수(ENP)를 이용한 모듈러 연산의 평균 실행 시간을 종래의 연산 방법과 비교하여 도시한 도면으로서, 도 7의 조건하에서 실제로 실험을 통해 조사된 연산 결과를 제시하고 있다. 도 8의 실험을 통해, 모듈러 연산은 각각의 경우에 100만 번 실행하였으며, 각 알고리즘의 평균 실행 시간을 측정하였다. 또한, 모듈러 연산을 적용함에 있어 OpenSSL 암호 라이브러리를 사용하였으며, Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz processor 에 구현하여 실행 시간을 측정하였다.
도 8에서 확인할 수 있듯이, 확장된 NIST 소수를 사용한 모듈러 곱셈 및 모듈러 지수승 연산의 경우 양자 모두 일반적인 연산 방법 및 몽고메리 알고리즘의 경우에 비해 상대적으로 더 짧은 수행 시간을 나타내고 있다.
이상에서 설명한 바와 같이, 확장된 NIST 소수는 통상적인 NIST 소수가 갖는 장점(빠른 모듈러 감산이 가능함을 의미한다.)을 그대로 가질 뿐만 아니라, 통상적인 NIST 소수에서 제공하지 못하는 다수의 비트 크기의 소수를 제공할 수 있다. 이하에서는 도 9를 참조하여 확장된 NIST 소수의 개수에 대해 설명한다.
도 9는 본 발명의 실시예들이 채택하고 있는 확장된 NIST 소수와 종래의 NIST 소수의 개수를 비교하여 도시한 도면으로서,
Figure 112011068073763-pat00069
를 만족하는 32∼2048 비트의 확장된 NIST 소수의 개수를 측정한 결과이다. 도 9를 참조할 때, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는
Figure 112011068073763-pat00070
에 따라 비교할 때 확장된 NIST 소수의 개수가 종래의 NIST 소수에 비해 월등히 많은 것을 확인할 수 있으며, 다양한 크기의 소수체를 위해 확장된 NIST 소수를 적용할 수 있음을 알 수 있다.
상기된 본 발명의 다양한 실시예들에 따르면, 통상적인 NIST 소수의 형태를 변형하여 암호학적으로 유용한 확장된 NIST 소수를 정의하고, 확장된 NIST 소수를 이용한 모듈러 곱셈, 모듈러 지수승을 제안함으로써, 타원 곡선 및 페어링 암호 알고리즘에서 활용할 수 있는 충분한 수의 소수체를 제공할 수 있으며, 몽고메리 곱셈 및 지수승 알고리즘보다 효율적인 모듈러 연산을 수행할 수 있으므로, 소수체 기반의 타원 곡선 암호 시스템 의 페어링 기반 암호 시스템의 성능을 향상시킬 수 있다.
한편, 본 발명의 실시예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서 본 발명에 대하여 그 다양한 실시예들을 중심으로 살펴보았다. 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (9)

  1. 적어도 하나의 프로세서(processor) 및 시프터(shifter)를 구비하는 모듈러 곱셈기의 모듈러 곱셈 방법에 있어서,
    상기 모듈러 곱셈기가 두 개의 정수를 입력받는 단계;
    상기 모듈러 곱셈기가 상기 입력된 두 개의 정수를 승산하는 단계;
    상기 모듈러 곱셈기가 상기 승산된 값에 대해 q로 제 1 모듈러(modular) 감산을 수행하는 단계; 및
    상기 모듈러 곱셈기가 상기 제 1 모듈러 감산 결과에 대해 소수 p로 제 2 모듈러 감산을 수행하는 단계를 포함하고,
    상기 q와 p는 양의 홀수 h에 대하여
    Figure 112013055020459-pat00071
    를 만족하고,
    상기 소수 p는 소수 인수를 갖는 NIST 소수 형태의 양수인 것을 특징으로 하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 두 개의 정수는 각각
    Figure 112011068073763-pat00072
    Figure 112011068073763-pat00073
    (
    Figure 112011068073763-pat00074
    )이고,
    상기 제 1 모듈러 감산은 이며,
    상기 제 2 모듈러 감산은
    Figure 112011068073763-pat00076
    인 것을 특징으로 하는 방법.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 제 1 모듈러 감산은,
    Figure 112013055020459-pat00077
    (
    Figure 112013055020459-pat00078
    ) 및 기저
    Figure 112013055020459-pat00079
    Figure 112013055020459-pat00080
    를 입력받고,
    288비트의 정수
    Figure 112013055020459-pat00081
    Figure 112013055020459-pat00082
    Figure 112013055020459-pat00083
    Figure 112013055020459-pat00084
    를 정의하며,
    상기 정의된 정수에 대한
    Figure 112013055020459-pat00085
    를 수행하여 반환하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 제 2 모듈러 감산은,
    (a) 상기 제 1 모듈러 감산 결과와 상기 소수 p를 입력받고,
    (b) 상기 제 1 모듈러 감산 결과가 상기 소수 p보다 큰 만큼 상기 소수 p를 왼쪽 시프트(shift)하고,
    (c) 상기 시프트 결과를 1 만큼 오른쪽 시프트하고,
    (d) 상기 제 1 모듈러 감산 결과에서 상기 시프트 결과를 감산하고,
    만약 상기 감산 결과가 상기 소수 p보다 크다면 상기 (a), (b), (c) 및 (d)의 과정을 반복하며,
    이상의 연산 결과 산출된 감산 결과를 반환하는 것을 특징으로 하는 방법.
  7. 적어도 하나의 프로세서(processor) 및 시프터(shifter)를 구비하는 모듈러 연산기의 모듈러 지수승 방법에 있어서,
    상기 모듈러 연산기가
    Figure 112013055020459-pat00086
    및 양수
    Figure 112013055020459-pat00087
    를 입력받는 단계;
    상기 모듈러 연산기가 초기값이 할당된 변수 A에 대해 2의 지수승하고, q로 모듈러 감산을 수행하는 단계;
    만약
    Figure 112013055020459-pat00088
    이면, 상기 모듈러 연산기가 A와 g를 승산하고, q로 모듈러 감산을 수행하는 단계;
    상기 모듈러 연산기가 상기 모듈러 감산을 t회(t는 양의 정수) 만큼 반복 수행하는 단계; 및
    상기 모듈러 연산기가 상기 수행 결과에 대해 p로 모듈러 감산을 수행하여 그 결과를 반환하는 단계를 포함하고,
    상기 q와 p는 양의 홀수 h에 대하여
    Figure 112013055020459-pat00089
    를 만족하고,
    상기 p는 소수 인수를 갖는 NIST 소수 형태의 양수인 것을 특징으로 하는 방법.
  8. 제 7 항에 있어서,
    상기 q는 상기 p와 동일한 수의 워드 블록을 사용하며,
    상기 h는 상기 워드 사이즈의 절반 이하를 사용하는 것을 특징으로 하는 방법.
  9. 제 1 항, 제 3 항, 제 5 항 내지 제 8 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020110087960A 2011-08-31 2011-08-31 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법 KR101423947B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110087960A KR101423947B1 (ko) 2011-08-31 2011-08-31 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110087960A KR101423947B1 (ko) 2011-08-31 2011-08-31 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법

Publications (2)

Publication Number Publication Date
KR20130024487A KR20130024487A (ko) 2013-03-08
KR101423947B1 true KR101423947B1 (ko) 2014-08-01

Family

ID=48176552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110087960A KR101423947B1 (ko) 2011-08-31 2011-08-31 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법

Country Status (1)

Country Link
KR (1) KR101423947B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102425475B1 (ko) * 2020-11-18 2022-07-27 고려대학교 산학협력단 모듈러 곱셈 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090180609A1 (en) 2008-01-15 2009-07-16 Atmel Corporation Modular Reduction Using a Special Form of the Modulus
KR20100067590A (ko) * 2008-12-11 2010-06-21 한국전자통신연구원 타원곡선 암호 연산 방법
KR20110027176A (ko) * 2009-09-10 2011-03-16 고려대학교 산학협력단 유한체의 원소간 비트-병렬 곱셈방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090180609A1 (en) 2008-01-15 2009-07-16 Atmel Corporation Modular Reduction Using a Special Form of the Modulus
KR20100067590A (ko) * 2008-12-11 2010-06-21 한국전자통신연구원 타원곡선 암호 연산 방법
KR20110027176A (ko) * 2009-09-10 2011-03-16 고려대학교 산학협력단 유한체의 원소간 비트-병렬 곱셈방법 및 장치

Also Published As

Publication number Publication date
KR20130024487A (ko) 2013-03-08

Similar Documents

Publication Publication Date Title
CN107040362B (zh) 模乘设备和方法
CA2614120C (en) Elliptic curve point multiplication
Bigou et al. Single base modular multiplication for efficient hardware RNS implementations of ECC
EP1816624A1 (en) Encryption computing device
US8817973B2 (en) Encrypting method having countermeasure function against power analyzing attacks
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
KR20140046568A (ko) 단순 전력 파형 분석 및 오류 주입 분석을 방지하는 타원곡선 암호화 방법 및 그 시스템
Borges et al. Parallel algorithms for modular multi-exponentiation
JP5977996B2 (ja) サイドチャンネル攻撃に対する抵抗力のあるモジュラー累乗法及び装置
Karakoyunlu et al. Efficient and side-channel-aware implementations of elliptic curve cryptosystems over prime fields
Niasar et al. Optimized architectures for elliptic curve cryptography over Curve448
KR101019242B1 (ko) 확장된 몽고메리 레더를 이용한 스칼라 곱셈 방법
Zhang et al. An efficient CSA architecture for Montgomery modular multiplication
Oliveira et al. Fast point multiplication algorithms for binary elliptic curves with and without precomputation
JP2007187957A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
Paar Implementation of cryptographic schemes 1
Putranto et al. Space and time-efficient quantum multiplier in post quantum cryptography era
Dong et al. sDPF-RSA: Utilizing floating-point computing power of GPUs for massive digital signature computations
Yasuda et al. Computational hardness of IFP and ECDLP
Bardis Secure, green implementation of modular arithmetic operations for IoT and cloud applications
KR101423947B1 (ko) 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법
JP7055142B2 (ja) 暗号アプリケーションのための素数を生成する方法
Jahani et al. Efficient big integer multiplication and squaring algorithms for cryptographic applications
Knežević et al. Signal processing for cryptography and security applications
Ma et al. Fast implementation for modular inversion and scalar multiplication in the elliptic curve cryptography

Legal Events

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

Payment date: 20170707

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180702

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190715

Year of fee payment: 6