KR20170098734A - 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 - Google Patents
부채널 분석에 대한 회로의 저항력을 테스트하는 방법 Download PDFInfo
- Publication number
- KR20170098734A KR20170098734A KR1020170023805A KR20170023805A KR20170098734A KR 20170098734 A KR20170098734 A KR 20170098734A KR 1020170023805 A KR1020170023805 A KR 1020170023805A KR 20170023805 A KR20170023805 A KR 20170023805A KR 20170098734 A KR20170098734 A KR 20170098734A
- Authority
- KR
- South Korea
- Prior art keywords
- values
- cumulative
- value
- occurrences
- secret data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2215—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test error correction or detection circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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]
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/2851—Testing of integrated circuits [IC]
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/31719—Security aspects, e.g. preventing unauthorised access during test
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- 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/08—Randomization, e.g. dummy operations or using noise
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 회로의 테스트 방법에 관한 것으로서, 회로가 기밀 데이터에 적용되는 별개의 암호 작업들의 세트 중 한 작업을 실행할 때, 테스트할 회로의 활동과 연계된 물리량의 값들을 포함하는 복수의 값 세트를 획득하는 단계, 각 값 세트에서 적어도 제1 부분세트를 선택하는 단계, 각각의 값 세트에 대해, 처리부에 의하여, 값 세트의 발생 횟수 세트를 형성하도록, 값 세트의 제1 부분세트의 값들에 적용되는 제1 전사함수에 의해 변환된 값의 발생 횟수를 카운트하는 단계, 작업 세트의 각 작업 및 기밀 데이터의 일부 가능한 값들 각각에 대하여, 부분 작업 결과를 계산하는 단계, 기밀 데이터 일부의 가능한 값들 중 동일한 값 또는 동등한 값에 적용될 때, 제2 전사함수의 적용으로부터 생성된 동일한 변환 값을 갖는 부분 작업 결과를 제공하는 작업 세트의 작업에 대응하는 발생 횟수 세트들을 모두 더해서 구한 누적 발생 횟수 세트들(CH)을 계산하는 단계, 선택된 병합 방식에 따라, 누적 발생 횟수 세트들(HT)의 누적 발생 횟수를 병합하는 단계, 및 기밀 데이터의 일부를 판단하기 위하여 병합된 누적 발생 횟수 세트들(HTR1)을 분석하는 단계를 포함한다.
Description
본 발명은 회로, 특히, 비밀 데이터를 다루도록 설계된 회로, 및 특히 비밀 키를 사용하는 암호화 알고리즘에 의해 메시지를 변환하는 회로를 테스트하기 위한 방법에 관한 것이다.
본 발명은 특히 암호 알고리즘들을 구현하는 디바이스들, 예를 들어, 보안 디바이스들(스마트 카드 집적 회로들, 보안 요소들, 보안 메모리 카드들), 이동 디바이스들(이동 전화들, 스마트폰들, 사물 인터넷), 도모틱스 디바이스들 및 자동차 디바이스들, 및 컴퓨터 및 다른 전자 및 IT 장치(USB 드라이브, TV 인코더, 게임 콘솔, 등), 등의 마더 보드 상에 통합된 하드웨어 암호 컴포넌트들에 관한 것이다. 본 발명은 또한 보안 또는 비-보안 환경에서 실행되도록 제공되는, 암호화 연산을 포함하는 소프트웨어에 관한 것이다.
본 발명은 특히 암호 알고리즘, 예를 들어, DES(Data Encryption Standard) 또는 Triple DES, AES(Advanced Encryption Standard), RSA(Rivest, Shamir and Adleman), DSA(Digital Signature Algorithm), 또는 ECDSA(Elliptic Curve Digital Signature Algorithm)와 같은 암호화 알고리즘을 구현하는 회로들에 관한 것이다. 본 발명은 또한 예를 들어, HMAC(keyed-Hash Message Authentication Code)와 같은 해싱 함수를 구현하는 회로들에 관한 것이다.
암호 알고리즘을 구현하는 마이크로회로들은 CPU(중앙 프로세싱 유닛)을 구비하고 있다. 일부 마이크로회로들은 암호 컴퓨팅에 전용된 회로들, 예를 들어, 암호 코프로세서를 구비하고 있다. 이러한 마이크로회로들은 실행될 연산들에 따라 상이하게 스위칭되는 수천 개의 로직 게이트들을 포함한다. 이러한 스위칭들은 측정될 수 있는, 예를 들어, 수 나노초의 짧은 전류 소비량 변화들을 생성한다. 특히, CMOS-타입 집적 회로들은 스위칭될 시에, 즉 로직 노드가 1 또는 0으로 변할 때에만 전류를 소비하는 로직 게이트들을 포함한다. 따라서, 전류 소모량은 CPU에 의해 처리되는 데이터 및 그의 다양한 주변요소들, 예를 들어, 메모리, 데이터 또는 어드레스 버스 상에서 전달되는 데이터, 암호 코프로세서, 등에 의존한다.
또한, 특히, 암호화 또는 난독화 기법들, 예를 들어, “화이트박스 암호화(Whitebox Cryptography)” 기법을 사용하여 생성된 특정 소프트웨어 프로그램들은, 리버스 엔지니어링에 의해 비밀 데이터를 결정하기 힘들도록, 비밀 데이터를 포함할 수 있다. 특정 소프트웨어 프로그램들은 또한 보안 통신 채널을 통해 외부로부터 비밀 데이터를 수신할 수 있다. 이러한 마이크로회로들은 그들의 전류 소비, 또는 그들의 자기적 또는 전자기적 방사, 또는 암호 알고리즘이 실행되는 동안에 관측될 수 있는 임의의 다른 정보를 관측하는 것에 기초한 이른바 사이드 채널 분석 공격을 받을 수 있다. 이러한 공격들은 그들이 사용하는 비밀 데이터, 특히 그들의 암호화 키들을 복구하는 것을 목적으로 한다. 빈번한 사이드 채널 공격은 통계적 분석 방법들, 예를 들어, SPA("Single Power Analysis"), DPA("Differential Power Analysis"), CPA("Correlation Power Analysis") 또는 EMA("ElectroMagnetic Analysis")을 구현한다. SPA 분석(다음 문헌 참조: P. C. Kocher, "Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems" In Neal Koblitz, editor, Advances in Cryptology - CRYPTO '96, volume 1109 of Lecture Notes in Computer Science, pages 104-113. Springer, 1996)은 정상적으로 단일 전류 소비 트레이스(trace) 취득만을 요구한다. SPA 분석은 전류 트레이스가 실행된 연산들 및 처리된 데이터에 따라서 변하기 때문에, 암호 계산에 대응하는 전류 소비 트레이스의 부분을 관측함으로써 집적 회로의 활성도에 대한 정보를 획득하는 것을 목적으로 한다.
소프트웨어는 또한 회로에 의한 그들의 실행 동안에 이러한 사이드 채널 공격을 겪을 수 있다.
DPA 분석(다음 문헌 참조: P. C. Kocher, J. Jaffe, and B. Jun, "Differential Power Analysis" In M. J. Wiener, editor, Advances in Cryptology - CRYPTO '99, volume 1666 of Lecture Notes in Computer Science, pages 388-397. Springer, 1999) 및 CPA 분석은 수많은 데이터 또는 측정 트레이스들을 획득하고 탐색할 정보를 찾기 위해서 이러한 트레이스들을 통계적으로 분석함으로써 암호화 알고리즘의 키가 구해질 수 있게 한다. 이러한 분석법들은 비트가 레지스터 내에서 또는 버스 상에서 0에서 1로 변할 때에는 CMOS-타입 집적 회로의 전류 소비량이 변하지만, 비트가 0과 동일하게 유지되거나, 1과 동일하게 유지되거나, 1에서 0으로 변할 때에는(MOS 트랜지스터의 부유 용량의 방전 시에는), CMOS-타입 집적 회로의 전류 소비량이 변하지 않는다는 전제에 기초한다. 이와 달리, 비트가 0에서 1로 변하거나 1에서 0으로 변하는 때에는 CMOS-타입 집적 회로의 전류 소비량이 변하지만, 비트가 0과 동일하게 유지되거나 1과 동일하게 유지되는 때에 CMOS-타입 집적 회로의 전류 소비량은 변하지 않는다는 것도 고려될 수 있다. 이러한 두 번째 가정은 통상적인 "Hamming 거리" 또는 "Hamming 가중치" 함수들이 사용되어서, 집적 회로의 구조가 적용 가능하게 되는 것으로 알려지는 것을 요구하지 않는 전류 소비 모델을 개발할 수 있게 한다. DPA 분석은 수많은 소비 트레이스들에 대한 통계적 처리로 인한 이러한 전류 소비 차를 증폭시키는 것을 수반하며, 이는 작성된 가설에 따라서 구별된 2 개의 소비 트레이스들의 패밀리들 간의 측정 차를 강조하는 것을 목적으로 한다.
CPA 분석(다음 문헌 참조: E. Brier, C. Clavier, and F. Olivier, "Correlation Power Analysis with a Leakage Model" In M. Joye and J-J. Quisquater, editors, Cryptographic Hardware and Embedded Systems - CHES 2004, volume 3156 of Lecture Notes in Computer Science, pages 16-29. Springer, 2004)은 선형 전류 소비 모델에 기초하며 먼저, 포획된 소비 트레이스들을 형성하는 측정된 소비 포인트들과, 다음으로, 선형 소비 모델 및 마이크로회로에 의해 다루어진 복구될 변수 및 암호화 키의 값에 대한 가설로부터 컴퓨팅된, 추정된 소비 값 간의 상관 계수를 컴퓨팅하는 것을 수반한다.
전자기 분석(EMA)은 마이크로회로가 근거리 또는 원거리 전자기 방사의 형태로 정보를 누설할 수 있다는 원리에 기초한다. 트랜지스터의 상태가 변할 때에 트랜지스터가 전자기 신호들을 방출한다고 가정하면, 이러한 신호들은 SPA, DPA 및 CPA 분석들 중 하나 또는 다른 것과 같은 분석법에 의해 전류 소비 변화 신호들과 같이 간주될 수 있다. 이러한 분석의 적용 실례는 Jean-Jacques Quisquater에 의해 이루어졌다(다음 문헌 참조: J.-J. Quisquater, "ElectroMagnetic Analysis(EMA): Measures and Counter-measures for Smart Cards", Smart Card Programming and Security, Springer Berlin/Heidelberg, vol. 2140, 2001, p. 200-210).
다른 사이드 채널 공격들, 예를 들어, "템플릿 공격"(다음 문헌 참조: S. CHari, J. R. Rao, and P. Rohatgi, "Template Attacks", Kaliski Jr., B.S., Koc, C.K., Paar, C. (eds.) CHES 2002. LNCS, vol. 2523, pp. 172-186. Springer, Heidelberg (2003)), 및 "상호 정보 분석"(MIA)(다음 문헌 참조: B. Gierlichs, L. Batina, P. Tuyls, and B. Preneel, "Mutual Information Analysis", CHES 2008, volume 5154 of LNCS, pages 426-442, Springer, 2008)이 존재한다. 전술한 공격들 모두는 모든 분석된 트레이스들의 시간 정렬에 기초한다. 달리 말하면, 예를 들어, 명령의 실행이 회로에 의해 활성화되는 시간으로부터 소정의 시간에 수행되는 모든 측정치들은 해당 알고리즘에 의해 다루어진 동일한 값에 대응해야 한다.
이러한 회로들 및 이들이 이러한 사이드 채널 공격에 맞서 실행하는 암호 알고리즘들을 보호하기 위해서, 대응 조치들이 일반적으로 제공된다. 이러한 대응 조치들의 하나의 널리 사용되는 패밀리는 이러한 시간 정렬을 막는 것이다. 이를 위해서, 이러한 대응 조치들은 계산 회로들과 속도를 같이하는 클록 주파수에서의 변화들을 도입하거나 더미 클록 사이클 또는 더미 연산들을 도입한다.
특정 전문 지식 및 수많은 시도들에 의해, 특히 재정렬될 아주 많은 수의 트레이스들을 사용하여, 또는 일부 신호 프로세싱을 적용하여, 이러한 시간 정렬을 복구하는 것이 때로 가능하다. 모든 것에도 불구하고, 이러한 시간 정렬을 복구하는 것이 가능하지 않는 경우들도 존재하며, 이로써 트레이스들 내에 존재하는 비밀 데이터 누설이 존재할지라도 사이드 채널 테스트는 실패한다.
다른 대응 조치 패밀리는 거짓 키들에 의해 암호화 방법을 수회 실행하는 것을 수반한다. 이를 위해서, 예를 들어, 암호화 프로그램 또는 코프로세서를 제어하고 암호화 프로그램 또는 코프로세서가 임의의 순서로 거짓 키들을 사용하여 암호화 방법을 수회 실행될 수 있게 하며, 이로써 올바른 키(즉, 맞는 키)를 사용하는 암호화 방법의 실행이 더미 실행 세트 내에서 "은폐"되게 하는 대응 조치 프로그램이 제공된다. 이러한 다중 실행에 의한 대응 조치는 임의의 특정 대응 조치 수단을 포함하지 않는 통상적인 코프로세서로 구현될 수 있다는 이점을 제공한다.
다른 대응 조치 패밀리는 회로에 의해 다루어진 데이터가 그들의 실제 값들과 무관하게 되게 하도록 보호될 알고리즘을 구성시키는 것을 포함한다. "마스킹-타입 대응 조치들"로 지칭되는 이러한 패밀리 내의 특정 대응 조치들은 암호화 방법의 실행 동안에 예를 들어, 키 및/또는 메시지와 같은 보호될 다른 데이터와 결합된 랜덤 마스크(이진수)를 사용한다. 이러한 타입의 대응 조치는 효과적이지만 알고리즘의 수정을 요구하며 이로써 코프로세서에 의한 실행의 경우에는 그의 구현을 위해서 특정하게 제공되는 코프로세서를 요구하거나, 마이크로회로의 CPU 또는 프로그램된 코프로세서에 의한 실행의 경우에는 보다 복잡한 프로그램을 요구한다. 또한, 이러한 타입의 대응 조치는 각각이 각각의 트레이스의 2 개의 부분들을 결합함으로써 획득되는 신호 트레이스들의 세트의 분석에 기초한 이른바 “2차 공격"에 취약하다. 실례로서, 이러한 신호 트레이스들 각각은 복구할 데이터 값 및 랜덤 마스크 값의 결합으로부터 생성되는 데이터와 관련된 누설을 유지하도록 되어 있는 신호 부분 및 랜덤 마스크 값의 누설을 유지하도록 되어 있는 신호 부분을 결합한다. 다음 문헌: E. Prouff, M. Rivain, R. Bevan, "Statistical Analysis of Second Order Differential Power Analysis", IEEE Transactions on Computers, Vol. 58, No. 6, June 2009은 복구할 데이터 값과 관련된 신호 트레이스를 획득하기 위해서 시간 신호 부분들을 결합하기 위한 상이한 방식들을 개시한다. 그러나, 이러한 2차 공격은 결합된 신호 부분들이 결합되기 이전에 엄격하게 시간 정렬되어야 한다는 요건으로 인해서 어려움을 직면한다. 이러한 요건이 충족되지 않으면, 결합된 신호 트레이스들은 통상적인 통계적 분석들에 의해 추출될 수 있는 유용한 정보를 포함하지 않거나, 또는 결합된 신호 트레이스들이 이러한 유용한 정보를 포함하지만, 이러한 정보는 통상적인 통계적 분석들에 의해 추출될 수 없다. 이로써, 2차 공격은 예를 들어, 회로와 보조를 맞추는 클록 사이클의 지속시간이 랜덤하게 변하게 하는 것, 또는 랜덤하게 선택된 시간들에 더미 프로세싱 사이클들 또는 연산들을 도입하는 것과 같은, 모든 종류의 시간 오정렬에 기초한 대응 조치들에 매우 민감하다.
판매될 의도가 있는 보안 집적 회로에 의해 제공된 보안 레벨을 체크하기 위해서, 자격 및/또는 인증 테스트들이 회로가 판매되기 이전에 계획되며, 이러한 테스트들은 특히, 집적 회로에 의해서 취급되는 비밀 데이터를 복구하는 것을 목적으로 하는 사이드 채널 분석 공격들에 대한 집적 회로의 내성을 테스트하는 것을 포함한다. 또한, 사이드 채널 공격에 대한 소프트웨어 프로그램의 내성이 평가되게 하는 테스트들이 존재한다.
따라서, 특히, 전류 소비 트레이스들 또는 회로의 활성도를 나타내는 임의의 다른 물리적 또는 논리적 정량에 대한 임의의 선행 시간 정렬 프로세싱을 요구하지 않으면서 비밀 데이터 누설을 검출할 수 있는, 2차 사이드 채널 공격에 대한 회로 또는 소프트웨어 프로그램의 내성을 테스트하기 위한 방법을 제공하는 것이 바람직하다. 또한, 이러한 방법이 소프트웨어 프로그램 또는 애플리케이션이 실행되는 회로와 무관하게, 소프트웨어 프로그램 또는 애플리케이션의 강성을 테스트할 수 있는 것이 바람직할 수 있다.
또한, 이러한 테스트 방법이 소정의 회로에 의해 실행되는 소프트웨어 또는 회로들의, 사이드 채널 분석들에 대한 내성 및 정보 누설의 측면에서의 그들의 기밀성을 체크하고자 하는 산업용 자격 및/또는 인증 프로세스 내로 통합되는 것이 바람직할 수 있다.
또한, 이러한 테스트 방법을 포함하는 자격 및/또는 검증 프로세스 후에, 집적 회로 또는 소프트웨어 프로그램이 제품에서 사용될 수 있는 것으로 고려되게 하는 대응 조치 수단을 제공하는 것이 바람직할 수 있다.
일부 실시형태들은 회로 테스트 방법에 관한 것이며, 이 방법은 복수의 값 세트들을 취득하는 단계로서, 각 값 세트는 테스트 대상 회로가 동일한 비밀 데이터 에 적용되는 구별된 암호 연산들의 연산 세트 중 하나의 연산을 실행하는 때에 상기 테스트 대상 회로의 활성도(activity)와 관련된, 물리적 정량 또는 로직 신호들의 값들을 포함하는, 상기 취득하는 단계; 각 값 세트 내에서 적어도 제 1 서브세트를 선택하는 단계; 각 값 세트에 대해, 해당 값 세트에 대한 발생 횟수 세트를 형성하도록, 해당 값 세트의 제 1 서브세트의 값들에 적용된 제 1 전사 함수에 의해 변환된 값들의 발생 횟수들을 프로세싱 유닛에 의해 카운팅하는 단계; 상기 연산 세트의 각 연산, 및 상기 비밀 데이터의 부분의 가능한 값들 각각에 대해, 상기 프로세싱 유닛에 의해, 부분적 연산 결과를 컴퓨팅하는 단계; 상기 프로세싱 유닛에 의해, 누적 발생 횟수 세트들 을 컴퓨팅하는 단계로서, 각 누적 발생 횟수 세트는 상기 연산 세트의 연산들에 대응하는 발생 횟수 세트들을 가산함으로써 획득되며, 상기 연산 세트의 연산들은 상기 비밀 데이터의 부분의 가능한 값들 중 동일한 값 또는 균등한 값에 적용되는 때에, 제 2 전사 함수의 적용으로부터 기인되는 동일한 변환된 값을 갖는 부분적 연산 결과를 제공하는, 상기 누적 발생 횟수 세트들을 컴퓨팅하는 단계; 상기 누적 발생 횟수들을 컴퓨팅하기 이전에, 선택된 병합 방식에 따라서, 상기 누적 발생 횟수 세트들 내의 누적 발생 횟수들을 병합하거나, 상기 발생 횟수 세트들 내의 결합 발생 횟수들을 병합하는 단계; 및 상기 비밀 데이터가 상기 값 세트들 내로 누설되었으면, 상기 비밀 데이터가 상기 비밀 데이터의 부분의 값에 대응하는 누적 발생 횟수 세트들 내에서 발견된다는 것을 알면서, 상기 비밀 데이터의 부분을 결정하도록 상기 프로세싱 유닛에 의해 상기 병합된 누적 발생 횟수 세트들을 분석하는 단계를 포함한다.
일 실시형태에 따라서, 상기 방법은 각 값 세트 내에서 적어도 값들의 제 2 서브세트를 선택하는 단계; 각 값 세트 및 각 값 서브세트에 대해, 해당 값 세트의 해당 서브세트에 대한 발생 횟수 세트를 형성하도록, 해당 값 세트의 해당 서브세트의 값들에 적용된 각각의 제 3 전사 함수에 의해 변환된 값들의 발생 횟수들을 상기 프로세싱 유닛에 의해 카운팅하는 단계; 및 각 값 세트에 대해, 해당 값 세트의 값 서브세트들 각각의 발생 횟수들 중 하나를 함께 연관시킨 n-튜플들(n-tuples)을 형성하고, 해당 n-튜플에 의해 연관된 발생 횟수들을 함께 곱함으로써 해당 값 세트의 각 n-튜플에 대한 결합 발생 횟수를 컴퓨팅하고, 해당 값 세트에 대해 컴퓨팅된 결합 발생 횟수들을 포함하는, 해당 값 세트에 대한 발생 횟수 세트를 형성하는 단계를 더 포함한다.
일 실시형태에 따라서, 각 값 세트의 제 1 서브세트 및 제 2 서브세트는 각기 2 개의 구별된 신호들의 측정치들을 포함한다.
일 실시형태에 따라서, 상기 방법은 누적 발생 횟수 세트들의 그룹들에 대한 병합 방식들을 선택하는 단계를 포함하며, 상기 병합 방식들의 선택은 누적 발생 횟수 세트들에서 관측된 패턴들의 함수로서 수행되거나, 누적 발생 횟수 세트들의 그룹들에 적용된 상이한 병합 방식들로 획득된 병합된 누적 발생 횟수 세트들을 분석함으로써 획득된 결과들의 함수로서 수행된다.
일 실시형태에 따라서, 상기 누적 발생 횟수 세트들 중 하나에 적용된 병합 방식은, 상기 누적 발생 횟수 세트 내의 인접하는 누적 발생 횟수들의 그룹들을 함께 병합함으로써, 상기 누적 발생 횟수 세트 내의 누적 발생 횟수들의 수를 나누는 병합 방식들, 상기 누적 발생 횟수 세트 내의 누적 발생 횟수들의 선택된 그룹들을 함께 병합하는 병합 방식들, 선택된 곡선들 또는 선택된 방향을 따라서 연장된 누적 발생 횟수들을 상기 누적 발생 횟수 세트 내에서 함께 병합하는 병합 방식들, 및 일 선택된 방향에 수직인 면들, 또는 선택된 표면들에 따라 연장된 누적 발생 횟수들을 상기 누적 발생 횟수 세트 내에서 함께 병합하는 병합 방식들을 포함하는 리스트에서 선택된다.
일 실시형태에 따라서, 상기 방법은 복수의 구별된 명령들을 상기 테스트 대상 회로에 전송하는 단계로서, 각 명령은 상기 비밀 데이터에 적용된, 상기 연산 세트의 연산들 중 하나의 연산의 상기 테스트 대상 회로에 의한 실행을 트리거하는(triggering), 상기 전송하는 단계; 및 상기 테스트 대상 회로에 의한 각 연산의 실행 동안에, 상기 값 세트들 중 하나의 세트의 값들을 측정 디바이스(MD)에 의해 수집하는 단계를 포함한다.
일 실시형태에 따라서, 상기 값 세트들은, 상기 테스트 대상 회로의 전류 소비 측정치들, 및/또는 상기 테스트 대상 회로에 의해 방출된 전자기 방사의 측정치들, 및/또는 상기 테스트 대상 회로 주변에 존재하는 자기장의 흡수 측정치들, 및/또는 상기 테스트 대상 회로에서 수집된 로직 신호들 또는 디지털 값들을 포함한다.
일 실시형태에 따라서, 상기 제 1 함수 및 제 2 전사 함수 각각은, 항등 함수(identity function), 후속하여 Hamming 가중치에 대응하는 값으로 환원되는 결과 값을 제공하는 함수, 해당 함수가 적용된 값의 Hamming 가중치를 제공하는 함수, 및 해당 함수가 적용된 값과 이에 선행하는 값 간의 Hamming 거리를 제공하는 함수 중 하나이다.
일 실시형태에 따라서, 상기 비밀 데이터의 부분의 가능한 값들 각각에 대한 연산 결과를 컴퓨팅하는 단계, 상기 누적 발생 횟수들을 컴퓨팅하는 단계, 및 상기 누적 발생 횟수들을 분석하는 단계는 상기 비밀 데이터의 이전에 결정된 부분 및 상기 복구될 비밀 데이터의 다른 부분에 대해 수행된다.
일 실시형태에 따라서, 각 값 세트 내의 각 선택된 값 서브세트는, 해당 값 세트의 연속적인 값들, 및/또는 해당 값 세트의 비-연속적인 값들, 및/또는 해당 값 세트의 국부적 극값들, 및/또는 해당 값 세트의 모든 값들을 포함한다.
일 실시형태에 따라서, 상기 연산 세트의 연산들 은 상기 비밀 데이터 에 그리고 입력 데이터의 세트 중 하나의 입력 데이터에 단일 연산을 적용하는 것을 포함하며, 상기 단일 연산은, 대칭적 또는 비대칭적 암호화 또는 복호화 연산, 시그니처 연산, 상기 비밀 데이터만큼의 모듈러 또는 비-모듈러 승산(non-modular multiplication), 상기 비밀 데이터와의 로직 Exclusive OR 연산, 상기 비밀 데이터가 지수로서 사용되는 모듈러 지수 연산, 상기 비밀 데이터가 모듈러스로서 사용되는 모듈러 환원 연산(modular reduction operation), 상기 입력 값을 사용하여 대체 테이블 내에 선택된 값에 의한 대체 연산, 및 상기 비밀 데이터와의 로직 Exclusive OR 연산 및 상기 로직 Exclusive OR 연산의 결과를 사용하여 대체 테이블 내에 선택된 값으로 상기 로직 Exclusive OR 연산의 결과를 대체하는 대체 연산을 조합한 연산 중 적어도 하나를 포함한다.
일 실시형태에 따라서, 상기 누적 발생 횟수들을 분석하는 단계는, 각 누적 발생 횟수 에 대해, 해당 누적 발생 횟수에 누적된 발생 횟수들의 대응하는 개수로 해당 누적 발생 횟수를 나눔으로써 정규화된 누적 발생 횟수를 컴퓨팅하는 단계; 상기 비밀 데이터의 부분의 각 가능한 값 및 상기 변환된 부분적 결과의 각 가능한 값에 대해, 연산들의 횟수로 나누어진, 해당 누적 발생 횟수들의 평균 값과, 상기 비밀 데이터의 부분의 가능한 값 및 상기 변환된 부분적 결과의 가능한 값에 대응하는 각 정규화된 누적 발생 횟수 간의 차들의 제곱의 합을 컴퓨팅하는 단계; 상기 비밀 데이터의 부분의 각 가능한 값에 대해, 상기 변환된 부분적 결과들의 가능한 값들에 대응하는 차 합들의 누계를 컴퓨팅하는 단계; 및 상기 차 합들의 누계들을 서로 비교하고, 상기 비밀 데이터의 부분의 가능한 값에 대한 차 합들의 누계들이 차 합들의 다른 누계들보다 큰지를 결정하는 단계를 포함한다.
일 실시형태에 따라서, 상기 발생 횟수 세트들을 분석하는 단계는, 상기 비밀 데이터의 부분의 각 가능한 값 및 상기 변환된 부분적 결과의 각 가능한 값에 대해, 누적 발생 횟수들의 누계를 컴퓨팅하는 단계; 각 누적 발생 횟수들 에 대해, 대응하는 누계로 누적 발생 횟수들을 나눔으로써 정규화된 누계를 컴퓨팅하고 상기 정규화된 누계의 로그와 상기 정규화된 누계의 곱을 컴퓨팅하는 단계; 상기 비밀 데이터의 부분의 각 가능한 값 및 상기 변환된 부분적 결과의 각 가능한 값에 대해, 상기 비밀 데이터의 부분의 각 가능한 값 및 상기 변환된 부분적 결과의 가능한 값에 대응하는 상기 곱(product)들의 합을 컴퓨팅하는 단계; 및 상기 비밀 데이터의 부분의 각 가능한 값에 대해, 상기 변환된 부분적 결과들의 가능한 값들에 대응하는 곱 합들(product sums)의 누계를 컴퓨팅하는 단계로서, 각 곱 합은 발생 횟수들의 합들의 대응하는 개수 만큼 승산되는, 상기 컴퓨팅하는 단계; 및 상기 곱 합들의 누계들을 서로 비교하고, 상기 비밀 데이터의 부분의 가능한 값에 대한 곱 합들의 누계들 중 하나가 곱 합들의 다른 누계들보다 큰지를 검출하는 단계를 포함한다.
일부 실시형태들은 또한 회로를 테스트하기 위한 시스템에 관한 것이며, 본 회로 테스트 시스템은 복수의 값 세트들 을 취득하도록 구성된 측정 디바이스(MD)로서, 각 값 세트는 테스트 대상 회로 가 동일한 비밀 데이터 에 적용되는 구별된 암호 연산들의 연산 세트 중 하나의 연산 을 실행하는 동안에 상기 테스트 대상 회로 의 활성도와 관련된, 물리적 정량 또는 로직 신호들의 값들을 포함하는, 상기 측정 디바이스; 및 위에서 규정된 방법을 구현하도록 구성된 프로세싱 유닛을 포함한다.
일 실시형태에 따라서, 본 회로 테스트 시스템은 상기 측정 디바이스에 연결되어 상기 테스트 대상 회로의 활성도와 관련된 트레이스들을 획득하는 측정 프로브(probe)를 포함한다.
일 실시형태에 따라서, 본 회로 테스트 시스템은 테스트될 애플리케이션을 실행하는 에뮬레이터(emulator)를 포함한다.
일부 실시형태들은 또한 컴퓨터의 내부 메모리 내에 직접적으로 로딩가능하며 코드 부분들을 포함하는 컴퓨터 프로그램 제품에 관한 것일 수 있으며, 상기 코드 부분들이 상기 컴퓨터에 의해 실행될 시에 상기 코드 부분들은 이전에 규정된 방법의 단계들을 실행하도록 상기 컴퓨터를 구성한다.
오직 예시적 설명을 위해서 제공되는, 본 발명의 실시예들의 일부 실례들은 첨부 도면들을 참조하여서 이하에서 기술될 것이지만, 첨부 도면들로 한정되지는 않는다.
도 1은 보안 회로의 통상적인 아키텍처를 개략적으로 도시한다.
도 2는 집적 회로 테스트 시스템의 실례를 개략적으로 도시한다.
도 3은 보안 회로에 의한 암호화 연산의 실행 동안 획득된 신호의 트레이스들을 나타낸다.
도 4a 및 도 4b는 일 실시예에 따른, 회로 테스트 방법의 단계들을 나타낸다.
도 5는 일 실시예에 따른, 통계적 프로세싱을 수행하도록 컴퓨팅된 히스토그램을 나타낸다.
도 6은 일 실시예에 따른, 통계적 프로세싱을 수행하기 위해 구축된 테이블을 개략적으로 도시한다.
도 7은 다른 실시예에 따른, 회로 테스트 방법의 단계들을 나타낸다.
도 8 및 도 9는 다양한 실시예들에 따른, 테스트 방법에 의해 획득된 값 세트를 통계적으로 분석하기 위한 방법의 단계들을 나타낸다.
도 10 및 도 11은 도 8 및 도 9의 분석 방법들에 의해 제공된 결과 테이블들을 곡선들의 형태로 나타낸다.
도 12a, 도 12b, 및 도 12c는 다양한 실시예들에 따른, 2차원 히스토그램들에서 값들을 병합하는 단계들을 예시한다.
도 13a 및 13b는 다른 실시예에 따른, 2차원 히스토그램들에서 값들을 병합하는 단계들을 예시한다.
도 14a 내지 도 14i는 회로의 누설 모델이 Hamming 가중치에 기초할 때에, 2차원 히스토그램들에서의 상이한 값 분포 패턴들을 나타낸다.
도 15a, 도 15b, 및 도 15c는 다른 실시예들에 따른, 2차원 히스토그램들에서 값들을 병합하는 단계들을 예시한다.
도 1은 보안 회로의 통상적인 아키텍처를 개략적으로 도시한다.
도 2는 집적 회로 테스트 시스템의 실례를 개략적으로 도시한다.
도 3은 보안 회로에 의한 암호화 연산의 실행 동안 획득된 신호의 트레이스들을 나타낸다.
도 4a 및 도 4b는 일 실시예에 따른, 회로 테스트 방법의 단계들을 나타낸다.
도 5는 일 실시예에 따른, 통계적 프로세싱을 수행하도록 컴퓨팅된 히스토그램을 나타낸다.
도 6은 일 실시예에 따른, 통계적 프로세싱을 수행하기 위해 구축된 테이블을 개략적으로 도시한다.
도 7은 다른 실시예에 따른, 회로 테스트 방법의 단계들을 나타낸다.
도 8 및 도 9는 다양한 실시예들에 따른, 테스트 방법에 의해 획득된 값 세트를 통계적으로 분석하기 위한 방법의 단계들을 나타낸다.
도 10 및 도 11은 도 8 및 도 9의 분석 방법들에 의해 제공된 결과 테이블들을 곡선들의 형태로 나타낸다.
도 12a, 도 12b, 및 도 12c는 다양한 실시예들에 따른, 2차원 히스토그램들에서 값들을 병합하는 단계들을 예시한다.
도 13a 및 13b는 다른 실시예에 따른, 2차원 히스토그램들에서 값들을 병합하는 단계들을 예시한다.
도 14a 내지 도 14i는 회로의 누설 모델이 Hamming 가중치에 기초할 때에, 2차원 히스토그램들에서의 상이한 값 분포 패턴들을 나타낸다.
도 15a, 도 15b, 및 도 15c는 다른 실시예들에 따른, 2차원 히스토그램들에서 값들을 병합하는 단계들을 예시한다.
도 1은 예를 들어, 휴대용 매체(HD), 예를 들어, 플라스틱 카드 또는 임의의 다른 매체 상에 배열되거나 또는 단말, 예를 들어, 이동 단말 내에 배치된 보안 집적 회로(CT)를 예시적으로 나타낸다. 보안 집적 회로는 마이크로프로세서(PRC), 입력/출력 회로(IOC), 데이터 및 어드레스 버스에 의해 마이크로프로세서에 연결된 메모리들(M1, M2, M3), 및, 선택사양적으로, 암호 계산 코프로세서(CP1) 또는 산술 가속기, 및 난수 생성기(RGN)를 포함한다. 메모리(M1)는 휘발성 애플리케이션 데이터를 포함하는 RAM-타입("랜덤 액세스 메모리") 메모리이다. 메모리(M2)는 비-휘발성 데이터 및 애플리케이션 프로그램들을 포함하는, 비-휘발성 메모리, 예를 들어, EEPROM 또는 플래시 메모리이다. 메모리(M3)는 마이크로프로세서의 운영 체제를 포함하는 판독 전용 메모리(또는 ROM 메모리)이다.
통신 인터페이스 회로(IOC)는 예를 들어, ISO/IEC 7816 표준에 따른 접촉 타입을 갖거나, 예를 들어, ISO/IEC 14443A/B 또는 ISO/IEC 13693 표준에 따른, 유도 결합을 갖는 무접촉 타입을 갖거나, 전기적 결합에 의한 무접촉 타입(UHF 인터페이스 회로)을 갖거나, 또는 접촉 및 무접촉 타입을 가질 수 있다. 통신 인터페이스 회로(IOC)는 또한 특정 인터페이스를 통해, 다른 회로, 예를 들어, NFC 제어기, 또는 단말, 예를 들어, 이동 단말의 메인 회로 또는 연결된 대상에 연결될 수 있다.
일부 실시형태들에서, 보안 집적 회로(CT)는 암호화 함수에 의해, 자신에게 전송된 메시지의 암호화, 암호해독 또는 서명 연산들을 실행하도록 구성될 수 있다. 이러한 암호화 함수는 회로(CT)의 프로세서(PRC)에 의해 실행되거나, 코프로세서(CP1)와 함께 프로세서(PRC)에 의해 부분적으로 또는 전체적으로 실행될 수 있다.
도 2는 일 실시예에 따른, 테스트 방법을 구현하도록 제공된 집적 회로 테스트 시스템의 실례를 나타낸다. 이 테스트 시스템은 도 1의 보안 집적 회로(CT)를 테스트하도록 구성된다는 것이 예시로서 가정될 것이다.
도 2의 테스트 시스템은 측정 디바이스(MD), 예를 들어, 디지털 오실로스코프에 연결되어, 회로의 활동도와 관련된 트레이스들, 예를 들어, 전류 소비 또는 전자기 신호 변화의 트레이스들을 획득하는 측정 프로브(PB), 및 컴퓨팅 수단, 예를 들어, 개인용 컴퓨터(PC)를 포함한다. 컴퓨터(PC)는 측정 디바이스에 연결되고 테스트 프로그램을 구현한다. 이러한 테스트 프로그램은 특히, 집적 회로와 통신하고 집적 회로에 메시지들을 전송하기 위한 통신 인터페이스 및 프로그램, 신호 프로세싱 프로그램, 및 본 발명에 따른 방법의 계산 단계들을 구현하는 프로그램을 포함한다. 집적 회로가 무접촉 회로인 경우에, 통신 인터페이스는 무접촉 카드 판독기를 포함할 수 있다.
프로브(PB)는 전류 프로브(예를 들어, 집적 회로의 공급 단자(Vcc) 상에 배치된 저항기), 또는 신호 증폭기(AMP)에 의해 측정 디바이스에 연결된 전자기 프로브일 수 있다. 이와 달리, 전류 프로브가 전자기 프로브와 결합될 수 있다. 전자기 방사의 연구는 실제로 연산 시에 보안 집적 회로에 의해 방출된 전자기장이 소비된 전류의 측정치와 같은, 집적 회로 내에서의 비트 스위칭들에 대한 정보를 제공한다고 알리고 있다. 전자기 프로브의 이점은 분석될 필요가 있는 연산을 갖는 회로의 부분 근처에(예를 들어, 마이크로프로세서(PRC)의 코어 또는 암호 계산 코프로세서(CP1)의 코어 근처에) 배치될 수 있다는 것이다.
또한, 무접촉 집적 회로의 경우에, 전류 프로브는 판독기에 의해 방출된 자기장의, 집적 회로에 의한 흡수량을 측정하는 유도성 프로브로 대체될 수 있다. 이러한 유도성 프로브, 예를 들어, 안테나 코일 자체는 분석될 회로 구역들 근처에 배치된 전자기장 프로브와 결합될 수 있다.
따라서, 본원에서, 용어를 단순화하기 위해 사용된, 구 "전류 소비량"은 그의 시간에 따른 변화들이 집적 회로 내측 또는 직접 회로의 분석된 부분 내측에서의 이진 데이터의 스위칭들을 나타내는, 임의의 측정가능한 물리적 정량을 의미하며, 이 물리적 정량은 집적 회로의 단자들에서 또는 집적 회로의 분석된 부분 근처에서 측정될 수 있다. 또한, 물리적 정량은 관심 데이터 기간당 몇몇 포인트들을 수집하도록 충분하게 높은 샘플링 빈도로 샘플링되며, 이로써 실제로 트레이스당 만개에서 수십만개의 포인트들을 포함하는 트레이스들이 획득되지만, 트레이스당 수백만개 값들 또는 그 이상의 값들까지 수집하는 것도 고려될 수 있다.
본원은 또한 소프트웨어 프로그램 또는 애플리케이션을 테스트하는 방법에 관한 것이다. 이러한 경우에, 소프트웨어 프로그램은 테스트 시스템에 의해 직접적으로 실행되거나, 테스트 시스템에 의해 실행된 에뮬레이션 프로그램에 의해 실행될 수 있다. 이로써, 분석된 트레이스들은 예를 들어, 메모리를 액세스를 할 때에 메모리에 전송된 일련의 값들, 회로의 레지스터 내에서 취급되는 데이터, 또는 회로의 통신 인터페이스에 전송된 데이터일 수 있으며, 이러한 전송들은 테스트되는 소프트웨어 프로그램에 의해 제어된다.
테스트 방법의 일부 실시예들이 테스트될 회로가 이하에서 “비밀 데이터”로 지칭되는, 비밀 데이터에 적용되는 연산을 실행하는 동안에 테스트될 회로의 연산을 나타내는, 신호들 또는 디지털 값들의 시간에 따른 변화의 트레이스들에 대한 상세한 검토에 기초한다.
도 3은 테스트 시스템에 의해 획득될 수 있는, 시간에 따른 값들의 트레이스들 C0, C1, … Cix을 나타낸다. 이러한 트레이스들 각각은 테스트될 회로 또는 소프트웨어 프로그램에 의해 연산이 실행되게 함으로써 획득되었다. 트레이스들 C0, C1, … Cix에 대응하는 연산들은 대체적으로 모두가 상이하다. 이러한 연산들은, 예를 들어, 이들이 동일한 함수를 구별된 공지된 입력 데이터, 예를 들어, 암호화되거나 암호해독되거나 또는 서명될 메시지들 또는 검사될 시그니처, 또는 컴퓨팅될 HMAC(keyed-Hash Message Authentication Code)에 적용하는 것을 포함하기 때문에 상이하다. 이와 달리, 공지된 데이터는 그의 입력 데이터이기보다는 함수의 출력 데이터, 또는 이러한 함수의 입력 및 출력 데이터의 일부일 수 있다.
함수는 동일한 비밀 데이터 SD에, 그리고 입력 데이터 M에 적용되는 임의의 함수, 예를 들어, 대칭적 또는 비대칭적 암호화 또는 암호해독 연산, 또는 시그니처 연산, 또는 단지 비밀 데이터만큼의 모듈러 또는 비모듈러 승산(M x SD), 비밀 데이터와의 로직 XOR 함수(Exclusive OR)(M XOR SD), 비밀 데이터가 지수로서 사용되는 모듈러 지수 함수(MSD mod n, n은 알려짐) 또는 비밀 데이터가 모듈러스(modulus)로서 사용되는 모듈러 환원 함수(modular reduction function)(M mod SD)일 수 있다. 함수의 다른 실례는 DES 및 AES 암호 알고리즘들의 경우에서와 같이, 대체 테이블을 사용하여 XOR 연산의 결과를 프로세싱하는 것(SBOX[M XOR SD], SBOX는 대체 테이블임)을 포함한다. 보다 일반적으로, 이러한 함수는 해당 연산으로부터 생성된 값의 일부가 비밀 데이터 및 입력 데이터의 일부에 기초하여 컴퓨팅되게 해야 한다.
도 3의 실례에서, 트레이스들 C0, C1,... Ci,... Cix은 각기 입력(또는 출력) 데이터 M[0], M[1], … M[i], … M[ix]에 대응한다. 트레이스들 Ci 각각은 동일한 테스트 대상 회로에 대해 측정된 동일한 신호로부터 획득된 샘플들로 형성되거나, 또는 테스트 대상 회로가 데이터 M[i]를 조작할 때에 포획된, 상이한 신호들로부터의 샘플들을 포함할 수 있다.
도 4a는 복구될 비밀 데이터에 그리고 또한 알려진 입력 데이터 M[0]... M[ix]에 적용된, 알려졌다고 가정된 암호화 연산 OPRK의 실행 동안에 테스트 시스템에 의해 수집된 값들을 프로세싱하는 단계들(S1 내지 S15)을 나타낸다. 일 실시예에 따라서, 이러한 테스트의 목적은 비밀 데이터의 값이 예를 들어, 도 3의 트레이스들을 형성하는 수집된 값들 내로 누설되는지를 결정하는 것이다. 프로세싱 유닛(PC)이 먼저 단계들(S1 내지 S8)을 실행한다.
단계(S1)에서, 테스트 시스템의 프로세싱 유닛(PC)는 2차원 테이블들 HT1, HT2, 및 입력 데이터 M[0]...M[ix]에 대한 루프의 인덱스 i를 0으로 설정한다. 단계(S2)에서, 프로세싱 유닛(PC)은 테스트될 회로(MCT) 또는 소프트웨어 프로그램에 의한 연산 OPRK의 실행을 활성화시키며, 이러한 연산은 데이터 M[i]를 수신하며, 비밀 데이터가 회로(MCT) 또는 소프트웨어 프로그램에 의한 연산에 제공된다. 단계(S3)에서, 프로세싱 유닛(PC)은 트레이스 Ci를 구성하는 값들을 수집한다. 단계(S4)에서, 트레이스 Ci의 값들의 부분들 EC1i, EC2i가 선택되며, 오직 이러한 부분들만이 다음의 프로세싱 단계들에서 프로세싱된다(도 3). 도 4a의 실례에서, 이러한 부분들 EC1i, EC2i가 단순성을 위해서, 부분 EC1i에 대해 인덱스들 k1 및 k1x, 및 부분 EC2i에 대해 인덱스들 k2 및 k2x에 대응하는 트레이스 Ci의 값들에 의해 그 경계가 정해진다. 실제로, 인덱스들 k1 및 k1x, 및 k2 및 k2x은 트레이스들 Ci 간에 변할 수 있다. 또한, 각 트레이스에서 이로써 선택된 값들은 반드시 연속적이지는 않으며 각 부분 EC1i, EC2i 내의 값들의 개수는 각 트레이스 Ci 내에서 서로 상이할 수 있으며, 트레이스 Ci 간에서 상이할 수 있으며, 이는 종래 기술의 사이드-채널 분석들과 대조적이다. 이로써, 예를 들어, 각 트레이스 Ci에 대한 오직 최대 또는 최소 국부적 값들만을 추출하는 것이 선택될 수 있다. 추출된 부분들 EC1i, EC2i이 전체 트레이스 Ci를 포함할 수 있다는 것도 또한 주목되어야 한다. 다음의 프로세싱에서, 이로써 추출된 데이터는 탐색할 비밀 데이터에 대한 정보의 일부를 포함하는 것으로 가정된다. 각 트레이스 Ci(i = 0 .. ix)는 테스트 대상 회로가 데이터 M[i]를 조작할 때와 동일한 시간에 획득된 상이한 신호들로부터의 샘플 값들을 포함할 수 있다. 이러한 경우에, 부분 EC1i은 예를 들어, 이러한 신호들 중 제 1 신호로부터 추출된 샘플 값들을 포함할 수 있으며, 부분 EC2i은 예를 들어, 이러한 신호들 중 제 2 신호로부터 추출된 샘플 값들을 포함할 수 있다.
단계(S5)에서, 프로세싱 유닛(PC)은 루프 인덱스 j를 0으로 설정한다. 단계(S6)에서, 프로세싱 유닛(PC)은 선택된 포인트 세트 EC1i의 인덱스 j의 포인트 값 EC1i[j]에 전사 함수 F1를 적용하며 인덱스 i 및 함수 F1에 의해 제공된 결과와 동일한 인덱스에 의해 지정된, 테이블 HT1[i] 내의 값을 1 만큼 증분한다. 단계(S7)에서, 인덱스 j는 1 만큼 증분된다. 단계(S8)에서, 인덱스 j는 포인트 세트 EC1i 내의 포인트들의 개수에 대응하는 그의 최대 값(k1x-k1)과 비교되고, 이로써 포인트 세트 EC1i의 모든 값들이 프로세싱되었는지가 결정된다. 포인트 세트 EC1i의 모든 값들이 프로세싱되었다면, 프로세싱 유닛(PC)은 단계들(S9 내지 S12)을 실행하고, 그렇지 않으면, 단계들(S6 내지 S8)을 다시 실행한다. 단계들(S9 내지 S12)은 포인트 세트 EC1i를 프로세싱한 단계들(S5 내지 S8)과 유사한 방식으로 포인트 세트 EC2i를 프로세싱하도록 제공된다. 단계(S9)에서, 프로세싱 유닛(PC)은 루프 인덱스 j를 0로 설정한다. 단계(S10)에서, 프로세싱 유닛(PC)은 선택된 포인트 세트 EC2i 내의 인덱스 j의 포인트 값 EC2i[j]에 전사 함수 F2를 적용하고, 인덱스 i 및 함수 F2에 의해 제공된 결과와 동일한 인덱스에 의해 지정된, 테이블 HT2[i] 내의 값을 1 만큼 증분한다. 단계(S11)에서, 인덱스 j는 1 만큼 증분된다. 단계(S12)에서, 인덱스 j는 포인트 세트 EC2i 내의 포인트들의 개수에 대응하는 그의 최대 값(k2x-k2)과 비교되고, 이로써 포인트 세트 EC2i의 모든 값들이 프로세싱되었는지가 결정된다. 포인트 세트 EC2i의 모든 값들이 프로세싱되었다면, 프로세싱 유닛(PC)은 단계들(S13 및 S14)을 실행하고, 그렇지 않으면, 단계들(S10 내지 S12)을 다시 실행한다. 단계(S13)에서, 인덱스 i가 1 만큼 증분된다. 단계(S14)에서, 인덱스 i가 분석될 트레이스들 Ci의 수에 대응하는 그의 최대 값 ix과 비교된다. 모든 트레이스들 Ci이 프로세싱되었다면, 프로세싱 유닛(PC)은 단계(S15)를 실행하고, 그렇지 않으면, 단계들(S2 내지 S14)을 다시 실행하여 다른 트레이스 Ci를 프로세싱한다. 단계(S15)에서, 테이블들 HT1, HT2은 단계들(S1 내지 S14)의 결과로서 리턴된다.
이러한 방식으로, 일 트레이스 Ci에 대한 테이블들 HT1[i], HT2[i] 각각 내에 기록된 포인트 세트들 EC1i, EC2i의 값들은 함수 F1 또는 F2에 의해 리턴된 각 가능한 값의 발생 횟수를 특정하는 히스트로그램의 형태를 갖는다. 이로써, 포인트 세트들 EC1i, EC2i의 값들과 관련된 시간 특징은 테이블들 HT1[i], HT2[i] 내에 포함되지 않으며: 테이블들 HT1[i], HT2[i]의 콘텐츠는 포인트 세트 EC1i, EC2i의 값들이 수집된 순서가 결정되게 할 수 없다. 함수 F1 및 함수 F2는 서로 동일 또는 상이할 수 있다.
도 5는 함수들 F1, F2을 사용하여 컴퓨팅된 값들(x 축)의 발생 횟수(y 축)의 그래프의 형태로 된 테이블들 HT1, HT2의 실례를 나타낸다. 도 5의 실례에서, 함수들 F1, F2은 0 내지 4 내에 포함된 정수 값을 리턴한다. 단계들(S6 내지 S8)에서, 포인트 세트 EC1i에서, 0과 동일한 4 개의 값들이 카운트되고, 1과 동일한 5 개의 값들이 카운트되고, 2와 동일한 2 개의 값들이 카운트되고, 3과 동일한 6 개의 값들이 카운트되고, 4와 동일한 0 개의 값이 카운트된다. 단계들(S10 내지 S12)에서는, 포인트 세트 EC2i에서, 0과 동일한 2 개의 값들이 카운트되고, 1과 동일한 1 개의 값들이 카운트되고, 2와 동일한 0 개의 값들이 카운트되고, 3과 동일한 7 개의 값들이 카운트되고, 4와 동일한 4 개의 값이 카운트된다. 도 5의 실례에서, 함수 F1 및 함수 F2는 4-비트 인코딩된 값들로부터 컴퓨팅된 Hamming 가중치를 리턴한다.
도 4b는 테이블들 HT1, HT2을 프로세싱하는 단계들(S20 내지 S35)을 나타낸다. 프로세싱 유닛(PC)은 먼저 단계들(S20 내지 S27)을 실행한다. 단계(S20)에서, 프로세싱 유닛(PC)은 인덱스 i 및 4차원 테이블 CH을 0으로 설정한다. 단계(S21)에서, 프로세싱 유닛(PC)은 인덱스 g을 0로 설정한다. 단계(S22)에서, 프로세싱 유닛(PC)은 연산 OPR을 데이터 M[i]에 적용하고 인덱스 g와 동일하게 설정된, 결정될 비밀 데이터 SD의 부분에 적용한다. 연산 OPR(M, g)은 단계(S2)에서 실행된 연산 OPRK(M)(=OPR(M, SD))의 결과의 부분을 제공하도록 된다. 연산 OPR에 의해 제공된 결과는 값 VL을 제공하는 전사 함수 F3에 의해 프로세싱된다. 단계들(S23 및 S24)에서, 프로세싱 유닛(PC)은 각기 인덱스들 l1 및 l2을 0으로 설정한다. 단계(S25)에서, 프로세싱 유닛(PC)은 인덱스들 g, VL, l1 및 l2에 의해 지정된 위치에서 테이블 CH 내에 저장된 값을, 포인트 세트 EC2i에 대응하는 테이블 HT2[i] 내의 인덱스 l2에서의 값 HT2[l2,i]과 포인트 세트 EC1i에 대응하는 테이블 HT1[i] 내의 인덱스 l1에서의 값 HT1[l1,i] 간의 곱만큼 증분한다. 단계(S26)에서, 인덱스 l1는 1 만큼 증분된다. 단계(S27)에서, 인덱스 l1는 함수 F1에 의해 제공된 가능한 구별된 값들의 수를 고려한 그의 최대 값 l1x과 비교된다. 인덱스 l1가 그의 최대 값 l1x과 같거나 작으면, 단계들(S25 내지 S27)이 테이블 HT1[i]의 다른 값을 프로세싱하기 위해서 다시 실행되며, 그렇지 않으면(인덱스 l1가 그의 최대 값 l1x보다 크면), 단계들(S28 및 S29)이 실행된다. 단계(S26)에서, 인덱스 l1가 1 만큼 증분된다. 단계(S28)에서, 인덱스 l2는 함수 F2에 의해 제공된 가능한 구별된 값들의 수를 고려한 그의 최대 값 l2x과 비교된다. 인덱스 l2가 그의 최대 값 l2x과 같거나 작으면, 단계들(S24 내지 S29)이 테이블 HT2[i]의 다른 값을 프로세싱하기 위해서 다시 실행되며, 그렇지 않으면(인덱스 l2가 그의 최대 값 l2x보다 크면), 단계들(S30 및 S31)이 실행된다.
단계(S30)에서, 프로세싱 유닛(PC)은 인덱스 g를 1 만큼 증분한다. 단계(S31)에서, 프로세싱 유닛(PC)은 인덱스 g를 비밀 데이터의 고려된 부분에 대한 가능한 구별된 값들의 개수를 고려한, 그의 최대 값 gx과 비교한다. 인덱스 g가 최대 값 gx보다 작거나 같으면, 단계(S22) 내지 단계(S31)가 새롭게 반복되어 인덱스 g의 다른 값을 프로세싱하고, 그렇지 않으면(인덱스 g가 그의 최대 값 gx보다 크면), 단계들(S32 및 S33)이 반복된다. 단계(S32)에서, 프로세싱 유닛(PC)은 인덱스 i를 1 개의 트레이스 만큼 증분시킨다. 단계(S33)에서, 프로세싱 유닛(PC)은 인덱스 i를 분석될 트레이스들 Ci의 개수와 대응하는 그의 최대 값 ix와 비교한다. 인덱스 i가 최대 값 ix과 같거나 작으면, 단계들(S21 내지 S33)이 다시 실행되어 다른 트레이스 Ci에 대해 컴퓨팅된 다른 테이블들 HT1[i], HT2[i] 을 프로세싱하고, 그렇지 않으면(인덱스 i가 그의 최대 값 ix보다 크면), 단계(S34)가 실행된다. 단계(S34)에서, 테이블 CH 내의 위치[g,VL]에 이로써 포함된 누적 2차원 히스토그램들의 각 테이블 CH[g,VL]이 다음의 값들을 포함한다:
위의 합산에서 고려될 데이터 M[i]는 F3(OPR(M[i], g))= VL이 되도록 된다.
단계(S34)에서, 프로세싱 유닛(PC)은 인덱스 g의 값이 탐색될 비밀 데이터의 부분에 대응하는지를 결정하고자 누적 히스토그램들의 테이블 CH의 통계적 분석을 수행한다. 이를 위해서, 비밀 데이터의 누설로부터 발생하는 정보가 테이블 CH의 열 g의 위치들에서 누적되는 반면, 비밀 데이터와는 무관한 정보가 테이블 CH 내에서 랜덤하게 또는 균일하게 분포한다고 고려된다. 결과적으로, 테이블 CH의 인덱스 g의 열이 이러한 테이블의 나머지 부분의 값들보다 높은 값들을 포함하면, 테이블 CH의 이러한 열에서의 인덱스 g의 값은 탐색된 비밀 데이터 SD의 부분의 값과 대응한다. 이러한 경우에, 비밀 데이터 SD가 트레이스들 Ci을 형성하는 수집된 데이터의 부분들 EC1i, EC2i 내로 누설되었다고 간주될 수 있다.
도 5는 단계(S25)에서 일 트레이스 Ci에서 컴퓨팅된 히스토그램들 HT1[i], HT2[i]의 곱 HT1[i] * HT2[i]으로부터 기인되는 테이블 HT[i]의 콘텐츠를 나타낸다. 이러한 방식으로, 일 트레이스 Ci에 대해, 테이블 HT[i] 내에 기록된 값들은 각 가능한 쌍(HT1[a,i], HT2[b,i])의 발생 횟수를 특정하는 2차원 히스토그램의 형태를 가지며, 각 쌍의 일 값 HT1[a,i]은 테이블 HT1[i]로부터이며 다른 값 HT2[b,i]은 테이블 HT2[i]로부터이며, 여기서 a는 0 내지 l1x(본 실례에서 = 4) 간에 존재하며, b는 0 내지 l2x(본 실례에서는 = 4) 간에 존재한다.
도 6은 인덱스들 g 및 VL에 지정된 각 위치 CH[g,VL]가 단계(S22)에서 획득된 값 VL에 따라서, 몇몇 히스토그램들 HT[i] (= HT1[i] * HT2[i])을 누적함으로써 획득된 2차원 히스토그램을 포함하는, 누적 히스토그램들의 테이블 CH의 구조의 실례를 나타낸다.
함수 F1, 함수 F2 및 함수 F3는 선택된 트레이스 부분들 EC1i, EC2i에 대응하는, 테스트될 회로 부분들 또는 소프트웨어 프로그램 부분들의 누설 패턴들에 대응하도록 선택될 수 있다. 따라서, 함수 F1, 함수 F2 및 함수 F3는 서로 동일 또는 상이할 수 있으며, 회로에 의해 조작된 비밀 데이터를 복구할 가능성을 최대화하도록 선택될 수 있다. 예를 들어, 함수 F1, 함수 F2 및 함수 F3는 다음의 함수들 중 하나일 수 있다:
- 항등 함수(identity function),
- 예를 들어, x가 8 비트로 인코딩되는 때에 값 0 내지 값 8인, Hamming 가중치에 대응하는 값으로 환원될 수 있는 결과적인 값을 갖는, 함수(예를 들어, F(x)= a·x + b의 형태임),
- 예를 들어, 이진 코딩된 값 1에서 비트 수인, 함수의 입력에 제공된 값의 Hamming 가중치를 컴퓨팅하는 함수, 또는
- 예를 들어, 이러한 2 개의 값들 중 1에서 비트 수들 간의 차인, 다른 값과의 Hamming 거리를 컴퓨팅하는 함수.
함수 F1, 함수 F2 및 함수 F3 중의 선택은 비밀 데이터의 고려된 부분을 결정하도록 수행될 누적 히스토그램들의 테이블 CH의 통계적 프로세싱의 복잡도, 및 탐색된 비밀 데이터의 부분의 값을 결정하기 위한 통계적 프로세싱의 성공 양자를 영향을 준다는 것이 주목될 수 있다.
단계들(S1 내지 S15 및 단계 S20 내지 S34)을 실행함으로써 탐색된 비밀 데이터의 부분은 예를 들어, 8 또는 16 비트로 규정될 수 있다. 8 비트로, 인덱스 g는 0 내지 255(또는 1 내지 256=28) 간의 모든 값들에 연속적으로 할당된다. g의 값들이 테스트되는 순서는 테스트의 결과에 있어서 중요하지 않다는 것이 주목될 수 있다. 탐색된 비밀 데이터의 부분은 또한 16, 32 또는 64 비트와 같은, 보다 넓은 워드로 규정될 수도 있다.
비밀 데이터 SD의 다른 부분은 비밀 데이터의 이전에 결정된 부분들의 값들을 사용하여서 단계들(S20 내지 S34)을 실행함으로써, 그리고 비밀 데이터의 다른 부분을 인덱스 g의 상이한 가능한 값들로 되게 함으로써 결정될 수 있다. 이를 위해서, 트레이스들 Ci의 동일한 부분들 EC1i, EC2i 또는 이러한 트레이스들의 다른 부분들이 단계(S4)에서 추출될 수 있다.
트레이스들 Ci를 형성하는 값 세트들은 도 4에서 다른 단계들을 실행하기 이전에 수집될 수 있다(단계들(S2 및 S3))는 것이 주목될 수 있다. 또한, 다른 트레이스 Ci로 모든 이러한 단계들을 실행하기 이전에, 단계들(S1 내지 S15 및 단계 S20 내지 S34)은 트레이스들 Ci 각각에 대해 구성될 수 있다.
비밀 데이터 SD 및 입력 데이터 M[i]에 적용된 연산 OPR/OPRK은 다음의 연산들 중 하나 또는 이들의 조합일 수 있다:
- 대칭적 또는 비대칭적 암호화 또는 암호해독 연산, 여기서 비밀 데이터 SD는 암호화 또는 복호화 키임,
- 비밀 데이터 SD를 사용하는 시그니처 연산(signature operation),
- 비밀 데이터만큼의 모듈로 또는 비-모듈러 승산(M[i] x SD),
- 비밀 데이터와의 XOR 로직 연산(Exclusive OR)(M[i] XOR SD),
- 모듈러 지수 연산, 여기서 비밀 데이터 SD는 지수로서 사용됨(M[i]SD mod n, n은 알려짐),
- 모듈러 환원 연산, 여기서 비밀 데이터 SD는 모듈러스로서 사용됨(M[i] mod SD),
- 입력 데이터를 사용하여 대체 테이블 내에 선택된 값에 의한 대체 연산(SBOX[M[i]], SBOX는 대체 테이블임), 및
- 비밀 데이터에 적용된 XOR 로직 연산과 XOR 연산의 결과를 사용하여 대체 테이블 내에 선택된 값으로 상기 로직 연산의 결과를 대체하는 대체 연산을 결합한 연산(SBOX[M[i] XOR SD]).
보다 일반적으로, 이러한 연산은 연산의 최종 값의 부분이 비밀 데이터 및 입력 데이터의 부분에만 기초하여 컴퓨팅되게 하여야 한다.
비밀 데이터에 대한 누설 정보에 대응하는 누적된 값들을 강조하기 위해서, 모든 테이블들 HT[i] (HT1[i] * HT2[i])의 콘텐츠들은 함수 F1 및 함수 F2에 의해 리턴된 각 가능한 값에 대한 누적 발생 횟수의 테이블을 획득하도록 서로 가산될 수 있다. 누계들의 이러한 테이블의 값들은 테이블의 위치들 CH[g,VL]에서 누적된 모든 테이블들로부터 감산된다. 따라서, 도 4b의 단계들(S20 내지 S34)의 시퀀스는 도 7에서 표현된 시퀀스에 따라서 수정될 수 있다. 도 7에서 도시된 단계들은 상술한 단계들(S20 내지 S34), 및 추가 단계들(S36, 및 S37)을 포함한다. 단계(S20)에서, 2차원 테이블들 HT1[0..ix,0..l1x] 및 HT2[0..ix,0..l2x]은 모든 트레이스들 Ci에 대해 단계들(S6 및 S10)에서 생성된 모든 테이블들을 포함할 시에 이전에 채워졌다. 이와 달리, 단일 3차원 테이블 HT[0..ix,0..l1x,0..l2x]이 곱들 (HT1[i] * HT2[i])로부터 컴퓨팅된다. 단계(S20)에서, 2 개의 2차원 테이블들 MHT, CPT이 0으로 더 설정된다.
단계(S36)이 인덱스들 l1, l2에 의해 제어된 루프(단계들(S25 및 S26)) 내로 삽입되며, 이로써 예를 들어, 단계(S25) 이후에, 함수들 F1, F2에 의해 제공된 값들 중 하나를 선택하는 것이 가능하다. 단계(S36)에서, 프로세싱 유닛(PC)은 인덱스들 l1, l2에 의해 지정된 위치에서 누계들 MHT의 테이블 내에 각 값 HT[i,l1,l2] (= HT1[I,l1] * HT2[I,l2])을 누적시킨다. 이러한 방식으로, 프로세싱의 종료 시에, 테이블 MHT은 트레이스들 Ci 각각에 대해 획득된 인덱스 i의 모든 값들 HT[i,l1,l2]의 합을 포함할 것이다. 단계(S37)는 예를 들어, 단계(S29) 이후에 인덱스 g에 의해 제어된 루프의 각 반복 시에 한번 실행된다. 단계(S37)는 테이블 CH의 각 위치 CH[g,VL]에서 누적된 테이블들 HT[i,l1,l2]의 수가 카운트되게 한다. 이러한 카운트 결과가 테이블 CPT 내에 저장된다.
도 8은 탐색된 비밀 데이터 SD의 부분의 값을 결정하고자 하는 누적 히스토그램들의 테이블 CH의 통계적 프로세싱의 실례의 단계들(S40 내지 S55)을 나타낸다. 단계들(S40 내지 S47)은 연속적으로 실행된다. 단계(S40)에서, 인덱스 VL는 0로 설정되며, 테이블 TT의 모든 위치들은 1로 설정된다. 단계(S41)에서, 인덱스 g 및 테이블 IT의 모든 위치들은 0으로 설정된다. 단계들(S42, S43)에서, 인덱스들 l1 및 l2가 각기 0으로 설정된다. 단계(S44)에서, 변수 T는 인덱스들 g, VL, l1 및 L2d에 의해 선택된, 테이블 CH 내에 포함된 값 CH[g,VL,l1,l2]을 수신하고, 이러한 값은 테이블 CPT 내의 위치 CPT[g,VL]에 위치한 카운트 값으로 나누어진다. 단계(S45)에서, 테이블 IT 내의 위치 g에서의 값 IT[g]이 인덱스들 l1 및 l2에 의해 지정된, 테이블 MHT 내에 저장된 값 MHT[l1,l2]과 변수 T의 값 간의 차를 트레이스들 Ci의 총수 i로 나눈 결과의 제곱만큼 증분된다. 단계(S46)에서, 인덱스 l2가 1 만큼 증분된다. 단계(S47)에서, 인덱스 l2가 그의 최대 값 l2x과 비교된다. 인덱스 l2가 그의 최대 값 l2x에 도달하면, 단계들(S48 내지 S49)이 실행되며, 그렇지 않으면, 새로운 반복이 단계(S44)로부터 실행된다. 단계(S48)에서, 인덱스 l1가 1 만큼 증분된다. 단계(S49)에서, 인덱스 l1가 그의 최대 값 l1x과 비교된다. 인덱스 l1가 그의 최대 값 l1x에 도달하면, 단계들(S50 내지 S52)이 실행되며, 그렇지 않으면, 새로운 반복이 단계(S43)로부터 실행된다.
단계(S50)에서, 테이블 TT 내의 인덱스 g에 의해 지정된 값 TT[g]이 lx 회 실행된, 단계들(S44 내지 S45)에서 컴퓨팅된 값 IT[g] 만큼 승산됨으로써 업데이트된다. 단계(S51)에서, 인덱스 g는 1 만큼 증분된다. 단계(S52)에서, 인덱스 g는 그의 최대 값 gx과 비교된다. 인덱스 g가 그의 최대 값 gx보다 크면, 단계들(S53 및 S54)이 실행되며, 그렇지 않으면, 단계(S42)로부터의 새로운 반복이 실행된다. 단계(S53)에서, 인덱스 VL이 1 만큼 증분된다. 단계(S54)에서, 인덱스 VL가 그의 최대 값 VLx과 비교된다. 인덱스 VL가 그의 최대 값 VLx보다 크면, 단계(S55)가 실행되고, 그렇지 않으면, 단계(S41)로부터의 새로운 반복이 실행된다. 단계(S55)에서, 테이블 TT은 통계적 분석의 결과로서 리턴된다.
따라서, 단계들(S41 내지 S54)을 포함하는 프로세싱 루프의 마지막 반복 시에, 테이블들 IT 및 TT은 다음의 값들을 포함한다:
여기서,
여기서, 연산자 "=="는 상등이 참이면 1과 동일하고 상등이 거짓이면 0과 동일한 상등 테스트(equality test)를 나타내며, 테이블 IT은 인덱스 VL의 각 새로운 값에 대해, 단계(S40)에서 0으로 설정되고, 단계(S45)에서 로딩된다.
따라서, CPT[g,VL]는 조건(F2(OPR(M[i], g))== VL)이 참인 횟수를 나타낸다. 비밀 데이터 SD가 연산 OPRK을 실행할 시에 누설되었으면, 테이블 TT의 위치는 이러한 테이블 내에 저장된 다른 값들보다 매우 높은 값을 포함한다. 그 결과는 탐색된 비밀 데이터 SD의 부분이 테이블 TT 내의 최고 값의 인덱스 g와 동일하다는 것이다.
테이블 IT의 값들이 등식(3)에 대응하는 단계(S50)에서 승산되기보다는 가산될 수 있다는 것이 주목될 수 있다. 승산 연산 구현은 단지 테이블 TT의 값들 간의 차들이 증가되게 하며, 이로써 탐색된 비밀 데이터의 부분에 대응하는 최고 값이 보다 양호하게 강조되게 한다. 로그 함수를 테이블 IT의 값들에 적용하고 획득된 로그 값들의, 테이블 TT 내에서의 가산 누적(additive accumulation)을 수행하는 것을 고려하는 것이 또한 가능하다. 테이블 IT의 값들이 가산되면, 이들은 다음과 같이 가중화될 수 있다:
도 9는 탐색된 비밀 데이터 SD의 부분의 값을 결정하고자 시도하는 누적 히스토그램들의 테이블 CH의 통계적 프로세싱의 다른 실례의 단계들(S60 내지 S81)을 나타낸다. 이러한 프로세싱은 샤론 엔트로피 함수에 기초한다. 단계들(S60 내지 S6)은 연속적으로 실행된다. 단계(S60)에서, 인덱스 g가 0으로 설정되며, 테이블 TT의 모든 위치들이 0으로 설정된다. 단계(S61)에서, 인덱스 VL가 0으로 설정되며, 인덱스 l 및 변수 SXY가 0으로 설정된다. 단계들(S62 및 S63)에서, 인덱스들 l1, l2가 각기 0으로 설정된다. 단계(S64)에서, 변수 SXY가 인덱스들 g, VL, l1, 및 l2에 의해, 테이블 CH 내에 선택된 값 CH[g,VL,l1,l2] 만큼 증분된다. 단계(S65)에서, 인덱스 l2가 1 만큼 증분된다. 단계(S66)에서, 인덱스 l2가 그의 최대 값 l2x과 비교된다. 인덱스 l2가 그의 최대 값 l2x에 도달하였으면, 단계들(S67 및 S68)이 실행되며, 그렇지 않으면, 단계(S64 내지 단계(S66)로부터의 새로운 반복이 실행된다. 단계(S67)에서, 인덱스 l1이 1 만큼 증분된다. 단계(S68)에서, 인덱스 l1가 그의 최대 값 l1x과 비교된다. 인덱스 l1가 그의 최대 값 l1x에 도달하면, 단계들(S69 내지 S74)이 실행되며, 그렇지 않으면, 단계(S63 내지 S68)로부터의 새로운 반복이 실행된다.
단계(S69)에서, 인덱스 l1 및 변수 PXY가 0으로 설정된다. 단계(S70)에서, 인덱스 l2가 0으로 설정된다. 단계(S71)에서, 변수 VXY는 인덱스들 g, VL, l1 및 l2에 의해 테이블 CH 내에 선택된 값 CH[g,VL,l1,l2]을 수신하며, 이러한 값은 단계들(S63 내지 S68)의 반복들에 의해 컴퓨팅된 변수 SYX로 나누어진다. 단계(S72)에서, 변수 PXY는 변수 VXY의 로그(예를 들어, 베이스 2)와 변수 VXY 간의 곱만큼 증분된다. 단계(S73)에서, 인덱스 l2가 1 만큼 증분된다. 단계(S74)에서, 인덱스 l2가 그의 최대 값 l2x과 비교된다. 인덱스 l2가 그의 최대 값 l2x에 도달하였으면, 단계들(S75 및 S76)이 실행되며, 그렇지 않으면, 단계들(S71 내지 S74)로부터의 새로운 반복이 실행된다. 단계(S75)에서, 인덱스 l1가 1 만큼 증분된다. 단계(S76)에서, 인덱스 l1가 그의 최대 값 l1x과 비교된다. 인덱스 l1가 그의 최대 값 l1x에 도달하였으면, 단계들(S77 및 S79)이 실행되며, 그렇지 않으면, 단계들(S70 내지 S76)로부터의 새로운 반복이 실행된다.
단계(S77)에서, 테이블 TT 내의 인덱스 g에 의해 지정된 값 TT[g]이 이 값으로부터, 변수 PXY와 트레이스들 Ci의 수 ix로 나누어진 값 CPT[g,VL] 간의 곱을 감산함으로써 업데이트되며, 상기 값 CPT[g,VL]은 단계(S37)에서 채워진 테이블 CPT 내에서 인덱스들 g 및 VL에 의해 지정된다. 단계(S78)에서, 인덱스 VL가 1 만큼 증분된다. 단계(S79)에서, 인덱스 VL가 그의 최대 값 VLx과 비교된다. 인덱스 VL가 그의 최대 값 VLx보다 크면, 단계들(S80 및 S81)이 실행되며, 그렇지 않으면, 단계(62) 내지 단계(79)로부터의 새로운 반복이 실행된다. 단계(S80)에서, 인덱스 g가 1 만큼 증분된다. 단계(S81)에서, 인덱스 g가 그의 최대 값 gx과 비교된다. 인덱스 g가 그의 최대 값 gx보다 크면, 단계(S82)가 실행되고, 그렇지 않으면, 단계(S61) 내지 단계(81)로부터의 새로운 반복이 실행된다. 단계(S82)에서, 테이블 TT이 통계적 분석의 결과로서 리턴된다.
따라서, 단계(S78) 후의, 마지막 반복 시에, 테이블 TT은 다음의 값들을 포함한다:
여기서, , 및 는 인덱스들 g 및 VL의 값들 각각에 대해서 컴퓨팅되며, 인덱스 g의 각 값은 탐색된 키의 부분의 가능한 값을 나타낸다. 비밀 데이터 SD가 연산 OPRK을 프로세싱할 때에 누설되었으면, 테이블 TT의 위치는 이러한 테이블에 저장된 다른 값들보다 매우 높은 값을 포함한다. 그 결과는 탐색된 비밀 데이터 SD의 부분이 테이블 TT 내의 최고 값의 인덱스 g와 동일하다는 것이다.
도 10 및 도 11은 인덱스 g의 함수로서의 테이블 TT의 콘텐츠의 실례를 곡선들 CC1, CC2의 형태로 나타낸다. 곡선 CC1은 도 8의 단계들을 실행함으로써 획득되었으며, 곡선 CC2는 도 9의 단계들을 실행함으로써 획득되었다. 도 10 및 도 11의 실례에서, 인덱스 g는 1 바이트의 길이를 가지며(이로써, 0 내지 255 간에서 변함), 곡선들 CC1 및 CC2은 500,000의 차수의 개수의 트레이스들 Ci로부터 획득되었다. 곡선들 CC1 및 CC2은 테이블 TT 내에 포함된 다른 값들과 비교하여 값 g = 168에서 명확한 피크를 갖는다. 곡선 CC1에서의 피크 값은 테이블 TT의 다른 값들의 약 30 배보다 크다. 곡선 CC2에서, 피크 값은 테이블 TT의 다른 값들의 3 배보다 크다. 테이블 CH의 통계적 프로세싱에 따라서, 분석된 트레이스들 Ci의 개수를 증가시킴으로써, 가장 근사 값의 0.9배보다 큰 값으로 유지되는 피크 값이 획득되면, 탐색된 비밀 데이터의 부분이 누설된다고 고려될 수 있다.
회로들 예를 들어, 집적 회로들이 알려진 자격 또는 검증 절차를 성공적으로 통과할 수 있도록, 이러한 회로들의 설계자들은 대응 조치들을 제공하는데, 이러한 대응 조치들 중 가장 통상적인 것은 시변수(time variable)를 도입하는 것을 수반한다. 테이블들 HT1, HT2 내의 값들의 계산은 시간 측면이 분석된 값들로부터 제거되게 하고 분석된 값들의 상이한 트레이스들을 동기화시켜야 하는 것 또는 시간상 정렬시켜야 하는 것을 피한다. 탐색된 비밀 데이터에 대한 정보가 분석된 데이터 내에 있다면, 이전에 기술한 테스트 방법은 비밀 데이터의 전부 또는 일부가 결정되게 할 수 있다. 따라서, 이전에 기술된 테스트 방법은 회로에 의해 조작된 비밀 데이터가 회로의 외측으로부터 획득될 수 있는 신호들 내로 누설되는지의 여부를 검출할 수 있다.
이전에 기술된 테스트 방법은 각 트레이스 Ci의 2 개의 부분들 EC1i, EC2i을 결합하기 때문에, 차수 2를 갖는다. 이러한 테스트 방법은 트레이스들 Ci 각각 내에서 또는 동일한 실행으로부터 획득된 상이한 트레이스들 내에서 n 개의 부분들 EC1i 내지 ECni을 선택하고, 각 트레이스 Ci의 각 부분 ECki(k는 1 내지 n임)의 일 값을 함께 연관시킨 각 가능한 상이한 n-튜플을 고려하여 본 테스트 방법을 구성함으로써 2보다 큰 n인 n 차로 구성될 수 있다. 차수 n의 이러한 테스트 방법은 테이블 CH 내에 누적 n차원 히스토그램들 CH[g,VL)을 생성할 것이다.
단계(S34)(도 4b 및 도 7) 이후에 그리고 단계(S40)(도 8) 또는 단계(S60) (도 9) 이전에, 누적 히스토그램들의 테이블 CH은 하나 이상의 병합 방식들에 따라서, 각 누적 히스토그램 CH[g,VL] 내의 셀들을 병합하는 단계를 포함하는 사전프로세싱 단계를 받을 수 있다. 병합 방식들은 각 히스토그램의 저감된 수의 셀들 내로 유용한 데이터를 "집중"시키기 위해서 선택된다. 실제로, n차원 히스토그램들 (n = 2 이상임)의 생성은 히스토그램들의 대체적으로 인접하는, 몇몇 셀들로 유용한 정보를 분산시키는 경향을 갖는다. 서로 병합된 셀들 내에 저장된 값들은 서로 가산된다. 이러한 셀 병합 연산은 도 6에 도시된 구조를 갖는 누적 히스토그램들의 새로운 테이블을 낳으며, 이러한 구조에서 각 셀 CH[g,VL]은 병합된 히스토그램을 저자장한다. 이어서, 단계들(S40-S55) 또는 단계들(S60-S82)이 새로운 테이블에 적용될 수 있으며, 프로세싱될 값들의 수는 셀 병합 연산으로 인해 저감된다.
셀 병합 연산은 테이블 CH 내로 누적되기 이전에(단계(S25) 이전에), 2D 히스토그램들 HT = HT1 x HT2에 대해 수행될 수 있다는 것이 주목되어야 한다. 다른 병합 연산들은 단계(S25) 이전에 히스토그램들 HT1, HT2에 대해 직접적으로 수행될 수 있다.
도 12a, 도 12b, 및 도 12c는 테이블 CH에 적용된 셀 병합 방식들의 다양한 실례들을 예시한다. 도 12a, 도 12b, 및 도 12c 각각은 테이블 CH 내에 누적된 일 2차원 히스토그램 CH[g,VL], 및 히스토그램의 셀들 내의 포인트들을 나타낸다. 히스토그램 CH[g,VL]의 각 셀 내의 포인트들의 수는 해당 셀에 누적된 유용한 데이터의 수에 대응한다.
도 12a, 및 도 12b에서, 셀 병합 연산은 테이블 CH 내의 히스토그램들 CH[g,VL] 각각 내의 인접하는 셀들의 정가각형(square)들에 적용되어, 정사각형 내에서 인접하는 셀들의 고려된 수로 나누어진 셀들의 수를 갖는 새로운 히스토그램 CH1[g,VL], CH2[g,VL]을 형성한다. 병합된 셀들 내에 저장된 값들은 서로 가산된다. 도 12a에서, 2x2, 2x3 또는 3x3 개의 인접하는 셀들의 그룹들은 결과적인 히스토그램 CH1[g,VL] 내의 일 셀로 병합된다. 도 12b에서, 4x4, 4x5 또는 5x5 개의 인접하는 셀들의 그룹들은 결과적인 히스토그램 CH2[g,VL] 내의 일 셀로 병합된다. 도 12a 및 도 12b의 실례에서, 히스토그램 CH[g,VL]은 9x9 개의 셀들을 포함하고, 히스토그램 CH1[g,VL]은 4x4 개의 셀들을 포함하고, 히스토그램 CH2[g,VL]은 2x2 개의 셀들을 포함한다.
도 12c에서, 병합될 셀들은 히스토그램 CH[g,VL] 내의 특정 분포에 따라서 선택된다. 결과적인 히스토그램 CH3[g,VL]은 제 1 셀 및 제 2 셀을 포함하며, 제 1 셀은 히스토그램 CH[g,VL]의 선택된 셀들을 결합하며, 제 2 셀은 히스토그램 CH[g,VL]의 모든 다른 셀들을 결합한다. 선택된 셀들의 분포는 반드시 정방형 또는 직사각형 형상을 가질 필요는 없으며, 선택된 셀들은 반드시 인접하는 것은 아니다.
도 13a, 및 도 13b는 2차원 히스토그램들 CH[g1,VL1], CH[g2,VL2]에 적용되어 병합된 히스토그램들 CH4[g1,VL1], CH4[g2,VL2]을 제공하는 다른 셀 병합 방식을 예시한다. 이러한 병합 방식에 따라서, 셀들은 1차원 히스토그램으로 병합되며, 병합될 셀들은 히스토그램 CH[g,VL]의 인접하는 셀들을 포함하는 정사각형의 대각에 평행한 병합 방향에 따라서 배열된다. 이로써, 도 13a의 실례에서, 히스토그램 CH[g1,VL1]의 셀들(열=0, 행=0) 및 (3,3)이 다른 셀들과 병합되며 결과적인 히스토그램 CH4[g1,VL1] 내의 셀들(0) 및 (6)에 각기 대응한다. 셀들(0,1) 및 (1,0)은 히스토그램 CH4[g1,VL1]의 셀(1)로 병합된다. 셀들(0,2), (1,1) 및 (2,0)은 히스토그램 CH4[g1,VL1] 셀(2)로 병합된다. 셀들(0,3), (1,2), (2,1) 및 (3,0)은 히스토그램 CH4[g1,VL1]의 셀(4)로 병합된다. 셀들(1,3), (2,2) 및 (3,1)은 히스토그램 CH4[g1,VL1]의 셀(4)로 병합된다. 셀들(2,3) 및 (3,2)은 히스토그램 CH4[g1,VL1]의 셀(5)로 병합된다.
도 13a의 셀 병합 방식은 일 2차원 히스토그램 CH[g1,VL1] 내의 데이터들이, 이러한 데이터들이 일 병합 방향을 따라 분포되는 때에, 더 적은 셀들로 집중되게 한다. 도 13b는 도 13a의 셀 병합 방식에 따라 병합될 히스토그램 CH[g2,VL2], 및 결과적인 히스토그램 CH4[g2,VL2]을 나타낸다. 히스토그램 CH[g2,VL2]의 모든 비-제로 셀들, 즉, 셀들(1,4), (2,3), (3,2) 및 (4,1)은 병합 방향을 규정하는, 히스토그램의 대각선을 따라서 위치한다. 따라서, 셀들(1,4), (2,3), (3,2) 및 (4,1)은 결과적인 히스토그램 CH4[g2,VL2]의 단일 셀(4)로 병합되며, 결과적인 히스토그램 CH4[g2,VL2]의 다른 셀들은 제로 값들을 저장한다. 도 13a, 및 도 13b의 실례들에서, 어떠한 두드러진 패턴도 도 13a에서 보이지 않는 반면, 도 13b는 대응 곡선이 탐색된 비밀 데이터의 양호한 값 g에 대응함을 나타낼 수 있는 이러한 두드러진 패턴을 나타낸다.
특히, 테이블 CH이 회로의 이론적 모델에 따라서 생성되는 경우에, 일부 특정 패턴들이 테이블 CH 내에 누적된 히스토그램들 CH[g,VL] 내의 데이터의 분포에서 관찰될 수 있다. 이러한 패턴들은 셀 병합 방향을 규정하는데 사용될 수 있다. 도 14a 내지 도 14i는 함수들 F1, F2 및 F3이 테스트된 회로의 누설 모델에 대응하는, 8-비트 이진 데이터로부터 컴퓨팅된 Hamming 가중치들을 제공하는 경우에, 2차원 히스토그램들 CH[g,VL]에서 관찰되는 분포 패턴들의 실례들을 나타낸다. 따라서, 히스토그램들 CH[g,VL]은 9x9 개의 값들을 포함한다. 일반적으로, 히스토그램들 CH[g,VL]은 관찰된 패턴들 주변의 잡음 값들을 포함한다.
도 14a는 Hamming 가중치 HW가 0과 동일할 때에 관찰된 패턴을 도시한다. 이러한 패턴은 2차원 히스토그램의 제 1 열, 제 1 행에서 최종 열, 최종 행으로 연장하는, 2차원 히스토그램의 제 1 대각방향을 따르는 라인을 형성한다. 도 14b는 Hamming 가중치 HW가 1과 동일할 때에 관찰된 패턴을 도시한다. 이러한 패턴은 2차원 히스토그램의 제 1 열, 제 2 행에서 제 8 열, 최종 행으로 그리고 제 2 열, 제 1 행에서 최종 열, 제 8 행으로 연장하는, 2차원 히스토그램의 제 1 대각방향에 평행한 2 개의 라인들을 형성한다. Hamming 가중치 HW가 2와 동일한 때에, 관찰된 패턴(도 14c)은 도 14a의 패턴의 라인을 포함하는 3 개의 평행한 라인들을 포함하며, 일 라인은 히스토그램의 제 1 열, 제 3 행에서 제 7 열, 최종 행으로 그리고 제 3 열, 제 1 행에서 최종 열, 제 7 행으로 연장한다. Hamming 가중치 HW가 3과 동일할 때에, 관찰된 패턴(도 14d)는 도 14b의 패턴의 라인들을 포함하는, 제 1 대각방향에 평행한 4 개의 라인들을 포함하며, 일 라인은 히스토그램의 제 1 열, 제 4 행에서 제 6 열, 최종 행으로 연장되며, 일 라인은 히스토그램의 제 4 열, 제 1 행에서 최종 열, 제 6 행으로 연장한다. 도 14e의 패턴은 값 g이 4와 동일한 Hamming 가중치를 갖는 경우에 관찰될 수 있다. 이러한 패턴은 제 5 열 및 제 5 행에서 중앙 셀을 통과하는 수직 또는 수평 라인을 중심으로 도 14c의 패턴에 대칭적인 패턴과 결합된 도 14c의 패턴을 포함하는 체커보드 패턴이다. 도 14f의 패턴은 Hamming 가중치가 5와 동일한 경우에 관찰될 수 있다. 이러한 패턴은 제 5 열 및 제 5 행에서 중앙 셀을 통과하는 수직 또는 수평 라인을 중심으로 도 14d의 패턴에 대칭적이다. 도 14g, 14h 및 14i의 패턴들은 각기 6, 7 및 8의 Hamming 가중치에 대응하며, 제 5 열 및 제 5 행에서 중앙 셀을 통과하는 수직 또는 수평 라인을 중심으로, 각기 도 14c, 14b 및 14a의 패턴들에 대칭적이다.
히스토그램들 CH[g,VL] 중 하나에서 관찰된 패턴이 0, 1, 2 또는 3과 동일한 바이트 Hamming 가중치에 대응할 경우에(도 14a 내지 도 14d), 제 1 대각방향과 평행한 병합 방향을 따르는 셀 병합 방식은 비-제로 셀들을 함께 병합하고, 제로 셀들을 함께 병합한다. 이러한 셀 병합 방식이 도 14a 내지 도 14d의 히스토그램들에 적용되면, 비-제로 셀들의 값들은 결과적인 히스토그램의 1 개의 셀들(도 14a), 2 개의 셀들(도 14B), 3 개의 셀들(도 14c) 또는 4 개의 셀들(도 14d) 내에서 서로 가산되며, 제로 또는 근사 제로 셀들은 결과적인 히스토그램의 다른 셀들에서 병합된다.
5, 6, 7 또는 8과 동일한 바이트 Hamming 가중치들에 대응하는 히스토그램들 CH[g,VL]에세의 관찰된 패턴들(각기 도 14f 내지 14i)는 히스토그램들의 제 1 열 및 최종 행에서의 셀로부터 최종 열 및 제 1 행에서의 셀로 연장하는 제 2 대각방향에 따라는 연장하는 비-제로 셀들을 나타낸다. 이로써, 제 2 대각방향에 병행한 병합 방향에 따르는 셀 병합 방식은 비-제로 셀들을 함께 병합하며 제로 셀들을 함께 병합시킨다. 이러한 셀 병합 방식이 도 14f 내지 도 14i의 히스토그램들에 적용되면, 비-제로 셀들의 값들이 결과적인 히스토그램의 하나의 셀(도 14i), 2 개의 셀들(도 14h), 3 개의 셀들(도 14g) 또는 4 개의 셀들(도 14f)에서 서로 가산되며, 제로 또는 근사 제로 셀들은 결과적인 히스토그램의 다른 셀들에서 병합된다. 제 1 또는 제 2 대각방향에 평행한 병합 방향을 따라서 셀들을 병합하는 셀 병합 방식들이 도 14e의 히스토그램에 적용되어, 1 개, 3 개, 5 개, 7 개, 및 9 개의 비-제로 셀들의 그룹들을 각각의 셀로 병합한다.
제 1 대각방향을 따르는 병합 방식은 VL = 0, 1, 2, 3인 누적 히스토그램들 CH[g,VL]에 적용될 수 있으며, 제 2 대각방향을 따르는 병합 방식은 VL = 5, 6, 7, 8인 누적 히스토그램들 CH[g,VL]에 적용될 수 있다. 제 1 또는 제 2 대각방향을 따르는 병합 방식들 중 임의의 하나가 누적 히스토그램들 CH[g,4]에 적용될 수 있다.
제 1 대각방향을 따르는 병합 방식은 다음과 같이 컴퓨팅될 수 있다:
여기서, HT는 2차원 히스토그램들 CH[g,VL] 중 하나를 저장하며 크기 HT[0..ix,0..ix] (도 14a 내지 도 14i의 실례들에서는 ix = 8임)를 갖는 테이블이며, RHT는 병합된 1차원 히스토그램이며, k = 0, …, 2ix이며, max(a,b)는 a 및 b 중 최대 값을 리턴시키는 함수이며, min(a,b)는 a 및 b 중 최소 값을 리턴시키는 함수이다. 제 2 대각방향을 따르는 병합 방식은 다음과 같이 컴퓨팅될 수 있다:
여기서, k = 0, 1, …, 2ix.
히스토그램들 CH[g,VL] 내에서 병합될 셀들을 규정하는 병합 방향은 2차원 히스토그램들의 일 또는 다른 대각방향으로 반드시 연장하지는 않는다. 도 15a, 도 15b, 및 도 15c는 누적 히스토그램 CH[g,VL], 대각방향들이 아닌 다른 방향들을 따르는 병합 방식들, 및 대응하는 병합된 누적 히스토그램들 CH6[g,VL], CH7[g,VL], CH8[g,VL]을 나타낸다. 도 15a에서, 병합 방향은 셀들(열=1,행=1), (2,2), (3,2), (4,3), (5,3), (6,4), (7,4), …과 교차하는 라인에 평행하다. 이러한 병합 방식은 다음과 같이 컴퓨팅될 수 있다:
여기서, E(x)는 수 x보다 작은 최대 정수를 리턴시키는 함수이며, k = 0, …, ix+E(ix/2)이다.
도 15b에서, 병합 방향은 셀들 (1,1), (2,1), (3,1), (4,2), (5,2), (6,2), (7,3), …과 교차하는 라인에 평행하다. 이러한 병합 방식은 다음과 같이 컴퓨팅될 수 있다:
여기서, k=0,…,ix+E(ix/3)이다.
도 15c에서, 병합 방향은 셀들 (1,1), (2,1), (3,1), (4,1), (5,1), (6,1), (7,1), …과 교차하는 “수직” 라인에 평행하다. 이러한 병합 방식은 다음과 같이 컴퓨팅될 수 있다:
여기서, k=0,…,ix이다.
또한, 선택된 병합 방식들은 함수 F1 및 함수 F2 및 이러한 함수들이 적용되는 데이터의 비트 수에 따라서, 그들의 행의 개수와 상이한 열의 개수를 갖는 2차원 히스토그램들 CH[g,VL]에 적용될 수 있다.
일 실시예에 따라서, 테스트 방법은 해당 그룹의 예상된 패턴의 함수로서, 테이블 CH 내의 누적 히스토그램들의 각 그룹에 대한 병합 방식을 선택하는 단계, 및 테이블 CH 내의 누적 히스토그램들의 각 그룹에 대해, 누적 히스토그램 내로 누적되기 이전에 상기 선택된 병합 방식을 그룹 내의 각 누적 히스토그램에 또는 각 히스토그램에 적용하는 단계를 포함할 수 있다.
병합 방식들은 테이블 CH 내의 누적 히스토그램들의 그룹들에 대해 예상된 패턴들의 함수로서 선택될 수 있다. 어떠한 이러한 패턴들도 예상될 수 없으면, 몇몇 병합 방식들이 누적 히스토그램 테이블 CH에 대해 테스트되어서 유용한 데이터를 "집중"시키는 최상의 것(들), 즉, 병합된 히스토그램들에서 높은 피크들이 나타나게 하는 것들을 최종적으로 선택한다.
상술한 셀 병합 연산들은 n 차수로 적용되는 테스트 방법에 의해 획득되는 n-차원 히스토그램들에 적응될 수 있으며, 여기서 n은 1보다 크다. 예를 들어, 제 3차 테스트가 수행되는 때에 획득되는 3-차원 히스토그램들에서, 일 방향 또는 평행한 트레이스들을 따르는 병합 방식은 2차원 병합된 히스토그램들을 제공한다. 히스토그램의 대각방향 축과 같은 일 방향에 수직인 표면들 또는 면들을 따라서 연장하는 히스토그램들의 셀들을 병합하는 병합 방식은 1차원 병합된 히스토그램들을 직접적으로 제공한다. 이러한 병합 방식의 일 실례는 다음과 같이 컴퓨팅될 수 있다:
여기서, HT는 3차원 테이블 HT[0..ix,0..ix,0..ix]이며, k = 0, 1, …, 3ix이다.
상술한 셀 병합 연산들은 1차의 테스트 방법에 의해 획득된 1차원 히스토그램들에도 또한 적용될 수 있는데, 즉 다음의 단계들을 포함한다:
각 트레이스 Ci 내에서 하나의 값 서브세트 EC1i를 선택하는 단계;
각 값 서브세트에 대해, 해당 값 서브세트에 적용된 제 1 전사 함수 F1에 의해 변환된 값들의 발생 횟수들을 카운팅하여서, 값 세트에 대한 발생 횟수 세트 또는 히스토그램 HT을 형성하는 단계;
구별된 연산들의 연산 세트의 각 연산 OPRK, 및 비밀 데이터의 부분의 가능한 값들 q 각각에 대해, 부분적 연산 결과를 컴퓨팅하는 단계;
비밀 데이터의 부분의 가능한 값들 중 동일한 값 g 또는 균등한 값에 적용되는 때에, 제 2 전사 함수 F3의 적용으로부터 기인되는 동일한 변환된 값 VL을 갖는 부분적 연산 결과를 제공하는, 연산 세트의 연산들에 대응하는 발생 횟수 세트들 HT을 함께 가산함으로써 누적 발생 횟수 세트들 CH을 컴퓨팅하는 단계; 및
상기 비밀 데이터가 상기 값 세트들 내로 누설되었으면, 상기 비밀 데이터가 상기 비밀 데이터의 부분의 값 g에 대응하는 누적 발생 횟수 세트들 내에서 발견된다는 것을 알면서, 상기 비밀 데이터의 부분을 결정하도록 프로세싱 유닛에 의해 누적 발생 횟수 세트들 CH을 분석하는 단계.
Claims (15)
- 복수의 값 세트들(Ci)을 취득하는 단계로서, 각 값 세트는 테스트 대상 회로(CT)가 동일한 비밀 데이터(SD)에 적용되는 구별된 암호 연산들의 연산 세트 중 하나의 연산(OPRK)을 실행하는 때에 상기 테스트 대상 회로(CT)의 활성도(activity)와 관련된, 물리적 정량 또는 로직 신호들의 값들을 포함하는, 상기 취득하는 단계;
각 값 세트(Ci) 내에서 적어도 제 1 서브세트(ECli)를 선택하는 단계;
각 값 세트에 대해, 상기 값 세트에 대한 발생 횟수 세트(HT1, HT)를 형성하도록, 상기 값 세트의 제 1 서브세트의 값들(EC1i[j])에 적용된 제 1 전사 함수(F1)에 의해 변환된 값들의 발생 횟수들(HT1)을 프로세싱 유닛(PC)에 의해 카운팅하는 단계;
상기 연산 세트의 각 연산, 및 상기 비밀 데이터의 부분의 가능한 값들(g) 각각에 대해, 상기 프로세싱 유닛에 의해, 부분적 연산 결과를 컴퓨팅하는 단계;
상기 프로세싱 유닛에 의해, 누적 발생 횟수 세트들(CH)을 컴퓨팅하는 단계로서, 각 누적 발생 횟수 세트는 상기 연산 세트의 연산들에 대응하는 발생 횟수 세트들을 가산함으로써 획득되며, 상기 연산 세트의 연산들은 상기 비밀 데이터의 부분의 가능한 값들 중 동일한 값 또는 균등한 값에 적용되는 때에, 제 2 전사 함수(F3)의 적용으로부터 기인되는 동일한 변환된 값(VL)을 갖는 부분적 연산 결과를 제공하는, 상기 누적 발생 횟수 세트들을 컴퓨팅하는 단계;
상기 누적 발생 횟수들을 컴퓨팅하기 이전에, 선택된 병합 방식에 따라서, 상기 누적 발생 횟수 세트들 내의 누적 발생 횟수들을 병합하거나, 상기 발생 횟수 세트들 내의 결합 발생 횟수들을 병합하는 단계; 및
상기 비밀 데이터가 상기 값 세트들 내로 누설되었으면, 상기 비밀 데이터가 상기 비밀 데이터의 부분의 값에 대응하는 누적 발생 횟수 세트들 내에서 발견된다는 것을 알면서, 상기 비밀 데이터의 부분을 결정하도록 상기 프로세싱 유닛에 의해 상기 병합된 누적 발생 횟수 세트들을 분석하는 단계;를 포함하는, 회로 테스트 방법. - 제 1 항에 있어서,
각 값 세트(Ci) 내에서 적어도 값들의 제 2 서브세트(EC2i)를 선택하는 단계;
각 값 세트 및 각 값 서브세트에 대해, 상기 값 세트의 상기 서브세트에 대한 발생 횟수 세트(HT)를 형성하도록, 상기 값 세트의 상기 서브세트의 값들(EC2i[j])에 적용된 각각의 제 3 전사 함수(F2)에 의해 변환된 값들의 발생 횟수들(HT2)을 상기 프로세싱 유닛(PC)에 의해 카운팅하는 단계; 및
각 값 세트에 대해, 상기 값 세트의 값 서브세트들 각각의 발생 횟수들 중 하나를 함께 연관시킨 n-튜플들(n-tuples)을 형성하고, 상기 n-튜플에 의해 연관된 발생 횟수들을 함께 곱함으로써 상기 값 세트의 각 n-튜플에 대한 결합 발생 횟수를 컴퓨팅하고, 상기 값 세트에 대해 컴퓨팅된 결합 발생 횟수들을 포함하는, 상기 값 세트에 대한 발생 횟수 세트(HT)를 형성하는 단계;를 더 포함하는, 회로 테스트 방법. - 제 2 항에 있어서,
각 값 세트 (Ci)의 제 1 서브세트(EC1i) 및 제 2 서브세트(EC2i)는 각기 2 개의 구별된 신호들의 측정치들을 포함하는, 회로 테스트 방법. - 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
누적 발생 횟수 세트들의 그룹들에 대한 병합 방식들을 선택하는 단계를 포함하며, 상기 병합 방식들의 선택은 누적 발생 횟수 세트들에서 관측된 패턴들의 함수로서 수행되거나, 누적 발생 횟수 세트들의 그룹들에 적용된 상이한 병합 방식들로 획득된 병합된 누적 발생 횟수 세트들을 분석함으로써 획득된 결과들의 함수로서 수행되는, 회로 테스트 방법. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 누적 발생 횟수 세트들 중 하나에 적용된 병합 방식은,
상기 누적 발생 횟수 세트 내의 인접하는 누적 발생 횟수들의 그룹들을 함께 병합함으로써, 상기 누적 발생 횟수 세트 내의 누적 발생 횟수들의 수를 나누는 병합 방식들,
상기 누적 발생 횟수 세트 내의 누적 발생 횟수들의 선택된 그룹들을 함께 병합하는 병합 방식들,
선택된 곡선들 또는 선택된 방향을 따라서 연장된 누적 발생 횟수들을 상기 누적 발생 횟수 세트 내에서 함께 병합하는 병합 방식들, 및
일 선택된 방향에 수직인 면들, 또는 선택된 표면들에 따라 연장된 누적 발생 횟수들을 상기 누적 발생 횟수 세트 내에서 함께 병합하는 병합 방식들
을 포함하는 리스트에서 선택되는, 회로 테스트 방법. - 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
복수의 구별된 명령들(OPRK)을 상기 테스트 대상 회로에 전송하는 단계로서, 각 명령은 상기 비밀 데이터(SD)에 적용된, 상기 연산 세트의 연산들 중 하나의 연산의 상기 테스트 대상 회로에 의한 실행을 트리거하는(triggering), 상기 전송하는 단계; 및
상기 테스트 대상 회로에 의한 각 연산의 실행 동안에, 상기 값 세트들(Ci) 중 하나의 세트의 값들을 측정 디바이스(MD)에 의해 수집하는 단계를 포함하는, 회로 테스트 방법. - 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
상기 값 세트들(Ci)은,
상기 테스트 대상 회로(CT)의 전류 소비 측정치들, 및/또는
상기 테스트 대상 회로(CT)에 의해 방출된 전자기 방사의 측정치들, 및/또는
상기 테스트 대상 회로(CT) 주변에 존재하는 자기장의 흡수 측정치들, 및/또는
상기 테스트 대상 회로(CT)에서 수집된 로직 신호들 또는 디지털 값들을 포함하는, 회로 테스트 방법. - 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
상기 제 1 함수 및 제 2 전사 함수(F1, F2, F3) 각각은,
항등 함수(identity function),
후속하여 Hamming 가중치에 대응하는 값으로 환원되는 결과 값을 제공하는 함수,
함수가 적용된 값의 Hamming 가중치를 제공하는 함수, 및
함수가 적용된 값과 이에 선행하는 값 간의 Hamming 거리를 제공하는 함수,
중 하나인, 회로 테스트 방법. - 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
상기 비밀 데이터(SD)의 부분의 가능한 값들(g) 각각에 대한 연산 결과를 컴퓨팅하는 단계, 상기 누적 발생 횟수들(CH)을 컴퓨팅하는 단계, 및 상기 누적 발생 횟수들을 분석하는 단계는 상기 비밀 데이터의 이전에 결정된 부분 및 상기 복구될 비밀 데이터의 다른 부분에 대해 수행되는, 회로 테스트 방법. - 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
각 값 세트(Ci) 내의 각 선택된 값 서브세트(EC1i, EC2i)는,
상기 값 세트의 연속적인 값들, 및/또는
상기 값 세트의 비-연속적인 값들, 및/또는
상기 값 세트의 국부적 극값들, 및/또는
상기 값 세트의 모든 값들을 포함하는, 회로 테스트 방법. - 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
상기 연산 세트의 연산들(OPRK)은 상기 비밀 데이터(SD)에 그리고 입력 데이터(M[i])의 세트 중 하나의 입력 데이터에 단일 연산(OPR)을 적용하는 것을 포함하며, 상기 단일 연산은,
대칭적 또는 비대칭적 암호화 또는 복호화 연산,
시그니처 연산,
상기 비밀 데이터만큼의 모듈러 또는 비-모듈러 승산(non-modular multiplication),
상기 비밀 데이터와의 로직 Exclusive OR 연산,
상기 비밀 데이터가 지수로서 사용되는 모듈러 지수 연산,
상기 비밀 데이터가 모듈러스로서 사용되는 모듈러 환원 연산(modular reduction operation),
상기 입력 값을 사용하여 대체 테이블 내에 선택된 값에 의한 대체 연산, 및
상기 비밀 데이터와의 로직 Exclusive OR 연산 및 상기 로직 Exclusive OR 연산의 결과를 사용하여 대체 테이블 내에 선택된 값으로 상기 로직 Exclusive OR 연산의 결과를 대체하는 대체 연산을 조합한 연산,
중 적어도 하나를 포함하는, 회로 테스트 방법. - 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
상기 누적 발생 횟수들을 분석하는 단계는,
각 누적 발생 횟수(CH)에 대해, 상기 누적 발생 횟수에 누적된 발생 횟수들의 대응하는 개수(CPT)로 상기 누적 발생 횟수를 나눔으로써 정규화된 누적 발생 횟수(CH/CPT)를 컴퓨팅하는 단계,
상기 비밀 데이터의 부분의 각 가능한 값(g) 및 상기 변환된 부분적 결과의 각 가능한 값(VL)에 대해, 연산들의 횟수(ix)로 나누어진, 상기 누적 발생 횟수들의 평균 값(MHT)과, 상기 비밀 데이터의 부분의 가능한 값 및 상기 변환된 부분적 결과의 가능한 값에 대응하는 각 정규화된 누적 발생 횟수 간의 차들의 제곱의 합(IT)을 컴퓨팅하는 단계,
상기 비밀 데이터의 부분의 각 가능한 값에 대해, 상기 변환된 부분적 결과들의 가능한 값들에 대응하는 차 합들의 누계(TT)를 컴퓨팅하는 단계, 및
상기 차 합들의 누계들을 서로 비교하고, 상기 비밀 데이터의 부분의 가능한 값에 대한 차 합들의 누계들이 차 합들의 다른 누계들보다 큰지를 결정하는 단계를 포함하는, 회로 테스트 방법. - 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
상기 발생 횟수 세트들을 분석하는 단계는,
상기 비밀 데이터의 부분의 각 가능한 값(g) 및 상기 변환된 부분적 결과의 각 가능한 값(VL)에 대해, 누적 발생 횟수들의 누계(SXY)를 컴퓨팅하는 단계;
각 누적 발생 횟수들(CH)에 대해, 대응하는 누계로 누적 발생 횟수들을 나눔으로써 정규화된 누계(VXY)를 컴퓨팅하고 상기 정규화된 누계의 로그와 상기 정규화된 누계의 곱(product)을 컴퓨팅하는 단계,
상기 비밀 데이터의 부분의 각 가능한 값 및 상기 변환된 부분적 결과의 각 가능한 값에 대해, 상기 비밀 데이터의 부분의 각 가능한 값 및 상기 변환된 부분적 결과의 가능한 값에 대응하는 상기 곱(product)들의 합(PXY)을 컴퓨팅하는 단계, 및
상기 비밀 데이터의 부분의 각 가능한 값에 대해, 상기 변환된 부분적 결과들의 가능한 값들에 대응하는 곱 합들(product sums)의 누계(TT)를 컴퓨팅하는 단계로서, 각 곱 합은 발생 횟수들의 합들의 대응하는 개수(CPT) 만큼 승산되는, 상기 컴퓨팅하는 단계, 및
상기 곱 합들의 누계들을 서로 비교하고, 상기 비밀 데이터의 부분의 가능한 값에 대한 곱 합들의 누계들 중 하나가 곱 합들의 다른 누계들보다 큰지를 검출하는 단계를 포함하는, 회로 테스트 방법. - 회로를 테스트하기 위한 시스템으로서,
복수의 값 세트들(Ci)을 취득하도록 구성된 측정 디바이스(MD)로서, 각 값 세트는 테스트 대상 회로(CT)가 동일한 비밀 데이터(SD)에 적용되는 구별된 암호 연산들의 연산 세트 중 하나의 연산(OPRK)을 실행하는 동안에 상기 테스트 대상 회로(CT)의 활성도와 관련된, 물리적 정량 또는 로직 신호들의 값들을 포함하는, 상기 측정 디바이스(MD); 및
제 1 항 내지 제 13 항 중 어느 한 항에 따른 방법을 구현하도록 구성된 프로세싱 유닛(PC)를 포함하는, 회로 테스트 시스템. - 컴퓨터의 내부 메모리 내에 직접적으로 로딩가능한 컴퓨터 프로그램 제품으로서,
상기 컴퓨터에 의해 실행될 때, 제 1 항 내지 제 13 항 중 어느 한 항에 따른 방법의 단계들을 실행하도록 하는 코드 부분들을 포함하는, 컴퓨터 프로그램 제품.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1651443 | 2016-02-22 | ||
FR1651444 | 2016-02-22 | ||
FR1651444A FR3048096A1 (fr) | 2016-02-22 | 2016-02-22 | Procede de protection d'un circuit contre une analyse par canaux auxiliaires |
FR1651443A FR3048086B1 (fr) | 2016-02-22 | 2016-02-22 | Procede de test de la resistance d'un circuit a une analyse par canaux auxiliaires |
FR1651445 | 2016-02-22 | ||
FR1651445A FR3048097A1 (fr) | 2016-02-22 | 2016-02-22 | Procede de protection d'un circuit contre une analyse par canaux auxiliaires |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170098734A true KR20170098734A (ko) | 2017-08-30 |
Family
ID=57995161
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170023805A KR20170098734A (ko) | 2016-02-22 | 2017-02-22 | 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 |
KR1020170023793A KR20170098731A (ko) | 2016-02-22 | 2017-02-22 | 부채널 분석으로부터 회로를 보호하는 방법 |
KR1020170023803A KR20170098733A (ko) | 2016-02-22 | 2017-02-22 | 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 |
KR1020170023792A KR20170098730A (ko) | 2016-02-22 | 2017-02-22 | 부채널 분석으로부터 회로를 보호하는 방법 |
KR1020170023789A KR20170098729A (ko) | 2016-02-22 | 2017-02-22 | 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 |
KR1020170023794A KR20170098732A (ko) | 2016-02-22 | 2017-02-22 | 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170023793A KR20170098731A (ko) | 2016-02-22 | 2017-02-22 | 부채널 분석으로부터 회로를 보호하는 방법 |
KR1020170023803A KR20170098733A (ko) | 2016-02-22 | 2017-02-22 | 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 |
KR1020170023792A KR20170098730A (ko) | 2016-02-22 | 2017-02-22 | 부채널 분석으로부터 회로를 보호하는 방법 |
KR1020170023789A KR20170098729A (ko) | 2016-02-22 | 2017-02-22 | 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 |
KR1020170023794A KR20170098732A (ko) | 2016-02-22 | 2017-02-22 | 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법 |
Country Status (4)
Country | Link |
---|---|
US (6) | US10505711B2 (ko) |
EP (6) | EP3208789B1 (ko) |
KR (6) | KR20170098734A (ko) |
CN (6) | CN107103246A (ko) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL2015745B1 (en) * | 2015-11-09 | 2017-05-26 | Koninklijke Philips Nv | A cryptographic device arranged to compute a target block cipher. |
EP3208789B1 (en) * | 2016-02-22 | 2020-08-05 | Eshard | Method of protecting a circuit against a side-channel analysis |
EP3264311B1 (en) | 2016-06-28 | 2021-01-13 | Eshard | A protection method and device against a side-channel analysis |
CN107547194A (zh) | 2016-06-28 | 2018-01-05 | 埃沙尔公司 | 免受侧信道分析的保护方法和设备 |
DE102017002153A1 (de) * | 2017-03-06 | 2018-09-06 | Giesecke+Devrient Mobile Security Gmbh | Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung |
FR3072211B1 (fr) * | 2017-10-11 | 2021-12-10 | St Microelectronics Rousset | Procede de detection d'une injection de fautes et d'un amincissement du substrat dans un circuit integre, et circuit integre associe |
EP3502903A1 (en) | 2017-12-20 | 2019-06-26 | Eshard | Method of testing resistance of a software program to a side-channel analysis |
EP3729317B1 (en) * | 2017-12-22 | 2021-10-20 | Koninklijke Philips N.V. | A computer-implemented method of applying a first function to each data element in a data set, and a worker node for implementing the same |
US11218291B2 (en) * | 2018-02-26 | 2022-01-04 | Stmicroelectronics (Rousset) Sas | Method and circuit for performing a substitution operation |
FR3078464A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et circuit de mise en oeuvre d'une table de substitution |
FR3078463A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et dispositif de realisation d'operations en table de substitution |
EP3557813A1 (en) * | 2018-04-17 | 2019-10-23 | Gemalto Sa | Method secured against side-channel attacks performing an arithmetic operation of a cryptographic algorithm mixing boolean and arithmetic operations |
CN108646072B (zh) * | 2018-05-16 | 2019-12-27 | 电子科技大学 | 一种基于汉明距的触发产生装置 |
DE102018130177A1 (de) * | 2018-11-28 | 2020-05-28 | Infineon Technologies Ag | Ausführen von kryptographischen Operationen in einer Steuereinheit eines Fahrzeugs |
US11764940B2 (en) | 2019-01-10 | 2023-09-19 | Duality Technologies, Inc. | Secure search of secret data in a semi-trusted environment using homomorphic encryption |
CN109921892A (zh) * | 2019-01-15 | 2019-06-21 | 中国科学院信息工程研究所 | 一种基于测试向量的多维度侧信道泄露评估方法和系统 |
DE102020102796A1 (de) | 2020-02-04 | 2021-08-05 | Infineon Technologies Ag | Datenverarbeitungsvorrichtung und verfahren zum verarbeiten von geheimen daten |
CN111767584B (zh) * | 2020-06-09 | 2022-01-25 | 北京智芯微电子科技有限公司 | 内置随机数发生器的安全微处理器及安全芯片 |
CN111984476B (zh) * | 2020-06-29 | 2023-08-01 | 百度在线网络技术(北京)有限公司 | 测试方法和装置 |
FR3119252B1 (fr) * | 2021-01-26 | 2023-01-06 | Commissariat A L’Energie Atomique Et Aux Energies Alternatives | Dispositif de protection et de supervision d’un système électronique comprenant au moins un composant électronique. Procédé associé de protection et de supervision de l’intégrité du système électronique et du dispositif, et de brouillage d’attaques. |
TWI840062B (zh) * | 2022-12-30 | 2024-04-21 | 新唐科技股份有限公司 | 故障攻擊分析裝置和方法 |
Family Cites Families (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CH664056A5 (de) * | 1984-11-02 | 1988-01-29 | Borer Communications Ag | Verfahren und vorrichtung fuer die umwandlung einer digitalen datensequenz in die verschluesselte form. |
US5003596A (en) * | 1989-08-17 | 1991-03-26 | Cryptech, Inc. | Method of cryptographically transforming electronic digital data from one form to another |
US6116768A (en) * | 1993-11-30 | 2000-09-12 | Texas Instruments Incorporated | Three input arithmetic logic unit with barrel rotator |
EP0988591A1 (en) * | 1997-06-09 | 2000-03-29 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
DE69834431T3 (de) * | 1998-01-02 | 2009-09-10 | Cryptography Research Inc., San Francisco | Leckresistentes kryptographisches verfahren und vorrichtung |
US7587044B2 (en) * | 1998-01-02 | 2009-09-08 | Cryptography Research, Inc. | Differential power analysis method and apparatus |
ATE418099T1 (de) * | 1998-06-03 | 2009-01-15 | Cryptography Res Inc | Gesicherte moduläre potenzierung mit leckminimierung für chipkarten und andere kryptosysteme |
DE69935913T2 (de) * | 1998-07-02 | 2008-01-10 | Cryptography Research Inc., San Francisco | Leckresistente aktualisierung eines indexierten kryptographischen schlüssels |
FR2791496B1 (fr) * | 1999-03-26 | 2001-10-19 | Gemplus Card Int | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique |
FR2791497B1 (fr) * | 1999-03-26 | 2001-05-18 | Gemplus Card Int | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique |
FR2793571B1 (fr) * | 1999-05-11 | 2003-10-31 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete et dynamique |
US6760440B1 (en) * | 1999-12-11 | 2004-07-06 | Honeywell International Inc. | One's complement cryptographic combiner |
CA2298990A1 (en) * | 2000-02-18 | 2001-08-18 | Cloakware Corporation | Method and system for resistance to power analysis |
FR2809893B1 (fr) * | 2000-06-02 | 2002-11-15 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique sur courbe elliptique |
JP2002236152A (ja) * | 2001-02-08 | 2002-08-23 | Mitsubishi Electric Corp | 半導体集積回路の試験装置及び試験方法 |
JP2002247025A (ja) * | 2001-02-22 | 2002-08-30 | Hitachi Ltd | 情報処理装置 |
JP4596686B2 (ja) * | 2001-06-13 | 2010-12-08 | 富士通株式会社 | Dpaに対して安全な暗号化 |
US7142670B2 (en) * | 2001-08-14 | 2006-11-28 | International Business Machines Corporation | Space-efficient, side-channel attack resistant table lookups |
US8104017B2 (en) * | 2001-10-25 | 2012-01-24 | The Mathworks, Inc. | Traceability in a modeling environment |
JP4086503B2 (ja) * | 2002-01-15 | 2008-05-14 | 富士通株式会社 | 暗号演算装置及び方法並びにプログラム |
DE10201449C1 (de) * | 2002-01-16 | 2003-08-14 | Infineon Technologies Ag | Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor |
US6825785B1 (en) * | 2002-02-28 | 2004-11-30 | Silicon Laboratories, Inc. | Digital expander apparatus and method for generating multiple analog control signals particularly useful for controlling a sub-varactor array of a voltage controlled oscillator |
US7295671B2 (en) * | 2002-05-23 | 2007-11-13 | Atmel Corporation | Advanced encryption standard (AES) hardware cryptographic engine |
US20040086117A1 (en) * | 2002-06-06 | 2004-05-06 | Petersen Mette Vesterager | Methods for improving unpredictability of output of pseudo-random number generators |
US20050152539A1 (en) * | 2004-01-12 | 2005-07-14 | Brickell Ernie F. | Method of protecting cryptographic operations from side channel attacks |
DE602004023436D1 (de) * | 2004-03-29 | 2009-11-12 | St Microelectronics Sa | Prozessor zum ausführen eines aes algorithmus |
US7460965B2 (en) * | 2004-07-07 | 2008-12-02 | Mitsubishi Electric Corporation | Electric power calculating apparatus, electric power calculating method, tamper resistance evaluating apparatus, and tamper resistance evaluating method |
FR2873523B1 (fr) * | 2004-07-22 | 2007-08-10 | Sagem | Procede et dispositif d'execution d'un calcul cryptographique |
JP4824319B2 (ja) * | 2005-01-21 | 2011-11-30 | ルネサスエレクトロニクス株式会社 | 故障検出装置及び方法、並びに信号抽出回路 |
JP4815141B2 (ja) * | 2005-03-29 | 2011-11-16 | 富士通株式会社 | 回路異常動作検出システム |
US7577850B2 (en) * | 2005-04-15 | 2009-08-18 | Lsi Corporation | Security application using silicon fingerprint identification |
JP4806402B2 (ja) * | 2005-04-21 | 2011-11-02 | パナソニック株式会社 | プログラム難読化装置及び難読化方法 |
JP5384781B2 (ja) * | 2005-08-18 | 2014-01-08 | 日本電気株式会社 | 秘匿通信システムおよび共有秘密情報の生成方法 |
FR2893796B1 (fr) * | 2005-11-21 | 2008-01-04 | Atmel Corp | Procede de protection par chiffrement |
JP4241765B2 (ja) * | 2006-03-01 | 2009-03-18 | 株式会社日立国際電気 | 送信機及びキャリアリーク検出方法 |
EP1840732A1 (en) * | 2006-03-31 | 2007-10-03 | Axalto SA | Protection against side channel attacks |
US8543835B2 (en) * | 2006-07-12 | 2013-09-24 | Irdeto B.V. | Tamper resistance of a digital data processing unit |
US8190299B2 (en) * | 2006-07-19 | 2012-05-29 | Rovnyak Steven M | Integrated and optimized distributed generation and interconnect system controller |
JP4961909B2 (ja) * | 2006-09-01 | 2012-06-27 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
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 |
US8752032B2 (en) * | 2007-02-23 | 2014-06-10 | Irdeto Canada Corporation | System and method of interlocking to protect software-mediated program and device behaviours |
US8160245B2 (en) * | 2007-03-07 | 2012-04-17 | Research In Motion Limited | Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting |
JP2008252299A (ja) * | 2007-03-29 | 2008-10-16 | Hitachi Ltd | 暗号処理システム及び暗号処理方法 |
US8559625B2 (en) * | 2007-08-07 | 2013-10-15 | Inside Secure | Elliptic curve point transformations |
US20100246808A1 (en) * | 2007-12-05 | 2010-09-30 | Nec Corporation | Side channel attack tolerance evaluation apparatus, method and program |
JP5564434B2 (ja) * | 2008-01-11 | 2014-07-30 | オランジュ | 確率的対称暗号化のための方法およびエンティティ |
JP5288283B2 (ja) * | 2008-02-06 | 2013-09-11 | 日本電気株式会社 | サイドチャネル攻撃耐性評価装置とサイドチャネル攻撃耐性評価方法、及びサイドチャネル攻撃耐性評価用プログラム |
US8139764B2 (en) * | 2008-05-06 | 2012-03-20 | Harris Corporation | Closed galois field cryptographic system |
US20100085607A1 (en) * | 2008-10-02 | 2010-04-08 | Silverbrook Research Pty Ltd | Method of encoding coding pattern |
US8316338B2 (en) * | 2009-02-09 | 2012-11-20 | The United States Of America, As Represented By The Secretary Of Commerce, The National Institute Of Standards & Technology | Method of optimizing combinational circuits |
CN101562522A (zh) * | 2009-05-06 | 2009-10-21 | 深圳先进技术研究院 | 抗侧信道攻击的椭圆曲线密码系统实现方法 |
US8331568B2 (en) * | 2009-05-28 | 2012-12-11 | Microsoft Corporation | Efficient distribution of computation in key agreement |
JP2010288233A (ja) * | 2009-06-15 | 2010-12-24 | Toshiba Corp | 暗号処理装置 |
FR2947404B1 (fr) * | 2009-06-30 | 2011-12-16 | Sagem Securite | Cryptographie par parametrisation sur une courbe elliptique |
GB0914603D0 (en) * | 2009-08-20 | 2009-09-30 | Univ East Anglia | Image reconstruction method |
EP2507708B1 (en) * | 2009-12-04 | 2019-03-27 | Cryptography Research, Inc. | Verifiable, leak-resistant encryption and decryption |
US8527766B2 (en) * | 2009-12-30 | 2013-09-03 | Microsoft Corporation | Reducing leakage of information from cryptographic systems |
US8457919B2 (en) * | 2010-03-31 | 2013-06-04 | Inside Secure | Process for testing the resistance of an integrated circuit to a side channel analysis |
US8572406B2 (en) * | 2010-03-31 | 2013-10-29 | Inside Contactless | Integrated circuit protected against horizontal side channel analysis |
EP2365659B1 (fr) * | 2010-03-01 | 2017-04-12 | Inside Secure | Procédé de test de la résistance d'un circuit intégré à une analyse par canal auxiliaire |
US8619985B2 (en) * | 2010-04-27 | 2013-12-31 | Research In Motion Limited | Table splitting for cryptographic processes |
FR2966953B1 (fr) * | 2010-11-02 | 2015-08-28 | St Microelectronics Rousset | Procede de contremesure cryptographique par derivation d'une donnee secrete |
SG190090A1 (en) * | 2010-11-03 | 2013-06-28 | Virginia Tech Intell Prop | Using power fingerprinting (pfp) to monitor the integrity and enhance security of computer based systems |
PT3349360T (pt) * | 2011-01-14 | 2019-12-09 | Ge Video Compression Llc | Esquema de codificação e descodificação de entropia |
FR2972064B1 (fr) * | 2011-02-25 | 2013-03-15 | Inside Secure | Procede de cryptographie comprenant une operation d'exponentiation |
WO2012174128A1 (en) * | 2011-06-13 | 2012-12-20 | Paneve, Llc | General purpose digital data processor, systems and methods |
US20130067212A1 (en) * | 2011-09-14 | 2013-03-14 | Augustin J. Farrugia | Securing implementation of cryptographic algorithms using additional rounds |
US8891630B2 (en) * | 2011-10-24 | 2014-11-18 | Blackberry Limited | Significance map encoding and decoding using partition set based context assignment |
JP5848106B2 (ja) * | 2011-11-28 | 2016-01-27 | ルネサスエレクトロニクス株式会社 | 半導体装置及びicカード |
WO2013142979A1 (en) * | 2012-03-30 | 2013-10-03 | Irdeto Canada Corporation | Securing accessible systems using dynamic data mangling |
KR20130111721A (ko) * | 2012-04-02 | 2013-10-11 | 삼성전자주식회사 | 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서 |
US9773111B2 (en) * | 2012-08-14 | 2017-09-26 | Empire Technology Development Llc | Software-based side-channel attack prevention |
EP3428883B1 (en) * | 2012-10-26 | 2021-06-09 | Brainlab AG | Matching patient images and images of an anatomical atlas |
US9015500B2 (en) * | 2013-01-16 | 2015-04-21 | Qualcomm Incorporated | Method and apparatus for using dynamic voltage and frequency scaling with circuit-delay based integrated circuit identification |
US9231978B2 (en) * | 2013-02-04 | 2016-01-05 | Mirko Randic | Cryptographic construction for anonymity during interaction for collective outcome |
US20140249799A1 (en) * | 2013-03-04 | 2014-09-04 | Microsoft Corporation | Relational similarity measurement |
US20140281208A1 (en) * | 2013-03-13 | 2014-09-18 | Silicon Graphics International Corp. | Associative Look-up Instruction for a Processor Instruction Set Architecture |
EP2972877B1 (en) * | 2013-03-15 | 2021-06-16 | Power Fingerprinting Inc. | Systems, methods, and apparatus to enhance the integrity assessment when using power fingerprinting systems for computer-based systems |
CN105229612B (zh) * | 2013-03-18 | 2018-06-26 | 纽约市哥伦比亚大学理事会 | 使用基于硬件的微体系结构数据的异常程序执行的检测 |
US9524399B1 (en) * | 2013-04-01 | 2016-12-20 | Secturion Systems, Inc. | Multi-level independent security architecture |
US9237015B2 (en) * | 2013-07-24 | 2016-01-12 | Cisco Technology, Inc. | Compact and efficient communication security through combining anti-replay with encryption |
US9087192B2 (en) * | 2013-09-10 | 2015-07-21 | Infineon Technologies Ag | Electronic circuit and method for monitoring a data processing |
CN103647639A (zh) * | 2013-12-03 | 2014-03-19 | 北京中电华大电子设计有限责任公司 | 一种对称密码算法抵抗侧信道分析的方法 |
CN103647638A (zh) * | 2013-12-03 | 2014-03-19 | 北京中电华大电子设计有限责任公司 | 一种抵抗侧信道攻击的des掩码方法 |
WO2015100158A1 (en) * | 2013-12-23 | 2015-07-02 | The Trustees Of Columbia University In The City Of New York | Implementations to facilitate hardware trust and security |
US20150222421A1 (en) * | 2014-02-03 | 2015-08-06 | Qualcomm Incorporated | Countermeasures against side-channel attacks on cryptographic algorithms |
DE102014101936A1 (de) * | 2014-02-17 | 2015-08-20 | Infineon Technologies Ag | Verfahren zum Permutieren von Datenelementen und Permutiervorrichtung |
US9584310B2 (en) * | 2014-03-19 | 2017-02-28 | Nxp B.V. | Protecting a white-box implementation against attacks |
US9838198B2 (en) * | 2014-03-19 | 2017-12-05 | Nxp B.V. | Splitting S-boxes in a white-box implementation to resist attacks |
US9425952B2 (en) * | 2014-03-27 | 2016-08-23 | Samsung Israel Research Corporation | Algebraic manipulation detection codes from algebraic curves |
EP3127271B1 (en) * | 2014-03-31 | 2018-07-25 | Irdeto B.V. | Obfuscated performance of a predetermined function |
DE102014207296A1 (de) * | 2014-04-16 | 2015-10-22 | Robert Bosch Gmbh | Vorrichtung und Verfahren zur Verarbeitung von Daten |
US9418231B2 (en) * | 2014-06-03 | 2016-08-16 | Empire Technology Development Llc | Perturbation of field programmable gate array code to prevent side channel attack |
US20160063516A1 (en) * | 2014-08-29 | 2016-03-03 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate commercial characteristics based on geospatial data |
CN104202145B (zh) * | 2014-09-04 | 2018-07-03 | 成都信息工程学院 | 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法 |
US10025926B2 (en) * | 2014-11-19 | 2018-07-17 | The Mitre Corporation | Side-channel leakage evaluator and analysis kit |
US10628592B2 (en) * | 2014-11-25 | 2020-04-21 | Institut Mines-Telecom | Methods for recovering secret data of a cryptographic device and for evaluating the security of such a device |
US9740863B2 (en) * | 2014-11-25 | 2017-08-22 | Intel Corporation | Protecting a secure boot process against side channel attacks |
US10333696B2 (en) * | 2015-01-12 | 2019-06-25 | X-Prime, Inc. | Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency |
CN104717054B (zh) * | 2015-02-12 | 2017-11-14 | 中国科学院信息工程研究所 | 一种密码实现侧信道安全性快速检测方法 |
US10594471B2 (en) * | 2015-03-20 | 2020-03-17 | Cryptography Research, Inc. | Multiplicative blinding for cryptographic operations |
US10853625B2 (en) * | 2015-03-21 | 2020-12-01 | Mine One Gmbh | Facial signature methods, systems and software |
US10097342B2 (en) * | 2015-07-30 | 2018-10-09 | Nxp B.V. | Encoding values by pseudo-random mask |
CN105262726B (zh) * | 2015-09-10 | 2018-10-19 | 中国人民解放军信息工程大学 | 一种基于大数据行为序列分析的apt攻击检测方法 |
US10204532B2 (en) * | 2015-09-25 | 2019-02-12 | Intel Corporation | Multiple input cryptographic engine |
US9794062B2 (en) * | 2015-10-08 | 2017-10-17 | The Boeing Company | Scrambled tweak mode of blockciphers for differential power analysis resistant encryption |
US9942038B2 (en) * | 2015-11-04 | 2018-04-10 | Nxp B.V. | Modular exponentiation using randomized addition chains |
CN105553638A (zh) * | 2015-12-07 | 2016-05-04 | 成都芯安尤里卡信息科技有限公司 | 针对sm4一阶掩码算法的二阶频域能量分析攻击 |
EP3179668B1 (en) * | 2015-12-11 | 2019-05-22 | Institut Mines-Télécom | Methods and devices for estimating secret values |
EP3188401B1 (en) * | 2015-12-29 | 2019-12-18 | Secure-IC SAS | Method and system for protecting a cryptographic operation |
EP3208789B1 (en) * | 2016-02-22 | 2020-08-05 | Eshard | Method of protecting a circuit against a side-channel analysis |
EP3226460A1 (en) * | 2016-04-01 | 2017-10-04 | Institut Mines-Telecom | Secret key estimation methods and devices |
CN107547194A (zh) * | 2016-06-28 | 2018-01-05 | 埃沙尔公司 | 免受侧信道分析的保护方法和设备 |
US10256973B2 (en) * | 2016-09-30 | 2019-04-09 | Intel Corporation | Linear masking circuits for side-channel immunization of advanced encryption standard hardware |
US10121011B2 (en) * | 2016-11-16 | 2018-11-06 | The United States Of America As Represented By The Secretary Of The Air Force | Apparatus, method and article of manufacture for partially resisting hardware trojan induced data leakage in sequential logics |
-
2017
- 2017-02-15 EP EP17156289.5A patent/EP3208789B1/en active Active
- 2017-02-15 EP EP17156293.7A patent/EP3220306B1/en not_active Not-in-force
- 2017-02-15 EP EP17156292.9A patent/EP3217307B1/en active Active
- 2017-02-15 EP EP17156290.3A patent/EP3220305B1/en active Active
- 2017-02-15 EP EP17156287.9A patent/EP3208788B1/en active Active
- 2017-02-15 EP EP17156286.1A patent/EP3220304B1/en active Active
- 2017-02-21 CN CN201710093076.7A patent/CN107103246A/zh active Pending
- 2017-02-21 CN CN201710093118.7A patent/CN107102919A/zh active Pending
- 2017-02-21 CN CN201710092732.1A patent/CN107104783A/zh active Pending
- 2017-02-21 CN CN201710092704.XA patent/CN107103229A/zh active Pending
- 2017-02-22 CN CN201710095301.0A patent/CN107104784A/zh active Pending
- 2017-02-22 KR KR1020170023805A patent/KR20170098734A/ko unknown
- 2017-02-22 CN CN201710096299.9A patent/CN107104785A/zh active Pending
- 2017-02-22 US US15/439,562 patent/US10505711B2/en active Active
- 2017-02-22 US US15/439,530 patent/US10243729B2/en active Active
- 2017-02-22 US US15/439,578 patent/US10419206B2/en active Active
- 2017-02-22 US US15/439,581 patent/US10230521B2/en not_active Expired - Fee Related
- 2017-02-22 KR KR1020170023793A patent/KR20170098731A/ko unknown
- 2017-02-22 US US15/439,553 patent/US20170244551A1/en not_active Abandoned
- 2017-02-22 KR KR1020170023803A patent/KR20170098733A/ko unknown
- 2017-02-22 US US15/439,571 patent/US10320555B2/en active Active
- 2017-02-22 KR KR1020170023792A patent/KR20170098730A/ko unknown
- 2017-02-22 KR KR1020170023789A patent/KR20170098729A/ko unknown
- 2017-02-22 KR KR1020170023794A patent/KR20170098732A/ko unknown
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3220306B1 (en) | Method of testing the resistance of a circuit to a side channel analysis | |
KR20190020632A (ko) | 부 채널 분석에 대한 회로의 저항성을 테스트하는 방법 | |
CN102638341A (zh) | 用于计算标量乘法的结果的设备和方法 | |
Hettwer et al. | Side-channel analysis of the xilinx zynq ultrascale+ encryption engine | |
KR20110099185A (ko) | 수평 사이드 채널 분석에 대항하여 보호된 집적 회로 | |
Hogenboom et al. | Principal component analysis and side-channel attacks-master thesis | |
El Mrabet et al. | Physical attacks | |
Li | New Fault-Based Physical Attacks and Their Countermeasures | |
李陽 | New fault-based physical attacks and their countermeasures | |
Barron | RSA Power Analysis Obfuscation: A Dynamic FPGA Architecture | |
Bandara et al. | A Review on Investigating On-chip Sensor based RPA Attack Vulnerabilities of Lightweight Cipher Algorithms |