KR20160068480A - Method and apparatus for protecting resource of application program - Google Patents
Method and apparatus for protecting resource of application program Download PDFInfo
- Publication number
- KR20160068480A KR20160068480A KR1020140174293A KR20140174293A KR20160068480A KR 20160068480 A KR20160068480 A KR 20160068480A KR 1020140174293 A KR1020140174293 A KR 1020140174293A KR 20140174293 A KR20140174293 A KR 20140174293A KR 20160068480 A KR20160068480 A KR 20160068480A
- Authority
- KR
- South Korea
- Prior art keywords
- application program
- operating system
- resource
- access
- memory page
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012545 processing Methods 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 210000000707 wrist Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- 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/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Storage Device Security (AREA)
Abstract
Description
본 발명은 응용 프로그램의 자원을 운영 체제 또는 다른 프로그램으로부터 보호하는 방법 및 장치에 대한 것이다.The present invention is directed to a method and apparatus for protecting an application's resources from an operating system or other programs.
운영 체제는 하드웨어와 응용 프로그램 간의 인터페이스 역할을 하면서, CPU, 주기억 장치, 입출력 장치 등의 컴퓨터 자원을 관리한다. 운영 체제는 하드웨어를 제어하고 컴퓨터 자원을 관리하기 위하여 응용 프로그램보다 높은 권한을 가지고 동작할 수 있다.The operating system manages computer resources such as CPU, main memory, and input / output devices while serving as an interface between hardware and application programs. The operating system can operate with higher privileges than the application to control hardware and manage computer resources.
그러나, 운영 체제의 보안 취약성을 이용하여, 악성 소프트웨어가 운영 체제에 침입하게 되면, 악성 소프트웨어는 운영 체제의 최상위 권한을 이용하여 응용 프로그램 및 컴퓨터의 자원에 침입할 수 있다. However, when exploiting the security vulnerabilities of the operating system, malicious software can infiltrate the applications and computer resources by using the top level privileges of the operating system when malicious software enters the operating system.
운영 체제의 기능이 확대되고 발전함에 따라 운영 체제의 크기가 커지고, 또한, 그에 따라 운영 체제의 보안 취약성이 증가하고 있다. 따라서, 해킹된 운영 체제가 응용 프로그램의 자원에 대해 접근하려고 하는 경우, 응용 프로그램의 자원을 보호할 수 있는 방법이 필요하다.As the functionality of the operating system expands and evolves, the size of the operating system increases, and as a result, security vulnerabilities of the operating system are increasing. Therefore, if a hacked operating system attempts to access an application's resources, a method is needed to protect the resources of the application.
본 발명은 응용 프로그램의 자원을 보호하는 방법 및 장치에 관한 것으로, 구체적으로, 응용 프로그램의 자원에 대한 운영 체제 또는 다른 프로그램의 접근으로부터 응용 프로그램의 자원을 보호하는 방법 및 장치에 관한 것이다.FIELD OF THE INVENTION The present invention relates to a method and apparatus for protecting resources of an application program, and more particularly, to a method and apparatus for protecting resources of an application program from accessing an operating system or another program with respect to an application program resource.
일 실시 예에 의한 디바이스가 응용 프로그램의 자원을 보호하기 위한 방법은, 보호 대상으로 설정된 응용 프로그램이 실행되는 동안, 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하는 단계; 및 상기 판단 결과에 따라, 상기 응용 프로그램의 자원에 대한 접근 권한을 제어하는 단계를 포함한다.The method for protecting a resource of an application program according to an embodiment includes the steps of: determining whether an operating system is in a state of being able to access a resource of the application program while an application program set as a protection target is executed; And controlling access rights to resources of the application program according to the determination result.
더하여, 상기 자원에 대한 접근 권한을 제어하는 단계는 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인 경우, 상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 대한 접근 권한 정보 및 상기 응용 프로그램의 레지스터 값을 백업하는 단계; 상기 메모리 페이지에 대한 접근 권한을 재설정하고, 상기 레지스터 값을 삭제하는 단계를 포함한다.In addition, the step of controlling access rights to the resources may include access rights information on a memory page allocated as a resource of the application program and access privilege information on a memory page allocated to the application program when the operating system can access resources of the application program. Backing up the register value of the register; Resetting the access right to the memory page, and deleting the register value.
더하여, 상기 메모리 페이지에 대한 접근 권한 정보 및 상기 레지스터 값 중 적어도 하나가 백업되어 있는 경우, 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 없는 상태로 전환되면, 상기 백업된 값을 이용하여 상기 메모리 페이지에 대한 접근 권한 정보 및 상기 레지스터 값 중 적어도 하나를 복구하는 단계를 더 포함한다.In addition, when at least one of the access right information and the register value for the memory page is backed up, if the operating system is changed into a state in which the operating system can not access the resource of the application program, Recovering at least one of access privilege information for the memory page and the register value.
더하여, 상기 판단하는 단계는 상기 응용 프로그램의 실행 모드가 커널 모드인지 유저 모드인지 여부에 기초하여, 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하는 단계를 포함한다.In addition, the determining step may include determining whether the operating system is in a state in which the operating system can access the resource of the application program, based on whether the execution mode of the application program is a kernel mode or a user mode.
더하여, 상기 운영 체제가 시스템 호출을 처리하기 위하여, 상기 응용 프로그램의 자원에 대한 접근을 시도하는 단계; 상기 시스템 호출에 기초하여, 상기 자원에 대한 접근 권한을 제어하는 단계를 더 포함한다.In addition, the operating system attempts to access the resource of the application program to process the system call; And controlling access rights to the resource based on the system call.
더하여, 상기 자원에 대한 접근 권한을 제어하는 단계는 상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 저장된 데이터를 암호화할 지 여부를 결정하는 단계; 상기 결정된 결과에 따라, 상기 데이터를 암호화한 후, 상기 운영 체제의 상기 메모리 페이지에 대한 접근을 허용하거나, 상기 데이터를 상기 운영 체제에 제공하는 단계를 더 포함한다. In addition, controlling access to the resource may include determining whether to encrypt data stored in a memory page allocated to the resource of the application program, In accordance with the determined result, encrypting the data and then allowing access to the memory page of the operating system, or providing the data to the operating system.
더하여, 상기 운영 체제가 시스템 호출을 처리하기 위해, 상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 대한 접근을 시도함을 감지하는 단계; 상기 시스템 호출에 의해 처리될 데이터의 원본 데이터를 획득하는 단계; 상기 운영 체제에 의해 상기 시스템 호출에 대한 처리가 완료되면, 상기 시스템 호출에 따라 처리된 데이터를 획득하는 단계; 상기 원본 데이터의 해시값과 상기 시스템 호출에 따라 처리된 데이터의 해시값을 비교함으로써, 상기 시스템 호출에 따라 처리된 데이터의 무결성을 검증하는 단계를 더 포함한다.In addition, detecting that the operating system attempts to access a memory page allocated to a resource of the application program to process a system call; Obtaining original data of data to be processed by the system call; When the processing for the system call is completed by the operating system, obtaining the processed data according to the system call; And verifying the integrity of the data processed according to the system call by comparing the hash value of the original data with the hash value of the processed data according to the system call.
더하여, 상기 응용 프로그램이 보호 대상으로 설정되면, 상기 응용 프로그램의 자원이 할당된 메모리 페이지는 보호 대상으로 등록된다.In addition, if the application program is set as a protection target, the memory page to which the resource of the application program is allocated is registered as a protection target.
더하여, 상기 운영 체제에 의해 상기 응용 프로그램의 자원으로 새로운 메모리 페이지가 할당됨을 감지하는 단계; 상기 할당된 새로운 메모리 페이지가 상기 보호 대상으로 등록된 메모리 페이지와 동일하다고 판단되면, 상기 새로운 메모리 페이지에 대한 할당을 해제하는 단계를 더 포함한다.In addition, detecting that a new memory page is allocated to the resource of the application program by the operating system; And releasing the allocation of the new memory page if it is determined that the allocated new memory page is the same as the memory page registered as the protection target.
더하여, 상기 운영 체제가 상기 응용 프로그램의 페이지 테이블을 수정하는 경우, 상기 수정된 페이지 테이블에 따라 상기 응용 프로그램의 자원으로 할당된 메모리 페이지를 보호 대상으로 등록하거나 보호 대상에서 해제하는 단계를 더 포함한다.In addition, when the operating system corrects the page table of the application program, the step of registering or releasing the memory page allocated as the resource of the application program as a protection target according to the modified page table .
더하여, 상기 운영 체제 대신 다른 응용 프로그램이 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하고, 상기 판단 결과에 따라 상기 응용 프로그램의 자원에 대한 접근 권한을 수행한다.In addition, it determines whether or not another application program can access the resource of the application program in place of the operating system, and performs an access right to the resource of the application program according to the determination result.
일 실시 예에 의한 응용 프로그램의 자원을 보호하기 위한 디바이스는 보호 대상으로 설정되어 실행 중인 응용 프로그램; 상기 응용 프로그램에서 발생된 시스템 호출을 처리하는 운영 체제; 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하고, 상기 판단 결과에 따라, 상기 응용 프로그램의 자원에 대한 접근 권한을 제어하는 응용 프로그램 보호부; 상기 응용 프로그램의 자원을 포함하는 하드웨어를 포함한다.A device for protecting a resource of an application program according to an exemplary embodiment includes an application program set as a protection target and running; An operating system for processing a system call generated in the application program; An application program protection unit for determining whether the operating system is in a state of being able to access resources of the application program and controlling an access right to resources of the application program according to the determination result; And hardware comprising the resources of the application program.
일 실시 예에 의한 디바이스가 응용 프로그램의 자원을 보호하기 위한 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체는 보호 대상으로 설정된 응용 프로그램이 실행되는 동안, 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하는 단계; 및 상기 판단 결과에 따라, 상기 응용 프로그램의 자원에 대한 접근 권한을 제어하는 단계를 포함한다.A computer-readable recording medium on which a program for implementing a method for protecting a resource of an application program according to an exemplary embodiment of the present invention is recorded includes a program code for causing an operating system to execute a program The method comprising: determining whether the mobile terminal is in a state capable of accessing the mobile terminal; And controlling access rights to resources of the application program according to the determination result.
일 실시 예에 의한 하드웨어와 결합되어 디바이스가 응용 프로그램의 자원을 보호하기 위한 방법을 실행시키는 컴퓨터 프로그램은 보호 대상으로 설정된 응용 프로그램이 실행되는 동안, 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하는 단계; 및 상기 판단 결과에 따라, 상기 응용 프로그램의 자원에 대한 접근 권한을 제어하는 단계를 포함한다.A computer program that, when combined with hardware in accordance with one embodiment, executes a method for a device to protect the resources of an application program may cause the operating system to access resources of the application program while the protected application is running Determining whether the state is a state; And controlling access rights to resources of the application program according to the determination result.
도 1은 일 실시 예에 의한 응용 프로그램 보호부를 포함하는 디바이스의 내부 구성을 나타낸 블록도이다.
도 2는 일 실시 예에 의한 가상화 기술을 기반으로 구동되는 응용 프로그램 보호부를 포함하는 디바이스의 내부 구성을 나타낸 블록도이다.
도 3은 일 실시 예에 의한 응용 프로그램의 자원에 대한 접근 권한을 제어하는 방법을 나타낸 순서도이다.
도 4는 일 실시 예에 의한 응용 프로그램의 자원에 대한 접근 권한 및 레지스터 값을 제어하는 방법을 나타낸 순서도이다.
도 5는 일 실시 예에 의한 운영 체제가 응용 프로그램의 자원에 접근하여 시스템 호출을 처리하는 방법을 나타낸 순서도이다.1 is a block diagram illustrating an internal configuration of a device including an application program protection unit according to an embodiment of the present invention.
2 is a block diagram illustrating an internal configuration of a device including an application program protection unit driven based on a virtualization technology according to an embodiment.
FIG. 3 is a flowchart illustrating a method for controlling access rights to resources of an application program according to an embodiment.
4 is a flowchart illustrating a method of controlling an access right and a register value of an application program according to an exemplary embodiment of the present invention.
5 is a flowchart illustrating a method for an operating system to access a resource of an application program and process a system call according to an exemplary embodiment of the present invention.
다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.In the following description and the accompanying drawings, detailed description of well-known functions or constructions that may obscure the subject matter of the present invention will be omitted. It should be noted that the same constituent elements are denoted by the same reference numerals as possible throughout the drawings.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.The terms and words used in the present specification and claims should not be construed in an ordinary or dictionary sense, and the inventor shall properly define the terms of his invention in the best way possible It should be construed as meaning and concept consistent with the technical idea of the present invention. Therefore, the embodiments described in the present specification and the configurations shown in the drawings are merely the most preferred embodiments of the present invention, and not all of the technical ideas of the present invention are described. Therefore, It is to be understood that equivalents and modifications are possible.
첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 또는 개략적으로 도시되었으며, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 본 발명은 첨부한 도면에 그려진 상대적인 크기나 간격에 의해 제한되어지지 않는다.In the accompanying drawings, some of the elements are exaggerated, omitted or schematically shown, and the size of each element does not entirely reflect the actual size. The invention is not limited by the relative size or spacing depicted in the accompanying drawings.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 "부"는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.When an element is referred to as "including" an element throughout the specification, it is to be understood that the element may include other elements as well, without departing from the spirit or scope of the present invention. Also, as used herein, the term "part " refers to a hardware component such as software, FPGA or ASIC, and" part " However, "part" is not meant to be limited to software or hardware. "Part" may be configured to reside on an addressable storage medium and may be configured to play back one or more processors. Thus, by way of example, and not limitation, "part (s) " refers to components such as software components, object oriented software components, class components and task components, and processes, Subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays and variables. The functions provided in the components and "parts " may be combined into a smaller number of components and" parts " or further separated into additional components and "parts ".
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly illustrate the present invention, parts not related to the description are omitted, and similar parts are denoted by like reference characters throughout the specification.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명한다.Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings.
도 1은 일 실시 예에 의한 응용 프로그램 보호부를 포함하는 디바이스의 내부 구성을 나타낸 블록도이다.1 is a block diagram illustrating an internal configuration of a device including an application program protection unit according to an embodiment of the present invention.
도 1을 참조하면, 디바이스(100)는 응용 프로그램(110), 운영 체제(120), 응용 프로그램 보호부(130) 및 하드웨어(140)를 포함하여 구성될 수 있다. 도면들과 후술되어 있는 실시예에서, 디바이스(100)에 포함되어 있는 개개의 구성 요소는 물리적 형태 또는 논리적 형태로 분산되어 배치될 수도 있고, 통합될 수도 있다.Referring to FIG. 1, a
일 실시 예에 의한 디바이스(100)는 예를 들어, 휴대폰, 태블릿 PC, PDA, MP3 플레이어, 키오스크, 전자 액자, 네비게이션 장치, 디지털 TV, 손목 시계(Wrist watch), 스마트 글라스(smart glass)와 같은 웨어러블 기기(Wearable device) 등의 다양한 유형의 장치일 수 있다.The
응용 프로그램(110)은 특정한 작업을 처리하기 위해 디바이스(100)에서 실행될 수 있는 프로그램이다. 응용 프로그램(110)은 운영 체제(120)에 의해 할당된 하드웨어 자원을 기반으로 동작할 수 있다. 또한, 응용 프로그램(110)은 코드 영역, 텍스트 영역, 데이터 파일, 라이브러리 등을 포함하는 다양한 컴포넌트들로 구성될 수 있다. 예를 들면, 응용 프로그램(110)은 운영 체제(120)를 기반으로 수행되는 소프트웨어, 프로세스, 쓰레드(thread), 가상 머신 등일 수 있으나, 이에 한정되는 것은 아니다.
운영 체제(120)는 응용 프로그램(110)의 실행에 필요한 자원을 할당하거나 해제할 수 있다. 또한, 운영 체제(120)는 복수 개의 응용 프로그램(110)들이 원활히 동작할 수 있도록 스케줄링(scheduling)을 수행함으로써, 복수 개의 응용 프로그램(110)들이 동시에 동작할 수 있다. 운영 체제(120)는 응용 프로그램(110)보다 높은 권한을 가지고 하드웨어 및 하나 이상의 응용 프로그램(110)을 제어할 수 있다.The
응용 프로그램(110)은 운영 체제(120)에 의해 할당된 하드웨어 영역, 예를 들면, 응용 프로그램(110)의 자원으로 할당된 일부 메모리 영역에만 직접 접근할 수 있고, 이외 자신에게 할당되지 않은 하드웨어 영역에는 직접 접근할 수 없을 수 있다. 반면에, 운영 체제(120)는 응용 프로그램(110)보다 높은 권한을 가지고 있으므로, 응용 프로그램(110)의 자원으로 할당되지 않은 영역에도 접근할 수 있다. 따라서, 응용 프로그램(110)은 운영 체제(120)에 의해 실행 가능한 작업을 운영 체제(120)에 요청하기 위한 시스템 호출(system call)을 이용하여, 운영 체제(120)를 통해 자신에게 할당되지 않은 하드웨어 영역에 접근할 수 있다. 응용 프로그램(110)은 운영 체제(120)를 통해 자신에게 할당되지 않은 하드웨어 영역에 접근하여, 데이터를 획득하거나, 자신의 자원으로 새롭게 할당할 수 있다.The
그러나, 응용 프로그램(110)에서 발생된 시스템 호출을 처리하는 운영 체제(120)는 응용 프로그램(110)의 자원으로 할당되지 않은 하드웨어 영역뿐만 아니라 응용 프로그램(110)의 자원으로 할당된 하드웨어 영역에도 접근할 수 있다. 따라서, 운영 체제(120)가 악성 소프트웨어에 의해 감염되어 있는 경우, 시스템 호출에 따라 운영 체제(120)가 응용 프로그램(110)의 자원으로 할당된 하드웨어 영역에 접근하게 되면, 응용 프로그램(110)의 자원에 존재하는 데이터가 유출되거나 위변조될 수 있다.However, the
응용 프로그램 보호부(130)는 디바이스(100)에서 실행될 수 있는 응용 프로그램(110)의 자원을 보호할 수 있다. 응용 프로그램(110)의 자원은 디바이스(100)의 리소스(예를 들면, 메모리, 저장 장치, CPU 등) 중에서 응용 프로그램(110)에게 할당된 영역을 의미할 수 있다. 응용 프로그램 보호부(130)는 보호 대상으로 설정된 응용 프로그램(110)의 자원에 대한 접근 권한을 제어함으로써 운영 체제(120)로부터 응용 프로그램(110)의 자원을 보호할 수 있다. 예를 들면, 응용 프로그램 보호부(130)는 보호 대상으로 설정된 응용 프로그램(110)의 자원에 대한 접근 권한 정보를 설정함으로써 자원에 대한 운영 체제(120)의 접근을 차단하거나 부분적으로 허용할 수 있다. The
응용 프로그램 보호부(130)는 운영 체제(120)에 한하지 않고, 다른 응용 프로그램 또는 외부 장치로부터 보호 대상으로 설정된 응용 프로그램(110)의 자원을 보호할 수 있다. 따라서, 응용 프로그램 보호부(130)는 다른 응용 프로그램 또는 외부 장치로부터 응용 프로그램(110)의 자원에 접근할 수 있는 상태이면, 응용 프로그램(110)의 자원에 대한 접근 권한 정보를 설정할 수 있다. 이로써, 응용 프로그램 보호부(130)는 자원에 대한 다른 응용 프로그램 또는 외부 장치의 접근을 차단하거나 부분적으로 허용할 수 있다.The
응용 프로그램 보호부(130)는 운영 체제(120)와 독립적으로 구성되고, 독립적으로 동작함으로써, 악성 소프트웨어에 의해 해킹될 가능성이 있는 운영 체제(120)로부터 응용 프로그램(110)의 자원을 보호할 수 있다. 응용 프로그램 보호부(130)는 Intel VT-x, AMD-V, ARM TrustZone 등을 이용하여 운영 체제(120)와 독립적으로 동작할 수 있다. 예를 들면, 응용 프로그램 보호부(130)는 ARM TrustZone의 안전 영역(secure world)에서 운영 체제(120)와 독립적으로 동작할 수 있다.The
구체적으로, 운영 체제(120)가 보호 대상으로 설정된 응용 프로그램(110)의 자원에 접근할 수 있는 상태가 되면, 응용 프로그램 보호부(130)는 보호 대상으로 설정된 응용 프로그램(110)의 자원에 대한 접근 권한 정보를 재설정할 수 있다. 예를 들면, 응용 프로그램 보호부(130)는 운영 체제(120)가 접근할 수 없도록 자원에 대한 접근 권한 정보를 재설정할 수 있다. 더하여, 운영 체제(120)에 의해 응용 프로그램(110)이 사용하던 레지스터 값이 유출되거나 위변조되는 것을 방지하기 위하여, 응용 프로그램 보호부(130)는 응용 프로그램(110)이 사용하던 레지스터 값을 삭제할 수 있다. Specifically, when the
하드웨어(140)는 운영 체제(120) 및 응용 프로그램(110)이 실행되기 위해 필요한 메모리, 저장 장치, CPU(central processing unit), 레지스터, 입출력 기기 등을 포함할 수 있다. 이에 한하지 않고, 하드웨어(140)는 운영 체제(120) 및 응용 프로그램(110)의 실행을 위한 구성 요소를 더 포함할 수 있다.The
운영 체제(120)는 하드웨어(140)에 포함된 구성 요소 중 일부를 응용 프로그램(110)의 자원으로 할당할 수 있다. 응용 프로그램(110)은 자신의 자원으로 할당된 하드웨어(140)의 일부 영역을 이용하여 필요한 작업을 수행할 수 있다. The
이하 도 2를 참조하여, 응용 프로그램 보호부에서 응용 프로그램의 자원을 보호하는 구체적인 방법에 대해 설명하기로 한다.Hereinafter, referring to FIG. 2, a concrete method for protecting resources of an application program in an application program protection unit will be described.
도 2는 일 실시 예에 의한 가상화 기술을 기반으로 구동되는 응용 프로그램 보호부를 포함하는 디바이스의 내부 구성을 나타낸 블록도이다.2 is a block diagram illustrating an internal configuration of a device including an application program protection unit driven based on a virtualization technology according to an embodiment.
도 2를 참조하면, 디바이스(100)는 응용 프로그램(110), 운영 체제(120), 응용 프로그램 보호부(130)가 구동되는 가상화 머신 모니터(150), 하드웨어(140)를 포함하여 구성될 수 있다. 도면들과 후술되어 있는 실시예에서, 디바이스(100)에 포함되어 있는 개개의 구성 요소는 물리적 형태 또는 논리적 형태로 분산되어 배치될 수도 있고, 통합될 수도 있다.2, the
운영 체제(120)는 페이지 테이블(121)과 시스템 호출 처리부(122)를 포함할 수 있다. The
페이지 테이블(121)은 실행 중인 응용 프로그램(110)의 자원으로 할당된 메모리 페이지에 관한 정보를 포함한다. 메모리 페이지란, 미리 설정된 크기로 나뉘어진 메모리 영역의 각 부분을 의미할 수 있다. 응용 프로그램(110)의 자원으로 할당된 메모리 페이지는 응용 프로그램(110)의 실행 중 발생된 데이터를 저장할 수 있다. 운영 체제(120)는 메모리 페이지들을 응용 프로그램(110)의 자원으로 할당하거나 해제함에 따라 페이지 테이블(121)에 포함된 메모리 페이지에 관한 정보를 갱신할 수 있다. 페이지 테이블(121)은 각 메모리 페이지에 관한 식별 정보와, 게스트 물리 주소를 포함한다. 운영 체제(120)는 게스트 물리 주소를 이용하여 가상화 머신 모니터(150)를 통해 하드웨어(140)에 접근할 수 있다.The page table 121 contains information about the memory pages allocated as resources of the
시스템 호출 처리부(122)는 응용 프로그램(110)에서 발생된 시스템 호출(system call)을 처리한다. 시스템 호출 처리부(122)는 시스템 호출에 따라 페이지 테이블(121)의 게스트 물리 주소를 이용하여, 접근하고자 하는 응용 프로그램(110)의 자원으로 할당된 메모리 페이지에 접근할 수 있다. 시스템 호출 처리부(122)는 응용 프로그램(110)의 자원에 접근하여 시스템 호출에 따른 동작, 예를 들면, 읽기, 쓰기 등의 동작을 수행할 수 있다. 시스템 호출 처리부(122)는 시스템 호출에 따른 작업을 수행한 후, 작업 수행에 대한 결과 값을 응용 프로그램(110) 및 응용 프로그램 보호부(130) 중 적어도 하나로 전달할 수 있다.The system
응용 프로그램 보호부(130)는 가상화 머신 모니터(150)의 가상화 기술을 이용하여 운영 체제(120)와 독립된 공간에서 운영 체제(120)의 권한 보다 높은 최상위 권한으로 동작할 수 있다. 가상화 머신 모니터(150)는 하드웨어(140)와 운영 체제(120) 사이에 위치하고, 운영 체제(120)는 가상화 머신 모니터(150)를 통하여 하드웨어(140)에 접근할 수 있다. 응용 프로그램 보호부(130)는 중첩 페이지 테이블(151)을 이용하여, 응용 프로그램(110)의 자원으로 할당된 영역에 대한 운영 체제(120)의 접근 권한을 제어할 수 있다.The
중첩 페이지 테이블(151, nested page table)은 게스트 물리 주소와 호스트 물리 주소 간의 사상(mapping) 정보 및 호스트 물리 주소와 대응되는 메모리 페이지에 대한 접근 권한 정보를 포함한다. 운영 체제(120)는 접근하고자 하는 메모리 페이지의 게스트 물리 주소를 이용하여 호스트 물리 주소와 대응되는 메모리 페이지에 접근할 수 있다.The nested page table 151 includes mapping information between the guest physical address and the host physical address and access privilege information on the memory page corresponding to the host physical address. The
구체적으로, 응용 프로그램 보호부(130)는 운영 체제(120)가 접근하고자 하는 메모리 페이지의 게스트 물리 주소를 중첩 페이지 테이블(151)을 이용하여 호스트 물리 주소로 변환할 수 있다. 응용 프로그램 보호부(130)는 중첩 페이지 테이블(151)에 포함된 호스트 물리 주소와 대응되는 메모리 페이지에 대한 접근 권한 정보를 재설정 할 수 있다. 재설정된 접근 권한 정보에 따라 운영 체제(120)의 메모리 페이지에 대한 접근이 제어될 수 있다. 중첩 페이지 테이블(151)에 포함된 접근 권한 정보에 따라, 호스트 물리 주소와 대응되는 메모리 페이지에서 운영 체제(120)의 읽기, 쓰기 또는 실행 동작이 제어될 수 있다. Specifically, the application
중첩 페이지 테이블(151)에 포함된 접근 권한 정보는 호스트 물리 주소와 대응되는 메모리 페이지에 대한 읽기, 쓰기 및 실행 동작에 대한 권한 비트(permission bits)를 포함한다. 읽기 동작은 메모리 페이지에 저장된 데이터를 읽는 동작을 의미한다. 쓰기 동작은 메모리 페이지에 소정의 데이터를 저장하는 동작을 의미한다. 실행 동작은 메모리 페이지에 저장된 데이터를 실행시키는 동작을 의미한다. 권한 비트는 각 동작 별로 존재할 수 있으며, 0 또는 1의 값을 가질 수 있다. 예를 들어, 읽기 동작에 대한 권한 비트 값이 0의 값을 가지는 경우, 해당 메모리 페이지에서의 읽기 동작은 허여되지 않는다. 반면, 읽기 동작에 대하여 권한 비트 값이 1의 값을 가지는 경우, 해당 메모리 페이지에서의 읽기 동작은 허여된다. 메모리 페이지에 대한 접근 권한 정보는 접근하는 주체를 구분하지 않고, 메모리 페이지에 대한 동작 별로 다르게 설정될 수 있다. 다만, 이에 한하지 않고, 접근 권한 정보는 메모리 페이지에 접근하는 주체 별로 다르게 설정될 수도 있다.The access right information included in the nested page table 151 includes permission bits for read, write, and execute operations on the memory page corresponding to the host physical address. A read operation means an operation of reading data stored in a memory page. A write operation means an operation of storing predetermined data in a memory page. Execution operation means an operation to execute data stored in a memory page. The privilege bit may exist for each action and may have a value of 0 or 1. For example, when the right bit value of the read operation has a value of 0, the read operation in the corresponding memory page is not granted. On the other hand, when the right bit value of the read operation has a value of 1, the read operation in the corresponding memory page is granted. The access privilege information for the memory page does not discriminate the accessing subject, but can be set differently for the operation on the memory page. However, the access authority information may be set differently for each subject accessing the memory page.
중첩 페이지 테이블(151)은 가상화 머신 모니터(150) 내에 위치하여, 운영 체제(120)와 독립적으로 구성될 수 있고, 운영 체제(120)의 접근으로부터 보호될 수 있다.The nested page table 151 is located within the
응용 프로그램 보호부(130)는 응용 프로그램 관리부(132), 자원 보호부(133) 및 커널 수행 검증부(134)를 포함한다.The
응용 프로그램 관리부(132)는 응용 프로그램(110)을 보호 대상으로 설정할 수 있다. 응용 프로그램 관리부(132)는 응용 프로그램(110)의 요청에 따라 응용 프로그램(110)을 보호 대상으로 등록할 수 있다. 이에 한하지 않고 응용 프로그램 관리부(132)는 응용 프로그램(110) 이외 다른 응용 프로그램의 요청 또는 미리 설정된 이벤트의 발생을 감지함에 따라 응용 프로그램(110)을 보호 대상으로 등록할 수 있다. The
응용 프로그램 관리부(132)는 응용 프로그램(110)의 고유 식별 정보를 이용하여 응용 프로그램(110)을 보호하고자 하는 응용 프로그램으로 등록할 수 있다. 고유 식별 정보는 응용 프로그램(110)에 부여될 수 있는 프로세스 식별자(PID, process identifier) 또는 응용 프로그램(110)과 대응되는 페이지 디렉토리(page directory) 주소를 포함할 수 있다. 또는, 고유 식별 정보는 응용 프로그램 관리부(132)에 의해 보호하고자 하는 응용 프로그램(110)에 대하여 부여된 식별 정보를 포함할 수 있다. 고유 식별 정보는 상술된 예에 한하지 않고 다양한 형태의 식별 정보를 포함할 수 있다.The
응용 프로그램 관리부(132)는 보호 대상으로 설정된 응용 프로그램(110)을 감시하여, 운영 체제(120)가 응용 프로그램(110)의 자원에 접근하는 것을 제어할 수 있다. 구체적으로, 응용 프로그램 관리부(132)는 고유 식별 정보에 기초하여 현재 실행 중인 응용 프로그램(110)이 보호 대상인지 여부를 판단할 수 있다. 그리고, 응용 프로그램 관리부(132)는 보호 대상으로 설정된 응용 프로그램(110)의 실행 모드에 따라 운영 체제가 응용 프로그램(110)의 자원에 접근할 수 있는지 여부를 판단할 수 있다. 응용 프로그램 관리부(132)는 보호 대상으로 설정된 응용 프로그램(110)의 프로세스 또는 쓰레드 등을 보호 대상으로 등록하여, 등록된 보호 대상에 대한 운영 체제(120)의 접근을 제어할 수 있다. The
응용 프로그램 관리부(132)는 보호 대상으로 설정된 응용 프로그램(110)에서 프로세스 또는 쓰레드가 새롭게 생성되면, 새롭게 생성된 프로세스 또는 쓰레드를 보호 대상으로 등록할 수 있다. 또한, 보호 대상으로 등록되어 있던 프로세스 또는 쓰레드가 소멸되면, 소멸된 프로세스 또는 쓰레드를 보호 대상에서 해제할 수 있다. The
응용 프로그램(110)이 응용 프로그램 관리부(132)에 의하여 보호 대상으로 설정되는 경우, 자원 보호부(133)는 응용 프로그램(110)의 페이지 테이블(121)에 기초하여, 응용 프로그램(110)의 자원으로 할당된 메모리 페이지의 게스트 물리 주소를 획득할 수 있다. 그리고, 자원 보호부(133)는 중첩 페이지 테이블(151)을 이용하여, 게스트 물리 주소를 호스트 물리 주소로 변환한다. 자원 보호부(133)는 호스트 물리 주소 및 응용 프로그램(110)의 고유 식별 정보에 기초하여, 응용 프로그램(110)의 자원으로 할당된 메모리 페이지를 보호 대상으로 등록할 수 있다.When the
자원 보호부(133)는 중첩 페이지 테이블(151)에 포함된 보호 대상으로 등록된 메모리 페이지의 권한 정보를 재설정할 수 있다. 예를 들어, 운영 체제(120)가 응용 프로그램(110)의 자원에 접근할 수 있는 상태임을 응용 프로그램 관리부(132)가 감지하면, 자원 보호부(133)는, 보호 대상으로 등록된 메모리 페이지에 대한 접근 권한 정보를 재설정할 수 있다. 자원 보호부(133)는 읽기, 쓰기, 실행 동작에 대한 권한 비트를 0으로 설정함으로써 메모리 페이지에 대한 운영 체제(120)의 접근을 제어할 수 있다. The
운영 체제(120)가 응용 프로그램(110)의 자원에 접근할 수 있는 상태는 응용 프로그램(110)의 실행 모드가 유저(user) 모드에서 커널(kernel) 모드로 전환되어, 커널 모드로 응용 프로그램(110)이 실행되는 경우를 포함할 수 있다. The state in which the
유저 모드는 응용 프로그램(110)이 응용 프로그램(110)의 자원으로 할당된 하드웨어 영역에 접근할 수 있고, 운영 체제(120) 또는 다른 응용 프로그램은 접근할 수 없는 응용 프로그램(110)의 실행 모드를 의미할 수 있다. 커널 모드는 응용 프로그램(110)에서 발생된 시스템 호출 또는 이벤트에 따라서, 응용 프로그램(110)의 자원으로 할당된 하드웨어(140) 영역에 운영 체제(120)가 접근할 수 있는 응용 프로그램(110)의 실행 모드를 의미할 수 있다.The user mode is a mode in which the
응용 프로그램(110)이 유저 모드로 동작하는 경우, 응용 프로그램(110)의 자원으로 할당된 메모리 페이지에는 응용 프로그램(110)만 접근할 수 있고, 다른 응용 프로그램이나 운영 체제(120)는 접근할 수 없다. 그러나, 응용 프로그램(110)이 커널 모드로 동작하는 경우, 응용 프로그램(110)의 자원으로 할당된 메모리 페이지에 운영 체제(120) 또는 다른 응용 프로그램이 접근할 수 있다. 따라서, 일 실시 예에 의한 응용 프로그램 관리부(132)는 응용 프로그램(110)의 실행 모드가 유저 모드인지 커널 모드인지를 모니터링하고, 응용 프로그램(110)의 실행 모드가 커널 모드로 전환되면, 응용 프로그램의 자원에 대한 접근 권한을 제어할 수 있다.When the
또한, 응용 프로그램 관리부(132)가 운영 체제(120)가 응용 프로그램(110)의 자원에 접근할 수 있는 상태임을 감지하면, 자원 보호부(133)는 응용 프로그램(110)이 사용하던 범용 레지스터(general purpose registers)(144)에 저장된 값을 제거할 수 있다. 범용 레지스터(144)에는 응용 프로그램(110)이 실행 중일 때 사용된 데이터들이 저장될 수 있다. 응용 프로그램(110)의 자원으로 할당된 범용 레지스터(144) 영역에 응용 프로그램(110)과 관련된 데이터들이 저장될 수 있다. 예를 들면, 응용 프로그램(110)에서 발생된 이벤트, 프로세스, 쓰레드 등과 관련된 데이터들이 범용 레지스터(144)에 저장될 수 있다. 자원 보호부(133)는 운영 체제(120)가 범용 레지스터(144)에 저장된 값에 접근하는 것을 방지하기 위하여, 운영 체제(120)가 범용 레지스터(144)에 접근하기 전에 범용 레지스터의 값을 삭제할 수 있다. When the
악성 소프트웨어, 악성 코드 등에 감염된 운영 체제(120)가 범용 레지스터(144)에 접근하는 경우, 응용 프로그램(110)이 사용하던 값이 운영 체제(120)에 의해 유출되거나 위변조될 수 있다. 따라서, 자원 보호부(133)는 운영 체제(120)로부터 범용 레지스터(144)에 저장된 값을 보호하기 위하여, 운영 체제(120)가 응용 프로그램(110)의 자원에 접근할 수 있는 상태가 되면, 범용 레지스터(144)에 저장된 값을 삭제할 수 있다.When the
자원 보호부(133)는 운영 체제(120)가 응용 프로그램(110)의 접근할 수 있는 상태가 됨에 따라, 권한 정보를 재설정하고 범용 레지스터(144)에 저장된 값을 삭제하기 전에, 권한 정보와 범용 레지스터(144)에 저장된 값을 백업해둘 수 있다. 그리고 이후에, 자원 보호부(133)는 운영 체제(120)가 응용 프로그램(110)의 자원에 접근할 수 없는 상태가 되면, 미리 백업해둔 데이터를 이용하여, 권한 정보 및 범용 레지스터(144)에 저장된 값을 복구할 수 있다. The
운영 체제(120)가 응용 프로그램(110)의 자원에 접근할 수 없는 상태는 응용 프로그램(110)의 실행 모드가 커널(kernel) 모드에서 유저(user) 모드로 전환되어, 유저 모드로 응용 프로그램(110)이 실행되는 경우를 포함할 수 있다. 따라서, 응용 프로그램(110)의 실행 모드가 유저 모드가 되면, 운영 체제(120)는 응용 프로그램(110)의 자원에 접근할 수 없으므로, 자원 보호부(133)는 백업된 데이터를 이용하여 권한 정보 및 범용 레지스터(144)에 저장된 값을 복구할 수 있다. 권한 정보 및 범용 레지스터(144)에 저장된 값이 복구됨에 따라, 응용 프로그램(110)은 복구된 데이터를 이용하여 정상적으로 실행될 수 있다.A state in which the
자원 보호부(133)에 의하여, 보호 대상으로 등록된 메모리 페이지에 대한 접근 권한 정보가 재설정되고, 범용 레지스터의 값이 제거된 이후, 운영 체제(120)의 시스템 호출 처리부(122)는 시스템 호출을 처리할 수 있다. 응용 프로그램(110)에서 발생된 시스템 호출을 처리하기 위하여, 시스템 호출 처리부(122)는 응용 프로그램(110)의 자원으로 할당된 메모리 페이지에 대한 접근을 시도할 수 있다. After the access right information for the memory page registered as the protection target is reset by the
구체적으로, 시스템 호출 처리부(122)는 접근하고자 하는 메모리 페이지에 대한 게스트 물리 주소를 페이지 테이블(121)로부터 획득한다. 그리고, 시스템 호출 처리부(122)는 중첩 페이지 테이블(151)을 이용하여 게스트 물리 주소와 대응되는 호스트 물리 주소를 획득할 수 있다. 시스템 호출 처리부(122)는 중첩 페이지 테이블(151)로부터 획득된 호스트 물리 주소를 이용하여 접근하고자 하는 메모리 페이지에 대한 접근을 시도할 수 있다. 그러나, 시스템 호출 처리부(122)가 메모리 페이지에 접근할 수 없도록 접근 권한 정보가 자원 보호부(133)에 의해 재설정된 상태이므로, 시스템 호출 처리부(122)의 메모리 페이지에 대한 접근은 즉시 허용되지 않는다.Specifically, the system
자원 보호부(133)는 시스템 호출 처리부(122)가 보호 대상으로 등록된 메모리 페이지에 접근하려고 하는 경우, 기약정된 보안 규칙에 따라 메모리 페이지에 저장된 데이터를 암호화한 후, 시스템 호출 처리부(122)에 암호화된 데이터를 제공할 수 있다. 자원 보호부(133)는 시스템 호출 처리부(122)가 처리하고자 하는 시스템 호출에 따라서 데이터를 암호화한 후, 시스템 호출 처리부(122)가 메모리 페이지에 접근할 수 있도록 접근 권한 정보를 다시 설정할 수 있다.When the system
시스템 호출 처리부(122)가 보호 대상으로 등록된 메모리에 접근하는 시점에서, 보호 대상으로 등록된 메모리 페이지의 각 동작에 대한 권한 비트는 0으로 세팅된 상태이다. 따라서, 시스템 호출 처리부(122)는 보호 대상으로 등록된 메모리 페이지에 접근하여도, 접근 권한이 없으므로, 시스템 호출을 처리할 수 없다. 자원 보호부(133)는 기약정된 보안 규칙에 따라 메모리 페이지에 저장된 데이터를 암호화한 후, 시스템 호출 처리부(122)에 암호화된 데이터를 제공할 수 있다.At the time when the system
예를 들면, 시스템 호출 처리부(122)가 파일 열기 시스템 호출(file open system call)을 처리하는 경우, 열고자 하는 파일에 관한 정보(파일 이름 또는 경로)를 획득하는 것이 필요하다. 그러나, 파일 정보는 응용 프로그램(110)의 실행 중 사용된 정보이므로 응용 프로그램(110)의 자원으로 할당된 메모리 페이지에 저장되어 있다. 응용 프로그램(110)이 보호 대상으로 설정된 경우이면, 메모리 페이지도 보호 대상으로 등록되므로, 시스템 호출 처리부(122)가 메모리 페이지에 접근하는 시점에서, 메모리 페이지의 각 동작에 대한 권한 비트는 자원 보호부(133)에 의해 0으로 설정된 상태이다.For example, when the system
시스템 호출 처리부(122)가 파일 열기 시스템 호출의 처리를 위해 파일 이름 및 경로를 포함하는 파일 정보를 보호 대상으로 등록된 메모리 페이지로부터 획득하고자 하는 경우, 자원 보호부(133)는 메모리 페이지에 저장된 파일 정보를 암호화하지 않을 수 있다. 파일 이름이나 파일 경로는 보안상 중요한 정보에 해당되지 않으므로 자원 보호부(133)는 데이터를 암호화하지 않고 시스템 호출 처리부(122)에 제공할 수 있다. 자원 보호부(133)는 시스템 호출 처리부(122)가 파일 정보를 획득할 수 있도록 메모리 페이지에 대한 접근 권한 정보를 다시 설정하거나 암호화되지 않은 파일 정보를 시스템 호출 처리부(122)에 제공할 수 있다.When the system
또 다른 예를 들면, 시스템 호출 처리부(122)가 파일 쓰기 시스템 호출(write system call)을 처리하는 경우, 소정의 저장 영역에서 쓰기 동작을 수행하기 위한 데이터를 획득하는 것이 필요하다. 그러나, 파일 쓰기 시스템 호출 처리에 필요한 데이터는 응용 프로그램(110)의 실행 중 사용된 정보이므로 응용 프로그램(110)의 자원으로 할당된 메모리 페이지에 저장되어 있다. 응용 프로그램(110)이 보호 대상으로 설정된 경우이면, 메모리 페이지도 보호 대상으로 등록되므로, 시스템 호출 처리부(122)가 메모리 페이지에 접근하는 시점에서, 메모리 페이지의 각 동작에 대한 권한 비트는 자원 보호부(133)에 의해 0으로 설정된 상태이다.As another example, when the system
파일 쓰기 시스템 호출 처리에 필요한 데이터는 파일 이름 및 경로를 포함하는 파일 정보와는 달리, 응용 프로그램(110)의 데이터가 포함되어 있으므로, 보안상 중요한 정보를 포함할 수 있다. 따라서, 자원 보호부(133)는 파일 쓰기 시스템 호출 처리에 필요한 데이터를 암호화한 후, 시스템 호출 처리부(122)가 암호화된 데이터를 획득할 수 있도록 메모리 페이지에 대한 읽기 권한을 허여할 수 있다. 또는, 자원 보호부(133)는 암호화된 데이터를 시스템 호출 처리부(122)에 제공하여 줄 수 있다. Unlike the file information including the file name and the path, the data required for the file writing system call processing may include information of security importance because the data of the
시스템 호출 처리부(122)는 암호화된 데이터에 대한 정당한 권리를 가지고 있지 않아 암호화 키를 획득할 수 없으므로, 암호화된 데이터를 복호화할 수 없다. 따라서, 시스템 호출 처리부(122) 및 운영 체제(120)에 의해 응용 프로그램(110)의 데이터가 유출되거나 위변조되는 것이 방지될 수 있다. The system
더하여, 메모리 페이지가 응용 프로그램(110)의 자원으로 할당되거나 해제됨에 따라, 자원 보호부(133)는 메모리 페이지를 보호 대상으로 등록하거나 보호 대상에서 해제할 수 있다. 운영 체제(120)에 의해 메모리 페이지는 응용 프로그램(110)의 자원으로 할당되거나 해제될 수 있다. 운영 체제(120)는 메모리 페이지를 응용 프로그램(110)의 자원으로 할당하거나 해제함에 따라 페이지 테이블(121)을 갱신할 수 있다.In addition, as the memory page is allocated or released as a resource of the
자원 보호부(133)는 보호 대상으로 등록된 응용 프로그램(110)의 페이지 테이블(121)을 보호 대상으로 등록해 두고, 운영 체제(120)에 의해 페이지 테이블(121)이 수정되는지 여부를 감시할 수 있다. The
예를 들어, 운영 체제(120)에 의해 메모리 페이지가 새롭게 할당되면, 페이지 테이블(121)에 새롭게 할당된 메모리 페이지에 대한 게스트 가상 주소와 게스트 물리 주소 간 사상 정보가 저장된다. 그리고, 중첩 페이지 테이블(151)에는 새롭게 할당된 메모리 페이지에 대한 게스트 물리 주소와 호스트 물리 주소간 사상 정보가 저장된다. 페이지 테이블(121) 및 중첩 페이지 테이블(151)에는 새롭게 할당된 메모리 페이지에 관한 정보가 저장될 수 있다.For example, when a memory page is newly allocated by the
반면에, 운영 체제(120)에 의해 할당되어 있던 메모리 페이지가 해제되면, 페이지 테이블(121) 및 중첩 페이지 테이블(151)에 저장된 해제된 메모리 페이지에 대한 정보와 메모리 페이지에 저장되어 있던 정보가 삭제된다. 자원 보호부(133)는 페이지 테이블(121)에서 수정된 값을 확인하고, 새롭게 할당되거나 해제된 메모리 페이지에 관한 정보를 획득할 수 있다. 그리고, 자원 보호부(133)는 페이지 테이블(121)에서 수정된 값에 따라, 중첩 페이지 테이블(151)과 보호 대상으로 등록된 메모리 페이지에 관한 정보를 갱신할 수 있다.On the other hand, when the memory page allocated by the
자원 보호부(133)는 보호 대상으로 설정된 응용 프로그램에 대한 자원으로 메모리 페이지가 새롭게 할당되면 새로 할당된 메모리 페이지를 보호 대상으로 등록할 수 있다. 또한, 보호 대상으로 등록된 메모리 페이지의 할당이 해제되면, 할당이 해제된 메모리 페이지에 저장된 데이터가 삭제된 이후, 할당이 해제된 메모리 페이지가 보호 대상에서 해제될 수 있다. 데이터 삭제가 보호 대상에서의 해제보다 선행됨으로써, 할당이 해제된 메모리 페이지가 보호 대상에서 해제됨에 따라 발생될 수 있는 데이터 유출 또는 위변조가 방지될 수 있다.The
커널 수행 검증부(134)는 시스템 호출 처리부(122)에 의해 시스템 호출이 처리된 이후 시스템 호출의 처리 결과에 대하여 검증한다. 운영 체제(120)가 악성 코드에 의해 감염된 상태인 경우, 운영 체제(120)의 시스템 호출 처리부(122)에 의해 수행된 시스템 호출에 따라 처리된 데이터는 위변조될 수 있는 가능성이 있다. 따라서, 커널 수행 검증부(134)는 시스템 호출 처리부(122)에 의해 처리되는 데이터의 원본 데이터와, 시스템 호출에 따라 처리된 데이터를 비교하여 데이터의 무결성을 검증할 수 있다. 예를 들면, 커널 수행 검증부(134)는 원본 데이터의 해시값(hash value)과 시스템 호출에 따라 처리된 데이터의 해시값을 비교하여, 데이터의 무결성을 검증할 수 있다.The kernel
예를 들어, 시스템 호출 처리부(122)가 읽기 시스템 호출(read system call)을 수행하는 경우, 시스템 호출 처리부(122)는 다른 메모리 영역 또는 저장 장치에 저장된 데이터를 읽고, 읽은 데이터를 보호 대상으로 등록된 메모리 페이지에 저장할 수 있다. 커널 수행 검증부(134)는 읽기 시스템 호출이 처리되기 전에, 시스템 호출 처리부(122)가 시스템 호출 처리를 위해 읽으려는 데이터를 원본 데이터로써 획득할 수 있다. 그리고, 읽기 시스템 호출이 처리됨에 따라 시스템 호출 처리부(122)는 보호 대상으로 등록된 메모리 페이지에 데이터를 저장할 수 있다. 커널 수행 검증부(134)는 시스템 호출 처리부(122)에 의하여 저장된 데이터의 해시 값과, 원본 데이터를 해시 값을 비교함으로써, 데이터의 무결성을 검증할 수 있다.For example, when the system
또한, 시스템 호출 처리부(122)가 쓰기 시스템 호출을 수행하는 경우, 시스템 호출 처리부(122)는 보호 대상으로 등록된 메모리 페이지에 저장된 데이터를 읽고, 읽은 데이터를 다른 메모리 영역 또는 저장 장치에 저장할 수 있다. 커널 수행 검증부(134)는 쓰기 시스템 호출이 처리되기 전에, 보호 대상으로 등록된 메모리 페이지로부터 시스템 호출 처리부(122)가 시스템 호출 처리를 위해 읽으려는 데이터를 원본 데이터로써 획득할 수 있다. 그리고, 쓰기 시스템 호출이 처리됨에 따라 시스템 호출 처리부(122)는 다른 메모리 영역 또는 저장 장치에 데이터를 저장할 수 있다. 쓰기 시스템 호출에 대한 처리가 완료된 이후, 커널 수행 검증부(134)는 시스템 호출 처리부(122)에 의하여 저장된 데이터의 해시 값과, 원본 데이터를 해시 값을 비교함으로써, 데이터의 무결성을 검증할 수 있다.In addition, when the system
더하여, 시스템 호출 처리부(122)가 응용 프로그램의 자원으로 새로운 메모리 페이지를 할당하기 위한 시스템 호출을 수행하는 경우, 커널 수행 검증부(134)는 시스템 호출 처리부(122)에 의한 시스템 호출의 처리 결과를 검증할 수 있다. 응용 프로그램의 자원으로 새로운 메모리 페이지를 할당하기 위한 시스템 호출은 예를 들면, mmap 시스템 호출을 포함할 수 있다.In addition, when the system
시스템 호출 처리부(122)에 의하여, 기존에 보호 대상으로 등록된 메모리 페이지가 새로운 메모리 페이지로서 할당되면, 응용 프로그램은 할당된 메모리 페이지에 대하여 읽기, 쓰기 등의 동작을 수행할 수 있다. 따라서, 이전에 저장되어 있던 데이터가 삭제되거나 변조될 수 있다. When the memory page registered as a protection target is allocated as a new memory page by the system
커널 수행 검증부(134)는 새로운 메모리 페이지를 실행 중인 응용 프로그램의 자원으로 할당하기 위한 시스템 호출이 처리된 이후, 새롭게 할당된 메모리 페이지가 기존에 응용 프로그램의 자원으로 할당되어 있는 메모리 페이지와 동일한지 확인한다. 동일한 경우, 커널 수행 검증부(134)는 새롭게 할당된 메모리 페이지에 대한 할당이 해제되도록 처리할 수 있다. 기존에 할당된 메모리 페이지는 자원 보호부(133)에 의해 보호 대상으로 등록된 메모리 페이지를 포함할 수 있다. After the system call for allocating a new memory page as a resource of an executing application program is processed, the kernel
이하 도 3 및 도 4를 참조하여, 응용 프로그램의 자원에 대한 접근 권한을 제어하는 방법에 대하여 설명하기로 한다.Hereinafter, a method for controlling access rights to resources of an application program will be described with reference to FIGS. 3 and 4. FIG.
도 3은 일 실시 예에 의한 응용 프로그램의 자원에 대한 접근 권한을 제어하는 방법을 나타낸 순서도이다.FIG. 3 is a flowchart illustrating a method for controlling access rights to resources of an application program according to an embodiment.
도 3을 참조하면, 단계 S301에서 디바이스(100)는 보호 대상으로 설정된 응용 프로그램이 실행되는 동안, 운영 체제가 보호 대상으로 설정된 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단한다. 구체적으로, 디바이스(100)는 실행 중인 응용 프로그램 중에, 보호 대상으로 설정된 응용 프로그램을 판별하고, 보호 대상으로 설정된 응용 프로그램의 자원에 운영 체제가 접근할 수 있는 상태인지를 지속적으로 모니터링할 수 있다. Referring to FIG. 3, in operation S301, the
단계 S303에서, 디바이스(100)는 보호 대상으로 설정된 응용 프로그램의 자원에 운영 체제가 접근 가능한 상태인지 판단할 수 있다. 예를 들면, 디바이스(100)는 응용 프로그램의 실행 모드가 유저 모드에서 커널 모드로 전환되는 경우, 운영 체제가 응용 프로그램의 자원에 접근할 수 있는 상태에 있는 것으로 판단할 수 있다. 응용 프로그램의 실행 모드가 커널 모드인 경우, 응용 프로그램에서 발생된 시스템 호출 또는 이벤트에 따라, 응용 프로그램의 자원으로 할당된 하드웨어 영역에 운영 체제가 접근할 수 있다.In step S303, the
단계 S303에서, 보호 대상으로 설정된 응용 프로그램의 자원에 운영 체제가 접근 가능한 상태인 것으로 판단된 경우, 단계 S305에서, 디바이스(100)는 보호 대상으로 설정된 응용 프로그램의 자원에 대한 접근 권한을 제어할 수 있다. 보호 대상으로 설정된 응용 프로그램의 자원에 운영 체제가 접근하여, 응용 프로그램의 자원에 존재하는 데이터를 유출시키거나 위변조하는 것을 막기 위해, 디바이스(100)는 자원에 대한 접근 권한을 제어할 수 있다. 자원에 대한 접근 권한은 읽기, 쓰기, 실행 등의 동작 별로 허용 여부에 관해 설정될 수 있으며, 접근 주체를 구별하여 설정되지는 않을 수 있다. 이에 한하지 않고, 접근 주체 별로 자원에 대한 접근 권한이 설정될 수도 있다.If it is determined in step S303 that the operating system is accessible to the resource of the application program set as the protection target, the
디바이스(100)는 응용 프로그램의 자원으로 할당된 메모리 페이지를 보호하고자 하는 경우, 보호하고자 하는 메모리 페이지를 보호 대상으로 등록할 수 있다. 그리고, 디바이스(100)는 중첩 페이지 테이블(151)에 저장된 메모리 페이지에 대한 접근 권한을 재설정할 수 있다.When the
이하 도 4를 참조하여, 응용 프로그램의 자원에 대한 접근 권한을 제어하는 일 예로, 메모리 페이지의 접근 권한과 레지스터의 데이터 값을 제거하는 방법에 대하여 더 자세히 설명하기로 한다.Referring to FIG. 4, a method of removing an access right of a memory page and a data value of a register will be described in detail as an example of controlling an access right to an application program resource.
도 4는 일 실시 예에 의한 응용 프로그램의 자원에 대한 접근 권한 및 레지스터 값을 제어하는 방법을 나타낸 순서도이다.4 is a flowchart illustrating a method of controlling an access right and a register value of an application program according to an exemplary embodiment of the present invention.
도 4를 참조하면, 단계 S401에서, 디바이스(100)는 보호 대상으로 설정된 응용 프로그램의 실행 모드를 판단할 수 있다. 응용 프로그램의 실행 모드에 따라서, 운영 체제가 보호 대상으로 설정된 응용 프로그램의 자원에 접근이 가능한지 여부가 결정될 수 있다. 디바이스(100)는 응용 프로그램의 실행 모드에 따라 응용 프로그램의 자원에 대한 접근 권한을 제어할 수 있다.Referring to FIG. 4, in step S401, the
단계 S403에서, 디바이스(100)는 보호 대상으로 설정된 응용 프로그램이 커널 모드로 동작하는지 여부를 판단할 수 있다. 디바이스(100)는 보호 대상으로 설정된 응용 프로그램이 유저 모드로 동작하다가 커널 모드로 전환되어 동작하는지 여부를 판단할 수 있다. In step S403, the
유저 모드에서 커널 모드로의 전환은 응용 프로그램에서 인터럽트(interrupt), 예외(exception), 시스템 호출(system call) 등의 이벤트가 발생됨에 따라 이루어질 수 있다. 또한, 커널 모드에서 유저 모드로의 전환은 응용 프로그램에서 스케줄링, 시스템 호출 반환(system call return) 등의 이벤트가 발생됨에 따라 이루어질 수 있다. 상술된 이벤트들은 예시에 불과하며, 이에 한정되지는 않는다.Switching from user mode to kernel mode can be done as an application generates an interrupt, an exception, or a system call event. In addition, switching from the kernel mode to the user mode may be performed when an event such as a scheduling or a system call return is generated in an application program. The above-described events are merely examples, and the present invention is not limited thereto.
또 다른 예로, 디바이스(100)는 응용 프로그램의 실행 모드를 전환 시키는 이벤트에 의하여 발생될 수 있는 VM exit, EPT violation 등의 특정 이벤트들을 이용하여 응용 프로그램의 실행 모드가 전환됨을 감지할 수 있다. VM exit는 응용 프로그램의 실행 모드를 사용자 모드에서 커널 모드로 전환시키는 이벤트들에 의해 발생될 수 있는 이벤트이다. EPT violation은 커널 모드에서, 운영 체제(120) 또는 다른 응용 프로그램이 보호 대상으로 등록된 응용 프로그램의 메모리 페이지에 접근할 때 운영 체제(120) 또는 다른 응용 프로그램의 접근 권한이 없어 발생될 수 있는 이벤트이다.As another example, the
따라서, 디바이스(100)는 응용 프로그램에서 발생된 이벤트를 감지함으로써 응용 프로그램의 실행 모드가 커널 모드로 전환되었는지 여부를 판단할 수 있다.Accordingly, the
예를 들면, 디바이스(100)는 응용 프로그램의 실행 모드를 전환 시키는 이벤트의 발생을 감지할 수 있도록 하는 수정된 라이브러리를 이용할 수 있다. 디바이스(100)는 응용 프로그램의 실행 모드를 전환시키는 이벤트를 처리하기 위한 기존의 진입점(entry)이 특정 진입점으로 교체된 라이브러리를 이용할 수 있다. 따라서, 디바이스(100)는 수정된 라이브러리를 이용함으로써 응용 프로그램의 실행 모드를 전환시키거나 실행 모드가 전환될 때 발생 가능한 이벤트가 발생되면, 특정 진입점으로 이벤트가 처리될 수 있다. 디바이스(100)는 특정 진입점으로 이벤트가 처리됨에 따라 이용함으로써 응용 프로그램의 실행 모드를 전환시키거나 실행 모드가 전환될 때 발생 가능한 이벤트의 발생을 감지할 수 있다. 예를 들면, 디바이스(100)가 수정된 라이브러리를 이용함에 따라, 발생된 이벤트를 감지할 수 있는 신호가 생성될 수 있다.For example, the
단계 S403에서, 보호 대상으로 설정된 응용 프로그램의 실행 모드가 커널 모드인 것으로 판단된 경우, 단계 S405에서, 응용 프로그램 보호부(130)는 응용 프로그램의 자원으로 할당된 메모리 페이지의 접근 권한 정보와 레지스터 값을 백업해 둘 수 있다. 백업될 수 있는 레지스터 값은 응용 프로그램이 실행 중에 범용 레지스터에 저장해둔 데이터를 포함한다. 응용 프로그램 보호부(130)는 응용 프로그램의 실행 모드가 유저 모드로 전환되었을 때, 단계 S405에서 백업된 값을 이용하여 접근 권한 정보 및 레지스터 값을 복구할 수 있다.If it is determined in step S403 that the execution mode of the application program set as the protection target is the kernel mode, in step S405, the application
단계 S405에서 백업이 완료되면, 단계 S407에서, 응용 프로그램 보호부(130)는 응용 프로그램의 자원으로 할당된 메모리 페이지의 접근 권한 정보와 레지스터 값을 제거할 수 있다. 응용 프로그램 보호부(130)는 운영 체제(120)가 응용 프로그램의 메모리 페이지에 접근할 수 없도록 메모리 페이지의 접근 권한 정보를 재설정할 수 있다. 또한, 응용 프로그램 보호부(130)는 운영 체제(120)가 응용 프로그램의 레지스터 값을 유출할 수 없도록 응용 프로그램이 저장해둔 레지스터 값을 제거할 수 있다.When the backup is completed in step S405, in step S407, the application
단계 S411에서, 운영 체제(120)는 응용 프로그램(110)에서 발생된 시스템 호출을 처리할 수 있다. 일 실시 예에 의하면 운영 체제(120)가 시스템 호출을 처리하기 위해 응용 프로그램(110)의 자원에 접근하기 전에, 응용 프로그램 보호부(130)는 단계 S407에서 메모리 페이지의 접근 권한을 재설정하고, 레지스터의 데이터 값을 제거할 수 있다. 따라서, 디바이스(100)는 악성 코드, 악성 소프트웨어 등에 감염된 운영 체제(120)가 응용 프로그램(110)의 자원에 접근하여 데이터를 유출하거나 위변조하는 것을 미리 방지할 수 있다.In step S411, the
더하여, 응용 프로그램 보호부(130)는 단계 S401에서 보호 대상으로 설정된 응용 프로그램의 실행 모드를 지속적으로 판단할 수 있다. 응용 프로그램 보호부(130)는 응용 프로그램의 실행 모드가 커널 모드에서 유저 모드로 전환되는지 여부를 지속적으로 모니터링할 수 있다.In addition, the application
유저 모드에서는 운영 체제(120) 또는 다른 응용 프로그램에서 응용 프로그램의 자원에 접근하는 것이 가능하지 않다. 따라서, 유저 모드에서는 운영 체제(120) 다른 외부 응용 프로그램에서 응용 프로그램의 자원에 접근함에 따라 발생될 수 있는 데이터의 유출 및 위변조가 발생되지 않는다. 그러므로, 응용 프로그램의 실행 모드가 유저 모드로 전환되면, 응용 프로그램 보호부(130)는 응용 프로그램의 내부에서 응용 프로그램의 자원에 접근할 수 있도록 자원에 대한 접근 권한을 제어할 수 있다. 응용 프로그램이 자신의 작업을 수행하기 위해 자신의 자원에 접근할 수 있음이 바람직하다. 그러므로, 응용 프로그램 보호부(130)는 응용 프로그램의 실행 모드가 유저 모드로 전환되면, 응용 프로그램이 자원에 접근할 수 있도록 자원에 대한 접근 권한을 제어할 수 있다.In the user mode it is not possible to access the application's resources in the
단계 S403에서, 응용 프로그램의 실행 모드가 유저 모드인 것으로 판단되면, 단계 S413에서, 응용 프로그램 보호부(130)는 메모리 페이지에 대한 접근 권한 정보와 레지스터 값에 대하여 미리 백업된 값이 존재하는지 여부를 판단할 수 있다. If it is determined in step S403 that the execution mode of the application program is the user mode, in step S413, the application
응용 프로그램(110)의 실행 모드가 커널 모드일 때, 응용 프로그램 보호부(130)는 단계 S405에서 메모리 페이지에 대한 접근 권한 정보와 레지스터 값을 백업해 둘 수 있다. 그리고, 응용 프로그램(110)의 실행 모드가 커널 모드에서 유저 모드로 전환되면, 단계 S415에서, 응용 프로그램 보호부(130)는 단계 S405에서 백업해 둔 값을 이용하여 메모리 페이지에 대한 접근 권한 정보와 레지스터 값을 복구할 수 있다.When the execution mode of the
단계 S413에서, 백업된 값이 존재하지 않는 경우, 데이터 복구를 수행할 수 없으므로, 응용 프로그램 보호부(130)는 단계 S415의 데이터 복구를 수행하지 않는다.If the backup value does not exist in step S413, the application
단계 S417에서, 응용 프로그램은 실행 모드가 커널 모드로 전환되기 전에 유저 모드에서 수행하던 작업을 단계 S415에서 복구된 값에 기초하여 계속 수행할 수 있다. 또한, 단계 S415에서 복구된 값에 기초하여, 응용 프로그램은 자신의 자원으로 할당된 메모리 페이지에 접근함으로써 응용 프로그램에서 작업을 수행할 수 있다.In step S417, the application program can continue to perform the operation performed in the user mode before the execution mode is switched to the kernel mode, based on the value recovered in step S415. Further, based on the recovered value in step S415, the application program can perform an operation in the application program by accessing the memory page allocated to the resource.
단계 S413에서 백업된 값이 존재하지 않아 단계 S415의 데이터 복구가 수행되지 않은 경우, 메모리 페이지에 대한 접근 권한 정보는 디폴트 값으로 설정되거나 응용 프로그램에서 수행되는 작업에 따라 새롭게 설정될 수 있다.If there is no backup value in step S413 and the data recovery in step S415 is not performed, the access right information for the memory page may be set to a default value or newly set according to an operation performed in the application program.
이하 도 5를 참조하여, 운영 체제가 시스템 호출을 처리하는 방법에 대하여 상세히 설명하기로 한다.Hereinafter, with reference to FIG. 5, a detailed description will be given of how an operating system processes a system call.
도 5는 일 실시 예에 의한 운영 체제가 응용 프로그램의 자원에 접근하여 시스템 호출을 처리하는 방법을 나타낸 순서도이다. 5 is a flowchart illustrating a method for an operating system to access a resource of an application program and process a system call according to an exemplary embodiment of the present invention.
도 5를 참조하면, 단계 S501에서, 응용 프로그램 보호부(130)는 운영 체제(120)가 보호 대상인 응용 프로그램의 자원에 접근함을 감지할 수 있다. 응용 프로그램의 실행 모드가 커널 모드인 경우, 응용 프로그램 보호부(130)는 운영 체제(120)가 응용 프로그램의 자원에 접근할 수 없도록 자원에 대한 접근 권한을 제어한다. 따라서, 운영 체제(120)의 응용 프로그램의 자원으로 할당된 메모리 페이지에 대한 접근은 허용되지 않는다. 운영 체제(120)에 의한 응용 프로그램의 자원에 대한 접근 시도가 발생하면, 응용 프로그램 보호부(130)는 발생된 접근 시도를 감지하고, 분석하여, 접근 시도가 감지된 자원에 대한 접근 권한을 제어할 수 있다.Referring to FIG. 5, in operation S501, the
단계 S503에서, 운영 체제(120)가 시스템 호출을 처리함에 따라 페이지 테이블에 접근한 것으로 판단한 경우, 단계 S505에서, 응용 프로그램 보호부(130)는 운영 체제(120)에 의해 수정된 페이지 테이블을 확인할 수 있다. 그리고, 수정된 페이지 테이블에 따라 응용 프로그램 보호부(130)는 보호 대상으로 등록된 메모리 페이지를 해제하거나 새로운 메모리 페이지를 보호 대상으로 등록할 수 있다. 운영 체제(120)가 새로운 메모리 페이지를 응용 프로그램의 자원으로 할당한 경우, 응용 프로그램 보호부(130)는 새로운 메모리 페이지를 보호 대상으로 등록할 수 있다. 운영 체제(120)가 메모리 페이지에 대한 할당을 해제하는 경우, 응용 프로그램 보호부(130)는 보호 대상으로 등록된 메모리 페이지를 보호 대상에서 해제할 수 있다.If it is determined in step S503 that the
단계 S503에서, 운영 체제(120)가 페이지 테이블이 아닌 응용 프로그램의 자원으로 할당된 메모리 페이지에 접근하는 것으로 판단한 경우, 단계 S507에서 응용 프로그램 보호부(130)는 기 약정된 보안 규칙에 따라 운영 체제(120)가 접근한 메모리 페이지에 저장된 데이터를 암호화할지 여부를 결정할 수 있다.If it is determined in step S503 that the
응용 프로그램 보호부(130)는 운영 체제(120)가 수행하는 시스템 호출 또는 운영 체제(120)가 접근한 메모리 페이지에 저장된 데이터의 종류에 따라 암호화 여부를 결정할 수 있다. 예를 들어, 운영 체제(120)가 파일 열기 시스템 호출을 수행함에 따라 메모리 페이지에 접근하였거나, 메모리 페이지에 저장된 데이터가 보안상 중요하지 않은 경우, 응용 프로그램 보호부(130)는 데이터를 암호화하지 않을 수 있다. 반면에, 운영 체제(120)가 파일 쓰기 시스템 호출을 수행함에 따라 메모리 페이지에 접근하였거나, 메모리 페이지에 저장된 데이터가 보안상 중요한 데이터를 포함하는 경우, 응용 프로그램 보호부(130)는 데이터를 암호화할 수 있다.The
단계 S509에서 응용 프로그램 보호부(130)는 단계 S507에서의 결정에 따라, 운영 체제(120)에 의해 접근된 메모리 페이지에 저장된 데이터를 암호화할 수 있다. 그리고, 단계 S511에서, 응용 프로그램 보호부(130)는 암호화된 데이터 또는 암호화되지 않은 데이터에 접근할 수 있도록 메모리 페이지에 대한 접근 권한을 제어할 수 있다. 운영 체제(120)는 접근이 허용된 메모리 페이지에 접근하여 암호화된 데이터 또는 암호화되지 않은 데이터를 획득할 수 있다. 또는, 응용 프로그램 보호부(130)는 단계 S511에서 운영 체제(120)에 암호화된 데이터 또는 암호화되지 않은 데이터를 제공할 수도 있다. In step S509, the
단계 S513에서, 운영 체제(120)는 단계 S511에서 획득한 데이터를 이용하여 시스템 호출을 처리할 수 있다. 운영 체제(120)의 시스템 호출 처리에 따라 단계 S511에서 획득한 암호화된 데이터는 응용 프로그램, 다른 응용 프로그램, 외부 장치 등으로 전달될 수 있다. 암호화된 데이터는 암호화 키에 의해 복호화될 수 있다. In step S513, the
암호화된 데이터에 대하여 정당한 권한을 가지는 프로그램 또는 장치가 암호화 키를 보유할 수 있다. 예를 들면, 암호화 키는 암호화된 데이터에 대하여 정당한 권한을 가지는 응용 프로그램 또는 응용 프로그램 보호부(130)에 존재할 수 있다. 응용 프로그램 보호부(130)가 암호화 키를 가지는 경우, 암호화 키를 응용 프로그램에 전달하여 응용 프로그램이 암호화 키를 획득할 수 있다.A program or device having a legitimate right to encrypted data may have an encryption key. For example, the encryption key may exist in the application program or the application
단계 S513에서 운영 체제(120)의 시스템 호출에 대한 처리가 완료되면, 단계 S515에서, 응용 프로그램 보호부(130)는 운영 체제(120)에 처리된 결과물에 대하여 검증할 수 있다. 응용 프로그램 보호부(130)는 운영 체제(120)에 의해 처리된 데이터에 대한 원본 데이터와 운영 체제(120)에 의해 처리된 데이터를 획득할 수 있다. 그리고, 응용 프로그램 보호부(130)는 운영 체제(120)에 의해 처리된 데이터의 해시값과 원본 데이터의 해시값을 비교함으로써 데이터의 무결성을 검증할 수 있다.When the processing for the system call of the
일 실시 예에 의하면, 악성 소프트웨어에 의해 해킹될 가능성이 있는 운영 체제 또는 다른 응용 프로그램으로부터 응용 프로그램의 자원을 보호할 수 있다.According to one embodiment, the resources of an application program can be protected from operating systems or other applications that may be hacked by malicious software.
일부 실시 예에 의한 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.The method according to some embodiments may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like.
비록 상기 설명이 다양한 실시예들에 적용되는 본 발명의 신규한 특징들에 초점을 맞추어 설명되었지만, 본 기술 분야에 숙달된 기술을 가진 사람은 본 발명의 범위를 벗어나지 않으면서도 상기 설명된 장치 및 방법의 형태 및 세부 사항에서 다양한 삭제, 대체, 및 변경이 가능함을 이해할 것이다. 따라서, 본 발명의 범위는 상기 설명에서보다는 첨부된 특허청구범위에 의해 정의된다. 특허청구범위의 균등 범위 안의 모든 변형은 본 발명의 범위에 포섭된다.Although the foregoing is directed to novel features of the present invention that are applicable to various embodiments, those skilled in the art will appreciate that the apparatus and method described above, without departing from the scope of the present invention, It will be understood that various deletions, substitutions, and alterations can be made in form and detail without departing from the spirit and scope of the invention. Accordingly, the scope of the present invention is defined by the appended claims rather than the foregoing description. All variations within the scope of the appended claims are embraced within the scope of the present invention.
Claims (24)
보호 대상으로 설정된 응용 프로그램이 실행되는 동안, 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하는 단계; 및
상기 판단 결과에 따라, 상기 응용 프로그램의 자원에 대한 접근 권한을 제어하는 단계를 포함하는, 방법.A method for a device to protect an application's resources,
Determining whether the operating system is in a state in which the operating system can access the resource of the application program while the application program set as the protection target is executed; And
And controlling access rights to resources of the application program according to the determination result.
상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인 경우, 상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 대한 접근 권한 정보 및 상기 응용 프로그램의 레지스터 값을 백업하는 단계;
상기 메모리 페이지에 대한 접근 권한을 재설정하고, 상기 레지스터 값을 삭제하는 단계를 포함하는, 방법.2. The method of claim 1, wherein controlling access rights to the resource comprises:
Backing up access rights information on a memory page allocated as a resource of the application program and a register value of the application program when the operating system can access the resource of the application program;
Resetting access rights to the memory page, and deleting the register value.
상기 메모리 페이지에 대한 접근 권한 정보 및 상기 레지스터 값 중 적어도 하나가 백업되어 있는 경우, 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 없는 상태로 전환되면, 상기 백업된 값을 이용하여 상기 메모리 페이지에 대한 접근 권한 정보 및 상기 레지스터 값 중 적어도 하나를 복구하는 단계를 더 포함하는, 방법.3. The method of claim 2,
If at least one of the access privilege information for the memory page and the register value is backed up and the operating system is in a state in which the operating system can not access the resource of the application program, And recovering at least one of the access rights information and the register value.
상기 응용 프로그램의 실행 모드가 커널 모드인지 유저 모드인지 여부에 기초하여, 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하는 단계를 포함하는, 방법.2. The method of claim 1, wherein the determining comprises:
Determining whether the operating system is in a state of being able to access resources of the application program based on whether the execution mode of the application program is a kernel mode or a user mode.
상기 운영 체제가 시스템 호출을 처리하기 위하여, 상기 응용 프로그램의 자원에 대한 접근을 시도하는 단계;
상기 시스템 호출에 기초하여, 상기 자원에 대한 접근 권한을 제어하는 단계를 더 포함하는, 방법.The method according to claim 1,
Attempting access to resources of the application program for the operating system to process a system call;
And controlling access rights to the resource based on the system call.
상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 저장된 데이터를 암호화할 지 여부를 결정하는 단계;
상기 결정된 결과에 따라, 상기 데이터를 암호화한 후, 상기 운영 체제의 상기 메모리 페이지에 대한 접근을 허용하거나, 상기 암호화된 데이터를 상기 운영 체제에 제공하는 단계를 더 포함하는, 방법.6. The method of claim 5, wherein controlling access rights to the resource comprises:
Determining whether to encrypt data stored in a memory page allocated as a resource of the application program;
In accordance with the determined result, encrypting the data and then allowing access to the memory page of the operating system, or providing the encrypted data to the operating system.
상기 운영 체제가 시스템 호출을 처리하기 위해, 상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 대한 접근을 시도함을 감지하는 단계;
상기 시스템 호출에 의해 처리될 데이터의 원본 데이터를 획득하는 단계;
상기 운영 체제에 의해 상기 시스템 호출에 대한 처리가 완료되면, 상기 시스템 호출에 따라 처리된 데이터를 획득하는 단계;
상기 원본 데이터의 해시값과 상기 시스템 호출에 따라 처리된 데이터의 해시값을 비교함으로써, 상기 시스템 호출에 따라 처리된 데이터의 무결성을 검증하는 단계를 더 포함하는, 방법.The method according to claim 1,
Detecting that the operating system attempts to access a memory page allocated to a resource of the application program to process a system call;
Obtaining original data of data to be processed by the system call;
When the processing for the system call is completed by the operating system, obtaining the processed data according to the system call;
Further comprising verifying the integrity of the processed data according to the system call by comparing the hash value of the original data with a hash value of the processed data in accordance with the system call.
상기 응용 프로그램이 보호 대상으로 설정되면, 상기 응용 프로그램의 자원이 할당된 메모리 페이지는 보호 대상으로 등록되는, 방법.The method according to claim 1,
Wherein when the application program is set as a protection target, a memory page to which a resource of the application program is allocated is registered as a protection target.
상기 운영 체제에 의해 상기 응용 프로그램의 자원으로 새로운 메모리 페이지가 할당됨을 감지하는 단계;
상기 할당된 새로운 메모리 페이지가 상기 보호 대상으로 등록된 메모리 페이지와 동일하다고 판단되면, 상기 새로운 메모리 페이지에 대한 할당을 해제하는 단계를 더 포함하는, 방법.9. The method of claim 8,
Detecting by the operating system that a new memory page is allocated as a resource of the application program;
Further comprising: releasing the allocation of the new memory page if it is determined that the allocated new memory page is the same as the memory page registered as the protection target.
상기 운영 체제가 상기 응용 프로그램의 페이지 테이블을 수정하는 경우, 상기 수정된 페이지 테이블에 따라 상기 응용 프로그램의 자원으로 할당된 메모리 페이지를 보호 대상으로 등록하거나 보호 대상에서 해제하는 단계를 더 포함하는, 방법.9. The method of claim 8,
Further comprising the step of registering or releasing a memory page allocated as a resource of the application program as a protection target according to the modified page table when the operating system corrects the page table of the application program .
상기 운영 체제 대신 다른 응용 프로그램이 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하고, 상기 판단 결과에 따라 상기 응용 프로그램의 자원에 대한 접근 권한을 수행하는, 방법.The method according to claim 1,
Determining whether or not another application program can access the resource of the application program in place of the operating system, and performing an access right to the resource of the application program according to the determination result.
보호 대상으로 설정되어 실행 중인 응용 프로그램;
상기 응용 프로그램에서 발생된 시스템 호출을 처리하는 운영 체제;
상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하고, 상기 판단 결과에 따라, 상기 응용 프로그램의 자원에 대한 접근 권한을 제어하는 응용 프로그램 보호부;
상기 응용 프로그램의 자원을 포함하는 하드웨어를 포함하는 디바이스.A device for protecting a resource of an application program,
An application being protected and running;
An operating system for processing a system call generated in the application program;
An application program protection unit for determining whether the operating system is in a state of being able to access resources of the application program and controlling an access right to resources of the application program according to the determination result;
And hardware comprising the resources of the application program.
상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인 경우, 상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 대한 접근 권한 정보 및 상기 응용 프로그램의 레지스터 값을 백업하고, 상기 메모리 페이지에 대한 접근 권한을 재설정하고, 상기 레지스터 값을 삭제하는, 디바이스.13. The system of claim 12, wherein the application protection unit
Backing up the access privilege information of the memory page allocated to the resource of the application program and the register value of the application program when the operating system can access the resource of the application program, Reset the privilege, and delete the register value.
상기 메모리 페이지에 대한 접근 권한 정보 및 상기 레지스터 값 중 적어도 하나가 백업되어 있는 경우, 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 없는 상태로 전환되면, 상기 백업된 값을 이용하여 상기 메모리 페이지에 대한 접근 권한 정보 및 상기 레지스터 값 중 적어도 하나를 복구하는, 디바이스.14. The apparatus of claim 13, wherein the application protection unit
If at least one of the access privilege information for the memory page and the register value is backed up and the operating system is in a state in which the operating system can not access the resource of the application program, And at least one of the access authority information and the register value.
상기 응용 프로그램의 실행 모드가 커널 모드인지 유저 모드인지 여부에 기초하여, 상기 운영 체제가 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하는, 디바이스.13. The system of claim 12, wherein the application protection unit
And determine whether the operating system is in a state of being able to access resources of the application program, based on whether the execution mode of the application program is a kernel mode or a user mode.
상기 운영 체제가 시스템 호출을 처리하기 위하여, 상기 응용 프로그램의 자원에 대한 접근을 시도하면, 상기 시스템 호출에 기초하여, 상기 자원에 대한 접근 권한을 제어하는, 디바이스.13. The system of claim 12, wherein the application protection unit
Wherein the operating system controls access to the resource based on the system call when an attempt is made to access resources of the application program to process a system call.
상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 저장된 데이터를 암호화할 지 여부를 결정하고, 상기 결정된 결과에 따라, 상기 데이터를 암호화한 후, 상기 운영 체제의 상기 메모리 페이지에 대한 접근을 허용하거나, 상기 데이터를 상기 운영 체제에 제공하는, 디바이스.17. The apparatus of claim 16, wherein the application protection unit
Determining whether to encrypt data stored in a memory page allocated as a resource of the application program, encrypting the data according to the determined result, and then allowing access to the memory page of the operating system; And provides data to the operating system.
상기 운영 체제가 시스템 호출을 처리하기 위해, 상기 응용 프로그램의 자원으로 할당된 메모리 페이지에 대한 접근을 시도함을 감지하면, 상기 시스템 호출에 의해 처리될 데이터의 원본 데이터를 획득하고, 상기 운영 체제에 의해 상기 시스템 호출에 대한 처리가 완료되면, 상기 시스템 호출에 따라 처리된 데이터를 획득하고, 상기 원본 데이터의 해시값과 상기 시스템 호출에 따라 처리된 데이터의 해시값을 비교함으로써, 상기 시스템 호출에 따라 처리된 데이터의 무결성을 검증하는, 디바이스.13. The system of claim 12, wherein the application protection unit
When the operating system detects that it attempts to access a memory page allocated to a resource of the application program to process a system call, acquires original data of data to be processed by the system call, Acquiring data processed according to the system call and comparing a hash value of the original data with a hash value of the processed data according to the system call, And verifies the integrity of the processed data.
상기 응용 프로그램이 보호 대상으로 설정되면, 상기 응용 프로그램의 자원이 할당된 메모리 페이지는 보호 대상으로 등록되는, 디바이스.13. The method of claim 12,
Wherein, when the application program is set as a protection target, a memory page to which a resource of the application program is allocated is registered as a protection target.
상기 운영 체제에 의해 상기 응용 프로그램의 자원으로 새로운 메모리 페이지가 할당됨을 감지하고, 상기 할당된 새로운 메모리 페이지가 상기 보호 대상으로 등록된 메모리 페이지와 동일하다고 판단되면, 상기 새로운 메모리 페이지에 대한 할당을 해제하는, 디바이스.20. The apparatus of claim 19, wherein the application protection unit
Detecting that a new memory page is allocated to the resource of the application program by the operating system; and when it is determined that the allocated new memory page is the same as the memory page registered as the protection target, Device.
상기 운영 체제가 상기 응용 프로그램의 페이지 테이블을 수정하는 경우, 상기 수정된 페이지 테이블에 따라 상기 응용 프로그램의 자원으로 할당된 메모리 페이지를 보호 대상으로 등록하거나 보호 대상에서 해제하는, 디바이스.20. The apparatus of claim 19, wherein the application protection unit
And when the operating system modifies a page table of the application program, registers a memory page allocated as a resource of the application program according to the modified page table as a protection target or releases the protection target.
상기 운영 체제 대신 다른 응용 프로그램이 상기 응용 프로그램의 자원에 접근할 수 있는 상태인지 여부를 판단하고, 상기 판단 결과에 따라 상기 응용 프로그램의 자원에 대한 접근 권한을 수행하는, 디바이스.18. The method of claim 17,
Wherein the application program determines whether or not another application program can access the resource of the application program in place of the operating system, and performs an access right to the resource of the application program according to the determination result.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140174293A KR102297476B1 (en) | 2014-12-05 | 2014-12-05 | Method and apparatus for protecting resource of application program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140174293A KR102297476B1 (en) | 2014-12-05 | 2014-12-05 | Method and apparatus for protecting resource of application program |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160068480A true KR20160068480A (en) | 2016-06-15 |
KR102297476B1 KR102297476B1 (en) | 2021-09-02 |
Family
ID=56135153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140174293A KR102297476B1 (en) | 2014-12-05 | 2014-12-05 | Method and apparatus for protecting resource of application program |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102297476B1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120061249A (en) * | 2010-12-03 | 2012-06-13 | 한국과학기술원 | Hypervisor-assisted User Application Memory Protection Method |
KR20140068964A (en) * | 2011-09-12 | 2014-06-09 | 마이크로소프트 코포레이션 | Resource access authorization |
KR101460451B1 (en) * | 2013-09-06 | 2014-11-12 | 포항공과대학교 산학협력단 | Apparatus and method for controlling process address space |
-
2014
- 2014-12-05 KR KR1020140174293A patent/KR102297476B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120061249A (en) * | 2010-12-03 | 2012-06-13 | 한국과학기술원 | Hypervisor-assisted User Application Memory Protection Method |
KR20140068964A (en) * | 2011-09-12 | 2014-06-09 | 마이크로소프트 코포레이션 | Resource access authorization |
KR101460451B1 (en) * | 2013-09-06 | 2014-11-12 | 포항공과대학교 산학협력단 | Apparatus and method for controlling process address space |
Also Published As
Publication number | Publication date |
---|---|
KR102297476B1 (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9753865B2 (en) | System and methods for executing encrypted code | |
RU2703156C2 (en) | Computer security systems and methods using asynchronous introspection exceptions | |
KR102189296B1 (en) | Event filtering for virtual machine security applications | |
CN107066311B (en) | Kernel data access control method and system | |
EP3238070B1 (en) | Memory protection with non-readable pages | |
US8689212B2 (en) | Information processing device for controlling an application able to access a predetermined device, and control method using an information processing device for controlling an application able to access a predetermined device | |
KR20180124048A (en) | Data Protection with Virtual Resource Views | |
KR101920866B1 (en) | An auxiliary memory device having independent recovery region | |
US20160094555A1 (en) | System and methods for executing encrypted managed programs | |
KR101213572B1 (en) | Hypervisor-assisted User Application Memory Protection Method | |
KR101323858B1 (en) | Apparatus and method for controlling memory access in virtualized system | |
WO2011076464A1 (en) | Method and system for protecting an operating system against unauthorized modification | |
CN112818327A (en) | TrustZone-based user-level code and data security credibility protection method and device | |
EP3080945B1 (en) | Obfuscating in memory encryption keys | |
Ren et al. | Appsec: A safe execution environment for security sensitive applications | |
KR102494167B1 (en) | A Electronic Device And Method For Protecting The Kernel Space of the Memory | |
KR100704721B1 (en) | method for computer protection with real-time monitoring and thereby computer and thereby system | |
KR102584506B1 (en) | State information protection for virtual machines | |
US10592663B2 (en) | Technologies for USB controller state integrity protection | |
KR101467877B1 (en) | System and method for securing process memory using Hypervisor | |
KR102297476B1 (en) | Method and apparatus for protecting resource of application program | |
Vaduva et al. | Observations over SPROBES mechanism on the TrustZone architecture | |
RU119910U1 (en) | BUILT-IN TSM SECURITY MODULE | |
KR102675729B1 (en) | Data protection methods and Apparatus in Linux-based OS | |
US20220374534A1 (en) | File system protection apparatus and method in auxiliary storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) |