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

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

Info

Publication number
KR20180002069A
KR20180002069A KR1020170082010A KR20170082010A KR20180002069A KR 20180002069 A KR20180002069 A KR 20180002069A KR 1020170082010 A KR1020170082010 A KR 1020170082010A KR 20170082010 A KR20170082010 A KR 20170082010A KR 20180002069 A KR20180002069 A KR 20180002069A
Authority
KR
South Korea
Prior art keywords
mask
data
permutation
word
output
Prior art date
Application number
KR1020170082010A
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 KR20180002069A publication Critical patent/KR20180002069A/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 입력 세트의 각 데이터가 제2 입력 세트의 데이터 각각과 결부되는 데이터 쌍들을 정의하는 단계로서, 제1 및 제2 입력 세트들에 데이터는 제1 및 제2 입력 데이터와 제1 및 제2 마스크 세트들의 모든 제1 및 제2 마스크 파라미터들에 배타적 논리합(XOR) 연산을 적용하여 구한 것인, 상기 정의하는 단계; 및 출력 세트를 구하기 위하여 각각의 데이터 쌍에 연산을 적용하여 출력 데이터를 계산하는 단계로서, 제1 및 제2 마스크 세트들은 각각의 쌍에 대응하는 제1 및 제2 마스크 파라미터들에 대한 XOR 연산으로의 결합이 제3 마스크 세트를 생산하도록 하기 위한 것이고, 각각의 마스크 세트는 워드의 모든 가능한 값들의 발생 수와 같은 개수로 구성된 워드 컬럼을 포함하는, 상기 계산하는 단계;를 포함한다.

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 입력 데이터 세트 내의 데이터는 상기 제 1 입력 데이터 및 제 1 마스크 세트 내의 모든 제 1 마스크 파라미터들에 배타적 OR (XOR) 연산을 적용함으로써 획득되고, 상기 제 1 마스크 세트 내의 각각의 제 1 마스크 파라미터는 적어도 하나의 제 1 워드를 포함하고, 상기 제 1 마스크 세트 내의 제 1 워드들은 동일한 크기를 가지며 제 1 워드 서브세트(word subset)를 형성하고, 상기 제 1 워드 서브세트는 상기 제 1 마스크 세트의 각각의 제 1 마스크 파라미터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 상기 제 1 워드들의 가능한 모든 값들을 포함하며, 상기 제 2 입력 데이터 세트는 상기 제 2 입력 데이터를 포함하고, 상기 제 2 입력 데이터 세트 내의 데이터는 상기 제 2 입력 데이터 및 제 2 마스크 세트 내의 모든 제 2 마스크 파라미터들에 배타적 OR (XOR) 연산을 적용함으로써 획득되고, 상기 제 2 마스크 세트 내의 각각의 제 2 마스크 파라미터는 적어도 하나의 제 2 워드를 포함하고, 상기 제 2 마스크 세트 내의 제 2 워드들은 동일한 크기를 가지며 제 2 워드 서브세트(word subset)를 형성하고, 상기 제 2 워드 서브세트는 상기 제 2 마스크 세트의 각각의 제 2 마스크 파라미터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 상기 제 2 워드들의 가능한 모든 값들을 포함하는, 상기 데이터 쌍들을 규정하는 단계; 및 상기 데이터 쌍들 각각에 상기 연산을 적용함으로써 출력 데이터를 계산하는 단계로서, 상기 연산의 출력 데이터 세트는 상기 데이터들 쌍 중 하나에 상기 연산을 적용함으로써 생성되는 모든 출력 데이터를 포함하는, 상기 출력 데이터를 계산하는 단계를 포함하며, 상기 제 1 마스크 세트 내의 상기 제 1 마스크 파라미터들 각각과 상기 제 2 마스크 세트 내의 대응하는 제 2 마스크 파라미터를 XOR 연산에 의해서 결합함으로써 제 3 마스크 파라미터들을 포함하는 제 3 마스크 세트가 생성되도록 상기 제 2 마스크 세트가 생성되며, 상기 제 3 마스크 세트 내의 각각의 제 3 마스크 파라미터는 적어도 하나의 제 3 워드를 포함하고, 상기 제 3 마스크 세트 내의 제 3 워드들은 동일한 크기를 가지며 제 3 워드 서브세트(word subset)를 형성하고, 상기 제 3 워드 서브세트는 상기 제 3 마스크 세트의 각각의 제 3 마스크 파라미터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 상기 제 3 워드들의 가능한 모든 값들을 포함한다.
일 실시형태에 따라서, 상기 연산은 배타적 논리합(XOR)이다.
일 실시형태에 따라서, 상기 제 2 입력 데이터 세트는 상기 제 1 마스크 세트와 동일하다.
일 실시형태에 따라서, 상기 제 1 마스크 세트 및 상기 제 2 마스크 세트는 워드들의 제 1 순열 및 제 2 순열의 제 1 쌍으로부터 생성되며, 상기 제 1 순열 및 제 2 순열 각각은 동일한 발생 횟수를 갖는, 워드들의 모든 가능한 값들을 포함하며, 상기 제 1 순열 내의 각 워드를 상기 제 2 순열 내의 각 워드와 XOR 연산에 의해서 결합함으로써 결과 순열이 생성되고, 상기 결과 순열은 워드들을 포함하며 동일한 발생 횟수들을 갖는, 상기 워드들의 모든 가능한 값들을 포함하며, 상기 제 1 마스크 세트 및 제 2 마스크 세트는 하기의 등식들을 사용하여 각 인덱스 l에 대해서 생성되며:
U1[l] = PM(u1[l]
Figure pat00001
UR), 및
V1[l] = PM(v1[l]
Figure pat00002
VR), 또는
U1[l] = PM(u1[l])
Figure pat00003
UR, 및
V1[l] = PM(v1[l])
Figure pat00004
VR,
UR 및 VR은 마스크 파라미터들 U1[1] 또는 V1[1] 중 임의의 것의 크기를 갖는 랜덤 워드(random word)이고, u1 및 v1은 상기 등식들에 의해 획득된 이전에 계산된 마스크 세트들이거나, 또는 각기 상기 제 1 쌍의 마스크 세트들과 동일하며, PM은 상기 마스크 세트들 u1 및 v1에 적용되는 랜덤하게 선택된 순열(permutation)이다.
일 실시형태에 따라서, 상기 제 2 입력 데이터 세트 내의 각각의 제 2 입력 데이터는 치환 연산에 의해 각각의 마스킹된 치환 테이블로부터 선택되고, 상기 마스킹된 치환 테이블은 입력 치환 테이블로부터 생성되고 상기 제 1 마스크 세트 내의 상기 제 1 마스크 파라미터들 각각 및 상기 제 2 마스크 세트 내의 대응하는 제 2 마스크 파라미터에 대해 하나의 마스킹된 치환 테이블을 포함한다.
일 실시형태에 따라서, 상기 마스킹된 치환 테이블은, 상기 제 1 마스크 세트를 생성하는 단계; 상기 입력 치환 테이블 내의 값들의 수와 동일한 개수의 제 2 마스크 파라미터들을 포함하는 상기 제 2 마스크 세트를 생성하는 단계; 상기 제 1 마스크 세트 및 제 2 마스크 세트에서 각 하나의 마스크 파라미터를 한번 선택하여서 마스크 쌍들을 형성하는 단계로서, 각 마스크 쌍은 상기 제 1 마스크 파라미터들 중 하나 및 상기 제 2 마스크 파라미터들 중 하나를 포함하는, 상기 마스크 쌍들을 형성하는 단계; 및 상기 제 1 마스크 세트 내의 각 마스크 파라미터에 대해 상기 마스킹된 치환 테이블 각각을 생성하는 단계에 의해서 생성되며, 상기 마스킹된 치환 테이블 각각을 생성하는 단계는, 상기 입력 치환 테이블에서 각 데이터를 선택하는 단계; 상기 선택된 각 데이터에 대해서, 상기 선택된 데이터 및 상기 제 1 마스크 파라미터에 대응하는 상기 제 2 마스크 파라미터 또는 이의 변환된 값에 XOR 연산을 적용함으로써 마스킹된 데이터를 계산하는 단계; 최초의 인덱스 및 상기 제 1 마스크 파라미터 또는 이의 변환된 값에 XOR 연산을 적용함으로써 마스킹된 인덱스를 계산하는 단계; 및 상기 마스킹된 데이터를 상기 마스킹된 치환 테이블에 저장하는 단계를 포함하며, 상기 선택된 데이터는 상기 최초의 인덱스에서 선택되고 상기 마스킹된 데이터는 상기 마스킹된 인덱스에 저장되거나; 또는 상기 선택된 데이터는 상기 마스킹된 인덱스에서 선택되고 상기 마스킹된 데이터는 최초의 인덱스에 저장된다.
일 실시형태에 따라서, 상기 출력 데이터 세트 내의 데이터들의 계산들은 랜덤 순서로 수행된다.
일 실시형태에 따라서, 상기 출력 데이터 세트 내의 각각의 출력 데이터는 적어도 하나의 워드를 포함하고, 상기 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며 출력 워드 서브세트를 형성하며, 상기 출력 워드 서브세트는 상기 출력 데이터 세트 내의 각 출력 데이터로부터의 단일 워드를 포함하며 동일한 발생 횟수를 갖는, 상기 워드들의 모든 가능한 값들을 포함하며, 상기 방법은, 상기 출력 워드 서브세트 내의 다른 워드들의 발생 횟수와 상이한 발생 횟수를 갖는 워드를 상기 출력 워드 서브세트에서 검출하는 단계로서, 상이한 발생 횟수들을 갖는 2 개의 워드들이 상기 워드 출력 서브세트에서 발견되면 에러가 검출되는, 상기 검출하는 단계; 또는 상기 출력 데이터 세트가 상기 제 1 입력 데이터 및 상기 제 2 입력 데이터에 적용된 상기 연산의 출력 데이터에 그리고 결과 마스크 세트의 각 마스크 파라미터에 XOR 연산을 적용함으로써 획득된 데이터를 포함하도록, 상기 출력 데이터 세트 내의 각각의 데이터를 상기 결과 마스크 세트의 각각의 마스크 파라미터와 XOR 연산에 의해 결합하는 단계로서, 상기 출력 데이터 세트 내의 2 개의 데이터에 적용된 XOR 연산이 상이한 데이터들을 제공할 때 에러가 검출되는, 상기 결합하는 단계를 포함한다.
일 실시형태에 따라서, 상기 제 1 입력 데이터는, 입력 데이터의 비트들이 믹싱(mixing)되게 하는 비트 순열 연산(bit permutation operation)을 포함하는 연산들에 의해 생성되고, 상기 방법은 상기 비트 순열 연산을 제 3 입력 데이터 세트 내의 모든 데이터에 적용하는 단계를 포함하며, 상기 제 3 입력 데이터 세트 내의 각 데이터는 XOR 연산에 의해 상기 제 1 마스크 세트 내의 제 1 마스크 파라미터들 중 하나와 결합되고, 상기 비트 순열 연산의 출력은 상기 제 3 입력 데이터 세트 내의 데이터들 중 하나에 상기 비트 순열 연산을 적용함으로써 생성되는 모든 데이터를 포함하는 출력 데이터 세트를 포함하고, 상기 비트 순열 연산의 상기 출력 데이터 세트 내의 각각의 데이터가 적어도 2 개의 워드를 포함하도록 상기 제 1 마스크 세트가 생성되며, 상기 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며 출력 워드 서브세트를 형성하며, 상기 출력 워드 서브세트는 상기 출력 데이터 세트 내의 각각의 출력 데이터로부터의 단일 워드를 포함하고 동일한 발생 횟수들들 갖는, 상기 출력 워드 서브 세트 내의 워드들의 가능한 모든 값들을 포함한다.
실시형태들은 또한, 제 1 입력 데이터 및 제 2 입력 데이터를 결합하는 연산을 포함하는 암호 알고리즘에 따라서 입력 데이터를 암호화 또는 복호화하는 방법으로서, 상기 연산은 위에서 규정된 방법에 따라 수행되는, 데이터 암호화 또는 복호화 방법에 관한 것일 수 있다.
일 실시형태에 따라서, 상기 암호화 알고리즘은 AES(Advanced Encryption standard) 알고리즘을 따르며, 상기 방법은, 상기 입력 데이터의 각 워드에, 상기 제 1 마스크 세트의 각 마스크 파라미터에, 그리고 상기 입력 데이터의 워드에 대응하는 비밀 키의 워드에 XOR 연산을 적용함으로써 입력 데이터 세트를 생성하는 단계; 다수의 중간 라운드를 수행하는 단계; 및 출력 데이터 세트를 제공하는 단계로서, 상기 출력 데이터 세트 내의 각각의 워드가 상기 제 1 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된, 상기 출력 데이터 세트를 제공하는 단계를 포함하며, 상기 다수의 중간 라운드들 각각은, 마스킹된 치환 테이블을 사용하여 치환 연산을 수행하여, 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된 각각의 데이터를 포함하는 치환 출력 데이터 세트를 제공하는 동작, 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된 라운드 데이터 세트의 각 워드에, 그리고 상기 제 1 마스크 세트의 각각의 마스크 파라미터에, 그리고 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 XOR 연산을 적용함으로써 마스킹된 라운드 출력 데이터 세트를 계산하는 동작, 및 마스킹된 라운드 출력 데이터 세트를 다음 라운드에서 입력 데이터 세트로 사용하는 동작을 포함한다.
일 실시형태에 따라서, 상기 암호화 알고리즘은 DES(Data Encryption Standard)를 따르며, 상기 방법은, 초기 비트 순열 연산에 의해 제공된 결과 데이터의 각 워드, 및 상기 제 1 마스크 세트의 각 마스크 파라미터에 XOR 연산을 적용함으로써 입력 데이터 세트를 생성하는 단계; 다수의 중간 라운드를 수행하는 단계; 및 출력 데이터 세트를 제공하는 단계로서, 상기 출력 데이터 세트 내의 각각의 워드가 상기 제 1 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된, 상기 출력 데이터 세트를 제공하는 단계를 포함하며, 상기 다수의 중간 라운드들 각각은, 첫 번째 라운드에서 상기 입력 데이터 세트에 적용되고 후속하는 라운드들에서는 라운드 출력 데이터 세트에 적용되는 확장 비트 순열을 수행하는 동작으로서, 상기 비트 순열 연산의 비트 순열 출력 데이터 세트 내의 각각의 데이터는 적어도 2 개의 워드를 포함하며, 상기 비트 순열 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며 비트 순열 출력 워드 서브세트를 형성하며, 상기 비트 순열 출력 워드 서브세트는 상기 비트 순열 출력 데이터 세트의 각 비트 순열 출력 데이터로부터의 단일 워드를 포함하고 동일한 발생 횟수를 갖는, 상기 비트 순열 출력 워드 서브세트 내의 상기 워드들의 모든 가능한 값들을 포함하는, 상기 확장 비트 순열을 수행하는 동작, 마스킹된 치환 테이블을 사용하여 치환 연산을 수행하여, 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된 각각의 데이터를 포함하는 치환 출력 데이터 세트를 제공하는 동작, 및 상기 제 1 마스크 세트 및 제 2 마스크 세트의 각각의 마스크 파라미터들에 의해 마스킹된 라운드 데이터 세트의 각 워드에, 그리고 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 XOR 연산을 적용함으로써 마스킹된 라운드 출력 데이터 세트를 계산하는 동작을 포함한다.
또한, 실시형태들은 프로세서를 포함하고 위에서 규정된 방법을 구현하도록 구성된 회로에 관한 것일 수 있다.
일 실시형태에 따라서, 상기 회로는 코프로세서를 포함한다.
또한, 실시형태들은 위에서 규정된 회로를 포함하고, 매체 상에 배치된 장치에 관한 것일 수 있다.
또한, 실시형태들은 컴퓨터 메모리에 로딩 가능한 컴퓨터 프로그램 제품으로서, 컴퓨터에 의해 실행될 때 위에서 규정된 방법을 수행하도록 상기 컴퓨터를 구성시키는 코드 부분들을 포함하는, 컴퓨터 프로그램 제품에 관한 것일 수 있다.
방법 및/또는 장치는 다음의 도면 및 설명을 참조하면 보다 양호하게 이해될 수 있다. 비제한적 및 비한정적 설명은 다음 도면과 함께 설명된다. 도면들에서, 달리 언급되지 않는 한, 동일한 참조 부호는 상이한 도면 전체에서 동일한 부분을 나타낼 수 있다.
도 1은 보안 회로의 종래 아키텍처를 나타낸다.
도 2는 일 실시예에 따라 보호되는 회로의 블록도이다.
도 3은 일 실시예에 따른, 입력 데이터를 변형하는 보호 단계들의 흐름도이다.
도 4는 일 실시예에 따른, 보호 단계들을 나타내는 블록도이다.
도 5 내지 도 7은 도 2의 회로에 의해 수행되는 연산을 도시하는 블록도이다.
도 8은 일 실시예에 따른 보호 단계를 포함하는 AES 암호화 알고리즘의 블록도이다.
도 9는 일 실시예에 따라 보호되는 연산의 흐름도이다.
도 10a, 도 10b, 도 10c는 다양한 실시예들에 따른, 치환 테이블을 보호하는 방법을 나타내는, 치환 테이블들의 블록도들이다.
도 11은 AES 암호화 알고리즘에서의 종래의 열 믹싱 연산(mix column operation)의 블록도이다.
도 12는 일 실시예에 따른, 보호된 AES 암호화 회로의 AES 열 믹싱 회로의 블록도이다.
도 13은 상이한 실시예들에 따른, 보호된 치환 테이블을 생성하는 방법의 흐름도이다.
도 14는 일 실시예에 따라 보호되는 치환 연산의 흐름도이다.
도 15는 일 실시예에 따라 보호되는 배타적 논리합 연산의 흐름도이다.
도 16은 일 실시예에 따른 보호 단계들을 포함하는 DES 암호화 알고리즘의 블록도이다.
도 17은 일 실시예에 따라 보호된 치환 테이블을 생성하는 방법의 흐름도이다.
도 18은 다른 실시예에 따라 입력 데이터를 변형하는 보호 단계들의 흐름도이다.
도 19는 일 실시예에 따라 DES 알고리즘을 실행할 때 획득된 중간 데이터 세트의 블록도이다.
도 20은 일 실시예에 따른 DES 알고리즘의 연산들을 나타내는 블록도이다.
도 21은 일 실시예에 따라 보호되는 배타적 논리합 연산의 흐름도이다.
도 22 및 도 23은 상이한 실시예들에 따른, DES 암호화 알고리즘을 구현하는 회로를 나타내는 블록도들이다.
도 24는 다른 실시예에 따른 보안 회로를 나타내는 블록도이다.
도 1은, 예를 들어, 플라스틱 카드 또는 임의의 다른 매체와 같은 휴대용 매체(HD) 상에 또는 이동 단말기와 같은 단말기 내에 배치된 보안 집적 회로(CT)의 예를 나타낸다. 이 보안 집적 회로는 마이크로프로세서(PRC), 입출력 회로(IOC1), 데이터 및 어드레스 버스에 의해 마이크로프로세서에 연결된 메모리(M1, M2, M3), 및 선택적으로, 암호 연산 코프로세서(CP1) 또는 산술 가속기, 및 난수 생성기(RGN)를 포함한다. 메모리는 휘발성 메모리(M1), 예를 들어, 휘발성 데이터 및 애플리케이션 프로그램을 포함하는 RAM 타입("Random Access Memory"), 비휘발성 데이터 및 애플리케이션 프로그램을 포함하는, EEPROM 또는 플래시 메모리와 같은 비휘발성 메모리(M2), 및 가능하게는, 마이크로프로세서의 운영 체제 및 상수 데이터를 포함하는 판독 전용 메모리(M3)(또는 ROM 메모리)를 포함할 수 있다. 운영 체제는 또한 비휘발성 메모리에 저장될 수 있다.
통신 인터페이스 회로(IOC1)는 예를 들어, ISO/IEC 7816 표준에 따른 접촉식, 예를 들어, ISO/IEC 14443A/B 또는 ISO/IEC 13693 표준에 따른, 유도 결합에 의한 비접촉식, 또는 전기적 결합(UHF 인터페이스 회로)에 의한 비접촉식 또는 접촉식 및 비접촉식의 조합일 수 있다. 인터페이스 회로(IOC1)는 또한 특정 인터페이스를 통해 NFC 제어기와 같은 다른 회로 또는 이동 단말기와 같은 단말기 또는 접속된 대상의 메인 회로 에 연결될 수 있다.
일부 실시예에서, 보안 집적 회로(CT)는 암호화 기능에 의해, 이러한 보안 집적 회로에 송신된 메시지를 암호화, 복호화 또는 서명하는 연산을 실행하도록 구성될 수 있다. 이러한 암호화 기능은 보안 집적 회로(CT)의 프로세서(PRC)에 의해 실행될 수 있거나, 또는 프로세서(PRC)에 의해, 부분적으로 또는 전체적으로 코프로세서(CP1)에 위임될 수 있다.
본 발명에서, 연산 특히, 사이드-채널 분석을 막는 암호화 알고리즘에서의 연산을 보호하는 것이 제안된다. 이러한 맥락에서, 상기 연산은 입력 데이터를 수신하고, 상기 입력 데이터의 값의 연산결과로서 출력 데이터를 제공한다. 일 실시예에 따른 보호 방법은 해당 연산에 의해서 프로세싱될 필요가 있는 입력 데이터들을 포함하는 입력 데이터 세트의 모든 데이터들에 대해 보호될 해당 연산을 실행하는 단계를 포함하며, 여기서 상기 입력 데이터 세트 내의 각 데이터는 적어도 하나의 워드(word)를 포함하고, 상기 입력 데이터 세트 내의 워드들은 동일한 크기를 가지며 워드 서브세트 또는 열을 형성하며, 상기 워드 서브세트 또는 열은 상기 입력 데이터 세트 내의 각 데이터로부터의 단일 워드를 포함하고, 해당 워드들의 크기와 관련하여 동일한 발생 횟수를 갖는 모든 가능한 워드들을 포함한다. 다른 보호 방식은 해당 연산의 결과로서 예상 출력 데이터를 포함하는 출력 데이터 세트를 제공하는 것을 포함하되, 상기 출력 데이터 세트 내의 각 데이터는 적어도 하나의 워드를 포함하며, 상기 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며 워드 서브세트 또는 열을 형성하며, 상기 워드 서브세트 또는 열은 상기 출력 데이터 세트 내의 각 데이터로부터의 단일 워드를 포함하고, 해당 워드들의 크기와 관련하여 동일한 발생 횟수를 갖는 모든 가능한 워드들을 포함한다.
이하에서, "워드"는 데이터 내의 비트 그룹을 나타내고, "워드 열(word column)"은 데이터 세트 내의 서브세트(subset)를 말하며 이러한 서브세트는 해당 데이터 세트 내의 모든 데이터로부터의 단일 워드를 포함하며, 상기 워드 열 내의 모든 워드들은 동일한 크기를 갖는다. 워드 열을 구성하는 워드들은 반드시 정렬될 필요는 없으며, 즉, 해당 데이터 세트의 데이터 내에서 동일한 비트 위치를 포함할 필요는 없다.
도 2는 프로세싱될 입력 데이터 X를 수신하고 입력 데이터 X에 적용된 여러 연산들 OP1, OP2, ... OPn을 직렬로 수행하는 회로(CT1)를 나타낸다. 일 실시예에 따르면, 회로(CT1)는 다수의 회로들(OC1)을 포함하며, 다수의 회로들(OC1) 각각은 연산들 OP1, OP2, ... OPn을 순차적으로 수행한다. 각각의 회로(OC1)는 입력 데이터 X 및 입력 마스크 파라미터 세트의 각각의 입력 마스크 파라미터 u를 수신한다. 이로써, 회로(CT1)는 W + 1 개의 회로들(OC1)을 포함하며, 이 회로들(OC1) 각각은 0, 1, ..., W와 동일한 마스크를 각각 수신하며, 여기서 W는 마스크 파라미터의 비트 단위의 크기를 고려할 때에 마스크 파라미터 u의 가능한 최대값을 나타낸다. 각 회로(OC1)는 입력 데이터 X 및 마스크 파라미터 u(= 0 또는 1, ... 또는 W)에 배타적 OR 연산(XOR)을 적용하는 회로(XG)를 포함한다. 각 회로(OC1)에서, 해당 회로(OC1)의 회로(XG)에 의해 제공된 데이터 X
Figure pat00005
u(u = 0, ... W)는 해당 회로(OC1)의 연산 OP1의 입력에 적용된다. 연산들 OP1 내지 OPn은 다음과 같다:
OPn(... OP2(OP1(X
Figure pat00006
u))...) = CX
Figure pat00007
v(u) (1)
여기에서, "
Figure pat00008
"는 XOR 연산자를 나타내고, v(u)는 입력 마스크 파라미터 u에 따른 출력 마스크 파라미터를 나타내며, CX는 입력 데이터 X에 적용된 연산들 OP1 내지 OPn의 결과들이다:
CX = OPn(...OP2(OP1(X))...) (2)
이로써, 각 회로(OC1)는 CX
Figure pat00009
v(u)(u = 0, 1, ... 또는 W)와 동일한 출력 데이터를 제공한다. 이로써, 회로(CT1)는 출력 데이터들 CX
Figure pat00010
v(0), CX
Figure pat00011
v(1), ... , CX
Figure pat00012
v(u), ..., CX
Figure pat00013
v(W)를 포함하는 출력 데이터 세트 PCX를 제공한다. 연산들 OP1 내지 OPn은, 연산들 OP1 내지 OPn에 의해 제공된 입력 데이터 X
Figure pat00014
u에 대응하는 출력 데이터가 마스크 파라미터 u(0 내지 W)의 각각의 값에 대해 CX
Figure pat00015
v(u)와 동일하고, u = 0 내지 W인 출력 마스크 파라미터들 v(u)의 세트가 출력 마스크 파라미터들 v(u)의 크기를 고려할 때 동일한 발생 횟수를 갖는 모든 가능한 값들을 포함하도록, 구성될 수 있다. 각 출력 마스크 파라미터 v(u)는 대응하는 입력 마스크 파라미터 u와 동일할 수 있다. 일 실시예에 따르면, 출력 데이터 세트 PCX 내의 출력 데이터의 계산들은 랜덤 순서로 수행될 수 있고 및/또는 랜덤 순서로 저장될 수 있다. 이러한 방식으로, 마스크 파라미터 u의 상이한 값들이 각기 회로들(OC1)에 랜덤 순서로 적용된다. 이로써, 회로(CT1) 내에서 랭크 k를 갖는 회로(OC1)는 입력 마스크 파라미터 u = U[k]를 수신하고, 여기서 U는 0과 W 간의 모든 가능한 수들의 랜덤 순열(random permutation)에 의해 생성된 마스크 세트이다. 마찬가지로, 회로(CT1) 내의 랭크 0를 갖는 회로(OC1)는 마스크 파라미터 U[0]을 수신하고, 회로(CT1) 내의 랭크 W를 갖는 회로(OC1)는 입력 마스크 파라미터 U[W]를 수신한다.
또한, 회로들(OC1)은 서로 독립적이며, 출력 데이터 세트 PCX의 데이터들 CX
Figure pat00016
v(u)의 각각의 계산은 출력 데이터 세트의 다른 데이터들의 계산과는 독립적이다. 이로써, 모든 회로들(OC1) 내에서의 연산들 OP1 내지 OPn은 각 회로(OC1) 내의 연산들의 순서가 고려된다면, 랜덤 순서로 수행될 수 있다.
랜덤 데이터에 적용되며 이로써 해당 보호될 연산에 대해 요구된 입력 데이터와는 상관관계가 없는 동일한 연산들의 폭주 시에 상기 보호될 연산을 은폐하는 것을 포함하는 종래 기술의 보호 방식과는 달리, 본 발명의 사상은 랜덤하게 선택되지 않은 다른 데이터들에 대해 해당 연산을 실행하는 것이다. 실제로, 이와 같은 다른 데이터들은, 프로세싱될 상기 요구된 입력 데이터 및 상기한 다른 데이터들로 구성된 입력 데이터 세트가 다음과 같이 구성될 때에, 상기 요구된 입력 데이터와 상관된다: 상기 입력 데이터 세트는 해당 연산에 의해서 프로세싱될 가능성이 있는 데이터의 크기를 가지며 동일한 발생 횟수를 갖는 모든 가능한 데이터를 포함한다. 물론, 해당 연산에 의해서 프로세싱될 입력 데이터는 상기 입력 데이터 세트 내에서 예측 불가능한 위치들을 가져야 하지만, 이러한 위치들은 해당 연산을 수행하는 회로에게는 알려진다.
입력 데이터 세트는 예를 들어, 1 바이트의 모든 가능한 값들(0 내지 255)을 포함하는 마스크 세트 U의 마스크 파라미터 U[1]과 요구된 입력 데이터 X를 논리 XOR 연산에 의해 결합함으로써 획득될 수 있다. 이로써, 입력 데이터 X가 1 바이트의 크기를 갖는다면, 입력 데이터 세트는 X
Figure pat00017
U[1]와 동일한 256 개의 데이터들을 포함하며, 여기서 U[l] = 0 내지 255이고, 요구 입력 데이터 X = PX[n] = X
Figure pat00018
U[n]이며, U[n] = 0이다( "
Figure pat00019
"는 바이트에 적용된 XOR 연산자를 나타냄). 일 실시예에 따라, 입력 데이터가 1 바이트로 인코딩되는 경우, 데이터들 PX[l] = X
Figure pat00020
U[l]을 포함하는 입력 데이터 세트 내의 모든 데이터에 해당 연산을 적용함으로써 해당 연산을 보호할 수 있으며, 여기서 l = 0 내지 255이며, 즉, 1 바이트의 크기를 갖는 가능한 모든 데이터들이다. 출력 데이터 세트 내에서의 출력 데이터들의 계산은 랜덤 순서로 수행될 수 있다. 이를 위해, 입력 데이터 세트 내의 데이터들은 랜덤 순서로 정렬될 수 있다.
도 3은 일 실시예에 따는, 입력 데이터 X를 포함하는 입력 데이터 세트 PX를 생성하는 절차의 단계들(S11 내지 S17)을 나타낸다. 단계들(S11 내지 S16)은 연속적으로 실행된다. 단계(S11)에서, 변수 RN는 입력 데이터 X를 이진 코드로 인코딩하는데 사용된 비트들의 수에 의해 규정된 크기에 따라 결정된 최대값 W과 0 간의 랜덤 값을 수신한다. 이로써, b 비트로 인코딩된 변수 RN에 대해, 최대값 W는 2b-1과 동일하다. 변수 RN이 8-비트로 인코딩되는 경우, W 값은 255이다. 변수 RN이 16-비트로 인코딩되는 경우, W 값은 216-1(= 65535)와 같다. 단계(S12)에서, 인덱스 l은 0으로 설정된다. 단계(S13)에서, 인덱스 l 및 변수 RN에 배타적 논리합 연산을 적용함으로써 마스크 파라미터 MSK(=1
Figure pat00021
RN)가 계산된다. 단계(S14)에서, 입력 데이터 X 및 마스크 파라미터 MSK에 배타적 논리합 연산을 적용함으로써, 입력 데이터 세트 PX를 구성하는 테이블 내에서의 인덱스 l에 의해 지정된 입력 데이터 PX[1]가 계산된다. 도 4는 입력 데이터 X, 마스크 파라미터 MSK의 상이한 값들 U[0](= 0
Figure pat00022
RN), U[1](= 1
Figure pat00023
RN), ..., U[W](= W
Figure pat00024
RN), 및 입력 데이터 세트 PX의 상이한 데이터들 PX[0], PX[1], ..., PX[W]을 나타낸다.
단계(S15)에서, 인덱스 l이 1만큼 증분된다. 단계(S16)에서, 인덱스 l은 최대값 W와 비교되고, 인덱스 l이 값 W보다 크면, 단계(S17)가 실행되고, 그렇지 않으면 단계들(S13 내지 S16)에서 계산의 새로운 반복이 실행된다. 단계(S17)에서, 테이블 PX은 절차(S11 내지 S17)의 출력으로서 제공되고, 예상 입력 데이터는 인덱스 n(X = PX[n])에서 테이블 PX 내에 존재하며, 이러한 인덱스 n은 마스크 파라미터 U[n] = 0이 되게 하는 값을 갖는다. 실제로, 데이터 D 및 0에 적용된 XOR 연산의 결과는 데이터 D를 변경시키지 않는다.
마스크 파라미터 MSK의 값들은 랜덤 순서로 프로세싱될 수 있고 반드시 0
Figure pat00025
RN에서 W
Figure pat00026
RN으로의 순서로 프로세싱될 필요는 없다는 것을 유의해야 한다. 몇몇 연산이 입력 데이터 세트 PX에 적용되고 이로써 출력 데이터 세트가 계산될 수 있다. 예상된 출력 데이터는 예를 들어, 사이드 채널 분석에 덜 민감한 것으로 간주된, 프로세싱의 후속 단계에서 출력 데이터 세트로부터 공지된 인덱스 n에서 추출될 수 있다.
또한, 입력 데이터 X는 동일한 비트 수를 갖는 몇몇 이진 워드로 인코딩될 수 있다. 마스크 파라미터 MSK는 또한 입력 데이터 X와 동일한 비트 수를 갖는다. 입력 데이터가 1 바이트(8-비트 워드)로 인코딩되는 경우, 마스크 파라미터 MSK는 또한 8-비트로 인코딩될 수 있다. 단계들(S13 내지 S16) 간에서 실행되어야 하는 반복 횟수 W + 1은 2b와 같고, b는 입력 데이터 X의 비트 수이다. 입력 데이터 X가 16, 32 또는 64 비트를 갖는 일 워드로 인코딩되는 경우, 이러한 반복 횟수를 제한하는 것이 바람직할 수 있다. 입력 데이터에 적용된 연산이 바이트 단위로 수행된다면, 마스크 파라미터 MSK가 8-비트로 인코딩될 수 있고, 단계(S14)에서 마스크 파라미터 MSK를 그 자신과 여러 회 연결하여서 입력 데이터 X의 크기를 갖는 워드를 형성함으로써 마스크 파라미터 MSK가 입력 데이터 X와 결합될 수 있다. 이로써, 입력 데이터 X가 16-비트로 인코딩되는 경우, 8-비트로 인코딩된 마스크 파라미터 MSK는 그 자체와 연결되어, 16-비트의 워드를 획득할 수 있다. 단계(S14)에서 실행된 연산은 다음과 같이 된다:
PX[l] = X
Figure pat00027
MSK//MSK, (3)
여기서, "//"는 이진 워드의 연결 연산자를 나타낸다. 입력 데이터 X가 32-비트로 인코딩되는 경우, 8-비트로 인코딩된 마스크 파라미터 MSK의 각 값은 그 자체와 3 회 연결되어 32-비트의 워드를 얻는다. 단계(S14)에서 실행된 연산은 다음과 같이 된다:
PX[l] = X
Figure pat00028
MSK//MSK//MSK//MSK. (4)
실제로, 마스크로서 사용되는 마스크 파라미터 MSK는 암호화 알고리즘에서의 해당 연산에 의해 프로세싱되는 워드의 크기를 가질 수 있다.
또한, MSKj = 0(j = 1, 2, 3, 4)인 인덱스들이 저장된다면, 마스크 파라미터 MSK의 연결된 값들은 서로 상이할 수 있다:
PR[i] = OPR(X, KY
Figure pat00029
MSK1//MSK2//MSK3//MSK4). (5)
도 5는 보호 데이터 X1 및 보호되지 않은 데이터 X2에 XOR과 같은 연산을 적용한 것을 예시하며, 보호 데이터 X1 및 보호되지 않은 데이터 X2는 일 또는 여러 워드의 크기를 갖는다. 이로써, 보호 데이터 X1는 데이터들 PX[0], PX[1], ... PX[W]을 포함하는 입력 데이터 세트 PX1에 의해서 표현되고, 이러한 데이터들 각각은 입력 데이터 X1과 동일한 크기를 가지며, 여기서 W = 2b- 1이며, 여기서 b 입력 데이터 내의 워드의 크기이다. 요구 데이터 X1은 입력 데이터 세트 PX1 내에서 인덱스 n에 있다: X1 = PX[n]이며, n은 0과 W 간의 정수이다. 해당 연산의 결과는 W + 1 개의 출력 데이터 PR[0 ], PR[1], ..., PR[W]을 포함하는 출력 데이터 세트 PR이며, 각각의 데이터 PR[j](j = 0, ... W)는 PX[j]
Figure pat00030
X2와 동일하다. 해당 연산의 예상된 결과 PR[n](= PR[n]
Figure pat00031
X2 = X1
Figure pat00032
X2)는 테이블 PX1 내의 요구 입력 데이터 X1과 동일한 인덱스 n에 테이블 PR 내에 있다. 0과 W 간의 W + 1 개의 데이터들을 (입력 데이터 세트 PX1로서) 포함하기 때문에, 결과적인 출력 데이터 세트 PR은 입력 데이터 세트 PX1과 동일한, 예상 결과 PR[n]의 보호 수준을 제공한다.
암호화 알고리즘에 사용된 두 개의 보호된 데이터 X1, X2가 XOR과 같은 연산에 의해 결합되되, 데이터 X1, X2가 입력 데이터 세트 X1, PX2로 교체됨으로써 보호되는 경우에, 문제가 발생할 수 있다. 입력 데이터 세트 PX1, PX2 각각은 U[l]//... //U[l]의 형태로 된 마스크 파라미터 세트를 적용함으로써 규정되는, 입력 데이터 X1, X2 또는 그 워드의 크기에 따라 모든 가능한 데이터들을 포함할 수 있으며, 여기서 l = 0, ... W이며, U[1]는 워드의 크기를 가지며, 입력 데이터는 워드 단위로 프로세싱된다. 도 6은 입력 데이터 세트 PX1, PX2를 나타낸다. 입력 데이터 세트 PX1은 데이터 PX1[0], ... PX1[W]를 포함하며, 요구 입력 데이터 X1(= PX1[n])는 인덱스 n에 있다. 동일한 방식으로, 입력 데이터 세트 PX2는 데이터 PX2[0], ... PX2[W]를 포함하고, 요구 입력 데이터 X2(= PX2[n])는 동일한 인덱스 n에 있다.
입력 데이터 세트들 PX1과 PX2는 요구 입력 데이터들 X1과 X2에 상이한 마스크 값들을 적용함으로써 다음과 같이 생성된다:
{0, ..., W} 내의 인덱스 j의 모든 값들에 대해서 PX1[j]= X1
Figure pat00033
Uj, 및
{0, ..., W} 내의 인덱스 j의 모든 값들에 대해서 PX2[j] = X2
Figure pat00034
Vj.
이로써, 연산(X1
Figure pat00035
X2)을 보호하는 첫 번째 방법은 0과 W 간의 인덱스 j의 모든 값에 대해 (PX1[j]
Figure pat00036
PX2[j])를 다음과 같이 계산하는 것이다:
(X1
Figure pat00037
Uj)
Figure pat00038
(X2
Figure pat00039
Vj) =(X1
Figure pat00040
X2)
Figure pat00041
(Uj
Figure pat00042
Vj). (6)
사실, 데이터 Uj
Figure pat00043
vj가 인덱스 j의 각 값에 대해 서로 상이하다는 것을 보장할 수 없다. 인덱스들 j 및 k의 특정 값들에 대해, Uj = Vk 및 Uk = Vj가 발생할 수 있으며, 이는 2 개의 동일한 값들 Uj
Figure pat00044
Vk = Uk
Figure pat00045
Vj을 마스킹 값 세트 Uj
Figure pat00046
Vj로 이어진다.
이로써, 출력 데이터 세트 PR는 가능한 모든 데이터 값들(데이터 X1과 X2가 1 바이트로 인코딩될 때 0과 W 간에 있음)을 포함하는 조건을 만족하지 못한다. 극단적인 경우, Uj와 Vj는 각 인덱스 값 j에 대해 동일한 값을 갖는다. 이로써 다음과 같이 된다
(X1
Figure pat00047
Uj)
Figure pat00048
(X2
Figure pat00049
Vj) =(X1
Figure pat00050
X2)
Figure pat00051
0 = X1
Figure pat00052
X2. (7)
결과적으로, W + 1 개의 계산들의 각각은 예상 결과 출력인 동일한 결과 X1
Figure pat00053
X2를 리턴한다. 예상 결과가 보호되지 않을 뿐만 아니라, 보호될 연산이 W + 1 번 수행되기 때문에, 이러한 방식에서는 예상 결과가 크게 누출될 수 있다.
보호된 출력 데이터를 생성하는 또 다른 방법은 입력 데이터 세트 PX1, PX2 중 하나에서 일 데이터를 선택하고 이 선택된 데이터 및 다른 입력 데이터 세트의 모든 데이터들에 해당 연산을 적용하는 것이다. 이로써, 예를 들어, 입력 데이터 세트 PX2에서 데이터 PX2[k]가 선택되고, 이 선택된 데이터가 입력 데이터 세트 PX1 내의 모든 데이터와 결합된다. 이로써, 출력 데이터 세트 PR2 내의 각각의 결과적인 데이터 PR2[j]가 다음과 같이 계산된다:
PR2[j] = PX1[j]
Figure pat00054
PR2[k], (8)
여기서, j = 0, 2, ..., W이며 k는 고정 값을 가진다. 이렇게 함으로써, 출력 데이터 세트 PR2가 다음과 같이, 2 개의 동일한 데이터들 PR2[j]를 포함하지 않도록 보장된다:
PX1[j]
Figure pat00055
PX2[k] =(X1
Figure pat00056
Uj)
Figure pat00057
(X2
Figure pat00058
Vk) =(X1
Figure pat00059
X2)
Figure pat00060
Uj
Figure pat00061
Vk. (9)
여기서, Uj가 Uj'와 상이한 경우, Uj
Figure pat00062
vk는 Uj'
Figure pat00063
Vk와 상이하다. 그러나, 출력 데이터 PR2 내의 결과 데이터 PR2[j]의 계산은 데이터 세트 PX2 내의 단일 데이터 PX2[k]를 판독하는 것을 요구하는 반면, 입력 데이터 세트 PX1 내의 모든 데이터는 판독된다. 경우에 따라, 이러한 불균형 프로세싱으로 인해 데이터 누출이 발생하고, 이로써 데이터 PX2[k]의 공개될 수 있다. 선택된 데이터 PX2[k]가 요구 입력 데이터 X2(= PX2[n])와 동일한 경우, 이러한 데이터 누출은 데이터 X2의 값의 공개를 초래할 수 있다. 입력 데이터 세트 PX2 내의 다른 데이터 PX2[k](k ≠ n)가 입력 데이터 세트 PX1 내의 모든 데이터 PX1[j]와 결합되도록 선택되면, 선택된 데이터 PX2[k] = X2
Figure pat00064
Uk가 되도록 마스크 Mk의 값을 저장하는 것이 필요하다.
도 7에서는, 일 실시예에 따른, 보호된 출력 데이터를 생성하는 다른 방법이 예시된다. 도 7에서, 연산 X1
Figure pat00065
X2의 출력 데이터 세트 PR2는(W + 1)(W + 1) 개의 출력 데이터들 PR2[ij]을 포함하고, 이로써 다음과 같이 된다:
PR2[i.j] = PX1[i]
Figure pat00066
PX2[j], (10)
여기서, 인덱스 i와 j 각각은 0과 W 간의 모든 가능한 정수 값을 갖는다. 그러나, 이러한 방식은 (W + 1)(W + 1) 개의 계산을 수행하는 것을 요구한다.
도 6에 도시된 일 실시예에 따르면, 입력 데이터 세트 PX1 내의 각각의 데이터 PX1[1] 및 입력 데이터 세트 PX2 내의 각 데이터 PX2[1]은 다음과 같이 계산된다:
PX1[l] = X1
Figure pat00067
U[l] 및 PX2[l] = X2
Figure pat00068
V[l] (11)
여기서, U 및 V는 마스크 파라미터들 U[1] 및 V[1]을 포함하는 마스크 테이블들이고, l = 0, ... W이며, 이로써 각 테이블 U 및 V 내의 워드들의 각 열은 해당 열의 워드의, 동일한 발생 횟수를 갖는 모든 가능한 값들을 포함한다. 또한, 마스크 테이블들 U 및 V은, 0 내지 W의 인덱스 l의 모든 값들에 대해 결합 U[1]
Figure pat00069
V[1]이 적어도 하나의 워드 열을 포함하는 마스크 세트 Z를 제공하고 상기 마스크 세트 Z의 각 워드 열이 해당 열의 워드의, 동일한 발생 횟수를 갖는 모든 가능한 값들을 포함하도록 구성된다.
일 실시예에 따르면, 마스크 테이블들 U0 및 V0의 하나 또는 수 개의 쌍들(U0 및 V0)이 회로(CT1)에 저장되고, 각 쌍(U0, V0)은 각 값 Z[1] = Z[l] = U0[l]
Figure pat00070
V0[l]과 같은 테이블 Z을 제공하는 것으로서 테스트되며, 마스크 세트 Z의 각 워드 열은 해당 워드의 크기를 갖는 워드의, 동일한 발생 횟수를 갖는 가능한 모든 값들을 포함한다. 회로(CT1)는 각 인덱스 l에 대해서, 다음과 같이 마스크 테이블 쌍들 u2, v2을 도출하도록 구성된다:
u2[l] = PM(u1[l]
Figure pat00071
UR), 및
v2[l] = PM(v1[l]
Figure pat00072
VR), (12)
또는
u2[l] = PM(u1[l])
Figure pat00073
UR, 및
v2[l] = PM(v1[l])
Figure pat00074
VR, (13)
여기서, UR 및 VR은 마스크 파라미터들 U[1] 또는 V[1] 중 임의의 것의 크기를 갖는 랜덤 워드들이고, u1 및 v1은 등식 (12) 또는 등식 (13)에 의해 획득된 이전에 계산된 테이블이거나 각기 UO 및 VO과 동일하며, PM은 테이블들 U1 및 V1의 원소들에 적용된 랜덤으로 선택된 순열(permutation)이다. 등식 (12) 또는 등식 (13)을 사용하여 계산된 각 쌍 u2, v2은, 마스크 테이블 Z의 각 워드 열이 해당 워드들의 크기를 갖는 워드의, 동일한 발생 횟수를 갖는 가능한 모든 가능한 값들을 포함하도록, 테이블 Z을 제공하는 특성을 갖는다는 것을 증명할 수 있다. 이로써, 입력 데이터 X1, X2로부터 입력 데이터 세트 PX1, PX2를 생성하기 위해 각각 사용된 마스크 세트 U 및 V를 적절하게 선택함으로써, 도 6에 도시된 연산 방법은 입력 데이터 X1, X2에 대해서 입력 데이터 세트 PX1, PX2를 보호하는 보호 수준과 동일한 수준으로, 출력 데이터 X1
Figure pat00075
X2를 보호하는 결과적인 출력 데이터 세트 PR1를 제공할 수 있다.
소프트웨어 또는 하드웨어로 구현된 AES(Advanced Encryption Standard) 알고리즘에서 수행된 모든 연산들은 이전에 개시된 방법을 사용하여 보호될 수 있다. 도 8은 데이터를 암호화하기 위해 AES 알고리즘을 구현하는 암호화 계산 회로(CT2)의 예를 나타낸다. AES에 대한 자세한 내용은 2001년 11월 26일에 발행된 문헌 "Advanced Encryption Standard FIPS PUB 197"를 참조하면 된다. 도 8에서, 암호화 계산 회로(CT1)는 암호화될 데이터 X1 및 비밀 키로부터 유도된 모든 필요한 라운드 키를 포함하는 라운드 키 테이블 KT을 수신한다. 암호화 계산 회로(CT1)는 암호화된 데이터 CX1를 공급한다. 암호화 계산 회로(CT1)는 XOR 연산을 수행하는 연산 연산 회로들(XG1, XG2, XG3), 치환 계산 회로(SBB), 행-기반 원순열 계산 회로 (SHR), 열-기반 순열 계산 회로(MXC) 및 멀티플렉서(MUX)를 포함한다. 회로들(SBB, SHR 및 MXC)는 AES를 따른다. 연산 회로(XG1)는 암호화될 데이터(X1) 및 제 1 라운드 키(KT[0])를 수신한다. 연산 회로(XG1)의 출력은 치환 계산 회로(SBB)에 공급된다. 치환 계산 회로(SBB)의 일 출력은 행-기반 원순열 계산 회로(SHR)에 공급된다. 행-기반 원순열 계산 회로(SHR)의 일 출력은 멀티플렉서(MUX)를 통해 열-기반 순열 계산 회로(MXC) 또는 키 입력부에서 최종 라운드 키 KT[R]를 수신하는 연산 회로(XG3)의 입력부로 공급된다. 열-기반 순열 계산 회로(MXC)의 일 출력부는 자신의 키 입력부에서 라운드 r에서 라운드 키 KT[r]를 수신하는 연산 회로(XG2)의 입력부에 연결된다. 연산 회로(XG2)의 일 출력부는 치환 계산 회로(SBB)의 입력부에 연결된다. 최종 라운드 R에서, 회로들(SBB, SHR, MXC 및 XG2)을 포함하는 체인에 의해, 특정 수의 계산 라운드가 (AES에 따라 10, 12 또는 14 회) 수행될 때, 멀티플렉서 (MUX)가 활성화되어 연산 회로(XG3)에 상기 회로(SHR)의 출력을 제공하며, 연산 회로(XG3)는 출력 데이터 CX1를 공급한다.
첫 번째 계산 라운드 동안, 데이터 X1은 연산 회로(XG1)에 의해 프로세싱되고, 연산 회로(XG1)는 제 1 라운드 키 KT[0]에 데이터 X를 부가(XOR)한다. 연산 회로(XG1)는 결과 데이터 X1KT[0]를 제공하며, 이 결과 데이터는 회로들(SBB, SHR, MXC 및 XG2)에 의해 연속적으로 프로세싱된다. 이어서, 연산 회로(XG2)는 열-기반 순열 계산 회로(MXC)에 의해 제공된 데이터를 다음 라운드 키 KT[r]과 결합시킨다. 회로들(SBB, SHR MXC 및 XG1)은 AES 알고리즘의 몇 개의 라운드들 R에서 연속적으로 활성화된다. 치환 계산 회로(SBB)는 일반적으로 치환 테이블을 사용하여 구현된다.
일 실시예에 따르면, 암호화 계산 회로(CT2)는 암호화 계산 회로(CT1)(도 2)의 아키텍처를 갖는다. 이로써, 암호화 계산 회로(CT2)는 W + 1 개의 회로들(OC2)을 포함하며, 암호화 계산 회로(CT2)에 의해 프로세싱되는 입력 데이터 세트 내의 각 데이터에 대한 하나의 회로(OC2)를 포함한다. 각 회로(OC2)는 회로들(XG1, XG2, XG3, SBB, SHR, MXC 및 MUX)을 포함한다. 각각의 회로(OC2)는 회로들(XG4 및 XG5)을 더 포함한다. 회로(XG4)는 입력 데이터(X1)를 수신하고 회로(XG1)의 입력부에 접속된다. 연산 회로(XG5)는 연산 회로(XG2)의 출력부와 치환 계산 회로(SBB)의 입력부에 연결된다. 각각의 회로(OC2)는 마스크 테이블들 U 및 V로부터 각각의 마스크 파라미터 U[1], V[1]를 수신하고, 각각의 마스킹된 치환 테이블 SBM[1]을 수신한다.
일 실시예에 따르면, 마스킹된 치환 테이블 SBM[1]은 다음의 등식을 사용하여 각 회로(OC2)에 있어서 계산된다:
SBM[l,i
Figure pat00076
U[l]] = SBX[i]
Figure pat00077
V[l], (14)
여기서, SBX는 치환 또는 룩업 테이블이고, i는 테이블 SBX에서 값 SBX[i]를 선택하기 위한 인덱스이고, U[1] 및 V[1]은 각각 입력 마스크 및 출력 마스크이다. 도 10a는 치환 테이블 SBX 및 테이블 SBX의 각 값 SBX[i]에 등식 (14)을 적용함으로써 테이블 SBX로부터 도출된 마스킹된 테이블 SBM[1]을 나타낸다. 이로써, 마스킹된 입력 데이터 D
Figure pat00078
U[1]에 적용된 치환 연산의 결과는 알려진 출력 마스크 V[1]에 의해 마스킹된 출력 데이터이다. 도 10b에 도시된 바와 같이, 마스킹된 치환 테이블 SBM[1]은 또한 다음의 등식을 치환 테이블 SB의 각 값 SB[i]에 적용함으로써 획득될 수 있다:
SBM[l,i] = SBX[i
Figure pat00079
U[l]]
Figure pat00080
V[l]. (15)
도 9는 일 실시예에 따른, AES 치환 테이블 SBX로부터 마스킹된 치환 테이블 SBM을 계산하기 위한 절차의 단계들(S21 내지 S28)을 나타낸다. 먼저, 단계들(S21 내지 S27)이 연속적으로 수행된다. 단계(S21)에서, 치환 테이블 SBX가 입력된다. 단계(S22)에서, 마스크 테이블 U 및 V가 생성된다. 일 실시예에 따르면, 마스크 테이블 U 및 V는 등식 (12) 또는 등식 (13)을 사용하여 생성된다. 각 순열 U 및 V는 0과 W 간의 W + 1 개의 값들을 포함하며, W + 1은 테이블 SBX 내의 값들의 개수이다. 테이블 형태를 갖는 일 순열(permutation) PM은 랜덤 순열 생성 함수 RNP를 사용하여 랜덤하게 생성된다. 순열 PM은 0 내지 (W + 1)(W + 1) -1과 동일한 최대값 간 (W + 1)(W + 1) 개의 값들을 포함한다. 단계(S23)에서, 인덱스 k는 0으로 초기화된다. 단계(S24)에서, 순열 PM이 W + 1 개 행들의 원소들 및 W + 1 개의 원소들의 열들을 포함하는 2-테이블 엔트리임을 고려함으로써 인덱스 i와 j는 인덱스 k로부터 계산된다. 이로써, 인덱스 i는 PM[k] 값을 (W + 1)로 나눈 결과의 정수 부분으로서 계산될 수 있고, 인덱스 j는 PM[k] 값과 인덱스 i와 (W + 1) 간의 곱 간의 차로서 계산될 수 있다. 단계(S25)는 랜덤 순열 PM을 사용하여 테이블 SBM에서 랜덤하게 선택된 테이블 값 SBM[i, j]을 계산한다. 테이블 SBM 내의 인덱스 i 및 j에서의 각 값 SBM[i,j]은 데이터 SB[j
Figure pat00081
U[i]]에 적용된 배타적 논리합 연산의 결과 SBX[[j
Figure pat00082
U[i]]
Figure pat00083
V[i]로 설정되고, 인덱스들 i 및 j는 순열 PM을 사용하여 규정되기 때문에, 마스크 파라미터들 U[i] 및 V[i]은 테이블들 U 및 V로부터 또한 랜덤하게 선택된다. 단계(S26)에서, 인덱스 k가 1만큼 증분된다. 단계(S27)에서, 인덱스 k는 최대값 KX와 비교된다. 인덱스 k가 값 KX보다 크면, 단계(S28)가 수행되고, 그렇지 않으면 단계들(S25 내지 S27)이 새로운 반복을 위해 다시 수행된다. 단계(S28)에서, 마스킹된 테이블 SBM은 완전하게 규정되어 단계들(S21 내지 S27)의 출력으로서 제공된다. 치환 테이블(SBX) 및 마스킹된 치환 테이블(SBM)이 도 10c에서 표현된다. 순열 PM의 사용은 강제적이지 않으며, 테이블 SBM의 값들은 결정론적인 순서로 계산될 수 있다는 것을 알 수 있다.
회로들(OC2) 각각의 회로(XG4)는 XOR 연산에 의해, 입력 데이터 X1와 마스크 파라미터 U[1]를 결합한다. 연산 회로들(XG4)은 함께, 도 3의 단계들(S11 내지 S17)을 수행하고, 마스크 세트 U(l = 0, ... W)의 각각의 마스크 파라미터에 대해, 입력 데이터 X1의 (W4 + 1)(= 16) 바이트들 각각은 1 바이트 크기를 갖는 각각의 마스크 파라미터 U[1]와 결합된다. 각 연산 회로(XG4)는 입력 데이터 PX10[1] = X1
Figure pat00084
U[1]을 제공한다.
각 회로(OC2)의 연산 회로(XG1)는 XOR 연산에 의해, 데이터 PX10[1]와 라운드 키 KT[0]를 결합한다. 연산 회로들(XG1)은 함께 도 11의 단계들(S31 내지 S37)을 수행하며, 입력 데이터 X1의 16 바이트들 각각은 제 1 라운드 키 KT[0]의 각 바이트와 결합된다. 도 11은 일 실시예에 따른, 입력 데이터 세트 PX10 및 라운드 키 KT[0]에 연산을 적용함으로써 생성된 출력 데이터 세트 PX2<0>를 생성되는 절차의 단계들(S31 내지 S38)을 나타낸다. 단계들(S31 내지 S37)이 먼저 연속적으로 수행된다. 단계(S31)에서, 출력 데이터 세트 PX2<0> 및 W4 + 1(24 = 16) 워드들을 포함하는 라운드 키 KT[0]가 입력된다. 단계(S32)에서, 테이블 형태를 갖는 순열 PM이 함수 RNP를 사용하여 랜덤하게 생성되고, 순열 PM은 0과 최대값 KX =(W + 1)(W4 + W + 1) -1 간의 (W + 1)(W4 + W + 1) 개의 값들을 포함하며,여기서 W + 1 = 2P이며, P(= 8)는 라운드 키 KT[0]을 형성하는 워드들 KT[0, b]의 각각의 비트 수이다. 단계(S33)에서, 인덱스 k는 0으로 초기화된다. 단계(S34)에서, 순열 PM이 W4 + 1 개의 원소들의 행들과 W + 1 개의 원소들의 열들을 포함하는 2-엔트리 테이블이라는 것을 고려함으로써, 인덱스 k로부터 인덱스 l 및 b가 계산된다. 이로써, 인덱스 l은 PM[k] 값을 (W4 + 1)로 나눈 결과의 정수 부분으로 계산될 수 있고, 인덱스 b는 PM[k] 값과 인덱스 1와 (W4 + 1) 간의 곱 간의 차로서 계산될 수 있다. 단계(S35)는 2 엔트리 테이블 형태를 갖는 출력 데이터 세트 PX2<0> 내의 출력 데이터 PX2<0>[1, b]를 계산한다. 인덱스 l 및 b에서의 각 출력 데이터 PX2<0>[1, b]는 워드들 PX2<0>[1, b] 및 KT[0, b]에 XOR 연산을 적용함으로써 생성된 결과 PX10[1, b]
Figure pat00085
KT[0,b]로 설정된다. 순열 PM의 사용으로 인해, 출력 데이터 세트 PX2<0> 내의 출력 데이터들 PX2<0>[l, b]은 랜덤 순서로 계산되고 출력 데이터 세트 PX2<0> 내에서도 랜덤 순서로 배열된다. 단계(S36)에서, 인덱스 k가 1만큼 증분된다. 단계(S37)에서, 인덱스 k가 최대값 KX과 비교된다. 인덱스 k가 값 KX보다 크면, 단계(S38)가 수행되고, 그렇지 않으면 단계들(S35 내지 S37)이 새로운 반복을 위해 다시 수행된다. 단계(S38)에서, 출력 데이터 세트(PX02)는 완전하게 규정되고 단계들(S31 내지 S37)의 출력으로서 제공된다. 출력 데이터 세트 PX2<0> 내의 (크기 W4 + 1 바이트를 갖는) 각 데이터 PX2<0>[1]는 연산의 결과 PX10[l]
Figure pat00086
KT[0]이며, 여기서 PX10[l] = X1
Figure pat00087
U[l]이다. 이어서, PX2<0>[l] = (X1
Figure pat00088
KT[0])
Figure pat00089
U[l]이다. 이로써, 입력 값 X1에 적용된 마스크 U[1]은 회로(OC2) 내의 연산 회로(XG1)에 의해 수행된 계산들에 걸쳐서 유지될 수 있다.
여기서도 역시, 출력 데이터 세트 PX2<0> 내의 데이터를 랜덤 순서로 계산하거나 이들을 랜덤 순서로 저장하지 않아도 된다. 이러한 경우, 순열 PM의 사용은 강제적이지 않다.
각 회로(OC2)의 치환 계산 회로(SBB)는 출력 데이터 세트 PX2<0>로부터 데이터 PX2<r>[l]를 수신하거나, 이전의 계산 라운드 r로부터 기인되는 출력 데이터 세트 PX2<r>로부터 데이터 PX2<r>[l]를 수신하고 마스킹된 치환 테이블 SBM[1]을 수신한다. 치환 계산 회로들(SBB)은 함께 도 12의 단계들(S41 내지 S47)을 실행하며, 출력 데이터 세트 PX2<r>(r = 0, 1, ...)의 각 데이터 PX2<r>[1]의 W4 + 1 바이트들 각각은 치환 테이블들 SBM 중 하나에서 입력 데이터를 선택하기 위한 인덱스로서 사용된다. 도 12는 일 실시예에 따른, 마스킹된 치환 테이블(SBM)을 사용하여, 보호된 치환 연산을 수행하는 절차의 단계들(S41 내지 S48)을 나타낸다. 단계들(S41 내지 S47)이 먼저 연속적으로 수행된다. 단계(S41)에서 마스킹된 치환 테이블 SBM 및 출력 데이터 세트 PX2r가 입력된다. 출력 데이터 세트 PX2r은 워드들 PX2<r>[0,0], ... PX2<r>[W, W4]를 포함한다. 단계(S42)에서, 테이블 형태를 갖는 순열 PM이 함수 RNP를 사용하여 랜덤하게 생성된다. 순열 PM은 0과 (W + 1)(W4 + 1) -1과 동일한 최대값 KX 간의 (W + 1)(W4 + 1) 개의 값들을 포함한다. 단계(S43)에서, 인덱스 k는 0으로 초기화된다. 단계(S44)에서, 인덱스 l 및 b가 단계(S4)에서와 같이 계산된다. 단계(S34)에서, 순열 PM이 W4 + 1 개의 원소들의 행 및 W +1 개의 원소들의 열을 포함하는 2-엔트리 테이블이라는 것을 고려함으로써 인덱스 k로부터 인덱스 l 및 b가 계산된다. 이로써 인덱스 l은 PM[k] 값을 (W4 + 1)로 나눈 결과의 정수 부분으로 계산될 수 있고, 인덱스 b는 PM[k] 값과 인덱스 1와 (W4 + 1) 간의 곱 간의 차로서 계산될 수 있다. 단계(S45)는 랜덤 순열 PM을 사용하여 출력 데이터 세트 PX3<r>에서 랜덤하게 선택된 출력 데이터 PX3<r>[1,b]를 계산한다. 인덱스 l 및 b의 각 출력 바이트 PX3<r>[l, b]는 인덱스들 1 및 b에서 데이터 세트 PX2<r>에서 선택된 데이터 PX2<r>[1, b]에 의해 규정된 인덱스에서 테이블 SBM[l]에서 선택된 데이터 SBM[1,PX2<r>[1, b]]의 값으로 설정된다. 단계(S46)에서, 인덱스 k가 1만큼 증분된다. 단계(S47)에서, 인데스 k는 최대값 KX과 비교된다. 인덱스 k가 값 KX보다 크면, 단계(S48)가 수행되고, 그렇지 않으면 단계들(S44 내지 S47)이 새로운 반복을 위해 다시 수행된다. 단계(S48)에서, 출력 데이터 세트 PX3<r>가 완전하게 규정되고 단계들(S41 내지 S47)의 출력으로서 제공된다.
회로(OC2) 내의 치환 계산 회로(SBB)에 의해 제공된 데이터 세트 PX3<r>은 첫 번째 라운드(r = 0)에서 SBX[X1
Figure pat00090
KT[0]]
Figure pat00091
V[1](l = 0,...,W)와 동일한 데이터 PX3<r>[l]을 포함한다. 회로(OC2) 내의 행-기반 원순열 계산 회로(SHR)는 데이터 세트 PX3<r>을 프로세싱하고 출력 데이터 세트 PX4R<r>을 제공한다. 치환 계산 회로(SBB) 및 행-기반 원순열 계산 회로(SHR)의 위치는 반전될 수 있고, 이 경우에, 치환 계산 회로(SBR)에 의해 수행된 행-기반 순환 순열 계산은 치환 계산 회로(SBB)에 의해 수행된 치환 계산을 수행하기 전에, 테이블 PX2<r> 내의 데이터에 적용된다. 라운드 r = 0 내지 R-1에서, 데이터 세트 PX4<r>는 회로(OC2)의 열-기반 순열 계산 회로(MXC)에 제공된다.
도 13은 열-기반 순열 계산 회로(MXC)를 나타낸다. 열-기반 순열 계산 회로(MXC)는 행-기반 원순열 계산 회로(SHR)의 출력 데이터 X3을 4x4 원소들의 계수 행렬 MC와 결합한다. 이를 위해, 출력 데이터 X3는 4x4 개의 원소들 x0 내지 x15의 행렬 형식으로 구성되며, 여기서 원소들 각각은 128 비트로 인코딩된 출력 데이터 X3의 바이트에 대응한다. 행렬 X6의 원소들은 XOR 연산 회로(XG6)에 의해 계수 행렬 MC의 원소들와 함께 결합되어, 4x4 원소들의 결과적 행렬 TR을 생성하며, 이러한 결과적 행렬에서, 각 원소는 다음과 같은 형태를 갖는다:
a·x <i>
Figure pat00092
b·x <i+1>
Figure pat00093
c·x <i+2>
Figure pat00094
d·x <i+3> (16)
여기서, 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 pat00095
0x1B를 사용하여, 수행되며, 여기서, LS1(x)는 바이트 x 내에서 1 비트만큼의 좌측으로의 시프트를 나타낸다. 연산 3·x는 연산 2·x
Figure pat00096
x를 사용하여 수행된다.
입력 데이터 X3의 각 바이트 b가 하나의 테이블 PX4<r>[0...W,b]로 표현되기 때문에, 열-기반 순열 계산 회로(MXC)는 출력 데이터 세트 PX4<r>[l,0...W4] 내의 각 바이트에 대해 3x16 개의 XOR 연산들을 수행한다. 연산 3·x을 수행하기 위해서는 2 개 이상의 XOR 연산들이 필요할 수 있다. 그러나, AES 알고리즘의 일부 구현예들에서, 연산 2·x 및 연산 3·x는 룩업 테이블에 의해 구현된다.
도 14에 예시된 바와 같이, 도 13에 개시된 바와 같은 결과적 행렬 TR의 원소를 계산하기 위한 XOR 연산들은 각 테이블 PX4<r>[l,0...W4] 내에서 수행되고, 이들 연산은 각 테이블 PX4<r>[l,0...W4]에 대해 테이블 PX5<r>[l,0...W4]을 제공한다.
또한, 각 바이트 x'<j>가 동일한 마스크 v (=V[l], x'<j> = x<j>
Figure pat00097
v)에 의해서 마스킹되기 때문에, 마스크들을 데이터 상에서 유지하기 위해서 열-기반 순열 계산 회로(MXC)의 연산을 수행할 때에, 연산들의 순서에 주의를 기울여야 한다. 상기 등식(16)의 연산들은 다음의 특성을 적용함으로써 수행된다:
a(x
Figure pat00098
v) = ax
Figure pat00099
av, 여기서 a = 2 또는 3 (17).
이로써, 다음과 같다:
A = 2x<0>
Figure pat00100
3x<1>
Figure pat00101
2v
Figure pat00102
3v
Figure pat00103
x'<2>
Figure pat00104
x'<3>
= 2x<0>
Figure pat00105
3x<1>
Figure pat00106
2v
Figure pat00107
2v
Figure pat00108
v
Figure pat00109
x'<2>
Figure pat00110
x'<3>
= 2x<0>
Figure pat00111
3x<1>
Figure pat00112
v
Figure pat00113
x <2>
Figure pat00114
v
Figure pat00115
x'<3>
= 2x<0>
Figure pat00116
3x<1>
Figure pat00117
x<2>
Figure pat00118
x'<3> (18).
따라서, 이러한 계산들의 단계에서, 마스크 v가 제거되고, 이는 최종 XOR 연산이 수행되는 때 해당 마스크 v가 다시 나타나더라도, 데이터 x를 결정하기 위해 사이드 채널 분석에 의해 악용될 수 있는 데이터 누출을 초래할 수 있다:
A = (2x<0>
Figure pat00119
3x<1>
Figure pat00120
x<2>
Figure pat00121
x<3>)
Figure pat00122
v (19).
대조적으로, 원소 A의 계산이 다음 순서로 수행되는 경우에:
A = 2x'<0>
Figure pat00123
x'<2>
Figure pat00124
x'<3>
Figure pat00125
3x'<1> (20),
다음을 얻을 수 있다:
A = 2x<0>
Figure pat00126
x<2>
Figure pat00127
x'<3>
Figure pat00128
3x'<1>
Figure pat00129
2v
Figure pat00130
v
= 2x<0>
Figure pat00131
x<2>
Figure pat00132
x<3>
Figure pat00133
3x'<1>
Figure pat00134
3v
Figure pat00135
v
= 2x<0>
Figure pat00136
x<2>
Figure pat00137
x<3>
Figure pat00138
3x'<1>
Figure pat00139
2v
Figure pat00140
v
Figure pat00141
v
= 2x<0>
Figure pat00142
x<2>
Figure pat00143
x<3>
Figure pat00144
3x<1>
Figure pat00145
2v
Figure pat00146
3v
= 2x<0>
Figure pat00147
x<2>
Figure pat00148
x<3>
Figure pat00149
3x<1>
Figure pat00150
v (21).
따라서, (2 1 1 3)과 동일한 계수들 a, b, c, d의 순서로 배타적 논리합 연산들을 수행할 때, 각 배타적 논리합 연산의 결과는 항상 마스킹된다. 순서들 (1 2 1 3), (3 1 1 2) 및 (1 3 1 2)도 역시 각 XOR 연산 후에 마스킹을 유지한다. 또한, 입력 데이터에 적용된 마스크 v는 열-기반 순열 계산 회로(MXC)에 의해 수행된 연산의 출력 데이터 내에서 유지된다는 점도 알아야 한다.
회로(OC2)의 연산 회로(XG2)는 데이터 세트 PX5<r>를 라운드 키 KT[r]와 결합한다. 이를 위해, 연산 회로들(XG2)은 함께 입력부에서 데이터 세트 PX5<r> 및 라운드 키 KT[r]를 사용하여 도 11의 단계들(S31 내지 S37)을 실행하여 출력 데이터 세트 PX6<r>을 제공한다. 각 회로(OC2)의 연산 회로(XG5)는 XOR 연산에 의해, 데이터 PX6<r>[1]과 마스크 파라미터 Z[1] = U[1]
Figure pat00151
V[1]을 결합한다. 일 실시예에 따르면, 연산 회로(XG5)들은 함께 도 15의 단계들(S51 내지 S57)을 수행하여, 마스크 세트 Z(l = 0, ... W)의 각각의 마스크 파라미터에 대해, 1 바이트의 크기를 갖는 각각의 마스크 파라미터 Z[1]와 각 데이터 PX6<r>[1]의 (W4 + 1)(=16) 바이트들 각각을 서로 결합시킨다. 먼저, 단계들(S51 내지 S57)이 순차적으로 수행된다. 단계(S51)에서, 마스크 테이블 Z 및 데이터 세트 PX6<r>이 입력된다. 단계(S52)에서, 테이블 형태를 갖는 순열 PM이 함수 RNP를 사용하여 랜덤하게 생성되고, 이 순열 PM은 0과 최대값 KX =(W + 1)(W4 + 1) -1 간의 (W + 1)(W4 + 1) 개의 값들을 포함한다. 단계(S53)에서, 인덱스 k는 0으로 초기화된다. 단계(S54)에서, 인덱스 l 및 b가 단계(S4)에서와 같이 계산된다. 단계(S55)는 랜던 순열 PM (PX2<r+1>[l,b] = PX6<r>[l,b]
Figure pat00152
Z[l])을 사용하여, 마스크 테이블 Z에서 랜덤하게 선택된 마스크 파라미터 Z[1]와, 입력 데이터 세트 PX6<r>에서 랜덤하게 선택된 인덱스들 l 및 b에서의 입력 워드 PX6<r>[1, b]를, XOR 연산에 의해 결합함으로써, 출력 데이터 세트 PX2<r+1> 내의 인덱스들 l 및 b에서의 출력 워드 PX2<r+1>[l,b]를 계산한다. 단계(S56)에서, 인덱스 k가 1만큼 증분된다. 단계(S57)에서, 인덱스 k가 최대값 KX과 비교된다. 인덱스 k가 값 KX보다 크면, 단계(S58)가 수행되고, 그렇지 않으면, 새로운 반복을 위해 단계들(S54 내지 S57)이 다시 수행된다. 단계(S58)에서, 출력 데이터 세트 PX2<r+1>은 완전하게 규정되고 단계들(S51 내지 S57)의 출력으로서 제공된다.
회로(OC2)의 연산 회로(XG5)에 의해 제공되는 출력 데이터 세트 PX2<r+1>은 마스크 파라미터 Z[1] = U[1]
Figure pat00153
V[1](여기서, l = 0, .. W)로 마스킹된 워드들 PX2<r+1>[1,b]을 포함한다. 출력 데이터 세트 PX6<r> 내의 워드 PX6<r>[l,b]가 치환 계산 회로(SBB)에 의해 적용된 마스크 파라미터 V[1]로 이미 마스킹되었기 때문에, 마스크 파라미터들 V[1]은 연산 회로들(XG5)에 의해 제거된다. 이로써, 데이터 세트 PX2<r+1> 내의 모든 워드들 PX2<r+1>[l,b]은 마스크 파라미터 U[1]에 의해서만 마스킹되고, 이로써, 데이터 세트 PX2<r+1>은 다음 라운드 r + 1에서 치환 계산 회로(SBB)에 의해 추가적으로 프로세싱될 준비를 한다.
최종 라운드 R에서, 데이터 세트 PX4<R>는 회로(SHR)에 의해 회로(OC2)의 연산 회로(XG3)에 제공된다. 연산 회로들(XG3)은 함께 각 데이터 PX4<R>[l]을 최종 라운드 키 KT[R]와 결합한다. 연산 회로들(XG3)은 함께 입력부에서 데이터 세트 PX4<R> 및 최종 라운드 키 KT[R]를 사용하여, 도 11의 단계들(S31 내지 S37)을 실행할 수 있다. 마지막으로, 연산 회로들(XG3)은 워드들 PX7<R>[l,b] = CX1[b]
Figure pat00154
V[l]을 포함하는 데이트 세트 PX7<R>을 제공하며, 여기서 CX1은 ES 알고리즘에 의해 제공된, 입력 데이터 X1에 대응하는 예상 출력 데이터(암호화된 데이터)이다. 보다 구체적으로, 출력 데이터 세트 PX7<R>는 예상 출력 데이터 CX1와 동일한 인덱스 n에서의 데이터 PX7<R>[n]를 포함하고, 여기서 n은 입력 데이터 세트 PX10 내의 입력 데이터 X1의 인덱스이다. 일 실시예에 따르면, 연산 회로(XG3)은 데이터 CX1만을 추출하도록 구성된다.
AES에 따른 복호화 알고리즘은 암호화 알고리즘과 실질적으로 동일한 연산을 포함한다. 이로써, 마스크 세트 쌍들 U, V을 사용하는 전술한 방법이 AES 복호화 알고리즘을 구현하는 프로그램 및 회로를 보호하도록 구성될 수 있다. 보다 구체적으로, AES 복호화 회로는 라운드 키들과의 XOR 연산을 수행하는 회로, 역 치환 계산 회로, 역 행-기반 원순열 계산 회로 및 역 열-기반 순열 계산 회로를 포함한다. 도 11에 도시된 방법은 유도된 키와의 XOR 연산에 의해 수행되는 각각의 연산에 적용될 수 있다. 도 12에 도시된 방법은 역 치환 계산 회로에 의해 수행되는 각각의 연산에 적용될 수 있다. 도 14에 도시된 방법은 역 열-기반 순열 계산 회로에 적용될 수 있다.
이전에 개시된 보호 방법은 사이드 채널 분석에 취약한 것으로 간주될 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 연산에 의한 라운드 키 부가, 두 개의 사전 계산된 치환 테이블들과 이들의 역 테이블들을 사용하는 치환 단계, 및 확산 단계를 포함한다. 치환 단계는 라운드 키와 결합된 입력 데이터를 바이트 단위로 프로세싱하고, 확산 단계는 치환 단계에 의해 제공된 16 바이트의 데이터에 16 개의 상이한 XOR 조합들을 적용한다. 이러한 결합들 각각에서, XOR 연산들에 의해서 7 바이트의 데이터가 부가된다.
도 16은 데이터를 암호화하기 위한 DES 알고리즘을 구현하는 암호화 계산 회로(CT3)의 예를 나타낸다. DES에 대한 자세한 내용은 1999년 10월 25일에 공개된 문헌 "Data Encryption Standard(DES) FIPS PUB 46-3"를 참조하면 된다. 도 16에서, 암호화 계산 회로(CT3)는 프로세싱될 데이터 Y1를 수신하고 결과 데이터 CY1를 공급한다. 또한, 암호화 계산 회로(CT3)는 DES 알고리즘에 따라 비밀 키로부터 유도된 모든 라운드 키를 포함하는 라운드 키 테이블 KT1을 수신한다. 암호화 계산 회로(CT3)는 회로(CT1)의 아키첵처를 가지며, W+1 개의 동일한 회로들(OC3)을 포함하며, 각 회로는 입력 데이터 Y1를 수신하고 마스크 세트 U로부터 각각의 마스크 파라미터 U[l]를 수신한다. 각 회로(OC3)는 초기 순열 회로(IPM), 최종 순열 회로(FPM), XOR 연산들을 수행하는 회로들(XG11, XG12)을 포함하는 주 암호화 회로(REC2), 확장 회로(EXP), 치환 계산 회로(SDS), 비트 순열 회로(RPM), 하나의 레지스터(RG1) 및 멀티플렉서들(MX1, MX2)을 포함한다. 64 비트 워드로 인코딩된 입력 데이터 Y1는 초기 순열 회로(IPM)에 적용된다. 초기 순열 회로(IPM)는 DES 초기 순열 연산을 수행한다. 초기 순열 회로(IPM)에 의해 수행된 연산 결과는 좌측 32-비트 워드 및 우측 32-비트 워드 Y2L, Y2R로 분할된다.
좌측 워드 Y2L은 연산 회로(XG2)로 전송된다. 우측 워드 Y2R은 확장 회로 (EXP)와 멀티플렉서(MX1)에 전송되고, 멀티플렉서(MX1)는 최종 순열 회로(FPM)의 우측의 입력부에 접속되는 일 출력부 및 레지스터(RG1)에 접속된 일 출력부를 갖는다. 레지스터(RG1)는 연산 회로(XG2)의 일 입력부에 접속된다. 확장 회로(EXP)는 DES 확장 연산을 수행한다. 확장 회로(EXP)는 32-비트 데이터를 수신하고 8 개의 6-비트 워드들로 형성된 48-비트 데이터를 연산 회로(XG11)에 제공한다.
연산 회로(XG11)는 확장 회로(EXP)의 출력부에서의 48-비트 워드를 XOR 연산에 의해, 48-비트로 인코딩된 제 1 라운드 키 KT[0]와 결합한다. 연산 회로(XG11)에 의해 수행된 연산 결과는 치환 계산 회로(SDS)에 의해 프로세싱되고, 치환 계산 회로는 8 개의 DES 치환 테이블을 사용하여 32-비트 워드를 제공한다. 치환 계산 회로(SDS)의 입력부에서 각 6-비트 워드는 8 개의 DES 치환 테이블 중 각각의 하나에서 4-비트 워드를 선택하기 위한 인덱스로 사용된다. 이로써, 치환 계산 회로 (SDS)는 8 개의 4-비트 워드를 제공하며, 8 개의 4-비트 워드는 DES 라운드 비트 순열 연산을 수행하는 비트 순열 회로(RPM)에 의해 프로세싱되는 32-비트 데이터를 형성한다. 비트 순열 회로(RPM)에 의해 제공된 32-비트 데이터는 XOR 연산을 적용하는 연산 회로(XG12)에 의해, 레지스터(RG1) 내의 32-비트 데이터와 결합된다. 연산 회로(XG12)에 의해 제공되는 결과는 멀티플렉서(MX2)로 전송되며, 멀티플렉서(MX2)는 확장 회로(EXP) 및 멀티플렉서(MX1)에 연결된 일 출력부 및 최종 순열 회로(FPM)의 좌측 입력부에 연결된 일 출력부를 갖는다. 최종 순열 회로(FPM)는 DES 최종 순열 연산을 수행하고 64-비트 워드 CX1을 제공한다.
DES 알고리즘에 따른 첫 번째 계산 라운드에서, 초기 순열 회로(IPM)의 출력부에서의 우측 32-비트 워드 Y2R(R0)는 레지스터(RG1) 내에 저장되고 확장 회로(EXP)에 의해 프로세싱되고, 회로들(XG11, SDS 및 RPM)에 의해 연속적으로 프로세싱되고, 연산 회로(XG12)에 제공된다. 초기 순열 회로(IPM)의 출력부에서의 좌측 32-비트 워드 Y2L(L0)는 연산 회로(XG12)에 전송된다. 우측 워드 Y2R(R0)는 멀티플렉서(MX1)에 의해 레지스터(RG1)로 전송된다. 연산 회로(XG12)의 출력부에서의 워드(R1)는 멀티플렉서(MX2)에 의해 새로운 계산 라운드에서 확장 회로(EXP)에 전송되고, 다음 라운드에서 멀티플렉서(MX1)에 전송된다. 두 번째 및 다음의 모든 계산 라운드들에서, 연산 회로(XG12)에 의해 계산된 32-비트 워드는 회로들(EXP, XG1, SDS, RPM 및 XG12)에 의해 프로세싱되고, 이와 관련하여 연산 회로(XG12)는 레지스터(RG1)에 저장된 워드를 수신한다.
16 번째의 최종 라운드에서, 레지스터(RG1) 내의 워드(R14)는 연산 회로(XG12)에 의해 비트 순열 회로(RPM)의 출력과 결합되고, 이 회로(XG12)는 멀티플렉서(MX2)에 워드(R16)를 제공하며, 멀티플렉서(MX2)는 이를 최상위 워드로서 최종 순열 회로(FPM)의 좌측 입력부에 제공한다. 이와 동시에, 연산 회로(XG12)에 의해 계산된 워드(R15 = L16)는 최하위 워드로서 멀티플렉서(MX1)에 의해 최종 순열 회로(FPM)의 우측 입력부에 제공되며, 최종 순열 회로(FPM)는 출력 데이터 CY1을 출력한다.
일 실시예에 따르면, 회로들(OC3) 각각은 마스크 세트 U로부터의 각각의 마스크 파라미터 U[1], 마스크 세트 V로부터의 마스크 파라미터 V[1] 및 마스킹된 치환 테이블 SB1[1]을 수신한다. 회로들(OC3)의 각각은 마스크 파라미터 U[1]와의 XOR 연산을 수행하는 연산 회로들(XG13, XG14, XG15, XG16) 및 마스크 파라미터 V[1]와의 XOR 연산을 수행하는 연산 회로(XG17)를 포함한다. 연산 회로(XG13, XG14)는 초기 순열 회로(IPM)와 회로들(EXP, XG12) 간에 개재되어 있다. 연산 회로(XG15, XG16)는 각각 멀티플렉서(MX1, MX2)와 최종 순열 회로(FPM) 간에 개재된다. 연산 회로(XG17)는 연산 회로(XG12)와 멀티플렉서(MX2) 간에 개재된다. 연산 회로(XG13 및 XG14)는 초기 순열 회로(IPM)에 의해 제공된 데이터 Y2L, Y2R로부터 32-비트 워드 입력 데이터 세트 PY2<0>(= PY2R 및 PY2L)을 제공한다. 확장 회로(EXP)는 출력 데이터 세트 PY2<r>로부터 48-비트 워드 출력 데이터 세트 PY3<r>을 제공하며, r은 0부터 R까지의 DES 라운드 수이다. 연산 회로(XG1)는 출력 데이터 세트 PY3<r>로부터 48-비트 워드 출력 데이터 세트 PY4<r>를 제공한다. 치환 계산 회로(SDS)는 출력 데이터 세트 PY4<r>로부터 32-비트 워드 출력 데이터 세트 PY5<r>을 제공한다. 비트 순열 회로(RPM)는 출력 데이터 세트 PY5<r>로부터 32-비트 워드 출력 데이터 세트 PY6<r>를 제공한다. 연산 회로(XG12)는 출력 데이터 세트 PY6<r>로부터 32-비트 워드 출력 데이터 세트 PY7<r>를 제공한다. 마지막으로, 연산 회로(XG17)는 출력 데이터 세트 PY7<r>로부터 32-비트 워드 출력 데이터 세트 PY2<r +1>를 제공한다. 연산 회로(XG15)는 데이터 PY2[1]<R-1>로부터 마스크 파라미터 U[1]를 제거하고, 연산 회로(XG16)는 데이터 PY2[1]<R>로부터 마스크 파라미터 U[1]를 제거한다.
일 실시예에 따르면, 회로(CT3)의 입력부에서의 마스크 세트 U는 W + 1 개의 32-비트 워드들을 포함하며, 이들 워드 각각은 4 바이트 U1[1], U2[1], U3[1], U4[1]을 연결함으로써 획득되며(0과 W = 255 간의 각 정수 l에 대해, U[l] = U1[l]//U2[l]//U3[l]//U4[l]), U1, U2, U3, U4는 W+1 바이트들의 4 개의 순열들이며, 이로써 다음과 같이 된다:
U2 = F1(U1),
U3 = F2(U1), 및
U4 = F3(U1), (22)
여기서, F1, F2, F3는 함수들이며, 이로써 32-비트 워드들 U[1](l = 0 내지 W) 각각에 적용된 확장 회로(EXP)에 의해 제공되는 48-비트 워드들 EXP(U[1]) 각각이 8 개의 6-비트 워드를 포함하고, 각각이 8-비트 워드 U1[1]의 비트들을 오직 한번 포함한다. 즉, 확장 함수(EXP)를 마스크 세트 U에 적용함으로써 획득된 변환된 마스크 세트 EXP(U)는 (W + 1)(W3 + 1) 개의 6-비트 워드들의 테이블의 형태를 취하고, (W + 1) 개의 6-비트 워드들의 각 열은 4 회 발생하는, 6-비트 워드의 각 가능한 값(0 내지 63)을 포함한다.
마스킹된 치환 테이블 SB1은, 예를 들면, 도 18의 절차를 실행함으로써 생성된다. 도 17의 절차는 단계들(S71 내지 S73)을 포함한다. 단계들(S71 내지 S78)이 먼저 연속적으로 수행된다. 단계(S71)에서, 본 절차는 DES 치환 테이블 SBD 및 마스크 세트 U를 수신한다. DES 치환 테이블 SBD는 W3 + 1(= 8) 개의 치환 테이블들 SBD[0...W3,0...W6]을 포함하며, 각 치환 테이블은 W6 + 1(= 64) 개의 4-비트 워드들을 포함한다. 단계(S72)에서, 마스크 세트 V가 계산된다. 단계(S73)에서, 인덱스 l은 0으로 초기화된다. 단계(S74)에서, 인덱스 k는 0으로 초기화된다. 단계(S75)에서, 인덱스 j는 0으로 초기화된다. 단계(S76)에서, 마스킹된 치환 테이블 SB1의 일 원소는 다음의 등식을 사용하여 계산된다:
SB1[l,k,j] = SBD[k,j
Figure pat00155
E(U[l][k]]
Figure pat00156
P-1(V[l])[k] (23)
여기서, SBD[k]는 랭크 k(k = 0 내지 W3 = 7까지임)를 갖는 DES 치환 테이블을 나타내며, 각 테이블 SBD[k]는 6-비트 인덱스들을 사용하여 선택될 수 있는 64 개의 4-비트 워드들을 포함하며, E(U[l])는 마스크 파라미터 U[l]에 적용된, 확장 회로(EXP)에 의해 수행된 DES 확장 연산으로부터 생성된 48-비트 워드를 나타내며, E(U[1])[k]는 48-비트 워드 E(U[1]) 내에서 인덱스 k를 갖는 6-비트 워드를 나타내며, P- 1(V[1])는 마스크 파라미터 V[1]에 적용된 회로(RNP)에 의해 수행된 DES 라운드 순열 연산의 역 연산 P-1로부터 생성된 32-비트 워드를 나타내며, P-1(V[1])[k]는 32-비트 워드 P-1(V[1])에서 인덱스 k를 갖는 바이트를 나타낸다. 단계(S77)에서, 인덱스 j가 1만큼 증분된다. 단계(S78)에서, 인덱스 j는 26-1(= 63)과 동일한 최대값 W6과 비교된다. 인덱스 j가 값 W6보다 크면, 단계들(S79 및 S80)이 실행되고, 그렇지 않으면 새로운 반복을 위해 단계들(S75 내지 S78)이 다시 실행된다. 단계(S79)에서, 인덱스 k가 1만큼 증분된다. 단계(S80)에서, 인덱스 k는 최대값 W3(= 23-1 = 7)과 비교된다. 인덱스 k가 값 W3보다 크면, 단계들(S81 및 S82)이 실행되고, 그렇지 않으면 단계들(S75 내지 S80)이 새로운 반복을 위해 다시 실행된다. 단계(S81)에서, 인덱스 l은 28-1(= 255)와 동일한 최대값 W와 비교된다. 인덱스 l이 값 W보다 큰 경우, 단계(S83)가 실행되고, 그렇지 않으면 단계들(S74 내지 S82)이 새로운 반복을 위해 다시 실행된다. 단계(S83)에서, 단계들(S71 내지 S82)의 결과로서 마스킹된 치환 테이블들 SB1[0...W,0...W3,0...W6]이 제공된다.
마스크 세트 V는 W + 1 개의 32-비트 마스크 파라미터들을 포함하며, 각 마스크 파라미터는 4 개의 바이트들 V1[1], V2[1], V3[1], V4[1](l = 0 내지 W)로 구성되며, V1, V2, V3, V4는 W + 1 개의 바이트들의 순열(1회 발생하는, 1 바이트의 각 가능한 값을 포함함)이다.
일 실시예에 따르면, 순열 V1은 순열 U1에 함수 F4를 적용함으로써 생성된다. 함수 F4는, l = 0 내지 W인, 바이트들 U1[1]
Figure pat00157
F4(U1[1])로 구성된 순열 Z1이 W + 1 개의 바이트들 및 1회 발생하는, 1 바이트의 각 가능한 값을 포함하도록, 선택된다. 함수 F4는 마스크 세트 V의 마스크 파라미터들 V[l]에 적용된 회로(RNP)에 의해 수행된 DES 라운드 순열 연산의 역 역산 P-1을 적용함으로써 생성되는 마스크 세트 P-1(V[1])이 1회 발생하는, 1 바이트의 각 가능한 값을 포함하도록, 더 선택된다. 순열 V1은, V0 = F4(U0)를 고려하면서, 등식(12) 또는 등식 (13)을 사용하여 순열 U1로부터 규정될 수 있다. 그런 다음, 순열들 V2, V3 및 V4이 순열들 U2, U3, U4을 계산하는 데 사용된 함수들 F1, F2, F3을 사용하여 계산된다. 이로써, 다음과 같이 된다:
V2 = F1(V1),
V3 = F2(V1), 및
V4 = F3(V1). (24)
순열 U1 및 함수들 F1, F2, F3은, 32-비트 워드들 V[1](l = 0 내지 W)에 적용된 32-비트 워드들 P-1(V[1])이 8 개의 4-비트 워드들을 포함하며, 각각은 8-비트 워드 V1[1]의 비트들을 오직 한번 포함하도록, 더 선택된다. 달리 말하면, 변환된 세트 P- 1(V)는 (W + 1)(W3 + 1) 개의 4-비트 워드들을 갖는 테이블의 형태를 가지며, (W + 1) 개의 4-비트 워드들로 된 각 열은 16 회 발생하는, 4-비트 워드의 각 가능한 값(0 내지 15)을 포함한다.
일 실시예에 따르면, 모든 회로들(OC3)의 연산 회로들(XG13, XG14)은 도 17의 단계들(S61 내지 S67)을 실행함으로써 두 개의 데이터 세트들 PY2L, PY2R(= PY2<0>)을 제공하기 위해 초기 순열 회로(IPM)로부터 수신된 데이터들 Y2L, Y2R을 프로세싱한다. 단계들(S61 내지 S66)이 먼저 연속적으로 실행된다. 단계(S61)에서, 랜덤 순열 U1이 생성되며, 이 랜덤 순열 U1은 랜덤 순서로 W + 1(= 256) 개의 바이트 값들(0 내지 255 간) 모두를 포함한다. 순열들 U2, U3 및 U4은 순열 U1에 함수들 F1, F2, F3을 각각 적용함으로써 더 생성된다. 단계(S63)에서, 마스크 값 MSK이 마스크 파라미터들 U1[l], U2[1], U3[1] 및 U4[1]로 구성된 비트 스트링들을 연결함으로써 생성되며, 여기서 Ui[1]는 순열 Ui에서의 인덱스 l를 갖는 바이트이며, i는 1, 2, 3, 4이다. 이로써, 단계(S64)에서, 32-비트 우측 워드 및 32-비트 좌측 워드 Y2R, Y2L 각각이 다음과 같이 구성된 32-비트 워드와 결합된다:
PY2[l] = Y2
Figure pat00158
U1[l]//U2[l]//U3[l]//U4[l]. (25)
여기서, Y2 = Y2R(또는 Y2L) 및 PY2 = PY2R(또는 PY2L).
도 19에 도시된 바와 같이, 각각의 출력 데이터 세트 PY2R, PY2L는 W + 1 개의 32-비트 워드들 PY2[1] 또는 W+1 바이트들의 4 개의 열들 P21, P22, P23, P24을 포함하며, 각 열은 1 회 발생하는, 1 바이트의 각 가능한 값을 포함하며, 특히 행 n에서 1 회 발생하는 출력 데이터 Y2R, Y2L를 포함하며, 여기서 n은 U1[n] = 0이 되도록 구성된다. 마스크 워드 세트들 U2, U3 및 U4이 함수들(F1, F2, F3)을 적용함으로써 마스크 워드 세트 U1으로부터 도출되기 때문에, U2[n] = U3[n] = U4[n] = 0이 된다.
도 20에 도시된 바와 같이, 모든 회로들(OC3)의 확장 회로들(EXP)에 의해 제공된 출력 데이터 세트 PY3<r>(r = 0 내지 R)는 W + 1 개의 6-비트 워드들 P3[l.k](l = 0 내지 W)로 된 8 개의 열들 P3k(k = 0 내지 7)을 포함한다. 마스크 테이블 U에 대한 상술한 정의로 인해, 출력 데이터 세트 PY3<r>의 각 열 P3k은 4 회 발생하는, 6-비트로 인코딩된 각각의 가능한 값(4x64 = 256)을 포함한다. 이로써, 위에서 규정된 바와 같은 마스크 테이블 U의 사용은 확장 회로(EXP)에 의해 수행되는 것과 같은 확장 비트 순열 연산의 보호를 실현한다.
일 실시예에 따르면, 모든 회로들(OC3)에서 회로들(XG11, SDS, RPM, XG12 및 XG17)을 포함하는 회로(FC)는 도 20에 도시된 바와 같이, 각 열 P3k를 순차적으로 차례로 프로세싱한다. 모든 회로들(OC3)의 연산 회로들(XG11)은 48-비트 라운드 키 KT[r] 중 6-비트의 각각의 부분 KT[r,k]에 열 P3k의 각 6-비트 워드 P3[l.k](l = 0 내지 W = 255)를 결합시키고, 4 회 발생하는, 6 비트로 인코딩된 각 가능한 값(4x26 = 256)을 포함하는, W + 1 개의 6-비트 워드들 P4[l.k]의 출력 데이터 세트 PY4<0>의 열 P4k를 제공한다.
이로써, 모든 회로들(OC3)의 치환 계산 회로들(SDS)에 의해 수행된 치환 연산은 각 워드 P4[1, k]에 대해, 0과 W 간의 모든 l 값, 그리고 0과 W3 간의 모든 k 값에 대해서, 상이한 마스킹된 치환 테이블들 SB1[1,k]을 사용한다. 출력 열 P4k의 각 6-비트 워드 P4[1.k]는 DES 치환 테이블 SB1[1.k]에서 4-비트 워드 P5[1.k]를 선택하기 위한 인덱스로 사용된다. 모든 회로들(OC3)의 치환 계산 회로들(SDS)은 W + 1 개의 4-비트 워드들 P5[k.1](l = 0 내지 W), 및 16 회 발생하는, 4 비트로 인코딩된 각 가능한 값(16x24 = 256)을 포함하는, 출력 데이터 세트 PY5<0>의 열 P5k을 제공한다.
위에서 규정된 마스크 테이블들 U 및 V의 사용으로 인해서, 치환 계산 회로(SDS)의 출력부에서의 출력 데이터 세트 PY5<r>는 16 회 발생하는, 16 개의 가능한 4-비트 워드 값들 각각을 포함하는, W3 + 1(= 8) 개의 열들 P5k를 포함한다. 비트 순열 회로(RPM)에 의해 수행된 순열 연산은 4(W + 1) 바이트들을 포함하는 출력 데이터 세트 PY6를 제공한다. 위에서 규정된 마스크 테이블 V의 사용으로 인해서, 출력 데이터 세트 PY6 내의 바이트의 각 열은 1 회 발생하는, 256 개의 가능한 바이트 값들 각각을 또한 포함한다. 마스크 테이블들 U 및 V에 대한 상기와 같은 규정 방식은 확장 회로(EXP)에 의해 수행되는 연산과 같은 확장성 연산이든 또는 비트 순열 회로(RPM)에 의해 수행되는 연산과 같은 비확장성 연산이든, 비트 순열 연산의 보호를 가능하게 한다는 것을 알 수 있다.
그 다음, 연산 회로(XG12)는 도 6에 도시된 방법에 따라, 출력 데이터 세트 PY6<r>을 출력 데이터 세트 PY2<r-1>과 결합시킨다. 회로(OC3)의 연산 회로(XG12)는 출력 데이터 세트 PY6<r> 및 출력 데이터 세트 PY2<r-1>의 각 행 k에 대해서, 레지스터(RG1) 내에 저장된 출력 데이터 세트 PY6<r>의 각 바이트 PY6<r>[l,k]에 그리고 출력 데이터 세트 PY2<r-1>의 바이트 PY2<r-1>[l,k]에 XOR 연산을 적용한다. 이러한 XOR 연산의 결과는 각 열 k에 대해, 다음과 같이 계산된 (W + 1) 바이트들을 포함하는 데이터 세트 PY7을 형성한다:
PY7<r>[l,k] = PY6<r>[l,k]
Figure pat00159
PY2<r-1>[l,k], (26)
여기서, PX2<r-1>[1,k]는 라운드 r = 0에서는 데이터 세트 PY2L의, 그리고 다른 라운드들 r = 1 내지 R에서 데이터 세트 PY2<r-1>, 행 l 및 열 P2k에서의 바이트를 나타낸다.
마스크 파라미터 바이트들 U1[1]로부터 마스크 파라미터 바이트들 V1[1]을 규정하는 함수 F4의 규정 방식 및 다른 바이트들 U2[1], U3[1], U4[l], V2[1], V3[1], V4[1]을 규정하는 함수들 F1, F2, F3의 사용으로 인해, 출력 테이블 PY2<r+1>의 각 바이트 열 PY7<r>[0...W,k]은, W + 1 바이트들 및 1 회 발생하는, 1 바이트의 모든 가능한 값들을 포함한다. 또한, 예상 출력 바이트는 입력 데이터 세트 PX1에서 입력 데이터 X1의 동일한 행 n에서 유지되며, n은 Ui[n] = 0이 되게 구성되며, i = 1, 2, 3 및 4이다. 결과적으로, 연산 회로(XG12)에 의해 제공된 출력 데이터 세트 PY7<r>의 각 32-비트 데이터는 마스크 결합 U[1]
Figure pat00160
V[1]에 의해 마스킹되고, 여기서 마스크 파라미터 U[1]는 출력 데이터 세트 PY2<r-1>의 워드들로부터 유래되며, 마스크 파라미터 V[1]는 출력 데이터 세트 PY6<r>의 워드들로부터 유래된다.
모든 회로들(OC3)의 연산 회로들(XG17)은 바이트들에 적용된 XOR 연산을 수행함으로써 출력 데이터 세트 PY2<r +1>를 제공하기 위해서 출력 데이터 세트 PY7<r>로부터 마스크 V[1]를 제거한다. 모든 회로들(OC3)의 연산 회로들(XG17)에 의해 수행되는 절차의 예가 도 21에 도시되어 있다. 이 예에서, 모든 XOR 연산들은 랜덤 순서로 수행된다. 도 21의 절차는 단계들(S101 내지 S108)을 포함한다. 먼저, 단계들(S101 내지 S107)이 연속적으로 수행된다. 단계(S101)에서, 마스크 테이블 V 및 출력 데이터 세트 PY7가 입력된다. 출력 데이터 세트 PY7는 바이트들 P7[0,0], ..., P7[W,W2](W2 = 22-1 = 3)을 포함하며, W 개의 32-비트 마스크 파라미터들 V[0], ... V[W]을 포함하는 마스크 테이블 V는 (W + 1)(W2 + 1) 개의 바이트들로 구성된 테이블로 간주된다. 단계(S102)에서, 테이블 형태를 갖는 순열 PM이 함수 RNP를 사용하여 랜덤하게 생성되고, 순열 PM은 0과 최대값 KX = (W + 1)(W2 + 1) -1 간의 (W + 1)(W2 + 1)개의 값들을 포함하며, 여기서 W+1은 테이블들 PY7 및 V 내의 32-비트 워드들의 수(= 256)이다(W는 또한 이러한 테이블들 내에서의 최대값이다). 단계(S103)에서, 인덱스 k는 0으로 초기화된다. 단계(S104)에서, 순열 PM이 W2 + 1 개의 바이트들의 행들과 W + 1 개의 바이트들의 열들을 포함하는 2-엔트리 테이블임을 고려함으로써 인덱스 k로부터 인덱스 l 및 m이 계산된다. 이로써, 인덱스 l은 값 PM[k]을 (W2 + 1)로 나눈 결과의 정수부 INT()로서 계산될 수 있고, 인덱스 m은 값 PM[k]과 인덱스 l와 (W2 + 1) 간의 곱 간의 차로서 계산될 수 있다. 단계(S105)는 다음과 같이, 랜덤 순열 PM을 사용하여, 입력 데이터 세트 PY7에서 랜덤으로 선택된 인덱스들 l 및 m에서의 입력 워드 P7[l.m]을, 마스크 테이블 V에서 랜덤하게 선택된 인덱스 l에서의 마스크 파라미터 V[l]와 XOR 연산에 의해서 결합시킴으로써, 출력 데이터 세트 PY2 내의 인덱스들 l 및 m에서의 출력 워드 P2[l.m]를 계산한다:
(P2[l.m] = P7[l.m]
Figure pat00161
Vm[l]). (27)
여기서, Vm[1]은 마스크 파라미터 V[1]에서의 바이트 m을 나타낸다. 단계(S106)에서, 인덱스 k가 1만큼 증분된다. 단계(S107)에서, 인덱스 k는 최대값 KX과 비교된다. 인덱스 k가 값 KX보다 큰 경우, 단계(S108)가 수행되고, 그렇지 않으면, 새로운 반복을 위해 단계들(S104 내지 S107)이 다시 수행된다. 단계(S108)에서, 출력 데이터 세트 PY2는 완전하게 규정되고 단계들(S101 내지 S107)의 출력으로서 제공된다.
프로세싱된 데이터 세트들 내의 상이한 워드들을 랜덤 순서로 프로세싱 및/또는 저장하기 위해서, 이러한 순열 PM이 회로들(XG1, XG2, RPM)과 같은 회로들(OC3)의 다른 회로들에 의해서도 사용될 수 있다는 것을 알 수 있다. 이러한 순열 PM의 생성 및 사용은 테이블 PY2 내의 데이터가 결정적 순서로 계산 및/또는 저장될 수 있다면 생략될 수 있다. 또한, 규모가 크고 비용이 드는 순열 PM은 각각 W + 1 개의 원소들로 구성된 제 1 순열 및 W3 + 1 개의 원소들로 구성된 제 2 순열로 대체될 수 있으며, 이러한 순열들의 원소들은 2 개의 중첩 루프 내에서 판독되며, 2 개의 중첩 루프 중 하나는 상기 제 1 순열의 원소를 선택하기 위한 것이며, 다른 하나는 상기 제 2 순열의 원소를 선택하기 위한 것이다.
최종 라운드 R의 끝에서, 마스크 파라미터들 U[1]은, 각각, 각 회로(OC3)의 연산 회로들(XG15, XG16)에 의해, 출력 데이터 세트들 PY2<R-1> 및 PY2<R>로부터 제거된다. 이로써, 각 회로(OC3)의 연산 회로들(XG15, XG16)은 각각 동일한 데이터 Y2<R-1> 및 Y2<R>를 제공한다. 최종 순열 회로(FPM)는 2 개의 데이터 Y2<R> 및 Y2<R-1>을 수신하고, 64-비트 출력 데이터 CY1를 제공한다. 출력 데이터 세트 PR2에서 추출된 열의 선택으로 인해서, 마스크 파라미터들 U[i]는 회로들(EXP 및 FC)에 의해 수행되는 연산들에 걸쳐서 유지된다는 것을 알 수 있다. 또한, 연산 회로(XG15, XG16) 중 하나가 다른 출력 데이터 Y2R 및 Y2R-1와 상이한 출력 데이터를 제공할 때 폴트 주입이 검출될 수 있다.
순열들 U1, U2, U3, U4은, 워드들 U1[1]//U2[1]//U3[1]//U4[1](l = 0 내지 W) 각각에 적용된 확장 회로(EXP)에 의해 제공된 48-비트 워드가 8 개의 6-비트 워드를 포함하고 각각이 워드들 U1[1], U2[1], U3[1], U4[1]의 비트들을 오직 한번 포함하도록, 생성될 수 있다. 이러한 조건이 충족될 때, 워드들 U1[1]//U2[1]//U3[1]//U4[1]의 각각에 적용된 확장 회로(EXP)에 의해 제공된 데이터 세트의 각 6-비트 워드 열은 4회 발생하는, 6-비트로 인코딩된 각 가능한 값을 포함한다. 예를 들어, U1[1] = U2[1] = U3[1] = U4[1] = b0//b1//b2//b3//b4//b5//b6//b7을 선택하자. 32-비트 워드 U1[1]//U2[1]//U3[1]//U4[1]을 수신하는 확장 회로(EXP)는 다음과 같은 6-비트 워드를 제공한다:
b0//b7//b6//b3//b4//b4 이는 비트 b4를 2회 포함함,
b4//b4//b3//b3//b0//b0 이는 비트 b0, b3, b4를 2회 포함함,
b0//b0//b6//b6//b1//b4 이는 b0과 b6를 2회 포함함,
b1//b4//b1//b6//b1//b1 이는 비트 b1를 4회 포함함,
b1//b1//b7//b7//b5//b7 이는 비트 b1을 2회, 비트 b7를 3회 포함함,
b5//b7//b2//b2//b0//b2 이는 비트 b2를 3회 포함함,
b0//b2//b4//b5//b5//b5 이는 비트 b5를 3회 포함함,
b5//b5//b2//b3//b0//b7 이는 비트 b5를 2회 포함함.
따라서, 각 출력 마스크 워드 OMi'가 오직 상이한 수의 비트들만을 포함한다는 조건은 충족되지 않는다.
확장 회로(EXP)에 의해 제공된 결과에 대한 상기 조건은 등식 시스템에 의해 표현될 수 있으며, 이러한 시스템의 분해능은 아주 많은 솔루션(solution) (대략 222 개의 솔루션)을 제공한다. 이러한 솔루션들은 최종 순열 U1의 함수로서, 세 개의 첫 번째 순열들, 예를 들어, U2, U3, U4의 값들의 형태로 표현될 수 있다. 이러한 솔루션 중 일부는 다음과 같다:
U2 = b0//b2//b1//b3//b4//b5//b6//b7
U3 = b1//b0//b3//b2//b5//b6//b7//b4
U4 = b0//b3//b1//b2//b4//b7//b5//b6
U2 = b1//b3//b0//b6//b4//b5//b2//b7
U3 = b5//b7//b3//b0//b4//b6//b1//b2
U4 = b2//b6//b0//b3//b1//b7//b5//b4
U2 = b0//b2//b1//b4//b3//b6//b5//b7
U3 = b3//b0//b7//b1//b2//b4//b6//b5
U4 = b0//b7//b4//b1//b5//b2//b6//b3
여기서, U1 = b0//b1//b2//b3//b4//b5//b6//b7이다. 이들 각각의 솔루션은 단계(S61)에서 사용된 함수들 F1, F2, F3을 규정한다. 확장 회로(EXP)가 첫 번째 솔루션에서 규정된 바와 같은 32-비트 워드 U1[i]//U2[i]//U3[i]//U4[i]를 수신하면, 이는 다음과 같은 6-비트 워드를 제공한다:
b0//b7//b6//b2//b5//b4,
b5//b4//b3//b2//b1//b0,
b1//b0//b6//b7//b3//b4,
b3//b4//b0//b5//b2//b1,
b2//b1//b7//b4//b5//b6,
b5//b6//b1//b2//b0//b3,
b0//b3//b4//b7//b5//b6,
b5//b6//b1//b3//b0//b7.
6-비트 워드들 중 어떤 것도 순열 U1의 동일한 비트를 2 회(또는 그 이상) 포함하지 않음을 알 수 있다.
워드들 V1[1]//V2[1]//V3[1]//V4[l](l = 0 내지 W) 각각에 적용된 회로(RNP)에 의해 수행된 연산의 역 연산 P-1에 의해 제공된 32-비트 워드가 4 바이트를 포함하고, 각 바이트는 워드들 V1[1], V2[1], V3[1], V4[1]의 비트들을 오직 한번 포함하도록, 마스크 세트 V가 생성될 수 있다. 이러한 조건이 충족될 때, 워드 V1[1]//V2[1]//V3[1]//V4[l] 각각에 적용된 회로(RNP)에 의해 제공된 데이터 세트의 각 바이트 열(byte column)은 1 회 발생하는 각 가능한 바이트 값을 포함한다. 함수 F4를 사용하여 마스크 파라미터들 U1 내지 U4로부터 마스크 파라미터 바이트들 V1 내지 V4가 결정되면, 역 비트 순열 연산 P-1로부터 생성된 마스크 파라미터들 V1 내지 V4에 적용되는 조건은, 마스크 세트들 U 및 V 모두가 순열 EXP 및 순열 P- 1으로부터 기인되는 조건들을 모두 만족시키도록 하는 함수들 F1, F2 및 F3을 결정하기 위해 연산 EXP로부터 기인되는 조건과 함께 사용될 수 있다.
최종 순열 회로(FPM)에 의해 프로세싱된 후에 동일한 발생 횟수를 갖는 워드의 모든 가능한 값들을 각 워드 열 Ui가 포함하도록 하는 특성을 마스크 세트 U는 유지하도록 규정될 수 있음을 알 수 있다. 또한, 트리플 DES 알고리즘 또는 체인형 암호화 또는 복호화를 실행하기 위해 다른 DES 암호화 알고리즘 실행이 요구되는 경우, 연산 회로들(XG15 및 XG16) 출력 데이터 PY2<R>[n] 및 PY2<R-1>[n]은, 암호화 데이터가 최종 순열 회로(FMP)에 의해 제공될 때에만, 즉 DES 알고리즘의 세 번째 실행이 끝날 때에만, 최종 순열 회로(FPM)에 의해 추출되고 프로세싱된다.
보다 보편적으로, 도 3의 절차를 사용하여 획득될 수 있고 도 4에 도시된 바와 같은, 입력 데이터 세트 PX의 형태를 갖는 보호된 데이터 X에 대한 연산 OPR의 적용을 고려할 때, 데이터 X는 1 또는 수 개의 워드들의 크기를 갖는다. 이로써, 데이터 X는 데이터들 PX[0], PX[2], ... PX[W]를 포함하는 입력 데이터 세트 PX로 표현되며, 일한 데이터들 각각은 입력 데이터 X와 동일한 크기를 갖는다. 요구 입력 데이터 X는 입력 데이터 세트 PX 내의 인덱스 n에 있다: PX: X = PX[n], 여기서 n은 0부터 W까지의 정수이다. 해당 연산의 결과는 W + 1 개의 출력 데이터 PR[0], PR[1], ... PR[W]를 포함하는 출력 데이터 세트 PR이며, 여기서 각 데이터 PR[l]은 OPR(PX[l])과 동일하다. 예상 출력 데이터 OPR(X)는 출력 데이터 세트 PR 내에서 동일한 인덱스 n에 위치한 출력 데이터 PR[n]과 동일하다. 출력 데이터 세트 PR 내의 각 데이터는 0과 W 간의 각 인덱스 l에 대해 다음과 같이 표현될 수 있다:
PR[l] = OPR(PX[l]) = OPR(X
Figure pat00162
IM[l]) = OPR(X)
Figure pat00163
OM[1], (28)
여기서, IM은 입력 마스크 세트이고, OM은 0과 W 간의 각 인덱스 l에 대해, OM[l] = OPR(IM[l])이 되도록 하는 몇몇 워드의 출력 마스크 세트이며, 각각의 마스크 세트 IM, OM은 W + 1 개의 마스크 파라미터들 IM[l], OM[l]을 포함한다.
이러한 보호 방식은 출력 데이터 세트 PR의 각 워드 열이 이의 일 워드의 크기와 관련하여, 동일한 발생 횟수들을 갖는, 일 워드의 가능한 모든 값들을 포함할 때에, 효율적이라는 것이 밝혀졌다. 이러한 목적을 위해, 마스크 세트 IM 및 OM 각각은 마스크 파라미터들을 포함해야 하고, 각 마스크 파라미터는 마스크 세트 내의 워드 열에 배열되는 적어도 하나를 포함하고 마스크 세트의 각 마스크 파라미터로부터의 단일 워드를 포함하며, 마스크 세트 IM 및 OM 각각의 일 워드 열 내의 워드들은 동일한 크기를 가지며 워드 크기에 관련하여 동일한 발생 횟수를 갖는, 워드의 가능한 모든 값들을 포함한다. 또한, 입력 마스크 세트가 이러한 특성을 갖는다면, 확장성이든 아니든 비트 순열 연산은 일반적으로 이러한 속성을 출력 마스크 세트에 전송하지 않는다는 것이 또한 알려진다.
일 실시예에 따르면, 이러한 특성은 특정 입력 마스크 파라미터 IM[l]을 선택함으로써 출력 마스크 세트로 송신될 수 있다. 이러한 입력 마스크 파라미터는 이하의 방법으로 결정될 수 있다.
출력 마스크 세트 OM은 0 내지 W 간의 인덱스 l에 대해서, 다음과 같이 규정된다:
OM[l] = OPR(IM[l]), (29)
각각의 마스크 파라미터 IM[1]은 다음과 같이, k 비트의 m 개의 워드들 IMi[1](i = 1 내지 m)로 구성된다:
IM[l] = IM1[l]//IM2[l]//...//IMm[l]
여기서, IMi = ib[i,x1]//ib[i, x2]//...//ib[i,xk]이며, ib[i, xj]는 워드 IMi의 비트 수 xj를 나타내며, j 및 j'의 각각의 가능한 개별 값들에 대해서, 그리고 1 내지 m 간의 각 인덱스 값 i에 대해서, xj
Figure pat00164
xj'이며, 일반적으로 IMi는 임의의 값 IMi[l]을 나타낸다. 다음과 같이, 각 마스크 파라미터 OM[l]은 k' 비트의 m' 개의 워드 OMj(i = 1 내지 m')로 구성된다:
OM[l] = OM1[1]//OM2[1]//...//OMm'[l]
여기서, OMi = ob[i,x1]//ob[i,x2]//...//ob[i,xk']이며, ob[i, xj]는 워드 OMi의 비트 수 xj를 나타내며, j 및 j'의 각각의 가능한 개별 값들에 대해서, 그리고 1 내지 m' 간의 각 인덱스 값 i에 대해서, xj
Figure pat00165
xj'이며, 일반적으로 OMi는 임의의 값 OMi[l]을 나타낸다.
등식 (29)은 비트 순열 연산의 상기 규정방식을 사용하여 마스크 파라미터 워드 IMi 및 OMi'의 비트들 간의 등식들의 세트로 변환될 수 있다. 워드들 IMi, OMi'의 비트들 간의 위의 규칙들을 입증하는, 워드 OMi'의 비트들의 각각과 워드 IMi의 비트들 각각 간의 등가 형태의 솔루션들은, 가정들을 테스트함으로써 결정될 수 있다. 이러한 방법은 상술된 마스크 세트들 U 및 V 또는 이들 마스크 세트의 부분들 U1 및 V1을 규정하는데 사용될 수 있다.
도 22는 일 실시예에 따라 보호된 트리플 DES 알고리즘을 구현하는 회로(CT5)를 나타낸다. 회로(CT5)는 DES 초기 순열을 수행하는 회로(IPM), 몇 개의 주 암호화 회로들(REC2), DES 최종 순열을 수행하는 회로(FPM) 및 상기 회로(IPM)와 회로들(REC2) 중 제 1 회로 간에 삽입된 회로들(XG3 및 XG4)을 직렬로 포함한다. 회로(IPM)는 입력 데이터 X1을 수신한다. 연산 회로들(XG3, XG4)은 입력 데이터 세트 X2L, X2R를 생성함으로써 프로세싱 시에 마스크 세트 U를 도입한다. 최종 회로(REC2)는 출력 암호화된 데이터 CX1를 제공하는 회로(FP)에 최종 출력 데이터 PX2[1]<R>//PX2[1]<R-1>을 제공한다. 두 회로들(REC2) 중 하나는 64-비트 데이터의 PX2[l]<R>//PX2[l]<R-1>의 중간 출력 데이터 세트 PX2<R>// PX2<R-1>를 제공하며, 이는 중간 출력 데이터 세트의 마스크를 제거하거나 출력 데이터를 추출할 필요없이 다음 회로(REC2)의 확장 회로(EXP)에 의해 먼저 프로세싱된다. 이로써, 전체 프로세스는 연산 회로(XG3, XG4)로부터 회로(FPM)까지 보호된다.
도 23은 DES 알고리즘에 기초한 CMAC(Cipher-based Message Authentication Code)와 같은 블록 암호-기반 메시지 인증 코드 알고리즘을 구현하는 회로CT4)를 나타낸다. 회로(CT4)는 수 개의 스테이지를 포함하며, 각 스테이지는 도 17에 도시된, DES 초기 순열을 구현하는 회로(IPM), 연산 회로(XG4, XG5), 및 주 암호화 회로(REC2)를 포함한다.
제 1 스테이지는 64-비트 초기 값 IV과 64-비트의 제 1 입력 데이터 블록 DB1을 결합하는 XOR 연산을 수행하는 회로(XG10)를 포함한다. 최종 스테이지는 최종 스테이지의 회로(REC)에 의해 제공된 데이터를 수신하고 출력 데이터 MC를 제공하는 최종 순열 회로(FPM)를 포함한다. 제 1 스테이지의 회로(XG3, XG4)는 마스크 세트 U를 수신한다. 제 1 스테이지의 회로(REC)에 의해 제공된 출력 데이터는 다음 스테이지의 회로(XG3, XG4)의 입력부에 제공되고, 회로(XG3)는 출력 데이터의 우측 부분을 수신하고, 회로(XG4)는 출력 데이터의 좌측 부분을 수신한다. 다음 스테이지의 회로(IPM)는 다른 데이터 블록 DB2, ... DBn을 수신한다. 최종 스테이지는 최종 스테이지의 회로(REC2)로부터 64-비트 출력 데이터를 수신하고 출력 데이터 MC를 제공하는 최종 순열 회로(FPM)를 포함한다.
도 24는 일 실시예에 따른, 플라스틱 카드와 같은 휴대용 매체(HD) 상에 배치되고 전술한 보호 방법들 중 하나를 구현하는 집적 회로(CT6)를 나타낸다. 이 집적 회로는 도 1과 관련하여 전술한 집적 회로(CT)와 동일한 유닛들을 포함하고, 코프로세서(CP1)가 예를 들어, 회로(CT1, CT2, CT3, CT4 또는 CT5)의 형태로 된, 상술한 하나 및/또는 다른 보호 방법을 구현하는 코프로세서(CP2)로 교체된다는 점에서, 도 1과 관련하여 전술한 집적 회로(CT)와 상이하다. 이로써, 일 실시예에 따르면, 코프로세서(CP2)는 암호화 연산의 단일 데이터가 아닌, 결과 데이터들의 출력 테이블들을 제공하도록 구성되며, 각 출력 테이블은 암호화 연산의 예상 결과들을 포함하며, 출력 테이블은 출력 테이블 내의 모든 데이터들이 동일한 발생 횟수를 갖도록 구성된다. 프로세서(PRC)는 마스크 테이블 V에 액세스하도록 구성될 수 있다. 이로써, 프로세서(PRC)는 마스크 테이블 V 또는 U 내의 하나의 마스크 파라미터와 출력 데이터 세트 내의 데이터들 중 임의의 하나를 결합함으로써, 출력 데이터 세트로부터 출력 데이터를 도출할 수 있으며, 여기서 선택된 데이터는 마스크 테이블 V 또는 U에서 선택된 마스크 파라미터와 동일한 랭크를 출력 데이터 세트 내에서 갖는다.
또한, 코프로세서(CP2)는 암호화 연산의 일부를 실행하도록 구성될 수 있다. 이 경우에, 프로세서(PRC)는 암호화 연산의 결과를 포함하는 결과 데이터의 출력 테이블들을 생성하도록 구성되며, 각 출력 테이블은 그 내부의 모든 데이터가 동일한 발생 확률을 갖도록 구성된다.
본 명세서에서 개시된 방법들은 또한 컴퓨터 시스템에 의해 실행 가능한 소프트웨어 프로그램에 의해 구현될 수 있다. 또한, 구현예들은 분산형 프로세싱 및 병렬 프로세싱을 포함할 수 있으며, 이는 특히 입력 데이터 세트 내의 일부 또는 모든 데이터를 병렬로 프로세싱하고/하거나 출력 데이터 세트의 일부 또는 모든 데이터를 병렬로 제공하기 위한 것일 수 있다.
본 명세서에서 설명된 예시들은 다양한 실시예의 구조에 대한 일반적인 이해를 제공하기 위한 것이다. 이러한 예시들은 본 명세서에서 설명된 구조 또는 방법을 사용하는 장치, 프로세서 및 시스템의 원소들 및 특징부들 모두를 완벽하게 설명하지는 않는다. 다수의 다른 실시예들 또는 이들의 조합이, 본 발명을 검토할 시에, 개시된 실시예들을 조합함으로써, 본 기술 분야의 당업자에게 명백할 수 있다. 본 발명의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록, 다른 실시예들이 본 개시로부터 사용되고 파생될 수 있다.
또한, 본 개시 및 설명은 제한적이라기보다는 예시적인 것으로 간주되어야 하며, 첨부된 청구 범위는 본 발명의 진정한 사상 및 범위 내에 있는, 그러한 모든 수정사항, 개선사항 및 다른 실시예들을 포함하도록 의도된다. 이로써, 이하의 특허 청구 범위는 이하의 청구 범위 및 그 균등 범위를 가장 광범위한 허용 가능한 범위로서 해석함으로써 결정되어야 하며, 상술한 설명들에 의해 제한되거나 한정되지 않아야 한다.
도 4 내지 도 6에 도시된 이전의 예들은 XOR 이외의 다른 연산들이 비트 단위로 수행되고 가역적이거나 또는 전단사적인 경우에, XOR 이외의 이러한 다른 연산에 적용될 수 있다.

Claims (16)

  1. 연산을 회로에 의해 실행하기 위한 방법으로서,
    상기 연산에 의해서, 제 1 입력 데이터가 제 2 입력 데이터와 결합되며,
    상기 방법은,
    제 1 입력 데이터 세트의 각각의 데이터가 제 2 입력 데이터 세트의 각각의 데이터와 연관된 데이터 쌍들을 규정하는 단계로서, 상기 제 1 입력 데이터 세트는 상기 제 1 입력 데이터를 포함하고, 상기 제 1 입력 데이터 세트 내의 데이터는 상기 제 1 입력 데이터 및 제 1 마스크 세트 내의 모든 제 1 마스크 파라미터들에 배타적 OR (XOR) 연산을 적용함으로써 획득되고, 상기 제 1 마스크 세트 내의 각각의 제 1 마스크 파라미터는 적어도 하나의 제 1 워드를 포함하고, 상기 제 1 마스크 세트 내의 제 1 워드들은 동일한 크기를 가지며 제 1 워드 서브세트(word subset)를 형성하고, 상기 제 1 워드 서브세트는 상기 제 1 마스크 세트의 각각의 제 1 마스크 파라미터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 상기 제 1 워드들의 가능한 모든 값들을 포함하며, 상기 제 2 입력 데이터 세트는 상기 제 2 입력 데이터를 포함하고, 상기 제 2 입력 데이터 세트 내의 데이터는 상기 제 2 입력 데이터 및 제 2 마스크 세트 내의 모든 제 2 마스크 파라미터들에 배타적 OR (XOR) 연산을 적용함으로써 획득되고, 상기 제 2 마스크 세트 내의 각각의 제 2 마스크 파라미터는 적어도 하나의 제 2 워드를 포함하고, 상기 제 2 마스크 세트 내의 제 2 워드들은 동일한 크기를 가지며 제 2 워드 서브세트(word subset)를 형성하고, 상기 제 2 워드 서브세트는 상기 제 2 마스크 세트의 각각의 제 2 마스크 파라미터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 상기 제 2 워드들의 가능한 모든 값들을 포함하는, 상기 데이터 쌍들을 규정하는 단계; 및
    상기 데이터 쌍들 각각에 상기 연산을 적용함으로써 출력 데이터를 계산하는 단계로서, 상기 연산의 출력 데이터 세트는 상기 데이터들 쌍 중 하나에 상기 연산을 적용함으로써 생성되는 모든 출력 데이터를 포함하는, 상기 출력 데이터를 계산하는 단계;를 포함하며,
    상기 제 1 마스크 세트 내의 상기 제 1 마스크 파라미터들 각각과 상기 제 2 마스크 세트 내의 대응하는 제 2 마스크 파라미터를 XOR 연산에 의해서 결합함으로써 제 3 마스크 파라미터들을 포함하는 제 3 마스크 세트가 생성되도록 상기 제 2 마스크 세트가 생성되며,
    상기 제 3 마스크 세트 내의 각각의 제 3 마스크 파라미터는 적어도 하나의 제 3 워드를 포함하고, 상기 제 3 마스크 세트 내의 제 3 워드들은 동일한 크기를 가지며 제 3 워드 서브세트(word subset)를 형성하고, 상기 제 3 워드 서브세트는 상기 제 3 마스크 세트의 각각의 제 3 마스크 파라미터로부터의 단일 워드를 포함하며 동일한 발생 횟수들을 갖는, 상기 제 3 워드들의 가능한 모든 값들을 포함하는, 연산 실행 방법.
  2. 제 1 항에 있어서,
    상기 연산은 배타적 논리합(XOR)인, 연산 실행 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 2 입력 데이터 세트는 상기 제 1 마스크 세트와 동일한, 연산 실행 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 1 마스크 세트 및 상기 제 2 마스크 세트는 워드들의 제 1 순열 및 제 2 순열의 제 1 쌍으로부터 생성되며,
    상기 제 1 순열 및 제 2 순열 각각은 동일한 발생 횟수를 갖는, 워드들의 모든 가능한 값들을 포함하며,
    상기 제 1 순열 내의 각 워드를 상기 제 2 순열 내의 각 워드와 XOR 연산에 의해서 결합함으로써 결과 순열이 생성되고,
    상기 결과 순열은 워드들을 포함하며 동일한 발생 횟수들을 갖는, 상기 워드들의 모든 가능한 값들을 포함하며,
    상기 제 1 마스크 세트 및 제 2 마스크 세트는 하기의 등식들을 사용하여 각 인덱스 l에 대해서 생성되며:
    U1[l] = PM(u1[l]
    Figure pat00166
    UR), 및
    V1[l] = PM(v1[l]
    Figure pat00167
    VR), 또는
    U1[l] = PM(u1[l])
    Figure pat00168
    UR, 및
    V1[l] = PM(v1[l])
    Figure pat00169
    VR,
    UR 및 VR은 마스크 파라미터들 U1[1] 또는 V1[1] 중 임의의 것의 크기를 갖는 랜덤 워드(random word)이고,
    u1 및 v1은 상기 등식들에 의해 획득된 이전에 계산된 마스크 세트들이거나, 또는 각기 상기 제 1 쌍의 마스크 세트들과 동일하며,
    PM은 상기 마스크 세트들 u1 및 v1에 적용되는 랜덤하게 선택된 순열(permutation)인, 연산 실행 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 제 2 입력 데이터 세트 내의 각각의 제 2 입력 데이터는 치환 연산에 의해 각각의 마스킹된 치환 테이블로부터 선택되고,
    상기 마스킹된 치환 테이블은 입력 치환 테이블로부터 생성되고 상기 제 1 마스크 세트 내의 상기 제 1 마스크 파라미터들 각각 및 상기 제 2 마스크 세트 내의 대응하는 제 2 마스크 파라미터에 대해 하나의 마스킹된 치환 테이블을 포함하는, 연산 실행 방법.
  6. 제 5 항에 있어서,
    상기 마스킹된 치환 테이블은,
    상기 제 1 마스크 세트를 생성하는 단계;
    상기 입력 치환 테이블 내의 값들의 수와 동일한 개수의 제 2 마스크 파라미터들을 포함하는 상기 제 2 마스크 세트를 생성하는 단계;
    상기 제 1 마스크 세트 및 제 2 마스크 세트에서 각 하나의 마스크 파라미터를 한번 선택하여서 마스크 쌍들을 형성하는 단계로서, 각 마스크 쌍은 상기 제 1 마스크 파라미터들 중 하나 및 상기 제 2 마스크 파라미터들 중 하나를 포함하는, 상기 마스크 쌍들을 형성하는 단계; 및
    상기 제 1 마스크 세트 내의 각 마스크 파라미터에 대해 상기 마스킹된 치환 테이블 각각을 생성하는 단계;에 의해서 생성되며,
    상기 마스킹된 치환 테이블 각각을 생성하는 단계는,
    상기 입력 치환 테이블에서 각 데이터를 선택하는 단계;
    상기 선택된 각 데이터에 대해서,
    상기 선택된 데이터 및 상기 제 1 마스크 파라미터에 대응하는 상기 제 2 마스크 파라미터 또는 이의 변환된 값에 XOR 연산을 적용함으로써 마스킹된 데이터를 계산하는 단계;
    최초의 인덱스 및 상기 제 1 마스크 파라미터 또는 이의 변환된 값에 XOR 연산을 적용함으로써 마스킹된 인덱스를 계산하는 단계; 및
    상기 마스킹된 데이터를 상기 마스킹된 치환 테이블에 저장하는 단계;를 포함하며,
    상기 선택된 데이터는 상기 최초의 인덱스에서 선택되고 상기 마스킹된 데이터는 상기 마스킹된 인덱스에 저장되거나 또는 상기 선택된 데이터는 상기 마스킹된 인덱스에서 선택되고 상기 마스킹된 데이터는 최초의 인덱스에 저장되는, 연산 실행 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 출력 데이터 세트 내의 데이터들의 계산들은 랜덤 순서로 수행되는, 연산 실행 방법.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 출력 데이터 세트 내의 각각의 출력 데이터는 적어도 하나의 워드를 포함하고, 상기 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며 출력 워드 서브세트를 형성하며, 상기 출력 워드 서브세트는 상기 출력 데이터 세트 내의 각 출력 데이터로부터의 단일 워드를 포함하며 동일한 발생 횟수를 갖는, 상기 워드들의 모든 가능한 값들을 포함하며,
    상기 방법은,
    상기 출력 워드 서브세트 내의 다른 워드들의 발생 횟수와 상이한 발생 횟수를 갖는 워드를 상기 출력 워드 서브세트에서 검출하는 단계로서, 상이한 발생 횟수들을 갖는 2 개의 워드들이 상기 워드 출력 서브세트에서 발견되면 에러가 검출되는, 상기 검출하는 단계; 또는
    상기 출력 데이터 세트가 상기 제 1 입력 데이터 및 상기 제 2 입력 데이터에 적용된 상기 연산의 출력 데이터에 그리고 결과 마스크 세트의 각 마스크 파라미터에 XOR 연산을 적용함으로써 획득된 데이터를 포함하도록, 상기 출력 데이터 세트 내의 각각의 데이터를 상기 결과 마스크 세트의 각각의 마스크 파라미터와 XOR 연산에 의해 결합하는 단계로서, 상기 출력 데이터 세트 내의 2 개의 데이터에 적용된 XOR 연산이 상이한 데이터들을 제공할 때 에러가 검출되는, 상기 결합하는 단계;를 포함하는, 연산 실행 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 제 1 입력 데이터는, 입력 데이터의 비트들이 믹싱(mixing)되게 하는 비트 순열 연산(bit permutation operation)을 포함하는 연산들에 의해 생성되고,
    상기 방법은 상기 비트 순열 연산을 제 3 입력 데이터 세트 내의 모든 데이터에 적용하는 단계를 포함하며,
    상기 제 3 입력 데이터 세트 내의 각 데이터는 XOR 연산에 의해 상기 제 1 마스크 세트 내의 제 1 마스크 파라미터들 중 하나와 결합되고,
    상기 비트 순열 연산의 출력은 상기 제 3 입력 데이터 세트 내의 데이터들 중 하나에 상기 비트 순열 연산을 적용함으로써 생성되는 모든 데이터를 포함하는 출력 데이터 세트를 포함하고,
    상기 비트 순열 연산의 상기 출력 데이터 세트 내의 각각의 데이터가 적어도 2 개의 워드를 포함하도록 상기 제 1 마스크 세트가 생성되며,
    상기 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며 출력 워드 서브세트를 형성하며,
    상기 출력 워드 서브세트는 상기 출력 데이터 세트 내의 각각의 출력 데이터로부터의 단일 워드를 포함하고 동일한 발생 횟수들들 갖는, 상기 출력 워드 서브 세트 내의 워드들의 가능한 모든 값들을 포함하는, 연산 실행 방법.
  10. 제 1 입력 데이터 및 제 2 입력 데이터를 결합하는 연산을 포함하는 암호 알고리즘에 따라서 입력 데이터를 암호화 또는 복호화하는 방법으로서,
    상기 연산은 제 1 항 내지 제 9 항 중 어느 한 항의 방법에 따라 수행되는, 데이터 암호화 또는 복호화 방법.
  11. 제 10 항에 있어서,
    상기 암호화 알고리즘은 AES(Advanced Encryption standard) 알고리즘을 따르며,
    상기 방법은,
    상기 입력 데이터의 각 워드에, 상기 제 1 마스크 세트의 각 마스크 파라미터에, 그리고 상기 입력 데이터의 워드에 대응하는 비밀 키의 워드에 XOR 연산을 적용함으로써 입력 데이터 세트를 생성하는 단계;
    다수의 중간 라운드를 수행하는 단계; 및
    출력 데이터 세트를 제공하는 단계로서, 상기 출력 데이터 세트 내의 각각의 워드가 상기 제 1 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된, 상기 출력 데이터 세트를 제공하는 단계를 포함하며,
    상기 다수의 중간 라운드들 각각은,
    마스킹된 치환 테이블을 사용하여 치환 연산을 수행하여, 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된 각각의 데이터를 포함하는 치환 출력 데이터 세트를 제공하는 동작,
    상기 제 2 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된 라운드 데이터 세트의 각 워드에, 그리고 상기 제 1 마스크 세트의 각각의 마스크 파라미터에, 그리고 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 XOR 연산을 적용함으로써 마스킹된 라운드 출력 데이터 세트를 계산하는 동작, 및
    마스킹된 라운드 출력 데이터 세트를 다음 라운드에서 입력 데이터 세트로 사용하는 동작을 포함하는, 데이터 암호화 또는 복호화 방법.
  12. 제 10 항에 있어서,
    상기 암호화 알고리즘은 DES(Data Encryption Standard)를 따르며,
    상기 방법은,
    초기 비트 순열 연산에 의해 제공된 결과 데이터의 각 워드, 및 상기 제 1 마스크 세트의 각 마스크 파라미터에 XOR 연산을 적용함으로써 입력 데이터 세트를 생성하는 단계;
    다수의 중간 라운드를 수행하는 단계; 및
    출력 데이터 세트를 제공하는 단계로서, 상기 출력 데이터 세트 내의 각각의 워드가 상기 제 1 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된, 상기 출력 데이터 세트를 제공하는 단계를 포함하며,
    상기 다수의 중간 라운드들 각각은,
    첫 번째 라운드에서 상기 입력 데이터 세트에 적용되고 후속하는 라운드들에서는 라운드 출력 데이터 세트에 적용되는 확장 비트 순열을 수행하는 동작으로서, 상기 비트 순열 연산의 비트 순열 출력 데이터 세트 내의 각각의 데이터는 적어도 2 개의 워드를 포함하며, 상기 비트 순열 출력 데이터 세트 내의 워드들은 동일한 크기를 가지며 비트 순열 출력 워드 서브세트를 형성하며, 상기 비트 순열 출력 워드 서브세트는 상기 비트 순열 출력 데이터 세트의 각 비트 순열 출력 데이터로부터의 단일 워드를 포함하고 동일한 발생 횟수를 갖는, 상기 비트 순열 출력 워드 서브세트 내의 상기 워드들의 모든 가능한 값들을 포함하는, 상기 확장 비트 순열을 수행하는 동작,
    마스킹된 치환 테이블을 사용하여 치환 연산을 수행하여, 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 의해 마스킹된 각각의 데이터를 포함하는 치환 출력 데이터 세트를 제공하는 동작, 및
    상기 제 1 마스크 세트 및 제 2 마스크 세트의 각각의 마스크 파라미터들에 의해 마스킹된 라운드 데이터 세트의 각 워드에, 그리고 상기 제 2 마스크 세트의 각각의 마스크 파라미터에 XOR 연산을 적용함으로써 마스킹된 라운드 출력 데이터 세트를 계산하는 동작을 포함하는, 데이터 암호화 또는 복호화 방법.
  13. 프로세서를 포함하고 제 1 항 내지 제 12 항 중 어느 한 항에 따른 방법을 구현하도록 구성된 회로.
  14. 제 13 항에 있어서,
    코프로세서를 포함하는 회로.
  15. 제 13 항 또는 제 14 항에 따른 회로를 포함하고, 매체 상에 배치된 장치.
  16. 컴퓨터 메모리에 로딩 가능한 컴퓨터 프로그램 제품으로서,
    컴퓨터에 의해 실행될 때 제 1 항 내지 제 12 항 중 어느 한 항에 따른 방법을 수행하도록 상기 컴퓨터를 구성시키는 코드 부분들을 포함하는, 컴퓨터 프로그램 제품.

KR1020170082010A 2016-06-28 2017-06-28 부채널 분석에 대응한 보호 방법 및 장치 KR20180002069A (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
KR20180002069A true KR20180002069A (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 Before (4)

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 부채널 분석에 대응하여 대입 연산을 보호하는 방법

Country Status (3)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10738446B1 (en) 2019-08-12 2020-08-11 Sterilumen, Inc. Drain disinfecting device and method of installing the same
US11788265B2 (en) 2019-08-12 2023-10-17 Sterilumen, Inc. Interchangeable drain disinfecting device with UV source irradiation optimization

Families Citing this family (23)

* 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 吉林大学珠海学院 基于位置换和位变换的加密解密方法和装置
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 埃沙尔公司 免受侧信道分析的保护方法和设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10738446B1 (en) 2019-08-12 2020-08-11 Sterilumen, Inc. Drain disinfecting device and method of installing the same
US11788265B2 (en) 2019-08-12 2023-10-17 Sterilumen, Inc. Interchangeable drain disinfecting device with UV source irradiation optimization

Also Published As

Publication number Publication date
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
KR20180002065A (ko) 2018-01-05
US20170373829A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
KR20180002069A (ko) 부채널 분석에 대응한 보호 방법 및 장치
RU2449482C2 (ru) Устройство обработки шифрования, способ обработки шифрования и компьютерная программа
US20080143561A1 (en) Operation processing apparatus, operation processing control method, and computer program
US20080063192A1 (en) Method and Apparatus for Generating Cryptographic Sets of Instructions Automatically and Code Generator
CN1989726A (zh) 用于执行加密计算的方法和装置
CN106487498B (zh) 电子电路对边信道攻击的抵抗的检验
CN104094553A (zh) 防侧信道攻击的加密方法
CN106487499B (zh) Rijndael算法的保护
KR20180110550A (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
CN104301095A (zh) Des轮运算方法和电路
KR100834096B1 (ko) 고차 전력분석공격에 대응하는 블록 암호 알고리즘aria의 암호화 방법
Biryukov et al. Differential resynchronization attacks on reduced round SNOW 3G⊕
EP3264396B1 (en) A method for protecting a substitution operation using a substitution table against a side-channel analysis
EP3264397B1 (en) A protection method and device against a side-channel analysis
JP2019504343A (ja) 計算デバイス及び方法
EP3264668B1 (en) A protection method and device against a side-channel analysis
Sultan et al. A Secure Key Expansion Algorithm for Present
Guo et al. Differential power analysis on dynamic password token based on SM3 algorithm, and countermeasures
Savitha et al. Implementation of AES algorithm to overt fake keys against counter attacks
EP3264667B1 (en) A method for protecting a substitution operation against a side-channel analysis
EP3264666B1 (en) A protection method and device against a side-channel analysis
Lin et al. A DCA-resistant Implementation of SM4 for the White-box Context
Li et al. Optimization of Security Identification in Power Grid Data through Advanced Encryption Standard Algorithm
Lumbiarres López et al. Faking countermeasure against side-channel attacks
TONG et al. A Proposition to Enhance a Countermeasure Scheme Against Power Analysis Attack for AES