KR101194837B1 - 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 - Google Patents
멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 Download PDFInfo
- Publication number
- KR101194837B1 KR101194837B1 KR1020050062907A KR20050062907A KR101194837B1 KR 101194837 B1 KR101194837 B1 KR 101194837B1 KR 1020050062907 A KR1020050062907 A KR 1020050062907A KR 20050062907 A KR20050062907 A KR 20050062907A KR 101194837 B1 KR101194837 B1 KR 101194837B1
- Authority
- KR
- South Korea
- Prior art keywords
- bits
- values
- scalar product
- secret keys
- power
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000001186 cumulative effect Effects 0.000 claims description 9
- 238000009825 accumulation Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013478 data encryption standard Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7242—Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7252—Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/043—Masking or blinding of tables, e.g. lookup, substitution or mapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
멱지수를 숨기는 DPA 대책의 고속 계산을 위한 암호화 장치 및 방법이 개시된다. 상기 암호화 장치에서는, 테이블 계산기가 입력 데이터 및 비밀 키들 각각의 일정 비트들에 대한 비트 수를 기반으로, EC 연산에 의한 스칼라 곱 값들 또는 모듈로 멱승 연산에 의한 멱승값들로 이루어지는 테이블 값들을 계산하고, 상기 계산된 테이블 값들 중 상기 비밀 키들 각각의 일정 비트들로 이루어지는 윈도우에 대응되는 스칼라 곱 값들 또는 멱승값들을 출력하고, 이에 따라 누적기 또는 누승기가 상기 출력된 스칼라 곱 값들을 누적하거나 상기 출력된 멱승값들을 누승하여 암호화된 데이터를 출력한다.
Description
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 종래의 다중 스칼라 곱을 설명하기 위한 도면이다.
도 2a 및 도 2b는 비밀키를 두 부분으로 나누어 ECC를 수행할 때의 시스템 성능을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따라 ECC에서 멱지수를 숨기는 DPA 대책을 위한 성능 중심의 암호화 장치를 나타내는 블록도이다.
도 4는 도 3의 암호화 장치의 동작 설명을 위한 흐름도이다.
도 5는 본 발명의 다른 실시예에 따라 ECC에서 멱지수를 숨기는 DPA 대책을 위한 메모리 중심의 암호화 장치를 나타내는 블록도이다.
도 6은 도 5의 암호화 장치의 동작 설명을 위한 흐름도이다.
도 7은 본 발명의 또 다른 실시예에 따라 RSA와 같은 암호화에서 멱지수를 숨기는 DPA 대책을 위한 성능 중심의 암호화 장치를 나타내는 블록도이다.
도 8은 도 7의 암호화 장치의 동작 설명을 위한 흐름도이다.
도 9는 본 발명의 또 다른 실시예에 따라 RSA와 같은 암호화에서 멱지수를 숨기는 DPA 대책을 위한 메모리 중심의 암호화 장치를 나타내는 블록도이다.
도 10은 도 9의 암호화 장치의 동작 설명을 위한 흐름도이다.
본 발명은 하드웨어 암호화 장치(cryptographic apparatus)에 관한 것으로, 특히 비밀키 멱지수(exponent)를 숨기는(blinding) DPA(Differential Power Analysis:파워 해독) 대책의 고속 계산을 위한 암호화 방법 및 장치에 관한 것이다.
현대의 기밀(confidential) 데이터 통신의 문제를 해결하기 위하여, 잘 알려져 있는 암호화 알고리즘에 기반한 하드웨어 암호화 시스템들이 널리 사용되고 있고, 계속적인 성능 향상 요구를 만족시키도록 하고 있다. 암호화 알고리즘으로서, RSA(Rivest-Shamir-Adelman), ECC(Elliptic Curve Cryptography:타원 곡선 암호화)등과 같은 공개키 알고리즘 뿐만 아니라 DES(Data Encryption Standard), AES(Advanced Encryption Standard)와 같은 대칭키 알고리즘이 잘 알려져 있다.
특히, 높은 안전 레벨을 만족시키는 PKI(Public Key Infrastructure:공개키 기반 구조)는 오늘날 데이터 처리 시스템에 널리 사용되고 있다. PKI를 기반으로한 암호화 시스템 만으로도 안전성이 높은 서명 규약(protocol)을 실현할 수 있고, 이것이 최근에 PKI에 대한 관심도가 커지는 이유이기도 하다.
그러나, 다른 측면에서 PKI의 효율적인 구현을 위하여 전문화된 코-프로세서(co-processor), 즉 암호화 엔진(crypto-engine)의 하드웨어 구현의 이용이 요구된다. 지난 수십년 동안 하드웨어-중심적인 암호화 엔진의 구현과 함께, SCA(Side-Channel Analysis)와 같은 새로운 암호-해독 방법들도 나타났다. 이러한 공격(attack) 방법들에는 많은 다양한 기술들이 나타나고 있으나, 가장 일반적인 것으로는, 타이밍 해독(Timing Analysis), 파워 해독(Power Analysis), 전자기 해독(Electro-Magnetic Analysis) 및 오류 해독(Different Fault Analysis:DFA) 등이 있다. 이와 같은 방법들은 암호화 시스템에 성공적으로 공격하여 적은 시간과 노력으로 비밀 키(secrete key)를 획득할 수 있는 것으로 알려져 있다.
따라서, 위와 같은 SCA에 대책을 위한 개발들이 향후 중요한 과제이다. SCA 중 하나인 DPA(Differential Power Analysis)에서는 비밀 키에 대한 정보를 얻기 위하여 스칼라 곱 계산 동안의 파워 트랙(track)을 해독한다. DPA 공격에서는 파워 트랙이, 암호화 장치가 수행하는 명령어들(instructions) 뿐만아니라 수행 과정 중의 피연산자들(operands)의 값들과 상관성(correlated)이 있다는 가설(hypothesis)에 기반을 두고 있다. 따라서, 파워 트랙의 조사(examination)로부터, 수행되고 있는 명령어들과 데이터 레지스터들의 콘텐츠에 관한 정보가 누설될 수 있다. 암호화 장치가 비밀키 암호화 연산을 실행하는 경우에 있어서는, 비밀 키가 유출될 가능성이 있다.
SPA(Simple Power Analysis) 공격에서는, 비밀 키에 대한 정보가 단 하나의 비밀 키 연산으로부터 파워 트랙을 조사함으로써 추적(deduce)될 수 있다. EC 포인 트 승산 알고리즘의 구현은, 포인트 덧셈 및 이배 연산 식들이 꽤 달라서 서로 구분될 수 있는 파워 트랙들을 가지기 때문에, 특히 취약한 구조를 가진다. 실행 경로가 비밀 키 비트들에 의하여 결정되는 구현은 잠재적인(potential) 취약성을 가진다.
DPA 공격에서는, 다루어지고 있는 데이터 값들과 상관 관계가 있는 파워 소비의 변화를 이용한다. 이와 같은 변화들은 다른 명령어 시퀀스들과 연합된(associated) 것들보다 일반적으로 훨씬 작아서, 노이즈나 측정 에러에 의하여 애매해진다(obfuscated). 노이즈를 줄이고 차분적 분석(differential analysis)을 강화하기 위하여, 통계적인 방법들이 파워 트랙들의 수집에 이용된다.
상기 SPA 공격에 대비하기 위한 많은 대책들이 있다. 그러나, 대부분의 SPA 대책들은 DPA 공격에 약하다. DPA 공격은 SPA에 비하여 상대적으로 훨씬 복잡하고, 많은 파워 트랙들의 분석을 필요로 하지만, 아직도 비밀 정보를 유출하는데 적용될 수 있다. DPA 공격의 복잡도는 요청된 파워 트랙의 수 또는 하드웨어 자원에 의한 계산에 관련된 정도(measure)이다. DPA 대책 기술들이 많이 개발되었지만, 가장 인기있는 것 중 하나는 비밀키 멱지수(exponent)를 숨기는 대책(blinding countermeasure)이다.
PKI(Public Key Infrastructure:공개키 기반 구조)는 암호화(encryption), 해싱(hashing), 서명 생성(signature generation) 및 검증(verification) 등을 실현하기 위한 많은 다양한 알고리즘을 가진다. 그러나, 이러한 특징들(features)을 위한 주요 연산들 중 하나는, RSA와 같은 시스템에서 모듈로 멱승 연산(modular exponentiation operation)이고, ECC 시스템에서는 스칼라 곱 연산(scalar multiplication operation)이다.
이와 같은 연산들은 복잡한 계산 과정을 거치고, 그 연산을 빠르게 하기 위한 다양한 방법들이 사용되고 있다. 예를 들어, "Binary LTR/RTL", "Beta-ry LTR/RTL", "Window LTR/RTL" 등의 방법이 있다. LTR은 "left-to-right" 처리를 의미하고, RTL은 "right-to-left" 처리를 의미한다.
도 1은 종래의 다중(multiple) 스칼라 곱을 설명하기 위한 도면이다. 도 1을 참조하면, 비밀키들 k 및 l에 대하여 w 비트 씩 오른쪽으로 쉬프트(shift)하면서, 2×w 윈도우에 대한 해당 룩-업(look-up) 테이블 값을 참조하여, 식 R = 2wR + (KiP + LiQ)에 따라 d번 누적함으로써 암호화된 데이터 R = kP + lQ가 얻어진다. 여기서, P 및 Q는 입력되는 데이터이거나, 입력 데이터와 기초 데이터의 조합일 수 있다. 이와 같은 방식은 Shamir 트릭으로 알려져 있고, 비밀키 멱지수(exponent)를 숨기는 대책(blinding countermeasure)으로 이용될 수 있다. 여기서, 누적 스텝 각각에서는 w번의 이배(doubling) 연산과 한번의 덧셈 연산이 이루어짐을 알 수 있다. 그러나, 이와 같은 룩-업 테이블에는 참조될 데이터가 0P+1Q, 1P+0Q, 0P+2Q,...,(2w-1)P+(2w-1)Q와 같이, 22w-1 개로서 그 데이터들을 모두 저장하기 위한 큰 사이즈의 메모리가 요구되는 문제점이 있다.
비밀키 멱지수(exponent)를 숨기는 실질적인 대책(blinding countermeasure) 에서는, 비밀키 k를 k = k1 + k2 되도록 두 부분으로 가르고(split), 두 스칼라 곱 연산들 Q1 = k1P와 Q2 = k2P을 수행한 후 최종 덧셈 연산 Q = Q1 + Q2를 수행함으로써 암호화된 포인트 Q = kP를 얻는다.
Q = kP를 직접 구현하는 전통적인 이진 알고리즘에서는, 스칼라 곱 연산을 위한 연산들의 수 O(n)=n?DBL+(0.2...0.5)n?ADD가 요구된다. DBL은 EC 이배 연산, ADD는 EC 덧셈 연산, 및 n=log2k(이진 표현 비밀키의 비트수)이다. 그러나, 비밀키를 두 부분으로 가르는 위의 방식과 이와 같은 전통적인 알고리즘을 비교해 보면, 먼저, 도 2a와 같이, k2의 비트 수가 k의 비트수와 거의 같은 정도일 때에는 O(n)≒2([log2k2]?DBL+(0.2...0.5)[log2k2]?ADD)+ADD로서, 거의 이중(duplication)의 연산수가 요구된다는 문제점이 있다. 도 2b와 같이, k2의 비트 수가 k의 비트수 보다 매우 작을 때에는 O(n)≒[log2k1]?DBL+(0.2...0.5)[log2k1]?ADD + [log2k2]?DBL+(0.2...0.5)[log2k2]?ADD + ADD로서, 이 때에는 성능 열화가 작지만(acceptable), k의 하위 비트들 일부만 변화(change)시키므로 안전성(security)이 떨어진다는 문제점이 있다. 즉, 공격자(attacker)가 비밀 키 중 상위 [log2k]-[log2k2] 비트들 및 k2와 관련된 나머지 하위 비트들에 대한 철저한(exhausted) 계산에 의하여 그들을 알아낼 수 있는 정도의 복잡도를 가진다.
따라서, 본 발명이 이루고자하는 기술적 과제는, ECC 시스템 및 RSA와 같은 암호화 시스템에서, 어떠한 필드 및 어떠한 표현에서도, 안전성 레벨과 성능을 만족시키면서 비밀키 멱지수를 숨기는 암호화 장치를 제공하는 데 있다.
본 발명이 이루고자하는 다른 기술적 과제는, ECC 및 RSA와 같은 암호화에서 DPA 대책을 위하여 비밀키 멱지수를 숨기는 암호화 방법을 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한 본 발명의 일면에 따른 암호화 장치는, 테이블 계산기 및 로직 회로를 구비하는 것을 특징으로 한다. 상기 테이블 계산기는 입력 데이터 및 비밀 키들 각각의 일정 비트들에 대한 비트 수를 기반으로, EC 연산에 의한 스칼라 곱 값들 또는 모듈로 멱승 연산에 의한 멱승값들로 이루어지는 테이블 값들을 계산하고, 상기 계산된 테이블 값들 중 상기 비밀 키들 각각의 일정 비트들로 이루어지는 윈도우에 대응되는 스칼라 곱 값들 또는 멱승값들을 출력한다. 상기 로직 회로는 상기 출력된 스칼라 곱 값들을 누적하거나 상기 출력된 멱승값들을 누승하여 암호화된 데이터를 출력한다.
상기 테이블 계산기는 상기 일정 비트들의 그 비트 수보다 하나 큰 수 이내의 수를 멱수로 한 수와 상기 입력 데이터에 대한 스칼라 곱 값들, 또는 상기 일정 비트들의 그 비트 수보다 하나 큰 수를 멱수로 한 상기 입력 데이터에 대한 멱승값들을 상기 테이블 값들로서 계산하는 것을 특징으로 한다.
또한, 상기 테이블 계산기는 상기 일정 비트들의 그 비트 수 이내의 수를 멱수로 한 수와 상기 입력 데이터에 대한 스칼라 곱 값들, 또는 상기 일정 비트들의 그 비트 수 이내의 수를 멱수로 한 상기 입력 데이터에 대한 멱승값들을 상기 테이블 값들로서 계산하는 것을 특징으로 한다.
상기의 기술적 과제를 달성하기 위한 본 발명의 다른 일면에 따른 암호화 장치는, 스플리터, 선택기, 테이블 계산기, 및 누적기를 구비하는 것을 특징으로 한다. 상기 스플리터는 입력 비밀키를 수신하여 합이 상기 입력 비밀키가 되는 적어도 두 개의 갈라진 비밀키들을 생성한다. 상기 선택기는 상기 갈가진 비밀키들 각각의 일정 비트들로 이루어지는 윈도우를 순차적으로 선택한다. 상기 테이블 계산기는 입력 포인트 및 상기 일정 비트들에 대한 비트 수를 기반으로, EC 연산에 의한 스칼라 곱 값들로 이루어지는 테이블 값들을 계산하고, 상기 계산된 테이블 값들 중 상기 선택된 윈도우에 대응되는 스칼라 곱 값들을 출력한다. 상기 누적기는 상기 출력된 스칼라 곱 값들을 누적하여 누적된 값을 암호화된 포인트로서 출력한다.
상기의 기술적 과제를 달성하기 위한 본 발명의 또 다른 일면에 따른 암호화 장치는, 스플리터, 선택기, 테이블 계산기, 및 누승기를 구비하는 것을 특징으로 한다. 상기 스플리터는 입력 비밀키를 수신하여 합이 상기 입력 비밀키가 되는 적어도 두 개의 갈라진 비밀키들을 생성한다. 상기 선택기는 상기 갈가진 비밀키들 각각의 일정 비트들로 이루어지는 윈도우를 순차적으로 선택한다. 상기 테이블 계산기는 입력 메시지 및 상기 일정 비트들에 대한 비트 수를 기반으로, 모듈로 멱승 연산에 의한 멱승값들로 이루어지는 테이블 값들을 계산하고, 상기 계산된 테이블 값들 중 상기 선택된 윈도우에 대응되는 멱승값들을 출력한다. 상기 누승기는 상기 출력된 멱승값들을 누승하여 누승된 값을 암호화된 메시지로서 출력한다.
상기의 기술적 과제를 달성하기 위한 본 발명의 또 다른 일면에 따른 암호화 방법은, 입력 비밀키를 수신하여 합이 상기 입력 비밀키가 되는 적어도 두 개의 갈라진 비밀키들을 생성하는 단계; 상기 갈가진 비밀키들 각각의 일정 비트들로 이루어지는 윈도우를 순차적으로 선택하는 단계; 입력 포인트 및 상기 일정 비트들에 대한 비트 수를 기반으로, EC 연산에 의한 스칼라 곱 값들로 이루어지는 테이블 값들을 계산하는 단계; 상기 계산된 테이블 값들 중 상기 선택된 윈도우에 대응되는 스칼라 곱 값들을 출력하는 단계; 상기 출력된 스칼라 곱 값들을 순차적으로 누적하는 단계; 및 상기 누적된 값을 암호화된 포인트로서 출력하는 단계를 구비하는 것을 특징으로 한다.
상기의 기술적 과제를 달성하기 위한 본 발명의 또 다른 일면에 따른 암호화 방법은, 입력 비밀키를 수신하여 합이 상기 입력 비밀키가 되는 적어도 두 개의 갈라진 비밀키들을 생성하는 단계; 상기 갈가진 비밀키들 각각의 일정 비트들로 이루어지는 윈도우를 순차적으로 선택하는 단계; 입력 메시지 및 상기 일정 비트들에 대한 비트 수를 기반으로, 모듈로 멱승 연산에 의한 멱승값들로 이루어지는 테이블 값들을 계산하는 단계; 상기 계산된 테이블 값들 중 상기 선택된 윈도우에 대응되는 멱승값들을 출력하는 단계; 상기 출력된 멱승값들을 순차적으로 누승하는 단계; 및 상기 누승된 값을 암호화된 메시지로서 출력하는 단계를 구비하는 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
타원 곡선(EC) E는 "Weierstrass" 형태에서의 타원 곡선 방정식 [수학식 1]을 만족하는 점들 (x,y)의 집합(set)이다.
[수학식 1]
암호화 응용에서, 타원 곡선은 소수 유한 필드(prime finite field) GF(p) 또는 이진 유한 필드(binary finite field) GF(2n) 상에서 이용될 수 있다. GF()는 갈로아 필드(Galois Field)를 나타내고, 소수 유한 필드는 소수개의 원소를 가지는 필드이며, 이진 유한 필드는 2n개의 원소를 가지는 필드이다.
만일, n≥1일 때, 2n개의 원소를 가지는 유일한 필드 GF(2n)가 존재한다. 이진 유한 필드에 대하여, 상기 [수학식 1]은 [수학식 2]와 같이 변경될 수 있다.
[수학식 2]
EC 상에서 포인트 덧셈 연산(point addition operation)과, 그 중 특정한 경우인 포인트 이배 연산(point doubling operation)이 다음과 같이 이루어진다. 예를 들어, 두 개의 포인트 P(x1,y1) 및 Q(x2, y2)에서, R = P + Q = (x3, y3)를 얻기 위하여, 이진 유한 필드 GF(2n) 상에서 [수학식 3]과 같은 유한 필드 연산들이 요구된다.
[수학식 3]
포인트 이배 연산인 경우(P=Q)에는, 이진 유한 필드 GF(2n) 상에서 [수학식 4]와 같은 유한 필드 연산들이 요구된다.
[수학식 4]
한편, 위와 같은 "Affine" 표현 이외에도, 타원 곡선 상의 포인트(점)를 나타내는 여러 가지 표현들이 있다. 예를 들어, "Ordinary Projective", "Jacobian Projective" 및 "Lopez-Dahab Projective" 등이다. 이들 각각은 일정 공격에 더 강 하거나 더 좋은 성능을 발휘할 수 있고, 시스템에 따라서 구현 상의 용이성에 차이가 있다.
한편, ECC 기반 시스템에서는 [수학식 5]와 같은 스칼라곱 연산에 의하여 암호화된 포인트(Q)가 생성될 수 있다. [수학식 5]에서 P는 입력된 포인트, 및 k는 비밀키이다.
[수학식 5]
Q = kP
이와 같은 스칼라 포인트 곱(scalar point multiplication)에서 메인(main) 연산은 Q = kㆍP = P + P + ... + P(k times)를 계산한다. 스칼라 포인트 곱은 위의 수학식들과 같이 유한 필드 연산들을 기반으로 한 포인트 연산들, 즉, 승산(multiplication in finite field), 합산(addition in finite field), 제곱(square in finite field)으로 이루어진다. 이와 관련된 이산 대수(discrete logarithm) 연산에서는, P와 Q=kㆍP로부터 k를 계산한다.
다른 한편, RSA와 같은 시스템에서는 [수학식 6]과 같은 모듈로 멱승(modular exponentiation) 연산에 의하여, 암호화된 메시지(C)가 생성될 수 있다. [수학식 6]에서 M은 입력된 메시지, N은 시스템의 모듈(the module of the system), 및 d는 비밀키이다.
[수학식 6]
C = Md mod N
본 발명은 보안성을 저하시킴 없이 성능 열화가 없고 받아들일 수 있는 정도의 메모리 사이즈가에서, 비밀키를 둘로 갈라 숨기면서 입력 데이터를 암호화하기 위하여 제안되었다. 종래에는 도 1과 같이 다중(multiple) 스칼라 곱에 따라 암호화된 데이터 R을 얻기 위하여, 룩-업 테이블로부터 참조될 데이터가 22w-1 개의 스칼라 곱값들이 큰 메모리에 저장되어야 했지만, 본 발명에서는 2(w+1)-2개(도 3 및 도 7에서), 또는 2w-1개(도 5 및 도 9에서)의 스칼라 곱값들 또는 멱승값들만 작은 메모리에 저장되면 성능 열화 없이 동작될 수 있다.
도 3은 본 발명의 일실시예에 따라 ECC에서 멱지수를 숨기는 DPA 대책을 위한 성능 중심(performance-oriented)의 암호화 장치(300)를 나타내는 블록도이다. 도 3을 참조하면, 상기 암호화 장치(300)는 스플리터(spilter)(미도시), 선택기(310), 테이블 계산기(320), 및 누적기(accumulator)(330)를 구비한다. 도 3의 암호화 장치(300)의 동작 설명을 위하여 도 4의 흐름도가 참조된다.
먼저, 상기 스플리터는 랜덤 값 k1=r을 수신한다(S410). 다음에, 상기 스플리터는 입력 비밀키(k)를 수신하고, k2=k-k1되는 다른키를 계산한다(S420). 즉, 다중 스칼라 곱에 기초하여 암호화된 데이터 Q를 얻기 위하여, 상기 스플리터는 두 개의 갈라진(split) 비밀키들(k1,k2)을 출력한다. 여기서, 갈라진 비밀키들이 두개인 것으로 예를 들었으나, 안전성 레벨을 증가시키기 위하여 더 많은 키들로 갈라질 수 있다. 이때, 상기 갈가진 비밀키들은 같은 비트 수일지 모르고, 갈라진 비밀 키들의 합은 입력 비밀키(k)와 같을지 모른다.
도 3에서, 상기 테이블 계산기(320)는 암호화될 입력 포인트 P를 수신하고, 또한 상기 갈가진 비밀키들(k1,k2) 각각의 일정 비트들에 대한 비트 수(w)를 수신한다(S430). 이에 따라 상기 테이블 계산기(320)는 상기 입력 포인트 P 및 상기 비트수(w)를 기반으로, 2(w+1)-2 개의 EC 연산에 의한 스칼라 곱 값들로 이루어지는 테이블 값들 T[1P,2P,3P,...,2(2w-1)P]을 계산한다(S440). 즉, 상기 테이블 계산기(320)는 상기 갈가진 비밀키들(k1,k2) 각각의 상기 일정 비트들의 그 비트 수(w)보다 하나 큰 수 이내의 수를 멱수(exponent)로 한 수(1,2,3,...,2(w+1)-2)와 상기 입력 포인트 P에 대한 스칼라 곱 값들을 상기 테이블 값들로서 계산한다.
다음에, 상기 누적기(330)는 누적을 시작하기 전에 주기적으로 이전 누적값을 리셋하고(S450), 이에 따라 상기 선택기(310)는 상기 갈가진 비밀키들(k1,k2) 각각의 일정 비트들로 이루어지는 윈도우(2×w)를 순차적으로 선택하기 시작한다. 상기 선택기(310)는 LTR(left-to-right) 방식으로 상위부터 하위 순서로 윈도우(2×w)의 키값 k1의 k1 i 및 k2의 k2 i를 (log2 k)/w 번 선택한다. 상기 테이블 계산기(320)는 상기 계산된 테이블 값들 중 상기 선택된 윈도우(2×w)의 키값들의 합(k1 i+k2 i)에 대응되는 스칼라 곱 값들(k1 i+k2 i)P을 출력한다.
이에 따라, 상기 누적기(330)는 상기 출력된 스칼라 곱 값들(k1 iP+k2 iP)을 누적하여 누적된 값 Q을 암호화된 포인트로서 출력한다. 이때, 상기 누적기(330)는 상기 누적 연산 시마다 상기 갈가진 비밀키들(k1,k2) 각각의 상기 일정 비트들의 그 비트 수(w)만큼 이전 누적값에 대한 EC 이배 연산들(2wQ)과 상기 EC 이배 연산들 결과(2wQ)에 상기 누적기(330)에서 선택된 윈도우에 따라 출력된 하나의 스칼라 곱 값(예를 들어, (k1 d-1+k2 d-1)P, (k1 d-2+k2 d-2)P, 또는 (k1 d-3+k2 d-3)P,...)을 한번 EC 덧셈 연산한다(S460). 상기 선택기(310)가 (log2 k)/w번 선택할 동한 상기 누적기(330)도 이와 같은 방식으로 (log2 k)/w번 누적하고 종료한다(S470).
이와 같이, 상기 S410 내지 S470 단계에 따라, 비밀키 멱지수를 숨기는 동작이 모두 끝나면, 상기 최종 암호화된 출력 포인트 Q가 상위 계층(upper layer)의 후속 프로세서(processor)로 출력된다(S480). 후속 프로세서에서는, 암호화된 출력 포인트 Q에 따라 서명이나 인증(sign/verification) 등이 이루어진다.
도 5는 본 발명의 다른 실시예에 따라 ECC에서 멱지수를 숨기는 DPA 대책을 위한 메모리 중심(memory-oriented)의 암호화 장치(500)를 나타내는 블록도이다. 도 5를 참조하면, 상기 암호화 장치(500)는 선택기(510), 테이블 계산기(520), 및 누적기(530)를 구비한다. 도 5의 암호화 장치(500)의 동작 설명이 도 6의 흐름도에 나타나 있다.
먼저, 도 4와 마찬가지로, 소정 스플리터는 랜덤 값 k1=r을 수신하고, 입력 비밀키(k)를 수신하여, k2=k-k1되는 다른키를 계산함으로써, 두 개의 갈라진(split) 비밀키들(k1,k2)을 출력한다(S610~S620).
도 5에서, 상기 테이블 계산기(520)는 암호화될 입력 포인트 P를 수신하고, 또한 상기 갈가진 비밀키들(k1,k2) 각각의 일정 비트들에 대한 비트 수(w)를 수신한다(S630). 이에 따라 상기 테이블 계산기(520)는 상기 입력 포인트 P 및 상기 비트수(w)를 기반으로, 2w-1 개의 EC 연산에 의한 스칼라 곱 값들로 이루어지는 테이블 값들 T[1P,2P,3P,...,(2w-1)P]을 계산한다(S640). 즉, 상기 테이블 계산기(520)는 상기 갈가진 비밀키들(k1,k2) 각각의 상기 일정 비트들의 그 비트 수(w) 이내의 수를 멱수(exponent)로 한 수(1,2,3,...,2w-1)와 상기 입력 포인트 P에 대한 스칼라 곱 값들을 상기 테이블 값들로서 계산한다.
다음에, 상기 누적기(530)는 누적을 시작하기 전에 주기적으로 이전 누적값을 리셋하고(S650), 이에 따라 상기 선택기(510)는 상기 갈가진 비밀키들(k1,k2) 각각의 일정 비트들로 이루어지는 윈도우(2×w)를 순차적으로 선택하기 시작한다. 상기 선택기(510)는 LTR(left-to-right) 방식으로 상위부터 하위 순서로 윈도우(2× w)의 키값 k1의 k1 i 및 k2의 k2 i를 (log2 k)/w번 선택한다. 상기 테이블 계산기(520)는 상기 계산된 테이블 값들 중 상기 선택된 윈도우(2×w)의 키값들(k1 i,k2 i) 각각에 대응되는 스칼라 곱 값들(k1 iP,k2 iP)을 출력한다. 여기서는, 스칼라 곱 값들의 합(k1 iP+k2 iP)이 출력되지 않고, 두 개의 스칼라 곱 값들(k1 iP,k2 iP)이 따로 따로 출력된다. 이는 상기 테이블 계산기(520)에 상기 테이블 값들 T[1P,2P,3P,...,(2w-1)P]을 저장하는 메모리 사이즈를 줄이기 위함이다.
이에 따라, 상기 누적기(530)는 상기 출력된 스칼라 곱 값들(k1 iP,k2 iP)을 누적하여 누적된 값 Q을 암호화된 포인트로서 출력한다. 이때, 상기 누적기(530)는 상기 누적 연산 시마다 상기 갈가진 비밀키들(k1,k2) 각각의 상기 일정 비트들의 그 비트 수(w)만큼 이전 누적값에 대한 EC 이배 연산들(2wQ)과 상기 EC 이배 연산들 결과(2wQ)에 상기 누적기(530)에서 선택된 윈도우에 따라 출력된 두 개의 스칼라 곱 값들(예를 들어, k1 d-1P,k2 d-1P 또는 k1 d-2P, k2 d-2P,...)을 그 수만큼(예를 들어, 2번) EC 덧셈 연산한다(S660). 여기서는, 상기 테이블 계산기(520)에 상기 테이블 값들 T[1P,2P,3P,...,(2w-1)P]을 저장하는 메모리 사이즈가 줄어드는 대신에, 도 3에 비 하여 덧셈 연산이 한번 더 이루어지므로 그 만큼 성능이 떨어질 수 있다. 그러나, 상기 갈가진 비밀키들(k1,k2)의 비트수가 같으면서도, 상기 테이블 값들 T[1P,2P,3P,...,(2w-1)P] 생성에 동일 입력 포인트(P)를 사용하므로, 도 1과 같은 큰 성능 열화나 메모리 비용이 요구되지 않는다. 상기 선택기(510)가 (log2 k)/w번 선택할 동한 상기 누적기(530)도 이와 같은 방식으로 (log2 k)/w번 누적하고 종료한다(S670). 상기 최종 암호화된 출력 포인트 Q는 서명이나 인증 등을 위하여 상위 계층의 후속 프로세서로 출력된다(S680).
도 7은 본 발명의 또 다른 실시예에 따라 RSA와 같은 암호화에서 멱지수를 숨기는 DPA 대책을 위한 성능 중심의 암호화 장치(700)를 나타내는 블록도이다. 도 7을 참조하면, 상기 암호화 장치(700)는 선택기(710), 테이블 계산기(720), 및 누승기(involution unit)(730)를 구비한다. 도 7의 암호화 장치(700)의 동작 설명이 도 8의 흐름도에 나타나 있다.
먼저, 도 4 및 도 6과 마찬가지로, 소정 스플리터는 랜덤 값 d1=r을 수신하고, 입력 비밀키(d)를 수신하여, d2=d-d1되는 다른키를 계산함으로써, 두 개의 갈라진 비밀키들(d1,d2)을 출력한다(S810~S820).
도 7에서, 상기 테이블 계산기(720)는 암호화될 입력 메시지 M을 수신하고, 또한 상기 갈가진 비밀키들(d1,d2) 각각의 일정 비트들에 대한 비트 수(w)를 수신한 다(S830). 이에 따라 상기 테이블 계산기(720)는 상기 입력 메시지 M 및 상기 비트수(w)를 기반으로, 2(w+1)-2 개의 모듈로 멱승(modular exponentiation) 연산에 의한 멱승값들로 이루어지는 테이블 값들 T[M1,M2,M3,...]을 계산한다(S840). 즉, 상기 테이블 계산기(720)는 상기 갈가진 비밀키들(d1,d2) 각각의 상기 일정 비트들의 그 비트 수(w)보다 하나 큰 수 이내의 수를 멱수(예를 들어, 2(w+1)-2)로 한 상기 입력 메시지(M)에 대한 멱승값들을 상기 테이블 값들로서 계산한다.
다음에, 상기 누승기(730)는 누승을 시작하기 전에 주기적으로 이전 누승값을 리셋(R=1)하고(S850), 이에 따라 상기 선택기(710)는 상기 갈가진 비밀키들(d1,d2) 각각의 일정 비트들로 이루어지는 윈도우(2×w)를 순차적으로 선택하기 시작한다. 상기 선택기(710)는 LTR(left-to-right) 방식으로 상위부터 하위 순서로 윈도우(2×w)의 키값 d1의 d1 i 및 d2의 d2 i를 (log2 d)/w번 선택한다. 상기 테이블 계산기(720)는 상기 계산된 테이블 값들 중 상기 선택된 윈도우(2×w)의 키값들의 합(d1 i+d2 i)에 대응되는 멱승값들(Md1i+d2i)을 출력한다. 여기서는, 멱승값들(Md1i,Md2i)이 따로 따로 출력되지 않고, 하나의 멱승값(Md1i+d2i)씩 출력된다.
이에 따라, 상기 누승기(730)는 상기 출력된 멱승값들(Md1i+d2i)을 누승하여 누승된 값 R을 암호화된 메시지로서 출력한다. 이때, 상기 누승기(730)는 상기 누 승 연산 시마다 상기 갈가진 비밀키들(d1,d2) 각각의 상기 일정 비트들의 그 비트 수(w)를 멱수로 한 수만큼 이전 누승값에 대한 제곱 연산들(예를 들어, R의 2w승)과 상기 제곱 연산들 결과에 상기 선택된 윈도우에 따라 출력된 하나의 멱승값(예를 들어, Md1,d-1+d2,d-1, 또는 Md1,d-2+d2,d-2,... )을 한번 곱셈 연산한다(S860). 여기서는 상기 선택된 윈도우에 따라 출력된 하나의 멱승값이 한번만 곱셈 연산되므로 성능 중심적이다. 상기 선택기(710)가 (log2 d)/w번 선택할 동한 상기 누적기(730)도 이와 같은 방식으로 (log2 d)/w번 누승하고 종료한다(S870). 상기 최종 암호화된 출력 메시지 R은 서명이나 인증 등을 위하여 상위 계층의 후속 프로세서로 출력된다(S880).
도 9는 본 발명의 또 다른 실시예에 따라 RSA와 같은 암호화에서 멱지수를 숨기는 DPA 대책을 위한 메모리 중심의 암호화 장치(900)를 나타내는 블록도이다. 도 9를 참조하면, 상기 암호화 장치(900)는 선택기(910), 테이블 계산기(920), 및 누승기(930)를 구비한다. 도 9의 암호화 장치(900)의 동작 설명을 위하여 도 10의 흐름도가 참조된다.
먼저, 도 8과 마찬가지로, 소정 스플리터는 랜덤 값 d1=r을 수신하고, 입력 비밀키(d)를 수신하여, d2=d-d1되는 다른키를 계산함으로써, 두 개의 갈라진 비밀키들(d1,d2)을 출력한다(S1010~S1020).
도 9에서, 상기 테이블 계산기(920)는 암호화될 입력 메시지 M을 수신하고, 또한 상기 갈가진 비밀키들(d1,d2) 각각의 일정 비트들에 대한 비트 수(w)를 수신한다(S1030). 이에 따라 상기 테이블 계산기(920)는 상기 입력 메시지 M 및 상기 비트수(w)를 기반으로, 2w-1 개의 모듈로 멱승 연산에 의한 멱승값들로 이루어지는 테이블 값들 T[M1,M2,M3,...]을 계산한다(S1040). 즉, 상기 테이블 계산기(920)는 상기 갈가진 비밀키들(d1,d2) 각각의 상기 일정 비트들의 그 비트 수(w) 이내의 수를 멱수(예를들어,(2w-1))로 한 상기 입력 메시지(M)에 대한 멱승값들을 상기 테이블 값들로서 계산한다.
다음에, 상기 누승기(930)는 누승을 시작하기 전에 주기적으로 이전 누승값을 리셋(R=1)하고(S1050), 이에 따라 상기 선택기(910)는 상기 갈가진 비밀키들(d1,d2) 각각의 일정 비트들로 이루어지는 윈도우(2×w)를 순차적으로 선택하기 시작한다. 상기 선택기(910)는 LTR(left-to-right) 방식으로 상위부터 하위 순서로 윈도우(2×w)의 키값 d1의 d1 i 및 d2의 d2 i를 (log2 d)/w번 선택한다. 상기 테이블 계산기(920)는 상기 계산된 테이블 값들 중 상기 선택된 윈도우(2×w)의 키값들(d1 i,d2 i) 각각에 대응되는 멱승값들(Md1i,Md2i)을 출력한다. 여기서는, 하나의 멱승값(Md1i+d2i)이 출력되지 않고, 두 개의 멱승값들(Md1i,Md2i)이 따로 따로 출력된다. 이는 상기 테이블 계산기(920)에 상기 테이블 값들 T[M1,M2,M3,...]을 저장하는 메모리 중심적이다.
이에 따라, 상기 누승기(930)는 상기 출력된 멱승값들(Md1i?Md2i)을 누승하여 누승된 값 R을 암호화된 메시지로서 출력한다. 이때, 상기 누승기(930)는 상기 누승 연산 시마다 상기 갈가진 비밀키들(d1,d2) 각각의 상기 일정 비트들의 그 비트 수(w)를 멱수로 한 수(예를 들어, R의 2w승)만큼 이전 누승값에 대한 제곱 연산들(2(w-1)개의 R2)과 상기 제곱 연산들 결과에 상기 선택된 윈도우에 따라 출력된 두개의 멱승값들(예를 들어, Md1,d-1및 Md2,d-1, 또는 Md1,d-2 및 Md2,d-2,... )을 한번씩 곱셈 연산한다(S1060). 여기서는, 상기 테이블 계산기(920)에 상기 테이블 값들 T[M1,M2,M3,...]을 저장하는 메모리 사이즈가 줄어드는 대신에, 도 7에 비하여 곱셈 연산이 한번 더 이루지므로 그 만큼 성능이 떨어질 수 있다. 그러나, 상기 갈가진 비밀키들(d1,d2)의 비트수가 같으면서도, 상기 테이블 값들 T[M1,M2,M3,...] 생성에 동일 입력 메시지(M)를 사용하므로, 도 1과 같은 큰 성능 열화나 메모리 비용이 요구되지 않는다. 상기 선택기(910)가 (log2 d)/w번 선택할 동한 상기 누승기(930)도 이와 같은 방식으로 (log2 d)/w번 누승하고 종료한다(S1070). 상기 최종 암호화된 출 력 메시지 R은 서명이나 인증 등을 위하여 상위 계층의 후속 프로세서로 출력된다(S1080).
위에서 기술한 바와 같이, 본 발명의 일실시예에 따른 암호화 장치들에서는, EC 연산에 기초한 테이블 계산기(320/520)가 순차로 입력되는 갈라진 비밀키들(k1, k2)의 일정 윈도우에 대한 하나의 스칼라 곱 연산값(k1 i+k2 i)P 또는 입력된 비트들 각각에 대응되는 스칼라 곱 연산값들(k1 iP,k2 iP)을 출력하고, 누적기(330/530)가 상기 출력들을 누적함으로써 비밀키 멱지수를 숨긴다. 또한, 모듈로 멱승 연산에 기초한 테이블 계산기(720/920)가 순차로 입력되는 갈라진 비밀키들(d1, d2)의 일정 윈도우에 대한 하나의 멱승값(Md1i+d2i) 또는 입력된 비트들 각각에 대응되는 멱승값들(Md1i,Md2i)을 출력하고, 누승기(730/930)가 상기 출력들을 누승함으로써 비밀키 멱지수를 숨긴다.
본 명세서에서 개시된 방법 및 장치에서 사용되는 기능은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 암호화 장치 및 방법은, ECC 암호화 시스템 및 RSA와 같은 암호화 시스템의 어떠한 필드 및 어떠한 표현에서도 적용될 수 있고, 성능 중심 및 메모리 중심 관점에서 비밀키 멱지수를 숨기면서 고속으로 입력 데이터를 암호화할 수 있으며, 성능 및 보안성 저지 레벨(security resistance level)을 저하시킴 없이 DPA 공격에 대비할 수 있다.
Claims (27)
- 삭제
- 삭제
- 삭제
- 입력 비밀키를 수신하여 합이 상기 입력 비밀키가 되는 적어도 두 개의 갈라진 비밀키들을 생성하는 스플리터;상기 갈라진 비밀키들 각각의 일정 비트들로 이루어지는 윈도우를 순차적으로 선택하는 선택기;상기 갈라진 비밀키 각각에 대하여, 입력 포인트 및 상기 일정 비트들에 대한 비트 수를 기반으로, EC 연산에 의한 스칼라 곱 값들로 이루어지는 테이블 값들을 계산하고, 상기 계산된 테이블 값들 중 상기 선택된 윈도우에 대응되는 스칼라 곱 값들을 출력하는 테이블 계산기; 및상기 갈라진 비밀키 각각에 대하여, 상기 출력된 스칼라 곱 값들을 누적하여, 상기 갈라진 비밀키 각각에 대응하는 누적된 값을 더하여을, 암호화된 포인트로서 출력하는 누적기를 구비하는 것을 특징으로 하는 암호화 장치.
- 제 4항에 있어서, 상기 테이블 계산기는,상기 일정 비트들의 그 비트 수보다 하나 큰 수 이내의 수를 멱수로 한 수와 상기 입력 포인트에 대한 스칼라 곱 값들을 상기 테이블 값들로서 계산하는 것을 특징으로 하는 암호화 장치.
- 제 5항에 있어서, 상기 누적기는,상기 누적 연산 시마다 상기 일정 비트들의 그 비트 수만큼 이전 누적값에 대한 EC 이배 연산들과 상기 EC 이배 연산들 결과에 상기 선택된 윈도우에 따라 출력된 하나의 스칼라 곱 값을 한번 EC 덧셈 연산하는 것을 특징으로 하는 암호화 장치.
- 제 4항에 있어서, 상기 테이블 계산기는,상기 일정 비트들의 그 비트 수 이내의 수를 멱수로 한 수와 상기 입력 포인트에 대한 스칼라 곱 값들을 상기 테이블 값들로서 계산하는 것을 특징으로 하는 암호화 장치.
- 제 7항에 있어서, 상기 누적기는,상기 누적 연산 시마다 상기 일정 비트들의 그 비트 수만큼 이전 누적값에 대한 EC 이배 연산들과 상기 EC 이배 연산들 결과에 상기 선택된 윈도우에 따라 출력된 스칼라 곱 값들을 그 수만큼 EC 덧셈 연산들을 하는 것을 특징으로 하는 암호화 장치.
- 제 4항에 있어서, 상기 갈라진 비밀키들은 같은 비트 수인 것을 특징으로 하는 암호화 장치.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 입력 비밀키를 수신하여 합이 상기 입력 비밀키가 되는 적어도 두 개의 갈라진 비밀키들을 생성하는 단계;상기 갈라진 비밀키들 각각의 일정 비트들로 이루어지는 윈도우를 순차적으로 선택하는 단계;상기 갈라진 비밀키 각각에 대하여, 입력 포인트 및 상기 일정 비트들에 대한 비트 수를 기반으로, EC 연산에 의한 스칼라 곱 값들로 이루어지는 테이블 값들을 계산하는 단계;상기 계산된 테이블 값들 중 상기 선택된 윈도우에 대응되는 스칼라 곱 값들을 출력하는 단계;상기 갈라진 비밀키 각각에 대하여, 상기 출력된 스칼라 곱 값들을 순차적으로 누적하는 단계; 및상기 갈라진 비밀키 각각에 대응하는 상기 누적된 값을 더하여, 암호화된 포인트로서 출력하는 단계를 구비하는 것을 특징으로 하는 암호화 방법.
- 제 16항에 있어서, 상기 테이블 값들은,상기 일정 비트들의 그 비트 수보다 하나 큰 수 이내의 수를 멱수로 한 수와 상기 입력 포인트에 대한 스칼라 곱 값들로 이루어지는 것을 특징으로 하는 암호화 방법.
- 제 17항에 있어서, 상기 누적 연산 시마다 상기 일정 비트들의 그 비트 수만큼 이전 누적값에 대한 EC 이배 연산들과 상기 EC 이배 연산들 결과에 상기 선택된 윈도우에 따라 출력된 하나의 스칼라 곱 값을 한번 EC 덧셈 연산하는 것을 특징으로 하는 암호화 방법.
- 제 16항에 있어서, 상기 테이블 값들은,상기 일정 비트들의 그 비트 수 이내의 수를 멱수로 한 수와 상기 입력 포인트에 대한 스칼라 곱 값들로 이루어지는 것을 특징으로 하는 암호화 방법.
- 제 19항에 있어서, 상기 누적 연산 시마다 상기 일정 비트들의 그 비트 수만큼 이전 누적값에 대한 EC 이배 연산들과 상기 EC 이배 연산들 결과에 상기 선택된 윈도우에 따라 출력된 스칼라 곱 값들을 그 수만큼 EC 덧셈 연산들을 하는 것을 특징으로 하는 암호화 방법.
- 제 16항에 있어서, 상기 갈라진 비밀키들은 같은 비트 수인 것을 특징으로 하는 암호화 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050062907A KR101194837B1 (ko) | 2005-07-12 | 2005-07-12 | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 |
DE102006033386A DE102006033386B4 (de) | 2005-07-12 | 2006-07-12 | Kryptographisches System und Verfahren zum Verschlüsseln von Eingangsdaten |
US11/484,852 US7903811B2 (en) | 2005-07-12 | 2006-07-12 | Cryptographic system and method for encrypting input data |
GB0613868A GB2428358B8 (en) | 2005-07-12 | 2006-07-12 | Crytographic system and method for encrypting input data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050062907A KR101194837B1 (ko) | 2005-07-12 | 2005-07-12 | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070008012A KR20070008012A (ko) | 2007-01-17 |
KR101194837B1 true KR101194837B1 (ko) | 2012-10-25 |
Family
ID=36955534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050062907A KR101194837B1 (ko) | 2005-07-12 | 2005-07-12 | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7903811B2 (ko) |
KR (1) | KR101194837B1 (ko) |
DE (1) | DE102006033386B4 (ko) |
GB (1) | GB2428358B8 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101194837B1 (ko) * | 2005-07-12 | 2012-10-25 | 삼성전자주식회사 | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 |
US7991154B2 (en) * | 2008-05-14 | 2011-08-02 | Univeristy of Castilla-La Mancha | Exponentiation method using multibase number representation |
US8051097B2 (en) * | 2008-12-15 | 2011-11-01 | Apple Inc. | System and method for authentication using a shared table and sorting exponentiation |
JP5327380B2 (ja) * | 2010-03-31 | 2013-10-30 | 富士通株式会社 | 暗号処理装置および暗号処理方法 |
US8892908B2 (en) * | 2010-12-23 | 2014-11-18 | Morega Systems Inc. | Cryptography module for use with fragmented key and methods for use therewith |
JP5488718B2 (ja) | 2010-12-27 | 2014-05-14 | 富士通株式会社 | 暗号処理装置、暗号処理方法、およびプログラム |
KR101118826B1 (ko) * | 2011-02-15 | 2012-04-20 | 한양대학교 산학협력단 | 물리적 공격을 방어하는 암호화 장치 및 암호화 방법 |
US9584320B1 (en) * | 2014-12-23 | 2017-02-28 | EMC IP Holding Company LLC | Blinding function in elliptic curve cryptography |
US10181944B2 (en) * | 2015-06-16 | 2019-01-15 | The Athena Group, Inc. | Minimizing information leakage during modular exponentiation and elliptic curve point multiplication |
US10270598B2 (en) * | 2016-08-26 | 2019-04-23 | Intel Corporation | Secure elliptic curve cryptography instructions |
US10826694B2 (en) * | 2018-04-23 | 2020-11-03 | International Business Machines Corporation | Method for leakage-resilient distributed function evaluation with CPU-enclaves |
EP3579493A1 (fr) | 2018-06-08 | 2019-12-11 | STMicroelectronics (Rousset) SAS | Protection d'un calcul itératif |
US11627132B2 (en) * | 2018-06-13 | 2023-04-11 | International Business Machines Corporation | Key-based cross domain registration and authorization |
US11157240B2 (en) * | 2019-02-15 | 2021-10-26 | International Business Machines Corporation | Perform cryptographic computation scalar multiply instruction |
FR3094522B1 (fr) | 2019-03-29 | 2021-11-19 | St Microelectronics Rousset | Protection d’un calcul itératif |
CN111538480B (zh) * | 2020-03-26 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种用于椭圆曲线密码的倍点运算方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003233307A (ja) | 2001-12-04 | 2003-08-22 | Fujitsu Ltd | 秘密鍵を用いた耐タンパ暗号処理 |
JP2004280103A (ja) | 2003-03-14 | 2004-10-07 | Samsung Electronics Co Ltd | モンゴメリー類型のモジュラー乗算装置及び方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6337909B1 (en) * | 1996-10-10 | 2002-01-08 | Certicom Corp. | Generation of session keys for El Gamal-like protocols from low hamming weight integers |
US5793659A (en) | 1996-10-15 | 1998-08-11 | United Microelectronics Corporation | Method of modular reduction and modular reduction circuit |
JPH10171350A (ja) * | 1996-12-10 | 1998-06-26 | Hitachi Ltd | ハッシュ値生成方法および装置 |
US6587563B1 (en) * | 1997-02-15 | 2003-07-01 | Apple Computer, Inc. | Cryptographic system using chaotic dynamics |
US6282290B1 (en) * | 1997-03-28 | 2001-08-28 | Mykotronx, Inc. | High speed modular exponentiator |
CA2257008C (en) * | 1998-12-24 | 2007-12-11 | Certicom Corp. | A method for accelerating cryptographic operations on elliptic curves |
US20020057796A1 (en) * | 1998-12-24 | 2002-05-16 | Lambert Robert J. | Method for accelerating cryptographic operations on elliptic curves |
US7599491B2 (en) * | 1999-01-11 | 2009-10-06 | Certicom Corp. | Method for strengthening the implementation of ECDSA against power analysis |
FR2789535B1 (fr) * | 1999-02-04 | 2001-09-28 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique |
US6778666B1 (en) * | 1999-03-15 | 2004-08-17 | Lg Electronics Inc. | Cryptographic method using construction of elliptic curve cryptosystem |
JP4671571B2 (ja) * | 1999-09-29 | 2011-04-20 | 株式会社日立製作所 | 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ |
JP3821631B2 (ja) * | 2000-05-30 | 2006-09-13 | 株式会社日立製作所 | 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体 |
JP2003131568A (ja) | 2001-10-26 | 2003-05-09 | Hitachi Ltd | 楕円曲線署名検証方法及び装置並びに記憶媒体 |
CA2369545C (en) * | 2001-12-31 | 2013-01-08 | Certicom Corp. | Method and apparatus for elliptic curve scalar multiplication |
CA2369537C (en) * | 2001-12-31 | 2013-07-23 | Certicom Corp. | Method and apparatus for performing finite field calculations |
US7418099B2 (en) * | 2002-05-03 | 2008-08-26 | Certicom Corp. | Method and apparatus for performing elliptic curve arithmetic |
DE20217616U1 (de) * | 2002-11-13 | 2003-02-20 | Technische Universität Darmstadt, 64285 Darmstadt | Kryptographievorrichtung mit einer gegen Seitenkanal-Angriffe resistenten Implementierung der Punktmultiplikation auf elliptischen Kurven |
KR101194837B1 (ko) * | 2005-07-12 | 2012-10-25 | 삼성전자주식회사 | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 |
-
2005
- 2005-07-12 KR KR1020050062907A patent/KR101194837B1/ko active IP Right Grant
-
2006
- 2006-07-12 GB GB0613868A patent/GB2428358B8/en active Active
- 2006-07-12 DE DE102006033386A patent/DE102006033386B4/de active Active
- 2006-07-12 US US11/484,852 patent/US7903811B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003233307A (ja) | 2001-12-04 | 2003-08-22 | Fujitsu Ltd | 秘密鍵を用いた耐タンパ暗号処理 |
JP2004280103A (ja) | 2003-03-14 | 2004-10-07 | Samsung Electronics Co Ltd | モンゴメリー類型のモジュラー乗算装置及び方法 |
Non-Patent Citations (1)
Title |
---|
"The Width-w NAF Method Provides Small Memory and Fast Elliptic Scalar Multiplications Secure against Side Channel Attacks," Topics in Cryptology - CT-RSA 2003 |
Also Published As
Publication number | Publication date |
---|---|
GB2428358A (en) | 2007-01-24 |
GB0613868D0 (en) | 2006-08-23 |
DE102006033386A1 (de) | 2007-03-29 |
DE102006033386B4 (de) | 2013-04-11 |
GB2428358B8 (en) | 2008-06-05 |
US20080044010A1 (en) | 2008-02-21 |
KR20070008012A (ko) | 2007-01-17 |
US7903811B2 (en) | 2011-03-08 |
GB2428358B (en) | 2008-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101194837B1 (ko) | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 | |
US7853013B2 (en) | Cryptographic method and system for encrypting input data | |
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
Fan et al. | Attacking OpenSSL implementation of ECDSA with a few signatures | |
Baan et al. | Round5: Compact and fast post-quantum public-key encryption | |
JP4668931B2 (ja) | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 | |
US7908641B2 (en) | Modular exponentiation with randomized exponent | |
US20100020964A1 (en) | Key generation method using quadratic-hyperbolic curve group | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件***及方法 | |
US8265267B2 (en) | Information security device | |
JP5648177B2 (ja) | サイドチャネル攻撃に対する素数生成の保護 | |
JP5365624B2 (ja) | 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 | |
US20090136025A1 (en) | Method for scalarly multiplying points on an elliptic curve | |
JP2007187958A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
KR100652377B1 (ko) | 모듈라 지수승 알고리즘, 기록매체 및 시스템 | |
JP2002229445A (ja) | べき乗剰余演算器 | |
US9419789B2 (en) | Method and apparatus for scalar multiplication secure against differential power attacks | |
Dubeuf et al. | ECDSA passive attacks, leakage sources, and common design mistakes | |
JP2007041461A (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
Ming et al. | Revealing the weakness of addition chain based masked SBox implementations | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
Muller et al. | High-order attacks against the exponent splitting protection | |
JP2003241659A (ja) | 情報処理方法 | |
KR20180121248A (ko) | 부채널 공격에 안전한 연산 장치 및 방법 | |
Yen et al. | Improvement on Ha-Moon randomized exponentiation algorithm |
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: 20151001 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160930 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180927 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190930 Year of fee payment: 8 |