KR100400198B1 - 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법 - Google Patents

공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법 Download PDF

Info

Publication number
KR100400198B1
KR100400198B1 KR10-2001-0060584A KR20010060584A KR100400198B1 KR 100400198 B1 KR100400198 B1 KR 100400198B1 KR 20010060584 A KR20010060584 A KR 20010060584A KR 100400198 B1 KR100400198 B1 KR 100400198B1
Authority
KR
South Korea
Prior art keywords
value
word
big integer
register
carry
Prior art date
Application number
KR10-2001-0060584A
Other languages
English (en)
Other versions
KR20030027397A (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 KR10-2001-0060584A priority Critical patent/KR100400198B1/ko
Priority to PCT/KR2002/000672 priority patent/WO2003036864A1/en
Publication of KR20030027397A publication Critical patent/KR20030027397A/ko
Application granted granted Critical
Publication of KR100400198B1 publication Critical patent/KR100400198B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 컴퓨터 프로세서의 기본 연산단위 비트 수 (예, 16 비트 혹은 32비트)의 임의의 배수에 해당하는 소정의 빅인티저(Big Integer)에 대한 고속의 나머지 연산 수행이 가능한 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속 나머지 연산 방법에 관한 것이다. (a)빅인티저 피젯수(d)의 나머지 값을 저장하는 빅인티저 레지스터(r)에 복사하는 단계; (b)상기 빅인티저 피젯수가 복사된 레지스터(r)과 빅인티저 젯수(m)의 크기를 비교하는 단계; (c)상기 빅인티지 젯수(m)가 빅인티저 피젯수가 복사된 레지스터(r)값보다 큰 경우에는 빅인티저 피젯수가 복사된 레지스터(r)에서 0이 아닌 최고워드()를 검색하는 단계; (d)상기 최고워드()와 해당워드 값을 가산하여 새로운 해당워드 값과 상위워드로 전파될 캐리(c)값을 산출하는 단계(도 3의 워드 201 참조); (e)상기 최고워드()를 좌측으로 b값만큼 쉬프트 시킨값에 해당워드 값과 상기 캐리(c)값을 가산하여 새로운 해당워드 값과 캐리(c)값을 산출하는 단계(도 3의 워드 203 참조); (f)상기 최고워드()를 우측으로 b값만큼 쉬프트 시킨

Description

공개키 암호시스템을 위한 특정 빅인티저에 대한 고속 나머지 연산 방법 {HIGH SPEED OPERATING REMAINDER OF A SPECIFIC BIG INTEGER FOR THE PUBLIC KEY CRYPTOSYSTEM}
본 발명은 암/복호화 시스템에 이용될 수 있는 소정의 빅인티저에 대한 고속의 나머지 연산 방법에 관한 것으로서, 보다 상세하게는 컴퓨터 프로세서의 기본 연산단위 비트 수(n, 예컨대 16 비트 혹은 32비트)의 배수에 해당하는 소정의 빅인티저 (Big Integer), 예컨대 고정 소수를 정의하고 이에 대한 고속으로 나머지 연산방법에 관한 것으로서 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속 나머지 연산 방법에 관한 것이다.
근래에 들어 인터넷이 보편화됨에 따라 인터넷을 통한 각종 주요 정보들의 송/수신이 급격히 증가하고 있으며, 이에 따라 상기 주요 정보의 보호를 위한 암호 보안체계 구축이 주요 현안으로 대두되고 있다. 이 암호 보안체계를 위해 공개키 기반 암호 알고리즘이 사용되며 유선상에서는 RSA 암호 알고리즘이 무선상에서는 타원곡선 암호 알고리즘이 널리 사용된다.
상기 공개키 기반 암호 알고리즘의 핵심내용은 사용자와 서버는 각자의 공개키를 공개하여 상대방의 공개키를 소유하고 각자의 개인키로 문서를 암호화하여 상대방에 발송하면 수신자는 발송자의 공개키로 암호화된 문서를 복호화한다.
이때, 암/복호화 단계를 수행하는 경우에 미리 지정된 소수에 대한 복잡한 나머지 연산이 필수적으로 수반되는 것이 일반적이며, 타원곡선 암호 알고리즘의 경우 모든 연산에서 발생하는 임시 결과는 지정된 소수로 나눈 나머지로 변환되어 사용되고 있다. 이때, 소수는 그 길이가 길수록 보안성이 뛰어난 이점은 있으나, 상대적으로 암/복호화 프로세스의 시간이 길어져 속도 향상에는 바람직하지 못한점이 있었다. 이는 상기 소수 길이에 따른 암/복호화 과정에서 복잡한 나머지 연산 과정이 필요하기 때문이다. 따라서 암/복호화 속도를 높이기 위해서는 이 과정에서 수행되는 나머지 연산을 보다 고속으로 수행할 수 있는 알고리즘의 개발이 요구되고 있다.
그러나, 종래에 통용되고 있는 나머지 연산 프로그램을 이용한 연산속도의 향상에는 다음과 같은 문제점과 한계가 도출되고 있다.
이하, 종래 나머지 연산방법의 설명을 통해 그 문제점을 잠깐 살펴본다. 먼저 종래 통용되는 일반적인 나머지 연산 방법은 비트단위 나누기이고 이를 개선한 것이 워드단위의 나누기이다. 비트단위 나누기는 비트단위 비교와 곱하기 연산 그리고 빼기 연산을 사용하여 나머지를 구할 수 있지만 빅인티저의 경우 많은 비트단위의 연산이 필요하다. 하기의 [수학식 1]은 간단한 5비트 길이인 피젯수 10111를 젯수 3비트 길이의 101로 나눈 비트단위 나누기의 예를 도시한 것이다.
상기 [수학식 1]의 젯수 및 피젯수가 빅인티저인 경우 나머지 연산의 워드단위의 표현은 하기 [수학식 2]와 같다. 타원곡선 암호시스템에서는 160비트 이상의 소수인 젯수가 사용된다. 예를 들어 젯수(m)이 160비트인 경우 32비트 프로세서에서 5개의 워드로등과 같이 표현할 수 있다. 빅인티저를 워드단위로 표현한 피젯수를 젯수으로 나눈 나머지를 구할 경우의 최고워드가와 같아지는를 추정하여 하기 [수학식 2]의 과정으로 최고워드를 반복적으로 지워나가면 피젯수(d )는 젯수(m )보다 작아져 나머지가 된다.
d ←d - m ×xi
즉, 전체 비트수 보다 훨씬 적은 워드 숫자만큼 위의 연산을 수행하면 되지만,를 추정시 d/m의 나머지 연산이 사용되기 때문에 결국 모든 사칙연산이 필요하여 연산과정이 복잡하게 되는 문제점이 있다. 이 워드 단위의 나머지 연산을 가속하기 위한 방법으로는 Montgomery Reduction 과 Barrett Reduction 등이 있다.
또한, Montgomery Reduction 과 Barrett Reduction 보다 훨씬 빠르다고 알려져 있는 특정 빅인티저에 대한 나머지 연산 방법은 일반적으로 하기의 [수학식 3], [수학식 4] 또는 [수학식 5]에서와 같은 특정 형태의 빅인티저의 젯수(m)을 이용하는 나머지 연산 방법이 있다.
상기한 바와 같은 빅인티저에 대한 고속 나머지 연산은 암호 알고리즘 분야에서 크게 발달하였다. 이때 상기 소수(m)의 길이는 효율적인 나머지 연산을 위해 프로세서의 기본 연산단위 비트 수(n, 예컨대 16 비트 혹은 32비트)의 배수를 사용하게 되는데, 상기 [수학식 4]와 [수학식 5]에서 지수로 이용되는 값(a)이 바로 비트수(n)의 배수가 되는 것이다.
그러나 상기의 [수학식 3]과 [수학식 4]가 암호 알고리즘에 사용될 경우 c의 최대 길이를 워드크기로 제한하기 때문에 소수의 선택에 제한적이고, c가 1이 아닌 경우 c 에 대한 곱셈 연산이 추가되어 나머지 계산이 복잡해지는 문제점이 있으며, [수학식5]의 경우 3n의 배수(3a=3n,6n,9n, ...)에서만 빅인티저 소수 m이 존재하기 때문에 3n의 배수가 아닌 n의 배수(n, 2n, 4n, 5n, 7n, 8n, ...)길이를 갖는 m에 대해서는 암호 알고리즘에 워드단위의 고속 나머지 연산을 사용할 수 없는 문제점 있었다.
이러한 종래 암호화 알고리즘에서 나머지 연산 처리에 있어서의 지연을 해결하기 위한 기술적 배경하에서 본 발명이 창작된 것이다.
따라서, 본 발명이 이루고자 하는 기술적 과제는, 종래 암호 알고리즘에 있어서 임의의 연산단위 비트수(n)의 배수 길이를 갖는 빅인티저(m)에 대해 고속 나머지 연산이 불가능하였던 문제점을 해소하고자 함에 있으며, 이러한 기술적 과제 달성을 위한 고속 나머지 연산 방법을 제공함에 본 발명이 있다. 이로써, 본 발명은 빅인티저를 이용한 나머지 연산에 있어서 프로세서의 기본 연산단위 비트 수(n)의 임의의 배수 길이를 갖는 특정 형태의 빅인티저에 소정의 소수를 정의하고 이에 대한 고속 나머지 연산 방법을 제시한다.
또한, 적은 메모리와 낮은 CPU사양을 갖는 제한된 무선 단말기 환경에서 RSA공개키 암호시스템의 속도가 느렸던 문제점을 해결한 고속 경량의 타원곡선 암호시스템에 기본연산단위 비트수(n)의 임의의 배수 길이를 갖는 특정 형태의 빅인티저에 소수에 대한 고속 나머지 연산을 구현할 수 있다.
도 1은 본 발명의 실시예에 따른 무선인터넷 환경에서 보안기반 서버/클라이언트 구성도이다.
도 2는 본 발명의 실시예에 따른 빅인티저 젯수(m)의 워드 구조도이다.
도 3은 본 발명의 실시예에 따른 빅인티저 젯수(m)의 나머지 연산을 워드단위로 표시한 도면이다.
도 4 및 도 5는 본 발명의 실시예에 따른 워드단위의 쉬프트연산 처리 흐름도이다.
도 6은 본 발명의 실시예에서 워드단위의 덧셈연산 결과를 더블워드에 저장할 때 발생하는 캐리와 덧셈 결과에 대한 도면이다.
도 7은 본 발명의 실시예에서 워드단위의 덧셈연산을 하는 경우 발생하는 캐리와 덧셈 결과를 산출하기 위한 흐름도이다.
도 8은 본 발명의 실시예에 따른 고속 나머지 연산 처리 흐름도이다.
상술한 목적을 달성하기 위한 본 발명에 따른 서버와 단말기간 전송되는 보안문서의 신속한 공개키 기반의 암/복호화를 위한 특정 빅인티저에 대한 고속 나머지 연산 방법은 다음과 같이 수행됨을 특징으로 한다.
즉, (a)빅인티저 피젯수(d)의 나머지 값을 저장하는 빅인티저 레지스터(r)에 복사하는 단계와; (b)상기 빅인티저 피젯수가 복사된 레지스터(r)과 빅인티저 젯수(m)의 크기를 비교하는 단계와; (c)상기 빅인티지 젯수(m)가 빅인티저 피젯수가 복사된 레지스터(r)값보다 큰 경우에는 빅인티저 피젯수가 복사된 레지스터(r)에서 0이 아닌 최고워드()를 검색하는 단계와; (d)상기 최고워드()와 해당워드 값을 가산하여 새로운 해당워드 값과 상위워드로 전파될 캐리(c)값을 산출하는 단계(도 3의 워드 201 참조)와; (e)상기 최고워드()를 좌측으로 b값만큼 쉬프트 시킨값에 해당워드 값과 상기 캐리(c)값을 가산하여 새로운 해당워드 값과 캐리(c)값을 산출하는 단계(도 3의 워드 203 참조)와; (f)상기 최고워드()를 우측으로 b값만큼 쉬프트 시킨값에 해당워드 값과 상기 캐리(c)값을 가산하여 새로운 해당워드 값과 상위워드로 가산될 캐리(c)값을 산출하는 단계(도 3의 워드 204 참조)와; (g)상기 산출된 캐리 값들을 상위 워드들에 계속적으로 가산하여 해당워드의 값과 상위워드로 전파될 캐리(c)값을 계속해서 산출하고 상기 최종 빅인티저 레지스터(r)를 산출하는 단계(도 3의 워드 201에서 206까지 참조)와; (h)상기 빅인티저 레지스터(r)을 빅인티지 젯수(m) 값을 상호 비교하여 레지스터 (r)값이 작으면 상기 r값을 상기 m값에 대한 나머지 값으로 출력시키는 단계와; 및 (i)상기 빅인티저 레지스터(r)이 빅인티저 젯수(m)보다 크면 다시 상기 (a)단계에서 (h)단계까지 순차로 반복 수행하는 단계;를 포함하는 것을 특징으로 한다.
이하, 본 발명을 구체적으로 설명하기 위해 실시 예를 들어 설명하고, 발명에 대한 이해를 돕기 위해 첨부 도면을 참조하여 상세하게 설명하기로 한다. 그러나, 본 발명에 따른 실시 예들은 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 아래에서 상술하는 실시 예들에 한정되는 것으로 해석되어지지 않아야한다. 본 발명의 실시 예들은 당업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되어지는 것이다.
도 1은 본 발명의 실시 예에 따른 보안키 기반의 서버/클라이언트 시스템의 네트웍 구성을 도시한 것이다. 상기 도 1에서 보여지는 바와 같이 클라이언트인 사용자 단말기(100)는 무선 통신망(102)을 통해 서버(104)와의 무선 데이터 송/수신이 가능한 단말장치를 의미하는 것으로, 정보 교환이전에 상기 사용자 단말기(100)와 서버(104)는 각자의 비밀키와 공개키 쌍을 생성하고 상대방에 공개키를 전달한다. 단말기(100)에서 서버(104)로 정보 전달시 단말기(100)는 평문을 비밀키로 암호화하여 서버(104)로 전달하고 서버(104)는 미리 전달받은 단말기(100)의 공개키로 암호문을 복호화 한다. 서버(104)에서 단말기(100)로 정보 전달 시 서버(104)는 평문을 비밀키로 암호화한 후 단말기(100)로 전달하고 단말기(100)는 미리 전달받은 서버(104)의 공개키로 암호문을 복호화 한다. 이때 상기 단말기(100)는 자신의 비밀키 및 암호 알고리즘을 개인별 스마트카드(106)에 저장하여 사용한다. 또한 공개키 기반 암호 알고리즘에 프로세서의 기본 연산단위 비트 수(n, 예컨대 16 비트 또는 32비트)의 배수에 대한 특정 형태의 소수에 대한 고속 나머지 연산은 암호 알고리즘에 장착하여 암/복호화 속도를 증가시킨다. 공개키 기반 암호 알고리즘에서 모든 임시 연산 결과들은 이 소수에 대한 나머지로 변환되어 사용된다. 즉, 모든 연산 결과들은 이 소수보다 작다.
본 발명의 실시 예에서는 사용자 단말기로 스마트 카드 인터페이스를 가지는 이동통신 단말기를 예를 들어 설명하였으나, 이는 본 발명의 설명을 위한 일 예에불과할뿐 본 발명이 이에 한정되는 것은 아니다.
이때 상기한 바와 같이 보안 솔루션 기반의 서버/클라이언트 시스템에서는 상기 비밀키와 공개키 쌍을 사용하는 공개키 기반 암호 알고리즘의 사용이 필수적이다. 또한 공개키 기반 암호 알고리즘에서 하기의 [수학식 6]에서 본 발명이 제시하는 프로세서의 기본 연산단위 비트 수(n)의 임의의 배수에 대한 소수를 정의하여 사용하면 고속 나머지 연산이 가능하며 결과적으로 암/복호화의 속도가 증가한다.
하기 [수학식 6]에는 본 발명의 실시 예에 따라 단말장치와 서버의 공개키 기반 암호 알고리즘의 암/복호화에 사용되는 소수를 정의할 수 있는 빅인티저 젯수(m)의 수식을 도시한 것이다. 하기 [수학식 6]에서 알 수 있는 바와 같이 본 발명의 실시 예에 따른 빅인티저는 종래 공개키 소수로 사용되던 상기 [수학식 2 에서 4까지]에서 이용되는 빅인티저들과는 달리 모든 기본 연산 단위 비트수(n)의 배수(an=n,2n,3n,4n,...) 길이를 갖는 소수에 대한 고속 나머지 연산이 가능하다.
상기 n은 프로세서의 기본 연산단위 비트 수, 예컨대 16 비트 또는 32비트이며, a는 m을 저장하기 위한 총 워드수와 동일한 값이다. 즉으로 표현할 수 있으며, 이때 a, b 및 c는 b < n 및 an > b + cn, a > 0, b ≥0, c ≥0을 만족한다.
도 2는 상기 빅인티저 젯수(m)의 워드 구조를 도시한 것이다. 상기 도 2를 참조하여 빅인티저 피젯수(d)의 나머지 값을 레지스터(r)에 복사 후, r < m이 될 때까지 레지스터(r) 값이 0이 아닌 최고워드()를 상위워드부터 하위워드까지 순서대로 제거해 나가면 더하기와 쉬프트 연산만으로 나머지(r)를 얻을 수 있게 되는 것이다.
이때 프로세서의 기본 연산단위인 비트수(n 비트)를 갖는 워드를 사용하여 빅인티저 피젯수가 복사된 레지스터(r)를 하기의 [수학식 7]에서와 같이 표현할 수 있다.
상기 [수학식 7]의 최고워드()를 제거하려면 하기 [수학식 8]에서와 같이 빅인티저 젯수(m)에를 곱하여 빅인티저 피젯수가 복사된 레지스터(r)에서 감산하면 된다.
이때, 상기 [수학식 6] 및 [수학식 7]을 사용하여 상기 [수학식 8]을 워드단위로 분해하여 표현하면, 도 3에 도시된 바와 같은 각 레지스터의 워드 값으로 표현할 수 있으며, 하기 [수학식 9]와 같이 표현할 수 있다.
상기 [수학식 9]에서 최고워드()는 자동으로 사라지기 때문에 실제 연산이 수행되지 않는다. 상기 [수학식 9]의 우변은 상기 도 3의 모든 워드(200에서 206까지)의 의 합과 동일하다. 상기 [수학식 9]의 우변의 두 번째 항을 분해하면, 하기 [수학식 10]에서와 같이 표현할 수 있는데,
상기 [수학식 10]의 좌변는 쉬프트 연산을 유발하며위치의 상기 도 3의 워드(203)에 최고워드()를 b값만큼 왼쪽으로 쉬프트한 결과인값만이 워드(203)에 남게 되고, 최고워드()를 b값만큼 오른쪽으로 쉬프트한 결과값이위치의 상위워드(204)로 더해지게 된다. 이때, 상기은 도 4의 S302 단계에서 정의되어 있으며, 상기은 도 5의 S402 단계에서 정의되어 있다. 상기 쉬프트 결과들은 도 3의 워드들(203 및 204)에 각각 반영한다.
도 4 및 도 5는 본 발명의 실시예에 따른 워드단위의 쉬프트연산 처리 흐름도들이다.
구체적으로 도 4는 좌측 쉬프트 연산 처리를 위한 흐름도이며, 도 5는 우측 쉬프트 연산처리를 위한 흐름도이다. 도 4에서 워드 x와 n을 입력하고(S300), x를 n비트만큼 왼쪽으로 쉬프트하며, 쉬프트시 오른쪽 공백비트에는 0을 채우는 단계를 진행하고(S301), 그 결과를 워드함수인에 저장한다(S302). 한편, 도 5에서, 워드 x와 n을 입력하고(S400), x를 n비트만큼 오른쪽으로 쉬프트하며, 쉬프트시 왼쪽 공백비트에는 0을 채우는 단계를 진행하고(S401), 그 결과를 워드함수인에 저장한다(S402).
한편, 캐리(c)값은 상기 도 3의 워드(201) 계산에서 발생하기 시작하여 워드들(202에서 206까지)에 전파되며, 이들 중 워드(203 및 204)의에 대한 각각의 가산과정에서도 캐리(c)값이 발생하여 상위워드로 전파된다. 이때, 상기 가산 연산 방법은 도 6 및 도 7의 데이터 처리 과정을 거쳐 정의된 가산 연산 함수인 S(x,y,z,c)를 사용하게 된다.
도 6은 본 발명의 실시예에서 워드단위의 덧셈연산 결과를 더블워드에 저장할 때 발생하는 캐리와 덧셈 결과에 대한 도면이며, 도 7은 본 발명의 실시예에서 워드단위의 덧셈연산을 하는 경우 발생하는 캐리와 덧셈 결과를 산출하기 위한 흐름도이다. 구체적으로, 워드 x와 y를 입력하고(S600), 이를 합산하여 더블워드(도 6의 500, 501)에 저장하며(S601), 상기 발생된 캐리(c)값은 더블워드의 상위워드(500)에 기록되도록 하며(S602), 하위워드(501)에는 상기 캐리(c)값을 제외한 덧셈 결과(z) 값이 기록되게 한다(S603). 상기 방법을 사용하면 한번의 연산만으로 추가 연산 없이 현재 워드에 저장될 값과 상위워드에 가산될 캐리값들을 쉽게 얻을 수 있다. 이때 전산기의 운영 체제에 따라 본 발명에서 기술하는 상위워드가 메모리의 상위주소에 위치할 수도 있고 메모리의 하위주소에 위치할 수도 있다.
상기 도 3의 과정에서 하위워드(201)에서 상위워드(206)으로 캐리(c)값의 전파가 수행되며, 워드(200) 위치의 워드들은 변화가 없기 때문에 다른 계산을 수행할 필요가 없다.
도 8은 상기 도 4 및 5에 도시하여 정의된 쉬프트 함수과 도 6 및 7에 도시하여 정의된 가산 연산 함수 S(x,y,z,c)를 이용하여 상기 도 3의 전체계산을 수행하는 데이터 처리 흐름을 도시한 것이다.
먼저, 상기 단말기의 마이크로 프로세서는 나머지 연산이 요구되는 빅인티저 피젯수(d)와 빅인티저 젯수(m)을 입력받는다(S700 단계). 이어서, 프로세서는 상기 나머지 연산이 요구된 빅인티저 피젯수(d)를 나머지 값 저장인자인 빅인티저 레지스터(r)에 복사시킨다(S701 단계).
그런 후, 프로세서는 빅인티저 피젯수(d) 즉, 빅인티저 피젯수가 복사된 레지스터(r)와 빅인티저 젯수(m)의 크기를 상호 비교한다(S702 단계).
이때, 만일 상기 빅인티저 피젯수가 복사된 레지스터(r) 값이 빅인티저 젯수(m) 값보다 작은 경우 프로세서는 상기 빅인티저 피젯수가 복사된 레지스터(r)값을 그대로 나머지 값으로 출력시킨다(S703 단계).
그러나, 이와 달리 상기 빅인티저 피젯수가 복사된 레지스터(r)값이 빅인티저 젯수(m)값보다 큰 경우에 프로세서는 r=(rk...r1r0)의 0이 아닌 최고워드()를 검색한다(S704 단계).
이어서, 프로세서는를 가산한 결과를 상기 도 3의 201의 워드에 저장하고 다시 상위워드로 전파될 캐리(c)값을 계산한다(S705 단계).
그리고, 프로세서는 워드()와 전파된 캐리(c)값을 가산한 결과를 상기 도 3의 워드(202)에 저장하고 다시 상위워드로 전파될 캐리(c)값을 계산한다(S706 단계). 상기 계산은 상기 도 3에서 도시된 바와 같이 워드(202)의 하위워드에서 상위워드로 수행된다.
계속하여, 프로세서는 최고워드()를 b값만큼 왼쪽으로 쉬프트한 결과값과 전파된 캐리(c)값을 가산하여 상기 도 3의 워드 (203)에 가산될 캐리(c)를 계산한다(S707 단계) .
이어서, 프로세서는와 상기 S707 단계에서 계산된 캐리(c)를 가산한 결과를 상기 도 3의 203의 워드에 저장하고 다시 상위워드로 전파될 캐리(c)값을 계산한다(S708 단계).
이어 프로세서는 최고워드()를 b값만큼 오른쪽으로 쉬프트한 결과값과 전파된 캐리(c)값을 가산하여 상기 도 3의 204의 워드에 가산될 캐리(c)값을 계산한다(S709 단계).
그리고, 프로세서는과 상기 S709 단계에서 계산된 캐리(c)값을 가산한 결과를 상기 도 3의 204의 워드에 저장하고 다시 상위워드로 전파될 캐리(c)값을 계산한다(S710 단계) .
이어서, 프로세서는 워드()와 전파된 캐리(c)값을 가산한 결과를 상기 도 3의 워드(205)에 저장하고 다시 상위워드로 전파될 캐리(c)값을 계산한다(S711 단계). 이때, 상기 계산은 워드(205)의 하위워드에서 상위워드로 수행된다.
이후, 프로세서는 상기 전파된 캐리(c)값을 상기 도 3의 워드(206)에 저장시킨 후, 다시 상기 S702 단계로 피드백하여 최고차 워드가 제거된 빅인티저 피젯수가 복사된 레지스터(r)와 빅인티저 젯수(m)를 상호 비교하여 r값이 여전히 m값보다 큰 경우에는 다시 상기 S704에서 S712까지의 각각의 단계를 순차적으로 반복 수행하면서 빅인티저 피젯수가 복사된 레지스터(r)에 대한 최고차 워드를 제거하는 동작을 반복 수행하게 된다(S712 단계).
따라서, 한 번의 연산만으로 추가 연산 없이 현재 워드에 저장될 값과 상위워드에 가산될 캐리를 쉽게 얻을 수 있고 더하기와 쉬프트 연산만으로 종래 나머지 연산 시 필수적으로 수행하여야 하는 사칙연산을 수행하지 않아도 되어 고속의 나머지 연산을 실현할 수 있게 된다.
이상에서 본 발명의 최적의 실시 예들이 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위해 사용된 것이 아니다.
상기와 같이 구성된 본 발명은, 빅인티저에 대한 나머지 연산에 있어서 프로세서 비트 수 n의 배수에 해당하는 특정 형태의 빅인티저를 젯수로 사용하면 더하기와 쉬프트 연산만으로 고속의 나머지 연산을 수행할 수 있는 이점이 있다. 무선인터넷 환경에서 사용되는 타원곡선 암호 알고리즘의 모든 연산에서 발생하는 결과는 지정된 소수로 나눈 나머지로 변환되어 사용된다. 이 타원곡선 암호 알고리즘에도 본 발명에서 제시한 상기의 프로세서 비트 수 n의 배수에 해당하는 특정 형태의 빅인티저를 소수로 사용하면 고속의 암호화 복호화를 구현할 수 있다.

Claims (3)

  1. 서버와 단말기간 암호화되어 전송되는 보안문서의 신속한 암/복호화를 공개키 기반의 암/복호화 시스템을 위한 특정 빅인티저에 대한 고속 나머지 연산방법에 있어서,
    (a)빅인티저 피젯수(d)의 나머지 값을 저장하는 빅인티저 레지스터(r)에 복사하는 단계;
    (b)상기 빅인티저 피젯수가 복사된 레지스터(r)과 빅인티저 젯수(m)의 크기를 비교하는 단계;
    (c)상기 빅인티지 젯수(m)가 빅인티저 피젯수가 복사된 레지스터(r)값보다 큰 경우에는 빅인티저 피젯수가 복사된 레지스터(r)에서 0이 아닌 최고워드()를 검색하는 단계;
    (d)상기 최고워드()와 해당워드 값을 가산하여 새로운 해당워드 값과 상위워드로 전파될 캐리(c)값을 산출하는 단계(도 3의 201 참조);
    (e)상기 최고워드()를 좌측으로 b값만큼 쉬프트 시킨값에 해당워드 값과 상기 캐리(c)값을 가산하여 새로운 해당워드 값과 캐리(c)값을 산출하는 단계;
    (f)상기 최고워드()를 우측으로 b값만큼 쉬프트 시킨값에 해당워드 값과 상기 캐리(c)값을 가산하여 새로운 해당워드 값과 상위워드로 가산될캐리(c)값을 산출하는 단계;
    (g)상기 산출된 캐리 값들을 상위 워드들에 계속적으로 가산하여 해당워드의 값과 상위워드로 전파될 캐리(c)값을 계속해서 산출하고 상기 최종 빅인티저 레지스터(r)를 산출하는 단계;
    (h)상기 빅인티저 레지스터(r)을 빅인티지 젯수(m) 값을 상호 비교하여 레지스터(r)값이 작으면 상기 r값을 상기 m값에 대한 나머지 값으로 출력시키는 단계; 및
    (i)상기 빅인티저 레지스터(r)이 빅인티저 젯수(m)보다 크면 다시 상기 (a) 단계에서 (h)단계까지 순차로 반복 수행하는 단계;를 포함하여 진행하는 것을 특징으로 하는 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속 나머지 연산 방법.
  2. 제1항에 있어서,
    상기 최고워드()는, 하기의 수학식에서와 같이 계산되어지는 것을 특징으로 하는 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속 나머지 연산 방법.
    [수학식 9]
  3. 제1항에 있어서,
    상기 빅인티저 젯수(m)은, 하기의 수학식에서와 같이 프로세서의 비트수(n)의 배수인 소수로 설정되는 것을 특징으로 하는 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속 나머지 연산 방법.
    [수학식 6]
    상기 a는 m을 저장하기 위한 총 워드수와 동일하며, a > 0을 만족하고, b와 c는 b<n 및 an > b+cn의 조건과 b ≥0, c ≥0의 조건을 각각 만족한다.
KR10-2001-0060584A 2001-09-28 2001-09-28 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법 KR100400198B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2001-0060584A KR100400198B1 (ko) 2001-09-28 2001-09-28 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법
PCT/KR2002/000672 WO2003036864A1 (en) 2001-09-28 2002-04-12 High speed operating remainder of a specific big integer for the public key cryptosystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0060584A KR100400198B1 (ko) 2001-09-28 2001-09-28 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법

Publications (2)

Publication Number Publication Date
KR20030027397A KR20030027397A (ko) 2003-04-07
KR100400198B1 true KR100400198B1 (ko) 2003-10-01

Family

ID=19714802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0060584A KR100400198B1 (ko) 2001-09-28 2001-09-28 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법

Country Status (2)

Country Link
KR (1) KR100400198B1 (ko)
WO (1) WO2003036864A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100451570B1 (ko) * 2002-10-29 2004-10-08 (주)미래스멕스 에스피에이에 견디는 타원 곡선 암호화 알고리즘을구현하는 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658094A (en) * 1985-03-28 1987-04-14 Itt Corporation Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer
US5261001A (en) * 1991-03-04 1993-11-09 Fortress U&T (2000) Ltd Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
US5274707A (en) * 1991-12-06 1993-12-28 Roger Schlafly Modular exponentiation and reduction device and method
US6263081B1 (en) * 1997-07-17 2001-07-17 Matsushita Electric Industrial Co., Ltd. Elliptic curve calculation apparatus capable of calculating multiples at high speed

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658094A (en) * 1985-03-28 1987-04-14 Itt Corporation Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer
US5261001A (en) * 1991-03-04 1993-11-09 Fortress U&T (2000) Ltd Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
US5274707A (en) * 1991-12-06 1993-12-28 Roger Schlafly Modular exponentiation and reduction device and method
US6263081B1 (en) * 1997-07-17 2001-07-17 Matsushita Electric Industrial Co., Ltd. Elliptic curve calculation apparatus capable of calculating multiples at high speed

Also Published As

Publication number Publication date
WO2003036864A1 (en) 2003-05-01
KR20030027397A (ko) 2003-04-07

Similar Documents

Publication Publication Date Title
JP3862500B2 (ja) 直接埋め込み方式による高速楕円曲線暗号化の方法と装置
Galbraith Elliptic curve Paillier schemes
US20080044013A1 (en) Koblitz Exponentiation with Bucketing
US20130236012A1 (en) Public Key Cryptographic Methods and Systems
EP0872795A1 (en) High speed modular exponentiator
US20070230692A1 (en) Key generating apparatus, program, and method
CN101005350B (zh) 加密处理设备和加密处理方法
US20210036849A1 (en) Methods and systems for encryption and homomorphic encryption systems using geometric algebra and hensel codes
EP2742644B1 (en) Encryption and decryption method
KR101233682B1 (ko) 타원곡선암호를 위한 연산 장치 및 방법
Dawahdeh et al. A new modification for menezes-vanstone elliptic curve cryptosystem
US8509426B1 (en) XZ-elliptic curve cryptography system and method
US20100329447A1 (en) Encryption apparatus, decryption apparatus, key generation apparatus, and program
JP3794266B2 (ja) 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体
US20070053506A1 (en) Elliptic curve encryption processor, processing method of the processor using elliptic curves, and program for causing a computer to execute point scalar multiplication on elliptic curves
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
US20160072622A1 (en) Method and apparatus for scalar multiplication secure against differential power attacks
Wu et al. On the improvement of wiener attack on rsa with small private exponent
US20060251248A1 (en) Public key cryptographic methods and systems with preprocessing
KR100400198B1 (ko) 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법
Nedjah et al. Efficient parallel modular exponentiation algorithm
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP4193176B2 (ja) 楕円曲線整数倍演算装置、ならびにその装置を利用可能な鍵生成装置、暗号化装置および復号装置

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: 20110919

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20120919

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee