KR20170098730A - 부채널 분석으로부터 회로를 보호하는 방법 - Google Patents

부채널 분석으로부터 회로를 보호하는 방법 Download PDF

Info

Publication number
KR20170098730A
KR20170098730A KR1020170023792A KR20170023792A KR20170098730A KR 20170098730 A KR20170098730 A KR 20170098730A KR 1020170023792 A KR1020170023792 A KR 1020170023792A KR 20170023792 A KR20170023792 A KR 20170023792A KR 20170098730 A KR20170098730 A KR 20170098730A
Authority
KR
South Korea
Prior art keywords
data
function
index
circuit
values
Prior art date
Application number
KR1020170023792A
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 FR1651443A external-priority patent/FR3048086B1/fr
Priority claimed from FR1651444A external-priority patent/FR3048096A1/fr
Priority claimed from FR1651445A external-priority patent/FR3048097A1/fr
Application filed by 에샤르 filed Critical 에샤르
Publication of KR20170098730A publication Critical patent/KR20170098730A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/2205Detection 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/2215Detection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • 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/2851Testing of integrated circuits [IC]
    • 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/317Testing of digital circuits
    • G01R31/31719Security aspects, e.g. preventing unauthorised access during test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • 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
    • 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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block 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
    • 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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/06Cryptographic 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic 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/3242Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic 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/3249Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic 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/3252Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • 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

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

본 발명은 입력 데이터를 수신하고 출력 데이터를 제공하는 작업을 회로에 의해 실행하는 방법에 관한 것으로, 방법은 입력 데이터 또는 중간 데이터의 함수로서, 치환 테이블(T2)의 치환 원소(T2[i,0..r])를 선택하는 단계로서, 치환 원소는 제1 데이터 세트이며, 입력 치환 데이터의 함수로서 선택될 수 있는 치환 테이블 안의 각 치환 원소는 데이터 세트인, 선택하는 단계, 및 작업의 중간 결과 또는 최종 결과로서 제1 데이터 세트를 제공하는 단계로서, 제1 데이터 세트는 출력 데이터를 포함하고, 제1 데이터 세트에 선택된 전사 함수를 적용하여 변환 데이터 세트가 생성되도록 하고, 변환 출력 데이터는 제1 데이터 세트의 다른 데이터에 전사 함수를 적용하여 생기는 각 변환 데이터의 발생 확률과 동일한 확률로 발생하고, 제1 데이터 세트에 한 자리를 갖는 출력 데이터는 회로로부터 알고 있는, 제공하는 단계를 포함한다.

Description

부채널 분석으로부터 회로를 보호하는 방법{METHOD OF PROTECTING A CIRCUIT AGAINST A SIDE-CHANNEL ANALYSIS}
본 발명은 회로에 의해 다루어지는 비밀 데이터의 값, 특히, 메시지를 변환하기 위해 암호화 알고리즘에 의해 사용되는 비밀 키를 복구하고자 하는 사이드 채널 분석 공격으로부터 해당 회로를 보호하기 위한 방법에 관한 것이다.
본 발명은 특히 암호 알고리즘들을 구현하는 디바이스들, 예를 들어, 보안 디바이스들(스마트 카드 집적 회로들, 보안 요소들, 보안 메모리 카드들), 이동 디바이스들(이동 전화들, 스마트폰들, 사물 인터넷), 도모틱스 디바이스들 및 자동차 디바이스들, 및 컴퓨터 및 다른 전자 및 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 또는 프로그램된 코프로세서에 의한 실행의 경우에는 보다 복잡한 프로그램을 요구한다.
다중 실행들에 의한 대응 조치는 임의의 대응 조치 수단을 포함하지 않은 통상적인 코프로세서를 사용하여 구현될 수 있다. 이러한 조치는 단지 거짓 키들 또는 거짓 메시지들에 의해 암호화 방법을 수회 실행하는 것을 수반한다. 이를 위해서, 예를 들어, 암호화 프로그램 또는 코프로세서를 제어하고 암호화 프로그램 또는 코프로세서가 임의의 순서로 거짓 키들을 사용하여 암호화 방법을 수회 실행될 수 있게 하며, 이로써 올바른 키(즉, 맞는 키)를 사용하는 암호화 방법의 실행이 더미 실행 세트 내에서 "은폐"되게 하는 대응 조치 프로그램이 제공된다. 이러한 다중 실행에 의한 대응 조치는 임의의 대응 조치 수단을 포함하지 않는 통상적인 코프로세서로 구현될 수 있다는 이점을 제공한다.
특정 전문 지식 및 수많은 시도들에 의해, 특히 재정렬될 아주 많은 수의 트레이스들을 사용하여, 또는 일부 신호 프로세싱을 적용하여, 이러한 시간 정렬을 복구하는 것이 때로 가능하다. 모든 것에도 불구하고, 이러한 시간 정렬을 복구하는 것이 가능하지 않는 경우들도 존재하며, 이로써 트레이스들 내에 존재하는 비밀 데이터 누설이 존재할지라도 사이드 채널 테스트는 실패한다.
특허 출원 US 2009/074181 및 US 2008/019503은 동일한 확률로, 키의 모든 가능한 값들에 해당 연산을 적용하는 것을 포함하는 연산 보호 방법들을 개시한다.
판매될 의도가 있는 보안 집적 회로에 의해 제공된 보안 레벨을 체크하기 위해서, 자격 및/또는 인증 테스트들이 회로가 판매되기 이전에 계획되며, 이러한 테스트들은 특히, 집적 회로에 의해서 취급되는 비밀 데이터를 복구하는 것을 목적으로 하는 사이드 채널 분석 공격들에 대한 집적 회로의 내성을 테스트하는 것을 포함한다. 또한, 사이드 채널 공격에 대한 소프트웨어 프로그램의 내성이 평가되게 하는 테스트들이 존재한다.
따라서, 이러한 테스트 방법을 포함하는 자격 및/또는 검증 프로세스 후에, 집적 회로 또는 소프트웨어 프로그램이 제품에서 사용될 수 있는 것으로 고려되게 하는 대응 조치 수단을 제공하는 것이 바람직하다.
일부 실시형태들은 입력 데이터를 수신하여 출력 데이터를 제공하는 연산을 회로에 의해 실행하는 방법에 관한 것이며, 본 방법은 상기 입력 데이터 또는 중간 데이터의 함수로서 대체 테이블 내의 대체 요소를 선택하는 단계로서, 상기 대체 요소는 제 1 데이터 세트이며, 입력 대체 데이터의 함수로서 선택될 수 있는 상기 대체 테이블 내의 각 대체 요소는 데이터 세트인, 상기 선택하는 단계; 및 상기 제 1 데이터 세트를 해당 연산의 중간 결과 또는 최종 결과로서 제공하는 단계로서, 상기 제 1 데이터 세트는 상기 출력 데이터를 포함하며, 상기 제 1 데이터 세트에 선택된 전사 함수를 적용하는 것으로부터 기인되는 변환된 데이터의 세트 내에서, 상기 변환된 출력 데이터가 상기 제 1 데이터 세트 내의 다른 데이터에 상기 전사 함수를 적용하는 것으로부터 기인되는 각 변환된 데이터의 발생 확률과 동일한 확률로 발생하도록 되며, 상기 출력 데이터는 상기 회로가 알고 있는, 상기 제 1 데이터 세트 내의 위치를 갖는, 상기 제공하는 단계를 포함한다.
일 실시형태에 따라서, 상기 대체 테이블 내의 대체 요소들 중 하나를 형성하는 각 데이터 세트 중의 데이터가 상기 전사 함수에 의해 변환된 각각의 변환된 데이터는 상기 전사 함수에 의해 제공될 수 있는 동일한 발생 횟수를 갖는 모든 가능한 데이터를 포함한다.
일 실시형태에 따라서, 상기 전사 함수는 상기 회로의 데이터 누설 모델에 따라서 선택된다.
일 실시형태에 따라서, 상기 전사 함수는 항등 함수, 후속하여 Hamming 가중치에 대응하는 값으로 환원되는 결과 값을 제공하는 어핀 함수(affine function), 및 해당 함수가 적용된 값의 Hamming 가중치를 제공하는 함수, 중 하나이다.
일 실시형태에 따라서, 상기 연산은, 대칭적 또는 비대칭적 암호화 또는 복호화 연산, 시그니처 연산, 비밀 데이터만큼의 모듈러 또는 비-모듈러 승산(non-modular multiplication), 비밀 데이터와의 로직 Exclusive OR 연산, 비밀 데이터가 지수로서 사용되는 모듈러 지수 연산, 및 비밀 데이터가 모듈러스로서 사용되는 모듈러 환원 연산(modular reduction operation) 중 적어도 하나를 포함한다.
일부 실시형태들은 또한 위에서 규정된 방법을 구현하도록 구성된 회로에 관한 것이며, 상기 회로는 프로세서를 포함한다.
일 실시형태에 따라서, 상기 회로는 코프로세서를 포함한다.
일부 실시형태들은 또한, 매체 상에 배치된, 상술한 바와 같은 회로를 포함하는 디바이스에 관한 것이다.
일부 실시형태들은 또한 컴퓨터의 내부 메모리 내에 직접적으로 로딩가능하며 코드 부분들을 포함하는 컴퓨터 프로그램 제품에 관한 것일 수 있으며, 상기 코드 부분들이 상기 컴퓨터에 의해 실행될 시에 상기 코드 부분들은 위에서 규정된 방법의 단계들을 실행하도록 상기 컴퓨터를 구성한다.
오직 예시적 설명을 위해서 제공되는, 본 발명의 실시예들의 일부 실례들은 첨부 도면들을 참조하여서 이하에서 기술될 것이지만, 첨부 도면들로 한정되지는 않는다.
도 1은 보안 회로의 통상적인 아키텍처를 개략적으로 도시한다.
도 2는 집적 회로 테스트 시스템의 실례를 개략적으로 도시한다.
도 3은 보안 회로에 의한 암호화 연산의 실행 동안 획득된 신호의 트레이스들을 나타낸다.
도 4는 일 실시예에 따른, 회로 테스트 방법의 단계들을 나타낸다.
도 5는 전사 함수의 실례를 그래프 형태로 나타낸다.
도 6은 통계적 프로세싱을 수행하기 위해, 일 실시예에 따라 구축된 테이블을 개략적으로 도시한다.
도 7은 다른 실시예에 따른, 회로 테스트 방법의 단계들을 나타낸다.
도 8 및 도 9는 다양한 실시예들에 따른, 테스트 방법에 의해 획득된 값 세트를 통계적으로 분석하기 위한 방법의 단계들을 나타낸다.
도 10 및 도 11은 도 8 및 도 9의 분석 방법들에 의해 제공된 결과 테이블들을 곡선들의 형태로 나타낸다.
도 12 및 도 13은 다양한 실시예들에 따른, 대응 조치 단계들을 포함하는, 암호화 연산의 단계들을 나타낸다.
도 14는 일 실시예에 따른, 대응 조치 방법에 따라서 변환된 대체 테이블을 나타낸다.
도 15는 일 실시예에 따른 보안 회로를 도시한다.
도 1은 예를 들어, 휴대용 매체(HD), 예를 들어, 플라스틱 카드 또는 임의의 다른 매체 상에 배열되거나 또는 단말, 예를 들어, 이동 단말, 스마트폰, IoT 디바이스 등 내에 배치된 보안 집적 회로(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(Near-Field Communications) 제어기, 또는 단말, 예를 들어, 이동 단말의 메인 회로 또는 연결된 대상에 연결될 수 있다.
일부 실시형태들에서, 보안 집적 회로(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]를 조작할 때에 포획된, 상이한 신호들로부터의 샘플들을 포함할 수 있다.
도 4는 복구될 비밀 데이터에 그리고 또한 알려진 입력 데이터 M[0]... M[ix]에 적용된, 알려졌다고 가정된 암호화 연산 OPRK의 실행 동안에 테스트 시스템에 의해 수집된 값들을 프로세싱하는 단계들(S1 내지 S19)을 나타낸다. 일 실시예에 따라서, 이러한 테스트의 목적은 비밀 데이터의 값이 예를 들어, 도 3의 트레이스들을 형성하는 수집된 값들 내로 누설되는지를 결정하는 것이다. 프로세싱 유닛(PC)이 먼저 단계들(S1 내지 S8)을 실행한다.
단계(S1)에서, 테스트 시스템의 프로세싱 유닛(PC)는 테이블 CH 및 입력 데이터 M[0]...M[ix]에 대한 루프의 인덱스 i를 0으로 설정한다. 단계(S2)에서, 프로세싱 유닛(PC)은 테스트될 회로(MCT) 또는 소프트웨어 프로그램에 의한 연산 OPRK의 실행을 활성화시키며, 이러한 연산은 데이터 M[i]를 수신하며, 비밀 데이터가 회로(MCT) 또는 소프트웨어 프로그램에 의한 연산에 제공된다. 단계(S3)에서, 프로세싱 유닛(PC)은 트레이스 Ci를 구성하는 값들을 수집한다. 단계(S4)에서, 트레이스 Ci의 값들의 부분 ECi가 선택되며, 오직 이러한 부분만이 다음의 프로세싱 단계들(도 3)에서 프로세싱된다. 도 4의 실례에서, 이러한 부분은 단순성을 위해서, 인덱스들 k 및 kx에 대응하는 트레이스 Ci의 값들에 의해 그 경계가 정해진다. 실제로, 인덱스들 k 및 kx은 트레이스들 Ci 간에 변할 수 있다. 또한, 각 트레이스에서 이로써 선택된 값들은 반드시 연속적이지는 않으며 각 부분 ECi 내의 값들의 개수는 트레이스들 Ci 간에 상이할 수 있으며, 이는 종래 기술의 사이드-채널 분석들과 대조적이다. 따라서, 예를 들어, 각 트레이스에 대한 오직 최대 또는 최소 국부적 값들만을 추출하는 것이 선택될 수 있다. 추출된 부분 ECi이 전체 트레이스 Ci일 수 있다는 것도 또한 주목되어야 한다. 다음의 프로세싱에서, 이로써 추출된 데이터는 탐색할 비밀 데이터에 대한 정보의 일부를 포함하는 것으로 가정된다.
단계(S5)에서, 프로세싱 유닛(PC)은 루프 인덱스 j 및 테이블 HT을 0으로 설정한다. 단계(S6)에서, 프로세싱 유닛(PC)은 전사 함수 F1를 선택된 트레이스 부분 ECi의 인덱스 j의 값 ECi[j]에 적용하며 함수 F1에 의해 제공된 결과와 동일한 인덱스에 의해 지정된, 테이블 HT 내의 값을 1 만큼 증분한다. 단계(S7)에서, 인덱스 j는 1 만큼 증분된다. 단계(S8)에서, 인덱스 j는 그의 최대 값과 비교되어 이로써 세트 ECi의 모든 값들이 프로세싱되었는지가 결정된다. 세트 ECi의 모든 값들이 프로세싱되었으면, 프로세싱 유닛(PC)은 단계들(S9 내지 S14)을 실행하고, 그렇지 않으면, 단계들(S6 내지 S8)을 다시 실행한다. 이러한 방식으로, 테이블 HT 내에 로딩된 세트 ECi의 값들은 함수 F1에 의해 리턴된(returned) 각 가능한 값의 발생 횟수를 특정하는 히스토그램의 형태를 가지며, 이로써 세트 ECi의 값들과 연관된 시간 특징은 테이블 HT 내에 포함되지 않는다: 테이블 HT의 콘텐츠는 세트의 값들이 수집된 순서가 결정되게 할 수 없다. 도 5는 함수 F1를 사용하여 컴퓨팅된 값들(x 축)의 발생 횟수(y 축)의 테이블 HT의 실례를 그래프의 형태로 나타낸다. 도 5의 실례에서, 함수 F1는 8-비트 인코딩된 값들로부터 컴퓨팅된 Hamming 가중치를 리턴한다.
단계(S9)에서, 프로세싱 유닛(PC)은 인덱스 g를 0으로 설정한다. 단계(S10)에서, 프로세싱 유닛(PC)은 연산 OPR을 데이터 M[i]에 그리고 인덱스 g와 동일하게 설정된, 결정될 비밀 데이터 SD의 부분에 적용한다. 연산 OPR(M, g)은 단계(S2)에서 실행된 연산 OPRK(M)(=OPR(M, SD))의 결과의 일부를 제공하도록 된다. 연산 OPR에 의해 제공된 결과는 값 VL을 공급하는 전사 함수 F2에 의해 프로세싱된다. 단계(S11)에서, 프로세싱 유닛(PC)은 인덱스 l를 0으로 설정한다. 단계(S12)에서, 프로세싱 유닛(PC)은 인덱스들 g, VL 및 l에 의해 지정된 위치에서, 3차원 테이블 CH 내에 저장된 값을, 데이터 M[i]에 대응하는 테이블 HT 내의 인덱스 l에서의 값 HT[l] 만큼 증분한다. 도 6은 인덱스들 g 및 VL에 의해 지정된 각 위치 CH[g,VL]가 단계(S11)에서 획득된 값 VL에 따라서 몇몇 테이블들 HT을 결합함으로써 획득된 테이블을 포함하는, 테이블 CH의 실례를 나타낸다. 단계(S13)에서, 인덱스 l는 1 만큼 증분된다. 단계(S14)에서, 인덱스 l는 함수 F1에 의해 제공된 가능한 구별된 값들의 개수를 고려한 그의 최대 값 lx과 비교된다. 인덱스 l가 그의 최대 값 lx과 같거나 작으면, 단계들(S12 내지 S14)이 다시 실행되고, 그렇지 않으면, 단계들(S15 및 S16)이 실행된다.
단계(S15)에서, 프로세싱 유닛(PC)은 인덱스 g를 1 만큼 증분한다. 단계(S16)에서, 프로세싱 유닛(PC)은 인덱스 g를 비밀 데이터의 고려된 부분에 대한 가능한 구별된 값들의 개수를 고려한, 그의 최대 값 gx과 비교한다. 인덱스 g가 최대 값 gx보다 작거나 같으면, 단계(S10) 내지 단계(S16)가 새롭게 반복되고, 그렇지 않으면, 단계들(S17 및 S18)이 반복된다. 단계(S17)에서, 프로세싱 유닛(PC)은 인덱스 i를 1 만큼 증분시켜서 다른 트레이스 Ci를 프로세싱한다. 단계(S18)에서, 프로세싱 유닛(PC)은 인덱스 i를 생성된 트레이스들 Ci의 개수와 대응하는 그의 최대 값 ix와 비교한다. 인덱스 i가 최대 값 ix과 같거나 작으면, 단계들(S2 내지 S18)이 다시 실행되고, 그렇지 않으면, 단계(S19)가 실행된다. 단계(S19)에서, 테이블 CH 내의 위치[g,VL]에 포함된 누계의 각 테이블은 다음의 값들을 포함한다:
Figure pat00001
(1)
위의 합산에서 고려될 데이터 M[i]는 F2(OPR(M[i], g))= VL이 되도록 된다.
단계(S19)에서, 프로세싱 유닛(PC)은 인덱스 g의 값이 탐색될 비밀 데이터의 부분에 대응하는지를 결정하고자 테이블 CH의 통계적 분석을 수행한다. 이를 위해서, 비밀 데이터의 누설로부터 발생하는 정보가 테이블 CH의 열 g의 위치들에서 누적되는 반면, 비밀 데이터와는 무관한 정보가 테이블 CH 내에서 랜덤하게 또는 균일하게 분포한다고 고려된다. 결과적으로, 테이블 CH의 인덱스 g의 열이 이러한 테이블의 나머지 부분의 값들보다 높은 값들을 포함하면, 테이블 CH의 이러한 열에서의 인덱스 g의 값은 탐색된 비밀 데이터 SD의 부분의 값과 대응한다. 이러한 경우에, 비밀 데이터 SD가 트레이스들 Ci을 형성하는 수집된 데이터 내로 누설되었다고 간주될 수 있다.
함수 F1 및 함수 F2는 테스트될 회로 또는 소프트웨어 프로그램의 누설 패턴에 대응하도록 선택될 수 있다. 따라서, 함수 F1 및 함수 F2는 서로 동일 또는 상이할 수 있으며, 회로에 의해 조작된 비밀 데이터를 복구할 가능성을 최대화하도록 선택될 수 있다. 예를 들어, 함수 F1 및 함수 F2는 다음의 함수들 중 하나일 수 있다:
- 항등 함수(identity function),
- 예를 들어, x가 8 비트로 인코딩되는 때에 값 0 내지 값 8인, Hamming 가중치에 대응하는 값으로 환원될 수 있는 결과적인 값을 갖는, 함수(예를 들어, F(x)= a·x + b의 형태임),
- 예를 들어, 이진 코딩된 값 1에서 비트 수인, 함수의 입력에 제공된 값의 Hamming 가중치를 컴퓨팅하는 함수, 또는
- 예를 들어, 이러한 2 개의 값들 중 1에서 비트 수들 간의 차인, 다른 값과의 Hamming 거리를 컴퓨팅하는 함수.
함수 F1 및 함수 F2 중의 선택은 비밀 데이터의 고려된 부분을 결정하도록 수행된 테이블 CH의 통계적 프로세싱의 복잡도, 및 탐색된 비밀 데이터의 부분의 값을 결정하기 위한 통계적 프로세싱의 성공 양자를 영향을 준다는 것이 주목될 수 있다.
단계들(S1 내지 S19)을 실행함으로써 탐색된 비밀 데이터의 부분은 예를 들어, 8 또는 16 비트로 규정될 수 있다. 8 비트의 경우에, 인덱스 g는 0 내지 255(또는 1 내지 256=28) 간의 모든 값들에 연속적으로 할당된다. 비밀 데이터 SD의 다른 부분은 비밀 데이터의 이전에 결정된 부분들의 값들을 사용하여서 단계들(S9 내지 S19)을 실행함으로써, 그리고 비밀 데이터의 다른 부분을 인덱스 g의 상이한 가능한 값들로 되게 함으로써 결정될 수 있다. 이를 위해서, 트레이스들 Ci의 동일한 부분들 ECi 또는 이러한 트레이스들의 다른 부분들이 단계(S4)에서 추출될 수 있다.
트레이스들 Ci를 형성하는 값 세트들은 도 4에서 다른 단계들을 실행하기 이전에 수집될 수 있다(단계들(S2 및 S3))는 것이 주목될 수 있다. 또한, 단계들(S9 내지 S19)을 실행하기 이전에, 테이블 HT이 트레이스들 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의 콘텐츠들은 함수 F1에 의해 리턴된 각 가능한 값에 대한 누적 발생 횟수의 테이블을 획득하도록 서로 가산될 수 있다. 누계들의 이러한 테이블의 값들은 테이블의 위치들 CH[g,VL]에서 누적된 모든 테이블들로부터 감산된다. 따라서, 도 4의 단계들의 시퀀스는 도 7에서 표현된 시퀀스에 따라서 수정될 수 있다. 도 7에서 도시된 단계들은 상술한 단계들(S9 내지 S19), 및 추가 단계들(S20, S21 및 S22)을 포함한다. 단계(S9) 이전에 수행되는 단계(S20)에서, 인덱스 i, 1차원 테이블 MHT 및 2차원 테이블 CPT은 0으로 설정된다. 단계(S9)에서, 2차원 테이블 HT[0...ix,l]은 모든 트레이스들 Ci에 대해 단계(S6)에서 생성된 모든 테이블들을 포함할 시에 이전에 채워졌다. 단계(S21)는 인덱스 l에 의해 제어된 루프(단계(S12) 내지 단계(S14)) 내에 삽입되며, 이로써 예를 들어, 단계(S12) 이후에, 함수 F1에 의해 제공된 값들 중 하나를 선택하는 것이 가능하다. 단계(S21)에서, 프로세싱 유닛(PC)은 인덱스 l에 지정된 위치에서 누계들 MHT의 테이블 내에 각 값 HT[i,l]을 누적시킨다. 이러한 방식으로, 프로세싱의 종료 시에, 테이블 MHT은 트레이스들 Ci 각각에 대해 획득된 인덱스 i의 모든 값들 HT[i,l]의 합을 포함할 것이다. 단계(S22)는 인덱스 i에 의해 제어된 루프의 각 반복 시에 1 회 실행되며, 이로써 예를 들어, 단계(S14) 이후에 트레이스들 Ci 중 하나를 선택하는 것이 가능하다. 단계(S22)는 테이블 CH의 각 위치 CH[g,VL]에서 누적된 테이블들 HT[i,l]의 수가 카운트되게 한다. 이러한 카운트 결과는 테이블 CPT 내에 저장된다.
도 8은 탐색된 비밀 데이터 SD의 부분의 값을 결정하고자 하는 테이블 CH의 통계적 프로세싱의 실례의 단계들(S31 내지 S43)을 나타낸다. 단계들(S31 내지 S37)은 연속적으로 실행된다. 단계(S31)에서, 인덱스 VL는 0로 설정되며, 테이블 TT의 모든 위치들은 1로 설정된다. 단계(S32)에서, 인덱스 g 및 테이블 IT의 모든 위치들은 0으로 설정된다. 단계(S33)에서, 인덱스 l은 0으로 설정된다. 단계(S34)에서, 변수 T는 인덱스들 g, VL, 및 l에 의해 선택된, 테이블 CH 내에 포함된 값 CH[g,VL,l]을 수신하고, 이러한 값은 테이블 CPT 내의 위치 CPT[g,VL]에 위치한 카운트 값으로 나누어진다. 단계(S35)에서, 테이블 IT 내의 위치 g에서의 값 IT[g]은 인덱스 l에 의해 지정된, 테이블 MHT 내에 저장된 값 MHT[l]과 변수 T의 값 간의 차를 트레이스들 Ci의 총수 ix로 나눈 결과의 제곱만큼 증분된다. 단계(S36)에서, 인덱스 l는 1 만큼 증분된다. 단계(S37)에서, 인덱스 l는 그의 최대 값 lx과 비교된다. 인덱스 l가 그의 최대 값 lx에 도달한 경우에, 단계들(S38 내지 S40)이 실행되고, 그렇지 않으면, 단계(S34)로부터의 새로운 반복이 실행된다.
단계(S38)에서, 테이블 TT 내의 인덱스 g에 의해 지정된 값 TT[g]이 lx 회 실행된, 단계들(S35 내지 S37)에서 컴퓨팅된 값 IT[g] 만큼 승산됨으로써 업데이트된다. 단계(S39)에서, 인덱스 g는 1 만큼 증분된다. 단계(S40)에서, 인덱스 g는 그의 최대 값 gx과 비교된다. 인덱스 g가 그의 최대 값 gx보다 크면, 단계들(S41 및 S42)이 실행되며, 그렇지 않으면, 단계(S33)로부터의 새로운 반복이 실행된다. 단계(S41)에서, 인덱스 VL이 1 만큼 증분된다. 단계(S42)에서, 인덱스 VL가 그의 최대 값 VLx과 비교된다. 인덱스 VL가 그의 최대 값 VLx보다 크면, 단계(S43)가 실행되고, 그렇지 않으면, 단계(S32)로부터의 새로운 반복이 실행된다. 단계(S43)에서, 테이블 TT은 통계적 분석의 결과로서 리턴된다.
따라서, 단계들(S32 내지 S42)을 포함하는 프로세싱 루프의 마지막 반복 시에, 테이블들 IT 및 TT은 다음의 값들을 포함한다:
Figure pat00002
(2)
Figure pat00003
(3),
여기서,
Figure pat00004
,
Figure pat00005
여기서, 연산자 "=="는 상등이 참이면 1과 동일하고 상등이 거짓이면 0과 동일한 상등 테스트(equality test)를 나타내며, 테이블 IT은 인덱스 VL의 각 새로운 값에 대해, 단계(S32)에서 0으로 설정되고, 단계(S35)에서 로딩된다.
따라서, CPT[g,VL]는 조건(F2(OPR(M[i], g))== VL)이 참인 횟수를 나타낸다. 비밀 데이터 SD가 연산 OPRK을 실행할 시에 누설되었으면, 테이블 TT의 위치는 이러한 테이블 내에 저장된 다른 값들보다 매우 높은 값을 포함한다. 그 결과는 탐색된 비밀 데이터 SD의 부분이 테이블 TT 내의 최고 값의 인덱스 g와 동일하다는 것이다.
테이블 IT의 값들이 등식(3)에 대응하는 단계(S38)에서 승산되기보다는 가산될 수 있다는 것이 주목될 수 있다. 승산 연산 구현은 단지 테이블 TT의 값들 간의 차들이 증가되게 하며, 이로써 탐색된 비밀 데이터의 부분에 대응하는 최고 값이 보다 양호하게 강조되게 한다. 로그 함수를 테이블 IT의 값들에 적용하고 획득된 로그 값들의, 테이블 TT 내에서의 가산 누적(additive accumulation)을 수행하는 것을 고려하는 것이 또한 가능하다. 테이블들 IT의 값들이 가산되면, 이들은 다음과 같이 가중화될 수 있다:
Figure pat00006
(4).
도 9는 탐색된 비밀 데이터 SD의 부분의 값을 결정하고자 시도하는 테이블 CH의 통계적 프로세싱의 다른 실례의 단계들(S51 내지 S67)을 나타낸다. 이러한 프로세싱은 샤론 엔트로피 함수에 기초한다. 단계들(S51 내지 S56)은 연속적으로 실행된다. 단계(S51)에서, 인덱스 g가 0으로 설정되며, 테이블 TT의 모든 위치들이 0으로 설정된다. 단계(S52)에서, 인덱스 VL가 0으로 설정된다. 단계(S53)에서, 인덱스 l 및 변수 SXY가 0으로 설정된다. 단계(S54)에서, 변수 SXY가 인덱스들 g, VL, 및 l에 의해, 테이블 CH 내에 선택된 값 CH[g,VL,l] 만큼 증분된다. 단계(S55)에서, 인덱스 l가 1 만큼 증분된다. 단계(S56)에서, 인덱스 l가 그의 최대 값 lx과 비교된다. 인덱스 l가 그의 최대 값 lx에 도달하였으면, 단계들(S57 내지 S61)이 실행되며, 그렇지 않으면, 단계(S54) 내지 단계(S56)의 새로운 반복이 실행된다. 단계(S57)에서, 인덱스 l 및 변수 PXY가 0으로 설정된다. 단계(S58)에서, 변수 VXY는 인덱스들 g, VL, 및 l에 의해 테이블 CH 내에 선택된 값 CH[g,VL,l]을 수신하며, 이러한 값은 단계들(S54 내지 S56)의 반복들에 의해 컴퓨팅된 변수 SYX로 나누어진다. 단계(S59)에서, 변수 PXY는 변수 VXY의 로그(예를 들어, 베이스 2)와 변수 VXY 간의 곱만큼 증분된다. 단계(S60)에서, 인덱스 l가 1 만큼 증분된다. 단계(S61)에서, 인덱스 l가 그의 최대 값 lx과 비교된다. 인덱스 l가 그의 최대 값 lx에 도달하였으면, 단계들(S62 내지 S64)이 실행되며, 그렇지 않으면, 단계(S58 내지 단계(S61)의 새로운 반복이 실행된다.
단계(S62)에서, 테이블 TT 내의 인덱스 g에 의해 지정된 값 TT[g]이 이 값으로부터, 변수 PXY와 트레이스들 Ci의 수 ix로 나누어진 값 CPT[g,VL] 간의 곱을 감산함으로써 업데이트되며, 상기 값 CPT[g,VL]은 단계(S22)에서 채워진 테이블 CPT 내에서 인덱스들 g 및 VL에 의해 지정된다. 단계(S63)에서, 인덱스 VL가 1 만큼 증분된다. 단계(S64)에서, 인덱스 VL가 그의 최대 값 VLx과 비교된다. 인덱스 VL가 그의 최대 값 VLx보다 크면, 단계들(S65 및 S66)이 실행되며, 그렇지 않으면, 단계(S53)로부터의 새로운 반복이 실행된다. 단계(S65)에서, 인덱스 g가 1 만큼 증분된다. 단계(S66)에서, 인덱스 g가 그의 최대 값 gx과 비교된다. 인덱스 g가 그의 최대 값 gx보다 크면, 단계(S67)가 실행되고, 그렇지 않으면, 단계(S52)로부터의 새로운 반복이 실행된다. 단계(S67)에서, 테이블 TT이 통계적 분석의 결과로서 리턴된다.
따라서, 단계(S66) 후의, 마지막 반복 시에, 테이블 TT은 다음의 값들을 포함한다:
Figure pat00007
(5)
여기서,
Figure pat00008
는 인덱스들 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)를 도입하는 것을 수반한다. 이러한 구성은 해당 회로와 속도를 맞추는 클록 사이클의 지속시간이 랜덤하게 가변되게 함으로써 또는 랜덤하게 선택된 시간에 더미 프로세싱 사이클들 또는 연산들을 도입함으로써 이루어질 수 있다. 테이블들 HT 내의 값들의 계산은 시간 측면이 분석된 값들로부터 제거되게 하고 분석된 값들의 상이한 트레이스들을 동기화시켜야 하는 것을 피한다. 탐색된 비밀 데이터에 대한 정보가 분석된 데이터 내에 있다면, 이전에 기술한 테스트 방법은 비밀 데이터의 전부 또는 일부가 결정되게 할 수 있다.
적합한 대응 조치들
일부 실시예들은 전술한 테스트 방법을 포함하는 자격 또는 검증 테스트 동안에, 회로가 사용될 수 있도록 고려되게 하는 대응 조치 수단에 관한 것이다.
전술한 테스트 방법에 의해 구현된 분석으로부터 암호화 연산을 보호하는 것이 본원에서 제안된다. 이러한 맥락에서, 연산은 입력 데이터를 수신하고, 입력 데이터의 값에 따라서 출력 데이터를 제공한다. 일 실시예에 따른 대응 조치는 해당 연산에 의해 프로세싱될 가능성이 있는 모든 가능한 데이터를 오직 한번 포함하며 이로써 해당 연산에 의해 프로세싱될 데이터를 포함하는 입력 데이터 세트의 모든 데이터에 대해 보호될 해당 연산을 실행하는 것을 수반한다. 다른 대응 조치는 해당 연산에 의해서 제공될 가능성이 있는 모든 가능한 데이터를 오직 한번 포함하는 출력 데이터의 세트를 해당 연산의 결과로서 제공하는 것을 수반한다. 출력 데이터 세트는 데이터의 서브세트로 환원될 수 있으며 선택된 전사 함수를 적용함으로써 생성되는 상기 서브세트의 변환된 데이터는 입력 데이터에 대응하는, 연산으로부터 예상된 출력 데이터를 포함하는, 이러한 함수에 의해서 획득될 가능성이 있는 모든 데이터를 오직 한번 포함한다. 선택된 전사 함수는 보호될 회로 또는 소프트웨어 프로그램의 누설 패턴에 대응할 수 있다.
랜덤 데이터와 관련되며 이로써 보호될 연산의 입력 데이터와 상관성이 없는 동일한 연산들의 플러드(flood) 내에 보호될 연산을 "드라우닝(drowning)"시키는 것을 수반하는 종래 기술의 대응 조치들과 달리, 본 발명의 사상은 해당 연산이 랜덤하게 선택되지 않은 다른 데이터에 대해 실행되게 하는 것이다. 실제로, 이러한 다른 데이터는, 이러한 다른 데이터 및 프로세싱될 데이터로 형성된 세트가 해당 연산에 의해 프로세싱될 가능성이 있는 모든 데이터를 포함하는 한, 입력 데이터와 상관성이 있다.
도 12는 일 실시예에 따른, 비밀 데이터 SD를 수반하는 암호화 연산을 컴퓨팅하기 위한 방법의 단계들(S71 내지 S77)을 나타낸다. 이러한 방법은 상술한 테스트를 성공적으로 통과하도록 구성된다. 단계들(S71 내지 S76)은 연속적으로 실행된다. 단계(S71)에서, 변수 RN는 이진 코드로 이러한 변수를 인코딩하는데 사용된 비트의 수에 따라 결정된 최대 값 nx 내지 0 간의 랜덤 값을 수신한다. 따라서, 변수 RN이 8 비트로 인코딩되면, nx는 255와 동일하다. 단계(S72)에서, 인덱스 n가 0으로 설정된다. 단계(S73)에서, 변수 IRN가 Exclusive OR 연산에 의해 인덱스 n를 변수 RN와 결합시킴으로써 컴퓨팅된다. 단계(S74)에서, 결과 테이블 RS 내의 인덱스 n에 의해 지정된 출력 데이터 RS[n]가 상술한 바와 같은 암호화 연산 OPR을 입력 데이터 M, 및 비밀 데이터 SD에 적용함으로써 컴퓨팅된다. 일 실시예에 따라서, 비밀 데이터 SD는 여기에서 예를 들어, XOR 연산(Exclusive OR)에 의해서 변수 IRN과 다음과 같이 결합된다:
Figure pat00009
(6)
"
Figure pat00010
"은 Exclusive OR 연산자를 나타낸다.
이와 달리, 변수 IRN는 다음과 같이 입력 데이터 M과 결합될 수 있다:
Figure pat00011
(7)
또는, 다음과 같이 해당 연산의 결과와 결합될 수 있다:
Figure pat00012
(8)
단계(S75)에서, 인덱스 n가 1 만큼 증분된다. 단계(S76)에서, 인덱스 n가 최대 값 nx과 비교되며, 인덱스 n이 최대 값 nx과 같거나 작으면, 단계들(S73 내지 S76)의 계산이 새롭게 반복된다. 그렇지 않다면, 단계(S77)가 실행된다. 단계(S77)에서, 인덱스 n1에서 테이블 RS 내에 포함된, 탐색된 출력 데이터는 리턴되며, 이러한 인덱스 n1은 반복 인덱스 n의 값을 가지며, 단계(S74)에서 값 IRN과의 결합 연산이 XOR 연산이면 변수 IRN는 0으로 존재하였다. 실제로, 데이터 D 및 0에 적용된 Exclusive OR 연산의 결과는 데이터 D를 변환시키지 않는다. 테이블 RS 내에서 탐색된 출력 데이터가 단계(S77)에서, 다른 연산들 후에, 추출될 수 있다는 것이 주목될 수 있다. 이러한 경우에, 테이블 RS 내에 저장된 모든 데이터는 이러한 다른 연산들에 의해 프로세싱된다. 따라서, AES 알고리즘의 경우에, 예를 들어, 연산 OPR은 예를 들어, 알고리즘의 제 1 회에서 사용된 제 1 키와 입력 데이터를 결합하는 XOR 연산이다. AES 알고리즘의 다음의 연산들은 테이블 RS 내에 저장된 모든 데이터에 대해 실행될 수 있으며, 이러한 연산들의 연속하는 결과들은 테이블 RS 내에 저장된다. 따라서, 열들을 시프팅(shifting)하고 행들을 믹싱(mixing)하는 연산들이 테이블 RS의 각 요소에 적용될 수 있다. 탐색된 출력 데이터는 공격에 덜 민감하다고 고려된 프로세싱의 후속 단계에서 결과 테이블 RS로부터 추출될 수 있다. 이러한 구성은 또한 DES 또는 Triple DES 알고리즘에 적용가능하다.
또한, 입력 데이터 M 및 비밀 데이터 SD가 동일한 비트 수를 갖는 이진 워드들에 의해 인코딩된다. 변수 IRN에 주어진 각 값도 또한 데이터 M 및 SD와 동일한 비트 수를 가져야 한다. 데이터 M 및 SD가 8-비트 워드에 의해 인코딩되면, 변수 IRN도 또한 8 비트로 인코딩된다. 단계들(S73 내지 S76) 간에서 실행되어야 하는 반복 횟수 nx는 2x와 동일하며, x는 데이터 M 및 SD의 비트 수의 크기이다. 데이터 M 및 SD가 16, 32 또는 64 비트의 워드에 의해 인코딩되면, 이러한 반복 횟수들을 제한하는 것이 바람직할 수 있다. 이를 위해서, 변수 IRN는 8 비트로 인코딩될 수 있으며, 비밀 데이터 SD 또는 입력 데이터를 변수 IRN와 결합하는 연산들은 비밀 데이터 SD 또는 입력 데이터 M의 크기의 워드를 형성하도록 변수 IRN를 그 자신과 수회 연결(concatenating)함으로써 수행될 수 있다. 따라서, 데이터 M 및 SD가 16 비트로 인코딩되는 경우에, 8 비트의 변수 IRN이 그 자신과 연결되어서 16 비트의 데이터가 획득된다. 이어서, 단계(S73)에서 실행된 연산은 다음이 된다:
Figure pat00013
(9)
"//"는 이진 워드의 연결 연산자를 나타낸다. 데이터 M 및 SD가 32 비트로 인코딩된 경우에, 8 비트의 변수 IRN의 각 값은 그 자신과 3 회 연결되어서 32 비트의 값이 획득된다. 이어서, 단계(S73)에서 실행된 연산은 다음이 된다:
Figure pat00014
(10)
보다 일반적으로, 변수 IRN이 각 반복 시에 연산 OPR의 출력 데이터와 결합되는 때에, 변수 IRN의 값들은, 선택된 전사 함수 F3의 적용으로부터 생성되는 그들의 변환된 값들이 이러한 함수에 의해 획득될 가능성이 있는 모든 가능한 값들을 오직 한번 포함하도록 선택될 수 있다. 함수 F3는 도 12의 단계들에 대한 것과 같은 항등 함수일 수 있거나, 또는 도 13에서와 같이 보다 작은 이미지 세트를 갖는 함수일 수 있다.
이로써, 도 13은 다른 실시예에 따른, 비밀 데이터 SD를 수반하는 암호화 연산을 컴퓨팅하는 방법의 단계들(S80 내지 S92)을 나타낸다. 이러한 방법은 전술한 테스트를 성공적으로 통과하도록 구성된다. 단계들(S80 내지 S54)은 연속적으로 실행된다. 단계(S80)는 단계(S71)와 동일하다. 단계(S81)에서, 인덱스 n가 1로 설정되고 인덱스 m은 0으로 설정된다. 단계(S82)에서, 테이블 RS1의 인덱스 0의 값은 입력 데이터 M 및 비밀 데이터 SD에 적용된 연산 OPR의 결과를 수신하며, 이러한 결과는 Exclusive OR 연산에 의해 랜덤 데이터와 결합된다. 단계(S83)는 단계(S73)와 동일하다. 단계(S84)는 이러한 단계에서 수행된 계산 결과가 변수 RES에 의해 저장되는 점을 제외하면, 단계(S74)와 동일하다. 또한, 단계(S83)에서 컴퓨팅된 데이터 IRN은 Exclusive OR 연산에 의해, 연산 OPR에 의해 제공된 결과와 결합된다. 단계(S85)에서, 함수의 F3의 적용으로부터 생성되는 변수 RES의 변환된 값이 인덱스 m과 같거나 작은 인덱스들에 의해 지정된 위치들에서 테이블 RS 내에 저장된 다른 데이터의 함수 F3에 의해 변환된 값들과 비교된다. 변수 RES의 변환된 값 F3(RES)이 이러한 다른 데이터와 상이하면, 단계(S86) 및 단계(S87)에서, 인덱스 m은 1 만큼 증분되고 변수 RES가 인덱스 m에 의해 지정된 위치에서 테이블 RS1 내에 저장된다. 그렇지 않으면, 변수 RES의 변환된 값 F3(RES)이 인덱스 n2에서 테이블 RS 내의 값 RS1[n2]의 변환된 값 F3(RS1[n2])과 동일하도록 인덱스 n2가 존재한다. 이러한 경우에, 인덱스 n는 단계(S88)에서 인덱스 값 n1과 비교되며, 여기서 연산 OPR의 마스킹되지 않은 결과가 테이블 RS 내에 저장된다(n1
Figure pat00015
RN=0). 인덱스 n이 인덱스 값 n1과 동일하면, 결과 RES는 연산 OPR의 진정한 결과(true result)이며, 이는 단계(S89)에서 인덱스 n2에서 테이블 RS1 내에 저장된다. 인덱스 n이 1만큼 증분되는 단계(S90)는 단계들(S87, S89 및 S88) 후에 (인덱스 n이 인덱스 n1에 대응하지 않을 때에) 수행된다. 다음 단계(S91)에서, 인덱스 n이 최대값 nx와 비교되며, 인덱스 n이 최대값 nx보다 작거나 같으면, 단계(S83) 내지 단계(S91)의 계산이 새롭게 반복되며, 그렇지 않으면, 단계(S92)가 실행된다. 단계(S92)는 테이블 RS1에 적용된다는 점을 제외하면 단계(S77)와 동일하다.
함수 F3는 보호될 소프트웨어 프로그램 또는 회로의 누설 패턴에 대응하도록 선택될 수 있다. 따라서, 함수 F3는 예를 들어, Hamming 함수일 수 있다.
보호될 연산이 보호될 비밀 데이터 및 연산의 입력 데이터에 대응하는 인덱스에서, 또는 그로부터 비밀 데이터가 결정될 수 있는 데이터에 대응하는 인덱스에서, 룩업 테이블을 판독하는 연산을 포함하는 경우에, 다른 대응 조치가 구현될 수 있다. 일 실시예에 따라서, 전체 룩업 테이블이 판독되며, 예를 들어, 결과적인 데이터의 세트, 예를 들어, 테이블 RS 내로 로딩된다. 상술한 바와 같이, 테이블 RS 내에 저장된 데이터 세트는 다음 연산의 입력에 적용될 수 있으며, 해당 테이블의 각 데이터는 이러한 연산에 의해 변환된다. 테이블 RS 내에서의 출력 데이터의 위치를 알 수 있기 때문에, 회로는 어느 시간에서라도 출력 데이터를 추출할 수 있다.
일 실시예에 따라서, 룩업 테이블은 새로운 테이블로 변환되며, 상기 새로운 테이블 내에서 각 위치는 룩업 테이블 내에 포함될 가능성이 있는 모든 가능한 값들을 포함한다. 따라서, 도 14는 0 내지 p 간에서 변하는 입력 값들에 따라서 암호화 연산을 결정하는 것을 가능하게 하는 룩업 테이블 T1을 나타낸다. 일 실시예에 따라서, 테이블 T1은 0 내지 p 간의 인덱스 i의 모든 가능한 값들에 대해 T2[i,k0] = T1[i]이도록 추가 차원을 갖는, 새로운 테이블 T2로 대체된다. 또한, k가 o 내지 r 간에서 변할 때에 모든 값들 T2[i,k]은 테이블 T1 내에 저장될 가능성이 있는 값들의 모든 가능한 값들을 포함한다. 따라서, 이러한 값들이 1 바이트로 인코딩되면, 인덱스 k의 최대 값 r은 255와 동일하며, 인덱스 i가 확보되고 인덱스 k가 0 내지 r 간에서 변할 때에 모든 값들 T2[i,k]은 상이하다. 따라서, 인덱스 i에 의해 지정된 모든 테이블들 T2[i,j]은 동일한 값들을 포함하지만 상이하게 배열된다. 예를 들어, 테이블 내의 데이터는 다음의 방식으로 규정될 수 있다:
0 내지 r 간의 모든 값들 k에 대해,
Figure pat00016
(11).
이로써 보호될 연산의 실행은 다음과 같이, 입력 데이터(및 가능하게는 비밀 데이터)로부터 규정된 인덱스 i에 의해 지정된 테이블 T2의 모든 값들을 결과 테이블(예를 들어, 테이블 RS) 내에 로딩하는 것을 수반한다:
RS[0..r] = T2[i,0..r]
상술한 바와 같이, 이어서, 단계(S77 또는 S90)가 실행되어 결과 테이블 RS 내에서 탐색될 출력 데이터를 획득할 수 있다.
T2[i,k0] = T1[i]이도록, 즉 해당 연산의 출력 데이터를 포함하는, 인덱스 k0의 값은 전체 테이블 T2 상에서 고정될 수 있거나, 테이블의 각 열 상에서 변할 수 있다. 예를 들어, 행 T2[0..p,k0]은 테이블 T1을 포함할 수 있다. 다른 실례에서, 테이블 요소 T2[0,k0]는 요소 T1[0]와 동일할 수 있으며, 요소 T2[1,k0+1]는 요소 T1[1]와 동일할 수 있으며, 이러한 바가 계속되어서, 요소 T2[p, (k0+p) mod (r+1)]는 요소 T1[p]와 동일할 수 있다. 이러한 실례에서, 테이블 T2의 일 열에서 다음 열까지의 시프트 피치(shift pitch)가 1이면, 이는 1 내지 r-2 간의 임의의 다른 값으로 설정될 수 있다.
0 내지 r 간의 모든 값들을 포함하는 대신에, 인덱스 i에 의해 선택된 각 테이블 요소 T2[i]는 예상 출력 데이터를 포함하는 값들만을 포함할 수 있으며, 이로써 선택된 전사 함수 F3의 적용으로부터 기인되는 그들의 변환된 값들은 모두가 상이하며 이러한 함수에 의해 획득될 가능성이 있는 모든 가능한 값들을 포함한다. 이러한 구성은 함수 F3가 비밀 데이터의 누설 패턴을 재현하는 경우에 본 방법의 강성을 저감시키지 않으면서, 테이블 T2의 크기가 저감되게 할 수 있다.
테이블 T1이 2 개의 차원들을 가지며, 테이블 T2는 3 개의 차원들을 가지며, 테이블 T1의 각 요소는 테이블 테이블 T1의 요쇼들의 모든 가능한 값들을 포함하는 1차원 테이블로 대체될 수 있다는 것이 이해될 것이다.
도 15는 일 실시예에 따른, 휴대용 매체(HD), 예를 들어, 플라스틱 카드 상에 배치되고 대응 조치 수단을 구비한 집적 회로(CT1)를 나타낸다. 집적 회로는 도 1을 참조하여서 상술한 집적 회로(CT)와 동일한 유닛들을 포함하며, 코프로세서(CP1)가 상술한 대응 조치들 중 하나 및/또는 다른 것을 구현하는 코프로세서(CP2)로 대체된다는 점에서 도 1을 참조하여서 상술한 집적 회로(CT)와 상이하다. 따라서, 일 실시예에 따라서, 코프로세서(CP2)는 암호화 연산의 단일 결과보다는, 결과적인 값들의 테이블을 제공하도록 구성되며, 이러한 값들은 선택된 전사 함수의 적용으로부터 기인되는 그들의 각각의 변환된 값들이 모두 상이하며 암호화 연산의 예상 결과를 포함하는, 선택된 전사 함수에 의해 획득될 가능성이 있는 모든 가능한 값들을 포함하도록 되는 값들만을 포함한다. 프로세서(PRC)는 코프로세서(CP2)에 의해 제공된 결과적인 값들의 테이블 내에서 해당 암호화 연산의 결과의 위치를 알도록 코프로세서(CP2)와 매칭된다.
코프로세서(CP2)는 또한 해당 암호화 연산의 일부를 실행하도록 구성될 수 있다. 이러한 경우에, 프로세서(PRC)는 선택된 전사 함수의 적용으로부터 기인되는 그들의 각각의 변환된 값들이 모두 상이하며 암호화 연산의 결과를 포함하는, 선택된 전사 함수에 의해 획득될 가능성이 있는 모든 가능한 값들을 포함하도록 되는 값들만을 포함하는 결과적인 값들의 테이블을 생성하도록 구성된다.

Claims (9)

  1. 입력 데이터(M)를 수신하여 출력 데이터를 제공하는 연산(OPR)을 회로(CT1)에 의해 실행하는 방법으로서,
    상기 입력 데이터 또는 중간 데이터의 함수로서 대체 테이블(T2) 내의 대체 요소(T2[i,0..r])를 선택하는 단계로서, 상기 대체 요소는 제 1 데이터 세트이며, 입력 대체 데이터의 함수로서 선택될 수 있는 상기 대체 테이블 내의 각 대체 요소는 데이터 세트인, 상기 선택하는 단계; 및
    상기 제 1 데이터 세트(RS)를 상기 연산의 중간 결과 또는 최종 결과로서 제공하는 단계로서, 상기 제 1 데이터 세트는 상기 출력 데이터를 포함하며, 상기 제 1 데이터 세트에 선택된 전사 함수(F3)를 적용하는 것으로부터 기인되는 변환된 데이터의 세트 내에서, 상기 변환된 출력 데이터가 상기 제 1 데이터 세트 내의 다른 데이터에 상기 전사 함수를 적용하는 것으로부터 기인되는 각 변환된 데이터의 발생 확률과 동일한 확률로 발생하도록 되며, 상기 출력 데이터는 상기 회로가 알고 있는 상기 제 1 데이터 세트 내의 위치를 갖는, 상기 제공하는 단계;를 포함하는, 연산 실행 방법.
  2. 제 1 항에 있어서,
    상기 대체 테이블 내의 대체 요소들 중 하나를 형성하는 각 데이터 세트 중의 데이터가 상기 전사 함수(F3)에 의해 변환된 각각의 변환된 데이터는, 상기 전사 함수에 의해 제공될 수 있는 동일한 발생 횟수를 갖는 모든 가능한 데이터를 포함하는, 연산 실행 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 전사 함수(F3)는 상기 회로(CT1)의 데이터 누설 모델의 함수로서 선택되는, 연산 실행 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 전사 함수(F3)는,
    항등 함수,
    후속하여 Hamming 가중치에 대응하는 값으로 환원되는 결과 값을 제공하는 함수, 및
    함수가 적용된 값의 Hamming 가중치를 제공하는 함수,
    중 하나인, 연산 실행 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 연산 (OPR)은,
    대칭적 또는 비대칭적 암호화 또는 복호화 연산,
    시그니처 연산,
    비밀 데이터만큼의 모듈러 또는 비-모듈러 승산(non-modular multiplication),
    비밀 데이터와의 로직 Exclusive OR 연산,
    비밀 데이터가 지수로서 사용되는 모듈러 지수 연산, 및
    비밀 데이터가 모듈러스로서 사용되는 모듈러 환원 연산(modular reduction operation),
    중 적어도 하나를 포함하는, 연산 실행 방법.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 따른 방법을 구현하도록 구성된 프로세서(PRC)를 포함하는 회로(CT1).
  7. 제 1 항 내지 제 5 항 중 어느 한 항에 따른 방법을 구현하도록 구성된 코프로세서(CP2)를 포함하는 회로(CT1).
  8. 지지체 상에 배치된, 제 6 항 또는 제 7 항에 따른 회로를 포함하는 디바이스.
  9. 컴퓨터의 내부 메모리 내에 직접적으로 로딩가능한 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터에 의해 실행될 때, 제 1 항 내지 제 5 항 중 어느 한 항에 따른 방법의 단계들을 실행하도록 하는 코드 부분들을 포함하는, 컴퓨터 프로그램 제품.
KR1020170023792A 2016-02-22 2017-02-22 부채널 분석으로부터 회로를 보호하는 방법 KR20170098730A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
FR1651443A FR3048086B1 (fr) 2016-02-22 2016-02-22 Procede de test de la resistance d'un circuit a une analyse par canaux auxiliaires
FR1651443 2016-02-22
FR1651445 2016-02-22
FR1651444A FR3048096A1 (fr) 2016-02-22 2016-02-22 Procede de protection d'un circuit contre une analyse par canaux auxiliaires
FR1651445A FR3048097A1 (fr) 2016-02-22 2016-02-22 Procede de protection d'un circuit contre une analyse par canaux auxiliaires
FR1651444 2016-02-22

Publications (1)

Publication Number Publication Date
KR20170098730A true KR20170098730A (ko) 2017-08-30

Family

ID=57995161

Family Applications (6)

Application Number Title Priority Date Filing Date
KR1020170023794A KR20170098732A (ko) 2016-02-22 2017-02-22 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023803A KR20170098733A (ko) 2016-02-22 2017-02-22 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023789A KR20170098729A (ko) 2016-02-22 2017-02-22 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023805A KR20170098734A (ko) 2016-02-22 2017-02-22 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023792A KR20170098730A (ko) 2016-02-22 2017-02-22 부채널 분석으로부터 회로를 보호하는 방법
KR1020170023793A KR20170098731A (ko) 2016-02-22 2017-02-22 부채널 분석으로부터 회로를 보호하는 방법

Family Applications Before (4)

Application Number Title Priority Date Filing Date
KR1020170023794A KR20170098732A (ko) 2016-02-22 2017-02-22 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023803A KR20170098733A (ko) 2016-02-22 2017-02-22 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023789A KR20170098729A (ko) 2016-02-22 2017-02-22 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023805A KR20170098734A (ko) 2016-02-22 2017-02-22 부채널 분석에 대한 회로의 저항력을 테스트하는 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020170023793A KR20170098731A (ko) 2016-02-22 2017-02-22 부채널 분석으로부터 회로를 보호하는 방법

Country Status (4)

Country Link
US (6) US10419206B2 (ko)
EP (6) EP3217307B1 (ko)
KR (6) KR20170098732A (ko)
CN (6) CN107103229A (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
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.
EP3217307B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
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
FR3078463A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution
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
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.

Family Cites Families (115)

* Cited by examiner, † Cited by third party
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
JP4739465B2 (ja) * 1997-06-09 2011-08-03 インタートラスト テクノロジーズ コーポレイション ソフトウェアセキュリティを増強するための混乱化技術
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
WO1999067909A2 (en) * 1998-06-03 1999-12-29 Cryptography Research, Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
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
JP2005527853A (ja) * 2002-05-23 2005-09-15 アトメル・コーポレイション 高度暗号化規格(aes)のハードウェア暗号法エンジン
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
WO2006006198A1 (ja) * 2004-07-07 2006-01-19 Mitsubishi Denki Kabushiki Kaisha 電力算出装置、電力算出方法、耐タンパ性評価装置及び耐タンパ性評価方法
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
US8312297B2 (en) * 2005-04-21 2012-11-13 Panasonic Corporation Program illegiblizing device and method
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
BRPI0714242A2 (pt) * 2006-07-12 2013-01-29 Koninkl Philips Electronics Nv sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador
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 オランジュ 確率的対称暗号化のための方法およびエンティティ
US8848903B2 (en) * 2008-02-06 2014-09-30 Nec Corporation Device for evaluating side-channel attack resistance, method for evaluating side-channel attack resistance, and program for evaluating side-channel attack
US8139764B2 (en) * 2008-05-06 2012-03-20 Harris Corporation Closed galois field cryptographic system
US20100084472A1 (en) * 2008-10-02 2010-04-08 Silverbrook Research Pty Ltd Method of distinguishing first coding pattern from second 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
JP5552541B2 (ja) * 2009-12-04 2014-07-16 クリプトグラフィ リサーチ, インコーポレイテッド 検証可能な耐漏洩性暗号化および復号化
US8527766B2 (en) * 2009-12-30 2013-09-03 Microsoft Corporation Reducing leakage of information from cryptographic systems
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
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
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
RU2013125468A (ru) * 2010-11-03 2014-12-10 Вирджиния Тек Интеллекчуал Пропертиз, Инк. Использование технологии слежения за мощностью для контроля целостности и повышения безопасности компьютерных систем
CN107317586B (zh) * 2011-01-14 2020-11-06 Ge视频压缩有限责任公司 熵编码设备和方法、熵解码设备和方法、及存储介质
FR2972064B1 (fr) * 2011-02-25 2013-03-15 Inside Secure Procede de cryptographie comprenant une operation d'exponentiation
US20130086328A1 (en) * 2011-06-13 2013-04-04 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カード
CN104335219B (zh) * 2012-03-30 2018-06-05 爱迪德技术有限公司 使用变量相关编码来保护可访问的系统
KR20130111721A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서
WO2014028005A1 (en) * 2012-08-14 2014-02-20 Empire Technology Development Llc Software-based side-channel attack prevention
EP3879487B1 (en) * 2012-10-26 2023-11-29 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
JP2016517597A (ja) * 2013-03-15 2016-06-16 パワー フィンガープリンティング インコーポレイテッド コンピュータベースのシステムに電力指紋付けシステムを使用して保全性評価を強化するシステム、方法、及び装置
US10025929B2 (en) * 2013-03-18 2018-07-17 The Trustees Of Columbia University In The City Of New York Detection of anomalous program execution using hardware-based micro-architectural data
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
CN103647638A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种抵抗侧信道攻击的des掩码方法
CN103647639A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种对称密码算法抵抗侧信道分析的方法
US10055587B2 (en) * 2013-12-23 2018-08-21 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
US9838198B2 (en) * 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
US9584310B2 (en) * 2014-03-19 2017-02-28 Nxp B.V. Protecting a white-box implementation against attacks
US9425952B2 (en) * 2014-03-27 2016-08-23 Samsung Israel Research Corporation Algebraic manipulation detection codes from algebraic curves
WO2015149827A1 (en) * 2014-03-31 2015-10-08 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
US9740863B2 (en) * 2014-11-25 2017-08-22 Intel Corporation Protecting a secure boot process against side channel attacks
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
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
EP3217307B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
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

Also Published As

Publication number Publication date
US20170244548A1 (en) 2017-08-24
KR20170098734A (ko) 2017-08-30
KR20170098731A (ko) 2017-08-30
US10419206B2 (en) 2019-09-17
US20170244551A1 (en) 2017-08-24
US10230521B2 (en) 2019-03-12
CN107104783A (zh) 2017-08-29
CN107103229A (zh) 2017-08-29
KR20170098733A (ko) 2017-08-30
CN107103246A (zh) 2017-08-29
EP3208788A1 (en) 2017-08-23
EP3220304A1 (en) 2017-09-20
US20170244547A1 (en) 2017-08-24
EP3208789B1 (en) 2020-08-05
US20170244549A1 (en) 2017-08-24
EP3217307A1 (en) 2017-09-13
US20170244552A1 (en) 2017-08-24
KR20170098729A (ko) 2017-08-30
CN107104784A (zh) 2017-08-29
CN107104785A (zh) 2017-08-29
US10243729B2 (en) 2019-03-26
EP3220306A1 (en) 2017-09-20
EP3220305B1 (en) 2018-10-31
EP3208789A1 (en) 2017-08-23
US10505711B2 (en) 2019-12-10
CN107102919A (zh) 2017-08-29
EP3220305A1 (en) 2017-09-20
EP3220306B1 (en) 2018-11-07
EP3220304B1 (en) 2018-11-07
US10320555B2 (en) 2019-06-11
EP3208788B1 (en) 2020-06-03
EP3217307B1 (en) 2018-11-07
KR20170098732A (ko) 2017-08-30
US20170244550A1 (en) 2017-08-24

Similar Documents

Publication Publication Date Title
EP3208788B1 (en) Method of protecting a circuit against a side-channel analysis
US20170373830A1 (en) Method for protecting substitution operation against side-channel analysis
US11036891B2 (en) Testing resistance of a circuit to a side channel analysis
Tunstall Smart card security
KR101792650B1 (ko) 사이드 채널 분석에 대한 집적 회로의 저항을 테스트하는 방법
Hogenboom et al. Principal component analysis and side-channel attacks-master thesis
EP3264667B1 (en) A method for protecting a substitution operation against a side-channel analysis
Tunstall Secure cryptographic algorithm implementation on embedded platforms