KR102570757B1 - 실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성 - Google Patents

실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성 Download PDF

Info

Publication number
KR102570757B1
KR102570757B1 KR1020217005222A KR20217005222A KR102570757B1 KR 102570757 B1 KR102570757 B1 KR 102570757B1 KR 1020217005222 A KR1020217005222 A KR 1020217005222A KR 20217005222 A KR20217005222 A KR 20217005222A KR 102570757 B1 KR102570757 B1 KR 102570757B1
Authority
KR
South Korea
Prior art keywords
routine
stack
page table
domain
memory
Prior art date
Application number
KR1020217005222A
Other languages
English (en)
Other versions
KR20210025683A (ko
Inventor
스티븐 월랙
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20210025683A publication Critical patent/KR20210025683A/ko
Application granted granted Critical
Publication of KR102570757B1 publication Critical patent/KR102570757B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)

Abstract

미리 정의된 도메인으로부터의 호출에 대한 보안 설정을 포함하는 페이지 테이블 엔트리를 갖는 컴퓨터 시스템과 관련된 시스템, 장치 및 방법이 설명된다. 페이지 테이블 엔트리를 사용하여 가상 메모리 어드레스를 물리적 메모리 어드레스에 매핑할 수 있다. 가상 메모리 어드레스를 사용하여 식별된 루틴을 실행하기 위한 호출에 응답하여, 보안 조치를 사용할지 여부를 결정하기 위해 호출이 시작된 실행 도메인에 대응하는 보안 설정이 페이지 테이블 엔트리로부터 추출될 수 있다. 예를 들어, 섀도우 스택 구조는 루틴의 개인 스택 콘텐츠가 호출자에 의해 액세스되는 것을 보호하고 및/또는 호출자의 개인 스택 콘텐츠가 피호출자에 의해 액세스되지 않도록 보호하는데 사용될 수 있다.

Description

