KR20220107824A - Fine-grained isolation to protect data against in-process attacks - Google Patents

Fine-grained isolation to protect data against in-process attacks Download PDF

Info

Publication number
KR20220107824A
KR20220107824A KR1020210010970A KR20210010970A KR20220107824A KR 20220107824 A KR20220107824 A KR 20220107824A KR 1020210010970 A KR1020210010970 A KR 1020210010970A KR 20210010970 A KR20210010970 A KR 20210010970A KR 20220107824 A KR20220107824 A KR 20220107824A
Authority
KR
South Korea
Prior art keywords
access
code
encryption key
allowed
assigned
Prior art date
Application number
KR1020210010970A
Other languages
Korean (ko)
Other versions
KR102493066B1 (en
Inventor
조영필
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020210010970A priority Critical patent/KR102493066B1/en
Publication of KR20220107824A publication Critical patent/KR20220107824A/en
Application granted granted Critical
Publication of KR102493066B1 publication Critical patent/KR102493066B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

In the AArch64 architecture, a fine-grained isolation technique for counteracting intra-process attacks is disclosed. A data isolation method for responding to an attack inside the process performed by a data isolation system may include the steps of: executing a code for which an encryption key is assigned through a memory permission in an architecture of a computer processor, and access is permitted; and controlling access to sensitive data of the access-allowed code using the assigned encryption key while the access-allowed code is being executed.

Description

프로세스 내부 공격에 대응하기 위한 세밀한 고립 기술{FINE-GRAINED ISOLATION TO PROTECT DATA AGAINST IN-PROCESS ATTACKS} FINE-GRAINED ISOLATION TO PROTECT DATA AGAINST IN-PROCESS ATTACKS

아래의 설명은 컴퓨터 프로세서의 아키텍처 환경에서 프로세스 내부 공격에 대응하기 위한 방법 및 시스템에 관한 것이다. The following description relates to a method and system for responding to an in-process attack in an architectural environment of a computer processor.

많은 소프트웨어 공격들이 실행 중인 프로그램(프로세스) 내에 존재하는 보안에 민감한 데이터(예를 들면, 암호화 키, 암호 및 인증서 등 중요 데이터)를 빼내거나 변조하려는 시도를 하고 있다. 이들 공격은 프로그램 내에 존재하는 버그 및 취약점 등의 결함을 악용하여 민감한 데이터가 있는 프로그램과 동일한 메모리 접근 권한을 얻음으로써 목표를 달성하게 된다. 이에 대응하기 위해 먼저 고려할 수 있는 전략은 프로그램 내에 존재하는 결합을 제거함으로써 공격자들이 악용할 수 없도록 하는 것이나, 전문가에 의해 신중하게 설계된 프로그램조차도 코드 크기에 비례하여 결함을 포함한다는 조사 결과에 비추어보면 이는 달성하기가 거의 불가능하다. 따라서, 프로그램의 보안성 향상을 위한 실질적 전략으로써 오직 허가된 코드만 필요한 데이터에 접근할 수 있도록 허용하는 권한 분리(Privilege Separation) 원칙을 프로그램 설계 단계부터 적용하는 것이 널리 채택되고 있다. 현재 이를 구현하는 대표적인 방법은 민감한 데이터와 이에 접근이 허용된 코드를 별도의 운영체제 프로세스로 분리하는 것이다. 각각의 프로세스는 운영체제가 지원하는 프로세스 간 메모리 격리 메커니즘에 의해 메모리 접근이 차단되므로, 지정된 프로세스 외에는 민감한 데이터에 접근이 차단된다.Many software attacks attempt to extort or tamper with security-sensitive data (eg, sensitive data such as encryption keys, passwords, and certificates) that resides within a running program (process). These attacks achieve their goals by exploiting defects such as bugs and vulnerabilities in the program to gain access to the same memory as the program with sensitive data. The first strategy to consider in response to this is to remove the bonds that exist within the program so that attackers cannot exploit it, but in light of the research findings that even programs carefully designed by experts contain flaws proportional to the size of the code, this is Almost impossible to achieve. Therefore, as a practical strategy for improving program security, applying the Privilege Separation principle, which allows only authorized code to access necessary data, from the program design stage is widely adopted. Currently, a representative way to implement this is to separate sensitive data and code that is allowed to access it into a separate operating system process. Since each process blocks memory access by the interprocess memory isolation mechanism supported by the operating system, access to sensitive data is blocked except for the designated process.

그러나, 이처럼 프로세스를 이용해 격리된 민감한 데이터 또한 "동일 프로세스" 내에서 발생한 취약점을 이용한 공격에는 속수무책으로 당할 수 밖에 없다. 프로세스 내부(In-process) 공격으로 분류된 클래스의 공격들에 대처하기 위해서는 개발자가 민감한 데이터에 대해 프로세스의 전체 코드 중 일부만 접근을 허용할 수 있는 세분화된 데이터 격리(Fine-grained Data Isolation) 기법이 필수적이다. 세분화된 데이터 격리 기법의 핵심은 운영체제에 의해 동일한 메모리 접근 권한을 부여받은 동일 프로세스 내 코드들 간에 상이한 메모리 접근 권한을 부여할 수 있어야 한다는 것이다. 이를 실현하기 위해 가장 최근의 연구로 고안된 비특허문헌 "Shreds: Fine-grained execution units with private memory, IEEE Symposium on Security and Privacy, pp. 56-71, 2016"은 메모리 영역에 할당된 ID를 기반으로 특정 메모리 영역에 대한 액세스 제어를 수행할 수 있도록 하는 ARM의 하드웨어 기능인 메모리 도메인을 이용하였다. 상세하게는, 먼저 고유 도메인 ID를 개인 영역에 할당하고, 해당 영역에 접근이 허용된 코드가 실행 중인지 여부에 따라 도메인 ID와 연관된 메모리 영역의 접근 영역의 접근 권한을 결정하는 도메인 접근 제어 레지스터를 설정하여 개인 영역(private region)에 대한 접근을 허용 또는 금지한다. ARM의 메모리 도메인 덕분에 최소한의 성능 비용으로 여러 개인 데이터 쌍과 코드를 각각 격리할 수 있었다. However, sensitive data isolated using this process is also helpless against attacks using vulnerabilities that occur within the "same process". In order to cope with the attacks of the class classified as in-process attacks, a fine-grained data isolation technique that allows developers to access only a part of the entire code of the process to sensitive data is needed. It is essential. The core of the granular data isolation technique is that it should be possible to grant different memory access rights between codes within the same process that have been granted the same memory access rights by the operating system. To realize this, the non-patent document "Shreds: Fine-grained execution units with private memory, IEEE Symposium on Security and Privacy, pp. 56-71, 2016", designed as the most recent study to realize this, is based on the ID assigned to the memory area. The memory domain, which is a hardware function of ARM that enables access control to a specific memory area, is used. In detail, first, a unique domain ID is assigned to a private area, and a domain access control register is set that determines the access authority of the access area of the memory area associated with the domain ID according to whether or not code allowed to access the area is running. to allow or prohibit access to the private region. ARM's memory domains made it possible to isolate multiple private data pairs and code from each other with minimal performance cost.

하지만 메모리 도메인 기능은 ARM의 32-bit 아키텍처(AArch 32)에서만 존재하며 오늘날 고급형 및 저가형 모바일 장치용 시장에서 널리 사용되는 ARM의 64-bit 아키텍처(AArch 64)에서는 이용이 불가능하다. 이에 따라, AArch64에서 적용이 불가능하며, 또한, ARM의 메모리 도메인은 결국 운영체제(OS) 커널의 관리 하에서 작동하기 때문에 매번 민감한 데이터에 대한 액세스가 요청될 때마다 커널이 개입해야 하므로 수천 CPU 사이클을 소비하게 되는 문제가 있다. However, memory domain functionality exists only on ARM's 32-bit architecture (AArch 32) and is not available on ARM's 64-bit architecture (AArch 64), which is widely used in the market for high-end and low-end mobile devices today. Accordingly, it is not applicable in AArch64, and since the memory domain of ARM eventually operates under the management of the operating system (OS) kernel, it consumes thousands of CPU cycles because the kernel has to intervene each time access to sensitive data is requested. There is a problem to do.

암호화 키에 기초하여 오직 허용된 코드만 민감한 데이터에 접근할 수 있도록 세분화된 데이터 격리 기능인 실러(Sealer)를 구현하고, 구현된 기능을 API 형태로 제공하고자 한다.Based on the encryption key, we want to implement a sealer, a granular data isolation function, so that only permitted codes can access sensitive data, and provide the implemented function in the form of an API.

데이터 격리 시스템에 의해 수행되는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법은, 컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 단계; 및 상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 단계를 포함할 수 있다. A data isolation method for counteracting an in-process attack performed by a data isolation system includes the steps of: executing an access-allowed code assigned an encryption key through a memory usage right in an architecture of a computer processor; and controlling access to sensitive data for the access-allowed code using the assigned encryption key while executing the access-allowed code.

상기 접근이 허용된 코드를 실행하는 단계는, 상기 접근이 허용된 코드와 관련된 중요 데이터를 결정하고, 상기 접근이 허용된 코드에 암호화 키를 할당하고, 상기 할당된 암호화 키를 통해 상기 중요 데이터와 관련된 중요 데이터를 암호화하는 단계를 포함할 수 있다. The step of executing the access-allowed code may include determining sensitive data related to the access-allowed code, assigning an encryption key to the access-allowed code, and using the allocated encryption key with the sensitive data It may include encrypting the relevant sensitive data.

상기 접근이 허용된 코드를 실행하는 단계는, 상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 실행되는 스레드 내부에 상기 중요 데이터에 접근할 수 있는 영역들을 엔트리 게이트(Entry gate)-엑시트 게이트(Exit gate)로 분류하는 단계를 포함할 수 있다. In the step of executing the access-allowed code, regions that can access the important data in a thread executed in a process of the architecture of the computer processor are classified into an entry gate and an exit gate. may include the step of

상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고, 상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제할 수 있다. The entry gate loads an encryption key assigned to the access-allowed code, an authentication token is issued when the access-allowed code is input to the entry gate, and the exit gate includes the assigned encryption key and the issued authentication token can be deleted.

상기 컴퓨터 프로세서의 아키텍처는, ARM의 AArch64을 포함하고, 상기 메모리 사용 권한은, AArch64에서 도입된 XnR(Execute-no-Read)을 포함하고, 상기 접근이 허용된 코드에 상기 할당된 암호화 키를 읽는 명령어가 실행될 경우, 상기 접근이 허용된 코드에 상기 할당된 암호화 키가 로드되도록 하여 상기 할당된 암호화 키를 보호할 수 있다. The architecture of the computer processor includes ARM's AArch64, and the memory usage right includes XnR (Execute-no-Read) introduced in AArch64, and reads the assigned encryption key to the code allowed for access. When the command is executed, the allocated encryption key may be protected by loading the allocated encryption key into the code allowed to access.

상기 제어하는 단계는, 상기 컴퓨터 프로세서의 아키텍처에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 상기 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 상기 접근이 허용된 코드가 상기 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)하고, 상기 접근이 종료되면, 엑시트 게이트에서 상기 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지하는 단계를 포함할 수 있다. In the controlling step, as a thread is executed in the architecture of the computer processor, an entry gate of an access-allowed code is reached, and an encryption key and an authentication token assigned to the access-allowed code are both loaded into the entry gate. Accordingly, the access-allowed code accesses the encrypted sensitive data using the assigned encryption key, and when the access is terminated, the assigned encryption key and authentication token are deleted from the exit gate, and the thread is executed. may include the step of maintaining

상기 제어하는 단계는, 복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 상기 중요 데이터를 공유하는 단계를 포함할 수 있다. In the controlling step, based on identification information allocated to a private region including a plurality of access-allowed codes and sensitive data, each of the access-allowed codes is assigned to the private region having the same identification information. It may include sharing data.

상기 데이터 격리 방법이 수행되는 동작이 API로 제공될 수 있다. An operation performed by the data isolation method may be provided as an API.

데이터 격리 시스템은, 컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 코드 실행부; 및 상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 접근 제어부를 포함할 수 있다. The data isolation system includes: a code execution unit that executes an access-allowed code assigned an encryption key through a memory usage right in an architecture of a computer processor; and an access control unit for controlling access to sensitive data for the access-allowed code using the assigned encryption key while executing the access-allowed code.

상기 코드 실행부는, 상기 접근이 허용된 코드와 관련된 중요 데이터를 결정하고, 상기 접근이 허용된 코드에 암호화 키를 할당하고, 상기 할당된 암호화 키를 통해 상기 중요 데이터와 관련된 중요 데이터를 암호화할 수 있다. The code execution unit may determine sensitive data related to the code for which the access is permitted, assign an encryption key to the code for which the access is permitted, and encrypt the sensitive data related to the sensitive data through the assigned encryption key. have.

상기 코드 실행부는, 상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 실행되는 스레드 내부에 상기 중요 데이터에 접근할 수 있는 영역들을 엔트리 게이트(Entry gate)-엑시트 게이트(Exit gate)로 분류할 수 있다. The code execution unit may classify regions capable of accessing the important data within a thread executed in a process of the architecture of the computer processor into an entry gate and an exit gate.

상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고, 상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제할 수 있다. The entry gate loads an encryption key assigned to the access-allowed code, an authentication token is issued when the access-allowed code is input to the entry gate, and the exit gate includes the assigned encryption key and the issued authentication token can be deleted.

상기 컴퓨터 프로세서의 아키텍처는, ARM의 AArch64을 포함하고, 상기 메모리 사용 권한은, AArch64에서 도입된 XnR(Execute-no-Read)을 포함하고, 상기 접근이 허용된 코드에 상기 할당된 암호화 키를 읽는 명령어가 실행될 경우, 상기 접근이 허용된 코드에 상기 할당된 암호화 키가 로드되도록 하여 상기 할당된 암호화 키를 보호할 수 있다. The architecture of the computer processor includes ARM's AArch64, and the memory usage right includes XnR (Execute-no-Read) introduced in AArch64, and reads the assigned encryption key to the code allowed for access. When the command is executed, the allocated encryption key may be protected by loading the allocated encryption key into the code allowed to access.

상기 접근 제어부는, 상기 컴퓨터 프로세서의 아키텍처에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 상기 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 상기 접근이 허용된 코드가 상기 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)하고, 상기 접근이 종료되면, 엑시트 게이트에서 상기 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지할 수 있다. As a thread is executed in the architecture of the computer processor, the access control unit arrives at the entry gate of the access-allowed code, and as both the encryption key and the authentication token assigned to the access-allowed code are loaded into the entry gate The access-allowed code accesses the encrypted sensitive data using the assigned encryption key, and when the access is terminated, the assigned encryption key and authentication token are deleted from the exit gate, and the thread execution is resumed. can keep

상기 접근 제어부는, 복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 상기 중요 데이터를 공유할 수 있다. The access control unit, based on the identification information assigned to the private region (private region) including a plurality of access-allowed codes and important data, each of the access-allowed codes in the private region having the same identification information, the important data can be shared

오직 허가된 코드만 필요한 데이터에 접근할 수 있도록 허용하는 권한 분리(Privilege Separation) 원칙을 프로그램 설계 단계부터 적용함으로써 민감한 데이터에 대한 접근 가능성을 극적으로 낮춰 보안성을 향상시킬 수 있다. By applying the principle of Privilege Separation, which allows only authorized code to access necessary data, from the program design stage, it can dramatically reduce the possibility of access to sensitive data and improve security.

오직 허용된 코드만 민감한 데이터에 접근할 수 있도록 구현된 세분화된 데이터 격리 기능을 API 형태로 개발자에게 제공함으로써 개발자들이 자유롭게 실러를 이용할 수 있도록 한다. By providing developers with a granular data isolation function implemented so that only permitted code can access sensitive data in the form of an API, developers can freely use the sealer.

도 1은 일 실시예에 있어서, 실러의 개괄적인 데이터 격리 동작을 설명하기 위한 도면이다.
도 2는 일 실시예에 있어서, 데이터 격리를 위한 실러의 개발 프로세스를 설명하기 위한 도면이다.
도 3은 일 실시예에 있어서, 접근이 허용된 코드 및 개인 영역에 대한 관리 체계를 설명하기 위한 도면이다.
도 4는 일 실시예에 있어서, 엔트리 게이트를 설명하기 위한 예이다.
도 5는 일 실시예에 있어서, 프라이빗 메모리에 접근하는 동작을 설명하기 위한 도면이다.
도 6은 일 실시예에 있어서, 엑시트 게이트를 설명하기 위한 예이다.
도 7은 일 실시예에 있어서, 데이터 격리 시스템의 구성을 설명하기 위한 블록도이다.
도 8은 일 실시예에 있어서, 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법을 설명하기 위한 흐름도이다.
1 is a diagram for explaining a general data isolation operation of a sealer according to an embodiment.
2 is a diagram for explaining a process of developing a sealer for data isolation, according to an embodiment.
3 is a diagram for explaining a management system for an access-allowed code and a personal area, according to an embodiment.
4 is an example for explaining an entry gate according to an embodiment.
5 is a diagram for explaining an operation of accessing a private memory according to an embodiment.
6 is an example for explaining an exit gate according to an embodiment.
7 is a block diagram illustrating a configuration of a data isolation system according to an embodiment.
8 is a flowchart illustrating a data isolation method for responding to an in-process attack, according to an embodiment.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.

실시예에서는 컴퓨터 프로세서 아키텍처에서 암호화 키에 기초하여 오직 허용된 코드만 민감한 데이터에 접근할 수 있도록 세분화된 데이터 격리 기능을 제공하기 위한 것이다. 컴퓨터 프로세서는 임베디드 기기에서 많이 사용되는 RISC 프로세서일 수 있다. 예를 들면, ARM의 32비트 아키텍처(AArch32), 또는 64비트 아키텍처(AArch64)를 포함할 수 있다. The embodiment is intended to provide a granular data isolation function so that only authorized code can access sensitive data based on the encryption key in the computer processor architecture. The computer processor may be a RISC processor widely used in embedded devices. For example, it may include ARM's 32-bit architecture (AArch32), or 64-bit architecture (AArch64).

실시예에서는 메모리 격리를 위한 하드웨어 지원 부족을 극복하면서 AArch64에서 효율적인 데이터 격리를 제공하기 위한 실러를 구현하는 동작을 설명하기로 한다. 실러는 AArch64에 존재하는 하드웨어 기능을 결합함으로써 구현될 수 있다. The embodiment describes the operation of implementing a sealer to provide efficient data isolation in AArch64 while overcoming the lack of hardware support for memory isolation. A sealer can be implemented by combining the hardware functions present in AArch64.

도 1은 일 실시예에 있어서, 실러의 개괄적인 데이터 격리 동작을 설명하기 위한 도면이다. 1 is a diagram for explaining a general data isolation operation of a sealer according to an embodiment.

프로세스 내부에는 자체 스레드 수준 보호 메커니즘을 가지고 있다고 가정하는 다수의 스레드가 실행될 수 있다. 실러의 목적은 프로세스 내/스레드 공격에 대한 추가적인 메커니즘을 사용하여 스레드(특히, 민감한 데이터)를 보호하는 것이다. Multiple threads can run inside a process, assuming it has its own thread-level protection mechanism. The purpose of the sealer is to protect threads (especially sensitive data) with an additional mechanism against in-process/thread attacks.

스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달될 수 있다(1). 엔트리 게이트의 두가지 중요한 역할은 암호화 키를 로딩(loading)하고, 실러의 두 가지 보안 속성을 충족시키기 위해 인증 토큰을 생성하는 것이다. 접근이 허용된 코드에 의해 사용된 암호화 키는 개인 영역(private region)에 암호화되어 저장된 민감 콘텐츠에 접근할 수 있는 독점 권한을 부여할 수 있다. 유효한 암호화 키가 없이 스레드에서 비공개 콘텐츠를 읽거나(read) 쓰려는(write) 코드가 시도될 경우, 충돌하거나 예측할 수 없는 결과가 발생될 수 있다. 인증 토큰은 접근이 허용된 코드의 원자적 실행을 확인하는데 사용될 수 있다. 인증 토큰은 엔트리 게이트를 통해 코드가 입력될 때만 발급되므로, 실러는 토큰의 존재 여부를 확인하는 것만으로도 엔트리 게이트를 거치지 않고 코드로 점프하려는 시도를 감지할 수 있다. 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드되면, 접근이 허용된 코드는 중요 데이터(민감한 데이터)(sensitive data)에 독점적으로 접근(access)할 수 있다(2). 접근이 허용된 코드가 종료되면, 엑시트 게이트는 엔트리 게이트에서 생성된 암호화 키와 인증 토큰과 같은 보안상 위험한 상태를 지우고, 스레드 실행을 계속 유지한다(3). As the thread executes, it may reach the entry gate of the code it is allowed access to (1). The two important roles of the entry gate are to load the encryption key and generate an authentication token to satisfy the sealer's two security attributes. The encryption key used by the access-granted code can grant exclusive access to sensitive content encrypted and stored in a private region. If code attempts to read or write private content in a thread without a valid encryption key, crashes or unpredictable results can occur. Authentication tokens can be used to verify the atomic execution of code to which access is granted. Since the authentication token is issued only when the code is entered through the entry gate, the sealer can detect an attempt to jump to the code without going through the entry gate simply by checking for the existence of the token. When both the encryption key and the authentication token are loaded into the entry gate, the code granted access has exclusive access to sensitive data (2). When the code to which access is permitted is terminated, the exit gate clears any security risks, such as encryption keys and authentication tokens generated by the entry gate, and keeps the thread running (3).

도 2는 일 실시예에 있어서, 데이터 격리를 위한 실러의 개발 프로세스를 설명하기 위한 도면이다. 2 is a diagram for explaining a process of developing a sealer for data isolation according to an embodiment.

도 2에서는 데이터 격리의 시행을 용이하게 하기 위해 실러를 사용한 애플리케이션의 개발 프로세스를 설명하기로 한다. 애플리케이션 개발자의 유일한 요구사항은 소스 코드 수준에서 실러 API를 사용하여 격리 대상, 즉 중요 데이터에 액세스하기 위한 접근이 허용된 코드와 중요 데이터를 포함할 메모리 블록을 정의하는 것이다. 실러 API로 보강된 실행 파일은 시스템에 로드되어 실행될 수 있다. 이때 실러의 로더는 실행 전용 권한 구성과 같은 실러의 데이터 격리를 시행하기 위한 커널 수준의 지원을 제공한다. In Figure 2, the development process of an application using a sealer to facilitate the enforcement of data isolation will be described. The only requirement for application developers is to use the sealer API at the source code level to define what is quarantined, that is, the code that is allowed access to the sensitive data and the memory blocks that will contain the sensitive data. Executables augmented with the Sealer API can be loaded into the system and executed. In this case, the sealer's loader provides kernel-level support for enforcing the sealer's data isolation, such as configuring execute-only privileges.

도 3은 일 실시예에 있어서, 접근이 허용된 코드 및 개인 영역에 대한 관리 체계를 설명하기 위한 도면이다. 3 is a diagram for explaining a management system for an access-allowed code and a personal area, according to an embodiment.

실시예에서는 AArch64에서 이용 가능한 세분화된 데이터 격리 기법인 실러가 구현될 수 있다. 실러는 중요 데이터의 값을 암호화함으로써 임의의 접근에 대응하도록 한다. 실러는 데이터 격리를 보장하기 위하여 외부의 승인된 코드로의 실행 흐름을 변조하려는 모든 시도를 감지하고 중단할 수 있어야 하고, 개인 영역이 관련된 접근이 허용된 코드에만 접근할 수 있도록 해야 한다. In an embodiment, a sealer, which is a fine-grained data isolation technique available in AArch64, may be implemented. Sealer protects against random access by encrypting the value of sensitive data. Sealers should be able to detect and abort any attempt to tamper with the flow of execution to externally authorized code to ensure data isolation, and should ensure that private domains only have access to code to which they have been granted access.

보다 구체적으로, 먼저 중요 데이터와 접근이 허용된 코드의 쌍을 먼저 결정하고 각각에 고유한 암호화 키를 할당한다. 접근이 허용된 코드는 독점적으로 하나의 암호화 키를 소유하여 코드를 실행하는 동안 암호화된 중요 데이터에 접근할 수 있게 된다. 실러를 구현하기 위해서는 어떻게 암호화 키를 안전하게 보호할 것인지에 대한 해결책을 제시할 수 있어야 한다. 이를 해결하기 위하여 AArch64에서 새로 도입된 XnR(Execute-no-Read)라는 메모리 사용 권한을 이용하고자 한다. XnR을 통해 삽입된 키를 보호하고, 중요 데이터에 접근이 허용된 코드 별로 별도의 키를 할당하는 기능을 제공한다. XnR은 악의적인 메모리 접근에 의해 펌웨어와 같은 보안 중요 코드가 노출되는 것을 방지하기 위해 사용된다. 실시예에서는 코드에 데이터를 삽입(embed)하고, 코드를 XnR을 통해 보호하는 과정을 통해 암호화 키를 효과적으로 보호할 수 있다는 것을 응용하였다. 이를 통해 실러는 도 3과 같은 구조에 기초하여 AArch64에서 암호화 기법을 기반으로 세분화된 데이터 격리를 안전하게 실현할 수 있다. More specifically, it first determines which pairs of sensitive data and codes are allowed to access, and assigns a unique encryption key to each. Access granted code exclusively owns one encryption key, allowing access to sensitive encrypted data while executing the code. In order to implement a sealer, it should be possible to provide a solution on how to secure the encryption key. To solve this problem, we want to use the memory usage right called XnR (Execute-no-Read) newly introduced in AArch64. It protects the key inserted through XnR and provides a function to allocate a separate key for each code that is allowed to access important data. XnR is used to prevent exposing security-critical code such as firmware by malicious memory access. In the embodiment, it was applied that the encryption key can be effectively protected through the process of embedding data into the code and protecting the code through XnR. Through this, the sealer can safely realize granular data isolation based on the encryption technique in AArch64 based on the structure shown in FIG. 3 .

실러 API를 설명하기 전에 먼저 접근이 허용된 코드 및 개인 영역에 대한 실러의 관리 체계의 세부 정보를 설명하기로 한다. 도 3에서와 같이, 실러는 여러 쌍의 접근이 허용된 코드와 개인 영역을 지원할 수 있다. 모든 접근이 허용된 코드와 개인 영역에서는 개발 시간에 식별 정보(ID)가 할당될 수 있다. 실러는 런타임 시에 주어진 ID에 따라 각 접근이 허용된 코드와 개인 영역에 암호화 키를 할당하므로, 각 접근이 허용된 코드가 동일한 ID를 갖는 개인 영역과 쌍을 이룬다. 일부 접근이 허용된 코드는 동일한 ID를 가질 수 있으며, 이 경우, 모든 코드가 동일한 개인 영역과 쌍을 이루며 동일한 중요 데이터를 공유할 수 있다. 그러나, 각 접근이 허용된 코드는 하나의 ID만 가질 수 있으므로 복수 개의 개인 영역과 쌍을 이룰 수 없다. 개인 영역은 중요 데이터 셋으로 구성되고, 중요 데이터는 개인 영역과 관련된 접근이 허용된 코드를 통해 개인 영역에 동적으로 추가하거나 삭제될 수 있다. Before describing the sealer API, we will first describe the details of the sealer's management system for the code and private areas that are allowed to access. As shown in Figure 3, the sealer can support multiple pairs of access-allowed code and private areas. In code and private domains to which all access is allowed, identification information (ID) can be assigned at development time. The sealer assigns an encryption key to each access-allowed code and private domain according to a given ID at runtime, so that each access-allowed code is paired with a private domain with the same ID. Codes that have been granted some access can have the same ID, in which case all codes can be paired with the same private area and share the same sensitive data. However, since each access-allowed code can have only one ID, it cannot be paired with multiple private areas. The personal area consists of sensitive data sets, and sensitive data can be dynamically added to or deleted from the personal area through a code that is allowed access related to the personal area.

상기 설명한 관리 체계를 지원하기 위해 실러는 개발자에게 4개의 API를 제공할 수 있다. 실러 API는 중요 데이터에 접근이 허용된 코드의 시작 및 끝 지점을 지정하는 API이고, 보호된 암호화 키를 바탕으로 중요 데이터에 접근할 수 있도록 하는 API이다. 첫째, 개발 시 접근이 허용된 코드를 정의하기 위하여 두 개의 API가 제공될 수 있다. 애플리케이션 개발자는 Sealer_start 및 Sealer_end를 사용하여 각 접근이 허용된 코드의 시작 게이트 및 종료 게이트를 표시할 수 있다. Sealer_start의 매개변수로 전달된 번호(ID)는 각 접근이 허용된 코드를 식별하는데 사용될 수 있다. 둘째, 실러로 보호되는 중요 데이터의 암호화 및 복호화를 위해 개발자에게 Sealer_encrypt 및 Sealer_decrypt가 제공될 수 있다. To support the management scheme described above, Schiller can provide developers with four APIs. The sealer API is an API that specifies the start and end points of a code that is allowed to access sensitive data, and it is an API that allows access to sensitive data based on a protected encryption key. First, two APIs can be provided to define the code that is allowed to access during development. Application developers can use Sealer_start and Sealer_end to mark the start and end gates of each allowed code. The number (ID) passed as a parameter of Sealer_start can be used to identify each access-allowed code. Second, Sealer_encrypt and Sealer_decrypt can be provided to developers for encryption and decryption of sensitive data protected by the sealer.

실러의 로더는 커널 수준에서만 수행할 수 있는 작업을 처리하기 위해 커널에서 동작하는 실러의 구성요소이다. 실러가 있는 프로그램이 시스템에서 실행되면, 접근이 허용된 코드에 암호화 키와 인증 토큰을 할당하기 위해 개입될 수 있다. 실러의 로더는 먼저 암호화 키와 랜덤 인증 토큰을 생성하여 접근이 허용된 코드의 일부로 삽입할 수 있다. 그 후, 엔트리 게이트, 엑시트 게이트의 메모리 영역, 접근이 허용된 코드에 대한 실행 전용 권한을 활성화하여 런타임에 눈에 띄는 성능 저하없이 공격자로부터 암호키를 보호할 수 있다. 실러의 로더의 또 다른 역할은 암호화 키와 같은 레지스터에 저장된 비밀을 코드의 외부에 노출되지 않도록 보호하는 것이다. 실러는 신호가 전달될 때 접근이 허용된 코드가 실행 중일 경우, 실러의 로더는 커널에 있는 레지스터를 백업하고 이를 무효화하여 신호 처리 중에 공격자에게 노출되지 않도록 한다. 신호 처리가 완료되고 접근이 허용된 코드가 반환되면 실러는 레지스터의 이전값을 복원하여 접근이 허용된 코드의 실행을 올바르게 계속할 수 있다.The loader of the sealer is a component of the sealer that runs in the kernel to handle tasks that can only be performed at the kernel level. When a program with a sealer is executed on the system, it can intervene to assign encryption keys and authentication tokens to code that is allowed access. Sealer's loader first generates an encryption key and a random authentication token, which can be inserted as part of the allowed access code. After that, you can protect cryptographic keys from attackers at runtime without any noticeable performance penalty by activating the entry gate, the memory region of the exit gate, and execute-only permissions for the code to which access is allowed. Another role of the sealer's loader is to protect secrets stored in registers, such as encryption keys, from being exposed outside of the code. The sealer's loader backs up the registers in the kernel and invalidates them if the code to which access is allowed is running when the signal is sent, so that they are not exposed to attackers during signal processing. When the signal processing is complete and the allowed code is returned, the sealer restores the previous value of the register so that execution of the allowed code can continue correctly.

도 4는 일 실시예에 있어서, 엔트리 게이트를 설명하기 위한 예이다. 4 is an example for explaining an entry gate according to an embodiment.

엔트리 게이트에서 인증 토큰은 안전하게 생성되어야 하며 변조 또는 유출을 방지하기 위하여 숨겨져야 한다. 토큰의 값은 암호화 키와 같이 실행 전용 권한(메모리 사용 권한)이 적용된 코드 영역에 저장될 수 있다. 다시 말해서, move 명령의 즉시 필드에 값이 표시되며, 도 4와 같이 명령어를 실행하여 범용 레지스터에 로드될 수 있다. 다음으로 접근이 허용된 코드가 실행될 때 접근이 허용된 코드를 사용하여 연산이 확인되므로 인증 토큰의 값을 안전하게 숨겨야 한다. 이를 위해, dbgdtr_el0라는 디버그 레지스터에 인증값을 유지하고, 레지스터의 사용을 금지하는 코드 계측을 통해 인증되지 않은 코드로부터 토큰에 접근하는 것을 방지한다. 디버그 레지스터에 인증 토큰값을 유지하여 인증 토큰을 보호할 수 있다.At the entry gate, the authentication token must be securely generated and hidden to prevent tampering or leakage. The value of the token can be stored in a code area to which execution-only privileges (memory usage privileges) are applied, such as encryption keys. In other words, a value is displayed in the immediate field of the move instruction, and can be loaded into a general register by executing the instruction as shown in FIG. 4 . Next, when the access-allowed code is executed, the operation is verified using the access-allowed code, so the value of the authentication token must be safely hidden. To this end, the authentication value is maintained in a debug register called dbgdtr_el0, and access to the token from unauthorized code is prevented through code instrumentation that prohibits the use of the register. You can protect the authentication token by keeping the authentication token value in the debug register.

도 4를 참고하면, 실러의 엔트리 게이트를 나타낸 것이다. AES 라운드 키 설정(5행~14행)은 11개의 모든 AES 키에 대해 반복될 수 있다. 실러는 128비트 키 길이(AES 128)의 AES 암호화 알고리즘이 암호화 알고리즘으로서 사용되며, 암호화 및 복호화 작업에 각각 11개의 라운드 키를 사용할 수 있다. 이러한, AES 라운드 키의 값은 move 명령어의 즉시 필드(immediate field)에 표시되며, 인증 토큰의 값과 같이 코드에 안전하게 저장될 수 있다. AArch64의 즉시 레지스터 move 명령어에는 16비트 즉시 필드가 있으므로 하나의 라운드 키를 나타내려면 8개의 move 명령어가 필요하다. 그러나, 총 352 바이트까지의 모든 AES 라운드 키는 개수 제한으로 인해 디버그 레지스터나 범용 레지스터와 같은 시스템 레지스터에 로드할 수 없다는 문제가 있다. 이를 해결하기 위해, 벡터 레지스터를 사용하여 AES 라운드 키를 효율적으로 로드시킬 수 있다. AArch64에서 지원하는 벡터 레지스터는 v0에서 v31까지의 32개의 레지스터이며, 각 레지스터는 128 비트 레지스터이다. AES 128 알고리즘의 라운드 키 사이즈도 128비트이므로, 벡터 레지스터 v10~v32를 사용하여 라운드 키를 효율적으로 로드할 수 있다. Referring to Figure 4, it shows the entry gate of the sealer. The AES round key setup (lines 5-14) can be repeated for all 11 AES keys. Sealer uses an AES encryption algorithm with a 128-bit key length (AES 128) as an encryption algorithm, and can use 11 round keys for encryption and decryption, respectively. The value of the AES round key is displayed in the immediate field of the move command, and can be safely stored in the code like the value of the authentication token. AArch64's immediate register move instruction has a 16-bit immediate field, so eight move instructions are required to represent one round key. However, there is a problem that all AES round keys up to 352 bytes in total cannot be loaded into system registers such as debug registers or general-purpose registers due to the number limit. To solve this, a vector register can be used to efficiently load the AES round key. The vector registers supported by AArch64 are 32 registers from v0 to v31, and each register is a 128-bit register. The round key size of the AES 128 algorithm is also 128 bits, so vector registers v10 to v32 can be used to load round keys efficiently.

도 5는 일 실시예에 있어서, 프라이빗 메모리에 접근하는 동작을 설명하기 위한 도면이다. 5 is a diagram for explaining an operation of accessing a private memory according to an embodiment.

암호화 키와 인증 토큰을 엔트리 게이트의 레지스터에 로드한 후, 접근이 허용된 코드는 이러한 값을 사용하여 프라이빗 메모리에 접근할 수 있다. 중요 데이터가 프라이빗 메모리에 저장되면 암호화 형식으로 저장되어야 한다. 도 5에 표시된 것처럼, 접근이 허용된 코드는 먼저 AES 128 암호화 작업을 사용하여 중요 데이터를 암호화한 다음, 중요 데이터를 프라이빗 메모리에 저장할 수 있다. After loading the encryption key and authentication token into the registers of the entry gate, the code allowed access can use these values to access the private memory. When sensitive data is stored in private memory, it must be stored in an encrypted form. As shown in Figure 5, the code allowed to access can first encrypt sensitive data using an AES 128 encryption operation, and then store the sensitive data in private memory.

도 5의 4행 내지 13행에 나타낸 코드는 AArch64의 암호화 확장을 사용하는 AES 128의 10가지 암호화 라운드를 나타낸다. 암호화 확장은 AES 알고리즘의 가속을 위한 4가지 명령어(aese, aesmc, aesd and aesimc)를 제공한다. 각 라운드는 각 AES 라운드 키(v10~v20)을 사용하여 v0에 포함된 일반 텍스트 블록을 암호화할 수 있다. 마지막으로 접근이 허용된 코드는 디버그 레지스터에 저장된 인증 토큰의 값을 확인하여, 이 시점에서의 실행이 엔트리 게이트에서 시작하는 정상적인 흐름에서 시작되었는지 확인할 수 있다. 이때, 인가되지 않은 코드에서 접근이 허용 코드로 직접 실행 흐름을 전환하려는 시도가 감지될 수 있다. 복호화 시에 aese 및 aesmc 명령어 대신 aesd 및 aesimc 명령어가 다른 AES 라운드 키(v21~v31)와 함께 사용될 수 있다.The codes shown in lines 4 to 13 of Figure 5 represent 10 encryption rounds of AES 128 using the encryption extension of AArch64. The cryptographic extension provides four instructions (aese, aesmc, aesd and aesimc) for accelerating the AES algorithm. Each round can use each AES round key (v10 to v20) to encrypt the plaintext block contained in v0. Finally, the code allowed to access can check the value of the authentication token stored in the debug register to ensure that execution at this point has started in the normal flow starting at the entry gate. At this time, an attempt to switch the flow of execution directly from unauthorized code to access-allowed code may be detected. During decryption, instead of the aese and aesmc commands, the aesd and aesimc commands may be used together with other AES round keys (v21 to v31).

도 6은 일 실시예에 있어서, 엑시트 게이트를 설명하기 위한 예이다. 6 is an example for explaining an exit gate according to an embodiment.

도 6에 표시된 실러의 엑시트 게이트는 암호화 키와 인증 토큰을 삭제하는 역할을 수행할 수 있다. 엔트리 게이트와 달리 벡터 레지스터에 로드된 각 AES 라운드 레지스터는 벡터로 move 명령어에 의해 0으로 초기화될 수 있다. 인증 토큰의 경우, 초기화한 후 값을 체크하는 것이 요구된다. 제어 흐름을 파괴함으로써, 공격자는 9행의 명령을 통해 임의의 값으로 조작할 수 있다. The sealer's exit gate shown in FIG. 6 may serve to delete an encryption key and an authentication token. Unlike entry gates, each AES round register loaded into a vector register can be initialized to zero by a vector-to-move instruction. In the case of an authentication token, it is required to check the value after initialization. By breaking the control flow, an attacker can manipulate arbitrary values through the command in line 9.

도 7은 일 실시예에 있어서, 데이터 격리 시스템의 구성을 설명하기 위한 블록도이고, 도 8은 일 실시예에 있어서, 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법을 설명하기 위한 흐름도이다. 7 is a block diagram illustrating a configuration of a data isolation system according to an embodiment, and FIG. 8 is a flowchart illustrating a data isolation method for responding to an in-process attack according to an embodiment.

데이터 격리 시스템(100)의 프로세서는 코드 실행부(710) 및 접근 제어부(720)를 포함할 수 있다. 이러한 프로세서의 구성요소들은 데이터 격리 시스템에 저장된 프로그램 코드가 제공하는 제어 명령에 따라 프로세서에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 프로세서 및 프로세서의 구성요소들은 도 8의 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법이 포함하는 단계들(810 내지 820)을 수행하도록 데이터 격리 시스템을 제어할 수 있다. 이때, 프로세서 및 프로세서의 구성요소들은 메모리가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.The processor of the data isolation system 100 may include a code execution unit 710 and an access control unit 720 . These processor components may be representations of different functions performed by the processor in accordance with control instructions provided by program code stored in the data isolation system. The processor and components of the processor may control the data isolation system to perform steps 810 to 820 included in the data isolation method for responding to the in-process attack of FIG. 8 . In this case, the processor and the components of the processor may be implemented to execute instructions according to the code of the operating system included in the memory and the code of at least one program.

프로세서는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리에 로딩할 수 있다. 예를 들면, 데이터 격리 시스템에서 프로그램이 실행되면, 프로세서는 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드를 메모리에 로딩하도록 데이터 격리 시스템을 제어할 수 있다. 이때, 코드 실행부(710) 및 접근 제어부(720) 각각은 메모리에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(810 내지 820)을 실행하기 위한 프로세서의 서로 다른 기능적 표현들일 수 있다.The processor may load the program code stored in the file of the program for the data isolation method for countering the in-process attack into the memory. For example, when the program is executed in the data isolation system, the processor may control the data isolation system to load the program code from the file of the program into the memory according to the control of the operating system. At this time, each of the code execution unit 710 and the access control unit 720 is different functional representations of the processor for executing the instructions of the corresponding portions of the program code loaded into the memory to execute the subsequent steps 810 to 820 . can

단계(810)에서 코드 실행부(710)는 컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행할 수 있다. 코드 실행부(710)는 컴퓨터 프로세서의 아키텍처의 프로세스에서 실행되는 스레드 내부에 중요 데이터에 접근할 수 있는 영역들을 엔트리 게이트(Entry gate)-엑시트 게이트(Exit gate)로 분류할 수 있다. 코드 실행부(710)는 접근이 허용된 코드와 관련된 중요 데이터를 결정하고, 접근이 허용된 코드에 암호화 키를 할당하고, 할당된 암호화 키를 통해 중요 데이터와 관련된 중요 데이터를 암호화할 수 있다. In step 810 , the code execution unit 710 may execute a code to which an access is allowed to which an encryption key is assigned through a memory usage right in the architecture of the computer processor. The code execution unit 710 may classify regions capable of accessing important data within a thread executed in a process of the architecture of the computer processor into an entry gate and an exit gate. The code execution unit 710 may determine sensitive data related to an access-allowed code, allocate an encryption key to the access-allowed code, and encrypt sensitive data related to the sensitive data through the assigned encryption key.

단계(820)에서 및 접근 제어부(720)는 접근이 허용된 코드를 실행하는 동안 할당된 암호화 키를 이용하여 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어할 수 있다. 접근 제어부(720)는 컴퓨터 프로세서의 아키텍처의 프로세스에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 접근이 허용된 코드가 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)되고, 접근이 종료되면, 엑시트 게이트에서 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지할 수 있다. 접근 제어부(720)는 복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 대하여 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 중요 데이터를 공유할 수 있다. In step 820 and the access control unit 720 can control access to sensitive data for the access-allowed code using the assigned encryption key while executing the access-allowed code. have. The access control unit 720 reaches the entry gate of the access-allowed code as the thread is executed in the process of the computer processor architecture, and the encryption key and authentication token assigned to the access-allowed code are all loaded into the entry gate. Accordingly, the code that is allowed access is accessed to the encrypted sensitive data using the assigned encryption key, and when the access is terminated, the assigned encryption key and authentication token are deleted from the exit gate, and the thread execution can be maintained. . The access control unit 720 determines that each code allowed access is important to a private region having the same identification information based on the identification information allocated for a private region including a plurality of access-allowed codes and important data. data can be shared.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The device described above may be implemented as a hardware component, a software component, and/or a combination of the hardware component and the software component. For example, the apparatus and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA). , a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions, may be implemented using one or more general purpose or special purpose computers. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that may include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device, to be interpreted by or to provide instructions or data to the processing device. may be embodied in The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited embodiments and drawings, various modifications and variations are possible by those skilled in the art from the above description. For example, the described techniques are performed in a different order than the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (15)

데이터 격리 시스템에 의해 수행되는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법에 있어서,
컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 단계; 및
상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
A data isolation method for responding to an in-process attack performed by a data isolation system, the data isolation method comprising:
executing, in an architecture of a computer processor, an access-allowed code assigned an encryption key through memory usage rights; and
Controlling access to sensitive data for the access-allowed code using the assigned encryption key while executing the access-allowed code
A data isolation method to counter in-process attacks, including
제1항에 있어서,
상기 접근이 허용된 코드를 실행하는 단계는,
상기 접근이 허용된 코드와 관련된 중요 데이터를 결정하고, 상기 접근이 허용된 코드에 암호화 키를 할당하고, 상기 할당된 암호화 키를 통해 상기 중요 데이터와 관련된 중요 데이터를 암호화하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The step of executing the access-allowed code is,
determining sensitive data related to the access-allowed code, assigning an encryption key to the access-allowed code, and encrypting the sensitive data related to the sensitive data through the assigned encryption key
A data isolation method to counter in-process attacks, including
제1항에 있어서,
상기 접근이 허용된 코드를 실행하는 단계는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 실행되는 스레드 내부에 상기 중요 데이터에 접근할 수 있는 영역들을 엔트리 게이트(Entry gate)-엑시트 게이트(Exit gate)로 분류하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The step of executing the access-allowed code is,
Classifying regions that can access the important data within a thread executed in a process of the architecture of the computer processor into entry gates and exit gates
A data isolation method to counter in-process attacks, including
제3항에 있어서,
상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고,
상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제하는
것을 특징으로 하는 프로세스 내부 공격에 대응하기 위한 방법.
4. The method of claim 3,
The entry gate loads an encryption key assigned to the access-allowed code, and an authentication token is issued when the access-allowed code is entered into the entry gate;
The exit gate deletes the assigned encryption key and the issued authentication token.
A method for responding to an in-process attack, characterized in that.
제1항에 있어서,
상기 컴퓨터 프로세서의 아키텍처는, ARM의 AArch64을 포함하고,
상기 메모리 사용 권한은, AArch64에서 도입된 XnR(Execute-no-Read)을 포함하고, 상기 접근이 허용된 코드에 상기 할당된 암호화 키를 읽는 명령어가 실행될 경우, 상기 접근이 허용된 코드에 상기 할당된 암호화 키가 로드되도록 하여 상기 할당된 암호화 키를 보호하는 것을 특징으로 하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The architecture of the computer processor includes ARM's AArch64,
The memory use right includes XnR (Execute-no-Read) introduced in AArch64, and when a command to read the allocated encryption key is executed in the access-allowed code, the allocation is made to the access-allowed code A data isolation method for responding to an in-process attack, characterized in that the assigned encryption key is protected by loading the encrypted key.
제1항에 있어서,
상기 제어하는 단계는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 상기 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 상기 접근이 허용된 코드가 상기 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)하고, 상기 접근이 종료되면, 엑시트 게이트에서 상기 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The controlling step is
As a thread runs in the process of the architecture of the computer processor, an entry gate of code to which access is permitted is reached, and the access is performed as both the encryption key and authentication token assigned to the access-allowed code are loaded into the entry gate. The permitted code accesses the encrypted sensitive data using the assigned encryption key, and when the access is terminated, deletes the assigned encryption key and authentication token from an exit gate, and keeps the thread running.
A data isolation method to counter in-process attacks, including
제1항에 있어서,
상기 제어하는 단계는,
복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 상기 중요 데이터를 공유하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The controlling step is
A step of sharing the sensitive data in a private area in which each of the codes allowed access has the same identification information based on the identification information assigned to a private region including a plurality of access-allowed codes and sensitive data
A data isolation method to counter in-process attacks, including
제1항에 있어서,
상기 데이터 격리 방법이 수행되는 동작이 API로 제공되는 것을 특징으로 하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The data isolation method for responding to an in-process attack, characterized in that the operation performed by the data isolation method is provided as an API.
데이터 격리 시스템에 있어서,
컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 코드 실행부; 및
상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 접근 제어부
를 포함하는 데이터 격리 시스템.
A data isolation system comprising:
a code execution unit that executes an access-allowed code assigned an encryption key through a memory usage right in the architecture of the computer processor; and
Access control unit for controlling access to sensitive data for the access-allowed code using the assigned encryption key while executing the access-allowed code
A data isolation system comprising a.
제9항에 있어서,
상기 코드 실행부는,
상기 접근이 허용된 코드와 관련된 중요 데이터를 결정하고, 상기 접근이 허용된 코드에 암호화 키를 할당하고, 상기 할당된 암호화 키를 통해 상기 중요 데이터와 관련된 중요 데이터를 암호화하는
것을 특징으로 하는 데이터 격리 시스템.
10. The method of claim 9,
The code execution unit,
Determining sensitive data related to the access-allowed code, assigning an encryption key to the access-allowed code, and encrypting sensitive data related to the sensitive data through the assigned encryption key
Data isolation system, characterized in that.
제9항에 있어서,
상기 코드 실행부는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 실행되는 스레드 내부에 상기 중요 데이터에 접근할 수 있는 영역들을 엔트리 게이트(Entry gate)-엑시트 게이트(Exit gate)로 분류하는
것을 특징으로 하는 데이터 격리 시스템.
10. The method of claim 9,
The code execution unit,
Classifying regions that can access the important data in a thread executed in the process of the architecture of the computer processor into an entry gate-exit gate
Data isolation system, characterized in that.
제11항에 있어서,
상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고,
상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제하는
것을 특징으로 하는 데이터 격리 시스템.
12. The method of claim 11,
The entry gate loads an encryption key assigned to the access-allowed code, and an authentication token is issued when the access-allowed code is entered into the entry gate;
The exit gate deletes the assigned encryption key and the issued authentication token.
Data isolation system, characterized in that.
제9항에 있어서,
상기 컴퓨터 프로세서의 아키텍처는, ARM의 AArch64을 포함하고,
상기 메모리 사용 권한은, AArch64에서 도입된 XnR(Execute-no-Read)을 포함하고, 상기 접근이 허용된 코드에 상기 할당된 암호화 키를 읽는 명령어가 실행될 경우, 상기 접근이 허용된 코드에 상기 할당된 암호화 키가 로드되도록 하여 상기 할당된 암호화 키를 보호하는 것을 특징으로 하는 데이터 격리 시스템.
10. The method of claim 9,
The architecture of the computer processor includes ARM's AArch64,
The memory use right includes XnR (Execute-no-Read) introduced in AArch64, and when a command to read the allocated encryption key is executed in the access-allowed code, the allocation is made to the access-allowed code A data isolation system, characterized in that the assigned encryption key is protected by loading the encrypted key.
제9항에 있어서,
상기 접근 제어부는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 상기 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 상기 접근이 허용된 코드가 상기 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)하고, 상기 접근이 종료되면, 엑시트 게이트에서 상기 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지하는
것을 특징으로 하는 데이터 격리 시스템.
10. The method of claim 9,
The access control unit,
As a thread runs in the process of the architecture of the computer processor, an entry gate of code to which access is permitted is reached, and the access is performed as both the encryption key and authentication token assigned to the access-allowed code are loaded into the entry gate. The permitted code accesses the encrypted sensitive data using the assigned encryption key, and when the access is terminated, the assigned encryption key and authentication token are deleted from the exit gate, and the thread execution is maintained.
Data isolation system, characterized in that.
제9항에 있어서,
상기 접근 제어부는,
복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 상기 중요 데이터를 공유하는
것을 특징으로 하는 데이터 격리 시스템.
10. The method of claim 9,
The access control unit,
Based on the identification information assigned to a private region containing a plurality of access-allowed codes and sensitive data, each of the access-allowed codes shares the sensitive data in a private region having the same identification information
Data isolation system, characterized in that.
KR1020210010970A 2021-01-26 2021-01-26 Fine-grained isolation to protect data against in-process attacks KR102493066B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210010970A KR102493066B1 (en) 2021-01-26 2021-01-26 Fine-grained isolation to protect data against in-process attacks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210010970A KR102493066B1 (en) 2021-01-26 2021-01-26 Fine-grained isolation to protect data against in-process attacks

Publications (2)

Publication Number Publication Date
KR20220107824A true KR20220107824A (en) 2022-08-02
KR102493066B1 KR102493066B1 (en) 2023-01-30

Family

ID=82845590

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210010970A KR102493066B1 (en) 2021-01-26 2021-01-26 Fine-grained isolation to protect data against in-process attacks

Country Status (1)

Country Link
KR (1) KR102493066B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107169347A (en) * 2017-05-08 2017-09-15 中国科学院信息工程研究所 A kind of enhancing ARM platform virtual machines are examined oneself safe method and device
KR20190021632A (en) * 2017-08-23 2019-03-06 서울대학교산학협력단 System and method for intra-level privilege seperation for system software on arm
KR20190060109A (en) * 2017-11-24 2019-06-03 서울대학교산학협력단 Instruction-level data isolation method and apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107169347A (en) * 2017-05-08 2017-09-15 中国科学院信息工程研究所 A kind of enhancing ARM platform virtual machines are examined oneself safe method and device
KR20190021632A (en) * 2017-08-23 2019-03-06 서울대학교산학협력단 System and method for intra-level privilege seperation for system software on arm
KR20190060109A (en) * 2017-11-24 2019-06-03 서울대학교산학협력단 Instruction-level data isolation method and apparatus

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Donghyun Kwon et al., "uXOM: Efficient eXecute-Only Memory on ARM Cortex-M", Proceedings of the 28th USENIX Security Symposium(2019.08.)* *
Yaohui Chen, "Defending In-Process Memory Abuse with Mitigation and Testing"(2019.10.)* *

Also Published As

Publication number Publication date
KR102493066B1 (en) 2023-01-30

Similar Documents

Publication Publication Date Title
Criswell et al. Virtual ghost: Protecting applications from hostile operating systems
Li et al. TEEv: Virtualizing trusted execution environments on mobile platforms
KR100851631B1 (en) Secure mode controlled memory
US8213618B2 (en) Protecting content on client platforms
US8826391B2 (en) Virtualized trusted descriptors
EP3238070B1 (en) Memory protection with non-readable pages
TWI567580B (en) Method and system for preventing execution of malware
Nasahl et al. Hector-v: A heterogeneous cpu architecture for a secure risc-v execution environment
KR101567620B1 (en) Secure memory management system and method
KR101504857B1 (en) System and method for supporting jit in a secure system with randomly allocated memory ranges
KR100596135B1 (en) Control system for access classified by application in virtual disk and Controling method thereof
US20160147993A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
US11782744B2 (en) Data processing system and method for accessing data in the data processing system
Cheng et al. Efficient virtualization-based application protection against untrusted operating system
CN110069935B (en) Internal sensitive data protection method and system based on tagged memory
WO2016065636A1 (en) Data management method and data management device for terminal, and terminal
US20160004859A1 (en) Method and system for platform and user application security on a device
Zaidenberg Hardware rooted security in industry 4.0 systems
Evtyushkin et al. Flexible hardware-managed isolated execution: Architecture, software support and applications
Batina et al. In hardware we trust: Gains and pains of hardware-assisted security
Dubrulle et al. Blind hypervision to protect virtual machine privacy against hypervisor escape vulnerabilities
KR102493066B1 (en) Fine-grained isolation to protect data against in-process attacks
JP2018535483A (en) Memory access instruction
US11132437B2 (en) Secure computer operating system through interpreted user applications
Shim et al. SOTPM: software one-time programmable memory to protect shared memory on ARM trustzone

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant