KR100850202B1 - Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법 - Google Patents

Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법 Download PDF

Info

Publication number
KR100850202B1
KR100850202B1 KR1020060020720A KR20060020720A KR100850202B1 KR 100850202 B1 KR100850202 B1 KR 100850202B1 KR 1020060020720 A KR1020060020720 A KR 1020060020720A KR 20060020720 A KR20060020720 A KR 20060020720A KR 100850202 B1 KR100850202 B1 KR 100850202B1
Authority
KR
South Korea
Prior art keywords
variable
fault
primary
scalar
check
Prior art date
Application number
KR1020060020720A
Other languages
English (en)
Other versions
KR20070091062A (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 KR1020060020720A priority Critical patent/KR100850202B1/ko
Priority to US11/712,942 priority patent/US8379842B2/en
Publication of KR20070091062A publication Critical patent/KR20070091062A/ko
Application granted granted Critical
Publication of KR100850202B1 publication Critical patent/KR100850202B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01FMEASURING VOLUME, VOLUME FLOW, MASS FLOW OR LIQUID LEVEL; METERING BY VOLUME
    • G01F15/00Details of, or accessories for, apparatus of groups G01F1/00 - G01F13/00 insofar as such details or appliances are not adapted to particular types of such apparatus
    • G01F15/10Preventing damage by freezing or excess pressure or insufficient pressure
    • 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/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01FMEASURING VOLUME, VOLUME FLOW, MASS FLOW OR LIQUID LEVEL; METERING BY VOLUME
    • G01F15/00Details of, or accessories for, apparatus of groups G01F1/00 - G01F13/00 insofar as such details or appliances are not adapted to particular types of such apparatus
    • G01F15/14Casings, e.g. of special material
    • 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
    • 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
    • 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

Abstract

ECC 패스트 몽고매리 전력 래더 알고리즘을 이용하여 DFA에 대응하는 암호화 방법이 개시된다. 본 발명의 실시예에 따른 암호화 방법은 타원 곡선 상의 기본 포인트 P와 스칼라 k를 수신하고 상기 기본 포인트 P를 이용하여 복수의 일차변수들(P1, P2)을 초기화하는 단계, 상기 복수의 일차변수들 P1, P2에 대응되는 복수의 이차변수들 T1, T2을 설정한 후, 상기 스칼라 k에 응답하여 상기 복수의 일차변수들 P1, P2 및 이차변수들 T1, T2을 반복 연산함으로써 상기 기본 포인트 P와 상기 스칼라 k의 곱인 스칼라 곱 Q(=kP)을 계산하며, 상기 스칼라 k에 응답하여 상기 복수의 일차변수들 P1, P2 및 이차변수들 T1, T2을 이용하여 폴트가 유입되었는지 체크하는 단계, 및 상기 폴트가 유입되지 않은 경우 상기 스칼라 곱 Q을 출력하는 단계를 구비한다. 본 발명의 실시예에 따른 암호화 방법은 암호시스템의 수행능력을 감소시키지 않으면서도 다양한 암호시스템에 적용하며 폴트를 이용한 다양한 공격에 대응할 수 있는 할 수 있는 장점이 있다.

Description

ECC 패스트 몽고매리 전력 래더 알고리즘을 이용하여 DFA 에 대응하는 암호화 방법{Cryptographic method for countering DFA using ECC fast Montgomery power ladder algorithm}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 DFA에 대응하는 CT&C 방법의 흐름도이다.
도 2는 DFA에 대응하는 COP 방법의 흐름도이다.
도 3은 몽고메리 알고리즘을 이용하여 스칼라 곱 연산을 수행하는 암호화 방법의 흐름도이다.
도 4는 본 발명의 실시예에 따른 암호화 방법의 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 암호화 방법의 흐름도이다.
도 6은 본 발명의 또 다른 실시예에 따른 암호화 방법의 흐름도이다.
본 발명은 암호화 방법에 관한 것으로서, 특히 ECC 패스트 몽고매리 전력 래더 알고리즘을 이용하여 DFA에 대응하는 암호화 방법에 관한 것이다.
정보화 사회의 도래와 함께 암호 알고리즘 및 암호 프로토콜(Protocol)을 이용한 정보의 보호는 그 중요성을 더해가고 있다. 정보를 보호하는데 사용되는 암호 알고리즘 중에서 RSA(Rivest Shamir Adleman) 암호시스템 및 타원곡선암호시스템(Elliptic Curve Cryptography: ECC)에서 사용되는 공개 키(open key) 암호 알고리즘은, 비밀 키(secrete key) 암호 알고리즘의 단점인 키 분배 문제, 전자서명 문제 등을 해결하면서 인터넷이나 금융망과 같은 여러 분야의 응용에 빠르게 적용이 되어 가고 있다.
RSA 공개 키 암호시스템 및 ECC 공개 키 암호시스템에 침입하려고 할 때 사이드 채널 분석(Side Channel Analysis: SCA)이 사용된다. 사이드 채널 분석의 종류로는 타이밍 분석(Timing Analysis), 전력분석(Power Analysis), 전자기 분석(Electro-Magnetic Analysis) 및 폴트 분석(Fault Analysis) 등이 널리 알려져 있다. 사이드 채널 분석은 해석하고자 하는 암호시스템의 하드웨어 구성을 구체적으로 알고 있을 경우에 유효한 공격방법이다.
폴트 분석 중에는, 연산되고 있는 변수(들)의 차이 값을 이용하여 암호시스템의 비밀 키를 찾아내는 차등 폴트 분석(Differential Fault Analysis: DFA)이 널리 알려져 있다. DFA는, 폴트를 암호시스템에 투입시키고, 투입된 폴트에 대응되는 연산결과를 분석하여, 암호시스템의 비밀 키를 찾는 방법이다.
레지스터(Register)에 저장될 또는 저장된 값은 폴트에 의하여 변경된다. 암호시스템은 소정의 연산을 수행할 때 레지스터에 저장된 값을 참고하기 때문에, 폴트에 의하여 변경된 값에 대응하는 에러가 연산결과에 포함된다. 암호분석가 (Crypt-analyst)는 에러가 수반되어 출력되는 연산결과를 해석하여 비밀 키 등에 대한 정보를 얻는다.
DFA에 대응하기 위하여, ECC에서 사용할 수 있는 여러 가지 방법이 제안되었다.
도 1은 DFA에 대응하는 CT&C 방법의 흐름도이다.
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) 등 어떠한 종류의 암호 알고리즘에도 적용될 수 있는 장점이 있다. 그 러나 CT&C 방법은 동일한 곱셈계산을 2번이나 하여야 하는 단점이 있으며, 또한 대부분의 스마트 카드(Smart Card) 및 이동기기(Mobile Devices)의 사용영역에서는 폴트 성분이 항상 존재하기 때문에, 스마트 카드나 이동기기에 CT&C 방법이 그대로 적용될 수 없는 단점이 있다.
도 2는 DFA에 대응하는 COP 방법의 흐름도이다.
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 패스트 몽고매리 전력 래더 알고리즘을 이용하여 DFA에 대응하는 암호화 방법을 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 암호화 방법은 타원 곡선 상의 기본 포인트 P와 스칼라 k를 수신하고 상기 기본 포인트 P를 이용하여 복수의 일차변수들(P1, P2)을 초기화하는 단계, 상기 복수의 일차변수들 P1, P2에 대응되는 복수의 이차변수들 T1, T2을 설정한 후, 상기 스칼라 k에 응답하여 상기 복수의 일차변수들 P1, P2 및 이차변수들 T1, T2을 반복 연산함으로써 상기 기본 포인트 P와 상기 스칼라 k의 곱인 스칼라 곱 Q(=kP)을 계산하며, 상기 스칼라 k에 응답하여 상기 복수의 일차변수들 P1, P2 및 이차변수들 T1, T2을 이용하여 폴트가 유입되었는지 체크하는 단계, 및 상기 폴트가 유입되지 않은 경우 상기 스칼라 곱 Q을 출력하는 단계를 구비한다.
상기 초기화하는 단계는 제 1 일차변수 P1를 상기 기본 포인트 P로, 제 2 일차변수 P2를 상기 기본 포인트 P의 2배로 각각 초기화하고, 반복연산변수 i(i는 정수)를 초기값 t-1(t는 정수)으로 설정하며, 상기 스칼라 k는 바이너리 비트 (kt-1, … , k1, k0)2로 표시되고 kt-1은 1이다.
상기 스칼라 곱 Q을 계산하는 단계는 제 1 이차변수 T1를 상기 제 1 일차변수 P1로, 제 2 이차변수 T2를 상기 제 2 일차변수 P2로 각각 설정하는 단계, 상기 반복연산변수 i가 0보다 작아질 때까지 상기 반복연산변수 i를 감소시키면서 상기 바이너리 비트 ki에 응답하여 상기 제 1 일차변수 P1와 상기 제 2 일차변수 P2를 소정의 값으로 반복하여 재설정하는 단계를 구비한다.
상기 재설정하는 단계는 상기 바이너리 비트 ki가 1이면 상기 제 2 일차변수 P2를 2배한 값을 상기 제 2 일차변수 P2로 재설정하고 상기 제 1 일차변수 P1와 상기 제 2 이차변수 T2의 합을 상기 제 1 일차변수 P1로 재설정하며, 상기 바이너리 비트 ki가 1이 아니면 상기 제 1 일차변수 P1를 2배한 값을 상기 제 1 일차변수 P1로 재설정하고 상기 제 1 이차변수 T1과 상기 제 2 일차변수 P2의 합을 상기 제 2 이차변수 P2로 재설정한다.
상기 폴트가 유입되었는지 체크하는 단계는 상기 제 1 일차변수 P1와 상기 제 2 일차변수 P2가 반복하여 재설정될 때마다 수행되거나, 상기 반복하여 재설정하는 단계 이후에 수행되거나 또는 상기 반복하여 재설정하는 단계 중 임의의 재설정하는 단계에서 수행된다.
상기 폴트가 유입되었는지 체크하는 단계가 상기 반복하여 재설정하는 단계 중 임의의 재설정하는 단계에서 수행되는 경우, 상기 초기화하는 단계는 체크 레이트 RATE를 더 설정하고, 상기 스칼라 곱 Q을 계산하는 단계는 랜덤하게 발생되는 체크 값 CHECK을 수신하는 단계를 더 구비하며, 상기 체크 값 CHECK이 상기 체크 레이트 RATE 이하인 경우에 대응하는 재설정하는 단계에서 상기 폴트가 유입되었는 지 체크하는 단계가 수행된다.
상기 폴트가 유입되었는지 체크하는 단계는, 상기 바이너리 비트 ki가 1인 경우, 상기 제 1 이차변수 T1의 2배를 상기 제 1 이차변수 T1로 재설정하고 상기 제 1 이차변수 T1에 응답하여 결정되는 상기 제 1 일차변수 P1와 상기 기본 포인트 P의 합을 상기 제 1 이차변수 T1으로 재설정하는 단계, 및 상기 제 2 일차변수 P2와 상기 재설정된 제 1 이차변수 T1가 같으면 폴트가 유입되지 않은 것으로 판단하고, 같지 않으면 폴트가 유입된 것으로 판단하는 단계를 구비하며, 상기 바이너리 비트 ki가 1이 아닌 경우, 상기 제 2 이차변수 T2의 2배를 상기 제 2 이차변수 T2로 재설정하고 상기 제 1 일차변수 T1에 응답하여 결정되는 상기 제 2 일차변수 P2와 상기 기본 포인트 P의 합을 상기 제 1 이차변수 T1로 재설정하는 단계, 및 상기 재설정된 제 2 이차변수 T2와 상기 재설정된 제 1 이차변수 T1가 같으면 폴트가 유입되지 않은 것으로 판단하고, 같지 않으면 폴트가 유입된 것으로 판단하는 단계를 구비한다.
본 발명의 실시예에 따른 암호화 방법은 상기 폴트가 유입된 것으로 판단하는 경우 알람신호를 출력하는 단계를 더 구비할 수 있다.
상기 알람신호를 출력하는 단계는 상기 암호화 방법과 관련된 연산을 중단하고 상기 연산이 이루어지는 소정의 레지스터를 리셋하는 단계, 상기 스칼라 k에 대해 폴트를 확산하는 단계, 및 상기 스칼라 곱 Q를 변경하는 단계 중 적어도 하나 이상을 포함한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
ECC에서는, 임의의 타원곡선(Elliptic Curve) E와 타원곡선 E 상의 한 점 P가 시스템 파라미터로서 선택된다. 암호화 통신을 원하는 사용자 1은 무작위(Random)로 정수 d를 생성시키고, d와 P를 곱하여 Q(=d*P)를 생성시킨다. 사용자 1은 Q를 공개 키로 공개하고, d를 사용자 1의 비밀 키로 안전하게 저장한다.
반대로 사용자 1에게 메시지 M을 비밀리에 전송하고자 하는 사용자 2는, 먼저 무작위로 정수 k를 생성시키고, 시스템 파라미터 중의 하나인 P와 정수 k를 곱하여 A(=k*P)를 생성시킨다. 사용자 1이 제공한 공개키 Q와 보내고자 하는 메시지 M을 사용하여 B(= M + kQ)를 생성시킨다. 마지막으로 사용자 2는 최종 결과 암호문 A,B를 사용자 1에게 전송한다.
사용자 2로부터 암호문 A,B를 전달받은 사용자 1은 자신의 비밀키 d를 사용하여 dA를 계산한 후, 다음 식 (1)과 같은 연산을 수행하여 메시지 M을 복원한다.
M=B-dA (1)
식 (1)을 참조하면, ECC 공개키 암호시스템에서 가장 중요한 연산은 덧셈연산과 스칼라 곱셈연산임을 알 수 있다.
타원곡선 E 상의 임의의 한 점(x,y)은 다음 식 (2)를 만족한다.
Figure 112006015681416-pat00001
(2)
암호(cryptographic)의 응용분야에서, 소수 유한 필드(Prime Finite Field) GF(p) 또는 이진 유한 필드(Binary Finite Field) GF(2n)의 연산에 식 (2)에 표시한 타원곡선의 특성을 사용할 수 있다. 여기서 소수 유한 필드는 구성요소(Element)의 개수가 소수(Prime Number) p로 한정된 영역(Field)을 의미하며, 구성요소의 수가 p개인 소수 유한 필드 GF(p)는 하나만 존재한다.
소수 유한 필드 GF(p)에서는, 동일하지 않은 두 변수 P=(x1,y1)와 Q=(x2,y2)를 더한 변수(P+Q) R=(x3,y3)을 구하기 위해서 다음 식 (3)의 연산이 수행된다.
Figure 112006015681416-pat00002
(3)
소수 유한 필드 GF(p)에서, 두 변수 P와 Q가 동일 한 경우에 변수 R은 다음 식 (4)의 연산을 수행하여 구할 수 있다.
Figure 112006015681416-pat00003
(4)
여기서, 두 변수 P 및 Q가 동일하다고 하였으므로, x1과 x2는 x로 표시하였 고, 마찬가지로 y1과 y2는 y로 표시하였다.
한편 2진 유한 필드 GF(2n)에서, 동일하지 않은 두 변수 P=(x1,y1) 및 Q=(x2,y2)을 더한 변수 R(P+Q)=(x3,y3)을 구하기 위해서 다음 식 (5)의 연산이 수행된다.
Figure 112006015681416-pat00004
(5)
2진 유한 필드 GF(2n)에서, 상기 두 변수 P 및 Q가 동일할 경우에 변수 R은 다음 식 (6)의 연산을 수행하여 구할 수 있다.
Figure 112006015681416-pat00005
(6)
식 (3) 내지 (6)에 나타난 바와 같이, 덧셈연산과 함께 타원곡선 E 상의 임의의 점 P에 임의의 상수 k를 곱한 수 Q (=k·P)를 구하는 스칼라 곱셈연산도 ECC에서 수행하는 중요한 연산 중의 하나임을 알 수 있다. 여기서 상수 k는 일반적으로 비밀 키로서, Q는 P를 k번 곱하여 구할 수 있다.
Q 및 P값을 이용하여 k를 구하기 위해서 이산 대수(Discrete Logarithm) 연산이 수행되어야 한다. 이산 대수 연산은 유한 필드(Finite Fields)에 타원곡선의 특성을 적용하여 수행되며, 암호 프로토콜(Cryptographic Protocol)의 비밀성의 기초가 된다.
스칼라 곱셈연산도 포인트 연산(Point Operation), 다시 말하면, 유한 필드 연산을 기본으로 한다. 스칼라 곱셈 연산을 수행하는 방법으로는, 이진 방법, 베터리(beta-ry) 방법, 슬라이딩 윈도우 방법, 몽고메리 전력 래더 알고리즘(Montgomery Power Ladder Algorithm: MPLA) 등이 있으며, 이 중에서 몽고메리 전력 래더 알고리즘이 많이 사용된다.
MPLA는 원래 간단한 전력 분석(Simple Power Analysis) 공격에 대비하기 위하여 고안되었으나, 현재는 ECC의 모든 필드에서 수행하는 스칼라 곱셈연산 뿐만 아니라 RSA에서 수행하는 모듈라 지수승 연산에도 적용되는 보편적인 알고리즘이다.
이하에서는 ECC에서 MPLA를 이용한 스칼라 곱셈연산을 일반적으로 고려하여 본 발명을 설명할 것이나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명을 변형하여 모듈라 지수승 연산에 대해서도 적용할 수 있음을 알 것이다.
일반적인 MPLA에서는 먼저 2개의 변수를 다음 식 (7)과 같이 정의한다.
Figure 112006015681416-pat00006
(7)
여기서, 임의의 정수 k는 복수 개의 바이너리 비트(kt-1, …, k1,k0)로 표시할 수 있으며, ki는 변수 i의 값에 따른 복수 개의 바이너리 비트 중의 하나에 대 응되고, kt-1은 항상 1(one)의 값을 가진다. 식 (7)에 표현 된 두 변수 사이의 관계는 다음 식 (8)과 같이 재정리될 수 있다.
Figure 112006015681416-pat00007
(8)
식 (8)에 표시된 두 변수 사이의 관계와 변수 j값에 따른 바이너리 비트(kj)의 값을 이용하면, 두 변수의 관계에 대한 다른 수학적 표현은 다음 식 (9)와 같이 표시될 수 있다.
Figure 112006015681416-pat00008
(9)
식 (3) 내지 (9)를 이용하면, 스칼라 곱셈연산의 결과 Q(=kP)를 구하는 일반적인 MPLA는 다음 알고리듬 (1)로 표현될 수 있다.
Figure 112006015681416-pat00009
단계 3에서 변수 i가 t-2부터 시작하는 것은, 이미 단계 1과 2에서 변수 i가 t-1인 경우에 대하여 고려하였기 때문이다. 덧셈연산(P1+P0)은 식 (3) 내지 식 (6)을 수행하여 구할 수 있다. 여기서 단계 1과 단계 2를 참조하면, P1과 P0이 동일하지 않으므로, 덧셈연산(P1+P0)에는 식 (3)과 식 (5)가 적용될 것이다.
도 3은 몽고메리 전력 래더 알고리즘을 이용하여 스칼라 곱 연산을 수행하는 암호화 방법의 흐름도이다. 암호화 방법(300)에서, 먼저 기본 포인트 P와 스칼라 k가 수신된다(S301). 그 후 스칼라 곱을 반복 연산하기 위한 변수들이 설정된다(S303).
즉 제 1 변수 P1은 기본 포인트 P로, 그리고 제 2 변수 P0은 기본 포인트 P의 2배, 즉 2P로 설정되며, 반복매개변수 i는 t-1로 초기화된다. 이 때, 스칼라 k는 바이너리 비트 (kt-1, … , k1, k0)2로 표시될 수 있으며, i와 t는 정수이고 kt-1은 1이다.
변수들이 설정된 후에는 반복 연산에 의해 스칼라 곱 Q=kP가 계산된다. 즉 반복매개변수 i를 0까지 감소시키면서(S305) 각각의 바이너리 비트 ki에 따라(S307) 제 1 및 제 2 변수를 재설정(S309, S311)하는 과정을 반복하고, i가 0까지 감소된 경우(S313)의 제 1 변수 P1을 스칼라 곱 Q=kP로서 출력한다(S315).
그러나 일반적인 MPLA는 각각의 반복 연산에서 덧셈 연산과 2배 연산이 수행되므로 성능에 있어서 큰 열화가 발생된다. 이러한 열화를 방지하기 위해 Y 좌표 형태의 계산이 제외된 루프 계산을 한 후, Y 좌표를 재정의하는 고속 MPLA 방법이 제안되었다.
먼저 소수 필드에서의 고속 MPLA에 대해 살펴보면, 다음 식 (10)과 같이 2배 연산과 덧셈 연산에 대한 방정식이 정의된다.
Figure 112006015681416-pat00010
(10)
식 (10)을 살펴보면, 계산 중에 Y 좌표가 포함되지 않음을 알 수 있다. 다음의 표 1은 8개의 레지스터(R0 내지 R7)를 사용하여 고속 MPLA가 병렬 연산되는 과정을 보여준다.
[표 1]
Figure 112006015681416-pat00011
표 1을 살펴보면, 19개의 곱셈과 14개의 덧셈(뺄셈) 연산이 포함되어 있다. 계산이 끝난 후 계산 결과는 포인트 표현으로 변환된다. X 좌표에 대해서는 다음 식 (11)과 같은 간단한 하나의 유한 필드 곱셈으로 표현된다.
Figure 112006015681416-pat00012
(11)
그러나, Y 좌표에 대해서는 다음 식 (12)과 같은 좀 더 복잡한 표현, 즉 10개의 유한 필드 곱셈들로 표현된다.
Figure 112006015681416-pat00013
(12)
그러나 Y 좌표에 대한 연산은 하나의 스칼라 곱 동안 단지 한번 수행되므로, 추가적인 비용은 무시할 수 있을 것이다.
다음으로 이진 필드에서의 고속 MPLA에 대해 살펴본다. Y 좌표를 포함하지 않고 MPLA 스칼라 곱 계산을 수행하기 위해서, 소수 필드에서의 고속 MPLA에서와 유사하게 이진 필드에서의 고속 MPLA에서도 계산 과정에 약간의 수정이 가해진다. 이러한 수정에 의해 몇 개의 유한 필드 곱셈이 줄어들게 되며 따라서 더 나은 성능을 얻을 수 있을 것이다.
이진 필드에서의 고속 MPLA의 예로서, 다음 알고리즘 (2)에 로페즈-다하브(Lopez-Dahab) 몽고메리 스칼라 곱 알고리즘이 나타나 있다.
Figure 112006015681416-pat00014
본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 알고리즘 (2)의 고속 MPLA를 이용하여 스칼라 곱 Q(=kP)를 계산할 수 있을 것이다.
본 발명은 일반적인 MPLA의 기본적인 특성을 이용한다. 식 (7)에 표시된 두 변수 Li와 Hj의 관계를 고려하면, 암호시스템에서 수행되는 연산에 소정의 폴트가 유입되지 않은 경우, 두 변수 Li와 Hj의 차는 항상 1이 된다. 이러한 사실은, 일반적인 MPLA에 적용되는 임의의 변수 P1과 P2의 차이가 항상 P가 된다는 것과 동일한 의미이다.
2개의 무작위 폴트가 유입되었음에도 불구하고 2개의 임의의 변수 P1과 P2의 차이가 P가 될 가능성, 즉 폴트가 유입되지 않은 것과 같은 결과가 발생할 가능성은 거의 0(Zero)에 가깝다. 이러한 사실은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 사실로 받아들여지므로, 이와 같은 특별한 경우에 대해 서는 고려하지 않는다.
따라서 일반적인 MPLA에 적용되는 임의의 변수 P1, P2 및 P가 동일한 조건을 다르게 표현한 다음 식 (13)의 3개의 식 중의 하나를 만족하면 폴트가 유입되지 않은 것으로 판단할 수 있다.
P2 - P1 = P
P2 - P = P1
P1 + P = P2 (13)
그러나 이러한 판단 방법은 메인 루프 계산 동안 Y-좌표가 존재하지 않기 때문에 고속 MPLA(Fast MPLA: FMPLA)에 효율적으로 적용될 수 없는 단점이 있다. 물론 좌표를 변환하거나 또는 유사한 다른 방법을 이용하여 FMPLA에 적용시키는 방법을 고려해 볼 수는 있으나, 이러한 방법은 상당한 비용부담을 발생시킨다. 따라서 상술한 판단 동작을 수행하기 위해서 다른 방법을 이용할 필요가 있다.
이하에서는 본 발명에 이용되는 고속 MPLA에서의 판단방법에 대해 설명한다. 본 발명에 이용되는 판단방법을 수행하기 위해서 다음 식 (14)와 같은 새로운 수학 방정식이 이용된다.
Figure 112006015681416-pat00016
(14)
본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 MPLA의 기본적인 특징을 이용하여 식 (14)를 구할 수 있을 것이다. 식 (14)는 다음 식 (15)와 같은 새로운 판단이 수행될 수 있음을 의미한다.
Figure 112006015681416-pat00017
(15)
이전 계산에서 폴트가 없었음을 확인하기 위해서, 판단을 수행하는 동안 계산에 Hj와 Lj 값들이 포함되어야 한다. Y 좌표를 포함하지 않고 두 점 Hj와 Lj의 합을 X 좌표에서 계산하는 몽고메리 방법은 이들 두 점의 차이에 관한 정보에 기초한다.
이러한 특징은 다음과 같은 폴트 체크 동작을 유도하기 위해 사용될 수 있으며, 이를 가능하게 하기 위해서 뿐만 아니라 파워 트랙 분석(power tracks analysis)에 의한 분별불가능성(indistinguishability) 동작 평형을 만족하기 위해서 다음과 같은 kj=0과 kj=1인 2가지 경우들을 고려해야만 한다.
먼저 kj=1인 경우, 폴트 체크 동작은 다음의 순서에 따라 수행된다.
1. 다음 식 (16)을 이용하여 2배 연산에 의해
Figure 112006015681416-pat00018
을 계산한다.
Figure 112006015681416-pat00019
(16)
2. 식 (16)을 이용한 1에서의 결과를 고려하여 덧셈 연산에 의해
Figure 112006015681416-pat00020
을 계산한다.
3.
Figure 112006015681416-pat00021
인지 체크한다. 여기서 Hj는 이전에 계산된 값이다.
다음으로 Kj=0인 경우, 폴트 체크 동작은 다음의 순서에 따라 수행된다.
1. 다음 식 (17)을 이용하여 2배 연산에 의해
Figure 112006015681416-pat00022
을 계산한다.
Figure 112006015681416-pat00023
(17)
2. Lj를 고려하여 덧셈 연산에 의해
Figure 112006015681416-pat00024
을 계산한다.
3.
Figure 112006015681416-pat00025
인지 확인한다. 여기서 2Hj+1은 이전에 계산된 값이다.
상술한 바와 같이, 두 경우 모두에서 Hj와 Lj가 체크 과정에 포함되었으며, 이는 계산된 두 포인트들 모두에서 폴트가 존재하는지 체크되었음을 의미한다. DPA 방어 방법을 용이하게 구현하기 위해서 고속 MPLA의 메인 루프(main loop)에서의 일련의 덧셈 및 2배 연산은 2배 연산 및 덧셈 연산으로 변경되었다.
본 발명에 따른 실시예에서는 상술한 새로운 수학 방정식들을 이용하여 고속 MPLA에서 폴트의 유입 여부를 체크하는 방법을 제안함으로써, 고속 MPLA에서도 시스템의 성능을 감소시키지 않으면서 다양한 종류의 암호 시스템에 적용할 수 있는 알고리즘을 제안한다.
이하에서는 새로운 방식의 체크 방법이 적용되는 위치에 따른 다양한 실시예들이 제안된다. 즉, 스카라 곱셈 연산 중에 폴트의 유입 여부가 판단되는 정기 체크(regular check)와 랜덤 체크(random check), 그리고 스칼라 곱셈 연산이 완료된 후 연산 결과가 출력되기 전에 폴트의 유입 여부가 판단되는 최종 체크(at the end check) 방법이 제안될 것이다.
좀 더 구체적으로 설명하면, 정기 체크 방법은 폴트가 유입되었는지 여부가 스칼라 곱 연산이 반복될 때마다 수행된다. 랜덤 체크 방법은 스칼라 곱 연산이 반 복될 때마다 수행되지 않고 램덤하게 선택되는 스칼라 곱 연산에 대해서 스칼라 곱 연산이 수행된 후 수행된다.
도 4는 본 발명의 실시예에 따른 암호화 방법의 흐름도로서, 정기 체크 방법이 적용된 암호화 방법의 흐름도이다. 암호화 방법(400)은 스칼라 곱이 수행되는 매 반복 구간에서 정기적으로 체크 동작이 수행되는 방법이다. 다음 알고리즘 (3)은 정기 체크 방법이 적용된 고속 MPLA을 이용한 암호화 방법에 대한 알고리즘이다.
Figure 112006015681416-pat00026
이하에서는 도 4를 참조하여 정기 체크 방법이 적용된 MPLA을 이용한 암호화 방법(400)에 대해 설명한다. 암호화 방법(400)은 기본 포인트 P와 스칼라 k를 수신 하여(S401) 스칼라 곱 Q(P1)(=kP)을 출력한다(S429).
여기서 기본 포인트 P는 소정의 타원 곡선 상의 포인트로서 하드웨어 구현 시 EEPROM에 저장된다. 스칼라 k는 바이너리 비트 (kt-1, … , k1, k0)2로 표시될 수 있으며, 실제 암호화 시스템에서는 비밀 키로 사용된다. 한편 본 발명의 실시예에서 kt-1은 1이다.
암호화 방법(400)은 기본 포인트 P와 스칼라 k를 수신한 후(S401) 암호화를 위한 파라미터들 또는 변수들을 초기화하거나 또는 설정한다(S403). 스칼라 k의 바이너리 비트 ki에 따른 반복적인 연산을 위해서 본 발명에서는 변수들이 사용되며, 변수들은 소정의 규칙에 따라 초기화되거나 설정된다(S403 또는 S407).
먼저 기본 포인트 P를 이용하여 제 1 일차변수 P1과 제 2 일차변수 P2가 초기화된다. 구체적으로 제 1 일차변수 P1은 기본 포인트 P로 초기화되고 제 2 일차변수 P2는 기본 포인트 P의 2배로 초기화된다(알고리즘 (3)의 1 및 2 단계).
암호화 방법(400)에 사용되는 파라미터들 또는 변수들이 초기화된 후에는 반복적인 연산을 수행하여 스칼라 곱 Q를 계산한다(S405 내지 S413 및 S427). 바이너리 비트로 표현되는 스칼라 k의 모든 비트들에 대한 반복연산을 위해서 본 발명의 실시예에서는 반복연산변수 i를 0까지 감소시키면서(S405) 바이너리 ki에 대한 반복연산이 수행된다. 이하에서 본 발명의 실시예에 따른 반복연산에 대해 좀 더 상세히 설명한다.
반복연산이 수행될 때마다 반복연산변수 i는 1씩 감소하며(S405), 반복연산 (S405 내지 S413) 및 이후의 체크 연산(S415 내지 S425)에서 사용될 제 1 이차변수 T1과 제 2 이차변수 T2가 설정된다. 식 (14) 내지 (17)을 참조하면, 제 1 이차변수 T1은 제 1 일차변수 P1으로 설정되고 제 2 이차변수 T2는 제 2 일차변수 P1으로 설정된다(S407).
변수들이 설정된 후에는 스칼라 k, 구체적으로 스칼라 k의 바이너리 비트 ki에 응답하여 제 1 일차변수P1과 제 2 일차변수 P2가 재설정됨으로써 반복적인 스칼라 곱 연산이 수행된다.
즉 바이너리 비트 ki가 1이면 제 2 일차변수 P2를 2배한 값을 제 2 일차변수 P2로 재설정하고 제 1 일차변수 P1와 제 2 이차변수 T2의 합을 제 1 일차변수 P1로 재설정한다(S411). 반면 바이너리 비트 ki가 1이 아니면 제 1 일차변수 P1를 2배한 값을 제 1 일차변수 P1로 재설정하고 제 1 이차변수 T1과 제 2 일차변수 P2의 합을 제 2 이차변수 P2로 재설정한다(S413).
재설정하는 단계들은 반복연산변수 i가 0이 될 때까지 반복적으로 재설정되며, 반복연산변수 i가 0보다 작을 때의 P1이 스칼라 곱 Q가 될 것이다.
한편 도 4의 암호화 방법(400)에서는 재설정하는 단계가 완료될 때마다 폴트가 유입되었는지 체크되므로, 폴트가 유입되었는지 여부가 정기적으로 체크될 것이다. 이하에서는 폴트가 유입되었는지 체크하는 동작에 대해 설명한다(S415 내지 S423).
식 (14) 내지 (17)을 이용하여 설명한 바와 같이, 본 발명의 실시예에서는 폴트가 유입되었는지 여부는 바이너리 비트 ki에 응답하여 체크될 수 있으므로, 먼 저 바이너리 비트 ki가 1인지 여부가 결정된다(S415).
바이너리 비트 ki가 1이면, 제 1 이차변수 T1의 2배를 제 1 이차변수 T1로 재설정하고 제 1 이차변수 T1에 응답하여 결정되는 제 1 일차변수 P1와 기본 포인트 P의 합을 제 1 이차변수 T1으로 재설정하는 한다(S417). 그 후 제 2 일차변수 P2와 재설정된 제 1 이차변수 T1가 같은지 여부를 검사하여 같으면 폴트가 유입되지 않은 것으로 판단하고, 같지 않으면 폴트가 유입된 것으로 판단한다(419).
반면 바이너리 비트 ki가 1이 아니면, 제 2 이차변수 T2의 2배를 제 2 이차변수 T2로 재설정하고 제 1 일차변수 T1에 응답하여 결정되는 제 2 일차변수 P2와 기본 포인트 P의 합을 제 1 이차변수 T1로 재설정한다(S421). 그 후 재설정된 제 2 이차변수 T2와 재설정된 제 1 이차변수 T1가 같은지 여부를 검사하여 같으면 폴트가 유입되지 않은 것으로 판단하고, 같지 않으면 폴트가 유입된 것으로 판단한다(423).
암호화 방법(400)에서 폴트가 유입되지 않은 것으로 판단하는 경우, 반복매개변수 i가 0보다 작은지 판단하여(S427), 작지 않으면 i를 감소시키면서 스칼라 곱 연산과 폴트 유입 여부 체크 연산을 반복적으로 수행한다. 그러나 반복매개변수 i가 0보다 작으면 그 때의 P1값을 스칼라 곱 Q로서 출력한다(S429).
한편, 암호화 방법(400)에서 폴트가 유입된 것으로 판단하는 경우에는 경고신호를 출력한다. 본 발명의 실시예에서는 단순히 경고신호를 출력하는 동작 이외에 다른 유용한 동작을 더 수행할 수 있으며, 이에 대해서는 이후에 서술한다.
도 5는 본 발명의 다른 실시예에 따른 암호화 방법의 흐름도로서, 최종 체크 방법이 적용된 암호화 방법의 흐름도이다. 암호화 방법(500)은 반복되는 스칼라 곱이 모두 수행된 후 체크 동작이 수행되는 방법이다. 다음 알고리즘 (4)은 정기 체크 방법이 적용된 고속 MPLA을 이용한 암호화 방법에 대한 알고리즘이다.
Figure 112006015681416-pat00027
이하에서는 도 5를 참조하여 정기 체크 방법이 적용된 MPLA을 이용한 암호화 방법(500)에 대해 설명한다. 암호화 방법(500)에서는 반복적으로 수행되는 스칼라 곱 연산이 완료된 후 폴트가 유입되었는지 여부가 검사된다.
즉 바이너리 비트 ki에 응답하여 제 1 일차변수와 제 2 이차변수가 재설정된 후(S511 민 S513) 곧바로 폴트 유입 여부를 체크하지 않고, 반복매개변수 i가 1보 다 작은지 판단하여(S515) 계속해서 스칼라 곱 연산을 반복할지 여부에 대해 먼저 판단한 후, 폴트의 유입 여부가 검사된다. 도 5의 다른 동작들은 도 4와 동일하므로 구체적인 설명은 생략한다.
도 6은 본 발명의 또 다른 실시예에 따른 암호화 방법의 흐름도로서, 랜덤 체크 방법이 적용된 암호화 방법의 흐름도이다. 암호화 방법(600)은 랜덤하게 결정되는 스칼라 곱 연산의 반복단계에서 체크 동작이 수행되는 방법이다. 다음 알고리즘 (5)은 랜덤 체크 방법이 적용된 고속 MPLA을 이용한 암호화 방법에 대한 알고리즘이다.
이하에서는 도 6를 참조하여 정기 체크 방법이 적용된 MPLA을 이용한 암호화 방법(600)에 대해 설명한다. 암호화 방법(600)에서는 스칼라 곱이 반복적으로 수행될 때, 임의의 스칼라 곱 연산 수행 후 폴트가 유입되었는지 여부가 검사된다.
즉 바이너리 비트 ki에 응답하여 제 1 일차변수와 제 2 이차변수가 재설정된 후(S511 민 S513) 폴트 유입 여부를 체크할지 결정한다. 즉 소정의 체크 값 CHECK이 체크 레이트 RATE 이하인지 결정하여(S617) 체크 값 CHECK이 체크 레이트 RATE 이하인 경우에 폴트가 유입되었는지 여부를 체크한다.
Figure 112006015681416-pat00028
본 발명의 실시예에서 체크 레이트 RATE는 폴트 유입 여부를 체크하는 빈도를 결정하는 값으로서, 도 6을 참조하면 체크 레이트 RATE는 암호화 방법에서 사용되는 매개변수들이 초기화되거나 설정되는 단계에서 함께 설정될 수 있다(S603). 한편 체크 값 CHECK은 랜덤하게 발생되는 값이다.
예를 들어, 체크 값 CHECK과 체크 레이트 RATE 모두 0~100의 값을 가질 수 있고, 체크 레이트 RATE가 70으로 설정된다면, 랜덤하게 발생되는 체크 값 CHECK이 70 이하이면 폴트 유입 여부를 체크하게 되고, 체크 값 CHECK이 70보다 크면 폴트 유입 여부를 체크하지 않는다.
다른 방법으로, 체크 값 CHECK과 체크 레이트 RATE 모두 랜덤하게 결정되는 이진 값(0 또는 1)일 수 있으며, 이 경우에는 체크 값 CHECK과 체크 레이트 CHECK가 같은 값을 가질 때(또는 다른 값을 가질 때) 폴트 유입 여부를 체크하고 다른 값을 가질 때(또는 같은 값을 가질 때) 폴트 유입 여부를 체크하지 않을 수도 있다.
본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 방법 이외에도 다양한 방법으로 랜덤 검사 방법을 적용할 수 있을 것이며, 또한 체크 값 CHECK이 수신되는 단계와 체크 레이트 RATE가 설정되는 단계 또한 암호화 방법(600)의 다른 위치에 놓여질 수 있음도 알 것이다. 도 6의 다른 동작들은 도 4와 동일하므로 구체적인 설명은 생략한다.
한편, 폴트가 유입된 것으로 판단된 경우 경고신호를 출력하는 것으로 설명하였다(S425, S527, S629). 이 때 경고신호가 출력된 후에 취할 수 있는 조치는 다음과 같이 여러 가지가 있을 수 있다.
1. 수행중인 연산을 중단하고, 연산에 사용한 레지스터의 값들을 셋(set) 또는 리셋(reset) 시키며, 출력을 0(zero)으로 설정한다.
2. 대한민국에 출원된 특허출원번호 2005-0022929에서 제안한 바와 같이, 비밀키 값에 상기 폴트확산을 적용시킨 후(apply fault diffusion for the secret key value) 연산을 계속 진행한다.
3. 대한민국에 출원된 특허출원번호 2005-0018429에서 제안한 바와 같이, 출력 점(output point)을 변형시켜서(Modify) 사용하는 것이다.
한편 도 4에 도시된 정규검사가 적용된 고속 MPLA를 이용하는 암호화 방법은, 폴트가 유입되는 즉시 조치를 취할 수 있기 때문에, 비밀 등급이 높은 암호시스템에 적용하기에 적합하다. 반면에, 암호시스템의 퍼포먼스는 낮아지게 되지만, 도 1에 도시된 "compute twice and check" 접근법에 비해서는 성능이 좋을 것이다.
도 5에 도시된 최종검사가 적용된 고속 MPLA를 이용하는 암호화 방법은 성능의 감소가 가장 적은 장점이 있다.
도 6에 도시된 랜덤검사가 적용된 고속 MPLA를 이용하는 암호화 방법은 정규검사가 적용된 암호화 방법의 장점을 가지면서도 성능도 덜 감소한다.
본 발명에서 이용되는 고속 MPLA의 가장 큰 장점은, DFA에 능동적으로 대응할 수 있는 동시에 전력 분석에 의한 공격에 대해서도 대응할 수 있으며, 또한 빠른 연산이 가능하다는 점이다.
도 4 내지 도 6에 본 발명의 따른 MPLA의 3가지 실시예를 나타내었다. 상기의 실시예는 ECC에서 적용되는 스칼라 곱셈연산에 적용되는 경우에 대하여 설명이 되어 있다. 그러나,
1. 도 4 내지 도 6에 도시된 도면,
2. 이들에 대한 설명 및
3. ECC에서의 스칼라 곱셈연산과 RSA에서의 모듈라 지수승 연산사이의 관계를 고려하면,
당업자라면 누구든지, 상기의 MPLA를 RSA의 모듈라 지수승 연산에 사용될 수 있는 MPLA로 변형시킬 수 있다.
본 명세서에서 개시된 방법 및 장치에서 사용되는 기능은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명의 실시예에 따른 암호화 방법은 암호시스템의 수행능력을 감소시키지 않으면서도 다양한 암호시스템에 적용하며 폴트를 이용한 다양한 공격에 대응할 수 있는 할 수 있는 장점이 있다.

Claims (13)

  1. 타원 곡선 상의 기본 포인트 P와 스칼라 k를 수신하고 상기 기본 포인트 P를 이용하여 복수의 일차변수들(P1, P2)을 초기화하는 단계;
    상기 복수의 일차변수들 P1, P2에 대응되는 복수의 이차변수들 T1, T2을 설정한 후, 상기 스칼라 k에 응답하여 상기 복수의 일차변수들 P1, P2 및 이차변수들 T1, T2을 반복 연산함으로써 상기 기본 포인트 P와 상기 스칼라 k의 곱인 스칼라 곱 Q(=kP)을 계산하는 단계;
    상기 스칼라 k에 응답하여 상기 복수의 일차변수들 P1, P2 및 이차변수들 T1, T2을 이용하여 폴트가 유입되었는지 체크하는 단계; 및
    상기 폴트가 유입되지 않은 경우 상기 스칼라 곱 Q을 출력하는 단계를 구비하는 것을 특징으로 하는 암호화 방법.
  2. 제 1 항에 있어서, 상기 초기화하는 단계는,
    제 1 일차변수 P1를 상기 기본 포인트 P로, 제 2 일차변수 P2를 상기 기본 포인트 P의 2배로 각각 초기화하고, 반복연산변수 i(i는 정수)를 초기값 t-1(t는 정수)으로 설정하며,
    상기 스칼라 k는 바이너리 비트 (kt-1, … , k1, k0)2로 표시되고 kt-1은 1인 것을 특징으로 하는 암호화 방법.
  3. 제 2 항에 있어서, 상기 스칼라 곱 Q을 계산하는 단계는,
    제 1 이차변수 T1를 상기 제 1 일차변수 P1로, 제 2 이차변수 T2를 상기 제 2 일차변수 P2로 각각 설정하는 단계;
    상기 반복연산변수 i가 0보다 작아질 때까지 상기 반복연산변수 i를 감소시키면서 상기 바이너리 비트 ki에 응답하여 상기 제 1 일차변수 P1와 상기 제 2 일차변수 P2를 소정의 값으로 반복하여 재설정하는 단계를 구비하는 것을 특징으로 하는 암호화 방법.
  4. 제 3 항에 있어서, 상기 재설정하는 단계는,
    상기 바이너리 비트 ki가 1이면 상기 제 2 일차변수 P2를 2배한 값을 상기 제 2 일차변수 P2로 재설정하고 상기 제 1 일차변수 P1와 상기 제 2 이차변수 T2의 합을 상기 제 1 일차변수 P1로 재설정하며, 상기 바이너리 비트 ki가 1이 아니면 상기 제 1 일차변수 P1를 2배한 값을 상기 제 1 일차변수 P1로 재설정하고 상기 제 1 이차변수 T1과 상기 제 2 일차변수 P2의 합을 상기 제 2 이차변수 P2로 재설정하는 것을 특징으로 하는 암호화 방법.
  5. 제 3 항에 있어서, 상기 폴트가 유입되었는지 체크하는 단계는,
    상기 제 1 일차변수 P1와 상기 제 2 일차변수 P2가 반복하여 재설정될 때마다 수행되는 것을 특징으로 하는 암호화 방법.
  6. 제 3 항에 있어서, 상기 폴트가 유입되었는지 체크하는 단계는,
    상기 반복하여 재설정하는 단계 이후에 수행되는 것을 특징으로 하는 암호화 방법.
  7. 제 3 항에 있어서, 상기 폴트가 유입되었는지 체크하는 단계는,
    상기 반복하여 재설정하는 단계 중 임의의 반복 시점에서 수행되는 것을 특징으로 하는 암호화 방법.
  8. 제 7 항에 있어서,
    상기 초기화하는 단계는 체크 레이트 RATE를 더 설정하고,
    상기 스칼라 곱 Q을 계산하는 단계는 랜덤하게 발생되는 체크 값 CHECK을 수신하는 단계를 더 구비하며,
    상기 체크 값 CHECK이 상기 체크 레이트 RATE 이하인 경우인 재설정하는 단계에서 상기 폴트가 유입되었는지 체크하는 단계가 수행되는 것을 특징으로 하는 암호화 방법.
  9. 제 2 항에 있어서, 상기 폴트가 유입되었는지 체크하는 단계는,
    상기 바이너리 비트 ki가 1인 경우,
    상기 제 1 이차변수 T1의 2배를 상기 제 1 이차변수 T1로 재설정하고 상기 제 1 이차변수 T1에 응답하여 결정되는 상기 제 1 일차변수 P1와 상기 기본 포인트 P의 합을 상기 제 1 이차변수 T1으로 재설정하는 단계; 및
    상기 제 2 일차변수 P2와 상기 재설정된 제 1 이차변수 T1가 같으면 폴트가 유입되지 않은 것으로 판단하고, 같지 않으면 폴트가 유입된 것으로 판단하는 단계를 구비하며,
    상기 바이너리 비트 ki가 1이 아닌 경우,
    상기 제 2 이차변수 T2의 2배를 상기 제 2 이차변수 T2로 재설정하고 상기 제 1 일차변수 T1에 응답하여 결정되는 상기 제 2 일차변수 P2와 상기 기본 포인트 P의 합을 상기 제 1 이차변수 T1로 재설정하는 단계; 및
    상기 재설정된 제 2 이차변수 T2와 상기 재설정된 제 1 이차변수 T1가 같으면 폴트가 유입되지 않은 것으로 판단하고, 같지 않으면 폴트가 유입된 것으로 판단하는 단계를 구비하는 것을 특징으로 하는 암호화 방법.
  10. 제 9 항에 있어서, 상기 폴트가 유입된 것으로 판단하는 경우,
    알람신호를 출력하는 단계를 더 구비하는 것을 특징으로 하는 암호화 방법.
  11. 제 10 항에 있어서, 상기 알람신호를 출력하는 단계는,
    상기 암호화 방법과 관련된 연산을 중단하고 상기 연산이 이루어지는 소정의 레지스터를 리셋하는 단계;
    상기 스칼라 k에 대해 폴트를 확산하는 단계; 및
    상기 스칼라 곱 Q를 변경하는 단계 중 적어도 하나 이상을 포함하는 것을 특징으로 하는 암호화 방법.
  12. 제 1 항의 암호화 방법에 구비된 단계를 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  13. 제 12 항의 매체를 사용하여 암호화 동작을 수행하는 암호화 장치.
KR1020060020720A 2006-03-04 2006-03-04 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법 KR100850202B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060020720A KR100850202B1 (ko) 2006-03-04 2006-03-04 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
US11/712,942 US8379842B2 (en) 2006-03-04 2007-03-02 Cryptographic methods including Montgomery power ladder algorithms

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060020720A KR100850202B1 (ko) 2006-03-04 2006-03-04 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법

Publications (2)

Publication Number Publication Date
KR20070091062A KR20070091062A (ko) 2007-09-07
KR100850202B1 true KR100850202B1 (ko) 2008-08-04

Family

ID=38689126

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060020720A KR100850202B1 (ko) 2006-03-04 2006-03-04 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법

Country Status (2)

Country Link
US (1) US8379842B2 (ko)
KR (1) KR100850202B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2593723C (en) * 2007-06-27 2016-04-19 Certicom Corp. Multi-dimensional montgomery ladders for elliptic curves
FR2935059B1 (fr) * 2008-08-12 2012-05-11 Groupe Des Ecoles De Telecommunications Get Ecole Nationale Superieure Des Telecommunications Enst Procede de detection d'anomalies dans un circuit de cryptographie protege par logique differentielle et circuit mettant en oeuvre un tel procede
KR101019242B1 (ko) * 2009-02-27 2011-03-04 고려대학교 산학협력단 확장된 몽고메리 레더를 이용한 스칼라 곱셈 방법
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
EP2793123A1 (en) * 2013-04-16 2014-10-22 Gemalto SA Method to securely execute a modular exponentiation
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
CN108242994B (zh) 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
US10601578B2 (en) * 2017-10-26 2020-03-24 Nxp B.V. Protecting ECC against fault attacks
CN108875416B (zh) * 2018-06-22 2020-05-19 北京智芯微电子科技有限公司 椭圆曲线多倍点运算方法和装置
WO2023141933A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for efficient modular division and inversion
WO2023141935A1 (en) * 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for balanced and secure ladder computations

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161169A (ja) 1997-06-20 1999-06-18 Certicom Corp 楕円曲線上の有限体演算の加速方法
JP2000187438A (ja) 1998-12-22 2000-07-04 Hitachi Ltd 楕円曲線暗号実行方法及び装置並びに記録媒体
KR20010035704A (ko) * 1999-10-01 2001-05-07 구자홍 타원곡선 포인트의 고속 스칼라 승법을 위한 프로세스 및 방법
WO2003085881A1 (fr) 2002-04-08 2003-10-16 Oberthur Card Systems S.A. Procede de securisation d'une entite electronique a acces crypte
KR20070075665A (ko) * 2006-01-14 2007-07-24 삼성전자주식회사 Dfa에 대항하는 방법을 구비하는 몽고메리 전력 래더알고리즘

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5271061A (en) * 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US7010692B2 (en) * 1996-04-17 2006-03-07 Phoenix Technologies Ltd. Cryptographic methods for remote authentication
ATE429748T1 (de) * 1998-01-02 2009-05-15 Cryptography Res Inc Leckresistentes kryptographisches verfahren und vorrichtung
JP2002519722A (ja) * 1998-06-03 2002-07-02 クリプターグラフィー リサーチ インコーポレイテッド スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス
CA2252078C (en) * 1998-10-28 2009-02-17 Certicom Corp. Power signature attack resistant cryptographic system
JP3821631B2 (ja) * 2000-05-30 2006-09-13 株式会社日立製作所 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
US7308096B2 (en) * 2000-05-30 2007-12-11 Hitachi, Ltd. Elliptic scalar multiplication system
GB0013355D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd Parallel modulo arithmetic using bitwise logical operations
JP2002261751A (ja) * 2001-03-02 2002-09-13 Hitachi Ltd 暗号処理方法
JP4188571B2 (ja) * 2001-03-30 2008-11-26 株式会社日立製作所 情報処理装置の演算方法および耐タンパ演算攪乱実装方式
US6763366B2 (en) * 2001-05-17 2004-07-13 Matsushita Electric Industrial Co., Ltd. Method for calculating arithmetic inverse over finite fields for use in cryptography
JP4067818B2 (ja) * 2001-12-10 2008-03-26 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
JP2003255831A (ja) 2002-02-28 2003-09-10 Hitachi Ltd 楕円曲線スカラー倍計算方法及び装置
CA2439736C (en) * 2002-09-03 2013-05-21 Certicom Corp. Method and apparatus for performing validation of elliptic curve public keys
US7555122B2 (en) * 2002-12-04 2009-06-30 Wired Communications LLC Method for elliptic curve point multiplication
EP1548687B1 (en) * 2002-12-18 2013-01-09 Fujitsu Limited Tamper-resistant elliptical curve encryption using secret key
US7388957B2 (en) 2003-01-28 2008-06-17 Matsushita Electric Industrial Co., Ltd. Elliptic curve exponentiation apparatus that can counter differential fault attack, and information security apparatus
EP1648111B1 (en) * 2003-07-22 2014-01-15 Fujitsu Limited Tamper-resistant encryption using a private key
WO2005015526A1 (ja) * 2003-08-06 2005-02-17 Fujitsu Limited 楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
KR100530372B1 (ko) * 2003-12-20 2005-11-22 삼성전자주식회사 사이드채널 공격을 방지할 수 있는 타원곡선 암호화 방법
US7647498B2 (en) * 2004-04-30 2010-01-12 Research In Motion Limited Device authentication
KR100891323B1 (ko) * 2005-05-11 2009-03-31 삼성전자주식회사 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치
US7404089B1 (en) * 2005-06-03 2008-07-22 Pitney Bowes Inc. Method and system for protecting against side channel attacks when performing cryptographic operations
US7602907B2 (en) * 2005-07-01 2009-10-13 Microsoft Corporation Elliptic curve point multiplication
US7714735B2 (en) * 2005-09-13 2010-05-11 Daniel Rockwell Monitoring electrical assets for fault and efficiency correction
US20070150530A1 (en) * 2005-12-13 2007-06-28 Intel Corporation Resisting cache timing based attacks
KR20080012633A (ko) * 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
KR20080012634A (ko) * 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161169A (ja) 1997-06-20 1999-06-18 Certicom Corp 楕円曲線上の有限体演算の加速方法
JP2000187438A (ja) 1998-12-22 2000-07-04 Hitachi Ltd 楕円曲線暗号実行方法及び装置並びに記録媒体
KR20010035704A (ko) * 1999-10-01 2001-05-07 구자홍 타원곡선 포인트의 고속 스칼라 승법을 위한 프로세스 및 방법
WO2003085881A1 (fr) 2002-04-08 2003-10-16 Oberthur Card Systems S.A. Procede de securisation d'une entite electronique a acces crypte
KR20070075665A (ko) * 2006-01-14 2007-07-24 삼성전자주식회사 Dfa에 대항하는 방법을 구비하는 몽고메리 전력 래더알고리즘

Also Published As

Publication number Publication date
KR20070091062A (ko) 2007-09-07
US8379842B2 (en) 2013-02-19
US20080049931A1 (en) 2008-02-28

Similar Documents

Publication Publication Date Title
KR100850202B1 (ko) Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
EP1648111B1 (en) Tamper-resistant encryption using a private key
US20100172493A1 (en) Method and device for processing data
US8102998B2 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
KR100652377B1 (ko) 모듈라 지수승 알고리즘, 기록매체 및 시스템
US20080273695A1 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
US7286666B1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
KR100874909B1 (ko) Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법
JP5336056B2 (ja) 高速モンゴメリパワーラダーアルゴリズムを利用する欠陥検出動作を具現するための二進有限体におけるポイント加算方法及び加算演算装置
KR20080012633A (ko) 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
EP3166013B1 (en) Modular exponentiation using randomized addition chains
KR100954844B1 (ko) 오류 주입 공격에 안전한 crt-rsa 모듈러 지수승 알고리즘을 이용한 디지털 서명 방법, 그 장치 및 이를 기록한 기록매체
KR100953715B1 (ko) Crt-rsa 모듈라 지수승 알고리즘을 이용한 디지털서명 방법, 그 장치 및 이를 기록한 컴퓨터 판독가능 저장매체
EP3707593B1 (en) A computation device and method
KR100953716B1 (ko) Crt-rsa 기반의 비트 연산을 이용한 디지털 서명방법, 그 장치 및 이를 기록한 기록 매체
KR101341810B1 (ko) Crt-rsa를 이용하여 전력 분석 공격과 오류 주입 공격으로부터 정보를 보호하는 방법
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
KR20070049823A (ko) 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법
Kaminaga et al. Crashing modulus attack on modular squaring for rabin cryptosystem
Schindler Exponent Blinding May Not Prevent Timing Attacks on RSA.
KR20070091063A (ko) 폴트 확산을 이용하여 스칼라 곱에서 dfa를 방어할 수있는 암호화 방법
KR101094339B1 (ko) 오류주입 공격에 안전한 피아트 샤미르 개인 식별 장치, 방법 및 그 기록 매체
CN111444541A (zh) 用于生成数据均值零知识证明的方法、设备及存储介质

Legal Events

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

Payment date: 20130701

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170630

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180629

Year of fee payment: 11