KR20120030335A - 입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템 - Google Patents

입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템 Download PDF

Info

Publication number
KR20120030335A
KR20120030335A KR1020117023699A KR20117023699A KR20120030335A KR 20120030335 A KR20120030335 A KR 20120030335A KR 1020117023699 A KR1020117023699 A KR 1020117023699A KR 20117023699 A KR20117023699 A KR 20117023699A KR 20120030335 A KR20120030335 A KR 20120030335A
Authority
KR
South Korea
Prior art keywords
encoding
output
input
basic
data
Prior art date
Application number
KR1020117023699A
Other languages
English (en)
Other versions
KR101715027B1 (ko
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
Application filed by 이르데토 코포레이트 비.브이. filed Critical 이르데토 코포레이트 비.브이.
Publication of KR20120030335A publication Critical patent/KR20120030335A/ko
Application granted granted Critical
Publication of KR101715027B1 publication Critical patent/KR101715027B1/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/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/002Countermeasures against attacks on cryptographic mechanisms
    • 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/16Obfuscation 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)

Abstract

화이트-박스(white-box) 암호화 시스템이 제공되고, 여기서, 내부값들 중 적어도 하나가 입력 의존형 인코딩을 사용하여 표현된다. 시스템은 암호화 연산을 일괄적으로 수행하도록 배열된 복수의 기본 블록들의 네트워크를 포함한다. 인코더가 복수의 인코딩 방식들 중 선택된 인코딩 방식에 따라 복수의 기본 블록들 중 제 1 기본 블록의 출력 데이터를 인코더-출력으로 인코딩하도록 구성되고, 상기 선택은 시스템에 대한 입력 메시지에 의존한다. 보상기가 복수의 리코딩 방식들 중 선택된 리코딩 방식에 따라 인코딩의 영향을 보상하기 위해 중간 데이터를 리코딩하도록 구성된다. 고정된 인코딩들 대신에 가변 인코딩들을 사용하는 것은, 화이트-박스 암호화 시스템을 리버스 엔지니어링(reverse engineering)하는 것을 복잡하게 한다.

Description

입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템{WHITE-BOX CRYPTOGRAPHIC SYSTEM WITH INPUT DEPENDENT ENCODINGS}
본 발명은 입력 메시지를 출력 메시지에 매핑하는 키 암호화 연산(keyed cryptographic operation)을 수행하는 암호화 시스템에 관한 것으로, 이 시스템은 상기 키를 표현하는 복수의 기본 블록들의 네트워크를 포함하고, 기본 블록 중 적어도 일부는 출력 데이터에 대한 입력 데이터의 매핑을 위해 배열되고, 복수개는 암호화 연산을 일괄적으로 수생하기 위해 배열된다.
인터넷은 디지털 콘텐츠에 대한 편리하고 유비쿼터스한 액세스를 사용자들에게 제공한다. 강력한 분산 채널과 같은 인터넷의 잠재성으로 인해, 다수의 가전(CE) 제품들은 인터넷에 직접 액세스하거나 PC 플랫폼-인터넷에 대한 주요 포털과 상호작용하도록 노력한다. CE 제품들은 디지털 셋탑 박스, 디지털 TV들, 게임 콘솔들, PC들 및 더욱더 PDA들, 이동 전화들, 및 모바일 저장부와 같은 핸드-헬드 디바이스들, 및 애플의 iPod와 같은 렌더링 디바이스들을 포함하지만 이에 제한되지 않는다. 저작권이 있는 콘텐츠에 대한 분산 매체로서 인터넷의 사용은, 콘텐츠 제공자의 이익을 보호하기 위한 강력한 요건을 생성한다. 특히, 콘텐츠 제공자들의 저작권 및 비즈니스 모델들을 보증하는 것이 요구된다. 더욱더, CE 플랫폼들은 적합한 소프트웨어가 로딩된 프로세서를 사용하여 동작된다. 이러한 프로세서는 오디오 및/또는 비디오와 같은 디지털 콘텐츠의 렌더링(재생)을 위한 기능의 메인부를 포함할 수도 있다. 재생 소프트웨어의 제어는, 콘텐츠가 사용될 수도 있는 기간과 조건을 포함하는 콘텐츠 소유자의 이익을 적용하기 위한 일 방식이다. (PC 및 PDA를 제외하고) 종래의 다수의 CE 플랫폼들이 폐쇄되어 사용되지만, 요즘은 더욱더 많은 플랫폼들이 적어도 부분적으로 개방된다. 특히 PC 플랫폼에 대해, 일부 사용자들은 콘텐츠에 대한 액세스를 제공하는 하드웨어 및 소프트웨어를 통한 완벽한 제어 및 임의의 콘텐츠 보호 메커니즘을 공격하고 바이패스하기 위한 대량의 시간 및 자원들을 갖는 것으로 가정될 수도 있다. 그 결과, 콘텐츠 제공자들은 적대적인 네트워크를 통해 사용자들을 적법화하기 위한 콘텐츠를 모든 사용자들 또는 디바이스들이 신뢰될 수 없는 커뮤니티로 전달해야 한다.
통상적으로, 디지털 저작권 관리 시스템은, 라운드들(rounds)로서 칭하는 암호화/복호화 단계들의 시퀀스를 사용하여 블록들에서 데이터 스트림을 프로세싱하는 블록 암호들에 기초한 암호화 기법을 사용한다. 각 라운드 동안, 라운드-특정 함수가 수행된다. 라운드-특정 함수는 라운드-특정 서브-키의 제어하에서 실행되는 동일한 라운드 함수에 기초할 수도 있다. 다수의 암호화 시스템들에 대해, 라운드 함수는 매핑 테이블들 또는 룩-업 테이블들을 사용하여 특정될 수도 있다. 라운드 함수의 특정이 테이블들의 사용을 명시적으로 포함하더라도, 그럼에도 불구하고, 테이블들은 암호화/복호화 함수들의 소프트웨어에서의 효율적 실행을 위해 함수의 상이한 부분들에 대한 구현에서 빈번하게 사용된다. 컴퓨터 코드는 테이블값들에 액세스하거나 함수의 범위값으로 조합한다. 사용자-특정일 수도 있는 키들을 분배하는 대신에, 암호화 또는 복호화 알고리즘들에 대한 키들 대신에 사용자 특정 알고리즘들을 분배하는 것이 더욱 중요해진다. 이들 알고리즘들, 가장 대부분은 함수들(매핑들)은 키형(key-like)인 엘리먼트들의 재계산을 금지하거나 재설계를 방지하기 위해 애매하게(은닉) 되어야 한다. 컴퓨터들상에서, 몇몇 컴퓨터 코드들로 달성된 테이블들은 종종 이들 함수들을 나타낸다.
콘텐츠 제공자들은 적대적인 네트워크를 통해 사용자들을 적법화하기 위한 콘텐츠를 모든 사용자들 또는 디바이스들이 신뢰될 수 없는 커뮤니티로 전달해야 한다. 특히 PC 플랫폼에 대해, 사용자는 콘텐츠에 대한 액세스를 제공하는 하드웨어 및 소프트웨어의 완벽한 제어 및 임의의 콘텐츠 보호 메커니즘을 공격하고 바이패스하기 위한 비제한 시간 및 자원들의 양을 갖는 것으로 가정되어야 한다. 콘텐츠가 사용될 수도 있는 기간 및 조건들을 강제하는 소프트웨어 코드는 변경되어서는 안된다. PC들에 분산된 보호된 콘텐츠에 대한 디지털 저작권 관리에서의 일반적인 방식은, 디지털 콘텐츠를 암호화하는 것, 예를 들어, 데이터 암호화 표준(DES), 어드밴스드 암호화 표준(AES)이거나, WO9967918에 개시된 방법을 사용하는 것, 및 복호화 키들을 사용하는 것이다.
암호화에 의존하는 디지털 저작권 관리의 취약성의 2개의 메인 영역들은, 콘텐츠가 사용될 수도 있는 기간과 조건들을 강제하는 소프트웨어 플러그-인들, 및 키 분배 및 핸들링이다.
통상적으로, 플러그-인은 콘텐츠가 사용될 기간과 조건을 강제한다. 이들 기간과 조건을 제거하려는 공격자는 소프트웨어 플러그-인에 포함된 프로그램 코드의 변경을 통해 이것을 달성하려 시도할 수 있다.
키 핸들링과 관련하여, 재생을 위해, 미디어 플레이어는 라이센스 데이터베이스로부터 복호화 키를 검색해야 한다. 그 후, 암호화된 콘텐츠의 복호화를 위해 이러한 복호화 키를 메모리의 어딘가에 저장해야 한다. 이것은 공격자에게 키에 대한 공격을 위한 2개의 옵션들을 남긴다. 먼저, 라이센스 데이터베이스 액세스 함수의 리버스 엔지니어링(reverse engineering)은 블랙 박스 소프트웨어를 발생시킬 수 있고(즉, 공격자는 소프트웨어 함수의 내부 작업을 이해하지 못해야 한다), 이것은 공격자가 모든 라이센스 데이터베이스들로부터 애셋 키(asset key)들을 검색하게 한다. 다음으로, 콘텐츠 복호화 동안 메모리에 대한 액세스들의 관측에 의해, 애셋 키를 검색하는 것이 가능하다. 양자의 경우들에서, 키는 손상되는 것으로 고려된다. 아래에서, 일반적 소프트웨어에서 어떻게 위조-방지가 이루어질 수도 있는지의 설명이 제공된다.
위조-방지 소프트웨어는 소위, 소프트웨어 대한 목적 지향 위조가 복잡하기 때문이다. 소프트웨어 애플리케이션들의 위조 방지를 증가시키는 다양한 기법들이 존재한다. 대부분의 이들 기법들은 소프트웨어 애플리케이션의 제어 및 데이터 경로 양자에 무작위성(randomness) 및 복잡성의 베일을 추가함으로써 애플리케이션의 임베딩된 지식을 은닉하는데 기초한다. 이것의 이면의 아이디어는, 단지 코드 조사만에 의해 정보를 추출하는 것이 어려워진다는 것이다. 따라서, 예를 들어, 애플리케이션의 액세스 및 승인 제어를 핸들링하는 코드를 찾고, 그 결과 그것을 변경하는 것이 더욱 어려워진다.
2002년 8월 15~16일에 Canada, St.John's Newfoundland에서의 Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002에서 Stanley Chow, Philip Eisen, Harold Johnson, 및 Paul C. Van Oorschot에 의한 "White-Box Cryptography and an AES Implementation"(이하에서 "Chow 1"이라고 칭해짐), 및 2002년 11월 18일에 USA, Washington DC에서의 Digital Rights Management: ACM CCS-9 Workshop, DRM 2002에서 Stanley Chow, Phil Eisen, Harold Johnson, 및 Paul C. van Oorschot에 의한 "A White-Box DES Implementation for DRM Applications"(이하에서 "Chow 2"라고 칭해짐)은 랜덤 전단사(bijection)들과 그것의 테이블들을 인코딩하는 결합에 의해 키를 은닉하고, 수용 애플리케이션으로 키를 더 푸싱함으로써 암호화 경계를 연장하는 의도를 갖는 방법들을 개시한다.
그러나, Chow의 방식에서의 취약성은 이하 "Michiels1"으로 칭하는, Preceddings of the 15th Annual Workshop on Selected Areas in Cryptography(SAC2008), Sackville, New Brunswick, Canada, 2008에서 알 수 있는 W. Michiels, P. Gorissen 및 H.D.L Hollmann에 의한 "Cryptanalysis of a Generic Class of White-Box Implementations"에서 지적된다. 이러한 취약성은 공격자에 의해 활용될 수도 있고, 최악의 경우에는, 화이트-박스(white-box) 구현에 은닉된 비밀키의 노출을 발생시킬 수도 있다.
Michiels 등에 의한 키 관측은, Chow에 따른 화이트 박스 구현에서 각각의 라운드들의 개별 입력 워드들이 통상의 넌-화이트-박스 구현에서의 대응하는 입력 워드들과 특정한 관계에 있다는 것이다. 이러한 관계는, 개별 입력값 이외의 다른 입력값들에 대한 레퍼런스없이 표현될 수 있다. 이러한 관계가 키-의존형이고 공격자에게 알려지지 않았지만, 이러한 특징은 상기 언급한 논문에서 더 설명되는 바와 같이, 화이트-박스의 해독을 실질적으로 단순화하는데 충분한 구조를 제공한다.
입력-메시지를 출력-메시지에 매핑하는 암호화 연산을 수행하는 개선된 암호화 시스템을 갖는 것이 바람직하다. 이러한 문제를 더 양호하게 다루기 위해, 본 발명의 제 1 양태에서, 입력-메시지를 출력-메시지에 매핑하는 키 암호화 연산을 수행하는 암호화 시스템이 제공된다. 이 암호화 시스템은 상기 키를 표현하는 복수의 기본 블록들의 네트워크를 포함하고, 기본 블록들의 적어도 일부는 입력값을 출력값에 매핑하기 위해 배열되고, 복수개는 암호화 연산을 일괄적으로 수행하기 위해 배열된다. 네트워크는 복수의 기본 블록들 중 제 1 기본 블록의 출력 데이터를 복수의 인코딩 방식들 중 선택된 방식에 따라 인코더-출력으로 인코딩하는 인코더로서, 이 인코더는 입력-메시지에 의존하는 선택값에 의존하여 복수의 인코딩 방식들 중에서 선택된 인코딩 방식을 선택하도록 구성되고, 복수의 기본 블록들 중 제 2 기본 블록은 선택된 인코딩 방식에 따르고 인코더-출력에 의존하여 인코딩된 네트워크를 통해 그것의 입력을 수신하도록 구성되는, 상기 인코더, 및 복수의 리코딩(recoding) 방식들 중 선택된 리코딩 방식에 따라 인코딩의 영향을 보상하기 위해 제 2 기본 블록의 출력값에 의존하는 중간값을 리코딩하는 보상기로서, 이 보상기는 선택값에 의존하여 복수의 리코딩 방식들 중에서 선택된 리코딩 방식을 선택하도록 구성되는, 상기 보상기를 포함한다.
더욱 일반적으로, 제 1 블록의 출력 데이터는 입력 의존형 인코딩 방식에 따라 인코딩된다. 보상기는 추후 인코딩을 조정한다.
키 관측에서 언급한 바와 같이, Chow의 구성이 취약한 이유는, 화이트-박스 구현에서의 각각의 라운드들의 개별 입력값들과 통상의 넌-화이트-박스 구현에서의 개별 입력값들 사이에 존재하는 고정된 관계 때문이다. 본 발명에서는, 몇몇 고정된 인코딩 방식에 따르지 않고, 복수의 인코딩들 중에서 선택되는 인코딩을 따라 값을 인코딩하는 인코더가 도입된다. 이러한 특징은 고정된 관계를 변경시킨다. 인코더-출력은 더 이상, 암호화 연산의 넌-화이트-박스 구현에서 몇몇 개별 입력값과 고정된 관계에 있지 않다. 몇몇 관계가 존재할지라도, 이것은 개별 입력값 뿐만 아니라 다른 입력값들에도 의존할 것이다. 이러한 복잡성은 Michiels 1에서 제시된 공격을 제지하는데 충분하다.
값들의 고정된 인코딩을 변경함으로써, 리버스 엔지니어가 본 발명에 따른 암호화 시스템의 작업을 암호화 연산의 넌-화이트-박스 버전의 작업들과 비교하는 것이 더 어렵기 때문에, 암호화 시스템의 리버스 엔지니어링은 더 어려워진다.
'제 1 기본 블록'에서의 용어 '제 1'은 다른 기본 블록들로부터 제 1 기본 블록들 구별하기 위해 사용된다는 것에 유의한다. 제 1 기본 블록이 반드시 입력-메시지를 수신하는 기본 블록일 필요는 없다.
언급한 바와 같이, 다수의 암호화 연산들에 대해, 화이트-박스 구현을 갖는 것이 요구된다. 본 발명은 예를 들어, 대칭 및 비대칭 암호화 연산들에 적용될 수 있다. 또한, 본 발명은 블록 암호들, 스트림 암호들, 메시지 인증 방식들, 서명 방식들 등에 적용될 수도 있다. 본 발명이 해시 함수에 또한 적용될 수도 있다는 것에 유의한다. 후자는 특히, 해시 함수가 예를 들면 비밀키, 비밀 데이터 등과 같은 비밀 정보를 프로세싱하는 빌딩 블록으로서 사용되는 경우에 유용한다. 예를 들어, 본 발명은 키-해시 메시지 인증 코드(HMAC 또는 KHMAC)에서 사용된 해시 함수에 적용될 수 있다. 널리 공지된 블록 암호들은: 어드밴스드 암호화 표준(AES), 보안 및 고속 암호화 루틴(SAFER, 및 변형 SAFER+ 및 SAFER++), Blowfish, 데이터 암호화 표준(DES) 등을 포함한다. 널리 공지된 스트림 암호가 RC4이다. 또한, 임의의 블록 암호가 연산의 적절한 모드를 사용하는 스트림 암호, 예를 들어, 암호 피드백(CFB), 카운터 모드(CTR) 등으로서 사용될 수 있다.
입력 메시지는 오디오 및/또는 비디오 데이터를 포함하는, 멀티미디어 데이터와 같은 예를 들어, 암호화된 콘텐츠 데이터를 표현할 수 있다. 암호화된 콘텐츠 데이터는 또한, 암호화된 소프트웨어, 예를 들어, 몇몇 컴퓨터 애플리케이션, 예를 들어, 컴퓨터 게임, 또는 오피스 애플리케이션을 표현하는 암호화된 컴퓨터 코드를 포함할 수도 있다. 입력 메시지는 또한, 다른 암호화 연산에서 사용하기 위한 키를 표현할 수도 있다. 후자는 예를 들어, 본 발명에 따른 화이트-박스 구현이 새로운 키를 표현하는 데이터를 암호화하고/하거나 복호화하는 키 교환 프로토콜에서 사용될 수도 있다. 입력 데이터는 또한, 플레인(plain) 데이터, 예를 들어, 플레인 사용자 데이터일 수도 있다. 후자는 특히, 메시지 인증 방식들에서 바람직하다. 본 발명에 따른 화이트-박스 구현은, 그 구현이 암호화 및 복호화 양자를 위해서가 아니라 암호화를 위해서만, 복호화를 위해서만 사용될 수도 있다는 특성을 가질 수도 있다. 예를 들어, 예를 들어, 이러한 특성은, 구현이 전단사가 아닌 룩-업 테이블들, 예를 들어, 출력 비트들보다 더 많은 입력 비트들을 갖는 룩-업 테이블들을 사용하는 경우에 달성될 수 있다. 따라서, 사용자가 화이트-박스 복호기(decryptor)만을 가지면, 사용자는 새로운 MAC들을 생성하지 않고 MAC 코드를 검중할 수도 있다. 이것은 이러한 메시지 인증 방식의 부인 방지(non-repudiation) 특성들을 강화시킨다.
블록들 중 몇몇이 이전의 블록 중 하나 이상의 출력들을 구축한다는 의미에서, 복수의 기본 블록들이 상호접속된다. 기본 블록은 하드웨어, 예를 들어, 컴퓨터 칩에서 구현될 수도 있다. 기본 블록은 컴퓨터 하드웨어에서 함수들을 구현하기 위해 스위치 보드, 상태 머신 또는 임의의 다른 적합한 구성을 사용할 수 있다. 기본 블록은 또한, 범용 컴퓨터 칩, 예를 들어, 마이크로프로세서상에서 구동하는 소프트웨어에서 구현될 수도 있다. 예를 들어, 기본 블록은 기볼 블록의 기능을 함께 구현하는 산술 명령들을 포함하는 복수의 컴퓨터 명령을 사용할 수 있다. 소프트웨어 및 하드웨어 양자에서 사용될 수도 있는 기본 블록에 대한 바람직한 구현이 룩-업 테이블이다. 룩-업 테이블 구현은, 가능한 입력값들에 대해 출력값을 리스트하는 리스트를 포함한다. 입력값은 룩업 테이블에서 명시적일 수도 있다. 이러한 상황에서, 룩-업 테이블 구현은 특정한 입력에 대한 입력값들의 리스트에서 탐색함으로써 특정한 입력을 특정한 출력에 매핑할 수 있다. 특정한 입력이 발견되면, 그 후, 특정한 출력이 또한 발견된다. 예를 들어, 특정한 출력은 특정한 입력과 함께 저장될 수 있다. 바람직하게는, 입력값들은 명시적으로 저장되지 않고, 단지 암시적으로 저장된다. 예를 들어, 가능한 입력들이 예를 들어, 번호들 또는 비트-스트링들의 연속 범위이면, 룩-업 테이블은 출력값들의 리스트를 저장하는데 제한될 수도 있다. 특정한 입력 번호는 예를 들어, 그 번호에 의해 표시된 위치에 저장되는 특정한 출력에 매핑될 수 있다.
예를 들어, 함수에 대한 룩업 테이블은 그것의 가능한 입력들에 대한 함수의 출력값을 계산하고 출력들을 리스트에 저장함으로써 생성될 수 있다. 함수가 다중의 입력들에 의존하면, 출력들은 다중의 입력들의 모든 가능한 조합들에 대해 계산되고 저장될 수 있다. 룩-업 테이블은 특히, 불규칙적인 방식으로 입력들을 출력에 매핑하는 비선형 함수들을 구현하는데 적합하다. 화이트-박스 구현은, 룩-업 테이블들 중 하나 이상에 고정된 오퍼스케이팅 입력 인코딩 및 고정된 출력 인코딩들을 적용함으로써 후술하는 바와 같이 더 오퍼스케이팅될 수 있다. 그 후, 고정된 오퍼스케이팅 입력 인코딩 및 출력 인코딩들을 적용한 결과들이 완전하게 사전-평가된다. 이러한 기법을 사용하여, 룩-업 테이블은 동일한 수의 입력 비트들을 취하고 동일한 수의 출력 비트들을 생성하는 동일한 치수들을 갖는 오퍼스케이팅된 룩-업 테이블에 의해 대체된다. 이러한 오퍼스케이션에서 사용된 입력 인코딩 및 출력 인코딩은 최종 화이트-박스 구현에서 명시적이지 않다. 고정되지 않지만 오히려 선택값에 의존하는 인코딩들을 도입하는 본 발명에서 더 양호한 오퍼스케이션이 달성된다. 여기에 설명된 가변 인코딩은 이롭게 하기 위해 종래의 오퍼스케이션 기법들과 결합될 수 있고, 이것은 이들이 함께 암호화 연산의 내부 작업들을 더 모호하게 하기 때문인 것에 유의한다.
기본 블록들의 네트워크는 입력 메시지와 함께 제공될 때 출력 메시지를 계산하도록 구성된다. 통상적으로, 입력 메시지는 다수의 기본 입력 블록들에 의해 동작된다. 다수의 다른 기본 블록들은 기본 입력 블록들 중 하나 이상 및/또는 입력으로부터의 입력을 취할 수 있다. 또 다른 기본 블록들이 입력 메시지, 기본 입력 블록들의 출력 및 다른 기본 블록들의 출력의 임의의 조합에서 입력을 취할 수 있다. 최종적으로, 기본 진출(exit) 블록들 중 몇몇 세트, 즉, 적어도 하나가 출력으로서 출력-메시지의 모두 또는 일부를 생성한다. 이러한 방식에서, 입력 메시지로부터 출력 메시지로의 매핑을 일괄 계산하는 기본 블록들의 네트워크가 나타난다.
바람직하게는, 사용된 키는 암호화 키이고, 바람직하게는, 예상된 무차별 대입 공격(brute force attack)에 견디기 위한 충분한 엔트로피를 포함한다. 화이트-박스 구현에서, 바람직하게는 키가 그 구현에서 명시적으로 제공되지 않는다는 것에 유의한다. 이것은 구현의 검사에 의해 키가 발견되는 위험이다. 바람직하게는, 키는 단지 암시적으로만 제공된다. 암호화 시스템에 키를 은닉하는 다양한 방식들이 알려져 있다. 바람직하게는, 적어도 부분 평가의 방법이 사용되고, 여기서, 키 입력을 필요로 하는 기본 블록이 입력-메시지에 의존하지 않는 한 평가된다. 예를 들어, 입력값, 입력-메시지에 의존하지 않는 마스킹값, 예를 들어, s-박스로부터의 값, 및 키-값이 배타적논리합(xor)될 필요가 있는 기본 연산이, 키값 및 마스킹값을 사전에 함께 xor함으로써 부분적으로 평가될 수 있다. 이러한 방식으로, 연산은 키-값이 구현에서 명시적으로 제공되지 않더라도 키-값에 여전히 의존한다. 대신에, 키-값과 마스킹-값 사이의 xor만이 구현에 존재한다. 키들을 은닉하는 더욱 복잡한 방식들 및/또는 다른 방식들이 본 발명과 호환가능하다는 것에 유의한다.
다양한 인코딩 방식들이 본 발명과 사용될 수 있다. 인코딩 방식은 데이터값을 표현하는 새로운 방식을 제공한다. 인코딩 방식은 단사함수(injective)이다. 바람직하게는, 인코딩은 또한 필요하지 않더라도 전단사(bijective)이다.
선택값은 다양한 방식들에서 계산될 수도 있고, 예를 들어, 선택값은 적절한 하드웨어 또는 소프트웨어를 사용하여, 가능하면, 예를 들어, 룩-업 테이블에서의 하나 이상의 키-의존형 값들로부터 구현에서 다른 값들에 또한 의존하는 입력-메시지로부터 계산될 수도 있다.
제 2 기본 블록은 데이터를 수신하도록 구성되지만, 선택된 인코딩으로 인코딩된다. 인코딩 이후에, 데이터는 인코딩된 형태로 네트워크를 통해 진행한다. 바람직하게는, 제 2 기본 블록은 선택값에 기초하여 구성될 필요가 없다. 즉, 제 2 기본 블록은 선택값의 각 값에 대해 출력값들에 대한 입력값들의 동일한 매핑을 수행할 수도 있다. 선택적으로, 제 2 기본 블록은 인코딩된 데이터에 대한 중간 연산이 실질적으로 없이 인코더의 출력에 대해 직접 연산한다. 그러나, 중간 연산들이 또한 존재할 수도 있다. 특히, 선택된 인코딩 방식에 관한 연산들은 제 2 기본 블록 이전에 수행될 수도 있다. 인코딩 방식에 관한 연산은, 입력값에 대응하는 정확한 출력값을 생성할지라도 인코딩된 입력값만을 수신하지만, 출력값은 또한 인코딩 방식으로 인코딩된다.
예를 들어, 인코딩 방식은 인코더 입력의 동일한 부분들에서 파티션의 상이한 부분들에 대해 독립적이지만 동일한 방식으로 작용할 수도 있다. 파티션의 부분을 치환하는 연속 치환이 인코딩을 고려한다. 예를 들어, 바이트가 서로 독립적인 제 1 및 제 2 니블(nibble)을 인코딩함으로써 인코딩될 수도 있고, 양자는 몇몇 특정한 니블-인코딩 연산을 이용한다. 제 1 및 제 2 니블의 연속 스왑(swap)이 이러한 인코딩을 고려한다.
인코더는 그것의 입력값, 예를 들어, 동일한 암호화 연산의 넌-화이트-박스 구현에서의 값에 대응하는 입력값에 대해 직접적으로 연산할 수 있다. 한편, 일부 오퍼스케이션이 사용될 수도 있고, 예를 들어, 몇몇 타입의 인코딩이 인코더의 입력값, 즉, 제 1 기본 블록의 출력값에 대해 사용될 수도 있다. 제 1 기본 블록의 출력값에 대해 사용된 인코딩은 또한, 다른 값, 예를 들어, 선택값에 의존할 수 있다.
예를 들어, 상기 제 1 블록, 즉, 복수의 기본 블록들 중 상기 제 1 기본 블록은 출력값(
Figure pct00001
)을 생성할 수 있다. 인코더는 선택값(
Figure pct00002
) 및 출력값(
Figure pct00003
)을 입력으로서 취한다. 이들 2개의 입력들로부터, 인코더는 복수의 인코딩 방식들 중
Figure pct00004
번째 인코딩 방식에 따라 인코딩된
Figure pct00005
를 생성할 수 있다. 출력값(
Figure pct00006
)은 다양한 방식들로 인코딩 및/또는 오퍼스케이팅될 수도 있다는 것에 유의한다. 예를 들어, 제 1 기본 블록은 2개의 룩업 테이블들을 포함할 수도 있어서, 값들(
Figure pct00007
Figure pct00008
)을 생성한다. 인코더는 예를 들어,
Figure pct00010
의 연결로서
Figure pct00011
를 복원할 수 있다. 다른 예로서,
Figure pct00012
를 정상 산술 가산, 즉, XOR 가산이 아닌 것으로 하고, 제 1 기본 블록에서의 제 1 엔티티는 제 1 값(
Figure pct00013
)을 생성할 수도 있고, 제 1 기본 블록에서의 제 2 엔티티는 제 2 값(
Figure pct00014
)을 생성할 수도 있다. 이들 2개의 값들로부터, 인코더는 (예를 들어, 제 2 값 및 제 1 값의 산술 감산으로서)
Figure pct00015
및 (예를 들어, 제 1 값 및 제 2 값의 2회의 산술 감산으로서)
Figure pct00016
양자를 복원할 수 있다.
Figure pct00017
가 동일한 키에 대해 암호화 연산의 넌-화이트-박스 구현에서 사용된 값에 대응하면, 본 발명의 암호화 시스템에서의 인코딩 단계 이후에,
Figure pct00018
는 입력에 의존하여 다중의 인코딩 방식들로부터 선택되는 인코딩 방식에 따라 인코딩되어 발생한다.
입력 값이 더욱 가변인 인코딩 방식으로 인코딩되기 때문에, 통상적으로는 제 2 기본 연산 수행 이후에, 제 2 기본 블록의 출력, 즉, 복수의 기본 블록들 중 상기 제 2 기본 블록은 가능하면 상당하게 교란될 것이다. 보상기는 인코딩의 영향을 설명하기 위해 제 2 기본 블록의 출력을 리코딩한다. 인코딩 방식이 선택값에 의존하기 때문에, 선택값에 또한 의존하는 리코딩 방식이 선택된다. 보상기는 또한, 제 2 기본 블록의 출력에 의존하는 중간값을 리코딩할 수 있다. 예를 들어, XOR-네트워크가 제 2 기본 블록과 보상기 사이에 배열될 수 있다.
바람직한 실시예에서, 복수의 인코딩 방식들은 제 2 기본 블록의 셀프-등가(self-equivalent) 인코딩 방식들이다. 선택된 인코딩 방식에 대해, 출력 인코딩 방식이 대응한다. 제 2 블록의 출력값은 출력 인코딩 방식에 따라 인코딩된다. 선택된 리코딩 방식은 출력 인코딩 방식으로부터 다른 인코딩 방식으로 출력값을 리코딩한다.
기본 연산의 셀프-등가 인코딩 방식은 대응하는 출력 인코딩 방식을 갖는다. 셀프-등가 인코딩 방식 및 출력 인코딩 방식의 쌍은, 정확한 출력값이 출력 인코딩 방식으로 그 후에 인코딩되지만, 입력값이 인코딩 방식을 사용하여 인코딩되더라도, 제 2 기본 블록이 입력값에 대응하는 정확한 출력값을 계산하는 특성을 갖는다. 출력 인코딩 방식은 입력 인코딩 방식과는 상이할 수 있다.
바람직한 실시예에서, 인코딩 방식들은 아핀 함수(affine function)들이다. 특히, 인코더가 선택값을 사용하여 선택한 인코딩들이 아핀 셀프-등가 인코딩인 경우가 바람직하다. 아핀 셀프-등가 인코딩을 결정하는 것은, 예를 들어, 이하 Biryukov1으로서 칭하는 Proceedings of Eurocrypt, 2003, pp. 33-50의 A. Biryukov, C. De Canniere, A. Braeken, 및 B. Preneel에 의한 논문 "A Toolbox for Cryptanalysis: Linear and Affine Equivalence Algorithms"에 기재된 바와 같이, 임의의 적합한 방식을 사용하여 행해질 수 있다.
이것은 제 2 기본 블록의 출력이 아핀 함수로 인코딩된다는 것을 암시하기 때문에 아핀 셀프-인코딩을 사용하는 것이 바람직하다. 이하에서, 아핀 인코딩들이 상대적으로 쉽게 어떻게 적용될 수도 있고, 리코딩될 수도 있거나 제거될 수도 있는지가 설명된다. 따라서, 인코딩들이 아핀이면, 큰 오버헤드없이 보상될 수 있다. 예를 들어, 아핀 인코딩은 제 2 블록의 출력이 인코딩되는 연속 아핀 인코딩을 제거함으로써 보상될 수도 있다.
바람직한 실시예에서, 선택값은 복수의 기본 블록들 중 제 1 기본 블록의 출력의 적어도 일부이다. 이것은 단지 약간의 계산적 자원들만을 요구하지만, 내부적으로 사용되는 인코딩들의 다각화(diversification)를 달성한다.
보상기가 인코딩을 보상한 이후에, 보상된 출력은 기본 블록들, 예를 들어, 제 3 기본 블록에 의해 더 연산될 수도 있다. 바람직한 실시예에서, 암호화 시스템은 복수의 인코딩 방식들 중 하나에 따라 복수의 기본 블록들 중 제 3 기본 블록의 출력에 대한 인코딩을 제거하는 디코더를 포함한다.
바람직한 실시예에서, 복수의 기본 블록들은 적어도, 다른 선택된 인코딩 방식에 따라 인코딩된 네트워크를 통해 그것의 입력을 수신하기 위해 배열된 다른 제 2 기본 블록을 포함하고, 보상기는 복수의 리코딩 방식들 중 다른 선택된 리코딩 방식에 따라 다른 인코딩의 영향을 보상하기 위해 다른 제 2 기본 블록의 다른 출력값에 의존하여 다른 중간값을 리코딩하도록 구성되고, 리코딩 방식은 공통 인코딩 방식에 따라 인코딩된 제 1 값으로 중간값을 리코딩하도록 구성되고, 다른 리코딩 방식은 공통 인코딩 방식과 많아야 가산이 상이한 인코딩 방식에 따라 인코딩된 제 2 값으로 다른 중간값을 리코딩하도록 구성된다.
인코딩된 입력을 수신하는 다중의 제 2 블록들의 존재할 수도 있다. 제 2 기본 블록 및 다른 제 2 기본 블록이 통상적으로 상이하기 때문에, 이들은 그들의 입력 인코딩에 상이하게 영향을 미치고, 따라서, 이들 차이들에 대해 상이한 방식들로 보상할 수 있는 보상기를 갖는 것이 이점이다. 또한, 입력들은 동일한 선택된 인코딩들로 인코딩될 수도 있지만, 바람직하게는, 이들은 상이한 선택된 인코딩들에 따라 인코딩된다. 특히, 제 2 기본 블록 및 다른 제 2 기본 블록에 대한 입력들은 바람직하게는, 셀프-등가 인코딩들, 바람직하게는 아핀 인코딩들로 인코딩된다. 상이한 기본 블록들에 대한 셀프 등가 인코딩들의 세트들은 통상적으로 상이하다. 상이한 기본 블록들에 대한 셀프 등가 인코딩들의 세트들은 통상적으로 상이하다. 중간값 및 다른 중간값이 보상된 이후에, 이들이 동일한 공통 인코딩에 따라 인코딩되는 경우가 바람직하다. 이것은 다른 프로세싱을 단순화시킨다. 한편, 인코딩들이 가산까지 동일한 경우가 또한 바람직할 수도 있다. 가산은 인코딩, 리코딩 또는 디코딩 단계의 애플리케이션 동안 가산되는 항이다. 가산의 예가, 아핀 인코딩에서 xor되는 값이다. 바람직하게는, 가산은 미리 결정된다.
예를 들어, 공통 인코딩 방식이 아핀 인코딩 방식이고, 보상에 후속하는 연산이 중간 및 다른 중간값의 xor이면, 가산의 생략은 계산을 단순화한다. 2개의 값까지, 동일한 가산이 xor되고, 이들 2개의 값들이 서로 연속적으로 xor되면, 가산은 취소된다. 그러나, 가산이 값들 중 하나와 오직 xor되고, 다른 값에 대해서는 xor되지 않으면, 가산은 후속 xor에서 취소되지 않는다. 비트들에 대해, xor는 GF(2)에 걸친 가산이라는 것에 유의한다.
본 발명의 다른 양태는 입력-메시지를 출력-메시지에 매핑하는 암호화 연산을 수행하는 암호화 방법이다. 이 방법은 복수의 기본 매핑 연산들을 포함하고, 각각이 입력값을 출력값에 매핑하기 위해 배열되고, 복수개는 암호화 연산을 일괄적으로 수행하기 위해 배열된다. 암호화 방법은, 입력-메시지에 의존하여 복수의 인코딩 방식들 중에서 선택된 인코딩 방식을 선택하는 단계, 및 복수의 기본 매핑 연산들 중 제 1 기본 매핑 연산의 출력값을 선택된 인코딩 방식에 따라 인코딩된 출력으로 인코딩하는 단계로서, 복수의 기본 매핑 연산들 중 제 2 기본 매핑 연산은 적어도 인코더 출력을 입력값으로서 연산하고, 선택값에 의존하여 복수의 리코딩 방식들 중에서 선택된 리코딩 방식을 선택하고, 복수의 리코딩 방식들 중 선택된 리코딩 방식에 따라 인코딩의 영향을 보상하기 위해 제 2 기본 매핑 연산의 출력값에 의존하여 중간값을 리코딩하도록 구성되는, 상기 인코딩 단계를 포함한다.
본 발명의 다른 양태는 증가된 위조 방지를 위한 암호화 연산을 수행하는 시스템을 확립하는 방법이다. 시스템은 복수의 기본 블록들을 포함하고, 각각은 입력값을 출력값에 매핑하기 위해 배열되고, 복수개는 암호화 연산을 일괄적으로 수행하기 위해 배열된다. 이 방법은 복수의 기본 블록들 중 제 1 기본 블록 및 제 2 기본 블록을 식별하는 단계로서, 제 2 기본 블록은 제 1 기본 블록의 출력을 입력으로서 수신하도록 구성되는, 상기 식별하는 단계, 제 1 기본 블록과 제 2 기본 블록 사이에 인코더를 배열하는 단계로서, 상기 인코더는 복수의 인코딩 방식들 중 선택된 인코딩 방식에 따라 제 1 기본 블록의 출력을 인코더-출력으로 인코딩하기 위해 배열되고, 제 2 기본 블록은 인코더-출력을 입력값으로서 수신하도록 구성되는, 상기 인코더를 배열하는 단계, 복수의 리코딩 방식들 중 선택된 리코딩 방식에 따라 인코딩의 영향을 보상하기 위해 제 2 기본 블록의 출력값에 의존하여 중간값을 리코딩하기 위해 제 2 블록 이후에 보상기를 배열하는 단계로서, 상기 보상기는 선택값에 의존하여 복수의 리코딩 방식들 중에서 선택된 리코딩 방식을 선택하도록 구성되는, 상기 보상기를 배열하는 단계를 포함한다.
제 1 기본 블록과 제 2 기본 블록 사이에 인코더를 배열하는 것은, 인코더가 제 1 블록으로부터 입력을 직접 또는 간접 수신하고, 제 2 블록이 인코더로부터 입력을 직접 또는 간접 수신하도록 예를 들어, 기본 소프트웨어 블록들 및/또는 기본 하드웨어 블록들을 배열함으로써 행해질 수 있다. 유사하게는, 제 2 블록 이후에 보상기를 배열하는 것은, 제 2 블록으로부터 입력을 수신하도록 보상기를 배열함으로써 행해질 수 있다.
화이트 박스 암호화가 종종 매우 복잡하고/하거나 오퍼스케이팅하기 때문에, 기록하는 것은 인간에게 지루하다. 따라서, 자동화 방식으로 본 발명에 따른 암호화 시스템을 생성하는 방법을 갖는 것이 바람직하다.
본 발명에 따른 방법은, 컴퓨터 구현된 방법으로서 컴퓨터상에서, 또는 전용 하드웨어에서, 또는 양자의 조합에서 구현될 수도 있다. 본 발명에 따른 방법에 대한 실행가능한 코드는 컴퓨터 프로그램 제품상에 저장될 수도 있다. 컴퓨터 프로그램 제품들의 예들은, 메모리 디바이스들, 광학 저장 디바이스들, 집적 회로들, 서버들, 온라인 소프트웨어 등을 포함한다.
바람직한 실시예에서, 컴퓨터 프로그램은, 그 컴퓨터 프로그램이 컴퓨터상에서 구동될 때 본 발명에 따른 방법의 모든 단계들을 수행하도록 구성된 컴퓨터 프로그램 코드 수단을 포함한다. 바람직하게는, 컴퓨터 프로그램은 컴퓨터 판독가능한 매체상에 구현된다.
따라서, 화이트-박스 암호화 시스템이 제공되고, 여기서, 그 내부값들 중 적어도 하나는 입력 의존형 인코딩을 사용하여 표현된다. 시스템은 암호화 연산을 일괄적으로 수행하기 위해 배열된 복수의 기본 블록들의 네트워크를 포함한다. 인코더가 복수의 기본 블록들 중 제 1 기본 블록의 출력 데이터를 복수의 인코딩 방식들 중 선택된 인코딩 방식에 따라 인코더-출력으로 인코딩하기 위해 배열되고, 상기 선택은 시스템에 대한 입력-메시지에 의존한다. 보상기가 복수의 리코딩 방식들 중 선택된 리코딩 방식에 따라 인코딩의 영향을 보상하기 위해 중간 데이터를 리코딩하도록 구성된다. 고정된 인코딩들 대신에 가변 인코딩들을 사용하는 것은, 화이트-박스 암호화 시스템을 리버스 엔지니어링하는 것을 복잡하게 한다.
이하, 도면들을 참조하여 본 발명의 이들 및 다른 양태들이 설명될 것이다.
본 발명은 입력-메시지를 출력-메시지에 매핑하는 암호화 연산을 수행하는 개선된 암호화 시스템을 제공한다.
도 1은 AES의 라운드에서의 연산들을 예시하는 도면.
도 2는 테이블들을 오퍼스케이트하는 예를 예시하는 도면.
도 3은 화이트-박스 AES 구현에서 컬럼에 대한 라운드를 예시하는 도면.
도 4는 타입Ⅰa 테이블에 통합된 매핑들을 예시하는 도면.
도 5는 타입Ⅱ 테이블에 통합된 매핑들을 예시하는 도면.
도 6은 타입Ⅲ 테이블에 통합된 매핑들을 예시하는 도면.
도 7은 타입Ⅳ 테이블에 통합된 매핑들을 예시하는 도면.
도 8은 타입Ⅰb 테이블에 통합된 매핑들을 예시하는 도면.
도 9는 인코딩을 사용하는 화이트 박스 구현을 예시하는 도면.
도 10은 인코딩을 예시하는 도면.
도 11은 실시예를 예시하는 도면.
AES는 128비트 또는 16바이트의 블록 사이즈를 갖는 블록 암호이다. 평문은 인코딩 알고리즘의 초기 상태를 형성하는 16바이트의 블록들로 분할되고, 인코딩 알고리즘의 최종 상태는 암호문이다. AES를 개념적으로 설명하기 위해, 상태의 바이트들은 4×4 바이트의 매트릭스로서 구성된다. AES는 다수의 라운드들로 이루어진다. 각 라운드는 상태 매트릭스의 바이트들, 로우들, 또는 컬럼들상에서 동작하는 유사한 프로세싱 단계들로 구성되고, 각 라운드는 이들 프로세싱 단계들에서 상이한 라운드 키를 사용한다.
도 1은 AES의 라운드의 몇몇 메인 프로세싱 단계들을 예시한다. 프로세싱 단계들은:
- AddRoundKey2 - 각각의 상태의 바이트가 라운드 키의 바이트와 XOR된다.
- SubBytes4 - 룩업 테이블을 사용한 바이트-바이트 치환.
- ShiftRows6 - 상태의 각 로우는 고정 수의 바이트 회전된다.
- Mixcolumns8 - 각 컬럼은 GF(28)에서 모듈로 승산을 사용하여 프로세싱된다.
을 포함한다.
단계들(SubBytes4, ShiftRows6, 및 Mixcolumns8)은 사용된 특정한 키와 독립적이다. 키는 단계(AddRoundKey2)에 적용된다. 단계(ShiftRows6)를 제외하고, 프로세싱 단계들은 다른 컬럼들의 지식없이 4×4 상태 매트릭스의 각 컬럼에 대해 수행될 수 있다. 따라서, 이들은 4개의 8-비트값들로 이루어진 각 컬럼과 같은 32-비트 연산들로서 간주될 수 있다. 점선(10)은, 프로세스가, 요구된 수의 라운드들이 수행될 때까지 반복된다는 것을 나타낸다.
이들 단계들 각각 또는 단계들의 조합은 룩업 테이블 또는 룩업 테이블들(S-박스들)의 네트워크에 의해 표현될 수도 있다. AddRoundKey 단계가 라운드 키와의 XOR에 의해 구현되었으면, 키는 화이트-박스 공격 컨텍스트에서 공격자에게 가시적이다. AddRoundKey 단계는 또한 룩업 테이블들에 포함될 수 있고, 이것은 키를 찾는 것을 덜 명백하게 한다. 사실, AES의 전체 라운드를 룩업 테이블들의 네트워크로 대체하는 것이 가능하다. 예를 들어, SubBytes, ShiftRows, 및 MixColumns 단계들은 테이블 룩업을 사용하여 구현될 수도 있다. 아래에서, AES의 가능한 화이트-박스 구현을 더욱 완전하게 논의할 것이다.
도 2는 키를 추출하는 것을 더욱더 어렵게 만드는 방식을 예시한다. AES와 같은 암호화 연산이 기본 연산들의 네트워크로 변환된 이후에, 다른 오퍼스케이션이 가능하다. X 및 Y를 2개의 함수들, 즉, 기본 연산들로 한다. 다이어그램 12로서 예시된, 합성 연산
Figure pct00019
을 고려하고, 즉, 합성 연산을 획득하기 위해, Y는 X 이후에 수행된다. 여기서, c는 입력값, 예를 들어, 4-바이트 상태 컬럼이다. 그러나, 방식은 임의의 타입의 입력값(c)에 적용한다. X 및 Y의 매핑이 메모리에 저장될 수 있는 룩-업 테이블들로서 구현될 수 있지만, 이들이 메모리에 저장될 때, 값들은 공격자에 의해 판독될 수 있다. 다이어그램 14는 룩-업 테이블들의 콘텐츠들이 입력 인코딩(F) 및 출력 인코딩(H)을 사용하여 어떻게 오퍼스케이팅될 수 있는지를 예시한다.
Figure pct00020
Figure pct00021
에 대응하는 룩-업 테이블들이 X 및 Y 대신에 예시된 바와 같이 저장되고, 이것은 X 및 Y를 추출하는 것을 더욱 어렵게 만든다. 다이어그램 16은, 2개의 테이블들의 중간 결과가 또한 인코딩되도록, 추가의 예를 들어, 랜덤한 전단사 함수(G)를 어떻게 가산하는지를 나타낸다. 이러한 경우에서, 2개의 테이블들은 메모리에 저장되고:
Figure pct00022
Figure pct00023
이다. 이것은 다이어그램 18:
Figure pct00024
에 다시 한번 예시되고, 여기서,
Figure pct00025
는 일반적인 함수 합성을 나타내고(즉, 임의의 2개의 함수들
Figure pct00026
Figure pct00027
에 대해, 정의에 의해
Figure pct00028
), X 및 Y는 룩-업 테이블들에 의한 구현에 적합한 함수들이다. 유사하게, 2개 이상의 함수들로 이루어진 네트워크가 인코딩될 수 있다. X 및 Y를 인코딩하는 실제 테이블들은 단일 룩-업 테이블에서
Figure pct00029
을 결합하고 단일 룩-업 테이블에서
Figure pct00030
을 결합함으로써 오퍼스케이팅된다. F, G, 및/또는 H가 미지로 남아 있는 한은, 공격자는 룩-업 테이블들로부터 X 및/또는 Y에 관한 정보를 추출할 수 없고, 따라서, 공격자는 X 및/또는 Y에 대한 기본인 키를 추출할 수 없다. (AES가 특정한 예시인) DES 및 Rijndael을 포함하는 다른 암호화 알고리즘들이, 상기와 유사한 방식으로 오퍼스케이팅될 수 있는 룩-업 테이블들(의 캐스케이드 또는 네트워크)로서 또한 인코딩될 수 있다. 본 발명은 언급된 예시적인 암호화 알고리즘들에 제한되지 않는다.
Chow 1은 개별 단계들 보다는 오히려 합성들을 나타내는 랜덤 전단사들로 테이블들을 인코딩함으로써 키를 은닉하려는 방법을 개시한다. 비밀-키 추출을 방지하는 것은, 소프트웨어 보호 목적이 다른 머신들상에서 바이패스되게 허용하는 키잉 자료를 공격자가 추출하는 것을 방지하거나, 설치된 소프트웨어의 큰 사용자-베이스에 걸쳐 보안 수단을 파괴하는 '글로벌 크랙들(global cracks)'을 실제로 생성하는 키잉 자료를 공격자가 공개하는 것을 방지한다는 이점을 갖는다. 이것은 소프트웨어 전용 솔루션 및 적대적 호스트 현실이 제공되면 증가된 보호도를 제공한다. Chow 1의 방식에서, 키는 (1) 개별 단계들보다는 오히려 합성들을 위해 테이블들을 사용하고; (2) 랜덤한 전단사들로 이들 테이블들을 인코딩하고; (3) 수용 애플리케이션으로 더 멀리 암호 알고리즘 자체를 넘어 암호화 경계를 연장하고(이것은 공격자들(리버스 엔지니어들)로 하여금 그들의 목적들을 달성하기 위해 상당히 더 큰 코드 세그먼트들을 이해하도록 강요하므로써) 은닉된다. Chow 1은 고정된 키 방식을 논의하고; 키(들)는 키(들)에 관한 부분 평가에 의한 구현에 포함되어서, 키 입력은 불필요하다. 부분 평가는, 키를 수반하는 표현들이 가능한 한 매우 합리적으로 평가된다는 것을 의미하고, 그 결과는 전체 표현들보다는 코드에 삽입된다.
가능한 공격-시나리오는, 공격자가 키-특정 구현을 추출하여, 키 대신에 그것을 사용하는 것이다. 이러한 문제점은, 대형 수용 시스템의 컴포넌트로서 기능하도록 맞춤제작된 키-특정 구현을 설계함으로써 완화될 수 있다. 대형 시스템은 조작되거나 인코딩된 형태의 입력을 컴포넌트에 제공하도록 배열될 수 있다. 키-특정 구현이 공격자에 의해 제거되고 상이한 대형 시스템에 삽입될 때, 키-특정 구현은, 상이한 대형 시스템이 키-특정 구현에 의해 예상된 조작된 형태의 입력을 제공하지 않을 것이기 때문에 적절하게 기능하지 않을 것이다.
인코딩 테이블들의 단계를 참조하면, 인코딩들은 임의적이기 때문에, 결과들은, 하나의 단계의 출력 인코딩이 다음의 입력 인코딩과 매칭하는 경우에만 의미가 있다. 예를 들어, 단계 X에 뒤이어 단계 Y가 후속하면(
Figure pct00031
의 계산을 발생시킴), 계산은,
Figure pct00032
로서 인코딩될 수 있다.
입력이 F로 인코딩될 필요가 있고, 출력이
Figure pct00033
으로 디코딩될 필요가 있더라도, 이러한 방식(
Figure pct00034
)은 적절하게 계산된다. 단계들은 Y' 및 X'에 대응하는 테이블들로서 개별적으로 표현되어서, F, G, 및 H 뿐만 아니라 X 및 Y가 은닉된다.
이러한 혼잡한 단계들을 벗어나, Chow 1은 기반 연산들을 더 위장하기 위해 선형 변환들에 의한 확산 단계들을 사용한다. 용어 믹싱 전단사는, 상기 관점에서 사용된 선형 전단사를 설명하기 위해 사용된다. Chow 1의 구현은 조작된 형태의 입력을 취하고, 상이하게 조작된 형태의 출력을 생성하여, 화이트-박스 AES 구현을 그것의 수용 애플리케이션으로부터 분리하는 것을 어렵게 만든다.
Chow 2는 프로그램으로부터 비밀키들을 추출하려는 화이트-박스 공격에 견디도록 설계된 DES의 암호화 구현을 논의한다. 룩-업 테이블 네트워크들의 오퍼스케이팅에 관하여 이러한 논문에서 논의된 기법들은, AES 및 다른 것들을 포함하는 다른 암호화 알고리즘에 많은 부분을 또한 적용한다. 실행 환경을 제어하는 공격자가 키를 명시적으로 추출하지 않고 소프트웨어 자체(예를 들어, 복호화에 대해)를 명백하게 사용할 수 있지만, 공격자가 근처의 설치된 인스턴스를 사용하게 강제하는 것은, 디지털 저작권 관리(DRM) 시스템들 제공자에게 종종 가치가 있다. 일반적으로, Chow 2에서의 방식은, 어느 것도 아핀 변환들을 구현하지 않는 대체 박스들로 전체적으로 이루어진 구현을 위해 노력하는 것이다. Chow 2에 기재된 다수의 기법들은 일반적인 방식을 지원한다. 이들 기법들 중 몇몇이, I/O-블록 인코딩, 결합된 함수 인코딩, 바이-패스 인코딩, 스플릿-경로 인코딩, 및 출력 스플리팅이다.
부분 평가는, 구현시에 (부분적으로) 알려진 값들에 기초한 표현들이 사전 평가된다는 것을 의미한다. 간략한 예에서, 키가 '5'이고, 원래 구현이 표현 '2*키'를 포함할 때, 구현에 '2*5'를 포함하기 보다는, 사전 평가된 표현 '10'이 구현에 삽입된다. 이러한 방식으로, 키 '5'는 코드에 직접 제공되지 않는다. 고정 키를 갖는 DES의 경우에서, 이것은 표준 S-박스들을 예를 들어, 편집 시간에 또는 이전에 키로부터 계산된 키-특정 사전 평가된 S-박스들로 대체하는 것을 수반한다. Chow 2에 따른 믹싱 전단사는, 각 출력 비트가 다수의 입력 비트들에 의존하도록 설계된 전단사 선형 변환이다. I/O 블록 인코딩은 다수의 입력 및 출력 비트를 처리하는 인코딩 방법이다. 이러한 경우에서, 인코딩/디코딩은 인코딩들의 연결로서 형성될 수 있고, 여기서, 각 인코딩은 입/출력 비트들의 서브세트를 처리한다. 결합된 함수 인코딩은, 2개 이상의 연산들이 병렬로 프로세싱될 수 있는 경우에, 단일 인코딩 함수가 병렬 연산들의 입력들(각각 출력들)의 연결에 적용된다. 이것은 다소간 거의 I/O-블록 인코딩의 반대이다. 바이-패스 인코딩은, 인코딩 변환이 오퍼스케이팅될 변환의 입력 및/또는 출력에 엔트로피의 다수의 과잉 비트들을 가산하고, 과잉 비트들이 절차의 최종 출력에 영향을 미치지 않도록 과잉 비트들을 "바이-패스"하기 위해 오퍼스케이팅될 변환을 재설계한다는 것을 의미한다. 스플릿-경로 인코딩은, 함수가 본질적 정보 비트들을 오퍼스케이팅하기 위해 추가의 출력 비트들을 제공하도록 변경된다는 것을 의미한다. 출력 스플리팅은, 함수의 출력이 여러 부분 함수들에 걸쳐 분포된다는 것을 의미하고, 여기서, 모든 부분 함수들의 출력은 함수의 원래의 출력을 획득하기 위해, 바람직하게는 명백하지 않은 방식으로 결합되어야 한다.
Chow 2는 대략, 32비트 또는 심지어 96비트의 광범위한 입력으로 S-박스들을 구성하기 위해 인코딩된 네트워크들의 구축을 제안한다. 이러한 광범위한 입력 S-박스는, 더 좁은 입력 및 출력을 각각 갖는 S-박스들의 네트워크로 분할되고; S-박스들 각각은 S-박스에 인코딩 함수를 통합함으로써 인코딩된다. 인코딩 함수의 인버스는 S-박스의 출력을 프로세싱하는 S-박스에 통합된다.
설명의 명확성을 개선하기 위해, 이러한 AES 경우에서, 블록 암호의 가능한 화이트-박스 구현을 먼저 설명할 것이다. 아래에서, 이러한 구현이 갖는 문제점을 나타낼 것이고, 이것이 어떻게 정정될 수도 있는지를 나타낼 것이다. 본 발명이 해결하고자 하는 문제점은 아래에 제공된 특정한 구현에 제한되지 않고, 일반적으로 화이트-박스 구현에 고유하다. 알려진 화이트-박스 구현들에 대한 더욱 상세를 위해, Chow 1, 특히, 섹션 2.2 내지 섹션 3.6을 참조한다.
화이트-박스 AES 구현은 아래와 같이 약술될 수 있다. AES 암호화 및 복호화 알고리즘에 대한 입력은 단일 128-비트 블록이다. 이러한 블록은 16바이트로 구성된 4×4 매트릭스에 의해 표현된다. 일반적으로, AES는 AES-128에 대해 10개 라운드들로 구성된다. 각 라운드는 AES의 상태를 형성하는 16 바이트의 세트를 업데이트하여서, 각 AES 라운드는 128 비트를 프로세싱한다. AES-128은 128 비트의 키를 사용한다. 이러한 키는 키를 128 비트의 상이한 라운드 키들로 변환하는 알고리즘에 대한 입력으로서 작용한다. 기본 라운드는 4개의 부분:
- SubBytes
- ShiftRows
- MixColumns
- AddRoundKey
로 이루어진다.
연산의 이러한 순서는 AES 암호화에 적용된다. AES 암호화에서의 연산의 표준 순서가 상이하지만, AES 암호화와 동일한 연산의 순서를 갖도록 AES 복호화 알고리즘을 다시 쓰는 것이 가능하다.
제 1 라운드 이전에, 여분의 AddRoundKey 연산이 발생하고, 라운드 10으로부터, MixColumns 연산이 생략된다. 키를 사용하는 부분만이 AddRoundKey이고, 다른 3개의 부분들은 키로 아무것도 할 수 없다. 구현에서, 라운드들의 경계들은 다음 라운드의 AddRoundKey 단계 및 SubBytes 단계를 하나의 단계로 통합하기 위해 변경된다. 라운드는 AddRoundKey 및 SubBytes로 시작하고, ShiftRows 및 최종으로는 MixColumns가 후속한다.
먼저, 키는 SubBytes 단계 및 AddRoundKey를 함께 하나의 단계로 구성함으로써 은닉된다. 이것은 키가 스스로 더 이상 가시적이지 않게 만든다. 키가 미리 알려지기 때문에, 키를 수반하는 연산은 사전 평가될 수 있다. 이것은, 단계 SubBytes에서 사용되는 표준 S-박스들이 키-특정 S-박스들로 대체될 수 있다는 것을 의미한다. AES-128의 키-특정 인스턴스들을 생성하기 위해, 키는 아래와 같이,
Figure pct00035
규정되는 16개 8×8(즉, 8-비트 입력, 8-비트 출력) 룩업 테이블들(
Figure pct00036
)을 생성함으로써 SubBytes 변환으로 통합되고, 여기서, S는 AES S-박스(인버터블 8-비트 매핑)이고,
Figure pct00037
는 라운드 r에 대핸 라운드 키를 표현하는 4×4 매트릭스의 위치(i,j)에서의 AES 서브-키 바이트이다. 이들 T-박스들은 이전의 라운드의 AddRoundKey 단계와 SubBytes 단계를 구성한다. 라운드 10 T-박스들은 아래와 같이,
Figure pct00038
포스트-화이트닝(post-whitening) 키를 흡수하고, 여기서, sr(i,j)는 ShiftRows 단계 이후의 셀 i,j의 새로운 위치를 나타낸다. T-박스들의 총 수는 10×16=160이다. 그러나, 키는 S-1이 공개적으로 알려져 있기 때문에 T-박스들로부터 쉽게 복원될 수 있다. 이것은 추가의 인코딩들을 필요하게 만든다.
선형 변환들은 T-박스들에 대한 입력들을 분산하기 위해 사용된다. 이들 선형 변환들을 믹싱 전단사들이라 칭하고, GF(2)에 걸쳐 8×8 매트릭스들로서 표현될 수 있다. 믹싱 전단사들은 그들의 영향을 제거하기 위해 초기의 계산에 의해 인버팅된다.
도 3은 (ShiftRows 이후) 상태의 하나의 32-비트 컬럼에 대한 화이트-박스 AES의 라운드에 수반된 테이블들을 예시한다. 상이한 타입의 테이블들의 명칭들이 여기에 도입된다. 이하, 이들은 더욱 상세히 논의된다. 라운드들 이전에, 128-비트 상태의 각 바이트가 각각의 타입Ⅰa 테이블에 적용된다. 이것은 4개의 32-비트값들로 분할되는 128-비트 출력을 제공하기 위해 타입Ⅳ 테이블들의 네트워크를 사용하여 XOR되는 각각의 128-비트값들을 발생시킨다. 각 32-비트값의 프로세싱 단계들이 여기에 개요된다. 32-비트값의 4 바이트는 4개의 각각의 타입Ⅱ 테이블들(20)에 대한 입력이다. 4개의 각각의 타입Ⅱ 테이블들(20) 각각은 32-비트 출력을 발생시킨다. 이들 출력들은 타입Ⅳ 테이블들(22)을 사용하여 비트와이즈 XOR(bitwise XOR)된다. 각 타입Ⅳ 테이블(22)은 4-비트 비트와이즈 XOR를 수행한다. 타입Ⅳ 테이블들의 입력들 및 출력들을 적절하게 연결함으로써, 4개의 32-비트 출력들의 비트와이즈 XOR는 당업자에 의해 이해되는 바와 같이 실현될 수 있다. 이러한 단계의 결과가 32-비트값이다. 이러한 값의 4 바이트 각각은 각각의 타입Ⅲ 테이블(24)에 적용된다. 각 타입Ⅲ 테이블은 32-비트 출력을 제공한다. 이들 출력들은 다시, 타입Ⅳ 테이블들(22)의 네트워크와 유사한 타입Ⅳ 테이블들(26)의 네트워크를 사용하여 비트와이즈 XOR된다. 출력은 상태의 컬럼을 나타내는 32-비트값이다. 이것은 각 라운드에 대해 반복된다.
라운드가 4개의 32-비트값 각각에 대해 수행된 이후에, 출력들은 128-비트값으로 결합된다. 128-비트값의 각 바이트는 타입Ⅰb 테이블에 적용되고; 결과들은 타입Ⅳ 테이블들의 네트워크를 사용하여 XOR된다.
도 4는 타입Ⅰa 테이블(100)을 예시한다. 도 5는 타입Ⅱ 테이블(200)을 예시한다. 도 6은 타입Ⅲ 테이블(300)을 예시한다. 도 7은 타입Ⅳ 테이블(400)을 예시한다. 도 8은 타입Ⅰb 테이블(500)을 예시한다.
믹싱 전단사가 아래와 같이 사용된다. AES 상태는 바이트로 이루어진 4×4 매트릭스에 의해 표현된다. MixColumns 단계가 컬럼(4개의 8-비트 셀들)상에서 동시에 동작한다. 32×32 매트릭스 MC를 고려한다. 이것이 테이블에 의해 표현되면, 이러한 테이블은 232×32=137438953472비트=16GB를 소모한다. 이러한 대형 테이블들을 회피하기 위해, 매트릭스는 4개의 섹션으로 블록화된다.
MC는 4개의 32×8 섹션들(MC0, MC1, MC2, MC3)으로 블록화된다(블록 208). MC에 의한 32-비트 벡터
Figure pct00039
의 승산은 x의 비트들을 4개의 바이트들로 분할하고, MC의 섹션들 각각을 바이트들 중 하나와 승산함으로써 행해져, 4개의 32-비트 벡터
Figure pct00040
를 산출한다. 이것에는 최종 32-비트 결과(z)를 제공하는 3개의 32-비트 XOR가 후속한다. 4개의 테이블들은 함께, 4×28×32=32768비트=4KB를 소모한다.
3개의 XOR들은 24개의 4-비트 XOR로 분할될 것이며, 각각은 아마 인코딩된 룩업 테이블에 의해 표현되고, 적합한 연결(예를 들어,
Figure pct00041
Figure pct00042
Figure pct00043
)을 갖고, 여기서
Figure pct00044
는 연결을 나타내고, +는 XOR를 나타낸다. 이들 스트립들 및 서브분할된 XOR들을 사용함으로써, 각 단계는 작은 룩업 테이블에 의해 표현된다. 특히, i=0, ..., 3에 대해, zi는 8×32 비트 테이블들을 사용하여 계산된다. 8×32 비트 테이블은 8-비트 입력 및 32-비트 출력을 갖는다. 이러한 테이블은 각각 32 비트의 28 출력값들을 리스팅함으로써 구현될 수도 있다. 4-비트 XOR들은 24개의 8×4 비트 테이블들이 된다. 도 7은 입력 디코딩(402) 및 출력 인코딩(406)이 어떻게 XOR들(404) 주위에 놓일 수 있는지를 예시한다. 이들 인코딩들은 일반적으로 랜덤하게 선택된 비선형 4×4 전단사들이다. XOR 테이블들은 타입Ⅳ 테이블들(400)로 칭해진다. 타입Ⅳ 테이블들은 2개의 이전의 계산 각각으로부터 4비트를 입력으로서 취한다. 이들 계산들의 출력 인코딩들(212)은 서로를 제거하기 위해 타입Ⅳ 테이블들에 대한 입력 디코딩들(402)과 매칭된다. 4×4 비선형 전단사들에 대한 선택은 테이블들의 사이즈에 의존한다. 이러한 상황에서, 타입Ⅳ 테이블은 단지 28×4 비트=128 바이트이다. 3KB를 함께 소모하는 24개 테이블들이 필요하다. XOR가 분할되지 않으면, 32-비트 XOR를 계산하는 3개의 XOR 테이블들이 필요할 것이다. T-박스들(206) 및 8×32 비트 테이블들(208)은 개별 룩업 테이블들로서 표현될 수 있다. 대신에, 이들은 MixColumns의 일부 뿐만 아니라 SubBytes 및 AddRoundKey 변환을 계산하는 새로운 8×32 비트 테이블들(200)을 생성하여 구성될 수 있다. 이것은 (T-박스를 저장하기 위한) 공간 및 (테이블 룩업들을 수행하기 위한) 시간 양자를 세이빙한다.
상기와 같이 MCi로 MC를 스플리팅하기 이전에, MC는 풀 랭크의 4×4 서브-매트릭스들을 갖는 비특이 매트릭스로서 선택된, 참조 부호 210에서 도 5에 예시적인 표시된 32×32 믹싱 전단사(MB)에 의해 좌측-승산될 것이다. 믹싱 전단사의 사용은, 특정한 테이블에 대한 가능한 구성들의 수를 증가시킨다.
도 5는 4×4 입력 디코딩들(202) 및 4×4 출력 인코딩들(212)을 포함하는 8×32 타입Ⅱ 테이블(200)을 예시한다. 이들 출력 인코딩들 및 입력 디코딩들은 타입Ⅳ 테이블들(400)의 입력 디코딩들 및 출력 인코딩들에 매칭해야 하는 비선형 4×4 전단사들이다. 타입Ⅱ 테이블들(200)에는 타입Ⅳ 테이블들(400)이 후속한다. MB를 인버트하기 위해, 테이블들의 여분의 세트가 MB-1을 계산하기 위해 사용된다.
Figure pct00045
를 MixColumns에 대한 입력으로 하고,
Figure pct00046
를 MixColumns 이후의 출력으로 한다.
Figure pct00047
를 MB와의 승산 이후의 결과로 한다.
Figure pct00048
는 타입Ⅲ 테이블들(300)에 대한 입력으로서 작용한다. 입력 디코딩들 및 출력 인코딩들이, 테이블의 출력 인코딩이 다음 테이블의 입력 디코딩에 의해 제거되기 때문에 여기에서 고려될 필요가 없다는 것을 주의하라. 타입Ⅲ 테이블들(300)에서, 다음 라운드의 4개의 타입Ⅱ 테이블들(200)의 4개의 입력 믹싱 전단사들(204)의 인버스(308) 및 MB-1이 적용된다(304).
도 6은 4×4 비선형 입력 디코딩들 및 4×4 비선형 출력 인코딩들을 포함하는 8×32 타입Ⅲ 테이블(300)을 예시한다. 이들 테이블들에는 대응하는 타입Ⅳ 테이블들(400)이 후속한다.
데이터 연산들의 하나의 라운드가 128-비트 상태 매트릭스에 대한 연산을 수반한다. 128-비트 상태 매트릭스의 32비트의 4개의 스트립들 각각에 대해 수행된 데이터 연산들은 다음과 같다. 32-비트 스트립은 4개의 8-비트 바이트들로 분할된다. 4개의 바이트들 각각은 개별 타입Ⅱ 테이블(200)로 공급되어, 4개의 32-비트 출력값들을 발생시킨다. 이들 값들은 오퍼스케이팅된 타입Ⅳ 테이블들(400)을 사용하여 XOR되어야 한다. 이러한 목적을 위해, 각 32-비트 출력값이 8개의 4-비트 니블들로 분할되고, 니블들의 적합한 쌍들이 각각의 타입Ⅳ 테이블들로 입력되어, 4개의 32-비트 출력값들의 XOR가 인코딩된 형태로 획득된다.
이러한 32-비트 결과적인 인코딩된 XOR된 결과는 다시 바이트로 분할되며, 각 바이트는 개별 타입Ⅲ 테이블(300)로 입력된다. 타입Ⅲ 테이블들의 각 니블의 입력 디코딩은 최종 적용된 타입Ⅳ 테이블들의 출력 인코딩에 대응한다. 타입Ⅲ 테이블들은 다시, 오퍼스케이팅된 타입Ⅳ 테이블들(400)을 사용하여 다시 XOR되는 4개의 32-비트 출력값을 발생시킨다.
요약하면, 라운드들은 룩업 테이블들에 의해 구현된다. 단일 라운드의 룩업 테이블들은 다음과 같이 네트워킹된다. 데이터는 타입Ⅱ 테이블들로 공급된다. 이들 테이블들의 출력은 인코딩된 XOR들을 나타내는 타입Ⅳ 테이블들의 네트워크에 공급된다. 이러한 네트워크의 출력은 타입Ⅱ 테이블들에 의해 삽입되는 믹싱 전단사 인코딩을 소거하는 타입Ⅲ 테이블들에 공급된다. 라운드의 인코딩된 출력은 인코딩된 XOR들을 나타내는 타입Ⅳ 테이블들의 네트워크로 다시 타입Ⅲ 테이블들의 출력을 공급함으로써 최종으로 유도된다.
또한, 화이트-박스 구현은 외부 인코딩들을 각각 소거하고 삽입하는 시작(타입Ⅰa 테이블(100)) 및 종단(타입Ⅰb 테이블(500))에서 타입Ⅰ테이블들을 포함한다. 타입Ⅰa 테이블(100)은 단일 테이블 룩-업을 적용함으로써 도 4에 예시된 바와 같이 매핑들의 연결을 적용하도록 사용될 수 있다. 연결에서, 4-비트 니블 입력 디코딩(102)이 먼저 나타난다. 그 후, 8-비트 내지 128-비트 매핑(104)이 나타나고; 이러한 매핑은 네트워크의 입력 및 출력의 인코딩의 일부이고, 이러한 매핑은 프로그램의 다른 곳에서 삭제될 수 있다. 선형 8 비트 내지 128 비트 매핑으로부터 벗어나, 또한 다른 테이블들이 외부 인코딩의 일부일 수도 있다. 예를 들어, 테이블(100)이 제 1 라운드에서 구성되면, 102가 포함될 수 있다. 유사하게, 테이블(100)이 최종 라운드에 있으면, 106 및 108이 포함될 수도 있다. 매핑(104)의 결과는, 각각의 8-비트 전단사들(106)이 적용되는 16개의 8-비트 피스들에서 스플리팅된다. 최종으로, 출력 니블 인코딩(108)이 적용된다. 언급한 바와 같이, 매핑들(102, 104, 106, 및 108)의 캐스케이드가 사전 평가되고, 최종 결과가 룩-업 테이블에서 표로 만들어진다. 이것은 많아야 128 비트 각각의 256 엔트리를 갖는 테이블을 발생시킨다. 타입Ⅰb 테이블(500)에 통합된 매핑들의 연결이 도 8에 개략적으로 표시된다. 제 1 매핑이 입력 니블 디코딩(502)이고, 이 입력 니블 디코딩에는 8 비트 전단사(504), T-박스(
Figure pct00049
)(506)(여기서, r은 최종 라운드에 대응), 출력 인코딩을 제공하는 8 비트 - 128 비트 매핑, 및 출력 니블 인코딩들(510)이 후속한다. 이러한 종류의 테이블의 128-비트는 니블 입력 및 출력 인코딩된 타입Ⅳ 테이블들(400)을 다시 사용하여, 다른 타입Ⅰb 테이블들의 출력과 XOR된다. 출력 인코딩(508)은 프로그램의 다른 곳에서, 즉, 프로그램의 암호화 부분 외부에서 삭제된다. 이것은 프로그램의 암호화 부분의 입력 및 출력만을 분석함으로써 공격자가 테이블들의 인코딩들을 해독하는 것을 더욱 어렵게 만든다.
이하, AES의 개선된 화이트-박스 구현을 설명한다.
예를 들어, Chow 1 및 Chow 2에서 설명한 바와 같은 화이트-박스 기법들은 블록-암호들, 스트림 암호들, 메시지 인증 코드들(MAC) 등을 포함하는 광범위한 암호화 연산의 화이트-박스 구현을 획득하기 위해 다양한 방식으로 서로 결합될 수 있다. 그러나, Michiels 1에 설명된 바와 같이, 이러한 화이트-박스 구현들은 기초적인 취약점을 공유한다. 다양한 중간 라운드들의 입력 바이트들이 Chow 1 및 Chow 2에서 발견되는 바와 같은 기법들을 사용하여 오퍼스케이팅될 때, 입력 바이트들 각각에 대해, AES의 복잡하지 않은 넌-화이트-박스 구현의 입력 바이트에 대한 입력 바이트의 관계 매핑이 존재할 것이다. 이러한 관계가 공지되면, 이것은 화이트-박스 구현의 WBAC에서의 보안성을 손상시킨다. 암호화 분야에서 전문가에게, AES의 중간 라운드들에 대한 입력 바이트들의 지식이 암호화 키를 나타낼 수도 있다는 것이 알려져 있다. 특히, 블록 암호에서의 초기 및/또는 나중의 라운드들은 내부 데이터의 노출에 특히 약점이 있다. 그러나, 알려진 바와 같이, 이러한 관계가 존재한다는 단순한 사실만으로도 공격을 개시하기에 이미 충분하다. 또한, Michiels 1에서 나타낸 바와 같이, 이러한 특성은 Chow에 의해 또는 이러한 문헌에서 나타난 AES 또는 DES 구현에 특정되지 않지만, 사실, 치환-아핀-변환 암호로서 표현될 수 있는 다수의 암호화 연산에서 불가피하다.
개요에서, 개선은 다음과 같이 달성된다. 회피되어야 할 발명자의 관점은, 중간 데이터가 고정된 인코딩으로 오퍼스케이팅되면서 제 1 라운드 외부로 및 다음 라운드로 흐르는 것이다. 이것은 화이트-박스 구현에 대한 입력으로 변화하는 인코딩 방식에 따라 인코딩함으로써 달성된다. 읽기 용이함을 위해, 임의의 대체-아핀 변환 암호에 관해서가 아니라 AES에 관한 개선된 화이트-박스 기법들을 설명한다.
도 9에서, AES의 화이트 박스 구현의 일부가 개략적으로 예시되어 있다. 타입Ⅳ 블록(422), 타입Ⅱ 블록(423), 타입Ⅳ 블록(425), 및 타입Ⅲ 블록(427)이 도시되어 있고, 이들 블록들은 블록 421로 시작하여 교대로 데이터에 대해 연산한다. 도 9에서, 기본 블록의 타입은 로마 숫자로 표시된다. 연산들의 이러한 시퀀스는 예를 들어, 제 1 타입Ⅲ 연산 이후에 시작하여, 다수 횟수 상술한 화이트 박스 구현에서 발견될 수 있다. 블록들 사이에, 인코딩, 리코딩 및 디코딩 단계들이 삽입된다. 실제로, 병렬로 동작하는 다중의 기본 블록들이 있다는 것에 유의한다. 예를 들어, AES 실시예에서, 16개 타입Ⅱ 룩-업 테이블들이 도면에 도시된 단일의 타입Ⅱ 블록(423)으로 요약된다. 유사하게는, 이들 타입Ⅱ 테이블들의 출력들은 24개 타입Ⅳ 룩-업 테이블들을 결합하는 XOR 네트워크(425)에서 결합된다.
타입Ⅳ 블록(422), 즉, XOR 네트워크 이전에, 선택된 인코딩 방식을 사용하여 데이터를 인코딩하는 인코더(421)가 배치된다. 인코딩 방식은 화이트-박스 구현에 대한 입력에 의존하는 선택값을 사용하여 복수의 인코딩 중에서 선택된다. 예를 들어, 선택값은 입력의 암호화 해시, 즉, 비트들의 제 1 수, 즉, 제 1의 4개의 비트들에 기초할 수도 있다. 그러나, 선택값은 또한 인코더 자체에 대한 입력으로 선택될 수도 있다. 바람직하게는, 선택된 인코딩은, XOR 네트워크가 인코딩에 관한 것이도록 선택된다. 즉, XOR 네트워크(422)의 출력들은 여전히 인코딩에 따라 인코딩된다. 예를 들어, 이것은 아핀 인코딩들을 사용함으로써 달성될 수도 있다. 또한, 몇몇 암호들이 XOR 연산을 전혀 사용하지 않을 수도 있다는 것에 유의하고, 적어도 여기에서는 아니다. 이러한 상황들에서, 다른 인코딩들이 당업자에 의해 결정될 수 있을 때 선택될 수도 있다.
인코더(421)가 타입Ⅱ 기본 블록(423) 직전에 배치될 수 있지만, 인코더(421)와 타입Ⅱ 기본 블록(423) 사이에 기본 블록, 예를 들어, 블록(422)을 갖는 것은, 공격자가 구현에서 사용된 인코딩들의 타입을 위치확인하고 분석하는 것을 더 어렵게 만들기 때문에 바람직하다. 또한, 도 9에 도시된 배치에서, 인코딩은 블록 암호의 라운드에 임베딩된다. 라운드들 사이의 천이를 분석하는 것보다 라운드들을 분석하는 것이 더 어려운 것으로 고려된다.
그 후, 인코딩된 데이터는 T 박스에 의해 타입Ⅱ 블록(423)에 대해 연산된다. T-박스가 AES S-박스에 의존하여 구성되었기 때문에, 이것은 선형이 아니고, 일반적으로 인코더(421)에 의해 적용된 인코딩에 관한 것이 아니다. 따라서, 타입Ⅱ 블록(423)의 출력은 상이한 인코딩으로 인코딩된다. 통상적으로, 상이한 인코딩은 매우 비선형의 인코딩이다. 또한, 다중 블록들(423)의 출력들이 XOR 네트워크 타입Ⅳ 블록(425)에서 결합되어야 한다는 것을 상기한다. 상이한 T-박스들은 상이한 인코딩을 일으킬 수 있다. 이러한 목적을 위해, 보상기(424)가 타입Ⅱ 블록(423)과 XOR 네트워크, 타입Ⅳ 블록(425) 사이에 배치된다. 보상기(424)는 인코딩들에 대한 블록(423)의 영향 및 출력 바이트들 사이의 인코딩들에서의 차이를 보상한다. 바람직하게는, 보상기(424)는 후속하는 타입Ⅳ 블록(425)에서 함께 XOR될 출력 바이트들을 수집하고, 이들이 동일한 인코딩, 바람직하게는 아핀 인코딩으로 인코딩되는 것을 보장한다. 본 실시예에서 행해진 바와 같이, 인코딩이 XOR 네트워크 이후에 제거되는 경우에, 인코딩은 바람직하게는 아핀이더라도 임의적으로 선택될 수도 있다. 예를 들어, 보상기(424)는 상이한 인코딩들 중 하나를 고를 수도 있고, 모든 다른 데이터를 이러한 인코딩으로 변환할 수도 있다. 바람직하게는, 후속 블록이 XOR 블록이기 때문에, 보상기(424)는 아핀 인코딩으로 변환한다. 선택적으로는, 보상기(424)는 상이한 인코딩들 중 하나를 고르는 대신에, 그것의 인코딩들에 대해 전적으로 새로운 인코딩을 선택할 수도 있다. 또한, 이러한 새로운 인코딩은 다른 복수의 인코딩 중에서 의존적으로 선택된 입력일 수 있다. 선택적으로는, 보상기(424)는 모든 인코딩들을 제거할 수 있다.
XOR 네트워크(425) 이후에, 타입Ⅲ 연산이 블록들(423)에서 사용된 타입Ⅱ 테이블들로 도입된 믹싱 전단사를 제거하기 위해 행해질 수도 있다. 블록(427) 이전에 데이터를 준비하기 위해, 디코더(426)가 보상기(424) 및/또는 블록(423) 및/또는 블록(421)에 의해 도입된 인코딩을 제거한다. 일반적으로, 믹싱 전단사는 선택적이고, 단지 암호화 연산의 수행을 더 복잡하게 하기 위한 일 방식이다는 것에 유의한다. 블록(423)의 테이블들로 도입되는 믹싱 전단사가 없으면, 블록(427)은 생략될 수도 있다. 그 후, 디코더(426)가 또한 생략될 수도 있다. 선택적으로, 디코더(426)는 최종 라운드에 포함될 수도 있다.
보상기(424)의 작업을 단순화하기 위해, 셀프-등가 인코딩 방식이 인코더(421)에 의해 사용될 수 있다. 특히, 블록(423)에 대한 입력에 배치된 인코딩은 출력 인코딩 방식에 따라 인코딩되기는 하지만 정상 출력으로 변환된다. 출력 인코딩 방식은 입력과 동일한 타입의 인코딩에 속한다. 특히, 입력 데이터상에 배치될 때, 아핀 출력 인코딩을 일으키는 셀프-등가 아핀 인코딩들이 존재한다. 블록 423이 비선형 S-박스를 통합할 때, 이러한 셀프-등가 인코딩들은 상대적으로 드물다. 그러나, 이러한 셀프-등가 아핀 인코딩들이 존재한다는 것이 논문 Biryukov 1으로부터 알려져 있다. 특히, 이 논문의 섹션 4 및 5에 유의한다. 특히, AES 2040의 S-박스에 대해, 셀프-등가 아핀 인코딩들이 존재한다.
데이터 의존도가 허용하는 한은, 연산들은 병렬로 적어도 부분적으로 행해질 수도 있다는 것에 유의한다.
개선된 화이트-박스 구현의 상세한 설명
화이트-박스 구현의 실시예의 더욱 상세한 설명으로 계속된다.
AES-라운드의 시작은 다음과 같다. 라운드에 대한 입력은 바이트들로 스플리팅된다. 각 바이트(i)는 라운드 키의 바이트(
Figure pct00050
)로 XOR된다. 이러한 XOR의 결과는 S-박스에 대한 입력으로서 사용된다. 화이트-박스 구현의 구성에서, 이들 2개의 연산들은 단일의 소위 T-박스 연산으로 병합된다. 이것은, 라운드에 대한 각 입력 바이트(i)에 대해,
Figure pct00051
에 의해 8-8비트 전단사 매핑(
Figure pct00052
)을 규정한다는 것을 의미한다.
다른 암호들이 정보의 대부분의 기본 단위로서 바이트, 또는 심지어 니블을 사용하지 않을 수도 있고, AES에 대해 여기에 제공된 방식은, 치수들이 그에 따라 변경되어야 하더라도 적용가능하게 유지된다는 것에 유의한다. 언급한 바와 같이, T 박스 연산은 바람직하게는 별개로 사용되지 않고, 다른 연산들과 통합된다. 또한, 비선형 오퍼스케이팅 함수들이 도 2에 대해 설명한 바와 같이 삽입될 수도 있다.
화이트-박스 구현의 구성에서, 이러한 T-박스는 룩업 테이블에 의해 구현된다. 룩업 테이블은 T-박스 연산 뿐만 아니라 함수
Figure pct00053
를 구현하고, 여기서,
Figure pct00054
은 전단사 8-8 비트 매핑이고,
Figure pct00055
는 반드시 전단사가 아닌 8-m 비트 매핑이다. 이전의 설명에서, Chow 1의 전문용어를 사용하여,
Figure pct00056
는 m=32를 갖는 타입Ⅱ 테이블로서 간주될 수 있다. 그러나, 본 발명이 셀프-등가 인코딩을 갖는 기본 연산들에 더욱 일반적으로 적용될 수도 있다는 것에 유의한다. 이것은 화이트-박스 구현의 아래의 특성을 가져온다. 이러한 특성은 Michiels 1에 제공된 공격에 의해 이용된다.
특성: I를 일부 소정의 키에 대한 AES의 표준 레퍼런스 구현으로 하고, WB를 구현 I의 화이트-박스 버전으로 한다. 또한, b를 I에서의 라운드의 입력 바이트로 한다. 그 후, 고정 함수(
Figure pct00057
)가 존재하여, WB는 값
Figure pct00058
를 유도한다. 이러한 함수(
Figure pct00059
)는 고정되고, 구현에 제공된 입력에 의존하지 않는다(입력에 의해 파라미터화되지 않는다). 함수(
Figure pct00060
)가 상이한 입력 바이트들에 대해 상이할 수도 있다는 것에 유의한다.
Figure pct00061
이 특정한 화이트-박스 구현에 의존한다는 것에 유의한다.
본 발명에 따른 화이트-박스 구현에서, 표준 구현과 화이트-박스 구현 사이의 이러한 관계는 깨진다.
상기 나타낸 바와 같이, Chow 등에 따른 화이트-박스 AES 구현은 함수
Figure pct00062
를 구현하는 룩업 테이블을 포함한다.
Figure pct00063
Figure pct00064
의 몇몇 특정한 선택에 대하여.
Figure pct00065
를 함수-쌍
Figure pct00066
의 세트로 하여,
Figure pct00067
로 하고,
Figure pct00068
로 한다. 그 후, 임의의
Figure pct00069
에 대해,
Figure pct00070
에 의해 인코딩된 입력을 갖는
Figure pct00071
에 대한 룩업 테이블을 제공하며, 이것은
Figure pct00072
에 의해 인코딩된 출력을 발생시킨다. 바람직하게는, 따라서,
Figure pct00073
에 대한 룩업 테이블의 입력은
Figure pct00074
로부터의 인코딩으로 인코딩되고, 여기서, 선택된 인코딩은 화이트-박스 구현의 모든 입력들에 대해 동일할 필요는 없다.
Chow 1에 의해 제안된 바와 같은 화이트-박스 구현들은 2개 타입의 인코딩들: 선형 인코딩들 및 비선형 인코딩들을 포함한다. 화이트-박스 구현의 구성은 2개의 단계들로 분할될 수 있다. 제 1 단계에서, 선형 인코딩만을 포함하는 화이트-박스 구현이 구성되고, 제 2 단계에서, 비선형 인코딩들이 추가된다. 이러한 실시예에서, 시작점으로서 제 1 단계 이후에 유도된 화이트 -박스 구현을 택한다. 따라서, 본 논의에서, 비선형 인코딩들은 적용되지 않는다는 것을 가정할 수 있다. 비선형 인코딩들은 원하는 경우에 나중에 적용될 수도 있다.
화이트-박스 구현에서, T-박스가 8-32 비트 테이블에 포함되고, 이러한 테이블을 타입Ⅱ 테이블이라 칭한다. 이러한 테이블을 네 개의 8-8 비트 테이블들로 스플리팅하면, j번째 테이블에 의해 구현된 함수는
Figure pct00075
와 같이 기록될 수 있고, 여기서,
Figure pct00076
Figure pct00077
는 선형 함수들이다. 함수
Figure pct00078
는 전단사이고, 선형 인코딩들을 적절하게 선택함으로써,
Figure pct00079
가 전단사이다는 것을 또한 보장할 수 있다. 이러한 실시예에서, 이들 양자가 전단사라는 것을 가정할 것이다.
Figure pct00080
를 구현하는 룩업 테이블에는, XOR들을 구현하는 룩업 테이블들이 후속하고, 즉, 타입Ⅱ 테이블들의 출력은 타입Ⅳ 테이블들에 의해 더 프로세싱된다. 더욱 구체적으로는, XOR 테이블들은 다음을 계산한다. 16개의 T-박스들의 세트가 4개의 T-박스들의 4개의 세트들로 파티션된다(T-박스는, 이들이 AES의 ShiftRows 단계 이후에 동일한 컬럼으로부터의 바이트들에 관련되면 동일한 세트에 있다).
Figure pct00081
를 이러한 세트로 하고,
Figure pct00082
를 함수
Figure pct00083
의 결과로 한다. 그 후, XOR 테이블들은 각각의 j=1,2,3,4에 대해 값들
Figure pct00084
의 XOR를 계산한다.
Figure pct00085
를 구현하는 룩업 테이블에는 또한, XOR들을 구현하는 룩업 테이블들이 선행된다.
Figure pct00086
를 함수
Figure pct00087
에 대한 입력으로 한다. 그 후,
Figure pct00088
에 선행하는 XOR 테이블들은 4 바이트들(
Figure pct00089
Figure pct00090
)로부터 바이트
Figure pct00091
를 계산한다.
Figure pct00092
대신에
Figure pct00093
에 본 발명을 적용하기 때문에, 상기 규정된 세트들(
Figure pct00094
Figure pct00095
)의 인덱스에 j에 대한 의존성을 추가할 필요가 있다는 것에 유의한다. 나타낸 바와 같이, 함수
Figure pct00096
의 입력은 비상수 인코딩에 의해 인코딩된다. 상술한 화이트 박스 구현에 대해 이루어질 수 있는 변경은 3개의 이슈들: 함수
Figure pct00097
의 입력에 어떤 인코딩을 취하는지, 즉, 세트들(
Figure pct00098
Figure pct00099
)을 어떻게 규정하는지? 값에 인코딩을 어떻게 취하는지? 값에 인코딩을 어디에서 취하는지? 와 관련된다. 이들 질문 각각에 대한 가능한 대답들이 아래에 제공된다.
이 섹션은 함수
Figure pct00100
의 입력에 어떤 인코딩이 취해지는지를 설명한다.
S-박스 S에 대해, 세트
Figure pct00101
를 아핀 함수의 모든 쌍들
Figure pct00102
의 세트로 하여서,
Figure pct00103
이다. Biryukov 1은 임의의 S-박스에 대해 이러한 세트를 유도하는 알고리즘을 제공하였다. AES S-박스에 대해, 이러한 세트는 함수들의 2040개의 쌍들로 이루어진다. 이러한 세트로부터, 임의의 함수
Figure pct00104
에 대해, 아핀 함수-쌍들
Figure pct00105
의 세트
Figure pct00106
를 쉽게 유도할 수 있어서,
Figure pct00107
이다.
Figure pct00108
이다는 것을 기억하고, 여기서,
Figure pct00109
Figure pct00110
는 선형 및 전단사 함수들이고, 여기서,
Figure pct00111
는 함수
Figure pct00112
를 나타낸다. 더욱 구체적으로,
Figure pct00113
에 의해 제공된 세트
Figure pct00114
가 모든
Figure pct00115
에 대해,
Figure pct00116
를 갖는다는 특성을 갖는다는 것이 나타날 수 있다. 이러한 세트의 카디널리티(cardinality)는
Figure pct00117
에 대해 동일하고, 즉, 2040이다. 이러한 세트
Figure pct00118
Figure pct00119
의 입력에 대해 취하는 인코딩들의 세트
Figure pct00120
를 규정한다. 즉,
Figure pct00121
에 대한 입력은 아핀 함수
Figure pct00122
에 의해 인코딩되고,
Figure pct00123
이다.
이 섹션에서, 일반적으로, 값들이 아핀 변환으로 어떻게 인코딩될 수도 있는지를 논의한다. 이러한 기법은 초기 인코딩에 대해 사용될 수도 있지만 또한, 리코딩들 및 디코딩들에 대해서도 사용될 수도 있다. 인코더가 다음의 방식으로 값을 인코딩할 수 있다. 먼저, 선형 인코딩에 초점을 맞춘다.
Figure pct00124
를 화이트-박스 구현의 입력 M으로부터 유도되는 4 비트 선택값으로 한다. 값
Figure pct00125
는 예를 들어, 입력 M의 니블일 수 있다. 또는
Figure pct00126
는 적어도 부분적으로, 인코딩하기를 원하는 값, 즉, x로부터 유도될 수 있다. 또한, E를 8비트에 대한 24개의 선형 인코딩들로 이루어진 세트로 하고, 즉, E는 24개의 매트릭스
Figure pct00127
로 이루어지고, 여기서, 각 매트릭스는 8×8 비트 가역 매트릭스이다. 인코딩의 경우에서, 이들 매트릭스들이 예를 들어, 상기 규정된 세트
Figure pct00128
에서의 아핀 인코딩들의 선형 부분들로서 선택될 수도 있다는 것을 상기한다. 표기의 약간의 오용으로, N이 매트릭스이면, N과의 매트릭스 승산에 의해 규정된 함수를 N으로 또한 표기하고, 즉,
Figure pct00129
이다. 1과 16 사이의 수로서 값
Figure pct00130
를 해석함으로써, 인코딩
Figure pct00131
을 칭할 수 있다. 이제, 8 비트 중간값(x)이 선형 인코딩
Figure pct00132
에 의해 인코딩되는 화이트-박스 구현에서 어떻게 구현하는지를 나타낸다. 인코딩들의 수에 대한 상이한 카디널리티가 가능하다는 것에 유의한다. 예를 들어,
Figure pct00133
를 1 비트값으로 한정함으로써, 단지 2개의 인코딩 방식만이 필요하다.
먼저, x를 2개의 니블들(
Figure pct00134
Figure pct00135
)로 분할한다. 또한, 임의의
Figure pct00136
에 대해,
Figure pct00137
의 제 1의 4개의 컬럼들에 의해 규정된 매트릭스로서
Figure pct00138
를 규정하고,
Figure pct00139
의 최종 4개의 컬럼들에 의해 규정된 매트릭스로서
Figure pct00140
를 규정한다. 그 후,
Figure pct00141
이다.
따라서, 다음과 같이 x로부터
Figure pct00142
를 계산할 수 있다. 4 비트값(
Figure pct00143
) 및 v를
Figure pct00144
에 매핑하는 8-8 비트 테이블(
Figure pct00145
)을 정의하고 4 비트값(
Figure pct00146
) 및 v를
Figure pct00147
에 매핑하는 8-8 비트 테이블(
Figure pct00148
)을 정의한다. (예를 들어, XOR 테이블들을 통해) 이들 테이블들의 결과를 XOR함으로써,
Figure pct00149
를 획득한다.
이것은 바이트(x)에 선형 인코딩을 취하는 방법에 도달한다. 이제, 바이트에 아핀 인코딩을 취하는 유사한 방법을 논의한다. 다시, 4 비트값(
Figure pct00150
)이 16개 인코딩들로 이루어진 세트 E로부터 인코딩을 나타내기 위해 사용된다. 그러나, 이러한 경우에서, 인코딩들의 세트 E는 8 비트의 아핀 인코딩들로 이루어지고, 즉, 함수
Figure pct00151
이고, 여기서, A는 8×8 비트 이진 매트릭스이고,
Figure pct00152
는 8-비트 상수이다.
Figure pct00153
에 의해 참조되는 인코딩은
Figure pct00154
에 의해 표기된다.
이제, 선형 인코딩에 대해 동일한 방식으로 진행한다. 즉, 먼저 x를 2개의 니블들(
Figure pct00155
Figure pct00156
)로 분할한다. 또한, 이전과 같이 매트릭스들(
Figure pct00157
Figure pct00158
)이 정의되고, 이것은,
Figure pct00159
Figure pct00160
의 제 1의 4개의 컬럼들에 의해 규정된 매트릭스를 나타내고,
Figure pct00161
Figure pct00162
의 최종 4개의 컬럼들에 의해 규정된 매트릭스를 나타낸다는 것을 의미한다. 그 후,
Figure pct00163
이다.
따라서, 다음과 같이 x로부터
Figure pct00164
를 계산할 수 있다. 4 비트값(
Figure pct00165
) 및 v를
Figure pct00166
에 매핑하는 8-8 비트 테이블(
Figure pct00167
)을 규정하고 4 비트값(
Figure pct00168
) 및 v를
Figure pct00169
에 매핑하는 8-8 비트 테이블(
Figure pct00170
)을 정의한다. (예를 들어, XOR 테이블을 통해) 이들 테이블들의 결과를 XOR함으로써,
Figure pct00171
를 획득한다.
인코더 네트워크가 도 10에 예시되어 있다. 인코더 네트워크는 선택값(v)에 의존하여 값(x)을 인코딩하도록 배열된다. 룩업 테이블들(431)이 2개의 4 비트 사이즈 입력들:
Figure pct00172
및 v를 수신하도록 배열된다. 이것은 하나의 8 비트 출력을 생성하도록 배열된다. 유사하게는, 룩업 테이블(432)이 2개의 4 비트 사이즈 입력들:
Figure pct00173
및 v를 수신하고, 8 비트 출력을 생성하도록 배열된다. 2개의 8 비트값들은 XOR 네트워크(433)에서 서로 xor된다. XOR 네트워크(433)는 XOR를 수행하기 위해 2개의 타입Ⅳ 테이블들을 포함하고 니블들을 개별적으로 연산한다.
상기에서, 아직 인코딩되지 않은 값에 인코딩을 어떻게 취할지 논의하였다. 이제, 값(x)이 인코딩에 의해 인코딩되고, 예를 들어, 보상기(424)를 사용하여 인코딩을 다른 인코딩으로 변경하기를 원한다고 가정한다. 이것을 더욱 구체적으로 하기 위해,
Figure pct00174
Figure pct00175
를 16개의 아핀 인코딩들로 각각 이루어진 2개의 가능하면 상이한 세트들로 한다.
Figure pct00176
에서 인코딩을 지칭하기 위해
Figure pct00177
Figure pct00178
를 기록하고,
Figure pct00179
에서 인코딩들을 지칭하기 위해
Figure pct00180
Figure pct00181
을 기록한다. 그 후,
Figure pct00182
로부터
Figure pct00183
로 바이트(x)의 인코딩을 변경하기를 원하는 문제점을 고려한다. 이러한 문제점은 아직 인코딩되지 않은 값에 인코딩을 취하는 문제점과 동일하고, 여기서, 인코딩은 28=256개 인코딩으로 이루어진 세트
Figure pct00184
로부터 취해진다. 따라서, 상술한 방법을 다시 사용할 수 있다. 차이점은 단지,
Figure pct00185
로부터 엘리먼트를 식별하기 위해 8 비트를 필요로 하기 때문에, 8-8 비트 테이블들(
Figure pct00186
Figure pct00187
)이 이제 12 비트 입력을 갖는다는 것이다.
이하, 값에 인코딩이 취해질 문제점에 대해 응답한다. 이러한 문제점에 대한 응답은 2개의 부분들: 인코딩들의 도입 및 인코딩들의 제거로 스플리팅된다.
인코딩들의 도입 :
인코딩들은 XOR 네트워크(422) 이전에 도입될 수도 있고, 그러나, 일부 주의가 필요할 수도 있다. 예를 들어, 아핀 인코딩들이 선형 인코딩들 대신에 사용되는 경우에, XOR 네트워크에 대한 모든 입력들이 동일한 방식으로 인코딩될 수 있는 것은 아니다. 임의의 아핀 함수
Figure pct00188
에 대해, 함수
Figure pct00189
를 함수
Figure pct00190
의 선형 부분으로 한다. 또한,
Figure pct00191
Figure pct00192
에서 아핀 함수들의 선형 부분들을 포함하는 세트로 한다. 즉,
Figure pct00193
이다. 상기 나타낸 바와 같이, 함수
Figure pct00194
의 입력값(
Figure pct00195
)은 바이트들(
Figure pct00196
Figure pct00197
)을 XOR함으로써 구성된다. 함수
Figure pct00198
Figure pct00199
의 입력에 인코딩(
Figure pct00200
)을 취하기 위해, 아래의 방식을 적용한다. 먼저, 화이트-박스 구현의 입력으로부터 4 비트값(
Figure pct00201
)을 유도한다. 이것은 어떤 임의의 방식으로 행해질 수 있다. 인코딩(
Figure pct00202
)에 의해 값(
Figure pct00203
) 및 인코딩(
Figure pct00204
)에 의해 값들(
Figure pct00205
Figure pct00206
)을 인코딩하기 위해 값(
Figure pct00207
)을 사용한다. 이들 값들을 XOR하는 것은, 값
Figure pct00208
을 발생시킨다. 이것은 인코딩들의 도입에 도달한다.
인코딩들의 제거:
나타낸 바와 같이, 기본 화이트-박스 구현은 함수
Figure pct00209
의 출력
Figure pct00210
이 3개의 다른 테이블들
Figure pct00211
Figure pct00212
의 출력과 XOR되도록 되어 있다. 이러한 실시예에서, XOR하는 것은 다음과 같이 행해진다고 가정한다. 먼저,
Figure pct00213
Figure pct00214
와 XOR된다. 다음으로,
Figure pct00215
로서 칭하는 이러한 결과를
Figure pct00216
와 XOR한다. 이러한 제 2 XOR의 결과(
Figure pct00217
)는 값(
Figure pct00218
)을 획득하기 위해
Figure pct00219
와 최종으로 XOR된다.
값(
Figure pct00220
)이 인코딩되는 아핀 인코딩을
Figure pct00221
가 나타내는 것으로 한다. 값들을 XOR하기 이전에, 모든 값들(
Figure pct00222
Figure pct00223
)이
Figure pct00224
의 인코딩의 선형 부분, 즉,
Figure pct00225
에 의해 인코딩되게 한다. 상기에서, 이것이 어떻게 행해질 수 있는지 설명하였다. 이제, 인코딩된 값들(
Figure pct00226
Figure pct00227
)을 XOR한다. 인코딩된 값들(
Figure pct00228
Figure pct00229
)을 XOR하는 것이 인코딩된 값(
Figure pct00230
)을 발생시킨다는 것에 유의한다. 이러한 값을
Figure pct00231
과 XOR하는 것은
Figure pct00232
을 발생시키고,
Figure pct00233
Figure pct00234
와 XOR하는 것은
Figure pct00235
을 발생시킨다. 값(
Figure pct00236
)으로부터, 인코딩을 최종으로 제거한다. 인코딩의 제거가 인코딩의 추가와 동일한 방식으로 행해질 수 있다는 것에 유의한다(이것은 인코딩의 인버스의 추가에 대응한다).
도 11은 본 발명의 실시예를 예시한다. 이 도면은 디지털 콘텐츠의 제공자와 접속하는 인터넷에 대한 접속과 같은 통신 포트(95)를 도시한다. 콘텐츠는 또한, DVD 또는 CD와 같은 매체(96)로부터 획득될 수 있다. PC상의 디지털 콘텐츠는 통상적으로 메모리(91)를 사용하는 프로세서(92)에 의해 실행되는 미디어 플레이어들을 사용하여 렌더링된다. 이러한 플레이어들은 특정한 콘텐츠 포맷에 대해, 통신 포트(95) 및/또는 매체(96)를 통해 획득된 콘텐츠에 대응하는 포맷-특정 디코딩을 수행하는 각각의 플러그-인을 실행할 수 있다. 콘텐츠 포맷들은 AVI, DV, 모션 JPEG, MPEG-1, MPEG-2, MPEG-4, WMV, 오디오 CD, MP3, WMA, WAV, AIFF/AIFC, AU 등을 포함할 수도 있다. 디지털 저작권 관리를 위해, 콘텐츠를 디코딩할 뿐만 아니라 콘텐츠를 복호화하는 보안 플러그-인이 사용될 수도 있다. 이러한 플러그-인은 메모리(91)에 저장된 프로세서 명령들 및 파라미터들을 포함한다. 프로세서 명령들은 프로세스가 본 발명에 따른 방법을 수행하게 한다. 파라미터들은 여기에 설명한 바와 같은 룩-업 테이블들을 포함한다. 사용자 입력(94)이 렌더링될 콘텐츠를 나타내기 위해 사용자로부터 커맨드들을 획득하도록 제공될 수도 있고, 디스플레이(93) 및/또는 스피커들이 디코딩되고/되거나 복호화된 콘텐츠를 렌더링하기 위해 제공된다.
본 발명이 또한 컴퓨터 프로그램들, 특히, 본 발명을 실시하도록 구성된 캐리어상 또는 캐리어에서의 컴퓨터 프로그램들로 범위가 넓어진다는 것이 이해될 것이다. 프로그램은 보안 코드, 오브젝트 코드, 코드 중간 소스 및 부분적으로 컴파일된 형태의 오브젝트 코드의 형태, 또는 본 발명에 따른 방법의 구현에서 사용하는데 적합한 임의의 다른 형태일 수도 있다. 캐리어는 프로그램을 반송할 수 있는 임의의 엔티티 또는 디바이스일 수도 있다. 예를 들어, 캐리어는 예를 들어, CD ROM 또는 반도체 ROM 등의 ROM과 같은 저장 매체, 또는 예를 들면, 플로피 디스크 또는 하드 디스크와 같은 자기 기록 매체를 포함할 수 있다. 또한, 캐리어는 전기 또는 광 케이블을 통해 또는 무선 또는 다른 수단에 의해 전달될 수도 있는 전기 또는 광 신호와 같은 송신가능한 캐리어일 수도 있다. 프로그램이 이러한 신호에 포함될 때, 캐리어는 이러한 케이블 또는 다른 디바이스 또는 수단에 의해 구성될 수도 있다. 대안으로는, 캐리어는 프로그램이 임베딩되는 집적 회로일 수도 있고, 이 집적 회로는 관련 방법을 수행하거나 관련 방법의 수행에서 사용하도록 구성된다.
상기 언급한 실시예들이 본 발명을 제한하기보다는 예시하고, 당업자는 첨부한 청구항들의 범위로부터 벗어나지 않는 다수의 대안의 실시예들을 설계할 수 있다는 것에 유의해야 한다. 청구항들에서, 괄호안에 있는 임의의 참조 부호들은 청구항을 제한하는 것으로서 해석되어서는 안된다. 동사 "포함한다" 및 그것의 활용의 사용은, 청구항에 언급한 것들 이외의 엘리먼트들 또는 단계들의 존재를 배제하지 않는다. 엘리먼트에 선행하는 관사 "a" 또는 "an"은 복수의 이러한 엘리먼트의 존재를 배제하지 않는다. 본 발명은 여러 개별 엘리먼트들을 포함하는 하드웨어, 및 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수도 있다. 여러 수단을 열거하는 디바이스 청구항에서, 이들 수단 중 몇몇은 동일한 하드웨어의 아이템에 의해 구현될 수도 있다. 특정 수단이 상호 상이한 종속항들에서 인용된다는 단순한 사실은, 이들 수단들의 조합이 바람직하게 사용될 수 없다는 것을 나타내는 것은 아니다.

Claims (11)

  1. 입력-메시지를 출력-메시지에 매핑하는 키 암호화 연산(keyed cryotographic operation)을 수행하는 암호화 시스템에 있어서,
    - 상기 키를 나타내는 복수의 기본 블록들의 네트워크를 포함하고, 상기 기본 블록들 중 적어도 일부는 입력 데이터를 출력 데이터에 매핑하도록 구성되고, 복수개는 상기 암호화 연산을 일괄적으로 수행하도록 구성되고,
    상기 네트워크는,
    - 복수의 인코딩 방식들 중 선택된 인코딩 방식에 따라 상기 복수의 기본 블록들 중 제 1 기본 블록의 출력 데이터를 인코더-출력으로 인코딩하는 인코더로서, 상기 인코더는 상기 입력-메시지에 의존하는 선택 데이터에 의존하여 상기 복수의 인코딩 방식들 중에서 상기 선택된 인코딩 방식을 선택하도록 구성되고, 상기 복수의 기본 블록들 중 제 2 기본 블록은 상기 선택된 인코딩 방식에 따르고 상기 인코더-출력에 의존하여 인코딩된 상기 네트워크를 통해 그의 입력을 수신하도록 구성되는, 상기 인코더, 및
    - 복수의 리코딩(recoding) 방식들 중 선택된 리코딩 방식에 따라 상기 인코딩의 영향을 보상하기 위해 상기 제 2 기본 블록의 출력 데이터에 의존하여 중간 데이터를 리코딩하는 보상기로서, 상기 보상기는 상기 선택 데이터에 의존하여 상기 복수의 리코딩 방식들 중에서 상기 선택된 리코딩 방식을 선택하도록 구성되는, 상기 보상기를 포함하는, 암호화 시스템.
  2. 제 1 항에 있어서,
    상기 복수의 인코딩 방식들은 상기 제 2 기본 블록의 셀프-등가(self-equivalent) 인코딩 방식들이고, 상기 선택된 인코딩 방식에 대해, 출력 인코딩 방식이 대응하고, 상기 제 2 기본 블록의 상기 출력 데이터는 상기 출력 인코딩 방식에 따라 인코딩되고, 상기 선택된 리코딩 방식은 상기 출력 데이터를 상기 출력 인코딩 방식으로부터 다른 인코딩 방식으로 리코딩하는, 암호화 시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 복수의 인코딩 방식들은 아핀(affine) 인코딩 방식들인, 암호화 시스템.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 제 1 기본 블록의 상기 출력 데이터는 상기 선택 데이터에 의존하는 인코딩 방식으로 인코딩되는, 암호화 시스템.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 선택 데이터는 상기 복수의 기본 블록들 중 상기 제 1 기본 블록의 출력의 적어도 일부인, 암호화 시스템.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 복수의 인코딩 방식들 중 하나에 따라 상기 복수의 기본 블록들 중 제 3 기본 블록의 출력에 대한 인코딩을 제거하는 디코더를 포함하는, 암호화 시스템.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 복수의 기본 블록들은, 다른 선택된 인코딩 방식에 따라 인코딩된 상기 네트워크를 통해 그의 입력을 수신하도록 구성된 적어도 다른 제 2 기본 블록을 포함하고, 상기 보상기는 복수의 리코딩 방식들 중 다른 선택된 리코딩 방식에 따라 다른 인코딩의 영향을 보상하도록 상기 다른 제 2 기본 블록의 다른 출력 데이터에 의존하여 다른 중간 데이터를 리코딩하도록 구성되고, 상기 리코딩 방식은 공통 인코딩 방식에 따라 인코딩된 제 1 데이터로 상기 중간 데이터를 리코딩하도록 구성되고, 상기 다른 리코딩 방식은 상기 공통 인코딩 방식과 많아야 부가적인 상이한 인코딩 방식에 따라 인코딩된 제 2 데이터로 상기 다른 중간 데이터를 리코딩하도록 구성되는, 암호화 시스템.
  8. 입력-메시지를 출력-메시지에 매핑하는 암호화 연산을 수행하는 암호화 방법에 있어서,
    - 복수의 기본 매핑 연산들을 포함하고, 상기 복수의 기본 매핑 연산들 각각은 입력 데이터를 출력 데이터에 매핑하도록 배열되고, 복수개는 상기 암호화 연산을 일괄적으로 수행하도록 배열되고,
    상기 암호화 방법은,
    - 상기 입력-메시지에 의존하여 복수의 인코딩 방식들 중에서 선택된 인코딩 방식을 선택하는 단계,
    - 상기 선택된 인코딩 방식에 따라 상기 복수의 기본 매핑 연산들 중 제 1 기본 매핑 연산의 출력 데이터를 인코딩된-출력으로 인코딩하는 단계로서, 상기 복수의 기본 매핑 연산들 중 제 2 기본 매핑 연산은 적어도 상기 인코더-출력에 대해 입력 데이터로서 연산하도록 배열되는, 상기 인코딩 단계,
    - 상기 선택 데이터에 의존하여 복수의 리코딩 방식들 중에서 선택된 리코딩 방식을 선택하는 단계, 및
    - 복수의 리코딩 방식들 중 선택된 리코딩 방식에 따라 상기 인코딩의 영향을 보상하기 위해 상기 제 2 기본 매핑 연산의 출력 데이터에 의존하여 중간 데이터를 리코딩하는 단계를 포함하는, 암호화 방법.
  9. 증가된 위조 방지를 위한 암호화 연산을 수행하는 시스템을 확립하는 방법에 있어서,
    상기 시스템은 복수의 기본 블록들을 포함하고, 상기 복수의 기본 블록들 각각은 입력 데이터를 출력 데이터에 매핑하도록 배열되고, 복수개는 상기 암호화 연산을 일괄적으로 수행하도록 배열되고,
    상기 방법은:
    상기 복수의 기본 블록들 중 제 1 기본 블록 및 제 2 기본 블록을 식별하는 단계로서, 상기 제 2 기본 블록은 상기 제 1 기본 블록의 출력을 입력으로서 수신하도록 구성되는, 상기 식별하는 단계,
    상기 제 1 기본 블록과 상기 제 2 기본 블록 사이에 인코더를 배열하는 단계로서, 상기 인코더는 복수의 인코딩 방식들 중 선택된 인코딩 방식에 따라 상기 제 1 기본 블록의 상기 출력을 인코더-출력으로 인코딩하도록 구성되고, 상기 제 2 기본 블록은 상기 인코더-출력을 입력 데이터로서 수신하도록 구성되는, 상기 인코더를 배열하는 단계, 및
    복수의 리코딩 방식들 중 선택된 리코딩 방식에 따라 상기 인코딩의 영향을 보상하기 위해 상기 제 2 기본 블록의 출력 데이터에 의존하여 중간 데이터를 리코딩하기 위해, 상기 제 2 기본 블록 이후에 보상기를 배열하는 단계를 포함하는, 암호화 연산을 수행하는 시스템을 확립하는 방법.
  10. 컴퓨터 프로그램이 컴퓨터상에서 구동될 때, 제 8 항 또는 제 9 항에 기재된 모든 단계들을 수행하도록 구성된 컴퓨터 프로그램 코드 수단을 포함하는, 컴퓨터 프로그램.
  11. 제 10 항에 기재된 컴퓨터 프로그램을 저장하는, 컴퓨터 판독가능한 매체.
KR1020117023699A 2009-03-10 2010-03-05 입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템 KR101715027B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09154698 2009-03-10
EP09154698.6 2009-03-10
PCT/EP2010/052846 WO2010102960A1 (en) 2009-03-10 2010-03-05 White-box cryptographic system with input dependent encodings

Publications (2)

Publication Number Publication Date
KR20120030335A true KR20120030335A (ko) 2012-03-28
KR101715027B1 KR101715027B1 (ko) 2017-03-22

Family

ID=42124476

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117023699A KR101715027B1 (ko) 2009-03-10 2010-03-05 입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템

Country Status (7)

Country Link
US (1) US9654280B2 (ko)
EP (1) EP2406916A1 (ko)
JP (1) JP5688528B2 (ko)
KR (1) KR101715027B1 (ko)
CN (1) CN102461058B (ko)
CA (1) CA2754094C (ko)
WO (1) WO2010102960A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101527329B1 (ko) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 데이터 암호화 장치 및 방법
KR20170050027A (ko) 2015-10-29 2017-05-11 삼성에스디에스 주식회사 암호화 장치 및 방법
KR20180046721A (ko) 2016-10-28 2018-05-09 삼성에스디에스 주식회사 암호화 장치 및 방법
US10411880B2 (en) 2015-10-29 2019-09-10 Samsung Sds Co., Ltd. Apparatus and method for encryption

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
KR20120072011A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 무결성 검증이 가능한 데이터 암호장치, 복호장치 및 방법
JP5930235B2 (ja) * 2011-03-31 2016-06-08 イルデト ビー ヴイIrdeto B.V. 暗号ハッシュ関数の実行を保護する方法とシステム
US9189425B2 (en) * 2011-09-01 2015-11-17 Apple Inc. Protecting look up tables by mixing code and operations
US10333702B2 (en) 2012-03-20 2019-06-25 Irdeto B.V. Updating key information
CN104919750B (zh) * 2012-12-21 2017-06-06 皇家飞利浦有限公司 计算关于函数‑输入值的数据函数的计算设备和方法
BR112015014470A2 (pt) * 2012-12-21 2017-07-11 Koninklijke Philips Nv compilador configurado para compilar um programa de computador, dispositivo de computação configurado para executar um programa de computador compilado por um compilador, método para executar um programa de computador compilado por um compilador e programa de computador
US9264222B2 (en) 2013-02-28 2016-02-16 Apple Inc. Precomputing internal AES states in counter mode to protect keys used in AES computations
CN104769881A (zh) * 2013-03-27 2015-07-08 爱迪德技术有限公司 具有错误校正的aes实现方式
EP2992637A1 (en) 2013-05-01 2016-03-09 Koninklijke Philips N.V. Electronic block cipher device suitable for obfuscation
KR101807259B1 (ko) 2013-11-04 2017-12-08 한국전자통신연구원 암호화 장치 및 방법
CA2932623A1 (en) * 2013-12-02 2015-06-11 Identity Authentication Management Methods and systems for multi-key veritable biometric identity authentication
EP3085005B1 (en) * 2013-12-20 2019-09-25 Koninklijke Philips N.V. Secure data transformations
US9576116B2 (en) * 2013-12-26 2017-02-21 Nxp B.V. Secure software components anti-reverse-engineering by table interleaving
US9838198B2 (en) 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
US9584310B2 (en) * 2014-03-19 2017-02-28 Nxp B.V. Protecting a white-box implementation against attacks
WO2015149827A1 (en) * 2014-03-31 2015-10-08 Irdeto B.V. Obfuscated performance of a predetermined function
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
US9338145B2 (en) * 2014-04-28 2016-05-10 Nxp B.V. Security patch without changing the key
US9485226B2 (en) * 2014-04-28 2016-11-01 Nxp B.V. Method for including an implicit integrity or authenticity check into a white-box implementation
TWI712915B (zh) * 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
US10412054B2 (en) 2014-06-24 2019-09-10 Nxp B.V. Method for introducing dependence of white-box implementation on a set of strings
EP2960891B1 (en) 2014-06-24 2019-01-16 Nxp B.V. Method for introducing dependence of white-box implementationon a set of strings
US9569639B2 (en) 2014-09-12 2017-02-14 Nxp B.V. Remapping constant points in a white-box implementation
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
WO2016056502A1 (ja) * 2014-10-08 2016-04-14 日本電信電話株式会社 非減少列判定装置、非減少列判定方法及びプログラム
DE102014016548A1 (de) 2014-11-10 2016-05-12 Giesecke & Devrient Gmbh Verfahren zum Testen und zum Härten von Softwareapplikationen
JP2018503113A (ja) * 2014-11-27 2018-02-01 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 難読化された演算を実行するための電子計算装置
US9639674B2 (en) * 2014-12-18 2017-05-02 Nxp B.V. Using single white-box implementation with multiple external encodings
US9819486B2 (en) 2014-12-19 2017-11-14 Nxp B.V. S-box in cryptographic implementation
US20160182472A1 (en) * 2014-12-19 2016-06-23 Nxp, B.V. Binding White-Box Implementation To Reduced Secure Element
US9665699B2 (en) 2015-03-13 2017-05-30 Nxp B.V. Implementing padding in a white-box implementation
US9602273B2 (en) 2015-05-06 2017-03-21 Nxp B.V. Implementing key scheduling for white-box DES implementation
KR101847492B1 (ko) * 2015-05-19 2018-04-10 삼성에스디에스 주식회사 데이터 암호화 장치 및 방법, 데이터 복호화 장치 및 방법
US10505709B2 (en) 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法
US10097342B2 (en) * 2015-07-30 2018-10-09 Nxp B.V. Encoding values by pseudo-random mask
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.
NL2015911B1 (en) * 2015-12-07 2017-06-28 Koninklijke Philips Nv Calculating device and method.
US10171234B2 (en) * 2015-12-16 2019-01-01 Nxp B.V. Wide encoding of intermediate values within a white-box implementation
JP6187624B1 (ja) 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
JP6877889B2 (ja) * 2016-04-08 2021-05-26 ソニーグループ株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
EP3467808B1 (en) 2016-05-23 2020-04-08 Sony Corporation Encryption device, encryption method, decryption device, and decryption method
JP6135804B1 (ja) 2016-06-01 2017-05-31 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US10243937B2 (en) * 2016-07-08 2019-03-26 Nxp B.V. Equality check implemented with secret sharing
EP3300291A1 (en) 2016-09-27 2018-03-28 Gemalto SA Method to counter dca attacks of order 2 and higher
EP3407528A1 (en) * 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
US10547449B2 (en) * 2017-05-30 2020-01-28 Nxp B.V. Protection against relay attacks in a white-box implementation
US10567159B2 (en) * 2017-06-07 2020-02-18 Nxp B.V. CMAC computation using white-box implementations with external encodings
WO2019031025A1 (ja) * 2017-08-10 2019-02-14 ソニー株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
EP3667647A4 (en) 2017-08-10 2021-04-14 Sony Corporation ENCRYPTION DEVICE, ENCRYPTION PROCESS, ENCRYPTION DEVICE AND DECRYPTION PROCESS
CN109670320B (zh) * 2017-10-13 2023-04-25 三星电子株式会社 加密设备和解密设备、以及其操作方法
KR102602696B1 (ko) * 2017-10-13 2023-11-16 삼성전자주식회사 암호화 장치 및 복호화 장치, 이들의 동작방법
CN107968706B (zh) * 2017-11-21 2020-10-13 武汉珈港科技有限公司 具有流程保护功能的白盒密码方法及系统
EP3506558A1 (en) * 2017-12-28 2019-07-03 Koninklijke Philips N.V. Whitebox computation of keyed message authentication codes
US10790991B2 (en) * 2018-08-30 2020-09-29 Nxp B.V. Deterministic digital signature method without using a hash function
JP7383949B2 (ja) 2019-09-20 2023-11-21 富士電機株式会社 情報処理装置及びプログラム
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6696992B1 (en) * 2001-10-02 2004-02-24 Allan Chu Efficient data encoding and decoding processes
WO2007105126A2 (en) * 2006-03-10 2007-09-20 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4317607B2 (ja) * 1998-12-14 2009-08-19 株式会社日立製作所 情報処理装置、耐タンパ処理装置
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
JP2006028600A (ja) 2004-07-16 2006-02-02 Kobe Steel Ltd 耐摩耗性と耐熱性に優れた積層皮膜
WO2006112114A1 (ja) * 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. データ暗号化装置及びデータ暗号化方法
BRPI0714242A2 (pt) * 2006-07-12 2013-01-29 Koninkl Philips Electronics Nv sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador
JP2008098690A (ja) * 2006-10-05 2008-04-24 Sharp Corp 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法
JP4909018B2 (ja) * 2006-11-16 2012-04-04 富士通株式会社 共通鍵暗号のための暗号化装置
WO2008059420A2 (en) * 2006-11-17 2008-05-22 Koninklijke Philips Electronics N.V. Cryptographic method for a white-box implementation
JP2008233683A (ja) 2007-03-22 2008-10-02 Toshiba Corp 暗号処理装置及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6696992B1 (en) * 2001-10-02 2004-02-24 Allan Chu Efficient data encoding and decoding processes
WO2007105126A2 (en) * 2006-03-10 2007-09-20 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101527329B1 (ko) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 데이터 암호화 장치 및 방법
WO2016039556A1 (en) * 2014-09-12 2016-03-17 Samsung Sds Co.,Ltd. Apparatus and method for data encryption
KR20170050027A (ko) 2015-10-29 2017-05-11 삼성에스디에스 주식회사 암호화 장치 및 방법
US10411880B2 (en) 2015-10-29 2019-09-10 Samsung Sds Co., Ltd. Apparatus and method for encryption
US10491374B2 (en) 2015-10-29 2019-11-26 Samsung Sds Co., Ltd. Apparatus and method for encryption
KR20180046721A (ko) 2016-10-28 2018-05-09 삼성에스디에스 주식회사 암호화 장치 및 방법

Also Published As

Publication number Publication date
KR101715027B1 (ko) 2017-03-22
EP2406916A1 (en) 2012-01-18
US20120002807A1 (en) 2012-01-05
CN102461058B (zh) 2015-06-03
WO2010102960A1 (en) 2010-09-16
US9654280B2 (en) 2017-05-16
CN102461058A (zh) 2012-05-16
JP5688528B2 (ja) 2015-03-25
JP2012520589A (ja) 2012-09-06
CA2754094C (en) 2017-08-15
CA2754094A1 (en) 2010-09-16

Similar Documents

Publication Publication Date Title
KR101715027B1 (ko) 입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템
JP5646612B2 (ja) 中間データ変更を使用する構成可能な鍵を用いるホワイトボックス暗号システム
JP5485694B2 (ja) ホワイトボックス実施のための暗号化方法
EP1997265B1 (en) Integrity of a data processing system using white-box for digital content protection
US8306216B2 (en) Method and system for tracking or identifying copy of implementation of computational method, and computation system
EP2044724B1 (en) Tamper resistance of a digital data processing unit
EP2924677B1 (en) Splitting s-boxes in a white-box implementation to resist attacks
EP3169017B1 (en) Split-and-merge approach to protect against dfa attacks
US9998279B2 (en) Electronic block cipher device suitable for obfuscation
WO2010146140A1 (en) White-box cryptographic system with configurable key using block selection
EP3035584B1 (en) Using single white-box implementation with multiple external encodings

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant