KR101885146B1 - Method and apparatus for protecting an application - Google Patents
Method and apparatus for protecting an application Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000007704 transition Effects 0.000 claims abstract description 21
- 230000035772 mutation Effects 0.000 claims description 124
- 238000004891 communication Methods 0.000 claims description 35
- 238000012790 confirmation Methods 0.000 claims description 14
- 230000036961 partial effect Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 230000003449 preventive effect Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 2
- 230000004048 modification Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 16
- 230000002441 reversible effect Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000009434 installation Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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
-
- 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Abstract
Description
본 발명은 해킹 시도로부터 애플리케이션을 보호하는 기술에 관한 것이다. 보다 구체적으로, 본 발명은 애플리케이션의 일부 코드를 지속적으로 변경하여 해킹으로부터 애플리케이션을 보호하기 위한 기술에 관한 것이다.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
애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 설치된 애플리케이션을 관리하는 서버이다. 구체적으로, 애플리케이션의 일부 코드를 지속적으로 변이 코드로 대체하도록 관리하는 서버이다. 애플리케이션 변이 서버 (200) 는 통신부 (202), 제어부 (204) 및 저장부 (206) 를 포함할 수도 있다. The
도 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
제어부(controller, 104)는 타깃 단말 (100) 의 전반적인 동작을 제어한다. 예를 들어, 제어부 (104) 는 제어부 자체의 기능 뿐 아니라, 통신부 (102) 및 저장부 (106) 의 다양한 기능을 제어할 수도 있다. 제어부 (104) 는 타깃 단말 (100) 에 설치된 애플리케이션을 수행할 수 있다.The
제어부 (104) 는 선택적으로 에이전트 프로그램 (105) 을 포함할 수도 있다. 본 발명에서 애플리케이션 변이 코드 대체등의 기능은 에이전트 프로그램 (105) 를 통하여 수행할 수 있다. 에이전트 프로그램 (105) 은 다수의 애플리케이션의 코드 대체와 관련된 기능을 수행할 수도 있다. 애플리케이션 변이 서버 (200) 는 에이전트 프로그램 (105) 을 통하여 타깃 단말 (100) 의 애플리케이션 코드를 제어할 수 있다. 에이전트 프로그램 (105) 는 애플리케이션의 코드 및 컴포넌트(Component, 또는 모듈) 를 전체 또는 일부를 변경한다. 에이전트 프로그램은 저장부 (106) 에 저장 중인 모듈(실행파일, 라이브러리파일)을 정해진 스케쥴에 따라 애플리케이션의 코드 또는 컴포넌트를 대체하여 변경시킨다. The
동적으로 애플리케이션의 코드 또는 모듈을 변경하고, 애플리케이션을 재구동시켜 실행 프로세스 교체가 일어나게 되는데, 애플리케이션에 따라서 실행 중단 후 재구동 과정을 거치는 경우가 발생할 수 있거나 실행이 중단되지 아니하고 일부 구성 모듈만 재 구동이 가능한 경우가 있을 수도 있다. 이때 에이전트 프로그램 (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
에이전트 프로그램이 서버 (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
저장부 (106) 는 제어부(104)의 처리 및 제어를 위한 프로그램이 저장될 수도 있고, 입/출력되는 데이터들(예를 들어, 애플리케이션 코드 변이를 위한 변이 코드 등)의 저장을 위한 기능을 수행할 수도 있다.The
한편, 애플리케이션 변이 서버 (200) 역시 타깃 단말 (100) 과 유사한 구조를 가진다. 즉, 애플리케이션 변이 서버 (200) 는 통신부 (202), 제어부 (204) 및 저장부 (206) 을 가진다. 하지만, 타깃 단말 (100) 과 변이 서버 (200) 의 기능은 일부 상이하다.On the other hand, the
애플리케이션 변이 서버 (200) 의 통신부 (202) 는 타깃 단말 (100) 과 다양한 정보를 송수신한다. 예를 들어, 통신부 (202) 는 애플리케이션 변이 코드, 애플리케이션 인증 코드등을 타깃 단말 (100) 에 송신하며, 타깃 단말 (100) 로부터 변이 가능 확인 신호등을 수신할 수 있다.The
제어부 (204) 는 애플리케이션 변이 서버 (200) 의 전반적인 동작을 제어한다. 애플리케이션 변이 서버 (200) 의 변이 코드 생성등 다양한 동작은 제어부 (204) 에 의해서 제어될 수 있다. 예를 들어, 제어부 (204) 는 사전 결정된 주기가 도달한 경우 또는 특정 이벤트 발생이 확인된 경우 애플리케이션에 대한 변이 코드를 생성할 수 있다. The
이러한 변이 코드와 관련된 기능은 제어부 (204) 의 코드 관리부 (205) 에 수행될 수도 있다. 코드 관리부 (205) 는 다수의 보호 대상 애플리케이션을 관리할 수 있으며, 애플리케이션을 저장부 (206) 에 등록, 수정 및, 삭제하는 관리하는 것이 바람직하다. 한편, 관리 대상 애플리케이션에 접근할 수 있는 사용자 계정의 등록, 수정, 삭제를 관리하는 보안 기능도 필요에 따라 구현될 수 있다. The function related to the variation code may be performed in the
또한 인증 처리부, 접근 제어부도 구현되어야 보다 안전하게 코드 접근 대상을 차별적으로 보호할 수 있게 될 것이다. 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
저장부 (206) 는 제어부 (204) 의 제어에 의해서 애플리케이션에 대한 정보를 저장한다. 예를 들어, 저장부 (206) 는 애플리케이션 원본 코드를 저장하고 있으며, 다양한 변이 코드에 대한 정보, 변이 코드 이력 정보, 변이 코드가 적용된 기존 애플리케이션들 코드등을 저장할 수 있다. The
여기에 설명되는 다양한 실시형태는 예를 들어, 소프트웨어, 하드웨어 또는 이들의 조합된 것을 이용하여 컴퓨터 또는 이와 유사한 장치로 읽을 수 있는 기록매체 내에서 구현될 수 있다.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
타깃 단말 (100) 은 먼저 애플리케이션 저장 서버 (300) 로부터 애플리케이션을 다운로드/수신한다 (S210). 여기에서 애플리케이션 저장 서버 (300) 은 제 3의 서버일 수 있고, 또는 애플리케이션 변이 서버 (200) 과 하나의 기기로 구현될 수도 있다. 또한, 선택적으로 타깃 단말 (100) 의 사용자가 수동으로 별도의 기기를 이용하여 애플리케이션을 직접 설치할 수도 있다. 이 경우, 애플리케이션에 대한 여러 정보는 애플리케이션 변이 서버 (200) 에 직접 수동으로 등록/저장할 필요가 있다.The
애플리케이션 변이 서버 (200) 는 애플리케이션 저장 서버 (300) 로부터 애플리케이션 관리 정보를 수신한다 (S220). 애플리케이션 관리 정보는 애플리케이션 인증 정보, 애플리케이션 원본 코드, 타깃 단말 (100) 에 대한 정보, 애플리케이션의 등록자, 빌드 번호, 시간, 보호대상 소스코드, 보호대상 바이너리코드등을 수신할 수 있다. 애플리케이션 인증 정보는 애플리케이션 변이 서버 (200) 이 타깃 단말 (100) 의 애플리케이션에 대해서 액세스하기 위해서 필요한 정보일 수도 있다. 애플리케이션 원본 코드는 애플리케이션이 변이 코드가 적용되지 않는 애플리케이션 원본 상태의 정보이다. 변이 코드가 적용되지 않은 처음 상태에서는 타깃 단말 (100) 과 애플리케이션 변이 서버 (200) 이 저장한 애플리케이션 원본 코드는 일치한다. The
애플리케이션 변이 서버 (200) 는 애플리케이션 관리 정보를 저장한다 (S240). 관리할 대상인 애플리케이션이 하나 이상이거나, 관리할 타깃 단말 (100) 이 하나 이상인 경우, 별도로 관리할 수도 있고, 그렇지 않을 수도 있다. 애플리케이션 변이 서버 (200) 에 저장되는 애플리케이션은 타깃 단말 처럼 반드시 실행 가능한 상태로 저장될 필요는 없다. 애플리케이션의 코드 자체로 저장될 수도 있다. The
선택적 과정으로, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 애플리케이션 에이전트 프로그램을 제공할 수 있다 (S250). 이 과정의 선행 동작으로 애플리케이션 변이 서버 (200) 와 타깃 단말 (100) 간에는 통신 세션이 형성되어 있는 상태이다. 이와 달리, 타깃 단말 (100) 에 에이전트 프로그램을 직접 설치할 수도 있다. 에이전트 프로그램은 타깃 단말 (100) 의 제어부 (104) 또는 저장부 (106) 에 설치되게 되며, 제어부 (104) 의 제어에 의해서 구동된다. 에이전트 프로그램 (105) 은 애플리케이션 변이 서버 (200) 로부터의 변이 코드를 적용하는 명령 또는 관련 정보를 수신한 경우, 변이 코드를 실제 적용하는 기능을 수행한다. 즉, 애플리케이션 변이 서버 (200) 로부터의 변이 코드와 관련된 외부 제어를 타깃 단말 (100) 에서 수행하는 역할을 한다.As an optional process, the
에이전트 프로그램 (105) 이 타깃 단말 (100) 에 설치된 경우 (S260), 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 의 제어에 따라서 애플리케이션을 변이시킬 수 있는 상태로 준비된다.When the
여기에서, 애플리케이션에 대해서는 특별한 한정은 없으며, 애플리케이션 변이 서버 (200) 가 애플리케이션에 대한 코드 정보만 정확하게 인지할 수 있으면 된다. 또한 애플리케이션을 수행하는 주체와 애플리케이션을 관리하는 주체 (변이 코드를 생성하는 주체)는 반드시 같을 필요없다.Here, there is no particular limitation on the application, and it is only required that the
도 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
애플리케이션 변이 서버 (200) 와 타깃 단말 (100) 간에 통신 세션이 계속 연결될 수도 있으나, 이 경우, 전력 소비 및 보안적 측면에서 바람직하지 않다. 따라서, 변이 코드를 적용할 시점에만 통신 세션이 형성되는 것을 이하에서 설명한다. A communication session may be continuously connected between the
타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 통신 세션 개시 요청을 송신한다 (S310). 통신 세션 개시 요청과 함께 타깃 단말에 대한 정보 및 애플리케이션 인증 코드등을 송신한다.The
애플리케이션 인증 코드는 몇 가지 데이터를 조합하여 만든 데이터 값 (예를 들어 랜덤 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
애플리케이션 변이 서버 (200) 는 임시 토큰을 생성한다 (S340). 임시 토큰은 애플리케이션 변이 서버가 제공하는 정보에 대해서 타깃 단말 (100) 이 인증하기 위한 정보이다. 임시 토큰을 생성하는 방식은 다양하게 존재할 수 있다. 예를 들어, OTP (One time password) 방식을 이용할 수 있다. 이때 임시 토큰은 다양한 방식으로 암호화될 수 있으며, 이때 암호화 방식은 타깃 단말 (100) 과 사전에 합의될 수 있다.The
애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 임시 토큰을 제공한다 (S350). 이때, 임시 토큰은 타깃 단말 (100) 과 사전 공유된 암호화 방식으로 암호화되는 것이 바람직하다. 토큰이 암호화된 경우, 타깃 단말 (100) 은 임시 토큰을 복호화한다. The
타깃 단말 (100) 은 임시 토큰을 저장한다 (S370). 이때 저장되는 임시 토큰은 이후 사용될 변이 코드와 관련된 임시 토큰과의 비교를 위해서 사용된다. The
애플리케이션 변이 서버 (200) 는 코드 관리부 (205) 의 판단에 따라서 변이 코드를 포함한 송신 정보를 생성한다 (S360). 코드 관리부 (205) 는 일정 주기 (예를 들어, 24시간) 가 도달한 경우, 변이 코드를 생성하는 것이 바람직하다. 하지만, 특정 이벤트가 발생한 것으로 알려졌을 경우 (예를 들어, 해킹 시도) 변이 코드를 생성할 수도 있다.The
애플리케이션 변이 서버 (200) 는 생성된 송신 정보에 임시 토큰을 삽입한다 (S365). 이때 임시 토큰은 상기 설명한 바와 같이 암호화되는 것이 바람직하다.The
애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 송신 정보를 제공한다 (S375).The
타깃 단말 (100) 은 송신 정보로부터 임시 토큰을 추출하고 (S380), 임시 토큰이 암호하된 경우에 복호화한다. The
타깃 단말 (100) 은 추출한 임시 토큰과 저장한 임시 토큰의 일치 여부를 확인하고 (S385), 불일치하는 경우 종료하며, 송신 정보를 삭제한다.The
일치하는 경우, 송신 정보를 확인하며, 변이 코드를 확인한다 (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
타깃 단말 (100) 과 애플리케이션 변이 서버 (200) 는 통신 세션이 개시된 상태를 전제로 한다.The
애플리케이션 변이 서버 (200) 의 제어부 (204) 가 애플리케이션 변이 주기인지를 확인한다 (S402). 변이 주기는 사용자가 다양하게 설정할 수 있으며, 예를 들어, 24시간으로 설정할 수 있다. It is confirmed whether the
변이 주기가 도달한 경우, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 애플리케이션 상태 확인 요청을 전달한다 (S404). When the mutation period has arrived, the
타깃 단말 (100) 은 상태 확인 요청에 응답하여 애플리케이션 상태를 확인하며 (S406), 애플리케이션이 변이 가능 상태인지를 판단한다 (S408). 애플리케이션이 만약 비정상인 경우로 애플리케이션이 구동실패하거나, 네트워크 단절되거나, 모듈의 정합성이 비정상등인 경우를 변이 불가능한 상태로 판단할 수 있다.The
변이 가능 상태로 판단시, 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 변이 가능 상태임을 전달한다 (S410). When it is determined that the
애플리케이션 변이 서버 (200) 의 코드 관리부 (205) 는 변이 코드를 생성한다 (S412). 변이 코드를 생성하는 방식은 랜덤화 방식을 적용한다. The
애플리케이션 변이 서버 (200) 는 생성된 변이 코드를 저장부 (206) 에 저장한다 (S414). 이때, 애플리케이션 변이 서버 (200) 의 저장부 (206) 에는 직전 저장된 변이 코드 뿐 아니라 기존에 생성된 변이 코드들을 모두 저장할 수 있다. 그에 따라서, 변이 코드 또는 애플리케이션에 이상이 생긴 경우, 적절하게 이전 변이 코드 또는 애플리케이션을 통해서 원복할 수 있다.The
애플리케이션 변이 서버 (200) 는 변이 코드등을 포함한 변이 명령을 타깃 단말 (100) 에 송신한다.The
변이 코드가 포함된 변이 명령이 수신된 경우, 도면에는 미도시되나, 도 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
타깃 단말 (100) 은 변이 코드가 적용된 애플리케이션을 실행한다 (S422).The
애플리케이션을 변이한 후 재구동 시 일정 시간 (보통 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
저장부 (206) 는 애플리케이션 이름, 모듈 이름, 랜덤화 시간(변이 코드 생성 시간), 실패 여부, 언어 코드, 파일 명등의 정보를 저장할 수 있다.The
만약 변이 코드가 적용된 애플리케이션에 에러가 발생한 경우 타깃 단말 (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
실패한 경우, 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 실패 정보를 전달하고 저장부 (206) 에 그 이력을 저장한다 (S430).In case of failure, the
도 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
본 발명에 따른 애플리케이션 변이 방법은 하나 이상의 타깃 단말에 하나 이상의 애플리케이션이 설치된 경우에도 적용될 수 있다. 이 경우에 애플리케이션 변이 서버 (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
도 5에 설명된 예는 하나의 타깃 단말 (100) 에 설치된 2개의 애플리케이션에 대한 변이 기능을 수행하는 일 예이다.The example illustrated in FIG. 5 is an example of performing a mutating function for two applications installed in one
타깃 단말 (100) 과 애플리케이션 변이 서버 (200) 간에는 통신 세션이 연결된 상태이다. A communication session is connected between the
애플리케이션 변이 서버 (200) 의 코드 관리부 (205) 는 1번 애플리케이션에 대한 변이 주기 도달 여부 (S501) 또는 2번 애플리케이션에 대한 변이 주기 도달 여부 (S511) 을 서로 독립적으로 판단한다.The
S501에서, 1번 애플리케이션에 대한 변이 주기가 도달한 경우, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 1번 애플리케이션에 대한 상태 확인 요청을 송신한다 (S502).In step S501, when the mutation period for
S511에서, 2번 애플리케이션에 대한 변이 주기가 도달한 경우, 애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 2번 애플리케이션에 대한 상태 확인 요청을 송신한다 (S512).In step S511, when the mutation period for the second application is reached, the
상태 확인 요청을 수신한 경우, 타깃 단말 (100) 의 제어부 (104) 의 에이전트 프로그램은 1번 또는 2번 애플리케이션에 대한 변이 가능 상태를 확인한다 (S521). 이때, 타깃 단말 (100) 의 에이전트 프로그램은 1번 요청 또는 2번 요청 중 선순위 요청을 판단한다. 도면에서는, S512 이후에 1번 애플리케이션에 대한 변이 가능 상태를 확인하는 것처럼 도시되어 있으나, S512 이전 및 S502 이후에 1번 애플리케이션에 대해서만 변이 가능 상태를 선택적으로 확인할 수 있다.When receiving the status confirmation request, the agent program of the
도면에서처럼, 선순위가 1번 애플리케이션에 대한 것인 경우, 1번 애플리케이션에 대한 변이 동작을 수행할 수 있다. 즉, 에이전트 프로그램은 1번 애플리케이션이 변이 가능 상태임을 전달한다 (S531). 애플리케이션 변이 서버 (200) 는 1번 애플리케이션에 대한 변이 코드를 생성하고, 관련 동작을 수행하며, 그 과정은 도 4에서 설명된 과정과 동일하다.As shown in the figure, if the priority is for
애플리케이션 변이 서버 (200) 가 1번 애플리케이션에 대한 변이 코드를 타깃 단말 (100) 에 전달한 경우 (S532), 타깃 단말 (100)의 에이전트 프로그램은 변이 코드를 1번 애플리케이션에 적용한다 (S541). 1번 애플리케이션에 대한 변이 코드 동작과 관련된 전반 동작이 마무리된 경우, 2번 애플리케이션에 대한 동작을 수행한다.When the
타깃 단말 (100) 의 에이전트 프로그램은 1번 애플리케이션에 대한 변이 코드 대체 동작이 마무리된 후, 애플리케이션 변이 서버 (200) 에 2번 애플리케이션 변이 가능 상태임을 전달한다 (S551). 애플리케이션 변이 서버 (200) 는 2번 애플리케이션에 대한 변이 코드를 생성하고, 관련 동작을 수행하며, 그 과정은 도 4에서 설명된 과정과 동일하다.The agent program of the
애플리케이션 변이 서버 (200) 가 2번 애플리케이션에 대한 변이 코드를 타깃 단말 (100) 에 전달한 경우 (S552), 타깃 단말 (100)의 에이전트 프로그램은 변이 코드를 2번 애플리케이션에 적용한다 (S541).In a case where the
도면에서는, 상태 확인 요청이 먼저 온 것을 기준으로 적용하였으나, 다른 방식이 적용될 수도 있다. 예를 들어, 사전에 규정한 우선 순위가 높은 애플리케이션을 최우선으로 적용할 수도 있다.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
타깃 단말 (100) 의 제어부 (104) 는 타깃 단말내에 특정 이벤트가 발생했는 지를 판단한다 (S601). 이벤트가 발생한 경우, 제어부 (104) 는 이벤트의 종류를 판단한다 (S602). 이벤트로는 외부 해킹 시도, 애플리케이션 실행 오류, 애플리케이션 코드 이상등 타깃 단말 (100) 에 발생되는 다양한 현상을 포함할 수 있다. 제어부 (104) 는 사전에 변이 코드를 적용할 이벤트가 규정할 수 있다. 가장 대표적인 경우로, 외부 해킹 시도를 변이 코드를 적용할 이벤트로 규정될 수 있다.The
해킹과 같은 이벤트로 판단한 경우, 타깃 단말 (100) 은 애플리케이션 변이 서버 (200) 에 이벤트 감지 알림 신호를 전달한다 (S603). If it is determined that the event is an event such as hacking, the
애플리케이션 변이 서버 (200) 가 이벤트 감지 알림 신호를 수신한 경우, 애플리케이션 변이 서버 (200) 는 선택적으로 이벤트가 변이 코드를 적용할 이벤트인지를 한번 더 판단할 수 있다.When the
애플리케이션 변이 서버 (200) 는 해킹과 같은 이벤트에 대한 이력을 저장하고, 애플리케이션에 대한 변이 코드를 생성한다 (S604). 생성된 변이 코드는 저장부 (206) 에 저장한다 (S605).The
애플리케이션 변이 서버 (200) 는 타깃 단말 (100) 에 애플리케이션 상태 확인 요청을 송신한다 (S606) 에이전트 프로그램은 애플리케이션에 대한 현재 상태를 확인하고 (S607), 변이 가능 상태로 확인시 (S608), 애플리케이션 변이 서버 (200) 에 변이 가능 상태임을 전달한다 (S609).The
애플리케이션 변이 서버 (200) 는 애플리케이션에 대한 변이 코드를 타깃 단말 (100) 에 전달하고 (S610), 에이전트 프로그램은 애플리케이션에 대한 변이 코드로 애프리케이션의 일부 코드를 대체하고 해당 애플리케이션을 실행한다 (S611).The
도 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
모듈 측면에서 보면, (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
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.
상기 제어부는 난독화 방식으로 상기 변이 코드를 생성하며,
상기 난독화 방식은 레이아웃 난독화, 데이터 난독화, 컨트롤 난독화, 예방 (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.
상기 제어부는,
일정 주기가 도달한 경우, 상기 타깃 단말에 애플리케이션 상태 확인 요청을 상기 통신부가 송신하도록 제어하고,
상기 상태 확인 요청에 응답하여 상기 타깃 단말의 애플리케이션이 변이 가능 상태로 판단되면 상기 사전 결정된 일부 코드를 재변경한 변이 코드를 생성하며,
상기 재변경한 변이 코드는 기존 변이 코드와 상이한, 애플리케이션 변이 서버.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.
상기 타깃 단말에 설치된 애플리케이션은 다수의 코드로 구성되며, 상기 타깃 단말에 송신된 변이 코드는 상기 타깃 단말에 설치된 애플리케이션을 구성하는 다수의 코드 중 사전 결정된 일부 코드를 대체하며,
상기 애플리케이션 변이 서버에 저장된 애플리케이션 및 애플리케이션을 구성하는 상기 다수의 코드와 상기 타깃 단말에 설치된 애플리케이션 및 애플리케이션을 구성하는 상기 다수의 코드는 상호 대응되며,
상기 애플리케이션의 원본 애플리케이션과 상기 변이 코드로 일부 코드가 대체된 애플리케이션의 기능 동작은 동일한 것을 특징으로 하는, 애플리케이션 변이 서버.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.
상기 제어부가 애플리케이션을 구성하는 다수의 코드 중 상기 변이 코드로 변경될 상기 일부 코드를 사전 결정하며, 상기 일부 코드를 제외한 다수의 코드는 변경되지 않는 것을 특징으로 하는, 애플리케이션 변이 서버.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.
상기 제어부는,
상기 애플리케이션의 실행 가능 상태 여부를 확인하며,
실행 가능 상태 확인 관련 정보를 상기 통신부를 통하여 상기 애플리케이션 변이 서버에 송신하는, 애플리케이션 실행 단말.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.
상기 제어부는,
상기 애플리케이션의 상기 일부 코드를 상기 변이 코드로 대체 후 상기 애플리케이션의 정상 실행 여부를 판단하여 오류 발생을 확인한 경우, 상기 저장부에 저장된 정보들을 활용하여 상기 변이 코드로 대체되기 직전의 상태로 애플리케이션을 복구하는, 애플리케이션 실행 단말.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.
일정 주기가 도달한 경우, 상기 서버가 상기 타깃 단말에 애플리케이션 상태 확인 요청을 송신하는 단계;
상기 상태 확인 요청에 응답하여 상기 타깃 단말이 상기 타깃 단말의 애플리케이션이 변이 가능 상태인지 판단하는 단계;
변이 가능 상태로 판단시, 상기 타깃 단말이 상기 서버에 변이 가능 상태 신호를 송신하는 단계;
상기 변이 가능 상태 신호에 응답하여 상기 사전 결정된 일부 코드를 재변경한 변이 코드를 생성하는 단계; 및
상기 재변경한 변이 코드를 상기 타깃 단말에 송신하는 단계를 더 포함하며,
상기 재변경한 변이 코드는 기존 변이 코드와 상이한, 애플리케이션 변이 방법.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.
상기 변이 코드는 난독화 방식으로 생성되며,
상기 난독화 방식은 레이아웃 난독화, 데이터 난독화, 컨트롤 난독화, 예방 (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.
상기 타깃 단말은 상기 애플리케이션의 상기 일부 코드를 상기 변이 코드로 대체 후 상기 애플리케이션의 정상 실행 여부를 판단하는 단계; 및
상기 애플리케이션 실행에 오류 발생을 확인한 경우, 상기 타깃 단말은 상기 변이 코드로 대체되기 직전의 상태로 애플리케이션을 복구하는 단계를 더 포함하는, 애플리케이션 변이 방법.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.
상기 변이 코드 생성 단계 이전에 상기 타깃 단말에 변이 가능 상태 확인 요청을 송신하는 단계;
상기 변이 가능 상태 확인에 대한 응답을 수신하는 단계를 더 포함하는, 애플리케이션 변이 방법.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.
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)
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)
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 |
-
2017
- 2017-11-22 KR KR1020170156035A patent/KR101885146B1/en active IP Right Grant
Patent Citations (4)
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)
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 |