KR102257320B1 - 하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링 - Google Patents

하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링 Download PDF

Info

Publication number
KR102257320B1
KR102257320B1 KR1020197026855A KR20197026855A KR102257320B1 KR 102257320 B1 KR102257320 B1 KR 102257320B1 KR 1020197026855 A KR1020197026855 A KR 1020197026855A KR 20197026855 A KR20197026855 A KR 20197026855A KR 102257320 B1 KR102257320 B1 KR 102257320B1
Authority
KR
South Korea
Prior art keywords
memory
hypervisor
virtual machine
memory page
subset
Prior art date
Application number
KR1020197026855A
Other languages
English (en)
Other versions
KR20190125985A (ko
Inventor
데이비드 카플란
제레미 더블유. 포웰
리차드 렐프
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20190125985A publication Critical patent/KR20190125985A/ko
Application granted granted Critical
Publication of KR102257320B1 publication Critical patent/KR102257320B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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

Landscapes

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

Abstract

프로세싱 시스템[100]의 프로세서[102]의 메모리 접근 경로에서의 보안 모듈[130]이 메모리 페이지들의 컨텐츠가 프로세서에서 실행하는 하나 이상의 가상 머신(VM)([150. 151]과 VM들 및 프로세싱 시스템의 하드웨어 간 인터페이스를 제공하는 하이퍼바이저[152] 간을 이행할 때 그것들을 검증함으로써 보안 정보를 보호한다. 프로세서의 보안 모듈은 그것들이 하나 이상의 VM과 하이퍼바이저 간을 이해할 때 하이퍼바이저 또는 그 외 다른 VM에 의해 달라진 메모리 페이지들이 그것들이 이행되었던 VM으로 리턴될 수 없도록 모니터링하는데 이용된다.

Description

하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링
관련 출원 상호 참조
본 출원은 다음의 동시 계류중인 출원과 관련되고 그 우선권을 주장하며, 이의 전체 내용이 본 명세서에 참고로 통합된다: 2017년 3월 29일에 출원된 “PSP/HV Flows with SNP”라는 명칭의 미국 가 특허 출원 일련 번호 62/478,148(대리인 문서 번호 1458-17TEMP01-PR).
많은 프로세서 응용 분야에서, 정보 보호는 중요한 특징이다. 예를 들어, 프로세서는 서비스형 인프라의 서버에 사용될 수 있으며, 이때 프로세서는 하나 이상의 가상 머신(VM)을 실행하고 하이퍼바이저를 실행하여 VM들 간에 서버 하드웨어를 분배하고 VM들을 서로 분리시킨다. 상이한 VM들은 상이한 고객들을 위해 실행될 수 있으며, 따라서 각 VM에 의해 이용되는 정보(명령들 및 데이터)가 그 외 다른 VM들에 의한 그리고 하이퍼바이저에 의한 접근으로부터 보호되는 것이 바람직하다. 그러나, 하이퍼바이저에서의 허점들(예를 들어, 버그들)은 하이퍼바이저 자체를 부당 이용에 취약하게 할 수 있어, 하이퍼바이저 또는 VM이 다른 VM의 정보에 접근할 수 있게 한다.
본 발명은 첨부 도면들을 참조하여 보다 양호하게 이해될 수 있고, 이의 많은 특징 및 이점이 해당 기술분야의 통상의 기술자들에게 분명해진다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시 예에 따라 하이퍼바이저와 함께 보안 모듈을 이용하여 VM과 하이퍼바이저 간을 이행하는 메모리 페이지들의 컨텐츠를 검증하는 프로세싱 시스템의 블록도이다.
도 2는 일부 실시 예에 따라 VM과 하이퍼바이저 간을 이행하는 메모리 페이지의 해시를 생성 및 저장하는 도 1의 프로세싱 시스템의 보안 모듈의 일례를 도시한 블록도이다.
도 3은 일부 실시 예에 따라 VM에 할당되는 메모리 페이지들의 서브 세트를 하이퍼바이저에 할당하는 도 1의 프로세싱 시스템의 보안 모듈의 일례를 도시한 블록도이다.
도 4는 일부 실시 예에 따라 VM의 벌룬 풀(balloon pool)에 할당되는 메모리 페이지들의 서브 세트를 하이퍼바이저에 할당하는 도 1의 프로세싱 시스템의 보안 모듈의 일례를 도시한 블록도이다.
도 5는 일부 실시 예에 따라 도 1의 프로세싱 시스템의 보안 모듈에서 VM에 할당되는 메모리 페이지들의 서브 세트가 VM과 하이퍼바이저 간을 이행할 때 그것의 컨텐츠를 검증하기 위한 방법을 도시한 흐름도이다.
도 6은 일부 실시 예에 따라 VM의 벌룬 풀에 할당되는 메모리 페이지들의 서브 세트를 하이퍼바이저에 할당하기 위한 방법을 도시한 흐름도이다.
도 1 내지 도 6은 프로세서의 메모리 접근 경로에서의 보안 모듈을 메모리 페이지들의 컨텐츠가 프로세싱 시스템의 프로세서에서 실행하는 하나 이상의 가상 기계(VM)과 VM들 및 프로세싱 시스템의 하드웨어 간 인터페이스를 제공하는 하이퍼바이저 사이를 이행할 때 그것들을 검증하는데 이용함으로써 프로세싱 시스템의 프로세스에서 보안 정보를 보호하기 위한 기술들을 도시한다. 하이퍼바이저는 각 VM을 메모리 페이지들로 지칭되는 연접 블록들로 나누어지는 메모리의 전용 부분 및 프로세싱 시스템의 그 외 다른 자용 자원들에 배정함으로써 VM들을 분리시키는데 사용된다. 일부 실시 예에서, 하이퍼바이저는 예를 들어, 하이퍼바이저에 메모리가 부족할 경우 VM이 메모리의 그것의 전용 부분의 서브 세트를 다시 하이퍼바이저로 이행시킬 것을 요청할 수 있다. 하이퍼바이저는 후에 예를 들어, VM에 의한 메모리의 서브 세트에 대한 요청에 응답하여 메모리의 서브 세트를 VM으로 리턴시킬 수 있다. 그러나, 하이퍼바이저에서의 버그들 또는 부당 이용을 위한 매개체로서의 역할을 하도록 악성 변형된 하이퍼바이저는 하이퍼바이저 또는 다른 VM이 메모리의 서브 세트에서의 정보를 보거나 또는 심지어 달라질 수 있게 할 수 있다. 본 명세서에 설명된 기술들을 사용하여, 프로세서의 보안 모듈이 그것들이 하나 이상의 VM과 하이퍼바이저 간을 이해할 때 하이퍼바이저 또는 그 외 다른 VM에 의해 달라진 메모리 페이지들이 그것들이 이행되었던 VM으로 리턴될 수 없도록 모니터링하는데 이용된다.
일부 실시 예에서, 하이퍼바이저가 메모리의 일 부분을 VM에 할당할 때, 메모리의 할당된 부분의 서브 세트는 보안, 예를 들어, 암호화되고, 메모리의 할당된 부분의 나머지(예를 들어, 일정 시기 동안 VM에 의해 사용될 것으로 예상되지 않는 메모리, 본 명세서에서 "초과 메모리(excess memory)"로 지칭됨)는 암호화되지 않은 형태로, 예를 들어, 벌룬 풀(balloon pool)에 남는다. 초과 메모리 페이지들은 VM에 의해 기록되지 않았고, 그에 따라 VM에 의해 초과 메모리 페이지들에 저장된 정보가 하이퍼바이저에 의해 위태롭게 될 수 있는 위험 요소가 없다. 따라서, 초과 메모리 페이지들이 이용 가능할 경우, 하이퍼바이저는 보안 모듈이 초과 메모리 페이지들을 모니터링하지 않은 초과 메모리 페이지들을 사용 및 리턴할 수 있다. 보안 모듈에 의한 모니터링을 건너뜀으로써, 하이퍼바이저는 그것이 VM에 할당된 보안 메모리 페이지들을 사용할 수 있는 것보다 효율적으로 초과 메모리 페이지들을 이용할 수 있다.
도 1은 일부 실시 예에 따라 VM과 하이퍼바이저 간을 이행하는 메모리 페이지들의 모니터링을 지원하는 프로세싱 시스템(100)을 도시한다. 프로세싱 시스템(100)은 프로세서(102) 및 메모리(120)를 포함한다. 프로세싱 시스템(100)은 다양한 전자 기기, 이를테면 서버, 개인용 컴퓨터, 태블릿, 셋탑 박스, 게이밍 시스템 및 기타 같은 종류의 것 중 임의의 전자 기기에 편입될 수 있다. 프로세서(102)는 일반적으로 프로세서(102)의 회로를 정의된 작업들을 수행하도록 조작하는 명령들의 집합들(예를 들어, 컴퓨터 프로그램들)을 실행하도록 구성된다. 메모리(120)는 프로세서(102)에 의해 사용되는 데이터를 저장함으로써 이러한 작업들의 실행을 가능하게 한다. 메모리(120)는 랜덤 접근 메모리(RAM), 비휘발성 메모리 이를테면 플래시 메모리 또는 하드 디스크 드라이브(HDD) 및 기타 같은 종류의 것 또는 이들의 조합일 수 있다.
명령들의 집합들을 실행하는 동안, 프로세서(102)는 데이터를 메모리(120)에 저장하기 위한 기록 요청들 및 메모리(120)로부터 데이터를 검색하기 위한 판독 요청들을 비롯한 메모리 접근 요청들을 생성한다. 각 메모리 접근 요청은 메모리 접근 요청의 타겟이 되는 메모리(120)에서의 위치를 나타내는 메모리 어드레스(예를 들어, 시스템 물리 어드레스)를 포함한다. 판독 요청에 응답하여, 메모리(120)는 판독 요청의 메모리 어드레스에 대응하는 위치에 저장된 정보(데이터 또는 명령들)를 검색하고 정보를 프로세서(102)에 제공한다. 기록 요청에 응답하여, 메모리(120)는 요청의 기록 정보를 기록 요청의 메모리 어드레스에 대응하는 위치에 저장한다.
프로세서(102)는 암호화 모듈(115)을 포함한다. 암호화 모듈(115)은 프로세서(102)에서 실행될 개체들(예를 들어, 가상 머신들, 컴퓨터 프로그램들 및 기타 같은 종류의 것)의 등록, 실행될 개체들을 위한 보안 키들의 생성 및 식별, 보안 동작들에 대한 프로세싱 시스템(100)의 인증 및 기타 같은 종류의 것을 비롯하여 프로세싱 시스템(100)을 위한 보안 동작들을 수행하도록 설계 및 구성된 범용 프로세서 코어, 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 반도체(ASIC), 프로세서 코어의 동작 모드 또는 그 외 다른 모듈이다. 본 명세서에 더 설명될 바와 같이, 암호화 모듈(115)은 보안 키들을 생성함으로써, 프로세싱 시스템(100)에서 실행되도록 등록된 개체들을 식별함으로써, 그리고 그러한 암호 분리를 가능하게 하는 그 외 다른 동작들에 의해 프로세싱 시스템(100)에서의 정보의 암호 분리를 지원한다.
명령들의 실행을 가능하게 하기 위해, 프로세서(102)는 하나 이상의 프로세서 코어(106), 캐시들(108), 노스브리지(110) 및 보안 모듈(130)을 포함한다. 도 1에 하나의 프로세서 코어(106)만 도시되었지만, 프로세싱 시스템(100)은 다수의 프로세서 코어를 포함할 수도 있다. 프로세서 코어들(106)은 명령들을 개별적으로 또는 동시에 실행하는 프로세싱 유닛들이다. 일부 실시예에서, 각각의 프로세서 코어들(106)은 명령들을 페치하고, 페치된 명령들을 대응하는 동작들로 디코딩하며, 프로세싱 시스템(100)의 자원들을 사용하여, 메모리 접근 요청들을 비롯한 동작들을 실행하는 개별적인 명령 파이프라인을 포함한다. 각각의 프로세서 코어들(106)은 각각의 메모리 접근 요청을 다음 두 유형 중 하나로 식별하도록 구 성된다: 메모리 접근 요청에 대응하는 정보가 암호 보호용으로 지정됨을 나타내는 보안 메모리 접근 요청 또는 메모리 접근 요청에 대응하는 정보가 암호 보호용으로 지정되지 않음을 나타내는 비보안 메모리 접근 요청.
일부 실시 예에서, 프로세싱 시스템(100)은 정보에 대한 보안 지정(정보가 암호 보호되어야 할지 여부)이 정보가 메모리(120)에서 어디에 저장되는지에 대응하여 또는 정보의 유형(예를 들어, 명령들 또는 데이터)에 대응하여 메모리 어드레스에 포함되는 제어 비트들에 기초하여 배정되는 보안 기법을 구현한다. 이는 수많은 데이터가 보안 정보로 쉽게 분류될 수 있게 하여, 효율적인 정보 보호를 제공한다. 예를 들어, 일부 실시 예에서, 프로세싱 시스템(100)에 의해 제어 비트들이 정보의 특정 유형들, 이를테면 명령 정보 또는 가상 어드레스들의 맵핑을 메모리(120)의 물리 어드레스들에 제공하는 페이지 테이블 정보가 보안 정보로 지정됨으로써 이러한 정보를 후술될 바와 같이 암호 보호하도록 설정된다. 데이터에 배정되는 어드레스들에 대한 제어 비트들은 예를 들어, 프로세서(102)에서 실행하는 프로그램들에 의해 요청되는 지정들에 기초하여 보다 세부적인 방식으로 지정될 수 있다. 이러한 보안 기법은 보다 일반적 데이터에 유연성을 제공하면서 결정적 데이터의 보호를 제공한다(예를 들어, 가상 머신 또는 그것의 프로그램들의 권한 없는 실행을 막아).
일부 실시 예에서, 정보에 배정되는 보안 유형이 정보의 대응하는 메모리 어드레스에 기초하여 지정되기 때문에, 프로세싱 시스템(100)은 각 메모리 어드레스에 대한 보안 유형을 나타내는 페이지 테이블들 자체를 사용한다. 그에 따라, 프로세서 코어(106)가 메모리 접근 요청에 대응하여 메모리 어드레스를 식별하는 중에 메모리 접근 요청의 유형을 식별한다. 특히, 메모리 어드레스가 보안 정보를 저장하는 것으로 나타날 경우, 대응하는 메모리 어드레스는 보안 메모리 접근으로 식별된다. 유사하게, 메모리 어드레스가 비보안 정보를 저장하는 것으로 나타날 경우, 대응하는 메모리 어드레스는 비보안 메모리 접근으로 식별된다.
캐시들(108)은 메모리(120)에 저장된 정보의 서브 세트들을 저장함으로써, 프로세서 코어들(106)에 각각의 정보 서브 세트에의 빠른 접근을 제공하는 메모리 소자들이다. 도 1에 하나의 캐시(108)만 도시되었지만, 프로세싱 시스템(100)은 프로세서(102)의 메모리 계층의 상이한 레벨들에 있는 상이한 캐시들을 비롯한 다수의 캐시를 포함할 수 있다는 것이 이해될 것이다. 캐시(108)는 메모리 접근 요청들을 수신하고 그것의 저장 어레이(도 1에 도시되지 않음)가 메모리 접근 요청의 타겟이 되는 정보를 저장하는지 여부를 식별한다. 만약 그렇다면, 캐시(108)는 캐시 적중을 나타내고 저장 어레이에서 메모리 접근 요청을 이행한다. 캐시(108)가 타겟 정보를 저장하지 않는다면, 그것은 캐시 실패를 나타내고 메모리 접근 요청을 노스브리지(110)에 제공한다.
도 1의 도시된 예에서, 프로세싱 시스템(100)의 메모리 접근 경로는 캐시(108)가 보안 정보를 비롯한 정보를 암호화되지 않은 형태로 저장하도록 한다. 그에 따라, 일부 실시 예에서, 캐시(108)는 소정의 크기(예를 들어, 캐시 라인)의 각 저장 위치에 대해, 저장 위치의 정보에 접근할 권한이 있는 특정 프로그램 또는 그 외 다른 개체(예를 들어, VM)를 식별하는 개체 태그 정보를 저장한다. 저장 어레이의 위치에의 메모리 접근에 응답하여, 캐시(108)는 메모리 접근 요청을 발생시킨 개체의 신원을 개체 태그 정보와 비교하고, 미스매치에 응답하여 캐시 실패를 나타냄으로써, 정보에의 권한 없는 접근을 막는다.
노스브리지(110)는 프로세서(102)에 메모리(120)와 통신하기 위한 인터페이스를 제공하는 메모리 제어기이다. 일부 실시예에서, 노스브리지(110)는 이를테면 입력/출력 제어기(예를 들어, 사우스브리지, 도시되지 않음)와 인터페이싱하는 그리고 상이한 프로세서 코어들(106) 간 인터페이스를 제공하는 그 외 다른 기능들을 수행할 수 있다. 메모리 제어기로서 그것의 자격으로, 노스브리지(110)는 캐시(108)로부터 메모리 접근 요청들을 수신하고 메모리(120)에 대한 그러한 요청들의 프로비전(provision)을 제어한다. 또한, 노스브리지(110)는 메모리(120)로부터 메모리 접근 요청들에 대한 응답들을 수신하고 캐시(108)에 대한 응답들의 프로비전을 제어한다. 일부 실시예에서, 노스브리지(110)는 프로세싱 시스템(100)의 입력/출력 기기들(도시되지 않음)로부터 메모리 접근 요청들(예를 들어, 직접 메모리 접근 요청들)을 수신할 수 있고 그것들의 메모리(120)에 대한 프로비전을 제어한다.
정보의 암호 분리를 제공하기 위해, 노스브리지(110)는 지정된 암호 표준에 따라 그리고 키들(116, 118)에 기초하여 정보를 암호화 및 복호화하도록 구성된 암호화 모듈(115)을 포함한다. 일부 실시예에서 암호화 모듈(115)은 고급 암호 표준(AES) 암호화 및 복호화를 이용하도록 구성되나, 그 외 다른 실시예들에서 암호화 모듈(115)은 그 외 다른 암호화/복호화 기술들을 이용할 수 있다. 기록 요청을 수신하는 것에 응답하여, 노스브리지(110)는 요청이 보안 메모리 접근 요청인지 또는 비보안 메모리 접근 요청인지를 식별한다. 기록 요청이 비보안 메모리 접근 요청일 경우, 노스브리지(110)는 암호화 모듈(115)을 건너뛰어 기록될 정보를 암호화하지 않고 기록 요청을 메모리(120)에 제공한다. 기록 요청이 보안 메모리 접근 요청일 경우, 노스브리지(110)는 메모리 접근 요청을 발생시킨 개체(예를 들어, 프로그램, VM, 소프트웨어 서비스 및 기타 같은 종류의 것)에 배정된 키들(116, 118) 중 하나를 식별한다. 일부 실시 예에서, 보안 모듈(130)은 현재 프로세서(102)에서 어느 개체가 실행되고 있는지에 기초하여 선택될 키를 식별한다. 암호화 모듈(115)은 기록될 정보를 암호화하도록 선택된 키를 이용하고 기록 요청을 암호화된 정보와 함께 저장할 메모리(120)에 제공한다. 일부 실시예에서, 암호화 모듈(115)은 대응하는 정보의 암호화 및 복호화를 위해 선택된 키 및 메모리 접근 요청의 물리 어드레스 양자를 사용함으로써 블록 이동 공격들을 막는다. 일부 실시예에서, 암호화 모듈(115)은 프로세서(102)에서 제어 비트(도시되지 않음)의 상태에 기초하여 암호화 및 복호화를 위해 물리 어드레스를 사용할지 여부를 식별한다. 제어 비트 상태는 보안 모듈(130)에 의해 설정될 수 있다.
판독 요청을 수신하는 것에 응답하여, 노스브리지(110)는 요청을 메모리(120)에 제공한 후 요청에 응답한 정보를 수신한다. 노스브리지(110)가 판독 요청을 비보안 메모리 접근 요청으로 식별한 경우, 그것은 암호화 모듈(115)을 건너뛰고 암호화 없이 판독 정보를 캐시(108)에 제공한다. 노스브리지(110)가 판독 요청을 보안 메모리 접근 요청으로 식별한 경우, 그것은 판독 접근 요청을 발생시킨 개체에 배정된 키들(116, 118) 중 하나를 식별하고 암호화 모듈(115)은 판독 정보를 복호화한다. 노스브리지(110)는 복호화된 판독 정보를 저장할 캐시(108)에 제공한다. 일부 상황에서, 노스브리지(110)는 캐시(108)에 대한 정보의 프로비전을 건더뛰고 복호화된 판독 정보를 대응하는 판독 접근 요청을 발생시킨 프로세서 코어에 직접 제공할 수도 있다.
하이퍼바이저(152)는 각각의 VM에 메모리의 전용 부분 및 프로세싱 시스템의 그 외 다른 자용 자원들을 배정함으로써 VM들(VM-A(150), VM-B(151))을 분리시키도록 구성된다. 각각의 VM(150, 151)은 하나의 이상의 가상 프로세서에 대해, 각각의 가상 프로세서가 대응하는 게스트 운영 체제(OS)(도시되지 않음)를 실행하는 보안 및 분리된 하드웨어 에뮬레이션 환경을 제공한다. 각각의 게스트 OS/가상 프로세서, 뿐만 아니라 하이퍼바이저(152)는 관련 어드레스 공간을 갖는다. 각각의 게스트 OS는 통상적으로 본 명세서에서 "WorldID"로 지칭되는 특정 식별자를 사용하고 있고, 게스트 OS에 의해 관리되는 보다 하위 레벨 어드레스 공간들은 본 명세서에서 "어드레스 공간 식별자들(address space identifiers)" 또는 "ASID들"로 지칭되는 특정 식별자들을 사용하여 식별된다.
각각의 VM에 배정되는 어드레스 공간은 보안 정보를 저장하도록 지정될 수 있다(예를 들어, 보안 어드레스 공간(VM-A)(122), 보안 어드레스 공간(VM-B)(126)). 일부 실시 예에서, 각각의 VM에 배정되는 어드레스 공간은 또한 보안 정보용으로 지정되지 않고 벌룬 풀(예를 들어, VM-A 벌룬 풀(124), VM-A 벌룬 풀(128))에 유지되는 초과 메모리를 포함한다. 벌룬 풀들(124, 128)은 소정의 시기에 대응하는 VM에 의해 기록될 것으로 예상되지 않거나 또는 대응하는 VM에 의해 덜 유용한 것으로 고려되는 VM에 할당되는 초과 메모리를 유지하는 물리 또는 가상 메모리 어드레스 공간이다. 일부 실시 예에서, 하이퍼바이저(152)는 예를 들어, 하이퍼바이저(152) 자체 또는 다른 VM이 추가 메모리를 요청할 경우 VM이 메모리의 그것의 전용 부분의 서브 세트를 다시 하이퍼바이저(152)로 이행시킬 것을 요청할 수 있다. 하이퍼바이저(152)는 후에 예를 들어, VM에 의한 메모리의 서브 세트에 대한 요청에 응답하여 메모리의 서브 세트를 VM으로 리턴시킬 수 있다.
하이퍼바이저(152)와 VM들(150, 151) 간 메모리의 보안 이행을 가능하게 하기 위해, 보안 모듈(130)이 메모리 페이지들이 하이퍼바이저(152)와 VM들(150, 151) 간을 이행할 때 그것들을 선택적으로 모니터링하도록 구성된다. VM의 착수 시, 하이퍼바이저(152)는 VM들(150, 151)에 메모리를 할당하여, 각각의 VM의 할당된 메모리에 대한 물리 어드레스 및 ASID를 지정한다. 일부 실시 예에서, 하이퍼바이저(152)는 각각의 VM의 할당된 메모리에 대한 물리 어드레스 및 ASID를 나타내는 로그(도시되지 않음)를 유지한다. 하이퍼바이저(152)는 또한 할당된 메모리를 변경할 수 없는 것으로 지정한다. 일부 실시 예에서, 하이퍼바이저(152)는 로그에 저장되지 않은 할당된 메모리와 연관된 변경할 수 없는 비트를 설정함으로써 할당된 메모리를 변경할 수 없는 것으로 지정한다. 하이퍼바이저(152)가 메모리를 VM들(150, 151)에 할당한 후, 하이퍼바이저(152)은 암호화 모듈(115)에 각각의 VM(150, 151)이 그 각각의 할당된 메모리(122, 126)에 저장하는 데이터 및 지시들을 암호화할 것―그리고 보안 모듈(130)에 그것들을 판정할 것―을 시그널링한다. 일부 실시 예에서, 보안 모듈(130)은 VM이 착수될 때 오프라인 암호화 키를 생성 및 저장하며, 이는 각각의 VM에 고유한 랜덤 키이다. 일부 실시 예에서, 각각의 VM의 할당된 메모리에 저장된 데이터가 암호화 모듈(115)에 의해 암호화되고 보안 모듈(130)에 의해 판정된 후, 보안 모듈(130)은 예를 들어, 하이퍼바이저(152)에 의해 유지되는 로그에 메모리와 연관되는 유효성이 검사된 비트를 설정함으로써, 암호화 및 판정된 데이터가 저장되는 메모리의 유효성이 검사되었음을 나타내고, 변경할 수 없는 비트를 삭제한다. 유효성 검사 표시는 VM에 VM이 암호화 및 판정된 데이터가 저장되는 메모리에 기록할 수 있음을 시그널링한다.
하이퍼바이저(152)가 VM(150, 151)이 하나 이상의 메모리 페이지를 어드레스 공간(122, 126)의 보안 페이지들의 VM의 도메인으로부터 하이퍼바이저(152)로 이행시킬 것("옮겨 비울 것(swap out)" 또는 DRAM과 다른 저장 매체 간을 이동시킬 것)을 요청할 경우, 보안 모듈(130)은 옮겨 비워져야 할 하나 이상의 메모리 페이지의 해시, 이를테면 메모리 페이지들의 물리 메모리 어드레스 범위(들), 하나 이상의 메모리 페이지의 평문, 논스(nonce) 및 하나 이상의 메모리 페이지와 연관된 메타 데이터를 비롯한 특성들을 판정한다. 보안 모듈(130)은 판정을 저장하고, 요청된 하나 이상의 메모리 페이지를 하이퍼바이저(152)에 제공한다. 일부 실시 예에서, 하이퍼바이저(152)는 또한 판정된 특성들, 이를테면 메모리 페이지들의 물리 메모리 어드레스 공간(들), 하나 이상의 메모리 페이지의 암호문, 논스 및 하나 이상의 메모리 페이지와 연관된 메타 데이터를 저장한다.
그 후 하이퍼바이저(152)가 하나 이상의 메모리 페이지를 하이퍼바이저(152)가 메모리 페이지들을 이행시킨 VM(150, 151)으로 리턴시킬("옮겨 비울" 또는 페이지를 다시 DRAM으로 복귀시킬) 준비가 되었음을 시그널링할 때, 하이퍼바이저(152)는 저장된 판정된 특성들을 보안 모듈(130)에 제공한다. 보안 모듈(130)은 하나 이상의 메모리 페이지의 저장된 해시를 검색하고 옮겨 비워진 메모리 페이지들의 판정된 특성들을 하이퍼바이저(152)가 옮겨 넣고 있는 하나 이상의 메모리 페이지의 특성들과 비교한다. 옮겨 비워진 메모리 페이지들의 판정된 특성들이 옮겨 넣어지는 메모리 페이지들의 특성들과 매치할 경우, 보안 모듈(130)은 하이퍼바이저(152)가 메모리 페이지들을 VM(150, 151)으로 리턴시킬 수 있게 한다. 옮겨 비워진 메모리 페이지들의 판정된 특성들이 리턴되는 메모리 페이지들의 특성들과 매치하지 않을 경우, 보안 모듈(130)은 하이퍼바이저(152)가 메모리 페이지들을 VM(150, 151)으로 리턴시키는 것을 막는다. 이러한 방식으로, 보안 모듈(130)은 하이퍼바이저(152)가 변경된 메모리 페이지들을 VM(150, 151)에 옮겨 넣는 것을 막는다.
일부 실시 예에서, 하이퍼바이저(152)가 VM(150, 151)이 하나 이상의 메모리 페이지를 그것의 벌룬 풀(124, 128)로부터 하이퍼바이저(152)로 옮겨 비울 것을 요청할 경우, 보안 모듈(130)은 메모리 페이지들의 특성들을 판정하는 것을 건너뛰고 보안 모니터링 없이 하이퍼바이저(152)가 메모리 페이지들을 벌룬 풀(124, 128)로부터 하이퍼바이저(152)로 직접 옮겨 비울 수 있게 한다. 벌룬 풀들(124, 128)에 저장된 메모리 페이지들은 사용되지 않고 초과되거나 덜 유용한 메모리이기 때문에, 그러한 메모리 페이지들은 보안 모듈(130)에 의한 그것들의 컨텐츠의 검증을 필요로 하지 않는다.
도 2는 일부 실시 예에 따라, VM(250)과 하이퍼바이저(252) 간을 이행하는 메모리 페이지(240)의 해시(245)를 생성 및 저장하는 도 1의 프로세싱 시스템(100)의 보안 모듈(230)의 일례를 도시한다. 도시된 예에서, 하이퍼바이저(252)는 VM-A(250)에 할당된 메모리의 일 부분을 요청한다. 보안 모듈(230)은 메모리 페이지(240)가 VM-A(250)과 하이퍼바이저(252) 간을 이행할 때 그것의 컨텐츠를 검증한다. 보안 모듈(230)은 하이퍼바이저(252)에 의해 옮겨 넣어지고 비워지는 메모리 페이지들의 판정된 특성들을 저장하도록 구성된 보안 모듈 메모리(235)를 포함한다.
동작 시, 하이퍼바이저(252)는 VM-A(250)로부터의 추가 메모리(240)를 요청한다. 하이퍼바이저(252)로부터 요청을 수신 시, 보안 모듈(230)은 하나 이상의 요청된 메모리 페이지(240)가 유효성이 검사되고 VM-A(250)에 할당됨을 검증한다. 일부 실시 예에서, 보안 모듈(230)은 메모리 페이지들(240)에 저장된 페이지 데이터를 판독 및 복호화하고, 논스를 생성하며, VM이 착수되었을 때 생성되었던 오프라인 암호화 키(도시되지 않음)를 사용하여 페이지 데이터를 재암호화한다. 보안 모듈(230)은 메모리 페이지(240)의 특성들(메모리 페이지 해시로 지칭됨)(245)를 판정하고, 메모리 페이지 해시(245)를 보안 모듈 메모리(235)에 VM-A(250)에 대한 페이지 교체 리스트(도시되지 않음)로 저장한다. 일부 실시 예에서, 메모리 페이지 해시(245)는 논스, 재암호화된 데이터 및 페이지 메타 데이터의 해시이다. 일부 실시 예에서, 보안 모듈(230)은 메모리의 VM들에의 할당을 나타내는 하이퍼바이저(252)에 의해 유지되는 로그(도시되지 않음)에 옮겨 비워진 메모리 페이지들(240)을 "유효하지 않은" 또는 "무효한" 것으로 표시한다. 옮겨 비워진 메모리 페이지(240)를 무효한 것으로 표시함으로써, 보안 모듈(230)은 VM-A(250)에 VM-A(250)가 기록하기 위해 옮겨 비워진 메모리 페이지들을 이용할 수 없음을 나타낸다. 이는 하이퍼바이저(252)(또는 하이퍼바이저(252)가 옮겨 비워진 메모리 페이지들을 할당하는 다른 VM) 및 VM-A(250)가 동일한 메모리 페이지에 동시에 기록하는 것을 막는다. 일부 실시 예에서, 보안 모듈(230)은 메모리 페이지(240)에 대한 재암호화된 데이터, 논스, 페이지 메타 데이터 및 해시를 하이퍼바이저(252)에 제공하고, 메모리 페이지(240)를 하이퍼바이저(252)에 제공한다.
그 후 하이퍼바이저(252)가 메모리 페이지(240)를 옮겨 넣을 것을 요청할 경우, 하이퍼바이저(252)는 메모리 페이지(240)에 대한 재암호화된 데이터, 논스, 페이지 메타 데이터 및 해시를 하이퍼바이저(230)에 제공한다. 보안 모듈(230)은 옮겨 넣어지는 메모리 페이지(240)의 하이퍼바이저(252)에 의해 제공된 재암호화된 데이터, 논스, 페이지 메타 데이터의 해시를 계산하고 계산된 해시를 저장된 해시(245)와 비교한다. 계산된 해시 및 저장된 해시(245)가 매치하지 않을 경우, 보안 모듈(230)은 메모리 페이지(240)를 옮겨 넣기 위한 요청을 거절한다. 계산된 해시 및 저장된 해시(245)가 매치할 경우, 보안 모듈(230)은 하이퍼바이저(252)가 메모리 페이지(240)를 옮겨 넣을 수 있게 하고, 메모리 페이지(240)를 VM-A(250)로 리턴시킨다.
도 3은 일부 실시 예에 따라 VM-A(330)에 할당되는 메모리 페이지들(340)의 서브 세트(342)를 하이퍼바이저(352)에 할당하는 도 1의 프로세싱 시스템(100)의 보안 모듈(330)의 일례를 도시한 블록도이다. 도시된 예에서, 보안 모듈(350)은 암호화 모듈(315)을 포함한다. 일부 실시 예에서, 암호화 모듈(315)은 보안 모듈(330)과 별개일 수도 있다.
VM-A(350)의 착수 시, 하이퍼바이저(352)는 메모리 페이지들(340)을 VM-A(350)에 할당한다. 메모리 페이지들(340)은 메모리(320)의 지정된 메모리 보안 어드레스 공간(VM-A)(322)에 저장된다. 하이퍼바이저(352)는 VM-A(350)가 메모리 페이지들(340)에 기록하는 데이터를 암호화 키-A(316)를 사용하여 암호화하고 VM-A(350)와 고유하게 연관된 오프라인 암호화 키-B(319)를 생성하기 위해 보안 모듈(330)을 호출한다. 하이퍼바이저(352)가 메모리 페이지들(340)의 서브 세트(342)를 요청할 때, 보안 모듈(330)은 메모리 페이지들의 서브 세트(342)에 저장된 페이지 데이터를 판독 및 복호화하고, 논스를 생성하며, VM이 착수되었을 때 생성되었던 오프라인 암호화 키-B(319)를 사용하여 페이지 데이터를 재암호화한다. 보안 모듈(330)은 논스, 재암호화된 데이터 및 페이지 메타 데이터의 해시를 계산하고, 해시를 VM-A(350)에 의해 옮겨 비워진 페이지들의 교체 리스트(도시되지 않음)와 저장한다.
도 4는 일부 실시 예에 따라 VM-A(450)의 벌룬 풀(424)에 할당되는 메모리 페이지들(442)의 서브 세트를 하이퍼바이저(452)에 할당하는 도 1의 프로세싱 시스템(100)의 보안 모듈(430)의 일례를 도시한 블록도이다. 도시된 예에서, 메모리(420)는 VM-A(450)의 보안 정보를 저장하도록 지정된 일 부분(422) 및 일정 시기 동안 기록될 것으로 기대되지 않거나 VM-A(450)에 의해 덜 유용한 것으로 고려되는 초과 메모리 페이지들을 저장하기 위해 VM-A(450)에 할당된 벌룬 풀(424)을 포함한다.
하이퍼바이저(452)가 VM-A 벌룬 풀(424)에 저장된 메모리 페이지들의 서브 세트(442)를 요청할 때, 보안 모듈(430)은 메모리 페이지들의 서브 세트(442)에 대한 해시를 암호화 및 계산 및 저장하는 것을 건너뛴다. 메모리 페이지들의 서브 세트(442)가 사용되지 않거나 VM-A(450)에 의해 덜 유용한 것으로 고려되기 때문에, 하이퍼바이저(452)는 메모리 페이지들의 서브 세트(442)의 변경으로부터의 보안 모듈(430)의 보호를 호출하지 않고 메모리 페이지들을 VM-A 벌룬 풀(424)에 옮겨 넣고 그것에서 옮겨 비울 수 있다.
도 5는 일부 실시 예에 따라 도 1의 프로세싱 시스템의 보안 모듈(130)에서 VM-A(150)에 할당되는 메모리 페이지들의 서브 세트가 VM-A(150)과 하이퍼바이저(152) 간을 이행할 때 그것을 모니터링하기 위한 방법(500)을 도시한 흐름도이다. 블록(502)에서, 하이퍼바이저(152)는 복수의 메모리 페이지를 제1 가상 머신(150)에 할당한다. 블록(504)에서, 암호화 모듈(115)은 VM-A(150)에 기록되는 복수의 메모리 페이지를 제1 키(116)로 암호화한다. 블록(506)에서, 보안 모듈(130)은 하이퍼바이저(152)로부터 VM-A(150)에 할당된 메모리 페이지들의 서브 세트에 대한 요청을 수신한다. 블록(508)에서, 보안 모듈은 요청된 메모리 페이지들의 서브 세트를 VM-A(150)에 무효한 것으로 지정한다. 블록(510)에서, 보안 모듈은 요청된 메모리 페이지들의 서브 세트를 제2 키로 암호화한다. 블록(512)에서, 보안 모듈(130)은 요청된 메모리 페이지들의 서브 세트의 특성들을 판정 및 저장한다. 블록(514)에서, 보안 모듈(130)은 요청된 메모리 페이지들의 서브 세트를 하이퍼바이저(152)에 제공한다.
블록(516)에서, 보안 모듈(130)은 하이퍼바이저(152)로부터 메모리 페이지들의 서브 세트를 VM-A(150)으로 리턴시킬 것을 요청하는 신호를 수신한다. 블록(518)에서, 보안 모듈(130)은 메모리 페이지들의 서브 세트의 저장된 판정된 특성들을 하이퍼바이저(152)가 리턴하고 있는 메모리 페이지들의 특성들과 비교한다. 메모리 페이지들의 서브 세트의 저장된 판정된 특성들이 하이퍼바이저(152)가 리턴하고 있는 메모리 페이지들의 특성들과 매치할 경우, 블록(520)에서, 보안 모듈은 메모리 페이지들의 서브 세트를 VM-A(150)에 제공한다. 메모리 페이지들의 서브 세트의 저장된 판정된 특성들이 하이퍼바이저(152)가 리턴하고 있는 메모리 페이지들의 특성들과 매치하지 않을 경우, 블록(522)에서, 보안 모듈(130)은 메모리 페이지들의 서브 세트를 옮겨 넣기 위한 요청을 거절함으로써 하이퍼바이저(152)가 메모리 페이지들의 서브 세트를 VM-A(150)에 제공하는 것을 막는다. 일부 실시 예에서, 보안 모듈(130)은 저장된 판정된 특성들이 하이퍼바이저(152)가 리턴하고 있는 메모리 페이지들의 특성들과 매치하지 않는 것에 응답하여 메모리 페이지들의 서브 세트를 VM-A(150)의 키로 복호화 및 재암호화하기 위한 요청을 거부할 것이다. 이러한 방식으로, 보안 모듈(130)은 하이퍼바이저(152)가 옮겨 넣는데 VM-A(150)의 키를 사용하는 것을 제한함으로써 하이퍼바이저(152)가 VM-A(150)의 키로 암호화된 데이터를 옮겨 넣는 것을 막는다. 그에 따라, 보안 모듈(130)은 저장된 측정된 특성들이 하이퍼바이저(152)가 리턴하려고 시도하고 있는 메모리 페이지들의 특성들과 매치하지 않을 경우 메모리 페이지들의 서브 세트가 보안 페이지들의 VM-A(150)의 도메인으로 리턴하는 것을 승인하지 않는다.
도 6은 일부 실시 예에 따라 VM-A(150)의 벌룬 풀(124)에 할당된 메모리 페이지들의 서브 세트를 도 1의 프로세싱 시스템(100)의 하이퍼바이저(152)에 할당하기 위한 방법(600)을 도시한 흐름도이다. 블록(602)에서, 하이퍼바이저(152)는 메모리 페이지들을 VM-A(150)에 할당한다. 블록(604)에서, 하이퍼바이저는 VM-A(150)와 연관된 보안 어드레스 공간(122)에 대해 제1 메모리에 할당된 메모리 페이지들의 제1 서브 세트를 지정한다. 블록(606)에서, 하이퍼바이저는 VM-A(150)와 연관된 벌룬 풀(124)에 할당된 메모리 페이지들의 제2 서브 세트를 지정한다. 블록(608)에서, 보안 모듈(130)은 하이퍼바이저(152)로부터 벌룬 풀(124)로부터의 메모리 페이지들에 대한 요청을 수신한다. 블록(610)에서, 보안 모듈(130)은 적어도 하나의 메모리 페이지를 벌룬 풀(124)로부터 하이퍼바이저(152)로 제공한다. 블록(612)에서, 보안 모듈(130)은 하이퍼바이저(152)로부터 적어도 하나의 메모리 페이지를 VM-A(150)으로 리턴시키라는 신호를 수신한다. 블록(614)에서, 보안 모듈(130)은 적어도 하나의 메모리 페이지를 벌룬 풀(124)로 리턴시킨다.
일부 실시 예에서, 상술한 기술들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다.  소프트웨어는 비일시적 컴퓨터 판독 가능한 저장 매체 상에 저장된 또는 그 외 다르게 유형으로 구현된 실행 가능한 명령들의 하나 이상의 세트를 포함한다.  소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 상술한 기술들의 하나 이상의 양태를 수행하도록 조작하는 명령들 및 특정 데이터를 포함한다. 비일시적 컴퓨터 판독 가능한 저장 매체는 예를 들어, 자기 또는 광 디스크 저장 소자, 플래시 메모리와 같은 고체 상태 저장 소자들, 캐시, 랜덤 접근 메모리(RAM) 또는 그 외 다른 비휘발성 메모리 소자 또는 소자들 및 기타 같은 종류의 것을 포함할 수 있다. 비일시적 컴퓨터 판독 가능한 저장 매체 상에 저장되 실행 가능한 명령들은 소스 코드, 어셈블리 언어 코드, 객체 코드 또는 하나 이상의 프로세서에 의해 해석되거나 그 외 다르게 실행 가능한 그 외 다른 명령 포맷을 가질 수 있다.
컴퓨터 판독 가능한 저장 매체는 컴퓨터 시스템에 명령들 및/또는 데이터를 제공하기 위해 사용 중 컴퓨터 시스템에 의해 접근 가능한 임의의 저장 매체 또는 저장 매체들의 조합을 포함할 수 있다. 그러한 저장 매체들은 이에 제한되지는 않으나, 광 매체들(예를 들어, 컴팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루-레이 디스크), 자기 매체들(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 접근 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리) 또는 미세 전자 기계 시스템들(MEMS)-기반 저장 매체들을 포함한다. 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 시스템(예를 들어, 시스템 RAM 또는 ROM)에 내장되거나, 컴퓨팅 시스템(예를 들어, 자기 하드 드라이브)에 고정적으로 부착되거나, 컴퓨팅 시스템(예를 들어, 광 디스크 또는 유니버셜 시리얼 버스(USB)-기반 플래시 메모리)에 착탈 가능하게 부착되거나, 또는 유선 또는 무선 네트워크(예를 들어, 네트워크 접근 가능 저장 장치(NAS))를 통해 컴퓨터 시스템에 결합될 수 있다.
일반적인 설명으로 상술된 모든 동작 또는 요소가 필수적인 것은 아니라는 것, 특정 동작 또는 기기의 일 부분이 요구되지 않을 수 있다는 것, 그리고 설명된 것들에 더하여, 하나 이상의 추가 동작이 수행되거나 요소들이 포함될 수 있다는 것을 유념한다. 더 나아가, 동작들이 나열된 순서는 반드시 그것들이 수행되는 순서는 아니다. 또한, 개념들은 구체적인 실시 예들을 참조하여 설명되었다. 그러나, 해당 기술분야의 통상의 기술자는 아래 청구범위에 제시된 바에 따라 본 발명의 범위에서 벗어나지 않고 다양한 변경 및 변화가 이루어질 수 있다는 것을 이해한다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야 하고, 모든 그러한 변경이 본 발명의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들, 및 문제들에 대한 솔루션들이 구체적인 실시 예들에 관하여 상술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들, 및 임의의 혜택, 이점, 또는 솔루션이 발생하거나 보다 현저해지게 할 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지는 않아야 한다. 또한, 위에서 개시된 특정 실시 예들은 개시된 주제가 본 명세서에서의 교시 내용의 혜택을 받는 해당 기술분야의 통상의 기술자들에게 분명한 상이하나 균등한 방식들로 변경 및 실시될 수 있음에 따라 단지 예시적인 것이다. 아래 청구범위에서 설명되는 것 이외에, 제시되는 본 명세서에서의 구성 또는 설계의 세부 사항에 어떠한 제한도 의도되지 않는다. 따라서 위에서 개시된 특정 실시 예들이 대체 또는 변경될 수 있고 모든 그러한 변형 예가 개시된 주제의 범위 내로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래 청구범위에 제시된 바에 따른다.

Claims (25)

  1. 프로세서에서 보안 정보를 보호하기 위한 방법으로서,
    적어도 하나의 메모리 페이지를 프로세서에서 실행하는 제1 가상 머신으로부터 상기 프로세서에서 실행하는 제1 하이퍼바이저로 이행시키는 단계(transitioning);
    상기 프로세서의 보안 모듈에서, 상기 적어도 하나의 메모리 페이지를 상기 제1 하이퍼바이저로부터 상기 제1 가상 머신으로 리턴시키기 위한 요청을 수신하는 단계;
    상기 프로세서의 상기 보안 모듈에서 상기 적어도 하나의 메모리 페이지를 상기 제1 하이퍼바이저로부터 상기 제1 가상 머신으로 리턴시키기 위한 상기 요청에 응답하여 상기 적어도 하나의 메모리 페이지의 컨텐츠를 선택적으로 검증하는 단계;
    상기 제1 가상 머신에 의해 기록될 것으로 예상되지 않은 메모리 페이지들을 유지하도록 상기 제1 가상 머신과 관련된 벌룬 풀(ballon pool)에 상기 적어도 하나의 메모리 페이지가 할당됨에 응답하여, 상기 적어도 하나의 메모리 페이지를 리턴시키는 제1 하이퍼바이저의 요청에 응답하여 상기 적어도 하나의 메모리 페이지의 컨텐츠에 대한 검증을 건너뛰는 단계(bypassing);
    상기 적어도 하나의 메모리 페이지의 상기 컨텐츠를 검증하는 것에 응답하여 또는 상기 제1 가상 머신과 관련된 벌룬 풀에 상기 적어도 하나의 메모리 페이지가 할당됨에 응답하여, 상기 적어도 하나의 메모리 페이지를 상기 제1 가상 머신에 제공하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 적어도 하나의 메모리 페이지의 상기 컨텐츠를 선택적으로 검증하는 단계는:
    상기 적어도 하나의 메모리 페이지가 상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행하는 것에 응답하여 상기 적어도 하나의 메모리 페이지의 적어도 하나의 특성을 판정하여 적어도 하나의 특성 판정을 생성하는 단계;
    상기 적어도 하나의 특성 판정을 상기 보안 모듈에 저장하는 단계; 및
    상기 제1 하이퍼바이저가 상기 적어도 하나의 메모리 페이지를 리턴하는 것에 응답하여 상기 적어도 하나의 특성 판정을 상기 적어도 하나의 메모리 페이지와 비교하는 단계를 포함하는, 방법.
  3. 청구항 2에 있어서,
    상기 적어도 하나의 특성 판정이 상기 적어도 하나의 메모리 페이지와 매치하지 않는 것에 응답하여 상기 제1 하이퍼바이저가 상기 제1 가상 머신에 상기 적어도 하나의 메모리 페이지를 제공하는 것을 막는 단계를 더 포함하는, 방법.
  4. 청구항 1에 있어서,
    복수의 메모리 페이지를 상기 제1 가상 머신에 할당하는 단계;
    상기 복수의 메모리 페이지의 제1 서브 세트를 상기 제1 가상 머신과 연관된 벌룬 풀에 저장하는 단계, 상기 제1 서브 세트는 제1 시간 기간에서 상기 제1 가상 머신에 의해 기록되지 않을 것이라 예상되는 메모리 페이지들을 포함하며; 그리고
    제1 하이퍼바이저가 적어도 하나의 메모리 페이지를 요청하는 것에 응답하여 상기 복수의 메모리 페이지의 상기 제1 서브 세트 중 적어도 하나의 페이지를 제1 하이퍼바이저에 제공하는 단계를 더 포함하는, 방법.
  5. 청구항 4에 있어서,
    상기 제1 하이퍼바이저가 상기 메모리 페이지들의 제1 서브 세트가 상기 적어도 하나의 페이지를 상기 제1 가상 머신과 연관된 상기 벌룬 풀에 리턴시킬 것을 요청하는 것에 응답하여 상기 제1 가상 머신으로부터 상기 제1 가상 머신으로의 상기 메모리 페이지들의 제1 서브 세트의 상기 적어도 하나의 페이지의 상기 컨텐츠를 검증하는 것을 건너뛰는 단계를 더 포함하는, 방법.
  6. 청구항 1에 있어서,
    복수의 메모리 페이지를 제1 가상 머신에 할당하는 단계;
    제1 하이퍼바이저에 의한 적어도 하나의 메모리 페이지에 대한 요청에 응답하여 상기 복수의 메모리 페이지의 서브 세트를 무효한 것으로 지정하는 단계; 및
    상기 복수의 메모리 페이지의 상기 서브 세트를 상기 제1 하이퍼바이저에 제공하는 단계를 더 포함하는, 방법.
  7. 청구항 6에 있어서,
    상기 복수의 메모리 페이지의 상기 서브 세트의 적어도 하나의 특성을 판정하여 적어도 하나의 특성 판정을 생성하는 단계;;
    상기 적어도 하나의 특성 판정을 상기 보안 모듈에 저장하는 단계;
    상기 제1 하이퍼바이저가 상기 복수의 메모리 페이지의 상기 서브 세트를 리턴하는 것에 응답하여 상기 적어도 하나의 특성 판정을 상기 복수의 메모리 페이지의 상기 서브 세트와 비교하는 단계; 및
    상기 적어도 하나의 특성 판정이 상기 복수의 메모리 페이지의 상기 서브 세트와 매치하는 것에 응답하여 상기 제1 가상 머신에 상기 복수의 메모리 페이지의 상기 서브 세트를 제공하는 단계를 더 포함하는, 방법.
  8. 청구항 6에 있어서,
    상기 복수의 메모리 페이지를 제1 키로 암호화하는 단계; 및
    상기 복수의 메모리 페이지의 상기 서브 세트를 제2 키로 암호화하는 단계를 더 포함하는, 방법.
  9. 청구항 8에 있어서, 상기 제2 키는 상기 복수의 메모리 페이지가 상기 제1 가상 머신에 할당되는 것에 응답하여 생성되는, 방법.
  10. 프로세서에서 보안 정보를 보호하기 위한 방법으로서,
    제1 메모리 페이지를 프로세서에서 실행하는 제1 가상 머신으로부터 상기 프로세서에서 실행하는 제1 하이퍼바이저로 이행시키는 단계;
    상기 제1 하이퍼바이저가 상기 제1 메모리 페이지를 상기 제1 가상 머신으로 리턴시키는 것을 요청함에 응답하여, 상기 프로세서의 보안 모듈에서, 상기 제1 하이퍼바이저가 리턴시킬 것을 요청하고 있는 상기 제1 메모리 페이지의 컨텐츠가 상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행되었던 상기 제1 메모리 페이지의 상기 컨텐츠와 매칭함을 선택적으로 검증하는 단계;
    상기 제1 가상 머신에 의해 기록될 것으로 예상되지 않은 메모리 페이지들을 유지하도록 상기 제1 가상 머신과 관련된 벌룬 풀(ballon pool)에 상기 제1 메모리 페이지가 할당됨에 응답하여, 상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행되었던 상기 제1 메모리 페이지의 컨텐츠와, 상기 제1 하이퍼바이저가 리턴시킬 것을 요청하고 있는 상기 제1 메모리 페이지의 컨텐츠가 매칭함을 검증하는 것을 건너뛰는 단계; 및
    상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행되었던 상기 제1 메모리 페이지의 컨텐츠와 상기 제1 하이퍼바이저가 리턴시킬 것을 요청하고 있는 상기 제1 메모리 페이지의 컨텐츠가 매칭하는 것에 응답하여 또는 상기 제1 가상 머신과 관련된 벌룬 풀에 상기 제1 메모리 페이지가 할당됨에 응답하여, 상기 제1 가상 머신에 상기 제1 메모리 페이지를 제공하는 단계를 포함하는, 방법.
  11. 청구항 10에 있어서, 상기 제1 메모리 페이지의 상기 컨텐츠를 선택적으로 검증하는 단계는:
    상기 제1 메모리 페이지가 상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행하는 것에 응답하여 상기 제1 메모리 페이지의 적어도 하나의 특성을 판정하여 적어도 하나의 특성 판정을 생성하는 단계;
    상기 적어도 하나의 특성 판정을 상기 보안 모듈에 저장하는 단계; 및
    상기 제1 하이퍼바이저가 상기 제1 메모리 페이지를 리턴하는 것에 응답하여 상기 적어도 하나의 특성 판정을 상기 제1 메모리 페이지와 비교하는 단계를 포함하는, 방법.
  12. 청구항 11에 있어서,
    상기 적어도 하나의 특성 판정이 상기 제1 메모리 페이지와 매치하지 않는 것에 응답하여 상기 제1 가상 머신에 상기 제1 메모리 페이지를 리턴시키기 위한 상기 제1 하이퍼바이저로부터의 요청을 거부하는 단계를 더 포함하는, 방법.
  13. 청구항 10에 있어서,
    복수의 메모리 페이지를 상기 제1 가상 머신에 할당하는 단계;
    상기 복수의 메모리 페이지의 제1 서브 세트를 상기 제1 가상 머신과 연관된 벌룬 풀에 저장하는 단계, 상기 제1 서브 세트는 상기 제1 가상 머신에 의해 기록되지 않았던 메모리 페이지들을 포함하며; 그리고
    제1 하이퍼바이저가 적어도 하나의 메모리 페이지를 요청하는 것에 응답하여 상기 복수의 메모리 페이지의 상기 제1 서브 세트 중 적어도 하나의 페이지를 상기 제1 하이퍼바이저에 제공하는 단계를 더 포함하는, 방법.
  14. 청구항 13에 있어서,
    상기 메모리 페이지들의 제1 서브 세트 중 상기 적어도 하나의 페이지가 상기 제1 하이퍼바이저로부터 상기 제1 가상 머신으로 이행하는 것에 응답하여 나아가 상기 메모리 페이지들의 제1 서브 세트의 상기 제1 하이퍼바이저가 상기 메모리 페이지들의 제1 서브 세트 중 상기 적어도 하나의 페이지를 상기 제1 가상 머신과 연관된 상기 벌룬 풀에 제공하는 것에 응답하여 상기 메모리 페이지들의 제1 서브 세트 중 상기 적어도 하나의 페이지의 상기 컨텐츠를 검증하는 것을 건너뛰는 단계를 더 포함하는, 방법.
  15. 청구항 10에 있어서,
    복수의 메모리 페이지를 제1 가상 머신에 할당하는 단계;
    제1 하이퍼바이저에 의한 적어도 하나의 메모리 페이지에 대한 요청에 응답하여 상기 복수의 메모리 페이지의 서브 세트를 무효한 것으로 지정하는 단계; 및
    상기 복수의 메모리 페이지의 서브 세트를 상기 제1 하이퍼바이저에 제공하는 단계를 더 포함하는, 방법.
  16. 청구항 15에 있어서,
    상기 복수의 메모리 페이지의 상기 서브 세트의 적어도 하나의 특성을 판정하여 적어도 하나의 특성 판정을 생성하는 단계;
    상기 적어도 하나의 특성 판정을 상기 보안 모듈에 저장하는 단계;
    상기 제1 하이퍼바이저가 상기 복수의 메모리 페이지의 상기 서브 세트를 리턴하는 것에 응답하여 상기 적어도 하나의 특성 판정을 상기 복수의 메모리 페이지의 상기 서브 세트와 비교하는 단계; 및
    상기 적어도 하나의 특성 판정이 상기 복수의 메모리 페이지의 상기 서브 세트와 매치하는 것에 응답하여 상기 제1 가상 머신에 상기 복수의 메모리 페이지의 상기 서브 세트를 제공하는 단계를 더 포함하는, 방법.
  17. 청구항 15에 있어서,
    상기 복수의 메모리 페이지를 제1 키로 암호화하는 단계; 및
    상기 복수의 메모리 페이지의 상기 서브 세트를 제2 키로 암호화하는 단계를 더 포함하는, 방법.
  18. 보안 정보를 보호하기 위한 프로세서로서,
    제1 가상 머신;
    제1 하이퍼바이저; 및
    보안 모듈을 포함하고, 상기 보안 모듈은,
    상기 제1 하이퍼바이저로부터 제1 메모리 페이지를 상기 제1 가상 머신으로 리턴시키기 위한 요청을 수신하는 것에 응답하여 상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행하였던 제1 메모리 페이지의 컨텐츠가 상기 제1 하이퍼바이저가 상기 제1 가상 머신으로 리턴시킬 것을 요청하는 상기 제1 메모리 페이지의 상기 컨텐츠와 매칭함을 선택적으로 검증하고;
    상기 제1 가상 머신에 의해 기록될 것으로 예상되지 않은 메모리 페이지들을 유지하도록 상기 제1 가상 머신과 관련된 벌룬 풀(ballon pool)에 상기 제1 메모리 페이지가 할당됨에 응답하여, 상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행되었던 상기 제1 메모리 페이지의 컨텐츠와, 상기 제1 하이퍼바이저가 리턴시킬 것을 요청하고 있는 상기 제1 메모리 페이지의 컨텐츠가 매칭함을 검증하는 것을 건너뛰고; 그리고
    상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행되었던 상기 제1 메모리 페이지의 상기 컨텐츠가 상기 제1 하이퍼바이저가 리턴시킬 것을 요청하고 있는 상기 제1 메모리 페이지의 상기 컨텐츠와 매칭하는 것에 응답하여 또는 상기 제1 가상 머신과 관련된 벌룬 풀에 상기 제1 메모리 페이지가 할당됨에 응답하여, 상기 제1 가상 머신에 상기 제1 메모리 페이지를 제공하는 것을 특징으로 하는 프로세서.
  19. 청구항 18에 있어서, 상기 보안 모듈은:
    상기 제1 메모리 페이지가 상기 제1 가상 머신으로부터 상기 제1 하이퍼바이저로 이행하는 것에 응답하여 상기 제1 메모리 페이지의 적어도 하나의 특성을 판정하여 적어도 하나의 특성 판정을 생성하고;
    상기 적어도 하나의 특성 판정을 상기 보안 모듈에 저장하고; 그리고
    상기 제1 하이퍼바이저가 상기 제1 메모리 페이지를 리턴시킬 것을 요청하는 것에 응답하여 상기 적어도 하나의 특성 판정을 상기 제1 메모리 페이지와 비교하여 상기 제1 메모리 페이지의 상기 컨텐츠를 선택적으로 검증하는 것을 특징으로 하는 프로세서.
  20. 청구항 19에 있어서, 상기 보안 모듈은:
    상기 적어도 하나의 특성 판정이 상기 제1 메모리 페이지와 매치하지 않는 것에 응답하여 상기 제1 가상 머신에 상기 제1 메모리 페이지를 리턴시키기 위한 상기 제1 하이퍼바이저로부터의 요청을 거부하는 것을 특징으로 하는 프로세서.
  21. 청구항 18에 있어서, 상기 보안 모듈은:
    복수의 메모리 페이지를 상기 제1 가상 머신에 할당하고;
    상기 복수의 메모리 페이지의 제1 서브 세트를 상기 제1 가상 머신과 연관된 벌룬 풀에 저장하고, 상기 제1 서브 세트는 상기 제1 가상 머신에 의해 기록되지 않았던 메모리 페이지들을 포함하며; 그리고
    제1 하이퍼바이저가 적어도 하나의 메모리 페이지를 요청하는 것에 응답하여 상기 복수의 메모리 페이지의 상기 제1 서브 세트 중 적어도 하나의 페이지를 제1 하이퍼바이저에 제공하는 것을 특징으로 하는 프로세서.
  22. 청구항 21에 있어서, 상기 보안 모듈은:
    상기 제1 하이퍼바이저가 상기 메모리 페이지들의 제1 서브 세트 중 적어도 하나의 페이지를 상기 제1 가상 머신과 연관된 벌룬 풀에 제공하는 것에 응답하여 상기 메모리 페이지들의 제1 서브 세트 중 상기 적어도 하나의 페이지의 상기 컨텐츠를 검증하는 것을 건너뛰는 것을 특징으로 하는 프로세서.
  23. 청구항 19에 있어서, 상기 보안 모듈은:
    복수의 메모리 페이지를 상기 제1 가상 머신에 할당하고;
    제1 하이퍼바이저에 의한 적어도 하나의 메모리 페이지에 대한 요청에 응답하여 상기 복수의 메모리 페이지의 서브 세트를 무효한 것으로 지정하고; 그리고
    상기 복수의 메모리 페이지의 상기 서브 세트를 상기 제1 하이퍼바이저에 제공하는 것을 특징으로 하는 프로세서.
  24. 청구항 23에 있어서, 상기 보안 모듈은:
    상기 제1 메모리 페이지의 적어도 하나의 특성을 판정하여 적어도 하나의 특성 판정을 생성하고;
    상기 적어도 하나의 특성 판정을 상기 보안 모듈에 저장하고;
    상기 제1 하이퍼바이저가 상기 제1 메모리 페이지를 리턴시킬 것을 요청하는 것에 응답하여 상기 적어도 하나의 특성 판정을 상기 제1 메모리 페이지와 비교하고; 그리고
    상기 적어도 하나의 특성 판정이 상기 제1 메모리 페이지와 매치하는 것에 응답하여 상기 제1 가상 머신에 상기 제1 메모리 페이지를 제공하는 것을 특징으로 하는 프로세서.
  25. 청구항 23에 있어서, 상기 보안 모듈은:
    상기 복수의 메모리 페이지를 제1 키로 암호화하고; 그리고
    상기 복수의 메모리 페이지의 상기 서브 세트를 제2 키로 암호화하는 것을 특징으로 하는 프로세서.
KR1020197026855A 2017-03-29 2017-08-24 하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링 KR102257320B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762478148P 2017-03-29 2017-03-29
US62/478,148 2017-03-29
PCT/US2017/048471 WO2018182772A1 (en) 2017-03-29 2017-08-24 Monitoring of memory page transitions between a hypervisor and a virtual machine

Publications (2)

Publication Number Publication Date
KR20190125985A KR20190125985A (ko) 2019-11-07
KR102257320B1 true KR102257320B1 (ko) 2021-05-27

Family

ID=63669410

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197026855A KR102257320B1 (ko) 2017-03-29 2017-08-24 하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링

Country Status (6)

Country Link
US (1) US10671422B2 (ko)
EP (1) EP3602376B1 (ko)
JP (1) JP6804665B2 (ko)
KR (1) KR102257320B1 (ko)
CN (1) CN110447032B (ko)
WO (1) WO2018182772A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579439B2 (en) * 2017-08-29 2020-03-03 Red Hat, Inc. Batched storage hinting with fast guest storage allocation
US10686605B2 (en) * 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US11126553B2 (en) * 2019-01-31 2021-09-21 EMC IP Holding Company LLC Dynamic allocation of memory between containers
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11206128B2 (en) * 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11283800B2 (en) * 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11061711B2 (en) 2019-09-23 2021-07-13 Red Hat, Inc. Storage deduplication for virtual machines with encrypted storage
US11232030B2 (en) 2019-09-27 2022-01-25 Red Hat Inc. Storage deduplication for virtual machines with encrypted storage
US11656891B2 (en) 2019-09-27 2023-05-23 Red Hat, Inc. Copy-on-write for virtual machines with encrypted storage
US11436141B2 (en) 2019-12-13 2022-09-06 Red Hat, Inc. Free memory page hinting by virtual machines
US11494219B2 (en) * 2020-02-26 2022-11-08 Red Hat, Inc. Encryption and remote attestation of containers
US11782744B2 (en) * 2020-10-08 2023-10-10 Nxp B.V. Data processing system and method for accessing data in the data processing system
CN113688407A (zh) * 2021-07-30 2021-11-23 山东云海国创云计算装备产业创新中心有限公司 一种数据管理方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150199209A1 (en) 2014-01-13 2015-07-16 Red Hat Israel, Ltd. Hypervisor-Based Balloon Page Initialization
US20160232020A1 (en) 2015-02-10 2016-08-11 Red Hat Israel, Ltd. Providing mode-dependent virtual machine function code
US20170004001A1 (en) 2015-07-01 2017-01-05 International Business Machines Corporation Protected guests in a hypervisor controlled system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135038B1 (en) * 2010-05-28 2015-09-15 Bromium, Inc. Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame
US8631212B2 (en) 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US9940228B2 (en) * 2012-06-14 2018-04-10 Vmware, Inc. Proactive memory reclamation for java virtual machines
CN103257929B (zh) * 2013-04-18 2016-03-16 中国科学院计算技术研究所 一种虚拟机内存映射方法及系统
US9536088B1 (en) * 2015-11-09 2017-01-03 AO Kaspersky Lab System and method for protection of memory in a hypervisor
US20170357592A1 (en) * 2016-06-09 2017-12-14 Vmware, Inc. Enhanced-security page sharing in a virtualized computer system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150199209A1 (en) 2014-01-13 2015-07-16 Red Hat Israel, Ltd. Hypervisor-Based Balloon Page Initialization
US20160232020A1 (en) 2015-02-10 2016-08-11 Red Hat Israel, Ltd. Providing mode-dependent virtual machine function code
US20170004001A1 (en) 2015-07-01 2017-01-05 International Business Machines Corporation Protected guests in a hypervisor controlled system

Also Published As

Publication number Publication date
EP3602376A4 (en) 2021-01-06
US20180285140A1 (en) 2018-10-04
EP3602376A1 (en) 2020-02-05
CN110447032B (zh) 2024-04-16
WO2018182772A1 (en) 2018-10-04
CN110447032A (zh) 2019-11-12
KR20190125985A (ko) 2019-11-07
US10671422B2 (en) 2020-06-02
JP6804665B2 (ja) 2020-12-23
JP2020515969A (ja) 2020-05-28
EP3602376B1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
KR102257320B1 (ko) 하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링
KR102107711B1 (ko) 처리 시스템에서의 직접 메모리 액세스 인가
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
US20170277898A1 (en) Key management for secure memory address spaces
CN106062768B (zh) 处理系统中信息的密码保护
US8689212B2 (en) Information processing device for controlling an application able to access a predetermined device, and control method using an information processing device for controlling an application able to access a predetermined device
US10216648B2 (en) Maintaining a secure processing environment across power cycles
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
CN107729758B (zh) 用于多租户云工作量的安全处理器
US20170288874A1 (en) Cryptographic protection for trusted operating systems
KR101323858B1 (ko) 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US20190182040A1 (en) Security key identifier remapping
EP2889794B1 (en) Offloading functionality from a secure processing environment
US10181027B2 (en) Interface between a device and a secure processing environment
CN111566650A (zh) 管理加密系统中的密码术密钥集合
JP6672341B2 (ja) 仮想マシンの状態情報の保護

Legal Events

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