KR102584506B1 - 가상 기계들을 위한 상태 정보 보호 - Google Patents

가상 기계들을 위한 상태 정보 보호 Download PDF

Info

Publication number
KR102584506B1
KR102584506B1 KR1020187000906A KR20187000906A KR102584506B1 KR 102584506 B1 KR102584506 B1 KR 102584506B1 KR 1020187000906 A KR1020187000906 A KR 1020187000906A KR 20187000906 A KR20187000906 A KR 20187000906A KR 102584506 B1 KR102584506 B1 KR 102584506B1
Authority
KR
South Korea
Prior art keywords
registers
processor
hypervisor
contents
data structure
Prior art date
Application number
KR1020187000906A
Other languages
English (en)
Other versions
KR20180011847A (ko
Inventor
데이비드 카플란
둠 린데르트 반
조슈아 쉬프만
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/748,883 external-priority patent/US10152602B2/en
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20180011847A publication Critical patent/KR20180011847A/ko
Application granted granted Critical
Publication of KR102584506B1 publication Critical patent/KR102584506B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Landscapes

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

Abstract

프로세싱 시스템[100]은 프로세서 상에서 실행되는 가상 기계(VM, virtual machine)[200]의 상태를 정의하기 위한 레지스터들[115, 116]을 구현하는 프로세서[102]를 포함한다. 프로세서는 VM의 탈출 조건들[605]을 검출한다. 또한 프로세싱 시스템은 프로세서가 탈출 조건을 검출하는 것에 응답하여 VM의 하이퍼바이저[202]에서 격리되는 제1 데이터 구조[120]에 레지스터들의 콘텐츠를 저장하기 위한 저장 요소[103]를 포함한다. VM은 레지스터들의 서브세트의 콘텐츠를 하이퍼바이저에 선택적으로 노출[625]시키기 위한 것이다.

Description

가상 기계들을 위한 상태 정보 보호
본 발명은 일반적으로 프로세싱 시스템들, 특히 프로세싱 시스템들에서의 정보 보안에 관한 것이다.
별개의 독립적인 프로세서들을 에뮬레이팅하는 하나 이상의 가상 기계(VM)를 구현하기 위해 단일 프로세서의 하드웨어가 사용될 수 있다. 예를 들어, 프로세싱 장치, 메모리 및 프로세서에서의 다른 하드웨어는 다수의 VM을 구현하기 위해 함께 사용될 수 있으며, 각 VM은 그것이 프로세싱 장치로 로딩될 때 완전한 운영 체제를 실행할 수 있는 완전한 시스템 플랫폼으로서 기능한다. 프로세서는 예를 들어, 메모리의 부분들을 상이한 VM들에 할당함으로써, 프로세싱 장치 상에서 실행하기 위한 VM을 로딩함으로써 또는 VM 탈출 프로세스를 처리함으로써, VM들 간에 하드웨어를 나누기 위한 하이퍼바이저를 구현한다. 하이퍼바이저는 VM들의 보안 및 무결성을 보호하기 위해 상이한 VM들을 격리한다. 예를 들어, 종래 하이퍼바이저는 각 VM마다 별개의 메모리 페이지 테이블들 또는 다른 논리 개체들을 정의함으로써 서로 상이한 VM들을 격리한다. 그러나, 상이한 VM들과 연관된 데이터는 하이퍼바이저에 보이게 유지되고 결과적으로 하이퍼바이저는 보안 취약점이 될 수 있다. 따라서, VM 데이터가 무제한으로 하이퍼바이저에 보일 수 있게 하는 신뢰 모델은 특정 환경들, 이를테면 VM 소유자가 하이퍼바이저 및 클라우드 환경을 신뢰하지 않거나 할 수 없는 공공 클라우드 모델들에서는 바람직하지 않다. 예를 들어, 무원칙한 사용자는 사용자가 하이퍼바이저 또는 프로세싱 시스템 상의 다른 VM들의 동작을 변경 및 제어할 수 있게 하는 하이퍼바이저에서의 결함들 또는 버그들을 식별할 수 있을 수 있으며, 이는 다른 VM들을 위해 저장된 개인 데이터를 노출시킬 수 있다.
본 발명은 첨부 도면들을 참조하여 보다 양호하게 이해될 수 있고, 이의 많은 특징 및 이점이 해당 기술분야에서의 통상의 기술자들에게 분명해질 수 있다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 몇몇 실시예에 따라 VM과 연관된 상태 정보의 격리를 위해 제공하는 프로세싱 시스템을 도시한다.
도 2는 몇몇 실시예에 따라 VM들을 위한 정보의 암호 격리를 제공하기 위한 프로세싱 시스템의 예시적인 동작을 도시한다.
도 3은 몇몇 실시예에 따른 가상 기계 통신 블록(VMCB)의 블록도이다.
도 4는 몇몇 실시예에 따라 VM을 위한 정보의 암호 격리를 제공하기 위한 그리고 상태 정보의 일부를 선택적으로 노출시키기 위한 프로세싱 시스템의 예시적인 동작을 도시한다.
도 5는 몇몇 실시예에 따라 VM을 위한 정보를 해독하기 위한 프로세싱 시스템의 예시적인 동작을 도시한다.
도 6은 몇몇 실시예에 따라 프로세서 상에서 VM의 실행을 종료하기 위한 방법에 대한 다이어그램이다.
도 7은 몇몇 실시예에 따라 프로세서 상에서 VM의 실행을 개시하기 위한 방법에 대한 다이어그램이다.
도 8은 몇몇 실시예에 따라 자동 탈출 조건에 응답하여 프로세서 상에서 VM의 실행을 종료하기 위한 방법에 대한 다이어그램이다.
도 9는 몇몇 실시예에 따라 탈출 프로세스의 유형에 기초하여 VM을 위한 탈출 프로세스를 처리하기 위한 방법의 흐름도이다.
프로세싱 시스템에서 가상 기계(VM)를 구현하기 위해 사용되는 소프트웨어 및 VM에 의해 생성되는 데이터(VM 정보로 총칭될 수 있음)는 보안 VM 정보를 암호로 격리하기 위한 프로세싱 시스템의 메모리 액세스 경로에 하드웨어 암호화 모듈을 채용함으로써 보호될 수 있다. 하드웨어 암호화 모듈은 VM에 의해 메모리에 기록되는 데이터를 암호화하고 VM에 의해 메모리로부터 판독되는 데이터를 해독한다. 그 결과, VM에 의해 메모리에 저장되는 데이터는 정확한 암호/해독 키 없이 의미있게 액세스가능하지 않으며, 이는 하이퍼바이저가 이용 불가능하다. 그러나, 본 출원에 설명되는 추가 보안 수단 없이 VM을 실행하면서 프로세서의 상태를 정의하는 레지스터 값들은 하이퍼바이저에게 보이게 유지된다. 따라서 하이퍼바이저는 상태 정보를 변경하여 의도치 않은 거동을 야기하는 제어 흐름 공격들 또는 상태 정보의 반출에 취약하게 유지될 수 있다. 몇몇 상태 레지스터의 콘텐츠는 VM에 의해 개시되는 몇몇 유형의 동작을 수행하기 위해 하이퍼바이저가 이용 가능해야 하기 때문에 단순히 하이퍼바이저에 레지스터 값들을 숨기는 것은(예를 들어, 레지스터 값들을 암호화함으로써) VM의 기능을 크게 제한하거나 VM을 동작 불능으로 만들 수 있다.
VM의 보안은 VM의 상태를 정의하는 상태 레지스터들의 콘텐츠를 하이퍼바이저에서 격리함으로써 그리고 관련 상태 레지스터들 중 하나 이상의 관련 상태 레지스터의 콘텐츠를 하이퍼바이저에 선택적으로 노출시킴으로써 개선된다. 몇몇 실시예에서, 하드웨어 암호화 모듈은 상태 레지스터들의 콘텐츠가 데이터 구조(본 출원에서 "가상 기계 제어 블록" 또는 “VMCB”로 지칭됨)에 기록될 때 그것들을 암호화하고 상태 레지스터들의 콘텐츠가 데이터 구조로부터 판독될 때 그것들을 해독한다. 그 다음 VM은 해독된 값들이 하이퍼바이저에 보이도록 다른 데이터 구조("게스트 하이퍼바이저 통신 블록" 또는 "GHCB")에서의 상태 레지스터들의 콘텐츠를 선택적으로 노출시킬 수 있다. 예를 들어, VM은 월드 스위치(world switch)를 야기하는 탈출 조건을 트리거할 수 있다. 본 명세서에서 사용될 때, 용어 "탈출 조건(exit condition)"은 하버(harbor)가 하이퍼바이저에 제어를 반환하게 하는 임의의 이벤트를 나타낸다. 본 명세서에서 사용될 때, 용어 "월드 스위치"는 VM 또는 하이퍼바이저를 실행에서 제거하고 다른 VM 또는 하이퍼바이저의 실행을 개시하는 것을 나타낸다. VM이 탈출하기 전, 프로세서는 VM에 의해 구현되는 예외 처리기에 예외를 지시한다. 예외 처리기는 하이퍼바이저에 보여야 하는 상태 정보의 부분을 결정하고 VM은 이러한 부분을 GHCB에 노출시킨다. 그 다음 VM은 탈출 프로세스를 개시하고 VM의 상태 레지스터들의 콘텐츠는 VM이 탈출 조건을 개시한 것에 응답하여 암호화되고 다시 VMCB에 기록된다. 프로세서는 하이퍼바이저를 로딩하며, 이는 GHCB에서의 상태 정보의 보이는 부분을 사용하여 VM을 위한 탈출 프로세스를 완료한다.
하이퍼바이저는 VM을 프로세서로 로딩하기 위해 월드 스위치를 개시할 수 있다. VM의 상태 레지스터들의 콘텐츠는 월드 스위치 동안 프로세서 하드웨어에 의해 해독되고 프로세서에서의 상태 레지스터들에 기록된다. 하이퍼바이저는 탈출 프로세스를 완료하면서 GHCB에 저장된 상태 정보의 콘텐츠를 변경할 수 있고 그에 따라 변경들에 기초하여 VM에 대한 상태 레지스터들의 콘텐츠가 업데이트될 수 있다. 예를 들어, 하드웨어 암호화 모듈은 VMCB에 저장된 상태 레지스터들의 콘텐츠를 해독할 수 있고 예외 처리기는 GHCB에 저장된 정보에 기초하여 값들을 업데이트할 수 있다. 몇몇 실시예에서, VMCB에 저장된 암호화된 상태 정보의 체크섬은 상태 정보를 프로세서에 반환하기 전 VMCB에서의 상태 정보를 검증하기 위해 계산 및 사용될 수 있다.
도 1은 몇몇 실시예에 따라 VM과 연관된 상태 정보의 격리를 위해 제공하는 프로세싱 시스템(100)을 도시한다. 프로세싱 시스템(100)은 프로세서(102) 및 메모리(103)를 포함한다. 프로세싱 시스템(100)은 다양한 전자 디바이스, 이를테면 서버, 개인용 컴퓨터, 태블릿, 셋탑 박스, 게이밍 시스템 및 기타 같은 종류의 것 중 임의의 전자 디바이스에 통합될 수 있다. 프로세서(102)는 프로세서(102)의 회로를 정의된 작업들을 수행하도록 조작하는 명령들의 집합들(예를 들어, 컴퓨터 프로그램들)을 실행하도록 작동한다. 메모리(103)는 프로세서(102)에 의해 사용되는 데이터를 저장함으로써 이러한 작업들의 실행을 용이하게 하고, 또한 프로세서(102)에 의해 액세스하기 위한 명령들의 집합들을 저장할 수 있다. 메모리(103)는 랜덤 액세스 메모리(RAM), 비-휘발성 메모리 이를테면 플래시 메모리 또는 하드 디스크 드라이브(HDD) 및 기타 같은 종류의 것 또는 이들의 조합일 수 있다.
명령들의 집합들을 실행하는 동안, 프로세서(102)는 메모리(103)에 데이터를 저장하기 위한 기록 요청들 및 메모리(103)로부터 데이터를 회수하기 위한 판독 요청들을 포함하여, 메모리 액세스 요청들을 생성한다. 각 메모리 액세스 요청은 메모리 액세스 요청의 타겟이 되는 메모리(103)에서의 위치를 나타내는 메모리 어드레스를 포함한다. 판독 요청에 응답하여, 메모리(103)는 판독 요청의 메모리 어드레스에 대응하는 위치에 저장된 정보(데이터 또는 명령들)를 회수하여 정보를 프로세서(102)에 제공한다. 기록 요청에 응답하여, 메모리(103)는 기록 요청의 메모리 어드레스에 대응하는 위치에 요청의 기록 정보를 저장한다.
프로세서(102)는 보안 모듈(104)을 포함한다. 도시된 실시예에서는 보안 모듈(104)이 프로세서(102)에 구현되지만, 보안 모듈의 몇몇 실시예는 프로세서(102)의 외부에 존재하고 버스를 통해 프로세서(102)에 연결될 수 있다. 보안 모듈(104)은 범용 프로세서 코어, 필드 프로그램가능 게이트 어레이(FPGA), 주문형 반도체(ASIC), 프로세서 코어의 동작 모드 또는 프로세서(102)에서 실행될 개체들(예를 들어, VM들, 하이퍼바이저들, 컴퓨트 프로그램들 및 기타 같은 종류의 것)의 레지스트레이션, 실행될 개체들을 위한 보안 키들의 생성 및 식별, 보안 동작들에 대한 프로세싱 시스템(100)의 인증 및 기타 같은 종류의 것을 포함하여, 프로세싱 시스템(100)을 위한 보안 동작들을 수행하도록 설계 및 구성된 다른 모듈로서 구현될 수 있다. 몇몇 실시예에서, 보안 모듈(104)은 그것이 그것의 동작들을 실행하도록 허용되기 전 보안 레지스트레이션 프로세스를 거칠 수 있고, 그것들의 동작들이 단지 보안 동작들에만 제한되게 할 수 있으며, 그에 따라 그것은 그것을 반출에 취약하게 만드는 동작들을 실행할 수 없게 된다. 본 출원에 더 설명될 바와 같이, 보안 모듈(104)의 몇몇 실시예는 보안 키들을 생성함으로써, 프로세싱 시스템(100)에서 실행도록 등록된 개체들을 식별함으로써 그리고 그러한 암호 격리를 가능하게 하는 다른 동작들에 의해 프로세싱 시스템(100)에서의 정보의 암호 격리를 지원한다.
명령들의 실행을 용이하게 하기 위해, 프로세서(102)는 하나 이상의 프로세서 코어, 이를테면 프로세서 코어들(105, 106), 하나 이상의 캐시, 이를테면 캐시들(107, 108, 109), 노스브리지(110) 및 보안 모드 레지스터(111)를 포함한다. 프로세서 코어들(105, 106)은 명령들을 개별적으로 또는 동시에 실행하는 프로세싱 장치들이다. 몇몇 실시예에서, 프로세서 코어들(105, 106)의 각각은 명령들을 페치하는 개별적인 명령 파이프라인을 포함하고, 페치된 명령들을 대응하는 동작들로 디코딩하며, 프로세싱 시스템(100)의 자원들을 사용하여, 메모리 액세스 요청들을 포함하는, 동작들을 실행한다. 프로세서 코어들(105, 106)의 각각은 각각의 메모리 액세스 요청을 다음 두 유형 중 하나로 식별하도록 구 성된다: 메모리 액세스 요청에 대응하는 정보가 암호 보호를 위해 지정된다는 것을 나타내는 보안 메모리 액세스 요청, 또는 메모리 액세스 요청에 대응하는 정보가 암호 보호를 위해 지정되지 않는다는 것을 나타내는 비보안 메모리 액세스 요청.
캐시들(107, 108, 109)은 메모리(103)에 저장된 정보의 서브세트들을 저장하고, 그렇게 함으로써 프로세서 코어들(105, 106)에 각각의 정보 서브세트에 대한 보다 빠른 액세스를 제공하는 메모리 구성요소들이다. 명확성을 위해 캐시(109)가 단일 캐시로서 도시되었지만, 몇몇 실시예에서 캐시(109)는 프로세서(102)의 메모리 계층의 상이한 레벨들에 존재하는 상이한 캐시들을 포함하여, 다수의 캐시를 나타낼 수 있다는 것이 이해될 것이다. 캐시(109)는 메모리 액세스 요청들을 수신하고 그것의 저장 어레이(도 1에 미도시)가 메모리 액세스 요청에 의해 타겟이 되는 정보를 저장하는지 여부를 식별한다. 만약 그렇다면, 캐시(109)는 캐시 적중을 나타내고 저장 어레이에서 메모리 액세스 요청을 충족시킨다. 캐시(109)가 타겟이 된 정보를 저장하지 않는다면, 그것은 캐시 부적중을 나타내고 메모리 액세스 요청을 노스브리지(110)에 제공한다.
노스브리지(110)는 프로세서(102)에 메모리(103)와 통신하기 위한 인터페이스를 제공하는 메모리 제어기이다. 몇몇 실시예에서, 노스브리지(110)는 이를테면 입력/출력 제어기(예를 들어, 사우스브리지, 미도시)와 인터페이싱하는, 그리고 상이한 프로세서 코어들(예를 들어, 프로세서 코어들(105, 106) 및 다른 프로세서 코어들(미도시), 이를테면 그래픽 프로세싱 장치 간 인터페이스를 제공하는, 다른 기능들을 수행할 수 있다. 메모리 제어기로서 그것의 자격으로, 노스브리지(110)는 캐시(109)로부터 메모리 액세스 요청들을 수신하고 그 요청들의 메모리(103)로의 제공을 제어한다. 또한, 노스브리지(110)는 메모리(103)로부터 메모리 액세스 요청들에 대한 응답들을 수신하고 응답들의 캐시(109)로의 제공을 제어한다. 몇몇 실시예에서, 노스브리지(110)는 프로세싱 시스템(100)의 입력/출력 디바이스(미도시)로부터 메모리 액세스 요청들(예를 들어, 직접 메모리 액세스 요청들)을 수신할 수 있고 그것들의 메모리(103)로의 제공을 제어한다.
프로세서 코어들(105, 106)은 각각 대응하는 프로세서 코어의 상태를 정의하기 위한 값들을 저장하는 하나 이상의 대응하는 레지스터의 대응하는 집합을 포함한다. 레지스터(115)는 프로세서 코어(105)에 대한 레지스터들의 이러한 집합을 나타내고 레지스터(116)는 프로세서 코어(106)에 대한 레지스터들의 이러한 집합을 나타낸다. 프로세서(102)의 몇몇 실시예는 하이퍼바이저의 제어 하에서 다수의 VM을 (동시에 또는 독립적으로) 실행하도록 구성된다. 하이퍼바이저 및 VM들의 각각은 프로세서 코어들(105, 106)의 상태를 정의하는 레지스터들(115, 116)에 대응하는 값들의 집합에 의해 정의된다. 따라서 레지스터들(115, 116)에서의 값들은 프로세서(102) 또는 프로세서 코어들(105, 106)이 하이퍼바이저 또는 하나 이상의 VM을 실행하고 있을 때 하이퍼바이저의 상태 또는 하나 이상의 VM의 상태들을 나타낸다. 레지스터들(115, 116)에서의 값들은 하이퍼바이저 또는 VM들에 의해 실행되는 프로그램들에 대한 명령 포인터들, 하이퍼바이저 또는 VM들을 위한 탈출 코드들, 부동 소수점 데이터, 부동 소수점 태그 또는 상태 정보, 부동 소수점 제어 정보, x87 레지스터 상태들, XMM 레지스터 상태들, YMM 레지스터 상태들, 다른 레지스터들이 유효한 정보를 포함하는지 여부를 나타내는 비트들을 포함하는 비트맵, 레지스터들(115, 116)에서의 값들에 기초하여 이전에 계산된 체크섬의 위치 및 기타 같은 종류의 것을 나타내기 위해 사용될 수 있다.
레지스터들(115, 116)에 저장된 값들은 프로세서(102) 상에서 현재 실행되고 있는 개체 또는 개체들에 따라 메모리(103) 및 레지스터들(115, 116) 간에서 이동될 수 있다. 예를 들어, "월드 스위치"는 프로세서(102) 상에서의 제1 VM의 실행을 탈출 또는 유보하고 제2 VM(또는 하이퍼바이저)를 실행을 위해 프로세서(102) 상으로 로딩하기 위해 사용될 수 있다. 제1 VM의 상태를 정의하기 위해 레지스터들(115, 116)에 저장된 값들은 레지스터들(115, 116)로부터 메모리(103)로 이동되고 제2 VM의 상태를 정의하는 상태 레지스터 값들은 메모리(103)로부터 대응하는 레지스터들(115, 116)로 이동된다. 제1 VM 또는 제2 VM의 상태에 따라, 값들은 본 출원에서 논의된 바와 같이, 레지스터들(115, 116)의 상이한 서브세트 내로 또는 그 밖으로 이동될 수 있다.
적어도 일 실시예에서, 프로세싱 시스템(100)은 각 VM이 하이퍼바이저 또는 임의의 다른 VM을 신뢰하지 않거나 할 수 없는 신뢰 모델을 가정한다. 따라서 상이한 VM들과 연관된 정보는 정보가 하이퍼바이저 및 다른 VM들이 액세스 불가능하도록 메모리(103)의 보안 영역(120)에 정보를 저장함으로써 서로 그리고 하이퍼바이저에서 격리될 수 있다. 격리된 정보는 VM과 연관된 명령들의 실행 동안 메모리(103)에 기록되거나 메모리(103)로부터 판독되는 정보를 포함할 수 있다. 또한 격리된 정보는 VM들의 상태들을 나타내는 레지스터들의 콘텐츠를 포함한다. 따라서 각 VM에 대한 레지스터들의 콘텐츠는 본 출원에서 가상 기계 제어 블록(VMCB)(121)로 지칭되는, 데이터 구조(121)에 저장될 수 있다. 예를 들어, 프로세서(102) 상에서 실행되는 VM에 대해 탈출 조건이 검출되는 경우, 레지스터들(115, 116)에서의 값들은 값들이 하이퍼바이저 및 다른 VM들에서 격리되도록 VMCB(121)에 저장된다. 레지스터들(115, 116)의 콘텐츠의 서브세트는 하이퍼바이저에 의해, 예를 들어, 탈출 조건을 검출하는 것에 응답하여 개시된 VM 탈출 프로세스를 완료하도록 요구될 수 있다. 따라서 VM은 본 출원에서 게스트 하이퍼바이저 통신 블록(GHCB)(122)으로 지칭되는, 다른 데이터 구조(122)에 값들을 저장함으로써 하이퍼바이저(또는 다른 VM들)에 레지스터들의 서브세트의 콘텐츠를 선택적으로 노출시킬 수 있다.
몇몇 실시예에서, 정보는 정보를 하이퍼바이저 또는 다른 VM들이 물리적으로 액세스 불가능한 메모리 위치들에 저장함으로써 하이퍼바이저 및 다른 VM들에서 격리될 수 있다. 또한 VM과 연관된 정보는 데이터 구조(121)에 저장된 데이터를 하이퍼바이저 또는 다른 VM들이 알지 못하는 하나 이상의 보안 키를 사용하여 암호화함으로써 하이퍼바이저 및 다른 VM들에서 격리될 수 있다. 예를 들어, 레지스터들(115, 116)의 콘텐츠는 레지스터들의 콘텐츠를 데이터 구조(121)에 저장하기 이전에 하드웨어 암호화 모듈을 사용하여 암호화됨으로써, 정보를 하이퍼바이저 또는 다른 VM들이 액세스 불가능한 데이터 구조(121)에 저장되게 만들 수 있다. 데이터 구조(121)의 위치의 암호화 또는 은폐는 하이퍼바이저 및 다른 VM들에서 정보를 격리하기 위해 함께 또는 별개로 사용될 수 있다.
정보의 암호 격리를 제공하기 위해, 노스브리지(110)는 지정된 암호 표준에 따라, 그리고 키들(126)에 기초하여 정보를 암호화 및 해독하도록 작동하는 하드웨어-구현 암호화 모듈(125)을 포함한다. 몇몇 실시예에서 암호화 모듈(125)은 고급 암호 표준(AES) 암호화 및 해독을 채용하고, 다른 실시예들에서 암호화 모듈(125)은 다른 암호화/해독 기술들을 채용할 수 있다. 암호화 모듈(125)의 몇몇 실시예는 하드코딩 로직(예를 들어, 와이어들, 트레이스들, 트랜지스터들 및 다른 요소들의 고정된, 미리 결정된 집합으로서), 프로그램가능 로직 이를테면 FPGA 또는 하드코딩 및 프로그램가능 로직의 조합을 사용하여 구현될 수 있다.
기록 요청을 수신하는 것에 응답하여, 노스브리지(110)는 요청이 보안 메모리 액세스 요청인지 또는 비보안 메모리 액세스 요청인지를 식별한다. 기록 요청이 비보안 메모리 액세스 요청인 경우, 노스브리지(110)는 암호화 모듈(125)을 우회하고 기록될 정보를 암호화하지 않고 기록 요청을 메모리(103)에 제공한다. 기록 요청이 보안 메모리 액세스 요청인 경우, 노스브리지(110)는 메모리 액세스 요청을 생성한 개체(예를 들어, 프로그램, VM, 소프트웨어 서비스 및 기타 같은 종류의 것)에 부여된 키들(126) 중 하나를 식별한다. 암호화 모듈(125)은 기록될 정보를 암호화하기 위해 선택된 키를 채용하고 기록 요청을 암호화된 정보와 함께 저장을 위해 메모리(103)에 제공한다. 몇몇 실시예에서, 암호화 모듈(125)은 대응하는 정보의 암호화 및 해독을 위해 선택된 키 및 메모리 액세스 요청의 물리적 어드레스 양자를 사용하고 그렇게 함으로써 블록 이동 공격들을 방지한다. 몇몇 실시예에서, 암호화 모듈(125)은 프로세서(102)에서의 제어 비트(미도시)의 상태에 기초하여 암호화 및 해독을 위해 물리적 어드레스를 사용할지 여부를 식별한다. 제어 비트 상태는 보안 모듈(104)에 의해 설정될 수 있다.
판독 요청을 수신하는 것에 응답하여, 노스브리지(110)는 요청을 메모리(103)에 제공한 후 요청에 응답한 정보를 수신한다. 노스브리지(110)가 판독 요청을 비보안 메모리 액세스 요청으로 식별한 경우, 그것은 암호화 모듈(125)을 우회하고 판독 정보를 암호화하지 않고 캐시(108)에 제공한다. 노스브리지(110)가 판독 요청을 보안 메모리 액세스 요청으로 식별한 경우, 그것은 판독 액세스 요청을 생성한 개체에 부여된 키들(126) 중 하나를 식별하고 암호화 모듈(125)은 판독 정보를 해독한다. 노스브리지(110)는 해독된 판독 정보를 저장을 위해 캐시(108)에 제공한다. 몇몇 상황에서, 노스브리지(110)는 정보의 캐시(108)로의 제공을 우회하고 해독된 판독 정보를 대응하는 판독 액세스 요청을 생성한 프로세서 코어에 직접 제공할 수 있다.
또한 호화 모듈(125)은 레지스터들(115, 116)에 저장된 값들을 암호화 및 해독하기 위해 사용된다. 프로세서(102)에서 실행되는 VM에 대한 탈출 조건을 검출하는 것에 응답하여, 노스브리지(110)는 VM에 부여된 키들(126) 중 하나를 식별한다. 암호화 모듈(125)은 레지스터들(115, 116)에 저장된 값을 암호화하기 위해 선택된 키를 채용하고 그 다음 데이터 구조(121)에 저장을 위해 암호화된 값들을 메모리(103)에 제공한다. 실행을 위해 프로세서(102) 상으로 VM을 로딩하기 위한 요청을 검출하는 것에 응답하여, 노스브리지(110)는 VM에 부여된 키들(126) 중 하나를 식별한다. 노스브리지(110)는 데이터 구조(121)에 저장된 암호화된 상태 정보에 대한 요청을 제공하고 요청을 제공하는 것에 응답하여 암호화된 상태 정보를 수신한다. 암호화 모듈(125)은 암호화된 상태 정보를 해독하기 위해 선택된 키를 채용하고 그 다음 노스브리지(110)는 프로세서 코어들(105, 106)의 상태가 VM의 상태를 나타내도록 대응하는 레지스터들(115, 116)에 대입하기 위해 해독된 상태 정보를 사용한다.
레지스터들(115, 116)에서의 값들은 암호화되지 않은 값들을 데이터 구조(122)에 저장함으로써 (예를 들어, 하이퍼바이저 또는 다른 VM들에) 노출될 수 있다. 예를 들어, 프로세서(102)는 프로세서(102) 상에서 실행되는 VM에 대한 탈출 조건을 검출하는 것에 응답하여 예외를 지시할 수 있다. 예외는 탈출 조건의 유형에 기초하여 지시될 수 있다. 예를 들어, 예외는 자동 탈출들에 대해서는 지시되지 않을 수 있고 비자동 탈출들에 대해 지시될 수 있다. 자동 탈출은 VM이 탈출을 인식하게 될 것을 요청하지 않는 그리고 VM이 VM 예외 처리기를 인스턴스화하지 않는 탈출 조건이다. 자동 탈출들은 프로세서 상에서 VM을 정의하는 상태 정보를 변경할 것이 예상되지 않는 이벤트들을 포함할 수 있다. 비자동 탈출들은 탈출 조건이 발생하였다는 것을 VM에 통지할 것을 요청하는 탈출 조건들이다. VM에서의 예외 처리기는 예외를 검출하고, 그에 응답하여 노출될 레지스터들(115, 116)에서의 값들의 서브세트를 결정할 수 있다. 예를 들어, 값들의 서브세트는 VM을 위한 탈출 프로세스를 완료하기 위해 하이퍼바이저에 의해 요구되는 상태 정보에 대응할 수 있다. 따라서 노스브리지(110)는 레지스터들(115, 116)에서의 값들의 서브세트에 대응하는 암호화되지 않은 값들을 데이터 구조(122)에 제공하고, 그렇게 함으로써 값들의 서브세트가 하이퍼바이저 또는 다른 VM들이 액세스 가능하게 만들 수 있다.
몇몇 실시예에서, 보안 모드 레지스터(111)는 암호화 모듈(125)의 동작을 제어하기 위해 채용된다. 보안 모드 레지스터(111)는 프로세서(102) 상에서 실행될 수 있는 각 VM마다 가드-모드-온 필드(130), 가드-모드-활성화 필드(135) 및 확장 가드 모드 필드(140)를 포함한다. 몇몇 실시예에서, 상이한 보안 모드 레지스터들(111)은 프로세서 코어들(105, 106)로 구현될 수 있다. 가드-모드-온 필드(130)가 관련 VM에 대해 지정된 상태(예를 들어, 부정 상태)인 것에 응답하여, 노스브리지(110)는 보안 메모리 액세스 요청들 또는 데이터 구조(121)에 대한 메모리 액세스 요청들을 포함하여, 관련 VM에 의한 모든 메모리 액세스 요청에 대해 암호화 모듈(125)을 우회한다. 이는 프로세싱 시스템(100)이 암호화 및 해독이 프로세서(102)에서 실행되는 모든 프로그램에 대해 우회되는 모드로 작동할 수 있게 한다. 가드-모드-온 필드(130)가 상이한 지정된 상태(예를 들어, 어써트 상태)인 것에 응답하여, 노스브리지(110)는 가드-모드-활성화 필드(135)의 상태를 식별한다. 가드-모드-활성화 필드(135)가 지정된 상태(예를 들어, 부정 상태)인 것에 응답하여, 노스브리지(110)는 VM과 연관된 수신된 메모리 액세스 요청에 대해(보안 메모리 액세스 요청들 또는 데이터 구조(121)에 대한 메모리 액세스 요청들을 포함함) 암호화 모듈(125)을 우회하고, 가드-모드-활성화 필드(135)가 상이한 상태(예를 들어, 어써트 상태)인 것에 응답하여 단지 비보안 메모리 액세스 요청들에 대해서만 암호화 모듈(125)을 우회한다. 확장 가드 모드 필드(140)는 예외들이 탈출 조건들의 특정 유형들 이를테면 비자동 탈출들에 응답하여 지시되는지 여부를 제어하기 위해 사용될 수 있다.
도 2는 몇몇 실시예에 따라 VM들을 위한 정보의 암호 격리를 제공하기 위한 프로세싱 시스템(100)의 예시적인 동작을 도시한다. 도시된 예에서, 프로세서(102)는 VM(200) 및 VM(201)을 동시에 실행하기 위한 것이다. 또한, 프로세서(102)는 프로세싱 시스템(100)의 하드웨어 및 VM들(200, 201) 간 인터페이스를 제공하기 위해 하이퍼바이저(202)를 실행한다. 그것들의 실행 동안, VM들(200, 201)은 본 출원에서 논의된 바와 같이, 메모리(103)로부터의 보안 정보에 액세스(저장 및 회수)하기 위한 것이다. VM들(200, 201)에서의 탈출 조건들은 대응하는 레지스터들(205, 206)에서의 상태 정보가 도 1에 제시된 데이터 구조들(121, 122)에 대응할 수 있는, 데이터 구조들(210, 211)과 같은 대응하는 보안 메모리 위치들에 저장되게 한다. 암호화 모듈(125)은 데이터 구조들(210, 211)에 저장된 VM들(200, 201)에 대한 상태 정보가 암호로 격리되고, 그에 따라 그것들이 그것들의 각각의 VM에 의해서만 액세스될 수 있게 된다는 것을 보장한다. 데이터 구조들(210, 211)에 저장된 암호화된 정보는 다른 VM들 또는 하이퍼바이저(202)에서 격리되고 액세스 불가능하다. 레지스터들(205, 206)에서의 상태 정보는 암호화되지 않은 정보를 데이터 구조(212)에 저장함으로써 선택적으로 노출될 수 있다. 몇몇 실시예에서, 상이한 데이터 구조들(212)은 상이한 VM들과 연관될 수 있다.
작동 시, 프로세서(102)에서 실행될 것이 허용되기 이전에, VM들(200. 201)의 각각은 보안 모듈(104)로 등록된다. 몇몇 실시예에서, VM은 다음과 같이 등록된다: VM 소유주는 예를 들어, 보안 핸드셰이킹 프로토콜을 사용하여 보안 모듈(104)로 보안 통신 채널(도 2에 미도시)을 수립한다. "VMID"로 지정된 식별 값 및 "VMKEY"로 지정된 보안 키는 VM에 대해 생성된다. 이러한 생성은 보안 모듈(104)에서 또는 별개의 보안 디바이스에서 이루어지고 보안 통신 채널을 통해 보안 모듈(104)로 전달될 수 있다. 보안 모듈(104)은 VMKEY 및 VMID 값들의 각각이 대응하는 VM에 고유하다는 것을 보장한다. VM 소유주는 대응하는 VM의 이미지를 암호화(또는 보안 모듈(140)에 암호화할 것을 요청)하고 그것을 하이퍼바이저(202)에 제공하며, 이는 암호화된 이미지를 보안 데이터로서 메모리(103)에 저장한다.
그 후, 프로세서(102)는 VM을 실행하기 위한 요청을 수신한다. 요청에 응답하여, 프로세서(102)는 요청된 VM에 대한 VMID를 보안 모듈(104)에 알린다. 보안 모듈(104)은 VMID에 기초하여, 보안 키들(126)로부터 요청된 VM에 대한 보안 키를 식별하고 보안 키를 암호화 모듈(125)에 제공한다. 도 2의 도시된 예에서, 프로세서(102)는 이하 VM-A(200) 및 VM-B(201)로 지칭될 수 있는, VM들(200, 201) 양자를 실행하기 위한 요청들을 수신했다. 보안 모듈(104)은 VM-A(200)에 대한 키(220)를 그리고 VM-B(201)에 대한 키(221)를 암호화 모듈(125)에 제공한다. 노스브리지(110)는 대응하는 데이터 구조들(210, 211)로부터 VM들(200, 201)에 대한 상태 정보를 요청하고 그 다음 수신된 정보를 대응하는 키들(220, 221)을 사용하여 해독한다. 해독된 상태 정보는 VM들(200, 201)의 상태들을 정의하기 위해 대응하는 레지스터들(205, 206)에 저장된다.
그것들의 실행 동안, VM들(200, 201)은 메모리 액세스 요청들을 생성하고 그것들을 노스브리지(110)에 제공하며, 이는 요청의 메모리 어드레스에 포함된 하나 이상의 비트에 기초하여, 메모리 액세스 요청이 보안 메모리 액세스 요청인지 여부를 식별한다. 그렇지 않다면, 노스브리지(110)는 암호화 모듈(125)을 우회하고 암호화 또는 해독 없이 메모리 액세스 요청을 충족시킨다. 메모리 액세스 요청이 보안 메모리 액세스 요청인 경우, 노스브리지(110)는 메모리 어드레스 또는 메모리 액세스 요청에 제공된 다른 정보에 기초하여, VM들(200, 201) 중 어느 VM이 메모리 액세스 요청을 생성했는지를 식별한다. 암호화 모듈(125)은 메모리 액세스 요청을 생성한 VM에 대응하는 키들(220, 221) 중 하나를 선택하고 선택된 키를 사용하여 메모리 액세스 정보(판독 데이터 및 기록 데이터)에 대해 암호화(기록 요청의 경우) 또는 해독(판독 요청의 경우)을 수행한다. 또한 암호화 모듈(125)은 기록 요청에 관한 해독 및 판독 요청에 관한 암호화를 수행할 수도 있다.
VM들(200, 201) 중 하나 이상은 프로세서에서의 대응하는 VM의 실행을 종료하는 프로세스를 개시하기 위해 탈출 조건을 발생시킬 수 있다. 이러한 프로세스는 VM의 탈출 프로세스로 지칭될 수 있다. 탈출 조건을 검출하는 것에 응답하여, 노스브리지(110)는 하나 이상의 대응하는 레지스터(205, 206)에 저장된 상태 정보에 액세스하고 상태 정보를 하나 이상의 대응하는 키(220, 221)에 기초하여 암호화를 위해 암호화 모듈(125)에 제공한다. 그 다음 노스브리지(110)는 암호화된 정보를 메모리(103)에서의 하나 이상의 대응하는 데이터 구조들(210, 211)에 기록한다. 프로세서(102)는 탈출 조건이 자동 탈출인지 또는 비자동 탈출인지를 결정하고, 탈출 조건이 비자동 탈출인 경우, 프로세서(102)는 탈출 조건을 검출하는 것에 응답하여 예외를 지시한다. 예외 처리기는 레지스터들(205, 206) 중 하나 이상에서의 값들이 하이퍼바이저(202) 또는 다른 VM들(200, 201)에 노출될지 여부를 결정함으로써 예외에 응답한다. 만약 그렇다면, 노스브리지(110)는 암호화 모듈(125)을 우회하고 레지스터들(205, 206)의 서브세트의 암호화되지 않은 콘텐츠를 메모리(103)에서의 데이터 구조(212)에 기록한다.
위에서 설명된 바와 같이, 데이터의 암호 보호는 노스브리지(110)에서 일어나고 암호 보호를 위해 사용되는 키들은 VM들(20. 201) 및 하이퍼바이저(202)가 알지 못하고 액세스 불가능하다. 이는 하나의 VM이 다른 VM에 대한 보안 정보에 액세스할 수 없다는 것을 보장한다. 예를 들어, 탈출시, VM(200)을 정의하는 상태 정보는 데이터 구조(210)에 저장된다. 상태 정보가 VM(200)과 연관되기 때문에, 암호화 모듈(125)은 VM(201)에 부여된 키(221)가 아니라, VM(200)에 부여된 키(220)를 사용하여 상태 정보를 암호화한다. 그에 따라, 하이퍼바이저(202)도 VM(201)도 정확한 키에 액세스할 수 없기 때문에, 하이퍼바이저(202)도 VM(201)도 암호화된 상태 정보를 의미있게 또는 정확하게 해석 또는 해독할 수 없을 것이다. 그에 따라 데이터 구조(210)에 저장된 상태 정보는 VM(201) 및 하이퍼바이저(202)에 의한 액세스에서 암호로 격리된다.
몇몇 실시예에서, 프로세싱 시스템(100)은 보안을 강화하기 위해 키들(220, 221)을 주기적으로 변경한다. 예를 들어, 보안 모듈(104)은 VM이 그것이 재시작될 때 새로운 키를 갖는다는 것을 보장하기 위해 VM이 완전히 종료(일시 정지가 아니라)될 때마다 VM을 위한 새로운 키를 생성할 수 있다. 오래된 키로 메모리(103)에 저장된 VM들 보안 정보에 대해, 보안 모듈(104)은 그러한 정보를 오래된 키를 사용하여 해독할 것을 그리고 새로운 키를 사용하여 정보를 재암호화할 것을 노스브리지(110)에 지시할 수 있고, 그에 따라 보안 정보는 VM이 재시작될 때 액세스 가능하게 된다.
보안 모듈(104)은 VM이 일시 정지 상태에 진입하는 것에 응답하여 VM을 위한 새로운 키를 생성할 수 있다. VM의 부분(예를 들어, 게스트 운영 체제)은 VM에 대해 암호화된 데이터를 저장하는 메모리(103)의 메모리 페이지들을 식별하는 데이터 구조를 유지한다. VM이 일시 정지 상태에 진입하는 것에 응답하여, 보안 모듈(104)은 식별된 메모리 페이지들을 오래된 키를 사용하여 해독할 것을 그리고 새로운 키를 사용하여 메모리 페이지들을 재암호화할 것을 노스브리지(110)에 지시하고, 그렇게 함으로써 VM이 일시 정지 상태를 탈출할 때 그것의 보안 정보에 액세스할 수 있다는 것을 보장한다.
도 3은 몇몇 실시예에 따른 가상 기계 통신 블록(VMCB)의 하나의 예시적인 구현인 데이터 구조(300)의 블록도이다. 데이터 구조(300)는 도 1에 도시된 데이터 구조(121) 또는 도 2에 도시된 데이터 구조들(210, 211)의 몇몇 실시예를 구현하기 위해 사용될 수 있다. 데이터 구조(300)는 프로세서 이를테면 도 1에 도시된 프로세서(102) 상에서 실행될 수 있는 VM에 대해 제어 상태 정보(301)를 저장하기 위한 필드 및 저장 상태 정보(302)를 저장하기 위한 필드를 포함한다. 따라서 데이터 구조(300) 내 정보는 하나 이상의 레지스터 이를테면 도 1에 도시된 레지스터들(115, 116)로부터 데이터 구조(300)에 저장될 수 있고, 데이터 구조(300)로부터 하나 이상의 레지스터로 기록될 수 있다.
제어 상태 정보(301)의 몇몇 실시예는 그것들이 VM, 뿐만 아니라 다른 VM들과 연관된 하이퍼바이저가 액세스 가능하도록 데이터 구조(300)에서 암호화되지 않은 채로 있다. 제어 상태 정보(301)는 하이퍼바이저에 시그널링되는 이벤트들을 나타내는 정보, 인터럽트들이 게스트에 대해 계류 중인지 여부를 나타내는 정보 및 기타 같은 종류의 것을 포함할 수 있다. 하이퍼바이저는 동작들 이를테면 VM을 프로세서로 로딩하는 것 및 탈출 프로세스를 수행하여 프로세서 상에서 VM의 실행을 종료하는 것을 수행하기 위해 제어 상태 정보(301)를 사용한다. 예를 들어, 제어 상태 정보(301)는 본 출원에서 논의되는 바와 같이, 저장 상태 정보(302)의 서브세트를 하이퍼바이저에 노출시키기 위해 사용되는 제2 데이터 구조(305)(이를테면 GHCB)의 위치를 나타내는 기계 특정 레지스터(MSR, machine specific register)의 값을 포함한다. VM의 몇몇 실시예는 제2 데이터 구조(305)의 위치를 나타내는 MSR의 값을 판독 또는 기록할 수 있다.
저장 상태 정보(302)는 프로세서 상에서 실행할 때 VM의 상태를 정의하는 레지스터들의 암호화된 콘텐츠를 포함한다. 저장 상태 정보(302)는 VM에 의해 실행될 명령의 위치 또는 VM에 의해 가장 최근에 실행된 명령의 위치를 나타내는 명령 포인터를 포함한다. 저장 상태 정보(302)의 몇몇 실시예는 하이퍼바이저 또는 VM을 위한 탈출 코드들, 다른 레지스터들이 유효한 정보를 포함하는지 여부를 나타내는 비트들을 포함하는 비트맵, 범용 레지스터 상태 정보, 부동 소수점 태그 또는 상태 정보 또는 부동 소수점 제어 정보를 포함하는 부동 소수점 레지스터 상태 정보, x87 레지스터 상태 정보, XMM 레지스터 상태 정보 및 YMM 레지스터 정보를 포함한다. 또한 저장 상태 정보(302)의 몇몇 실시예는 정보를 레지스터들로부터 데이터 구조(300)로 이동하기 이전에 레지스터들에 저장된 값들에 기초하여 이전에 계산된 체크섬(310)의 위치에 대한 포인터를 포함할 수도 있다. 예를 들어, 체크섬(310)은 도 1에 도시된 메모리(103)에서의 메모리 위치에 저장될 수 있다. 체크섬(310)의 값은 레지스터들에 다시 기록된 정보가 레지스터들로부터 이전에 저장된 정보와 동일하다는 것을 확인하기 위해 사용된다.
몇몇 실시예에서, VM의 상태는 저장 상태 정보(302)에서의 레지스터들의 콘텐츠의 서브세트에 의해 정의될 수 있다. 따라서, 단지 저장 상태 정보(302)의 서브세트가 VM이 프로세서를 탈출할 때 암호화되고 데이터 구조(201)에 저장될 수 있다. 동일한 서브세트가 VM의 실행이 프로세서 상에서 개시될 때 해독되고 프로세서에서의 레지스터들에 기록될 수 있다. 저장 상태 정보(302)의 서브세트는 비트들(316, 317, 318)의 대응하는 어레이(315)로 나타내어 진다. 예를 들어, 비트(316)는 부동 소수점 레지스터 상태가 VM의 상태를 정의하기 위해 사용된다는 것을 나타내기 위해 "1"의 값으로 설정될 수 있고, 비트(317)는 x87 레지스터 상태가 VM의 상태를 정의하기 위해 사용된다는 것을 나타내기 위해 "1"의 값으로 설정될 수 있으며, 비트(318)는 XMM 레지스터 상태가 VM의 상태를 정의하기 위해 사용되지 않는다는 것을 나타내기 위해 "0"의 값으로 설정될 수 있다. 어레이(315)는 기계 특정 레지스터(MSR)로서 구현될 수 있다.
도 4는 몇몇 실시예에 따라 VM을 위한 정보의 암호 격리를 제공하기 위한 그리고 정보의 일부를 선택적으로 노출시키기 위한 프로세싱 시스템(100)의 예시적인 동작을 도시한다. 먼저, VM은 프로세싱 시스템(100) 상에서 실행되고 있다. 프로세싱 시스템(100)은 VM이 프로세싱 시스템 상에서의 실행을 종료하기 위한 것이라는 것을 나타내는 탈출 조건을 검출한다. 탈출 조건을 검출하는 것에 응답하여, 암호화 모듈(125)은 레지스터들(115)의 콘텐츠를 암호화하고 암호화된 값들을 제1 데이터 구조(121)에 저장한다. 또한 프로세싱 시스템(100)은 탈출 조건이 자동 탈출을 나타내는지 또는 비자동 탈출을 나타내는지를 결정할 수 있다. 탈출 조건이 비자동 탈출인 경우, 프로세싱 시스템(100)은 VM 예외 처리기(400)에 의해 처리될 수 있는 예외를 지시한다. VM 예외 처리기(400)는 예를 들어, 하이퍼바이저에 노출될 레지스터들(115)의 콘텐츠의 서브세트를 결정한다. 예를 들어, VM 예외 처리기(400)는 VM을 위한 탈출 프로세스를 완료할 하이퍼바이저에 의해 사용될 레지스터들(115)의 서브세트의 콘텐츠를 노출시킬 수 있다. 그 다음 VM 예외 처리기(400)는 제2 데이터 구조(122)에 값들의 서브세트를 복사한다. VM 예외 처리기(400)는 제2 데이터 구조(122)에 저장된 값들의 서브세트의 복사본들이 암호화되지 않고 그에 따라 다른 개체들에 노출되도록 암호화 모듈(125)을 우회한다.
도 5는 몇몇 실시예에 따라 VM을 위한 정보를 해독하기 위한 프로세싱 시스템(100)의 예시적인 동작을 도시한다. 프로세싱 시스템(100)은 프로세서 이를테면 도 1에 도시된 프로세서(102) 상에서 VM의 실행을 개시하기 위한 명령을 수신한다.명령을 수신하는 것에 응답하여, 암호화 모듈(125)은 제1 데이터 구조(121)에 저장된 정보에 대한 요청을 전달하고, 요청된 암호화된 정보를 수신하며, 그 다음 제1 데이터 구조(121)로부터 수신된 암호화된 정보를 해독한다. 해독된 정보는 대응하는 레지스터들(115)에 저장된다. 개체 이를테면 하이퍼바이저는 프로세싱 시스템(100)이 명령을 수신하기 이전에 제2 데이터 구조(122)에 저장된 정보를 변경하였을 수 있고 그 결과 레지스터들(115)의 콘텐츠의 서브세트가 하이퍼바이저에 의해 이루어지는 변경들을 반영하도록 변경될 필요가 있을 수 있다. 예를 들어, 하이퍼바이저는 VM을 위한 이전 탈출 프로세스를 완료하고 있는 제2 데이터 구조(122)에 저장된 정보의 콘텐츠를 변경할 수 있으며, 이는 따라서 제2 데이터 구조(122)에서의 값들로 된 변경들을 인식하지 못할 수 있다. 비자동 탈출의 경우, VM 예외 처리기(500)는 제2 데이터 구조(122)에 저장된 정보에 대한 요청을 전달하고, 요청된 정보를 수신하며, 정보 중 임의의 정보가 변경되었는지 여부를 결정한다. 만약 그렇다면, VM 예외 처리기(500)는 레지스터들(115)에서 대응하는 값들을 변경할 수 있다.
도 6은 몇몇 실시예에 따라 비자동 탈출 조건에 응답하여 프로세서 상에서 VM의 실행을 종료하기 위한 방법(600)에 대한 다이어그램이다. 본 출원에서 또한 비자동 탈출 프로세스로도 지칭되는 방법(600)은 VM 이를테면 도 2에 도시된 VM들(200, 201), 프로세서(CPU-HW) 이를테면 도 1에 도시된 프로세서(102) 및 하이퍼바이저 이를테면 도 2에 도시된 하이퍼바이저(202)로 구현된다.
블록(605)에서, VM은 프로세서 상의 VM의 실행을 종료하기 위한 비자동 탈출 프로세스를 개시하는 탈출 조건을 트리거한다. 탈출 조건에 응답하여, VM은 프로세서에 의해 검출되는 시그널링(610)을 생성하며, 이는 탈출 조건을 검출하는 것에 응답하여 예외를 생성한다(블록(615)). 예외의 몇몇 실시예는 보안 모드 레지스터 이를테면 도 1에 도시된 보안 모드 레지스터(111)에 저장된 정보에 기초하여 이네이블된다. 예를 들어, 예외는 도 1에 도시된 확장 가드 모드 필드(140)에 저장된 값들에 기초하여 이네이블될 수 있다. 예외는 VM에 의해 트리거되는 탈출 조건에 대한 에러 코드에 대응하는 에러 코드를 가질 수 있다. 그 다음 예외 시그널링(620)은 VM에 제공될 수 있다.
본 출원에서 논의되는 바와 같이, VM의 몇몇 실시예는 프로세서에 의해 생성되는 예외 이를테면 예외(620)를 검출 및 처리하기 위한 VM 예외 처리기를 인스턴스화한다. 예외(620)를 검출하는 것에 응답하여, VM 예외 처리기는 VM을 정의하는 상태 정보의 부분이 탈출 프로세스를 완료하기 이전에 예를 들어, 하이퍼바이저에 노출될지 여부를 결정한다. 블록(625)에서, VM 예외 처리기는 상태 정보의 부분을 노출하며, 이는 프로세서에서의 레지스터들 이를테면 도 1에 도시된 레지스터들(115, 116) 또는 도 2에 도시된 레지스터들(205, 206)의 서브세트의 콘텐츠를 포함할 수 있다. 상태 정보의 부분을 노출시키는 것은 상태 정보의 암호화되지 않은 콘텐츠를 하이퍼바이저가 액세스 가능한 데이터 구조에 기록하는 것을 포함한다. 몇몇 실시예에서, 상태 정보를 노출시키는 것은 상태 정보와 연관된 에러 코드를 데이터 구조에 복사하는 것을 포함한다. 블록(630)에서, VM 예외 처리기는 탈출 명령을 생성하고 탈출 명령 시그널링(635)은 프로세서에 제공된다.
탈출 명령 시그널링(635)에 응답하여, 프로세서는 블록(640)에서 상태 정보를 보호 메모리 위치에 저장한다. 프로세서의 몇몇 실시예는 암호화된 상태 정보를 데이터 구조 이를테면 도 1에 도시된 데이터 구조(121) 또는 도 2에 도시된 데이터 구조들(210, 211)에 저장하기 이전에 상태 정보를 암호화하기 위한 암호화 모듈 이를테면 도 1에 도시된 암호화 모듈(125)을 구현한다. 암호화 모듈은 암호화 모듈 및 VM에 알려진, 그러나 하이퍼바이저를 포함하여 다른 개체들에 알려지지 않은 하나 이상의 보안 키를 사용하여 상태 정보를 암호화한다. 프로세서의 몇몇 실시예는 비트들 이를테면 도 3에 도시된 어레이(315)에서의 비트들(316-318)로 나타내어 지는 레지스터들의 서브세트의 콘텐츠를 저장할 수 있다.
블록(645)에서, 프로세서는 하이퍼바이저 상태 정보를 상태 정보가 보호 메모리에 저장된 이후 레지스터들로 로딩한다. 그 다음 프로세서 레지스터들에 저장된 하이퍼바이저 상태 정보에 기초하여 프로세서 상에서 하이퍼바이저의 실행을 개시하기 위한 시그널링(650)이 프로세서에 의해 제공될 수 있다. 블록(655)에서, 하이퍼바이저는 상태 정보의 노출된 부분에 기초하여 VM을 위한 탈출 프로세스를 완료한다. 탈출 프로세스를 완료하는 것을 상태 정보의 노출된 부분의 콘텐츠를 변경하는 것을 포함할 수 있다. 예를 들어, 하이퍼바이저는 에뮬레이틴된 입력/출력 디바이들로부터 반환된 값들을 사용하여 값들을 변경할 수 있다.
도 7은 몇몇 실시예에 따라 비자동 탈출 조건에 응답하여 프로세서 상에서 VM의 실행을 개시하기 위한 방법(700)에 대한 다이어그램이다. 본 출원에서 또한 실행 프로세스로도 지칭되는 방법(700)은 VM 이를테면 도 2에 도시된 VM들(200, 201), 프로세서(CPU-HW) 이를테면 도 1에 도시된 프로세서(102) 및 하이퍼바이저 이를테면 도 2에 도시된 하이퍼바이저(202)로 구현된다.
블록(705)에서, 하이퍼바이저는 VM에 대한 실행 명령을 지시하고 VM을 실행을 위해 프로세서 상으로 로딩하는 프로세스를 개시하기 위한 시그널링(710)을 프로세서에 전달한다. 블록(715)에서, 프로세서는 보호 메모리로부터 상태 정보를 로딩한다. 예를 들어, 프로세서에서의 실행 모듈은 보호 메모리로부터 암호화된 상태 정보를 요청하고, 암호화된 상태 정보를 수신하며, 암호화된 상태 정보를 해독할 수 있다. 프로세서의 몇몇 실시예는 상태 정보를 해독하고 프로세서에서의 레지스터들에 저장하기 이전에 이전에 계산된 체크섬에 기초하여 암호화된 상태 정보를 검증할 수 있다. 예를 들어, 프로세서는 체크섬 이를테면 도 3에 도시된 체크섬(310)을 사용하여 암호화된 상태 정보를 검증할 수 있다. 그 다음 해독된 상태 정보는 프로세서의 레지스터들로 로딩될 수 있다. 시그널링(720)은 상태 정보가 프로세서의 레지스터들로 로딩되었다는 것을 나타낸다.
시그널링(720)에 응답하여, 블록(725)에서 제어가 VM 예외 처리기로 반환된다. VM 예외 처리기는 도 6에 도시된 탈출 프로세스의 부분으로서 노출된 상태 정보 중 임의의 상태 정보가 예를 들어, 하이퍼바이저에 의해 변경되었는지 여부를 결정한다. 블록(730)에서, VM 예외 처리기는 임의의 것이 검출되는 경우, 변경된 노출된 상태 정보에 대응하는 레지스터들에서의 값들을 변경한다. 블록(735)에서, VM 예외 처리기는 VM으로 제어를 반환하며, 이는 그 다음 프로세서의 레지스터들에 저장된 상태 정보에 기초하여 실행될 수 있다.
도 8은 몇몇 실시예에 따라 자동 탈출 조건에 응답하여 프로세서 상에서 VM의 실행을 종료하기 위한 방법(800)에 대한 다이어그램이다. 본 출원에서 또한 자동 탈출 프로세스로도 지칭되는 방법(800)은 VM 이를테면 도 2에 도시된 VM들(200, 201), 프로세서(CPU-HW) 이를테면 도 1에 도시된 프로세서(102) 및 하이퍼바이저 이를테면 도 2에 도시된 하이퍼바이저(202)로 구현된다.
블록(805)에서, VM은 프로세서 상의 VM의 실행을 종료하기 위한 자동 탈출 프로세스를 개시하는 탈출 조건을 트리거한다. 탈출 조건 트리거에 응답하여, 프로세서는 블록(820)에서 상태 정보를 보호 메모리 위치에 저장한다. 프로세서의 몇몇 실시예는 암호화된 상태 정보를 데이터 구조 이를테면 도 1에 도시된 데이터 구조(121) 또는 도 2에 도시된 데이터 구조들(210, 211)에 저장하기 이전에 상태 정보를 암호화하기 위한 암호화 모듈 이를테면 도 1에 도시된 암호화 모듈(125)을 구현한다. 암호화 모듈은 암호화 모듈 및 VM에 알려진, 그러나 하이퍼바이저를 포함하여 다른 개체들에 알려지지 않은 하나 이상의 보안 키를 사용하여 상태 정보를 암호화한다. 프로세서의 몇몇 실시예는 비트들 이를테면 도 3에 도시된 어레이(315)에서의 비트들(316-318)로 나타내어 지는 레지스터들의 서브세트의 콘텐츠를 저장할 수 있다.
블록(825)에서, 프로세서는 하이퍼바이저 상태 정보를 상태 정보가 보호 메모리에 저장된 이후 레지스터들로 로딩한다. 그 다음 프로세서 레지스터들에 저장된 하이퍼바이저 상태 정보에 기초하여 프로세서 상에서 하이퍼바이저의 실행을 개시하기 위한 시그널링(830)이 프로세서에 의해 제공될 수 있다. 블록(835)에서, 하이퍼바이저는 VM을 위한 탈출 프로세스를 완료한다.
VM의 실행은 자동 탈출 프로세스 다음 프로세서 상에서 개시될 수 있다. 블록(840)에서, 하이퍼바이저는 VM에 대한 실행 명령을 지시하고 VM을 실행을 위해 프로세서 상으로 로딩하는 프로세스를 개시하기 위한 시그널링(845)을 프로세서에 전달한다. 블록(850)에서, 프로세서는 보호 메모리로부터 상태 정보를 로딩한다. 예를 들어, 프로세서에서의 실행 모듈은 보호 메모리로부터 암호화된 상태 정보를 요청하고, 암호화된 상태 정보를 수신하며, 암호화된 상태 정보를 해독할 수 있다. 프로세서의 몇몇 실시예는 상태 정보를 해독하고 프로세서에서의 레지스터들에 저장하기 이전에 이전에 계산된 체크섬에 기초하여 암호화된 상태 정보를 검증할 수 있다. 예를 들어, 프로세서는 체크섬 이를테면 도 3에 도시된 체크섬(310)을 사용하여 암호화된 상태 정보를 검증할 수 있다. 그 다음 해독된 상태 정보는 프로세서의 레지스터들로 로딩될 수 있다. 시그널링(855)은 상태 정보가 프로세서의 레지스터들로 로딩되었다는 것 및 VM이 실행을 시작할 수 있다는 것을 나타낸다.
도 9는 몇몇 실시예에 따라 탈출 프로세스의 유형에 기초하여 VM을 위한 탈출 프로세스를 처리하기 위한 방법(900)의 흐름도이다. 방법(900)은 도 1에 도시된 프로세서(102)의 몇몇 실시예들로 구현될 수 있다. 블록(905)에서, 프로세서는 프로세서 상에서 실행되는 VM에 의해 생성되는 탈출 조건을 검출한다. 결정 블록(910)에서, 프로세서는 VM을 위한 탈출 프로세스의 유형을 결정한다. 탈출 프로세스는 자동 탈출 또는 비자동 탈출일 수 있다. 자동 탈출은 VM이 탈출을 인식하게 될 것을 요청하지 않는 그리고 VM이 VM 예외 처리기를 인스턴스화하지 않는 탈출 조건이다. 자동 탈출들은 프로세서 상에서 VM을 정의하는 상태 정보를 변경할 것이 예상되지 않는 이벤트들을 포함할 수 있다. 비자동 탈출들은 탈출 조건이 발생하였다는 것을 VM에 통지할 것을 요청하는 탈출 조건들이다. VM 예외 처리기는 비자동 탈출 조건들에 응답하여 인스턴스화된다.
프로세서가 결정 블록(910)에서 자동 탈출 조건을 검출하는 경우, 프로세서는 블록(915)에서 상태 정보를 보호 메모리에 저장한다. 예를 들어, 프로세서에서의 암호화 모듈은 본 출원에서 논의된 바와 같이, 상태 정보를 암호화하고 암호화된 상태 정보를 데이터 구조에 저장할 수 있다. 블록(920)에서, 프로세서는 호스트 상태 정보를 상태 정보가 보호 메모리에 저장된 이후 프로세서 레지스터들로 로딩한다. 예를 들어, 프로세서는 VM에 대한 하이퍼바이저를 정의하는 상태 정보를 로딩할 수 있다. 블록(925)에서, 탈출 프로세스는 예를 들어, 하이퍼바이저에 의해 완료된다.
프로세서가 결정 블록(910)에서 비자동 탈출 조건을 검출하는 경우, 프로세서는 블록(930)에서 예외를 생성한다. VM은 비자동 탈출 조건에 응답하여 VM 예외 처리기를 인스턴스화하고 VM 예외 처리기는 다른 개체들 이를테면 하이퍼바이저에 보이게 만들 상태 정보의 서브세트를 결정한다(블록(935)에서). 서브세트는 프로세서 상에서 VM을 정의하는 상태 정보 중 어떤 것도 포함하지 않거나, 그 중 일부 또는 전부를 포함할 수 있다. 블록(940)에서, VM 예외 처리기는 보이는 상태 정보를 비보호 메모리 이를테면 도 1에 도시된 데이터 구조(122) 또는 도 2에 도시된 데이터 구조(212)에 저장한다. 몇몇 실시예에서, 비보호 메모리의 위치는 다른 개체들 이를테면 하이퍼바이저에 암호화되지 않은 제어 상태 정보 이를테면 도 3에 도시된 제어 상태 정보(301)를 사용하여 나타내어 질 수 있다. 블록(945)에서, VM 예외 처리기는 상태 정보를 보호 메모리에 저장함으로써 탈출 프로세스가 완료될 수 있도록 자동 탈출 조건을 생성할 수 있다.
몇몇 실시예에서, 위에서 설명된 기술들의 특정 측면들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다.  소프트웨어는 비-일시적 컴퓨터 판독가능한 저장 매체 상에 저장된 또는 그 외 다르게 유형으로 구현된 실행가능한 명령들의 하나 이상의 집합을 포함한다.  소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 위에서 설명된 기술들의 하나 이상의 측면을 수행하도록 조작하는 명령들 및 특정 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독가능한 저장 매체는 예를 들어, 자기 또는 광 디스크 저장 디바이스, 고체 상태 저장 디바이스들 이를테면 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비-휘발성 메모리 디바이스 또는 디바이스들 및 기타 같은 종류의 것을 포함할 수 있다. 비-일시적 컴퓨터 판독가능한 저장 매체 상에 저장되 실행가능한 명령들은 소스 코드, 어셈블리 언어 코드, 객체 코드 또는 하나 이상의 프로세서에 의해 해석되는 또는 그 외 실행가능한 다른 명령 포캣일 수 있다.
일반적인 설명으로 위에서 설명된 모든 활동 또는 요소가 필수적인 것은 아니라는 것, 특정 활동 또는 디바이스의 일부가 요구되지 않을 수 있다는 것, 그리고 설명된 것들에 더하여 , 하나 이상의 추가 활동이 수행되거나 요소들이 포함될 수 있다는 것을 주의하자. 더 나아가, 활동들이 나열된 순서는 반드시 그것들이 수행되는 순서는 아니다. 또한, 개념들은 특정 실시예들을 참조하여 설명되었다. 그러나, 해당 기술분야에서의 통상의 기술자는 아래 청구항들에 제시된 바와 같이 본 발명의 범위에서 벗어나지 않고 다양한 변경 및 변형이 이루어질 수 있다는 것을 이해한다. 따라서, 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야 하고, 모든 그러한 변형이 본 발명의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들, 및 문제들에 대한 솔루션들이 특정 실시예들에 관해 위에서 설명되었다. 그러나, 혜택들, 다른 이점들, 문제들에 대한 솔루션들, 및 임의의 혜택, 이점, 또는 솔루션이 발생하거나 보다 현저해지게 될 수 있는 임의의 특징(들)은 임의의 또는 모든 청구항의 임계적, 필수적, 또는 본질적 특징인 것으로 간주되지 않아야 한다. 또한, 위에서 개시된 특정 실시예들은 개시된 주제가 본 출원에서의 교시 내용의 혜택을 받는 해당 기술분야에서의 통상의 기술자들에게 분명한 상이한 그러나 균등한 방식들로 변경 및 실시될 수 있기 때문에, 단지 예시적인 것이다. 아래 청구범위에서 설명되는 것 이외에, 제시된 본 출원에서의 구성 또는 설계의 세부 사항에 어떤 제한도 의도되지 않는다. 따라서 위에서 개시된 특정 실시예들이 대체 또는 변경될 수 있고 모든 그러한 변형예가 개시된 주제의 범위 내로 고려된다는 것이 명백하다. 그에 따라, 본 출원에서 추구되는 보호는 아래 청구범위에 제시된 바와 같다.

Claims (15)

  1. 방법으로서,
    가상 기계(VM, virtual machine)[200]의 상태를 정의하기 위한 레지스터들[115, 116]을 구현하는 프로세서[102] 상에서 실행되는 상기 VM의 탈출 조건[605]을 검출하는 단계;
    상기 탈출 조건을 검출하는 것에 응답하여, 상기 VM의 하이퍼바이저[202]가 액세스 불가능한 제1 데이터 구조[121]에 상기 레지스터들의 콘텐츠를 저장하는 단계;
    상기 탈출 조건을 검출하는 것에 응답하여 인스턴스화되는 예외 처리기로 상기 레지스터들의 서브세트[305, 625]를 결정하는 단계; 및
    상기 레지스터들의 상기 서브세트의 콘텐츠를 상기 하이퍼바이저에 선택적으로 노출시키는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 제1 데이터 구조에 상기 레지스터들의 상기 콘텐츠를 저장하는 단계는 상기 하이퍼바이저가 액세스 불가능한 메모리 위치[120]에 상기 레지스터들의 상기 콘텐츠를 저장하는 단계를 포함하는, 방법.
  3. 청구항 1에 있어서, 상기 제1 데이터 구조에 상기 레지스터들의 상기 콘텐츠를 저장하는 단계는 상기 제1 데이터 구조에 상기 레지스터들의 상기 콘텐츠를 저장하기 이전에 하드웨어 암호화 모듈[125]을 사용하여 상기 레지스터들의 상기 콘텐츠를 암호화하는 단계를 포함하는, 방법.
  4. 청구항 1에 있어서, 상기 레지스터들의 상기 서브세트의 상기 콘텐츠를 선택적으로 노출시키는 단계는 상기 하이퍼바이저에 보이는 제2 데이터 구조[122]에 상기 레지스터들의 상기 서브세트의 상기 콘텐츠를 저장하는 단계를 포함하는, 방법.
  5. 청구항 4에 있어서,
    상기 탈출 조건을 검출하는 것에 응답하여 상기 프로세서에 의해 지시되는 예외[615]를 검출하는 단계; 및
    상기 예외를 검출하는 것에 응답하여 상기 하이퍼바이저에 노출될 상기 레지스터들의 상기 콘텐츠의 상기 서브세트를 결정하는 단계를 더 포함하는, 방법.
  6. 청구항 5에 있어서,
    상기 제2 데이터 구조에서의 상기 하이퍼바이저에 노출되는 상기 레지스터들의 상기 콘텐츠의 상기 서브세트에 기초하여 상기 VM을 위한 탈출 프로세스[655]를 완료하는 단계를 더 포함하는, 방법.
  7. 청구항 6에 있어서, 상기 VM을 위한 상기 탈출 프로세스를 완료하는 단계는 상기 제2 데이터 구조에서의 상기 레지스터들의 상기 콘텐츠의 상기 서브세트 중 적어도 하나를 변경하는 단계[730]를 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 탈출 프로세스를 완료한 후 상기 프로세서 상에서 상기 VM의 실행을 개시하는 것에 응답하여 상기 제1 데이터 구조로부터 상기 레지스터들의 상기 콘텐츠를 로딩하는 단계; 및
    상기 제2 데이터 구조에서의 상기 레지스터들의 상기 콘텐츠의 상기 서브세트 중 변경된 상기 적어도 하나에 대응하도록 상기 레지스터들에서의 적어도 하나의 값을 변경하는 단계를 더 포함하는, 방법.
  9. 청구항 8에 있어서, 상기 제1 데이터 구조로부터 상기 레지스터들의 상기 콘텐츠를 로딩하는 단계는 이전에 저장된 체크섬에 매칭하는 상기 제1 데이터 구조에서의 상기 레지스터들의 상기 콘텐츠에 기초하여 계산되는 체크섬에 응답하여 상기 제1 데이터 구조로부터 상기 레지스터들의 상기 콘텐츠를 로딩하는 단계를 포함하는, 방법.
  10. 장치로서,
    프로세서[102] 상에서 실행되는 가상 기계(VM)[200]의 상태를 정의하기 위한 레지스터들[115, 116]을 구현하는 상기 프로세서를 포함하되, 상기 프로세서는 상기 VM의 탈출 조건들[605]을 검출하되, 상기 프로세서는 상기 프로세서가 탈출 조건을 검출하는 것에 응답하여, 상기 VM의 하이퍼바이저[202]가 액세스 불가능한 제1 데이터 구조[121]에서의 상기 레지스터들의 콘텐츠를 저장하기 위한 것이고, 상기 VM은 상기 하이퍼바이저에 상기 레지스터들의 서브세트의 콘텐츠를 선택적으로 노출[305]시키기 위한 것이고, 상기 서브세트는 상기 탈출 조건을 검출하는 것에 응답하여 인스턴스화되는 예외 처리기[400]에 의해 결정되는 것인, 장치.
  11. 청구항 10에 있어서, 상기 프로세서는 상기 하이퍼바이저가 액세스 불가능한 위치[120]에 상기 레지스터들의 상기 콘텐츠를 저장하기 위한 것인, 장치.
  12. 청구항 10에 있어서,
    상기 제1 데이터 구조에 상기 레지스터들의 상기 콘텐츠를 저장하기 이전에 상기 레지스터들의 상기 콘텐츠를 암호화하기 위한 하드웨어 암호화 모듈[125]을 더 포함하는, 장치.
  13. 청구항 10에 있어서, 상기 VM은 상기 하이퍼바이저에 보이는 제2 데이터 구조[122]에 상기 레지스터들의 상기 서브세트의 상기 콘텐츠를 저장함으로써 상기 레지스터들의 상기 서브세트의 상기 콘텐츠를 선택적으로 노출시키기 위한 것인, 장치.
  14. 청구항 13에 있어서, 상기 VM은 상기 탈출 조건을 검출하는 것에 응답하여 상기 프로세서에 의해 지시되는 예외를 검출하기 위해 상기 예외 처리기[400]를 실행하기 위한 그리고 상기 예외를 검출하는 것에 응답하여, 상기 하이퍼바이저에 노출될 상기 레지스터들의 상기 콘텐츠의 상기 서브세트를 결정하기 위한 것인, 장치.
  15. 청구항 14에 있어서, 상기 하이퍼바이저는 상기 제2 데이터 구조에서의 상기 하이퍼바이저에 노출되는 상기 레지스터들의 상기 콘텐츠의 상기 서브세트에 기초하여 상기 VM을 위한 탈출 프로세스[655]를 완료하기 위한 것인, 장치.
KR1020187000906A 2015-06-24 2016-06-22 가상 기계들을 위한 상태 정보 보호 KR102584506B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/748,883 2015-06-24
US14/748,883 US10152602B2 (en) 2014-02-28 2015-06-24 Protecting state information for virtual machines
PCT/US2016/038694 WO2016209915A1 (en) 2015-06-24 2016-06-22 Protecting state information for virtual machines

Publications (2)

Publication Number Publication Date
KR20180011847A KR20180011847A (ko) 2018-02-02
KR102584506B1 true KR102584506B1 (ko) 2023-10-04

Family

ID=57586202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187000906A KR102584506B1 (ko) 2015-06-24 2016-06-22 가상 기계들을 위한 상태 정보 보호

Country Status (4)

Country Link
EP (1) EP3314502B1 (ko)
JP (1) JP6672341B2 (ko)
KR (1) KR102584506B1 (ko)
WO (1) WO2016209915A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534730B1 (en) 2018-12-20 2020-01-14 Ati Technologies Ulc Storing microcode for a virtual function in a trusted memory region
US10956188B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
US11438171B2 (en) * 2020-03-05 2022-09-06 Micron Technology, Inc. Virtualized authentication device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060021066A1 (en) * 2004-07-26 2006-01-26 Ray Clayton Data encryption system and method
US20100115513A1 (en) * 2008-10-30 2010-05-06 Hitachi, Ltd. Virtual machine control method and virtual machine system
US20100175108A1 (en) * 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
US20130097392A1 (en) * 2011-10-13 2013-04-18 International Business Machines Corporation Protecting memory of a virtual guest

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415708B2 (en) * 2003-06-26 2008-08-19 Intel Corporation Virtual machine management using processor state information
US8555081B2 (en) * 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8219990B2 (en) * 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8612975B2 (en) * 2009-07-07 2013-12-17 Advanced Micro Devices, Inc. World switch between virtual machines with selective storage of state information
US20120054740A1 (en) * 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060021066A1 (en) * 2004-07-26 2006-01-26 Ray Clayton Data encryption system and method
US20100115513A1 (en) * 2008-10-30 2010-05-06 Hitachi, Ltd. Virtual machine control method and virtual machine system
US20100175108A1 (en) * 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
US20130097392A1 (en) * 2011-10-13 2013-04-18 International Business Machines Corporation Protecting memory of a virtual guest

Also Published As

Publication number Publication date
WO2016209915A1 (en) 2016-12-29
JP6672341B2 (ja) 2020-03-25
EP3314502A4 (en) 2019-03-20
EP3314502A1 (en) 2018-05-02
JP2018526720A (ja) 2018-09-13
EP3314502B1 (en) 2021-11-10
KR20180011847A (ko) 2018-02-02

Similar Documents

Publication Publication Date Title
US10152602B2 (en) Protecting state information for virtual machines
US11354423B2 (en) Cryptographic isolation of memory compartments in a computing environment
KR102107711B1 (ko) 처리 시스템에서의 직접 메모리 액세스 인가
US9830162B2 (en) Technologies for indirect branch target security
TWI697805B (zh) 載入和虛擬化密碼金鑰
US11669625B2 (en) Data type based cryptographic computing
US10095862B2 (en) System for executing code with blind hypervision mechanism
US9639671B2 (en) Secure execution of encrypted program instructions
US20080229117A1 (en) Apparatus for preventing digital piracy
CN112639778A (zh) 指针认证及指针认证方案之间的动态切换
US10956157B1 (en) Taint protection during speculative execution
US10644888B2 (en) Systems and methods for providing I/O state protections in a virtualized environment
US11580035B2 (en) Fine-grained stack protection using cryptographic computing
EP4033367A1 (en) Memory protection with non-readable pages
JP6682752B2 (ja) セキュアエンクレーブを用いてデータ暗号化を強化するための技術
KR102584506B1 (ko) 가상 기계들을 위한 상태 정보 보호
JP2023047278A (ja) トランスフォーマ鍵識別子を使用する仮想機械マネージャによる信頼されたドメイン保護メモリへのシームレスなアクセス
US11842227B2 (en) Hypervisor secure event handling at a processor
US20240176638A1 (en) Register protection for confidential computing environment
US20200089870A1 (en) Intrusion detection systems

Legal Events

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