KR20180002065A - 부채널 분석에 대응한 보호 방법 및 장치 - Google Patents

부채널 분석에 대응한 보호 방법 및 장치 Download PDF

Info

Publication number
KR20180002065A
KR20180002065A KR1020170081855A KR20170081855A KR20180002065A KR 20180002065 A KR20180002065 A KR 20180002065A KR 1020170081855 A KR1020170081855 A KR 1020170081855A KR 20170081855 A KR20170081855 A KR 20170081855A KR 20180002065 A KR20180002065 A KR 20180002065A
Authority
KR
South Korea
Prior art keywords
data
input data
output
input
byte
Prior art date
Application number
KR1020170081855A
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 EP16176717.3A external-priority patent/EP3264667B1/en
Priority claimed from EP16176718.1A external-priority patent/EP3264396B1/en
Priority claimed from EP16176716.5A external-priority patent/EP3264666B1/en
Priority claimed from EP16176721.5A external-priority patent/EP3264668B1/en
Priority claimed from EP16176719.9A external-priority patent/EP3264397B1/en
Application filed by 에샤르 filed Critical 에샤르
Publication of KR20180002065A publication Critical patent/KR20180002065A/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]
    • 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
    • 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/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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 제1 및 제2 입력 데이터를 결합하는 연산을 실행하고 동일한 크기의 출력 데이터를 제공하는 방법에 관한 것으로, 이 방법은 제1 데이터의 크기와 관련하여 모든 가능한 데이터를 포함하는 제1 입력 세트를 제1 입력 데이터로부터 생성하는 단계, 제2 데이터 크기와 관련하여 모든 가능한 데이터를 포함하는 제2 입력 세트를 제2 입력 데이터로부터 생성하는 단계, 제1 입력 세트의 데이터 및 제2 입력 세트의 데이터를 포함하는 각 데이터 쌍에 연산을 적용하는 단계, 각각의 데이터 쌍에 대한 연산의 적용으로부터 기인한 데이터를 포함하는 연산의 출력 세트를 포함한다.

Description

부채널 분석에 대응한 보호 방법 및 장치{A PROTECTION METHOD AND DEVICE AGAINST A SIDE-CHANNEL ANALYSIS}
본 발명은 회로 또는 프로그램에 의해 프로세싱되는 비밀 데이터의 값, 특히 메시지를 변환하기 위해서 암호화 또는 복호화 알고리즘에 의해 사용되는 비밀 키를 발견하는 것을 목적으로 하는 사이드 채널 분석으로부터 상기 회로 또는 프로그램을 보호하는 방법 및 장치에 관한 것이다.
본 발명은 특히, AES(Advanced Encryption Standard)와 같은 암호화 알고리즘을 구현하는, 컴퓨터의 마더 보드 및 다른 전자장치 및 IT 장비(USB 드라이브, TV 디코더, 게임 콘솔, 등)에 통합된 스마트 카드 집적 회로 또는 하드웨어 암호화 구성 요소에 관한 것이다. 또한, 본 발명은 보안 또는 비보안 환경에서 실행되도록 구성된, 이러한 알고리즘을 구현하는 프로그램에 관한 것이다.
보다 일반적으로, 본 발명은 은폐 상태로 유지되어야 하는 두 개의 데이터를 결합하는 연산을 구현하는 회로 및 소프트웨어에 관한 것이다.
암호화 알고리즘을 구현하는 회로는 예를 들어, 암호화 코프로세서와 같은, 암호화 연산에 전용되는, 중앙 프로세싱 유닛(CPU), 및 가능하게는 회로를 포함할 수 있다. 이들 회로는 실행된 연산들에 따라 상이하게 스위칭하는 수천 개의 논리 게이트를 포함할 수 있다. 이러한 스위칭 연산은 예를 들어, 수 나노초의 짧은 소비 전류량 편차를 생성하며 이러한 편차는 측정될 수 있다. 특히, CMOS-타입 집적 회로들이 스위칭할 때에만, 즉 논리 노드가 자신의 상태를 1 또는 0으로 변경할 때에만, 전류를 소비하는 논리 게이트를 포함한다. 따라서, 전류 소비량은 중앙 프로세싱 유닛에 의해 프로세싱되는 데이터 및 그의 다양한 주변 장치: 메모리, 데이터 또는 어드레스 버스들, 암호화 코프로세서, 등에 의존한다.
또한, 화이트-박스 암호화 기법(White-box Cryptography technique)과 같은, 암호화 또는 난독화 기법을 사용하는 특정 소프트웨어 프로그램은, 리버스 엔지니어링을 사용하여 비밀 데이터를 결정하는 것이 매우 어렵게 되도록, 비밀 데이터를 포함시킬 수 있다. 특정 소프트웨어 프로그램은 또한 보안 통신 채널을 통해 외부로부터 비밀 데이터를 수신할 수 있다.
이러한 회로들은 이들의 전류 소비량, 또는 이들의 자기 또는 전자기 방사량을 관찰하는 것에 기초하는, 소위 사이드 채널 분석 공격을 받을 수 있다. 이러한 공격은 비밀 데이터, 특히 암호화 키를 발견하는 것을 목표로 한다. 현재의 사이드 채널 공격은 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 분석 중 하나 또는 다른 것과 같은 분석에 의해, 저뉼 소비량 변화 신호처럼 간주될 수 있다. 이러한 분석의 적용 사례는 2001년에 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, p. 172-186. Springer, Heidelberg(2003)) 및 "상호 정보 분석"(MIA)(다음 문헌 참조: B. Gierlichs, L. Batina, P. Tuyls, and B. Preneel, "Mutual Information Analysis", CHES 2008, volume 5154 of LNCS, p. 426-442, Springer, 2008)과 같은 다른 사이드 채널 분석이 존재한다. 달리 말하면, 소정의 시간에, 예를 들어, 명령의 실행이 해당 회로에 의해 활성화되는 시간으로부터, 수행되는 모든 측정들은 이러한 알고리즘에 의해 처리되는 동일한 데이터에 대응해야 한다.
본 출원인에 의해 2016년 2월 22 일에 출원된 특허 출원 번호 FR16 51443은 회로가 상이한 입력 데이터에 대해 연속적으로 연산을 수행할 때 회로의 활동도를 나타내는 트레이스를 분석하는 방법을 개시한다. 이러한 방법은 각각의 트레이스의 일부를 추출하고, 트레이스의 추출된 부분 각각으로부터 히스토그램을 생성하고, 이러한 트레이스의 추출된 부분들 각각에서 나타나는 각 가능한 값의 발생 횟수를 카운팅하는 것을 포함한다. 이어서, 해당 연산의 부분적 결과들이, 각 입력 데이터 및 해당 연산에 수반된 비밀 키의 일부의 각 가능한 값에 해당 연산을 적용함으로써, 계산된다. 그런 다음, 이 방법은 비밀 키의 각 가능한 부분 값에 대해, 동일한 부분적 결과를 제공하는 모든 입력 데이터를 식별한다. 이어서, 이러한 비밀 키의 각 가능한 부분 값에 대해, 식별된 입력 데이터 및 이러한 비밀 키의 부분 값에 대응하는, 히스토그램들 내에서의 발생 횟수가 추가된다. 비밀 키의 일부는 상기 추가된 발생 횟수를 통계 분석에 적용함으로써 결정될 수 있다. 이러한 통계 분석에서는, 상기 비밀 키와 관련된 값이 상기 트레이스들의 추출된 부분들에 누출되었다면, 이러한 사실이 상기 추가된 발생 횟수에 의해서 강조될 수 있다는 것이 가정된다.
이들 사이드 채널 분석 중 하나 이상으로부터 집적 회로 또는 소프트웨어 프로그램을 보호하는 것을 제안하는 것이 바람직할 수 있다.
제 1 입력 데이터가 제 2 입력 데이터와 결합되는 연산을 회로에 의해 실행하는 방법이 개시된다. 이 방법은 제 1 입력 데이터 세트의 각각의 데이터가 제 2 입력 데이터 세트의 각각의 데이터와 연관되도록 데이터 쌍들을 규정하는 단계로서, 상기 제 1 입력 데이터 세트는 상기 제 1 입력 데이터를 포함하고, 상기 제 1 입력 데이터 세트 내의 각 데이터는 적어도 하나의 워드(word)를 포함하며, 상기 제 1 입력 데이터 세트 내의 워드들은 동일한 크기를 가지며 제 1 워드 서브세트(subset)를 구성하며, 상기 제 1 워드 서브세트는 상기 제 1 입력 데이터 세트의 각각의 데이터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 워드들의 모든 가능한 값들을 포함하며, 상기 제 2 입력 데이터 세트는 상기 제 2 입력 데이터를 포함하고, 상기 제 2 입력 데이터 세트 내의 각 데이터는 적어도 하나의 워드(word)를 포함하며, 상기 제 2 입력 데이터 세트 내의 워드들은 동일한 크기를 가지며 제 2 워드 서브세트(subset)를 구성하며, 상기 제 2 워드 서브세트는 상기 제 2 입력 데이터 세트의 각각의 데이터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 워드들의 모든 가능한 값들을 포함하는, 상기 규정하는 단계; 및 상기 데이터 쌍들 각각에 상기 연산을 적용하는 단계로서, 상기 연산의 출력 데이터 세트는 상기 데이터 쌍들 중 하나의 쌍에 상기 연산을 적용함으로써 획득되는 모든 데이터를 포함하는, 상기 연산을 적용하는 단계를 포함할 수 있다. 상기 제 1 입력 데이터 및 상기 제 2 입력 데이터에 상기 연산을 적용함으로써 획득된 출력 데이터는 그의 출력 데이터 세트 내에서의 위치가 상기 회로에게 알려져 있다.
일 실시형태에 따라서, 상기 출력 데이터 세트 내의 데이터들은 행들 및 열들로 배열되고, 일 행 또는 일 열의 데이터들은 상기 제 1 입력 데이터 세트 및 상기 제 2 입력 데이터 세트 중 하나의 입력 데이터 세트 내의 동일한 일 데이터 및 상기 제 1 입력 데이터 세트 및 상기 제 2 입력 데이터 세트 중 다른 하나의 입력 데이터 세트 내의 데이터들 각각에 상기 연산을 적용함으로써 획득되며, 상기 방법은 상기 출력 데이터들을 포함하는 상기 출력 데이터 세트 중 일 행 또는 열을 선택하는 단계를 포함한다.
일 실시형태에 따라서, 상기 출력 데이터 세트는 2 개의 데이터 라인들을 포함하는 메모리 영역에 기록되고, 상기 2 개의 데이터 라인들 중 하나는 상기 연산을 상기 제 1 입력 데이터 및 상기 제 2 입력 데이터 세트 내의 데이터들 각각에 적용함으로써, 또는 상기 연산을 상기 제 2 입력 데이터 및 상기 제 1 입력 데이터 세트 내의 데이터들 각각에 적용함으로써 획득된 출력 데이터들을 포함한다.
일 실시형태에 따라서, 상기 출력 데이터 세트의 행들 또는 열들은 상기 메모리 영역의 상기 데이터 라인들에 랜덤하게 또는 교번적으로 기록되고, 알려진 위치에 있는 출력 데이터들을 포함하는 출력 데이터들의 행 또는 열이 상기 메모리 영역의 상기 데이터 라인들 중 하나의 데이터 라인에 기록될 때, 상기 메모리 영역의 상기 데이터 라인들 중 다른 데이터 라인은 후속하여 연산된 출력 데이터 세트의 모든 출력 데이터를 수신하고, 상기 방법은 상기 예상 출력 데이터를 포함하는 상기 메모리 영역의 데이터 라인을 상기 연산의 출력부로서 선택하는 단계를 포함하거나; 또는 상기 출력 데이터 세트의 행들 또는 열들은, 상기 메모리 영역의 상기 데이터 라인들 중 다른 데이터 라인에 기록된, 상기 출력 데이터 세트의 일 행 또는 열을 제외하고, 상기 메모리 영역의 상기 데이터 라인들 중 하나의 데이터 라인에 기록된 이전 데이터들과의 XOR 연산들에 의해 결합되며, 상기 메모리 영역의 상기 2 개의 데이터 라인들이 동일하지 않을 때 에러가 검출된다.
일 실시형태에 따라서, 상기 연산은 배타적 논리합(Exclusive OR)이다.
일 실시형태에 따라서, 상기 출력 데이터 세트 내의 상기 데이터들의 계산들(computations)은 랜덤 순서로 수행된다.
일 실시형태에 따라서, 상기 출력 데이터 세트의 일 행 또는 열에서, 상기 출력 데이터 세트 내의 다른 데이터와 발생 횟수와 상이한 발생 횟수를 갖는 데이터를 검출하는 단계를 더 포함하며, 상기 발생 횟수가 상이한 두 개의 데이터들이 상기 출력 데이터 세트의 일 행 또는 열에서 발견되면 에러가 검출된다.
일 실시형태에 따라서, 상기 출력 데이터 세트의 일 행 또는 열 내에서 2 개의 동일한 데이터를 검출하는 동작은, 상기 출력 데이터 세트의 해당 행 또는 열의 모든 데이터들을 XOR 연산에 의해 결합하는 동작과, 상기 XOR 연산들의 결과를 제로와 비교하는 동작을 포함한다.
일 실시형태에 따라서, 상기 제 1 입력 데이터 세트는 상기 제 1 입력 데이터를, 상기 제 1 입력 데이터와 동일한 비트 수를 갖는 마스크의 가능한 값들 각각과, XOR 연산에 의해, 한번 결합시킴으로써 생성된다.
일 실시형태에 따라서, 상기 방법은 상기 제 1 입력 데이터 세트 내의 다수의 데이터들을 서로 연결하여 제 1 입력 워드를 생성하는 단계; 상기 제 2 입력 데이터 세트 내의 동일한 수의 데이터들을 서로 연결하여 제 2 입력 워드를 생성하는 단계; 및 상기 제 1 입력 워드 및 제 2 입력 워드에 상기 연산을 적용하는 단계를 포함한다.
실시형태들은 또한 입력 데이터를 암호화 또는 복호화하는 방법에 관한 것이며, 이 방법은 배타적 논리합 연산을 상기 입력 데이터의 각 바이트, 및 비밀 키로부터 유도된 키의 대응하는 바이트에 적용하고, 상기 입력 데이터의 각 바이트에 대해, 출력 바이트들의 제 1 출력 데이터 세트를 제공하는 단계로서, 상기 출력 바이트들은 상기 입력 데이터의 바이트에 적용된 상기 연산의 결과를 포함하는 바이트의, 동일한 발생 횟수들을 갖는 모든 가능한 값들을 포함하는, 상기 제공하는 단계; 치환 연산(substitution operation)을 상기 제 1 출력 데이터 세트 각각의 각 바이트에 적용하는 단계로서, 상기 치환 연산을 적용하는 단계는, 상기 제 1 출력 데이터 세트 내의 바이트의 함수로서 치환 테이블 내에서 일 바이트를 선택하는 단계와, 상기 제 1 출력 데이터 세트 각각에 대하여, 상기 제 1 출력 데이터 세트 내의 바이트의 함수로서 상기 치환 테이블 내에서 선택된 모든 바이트들을 포함하는 제 2 출력 데이터 세트를 제공하는 단계를 포함하는, 상기 치환 연산을 적용하는 단계; 및 상기 제 2 출력 데이터 세트들에 순열 연산(permutation operation)을 적용하는 단계로서, 상기 순열 연산을 적용하는 단계는 상기 제 2 출력 데이터 세트들의 바이트들 또는 이들의 배수(multiple)의 바이트들을 배타적 OR 연산들에 의해 서로 결합하는 단계를 포함하며, 상기 배타적 OR 연산들은 상술한 방법에 따라 수행되는, 상기 순열 연산을 적용하는 단계를 포함한다.
일 실시형태에 따라서, 상기 제 1 출력 데이터 세트들은, 배타적 OR 연산에 의해 상기 입력 데이터의 바이트를 마스크 바이트의 모든 가능한 값들과 한번 결합시킴으로써 상기 입력 데이터의 각 바이트에 대해 입력 데이터 세트를 생성하고, 이어서 상기 유도된 키의 각 바이트를 상기 입력 데이터 세트들 내의 대응하는 입력 데이터의 각 바이트와 배타적 OR 연산에 의해 결합함으로써 생성되거나; 배타적 OR 연산에 의해 상기 유도된 키의 바이트를 상기 마스크 바이트의 모든 가능한 값들과 한번 결합시킴으로써 상기 유도된 키의 각 바이트에 대해 키 데이터 세트를 생성하고, 이어서 상기 입력 데이터의 각 바이트를 상기 키 데이터 세트들 내의 대응하는 키 데이터의 각 바이트와 배타적 OR 연산에 의해 결합함으로써 생성되거나; 상기 유도된 키의 대응하는 바이트를 상기 입력 데이터의 각 바이트와 배타적 OR 연산에 의해 결합하여서 출력 바이트들을 생성하고, 이어서 각 출력 바이트를 상기 마스크 바이트의 모든 가능한 값들과 한번 배타적 OR 연산에 의해 결합함으로써 생성된다.
또한, 실시형태들은 프로세서를 포함하고 위에서 규정된 방법들을 구현하도록 구성된 회로에 관련될 수 있다.
일 실시형태에 따르면, 상기 회로는 코프로세서를 포함한다.
실시형태들은 또한 상기 위에서 규정된 바와 같은 회로를 포함하고 매체 상에 배치된 장치에 관련될 수 있다.
또한, 실시형태들은 컴퓨터 메모리에 로딩될 수 있고, 컴퓨터에 의해 실행될 때 상기 위에서 규정된 방법들의 단계들을 수행하도록 상기 컴퓨터를 구성시키는 코드 부분들을 포함하는 컴퓨터 프로그램 제품에 관련될 수 있다.
방법 및/또는 장치는 다음의 도면 및 설명을 참조하면 보다 양호하게 이해될 수 있다. 비제한적 및 비한정적 설명은 다음 도면과 함께 설명된다. 도면들에서, 달리 언급되지 않는 한, 동일한 참조 부호는 상이한 도면 전체에서 동일한 부분을 나타낼 수 있다.
도 1은 보안 회로의 종래 아키텍처를 나타낸다.
도 2는 일 실시예에 따른 보호 단계들을 포함하는, 연산의 단계들을 나타낸다.
도 3은 일 실시예에 따른 보호 단계들을 나타내는 블록도이다.
도 4 내지 도 6은 상이한 실시예들에 따른, 다른 보호 단계들을 나타내는 블록도들이다.
도 7은 일 실시예에 따른 보호 단계들을 포함하는, AES 암호화 알고리즘의 블록도이다.
도 8은 AES 암호화 알고리즘에서의 열 믹싱 연산(mix column operation)의 블록도이다.
도 9는 일 실시예에 따른 보호 단계들을 포함하는, AES 암호화 알고리즘에서의 열 믹싱 연산의 블록도이다.
도 10은 일 실시예에 따른 보안 회로를 나타낸다.
도 1은, 예를 들어, 플라스틱 카드 또는 임의의 다른 매체와 같은 휴대용 매체(HD) 상에 또는 이동 단말기와 같은 단말기 내에 배치된 보안 집적 회로(CT)의 예를 나타낸다. 이 보안 집적 회로는 마이크로프로세서(PRC), 입출력 회로(IOC), 데이터 및 어드레스 버스에 의해 마이크로프로세서에 연결된 메모리(M1, M2, M3), 및 선택적으로, 암호 연산 코프로세서(CP1) 또는 산술 가속기, 및 난수 생성기(RGN)를 포함한다. 메모리는 휘발성 메모리(M1), 예를 들어, 휘발성 데이터 및 애플리케이션 프로그램을 포함하는 RAM 타입("Random Access Memory"), 비휘발성 데이터 및 애플리케이션 프로그램을 포함하는, EEPROM 또는 플래시 메모리와 같은 비휘발성 메모리(M2), 및 가능하게는, 마이크로프로세서의 운영 체제 및 상수 데이터를 포함하는 판독 전용 메모리(M3)(또는 ROM 메모리)를 포함할 수 있다. 운영 체제는 또한 비휘발성 메모리에 저장될 수 있다.
통신 인터페이스 회로(IOC)는 예를 들어, ISO/IEC 7816 표준에 따른 접촉식, 예를 들어, ISO/IEC 14443A/B 또는 ISO/IEC 13693 표준에 따른, 유도 결합에 의한 비접촉식, 또는 전기적 결합(UHF 인터페이스 회로)에 의한 비접촉식 또는 접촉식 및 비접촉식의 조합일 수 있다. 인터페이스 회로(IOC)는 또한 특정 인터페이스를 통해 NFC 제어기와 같은 다른 회로 또는 이동 단말기와 같은 단말기 또는 접속된 대상의 메인 회로 에 연결될 수 있다.
일부 실시예에서, 보안 집적 회로(CT)는 암호화 기능에 의해, 이러한 보안 집적 회로에 송신된 메시지를 암호화, 복호화 또는 서명하는 연산을 실행하도록 구성될 수 있다. 이러한 암호화 기능은 보안 집적 회로(CT)의 프로세서(PRC)에 의해 실행될 수 있거나, 또는 프로세서(PRC)에 의해, 부분적으로 또는 전체적으로 코프로세서(CP1)에 위임될 수 있다.
본 발명에서, 연산 특히, 사이드-채널 분석을 막는 암호화 알고리즘의 일부가 될 수 있는 연산을 보호하는 것이 제안된다. 이러한 맥락에서, 상기 연산은 입력 데이터를 수신하고, 상기 입력 데이터의 값의 연산결과로서 출력 데이터를 제공한다. 일 실시예에 따른 보호 방법은 입력 데이터 세트의 모든 데이터들에 대해 보호될 연산을 실행하는 단계를 포함하며, 여기서 상기 입력 데이터 세트 내의 각 데이터는 적어도 하나의 워드(word)를 포함하고, 상기 입력 데이터 세트 내의 워드들은 동일한 크기를 가지며 워드 서브세트를 형성하며, 상기 워드 서브세트는 해당 워드 크기와 관련된, 일 워드의 동일한 발생 횟수를 갖는 모든 가능한 값들을 포함한다. 따라서, 입력 데이터 세트는 해당 연산에 의해 프로세싱될 필요가 있는 입력 데이터를 포함한다. 또 다른 보호 방식은 연산의 결과로서 출력 데이터 세트를 제공하는 것을 포함하되, 상기 출력 데이터 세트의 각 데이터는 적어도 하나의 워드를 포함하며, 상기 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며, 워드 서브세트를 형성하며, 상기 워드 서브세트는 해당 워드 크기와 관련된, 일 워드의 동일한 발생 횟수를 갖는 모든 가능한 값들을 포함한다.
상기 입력 데이터 세트는 예를 들어, 1 바이트의 모든 가능한 값들(0 내지 255)을 갖는 바이트를 나타내는 i와 동일한 값을 포함하는 마스크 Mi와, 논리 XOR(배타적 OR) 연산에 의해, 상기 요구된 입력 데이터 X를 결합함으로써 획득될 수 있다. 따라서, 입력 데이터 X가 1 바이트의 크기를 갖는다면, 입력 데이터 세트는 X
Figure pat00001
Mi와 동일한 256 개의 데이터를 포함하며, 여기서 Mi = 0 내지 255이고, 요구된 입력 데이터 X = XVn = X
Figure pat00002
Mn이고, Mn = 0이다("
Figure pat00003
"은 바이트들에 적용된 XOR 연산자를 나타냄). 입력 데이터가 1 바이트로 인코딩될 때, 연산은 일 실시예에 따라서, 데이터 XVi = X
Figure pat00004
Mi를 포함하는 입력 데이터 세트 내의 모든 데이터에 해당 연산을 적용함으로써 보호될 수 있으며, 여기서 i는 0 내지 255인데, 즉 모든 가능한 데이터는 1 바이트의 크기를 갖는다. 출력 데이터 세트 내의 출력 데이터의 연산은 랜덤 순서로 수행될 수 있다. 이를 위해서, 입력 데이터 세트 내의 데이터들은 랜덤 순서로 배열될 수 있다.
랜덤 데이터에 적용되며 이로써 해당 보호될 연산에 대해 요구된 입력 데이터와는 상관관계가 없는 동일한 연산들의 폭주 시에 상기 보호될 연산을 은폐하는 것을 포함하는 종래 기술의 보호 방식과는 달리, 본 발명의 사상은 랜덤하게 선택되지 않은 다른 데이터들에 대해 해당 연산을 실행하는 것이다. 실제로, 이와 같은 다른 데이터들은, 프로세싱될 상기 요구된 입력 데이터 및 상기한 다른 데이터들로 구성된 입력 데이터 세트가 다음과 같이 구성될 때에, 상기 요구된 입력 데이터와 상관된다: 상기 입력 데이터 세트 내의 각 데이터가 적어도 하나의 워드를 포함하며, 해당 입력 데이터 세트 내의 워드들은 동일한 크기를 가지며 워드 서브세트 또는 열(column)을 형성하고, 상기 워드 서브세트 또는 열은 상기 입력 데이터 세트의 각 데이터로부터의 단일 워드를 포함하고 해당 일 워드와 관련된, 일 워드의 동일한 발생 횟수를 갖는 모든 가능한 값들을 포함한다. 이하에서, "워드"는 데이터 내의 비트 그룹을 나타내고, "워드 열(word column)"은 데이터 세트 내의 서브세트(subset)를 말하며 이러한 서브세트는 해당 데이터 세트 내의 모든 데이터로부터의 단일 워드를 포함하며, 상기 워드 열 내의 모든 워드들은 동일한 크기를 갖는다. 워드 열을 구성하는 워드들은 반드시 정렬될 필요는 없으며, 즉, 해당 데이터 세트의 데이터 내에서 동일한 비트 위치를 포함할 필요는 없다. 해당 연산에 의해 프로세싱될 입력 데이터는 입력 데이터 세트 내에서 예측할 수 없는 위치를 가질 수 있지만, 해당 연산을 수행하는 회로는 이러한 위치를 알 수 있다.
도 2는 일 실시예에 따른, 비밀 데이터 KY를 수반하는, 보호될 연산 OPR을 컴퓨팅하기 위한 방법의 단계들(S11 내지 S17)을 나타낸다. 단계(S11 내지 단계 S16)가 먼저 연속적으로 실행된다. 단계(S11)에서, 변수 RN는 이진 코드로 이러한 변수를 인코딩하는데 사용된 비트 수에 의해 정의된 크기에 따라 결정된 최대값 W-1과 0 간의 랜덤 값을 수신한다. 따라서, b 비트로 인코딩된 변수 RN에 대해, 최대값 W는 2b와 동일하다. 변수 RN이 8 비트로 인코딩되는 경우, 값 W는 256이고, 변수 RN이 16 비트로 인코딩되는 경우, 값 W는 65536이다. 단계(S12)에서, 인덱스 i는 0으로 설정된다. 단계(S13)에서, 변수 IRN(=i
Figure pat00005
RN)은 XOR 연산에 의해 인덱스 i와 변수 RN을 결합함으로써 계산된다. 단계(S14)에서, 결과 테이블 PR에서 인덱스 i에 의해 지정된 일 출력 데이터 PR[i]는 입력 데이터 X 및 비밀 데이터 KY에 대해 위에서 정의된 바와 같은 연산 OPR을 적용함으로써 계산된다. 일 실시예에 따르면, 비밀 데이터 KY는 예를 들어, 다음과 같이 변수 IRN과 XOR 연산에 의해 결합된다:
PR[i] = OPR(X, KY
Figure pat00006
IRN) (1)
대안적으로, 변수 IRN은 입력 데이터 X와 다음과 같이 결합될 수 있다:
PR[i] = OPR(X
Figure pat00007
IRN, KY) (2)
또는, 이러한 연산 OPR의 결과를 사용하면 다음과 같다:
PR[i] = OPR(X, KY)
Figure pat00008
IRN (3).
단계(S15)에서, 인덱스 i가 1만큼 증분된다. 단계(S16)에서, 인덱스 i는 최대값 W과 비교되고, 인덱스 i가 최대값 W보다 작으면, 단계들(S13 내지 S16)에서 해당 연산의 새로운 반복이 실행된다. 그 반대 경우에는, 단계(S17)이 실행된다. 단계(S17)에서, 결과 테이블 PR은 연산 OPR의 결과로서 제공되고, 예상되는 출력 데이터는 인덱스 i = n에서 결과 테이블 PR 내에 있고, 인덱스 n은 변수 IRN = n
Figure pat00009
RN = 0이 되는 값을 가지며, 즉, 단계(S14)에서 값 IRN과의 결합 연산이 XOR 연산인 경우에, n = RN이다. 사실, 데이터 D 및 0에 적용된 XOR 연산의 결과는 데이터 D를 변환하지 않는다.
변수 IRN의 값들은 랜덤함 순서로 프로세싱될 수 있으며, 반드시 0
Figure pat00010
RN으로부터 (W-1)
Figure pat00011
RN으로의 순서로 프로세싱될 수 없다는 점에 유의해야 한다. 또한, 출력 테이블 PR 내의 데이터들에 다른 연산들이 적용된 후에만, 단계(S17)에서, 테이블 PR 내의 예상 출력 데이터 OPR(X, KY)가 추출될 수 있다. 이 경우에, 결과 테이블 PR에 저장된 모든 데이터는 이러한 다른 연산들에 의해 프로세싱될 수 있다. 따라서, AES 알고리즘의 실례에서, 연산 OPR은 예를 들어, 이 알고리즘의 제 1 라운드에서 사용된 제 1 유도된 키와 암호화할 입력 데이터를 결합하는 XOR 연산이다. AES 알고리즘의 다음 연산들은 출력 테이블 PR에 저장된 모든 데이터 및 출력 테이블 PR에 저장된 이러한 연산들의 연속적인 결과들에 대해 실행될 수 있다. 따라서, 행(row)들을 시프트하는 연산은 결과 테이블 PR의 각 요소에 적용될 수 있다. 예상 출력 데이터는 프로세싱 시에 후속 단계에서 결과 테이블 PR로부터 추출될 수 있다.
또한, 입력 데이터 X 및 비밀 데이터 KY는 동일한 비트 수를 갖는 각각의 이진 워드로 인코딩된다. 변수 IRN에 주어진 각 값은 입력 데이터 X 및 비밀 데이터 KY와 동일한 비트 수를 갖는다. 입력 데이터 X 및 비밀 데이터 KY가 1 바이트(8 비트 워드)로 인코딩되는 경우, 변수 IRN도 8 비트로 인코딩된다. 단계(S13 내지 S16) 사이에서 실행되어야 하는 반복 횟수 W는 2b와 동일하며, 여기서 b는 데이터들 M 및 X의 비트 수의 크기이다. 데이터들 M 및 X가 16, 32 또는 64 비트로 된 일 워드로 인코딩되는 경우, 이러한 반복 횟수를 제한하는 것이 바람직할 수 있다.
바이트 단위로 해당 연산을 수행하는 경우, 변수 IRN은 8 비트로 인코딩될 수 있고, 비밀 데이터 KY 또는 입력 데이터 X를 변수 IRN과 결합하는 연산은 변수 IRN을 그 자체와 여러 번 연결하여서 비밀 데이터 KY 및 입력 데이터 X의 크기의 워드를 형성함으로써 수행될 수 있다. 상기 데이터들 X 및 KY가 16 비트로 인코딩되는 경우, 8 비트의 변수 IRN은 자신 자체와 연결되어 16 비트의 워드를 획득할 수 있다. 이로써, 단계(S14)에서 실행된 연산은 다음과 같이 된다:
PR[i] = OPR(X, KY
Figure pat00012
IRN//IRN), (4)
여기서, "//"은 이진 워드들의 연결 연산자(concatenation operator)를 나타낸다.
입력 데이터 X 및 비밀 데이터 KY가 32 비트로 인코딩되는 경우, 8 비트의 변수 IRN의 각 값은 32 비트의 워드를 얻기 위해, 3 회 자신 자체와 연결된다. 이로써, 단계(S14)에서 실행된 연산은 다음과 같이 된다:
PR[i] = OPR(X, KY
Figure pat00013
IRN//IRN//IRN//IRN) (5).
실제로, 마스크로서 사용되는 변수 IRN은 연산 OPR이 수행되는 알고리즘에 의해 프로세싱되는 최소 워드의 크기를 가질 수 있다.
또한, IRNj = 0(j = 1, 2, 3, 4)인 인덱스들이 저장된 경우에,
변수 IRN의 연결된 값들은 다음과 같이 서로 상이할 수 있다:
PR[i] = OPR(X, KY
Figure pat00014
IRN1//IRN2//IRN3//IRN4) (6).
도 3은 보호 데이터 X1 및 비보호 데이터 X2에 XOR과 같은 연산을 적용한 것을 예시하며, 상기 보호 데이터 X1 및 비보호 데이터 X2는 1 바이트 또는 수 바이트의 크기를 갖는다. 따라서, 보호 데이터 X1은 데이터들 X1V1, X1V2, ..., X1Vw를 포함하는 입력 데이터 세트 PX1에 의해 표현되며, 이러한 데이터 각각은 입력 데이터 X1과 동일한 크기를 가지며, w = 2b이며, b는 입력 데이터의 크기이다. 요구 데이터 X1은 입력 데이터 세트 PX1에서 인덱스 n에 있으며: X1 = X1Vn, 여기서 n은 1과 w 간의 정수이다. 이러한 연산의 결과는 w 개의 개별 출력 데이터 RV1, RV2, ... RVw를 포함하는 출력 데이터 세트 PR이며, 여기서 각 데이터 RVj는 X1Vj
Figure pat00015
X2와 동일하다. 연산의 예상된 결과 RVn(= X1Vn
Figure pat00016
X2 = X1
Figure pat00017
X2)는 테이블 PX1 내의 요구 입력 데이터 X1과 같이, 테이블 PR에서 동일한 인덱스 n에 있다. (입력 데이터 세트 PX1로서) 0과 w-1 사이의 w 개의 개별 데이터들을 포함함으로써, 결과적인 출력 데이터 세트 PR은 입력 데이터 세트 PX1과 동일한 보호 수준을 갖는 예상된 결과 RVn를 제공한다.
암호화 알고리즘에 사용된 두 개의 보호된 데이터 X1, X2가 XOR과 같은 연산에 의해 결합되되, 상기 데이터 X1, X2는 입력 데이터 세트 PX1, PX2로 대체됨으로써 보호되며, 각각의 입력 데이터 세트 내의 각 워드 열 내의 각 워드는 동일한 발생 횟수를 갖는 경우에, 문제가 발생할 수 있다. 입력 데이터 세트 PX1, PX2 각각은 입력 데이터 X1, X2의 크기에 의존하는 모든 가능한 데이터, 또는 Mi//...// Mi의 형태로 된 마스크 세트를 적용함으로써 규정된 이들의 일부를 또한 포함할 수 있으며, 여기서 Mi = 0, ...(w-1)이며, 입력 데이터가 워드 단위로 프로세싱될 때에 Mi는 일 워드 크기를 갖는다. 도 4는 입력 데이터 세트들 PX1, PX2을 나타낸다. 입력 데이터 세트 PX1은 데이터들 X1V1, ..., X1Vw를 포함하며, 여기서 요구 입력 데이터 X1(= X1Vn)은 인덱스 n에 있다. 동일한 방식으로, 입력 데이터 세트 PX2는 데이터들 X2V1, ..., X2Vw를 포함하고, 여기서 요구 입력 데이터 X2(= X2Vn)는 동일한 인덱스 n에 있다.
입력 데이터 세트 PX1과 PX2는 다음과 같이, 요구 입력 데이터 X1과 X2에 다른 마스크 값을 적용함으로써 생성된다:
{1, ..., w} 내의 인덱스 j의 모든 값에 대해 X1Vj = X1
Figure pat00018
M1j, 및
{1, ..., w} 내의 인덱스 j의 모든 값에 대해 X2Vj = X2
Figure pat00019
M2j.
따라서, 연산(X1
Figure pat00020
X2)을 보호하는 예시적인 제 1 방법은 다음과 같이, 1과 w 간의 인덱스 j의 모든 값에 대해 X1Vj
Figure pat00021
X2Vj를 계산하는 것이다:
(X1
Figure pat00022
M1j)
Figure pat00023
(X2
Figure pat00024
M2j) = (X1
Figure pat00025
X2)
Figure pat00026
(M1j
Figure pat00027
M2j).
사실상, 데이터 M1j
Figure pat00028
M2j가 인덱스 j의 각각의 값에 대해 서로 다르다는 것은 보장될 수 없다. 인덱스 j 및 k의 특정 값들에 대해 M1j = M2k 및 M1k = M2j가 발생할 수 있으며, 이로써, 마스킹 값들 M1j
Figure pat00029
M2j의 세트가 두 개의 동일한 값들 M1j
Figure pat00030
M2k = M1k
Figure pat00031
M2j를 포함한다.
따라서, 출력 데이터 세트 PR의 각 워드 열은 가능한 모든 워드 값(X1과 X2가 바이트를 나타내는 경우, 0과 (w-1) 간에 있음)을 포함하는 조건을 만족하지 않는다. 극단적인 경우, M1j 및 M2j는 각각의 인덱스 값 j에 대해 동일한 값을 갖는다. 따라서, 다음과 같이 된다:
(X1
Figure pat00032
M1j)
Figure pat00033
(X2
Figure pat00034
M2j) =(X1
Figure pat00035
X2)
Figure pat00036
0 = X1
Figure pat00037
X2.
결과적으로, w 계산들 각각은 예상 결과 출력인 동일한 결과 X1
Figure pat00038
X2를 리턴한다. 이러한 예상 결과는 보호되지 않을 뿐만 아니라, 보호될 연산이 w 번 수행되기 때문에 이러한 방식에서는 예상 결과가 상당하게 누출된다.
보호 출력 데이터를 생성하는 또 다른 방법은 입력 데이터 세트 PX1, PX2 중 일 세트 내에서 일 데이터를 선택하고 이 선택된 데이터와 다른 입력 데이터 세트의 모든 데이터에 해당 연산을 적용하는 것일 수 있다. 도 4에 도시된 바와 같이, 데이터 X2Vk가 입력 데이터 세트 PX2에서 선택되고, 입력 데이터 세트 PX1 내의 모든 데이터와 결합된다. 따라서, 출력 데이터 세트 PR1 내의 결과적으로 생성되는 데이터 RVj 각각은 다음과 같이 계산된다:
RVj = X1Vj
Figure pat00039
X2Vk, 여기서 j = 1, 2, ... w이고, k는 고정된 값을 갖는다. 이렇게 함으로써, 출력 데이터 세트 PR1가 다음과 같이 2 개의 동일한 데이터들 RVi를 포함하지 않도록 보장된다 :
X1Vj
Figure pat00040
X2Vk = (X1
Figure pat00041
M1j)
Figure pat00042
(X2
Figure pat00043
M2k) = (X1
Figure pat00044
X2)
Figure pat00045
M1j
Figure pat00046
M2k.
여기서, M1j가 M1j'와 상이한 경우, M1j
Figure pat00047
M2k는 M1j'
Figure pat00048
M2k와 상이하다. 그러나, 출력 데이터 세트 PR1 내의 결과 데이터 RVj의 계산은 입력 데이터 세트 PX2 내에서 단일 데이터 X2Vk를 판독하는 것을 요구하는 반면, 입력 데이터 세트 PX1 내의 모든 데이터가 판독된다. 경우에 따라서, 이러한 불균형 프로세싱으로 인해서, 데이터 누출이 발생하고 이로써 데이터 X2Vk가 공개될 수 있다. 선택된 데이터 X2Vk가 요구 입력 데이터 X2(= X2Vn)와 동일한 경우, 이러한 데이터 누출은 데이터 X2의 값이 공개되게 할 수 있다. 입력 데이터 세트 PX2 내의 다른 데이터 X2Vk(k ≠ n)가 입력 데이터 세트 PX1의 모든 데이터 X1Vj와 결합되도록 선택되면, 선택된 데이터 X2Vk = X2
Figure pat00049
M2k가 되도록 마스크 Mk의 값을 저장할 필요가 있다.
일 실시예에 따라서, 보호 출력 데이터를 생성하는 또 다른 방법은 도 5에 예시된다. 도 5에서, 연산 X1
Figure pat00050
X2의 출력 데이터 세트 PR2는 w × w 개의 요소들 RVi.j를 포함하며, 이로써 다음과 같이 된다:
RVi.j = X1Vi
Figure pat00051
X2Vj,
여기서, i와 j 각각은 1과 w 간의 가능한 모든 정수 값을 갖는다.
일 실시예에 따르면, 출력 데이터 세트 PR2 내에서의 출력 데이터 RVi.j의 계산은 랜덤한 순서로 수행된다.
일 실시예에 따르면, 저감된 출력 데이터 세트 PR3은 출력 데이터 세트 PR2로부터 동일한 순서로, 데이터 RVJ.i 또는 RVj.i의 행 J 또는 열 I을 추출함으로써, 예상 출력 데이터 X1
Figure pat00052
X2의 보호를 변경하지 않으면서, 상기 출력 데이터 세트 PR2로부터 형성된다. 저감된 출력 데이터 세트 PR3 내에서의 출력 데이터 X1
Figure pat00053
X2의 위치 또는 마스크 M1J 또는 M2I의 값은 예상 출력 데이터의 값을 결정하기 위해 저장될 수 있다.
일 실시예에 따르면, 요구 입력 데이터 X1, X2는 입력 데이터 세트 PX1, PX2 내에서 각각의 인덱스 n1, n2에서 위치될 수 있다. 따라서, 도 5의 예에서, 예상 결과 데이터는 출력 데이터 세트 PR2의 행 n2 및 열 n1에 위치한다:
X1
Figure pat00054
X2 = X1Vn1
Figure pat00055
X2Vn2 = RVn1.n2.
저감된 출력 데이터 세트 PR3는 출력 데이터 세트 PR2로부터, 행 n2 또는 열 n1의 모든 데이터를 동일한 순서로 추출함으로써 형성될 수 있다. 추출된 데이터 세트는 0과 2b-1 사이의 모든 데이터를 포함하기 때문에, 이러한 추출은 예상 출력 데이터 X1
Figure pat00056
X2의 보호를 변경하지 않는다는 것을 알 수 있으며, 여기서 b는 입력 데이터 X1, X2의 크기이다. 인덱스 n1 및 n2는 동일하게 선택될 수 있다.
도 6에 도시된 일 실시예에 따르면, 출력 데이터 세트 PR2의 데이터들 RVi.j이 계산될 때에 이들이 기록되는 메모리 PR4는 w 개의 데이터를 갖는 2 개의 열 또는 2 개의 행만을 포함한다. 해당 계산의 종료 시에, 두 개의 행 또는 열 중 제 1 행 또는 열이 데이터 세트 PR2의 인덱스 n의 행 또는 열과 동일하고, 나머지 행 또는 열은 데이터 세트 PR2의 또 다른 행 또는 열 k, 예를 들어, (인덱스 w의) 최종 계산된 행 또는 열과 동일하도록, 계산된 데이터 RVi.j는 메모리 PR4에 기록된다. 열별 계산의 경우에, i = 1에서 n1 또는 n2까지의 데이터 RVi.1 ... RVi.w의 계산된 열들은 메모리 PR4의 두 개의 열들 내에 또는 동일한 열 내에 교번적으로 또는 랜덤하게 기록되고, 데이터 RVi.1 ... RVi.w의 계산된 열들은 항시적으로, 데이터 RVn.1 ... RVn.w를 포함하지 않는 메모리 PR4의 열 내에 기록된다. 해당 계산이 끝날 때, 예상 출력 데이터 RVn1.n2를 포함하는 열은 메모리 PR4로부터 추출되어, 출력 데이터 세트 PR3을 얻는다.
또한, 해당 연산 OPR을 수행하는 회로가 성공적인 폴트 주입(successful fault injection)에 의해 야기된 것과 같은 에러를 겪는 경우, 출력 데이터 세트 PR, PR1, PR2, PR3, PR4 내의 적어도 하나의 데이터의 값이 변경되는 것을 관찰할 수 있다. 하나의 데이터만 변경되면, 출력 테이블(또는 행 또는 열)은 더 이상 출력 데이터의 가능한 모든 값을 포함하지 않으며, 두 개의 동일한 데이터를 포함하며, 이러한 데이터는 반드시 출력 데이터 세트 내의 또 다른 데이터 값을 갖는 변경된 값을 갖는다. 따라서, 이와 같은 폴트 주입은 동일한 값에 의해서 검출될 수 있다. 보다 일반적으로, 출력 데이터 세트 내에 또는 출력 데이터 세트의 행 또는 열 내에서, 상이한 발생 횟수들을 갖는 두 개의 데이터를 찾음으로써, 폴트 주입이 검출될 수 있다. 두 개의 데이터가 변경되면, 이 두 데이터의 값이 서로 교환될 때에만 폴트 주입을 감지할 수 없으며, 이는 매우 낮은 발생 확률을 갖는다. XOR 연산의 특성으로 인해, 출력 데이터 세트(또는 출력 데이터 세트의 행 또는 열) 내의 모든 데이터를 XOR 연산에 의해서, 서로 결합함으로써, 에러가 쉽게 감지될 수 있으며, 이 결합의 결과는, 출력 데이터 세트의 각 워드 열이 출력 데이터를 계산하기 위해 프로세싱된 워드들의 크기와 관련된, 동일한 발생 횟수를 갖는 출력 데이터의 가능한 모든 값들을 포함할 때에, 제로와 동일하게 된다.
일 실시예에 따르면, 데이터 RV1.1 ... RV1.w의 계산된 열(또는 행) 각각은 메모리(PR4)의 다른 열 내에 기록된 데이터의 하나의 계산된 열(또는 행)를 제외하고, 메모리(PR4)의 일 열 내에, 이전에 기록된 열(또는 행)과 함께 부가된다. 따라서, XOR 연산의 특성으로 인해, 출력 데이터의 계산 중에 에러가 발생하지 않는 한, 메모리(PR4)의 두 열들은 동일해야 한다.
일 실시예에 따르면, 입력 데이터들 X1, X2는 상이한 크기를 갖는다. 따라서, 입력 데이터 세트들 PX1 및 PX2은 w1 및 w2로 표시된, 상이한 개수의 데이터를 포함한다. 따라서, 계산된 출력 데이터 세트 PR2는 w1 × w2 개의 출력 데이터를 포함한다. 이로써, 추출된 출력 데이터 세트(PR3)는 출력 데이터 X1
Figure pat00057
X2를 포함하는 최대량의 데이터를 포함하는 출력 데이터 세트 PR2의 행 또는 열일 수 있다.
다른 실시예에서, 입력 데이터 세트들 PX1, PX2 내에서의 데이터의 발생 횟수는 상기 입력 데이터 세트들이 동일한 개수 w의 데이터를 포함하도록 선택된다. 이러한 방식으로, 출력 데이터 세트 PR2는 w × w 개의 데이터를 포함한다.
다시, 도 3 내지 도 6의 상술한 설명에서 입력 데이터들 X1, X2는 하나의 단일 바이트 또는 수 바이트로 인코딩될 수 있다. 1 바이트의 경우에, w는 256이다. 수 바이트의 경우에, 연산이 바이트 단위로 수행될 때, 입력 데이터 세트 PX1, PX2를 생성하기 위해 입력 데이터 X1, X2에 적용된 마스크 Mj는, 입력 데이터들 X1, X2이 2 바이트로 인코딩될 때에는, 형태 IRN//IRN(1 바이트로 인코딩되는 경우에는, IRN)를 가지며, 또는 입력 데이터들 X1, X2이 4 바이트로 인코딩되는 경우에는, 형태 IRN//IRN//IRN//IRN을 가지며, 보다 보편적으로 말하자면, 상기 입력 데이터들 X1, X2가 4 바이트 이상으로 인코딩될 때에는, 형태 IRN//IRN// ... //IRN을 갖는다.
일 실시예에 따르면, XOR 연산이 비트 단위이기 때문에, 32 비트 또는 64 비트와 같은, 해당 연산에 의해 프로세싱될 데이터의 크기보다 더 넓은 버스를 포함하는 하드웨어 아키텍처에서는, 여러 워드들이 동시에 계산될 수 있다. 32 비트 아키텍처에서, 4 바이트의 출력 데이터 RVi.j가 동시에 계산될 수 있고, 64 비트 아키텍처에서, 8 바이트의 출력 데이터 RVi.j가 동시에 계산될 수 있다. 이 경우에, 입력 데이터 세트들을 생성하기 위해 입력 데이터들에 적용된 마스크는 형태 IRN//IRN// ... //IRN을 가지며, 여기서 IRN은 1 바이트로 인코딩될 수 있다.
소프트웨어 또는 하드웨어로 구현된 AES(Advanced Encryption Standard) 알고리즘에서 수행되는 모든 연산들은 이전에 개시된 방법을 사용하여 보호될 수 있다. 도 7은 일 데이터를 암호화하기 위해 AES 알고리즘을 구현하는 암호화 계산 회로(CC1)의 예를 나타낸다. AES에 대한 자세한 내용은 2001년 11월 26 일에 발행된 문헌 "Advanced Encryption Standard FIPS PUB 197"를 참조하면 된다. 도 7에서, 암호화 계산 회로(CC1)는 암호화될 데이터 X1를 수신하고 암호화된 데이터 CX1를 공급한다. 상가 암호화 계산 회로(CC1)는 XOR 연산을 수행하는 연산 회로들(XG1, XG2, XG3), 치환 계산 회로(SBB: substitute calculation circuit), 행-기반 원순열 계산 회로(SHR: row-based circular permutation calculation circuit), 열-기반 순열 계산 회로(MXC: column-based permutation calculation circuit), 멀티플렉서(MX) 및 키 생성기(KGN)를 포함한다. 상기 회로들(SBB, SHR, MXC 및 KGN)은 AES에 따른다. 상기 연산 회로(XG1)는 암호화될 데이터 X1를 수신하고 상기 키 생성기(KGN)에 의해 비밀 키 SK로부터 생성된 제 1 유도 키 RK0를 자신의 키 입력부에서 수신한다. 상기 연산 회로(XG1)의 출력은 치환 계산 회로(SBB)에 공급된다. 치환 계산 회로(SBB)의 일 출력은 행-기반 원순열 계산 회로(SHR)에 공급된다. 행-기반 원순열 계산 회로(SHR)의 일 출력은 멀티플렉서(MX)를 통해 열-기반 순열 계산 회로(MXC) 또는 연산 회로(XG3)의 입력부에 공급되고, 상기 연산 회로(XG3)는 상기 키 생성기(KGN)에 의해 공급된 최종 유도 키 RKn를 자신의 키 입력부에서 수신한다. 열-기반 순열 계산 회로(MXC)의 일 출력부는 키 생성기(KGN)에 의해 공급된 유도 키 RKj(j = 1, ..., r-1)를 자신의 키 입력부에서 수신하는 연산 회로(XG2)의 입력부에 접속된다. 연산 회로(XG2)의 일 출력부는 치환 계산 회로(SBB)의 입력부에 연결된다. 마지막 라운드 r에서, 회로들(SBB, SHR, MXC 및 XG2)을 포함하는 체인에 의해 특정 수 r-1의 계산 라운드들이 (AES에 따라 10, 12 또는 14회) 수행되었을 때, 멀티플렉서(MX)가 구동되어서, 연산 회로(XG3)에 행-기반 원순열 계산 회로(SHR)의 출력을 제공하고, 상기 연산 회로(XG3)는 출력 데이터 CX1를 공급한다.
제 1 계산 라운드 동안, 입력 데이터 X1은 연산 회로(XG1)에 의해 프로세싱되고, 연산 회로(XG1)는 비밀 키 SK로부터 생성기 회로(KGN)에 의해 생성된 제 1 유도 키 RK0를 상기 프로세싱된 입력 데이터를 부가(XOR)한다. 각 라운드 j에서, 키 생성기(KGN)는 새로운 키 RKj를 유도한다. 연산 회로(XG1)는 결과 데이터들 X1
Figure pat00058
RK0을 제공하며, 이 결과 데이터들은 상기 회로들(SBB, SHR, MXC 및 XG2)에 의해 연속적으로 프로세싱된다. 이어서, 연산 회로(XG2)는 열-기반 순열 계산 회로(MXC)에 의해 제공된 데이터를 유도 키 RKj(j = 0, ..., r-1)와 결합한다. 회로들(SBB, SHR MXC 및 XG1)은 여러 회의 AES 알고리즘을 위해서 연속적으로 활성화된다. 치환 계산 회로(SBB)는 일반적으로 치환 테이블을 사용하여 구현된다.
일 실시예에 따르면, 연산 회로(XG1)에 의해 수행되는 연산은 도 2의 단계들(S11 내지 S17)을 실행함으로써 실현되며, 16 바이트의 입력 데이터들 각각이 AES 알고리즘의 제 1 라운드(j = 0)에 대해, 비밀 키 SK로부터 키 생성기(KGN)에 의해 유도된 키 RK0의 각각의 바이트에 결합된다. 단계(S14)에서 W(= 256) 회 수행된 연산 OPR은 입력 데이터 X1의 바이트와 상기 유도 키 RK0의 바이트를 수반하는 논리 XOR 연산이다. 단계(S14)는 등식 (1) 내지 등식 (3) 중 하나를 구현할 수 있거나, 본 암호화 계산 회로(CC1)가 프로세싱할 수 있는 데이터의 크기에 기초하여 등식(4) 또는 등식 (5)을 적용함으로써 등식 (1) 내지 등식 (3)으로부터 도출될 수 있다. 따라서, 연산 회로(XG1)에 의해 제공된 결과는 테이블들 IPR1j(j = 0)을 포함하며, 각 테이블은 워드들 R1V1 내지 R1Vw, 및 특히 출력 데이터 X1
Figure pat00059
RK0의 워드와 동일한 워드 R1Vn(n은 1 내지 w를 가짐)를 포함한다. 등식 (1) 내지 등식 (3) 중 하나가 단독으로 적용되는 경우, 연산 회로(XG1)는 입력 데이터 X1 및 유도 키 RK0의 각각의 바이트에 적용되고, 이들 각각의 바이트에 대한 테이블 IPR10을 제공하고, 데이터들 R1V1 내지 R1Vw는 바이트들이다. 등식 (1) 내지 등식 (3) 중 하나가 등식(4) 또는 등식(5)과 조합되어 적용되면, 입력 데이터 XG1 및 유도 키 RK0 내의 2 바이트 또는 4 바이트의 각 워드에 연산 회로(XG1)가 적용되고, 이 연산 회로(XG1)는 이 워드 각각에 대해 동일한 크기의 워드들의 테이블 IPR10을 제공한다. 등식(5)의 확장은 입력 데이터 X1의 프로세싱된 워드와 동일한 크기를 갖는 w 개의 워드들을 포함하는 테이블을 얻기 위해, 해당 입력 데이터의 4 바이트보다 큰 바이트를 동시에 프로세싱하도록 적용될 수 있다. 출력 테이블들 IPR10 각각 내의 예상 결과 X1
Figure pat00060
RK0의 출력 워드들 각각의 랭크(rank) n는 각 출력 테이블마다 상이할 수 있다. 따라서, 예를 들어, 단계(S11)는 각 출력 테이블 IPR10에 대해 수행될 수 있다.
치환 계산 회로(SBB)에 의해 제공된 결과는 데이터들 R2V1 내지 R2Vw, 및 제 1 라운드에서의 SBX[X1
Figure pat00061
RKO]와 동일한, 데이터 R2Vn(n은 1과 w 간에 있음)를 포함하는 테이블 IPR2j(제 1 라운드에서 j = 0)이고, 여기서 SBX는 AES의 치환 연산(substitution operation)을 구현하는 치환 테이블이다. 일반적으로, 회로들(SBB 및 SHR)은 바이트 단위로 입력 데이터 X1
Figure pat00062
RK0를 프로세싱한다. 이 경우에, 각 바이트 테이블 IPR10 내의 각 바이트 R1V1 내지 R1Vw는 테이블 IPR20을 제공하는 치환 계산 회로(SBB)에 의해 프로세싱된다. 데이터들 R1V1 내지 R1Vw 각각이 1 바이트보다 큰 바이트를 나타내는 경우, 테이블 IPR10 내의 각 바이트는 회로들(SBB 및 SHR)에 의해 개별적으로 프로세싱된다. 행-기반 원순열 계산 회로(SHR)는 테이블 IPR20을 프로세싱하고 테이블 IRPR30을 제공한다.
도 8은 열-기반 순열 계산 회로(MXC)를 나타낸다. 열-기반 순열 계산 회로(MXC)는 행-기반 원순열 계산 회로(SHR)의 출력 데이터 X3를 4×4 원소의 계수 행렬 MC에 결합시킨다. 이를 위해, 출력 데이터 X3은 4x4 개의 원소들 x0 내지 x15의 행렬 형태로 구성되며, 이 원소들 각각은 128 비트로 인코딩되는 출력 데이터 X3의 1 바이트를 나타낸다. 행렬 X3의 원소들은 XOR 연산자에 의해 행렬 MC의 원소들과 결합되어, 4x4 개의 원소들을 갖는 결과적 행렬 TR을 생성하며, 이 결과적 행렬 TR에서, 각 원소는 다음과 같은 형태를 갖는다:
a·x <i>
Figure pat00063
b·x <i+1>
Figure pat00064
c·x <i+2>
Figure pat00065
d·x <i+3>
여기서, a, b, c, d(= 1, 2 또는 3)는 계수 행렬 MC의 일 라인의 원소들이고, i는 0, 4, 8 및 12와 같다. AES에 따라서, 2·x 연산은 x가 128보다 작으면(x의 최상위 비트(MSB)가 0일 때는) 연산 LS1(x)을 사용하고, x가 128 이상이면(x의 최상위 비트(MSB)가 1일 때는) 연산 LS1(x)
Figure pat00066
0x1B를 사용하여, 수행되며, 여기서, LS1(x)는 바이트 x 내에서 1 비트만큼의 좌측으로의 시프트를 나타낸다. 연산 3·x는 연산 2·x
Figure pat00067
x를 사용하여 수행된다.
출력 데이터 X3의 각 바이트가 하나의 테이블 IPR3j에 의해 표현되기 때문에, 열-기반 순열 계산 회로(MXC)는 각 테이블 IPR3j의 각 바이트에 대해 3x16 개의 XOR 연산들을 수행하며, 각 XOR 연산은 도 4 내지 도 6의 경우와 같이 2 개의 입력 테이블들을 결합한다. 2 개의 이상의 XOR 연산이 연산 3·x을 수행하는데 필요할 수 있다. 그러나, AES 알고리즘의 일부 구현예에서, 연산 2·x 및 3·x는 룩업 테이블들에 의해 구현된다.
도 9에 도시된 일 실시예에 따르면, 도 8에 개시된 바와 같은 행렬 TR의 원소를 계산하기 위한 각각의 XOR 연산은 도 5 또는 도 6에 도시된 프로세스에 따라 수행되어, 테이블 PR2 또는 PR4와 유사한 테이블을 제공하고, 이어서, 테이블 PR3와 유사한 테이블을 제공하며, 2배의 각 승산이 도 3에 예시된 프로세스에 따라서 수행된다. 두 개의 입력 테이블들 IPR30 간의 또는 XOR 결과 테이블(IPR40)과 다른 테이블(IPR30) 간의 각각의 XOR 연산 이후에, 공지된 랭크의 예상 출력 데이터를 포함하는 행 또는 열 n이 다음의 XOR 연산을 위해서 결과적으로 생성된 테이블 IPR40에서 선택되며, 이러한 다음의 XOR 연산에서는, 형태 a·x <i>
Figure pat00068
b·x <i+1>
Figure pat00069
c·x <i+2>
Figure pat00070
d·x <i+3>이 계산된다. 마지막으로, 열-기반 순열 계산 회로(MXC)에 의해 수행되는 연산들은, 제 1 라운드(j = 0)에서, 입력 데이터 X1의 각 바이트에 대해 w × w 바이트의(또는 도 6에 따라서 2w 바이트의) R3Vi.k를 포함하는 테이블 IPR40을 제공한다. 그 다음에, w 바이트 R5Vi(= R4Vi.n 또는 R4Vn.i)를 포함하는 테이블 IPR50이 각 테이블 IPR40로부터 추출된다. 예상 출력 데이터가 공지된 랭크에 위치하는 행 또는 열 n은 테이블 IPR40의 각 행 또는 열에 대해 동일하거나 상이할 수 있다.
제 2 라운드(j = 1)에서, 연산 회로(XG2)는 각 테이블 IPR50 내의 데이터들 R5Vi(i = 1, ... w) 각각을 회로(KGN)에 의해 제공된 유도 키 RK1과 결합하며, 이로써, 데이터 R1Vi(i = 1, ... w)를 포함하는 결과 테이블 IPR11을 치환 계산 회로(SBB)에 출력한다. 이어서, 마지막 라운드(j = r)에서 행-기반 원순열 계산 회로(SHR)에 의해 테이블 IPR3r이 제공될 때까지, 여러 라운드들이 수행된다. 이어서, 연산 회로(XG3)가 각 테이블 IPR3r의 각 워드를 최종 유도된 키 RKr과 결합시킨다. 마지막으로, 연산 회로(XG3)는 입력 데이터 X1 내의 각 워드(8, 16 또는 32 비트를 가짐)에 대한 결과 테이블 IPR6r을 제공하고, 여기서 각 테이블 IPR6r은 워드들 R6V1, ..., R6Vw, 및, 보다 구체적으로, 예상 출력 데이터 CX1의 워드 R6Vn를 포함한다. 데이터 X1
Figure pat00071
RK0의 워드들이 테이블들 IPR10 내에서 랭크 n에 위치하면, 예상 출력 데이터 CX1의 워드들 R6Vn이 테이블들 IPR6r 내에서 동일한 랭크 n에 위치한다는 것을 알아야 한다. 일 실시예에 따르면, 연산 회로(XG3)는 데이터 CX1만을 제공하도록 구성된다.
회로들(SBB 및 SHR)의 위치는 반전될 수 있으며, 행-기반 원순열 계산 회로(SHR)에 의해 수행되는 행-기반 원순열(row-based circulation permutation) 계산은, 치환 계산 회로(SBB)에 의해 수행되는 치환 계산을 수행하기 전에, 테이블 IPR1j 내의 데이터에 적용될 수 있다.
AES에 따른 복호화 알고리즘은 암호화 알고리즘과 실질적으로 동일한 연산을 포함한다. 따라서, 테이블 PX1의 형태를 갖는 하나의 보호된 데이터를 보호되거나 그렇지 않은 다른 데이터와 결합하는 연산을 보호하기 위한 전술한 방법은 AES 복호화 알고리즘을 구현하는 프로그램 및 회로를 보호하기 위해 적용될 수 있다. 보다 구체적으로, AES 복호화 회로는 비밀 키 SK로부터 도출된 키들과 XOR 연산을 수행하는 회로들, 역 치환 계산 회로(inverse substitute calculation circuit), 역 행-기반 원순열 계산 회로, 역 열-기반 순열 계산 회로, 및 비밀 키 SK로부터 유도된 키를 생성하기 위한 키 생성기(KGN)를 포함한다. 도 3에 도시된 방법은 도출된 키들과의 XOR 연산들에 의해 수행되는 각각의 연산, 및 역 치환 계산 회로 및 역 행-기반 순열 계산 회로에 의해 수행되는 각각의 연산에 적용될 수 있다. 도 5 또는 도 6에 도시된 방법은 역 열-기반 순열 계산 회로에 의해 수행되는 각각의 XOR 연산에 적용될 수 있다.
이전에 개시된 보호 방법은 사이드 채널 분석에 취약한 것으로 간주될 AES 알고리즘에서 수행되는 일부 연산들에만 적용될 수 있음에 유의해야 한다. 예를 들어, 이러한 보호 방법은 민감한 데이터가 누출될 수 있는, AES 알고리즘의 첫 번째 라운드 및 마지막 라운드에만 적용될 수 있다.
보다 보편적으로, 이전에 개시된 보호 방법은 소프트웨어 및/또는 하드웨어에 의해 구현되고, ARIA(다음 문헌 참조: Daesung Kwon et al., "New Block Cipher: ARIA", Information Security and Cryptology - ICISC 2003, Volume 2971 of the series Lecture Notes in Computer Science p. 432-445)와 같은, 민감한 데이터를 결합하는 XOR 연산들을 포함하는, 다른 암호화 알고리즘에 적용될 수 있다. ARIA 알고리즘은 바이트 단위로 128 비트 데이터를 프로세싱하고 라운드 방식으로 수행되고, 각 라운드는 XOR 연산에 의한 라운드 키 부가, 두 개의 사전 계산된 치환 테이블들과 이들의 역 테이블들을 사용하는 치환 단계, 및 확산 단계를 포함한다. 치환 단계는 라운드 키(round key)와 결합된 입력 데이터를 바이트 단위로 프로세싱하고, 확산 단계는 치환 단계에 의해 제공된 16 바이트의 데이터에 16 개의 상이한 XOR 조합들을 적용한다. 이러한 결합들 각각에서, XOR 연산들에 의해서 7 바이트의 데이터가 부가된다.
일 실시예에 따르면, 라운드 키 부가에서 수행된 각각의 바이트 XOR 연산 및 치환 단계에서 수행된 각 치환 연산은 도 2 및 도 3에 도시된 프로세스에 의해 보호되고, 확산 단계에서 수행되는 각각의 XOR 연산은 도 5 또는 도 6에 도시된 프로세스에 의해 보호된다.
도 10은 일 실시예에 따른, 플라스틱 카드와 같은 휴대용 매체(HD) 상에 배치되고 전술한 보호 방법들 중 하나를 구현하는 보안 집적 회로(CT1)를 나타낸다. 집적 회로는 도 1과 관련하여 전술한 보안 집적 회로(CT)와 동일한 유닛들을 포함하고, 코프로세서(CP1)가 전술한 하나 및/또는 다른 보호 방법을 구현하는 코프로세서(CP2)로 대체된다는 점에서 전술한 것과 다르다. 따라서, 일 실시예에 따르면, 코프로세서(CP2)는 암호화 연산의 단일 데이터보다는, 결과 데이터의 출력 테이블을 제공하도록 구성되며, 각 출력 테이블은 암호화 연산의 예상 결과를 포함하며, 출력 테이블은 해당 출력 테이블 내의 워드 열들 내의 모든 계산된 워드들이 동일한 발생 횟수를 갖도록 구성된다. 코프로세서(CP2)에 의해 제공된 결과 값들의 테이블 내에서 암호화 연산의 결과의 위치를 알 수 있도록, 프로세서(PRC)는 코프로세서(CP2)와 매칭된다.
또한, 코프로세서(CP2)는 또한 암호화 연산의 일부를 실행하도록 구성될 수 있다. 이 경우에, 프로세서(PRC)는 암호화 연산의 결과를 포함하는 결과 데이터의 출력 테이블들을 생성하도록 구성되며, 각 출력 테이블은 해당 출력 테이블 내의 워드 열들 내의 모든 계산된 워드들이 동일한 발생 횟수를 갖도록 구성된다.
본 명세서에서 개시된 방법들은 또한 컴퓨터 시스템에 의해 실행 가능한 소프트웨어 프로그램에 의해 구현될 수 있다. 또한, 구현예들은 분산형 프로세싱 및 병렬 프로세싱를 포함할 수 있으며, 이는 특히 입력 데이터 세트 내의 일부 또는 모든 데이터를 병렬로 프로세싱하고/하거나 출력 데이터 세트의 일부 또는 모든 데이터를 병렬로 제공하기 위한 것일 수 있다.
본 명세서에서 설명된 예시들은 다양한 실시예의 구조에 대한 일반적인 이해를 제공하기 위한 것이다. 이러한 예시들은 본 명세서에서 설명된 구조 또는 방법을 이용하는 장치, 프로세서 및 시스템의 요소들 및 특징부들 모두를 완벽하게 설명하지는 않는다. 다수의 다른 실시예들 또는 이들의 조합이, 본 발명을 검토할 시에, 개시된 실시예들을 조합함으로써, 본 기술 분야의 당업자에게 명백할 수 있다. 본 발명의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록, 다른 실시예들이 본 개시로부터 사용되고 파생될 수 있다.
또한, 본 개시 및 설명은 제한적이라기보다는 예시적인 것으로 간주되어야 하며, 첨부된 청구 범위는 본 발명의 진정한 사상 및 범위 내에 있는, 그러한 모든 수정사항, 개선사항 및 다른 실시예들을 포함하도록 의도된다. 따라서, 이하의 특허 청구 범위는 이하의 청구 범위 및 그 균등 범위를 가장 광범위한 허용 가능한 범위로서 해석함으로써 결정되어야 하며, 상술한 설명들에 의해 제한되거나 한정되지 않아야 한다.
도 3 내지 도 6에 예시된 이전의 예들은, XOR 이외의 다른 연산들이 비트 단위로 수행되고 가역적이거나 전단사(bijective)적인 경우에, 이러한 XOR 이외의 다른 연산들에 적용될 수 있다.

Claims (16)

  1. 제 1 입력 데이터가 제 2 입력 데이터와 결합되는 연산을 회로에 의해 실행하는 방법으로서,
    제 1 입력 데이터 세트의 각각의 데이터가 제 2 입력 데이터 세트의 각각의 데이터와 연관되도록 데이터 쌍들을 규정하는 단계로서, 상기 제 1 입력 데이터 세트는 상기 제 1 입력 데이터를 포함하고, 상기 제 1 입력 데이터 세트 내의 각 데이터는 적어도 하나의 워드(word)를 포함하며, 상기 제 1 입력 데이터 세트 내의 워드들은 동일한 크기를 가지며 제 1 워드 서브세트(subset)를 구성하며, 상기 제 1 워드 서브세트는 상기 제 1 입력 데이터 세트의 각각의 데이터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 워드들의 모든 가능한 값들을 포함하며, 상기 제 2 입력 데이터 세트는 상기 제 2 입력 데이터를 포함하고, 상기 제 2 입력 데이터 세트 내의 각 데이터는 적어도 하나의 워드(word)를 포함하며, 상기 제 2 입력 데이터 세트 내의 워드들은 동일한 크기를 가지며 제 2 워드 서브세트(subset)를 구성하며, 상기 제 2 워드 서브세트는 상기 제 2 입력 데이터 세트의 각각의 데이터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 워드들의 모든 가능한 값들을 포함하는, 상기 규정하는 단계; 및
    상기 데이터 쌍들 각각에 상기 연산을 적용하는 단계로서, 상기 연산의 출력 데이터 세트는 상기 데이터 쌍들 중 하나의 쌍에 상기 연산을 적용함으로써 획득되는 모든 데이터를 포함하는, 상기 연산을 적용하는 단계;를 포함하는, 연산 실행 방법.
  2. 제 1 항에 있어서,
    상기 출력 데이터 세트 내의 데이터들은 행들 및 열들로 배열되고,
    일 행 또는 일 열의 데이터들은 상기 제 1 입력 데이터 세트 및 상기 제 2 입력 데이터 세트 중 하나의 입력 데이터 세트 내의 동일한 일 데이터 및 상기 제 1 입력 데이터 세트 및 상기 제 2 입력 데이터 세트 중 다른 하나의 입력 데이터 세트 내의 데이터들 각각에 상기 연산을 적용함으로써 획득되며,
    상기 방법은 상기 출력 데이터들을 포함하는 상기 출력 데이터 세트 중 일 행 또는 열을 선택하는 것을 포함하는, 연산 실행 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 출력 데이터 세트는 2 개의 데이터 라인들을 포함하는 메모리 영역에 기록되고,
    상기 2 개의 데이터 라인들 중 하나는 상기 연산을 상기 제 1 입력 데이터 및 상기 제 2 입력 데이터 세트 내의 데이터들 각각에 적용함으로써, 또는 상기 연산을 상기 제 2 입력 데이터 및 상기 제 1 입력 데이터 세트 내의 데이터들 각각에 적용함으로써 획득된 출력 데이터들을 포함하는, 연산 실행 방법.
  4. 제 3 항에 있어서,
    상기 출력 데이터 세트의 행들 또는 열들은 상기 메모리 영역의 상기 데이터 라인들에 랜덤하게 또는 교번적으로 기록되고, 알려진 위치에 있는 출력 데이터들을 포함하는 출력 데이터들의 행 또는 열이 상기 메모리 영역의 상기 데이터 라인들 중 하나의 데이터 라인에 기록될 때, 상기 메모리 영역의 상기 데이터 라인들 중 다른 데이터 라인은 후속하여 연산된 출력 데이터 세트의 모든 출력 데이터를 수신하고, 상기 방법은 상기 예상 출력 데이터를 포함하는 상기 메모리 영역의 데이터 라인을 상기 연산의 출력부로서 선택하는 것을 포함하거나; 또는
    상기 출력 데이터 세트의 행들 또는 열들은, 상기 메모리 영역의 상기 데이터 라인들 중 다른 데이터 라인에 기록된, 상기 출력 데이터 세트의 일 행 또는 열을 제외하고, 상기 메모리 영역의 상기 데이터 라인들 중 하나의 데이터 라인에 기록된 이전 데이터들과의 XOR 연산들에 의해 결합되며, 상기 메모리 영역의 상기 2 개의 데이터 라인들이 동일하지 않을 때 에러가 검출되는, 연산 실행 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 연산은 배타적 논리합(Exclusive OR)인 것인, 연산 실행 방법.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 출력 데이터 세트 내의 상기 데이터들의 계산들(computations)은 랜덤 순서로 수행되는, 연산 실행 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 출력 데이터 세트의 일 행 또는 열에서, 상기 출력 데이터 세트 내의 다른 데이터와 발생 횟수와 상이한 발생 횟수를 갖는 데이터를 검출하는 것을 포함하며,
    상기 발생 횟수가 상이한 두 개의 데이터들이 상기 출력 데이터 세트의 일 행 또는 열에서 발견되면 에러가 검출되는, 연산 실행 방법.
  8. 제 7 항에 있어서,
    상기 출력 데이터 세트의 일 행 또는 열 내에서 2 개의 동일한 데이터를 검출하는 동작은, 상기 출력 데이터 세트의 해당 행 또는 열의 모든 데이터들을 XOR 연산에 의해 결합하는 동작과, 상기 XOR 연산들의 결과를 제로와 비교하는 동작을 포함하는, 연산 실행 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 제 1 입력 데이터 세트는 상기 제 1 입력 데이터를, 상기 제 1 입력 데이터와 동일한 비트 수를 갖는 마스크의 가능한 값들 각각과, XOR 연산에 의해, 한번 결합시킴으로써 생성되는, 연산 실행 방법.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 제 1 입력 데이터 세트 내의 다수의 데이터들을 서로 연결하여 제 1 입력 워드를 생성하는 단계;
    상기 제 2 입력 데이터 세트 내의 동일한 수의 데이터들을 서로 연결하여 제 2 입력 워드를 생성하는 단계; 및
    상기 제 1 입력 워드 및 제 2 입력 워드에 상기 연산을 적용하는 단계;를 포함하는, 연산 실행 방법.
  11. 입력 데이터를 암호화 또는 복호화하는 방법으로서,
    배타적 논리합 연산을 상기 입력 데이터의 각 바이트, 및 비밀 키로부터 유도된 키의 대응하는 바이트에 적용하고, 상기 입력 데이터의 각 바이트에 대해, 출력 바이트들의 제 1 출력 데이터 세트를 제공하는 단계로서, 상기 출력 바이트들은 상기 입력 데이터의 바이트에 적용된 상기 연산의 결과를 포함하는 바이트의, 동일한 발생 횟수들을 갖는 모든 가능한 값들을 포함하는, 상기 제공하는 단계;
    치환 연산(substitution operation)을 상기 제 1 출력 데이터 세트 각각의 각 바이트에 적용하는 단계로서, 상기 제 1 출력 데이터 세트 내의 바이트의 함수로서 치환 테이블 내에서 일 바이트를 선택하는 것과, 상기 제 1 출력 데이터 세트 각각에 대하여, 상기 제 1 출력 데이터 세트 내의 바이트의 함수로서 상기 치환 테이블 내에서 선택된 모든 바이트들을 포함하는 제 2 출력 데이터 세트를 제공하는 것을 포함하는, 상기 치환 연산을 적용하는 단계; 및
    상기 제 2 출력 데이터 세트들에 순열 연산(permutation operation)을 적용하는 단계로서, 상기 제 2 출력 데이터 세트들의 바이트들 또는 이들의 배수(multiple)의 바이트들을 배타적 OR 연산들에 의해 서로 결합하는 것을 포함하며, 상기 배타적 OR 연산들은 제 1 항 내지 제 10 항 중 어느 한 항의 방법에 따라 수행되는, 상기 순열 연산을 적용하는 단계;를 포함하는, 데이터 암호화 또는 복호화 방법.
  12. 제 10 항에 있어서,
    상기 제 1 출력 데이터 세트들은,
    배타적 OR 연산에 의해 상기 입력 데이터의 바이트를 마스크 바이트의 모든 가능한 값들과 한번 결합시킴으로써 상기 입력 데이터의 각 바이트에 대해 입력 데이터 세트를 생성하고, 이어서 상기 유도된 키의 각 바이트를 상기 입력 데이터 세트들 내의 대응하는 입력 데이터의 각 바이트와 배타적 OR 연산에 의해 결합함으로써 생성되거나,
    배타적 OR 연산에 의해 상기 유도된 키의 바이트를 상기 마스크 바이트의 모든 가능한 값들과 한번 결합시킴으로써 상기 유도된 키의 각 바이트에 대해 키 데이터 세트를 생성하고, 이어서 상기 입력 데이터의 각 바이트를 상기 키 데이터 세트들 내의 대응하는 키 데이터의 각 바이트와 배타적 OR 연산에 의해 결합함으로써 생성되거나,
    상기 유도된 키의 대응하는 바이트를 상기 입력 데이터의 각 바이트와 배타적 OR 연산에 의해 결합하여서 출력 바이트들을 생성하고, 이어서 각 출력 바이트를 상기 마스크 바이트의 모든 가능한 값들과 한번 배타적 OR 연산에 의해 결합함으로써 생성되는, 데이터 암호화 또는 복호화 방법.
  13. 프로세서를 포함하고 제 1 항 내지 제 12 항 중 어느 한 항에 따른 방법을 구현하도록 구성된 회로.
  14. 제 13 항에 있어서,
    코프로세서를 포함하는 회로.
  15. 제 13 항 또는 제 14 항에 따른 회로를 포함하고, 매체 상에 배치된 장치.
  16. 컴퓨터 메모리에 로딩 가능한 컴퓨터 프로그램 제품으로서,
    컴퓨터에 의해 실행될 때, 제 1 항 내지 제 12 항 중 어느 한 항에 따른 방법을 수행하도록 상기 컴퓨터를 구성시키는 코드 부분들을 포함하는, 컴퓨터 프로그램 제품.

KR1020170081855A 2016-06-28 2017-06-28 부채널 분석에 대응한 보호 방법 및 장치 KR20180002065A (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
EP16176717.3A EP3264667B1 (en) 2016-06-28 2016-06-28 A method for protecting a substitution operation against a side-channel analysis
EP16176718.1A EP3264396B1 (en) 2016-06-28 2016-06-28 A method for protecting a substitution operation using a substitution table against a side-channel analysis
EP16176718.1 2016-06-28
EP16176716.5 2016-06-28
EP16176717.3 2016-06-28
EP16176716.5A EP3264666B1 (en) 2016-06-28 2016-06-28 A protection method and device against a side-channel analysis
EP16176721.5 2016-06-28
EP16176721.5A EP3264668B1 (en) 2016-06-28 2016-06-28 A protection method and device against a side-channel analysis
EP16176719.9A EP3264397B1 (en) 2016-06-28 2016-06-28 A protection method and device against a side-channel analysis
EP16176719.9 2016-06-28

Publications (1)

Publication Number Publication Date
KR20180002065A true KR20180002065A (ko) 2018-01-05

Family

ID=60675622

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020170081855A KR20180002065A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응한 보호 방법 및 장치
KR1020170082023A KR20180002071A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응한 보호 방법 및 장치
KR1020170081987A KR20180002067A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응하여 대입표를 이용한 대입 연산을 보호하는 방법
KR1020170081861A KR20180002066A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응하여 대입 연산을 보호하는 방법
KR1020170082010A KR20180002069A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응한 보호 방법 및 장치

Family Applications After (4)

Application Number Title Priority Date Filing Date
KR1020170082023A KR20180002071A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응한 보호 방법 및 장치
KR1020170081987A KR20180002067A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응하여 대입표를 이용한 대입 연산을 보호하는 방법
KR1020170081861A KR20180002066A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응하여 대입 연산을 보호하는 방법
KR1020170082010A KR20180002069A (ko) 2016-06-28 2017-06-28 부채널 분석에 대응한 보호 방법 및 장치

Country Status (3)

Country Link
US (5) US10644873B2 (ko)
KR (5) KR20180002065A (ko)
CN (5) CN107547189A (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3220305B1 (en) * 2016-02-22 2018-10-31 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
CN107547189A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
EP3264311B1 (en) 2016-06-28 2021-01-13 Eshard A protection method and device against a side-channel analysis
US10771235B2 (en) * 2016-09-01 2020-09-08 Cryptography Research Inc. Protecting block cipher computation operations from external monitoring attacks
US11689352B2 (en) * 2016-12-12 2023-06-27 Arris Enterprises Llc Strong white-box cryptography
US10680798B2 (en) * 2017-02-15 2020-06-09 Nxp Usa, Inc. Masking storage transfer to protect against attacks
DE102017002153A1 (de) * 2017-03-06 2018-09-06 Giesecke+Devrient Mobile Security Gmbh Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
US10567159B2 (en) * 2017-06-07 2020-02-18 Nxp B.V. CMAC computation using white-box implementations with external encodings
CN108155984B (zh) * 2017-12-29 2020-10-02 北京理工大学 一种基于能量分析的密码算法簇逆向工程分析方法
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
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
US10778407B2 (en) * 2018-03-25 2020-09-15 Nuvoton Technology Corporation Multiplier protected against power analysis attacks
DE102018107114A1 (de) * 2018-03-26 2019-09-26 Infineon Technologies Ag Seitenkanalgehärtete Operation
US10824718B2 (en) * 2018-07-05 2020-11-03 Nxp B.V. Shuffling mechanism for shuffling an order of data blocks in a data processing system
CN109495242A (zh) * 2018-11-20 2019-03-19 上海安路信息科技有限公司 一种数据加密方法及数据加密设备
CN109951268B (zh) * 2019-02-18 2020-12-22 吉林大学珠海学院 基于位置换和位变换的加密解密方法和装置
US11788265B2 (en) 2019-08-12 2023-10-17 Sterilumen, Inc. Interchangeable drain disinfecting device with UV source irradiation optimization
US10738446B1 (en) 2019-08-12 2020-08-11 Sterilumen, Inc. Drain disinfecting device and method of installing the same
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
KR102157219B1 (ko) * 2019-10-31 2020-09-17 국민대학교산학협력단 경량 블록 암호화에 대한 고차 부채널 공격에 대응하는 방법 및 이를 이용한 장치
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
CN113595717B (zh) * 2020-04-30 2023-10-17 比亚迪股份有限公司 Ecb模式分组加密方法和解密方法及控制装置和车辆
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
EP3975470A1 (en) * 2020-09-25 2022-03-30 Thales DIS France SA Method for securing an execution of an algorithm of a cryptographic process

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182266B1 (en) * 1997-09-12 2001-01-30 Lucent Technologies, Inc. Self-auditing protection method for sorted arrays
IL139935A (en) * 1998-06-03 2005-06-19 Cryptography Res Inc Des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
US6295606B1 (en) * 1999-07-26 2001-09-25 Motorola, Inc. Method and apparatus for preventing information leakage attacks on a microelectronic assembly
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
JP2007520951A (ja) 2004-01-27 2007-07-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 電力解析攻撃対策保護
US7924057B2 (en) * 2004-02-13 2011-04-12 The Regents Of The University Of California Logic system for DPA resistance and/or side channel attack resistance
DE602004023436D1 (de) * 2004-03-29 2009-11-12 St Microelectronics Sa Prozessor zum ausführen eines aes algorithmus
US7848514B2 (en) * 2004-05-24 2010-12-07 Research In Motion Limited Table masking for resistance to power analysis attacks
EP1601132B1 (en) 2004-05-24 2006-11-15 Research In Motion Limited Table Masking for Resistance to Power Analysis Attacks
FR2873523B1 (fr) * 2004-07-22 2007-08-10 Sagem Procede et dispositif d'execution d'un calcul cryptographique
FR2875318A1 (fr) * 2004-09-15 2006-03-17 St Microelectronics Sa Protection d'un algorithme des
DE102004061312B4 (de) * 2004-12-20 2007-10-25 Infineon Technologies Ag Vorrichtung und Verfahren zum Detektieren eines potentiellen Angriffs auf eine kryptographische Berechnung
GB2443355B (en) 2005-01-27 2008-08-06 Samsung Electronics Co Ltd Cryptographic logic circuits and method of performing logic operations
KR100725169B1 (ko) * 2005-01-27 2007-06-04 삼성전자주식회사 전력 분석 공격에 안전한 논리 연산 장치 및 방법
WO2006112114A1 (ja) * 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. データ暗号化装置及びデータ暗号化方法
DE602005002349T2 (de) * 2005-05-10 2008-01-17 Research In Motion Ltd., Waterloo Schlüsselmaskierung für kryptographische Prozesse
US7716502B2 (en) 2005-08-24 2010-05-11 Radu Muresan Current flattening and current sensing methods and devices
FR2893796B1 (fr) * 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
ATE476803T1 (de) * 2006-03-07 2010-08-15 Research In Motion Ltd Tabellenteilung für kryptografische verfahren
KR100837270B1 (ko) * 2006-06-07 2008-06-11 삼성전자주식회사 스마트 카드 및 그것의 데이터 보안 방법
US8422668B1 (en) * 2006-12-15 2013-04-16 Spansion Llc Table lookup operation on masked data
DE102007007699A1 (de) 2007-02-09 2008-08-14 IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik Reduktion von Seiten-Kanal-Informationen durch interagierende Krypto-Blocks
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
JP2008252299A (ja) 2007-03-29 2008-10-16 Hitachi Ltd 暗号処理システム及び暗号処理方法
US7970129B2 (en) * 2007-04-19 2011-06-28 Spansion Llc Selection of a lookup table with data masked with a combination of an additive and multiplicative mask
EP2195761B1 (en) * 2007-10-01 2013-04-03 Research In Motion Limited Substitution table masking for cryptographic processes
ES2366753T3 (es) * 2007-12-13 2011-10-25 Oberthur Technologies Método de procesamiento criptográfico de datos, en particular con la ayuda de una caja s, dispositivo y programas asociados.
EP2273472B1 (en) * 2008-03-31 2016-02-17 Fujitsu Limited Coder equipped with common key code function and built-in equipment
JP5300428B2 (ja) * 2008-11-13 2013-09-25 ルネサスエレクトロニクス株式会社 演算装置及び演算処理方法
JP5268609B2 (ja) * 2008-12-09 2013-08-21 株式会社東芝 暗号処理装置及び演算方法
FR2941342B1 (fr) * 2009-01-20 2011-05-20 Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst Circuit de cryptographie protege contre les attaques en observation, notamment d'ordre eleve.
EP2363974A1 (en) * 2010-02-26 2011-09-07 Research In Motion Limited Variable table masking for cryptographic processes
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
US9331848B1 (en) * 2011-04-29 2016-05-03 Altera Corporation Differential power analysis resistant encryption and decryption functions
FR2985624B1 (fr) * 2012-01-11 2014-11-21 Inside Secure Procede de chiffrement protege contre des attaques par canaux auxiliaires
JP5711681B2 (ja) * 2012-03-06 2015-05-07 株式会社東芝 暗号処理装置
FR2990034B1 (fr) * 2012-04-25 2014-04-25 Inside Secure Procede de controle de redondance cyclique protege contre une attaque par canal auxiliaire
FR2995111B1 (fr) * 2012-09-04 2015-07-24 Morpho Protection contre canaux auxiliaires
DE102012018924A1 (de) * 2012-09-25 2014-03-27 Giesecke & Devrient Gmbh Seitenkanalgeschützte Maskierung
US9959429B2 (en) * 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
CN103647639A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种对称密码算法抵抗侧信道分析的方法
CN103647638A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种抵抗侧信道攻击的des掩码方法
US9569616B2 (en) 2013-12-12 2017-02-14 Cryptography Research, Inc. Gate-level masking
EP2884387B1 (en) * 2013-12-13 2016-09-14 Thomson Licensing Efficient modular addition resistant to side-channel attacks
CN103795527A (zh) * 2014-03-03 2014-05-14 重庆大学 防止基于功耗分析攻击aes算法的软件掩码防护方案
EP2940917B1 (en) * 2014-04-28 2019-02-20 Nxp B.V. Behavioral fingerprint in a white-box implementation
US10313128B2 (en) * 2014-08-29 2019-06-04 The Boeing Company Address-dependent key generator by XOR tree
US9485088B2 (en) * 2014-10-31 2016-11-01 Combined Conditional Access Development And Support, Llc Systems and methods for dynamic data masking
US10699030B2 (en) * 2014-12-30 2020-06-30 Cryptography Research Inc. Determining cryptographic operation masks for improving resistance to external monitoring attacks
CN104618094B (zh) * 2015-01-28 2015-12-30 山东华翼微电子技术股份有限公司 一种增强抗攻击能力的密码Mask方法
US20160269175A1 (en) 2015-03-09 2016-09-15 Qualcomm Incorporated Cryptographic cipher with finite subfield lookup tables for use in masked operations
CN104811295A (zh) * 2015-05-05 2015-07-29 国家密码管理局商用密码检测中心 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
CN104967509B (zh) * 2015-05-05 2018-05-18 国家密码管理局商用密码检测中心 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
US20170230171A1 (en) * 2015-08-25 2017-08-10 Massachusetts Institute Of Technology System and method of masking and computing on masked data in a data store
FR3040513B1 (fr) * 2015-09-02 2018-11-16 Stmicroelectronics (Rousset) Sas Protection d'un algorithme de rijndael
FR3040515B1 (fr) * 2015-09-02 2018-07-27 St Microelectronics Rousset Verification de la resistance d'un circuit electronique a des attaques par canaux caches
US10027640B2 (en) * 2015-09-22 2018-07-17 Qualcomm Incorporated Secure data re-encryption
US9794062B2 (en) 2015-10-08 2017-10-17 The Boeing Company Scrambled tweak mode of blockciphers for differential power analysis resistant encryption
FR3048086B1 (fr) 2016-02-22 2018-03-02 Eshard Procede de test de la resistance d'un circuit a une analyse par canaux auxiliaires
EP3220305B1 (en) 2016-02-22 2018-10-31 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
CN107547189A (zh) 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备

Also Published As

Publication number Publication date
KR20180002069A (ko) 2018-01-05
KR20180002067A (ko) 2018-01-05
CN107547195A (zh) 2018-01-05
CN107547193A (zh) 2018-01-05
US10581588B2 (en) 2020-03-03
US20170373832A1 (en) 2017-12-28
CN107547190A (zh) 2018-01-05
US10439797B2 (en) 2019-10-08
US10491372B2 (en) 2019-11-26
KR20180002071A (ko) 2018-01-05
US10439796B2 (en) 2019-10-08
US10644873B2 (en) 2020-05-05
CN107547189A (zh) 2018-01-05
CN107547194A (zh) 2018-01-05
US20170373830A1 (en) 2017-12-28
US20170373838A1 (en) 2017-12-28
US20170373831A1 (en) 2017-12-28
KR20180002066A (ko) 2018-01-05
US20170373829A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
KR20180002065A (ko) 부채널 분석에 대응한 보호 방법 및 장치
US11362802B2 (en) Cryptographic device arranged to compute a target block cipher
Karpovsky et al. Differential fault analysis attack resistant architectures for the advanced encryption standard
US9400636B2 (en) Apparatus and method for calculating a result in a scalar multiplication
CN106487497B (zh) 对rijndael算法的dpa保护
KR20170098729A (ko) 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
CN106487498B (zh) 电子电路对边信道攻击的抵抗的检验
CN106487499B (zh) Rijndael算法的保护
RU2603550C2 (ru) Устройство обработки данных, способ обработки данных и программа
KR100834096B1 (ko) 고차 전력분석공격에 대응하는 블록 암호 알고리즘aria의 암호화 방법
US20060153372A1 (en) Smart card and method protecting secret key
CN103636159A (zh) 用于产生随机的输出位序列的方法
EP3264396B1 (en) A method for protecting a substitution operation using a substitution table against a side-channel analysis
EP3264666B1 (en) A protection method and device against a side-channel analysis
JP2019504343A (ja) 計算デバイス及び方法
EP3264667B1 (en) A method for protecting a substitution operation against a side-channel analysis
EP3264668B1 (en) A protection method and device against a side-channel analysis
EP3264397B1 (en) A protection method and device against a side-channel analysis
Sudheendra et al. Implementation of cryptography for security