KR101548174B1 - 모듈러스의 음의 역원을 구하는 방법 - Google Patents

모듈러스의 음의 역원을 구하는 방법 Download PDF

Info

Publication number
KR101548174B1
KR101548174B1 KR1020080121272A KR20080121272A KR101548174B1 KR 101548174 B1 KR101548174 B1 KR 101548174B1 KR 1020080121272 A KR1020080121272 A KR 1020080121272A KR 20080121272 A KR20080121272 A KR 20080121272A KR 101548174 B1 KR101548174 B1 KR 101548174B1
Authority
KR
South Korea
Prior art keywords
modulus
inverse
negative
negative inverse
bits
Prior art date
Application number
KR1020080121272A
Other languages
English (en)
Other versions
KR20100062565A (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 KR1020080121272A priority Critical patent/KR101548174B1/ko
Priority to US12/618,283 priority patent/US8407270B2/en
Publication of KR20100062565A publication Critical patent/KR20100062565A/ko
Priority to US13/793,824 priority patent/US20130198253A1/en
Application granted granted Critical
Publication of KR101548174B1 publication Critical patent/KR101548174B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/721Modular inversion, reciprocal or quotient calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

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

Abstract

본 발명은 몽고메리 곱셈 연산에서 필수적인 요소인 모듈러스의 음의 역원을 빠르게 구할 수 있는 모듈러스의 음의 역원을 구하는 방법을 개시한다. 상기 모듈러스의 음의 역원을 구하는 방법은, 설정단계, 정의단계 및 연산단계를 구비한다. 상기 설정단계는 모듈러스를 설정한다. 상기 정의단계는 상기 모듈러스를 음수로 변환시킨 P 및 상기 P에 1(one)을 뺀 S를 정의한다. 상기 연산단계는 상기 P 및 상기 S를 이용하여 상기 모듈러스의 음의 역원을 연산한다.
모듈러스, 몽고메리 곱셈연산, 음의 역원,

Description

모듈러스의 음의 역원을 구하는 방법{Method for calculating negative inverse of modulus}
본 발명은 암호화 시스템에 관한 것으로, 특히 몽고메리 곱셈 연산에서 필수적인 요소인 모듈러스의 음의 역원을 빠르게 구할 수 있는 모듈러스의 음의 역원을 구하는 방법에 관한 것이다.
RSA(Rivest Shamir Adleman) 알고리즘은 두 개의 큰 소수(prime number)를 이용하여 생성시킨 공개키와 개인키를 이용하여 암호화와 복호화를 하는 인터넷 암호화 및 인증 시스템의 하나이다. 이 알고리즘은 두 소수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성한다. 이렇게 구성된 공개키와 개인키로 인터넷에서 사용하는 정보(특히 전자우편)를 암호화하고 복호화 할 수 있는데, 동작원리는 RSA 홈페이지에 상세하게 기술되어 있다. 공개키 암호화 시스템에서 암호화 및 복호화를 수행하는데 소요되는 시간은, 사용되는 키의 길이가 길어질수록 크게 늘어나게 된다. RSA 암호 시스템의 많은 계산 량 및 이에 따라 길어지는 연산시간의 문제를 해결하기 위해 최근에 타원곡선 알고리즘이 그 대안으로 주목을 받고 있다.
RSA 알고리즘, 타원곡선 암호와 같은 공개키 암호시스템에서는 매우 큰 수에 대한 모듈러(modular) 연산을 사용하기 때문에, 안전시스템(security system)의 성능이 모듈러 연산을 얼마나 빨리 효율적으로 수행하는가에 크게 의존하게 된다. 특히 오늘날 RSA 알고리즘의 경우, 높은 보안성을 위해 적어도 2,048 비트의 키를 사용하며, 앞으로는 4,096비트까지 지원이 가능할 것을 요구하고 있다. 이런 상황에서 모듈러 연산을 고속으로 구현하는 것은 여러 응용 분야에서 매우 중요한 문제가 되고 있다.
모듈러 곱셈을 수행하는 알고리즘은 여러 가지가 있지만 그 중에서 몽고메리 모듈러 곱셈(Montgomery modular multiplication) 기법이 특히 하드웨어 구현을 위해서 가장 널리 사용되고 있다. 지난 20여 년 동안 몽고메리 모듈러 곱셈기법을 하드웨어로 구현하는 연구가 널리 진행되었지만 대부분의 경우는 래딕스(radix) 2, 래딕스 4, 내지는 래딕스 8정도까지만 사용하였다. 래딕스를 증가시키는 것이 연산 처리 속도를 높이는 가장 좋은 방법이라는 것은 널리 알려져 있지만 래딕스가 증가하면 몫(quotient)을 결정하는 과정이 복잡해지게 되기 때문에 래딕스를 원하는 만큼 증가시키는데 한계가 있었다.
본 발명이 해결하고자 하는 기술적과제는, 몽고메리 곱셈 연산에서 필수적인 요소인 모듈러스의 음의 역원을 빠르게 구할 수 있는 모듈러스의 음의 역원을 구하는 방법을 제공하는데 있다.
상기 기술적과제를 이루기 위한 본 발명의 일면에 따른 모듈러스의 음의 역원을 구하는 방법은, 설정단계, 정의단계 및 연산단계를 구비한다. 상기 설정단계는 모듈러스를 설정한다. 상기 정의단계는 상기 모듈러스를 음수로 변환시킨 P 및 상기 P에 1(one)을 뺀 S를 정의한다. 상기 연산단계는 상기 P 및 상기 S를 이용하여 상기 모듈러스의 음의 역원을 연산한다.
상기 기술적과제를 이루기 위한 본 발명의 다른 일면에 따른 모듈러스의 음의 역원을 구하는 방법은, 구별단계 및 역원계산단계를 구비한다. 상기 구별단계는 메인 모듈러스를 L(L은 1이상의 정수)개의 모듈러스 그룹으로 구별한다. 상기 역원계산단계는, L개의 모듈러스 그룹 중 메인 모듈러스의 LSB가 포함된 모듈러스 그룹의 음의 역원을 계산한 후, 이어지는 모듈러스 그룹의 음의 역원을 순차적으로 계산하고 최종적으로는 메인 모듈러스의 MSB가 포함된 모듈러스 그룹의 음의 역원을 계산한다.
본 발명은 몽고메리 곱셈연산에서 필수적인 모듈러스의 음의 역원을 빠르게 계산할 수 있으므로, 하이 래딕스 몽고메리 연산을 쉽고 간단하게 소프트웨어 및 하드웨어로 구현할 수 있는 장점이 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 예시적인 실시 예를 설명하는 첨부 도 면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
먼저 본 발명에 따른 모듈러스(modulus) M의 음의 역원(-
Figure 112008083173105-pat00001
)을 구하는 방법에서 사용하게 될 2진수의 나눗셈의 개념에 대하여 설명한다.
2진수 A는 수학식 1과 같이 표시할 수 있다.
Figure 112008083173105-pat00002
이 때 계수
Figure 112008083173105-pat00003
가 0(zero)라고 가정하면, A를 2로 나눈 값은 수학식 2와 같이 표시할 수 있다.
Figure 112008083173105-pat00004
상기의 2진수의 나눗셈을 정리하면, LSB(Least Significant Bit)가 0(zero)인2진수 A는, 2로 나누었을 때(
Figure 112008083173105-pat00005
) 비트의 수가 하나 감소한다는 것을 알 수 있다. 수학식 2의 결과는 이 분야의 일반적인 기술수준을 가진 이라면 쉽게 이해할 수 있으므로, 구체적인 연산과정에 대해서는 설명을 생략한다.
후술하게 될 본 발명에 따른 모듈러스 M의 음의 역원(-
Figure 112008083173105-pat00006
)을 구하는 방법 에서도 상기와 같은 연산 결과를 이용하게 된다.
구체적으로 하이 래딕스(high radix) 몽고메리 곱셈연산은 다음과 같이 나타낼 수 있다. 하드웨어 구현의 편이를 위해서 래딕스는 보통 2의 제곱의 형태를 사용하게 된다.
알고리즘: High radix Montgomery multiplication
Inputs: 2r-1< M < 2r
-M < A, B < M where
Figure 112008083173105-pat00007
and
Figure 112008083173105-pat00008
Output:
Figure 112008083173105-pat00009
1.
Figure 112008083173105-pat00010
2. For i=0 to n-1
A.
Figure 112008083173105-pat00011
B.
Figure 112008083173105-pat00012
3. If Sn < 0 then Sn = Sn + M
여기서 매 루프(loop)마다 2.A.에서처럼 몫(Qi)을 계산해야 한다. 이 때 주어진 모듈러스 M의 음의 역원(negative inverse of M)인
Figure 112008083173105-pat00013
의 값을 이전 결과와 새로운 부분 곱셈이 더해진 결과(Si-1 + BiA)에 곱하는 연산 (
Figure 112008083173105-pat00014
)이 필요하다.
종래에는 주어진 래딕스에 대해서 관련된 음의 역원들을 사전에 미리 모두 계산한 후에 테이블(table)에 저장시켜서 필요한 값을 불러오는 방법을 적용하였다. 하지만 래딕스가 커지게 되면 이에 대응되는 테이블의 크기도 지수함수의 형태로 증가하게 된다. 예를 들어, 래딕스가 2k인 경우 홀수인 M의 역원들을 모두 저장하려면 (k-1)2k-1비트의 메모리가 필요하다는 단점이 있다.
몽고메리 곱셈연산에서 몫(q)은 다음과 같이 구해진다.
이전 연산의 결과(Si-1)와 새로운 부분 곱셈(BiA)의 합(Si-1 + BiA)을 spp라 하자. 그러면 spp의 하위 k비트를 0(zero)으로 만들게 되는 몫 q는 수학식 3과 같이 정의된다는 것에 대해서는 이미 설명하였다.
Figure 112008083173105-pat00015
q = *spp mod 2k
다시 말해 몫(q)을 구하는 과정은 먼저
Figure 112008083173105-pat00016
을 구한 후에 spp에 곱해주는 과정으로 나눌 수 있다. 이를 위해서는 먼저
Figure 112008083173105-pat00017
즉 모듈러스 M의 음의 역원을 효율적으로 구하는 방법이 필요하다.
본 발명에서는 0(zero) 보다 큰 임의의 정수 k에 대해 래딕스 2k를 가지는 하이 래딕스 몽고메리 곱셈연산을 구현할 때 관련된 몫을 계산하는데 필수적으로 필요한 모듈러스 M의 음의 역원(
Figure 112008083173105-pat00018
)을 효율적으로 구하는 알고리즘을 제공한다. 본 발명에 따른 모듈러스 M의 음의 역원이 포함된 수학식(
Figure 112008083173105-pat00019
mod 2k)을 구하는 알고리즘은 아래와 같다.
Input M = (mk-1, mk-2, … , m1, 1)2
Output V =
Figure 112008083173105-pat00020
mod 2k = (vk-1, vk-2, … , v1, 1)2
Set P = -M= (1-mk-1, 1-mk-2, … , 1-m1, 1)2
S = P - 1 = -M - 1
= (1-mk-1, 1-mk-2, … , 1-m1, 0)2 = (sk-1, sk-2, … , s1, s0)2
For i = 1 to k-1
S =
Figure 112008083173105-pat00021
Vi= s0 (where s0는 S의 LSB)
S = S +s0P
Endfor.
이하에서는 본 발명에 따른 모듈러스 M의 음의 역원(-
Figure 112008083173105-pat00022
)을 구하는 방법에 대하여 설명한다.
상기의 알고리즘은 하드웨어뿐만 아니라 소프트웨어로도 구현이 가능하다. 예를 들어 소프트웨어로 구현할 경우 상기의 모듈러스 M의 음의 역원(-
Figure 112008083173105-pat00023
)을 구하는 방법을 그대로 적용하여 차례로 한 비트씩 생성하도록 하는 것이다. 하드웨어로 구현할 경우, 시스템에서 모듈러스 M의 하위 비트가 k 비트 이상을 읽은 이후에는 필요한 모듈러스의 음의 역원을 구할 수 있다. 모듈러스 M은 32비트 또는 64비트와 같이 관련된 시스템에서 사용하는 워드(word) 크기에 비해 매우 큰 1,024 비트 또는 2,048비트인 경우가 일반적인데, 이들 비트를 한 번에 모두 읽어오는 것이 아니라 여러 번에 걸쳐서 읽어 오게 된다. 또한 읽어오는 순서를 LSB로부터 읽어오더라도 아무런 문제가 발생하지 않는다. 따라서 M을 읽어 오면서 모듈러스의 음의 역원을 구하는 연산을 병렬로 수행할 수 있다.
또한 m i의 형태로 모듈러스의 음의 역원을 표현하는 것이 가능한데, 이 경우 하나의 사이클에 여러 비트의 음의 역원을 구할 수도 있다. 이 때 음의 역원을 구하는 과정에서 캐리 전파가 포함되기 때문에 관련된 시스템의 최대 동작주파수에 따라서 전체 음의 역원을 적절하게 배분하는 것이 필요하다.
상술한 바와 같이, 몽고메리 곱셈연산에 사용되는 모듈러스 M의 음의 역원은 하위 k 비트만으로도 충분하다. 그러나 2의 거듭 제곱 형태의 모듈러스에 대한 역원을 구하는 문제는 암호 시스템 구현과 깊이 관련된 이산 로그(discrete logarithm)에도 관련되어 있는 것으로서, 이를 위해 상기의 알고리즘을 사용해서 하위 k 비트 이상의 음의 역원을 구하는 것도 가능하다.
일반적으로 전체의 비트에 대한 음의 역원을 한 번에 구하는 것은 현실적이 지 않다. 왜냐하면 모듈러스 M 전체의 비트를 수신하는데 소요되는 시간이 길어질 뿐만 아니라, 연산이 복잡해지고 따라서 연산 시간도 상당히 소요되기 때문이다. 따라서 본 발명에서는 모듈러스 M의 전체 비트를 일정한 비트의 비율로 그룹화 한 후, 이미 수신한 하나의 그룹에 대해 음의 역원을 계산하고 차례로 나머지 모듈러스 M의 전체 비트에 대한 음의 역원을 구한다.
모듈러스 M의 전체 비트를 L개의 그룹(M0~M(L-1))으로 나누고 각 그룹에는 k비트가 포함된다고 가정한다. 먼저 첫 번째 그룹(M0)의 음의 역원을 구하는 과정에 대하여 설명한다.
상기의 알고리즘은 신호흐름도로 나타내면 보다 쉽게 이해할 수 있다.
도 3은 본 발명에 따른 모듈러스 M의 음의 역원을 구하는 방법의 제1실시예를 나타내는 신호흐름도이다.
도 1을 참조하면, 모듈러스 M의 음의 역원을 구하는 방법(100)은, 설정단계(110), 정의단계(120) 및 연산단계(130)를 구비한다.
설정단계(110)에서는 모듈러스 제1그룹(M0) 및 모듈러스 제1그룹(M0)의 음의 역원(V0)에 대하여 설정한다.
k비트가 할당된 모듈러스 제1그룹(M0)은 수학식 4와 같이 설정한다. 괄호의 끝 부분의 하단에 표시된 2는 2진수를 의미한다.
M0 = (mk-1, mk-2, … , m1, 1)2
모듈러스 제1그룹(M0)의 음의 역원(V0)은 수학식 5와 같이 설정된다.
Figure 112008083173105-pat00024
V0 = mod 2k = (vk-1, vk-2, … , v1, 1)2
몽고메리 곱셈연산에서 V0은 홀수가 되어야 하므로 LSB인 v0은 항상 1이 된다.
정의단계(120) 에서는 모듈러스 제1그룹(M0)을 음수로 변환시킨 P 및 음수로 변환된 모듈러스 제1그룹(P)에 1(one)을 뺀 S를 정의 한다.
모듈러스 제1그룹(M0)을 음수로 변환시킨 P는 수학식 6과 같이 표시된다.
P = -M0= (1-mk-1, 1-mk-2, … , 1-m1, 1)2
음수로 변환된 모듈러스 제1그룹(P)에 1(one)을 뺀 S는 수학식 7과 같이 표시된다.
S = P - 1 = -M0 - 1
= (1-mk-1, 1-mk-2, … , 1-m1, 0)2 = (sk-1, sk-2, … , s1, s0)2
모듈러스 제1그룹(M0)의 음의 역원(V0)의 LSB는 수학식 2에서 표시된 바와 같이 1로 결정되어 있으므로, 이하에서는 다음 LSB(v1)로부터 MSB(vk-1)까지의 값을 결정하면 된다.
연산단계(130)에서는 모듈러스 제1그룹(M0)의 음의 역원(V0)의 나머지 비트들의 값을 연산한다.
먼저 변수 j=1일 때(131),
모듈러스 제1그룹(M0)의 음의 역원(V0)을 구성하는 2번째 LSB(v1)를 구한다.
본 발명에서는 상술한 2진수를 2로 나누었을 때의 결과를 적용한다.
따라서 이진수 S의 값을 2로 나누어 준 다음(132), 나누어진 S 값의 LSB(s0)를 모듈러스 제1그룹(M0)의 음의 역원(V0)을 구성하는 비트(v1)로 정한다(133). 따라서 최초에 정해진 v0에 이어 j가 1일 때의 v1 값도 정해졌다.
이어서 새로운 S를 수학식 8과 같이 정의한다(134).
S = S + s0P
변수 j에 1을 더 한 후(135) 변수가 모듈러스 제1그룹(M0)의 음의 역원(V0)의 비트 수(k-1)와 비교하여(136), 작은 경우에는 수학식 5에서 정의된 S의 값을 2로 나누어 주는 연산(132)으로부터 상기의 연산과정을 반복 수행하도록 하여 모듈 러스 제1그룹(M0)의 음의 역원(V0)을 구성하는 비트(v2) 내지 MSB(vk-1)까지 구하도록 하고, 큰 경우에는 모듈러스 제1그룹(M0)의 음의 역원(V0)의 비트를 모두 결정하였으므로 연산을 중단한다.
상기의 과정을 이해하기 용이하도록 M0이 8비트(m7, m6, m5, m4, m3, m2, m1, 1)인 경우 모듈러스 M0의 음의 역원(
Figure 112008083173105-pat00025
)을 구하는 경우의 예를 제시한다. 즉 8비트 보다 더 많은 비트를 포함하는 모듈러스 M 중 첫 번째 그룹인 8비트의 M0에 대해서 설명한다. 이하의 설명은 8비트에 대한 것이지만, 이하의 설명을 기초하여 더 많은 수의 비트까지 확장하는 것은 이 분야의 일반적인 기술자라면 누구나 할 수 있을 것이고 이 또한 본 발명의 권리범위에 속한다.
몽고메리 곱셈연산에서 V0 = -
Figure 112008083173105-pat00026
mod 2k =(vk-1, vk-2, … , v1, 1)2 는 홀수가 되어야 하므로 v0은 항상 1이 된다는 것은 일반적으로 알려져 있다.
따라서 V0의 LSB는 v0 = 1이 된다.
이하에서는 V의 나머지 비트들의 값을 결정한다.
vn의 인덱스 n의 숫자가 가장 작은 것이 LSB이고 가장 큰 것이 MSB(Most Significant Bit)가 된다.
M0의 음수(-M0)인 P는 정의에 따라 (1-mk-1, 1-mk-2, … , 1-m1, 1)2 와 같이 된다. 또한 M0의 음수에 1(one)을 뺀 S(=(1-mk-1, 1-mk-2, … , 1-m1, 0)2의 경우 LSB가 0(zero)이다.
j = 1일 경우;
S의 LSB(s0)는 0이므로 S를 2로 나누면,
Figure 112008083173105-pat00027
= (1-mk-1, 1-mk-2, … , 1-m1)2 이 된다.
여기서 S+s0P의 비트 수는 S의 비트 수에 비해 한 개의 비트가 감소한 크기를 가진다는 점에 대해서는 이미 설명하였다.
S를 2로 나눈 값(
Figure 112008083173105-pat00028
)을 다시 S에 저장하라는 연산식(S =
Figure 112008083173105-pat00029
)에 따르면,
v1 = s0 = 1 - m1 이 된다.
지금까지의 연산으로 v0 및 v1의 값은 결정되었다.
이어서 연산식(S=S+s0P)을 계산한다.
j=2일 경우;
s0(=1-m1) 는 2진수의 한 비트의 값을 의미하므로, 0(zero) 또는 1(one) 중 하나의 값을 가진다.
s0(=1-m1) 가 0(zero) 일 경우 s0P = 0이 되므로,
S(=S+s0P) =(1-mk-1, 1-mk-2, … , 1-m1)2 이 되고,
Figure 112008083173105-pat00030
= (1-mk-1, 1-mk-2, … , 1-m2)2 가 된다.
이 경우, v2 = 1 - m2 가 된다.
s0 (=1-m1) 가 1(one) 일 경우, s0P = P가 되므로,
S = S +P = (1-mk-1, 1-mk-2, … , 1-m1)2 +(1-mk-1, 1-mk-2, … , 1-m1, 1)2 가 된다.
(1-m1)이 1(one)이므로, s0 (=1-m1+1) 는 0(zero)이 된다. 이 때 1+1에 의해 한 개의 캐리(C1)가 s1로 이전된다.
s1= (1-m2 )+(1-m1) = (1-m2 ) +1+1(C1) = (1-m2 ) 이 된다. 이 때 1+1(C1)에 의한 하나의 캐리(C2)가 s2로 이전된다.
s2 = (C2+1-m2+1-m3)
이 때
Figure 112008083173105-pat00031
를 연산한 결과에 따르면, v2(s0) = 1-m2 가 된다.
상술한 바와 같이, s0(=1-m1)의 값이 0 과 1 중 어떤 값을 가지더라도, v2 값은 항상 1-m2 이 됨을 알 수 있다.
따라서 i=2일 경우, v2 = 1-m2 가 된다.
이어서 연산식(S=S+s0P)을 계산한다.
상기와 같은 연산과정을 i=3일 경우로부터 i=7일 경우까지 반복하여 수행하 면 아래와 같이 v3 내지 v7을 얻을 수 있다. 여기서 아래첨자 b는 v의 역(inverse)의 값을 의미하며, C는 캐리(carry) 값을 의미한다.
C3+v3b = m3 +m2+m1
C4+v4b = m4+m3+C3
C5+v5b = m5+m4+m3+m1+C4
C6+v6b = m6+m5+m4+m2+m3m2+m3m1+m2m1+C5
v7b = m7+ m6+m5+m4+m3m2m1+(m4+m3+1)(m2+m1)+C6
도 2는 본 발명에 따른 모듈러스의 음의 역원을 구하는 모듈러스의 음의 역원계산기의 일실시예이다.
도 2를 참조하면, 8비트로 한정하여 설명한 본 발명에 따른 모듈러스의 음의 역원계산기는, 상술한 본 발명에 따른 모듈러스의 음의 역원을 구하는 방법에서 수행되는 연산과정을 하드웨어로 구현한 것으로, 인버터(inverter), EX-OR(Exclusive OR gate), EX-NOR(Exclusive NOR gate) 및 FA(Full Adder)를 이용하여 간단하게 구현할 수 있다.
도 2를 참조하면, 모듈러스M0의 음의 역원(V0)의 최하위 비트(v0)는 항상 1이고, 두 번째 비트(v1)는 m1의 역수(1 - m1)이고, 세 번째 비트(v2)도 m2의 역수(1-m2)가 되므로, m1 및 m2를 각각 인버터를 통과시켜 얻을 수 있다. 네 번째 비트(v3)와 관계된 식은 C3+v3b = m3 +m2+m1이고 이를 구현하기 위해, FA는 3개의 비트(m1, m2, m3)를 수신하여 합한 결과는 인버터를 통과시켜 네 번째 비트를 생성시키고, 연산 결과 생성된 하나의 캐리(C3)를 다음 연산스테이지로 전달한다.
도 2에 도시된 나머지 회로의 입출력 관계는 상술한 방법의 연산과정을 구현하는 것이므로, 더 이상 설명하지 않더라도 연산과정과 역원계산기를 1대 1로 연관시킬 수 있을 것이다.
상기의 설명과 같이 본 발명에 따른 모듈러스 M0의 역원(V0)을 구하는 방법 및 M0의 역원계산기는, 모듈러스 M0의 LSB를 먼저 구하고 차례로 MSB 까지 구한다. 이 때 하위 비트는 더 낮은 래딕스에서 그대로 사용하는 것이 가능하다. 예를 들어 상기의 8비트 중 하위 6개의 비트만을 사용하면 mod 26에 대한 M0의 음의 역원을 구하는 것이 된다.
이를 일반화하기 위해 Km>Ks라 가정 할 때, 래딕스 2Km에 대한 모듈러스의 음의 역원으로부터 더 낮은 래딕스 2Ks에 대한 모듈러스의 음의 역원은 언제나 쉽게 얻을 수 있다. 또한
Figure 112008083173105-pat00032
은 M0이 고정되어 있다면, 모듈러 곱셈연산을 수행할 때 모듈러스 M0에 대해 한 번만 연산하고 이를 레지스터(Register)와 같은 메모리 장치에 저장시킨 후 연산된 결과를 반복하여 사용하는 것이 가능하다.
몽고메리 곱셈연산을 수행하는 하드웨어에서는 연산이 이루어지기 전에 모듈러스 M을 읽어 들이는 과정이 먼저 수행되는 것이 일반적이다. 이 때 모듈러스 M을 k비트 이상 읽은 후에는, 나머지 비트를 읽어 들이는 것과 동시에 이미 읽어 들인 비트를 이용하여 M의 음의 역원을 계산하는 것이 가능해 진다. 특히 M을 여러 개의 사이클을 통해 읽어오는 경우 모듈러스 M의 음의 역원을 구하는 연산은 M을 읽어 오는 과정과 병렬로 처리하는 것이 가능하다.
도 3은 본 발명에 따른 모듈러스 M의 음의 역원을 구하는 방법의 제2실시예를 나타내는 신호흐름도이다.
도 3을 참조하면, 전체 모듈러스 M은 L개의 소그룹 모듈러스 그룹들(M0~M(L-1))로 구별될 수 있다. 도 1 및 도 2에 도시된 바와 같이 그 중 첫 번째인 모듈러스 제1그룹(M0)에 대한 것을 구하였으므로(100), 모듈러스 그룹들(M1~M(L-1))은 도 3에 도시된 연산과정을 통해 구할 수 있다.
오늘날 많은 모바일 제품들에서는 고도의 보안성을 유지하면서도 동시에 보안에 필요한 오버헤드(over head)는 최소로 할 것을 요구하고 있다. 이를 위해서는 매우 큰 수의 연산을 사용하는 공개키 암호시스템을 빠르고 효율적으로 구현하는 것이 관건이다. 상기의 알고리즘 또는 모듈러스 M의 음의 역원계산기를 이용하면, 하이 래딕스 몽고메리 연산에서 필수적으로 사용되는 모듈러스의 음의 역원을 적은 메모리와 간단한 논리 회로를 이용하여 구현할 수 있다.
상기의 방법 및 역원계산기는 암호시스템 뿐만 아니라 서명 또는 인증 시스 템에도 용이하게 적용될 수 있다.
이상에서는 본 발명에 대한 기술사상을 첨부 도면과 함께 서술하였지만 이는 본 발명의 바람직한 실시 예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 이라면 누구나 본 발명의 기술적 사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.
도 1은 본 발명에 따른 모듈러스 M의 음의 역원을 구하는 방법의 제1실시예를 나타내는 신호흐름도이다.
도 2는 본 발명에 따른 모듈러스의 음의 역원을 구하는 모듈러스의 음의 역원계산기의 일실시예이다.
도 3은 본 발명에 따른 모듈러스 M의 음의 역원을 구하는 방법의 제2실시예를 나타내는 신호흐름도이다.

Claims (10)

  1. 모듈러스의 음의 역원계산기에 의해서 수행되는 모듈러스의 음의 역원을 구하는 방법으로서,
    모듈러스(M0)를 설정하는 설정단계(110);
    상기 모듈러스(M0)를 음수로 변환시킨 P 및 상기 P에 1(one)을 뺀 S를 정의하는 정의단계(120); 및
    상기 P 및 상기 S를 이용하여 상기 모듈러스(M0)의 음의 역원(V0)을 연산하는 연산단계(130)를 구비하는 모듈러스의 음의 역원을 구하는 방법.
  2. 제1항에 있어서,
    상기 모듈러스(M0) 및 상기 모듈러스(M0)의 음의 역원(V0)에는 k비트가 동일하게 할당되고, 상기 k는 전체 모듈러스에 할당된 비트수와 같거나 적은 모듈러스의 음의 역원을 구하는 방법.
  3. 제2항에 있어서, 상기 연산단계(130)는,
    상기 모듈러스(M0)의 음의 역원(V0)의 LSB부터 구하고 차례로 MSB까지 구하는 모듈러스의 음의 역원을 구하는 방법.
  4. 제3항에 있어서, 상기 연산단계(130)는,
    상기 S를 2로 나누는 단계(132); 및
    상기 2로 나누어진 S의 LSB의 값을 상기 모듈러스(M0)의 음의 역원(V0)을 구성하는 비트 중 그 값이 결정되지 않는 LSB의 값으로 할당하는 단계(133);
    상기 S를 2로 나누어서 얻은 S 값의 LSB와 상기 P를 곱한 값을 상기 S를 2로 나누어서 얻은 S 값에 더하여 이를 S로 치환하는 단계(134)를 구비하는 모듈러스의 음의 역원을 구하는 방법.
  5. 제4항에 있어서,
    상기 복수 개의 단계(132, 133, 134)를 상기 모듈러스(M0)의 음의 역원(V0)의 MSB를 구할 때 까지 반복시키는 단계(135, 136)를 더 구비하는 모듈러스의 음의 역원을 구하는 방법.
  6. 제1항에 있어서,
    모듈러스(M0)와 모듈러스의 음의 역원(V0)이
    M0 = (mk-1, mk-2, … , m1, 1)2 , k는 정수
    V0 =
    Figure 112008083173105-pat00033
    mod 2k = (vk-1, vk-2, … , v1, 1)2 로 각각 정의될 때,
    상기 k가 8인 경우,
    v0 = 1
    v1= 1-m1
    v2= 1-m2
    C3+v3b = m3 +m2+m1
    C4+v4b = m4+m3+C3
    C5+v5b = m5+m4+m3+m1+C4
    C6+v6b = m6+m5+m4+m2+m3m2+m3m1+m2m1+C5
    v7b = m7+ m6+m5+m4+m3m2m1+(m4+m3+1)(m2+m1)+C6 의 관계를 가지는 모듈러스의 음의 역원을 구하는 방법.
  7. 제1항에 있어서,
    상기 모듈러스(M0)의 음의 역원(V0)은 메모리 장치에 저장시키는 단계를 더 구비하는 모듈러스의 음의 역원을 구하는 방법.
  8. 모듈러스의 음의 역원계산기에 의해서 수행되는 모듈러스의 음의 역원을 구하는 방법으로서,
    메인 모듈러스를 L(L은 1이상의 정수)개의 모듈러스 그룹으로 구별하는 구별단계(310); 및
    L개의 모듈러스 그룹 중 메인 모듈러스의 LSB가 포함된 모듈러스 그룹의 음의 역원을 계산한 후, 이어지는 모듈러스 그룹의 음의 역원을 순차적으로 계산하고 최종적으로는 메인 모듈러스의 MSB가 포함된 모듈러스 그룹의 음의 역원을 계산하는 역원계산단계(320~340)를 구비하는 모듈러스의 음의 역원을 구하는 방법.
  9. 제8항에 있어서, 상기 역원계산단계(320~340)는,
    상기 모듈러스 그룹을 음수로 변환시킨 P 및 상기 P에 1(one)을 뺀 S를 정의하는 정의단계(120); 및
    상기 P 및 상기 S를 이용하여 상기 모듈러스 그룹의 음의 역원(V0)을 연산하는 연산단계(130)를 구비하는 연산단계(100)를 구비하는 모듈러스의 음의 역원을 구하는 방법.
  10. 제9항에 있어서,
    상기 연산단계(130)는 상기 모듈러스 그룹의 음의 역원의 LSB부터 구하고 차례로 MSB까지 구하는 모듈러스의 음의 역원을 구하는 방법.
KR1020080121272A 2008-12-02 2008-12-02 모듈러스의 음의 역원을 구하는 방법 KR101548174B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020080121272A KR101548174B1 (ko) 2008-12-02 2008-12-02 모듈러스의 음의 역원을 구하는 방법
US12/618,283 US8407270B2 (en) 2008-12-02 2009-11-13 Methods of calculating negative inverse of modulus
US13/793,824 US20130198253A1 (en) 2008-12-02 2013-03-11 Methods of calculating negative inverse of modulus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080121272A KR101548174B1 (ko) 2008-12-02 2008-12-02 모듈러스의 음의 역원을 구하는 방법

Publications (2)

Publication Number Publication Date
KR20100062565A KR20100062565A (ko) 2010-06-10
KR101548174B1 true KR101548174B1 (ko) 2015-09-07

Family

ID=42223757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080121272A KR101548174B1 (ko) 2008-12-02 2008-12-02 모듈러스의 음의 역원을 구하는 방법

Country Status (2)

Country Link
US (2) US8407270B2 (ko)
KR (1) KR101548174B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101321259B1 (ko) * 2013-05-23 2013-10-29 목포대학교산학협력단 몽고메리 역원 알고리즘을 위한 뺄셈 연산 장치 및 그 방법
KR101977873B1 (ko) 2017-08-25 2019-08-28 국방과학연구소 하드웨어 구현된 모듈러 역원 모듈
WO2024101511A1 (ko) * 2022-11-09 2024-05-16 주식회사 시옷 V2x 통신 환경에서 메시지의 서명 검증 방법 및 이를 수행하는 컴퓨팅 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003043915A (ja) 2001-07-31 2003-02-14 Mitsubishi Electric Corp 演算装置及び演算方法及び演算プログラム
JP2004226516A (ja) 2003-01-21 2004-08-12 Hitachi Ltd べき乗剰余演算方法及びそのプログラム
JP2005221830A (ja) 2004-02-06 2005-08-18 Sanyo Electric Co Ltd 逆元演算装置、演算処理装置および演算処理方法
JP2006091086A (ja) 2004-09-21 2006-04-06 Renesas Technology Corp モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7027598B1 (en) * 2001-09-19 2006-04-11 Cisco Technology, Inc. Residue number system based pre-computation and dual-pass arithmetic modular operation approach to implement encryption protocols efficiently in electronic integrated circuits
KR100564599B1 (ko) 2003-12-24 2006-03-29 삼성전자주식회사 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003043915A (ja) 2001-07-31 2003-02-14 Mitsubishi Electric Corp 演算装置及び演算方法及び演算プログラム
JP2004226516A (ja) 2003-01-21 2004-08-12 Hitachi Ltd べき乗剰余演算方法及びそのプログラム
JP2005221830A (ja) 2004-02-06 2005-08-18 Sanyo Electric Co Ltd 逆元演算装置、演算処理装置および演算処理方法
JP2006091086A (ja) 2004-09-21 2006-04-06 Renesas Technology Corp モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド

Also Published As

Publication number Publication date
US20100138467A1 (en) 2010-06-03
US8407270B2 (en) 2013-03-26
KR20100062565A (ko) 2010-06-10
US20130198253A1 (en) 2013-08-01

Similar Documents

Publication Publication Date Title
Koziel et al. Post-quantum cryptography on FPGA based on isogenies on elliptic curves
US7904498B2 (en) Modular multiplication processing apparatus
US8265267B2 (en) Information security device
KR100723996B1 (ko) 계산 방법, 계산 장치 및 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
Boruah et al. Implementation of ElGamal Elliptic Curve Cryptography over prime field using C
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
Balasubramaniam et al. Elliptic curve scalar multiplication algorithm using complementary recoding
Vidhya et al. Hybrid key generation for RSA and ECC
KR101548174B1 (ko) 모듈러스의 음의 역원을 구하는 방법
Reddy RM-RSA algorithm
Daly et al. Fast modular division for application in ECC on reconfigurable logic
Knežević et al. Speeding up bipartite modular multiplication
Aswathy et al. Modified RSA public key algorithm
Realpe-Muñoz et al. High-performance elliptic curve cryptoprocessors over GF (2^ m) GF (2 m) on Koblitz curves
Gysin et al. Generalised cycling attacks on RSA and strong RSA primes
Dąbrowski et al. Generation and Implementation of Cryptographically Strong Elliptic Curves
Knezevic et al. Modular reduction without precomputational phase
JP2000321979A (ja) 多項式演算装置、楕円曲線位数計算装置、楕円曲線生成装置及び楕円曲線暗号システム
Abd-Eldayem et al. Addition-Subtraction Chain for 160 bit Integers by using 2’s Complement
Yünüak Modular exponentiation methods in cryptography
Bala et al. Optimized elliptic curve cryptography for wireless sensor networks
Mohammadi et al. A fast and secure RSA public key cryptosystem
Vostrov et al. Algorithmic processes of the large numbers factorization based on the theory of elliptic curves
Mohan et al. Exponential Simplification Using Euler's and Fermat's Theorem

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180731

Year of fee payment: 4