KR20210075064A - 신뢰 중재자 영역 - Google Patents

신뢰 중재자 영역 Download PDF

Info

Publication number
KR20210075064A
KR20210075064A KR1020217004821A KR20217004821A KR20210075064A KR 20210075064 A KR20210075064 A KR 20210075064A KR 1020217004821 A KR1020217004821 A KR 1020217004821A KR 20217004821 A KR20217004821 A KR 20217004821A KR 20210075064 A KR20210075064 A KR 20210075064A
Authority
KR
South Korea
Prior art keywords
realm
region
given
memory
trust
Prior art date
Application number
KR1020217004821A
Other languages
English (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 에이알엠 리미티드
Publication of KR20210075064A publication Critical patent/KR20210075064A/ko

Links

Images

Classifications

    • 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
    • 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/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Saccharide Compounds (AREA)
  • Medicines Containing Plant Substances (AREA)
  • Debugging And Monitoring (AREA)

Abstract

메모리 액세스 회로(26)는, 주어진 메모리 영역(region)에 대해, 2개 이상의 영역(realm) 중에서 지정된 소유자 영역을 규정하는 소유권 정보에 근거하여 메모리에의 액세스를 제어하고, 각 영역은 처리 회로(8)상에서 작동하는 소프트웨어 프로세스의 적어도 일부에 대응한다. 소유자 영역은, 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한을 갖는다. 주어진 영역에 대한 보안 구성 파라미터들이 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련된다는 것을 지정할 때, 상기 신뢰 중재자 영역은, 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능, 예컨대 비밀 키들의 제공 및/또는 보안 구성 파라미터들의 보존/복원을 수행하도록 허용되어도 된다. 이것은, 공통 파라미터들을 갖는 동일한 영역의 다수의 인스턴스가 상이한 시간에 동일한 시스템상에서 또는 상이한 시스템상에서 확립될 필요가 있는 사용 케이스들을 사용 가능하게 할 수 있다.

Description

신뢰 중재자 영역
본 기술은 데이터 처리의 분야에 관한 것이다.
메모리 어드레스 공간에서 특정 메모리 영역에 대한 액세스 권한을 집행하기 위한 메모리 액세스 제어 기술을 제공하는 것이 알려져 있다. 일반적으로 이들은 특권 레벨을 기반으로 할 수도 있으므로, 높은 특권 레벨에서 실행되는 프로세스는 메모리 영역에 액세스하는 것에서 특권이 적은 프로세스를 제외할 수 있다.
적어도 몇몇 예는,
하나 이상의 소프트웨어 프로세스에 응답하여 데이터 처리를 수행하는 처리 회로; 및
주어진 메모리 영역에 대해, 복수의 영역 - 각 영역이 소프트웨어 프로세스들 중 적어도 하나의 적어도 일부에 대응함 - 중에서 지정된 소유자 영역-이 소유자 영역이 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한를 가짐 - 을 규정하는 소유권 정보에 근거하여 복수의 메모리 영역에의 액세스를 제어하는 메모리 액세스 회로를 구비하는, 장치를 제공하고;
상기 주어진 영역과 관련된 보안 구성 파라미터들에 근거하여 주어진 영역의 연산을 제어하는 영역 관리 유닛을 더 구비하고; 상기 주어진 영역에 대한 상기 보안 구성 파라미터들은 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련된다는 것을 지정할 때, 상기 영역 관리 유닛은, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능을 수행하게 허가하도록 구성된다.
적어도 몇몇 예는,
하나 이상의 소프트웨어 프로세스에 응답하여 데이터 처리를 수행하는 단계; 및
주어진 메모리 영역에 대해, 복수의 영역 - 각 영역이 소프트웨어 프로세스들 중 적어도 하나의 적어도 일부에 대응함 - 중에서 지정된 소유자 영역 - 이 소유자 영역이 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한를 가짐 - 을 규정하는 소유권 정보에 근거하여 복수의 메모리 영역에 대한 소유권 권한을 집행하는 단계를 포함하는, 데이터 처리 방법을 제공하고;
상기 주어진 영역과 관련된 보안 구성 파라미터들에 근거하여 주어진 영역의 연산을 제어하는 단계를 더 포함하고; 상기 주어진 영역에 대한 상기 보안 구성 파라미터들은 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련된다는 것을 지정할 때, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능을 수행하게 허가된다.
적어도 몇몇 예는, 명령 실행 환경을 제공하도록 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램을 제공하고;
주어진 메모리 영역에 대해, 복수의 영역 - 각 영역이 상기 명령 실행 환경에서 실행된 복수의 소프트웨어 프로세스들 중 적어도 하나의 적어도 일부에 대응함 - 중에서 지정된 소유자 영역 - 이 소유자 영역이 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한를 가짐 - 을 규정하는 소유권 정보에 근거하여 시뮬레이션된 메모리 어드레스 공간의 복수의 메모리 영역에의 액세스를 제어하는 메모리 액세스 프로그램 로직; 및
상기 주어진 영역과 관련된 보안 구성 파라미터들에 근거하여 주어진 영역의 연산을 제어하는 영역 관리 프로그램 로직을 포함하고; 상기 주어진 영역에 대한 상기 보안 구성 파라미터들은 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련된다는 것을 지정할 때, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능을 수행하게 허가하도록 구성된다.
저장 매체는, 상기 컴퓨터 프로그램을 저장할 수도 있다. 이 저장 매체는, 비일시적 저장 매체일 수도 있다.
본 기술의 다른 양태, 특징 및 이점은 아래의 첨부 도면을 참조하여 읽혀지는 다음의 예의 설명으로부터 명백해질 것이다:
도 1은 제1 메모리 및 제2 메모리 내에 저장된 메모리 영역을 이용하는 복수의 처리 요소를 포함하는 데이터 처리 시스템을 개략적으로 도시한다.
도 2는 실행된 복수의 프로세스, 이들 프로세스와 관련된 특권 레벨, 및 어떤 프로세스가 주어진 메모리 영역을 소유하고 그에 따라 그 주어진 메모리 영역에 대한 액세스를 제어할 독점권을 갖는지를 제어하는 이들 프로세스와 관련된 영역들(realms) 사이의 관계를 개략적으로 도시한다.
도 3은 영역 관리(realm management) 유닛 및 메모리 관리 유닛에 의해 관리되는 메모리 영역을 개략적으로 도시한다.
도 4는 메모리에 저장된 처리 요소 및 영역 관리 제어 데이터의 보다 상세한 예를 도시한다.
도 5는 부모 영역(parent realm)이 다양한 자식 영역(child realms)의 속성을 설명하는 영역 디스크립터(realm descriptors)를 정의할 수 있는 영역(realms)의 계층구조의 예를 도시한다.
도 6 및 도 7은 영역 계층(realm hierarchy)의 두 가지 상이한 예를 도시한다.
도 8은 자식 영역의 영역 디스크립터(realm descriptors)를 기록하기 위해 부모 영역에 의해 유지되는 영역 디스크립터 트리의 예를 도시한다.
도 9는 영역 디스크립터의 내용의 예를 도시한다.
도 10은 상이한 영역 라이프사이클(realm lifecycle) 상태를 나타내는 테이블이다.
도 11은 영역(realm)의 라이프사이클 상태의 변화를 나타내는 상태 머신 다이어그램이다.
도 12는 주어진 메모리 영역에 대한 소유권 테이블의 엔트리의 내용을 도시 한 테이블이다.
도 13은 소유자 이외의 영역(realms)이 그 영역(region))에 액세스할 수 있도록 제어하기 위해 주어진 메모리 영역에 대해 설정될 수 있는 가시성 속성을 나타내는 표이다.
도 14는 영역 관리 유닛에 의한 배타적 액세스를 위해 예약된 RMU-프라이빗 메모리 영역에 대응하는 상태를 포함하는, 메모리 영역에 대한 상이한 라이프사이클 상태의 예를 도시한다.
도 15는 주어진 메모리 영역에 대한 라이프사이클 상태의 천이를 나타내는 상태 머신이다.
도 16은 주어진 메모리 영역의 소유권이 어떻게 부모 영역과 그 자식 영역 사이를 통과할 수 있는지를 나타낸다.
도 17a는 소유자 영역(owner realm)에 의해 설정된 권한에 근거하여 메모리 액세스에 대한 직교 레벨의 제어를 제공하는 영역 관리 유닛 레벨 및 특권 레벨에 의존하는 메모리 제어 속성을 정의하는 페이지 테이블에 근거하여 제공된 메모리 액세스 제어를 개략적으로 도시한다.
도 17b는 변환 색인 버퍼(translation lookaside buffer)의 예를 도시한다.
도 18은 페이지 테이블 및 RMU 테이블에 의거하여 메모리에 대한 액세스를 제어하는 방법을 나타내는 흐름도이다.
도 19는 서브-영역(sub-realms)의 부모 영역과 연관된 프로세스 내의 특정 어드레스 범위에 대응하는 서브-영역의 사용을 도시한다.
도 20은 파라미터 사이닝(signing)의 예를 도시한다.
도 21은 그 파라미터 시그니처가 예상 시그니처와 일치하지 않을 때 영역의 활성화를 제한하는 방법을 도시한다.
도 22 및 도 23은 또 하나의 영역에서 사용한 것처럼 동일한 키들이나 보안 구성으로 영역을 시작하는 데 유용할 수 있는 사용 케이스들의 2개의 예를 도시한다.
도 24는 영역이 신뢰 중재자 영역과 관련되어도 되는 일례를 도시한다.
도 25는 그 중재자 영역을 사용하여 타겟 영역에 대한 영역 관리 기능들을 제어하는 방법의 일례를 도시한다.
도 26은 타겟 영역에 대한 증명서(attestation)를 생성하는 방법을 도시한다.
도 27은 사용될 수도 있는 시뮬레이터 예를 도시한다.
특권 기반 메모리 액세스 제어 기법에서, 특권이 더 많은 프로세스는, 어느 메모리 구역들에 특권이 더 적은 프로세스가 액세스할 수 있는지를 규정하는 액세스 권한을 설정할 수 있다. 그렇지만, 이것은, 일반적으로, 특권이 더 적은 프로세스에 액세스 가능한 임의의 영역이 특권이 더 많은 프로세스에도 액세스 가능하다는 것을 암시할 수도 있다. 따라서, 주어진 운영 체제나 가상 머신하에서 실행하는 애플리케이션 전부는 그 운영 체제나 가상 머신과 관련된 상기 소프트웨어를 신뢰해야 할 수도 있고, 주어진 하이퍼바이저하에서 실행하는 모든 운영 체제들이나 가상 머신들은 그 하이퍼바이저를 신뢰해야 할 수도 있다.
일부의 사용 케이스들에 있어서, 특권이 더 많은 프로세스들에 대한 이러한 신뢰는 바람직하지 않을 수도 있다. 예컨대, 데이터 중심에 있어서, 다수의 가상 머신은, 다수의 상이한 파티들에 의해 제공되어도 되고, 각 파티는 그 데이터 중심을 관리하는 클라우드 플랫폼 제공자에 의해 제공된 하이퍼바이저의 제어하에 실행한다. 주어진 가상 머신의 제공자(또는 주어진 가상 머신하에 실행하는 애플리케이션)는, 예를 들면, 그것의 데이터를 상기 하이버바이저나 그 밖의 가상 머신들에 노출시키기를 원하지 않을 수도 있다. 예컨대, 뱅킹(banking) 제공자는 뱅킹 애플리케이션들을 실행하기 위한 가상 머신을 제공할 수 있고, 민감한 경제 정보가 동일한 물리 플랫폼을 공유하는 상기 하이퍼바이저나 그 밖의 가상 머신들에 민감한 경제 정보가 액세스 가능하기를 원하지 않을 수도 있다.
장치는, 하나 이상의 소프트웨어 프로세스들(이를테면, 애플리케이션들, 운영 체제들/가상 머신들, 하이퍼바이저 등)의 처리를 지원하는 처리 회로를 가질 수도 있다. 메모리 액세스 회로는, 주어진 메모리 영역에 대해, 복수의 영역 중에서 지정된 소유자 영역을 규정하는 소유권 정보에 근거하여 메모리 어드레스 공간의 다수의 메모리 영역에의 액세스를 제어하도록 제공되어도 된다. 각 영역은, 상기 소프트웨어 프로세스들 중 적어도 하나의 적어도 일부에 대응한다. 주어진 메모리 영역에 대한 소유자 영역은, 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한를 갖는다. 따라서, 주어진 메모리 영역에 액세스(판독 또는 기록)하도록 어느 프로세스들이 허용되는지를 상기 액세스 권한들이 규정만 하는 특권 기반 모델과 대조하여, 상기 영역 기반 해결방법으로, 상기 소유자 영역은, 다른 영역들이 자신의 소유된 메모리 영역들에 액세스하도록 제어할 수 있다. 따라서, 단일의 프로세스가 특권이 더 적은 프로세스들에 의해 상기 어드레스 공간에 액세스하기 위한 탑다운 규칙들을 규정하는 전형적인 특권 기반 모델 대신에, 상기 어드레스 공간의 상이한 부분들이 상기 어드레스공간의 해당 부분에의 액세스에 대해서 제어하는 상이한 영역 소유자들에 할당될 수 있는 경우, 메모리 액세스의 분배된 제어가 존재한다. 이 해결방법은, 주어진 영역이, 동일한 특권 레벨이나 상위 특권 레벨들에서 동작하는 프로세스들을 포함하는 그 밖의 프로세스들에 의해 액세스들로부터 그 데이터를 보호하는 것을 가능하게 한다.
일부의 예들에서, 본 영역 기반 해결방법은, 특권 기반 메모리 보호 모델과 병렬로 적용되어도 되어, 주어진 메모리 영역에 대한 액세스 권한의 다수의 오버래핑 세트들: 상위 특권 프로세스에 의한 특권 기반 권한 세트와, 대응한 메모리 영역의 소유자 영역에 의한 액세스 권한 세트가, 존재한다. 메모리 액세스는, 양쪽의 권한의 양쪽의 세트들을 충족시키는 경우 허용되어도 된다.
영역 관리 유닛은, 주어진 영역과 관련된 보안 구성 파라미터들에 근거하여 상기 주어진 영역의 동작을 제어하도록 제공되어도 된다. 예컨대, 상기 보안 구성 파라미터들은, (상기 영역이 무슨 특성을 갖는지, 또는 상기 영역이 무슨 동작을 실시 가능한지를 통제할 수도 있는) 영역 유형(realm type) 등의 정보와, (주어진 영역에 의해 안전하게 액세스될 수 있는 상기 메모리 영역들의 한계를 마킹할 수도 있는) 상기 주어진 영역과 관련된 보호 어드레스 범위와, 상기 메모리 액세스 회로를 사용한 메모리 프로텍터로부터 상기 메모리 액세스 회로에 의해 보호의 한계 밖의 외부 메모리에 데이터의 이출이나 디버깅 등의 동작이 허가될지의 여부에 대한 그 밖의 정보를 규정할 수 있다. 또한, 상기 보안 구성 파라미터들은, 예컨대, 주어진 영역과 관련된 데이터를 보호하기 위한 적어도 하나의 비밀 키를 얻기 위한 키 자료를 포함할 수 있다. 다양한 상이한 보안 구성 파라미터들은 영역에 대해 규정될 수 있다는 것을 알 것이다.
아래에 설명된 기술들에 있어서, 주어진 영역에 대한 상기 보안 구성 파라미터들은, 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련되어 있는 것을 지정할 수도 있다. 상기 영역 관리 유닛은, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능을 수행하게 허가할 수도 있다. 이러한 신뢰 중재자 영역의 제공은, 동일한 영역의 별도의 인스턴스들이 예를 들면 상이한 시점 및/또는 상이한 물리적 플랫폼에서 셋업될 필요가 있는 다수의 사용 케이스들을 가능하게 하는 데 유용할 수 있고, 이때 동일한 영역의 각 인스턴스는 확립되는 상기 영역의 특별한 인스턴스에 상관없이 상기 영역이 예측 가능하게 행동하는 것을 가능하게 하는 일부의 공통 구성 파라미터들에 액세스를 필요로 한다. 보안과 신뢰를 계속 유지관리하면서, 이러한 공유된 구성 파라미터들이 상기 주어진 영역 자체에 의해, 또는 상기 하드웨어 플랫폼에 의해, 반복 가능한 방식으로 확립되는 것이 어려울 수 있다. 주어진 영역에 대한 특정한 영역 관리 기능들을 수행하게 허용되는 신뢰 중재자 영역을 규정함으로써, 이것은, 하나의 플랫폼으로부터 또 하나의 플랫폼으로 영역의 안전한 이행 등의 사용 케이스들, 또는 공통 비밀 키들을 로드(load) 밸런싱이나 리던던시 목적을 위한 상이한 물리적 시스템상에서 동일한 시스템상에서 실행하는 동일한 영역의 다수의 인스턴스들에 제공하는 것을 가능하게 할 수 있다. 상기 신뢰 중재자 영역 자체가 상기 메모리 액세스 회로에서 제공한 그 자신의 소유권 보호를 갖는 영역이므로, 이것은, 상기 신뢰 중재자 영역 자체의 보안성이 검증 및 증명되어, 상기 신뢰 중재자 영역에서 관리한 영역이 안전하다는 신뢰를 제공할 수 있다.
상기 영역 관리 기능은, 상기 주어진 영역에 대한 상기 보안 구성 파라미터들의 적어도 일부를 갱신하는 것을 포함하여도 된다. 일부의 경우에, 이러한 상기 보안 구성 파라미터들을 갱신하는 능력은, 예를 들면 상기 주어진 영역의 활성화 전에, 상기 영역 생명 주기에서 특정한 스테이지들에 제한되어도 된다. 영역(realm)은, 활성화되어 있을 때까지 상기 처리 회로에 의해 처리되면 안 된다. 특정한 보안 구성 파라미터들의 갱신을 관리할 수 있는 신뢰 중재자 영역을 제공함으로써, 이것은, 플랫폼 사이의 영역들을 이행하거나 이전의 버전들의 영역들을 보존 또는 복원하거나, 공통 보안 구성을 갖는 동일한 영역의 다수의 인스턴스들을 시작하는 것을 보다 단순하게 한다.
일례에서, 루트 영역 이외의 각 영역은, 그 영역을 작성한 대응한 부모 영역과 관련되어도 된다. 상기 영역 관리 유닛은, 상기 신뢰 중재자 영역을 상기 주어진 영역의 부모 영역 이외의 영역으로서 규정하는 상기 보안 구성 파라미터들을 지원할 수도 있다. 즉, 비록 그 신뢰 중재자 영역이 원하는 상기 부모 영역으로서 규정될 수 있지만, 상기 아키텍처는 또한, 상기 신뢰 중재자 영역이 상기 부모 영역 이외의 영역으로서 규정되게 허가한다.
따라서, 상기 부모 영역이 상기 영역을 초기에 작성할 수도 있지만, 종종 상기 부모 영역 자체는, 상기 주어진 영역에 대한 특정한 보안 구성 파라미터들, 이를테면 상기 영역에서 사용하는 데이터를 보호하기 위한 비밀 키들을 얻기 위한 키 자료를 알고 있다고 신뢰되지 않을 수도 있다. 상기 부모 영역 이외의 영역이 상기 중재자 영역에서 관리한 타겟 영역에 대한 특정한 보안 구성 파라미터들을 확립하는 것을 가능하게 함으로써, 이것은, 다수의 영역들이 동일한 보안 구성을 가질 필요가 있는 경우들에 있어서 보다 큰 보안을 가능하게 할 수 있다. 예컨대, 상기 신뢰 중재자 영역은, 뱅킹 제공자, 헬스케어 제공자 또는, 상기 관리된 영역이 특정한 민감한 정보에 액세스할 작정인 파티에서 제공한 소프트웨어에 근거하여 작동된 영역일 수 있고, 상기 부모 영역은 상기 뱅킹/헬스케어 제공자 등에 의해 신뢰되지 않을 수도 있는 클라우드 플랫폼상에서 실행하는 하이퍼바이저일 수 있다.
상기 영역 관리 유닛은, 상기 주어진 영역의 작성시에 상기 부모 영역에서 발행한 적어도 하나의 커맨드에 근거하여, 상기 주어진 영역이 상기 신뢰 중재자 영역과 관련되어 있는지를 설정할 수도 있다. 따라서, 상기 부모 영역과 상기 신뢰 중간 중역 양쪽은, 주어진 영역의 생명주기의 특정한 스테이지들에 있어서, 특정한 보안 구성 파라미터들을 설정할 능력을 가질 수도 있다. 후술한 것처럼, 파라미터 사이닝 기법은, 활성화되기 전에 상기 보안 구성 파라미터들이 주어진 영역에 대해 정확히 설정되어 있는지에 대해 증명하는 데 사용되어도 된다. 이것은, 상기 신뢰 중재자 영역에서 규정한 것처럼 상기 영역이 특정한 보안 구성 설정값들을 갖도록 보장할 필요가 있는 상기 파티은 상기 정확한 신뢰 중재자 영역이 포함된 지를 체크할 수 있도록, 상기 영역의 작성시에 상기 부모 영역이 상기 신뢰 중재자 영역을 정확히 구성하였는지를 체크하는 데 사용될 수 있다. 이것은, 주어진 영역에 대한 상기 신뢰 중재자 영역의 식별부호를 부정확하게 설정하는 악의적 부모 영역에 대해 보호할 수 있다.
상기 영역 관리 유닛은, 타겟 영역을 식별하는 증명서(attestation) 커맨드에 응답하여, 상기 영역 관리 유닛이 타겟 영역의 특성들에 대해 증명하는 증명서를 제공하여도 되는 증명 기능을 지원하여도 된다. 예컨대, 상기 증명서는 상기 타겟 영역의 상기 구성 파라미터들 및/또는 상기 타겟 영역에서 소유한 상기 메모리 영역들의 내용으로부터 얻어진 정보를 포함하여도 된다. 이 증명서는, 확실성에 대해 특정한 키를 증명하면서 서명될 수 있다.
상기 보안 구성 파라미터들은 상기 타겟 영역이 상기 신뢰 중재자 영역과 관련된 것을 지정하는 영역들에 대해서, 상기 증명서는, 상기 타겟 영역이 상기 신뢰 중재자 영역과 관련된다는 사실을 가리키는 정보를 포함할 수도 있다. 또한, 상기 증명서는 중재자 영역 증명서 정보를 포함하여도 되는 것으로, 이 증명서 정보는, 신뢰 중재자 영역의 특성들에 대해 직접 증명하는 정보나, 상기 증명서의 수신자가, 상기 타겟 영역과 관련되었던 신뢰 중재자 영역의 추가의 증명서를 요구하는 것을 가능하게 하는 정보다. 예컨대, 상기 중재자 영역 증명서 정보는 단순히 신뢰 중재자 영역의 식별자일 수 있고, 그 후, 추가의 증명서를 해당 신뢰 중재자 영역을 위해 생성하도록 상기 신뢰 중재자 영역을 타겟 영역으로서 식별하는 이후의 증명서 커맨드가 발행될 수 있다. 따라서, 일반적으로, 주어진 영역을 증명할 때 상기 영역 관리 유닛은, 유효화 엔티티가 상기 관련된 신뢰 중재자 영역에 대해 증명하는 것을 가능하게 하는 정보도 제공할 수 있어, 그들은, 상기 영역이 신뢰 중재자 영역에 의해 정확히 구성되었다는 사실에 있어서의 신뢰를 확립할 수 있다.
상기 영역 관리 유닛은, 주어진 영역이 활성화되어 있을 때까지 그 주어진 영역이 상기 처리 회로에 의해 처리되는 것을 방지할 수도 있다. 주어진 영역과 관련된 상기 신뢰 중재자 영역은, 상기 주어진 영역이 활성화되어 있기 전에 상기 주어진 영역에 대한 증명서의 생성을 기동하게 허가되어도 된다. 이는, 상기 신뢰 중재자 영역이, 상기 주어진 영역에 대한 보안 구성 파라미터들이 비밀 키나 그 밖의 구성 정보를 상기 영역에 제공하기 전에 정확히 구성되어 있다는 것을 검증하는 데, 유용할 수 있다. 이에 반해서, 상기 타겟 영역과 관련된 신뢰 중재자 영역 이외의 영역에서 상기 증명서 커맨드를 발행하면, 상기 증명서 커맨드는, 상기 타겟 영역이 활성 상태에 있지 않은 경우 거부될 수 있다.
일례에서, 상기 신뢰 중재자 영역에서 제공한 상기 영역 관리 기능은, 주어진 영역에 대한 적어도 하나의 프로비저닝된(provisioned) 비밀의 제공이어도 된다. 상기 프로비저닝된 비밀은, 주어진 영역(realm)과 관련된 (데이터 값들 및/또는 프로그램 코드를 갖는) 데이터를 보호하기 위한 적어도 하나의 비밀 키; 및/또는 이러한 비밀 키를 얻기 위한 키 자료를, 포함하여도 된다. 따라서, 또 하나의 영역의 소유 메모리 영역들의 내용을 보호하는 데 사용될 수 있는 프로비저닝된 비밀들을 제공하는 데 신뢰될 수 있는 신뢰 중재자 영역을 규정함으로써, 이는, 그 동일 영역의 다수의 인스턴스들이 동일 또는 상이한 물리 플랫폼들 또는 시간상 상이한 인스턴스들에 관해 안전하게 셋업되는 것을 가능하게 한다. 상기 영역 관리 유닛은, 그 신뢰 중재자 영역 이외의 임의의 영역이 상기 주어진 영역에 대한 상기와 같은 프로비저닝된 비밀들을 제공하는 것을 금지시킬 수도 있다.
상기 주어진 영역에 대한 상기 적어도 하나의 프로비저닝된 비밀의 제공은, 그 주어진 영역이 활성화되어 있기 전으로 제한되어도 된다. 상기 신뢰 중재자 영역은, 주어진 영역이 활성화되어 있은 후에 상기 주어진 영역에 대한 그 프로비저닝된 비밀들을 제공하는 것으로부터 금지되어도 된다. 이것은 주어진 영역의 활성화에 관해 특정한 체크들을 수행하여도 되기 때문에 보안성을 향상시키는 데 유용할 수 있고, 이것은, 상기 영역이 처리되게 되는 것을 가능하게 하도록 활성화되기 전에 그 프로비저닝된 비밀이 검증될 수 있도록 보장한다. 상기 적어도 하나의 제공 비밀의 제공의 관리는, 상기 신뢰 중재자 영역에서 제공할 수도 있는 키 관리 정책 정보에 기초할 수도 있다. 예컨대, 상기 키 관리 정책은, 얼마나 그 밖의 영역들에, 상기 신뢰 중재자 영역에 의한 주어진 비밀과, 주어진 버전의 상기 비밀이 상기 신뢰 중재자 영역에 의해 관리된 영역들에 제공될 수 있는 기간과, 또는 상기 비밀이 상기 관리된 영역에 제공될 수 있기 전에 관리된 영역에 대해 만족되는 것으로서 상기 신뢰 중재자 영역에 의해 검증되게 되는 그 밖의 조건들 등이 제공되는지를 지정할 수 있다. 이 정책 자체는, 상술한 증명서 메커니즘을 사용하여 상기 신뢰 중재자 영역의 특성들을 증명함으로써 증명될 수 있다.
상기 적어도 하나의 프로비저닝된 비밀은, 상기 주어진 영역에서 사용한 유일한 유형의 비밀 키가 아닐 수도 있다. 그 밖의 유형의 비밀들, 이를테면, 하드웨어의 특별한 물리적 인스턴스의 특성들로부터 얻어지는 "인스턴스 유일(instance unique)" 비밀들도 존재할 수 있다. 이러한 비밀들은, 주어진 영역이 특별한 플랫폼상에서 실행되고 나서 나중에 동일한 플랫폼상에서 재시작되면 동일한 채로 있을 수도 있지만, 어떤 영역이 상이한 플랫폼상에서 재시작되면 상이할 수도 있다. 인스턴스 유일 비밀들은, 상기 신뢰 중재자 영역의 동작 없이 안전하게 얻어질 수 있고, 예컨대 주어진 영역 내부에서 동작하는 동안에 상기 물리 플랫폼의 하드웨어 디바이스들을 사용하여 얻어져도 된다. 또 하나의 유형의 비밀은, 예를 들면 주어진 영역 자체의 소프트웨어에서 액세스한 의사난수 생성기를 사용하여 생성되어도 되고 동일한 시스템에서 재시작된 경우에도 일 영역이 재시작될 때마다 상이하여도 되는, "영역 유일(realm unique)" 루트 비밀들일 수 있다.
그렇지만, 이러한 인스턴스 유일 또는 영역 유일 루트 비밀들은, 일 영역이 상이한 물리 플랫폼으로 이행될 필요가 있는 경우들에서, 또는 동일한 영역의 다수의 인스턴스들이 작성될 필요가 있으면, 적절하지 않을 수도 있고, 이때 동일한 영역의 상이한 인스턴스들은, 동일한 데이터에 전부 안전하게 액세스할 수도 있도록 공통 비밀들에 액세스할 필요가 있다. 상술한 것처럼 적어도 하나의 제공 비밀의 제공을 관리하기 위해 상기 신뢰 중재자 영역의 제공은, 이 문제를 해결하는 데 도움이 된다.
또 하나의 예에서, 상기 영역 관리 유닛은, 상기 주어진 영역과 관련된 적어도 상기 보안 구성 파라미터들의 서브세트를 나타내는 보안 구성 레코드를, 상기 신뢰 중재자 영역이 기록하게 허가하여도 된다. 통상, 그 주어진 영역 자체 이외의 영역들은, 주어진 영역의 보안 구성 파라미터들에 액세스하도록 허용되지 않아도 된다. 일부의 구현에 있어서, 단지 상기 영역 관리 유닛만이, 주어진 영역의 상기 보안 구성 파라미터들을 판독하도록 허용되어도 된다(심지어 상기 주어진 영역 자체는 그 파라미터들을 판독하도록 허용되지 않아도 된다). 그렇지만, 상기 주어진 영역의 보안 구성 파라미터들에서 특정한 신뢰 중재자 영역을 규정하고, 그 신뢰 중재자 영역이 어떤 보안 구성 파라미터들의 표시를 기록하게 허가함으로써, 이는, 이행 및 영역들의 보존/복원을 가능하게 할 수 있다.
예컨대, 상기 영역 관리 유닛은, 상기 신뢰 중재자 영역에서 이전에 기록한 보안 구성 레코드에 근거하여 상기 주어진 영역과 관련된 적어도 상기 보안 구성 파라미터들의 서브세트를 상기 신뢰 중재자 영역이 갱신하게 허가하여도 된다. 따라서, 일 영역이 하나의 물리 플랫폼으로부터 또 하나의 물리 플랫폼으로 이행될 필요가 있으면, 상기 신뢰 중재자 영역은 소스 플랫폼과 목적지 플랫폼의 양쪽의 플랫폼 상에서 동작하도록 셋업되어도 되고, 그 후, 상기 신뢰 중재자 영역은 소스 플랫폼상의 주어진 영역과 관련된 상기 보안 구성 레코드를 기록하고, 그 보안 구성 레코드를 그 자신의 비밀 키들을 사용하여 암호화하고, 암호화된 데이터를 상기 목적지 플랫폼상의 신뢰 중재자 영역의 대응한 인스턴스에 송신하고, 그 후 그 보안 구성 파라미터들을 암호해독하고 상기 보안 구성 레코드로부터 복원하여도 된다. 이것은, 주어진 영역과 관련된 비밀들이나 구성 정보가, 보안을 유지관리하면서 이행 전체에 걸쳐서 생존하는 것을 가능하게 한다. 또 하나의 사용 예는, 처리 자원이 타 목적들을 위해 이용 가능해질 필요가 있으면 일 영역이 종료되게 되는 예일 수도 있고, 그 후, 동일한 영역이 공통 비밀들에 계속 액세스하게 하면서 나중에 재작성되게 되는 예일 수도 있다. 또한, 유사한 방법도, 관련된 사용 케이스들 이를테면 백업하고 나서 완전한 영역을 복원하는 것 또는, 나중에 이전의 공지된 상태로 역으로 롤백되게 하는 영역의 스냅 사진들이나 체크포인트들을 촬영하는 것을, 지원할 수 있다. 따라서, 상기 신뢰 중재자 영역을 사용하면, 그렇지 않은 경우 안전하게 가능하지 않을 수도 있는 다수의 동작들을 가능하게 한다.
상기 보안 구성 레코더의 기록과, 및/또는, 상기 보안 구성 레코드로부터의 상기 보안 구성 파라미터들의 복원과의 관리는, 상기 신뢰 중재자 영역에서 제공한 정책 정보에 기초하여도 된다. 또, 이 정책 자체는, 상기 신뢰 중재자 영역을 증명함으로써 증명될 수 있다.
상기 주어진 영역에 대한 보안 구성 파라미터들은, 영역 유형; 상기 주어진 영역과 관련된 보호된 어드레스 범위; 상기 주어진 영역내에 디버깅이 가능하게 되는지 여부의 표시; 상기 메모리 액세스 회로에 의한 액세스 제어가 실시되는 제1 메모리로부터 제2 메모리에의 데이터의 이출(export)의 허가 여부의 표시; 및 상기 주어진 영역과 관련된 데이터를 보호하기 위한 적어도 하나의 비밀 키를 얻기 위한 키 자료 중, 적어도 하나를 포함하여도 된다. 추가로, 상기 보안 구성 파라미터들은, 상술한 것처럼 상기 신뢰 중재자 영역의 식별부호도 포함하여도 된다.
상기 영역 관리 유닛은, 상이한 방식으로 구현되어도 된다. 일례에서, 상기 영역 관리 유닛은, 상기 영역 기법에 의해 제공된 보안 보호를 집행하는 전용 하드웨어 유닛이어도 된다. 그 밖의 예들에서, 상기 영역 관리 유닛은, 상기 처리 회로상에서 실행하는 소프트웨어를 포함하여도 되고, 이 소프트웨어는 각 영역과 관련된 소프트웨어와는 다르다.
상기 예에서는 상술한 메모리 액세스 회로와 영역 관리 유닛을 갖는 장치에 대해서 설명하였다. 하지만, 또 하나의 예에서, 대응한 컴퓨터 프로그램은, 호스트 데이터 처리장치가 명령들의 실행을 위한 명령 실행 환경을 제공하게 제어하도록 제공되어도 된다. 이 컴퓨터 프로그램은, 상술한 메모리 액세스 회로와 영역 관리 유닛에 대해 기능상 대응한 메모리 액세스 프로그램 로직과 영역 관리 프로그램 로직을 포함하여도 된다. 예를 들면, 상기 컴퓨터 프로그램은, 비록 시뮬레이터 컴퓨터 프로그램을 실행중인 호스트 컴퓨터내의 상기 소프트웨어에 의해 예상된 아키텍처 특징들을 제공하는 임의의 실제의 하드웨어가 존재하지 않을지라도, 실제의 하드웨 장치에서 제공할 것과 유사한 실행 환경을, 상기 시뮬레이터상에서 실행하는 소프트웨어에 제시하여도 되는 시뮬레이터 프로그램이어도 된다. 대신에, 소유권 권한의 집행과 상기 영역의 신뢰 중재자 영역에서 발행한 커맨드들에 근거한 일 영역의 관리를 포함하는, 상기 예상된 하드웨어 아키텍처의 기능성은, 프로그램 로직, 이를테면 명령들의 세트들이나 데이터 구조들을 제공함으로써 에뮬레이트 되어도 되어, 실제로 상술한 메모리 액세스 회로와 영역 관리 유닛을 갖는 장치상에서 이루어질 결과와 호환 가능한 방식으로, 일반적 호스트 컴퓨터가, 상술한 영역 보호로 장치상에서 실행하도록 구성된 코드를 실행하는 것을 가능하게 한다. 상기 호스트 데이터 처리장치를 제어하기 위한 상기 시뮬레이터 컴퓨터 프로그램은, 저장 매체에 저장되어도 되고, 이 저장매체는 비일시적 저장 매체이어도 된다.
도 1은 대용량 기억장치로서 기능하는 오프 칩 플래시 메모리와 같은, 별도의 비휘발성 메모리(6)에 연결된 시스템 온 칩 집적회로(4)를 포함하는 데이터 처리 시스템(2)을 개략적으로 도시한다. 시스템 온 칩 집적회로(4)는 (이 예시적인 실시 예에서) 2개의 범용 프로세서(CPU) 8, 10 및 그래픽 처리 유닛(GPU)(12)의 형태의 복수의 처리 요소를 구비한다. 실제로, 추가 범용 프로세서, 그래픽 처리 유닛, DMA(direct memory access) 유닛, 코프로세서 및 메모리 어드레스 공간 내의 메모리 영역(memory region)에 액세스하는 역할을 하고 이들 메모리 영역 내에 저장된 데이터에 대해 데이터 처리 연산을 수행하는 다른 처리 요소와 같은 많은 상이한 형태의 처리 요소가 제공될 수 있다.
범용 프로세서 8, 10 및 그래픽 처리 유닛(12)은 온 칩 메모리(16) 및 외부 메모리(6)(외부 메모리 인터페이스(18)를 통해)와 메모리 트랜잭션을 수행하는 상호접속 회로(14)에 연결된다. 메모리(16)가 도 1에서 온 칩이지만, 다른 실시 예들에서 메모리(16)는 대신 오프 칩 메모리로서 구현될 수 있다. 온 칩 메모리(16)는 전체 메모리 어드레스 공간 내의 복수의 메모리 영역에 대응하는 데이터를 저장한다. 이들 메모리 영역은 메모리 페이지에 대응하고, 주어진 시간에 온 칩 메모리(16) 내에 어떤 메모리 영역(페이지)이 존재하는지를 제어하는 관리 연산에 종속되며, 이 프로세스는 이들 메모리 영역 내에 저장된 데이터 및 이들 메모리 영역과 연관된 다른 파라미터에 액세스할 수 있다. 보다 구체적으로, 이 예시적인 실시 예에서, 각각의 처리 요소 8, 10, 12는 영역 관리 유닛 20, 22, 24 및 범용 메모리 관리 유닛 26, 28, 30을 구비한다. 범용 메모리 관리 유닛 26, 28, 30은 어드레스 매핑(예를 들면, 가상 어드레스와 중간 물리 어드레스, 또는 물리 어드레스 사이의 매핑), 주어진 메모리 영역에 액세스할 수 있는 프로세스에 대한 특권 레벨 제한(privilege level constraints), 주어진 메모리 영역(예를 들면, 캐시가능성, 디바이스 메모리 상태 등) 내의 데이터의 저장 특성 및 메모리의 영역의 다른 특성과 같은 메모리 영역의 동작의 측면을 제어하는 역할을 한다.
영역 관리 유닛 20, 22, 24는 복수의 메모리 영역의 소유권을 집행하는 역할을 하는 데이터를 관리함으로써, 주어진 메모리 영역은 복수의 프로세스 중에서 지정된 주어진 소유 프로세스(또는 소유자 "영역")를 갖는다(프로세스 또는 영역은, 예를 들어, 모니터 프로그램, 하이퍼바이저 프로그램, 게스트 운영 체제 프로그램, 애플리케이션 프로그램 등, 또는 이러한 프로그램의 특정 서브-부분 중 하나임). 주어진 메모리 영역에 대한 주어진 소유 프로세스(소유자 영역(owner realm))는 주어진 메모리 영역 내에 저장된 주어진 자신의 데이터에 대한 액세스를 제어하는 독점권을 갖는다. 특히, 소유자 프로세스는 소유자 프로세스보다 더 큰 특권 레벨에서 실행되는 프로세스에 의해 자신의 메모리 영역에 액세스하지 못하게 할 권한가 있다.
따라서, 복수의 메모리 영역은 복수의 소유자 영역으로 분할된다. 각각의 영역(realm)은 적어도 하나의 소프트웨어 프로세스의 적어도 일부에 대응하고, 다수의 메모리 영역의 소유권이 할당된다. 소유 프로세스/영역은, 상기 영역의 소유 영역들에 액세스하는 것으로부터 특권이 더 많은 프로세스들을 제외하는 권한를 포함하는, 해당 영역의 메모리 영역에 저장된 데이터에 대한 액세스를 제어하는 권한를 갖는다. 어느 메모리 영역이 각 영역에 매핑된 메모리인지의 관리 및 제어는 소유자 영역 자체 이외의 프로세스에 의해 수행된다. 이 배열을 사용하면 하이퍼바이저와 같은 프로세스가 해당 하이퍼바이저가 관리하는 각 게스트 가상 머신(게스트 운영 체제)이 소유한 영역 내에 어느 메모리 영역(메모리 페이지)이 포함되는지를 제어할 수 있지만 하이퍼바이저 자체는 주어진 영역에 할당된 메모리 영역 내에 저장된 데이터에 실제로 액세스할 권한이 없다. 따라서, 예를 들어, 게스트 운영 체제는 그 게스트 운영 체제의 영역 내에, 즉 그 게스트 운영 체제가 소유한 메모리 영역 내에 저장된 데이터를 그것의 관리 하이퍼바이저로부터 비공개로 유지할 수 있다.
메모리 어드레스 공간을 영역으로 분할하고, 그 영역의 소유권을 제어하는 것은 각각의 처리 요소 8, 10, 12와 연관된 영역 관리 유닛 20, 22, 24을 통해 관리되며, 범용 메모리 관리 유닛 26, 28, 30에 의해 제공되는 보다 통상적인 형태의 제어와 직교하는 제어 프로세스이다. 따라서 영역 관리 유닛 20, 22, 24은 메모리 어드레스 공간의 메모리 영역의 소유권을 집행하는 메모리 액세스 회로를 제공한다. 일부 경우에, 영역 소유권을 집행하는 메모리 액세스 회로는 또한 MMU 26, 28, 30의 일부를 포함할 수 있다(예를 들어, MMU 26, 28, 30의 TLB는 RMU 20, 22, 24에 의해 제공된 영역 제어에 근거하여 액세스를 제어하기 위한 일부 제어 데이터를 포함할 수 있어, 두 개의 별도 구조에 액세스할 필요가 없다). 이 예시적인 실시 예에서, 처리 요소 8, 10, 12의 각각은 그 자신의 영역 관리 유닛 20, 22, 24을 포함하고; 이것은 성능 목적에 유리하다. 그러나, 보다 일반적으로 소유권을 집행하는 메모리 액세스 회로는 영역 관리 유닛의 단일 인스턴스(instance), 존재하는 모든 영역 관리 유닛 20, 22, 24의 조합, 또는 존재하는 이들 영역 관리 유닛 20, 22, 24의 서브세트를 포함할 수 있다. 따라서, 소유권을 집행하는 메모리 액세스 회로는 상이한 처리 요소 8, 10, 12와 관련하여 시스템 온 칩 집적 회로(4) 전체에 걸쳐 분포되거나, 한 위치에서 또는 일부 다른 구성에서 함께 수집될 수 있다.
범용 프로세서 8, 10를 포함하는 처리 요소는 프로그램 명령을 디코딩 및 실행하는 각각의 디코딩 및 실행 회로 32, 34를 포함하는 것으로 도시되어 있다. 이 프로그램 명령에는 메모리 어드레스 공간의 서로 다른 소유권 영역 내에서 메모리 영역의 관리를 제어하는 기능을 하는 커맨드(영역 관리 커맨드 또는 RMU 커맨드)가 포함된다. 예로서, 실행된 프로그램 명령들은 영역 관리 유닛 커맨드로서 지정된 프로그램 명령들을 포함할 수 있고, 이들 프로그램 명령은 그들이 관련 영역 관리 유닛 20, 22, 24에 의해 실행(작동)될 수 있도록 프로그램 명령 스트림 내에서 발견될 때 관련 영역 관리 유닛 20, 22, 24으로 보내진다. 영역 관리 유닛 커맨드의 예에는 새로운 영역을 초기화하거나 기존 영역을 무효화하는 커맨드, 메모리 영역을 특정 영역에 할당하는 커맨드, 특정 영역에서 메모리 영역을 제거하는 커맨드, 메모리 영역에 포함된 데이터를 제1 메모리(16)로부터 제2 메모리(6)로 이출하기 위한 커맨드가 포함되는데, 이출된 데이터에 대해서는 암호화 및 다른 프로세스가 수행되어 제2 메모리 (6) 내에서 보호된다. 추가의 영역 관리 유닛 커맨드는 이입된 데이터에 대해 수행되는 관련 해독 및 검증 동작과 관련된, 제2 메모리(6)로부터 제1 메모리(16)로 데이터를 다시 이입하기 위해 제공된다.
메모리 영역으로부터 데이터의 이러한 이출 및 이입(exports and imports)과 관련하여, 온 칩 메모리(16)와 같은 제1 메모리는 시스템 온 칩 집적회로(4) 내의 영역 관리 유닛 20, 22, 24에 의해 밀접하게 관리되고 그에 따라 이들 영역 관리 유닛 20, 22, 24은 소유권을 집행하고 주어진 메모리 영역 내의 데이터에 대한 액세스를 그 메모리 영역을 소유하는 프로세스, 또는 소유 프로세스가 액세스 권한을 부여한 프로세스들로 제한할 수 있다는 것을 이해할 것이다. 그러나, 제2 메모리인 외부의 비휘발성 메모리(6)와 같이, 그 메모리 영역 내의 데이터가 이출될 때, 영역 관리 유닛 20, 22, 24에 의해 제공되는 액세스에 대한 제어는 더 이상 유효하지 않으며 따라서 데이터는 어떤 다른 방식으로의 보호를 필요로 한다. 이것은 메모리 영역 내에서 데이터를 이출하기 전에 암호화한 다음, 온 칩 메모리(16)로 다시 이입할 때 비밀 키로 해당 데이터를 해독함으로써 달성된다.
이출 프로세스는 이출된 데이터의 특성을 지정하는 메타데이터의 생성을 동반할 수 있다. 이러한 메타데이터는 제1 메모리(온 칩 메모리(16))의 메타데이터 메모리 영역 내에 별도로 저장될 수 있으며, 여기서 영역 관리 유닛 20, 22, 24에 대해 개인용으로 유지되어(즉, 이러한 영역 관리 유닛 20, 22, 24에만 액세스가능하고 기존 프로세스 중의 어느 것에도 가능하지 않다) 데이터가 온 칩 메모리(16)로 다시 이입될 때, 메타데이터는 그 이입된 데이터에 대해 판독될 수 있고, 메타데이터로 표현된 데이터의 특성은 이입된 데이터의 특성에 대해 검사되어 그 이입된 데이터의 무결성(예를 들면, 체크섬(checksums), 데이터 크기, 서명 등)을 보장할 수 있다.
영역 관리 유닛 20, 22, 24의 개인 데이터(이출된 영역(region)/페이지를 특징으로 하는 상기 메타데이터를 포함함)는 (예를 들어, 온 칩 메모리(16) 내에 공간을 확보하기 위해) 온 칩 메모리(16)로부터 오프 칩 비휘발성 메모리(6)로 이출될 필요가 있을 수 있으며, 이러한 상황에서 RMU 프라이빗 메타데이터 자체는 그것의 보호를 위해 암호화될 수 있으며, 암호화되어 이출된 메타데이터가 사용을 위해 온 칩 메모리(16)로 다시 이입될 때 검사 및 검증될 수 있도록 하기 위해 이출된 메타데이터를 특징으로 하는 새로운 메타데이터가 온 칩 메모리(16) 내에 유지될 수 있다(그러한 유지된 메타데이터는 이출된 메타데이터보다 크기가 상당히 작다).
메모리 영역의 특성 및 메모리 영역 내에 저장된 데이터를 기술하는 이러한 메타데이터는 분기 패턴을 갖는 메타데이터 메모리 영역 트리와 같은, 계층 구조의 일부로서 배열될 수 있다. 이러한 메타데이터 메모리 영역 트리의 형태는 영역 관리 유닛 20, 22, 24에 의해 소유된 메타데이터 영역으로서 기능하도록 메모리 어드레스 공간의 상이한 영역(regions)이 등록됨에 따라 소프트웨어 제어 하에서 결정될 수 있다. 이러한 메모리 영역들의 등록(registering)을 제어하는 소프트웨어는 메타데이터를 저장하는 역할을 하는 메모리 영역들 사이의 관계를 할당, 할당 해제 및 제어할 수 있지만, 그러한 소프트웨어 자체는 어느 프로세스는 그러한 데이터에 액세스할 수 있는지를 제어할 수 있다는 의미에서 이들 메모리 영역 내에 포함된 데이터를 소유하지 않는다는 것이 인식될 것이다. 영역 관리 유닛 20, 22, 24에 전용인 메모리 영역들(즉, 메모리 관리 회로)의 경우, 그러한 액세스 권한은 영역 관리 유닛 20, 22, 24 자체 및 그러한 RMU 프라이빗 데이터는 어떤 다른 프로세스와도 공유되지 않을 것이다.
주어진 메모리 영역 내에 저장된 주어진 데이터가 이출될 때, 관련 메모리 영역은 무효화되어 콘텐츠에 액세스할 수 없게 된다. 이 페이지를 재사용하기 위해, 그 주어진 메모리 영역이 또 다른 프로세스에서 사용하기 위해 해제될 때 이전 컨텐츠가 또 다른 프로세스에 액세스할 수 없도록 이전 컨텐츠와 상관없는 다른 데이터와 메모리 영역을 겹쳐 쓰는 클린 커맨드(Clean command)를 사용하여, 페이지가 "유효(Valid)"하게 된다. 예를 들어, 주어진 메모리 영역의 콘텐츠는 모두 0 값으로 기록되거나, 고정된 값으로 기록되거나, 임의의 값으로 기록되어 메모리 영역의 원래 콘텐츠를 덮어쓸 수 있다. 다른 예들에서, 이출된 메모리 영역의 콘텐츠의 덮어쓰기는 후속 클린 커맨드가 아니라, 이출 커맨드 자체에 의해 트리거될 수 있다. 어느 쪽이든, 주어진 메모리 영역이 주어진 소유 프로세스 이외의 프로세스에 액세스 가능하게 되기 전에, 이출되는 주어진 소유 데이터는 주어진 소유 데이터와 상관없는 값으로 덮어쓰기 될 수 있다. 주어진 프로세스에 의해 소유된 주어진 메모리 영역이 이출될 때, 이출 프로세스의 일부로서, 이출을 수행하기 위해 영역 명령을 실행하는 영역 관리 유닛 20, 22, 24은 주어진 프로세스로부터 관련 메모리 영역의 소유권을 취하고, (예를 들어, 영역(region) RMU-Private을 만든다), 다른 모든 프로세스(및 다른 영역 관리 유닛)에 대해 해당 메모리 영역의 액세스를 잠그고(lock), (암호화, 메타데이터 생성 및 덮어쓰기 포함하는) 이출 동작을 수행한 다음, 그 메모리 영역에 대한 액세스를 잠금 해제하며, 그 메모리 영역의 소유권을 해제한다. 따라서, 그 커맨드가 수행되고 있는 동안 이출 또는 이입을 진행 중인 메모리 영역은 관련 영역 관리 유닛에 비공개로 유지될 수 있다.
도 2는 복수의 프로세스(프로그램/스레드(threads)), 복수의 예외 레벨(권한 레벨), 보안 및 비보안 프로세서 도메인, 및 주어진 메모리 영역의 소유권을 나타내는 복수의 영역들 간의 관계를 개략적으로 도시한다. 도시된 바와 같이, 특권 레벨의 계층은 예외 레벨 EL0에서 예외 레벨 EL3까지 확장된다(예외 레벨 EL3이 최고 레벨의 특권을 갖는다). 시스템의 작동 상태는 예를 들어 영국 케임브리지의 ARM® Limited에서 제공하는 TrustZone® 아키텍처를 사용하는 프로세서에서, 보안 도메인과 비보안 도메인으로 표시되는 것처럼 보안 작동 상태와 비보안 작동 상태로 구분될 수 있다.
도 2에 도시된 바와 같이, 메모리 액세스 회로(영역 관리 유닛 20, 22, 24 및 관련 제어 소프트웨어(예를 들어, 영역 관리 유닛 중 하나를 실행하는 밀리코드(millicode))는 실행 환경 내에서 복수의 영역을 관리한다. 주어진 메모리 영역(메모리 페이지)은 특정 영역에 의해 소유된다. 영역은 그 내부에 자식 영역을 갖고, 이들 자식 영역 내에 손자 영역을 가질 수 있다(예를 들어, 영역 A(부모), 영역 B(자식) 및 영역 C(손자) 참조). 영역 A에 소유권이 부여된 메모리 영역은 영역 A가 소유한 프로세스의 제어 하에 차례로 소유권을 영역 A에서 영역 B로 전달할 수 있다. 따라서, 부모 영역은 그 자신의 자식 영역(들)에 영역(regions)의 소유권을 부여할 수 있다. 이러한 자식 영역은 그들 부모 영역에서 받은 메모리 영역의 소유권을 차례로 전달하여 원래 영역, 즉 영역 A의 손자 영역인 그들 자신의 자식 영역(예를 들면, 영역 C)이 소유할 수 있다. 주어진 영역 내의 프로세스는 동일한 특권 레벨 또는 상이한 특권 레벨에서 실행될 수 있다. 많은 실제 경우에는 영역과 특권 레벨은 영역 간 이동을 위한 편리한 메커니즘으로서 대응할 수 있고 그들 자신이 시스템을 상이한 권한 레벨(예외 레벨) 사이에서 이동시키는 예외의 사용을 수반할 수 있지만, 프로세스가 속하는 영역은 프로세스의 특권 레벨에 대한 직교 파라미터이다.
도 3은 온 칩 메모리(16) 내에 저장된 복수의 메모리 페이지(메모리 영역)에 대해 상이한 관리 동작을 각각 수행하는 영역 관리 유닛(20) 및 범용 메모리 관리 유닛(26)을 개략적으로 도시한다. 도시된 바와 같이, 영역 관리 유닛(24)은 각 디스크립터(descriptor)가 영역의 속성을 지정하는 복수의 영역 디스크립터(42)를 사용한다. 영역 관리 유닛(24)은 또한 물리적 어드레스에 의해 인덱스된 엔트리(entries)를 포함하는 영역 그래뉼(granule) 테이블(또는 소유권 테이블)을 유지할 수 있으며, 대응하는 메모리 영역에 대한 정보를 포함하는 각 엔트리는 메모리 영역이 속하는 영역의 표시를 포함하며, 즉, 그 영역은, 그 자체가 실제로 그 메모리 영역을 소유하는지 아닌지 여부를 제어하지 않더라도 그 영역 내에서 데이터를 제어하기 위한 액세스를 제어하는 독점권을 갖는다. 영역 디스크립터 및 영역 그래뉼 테이블 엔트리는 메모리(16)에 저장될 수 있지만, RMU 자체에 캐시될 수도 있다. 따라서, 도 3에 도시된 바와 같이, 상이한 메모리 영역은 영역 명칭 RA, RB, RC, RD 및 RE로 나타낸 것처럼 상이한 소유 영역을 갖는다. 메모리 영역들 중 일부는 또한 영역 관리 유닛(20)에 의해 소유되며 RMU-Private로서 표시된다. 이러한 RMU-프라이빗 영역(private regions)은 다른 메모리 영역의 특성을 기술하는 메타데이터를 저장하거나, 이출되거나 이입되는 메모리 영역을 임시로 저장하거나, 또는 영역 관리 유닛(20) 자체의 다른 목적을 위해 사용될 수 있다. RMU 프라이빗 영역은 여전히 대응하는 소유자 영역(에 대한 개인)에 의해 소유될 수 있지만, 소유자 영역이 발행한 범용 읽기/쓰기 액세스에 액세스할 수 없다(대신에 RMU(20)에 발행된 RMU 커맨드가 RMU(20)를 트리거하여 RMU 프라이빗 영역을 변경하는 데 필요할 수 있다).
메모리 영역의 어드레싱은 관련된 특정 시스템에 따라 가상, 중간 물리적 또는 물리적 어드레스에 의한 것일 수 있다. 영역 관리 유닛(20) 및 범용 메모리 관리 유닛(26)은 따라서 수신된 어드레스(가상 메모리 어드레스이든 중간 메모리 어드레스이든)를, 관련된 온 칩 메모리(16) 내의 메모리 영역을 보다 직접적으로 나타내는, 물리적 어드레스와 같은 어드레스로 변환할 수 있는 변환 데이터를 저장할 수 있다. 이러한 어드레스 변환 데이터는 변환 색인 버퍼(translation look aside buffer) 및 다른 분산 제어 메커니즘을 사용하여 시스템 온 칩 집적 회로(4) 내에서 관리 및 분산될 수 있다.
도 4는 도 1의 처리 요소 8, 10, 12 중 하나 및 메모리 액세스를 제어하기 위해 메모리(16)에 저장된 제어 데이터의 보다 상세한 예를 도시한다. 설명의 편의를 위해, 도 4는 처리 요소(8)로서 CPU 0을 도시하지만, 처리 요소는 또한 GPU(12)의 CPU 1(10) 또는 데이터 처리 장치(2) 내의 어떤 다른 처리 요소일 수 있음을 이해할 것이다. 도 9에 도시한 바와 같이, 처리 요소(8)는 처리 회로(32)(이것은 상기 설명한 디코딩 및 실행 로직을 포함할 수 있다), 메모리 관리 유닛(26)을 포함하는데, 이는 변환 테이블(translation tables)의 엔트리를 캐싱하기 위한 하나 이상의 변환 색인 버퍼(100)(공유된 MMU-RMU TLB 구조가 사용되는 경우 RMU(20)로부터의 영역 기반 제어 데이터가 추가될 수 있음)와, TLB(100)에 대한 데이터의 할당을 제어하고 메모리에 대한 워크 액세스(walk accesses)를 트리거하여 주어진 메모리 액세스가 수행될 수 있는지 여부를 제어하는 데 사용되는 필요한 데이터를 찾는 테이블 워크 유닛(102)을 포함할 수 있다. 처리 요소(8)는, 또한 예를 들어 위에서 논의된 페이징(이출/이입) 동작에서 사용하기 위해, 데이터를 암호화 또는 복호화하기 위한 암호화 동작을 수행할 수 있는 암호화 유닛(104)을 포함할 수 있다. 처리 요소(8)는 또한 메모리(16)로부터 판독된 데이터 또는 명령을 캐시할 수 있는 다수의 캐시(110)를 포함한다. 처리 회로(32) 또는 테이블 워크 유닛(102)에 의해 트리거된 메모리에 대한 액세스가 캐시에서 누락되면, 데이터가 메인 메모리(16)로부터 위치될 수 있다.
처리 요소(8)는 또한 전술한 바와 같은 영역 관리 유닛(20)을 포함한다. 일부 실시 예들에서, 영역 관리 유닛(RMU)(20)은 하드웨어 회로로서 제공될 수 있다. 그러나, 이하에서 논의되는 RMU 동작 중 일부는, 예를 들어 상이한 메모리 영역에 대한 다수의 액세스가 수행되어야 하는 경우, 순전히 하드웨어적으로 구현하기가 비교적 복잡할 수 있다. 따라서, 일부 예들에서, RMU(20)는 데이터 처리 장치(2) 내에 저장될 수 있고 범용 처리 회로(32)를 사용하여 실행될 수 있는 프로그램 코드를 사용하여 구현될 수 있다. 메모리(16)에 기록될 수 있고 재기록이 가능한 범용 소프트웨어와 달리, RMU 소프트웨어(millicode)는 데이터 처리 장치에 비교적 영구적으로 설치되어 제거될 수 없으며, 처리 시스템에 의해 제공되는 플랫폼의 일부로서 간주될 수 있다. 예를 들어 RMU 프로그램 코드는 ROM(read only memory) 내에 저장될 수 있다. 따라서, RMU는 하드웨어 유닛을 포함하거나, 영역 관리 소프트웨어를 실행하는 처리 회로(32)를 포함할 수 있으며, 이는 처리 회로(32)에 의해 실행되는 범용 소프트웨어에 포함된 RMU 커맨드에 의해 실행되도록 트리거된다. 일부 예에서, RMU(20)는 하드웨어 및 소프트웨어의 조합을 사용하여 구현될 수 있고, 예를 들면, 더 빠른 처리를 위해 하드웨어 회로를 사용하여 몇몇 더 간단한 기능을 구현할 수도 있지만, 밀리코드를 사용하여 더 복잡한 기능을 구현할 수도 있다. 따라서, RMU에 대한 그 다음의 레퍼런스(references)는 하드웨어 또는 소프트웨어 또는 둘의 조합을 지칭할 수 있다는 것이 이해될 것이다.
도 4에 도시된 바와 같이, 메모리(16)는 메모리에 대한 액세스를 제어하기 위해 MMU(26) 및 RMU(20)에 의해 사용되는 다수의 제어 정보를 저장할 수 있다. 이들은 어느 프로세스가 주어진 메모리 영역에 액세스할 수 있는지를 제어하기 위한 메모리 액세스 속성뿐만 아니라, 가상 어드레스를 물리적 어드레스로 변환하기 위한 어드레스 매핑 정보를 정의하는, 변환 테이블(페이지 테이블이라고도 함)(120)을 포함한다. 변환 테이블(120)은 도 2와 관련하여 위에서 논의된 예외 레벨에 근거해서 정의될 수 있으므로, 특권이 더 많은 예외 레벨에서 실행되는 프로세스는 특권이 더 적은 예외 레벨에서 실행되는 프로세스가 대응하는 메모리 영역에 액세스할 수 있는지 여부를 제어하는 권한(permissions)을 설정할 수 있다.
또한, MMU 페이지 테이블(120)에 대한 직교 방식으로 메모리 액세스를 제어하기 위해 다수의 영역 관리 테이블 또는 영역 제어 정보(122)가 제공되어, 특권이 더 적은 프로세스가 특권이 더 많은 프로세스가 액세스되는지를 제어할 수 있도록 한다(영역 제어는 서비스될 메모리 액세스 요청을 위해서, 두 가지 유형의 액세스 제어 검사를 모두 통과해야 할 수도 있다는 점에서 MMU 제어와 직교한다). 영역 관리 테이블을 사용하면, 주어진 메모리 영역을 소유하는 소유자 프로세스(영역(realm))는 특권이 더 많은 예외 레벨에서 실행되는 프로세스를, 해당 메모리 영역에 액세스하는 것으로부터 제외시킬 권한가 있다. 영역 관리 데이터(realm management data)는 주어진 영역(realm)의 속성을 기술하는 영역 디스크립터(124)를 포함한다. 각 영역(realm)은 처리 회로(32)에 의해 실행되는 적어도 하나의 소프트웨어 프로세스의 적어도 일부에 대응한다. 일부 영역은 둘 이상의 프로세스에 대응할 수 있는 반면에, 다른 영역(realms)은 주어진 소프트웨어 프로세스의 서브 부분에만 대응할 수 있다. 영역(realm)은 또한 메모리 어드레스 공간의 주어진 영역(region)에 매핑되는 것으로 볼 수 있다(처리 회로(32)는 메모리 어드레스 공간의 대응하는 영역(region) 내에 있는 프로그램 명령을 실행할 때 주어진 영역 내에서 실행된다). 따라서, 영역(realm)은 소프트웨어 프로세스의 세트 또는 소프트웨어 프로세스의 일부, 또는 메모리 어드레스 공간의 영역(area)으로 볼 수 있다. 이들 두 가지 관점은 동일하다. 설명의 편의를 위해, 이후의 설명은 영역(realm)을 적어도 하나의 소프트웨어 프로세스의 적어도 일부라고 지칭하지만, 메모리 영역(memory region)의 모음으로서의 영역(realm)의 대응하는 관점은 동일하게 유효하다(이 경우, 영역(realm)으로/으로부터의 "진입(entry)" 및 "퇴장(exit)"은 영역(realm)에 대응하는 메모리 어드레스의 일부에 도달/떠나는 프로그램 실행에 대응할 수 있다).
영역 관리 데이터(122)는 또한 영역 퇴장 또는 진입 시에 주어진 영역과 관련된 아키텍처 상태를 저장 및 복원하는데 사용될 수 있는 영역 실행 컨텍스트 영역(realm execution context regions)(126)을 포함한다. 영역 관리 데이터는 또한 메모리 어드레스 공간의 각 영역(region)에 대해 어느 영역이 그 메모리 영역(memory region)에 대한 소유자 영역(owner realm)인지를 정의하는 영역 그래뉼 테이블(또는 소유권 테이블)(128)을 포함한다. 주어진 메모리 영역의 소유자 영역은 다른 영역(특권이 더 많은 프로세스를 포함)을 해당 메모리 영역 내에 저장된 데이터에 액세스하지 못하게 할 권한가 있다. 이 영역 관리 데이터 사용에 대해서는 아래에서 더 자세히 설명한다. 일반적으로, 영역 관리 유닛(20) 및 MMU(26)는 그 영역에 의해 소유된 메모리 영역에 대한 소유자 영역에 의해 정의된 소유권을 집행하는 메모리 액세스 회로로 볼 수 있다. 이것은 예를 들어, 상이한 당사자에 의해 제공된 다수의 가상 머신(36)이 클라우드 서버 오퍼레이터에 의해 제공된 하이퍼바이저(38)의 제어 하에서 실행될 수 있는 클라우드 플랫폼에 특히 유용할 수 있다. 가상 머신 중 하나를 제공하는 당사자는 그들의 데이터 및 코드가 하이퍼바이저에 액세스하기를 원하지 않을 수 있다. 특권이 적은 예외 레벨에서 실행하는 영역이 특권이 더 많은 예외 레벨이 그것의 데이터나 명령에 액세스하는 것을 배제할 수 있는 영역의 개념을 도입함으로써, 이것에 의해 물리적 하드웨어를 다른 당사자가 제공한 코드와 공유할 수 있는 클라우드 서비스에 소프트웨어를 설치하는 코드 개발자의 신뢰도를 높일 수 있는 블라인드 하이퍼바이저(blind hypervisor)를 제공할 수 있다.
도 5에 도시된 바와 같이, 영역은 루트 영역(root realm)(130) 이외의 각 영역이 초기화 커맨드를 실행함으로써 자식 영역을 초기화한 대응하는 부모 영역을 갖는 자식 영역인 영역 계층에 따라 RMU(20)에 의해 관리된다. 루트 영역(130)은 예를 들어 가장 특권이 있는 예외 레벨(EL3)에서 실행되는 모니터 코드 또는 시스템 펌웨어와 관련된 영역일 수 있다. 설명을 쉽게 하기 위해, 도 5의 예와 이후에 논의된 초기 예는 각 자식 영역이 그 부모 영역보다 낮은 특권 레벨에서 실행되는 경우를 나타낸다. 그러나, 아래에서 설명하겠지만 부모와 동일한 예외 레벨에서 실행되는 서브 영역(sub-realm)을 설정할 수도 있다.
일반적으로, MMU(26)에 의해 제공되는 메모리 액세스 제어의 영역 관리 부분에 대해, 자식 영역은 그 부모 영역이 소유한 임의의 메모리 영역에 대한 디폴트 액세스를 갖는다. 마찬가지로, 주어진 영역의 모든 자손(descendant)은 주어진 영역의 소유 메모리 영역에 액세스할 수 있다고 가정한다. 그러나, 영역 관리 제어는 예외 레벨에 근거하여 변환 테이블(120)에 의해 제공되는 제어와 직교하므로, 더 높은 특권 레벨에서 실행되는 프로세스는 여전히 변환 테이블(120)의 파라미터를 설정함으로써 더 적은 특권 코드가 그 데이터에 액세스하는 것을 배제할 수 있다. 따라서, 일반적으로 주어진 자식 영역은 그것의 부모 영역이 주어진 자식 영역이 소유한 주어진 메모리 영역에 저장된 데이터에 액세스하는 것을 배제할 권한가 있다. 자식 영역이 부모 영역이 주어진 메모리 영역에 액세스하는 것을 실제로 배제하는지 여부는 소유권 테이블(128)에 설정된 제어 속성에 근거하여 설정될 수 있다(디폴트는 부모 영역이 자식 영역의 소유 영역에 액세스할 수 없지만, 자식 영역이 그에 따라 가시성 속성(visibility attributes)을 설정하여 부모 영역에 대한 액세스 권한을 부여하도록 선택할 수 있다는 것일 수 있다). 여러 형제 영역(동일한 부모 영역을 공유하는 상이한 자식 영역)이 있는 경우, 주어진 자식 영역은 형제 영역이 주어진 자식 영역이 소유한 주어진 메모리 영역에 저장된 데이터에 액세스하는 것을 배제할 수 있다. 또한, 소유권 테이블(128)에 설정된 가시성 속성은 형제 영역이 서로의 데이터에 액세스할 수 있는 정도를 제어할 수 있다. 대안으로, 형제 영역에 의한 액세스는 부모 가시성 속성에 근거하여 제어될 수 있어서, 자식 영역이 그 부모 영역에 페이지를 보이게 하면, 동일한 페이지가 그 형제 영역 및 형제 영역의 추가 자손에게도 보이게 될 수 있다. 일부 경우에, 소유권 테이블(128)은 주어진 소유자 프로세스가 어떤 영역 하에서 실행되는 임의의 프로세스가 자신의 소유 메모리 영역 내의 데이터에 액세스할 수 있게 하는 글로벌 가시성 속성을 가질 수 있다.
도 5에 도시된 바와 같이, 각 영역(140)은 주어진 영역에서 나갈 때, 레지스터 값과 같은, 영역의 구조적 상태를 저장하는데 사용될 수 있는 하나 이상의 영역 실행 컨텍스트(REC) 메모리 영역(126)과 관련된다. 주어진 영역에 제공된 REC(126)의 수는 주어진 영역 하에서 얼마나 많은 실행의 스레드(threads)가 동작하는지에 따라 달라질 수 있다. 예를 들어, 처음 초기화될 때의 영역은 단일의 최초 REC 영역(126)으로 설정될 수 있지만, 영역은 그 영역에 의해 소유된 다른 메모리 영역을, 필요에 따라 추가의 REC로서 작동하도록 구성할 수 있다. REC 메모리 영역은 실행 상태가 해당 REC에 저장된 대응하는 영역에 의해 소유된다.
각 영역은 영역 디스크립터(124)에 속성이 기술된 영역의 부모 영역에 의해 소유되는 메모리 영역에 저장되는 영역 디스크립터(124)와 관련된다. 주어진 영역 생성에서 정의될 수 있는 자식 영역의 수의 유연성(flexibility)에 대해서, 영역 디스크립터는 영역 디스크립터 트리(RDT)라고 불리는 트리 구조를 사용하여 관리되는데, 이는 나중에 더 상세히 설명될 것이다. 영역 디스크립터(124)는 보안을 보장하기 위해 영역에 진입 또는 퇴장할 때 RMU(20)에 의해 검사될 수 있는 영역의 속성을 정의하는데 사용될 수 있다. 영역 디스크립터는 또한 다양한 라이프사이클 상태를 통한 영역의 진행을 추적하여, 영역에 대한 특정 RMU 커맨드의 실행이 특정 라이프사이클 상태로 제한되어, 영역이 안전한 방식으로 작성되고 무효화되는 것을 보장할 수 있다.
도 6 및 도 7은 가능한 영역 계층의 두 가지 다른 예를 나타낸다. 도 6의 예에서, 도 2에 도시된 프로세스의 각각은 그 자신의 영역이 정의되어 있다. 따라서, 루트 영역(130)은 예외 레벨 EL3에서 동작하는 모니터 소프트웨어 또는 펌웨어에 대응한다. 루트 영역은 2개의 자식 영역(142)을 정의하는데, 하나는 보안 EL1에서 동작하는 보안 운영 체제에 대응하고 다른 하나는 EL2에서의 하이퍼바이저에 대응한다. 하이퍼바이저는 EL1에서 상이한 게스트 운영 체제에 대응하는 손자 영역(144)을 정의하고, 이들 게스트 운영 체제의 각각은 최소 특권 예외 레벨 EL0에서 실행되는 애플리케이션에 대응하는 추가의 증손(great-grandchild) 영역(146)을 정의한다. 유사하게, 영역(142)에서의 보안 운영 체제는 상이한 보안 애플리케이션에 대응하는 손자 영역(148)을 정의할 수 있다. 계층 구조에서의 부모 영역은 현재 소유하고 있는 메모리 페이지의 소유권을 (아래에 설명된 것과 같이 Granule.Add 커맨드를 사용하여) 새로운 자식 영역으로 전달하거나, 해당 페이지 중 하나를 유효하지 않게 만들 수 있고, 그것을 자식의 가상 어드레스 공간에 매핑하고, 자식 영역이 페이지 소유권(클레임(Claim)) 커맨드를 실행하여 페이지의 소유권을 주장할 수 있도록 한다. 메모리 어드레스 공간의 지정된 페이지가 커맨드를 발행한 부모 영역에 의해 아직 소유되지 않은 경우 페이지 소유권 커맨드가 거부될 수 있다.
도 7에 도시된 바와 같이, 모든 특권 레벨에서 프로세스가 별도의 영역을 갖는 것은 필수가 아니므로, 도 7에서 점선으로 표시된 특권 레벨 경계 중 일부는 영역 경계에 대응하지 않을 수도 있다. 예를 들어, 도 7에서, 애플리케이션(150) 및 그 운영 체제는 예외 레벨 EL2에서 동작하는 하이퍼바이저 영역(142)과 동일한 영역 내에서 실행되므로, 단일 영역은 양쪽 EL2 하이퍼바이저 코드, EL1에서 동작하는 운영 체제 및 EL0에서의 애플리케이션을 스팬(span)한다. 다른 한편, 동일한 하이퍼바이저 하에서의 상이한 애플리케이션(152)은 자신의 개별 영역이 정의될 수 있다. 이 경우 영역 경계는 EL1과 EL0 사이이며 EL2-EL1 영역 경계는 없다(양쪽 하이퍼바이저와 운영 체제는 동일한 영역에서 실행될 수 있다). 또 다른 운영 체제의 경우, 별도의 EL1 영역(154)이 정의될 수 있으며, 이 영역은 운영 체제와 동일한 영역 내에서 실행되는 일부 애플리케이션, 및 자신의 전용 영역을 갖는 다른 애플리케이션을 다시 가질 수 있다. 마찬가지로, 보안 측면에서도, 도 7에서의 보안 OS 및 애플리케이션은 EL3 루트 영역 내에서 완전히 실행되므로, 보안 측면에서 작동할 때는 영역 경계가 없다. 따라서, 영역의 정확한 구성은 실행중인 프로세스의 요구에 따라 주어진 시스템에 대해 런 타임(run time)에 결정될 수 있다. 소프트웨어는 (낮은 레벨의 펌웨어에 대한 경우일 수도 있는) 작고 고정된 수의 자식 영역만 필요한지 또는 많은 영역이나 다양한 영역 수가 필요한지(예를 들어, 알 수 없는 수의 게스트 가상 머신을 관리할 수 있는 클라우드 플랫폼의 하이퍼바이저에 유용할 수 있음)를 런타임에 결정할 수 있다.
주어진 부모 영역에 대한 영역 디스크립터(124)는 (해당 부모 영역의 다수의 자식 영역에 대한 영역 관리 데이터를 정의하는 영역 관리 트리의 예인) 영역 디스크립터 트리에 따라 관리된다. 트리는 다양한 수의 레벨을 가지고 있다. 도 8은 특정 부모 영역에 의해 관리되는 이러한 영역 디스크립터 트리(160)의 예를 도시한다. 트리(160)는 각각이 다수의 영역 디스크립터 트리 엔트리(RDTE)(164)를 포함하는 다수의 영역 디스크립터 트리 그래뉼(RDTG)(162)을 포함한다. 각 RDTE(164)는 부모 영역의 주어진 자식 영역에 대한 영역 디스크립터(166) 또는 다음 레벨의 영역 디스크립터 트리에 대한 추가 RDTG(162)에 대한 포인터를 제공한다. 트리의 제1 레벨에 대한 RDTG(162)는 부모 영역(예를 들어, 부모 영역의 영역 디스크립터)과 관련된 데이터의 일부로서 저장될 수 있는 영역 디스크립터 트리 포인터(168)에 의해 식별될 수 있다. 따라서, 부모 영역이 주어진 자식 영역과 연관된 RMU 커맨드를 발행할 때 필요한 자식 영역의 영역 디스크립터(166)를 찾기 위해 RMU가 영역 디스크립터 트리를 횡단하도록 트리거할 수 있다(그 영역 디스크립터가 RMU(20) 내에 아직 캐시되지 않은 경우). 각각의 RDTG(162)는 가변 개수의 엔트리(164)를 가질 수 있다.
도 8의 표에 도시된 바와 같이, 트리의 다음 레벨에서 RDTG(162)에 대한 포인터를 제공하는 주어진 RDTE(164)는 RDTG를 가리키는 최대 엔트리 수를 나타내는 순서 값(order value)을 포함할 수 있다. 예를 들어, 오더 값은 RDTG를 가리키는 총 엔트리 수에 대응하는 2의 거듭제곱(power of two)을 나타낼 수 있다. RDTE(164)에 포함될 수 있는 다른 정보는 RDTE의 상태를 나타내는 상태 값(예를 들어, RDTE가 영역 디스크립터 트리 데이터를 할당하는데 자유로운지 여부, 및 RDTE가 추가 RDTG(162) 또는 자식 영역 디스크립터(166)에 대한 포인터를 제공하는지 여부)을 포함할 수 있다. 포인터 이외에, RDTE는 또한 자유롭지 않은 RDTG에 대한 포인터에서 RDTE의 수를 추적할 수 있는 기준 카운트를 포함할 수 있으며, 이는 추가 RDTE가 그 RDTG(162)에 할당될지 여부를 결정하는데 유용할 수 있다. 부모 영역에 의해 트리거되는 RUM 커맨드는 RMU(20)를 제어하여 트리의 추가 RDTG를 확립하고 및/또는 기존 RDTG 내의 RDTE의 내용을 편집할 수 있다.
도 8에 도시된 트리는 하나의 특정 부모 영역의 자식 영역을 도시한다는 점에 유념한다. 서로 다른 부모 영역에는 그 자신의 자식 영역을 추적하는 별도의 영역 디스크립터 트리가 있을 수 있다. RDTG(162) 및 자식 영역 디스크립터(166)를 포함하는 트리와 관련된 데이터는 부모 영역이 소유한 페이지 내에 저장되므로 다른 영역은 이 데이터에 액세스하는 것에서 배제될 수 있다. 따라서 부모 영역만 그것이 구성한 특정 자식 영역에 대한 가시성을 가질 수 있으므로, 더 높은 특권 수준에서 실행되는 프로세스는 직접 생성된 어떤 자식 영역 하에서 어떤 영역이 생성되었는지에 대한 어떤 가시성도 가질 수 없다.
도 8에 도시된 바와 같이, 주어진 부모 영역의 자식 영역의 각각은 대응하는 영역 식별자(RID)(168)를 가질 수 있으며, 이는 특정 자식 영역을 식별하기 위해 그 부모 영역에 의해 사용된다. RID는 특정 부모 영역에 한정한다는 점에서 로컬 영역 식별자이다. 상이한 부모 영역의 자식 영역은 동일한 로컬 RID를 가질 수 있다. 주어진 자식 영역에 대한 부모 영역에 의해 선택된 임의의 값을 갖는 로컬 RID를 사용할 수 있지만, 도 8에 도시된 접근법에서, 주어진 자식 영역에 대한 로컬 RID는 가변수의 가변 길이 비트 부분을 갖고, 가변 길이 부분의 각각은 RMU(20)에 의해 주어진 레벨의 영역 디스크립터 트리(160)로 색인(index)하기 위해 사용된다. 예를 들어, 도 13에서 로컬 RID = 7을 갖는 자식 영역의 영역 디스크립터는 제1 레벨 RDTG(162)의 엔트리 7에서 영역 디스크립터 포인터를 따라 액세스된다. 로컬 RID = 3.3을 갖는 자식 영역의 영역 디스크립터는 트리의 제1 레벨에서 엔트리 3 및 그 다음에 트리의 제2 레벨에서 엔트리 3을 따라 액세스된다. 마찬가지로, 로컬 RID = 1.2을 갖는 자식 영역에 대한 영역 디스크립터는 제2 층에서의 엔트리 1과 제2 층에서의 엔트리 2을 따라 액세스된다. 도 8은 십진값 7, 3.3 등을 사용하여 간결을 기하기 위한 로컬 RID를 도시하지만, 이들은 상기 처리장치(2)에서 이진 디지트들의 연결로서 구현될 것이라는 것을 주목한다.
주어진 영역에 대한 상기 RID는 주어진 영역에 대한 영역 관리 데이터에 액세스하기 위해 영역 디스크립터 트리의 각 레벨에서 사용될 인덱스의 연결을 포함할 수 있다. 트리 사이를 이동하는 데 사용되는 순서와 동일한 순서로 인덱스를 연결하는 것이 필수는 아니지만, 이것은 트리 액세스 관리를 보다 간단하게 하기 때문에 선호될 수 있다. 연결이 로우(low)에서 하이(high)로 또는 하이에서 로우로 진행되는지 여부는 중요하지 않다. 인덱스의 연결 다음에 RMU(20)가 그 사이를 이동할 트리의 어떤 추가 레벨도 없을 때를 판정할 수 있게 하는 소정의 종료 패턴(termination pattern)이 이어질 수 있다.
일부 구현에서는 유사한 트리 구조로 시스템 내의 모든 영역에 대한 영역 디스크립터를 저장할 수 있는 글로벌 영역 디스크립터 트리에 RID 구성 기술을 적용할 수 있다(각 RID는 전체적으로 고유한 값임). 그러나, 한 트리 내에서 주어진 부모의 자식 영역을 정의한 다음 그 자식 영역을 추적하기 위해 부모 영역마다 별도의 트리를 가짐으로써 소프트웨어 개발이 더 간단해질 수 있다. 따라서, 영역 디스크립터 트리는 주어진 부모 영역에 의해 초기화된 자식 영역의 영역 관리 데이터를 저장하기 위해 주어진 부모 영역과 관련된 로컬 영역 디스크립터 트리일 수 있다. 따라서, 영역 식별자는 주어진 부모 영역에 의해 사용되는 특정 자식 영역을 식별하는 로컬 영역 식별자일 수 있다. 상이한 부모 영역에 의해 초기화된 자식 영역은 로컬 영역 식별자의 동일한 값을 가질 수 있다. 이러한 방식으로, 부모 영역은 다른 부모 영역이 어떤 영역을 설정했는지 알지 못한 채 그 자식 영역에 어떤 RID가 사용되는지를 선택할 수 있고, 부모 영역이 그 영역 디스크립터 트리를 구성한 방식에 따라 자식 영역에 대한 RID가 구성된다.
로컬 영역 식별자는 소프트웨어 프로세스에 의해 발행된 영역 진입 명령(realm entry instructions) 또는 RMU 커맨드(commands)에 의해 사용될 수 있다. 그러나, 하드웨어 인프라스트럭처는 주어진 자식 영역의 완전한 식별을 사용하여 상이한 부모에 의해 작성된 영역을 구별할 수 있다. 따라서, 도 8에 도시된 로컬 영역 식별자들에 부가하여, 주어진 영역은 또한 주어진 영역에 고유한 글로벌 영역 식별자(또는 "내부" 영역 식별자)를 가질 수 있다. 적어도 하나의 하드웨어 구조는 로컬 영역 식별자(LRID) 대신에 글로벌 영역 식별자(GRID)를 사용하여 주어진 영역을 식별할 수 있다. 예를 들어, 영역 그래뉼 테이블(128) 및/또는 TLB(100)는 글로벌 영역 식별자를 사용하여 영역을 식별할 수 있다.
일부 예에서, 임의의 이진 값이 주어진 영역에 대한 GRID로서 할당될 수 있으며, 이는 그 자식 영역을 나타내기 위해 부모 영역에 의해 사용되는 LRID와 완전히 관련이 없을 수 있다. 동일한 영역 아키텍처의 상이한 마이크로 아키텍처 구현은 GRID를 할당하기 위해 상이한 접근 방식을 사용할 수 있다.
그러나, 일 예에서, 주어진 영역에 대한 GRID는 그 조상 영역의 LRID에 근거하여 구성될 수 있다. 이것은 주어진 영역이 MMU(26) 및 RMU(20)에 의한 액세스 제어에 유용할 수 있는 또 다른 영역의 자손인지 또는 또 다른 영역의 조상인지를 보다 간단하게 판정할 수 있기 때문에 유용할 수 있다.
트리 인덱스 연결 방법을 사용하여 모든 로컬 RID를 구성할 필요는 없다. 몇몇의 경우에는, 특정 디폴트 영역을 참조하기 위해 로컬 RID의 특정 값을 따로 두는 것이 유용할 수 있다. 현재 영역 또는 현재 영역의 부모 영역을 지정하는 RMU 커맨드가 비교적 일반적일 수 있다. 따라서, 현재 영역의 부모 영역을 참조하기 위해 소정의 RID 값을 따로 둘 수 있다. 예를 들어, 모든 비트가 1(1의 값을 나타냄)로 설정된 LRID는 현재 영역의 부모 영역을 나타내기 위해 따로 둘 수 있다. 유사하게, 소정의 영역 식별자 값은 현재 영역 자체를 나타내기 위해 따로 둘 수 있다. 예를 들어 0의 LRID 값은 현재 영역을 나타내는 데 사용될 수 있다.
RMU는 그것의 영역 디스크립터 트리를 설정할 때 충족해야 하는 제한을 질의(query)하기 위해 주어진 영역에 의해 트리거될 수 있는 특정 쿼리 커맨드(query command)를 지원할 수 있다. 예를 들어, 쿼리 커멘드에 응답하여, RMU(20)(또는 처리 회로(32))는 주어진 영역에 의해 정의될 수 있는 영역 디스크립터 트리(160)의 최대 레벨 수, 지정된 영역에 대해 주어진 레벨의 트리 구조에서 허용되는 최대 트리 엔트리 수, 및/또는 주어진 영역에 의해 초기화될 수 있는 최대 자식 영역 수 중 적어도 하나를 나타내는 제한 값을 반환할 수 있다. 예를 들어, 시스템은 특정 하드웨어 구현에 사용되는 LRID 또는 GRID에서 이용 가능한 비트 수와 같은 속성을 나타낼 수 있는 레지스터를 포함할 수 있다. RMU 또는 처리 회로는, 쿼리 커맨드에 응답하여, 영역 식별자에 이용 가능한 비트 수를 검사할 수 있고(또는 특정 프로세서 구현을 위해 적절한 응답이 고정화(hardwired)될 수 있다), 또한 추가 자식을 정의하기 위해 현재 영역에 대해 남아 있는 얼마나 많은 비트 수가 이용가능한지를 판정하기 위해, 글로벌 영역 식별자에서의 조상 영역에 의해 식별자의 얼마나 많은 비트가 이미 사용되었는지를 지정하는 정보를 검사할 수 있다. 부모 영역은 쿼리 커맨드에 대한 응답을 사용하여 그것의 RDT을 구성하는 방법을 결정할 수 있다.
도 9는 주어진 영역에 대한 영역 디스크립터(166)의 내용의 예를 도시한다. 상기 영역 디스크립터는, 그 영역에 대한 보안 구성 파라미터들을 규정하여도 된다. 이것은 단지 하나의 예일 뿐이고 다른 구현은 나열된 정보를 모두 포함하지 않거나 부가적인 정보를 포함할 수 있음을 이해할 것이다. 이 예제에서 영역 디스크립터는 다음을 포함한다:
· 영역의 글로벌 RID. 따라서, 로컬 RID에 근거하여 영역 디스크립터 트리를 트래버스(traversing)함으로써, 대응하는 글로벌 RID가 식별될 수 있으며, 이것은 주어진 영역에 의해 TLB와 같은 하드웨어 구조를 인덱싱하거나 GRID에 의거하여 정의된 소유권 테이블 또는 다른 정보를 검사하는데 사용될 수 있다.
· 주어진 영역의 라이프사이클 상태, 이것은 주어진 영역에 의해 트리거된 주어진 커맨드를 받아들일지 여부를 판정하기 위해서 RMU(20)에 의해 사용될 수 있다.
· 주어진 영역의 유형. 예를 들어, 영역 유형은 나중에 설명하는 바와 같이 영역이 전체 영역인지 서브 영역인지를 나타낼 수 있다.
· 경계 예외 레벨(BEL). 이것은 대응하는 영역에 대한 경계 예외 레벨을 식별한다. BEL은 영역이 실행될 수 있는 최대 특권 레벨을 나타낸다. 예를 들어, 도 7의 영역(142)은 EL2의 BEL을 가질 수 있고, 영역(152)은 EL0의 BEL을 가질 수 있고, 영역(154)은 EL1의 BEL을 가질 수 있다. 영역 디스크립터에서 BEL을 식별하는 명시적 파라미터를 제공함으로써, 이것은 예외 발생시 BEL을 사용하여 현재 영역 내에서 예외를 취할 수 있는지 여부 또는 부모 영역으로의 영역 퇴장이 예외를 처리하는데 필요한지 여부를 판정하기 때문에, 영역들이 여러 예외 레벨을 포괄(span)하는 유연성을 제공한다.
· 영역 및 그것의 자손이 소유한 총 메모리 영역 수(영역 보호 그래뉼 또는 RPG)를 나타내는 리소스 수(resource count). 이것은 이들 메모리 영역을 상이한 영역에 할당할 수 있기 전에, 영역 및 그것의 자손이 소유한 모든 메모리 페이지가 무효화되도록(데이터가 완전히 지워지도록) 하는 데 사용된다. 예를 들어, 리소스 수를 사용하여 얼마나 많은 영역을 제거해야 하는지를 추적할 수 있다.
· 영역에 대해 보호된 어드레스 범위의 시작 및 종료 어드레스. 예를 들어, 보호된 어드레스 범위는 대응하는 영역에 의해 페이지가 소유될 수 있는 메모리 어드레스 공간의 범위를 정의할 수 있다. 이것은, 영역 디스크립터에서 정의된 보호된 어드레스 범위를 다음의 메모리 액세스 어드레스와 비교함으로써, 영역이 이전에 소유한 메모리 영역이 더 이상 영역에 의해 소유되지 않은 경우를 식별할 수 있기 때문에, 자식 영역 데이터에 액세스하려는 시도 시에 자식 영역에 이전에 할당된 영역의 소유권을 되찾는 악의적인 부모 영역을 보호하는 데 유용할 수 있다.
· 주어진 영역과 관련된 데이터를 암호화 또는 복호화하기 위해 암호화 회로(104)에 의해 사용되는 하나 이상의 암호화 키. 이 예에서, 2개의 별개의 암호화 키, 즉 영역이 소유한 컨텐츠 및 메모리를 암호화/복호화하기 위한 메모리 키 및 위에서 논의된 바와 같이 메모리(16) 사이에서 영구 저장장치(6)로 이출/이입되는 데이터를 암호화/복호화하기 위한 페이징 키가 제공된다. 그러나, 다른 예들에서, 동일한 키가 두 목적 모두에 사용될 수 있거나, 다른 특정 목적을 위해 추가 키가 제공될 수 있다.
· 영역 디스크립터 트리의 루트(root)를 식별하는 RTETE(realm description tree entry). 영역 디스크립터에서의 RDTE는 루트 RDTG(및 해당 RDTG에 대한 인덱스로 사용할 비트 수를 정의하는 순서 값)에 액세스하기 위한 포인터를 제공한다.
· 영역의 실행과 관련된 아키텍처 상태를 저장하거나 복원하기 위한 기본적인 REC(realm execution context) 메모리 영역에 대한 포인터.
보다 상세히 후술한 것처럼, 상기 영역 디스크립터는, 그 밖의 정보, 이를테면 신뢰 중재자 영역의 식별부호, 상기 영역에 대해 디버깅 또는 이출이 가능하게 되는지를 규정하는 정보, 및 상기 영역의 활성화시에 상기 영역의 파라미터들의 시그니처에 대해 체크하기 위한 예상 시그니처도 포함하여도 된다.
도 10은 주어진 영역이 존재할 수 있는 라이프사이클 상태의 세트를 도시하는데, 이것은 이 예에서는 클린(Clean) 상태, 신규(New) 상태, 활성(Active) 상태 및 무효(Invalid) 상태를 포함한다. 도 10은 각 상태의 속성을 요약하는데, 이것은, 각 상태에 대해, 대응하는 상태의 영역이 그것의 부모 영역에 의해 수정된 영역 디스크립터(166)의 파라미터를 가질 수 있는지 여부, 그 영역에 대해 지정된 암호화 키를 정당하게 사용할 수 있는지 여부, 영역이 모든 메모리 영역(RPG)을 소유할 수 있는지 여부 및 그 영역과 관련된 코드가 실행가능한지 아닌지 여부를 나타낸다. 영역 디스크립터의 파라미터는 클린 상태에서 수정될 수 있지만 다른 상태에서는 수정될 수 없다는 것에 유념한다. 이렇게 하면 악의적인 부모 영역이 주어진 영역의 속성이 활성화된 후에 업데이트되지 않는다. 또한, 영역은 활성 상태에서만 실행 가능한다.
도 11은 영역의 라이프 사이클 상태의 허용된 천이(transitions)를 도시한 상태 머신 다이어그램이다. 도 11 에 도시된 각 상태 천이는 부모 영역이 자식 타겟 영역의 로컬 RID를 지정하는 영역 관리 커맨드를 RMU(20)에 발행함으로써 트리거된다(Realm.Invalidate 커맨드(212)는 또한 타겟 영역 자체에 의해 발행될 수 있다). 그 로컬 RID에 대해 이전 영역이 정의되지 않았고 영역 디스크립터 레지스터 그래뉼 커맨드(200)가 부모 영역에 의해 실행되면, 이것은 부모 영역이 소유한 주어진 메모리 영역의 구성을, 지정된 로컬 RID를 갖는 자식 영역에 대한 영역 디스크립터로서 트리거한다. 자식 영역에 대한 글로벌 RID는 부모 영역의 글로벌 RID와 영역 디스크립터 레지스터 그래뉼 커맨드(200)로 지정된 새로운 로컬 RID의 연결에 근거하여 설정될 수 있다. 그 다음에 지정된 자식 영역은 클린 상태(202)에 진입한다. 클린 상태에서, 부모 영역은 자식 영역의 영역 디스크립터의 다양한 파라미터를 업데이트하여 자식 영역의 속성을 설정할 수 있다. 이들 속성은 부모 영역에 의해 발행된 추가 RMU 커맨드를 사용하여 수정될 수 있다(지정된 자식 영역이 클린 상태가 아닌 경우 이러한 영역 디스크립터 수정 커맨드가 거부될 수 있다). 또한, 신뢰 중재자 영역과 관련된 영역(realm)들에 대해서, 상기 영역 디스크립터 수정 커맨드들은, 수정 중인 파라미터들을 갖는 상기 타겟 영역의 상기 영역 디스크립터에서 식별된 상기 지정된 신뢰 중재자 영역에 의해 발행된 경우에도 접수되어도 된다. 부모 영역이 자식 영역의 영역 디스크립터의 파라미터 설정을 마치면, 그것은 자식 영역의 LRID를 지정하는 영역 초기화 커맨드(204)를 실행하고, 이것은 자식 영역이 클린 상태(202)에서 신규 상태(206)로의 천이를 트리거하고, 이 시점에서 영역 디스크립터의 파라미터는 더 이상 부모 영역에 의해 수정될 수 없다. 지정된 영역이 현재 클린 상태가 아닌 경우 영역 초기화 커맨드(204)는 실패할 것이다.
영역이 신규 상태(206)에 있을 때, 영역의 로컬 RID가 영역의 로컬 RID가 영역이 지금 실행 가능한 신규 상태(206)에서 활성 상태(210)로의 천이를 트리거하는 것을 지정하는 영역 활성화 커맨드(208)의 실행과, 이 시점 이후에 대응하는 영역으로의 영역 진입은 더 이상 오류를 유발하지 않는다. 이제 영역은 완전히 작동한다. 아래에 설명된 것처럼, 일부의 예들에서, 활성화는, 파라미터 시그니처의 체킹에 의존하여도 된다. 클린 상태, 신규 상태 및 활성 상태(202, 206, 210) 중 하나에서 자식 영역에 대한 부모 영역에 의해 트리거된 다음의 영역 무효화 커맨드(212)는 무효 상태(214)로 천이된다. 무효 상태(214)를 떠나 클린 상태(202)로 되돌아가기 위해, 부모 영역은 영역 스크러빙 커맨드(realm scrubbing command)(216)를 실행해야 한다. 영역 스크러빙 커맨드(216)는 영역이 소유한 페이지의 수를 추적하는 리소스 수(resource count)가 0 이외의 값을 갖는 경우 거부된다. 따라서, 영역 스크러빙 커맨드(216)가 성공하기 위해서, 부모 영역은 먼저 무효 영역이 소유한 모든 페이지에 대해 Granule.Reclaim 커맨드를 발행해야 한다. Granule.Reclaim 커맨드는 타겟 메모리 페이지를 지정하고 타겟 페이지의 무효화를 트리거하여 페이지에 액세스할 수 없게 하고, 또한 페이지 소유자 영역의 참조 수(reference count)를 1씩 줄인다. Granule.Reclaim 또는 영역 스크러빙 커맨드(216)를 실행할 때 무효 영역 내의 데이터를 실제로 덮어쓸 필요는 없는데, 왜냐하면 메모리 페이지를 무효로부터 유효로 천이하기 위해 클린 커맨드가 발행될 때 덮어쓰기가 나중에 수행될 수 있기 때문이다(후술하는 도 15 참조). 또한, 영역 스크러빙 커맨드에 응답하여, 무효화된 영역과 관련된 어떤 캐시된 데이터는, 예를 들어 (RMU 커맨드를 실행하는 처리 요소만이 아니라) 처리 요소 8, 10, 12 중 어느 하나의 TLB(100) 또는 캐시(110) 내에서 무효화될 수도 있다. 글로벌 RID는 캐시된 데이터의 무효화를 트리거하는 데 사용될 수 있다.
따라서, 주어진 영역 식별자와 관련된 영역의 관리된 라이프사이클을 제공함으로써, 이것은 영역이 그것의 파라미터를 수정할 수 있는 클린 상태로 되돌아가기 전에 (따라서 상이한 영역에 의해 사용을 위해 주어진 영역 식별자가 재활용될 수 있기 전에), 동일한 영역 식별자를 사용한 이전 영역과 관련된 데이터가, 동일한 영역 식별자의 재사용을 통해 오래된 영역과 관련된 어떤 데이터가 다른 영역으로 유출(leaked)되지 않도록, 메모리 및 어떤 캐시로부터 스크럽(scrubbed)되어야 한다는 것을 보장한다. 영역이 클린 상태(202)에 있을 때, 영역 디스크립터에 저장된 메모리 영역이 다른 목적을 위해 할당될 수 있게 하는 영역 디스크립터 해제 커맨드(218)를 실행함으로써 그 영역 디스크립터가 또한 취소될 수 있다(이 시점에서는 영역이 이미 깨끗하기 때문에 스크러빙이 요구되지 않는다).
도 12는 영역 그래뉼 테이블(128)(또는 소유권 테이블)의 엔트리 내용의 예를 도시한다. 각 엔트리는 메모리 어드레스 공간의 주어진 메모리 영역에 대응한다. 주어진 메모리 영역의 크기는 구현에 따라 고정되거나 가변적일 수 있다. 소유권 테이블(128)이 구성되는 특정한 방식은 구현 요구사항에 따라 크게 달라질 수 있고, 따라서 주어진 엔트리에 대한 대응하는 메모리 영역이 식별되는 특정한 방식은 변할 수 있다(예를 들어, 데이터는 대응하는 영역을 식별하는 각 엔트리에 저장될 수 있고, 또는 대안적으로 대응하는 엔트리는 테이블 자체 내의 대응하는 소유권 엔트리의 위치에 근거하여 적어도 부분적으로 식별될 수 있다). 다시, 도 12는 주어진 메모리 영역에 대해 지정될 수 있는 파라미터의 특정 예를 도시하지만, 다른 예는 더 많은 정보를 제공하거나 도시된 일부 유형의 정보를 생략할 수 있다.
도 12에 도시된 바와 같이, 각 소유권 테이블 엔트리는 대응하는 메모리 영역에 대해, 다음을 지정할 수 있다:
· 그 메모리 영역에 대한 소유자 영역을 식별하는 글로벌 RID. 소유자 영역은 어떤 다른 영역이 메모리 영역에 액세스할 수 있는지를 제어하는 속성을 설정할 권한가 있는 영역일 수 있다.
· 어느 RMU 커맨드가 메모리 영역에서 수행될 수 있는지를 제어하는 데 사용되는 해당 메모리 영역의 라이프사이클 상태.
· 메모리 영역이 소유자 영역에 의해 소유된 시점에서 MMU(26)에 의해 메모리 영역이 매핑되는 매핑된 어드레스. 매핑된 어드레스는 가상 어드레스 또는 중간 물리적 어드레스일 수 있다. 소유권 테이블에서 이 어드레스를 지정함으로써, 이것은 영역이 주어진 메모리 영역의 소유권을 취한 후 어드레스 변환 테이블을 다시 매핑하여 영역 인프라스트럭처에 의해 제공된 보안을 피하려는 잠재적 시도에 대해 경계할 수 있다.
· 소유자 외에 어느 영역이 메모리 영역에 액세스할 수 있지를 지정하는 가시성 속성. 예를 들어, 도 13에 도시된 것처럼, 가시성 속성은 현재 영역의 부모 영역이 영역에 액세스할 수 있는지 아닌지 여부를 제어하는 부모 가시성 비트, 및 어떤 영역이 대응하는 메모리 영역에 액세스할 수 있는지 여부를 지정할 수 있는 글로벌 가시성 비트를 지정할 수 있다. 일반적으로, 영역 보호 스킴은 현재 영역의 자손 영역이 항상 부모 또는 조상 영역에 의해 소유된 메모리 영역에 액세스할 수 있다고 가정할 수 있지만(특권 레벨에 근거한 보호를 제공하는 변환 테이블(120)에 근거하여 액세스가 허용되는지 아닌지의 여부에 따라), 주어진 영역은 부모 또는 주어진 영역의 직접적인 자손이 아닌 어떤 다른 영역이 메모리 영역에 액세스할 수 있는지 여부를 제어할 수 있다. 일부 실시 예들에서, 부모 및 글로벌 가시성 비트들 모두는 소유자 영역 자체에 의해 설정될 수 있다. 대안적으로, 부모 가시성 비트는 소유자 영역에 의해 설정될 수 있지만, 글로벌 가시성 비트는 소유자 영역의 부모 영역에 의해 설정될 수 있다(메모리 영역에 대한 부모 가시성 비트가 그 메모리 영역의 부모 가시성을 제공하기 위해 이미 설정되어 있는 경우). 이것은 소유자 영역이 어떤 다른 프로세스가 자신의 데이터에 액세스할 수 있는지를 제어할 수 있는 방법에 대한 한 가지 예일뿐이라는 것이 이해될 것이다.
도 14는 주어진 메모리 영역이 존재할 수 있는 상이한 라이프사이클 상태를 도시한 표이고, 도 15는 각 라이프사이클 상태 사이의 천이를 트리거하는 커맨드를 나타내는 상태 머신이다. 도 11에 도시된 영역 라이프사이클 상태와 유사한 방식으로, 메모리 영역 라이프사이클 상태 간 천이는 한 영역의 소유권에서 다른 영역의 소유권으로 전달되는 메모리 영역이 먼저 그 영역 내의 데이터가 스크럽(scrubbed)되는 (예를 들면, 0으로 설정되는) 무효화 프로세스를 거쳐야 함을 보장하기 위해 관리된다. 따라서, 소프트웨어가 메모리 영역에 액세스할 수 있는 무효 상태(220)에서 유효 상태(222)로 천이하기 위해서는, 처리 요소(8)상에서 실행되는 소프트웨어에 의해 트리거되는, 클린 커맨드(224)가 RMU(20)에 의해 실행되어야 한다. 클린 커맨드(224)는 특정 메모리 영역(페이지)을 식별하고 그 메모리 영역 내의 각 위치에서 데이터를 무효화/제로에 맞추기 위해 대응하는 메모리 영역의 메모리 어드레스 사이를 이동(step through)하도록 RMU를 제어한다. 타겟 메모리 영역이 무효 이외의 어떤 상태에 있으면 클린 커맨드가 거부된다(예를 들어 오류가 유발됨).
일부 시스템에서는, 유일한 메모리 영역 라이프사이클 상태로서 유효 및 무효 상태(222, 220)를 제공하는 것으로 충분할 수 있다. 그러나, 도 15의 예에서, 주어진 메모리 영역은 또한 RMU(20) 자체에 의해 독점 액세스를 위해 예약된 'RMU- 프라이빗' 메모리 영역으로서 지정될 수 있으며, 따라서, 처리 회로(32)상에서 실행되는 소프트웨어(어떤 RMU 소프트웨어 이외)에 의해 트리거되는 RMU-프라이빗 메모리 영역에 대한 액세스는 거부될 것이다. 이것은 전술한 바와 같이 영역 디스크립터, 영역 디스크립터 트리 엔트리, 영역 실행 컨텍스트 및 페이징을 위한 메타 데이터와 같은 영역 관리 데이터를 저장하는데 특히 유용할 수 있다. 주어진 메모리 영역을 RMU에 의해 독점 액세스를 위해 예약된 RMU-프라이빗 메모리 영역으로서 지정하기 위한 속성을 제공함으로써, 이것은 메모리 영역 자체의 소유자 프로세스를 포함하는 소프트웨어 프로세스가, 영역 관리 데이터에 액세스할 수 없도록 하는데, 이 영역 관리 데이터는 다른 방법으로 소프트웨어 프로세스가 영역 스킴에 의해 제공된 보안 보호(security protections)를 피하도록 허용할 수 있다.
따라서, 클린 커맨드(224)는, 그 파라미터 중의 하나로서, 이것이 일반적인 클린 커맨드인지 프라이빗 클린 커맨드인지를 명시하는 프라이버시 표시를 지정할 수 있다. 대안적으로, 이들 목적을 위해 2개의 완전히 별개의 커맨드가 제공될 수 있다. 클린 커맨드가 일반적인 클린 커맨드인 경우, 이것은 위에서 설명한 대로 유효 상태(222)로의 천이를 유발한다. 그러나, 클린 커맨드가 프라이빗 클린 커맨드(224)일 경우에는, 이것은 메모리 영역이 RMU-프라이빗 메모리 영역으로서 지정된, RMUClean 상태(226)로의 천이를 유발한다. 일부 예들에서, 모든 유형의 RMU 데이터는 RMUClean 상태에 대응하는 단일 유형의 RMU-프라이빗 메모리 영역 내에 저장될 수 있다.
그러나, 특정 형태의 영역 관리 데이터에 각각 대응하는, 여러 유형의 RMU 프라이빗 메모리 영역을 지정하여 강건성(robustness)을 향상시킬 수 있다. 예를 들어, 도 14 및 15에서, 특정 목적을 위해 지정되는 RMU 프라이빗 영역에 각각 대응하는 다수의 RMURegistered 상태(228)가 정의된다. 이 예에서, RMURegistered 상태(228)는 (영역 디스크립터 트리의 RDTG를 저장하기 위한) RMURegisteredRDT, (영역 디스크립터를 저장하기 위한) RMURegisteredRD, (영역 실행 컨텍스트 데이터를 저장하기 위한) RMURegisteredREC 및 (위에서 설명한 것과 같이 이출/이입 동작 중에 사용된 페이징 메타데이터를 저장하기 위한) RMURegisteredMDT를 포함한다. RMUClean 상태의 메모리 영역에 대해 RMU에 의해 상이한 형태의 등록 커맨드(230)가 실행될 수 있어, 메모리 영역을 RMURegistered 상태(228) 중 대응하는 하나의 상태로 천이시킨다. 지정된 목적에 대응하지 않는 RMU-프라이빗 메모리 영역에 데이터를 저장하기 위한 커맨드(RDT, RD, REC 또는 MDT)가 거부될 수 있다. 따라서, RMURegistered 상태의 제1 라이프사이클 상태에서, 제1 유형의 영역 관리 데이터를 저장하기 위한 제1 유형의 RMU 커맨드가 허용될 수 있고, 제2 라이프사이클 상태에서 제2 유형의 영역 관리 데이터를 저장하기 위한 제2 유형의 RMU 커맨드가 허용될 수 있으며, 타겟 메모리 영역이 제2 라이프 사이클 상태에 있을 때 제1 RMU 커맨드가 거부되고 타겟 메모리 영역이 제1 라이프사이클 상태에 있을 때 제2 RMU 커맨드가 거부된다. 이것은 자식 영역의 동작을 방해하려고 시도하기 위해 예를 들어 영역 디스크립터 엔트리를 영역 실행 컨텍스트 영역에 저장하거나 그 반대로 저장하려고 시도하는 악의적인 부모 영역을 피함으로써 보안을 더 강화할 수 있다. 각각의 RMU 레지스터 상태(228)로부터, 대응하는 형태의 해제 커맨드(232)는 대응하는 메모리 영역을 무효 상태(220)로 복귀시킬 수 있다. 추가의 클린 커맨드는, 영역이 범용 데이터를 위해 재할당될 수 있기 전에 미리 정의된 RMU-프라이빗 영역으로부터 데이터의 스크러빙을 유발할 수 있다.
따라서, 요약하면, 주어진 소유자 영역이 여전히 소유하지만, 소유권 테이블에 지정된 속성을 갖는 적어도 하나의 RMU-프라이빗 메모리 영역이 정의될 수 있으며, 이는 RMU에 의한 독점적인 액세스를 위해 예약되어 있음을 의미한다. 이 예에서 RMU-프라이빗 상태를 제어하는 속성은 소유권 테이블에서의 대응하는 엔트리에 지정된 라이프사이클 상태이지만, 다른 방법으로도 식별될 수 있다. MMU는 주어진 메모리 영역이 적어도 하나의 상태 속성에 의해 RMU 프라이빗 메모리 영역으로 지정될 때 하나 이상의 소프트웨어 프로세스에 의해 주어진 메모리 영역에의 액세스를 방지할 수 있다. 따라서 RMU 자체에 의해 트리거되지 않은 소프트웨어 트리거 액세스(software-triggered access)는 RMU-프라이빗 메모리 영역을 대상으로 할 때 거부될 수 있다. 이것은 소유자 영역 자체에 의해 RMU-프라이빗 메모리 영역에 대한 액세스를 방지하는 것을 포함한다.
소유자 영역이 메모리 영역의 데이터에 액세스할 수 없는 경우 RMU-프라이빗 메모리 영역에 대한 소유자 영역을 정의하는 것이 왜 유용한지 의문이 있을 수 있다. 예를 들어, RMU만으로 데이터에 대한 액세스를 시행하기 위한 대안적인 접근법은 RMU에 대한 특수 영역을 정의하고, 그 특수 RMU 소유자 영역에 비공개로 유지할 데이터를 저장하기 위한 메모리 어드레스 공간의 페이지를 할당하는 것이다. 그러나, 본 발명자들은 영역을 무효화할 때, 그 영역과 관련된 모든 제어 데이터를 무효화해야 할 필요가 있을 수 있으며, 이 제어 데이터가 무효화된 영역이 아닌 특수 RMU 소유자 영역과 관련된 경우, 이것이 무효화된 영역의 데이터의 스크러빙을 더 복잡하게 만들 수 있다는 것을 인식했다.
반대로, RMU-프라이빗 속성을 사용함으로써, 소유자가 그것에 액세스할 수 없는 경우에도, 주어진 영역에 대한 제어 데이터를 저장하는 메모리 영역이 그 영역에 의해 여전히 소유되는데, 이는 그 소유자 영역이 취소될 때 어느 메모리 영역이 무효화될 필요가 있는지를 식별하는 것이 더 간단하다는 것을 의미한다. 주어진 영역이 무효화될 때, 무효화되고, 액세스할 수 없게 되며, 리클레임 커맨드(reclaim command)를 트리거한 부모 영역의 소유권으로 되돌아가도록 지정된 무효화된 영역(또는 그 자손)이 소유했던 메모리 영역을 트리거하는 일련의 리클레임 동작을, 부모 영역이 간단히 (예를 들어, RMU에 의해 수행되는 리클레임 커맨드를 실행함으로써) 수행할 수 있다. 리클레임 동작은 무효화된 영역에 액세스할 수 있는 페이지에 영향을 줄뿐만 아니라 무효화된 영역이 소유한 RMU-프라이빗 메모리 영역도 포함한다.
그 영역이 소유한 RMU-프라이빗 메모리 영역에 대한 제어 데이터를 저장하는 또 다른 이점은 이출 동작을 수행할 때이다. 이출 동작 중에, Realm의 메모리 풋프린트(footprint)를 0으로 줄이기 위해, 일반 메모리 외에 그 Realm과 관련된 관리 구조를 이출할 수 있다. Realm이 이러한 구조를 소유하도록 요구하면 이 이출 동작의 관리가 간단해진다.
일반적으로 모든 종류의 영역 관리 데이터는 RMU-프라이빗 영역에 저장될 수 있지만, 특히 영역 관리 데이터는, 주어진 영역의 속성을 정의하는 영역 디스크립터, 주어진 영역 또는 추가의 영역 디스크립터 트리 엔트리에 대한 영역 디스크립터를 저장하는 메모리 영역을 식별하는 영역 디스크립터 트리 엔트리, 주어진 영역 내의 적어도 하나의 실행 스레드와 관련된 구조적 상태를 나타내는 영역 실행 컨텍스트 데이터, 및 주어진 영역과 관련된 소정의 동작의 중간 지점에서 사용된 임시 작업 데이터 중 어느 하나를 포함할 수 있다.
일반적으로 RMU 프라이빗 영역은 주어진 영역과 관련된 특정 영역 제어 데이터를 저장하는 데 사용될 수 있지만, 영역이 활성화되면 수행되는 특정 다른 동작에 대한 보안을 증가시키기 위해 사용될 수도 있다. 예를 들어, 데이터가 암호화 또는 해독되는 위에서 설명한 페이징 이출 또는 이입 동작을 수행할 때, 그리고 메타 데이터를 사용한 검사를 수행하여 데이터를 다시 이입할 때 데이터가 여전히 유효한지 검사하면, 이러한 동작에서는 많은 사이클이 소요될 수 있고 이러한 장기 실행 동작은 도중에 중단될 가능성이 높다. 동작을 처음부터 다시 시작할 필요가 없도록 하기 위해, 메타 데이터 또는 이러한 장기 실행 동작과 관련된 다른 임시 작업 데이터가, 그러한 데이터가 (소유자 영역 자체를 포함하는) 다른 프로세스에 액세스할 수 없게 하고, 중단된 경우에도 캐시/메모리 내에 보유되도록 하는 것이 바람직할 수 있다. 메모리 시스템의 영역을 RMU-프라이빗 영역으로서 임시 지정함으로써, 이 임시 작업 데이터를 보호할 수 있다. 따라서, 도 14에 도시된 바와 같이, 페이지 상태는 또한 이 임시 작업 데이터가 메모리 영역에 저장될 때 사용될 수 있는 RMUExporting 및 RMUImporting 상태를 포함할 수 있고, 이들 상태 중 하나가 선택되면 RMU만이 그 데이터에 액세스할 수 있다.
대응하는 메모리 영역을 RMU 프라이빗으로서 일시적으로 지정하는 것으로부터 이익을 얻을 수 있는 동작들의 다른 예는, 주어진 영역에 의해 소유된 적어도 하나의 메모리 영역과 주어진 영역 이외의 영역에 의해 소유된 적어도 하나의 메모리 영역 사이에서 데이터를 전송하는 중에 암호화 또는 복호화된 데이터의 생성 또는 검증; 메모리 영역의 소유권을 또 다른 영역으로 전송; 및 무효화된 메모리 영역에 저장된 데이터를 액세스 불가능하게 하기 위해 수행되는 파괴적 리클레임 동작을 포함한다. 예를 들어, 어드레스 공간의 주어진 페이지의 모든 내용을 스크러빙하기 위한 리클레임 동작이 도중에 중단될 수 있고 그래서 스크러빙이 완료될 때까지 다른 프로세스가 그 페이지에 액세스할 수 없도록 하기 위해, 페이지를 일시적으로 RMU-프라이빗으로서 지정할 수 있다. 일반적으로 RMU가 수행하는 긴 레이턴시 동작은 긴 실행 동작을 시작하기 전에 일부 메모리 영역의 라이프사이클 상태를 RMU-프라이빗 상태로 변환한 다음에 긴 실행 동작이 완료할 때 다시 변환하여 임시 작업 데이터를 보호함으로써 이점을 얻을 수 있다.
영역이 RMU 프라이빗으로서 지정되면 RMU(20)에 의한 액세스가 영역 관리 동작을 수행하는 데 사용되도록 예약되어 있다. 영역 관리 동작은 새로운 영역을 생성하는 것; 기존 영역의 속성을 업데이트하는 것; 영역을 무효화하는 것; 주어진 영역에 의해 소유권에 대한 메모리 영역을 할당하는 것; 주어진 메모리 영역에 대한 소유자 영역을 변경하는 것; 주어진 메모리 영역의 상태를 변경하는 것; 주어진 메모리 영역에 대한 소유자 영역에 의해 트리거된 커맨드에 응답하여 주어진 메모리 영역에 대한 액세스를 제어하기 위한 액세스 제어 정보를 업데이트하는 것; 하나 이상의 소프트웨어 프로세스를 처리하는 중에 영역들 간의 천이를 관리하는 것; 주어진 영역이 소유한 메모리 영역과 주어진 영역과 상이한 영역이 소유한 메모리 영역 사이에서 주어진 영역과 관련된 데이터의 전송을 관리하는 것; 및 주어진 영역과 관련된 데이터의 암호화 또는 복호화 중 적어도 하나를 포함할 수 있다. RMU는 영역 관리 동작의 적어도 한 부분을 수행하기 위한 하드웨어 유닛일 수 있거나, 영역 관리 동작의 적어도 한 부분을 수행하기 위해 영역 관리 소프트웨어를 실행하는 처리 회로(32)를 포함할 수 있거나, 또는 이들의 조합일 수 있다.
도 15는 주어진 영역에 의해 트리거되어 주어진 페이지를 깨끗게 함으로써 유효하게 액세스할 수 있거나, 대응하는 페이지를 무효화할 수 있는 상태 천이를 도시한다. 도 16은 이를 확장하여 주어진 페이지의 소유권을 한 영역에서 다른 영역으로 전하는 데 사용할 수 있는 추가 커맨드를 도시한다. 부모 영역에 의한 영역 클레임 커맨드(region claim command)(230)의 실행은 해당 메모리 영역이 현재 무효 상태(220)에 있고 부모 영역에 의해 소유되는 경우 대응하는 메모리 영역이 지정된 자식 영역으로 전송될 수 있게 한다. 영역 클레임 커맨드(230)는, 타겟 메모리 영역이 주어진 자식 영역의 부모 영역 이외의 어떤 영역에 의해 소유될 때, 또는 메모리 영역이 유효하거나 RMU-프라이빗 라이프사이클 상태(226, 228) 중 하나인 경우 거부된다. 이것은 RMU(20)가 자체적으로 액세스할 수 없거나 사용중인 페이지의 소유권을 부모 영역이 임의로 할당하지 못하게 한다. 페이지가 자식 영역에 할당되면, 그 자식 영역은 도 15에 도시된 것과 같은 방법으로 유효 상태(222)로 천이하기 위해 클린 커맨드를 수행할 수 있다. 간결성을 위해, RMU-프라이빗 영역의 사용은 도 16에 도시되어 있지 않지만, 어떤 주어진 영역 내에서 프라이빗 클린 커맨드는 대안적으로 전술한 바와 같이 메모리 영역을 RMU 클린 상태(226)로 천이시킬 수 있다.
그래뉼 클레임 커맨드(230)는 소유권을 이미 설정된 자식 영역으로 전하는데 사용된다. 또한, 부모 영역은, 부모 영역이 자식에 할당된 영역에 데이터를 기록할 수 있도록 RMU(20)를 트리거하여 소유권을 신규 상태의 새로운 자식 영역에 할당하는 그래뉼 부가 커맨드(granule add command)(232)를 실행할 수 있다. 예를 들어, 이것은 자식 영역을 처음 실행할 수 있도록 새로운 자식 영역의 프로그램 코드를 설치하는 데 사용될 수 있다. 따라서, 부가 커맨드(232)는, 대응하는 메모리 영역이 자식 영역에 할당되는 라이프사이클 상태의 관점에서 클레임 커맨드(230)와는 상이하다. 부가 커맨드(232)는 자식 영역이 도 11에 도시된 신규 상태(206)에 있을 때만 허용될 수 있다. 자식 영역은, RMU를 트리거하여 자식 영역 등의 영역 디스크립터에서 리소스 수와 같은 속성을 업데이트할 뿐만 아니라 소유권 테이블(128)의 대응하는 엔트리를 업데이트하는, 그래뉼 해제 커맨드(234)를 실행함으로써 주어진 메모리 영역의 소유권을 그 부모에게 다시 풀어 줄 수 있다. 지정된 메모리 영역이 커맨드를 발행한 현재 영역에 의해 소유되지 않으면, 또는 영역이 무효 이외의 상태인 경우 그래뉼 해제 커맨드(234)가 거부될 수 있다(데이터의 파괴적인 클리닝을 보장하는 것은, 부모 영역에 의한 소유권으로 되돌릴 수 있기 전에 필요하다).
부모 영역이 자식 영역을 초기화하는, 위에서 설명한 계층적 영역 구조를 사용하는 하나의 이점은, 영역과 그 자손의 무효화를 크게 단순화한다는 것이다. 주어진 가상 머신 영역이 무효화되는 경우, 그 가상 머신 아래에서 실행되는 모든 애플리케이션에 대한 영역을 무효화하는 것이 바람직할 수도 있다. 그러나, 무효화될 각 프로세스와 관련된 상당한 양의 프로그램 코드, 데이터 및 다른 제어 정보가 있을 수 있다. 그러한 무효화가 극히 작게(atomically) 발생하는 것을 보장하는 것이 바람직하므로, 데이터 스크러빙의 일부만이 수행되었을 때 무효화된 영역과 관련된 데이터에 계속 액세스하는 것이 불가능할 수 있다. 각 영역이, 위에서 설명한 바와 같이 영역 계층구조 없이, 다른 영역과 완전히 독립적으로 설정된 경우, 이것은, 대응하는 영역 ID로 식별된 각 영역을 개별적으로 무효화하기 위해 여러 개의 개별 커맨드를 제공해야 할 수 있으므로 이러한 극소의 무효화(atomic invalidation)를 어렵게 만들 수 있다.
반대로, 루트 영역 이외의 각 영역이 부모 영역에 의해 트리거된 커맨드에 응답하여 초기화된 자식 영역이 되도록 MU가 영역을 관리하는 영역 계층 구조를 제공함으로써, 타겟 영역의 무효화를 요청하는 커맨드가 수신되면, RMU(20)는 보다 효율적인 동작으로, 타겟 영역 및 타겟 영역의 임의의 자손 영역을 처리 회로에 액세스할 수 없게 할 수 있다.
특히, 타겟 영역의 무효화에 응답하여, RMU는 타겟 영역이 유효하지 않다는 것을 나타내기 위해 타겟 영역과 관련된 영역 관리 데이터(예를 들어, 영역 디스크립터)를 업데이트할 수 있지만, 타겟 영역의 임의의 자손 영역과 관련된 임의의 영역 관리 데이터를 업데이트할 필요는 없다. 자손 영역과 관련된 영역 관리 데이터는 변경되지 않은 상태로 유지될 수 있다. 왜냐하면 단순히 타겟 영역을 무효화하면 영역 관리 데이터가 변경되지 않았음에도 불구하고 자손 영역이 효과적으로 액세스할 수 없게 될 수 있기 때문이고, 주어진 영역에 대한 액세스가 그 부모를 통해 제어되므로, 부모 영역이 무효화된 경우에 이것은 부모 영역의 자손에 액세스할 수 없다는 것을 의미한다. 각 영역은 부모 영역에 의해 정의된 로컬 RID를 사용하여 그것의 특정 자식을 식별하는 영역 진입 명령(아래에 설명된 ERET 명령)을 사용하여 입력되고, 이것은 주어진 자식 영역의 부모 영역이 소유한 메모리 영역에 저장되는 영역 디스크립터 사이를 이동하는 데 사용되므로, 부모 영역 이외의 어떤 프로세스도 RMU를 트리거하여 자식 영역의 영역 관리 데이터에 액세스할 수 없다. 따라서, 부모 영역이 무효화된 경우, RMU는 지정된 자식 영역의 영역 관리 데이터에 액세스할 수 없으므로, 지정된 자식 영역에 액세스할 수 없게 된다.
영역이 무효화된 후, 그 영역의 부모 영역은 무효화된 타겟 영역이 소유한 각 메모리 영역을 리클레임하기 위한 리클레임 동작을 수행하도록 RMU를 트리거할 수 있다. 예를 들어, 도 16에 도시된 바와 같이, 자식 영역에 의해 소유된 메모리 영역에 대한 리클레임 커맨드(236)는 메모리 영역의 무효 상태(220)로의 복귀를 트리거하고 또한 메모리 영역의 소유권을 부모 영역으로 다시 전송할 수 있다. 그러나, 이 리클레임 동작은 다른 영역의 진행중인 처리의 배경에서 수행될 수 있으며, 무효화된 영역의 임의의 자손 영역이 액세스 불가능하게 되도록 하기 위해 즉시 수행될 필요는 없다. 도 11에 도시된 바와 같이 주어진 영역의 리클레임 상태를 활성에서 무효로 변경하는 단일 동작은 그 무효화된 영역의 임의의 자손 영역과 관련된 모든 데이터도 액세스할 수 없도록 하기에 충분하다. 어떤 부모 영역은 자신이 소유한 페이지를 그 자식에게만 할당할 수 있고, 그 자식은 자신이 소유한 페이지를 손자 영역에게만 할당할 수 있기 때문에, 이것은 또한 주어진 영역의 무효화시 어느 페이지가 무효화 및 리클레임되어야 하는지를 추적하는 것이, 무효화된 영역의 영역 디스크립터(도 16 참조)에 정의된 보호된 어드레스 범위를 사용하여 리클레임할 페이지를 식별할 수 있기 때문에, 무효화된 영역의 추가 자손 영역도 그 범위 내의 페이지들을 소유할 것이기 때문에, 상대적으로 간단하다는 것을 의미한다.
따라서, 요약하면 영역 계층구조를 사용하면 영역 및 무효화의 관리가 크게 간소화된다. 이러한 무효화시 및 메모리 내의 데이터 덮어쓰기 시, 무효화는 또한 타겟 영역에 대한 캐시된 영역 관리 데이터의 무효화를 트리거할 수 있고, 타겟 영역의 임의의 자손 영역은 무효화를 트리거 한 처리 요소(8)에서뿐만 아니라 또 다른 CPU 또는 GPU와 같은 다른 처리 요소에서도 유지된다. 따라서 다른 처리 요소가 무효화된 영역에 계속 액세스하지 않도록 하기 위해, 다른 처리 요소에 대한 무효화의 브로드캐스트(broadcast)가 있을 수 있다. 그러한 무효화를 트리거할 때, 캐시된 영역 관리 데이터가 대응하는 영역을 고유하게 식별하는 글로벌 영역 식별자와 연관되고, 주어진 자식 영역의 글로벌 RID가 그 부모 영역의 글로벌 RID와 공통 접두사 부분을 공유하도록 상기 논의된 바와 같이 글로벌 영역 식별자를 형성하는 것이 유용할 수 있다. 이를 통해 비트 마스킹(bit masking) 또는 기타 유사한 동작을 사용하여 주어진 영역이 지정된 영역 ID의 자손인지 신속하게 비교할 수 있다. 조상 영역의 무효화를 통해 주어진 영역에 액세스할 수 없는 경우, 지정된 타겟 영역을 입력하려는 시도는 불가능하지만(그 영역에 대한 ERET 명령을 실행할 부모 영역이 없기 때문에), 상이한 영역 진입 메커니즘을 사용하는 다른 구현에서도, 자손 영역의 영역 디스크립터를 더 이상 찾을 수 없으면 영역 진입이 실패하여 결함 조건을 트리거할 수 있다.
도 17a는 주어진 메모리 액세스가 허용되는지를 결정하기 위해 MMU(26) 및 RMU(20)에 의해 수행된 검사의 예를 도시한다. MMU(26)는 스테이지 2의 어드레스 변환을 지원하는데, 스테이지 1은 주어진 게스트 운영 체제에 의해 설정되는 스테이지 1 페이지 테이블(120-1)의 제어 하에 가상 어드레스(VA)를 IPA(intermediate physical address)로 변환하고, 스테이지 2 어드레스 변환은 하이퍼바이저(38)에 의해 설정되는 스테이지 2 페이지 테이블(120-2)에 근거하여 메모리(16)에 액세스하는데 사용되는 물리적 어드레스(PA)로 스테이지 1 변환에 의해 제공된 중간 물리적 어드레스를 변환한다. 하이퍼바이저는 상이한 가상 머신에 대해 여러 세트의 스테이지 2 페이지 테이블을 정의할 수 있고, 메모리 액세스 요청과 함께 제공된 가상 머신 ID(VMID)(250)는 어떤 특정 스테이지 2 페이지 테이블들을 사용할지를 식별할 수 있다. 유사하게, 운영 체제는 상이한 애플리케이션들에 대해 다수의 세트의 스테이지 1 페이지 테이블 세트를 정의할 수 있고 어드레스 공간 식별자(ASID)(252)는 어느 스테이지 1 페이지 테이블을 사용할지를 식별하는데 사용될 수 있다. VMID 및 ASID(250, 252)는 집합적으로 메모리 액세스 요청과 관련된 현재 변환 컨텍스트를 식별하는 변환 컨텍스트 식별자(254)로 지칭될 수 있다. 메모리 액세스 요청은 또한 트랜잭션이 읽기(R) 또는 쓰기(W) 요청인지를 나타내는 속성 또는 메모리 액세스 요청을 발행한 프로세스와 관련된 예외 레벨(X)을 나타내는 속성과 같은, 다양한 속성(256)을 지정한다.
메모리 액세스를 수신하면, MMU(26)는 스테이지 1 페이지 테이블로부터의 정보에 근거하여 트랜잭션 속성이 유효한지 여부를 판정할 수 있다. 예를 들어, 스테이지 1 페이지 테이블은 특정 어드레스에 대해 읽기 트랜잭션만 허용하거나, 주어진 어드레스에 대한 읽기 및 쓰기 액세스 둘 다를 허용하도록 지정할 수 있다(일부 구현들은 또한 어드레스 공간의 쓰기 영역들만이 정의되도록 허용할 수 있다). 또한, 스테이지 1 페이지 테이블의 속성은 지정된 예외 레벨 이상에서 동작하는 프로세스에 대한 액세스를 제한할 수 있다. 트랜잭션 속성이 유효하고 스테이지 1 페이지 테이블에 의해 액세스가 허용되는 경우, MMU는 대응하는 중간 물리 어드레스(IPA)를 리턴할 수 있다. 그런 다음 VMID(250)와 함께 IPA는 트랜잭션의 속성을 다시 입증하는 스테이지 2 페이지 테이블로 인덱싱하고, 유효한 경우 물리적 어드레스를 리턴한다. 모든 트랜잭션이 2 스테이지의 어드레스 변환을 밟을 필요는 없다는 것에 유념한다. 예를 들어, 입력 메모리 트랜잭션이 보안 도메인에서 EL3 또는 EL2에서 또는 EL1 또는 EL0에서 발행된 경우, 스테이지 1 MMU의 출력은 물리적 어드레스로서 취급될 수 있고 스테이지 2 MMU는 우회될 수 있다.
물리적 어드레스를 취득한 후, 물리적 어드레스는 RMU 테이블(128)(Realm Granule Table)에서 조회되어 MMU에 의해 시행되는 영역 보호가 메모리 액세스를 진행할 수 있는지를 판정할 수 있다. 영역 검사는 아래의 도 18에서 자세히 설명한다. 스테이지 3에서의 RMU 검사가 성공하면, 입증된 물리적 어드레스가 출력되고 메모리 액세스가 진행하도록 허용된다. 스테이지 1 또는 스테이지 2 어드레스 변환에서의 검사 또는 스테이지 3에서 제공된 RMU 강제 영역 보호가 실패하면, 메모리 액세스가 거부된다. 따라서, 영역 관리 유닛에 의해 제공된 보호는, 페이지 테이블(120)에 근거한 임의의 기존 어드레스 변환 검사에 추가하여, 수행될 부가적인 검사 계층으로서 보일 수 있다. 도 17a에 도시된 검사들은 메모리 액세스 요청의 파라미터 또는 액세스가 이루어진 현재 변환 컨텍스트 또는 영역의 파라미터와 비교되고 액세스될 필요가 있는 다수의 테이블이 메모리에 있을 수 있기 때문에 수행하는데 비교적 느릴 수 있다. 모든 메모리 액세스에 대해 이러한 검사를 수행하는 것이 가능하지만, 주어진 메모리 액세스 요청에 대해 검사가 성공적으로 수행되면 TLB(100) 내에 데이터를 캐시하는 것이 더 빠를 수 있어 다음에 유사한 메모리 액세스 요청이 발행될 때 모든 검사를 다시 반복하지 않고 허용될 수 있다. 따라서, TLB(100)에 미스(miss)가 있고 히트(hit)가 아닌 경우에만 이러한 허가 검사를 수행하는 것이 바람직할 수 있다.
도 17b는 이미 입증된 메모리 액세스와 관련된 데이터를 캐싱하기 위한 TLB 구조(100)의 예를 도시한다. 도 17b는 단일 TLB를 도시하지만, 일부 시스템은 캐시 계층구조에서 다수의 레벨의 TLB를 포함할 수 있으며, 레벨 1 TLB가 더 빠른 액세스를 위해 더 작은 변환 엔트리 서브세트를 저장하고 레벨 2 또는 추가 레벨 TLB가 레벨 1 TLB에서 미스(miss)가 있으면 액세스될 수 있는 더 큰 변환 엔트리 세트를 저장하는 것으로 이해될 것이다. TLB(100)(또는 "변환 캐시")는 다수의 엔트리(260)를 가지며, 각 엔트리는 대응하는 메모리 영역에 대한 어드레스 변환 데이터를 지정한다. 각 엔트리(260)는 데이터가 대응하는 물리적 어드레스(264)를 제공하는 가상 어드레스에 대응하는 가상 어드레스된 태그(262)를 포함한다. 이 예에서는, TLB는 가상 어드레스가 중간 물리적 어드레스를 통하지 않고 TLB를 사용하여 직접적으로 물리적 어드레스로 변환될 수 있도록 결합된 스테이지 1 및 스테이지 2 TLB이다(대응하는 스테이지 1 및 2 변환은 정확한 물리적 어드레스를 찾기 위해 TLB 미스에 대해 수행되지만, TLB는 개입 IPA를 저장할 필요가 없고 VA를 OA에 직접 매핑할 수 있다). 다른 예들은 스플릿(split) 스테이지 1(S1) 및 스테이지 2(S2) TLB를 사용할 수 있으며, 이 경우 VA-PA 쌍(262, 264)은 VA-IPA 쌍 또는 IPA-PA 쌍으로 대체될 수 있다. TLB 엔트리들(260)은 또한 변환 컨텍스트 식별자(254)(ASID(252) 및 VMID(250)로 형성됨)로 태그된다. 이 예는 두 개의 개별 변환 컨텍스트 식별자를 제공하지만, 다른 예에서는 단일 통합 변환 컨텍스트 식별자가 사용될 수 있고, 또는 스플릿 S1/S2 TLB의 경우에는, S1 TLB는 ASID를 사용할 수 있고 S2 TLB는 VMID를 사용할 수 있다. 변환 컨텍스트 식별자는, 동일한 가상 어드레스를 지정하는 상이한 운영 체제 또는 애플리케이션이 그들 액세스를 상이한 물리적 어드레스를 제공하는 TLB(100)의 상이한 엔트리에 매핑할 수 있도록 한다.
TLB(100)에서의 히트는 태그(262)가 메모리 액세스 요청에 대해 지정된 어드레스(258)의 대응하는 부분과 일치할 뿐만 아니라, 동일한 엔트리에 저장된 변환 컨텍스트 식별자가 메모리 액세스가 발행된 현재 변환 컨텍스트와도 일치해야 한다는 것을 요구한다. 태그(262)와 변환 컨텍스트 식별자(254)의 비교는 주어진 메모리 액세스에 대한 정확한 물리적 어드레스(264)를 위치시키기에 충분할 것으로 예상될 수 있다. 그러나, 이들이 룩업(lookup)에서 수행된 유일한 비교인 경우, 영역 관리 유닛 테이블(128)의 추가 검사 없이 TLB에서의 메모리 액세스 히팅(hitting)이 승인되면 잠재적인 보안 취약성이 있다. 이것은 MMU를 속여서 실제로 상이한 영역에서 주어진 메모리 영역에 액세스하기 위해 이전에 수락된 영역으로 오는 메모리 액세스를 수락하게 하기 위해서, 이전에 실행된 프로세스와 동일한 VMID(250) 또는 ASID(252)를 가진 새로운 프로세스를 생성하는 것이 가능하기 때문이다.
이 문제를 해결하기 위해, TLB(100)는 각 TLB 엔트리(260) 내에서 대응하는 메모리 영역을 소유하는 소유자 영역의 글로벌 RID(270)뿐만 아니라, 어떤 다른 영역이 대응하는 메모리 영역에 액세스하도록 허용되는지를 제어하기 위해 소유자 영역에 의해 설정된 가시성 속성(272)도 지정할 수 있다. 현재 변환 컨텍스트 및 현재 영역으로부터 발행된 주어진 타겟 메모리 영역에 대한 메모리 액세스에 응답하여 변환 캐시(100)의 주어진 룩업이 수행될 때, 변환 캐시(100)에 미스(miss)가 있으면, TLB 제어 회로(280)는 액세스가 허용되는지 여부를 검사하기 위해 관련 페이지 테이블(120) 및 RMU 테이블(128)에 액세스하도록 테이블 워크 유닛(102)을 트리거할 수 있다. 페이지 테이블 또는 RMU 테이블(128)이 변환 컨텍스트, 예외 레벨 및 영역의 현재 조합이 대응하는 메모리 영역에 액세스하는 것을 제외하면, 그 메모리 액세스에 응답하여 어떤 데이터도 변환 캐시에 할당되지 않는다. 특히, 룩업이 누락되고 현재 영역이 타겟 메모리 영역의 소유자 영역에 의해 타겟 메모리 영역에 액세스하는 것으로부터 제외되면, 변환 캐시에 어드레스 변환 데이터의 할당이 방지된다. 따라서, 대응하는 메모리 액세스가 MMU 페이지 테이블(120) 및 RMU 테이블(128) 모두의 검사를 통과할 때 엔트리가 TLB(100)에 할당된다.
다음에, 주어진 어드레스에 대한 어드레스 변환을 제공하는 엔트리(260)를 이미 포함하는지 여부를 검사하기 위해 변환 캐시를 룩업할 때, TLB 제어회로(280)는 대응하는 엔트리(260)에서 지정된 변환 컨텍스트 식별자(254)와 메모리 액세스 요청과 함께 수신된 현재의 변환 컨텍스트에 대한 변환 컨텍스트 식별자(254) 간의 제1 비교, 및 또한 그 엔트리(260)에 의해 지정된 글로벌 RID(270)와 메모리 액세스 요청을 발행한 현재 영역과 관련된 현재 글로벌 RID 간의 제2 비교에 따라 메모리 액세스가 변환 캐시(100)의 주어진 엔트리와 일치하는지 여부를 판정한다. 메모리 영역에 대한 액세스가 허용된 것으로 이전에 확인된 영역으로부터 TLB 엔트리가 여전히 액세스되고 있는지 추가 검사를 제공함으로써, 이를 통해서 악의적인 감독 프로세스가 소유자 영역에 의해 데이터에 액세스하도록 허용된 이전의 기존 프로세스와 동일한 ASID(252) 또는 VMID(250)로 또 다른 프로세스를 재생성하더라도, 글로벌 영역 식별자(270)가 도 18과 관련하여 논의된 바와 같이 영역 스크러빙 커맨드(216)를 거치지 않고 다른 프로세서에 재할당될 수 없기 때문에, 이것은 현재 영역의 글로벌 RID가 유효하다고 신뢰할 수 있으며 ASID 또는 VMID에 대해 가능한 한 "위조"될 수 없다는 것을 의미한다. 따라서, 현재 영역의 글로벌 RID가 여전히 소유자 GRID(270) 및 가시성 속성(272)으로 나타낸 허가(permission)를 충족시키는 경우, 이것은 이전에 수행된 영역 테이블 검사가 여전히 유효함을 나타낸다.
영역 식별자의 제2 비교에서 미스매치가 검출되면, 엔트리가 할당된 이후 변환 컨텍스트 ID(254)와 영역 ID(270) 사이의 매핑에 변화가 있었음을 나타내기 때문에, 태그 비교와 변환 컨텍스트 비교가 일치하더라도 액세스 요청은 TLB에서 미스(miss)한 것으로 간주된다. 이것은, 페이지 테이블 및 RMU 테이블의 또 다른 워크가 테이블 워크 유닛(102)에 의해 트리거될 수 있기 때문에, 액세스가 거부될 것이라는 것을 반드시 의미하는 것은 아니며, 영역 검사가 성공적이면, 이것은 TLB(100)에 상이한 엔트리(260)의 할당 및 새롭게 할당된 엔트리로부터의 정보에 의거하여 메모리 액세스의 서비스를 야기할 수 있다.
도 18은 주어진 메모리 액세스가 MMU(26)에 의해 허용되는지를 판정하는 방법을 나타내는 흐름도이다. 단계 300에서, 메모리 액세스 요청이 수신되고 이것이 TLB(100)에서 룩업된다. 메모리 액세스 요청은 적어도 액세스될 가상 어드레스, 현재 변환 컨텍스트를 나타내는 하나 이상의 변환 컨텍스트 식별자 및 현재 영역을 식별하는 글로벌 영역 식별자를 지정한다. 예를 들어, 글로벌 RID는 영역에 진입할 때 현재 영역의 글로벌 RID로 기록될 수 있는 처리 요소(8)의 상태 레지스터로부터 판독될 수 있다.
메모리 액세스 요청에 응답하여, TLB 제어 회로(280)는 TLB의 룩업을 수행한다. 이 룩업은 TLB의 적어도 일부 항목에 액세스한다. 일부 접근법은 완전 연관 캐시 구조를 사용할 수 있으며, 이 경우 히트 또는 미스가 있는지 여부를 식별하기 위해 적어도 레벨 1 TLB의 모든 엔트리가 검색될 수 있고 현재 요청의 파라미터와 비교될 수 있다. 다른 접근법은 세트-연관 캐시 할당 정책을 사용할 수 있고, 이 경우 주어진 레벨의 TLB의 엔트리의 서브세트만이 룩업될 필요가 있을 수 있고, 메모리 액세스의 타겟 어드레스를 사용하여 인덱스될 필요가 있을 수 있다. 액세스된 엔트리 세트 각각에 대해, TLB 제어 회로(280)는 다음을 포함하여 (병렬 또는 순차적으로) 다수의 비교를 수행한다:
·메모리 액세스 요청의 어드레스가 액세스된 엔트리에 저장된 태그(262)와 일치하는지를 비교하기 위한 태그 비교(302);
·액세스된 엔트리에 저장된 변환 컨텍스트 식별자를, 메모리 액세스 요청의 변환 컨텍스트 식별자와 비교하기 위한 제1(컨텍스트) 비교(304); 및
·메모리 액세스 요청의 글로벌 RID를, 소유자 RID(270) 및 액세스된 엔트리 세트의 각각에 대한 가시성 속성(272)과 비교하기 위한 제2(영역) 비교(306).
단계 308에서, 제어 회로(280)는 모든 비교 302, 304, 306에 대한 매칭을 리턴한 엔트리가 TLB에 있는지를 판정하고, 그렇다면 히트가 식별되고 단계 310에서 매칭 엔트리에서 지정된 물리적 어드레스(264)가 리턴되며, 그 물리적 어드레스에 근거해서 메모리 액세스가 진행될 수 있다. 히트의 경우, 페이지 테이블 또는 RMU 테이블을 룩업할 필요가 없다(메모리 액세스에 대한 소유권 테이블 록업은 생략될 수 있다). 페이지 테이블 및 RMU 테이블에 의해 제공된 보호 기능은 미스(miss)의 경우에만 호출(invoked)된다.
3개의 비교 302, 304, 306 모두와 일치하는 어떤 엔트리도 없으면, 미스가 검출된다. 추가의 TLB 레벨이 제공되면, 단계 300-308에 대응하는 록업이 레벨 2 또는 그 다음의 레벨 TLB에서 수행될 수 있다. 마지막 레벨 TLB에서 룩업이 미스하면, 다양한 페이지 테이블 및 RMU 테이블의 워크가 수행된다. 따라서, 단계 311에서 스테이지 1 페이지 테이블 워크가 수행되고 단계 312에서 스테이지 1 페이지 테이블 결함이 발생했는지(예를 들어, 지정된 가상 어드레스에 대해 정의된 어드레스 매핑이 없었기 때문에 또는 액세스 요청의 현재 파라미터가 타겟 가상 어드레스에 대해 지정된 액세스 허가를 위반하기 때문에)가 판정된다. 스테이지 1 결함이 발생하면 단계 314에서 메모리 액세스가 거부되고 메모리 액세스에 응답하여 TLB(100)에 대한 어드레스 매핑 데이터의 할당이 방지된다.
한편, 액세스 요청이 스테이지 1 페이지 테이블 검사를 통과하면, 단계 315에서 스테이지 2 페이지 테이블 워크가 트리거되어 스테이지 1 프로세스에 의해 리턴된 중간 물리적 어드레스에 대한 매핑 데이터를 취득하고, 단계 316에서 스테이지 2 페이지 테이블 결함이 (다시, 어드레스 매핑이 정의되지 않았기 때문에 또는 스테이지 2 액세스 허가에 의해 액세스가 허용되지 않기 때문에) 발생했는지 여부를 판정한다. 스테이지 2 결함이 발생하면, 다시 단계 314에서 액세스 요청이 거부된다.
스테이지 2 결함이 발생하지 않으면 단계 318에서 RMU 테이블 룩업이 스테이지 2에 의해 리턴된 물리적 어드레스에 근거하여 트리거되고 단계 320에서 영역 결함이 검출되었는지를 판정한다. 다음과 같은 이벤트가 발생하면 영역 결함이 트리거될 수 있다:
· 대응하는 메모리 영역에 대한 라이프사이클 상태가 영역 소유권 테이블(128)에서 유효하지 않다고 표시되면, 이것은 도 15에 도시된 클리닝 동작(224)을 거치지 않은 메모리 어드레스 공간의 페이지가, 상이한 영역에 의한 액세스로부터 그 메모리 영역의 또 다른 영역에 의해 이전에 저장된 임의의 데이터를 보호하기 위해서, 액세스될 수 없다는 것을 보장한다.
·현재 영역은 그 메모리 영역에 액세스하도록 대응하는 메모리 영역에 대한 소유자 영역에 의해 허용되지 않는다. 주어진 영역이 주어진 메모리 영역에 액세스하도록 허용될 수 없는 이유는 여러 가지가 있을 수 있다. 메모리 영역이 소유자 자체와 그 자손에게만 보이도록 소유자 영역이 지정되었다면, 또 다른 영역은 그 영역에 액세스하도록 허용될 수 없다. 또한 현재 영역이 소유자 영역의 부모 영역이고 소유자 영역이 부모가 그 영역에 액세스하는 것을 허용하도록 부모 가시성 속성을 정의하지 않았으면, 메모리 액세스가 거부될 수 있다. 또한, 그 메모리 영역이 상술한 바와 같이 RMU-프라이빗으로서 현재 설정되어 있으면, 소유자 영역 자체는 메모리 영역에 액세스하는 것으로부터 방지될 수 있다. RMU 검사 스테이지에서, 소유자 영역의 자손 영역은 (메모리 영역이 RMU-프라이빗 영역이 아닌 한) 메모리 영역에 액세스하도록 허용될 수 있다. 따라서 이 검사는 소유자 영역에 의해 설정된 액세스 허가를 시행한다.
·S1/S2 변환에 의해 현재 메모리 액세스를 위해 물리적 어드레스가 매핑된 가상 어드레스 또는 중간 물리적 어드레스가 도 12에 도시된 바와 같이 대응하는 메모리 영역에 대해 소유권 테이블(128)에 지정된 매핑된 어드레스와 일치하지 않는 경우, 메모리 액세스가 거부된다. 이것은, 악의적인 부모 영역이 지정된 메모리 영역의 소유권을 자식 영역에 할당하지만, 그 다음에 페이지 테이블(120)에서의 변환 매핑을 변경할 수 있음으로써 자식 영역이 실제로 소유한 페이지를 나타내는 데 사용한, 동일한 가상 어드레스를 사용하여 자식 영역에 의해 트리거된 다음 메모리 액세스가, 자식 영역 자체가 실제로 소유하지 않은 상이한 물리적 어드레스에 지금 매핑하는 상황을 방지한다. 소유권을 주장할 때 대응하는 메모리 영역의 물리적 어드레스로부터 그 물리적 어드레스를 생성하는 데 사용되는 매핑된 어드레스로 다시 소유권 테이블에서의 역 매핑을 제공함으로써, 이것은 어드레스 매핑의 변경으로 인한 보안 위반이 검출되게 하여 메모리 액세스가 실패할 것이다.
다른 유형의 검사도 수행될 수 있음을 이해할 것이다. 영역 검사가 성공적이면, 단계 322에서 물리 어드레스가 리턴되고, 메모리 액세스는 물리적 어드레스를 사용하여 진행될 수 있으며, 페이지 테이블(120) 및 소유자 영역으로부터 획득된 물리적 어드레스와 요청된 가상 어드레스 및 변환 컨텍스트에 대응하는 소유권 테이블(128)로부터 획득된 가시성 속성을 나타내는 TLB에 새로운 엔트리가 할당된다.
영역에/으로부터의 진입 및 퇴장 시, 처리 요소(8) 및/또는 RMU(20)는 영역의 진입 또는 퇴장의 안전한 처리를 보장하기 위한 다수의 동작을 수행할 필요가 있을 수 있다. 예를 들어, 영역에 진입할 때 타겟 영역이 정확한 라이프사이클 상태인지 검사하기 위해 여러 가지 검사를 수행해야 할 수도 있다(예를 들어, 소유 페이지로부터 데이터를 스크러빙하지 않은 영역 또는 존재하지 않는 영역으로 들어가려고 시도하여 보안 조치를 회피하는 것을 방지한다.) 또한, 영역을 퇴장할 때, 더 높은 특권 레벨 프로세스가 더 낮은 특권 레벨에서 그 영역에 의해 사용된 상태 데이터에 액세스할 수 없도록 처리 요소의 레지스터에 저장된 아키텍처 상태를 마스킹하는 것이 바람직할 수 있다(그렇지 않으면, 영역 보호에 의해 제공되는 보안 조치를 피할 수 있게 한다). 영역 진입 및 퇴장을 처리하기 위한 하나의 접근방법은 영역에 들어가거나 나가기 위한 관련 동작을 수행하도록 RMU(20)를 트리거하는 전용 영역 진입 또는 영역 퇴장 명령을 제공하는 것일 수 있다.
또 하나의 접근법은, 영역에 들어가고 나가기 위해 이미 예외 진입 및 리턴에 제공된 메커니즘을 재사용하는 것일 수 있다. 이것은 영역 진입 및 퇴장을 지원하는 데 필요한 소프트웨어 수정의 양을 줄이고, 아키텍처와 하드웨어를 단순화한다. 이것은 종종 영역 경계가 어쨌든 예외 레벨 경계에 대응할 수 있기 때문에 특히 유용하며, 진입 및 퇴장을 제어하기 위해 새로운 명령이 제공되더라도, 예외 처리 동작이 여전히 필요하므로, 전체적으로 예외 메커니즘을 확장하여 진입 및 퇴장을 제어하는 데 비용이 덜 들 수 있다.
따라서, 일반적으로 현재 영역에서 처리된 예외로부터 현재 영역에서도 처리된 다른 프로세스로 처리를 리턴하는 예외 리턴(ERET) 명령(다른 프로세스는 동일한 예외 레벨 또는 예외보다 더 적은 특권이 있는 예외 레벨에서 처리될 수 있음)은, 현재 영역으로부터 목적지 영역으로 영역 진입을 트리거하기 위해 재사용될 수 있다. 예외 리턴 명령의 제1 변형에 응답하여, 처리 회로는 현재 예외 레벨로부터 더 적은 특권이 있는 예외 레벨(영역을 변경하지 않고)로 처리를 전환하는 한편, 예외 리턴 명령의 제2 변형에 응답하여, 처리 회로는 현재 영역으로부터 목적지 영역으로 처리를 전환할 수 있으며, 이는 현재 영역과 동일한 예외 레벨 또는 더 낮은(특권이 더 적은) 예외 레벨에서 작동할 수 있다. 예외 리턴 명령을 사용하여 영역 진입을 트리거하면 아키텍처 및 하드웨어 오버 헤드가 크게 단순화될 뿐만 아니라 영역 사용을 지원하기 위한 소프트웨어 수정 요구도 줄어든다.
예외 리턴 명령을 사용하는 또 다른 이점은 일반적으로 예외로부터 복귀할 때, 처리 회로가 예외 리턴 명령에 응답하여 극소(atomic) 세트의 조작을 수행할 수 있다는 것이다. 예외로부터 복귀하는 데 필요한 이러한 세트의 조작은 극히 작게 수행될 수 있으므로 이들 조작을 부분적으로 나눌 수 없고, 그래서 명령이 실패하여 극소 세트의 조작이 수행되지 않거나 명령이 성공적으로 실행되어 모든 극소 세트의 조작이 수행된다. 예외 리턴 명령의 제2 변형에 대해, 처리 회로는 제1 극소 세트 조작과 상이할 수 있는, 제2 극소 세트 조작을 유사하게 수행할 수 있다. 영역 진입이 부분적으로만 수행되어 보안 취약점으로 이어질 수 있는 상황을 피하기 위해 예외 리턴 명령이 극히 작게 완료되도록 하기 위해 프로세서에 이미 제공된 메커니즘은 영역 진입에 재사용될 수 있다. 예를 들어, 제2 극소 세트의 조작은 영역 실행 컨텍스트 상태를 이용 가능하게 하고, 현재 실행중인 영역을 변경하며, 동일한 영역이 마지막으로 실행될 때 처리가 이전에 실행되었던 프로그램 카운터 어드레스로의 분기를 제어하는 것을 포함할 수 있다.
예외 리턴 명령의 제1 및 제2 변형은 동일한 명령 인코딩을 가질 수 있다. 따라서, 영역 진입을 트리거하기 위해 예외 리턴 명령 자체를 수정할 필요가 없다. 이것은 레거시 코드(legacy code)와의 호환성을 향상시킨다. 주어진 예외 리턴 명령이 제1 변형으로서 실행되는지 또는 제2 변형으로서 실행되는지 여부는 상태 레지스터에 저장된 제어 값에 의존할 수 있다(예를 들어, 제어 값의 제1 및 제2 값은 예외 리턴 명령의 제1 및 제2 변형을 각각 나타낼 수 있다). 따라서, 예외 리턴 명령이 실행될 당시의 현재 아키텍처 상태는, 동일한 영역에서 더 낮은 특권이 있는 레벨로 프로세서를 리턴하는지, 새로운 영역으로의 진입을 트리거하는지 여부를 제어한다.
이 접근법을 사용하면 (소프트웨어 명령에 응답하여 제어 값의 자발적 설정을 허용하는 것 외에) 특히 상태 레지스터의 값이 영역 전환이 있을 수 있음을 암시하는 특정 이벤트에 응답하여 하드웨어에 의해 자동으로 설정될 수 있으므로, 소프트웨어 수정을 줄이면서 영역 진입을 제어할 수 있다. 예를 들어, 주어진 영역으로의 퇴장을 트리거하는 예외 조건이 발생할 때, 예외를 처리하기 위한 예외 핸들러 코드가 영역을 염두에 두고 작성되지 않은 이전 레거시 코드와 동일하더라도, 처리 회로는 제어 값을, 주어진 영역에 대한 제2 값으로 설정할 수 있어 다음 예외 리턴 명령이 자동으로 처리를 예외가 발생한 영역으로 리턴할 것이다. 대안적으로, 일부 아키텍처에서, 영역으로부터 퇴장할 때 상태 레지스터의 제어 값에는 해당 영역에 대한 영역 진입을 트리거하기 전에 설정된 제2 값이 여전히 포함되므로, 상태 레지스터의 제어 값에 대한 명시적인 설정은 필요하지 않을 수도 있는 것으로 예상될 수 있다.
적어도 하나의 영역 식별자 레지스터가 제공될 수 있고, 예외 리턴 명령의 제2 변형에 응답하여, 처리 회로는 영역 식별자 레지스터에 저장된 영역 식별자로부터 목적지 영역을 식별할 수 있다. 영역 식별자 레지스터는 뱅킹(banked)될 수 있어서, 예외 레벨들 중 하나와 각각 연관된 다수의 영역 식별자 레지스터들이 존재하고, 예외 리턴 명령의 제2 변형에 응답하여, 처리 회로는 현재 예외 레벨과 연관된 영역 식별자 레지스터에 저장된 영역 식별자로부터 목적지 영역을 식별할 수 있다. 타겟 영역 식별자를 저장하기 위해 영역 식별자 레지스터를 사용함으로써, ERET 명령의 명령 인코딩에 이것을 포함시킬 필요가 없는데, 이는 기존의 ERET 명령 형식을 사용하여 영역 진입을 트리거해서, 필요한 소프트웨어 수정량을 줄일 수 있다. 영역 식별자 레지스터에서의 영역 식별자는 부모 영역이 자신의 자식 영역을 참조하기 위해 사용하는 로컬 영역 식별자일 수 있으므로, 영역 진입은 부모 영역에서 자식 영역으로 전달되는 것으로 제한될 수 있으며, 제1 영역으로부터 제1 영역의 직접적인 자식이 아닌 또 다른 영역으로 이동할 수 없다. 예외 리턴 명령의 제2 변형에 응답하여, 처리 회로는 RID 레지스터에서 식별된 영역 ID와 연관된 영역이 무효 영역일 때 결함 조건을 트리거할 수 있다(영역 디스크립터가 정의되지 않았거나 또는 영역 디스크립터가 활성 이외의 라이프사이클 상태를 정의하는 RID).
예외 리턴 명령의 제2 변형에 응답하여, 처리 회로는 예외 리턴 명령에 대해 지정된 영역 실행 컨텍스트(REC) 메모리 영역으로부터 목적지 영역에서 처리될 스레드와 연관된 아키텍처 상태를 복원할 수 있다. 상태 복원은 예외 복귀 명령의 제2 변형(예를 들어, 극소 조작 세트의 일부로서)에 응답하여 즉시 수행될 수 있거나 나중에 수행될 수 있다. 예를 들어, 목적지 영역에서 처리를 시작하는 데 필요한 상태(예를 들어, 프로그램 카운터, 처리 모드 정보 등)를 즉시 복원할 수 있도록 상태 복원을 느린(lazy) 방식으로 수행할 수 있지만, 범용 레지스터와 같은 다른 상태는 나중에 필요할 때 또는 점진적으로 새로운 영역의 진행중인 처리를 배경으로 복원될 수 있다. 따라서, 처리 회로는 필요한 모든 아키텍처 상태가 REC 메모리 영역으로부터 복원되기 전에 목적지 영역의 처리를 시작할 수 있다.
예외 리턴 명령의 제1 변형에 응답하여, 처리 회로는 링크 레지스터에 저장된 프로그램 명령 어드레스로 분기될 수 있다. 대조적으로, 예외 리턴 명령의 제2 변형에 대해, 처리 회로는 영역 실행 컨텍스트(REC) 메모리 영역에 지정된 프로그램 명령 어드레스로 분기될 수 있다. 링크 레지스터는 새로운 영역에 대한 아키텍처 상태를 직접 식별하기 위해 예외 리턴 명령의 제2 변형에 사용되지 않으므로, 링크 레지스터를 재사용하여 새로운 영역의 아키텍처 상태가 복원되는 REC 메모리 영역에 포인터를 대신 제공할 수 있다. 이렇게 하면 REC 포인터를 저장하기 위해 순서대로 추가 레지스터를 제공할 필요가 없다.
따라서, 주어진 영역으로 영역 진입을 유발하기 위한 예외 리턴 명령을 실행하기 전에, RID 레지스터를 목적지 영역의 영역 식별자로 설정하고 목적지 영역과 관련된 REC 메모리 영역의 포인터를 저장하도록 링크 레지스터를 설정하기 위해 일부 부가 명령이 포함될 수 있다. REC 포인터는 목적지 영역의 영역 디스크립터로부터 부모 영역에 의해 취득될 수 있다.
예외 리턴 명령의 제2 변형에 응답하여, REC 메모리 영역이 목적지 영역 이외의 소유자 영역과 관련되어 있을 때 또는 예외 리턴 명령에 대해 지정된 REC 메모리 영역이 유효하지 않을 때 처리 회로에 의해 결함 조건이 트리거될 수 있다. 제1 검사는, 자식 영역이 소유한 메모리 영역만 해당 영역에 들어갈 때 액세스 가능한 REC 메모리 영역을 저장할 수 있기 때문에, 부모 영역이 자식 영역이 자신이 작성하지 않은 프로세서 상태로 실행하도록 속이는 것을 방지한다(그리고 위에서 설명한 것처럼 REC 메모리 영역은 RMU 프라이빗으로서 설정될 것이다). REC 메모리 영역의 유효성에 대한 제2 검사는 REC 메모리 영역을 한 번만 사용하여 영역으로 진입할 수 있으며, 이후 동일한 REC 데이터로 영역에 진입하려는 시도가 거부될 수 있음을 확인하는 데 유용할 수 있다. 예를 들어, 각 REC는 유효하지 않거나 유효할 수 있는 라이프사이클 상태를 가질 수 있다. 현재 영역에서 주어진 스레드를 처리하는 동안 발생하는 예외에 응답하여, 해당 스레드의 아키텍처 상태는 대응하는 REC 메모리 영역에 세이브될 수 있고, 그에 따라 대응하는 REC 메모리 영역은 무효에서 유효로 천이될 수 있다. 예외 리턴 명령의 제2 변형의 성공적인 실행에 응답하여, REC 메모리 영역은 유효로부터 무효로 다시 천이될 수 있다. 이것은 오래된 REC 메모리 영역, 상이한 스레드와 연관된 REC 메모리 영역, 또는 목적지 영역과 연관되어 있지만 영역으로부터의 이전 퇴장 시 아키텍처 상태를 저장하는 데 사용 된 올바른 것이 아닌 일부 다른 REC의 포인트를 지정함으로써 부모 영역이 악의적으로 자식 영역이 잘못 작동하는 것을 방지한다.
대응하는 방식으로, 영역으로부터의 퇴장은 예외 처리를 위해 제공된 메커니즘을 재사용할 수 있다. 따라서, 제1 영역에 의해 처리될 수 없는 제1 영역의 처리 중에 발생하는 예외 조건에 응답하여, 처리 회로는 제1 영역을 초기화한 부모 영역으로의 영역 퇴장을 트리거할 수 있다. 예외 발생/영역 퇴장시, 동일한 영역 내에서 처리될 수 있는 예외 발생에 대해 수행되지 않는 일부 부가 조작이 수행될 수 있다. 예를 들어, 이것은, 아키텍처 상태의 마스킹 또는 스크러빙 및 REC에 대한 상태 저장의 트리거링을 포함할 수도 있다.
그러나, 경우에 따라 예외가 발생한 제1 영역의 부모 영역에 의해 처리될 수 없는 예외가 발생할 수 있다. 따라서, 이 경우 부모 이외의 추가 조상 영역으로 전환해야 할 수도 있다. 주어진 영역에서 1세대 이상 더 오래된 조상 영역으로 직접 전환하는 기능을 제공할 수는 있지만, 이것은 예외 진입 및 리턴 또는 영역 퇴장 및 진입을 처리하는 데 필요한 상태 레지스터의 복잡성을 증가시킬 수 있다.
대신, 네스티드 영역 퇴장은 제1 영역의 부모 영역을 처리할 수 있는 가장 특권이 있는 예외 레벨보다 특권 레벨이 더 높은 타겟 예외 레벨에서 예외 조건이 처리될 때 수행될 수 있다. 네스티드 영역 퇴장에는, 발생한 예외의 타겟 예외 레벨에서 처리될 수 있는 제2 영역에 도달할 때까지, 자식 영역에서 부모 영역으로의 둘 이상의 연속적인 영역 퇴장이 포함될 수 있다. 따라서, 영역 계층을 한 번에 한 레벨씩 증가시킴으로써, 이것은 아키텍처를 단순화할 수 있다. 각각의 연속적인 영역 퇴장에서, 대응하는 영역과 연관된 REC에 프로세서 상태의 서브세트를 세이브하기 위해 수행되는 동작이 있을 수 있다.
도 19는 부모 영역에 의해 초기화될 수 있는 서브 영역의 개념을 도시한. 도 19에 도시된 바와 같이, 특정 예외 레벨에서 동작하는 주어진 부모 영역(600)은 그 부모와 동일한 예외 레벨에서 동작하는 서브 영역(602)을 초기화할 수 있다. 전체 영역(600)은 주어진 소프트웨어 프로세스(또는 둘 이상의 프로세스의 집합)에 대응하지만, 서브 영역은 주어진 소프트웨어 프로세스 내의 미리 결정된 어드레스 범위에 대응한다. 전체 영역이 서브 영역의 부모이므로, 위에서 설명한 바와 같이 서브 영역은 부모 전체 영역이 소유한 메모리 영역에 저장된 데이터에 액세스할 권한를 가질 수 있지만, 서브 영역은 서브 영역(602)에 의해 소유된 메모리 영역에 저장된 데이터에 액세스하는 것으로부터 그 부모 전체 영역을 제외할 권한가 있을 수도 있다. 이것은 주어진 소프트웨어 프로세스의 특정 부분을 소프트웨어 프로세스의 다른 부분보다 더 안전하게 만드는 데 유용하다. 예를 들어, 동일한 애플리케이션 또는 운영 체제의 다른 부분이 그 민감한 정보에 액세스하는 것을 방지하기 위해, 모바일 뱅킹 애플리케이션에서 비밀번호를 검사하거나 다른 민감한 정보를 처리하기위한 코드의 일부가 서브-영역에 할당될 수 있다.
서브 영역은 일반적으로 전체 영역과 동일한 방식으로 처리될 수 있으며, 아래 설명과 약간의 차이가 있다. 서브 영역으로/으로부터의 진입 및 퇴장은 위에서 설명한 것과 같은 방식으로 예외 리턴 명령과 예외 이벤트를 사용하여 처리될 수 있다. 따라서, 서브 영역은 동일한 부모의 완전한 자식 영역과 동일한 방식으로 구성된 자식 영역 ID를 가질 수 있으며, 상술한 바와 같이 영역 디스크립터 트리 내에 영역 디스크립터를 제공할 수 있다. ERET 명령을 실행하기 전에 RID 레지스터에 적절한 자식 서브 영역 RID를 배치한 ERET 명령을 실행함으로써 서브 영역에 대한 진입을 트리거할 수 있다. 따라서, (제2 변형의) 동일한 유형의 ERET 명령을 사용하여 전체 영역 또는 서브 영역으로의 진입을 트리거할 수 있다.
서브 영역이 전체 영역과 상이할 수 있는 한 가지 방법은 서브 영역이 그 자신의 자식 영역을 초기화하도록 허용되지 않을 수도 있다는 것이다. 따라서 현재 영역이 서브 영역이면 새로운 영역을 초기화하기 위한 영역 초기화 커맨드가 거부될 수도 있다. RMU는 현재 영역의 영역 디스크립터에서 영역 유형 값을 이용하여 현재 영역이 전체 영역인지 서브 영역인지를 판정할 수 있다. 현재 서브 영역에 있을 때 영역 초기화를 비활성화하면, 추가 영역을 초기화할 때 서브 영역이 사용할 부가적인 상태 레지스터를 제공할 필요가 없으므로 아키텍처가 단순화된다.
유사하게, 영역 진입 명령의 실행은 현재 서브 영역에 있을 때 비활성화될 수 있다. 이것은 영역 진입 및 퇴장(및 예외 진입 및 리턴)을 처리하기 위해 상이한 예외 상태들을 위해 복제되는 뱅크 레지스터들이 각 서브 영역에 대해 추가로 뱅킹될 필요가 없는 것을 의미하기 때문에 아키텍처를 단순화하는데, 이는 설계 시(design time)에 주어진 프로세스가 얼마나 많은 서브 영역을 생성하는지 알 수 없으므로 관리하기 어렵다. 마찬가지로, 현재 영역이 전체 영역이 아닌 서브 영역인 경우 낮은 특권 레벨에서 동작하는 프로세스로의 전환을 트리거하는 예외 리턴 이벤트가 비활성화될 수 있다. 위에서 논의된 예에서, 단일 유형의 ERET 명령은 영역 진입 명령 및 예외 리턴 명령 둘 다로서 기능하지만, 이것은 모든 실시 예에 필수적인 것이 아니며, 별도의 명령이 제공되는 경우, 현재 영역이 서브 영역일 때 영역 진입 명령 및 예외 리턴 명령 둘 다를 비활성화할 수 있다.
유사하게, 서브 영역에 있을 때 예외를 발생시키는 경우, 서브 영역으로부터 직접 예외를 취하는 것이 아니라, 처리 회로는, 예외를 처리하기 전에, 서브 영역으로부터 서브 영역을 초기화한 부모 전체 영역으로의 퇴장을 트리거할 수 있다. 따라서, 예외가 부모 전체 영역으로의 리턴을 트리거한다. 부모 전체 영역으로의 예외 리턴에는 REC에 대한 상태 마스킹, 스크러빙 및 세이빙 동작이 포함될 수 있지만, 더 높은 예외 레벨에서 서브 영역으로부터 한 영역으로 직접 예외가 취해지는 것을 방지함으로써, 이를 통해서 서브 영역에 대해 예외 제어 레지스터를 추가로 뱅킹할 필요가 없으므로, 아키텍처가 단순화된다.
서브 영역의 경우, 영역의 처리에 허용된 최대 특권 레벨을 나타내는 경계 예외 레벨은, 그것의 부모 전체 영역에 대한 경계 예외 레벨과 같다. 반대로, 자식 전체 영역의 경우, 경계 예외 레벨은 그것의 부모 영역의 경계 예외 레벨보다 특권이 더 적은 예외 레벨이다.
영역이 부모 영역에 의해 초기화될 때, 부모 영역은 새로운 영역이 자식 전체 영역인지 자식 서브 영역인지를 선택할 수 있고 그에 따라 영역 디스크립터에서 적절한 영역 유형 파라미터를 설정할 수 있다. 영역이 작동하면, 영역 디스크립터 변경은 도 11과 관련하여 위에서 설명한 관리 영역 라이프사이클을 통해 비활성화되기 때문에, 부모 영역은 더 이상 영역 유형을 변경할 수 없다.
요약하면, 전체 영역과 유사하게 관리되지만 서브 영역 내에서 예외 처리, 영역 초기화 및 영역 진입 기능이 비활성화되어 있는 서브 영역을 도입하는 능력은, 전체 영역의 소프트웨어 프로세스 내의 주어진 어드레스 범위에 대응하는 코드의 더 작은 부분이 해당 소프트웨어의 다른 부분과 격리되는 것을 가능하게 하여, 민감한 코드 또는 데이터의 특정 부분에 대한 부가적인 보안을 제공할 수 있다.
파라미터 사이닝(signing)
상술한 액세스 제어 모델은, 동일한 특권 레벨에서 다른 소프트웨어, 상위 특권 레벨들에서 다른 소프트웨어, 및 그 밖의 영역들(realms)을 포함하는, 상기 시스템상의 임의의 다른 에이전트들로부터 보호한다. 일 영역을 작성할 때, 이 영역에는, 상기 영역의 초기의 내용을 나타내는 내용(메모리 페이지들)이 채워진다. 이 초기의 내용이 측정된다. 또한, 그 영역은 이 영역이 디버그 모드에서 시작되는지 않는지 등의 보안 구성, 상기 영역에 의해 그 자신의 내부 부트 프로세스를 보호하고 그의 데이터 비밀을 유지하는 데 일반적으로 사용된 영역 비밀들의 도출용 스코프 파라미터들 등이 할당된다. 일 영역을 작성하고, 측정하고, (영역 비밀들의 도출을 포함하는) 그의 보안 구성을 집행하는 프로세스는, 상기 영역 관리 유닛에 의해 관리된다.
일 영역이 작동되는 중이면, 일부의 외부 유저(예컨대, 일 영역내부에서 작동되는 서버 애플리케이션에 연결하는 클라이언트)는, 상기 영역에 연결하고 증명서 보고를 요구할 수 있다. 증명서 보고는, 상기 영역이 신뢰할만한 시스템 상에서 작동되는 중이고 초기에 예상된 소프트웨어(상기 영역 측정)에 채워졌고, 상기 영역이 (예컨대, 디버그가 사용 가능하게 된 상태에서 시작되지 않은) 예상된 것으로서 구성되었던 것을, 상기 외부 유저가 검증하게 한다. 이것은, 데이터가 단지 프로비저닝되거나 성공적인 증명 후 이용 가능하게 되는 애플리케이션들에 유용할 수도 있다.
그렇지만, 상기 영역이 작동중인 후 증명서를 제공하는 것은, 이하의 사용 케이스들의 예에 대해 충분하지 않을 수도 있다:
· 일 영역 또는 시스템의 재시작 후 이용 가능한 채로 있는 시스템상에 끊임없이 데이터가 저장될 필요가 있는 경우,
· 로드 밸런싱, 리던던시 등에 대한 "동일한" 영역의 다수의 인스턴스들에 대해 데이터가 이용 가능하게 될 필요 있으면,
· 상기 영역이 증명되어 있기 전에 일부의 비밀들에 액세스, 예컨대, 보호된 파일 시스템에 저장된 부트 화상들에 액세스가 필요한 경우, "동일한" 영역, 또는 시스템의 재시작 후 포함함.
여기서, "동일한" 영역은, 동일한 초기의 내용이 채워지고, 동일한 보안 구성을 사용한, 하나 이상의 영역 인스턴스들을 의미한다.
이 이슈들은, 서명된 영역(realm) 파라미터들의 개념을 도입함으로써 해결될 수 있다. 그 영역의 보안 구성은, 예상된 측정을 포함하도록 확장된다. 상기 영역의 보안 구성은, 파라미터 서명자에 의해 서명된다. 파라미터 서명자 신원(identity)은 상기 시그니처와 함께 포함된다. 예컨대, 비대칭 암호기술을 사용하여, 상기 파라미터들은 파라미터 서명자가 소유한 프라이빗 키를 사용하여 서명되어도 되고, 상기 대응한 공개 키의 해시는, 파라미터 서명자 신원으로서 사용되어도 된다.
일 영역(realm)을 작성하는 규칙들은, 서명된 파라미터들이 사용되는 경우, 상기 실제의 보안 구성의 시그니처가 상기 영역이 활성화될 수 있기 전에 상기 예상된 시그니처에 일치해야 하고, 서명자 ID가 영역 비밀들을 도출하기 위한 키 도출들에 포함되도록, 확장된다. 이 규칙들은, 상기 영역 관리 유닛(20)에 의해 집행되고, 소프트웨어에 의해 피해질 수 없다.
이것은, (i) 일 영역의 보안 구성이 정확히 설명되어 있고, (ii) 상기 서명자가 정확한 엔티티일 경우, 단지 활성화될 수 있고, 그것의 비밀들에 액세스할 수 있다는 것을 의미한다. 이 2개의 조건들 중 어느 한쪽이 충족되지 않은 경우, 상기 영역이 시작하지 않을 것이고, 시작하지만 그것의 비밀들에 액세스할 수 없다.
예를 들면, 도 20은, 주어진 영역(realm)의 활성화시에, 그 영역의 보안 구성 파라미터들이, 그 영역이 주어진 하드웨어 플랫폼 상에 인스톨되었던 것을 요구하는 상기 파티에 의해 예상된 것처럼 설정되어 있는지를 검증하기 위해 상기와 같은 파라미터 시그니처들을 사용한 예를 도시한 것이다.
도 20의 상부에 도시된 것처럼, 일 영역(realm)이 작성될 때, 상기 영역의 사용을 요구하는 파티은, 타겟 영역을 시작하여, 특정한 세트의 영역 보안 구성 파라미터들(400)로 상기 타겟 영역을 확립하도록, 부모 영역(realm)에게 요구한다. 예컨대, 그 초기의 영역 파라미터들은, 뱅킹 제공자, 헬스케어 제공자 또는 해당 제공자와 상호작용하기 위한 보안 영역을 상기 하드웨어 부분이 인스톨하기를 원하는 파티 등의 일부의 외부 파티에 의해 상기 부모 영역에 보내진 커맨드들에서 지정되어도 된다. 그 초기의 세트의 영역 보안 구성 파라미터들(400)이, 영역 파라미터 갱신 커맨드들을 사용하여, 상기 부모 영역에 의해 상기 타겟 영역의 영역 디스크립터에 가산될 것이라고 예상될 수도 있다.
예를 들면, 상기 초기의 영역 파라미터들은, (상기 영역 소유권 보호가 실시되는) 제1 메모리(16)로부터 제2 외부 메모리(6)로의 데이터의 이출이 사용가능한지 여부의 표시 406이나, 상기 영역에 대해 디버깅이 사용 가능한지 여부의 표시 408 등의 그 밖의 보안 구성 파라미터들 뿐만 아니라, 상기 영역 유형(402) 등의 상술한 상기 영역 디스크립터의 내용들의 일부도 포함하여도 된다. 상기 보호된 어드레스 범위나, 루트 키들을 도출하기 위한 키 자료 등의 그 밖의 영역 보안 구성 파라미터들은, 상기 부모 영역에 주어진 상기 초기의 세트의 파라미터들에 포함되지 않아도 되지만, 대신에, 상기 영역의 작성시 상기 RMU에 의해 생성되거나, 후술한 것과 같은 신뢰 중재자 영역에 의해 상기 영역에 제공되거나, 상기 영역 자체에 의해 생성되어도 된다.
또한, 초기의 영역 파라미터들(400)은, 상기 영역에 대해 확립되게 된다고 예상된 상기 보안 구성 파라미터들의 서브세트의 시그니처에 대응하는 예상 시그니처(410)를 포함한다. 상기 예상 시그니처(410)는, 상기 예상 보안 구성 파라미터들에 근거하여 파라미터 서명자(예컨대, 상기 영역의 인스톨을 요구하는 파티)에 의해 계산되고, 상기 영역이 작성되기 위한 상기 보안 구성 파라미터들과 함께 상기 부모 영역에 주어진다. 또한, 상기 초기의 영역 파라미터들은, 상기 파라미터 서명자를 식별하는 서명자 ID(412)의 표시도 포함한다. 상기 예상 시그니처(410)와 서명된 ID(412)는, 상기 타겟 영역(realm)이 클린 상태에 있는 동안에 상기 타겟 영역을 구성할 때 상기 부모 영역에 의해 상기 타겟 영역에 대한 영역 디스크립터에 기록되어도 된다.
예를 들면, 상기 예상 시그니처(410)는, 상기 예상 영역 파라미터들의 해시 함수에 근거한 해시값을 생성하고, 그 해시 함수를 상기 파라미터 서명자와 관련된 프라이빗 키를 사용하여 암호화함으로써, 상기 파라미터 서명자에 의해 생성되어도 된다. 상기 서명자 ID(412)는, 비대칭 암호 기법에서 상기 시그니처(410)를 생성하는 데 사용된 상기 프라이빗 키에 대응하는 상기 파라미터 서명자의 공개 키이어도 된다.
상기 예상 시그니처(410)는, 상기 예상된 영역 보안 구성 파라미터들 자체의 서브세트에 대해서 계산되어도 될 뿐만 아니라, 상기 영역이 활성화될 때의 포인트에서 상기 타겟 영역에서 소유한 상기 메모리 영역들(regions)에 저장된다고 예상되는 상기 예상 영역 내용(데이터 및 코드)의 함수으로서 산출되어도 되는 측정값에 기초하여도 된다.
상기 예상 시그니처(410)는, 상기 영역의 보안 구성 파라미터들의 전부를 커버하지 않을 수도 있다. 주어진 영역(realm)에 대한 상기 영역 디스크립터에서 설정될 일부의 보안 구성 파라미터들은, 상기 예상 시그니처(410)의 계산으로부터 제외되어도 된다. 이들은, 상기 예상 시그니처 자체(410)와 상기 서명자 ID(412)를 포함할 수 있다. 또한, 그 영역이 작성되는 것을 필요로 하는 상기 외부 파티에 의해 예상된 보안 구성 설정값들 대신에, 특별한 물리적 플랫폼의 로컬 특징들에 의존하여도 된다. 예컨대, 상기 보호된 어드레스 범위에 대해 규정된 특별한 어드레스들은 주어진 물리 인스턴스상에서 상기 영역에 대해 확립된 특별한 어드레스 매핑에 의존하여도 되거나, 일부의 하드웨어 인스턴스 유일 키들은 특별한 물리 인스턴스의 상기 RMU(20)에 의해 생성되어도 되어서, 상기 파라미터 서명자에 의해 예측가능하지 않을 수도 있어, 그 파라미터 사이닝이 실시되지 않을 수도 있다.
상기 처리 회로에 의해 처리를 가능하게 하기 위해 타겟 영역(realm)을 활성화할 때, 상기 RMU(20)는, 영역 작성에 있어서 상기 파라미터 서명자가 제공한 상기 예상 시그니처(410)에 근거하여 상기 타겟 영역의 상기 영역 디스크립터에서 나타낸 실제의 영역 파라미터들(420)을 검증한다. 이 포인트에서, 상기 RMU는, (i) (또 상술한 것처럼 특정한 파라미터들을 제외하는) 상기 영역의 실제의 보안 구성 파라미터들(420)의 서브세트와, (ii) 상기 타겟 영역에서 소유한 상기 메모리 영역들(regions)의 실제의 영역 내용의 측정(421)의 함수로서 파라미터 시그니처(422)를 판정한다. 예컨대, 특정한 해시 함수(424)는, 상기 영역 보안 구성 파라미터들(420)과 상기 측정값(421)에 적용되어 파라미터 시그니처(422)를 생성하여도 된다. 상기 해시 함수(424)는, 상기 예상 영역 파라미터들 및 예상 영역 내용에 근거한 상기 예상 시그니처(410)를 상기 파라미터 서명자에 의해 생성하는 데 사용되었던 상기 해시 함수에 대응하여도 된다.
또한, 상기 RMU(20)는, 상기 예상 시그니처(410)와 서명자 ID(412)를 상기 타겟 영역(realm)의 영역 디스크립터로부터 취득하고, 상기 예상 시그니처(410) 및 상기 파라미터 시그니처(424)가 일치하는지를 검증한다. 예컨대, 상기 예상 시그니처(410)가 프라이빗 키를 사용하여 상기 예상 파라미터들을 암호화함으로써 상기 파라미터 서명자에 의해 계산되었을 경우, 상기 RMU(10)는 상기 서명자의 공개 키를 상기 서명자 ID(412)로 나타낸 것처럼 사용하여 상기 예상 시그니처(410)를 암호해독하고 나서, 상기 암호해독된 시그니처를 상기 실제의 영역 파라미터들로부터 생성된 파라미터 시그니처(422)를 비교하여도 된다. 또는, 그 밖의 암호 기술들은, 실제의 파라미터들(420)로부터 얻어진 파라미터 시그니처(422)가 예상 시그니처에 일치하는지를 검증하기 위해 가능하다.
일반적으로, 상기 보안 구성 파라미터들(420)로부터 얻어진 실제의 파라미터 시그니처(422)와, 상기 영역의 작성에서 제공된 상기 예상 시그니처(410)의 사이에서 일치가 검출되면, 상기 타겟 영역의 활성화는 (임의의 다른 보안 체크들이 만족된다고 가정하면) 진행되게 허용된다. 한편, 상기 파라미터 시그니처(422)와 상기 예상 시그니처(410)의 사이에서 불일치가 검출되면, 활성화는, 상기 영역이 전혀 활성화되게 허용되지 않도록 폴트(fault)를 생성함으로써, 또는 상기 영역의 활성화를 허가하지만 상기 영역이 정확히 기능하는 것을 방지하여도 되는 상기 영역 내용들을 보호하기 위한 상기 비밀 키들에의 액세스를 거부함으로써, 제한된다. 어느 쪽이든, 상기 시그니처 검증을 사용함으로써, 상기 RMU는, 영역 활성화시에 실제의 파라미터들이, 상기 영역에 의해 인스톨되어야 한다고 예상되면 파라미터들이 설명하는 상기 예상 파라미터들에 일치시켜, 상기 영역의 인스톨을 요구하는 상기 파티에 의해 부모 영역에 주어진 것들로부터 상기 영역 파라미터들을 악의적으로 변경하는 상기 부모 영역을 감시하도록, 집행할 수 있다.
또한, 서명자 ID(412)는, 상기 타겟 영역에 대한 영역 비밀들을 얻기 위한 키 자료에 포함된다. 이것은, 주어진 영역(realm)이 확립되고 그것의 영역 파라미터들이 잘못된 서명자가 제공한 시그니처에 근거하여 확실하다고 검증되면, 비록 해당 영역이 활성화되어도 되지만, 그것은 정확한 서명자와 관련된 키들에 의해 보호되는 데이터에 액세스하기 위한 정확한 키들을 갖지 않을 것이라는 것을 의미한다.
파라미터 시그니처들을 사용하는 이러한 해결방법은, 통상, 암호 시그니처를 사용하여, 일부의 정보를 제공하는 파티의 신원이 일부의 공지된 신원과 일치한다고 검증할 것이므로 상대적으로 특이하다. 그렇지만, 도 20에 도시된 시나리오에 있어서, 영역 작성을 요구하는 파티의 실제의 신원은, 임의의 공지된 신원에 대해 검증되지 않는다. 실제로, 임의의 파티은, 주어진 영역의 작성을 요구하고 그것의 영역이 영역 작성에서 주어진 상기 예상 시그니처가 영역 활성화시에 실제의 파라미터들로부터 생성된 실제의 시그니처와 일치하면 활성화되게 되는 것을 가능하게 하도록, 허용될 수도 있다. 따라서, 공격자가 하나의 예상 시그니처와 상이한 시그니처를 제공하고 실제의 파라미터들이 해당 상이한 시그니처와 일치하는 방식으로 셋업되면, 상기 영역은 활성화되게 허용될 것이다. 그렇지만, 상기 영역에 대한 상기 키 자료에서 서명자의 공개 키의 포함은, 트루 파라미터 서명자에 의해 보호된 데이터에 액세스하게 상기 공격자에 의해 허용되도록 구성된 상기 영역을 보호하여서, 그래도 보안이 집행된다. 상기 시그니처 체킹의 목적은, 상기 영역의 인스톨을 요구하는 상기 파티의 신원을 검증하기 위한 것이 아니라, 오히려 (상기 영역의 인스톨을 누가 요구하였는지간에) 활성화 포인트에서 규정되는 상기 파라미터들이, 상기 영역의 인스톨을 요구할 때 상기 시그니처와 함께 제공되었던 파라미터들과 일치하는 것을 체크하여, 상기 파라미터들을 부적절하게 수정하는 상기 부모 영역에 대해 보호하기 위한 것이다.
도 20에 도시된 것처럼, 상기 영역 파라미터들은, 상기 주어진 영역에 대해 인스톨되는 상기 소프트웨어의 버전을 나타낼 수도 있는 에포크(epoch) 표시(430)도 옵션으로 포함하여도 된다. 상기 에포크(430)는, 상기 예상 시그니처(410)와 상기 파라미터 시그니처(22)에 의해 커버된다. 또한, 상기 에포크(430)는, 상기 영역 비밀들을 얻기 위한 키 자료에 포함된다. 이에 따라, 인스톨되어 있는 상기 영역(realm) 소프트웨어의 버전을 검증할 수 있고 앞선 또는 나중의 영역들/버전들에 의해 확립된 비밀들을 얻거나 사용하도록 영역 소프트웨어의 어떤 버전들이 허용되는지를 체크할 수 있다. 따라서, 주어진 에포크 값을 갖는 특별한 버전의 영역 소프트웨어로 식별된 보안 취약점이 나중에 갱신하여 고정하는 경우, 해당 이슈에는 나중의 에포크 값이 주어질 수 있다. 상기 영역 비밀 도출들은, 일 영역이, 그 자신의 에포크보다 앞서거나 같은 임의의 보안 에포크에 대해 비밀들을 얻거나 사용하게 허용되지만, 그 자신의 에포크보다 임의의 새로운 보안 에포크에 대한 비밀들을 얻을 수 없도록 된 것이어도 된다. 상기 영역 시그니처에 의해 커버된 상기 파라미터들에 상기 에포크를 포함함으로써, 이것은, 영역 작성에서 상기 초기의 영역 파라미터들이 주어지는 것과 상기 영역의 활성화와의 사이에서 그 에포크를 갱신하려고 하는 상기 부모 영역에 대해 보호한다.
도 21은 파라미터 시그니처에 근거하여 영역 파라미터들을 검증하는 방법을 도시하는 흐름도다. 단계 440에서, 활성화되게 되는 상기 타겟 영역의 부모 영역은, 상기 타겟 영역을 지정하는 영역 활성화 커맨드를 발행한다. 단계 442에서, 상기 RMU(20)는, 상기 타겟 영역이 신규 상태에 있는지를 체크하고 그렇지 않은 경우 단계 444에서 폴트가 기동된다. 그 영역이 신규 상태에 있을 경우, 단계 446에서 상기 RMU는 파라미터 사이닝이 사용 가능한지를 체크한다. 일부의 시스템들에서, 파라미터 사이닝은, 상기 시스템에 대해 전체적으로 사용 가능 또는 사용 불가하여도 된다. 그 밖의 구현에 있어서, 파라미터 사이닝은, (예컨대, 상기 부모 영역이 갱신되지 않으면 안되는) 상기 영역 디스크립터의 보안 구성 파라미터를 사용하여) 개개의 영역들에 대해 사용 가능 또는 사용 불가할 수도 있다. 파라미터 사이닝이 사용 불가한 경우, 단계 448에서 상기 타겟 영역의 활성화는 어떠한 파라미터 시그니처들에 상관없이 허용된다.
그렇지만, 파라미터 사이닝이 사용 가능할 경우, 단계 450에서, 상기 RMU는, 상기 영역 파라미터들의 예상 시그니처(410)를 상기 타겟 영역의 상기 영역 디스크립터로부터 취득한다. 단계 452에서, 상기 RMU는, 상기 타겟 영역의 영역 디스크립터에 규정된 실제의 보안 구성 파라미터들(420)의 서브세트에 근거하고, 또 영역 내용(421)의 측정에 근거하여, 상기 파라미터 시그니처(422)를 생성한다. 단계 454에서, 상기 RMU는, 상기 파라미터 시그니처(422)가 상기 예상 시그니처(410)와 일치하는지를 판정하고, 일치할 경우, 단계 456에서 활성화가 허용되고 상기 서명자 ID(412)와 에포크(430)는 상기 영역 비밀들을 얻기 위한 키 자료에 포함된다. 상기 파라미터 시그니처가 상기 예상 시그니처와 일치하지 않는 경우, 단계 458에서는, 활성화 제한을 적용한다. 이것은, 활성화가 성공적이지 않게 하는 폴트를 생성중일 수 있거나, 이와는 달리 활성화는 허용될 수 있지만 구성 설정은 해당 영역이 그것의 영역 비밀들에 액세스하지 않게 지정되어도 된다.
신뢰 중재자 영역(realm)
도 22에 도시된 것처럼, 일 영역(realm)은, 특별한 물리 시스템에 의해 통제된 특별한 시스템상에서 초기에 작성되어도 된다. 일부의 나중의 포인트에서, 그것은 종단되고 나서 동일 또는 상이한 시스템상에서 재시작되어도 되거나, 상기 동일한 영역(realm)의 다수의 인스턴스들은 로드 밸런싱이나 리던던시 목적을 위한 동일한 또는 상이한 시스템상에서 작성되어도 된다. 어느 경우에나, 그것은, 동일한 영역의 인스턴스들 전부가 도출할 수 있는 비밀 키들에 의해 보호된, 동일한 데이터 세트를 공유하도록 필요로 할 수도 있다. 마찬가지로, 상기 영역의 보안 구성 파라미터들은, 동일한 영역(realm)의 다수의 인스턴스들 전체에 걸쳐 일관될 필요가 있을 수도 있다. 영역 재시작을 생존시키는 데 필요하거나, 상이한 시스템상에서 재작성하는 것이 가능한 임의의 바인딩은, 저절로 물리 시스템의 특별한 인스턴스에 의해 관리될 수 없다.
도 23에 도시된 것처럼, 관련된 문제는, 데이터 센터에서 상이한 시스템간에, 또는 상이한 데이터센터간에, 영역들을 이행하여, 이용 가능한 모든 계산 자원들 전체에 걸쳐 부하나, 리던던시 등을 관리할 능력을 필요로 할 수도 있다. 상술한 상기 영역 기반 보호없이 일 시스템의 경우에는, 이행은, 예를 들면, 가성 머신을 중지시키고, 가상 머신 전체를 페이지 아웃(page out)하여, 상이한 머신상에서 재인스톨하고 나서 다시 시작함으로써, 구현되어도 된다. 목적지는, 통상, 상기 이행 프로세스의 시작부분에서 공지되어 있지 않지만 일부의 나중의 포인트에서 판정되어서, 상기 이행된 가상 머신은 임의의 시스템상에서 복귀되게 끝날 수 있다. 일부의 경우에, 그 프로세스는 상기 가상 머신이 죽 작동중인 동안 시작되어도 된다("라이브 이행"). 일 시스템이 상술한 영역 기반(realm-based) 보호들을 사용하면서, 이 기존의 이행 프로세스는 상기 영역 기반 시스템의 기본적 보안 보증을 파손할 것이기 때문에 동작하지 않는다. 예컨대, 일 영역(realm)은, 공지된 보안 특성드을 갖는 일 시스템상에서 시작되어 증명되어 있어도 된다. 통상의 이행 프로세스가 상기 데이터 센터에서 비신뢰 시스템 소프트웨어를 포함하므로, 페이징에 의해 상기와 같은 이행에서는, 주어진 물리 시스템상의 상기 영역이나 상기 RMU(20)는, 상기 영역이 상기 새로운 시스템상에서 활성화되어 있기 전에 목적지 시스템이 동일한 보안 특성들을 갖도록 집행하는 것이 가능하지 않다.
이들은, 주어진 타겟 영역과 관련되고 해당 타겟 영역과 관련된 외부 파티 대신에 상기 타겟 영역을 관리하게 허용되는 신뢰 중재자 영역을 규정함으로써, 해결될 수 있다. 그 신뢰 중재자 영역은, 예를 들면, "프로비저닝된" 비밀들의 주입 및/또는 보안 구성 파라미터들의 보존 및 복원을 포함하는 특정한 영역 관리 기능들을 수행하게 허용되어도 되어, 상이한 물리 플랫폼 사이의 영역들을 이행하거나, "상기 동일한 영역"의 인스턴스마다 비밀 키들과 보안 구성 파라미터들의 일관된 세트를 가지면서 일 영역의 인스턴스들을 끝내고 나중에 회복시키는 것이 가능하다.
도 24에 도시된 것처럼, 주어진 영역 A는, 그의 영역 보안 구성 파라미터들(400)에서(즉 그의 영역 디스크립터(124)에서), 동일한 물리 인스턴스상에서 동작하는 또 하나의 영역인 신뢰 중재자 영역의 식별자(500)를 지정하여도 된다. 예컨대, 상술한 것처럼 글로벌 영역(realm) 식별자(GRID)는, 상기 신뢰 중재자 영역을 식별하는 데 사용되어도 된다. 일부의 경우에, 상기 주어진 영역 A에 대한 영역 디스크립터에서의 상기 보안 구성 파라미터들은, 상기 영역(realm)이 신뢰 중재자 영역과 관련되는지 아닌지를 나타내는 플래그도 포함할 수도 있다. 또는, 이러한 플래그는, 이것이 상기 신뢰 중재자 영역 식별자 필드(500)에서의 값으로부터 연역될 수 있을 경우, 일부의 구현들에서 필수적이지 않을 수도 있다. 예컨대, 상기 신뢰 중재자 영역 식별자(500)가 실제의 영역에 대한 식별자가 허용되지 않는 값으로 설정되면, 이것은, 주어진 영역과 관련된 신뢰 중재자 영역이 없다고 암시적으로 식별할 수 있다. 일 영역은 단지 하나의 신뢰 중재자 영역에 의해 관리되어도 되지만, 일 신뢰 중재자 영역은 동일한 영역을 상기 신뢰 중재자 영역으로서 각기 지정하는 다수의 그 밖의 영역들을 관리하여도 된다.
상기 신뢰 중재자 영역은, 자신의 소유 메모리 페이지들(502)내에 상기 관련된 영역 A를 관리하기 위한 정보를 저장할 수도 있다. 예컨대, 상기 신뢰 중재자 영역은, 비밀 키들이 어떻게 언제 주입될 수 있는지에 대한 정보를 지정하여도 되는 키 관리 정책(506)뿐만 아니라, 영역 A의 데이터와 코드를 보호하기 위한 그 비밀 키들을 얻기 위한 키 자료로서 영역 A에 주입될 수 있는 다수의 프로비저닝된 비밀들(504)을 저장하여도 된다. 또한, 상기 신뢰 중재자 영역의 소유 페이지들(502)은, 영역 A에 대한 영역 디스크립터에 주입될 수 있는 일 세트의 보안 구성 파라미터들을 나타낼 수도 있는 구성 레코드(508)를 저장하여도 된다. 상기 신뢰 중재자 영역에 의한 영역 A에 대한 보안 구성 파라미터들의 갱신은, 상기 영역의 활성화 전에 제한되어도 된다. 상기 영역 디스크립터의 상기 파라미터들의 일부는, 상기 신뢰 중재자 영역(예컨대, 상기 신뢰 중재자 영역 자체의 식별자)에 의해 설정되게 허용되지 않아도 된다.
일부의 예들에서, 상기 보안 구성 레코드(508)는, 상기 신뢰 중재자 영역의 작성에서 상기 신뢰 중재자 영역에 제공되어 있지 않을 수도 있다(예컨대, 상기 신뢰 중재자 영역에 의해 관리되게 되는 상기 영역 A의 보안 구성 레코드(508)는, 상기 신뢰 중재자 영역의 작성에서 상기 신뢰 중재자 영역의 부모 영역에 제공된 정보의 다발에 포함되어도 된다).
또는, 상기 보안 구성 레코드는, 영역 A의 활성화 후 촬영되는 영역 A에 대한 상기 구성 파라미터들의 스냅샷으로서 생성될 수 있다. 예컨대, 상기 신뢰 중재자 영역은, 영역 A에 대한 보안 구성 파라미터들의 스냅샷이 상기 신뢰 중재자 영역에서 소유한 메모리 영역에 보안 구성 레코드로서 복귀되어 저장되는 것을 요구하는 상기 RMU(20)에 커맨드를 발행하게 허용되어도 된다. 이러한 커맨드는, 상기 커맨드를 발행하는 영역이, 영역 A에 대해 규정된 상기 영역 보안 구성 파라미터들(400)내의 상기 식별자(500)에 지정된 상기 신뢰 중재자 영역 이외의 임의의 영역이면, 상기 RMU에 의해 거부되어도 된다. 이에 따라, 활성 영역의 파라미터들이 백업될 수 있어서 그들은, 예컨대, 도 22에 도시된 것처럼 이전에 끝낸 영역의 회복을 허용하거나, 도 23에 도시된 것처럼 상이한 물리 플랫폼에 상기 영역의 이행을 가능하게 하거나, 또는 주어진 영역의 구성을 앞선 상태로 롤백하기 위해, 나중에 복원될 수 있다. 상기 보안 구성 레코드(508)는, 어떻게, 언제 상기 영역의 상이한 플랫폼에의 이행이 허용되는지, 그 이행이 허용되는지의 여부를 제어하고, 어떤 조건 하에서 제어하기 위한 속성들을 규정하여도 되는 이행 정책(510)과 관련되어도 된다.
상기 신뢰 중재자 영역이 제공 비밀들의 주입과, 상기 보안 구성 레코드의 보본 및 복원을 지원하는 것이 필요하지 않다. 일부의 중재자 영역들(또는 상기 영역 기반 아키텍처 전체의 일부의 구현들)은, 이 기능들 중 하나만을 처리 가능하여도 된다.
일 영역이 영역 작성에 있어서 특정한 신뢰 중재자 영역과의 관련은, 상기 RMU(20)가 타겟 영역의 증명서 및/또는 상기 신뢰 중재자 영역의 증명서를 생성하는 것을 요구함으로써 외부의 파티들에 의해 또는 그 밖의 영역들에 의해 검증되어도 된다. 이러한 증명서는, 상기 영역의 보안 구성 파라미터들의 시그니처나, 신뢰 중재자 영역에 의해 관리되는 타겟 영역 A에 대한 상기 영역 내용을 포함하여도 된다. 상기 영역 A에 대해 증명서가 생성될 때, 영역 A가 신뢰 중재자 영역과 관련된다는 사실은, 상기 영역 증명서로부터 분명해질 수도 있다. 타겟 영역 A를 증명할 때, 그 증명서를 체크하는 유효화 엔티티는, 그 관련된 신뢰 중재자 영역도 증명할 수 있는 데, 그 이유는, 상기 중재자 영역의 직접 증명서가 상기 타겟 영역 A에 대한 증명서에 포함되기 때문이거나, 상기 타겟 영역에 대한 증명서가 상기 신뢰 중재자 영역의 식별자를 지정하여, 별도의 증명서 생성 커맨드가 상기 중재자 영역의 별도의 증명서를 요구하게 발행될 수 있도록 하기 때문이다.
따라서, 신뢰 중재자 영역을 규정함으로써, 이것은, 주어진 영역의 다수의 인스턴스들이 시간상 상이한 순간에 또는 공통 키들이나 보안 구성 파라미터들에의 액세스를 각기 공유하는 상이한 물리 플랫폼들상에서 확립되게 하여, 상기 RMU만을 통해 상기 영역의 소유 코드를 통해 안전하게 관리하는 것이 어려울 것이다.
도 25는 타겟 영역과 관련된 보안 구성 파라미터들을 갱신하기 위한 보안 구성 파라미터 갱신 커맨드를 처리하는 방법을 도시한 것이다. 이 커맨드는, 상기 타겟 영역과 관련된 상기 보안 구성 파라미터들을 갱신하는 데 사용될 수 있다. 단계 520에서, 갱신되게 되는 파라미터들을 갖는 타겟 영역을 지정하는 보안 구성 파라미터 갱신 커맨드가 수신된다.
단계 522에서, 상기 RMU는, 이 커맨드에 의해 식별된 타겟 영역이 현재 상기 클린 상태에 있는지를 체크한다. 클린 상태에 있지 않을 경우, 단계 524에서, 상기 영역이 클린 상태로부터 신규 상태로 갔다면 상기 보안 구성 파라미터들이 갱신 가능하지 않으므로 폴트가 생성된다. 상기 영역이 클린 상태에 있을 경우, 단계 524에서는, 그 커맨드를 발행한 상기 영역이 상기 타겟 영역의 부모 영역인지를 판정한다. 부모 영역일 경우, 단계 528에서 상기 RMU는, 상기 갱신이 상기 부모 영역이 갱신되게 허용되는 상기 보안 구성 파라미터들의 서브세트이라면, 상기 요구된 파라미터 갱신을 허용한다. 주어진 영역의 영역 디스크립터의 내용의 일부, 이를테면 비밀 키들은, 상기 주어진 영역의 부모 영역에 액세스 가능하지 않아도 된다. 또한, 일부의 파라미터들, 이를테면 상기 영역(realm)이 상기 신뢰 중재자 영역과 관련되는지의 여부, 상기 신뢰 중재자 영역의 신원, 상기 예상 시그니처(410), 서명자 ID(412) 등은, 부모 영역에 의해 갱신되게 허용되지 않아도 된다.
그 커맨드가 부모 영역에서 발행되지 않았을 경우, 단계 530에서 상기 RMU(20)는, 타겟 영역이 신뢰 중재자 영역과 관련되는지와 상기 커맨드가 상기 신뢰 중재자 영역에 의해 발행되었는지를 체크한다. 상기 타겟 영역이 임의의 신뢰 중재자 영역과 관련되지 않았을 경우나 상기 커맨드가 상기 타겟 영역과 관련된 상기 신뢰 중재자 영역에 의해 발행되지 않았을 경우에, 단계 532에서 폴트가 기동된다. 그렇지 않은 경우, 상기 커맨드가 상기 타겟 영역과 관련된 상기 신뢰 중재자 영역에 의해 발행되었을 경우, 단계 534에서 상기 영역 디스크립터의 파라미터 갱신들이 허용된다. 또, 상기 신뢰 중재자 영역이 갱신하도록 허용되지 않는 파라미터들이 약간 있을 수도 있지만, 이들은 상기 부모 영역이 갱신하도록 허용되지 않는 것들보다 적은 파라미터들일 수도 있다. 예컨대, 상기 신뢰 중재자 영역은, 어느 영역을 상기 신뢰 중재자 영역으로서 식별할지를 변경하도록 허용되지 않을 수도 있다. 그렇지만, 상기 부모 영역과는 달리, 상기 신뢰 중재자 영역은, 상기 영역과 관련된 데이터/코드를 보호하기 위한 키들을 생성하는 키 자료인 프로비저닝된 비밀을 갱신하도록 허용될 수도 있다.
또한, 상기 RMU는, 타겟 영역의 보안 구성 파라미터들의 서브세트의 스냅샷을 나타내는 보안 구성 레코드(508)의 촬영을 기동하기 위한 커맨드를 지원하여도 된다. 이러한 커맨드들은, 타겟 영역에 대한 상기 영역 디스크립터에 규정된 상기 신뢰 중재자 영역에 의해 발행되었을 때 단지 접수되어도 된다.
도 26은, 타겟 영역에 대한 증명서의 생성을 기동하기 위한 증명서 커맨드를 처리하는 방법을 도시한 것이다. 단계 550에서, 상기 RMU(20)는, 증명서가 생성되게 되는 타겟 영역을 식별하는 증명서 커맨드를 수신한다. 단계 552에서는, 상기 증명서 커맨드가 접수될 수 있는지를 판정하고, 접수될 수 없는 경우 단계 554에서 폴트를 생성한다. 각종 체크들은 그 증명서 커맨드가 접수될 수 있는지를 판정하도록 수행될 수 있다. 상기 증명서 커맨드에 의해 식별된 타겟 영역이 무효일 경우, 상기 증명서 커맨드는 거부될 수 있고 폴트는 기동될 수 있다. 또한, 상기 증명서가 상기 타겟 영역과 관련된 신뢰 중재자 영역 이외의 영역에 의해 발행되면, 상기 증명서 커맨드는, 상기 타겟 영역이 활성 상태에 있을 경우는 접수되고 타겟 영역이 또 하나의 상태에 있을 경우에는 거부될 수도 있다. 상기 증명서 커맨드가 신뢰 중재자 영역에 의해 발행되면, 상기 증명서 커맨드는, 타겟 영역이 클린, 신규 또는 활성 상태들 중 어느 하나의 상태에 있을 경우 접수될 수도 있다.
상기 증명서 커맨드가 접수되면, 단계 556에서 증명서 정보는 상기 타겟 영역의 보안 구성 파라미터들에 근거하여 생성되고, 이때의 증명서 정보는 유효화 엔티티가 상기 타겟 영역이 특정한 특성들에 충족하는지를 체크하는 것을 가능하게 하는 일부의 정보를 제공한다. 단계 558에서, 상기 RMU(20)는, 상기 타겟 영역이 신뢰 중재자 영역과 관련되는지를 체크한다. 관련되는 경우, 단계 560에서, RMU(20)는, 타겟 영역이 상기 증명서 정보에서 신뢰 중재자 영역과 관련되는 것을 나타내는 정보를 포함하고, 또한, 상기 신뢰 중재자 영역을 식별하거나 상기 중재자 영역의 특성들에 대해 증명하는 증명서 정보를 제공하는 중재자 영역 증명서 정보도 포함한다. 상기 타겟 영역이 관련된 신뢰 중재자 영역을 갖지 않았을 경우, 단계 560은 생략된다. 어느 쪽이든, 단계 562에서 상기 증명서 정보는, 상기 증명서의 유효성에 대해 증명하는 키로 서명되고, 상기 증명서는 그것을 요구하였던 파티에게 출력된다.
따라서, 상기 타겟 영역이 신뢰 중재자 영역과 관련될 때, 상기 유효화 파티은, 그 증명서를 사용하여, 상기 신뢰 중재자 영역이 특정한 특성들을 갖는지를, 상기 타겟 영역 자체의 증명서를 체크함으로써 또는 상기 신뢰 중재자 영역의 추가의 증명서를 요구하기 위해 상기 타겟 영역의 증명서에 포함된 식별자를 사용함으로써, 체크할 수 있다. 이렇게 하여, 적절히 행하는 신뢰 중재자 영역에 의해 상기 타겟 영역이 정확히 구성되었다는 사실에 대해 신뢰가 보장될 수 있다.
따라서, 요약하면, 신뢰 중재자(intermediary)는, 관리되는 주어진 영역으로서 동일한 영역 관리 파티(예컨대, 동일한 뱅킹 제공자, 헬스케어 제공자 등)과 관련된 영역 자체인 상기 주어진 영역을 관리하도록 규정되어 있다. 가장 단순한 구현에 있어서, (영역 관리 파티마다) 상기 신뢰 중재자의 하나의 인스턴스는, 그 영역들이 존재할 수도 있는 각 시스템상에 제시되어도 된다. 그 신뢰 중재자 자체가 일 영역이므로, 그 신뢰 중재자는 커미셔닝(commissioning)의 일부로서 상기 영역 관리 파티에 의해 증명될 수 있어, 상기 신뢰 중재자가 상기 보안 특성들이 필요한 시스템들 상에서 활성/커미션될 수만 있도록 보장한다.
따라서, 일 영역(realm)은: 단지 상기 식별된 신뢰 중재자가 상기 영역을 관리할 수 있고; 상기 영역이 신뢰 중재자와 관련된다는 사실이 상기 영역 증명서로부터 분명해지고; 그 영역을 증명할 때, 유효화 엔티티가 상기 관련된 신뢰 중재자도 증명할 수 있도록, 영역 작성에 있어서 신뢰 중재자와 관련될 수 있다. 상기 신뢰 중재자는, 일 영역의 보안 컨택스트를 상기 장치(2)의 주어진 물리 인스턴스로부터 수신하고, 동일한 인스턴스나 상이한 인스턴스상의 상기 영역의 보안 컨택스트를 회복시킬 수도 있다. 상기 영역 소유자를 위한 상기 이행 정책은, 상기 영역 소유자와 관련된 상기 신뢰 중재자내에 인코딩된다. 이 정책 자체는, 그 신뢰 중재자를 증명함으로써 증명될 수 있다. 이것은, 어떻게 언제 영역 보안 컨택스트들이 상이한 시스템간에 전달되는지에 대한 정책을 포함한다. 부가의 용도로서, 동일한 방법은, 완전한 영역의 백업/복원 등의 관련된 사용 케이스들, 또는, 이전의 공지된 상태로 롤백되게 하는 일 영역의 스냅 사진들이나 체크포인트들을 촬영하는 것을, 지원할 수 있다.
신뢰 중재자는 관리 영역(managed realm)을 증명한 후 상기 영역을 활성화할 수 있다. 신뢰 중재자에 대해, 상기 영역이 활성화되기 전에, 영역 작성 동안에 프로비저닝된 루트 비밀들을 주입시킨다. 상기 영역 소유자를 위한 키 관리 정책은, 그 영역 소유자와 관련된 신뢰 중재자 내에서 인코딩된다. 이 정책 자체는, 상기 신뢰 중재자를 증명함으로써 증명될 수 있다. 이것은, 일 영역의 재시작 후 동일한 루트 비밀들을 제공하는 것, 또는 동일한 영역의 다수의 인스턴스에 제공하는 것, 또는 일 영역이 어떤 시스템상에서 시작되게 일어나는지에 상관없이 제공하는 것 등을 포함한다.
도 27은 사용될 수도 있는 시뮬레이터 구현을 도시한다. 전술한 실시 예는 관련 기술을 지원하는 특정 처리 하드웨어를 동작시키기 위한 장치 및 방법의 관점에서 본 발명을 구현하지만, 컴퓨터 프로그램을 사용하여 구현되는 본원에 기술된 실시 예에 따라 명령 실행 환경을 제공하는 것이 가능하다. 이러한 컴퓨터 프로그램은 하드웨어 아키텍처의 소프트웨어 기반 구현을 제공하는 한 종종 시뮬레이터라고한다. 다양한 시뮬레이터 컴퓨터 프로그램에는 에뮬레이터, 가상 머신, 모델 및 동적 이진 변환기를 포함한 이진 변환기가 포함된다. 일반적으로, 시뮬레이터 구현은 호스트 프로세서(730)상에서 실행될 수 있으며, 선택적으로 호스트 오퍼레이팅 시스템(720)을 실행하면서, 시뮬레이터 프로그램(710)을 지원한다. 일부 구성에서, 하드웨어와 제공된 명령 실행 환경 사이에는 다중 계층의 시뮬레이션, 및/또는 동일한 호스트 프로세서 상에 제공된 여러 개의 별개의 명령 실행 환경이 있을 수 있다. 과거에는, 합리적인 속도로 실행되는 시뮬레이터 구현을 제공하기 위해 강력한 프로세서가 필요했지만, 호환성이나 재사용의 이유로 또 다른 프로세서에 고유한 코드를 실행하려는 경우와 같은, 특정 상황에서는 이러한 접근방식이 정당화될 수 있다. 예를 들어, 시뮬레이터 구현은 호스트 프로세서 하드웨어에 의해 지원되지 않는 부가 기능을 명령 실행 환경에 제공하거나, 전형적으로 상이한 하드웨어 아키텍처와 연관된 명령 실행 환경을 제공할 수 있다. 시뮬레이션에 대한 개요는 1990년 동계 USENIX 컨퍼런스, Robert Bedichek의“일부 효율적인 아키텍처 시뮬레이션 기법”, 페이지 53-63에 제시되어 있다.
실시 예가 특정 하드웨어 구성 또는 특징을 참조하여 이전에 설명되었던 정도까지, 시뮬레이션된 실시 예에서는, 동등한 기능이 적절한 소프트웨어 구성 또는 특징에 의해 제공될 수 있다. 예를 들어, 특정 회로(이를테면, 상기 MMU 26 및 RMU 20)는 컴퓨터 프로그램 로직(예컨대, 메모리 액세스 프로그램 로직과 영역 관리 프로그램 로직)으로서 시뮬레이션된 실시 예에서 구현될 수 있다. 유사하게, 레지스터 또는 캐시와 같은 메모리 하드웨어는, 시뮬레이션된 실시 예에서 소프트웨어 데이터 구조로서 구현될 수 있다. 전술한 실시 예에서 참조된 하나 이상의 하드웨어 요소가 호스트 하드웨어(예를 들어, 호스트 프로세서(730)) 상에 존재하는 구성에서, 일부 시뮬레이션된 실시 예는 적절한 경우 호스트 하드웨어를 이용할 수 있다.
시뮬레이터 프로그램(710)은 컴퓨터 판독 가능한 저장매체(비일시적 매체일 수 있음)에 저장될 수 있고, 시뮬레이터 프로그램(710)에 의해 모델링되는 하드웨어 아키텍처의 애플리케이션 프로그램 인터페이스와 동일한 (도 2에 도시한 바와 같이 애플리케이션, 운영 체제 및 하이퍼바이저가 포함될 수 있는) 타겟 코드 (700)에 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 상술한 영역 보호 기능에 근거한 메모리 액세스의 제어를 포함하는, 타겟 코드(700)의 프로그램 명령은, 시뮬레이터 프로그램(710)을 사용하여 명령 실행 환경 내에서 실행될 수 있으므로, 상술한 장치(2)의 하드웨어 특징을 실제로 갖지 않는 호스트 컴퓨터(730)는 이들 특징을 에뮬레이트(emulate)할 수 있다.
본 출원에서, "...하도록 구성된"이라는 단어는 장치의 구성요소가 정의된 동작을 수행할 수 있는 구성을 갖는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 구성 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 처리 장치가 기능을 수행하도록 프로그래밍될 수 있다. "구성된"은 정의된 동작을 제공하기 위해 어떠한 방식으로든 장치 요소가 변경되어야 함을 의미하지는 않는다.
본 발명의 예시적인 실시예가 첨부 도면을 참조하여 본 명세서에서 상세하게 설명되었지만, 본 발명은 이러한 구체적인 실시예에 제한되지 않으며, 다양한 변경 및 수정이 첨부된 청구 범위에 의해 정의된 바와 같은 본 발명의 범위 및 사상을 벗어나지 않고 본 기술분양의 당업자에 의해 수행될 수 있음을 이해해야 한다.

Claims (20)

  1. 장치로서:
    하나 이상의 소프트웨어 프로세스에 응답하여 데이터 처리를 수행하는 처리 회로; 및
    주어진 메모리 영역(region)에 대해, 복수의 영역(realm) - 각 영역이 소프트웨어 프로세스들 중 적어도 하나의 적어도 일부에 대응함 - 중에서 지정된 소유자 영역-이 소유자 영역이 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한을 가짐 - 을 규정하는 소유권 정보에 근거하여 복수의 메모리 영역에의 액세스를 제어하는 메모리 액세스 회로를 구비하고;
    주어진 영역(realm)과 관련된 보안 구성 파라미터들에 근거하여 상기 주어진 영역의 연산을 제어하는 영역(realm) 관리 유닛을 더 구비하고;
    상기 주어진 영역에 대한 상기 보안 구성 파라미터들은 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련된다는 것을 지정할 때, 상기 영역 관리 유닛은, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능을 수행하게 허가하도록 구성되는, 장치.
  2. 제 1 항에 있어서,
    상기 영역 관리 기능은, 상기 주어진 영역에 대한 상기 보안 구성 파라미터들의 적어도 일부를 갱신하는 것을 포함하는, 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    루트 영역 이외의 각 영역(realm)은, 그 영역을 작성한 대응한 부모 영역과 관련되고;
    상기 영역 관리 유닛은, 상기 신뢰 중재자 영역을 상기 주어진 영역의 부모 영역 이외의 영역으로서 규정하는 상기 보안 구성 파라미터들을 지원하도록 구성되는, 장치.
  4. 제 3 항에 있어서,
    상기 영역 관리 유닛은, 상기 주어진 영역의 작성시에 상기 부모 영역에서 발행한 적어도 하나의 커맨드에 근거하여, 상기 주어진 영역이 상기 신뢰 중재자 영역과 관련되어 있는지를 설정하도록 구성되는, 장치.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 영역 관리 유닛은, 타겟 영역(realm)을 식별하는 증명서 커맨드에 응답하여, 상기 타겟 영역의 특성들에 대해 증명하는 증명서를 제공하도록 구성되는, 장치.
  6. 제 5 항에 있어서,
    상기 주어진 영역에 대한 상기 보안 구성 파라미터들이, 상기 타겟 영역이 상기 신뢰 중재자 영역과 관련되는 것을 지정할 때, 상기 증명서는, 상기 타겟 영역이 상기 신뢰 중재자 영역과 관련된다는 것을 가리키는 정보를 포함하는, 장치.
  7. 제 5 항 또는 제 6 항에 있어서,
    상기 주어진 영역에 대한 상기 보안 구성 파라미터들이, 상기 타겟 영역이 상기 신뢰 중재자 영역과 관련되는 것을 지정할 때, 상기 타겟 영역에 대한 상기 증명서는 중재자 영역 증명서 정보를 지정하고,
    상기 중재자 영역 증명서 정보는, 상기 신뢰 중재자 영역의 특성들에 대해 증명하거나, 상기 증명서의 수신자가, 상기 타겟 영역과 관련된 상기 신뢰 중재자 영역에 대한 증명서를 요구하는 것을 가능하게 하는 정보를 제공하는, 장치.
  8. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 영역 관리 유닛은, 주어진 영역이 활성화되어 있을 때까지 상기 처리 회로가 주어진 영역을 처리하는 것을 방지하도록 구성되고;
    상기 영역 관리 유닛은, 상기 주어진 영역과 관련된 상기 신뢰 중재자 영역이, 상기 주어진 영역이 활성화되어 있기 전에 상기 주어진 영역에 대한 증명서의 생성을 기동하게, 허가하도록 구성되는, 장치.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 영역 관리 유닛은, 상기 신뢰 중재자 영역이, 상기 주어진 영역에 대한 적어도 하나의 프로비저닝된 비밀을 제공하게 허가하도록 구성되고, 상기 프로비저닝된 비밀은:
    상기 주어진 영역과 관련된 데이터를 보호하기 위한 적어도 하나의 비밀 키; 및
    상기 적어도 하나의 비밀 키를 얻기 위한 키 자료 중,
    적어도 하나를 포함하는, 장치.
  10. 제 9 항에 있어서,
    상기 영역 관리 유닛은, 상기 신뢰 중재자 영역 이외의 임의의 영역이, 상기 주어진 영역에 대한 상기 적어도 하나의 프로비저닝된 비밀을 제공하는 것을 금지시키도록 구성되는, 장치.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 영역 관리 유닛은, 주어진 영역이 활성화되어 있을 때까지 상기 처리 회로가 주어진 영역을 처리하는 것을 방지하도록 구성되고;
    상기 영역 관리 유닛은, 상기 주어진 영역이 활성화되어 있기 전에, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 상기 적어도 하나의 프로비저닝된 비밀을 제공하게, 허가하도록 구성되고;
    상기 영역 관리 유닛은, 상기 주어진 영역이 활성화된 후, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 상기 적어도 하나의 프로비저닝된 비밀을 제공하는 것을 방지하도록 구성되는, 장치.
  12. 제 9 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 영역 관리 유닛은, 상기 신뢰 중재자 영역에서 제공한 키 관리 정책 정보에 근거하여 상기 적어도 하나의 프로비저닝된 비밀의 제공을 관리하도록 구성되는, 장치.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 영역 관리 유닛은, 상기 주어진 영역과 관련된 적어도 상기 보안 구성 파라미터들의 서브세트를 나타내는 보안 구성 레코드를, 상기 신뢰 중재자 영역이 기록하게 허가하도록 구성되는, 장치.
  14. 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 영역 관리 유닛은, 상기 신뢰 중재자 영역에서 이전에 기록한 보안 구성 레코드에 근거하여 상기 주어진 영역과 관련된 적어도 상기 보안 구성 파라미터들의 서브세트를 상기 신뢰 중재자 영역이 갱신하게 허가하도록 구성되는, 장치.
  15. 제 13 항 또는 제 14 항에 있어서,
    상기 영역 관리 유닛은, 상기 신뢰 중재자 영역에서 제공한 정책 정보에 근거하여, 상기 보안 구성 레코더의 기록, 또는, 상기 보안 구성 레코드로부터의 보안 구성 파라미터들의 복원을, 관리하도록 구성되는, 장치.
  16. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 주어진 영역에 대한 상기 보안 구성 파라미터들은,
    영역 유형;
    상기 주어진 영역과 관련된 보호된 어드레스 범위;
    상기 주어진 영역내에 디버깅이 가능하게 되는지 여부의 표시;
    상기 메모리 액세스 회로에 의한 액세스 제어가 실시되는 제1 메모리로부터 제2 메모리에의 데이터의 이출의 허가 여부의 표시; 및
    상기 주어진 영역과 관련된 데이터를 보호하기 위한 적어도 하나의 비밀 키를 얻기 위한 키 자료 중,
    적어도 하나를 포함하는, 장치.
  17. 제 1 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 소유자 영역은 상기 소유자 영역보다 큰 특권 레벨에서 실행된 프로세스에 의해 상기 주어진 메모리 메모리 영역에의 액세스를 방지하는 권한을 갖는, 장치.
  18. 데이터 처리 방법으로서:
    하나 이상의 소프트웨어 프로세스에 응답하여 데이터 처리를 수행하는 단계; 및
    주어진 메모리 영역에 대해, 복수의 영역 - 각 영역이 소프트웨어 프로세스들 중 적어도 하나의 적어도 일부에 대응함 - 중에서 지정된 소유자 영역 - 이 소유자 영역이 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한을 가짐 - 을 규정하는 소유권 정보에 근거하여 복수의 메모리 영역에 대한 소유권 권한을 집행하는 단계를 포함하고;
    상기 주어진 영역과 관련된 보안 구성 파라미터들에 근거하여, 주어진 영역의 연산을 제어하는 단계를 더 포함하고;
    상기 주어진 영역에 대한 상기 보안 구성 파라미터들은 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련된다는 것을 지정할 때, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능을 수행하게 허가되는, 데이터 처리 방법.
  19. 명령 실행 환경을 제공하도록 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램으로서:
    주어진 메모리 영역에 대해, 복수의 영역 - 각 영역이 상기 명령 실행 환경에서 실행된 복수의 소프트웨어 프로세스들 중 적어도 하나의 적어도 일부에 대응함 - 중에서 지정된 소유자 영역 - 이 소유자 영역이 상기 주어진 메모리 영역 내에 저장된 데이터에 액세스하는 것에서 다른 영역들을 제외할 권한을 가짐 - 을 규정하는 소유권 정보에 근거하여 시뮬레이션된 메모리 어드레스 공간의 복수의 메모리 영역에의 액세스를 제어하는 메모리 액세스 프로그램 로직; 및
    상기 주어진 영역과 관련된 보안 구성 파라미터들에 근거하여 주어진 영역의 연산을 제어하는 영역 관리 프로그램 로직을 포함하고;
    상기 주어진 영역에 대한 상기 보안 구성 파라미터들은 상기 주어진 영역이 상기 보안 구성 파라미터들에 의해 식별된 신뢰 중재자 영역과 관련된다는 것을 지정할 때, 상기 신뢰 중재자 영역이 상기 주어진 영역에 대한 적어도 하나의 영역 관리 기능을 수행하게 허가하도록 구성되는, 컴퓨터 프로그램.
  20. 청구항 19의 컴퓨터 프로그램을 기억하는 저장 매체.
KR1020217004821A 2018-10-19 2019-09-03 신뢰 중재자 영역 KR20210075064A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1817041.5 2018-10-19
GB1817041.5A GB2578297B (en) 2018-10-19 2018-10-19 Trusted intermediary realm
PCT/GB2019/052447 WO2020079388A1 (en) 2018-10-19 2019-09-03 Trusted intermediary realm

Publications (1)

Publication Number Publication Date
KR20210075064A true KR20210075064A (ko) 2021-06-22

Family

ID=64453893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217004821A KR20210075064A (ko) 2018-10-19 2019-09-03 신뢰 중재자 영역

Country Status (9)

Country Link
US (1) US11481339B2 (ko)
EP (1) EP3867763B1 (ko)
JP (1) JP7431225B2 (ko)
KR (1) KR20210075064A (ko)
CN (1) CN112805693A (ko)
GB (1) GB2578297B (ko)
IL (1) IL280713B2 (ko)
TW (1) TWI813771B (ko)
WO (1) WO2020079388A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11429289B2 (en) * 2020-03-27 2022-08-30 Intel Corporation Memory map protection mechanism
US11645103B2 (en) * 2020-07-23 2023-05-09 EMC IP Holding Company LLC Method and system for securing the movement of virtual machines between hosts
US11615033B2 (en) * 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
CN113535215B (zh) * 2021-07-20 2024-05-28 抖音视界有限公司 一种虚拟机热升级方法、装置、设备以及存储介质
US20230120785A1 (en) * 2021-10-18 2023-04-20 Sophos Limited Updating a cluster of nodes in a network appliance

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560609B1 (en) * 1999-06-14 2003-05-06 International Business Machines Corporation Delegating instance management functions to underlying resource managers
GB0212315D0 (en) * 2002-05-28 2002-07-10 Symbian Ltd Secure mobile wireless device with protected file systems
US7287140B1 (en) * 2003-07-28 2007-10-23 Massachusetts Institute Of Technology System and technique for fine-grained computer memory protection
US8407704B2 (en) * 2006-09-26 2013-03-26 International Business Machines Corporation Multi-level memory architecture using data structures for storing access rights and performing address translation
US9742560B2 (en) * 2009-06-11 2017-08-22 Microsoft Technology Licensing, Llc Key management in secure network enclaves
US20110022736A1 (en) * 2009-07-21 2011-01-27 Lsi Corporation Methods and apparatus dynamic management of multiplexed phys in a serial attached scsi domain
US9952887B2 (en) * 2014-06-23 2018-04-24 Vmware, Inc. Device simulation in a secure mode supported by hardware architectures
US9710622B2 (en) * 2015-02-23 2017-07-18 Intel Corporation Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539433B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
US10223289B2 (en) * 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US10587411B2 (en) * 2017-04-11 2020-03-10 International Business Machines Corporation Zero-knowledge verifiably attestable transaction containers using secure processors
GB2563889B (en) * 2017-06-28 2019-10-09 Advanced Risc Mach Ltd Realm identifiers for realms for memory access control
GB2563883B (en) * 2017-06-28 2019-10-09 Advanced Risc Mach Ltd Invalidation of a target realm in a realm hierarchy

Also Published As

Publication number Publication date
IL280713A (en) 2021-03-25
EP3867763A1 (en) 2021-08-25
JP2022503972A (ja) 2022-01-12
TWI813771B (zh) 2023-09-01
US20210334222A1 (en) 2021-10-28
GB201817041D0 (en) 2018-12-05
TW202034175A (zh) 2020-09-16
GB2578297A (en) 2020-05-06
IL280713B1 (en) 2023-10-01
CN112805693A (zh) 2021-05-14
IL280713B2 (en) 2024-02-01
WO2020079388A1 (en) 2020-04-23
US11481339B2 (en) 2022-10-25
EP3867763B1 (en) 2023-10-25
JP7431225B2 (ja) 2024-02-14
GB2578297B (en) 2021-07-14

Similar Documents

Publication Publication Date Title
JP7149298B2 (ja) レルム階層における目標レルムの無効化
US11481339B2 (en) Trusted intermediary realm
US11263155B2 (en) Managing fusion of memory regions and ownership attributes for fused memory regions
TWI787289B (zh) 用於轉譯快取查找的領域識別符比較
JP7431224B2 (ja) レルム・セキュリティ構成パラメータのためのパラメータ署名
WO2019002812A1 (en) ARCHITECTURAL STATE MASKING ASSOCIATED WITH A DOMAIN
GB2563884A (en) Exception return instruction
KR20200023376A (ko) 메모리 영역 로킹
WO2019002813A1 (en) SUB-SCORES
US12001541B2 (en) Parameter signature for realm security configuration parameters
KR20200023379A (ko) 영역 실행 컨텍스트 마스킹 및 세이빙
US11237957B2 (en) Scrub-commit state for memory region
GB2564097A (en) Memory region locking
GB2563882A (en) Interrupting sequences of command actions performed upon memory regions