KR102493066B1 - 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
KR102493066B1
KR102493066B1 KR1020210010970A KR20210010970A KR102493066B1 KR 102493066 B1 KR102493066 B1 KR 102493066B1 KR 1020210010970 A KR1020210010970 A KR 1020210010970A KR 20210010970 A KR20210010970 A KR 20210010970A KR 102493066 B1 KR102493066 B1 KR 102493066B1
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
KR20220107824A (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)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

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

Figure R1020210010970
Figure R1020210010970

Description

프로세스 내부 공격에 대응하기 위한 세밀한 고립 기술{FINE-GRAINED ISOLATION TO PROTECT DATA AGAINST IN-PROCESS ATTACKS} Fine-grained isolation technology to counter process internal attacks {FINE-GRAINED ISOLATION TO PROTECT DATA AGAINST IN-PROCESS ATTACKS}

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

많은 소프트웨어 공격들이 실행 중인 프로그램(프로세스) 내에 존재하는 보안에 민감한 데이터(예를 들면, 암호화 키, 암호 및 인증서 등 중요 데이터)를 빼내거나 변조하려는 시도를 하고 있다. 이들 공격은 프로그램 내에 존재하는 버그 및 취약점 등의 결함을 악용하여 민감한 데이터가 있는 프로그램과 동일한 메모리 접근 권한을 얻음으로써 목표를 달성하게 된다. 이에 대응하기 위해 먼저 고려할 수 있는 전략은 프로그램 내에 존재하는 결합을 제거함으로써 공격자들이 악용할 수 없도록 하는 것이나, 전문가에 의해 신중하게 설계된 프로그램조차도 코드 크기에 비례하여 결함을 포함한다는 조사 결과에 비추어보면 이는 달성하기가 거의 불가능하다. 따라서, 프로그램의 보안성 향상을 위한 실질적 전략으로써 오직 허가된 코드만 필요한 데이터에 접근할 수 있도록 허용하는 권한 분리(Privilege Separation) 원칙을 프로그램 설계 단계부터 적용하는 것이 널리 채택되고 있다. 현재 이를 구현하는 대표적인 방법은 민감한 데이터와 이에 접근이 허용된 코드를 별도의 운영체제 프로세스로 분리하는 것이다. 각각의 프로세스는 운영체제가 지원하는 프로세스 간 메모리 격리 메커니즘에 의해 메모리 접근이 차단되므로, 지정된 프로세스 외에는 민감한 데이터에 접근이 차단된다.Many software attacks attempt to steal or tamper with security-sensitive data (for example, key data such as encryption keys, passwords, and certificates) existing in running programs (processes). These attacks achieve their goals by exploiting flaws such as bugs and vulnerabilities in programs to obtain the same memory access privileges as programs with sensitive data. To counter this, the first strategy that can be considered is to remove the coupling that exists in the program so that attackers cannot exploit it, but in light of the findings that even carefully designed programs by experts contain flaws in proportion to their code size, this is almost impossible to achieve Therefore, as a practical strategy for improving program security, it is widely adopted to apply the principle of privilege separation, which allows only authorized codes to access necessary data, from the program design stage. Currently, the representative way to implement this is to separate sensitive data and code that is allowed access to it into separate operating system processes. Since each process is blocked from accessing memory by the inter-process 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 the process is also vulnerable to attacks using vulnerabilities that occur within the "same process." In order to cope with the class of attacks classified as in-process attacks, a fine-grained data isolation technique that allows developers to allow access to sensitive data to only a portion of the entire code in the process is required. It is essential. The core of the fine-grained 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 is based on the ID assigned to the memory area. A memory domain, which is an ARM hardware function that allows access control to a specific memory area, was used. Specifically, first, a unique domain ID is assigned to the 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 permitted to access the area is running. to allow or deny access to the private region. ARM's memory domains made it possible to isolate multiple individual pairs of data 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 functions exist only in ARM's 32-bit architecture (AArch 32) and are not available in ARM's 64-bit architecture (AArch 64), which is widely used today in the market for high-end and low-end mobile devices. 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, the kernel must intervene whenever access to sensitive data is requested, consuming thousands of CPU cycles. There is a problem with doing it.

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

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

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

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

상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고, 상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제할 수 있다. 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 input to the entry gate, and the exit gate loads the assigned encryption key and the issued authentication token may 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, which reads the assigned encryption key to the access-allowed code. When the command is executed, the allocated encryption key can be protected by loading the allocated encryption key into the code for which the access is permitted.

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

상기 제어하는 단계는, 복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 상기 중요 데이터를 공유하는 단계를 포함할 수 있다. In the controlling step, based on identification information allocated to a private region including a plurality of codes and important data, codes to which access is allowed are assigned to a private region having the same identification information, respectively. 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 a code to which an encryption key is assigned access is allowed through a memory usage right in the architecture of a computer processor; and an access control unit controlling access to sensitive data of the access-allowed code using the assigned encryption key while the access-allowed code is being executed.

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

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

상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고, 상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제할 수 있다. 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 input to the entry gate, and the exit gate loads the assigned encryption key and the issued authentication token may 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, which reads the assigned encryption key to the access-allowed code. When the command is executed, the allocated encryption key can be protected by loading the allocated encryption key into the code for which the access is permitted.

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

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

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

오직 허용된 코드만 민감한 데이터에 접근할 수 있도록 구현된 세분화된 데이터 격리 기능을 API 형태로 개발자에게 제공함으로써 개발자들이 자유롭게 실러를 이용할 수 있도록 한다. By providing developers with a fine-grained data isolation function in the form of an API so that only permitted code can access sensitive data, developers can freely use 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 access-allowed codes and personal areas, according to an embodiment.
4 is an example for explaining an entry gate according to an embodiment.
5 is a diagram for describing an operation of accessing a private memory according to an exemplary embodiment.
6 is an example for describing an exit gate according to an embodiment.
7 is a block diagram illustrating a configuration of a data isolation system according to an exemplary embodiment.
8 is a flowchart illustrating a data isolation method for responding to an attack within a process, according to an exemplary embodiment.

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

실시예에서는 컴퓨터 프로세서 아키텍처에서 암호화 키에 기초하여 오직 허용된 코드만 민감한 데이터에 접근할 수 있도록 세분화된 데이터 격리 기능을 제공하기 위한 것이다. 컴퓨터 프로세서는 임베디드 기기에서 많이 사용되는 RISC 프로세서일 수 있다. 예를 들면, ARM의 32비트 아키텍처(AArch32), 또는 64비트 아키텍처(AArch64)를 포함할 수 있다. An embodiment is to provide a granular data isolation function so that only permitted code can access sensitive data based on an encryption key in a 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에 존재하는 하드웨어 기능을 결합함으로써 구현될 수 있다. In an embodiment, the operation of implementing a sealer to provide efficient data isolation in AArch64 while overcoming the lack of hardware support for memory isolation will be described. Sealers can be implemented by combining hardware features 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, which is assumed to have its own thread-level protection mechanism. The purpose of sealers 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 to which it has been granted access (1). The two important roles of the entry gate are loading cryptographic keys and generating authentication tokens to satisfy the sealer's two security properties. Encryption keys used by code that has been granted access can grant exclusive access to sensitive content stored encrypted in a private region. If code attempts to read or write private content in a thread without a valid encryption key, it may crash or produce unpredictable results. Authentication tokens can be used to verify atomic execution of code that has been granted access. Authentication tokens are issued only when the code is entered through the entry gate, so Sealer can detect an attempt to jump to the code without going through the entry gate simply by checking for the presence of the token. When both the encryption key and authentication token are loaded into the entry gate, code that is granted access has exclusive access to sensitive data (2). When the access-allowed code terminates, the exit gate clears the security risk state, such as the encryption key and authentication token 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로 보강된 실행 파일은 시스템에 로드되어 실행될 수 있다. 이때 실러의 로더는 실행 전용 권한 구성과 같은 실러의 데이터 격리를 시행하기 위한 커널 수준의 지원을 제공한다. Figure 2 describes the development process of an application using Sealer to facilitate the implementation of data isolation. The only requirement for the application developer is to use the sealer API at the source code level to define what is isolated: the code that has access to access sensitive data and the memory block that will contain the sensitive data. Executables augmented with the sealer API can be loaded into the system and executed. At this point, Sealer's loader provides kernel-level support for enforcing Sealer's data isolation, such as configuring execute-only permissions.

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

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

보다 구체적으로, 먼저 중요 데이터와 접근이 허용된 코드의 쌍을 먼저 결정하고 각각에 고유한 암호화 키를 할당한다. 접근이 허용된 코드는 독점적으로 하나의 암호화 키를 소유하여 코드를 실행하는 동안 암호화된 중요 데이터에 접근할 수 있게 된다. 실러를 구현하기 위해서는 어떻게 암호화 키를 안전하게 보호할 것인지에 대한 해결책을 제시할 수 있어야 한다. 이를 해결하기 위하여 AArch64에서 새로 도입된 XnR(Execute-no-Read)라는 메모리 사용 권한을 이용하고자 한다. XnR을 통해 삽입된 키를 보호하고, 중요 데이터에 접근이 허용된 코드 별로 별도의 키를 할당하는 기능을 제공한다. XnR은 악의적인 메모리 접근에 의해 펌웨어와 같은 보안 중요 코드가 노출되는 것을 방지하기 위해 사용된다. 실시예에서는 코드에 데이터를 삽입(embed)하고, 코드를 XnR을 통해 보호하는 과정을 통해 암호화 키를 효과적으로 보호할 수 있다는 것을 응용하였다. 이를 통해 실러는 도 3과 같은 구조에 기초하여 AArch64에서 암호화 기법을 기반으로 세분화된 데이터 격리를 안전하게 실현할 수 있다. More specifically, pairs of sensitive data and accessible codes are first determined and a unique encryption key is assigned to each. Code that is granted access exclusively possesses a single encryption key, giving it access to encrypted sensitive data while executing the code. In order to implement Sealer, it is necessary to provide a solution for how to safely protect 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 allowed to access important data. XnR is used to prevent exposure of security-critical code such as firmware by malicious memory access. In the embodiment, it is applied that an encryption key can be effectively protected through a process of embedding data in a code and protecting the code through XnR. Through this, Sealer can safely realize granular data isolation based on encryption techniques in AArch64 based on the structure shown in FIG. 3 .

실러 API를 설명하기 전에 먼저 접근이 허용된 코드 및 개인 영역에 대한 실러의 관리 체계의 세부 정보를 설명하기로 한다. 도 3에서와 같이, 실러는 여러 쌍의 접근이 허용된 코드와 개인 영역을 지원할 수 있다. 모든 접근이 허용된 코드와 개인 영역에서는 개발 시간에 식별 정보(ID)가 할당될 수 있다. 실러는 런타임 시에 주어진 ID에 따라 각 접근이 허용된 코드와 개인 영역에 암호화 키를 할당하므로, 각 접근이 허용된 코드가 동일한 ID를 갖는 개인 영역과 쌍을 이룬다. 일부 접근이 허용된 코드는 동일한 ID를 가질 수 있으며, 이 경우, 모든 코드가 동일한 개인 영역과 쌍을 이루며 동일한 중요 데이터를 공유할 수 있다. 그러나, 각 접근이 허용된 코드는 하나의 ID만 가질 수 있으므로 복수 개의 개인 영역과 쌍을 이룰 수 없다. 개인 영역은 중요 데이터 셋으로 구성되고, 중요 데이터는 개인 영역과 관련된 접근이 허용된 코드를 통해 개인 영역에 동적으로 추가하거나 삭제될 수 있다. Before explaining the Sealer API, we will first explain the details of Sealer's management system for code and private areas that are allowed access. As shown in Figure 3, Sealer can support multiple pairs of allowed code and private domains. Identification information (ID) can be assigned at development time in code and private areas where all access is allowed. Sealer assigns an encryption key to each accessible code and private area according to a given ID at runtime, so that each accessible code is paired with a private area with the same ID. Codes with some access granted 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 personal areas. The personal area is composed of important data sets, and important data can be dynamically added to or deleted from the personal area through codes that allow 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 system described above, Sealer can provide developers with four APIs. The sealer API is an API that designates the start and end points of codes that are allowed to access important data, and is an API that allows access to important data based on a protected encryption key. First, two APIs can be provided to define codes that are allowed to access during development. Application developers can use Sealer_start and Sealer_end to indicate the start gate and end gate of each access-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 important data protected by sealer.

실러의 로더는 커널 수준에서만 수행할 수 있는 작업을 처리하기 위해 커널에서 동작하는 실러의 구성요소이다. 실러가 있는 프로그램이 시스템에서 실행되면, 접근이 허용된 코드에 암호화 키와 인증 토큰을 할당하기 위해 개입될 수 있다. 실러의 로더는 먼저 암호화 키와 랜덤 인증 토큰을 생성하여 접근이 허용된 코드의 일부로 삽입할 수 있다. 그 후, 엔트리 게이트, 엑시트 게이트의 메모리 영역, 접근이 허용된 코드에 대한 실행 전용 권한을 활성화하여 런타임에 눈에 띄는 성능 저하없이 공격자로부터 암호키를 보호할 수 있다. 실러의 로더의 또 다른 역할은 암호화 키와 같은 레지스터에 저장된 비밀을 코드의 외부에 노출되지 않도록 보호하는 것이다. 실러는 신호가 전달될 때 접근이 허용된 코드가 실행 중일 경우, 실러의 로더는 커널에 있는 레지스터를 백업하고 이를 무효화하여 신호 처리 중에 공격자에게 노출되지 않도록 한다. 신호 처리가 완료되고 접근이 허용된 코드가 반환되면 실러는 레지스터의 이전값을 복원하여 접근이 허용된 코드의 실행을 올바르게 계속할 수 있다.A sealer's loader is a component of sealer that runs in the kernel to handle tasks that can only be done at the kernel level. When a program with a sealer runs on a system, it can intervene to assign encryption keys and authentication tokens to code that has been granted access. Sealer's loader can first generate an encryption key and a random authentication token and insert them as part of the code it has access to. After that, it is possible to protect cryptographic keys from attackers without appreciable performance degradation at runtime by activating execution-only privileges on entry gates, memory regions of exit gates, and code that is allowed access. Another role of Sealer's loader is to protect secrets stored in registers, such as encryption keys, from being exposed outside the code. Sealer ensures that if code with access is running when the signal is delivered, Sealer's loader backs up registers in the kernel and invalidates them so that they are not exposed to attackers during signal processing. When the signal processing is complete and the allowed code returns, the sealer restores the previous values of the registers so that the allowed code execution 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, authentication tokens must be securely generated and hidden to prevent tampering or leakage. The value of the token can be stored in a code area with execution-only permission (memory usage permission), such as an encryption key. In other words, a value is displayed in the immediate field of the move command, and can be loaded into a general-purpose register by executing the command as shown in FIG. 4 . Next, when the code with permission is executed, the operation is verified using the code with permission, 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 a 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 to 14) can be repeated for all 11 AES keys. Sealer uses the 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 operations respectively. The value of the AES round key is displayed in an immediate field of the move command and can be safely stored in the code like an authentication token value. AArch64's immediate register move instruction has a 16-bit immediate field, so it takes 8 move instructions to represent one round key. However, there is a problem in 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 a limited number. To solve this, the 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. Since the round key size of the AES 128 algorithm is also 128 bits, the round key can be loaded efficiently using vector registers v10 to v32.

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

암호화 키와 인증 토큰을 엔트리 게이트의 레지스터에 로드한 후, 접근이 허용된 코드는 이러한 값을 사용하여 프라이빗 메모리에 접근할 수 있다. 중요 데이터가 프라이빗 메모리에 저장되면 암호화 형식으로 저장되어야 한다. 도 5에 표시된 것처럼, 접근이 허용된 코드는 먼저 AES 128 암호화 작업을 사용하여 중요 데이터를 암호화한 다음, 중요 데이터를 프라이빗 메모리에 저장할 수 있다. After loading the cryptographic key and authentication token into the entry gate's registers, code that is allowed access can use these values to access the private memory. When sensitive data is stored in private memory, it must be stored in encrypted form. As shown in FIG. 5, the code that is allowed access can first encrypt sensitive data using 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 code shown on lines 4 through 13 of Figure 5 represents 10 encryption rounds of AES 128 using the encryption extension of AArch64. The cryptographic extension provides four instructions (aese, aesmc, aesd and aesimc) for acceleration of the AES algorithm. Each round can encrypt the plaintext block contained in v0 using the respective AES round key (v10 to v20). Finally, the code that has been granted access can check the value of the auth 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 directly switch an execution flow from an unauthorized code to an access-allowed code may be detected. During decryption, aesd and aesimc commands can be used with other AES round keys (v21 to v31) instead of aese and aesmc commands.

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

도 6에 표시된 실러의 엑시트 게이트는 암호화 키와 인증 토큰을 삭제하는 역할을 수행할 수 있다. 엔트리 게이트와 달리 벡터 레지스터에 로드된 각 AES 라운드 레지스터는 벡터로 move 명령어에 의해 0으로 초기화될 수 있다. 인증 토큰의 경우, 초기화한 후 값을 체크하는 것이 요구된다. 제어 흐름을 파괴함으로써, 공격자는 9행의 명령을 통해 임의의 값으로 조작할 수 있다. The sealer's exit gate shown in FIG. 6 may play a role of deleting an encryption key and an authentication token. Unlike entry gates, each AES round register loaded into a vector register can be initialized to 0 by a vector 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 the arbitrary value through the command on 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 attack inside a process 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 . The components of such a processor may be representations of different functions performed by the processor according to 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 an inside-process attack of FIG. 8 . In this case, the processor and components of the processor may be implemented to execute instructions according to the code of an operating system included in the memory and the code of at least one program.

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

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

단계(820)에서 및 접근 제어부(720)는 접근이 허용된 코드를 실행하는 동안 할당된 암호화 키를 이용하여 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어할 수 있다. 접근 제어부(720)는 컴퓨터 프로세서의 아키텍처의 프로세스에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 접근이 허용된 코드가 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)되고, 접근이 종료되면, 엑시트 게이트에서 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지할 수 있다. 접근 제어부(720)는 복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 대하여 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 중요 데이터를 공유할 수 있다. In step 820, the access control unit 720 may control access to sensitive data for the code for which access is allowed using the assigned encryption key while the code for which access is allowed is executed. there is. The access controller 720 reaches the entry gate of the code for which access is allowed as the thread is executed in the process of the architecture of the computer processor, and both the encryption key and the authentication token assigned to the code for which access is allowed are loaded into the entry gate. According to this code, access to important data encrypted using the assigned encryption key is accessed, and when the access is terminated, the assigned encryption key and authentication token are deleted at the exit gate, and thread execution can be maintained. . The access control unit 720 is important to the private region where each code allowed to access has the same identification information based on identification information assigned to a private region including a plurality of codes allowed for access 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 devices described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components. For example, devices 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), microprocessor, or any other device capable of executing and responding to instructions. A processing device may run an operating system (OS) and one or more software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of software. For convenience of understanding, there are cases in which one processing device is used, but those skilled in the art will understand that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include. For example, a processing device may include a plurality of processors or a processor and a controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. You can command the device. Software and/or data may be any tangible machine, component, physical device, virtual equipment, computer storage medium or device, intended to be interpreted by or provide instructions or data to a processing device. can be embodied in Software may be distributed on networked computer systems and stored or executed in a distributed manner. Software and data may be stored on one or more computer readable 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 on a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program commands recorded on the medium may be specially designed and configured for the embodiment or may be known and usable to those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. - includes hardware devices specially configured to store and execute program instructions, such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler.

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

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

Claims (15)

데이터 격리 시스템에 의해 수행되는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법에 있어서,
컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 단계; 및
상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 단계
를 포함하고,
상기 접근이 허용된 코드를 실행하는 단계는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 실행되는 스레드 내부에 상기 중요 데이터에 접근할 수 있는 영역들을 엔트리 게이트(Entry gate)-엑시트 게이트(Exit gate)로 분류하는 단계
를 포함하고,
상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고,
상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제하는
프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
In the data isolation method for responding to the attack inside the process performed by the data isolation system,
Executing a code to which access is allowed, to which an encryption key is assigned through a memory usage right, in the architecture of a computer processor; and
Controlling access to sensitive data for the code for which the access is allowed using the assigned encryption key while the code for which the access is allowed is executed.
including,
The step of executing the access-allowed code,
classifying areas accessible to the important data in a thread executed in a process of the architecture of the computer processor into entry gates and exit gates;
including,
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 data isolation method to counter in-process attacks.
제1항에 있어서,
상기 접근이 허용된 코드를 실행하는 단계는,
상기 접근이 허용된 코드와 관련된 중요 데이터를 결정하고, 상기 접근이 허용된 코드에 암호화 키를 할당하고, 상기 할당된 암호화 키를 통해 상기 중요 데이터와 관련된 중요 데이터를 암호화하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The step of executing the access-allowed code,
Determining important data related to the access-allowed code, allocating an encryption key to the access-allowed code, and encrypting the important data related to the important data through the assigned encryption key.
A data isolation method to respond to attacks inside the process, including
삭제delete 삭제delete 제1항에 있어서,
상기 컴퓨터 프로세서의 아키텍처는, ARM의 AArch64을 포함하고,
상기 메모리 사용 권한은, AArch64에서 도입된 XnR(Execute-no-Read)을 포함하고, 상기 접근이 허용된 코드에 상기 할당된 암호화 키를 읽는 명령어가 실행될 경우, 상기 접근이 허용된 코드에 상기 할당된 암호화 키가 로드되도록 하여 상기 할당된 암호화 키를 보호하는 것을 특징으로 하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1,
The architecture of the computer processor includes ARM's AArch64,
The memory usage right includes Execute-no-Read (XnR) introduced in AArch64, and when a command to read the assigned encryption key is executed in the code for which the access is allowed, the access is allowed for the code. A data isolation method for responding to an attack inside a process, characterized in that the assigned encryption key is protected by loading the assigned encryption key.
데이터 격리 시스템에 의해 수행되는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법에 있어서,
컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 단계; 및
상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 단계
를 포함하고,
상기 제어하는 단계는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 상기 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 상기 접근이 허용된 코드가 상기 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)하고, 상기 접근이 종료되면, 엑시트 게이트에서 상기 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
In the data isolation method for responding to the attack inside the process performed by the data isolation system,
Executing a code to which access is allowed, to which an encryption key is assigned through a memory usage right, in the architecture of a computer processor; and
Controlling access to sensitive data for the code for which the access is allowed using the assigned encryption key while the code for which the access is allowed is executed.
including,
The control step is
As a thread executes in a process of the architecture of the computer processor, it reaches the entry gate of code that has been granted access, and as both the encryption key and authentication token assigned to the code that has been granted access are loaded into the entry gate, the access is established. Permitted code accesses sensitive data encrypted using the assigned encryption key, and when the access is terminated, deleting the assigned encryption key and authentication token from an exit gate and maintaining thread execution.
A data isolation method to respond to attacks inside the process, including
제1항 또는 제6항에 있어서,
상기 제어하는 단계는,
복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 상기 중요 데이터를 공유하는 단계
를 포함하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1 or 6,
The control step is
Based on identification information assigned to a private region including a plurality of codes and important data, each code to which access is permitted shares the important data in a private region having the same identification information.
A data isolation method to respond to attacks inside the process, including
제1항 또는 제6항에 있어서,
상기 데이터 격리 방법이 수행되는 동작이 API로 제공되는 것을 특징으로 하는 프로세스 내부 공격에 대응하기 위한 데이터 격리 방법.
According to claim 1 or 6,
A data isolation method for responding to an attack inside a process, characterized in that the operation performed by the data isolation method is provided as an API.
데이터 격리 시스템에 있어서,
컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 코드 실행부; 및
상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 접근 제어부
를 포함하고,
상기 코드 실행부는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 실행되는 스레드 내부에 상기 중요 데이터에 접근할 수 있는 영역들을 엔트리 게이트(Entry gate)-엑시트 게이트(Exit gate)로 분류하는 것을 포함하고,
상기 엔트리 게이트는, 상기 접근이 허용된 코드에 할당된 암호화 키를 로딩하고, 상기 접근이 허용된 코드가 상기 엔트리 게이트에 입력될 때 인증 토큰이 발급되고,
상기 엑시트 게이트는, 상기 할당된 암호화 키와 상기 발급된 인증 토큰을 삭제하는
데이터 격리 시스템.
In the data isolation system,
a code execution unit that executes a code to which an encryption key is allocated through a memory usage right in the architecture of a computer processor; and
An access controller that controls access to sensitive data for the code for which access is allowed using the assigned encryption key while the code for which access is allowed is executed.
including,
The code execution unit,
Classifying areas accessible to the important data within a thread executed in a process of the architecture of the computer processor into an entry gate-exit gate,
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.
제9항에 있어서,
상기 코드 실행부는,
상기 접근이 허용된 코드와 관련된 중요 데이터를 결정하고, 상기 접근이 허용된 코드에 암호화 키를 할당하고, 상기 할당된 암호화 키를 통해 상기 중요 데이터와 관련된 중요 데이터를 암호화하는
것을 특징으로 하는 데이터 격리 시스템.
According to claim 9,
The code execution unit,
Determining important data related to the access-allowed code, assigning an encryption key to the access-allowed code, and encrypting the important data related to the sensitive data through the assigned encryption key
Data isolation system, characterized in that.
삭제delete 삭제delete 제9항에 있어서,
상기 컴퓨터 프로세서의 아키텍처는, ARM의 AArch64을 포함하고,
상기 메모리 사용 권한은, AArch64에서 도입된 XnR(Execute-no-Read)을 포함하고, 상기 접근이 허용된 코드에 상기 할당된 암호화 키를 읽는 명령어가 실행될 경우, 상기 접근이 허용된 코드에 상기 할당된 암호화 키가 로드되도록 하여 상기 할당된 암호화 키를 보호하는 것을 특징으로 하는 데이터 격리 시스템.
According to claim 9,
The architecture of the computer processor includes ARM's AArch64,
The memory usage right includes Execute-no-Read (XnR) introduced in AArch64, and when a command to read the assigned encryption key is executed in the code for which the access is allowed, the access is allowed for the code. and protecting the assigned encryption key by allowing the assigned encryption key to be loaded.
데이터 격리 시스템에 있어서,
컴퓨터 프로세서의 아키텍처에서 메모리 사용 권한을 통해 암호화 키가 할당된 접근이 허용된 코드를 실행하는 코드 실행부; 및
상기 접근이 허용된 코드를 실행하는 동안 상기 할당된 암호화 키를 이용하여 상기 접근이 허용된 코드에 대한 중요 데이터(sensitive data)로의 접근(access)을 제어하는 접근 제어부
를 포함하고,
상기 접근 제어부는,
상기 컴퓨터 프로세서의 아키텍처의 프로세스에서 스레드가 실행됨에 따라 접근이 허용된 코드의 엔트리 게이트에 도달되고, 상기 접근이 허용된 코드에 할당된 암호화 키와 인증 토큰이 모두 엔트리 게이트에 로드됨에 따라 상기 접근이 허용된 코드가 상기 할당된 암호화 키를 이용하여 암호화된 중요 데이터에 접근(access)하고, 상기 접근이 종료되면, 엑시트 게이트에서 상기 할당된 암호화 키와 인증 토큰을 삭제하고, 스레드 실행을 유지하는
것을 특징으로 하는 데이터 격리 시스템.
In the data isolation system,
a code execution unit that executes a code to which an encryption key is allocated through a memory usage right in the architecture of a computer processor; and
An access controller that controls access to sensitive data for the code for which access is allowed using the assigned encryption key while the code for which access is allowed is executed.
including,
The access control unit,
As a thread executes in a process of the architecture of the computer processor, it reaches the entry gate of code that has been granted access, and as both the encryption key and authentication token assigned to the code that has been granted access are loaded into the entry gate, the access is established. Allowed code accesses sensitive data encrypted using the assigned encryption key, and when the access is terminated, deletes the assigned encryption key and authentication token from the exit gate and maintains thread execution.
Data isolation system, characterized in that.
제9항 또는 제14항에 있어서,
상기 접근 제어부는,
복수 개의 접근이 허용된 코드와 중요 데이터가 포함된 개인 영역(private region)에 할당된 식별 정보에 기초하여 접근이 허용된 코드 각각이 동일한 식별 정보를 갖는 개인 영역에 상기 중요 데이터를 공유하는
것을 특징으로 하는 데이터 격리 시스템.
The method of claim 9 or 14,
The access control unit,
Based on the identification information assigned to a private region containing a plurality of codes and important data, each of the codes to which access is permitted shares the important 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 KR20220107824A (en) 2022-08-02
KR102493066B1 true 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 (1)

* 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

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102021008B1 (en) * 2017-08-23 2019-09-11 서울대학교산학협력단 System and method for intra-level privilege seperation for system software on arm
KR102075701B1 (en) * 2017-11-24 2020-02-10 서울대학교산학협력단 Instruction-level data isolation method and apparatus

Patent Citations (1)

* 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

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
KR20220107824A (en) 2022-08-02

Similar Documents

Publication Publication Date Title
KR100851631B1 (en) Secure mode controlled memory
US8213618B2 (en) Protecting content on client platforms
US9536111B2 (en) Secure processing unit systems and methods
US7313705B2 (en) Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory
TWI567580B (en) Method and system for preventing execution of malware
US8826391B2 (en) Virtualized trusted descriptors
KR101567620B1 (en) Secure memory management system and method
Li et al. TEEv: Virtualizing trusted execution environments on mobile platforms
Nasahl et al. Hector-v: A heterogeneous cpu architecture for a secure risc-v execution environment
EP3238070B1 (en) Memory protection with non-readable pages
US8060744B2 (en) Computer architecture for an electronic device providing single-level secure access to multi-level secure file system
CN107729758B (en) Secure processor for multi-tenant cloud workloads
US11782744B2 (en) Data processing system and method for accessing data in the data processing system
CN103377349A (en) Security controlled multi-processor system
US20160147993A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
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
Richter et al. Isolating operating system components with Intel SGX
Zaidenberg Hardware rooted security in industry 4.0 systems
Zhou et al. Smile: Secure memory introspection for live enclave
KR102493066B1 (en) Fine-grained isolation to protect data against in-process attacks
Dubrulle et al. Blind hypervision to protect virtual machine privacy against hypervisor escape vulnerabilities
JP2018535483A (en) Memory access instruction
Wang et al. Trustict: an efficient trusted interaction interface between isolated execution domains on ARM multi-core processors

Legal Events

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