KR101885146B1 - Method and apparatus for protecting an application - Google Patents

Method and apparatus for protecting an application Download PDF

Info

Publication number
KR101885146B1
KR101885146B1 KR1020170156035A KR20170156035A KR101885146B1 KR 101885146 B1 KR101885146 B1 KR 101885146B1 KR 1020170156035 A KR1020170156035 A KR 1020170156035A KR 20170156035 A KR20170156035 A KR 20170156035A KR 101885146 B1 KR101885146 B1 KR 101885146B1
Authority
KR
South Korea
Prior art keywords
application
code
mutation
target terminal
server
Prior art date
Application number
KR1020170156035A
Other languages
Korean (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 (유)아홉
Priority to KR1020170156035A priority Critical patent/KR101885146B1/en
Application granted granted Critical
Publication of KR101885146B1 publication Critical patent/KR101885146B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Abstract

The present invention provides an application transition method and apparatus. The method includes the following steps: a server generates a transition code formed by changing some codes constituting an application; the server transmits the transition code to a target terminal; the target terminal receives the transition code; the target terminal replaces the some codes of the application installed in the target terminal with the transition code; and the target terminal executes the application replaced with the transition code. It is difficult to analyze the code for the application.

Description

애플리케이션 보호 장치 및 방법 {METHOD AND APPARATUS FOR PROTECTING AN APPLICATION}≪ Desc / Clms Page number 1 > METHOD AND APPARATUS FOR PROTECTING AN APPLICATION [

본 발명은 해킹 시도로부터 애플리케이션을 보호하는 기술에 관한 것이다. 보다 구체적으로, 본 발명은 애플리케이션의 일부 코드를 지속적으로 변경하여 해킹으로부터 애플리케이션을 보호하기 위한 기술에 관한 것이다.The present invention relates to techniques for protecting applications from hacking attempts. More specifically, the present invention relates to techniques for continuously modifying some code in an application to protect the application from hacking.

스마트폰 등 첨단 기기가 점점 생활에서 중요한 역할을 수행하면서 사용자가 필요한 다양한 개인 정보를 첨단 기기에 저장하게 되었다. 또한, 다수의 기기를 제어하는 서버의 경우에도 다양한 공공 정보를 서버에 저장하게 되었다. 이러한 첨단 기기는 네트워크 상에 연결되어 정보를 주고받는 경우가 많다. 따라서, 스마트폰이 분실되거나 또는 해킹되거나 또는 서버가 해킹되는 경우에는, 치명적인 개인 정보 또는 공공 정보가 외부에 그대로 노출되는 위험성이 증대하고 있다. Advanced devices such as smart phones have played an important role in life, and users have stored various personal information in advanced devices. Also, in case of a server that controls a plurality of devices, various public information is stored in the server. These advanced devices are often connected to the network to exchange information. Therefore, when the smartphone is lost, hacked, or the server is hacked, the risk of exposure of fatal personal information or public information to the outside is increasing.

보안 기술의 발전과 함께 정보를 훔치려는 해킹 기술들 역시 발전하고 있다. 해킹 기술에서 많이 사용되는 방법 중 하나가 역 공학 (Reverse engineering) 이다. Along with the development of security technologies, hacking techniques to steal information are also evolving. Reverse engineering is one of the most used methods in hacking technology.

역 공학(Reverse Engineering) 은 애플리케이션을 개발하는 과정의 반대 과정으로 이해할 수 있다. 일반적으로 애플리케이션의 개발 과정은 소스 코드에서 컴파일(Compile) 및 패키징(Packaging)을 통해 설치파일을 생성하는 과정을 거친다. 위와 반대로, 역 공학은 설치 파일에서부터 패키징, 컴파일, 소스 코드로 진행하는 과정을 거쳐서 소스 코드를 확인하는 과정을 거친다. Reverse engineering can be understood as the reverse of the process of developing an application. Generally, the process of developing an application is through compilation and packaging from the source code to generate the installation files. On the contrary, reverse engineering is the process of checking the source code through installation files, packaging, compiling, and source code.

역 공학은 주로 개발 과정에서의 문제점을 찾거나 소스 코드가 미공개된 경우에 제품의 하자를 보수하기 위한 목적으로 시작된 기술이다. 하지만, 최근에는, 경쟁 제품의 핵심 기술을 도용하거나 아이디어를 차용하기 위한 목적으로 해킹을 위한 수단으로서 내부 시스템의 구조를 파악하기 위한 목적으로 광범위하게 활용되고 있다. Reverse engineering is a technique that is primarily aimed at finding defects in the development process or repairing defects in the product if the source code is undisclosed. However, in recent years, it has been used extensively for the purpose of grasping the structure of internal systems as a means of hacking for the purpose of stealing key technologies of competitive products or borrowing ideas.

역 공학은 리패키징(Repackaging) 기술과 더불어 해커에 의해 악용되기 쉽다. 애플리케이션을 역 공학으로 소스 코드 수준까지 분석한 뒤 중요 코드를 수정하여 다시 컴파일 및 패키징할 수 있다. 이를 통하여 유사 애플리케이션을 만들어 배포하는 경우, 선의의 사용자로부터 개인 정보 및 공공 정보를 탈취하여 원래 애플리케이션이 의도하지 않은 행위를 유발할 수 있다. Reverse engineering is easily exploited by hackers along with repackaging techniques. You can reverse-engineer your application to the source code level and then recompile and package critical code. When creating and distributing similar applications through this, it is possible for the original application to steal personal information and public information from a good user and cause unintended behavior of the original application.

리패키징은 컴파일된 파일을 묶는 방식(패키징)을 일컫는 것으로서, 역 공학에 의해 분해된 코드를 수정 후 다시 패키징하는 하기 때문에 리패키징이라 한다. Repackaging refers to the way in which compiled files are bundled (packaging), which is called repackaging because code decomposed by reverse engineering is modified and repackaged.

해커와 같은 공격자는 애플리케이션의 취약점을 발견하기 위해서 역 공학 기법 및 도구를 이용하여 바이너리 실행파일로부터 소스코드를 취득하여 정적 분석(Static Analysis)을 시도한다. 코드 분석은 시간이 걸리더라도 최종적으로는 취약점을 발견하여 애플리케이션을 원하는 형태로 공격할 수 있다. An attacker such as a hacker attempts to perform a static analysis by obtaining source code from a binary executable file using reverse engineering techniques and tools to detect vulnerabilities in the application. Even if code analysis takes time, it can finally find vulnerabilities and attack the application in the desired form.

따라서, 역 공학 및 리패키징을 기반한 해킹 시도에 대해서 애플리케이션을 보호하기 위한 기술이 필요하다.Therefore, there is a need for techniques to protect applications against hacking attempts based on reverse engineering and repackaging.

본 발명은 애플리케이션의 일부 코드를 변이 코드로 계속적으로 대체하여 애플리케이션에 대한 코드 분석을 어렵게 하는 단말 및 방법을 제공할 수 있다. The present invention can provide a terminal and a method that makes it difficult to analyze code for an application by continuously replacing some code of the application with a mutation code.

또한, 본 발명은 애플리케이션을 관리할 수 있는 애플리케이션 관리 서버를 통하여 애플리케이션 변이 코드를 계속적으로 생성하고 애플리케이션이 설치된 단말을 제어할 수 있는 서버 및 방법을 제공할 수 있다.In addition, the present invention can provide a server and a method capable of continuously generating an application variation code through an application management server that can manage an application and controlling a terminal installed with the application.

본 발명의 일 실시예에 따르면, 애플리케이션 및 상기 애플리케이션이 설치된 타깃 단말에 대한 정보를 저장하는 저장부; 상기 애플리케이션을 구성하는 일부 코드를 변경한 변이 코드를 생성하는 제어부; 및 상기 변이 코드를 상기 타깃 단말에 송신하는 통신부를 포함하는, 애플리케이션 변이 서버가 제공된다.According to an embodiment of the present invention, there is provided a communication system including a storage unit for storing information on an application and a target terminal in which the application is installed; A control unit for generating a variation code in which a part of codes constituting the application are changed; And a communication unit for transmitting the mutation code to the target terminal.

애플리케이션 변이 서버의 상기 제어부는 난독화 방식으로 상기 변이 코드를 생성한다. 애플리케이션 변이 서버의 상기 저장부는 상기 애플리케이션에 대한 원본 애플리케이션 및 상기 변이 코드가 적용된 애플리케이션을 저장한다. 애플리케이션의 상기 제어부는 일정 주기 후에 상기 일부 코드를 재변경한 변이 코드를 생성한다. 상기 변이 코드는 상기 타깃 단말에 설치된 애플리케이션의 일부 코드를 대체하며, 상기 애플리케이션의 원본 애플리케이션과 상기 변이 코드가 적용된 애플리케이션의 기능 동작은 동일한 것을 특징으로 한다. 상기 제어부는 상기 통신부로 하여금 상기 변이 코드와 함께 토큰 정보를 송신하며, 상기 변이 코드는 상기 토큰 정보가 정확한 경우에 한하여 상기 일부 코드를 대체한다. The control unit of the application server generates the mutation code in an obfuscation manner. The storage unit of the application variation server stores a source application for the application and an application to which the variation code is applied. The control section of the application generates a mutation code that has been changed again after a certain period of time. Wherein the mutation code replaces a part of the code of the application installed in the target terminal, and the function operation of the application of the application and the application to which the mutation code is applied are identical. The control unit transmits the token information together with the mutation code to the communication unit, and the mutation code replaces the partial code only when the token information is correct.

본 발명의 다른 실시예에 따르면, 애플리케이션을 저장하는 저장부; 상기 애플리케이션에 대한 변이 코드를 애플리케이션 변이 서버로부터 수신하는 통신부; 및 상기 애플리케이션의 일부 코드를 상기 변이 코드로 대체하고, 상기 대체된 애플리케이션을 실행하는 제어부를 포함하는, 애플리케이션 실행 단말을 제공한다.According to another embodiment of the present invention, there is provided an information processing apparatus comprising: a storage for storing an application; A communication unit for receiving a mutation code for the application from an application server; And a control unit that replaces some code of the application with the mutation code and executes the replaced application.

애플리케이션 실행 단말의 상기 저장부는 상기 변이 코드가 적용된 애플리케이션을 저장한다. 애플리케이션 실행 단말의 상기 제어부는 상기 애플리케이션의 실행 가능 상태 여부를 확인하며, 실행 가능 상태 확인 관련 정보를 상기 통신부를 통하여 상기 애플리케이션 변이 서버에 송신한다. 애플리케이션 실행 단말의 상기 제어부는 상기 대체된 애플리케이션을 실행하여 오류가 발생한 경우, 상기 저장부에 저장된 직전 애플리케이션으로 복구한다. The storage unit of the application execution terminal stores the application to which the mutation code is applied. The control unit of the application executing terminal checks whether or not the application is executable, and transmits the executable state checking related information to the application server via the communication unit. The control unit of the application execution terminal executes the replaced application to recover the previous application stored in the storage unit when an error occurs.

본 발명의 또 다른 실시예에 따르면, 서버가 애플리케이션을 구성하는 일부 코드를 변경한 변이 코드를 생성하는 단계; 상기 서버가 상기 변이 코드를 타깃 단말에 송신하는 단계; 상기 타깃 단말이 상기 변이 코드를 수신하는 단계; 상기 타깃 단말이 상기 타깃 단말에 설치된 애플리케이션의 상기 일부 코드를 상기 변이 코드로 대체하는 단계; 및 상기 타깃 단말이 상기 변이 코드로 대체된 상기 애플리케이션을 실행하는 단계를 포함하는 애플리케이션 변이 방법이 제공된다..According to another embodiment of the present invention, there is provided a method of generating a code, the method comprising: generating a variation code in which a server changes some codes constituting an application; The server transmitting the mutation code to a target terminal; Receiving the mutation code from the target terminal; Replacing the partial code of the application installed in the target terminal by the target terminal with the variation code; And executing the application in which the target terminal is replaced with the mutation code.

상기 서버는, 일정 주기가 도달하면, 상기 변이 코드를 생성한다. 상기 변이 코드는 랜덤화 방식으로 생성된다. The server generates the mutation code when a predetermined period of time has elapsed. The mutation code is generated in a randomized manner.

애플리케이션 변이 방법은 상기 서버가 상기 변이 코드가 적용된 애플리케이션을 저장하는 단계를 더 포함하며, 상기 서버는 원본 애플리케이션 및 변이 코드가 적용된 애플리케이션과 관련된 이력 정보를 저장한다. The application mutation method further includes the step of the server storing the application to which the mutation code is applied, and the server stores history information related to the original application and the application to which the mutation code is applied.

또한, 애플리케이션 변이 방법은 상기 타깃 단말은 상기 변이 코드가 적용된 애플리케이션을 실행하는 단계; 및 상기 애플리케이션 실행에 오류가 있는 경우, 상기 애플리케이션을 원복하는 단계를 더 포함한다. The application mutation method may further comprise: the target terminal executing an application to which the mutation code is applied; And if the application has an error in execution, the step of rewriting the application.

본 발명의 또 다른 실시예에 따르면, 일정 주기의 도달 여부를 판단하는 단계'According to another embodiment of the present invention,

상기 주기가 도달한 경우 애플리케이션에 대한 일부 코드를 변경하는 변이 코드를 생성하는 단계; 상기 변이 코드 및 상기 변이 코드가 적용된 애플리케이션을 저장하는 단계; 상기 변이 코드를 타깃 단말에 전송하는 단계; 및 상기 타깃 단말로부터 실행 성공 여부에 대한 정보를 수신하는 단계; 및 상기 변이 코드에 대한 실행 성공 이력을 저장하는 단계를 포함하는, 애플리케이션 변이 방법이 제공된다.Generating a mutation code that alters some of the code for the application when the period is reached; Storing the mutation code and an application to which the mutation code is applied; Transmitting the mutation code to a target terminal; And receiving information on the success or failure of execution from the target terminal; And storing an execution success history for the mutation code.

또한, 애플리케이션 변이 방법은 상기 변이 코드 생성 단계 이전에 상기 타깃 단말에 변이 가능 상태 확인 요청을 송신하는 단계; 상기 변이 가능 상태 확인에 대한 응답을 수신하는 단계를 더 포함한다. The application mutation method may further include: transmitting a mutable state confirmation request to the target terminal before the mutation code generation step; And receiving a response to the mutable state confirmation.

또한, 애플리케이션 변이 방법은 애플리케이션에 대한 변이 코드를 상기 서버로부터 수신하는 단계; 기 설치된 애플리케이션의 일부 코드를 상기 변이 코드로 대체하는 단계; 및 상기 대체된 애플리케이션을 실행하는 단계를 더 포함한다. The method also includes receiving a variation code for the application from the server; Replacing some code of the previously installed application with the mutation code; And executing the replaced application.

또한, 애플리케이션 변이 방법은 상기 실행 단계 이후, 상기 애플리케이션에 오류가 있는 경우 상기 변이 코드 대체 이전의 애플리케이션으로 복구하는 단계를 더 포함한다. 상기 애플리케이션의 원본 애플리케이션과 상기 변이 코드가 적용된 애플리케이션의 기능 동작은 동일한 것을 특징으로 한다. Further, the application mutation method further includes restoring, after the execution step, the application before the mutation code replacement if there is an error in the application. And the function operation of the original application of the application and the application to which the mutation code is applied are the same.

본 발명의 적어도 하나의 실시 형태에 따르면, 애플리케이션의 코드가 주기적 또는 비주기적으로 지속적으로 변경하기 때문에 애플리케이션에 대한 코드 분석을 매우 어렵게 하는 효과를 제공할 수 있다.According to at least one embodiment of the present invention, it is possible to provide an effect that makes code analysis for an application very difficult, because the code of the application is constantly or non-periodically changing.

또한, 본 발명은 애플리케이션의 원본 및 변이 코드를 외부 서버에 분리 보관하여 원본 코드를 추적하기 어렵게 하는 효과를 제공할 수 있다.In addition, the present invention can provide an effect of making it difficult to track the original code by separately storing the original and the variation code of the application in an external server.

도 1은 애플리케이션 변이 서버와 타깃 단말을 도시한 도면.
도 2는 애플리케이션 설치 동작의 흐름을 도시한 도면.
도 3은 애플리케이션 변이 서버와 타깃 단말간 인증 동작의 흐름을 도시한 도면.
도 4는 애플리케이션 변이 서버와 타깃 단말간 변이 코드 적용 동작의 일 실시예를 도시한 도면.
도 5는 애플리케이션 변이 서버와 타깃 단말간 변이 코드 적용 동작의 다른 실시예를 도시한 도면.
도 6은 애플리케이션 변이 서버와 타깃 단말간 변이 코드 적용 동작의 또 다른 실시예를 도시한 도면.
도 7은 애플리케이션에 대한 변이 코드 적용의 예를 도시한 도면.
도 8은 소스 코드 난독화의 일 예를 도시한 도면.
Brief Description of the Drawings Fig. 1 shows an application server and a target terminal. Fig.
2 is a view showing a flow of an application installation operation;
3 is a diagram showing a flow of an authentication operation between an application server and a target terminal.
4 illustrates an embodiment of an application of a mutation code between an application server and a target terminal.
5 illustrates another embodiment of an application of a mutation code between an application server and a target terminal.
6 is a diagram showing another embodiment of the application of the mutation code between the application server and the target terminal.
7 illustrates an example of application of a variation code to an application;
8 is a diagram showing an example of source code obfuscation.

이하, 본 발명과 관련된 이동 단말기에 대하여 도면을 참조하여 보다 상세하게 설명한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. Hereinafter, a mobile terminal related to the present invention will be described in detail with reference to the drawings. The suffix "module" and " part "for the components used in the following description are given or mixed in consideration of ease of specification, and do not have their own meaning or role.

이하의 명세서에서 설명되는 용어인 "애플리케이션" 은 특정한 업무를 수행하기 위해서 고안된 일련의 컴퓨터 프로그램 집합을 의미하며, 특정한 업무에 대해서는 제한은 없다. 예를 들어, 애플리케이션은 스마트폰에 설치된 다양한 프로그램일 수도 있고, 스마트폰 또는 서버를 운용하는 OS일 수도 있다. 스마트 카 OS등도 애플리케이션이 될 수 있다.The term "application" as used in the following description refers to a set of computer programs designed to perform a specific task, and there is no restriction on a specific task. For example, an application may be a variety of programs installed on a smart phone, or an OS operating a smart phone or a server. The smart car OS can also be an application.

본 명세서에서 설명되는 타깃 단말은 서버, 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 네비게이션 등이 포함될 수 있다. 그러나, 본 명세서에 기재된 실시형태에 따른 구성은 이동 단말기에만 적용 가능한 경우를 제외하면, 디지털 TV, 데스크탑 컴퓨터 등과 같은 고정 단말기에도 적용될 수도 있음을 본 기술분야의 당업자라면 쉽게 알 수 있을 것이다.The target terminal described in this specification may include a server, a mobile phone, a smart phone, a laptop computer, a digital broadcasting terminal, a PDA (personal digital assistant), a portable multimedia player (PMP) . However, it will be readily apparent to those skilled in the art that the configuration according to the embodiments described herein may be applied to a fixed terminal such as a digital TV, a desktop computer, or the like, except when applicable only to a mobile terminal.

도 1은 애플리케이션 변이 서버와 타깃 단말을 도시한 도면이다.1 is a diagram showing an application server and a target terminal.

타깃 단말 (100) 은 애플리케이션을 실행하는 대상 단말기이다. 타깃 단말 (100) 은 고정형 또는 이동형 단말기일 수 있다. 타깃 단말 (100) 은 통신부 (102), 제어부 (104), 및 저장부 (106) 을 포함할 수 있다. 도면에는 도시되지 않으나, 필요에 따라서 사용자 입력부 및 출력부를 포함할 수도 있다. The target terminal 100 is a target terminal for executing an application. The target terminal 100 may be a fixed or mobile terminal. The target terminal 100 may include a communication unit 102, a control unit 104, and a storage unit 106. Although not shown in the figure, it may include a user input portion and an output portion as necessary.

애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 설치된 애플리케이션을 관리하는 서버이다. 구체적으로, 애플리케이션의 일부 코드를 지속적으로 변이 코드로 대체하도록 관리하는 서버이다. 애플리케이션 변이 서버 (200) 는 통신부 (202), 제어부 (204) 및 저장부 (206) 를 포함할 수도 있다. The application variation server 200 is a server that manages an application installed in the target terminal 100. Specifically, it is a server that manages to replace some code of an application with a mutation code continuously. The application variation server 200 may include a communication unit 202, a control unit 204, and a storage unit 206. [

도 1에 도시된 구성요소들이 필수적인 것은 아니어서, 그보다 많은 구성요소들을 갖거나 그보다 적은 구성요소들을 갖는 타깃 단말 또는 애플리케이션 변이 서버로 구현될 수도 있다.The components shown in FIG. 1 are not essential, but may be implemented as a target terminal or application server having more or fewer components.

통신부 (102) 는 타깃 단말 (100) 과 외부 네트워크 사이 또는 타깃 단말 (100) 과 애플리케이션 변이 서버 (200) 가 위치한 네트워크 사이의 무선 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 타깃 단말의 통신부 (102) 는 네트워크를 통하여 애플리케이션 저장 서버등으로부터 애플리케이션을 다운로드받을 수도 있다. 또한, 통신부 (102) 는 애플리케이션 변이 서버 (200) 로부터의 변이 코드등 다양한 정보를 수신할 수 있다. 통신부 (102) 는 제어부 (104) 와 애플리케이션 변이 서버 (200) 사이의 명령, 정보 및 상태 프로토콜을 정의하여 통신을 처리할 수 있다. The communication unit 102 may include one or more modules for enabling wireless communication between the target terminal 100 and the external network or between the target terminal 100 and the network in which the application server 200 is located. The communication unit 102 of the target terminal may download an application from an application storage server or the like through a network. In addition, the communication unit 102 can receive various information such as a variation code from the application server 200. [ The communication unit 102 can process the communication by defining commands, information, and a state protocol between the control unit 104 and the application transition server 200.

제어부(controller, 104)는 타깃 단말 (100) 의 전반적인 동작을 제어한다. 예를 들어, 제어부 (104) 는 제어부 자체의 기능 뿐 아니라, 통신부 (102) 및 저장부 (106) 의 다양한 기능을 제어할 수도 있다. 제어부 (104) 는 타깃 단말 (100) 에 설치된 애플리케이션을 수행할 수 있다.The controller 104 controls the overall operation of the target terminal 100. For example, the control unit 104 may control various functions of the communication unit 102 and the storage unit 106, as well as the functions of the control unit itself. The control unit 104 may execute an application installed in the target terminal 100. [

제어부 (104) 는 선택적으로 에이전트 프로그램 (105) 을 포함할 수도 있다. 본 발명에서 애플리케이션 변이 코드 대체등의 기능은 에이전트 프로그램 (105) 를 통하여 수행할 수 있다. 에이전트 프로그램 (105) 은 다수의 애플리케이션의 코드 대체와 관련된 기능을 수행할 수도 있다. 애플리케이션 변이 서버 (200) 는 에이전트 프로그램 (105) 을 통하여 타깃 단말 (100) 의 애플리케이션 코드를 제어할 수 있다. 에이전트 프로그램 (105) 는 애플리케이션의 코드 및 컴포넌트(Component, 또는 모듈) 를 전체 또는 일부를 변경한다. 에이전트 프로그램은 저장부 (106) 에 저장 중인 모듈(실행파일, 라이브러리파일)을 정해진 스케쥴에 따라 애플리케이션의 코드 또는 컴포넌트를 대체하여 변경시킨다. The control unit 104 may optionally include an agent program 105. In the present invention, functions such as application mutation code replacement can be performed through the agent program 105. The agent program 105 may perform functions associated with code substitution of multiple applications. The application mutation server 200 can control the application code of the target terminal 100 through the agent program 105. [ The agent program 105 alters all or part of the code and components (components, or modules) of the application. The agent program replaces the module (executable file, library file) stored in the storage unit 106 with the code or component of the application according to a predetermined schedule.

동적으로 애플리케이션의 코드 또는 모듈을 변경하고, 애플리케이션을 재구동시켜 실행 프로세스 교체가 일어나게 되는데, 애플리케이션에 따라서 실행 중단 후 재구동 과정을 거치는 경우가 발생할 수 있거나 실행이 중단되지 아니하고 일부 구성 모듈만 재 구동이 가능한 경우가 있을 수도 있다. 이때 에이전트 프로그램 (105) 은 백그라운드 서비스로 구동되는 것이 바람직하다. 사용자에게는 보이지 아니하며, 애플리케이션 구동에 자연스럽게 변형을 발생시키는 것이 서비스 관점에서 이상적이기 때문이다. The application code or module is changed dynamically and the application is restarted to cause the replacement of the execution process. Depending on the application, there may be a case where the application is restarted after the execution is stopped or the execution is not interrupted, There may be cases where this is possible. At this time, the agent program 105 is preferably operated as a background service. This is because it is not visible to the user, and it is ideal from the service point of view to naturally cause the transformation to run in the application.

에이전트 프로그램이 서버 (200) 의 코드관리부 (205) 가 관리하는 모듈 파일을 처리함에 있어서 제안하고자 하는 방안은 기능별 실행 분리 구조로 구현하는 것이 실행 독립성을 보장하므로 바람직하다. It is preferable that the agent program is implemented in a function-specific execution separation structure in processing a module file managed by the code management unit 205 of the server 200, because execution independence is ensured.

저장부 (106) 는 제어부(104)의 처리 및 제어를 위한 프로그램이 저장될 수도 있고, 입/출력되는 데이터들(예를 들어, 애플리케이션 코드 변이를 위한 변이 코드 등)의 저장을 위한 기능을 수행할 수도 있다.The storage unit 106 stores a program for processing and controlling the control unit 104 and performs a function for storing input / output data (for example, a variation code for application code variation) You may.

한편, 애플리케이션 변이 서버 (200) 역시 타깃 단말 (100) 과 유사한 구조를 가진다. 즉, 애플리케이션 변이 서버 (200) 는 통신부 (202), 제어부 (204) 및 저장부 (206) 을 가진다. 하지만, 타깃 단말 (100) 과 변이 서버 (200) 의 기능은 일부 상이하다.On the other hand, the application server 200 also has a structure similar to that of the target terminal 100. That is, the application server 200 has a communication unit 202, a control unit 204, and a storage unit 206. However, the functions of the target terminal 100 and the variation server 200 are partially different.

애플리케이션 변이 서버 (200) 의 통신부 (202) 는 타깃 단말 (100) 과 다양한 정보를 송수신한다. 예를 들어, 통신부 (202) 는 애플리케이션 변이 코드, 애플리케이션 인증 코드등을 타깃 단말 (100) 에 송신하며, 타깃 단말 (100) 로부터 변이 가능 확인 신호등을 수신할 수 있다.The communication unit 202 of the application server 200 transmits and receives various information to and from the target terminal 100. For example, the communication unit 202 may transmit an application mutation code, an application authentication code, and the like to the target terminal 100, and may receive the mutable confirmation signal from the target terminal 100. [

제어부 (204) 는 애플리케이션 변이 서버 (200) 의 전반적인 동작을 제어한다. 애플리케이션 변이 서버 (200) 의 변이 코드 생성등 다양한 동작은 제어부 (204) 에 의해서 제어될 수 있다. 예를 들어, 제어부 (204) 는 사전 결정된 주기가 도달한 경우 또는 특정 이벤트 발생이 확인된 경우 애플리케이션에 대한 변이 코드를 생성할 수 있다. The control unit 204 controls the overall operation of the application transition server 200. [ Various operations such as generation of a mutation code of the application server 200 can be controlled by the control unit 204. [ For example, the control unit 204 may generate a mutation code for the application when a predetermined period has been reached, or when a specific event occurrence has been acknowledged.

이러한 변이 코드와 관련된 기능은 제어부 (204) 의 코드 관리부 (205) 에 수행될 수도 있다. 코드 관리부 (205) 는 다수의 보호 대상 애플리케이션을 관리할 수 있으며, 애플리케이션을 저장부 (206) 에 등록, 수정 및, 삭제하는 관리하는 것이 바람직하다. 한편, 관리 대상 애플리케이션에 접근할 수 있는 사용자 계정의 등록, 수정, 삭제를 관리하는 보안 기능도 필요에 따라 구현될 수 있다. The function related to the variation code may be performed in the code management unit 205 of the control unit 204. [ The code management unit 205 can manage a plurality of applications to be protected, and it is preferable that the application is managed to register, modify, and delete the applications in the storage unit 206. On the other hand, a security function for managing registration, modification, and deletion of a user account that can access the management target application can be implemented as needed.

또한 인증 처리부, 접근 제어부도 구현되어야 보다 안전하게 코드 접근 대상을 차별적으로 보호할 수 있게 될 것이다. In addition, the authentication processing unit and the access control unit must be implemented to more securely protect the code access target.

시스템 관리 측면에서 관리 프로세스의 설정, 보안 정책 설정, 코드 랜덤화 (난독화)를 실시하는 스케줄 관리 등의 기능도 구현되어야 할 것이다. In terms of system management, functions such as management process setting, security policy setting, code randomization (obfuscation) and schedule management should be implemented.

스케줄에 따라 소프트웨어 자가 변이 시점이 되면, 에이전트에 명령하여 코드관리부의 저장소(Repository)에서 모듈 파일을 전송하여 파일 처리 프로세스를 거쳐 어플리케이션 변이를 처리한다. When the software becomes a self-mutation point according to the schedule, it commands the agent to transfer the module file from the repository of the code management unit, and processes the application variation through the file processing process.

이 때 파일 처리 프로세스에서 무결성 검증(Integrity Check)를 수행하여 네트워크 전송 간 위/변조 여부를 확인하는 과정을 구현하는 것이 바람직하다.At this time, it is desirable to implement a process of performing integrity check (integrity check) in the file processing process to check whether the network transmission is up / modulated.

코드 관리부 (205) 를 통하여 애플리케이션에 대한 관리를 수행할 수 있다. 즉, 코드 관리부를 통하여 보호대상 애플리케이션의 주요 코드를 지정하고, 난독화 기법을 적용할 영역을 설정하고 관리할 수 있다. And can manage the application through the code management unit 205. [ That is, the main code of the protection target application can be designated through the code management unit, and the area to which the obfuscation technique is applied can be set and managed.

저장부 (206) 는 제어부 (204) 의 제어에 의해서 애플리케이션에 대한 정보를 저장한다. 예를 들어, 저장부 (206) 는 애플리케이션 원본 코드를 저장하고 있으며, 다양한 변이 코드에 대한 정보, 변이 코드 이력 정보, 변이 코드가 적용된 기존 애플리케이션들 코드등을 저장할 수 있다. The storage unit 206 stores information about the application under the control of the control unit 204. [ For example, the storage unit 206 stores application source codes, and can store information on various mutation codes, mutation code history information, existing applications codes to which mutation codes are applied, and the like.

여기에 설명되는 다양한 실시형태는 예를 들어, 소프트웨어, 하드웨어 또는 이들의 조합된 것을 이용하여 컴퓨터 또는 이와 유사한 장치로 읽을 수 있는 기록매체 내에서 구현될 수 있다.The various embodiments described herein may be embodied in a recording medium readable by a computer or similar device using, for example, software, hardware, or a combination thereof.

하드웨어적인 구현에 의하면, 여기에 설명되는 실시형태는 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays, 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 전기적인 유닛 중 적어도 하나를 이용하여 구현될 수 있다. 일부의 경우에 본 명세서에서 설명되는 실시형태들이 제어부 자체로 구현될 수 있다.In accordance with a hardware implementation, the embodiments described herein may be implemented as application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays May be implemented using at least one of a processor, controllers, micro-controllers, microprocessors, and other electronic units for performing other functions. In some cases, The embodiments to be described can be implemented by the control unit itself.

소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시형태들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 상기 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다. 적절한 프로그램 언어로 쓰여진 소프트웨어 어플리케이션으로 소프트웨어 코드가 구현될 수 있다. 상기 소프트웨어 코드는 메모리에 저장되고, 제어부에 의해 실행될 수 있다.According to a software implementation, embodiments such as the procedures and functions described herein may be implemented in separate software modules. Each of the software modules may perform one or more of the functions and operations described herein. Software code can be implemented in a software application written in a suitable programming language. The software code is stored in a memory and can be executed by the control unit.

도 2는 애플리케이션 설치 동작의 흐름을 도시한 도면이다. 구체적으로, 타깃 단말 (100) 에 애플리케이션이 설치되는 과정 및 애플리케이션 변이 서버 (200) 에 애플리케이션 관리 정보가 등록/저장되는 과정을 설명한다. 2 is a diagram showing the flow of the application installation operation. Specifically, a process in which an application is installed in the target terminal 100 and a process in which application management information is registered / stored in the application server 200 will be described.

타깃 단말 (100) 은 먼저 애플리케이션 저장 서버 (300) 로부터 애플리케이션을 다운로드/수신한다 (S210). 여기에서 애플리케이션 저장 서버 (300) 은 제 3의 서버일 수 있고, 또는 애플리케이션 변이 서버 (200) 과 하나의 기기로 구현될 수도 있다. 또한, 선택적으로 타깃 단말 (100) 의 사용자가 수동으로 별도의 기기를 이용하여 애플리케이션을 직접 설치할 수도 있다. 이 경우, 애플리케이션에 대한 여러 정보는 애플리케이션 변이 서버 (200) 에 직접 수동으로 등록/저장할 필요가 있다.The target terminal 100 firstly downloads / receives the application from the application storage server 300 (S210). Here, the application storage server 300 may be a third server, or may be implemented as one device with the application transition server 200. [ Alternatively, a user of the target terminal 100 may manually install an application manually using a separate device. In this case, various pieces of information about the application need to be manually registered / stored in the application server 200 directly.

애플리케이션 변이 서버 (200) 는 애플리케이션 저장 서버 (300) 로부터 애플리케이션 관리 정보를 수신한다 (S220). 애플리케이션 관리 정보는 애플리케이션 인증 정보, 애플리케이션 원본 코드, 타깃 단말 (100) 에 대한 정보, 애플리케이션의 등록자, 빌드 번호, 시간, 보호대상 소스코드, 보호대상 바이너리코드등을 수신할 수 있다. 애플리케이션 인증 정보는 애플리케이션 변이 서버 (200) 이 타깃 단말 (100) 의 애플리케이션에 대해서 액세스하기 위해서 필요한 정보일 수도 있다. 애플리케이션 원본 코드는 애플리케이션이 변이 코드가 적용되지 않는 애플리케이션 원본 상태의 정보이다. 변이 코드가 적용되지 않은 처음 상태에서는 타깃 단말 (100) 과 애플리케이션 변이 서버 (200) 이 저장한 애플리케이션 원본 코드는 일치한다. The application variation server 200 receives application management information from the application storage server 300 (S220). The application management information can receive the application authentication information, the application source code, the information about the target terminal 100, the registrant of the application, the build number, the time, the source code to be protected, and the binary code to be protected. The application authentication information may be information necessary for the application server 200 to access the application of the target terminal 100. [ The application source code is information of the application source state in which the application does not apply the mutation code. In the initial state in which the mutation code is not applied, the application source code stored by the target mutual terminal 100 and the application server 200 coincides with each other.

애플리케이션 변이 서버 (200) 는 애플리케이션 관리 정보를 저장한다 (S240). 관리할 대상인 애플리케이션이 하나 이상이거나, 관리할 타깃 단말 (100) 이 하나 이상인 경우, 별도로 관리할 수도 있고, 그렇지 않을 수도 있다. 애플리케이션 변이 서버 (200) 에 저장되는 애플리케이션은 타깃 단말 처럼 반드시 실행 가능한 상태로 저장될 필요는 없다. 애플리케이션의 코드 자체로 저장될 수도 있다. The application variation server 200 stores application management information (S240). When there are one or more applications to be managed or there are one or more target terminals 100 to be managed, they may be separately managed or not. The application stored in the application server 200 need not necessarily be stored in an executable state as in the target terminal. It may also be stored as the code of the application itself.

선택적 과정으로, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 애플리케이션 에이전트 프로그램을 제공할 수 있다 (S250). 이 과정의 선행 동작으로 애플리케이션 변이 서버 (200) 와 타깃 단말 (100) 간에는 통신 세션이 형성되어 있는 상태이다. 이와 달리, 타깃 단말 (100) 에 에이전트 프로그램을 직접 설치할 수도 있다. 에이전트 프로그램은 타깃 단말 (100) 의 제어부 (104) 또는 저장부 (106) 에 설치되게 되며, 제어부 (104) 의 제어에 의해서 구동된다. 에이전트 프로그램 (105) 은 애플리케이션 변이 서버 (200) 로부터의 변이 코드를 적용하는 명령 또는 관련 정보를 수신한 경우, 변이 코드를 실제 적용하는 기능을 수행한다. 즉, 애플리케이션 변이 서버 (200) 로부터의 변이 코드와 관련된 외부 제어를 타깃 단말 (100) 에서 수행하는 역할을 한다.As an optional process, the application transition server 200 may provide an application agent program to the target terminal 100 (S250). A communication session is established between the application server 200 and the target terminal 100 in the preceding operation. Alternatively, an agent program may be directly installed in the target terminal 100. [ The agent program is installed in the control unit 104 or the storage unit 106 of the target terminal 100 and is driven under the control of the control unit 104. [ The agent program 105 performs a function of actually applying the mutation code when receiving the instruction or the related information for applying the mutation code from the application mutation server 200. [ That is, the target terminal 100 plays a role of performing external control related to the mutated code from the application mutation server 200.

에이전트 프로그램 (105) 이 타깃 단말 (100) 에 설치된 경우 (S260), 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 의 제어에 따라서 애플리케이션을 변이시킬 수 있는 상태로 준비된다.When the agent program 105 is installed in the target terminal 100 (S260), the target terminal 100 is prepared to be able to mutate the application according to the control of the application server 200. [

여기에서, 애플리케이션에 대해서는 특별한 한정은 없으며, 애플리케이션 변이 서버 (200) 가 애플리케이션에 대한 코드 정보만 정확하게 인지할 수 있으면 된다. 또한 애플리케이션을 수행하는 주체와 애플리케이션을 관리하는 주체 (변이 코드를 생성하는 주체)는 반드시 같을 필요없다.Here, there is no particular limitation on the application, and it is only required that the application server 200 knows exactly the code information for the application. In addition, the subject who executes the application and the subject who manages the application (the subject generating the mutation code) do not necessarily have to be the same.

도 3은 애플리케이션 변이 서버와 타깃 단말간 인증 동작의 흐름을 도시한 도면이다. 구체적으로, 애플리케이션 변이 코드를 적용하기 전에 변이 서버 (200) 과 타깃 단말 (100) 간의 상호 인증을 위한 동작이다.3 is a diagram showing a flow of an authentication operation between the application server and the target terminal. Specifically, it is an operation for mutual authentication between the mutation server 200 and the target terminal 100 before applying the application mutation code.

애플리케이션 변이 서버 (200) 와 타깃 단말 (100) 간에 통신 세션이 계속 연결될 수도 있으나, 이 경우, 전력 소비 및 보안적 측면에서 바람직하지 않다. 따라서, 변이 코드를 적용할 시점에만 통신 세션이 형성되는 것을 이하에서 설명한다. A communication session may be continuously connected between the application transition server 200 and the target terminal 100, but this case is undesirable in terms of power consumption and security. Therefore, it will be described below that a communication session is formed only at the time of applying the mutation code.

타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 통신 세션 개시 요청을 송신한다 (S310). 통신 세션 개시 요청과 함께 타깃 단말에 대한 정보 및 애플리케이션 인증 코드등을 송신한다.The target terminal 100 transmits a communication session start request to the application transition server 200 (S310). And sends the information about the target terminal and the application authentication code together with the communication session start request.

애플리케이션 인증 코드는 몇 가지 데이터를 조합하여 만든 데이터 값 (예를 들어 랜덤 16자리 값) 이 될 수 있다. The application authorization code may be a data value (e.g., a random 16-digit value) created by combining some data.

애플리케이션 변이 서버 (200) 는 통신 세션 개시 요청을 수신한 경우, 기존에 저장된 애플리케이션 인증 코드와 송신된 인증 코드를 비교한다 (S320). 인증되지 않은 경우에는 통신 세션은 형성되지 않는다. 인증 코드가 상호 일치한 경우 통신 세션을 개시한다 (S330). 통신 세션이 개시된 경우, 애플리케이션 변이 서버 (200) 와 타깃 단말 (100) 간 통신이 가능한 상태가 된다.When the application transition server 200 receives the communication session start request, it compares the previously stored application authentication code with the transmitted authentication code (S320). If not authenticated, no communication session is established. When the authentication codes match each other, a communication session is started (S330). When the communication session is started, communication between the application server 200 and the target terminal 100 becomes possible.

애플리케이션 변이 서버 (200) 는 임시 토큰을 생성한다 (S340). 임시 토큰은 애플리케이션 변이 서버가 제공하는 정보에 대해서 타깃 단말 (100) 이 인증하기 위한 정보이다. 임시 토큰을 생성하는 방식은 다양하게 존재할 수 있다. 예를 들어, OTP (One time password) 방식을 이용할 수 있다. 이때 임시 토큰은 다양한 방식으로 암호화될 수 있으며, 이때 암호화 방식은 타깃 단말 (100) 과 사전에 합의될 수 있다.The application variation server 200 generates a temporary token (S340). The temporary token is information for the target terminal 100 to authenticate information provided by the application server. There are various ways to generate temporary tokens. For example, an OTP (One Time Password) method can be used. At this time, the temporary token can be encrypted in various ways, and the encryption method can be agreed with the target terminal 100 in advance.

애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 임시 토큰을 제공한다 (S350). 이때, 임시 토큰은 타깃 단말 (100) 과 사전 공유된 암호화 방식으로 암호화되는 것이 바람직하다. 토큰이 암호화된 경우, 타깃 단말 (100) 은 임시 토큰을 복호화한다. The application transition server 200 provides a temporary token to the target terminal 100 (S350). At this time, it is preferable that the temporary token is encrypted with a cipher system pre-shared with the target terminal 100. If the token is encrypted, the target terminal 100 decrypts the temporary token.

타깃 단말 (100) 은 임시 토큰을 저장한다 (S370). 이때 저장되는 임시 토큰은 이후 사용될 변이 코드와 관련된 임시 토큰과의 비교를 위해서 사용된다. The target terminal 100 stores the temporary token (S370). The temporary token stored at this time is used for comparison with the temporary token associated with the mutation code to be used later.

애플리케이션 변이 서버 (200) 는 코드 관리부 (205) 의 판단에 따라서 변이 코드를 포함한 송신 정보를 생성한다 (S360). 코드 관리부 (205) 는 일정 주기 (예를 들어, 24시간) 가 도달한 경우, 변이 코드를 생성하는 것이 바람직하다. 하지만, 특정 이벤트가 발생한 것으로 알려졌을 경우 (예를 들어, 해킹 시도) 변이 코드를 생성할 수도 있다.The application variation server 200 generates transmission information including the variation code according to the determination of the code management unit 205 (S360). The code management unit 205 preferably generates a variation code when a predetermined period (for example, 24 hours) has been reached. However, if a particular event is known to have occurred (for example, a hacking attempt), a mutation code may be generated.

애플리케이션 변이 서버 (200) 는 생성된 송신 정보에 임시 토큰을 삽입한다 (S365). 이때 임시 토큰은 상기 설명한 바와 같이 암호화되는 것이 바람직하다.The application server 200 inserts a temporary token into the generated transmission information (S365). At this time, the temporary token is preferably encrypted as described above.

애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 송신 정보를 제공한다 (S375).The application variation server 200 provides transmission information to the target terminal 100 (S375).

타깃 단말 (100) 은 송신 정보로부터 임시 토큰을 추출하고 (S380), 임시 토큰이 암호하된 경우에 복호화한다. The target terminal 100 extracts a temporary token from the transmission information (S380), and decrypts the temporary token when the temporary token is not encrypted.

타깃 단말 (100) 은 추출한 임시 토큰과 저장한 임시 토큰의 일치 여부를 확인하고 (S385), 불일치하는 경우 종료하며, 송신 정보를 삭제한다.The target terminal 100 checks whether or not the extracted temporary token matches the stored temporary token (S385). If the extracted temporary token is inconsistent, the target terminal 100 ends the transmission and deletes the transmission information.

일치하는 경우, 송신 정보를 확인하며, 변이 코드를 확인한다 (S390). 변이 코드를 확인한 경우에는 변이 코드와 관련된 후속 동작이 이어진다.If they match, the transmission information is confirmed and the mutation code is confirmed (S390). If a mutation code is identified, subsequent operations associated with the mutation code are followed.

도 4는 애플리케이션 변이 서버와 타깃 단말간 변이 코드 적용 동작의 일 실시예를 도시한 도면이다. 구체적으로는, 애플리케이션 변이 서버(200) 가 변이 코드를 생성하고, 타깃 단말 (100) 이 변이 코드를 적용하는 과정을 설명한다.4 is a diagram showing an embodiment of an application of a mutation code between an application server and a target terminal. Specifically, a process in which the application server 200 generates the client code and the target terminal 100 applies the client code will be described.

타깃 단말 (100) 과 애플리케이션 변이 서버 (200) 는 통신 세션이 개시된 상태를 전제로 한다.The target terminal 100 and the application transition server 200 assume a state in which a communication session is started.

애플리케이션 변이 서버 (200) 의 제어부 (204) 가 애플리케이션 변이 주기인지를 확인한다 (S402). 변이 주기는 사용자가 다양하게 설정할 수 있으며, 예를 들어, 24시간으로 설정할 수 있다. It is confirmed whether the control unit 204 of the application variation server 200 is an application variation cycle (S402). The variation period can be set by the user in various ways. For example, the variation period can be set to 24 hours.

변이 주기가 도달한 경우, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 애플리케이션 상태 확인 요청을 전달한다 (S404). When the mutation period has arrived, the application server 200 transmits an application status confirmation request to the target terminal 100 (S404).

타깃 단말 (100) 은 상태 확인 요청에 응답하여 애플리케이션 상태를 확인하며 (S406), 애플리케이션이 변이 가능 상태인지를 판단한다 (S408). 애플리케이션이 만약 비정상인 경우로 애플리케이션이 구동실패하거나, 네트워크 단절되거나, 모듈의 정합성이 비정상등인 경우를 변이 불가능한 상태로 판단할 수 있다.The target terminal 100 confirms the application status in response to the status check request (S406), and determines whether the application is in the mutable status (S408). If the application is abnormal, the application may fail to operate, the network may be disconnected, or the integrity of the module may be abnormal.

변이 가능 상태로 판단시, 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 변이 가능 상태임을 전달한다 (S410). When it is determined that the target terminal 100 is in the mutable state, the target terminal 100 transmits the mutable state to the application server 200 (S410).

애플리케이션 변이 서버 (200) 의 코드 관리부 (205) 는 변이 코드를 생성한다 (S412). 변이 코드를 생성하는 방식은 랜덤화 방식을 적용한다. The code management unit 205 of the application variation server 200 generates a variation code (S412). A randomization method is applied to a method of generating a variation code.

애플리케이션 변이 서버 (200) 는 생성된 변이 코드를 저장부 (206) 에 저장한다 (S414). 이때, 애플리케이션 변이 서버 (200) 의 저장부 (206) 에는 직전 저장된 변이 코드 뿐 아니라 기존에 생성된 변이 코드들을 모두 저장할 수 있다. 그에 따라서, 변이 코드 또는 애플리케이션에 이상이 생긴 경우, 적절하게 이전 변이 코드 또는 애플리케이션을 통해서 원복할 수 있다.The application server 200 stores the generated code in the storage unit 206 (S414). At this time, the storage unit 206 of the application server 200 may store not only the previously stored mutation codes but also any mutated codes previously generated. Accordingly, when a mutation code or an application has an error, it can be appropriately rewritten through a previous mutation code or an application.

애플리케이션 변이 서버 (200) 는 변이 코드등을 포함한 변이 명령을 타깃 단말 (100) 에 송신한다.The application variation server 200 transmits a variation instruction including a variation code or the like to the target terminal 100. [

변이 코드가 포함된 변이 명령이 수신된 경우, 도면에는 미도시되나, 도 3에서 설명한 인증 과정이 수행될 수 있다.When a shift instruction including a shift code is received, although not shown in the figure, the authentication process described in FIG. 3 may be performed.

타깃 단말 (100) 은 변이 코드에 대한 무결성 검증을 수행한다 (S418). 일반적으로, 파일이 네트워크를 통하여 송수신하는 경우, 네트워크 상태에 따라 접속이 단락 될 경우 데이터 손실이 발생할 수 있다. 손실 여부를 확인하기 위해 전송 측에서 파일 크기와 파일 데이터에 대한 해시 (HASH) 값을 붙여서 보내면, 수신 측에서 다운로드 완료 후 파일 크기와 해시 값을 계산하여, 제대로 원본이 다운로드 되었는지 확인하는 검증 절차인 무결성 검증을 수행할 수 있다. The target terminal 100 performs integrity verification of the mutation code (S418). In general, when a file is transmitted and received through a network, data loss may occur if the connection is short-circuited depending on the network conditions. In order to check the loss, the sender attaches a hash value (HASH) to the file size and file data. Then, the receiver calculates the file size and hash value after the download is completed, Integrity verification can be performed.

타깃 단말 (100) 은 변이 코드가 적용된 애플리케이션을 실행한다 (S422).The target terminal 100 executes the application to which the variation code is applied (S422).

애플리케이션을 변이한 후 재구동 시 일정 시간 (보통 10초 정도) 동안 실행하여, 제대로 실행하는 지를 확인한다.Run the application for a period of time (usually about 10 seconds) after restarting the application to see if it runs properly.

실행 결과를 판단하여 (S424), 성공시 성공 ACK를 애플리케이션 변이 서버 (200) 에 전달하고, 애플리케이션 변이 서버(200) 는 성공 이력을 저장부 (206) 에 저장한다.The result of the execution is determined (S424), and a successful ACK is transmitted to the application server 200. The application server 200 stores the success history in the storage unit 206. [

저장부 (206) 는 애플리케이션 이름, 모듈 이름, 랜덤화 시간(변이 코드 생성 시간), 실패 여부, 언어 코드, 파일 명등의 정보를 저장할 수 있다.The storage unit 206 may store information such as an application name, a module name, a randomization time (a variation code generation time), a failure status, a language code, and a file name.

만약 변이 코드가 적용된 애플리케이션에 에러가 발생한 경우 타깃 단말 (100) 의 저장부 (106) 에 저장된 기존 애플리케이션으로 복구한다 (S426). 타깃 단말 (100) 의 저장부 (106) 은 변이 코드가 적용된 애플리케이션과 종전 애플리케이션등 최근의 애플리케이션 코드 정보를 저장할 수 있다.If an error occurs in the application to which the mutation code is applied, the existing application stored in the storage unit 106 of the target terminal 100 is restored (S426). The storage unit 106 of the target terminal 100 may store recent application code information such as an application to which a variation code is applied and a previous application.

실패한 경우, 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 실패 정보를 전달하고 저장부 (206) 에 그 이력을 저장한다 (S430).In case of failure, the target terminal 100 delivers the failure information to the application server 200 and stores the history in the storage unit 206 (S430).

도 5는 애플리케이션 변이 서버와 타깃 단말간 변이 코드 적용 동작의 다른 실시예를 도시한 도면이다. 보다 구체적으로, 애플리케이션 변이 서버 (200) 가 타깃 단말 (100) 에 설치한 둘 이상의 애플리케이션을 관리하는 경우를 설명한다.5 is a diagram showing another embodiment of the application of the mutation codes between the application server and the target terminal. More specifically, a case where the application server 200 manages two or more applications installed in the target terminal 100 will be described.

본 발명에 따른 애플리케이션 변이 방법은 하나 이상의 타깃 단말에 하나 이상의 애플리케이션이 설치된 경우에도 적용될 수 있다. 이 경우에 애플리케이션 변이 서버 (200) 는 동시에 또는 병렬적으로 다수의 타깃 단말들 또는 다수의 애플리케이션들을 관리할 수 있다. 즉, 애플리케이션 변이 서버 (200) 는 다른 애플리케이션에 대한 제어에 대해서 서로 간섭됨이 없이 다른 타깃 단말 및 다른 애플리케이션들에 대한 변이 기능을 제어할 수도 있다. 이 경우, 각각의 타깃 단말들에 대한 이력 정보, 애플리케이션 정보를 저장부 (206) 가 서로 다른 위치에 저장할 수도 있다.The application variation method according to the present invention can be applied even when one or more applications are installed in one or more target terminals. In this case, the application variation server 200 can manage a plurality of target terminals or a plurality of applications concurrently or in parallel. That is, the application server 200 may control the mutating functions for other target terminals and other applications without being interfered with each other for control of the other applications. In this case, the storage unit 206 may store history information and application information for the respective target terminals at different locations.

도 5에 설명된 예는 하나의 타깃 단말 (100) 에 설치된 2개의 애플리케이션에 대한 변이 기능을 수행하는 일 예이다.The example illustrated in FIG. 5 is an example of performing a mutating function for two applications installed in one target terminal 100. FIG.

타깃 단말 (100) 과 애플리케이션 변이 서버 (200) 간에는 통신 세션이 연결된 상태이다. A communication session is connected between the target terminal 100 and the application server 200. [

애플리케이션 변이 서버 (200) 의 코드 관리부 (205) 는 1번 애플리케이션에 대한 변이 주기 도달 여부 (S501) 또는 2번 애플리케이션에 대한 변이 주기 도달 여부 (S511) 을 서로 독립적으로 판단한다.The code management unit 205 of the application server 200 independently determines whether or not the transition period for the first application is reached (S501) or whether the transition period for the second application is reached (S511).

S501에서, 1번 애플리케이션에 대한 변이 주기가 도달한 경우, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 1번 애플리케이션에 대한 상태 확인 요청을 송신한다 (S502).In step S501, when the mutation period for application # 1 is reached, the application server 200 transmits a status confirmation request for the application # 1 to the target terminal 100 (S502).

S511에서, 2번 애플리케이션에 대한 변이 주기가 도달한 경우, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 2번 애플리케이션에 대한 상태 확인 요청을 송신한다 (S512).In step S511, when the mutation period for the second application is reached, the application server 200 transmits a status check request for the second application to the target terminal 100 (S512).

상태 확인 요청을 수신한 경우, 타깃 단말 (100) 의 제어부 (104) 의 에이전트 프로그램은 1번 또는 2번 애플리케이션에 대한 변이 가능 상태를 확인한다 (S521). 이때, 타깃 단말 (100) 의 에이전트 프로그램은 1번 요청 또는 2번 요청 중 선순위 요청을 판단한다. 도면에서는, S512 이후에 1번 애플리케이션에 대한 변이 가능 상태를 확인하는 것처럼 도시되어 있으나, S512 이전 및 S502 이후에 1번 애플리케이션에 대해서만 변이 가능 상태를 선택적으로 확인할 수 있다.When receiving the status confirmation request, the agent program of the control unit 104 of the target terminal 100 confirms the mutable status for the first or second application (S521). At this time, the agent program of the target terminal 100 judges the priority request among the first request or the second request. In the drawing, it is shown that the mutable state for application 1 is confirmed after S512, but the mutable state can be selectively confirmed for only one application before S512 and after S502.

도면에서처럼, 선순위가 1번 애플리케이션에 대한 것인 경우, 1번 애플리케이션에 대한 변이 동작을 수행할 수 있다. 즉, 에이전트 프로그램은 1번 애플리케이션이 변이 가능 상태임을 전달한다 (S531). 애플리케이션 변이 서버 (200) 는 1번 애플리케이션에 대한 변이 코드를 생성하고, 관련 동작을 수행하며, 그 과정은 도 4에서 설명된 과정과 동일하다.As shown in the figure, if the priority is for application # 1, it can perform a transition operation for application # 1. That is, the agent program transmits that the first application is in the mutable state (S531). The application mutation server 200 generates a mutation code for the first application and performs related operations, and the procedure is the same as that described in Fig.

애플리케이션 변이 서버 (200) 가 1번 애플리케이션에 대한 변이 코드를 타깃 단말 (100) 에 전달한 경우 (S532), 타깃 단말 (100)의 에이전트 프로그램은 변이 코드를 1번 애플리케이션에 적용한다 (S541). 1번 애플리케이션에 대한 변이 코드 동작과 관련된 전반 동작이 마무리된 경우, 2번 애플리케이션에 대한 동작을 수행한다.When the application server 200 transmits the dispatch code for the application 1 to the target terminal 100 in step S532, the agent program in the target terminal 100 applies the dispatch code to the first application in step S541. When the overall operation related to the mutation code operation for the first application is completed, the operation for the second application is performed.

타깃 단말 (100) 의 에이전트 프로그램은 1번 애플리케이션에 대한 변이 코드 대체 동작이 마무리된 후, 애플리케이션 변이 서버 (200) 에 2번 애플리케이션 변이 가능 상태임을 전달한다 (S551). 애플리케이션 변이 서버 (200) 는 2번 애플리케이션에 대한 변이 코드를 생성하고, 관련 동작을 수행하며, 그 과정은 도 4에서 설명된 과정과 동일하다.The agent program of the target terminal 100 notifies the application server 200 of the application mutable state 2 (S551) after completing the mutation code replacement operation for the first application. The application variation server 200 generates a variation code for application # 2 and performs related operations, and the procedure is the same as that described in FIG.

애플리케이션 변이 서버 (200) 가 2번 애플리케이션에 대한 변이 코드를 타깃 단말 (100) 에 전달한 경우 (S552), 타깃 단말 (100)의 에이전트 프로그램은 변이 코드를 2번 애플리케이션에 적용한다 (S541).In a case where the application server 200 transmits a mutation code for the second application to the target terminal 100 in step S552, the agent program in the target terminal 100 applies the mutation code to the second application in step S541.

도면에서는, 상태 확인 요청이 먼저 온 것을 기준으로 적용하였으나, 다른 방식이 적용될 수도 있다. 예를 들어, 사전에 규정한 우선 순위가 높은 애플리케이션을 최우선으로 적용할 수도 있다.In the drawings, the condition check request is first applied, but other methods may be applied. For example, applications with high priorities specified in advance may be given top priority.

도 6은 애플리케이션 변이 서버와 타깃 단말간 변이 코드 적용 동작의 또 다른 실시예를 도시한 도면이다. 보다 구체적으로, 특정 이벤트가 발생하여 비정기적으로 변이 코드를 적용하는 경우를 설명한다. 일반적으로는, 예를 들어, 24시간에 한번씩, 애플리케이션 변이 서버 (200) 의 코드 관리부 (205) 가 변이 코드 적용을 결정하지만, 외부 해킹 시도등 애플리케이션을 변이할 필요가 있을 경우에도, 변이 코드를 적용할 필요가 있다.6 is a diagram showing another embodiment of the application of the mutation codes between the application server and the target terminal. More specifically, a case where a specific event occurs and a variation code is applied irregularly will be described. In general, for example, once the code management unit 205 of the application server 200 determines the application of the mutation code every 24 hours, even if it is necessary to mutate the application such as an external hacking attempt, It needs to be applied.

타깃 단말 (100) 의 제어부 (104) 는 타깃 단말내에 특정 이벤트가 발생했는 지를 판단한다 (S601). 이벤트가 발생한 경우, 제어부 (104) 는 이벤트의 종류를 판단한다 (S602). 이벤트로는 외부 해킹 시도, 애플리케이션 실행 오류, 애플리케이션 코드 이상등 타깃 단말 (100) 에 발생되는 다양한 현상을 포함할 수 있다. 제어부 (104) 는 사전에 변이 코드를 적용할 이벤트가 규정할 수 있다. 가장 대표적인 경우로, 외부 해킹 시도를 변이 코드를 적용할 이벤트로 규정될 수 있다.The control unit 104 of the target terminal 100 determines whether a specific event has occurred in the target terminal (S601). When an event occurs, the control unit 104 determines the type of the event (S602). The event may include various phenomena occurring in the target terminal 100, such as an external hacking attempt, an application execution error, or an application code error. The control unit 104 may define an event to which the variation code is to be applied in advance. As a most representative case, an external hacking attempt may be defined as an event to which a mutation code is to be applied.

해킹과 같은 이벤트로 판단한 경우, 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 이벤트 감지 알림 신호를 전달한다 (S603). If it is determined that the event is an event such as hacking, the target terminal 100 delivers an event detection notification signal to the application server 200 (S603).

애플리케이션 변이 서버 (200) 가 이벤트 감지 알림 신호를 수신한 경우, 애플리케이션 변이 서버 (200) 는 선택적으로 이벤트가 변이 코드를 적용할 이벤트인지를 한번 더 판단할 수 있다.When the application variation server 200 receives the event detection notification signal, the application variation server 200 may optionally determine once again whether the event is an event to which the variation code is to be applied.

애플리케이션 변이 서버 (200) 는 해킹과 같은 이벤트에 대한 이력을 저장하고, 애플리케이션에 대한 변이 코드를 생성한다 (S604). 생성된 변이 코드는 저장부 (206) 에 저장한다 (S605).The application variation server 200 stores a history of an event such as a hacking, and generates a variation code for the application (S604). The created mutation code is stored in the storage unit 206 (S605).

애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 애플리케이션 상태 확인 요청을 송신한다 (S606) 에이전트 프로그램은 애플리케이션에 대한 현재 상태를 확인하고 (S607), 변이 가능 상태로 확인시 (S608), 애플리케이션 변이 서버 (200) 에 변이 가능 상태임을 전달한다 (S609).The application transition server 200 transmits an application state confirmation request to the target terminal 100 in step S606. The agent program confirms the current state of the application in step S607, confirms the state in step S608, And informs the server 200 that it is in the mutable state (S609).

애플리케이션 변이 서버 (200) 는 애플리케이션에 대한 변이 코드를 타깃 단말 (100) 에 전달하고 (S610), 에이전트 프로그램은 애플리케이션에 대한 변이 코드로 애프리케이션의 일부 코드를 대체하고 해당 애플리케이션을 실행한다 (S611).The application server 200 transfers the mutation code for the application to the target terminal 100 (S610). The agent program replaces some code of the application with the mutation code for the application and executes the corresponding application (S611 ).

도 7은 애플리케이션에 대한 변이 코드 적용의 예를 도시한 도면이다.7 is a diagram showing an example of application of a variation code to an application.

도면에서, 애플리케이션을 구성하는 코드 및 모듈을 단순화하여 도시하였다.In the drawings, the code and modules that make up the application are shown simplified.

도 7 의 (a), (b), (c), (d) 각각은 하나의 애플리케이션을 의미하며, 기능적으로는 동일한 애플리케이션이다. 즉, (a)의 애플리케이션을 애플리케이션 원본 코드라고 가정하면, (b)는 애플리케이션의 일부 코드가 변이 코드로 대체된 경우이며, (c) 는 애플리케이션의 일부 코드가 다음 변이 코드로 한번 더 대체된 경우이며, (d) 는 애플리케이션의 일부 코드가 그 다음 변이 코드로 한번 더 대체된 경우이다.Each of FIGS. 7 (a), 7 (b), 7 (c) and 7 (d) represents one application and is functionally the same application. That is, supposing that the application of (a) is the application original code, (b) is a case where some code of the application is replaced with a mutation code, and (c) (D) is a case where some code of the application is replaced with the next code.

간단하게 도식화하면, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P 각각은 애플리케이션을 구성하는 코드를 의미한다. 코드들의 조직인 (A,B,C,D), (E,F,G,H), (I,J,K,L), (M,N,O,P) 는 각각이 기능단인 모듈을 나타낸다. 모듈의 예로, 인증 모듈, 통신 모듈, 입력 모듈등 애플리케이션에서 수행하는 기능단을 모듈로 설명할 수 있다. 모듈들의 합을 애플리케이션으로 볼 수 있다.In the simplest case, each of A, B, C, D, E, F, G, H, I, J, K, L, M, N, The modules of the codes (A, B, C, D), (E, F, G, H), (I, J, K, L) . An example of a module is a function module that can be implemented in an application, such as an authentication module, a communication module, and an input module. The sum of the modules can be viewed as an application.

본 발명은, 애플리케이션을 이루는 코드를 변이 코드로 대체하는 발명이다. 도 7을 참조하면, (a) 의 원본 애플리케이션 코드는 (b) 에서 A',B,C,D,E',F,G,H,I,J,K,L',M,N,O,P 로 변경된다. 즉, 원본 코드인 A, E, L 은 변이 코드인 A', E', L' 로 대체된다. (c) 에서는, 변이 코드인 A'', E'', L''로 대체된다. (d) 에서는, 변이 코드인 A''', E''', L''' 로 대체된다. 애플리케이션에 대한 기능은 그대로 유지하되 정기적으로 또는 비정기적으로 애플리케이션의 일부 코드가 변경되는 경우, 리버스 엔지니어링등으로 코드를 분석하더라도, 애플리케이션을 분석하는 것이 극히 어려워진다.The present invention is an invention for replacing a code constituting an application with a mutation code. Referring to FIG. 7, the original application code of FIG. 7A is composed of A ', B, C, D, E', F, G, H, I, J, K, L ', M, , And P, respectively. That is, the original codes A, E, and L are replaced with the mutation codes A ', E', and L '. (c), the mutation codes A '', E '', and L '' are substituted. (d), the mutation codes A '' ', E' '', and L '' 'are substituted. Keeping the functionality of your application intact, but it is extremely difficult to analyze your application, even if you analyze code by reverse engineering, if some code in your application changes on a regular or irregular basis.

애플리케이션의 어떤 코드가 변이 코드로 적용될 지 여부는 애플리케이션 변이 서버 (200) 가 사전에 결정한다. The application transition server 200 determines in advance which code of the application is to be applied as the mutation code.

모듈 측면에서 보면, (A,B,C,D), (E,F,G,H), (I,J,K,L) 은 변이 코드가 적용되는 모듈이나, (M,N,O,P) 은 변이 코드가 적용되지 않는 상태이다.In the module side, (A, B, C, D), (E, F, G, H) P) is a state in which the mutation code is not applied.

한편, 변이 코드인 A', A'', A''' 은 난독화 (랜덤화) 방식이 적용된다. On the other hand, the mutation codes A ', A' ', and A' '' are obfuscated (randomized).

도 8 은 소스코드 난독화의 일 예를 도면이다.8 is a diagram showing an example of source code obfuscation.

난독화는 프로그램을 변화하는 방법의 일종으로, 코드를 읽기 어렵게 만들어 역공학을 통한 공격을 막는 기술을 의미한다. 난독화는 난독화의 대상에 따라 크게 1) 소스 코드 난독화와 2) 바이너리 난독화로 나눌 수 있다. 소스 코드 난독화는 C/C++/자바 등의 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술이고, 바이너리 난독화는 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술이다.Obfuscation is a way of changing a program, which means that it makes it harder to read code and prevents attacks through reverse engineering. Obfuscation can be divided into 1) source code obfuscation and 2) binary obfuscation according to obfuscation object. Source code obfuscation is a technique to convert source code of programs such as C / C ++ / Java into a form that is difficult to understand. Binary obfuscation is a technique that modifies the binary generated after compilation by reverse engineering.

소스코드 랜덤화(난독화)란, 고객이나 내부 또는 용역 개발자에게 소스코드를 일부 공개하여 일부를 수정할 수 있게 하더라도 전체 플로우는 알아보기 힘들도록 소스코드를 꼬는 것을 뜻한다. Source code randomization (obfuscation) means to twist the source code to make it difficult to understand the entire flow, even if you can make some changes to the customer or internal or service developer by releasing some of the source code.

극히 일부를 수정은 할 수 있더라도, 전체 플로우를 파악하는 것은 매우 힘들기 때문에 다른 용도로 사용하는 것이 힘들어지는 것이다. 소스코드 보안은 내부 보안이라고도 할 수 있다. Even if only a small part of it can be modified, it is very difficult to grasp the whole flow, so it is difficult to use it for other purposes. Source code security is also referred to as internal security.

구체적으로 소스 코드 난독화는 C/C++/C#/Java/java script 등의 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술이다. Specifically, source code obfuscation is a technique that changes the source code of a program such as C / C ++ / C # / Java / java script into a form difficult to understand.

소스 코드를 난독화하면 도 8 에서처럼 제어 흐름이 바뀌어 분석하기 어렵다.If the source code is obfuscated, the control flow is changed as shown in FIG.

도 8의 원코드는 1~100 까지 정수를 합산하는 것으로 1개의 루프 구조를 가지는 함수를 나타낸다. 여기에서 제어 흐름 난독화를 적용하여 switch 조건 분기 제어가 추가되어 코드 구조를 분석하기가 더 어려워진다. 하지만, 결과 값은 동일하게 도출할 수 있도록 변형된다. The original code of FIG. 8 represents a function having one loop structure by summing integers from 1 to 100. Here, the control flow obfuscation is applied, and the switch condition branch control is added, making it difficult to analyze the code structure. However, the resultant value is transformed so that it can be derived equally.

소스 코드 난독화의 예로는 레이아웃 난독화, 데이터 난독화, 컨트롤 난독화, 예방 (preventive) 난독화등이 있다. 레이아웃 난독화는 소스 코드의 포맷이나 변수의 이름을 대상으로 변환하는 방법이다. 데이터 난독화는 데이터가 메모리에 저장되는 방법 또는 저장된 데이터의 해석 방법을 변경하거나 데이터의 배열 순서를 변경해서 프로그램이 사용하는 데이터 구조를 대상으로 변환하는 방법이다. 컨트롤 난독화는 개별 프로그램 함수들에서 제어 흐름을 이행하기 어렵게 만드는 방식이다. Examples of obfuscation of the source code include layout obfuscation, data obfuscation, control obfuscation, and preventive obfuscation. Layout obfuscation is a method of converting the source code format or the name of a variable to a target. Data obfuscation is a method of transforming the data structure used by the program by changing the method of storing the data in the memory or the method of interpreting the stored data or changing the order of the data. Control obfuscation is a way to make it difficult to implement the control flow in individual program functions.

예방 난독화는 이미 알려진 자동화 역난독화 방법을 봉쇄하기 위한 기술이다. Preventive obfuscation is a technique for blocking known methods of automated reverse obfuscation.

한편, 상기 설명에서, 애플리케이션 변이 서버 (200) 과 타깃 단말 (100) 은 서로 독립적인 기기인 것으로 설명되었으나, 이와 달리 애플리케이션 변이 서버 (200) 의 기능과 타깃 단말 (100) 의 기능이 하나의 기기에서 구현될 수도 있다. 즉, 애플리케이션 변이 서버 (200) 의 코드 관리부 (205) 와 타깃 단말 (100) 의 에이전트 프로그램 (105) 가 하나의 기기에서 구현될 수 있다. 그에 따라서, 코드 관리부 (205) 에서 변이 코드를 생성하는 경우, 그에 따라서 에이전트 프로그램 (105) 가 애플리케이션의 일부 코드를 대체할 수도 있다.In the above description, the application server 200 and the target terminal 100 are mutually independent devices. Alternatively, the function of the application server 200 and the function of the target terminal 100 may be performed by one device Lt; / RTI > That is, the code management unit 205 of the application server 200 and the agent program 105 of the target terminal 100 can be implemented in one device. Accordingly, when the code management unit 205 generates the mutation code, the agent program 105 may replace some code of the application accordingly.

100 타깃 단말
105 에이전트 프로그램
200 애플리케이션 변이 서버
205 코드 관리부
100 target terminal
105 Agent Program
200 application variation server
205 code management unit

Claims (20)

애플리케이션 변이 서버에 있어서,
애플리케이션 및 상기 애플리케이션이 설치된 타깃 단말에 대한 정보를 저장하는 저장부;
상기 애플리케이션과 관련된 변이 코드를 생성하는 제어부; 및
상기 변이 코드를 상기 타깃 단말에 송신하는 통신부를 포함하며,
상기 애플리케이션은 다수의 코드로 구성되고, 상기 변이 코드는 상기 다수의 코드 중 사전 결정된 일부 코드를 변경한 것이며,
상기 통신부는 상기 애플리케이션을 구성하는 상기 다수의 코드 전체를 송신하지 않고, 상기 변이 코드만 상기 타깃 단말에 송신하는 것을 특징으로 하며,
상기 저장부는 상기 애플리케이션에 대한 원본 애플리케이션, 상기 변이 코드 및 이전 변이 코드와 관련된 이력 정보를 저장하는 것을 특징으로 하는, 애플리케이션 변이 서버.
In an application transition server,
A storage unit for storing information on an application and a target terminal on which the application is installed;
A control unit for generating a mutation code associated with the application; And
And a communication unit for transmitting the mutation code to the target terminal,
Wherein the application is comprised of a plurality of codes, the mutation code is a modification of a predetermined one of the plurality of codes,
Wherein the communication unit transmits only the mutation code to the target terminal without transmitting all of the plurality of codes constituting the application,
Wherein the storage stores the history information associated with the original application for the application, the variation code, and the previous variation code.
제 1 항에 있어서,
상기 제어부는 난독화 방식으로 상기 변이 코드를 생성하며,
상기 난독화 방식은 레이아웃 난독화, 데이터 난독화, 컨트롤 난독화, 예방 (preventive) 난독화 중 하나인, 애플리케이션 변이 서버.
The method according to claim 1,
The control unit generates the mutation code in an obfuscation manner,
Wherein the obfuscation scheme is one of a layout obfuscation, a data obfuscation, a control obfuscation, and a preventive obfuscation.
삭제delete 제 1 항에 있어서,
상기 제어부는,
일정 주기가 도달한 경우, 상기 타깃 단말에 애플리케이션 상태 확인 요청을 상기 통신부가 송신하도록 제어하고,
상기 상태 확인 요청에 응답하여 상기 타깃 단말의 애플리케이션이 변이 가능 상태로 판단되면 상기 사전 결정된 일부 코드를 재변경한 변이 코드를 생성하며,
상기 재변경한 변이 코드는 기존 변이 코드와 상이한, 애플리케이션 변이 서버.
The method according to claim 1,
Wherein,
And controls the communication unit to transmit an application status confirmation request to the target terminal when a predetermined period has been reached,
And generating a mutation code in which the predetermined code is re-changed if the application of the target terminal is determined to be mutable in response to the status confirmation request,
Wherein the re-altered mutation code is different from an existing mutation code.
제 4 항에 있어서,
상기 타깃 단말에 설치된 애플리케이션은 다수의 코드로 구성되며, 상기 타깃 단말에 송신된 변이 코드는 상기 타깃 단말에 설치된 애플리케이션을 구성하는 다수의 코드 중 사전 결정된 일부 코드를 대체하며,
상기 애플리케이션 변이 서버에 저장된 애플리케이션 및 애플리케이션을 구성하는 상기 다수의 코드와 상기 타깃 단말에 설치된 애플리케이션 및 애플리케이션을 구성하는 상기 다수의 코드는 상호 대응되며,
상기 애플리케이션의 원본 애플리케이션과 상기 변이 코드로 일부 코드가 대체된 애플리케이션의 기능 동작은 동일한 것을 특징으로 하는, 애플리케이션 변이 서버.
5. The method of claim 4,
Wherein the application installed in the target terminal comprises a plurality of codes and the mutation code transmitted to the target terminal replaces a predetermined code among a plurality of codes constituting the application installed in the target terminal,
The plurality of codes constituting an application and an application stored in the application server and the plurality of codes constituting an application and an application installed in the target terminal correspond to each other,
Wherein the functional operation of the original application of the application and the application in which some code is replaced by the mutation code are the same.
제 1 항에 있어서,
상기 제어부가 애플리케이션을 구성하는 다수의 코드 중 상기 변이 코드로 변경될 상기 일부 코드를 사전 결정하며, 상기 일부 코드를 제외한 다수의 코드는 변경되지 않는 것을 특징으로 하는, 애플리케이션 변이 서버.
The method according to claim 1,
Wherein the control unit predetermines the partial code to be changed to the variation code among a plurality of codes constituting the application, and the plurality of codes except the partial code are not changed.
애플리케이션 실행 단말에 있어서,
애플리케이션을 저장하는 저장부;
상기 애플리케이션과 관련된 변이 코드를 애플리케이션 변이 서버로부터 수신하는 통신부; 및
상기 애플리케이션을 실행하는 제어부를 포함하며,
상기 애플리케이션은 다수의 코드로 구성되고, 상기 수신된 변이 코드는 상기 다수의 코드 중 사전 결정된 일부 코드에 대한 것으로 상기 애플리케이션 변이 서버에 의해서 생성된 것이며,
상기 제어부는 상기 애플리케이션을 구성하는 상기 다수의 코드 전체가 아닌 상기 사전 결정된 일부 코드만 상기 수신된 변이 코드로 대체하며,
상기 제어부는 상기 애플리케이션의 상기 일부 코드를 상기 변이 코드로 대체 후 상기 애플리케이션의 정상 실행 여부를 판단하는 것을 특징으로 하며,
상기 저장부는 상기 애플리케이션에 대한 원본 애플리케이션, 상기 변이 코드 및 이전 변이 코드와 관련된 이력 정보를 저장하는, 애플리케이션 실행 단말.
In an application execution terminal,
A storage unit for storing an application;
A communication unit for receiving a mutation code associated with the application from an application server; And
And a control unit for executing the application,
Wherein the application is composed of a plurality of codes, the received mutation code is generated by the application server, for a predetermined part of the plurality of codes,
Wherein the control unit replaces only the predetermined code not the whole of the plurality of codes constituting the application with the received mutation code,
Wherein the control unit determines whether the application is normally executed after replacing the partial code of the application with the variation code,
Wherein the storage stores history information associated with the original application for the application, the variation code, and the previous variation code.
삭제delete 제 7 항에 있어서,
상기 제어부는,
상기 애플리케이션의 실행 가능 상태 여부를 확인하며,
실행 가능 상태 확인 관련 정보를 상기 통신부를 통하여 상기 애플리케이션 변이 서버에 송신하는, 애플리케이션 실행 단말.
8. The method of claim 7,
Wherein,
Checking whether the application is executable,
And transmits the executable state confirmation related information to the application server via the communication unit.
제 7 항에 있어서,
상기 제어부는,
상기 애플리케이션의 상기 일부 코드를 상기 변이 코드로 대체 후 상기 애플리케이션의 정상 실행 여부를 판단하여 오류 발생을 확인한 경우, 상기 저장부에 저장된 정보들을 활용하여 상기 변이 코드로 대체되기 직전의 상태로 애플리케이션을 복구하는, 애플리케이션 실행 단말.
8. The method of claim 7,
Wherein,
If the error is detected by checking whether the application is normally executed after replacing the partial code of the application with the mutation code, the application is restored to a state immediately before being replaced by the mutation code by utilizing the information stored in the storage unit Application execution terminal.
애플리케이션 변이 방법에 있어서,
서버가 애플리케이션과 관련한 변이 코드를 생성하는 단계로써, 상기 애플리케이션은 다수의 코드로 구성되고, 상기 변이 코드는 상기 다수의 코드 중 사전 결정된 일부 코드를 변경한 것인, 상기 생성 단계;
상기 서버가 상기 변이 코드를 타깃 단말에 송신하는 단계로써, 상기 서버는 상기 다수의 코드 전체를 송신하는 것이 아닌 상기 변이 코드만 송신하는, 상기 송신 단계;
상기 타깃 단말이 상기 변이 코드를 수신하는 단계;
상기 타깃 단말이 상기 타깃 단말에 설치된 애플리케이션을 구성하는 다수의 코드 중 일부 코드를 상기 변이 코드로 대체하는 단계; 및
상기 타깃 단말이 일부 코드가 상기 변이 코드로 대체된 상기 애플리케이션을 실행하는 단계를 포함하며,
상기 서버가 상기 변이 코드를 저장하는 단계를 더 포함하며,
상기 서버는 상기 애플리케이션에 대한 원본 애플리케이션 및 이전 변이 코드와 관련된 이력 정보를 저장하는, 애플리케이션 변이 방법.
In an application variation method,
The server generating a variation code related to the application, wherein the application is composed of a plurality of codes, and the variation code changes a predetermined one of the plurality of codes;
The server transmitting the mutation code to the target terminal, wherein the server transmits only the mutation code, not the whole of the plurality of codes;
Receiving the mutation code from the target terminal;
Replacing some code among a plurality of codes constituting an application installed in the target terminal by the target terminal with the mutation code; And
The target terminal executing the application in which some code has been replaced by the mutation code,
Further comprising the step of the server storing the mutation code,
Wherein the server stores history information associated with the original application and the previous variation code for the application.
제 11 항에 있어서,
일정 주기가 도달한 경우, 상기 서버가 상기 타깃 단말에 애플리케이션 상태 확인 요청을 송신하는 단계;
상기 상태 확인 요청에 응답하여 상기 타깃 단말이 상기 타깃 단말의 애플리케이션이 변이 가능 상태인지 판단하는 단계;
변이 가능 상태로 판단시, 상기 타깃 단말이 상기 서버에 변이 가능 상태 신호를 송신하는 단계;
상기 변이 가능 상태 신호에 응답하여 상기 사전 결정된 일부 코드를 재변경한 변이 코드를 생성하는 단계; 및
상기 재변경한 변이 코드를 상기 타깃 단말에 송신하는 단계를 더 포함하며,
상기 재변경한 변이 코드는 기존 변이 코드와 상이한, 애플리케이션 변이 방법.
12. The method of claim 11,
When the predetermined period is reached, the server transmits an application status confirmation request to the target terminal;
Determining whether an application of the target terminal is in a mutable state in response to the status confirmation request;
When the target terminal determines that the mobile terminal is in a mutable state, transmitting a mutable state signal to the server;
Generating a mutation code in which the predetermined code has been re-modified in response to the mutable state signal; And
And transmitting the modified code to the target terminal,
Wherein the re-altered mutation code is different from an existing mutation code.
제 11 항에 있어서,
상기 변이 코드는 난독화 방식으로 생성되며,
상기 난독화 방식은 레이아웃 난독화, 데이터 난독화, 컨트롤 난독화, 예방 (preventive) 난독화 중 하나인, 애플리케이션 변이 방법.
12. The method of claim 11,
The mutation code is generated in obfuscation manner,
Wherein the obfuscation scheme is one of a layout obfuscation, a data obfuscation, a control obfuscation, and a preventive obfuscation.
삭제delete 제 11 항에 있어서,
상기 타깃 단말은 상기 애플리케이션의 상기 일부 코드를 상기 변이 코드로 대체 후 상기 애플리케이션의 정상 실행 여부를 판단하는 단계; 및
상기 애플리케이션 실행에 오류 발생을 확인한 경우, 상기 타깃 단말은 상기 변이 코드로 대체되기 직전의 상태로 애플리케이션을 복구하는 단계를 더 포함하는, 애플리케이션 변이 방법.
12. The method of claim 11,
Determining whether the application is normally executed after replacing the partial code of the application with the mutation code; And
Further comprising the step of restoring the application to a state immediately before the target terminal is replaced with the mutation code when it is confirmed that an error has occurred in the execution of the application.
애플리케이션 변이 방법에 있어서,
일정 주기의 도달 여부를 판단하는 단계;
상기 주기가 도달한 경우 애플리케이션과 관련된 변이 코드를 생성하는 단계로써, 상기 애플리케이션은 다수의 코드로 구성되고, 상기 변이 코드는 상기 다수의 코드 중 사전 결정된 일부 코드를 변경한 것인, 상기 생성 단계;
상기 변이 코드를 저장하는 단계;
상기 변이 코드를 타깃 단말에 송신하는 단계로써, 상기 애플리케이션을 구성하는 상기 다수의 코드 전체가 아닌 상기 변이 코드만 송신하는 상기 송신 단계;
상기 타깃 단말로부터 상기 변이 코드로 대체된 애플리케이션의 실행 성공 여부에 대한 정보를 수신하는 단계; 및
상기 변이 코드에 대한 실행 성공 이력을 저장하는 단계를 포함하는, 애플리케이션 변이 방법.
In an application variation method,
Determining whether a predetermined period has been reached;
Generating a mutation code associated with the application when the period has reached, wherein the application is composed of a plurality of codes, and the mutation code is a change of a predetermined one of the plurality of codes;
Storing the variation code;
The transmitting step of transmitting the mutation code to the target terminal, wherein the transmitting step transmits only the mutation code not the whole of the plurality of codes constituting the application;
Receiving information on the success or failure of execution of an application replaced by the mutation code from the target terminal; And
And storing an execution success history for the mutation code.
제 16항에 있어서,
상기 변이 코드 생성 단계 이전에 상기 타깃 단말에 변이 가능 상태 확인 요청을 송신하는 단계;
상기 변이 가능 상태 확인에 대한 응답을 수신하는 단계를 더 포함하는, 애플리케이션 변이 방법.
17. The method of claim 16,
Transmitting a mutable state confirmation request to the target terminal before the generation of the mutation code;
Further comprising receiving a response to the mutable state confirmation.
삭제delete 삭제delete 삭제delete
KR1020170156035A 2017-11-22 2017-11-22 Method and apparatus for protecting an application KR101885146B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170156035A KR101885146B1 (en) 2017-11-22 2017-11-22 Method and apparatus for protecting an application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170156035A KR101885146B1 (en) 2017-11-22 2017-11-22 Method and apparatus for protecting an application

Publications (1)

Publication Number Publication Date
KR101885146B1 true KR101885146B1 (en) 2018-08-03

Family

ID=63250358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170156035A KR101885146B1 (en) 2017-11-22 2017-11-22 Method and apparatus for protecting an application

Country Status (1)

Country Link
KR (1) KR101885146B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101941274B1 (en) * 2018-09-05 2019-01-22 (유)아홉 Method and apparatus for actuating an application without cessation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060195745A1 (en) * 2004-06-01 2006-08-31 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
JP2013046122A (en) * 2011-08-23 2013-03-04 Yahoo Japan Corp Terminal, application protection method, and program
JP2014106690A (en) * 2012-11-27 2014-06-09 Kddi Corp Terminal equipment, server, content distribution system, content distribution method and program
KR20170018745A (en) * 2015-08-10 2017-02-20 라인 가부시키가이샤 System and method for application code obfuscation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060195745A1 (en) * 2004-06-01 2006-08-31 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
JP2013046122A (en) * 2011-08-23 2013-03-04 Yahoo Japan Corp Terminal, application protection method, and program
JP2014106690A (en) * 2012-11-27 2014-06-09 Kddi Corp Terminal equipment, server, content distribution system, content distribution method and program
KR20170018745A (en) * 2015-08-10 2017-02-20 라인 가부시키가이샤 System and method for application code obfuscation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101941274B1 (en) * 2018-09-05 2019-01-22 (유)아홉 Method and apparatus for actuating an application without cessation

Similar Documents

Publication Publication Date Title
CN109313690B (en) Self-contained encrypted boot policy verification
CN110378139B (en) Data key protection method, system, electronic equipment and storage medium
US20200153808A1 (en) Method and System for an Efficient Shared-Derived Secret Provisioning Mechanism
CN112417379B (en) Cluster license management method and device, authorization server and storage medium
JP6067449B2 (en) Information processing apparatus and information processing program
DK1479187T4 (en) MANAGEMENT OF ACCESS LEVELS IN PHONES USING CERTIFICATES
EP2264639B1 (en) Securing executable code integrity using auto-derivative key
KR102013983B1 (en) Method and server for authenticating an application integrity
CN101983375A (en) Binding a cryptographic module to a platform
KR20090085585A (en) System and method for changing a shared encryption key
JP7256862B2 (en) Secure communication method and system between protected containers
Kohnhäuser et al. Secure code updates for mesh networked commodity low-end embedded devices
KR102256249B1 (en) SECURE FIRMWARE UPDATE METHOD OF IoT DEVICE USING AN INTEGRATED SECURITY SoC
US20120213370A1 (en) Secure management and personalization of unique code signing keys
KR101885146B1 (en) Method and apparatus for protecting an application
CN105184119A (en) Software safety protection method
JP5141056B2 (en) Information processing apparatus and data transfer method of information processing apparatus
CN115941336A (en) Data processing method, device and equipment
US20240126886A1 (en) Trusted Computing for Digital Devices
Wu et al. The mobile agent security enhanced by trusted computing technology
CN106415565B (en) Protect software project
CN108228219B (en) Method and device for verifying BIOS validity during in-band refreshing of BIOS
CN112204551A (en) Improved computing device
JP2018136811A (en) Control system
KR101781970B1 (en) Apparatus for defending illegal outflow of electronic documents by itself and method using the same

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant