[[분류: 가상화]

개요

ARM Confidential compute architecture (ARM CCA)는 Hypervisor와 Guest VM을 분리하여서, VM이 사용하는 code, register state 그리고 data에 접근할 수 없도록 강력한 하드웨어 기반 platform을 제공한다.

각각의 Guest VM들은 Realms(왕국)이라 불리는 분리된 영역에서 실행된다. Realms들은 Hypervisor, 서로다른 Realms, 그리고 normal world와 완전히 분리되어서 실행된다.

Realms들을 관리하는 hardware extension을 ARM은 ARM Realm Management Extension (RME)로 불르며, RME는 Realm Management Monitor (RMM)라 불리는 특수한 Firmware을 통해서 컨트롤된다.

Realm
Realm은 CCA가 관리하는 VM이나 Application의 단위이다. Realm은 Attestation될수 있으며, Realm이 사용할 자원할당, Scheduling은 조절할 수 있지만, 정확히 Realm이 사용하는 명령어와 메모리 state와 같은 internal state은 접근할 수 없다. Hypervisor은 RMM을 통해서 Realm들을 관리한다.

ARM CCA 하드웨어 아키텍쳐

Realm World

ARM CCA Hardware Architecture.png

Realm VM은 EL0, EL1에서 동작하며, AMD CCA Software Stack에서 제공하는 RMM을 통하여 EL3에 있는 Monitor와 통신할 수 있다. Monitor는 Normal world, Secure world (기존 Trusted Zone), Realm들의 통신을 담당하며, Hypervisor또한 Monitor을 통하여 RMM과 통신할 수 있다.

Memory management

Physical address space는 다음과 같은 4개의 종류로 나뉘어 질 수 있다.

  • Non-secure physical address space: Root, Realm, Secure, Non-secure
  • Secure physical address space: Secure, Root
  • Realm physical address space: Root, Realm
  • Root physical address space: Root

CPU Statedp 따라서 접근할 수 있는 Address space종류가 달라진다. 여기서는 ":"뒤에 표시하였다.

여기서, ARM CPU는 MMU를 통해서 접근 가능한 메모리들을 판별한다. 이 작업을 Granule Protection Check (GPC)라고 부른다.

Granule Protection Check
모든 Physical address는 Granule Protection Table (GPT)라는 특수한 테이블에의해서 관리된다. RMM은 GPT테이블을 업데이트하여 권한을 변경할 수 있다. 만약 Access violation이 발생하면 Granule Protection Fault (#GPF)라는 Fault가 발생한다. GPF는 우선 RMM으로 가서 RMM이 Injection이켜주어야 한다.

Attestation

VM이 실제로 ARM Realm위에서 돌고 있는지 확인하기 위해서 ARM CPU는 Attestation기법을 제공한다. Attestation은 다음과 같은 두가지 파트로 나뉘어져 있다.

  • Platform Attestation: Platform이 진실된 Realm환경을 제공하는지 체크한다.
  • Initial state attestation: 제공하는 State가 진실한지를 체크한다. 예를 들어서 현재 Realm이 Debug모드는 아닌지 체크한다.

ARM CCA 소트프웨어 아키텍쳐

RMM은 하드웨어에 의해서 제공되는 Firmware로써, 다른 protection domain사이의 Communication이나 Context switching과 같은 일들을 수행한다. 그러나 RMM은 Policy decision은 내리지 않는다. 이러한 Decision은 Normal world에 존재하는 Hypervisor에 의해서 control된다.

SMC Instruction
Secure monitor call (ARM SMC)는 RMM, Hypervisor가 Monitor와 통신할 수 있는 API를 제공한다. 이를 통해서 각각의 Protection domain은 Monitor와 통신하고 Monitor가 대화를 중계하여서, 다른 도메인에 전송한다.
Realm Management Monitor
RMM은 Policy와 Mechanism의 분리를 위해서 도입된 개념이다. Hypervisor은 SMC콜을 통해서, 특정 operation들에 대한 Policy를 설정할 수 있고, RMM은 그에 따라서 Realm VM의 request를 처리한다.

Hypervisor는 다음과 같은 일들에 대한 Policy를 RMM을 통해서 설정한다.

  • Realm의 생성과 종료
  • Realm에 메모리 할당과 reclaim
  • Realm에 대한 스케쥴링을 언제 할 것인지

RMM은 다음과 같은 일을 Realm을 위해서 처리한다.

  • Realm page table의 설정
  • Realm context의 저장과 복귀
  • Interrupt 처리
  • Attestation서비스 제공, 등
Realm Management Interface
Host는 RMM을 설정하기 위해서 Realm Management Interface를 SMC Call을 통해서 호출한다. RMI는 Hypervisor의 특정 Request를 RMM에 전달하는 역활을 한다.
Realm Service Interface
Realm Service Interface (RSI)는 RMM에서 Realm VM으로 가는 API를 제공한다. RSI를 통해서 RMM은 Realm VM과 통신하며 Attestation이나 Cryptographic service들을 제공한다.