실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성
관련 출원들
본 출원은 "실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성"이라는 제목으로, 2019 년 7 월 23일에 출원된, 미국 특허 출원 번호 16/520,296, "실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성"이라는 제목으로, 2018 년 8 월 30일에 출원된, 미국 가특허 출원 번호 62/724,913의 출원일에 대한 이익을 주장하고, 이들 출원의 전체 개시는 본 출원에 참조로 통합된다.
기술분야
본 출원에 개시된 적어도 일부 실시예는 전반적으로 컴퓨터 아키텍처 및 보다 상세하게는, 실행 도메인에 대한 페이지 테이블 엔트리에 지정된 구성을 통해 구현된 보안 제어에 관한 것이지만 이에 한정되지는 않는다.
컴퓨터용으로 프로그래밍된 명령은 계층으로 구조화될 수 있다. 하나의 계층은 다른 계층에 자원과 서비스를 제공할 수 있다. 예를 들어, 하이퍼바이저(hypervisor)는 컴퓨터의 하드웨어 컴포넌트에 구현되는 가상 머신을 생성하거나 프로비저닝(provision)할 수 있다. 운영 체제(operating system)는 자원 및 미리 정의된 아키텍처를 가진 컴퓨터에서 사용할 수 있는 자원을 사용하여 서비스를 제공할 수 있다. 운영 체제에서 작동하는 컴퓨터 자원 또는 컴퓨터는 실제 컴퓨터 하드웨어 컴포넌트거나 하이퍼바이저가 제공하는 가상 컴퓨터 컴포넌트일 수 있다. 애플리케이션은 운영 체제에서 제공하는 서비스 및 자원을 사용하여 애플리케이션 특정 기능을 제공할 수 있다.
실시예는 유사한 도면 번호가 유사한 엘리먼트를 나타내는 첨부 도면들의 도면에서 제한이 아니라 예로서 예시된다.
도 1은 일부 실시예에 따른 샌드 박싱(sandboxing)을 제어하는 시스템을 도시한다.
도 2는 도 1의 시스템에서 샌드 박싱을 위한 섀도우 스택 구조(shadow stack structure)를 도시한다.
도 3은 실행 도메인에 대한 샌드 박싱 구성을 갖는 페이지 테이블 엔트리를 예시한다.
도 4는 보안 동작을 구성하기 위한 페이지 테이블을 갖는 컴퓨터 시스템을 도시한다.
도 5는 실행 도메인에 대한 페이지 테이블 엔트리에 지정된 설정을 통해 섀도우 스택 동작을 제어하는 방법을 도시한다.
본 개시는 호출 루틴에서 호출된 루틴으로의 호출이 수행되는 비 하이어러키 실행 도메인에 기초하여 그리고 페이지 테이블 엔트리에 지정된 설정에 기초하여 호출된 루틴의 콘텐츠와 호출 루틴의 콘텐츠를 서로 보호하기 위해 보안 조치를 선택적으로 적용하는 기술을 포함한다. 예를 들어, 루틴 A가 루틴 B를 호출할 때, 루틴 B에서 루틴 A의 데이터 및 코드를 보호하고 및/또는 루틴 A에서 루틴 B의 데이터 및 코드를 보호하기 위해 보안 조치가 선택적으로 전개(deploy)될 수 있다. 예를 들어, 루틴 B는 수치 계산을 수행하는 라이브러리 루틴일 수 있다. 루틴 B가 루틴 A의 어드레스 공간의 일부인 경우, 잠재적으로 루틴 A의 데이터에 액세스할 수 있다. 루틴 A와 루틴 B가 동일한 논리적 대 물리적 변환 테이블을 사용하는 경우에도 루틴 B가 트로이 목마 루틴(trojan horse routine)으로 동작하는 것을 방지하기 위해, 루틴 B가 루틴 A의 어드레스 공간에서 액세스할 수 있는 데이터를 제한하기 위해 샌드 박싱 동작이 수행될 수 있다.
전통적인 시스템에서, 다른 계층의 명령 (예를 들어, 사용자 애플리케이션 대 운영 체제)에는 상이한 레벨의 권한(privilege) 및/또는 신뢰가 주어질 수 있다. 일반적으로, 보호 링은 링 하이어러키(hierarchy of ring)를 기반으로 오류 및 악의적인 행동으로부터 데이터와 기능을 보호하기 위해 컴퓨터에 구성 및 구현되었다. 링은 가장 많은 권한이 있는(most privileged) (따라서, 가장 신뢰할 수 있는) 내지 최소 권한이 있는 (따라서, 가장 덜 신뢰할 수 있는) 하이어러키에서 정적으로 배열된다. 예를 들어, 하이어러키에는 권한이 가장 많은 운영 체제 커널링, 디바이스 드라이버 링 및 최소 권한이 있는 애플리케이션 링이 포함될 수 있다. 하위 권한 링의 프로그램 또는 루틴은 하이어러키에서 상위 권한 링의 자원 및 서비스에 액세스하기 위해 개별 특수 하드웨어 강제 제어 게이트에 의해 제한될 수 있다. 링 사이의 게이트 액세스는 보안을 향상시킬 수 있다.
본 개시의 기술에서, 컴퓨터 시스템을 위해 프로그래밍된 명령 또는 루틴은 하이퍼바이저의 도메인, 운영 체제의 도메인, 애플리케이션의 도메인과 같은 미리 정의된 비 하이어러키 도메인의 세트로 분류될 수 있다. 하나의 루틴은 가상 메모리 어드레스를 통해 식별된 메모리에 저장된 다른 루틴을 호출할 수 있다. 가상 메모리 어드레스는 하나 이상의 페이지 테이블을 사용하여 물리적 메모리 어드레스로 변환된다. 호출된 루틴을 저장하는 물리적 메모리 영역은 호출된 루틴의 액세스로부터 호출 루틴의 콘텐츠를 보호하기 위해 및/또는 호출 루틴에 의한 액세스에 대해 콘텐츠 (예를 들어, 호출 스택에 푸시된 개인 데이터)를 보호하기 위해 보안 조치 (예를 들어, 섀도우 스택(shadow stack))를 조건부로 인보크(invoke)하도록 페이지 테이블 엔트리를 통해 명시적으로 구성된다. 보안 조치는 정적 도메인 하이어러키에 의존하지 않고 호출 루틴의 실행 도메인과 페이지 테이블 엔트리의 개별 설정에 따라 선택적으로 전개될 수 있다. 다른 도메인의 루틴 및/또는 다른 메모리 영역에 저장된 루틴은 다른 도메인의 샌드 박싱 호출에 대해 상이한 보안 조치를 가질 수 있다. 따라서, 샌드 박싱은 특정 도메인으로 제한되지 않는다.
도 1은 일부 실시예에 따른 샌드 박싱을 제어하는 시스템을 도시한다. 일반적으로 샌드 박싱은 특정 시스템 자원 및/또는 다른 명령/프로그램 세트로부터 명령 세트 (예를 들어, 애플리케이션)의 실행을 격리하는 컴퓨터 조치를 포함한다.
도 1의 시스템은 컴퓨터 시스템을 위해 프로그래밍된 다양한 루틴에 대한 데이터 및 명령을 저장하는데 사용될 수 있는 물리적 메모리 (109)를 포함한다.
일반적으로, 루틴은 메모리 (109)에 저장된 미리 프로그래밍된 명령 세트를 포함할 수 있다. 루틴은 또한 입력 데이터, 출력 데이터 및/또는 메모리 (109)에 저장된 임시 데이터를 가질 수 있다. 루틴은 서비스 및/또는 자원에 대해 다른 루틴 (예를 들어, 119)을 인보크하거나 호출할 수 있다. 호출 루틴(calling routine)과 호출된 루틴(called routine)은 동일한 도메인 또는 다른 도메인(예를 들어, 101, 103,…, 105)에 있을 수 있다. 메모리 (109)의 서로 다른 영역 (121, 123,…, 125)은 서로 다른 샌드 박스 구성 (예를 들어, 107)으로 구성되어 샌드 박싱을 위한 보안 조치의 선택적 전개를 제어할 수 있다; 영역 (123)에 대한 각각의 샌드 박싱 구성 (107)은 영역(123)에 저장된 호출된 루틴 (예를 들어, 119)에 대한 호출을 인보크하는 개별 도메인 (101, 103,…, 105)에 대한 상이한 설정 (111, 113,…, 115)을 포함할 수 있다. 샌드 박싱 구성 (예를 들어, 107)은 예를 들어, 가상 메모리 어드레스의 논리적 대 물리적 어드레스 변환에 사용되는 페이지 테이블 엔트리에 지정될 수 있어서, 메모리 영역 (121, 123,…, 125)의 구조는 도 3과 관련하여 아래에서 추가로 논의되는 메모리 페이지 구조에 대응한다.
도 1에서, 물리적 메모리 (109)는 다수의 영역 (121, 123,…, 125)으로 분할된다. 예를 들어, 각각의 영역 (예를 들어, 123)은 메모리 관리를 위한 물리적 메모리 (109)의 페이지 또는 물리적 메모리 (109)의 페이지 세트일 수 있다.
전형적인 영역 Y (예를 들어, 123)는 미리 정의된 도메인 세트 (101, 103,…, 105)에 대해 지정된 샌드 박스 구성의 개별 세트 (107)를 가질 수 있다. 예를 들어, 하이퍼바이저 (102)의 루틴은 도메인 A (101)로 분류될 수 있다; 운영 체제 (104)의 루틴은 다른 도메인 B (103)로 분류될 수 있다; 및 애플리케이션 (106)의 루틴은 추가 도메인 C (105)로 분류될 수 있다. 하이퍼바이저 또는 VMM (가상 머신 모니터)은 가상 머신을 생성하고 관리한다. 하이퍼바이저는 물리적 메모리 및 입력/출력 (I/O)과 같은 기본 기능을 제어할 수 있다. 샌드 박싱 구성 (107)은 예를 들어, 도메인 (101, 103,… 또는 105)에서 실행되는 루틴이 영역 (123)에 저장된 루틴 (119)을 호출할 때, 영역 (123)에 저장된 루틴 (예를 들어, 119)을 실행하기 위한 호출에 샌드 박싱 동작이 필요한지 여부를 명시적으로 식별한다. 다른 도메인 (101, 103,…, 105)에서 실행된 루틴으로부터 동일한 루틴 (119)을 실행하기 위한 호출은 개별적으로 상이한 설정 (111, 113,…, 115)을 가질 수 있다; 및 설정 (111, 113,…, 115)은 개별적으로 도메인 (101, 103,…, 105)의 호출이 샌드 박싱이 필요한지 여부를 지정한다 (예를 들어, 호출된 루틴 (119)과 호출 루틴을 서로 보호하기 위해). 따라서, 도메인 (102, 103,…, 105)의 미리 정의된 하이어러키에 의존하지 않고 호출이 이루어지는 각각의 도메인 (101, 103,…, 105)에 대해 구성된 명시적 설정 (예를 들어, 111, 113,…, 115)에 기초하여 메모리 영역 (123)에 저장된 호출된 루틴 (119)의 실행을 위해 샌드 박싱 동작이 선택적으로 적용될 수 있다.
예를 들어, 도메인 (103)의 루틴 (119)은 운영 체제 (104)에 대해 프로그래밍되고 메모리 영역 Y (123)에 저장되도록 구성될 수 있다. 하이퍼바이저 (102)에 대한 도메인 (101)의 다른 루틴이 메모리 영역 (123)에 저장된 루틴 (119)을 호출할 때, 도메인 (101)으로부터의 호출에 대해 영역 (123)에 지정된 샌드 박스 설정 (111)이 체크된다. 메모리 영역 (123)에 저장된 루틴 (119) 호출에 대해 샌드 박싱 동작을 인보크할지 여부는 도메인 (101) 및 메모리 영역(123)에 대해 지정된 샌드 박스 설정 (111)을 기반으로 결정될 수 있다. 따라서, 샌드 박싱 동작은 루틴 (119)의 호출된 도메인 (103)과 호출하는 도메인 (101) 사이의 상대적인 하이어러키와 무관하게 인보크될 수 있다.
유사하게, 운영 체제 (104) 용으로 프로그래밍되고 메모리 영역 Y (123)에 저장된 도메인 (103)의 루틴 (119)을 고려한다. 애플리케이션 (106)에 대한 도메인 (105)의 다른 루틴이 실행을 위해 메모리 영역 (123)에 저장된 루틴 (119)을 호출할 때, 영역 (123)을 호출하기 위해 도메인 (105)에 대해 지정된 샌드 박스 설정 (115)이 체크된다. 샌드 박스 동작을 전개할지 여부는 메모리 영역 (123)에 저장된 루틴 (119)을 실행하기 위해 도메인 (103)의 애플리케이션 (106)으로부터의 호출에 대해 결정될 수 있으며, 도메인 (105) 및 메모리 영역 (123)에 대해 지정된 샌드 박스 설정 (115)을 기반으로 결정될 수 있다. 따라서, 샌드 박싱 동작은 호출 도메인과 호출된 도메인 (예를 들어, 105 및 103) 간의 상대적 하이어러키와 관계없이 인보크될 수 있다.
일반적으로, 동일한 도메인 (예를 들어, 103)의 상이한 루틴은 다른 영역 (예를 들어, 121, 123, .., 125)에 저장될 수 있으므로 동일한 도메인 (예를 들어, 예를 들어, 101, 103 또는 105)으로부터의 호출에 대해 상이한 샌드 박싱 요구 사항을 갖도록 구성된다.
일반적으로, 영역 (예를 들어, 123)은 동일한 샌드 박스 구성 (107)을 공유하는 다수의 루틴 (예를 들어, 119)을 저장할 수 있다.
도 1의 샌드 박싱 구성은 미리 정의된 신뢰 도메인 하이어러키 (즉, 비 하이어러키)에 의존하지 않으며, 기존의 정적으로 정의된 하이어러키 보호 링보다 더 나은 유연성과 미세한 제어를 제공할 수 있다.
도 2는 도 1의 시스템에서 샌드 박싱을 위한 섀도우 스택 구조를 도시한다.
도 2에서, 호출 루틴 (호출자(caller)) 및 호출된 루틴 (피호출자(callee))은 샌드 박싱을 위해 별도의 호출 스택 (131 및 132)을 사용하도록 구성될 수 있다.
예를 들어, 호출자는 스택 포인터 (231), 프레임 포인터 (233), 인수 포인터(argument pointer) (235)와 같은 제어 레지스터 세트 (133)와 관련하여 호출 스택 A (131)를 사용하도록 구성된다. 일반적으로 호출자 자체는 추가 루틴에 의해 호출될 수 있다. 따라서, 프레임 포인터 (233)는 호출자가 리턴할 때 호출자의 리턴 어드레스 (257)의 위치를 식별한다. 인수 포인터 (235)는 호출자를 인보크하기 위해 추가 루틴에 의해 사용되는 인수들/파라미터의 위치를 식별한다.
일반적으로, 호출자는 실행 동안에 자신의 개인 콘텐츠(private content) (255)를 스택 A (131)로 푸시(push)하고 실행 동안에 스택 A (131)에서 콘텐츠 (255)를 팝핑(pop)할 수 있다. 예를 들어, 호출자 콘텐츠 (255)는 피호출를 실행하기 위한 호출 전에 스택 (131)으로 푸시될 수 있다; 및 호출자 콘텐츠 (255)는 피호출자의 실행이 리턴된 후 스택 A (131)에서 팝핑될 수 있다. 스택 포인터 (231)는 호출자가 사용하는 스택 A (131)의 상부(top)를 식별한다.
피호출자가 실행을 위해 로드되기 전에, 호출자는 피호출자에 대한 호출 파라미터 (253)를 푸시할 수 있으며; 리턴 어드레스 (251)는 또한 스택 A (131)로 푸시될 수 있다.
피호출자로부터 호출자의 콘텐츠를 보호하고 및/또는 호출자로부터 피호출자의 콘텐츠를 보호하기 위해 샌드 박싱 동작이 수행될 때, 스택 A (131)의 콘텐츠의 일부는 리턴 어드레스 (251) 및 호출 파라미터 (253)를 포함하는 별도의 스택 B (132)로 복사된다. 별도의 스택 B (132)는 스택 A (131)의 섀도우(shadow)로 간주될 수 있다. 섀도우 스택 B (132)는 피호출자의 실행에 사용될 수 있다.
바람직하게는, 별도의 제어 레지스터 세트 (134)가 스택 B (132)의 동작에 사용된다. 예를 들어, 스택 (132)을 이용한 피호출자의 실행에는 별도의 스택 포인터 (241), 별도의 프레임 포인터 (243) 및 별도의 인수 포인트 (245)가 사용될 수 있다.
피호출자의 실행 동안, 피호출자의 명령은 자신의 개인 콘텐츠 (261)를 스택 B (132)로 푸시하고 필요할 때 스택 B (132)로부터 엔트리를 뽑아 낼 수 있다. 피호출자는 스택 B (132)를 사용하도록 제한될 수 있으며 호출자를 위한 별도의 스택 A (131)에 액세스하는 것을 방지할 수 있다. 따라서, 피호출자가 호출자의 개인 콘텐츠 (255)에 접근하는 것을 물리적으로 차단할 수 있다.
유사하게, 호출자는 스택 A (131)를 사용하도록 제한될 수 있고 피호출자를 위한 별도의 스택 B (132)에 액세스하는 것을 방지할 수 있다 (예를 들어, 스택에 데이터를 먼저 푸시하지 않고 스택에 슬롯을 할당함으로써). 따라서, 호출자는 피호출자의 개인 콘텐츠 (261)에 접근하는 것이 물리적으로 차단된다.
피호출자가 리턴하면 (예를 들어, 별도의 프레임 포인터 (243)에 의해 식별된 리턴 어드레스 (251)를 사용하여), 호출자는 스택 A (131) 및 연관된 제어 레지스터의 세트 (133)를 사용하여 동작을 계속할 수 있다.
옵션으로, 스택 B (132)의 콘텐츠는 피호출자가 리턴할 때 및/또는 호출 시작 동안 스택 B (132)가 사용될 때 소거될 수 있다.
도 2의 섀도우 스택 구조가 사용될 때, 피호출자의 데이터 보안이 향상된다; 호출자는 피호출자의 스택 데이터에 액세스하는 것이 차단된다.
옵션으로, 스택 B (132)는 호출자 (및 호출자(들))의 데이터가 제공되지 않는다. 예를 들어, 스택 B (132)가 피호출자의 동작을 위해 구성 때, 리턴 어드레스 (251) 및 호출 파라미터 (253)는 스택 A (131)에서 스택 B (132)로 복사될 수 있다; 호출자 콘텐츠 (255)를 포함하는 호출 파라미터 (253) 하의 다른 데이터는 스택 A (131)에서 스택 B (132)로 복사되지 않는다. 따라서, 피호출자는 호출자의 개인 콘텐츠 (255) 및/또는 다른 호출 스택 데이터에 액세스하는 것이 물리적으로 차단된다.
메모리 영역 (123)에 저장된 피호출자가 별도의 스택 (132)을 사용해야 하는지 여부는 샌드 박스 구성 (107)을 사용하여 구성될 수 있다. 샌드 박싱 구성 (107)은 다른 도메인 (101, 103,…, 105)으로부터 호출자에 대해 상이한 설정 (111, 113,…, 115)을 가질 수 있다.
샌드 박싱 구성 (107)은 도 3에 도시된 영역 (123)의 페이지 테이블 엔트리의 일부로서 저장될 수 있다.
도 3은 실행 도메인 (예를 들어, 101, 103,…, 105)에 대한 샌드 박싱 구성 (107)을 갖는 페이지 테이블 엔트리 (153)를 예시한다.
가상 어드레스 공간 (127)의 전형적인 가상 어드레스 (141)는 페이지 테이블 (151)을 사용하여 물리적 어드레스 공간 (129)의 대응하는 물리적 어드레스 (159)로 변환될 수 있다. 일반적으로, 가상 어드레스 공간 (127)을 물리적 어드레스 공간 (129)에 매핑하기 위해 다수의 페이지 테이블 (예를 들어, 151)이 사용될 수 있다.
가상 어드레스 (141)는 테이블 ID (143), 엔트리 ID (145) 및 오프셋 (147)을 포함할 수 있다. 테이블 ID (143)는 가상 어드레스 (141) 및 물리적 어드레스 (159)로 식별되는 메모리 유닛을 포함하는 페이지에 대한 페이지 테이블 엔트리(153)를 포함하는 페이지 테이블 (151)을 식별하는데 사용될 수 있다. 엔트리 ID (145)는 페이지 테이블 엔트리 (153) 위치를 효율적으로 찾기 위한 페이지 테이블 (151)에 대한 인덱스로 사용된다. 페이지 테이블 엔트리 (153)는 물리적 어드레스 (159)의 베이스 (157)를 제공한다. 동일한 메모리 페이지의 물리적 어드레스는 동일한 베이스 (157)를 공유한다. 따라서, 베이스 (157)는 메모리 (109)에서 영역 (123)을 식별한다. 가상 어드레스 (141)의 오프셋 (147)은 메모리 (109)의 페이지 또는 영역 (123)에서 대응하는 오프셋 (147)으로 사용된다. 베이스 (157)와 오프셋 (147)의 조합은 가상 어드레스 (141)에 대응하는 물리적 어드레스 (159)를 제공한다.
도 3에서, 페이지 테이블 엔트리 (153)는 페이지 또는 영역 (123)에 대한 베이스 (157) 뿐만 아니라 도 1에 예시된 개별 도메인 (101, 103,…, 105)에 대한 설정 (111, 113,…, 115)을 포함하여 페이지 또는 메모리 영역 (123)에 대한 샌드 박싱 구성 (107)도 지정한다.
예를 들어, 샌드 박스 구성 (107)은 도메인 세트 (101, 103,…, 105) 개개에 대한 비트 세트 (111, 113,…, 115)를 포함할 수 있다. 샌드 박스 설정 비트 (예를 들어, 111, 113,… 또는 115)가 제 1 값 (예를 들어, 1 또는 0)을 갖도록 설정되면, 피호출자 콘텐츠 (261)가 호출자에 의해 액세스되는 것을 보호하고 및/또는 호출자 콘텐츠 (255)가 피호출자에 의해 액세스되는 것을 보호하기 위해 대응하는 도메인 (예를 들어, 101, 103,…, 105)에서 영역 (123)에 저장된 루틴으로의 호출이 도 2의 섀도우 스택 구조를 사용하기 위해 필요하다. 샌드 박스 설정 비트 (예를 들어, 111, 113,… 또는 115)가 제 2 값 (예를 들어, 0 또는 1)을 갖도록 설정되면, 호출자와 피호출자를 서로 보호하기 위해 대응하는 도메인 (예를 들어, 101, 103,…, 105)에서 영역 (123)에 저장된 루틴으로의 호출은 도 2의 섀도우 스택 구조를 사용하지 않는다; 호출자와 피호출자는 동일한 세트의 컨트롤러 레지스터 (133)와 동일한 스택 (131)을 공유할 수 있다.
옵션으로, 페이지 테이블 엔트리 (153)는 물리적 메모리 페이지의 다른 속성 (155) 예컨대, 페이지의 데이터가 유효한지 여부, 페이지가 메인 메모리에 있는지 여부, 페이지가 더티 (dirty)인지 여부 (예를 들어, 물리적 메모리 페이지의 데이터 변경이 아직 메모리 영역(123)에 비해 장기 메모리/스토리지 디바이스로 플러시(flush)되지 않았다)와 같은 것을 지정할 수 있다.
추가하여, 페이지 테이블 엔트리 (153)는 판독, 기록, 실행 등과 같은 다양한 동작을 위해 메모리 영역 (123)에 액세스하기 위해 도메인 (101, 103,…, 105)에 대한 허가 설정을 옵션으로 포함할 수 있다. 예를 들어, 각각의 도메인 (101, 103,… 또는 105)에 대해, 페이지 테이블 엔트리 (153)의 허가 비트는 도메인 (101, 103,… 또는 105)에서 실행중인 루틴이 판독, 기록 또는 실행과 같은 특정 유형의 동작에 대해 베이스 (157)에 의해 정의된 메모리 영역 (123)을 액세스할 수 있는지 여부를 지정할 수 있다. 예를 들어, 속성 (155)은 페이지가 컴퓨터의 메인 메모리에 있는지 또는 컴퓨터의 스토리지 디바이스에 있는지를 나타내는 페이지 폴트 비트(page fault bit)를 포함할 수 있다. 허가 설정이 메모리 페이지에 대한 현재 액세스를 허용하고 페이지 폴트 비트가 페이지가 현재 컴퓨터의 메인 메모리에 없음을 나타내면, 메모리 관리 디바이스 (181)는 페이지 테이블 엔트리 (153)에 의해 식별된 페이지에 대한 액세스를 가능하게 하기 위해 스토리지 디바이스로부터 컴퓨터의 메인 메모리로 페이지를 스왑(swap)할 수 있다. 그러나, 허가 설정이 현재 실행 도메인의 페이지에 대한 현재 액세스를 거부하는 경우, 페이지 폴트 비트를 평가하거나 및/또는 페이지 테이블 엔트리(153)에 대응하는 페이지에서 스왑할 필요가 없다.
일반적으로, 테이블 ID (143)는 페이지 테이블 (151) 위치를 찾기 위해 사용되는 다수의 필드로 분할될 수 있다. 예를 들어, 테이블 ID (143)는 최상위 페이지 테이블을 식별하는 최상위 테이블 ID와 베이스 (157)를 함유하는 페이지 테이블 엔트리 (153)를 식별하기 위해 페이지 테이블 (151)로 인덱싱되는 엔트리 ID (145)와 유사한 방식으로, 페이지 테이블 (151)의 식별자를 포함하는 페이지 테이블 엔트리를 검색하기 위해 최상위 페이지 테이블에 대한 인덱스로 사용되는 최상위 테이블 엔트리 ID를 포함할 수 있다.
일반적으로, 엔트리 ID (145)는 페이지 테이블 (151)에서 가상 페이지 번호로 간주될 수 있다; 및 가상 페이지 번호 (예를 들어, 145)는 베이스 (157)를 함유하는 페이지 테이블 엔트리 (153)를 조회하기 위해 페이지 테이블 (151)에서 사용될 수 있다.
예를 들어, 테이블 ID (143)는 페이지 테이블 (예를 들어, 151)의체인을 식별하는데 사용될 수 있는 가상 페이지 번호 세트를 포함할 수 있다. 각각의 가상 페이지 번호는 다음 레벨 페이지 테이블 (또는 페이지 디렉토리)의 아이덴티티 또는 베이스를 포함하는 페이지 테이블 엔트리 (또는 페이지 디렉토리 엔트리)를 식별하기 위해 페이지 테이블 (또는 페이지 디렉토리)의 인덱스로 사용된다.
일부 인스턴스에서, 컴퓨터에서 다른 실행중인 프로세스는 다른 가상 어드레스 공간 (예를 들어, 127)을 가질 수 있다; 실행중인 프로세스의 프로세스 ID는 최상위 페이지 테이블 (또는 페이지 디렉터리)을 결정하는데 사용될 수 있다. 일부 인스턴스에서, 가상 어드레스 (141) 일부의 해시, 프로세스 ID 및/또는 컴퓨터 시스템에서 호스팅되는 가상 머신의 아이덴티피케이션을 사용하여 최상위 페이지 테이블 (또는 페이지 디렉토리)을 찾을 수 있다. 일부 인스턴스에서, 해시가 페이지 테이블 엔트리를 조회하기 위한 인덱스 또는 키로 사용된다. 페이지 테이블 엔트리 (153)가 어떻게 위치된 지에 관계없이 (예를 들어, 다수의 페이지 테이블을 통한 인덱싱을 통해, 인덱스 또는 키로 해시를 사용하여) 페이지 테이블 엔트리 (153)의 콘텐츠는 도 3에 예시된 방식으로, 베이스 (157)에 대응하는 페이지/메모리 영역 (123)에 저장된 루틴을 호출하기 위한 보안 조치를 선택적으로 전개하기 위해 다른 도메인 (101, 103,…, 105)에 대한 샌드 박싱 구성 (107)을 제공하도록 구성될 수 있다.
도 3에서, 페이지 또는 영역 Y (123)에 대한 샌드 박스 구성 (107)은 최하위 레벨(bottom-level) 페이지 테이블 (151)에 지정되며, 여기서, 최하위 레벨 페이지 테이블 (151)의 페이지 테이블 엔트리 (153)는 물리적 어드레스 (159)의 베이스(157)를 제공한다.
대안으로 또는 조합하여, 상위 레벨 페이지 테이블 (또는 페이지 디렉토리)은 페이지 테이블 엔트리 (또는 페이지 디렉토리 엔트리)에 대한 샌드 박스 구성을 가질 수도 있다. 예를 들어, 페이지 테이블 (151)을 식별하는 페이지 테이블 엔트리 (또는 페이지 디렉토리 엔트리)는 페이지 테이블 (151)의 모든 페이지에 대한 샌드 박스 구성을 가질 수 있다; 따라서, 페이지 테이블 엔트리의 도메인 허가 데이터는 페이지 테이블 (151)에 의해 정의된 메모리 영역에 적용 가능하다. 페이지 테이블 (151)로 이어지는 페이지 테이블 엔트리 체인의 샌드 박스 구성 및 최하위 레벨 페이지 테이블 엔트리 (153)의 샌드 박스 구성 (107)의 하이어러키는 논리 AND 연산 또는 논리 OR 연산을 통해 조합될 수 있다.
예를 들어, 도메인 (예를 들어, 101, 103,…, 105)에서 실행중인 루틴에서 호출된 루틴 (119)에 대한 호출은 최하위 레벨(bottom-level) 테이블 엔트리 (153)를 포함하여 베이스(157)로 이어지는 페이지 테이블 엔트리 체인의 모든 샌드 박싱 구성에 샌드 박싱이 필요한 값이 있는 경우 샌드 박싱 동작 (예를 들어,도 2의 섀도우 스택 구조 사용)을 요구할 수 있다. 대안으로, 하위 레벨 테이블 엔트리 (153)을 포함하여 베이스 (157)으로 이어지는 페이지 테이블 엔트리 체인의 샌드 박싱 구성이 샌드 박싱을 필요로 하는 값을 갖는 경우, 샌드 박싱이 필요할 수 있다. 대안으로, 하위 레벨 테이블 엔트리 (153)를 포함하여 베이스(157)로 이어지는 페이지 테이블 엔트리 체인의 샌드 박싱 구성에 샌드 박싱이 필요한 값이 없는 경우, 샌드 박싱이 구현되지 않는다. 대안으로, 하위 레벨 테이블 엔트리 (153)을 포함하여 베이스 (157)로 이어지는 페이지 테이블 엔트리 체인의 샌드 박싱 구성이 샌드 박싱을 필요하지 않은 값을 갖는 경우 샌드 박싱이 구현되지 않는다.
옵션으로, 보안 구성 (예를 들어, 107)은 상위 레벨 페이지 테이블 (디렉토리)가 아니라, 최하위 레벨 페이지 테이블 (151)에 지정된다.
도 4는 보안 동작을 구성하는 페이지 테이블 (예를 들어, 151)를 갖는 컴퓨터 시스템을 도시한다.
도 4의 컴퓨터 시스템은 하나 이상의 버스 (163)를 통해 메모리 시스템 (161)에 결합된 호스트 시스템 (165)을 갖는다. 메모리 시스템 (161)은 메모리 컴포넌트 (171, …, 173)를 갖는다.
예를 들어, 버스 (163)는 하나 이상의 메모리 모듈에 연결되는 메모리 버스를 포함할 수 있고 및/또는 하나 이상의 스토리지 디바이스에 연결되는 주변 인터넷을 포함할 수 있다. 일부 메모리 컴포넌트 (171, …, 173)는 랜덤 액세스를 제공할 수 있다; 일부 메모리 컴포넌트 (171, …, 173)는 영구 스토리지 성능을 제공할 수 있다. 일부 메모리 컴포넌트 (171, …, 173)는 메모리 컴포넌트에 대한 전원 공급이 일시적으로 차단될 때, 메모리 컴포넌트에 저장된 데이터가 손상 및/또는 소거된다는 점에서 휘발성일 수 있다. 일부 메모리 컴포넌트 (171, …, 173)는 메모리 컴포넌트가 전력없이 장기간 저장된 콘텐츠를 보유할 수 있다는 점에서 비 휘발성일 수 있다.
일반적으로, 메모리 시스템 (161)은 또한 메모리 디바이스로 지칭될 수 있다. 메모리 디바이스의 예로는 메모리 버스를 통해 중앙 프로세싱 유닛 (CPU)에 연결된 메모리 모듈이 있다. 메모리 모듈의 예는 듀얼 인라인 메모리 모듈 (DIMM), 소형 아웃 라인 DIMM (SO-DIMM), 비 휘발성 듀얼 인라인 메모리 모듈 (NVDIMM) 등을 포함한다. 메모리 디바이스의 또 다른 예는 주변 상호 연결 (예를 들어, 입력/출력 버스, 스토리지 영역 네트워크)을 통해 중앙 프로세싱 유닛 (CPU)에 연결된 스토리지 디바이스이다. 저장 디바이스의 예는 SSD (Solid-State Drive), 플래시 드라이브, USB (Universal Serial Bus) 플래시 드라이브 및 HDD (하드 디스크 드라이브)를 포함한다. 일부 인스턴스에서, 메모리 디바이스는 메모리 기능과 저장 기능 둘 모두를 제공하는 하이브리드 메모리/스토리지 시스템이다.
메모리 컴포넌트 (171, …, 173)는 상이한 유형의 비 휘발성 메모리 컴포넌트 및/또는 휘발성 메모리 컴포넌트의 임의의 조합을 포함할 수 있다. 비 휘발성 메모리 컴포넌트의 예는 단일 레벨 셀 (SLC) 또는 멀티 레벨 셀 (MLC) (예를 들어, 트리플 레벨 셀 (TLC) 또는 쿼드 레벨 셀 (QLC))과 같은 하나 이상의 메모리 셀 어레이가 있는 네거티브-앤드(and) (NAND) 유형 플래시 메모리를 포함된다. 일부 인스턴스에서, 특정 메모리 컴포넌트는 메모리 셀의 SLC 부분과 MLC 부분 둘 모두를 포함할 수 있다. 각각의 메모리 셀은 호스트 시스템 (165)에 의해 사용되는 하나 이상의 데이터 비트 (예를 들어, 데이터 블록)를 저장할 수 있다. 대안으로 또는 조합하여, 메모리 컴포넌트 (171, … 또는 173)는 휘발성 메모리의 유형을 포함할 수 있다. 일부 인스턴스에서, 메모리 컴포넌트 (171, … 또는 173)는 RAM (Random Access Memory), ROM (Read-Only Memory), DRAM (Dynamic Random Access Memory), 동기식 동적 랜덤 액세스 메모리 (SDRAM), 상 변화 메모리 (PCM), 자기 랜덤 액세스 메모리 (MRAM), 스핀 전송 토크 (STT)-MRAM, 강유전성 랜덤 액세스 메모리 (FeTRAM), 강유전성 RAM (FeRAM), 전도성 브리징 RAM (CBRAM), 저항성 랜덤 액세스 메모리 (RRAM), 산화물 기반 RRAM (OxRAM), 네거티브-오어(or) (NOR) 플래시 메모리, 전기적 소거 가능 프로그래밍 가능 판독 전용 메모리(EEPROM), 나노 와이어 기반 비 휘발성 메모리, 멤리스터 기술이 통합된 메모리, 및/또는 비 휘발성 메모리 셀의 교차점 어레이를 포함할 수 있지만 이에 한정되지는 않다. 비 휘발성 메모리의 교차점 어레이는 스택형 교차 그리드 데이터 액세스 에레이와 함께 벌크 저항의 변화를 기반으로 비트 저장을 수행할 수 있다. 또한, 많은 플래시 기반 메모리와 달리, 교차점 비 휘발성 메모리는 제 자리에 기록 동작을 수행할 수 있으며, 여기서 비 휘발성 메모리 셀은 비 휘발성 메모리 셀을 미리 삭제하지 않고도 프로그래밍될 수 있다.
일반적으로, 호스트 시스템 (165)은 하나 이상의 메모리 컴포넌트 (171, …, 173)를 포함하는 물리적 메모리 (109)로서 메모리 시스템 (161)을 이용할 수 있다. 호스트 시스템 (165)은 실행을 위해 메모리 시스템 (161)으로부터 명령을 로드하고, 메모리 시스템 (161)에 저장될 데이터를 제공하고, 메모리 시스템 (161)으로부터 검색될 데이터를 요청할 수 있다.
도 4에서, 호스트 시스템 (165)은 메모리 관리 유닛 (MMU) (181) 및 프로세서 (169)를 포함한다. 프로세서 (169)는 산술 논리 유닛과 같은 실행 유닛 (예를 들어, 185)을 갖는다. 프로세서 (169)는 실행을 위한 명령, 명령의 피연산자로서의 데이터, 및/또는 명령 실행의 결과를 홀딩하는 레지스터 (183)를 갖는다. 프로세서 (169)는 메모리 시스템 (161)의 일부의 프록시로서 내부 캐시 (187)를 가질 수 있다.
일부 인스턴스에서, 호스트 시스템 (165)은 중앙 프로세싱 유닛 (CPU)의 다수의 프로세싱 코어와 동일한 실리콘 다이에 통합된 다수의 프로세서 (예를 들어, 169)를 포함할 수 있다.
프로세서 (169)에서 실행되도록 프로그래밍된 루틴은 초기에 메모리 시스템 (161)에 저장될 수 있다. 루틴은 하이퍼바이저 (102), 운영 체제 (104) 및 애플리케이션 (106)에 대한 명령을 포함할 수 있다. 메모리 시스템 (161)에 초기에 저장된 루틴은 실행 유닛 (185)에서의 실행을 위해 내부 캐시 (187) 및/또는 레지스터 (183)에 로드될 수 있다.
루틴의 실행 인스턴스는 하이퍼바이저 (102), 운영 체제 (104) 및 애플리케이션 (106)의 실행 (167)을 형성한다. 일부 인스턴스에서, 하이퍼바이저 (102)가 사용되지 않는다; 운영 체제 (104)는 하이퍼바이저 없이 하드웨어 컴포넌트 (예를 들어, 메모리 시스템 (161), 주변 입력/출력 디바이스 및/또는 네트워크 인터페이스 카드)를 제어한다.
하이퍼바이저 (102), 운영 체제 (104) 및/또는 애플리케이션 (106)의 실행 (167)은 하나 이상의 가상 메모리 공간 (예를 들어, 127)에 정의된 가상 메모리 어드레스 (예를 들어, 141)를 사용하여 메모리 (123)에 액세스한다 (예를 들어, 메모리 컴포넌트 (171, …, 173)). 실행에 사용된 가상 메모리 어드레스 (예를 들어, 141)를 메모리 컴포넌트 (예를 들어, 171, …, 173)의 물리적 메모리 어드레스 (예를 들어, 159)로 변환하기 위해 적어도 하나의 페이지 테이블 (151) (예를 들어, 도 3에 예시됨)이 사용된다.
도 1에 예시된 바와 같이, 하이퍼바이저 (102), 운영 체제 (104) 및 애플리케이션 (106)의 루틴의 실행은 복수의 도메인 (101, 103, …, 105)으로 구조화될 수 있다. 페이지 테이블 엔트리 (153)에 의해 식별되는 각각의 실행 도메인 (101, 103,…, 105) 및 메모리 영역 (123)에 대해, 페이지 테이블 엔트리 (153)는 영역 (123)에 저장된 루틴 (119)을 호출하기 위한 샌드 박스 설정 (예를 들어, 131, 133,…, 135)을 갖는 샌드 박스 구성 (107)을 식별한다.
호스트 시스템 (185)은 페이지 테이블 엔트리 (153)의 샌드 박스 설정 (예를 들어, 111, 113,… 또는 115)이 호출자의 대응하는 실행 도메인 (예를 들어, 101, 103,… 또는 105)에 대한 미리 정의된 값 (예를 들어, 1)을 가질 때 영역 (123)에서 로드된 호출된 루틴 (119)의 피호출자 콘텐츠 (261)를 보호하기 위해 도 2의 섀도우 스택 구조를 가질 수 있다.
도 5는 실행 도메인 (101, 103,…, 105)에 대한 페이지 테이블 엔트리 (예를 들어, 153)에 지정된 설정 (예를 들어, 111, 113,…, 115)을 통해 섀도우 스택 동작을 제어하는 방법을 도시한다.
예를 들어, 도 5의 방법은 도 1에 예시된 각각의 실행 도메인 (101, 103,…, 105)의 루틴으로부터의 호출에 대해 도 2의 샌드 박스 설정 (111, 113,…, 115)을 제공하기 위해 도 3의 페이지 테이블 (151)을 사용하여 도 4의 컴퓨터 시스템에서 수행될 수 있다.
블록 (201)에서, 컴퓨터 시스템 (예를 들어, 도 4에 예시됨)은 제 1 루틴의 실행 동안 가상 메모리 어드레스 (141)에서 제 2 루틴 (119)을 호출하기 위한 요청을 수신한다.
예를 들어, 제 1 루틴은 하이퍼바이저 (102), 운영 체제 (104) 또는 애플리케이션 (106)의 일부일 수 있다. 따라서, 제 1 루틴의 실행은 도 1에 도시된 미리 정해진 도메인 (101, 103,…, 105)의 세트 중 하나로 분류될 수 있다.
블록 (203)에서, 메모리 관리 유닛 (MMU) (181) (또는 컴퓨터 시스템의 프로세서 (169))은 도 3에 예시된 가상 메모리 어드레스 (141)를 물리적 메모리 어드레스(159)로 변환할 때 페이지 테이블 엔트리 (153)를 결정한다.
블록 (205)에서, 메모리 관리 유닛 (MMU) (181) (또는 컴퓨터 시스템의 프로세서 (169))은 복수의 미리 정의된 도메인 (101, 103,…, 105) 중에서 제 1 루틴의 실행을 포함하는 실행 도메인 (예를 들어, 101)을 식별한다.
예를 들어, 루틴의 명령을 로드하기 위한 메모리 어드레스는 루틴이 프로세서 (169)에서 실행되도록 로드될 때 도메인 (예를 들어, 101, 103,…, 105)을 결정하는 객체 식별자를 포함할 수 있다. 다른 예에서 객체 식별자는 가상 어드레스 공간의 일부이며 도메인을 지정하지 않는다. 일부 구현에서, 페이지 테이블 엔트리 (153)는 페이지 테이블 엔트리 (153)에 의해 식별되는 메모리 영역 (123)에 저장된 루틴의 도메인을 식별하는 정보를 포함한다.
예를 들어, 프로세서의 레지스터 (183)는 루틴이 프로세서 (169)에서 실행되는 동안 루틴의 도메인의 식별자를 저장할 수 있다.
블록 (207)에서, 메모리 관리 유닛 (MMU) (181) (또는 컴퓨터 시스템의 프로세서 (169))은 페이지 테이블 엔트리 (153)로부터, 실행 도메인 (예를 들어, 101, 103,… 또는 105)에 대해 지정된 보안 설정 (예를 들어, 111, 113, … 또는 115)을 검색한다.
예를 들어, 샌드 박싱 구성 (107)의 설정 (111, 113,…, 115)은 페이지 테이블 엔트리 (153)의 미리 정해진 위치에 저장될 수 있다.
블록 (209)에서, 컴퓨터 시스템 (예를 들어, 도 4에 예시됨)은 미리 결정된 값 (예를 들어, 1)을 갖는 보안 설정 (예를 들어, 111, 113,… 또는 115)에 응답하여 제 1 루틴 (예를 들어, 도메인(101, 103,… 또는 105)에서)에 의해 사용되는 제 1 스택 (131)과 분리된 제 2 스택 (132)을 사용하여 제 2 루틴 (119)을 실행한다.
보안 설정 (예를 들어, 111, 113,…, 115)이 미리 정해진 값 (예를 들어, 1)을 갖지 않는 경우, 컴퓨터 시스템 (예를 들어,도 4에 도시)은 제 1 루틴에 의해 사용된 것과 동일한 스택 (131)을 사용하여 제 2 루틴 (119)을 실행한다.
블록 (211)에서, 컴퓨터 시스템의 하드웨어 (예를 들어, 도 4에 예시됨)는 제 1 루틴 (예를 들어, 도메인 (101, 103,…, 또는 105)에서)이 제 2 스택 (132)에 액세스하는 것을 방지한다.
예를 들어, 개별 도메인 (101, 103,…, 105)에 대한 샌드 박스 설정 비트 (111, 113,…, 115)는 페이지 테이블 엔트리 (153) 내의 미리 결정된 위치에 저장될 수 있다. 따라서, 명령의 실행 도메인을 기반으로, 메모리 관리 디바이스 (MMU) (181) (또는 컴퓨터 시스템의 프로세서 (169))는 샌드 박스 설정 비트 (예를 들어, 111, 113,… 또는 115)를 추출할 수 있고, 추출된 샌드 박스 설정 비트에 따라 호출된 루틴 (119)에 대한 호출에 대해 샌드 박스 동작이 인보크될지 여부를 결정한다.
본 출원에 개시된 기술은 적어도 프로세서가 메모리로부터 분리되고 프로세서가 통신 버스 및/또는 컴퓨터 네트워크를 통해 메모리 및 스토리지 디바이스와 통신하는 컴퓨터 시스템에 적용될 수 있다. 추가로, 본 출원에 개시된 기술은 프로세싱 능력이 메모리/스토리지 내에 통합되는 컴퓨터 시스템에 적용될 수 있다. 예를 들어, 전형적인 프로세서의 실행 유닛 및/또는 레지스터를 포함하는 프로세싱 회로는 메모리 디바이스 내에서 프로세싱을 수행하기 위해 메모리 매체의 집적 회로 및/또는 집적 회로 패키지 내에서 구현될 수 있다. 따라서, 상기에서 논의되고 도면에 도시된 프로세서 (예를 들어, 101)는 폰 노이만 아키텍처(von Neumann architecture)의 중앙 프로세싱 유닛일 필요는 없다. 프로세서는 폰 노이만 아키텍처에 따라 별도로 구성된 메모리와 중앙 프로세싱 유닛 사이의 데이터 이동 레이턴시로 인한 스루풋 제한의 결과로 컴퓨팅 성능을 제한하는 폰 노이만 병목 현상(bottleneck)을 극복하기 위해 메모리 내에 통합된 유닛일 수 있다.
본 개시의 설명 및 도면은 예시적이며 한정하는 것으로 해석되어서는 안 된다. 철저한 이해를 제공하기 위해 수많은 특정 세부 사항이 설명되어 있다. 그러나, 일부 인스턴스에서는, 설명을 모호하게 하는 것을 피하기 위해 잘 알려져 있거나 통상적인 세부 사항은 설명되지 않는다. 본 개시의 하나 또는 실시예에 대한 언급은 반드시 동일한 실시예에 대한 언급은 아니다; 그리고 그러한 언급은 적어도 하나를 의미한다.
전술한 명세서에서, 본 개시는 구체적인 예시적인 실시예들을 참조하여 설명되었다. 이하의 청구 범위에 설명된 보다 넓은 취지 및 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 컴퓨터 시스템에 있어서,
    미리 정의된 도메인 세트의 루틴(routine)의 명령을 적어도 저장하도록 구성된 메모리;
    상기 메모리와 결합된 프로세서;
    상기 프로세서와 상기 메모리 사이에 결합된 메모리 관리 유닛 - 상기 메모리 관리 유닛은 상기 미리 정의된 세트의 각각의 도메인에 대한 보안 설정을 포함하는 페이지 테이블 엔트리(page table entry)를 포함하는 페이지 테이블을 관리하도록 구성됨 -; 및
    제 1 호출 스택(call stack) 및 제 2 호출 스택을 갖는 섀도우 캐시 구조(shadow cache structure)를 포함하고,
    상기 메모리 관리 유닛은 가상 메모리 어드레스의 제 2 루틴에 대한 제 1 루틴의 호출 동안 상기 페이지 테이블 엔트리를 사용하여 상기 가상 메모리 어드레스를 물리적 메모리 어드레스로 매핑(map)하도록 구성되고;
    상기 메모리 관리 유닛은 상기 제 1 루틴이 있는 제 1 도메인에 기초하여 상기 페이지 테이블 엔트리로부터 제 1 보안 설정을 추출하도록 더 구성되고;
    상기 컴퓨터 시스템은 상기 페이지 테이블 엔트리로부터 검색된 상기 제 1 보안 설정의 값에 적어도 부분적으로 기초하여 상기 호출에 대한 보안 동작을 선택적으로 구현하도록 구성되고;
    상기 제 1 루틴은 상기 제 1 호출 스택을 사용하도록 구성되고 상기 제 2 호출 스택에 액세스하는 것이 방지되고;
    상기 호출에 응답하여, 상기 제 2 루틴은 상기 제 1 보안 설정의 값이 샌드 박싱 동작을 요구하는 미리 결정된 값과 동일한 것에 기초하여 상기 제 2 호출 스택을 사용하도록 구성된, 컴퓨터 시스템.
  2. 제 1 항에 있어서, 상기 페이지 테이블 엔트리는 물리적 어드레스의 페이지에 대한 베이스(base)를 포함하는, 컴퓨터 시스템.
  3. 제 2 항에 있어서, 상기 메모리 관리 유닛은 상기 물리적 어드레스를 생성하기 위해 상기 가상 메모리 어드레스에 지정된 상기 베이스 및 오프셋(offset)을 조합하도록 구성된, 컴퓨터 시스템.
  4. 제 3 항에 있어서, 상기 미리 정의된 도메인 세트는 하이퍼바이저용 도메인, 운영 체제용 도메인, 애플리케이션용 도메인, 또는 이들의 임의의 조합 중 적어도 하나를 포함하는, 컴퓨터 시스템.
  5. 삭제
  6. 제 1 항에 있어서, 상기 호출에 응답하여, 상기 제 2 루틴은 상기 제 1 보안 설정의 값이 상기 샌드 박싱 동작을 요구하는 미리 결정된 값과 동일하지 않은 것에 기초하여 상기 제 1 호출 스택을 사용하도록 구성된, 컴퓨터 시스템.
  7. 제 1 항에 있어서,
    상기 제 1 호출 스택을 동작시키도록 구성된 제 1 제어 레지스터 세트; 및
    상기 제 2 호출 스택을 동작시키도록 구성된 제 2 제어 레지스터 세트를 더 포함하는, 컴퓨터 시스템.
  8. 제 7 항에 있어서, 상기 제 1 및 제 2 제어 레지스터 세트의 각각은,
    스택 포인터(stack pointer);
    프레임 포인터(frame pointer); 및
    인수 포인터(argument pointer)를 포함하는, 컴퓨터 시스템.
  9. 제 8 항에 있어서, 상기 제 1 호출 스택의 콘텐츠의 적어도 일부는 상기 제 2 루틴의 실행을 위한 상기 호출에 응답하여 상기 제 2 호출 스택으로 복사되는, 컴퓨터 시스템.
  10. 제 3 항에 있어서, 상기 가상 메모리 어드레스는 마지막 가상 페이지 번호를 포함하는 복수의 가상 페이지 번호를 포함하고; 상기 메모리 관리 유닛은 상기 페이지 테이블 엔트리의 위치 검색(locate)을 위해 상기 마지막 가상 페이지 번호를 사용하여 상기 페이지 테이블로 인덱싱(index)하도록 구성된, 컴퓨터 시스템.
  11. 제 10 항에 있어서, 상기 페이지 테이블은 마지막 페이지 테이블이고; 상기 메모리 관리 유닛은 상기 마지막 페이지 테이블을 식별하는 제 1 페이지 테이블 엔트리를 검색하기 위해 상기 복수의 가상 페이지 번호 중 제 1 가상 페이지 번호를 사용하여 제 1 페이지 테이블로 인덱싱하도록 더 구성된, 컴퓨터 시스템.
  12. 방법에 있어서,
    제 1 루틴의 실행 동안 가상 메모리 어드레스에서 제 2 루틴을 호출하기 위한 요청을 수신하는 단계;
    상기 가상 메모리 어드레스를 물리적 메모리 어드레스로 변환시 페이지 테이블 엔트리를 결정하는 단계;
    복수의 미리 정의된 도메인 중에서, 상기 제 1 루틴의 실행을 포함하는 실행 도메인을 식별하는 단계;
    상기 페이지 테이블 엔트리로부터 상기 실행 도메인에 대해 지정된 보안 설정을 검색하는 단계;
    상기 보안 설정에 적어도 부분적으로 기초하여, 제 1 스택 및 제 2 스택을 갖는 섀도우 캐시 구조를 사용하여 상기 제 2 루틴을 실행하는 단계 - 상기 제 2 루틴은 상기 제 1 루틴이 상기 제 1 스택을 사용할 때 상기 보안 설정이 샌드 박싱 동작을 요구하는 것에 기초하여 상기 제 2 스택을 사용함 -; 및
    상기 제 1 루틴이 상기 제 2 스택에 액세스하는 것을 방지하는 단계를 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 페이지 테이블 엔트리로부터 베이스(base)를 추출하는 단계;
    상기 가상 메모리 어드레스로부터 오프셋(offset)을 추출하는 단계; 및
    상기 물리적 메모리 어드레스를 생성하기 위해 상기 베이스 및 오프셋을 조합하는 단계를 더 포함하는, 방법.
  14. 제 13 항에 있어서, 상기 복수의 미리 정의된 도메인은 하이퍼바이저용 도메인을 포함하는, 방법.
  15. 제 13 항에 있어서, 상기 복수의 미리 정의된 도메인은 운영 체제용 도메인을 포함하는, 방법.
  16. 제 13 항에 있어서,
    상기 제 2 스택을 사용하는 상기 제 2 루틴의 실행 전에 상기 호출에 응답하여 상기 제 1 스택의 적어도 일부를 상기 제 2 스택에 복사하는 단계를 포함하는, 방법.
  17. 제 16 항에 있어서,
    상기 제 2 루틴 리턴시 상기 제 2 스택을 소거하는 단계(erasing)를 더 포함하는, 방법.
  18. 컴퓨팅 디바이스에 있어서,
    적어도 하나의 레지스터;
    적어도 하나의 실행 유닛;
    복수의 미리 정의된 도메인에 개별적으로 대응하는 복수의 보안 설정을 포함하는 페이지 테이블 엔트리를 갖는 메모리 관리 유닛; 및
    제 1 스택 및 제 2 스택을 갖는 섀도우 캐시 구조를 포함하고;
    가상 메모리 어드레스를 사용하여 제 2 루틴을 호출하는 상기 컴퓨팅 디바이스에서 실행되는 제 1 루틴에 응답하여,
    상기 메모리 관리 유닛은 상기 페이지 테이블 엔트리를 사용하여 물리적 메모리 어드레스를 생성하도록 구성되고;
    상기 컴퓨팅 디바이스는 상기 복수의 보안 설정 중 제 1 보안 설정에 기초하여 보안 동작을 수행할지 여부를 결정하도록 구성되고, 상기 제 1 보안 설정은 상기 제 1 루틴의 실행 도메인에 대응하고;
    상기 제 1 보안 설정이 샌드 박싱 동작을 요구하는 것에 기초하여, 상기 상기 컴퓨팅 디바이스는 상기 제 1 루틴이 상기 제 1 스택을 사용할 때 상기 제 2 루틴을 위해 상기 제 2 스택을 할당하고 상기 제 1 루틴이 상기 제 2 스택에 액세스하는 것을 방지하도록 구성된, 컴퓨팅 디바이스.
  19. 제 18 항에 있어서,
    상기 제 2 스택은 상기 보안 동작에 적어도 부분적으로 기초하여 상기 가상 메모리 어드레스를 사용하여 상기 제 2 루틴을 호출하는 상기 제 1 루틴에 응답하여 상기 제 2 루틴을 실행하도록 구성된, 컴퓨팅 디바이스.
  20. 제 19 항에 있어서, 상기 미리 정의된 도메인은 하이퍼바이저용 도메인, 운영 체제용 도메인, 또는 애플리케이션용 도메인, 또는 이들의 임의의 조합 중 적어도 하나를 포함하는, 컴퓨팅 디바이스.
KR1020217005222A 2018-08-30 2019-08-23 실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성 KR102570757B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862724913P 2018-08-30 2018-08-30
US62/724,913 2018-08-30
US16/520,296 2019-07-23
US16/520,296 US10942863B2 (en) 2018-08-30 2019-07-23 Security configurations in page table entries for execution domains using a sandbox application operation
PCT/US2019/048023 WO2020046763A1 (en) 2018-08-30 2019-08-23 Security configurations in page table entries for execution domains

Publications (2)

Publication Number Publication Date
KR20210025683A KR20210025683A (ko) 2021-03-09
KR102570757B1 true KR102570757B1 (ko) 2023-08-28

Family

ID=69641042

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217005222A KR102570757B1 (ko) 2018-08-30 2019-08-23 실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성

Country Status (5)

Country Link
US (3) US10942863B2 (ko)
EP (1) EP3844650B1 (ko)
KR (1) KR102570757B1 (ko)
CN (1) CN112639733A (ko)
WO (1) WO2020046763A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884952B2 (en) * 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013174503A1 (en) * 2012-05-21 2013-11-28 Eth Zurich Secure loader

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4409655A (en) 1980-04-25 1983-10-11 Data General Corporation Hierarchial memory ring protection system using comparisons of requested and previously accessed addresses
US4386399A (en) 1980-04-25 1983-05-31 Data General Corporation Data processing system
US4525780A (en) 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US4821184A (en) 1981-05-22 1989-04-11 Data General Corporation Universal addressing system for a digital data processing system
US5280614A (en) 1990-08-21 1994-01-18 International Business Machines Corporation Apparatus and method for controlling access to data using domains
US6470436B1 (en) 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
US6393544B1 (en) 1999-10-31 2002-05-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for calculating a page table index from a virtual address
US6961761B2 (en) 2001-05-17 2005-11-01 Fujitsu Limited System and method for partitioning a computer system into domains
US7370193B2 (en) 2002-04-27 2008-05-06 Tong Shao Computing system being able to quickly switch between an internal and an external networks and a method thereof
US6970990B2 (en) 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus
KR100941104B1 (ko) 2002-11-18 2010-02-10 에이알엠 리미티드 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7409722B2 (en) 2003-05-01 2008-08-05 Sun Microsystems, Inc. Control status register access to enable domain reconfiguration
US8607299B2 (en) 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US8245270B2 (en) 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
US7581089B1 (en) * 2006-04-20 2009-08-25 The United States Of America As Represented By The Director Of The National Security Agency Method of protecting a computer stack
JP2008077144A (ja) 2006-09-19 2008-04-03 Ricoh Co Ltd 仮想化システム、メモリ管理方法及び制御プログラム
JP4756603B2 (ja) 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
US20080104586A1 (en) 2006-10-27 2008-05-01 Microsoft Corporation Allowing Virtual Machine to Discover Virtual Status Thereof
US8266238B2 (en) 2006-12-27 2012-09-11 Intel Corporation Memory mapped network access
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
GB2448149B (en) 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
US8051263B2 (en) 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
US20100228943A1 (en) 2009-03-04 2010-09-09 Freescale Semiconductor, Inc. Access management technique for storage-efficient mapping between identifier domains
US8375195B2 (en) 2009-03-05 2013-02-12 Oracle America, Inc. Accessing memory locations for paged memory objects in an object-addressed memory system
US8190839B2 (en) 2009-03-11 2012-05-29 Applied Micro Circuits Corporation Using domains for physical address management in a multiprocessor system
JP5491102B2 (ja) 2009-08-27 2014-05-14 ルネサスエレクトロニクス株式会社 データプロセッサ
US8954697B2 (en) 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
GB2482700A (en) 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9256552B2 (en) 2011-11-21 2016-02-09 Cisco Technology, Inc. Selective access to executable memory
WO2013082437A1 (en) * 2011-12-02 2013-06-06 Invincia, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
US8719560B2 (en) 2011-12-13 2014-05-06 International Business Machines Corporation Virtual machine monitor bridge to bare-metal booting
US9098427B2 (en) 2012-12-17 2015-08-04 Intel Corporation Controlling access to groups of memory pages in a virtualized environment
US20140331019A1 (en) 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
US9208347B2 (en) 2013-11-05 2015-12-08 Bank Of America Corporation Updating roles based access
US9210183B2 (en) 2013-12-19 2015-12-08 Microsoft Technology Licensing, Llc Detecting anomalous activity from accounts of an online service
KR102209840B1 (ko) 2014-04-22 2021-02-01 삼성전자주식회사 가상화 서비스 제공 장치 및 그 방법
US10489309B2 (en) 2014-10-21 2019-11-26 Intel Corporation Memory protection key architecture with independent user and supervisor domains
CN107533518B (zh) 2015-01-20 2020-09-18 乌尔特拉塔有限责任公司 用于容错对象存储器结构的分布式索引
US9405515B1 (en) 2015-02-04 2016-08-02 Rockwell Collins, Inc. Computing systems utilizing controlled dynamic libraries and isolated execution spaces
US9747218B2 (en) 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US9910611B2 (en) 2015-05-29 2018-03-06 Intel Corporation Access control for memory protection key architecture
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US20170060783A1 (en) 2015-09-01 2017-03-02 Mediatek Inc. Apparatus for performing secure memory allocation control in an electronic device, and associated method
US9852084B1 (en) 2016-02-05 2017-12-26 Apple Inc. Access permissions modification
KR102529714B1 (ko) 2016-06-15 2023-05-09 인터디지탈 패튼 홀딩스, 인크 네트워크 슬라이스 발견 및 선택
GB2552966B (en) 2016-08-15 2019-12-11 Arm Ip Ltd Methods and apparatus for protecting domains of a device from unauthorised accesses
US10255202B2 (en) 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
US10884952B2 (en) 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10346625B2 (en) 2016-10-31 2019-07-09 International Business Machines Corporation Automated mechanism to analyze elevated authority usage and capability
US11055401B2 (en) * 2017-09-29 2021-07-06 Intel Corporation Technologies for untrusted code execution with processor sandbox support
GB2574270B (en) 2018-06-01 2020-09-09 Advanced Risc Mach Ltd Speculation-restricted memory region type
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US20200073822A1 (en) 2018-08-30 2020-03-05 Micron Technology, Inc. Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013174503A1 (en) * 2012-05-21 2013-11-28 Eth Zurich Secure loader

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Lluis Vilanova et al., "CODOMs: Protecting Software with Code-centric Memory Domains", ACM SIGARCH Computer Architecture News, Volume 42, Issue 3, pp. 469-480(2014.06.)*

Also Published As

Publication number Publication date
KR20210025683A (ko) 2021-03-09
EP3844650B1 (en) 2023-11-22
WO2020046763A1 (en) 2020-03-05
CN112639733A (zh) 2021-04-09
US11561904B2 (en) 2023-01-24
US20200073821A1 (en) 2020-03-05
EP3844650A4 (en) 2022-05-11
US20230106598A1 (en) 2023-04-06
US20210157741A1 (en) 2021-05-27
EP3844650A1 (en) 2021-07-07
US10942863B2 (en) 2021-03-09

Similar Documents

Publication Publication Date Title
KR102570757B1 (ko) 실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성
US11620239B2 (en) Domain register for instructions being executed in computer processors
US11481241B2 (en) Virtual machine register in a computer processor
US11500665B2 (en) Dynamic configuration of a computer processor based on the presence of a hypervisor
US11436156B2 (en) Memory access control through permissions specified in page table entries for execution domains
US20200073822A1 (en) Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
KR20210038991A (ko) 컴퓨터 프로세서에서 명령 실행시 도메인 교차
US11914726B2 (en) Access control for processor registers based on execution domains

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant