KR20130041353A - 안전하지 않은 환경에서의 블록 암호 프로세스를 위한 장치 및 방법 - Google Patents
안전하지 않은 환경에서의 블록 암호 프로세스를 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR20130041353A KR20130041353A KR1020137006977A KR20137006977A KR20130041353A KR 20130041353 A KR20130041353 A KR 20130041353A KR 1020137006977 A KR1020137006977 A KR 1020137006977A KR 20137006977 A KR20137006977 A KR 20137006977A KR 20130041353 A KR20130041353 A KR 20130041353A
- Authority
- KR
- South Korea
- Prior art keywords
- permutation
- data
- lookup table
- bit
- exclusive
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000008569 process Effects 0.000 title claims description 37
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 abstract description 23
- 230000006870 function Effects 0.000 abstract description 12
- 230000000873 masking effect Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 11
- 238000013478 data encryption standard Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 229920000136 polysorbate Polymers 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/043—Masking or blinding of tables, e.g. lookup, substitution or mapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Emergency Protection Circuit Devices (AREA)
Abstract
예를 들어, 암호 키가 컴파일 시에 알려져 있거나 알려져 있지 않은 "화이트 박스" 모델로 구현되는 AES와 같은 블록 유형 암호를 사용하여 복호화, 암호화, 또는 디지털 서명과 같은 암호 알고리즘의 보안을 향상시키는 방법 및 장치. 이 방법은 신뢰할 수 있는 환경에서 사용하는 데, 특히 암호 키를 보호하는 데 안전하다. 이러한 알고리즘의 특징을 이루는 탐색 테이블은 여기서 모든 이러한 테이블을 동일한 크기로 만들어 구분가능하지 않게 함으로써 그리고 또한 통상적으로 테이블이 순열 함수 또는 논리 배타적 OR 연산을 수행하는 경우, 이러한 테이블의 출력값을 마스킹함으로써 공격으로부터 보호된다.
Description
<관련 출원의 상호 참조>
본 출원은 2010년 8월 20일자로 출원된 미국 특허 출원 제12/806,768호를 기초로 우선권을 주장한다. 그 미국 출원의 전체 내용이 참조 문헌으로서 본 명세서에 포함된다.
<발명의 분야>
본 발명은 데이터 보안 및 암호법에 관한 것으로서, 보다 일반적으로 컴퓨터 구현 암호 프로세스 및 알고리즘의 보안을 향상시키는 것에 관한 것이다.
메시지의 암호화, 인증, 암호 서명 및 식별을 위해 암호 알고리즘이 널리 사용되고 있다. 공지된 DES(Data Encryption Standard, 데이터 암호화 표준)가 오랫동안 사용되어 왔고, 많은 응용에서 AES(Advanced Encryption Standard, 고급 암호화 표준)로 대체된 트리플-DES(Triple-DES)에 의해 갱신되었다.
DES, 트리플-DES 및 AES는 예시적인 대칭 블록 암호이다. 블록 암호는 보통 64 또는 128 비트이지만 때때로 더 긴 평문 및 암호문의 블록에 작용한다. 스트림 암호는 다른 주 유형의 암호이고, 한번에 1 비트 또는 바이트(때때로 하나의 워드)씩 평문 및 암호문의 스트림에 작용한다. 블록 암호의 경우에, 특정의 평문 블록이 항상 동일한 키를 사용하여 동일한 암호문 블록으로 암호화될 것이다. 그러나, 스트림 암호와 달리, 동일한 평문 비트 또는 바이트는 그것이 암호화될 때마다 상이한 비트 또는 바이트로 암호화될 것이다. 따라서, 블록 암호에 대한 ECB(electronic code book, 전자 코드 북) 모드에서, 각각의 평문 블록이 독립적으로 암호화된다.
AES는 미국 정부에 의해 암호화 표준으로서 승인되었다. DES와 달리, AES는 SPN(substitution permutation network, 치환 순열 네트워크)이다. AES는 컴퓨터 소프트웨어 및 하드웨어 구현 둘 다에서 실행하기에 빠르며, 구현하기 비교적 쉽고, 메모리를 거의 필요로 하지 않는다. AES는 128 비트의 고정된 블록 크기 및 128, 192 또는 256 비트의 키 크기를 가진다. 128 비트의 고정된 블록 크기로 인해, AES는 4x4 바이트 어레이에 작용한다. AES는 키 확장(key expansion)과, 대부분의 블록 암호와 같이, 일련의 암호화 및 복호화 라운드(round)(반복)를 가진다. 각각의 라운드는 동일한 프로세스를 수반한다. 다수의 라운드의 사용은 보안을 향상시킨다. 이 유형의 블록 암호는 각각의 라운드에서 치환 박스(substitution box) 또는 s-박스를 사용한다. 이 동작은 암호에 비선형성을 제공하고 보안을 상당히 향상시킨다.
이들 블록 암호가 대칭 암호 - 보통 키 스케줄(key schedule)에서의 사소한 차이점을 제외하고는, 암호화 및 복호화에 동일한 알고리즘 및 키가 사용된다는 것을 의미함 - 라는 것에 유의한다. 대부분의 최근의 암호에서 통상적인 바와 같이, 보안은 알고리즘보다는 (비밀) 키에 달려 있다. s-박스 또는 치환 박스는 DES에서 도입되었으며, n 비트 입력을 받아 m 비트 출력을 제공한다. m 및 n의 값은 암호에 따라 다르다. 입력 비트는 기술 분야에 공지된 특정의 방식으로 s-박스에서의 엔트리를 지정한다.
(128 비트 블록 및 10 라운드를 갖는) AES를 구현하는 것은 산술적으로 다음과 같은 연산을 수반한다: (1) 11번의 AddRoundKey 연산(10번의 라운드 이전에 1번 있음), (2) 10번의 Sub-Byte 연산, (3) 10번의 ShiftRow 연산, 및 (4) 9번의 Mix-Column 연산. 라운드 1 내지 라운드 9의 각각의 라운드는 연산 (1) 내지 연산 (4)로 이루어져 있으며, 여기서 하나의 연산으로부터의 출력은 다음 연산에 입력되고, 연산 (4)로부터의 출력은 연산 (1)에 입력된다. 라운드 10은 연산 (1) 내지 연산 (3)으로 이루어져 있고, 여기서 연산 (3)으로부터의 출력은 사용되는 출력이다. 공격자가 암호를 구현하는 시스템에 대해 특권적 접근 권한(privileged access)을 갖는 경우, AES의 산술 구현이 비밀 키를 복원하는 공격자에 대해서는 그다지 보안을 제공하지 않는다.
많은 암호화 알고리즘은 주로 "블랙 박스"(입력-출력) 모델로서만 암호화 알고리즘과 상호작용할 수 있고 시스템 접근 권한이 없는 것으로 인해 알고리즘의 내부 동작 또는 메모리 내용 등은 관찰할 수 없는 공격자에 의한 디코딩에 내성이 있는 암호화된 데이터를 생성하는 것에 관한 것이다. 블랙 박스 모델은 신뢰할 수 있는 당사자가 암호화된 자료의 인코딩 및 디코딩 둘 다를 위해 컴퓨팅 시스템을 제어하는 응용에 적절하다.
그러나, 많은 암호화 응용은 공격자가 알고리즘의 내부 동작에 접근할 수 없다는 가정을 허용하고 있지 않다. 예를 들어, 암호화된 디지털 미디어가 종종 적대 세력(공격자)에 의해 완전히 제어되는 컴퓨팅 시스템 상에서 복호화될 필요가 있다. 블랙 박스 모델이 완화될 수 있는 정도가 여러가지 있다. 극단적인 완화는 "화이트 박스(white box)" 모델이라고 한다. 화이트 박스 모델에서는, 공격자가 암호화를 수행하는 시스템에 대한 전면적인 접근 권한을 갖는 것 - 메모리, 프로그램 실행 등의 상태를 직접 관찰할 수 있는 것을 포함함 - 으로 추정된다. 이러한 모델에서는, 암호화 키가 메모리에서 관찰되거나 메모리로부터 추출될 수 있고, 따라서 비밀 키를 보여주는 연산을 감추는 방식이 중요하다.
간행물 "White-Box Cryptography in an AES implementation" Lecture Notes in Computer Science Vol. 2595, Revised Papers from the 9th Annual International Workshop on Selected Areas in Cryptography pp. 250-270 (2002)(Chow 등)은, 탐색 테이블 내에서 비밀 키를 알아보기 어렵게 만들기 위해 그리고 그렇지 않았으면 AES의 산술 구현에서 이용가능할 것인 중간 상태 정보를 알아보기 어렵게 만들기 위해, AES 동안 테이블 탐색을 사용하여 수행되는 연산을 알아보기 어렵게 만드는 AES의 구현을 개시한다.
Chow 등은 (컴퓨터 코드 컴파일 시간에 키가 알려지는 "화이트 박스" 구현에서) 11번의 AddRoundKey 연산 및 10번의 SubByte 연산(10개의 라운드, 라운드마다 16개의 테이블이 사용되고, 각각의 테이블은 16 바이트 길이 - 128 비트 - 의 AES 블록의 1 바이트에 대한 것임)을 구현하기 위해 160개의 개별적인 테이블을 사용한다. 이들 160개 테이블은 특정의 AES 키를 내포하고, 따라서 이들 테이블을 수반하는 탐색으로부터의 출력은 보통 AES 알고리즘의 AddRoundKey 및 SubByte 연산으로부터 얻어지게 될 데이터를 내포하며, 단 이 데이터는 이들 테이블의 어느 부분이 AES 키로부터 도출되는 라운드 키 정보를 나타내는지를 판정하는 것을 더욱 어렵게 만드는 입력/출력 순열(input/output permutation)을 포함한다.
Chow 등은 9번의 MixColumn 연산을 구현하기 위해 1008개의 개별적인 테이블을 사용한다(AES의 10번째 라운드에서는 MixColumn 연산이 없다). 이들 테이블 중 한 유형은 (규격에 따라) 한 바이트와 AES MixColumn 다항식의 곱셈을 구현하고, 다른 유형은 MixColumn의 논리 XOR(배타적 OR) 부분을 구현한다. 각각의 테이블이 9번의 라운드 동안 한번씩 사용된다.
Chow 등의 해결 방안이 기발하지만, 그에 대한 몇번의 공격이 이미 행해졌다. 주어진 블록 암호 암호화 프로세스의 Chow 등의 화이트 박스 구현은 일련의 테이블 탐색으로서 (그의 키를 사용하여) 블록 암호를 분해한다. 테이블-탐색이 이어서 순열 함수(permutation function)를 사용하여 마스킹된다. [순열은, 본 명세서에서 사용되는 바와 같이, 소정의 방식으로 데이터 바이트 또는 워드에서의 비트들의 순서를 변경하는 전단사(bijection) 연산을 말한다.] 이것은 Chow 등에 설명되어 있으며, 이 방법은 임의의 블록 암호에 대해 확장될 수 있다.
가장 최근의 가장 강력한 이러한 확장은 Olivier Billet 등의 "Cryptanalysis of a White Box AES Implementation" in SAC 2004, LNCS 3357 pp. 227-240, 2005에 공개되었다. 처리된 기본 연산의 상세 내용이 이 공격을 시작하는 데 필요하다. 이것은 공격자가 라운드마다의 연산, MixColumn 연산 등을 추출하기 위해 일련의 연산을 구별해야만 한다는 것을 의미한다.
이러한 공격을 무산시키기 위한 본 방법 및 그의 관련 장치는 AES(또는 임의의 블록 암호 알고리즘을 포함하는 다른 암호 알고리즘) 구현을 각각이 서로 구별가능하지 않고 마스킹되는 일련의 기본 테이블 연산으로서 구성하는 것을 포함한다. 그로써, 공격자는 (수동적 공격에 대해서는) 암호를 구현하는 컴퓨터 코드에 의해 및/또는 (능동적 공격에 대해서는) 컴퓨터 코드 실행 경로에서 해메거나 그에 의해 어찌할 바를 모른다. 이 방식은 또한 암호 프로세스를 수행하도록 설계되는 하드웨어(회로 기반) 장치로 구현가능하다.
앞서 언급한 Billet 등의 공격은 암호 연산 및 키를 숨기는 데 사용되는 마스크에 관한 정보를 단계별로 얻기 위해 일련의 기본 문제들로 분해되는 프로세스이다. 마스크가 알려지면, 암호 키 자체를 복원하는 것이 쉽다.
Billet 등의 공격은, 공격자가 AES 알고리즘의 라운드를 구성하는 테이블들을 재그룹화할 수 있자마자, 공격자가 출력 변환의 비선형 부분을 복원할 수 있게 한다. 예를 들어, Billet 등은 Billet 등으로부터 도 1에 도시된 것과 같은 MixColumns "박스"(10)에서 사용되는 함수 Q의 비선형 부분을 어떻게 복원하는지를 보여주고, Billet 등은 4개의 입력 바이트와 4개의 출력 바이트 사이의 박스(10)에서의 4개의 매핑 중 하나의 매핑을 보여준다. 입력 바이트는 x0, x1, x2, x3이고, 출력 바이트는 y0, y1, y2, y3이다. 각각의 이러한 박스는 각자의 출력 순열 Q를 갖는 4개의 8 비트-8 비트 순열로 구성된다. 따라서, 제1 단계에서, 하나의 AES 라운드에 수반되는 테이블들을 계산하여 한 라운드에 대한 후속하는 연산들의 조합을 구성할 수 있기 위해 메모리에 나타나는 각각의 테이블의 역할을 복원한다.
본 암호 프로세스의 목표는 이 작업을 어렵게 만드는 것이다. 실제로, 현재 공지된 버전의 AES에서, 일부 테이블들은 다른 테이블보다 더 크고, 일부 연산들은 "화이트-박스화"되어 있지 않다. MixColumn 테이블은, 도 1에서와 같이, 다른 테이블의 8x8 요소 대신에 8x32 요소의 크기를 가진다. 게다가, 특정의 테이블의 출력은, 다른 테이블의 출력과 달리, 논리적으로 XOR(배타적 OR)된다.
그로써 연산들이 구별가능하기 때문에, 공격자가 화이트 박스 환경에서 AES 라운드가 언제 끝나고 새로운 라운드가 언제 시작되는지를 판정하는 것이 가능하다.
본 방법의 목표는 이러한 테이블을 모두가 각각 정확히 동일한 크기를 갖도록 구성함으로써 이러한 공격에 철저하게 견디는 것이다. AES 암호 알고리즘의 계산 구조로 인해, 8-비트 입력 x 4-비트 출력(128 바이트의 크기를 가짐), 16-비트 입력 x 8-비트 출력(65 킬로바이트), 또는 32-비트 입력 x 16-비트 출력(8 기가바이트) 크기의 테이블을 사용할 수 있다. 예시적인 선택은 각각이 8-비트(1 바이트) x 4-비트(1 니블)의 크기를 갖는 테이블이다. 이하에서는 8x4 테이블 크기를 사용하여 이 프로세스를 제시하지만, 이 프로세스는 다른 테이블 크기로 용이하게 일반화된다. 이들 테이블이 순열 및 논리 연산에 대한 것이고, AES 암호를 특징지우는 "S-박스" 치환 연산이 아니라는 것에 유의한다.
공동 소유인 발명의 명칭이 "Combination White Box/Black Box Cryptographic Processes and Apparatus(화이트 박스/블랙 박스 결합 암호 프로세스 및 장치)"인 미국 특허 출원 공개 제US 2009/0252327 A1호(Ciet 등) 및 발명의 명칭이 "Systems and Methods for Implementing Block Cipher Algorithms on Attacker-Controlled Systems(공격자 제어 시스템에 대한 블록 암호 알고리즘 구현 시스템 및 방법)"인 미국 특허 출원 공개 제US 2010/0054461 A1호(Ciet 등)가 참조 문헌으로서 그 전체 내용이 본 명세서에 포함된다.
도 1은 AES MixColumns 연산에 대한 종래 기술의 매핑을 나타낸 도면.
도 2는 XOR 연산 테이블 또는 "박스"를 도식으로 나타낸 도면.
도 3은 순열 박스를 나타낸 도면.
도 4a 및 도 4b는 도 3의 순열을 분해하여 나타낸 도면.
도 5는 XOR 테이블의 트윈(twin)을 나타낸 도면.
도 6은 도 5의 테이블의 일반 형태를 나타낸 도면.
도 7은 완성된 XOR 테이블을 나타낸 도면.
도 8a, 도 8b 및 도 8c는 마스크 순열을 나타낸 도면.
도 9는 컴퓨팅 시스템을 나타낸 도면.
도 10은 도 9의 시스템을 상세히 나타낸 도면.
도 2는 XOR 연산 테이블 또는 "박스"를 도식으로 나타낸 도면.
도 3은 순열 박스를 나타낸 도면.
도 4a 및 도 4b는 도 3의 순열을 분해하여 나타낸 도면.
도 5는 XOR 테이블의 트윈(twin)을 나타낸 도면.
도 6은 도 5의 테이블의 일반 형태를 나타낸 도면.
도 7은 완성된 XOR 테이블을 나타낸 도면.
도 8a, 도 8b 및 도 8c는 마스크 순열을 나타낸 도면.
도 9는 컴퓨팅 시스템을 나타낸 도면.
도 10은 도 9의 시스템을 상세히 나타낸 도면.
앞서 기술한 유형의 테이블들은 데이터 바이트를 입력하고 데이터 니블(니블은 1/2 바이트임)만을 반환한다. AES 암호를 일례로서 살펴보면, 본 발명자들은 AES 알고리즘에 대해 2가지 종류의 8x4 테이블로 충분한 것으로 판정하였다:
(a) 4-비트(1 니블) 출력을 갖는 8-비트 입력(2 니블)을 구현하는 테이블은 따라서 출력측에서 1 니블로 제한된다. 이 경우에, 1 바이트의 입력 데이터의 순열 함수를 표현하기 위해, 각각 8x4인 테이블 2개가 요구된다.
(b) 마스킹된 니블에 대해 논리 XOR 연산을 구현하는 테이블. 이들 테이블은 2개의 마스킹된 니블을 입력하고, 2개의 니블의 논리 XOR을 비트별로 계산하며, 하나의 마스킹된 니블을 반환한다.
본 발명에 따른 동일한 크기의 테이블을 갖는다는 것은 테이블들이 구별가능하지 않다는 것을 암시하지 않는다. 이것은 심지어 테이블들이 입력 순열 및 출력 순열을 사용하여 마스킹되는 경우에도 그러하다. 본 발명자들은 공격자가 사용할 수 있는 테이블을 구별하는 제1 방식을 알았다. 따라서, 관여된 테이블 모두가 동일한 크기를 갖더라도, 이들이 쉽게 구별될 수 있다. 실제로, XOR 연산 테이블은 그룹 법칙(group law)의 테이블이다. 따라서, 임의의 니블에 대해, "박스"(테이블)를 통한 출력이 0이도록 하는 고유의 니블이 존재한다. ("박스"라는 용어는 "화이트 박스" 환경이 아니라 테이블 또는 테이블로 구현되는 논리적 또는 수학적 연산을 말한다.) XOR 연산 테이블의 다른 가능한 출력들인 그룹 [1, 24-1] 내의 임의의 값에 대해 이 특성[구분자(distinguisher)]이 또한 검증된다.
이 마지막 특성은 XOR 연산 테이블의 각각의 출력이 정확하게 16개의 원상(pre-image)을 갖도록 보장한다. (암호법에서의 원상은 특정의 출력에 매핑되는 값 또는 값들이다.) 따라서, XOR 연산 테이블이 계산 내에서 사용되는 경우, 공격자는 공지된 원상 공격(pre-image attack)을 사용하여 그 테이블을 검출할 수 있고, 이러한 테이블의 구조를 비롯한 구현에 관한 유용한 정보를 획득할 수 있다.
본 발명자들은 또한 이들 2가지 유형의 테이블을 구분하는 제2 방식(특성)을 알았다. 순열의 절반을 표현하는 각각의 8x4 테이블은 순열의 두번째 부분인 "트윈" 테이블을 반드시 가질 필요가 있다. C[i] = A[i] || B[i](단, "||"는 연결을 나타냄)이고, A, B 및 C가 동일한 입력을 받으며, 임의의 입력에 대해 테이블 C의 출력이 A 출력과 B 출력의 연결이고, C가 순열이라는 의미에서 A와 B의 연결 테이블(concatenation table) C라면, 특정의 테이블 A에 대한 "트윈"은 테이블 B이다. 따라서, 특정의 XOR 연산 테이블 A가 주어진 경우, 테이블 A가 임의의 특정의 암호 알고리즘에 존재하는 트윈 테이블 B를 반드시 가질 필요는 없다. 그러나, 이러한 테이블 B를 구성하는 것이 실제로 가능하다. 따라서, 본 프로세스에서, 각각의 XOR 연산 테이블 A에 대해 이러한 부가의 테이블 B가 구성되고, 이들 부가의 테이블 B가 사용된다. 소프트웨어 환경에서 컴퓨터 코드를 절약하기 위해, 2개의 이러한 XOR 연산 테이블이 트윈이도록 이들에 대한 입력 및 출력 순열을 구성할 수 있다는 것에 유의한다.
XOR 연산을 구현하는 8x4 테이블은 앞서 설명한 바와 같은 이러한 트윈을 갖지 않는데, 그 이유는 XOR 연산이 2개의 니블을 입력하고 하나의 니블을 반환하기 때문이다. 따라서, 선험적으로, 일련의 8x4 테이블 중에서, XOR 연산 테이블을 다른 테이블과 구분하는 것이 쉬우며, 이것은 바람직하지 않게도 테이블의 유형과 관련하여 구현에 관한 정보를 공격자에게 제공한다.
이하는 테이블을 구분하는 이들 2가지 방식을 좌절시키기 위해, 순열의 일부이거나 XOR 연산 테이블인 테이블의 성질을 감추는 계산 효율적인 방법이다. X로 표시된 데이터 바이트가 X0 및 X1로 표시된 2개의 니블의 연결 - 대수적으로 다음과 표현됨 - 이라고 하자:
X0 || X1.
여기서, 입력 X0 및 X1의 XOR 연산 테이블은 도 2에서 박스(12)로 나타내어져 있다.
입력 바이트 X (= X0 || X1)에 대한 P로 표시된 순열의 결과를 P0, P1로 표시된 2개의 순열, 따라서 P0 (X0 || X1)와 P1 (X0 || X1)의 연결이라고 하고, 여기서 P0 및 P1은 X의 한 부분에만 적용되지 않고 X에 적용되며, 다음과 같이 표현된다:
P0 (X0 || X1) || P1 (X0 || X1).
또한, 도 3에 도시된 바와 같이, 순열 P를 크기 8x8의 박스(14)로 표현한다. 앞서 설명한 바와 같이, 순열은 도 4a 및 도 4b에 각각 나타낸 바와 같은 2개의 서브테이블 P0(16) 및 P1(18)로 분해될 수 있다.
이하에서는 테이블을 구분하는 제2 방식을 좌절시키기 위해 XOR 연산 테이블에 대한 트윈 테이블을 구성하는 것에 대해 기술한다. 앞서 설명한 바와 같이, 알고리즘에서의 XOR 연산 테이블은 XOR 연산 테이블과 연관될 때 순열을 행하는 테이블로서 정의되는(상기 참조) 임의의 트윈 테이블을 갖지 않는다. 그러나, 이러한 테이블을 구성하는 것이 용이하게 달성된다. 실제로, XOR 테이블의 트윈인 많은 테이블이 존재한다. 예를 들어, 도 5에 도시된 Q로 표시된 함수(20)는 그들 중 하나이다. 이러한 테이블(22)의 일반 형태가 도 6에 도시되어 있으며, 여기서 F는 로 표시된 함수가 입력 바이트로서 (X0, X1)를 받고
이하는 XOR 테이블을 구분할 수 없도록 만들고 그로써 구별하는 제1 방식을 좌절시키는 것에 대해 기술한다. 이것은 XOR 연산 테이블의 역상의 수에 관한 특성을 감추는 것을 수반한다. 앞서 기술하였고 도 7에 도시된 바와 같은 완성된 XOR 연산 테이블(24)인 순열이 있는 것으로 가정한다. 그의 상부 부분이 XOR 연산 테이블로 이루어져 있다는 것을 감추기 위해, 제1 단계에서, 모든 니블 X0 및 X1에 대해 M이 도 8a에서의 마스크(26)이고, R이 도 8b에서의 M-1과 Q의 연결이도록 하는 M과 R로 각각 표시된 2개의 순열을 계산한다:
문자 M은 "마스크"를 나타내는데, 그 이유는 이 순열이 테이블이 실제로 XOR 연산 테이블이라는 것을 마스킹하기 때문이다. 도 8a에 도시된 것과 같은 순열 M(26)은, 예컨대, 소정의 일련의 순열들 중에서 랜덤하게 선택된다. 이 선택은 통상적으로 컴퓨터 소스 코드가 오브젝트(실행가능) 코드로 컴파일될 때 수행된다. M-1으로 표시된 M의 역순열(inverse permutation)로부터, M-1과 완성된 XOR 연산 테이블의 합성을 계산한다. 이제 도 8b에 도시된 바와 같은 2개의 순열 M-1(27) 및 Q(28)이 있으며, 이들이 결합되어 도 8c의 순열 R(29)로 된다. 유익하게도, 이들 순열 중 어느 것도, 개별적으로 볼 때, 공격자가 이들을 랜덤한 순열과 구분할 수 있게 하는 어떤 특정의 특성도 갖지 않는다.
마스킹의 제2 단계에서는, XOR 연산 테이블의 출력을 마스킹한다. 실제로, 계산에서 정확한 데이터를 결코 노출시키지 않는 것이 일반적으로 보안에 더 바람직하다. 그렇게 하기 위해, 2가지 방법이 적용될 수 있다:
(a) 첫번째 방법은 4x4 랜덤 순열을 계산하고 이를 제2 순열의 상부 부분과 합성시키는 것을 포함한다.
(b) 두번째 방법은 8x8 랜덤 순열을 계산하고 이를 제2 순열 전체와 합성시키는 것을 포함한다.
이들 경우 둘 다에서, 마지막으로 계산된 순열의 역이 재사용된다. 실제로, 목표는 연쇄(chain)되어 있을 수 있는 일련의 순열을 갖는 것이다.
따라서, 본 발명에 따르면, AES 또는 유사한 암호 알고리즘의 화이트 박스 구현의 임의의 테이블을 상기한 이들 테이블의 구성을 사용하여 일련의 구분가능하지 않은 테이블-탐색(table-lookup)으로서 표현할 수 있다.
얻어진 암호 프로세스는, 예를 들어, 각각이 8x4의 크기인 테이블들의 일련의 구분가능하지 않은 테이블-탐색으로서 (컴퓨터 코드 또는 하드웨어로) 표현된다. 이것은 공격자가 그의 공격을 시작하기 위해 무엇이 전체 라운드에 대응하는지를 검색하는 것을 어렵게 만드는데, 그 이유는 언제 각각의 라운드가 시작하거나 끝나는지를 공격자가 판정하기 어렵기 때문이다. 이것은, 프로세스에서 복잡도를 증가시키고자 하는 경우 및 이들 부가의 쓸모없는 테이블이 유용한 테이블과 구분가능하지 않은 경우, 몇가지 "쓸모없는" 동작(각각이 부가의 순열을 수반함)이 부가될 때 특히 그렇다. 이들 부가의 순열은 암호 알고리즘의 몇몇 라운드를 다른 것보다 더 길게 함으로써 보안을 향상시킨다. 다른 실시예에서, 이러한 유형의 부가의 연산은 각각의 라운드 내에서 바이트별로 부가된다.
본 방법은 18x8 또는 32x16과 같은 다른 크기의 테이블을 사용하는 암호 프로세스로 확장될 수 있다. 그러나, 8x4 테이블이 바람직할 수 있다.
도 9는 본 발명의 복호화에 따른 컴퓨팅 장치(시스템)(30)의 관련 부분을 블록도로 나타낸 것이다. 이것은, 예컨대, 컴퓨터, 이동 전화, 스마트폰, PDA(personal digital assistant) 또는 유사한 장치이거나, 이러한 장치의 일부이며, 일 실시예에서, 상기 암호(예컨대, 암호화 또는 복호화) 프로세스 예들을 구현하는 소프트웨어(컴퓨터 코드)를 실행하는 종래의 하드웨어 구성요소를 포함한다. 이 코드가, 예컨대, C 또는 C++ 컴퓨터 언어로 되어 있을 수 있거나, 그의 기능이 펌웨어 또는 하드웨어(회로) 논리의 형태로 표현될 수 있으며, 이러한 코드를 작성하거나 이러한 논리를 설계하는 것은 상기 개시 내용으로부터 볼 때 일상적인 것이다.
컴퓨터 코드가 종래에는 프로세서(38)에 의해 실행되기 위해 프로세서(38)와 연관되는 코드 메모리(컴퓨터 판독가능 저장 매체, 예컨대, ROM)(40)에 (오브젝트 코드 또는 소스 코드로서) 저장되었다. 암호화되거나 복호화될 또는 다른 방식으로 처리될 들어오는 메시지(데이터)가 포트(32)에서 수신되고 컴퓨터 판독가능 저장 매체(메모리, 예컨대, RAM)(36) - 이는 프로세서(38)에 결합됨 - 에 저장된다. 프로세서(38)는 종래에 소프트웨어 분할 모듈(42)에서 메시지를 적당한 크기의 블록들로 분할한다. 프로세서(38)에서의 다른 소프트웨어(코드) 모듈은 앞서 언급한 블록 암호의 암호 알고리즘 기능을 수행하는 알고리즘 모듈(46)을 포함한다.
또한, 테이블을 저장하는 컴퓨터 판독가능 저장 매체(메모리)(52)는 물론, 얻어진 출력 데이터, 예컨대, 복호화된 또는 암호화된 입력 데이터에 대한 제3 저장 장치(58)가 프로세서(38)에 결합된다. 저장 장소(36, 52, 58)는 하나 또는 몇개의 종래의 물리 메모리 장치(예컨대, 반도체 RAM 또는 그의 변형 또는 하드 디스크 드라이브)에 있을 수 있다.
전기 신호가 도 9의 다양한 요소 사이에서 종래 방식으로 전달된다. 얻어진 암호화된 또는 복호화된 메시지의 차후의 종래의 사용이 도 9에 도시되어 있지 않다.
도 10은, 일 실시예에서, 컴퓨팅 장치의 추가의 상세를 나타낸 것이다. 도 10은 본 발명의 실시예들에서의 처리 기능을 구현하기 위해 이용될 수 있는 통상적인 종래의 컴퓨팅 시스템(60)을 나타낸 것이며, 도 9의 시스템의 부가의 상세를 나타낸다. 이 유형의 컴퓨팅 시스템은, 예를 들어, 컴퓨터 서버 또는 사용자(클라이언트) 컴퓨터 또는 다른 컴퓨팅 장치에서 사용될 수 있다. 관련 기술의 당업자는 또한 다른 컴퓨터 시스템 또는 아키텍처를 사용하여 본 발명의 실시예들을 어떻게 구현해야 하는지도 인식할 것이다. 컴퓨팅 시스템(60)은, 예를 들어, 데스크톱, 랩톱 또는 노트북 컴퓨터, 핸드헬드 컴퓨팅 장치[PDA(personal digital assistant), 셀 폰, 팜톱 등], 메인 프레임, 서버, 클라이언트, 또는 주어진 응용 또는 환경에 바람직하거나 적절할 수 있는 임의의 다른 유형의 전용 또는 범용 컴퓨팅 장치를 나타낼 수 있다. 컴퓨팅 시스템(60)은 [도 9에서의 프로세서(38)와 동등한] 프로세서(64)와 같은 하나 이상의 프로세서를 포함할 수 있다. 프로세서(64)는, 예를 들어, 마이크로프로세서, 마이크로컨트롤러 또는 다른 제어 논리와 같은 범용 또는 전용 처리 엔진을 사용하여 구현될 수 있다. 이 예에서, 프로세서(64)는 버스(62) 또는 다른 통신 매체에 연결된다.
컴퓨팅 시스템(60)은 또한 프로세서(64)에 의해 실행될 명령어 및 정보를 저장하는 랜덤 액세스 메모리(RAM) 또는 다른 동적 메모리와 같은 [메모리(36, 52, 58)와 동등한] 메인 메모리(68)를 포함할 수 있다. 메인 메모리(68)는 또한 프로세서(64)에 의해 실행될 명령어의 실행 동안 임시 변수 또는 다른 중간 정보를 저장하는 데 사용될 수 있다. 컴퓨팅 시스템(60)은 마찬가지로 프로세서(64)에 대한 정적 정보 및 명령어를 저장하는, 버스(62)에 결합되는 판독 전용 메모리(ROM) 또는 다른 정적 저장 장치를 포함할 수 있다.
컴퓨팅 시스템(60)은 또한, 예를 들어, 매체 드라이브(62) 및 이동식 저장 장치 인터페이스(80)를 포함할 수 있는 정보 저장 시스템(70)을 포함할 수 있다. 매체 드라이브(72)는 플래시 메모리, 하드 디스크 드라이브, 플로피 디스크 드라이브, 자기 테이프 드라이브, 광 디스크 드라이브, CD(compact disk) 또는 DVD(digital versatile disk) 드라이브(R 또는 RW), 또는 다른 이동식 또는 고정식 매체 드라이브와 같은 고정식 또는 이동식 저장 매체를 지원하는 드라이브 또는 기타 메커니즘을 포함할 수 있다. 저장 매체(78)는, 예를 들어, 하드 디스크, 플로피 디스크, 자기 테이프, 광 디스크, CD 또는 DVD, 또는 매체 드라이브(72)에 의해 판독되고 그에 기록되는 다른 고정식 또는 이동식 매체를 포함할 수 있다. 이들 예가 나타내는 바와 같이, 저장 매체(78)는 특정의 컴퓨터 소프트웨어 또는 데이터를 저장하는 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
대안의 실시예에서, 정보 저장 시스템(70)은 컴퓨터 프로그램 또는 다른 명령어 또는 데이터가 컴퓨팅 시스템(60)에 로드될 수 있게 하는 다른 유사한 구성요소를 포함할 수 있다. 이러한 구성요소는, 예를 들어, 프로그램 카트리지 및 카트리지 인터페이스, 이동식 메모리(예를 들어, 플래시 메모리 또는 다른 이동식 메모리 모듈) 및 메모리 슬롯, 그리고 소프트웨어 및 데이터가 이동식 저장 유닛(78)으로부터 컴퓨팅 시스템(60)으로 전달될 수 있게 하는 다른 이동식 저장 유닛(82) 및 인터페이스(80)와 같은 이동식 저장 유닛(82) 및 인터페이스(80)를 포함할 수 있다.
컴퓨팅 시스템(60)은 또한 [도 9에서의 포트(32)와 동등한] 통신 인터페이스(84)를 포함할 수 있다. 통신 인터페이스(84)는 소프트웨어 및 데이터가 컴퓨팅 시스템(60)과 외부 장치 사이에서 전달될 수 있게 하기 위해 사용될 수 있다. 통신 인터페이스(84)의 예는 모뎀, 네트워크 인터페이스[예컨대, 이더넷 또는 다른 네트워크 인터페이스 카드(NIC)], 통신 포트(예를 들어, USB 포트), PCMCIA 슬롯 및 카드 등을 포함할 수 있다. 통신 인터페이스(84)를 통해 전달되는 소프트웨어 및 데이터는 통신 인터페이스(84)에 의해 수신될 수 있는 전자, 전자기, 광 또는 기타 신호일 수 있는 신호의 형태로 되어 있다. 이들 신호는 채널(88)을 통해 통신 인터페이스(84)에 제공된다. 이 채널(88)은 신호를 전달할 수 있고, 무선 매체, 전선 또는 케이블, 광 섬유, 또는 기타 통신 매체를 사용하여 구현될 수 있다. 채널의 일부 예는 전화선, 셀룰러 폰 링크, RF 링크, 네트워크 인터페이스, 근거리 또는 원거리 통신망, 및 기타 통신 채널을 포함한다.
본 개시 내용에서, "컴퓨터 프로그램 제품", "컴퓨터 판독가능 매체" 등의 용어는 일반적으로, 예를 들어, 메모리(68), 저장 장치(78) 또는 저장 유닛(82)과 같은 매체를 말하는 데 사용될 수 있다. 이들 및 기타 형태의 컴퓨터 판독가능 매체는 프로세서(64)로 하여금 지정된 동작을 수행하게 하기 위해 그 프로세서에서 사용하기 위한 하나 이상의 명령어를 저장할 수 있다. 일반적으로 (컴퓨터 프로그램 또는 다른 그룹의 형태로 그룹화될 수 있는) "컴퓨터 프로그램 코드"라고 하는 이러한 명령어는, 실행될 때, 컴퓨팅 시스템(60)이 본 발명의 실시예의 기능을 수행할 수 있게 한다. 코드가 직접 프로세서로 하여금 지정된 동작을 수행하게 하고, 그렇게 하도록 컴파일되며, 및/또는 그렇게 하기 위해 다른 소프트웨어, 하드웨어 및/또는 펌웨어 요소(예컨대, 표준의 기능을 수행하는 라이브러리)와 결합될 수 있다는 것에 유의한다.
그 요소들이 소프트웨어를 사용하여 구현되는 실시예에서, 소프트웨어는 컴퓨터 판독가능 매체에 저장되고, 예를 들어, 이동식 저장 장치 드라이브(74), 드라이브(72) 또는 통신 인터페이스(84)를 사용하여 컴퓨팅 시스템(60)에 로드될 수 있다. 제어 논리(이 예에서, 소프트웨어 명령어 또는 컴퓨터 프로그램 코드)는, 프로세서(64)에 의해 실행될 때, 프로세서(64)로 하여금 본 명세서에 기술된 본 발명의 실시예의 기능을 수행하게 한다.
본 개시 내용은 제한하는 것이 아니라 예시적인 것이다. 추가의 변형이 본 개시 내용에 비추어 기술 분야의 당업자에게는 명백할 것이고, 첨부된 특허청구범위의 범위 내에 속하는 것으로 보아야 한다.
Claims (40)
- 입력 데이터를 수신하는 단계;
상기 수신된 데이터를 제1 컴퓨터 판독가능 메모리에 저장하는 단계;
프로세서에서 상기 저장된 데이터를 블록 암호 프로세스에 적용하는 단계;
상기 프로세서가,
각각이 동일한 크기의 탐색 테이블을 포함하는 복수의 순열 연산을 상기 데이터에 적용하는 단계;
각각이 순열 탐색 테이블들과 동일한 크기의 탐색 테이블을 포함하며 마스킹된 출력을 더 갖는 복수의 배타적 OR 연산을 적용하는 단계; 및
상기 블록 암호 프로세스로부터 얻어진 데이터를 제2 컴퓨터 판독가능 매체에 저장하는 단계
를 포함하는 방법. - 제1항에 있어서, 각각의 탐색 테이블은 1 데이터 바이트를 입력으로서 받고, 1/2 데이터 바이트를 출력하는 방법.
- 제1항에 있어서, 각각의 탐색 테이블의 크기는 8 비트 입력 및 4 비트 출력인 방법.
- 제3항에 있어서, 각각의 탐색 테이블의 크기는 16 비트 입력 및 8 비트 출력인 방법.
- 제1항에 있어서, 각각의 탐색 테이블의 크기는 32 비트 및 16 비트 출력인 방법.
- 제1항에 있어서, 상기 블록 암호 프로세스는 AES(Advanced Encryption Standard)에 따르는 방법.
- 제1항에 있어서, 상기 프로세스는 상기 암호 프로세스의 키들을 포함하는 데이터를 알아보기 어렵게 만드는(obscure) 방법.
- 제1항에 있어서, 상기 암호 프로세스는 암호화, 복호화, 또는 디지털 서명을 계산하는 것 중 하나인 방법.
- 제1항에 있어서, 상기 배타적 OR 연산의 탐색 테이블들에 대한 입력도 마스킹되는 방법.
- 제1항에 있어서, 상기 순열 및 배타적 OR 연산들은 각각 비트별로 수행되는 방법.
- 제1항에 있어서,
상기 배타적 OR 연산의 탐색 테이블들 중 적어도 하나에 대해 대응하는 트윈 탐색 테이블을 제공하는 단계;
상기 암호 프로세스의 복수의 라운드를 제공하는 단계; 및
상기 라운드들 중 적어도 하나의 라운드에서 상기 트윈 탐색 테이블을 사용하는 단계
를 더 포함하는 방법. - 제11항에 있어서, 상기 트윈 탐색 테이블을 포함하는 특정의 라운드는 상기 라운드들 중 다른 라운드보다 더 많은 연산을 포함하는 방법.
- 제11항에 있어서, 상기 데이터의 각각의 바이트에 대해, 라운드의 길이는 상이한 방법.
- 제1항에 있어서, 각각의 배타적 OR 탐색 테이블에 대해, 상기 데이터는 순열에 의해 마스킹되는 방법.
- 제14항에 있어서, 상기 데이터는 제1 순열과 배타적 OR 연산의 계산인 제2 순열에 의해 마스킹되는 방법.
- 제14항에 있어서, 상기 순열은 2개의 4 요소 x 4 요소 순열을 포함하는 방법.
- 제14항에 있어서, 상기 순열은 8 요소 x 8 요소 순열을 포함하는 방법.
- 제1항에 있어서, 상기 암호 프로세스에 대한 키는 상기 프로세스의 런타임 시에 알려지는 방법.
- 제1항에 있어서, 상기 암호 프로세스에 대한 키는 상기 프로세스의 코드 컴파일 시간에 알려지는 방법.
- 제1항의 방법을 수행하기 위한 컴퓨터 코드를 저장하는 비일시적 컴퓨터 판독가능 매체.
- 제1항의 방법을 수행하도록 프로그램되는 컴퓨팅 장치.
- 입력 데이터를 수신하도록 구성되는 포트;
상기 포트에 결합되고, 상기 수신된 데이터를 저장하도록 구성되는 제1 컴퓨터 판독가능 메모리; 및
상기 제1 컴퓨터 판독가능 메모리에 결합되고, 상기 저장된 데이터를 블록 암호 프로세스에 적용하는 프로세서
를 포함하고,
상기 프로세서는,
각각이 동일한 크기의 탐색 테이블을 포함하는 복수의 순열 연산을 상기 데이터에 적용하고;
각각이 순열 탐색 테이블들과 동일한 크기의 탐색 테이블을 포함하며 마스킹된 출력을 더 갖는 복수의 배타적 OR 연산을 적용하며;
상기 블록 암호 프로세스로부터 얻어진 데이터를 상기 프로세서에 결합되는 제2 컴퓨터 판독가능 매체에 저장하는 장치. - 제22항에 있어서, 각각의 탐색 테이블은 1 데이터 바이트를 입력으로서 받고, 1/2 데이터 바이트를 출력하는 장치.
- 제22항에 있어서, 각각의 탐색 테이블의 크기는 8 비트 입력 및 4 비트 출력인 장치.
- 제22항에 있어서, 각각의 탐색 테이블의 크기는 16 비트 입력 및 8 비트 출력인 장치.
- 제22항에 있어서, 각각의 탐색 테이블의 크기는 32 비트 입력 및 16 비트 출력인 장치.
- 제22항에 있어서, 상기 블록 암호 프로세스는 AES(Advanced Encryption Standard)에 따르는 장치.
- 제22항에 있어서, 상기 프로세스는 상기 암호 프로세스의 키들을 포함하는 데이터를 알아보기 어렵게 만드는 장치.
- 제22항에 있어서, 상기 암호 프로세스는 암호화, 복호화, 또는 디지털 서명을 계산하는 것 중 하나인 장치.
- 제22항에 있어서, 상기 배타적 OR 연산의 탐색 테이블들에 대한 입력도 마스킹되는 장치.
- 제22항에 있어서, 상기 순열 및 배타적 OR 연산들은 비트별로 수행되는 장치.
- 제22항에 있어서, 상기 프로세서는 또한,
상기 배타적 OR 연산의 탐색 테이블들 중 적어도 하나에 대해 대응하는 트윈 탐색 테이블을 제공하고;
상기 암호 프로세스의 복수의 라운드를 제공하며;
상기 라운드들 중 적어도 하나의 라운드에서 상기 트윈 탐색 테이블을 사용하는 장치. - 제32항에 있어서, 상기 트윈 탐색 테이블을 포함하는 특정의 라운드는 상기 라운드들 중 다른 라운드보다 더 많은 연산을 포함하는 장치.
- 제32항에 있어서, 상기 데이터의 각각의 바이트에 대해, 라운드의 길이는 상이한 장치.
- 제22항에 있어서, 각각의 배타적 OR 탐색 테이블에 대해, 상기 데이터는 순열에 의해 마스킹되는 장치.
- 제35항에 있어서, 상기 데이터는 제1 순열과 배타적 OR 연산의 계산인 순열에 의해 마스킹되는 장치.
- 제35항에 있어서, 상기 순열은 2개의 4 요소 x 4 요소 순열을 포함하는 장치.
- 제35항에 있어서, 상기 순열은 8 요소 x 8 요소 순열을 포함하는 장치.
- 제22항에 있어서, 상기 암호 프로세스에 대한 키는 상기 프로세스의 런타임 시에 알려지는 장치.
- 제22항에 있어서, 상기 암호 프로세스에 대한 키는 상기 프로세스의 코드 컴파일 시간에 알려지는 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/806,768 | 2010-08-20 | ||
US12/806,768 US8644500B2 (en) | 2010-08-20 | 2010-08-20 | Apparatus and method for block cipher process for insecure environments |
PCT/US2011/046483 WO2012024086A1 (en) | 2010-08-20 | 2011-08-03 | Apparatus and method for block cipher process for insecure environments |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130041353A true KR20130041353A (ko) | 2013-04-24 |
Family
ID=44583403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137006977A KR20130041353A (ko) | 2010-08-20 | 2011-08-03 | 안전하지 않은 환경에서의 블록 암호 프로세스를 위한 장치 및 방법 |
Country Status (10)
Country | Link |
---|---|
US (1) | US8644500B2 (ko) |
EP (1) | EP2606603A1 (ko) |
KR (1) | KR20130041353A (ko) |
CN (1) | CN103119888A (ko) |
AU (1) | AU2011292312B2 (ko) |
BR (1) | BR112013004010A2 (ko) |
CA (1) | CA2807636A1 (ko) |
DE (1) | DE112011102765T5 (ko) |
SE (1) | SE1350203A1 (ko) |
WO (1) | WO2012024086A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190049875A (ko) * | 2016-09-27 | 2019-05-09 | 제말토 에스에이 | 테이블 기반 구현에서의 차수 2 이상의 dca 공격에 대응하는 방법 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8644500B2 (en) | 2010-08-20 | 2014-02-04 | Apple Inc. | Apparatus and method for block cipher process for insecure environments |
US9274976B2 (en) * | 2010-11-05 | 2016-03-01 | Apple Inc. | Code tampering protection for insecure environments |
US9654279B2 (en) * | 2014-03-20 | 2017-05-16 | Nxp B.V. | Security module for secure function execution on untrusted platform |
US9641337B2 (en) * | 2014-04-28 | 2017-05-02 | Nxp B.V. | Interface compatible approach for gluing white-box implementation to surrounding program |
SG10201405852QA (en) | 2014-09-18 | 2016-04-28 | Huawei Internat Pte Ltd | Encryption function and decryption function generating method, encryption and decryption method and related apparatuses |
DE102014016548A1 (de) * | 2014-11-10 | 2016-05-12 | Giesecke & Devrient Gmbh | Verfahren zum Testen und zum Härten von Softwareapplikationen |
US9665699B2 (en) * | 2015-03-13 | 2017-05-30 | Nxp B.V. | Implementing padding in a white-box implementation |
US10015009B2 (en) * | 2015-11-25 | 2018-07-03 | Nxp B.V. | Protecting white-box feistel network implementation against fault attack |
US10171234B2 (en) * | 2015-12-16 | 2019-01-01 | Nxp B.V. | Wide encoding of intermediate values within a white-box implementation |
DE102016008456B4 (de) * | 2016-07-12 | 2018-03-29 | Giesecke+Devrient Mobile Security Gmbh | White Box AES Implementierung |
FR3061822B1 (fr) * | 2017-01-10 | 2019-05-10 | Safran Identity & Security | Procede de chiffrement ou de dechiffrement d'un n-uplet de donnees avec un n-uplet de cles secretes predeterminees |
CN109962768B (zh) * | 2017-12-26 | 2022-03-15 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于白盒aes的航电系统加解密方法 |
US20200313850A1 (en) * | 2019-03-29 | 2020-10-01 | Irdeto Canada Corporation | Method and apparatus for implementing a white-box cipher |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6518896B1 (en) * | 2000-01-15 | 2003-02-11 | Sony Electronics, Inc. | Multiple symbol length lookup table |
JP2002261751A (ja) * | 2001-03-02 | 2002-09-13 | Hitachi Ltd | 暗号処理方法 |
US8077861B2 (en) * | 2004-08-12 | 2011-12-13 | Cmla, Llc | Permutation data transform to enhance security |
US7577250B2 (en) * | 2004-08-12 | 2009-08-18 | Cmla, Llc | Key derivation functions to enhance security |
US8069346B2 (en) * | 2006-11-15 | 2011-11-29 | Certicom Corp. | Implicit certificate verification |
EP2092684A2 (en) * | 2006-11-17 | 2009-08-26 | Koninklijke Philips Electronics N.V. | Cryptographic method for a white-box implementation |
US7822207B2 (en) * | 2006-12-22 | 2010-10-26 | Atmel Rousset S.A.S. | Key protection mechanism |
US8306216B2 (en) * | 2007-01-11 | 2012-11-06 | Irdeto B.V. | Method and system for tracking or identifying copy of implementation of computational method, and computation system |
US8165286B2 (en) | 2008-04-02 | 2012-04-24 | Apple Inc. | Combination white box/black box cryptographic processes and apparatus |
US8175265B2 (en) | 2008-09-02 | 2012-05-08 | Apple Inc. | Systems and methods for implementing block cipher algorithms on attacker-controlled systems |
US8644500B2 (en) | 2010-08-20 | 2014-02-04 | Apple Inc. | Apparatus and method for block cipher process for insecure environments |
-
2010
- 2010-08-20 US US12/806,768 patent/US8644500B2/en active Active
-
2011
- 2011-08-03 CA CA2807636A patent/CA2807636A1/en not_active Abandoned
- 2011-08-03 DE DE112011102765T patent/DE112011102765T5/de not_active Withdrawn
- 2011-08-03 WO PCT/US2011/046483 patent/WO2012024086A1/en active Application Filing
- 2011-08-03 KR KR1020137006977A patent/KR20130041353A/ko active IP Right Grant
- 2011-08-03 BR BR112013004010A patent/BR112013004010A2/pt not_active IP Right Cessation
- 2011-08-03 SE SE1350203A patent/SE1350203A1/sv not_active Application Discontinuation
- 2011-08-03 AU AU2011292312A patent/AU2011292312B2/en not_active Ceased
- 2011-08-03 CN CN201180045342XA patent/CN103119888A/zh active Pending
- 2011-08-03 EP EP11741738.6A patent/EP2606603A1/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190049875A (ko) * | 2016-09-27 | 2019-05-09 | 제말토 에스에이 | 테이블 기반 구현에서의 차수 2 이상의 dca 공격에 대응하는 방법 |
US11201724B2 (en) | 2016-09-27 | 2021-12-14 | Gemalto Sa | Method to counter DCA attacks of order 2 and higher on table-based implementations |
Also Published As
Publication number | Publication date |
---|---|
CA2807636A1 (en) | 2012-02-23 |
AU2011292312B2 (en) | 2014-09-11 |
WO2012024086A1 (en) | 2012-02-23 |
SE1350203A1 (sv) | 2013-05-20 |
CN103119888A (zh) | 2013-05-22 |
EP2606603A1 (en) | 2013-06-26 |
US8644500B2 (en) | 2014-02-04 |
DE112011102765T5 (de) | 2013-09-19 |
US20120045050A1 (en) | 2012-02-23 |
BR112013004010A2 (pt) | 2016-06-28 |
AU2011292312A1 (en) | 2013-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8644500B2 (en) | Apparatus and method for block cipher process for insecure environments | |
US8966279B2 (en) | Securing the implementation of a cryptographic process using key expansion | |
US8966285B2 (en) | Securing implementation of a cryptographic process having fixed or dynamic keys | |
US8504845B2 (en) | Protecting states of a cryptographic process using group automorphisms | |
CN105940439B (zh) | 使用排列应对对密码算法的旁通道攻击的对策 | |
US9189425B2 (en) | Protecting look up tables by mixing code and operations | |
EP2924677B1 (en) | Splitting s-boxes in a white-box implementation to resist attacks | |
US9274976B2 (en) | Code tampering protection for insecure environments | |
US8199909B2 (en) | Method and device for carrying out a cryptographic calculation | |
EP2058781B1 (en) | Encryption device, encryption method, and computer program | |
US8605894B2 (en) | Cryptographic process execution protecting an input value against attacks | |
US8699702B2 (en) | Securing cryptographic process keys using internal structures | |
US8718280B2 (en) | Securing keys of a cipher using properties of the cipher process | |
US8675866B2 (en) | Multiplicative splits to protect cipher keys | |
US20120121083A1 (en) | Encryption apparatus and method | |
US20130067212A1 (en) | Securing implementation of cryptographic algorithms using additional rounds | |
US9692592B2 (en) | Using state reordering to protect against white box attacks | |
KR102290025B1 (ko) | 화이트 박스 aes 구현 | |
EP3667647A1 (en) | Encryption device, encryption method, decryption device, and decryption method | |
KR101506499B1 (ko) | 마스킹이 적용된 seed를 이용한 암호화 방법 | |
EP2940677A1 (en) | Method for including an implicit integrity or authenticity check into a white-box implementation | |
Lu et al. | Collision-based attacks on white-box implementations of the AES block cipher | |
Rigot | Útoky na white-box AES |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |