KR20070075665A - Dfa에 대항하는 방법을 구비하는 몽고메리 전력 래더알고리즘 - Google Patents

Dfa에 대항하는 방법을 구비하는 몽고메리 전력 래더알고리즘 Download PDF

Info

Publication number
KR20070075665A
KR20070075665A KR1020060004175A KR20060004175A KR20070075665A KR 20070075665 A KR20070075665 A KR 20070075665A KR 1020060004175 A KR1020060004175 A KR 1020060004175A KR 20060004175 A KR20060004175 A KR 20060004175A KR 20070075665 A KR20070075665 A KR 20070075665A
Authority
KR
South Korea
Prior art keywords
variable
value
fault
variables
scalar
Prior art date
Application number
KR1020060004175A
Other languages
English (en)
Other versions
KR100874909B1 (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 KR1020060004175A priority Critical patent/KR100874909B1/ko
Priority to JP2007003863A priority patent/JP2007189692A/ja
Priority to US11/622,508 priority patent/US20080025498A1/en
Publication of KR20070075665A publication Critical patent/KR20070075665A/ko
Application granted granted Critical
Publication of KR100874909B1 publication Critical patent/KR100874909B1/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)
  • Retry When Errors Occur (AREA)

Abstract

DFA(Differential Fault Analysis)에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘(Montgomery Power Ladder Algorithm)을 개시한다. 상기 MPLA는, 초기화 단계 및 반복연산단계를 구비한다. 상기 초기화단계는, 반복연산변수 i의 초기 값을 설정하고, 임의의 타원 곡선에 포함되는 기본 포인트 P 및 스칼라 k를 수신하고, 상기 기본 포인트 P를 이용하여 적어도 2개의 변수를 초기화한다. 상기 반복연산단계는, 상기 2개의 변수를 이용하여 상기 스칼라 k와 상기 기본 포인트 P를 곱한 값 Q를 연산하고, 상기 곱셈연산 도중에 상기 2개의 변수 및 상기 기본 포인트 P 사이의 관계를 분석하여 폴트가 유입되었는가를 검사하며, 검사결과에 따라 상기 Q를 출력하거나 경고신호(STOP)를 출력한다.
몽고메리 전력 래더 알고리즘, RSA, ECC, DFA

Description

DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘{Montgomery Power Ladder Algorithm including the countermeasure for Differential Fault Analysis}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 DFA에 대응하는 종래의 CT&C 방법에 대한 신호흐름도(Flow Chart)이다.
도 2는 DFA에 대응하는 종래의 COP 방법에 대한 신호흐름도(Flow Chart)이다.
도 3은 본 발명에 따른 DFA에 대항하는 MPLA의 제1실시예이다.
도 4는 본 발명에 따른 DFA에 대항하는 MPLA의 제2실시예이다.
도 5는 본 발명에 따른 DFA에 대항하는 MPLA의 제3실시예이다.
본 발명은 암호시스템(Cryptographic System)에 관한 것으로, 특히, DFA(Differential Fault Analysis)에 대항하는 방법을 구비하는 몽고메리 전력 래 더 알고리즘(Montgomery Power Ladder Algorithm)에 관한 것이다.
정보화 사회의 도래와 함께 암호 알고리즘 및 암호 프로토콜(Protocol)을 이용한 정보의 보호는 그 중요성을 더해가고 있다. 정보를 보호하는데 사용되는 암호 알고리즘 중에서 RSA(Rivest Shamir Adleman) 암호시스템 및 타원곡선암호시스템(Elliptic Curve Cryptography, 이하 ECC)에서 사용하는 공개키(open key) 암호 알고리즘은, 비밀키(Secret Key) 암호 알고리즘의 단점인 키(Key) 분배 문제, 전자서명 문제 등을 해결하면서 인터넷이나 금융 망과 같은 여러 분야의 응용에 빠르게 적용이 되어 가고 있다.
상기 RSA 공개키 암호시스템 및 상기 ECC 공개키 암호시스템에 침입하려고 할 때 사이드 채널 분석(Side Channel Analysis)이 사용된다. 상기 사이드 채널 분석의 종류로는 타이밍 분석(Timing Analysis), 전력분석(Power Analysis), 전자기 분석(Electro-Magnetic Analysis) 및 폴트 분석(Fault Analysis) 등이 널리 알려져 있다. 상기 사이드 채널 분석은, 해석하고자 하는 암호시스템의 하드웨어 구성을 구체적으로 알고 있을 경우에 유효한 공격방법이다.
상기 폴트 분석 중에는, 연산되고 있는 변수(들)의 차이 값을 이용하여 암호시스템의 비밀키를 찾아내는 차등 폴트 분석(Differential Fault Analysis, 이하 DFA)이 널리 알려져 있다. 상기 DFA는, 폴트를 암호시스템에 투입시키고, 투입된 상기 폴트에 대응되는 연산결과를 분석하여, 상기 암호시스템의 비밀키를 찾는 접근방법이다. 레지스터(Register)에 저장될 또는 저장된 값은 상기 폴트에 의하여 변경된다. 암호시스템이 소정의 연산을 수행할 때 상기 레지스터에 저장된 값을 참 고하기 때문에, 상기 폴트에 의하여 변경된 값에 대응하는 에러가 연산결과에 포함된다. 암호분석가(Crypt-analyst)는, 출력되는 상기 에러가 수반된 연산결과를 해석하여 비밀키 등에 대한 정보를 얻는다.
상기와 같은 DFA에 대응하기 위하여, ECC에서 사용할 수 있는 여러 가지 방법이 제안되었다.
도 1은 DFA에 대응하는 종래의 CT&C 방법에 대한 신호흐름도(Flow Chart)이다.
도 1을 참조하면, CT&C(Calculate Twice and Check) 방법(100)은, 먼저 타원 곡선 중의 임의의 한 점 P를 선택하고(110), 상기 P에 임의의 정수 k를 곱하여 제1비교 값 Q1을 구하며(120), 상기 P에 정수 k를 곱하여 제2비교 값 Q2를 구하고(130), 상기 제1 비교 값 Q1 및 상기 제2 비교 값 Q2의 크기를 비교한다(140).
상기 제1 비교 값 Q1과 상기 제2 비교 값 Q2가 같을 경우는 상기 곱셈연산에 어떠한 폴트도 유입되지 않았다고 판단하여, 상기 제1 비교 값 Q1과 상기 제2 비교 값 Q2 중에서 하나가 연산결과 Q로 출력된다.(150) 그러나, 상기 제1 비교 값 Q1과 상기 제2 비교 값 Q2가 같을 경우는 상기의 곱셈연산 중에 폴트가 유입되었다고 판단하여, 이 때는 연산결과 Q 대신 경고 신호가 출력(160)된다.
여기서, 모든 폴트는 일정한 규칙이 없이(Randomly) 유입되며, 상기 2개의 곱셈연산에 동일한 값을 가지는 폴트가 동시에 유입될 확률은 무시할 만하다고 가정한다. 또한 소정의 정수 k는 비밀키를 의미하며, 상기 제1 비교 값 Q1 및 상기 제2 비교 값 Q2는 동시에 계산되는 것이 일반적이다.
도 1에 도시된 CT&C 방법은, 대칭(Symmetric), 비대칭(Asymmetric) 및 스트림(Stream) 등 어떠한 종류의 암호 알고리즘에도 적용될 수 있는 장점이 있으나, 동일한 곱셈계산을 2번이나 하여야 하는 단점이 있다. 또한, 대부분의 스마트 카드(Smart Card) 및 이동기기(Mobile Devices)의 사용영역에서는 폴트 성분이 항상 존재하기 때문에, 스마트 카드나 이동기기에 상기 CT&C 방법을 그대로 적용할 수 없다는 단점이 있다.
도 2는 DFA에 대응하는 종래의 COP 방법에 대한 신호흐름도(Flow Chart)이다.
도 2를 참조하면, COP(Check the Output Point) 방법(200)은, 먼저 타원 곡선 중의 임의의 한 점 P를 선택하고(210), 상기 P에 소정의 정수 k를 곱하여 비교 값 Q를 구하며(220), 상기 비교 값 Q가 타원 곡선 E의 한 점인가를 판단한다.(230)
상기 비교 값 Q가 상기 타원 곡선 E의 한 점인 경우에는, 상기 곱셈연산에 어떠한 폴트도 유입되지 않았다고 판단하여 상기 비교 값 Q가 출력된다.(240) 그러나, 상기 비교 값 Q가 상기 타원 곡선 E의 한 점이 아닌 경우에는, 상기의 곱셈연산 중에 폴트가 유입된 경우에 해당한다고 판단하여 상기 비교 값 Q 대신 경고신호가 출력(250)된다.
여기서, 모든 폴트는 일정한 규칙이 없이 유입되며, 상기 곱셈연산에 투입된 폴트에 영향을 받아 계산된 상기 비교 값 Q가 상기 타원 곡선 E의 한 점에 포함될 확률은 무시할 만하다고 가정한다. 또한, 상기 소정의 k 값은 일반적으로 비밀키를 의미한다.
상기 COP 방법(200)은, DFA에 대응하면서도 암호시스템의 수행능력을 감소(Performance Degradation)시키지 않는다. 그러나, 상기 COP 방법은 ECC를 기반으로 하는 암호시스템에만 적용될 수 있어 그 적용 범위가 좁다는 단점이 있다. 또한, 부호가 변하는 폴트를 이용한 공격에 대응하는 경우에는 시스템의 수행능력이 상당히 감소되는 단점이 있다.
본 발명이 이루고자 하는 기술적 과제는, 추가의 연산이 간단하고, 폴트가 항상 존재하는 곳에서도 사용할 수 있으며, ECC 및 RSA 등 다양한 암호시스템에 적용이 가능한 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘을 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일면(one aspect)에 따른 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘은, 초기화 단계 및 반복연산단계를 구비한다. 상기 초기화단계는, 반복연산변수 i의 초기 값을 설정하고, 임의의 타원 곡선에 포함되는 기본 포인트 P 및 스칼라 k를 수신하고, 상기 기본 포인트 P를 이용하여 적어도 2개의 변수를 초기화한다. 상기 반복연산단계는, 상기 2개의 변수를 이용하여 상기 스칼라 k와 상기 기본 포인트 P를 곱한 값 Q를 연산하고, 상기 곱셈연산 도중에 상기 2개의 변수 및 상기 기본 포인트 P 사이의 관계를 분석하여 폴트가 유입되었는가를 검사하며, 검사결과에 따라 상기 Q를 출력하거나 경고신호(STOP)를 출력한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 다른 일면에 따른 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘은, 초기화단계, 반복연산단계 및 폴트유입 검사단계 및 조치단계를 구비한다. 상기 초기화단계는, 반복연산변수 i의 초기 값을 설정하고, 임의의 타원 곡선에 포함되는 기본 포인트 P 및 스칼라 k를 수신하고, 상기 기본 포인트 P를 이용하여 적어도 2개의 변수를 초기화한다. 상기 반복연산단계는, 상기 2개의 변수를 이용하여 상기 스칼라 k와 상기 기본 포인트 P를 곱한 값 Q를 연산을 수행한다. 상기 폴트 유입 검사 및 조치단계는, 상기 2개의 변수 및 상기 기본 포인트 P 사이의 관계를 분석하여 폴트가 유입되었는가를 검사하며, 검사결과에 따라 상기 Q 또는 경고신호(STOP)를 출력한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
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를 계산한 후, 수학식 1과 같은 연산을 수행하여 메시지 M을 복원한다.
M = B - dA
수학식 1을 참조하면, ECC 공개키 암호시스템에서 가장 중요한 연산은 덧셈연산과 스칼라 곱셈연산이다.
타원곡선 E 상의 임의의 한 점(x,y)은 수학식 2를 만족한다.
Figure 112006002741138-PAT00001
E :
암호(cryptographic)의 응용분야에서, 소수 유한 필드(Prime Finite Field) GF(p) 또는 2진 유한 필드(Binary Finite Field) GF(
Figure 112006002741138-PAT00002
)의 연산에 수학식 2에 표시한 상기 타원곡선의 특성을 사용할 수 있다. 여기서 소수 유한 필드는 구성요소(Element)의 개수가 소수(Prime Number) p로 한정된 영역(Field)을 의미하며, 구성요소의 수가 p개인 소수 유한 필드 GF(p)는 하나만 존재한다.
소수 유한 필드 GF(p)에서, 동일하지 않은 두 변수 P=(
Figure 112006002741138-PAT00003
) 및 Q=(
Figure 112006002741138-PAT00004
)을 더한(P + Q) 변수 R=(
Figure 112006002741138-PAT00005
)을 구하기 위해서는 수학식 3의 연산을 수행하여야 한다.
Figure 112006002741138-PAT00006
Figure 112006002741138-PAT00007
소수 유한 필드 GF(p)에서, 상기 두 변수 P 및 Q가 동일 한 경우에는 상기 변수 R은 수학식 4의 연산을 수행하여 구할 수 있다.
Figure 112006002741138-PAT00009
Figure 112006002741138-PAT00010
Figure 112006002741138-PAT00011
여기서, 두 변수 P 및 Q가 동일하다고 하였으므로,
Figure 112006002741138-PAT00012
는 x로 표시하였고, 마찬가지로
Figure 112006002741138-PAT00013
는 y로 표시하였다. 2진 유한 필드 GF(
Figure 112006002741138-PAT00014
)에서, 동일하지 않은 두 변수 P=(
Figure 112006002741138-PAT00015
) 및 Q=(
Figure 112006002741138-PAT00016
)을 더한(P + Q) 변수 R (
Figure 112006002741138-PAT00017
)을 구하기 위해서는 수학식 5의 연산을 수행하여야 한다.
Figure 112006002741138-PAT00018
Figure 112006002741138-PAT00020
2진 유한 필드 GF(
Figure 112006002741138-PAT00021
)에서, 상기 두 변수 P 및 Q가 동일할 경우에는 상기 변수 R은 수학식 6의 연산을 수행하여 구할 수 있다.
Figure 112006002741138-PAT00022
Figure 112006002741138-PAT00023
Figure 112006002741138-PAT00024
상기의 덧셈연산과 아울러 타원곡선 E상의 임의의 점 P에 임의의 상수 k를 곱한 수 Q (= k·P)를 구하는 스칼라 곱셈연산도 ECC에서 수행하는 중요한 연산 중의 하나이다. 여기서 상수 k는 일반적으로 비밀키로서, Q는 P를 k번 곱하여 구할 수 있다. Q 및 P값을 이용하여 k를 구하기 위해서는 이산 대수(Discrete Logarithm) 연산을 수행하여야 한다. 상기 이산 대수 연산은, 유한 필드(Finite Fields)에 타원곡선의 특성을 적용하여 수행되며, 암호 프로토콜(Cryptographic Protocol)의 비밀성의 기초가 된다.
스칼라 곱셈연산도 포인트 연산(Point Operation), 다시 말하면, 유한 필드 연산을 기본으로 한다. 스칼라 곱셈연산을 수행하기 위하여 몽고메리 전력 래더 알고리즘(Montgomery Power Ladder Algorithm, 이하 MPLA)이 많이 사용된다. MPLA는 원래 간단한 전력 분석(Simple Power Analysis) 공격에 대비하기 위하여 고안되었으나, 현재는 ECC의 모든 필드에서 수행하는 스칼라 곱셈연산 뿐만 아니라 RSA에서 수행하는 모듈라 지수승 연산에도 적용되는 보편적인 알고리즘이다.
이하에서는 ECC에서 상기 MPLA를 이용한 스칼라 곱셈연산에 대하여 설명한다.
MPLA에서는 먼저 2개의 변수를 수학식 7과 같이 정의한다.
Figure 112006002741138-PAT00025
Figure 112006002741138-PAT00026
여기서, 임의의 정수 k는 복수 개의 바이너리 비트(
Figure 112006002741138-PAT00027
)로 표시할 수 있으며,
Figure 112006002741138-PAT00028
는 변수 i의 값에 따른 상기 복수 개의 바이너리 비트 중의 하나에 대응되고,
Figure 112006002741138-PAT00029
은 항상 1(one)의 값을 가진다. 수학식 7에 표현 된 두 변수 사이의 관계는 수학식 8과 같이 재정리할 수 있다.
Figure 112006002741138-PAT00030
Figure 112006002741138-PAT00031
Figure 112006002741138-PAT00032
수학식 8에 표시된 두 변수 사이의 관계와 변수 j값에 따른 바이너리 비트(
Figure 112006002741138-PAT00033
)의 값을 이용하면, 두 변수의 관계에 대한 다른 수학적 표현을 수학식 9와 같이 표시할 수 있다.
Figure 112006002741138-PAT00034
수학식 3 내지 수학식 9를 이용하면, 스칼라 곱셈연산의 결과 Q(=kP)를 구하는 일반적인 MPLA는 아래와 같이 표현할 수 있다.
input:
Figure 112006002741138-PAT00035
,
Figure 112006002741138-PAT00036
output:
Figure 112006002741138-PAT00037
1.
Figure 112006002741138-PAT00038
← P
2.
Figure 112006002741138-PAT00039
← 2P
3. for i = t-2 to 0, do
3.1 if
Figure 112006002741138-PAT00040
= 1 then
Figure 112006002741138-PAT00041
Figure 112006002741138-PAT00042
+
Figure 112006002741138-PAT00043
;
Figure 112006002741138-PAT00044
Figure 112006002741138-PAT00045
3.2 else
Figure 112006002741138-PAT00046
Figure 112006002741138-PAT00047
+
Figure 112006002741138-PAT00048
;
Figure 112006002741138-PAT00049
Figure 112006002741138-PAT00050
end for;
4. return
Figure 112006002741138-PAT00051
단계 3에서 변수 i가 t-2로부터 시작하는 것은, 이미 단계 1 및 2에서 변수 i가 t-1인 경우에 대하여 고려하였기 때문이다. 덧셈연산(
Figure 112006002741138-PAT00052
+
Figure 112006002741138-PAT00053
)은 수학식 3 내지 수학식 6의 방정식을 수행하여 얻어지며, 여기서 단계 1 및 단계 2를 참조하면,
Figure 112006002741138-PAT00054
Figure 112006002741138-PAT00055
가 동일하지 않으므로, 상기 덧셈연산(
Figure 112006002741138-PAT00056
+
Figure 112006002741138-PAT00057
)에는 수학식 3 및 수학식 5가 적용될 것이다.
수학식 7에 표시된 두 변수
Figure 112006002741138-PAT00058
Figure 112006002741138-PAT00059
의 관계를 고려하면, 암호시스템에서 수행되는 연산에 소정의 폴트가 유입되지 않은 경우, 두 변수
Figure 112006002741138-PAT00060
Figure 112006002741138-PAT00061
의 차이는 항상 1이 된다. 이러한 사실은, 상술한 일반적인 MPLA에 적용되는 임의의 변수
Figure 112006002741138-PAT00062
Figure 112006002741138-PAT00063
의 차이가 항상 P가 된다는 것과 동일한 의미이다.
2개의 무작위 폴트가 유입되었음에도 불구하고 상기 2개의 임의의 변수
Figure 112006002741138-PAT00064
Figure 112006002741138-PAT00065
의 차이가 P가 될 가능성, 즉 폴트가 유입되지 않은 것과 같은 결과가 발생할 가능성은 거의 0(Zero)에 가깝다. 이러한 사실은 이 분야의 일반적인 기술자에게 자명한 사실로 받아들여지므로, 상기와 같은 특별한 경우에 대해서는 여기서 고려하지 않는다.
일반적인 MPLA에 적용되는 임의의 변수
Figure 112006002741138-PAT00066
,
Figure 112006002741138-PAT00067
및 P가, 동일한 조건을 다르게 표현한 수학식 10의 3개의 수학식 중의 하나를 만족하면 폴트가 유입되지 않은 것으로 판단할 수 있다.
Figure 112006002741138-PAT00068
Figure 112006002741138-PAT00069
Figure 112006002741138-PAT00070
한 편, ECC에서 폴트의 유입여부를 판단하는 조건을 RSA에서 수행하는 모듈라 지수승 연산을 수행하는 알고리즘에 적용하기 위해서는 수학식 11의 방정식을 고려하여야 한다.
Figure 112006002741138-PAT00071
Figure 112006002741138-PAT00072
Figure 112006002741138-PAT00073
여기서, 수학식 11의 세 변수 M,
Figure 112006002741138-PAT00074
Figure 112006002741138-PAT00075
는, 수학식 10의 세 변수 P,
Figure 112006002741138-PAT00076
Figure 112006002741138-PAT00077
에 각각 대응한다. 수학식 10과 수학식 11은 이 분야의 일반적인 기술자라면 누구든지 쉽게 얻을 수 있으므로 여기서는 구체적으로 설명하지 않는다.
ECC에서는 상기 세 변수 P,
Figure 112006002741138-PAT00078
Figure 112006002741138-PAT00079
가 수학식 10에 표시된 동일한 의미의 3개의 수학식 중의 하나를 만족하는가를 검사하고, RSA에서는 상기 세 변수 M,
Figure 112006002741138-PAT00080
Figure 112006002741138-PAT00081
가 수학식 11에 표시된 동일한 의미의 3개의 수학식 중의 하나를 만족하는가를 검사함으로써, 연산 도중에 폴트가 유입되었는가를 판단할 수 있다.
본 발명에서는, 수학식 10 및 수학식 11에 표시된 세 변수들 사이의 관계를 검사하는 단계를 ECC 및 RSA에 적용되는 알고리즘에 포함시킴으로써, 시스템의 수행능력을 감소시키지 않으면서도 다양한 종류의 암호시스템에 쉽게 적용할 수 있는 알고리즘을 제안한다.
상술한 수학식 10 및 수학식 11의 조건을 검사하는 단계를 알고리즘에 적용할 위치에 따라, 스칼라 곱셈연산 도중에 검사를 실시하는 정규 검사(Regular Check) 및 무작위 검사(Random Check)와, 스칼라 곱셈연산이 모두 끝난 후 연산의 결과 값이 출력되기 전에 검사를 실시하는 최종 검사(At the End Check)의 3개의 검사방법을 제안한다.
상기 정규 검사는 반복되는 모든 스칼라 곱셈연산에서 매번 검사를 실시하며, 상기 무작위 검사는 반복되는 스칼라 곱셈연산 중 선택된 임의의 스칼라 곱셈연산에서만 검사를 실시한다. 상기 최종 검사는 반복되는 스칼라 곱셈연산이 모두 끝난 직후 연산 결과를 출력하기 전에 검사를 실시한다.
먼저 정규검사를 적용하는 MPLA의 실시예에 대하여 설명한다.
도 3은 본 발명에 따른 DFA에 대항하는 MPLA의 제1실시예이다.
도 3을 참조하면, 정규검사를 적용하는 상기 알고리즘(300)은, 초기화단계(310), 반복연산단계(330) 및 전송단계(350)를 구비한다.
초기화단계(310)는, 반복연산변수 i의 초기 값으로 t-1(t는 정수)을 설정하고, 기본 포인트 P 및 스칼라 k를 수신하는 단계(311) 및 제1변수(
Figure 112006002741138-PAT00082
)를 상기 기 본 포인트 P로 치환하고, 제2변수(
Figure 112006002741138-PAT00083
)를 두 배의 상기 기본 포인트 2P로 치환하는 단계(312)를 구비한다. 상기 스칼라 k는 바이너리 비트(Binary Bit)로
Figure 112006002741138-PAT00084
와 같이 표시할 수 있다.
반복연산단계(330)는, 상기 스칼라 k와 상기 기본 포인트 P를 곱한 값 Q를 연산하기 위하여 상기 2개의 변수
Figure 112006002741138-PAT00085
Figure 112006002741138-PAT00086
를 이용한 반복되는 스칼라 곱셈연산을 수행하고, 폴트가 유입되었는가를 검사하기 위하여 상기 곱셈연산 도중에 상기 2개의 변수 및 상기 기본 포인트 P 사이의 관계를 검사하며, 검사결과에 따라 상기 Q를 출력하거나 경고신호(STOP)를 출력한다.
상기 반복연산단계(330)는, 변수치환단계(331), 폴트 유입 검사 및 조치단계(341) 및 반복연산변수 i가 0(Zero) 보다 적은가를 판단하는 단계(345)를 구비한다. 상기 변수치환단계(331)는, 반복연산변수 i의 값을 1(one)씩 감소시키는 단계(332), 상기 반복연산변수 i의 값에 따라 상기 스칼라 k에 대응되는 바이너리 비트
Figure 112006002741138-PAT00087
의 값이 1인가를 판단하는 단계(333), 제1변수치환단계(334) 및 제2변수치환단계(335)를 구비하여 스칼라 곱셈연산을 수행한다. 상기 제1변수치환단계(334)는, 상기
Figure 112006002741138-PAT00088
의 값이 1(one)인 경우에 적용되며, 상기 제1변수(
Figure 112006002741138-PAT00089
)를 상기 제1변수(
Figure 112006002741138-PAT00090
)와 상기 제2변수(
Figure 112006002741138-PAT00091
)를 더한 값(
Figure 112006002741138-PAT00092
+
Figure 112006002741138-PAT00093
)으로 치환하고, 상기 2변수(
Figure 112006002741138-PAT00094
)를 상기 제2 변수(
Figure 112006002741138-PAT00095
)를 2배한 값(
Figure 112006002741138-PAT00096
)으로 치환한다. 상기 제2변수치환단계(335)는, 상기
Figure 112006002741138-PAT00097
의 값이 1이 아닌 경우에 적용되며, 상기 제1변수(
Figure 112006002741138-PAT00098
)를 상기 제1변수(
Figure 112006002741138-PAT00099
)를 2배한 값(
Figure 112006002741138-PAT00100
)으로 치환하고 상기 제2변수(
Figure 112006002741138-PAT00101
)를 상기 제1변수(
Figure 112006002741138-PAT00102
) 와 상기 제2변수(
Figure 112006002741138-PAT00103
)를 더한 값(
Figure 112006002741138-PAT00104
+
Figure 112006002741138-PAT00105
)으로 치환한다.
상기 폴트 유입 검사 및 조치단계(341)는, 상기 제1변수(
Figure 112006002741138-PAT00106
), 상기 2변수(
Figure 112006002741138-PAT00107
) 및 상기 기본 포인트 P의 값들이, 이들 사이에 미리 정한 소정의 관계를 만족하는가 여부를 검사하여 곱셈연산을 계속 수행시키기로 결정하거나 상기 곱셈연산을 중지하고 상기 경고신호(STOP)를 발생시킨다.
폴트 유입 검사 및 조치단계(341)는, 폴트 유입 검사단계(342) 및 조치단계(343)를 구비한다. 상기 폴트 유입 검사단계(342)는, 상기 변수치환단계(331)에서 치환된 2개의 변수(
Figure 112006002741138-PAT00108
,
Figure 112006002741138-PAT00109
) 및 최초의 기본포인트(P)가, 수학식 10에 표현한 3개의 수학식
Figure 112006002741138-PAT00110
,
Figure 112006002741138-PAT00111
Figure 112006002741138-PAT00112
중의 하나를 만족하는가를 검사하며, 검사결과 상기 수학식 10에 표현된 수식 중의 하나를 만족하는 경우에는 상기 반복연산변수 i가 0(Zero)인가를 판단하는 단계(345)로 진행한다. 상기 조치단계(343)는, 상기 수학식 10에 표현된 수식 중의 어느 하나의 수식도 만족하지 못하는 경우에는 이어지는 곱셈연산을 중단시킬 것인가를 결정하고, 이어지는 곱셈연산을 중단시키기로 결정한 경우에는 경고신호(STOP)를 발생시키고, 이어지는 곱셈연산을 계속 수행시키기로 결정한 경우에는 상기 반복연산변수 i가 0(Zero)인가를 판단하는 단계(345)로 진행한다.
상기 곱셈연산을 중지하기로 결정이 되기 이전까지는 상기 반복연산변수 i가 0(Zero)이 될 때까지 상기 변수치환단계(331)를 반복하여 수행한다.
상기 전송단계(350)는, 소정의 연산장치에 상기 Q를 전달한다.
이어서, 무작위검사를 적용하는 MPLA의 다른 실시예에 대하여 설명한다.
도 4는 본 발명에 따른 DFA에 대항하는 MPLA의 제2실시예이다.
도 4를 참조하면, 무작위검사를 적용하는 상기 알고리즘(400)은, 초기화 단계(410), 반복연산단계(430) 및 전송단계(450)를 구비한다.
먼저, 스칼라 k를 바이너리 비트(Binary Bit)로
Figure 112006002741138-PAT00113
와 같이 표시한다. 초기화단계(410) 및 전송단계(450)는, 도 3에 도시된 제1실시예(300)의 초기화단계(310) 및 전송단계(350)와 동일하므로, 설명을 생략한다.
반복연산단계(430)는, 변수치환단계(431), 변수 체크(Check)의 값에 따라 폴트유입검사를 수행할 것인가를 결정하는 단계(436), 폴트 유입 검사 및 조치단계(441) 및 상기 반복연산변수 i가 0(Zero)보다 적은 수인가를 판단하는 단계(445)를 구비한다.
상기 변수치환단계(431)는, 도 3에 도시된 변수치환단계(331)와 동일한 기능을 수행하므로 설명은 생략한다.
변수인 체크(Check)에 할당된 값에 따라 폴트유입검사를 수행할 것인가를 결정하는 단계(436)는, 변수인 체크(Check)에 임의의 수(random number)를 할당하는 단계(437), 상기 변수인 체크에 할당된 값이 미리 정한 기준 값과 일치하는 가를 판단하는 단계(438)를 구비한다. 상기 변수 체크에 할당된 값이 상기 기준 값과 일치하는 경우에는 폴트유입검사 및 조치단계(441)를 수행하도록 하며, 그렇지 않은 경우에는 곱셈연산을 계속 수행하게 한다(445). 바로 이점이 도 3에 도시된 정규검사와 다른 점이다. 상기 정규검사는 스칼라 곱셈연산이 수행되는 매 연산마다 폴트 유입 검사를 수행하는 것이지만, 도 4에 도시된 무작위 검사는 변수인 체크에 할당될 값을 랜덤(random)하게 정하고 폴트 유입 여부를 검사하는 경우도 상기 변수 체크에 할당된 값에 의하여 결정되기 때문에, 도 3에 도시된 방법에 비하여 폴트유입검사의 회수가 줄어든다. 도 4에서는 상기 기준 값으로 1(one)을 가정하였으나, 2진수를 사용하는 시스템에서는 0(zero)이 되는 것도 가능하며, 시스템에 따라 적응적으로 변경시킬 수 있다.
폴트 유입 검사 및 조치단계(441)는, 도 3에 도시된 폴트 유입 검사 및 조치단계(341)와 동일한 과정을 수행하므로 설명을 생략한다.
상기 단계(445)의 판단 결과, 상기 반복연산변수 i가 0보다 적지 않은 경우에는 변수치환단계(431)로 진행하여 스칼라 곱셈연산을 계속하여 수행한다.
마지막으로 최종검사를 적용하는 MPLA의 또 다른 실시예를 설명한다.
도 5는 본 발명에 따른 DFA에 대항하는 MPLA의 제3실시예이다.
도 5를 참조하면, 최종검사를 적용하는 상기 알고리즘(500)은, 초기화 단계(510), 반복연산단계(530) 및 전송단계(550)를 구비한다.
먼저, 스칼라 k를 바이너리 비트(Binary Bit)로
Figure 112006002741138-PAT00114
와 같이 표시한다. 초기화단계(510)는 도 3에 도시된 제1실시예(300)의 초기화단계(310) 및 도 4에 도시된 제2실시예(400)의 초기화단계(410)와 동일하므로, 설명을 생략한 다.
반복연산단계(530)는, 상기 2개의 변수를 이용한 반복되는 스칼라 곱셈연산을 수행하여 상기 스칼라 k와 상기 기본 포인트 P를 곱한 값 Q를 연산한다.
상기 반복연산단계(530)는, 상기 반복연산변수 i의 값을 1(one)씩 감소시키는 단계(531), 상기 반복연산변수 i의 값에 따라 상기 스칼라 k에 대응되는 바이너리 비트
Figure 112006002741138-PAT00115
의 값이 1인가를 판단하는 단계(532), 제1변수치환단계(533), 제2변수치환단계(534) 및 상기 반복연산변수 i가 0(Zero) 보다 적은가를 판단하는 단계(535)를 구비한다. 상기 제1변수치환단계(533)는, 상기
Figure 112006002741138-PAT00116
의 값이 1(one)인 경우에 적용되며, 상기 제1변수(
Figure 112006002741138-PAT00117
)를 상기 제1변수(
Figure 112006002741138-PAT00118
)와 상기 제2변수(
Figure 112006002741138-PAT00119
)를 더한 값(
Figure 112006002741138-PAT00120
+
Figure 112006002741138-PAT00121
)으로 치환하고, 상기 2변수(
Figure 112006002741138-PAT00122
)를 상기 제2 변수(
Figure 112006002741138-PAT00123
)를 2배한 값(
Figure 112006002741138-PAT00124
)으로 치환한다. 상기 제2변수치환단계(534)는, 상기
Figure 112006002741138-PAT00125
의 값이 1이 아닌 경우에 적용되며, 상기 제1변수(
Figure 112006002741138-PAT00126
)를 상기 제1변수(
Figure 112006002741138-PAT00127
)를 2배한 값(
Figure 112006002741138-PAT00128
)으로 치환하고 상기 제2변수(
Figure 112006002741138-PAT00129
)를 상기 제1변수(
Figure 112006002741138-PAT00130
) 와 상기 제2변수(
Figure 112006002741138-PAT00131
)를 더한 값(
Figure 112006002741138-PAT00132
+
Figure 112006002741138-PAT00133
)으로 치환한다.
상기 단계(535)의 판단 결과, 상기 반복연산변수 i가 0보다 적지 않은 경우에는 상기 반복연산변수 i의 값을 1(one)씩 감소시키는 단계(531)로 진행되고, 그렇지 않은 경우에는 상기 폴트 유입 검사 및 조치단계(551)를 수행하는 단계로 진행된다.
상기 폴트 유입 검사 및 조치단계(550)는, 상기 2개의 변수 및 상기 기본 포인트 P 사이에 미리 정해진 소정의 관계를 분석하여 폴트가 유입되었는가를 검사하며, 검사결과에 따라 상기 연산결과 Q 또는 경고신호(STOP)를 출력한다.
상기 폴트 유입 검사 및 조치단계(550)는, 폴트유입검사단계(522), 연산결과 Q를 출력하는 단계(552) 및 경고신호(STOP)를 발생시키는 단계(553)를 구비한다. 상기 폴트 유입 검사 단계(551)는, 상기 변수치환단계(533, 534)에서 치환된 2개의 변수(
Figure 112006002741138-PAT00134
,
Figure 112006002741138-PAT00135
) 및 최초의 기본포인트(P) 사이의 관계가, 수학식 10에 표시한 3개의 식
Figure 112006002741138-PAT00136
,
Figure 112006002741138-PAT00137
Figure 112006002741138-PAT00138
중의 하나를 만족하는가를 검사한다. 연산결과 Q를 출력하는 단계(552)는, 상기 수학식 10에 표시된 수식 중의 어느 하나의 수식을 만족하는 경우에는 연산결과 Q를 출력한다. 경고신호(STOP)를 발생시키는 단계(553)는, 상기 수학식에 표시된 수식 중의 어느 하나의 수식도 만족하지 못하는 경우에는 경고신호 STOP를 발생시킨다.
도 3 내지 도 5에 도시한, 조치단계(343, 443, 553)에서 발생되는 경고신호 STOP를 이용하여 취할 수 있는 조치는 상당히 많으며, 아래에 그 예를 들어 본다.
1. 수행중인 연산을 중단하고, 연산에 사용한 레지스터의 값들을 셋(set) 또는 리셋(reset) 시키며, 출력을 0(zero)으로 설정한다.
2. 대한민국에 출원된 특허출원번호 2005-0022929에서 제안한 바와 같이, 비밀키 값에 상기 폴트확산을 적용시킨 후(apply fault diffusion for the secret key value) 연산을 계속 진행한다.
3. 대한민국에 출원된 특허출원번호 2005-0018429에서 제안한 바와 같이, 출력 점(output point)을 변형시켜서(Modify) 사용하는 것이다.
도 3에 도시된 정규검사를 적용하는 MPLA는, 폴트가 유입되는 즉시 조치를 취할 수 있기 때문에, 비밀 등급이 높은 암호시스템에 적용하기에 적합하다. 반면에, 암호시스템의 퍼포먼스는 낮아지게 되지만, 도 1에 도시한 종래의 기술인 "compute twice and check" 접근법에 비해서는 퍼포먼스가 높다.
도 4에 도시된 무작위검사를 적용하는 MPLA는, 정규검사를 적용하는 MPLA의 장점을 가지면서도 퍼포먼스를 덜 낮아지게 한다.
도 5에 도시된 최종검사를 적용하는 MPLA는, 상기 정규검사 및 상기 무작위검사를 적용하는 MPLA에 비하여 퍼포먼스의 감소가 가장 적은 장점이 있다.
그러나 본 발명에 따른 MPLA의 가장 큰 장점은, DFA에 능동적으로 대응할 수 있다는 점이며, 아울러 전력 분석에 의한 공격에 대해서도 대응할 수 있다.
도 3 내지 도 5에 본 발명의 따른 MPLA의 3가지 실시예를 나타내었다. 상기의 실시예는 ECC에서 적용되는 스칼라 곱셈연산에 적용되는 경우에 대하여 설명이 되어 있다. 그러나,
1. 도 3 내지 도 5에 도시된 도면,
2. 이들에 대한 설명 및
3. ECC에서의 스칼라 곱셈연산과 RSA에서의 모듈라 지수승 연산사이의 관계를 고려하면,
당업자라면 누구든지, 상기의 MPLA를 RSA의 모듈라 지수승 연산에 사용될 수 있는 MPLA로 변형시킬 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘은, 상기 알고리즘이 수행되고 있는 도중에 DFA를 이용한 암호시스템의 침입에 능동적으로 대응할 수 있는 장점이 있다.

Claims (20)

  1. 소수 유한 필드(Prime Finite Field) 또는 2진 유한 필드(Binary Finite Field)에서 스칼라 곱셈연산을 수행하는 몽고메리 전력 래더 알고리즘에 있어서,
    반복연산변수 i의 초기 값을 설정하고, 임의의 타원 곡선에 포함되는 기본 포인트 P 및 스칼라 k를 수신하고, 상기 기본 포인트 P를 이용하여 적어도 2개의 변수를 초기화하는 단계(310, 410); 및
    상기 2개의 변수를 이용하여 상기 스칼라 k와 상기 기본 포인트 P를 곱한 값 Q를 연산하고, 상기 곱셈연산 도중에 상기 2개의 변수 및 상기 기본 포인트 P 사이의 관계를 분석하여 폴트가 유입되었는가를 검사하며, 검사결과에 따라 상기 Q를 출력하거나 경고신호(STOP)를 출력하는 반복연산단계(330, 430)를 구비하는 것을 특징으로 하는 DFA(Differential Fault Analysis)에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘(Montgomery Power Ladder Algorithm).
  2. 제1항에 있어서, 상기 폴트가 유입되었는가를 검사는,
    상기 Q를 구하기 위하여 수행되는 반복되는 모든 스칼라 곱셈연산에서 검사하거나, 반복되는 스칼라 곱셈연산 중에서 선택된 임의의 순간에만 검사하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  3. 제2항에 있어서, 상기 초기화단계(310)는,
    반복연산변수 i의 초기 값으로 t-1(t는 정수)를 설정하고, 상기 기본 포인트 P 및 상기 스칼라 k를 수신하는 단계(311); 및
    제1변수(
    Figure 112006002741138-PAT00139
    )를 상기 기본 포인트 P로 치환하고, 제2변수(
    Figure 112006002741138-PAT00140
    )를 두 배의 상기 기본 포인트 2P로 치환하는 단계(312)를 구비하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  4. 제3항에 있어서, 상기 반복연산단계(330)는,
    상기 스칼라 k를 바이너리 비트(Binary Bit)로
    Figure 112006002741138-PAT00141
    와 같이 표시할 때,
    상기 반복연산변수 i에 설정된 값을 변화시키면서, 상기 스칼라 k에 대응되는 바이너리 비트 중의 하나인
    Figure 112006002741138-PAT00142
    의 값에 따라 상기 제1변수(
    Figure 112006002741138-PAT00143
    ) 및 상기 2변수(
    Figure 112006002741138-PAT00144
    )를 미리 정한 소정의 값으로 치환하는 변수치환단계(331);
    상기 제1변수(
    Figure 112006002741138-PAT00145
    ), 상기 2변수(
    Figure 112006002741138-PAT00146
    ) 및 상기 기본 포인트 P 사이에 미리 설정한 소정의 관계를 만족하는가 여부를 검사하여 곱셈연산을 계속 수행시키기로 결정하거나 상기 경고신호(STOP)를 발생하는 폴트 유입 검사 및 조치단계(341); 및
    상기 반복연산변수 i가 0(Zero) 보다 적은가를 판단하는 단계(345)를 구비하여,
    상기 곱셈연산을 중지하기로 결정이 되기 이전까지는 상기 반복연산변수 i가 0(Zero)이 될 때까지 상기 변수치환단계(331)를 반복하여 수행하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  5. 제4항에 있어서, 상기 변수치환단계(331)는,
    상기 반복연산변수 i의 값을 1(one)씩 감소시키는 단계(332);
    상기
    Figure 112006002741138-PAT00147
    의 값이 1인가를 판단하는 단계(333);
    상기
    Figure 112006002741138-PAT00148
    의 값이 1(one)인 경우, 상기 제1변수(
    Figure 112006002741138-PAT00149
    )를 상기 제1변수(
    Figure 112006002741138-PAT00150
    )와 상기 제2변수(
    Figure 112006002741138-PAT00151
    )를 더한 값(
    Figure 112006002741138-PAT00152
    +
    Figure 112006002741138-PAT00153
    )으로 치환하고, 상기 2변수(
    Figure 112006002741138-PAT00154
    )를 상기 제2 변수(
    Figure 112006002741138-PAT00155
    )를 2배한 값(
    Figure 112006002741138-PAT00156
    )으로 치환하는 제1변수치환단계(334); 및
    상기
    Figure 112006002741138-PAT00157
    의 값이 1이 아닌 경우, 상기 제1변수(
    Figure 112006002741138-PAT00158
    )를 상기 제1변수(
    Figure 112006002741138-PAT00159
    )를 2배한 값(
    Figure 112006002741138-PAT00160
    )으로 치환하고 상기 제2변수(
    Figure 112006002741138-PAT00161
    )를 상기 제1변수(
    Figure 112006002741138-PAT00162
    )와 상기 제2변수(
    Figure 112006002741138-PAT00163
    )를 더한 값(
    Figure 112006002741138-PAT00164
    +
    Figure 112006002741138-PAT00165
    )으로 치환하는 제2변수치환단계(335)를 구비하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  6. 제4항에 있어서, 폴트 유입 검사 및 조치단계(341)는,
    상기 변수치환단계(331)에서 치환된 2개의 변수(
    Figure 112006002741138-PAT00166
    ,
    Figure 112006002741138-PAT00167
    ) 및 최초의 기본포인트(P) 사이의 관계가 3개의 동일한 수학식
    Figure 112006002741138-PAT00168
    ,
    Figure 112006002741138-PAT00169
    Figure 112006002741138-PAT00170
    중의 하나를 만족하는가를 검사하며, 상기 수학식에 표시된 수식 중 의 하나를 만족하는 경우에는 상기 반복연산변수 i가 0(Zero)인가를 판단하는 단계(345)로 진행하는 폴트 유입 검사 단계(342); 및
    상기 3개의 동일한 수학식 중의 어느 하나도 만족하지 못하는 경우에는 계속되는 곱셈연산을 중단시킬 것인가를 결정하고, 이어지는 곱셈연산을 중단시키기로 결정한 경우에는 경고신호(STOP)를 발생시키고, 이어지는 곱셈연산을 계속 수행시키기로 결정한 경우에는 상기 반복연산변수 i가 0(Zero)인가를 판단하는 단계(345)로 진행하는 조치단계(343)를 구비하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  7. 제3항에 있어서, 상기 반복연산단계(430)는,
    상기 스칼라 k를 바이너리 비트(Binary Bit)로
    Figure 112006002741138-PAT00171
    와 같이 표시할 때,
    상기 반복연산변수 i의 값을 변화시키면서, 상기 스칼라 k에 대응되는 바이너리 비트 중의 하나인
    Figure 112006002741138-PAT00172
    의 값에 따라 상기 제1변수(
    Figure 112006002741138-PAT00173
    ) 및 상기 2변수(
    Figure 112006002741138-PAT00174
    )를 미리 정한 소정의 값으로 치환하는 변수치환단계(431);
    변수 체크(Check)에 설정된 값에 따라 폴트 검사를 수행할 것인가를 결정하는 단계(436);
    상기 변수 체크에 설정된 값에 따라, 상기 제1변수(
    Figure 112006002741138-PAT00175
    ), 상기 2변수(
    Figure 112006002741138-PAT00176
    ) 및 상기 기본 포인트 P 사이의 관계를 검사하여, 이어지는 곱셈연산을 계속 수행시 키기로 결정하거나 이어지는 곱셈연산을 중지하고 상기 경고신호(STOP)를 발생하는 폴트 유입 검사 및 조치단계(441); 및
    곱셈연산을 계속 수행하기로 결정된 경우에는 상기 반복연산변수 i가 0(Zero)보다 적은 수인가를 판단하는 단계(445)를 구비하며,
    상기 단계(445)의 판단 결과, 상기 반복연산변수 i가 0보다 적지 않다고 판단된 경우에는 변수치환단계(431)로 진행되는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  8. 제7항에 있어서, 상기 변수치환단계(431)는,
    상기 반복연산변수 i의 값을 1(one)씩 감소시키는 단계(432);
    상기
    Figure 112006002741138-PAT00177
    의 값이 1인가를 판단하는 단계(433);
    상기
    Figure 112006002741138-PAT00178
    의 값이 1(one)인 경우, 상기 제1변수(
    Figure 112006002741138-PAT00179
    )를 상기 제1변수(
    Figure 112006002741138-PAT00180
    )와 상기 제2변수(
    Figure 112006002741138-PAT00181
    )를 더한 값(
    Figure 112006002741138-PAT00182
    +
    Figure 112006002741138-PAT00183
    )으로 치환하고, 상기 2변수(
    Figure 112006002741138-PAT00184
    )를 상기 제2 변수(
    Figure 112006002741138-PAT00185
    )를 2배한 값(
    Figure 112006002741138-PAT00186
    )으로 치환하는 제1변수치환단계(434); 및
    상기
    Figure 112006002741138-PAT00187
    의 값이 1이 아닌 경우, 상기 제1변수(
    Figure 112006002741138-PAT00188
    )를 상기 제1 수(
    Figure 112006002741138-PAT00189
    )를 2배한 값(
    Figure 112006002741138-PAT00190
    )으로 치환하고 상기 제2변수(
    Figure 112006002741138-PAT00191
    )를 상기 제1변수(
    Figure 112006002741138-PAT00192
    ) 와 상기 제2변수(
    Figure 112006002741138-PAT00193
    )를 더한 값(
    Figure 112006002741138-PAT00194
    +)으로 치환하는 제2변수치환단계(435)를 구비하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  9. 제8항에 있어서, 상기 폴트 검사를 수행할 것인가를 결정하는 단계(436)는,
    변수 체크에 임의의 수(random number)를 설정하는 단계(437); 및
    상기 변수 체크에 설정된 값이, 미리 정한 기준 값과 일치하는 가를 판단하는 단계(438)를 구비하며,
    상기 변수 체크에 설정된 값이 상기 기준 값과 일치하는 경우에는 폴트 검사를 수행하도록 하며, 그렇지 않은 경우에는 곱셈연산을 계속 수행하게 하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  10. 제9항에 있어서, 상기 변수 체크에 설정되는 값은,
    2진 비트의 0(zero) 또는 1(one) 중의 하나인 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  11. 제8항에 있어서, 폴트 유입 검사 및 조치단계(441)는,
    상기 변수치환단계(431)에서 치환된 2개의 변수(
    Figure 112006002741138-PAT00196
    ,
    Figure 112006002741138-PAT00197
    ) 및 최초의 기본포인트(P) 사이가 3개의 동일한 수학식
    Figure 112006002741138-PAT00198
    ,
    Figure 112006002741138-PAT00199
    Figure 112006002741138-PAT00200
    중의 하나를 만족하는가를 검사하며, 상기 3개의 동일한 수학식 중의 하나를 만족하는 경우에는 상기 반복연산변수 i가 0(Zero)인가를 판단하는 단계(345)로 진행하는 폴트 유입 검사 단계(442); 및
    상기 3개의 동일한 수학식 중의 어느 하나도 만족하지 못하는 경우에는, 이어지는 곱셈연산을 중단시킬 것인가를 결정하고, 이어지는 곱셈연산을 중단시키기로 결정한 경우에는 경고신호(STOP)를 발생시키고, 이어지는 곱셈연산을 계속 수행시키기로 결정한 경우에는 상기 반복연산변수 i가 0(Zero)인가를 판단하는 단계(445)로 진행하는 조치단계(443)를 구비하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  12. 제3항에 있어서,
    상기 Q를 사용할 연산장치에 상기 Q를 전달하는 단계를 더 구비하는 것을 특징으로 하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  13. 소수 유한 필드(Prime Finite Field) 또는 2진 유한 필드(Binary Finite Field)에서 스칼라 곱셈연산을 수행하는 몽고메리 전력 래더 알고리즘에 있어서,
    반복연산변수 i의 초기 값을 설정하고, 임의의 타원 곡선에 포함되는 기본 포인트 P 및 스칼라 k를 수신하고, 상기 기본 포인트 P를 이용하여 적어도 2개의 변수를 초기화하는 단계(510);
    상기 2개의 변수를 이용하여 상기 스칼라 k와 상기 기본 포인트 P를 곱한 값 Q를 연산하는 반복연산단계(530); 및
    상기 2개의 변수 및 상기 기본 포인트 P 사이의 관계를 분석하여 폴트가 유 입되었는가를 검사하며, 검사결과에 따라 상기 Q 또는 경고신호(STOP)를 출력하는 폴트 유입 검사 및 조치단계(550)를 구비하는 것을 특징으로 하는 DFA(Differential Fault Analysis)에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘(Montgomery Power Ladder Algorithm).
  14. 제13항에 있어서, 상기 초기화단계(510)는,
    반복연산변수 i의 초기 값으로 t-1(t는 정수)을 설정하고, 기본 포인트 P 및 스칼라 k를 수신하는 단계(511); 및
    제1변수(
    Figure 112006002741138-PAT00201
    )를 상기 기본 포인트 P로 치환하고, 제2변수(
    Figure 112006002741138-PAT00202
    )를 두 배의 상기 기본 포인트 2P로 치환하는 단계(512)를 구비하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  15. 제14항에 있어서, 상기 반복연산단계(530)는,
    상기 스칼라 k를 바이너리 비트(Binary Bit)로
    Figure 112006002741138-PAT00203
    와 같이 표시할 때,
    상기 반복연산변수 i에 설정된 값을 1(one)씩 감소시키는 단계(531);
    상기 스칼라 k에 대응되는 바이너리 비트
    Figure 112006002741138-PAT00204
    의 값이 1인가를 판단하는 단계(532);
    상기
    Figure 112006002741138-PAT00205
    의 값이 1(one)인 경우, 상기 제1변수(
    Figure 112006002741138-PAT00206
    )를 상기 제1변수(
    Figure 112006002741138-PAT00207
    ) 와 상기 제2변수(
    Figure 112006002741138-PAT00208
    )를 더한 값(
    Figure 112006002741138-PAT00209
    +
    Figure 112006002741138-PAT00210
    )으로 치환하고, 상기 2변수(
    Figure 112006002741138-PAT00211
    )를 상기 제2 변수(
    Figure 112006002741138-PAT00212
    )를 2배한 값(
    Figure 112006002741138-PAT00213
    )으로 치환하는 제1변수치환단계(533);
    상기
    Figure 112006002741138-PAT00214
    의 값이 1이 아닌 경우, 상기 제1변수(
    Figure 112006002741138-PAT00215
    )를 상기 제1 수(
    Figure 112006002741138-PAT00216
    )를 2배한 값(
    Figure 112006002741138-PAT00217
    )으로 치환하고 상기 제2변수(
    Figure 112006002741138-PAT00218
    )를 상기 제1변수(
    Figure 112006002741138-PAT00219
    ) 와 상기 제2변수(
    Figure 112006002741138-PAT00220
    )를 더한 값(
    Figure 112006002741138-PAT00221
    +
    Figure 112006002741138-PAT00222
    )으로 치환하는 제2변수치환단계(534); 및
    상기 반복연산변수 i가 0(Zero) 보다 적은가를 판단하는 단계(535)를 구비하며,
    상기 단계(535)의 판단 결과, 상기 반복연산변수 i가 0보다 적지 않은 경우에는 상기 반복연산변수 i의 값을 1(one)씩 감소시키는 단계(531)로 진행되고, 그렇지 않은 경우에는 상기 폴트 유입 검사 및 조치단계(550)를 수행하는 단계로 진행되는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  16. 제14항에 있어서, 상기 폴트 유입 검사 및 조치단계(550)는,
    상기 변수치환단계(331)에서 치환된 2개의 변수(
    Figure 112006002741138-PAT00223
    ,
    Figure 112006002741138-PAT00224
    ) 및 최초의 기본포인트(P)를 이용하여 3개의 수학식
    Figure 112006002741138-PAT00225
    ,
    Figure 112006002741138-PAT00226
    Figure 112006002741138-PAT00227
    에 표시된 수식 중의 하나를 만족하는가를 검사하는 폴트 유입 검사 단계(551);
    상기 수학식에 표시된 수식 중의 어느 하나의 수식을 만족하는 경우에는 연 산결과 Q를 출력하는 단계(552); 및
    상기 수학식에 표시된 수식 중의 어느 하나의 수식도 만족하지 못하는 경우에는 경고신호(STOP)를 발생시키는 단계(553)를 구비하는 것을 특징으로 하는 DFA에 대항하는 방법을 구비하는 몽고메리 전력 래더 알고리즘.
  17. 제1항에 기재된 몽고메리 전력 래더 알고리즘이 프로그램 언어로 변환되어 저장되어 있는 기록매체.
  18. 제17항의 기록매체를 사용하는 암호시스템.
  19. 제13항에 기재된 몽고메리 전력 래더 알고리즘이 프로그램 언어로 변환되어 저장되어 있는 기록매체.
  20. 제19항의 기록매체를 사용하는 암호시스템.
KR1020060004175A 2006-01-14 2006-01-14 Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법 KR100874909B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060004175A KR100874909B1 (ko) 2006-01-14 2006-01-14 Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법
JP2007003863A JP2007189692A (ja) 2006-01-14 2007-01-11 Dfaに対抗する方法を含むモンゴメリ電力ラダーアルゴリズム
US11/622,508 US20080025498A1 (en) 2006-01-14 2007-01-12 Montgomery power ladder algorithm including countermeasure against differential fault analysis

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060004175A KR100874909B1 (ko) 2006-01-14 2006-01-14 Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법

Publications (2)

Publication Number Publication Date
KR20070075665A true KR20070075665A (ko) 2007-07-24
KR100874909B1 KR100874909B1 (ko) 2008-12-19

Family

ID=38344505

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060004175A KR100874909B1 (ko) 2006-01-14 2006-01-14 Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법

Country Status (3)

Country Link
US (1) US20080025498A1 (ko)
JP (1) JP2007189692A (ko)
KR (1) KR100874909B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100850202B1 (ko) * 2006-03-04 2008-08-04 삼성전자주식회사 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
EP2213037A1 (en) * 2007-10-30 2010-08-04 Certicom Corp. Fault detection in exponentiation and point multiplication operations using a montgomery ladder

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1840732A1 (en) * 2006-03-31 2007-10-03 Axalto SA Protection against side channel attacks
EP2117026A4 (en) 2007-02-26 2012-03-14 Fujikura Ltd MAGNETIC SENSOR MODULE AND DEVICE FOR DETECTING POSITION OF PISTONS
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
US10270598B2 (en) * 2016-08-26 2019-04-23 Intel Corporation Secure elliptic curve cryptography instructions

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003098962A (ja) 2001-09-20 2003-04-04 Hitachi Ltd 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
US7308096B2 (en) * 2000-05-30 2007-12-11 Hitachi, Ltd. Elliptic scalar multiplication system
JP2003216026A (ja) 2002-01-18 2003-07-30 Sony Corp 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム
JP4634046B2 (ja) 2003-01-28 2011-02-16 パナソニック株式会社 故障利用攻撃に対抗できる楕円べき倍演算装置及び情報セキュリティ装置
JP4284320B2 (ja) * 2003-08-06 2009-06-24 富士通株式会社 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100850202B1 (ko) * 2006-03-04 2008-08-04 삼성전자주식회사 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
EP2213037A1 (en) * 2007-10-30 2010-08-04 Certicom Corp. Fault detection in exponentiation and point multiplication operations using a montgomery ladder
EP2213037A4 (en) * 2007-10-30 2010-11-03 Certicom Corp ERROR RECOGNITION IN POTENTRATION AND COMMAMULTIPLICATION OPERATIONS WITH THE HELP OF A MONTGOMERY LADDER
US8442216B2 (en) 2007-10-30 2013-05-14 Certicom Corp. Fault detection in exponentiation and point multiplication operations using a montgomery ladder

Also Published As

Publication number Publication date
JP2007189692A (ja) 2007-07-26
US20080025498A1 (en) 2008-01-31
KR100874909B1 (ko) 2008-12-19

Similar Documents

Publication Publication Date Title
KR100850202B1 (ko) Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
EP1648111B1 (en) Tamper-resistant encryption using a private key
KR100874909B1 (ko) Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법
Shoufan et al. A timing attack against Patterson algorithm in the McEliece PKC
US8065531B2 (en) Decryption method
US20060285682A1 (en) Authentication system executing an elliptic curve digital signature cryptographic process
JP2009537025A (ja) サイドチャネル攻撃からの保護
KR100652377B1 (ko) 모듈라 지수승 알고리즘, 기록매체 및 시스템
KR20180137534A (ko) 암호적 거듭제곱 알고리즘에 대한 세이프-에러 오류 주입 공격에 대한 대책
US7286666B1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
US10461922B2 (en) Method and system for protecting a cryptographic operation
KR20100113130A (ko) 비대칭 암호화를 위한 대응조치 방법 및 디바이스
Junru The improved elliptic curve digital signature algorithm
Koziel et al. An exposure model for supersingular isogeny Diffie-Hellman key exchange
US9590805B1 (en) Ladder-based cryptographic techniques using pre-computed points
Boscher et al. Blinded fault resistant exponentiation revisited
Coron et al. A new baby-step giant-step algorithm and some applications to cryptanalysis
KR100431047B1 (ko) Crt에 기초한 rsa 공개키 암호화 방식을 이용한디지털 서명방법 및 그 장치
KR20080012634A (ko) 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
KR20080012633A (ko) 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
Schindler On the optimization of side-channel attacks by advanced stochastic methods
Aljuffri et al. Multi-bit blinding: A countermeasure for RSA against side channel attacks
Paar et al. Digital Signatures
KR100954844B1 (ko) 오류 주입 공격에 안전한 crt-rsa 모듈러 지수승 알고리즘을 이용한 디지털 서명 방법, 그 장치 및 이를 기록한 기록매체
Ulla et al. implementation of elliptic curve cryptosystem with bitcoin curves on SECP256k1, NIST256p, NIST521p, and LLL

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121130

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131129

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee