KR20180098172A

Automatic insertion of masking into an algorithm

Abstract

A computer implemented method, program product, and system implementing the method for converting a call graph representation of an algorithm into a secure call graph representation of the algorithm. The call graph includes an input (a, b, f), an internal variable that is an edge of the graph (c, d, e), a base function that is a node of the graph, and an output (g), the function being linear or non-linear , the method comprising the steps of: - masking each input of the call graph, - replacing each unmasked internal variable of the call graph with a masked variable, - at least each of the call graphs. Replacing the non-linear function with an equivalent function applied to the masked variable, unmasking each output of the call graph.

KR20180098172A, drawing sheet 1
Sheet 1 of 26

Term

11.4 yearsto projected expiry

Projected expiry 23 February 2038, counted from filing; an application has no term until it is granted.

  1. Priority and filed
  2. Published
  3. Today
  4. Projected expiry

12 claims: 5 independent, 7 dependent

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