KR20180098172A - 알고리즘으로의 마스킹의 자동 삽입 - Google Patents

알고리즘으로의 마스킹의 자동 삽입 Download PDF

Info

Publication number
KR20180098172A
KR20180098172A KR1020180022242A KR20180022242A KR20180098172A KR 20180098172 A KR20180098172 A KR 20180098172A KR 1020180022242 A KR1020180022242 A KR 1020180022242A KR 20180022242 A KR20180022242 A KR 20180022242A KR 20180098172 A KR20180098172 A KR 20180098172A
Authority
KR
South Korea
Prior art keywords
call graph
function
variable
computer
mask
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020180022242A
Other languages
English (en)
Other versions
KR102049656B1 (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 KR20180098172A publication Critical patent/KR20180098172A/ko
Application granted granted Critical
Publication of KR102049656B1 publication Critical patent/KR102049656B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

알고리즘의 호출 그래프 표현을 상기 알고리즘의 보안 호출 그래프 표현으로 변환하기 위한, 컴퓨터 구현 방법, 프로그램 제품, 및 상기 방법을 구현하는 시스템. 호출 그래프는, 입력(a, b, f), 그래프의 에지(c, d, e)인 내부 변수, 그래프의 노드인 기본 함수, 및 출력(g)을 포함하고, 상기 함수는 선형이거나 또는 비선형이며, 그 방법은 하기 단계들을 포함한다:
- 호출 그래프의 각각의 입력을 마스킹하는 단계,
- 호출 그래프의 각각의 마스킹되지 않은 내부 변수를 마스킹된 변수로 대체하는 단계,
- 호출 그래프의 적어도 각각의 비선형 함수를, 마스킹된 변수에 적용되는 등가 함수로 대체하는 단계,
- 호출 그래프의 각각의 출력을 마스킹 해제하는 단계.

Description

알고리즘으로의 마스킹의 자동 삽입{AUTOMATIC INSERTION OF MASKING INTO AN ALGORITHM}
본 발명은 암호학의 분야에 적용되며, 특히, 부채널 공격(side-channel attack)에 대한 알고리즘의 구현을 보호하기 위한 방법에 관한 것이다.
민감한 데이터를 암호화하는 것을 수반하는 현존하는 암호화 알고리즘은, 암호 해독법 및 콘텐츠 복구 공격에 대해 효과적인 강건성을 제공한다. 공격자가 암호화 알고리즘의 입력 및 출력의 지식만을 가지고 있기 때문에, 이들 기술은 "블랙 박스 기술"로 칭해진다. 대부분의 암호화 알고리즘은 표준화되어 있으며, 알려져 있는 가장 많이 사용되는 것 중 하나는 고급 암호 표준(Advanced Encryption Standard; AES)이다. 암호화의 기밀성은 공유 비밀 암호 키에 기초한다. 공격자가 비밀 키를 무시하는 최상의 옵션은 모든 가능한 조합을 시도하는 것이다(무차별 대입(brute force) 디코딩). 키가 128 비트 또는 256 비트 길이인 경우, 필요로 되는 반복의 횟수는 무차별 대입 디코딩을 계산적으로 관리하기 매우 어렵게 만든다.
그러나, 부채널 공격(Side-Channel Attack; SCA)으로 칭해지는 몇몇 공격은, 타이밍 정보, 전력 소비, 전자기 유출, 등등과 같은, 암호화 알고리즘의 물리적 구현으로부터 유출되는 정보에 기초하여 암호화 알고리즘에서 실행되는 비밀 정보를 검색할 기회를 공격자에게 제공한다.
따라서, 먼저, 이러한 공격에 대해 민감한 알고리즘의 구현을 보호하기 위한 방법을 제공할 필요가 있다.
임의의 알고리즘은, 각각의 노드가 함수이고 각각의 에지가 중간 변수(내부 변수로도 또한 칭해짐)인 방향성 그래프(directed graph)인 호출 그래프(call graph), 또는 연산의 그래프로서 표현될 수 있다. 이 호출 그래프는 또한 데이터 플로우 그래프 또는 제어 플로우 그래프로 칭해질 수 있다.
함수는 단일의 연산일 수 있거나, 또는, 선형의 또는 선형이 아닌 연산의 조합일 수 있다. 그것은 어떠한 점프도 없는 직선 조각의 코드이다. 함수가 복수의 피연산자를 포함하는 경우, 그것은 복수의 1진(unary) 또는 2진(binary) 피연산자로 분해될 수 있다.
통상적인 연산은, 주어진 기술에서 구현될 수 있는 연산이다. 예를 들면, 소프트웨어 프로그램은, 덧셈('+') 또는 배타적 불린(exclusive boolean) OR('XOR')와 같은 산술 및 논리 연산을 계산할 수 있다. 디지털 신호 프로세서(Digital Signal Processor; DSP) 또는 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA)는 MAC(Multiply-ACcumulate) 유닛을 사용하여 룩업 테이블(look-up-table; LUT) 또는 산술 연산에서 구현되는 임의의 함수를 계산할 수 있다. 주문형 반도체(Application Specific Integrated Circuit; ASIC)는 표준 셀 라이브러리를 활용하여 임의의 타입의 연산을 계산할 수 있다.
함수는 하이 레벨 언어로 표현될 수 있지만, 그러나 일련의 연산으로 또한 매핑될 수 있다. 하이 레벨 언어로 잠재적으로 기술되는 이러한 함수를, 프로세싱 시간 및 리소스 소비를 최적화하는 기계 언어로 변환하는 것은 컴파일러의 역할이다.
알고리즘을 나타내는 그래프는 방향성 그래프이다: 각각의 노드 또는 함수는, 입력 인수만큼 많은 진입 에지(entering edge) 및 출력 결과만큼 많은 진출 에지(outgoing edge)를 갖는다. 예를 들면, 함수가 (두 개의 인수 및 하나의 결과를 갖는) 단순한 2진 연산인 경우, 두 개의 입력 및 하나의 출력이 있다.
에지는, 노드에서 노드로 전달되는 타입을 갖는 변수(typed variable)를 전달한다. 타입은 바이트, 32 비트 워드, 등등일 수 있다.
호출 그래프로서 설명되는, 암호 알고리즘과 같은 민감한 알고리즘을 고려하는 것 및, 알고리즘의 타입 또는 암호 알고리즘의 구현에 관한 임의의 고려 사항에 무관하게, 부채널 공격에 대해 암호 알고리즘을 보호하도록 알고리즘을 변환하는 것이 본 발명의 목적이다.
부채널 공격에 대한 알고리즘의 강건성을 증가시키기 위해, 알고리즘의 중요한 데이터를 마스킹하는 것이 알려져 있다. 마스킹의 하나의 예는, 새로운 변수의 합이 초기 변수를 산출하도록 초기 변수를 복수의 새로운 변수로 분할하는 비밀 공유에 기초한다. 합계는 변수의 기저의 타입에 따라 이해되어야만 한다. 예를 들면, 변수가 한 바이트인 경우, 합은 비트 단위의 XOR 또는 모듈로 256 가산(addition modulo 256)일 수 있다.
마스킹된 데이터에 영향을 주는 연산이 선형 함수인 경우, 함수의 마스킹된 출력의 값은 마스킹된 입력으로부터 계산될 수 있다. 그러나, 함수가 (예를 들면, 멱 함수(power function), 암호 알고리즘의 치환 박스(substitution box), ...와 같이) 비선형인 경우, 마스크 계산은 불가능할 수도 있을 것이다. 마스크는 함수의 입력에서 제거되어야만 하고, 새로운 마스크가 함수의 출력에 삽입되어야만 한다.
다양한 마스킹 기술이 알려져 있으며, 그들 중 일부는 입증되어 있다. 그들은, 선형 호출 그래프인 직선 프로그램에 적용된다. 마스킹은, 적절할 때마다, 연산 사이의 마스크의 랜덤 재공유(또는 리프레쉬)를 갖는 체인화 연산(chaining operation)이다. 그러나, 그래프가 직선이 아니면, 몇몇 취약점이 나타날 수도 있다.
CHES 2010, 페이지 413-427의 M. Rivain 및 E. Proof에 의한 Provably secure higher-order masking of AES에는, 완전한 마스킹된 AES 알고리즘이 제시된다. 이 논문에서는, 특정한 선형 및 비선형 함수의 마스킹에 대해 설명되며, 완전한 AES 알고리즘을 설명하기 위해 함수는 체인화된다. 그러나, FSE 2013 페이지 11-13의 JE . Coron, E. Proof, M. Rivain 및 T. Roche에 의한 High-Order Side Channel Security and Mask Refreshing에서 나타내어지는 바와 같이, 심지어 AES 알고리즘에 특별히 전용되는 접근법에서도, 몇몇 구현 문제가 발생할 수 있다. 이들 구현 문제는 몇몇 변수의 재사용으로부터 발생하고, 그러므로, 달성된 보안 레벨은 감소된다.
따라서, 오늘날, 대부분의 마스킹 구현은 수동으로 수행되는데, 이것은 구현 에러가 발생하기 쉽다(예를 들면, 민감한 변수는 마스킹되지 않음). 단지 몇몇 연구만이 자동 마스킹을 고려하고 있다.
이들 연구 중에는, CHES 2012, 페이지 58-75의 A. Moss, E. Oswald에 의한 Compiler assisted masking, Cryptographic Hardware and Embedded Systems의 논문이 있다. 이 논문에서는, 민감한 데이터는 프로그래머에 의해 주석이 달리고, 그들의 비밀성은, 컴파일러가 비밀성 정보를 프로그램을 통해 전달하는 것을 허용하는 격자에서 값으로서 처리된다. 일단 컴파일되면, 비밀 데이터는 프로그램 실행 동안 일반 텍스트로 절대 나타나지 않으며, 그에 의해, 특히 부채널 공격에 대해, 마스킹된 데이터의 비밀성을 보장하게 된다. 그 다음, 알고리즘은 프로그램의 모든 값에서, 특히, 표현식을 변환할 때 도입되는 임시 변수에서 민감한 정보 유출을 검색하는 단계를 수행하고, 유출이 발생하면, 프로그램 변환의 세트를 사용하여 유출을 방지하려고 시도한다.
이 논문에서 밝혀지는 솔루션의 단점은, 그것이 오로지 1 차 불린(Boolean) 마스킹 스킴 및 직선 코드에만 적용된다는 것이다. 더욱이, 유출을 탐색하고 그러한 유출을 방지하기 위해 프로그램을 변환하는 단계는 수렴하도록 구속되지는 않는다.
2014년 1월의 Springer International Publishing의 Eldib H., Wang C.에 의한 Synthesis of masking countermeasures against side channel attacks, Computer aided verification(페이지 114-130)에서는, 모든 중간 값을 포함하여, 전체 알고리즘을 마스킹하는 것이 제안된다. 비선형 함수에 대처하기 위해, 함수적으로 등가인 선형 함수를 결정하는 것, 그 함수가 모든 가능한 입력에 대해 동등하고 완벽하게 마스킹된다는 것을 확인하는 것이 제안된다.
이 방법은, 불린 타입의 호출 그래프에 대해서만 적용되기 때문에, Moss 등등의 방법과 유사한 단점을 갖는다. 또한, 그 방법은, 실행 시간이 보장되지 않는 시행 착오 방법론을 따른다.
따라서, 보호되지 않은 알고리즘을 상기 알고리즘의 보안 버전으로 변환하기 위한 완전히 자동적이고 강건한 방법에 대한 보다 엄밀한 요구가 있다.
이러한 문제점 및 다른 문제점을 해결하기 위해, 알고리즘의 호출 그래프 표현(call graph representation)을 상기 알고리즘의 보안 호출 그래프 표현(secured call graph representation)으로 변환하기 위한 컴퓨터 구현 방법이 제공된다. 호출 그래프는, 하나 이상의 입력, 하나 이상의 에지(c, d, e), 하나 이상의 노드(P, Q, R, S) 및 하나 이상의 출력(g)을 포함한다. 호출 그래프의 에지는 상기 알고리즘의 내부 변수(또는 중간 변수)를 나타내며, 호출 그래프의 노드는 알고리즘의 선형 또는 비선형 기본 함수를 나타낸다. 본 발명에 따른 컴퓨터 구현 방법은 다음을 포함한다:
Figure pat00001
호출 그래프의 각각의 입력을 마스킹하는 단계,
Figure pat00002
호출 그래프의 각각의 마스킹되지 않은 내부 변수를 마스킹된 변수로 대체하는 단계,
Figure pat00003
호출 그래프의 적어도 각각의 비선형 함수를, 마스킹된 변수에 적용되는 등가 함수로 대체하는 단계,
Figure pat00004
호출 그래프의 각각의 출력을 마스킹 해제하는(unmasking) 단계.
그 방법은 유익하게는 제한된 그리고 결정론적(deterministic) 실행 시간을 가지고 선형 및 비선형 호출 그래프 양자에 적용되고, 불린 타입의 연산으로 제한되지 않는다.
보호되지 않은 알고리즘을 상기 알고리즘의 보안 버전으로의 변환하는 것은 두 가지 요구되는 특성을 충족시킨다:
Figure pat00005
의미론을 보존함, 즉, 원래의 프로그램과 비교하여, 결정된 입력의 세트로부터 동일한 결과가 획득, 및
Figure pat00006
모든 중간 변수(즉, 정점에 의해 전달되는 변수)를 마스킹.
호출 그래프가 반복적으로 프로세싱되는 부분을 포함하는 경우, 마스킹되지 않은 내부 변수를 마스킹된 내부 변수에 의해 대체하는 단계는, 반복적으로 프로세싱되는 호출 그래프의 부분의 입력 및 출력 둘 다로서 사용되는 내부 변수를 식별하는 것, 및 호출 그래프의 상기 부분의 입력에서 그리고 출력에서 이들 변수에 대해 동일한 마스크를 사용하는 것에 의해 보장될 수도 있다.
대안적으로, 마스킹되지 않은 내부 변수를 마스킹된 내부 변수에 의해 대체하는 단계는, 반복적으로 프로세싱되는 호출 그래프의 부분의 입력 및 출력 둘 다로서 사용되는 내부 변수를 식별하는 것, 및 상기 반복 부분의 피드백 에지에 상기 내부 변수의 마스크를 수정하기 위한 추가적인 노드를 삽입하는 것에 의해 보장될 수도 있다.
유익하게는, 반복적으로 프로세싱되는 호출 그래프의 부분에서의 내부 변수의 마스크는 규칙적인 간격으로 변경될 수도 있고, 관련 함수는 상응하게 수정된다. 이 메커니즘은 상기 반복 부분의 내부 변수의 마스크를 리프레쉬하기 위한 추가 노드를 호출 그래프에 삽입하는 것에 의해 달성될 수 있다.
본 발명의 소정의 실시형태에 따른 컴퓨터 구현 방법에서, 호출 그래프의 적어도 각각의 비선형 함수를, 마스킹된 변수에 적용되는 등가 함수로 대체하는 단계에서 계산되는 등가 함수는 매치 테이블(match table)을 사용하여 구현될 수도 있다. 본 발명의 하나의 실시형태에 따르면, 호출 그래프의 선형 함수는, 입력 및 출력 내부 변수의 마스크를 고려하는 등가 함수에 의해 대체될 수도 있다.
본 발명의 하나의 실시형태에 따르면, 보안 호출 그래프의 마스크 값 중 일부 또는 전체는 랜덤하게 결정될 수도 있다.
본 발명의 하나의 실시형태에 따르면, 컴퓨터 구현 방법은 보호된 실행 가능 코드를 생성하도록 상기 호출 그래프를 컴파일하는 추가 단계를 더 포함할 수도 있다.
본 발명은 또한, 컴퓨터 시스템으로 하여금 본 발명의 임의의 실시형태에 따른 컴퓨터 구현 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 포함하는 비휘발성 컴퓨터 판독가능 데이터 저장 매체 상에 저장되는 컴퓨터 프로그램 제품, 및 컴퓨터 시스템으로 하여금 상기 컴퓨터 구현 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 포함하는 비휘발성 컴퓨터 판독가능 데이터 저장 매체에 관한 것이다.
본 발명은 또한, 메모리에 커플링되는 프로세서를 포함하는 시스템에 관한 것으로, 메모리는 시스템으로 하여금, 알고리즘의 호출 그래프 표현을 상기 알고리즘의 보안 호출 그래프 표현으로 변환하기 위한 컴퓨터 구현 방법을 수행하게 하는 컴퓨터 실행 가능 명령어를 저장한다. 호출 그래프는, 하나 이상의 입력, 하나 이상의 에지(c, d, e), 하나 이상의 노드(P, Q, R, S) 및 하나 이상의 출력(g)을 포함한다. 호출 그래프의 에지는 상기 알고리즘의 내부 변수를 나타내고, 호출 그래프의 노드는 알고리즘의 선형 또는 비선형 기본 함수를 나타낸다. 시스템은 프로세싱 디바이스를 포함하는데, 그 프로세싱 디바이스는:
Figure pat00007
호출 그래프의 각각의 입력을 마스킹하도록,
Figure pat00008
호출 그래프의 각각의 마스킹되지 않은 내부 변수를 마스킹된 변수로 대체하도록,
Figure pat00009
호출 그래프의 적어도 각각의 비선형 함수를, 마스킹된 변수에 적용되는 등가 함수에 의해 대체하도록, 그리고
Figure pat00010
호출 그래프의 각각의 출력을 마스킹 해제하도록
구성된다.
본 발명은 더 잘 이해될 것이며, 그것의 다양한 피쳐 및 이점은, 예시적인 목적만을 위해 제공되는 다수의 예시적인 실시형태의 다음의 설명 및 그것의 첨부된 도면으로부터 드러날 것인데, 첨부된 도면에서:
- 도 1a는 종래 기술로부터 알려져 있는 바와 같은 보호되지 않은 호출 그래프를 나타낸 도면,
- 도 1b 및 도 1c는, 본 발명의 두 실시형태에 따라 보호되어, 유익하게도, 그래프의 반복 부분의 입력 및 출력으로서 사용되는 변수에 적용되는 마스크의 일관성을 특히 보장하게 되는 호출 그래프를 나타낸 도면,
- 도 2a 및 도 2b는 선형 함수를 프로세싱하는 두 가지 방식을 예시한 도면,
- 도 3은, 마스킹된 입력 및 출력을 고려하여, 상기 비선형 함수와 등가의 매치 테이블을 구성하는 것에 의해, 비선형 함수를 프로세싱하는 하나의 방식을 예시한 도면,
- 도 4a는, 반복 부분이 예시의 목적을 위해 전개된 보호되지 않은 호출 그래프를 나타낸 도면,
- 도 4b 및 도 4c는 본 발명의 두 실시형태에 따라 보호되는 호출 그래프를 나타낸 도면으로, 호출 그래프의 반복 부분에서 사용되는 내부 변수의 마스크는 각각의 반복에서 수정되고, 반복 부분은 예시의 목적을 위해 전개되어 있음,
- 도 5a는 AES 알고리즘의 전형적인 호출 그래프 표현이고, 도 5b는 본 발명의 하나의 실시형태에 따라 생성되는 대응하는 보호된 호출 그래프,
- 도 6은 소정의 실시형태에 따른 컴퓨터 구현 방법을 묘사하는 플로우차트, 및
- 도 7은 본 발명을 프로세싱하기 위해 사용될 수 있는 시스템을 예시한 도면.
본 명세서에서 개시되는 예는 단지 본 발명의 몇몇 실시형태의 예시에 불과하다. 그들은 첨부된 청구범위에 의해 정의되는 본 발명의 범위를 어떤 식으로든 제한하지는 않는다.
도 1a는 종래 기술로부터 알려져 있는 바와 같은 보호되지 않은 호출 그래프를 나타낸다. 이 표현은 예시의 목적을 위한 표준 표현이다.
도 1a의 보호되지 않은 호출 그래프는 컴퓨터 코드의 실행을 설명한다. 그것은 복수의 노드(P, Q, R, S)를 포함하는데, 각각의 노드는 코드에 의해 수행되는 함수에 관련된다. 앞서 나타낸 바와 같이, 노드로서 표현되는 각각의 함수는 단일의 연산, 또는 연산의 조합으로 이루어질 수 있다. 함수는 선형일 수 있거나 또는 선형이 아닐 수 있다.
보호되지 않은 호출 그래프는 또한, 노드의 출력을, 그래프의 에지로 칭해지는 다른 노드의 입력에 연결하는 지향성 링크(oriented link)를 포함한다. 이들 에지는, 하나의 함수로부터 후속하는 함수로 전송되는 중간 변수(c, d, e)와 관련된다.
보호되지 않은 호출 그래프는 하나 이상의 입력(a, b, f), 및 하나 이상의 출력(g)을 더 포함한다.
보호되지 않은 호출 그래프는 또한, 함수(P, Q, R 및 S)가 복수 회 프로세싱되는 반복 부분(101)을 포함하는데, 후속하는 반복은 입력으로서 이전 반복의 출력을 취한다.
호출 그래프는 프로그램의 실행 동안의 함수의 상호 의존 관계, 및 입력 변수(a, b, f)로부터 출력 변수(g)를 생성하기 위해 필요로 되는 상호 작용의 표현이다. 그것은 다양한 프로그래밍 언어, 예를 들면, Graphic, UML(Unified Modeling Language; 통합 모델링 언어) 또는 HTML(HyperText Markup Language; 하이퍼텍스트 마크업 언어)를 사용하여 설명될 수 있다. 그것은, Doxygenⓒ 또는 Eclipseⓒ와 같은 소프트웨어를 사용하여 소스 코드로부터, 또는 컴파일된 코드(어셈블러 언어, LLVM-IR(Low Level Virtual Machine - Intermediate Representation; 로 레벨 가상 머신 - 중간 표현), VHDL(VHSIC Hardware Description Language; VHSIC 하드웨어 기술 언어), Verilogⓒ로부터 자동적으로 생성될 수 있거나, 또는 심지어 수동으로 생성될 수 있다.
도 1b는 본 발명의 제1 실시형태에 따라 보호되는 호출 그래프를 나타낸다.
암호 해독법 및 콘텐츠 복구 공격에 대한 강건성을 제공하기 위해, 본 발명은, 프로그램의 각각의 변수를 마스크로 마스킹하는 것, 및, 본 발명의 몇몇 유익한 실시형태에 따라, 프로그램 실행 동안 이 마스크를 변경하는 것에 기초한다.
이를 위해, 입력 변수(a, b, f)는 마스킹된다(111, 112, 113). 마스크 값(m1, m2, m6)은 임의로 선택될 수 있다. 마스킹된 변수는 이후 aθm1, bθm2 및 fθm6으로 지정된다.
그 다음, 호출 그래프의 각각의 마스킹되지 않은 내부 변수(c, d, e)는 마스킹된 변수(cθm3, dθm4, eθm5)에 의해 대체된다. 마스크는 랜덤하게 선택될 수도 있거나, 또는 내부 변수가 선형 함수의 출력인 경우, 함수의 입력에 대해 사용되는 마스크로부터 상응하게 상속될 수도 있다.
이러한 실시형태에서, 보호된 호출 그래프의 일관성을 보장하기 위해, 내부 변수가 (도 1의 g에 대해) 그래프의 반복 부분의 입력 및 출력 둘 다로서 사용되는 경우, 마스크 변수는 반복 부분의 입력 및 출력 둘 다에서 동일한 마스크를 사용할 수도 있다. 따라서, 변수(b 및 g)와 관련되는 마스크는 동일하다(m2).
따라서, 함수(P')의 입력은 각각의 반복에서 동등하게 마스킹된다.
각각의 입력에 마스크를 할당하고 각각의 마스킹되지 않은 각각의 내부 변수를 마스킹된 변수로 대체한 이후, 호출 그래프의 노드에 관련되는 함수(P, Q, R, S)는, 마스크 값을 준수하기 위해, 수정된다(P', Q', R', S').
함수가 선형이고 마스킹이 불린인 경우, 출력 마스크는 입력 마스크로부터 상속될 수도 있다. 따라서, 함수는 수정될 필요가 없다. 그렇지 않으면, 함수는, 입력으로서 마스킹된 변수를 취하는 동안, 동일한 결과에 도달하는 등가 함수에 의해 대체되어야 하고, 함수의 출력을 마스킹한다.
함수가 비선형인 경우, 출력 마스크와 입력(들) 마스크(들) 사이에 링크를 만드는 것은 일반적으로 가능하지 않다. 보호되지 않은 정보가 나타날 것이고, 정보의 유출로 간주될 수 있기 때문에, 입력 데이터를 마스킹 해제하는 것, 함수를 프로세싱하는 것, 및 결과를 마스킹하는 것은 고려될 수 없다. 따라서, 함수는, 함수의 모든 가능한 결과를 제공하는 매치 테이블에 의해 대체될 수도 있는데, 매치 테이블은 입력 및 출력 마스크를 고려하여 구성된다. 이러한 방식에서는, 선행 기술과는 대조적으로, 알고리즘에 의해 프로세싱되는 모든 변수는 보호되고, 비선형 함수(들)의 근사는 이루어지지 않을 것이다.
마지막으로, 호출 그래프를 출력하는 변수(g)는 마스킹 해제될 수도 있다(114).
제1 실시형태에서, 모든 내부 변수는 상응하게 보호되고, 도 1b의 보호된 호출 그래프의 결과는, 도 1a의 보호되지 않은 호출 그래프의 결과와 정확히 동일하다. 입력을 마스킹하고 프로그램의 출력을 마스킹 해제하는 것을 제외하면, 이 제1 실시형태는 프로그램의 노드 수에 영향을 끼치지 않는다. 그것의 최종적인 복잡성 및 프로세싱 시간은 추가 보호 레이어에 의해 영향을 받지 않을 것이다. 일단 컴파일되면, 내부 변수 중 어느 것도 보호되지 않은 상태로는 나타나지 않을 것이다. 따라서, 프로그램의 실행은 암호 해독법 및 콘텐츠 복구 공격에 대해 완벽하게 보호된다.
도 1c는 본 발명의 제2 실시형태를 나타낸다. 이러한 실시형태에서는, 도 1b와 마찬가지로, 입력(a, b 및 f)은 마스킹되고, 보호되지 않은 내부 변수(c, d, e)는 보호된 변수에 의해 대체되고, 함수는 상응하게 수정되고, 호출 그래프의 출력(g)은 마스킹 해제된다.
그러나, 그래프의 반복 부분에 관한 마스킹의 일관성은, 반복 부분의 피드백 루프(101)에, 반복 부분의 입력 및 출력 둘 다로서 사용되는 내부 변수의 마스크 값을 수정하도록 구성되는 추가 노드(120)를 삽입하는 것에 의해 보장된다.
도 1c에서, 반복 부분의 출력은 마스킹된 변수(gθm7)에 의해 대체되고, 노드(120)는 gθm7을 gθm2로 변환하도록 이 변수의 마스크를 수정한다. 정보가 보호되지 않은 상태로 나타나지 않는 것을 보장하기 위해, 출력 마스크(m7)가 제거되기 이전에 입력 마스크(m2)가 적용된다. 도 1b에서와 같이, 함수(P')의 입력은 각각의 반복에서 동일한 마스크를 갖는다.
제1 실시형태와 비교한 제2 실시형태의 이점은, 모든 마스크가 랜덤하게 선택될 수도 있다는 것이다.
데이터를 마스킹하기 위해 다양한 방법이 사용될 수도 있다. 마스킹은, 예를 들면, 변수를 비밀 공유 값과 합산하는 것과 같은 간단한 1차 불린 마스킹, 고차 불린 마스킹, 또는 임의의 다른 더욱 정교한 마스킹 기술일 수 있다. 본 발명의 이점 중 하나는 그것이 어떤 마스킹 기술과도 호환 가능하다는 것이다.
그림 2a는 선형 함수를 프로세싱하는 방식을 예시한다. 이러한 함수에서, 마스킹이 불린인 경우, 출력 변수(들)(203)에 적용되는 마스크는 입력 변수(들)(201 및 202)에 적용되는 마스크에 의존한다. 따라서, 출력 마스크는 선형 함수를 입력 마스크에 적용하는 것에 의해 주어진다. 이 예에서, 입력 변수(a 및 b)는 값(m1 및 m2)에 의해 각각 마스킹된다. 함수의 출력은, 마스크(f(m1, m2))에 적용되는 함수의 결과인 값에 의해 마스킹된다. 단순화된 예를 고려하면, 함수(211)가 곱셈 함수인 경우, f(m1, m2)는 m1 * m2와 동일하다.
도 2b는, 함수의 결과로서 나타나는 보호된 값이 특정 마스크 값을 가질 때 선형 함수를 프로세싱하기 위한 실시형태를 예시한다.
이러한 실시형태에서, 두 가지 가능성이 구현될 수도 있다:
Figure pat00011
호출 그래프에 추가 노드(212)를 삽입함, 추가 노드는 선형 함수의 결과에 영향을 끼치는 마스크f(m1, m2)를 필요로 되는 마스크(m3)로 변환하는 것에 대응함. 이를 위해, 함수(212)는 마스크(f(m1, m2))를 제거하기 이전에 선형 함수의 결과에 마스크(m3)를 추가할 수도 있음, 또는
Figure pat00012
마스크의 값을 고려하는 선형 함수에 등가인 매치 테이블(221)을 계산함, 매치 테이블은 메모리에 저장됨. 이 테이블은 aθm1 및 bθm2의 모든 가능한 값을 입력으로서 포함하고, 이들 값의 각각을 출력(cθm3)의 대응하는 값과 관련시킨다. 매치 테이블은 모든 가능한 입력에 대해 함수(211 및 212)를 실행하는 것에 의해 계산될 수도 있다. 이 테이블은 암호화되어 저장될 수 있지만, 그 함수에 의해 프로세싱되는 원래의 보호되지 않은 데이터에 관한 임의의 정보를 결정하는 것을, 테이블에 포함되는 데이터가 허용하지 않기 때문에, 그것은 필요하지 않을 수도 있다.
도 2b에 나타내어지는 바와 같은 선형 함수의 프로세싱은, 호출 그래프의 각각의 내부 변수에 대해 랜덤 마스크를 사용하는 것을 허용한다.
도 3은 비선형 함수를 프로세싱하기 위한 실시형태를 예시한다. 이러한 실시형태에서, 비선형 함수의 프로세싱은, 마스킹된 입력 및 출력을 고려하여, 상기 함수와 등가인 매치 테이블을 구성하는 것에 기초한다. 이러한 프로세싱은 선형 함수를 프로세싱하도록 또한 적용될 수 있다는 것을 유의해야 한다.
도 2a 및 2b에서 나타내어지는 선형 함수와는 대조적으로, 출력 값의 마스크는 입력 값의 마스크로부터 결정될 수 없다. 이러한 이유 때문에, 비선형 함수는, 입력의 모든 가능한 세트에 대한 함수의 결과를 제공하는 등가의 매치 테이블(310)에 의해 대체되어야만 한다. 매치 테이블은, 입력 변수(aθm1 및 bθm2)를 마스킹 해제하는 것(301 및 302), 비선형 함수를 적용하는 것(303), 및 비선형 함수의 결과를 마스킹하는 것(304)에 의해 계산될 수도 있다.
테이블을 구성하기 위해, 모든 가능한 입력 변수가 브라우징될 수도 있다. 따라서, 테이블은 입력의 수, 출력의 수 및/또는 데이터 사이즈에 비례할 수도 있다. 예를 들면, 입력(a와 b)이 8 비트에 걸쳐 코딩된다는 것을 고려하면, 관련된 매치 테이블은, 2^8(a에 대한 가능성의 수) * 2^8(b에 대한 가능성의 수) * 8 비트(c의 사이즈)의 크기에 이르는 테이블이다.
도 4a는, 알고리즘의 반복 부분이 전개된 실시형태에서의 도 1a의 보호되지 않은 호출 그래프를 나타낸다. 도 4a의 다음의 설명에서, 반복 부분은, 단지 예시적인 목적만을 위해, 단지 두 번만 실행되는 것이 고려된다.
함수(P, Q, R 및 S)는 두 번 실행되는데, 두 번째 반복 동안의 내부 변수의 값(c', d', e' 및 g')은 첫 번째 반복 동안의 동일한 변수의 값(c, d, e 및 g)과는 상이하다.
도 4b 및 도 4c는 본 발명의 다른 실시형태에 따라 보호되는 호출 그래프를 나타내는데, 호출 그래프의 반복 부분에서 사용되는 내부 변수의 마스크는 각각의 반복에서 수정된다. 도 4b 및 도 4c의 다음의 설명에서, 반복 부분은 도 4a와 마찬가지로 전개되어 있는 것이 고려된다.
각각의 반복의 끝에서 마스크 값을 리프레쉬하는 것에 의해(즉, 마스크 값을 변경하는 것에 의해), 특히, 적용되는 마스크의 일정한 양태를 사용하는 부채널 공격에 대해서, 높은 레벨의 보호가 획득된다.
도 4b에서, 첫 번째 반복은, 각각의 입력(a, b 및 f)을 마스킹하는 것, 각각의 내부 변수(c, d, e 및 g)를 마스킹된 변수(cθm3, dθm4, eθm5 및 gθm7)에 의해 대체하는 것, 및 마스킹된 변수를 고려하도록 함수를 수정하는 것(P', Q', R' 및 S')에 의해, 도 1b 또는 도 1c에서와 같이 수행된다.
후속하는 반복에 대해서, 내부 변수(c, d, e 및 g)에 대해 사용되는 마스크는 수정되고, 관련된 함수는 상응하게 수정된다. 반복의 입력으로서 사용되는 변수에 적용되는 마스크도 또한 수정될 수도 있다. 그 예에서, 입력(a 및 f)에 마스크(m1 및 m6)를 적용하는 노드(111 및 113)는 새로운 마스크(m8 및 m12)를 적용하는 노드(401 및 403)로 변경된다. 마스킹된 변수(cθm3, dθm4 및 eθm5)는 새로운 마스킹된 변수(cθm9, dθm10 및 eθm11)로 변경된다. 마스크(m1 및 m2)에 의해 마스킹되는 변수를 입력으로서 취하는 함수(P')는 등가 함수(P")로 수정되는데, 함수(P")는 m8 및 m7에 의해 마스킹되는 변수를 입력으로 취한다. 함수(P')가 선형 함수이고 함수의 출력이 입력 마스크로부터 상속되는 마스크에 의해 마스킹되는 경우, P'는 수정되지 않은 채로 유지될 수도 있다. 함수(Q', R' 및 S')는 함수(Q", R" 및 S")로 상응하게 수정된다.
대안적인 실시형태(표현되지 않음)에서, 입력(a 및 f)의 마스크는 반복마다 수정되지 않을 수도 있다.
호출 그래프는 예를 들면, 도 1c에서, 반복에서 수반되는 모든 변수의 마스크를 리프레쉬하는 단계에 대응하는 추가 노드, 예컨대 반복 부분의 피드백 루프에서의 노드(120)를 사용하여 표현될 수 있다.
도 4c는, 노드(402)가 반복의 피드백 루프에 삽입되는 다른 실시형태를 나타낸다. 이 노드(402)는 반복에서 수반되는 입력 및 변수에 적용되는 모든 마스크를 리프레쉬하는 단계에 관련된다. 또한, 도 4c에 나타내어지는 바와 같이, 이 노드는 이전 반복의 출력에 영향을 끼치는 마스크를 추가로 변경하고, 그에 의해, 마스크(m7)를 마스크(m9)로 변환할 수 있다.
도 5a는 암호화되지 않은 AES 알고리즘의 호출 그래프 표현이다. 이러한 예시적인 표현은 본 발명에 따른 방법을 예시하기 위해 사용된다. 이러한 표현은 바이트 0(x0), 및 반복적으로 프로세싱되는, "라운드 스텝"으로 칭해지는 AES 알고리즘의 단계에만 집중된다. AES 알고리즘의 표준 실행에서, 첫 번째 라운드(사전 프로세싱) 및 마지막 라운드(사후 프로세싱)는 특별하다. 이들 라운드는 여기서는 표현되지 않으며, 도 5a는 데이터 경로의 중간 라운드에만 집중한다(AES 키(ki)에 대해 수행되는 프로세싱은 나타내지 않음).
각각의 라운드는 반복 프로세스인데, 라운드의 한 번의 반복의 출력인 y0 바이트가, 라운드의 입력인 x0에 대해 루프백된다는 것을 의미한다.
호출 그래프 표현에서, 원은 상이한 변수에 대해 수행되는 연산을 나타내지만, 그래프의 에지는 내부 변수를 나타낸다. 도 5에서는, 입력 또는 출력이 없는데, 그들이 라운드의 첫 번째 반복과 마지막 반복(표현되지 않음)에서 프로세싱되기 때문이다.
라운드에서 x0에 적용되는 첫 번째 함수는 치환 박스(S 박스(S-box)로 알려짐)로 칭해진다. 이 치환은 알고리즘의 주요 요소이며 x0에 대해 수행되는 전단사의(bijective) 비선형 연산이다. 첫 번째 치환 박스의 출력은 도 5a의 중간 변수(a)이다.
a에 적용되는 다음 함수는 갈루아 체(Galois field)에서 수행되는 세 개의 선형 연산: 1 배(times 1), 2 배(times 2) 및 3 배(times 3)의 세트이다. 이러한 연산은 선형적이다.
b, b' 및 b"로 칭해지는 이들 연산의 결과는, 바이트 5, 10 및 15(x5, xA, xF)에 대해 수행되는 대응하는 연산의 결과와 혼합된다. 이러한 연산은 "믹스칼럼(Mixcolumn)"으로 칭해진다. 혼합은 네 개의 엔트리에 대해 수행되는 XOR 연산이다. 이 함수는 세 개의 연속하는 XOR 연산과 등가이다. "믹스칼럼" 연산의 출력은 중간 변수(c)이다.
c에 적용되는 다음 함수는 "애드라운드키(Addroundkey)"로 칭해지는 단계인데, XOR 연산을 통해 c를 키(또는 키로부터 프로세싱되는 특정한 바이트)(k0)와 혼합하여, 후속하는 반복의 입력으로서 사용될 y0를 생성한다.
도 5b는 본 발명의 하나의 실시형태에 따라 보호된 이후의 도 5a의 AES 알고리즘의 호출 그래프 표현이다.
x0가 중간 변수이므로, 그것은 마스크(θm00)에 의해 마스킹된다. 이 마스크는 x0과 알려진 랜덤 값 사이에서 수행되는 XOR일 수 있지만, 그러나 그것은 또한, 복수의 마스크 레이어가 적용된다는 것을 의미하는 다차원 공유일 수 있다. 후자의 경우, θm00는 반드시 바이트(8 비트) 공유일 필요는 없지만, 그러나 임의의 차원의 공유일 수 있다. 그것은 또한, 쌍 또는 삼중 항 또는 동일한 또는 상이한 사이즈를 갖는 마스크의 임의의 다른 관련화일 수 있다.
S 박스 단계에서 프로세싱된 이후, 중간 변수(a)는 마스크(θm01)에 의해 마스킹된다. 치환 박스가 비선형 함수이기 때문에, 도 3에서 예시되는 바와 같이, 그것은 마스크(θm00)를 모두 한 번에 제거하는 등가의 매치 테이블에 의해 대체되어야만 하고, 비선형 함수를 수행해야만 하고, 결과를 마스크(θm01)를 사용하여 마스킹해야만 한다. 따라서, θm01는 반드시 θm00에 관련되는 것은 아니다.
1 배, 2 배, 및 3 배 연산을 수행한 이후, 중간 변수(b)는 마스크(θm02)에 의해 마스킹될 수도 있다. 몇몇 실시형태에서, 마스크는 θm01와 동일할 수도 있거나, 또는 함수는 등가의 매치 박스에 의해 대체될 수도 있으며, 따라서 θm02는 θm01과 완전히 독립적으로 선택될 수 있다.
다른 실시형태에서, 치환 박스의 연산 및 1 배, 2 배, 및 3 배의 연산을 수행하는 등가의 매치 테이블(501)이 계산될 수도 있다. 매치 테이블은 하나의 입력(x0qm00) 및 세 개의 출력(bθm02, b'θm02, b"θm02)을 가질 수도 있다. 대안적으로, 세 개의 매치 테이블이 계산될 수도 있는데, 이들의 각각은 하나의 입력 및 하나의 출력을 갖는다. 매치 테이블에서 1 배, 2 배 및 3 배 연산자로 재그룹화되는 치환 박스는 암호화되지 않은 경우 "T 박스(T-box)"(Table box; 테이블 박스)로 칭해지는 연산을 나타낸다.
다른 실시형태에서, 상이한 마스크가 중간 변수(b, b' 및 b")의 각각에 할당될 수도 있다.
다양한 바이트에 대해 수행되는 계산의 결과를 혼합하는 단계는 선형 함수이다. 결과적으로, 출력 마스크(θm03)는 입력의 마스크(θm01, θm51, θmA1, 및 θmF1)(θm51, θmA1, 및 θmF1는 변수(x5, xA 및 xF)를 프로세싱하기 위한 T 박스 계산의 출력과 각각 관련되는 마스크임)로부터 검색될 수 있다. 그러나, 입력 마스크와는 완전히 독립적인 출력 마스크(θm03)를 선택하는 것을 허용하는 등가의 매치 테이블이 계산될 수도 있다.
다음 단계에서, 중간 변수(cθm03)가 키(k0)와 혼합된다. 키가 변수가 아니고 상수이기 때문에, 키는 마스킹될 필요가 없다. 혼합의 결과는 y0θm04이다. 혼합 연산이 선형적이기 때문에, θm04는 θm03와 관련되거나, 또는 혼합 함수가 등가의 매치 테이블에 의해 대체되면 완전히 독립적일 수 있다.
마지막으로, 리프레쉬 노드(502)가 삽입될 수도 있다. 리프레쉬 노드의 첫 번째 목적은, 변수(y0/x0)가 호출 그래프의 반복 부분의 입력/출력으로 사용될 때, θm04를 θm00로 변환하는 것에 의해 보호된 호출 그래프의 일관성을 보장하는 것이다. 몇몇 실시형태에서, 리프레쉬 마스크는, 반복 루프에 속하는 내부 변수 중 적어도 일부에 대한 마스크를 변경하는 단계와 추가로 관련될 수 있다(그 경우, 마스크(θm00, θm01, θm02, θm03 및 θm04)임).
선형 함수의 노드가 그들의 부모 노드로부터 상속될 때, 루프의 입력인 변수의 마스크(들)(도 5a에서의 θm00) 및 비선형 함수(들)의 출력(들)인 변수의 마스크(실시형태에 따라, 도 5b에서의 θm01 또는 θm02)만을 리프레쉬하는 것이 가능하다. 이것은 호출 그래프 일관성을 보장하기 위해 관련된 등가의 테이블을 수정하는 것을 의미한다. 리프레쉬된 마스크는 선형 함수의 입력/출력으로 자동적으로 전파된다.
리프레쉬 노드(512)는 옵션적이다는 것을 유의해야 한다. 보호된 호출 그래프의 일관성을 보장하는 다른 방식은, 예를 들면, θm00와 동일한 θm04를 선택하는 것일 수도 있다.
도 6은 소정의 실시형태에 따른 컴퓨터 구현 방법을 묘사하는 플로우차트이다.
그 방법은 다음을 포함한다:
- 호출 그래프의 입력을 마스킹하여 마스킹된 입력을 생성하는 단계(601);
- 그래프의 에지에 의해 표현되는 그래프의 보호되지 않은 변수를 마스킹된 변수에 의해 대체하는 단계(602). 마스킹된 변수의 마스크는 랜덤하게 선택될 수 있거나, 또는 마스킹된 변수에 대한 선형 함수의 사용의 결과일 수 있음;
- 함수의 입력/출력에 영향을 끼치는 마스크를 고려하면서, 초기 함수와 동일한 연산을 수행하도록, 그래프의 노드에 의해 표현되는 호출 그래프의 적어도 비선형 함수를, 등가 함수에 의해 대체하는 단계(603). 이 동작은 호출 그래프의 선형 함수에 대해 또한 수행될 수 있음. 하나의 가능한 구현은, 입력/출력에 영향을 끼치는 마스크를 고려하여 생성되는 매치 테이블에 의해 함수를 대체하고, 출력 값을 입력 값의 각각의 가능한 조합에 관련시키는 것임; 및
- 호출 그래프의 출력을 마스킹 해제하는 단계(604).
본 발명에 따른 방법은, 마스킹된 입력 및 변수가, 규칙적으로 또는 랜덤하게, 루프의 각각의 반복에서 또는 더 느린 레이트로 리프레쉬되도록(마스크의 값이 수정되는 것을 의미함) 그래프의 반복 부분을 수정하는 추가적인 옵션적 단계(605)를 포함할 수도 있다. 따라서, 반복적으로 계산되는 변수는 동일한 마스크로 절대 보호되지 않는다. 비록 이러한 응용에 국한되지는 않지만, 본 실시형태에 따른 방법은, 작은 계산에 걸쳐 수행되는 아주 많은 수의 반복을 종종 포함하는 암호 알고리즘에 적용될 때 특별한 이점을 갖는다.
본원에서 설명되는 방법은, 예를 들면, 마이크로프로세서, 마이크로컨트롤러, 또는 DSP와 같은 임의의 타입의 프로세서 또는 임의의 소프트웨어 프로그래머블 머신에 제공되어, 본원에서 명시되는 함수/액트(act)를 구현하기 위한 명령어를 실행하는 머신을 생성하는 컴퓨터 프로그램 명령어에 의해 구현될 수 있다. 이들 컴퓨터 프로그램 명령어는 또한, 특정한 방식으로 기능할 것을 컴퓨터에게 지시할 수 있는 컴퓨터 판독 가능 매체에 저장될 수도 있다. 이를 위해, 컴퓨터 프로그램 명령어는, 실행된 명령어가 본원에서 명시되는 기능을 구현하기 위한 프로세스를 제공하게끔, 일련의 동작 단계의 수행을 야기하도록 그리고 그에 의해 컴퓨터 구현 프로세스를 생성하도록 컴퓨터 상으로 로딩될 수도 있다.
그 방법은, 보호되지 않은 알고리즘으로부터 알고리즘의 보호된 표현을 생성하기 위해, 단독으로 사용될 수 있지만, 그러나 컴파일러와 짝을 이룰 수 있고, 그에 의해, 계산 머신에 의해 실행될 수 있는 보호되는 컴파일된 코드, 또는 하드웨어 코드를, 예를 들면, 필드 프로그래머블 게이트 어레이(FPGA), 또는 주문형 반도체(ASIC)와 같은 전용 계산 머신 상에서 구현되고 컴파일러에 의해 생성되는 넷리스트(netlist)의 형태로, 생성하게 된다.
이를 위해, 그 방법은, 암호 해독법 및 콘텐츠 복구 공격에 강건한 실행 가능 코드를 생성하기 위해, 보호된 호출 그래프를 컴파일하는 추가 단계(606)를 포함할 수도 있다.
도 7은 본 발명을 프로세싱하기 위해 사용될 수 있는, 예를 들면, 범용 컴퓨터 시스템과 같은 시스템을 예시한다. 그 시스템은, 컴퓨터 프로그램 제품이 저장되는 비휘발성 컴퓨터 판독 가능 메모리(M), 프로세서(CPU)에 의해 프로세싱되는 소스 코드 또는 실행 가능 코드와 같은 보호되지 않은 데이터, 또는 보호되지 않은 호출 그래프를 검색하여 호출 그래프를 생성하기 위한 입력/출력 인터페이스 I/O를 포함하는데, 프로세서는 데이터 버스를 통해 메모리 및 입력/출력 인터페이스에 연결된다.
더 일반적으로는, 본원에서 설명되는 방법 및 디바이스는 다양한 수단에 의해 구현될 수도 있다. 예를 들면, 이들 기술은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다.
본 발명의 다양한 실시형태는 다음을 포함하는 여러 가지 이점을 제공한다:
- 그들은 구현과 관련이 없는 하이 레벨의 접근법을 제시함,
- 그들은, 현저하게도, 알고리즘에 의해 프로세싱되는 모든 변수가 마스킹되고 한편 알고리즘의 의미가 보존되기 때문에, 모든 종류의 부채널 공격에 대한 강건성을 알고리즘에게 제공함,
- 그들은 임의의 타입의 소프트웨어 프로그램에, 선형 함수에 그리고 비선형 함수에 적용 가능함,
- 그들은 구현 및 컴파일하기가 상당히 쉬움,
- 그들은, 모든 변수가 마스킹되기 때문에, 정보 유출을 나타내지 않음,
- 그들은, 인간 오퍼레이터를 수반하지 않고도, 자동적으로 실행되도록 프로그래밍될 수 있음.
본 발명의 실시형태가 다양한 예에 대한 설명에 의해 예시되었지만, 그리고 이들 실시형태가 상당히 상세하게 설명되었지만, 첨부된 청구범위의 범위를 이러한 세부 사항으로 한정하거나 또는 어떤 식으로든 제한하는 것은 본 출원인의 의도가 아니다. 추가적인 이점 및 수정이 기술 분야의 숙련된 자에게는 쉽게 명백해질 것이다. 따라서, 보다 넓은 양태에서의 본 발명은, 도시되고 설명되는 특정 세부 사항, 대표적인 방법, 및 예시적인 실시형태로 제한되지 않는다.

Claims (12)

  1. 알고리즘의 호출 그래프 표현(call graph representation)을 상기 알고리즘의 보안 호출 그래프 표현(secured call graph representation)으로 변환하기 위한 컴퓨터 구현 방법으로서,
    상기 호출 그래프는 적어도 하나의 입력(a, b, f), 적어도 하나의 에지(c, d, e), 적어도 하나의 노드(P, Q, R, S) 및 적어도 하나의 출력(g)을 포함하고, 상기 호출 그래프의 상기 에지는 상기 알고리즘의 내부 변수를 나타내고, 상기 호출 그래프의 상기 노드는 상기 알고리즘의 선형 또는 비선형 기본 함수를 나타내고, 상기 컴퓨터 구현 방법은,
    - 상기 호출 그래프의 각각의 입력을 마스킹하는 단계(601),
    - 상기 호출 그래프의 각각의 마스킹되지 않은(unmasked) 내부 변수를 마스킹된 변수로 대체하는 단계(602),
    - 상기 호출 그래프의 적어도 각각의 비선형 함수를, 마스킹된 변수에 적용되는 등가 함수로 대체하는 단계(603),
    - 상기 호출 그래프의 각각의 출력을 마스킹 해제하는(unmasking) 단계(604)를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 호출 그래프는 반복적으로 프로세싱되는 부분을 포함하고, 상기 마스킹되지 않은 내부 변수를 마스킹된 내부 변수에 의해 대체하는 단계(602)는, 반복적으로 프로세싱되는 상기 호출 그래프의 부분의 입력 및 출력 둘 다로서 사용되는 내부 변수(b, g)를 식별하는 단계, 및 상기 호출 그래프의 상기 부분의 입력 및 출력에서 이들 변수에 대해 동일한 마스크(m2)를 사용하는 단계를 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 호출 그래프는 반복적으로 프로세싱되는 부분을 포함하고, 상기 마스킹되지 않은 내부 변수를 마스킹된 내부 변수에 의해 대체하는 단계(602)는, 반복적으로 프로세싱되는 상기 호출 그래프의 부분의 입력 및 출력 둘 다로서 사용되는 내부 변수(b, g)를 식별하는 단계, 및 상기 내부 변수의 마스크를 수정하기 위한 추가 노드(120)를 상기 반복 부분의 피드백 에지에 삽입하는 단계를 포함하는, 컴퓨터 구현 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 반복적으로 프로세싱되는 상기 호출 그래프의 부분에서의 내부 변수의 상기 마스크는 규칙적인 간격으로 변경되고, 관련된 함수가 상응하게 수정되는, 컴퓨터 구현 방법.
  5. 제4항에 있어서, 상기 반복 부분의 상기 내부 변수의 상기 마스크를 리프레쉬하기 위한 추가 노드(402)를 상기 호출 그래프에 삽입하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 호출 그래프의 적어도 각각의 비선형 함수를, 마스킹된 변수에 적용되는 등가 함수로 대체하는 단계(603)에서 계산되는 등가 함수는 매치 테이블(match table)을 사용하여 구현되는, 컴퓨터 구현 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 호출 그래프의 적어도 각각의 비선형 함수를, 마스킹된 변수에 적용되는 등가 함수로 대체하는 단계(603)는, 상기 호출 그래프의 각각의 선형 함수를, 상기 입력 및 출력 내부 변수의 마스크를 고려하는 등가 함수에 의해 대체하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 모든 마스크 값은 랜덤하게 결정되는, 컴퓨터 구현 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 보호된 실행 가능 코드를 생성하도록 상기 호출 그래프를 컴파일하는 추가 단계를 더 포함하는, 컴퓨터 구현 방법.
  10. 컴퓨터 시스템으로 하여금 제1항 내지 제9항 중 어느 한 항에 따른 방법을 수행하게 하기 위한 컴퓨터 실행 가능 명령어를 포함하는, 비휘발성 컴퓨터 판독 가능 데이터 저장 매체 상에 저장되는 컴퓨터 프로그램 제품.
  11. 컴퓨터 시스템으로 하여금 제1항 내지 제9항 중 어느 한 항에 따른 방법을 수행하게 하기 위한 컴퓨터 실행 가능 명령어를 포함하는 비휘발성 컴퓨터 판독 가능 데이터 저장 매체.
  12. 메모리에 커플링되는 프로세서를 포함하는 시스템으로서,
    상기 메모리는, 상기 시스템으로 하여금 알고리즘의 호출 그래프 표현을 상기 알고리즘의 보안 호출 그래프 표현으로 변환하기 위한 컴퓨터 구현 방법을 수행하게 하기 위한 컴퓨터 실행가능 명령어를 저장하고, 상기 호출 그래프는 적어도 하나의 입력, 적어도 하나의 에지(c, d, e), 적어도 하나의 노드(P, Q, R, S) 및 적어도 하나의 출력(g)을 포함하며, 상기 호출 그래프의 상기 에지는 상기 알고리즘의 내부 변수를 나타내고, 상기 호출 그래프의 상기 노드는 상기 알고리즘의 선형 또는 비선형 기본 함수를 나타내며, 상기 시스템은 상기 프로세싱 디바이스를 포함하고, 상기 프로세싱 디바이스는,
    - 상기 호출 그래프의 각각의 입력을 마스킹하도록,
    - 상기 호출 그래프의 각각의 마스킹되지 않은 내부 변수를 마스킹된 변수로 대체하도록,
    - 상기 호출 그래프의 적어도 각각의 비선형 함수를, 상기 마스킹된 변수에 적용되는 등가 함수에 의해 대체하도록, 그리고
    - 상기 호출 그래프의 각각의 출력을 마스킹 해제하도록
    구성되는, 메모리에 커플링되는 프로세서를 포함하는 시스템.
KR1020180022242A 2017-02-24 2018-02-23 알고리즘으로의 마스킹의 자동 삽입 Active KR102049656B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17305202.8 2017-02-24
EP17305202.8A EP3367606B1 (en) 2017-02-24 2017-02-24 Automatic insertion of masking into an algorithm

Publications (2)

Publication Number Publication Date
KR20180098172A true KR20180098172A (ko) 2018-09-03
KR102049656B1 KR102049656B1 (ko) 2019-11-28

Family

ID=58709897

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180022242A Active KR102049656B1 (ko) 2017-02-24 2018-02-23 알고리즘으로의 마스킹의 자동 삽입

Country Status (4)

Country Link
US (1) US10735179B2 (ko)
EP (1) EP3367606B1 (ko)
KR (1) KR102049656B1 (ko)
CN (1) CN108512645B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3624390A1 (en) * 2018-09-17 2020-03-18 Secure-IC SAS Devices and methods for protecting cryptographic programs
US11042634B2 (en) * 2018-12-21 2021-06-22 Fujitsu Limited Determining information leakage of computer-readable programs
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
US11652721B2 (en) * 2021-06-30 2023-05-16 Capital One Services, Llc Secure and privacy aware monitoring with dynamic resiliency for distributed systems
US11934327B2 (en) * 2021-12-22 2024-03-19 Microsoft Technology Licensing, Llc Systems and methods for hardware acceleration of data masking using a field programmable gate array
US20240364497A1 (en) * 2023-04-28 2024-10-31 Cryptography Research, Inc. Protection of secret data using unprotected data path

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8091139B2 (en) * 2007-11-01 2012-01-03 Discretix Technologies Ltd. System and method for masking arbitrary Boolean functions

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594761B1 (en) * 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
CN101364203A (zh) * 2008-09-19 2009-02-11 南京大学 一种面向隐蔽通道分析的系统分析和划分方法
FR2950721B1 (fr) * 2009-09-29 2011-09-30 Thales Sa Procede d'execution d'un algorithme de protection d'un dispositif electronique par masquage affine et dispositif associe
CN102713859B (zh) * 2009-11-09 2015-04-29 艾克瑟吉有限公司 用于使电厂的热效率最大化的系统及方法
US9230455B2 (en) * 2009-12-11 2016-01-05 Digital Immunity Llc Steganographic embedding of executable code
US8971526B2 (en) * 2011-07-26 2015-03-03 Crocus-Technology Sa Method of counter-measuring against side-channel attacks
US9424038B2 (en) * 2012-12-10 2016-08-23 Nvidia Corporation Compiler-controlled region scheduling for SIMD execution of threads
US9721120B2 (en) * 2013-05-14 2017-08-01 Apple Inc. Preventing unauthorized calls to a protected function
CN103279414B (zh) * 2013-05-23 2016-04-20 北京大学 一种适用于Xen虚拟化平台的隐蔽通道检测方法
US9158604B1 (en) * 2014-05-13 2015-10-13 Qualcomm Incorporated Lightweight data-flow tracker for realtime behavioral analysis using control flow

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8091139B2 (en) * 2007-11-01 2012-01-03 Discretix Technologies Ltd. System and method for masking arbitrary Boolean functions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Alexander DeTrano et. al., "Exploiting small leakages in masks to turn a second-order attack into a first-order attack and improved rotating substitution box masking with linear code cosets", Hindawi Publishing Corporation, The Scientific World Journal (2015.)* *

Also Published As

Publication number Publication date
EP3367606A1 (en) 2018-08-29
KR102049656B1 (ko) 2019-11-28
CN108512645A (zh) 2018-09-07
CN108512645B (zh) 2021-06-25
EP3367606B1 (en) 2019-09-18
US20180248682A1 (en) 2018-08-30
US10735179B2 (en) 2020-08-04

Similar Documents

Publication Publication Date Title
KR102049656B1 (ko) 알고리즘으로의 마스킹의 자동 삽입
Coron et al. Conversion from arithmetic to boolean masking with logarithmic complexity
Moss et al. Compiler assisted masking
US8918768B2 (en) Methods and apparatus for correlation protected processing of data operations
EP4371023B1 (en) Cryptographic system for post-quantum cryptographic operations
CN105453481B (zh) 包括表网络的计算设备
JP7242675B2 (ja) コンパイル装置及び方法
JP7132926B2 (ja) コンパイルデバイス及びコンパイル方法
CN111819542B (zh) 编译设备和方法
US8976960B2 (en) Methods and apparatus for correlation protected processing of cryptographic operations
US8707053B2 (en) Performing boolean logic operations using arithmetic operations by code obfuscation
CN108141352A (zh) 密码设备和编码设备
WO2018115143A1 (en) A calculation device for encoded addition
CN105765896B (zh) 用于表格网络的迭代应用的计算设备
JP6919973B2 (ja) プログラムコードのコンピュータ支援難読化方法
Vandersmissen et al. A white-box speck implementation using self-equivalence encodings
US8862896B2 (en) Data protection using key translation
CN111602367B (zh) 用于保护在使白盒密码算法安全的对策中使用的熵源的方法
Cui et al. A Generalized Obfuscation Method to Protect Software of Mobile Apps
Liu et al. Automated Verification of Correctness for Masked Arithmetic Programs
Vandersmissen et al. A white-box speck implementation using self-equivalence encodings (full version)
Tropnikova et al. System for Protecting Executable Files of the Java Programming Language
EP4533730A1 (en) Secure processing system and method
Löfström et al. Hiding Information in Software With Respect to a White-box Security Model

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7