KR20200136315A - 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하고 난독화하기 위한 방법 - Google Patents
주어진 비밀 키를 갖는 암호화 알고리즘을 구현하고 난독화하기 위한 방법 Download PDFInfo
- Publication number
- KR20200136315A KR20200136315A KR1020200060089A KR20200060089A KR20200136315A KR 20200136315 A KR20200136315 A KR 20200136315A KR 1020200060089 A KR1020200060089 A KR 1020200060089A KR 20200060089 A KR20200060089 A KR 20200060089A KR 20200136315 A KR20200136315 A KR 20200136315A
- Authority
- KR
- South Korea
- Prior art keywords
- operand
- instruction
- code
- cmov
- movement
- Prior art date
Links
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/002—Countermeasures against attacks on cryptographic mechanisms
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2123—Dummy operation
-
- 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/046—Masking or blinding of operations, operands or results of the operations
-
- 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/08—Randomization, e.g. dummy operations or using noise
-
- 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
-
- 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/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하기 위한 방법에 관한 것으로서, 장비(10a)의 데이터 프로세싱 수단(11a)에 의한, 장비(10a)의 데이터 저장 수단(12a) 상에 저장된 상기 암호화 알고리즘을 구현하는 코드의 실행을 포함하고, 방법은 상기 비밀 키로 파라미터화된 상기 코드의 적어도 하나의 소위 난독화된 부분이 하나의 소위 cmov 명령어만을 사용하고, cmov 명령어는 명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 조건부 이동 명령어이고, 코드의 상기 난독화된 부분에서의 상기 cmov 명령어의 적어도 하나의 발생은 더미인 것을 특징으로 한다.
Description
본 발명은 암호화 분야에 관한 것으로, 특히 "화이트 박스" 유형의 암호화/복호화 방법에 관한 것이다.
기능은, 내부 동작에 액세스하는 것이 가능하지 않은 경우, 즉 입력부들 및 출력부들을 아는 것은 가능하지만 비밀 파라미터들 또는 중간 상태들을 아는 것은 가능하지 않은 경우, "블랙 박스"로 간주된다.
따라서, (예를 들어, 암호화 또는 서명을 위한) 암호화 알고리즘들은 그들의 신뢰성(공격들에 대한 저항)이 평가될 때 통상적으로 블랙 박스들인 것으로 가정된다.
예를 들어, DES("Data Encryption Standard"), 3DES(Triple DES) 또는 AES("Advanced Encryption Standard")와 같은 전형적인 암호화 알고리즘들을 취한다면, 이들은 64 또는 128 비트 크기(그리고 향후에는 256 비트)의 블록들에 대해 작동하지만, 그러한 블록을 단일 동작으로 프로세싱할 수 없다(이미, 64 비트 블록들의 1019개 초과의 가능한 값들이 있다). 따라서, 선형 동작들과 비선형 동작들을 연결함으로써 전형적으로 8 비트 크기(단지 256개의 가능성)의 더 작은 요소들에 대해 블록 내에서 작동하는 것이 필요하다.
블랙 박스 가설은 이 경우에서, 키들 또는 중간 상태들에 액세스할 수 없다는 것을 가정한다. 이러한 가설은 이들 파라미터들의 저장 및 조작에 대해 강한 제약을 부과한다. 실제로, 보조 채널 또는 결함 공격들로 불리는 하드웨어 구현에 대한 공격들의 자동화를 허용하기 위한 툴들이 최근에 공개되었다.
오늘날, 모바일 결제를 포함하는 많은 사용 경우들에 대해, 타깃 하드웨어의 보안에 관하여 적어도 가능한 가정들을 만드는 암호화 알고리즘들을 전개할 필요가 있다. 이어서, 보안 파라미터들의 보안 저장 및 조작이 애플리케이션 레벨에서 보장되어야 한다.
소위 화이트 박스 암호화는, 공격자가 알고리즘의 소프트웨어 구현에 완전히 액세스하는 것을 허용하는 공격의 경우에도 비밀들의 추출을 불가능하게 만들 것으로 가정되는, 암호화 알고리즘들의 구현들을 제안함으로써 이러한 과제를 충족시키는 것을 목표로 한다. 보다 정확하게는, 기능은, 메커니즘들이 보여지는 경우 "화이트 박스" 로 간주된다. 다시 말하면, 공격자는 그/그녀가 원하는 모든 것에 액세스하는 것으로 직접 가정한다(바이너리는 공격자에 의해 완전히 가시적이고 수정 가능하며 공격자는 실행 플랫폼을 완전히 제어한다). 그 결과, 구현 자체는 유일한 방어선(line of defense)이다.
개발된 제품들의 강도는 수학적 원리들 및 소프트웨어 난독화 혼합에 기초한다. 예를 들어, 내부 인코딩들로 불리는 랜덤(알려지지 않았지만 일정한) 퍼뮤테이션(permutation)들에 의해 내부 상태들을 "마스크" 하는 것이 제안되었다. 그러나, 오늘날 오로지 수학적 원리들에만 기초한 보호들의 강도는 충분하지 않은 것으로 보인다(문헌[Brecht Wyseur Software Security: White-Box Cryptography. PhD Thesis 2009] 참조).
추가적으로, 이는 논문들[Joppe W. Bos, Charles Hubain, Wil Michiels, Philippe Teuwen: Differential Computation Analysis: Hiding Your White-Box Designs is Not Enough, CHES2016], [Sanfelix, Eloi, Cristofaro Mune, and Job de Haas. "Unboxing the white-box." Black Hat EU 2015 (2015)], 및 [Jacob, M., Boneh, D., & Felten, E. (2002, November). Attacking an obfuscated cipher by injecting faults. In ACM Workshop on Digital Rights Management (pp. 16-31). Springer, Berlin, Heidelberg]에는 소위 보조 채널 또는 잘못된 공격들이 화이트 박스 암호화로 성공적으로 바뀔 수 있다는 것이 나타나 있다.
따라서, (채널 분석, 결함 등에 의해) 모든 알려진 공격들에 완전히 저항적인 DES 및 AES와 같은 표준 메커니즘들을 사용하는 새로운 "화이트 박스" 암호화 솔루션을 갖는 것이 바람직할 것이다.
제1 태양에 따르면, 본 발명은 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하기 위한 방법에 관한 것으로서, 장비 데이터 프로세싱 수단에 의한, 장비의 데이터 저장 수단 상에 저장된 상기 암호화 알고리즘을 구현하는 코드의 실행을 포함하고, 방법은 상기 비밀 키로 파라미터화된 상기 코드의 적어도 하나의 소위 난독화된 부분이 하나의 소위 cmov 명령어만을 사용하고, cmov 명령어는 명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 조건부 이동 명령어이고, 코드의 상기 난독화된 부분에서의 상기 cmov 명령어의 적어도 하나의 발생은 더미인 것을 특징으로 한다.
유리한 그리고 비제한적인 특성에 따르면:
명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 상기 조건부 이동 명령어 cmov는:
- 조건이 검증되는 경우, 제2 오퍼랜드의 제1 오퍼랜드로의 실제 이동을;
- 또는, 상기 조건이 검증되지 않은 경우, 제2 오퍼랜드의 제1 오퍼랜드로의 시뮬레이션 이동을 구현하고,
cmov 명령어의 상기 더미 발생은 상기 코드의 정상 실행 동안 제2 오퍼랜드의 제1 오퍼랜드로의 상기 이동 시뮬레이션을 구현하도록 의도되고;
제2 오퍼랜드의 제1 오퍼랜드로의 상기 이동 시뮬레이션은 제1 오퍼랜드의 제1 오퍼랜드로의 실제 이동 또는 제1 오퍼랜드와 다른 곳으로의 제2 오퍼랜드로의 실제 이동 중 어느 하나의 이동을 포함하고;
명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 각각의 조건부 이동 명령어 cmov 는 제2 오퍼랜드의 제1 오퍼랜드로의 캡슐화된 소위 무조건부 이동 명령어 mov로부터 표현되고;
데이터 프로세싱 수단은 보안 가드 확장 환경과 같은 보안 실행 환경을 구현하고, 여기서 상기 암호화 알고리즘을 구현하는 상기 코드가 실행되고;
상기 난독화된 코드 부분은 cmov 명령어의 각각의 실제 발생에 대한 cmov 명령어들의 복수의 더미 발생들을 포함하고;
예상 값(r)을 포함하는, o 로 표기된 객체의 M개의 가능한 값들(o i ) 모두에 대응하는, cmov 명령어들의 실제 발생 및 대응하는 M-1개의 더미 발생들의 세트에 대해, 결과들은:
- 세트의 i-번째 발생에 대해, 이동 조건은 "o 은 o i 와 동일함"이고;
- 실제 발생이 j-번째이므로 o j =r 이고;
- 세트에서의 다른 모든 발생들은 더미 발생들이고;
상기 코드는 데이터 프로세싱 수단을 어셈블리하기 위한 언어로 되어 있고;
상기 어셈블리 언어는 x86 어셈블러이고;
상기 암호화 알고리즘은 대칭 암호화 알고리즘이고, 코드의 상기 난독화된 부분은 상기 대칭 암호화 알고리즘의 적어도 하나의 라운드를 구현한다.
제2 태양에 따르면, 본 발명은, 서버의 데이터 프로세싱 수단에 의한 다음의 단계들의 구현을 포함하는 제1 컴퓨터 코드에 의해 표현된 주어진 비밀 키로 암호화 알고리즘을 난독화하기 위한 방법에 관한 것이다:
(a) 제1 코드를 제2 코드로 재기록하는 단계 - 상기 비밀 키를 사용하는 상기 코드의 적어도 하나의 소위 난독화된 부분은 하나의 소위 mov 명령어만을 사용하고, 상기 mov 명령어는 명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 무조건부 이동을 위한 명령어임 -; 및
(b) 제2 코드에 대응하는 제3 코드를 생성하는 단계 - 난독화된 부분의 각각의 mov 명령어는 소위 cmov 명령어에 의해 대체되고, cmov 명령어는 명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 조건부 이동을 위한 명령어이고, 적어도 하나의 더미 cmov 명령어가 추가됨 -.
유리하지만 비제한적인 특성에 따르면, 본 방법은, 상기 암호화 알고리즘의 구현하기 위해 장비의 데이터 프로세싱 수단에 의한 실행을 할 목적으로 장비의 저장 수단에 저장하기 위해 제3 코드를 장비로 송신하는 단계(c)를 포함한다.
제3 및 제4 태양에 따르면, 본 발명은 주어진 비밀 키로 암호화 알고리즘을 구현하기 위한 또는 난독화하기 위한 제1 태양에 따른 또는 제2 태양에 따른 방법의 실행을 위한 코드 명령어들을 포함하는 컴퓨터 프로그램 제품, 및 컴퓨터 프로그램 제품이 주어진 비밀 키로 암호화 알고리즘의 난독화를 구현하기 위한 제1 태양에 따른 또는 제2 태양에 따른 방법을 실행하기 위한 코드 명령어들을 포함하는, 컴퓨터 장비에 의해 판독 가능한 저장 수단에 관한 것이다.
본 발명의 다른 특징들 및 이점들은 바람직한 실시예의 다음의 설명을 읽을 때 나타날 것이다. 이러한 설명은 첨부 도면을 참조하여 주어질 것이다.
- [도 1]: 도 1은 본 발명에 따른 방법들의 구현을 위한 아키텍처의 도면이다;
- [도 2]: 도 2는 본 발명에 따른 난독화하기 위한 방법의 일 실시예를 예시한다.
- [도 1]: 도 1은 본 발명에 따른 방법들의 구현을 위한 아키텍처의 도면이다;
- [도 2]: 도 2는 본 발명에 따른 난독화하기 위한 방법의 일 실시예를 예시한다.
아키텍처
도 1을 참조하면, 모바일 단말기(스마트폰, 터치 패드 등)와 같은 장비(10a), 즉 특히 보안성이 있는 하드웨어를 갖지 않고 하드웨어 구현에 대한 공격들의 대상이 될 수 있으며 화이트 박스 접근법이 최대 관심을 갖는 장비 내에서 구현된 "화이트 박스" 암호화 알고리즘을 구현하기 위한 방법; 및 이러한 화이트 박스 구현을 허용하는 암호화 알고리즘을 난독화하기 위한 방법이 제안된다.
장비(10a)는 데이터 프로세싱 수단(11a)(프로세서) 및 데이터 저장 수단(12a)(메모리, 예컨대 플래시 메모리)을 포함한다.
장비(10a)는, 예를 들어 인터넷 네트워크(20)를 통해 서버(10b)에 접속된다. 이 서버(10b)(예를 들어, 보안 솔루션의 제공자의 서버)로부터, 메모리 (12a)에 저장되고 본 방법의 구현에 사용될 비밀들을 포함하는 코드들(이는 이하에 설명될 것임)을 수신하는 것이 필요할 수 있다.
장비(10a)는 그 자체가 다른 제3자 서버들(10c)에 접속될 수 있는데, 장비는 암호화된 데이터를 본 방법에 의해 그 서버들과 교환할 수 있다.
암호화 방법
제1 태양에 따른 방법은 암호화 알고리즘을 구현하기 위한 방법, 특히 "암호화 또는 복호화" 방법이고, 이는 경우에 따라 데이터를 암호화하거나 이들을 복호화하는 것을 가능하게 만드는 것을 의미한다. 따라서, 그것은, 특히 대칭 유형의, 또는 "비밀 키" 유형의, 또는 비대칭 유형(예를 들어, 제3자들이 공개 키를 갖는 서명 알고리즘)의 것이다.
본 방법은 현재의 표준들인 3DES 또는 AES와 같은 알려진 알고리즘들의 새로운 구현임을 이해할 것이다. 보다 정확하게는, 그것은 새로운 암호화 전략을 제안하는 것이 아니라, 알고리즘의 새로운 구현만을, 그리고 이에 따라, 모든 "화이트 박스" 공격들에 대해 저항적인 알고리즘 내에서 데이터를 조작하는 새로운 방식을 제안한다. 따라서, 본 발명의 방법은 전통적으로, 데이터 저장 수단(12a)에 저장된 상기 암호화 기능을 (난독화된 부분으로서 지칭되는 코드의 적어도 일부에 대해) 난독화된 방식으로 구현하는 코드의, 장비(10a)의 데이터 프로세싱 수단(11a)에 의한 실행을 포함한다. 상기 코드는 바람직하게는 어셈블리 언어로 지칭되는 데이터 수단(11a)에 의해 직접 해석가능한 언어로 되어 있다. 예를 들어, x86 패밀리의 프로세서들(이들은, 현재 서비스 중인 대다수의 프로세서들을 구성함)은 x86 세트의 명령어들을 사용하여 x86 어셈블리 언어를 인식한다. 본 개시내용의 나머지에서, x86의 예가 취해질 것이다.
"난독화"는 본 명세서에서, 대체적으로 역 엔지니어링(reverse engineering)을 방지하기 위해, 그리고 특히 알고리즘 및 그의 키들에 대한 액세스를 방지하기 위해 컴퓨터 코드를 "판독이 불가능하게(illegible) 또는 이해할 수 없게(incomprehensible)" 하는 사실을 의미한다.
전체 알고리즘의 코드가 반드시 개시될 방식으로 완전히 난독화될 필요는 없고, 그것이 실제로 소위 "민감한" 부분들, 특히 상기 비밀 키로 파라미터화된 동작들을 나타내는 것들, 및 가장 특히 치환 함수들의 응용을 포함하는 것들을 난독화하기에 충분하다는 것에 유의해야 한다.
보다 정확하게는, 종래의 방식에 따르면, 구현된 알고리즘은 데이터 블록별로 프로세싱하고, 블록 내에서 그것은 더 작은 크기의 요소들, 예를 들어 (예컨대, AES의 경우) 128 비트 블록에 대해 일 바이트의 16개의 요소들을 조작한다. 이들 요소들은 전형적으로 쌍들로 조작된다.
따라서, 본 방법은 바람직하게는 미리결정된 비밀 키들의 n-튜플({k i } i<n )로 데이터의 n-튜플({a i } i<n )을 암호화하거나 복호화한다.
상기 데이터 n-튜플({a i } i<n )의 각각의 요소(a i )는 로 표시되는 공간({0;1} k )에서의 값을 갖고, 유리하게는 일 바이트의 크기(8 비트 "바이트", 즉, k= 8)를 갖는다.
더 작은 요소들로부터 완전한 블록을 프로세싱하기 위해, 블록 내에서 연산들을 증가시킬 필요가 있고, 이러한 목적을 위해 본 발명의 방법은, 종래의 방식으로, 유리하게는, 선형 다중화 함수(L)의 사용과 조합된, 치환 비선형 함수(f)의 사용을 포함하고, 각각은 구현될 암호화 알고리즘에 기초하여 주어진다.
치환 함수(f)는, 의 입력 요소를 입력으로서 취하고 동일한 크기의(즉, 의) 출력 요소를 생성하는 비밀 키(k i )로 파라미터화된 함수이다. 이들 함수들은 잘 알려져 있으며, 예를 들어, DES 및 AES의 경우, 함수(f)는 종종 표로 만들어지고 이어서 S-박스로 불린다.
알고리즘은 전형적으로, 전체 블록이 프로세싱될 때까지, 요소들을 퍼뮤팅하기 위해 f를 사용하는 단계 및 이어서 데이터를 송신하기 위해 L을 사용하는 단계 등을 교대로 포함하고, 이것은 알고리즘은 알고리즘의 라운드(round)로 불리는 것이다. 따라서, 본 발명의 방법은 유리하게는, 상기 n-튜플({a i } i<n )의 것들을 포함하는 데이터의 세트를 암호화하도록 또는 복호화하도록 이것의 반복을 포함하는 것임이 이해될 것이다.
이하에 개시된 바와 같이 난독화될 민감한 부분들은, 특히 제1 및/또는 마지막 라운드들(예를 들어, AES 내의 제1/마지막 3개), 다시 말하면 상기 비밀 키를 사용하는 치환 함수들의 제1 및/또는 마지막 라운드들에서의 응용들로 제한될 수 있다.
중간 라운드들만을 타깃으로 하는 공격들이 있다는 것에 유의해야 하고; 따라서, 완전한 보호가 추구되는 경우 모든 라운드들에 대응하는 부분들을 난독화하는 것이 가능하다.
또한, 치환 함수만을 보호하는 것이 항상 충분한 것은 아니며; 그것이 공격을 가능하게 하기에 너무 많은 키 비트들에 종속할 때까지 모든 동작들을 통해 민감한 데이터를 보호하는 것이 흥미로울 수 있다는 것에 유의해야 한다. 예를 들어, AES의 경우, 이는 제2 라운드의 "혼합 컬럼들"만큼 멀리 가는 것에 대응한다.
본 발명의 원리
본 방법은, 상기 코드의 적어도 하나의 소위 난독화된 부분이 하나의 소위 cmov 명령어만을 사용하고, cmov 명령어는 명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 조건부 이동을 위한 명령어이며, 코드의 상기 난독화된 부분에서의 상기 cmov 명령어의 적어도 하나의 발생은 더미라는 점에서 주목할 만하다.
보다 정확하게는, 상기 난독화된 부분은 복수의 명령어들로 이루어지며, 이들 각각은 cmov 명령어인데, 즉, cmov 명령어들 외에 어떠한 명령어도 없다. 자연스럽게, 상기 부분의 2개의 cmov 명령어들은 동일하지 않을 것이고; 이들은 상이한 오퍼랜드들(즉, 인수들, 파라미터들)을 가질 수 있다. 각각의 오퍼랜드는 레지스터, 메모리 어드레스, 문자 값(literal value) 또는 라벨일 수 있고, 전형적인 경우에, 이들은 이동이 제2 오퍼랜드에 의해 지정된 레지스터의 콘텐츠를 제1 오퍼랜드에 의해 지정된 레지스터 내에 기록하는 것으로 이루어지도록 2개의 레지스터들인 것에 유의해야 한다.
조건부 이동 명령어(cmov)는, 명령어의 제2 오퍼랜드의 제1 오퍼랜드로의 무조건부 이동(mov), 즉 유일한 이동(only move)으로 지칭되는 종래의 명령어(특히, x86 세트의 명령어들)와 비교함으로써 이해된다.
실제로, cmov는 조건이 검증되는 필요충분조건 하에서 이동을 구현하는 반면, mov는 항상 그것을 구현한다. 전형적으로, 이러한 조건은 "플래그"라고 불리는 부울 변수(boolean variable)의 값이다.
유리하게는, cmov 명령어는 더 정확하게 다음을 구현한다:
- 조건이 검증되는 경우, 제2 오퍼랜드의 제1 오퍼랜드로의 실제 이동(즉, 정상 mov 명령어);
- 또는, 조건이 검증되지 않은 경우, 제2 오퍼랜드의 제1 오퍼랜드로의 이동의 시뮬레이션.
이 아이디어는 장비에 대한 액세스를 갖는 공격자가 명령어의 2개의 분기들 사이에서 구별할 수 없다는 것, 즉 이동이 실제로 이루어졌는지 아닌지 여부를 알 수 없다는 것이다.
따라서, 시뮬레이션은 유리하게는, 진정한 이동으로서, 메모리 액세스 및 기록 메모리를 포함하지만, 자연스럽게 시뮬레이션은 제2 오퍼랜드의 제1 오퍼랜드로의 실제 이동을 포함하지 않는다.
특히, 목적지(제1 오퍼랜드)에는 액세스할 것이지만, 그의 현재 콘텐츠는 제2 오퍼랜드 대신에 거기에 복사될 것이다. 따라서, 소정 방식으로, 제2 오퍼랜드의 제1 오퍼랜드로의 이동의 시뮬레이션은 제1 오퍼랜드의 제1 오퍼랜드로의 이동으로서 보일 수 있다(이는 메모리를 현재 상태 그대로 둔다).
대안적으로, 시뮬레이션은 사용되지 않을 다른 목적지로의 이동을 포함할 수 있는데, 즉, 제1 오퍼랜드와 다른 곳으로의 제2 오퍼랜드의 이동으로서 제2 오퍼랜드의 제1 오퍼랜드로의 이동의 시뮬레이션을 볼 수 있다.
cmov 명령어는 데이터 프로세싱 수단에 의해 인식되는 명령어들의 세트 내에 본래 존재할 수 있다는 것에 유의해야 한다(이는 원래의 x86 세트의 명령어들에서의 경우가 아니라, 더 최근의 버전들이 그것을 포함한다는 것에 유의해야 한다). 명령어들의 원래의 세트는, 조건부이지만 파라미터 조건을 갖지 않는 "0인 경우 조건부 이동"에 대한 cmovz 명령어를 포함한다는 것에 유의해야 한다: 더 정확하게는, 이동은, 0 표시자(Zero Flag, ZF)가 값 1을 갖는 경우에 유효하거나, 또는 기본 명령어들을 사용하는 "래퍼(wrapper)"에 의해 획득된다. 보다 정확하게는, 기본 mov 명령어가 래퍼 내에 캡슐화된다.
특히, 예를 들어 문헌[Ashay Rane, Calvin Lin, Mohit Tiwari: Raccoon: Closing Digital Side-Channels through Obfuscated Execution. USENIX Security Symposium 2015]에 제안된 (cmovz 명령어를 사용하는) 다음의 원래의 x86 명령어들에서 래퍼를 사용하는 것이 가능하다:
01:
cmov(uint8_t pred,uint32_t t_val,uint32_t f_val){
02:
uint32_t result;
03:
__asm__ volatile (
04:
"mov
%2, %0;"
05:
"test
%1, %1;"
06:
"cmovz
%3, %0;"
07:
"test
%2, %2;"
08:
: "=r" (result)
09:
: "r" (pred),"r" (t_val),"r" (f_val)
10:
: "cc"
11:
);
12:
return result;
13:
}
이러한 래퍼의 코드의 작은 크기는 각각의 명령어가 임의의 궁극적인 정보 누출들을 검출하기 위해 철저히 검사될 수 있게 한다. 코드가 프로세서 레지스터들에만 작용하고 메모리에는 절대로 액세스하지 않기 때문에, 그것은 프로세서의 보안 구역의 한계들 내에서 동작할 수 있다. 비밀 조건은 레지스터 %1에 로딩된다. 라인 4의 mov 명령어는 목적지 레지스터를 t_val로 초기화한다. 라인 5에서의 테스트 명령어는 pred가 0과 동일한지 여부를 체크하고, 제로 표시자(Zero Flag, ZF), 부호 표시자(Sign Flag, SF) 및 패리티 표시자(Parity Flag, PF)를 업데이트하여 비교를 반영한다. 다음의 cmovz 명령어는, pred가 0과 동일한 경우에만 목적지 레지스터에 값 f_val을 복사한다. 이 단계에서, ZF, SF 및 PF는 여전히 비교의 결과들을 포함한다. 라인 7 상의 테스트 명령어는 알려진 비-비밀 값들을 비교함으로써 이들 표시자를 겹쳐쓰기한다.
cmov 명령어의 사용은, 당업자가 SGX (Secure Guard Extensions) 환경에서의 결점들에 대한 솔루션으로서 참조(또한, [Adil Ahmad, Kyungtae Kim, Muhammad Ihsanulhaq Sarfaraz, Byoungyoung Lee: OBLIVIATE: A Data Oblivious Filesystem for Intel SGX. NDSS 2018] 참조)할 수 있는, 문헌 [Adil Ahmad, Byunggill Joe, Yuan Xiao, Yinqian Zhang, Insik Shin, and Byoungyoung Lee, OBFSCURO: A Commodity Obfuscation Engine on Intel SGX, NDSS 2019]에 개시되어 있다.
더 정확하게, SGX는, 완전 보안성으로 내부에서 민감한 알고리즘들을 구현할 목적으로, 개인 메모리 영역들(보안 엔클레이브(enclave)들로 지칭됨) - 그의 콘텐츠는, 예를 들어 상위 특권 레벨들에서 실행되는 프로세스들에 의해, 판독 또는 기록 목적을 위해 보호 및 액세스불가능함 - 을 할당할 것을, 즉 프로그램들이 신뢰성 및 무결성으로 보호적으로 실행될 수 있는, 특히 OS로부터 보호될 수 있는 공간을 가질 것을 제안한다. 엔클레이브는 "반전된 샌드박스" 로서 보여질 수 있어, 더 강건한 블랙 박스 구현을 허용한다. 다시 말하면, SGX는 그 자체로 어떠한 화이트 박스 보호도 제공하지 않는다는 것이 이해된다: 엔클레이브 내에서 실행되는 프로그램들은 대체적으로 액세스 가능한 내부 키들 및 상태들을 갖고 통상의 방식으로 기록되며, 보호는 엔클레이브의 기밀누설 방지 (leakproofness)에 의해 제공된다.
더욱이, 이러한 아키텍처는 많은 방식들로, 예를 들어 보조 채널들을 통한 공격들(데이터에 대한 액세스의 패턴들 상의 누설들, 캐시 공격들)에 의해 또는 스펙트럼 유형의 공격들에 의해 공격받기 쉬운 것으로 입증되었다.
OBLIVIATE/OBFSCURO 솔루션들은 "불확정성(obliviousness)", 즉 보조 채널 공격들에 의해 검출될 수 있는 트레이스들(예를 들어, 캐시)을 남기지 않는다는 사실을 추가함으로써 이들 취약성들 중 일부를 정정하는 것을 추구한다. 이를 위해, cmov 명령어들과 조합된, 리소스에 대한 액세스들을 숨기기 위해, 불확정 RAM 유형 알고리즘들[E. Stefanov, M. Van Dijk, E. Shi, C. Fletcher, L. Ren, X. Yu, and S. Devadas, "Path oram: an extremely simple oblivious ram protocol," in Proceedings of the 20th ACM Conference on Computer and Communications Security (CCS), Berlin, Germany, Oct. 2013]의 사용이 제안된다.
따라서, OBFSCURO는 보조 채널들을 통한 소정 공격들, 이 경우에는 타이밍을 통한 또는 캐시를 통한 소정 공격들을 방지하는 데 성공한다.
그러나, 보조 채널들을 통한 많은 다른 공격들이, 특히 소모, 전자기 방출들, 결함들을 통한 공격들, 및 대체적으로 하드웨어에 대한 풀 액세스가 이용 가능할 때 가능한 공격들을 가능한 상태로 유지된다는 것이 발견되었다.
다시 말하면, OBFSCURO가 서버와 같은 원격 장비에서 구현되는 암호화 알고리즘들의 경우에 효과적이라면, 이것은 이동 단말기 유형의 장비(10a)에 대한 경우가 아니다.
본 방법 배후의 아이디어는, 임의의 컴퓨터 코드가 cmov 명령어를 사용하여 단지 기록될 수 있고, 이에 의해 OBFSCURO의 한계들을 해결할 수 있다는 것이다.
실제로, mov(무조건부) 명령어는 튜링 완전(Turing-complete)이며, 따라서 임의의 코드가 mov 명령어로부터 완전히 재기록될 수 있다는 것이 입증되었다.
특히, M/o/Vfuscator 컴파일러가 있으며, 이는 입력으로서 x86 코드를 취하고 mov 명령어만을 사용하여 그것을 재기록한다. 자연스럽게, 획득된 코드는 불필요하게 길고 복잡하며, 따라서 난독화된다. 평균적으로, 코드 파일의 크기에는 재기록으로 인해 35를 곱한다는 것에 유의해야 한다.
그로부터, mov 대신에 cmov 명령어들로 이 시간에 기록된 동일한 코드가 액세스 가능한 하드웨어의 경우에서도 그리고 이에 따른 화이트 박스 환경에서도 액세스 불가능하게 되는데, 그 이유는 코드의 각각의 명령어가 그의 조건부 특성의 사실로 인해 추적 불가능하기 때문이다.
자연스럽게, 코드의 상기 난독화된 부분에서 상기 cmov 명령어의 적어도 하나의 발생은 더미여야 한다. "더미"는, 상기 코드의 정상 실행 동안 조건이 사실이 아니라는 것을, 따라서 이 명령어에 의해 정의된 이동이 구현되도록 의도되지 않는다는 것을 의미한다. 또한, 명령어가 공격자를 속이기만 하고 알고리즘에 기여하지 않는다는 의미에서, 용어 디코이 명령어(decoy instruction)가 있다. 다시 말하면, 이러한 명령어에 의해 표시되는 이동이 실제로 수행되었다면, 실행은 에러를 초래할 것이다.
보다 정확하게는, 코드가 N 개의 mov 명령어들로 기록될 수 있는 것으로 가정한다; N 개의 cmov 명령어들만이 사용된다면, 그것은 조건이 항상 참이고 어떠한 이동도 시뮬레이션하지 않기 때문이다. N'>N 개의 cmov 명령어들이 사용되면, 실제로 구현되어야 하는 N 개의 명령어들만이 있다는 것을 알더라도, 공격자는 그들이 어느 것들인지 모를 것이고 그들을 N'-N>0 개의 더미 명령어들과 구별하지 않을 것이다.
각각의 cmov 명령어가 실제 이동 또는 시뮬레이션을 트리거하는 바람직한 실시예에서, 더미 명령어는 제2 오퍼랜드의 제1 오퍼랜드로의 이동 시뮬레이션을 구현하도록 의도된다.
요약하면, 난독화된 부분을 실행할 때, 각각의 cmov 명령어는, 그것이 실제이든 또는 더미이든지 간에 실행될 것이지만, 실제 cmovs의 실행만이 유효한 그리고 정확한 이동을 일으킬 것이다(더미 cmovs의 실행은 거짓 이동 또는 부정확한 이동 중 어느 하나를 일으킨다).
제1 실시예에 따르면, 예를 들어 각각의 cmov에 대해 위에서 정의된 바와 같은 래퍼를 사용함으로써 SGX와 같은 보안 실행 환경에서 난독화된 코드를 실행하는 것이 가능하다.
전체 화이트 박스 환경이 요망되는 경우(즉, 임의의 프로세서 상에서 종래의 그리고 불안전한 방식으로 실행됨), 제2 실시예에 따르면 문헌 [Emmanuel Prouff, Matthieu Rivain: A Generic Method for Secure SBox Implementation. WISA 2007]에 개시되는 것에 의해 고무된 래퍼가 사용될 수 있다.
이 문헌은 S-Box의 구현을 제안하는데, 여기서 객체의 0 내지 2 k -1개의 모든 가능한 값들(S-Box가 내의 값들을 갖는다고 가정함) 내의 값들을 갖는다고 가정함)은 1을 제외하고 모두 거짓으로 간주된다. 이 원리는 cmov 명령어들로 확장될 수 있다: 각각의 mov 명령어는 복수의 cmov 명령어들로 복제되고, 그 중 하나는 "참" 이고 나머지는 더미이다. 다시 말하면, 코드가 N개의 mov 명령어들로 기록될 수 있다는 것 및 객체의 M개의 가능한 값들이 있다는 것을 가정하면, N 개의 실제 명령어들 및 Nx(M-1)개의 더미 명령어들을 포함하는 NxM 개의 cmov 명령어들이 사용된다.
보다 정확하게는, 예상 값(r)을 포함하는, o로 표기된 객체의 M개의 o i 가능한 값들 모두에 대응하는, M-1개의 더미 명령어들 및 하나의 실제 명령어를 포함하는 명령어들의 "연관된" 세트 (cmov i , i<M )(cmov i 는 세트의 i-번째 cmov 명령어를 지정함)에 대해, 결과는 다음과 같다:
- 각각의 cmov i 에 대해, 조건은 "o가 o i 와 동일함" 이고;
- 실제 명령어는 cmov j 이므로 j =r 이고;
- 다른 cmov i (즉, o i ≠r) 모두는 더미 명령어들이다.
이와 같이, 당업자는 이 문헌 [Emmanuel Prouff, Matthieu Rivain: A Generic Method for Secure SBox Implementation. WISA 2007]의 알고리즘들 중 하나의 알고리즘을 래퍼로서 사용할 수 있다.
대안적으로 또는 추가적으로, 실행을 속이고자 하는 상대에 대항할 수 있음을 확신하기 위해, 상이한 대안적인 cmov 명령어들의 병렬 실행을 위한 스레드들(특히 객체의 M개의 상이한 값들에 대응하는 M개의 cmov 명령어들의 동시적 실행을 위한, 실제 또는 더미)을 구현함으로써 복제 기법들이 사용될 수 있고, 문헌 [Oscar Reparaz, Lauren De Meyer, Bilgin, Victor Arribas, Svetla Nikova, Ventzislav Nikov, Nigel P. Smart: CAPA: The Spirit of Beaver Against Physical Attacks. CRYPTO (1) 2018]을 참조하자.
모든 이들 난독화 기법들을 조합함으로써, 그리고 M= 2 8 = 256을 취함으로써, 암호화 알고리즘을 구현하는 원래의 코드의 크기에는 전형적으로 적어도 10000을 곱한다는 것에 유의한다. 명령어들 각각이 실제 및 더미 양측 모두일 수 있음을 알면, 임의의 보조 채널을 통한 임의의 공격에 의해, 사용가능한 정보를 식별하는 것이 더 이상 가능하지 않음이 이해된다.
난독화 방법
제2 태양에 따르면, 그리고 도 2를 다시 참조하면, 제1 컴퓨터 코드에 의해 표현되는 주어진 비밀 키로 암호화 알고리즘을 난독화하기 위한 방법, 즉, 제1 태양에 따른 알고리즘의 구현을 위해 상기 난독화된 코드(이것은 제3 코드로 지정될 것임)를 획득하기 위한 방법이 제안된다. 제1 코드는 전형적으로 종래의 프로그래밍 언어로부터 직접 기록된 또는 컴파일된, 즉, 비-난독화된(non-obfuscated) 그리고 다양한 명령어들을 사용하는 바와 같은 어셈블리 언어 코드이다.
본 방법은 전형적으로 서버(10b) 상에서 보안 방식으로 구현된다.
따라서, 서버(10b)의 데이터 프로세싱 수단(11b)은 제1 코드를 제2 코드로 재기록하는 단계(a)로 시작하고, 여기서 상기 비밀 키를 사용하는 상기 코드의 적어도 소위 난독화된 부분은 단일의 소위 mov 명령어만을 사용하고, mov 명령어는 명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 무조건부 이동을 위한 명령어이다.
다시 말하면, 원래의 코드는 M/o/Vfuscator와 같은 툴을 사용함으로써 mov-only로 변환된다.
제2 코드는 어셈블리 언어로 있지 않을 제1 코드로부터 직접 컴파일될 수 있다는 것에 유의해야 한다.
다음의 단계(b)에서, 제2 코드에 대응하는 제3 코드가 생성되고, 여기서 난독화된 부분의 각각의 mov 명령어는 소위 cmov 명령어에 의해 대체되고, cmov 명령어는 명령어의 제2 오퍼랜드의 명령어의 제1 오퍼랜드로의 조건부 이동을 위한 명령어이다. 이 단계에서, 각각의 cmov 명령어는 실제 명령어이며, 이는 단계(b)가 적어도 하나의 더미 cmov 명령어를 제3 코드에 추가하는 것을 포함하는 이유이다.
이를 위해, 전술된 바와 같이, 각각의 실제 cmov 명령어에 대한 복수의 더미 cmov 명령어들을, 특히 객체가 값들을 취할 수 있는 만큼 많은 횟수로 복제함으로써, 추가하는 것이 가능하다.
마지막으로, 난독화하기 위한 방법은, 상기 암호화 알고리즘의 구현, 즉 제1 태양에 따른 방법을 위해 장비(10a)의 데이터 프로세싱 수단(11a)에 의한 실행을 할 목적으로 장비(10a)의 저장 수단(12a) 상의 저장을 위해 제3 코드를 장비(10a)로 송신하는 단계(c)를 포함할 수 있다.
컴퓨터 프로그램 제품
제3 태양 및 제4 태양에 따르면, 본 발명은 주어진 비밀 키로 암호화 알고리즘을 구현하는 또는 난독화하는 본 발명의 제1 태양 또는 제2 태양에 따른 방법의 (특히, 장비(10a)의 그리고/또는 서버(10b)의 데이터 프로세싱 수단(11a, 11b) 상에서의) 실행을 위한 코드 명령어들을 포함하는 컴퓨터 프로그램 제품, 뿐만 아니라 이 컴퓨터 프로그램 제품이 발견되는 컴퓨터 장비에 의해 판독 가능한 저장 수단(장비(10a) 및/또는 서버(10b)의 메모리(12a, 12b))에 관한 것이다.
Claims (14)
- 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하기 위한 방법으로서, 장비(10a)의 데이터 프로세싱 수단(11a)에 의한, 상기 장비(10a)의 데이터 저장 수단(12a) 상에 저장된 상기 암호화 알고리즘을 구현하는 코드의 실행을 포함하고, 상기 방법은 상기 비밀 키로 파라미터화된 상기 코드의 적어도 하나의 소위 난독화된 부분이 하나의 소위 cmov 명령어만을 사용하고, 상기 cmov 명령어는 상기 명령어의 제2 오퍼랜드의 상기 명령어의 제1 오퍼랜드로의 조건부 이동 명령어이고, 상기 코드의 난독화된 부분에서의 상기 cmov 명령어의 적어도 하나의 발생은 더미인 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 명령어의 제2 오퍼랜드의 상기 명령어의 제1 오퍼랜드로의 상기 조건부 이동 cmov 명령어는:
- 조건이 검증되는 경우, 상기 제2 오퍼랜드의 상기 제1 오퍼랜드로의 실제 이동을;
- 또는, 조건이 검증되지 않은 경우, 상기 제2 오퍼랜드의 상기 제1 오퍼랜드로의 이동의 시뮬레이션을 구현하고,
상기 cmov 명령어의 더미 발생은 상기 코드의 정상 실행 동안 상기 제2 오퍼랜드의 상기 제1 오퍼랜드로의 상기 이동 시뮬레이션을 구현하도록 의도되는, 방법. - 제2항에 있어서, 상기 제2 오퍼랜드의 상기 제1 오퍼랜드로의 상기 이동 시뮬레이션은 상기 제1 오퍼랜드의 상기 제1 오퍼랜드로의 실제 이동 또는 상기 제1 오퍼랜드와 다른 곳으로의 상기 제2 오퍼랜드의 실제 이동 중 어느 하나의 이동을 포함하는, 방법.
- 제1항 또는 제3항에 있어서, 상기 명령어의 제2 오퍼랜드의 상기 명령어의 제1 오퍼랜드로의 각각의 조건부 이동 cmov 명령어는 상기 제2 오퍼랜드의 상기 제1 오퍼랜드로의 캡슐화된 소위 mov 무조건부 이동 명령어로부터 표현되는, 방법.
- 제1항 또는 제4항에 있어서, 상기 데이터 프로세싱 수단(11a)은 보안 가드 확장 환경과 같은 보안 실행 환경을 구현하고, 상기 암호화 알고리즘을 구현하는 상기 코드가 실행되는, 방법.
- 제1항 또는 제5항에 있어서, 상기 난독화된 코드 부분은 cmov 명령어의 각각의 실제 발생에 대한 cmov 명령어들의 복수의 더미 발생들을 포함하는, 방법.
- 제6항에 있어서, 예상 값(r)을 포함하는, o로 표기된 객체의 M개의 가능한 값들(o i ) 모두에 대응하는, cmov 명령어들의 실제 발생 및 대응하는 M-1개의 더미 발생들의 세트에 대해, 결과들은:
- 상기 세트의 i-번째 발생에 대해, 변위 조건이 "o는 o i과 동일함"이고;
- 상기 실제 발생이 j-번째이므로 o j =r 이고;
- 상기 세트에서의 다른 모든 발생들이 더미 발생들인, 방법. - 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 코드는 상기 데이터 프로세싱 수단(11a)의 어셈블리 언어로 되어 있는, 방법.
- 제8항에 있어서, 상기 어셈블리 언어는 x86 어셈블러인, 방법.
- 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 암호화 알고리즘은 대칭 암호화 알고리즘이고, 상기 코드의 난독화된 부분은 상기 대칭 암호화 알고리즘의 적어도 하나의 라운드를 구현하는, 방법.
- 서버(10b)의 데이터 프로세싱 수단(11b)에 의한 다음의 단계들의 구현을 포함하는 제1 컴퓨터 코드에 의해 표현된 비밀 키를 갖는 암호화 알고리즘을 난독화하기 위한 방법으로서,
(a) 제1 코드를 제2 코드로 재기록하는 단계 - 상기 비밀 키를 사용하는 상기 코드의 적어도 하나의 소위 난독화된 부분은 하나의 소위 mov 명령어만을 사용하고, 상기 mov 명령어는 상기 명령어의 제2 오퍼랜드의 상기 명령어의 제1 오퍼랜드로의 무조건부 이동을 위한 명령어임 -; 및
(b) 상기 제2 코드에 대응하는 제3 코드를 생성하는 단계 - 상기 난독화된 부분의 각각의 mov 명령어는 소위 cmov 명령어에 의해 대체되고, 상기 cmov 명령어는 상기 명령어의 제2 오퍼랜드의 상기 명령어의 제1 오퍼랜드로의 조건부 이동을 위한 명령어이고, 적어도 하나의 더미 cmov 명령어가 추가됨 - 를 포함하는, 방법. - 제11항에 있어서, 상기 암호화 알고리즘의 구현을 위해 장비(10a)의 데이터 프로세싱 수단(11a)에 의한 실행을 할 목적으로 상기 장비(10a)의 저장 수단(12a)에 저장하기 위해 상기 제3 코드를 상기 장비(10a)로 송신하는 단계(c)를 포함하는, 방법.
- 프로그램이 컴퓨터에 의해 실행될 때, 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하기 위한 또는 난독화하기 위한 제1항 내지 제12항 중 어느 한 항에 따른 방법의 실행을 위한 코드 명령어들을 포함하는 컴퓨터 프로그램 제품.
- 컴퓨터 프로그램 제품이 제1항 내지 제12항 중 어느 한 항에 따른, 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하기 위한 또는 난독화하기 위한 방법의 실행을 위한 코드 명령어들을 포함하는 컴퓨터 장비에 의해 판독가능한 저장 수단.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1905592A FR3096851B1 (fr) | 2019-05-27 | 2019-05-27 | Procedes de mise en œuvre et d’obfuscation d’un algorithme cryptographique a cle secrete donnee |
FR1905592 | 2019-05-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200136315A true KR20200136315A (ko) | 2020-12-07 |
Family
ID=68581848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200060089A KR20200136315A (ko) | 2019-05-27 | 2020-05-20 | 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하고 난독화하기 위한 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20200382271A1 (ko) |
EP (1) | EP3745638A1 (ko) |
JP (1) | JP2020194157A (ko) |
KR (1) | KR20200136315A (ko) |
CA (1) | CA3081448A1 (ko) |
FR (1) | FR3096851B1 (ko) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449713B1 (en) * | 1998-11-18 | 2002-09-10 | Compaq Information Technologies Group, L.P. | Implementation of a conditional move instruction in an out-of-order processor |
JP4806402B2 (ja) * | 2005-04-21 | 2011-11-02 | パナソニック株式会社 | プログラム難読化装置及び難読化方法 |
US9794602B2 (en) * | 2012-10-29 | 2017-10-17 | Echostar Technologies L.L.C. | Systems and methods for securely providing streaming media content on-demand |
US10089500B2 (en) * | 2015-09-25 | 2018-10-02 | Intel Corporation | Secure modular exponentiation processors, methods, systems, and instructions |
FR3063857B1 (fr) * | 2017-03-08 | 2020-02-14 | Safran Identity & Security | Procede de signature electronique d'un document avec une cle secrete predeterminee |
US10620961B2 (en) * | 2018-03-30 | 2020-04-14 | Intel Corporation | Apparatus and method for speculative conditional move operation |
US11503000B2 (en) * | 2019-03-29 | 2022-11-15 | Intel Corporation | Technologies for establishing secure channel between I/O subsystem and trusted application for secure I/O data transfer |
-
2019
- 2019-05-27 FR FR1905592A patent/FR3096851B1/fr active Active
-
2020
- 2020-05-18 US US16/876,216 patent/US20200382271A1/en not_active Abandoned
- 2020-05-19 JP JP2020087398A patent/JP2020194157A/ja not_active Withdrawn
- 2020-05-20 KR KR1020200060089A patent/KR20200136315A/ko unknown
- 2020-05-25 CA CA3081448A patent/CA3081448A1/en active Pending
- 2020-05-27 EP EP20176724.1A patent/EP3745638A1/fr not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
FR3096851B1 (fr) | 2021-05-21 |
FR3096851A1 (fr) | 2020-12-04 |
CA3081448A1 (en) | 2020-11-27 |
JP2020194157A (ja) | 2020-12-03 |
EP3745638A1 (fr) | 2020-12-02 |
US20200382271A1 (en) | 2020-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11362802B2 (en) | Cryptographic device arranged to compute a target block cipher | |
Bos et al. | Differential computation analysis: Hiding your white-box designs is not enough | |
US9698973B2 (en) | Securing accessible systems using dynamic data mangling | |
EP3174238B1 (en) | Protecting white-box feistel network implementation against fault attack | |
US10097342B2 (en) | Encoding values by pseudo-random mask | |
EP3035585B1 (en) | S-box selection in white-box cryptographic implementation | |
Sasdrich et al. | White-Box Cryptography in the Gray Box: –A Hardware Implementation and its Side Channels– | |
CN105024803A (zh) | 白箱实现中的行为指纹 | |
CN109726565B (zh) | 在抗泄漏原语中使用白盒 | |
WO2018224382A1 (en) | Device and method to compute a block cipher | |
CN106209346B (zh) | 白盒密码技术交错查找表 | |
CN105022937A (zh) | 用于将白箱实现紧附到周围程序的接口兼容方式 | |
Biryukov et al. | Dummy shuffling against algebraic attacks in white-box implementations | |
EP2940917B1 (en) | Behavioral fingerprint in a white-box implementation | |
US20210143978A1 (en) | Method to secure a software code performing accesses to look-up tables | |
US20200151007A1 (en) | Lightweight dispatcher for program control flow flattening | |
KR20200136315A (ko) | 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하고 난독화하기 위한 방법 | |
EP3267618B1 (en) | Equality check implemented with secret sharing | |
Tsoutsos et al. | Trust no one: Thwarting" heartbleed" attacks using privacy-preserving computation | |
Kim et al. | POSTER: Stopping Run-Time Countermeasures in Cryptographic Primitives | |
KIM et al. | CLEAR & RETURN: Stopping Run-time Countermeasures in Cryptographic Primitives | |
Gobi et al. | Securing Java Source Files Using the Cipher Cryptographic Algorithm | |
EP2940918B1 (en) | Interface compatible approach for gluing white-box implementation to surrounding program |