KR20070049823A - 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법 - Google Patents

전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법 Download PDF

Info

Publication number
KR20070049823A
KR20070049823A KR1020050107018A KR20050107018A KR20070049823A KR 20070049823 A KR20070049823 A KR 20070049823A KR 1020050107018 A KR1020050107018 A KR 1020050107018A KR 20050107018 A KR20050107018 A KR 20050107018A KR 20070049823 A KR20070049823 A KR 20070049823A
Authority
KR
South Korea
Prior art keywords
value
variable
additional
msb
binary
Prior art date
Application number
KR1020050107018A
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 KR1020050107018A priority Critical patent/KR20070049823A/ko
Publication of KR20070049823A publication Critical patent/KR20070049823A/ko

Links

Images

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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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

Landscapes

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

Abstract

전력공격에 안전한 모듈라 지수승(Exponentiation) 연산방법 및 상수배(Scalar Multiplication) 곱셈 연산방법을 개시한다. 상기 모듈라 지수승 연산방법 및 상수배 곱셈 연산방법은, 부가변수 선택단계, 부가연산 설정단계 및 상수배 곱셈 연산단계를 구비한다. 상기 모듈라 지수승 연산방법 및 상기 상수배 곱셈 연산방법은, 임의의 부가변수 및 상기 부가변수를 이용하여 생성시킨 부가연산 식을 연산단계에 포함시킴으로서, 연산을 수행하는 과정 중에 레지스터에 저장되는 값을 해커가 분석하지 못하도록 하는 것이다.
모듈라 지수승 연산, 상수배 곱셈 연산, 부가변수, 부가연산 식

Description

전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈 연산방법{Operation Methods for Modular Exponentiation and Scalar Multiplication stable for Power Attack}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1a는 모듈라 지수승 연산을 수행하는 종래의 방법(100A)을 설명하는 신호 흐름도(Flowchart)이다.
도 1b는 도 1a에 도시된 방법으로 실제연산이 수행되는 과정(100B)을 도시한다.
도 2a는 상수배 곱셈 연산을 수행하는 종래의 방법(200A)을 설명하는 신호 흐름도(Flowchart)이다.
도 2b는 도 1a에 도시된 방법으로 실제연산이 수행되는 과정(200B)을 도시한다.
도 3은 본 발명에 따른 모듈라 지수승 연산 방법에 대한 제1 실시예이다.
도 4는 본 발명에 따른 모듈라 지수승 연산 방법에 대한 제2 실시예이다.
도 5는 본 발명에 따른 상수배 곱셈 연산 방법에 대한 제1 실시예이다.
도 6은 본 발명에 따른 상수배 곱셈 연산 방법에 대한 제2 실시예이다.
도 7은 도 3에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
도 8은 도 4에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
도 9는 도 5에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
도 10은 도 6에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
본 발명은 암호시스템(Cryptographic System)에 관한 것으로서, 특히, 전력공격(Power Attack)에 안전한 지수승(Exponentiation) 연산방법 및 상수배(Scalar Multiplication) 곱셈 연산방법에 관한 것이다.
정보화 사회의 도래와 함께 암호 알고리즘 및 암호 프로토콜(Protocol)을 이용한 정보의 보호는 그 중요성을 더해가고 있다. 이러한 암호 알고리즘 중에서 RSA(Rivest Shamir Adleman) 암호시스템 및 타원곡선암호시스템(Elliptic Curve Cryptography, 이하 ECC)에서 사용하는 공개키 암호 알고리즘은, 비밀키 암호 알고리즘의 단점인 키(Key) 분배 문제, 전자서명 문제 등을 해결하면서 인터넷이나 금융 망과 같은 여러 분야의 응용에 빠르게 적용이 되어 가고 있다. ECC 및 RSA 암호 시스템은 다음과 같은 과정으로 암호화/복호화, 전자 서명의 생성/검증이 이루어진다.
먼저 RSA 암호시스템에 대하여 설명한다.
먼저 암호화 통신을 원하는 갑은 큰 두 소수 p와 q를 생성하고, 상기 두 소수를 이용하여 N(=p×q) 및 φ(n){=(p-1)×(q-1)}을 계산한다. 여기서 소수라 함은, 2, 3, 5, 7, 13, 17 및 101과 같이, 자신과 1로만 나누어지는 수를 말한다. 또한 상기 φ(n)과 서로 소(Relatively Prime)인 정수 e를 선택하고 수학식 1을 만족시키는 정수 d를 생성시킨다. 여기서 서로 소는, 공약수가 "1" 하나 뿐인 두 자연수 사이의 관계를 말하는 것이다. 예를 들면, 8과 9는 서로 소 관계에 있는데, 8의 약수가 1, 2, 4, 및 8이고 9의 약수가 1, 3 및 9이기 때문에 8과 9는 공약수가 "1" 하나 뿐이다.
ed=1 mod φ(n)
수학식 1은, ed를 φ(n)으로 나눈 나머지가 1(one)이 됨을 의미하는 모듈라 방정식(Modular Equation)이다.
이어서, 갑은 N과 e를 자신의 공개키로 공개하고, p, q 및 d를 자신의 비밀키로 안전하게 저장한다. 갑에게 메시지 m을 비밀리에 전송하고자 하는 을은, 갑의 공개키 (N, e)를 이용하여 수학식 2와 같이 주어지는 모듈라 지수승(Modular Exponentiation) 연산을 수행한 결과인 암호문 C를 갑에게 전송한다.
Figure 112005064472585-PAT00001
C = mod N
암호문 C를 을로부터 전송 받은 갑은, 자신의 비밀키 d를 이용하여 수학식 3과 같은 모듈라 지수승 연산을 수행하여 원래의 메시지 m을 복구한다.
Figure 112005064472585-PAT00002
m = mod N
따라서, RSA 공개키 암호시스템에서 가장 중요한 연산은
Figure 112005064472585-PAT00003
mod N 또는
Figure 112005064472585-PAT00004
mod N을 계산하는 모듈라 지수승 연산이다.
ECC에서는, 임의의 타원곡선(Elliptic Curve) E와 상기 E상의 한 점 P가 시스템 파라미터로서 선택된다. 이제 암호화 통신을 원하는 갑은 무작위(Random)로 정수 d를 생성시키고, 상기 정수 d와 상기 P를 곱하여 Q(=d×P)를 생성시킨다. 갑은 상기 Q를 공개키로 공개하고, d를 갑의 비밀키로 안전하게 저장한다.
반대로 갑에게 메시지 M을 비밀리에 전송하고자 하는 을은, 먼저 무작위로 정수 k를 생성시키고, 시스템 파라미터 중의 하나인 P와 상기 정수 k를 곱하여 A(=k×P)를 생성시킨다. 갑이 제공한 공개키 Q와 보내고자 하는 메시지 M을 사용하여 B(= M + kQ)를 생성시킨다. 마지막으로 을은 최종 결과 암호문(A,B)을 갑에게 전송한다.
암호문(A,B)을 을로부터 전달받은 값은 자신의 비밀키 d를 사용하여 dA를 계산한 후, 수학식 4와 같은 연산을 수행하여 메시지 M을 복원한다.
M = B - dA
따라서, ECC 공개키 암호시스템에서 가장 중요한 연산은 타원곡선 상의 임의의 점 P와 어떤 정수 d의 곱인 d×P를 계산하는 상수배 곱셈 연산이다.
그러나 상술한 모듈라 지수승 연산과 상수배 곱셈 연산은 전력공격에 취약함이 알려져 있다.
전력공격이란 어떤 암호연산을 수행하는 도중에 노출이 되는 소모 전력 정보를 이용해서 암호시스템 내부의 비밀키 정보를 추출해 내는 공격방법으로, 코쳐(Kocher) 등이 처음 제안하였다. 전력공격방법에는 단순전력공격(Simple Power Analysis) 및 차분전력공격(Differential Power Analysis)이 있다. 전력공격은 기본원리는 암호시스템이 소모하는 전력과 내부 레지스터(Register)의 상태는 서로 연관이 되어 있다는 사실에 근거한다. 따라서, 연산을 수행하는 동안의 전력의 변화 및 이 때 레지스터에 저장되는 데이터를 분석함으로써 비밀키를 알아낼 수 있게 된다.
이러한 전력공격에 대해서 안전하게 수행할 수 있는 모듈라 지수승 연산방법과 상수배 곱셈 연산방법이 요구된다.
본 발명이 이루고자 하는 기술적 과제는, RSA 암호시스템에 적용이 가능하고 전력공격에 안전한 모듈라 지수승 연산방법을 제공하는데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, ECC에 적용이 가능하고 전력공격에 안전한 상수배 곱셈 연산방법을 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시 예에 따른 모듈라 지수승 연산방법은, 부가변수 선택단계, 부가연산 설정단계 및 모듈라 지수승 연산단계를 구비한다. 상기 모듈라 지수승 연산방법은, 전송하고자 하는 메시지 m, 임의의 큰 두 개의 소수 p 및 q를 이용하여 생성시킨 N(=p×q) 및 φ(N){=(p-1)×(q-1)}, 상기 φ(N)와 서로 소(Relatively Prime) 관계에 있는 e, ed = 1 mod φ(N)의 관계가 있는 d를 이용하여 S =
Figure 112005064472585-PAT00005
mod N 을 만족하는 S를 연산하는데 사용되며, 상기 부가변수 선택단계는, 상기 N과 서로 소인 임의의 부가변수 r을 선택한다. 상기 부가연산 설정단계는, 상기 부가변수를 이용하여 복수 개의 부가연산 식들을 설정한다. 상기 모듈라 지수승 연산단계는, 상기 φ(N), 상기 d 및 상기 부가연산 식을 이용하여 모듈라 지수승 연산을 수행한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 일 실시 예에 따른 모듈라 지수승 연산방법은, 부가변수 선택단계, 부가연산 설정단계 및 모듈라 지수승 연산단계를 구비한다. 상기 모듈라 지수승 연산방법은, 전송하고자 하는 메시지 m, 임의의 큰 두 개의 소수 p 및 q를 이용하여 생성시킨 N(=p×q) 및 φ(N)+1 {=(p-1)×(q-1)+1}, 상기 φ(N)+1과 서로 소(Relatively Prime) 관계에 있는 e, ed = 1 mod φ(N)+1의 관계가 있는 d를 이용하여 S =
Figure 112005064472585-PAT00006
mod N 을 만족하는 S를 연산하는데 사용되며, 상기 부가변수 선택단계는, 상기 N과 서로 소인 임의의 부가변수 r을 선택한다. 상기 부가연산 설정단계는, 상기 부가변수를 이용하여 복수 개의 부가연 산 식들을 설정한다. 상기 모듀라 지수승 연산단계는, 상기 φ(N)+1, 상기 d 및 상기 부가연산 식을 이용하여 모듈라 지수승 연산을 수행한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명에 일 실시 예에 따른 상수배 곱셈 연산방법은, 부가변수 선택단계, 부가연산 설정단계 및 상수배 곱셈 연산단계를 구비한다. 상기 상수배 곱셈 연산방법은, 상기 타원곡선에 대한 정보를 가진 E, 상기 타원곡선 E 상의 임의의 한 점 P, 임의의 상수 d, 타원곡선에 포함된 임의의 점의 개수를 의미하는 #E를 이용하여 S=dP를 만족하는 상수배 곱셈 연산을 수행하는데 사용되며, 상기 부가변수 선택단계는, 상기 타원곡선 E 상의 임의의 다른 한 점 R을 부가변수로 선택한다. 상기 부가연산 설정단계는, 상기 부가변수를 이용하여 복수 개의 부가연산 식들을 설정한다. 상기 상수배 곱셈 연산단계는, 상기 #E, 상기 d 및 상기 부가연산 식을 이용하여 상수배 곱셈 연산을 수행한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 다른 일 실시 예에 따른 상수배 곱셈 연산방법은, 부가변수 선택단계, 부가연산 설정단계 및 상수배 곱셈 연산단계를 구비한다. 상기 상수배 곱셈 연산방법은, 타원곡선에 대한 정보를 가진 E, 상기 타원곡선 E 상의 임의의 한 점 P, 임의의 상수 d, 타원곡선에 포함된 임의의 점의 개수를 의미하는 #E에 1을 더한 #E+1을 이용하여 S=dP를 만족하는 상수배 곱셈 연산을 수행하는데 사용되며, 상기 부가변수 선택단계는, 상기 타원곡선 E 상의 임의의 다른 한 점 R을 부가변수로 선택한다. 상기 부가연산 설정단계는, 상기 부가변수를 이용하여 복수 개의 부가연산 식들을 설정한다. 상기 상수배 곱셈 연산단계는, 상기 #E+1, 상기 d 및 상기 부가연산 식을 이용하여 상수배 곱셈 연산을 수행한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
먼저 모듈라 지수승 연산 및 상수배 곱셈 연산을 수행하는 종래의 방법을 설명하고, 이들이 전력공격에 약점이 있는 점을 보다 분명하게 지적한다. 이어서 본 발명에서 제안하는 방법이 어떻게 종래의 발명과 구별되게 전력공격을 방어하는 가를 설명할 것이다.
도 1a는 모듈라 지수승 연산을 수행하는 종래의 방법(100A)을 설명하는 신호 흐름도(Flowchart)이다.
도 1b는 도 1a에 도시된 방법으로 실제연산이 수행되는 과정(100B)을 도시한다.
설명의 편의를 위하여 정수 d의 값을 13으로 가정한다.
13을 2진수로 표현하면, 1101
Figure 112005064472585-PAT00007
이 되므로,
Figure 112005064472585-PAT00008
은 1,
Figure 112005064472585-PAT00009
는 1,
Figure 112005064472585-PAT00010
은 0 및
Figure 112005064472585-PAT00011
는 1이 된다.
먼저 구하고자 하는 값 S의 초기 값으로 1(one)을 레지스터(Register)에 저 장(120)한다.
변수 i가 3인 경우, 먼저
Figure 112005064472585-PAT00012
의 연산을 수행(150)하면, S가 1이므로 N의 값에 관계없이 S는 1이 된다.
Figure 112005064472585-PAT00013
는 1로서 조건(160)을 만족(yes)하므로
Figure 112005064472585-PAT00014
의 연산을 수행(170)하여 구한 m을 S 값으로 저장한다.
변수 i가 2인 경우,
Figure 112005064472585-PAT00015
의 연산을 수행(150)하면 S가
Figure 112005064472585-PAT00016
이 되며,
Figure 112005064472585-PAT00017
는 1로서 조건(160)을 만족(yes)하므로
Figure 112005064472585-PAT00018
의 연산을 수행(170)하여 구한
Figure 112005064472585-PAT00019
을 S 값으로 저장한다.
변수 i가 1인 경우,
Figure 112005064472585-PAT00020
의 연산을 수행(150)하면 S가
Figure 112005064472585-PAT00021
이 되며,
Figure 112005064472585-PAT00022
는 0으로서 조건(160)을 만족하지 못하기(No) 때문에 S에는
Figure 112005064472585-PAT00023
이 그대로 저장된다.
변수 i가 0인 경우,
Figure 112005064472585-PAT00024
의 연산을 수행(150)하면 S가
Figure 112005064472585-PAT00025
이 되며,
Figure 112005064472585-PAT00026
는 1로서 조건문(160)을 만족(yes)하므로
Figure 112005064472585-PAT00027
의 연산을 수행(170)하여 구한
Figure 112005064472585-PAT00028
을 S 값으로 저장한다.
변수 i가 0 보다 작다고 판단되면(140), 비로소 모든 연산이 끝나게 된다.
도 1b를 참조하면, 레지스터에 저장되는 S 값은 전부 m과 직접 관련된다. 따라서, 도 1a에 도시된 방법을 이용한 모듈라 지수승 연산은, 해커가 레지스터(Register)에 상기 S 값이 저장되는 순간 및 이때의 소비전력을 파악하는 경우, 비밀키 d의 값을 유추하기가 용이하게 되는 단점을 가지고 있다.
도 2a는 상수배 곱셈 연산을 수행하는 종래의 방법(200A)을 설명하는 신호 흐름도(Flowchart)이다.
도 2b는 도 1a에 도시된 방법을 실제로 적용하였을 때 연산이 수행되는 과정(200B)을 도시한다.
앞에서 설명한 묘듈라 지수승 연산방법을 설명할 때와 마찬가지로, 정수 d의 값을 13으로 가정한다.
먼저 구하고자 하는 값 S의 초기 값으로 0을 레지스터에 저장(220)한다.
변수 i가 3인 경우, 2S를 연산(250)하면 S가 0이 되며,
Figure 112005064472585-PAT00029
의 값이 1로서 조건(260)을 만족(yes)하므로 S+P를 연산(270)한 값 P를 S에 저장한다.
변수 i가 2인 경우, 2S를 연산(250)하면 S가 2P가 되며,
Figure 112005064472585-PAT00030
의 값이 1로서 조건(260)을 만족(yes)하므로 S+P를 연산(270)한 값 3P를 S에 저장한다.
변수 i가 1인 경우, 2S를 연산(250)하면 S가 6P가 되며,
Figure 112005064472585-PAT00031
의 값이 0으로서 조건(260)을 만족하지 못하므로(No) 6P를 S에 저장한다.
변수 i가 0인 경우, 2S를 연산(250)하면 S가 12P가 되며,
Figure 112005064472585-PAT00032
의 값이 1로서 조건(260)을 만족(yes)하므로 S+P를 연산한 값 13P를 S에 저장한다.
변수 i가 0 보다 작다고 판단되면(240), 비로소 모든 연산이 끝나게 된다.
도 2b를 참조하면, 레지스터에 저장되는 S 값은 전부 P와 직접 관련된다. 따라서, 도 2a에 도시된 방법을 이용한 상수배 곱셈 연산은, 해커가 레지스터에 상기 S 값이 저장되는 순간 및 이때의 소비전력을 파악하는 경우, 비밀키 d의 값을 유추 하기가 용이하게 되는 단점을 가지고 있다.
본 발명에서는, 상기 m 및 상기 P 뿐만 아니라, 일정한 조건 하에서 임의로 정수를 선택하고 이를 상기 m과 상기 P를 연산하는 과정에 포함시킴으로서, 침입자가 고려하여야 하는 경우의 수를 무한정으로 확장시키는 것이다. 다시 말하면, m, P 및 상기 선택된 임의의 정수를 이용하여 생성시킨 값은, m 및 P만을 이용하여 생성시킨 값에 비하여 새로운 수가 하나 씩 더 포함되었기 때문에, 저장되는 값 및 이때의 소비전력을 알게 된다고 하더라도 비밀키를 용이하게 알아낼 수 없도록 한다.
도 3은 본 발명에 따른 모듈라 지수승 연산 방법에 대한 제1 실시예이다.
도 3을 참조하면, 상기 모듈라 지수승 연산 방법(300)은, 초기 값 및 부가변수 선택단계(310), 부가연산 설정단계(320) 및 모듈라 지수승 연산단계(330 내지 380)를 구비한다.
초기 값 및 부가변수 선택단계(310)에서는, 전송하고자 하는 메시지 m, 임의의 큰 두 개의 소수 p 및 q를 이용하여 생성시킨 N(=p×q) 및 φ(N){=(p-1)×(q-1)}, 상기 φ(N)
Figure 112005064472585-PAT00033
과 서로 소(Relatively Prime) 관계에 있는 e, ed = 1 mod φ(N)의 관계가 있는 d
Figure 112005064472585-PAT00034
및 상기 N과 서로 소인 임의의 부가변수 r을 선택한다.
부가연산 설정단계(320)는, 상기 부가변수 r을 이용하여 수학식 5에 표시된 복수 개의 부가연산 식들을 설정한다.
t(0) = r mod N,
t(1) =
Figure 112005064472585-PAT00035
mod N,
t(2) = m×r mod N,
t(3) = m×
Figure 112005064472585-PAT00036
mod N
모듈라 지수승 연산단계(330 내지 380)는, 변수설정단계(330), 제1 연산 및 저장단계(340), 변수변경단계(350), 변수비교단계(360), 제2 연산 및 저장단계(370) 및 제3 연산 및 저장단계(380)를 구비한다.
변수설정단계(330)는, 상기 정수 d를 2진수로 표현하였을 때의 총 비트 수(n-1)를 변수 i의 최대 값으로 설정한다.
제1 연산 및 저장단계(340)는, 정수 d의 MSB(Most Significant Bit)
Figure 112005064472585-PAT00037
의 값이 0(zero)일 때는 S 레지스터에 1을 저장하고, 1(one)일 때는 메시지 m을 상기 S 레지스터에 저장한다.
변수변경단계(350)는, d의 MSB에서부터 LSB(Least Significant Bit)까지의 모든 경우의 연산을 수행시키기 위하여, 변수 i의 값을 하나씩 감소시킨다.
변수비교단계(360)는, d의 모든 비트에 대하여 연산을 수행하도록 하기 위하여 변수 i의 값이 0보다 작은가를 비교한다.
제2 연산 및 저장단계(370)는, 변수 i의 값이 0보다 큰 경우에는 레지스터 S 에 저장된 값을 제곱하는 연산(S =
Figure 112005064472585-PAT00038
mod N)을 수행하고, 그 결과 값을 부가연산 설정단계(320)에서 설정된 해당 부가연산 식(t(2×
Figure 112005064472585-PAT00039
+
Figure 112005064472585-PAT00040
))의 값을 곱하는 연산(S=S×t(2×
Figure 112005064472585-PAT00041
+
Figure 112005064472585-PAT00042
) mod N)을 수행하고 그 결과를 레지스터 S에 저장한다.
제3 연산 및 저장단계(380)는, 변수 i의 값이 0보다 작은 경우 레지스터 S에 저장된 값에 부가연산 식(t(0))의 값을 곱하는 연산(S×t(0))을 하여 레지스터에 최종 값으로 저장한다.
도면에는 변수 i가 MSB로부터 LSB로 변경시켜 가면서, 연산을 수행하는 것으로 도시되어 있으나, 이와는 반대로 LSB로부터 MSB로 변경시켜 가면서 연산을 수행하는 것도 가능하며 이는 당업자라면 도 3을 통하여 쉽게 발명할 수 있다.
도 7은 도 3에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
도 3에 도시된 연산방법에 대하여 도 7에 도시된 테이블과 함께 설명한다.
설명의 편의를 위하여 d를 13 이라고 가정하고, 이를 2진수로 표현하면 1101
Figure 112005064472585-PAT00043
이 되므로,
Figure 112005064472585-PAT00044
은 1,
Figure 112005064472585-PAT00045
는 1,
Figure 112005064472585-PAT00046
은 0 및
Figure 112005064472585-PAT00047
는 1이 된다. 또한 계산된 정수 φ(N)을 15라고 가정하고, 이를 2진수로 표현하면 1111
Figure 112005064472585-PAT00048
이 되므로,
Figure 112005064472585-PAT00049
,
Figure 112005064472585-PAT00050
,
Figure 112005064472585-PAT00051
Figure 112005064472585-PAT00052
는 모두 1이 된다.
변수 i의 값이 3일 때, MSB인
Figure 112005064472585-PAT00053
의 값은 1이므로, 레지스터 S에는 m이 저장 된다(340).
변수 i의 값이 2일 때, 레지스터 S에 저장된 값에 대한 연산(S=
Figure 112005064472585-PAT00054
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00055
을 레지스터 S에 저장한다(350). 이 때
Figure 112005064472585-PAT00056
Figure 112005064472585-PAT00057
의 값이 1이므로 해당하는 부가변수 식 t(3)에 해당하는 값 인 m×
Figure 112005064472585-PAT00058
을 레지스터 S에 저장된
Figure 112005064472585-PAT00059
과 곱한 후 연산(S=
Figure 112005064472585-PAT00060
× m×
Figure 112005064472585-PAT00061
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00062
을 레지스터 S에 저장한다(370).
변수 i의 값이 1일 때, 레지스터 S에 저장된 값에 대한 연산(S=
Figure 112005064472585-PAT00063
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00064
을 레지스터 S에 저장한다(350). 이 때
Figure 112005064472585-PAT00065
Figure 112005064472585-PAT00066
의 값이 각각 0과 1이므로, 해당 부가변수 식은 t(1)에 해당하는 값 인
Figure 112005064472585-PAT00067
을 레지스터 S에 저장된
Figure 112005064472585-PAT00068
과 곱한 후 연산(S=
Figure 112005064472585-PAT00069
×
Figure 112005064472585-PAT00070
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00071
을 레지스터 S에 저장한다(370).
변수 i의 값이 0일 때, 레지스터 S에 저장된 값에 연산(S=
Figure 112005064472585-PAT00072
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00073
을 레지스터 S에 저장한다(350). 이 때
Figure 112005064472585-PAT00074
Figure 112005064472585-PAT00075
의 값이 모두 1이므로, 해당 부가변수 식은 t(3)에 해당하는 값 인 m×
Figure 112005064472585-PAT00076
을 레지스터 S에 저장된
Figure 112005064472585-PAT00077
과 곱한 후 연산(S=
Figure 112005064472585-PAT00078
×m×
Figure 112005064472585-PAT00079
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00080
을 레지스터 S에 저장한다(370).
연산의 마지막으로 레지스터 S에 저장된
Figure 112005064472585-PAT00081
을 해당 부가변수 식 t(0)에 해당하는 값인 r을 곱하는 연산(
Figure 112005064472585-PAT00082
×r)을 수행하여 최종 값인
Figure 112005064472585-PAT00083
을 얻는다(380). 이 때, 모듈라 지수승 연산의 특성상
Figure 112005064472585-PAT00084
는 1이 되므로, 결국 레지스터 S에 저장되는 값은
Figure 112005064472585-PAT00085
이 되어 d의 값인 13이 복원된다.
상기의 설명을 참조하면, 본 발명의 연산방법을 이용한 연산의 과정에서 레지스터 S에 저장되는 값은 메시지 m에 대한 제곱 성분뿐만 아니라, 임의로 부가시킨 변수인 r의 제곱성분이 곱하여 져 있음을 알 수 있다. 전력공격의 원리에 의하면, 메시지 m의 제곱 성분만이 레지스터에 저장되는 경우에 비밀키를 유추하는 것은 경우에 따라 가능하지만, 메시지 m의 제곱성분에 부가변수 r의 제곱성분이 곱하여 진 값이 레지스터에 저장되는 경우에는 비밀키를 유추하는 것을 거의 불가능하다.
도 4는 본 발명에 따른 모듈라 지수승 연산 방법에 대한 제2 실시예이다.
도 4를 참조하면, 상기 모듈라 지수승 연산 방법(400)은, 초기 값 및 부가변수 선택단계(410), 부가연산 설정단계(420) 및 모듈라 지수승 연산단계(430 내지 470)를 구비한다.
도 4에 도시된 모듈라 지수승 연산방법은 도 3에 도시된 제1 실시예를 응용한 것으로, 정수 φ(N) 대신에 φ(N)+1을 사용함으로서, 변수 1개를 증가시키는 대신 연산의 과정을 한 단계 감소시킬 수 있도록 한 것이다. 즉, φ(N)+1
Figure 112005064472585-PAT00086
을 이용하여 도 4에 도시된 방법을 적용하면, 도 3에 도시된 제3 연산 및 저장단계(380)를 수행하지 않아도 된다. 다만, 정수 φ(N)에 1이 더하여졌기 때문에, 변수도 하나 더 늘어나게 된다.
도 3에 도시된 연산방법의 단계 및 도 4에 도시된 연산방법은, 상술한 상수φ(N) 및 φ(N)+1의 값에서는 차이가 나지만, 나머지 부분에 대한 것은 거의 동일하기 때문에 도 4에 대한 상세한 설명은 이하의 동작설명으로 대신한다.
도 8은 도 4에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
도 4에 도시된 연산방법에 대하여 도 8을 참조하여 설명한다.
설명의 편의를 위하여 d를 13 이라고 가정하고, 늘어난 변수 1을 감안하여 d를 2진수로 표현하면 01101
Figure 112005064472585-PAT00087
이 되므로,
Figure 112005064472585-PAT00088
는 0,
Figure 112005064472585-PAT00089
은 1,
Figure 112005064472585-PAT00090
는 1,
Figure 112005064472585-PAT00091
은 0 및
Figure 112005064472585-PAT00092
는 1이 된다. 또한 계산된 정수 φ(N)을 15라고 가정하면 φ(N)+1은 16이 되므로, 이를 2진수로 표현하면 10000
Figure 112005064472585-PAT00093
이 되므로,
Figure 112005064472585-PAT00094
는 1이 되고
Figure 112005064472585-PAT00095
,
Figure 112005064472585-PAT00096
,
Figure 112005064472585-PAT00097
Figure 112005064472585-PAT00098
는 모두 0이 된다.
변수 i의 값이 4일 때, MSB인
Figure 112005064472585-PAT00099
의 값은 0이므로, 레지스터 S에는 1이 저장된다(440).
변수 i의 값이 3일 때, 레지스터 S에 저장된 값에 대한 연산(S=
Figure 112005064472585-PAT00100
mod N)을 수행하여 얻은 1을 레지스터 S에 저장한다(450). 이 때
Figure 112005064472585-PAT00101
Figure 112005064472585-PAT00102
의 값이 각각 1과 0이므로 해당하는 부가변수 식 t(2)에 해당하는 값 인 mr을 레지스터 S에 저장된 1과 곱한 후 연산(S=S×mr mod N)을 수행하여 얻은 mr을 레지스터 S에 저장한다(470).
변수 i의 값이 2일 때, 레지스터 S에 저장된 값에 대한 연산(S=
Figure 112005064472585-PAT00103
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00104
을 레지스터 S에 저장한다(450). 이 때
Figure 112005064472585-PAT00105
Figure 112005064472585-PAT00106
의 값이 각각 1과 0이므로 해당하는 부가변수 식 t(2)에 해당하는 값 인 mr을 레지스터 S에 저장된
Figure 112005064472585-PAT00107
과 곱한 후 연산(S=
Figure 112005064472585-PAT00108
×mr mod N)을 수행하여 얻은
Figure 112005064472585-PAT00109
을 레지스터 S에 저장한다(470).
변수 i의 값이 1일 때, 레지스터 S에 저장된 값에 대한 연산(S=
Figure 112005064472585-PAT00110
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00111
을 레지스터 S에 저장한다(450). 이 때
Figure 112005064472585-PAT00112
Figure 112005064472585-PAT00113
의 값이 모두 0이므로, 해당 부가변수 식은 t(0)에 해당하는 값 인 r을 레지스터 S에 저장된
Figure 112005064472585-PAT00114
과 곱한 후 연산(S=
Figure 112005064472585-PAT00115
×r mod N)을 수행하여 얻은
Figure 112005064472585-PAT00116
을 레지스터 S에 저장한다(470).
변수 i의 값이 0일 때, 레지스터 S에 저장된 값에 대한 연산(S=
Figure 112005064472585-PAT00117
mod N)을 수행하여 얻은
Figure 112005064472585-PAT00118
을 레지스터 S에 저장한다(450). 이 때
Figure 112005064472585-PAT00119
Figure 112005064472585-PAT00120
의 값이 각각 1과 0이므로, 해당 부가변수 식은 t(2)에 해당하는 값 인 mr을 레지스터 S에 저장된
Figure 112005064472585-PAT00121
과 곱한 후 연산(S=
Figure 112005064472585-PAT00122
×mr mod N)을 수행하여 얻은
Figure 112005064472585-PAT00123
을 레지스터 S에 저장한다(470).
상술한 바와 같이 모듈라 지수승 연산의 특성상
Figure 112005064472585-PAT00124
의 값이 1이 되므로, 레지스터 S에는
Figure 112005064472585-PAT00125
이 저장된다. 따라서, 변수 i의 값이 0일 때 계산한 값을 그대로 레지스터 S에 저장함으로써, 변수 1개를 늘이는 대신 연산의 단계를 하나 줄일 수 있다.
도 5는 본 발명에 따른 상수배 곱셈 연산 방법에 대한 제1 실시예이다.
도 5를 참조하면, 상기 상수배 곱셈 연산 방법(500)은, 초기 값 및 부가변수 선택단계(510), 부가연산 설정단계(520) 및 상수배 곱셈 연산단계(530 내지 580)를 구비한다.
초기 값 및 부가변수 선택단계(510)는, 타원곡선에 대한 정보를 가진 E, 상기 타원곡선 E 상의 임의의 한 점 P, 임의의 상수 d, 타원곡선에 포함된 임의의 점의 개수를 의미하는 #E 및 상기 타원곡선 E 상의 임의의 다른 한 점 R을 부가변수로 선택한다.
부가연산 설정단계(520)는, 상기 부가변수 R을 이용하여 수학식 6에 표현한 복수 개의 부가연산 식들을 설정한다.
t(0) = R,
t(1) = 2R,
t(2) = P+R,
t(3) = P+2R.
상수배 곱셈 연산단계(530 내지 580)는, 변수설정단계(530), 제1 연산 및 저장단계(540), 변수변경단계(550), 변수비교단계(560), 제2 연산 및 저장단계(570) 및 제3 연산 및 저장단계(580)를 구비한다.
변수 설정 단계(530)는, 정수 d를 2진수로 표현하였을 때의 총 비트 수(n-1) 를 변수 i의 최대 값으로 설정한다.
제1 연산 및 저장단계(540)는, 정수 d의 MSB(Most Significant Bit)
Figure 112005064472585-PAT00126
의 값이 0일 때는 레지스터 S에 0을 저장하고, 1일 때는 P를 저장한다.
변수 변경단계(550)는, d의 MSB에서부터 LSB(Least Significant Bit)까지의 모든 경우의 연산을 수행시키기 위하여, 변수 i의 값을 하나씩 감소시킨다.
변수 비교단계(560)는, d의 모든 비트에 대하여 연산을 수행하도록 하기 위하여 변수 i의 값이 0보다 작은가를 비교한다.
제2 연산 및 저장단계(570)는, 변수의 값이 0보다 큰 경우에는 레지스터 S에 저장된 값에 상수 2를 곱하는 연산(2×S)을 수행하고, 그 결과 값을 부가연산 설정단계(520)에서 설정된 해당 부가연산 식(t(2×
Figure 112005064472585-PAT00127
+
Figure 112005064472585-PAT00128
))의 값을 더하는 연산(S+t(2×
Figure 112005064472585-PAT00129
+
Figure 112005064472585-PAT00130
))을 수행하고 그 결과를 레지스터 S에 저장한다.
제3 연산 및 저장단계(580)는, 변수의 값이 0보다 작은 경우 레지스터 S에 저장된 값에 부가연산 식(t(0))의 값을 더하는 연산(S+t(0))을 하여 레지스터에 최종 값으로 저장한다.
도 9는 도 5에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
도 5에 도시된 연산방법에 대하여 도 9를 참조하여 설명한다.
설명의 편의를 위하여 d를 13 이라고 가정하고, 이를 2진수로 표현하면 1101
Figure 112005064472585-PAT00131
이 되므로,
Figure 112005064472585-PAT00132
은 1,
Figure 112005064472585-PAT00133
는 1,
Figure 112005064472585-PAT00134
은 0 및
Figure 112005064472585-PAT00135
는 1이 된다. 또한 부가변수 #E의 값을 15라고 가정하고, 이를 2진수로 표현하면 1111
Figure 112005064472585-PAT00136
이 되므로,
Figure 112005064472585-PAT00137
,
Figure 112005064472585-PAT00138
,
Figure 112005064472585-PAT00139
Figure 112005064472585-PAT00140
는 모두 1이 된다.
변수 i의 값이 3일 때, MSB인
Figure 112005064472585-PAT00141
의 값은 1이므로, 레지스터 S에는 P가 저장된다(540).
변수 i의 값이 2일 때, 레지스터 S에 저장된 값에 상수 2를 곱하여(2S) 얻은 2P를 레지스터 S에 저장한다(550). 이 때
Figure 112005064472585-PAT00142
Figure 112005064472585-PAT00143
의 값이 1이므로 해당하는 부가변수 식 t(3)에 해당하는 값 인 P+2R을 레지스터 S에 저장된 2P에 더하는 연산(2P+P+2R)을 수행하여 얻은 3P+2R을 레지스터 S에 저장한다(570).
변수 i의 값이 1일 때, 레지스터 S에 저장된 값에 상수 2를 곱하여(2S) 얻은 6P+4R을 레지스터 S에 저장한다(550). 이 때
Figure 112005064472585-PAT00144
Figure 112005064472585-PAT00145
의 값이 0과 1이므로 해당하는 부가변수 식 t(1)에 해당하는 값 인 2R을 레지스터 S에 저장된 6P+4R에 더하는 연산(6P+4R+2R)을 수행하여 얻은 6P+6R을 레지스터 S에 저장한다(570).
변수 i의 값이 0일 때, 레지스터 S에 저장된 값에 상수 2를 곱하여(2S) 얻은 12P+12R을 레지스터 S에 저장한다(550). 이 때
Figure 112005064472585-PAT00146
Figure 112005064472585-PAT00147
의 값이 1이므로 해당하는 부가변수 식 t(3)에 해당하는 값 인 P+2R을 레지스터 S에 저장된 12P+12R에 더하는 연산(12P+12R+P+2R)을 수행하여 얻은 13P+14R을 레지스터 S에 저장한다(570).
연산의 마지막으로 레지스터 S에 저장된 13P+14R에 해당 부가변수 식 t(0)에 해당하는 값인 R을 더하는 연산(13P+14R+R)을 수행하여 최종 값인 13P+15R을 얻는 다(580). 이 때, 타원곡선의 수학적 특성상 15R은 0이 되므로, 결국 레지스터 S에 저장되는 값은 13P가 되어 d의 값인 13이 복원된다.
도 6은 본 발명에 따른 상수배 곱셈 연산 방법에 대한 제2 실시예이다.
도 6을 참조하면, 상기 상수배 곱셈 연산방법(600)은, 초기 값 및 부가변수 선택단계(610), 부가연산 설정단계(620) 및 상수배 곱셈 연산단계(630 내지 670)를 구비한다.
도 6에 도시된 상수배 곱셈 연산방법(600)은, 도 5에 도시된 제1 실시예를 응용한 것으로, 부가변수 #E 대신에 #E +1을 사용함으로서, 변수 1개를 증가시키는 반면에 연산의 과정을 한 단계 감소시킬 수 있도록 한 것이다. 즉, #E +1
Figure 112005064472585-PAT00148
을 이용하여 도 6에 도시된 방법을 적용하면, 도 5에 도시된 제3 연산 및 저장단계(580)를 수행하지 않아도 된다. 다만, 부가변수 #E 에 1이 더하여졌기 때문에, 변수도 하나 더 늘어나게 된다.
도 5에 도시된 연산방법의 단계 및 도 6에 도시된 연산방법은, 상술한 상수#E 및 #E +1의 값에서는 차이가 나지만, 나머지 부분에 대한 것은 거의 동일하기 때문에 도 6에 대한 상세한 설명은 이하의 동작설명으로 대체한다.
도 10은 도 6에 도시된 연산방법을 적용하는 과정 및 상기 과정 중에 레지스터 S에 저장되는 값들을 나타낸다.
도 6에 도시된 연산방법에 대하여 도 10을 참조하여 설명한다.
설명의 편의를 위하여 d를 13 이라고 가정하고 늘어난 변수 1을 감안하여 d 를 2진수로 표현하면 01101
Figure 112005064472585-PAT00149
이 되므로,
Figure 112005064472585-PAT00150
는 0,
Figure 112005064472585-PAT00151
은 1,
Figure 112005064472585-PAT00152
는 1,
Figure 112005064472585-PAT00153
은 0 및
Figure 112005064472585-PAT00154
는 1이 된다. 또한 계산된 정수 #E를 15라고 가정하면 #E+1은 16이 되므로, 이를 2진수로 표현하면 10000
Figure 112005064472585-PAT00155
이 되므로,
Figure 112005064472585-PAT00156
는 1이 되고
Figure 112005064472585-PAT00157
,
Figure 112005064472585-PAT00158
,
Figure 112005064472585-PAT00159
Figure 112005064472585-PAT00160
는 모두 0이 된다.
변수 i의 값이 4일 때, MSB인
Figure 112005064472585-PAT00161
의 값은 0이므로, 레지스터 S에는 0이 저장된다(640).
변수 i의 값이 3일 때, 레지스터 S에 저장된 값에 상수 2를 곱하여(2S) 얻은 0을 레지스터 S에 저장한다(650). 이 때
Figure 112005064472585-PAT00162
Figure 112005064472585-PAT00163
의 값이 1과 0이므로 부가변수 식 t(2)에 대응되는 P+R을 레지스터 S에 저장된 0에 더하는 연산(0+P+R)을 수행하여 얻은 P+R을 레지스터 S에 저장한다(670).
변수 i의 값이 2일 때, 레지스터 S에 저장된 값에 상수 2를 곱하여(2S) 얻은 2P+2R을 레지스터 S에 저장한다(650). 이 때
Figure 112005064472585-PAT00164
Figure 112005064472585-PAT00165
의 값이 1과 0이므로 부가변수 식 t(2)에 대응되는 P+R을 레지스터 S에 저장된 2P+2R에 더하는 연산(2P+2P+P+R)을 수행하여 얻은 3P+3R을 레지스터 S에 저장한다(670).
변수 i의 값이 1일 때, 레지스터 S에 저장된 값에 상수 2를 곱하여(2S) 얻은 6P+6R을 레지스터 S에 저장한다(650). 이 때
Figure 112005064472585-PAT00166
Figure 112005064472585-PAT00167
의 값이 모두 0이므로 부가변수 식 t(0)에 대응되는 R을 레지스터 S에 저장된 6P+6R에 더하는 연산(6P+6R+R) 을 수행하여 얻은 6P+7R을 레지스터 S에 저장한다(670).
변수 i의 값이 0일 때, 레지스터 S에 저장된 값에 상수 2를 곱하여(2S) 얻은 12P+14R을 레지스터 S에 저장한다(650). 이 때
Figure 112005064472585-PAT00168
Figure 112005064472585-PAT00169
의 값이 1과 0이므로 부가변수 식 t(2)에 대응되는 P+R을 레지스터 S에 저장된 12P+14R에 더하는 연산(12P+14R+P+R)을 수행하여 얻은 13P+15R을 레지스터 S에 저장한다(670).
타원곡선의 수학적 특성상 15R은 0이 되므로, 결국 레지스터 S에 저장되는 값은 13P가 되어 d의 값인 13이 복원된다.
상술한 정수 φ(N) 및 φ(N)+1과 부가변수 #E 및 #E+1의 MSB의 값은 0이 되지 않도록 하고 연산을 수행하여야 한다.
도 7 내지 도 10에서 살펴본 바와 같이 본 발명에 따른 연산방법을 수행하는 과정에서 레지스터에 저장되는 값들은, 종래의 연산방법을 수행하는 과정에서 레지스터에 저장되는 값들에 대하여 도시한 도 1b 및 도 2b와 서로 다름을 알 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 모듈라 지수승 연산방법 및 상수배 곱셈 연산방법은, 부가변수를 이용하여 연산 값들을 레지스터에 저장하도록 함으로서, 외부의 전력공격에 대하여 안전한 암호시스템을 유지할 수 있도록 한다.

Claims (20)

  1. 전송하고자 하는 메시지 m, 임의의 큰 두 개의 소수 p 및 q를 이용하여 생성시킨 N(=p×q) 및 φ(N){=(p-1)×(q-1)}, 상기 φ(N)와 서로 소(Relatively Prime) 관계에 있는 e, ed= 1 mod φ(N)의 관계가 있는 d를 이용하여 S =
    Figure 112005064472585-PAT00170
    mod N 을 만족하는 S를 연산하는 모듈라 지수승 연산방법에 있어서,
    상기 N과 서로 소인 임의의 부가변수 r을 선택하는 부가변수 선택단계(310);
    상기 부가변수 r을 이용하여 복수 개의 부가연산 식들을 설정하는 단계(320); 및
    상기 φ(N), 상기 d 및 상기 부가연산 식을 이용하여 모듈라 지수승 연산단계(330 내지 380)를 구비하는 것을 특징으로 하는 모듈라 지수승 연산방법.
  2. 제1항에 있어서, 상기 복수 개의 부가연산 식들은,
    t(0) = r mod N,
    t(1) =
    Figure 112005064472585-PAT00171
    mod N,
    t(2) = m×r mod N,
    t(3) = m×
    Figure 112005064472585-PAT00172
    mod N 인 것을 특징으로 하는 모듈라 지수승 연산방법.
  3. 제2항에 있어서, 상기 모듈라 지수승 연산단계는,
    상기 d(
    Figure 112005064472585-PAT00173
    )를 2진수로 변환하였을 때의 비트의 수(n-1)를 변수 i의 최대 값으로 저장하는 변수설정단계(330);
    상기 d를 2진수로 변환하였을 때, MSB(Most Significant Bit)인
    Figure 112005064472585-PAT00174
    의 값에 따라 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제1 연산 및 저장단계(340);
    상기 d를 2진수로 변환하였을 때 MSB를 제외한 나머지 비트의 값, 상기 φ(N)(
    Figure 112005064472585-PAT00175
    )를 2진수로 변환하였을 때 MSB인
    Figure 112005064472585-PAT00176
    를 제외한 나머지 비트의 값 및 상기 해당 부가연산 식의 값을 이용하여 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제2 연산 및 저장단계(350, 360, 370); 및
    상기 S에 상기 부가연산 식 중의 하나를 곱하는 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제3 연산 및 저장단계(380)를 구비하는 것을 특징으로 하는 모듈라 지수승 연산방법.
  4. 제3항에 있어서, 상기 제1 연산 및 저장단계는,
    상기 MSB인
    Figure 112005064472585-PAT00177
    의 값이 0인 경우에는 S에 1을 저장하고 1인 경우에는 m을 저장하며(340),
    상기 제2 연산 및 저장단계는,
    변수 i의 값을 1씩 감소시키는 변수변경단계(350);
    상기 변수 i의 값이 0보다 작은 가를 판단하는 변수비교단계(360); 및
    상기 변수 i의 값이 0보다 큰 경우에는 S=
    Figure 112005064472585-PAT00178
    mod N 및 S=S×t(2×
    Figure 112005064472585-PAT00179
    +
    Figure 112005064472585-PAT00180
    ) mod N의 연산을 차례로 수행하고 최종 연산의 결과 값을 S에 저장하며 상기 변수 i의 값을 1씩 감소시키는 단계(350)를 수행하도록 하는 연산저장단계(370)를 구비하며,
    상기 제3 연산 및 저장단계(380)는,
    상기 변수(i)의 값이 0보다 작은 경우에는 S×t(0)의 연산을 수행하고 연산의 결과 값을 S에 저장하는 것을 특징으로 하는 모듈라 지수승 연산방법.
  5. 제3항에 있어서,
    상기 d를 2진수로 변환하였을 때의 비트의 수와 동일한 수(n-1)의 비트로 변환할 때, 상기 φ(N)의 MSB인
    Figure 112005064472585-PAT00181
    의 값은 항상 0이 되지 않는 것을 특징으로 하는 모듈라 지수승 연산방법.
  6. 전송하고자 하는 메시지 m, 임의의 큰 두 개의 소수 p 및 q를 이용하여 생성시킨 N(=p×q) 및 φ(N)+1 {=(p-1)×(q-1)+1}, 상기 φ(N)+1과 서로 소(Relatively Prime) 관계에 있는 e, ed = 1 mod φ(N)+1의 관계가 있는 d를 이용하여 S =
    Figure 112005064472585-PAT00182
    mod N 을 만족하는 S를 연산하는 모듈라 지수승 연산방법에 있어서,
    상기 N과 서로 소인 임의의 부가변수 r을 선택하는 부가변수 선택단계(410);
    상기 부가변수 r을 이용하여 복수 개의 부가연산 식들을 설정하는 단계(420); 및
    상기 φ(N)+1, 상기 d 및 상기 부가연산 식을 이용하여 모듈라 지수승 연산단계(430 내지 470)를 구비하는 것을 특징으로 하는 모듈라 지수승 연산방법.
  7. 제6항에 있어서, 상기 복수 개의 부가연산 식들은,
    t(0) = r mod N,
    t(1) =
    Figure 112005064472585-PAT00183
    mod N,
    t(2) = m×r mod N,
    t(3) = m×
    Figure 112005064472585-PAT00184
    mod N 인 것을 특징으로 하는 모듈라 지수승 연산방법.
  8. 제7항에 있어서, 상기 모듈라 지수승 연산단계는,
    상기 d(
    Figure 112005064472585-PAT00185
    )를 2진수로 변환하였을 때의 비트의 수(n-1)를 변수 i의 최대 값으로 저장하는 변수설정단계(430);
    상기 d를 2진수로 변환하였을 때, MSB(Most Significant Bit)인
    Figure 112005064472585-PAT00186
    의 값에 따라 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제1 연산 및 저장단계(440); 및
    상기 d를 2진수로 변환하였을 때 MSB를 제외한 나머지 비트의 값, 상기 φ(N)+1(
    Figure 112005064472585-PAT00187
    )을 2진수로 변환하였을 때 MSB인
    Figure 112005064472585-PAT00188
    을 제외한 나머지 비트의 값 및 상기 해당 부가연산 식의 값을 이용하여 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제2 연산 및 저장단계(450, 460, 470)를 구비하는 것을 특징으로 하는 모듈라 지수승 연산방법.
  9. 제8항에 있어서,
    상기 제1 연산 및 저장단계는,
    상기 MSB인
    Figure 112005064472585-PAT00189
    의 값이 0인 경우에는 S에 1을 저장하고 1인 경우에는 m을 저장하며(440),
    상기 제2 연산 및 저장단계는,
    변수 i의 값을 1씩 감소시키는 변수변경단계(450);
    상기 변수 i의 값이 0보다 작은 가를 판단하는 변수비교단계(460); 및
    상기 변수 i의 값이 0보다 큰 경우에는 S=
    Figure 112005064472585-PAT00190
    mod N 및 S= S×t(2×
    Figure 112005064472585-PAT00191
    +
    Figure 112005064472585-PAT00192
    ) mod N의 연산을 차례로 수행하고 연산의 최종 결과 값을 S에 저장하며 상기 변수 i의 값을 1씩 감소시키는 단계(450)를 수행하도록 하는 연산 및 저장단계(470)를 구비하는 것을 특징으로 하는 모듈라 지수승 연산방법.
  10. 제7항에 있어서,
    상기 d를 2진수로 변환하였을 때의 비트의 수와 동일한 수의 비트로 변환할 때, 상기 φ(N)+1의 MSB인
    Figure 112005064472585-PAT00193
    의 값은 항상 0이 되지 않는 것을 특징으로 하는 모듈라 지수승 연산방법.
  11. 타원곡선에 대한 정보를 가진 E, 상기 타원곡선 E 상의 임의의 한 점 P, 임의의 상수 d, 타원곡선에 포함된 임의의 점의 개수를 의미하는 #E를 이용하여 S=dP를 만족하는 상수배 곱셈 연산을 수행하는 방법에 있어서,
    상기 타원곡선 E 상의 임의의 다른 한 점 R을 부가변수로 선택하는 부가변수 선택단계(510);
    상기 부가변수 R을 이용하여 복수 개의 부가연산 식들을 설정하는 단계(520); 및
    상기 #E, 상기 d 및 상기 부가연산 식을 이용하여 상수배 곱셈 연산을 수행하는 상수배 곱셈연산단계(530 내지 580)를 구비하는 것을 특징으로 하는 상수배 곱셈 연산방법.
  12. 제11항에 있어서, 상기 복수 개의 부가연산 식들은,
    t(0) = R,
    t(1) = 2R,
    t(2) = P+R,
    t(3) = P+2R 인 것을 특징으로 하는 상수배 곱셈 연산방법.
  13. 제12항에 있어서, 상기 상수배 곱셈연산단계는,
    상기 d
    Figure 112005064472585-PAT00194
    를 2진수로 변환하였을 때의 비트의 수(n-1)를 변수 i의 최대 값으로 저장하는 변수설정단계(530);
    상기 d를 2진수로 변환하였을 때, MSB(Most Significant Bit)인
    Figure 112005064472585-PAT00195
    의 값에 따라 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제1 연산 및 저장단계(540);
    상기 d를 2진수로 변환하였을 때 MSB를 제외한 나머지 비트의 값, 상기 #E
    Figure 112005064472585-PAT00196
    를 2진수로 변환하였을 때 MSB인
    Figure 112005064472585-PAT00197
    을 제외한 나머지 비트의 값 및 상기 해당 부가연산 식의 값을 이용하여 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제2 연산 및 저장단계(550, 560, 570); 및
    상기 S에 상기 부가연산 식 중의 하나를 더하는 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제3 연산 및 저장단계(580)를 구비하는 것을 특징으로 하는 상수배 곱셈 연산방법.
  14. 제13항에 있어서, 상기 제1 연산 및 저장단계는,
    상기 MSB인
    Figure 112005064472585-PAT00198
    의 값이 0인 경우에는 S에 0(zero)을 저장하고 1인 경우에 는 P를 저장하며(540),
    상기 제2 연산 및 저장단계는,
    변수 i의 값을 1씩 감소시키는 변수변경단계(550);
    상기 변수 i의 값이 0보다 작은 가를 판단하는 변수비교단계(560); 및
    상기 변수 i의 값이 0보다 큰 경우에는 2S 및 S+t(2×
    Figure 112005064472585-PAT00199
    +
    Figure 112005064472585-PAT00200
    )의 연산을 차례로 수행하고 연산의 최종 결과 값을 S에 저장하며, 상기 변수 i의 값을 1씩 감소시키는 단계를 수행하도록 하는 연산 및 저장단계(570)를 구비하며,
    상기 제3 연산 및 저장단계(580)는,
    상기 변수 i의 값이 0보다 작은 경우에는 S+t(0)의 연산을 수행하고 연산의 결과 값을 S에 저장하는 것을 특징으로 하는 상수배 곱셈 연산방법.
  15. 제13항에 있어서,
    상기 d를 2진수로 변환하였을 때의 비트의 수(n-1)와 동일한 수의 비트로 변환할 때, 상기 #E+1의 MSB인
    Figure 112005064472585-PAT00201
    의 값은 항상 0이 되지 않는 것을 특징으로 하는 상수배 곱셈 연산방법.
  16. 타원곡선에 대한 정보를 가진 E, 상기 타원곡선 E 상의 임의의 한 점 P, 임의의 상수 d, 타원곡선에 포함된 임의의 점의 개수를 의미하는 #E에 1을 더한 #E+1을 이용하여 S=dP를 만족하는 상수배 곱셈 연산을 수행하는 방법에 있어서,
    상기 타원곡선 E 상의 임의의 다른 한 점 R을 부가변수로 선택하는 부가변수 선택단계(610);
    상기 부가변수 R을 이용하여 복수 개의 부가연산 식들을 설정하는 단계(620); 및
    상기 #E+1, 상기 d 및 상기 부가연산 식을 이용하여 상수배 곱셈 연산을 수행하는 상수배 곱셈연산단계(630 내지 670)를 구비하는 것을 특징으로 하는 상수배 곱셈 연산방법.
  17. 제16항에 있어서, 상기 복수 개의 부가연산 식들은,
    t(0) = R,
    t(1) = 2R,
    t(2) = P+R,
    t(3) = P+2R 인 것을 특징으로 하는 상수배 곱셈 연산방법.
  18. 제17항에 있어서, 상기 상수배 곱셈연산단계는,
    상기 d
    Figure 112005064472585-PAT00202
    를 2진수로 변환하였을 때의 비트의 수(n-1)를 변수 i의 최대 값으로 저장하는 변수설정단계(630);
    상기 d를 2진수로 변환하였을 때, MSB(Most Significant Bit)인
    Figure 112005064472585-PAT00203
    의 값에 따라 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제1 연산 및 저장단계(640); 및
    상기 d를 2진수로 변환하였을 때 MSB를 제외한 나머지 비트의 값, 상기 #E+1
    Figure 112005064472585-PAT00204
    를 2진수로 변환하였을 때 MSB인
    Figure 112005064472585-PAT00205
    을 제외한 나머지 비트의 값 및 상기 해당 부가연산 식의 값을 이용하여 소정의 연산을 수행하고 상기 연산의 결과 값을 S에 저장하는 제2 연산 및 저장단계(650, 660, 670)를 구비하는 것을 특징으로 하는 상수배 곱셈 연산방법.
  19. 제18항에 있어서, 상기 제1 연산 및 저장단계는,
    상기 MSB인
    Figure 112005064472585-PAT00206
    의 값이 0인 경우에는 S에 0(zero)을 저장하고 1인 경우에는 P를 저장하며(540),
    상기 제2 연산 및 저장단계는,
    변수 i의 값을 1씩 감소시키는 변수변경단계(650);
    상기 변수 i의 값이 0보다 작은 가를 판단하는 변수비교단계(660); 및
    상기 변수 i의 값이 0보다 큰 경우에는 2S 및 S+t(2×
    Figure 112005064472585-PAT00207
    +
    Figure 112005064472585-PAT00208
    )의 연산을 차례로 수행하고 연산의 최종 결과 값을 S에 저장하며, 상기 변수 i의 값을 1씩 감소시키는 단계를 수행하도록 하는 연산 및 저장단계(670)를 구비하는 것을 특징으로 하는 상수배 곱셈 연산방법.
  20. 제18항에 있어서,
    상기 d를 2진수로 변환하였을 때의 비트의 수(n-1)와 동일한 수의 비트로 변환할 때, 상기 #E+1의 MSB인
    Figure 112005064472585-PAT00209
    의 값은 항상 0이 되지 않는 것을 특징으로 하는 상수배 곱셈 연산방법.
KR1020050107018A 2005-11-09 2005-11-09 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법 KR20070049823A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050107018A KR20070049823A (ko) 2005-11-09 2005-11-09 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050107018A KR20070049823A (ko) 2005-11-09 2005-11-09 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법

Publications (1)

Publication Number Publication Date
KR20070049823A true KR20070049823A (ko) 2007-05-14

Family

ID=38273646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107018A KR20070049823A (ko) 2005-11-09 2005-11-09 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법

Country Status (1)

Country Link
KR (1) KR20070049823A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101123729B1 (ko) * 2011-06-24 2012-03-16 국민대학교산학협력단 역원 연산이 없는 rsa의 메시지 블라인딩 방법
US8422671B2 (en) 2010-03-08 2013-04-16 Samsung Electronics Co., Ltd. Methods of encryption and decryption using operand ordering and encryption systems using the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8422671B2 (en) 2010-03-08 2013-04-16 Samsung Electronics Co., Ltd. Methods of encryption and decryption using operand ordering and encryption systems using the same
KR101123729B1 (ko) * 2011-06-24 2012-03-16 국민대학교산학협력단 역원 연산이 없는 rsa의 메시지 블라인딩 방법

Similar Documents

Publication Publication Date Title
CA2256179C (en) Encryption and decryption devices for public-key cryptosystems and recording medium with their processing programs recorded thereon
US7536011B2 (en) Tamper-proof elliptic encryption with private key
EP1815636B1 (en) New trapdoor one-way function on elliptic curves and its application to asymmetric encryption and shorter signatures
JP5001176B2 (ja) 署名生成装置、署名生成方法及び署名生成プログラム
KR101610917B1 (ko) 암호 알고리즘의 복호 방법 및 그것을 포함하는 암호 시스템
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
US20070206789A1 (en) Elliptic curve cryptosystem optimization using two phase key generation
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
Jahan et al. Improved RSA cryptosystem based on the study of number theory and public key cryptosystems
KR100652377B1 (ko) 모듈라 지수승 알고리즘, 기록매체 및 시스템
WO2008106792A1 (en) Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
US6480606B1 (en) Elliptic curve encryption method and system
US7248692B2 (en) Method of and apparatus for determining a key pair and for generating RSA keys
US20020041683A1 (en) Method for selecting optimal number of prime factors of a modulus for use in a cryptographic system
US7062044B1 (en) Method of elliptic curve cryptographic key agreement using coefficient splitting
KR20070049823A (ko) 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법
CN1985458A (zh) 增强的自然蒙哥马利指数掩蔽
Ashraf et al. Message transmission for GH-public key cryptosystem
Ariffin et al. AA β public key cryptosystem-A comparative analysis against RSA and ECC
JP2005084568A (ja) セキュリティ方法、セキュリティ装置及びセキュリティプログラム
Nitaj The Mathematical Cryptography of the RSA Cryptosystem
Lim et al. Sparse RSA secret keys and their generation
US11973866B2 (en) Cryptographic processing method, related electronic device and computer program
Gueron et al. Applications of the Montgomery exponent

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination