KR20110099185A - 수평 사이드 채널 분석에 대항하여 보호된 집적 회로 - Google Patents

수평 사이드 채널 분석에 대항하여 보호된 집적 회로 Download PDF

Info

Publication number
KR20110099185A
KR20110099185A KR1020110018646A KR20110018646A KR20110099185A KR 20110099185 A KR20110099185 A KR 20110099185A KR 1020110018646 A KR1020110018646 A KR 1020110018646A KR 20110018646 A KR20110018646 A KR 20110018646A KR 20110099185 A KR20110099185 A KR 20110099185A
Authority
KR
South Korea
Prior art keywords
multiplication
component
random
integrated circuit
function
Prior art date
Application number
KR1020110018646A
Other languages
English (en)
Inventor
브누와 펙스
조르쥬 갸늬로
밀렌느 루쎌레
벵쌍 베르뇌일
Original Assignee
인사이드 씨큐어
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from FR1000833A external-priority patent/FR2956932B1/fr
Priority claimed from FR1000834A external-priority patent/FR2956933A1/fr
Priority claimed from US12/750,953 external-priority patent/US8572406B2/en
Priority claimed from US12/750,846 external-priority patent/US8457919B2/en
Application filed by 인사이드 씨큐어 filed Critical 인사이드 씨큐어
Publication of KR20110099185A publication Critical patent/KR20110099185A/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/302Contactless testing
    • G01R31/303Contactless testing of integrated circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/722Modular multiplication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
    • 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/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7252Randomisation 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
    • 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/723Modular exponentiation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/26Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)
  • Error Detection And Correction (AREA)

Abstract

워드(x)의 성분(xi)과 워드(y)의 성분(yj)의 복수회의 기본 곱셈 단계(i 및 j는 반복 변수(iteration variable))에서, 적어도 2개의 바이너리 워드들(binary words)(x 및 y)의 곱셈을 실행하도록 형성된 곱셈 함수를 포함하는 집적 회로가 기술된다. 상기 집적 회로의 곱셈 함수는 또한, 랜덤 또는 의사 랜덤(pseudo-random) 방식으로, 성분(xi)과 성분(yj)의 기본 곱셈 단계가 실행되는 순서를 변경함으로써, 바이너리 워드들(binary words)(x 및 y)의 두 개의 연속된 곱셈을 실행하도록 형성된다.

Description

수평 사이드 채널 분석에 대항하여 보호된 집적 회로{INTEGRATED CIRCUIT PROTECTED AGAINST HORIZONTAL SIDE CHANNEL ANALYSIS}
본 발명의 실시 형태는 2개의 바이너리 워드들(binary words)(x 및 y)의 곱셈 연산을, 워드(x)의 성분(xi)과 워드(y)의 성분(yj)의 기본 곱셈의 복수회 단계들로 실행하도록 구성된 곱셈 함수를 포함하는 집적 회로에 관한 것이다.
본 발명의 실시 형태는, 상세하게는 외부 데이터 처리 함수를 포함하며, 이 함수의 실행은 적어도 바이너리 워드들의 제 1 곱셈 단계 또는 바이너리 워드들의 제 2 곱셈 단계로의 조건부 분기(conditional branching)를 포함하는, 집적 회로에 관한 것이다.
본 발명의 실시 형태는 상세하게는 이러한 집적 회로를 테스트하는 방법 및 시스템에 관한 것이다.
본 발명의 실시 형태는 또한 사이드 채널 분석에 대항하는 전술된 타입의 집적 회로를 보호하는 방법 및 본 발명의 실시 형태에 따른 테스트 방법을 포함하는 자격인정 또는 인증 방법(qulification or certification process)을 이러한 집적 회로가 통과할 수 있게 하는 대응책(countermeasure)에 관한 것이다.
현재, 점점 더 개선되는 보안 프로세서는 USB 키(플래쉬 드라이브), 디코더 및 게임 콘솔 그리고 일반적으로 임의의 트러스티드 플랫폼 모듈(TPM)과 같은 칩 카드 또는 다른 내장된 시스템에서 볼 수 있다. 집적 회로의 형태인 이들 프로세서는 일반적으로 8, 16 또는 그 이상의 비트의 복소 명령 세트 컴퓨터(CISC) 8-비트 코어 또는 감소된 명령 세트 컴퓨터(RISC) 코어를 가지며, 요즈음에는 32비트 프로세서가 가장 널리 분배되어 있다. 일부 집적 회로는 또한 일부 암호화 계산에 전용화된 코프로세서(coprocessor)를 포함하며, 특히, Rivest, Shamir 및 Adleman (RSA), Digital Signature Algorithm (DSA), Elliptic Curve Digital Signature Algorithm (ECDSA) 등과 같은 비대칭 알고리즘을 위한 산술 가속기(Arithmetic Accelerator)를 포함한다.
도 1은 일례로서 휴대형 지원 핸드헬드 디바이스(HD) 예를 들어, 플라스틱 카드 또는 임의의 다른 지지부 상에 배치된 보안 집적 회로(CIC1)를 도시한다. 이 집적 회로는 마이크로프로세서(MPC), 입력/출력 회로(IOC) 또는 인터페이스 통신 회로, 데이터 및 어드레스 버스에 의해 마이크로프로세서에 연결된 메모리(M1, M2, M3) 및 선택적으로 암호 계산 또는 산술 가속기를 위한 코프로세서(CP1) 및 랜덤 넘버 생성기(RGEN)를 포함한다. 메모리(M1)는 휘발성 애플리케이션 데이터를 포함하는 랜덤 액세스 메모리(RAM) 타입의 메모리이다. 메모리(M2)는 비휘발성 메모리, 예를 들어, 애플리케이션 프로그램을 포함하는 EEPROM 또는 플래쉬 메모리이다. 메모리(M3)는 마이크로프로세서의 운영 시스템을 포함하는 판독 전용 메모리(ROM)이다.
인터페이스 통신 회로(IOC)는, 예를 들어 ISO/IEC 7816 표준에 따른 접촉식 타입, 예를 들어 ISO/IEC 14443A/B 또는 ISO/IEC 13693 표준에 따라 유도성 결합을 하는 비접촉식 타입, 전기적 결합(UHF 인터페이스 회로)에 의한 비접촉식 기능, 또는 접촉식 및 비접촉식 타입{"콤비(combi)"라고 불리우는 집적 회로}일 수 있다. 도 1의 예로 도시된 인터페이스 회로(IOC)는 자기장(FLD)을 수신하기 위해 안테나 코일(AC1)을 구비하는 유도성 결합 비접촉식 인터페이스 회로이다. 자기장(FLD)은 안테나 코일(AC2)을 구비하는 카드 판독기(RD)에 의해 방출된다. 회로(IOC)는 판독기(RD)에 의해 방출되는 데이터(DTr)를 수신하고 디코딩하는 장치와, 마이크로프로세서(MPC)에 의해 공급되는 데이터(DTx)를 코딩하고 송출하는 장치를 포함한다. 이 회로는 또한 자기장(FLD)으로부터 집적 회로의 공급 전원(Vcc)과 클록 신호(CK)를 추출하는 장치를 더 포함할 수 있다.
일부 실시 형태에서, 집적 회로(CIC1)는 비밀 키(d)와 암호화 모듈(n), 예를 들어, 암호화 RSA 기능을 사용하여 모듈러 지수함수(modular exponentiation)에 기초하여 암호화 함수에 의하여 이 집적 회로에 송신되는 메시지(m)의 암호, 복호 또는 시그너처 연산을 실행하도록 구성될 수 있다.
모듈러 지수함수에 관한 개요
모듈러 지수함수는 이하 수학적 표현, 즉
m d modulo (n)
을 가지며,
m은 입력 데이터이며, d는 멱지수(exponent)이고, n은 제수(divisor)이다. 모듈러 지수함수는 그리하여 md 만큼 제곱한 것을 n으로 나눈 나머지를 계산하는 것이다.
이러한 함수는 RSA 알고리즘, DSA 알고리즘, ECDH(Elliptic Curve Diffie Hellman), ECDSA, ElGamal 등과 같은 여러 암호화 알고리즘에 의해 사용된다. 데이터(m)는 암호화할 메시지이며, 멱지수(d)는 비밀 키이다.
그러한 함수는 이하 알고리즘(Barrett 방법에 따른 모듈러 지수함수)을 사용하여 구현될 수 있다:
Exponentiation algorithm
Input:
"m" and "n" are integers such that m < n
"d" is an exponent of v bits such as d = (d v-1 d v-2 ... d 0 ) 2
Output : a = m d modulo n
Step 1 : a = 1
Step 2 : Pre-calculations of the Barrett reduction
Step 3 : for s from 1 to v do :
(Step 3A) a = BRED(LIM(a,a),n)
(Step 3B) if d v-s = 1
then a = BRED(LIM(a,m),n)
Step 4 : Return result a
여기서, 메시지(m)와 모듈(n)은 정수(예를 들어, 1024비트, 2048비트, 또는 그 이상)이며, d는 베이스 2로 표현된 v 비트(d v-1 , d v-2 ,... d0)의 멱지수이다. "LIM"은 큰 정수의 곱셈 함수이며("Long Integer Multiplication"), "BREAD"는 LIM 곱셈의 결과에 적용되는 Barrett 방법("Barrett REDuction")에 따른 감소 함수이다.
도 1에 도시된 것과 같은 집적 회로에서, 그러한 모듈러 지수함수 알고리즘은 마이크로프로세서(MP)에 의해 또는 코프로세서(CP1)에 의해 실행될 수 있다. 대안적으로, 알고리즘의 일부 단계는 마이크로프로세서에 의해 실행될 수 있고, 다른 단계는 이것이 단지 산술 가속도라면 코프로세서에 의해 실행될 수 있다. 예를 들어, 마이크로프로세서는 단계 3A와 단계 3B의 LIM 곱셈을 코프로세서에 위임(confide)하거나 또는 전체 계산이 경우에 따라 코프로세서에 위임될 수 있다.
나아가, aa의 LIM 곱셈(단계 3A) 또는 am의 LIM 곱셈(단계 3B)은 일반적으로, 바이너리 워드들(x 및 y)의 곱셈 함수에 의하여 집적 회로에 의해 실행된다. 이 곱셈은 워드(x)의 성분(xi)(a i )과 워드(y)의 성분(yj)(a j 또는 m j ){i 및 j는 반복 변수(iteration variable)이다}의 기본 곱셈을 복수회 수행하는 단계를 포함하여 중간 결과를 얻고 이를 연관시켜 곱셈의 일반적인 결과를 형성한다.
사이드 채널 분석의 개요
상업화되는 보안 집적 회로에 의해 제공되는 보안 레벨을 검증하기 위하여, 자격인정 또는 인증 테스트가 산업적 레벨에서 수행된다. 구체적으로, 테스트는 집적 회로의 비밀 데이터를 발견하는 것을 목적으로 하는 사이드 채널 분석에 대항하는 집적 회로의 로버스트니스(robustness)를 평가하기 위해 수행된다.
지수함수 알고리즘은 그러므로 그러한 제어를 받는다. 보다 구체적으로, 모듈러 지수함수 알고리즘의 사이드 채널 분석은 이 단계의 랭크(rank)(s)의 각 반복에서 알고리즘의 단계 3의 실행 동안 집적 회로의 "거동(behavior)"을 관찰함으로써 멱지수의 값을 비트별로(bit-by-bit)로 추론하는 것이다. 이러한 관찰은 고려되는 단계 3이 단계 3A만을 포함하거나 또는 단계 3A 이후에 단계 3B를 포함하는지를 결정하는 것을 목적으로 한다.
첫 번째 경우에, 멱지수의 비트(d v-s )가 0이라고 추론될 수 있다. 두 번째 경우에, 비트(d v-s )는 1이라고 추론될 수 있다. s=1 내지 s=v 범위의 각 반복에서 단계별로 진행함으로써, 1 내지 v-1 까지의 s에 대해 멱지수의 모든 비트(d v-s )들이 추론될 수 있다. 예를 들어, 지수함수 알고리즘의 첫 번째 반복 동안, 연산 결과, 즉
LIM(a,a), LIM(a,m)
는 멱지수의 제 1 비트가 1인 것을 나타내고, 연산 결과, 즉
LIM(a,a), LIM (a,a)
는 멱지수의 제 1 비트가 0이라는 것을 발견하게 한다.
그 다음 멱지수 비트를 발견하기 위해, 다음 연산의 특성이 결정되어야 한다. 예를 들어, 이들 연산은,
LIM(a,a) LIM(a,m) LIM(a,a) LIM(a,m)
또는
LIM(a,a) LIM(a,a) LIM(a,m)
2개의 마지막 연산{LIM(a,a) LIM(a,m)}은 멱지수의 제 2 비트가 1이라는 것을 나타낸다. 역으로, 다음 연산 후에는,
LIM(a,a) LIM(a,m) LIM(a,a) LIM(a,a)
LIM(a,a) LIM(a,m) LIM(a,a) LIM(a,a)
제 3 연산{LIM(a,a)}은 멱지수의 제 2 비트에 이어서 LIM(a,a)이 따라오고 LIM(a,m)이 따라오는 것은 아니기 때문에 멱지수의 제 2 비트가 0이라는 것을 나타낸다.
따라서, 멱지수의 비트를 결정하기 위해, 이들 비트의 함수로서 집적 회로에 의해 수행되는 조건부 분기 단계에 대한 임의의 불확실성을 해소하는 것이 필요하다. 집적 회로의 전류 소비를 관찰하는 것은 일반적으로 이들 불확실성을 일소하게 해준다.
전류 소비의 관찰에 기초한 사이드 채널 분석의 개요
전자 부품은 일반적으로 실행되는 연산에 따라 상이하게 스위칭되는 수 천개의 논리 게이트를 포함한다. 게이트의 스위칭은 매우 짧은 기간, 예를 들어, 수 나노초의 측정가능한 전류 소비의 변동을 생성한다. 특히, CMOS 기술에 의해 얻어진 집적 회로는 그 제어 게이트 단자 상에 매우 높은 입력 임피던스를 가지는 풀업 PMOS 트랜지스터와 풀다운 NMOS 트랜지스터로 구성된 논리 게이트를 포함한다. 이들 트랜지스터는 논리 노드의 1 또는 0으로 스위칭하는 것에 대응하는 스위칭 동안을 제외하고는, 드레인 단자와 소스 단자 사이에 전류를 소비하지 않는다. 따라서, 전류 소비는 마이크로프로세서에 의해 처리되는 데이터 및 여러 주변 장치, 즉 메모리, 데이터 또는 어드레스 버스에서 순환하는 데이터, 암호화 가속기 등에 따라 좌우된다.
구체적으로, 큰 정수(LIM)의 곱셈 연산은 특징적이고 정상 논리 연산과는 다른 전류 소비 시그너처(signature)를 가지고 있다. 나아가, LIM(a,a)은 제곱(a 2)을 계산하는 것인 반면, LIM(a,m)은 am의 곱을 계산하는 것이어서 이들은 2개의 상이한 전류 소비 시그너처를 초래할 수 있다는 점에서 LIM(a,a)은 LIM(a,m)과는 다른 것이다.
전류 소비의 관찰에 기초한 종래 사이드 채널 테스트 방법은 단일 전력 분석법(SPA : Single Power Analysis), 차분 전력 분석법(DPA : Differential Power Analysis), 상관 전력 분석(CPA : Correlation Power Analysis) 또는 빅 맥 분석법(BMA : Big Mac Analysis)을 사용한다.
SPA에 기초한 테스트 방법
SPA는 P. C. Kocher가 저술한 "디피-헬만(Diffie-Hellman), RSA, DSS 및 다른 시스템의 구현에의 타이밍 공격"(Advances in Cryptology - CRYPTO '96, volume 1109 of Lecture Notes in Computer Science, pages 104-113., Springer 1996)에 기재되어 있다. SPA 는 단일 전류 소비 곡선의 획득을 통상 요구한다. 이 SPA는 전류 곡선이 예상되는 연산과 처리되는 데이터에 따라 변하기 때문에 암호화 계산에 대응하는 소비 곡선의 일부를 관찰함으로써 집적 회로의 활동에 관한 정보를 얻는 것을 목적으로 한다.
먼저, SPS는 집적 회로에 의해 구현되는 알고리즘과 수행되는 계산의 식별을 가능하게 한다. 테스트 시스템은 전류 소비를 측정함으로써 집적 회로의 일반적인 전류 소비 곡선을 캡쳐(capture)한다. 모듈러 지수함수를 실행하는 집적 회로의 경우에, 알고리즘의 랭크(s )의 각 반복에서 LIM(a,a) 및 LIM(a,m)의 실행에 대응하는 소비 곡선은 도 2에 도시된 바와 같이 일반적인 전류 소비 곡선 내에서 구별될 수 있다. 이 소비 곡선에서, 곡선(C0, C1, C3,.. Cs'...)들은 구별될 수 있다.
각 소비 곡선(Cs' )은 결정된 샘플링 주파수로 측정된 소비 포인트(point)들로 구성된다. 각 소비 곡선은 지수함수 알고리즘의 단계 3의 "s 번째"" 반복에 대응한다. 각 소비 곡선(Cs' )의 랭크(s')와 지수함수 알고리즘의 단계 3이 이미 실행된 횟수("s"){해당 곡선(Cs')에 대응하는 실행을 포함하여} 사이의 관계는,
만약 곡선(Cs')이 단계 3A의 실행에 대응한다면, 다음 식, 즉
s' = s + H(dv-1, dv-2.... dv-s-1)
으로 주어지고, 또는
만약 곡선(Cs')이 단계 3B의 실행에 대응한다면, 다음 식, 즉
s' = s + H(dv-1, dv-2.... dv-s-1) + 1
으로 주어진다.
그러므로, s' and s 사이의 관계는 지수함수 계산의 이전의 단계들 동안에 이미 사용된 지수(d)의 부분인 해밍 가중치(Hamming weight) H(d v-1 , dv-2.... d v-s-1 )의 함수이다. 이 해밍 가중치는 고려되는 멱지수 부분이 1인 비트의 수를 나타내므로, 멱지수의 이미 사용된 비트(d v-1 , dv-2.... d v-s-1 )가 모두 제로(0)라면, s' 는 예를 들어 s 또는 s+1 과 같다. 다른 예로서, 비트(d v-1 , dv-2.... d v-s-1 )가 모두 일(1)이라면, s' 2s 또는 2s+1 과 같다.
"이상적인" SPA에 기초한 테스트 방법은 각 곡선(Cs')이 이들 곡선 형태를 단지 관찰하는 것만에 의해서 LIM (a,a)의 계산에 대한 것인지 또는 LIM (a,m)의 계산에 대한 것인지 여부를 결정하는 것을 가능하게 해야 한다. 이것은 멱지수 비트 값의 전술된 추론 방법에 따른 추론을 가능하게 할 수 있다. 그러나, 정보의 누설("누출")을 방지하기 위해, 최신 세대의 보안 집적 회로는 그 전류 소비를 흐리게 하는 대응책을 구비하고 있다.
따라서, SPA에 기초한 테스트 방법은 일반적으로 집적 회로에 의해 구현되는 알고리즘과 수행되는 계산의 식별을 가능하게 하며, 모듈러 지수함수 계산에 대한 곡선 부분을 집적 회로의 일반적인 소비 곡선 상에 표시(marking)하는 것을 가능하게 한다. 그러나, 이들은 집적 회로에 의해 실행되는 정확한 연산에 관한 가설(hypotheses)의 검증을 허용하지는 않는다.
DPA 또는 CPA와 같은 통계적 분석 기법에 기초한 방법은 이에 따라 멱지수가 처리되는 연산의 특성을 식별하기 위해 개발되었다.
DPA에 기초한 테스트 방법
P. C. Kocher와, J. Jaffe, 및 B. Jun.이 저술한 "미분 전력 분석"(Differential Power Analysis)(Advances in Cryptology - CRYPTO '99, volume 1666 of Lecture Notes in Computer Science, pages 388-397., Springer, 1999.)에 개시되고 그 이후 매우 면밀하게 연구된 DPA는 암호화 알고리즘의 비밀 키가 수많은 소비 곡선의 획득에 의해 발견될 수 있게 한다. 지금까지 가장 많이 조사된 이러한 기술의 응용은 DES 알고리즘에 관한 것이지만, 이 기술은 또한 다른 암호화, 복호화 또는 시그너처 알고리즘에도 그리고 특히 모듈러 지수함수에도 응용될 수 있다.
DPA는 검색된 정보를 찾기 위해 전류 소비 곡선을 통계적으로 분류하는 것으로 이루어진다. 이것은 비트가 레지스터 또는 버스에서 0에서 1로 스위칭될 때 CMOS 기술의 집적 회로의 소비량이 변하고, 비트가 0에 유지되거나, 1에 유지되거나, 또는 1에서 0으로 (MOS 트랜지스터의 기생 용량 방전) 스위칭될 때에는 변하지 않는다는 전제에 기초하고 있다. 대안적으로, 비트가 0에서 1로 스위칭되거나 1에서 0으로 스위칭될 때 CMOS 기술의 집적 회로의 소비량이 변하고, 비트가 0에 유지되거나 1에 유지되는 경우에는 변하지 않는다고 볼 수 있다. 이 두 번째 가설은 응용 가능하게 하기 위하여 집적 회로의 구조에 대한 지식을 요구하지 않는 소비 모델을 개발하는데 종래의 함수인 "해밍 거리(Hamming distance)" 또는 "해밍 가중치"를 사용할 수 있게 해준다.
DPA는 수많은 소비 곡선에 기초하여 통계적 처리를 통해 이러한 소비 차를 증폭하는 것을 목적으로 하여 측정된 소비 곡선과 정형화된 가설 사이의 상관관계를 유도하는 것을 목적으로 한다.
이들 소비 곡선의 획득 단계 동안, 테스트 시스템은, 집적 회로가 (집적 회로로 적절한 암호 명령의 송신을 요구하거나 내재하는) 암호화 함수에 의하여 변환된 메시지를 계산하는 방식으로 집적 회로에 M개의 랜덤한 메시지(m 0, m 1, m 2,..., m r ... m M-1 )를 적용한다.
도 3에 도시된 바와 같이, M개의 전류 소비 곡선{C(m 0), C(m 1), C(m 2)..., C(m r ),..., C(m M-1 )}이 이렇게 수집된다. 이들 소비 곡선 각각은 모듈러 지수함수에 의해 메시지를 변환하기 위해 집적 회로에 의해 실행된 연산으로부터 초래된 것이지만, 또한 집적 회로가 동시에 실행할 수 있는 다른 연산으로부터 초래될 수도 있다.
SPA로 인해, 소비 곡선{Cs'(m 0), Cs'(m 1), Cs'(m 2)..., Cs'(m r ),..., Cs'(m M-1 )}은 이들 소비 곡선 내에서 구별된다. 이들 소비 곡선은 모듈러 지수함수 알고리즘의 실행 단계들에 대응한다. 상술된 바와 같이 랭크(s')의 각 곡선은 M개의 메시지 중 하나에 대해 알고리즘의 단계 3의 "s번째" 실행에 대응하며, 값을 결정하길 원하는 멱지수(d )의 한 비트를 수반한다.
처리 단계 동안, 테스트 시스템은 해당 계산 단계에서 집적 회로의 이론적인 전류 소비 {HW(dv-s, m r )}를 예측한다. 이 소비 예측은 멱지수의 검색된 비트(ds )의 2개의 가능한 값들 중 적어도 하나에 대해 행해진다. 테스트 시스템은 예를 들어 함수 {LIM(a,m)}의 실행이 의미하는 이론적인 소비를 예측하고 획득 동안 사용되는 메시지(m)의 모든 값(m r )에 대해 이것을 사용하도록 구성된다. 이 이론적인 소비는 예를 들어 해당 가설에 대응하는 연산의 실행을 따라 예상되는 결과의 해밍 가중치를 계산함으로써 예측된다.
전류 소비 예측에 기초하여, 테스트 시스템은 소비 곡선을 2개의 그룹(G0 and G1)으로 분류하며,
G0 = {곡선( Cs'(m r))은 해당 단계(s)에서 집적 회로의 낮은 소비에 대응한다}
G1 = {곡선( Cs'(m r))은 해당 단계(s)에서 집적 회로의 높은 소비에 대응한다}.
테스트 시스템은 이후 최종 곡선을 얻기 위해 그룹(G0, G1)에 있는 곡선들의 잇점들 사이의 차이 또는 통계적 차이 곡선을 계산한다.
소비 피크가 전류 소비 예측을 위해 선택된 위치에서 통계적 차이 곡선에 나타나는 경우, 테스트 시스템은 비트(d v-s ) 값에 관한 가설이 옳다고 추론한다. 모듈러 지수함수 알고리즘에 의해 실행되는 연산은 이에 따라 여기서는 LIM(a,m)이다. 만약 소비 피크가 나타나지 않는다면, 평균 차로는 현저한 소비 차를 나타내지 않으며(잡음과 유사한 신호가 얻어진다), 테스트 시스템은 보완적인 가설이 검증되는(dv-s=0, 실행되는 연산은 LIM(a,a)이다) 것을 고려하거나 또는 이 가설을 검증하기 위해 유사한 방식으로 진행할 수 있다.
DPA에 기초한 테스트 방법은 매우 많은 개수의 전류 소비 곡선의 캡쳐를 구현하고 요구하여 복잡하다는 단점을 가지고 있다. 나아가, 하드웨어 대응책이 존재하는데 (클록 지터의 제공, 배경 잡음의 발생 등과 같은), 이는 종종 획득을 위해 사용되는 전류 소비 곡선에 예비 신호 처리 단계(동기화, 잡음 감소 등)를 제공할 것을 요구한다. 신뢰할만한 결과를 얻기 위해 획득해야 할 전류 소비 곡선의 수는 또한 연구되는 집적 회로의 아키텍처에 따라 좌우되며 수 천에서부터 수 십만 개의 곡선 중 어딘가에 있을 수 있다.
CPA에 기초한 테스트 방법
CPA는 E. Brier와, C. Clavier, 및 F. Olivier가 저술한 "누설 모델을 갖는 상관 전력 분석"(Correlation Power Analysis with a Leakage Model)(Cryptographic Hardware and Embedded Systems - CHES 2004, volume 3156 of Lecture Notes in Computer Science, pages 16-29., Springer, 2004)에 개시되어 있다. 저자들은 1에서 0으로의 비트 스위칭이 0에서 1로의 비트 스위칭과 동일한 양의 전류를 소비한다고 가정하는 선형 전류 소비 모델을 제안한다. 저자들은 또한 한편으로는 캡쳐된 소비 곡선들을 형성하는 측정된 소비 포인트들과, 다른 한편으로는 집적 회로가 실행하는 연산에 관한 가설로부터 그리고 선형 소비 모델로부터 계산된 예측된 소비 값 사이의 상관 계수를 계산할 것을 더 제안한다.
도 4 및 도 5는 모듈러 지수함수 알고리즘에 적용되는 CPA의 일례를 도시한다. 이 예에서, 테스트 시스템은 모듈러 지수함수 알고리즘의 단계 3의 s번째 반복에서 LIM(a,a) 후에 실행되는 연산이 다시 LIM(a,a) {즉, 이어지는 반복(s+1)의 단계 3A}이거나 또는 LIM(a,m){즉, 랭크(s)의 반복의 단계 3B}인지를 알고자 한다.
도 4에 도시된 바와 같이 테스트 시스템은 알고리즘의 동일한 반복에 관한 M개의 전류 소비 곡선{Cs'(m r ) (Cs'(m 0), Cs'(m 1),..., Cs'(m r ),..., Cs'(mM))}을 획득하며, 각각은 집적 회로로 송신된 메시지{m r (m 0, m 1...m r ...m M-1 )}에 대응한다. 각 곡선{Cs'(m r )}은 포인트의 제 1 서브세트를 형성하는 E개의 전류 소비 포인트(W0, W1, W2,..., Wi,...,WE-1)를 포함한다. 동일한 곡선{Cs'(m r )}의 포인트는 전류 소비 예측과 연관된다.
이를 위해, 전류 소비(HW)는 예를 들어 다음과 같이 모델링된다:
W = k1*H(D
Figure pat00001
R) + k2
여기서 "R" 은 집적 회로의 계산 레지스터의 참조 상태이며, "D"는 해당 연산의 종료시 레지스터의 값이며, k1은 비례 계수이며, k2 는 H(D
Figure pat00002
R)로 연결되지 않는 소비 전류 및/또는 잡음을 나타낸다. 함수 "H"는 레지스터의 값(R 및 D) 사이의 해밍 거리, 즉 D와 R 사이에 서로 다른 비트의 개수이다("
Figure pat00003
"는 배타적 OR 함수를 나타낸다).
간략화된 접근에 따라, 레지스터의 참조 값(R)은 예측되는 전류 소비 포인트의 계산이 해당 연산의 결과의 해밍 가중치(1의 비트 수)를 계산하는 것으로 내려오도록 0으로 선택된다. 이 결과는 예를 들어 관련된 가설에 대해서는 "a*m"이다. 그 결과, 예측된 소비 포인트(HW)는 H(a*m)으로 된다. 실행되는 연산, 예를 들어 LIM(a,m)에 대한 가설은 그리하여 이 선형 소비 모델을 적용함으로써 계산되는 전류 소비 예측(HW)으로 변환된다.
도 4에 도시된 바와 같이, 테스트 시스템은 각 곡선(Cs')을 형성하는 상이한 전류 소비 포인트(Wk )를 수직 횡방향 서브세트(vertical transversal subsets){VEk (VE0, VE1, VE2,..., VEk,...VEE-1)}으로 재그룹화하며, 각 서브세트는 각 곡선(Cs')의 동일한 랭크(k)의 포인트(Wk)를 포함한다. 각 수직 횡방향 서브세트(VEk)는 수직 대시 라인으로 도시되며 분석을 위해 사용된 곡선의 수(M)와 같은 포인트의 수를 포함한다.
예측되는 전류 소비 포인트(HWk)는 수직 횡방향 서브세트(VEk)의 각 포인트(Wk)와 연관된다. 이 예측되는 포인트는 상술된 방식으로 계산해서 포인트가 속하는 곡선{Cs'(m r )}과 연관된 소비의 예측에 대응한다.
각 수직 횡방향 서브세트(VEk)에 대해, 테스트 시스템은 고려되는 서브세트의 포인트(Wk)와 이와 연관된 예측된 소비 포인트(HWk) 사이의 선형 수직 상관 계수(VCk)를 계산한다. 이 상관 계수는 예를 들어 서브세트(VEk)의 측정된 소비 포인트(Wk)와 이들 측정된 소비 포인트와 연관된 예측된 소비 포인트(HWk) 사이의 공분산(covariance)을 이들 2개의 포인트 세트의 표준 편차(standard deviations)의 곱으로 나눈 것과 같다. 따라서, 평가된 가설에 대응하는 수직 상관 계수(VCk)는 각 수직 횡방향 서브세트(VEk)와 연관된다.
도 5a, 도 5b에 도시된 바와 같이, 테스트 시스템은 이에 의해 가설을 확인하는 수직 상관 곡선(VCC2)을 형성하거나 가설을 무효화하는 수직 상관 곡선(VCC1)을 형성하는 수직 상관 계수(VC0, VC1,..., VCk,..., VCE-1)의 세트를 획득한다. 곡선(VCC2)은 하나 이상의 눈에 띄는 상관 피크(+1 또는 -1에 가까운 정규화된 공분산 값)를 제공하며, 이에 따라 연산에 관한 가설이 옳다는 것을 나타낸다. 곡선(VCC1)은 상관 피크를 제공하지 않는다. 만약 상관 곡선(VCC2)이 획득되면, 테스트 프로그램은 곡선{Cs'(m 0) 내지 Cs'(m M-1 )}이 획득될 때 집적 회로가 LIM(a,m)를 수행하였다고 추론하고 그리하여 모듈러 지수함수의 멱지수의 비트(ds)가 1이라고 추론한다.
빅 맥(Big Mac)에 기초한 테스트 방법
빅 맥(Big Mac) 분석법은 콜린 D. 왈터(Colin D. Walter.)가 저술한 "빅 맥 공격에 대한 슬라이딩 윈도우의 굴복" (Sliding Windows Succumbs to Big Mac Attack) (Cryptographic Hardware and Embedded Systems - CHES 2001, volume 2162 of Lecture Notes in Computer Science, pages 286-299., Springer, 2001)에 기술되어 있으며; 콜린 D. 왈터의 더 긴 키는 사이드 채널 공격을 용이하게 할 수 있다(Selected Areas in Cryptography, SAC 2003, volume 3006 of Lecture Notes in Computer Science, pages 42-57., Springer, 2003). 이 분석법은 전술된 큰 정수의 곱셈의 원자수(atomicity)에 기초하는데, 다시 말해 2개의 큰 정수의 곱셈 연산의 실행이 곱셈의 대상인 연산수(operand)(x 및 y)의 성분(xi 및 yj)의 기본 곱셈(xi*yj)을 복수회 실행하는 것을 포함한다는 사실에 기초한다.
빅 맥에 기초한 테스트 방법은,
고정된 데이터(xi)와 변하는 지수(j)에 대한 기본 곱셈(xi*yj)에 대응하는 소비 서브 곡선을 결합(combine)하는 단계와,
yj의 특성보다 더 명백한 방식으로 xi의 특성을 나타내는 최종 서브 곡선을 얻기 위해 이들 서브 곡선의 포인트의 평균 값을 계산하는 단계와,
평균 서브 곡선을 갖는 사전(dictionary)을 형성하는 단계와, 이후
이어지는 곱셈 연산에 의해 처리되는 연산수의 값을 추론하기 위해 이어지는 곱셈으로부터 나오는 새로운 서브 곡선을 사전에 의해 식별하는 단계
를 포함한다.
알려진 테스트 방법의 요약
방금 본 바와 같이, DPA 및 CPA에 기초한 테스트 방법은 수많은 전류 소비 곡선의 획득을 요구한다. CPA에 기초한 테스트 방법이 DPA에 기초한 테스트 방법보다 더 효과적이고 일반적으로 DPA 방법에 대한 수 천 내지 수 만개의 곡선과는 대조적으로 백개 내지 수 백개의 소비 곡선만을 필요로 한다 하더라도, CPA에 기초한 테스트 방법을 구현하기 위해 획득해야 할 곡선의 수는 무시할 수 있는 것으로 고려될 수 없다.
추가적으로, DPA 또는 CPA에 기초한 테스트 방법은 랜덤 워드를 사용하여 멱지수(d)를 마스킹(masking)하고 및/또는 메시지(m)를 마스킹하는 것으로 구성된 대응책에 의해 무효화(countered)될 수 있다. 사실, LIM(a,m)으로 연결되는 소비에 관한 가설은 해밍 가중치를 계산하기 위해 메시지(m)에 대한 지식을 요구하는 것으로 볼 수 있다. 랜덤 데이터를 사용하여 메시지를 마스킹하는 것은 더 이상 가중 계수를 계산하기 위해 측정된 소비 값과 예측된 소비 값을 연관시키는 것을 허용하지 않는다.
마지막으로, 빅 맥에 기초한 테스트 방법은 구현하기에 까다롭고 구현에 필요한 모델을 포함하는 사전을 개발하기 위하여 집적 회로의 아키텍처에 대해 많은 지식을 요구한다. 이에 따라 얻어진 결과는 만족스럽지 않은 것으로 고려되고 이에 이 방법은 알려진 실제 응용의 대상이 되기에는 부족하다.
본 발명의 실시 형태는 구체적으로 구현하기에 간단하고 감소된 개수의 전류 소비 곡선 또는 집적 회로의 활동을 나타내는 임의의 다른 물리적 특성의 감소된 개수의 곡선을 요구하는 모듈러 지수함수 계산에 적용가능하지만 이것으로만 제한되는 것은 아닌 사이드 채널 테스트 방법에 관한 것이다.
본 발명의 실시 형태는 또한 워드들(x 및 y)의 성분(xi)과 성분(yj)의 기본 곱셈 단계를 복수회 수행하는 것을 포함하는 2개의 바이너리 워드들(x 및 y)의 곱셈 연산을 실행하는 집적 회로에 적용가능한 사이드 채널 테스트 방법에 관한 것이다.
본 발명의 실시 형태는 또한 사이드 채널 공격에 대한 로버스트니스와 정보 누설에 대한 저항을 검증하기 위해 집적 회로의 산업적 자격인정 또는 인증 방법에 통합될 수 있는 사이드 채널 테스트 방법에 관한 것이다.
본 발명의 실시 형태는 또한 본 발명의 실시 형태에 따른 테스트 방법을 포함하는 자격인정 또는 인증 방법 후에 사용하기에 적합한 것으로 집적 회로를 고려할 수 있게 하는 대응책에 관한 것이다.
보다 구체적으로, 본 발명의 실시 형태는 워드(x)의 성분(xi)과 워드(y)의 성분(yj)의 복수회의 기본 곱셈 단계(i 및 j는 반복 변수(iteration variable))에서, 적어도 2개의 바이너리 워드들(binary words)(x 및 y)의 곱셈을 실행하도록 형성된 곱셈 함수를 포함하는 집적 회로에 관한 것이다. 상기 곱셈 함수는 또한, 랜덤 또는 의사 랜덤(pseudo-random) 방식으로, 성분(xi)과 성분(yj)의 기본 곱셈 단계가 실행되는 순서를 변경함으로써, 바이너리 워드들(binary words)(x 및 y)의 두 개의 연속된 곱셈을 실행하도록 형성된다.
일 실시 형태에서, 상기 곱셈 함수는, 랜덤 또는 의사 랜덤 방식으로, 성분(yj)를 성분(xi)와 곱하는 순서 중 하나를 변경함이 없이 성분(xi)를 성분(yj)와 곱하는 순서를 변경하거나 또는 역으로 변경하도록 형성된다.
일 실시 형태에서, 상기 곱셈 함수는, 랜덤 또는 의사 랜덤 방식으로, 성분(xi)를 성분(yj)와 곱하는 순서 및 성분(yj)를 성분(xi)와 곱하는 순서를 변경하도록 형성된다.
일 실시 형태에서, 상기 곱셈 함수는 랜덤 또는 의사 랜덤 바이너리 수를 생성하거나 수용하는 요소를 포함하고, 적어도 하나의 반복 변수 i 또는 j에 대하여, 상기 랜덤 또는 의사 랜덤 바이너리 수에 의하여 결정되는 순서에 따라 성분(yj)에 의한 성분(xi)의 복수회의 기본 곱셈 단계를 실행하도록 형성된다.
일 실시 형태에서, 상기 곱셈 함수는 또한, 적어도 하나의 랜덤 또는 의사 랜덤 워드에 의하여 적어도 하나의 성분 (xi) 또는 (yj)를 임의 추출(randomize)하도록 형성된다.
일 실시 형태에서, 상기 곱셈 함수는, 반복 변수가 바이너리 워드들의 곱셈의 일정한 순서에 따라 증가되거나 감소되는 제1 연산 모드, 및 랜덤 또는 의사 랜덤 방식으로 하나의 바이너리 워드 곱셈에서 다른 바이너리 워드 곱셈으로 적어도 하나의 반복 변수가 증가되거나 감소되는 제2 연산 모드를 포함한다.
일 실시 형태에서, 상기 곱셈 함수는, 순서 결정 장치(sequencer)(SM2)에 의해 제어되는 하드와이어 회로(hardwired circuit)에 의하여 실행되다.
일 실시 형태에서, 상기 집적 회로는 외부 데이터의 처리 함수를 포함하고, 상기 처리 함수의 실행은, 곱셈 함수에 의한 바이너리 워드들의 적어도 하나의 제 1 곱셈 단계 또는 곱셈 함수에 의한 바이너리 워드들의 제 2 곱셈 단계로 조건부 분기하는 적어도 하나의 단계를 포함하며, 상기 조건부 분기는 집적 회로의 비밀 데이터의 함수이다.
일 실시 형태에서, 상기 데이터 처리 함수는 모듈러 지수 함수이고, 상기 비밀 데이터는 모듈러 지수 함수의 멱지수(exponent)이다.
일 실시 형태에서, 상기 데이터 처리 함수가 모듈러 지수 함수를 포함하는 암호화 함수이고, 상기 비밀 데이터는 암호화 함수의 비밀 키를 형성하는 모듈러 지수 함수의 멱지수이다.
본 발명의 실시 형태는 또한 지지체에 배열되거나 임베디드(embedded)된 상기한 집적 회로를 포함하는 장치에 관한 것이다.
본 발명의 실시 형태는 또한 적어도 2개의 바이너리 워드들(x 및 y)의 곱셈 연산 및 워드(x)의 성분(xi)과 워드(y)의 성분(yj)의 복수회의 기본 곱셈 단계(i 및 j는 반복 변수(iteration variable))를 실행하도록 형성된 집적 회로의 사이드 채널 분석에 대항한 보호 방법에 관한 것이다. 이 방법은 랜덤 또는 의사 랜덤 방식으로, 하나의 바이너리 워드의 곱셈 연산으로부터 다른 바이너리 워드의 곱셈 연산으로, 상기 집적 회로가 성분(xi)과 성분(yj)의 기본 곱셈 단계를 실행하는 순서를 변경하는 단계를 포함한다.
일 실시 형태에서, 상기 방법은 랜덤 또는 의사 랜덤 방식으로, 성분(yj)를 성분(xi)와 곱하는 순서 중 하나를 변경함이 없이 상기 집적 회로가 성분(xi)를 성분(yj)와 곱하는 순서를 변경하거나 또는 역으로 변경하는 단계를 더 포함한다.
일 실시 형태에서, 상기 방법은 랜덤 또는 의사 랜덤 방식으로, 상기 집적 회로가 성분(xi)를 성분(yj)와 곱하는 순서 및 성분(yj)를 성분(xi)와 곱하는 순서를 변경하는 단계를 더 포함한다.
일 실시 형태에서, 상기 방법은 상기 집적 회로 내에 랜덤 또는 의사 랜덤 바이너리 수를 생성하는 단계 및 상기 집적 회로가, 적어도 하나의 반복 변수 i 또는 j에 대하여, 상기 랜덤 또는 의사 랜덤 바이너리 수에 의하여 결정되는 순서에 따라 성분(xi)의 성분(yj)와의 복수회의 기본 곱셈 단계를 실행하도록 하는 단계를 더 포함한다.
일 실시 형태에서, 상기 방법은 적어도 하나의 랜덤 또는 의사 랜덤 워드에 의하여 적어도 하나의 성분 (xi) 또는 (yj)를 임의 추출(randomize)하는 단계를 더 포함한다.
일 실시 형태에서, 상기 방법은 외부 데이터의 처리 함수를 포함하는 집적 회로의 보호에 적용되고, 상기 처리 함수의 실행은, 바이너리 워드들의 적어도 하나의 제 1 곱셈 단계 또는 바이너리 워드들의 적어도 하나의 제 2 곱셈 단계로 조건부 분기하는 적어도 하나의 단계를 포함하며, 상기 조건부 분기는 집적 회로의 비밀 데이터의 함수이다.
전술된 본 발명의 개요 및 본 발명의 이하 상세한 설명은 첨부된 도면과 연계하여 판독할 때 더 잘 이해될 수 있을 것이다. 본 발명을 예시하기 위하여, 도면에는 현재 바람직한 실시 형태가 도시되어 있다. 그러나, 본 발명은 도시된 정확한 배열과 수단으로만 제한되는 것이 아니라는 것을 이해할 수 있을 것이다.
본 발명에 따른 테스트 방법과 이에 대응하는 대응책의 실시 형태는 첨부된 도면과 관련하여 이하에서 비 제한적인 방식으로 설명될 것이다.
도 1은 보안 집적 회로의 종래 아키텍처를 도시하는 도면;
도 2는 모듈러 지수함수의 실행 동안 도 1의 집적 회로의 전류 소비 곡선을 도시하는 도면;
도 3은 종래의 DPA 또는 CPA에 기초한 테스트 방법을 수행하는데 사용되는 전류 소비 곡선을 도시하는 도면;
도 4는 종래의 CPA에 기초한 테스트 방법을 수행하는데 사용되는 다른 상세 전류 소비 곡선을 도시하는 도면;
도 5a 및 도 5b는 종래 CPA에 기초한 테스트 방법에 의해 공급되는 상관 곡선을 도시하는 개략도;
도 6은 종래의 곱셈 알고리즘을 실행하도록 설계된 회로를 도시하는 개략도;
도 7은 본 발명에 따른 테스트 시스템의 일 실시예를 도시하는 개략도;
도 8은 본 발명의 실시예에 따른 방법을 구현하기 위해 도 7의 테스트 시스템에 의해 사용되는 전류 소비 서브 곡선을 포함하는 전류 소비 곡선을 도시하는 도면;
도 9는 본 발명의 일 실시예에 따른 방법 단계를 보여주고 전류 소비 서브 곡선을 보다 상세히 도시하는 도면;
도 10은 도 9의 서브 곡선의 포인트들과 연관된 물리적 특성의 예측된 값의 테이블을 도시하는 도면;
도 11a 및 도 11b는 본 발명에 따른 테스트 방법의 일 실시예에 의해 생성되는 2개의 상관 곡선을 도시하는 개략도;
도 12a, 도 12b 및 도 12c는 본 발명에 따른 테스트 방법의 다른 실시예에 의해 생성되는 2개의 평균 곡선과 상관 곡선을 각각 도시하는 도면;
도 13은 본 발명의 일 실시예에 따른 곱셈 알고리즘을 실행하도록 설계된 곱셈기 회로를 도시하는 개략도;
도 14는 본 발명의 일 실시예에 따른 대응책을 포함하는 보안 집접 회로의 아키텍처를 도시하는 도면이다.
본 발명의 실시예에 따른 테스트 방법의 일반적인 특징
본 발명에 따른 테스트 방법의 실시예는 전술된 지수함수 알고리즘의 단계 3A 및 단계 3B의 실행 동안 집적 회로의 전류 소비의 상세한 조사에 기초하고 있으며, 보다 구체적으로는 이들 단계 3A 및 단계 3B의 각각 동안 LIM 곱셈의 실행 동안 그 전류 소비를 관찰하는 것에 기초하고 있다.
본 발명에 따른 테스트 방법의 실시예는 실제 큰 정수{LIM(a,a) and LIM(a,m)}의 곱셈이 이들 곱셈을 수행하는 유닛(unit)에 의해 허용되는 바이너리 워드들의 사이즈로 인해 단일 단계로 수행되지 않는다는 사실에 기초한다. 곱셈을 실행하는 유닛은 예를 들어 마이크로프로세서, 코프로세서(coprocessor) 또는 산술 가속기(arithmetic accelerator)의 산술적 및 논리적 유닛이다. 계산 유닛의 감소된 사이즈는 다음과 같이 큰 정수(x 및 y)를 더 작은 사이즈의 개의 성분으로 "분할"하는 계산 알고리즘{LIM(x,y)}을 요구한다:
x = (xl-1 xl-2.... x0)b
y = (yl-1 yl-2.... y0)b
여기서 xl-1, xl-2.... x0 및 yl-1, yl-2.... y0는 베이스 "b"에서 연산수(operand)(x 및 y)의 성분들이며, 각 성분은 N개의 비트를 포함하며, 베이스(b)는 2N이며, 예를 들어 N=32비트의 연산수를 허용하는 계산 유닛에 대해서 b=232이다.
연산수를 개의 동일한 부분들로 이렇게 분할하는 것은 곱셈이 통상적인 방법에 따라 행해지는 경우 곱셈이 12개의 기본 곱셈 연산을 포함하게 된다는 것이다. 아래 표 1은 집적 회로의 아키텍처의 대표적 예를 위해 연산수(x 및 y)의 사이즈(G), 그 성분(xi, yj)의 사이즈(N), 연산수를 형성하는 성분(xi, yj)의 개수() 및 LIM 함수의 실행이 포함하는 기본 곱셈(xi*yj)의 개수(l2) 사이의 관계를 제공한다.
연산수(x, y)의 사이즈(G) 성분(xi, yj)의 사이즈(N) 연산수마다 성분(xi, yj)의 개수()(=G/N) x*y를 얻기 위한 기본 곱셈(xi*yj)의 개수( 2)
2048 bits 32 bits 64 4096
2048 bits 64 bits 32 1024
1536 bits 32 bits 48 2304
1536 bits 64 bits 24 576
1024 bits 32 bits 32 1024
1024 bits 64 bits 16 256
따라서, 곱셈 알고리즘(LIM)에 의해 실행되는 각 기본 곱셈의 연산(xi*yj)은 전류 소비 서브 곡선(Ci,j)에 대응하고, 이들 서브 곡선은 함께 지수함수 알고리즘의 단계 3A 또는 단계 3B의 전류 소비 곡선을 형성한다.
본 발명의 실시예에 따른 테스트 방법은 곱셈의 대상인 변수들에 관한 가설을 검증하기 위하여 그리고 이에 따라 이들 변수와 곱셈 연산의 실행을 야기하는 조건부 분기에 관한 가설을 검증하기 위하여 이 서브 곡선에 수평 횡방향으로 통계적 처리를 수행하는 단계(horizontal transversal statistical processing steps)를 포함한다. 이 방법은 집적 회로에 단일 메시지(m)를 송신함으로써 단일 소비 곡선의 획득만을 요구한다.
테스트 방법의 구현 예
이하에 기술되는 테스트 방법의 실시예는 모듈러 지수함수 계산 동안 집적 회로에 의해 사용되는 비밀 멱지수를 결정하는 것을 목적으로 한다. 집적 회로는 예를 들어, 도 1과 연관하여 전술된 종래의 집적 회로(CIC1)이다. 이 모듈러 지수함수 계산은 예를 들어 이미 전술된 다음 알고리즘에 따라 실행된다:
Exponentiation algorithm
Input :
"m" and "n" of integer values such that m < n
"d" an exponent of v bits such that d = (d v-1 d v-2 .... d 0 ) 2
Output : a = m d modulo n
Step 1 : a = 1
Step 2 : Pre-calculations of the Barrett reduction
Step 3 : for s from 1 to v do :
(Step 3A) a = BRED(LIM(a,a),n)
(Step 3B) if d v-s = 1
then a = BRED(LIM(a,m),n)
Step 4 : Return result a
상술된 바와 같이, 멱지수(d)의 비트를 찾는 것은 알고리즘의 단계 3이 단계 3A만을 포함하는지, 또는 이와는 반대로 단계 3A 이후에 단계 3B를 포함하는지를 결정하는 것을 요구한다. 단계 3의 제 1 반복(s=1)에서 시작하여 마지막 반복(s=v)까지, 본 발명의 실시예에 따른 테스트 방법은 LIM 곱셈의 실행에 개재하는 기본 곱셈에 대응하는 전류 소비 서브 곡선에 기초하여 마이크로프로세서 또는 코프로세서에 의해 실행되는 연산이 LIM(a,a) 타입인지 또는 LIM(a,m) 타입인지를 단일 전류 소비 곡선을 통해 결정하는 것을 가능하게 한다.
또한 이하에서는 여전히 본 방법의 구현 예로서, 모듈러 지수함수 알고리즘의 실행시 개재하는 곱셈 연산(LIM)이 스칼라 방법, 다시 말해 큰 정수들을 곱셈하는데 가장 일반적으로 사용되는 방법에 따라 실행되는 것으로 가정될 것이다. 스칼라 방법은 예를 들어 다음 알고리즘에 의하여 구현된다:
Algorithm LIM (LIM multiplication - scholar method)
Inputs :
x = (x l-1 , x l-2 ,... x 0 )b
y = (y l-1 , y l-2 ,... y 0 )b
Output : R = LIM(x,y) = x*y = (R 2l-1 R 2l-2 .... R 0 )b
Step 1 :
For i from 0 to 2l-1 do : R i = 0
Step 2 :
For i from 0 to l-1 do :
c ← 0
for j from 0 to l-1 do :
u|v ← (R i+j + x i *y j ) + c
R i+j ← v and c ← u
R i+l ← v
Step 3 : Return(R)
여기서 "|"는 중간 변수(uv)의 연관(concatenation)을 나타낸다.
따라서, 큰 정수들(x, y)의 성분들(x i , y j )을 수반하는 2 개의 반복 계산 단계들은 N개의 비트의 2개의 중간 결과(R 2l-1 , R 2l-2, ....R 0 )를 얻을 수 있게 한다. 이들은 x와 y의 곱셈의 최종 결과를 형성하도록 출력 레지스터에서 연관된다.
더 나은 아이디어를 얻기 위해, 도 6은 상기 알고리즘에 따라 2개의 연산수(x 및 y)의 곱셈을 수행하도록 제공된 곱셈기 하드웨어(SMT1)의 일례를 도시한다. 곱셈기 아키텍처는 알고리즘의 모델 상에 있으며, 곱셈기(SMT1)는 이에 따라 G개의 비트의 연산수(x 및 y)를 수신하는 입력 버퍼(BX, BY)와; 결과(R)를 공급하는 출력 버퍼(BR)와; 2개의 N-비트 입력과 2N-비트 출력을 갖는 곱셈기(MULT)와; 2N-비트 입력, 2개의 N-비트 입력 및 2N-비트 출력을 갖는 가산기(AD)와; 알고리즘의 중간 변수(u 및 v)를 수신하기 위해 N개의 비트 각각의 2개의 연관된 레지스터(Ru 및 Rv)를 포함하는 2N-비트 출력 레지스터와; 알고리즘의 올림수(carry)(c)를 수신하기 위한 레지스터(Rc)를 포함한다. 시퀀서(sequencer)(SM1), 예를 들어, 상태 머신(state machine)은 제어 신호(t1, t2,..., t9, t10,...tn)를 이들 여러 요소들에 공급하고, 명령 STM{"곱셈 시작(Start Multiplication)"}의 수신시에 알고리즘을 실행하도록 구성된다.
버퍼(BX)는 N개의 비트의 개의 레지스터를 포함하며, 각각의 레지스터는 X의 성분들(xl-1, xl-2,..., x0) 중 하나를 수신한다. 버퍼(BY)는 N개의 비트의 개의 레지스터를 포함하며, 각각의 레지스터는 y의 성분들(yl-1, yl2,...., y0) 중 하나를 수신한다. 출력 버퍼(BR)는 N개의 비트의 2개의 레지스터를 포함하며, 각각의 레지스터는 x와 y의 곱셈 결과의 성분들(R2l-1, R2l-2,...., R0) 중 하나를 수신한다. 시퀀서(SM1)에 의해 제어되는 멀티플렉서(MX1, MX2)는 곱셈기의 하나의 입력에 성분(xi)들 중 하나와, 곱셈기의 다른 입력에 성분(yj)들 중 하나를 인가할 수 있게 하며, 이는 2N개의 비트로 결과(xi*yj)를 공급한다. 곱셈기(MULT)의 2N-비트 출력은 가산기(AD)의 2N-비트 입력에 연결된다. 가산기(AD)의 2N-비트 출력의 N개의 첫 번째 비트는 레지스터(Ru)의 입력에 인가되고, N개의 다른 비트는 레지스터(Rv)의 입력에 인가된다. 레지스터(Rv)의 출력은 시퀀서(SM1)에 의해 제어되는 디멀티플렉서(DMX)의 중개에 의하여 버퍼(BR)의 레지스터(Ri+j)들 중 하나의 입력에 인가된다. 버퍼(BR)의 레지스터(Ri+j)들 중 하나의 출력은 시퀀서(SM1)에 의해 제어되는 멀티플렉서(MX3)의 중개에 의하여 가산기의 N-비트 입력에 인가된다. 가산기의 다른 N-비트 입력은 레지스터(Rc)의 출력에 연결되고, 이 레지스터의 입력은 레지스터(Ru)의 출력에 연결된다. 시퀀서(SM1)는 알고리즘의 실행을 위해 이들 여러 레지스터들의 기록과 판독을 제어한다.
명령(STM)의 인가 전에, "a 및 a" 또는 "a 및 m"을 곱셈하기 위한 데이터가 실행될 연산이 LIM(a,a)인지 또는 LIM(a,m)인지에 따라 연산수(x 및 y)로서 버퍼(BX 및 BY)에 저장된다. 첫 번째의 경우에, 버퍼(BX)의 레지스터(xi)는 a의 성분들(al-1, al-2,..., a0)을 수신하고、버퍼(BY)의 레지스터(yj)는 동일한 성분을 수신한다. 두 번째의 경우에, 버퍼(BX)의 레지스터(xi)는 a의 성분들(al-1, al-2,..., a0)을 수신하고, 버퍼(BY)의 레지스터(yj)는 m의 성분들(ml-1, ml-2,..., m0)을 수신한다.
전류 소비 서브 곡선의 획득
도 7은 본 발명의 실시예에 따른 테스트 방법을 구현하도록 제공된 집적 회로 테스트 시스템의 일례를 도시한다. 일례로서 테스트 시스템은 도 1의 비접촉 집적 회로(CIC1)를 테스트하도록 구성되는 것으로 가정될 것이다.
테스트 시스템은, 칩 카드 판독기(RD), 여기서는 비접촉 판독기와; 집적 회로의 소비 곡선을 획득하기 위해 디지털 오실로스코프와 같은 측정 디바이스(MD)에 연결된 측정 프로브(PB)와; 퍼스널 컴퓨터(PC)와 같은 계산 요소(calculation component)를 포함한다. 컴퓨터는 측정 디바이스 및 카드 판독기(RD)에 연결되고 테스트 프로그램을 구현한다. 이 테스트 프로그램은 특히 집적 회로와 통신하며 메시지를 이 집적 회로에 송신하기 위한 프로그램, 신호 처리 프로그램 및 본 발명에 따른 방법의 계산 단계를 구현하는 프로그램을 포함한다.
프로브(PB)는 전류 프로브{예를 들어, 집적 회로의 공급 단자(Vcc)에 놓인 저항} 또는 신호 증폭기(AMP)에 의해 측정 디바이스에 연결된 전자기 프로브일 수 있다. 대안적으로, 전류 프로브는 전자기 프로브와 결합될 수 있다. 전자기 방사 전자기 분석(EMA)의 연구는 동작하는 집적 회로에 의해 방출되는 전자기 방사가 소비되는 전류의 측정과 유사한 집적 회로에서의 비트의 스위칭에 관한 정보를 제공한다는 것을 보여주었다. 전자기 프로브의 잇점은 그 동작을 분석하기를 원하는 회로의 부분 근처(예를 들어, 암호화 계산 코프로세서나 마이크로프로세서의 코어 부근)에 놓일 수 있다는 것이다.
나아가, 비접촉 집적 회로의 경우에, 전류 프로브는 판독기에 의해 방출되는 자기장의 집적 회로에 의한 흡수를 측정하는 유도 프로브(inductive probe)로 대체될 수 있다. 이러한 유도 프로브, 예를 들어, 안테나 코일은 연구되는 회로의 부분 근처에 놓여있는 전자기장 프로브와 결합될 수 있다.
따라서, 본 출원에서, "전류 소비"란 용어는 단지 간략화를 위해 사용된 것이며, 그 변동이 연구되는 집적 회로의 부분 내에 또는 집적 회로 내에서 스위칭되는 바이너리 데이터를 나타내는 임의의 측정 가능한 물리적 특성을 나타낸다. 이 물리적 특성은 집적 회로의 단자에서 측정되거나 집적 회로의 연구되는 부분 근처에서 측정될 수 있다.
그러나, 물리적 특성의 샘플링 주파수는 서브 곡선마다 수 개의 포인트, 예를 들어, 실제로 서브 곡선마다 3 내지 100개의 포인트를 수집할 만큼 충분히 높아야 한다. 그러나, 서브 곡선마다 최대 수 천개의 포인트를 수집하도록 제공될 수 있다.
도 8에 도시된 바와 같이, 지수함수 알고리즘의 단계 3의 각 반복의 실행 동안 전류 소비 곡선(Cs)을 정확히 분석하는 것은 알고리즘(LIM)의 단계 3A 또는 단계 3B의 실행에 각각 대응하는 전류 소비 서브 곡선(Ci,j)을 나타낼 수 있다. 일반적인 전류 소비 곡선 내에 서브 곡선의 그룹을 식별하는 것은 제 1 단계로서 종래의 SPA를 수행함으로써 행해진다. 제 1 식별은 테스트 프로그램의 개발 단계 동안 수동으로 행해진다. 이후의 식별은 테스트 프로그램에 서브 곡선을 표시(marking)하기 위한 임시 표시 포인트를 공급함으로써 자동화될 수 있다.
일단 제 1 단계가 완료되고 나면, 테스트 프로그램은 다음 서브 곡선을 가지게 된다:
C0,0 = 계산 a0*a0 또는 a0*m0의 소비 서브 곡선,
C0,1 = 계산 a0*a1 또는 a0*m1의 소비 서브 곡선
C0,l-1 = 계산 a0*al-1 또는 a0*ml-1의 소비 서브 곡선
C1,0 = 계산 a1*a0 또는 a1*m0의 소비 서브 곡선
C1,1 = 계산 a1*a1 또는 a1*m1의 소비 서브 곡선
C1,l-1 = 계산 a1*al-1 또는 a1*ml-1의 소비 서브 곡선
Ci,0 = 계산 ai*a0 또는 ai*m0의 소비 서브 곡선
Ci,1 = 계산 ai*a1 또는 ai*m1의 소비 서브 곡선
C1,l-1 = 계산 ai*al-1 또는 ai*ml-1의 소비 서브 곡선
Cl-1,0 = 계산 al-1*a0 또는 al-1*m0의 소비 서브 곡선
Cl-1,1 = 계산 al-1*a1 또는 al-1*m1의 소비 서브 곡선
Cl-1,l-1 = 계산 al-1*al-1 또는 al-1*ml-1의 소비 서브 곡선
이에 따라 테스트 프로그램은 ㅂ 개의 서브 곡선(C0,0 내지 Cl-1,l-1) (표 1 참조)을 구비한다. 테스트 프로그램은 DPA 또는 CPA 분석법을 이 서브 곡선 세트에 적용하여 알고리즘에 의해 수행되는 연산이 ai*aj 타입인지 또는 ai*mj 타입인지를 결정한다.
본 발명에 따른 테스트 방법은 그리하여 전류 소비 곡선의 중첩을 요구하여 "수직"으로 한정될 수 있는 종래의 DPA 또는 CPA에 기초한 테스트 방법과는 달리 "수평"으로 한정될 수 있다.
CPA에 기초한 테스트 방법의 구현
도 9는 곱셈의 실행에 대한 곡선(Cs')의 2개의 전류 소비 서브 곡선{Ci,j (C0,0, C0,1,..., Ci,j,..., Cl-1,l-1)}을 부분적으로 도시한다.
서브 곡선(Ci,j)은 곱셈 알고리즘이 곱셈 알고리즘의 레벨에서 2 개의 연산(ai*aj) 또는 2 개의 연산(ai*mj)의 실행을 초래하는 연산(a*a) 또는 연산(a*m)을 실행할 것을 모듈러 지수함수 알고리즘이 요청하였는지를 결정하기 위해 사용된다.
사실, 알고리즘(LIM)이 지수함수 알고리즘의 단계 3A에 의해 호출(call)된다면, 알고리즘의 입력은,
x = a = (al-1 al-2.... a0)b
y = a = (al-1 al-2.... a0)b
이고,
알고리즘(LIM)의 단계 2는 다음 계산을 포함한다:
- for j from 0 to l-1 do :
u|v ← (Ri+j + aj*ai) + c
그러나, 알고리즘(LIM)이 지수함수 알고리즘의 단계 3B에서 호출된다면, 알고리즘의 입력은,
x = a = (al-1 al-2.... a0)b
y = m = (ml-1 ml-2.... m0)b
이고,
그리고 알고리즘(LIM)의 단계 2는 다음 계산을 포함한다:
- for j from 0 to l-1 do :
u|v ← (Ri+j + aj*mi) + c
각 서브 곡선(Ci,j)은 P개의 전류 소비 포인트(W0,i,j, W1,i,j, W2,i,j,..., Wk,i,j,...,WP-1,i,j)에 의해 형성되고 포인트의 서브세트를 형성한다. 여기서 고려되는 포인트는 이하 상관 계산시에 사용되는 것이라는 점이 주목된다. 사실, 실제로 전류 소비 포인트들이 캡쳐되는 샘플링 주파수에 따라 각 서브 곡선은 계산을 위해 사용되는 것보다 매우 더 많은 포인트들을 포함할 수 있다.
테스트 프로그램은 집적 회로에 의해 실행되는 연산에 관한 적어도 하나의 가설을 동일한 서브 곡선(Ci,j)들의 포인트들과 연관시킨다. 이 가설은 2개의 가능한 가설들, 즉 집적 회로가 ai*aj를 계산하는 제 1 가설과, 집적 회로가 ai*mj를 계산하는 제 2 가설 중에서 선택된다.
위에서 살펴본 CPA의 원리에 따라, 테스트 프로그램은 집적 회로에 의해 실행되는 연산에 관한 가설을 대응하는 예측되는 전류 소비 값 즉 "상관 모델"로 변환하기 위해 선형 전류 소비 모델을 사용한다. 간략화된 접근에 따라, 테스트 프로그램은 고려되는 연산의 가장 중요한 변수 또는 가장 중요한 변수의 조합의 해밍 가중치(1의 비트 수)를 계산함으로써 예측되는 전류 소비 값을 결정하도록 구성될 수 있다.
일례로서, 테스트 프로그램은 가설 ai*mj을 검증하기 시도하는 것으로 가정된다. 이 가설을 위해 예측된 전류 소비의 값(HWi,j)은 이후 관계식을 사용하여 계산된다:
HWi,j = H(mj)
이 모델의 다른 변동이 예를 들어 다음과 같이 제공될 수 있다:
HWi,j = H(ai*mj)
더 복잡한 모델이 다음과 같이 또한 사용될 수 있다:
HWi,j = H(α*ai + β*mj)
여기서 α and β는 그 특성화(characterization) 이후 곱셈을 실행하는 코프로세서 또는 마이크로프로세서의 함수로 설정되는 가중 계수이다.
ai 라는 용어는 2개의 가설(ai*aj 및 ai*mj)에 모두 존재하여 효과적인 구별인자(discriminant)가 아니므로 모델{HWi,j = H(ai)}은 가설(ai*mj )을 검증하는데 사용될 수 없다는 것이 주목될 수 있다.
임의의 다른 통계적으로 효과적인 모델이 전기 소비를 예측하기 위해 사용될 수 있다는 것이 이 기술 분야에 통상의 지식을 가진 자에게는 명확히 보일 것이다. 보다 구체적으로, 집적 회로의 계산 레지스터의 값이 일정하지 않고 이 회로의 구조와 이전의 연산에 따라 변하는 것으로 고려되는 보다 복잡한 모델이 사용될 수도 있다.
테스트 프로그램은 변수(a)의 모든 성분(ai)과, 메시지(m)의 모든 성분(mj)들이 알려져 있기 때문에 여기에 공급되는 모델에 기초하여 예측되는 소비 값(HWi,j)을 계산할 수 있다는 것을 또한 알 수 있다. 변수(a)의 값은 테스트 프로그램이 멱지수(d) 비트 값을 발견한 이전의 반복으로부터 추론되고 또는 이것이 모듈러 지수함수 알고리즘의 제 1 반복이라면 1이다. m의 값은 메시지가 생성되고 테스트 프로그램에 의해 송신되었기 때문에 알려져 있다.
도 9에 도시된 바와 같이, 테스트 프로그램은 수평 횡방향 포인트 서브 세트{HEk (HE0, HE1, HE2,..., HEk,..., HEP-1)}를 한정하며, 각각의 서브세트는 각 서브 곡선(Ci,j)으로부터 취해진 동일한 랭크(k)의 포인트(Wk,i,j)를 포함한다. 각 수평 횡방향 서브 세트(HEk)는 도 9에서 대시 라인으로 도시되어 있으며 이에 따라 기본 곱셈 연산(ai*mj)의 수(ℓ2)와 동일한 포인트의 수를 포함한다.
예측되는 전류 소비 포인트(HWi,j)는 수평 횡방향 서브세트(HEk)의 각 포인트(Wk,i,j)와 연관된다. 이 예측되는 포인트는 이 포인트가 속하는 곡선(Ci,j)에 대하여 예측되는 소비에 관한 가설에 대응하여 상술된 바와 같은 방식으로 계산된다.
이후, 각 수평 횡방향 서브세트(HEk)에 대해, 테스트 프로그램은 고려되는 서브세트의 포인트(Wk,i,j)와, 이들이 연관된 예측되는 소비 포인트(HWi,j) 사이의 수평 상관 계수(HCk)를 계산한다. 이 상관 계수(HCk)는 예를 들어 이하 관계식을 사용하여 계산된다:
Figure pat00004
또는,
Figure pat00005
다시 말해, 포인트(Wk,i,j)와 포인트(HWi,j) 사이의 공분산은 표준 편차{σ(Wk,i,j) and σ(HWi,j)}의 곱으로 정규화되고, 이에 따라 HCk는 1과 +1 사이에 있다.
그러므로, 아래 표 2에 도시(또한 도 10에 도시)된 바와 같이, 검증될 가설에 대응하는 수평 상관 계수(HCk)는 각 수평 횡방향 서브세트(HEk)와 연관된다.
C0,0 W0,0,0 HW0 ,0 W1,0,0 HW0,0 ... Wk,0,0 HW0,0 ... WP-1,0,0 HW0,0
C0,1 W0,0,1 HW0,1 W1,0,1 HW0,1 ... Wk,0,1 HW0,1 ... WP-1,0,1 HW0,1
C0,2 W0,0,2 HW0,2 W1,0,2 HW0,2 ... Wk,0,2 HW0,2 ... WP-1,0,2 HW0,2
... ... ... ... ... ... ... ... ... ... ...
Ci,j W0,i,j HWi,j W1,i,j HWi,j ... Wk,i,j HWi,j ... WP-1,i,j HWi,j
... ... ... ... ... ... ... ... ... ... ...
Cl-1,l-1 W0,l-1,l-1 HWl-1,l-1 W1,l-1,l-1 HWl-1,l-1 ... Wk,l-1,l-1 HWl-1,l-1 ... WP-1,l-1,l-1 HWl-1,l-1
HE0 HE1 ... HEk ... HEM-1
HC0 HC1 ... HCk ... HCP-1
도 11a, 도 11b에 도시된 바와 같이, 테스트 프로그램은 연구되는 가설을 확인하는 수평 상관 곡선(HCC1) 또는 가설을 무효화하는 수평 상관 곡선(HCC2)을 얻는다. 곡선(HCC1 또는 HCC2)은 상관 계수(HC0, HC1,..., HCk,..., HCP-1)를 포함한다. 곡선(HCC1)은 하나 이상의 상관 피크(+1 또는 -1에 가까운 값)를 나타내는 반면, 곡선(HCC2)은 상관 피크를 나타내지 않는다.
연구되는 가설의 확인은 예를 들어 테스트 프로그램에 의해 적어도 하나의 상관 피크에 대한 조사를 포함한다. 이 상관 피크에 대한 조사는 절대값이 최소 상관 값(HCmin)과 1 사이에 포함되는 적어도 하나의 상관 계수에 대한 조사를 포함한다. 최소 상관 값은 상관이 존재하도록 1에 충분히 가깝게 선택된다.
실행되는 연산이 ai*mj인 가설이 상관 피크에 의해 확인되면, 테스트 프로그램은 곡선(Cs')의 서브 곡선(C0,0 to Cl-1,l-1)이 캡쳐될 때 집적 회로가 연산(ai*mj)을 수행하고 있다고 추론하고 모듈러 지수함수의 멱지수의 비트(ds)가 1(s' 와 s 사이의 관계는 위에서 기술되었다)이라고 추론한다.
올바른 가설에 대응하는 상관 곡선(HCC1)이 각 측정되는 소비 포인트에 대해 상관 피크를 나타내지 않는다는 사실은 일부 소비 포인트들이 연구되는 연산의 실행과 연결되지 않고 오히려 알고리즘의 실행과 동일한 시간에 집적 회로에 의해 수행되는 다른 활동과 연결된다는 것을 의미한다는 것이 주목될 수 있다.
나아가, 테스트 프로그램은 특히 제 1 가설이 올바르지 않은 것으로 판명난 경우 또한 보완적인 가설, 즉 ai*aj를 분석하여 이 다른 가설이 올바른지 여부를 결정하기 위해 적어도 하나의 상관 피크를 조사하도록 구성될 수 있다.
대안적으로, 테스트 프로그램은 제 1 가설이 상관 곡선에 의해 확인되지 않은 경우 보완적인 가설이 올바른지 고려하도록 구성될 수 있다. 테스트 프로그램의 개발 기간 및 전류 소비의 최상 예측기 조사 기간 후에는 테스트 프로그램이 2개의 가설을 검증하는 것이 더 이상 필요치 않을 만큼 신뢰성이 있게 된다는 것이 밝혀졌다.
일 실시예에서, 가설(a*m)은 또한 H(mj) 및 H(ai*mj)와 같은 수 개의 상관 모델을 사용하여 테스트 프로그램에 의해 여러 번 검증될 수 있다.
다른 실시예에서, 가설(a*m)이 랭크(s')의 서브 곡선(Cs')에 대해 올바른지의 검증은 이어지는 서브 곡선(Cs'+1)의 포인트들을 참조하여 행해질 수 있다. 모듈러 지수함수 알고리즘의 구조로 인해, 이전 반복의 결과는 이어지는 반복의 변수(a)에 포함된다. 이 경우에 그리고 상술된 것과는 반대로, ai 용어는 전류 소비의 예측을 위한 효과적인 구별인자일 수 있다.
DPA에 기초한 테스트 방법의 구현
l 2 수평 소비 서브 곡선(Ci,j)은 또한 DPA 타입의 기술에 의하여 테스트 방법의 구현을 가능하게 한다.
분석은 획득 단계와 처리 단계를 요구한다. 획득 단계는 서브 곡선(Ci,j)을 포함하는 단일 소비 곡선(Cs')의 획득만을 포함한다. 이 획득은 특정 경우에 집적 회로에 여러 메시지의 송신을 요구하는 수직 획득과 결합될 수 있다는 것이 주목된다. 그럼에도 불구하고 본 발명에 따른 방법에 의해 제공되는 서브 곡선의 많은 개수(상기 표 1 참조)로 인해, 수직 획득의 수는 종래 DPA 또는 CPA에 의해 요구되는 수직 획득의 수에 비해 적다.
그러므로, 테스트 프로그램은 분류될 필요가 있는 독립적인 곡선들로서 곡선(Cs')의 수평 서브 곡선(Ci,j)을 고려함으로써 단일 곡선(Cs')(도 9)에 DPA 처리 단계를 수행한다.
테스트 프로그램은 전술된 CPA에 기초한 구현에 사용되는 것과 유사한 소비 모델을 사용하여 각 서브 곡선에 대응하는 각 계산 단계의 소비를 예측한다. 보다 구체적으로, 서브 곡선 소팅(sorting) 함수{f(ai,mj)}는 테스트 프로그램에 의해 사용되며, 예를 들어, 다음과 같다:
f(ai,mj) = mj의 하나 이상의 비트의 해밍 가중치, 또는
f(ai,mj) = ai*mj의 하나 이상의 비트의 해밍 가중치, 또는
f(ai,mj) = mj의 하나 이상의 비트와 ai의 하나 이상의 비트의 해밍 가중치.
테스트 프로그램은 측정된 소비 서브 곡선(Ci,j)을 고려되는 가설을 위해 2개의 그룹(G0, G1)으로 분류한다:
- G0 = {고려되는 단계(ai*mj)에서 집적 회로의 낮은 소비에 대응하는 서브 곡선(Ci,j)}
- G1 = {고려되는 단계(ai*mj)에서 집적 회로의 높은 소비에 대응하는 서브 곡선(Ci,j)}
예를 들어, 도 9에 도시된 바와 같이, 도시된 서브 곡선(C0,0 및 Cl-1,l-1)은 그룹(G0)으로 분류되는 반면, 서브 곡선(C0,1)은 그룹(G1)으로 분류된다.
테스트 프로그램은,
랭크(k)(M0W0, M0W1,..., M0Wk,..., M0WP-1)의 각 포인트(M0Wk)가 그룹(G0)의 모든 서브 곡선(Ci,j)의 동일한 랭크(k)의 포인트(Wk,i,j)의 평균과 같은 제 1 평균 곡선(M0)(도 12a에 개략적으로 도시)과,
랭크(k)(M1W0, M1W1,..., M1Wk,..., M1WP-1)의 각 포인트(M1Wk)가 그룹(G1)의 모든 서브 곡선(Ci,j)의 동일한 랭크(k)의 포인트(Wk,i,j)의 평균과 같은 제 2 평균 곡선(M1)(도 12b에 개략적으로 도시)과,
랭크(k)(DW0, DW1,..., DWk,..., DWP1)의 각 포인트(DWk)가 평균 곡선(M0 및 M1)의 동일한 랭크(k)의 포인트(M0Wk 및 M1Wk)의 차이와 같은 통계적 차이 곡선(DM) 또는 평균 차이 곡선(도 12c에 개략적으로 도시)
을 계산한다.
하나 또는 수 개의 전류 소비 피크가 전류 소비 예측을 위해 선택된 위치에서 통계적 차이 곡선(DM)에 나타나는 경우, 테스트 프로그램은 멱지수 비트 값에 대한 가설이 올바르다고 추론한다. 그리하여, 모듈러 지수함수 알고리즘에 의해 실행되는 연산은 LIM(a,m)이다. 소비 피크가 나타나지 않은 경우, 테스트 프로그램은 보완적인 가설이 검증되고(dv-s=0) 실행된 연산이 LIM(a,a)이거나 또는 보완적인 가설을 검증하기 위해 유사한 방식으로 처리할 것을 고려할 수 있다.
CPA에 기초한 실시예와 상관 피크에 대한 조사와 동등한 소비 피크에 대한 테스트 프로그램의 조사는 예를 들어 최소 소비 값(DWmin)과 같거나 이보다 더 큰 값을 갖는 차이 소비 포인트(DWk)에 대한 조사를 포함한다.
본 발명의 실시예의 다른 적용
본 발명에 따른 테스트 방법의 실시예들은 여러 타입의 알고리즘(암호화이거나 아니거나, 모듈러 지수함수이거나 아니거나)이 서로 다른 연산수에 기초하여 곱셈 연산의 실행을 야기하는 조건부 분기를 포함하는 경우 이러한 여러 타입의 알고리즘(암호화이거나 아니거나, 모듈러 지수함수이거나 아니거나)을 구현하는 집적 회로의 테스트에 적용될 수 있다는 것이 이 기술 분야에 통상의 지식을 가진 자에게는 명확할 것이다.
기본적으로, 본 발명의 실시예는 조건부 분기의 중개에 의하여 곱셈 알고리즘을 호출하는 더 높은 레벨의 알고리즘과 관련하여 COMBA 또는 KARATSUBA 곱셈과 같은 기본 곱셈(xi*yj)을 복수회 수행하는 것을 포함하는 임의의 타입의 곱셈 알고리즘을 구현하는 집적 회로의 테스트에 적용될 수 있다. 본 발명의 실시예는 또한 기본 곱셈(xi*yj)을 복수회 수행하는 것을 포함하는 예를 들어 Montgomery 함수, Quisquater 함수 또는 Sedlak's ZDN 곱셈과 같은 감소 함수를 포함하는 모듈러 곱셈 함수를 사용하는 집적 회로의 테스트에도 적용될 수 있다.
모든 이들 적용에서, 본 발명은 조건부 분기가 발생하는 비밀 데이터를 추론하기 위하여 조건부 분기에 관한 가설의 평가 및 집적 회로의 자격인정 또는 인증을 위한 테스트 시스템의 실현을 가능하게 한다. 집적 회로는 비밀이 테스트 시스템에 의해 발견될 수 있는 경우에는 비밀을 유지할 수 없는 것으로 거부(reject)된다.
종래의 대응책의 유효성
집적 회로는 종래의 자격인정 또는 인증 과정을 성공적으로 완료할 수 있도록 집적 회로 설계자는 일반적으로 집적 회로 내에 대응책(countermeasures)을 제공하며, 그 중 가장 일반적인 것은 다음과 같다:
i) 멱지수(d)의 랜덤화:
멱지수(d)는 d' = d + K와 같은 랜덤 멱지수(d')로 대체된다.
여기서 K는 계산이 수행되는 배수 그룹(multiplicative group)의 차수(order)의 배수(multiple)이다. 예를 들어, RSA 알고리즘 K= k*φ(n)의 경우에, k는 랜덤 넘버(random number)이고, φ 는 φ(n) = (p-1)*(q-1)와 같은 오일러(Euler)의 함수이고, 여기서 p와 q 는 p*q=1를 만족하는 정수이다.
ⅱ) 멱지수 모듈(n)과 메시지(m )의 추가적인 랜덤화:
수신된 메시지(m)는 m* = m + r1*n modulo r2*n, 즉 m = m + u*n를 만족하는 메시지(m*)로 변환되며, 여기서 u = r1 modulo r2이고, r1, r2는 각 새로운 암호화 계산 사이클에 대해 서로 다른 랜덤 넘버이다.
ⅲ) 메시지(m)의 배수 랜덤화
수신된 메시지(m)는 m* = re*m modulo m를 만족하는 메시지(m*)로 변환되며, 여기서 r 은 랜덤 넘버이고 e 는 공개 멱지수이다.
대응책 ⅰ)은 본 발명의 실시예에 따른 테스트 방법에는 효과적이지 않으며 단지 수직 DPA 및 CPA는 무효화(countered)될 수 있는 것으로 보인다. 본 발명에 따른 테스트 방법은 단일 소비 곡선만을 필요로 하며 멱지수(d')의 발견을 가능하게 한다. 멱지수(d')는 초기 멱지수(d )로부터 유도되긴 하지만, 이 멱지수(d')는 초기 멱지수와 동일한, 모듈러 지수함수를 실행하기 위한 비밀 키로 사용될 수 있다.
대응책 ⅱ) 및 ⅲ)에 대해서는, 본 발명의 실시예에 따른 테스트 방법은 가설 내에 랜덤화된 메시지의 값에 대한 가설을 도입함으로써 그 대응책을 돌파(breach)하는 것을 가능하게 하는 것으로 동일하게 보인다. 이것은, 여러 메시지에 관련된 여러 소비 곡선에 기초하여 통계적 수직 횡방향 처리에 기초하는 것이 아니라, 단일 메시지에 관련된 단일 소비 곡선의 수평 횡방향 통계적 처리에 기초한다는 사실에 기인한다. 이들 대응책은 처리할 가설의 수를 곱셈(multiply)하여 본 발명의 방법의 실행을 늦추게 하지만, 처리될 가설의 수가 너무 크지 않는 한, 집적 회로에 의해 연산이 실행되는 결정을 방해하지는 않는다.
적절한 대응책
본 발명의 실시예는 본 발명의 실시예의 방법을 포함하는 자격인정 또는 인증 테스트 후에 사용될 수 있는 것으로 집적 회로를 고려하게 하는 대응책의 제공에 관한 것이다.
기본 곱셈(xi*yj)의 실행 차수를 랜덤화함으로써 본 발명의 실시예에 따른 수평 분석에 대항하여 곱셈 알고리즘을 보호하는 것이 여기서 제안된다. 이 랜덤화는 선택된 각 xi에 대해 yj의 처리 차수를 유지하면서 xi의 처리 차수를 랜덤화(부분 랜덤화)하거나 또는 yj의 처리 차수와 xi의 처리 차수를 모두 랜덤화(전체 랜덤화)하는 것을 포함한다.
부분 랜덤화의 일례로서, 다음 곱셈 시퀀스, 즉
xi*y0 - xi*y1 - xi*y3 - xi*y4 ... xi*yl-1
는 예를 들어
xi*y15 xi*y5 xi*y18 xi*yl-1 ... xi*y2
으로 (랜덤하게) 된다.
만약 랜덤화가 완료되면, 모든 곱셈 시퀀스(xi*yj)는 임의의 순서로 실행된다.
부분 랜덤화를 갖는 랜덤화된 LIM 알고리즘의 예는 다음과 같다:
Inputs:
x = (xl-1, xl-2,... x0)b
y = (yl-1, yl-2,... y0)b
Output: R = LIM(x,y) = x*y = (R2l-1 R2l-2.... R0)b
Step 1 :
Calculate or receive a permutation vector α such that
α = (αl-1, αl-2,...α0)
Step 2 :
For i from 0 to 2l-1 do : Ri = 0
Step 3 :
For h from 0 to l-1 do :
i ← αi ; c ← 0
for j from 0 to l-1 do :
u|v ← (Ri+j + xi*yj) + c
as long as c is different than 0, do :
u|v ← Ri+j + c
Ri+j ← v and c ← u
j ← j+1
Step 4 : Return(R)
그러한 랜덤화된 LIM 알고리즘은 소프트웨어에 의해 또는 하드웨어 회로에 의해 실행될 수 있다.
그러한 랜덤화는 추가적으로 성분(xi)의, 성분(yj)의 또는 이들 두 성분(xi,yj) 모두의 가산 또는 감산 마스킹(masking)과 결합되거나, 랜덤 또는 의사 랜덤 넘버(pseudo-random number)(R') 또는 2개의 랜덤 또는 의사 랜덤 넘버(R', R")와 성분(xi) 및/또는 성분(yj)을 가산 또는 감산에 의해 결합하는 것으로 구성될 수 있다. 이 경우에, 상기 알고리즘에서 곱셈 단계(xi*yj)는 예를 들어 다음과 같이 된다:
u|v ← (Ri+j + (xi-R')*yj) + c + yj*R'
2개의 랜덤 넘버(R' 및 R")를 사용하는 다음 예는 다음과 같다:
u|v ← (Ri+j + (xi-R')*(yj-R") + c +
yj*R' xi*R"+ yj*R' + R'*R"
도 13은 방금 설명된 방식으로 곱셈 알고리즘을 실행하도록 구성된 시퀀서(SM2)(상태 머신, 마이크로 프로그래밍된 시퀀스, ...)를 포함한다는 점에서 도 6과 관련하여 설명된 곱셈기(SMT1)와는 다른 랜덤화된 곱셈기 하드웨어(SMT2)를 도시한다. 즉, 성분(xi)의 처리 차수를 랜덤화하거나 또는 성분(xi)의 처리 차수와 성분(yj)의 처리 차수를 랜덤화함으로써 이들 성분들의 가산 또는 감산 랜덤화를 선택적으로 할 수 있다.
순열 벡터(permutation vector)(α)는 여기서 외부 랜덤 또는 의사 랜덤 워드 생성기(RGEN)에 의하여 곱셈기(SMT2)에 공급되는 랜덤 워드(RDM)이지만, 곱셈기(SMT2)에 의해 또한 내부적으로 생성될 수도 있다. 하나 이상의 다른 랜덤 워드는 곱셈기에 공급될 수 있으나 성분(xi,yj)의 랜덤화 옵션이 유지되는 경우에는 곱셈기에 의해 생성될 수도 있다.
일 실시예에서, 시퀀서(SM2)는 2개의 기능 모드(functioning modes), 즉 종래 방식으로 곱셈을 실행하는 종래의 기능 모드와, 본 발명에 따라 랜덤화된 기능 모드를 제공하도록 구성된다. 이 기능 모드는 도 13에 도시된 바와 같이 곱셈기에 적용되는 구성 신호(configuration signal)(MODE)에 의하여 또는 곱셈기의 구성 레지스터에서 프로그래밍된 플래그 MODE에 의하여 선택된다.
도 14는 본 발명에 따른 대응책 수단을 구비하고 플라스틱 카드와 같은 휴대형 지지 HD 상에 배열된 집적 회로(CIC2)를 도시한다. 이 집적 회로는 도 1과 관련하여 전술된 집적 회로(CIC1)와 동일한 유닛을 포함하되 코프로세서(CP1)가 도 13의 랜덤화된 곱셈기(SMT2)를 포함하는 코프로세서(CP1)로 대체되어 있다는 점에서 도 1과는 서로 상이하다. 다른 실시예에서, 코프로세서(CP1)는 랜덤화된 곱셈기(SMT2)만을 포함하며 랜덤화된 곱셈(산술 가속기)을 수행하도록 설계되어 있지 않다. 다른 실시예에서, 코프로세서(CP1)는 랜덤화된 곱셈을 포함하는 모듈러 지수 함수를 완전히 실행하도록 구성된 성분 또는 심지어 모듈러 지수 함수를 포함하는 암호화 함수를 완전히 실행하도록 구성된 성분을 포함할 수 있다. 또 다른 실시예에서, 본 발명에 따른 랜덤화된 곱셈은 마이크로프로세서(MP)에 의해 실행된다.
본 상세한 설명과 청구범위에서 "랜덤" 또는 "의사 랜덤" 이라는 용어는 평가기(evaluator)나 테스트 방법에 의해 알려져 있지 않거나 집적 회로의 비밀을 알지 못하는 사람은 예측할 수 없는 넘버를 나타낸다는 것이 주목된다. 특히, 넘버는 이 넘버를 생성하기 위해 비밀 파라미터를 사용하는 결정 함수(그리고 이에 따라 본래 랜덤하지 않은)에 의해 생성되는 경우 이 넘버는 본 출원의 의미에서 "랜덤" 또는 "의사 랜덤"으로 고려된다.
이 기술 분야에 통상의 지식을 가진 자라면 본 발명의 넓은 발명의 개념을 벗어남이 없이 전술된 실시예에 변형이 이루어질 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 본 발명은 개시된 특정 실시예로 한정되지 않고 오히려 첨부된 청구범위에 의해 한정된 본 발명의 사상과 범위 내에 있는 변형을 포함하도록 의도된 것으로 이해된다.

Claims (17)

  1. 워드(x)의 성분(xi)과 워드(y)의 성분(yj)의 복수회의 기본 곱셈 단계(i 및 j는 반복 변수(iteration variable))에서, 적어도 2개의 바이너리 워드들(binary words)(x 및 y)의 곱셈을 실행하도록 형성된 곱셈 함수를 포함하는 집적 회로로서,
    상기 곱셈 함수는 또한, 랜덤 또는 의사 랜덤(pseudo-random) 방식으로, 성분(xi)과 성분(yj)의 기본 곱셈 단계가 실행되는 순서를 변경함으로써, 바이너리 워드들(binary words)(x 및 y)의 두 개의 연속된 곱셈을 실행하도록 형성되는 것을 특징으로 하는 집적 회로.
  2. 제 1 항에 있어서,
    상기 곱셈 함수는, 랜덤 또는 의사 랜덤 방식으로, 성분(yj)를 성분(xi)와 곱하는 순서 중 하나를 변경함이 없이 성분(xi)를 성분(yj)와 곱하는 순서를 변경하거나 또는 성분(yj)를 성분(xi)와 곱하는 순서를 변경하도록 형성되는 것을 특징으로 하는 집적 회로.
  3. 제 1 항에 있어서,
    상기 곱셈 함수는, 랜덤 또는 의사 랜덤 방식으로, 성분(xi)를 성분(yj)와 곱하는 순서 및 성분(yj)를 성분(xi)와 곱하는 순서를 변경하도록 형성되는 것을 특징으로 하는 집적 회로.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 곱셈 함수는 랜덤 또는 의사 랜덤 바이너리 수를 생성하거나 수용하는 요소를 포함하고, 적어도 하나의 반복 변수 i 또는 j에 대하여, 상기 랜덤 또는 의사 랜덤 바이너리 수에 의하여 결정되는 순서에 따라 성분(yj)에 의한 성분(xi)의 복수회의 기본 곱셈 단계를 실행하도록 형성되는 것을 특징으로 하는 집적 회로.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 곱셈 함수는 또한, 적어도 하나의 랜덤 또는 의사 랜덤 워드에 의하여 적어도 하나의 성분 (xi) 또는 (yj)를 임의 추출(randomize)하도록 형성되는 것을 특징으로 하는 집적 회로.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 곱셈 함수는, 반복 변수가 바이너리 워드들의 곱셈의 일정한 순서에 따라 증가되거나 감소되는 제1 연산 모드, 및 랜덤 또는 의사 랜덤 방식으로 하나의 바이너리 워드 곱셈에서 다른 바이너리 워드 곱셈으로 적어도 하나의 반복 변수가 증가되거나 감소되는 제2 연산 모드를 포함하는 것을 특징으로 하는 집적 회로.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 곱셈 함수는, 순서 결정 장치(sequencer)에 의해 제어되는 하드와이어 회로(hardwired circuit)에 의하여 실행되는 것을 특징으로 하는 집적 회로.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    외부 데이터의 처리 함수를 더 포함하고, 상기 처리 함수의 실행은, 곱셈 함수에 의한 바이너리 워드들의 적어도 하나의 제 1 곱셈 단계 또는 곱셈 함수에 의한 바이너리 워드들의 제 2 곱셈 단계로 조건부 분기하는 적어도 하나의 단계를 포함하며, 상기 조건부 분기는 집적 회로의 비밀 데이터의 함수인 것을 특징으로 하는 집적 회로.
  9. 제 8 항에 있어서,
    상기 데이터 처리 함수는 모듈러 지수 함수이고, 상기 비밀 데이터는 모듈러 지수 함수의 멱지수(exponent)인 것을 특징으로 하는 집적 회로.
  10. 제 8 항에 있어서,
    상기 데이터 처리 함수가 모듈러 지수 함수를 포함하는 암호화 함수이고, 상기 비밀 데이터는 암호화 함수의 비밀 키를 형성하는 모듈러 지수 함수의 멱지수인 것을 특징으로 하는 집적 회로.
  11. 지지체에 배열되거나 임베디드(embedded)된, 제 1 항 내지 제 10 항 중 어느 한 항에 따른 집적 회로를 포함하는 장치.
  12. 적어도 2개의 바이너리 워드들(x 및 y)의 곱셈 연산 및 워드(x)의 성분(xi)과 워드(y)의 성분(yj)의 복수회의 기본 곱셈 단계(i 및 j는 반복 변수(iteration variable))를 실행하도록 형성된 집적 회로의 사이드 채널 분석에 대항한 보호 방법으로서,
    랜덤 또는 의사 랜덤 방식으로, 하나의 바이너리 워드의 곱셈 연산으로부터 다른 바이너리 워드의 곱셈 연산으로, 상기 집적 회로가 성분(xi)과 성분(yj)의 기본 곱셈 단계를 실행하는 순서를 변경하는 단계를 포함하는 것을 특징으로 하는 집적 회로의 사이드 채널 분석에 대항한 보호 방법.
  13. 제 12 항에 있어서,
    랜덤 또는 의사 랜덤 방식으로, 성분(yj)를 성분(xi)와 곱하는 순서 중 하나를 변경함이 없이 상기 집적 회로가 성분(xi)를 성분(yj)와 곱하는 순서를 변경하거나 또는 성분(yj)를 성분(xi)와 곱하는 순서를 변경하는 단계를 더 포함하는 것을 특징으로 하는 집적 회로의 사이드 채널 분석에 대항한 보호 방법.
  14. 제 12 항에 있어서,
    랜덤 또는 의사 랜덤 방식으로, 상기 집적 회로가 성분(xi)를 성분(yj)와 곱하는 순서 및 성분(yj)를 성분(xi)와 곱하는 순서를 변경하는 단계를 더 포함하는 것을 특징으로 하는 집적 회로의 사이드 채널 분석에 대항한 보호 방법.
  15. 제 12 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 집적 회로 내에 랜덤 또는 의사 랜덤 바이너리 수를 생성하는 단계; 및
    상기 집적 회로가, 적어도 하나의 반복 변수 i 또는 j에 대하여, 상기 랜덤 또는 의사 랜덤 바이너리 수에 의하여 결정되는 순서에 따라 성분(xi)의 성분(yj)와의 복수회의 기본 곱셈 단계를 실행하도록 하는 단계;를 더 포함하는 것을 특징으로 하는 집적 회로의 사이드 채널 분석에 대항한 보호 방법.
  16. 제 12 항 내지 제 15 항 중 어느 한 항에 있어서,
    적어도 하나의 랜덤 또는 의사 랜덤 워드에 의하여 적어도 하나의 성분 (xi) 또는 (yj)를 임의 추출(randomize)하는 단계를 더 포함하는 것을 특징으로 하는 집적 회로의 사이드 채널 분석에 대항한 보호 방법.
  17. 제 12 항 내지 제 16 항 중 어느 한 항에 있어서,
    외부 데이터의 처리 함수를 포함하는 집적 회로의 보호에 적용되고, 상기 처리 함수의 실행은, 바이너리 워드들의 적어도 하나의 제 1 곱셈 단계 또는 바이너리 워드들의 적어도 하나의 제 2 곱셈 단계로 조건부 분기하는 적어도 하나의 단계를 포함하며, 상기 조건부 분기는 집적 회로의 비밀 데이터의 함수인 것을 특징으로 하는 집적 회로의 사이드 채널 분석에 대항한 보호 방법.
KR1020110018646A 2010-03-01 2011-03-02 수평 사이드 채널 분석에 대항하여 보호된 집적 회로 KR20110099185A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
FR1000833A FR2956932B1 (fr) 2010-03-01 2010-03-01 Procede de test de la resistance d'un circuit integre a une analyse par canal auxiliaire
FR1000834 2010-03-01
FR1000833 2010-03-01
FR1000834A FR2956933A1 (fr) 2010-03-01 2010-03-01 Circuit integre protege contre une analyse par canal auxiliaire horizontale
US12/750,953 2010-03-31
US12/750,953 US8572406B2 (en) 2010-03-31 2010-03-31 Integrated circuit protected against horizontal side channel analysis
US12/750,846 US8457919B2 (en) 2010-03-31 2010-03-31 Process for testing the resistance of an integrated circuit to a side channel analysis
US12/750,846 2010-03-31

Publications (1)

Publication Number Publication Date
KR20110099185A true KR20110099185A (ko) 2011-09-07

Family

ID=44023087

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020110018644A KR101792650B1 (ko) 2010-03-01 2011-03-02 사이드 채널 분석에 대한 집적 회로의 저항을 테스트하는 방법
KR1020110018646A KR20110099185A (ko) 2010-03-01 2011-03-02 수평 사이드 채널 분석에 대항하여 보호된 집적 회로

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020110018644A KR101792650B1 (ko) 2010-03-01 2011-03-02 사이드 채널 분석에 대한 집적 회로의 저항을 테스트하는 방법

Country Status (4)

Country Link
EP (2) EP2365659B1 (ko)
KR (2) KR101792650B1 (ko)
CN (2) CN102193060B (ko)
CA (2) CA2732444C (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9959429B2 (en) 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
EP3220306B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
FR3048296B1 (fr) * 2016-02-25 2018-03-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de brouillage electromagnetique pour circuit integre
EP3264311B1 (en) * 2016-06-28 2021-01-13 Eshard A protection method and device against a side-channel analysis
EP3447509B1 (en) * 2017-08-21 2021-05-26 Eshard Method of testing the resistance of a circuit to a side channel analysis
CN109629109A (zh) * 2019-01-28 2019-04-16 深圳全棉时代科技有限公司 一种纯棉非织造物制品的制备方法
FR3095709B1 (fr) * 2019-05-03 2021-09-17 Commissariat Energie Atomique Procédé et système de masquage pour la cryptographie

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3926532B2 (ja) * 2000-03-16 2007-06-06 株式会社日立製作所 情報処理装置、情報処理方法、及びカード部材
JP2003098962A (ja) * 2001-09-20 2003-04-04 Hitachi Ltd 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
FR2818846B1 (fr) * 2000-12-22 2004-03-05 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie
US7113593B2 (en) * 2001-03-06 2006-09-26 Ericsson Inc. Recursive cryptoaccelerator and recursive VHDL design of logic circuits
GB2399904B (en) * 2003-03-28 2005-08-17 Sharp Kk Side channel attack prevention in data processing apparatus
FR2853425B1 (fr) * 2003-04-07 2006-01-13 Atmel Corp Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur
WO2004112306A2 (en) * 2003-06-12 2004-12-23 Philips Intellectual Property & Standards Gmbh Method for defence against differential power analysis attacks
JP5179358B2 (ja) * 2005-06-29 2013-04-10 イルデト アイントホーフェン ベー フェー 攻撃又は解析に対してデータ処理装置を保護するための装置及び方法
US20080091975A1 (en) * 2006-10-17 2008-04-17 Konstantin Kladko Method and system for side-channel testing a computing device and for improving resistance of a computing device to side-channel attacks
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
CN101197668B (zh) * 2007-12-06 2010-08-18 上海交通大学 基于随机化带符号标量乘法的椭圆曲线抗旁路攻击方法
CN101183945A (zh) * 2007-12-20 2008-05-21 上海交通大学 基于旁路算子的椭圆曲线抗旁路攻击方法
CN101436932A (zh) * 2008-12-18 2009-05-20 天津大学 一种抵抗简单电耗攻击的模幂计算方法

Also Published As

Publication number Publication date
CA2732651A1 (fr) 2011-09-01
EP2363975B1 (fr) 2020-01-01
CN102193773A (zh) 2011-09-21
CA2732444C (fr) 2020-02-18
EP2365659A1 (fr) 2011-09-14
EP2365659B1 (fr) 2017-04-12
KR101792650B1 (ko) 2017-11-02
CA2732444A1 (fr) 2011-09-01
CN102193060A (zh) 2011-09-21
KR20110099184A (ko) 2011-09-07
CN102193060B (zh) 2015-05-06
CA2732651C (fr) 2017-05-30
EP2363975A1 (fr) 2011-09-07

Similar Documents

Publication Publication Date Title
US8572406B2 (en) Integrated circuit protected against horizontal side channel analysis
EP3220305B1 (en) Method of testing the resistance of a circuit to a side channel analysis of second order or more
US8457919B2 (en) Process for testing the resistance of an integrated circuit to a side channel analysis
KR101792650B1 (ko) 사이드 채널 분석에 대한 집적 회로의 저항을 테스트하는 방법
EP2211265B1 (en) Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method
US11036891B2 (en) Testing resistance of a circuit to a side channel analysis
Burchard et al. Autofault: towards automatic construction of algebraic fault attacks
Fournaris et al. Crt rsa hardware architecture with fault and simple power attack countermeasures
He Highly secure cryptographic computations against side-channel attacks
Liu et al. Implementation of a resource-constrained ECC processor with power analysis countermeasure
Barron RSA Power Analysis Obfuscation: A Dynamic FPGA Architecture
Medwed Template-based SPA attacks on 32-bit ECDSA implementations
Li et al. Quantitative evaluation of side-channel security for Elliptic Curve Cryptosystems
Malagon et al. [2010] Avoiding Side-Channel Attacks in Embedded Systems with Non-deterministic Branches

Legal Events

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