KR101628923B1 - Code transformation method and code transformation apparatus - Google Patents
Code transformation method and code transformation apparatus Download PDFInfo
- Publication number
- KR101628923B1 KR101628923B1 KR1020140188492A KR20140188492A KR101628923B1 KR 101628923 B1 KR101628923 B1 KR 101628923B1 KR 1020140188492 A KR1020140188492 A KR 1020140188492A KR 20140188492 A KR20140188492 A KR 20140188492A KR 101628923 B1 KR101628923 B1 KR 101628923B1
- Authority
- KR
- South Korea
- Prior art keywords
- function
- flattening
- code conversion
- software
- integrity
- Prior art date
Links
- 230000009466 transformation Effects 0.000 title 1
- 238000011426 transformation method Methods 0.000 title 1
- 230000006870 function Effects 0.000 claims abstract description 201
- 238000006243 chemical reaction Methods 0.000 claims abstract description 89
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000009499 grossing Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
Description
본 발명은 코드 변환 방법 및 코드 변환 장치에 관한 것으로서, 구체적으로는 중간 언어를 이용하여 변조 저항성 및 변조 탐지 기능을 갖는 소프트웨어를 생성하기 위한 코드 변환 방법 및 코드 변환 장치에 관한 것이다. The present invention relates to a code conversion method and a code conversion apparatus, and more particularly, to a code conversion method and a code conversion apparatus for generating software having a modulation resistance and a modulation detection function using an intermediate language.
소프트웨어 보호 분야는 악의적인 목적의 소프트웨어 분석(예를 들어 소프트웨어 중요 로직 탈취)이나 소프트웨어 변조(예를 들어 소프트웨어 라이센스 체크 루틴 우회) 등으로부터 소프트웨어를 보호하는 방법을 연구하는 분야이다. 그 중에서 소프트웨어 변조 탐지(tamper-detection)는 소프트웨어가 변조되었을 때 변조를 탐지하여 대응하는 방법에 관한 것이고, 변조 저항성(tamper-resistance)을 갖는 소프트웨어는 소프트웨어의 변조를 어렵게 하여 선제적으로 변조를 차단하는 방법에 관한 것이다. The area of software protection is the study of how to protect software from malicious software analysis (for example, software critical logic hijacking) or software tampering (for example, bypassing software license check routines). Among them, tamper-detection is about detecting and responding to the modulation when the software is modulated, and software with tamper-resistance makes it difficult to modulate the software, .
소프트웨어 보호 기법은 그 기반에 따라 분류될 수 있다. 하드웨어 기반의 보호 기법은 외부에서 접근할 수 없는 하드웨어의 안정성에 기반하여 소프트웨어를 보호하는 기법이다. 소프트웨어 기반의 보호 기법은 하드웨어의 도움 없이 소프트웨어 자체적으로 분석이나 변조 등에 대응하는 기법이다. 하드웨어 기반의 보호 기법이 일반적으로 더 안전하다고 알려져 있지만 추가적인 하드웨어가 필요하여 추가 비용이 발생하고 하드웨어의 장착에 의존하여 여러 소프트웨어 환경에서의 유연한 적용이 어려운 점이 있다. 이와 같이, 소프트웨어 기반의 보호 기법이 하드웨어 기반의 보호 기법에 비해서 다양한 장점이 존재한다. Software protection techniques can be categorized according to their bases. Hardware-based protection is a technique for protecting software based on the stability of hardware that can not be accessed from the outside. Software-based protection techniques are techniques that respond to software analysis or modulation without hardware assistance. Although hardware-based protection schemes are generally known to be more secure, they require additional hardware, which adds to the cost, and is dependent on the hardware installed, making it difficult to adapt to multiple software environments. Thus, software-based protection schemes have a variety of advantages over hardware-based protection schemes.
소프트웨어 기반의 보호 기법은 소프트웨어에 변조 저항성 및/또는 탐지 기능을 추가하기 위해 코드 변환 기법을 이용한다. 코드 변환은 소스코드(예를 들어 C, Fortran 등) 레벨에서 이루어지거나 바이너리 코드(예를 들어 기계어) 레벨에서 이루어진다. 하지만 소스코드 레벨 및 바이너리 레벨의 코드 변환 기법 각각은 다양한 한계점을 가지고 있다. Software-based protection schemes use transcoding techniques to add modulation resistance and / or detection capabilities to software. Code conversion occurs at the level of the source code (for example, C, Fortran, etc.) or at the level of binary code (for example, machine language). However, each of the source code level and binary level code conversion techniques has various limitations.
소스코드 레벨의 코드 변환 기법은 소스코드 레벨에서 코드 변환이 이루어지기에 컴파일 과정에서의 최적화로 코드 변환 효과를 보존하기 힘든 한계가 존재한다. 바이너리 레벨의 코드 변환 기법은 기계어 해석과 기계어 자체의 수정이 어려워 코드 변환 자체가 어렵고 이에 따라 소프트웨어의 정상적인 기능을 유지하면서 저항성 및 탐지 기능을 추가하는 것이 용이치 않다. 또한 소스코드 레벨의 변환 기법은 소스코드를 작성한 언어(예를 들어 C, Fortran 등)에 의존적이고 바이너리 레벨의 코드 변환 기법은 기계어(예를 들어 x86, ARM 등)에 의존적이기에 각 언어나 기계어마다 동일한 코드 변환 기법을 적용하는 것이 용이치 않다. There is a limitation in preserving the effect of code conversion due to optimization in the compilation process because the source code level code conversion technique is performed at the source code level. The binary-level code conversion technique is difficult to modify the machine language itself and the machine language itself, so it is difficult to add the resistance and detection functions while maintaining the normal function of the software. Also, source code level conversion techniques are dependent on the source language (eg C, Fortran, etc.) and binary level code conversion techniques are dependent on machine language (eg x86, ARM, etc.) It is not practical to apply the same code conversion technique.
따라서, 소프트웨어 기반의 보호 기법을 적용하여 비용 감소 및 유연성을 제공하면서 소프트웨어 기반의 보호 기법의 기존에 알려져 있는 여러 문제점을 해소할 수 있도록 하는 코드 변환 방법 및 코드 변환 장치가 필요하다. Therefore, there is a need for a code conversion method and a code conversion device that can solve various known problems of software-based protection techniques while providing cost reduction and flexibility by applying software-based protection techniques.
본 발명은 상술한 문제점을 해결하기 위해서 안출한 것으로서, 소스코드의 언어 및 기계어의 언어 유형에 상관없이 소프트웨어 기반으로 본래 기능에 영향을 미치지 않고 용이하게 변조 탐지 및 변조 저항의 기능을 추가할 수 있는, 코드 변환 방법 및 코드 변환 장치를 제공하는 데 그 목적이 있다. The present invention has been made in order to solve the above-mentioned problems, and it is an object of the present invention to provide an apparatus and a method for adding a function of a modulation detection and a modulation resistance without affecting a function originally based on software regardless of a language of a source code and a language type of a machine language , A code conversion method, and a code conversion device.
상기와 같은 목적을 달성하기 위한 코드 변환 방법은 (b) 보호될 함수를 선택하는 단계로서, 제어 흐름을 평탄화할 대상인 평탄화 함수 및 무결성이 보장되어야 할 대상인 무결성 함수를 선택하는, 보호 함수 선택 단계 및 (c) 평탄화 함수에 대한 평탄화에 이용될 레이블들을 생성하는 단계로서, 무결성 함수를 이용하여 평탄화 함수 내의 블록들 각각에서 이용될 분기 함수 각각을 생성하는, 레이블 생성 단계를 포함한다. According to another aspect of the present invention, there is provided a code conversion method for selecting a function to be protected, the method comprising the steps of: selecting a planarization function to be flattened by a control flow and an integrity function, (c) generating labels to be used for planarization for the flattening function, wherein the integrity function is used to generate each of the branching functions to be used in each of the blocks in the flattening function.
또한 상기와 같은 목적을 달성하기 위한 코드 변환 장치는 보호될 함수를 선택하는 선택부로서, 제어 흐름을 평탄화할 대상인 평탄화 함수 및 무결성이 보장되어야 할 대상인 무결성 함수를 선택하는, 선택부 및 평탄화 함수에 대한 평탄화에 이용될 레이블들을 생성하는 레이블 생성부로서, 무결성 함수를 이용하여 평탄화 함수 내의 블록들 각각에서 이용될 분기 함수 각각을 생성하는, 레이블 생성부를 포함한다. In order to achieve the above object, a code conversion apparatus includes a selecting unit for selecting a function to be protected, a selecting unit for selecting a smoothing function to be smoothed and a smoothing function, And a label generation unit for generating labels to be used in each of the blocks in the flattening function by using an integrity function.
상기와 같은 본 발명에 따른 코드 변환 방법 및 코드 변환 장치는 소스코드의 언어 및 기계어의 언어 유형에 상관없이 소프트웨어 기반으로 본래 기능에 영향을 미치지 않고 용이하게 변조 탐지 및 변조 저항의 기능을 추가할 수 있는 효과가 있다. The code conversion method and the code conversion device according to the present invention can easily add the functions of the modulation detection and modulation resistance without affecting the original function of the software based on the language of the source code and the language type of the machine language There is an effect.
도 1은 코드 변환 장치의 예시적인 하드웨어 블록도를 도시한 도면이다.
도 2는 코드 변환을 위한 예시적인 제어 흐름을 도시한 도면이다.
도 3은 코드 변환 장치의 예시적인 기능 블록도를 도시한 도면이다.
도 4는 평탄화 대상인 예시적인 평탄화 함수에 대한 CFG를 나타내는 도면이다.
도 5는 도 4의 CFG에 대한 평탄화 처리 적용후의 평탄화된 CFG를 나타낸다.1 is a diagram showing an exemplary hardware block diagram of a code conversion apparatus.
2 is a diagram illustrating an exemplary control flow for code conversion.
3 is a diagram showing an exemplary functional block diagram of a code conversion apparatus.
4 is a diagram showing a CFG for an exemplary planarization function to be planarized.
5 shows a planarized CFG after the application of the planarization treatment to the CFG of FIG.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
The above and other objects, features and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings, in which: It can be easily carried out. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 코드 변환 장치(100)의 예시적인 하드웨어 블록도를 도시한 도면이다. 1 is a diagram showing an exemplary hardware block diagram of the
도 1에 따르면 코드 변환 장치(100)는 입력 인터페이스(101), 출력 인터페이스(103), 메모리(105), 저장 매체(107), 시스템 버스/제어 버스(111) 및 프로세서(113)를 포함하고 통신 인터페이스(109)를 더 포함할 수 있다. 특정 하드웨어 블록은 코드 변환 장치(100)의 용도나 변형예에 따라 생략될 수 있다. 코드 변환 장치(100)는 변조 저항성 및/또는 변조 탐지를 가능하도록 소스코드(소프트웨어)를 변환하는 장치이다. 코드 변환 장치(100)는 예를 들어 프로그래머 또는 프로그램의 배포자에 의해서 이용되는 개인용 컴퓨터이거나 노트북이거나 프로그램의 변환 기능을 인터넷망을 통해서 제공가능한 서버 등일 수 있다. 1, the
코드 변환 장치(100)의 각 하드웨어 블록들을 간단히 살펴보면, 입력 인터페이스(101)는 사용자 입력을 수신하기 위한 인터페이스이다. 입력 인터페이스(101)는 마우스, 키보드 및/또는 터치 패널 등을 구비하고 코드 변환을 수행하고자 하는 사용자 입력을 수신한다. 수신된 입력은 시스템 버스/제어 버스(111)를 통해 입력 데이터로 프로세서(113)에 전달된다. Each hardware block of the
출력 인터페이스(103)는 LCD 모듈, LED 모듈 및/또는 스피커 등을 구비하여 코드 변환 장치(100)에서 수행된 결과나 중간 결과를 출력하기 위한 인터페이스이다. 출력 인터페이스(103)는 예를 들어 코드 변환된 소프트웨어에 대한 결과를 알 수 있도록 한다. The
메모리(105)는 휘발성 메모리를 포함한다. 메모리(105)는 각종 데이터와 프로그램을 임시로 저장할 수 있다. 예를 들어, 메모리(105)는 프로세서(113)에서 수행되는 코드 변환 프로그램이나 코드 변환 프로그램의 입력인 소프트웨어(또는 소스코드, 이하에서는 '소프트웨어'와 '소스코드'란 용어를 혼용해서 사용함.)를 임시로 저장한다.The
저장 매체(107)는 적어도 프로세서(113)에서 수행되는 코드 변환 프로그램과 코드 변환 프로그램의 입력 대상인 소프트웨어들을 저장한다. 소프트웨어는 소스코드 레벨로 구성된다. 예를 들어 소프트웨어는 C, C++, 포트란(Fortran), Java 등과 같은 프로그래밍 언어로 작성된다. The
코드 변환 프로그램은 입력 소프트웨어를 중간 언어(Intermediate Representation, 이하 'IR'이라고도 지칭함.)로 변환하여 중간 언어 상에서 입력 소프트웨어가 변조 저항성 및/또는 변조 탐지성을 가지도록 변환한다. 지정된 기계어로 변환된 소프트웨어는 출력 인터페이스(103)로 출력되거나 저장 매체(107)에 저장되거나 통신 인터페이스(109)를 통해 출력될 수 있다. The transcoding program converts the input software into an Intermediate Representation (IR) to convert the input software to modulation resistance and / or modulation detection on the intermediate language. The software converted into the designated machine language can be output to the
프로세서(113)는 명령어(instruction)을 실행할 수 있는 하나 이상의 실행 유닛(execution unit)을 포함하여 저장 매체(107)에 저장된 프로그램의 코드를 실행한다. 프로세서(113)는 소위 CPU, MPU 등으로 지칭될 수 있다. The
특히, 프로세서(113)는 저장 매체(107)에 저장된 코드 변환 프로그램을 메모리(105) 등에 로딩하고 코드 변환 프로그램을 수행하여 입력 소프트웨어를 변조 저항성 및/또는 변조 탐지성을 가지도록 변환한다. 프로세서(113)는 바람직하게는 입력 소프트웨어를 중간 언어로 변환하고 중간 언어로 변환된 입력 소프트웨어에 대해서 변조 저항성 및/또는 변조 탐지성을 가지도록 하는 코드를 추가하거나 입력 소프트웨어를 지정된 기계어로 변환한다. In particular, the
프로세서(113), 특히 코드 변환 프로그램,에 대해서는 도 2 및 도 3을 통해서 상세히 살펴보도록 한다. The
시스템 버스/제어 버스(111)는 하드웨어 블록들 사이의 각종 아날로그/디지털의 데이터를 송수신할 수 있는 버스이다. 시스템 버스/제어 버스(111)는 병렬 버스이거나 시리얼 버스이거나 특정 하드웨어 블록을 위한 전용 버스일 수 있다. 시스템 버스/제어 버스(111)는 버스의 타입에 따라 아날로그나 디지털의 데이터를 송수신할 수 있다. The system bus /
더 포함가능한 통신 인터페이스(109)는 인터넷망에 연결되어 네트워크 패킷을 송수신하기 위한 인터페이스이다. 통신 인터페이스(109)는 예를 들어 와이파이나 유선 랜에 연결되기 위한 파이(PHY) 칩 등을 포함한다.
The
도 2는 코드 변환을 위한 예시적인 제어 흐름을 도시한 도면이다. 도 2의 코드 변환 제어 흐름은 예를 들어 도 1의 코드 변환 장치(100)의 하드웨어 블록도 상에서 수행된다. 도 2의 코드 변환 제어 흐름은 코드 변환 장치(100)의 프로세서(113)에 의해서 수행되고 바람직하게는 코드 변환 프로그램에 의한 프로세서(113)의 명령어 수행으로 이루어진다.2 is a diagram illustrating an exemplary control flow for code conversion. The code conversion control flow of FIG. 2 is performed, for example, on a hardware block diagram of the
도 2의 코드 변환 제어 흐름은 코드 변환 장치(100)의 프로세서(113)가 저장 매체(107)에 저장된 코드 변환 프로그램을 수행 시작함에 따라 시작(S100)하고 코드 변환 프로그램이 수행 종료됨에 따라 종료(S200)한다. 2 starts as the
먼저 코드 변환 장치(100)(프로세서(113))는 입력 인터페이스(101)(또는 통신 인터페이스(109))를 통해 사용자가 변환할 소프트웨어에 대한 선택을 수신(S101)한다. 소프트웨어에 대한 선택 수신으로 코드 변환 장치(100)는 저장 매체(107)에서 저장된 또는 통신 인터페이스(109)를 통해 수신된 소프트웨어를 메모리(105) 등에 로딩한다. First, the code conversion device 100 (the processor 113) receives (S101) a selection of software to be converted by the user through the input interface 101 (or the communication interface 109). Upon receiving the selection for the software, the
이후, 코드 변환 장치(100)는 로딩된 소스코드 레벨의 소프트웨어를 중간 언어의 표현으로 변환(S103)한다. 중간 언어는 예를 들어 알려져 있는 LLVM(Low Level Virtual Machine) 컴파일러 플랫폼에서 이용되는 명령어일 수 있다. LLVM의 중간 언어는 소스 레벨의 언어의 종류에 상관없는 독립적인 언어이고 또한 기계어에 의존되지 않는 언어이다. LLVM의 중간 언어는 기계어에 독립적인 레이블(Label)을 지원하고 레이블을 통해 다양한 수행 경로를 표현할 수 있다. Then, the
또한, 중간 언어로 변환된 소프트웨어에 기초한 데이터는 코드 변환 장치(100)에 의해서 출력 인터페이스(103)로 출력될 수 있다. 예를 들어 코드 변환 장치(100)는 변환된 소프트웨어에 포함된 함수 리스트를 출력 인터페이스(103)를 통해 출력한다. In addition, data based on the software converted into the intermediate language can be output to the
사용자는 출력된 함수 리스트에서 보호될 필요가 있는 함수의 선택을 나타내는 입력을 입력 인터페이스(101)를 통해 제공하고 코드 변환 장치(100)는 선택 입력의 수신에 따라 입력에 대응하는 보호될 함수를 선택(S105)한다. The user provides an input indicating the selection of a function that needs to be protected in the output function list through the
코드 변환 장치(100)는 보호될 필요가 있는 함수의 선택으로 특정 유형의 함수를 함수 리스트에서 선택한다. 구체적으로 코드 변환 장치(100)는 코드 분석을 어렵게 하기 위해 제어 흐름을 평탄화(flattening)할 대상인 함수(이하 '평탄화 함수' 또는 'FF'(Flattening Function)라고도 함)를 선택하고 무결성(Integrity)이 보장되어야 하는 대상인 함수(이하 '무결성 함수' 또는 'IF'(Integrity Function)라고도 함)를 선택한다. 나아가 코드 변환 장치(100)는 암호화되어야 하는 대상인 함수(이하 '암호화 함수' 또는 EF(Encryption Function)라고도 함)를 선택한다. 하나 이상의 함수의 선택은 사용자 입력에 의해서 결정될 수 있다. 각 유형의 함수는 하나 이상일 수 있다. 또한 평탄화 함수는 무결성 함수 및 암호화 함수에 먼저 수행되어야 하는 함수로서 코드 변환 장치(100)가 설정하거나 출력 인터페이스(103)를 통해 가이드한다. The
평탄화 함수는 함수의 제어 흐름(Control Flow)을 평탄화하여 분석을 난해화 하기 위한 대상 함수로서 평탄화 함수에 대한 평탄화 작업 과정에서 무결성 함수의 무결성 확인 및 암호화 함수를 암호화할 동적 키 생성을 위한 각종 정보(데이터)가 생성된다. 무결성 함수는 무결성이 보장되어야 하는 대상 함수로서 반드시 숨길 필요는 없으나 변조가 되면 안되는 함수를 나타낸다. 예를 들어 무결성 함수는 안티디버깅 루틴(Routine)이나 라이센스 체크 루틴 등일 수 있다. 암호화 함수는 암호화로 보호되어야 하는 함수로서 분석 자체를 막도록 숨겨져야 하는 함수가 지정될 수 있다. 예를 들어 암호화 함수는 소프트웨어의 중요 로직을 포함하여 외부로 노출되면 치명적인 함수 등일 수 있다. The smoothing function is a target function for smoothing the analysis by flattening the control flow of the function. In the smoothing process of the smoothing function, various information for the integrity check of the integrity function and the dynamic key generation for encrypting the encryption function Data) is generated. An integrity function is a target function whose integrity must be guaranteed. It represents a function that is not necessarily hidden, but should not be modulated. For example, an integrity function may be an anti-debug routine or a license check routine. A cryptographic function is a function that must be protected by encryption, and a function that should be hidden to prevent analysis itself can be specified. For example, an encryption function can be a fatal function, etc., when exposed to the outside, including critical software logic.
본 발명에서 주목해야 하는 점은, 평탄화 함수에 대한 각종 평탄화 처리 과정에서 무결성 함수에 대한 무결성 확인이 가능하도록 하고 나아가 동적 키 생성이 가능하도록 한다. 이와 관련해서는 이하에서 상세히 살펴보도록 한다. It should be noted in the present invention that the integrity check of the integrity function can be performed in the various smoothing processes of the smoothing function and further the dynamic key generation is enabled. This will be discussed in detail below.
이후, 단계 S105에서 선택된 평탄화 함수에 대한 평탄화에 이용될 각종 레이블을 생성(S107)한다. Then, in step S105, various labels to be used for flattening the selected flatness function are generated (S107).
레이블의 생성을 위해, 코드 변환 장치(100)는 선택된 평탄화 함수를 CFG(Control Flow Graph)로 변환하고 CFG의 변환에 따라 평탄화 함수를 평탄화 가능한 블록들로 분류한다. 도 4는 특정 평탄화 함수에 대한 CFG를 나타내고 도 5는 본 발명에 따른 평탄화 적용후의 CFG(도 4의 BB0는 도 5의 BBa에 대응하고 다른 블록 역시 동일한 대응 관계를 가짐.)를 나타낸다. 도 4에서 알 수 있는 바와 같이, CFG 내의 각 블록들은 수행시에 블록내의 코드가 다른 블록들로 분기(branch)하지 않도록 구성되고 각 블록의 모든 코드가 수행 완료된 후에 다른 블록으로 분기된다.In order to generate the label, the
도 4 및 도 5를 참조해서, 본 발명에 따른 레이블의 생성 과정을 살펴보면, 코드 변환 장치(100)는 먼저 평탄화 함수의 CFG 내의 각 블록에 대한 레이블(, 도 5의 예에서 i는 a ~ f임)을 생성하고 각 블록에 대한 분기 함수() 및 스위치문에서 이용될 함수()를 생성한다. Referring to FIGS. 4 and 5, a process of generating a label according to the present invention will be described. First, the
블록의 레이블은 대응하는 블록의 수행 시작 위치를 나타내며 레이블은 변수로 표현될 수 있다. 각 블록에 대응하는 분기 함수는 서로 상이하도록 구성된다.The label of the block indicates the execution start position of the corresponding block, and the label can be represented by a variable. The branch functions corresponding to the respective blocks are configured to be different from each other.
각 블록의 분기 함수 는, 블록의 수행 완료후의 분기 조건에 따라 예를 들어 분기가 없는 경우(즉, 하나의 후속하는 블록만이 수행되는 경우) " + mask + "로 표현되고, 분기가 존재하는 경우 "+ mask+ "로 표현된다. 는 해쉬(Hash) 함수로서 각 블록에 맵핑된 무결성 함수를 입력 인자로 한다. 여기서 는 각 블록에 맵핑된 IF(무결성 함수)의 해쉬값을 나타내는 데, 레이블 생성 과정에서 코드 변환 장치(100)는 각 블록마다 어떠한 IF의 무결성을 체크할 것인지를 결정한다. 예를 들어 코드 변환 장치(100)는 랜덤하게 평탄화 함수의 각 블록들을 특정 하나의 IF에 맵핑한다. 여기서,는 변환된 소프트웨어 상에서 블록 i가 시작하는 시작 위치(분기 위치)를 나타내는 임의의 지시자를 나타낸다. 는 숫자의 조합, 문자의 조합 또는 숫자와 문자의 조합으로 구성되고 변수로 표현될 수도 있다. Branch function of each block For example, when there is no branch (that is, only one subsequent block is performed) according to the branch condition after completion of execution of the block, + mask + Quot ;, and when a branch is present, + mask + " As an input argument, an integrity function mapped to each block as a hash function. here Represents a hash value of an IF (integrity function) mapped to each block. In the process of generating a label, the
mask는 입력 소프트웨어의 본래 기능에 따라 다음에 실행될 블록을 보정하기 위한 값이다. 분기 함수 는 이하에서 살펴볼 바와 같이 하드코딩되지 않고 분기 함수 자체(즉 각 블록의 분기 함수의 계산을 위한 코드)가 대응하는 블록과 함께 코드 블록으로 변환된 소프트웨어에 내장되도록 구성된다. 이에 따라 분기 함수 는 변환된 소프트웨어의 실제 실행시에 레이블 값()을 산출하기에 정적 분석 방법에 안전하다. 는 i 블록의 조건을 나타내어 하나 이상의 각 조건에 따른 참(1) 또는 거짓(0)에 따라 특정 레이블로 분기할 수 있도록 한다. 함수 F()는 특정 레이블()을 생성하기 위한 함수로서 F()는 분기 함수의 출력을 입력 인자로 하는 해쉬 함수로 표현될 수 있다. 함수 F()를 통해 다음번에 수행되어야 하는 정확한 블록 위치를 스위치문이 선택할 수 있다. mask is a value for correcting a block to be executed next according to the original function of the input software. Branch function Is not hard-coded as described below, (I.e., the code for calculating the branch function of each block) is embedded in the software converted into the code block together with the corresponding block. Therefore, Is the label value (< RTI ID = 0.0 > ) Is safe for static analysis. Indicates the condition of i block so that it can branch to a specific label according to true (1) or false (0) according to one or more conditions. The function F () ), F () can be expressed by a hash function with the output of the branch function as an input factor. Through the function F (), the switch statement can select the exact block location to be performed next.
여기서, 본 발명에 따른 분기 함수는 무결성 함수에 대한 해쉬 함수 적용으로 구성된다. 따라서, 만일 무결성 함수가 변조되는 경우에 무결성 함수에 대한 해쉬 함수의 적용으로 산출되는 해쉬값 또한 달라진다. 이는 의 값이 달라지고 각 블록의 실행이 정상적으로 동작하지 않게 된다. 만일 무결성 함수의 변조에 따른 변화를 탐지 가능하다면 변조에 대응할 수 있다. 본 발명에서는 무결성 함수에 대한 평탄화 함수의 분기에서 이용되는 해쉬값으로 변조를 판별할 수 있다. 이에 대해서는 이하에서 좀 더 살펴보도록 한다. Here, the branch function according to the present invention is configured by applying a hash function to an integrity function. Thus, if the integrity function is modulated, the hash value produced by applying the hash function to the integrity function is also different. this is And the execution of each block does not operate normally. If it can detect changes due to modulation of the integrity function, it can respond to modulation. In the present invention, the modulation can be determined by the hash value used in the branching of the smoothing function for the integrity function. This will be discussed in more detail below.
이후 코드 변환 장치(100)는 암호화 함수에 대한 암호화를 위해 동적 키를 생성(S109)한다. 본 발명에 의해 생성된 동적 키는 변환된 소프트웨어 어디에도 저장되지 않는다. 만일 변환된 소프트웨어 내에 동적 키가 저장되는 경우 이 동적 키를 외부에 의해서 찾게 된다면 암호화는 그 의미가 상실된다. Then, the
대신에, 본 발명은 레이블 생성 단계(S107)에서 생성된 레이블을 이용하여 동적 키를 생성한다. 구체적으로 살펴보면, 평탄화 함수의 각 블록(i)은 (,)의 쌍을 가진다. 따라서 평탄화 함수의 모든 블록들 각각은 모두 (,)를 가지고 i를 인덱스로 하는 이 순서쌍들을 이용하여 동적 키를 코드 변환 장치(100)가 생성한다. Instead, the present invention generates a dynamic key using the label generated in the label generation step (S107). Specifically, each block (i) of the smoothing function has , ). ≪ / RTI > Thus, each block of the smoothing function has all ( , ), And the dynamic key is generated by the
(또는 )는 대응하는 블록이 실행되는 경우에 분기 함수 B()에 의해서 동적으로 생성되는 값인데, 평탄화 함수의 특정 블록이 소프트웨어의 조건에 따라 실행될 수도 있고 실행되지 않을 수도 있다. 항상 동일한 동적 키를 변환된 소프트웨어로부터 도출해 낼 수 있어야 정상적으로 암호화된 암호화 함수를 복호화할 수 있고 이에 대한 대응 방안이 요구된다. (or Is a value generated dynamically by the branch function B () when the corresponding block is executed, but a specific block of the flattening function may or may not be executed in accordance with the condition of the software. It is necessary to be able to derive the same dynamic key from the converted software all the time so that the normally encrypted function can be decrypted and a corresponding countermeasure is required.
본 발명은 알려져 있는 Shamir의 비밀 분할(Secret Sharing) 기법((t,n)-threshold secret sharing)을 이용하여 이 문제를 해결한다. 이 비밀 분할 기법은 n 개의 분할(sharing) 중에서 t 개 이상의 분할이 모이면 비밀을 복원해낼 수 있는 기법이다. The present invention solves this problem using the known Shamir secret sharing technique ((t, n) -threshold secret sharing). This secret sharing scheme is a technique that can recover secrets when more than t partitions among n shares are collected.
비밀 분할 기법의 적용으로 동적 키 복원이 가능하도록, 코드 변환 장치(100)는 평탄화 함수의 CFG를 통해서 모든 블록들의 개수(n개, 도 4의 예에서 6)를 도출하고 CFG를 통해 최단 실행 경로의 길이(t)(도 4의 예에서 4)를 도출한다. 길이(t)는 최단 실행 경로상의 블록들의 개수를 나타낸다. 이러한 n과 t의 도출은 코드 변환 장치(100)에 의해서 용이하게 수행될 수 있다. 코드 변환 장치(100)는 도출된 n과 t를 이용하여 비밀인 동적 키를 생성한다. In order to enable dynamic key recovery by applying the secret division technique, the
코드 변환 장치(100)는 평탄화 함수를 생성된 레이블을 이용하여 평탄화(S111)한다. 도 5는 도 4의 CFG에 대해서 평탄화가 이루어진 후의 CFG를 나타낸다. 도 4 및 도 5를 통해서 알 수 있는 바와 같이, 원래 수행 경로 상의 각 블록간 수행 의존 순서는 스위치문을 통해 평탄화된다. 각 블록(도 5의 BBa, BBb 등 참조)들은 대응하는 분기 함수(도 5의 Ba(), Bb() 등 참조)와 함께 하나의 코드 블록을 구성한다. 분기 함수는 하드코딩되지 않고 본 발명에 따라 함수로서 대응하는 블록에 결합된다. 따라서 변환된 소프트웨어가 실행되고 평탄화 함수의 특정 블록이 수행되면 이 특정 블록의 수행 완료후에는 대응하는 분기 함수가 바로 수행된다. 분기 함수는 분기할 레이블을 동적으로 계산한다. 이에 따라 평탄화 함수의 정적 분석이 불가능하다. The
평탄화에 의한 평탄화된 코드는 디폴트 레이블()을 포함한다. 특정 블록의 분기 함수는 특정 무결성 함수에 대한 지정된 함수(예를 들어 해쉬 함수)의 적용으로 분기 레이블(또는 분기값)이 생성된다. 따라서 무결성 함수가 변조되게 되면 분기 함수에 의해서 산출되는 분기 레이블 또한 달라지게 된다. 본 발명에서는 디폴트 레이블(매칭되는 레이블이 존재하지 않는 경우에 이용되는 레이블)을 이용하여 무결성 함수의 변조를 탐지할 수 있다. 디폴트 레이블의 블록()은 변조 대응 루틴(예를 들어, 프로그램 종료, 변조 탐지 출력, 지정된 서버로의 변조 탐지 출력 등)을 포함하여 소프트웨어의 변조 탐지 결과를 출력할 수 있다. Flattened flattened code has a default label ( ). A branching function of a particular block generates a branching label (or branching value) by applying a specified function (e.g. a hash function) to a specific integrity function. Therefore, if the integrity function is modulated, the branch label calculated by the branch function also changes. In the present invention, modulation of an integrity function can be detected using a default label (a label used when no matching label exists). Block of default label ( May output the modulation detection results of the software, including modulation-related routines (e.g., program termination, modulation detection output, modulation detection output to designated server, etc.).
동적 키의 생성 이후에, 코드 변환 장치(100)는 암호화 함수를 생성된 동적 키로 암호화(S113)한다. 본 발명에 따른 동적 키는 변환되는 소프트웨어에 내장되지 않는다. 대신에, 평탄화된 함수의 코드 수행 시에 평탄화된 함수는 최소한 최단 실행 경로를 통해 t(최단 실행 경로 길이)개의 블록과 분기 함수를 수행하고 이에 따라 이 t 개의 분기 함수들을 이용하여 동적 키를 변환된 소프트웨어가 복원가능하다. After generation of the dynamic key, the
이후 코드 변환 장치(100)는 필요시 최적화 과정을 진행하고 사용자에 의해서 지정된 기계어를 위한 컴파일 및 링크 과정을 통해 기계어로 변환(S115)한다. 그리고 코드 변환 장치(100)는 변환된 기계어, 즉 변조 저항성 및 탐지 기능을 갖는 변환된 소프트웨어,를 저장 매체(107)에 저장(S117)하거나 통신 인터페이스(109)를 통해 출력한다. Thereafter, the
도 2의 코드 변환 방법은 매체에 저장될 수 있는 컴퓨터 프로그램으로 구성될 수 있다. 이 컴퓨터 프로그램은 USB, CD, DVD, 스마트 카드나 이동형 하드 디스크, 내장형 하드 디스크 등에 저장된다. 컴퓨터 프로그램은 도 1의 하드웨어 블록(들), 특히 프로세서(113),상에서 수행된다. The code conversion method of Fig. 2 can be configured with a computer program that can be stored in the medium. This computer program is stored on USB, CD, DVD, smart card, removable hard disk, built-in hard disk and so on. The computer program is executed on the hardware block (s), particularly the
도 3은 코드 변환 장치(100)의 예시적인 기능 블록도를 도시한 도면이다. 3 is a diagram showing an exemplary functional block diagram of the
도 3에 따르면 코드 변환 장치(100)는 중간 언어 변환부(151), 모듈 로더부(153), 선택부(155), 레이블 생성부(157), 동적 키 생성부(159), 평탄화부(161), 암호화부(163), 최적화부(165) 및 기계어 변환부(167)를 포함한다. 도 3의 기능 블록도의 일부 기능 블록은 설계 변형에 따라 생략될 수 있다. 도 3의 기능 블록들은 도 1의 하드웨어 블록도상에서 수행되며 바람직하게는 프로세서(113)에 의해서 수행되는 코드 변환 프로그램에 의해서 구성된다. 코드 변환 프로그램은 각종 저장 매체(107)에 저장되어 배포될 수 있고 도 1의 하드웨어 블록도 상의 프로세서(113)에 의해서 수행된다. 3, the
도 3의 기능 블록도에 대한 설명은 도 2의 설명을 고려하여 도 2와의 차이점을 중심으로 설명하며 생략된 설명은 대응하는 도 2의 설명으로 대체된다. The description of the functional block diagram of FIG. 3 will be centered on the difference from FIG. 2 in consideration of the description of FIG. 2, and the omitted description will be replaced with the corresponding description of FIG.
도 3의 기능 블록도는 하나의 소프트웨어 개발 플랫폼을 구성할 수 있다. 예를 들어 도 3의 기능 블록도는 LLVM(Low Level Virtual Machine) 컴파일 플랫폼 내에서 구성되어 소스 레벨의 소프트웨어를 특정 바이너리 레벨의 기계어로 변환한다. 기존 알려진 LLVM 플랫폼은 중간 언어 변환부(151), 모듈 로더부(153), 최적화부(165) 및 기계어 변환부(167)로 구성되고 알려진 이 LLVM 플랫폼은 소프트웨어를 중간 레벨의 중간 언어로 변환하고 이후 기계어로 변환한다. The functional block diagram of FIG. 3 may constitute one software development platform. For example, the functional block diagram of FIG. 3 is configured within the LLVM (Low Level Virtual Machine) compilation platform to translate the source level software into machine language at a particular binary level. The known LLVM platform includes an intermediate
도 3의 각 기능 블록들을 간단히 살펴보면, 중간 언어 변환부(151)는 사용자에 의해 선택된 입력 소프트웨어를 중간 언어의 표현으로 변환한다. 변환된 중간 언어의 표현으로 된 소프트웨어를 중간 언어 변환부(151)가 출력한다. 출력된 중간 언어의 소프트웨어는 이후 모듈 로더부(153) 등에 전달된다. 3, the intermediate
모듈 로더부(153)는 본 발명에 따라 소프트웨어 변환에 이용될 각종 프로그램 모듈을 로딩한다. 예를 들어 모듈 로더부(153)는 암호화 모듈, 해쉬 함수 모듈, 비밀 분할 모듈을 로딩한다. 이러한 암호화 모듈, 해쉬 함수 모듈 및 비밀 분할 모듈 등은 소프트웨어의 변환시에 변환된 소프트웨어에 포함된다. 이후 변환된 소프트웨어가 수행되는 경우 이러한 모듈도 또한 필요시 수행되어 소프트웨어 원래의 기능을 수행 가능하도록 한다. 바람직하게는 모듈 로더부(153)는 이러한 모듈들을 중간 언어의 표현으로된 소프트웨어에 링크한다. 로딩되는 모듈들 또한 중간 언어의 표현으로 구성되어 있다. The
선택부(155)는 보호될 함수를 선택한다. 선택부(155)는 적어도 제어 흐름을 평탄화할 대상인 하나 이상의 평탄화 함수, 무결성이 보장되어야 할 하나 이상의 무결성 함수를 선택한다. 또한, 선택부(155)는 암호화될 대상인 하나 이상의 암호화 함수를 선택한다. 평탄화 함수는 특정 하나 이상의 무결성 함수 및 특정 하나 이상의 암호화 함수에 선행하는 함수일 수 있다. The
레이블 생성부(157)는 평탄화 함수에 대한 평탄화에서 이용될 레이블들을 생성한다. 레이블 생성부(157)는 평탄화 함수에 대한 CFG를 생성하고 CFG 내의 각 블록들에서 이용될 분기 함수 각각을 생성한다. 특정 블록을 위한 특정 분기 함수는 맵핑된 무결성 함수를 인자로 하는 지정된 함수를 포함한다. 이 지정된 함수는 예를 들어 해쉬 함수일 수 있다. The
동적 키 생성부(159)는 암호화 함수를 암호화할 동적 키를 분기 함수들을 이용하여 생성한다. 동적 키는 평탄화 함수의 최단 실행 경로의 길이 및 총 블록 개수를 활용하는 비밀 분할 기법을 이용하여 생성된다. 동적 키는 변환된 소프트웨어 상에서 평탄화 함수의 최단 실행 경로의 길이(개수)의 분기 함수들을 이용하여 복원가능하다. The dynamic
평탄화부(161)는 선택된 평탄화 함수를 평탄화한다. 평탄화부(161)는 평탄화 함수의 블록들 각각을 대응하는 분기 함수 각각과 함께 하나의 코드 블록을 구성한다. 이에 따라 평탄화된 함수의 코드는 블록의 실행 후에 분기 함수가 동적으로 실행되고 분기 함수는 동적인 실행으로 이후 분기할 레이블을 동적으로 계산한다. The
평탄화부(161)에서 생성되는 평탄화 함수의 코드는 디폴트 레이블을 포함하고 디폴트 레이블은 소프트웨어의 변조를 탐지할 수 있도록 구성된다. The code of the smoothing function generated by the flattening
암호화부(163)는 동적 키 생성부(159)에서 생성된 동적 키로 암호화 함수를 암호화한다. The
최적화부(165)는 각 블록들을 통해 생성되거나 변환된 중간 언어의 소프트웨어를 최적화한다. 여기서의 최적화는 적어도 본 발명에 따른 코드 변환 기법의 적용 후에도 코드 변환 결과는 유지되도록 구성된다. The
기계어 변환부(167)는 지정 또는 선택된 기계어로의 컴파일과 라이브리 등을 이용한 링크 과정을 수행한다. 기계어 변환부(167)에 의한 중간 언어의 소프트웨어를 기계어로 변환함으로써 변조 저항성 및 탐지 기능을 갖는 변환된 소프트웨어를 생성한다. The machine
변환된 소프트웨어는 저장 매체(107)에 저장되거나 통신 인터페이스(109)를 통해 출력될 수 있다.
The converted software can be stored in the
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다. It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the invention. The present invention is not limited to the drawings.
100 : 코드 변환 장치
101 : 입력 인터페이스 103 : 출력 인터페이스
105 : 메모리 107 : 저장 매체
109 : 통신 인터페이스 111 : 시스템 버스/제어 버스
113 : 프로세서
151 : 중간 언어 변환부 153 : 모듈 로더부
155 : 선택부 157 : 레이블 생성부
159 : 동적 키 생성부 161 : 평탄화부
163 : 암호화부 165 : 최적화부
167 : 기계어 변환부100: Code conversion device
101: input interface 103: output interface
105: memory 107: storage medium
109: Communication interface 111: System bus / control bus
113: Processor
151: intermediate language conversion unit 153: module loader unit
155: selection unit 157: label generation unit
159: Dynamic key generation unit 161:
163: Encryption unit 165: Optimization unit
167:
Claims (11)
(b) 보호될 함수를 선택하는 단계로서, 제어 흐름을 평탄화할 대상인 평탄화 함수 및 무결성이 보장되어야 할 대상인 무결성 함수를 선택하는, 보호 함수 선택 단계; 및
(c) 상기 평탄화 함수에 대한 평탄화에 이용될 레이블들을 생성하는 단계로서, 상기 무결성 함수를 이용하여 상기 평탄화 함수 내의 블록들 각각에서 이용될 분기 함수 각각을 생성하는, 레이블 생성 단계를 포함하는,
코드 변환 방법.(a) converting the input software into an intermediate language;
(b) selecting a function to be protected, the method comprising the steps of: selecting a planarization function as an object to be flattened by a control flow and an integrity function to be an object of integrity; And
(c) generating labels to be used for planarization for the flattening function, wherein the integrity function is used to generate each of the branching functions to be used in each of the blocks in the flattening function,
Code conversion method.
상기 (b) 및 (c)는 상기 중간 언어로 변환된 소프트웨어에 대해서 수행하며,
상기 분기 함수 각각은 블록에 맵핑된 무결성 함수를 인자로 하는 지정된 함수를 포함하는,
코드 변환 방법.The method of claim 1,
(B) and (c) are performed on the software converted into the intermediate language,
Wherein each of the branch functions includes a specified function that takes an integrity function mapped to a block as a factor.
Code conversion method.
상기 단계 (b)는 암호화될 대상인 암호화 함수를 더 선택하고,
상기 코드 변환 방법은 (d) 상기 암호화 함수를 암호화할 동적 키를 분기 함수들을 이용하여 생성하는 단계; 및 (f) 상기 동적 키를 이용하여 상기 암호화 함수를 암호화하는 단계;를 더 포함하며,
상기 동적 키는 상기 평탄화 함수의 최단 실행 경로의 블록들 개수의 분기 함수들을 이용하여 복원가능한,
코드 변환 방법.The method according to claim 1,
The step (b) further selects an encryption function to be encrypted,
The code conversion method includes: (d) generating a dynamic key for encrypting the encryption function using branch functions; And (f) encrypting the encryption function using the dynamic key,
Wherein the dynamic key is restored using branch functions of the number of blocks of the shortest execution path of the flattening function,
Code conversion method.
(e) 상기 평탄화 함수를 평탄화하는 단계로서, 상기 블록들 각각은 대응하는 상기 분기 함수 각각과 하나의 코드 블록을 구성하는, 평탄화 단계;를 더 포함하며,
상기 분기 함수는 실행시에 분기할 레이블을 동적으로 계산하는,
코드 변환 방법.The method according to claim 1,
(e) flattening the flattening function, wherein each of the blocks comprises a corresponding one of the branching functions and one code block,
The branching function dynamically calculates a label to be branched at the time of execution,
Code conversion method.
상기 단계 (e)의 평탄화 함수의 코드는 디폴트 레이블를 포함하고,
상기 디폴트 레이블은 소프트웨어의 변조를 탐지할 수 있도록 구성되는,
코드 변환 방법.5. The method of claim 4,
Wherein the code of the flattening function of step (e) comprises a default label,
Wherein the default label is configured to detect tampering of the software,
Code conversion method.
상기 평탄화 함수에 대한 평탄화에 이용될 레이블들을 생성하는 레이블 생성부로서, 상기 무결성 함수를 이용하여 상기 평탄화 함수 내의 블록들 각각에서 이용될 분기 함수 각각을 생성하는, 레이블 생성부; 및
입력 소프트웨어를 중간 언어로 변환하고 변환된 중간 언어의 소프트웨어를 상기 선택부로 출력하는 중간 언어 변환부를 포함하는,
코드 변환 장치.A selection unit for selecting a function to be protected, the selection unit selecting a smoothing function as an object to be flattened by the control flow and an integrity function to be an object of integrity;
A label generating unit for generating labels to be used for flattening the flattening function, the label generating unit generating each branching function to be used in each of the blocks in the flattening function using the integrity function; And
And an intermediate language conversion unit for converting the input software into an intermediate language and outputting the converted intermediate language software to the selection unit.
Code conversion device.
상기 분기 함수 각각은 블록에 맵핑된 무결성 함수를 인자로 하는 지정된 함수를 포함하는,
코드 변환 장치.8. The method of claim 7,
Wherein each of the branch functions includes a specified function that takes an integrity function mapped to a block as a factor.
Code conversion device.
상기 선택부는 암호화될 대상인 암호화 함수를 더 선택하고,
상기 코드 변환 장치는 상기 암호화 함수를 암호화할 동적 키를 분기 함수들을 이용하여 생성하는 동적 키 생성부; 및 상기 동적 키를 이용하여 상기 암호화 함수를 암호화하는 암호화부;를 더 포함하며,
상기 동적 키는 상기 평탄화 함수의 최단 실행 경로의 블록들 개수의 분기 함수들을 이용하여 복원가능한,
코드 변환 장치.8. The method of claim 7,
The selection unit further selects an encryption function to be encrypted,
Wherein the code conversion apparatus comprises: a dynamic key generation unit for generating a dynamic key for encrypting the encryption function using branch functions; And an encryption unit encrypting the encryption function using the dynamic key,
Wherein the dynamic key is restored using branch functions of the number of blocks of the shortest execution path of the flattening function,
Code conversion device.
블록들 각각과 대응하는 분기 함수 각각이 하나의 코드 블록으로 구성되도록 상기 평탄화 함수를 평탄화하는 평탄화부;를 더 포함하며,
상기 분기 함수는 실행시에 분기할 레이블을 동적으로 계산하는,
코드 변환 장치.8. The method of claim 7,
And a flattening unit for flattening the flattening function so that each branching function and each corresponding branching function are constituted by one code block,
The branching function dynamically calculates a label to be branched at the time of execution,
Code conversion device.
상기 평탄화부에서 생성되는 평탄화 함수의 코드는 디폴트 레이블를 포함하고,
상기 디폴트 레이블은 소프트웨어의 변조를 탐지할 수 있도록 구성되는,
코드 변환 장치.
11. The method of claim 10,
Wherein the code of the flattening function generated by the flattening unit includes a default label,
Wherein the default label is configured to detect tampering of the software,
Code conversion device.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140188492A KR101628923B1 (en) | 2014-12-24 | 2014-12-24 | Code transformation method and code transformation apparatus |
PCT/KR2015/009483 WO2016104918A1 (en) | 2014-12-24 | 2015-09-09 | Code conversion method and code conversion device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140188492A KR101628923B1 (en) | 2014-12-24 | 2014-12-24 | Code transformation method and code transformation apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101628923B1 true KR101628923B1 (en) | 2016-06-22 |
Family
ID=56150904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140188492A KR101628923B1 (en) | 2014-12-24 | 2014-12-24 | Code transformation method and code transformation apparatus |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101628923B1 (en) |
WO (1) | WO2016104918A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031930B (en) * | 2019-12-24 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | Source code confusion generation method and device for control flow flattening |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101269089B1 (en) * | 2011-08-19 | 2013-05-29 | 고려대학교 산학협력단 | Software modulation prevention method using own encryption |
KR20130085535A (en) * | 2011-12-16 | 2013-07-30 | 주식회사 케이티 | Apparatus for protecting forgery/alteration of application and verification apparatus |
KR20130116408A (en) * | 2012-03-12 | 2013-10-24 | 삼성전자주식회사 | Method and apparatus for detecting leak of information resources data |
KR101350390B1 (en) * | 2013-08-14 | 2014-01-16 | 숭실대학교산학협력단 | A apparatus for code obfuscation and method thereof |
-
2014
- 2014-12-24 KR KR1020140188492A patent/KR101628923B1/en active IP Right Grant
-
2015
- 2015-09-09 WO PCT/KR2015/009483 patent/WO2016104918A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101269089B1 (en) * | 2011-08-19 | 2013-05-29 | 고려대학교 산학협력단 | Software modulation prevention method using own encryption |
KR20130085535A (en) * | 2011-12-16 | 2013-07-30 | 주식회사 케이티 | Apparatus for protecting forgery/alteration of application and verification apparatus |
KR20130116408A (en) * | 2012-03-12 | 2013-10-24 | 삼성전자주식회사 | Method and apparatus for detecting leak of information resources data |
KR101350390B1 (en) * | 2013-08-14 | 2014-01-16 | 숭실대학교산학협력단 | A apparatus for code obfuscation and method thereof |
Also Published As
Publication number | Publication date |
---|---|
WO2016104918A1 (en) | 2016-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108664773B (en) | Method and device for protecting Java source code | |
EP2962193B1 (en) | Compiler based obfuscation | |
CN102598017B (en) | Improve the system and method for its tamper-proof capabilities of Java bytecode | |
KR101490047B1 (en) | Apparatus for tamper protection of application code based on self modification and method thereof | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
RU2620712C2 (en) | Virtual machine device with driven key obfuscation and method | |
US20150095656A1 (en) | Apparatus for code obfuscation and method thereof | |
KR101687439B1 (en) | A processor-implemented method for ensuring software integrity | |
EP3126973A1 (en) | Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine | |
EP3188063A1 (en) | A build system | |
US10795990B2 (en) | Secure code optimization method and system | |
CN107346401A (en) | Information Guarantee System for safely configuration processor | |
CN105074712A (en) | Code processing device and program | |
US20110271350A1 (en) | method for protecting software | |
CN109885990B (en) | Script management method | |
KR20200136142A (en) | Method of encoding and decoding memory data for software security, readable medium and apparatus for performing the method | |
CN109885991A (en) | Encryption method based on mobile application data fluid, electronic equipment and medium | |
KR101628923B1 (en) | Code transformation method and code transformation apparatus | |
KR20150069844A (en) | Method of Obfuscating Files Based on Advanced RISC Machine Processor | |
CN108021790B (en) | File protection method and device, computing equipment and computer storage medium | |
JP4727366B2 (en) | Information processing apparatus, information processing system, program, and recording medium | |
KR102317471B1 (en) | Electronic apparatus for determining whether program comprises malicious code and method for controlling thereof | |
CN111291333A (en) | Java application program encryption method and device | |
CN116226881A (en) | Source code encryption method based on compiling language | |
EP2947590B1 (en) | Program code obfuscation based upon recently executed program code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant | ||
R401 | Registration of restoration |