WO2014207581A2 - Processing a guest event in a hypervisor-controlled system - Google Patents

Processing a guest event in a hypervisor-controlled system Download PDF

Info

Publication number
WO2014207581A2
WO2014207581A2 PCT/IB2014/059780 IB2014059780W WO2014207581A2 WO 2014207581 A2 WO2014207581 A2 WO 2014207581A2 IB 2014059780 W IB2014059780 W IB 2014059780W WO 2014207581 A2 WO2014207581 A2 WO 2014207581A2
Authority
WO
WIPO (PCT)
Prior art keywords
guest
memory
hypervisor
event
firmware
Prior art date
Application number
PCT/IB2014/059780
Other languages
French (fr)
Other versions
WO2014207581A3 (en
Inventor
Utz Bacher
Reinhard Buendgen
Einar Lueck
Original Assignee
International Business Machines Corporation
Ibm (China) Investment Company Ltd.
Ibm Deutschland Management & Business Support Gmbh
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 International Business Machines Corporation, Ibm (China) Investment Company Ltd., Ibm Deutschland Management & Business Support Gmbh filed Critical International Business Machines Corporation
Priority to CN201480036373.2A priority Critical patent/CN105453034B/en
Priority to DE112014000965.2T priority patent/DE112014000965T5/en
Priority to JP2016522898A priority patent/JP6347831B2/en
Priority to GB1600172.9A priority patent/GB2530225B/en
Priority to US14/899,166 priority patent/US9690947B2/en
Publication of WO2014207581A2 publication Critical patent/WO2014207581A2/en
Publication of WO2014207581A3 publication Critical patent/WO2014207581A3/en

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/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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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

Definitions

  • the present invention relates in general to data processing systems, and in particular, to a method and a system for processing a guest event in a hypervisor-controlled system.
  • Trust in the Cloud provider is critical since an administrator of the provider has the capability to fully inspect the customer's workload and data. This potential breach for espionage is the reason for being reluctant for many customers.
  • Trust in Cloud security relates to the threat of a hypervisor breach, i.e. if an attacker gains access to the hypervisor, the customer's workload and data are at risk again.
  • network encryption like secure sockets layer (SSL) can be used to encrypt socket connections
  • disk encryption tools like dm-crypt in LINUX can be used to encrypt data on a disk device.
  • TPM trusted platform module
  • US 2011/0302400 Al describes a method that generally includes receiving, by a trust anchor on a central processing unit (CPU) having a plurality of processing cores, a virtual machine (VM) image. As received, the VM image is encrypted using a VM image encryption key. The method also includes obtaining the VM image encryption key and configuring a first encrypt/ decrypt block with the VM image encryption key. The method also includes generating a memory session key and configuring a second encrypt/decrypt block with the memory session key. The method also includes fetching one or more pages of the VM image into a memory accessible by the plurality of processing cores. Each fetched page is decrypted by the first encrypt/decrypt block using the VM image encryption key and subsequently encrypted by the second encrypt/decrypt block using the memory session key.
  • VM virtual machine
  • Another objective is to provide a system for securely processing guest data in an untrusted Cloud environment.
  • a method for processing a guest event in a hypervisor-controlled system comprising the steps: (i) the guest event triggering a first firmware service being specific for the guest event in a firmware, the guest event being associated with a guest and with a guest state and a guest memory encrypted with a guest key; (ii) the firmware processing information associated with the guest event, comprising information of the guest state and the guest memory, and presenting only a subset of the information of the guest state and the guest memory in decrypted form to a hypervisor, wherein the subset of the information is selected to suffice for the hypervisor to process the guest event; (iii) the firmware retaining a part of the information of the guest state and the guest memory that is not being sent to the hypervisor; (iv) the hypervisor processing the guest event based on the received subset of the information of the guest state and the guest memory and sending a process result to the firmware triggering a second firmware service being specific for the guest event; (v) the firmware
  • the first firmware service may favorably comprise steps (ii) and (iii), namely (ii) the firmware processing information associated with the guest event, comprising information of the guest state and the guest memory, and presenting only a subset of the information of the guest state and the guest memory in decrypted form to a hypervisor, wherein the subset of information is selected to suffice for the hypervisor to process the guest event; and (iii) the firmware retaining a part of the information of the guest state and the guest memory that was not being sent to the hypervisor.
  • the second firmware service may favorably comprise steps (v) and (vi), namely (v) the firmware processing the received process result together with the part of the information of the guest state and the guest memory that was not sent to the hypervisor, generating a state and/or memory modification; and (vi) the firmware performing the state and/or memory modification associated with the guest event at the guest memory in encrypted form.
  • the method according to the invention generally describes securely managing virtual machines while maintaining privacy of virtual machine contents towards the hypervisor comprising one or more VMs each with resources including encrypted memory and context data, a hypervisor managing VM resources and VM states, CPU assisted virtualization enforcing restricted access of the hypervisor to VM state/memory/context through firmware services.
  • the method according to the invention describes processing a guest event in a hypervisor-controlled system where guest data is encrypted with a guest key not accessible to the hypervisor and where CPUs and firmware are considered trusted and have access to the guest key when running in guest context.
  • the firmware in this context particularly means system software implemented in a hardware based environment.
  • the method according to the invention describes running virtual machines from memory encrypted for a virtual machine. Yet the method prevents that a hypervisor can always fully inspect its guests, i.e. virtual machines/images, and read memory contents with potentially sensitive data.
  • the advantage is that the described method does not use processes like authentication of a trust anchor with a (customer) key service, or re- encryption of a VM image (using a second key) when loading the encrypted image from disk to memory. It does not need the usage of a plain counter (CTR) mode encryption being insecure, instead is suggests the usage of a variant of a CTR mode encryption like an Xor-encrypt-xor (XEX)-based tweaked-codebook mode with ciphertext stealing (XTS) mode encryption being secure.
  • CTR plain counter
  • the method is able to deal with interrupts or hypervisor intercepts.
  • the method is able to secure non-encrypted cache contents from a non- authorized access and is able to deal with I/O.
  • the described method does not require an attestation module (e.g. a TPM) on the CPU.
  • the method may further comprise the steps (i) decrypting or encrypting the guest memory by a CPU, if the CPU runs in guest context; (ii) allowing the guest to communicate externally through a non-encrypted memory range; (iii) paging encrypted pages of the guest memory by the hypervisor.
  • a virtualization mechanism of CPU architectures may be extended, so that a memory of guests is always encrypted. This may be done during processing by the CPU and prevents the hypervisor from reading the memory or registering contents in clear text.
  • the cache may be unencrypted. However when data of a guest leaves the CPU, the content may be encrypted. Decryption of the guest memory during guest execution may take place transparently through the CPU, but only as the CPU is running the guest context.
  • the method may advantageously comprise the steps (i) providing the guest with the guest key being encrypted with the public key associated with a private key of the CPU for transfer to the key store of the CPU; (ii) providing the CPU with the private key, being stored in the CPU and being used to decrypt the encrypted guest key; (iii) the guest key being used to encrypt and decrypt the guest memory while running guest or firmware code in guest context by the CPU.
  • a secure deployment and execution of a virtual machine in a hypervisor-controlled system may be enabled.
  • Each CPU may get a key pair; its private key may be stored in the CPU only, and may be used to decrypt guest keys.
  • the CPU public key may be used to encrypt (and transfer) the private guest key to the CPU, in which the guest key may be stored and used securely.
  • the guest may generate a key as well.
  • the guest key may be encrypted with the CPU public key before it is transferred to the CPU.
  • the CPU may use this guest key to encrypt the guest's memory (but only when running the guest in the context of the CPU virtualization function).
  • the guest key may also be used to deploy images from the guest in a Cloud environment.
  • the method according to the invention may further comprise the steps (i) generating a boot image by a client or customer; (ii) encrypting the boot image with the guest key; (iii) transferring the encrypted boot image to a boot disk; (iv) loading the encrypted boot image of a guest by the hypervisor to the guest memory; (v) starting an execution of a guest as a virtual machine at the CPU level, where the guest is defined by an area of an encrypted memory, an area of an unencrypted memory and an encrypted guest key.
  • the guest key may be known only to the client and the guest respectively and the CPU in guest context and for the transport to the CPU the guest key may be encrypted with the public key associated with the private key of the CPU. It need not be known to a Cloud operator or the hypervisor.
  • the guest key may be encrypted for one or more systems or CPUs.
  • the method may further comprise the steps (i) decrypting a thread of execution in the virtual machine executing on the boot image to clear text when the CPU is in guest context; (ii) decrypting the guest memory while the CPU is in guest context and the guest state, both being protected from access by the hypervisor or other guests.
  • the hypervisor may read contents of the boot image from the boot disk into the guest memory without relocation, where the boot disk contents may comprise a kernel, parameters, an initial ram disk.
  • Loading the boot image may also comprise mounting a conventionally encrypted (e.g. via dm-crypt, a usually applied LINUX encrypting tool) root file system.
  • the boot disk contents may comprise a kernel execution (kexec) environment that loads a new kernel from a conventionally encrypted target boot device.
  • the method may comprise the steps (i) extending a virtualization function of the CPU to encrypt the guest memory when the encrypted area of the guest memory is written to in guest context; (ii) decrypting the guest memory when the encrypted area of a guest memory is read from in guest context; (iii) keeping the encrypted area of the guest memory and guest registers being accessible to the hypervisor only in encrypted form.
  • the CPU architecture may be extended to provide a well-defined means to access a guest state, where access methods may provide the hypervisor only with the necessary information to perform its tasks (e.g. handling traps). However, the guest memory and register file may not be accessible outside of said access methods.
  • the register file may not be accessible to the hypervisor directly, but may be stored away and restored through a hypervisor service.
  • Other contexts than the guest itself may only see encrypted memory contents, as the hypervisor may not see the unencrypted guest memory.
  • An area of the guest memory may remain unencrypted in order to exchange data with the hypervisor or I/O devices.
  • An I/O scratch area may be outside the encrypted memory area.
  • the method may further comprise the steps (i) keeping the encrypted range of the guest memory or registers associated with the guest event being not accessible to the hypervisor in decrypted form; (ii) extending the virtualization function of the CPU by access methods to specific guest data associated with the guest event.
  • This step may be advantageous for a hypervisor operation, but may not reveal data or code (other than reason and relevant parameters for instructions that trap) of the guest and enable to continue execution of the guest event. Some traps may be disabled entirely since they may only be meaningful (e.g. single stepping), when a hypervisor has full access to a guest.
  • the method may further comprise the steps (i) defining a non-encrypted memory area for I/O buffers and I/O control structures of the guest outside the encrypted area of the guest memory; (ii) starting the I/O process by the guest using that non-encrypted area of the guest memory; (iii) the virtualization function of the CPU generating a guest event; (iv) the hypervisor reading a reason for the guest event and performing the I/O process.
  • the hypervisor and I/O devices may have access to I/O control structures and data.
  • the method may further comprise the steps (i) paging-out pages of the guest memory by the hypervisor; (ii) upon attempting access to a paged-out page, providing a page fault that indicates to the hypervisor whether a page-out operation of the hypervisor caused that page fault; (iii) triggering the hypervisor to perform a page-in process to the guest memory.
  • the hypervisor may store the pages on a hypervisor owned swap device, where still the page contents may be encrypted.
  • the CPU's virtualization function may trap, where the hypervisor may read a reason for the trap (e.g. uniformpage fault") and may read a guest address. Then the hypervisor may put the page back to the same guest address, which maintains guest data integrity when encryption results are kept non-relocatable. Then the hypervisor may restart the guest.
  • the method may further comprise checking a guest integrity with a checking process that knows the guest key, the checking process comprising the steps (i) the guest reading a memory content in clear text from the guest memory transferring an arbitrary range of the guest memory via a secure communication path to the checking process; (ii) requesting the same memory range of the guest memory from the hypervisor and transferring it to the checking process; (iii) comparing the memory content obtained from the guest with the result of decrypting the memory content obtained from the hypervisor; (iv) delivering a comparison result depending on the contents of the two memory ranges; (v) returning the result of the checking process being positive if the comparison result equals zero, otherwise being negative.
  • the hypervisor is not able to read/inject code or data since it is not provided with the key for guest memory decryption/encryption.
  • a data processing program for execution in a data processing system comprising an implementation of an instruction set for performing a method as described above when the data processing program is run on a computer.
  • a favorable computer program product comprising a computer usable medium including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to perform a method for processing a guest event in a hypervisor-controlled system, comprising the steps: (i) the guest event triggering a first firmware service being specific for the guest event in a firmware, the guest event being associated with a guest and with a guest state and a guest memory encrypted with a guest key; (ii) the firmware processing information associated with the guest event, comprising information of the guest state and the guest memory, and presenting only a subset of the information of the guest state and the guest memory in decrypted form to a hypervisor, wherein the subset of the information is selected to suffice for the hypervisor to process the guest event; (iii) the firmware retaining a part of the information of the guest state and the guest memory that is not being sent to the hypervisor; (iv) the hypervisor processing the guest event based on the received subset of the information of the guest state
  • aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit,” “module” or “system.”
  • aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
  • the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
  • a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
  • a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
  • a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
  • a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
  • Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • LAN local area network
  • WAN wide area network
  • Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
  • These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the block diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the block diagram block or blocks.
  • a data processing system for execution of a data processing program comprising software code portions for performing a method described above.
  • Fig. 1 a stack of components in a hypervisor-controlled system according to prior art
  • FIG. 2 a general overview of a method for a secure execution of guests in an insecure environment according to an embodiment of the invention
  • Fig. 3 a system diagram of a hypervisor-controlled system for a secure execution of guests in an insecure environment according to an embodiment of the invention
  • Fig. 4 a generic flow chart for running an encrypted guest according to an embodiment of the invention
  • Fig. 5 a detailed flow chart for interception handling with an encrypted guest running according to an embodiment of the invention
  • Fig. 6 an example embodiment of a data processing system for carrying out a method according to the invention.
  • Figure 1 shows a stack of components in a hypervisor-controlled system according to prior art.
  • the different components comprise one or more guests 20, realized as a virtual machine, running on a hypervisor-controlled system as a virtual server system, consisting of firmware 70, hardware 72, as e.g. one or more CPUs, memory, I/O devices 74 for storage networking.
  • a hypervisor 30 manages the resources of the hardware 72 and I/O devices 74 and allocates appropriate portions of these resources to the guests 20.
  • the guest VM 20 is operated by a client or customer, whereas the hypervisor 30 is operated by a Cloud provider, who may be untrusted by the client.
  • the firmware 70, as well as the hardware 72, are manufactured by a hardware vendor, who may be considered as trusted. It is an objective of the invention to provide a method for securely processing the guest VM 20 in a Cloud environment where the Cloud provider may not be trusted.
  • the method according to the invention for processing a guest event in a hypervisor-controlled system 10 is comprising the steps: (i) the guest event triggering a first firmware service being specific for the guest event in a firmware 70, the guest event being associated with a guest 20 and with a guest state 52 and a guest memory 22 encrypted with a guest key 24; (ii) the firmware 70 processing information associated with the guest event, comprising information of the guest state 52 and the guest memory 22, and presenting only a subset of the information of the guest state 52 and the guest memory 22 in decrypted form to a hypervisor 30, wherein the subset of the information is selected to suffice for the hypervisor 30 to process the guest event; (iii) the firmware 70 retaining a part of the information of the guest state 52 and the guest memory 22 that was not being sent to the hypervisor 30; (iv) the hypervisor 30 processing the guest event based on the received subset of the information of the guest state 52 and the guest memory 22 and sending a process result to the firmware 70 triggering a
  • the first firmware service may favorably comprise at least one of the steps (ii) and (iii) of the description above, wherein in step (ii), the firmware 70 processing information associated with the guest event, comprising information of the guest state 52 and the guest memory 22, and presenting only a subset of the information of the guest state 52 and the guest memory 22 in decrypted form to a hypervisor 30, wherein the subset of information is selected to suffice for the hypervisor 30 to process the guest event.
  • Step (iii) comprises the firmware 70 retaining a part of the information of the guest state 52 and the guest memory 22 that was not being sent to the hypervisor 30.
  • the second firmware service may favorably comprise at least one of the steps (v) and (vi) of the description above, wherein step (v) comprises the firmware 70 processing the received process result together with the part of the information of the guest state and the guest memory that was not sent to the hypervisor 30, generating a state and/or memory modification; and wherein in step (vi) the firmware 70 performing the state and/or memory modification associated with the guest event at the guest memory 22 in encrypted form.
  • FIG. 2 gives a general overview of a method for a secure execution of guests 20 in an insecure environment of a hypervisor-controlled system 10 according to an embodiment of the invention. This may be achieved in analogy to a secure socket layer, where secure operation (i.e. messaging) is also achieved over an unsecure medium.
  • a hypervisor 30, which is considered as untrusted, may control secure guests 20 as well as unsecure guests 40 at the same time and in the same system.
  • the CPU 216 that runs the hypervisor 30 and the guests 20, 40 maintains a specific context 42 for each secure guest 20, a specific context 44 for each unsecure guest 40 and a context 46 for the hypervisor 30 respectively.
  • Each context 42 of a secure guest 20 contains a guest key 24 associated which the according secure guest 20.
  • each secure guest 20 is encrypted with the guest key 24 of the according secure guest 20.
  • These guests, 20, 40 as well as the hypervisor 30 may run on a CPU 216 in their own contexts 42, 44, 46. Also on the CPU 216 there is the hypervisor 30 running in its own context 46.
  • a CPU 216 runs in one context it has no access to information maintained by another context.
  • a CPU 216 runs in a guest context 42 of a secure guest 20 it has access to the guest key 24 of that guest 20 to encrypt and decrypt data of that guest 20.
  • a CPU 216 enters a context of a guest 20, 40 or a hypervisor 30 only if it processes code of that guest 20, 40 or that hypervisor 30 respectively.
  • Figure 3 shows a system diagram of a hypervisor-controlled system 10 for a secure execution of guests 20 in an insecure environment according to an embodiment of the invention.
  • the diagram in Figure 3 shows one or more guests 20, named guest 1 to guest n, controlled by a hypervisor 30, all components running on a CPU 216, which is connected to a memory 230.
  • the CPU 216 comprises access means 50 for a state of guest context of the CPU's virtualization function 34, where the access is controlled based on the context the CPU 216 is in.
  • These access means 50 may read a guest state 52 and/or a virtual CPU state from a store of guest states 52, containing a context information and/or control blocks which may be hidden from the hypervisor 30.
  • the store of guest states 52 contains a guest state 52 from the execution of the virtualization function 34.
  • the instruction execution unit 54 fetches code from the memory 230 into the cache 56 and executes that code.
  • the memory fetches and stores, executed by the instruction execution unit 54 may be triggered.
  • data, involved in these fetch and store requests is present in clear text.
  • data will be decrypted on the transfer into the cache 56 by the encryption unit 58 when the virtualization function 34 is running in the context of the corresponding guest 20 using the guest key 24.
  • the encryption unit 58 will encrypt the cache lines on the transfer out to the memory 230 using the guest key 24 of the corresponding guest 20 that is currently executed by the virtualization function 34.
  • the encryption unit 58 is located between the cache 56 and the memory interface 60 of the CPU 216 which connects to the memory 230.
  • the virtualization function 34 controls 64 the encryption unit 58 and provides it with the cryptographic guest key 24 of a secure guest 20 from the guest key store 28 if the CPU 216 runs in the context of that secure guest 20.
  • the CPU 216 has got a private key 26 for decrypting encrypted guest keys 24, which are stored in the key store 28 and fed to the encryption unit 58.
  • the guest key store 28 may contain encrypted guest keys 24 for transmission to the CPU 216 as well as decrypted guest keys for instruction execution.
  • the cache 56 may contain clear text data, however processes, which are not running in a guest context, may not access this clear text data.
  • the cache 56 therefore may associate data with the context of the guest 20 the data belongs to.
  • the memory 230 may contain encrypted guest memory areas 22 as well as clear text areas for communicating guest data via I/O with an outside system as well as memory areas belonging to the hypervisor 30 and unsecure guests.
  • the hypervisor 30 has only limited access to data and/or code in the memory 230, because there exist ranges which are encrypted with a guest key 24 and other ranges which are visible to the hypervisor 30.
  • processing a guest event in a hypervisor-controlled system 10 is comprising the steps: (i) triggering a first firmware service; (ii) the firmware 70 processing information associated with the guest event, presenting only a subset of the information in decrypted form to a hypervisor 30; (iii) the firmware retaining a part of the information that is not being sent to the hypervisor 30; (iv) the hypervisor 30 triggering a second firmware service; (v) the firmware generating a guest state 52 and/or guest memory 22 modification; (vi) the firmware performing the guest state 52 and/or guest memory 22 modification. Concrete features of this generic approach are described hereafter in more details.
  • first and second firmware services associated with that interruption or instruction interception will have access to the guest state 52, the guest memory 22 both encrypted with the guest key 24 and decrypted in the cache 56, and the (unencrypted) hypervisor memory. Both services are capable of reading the guest memory 22 of the guest 20 by having this memory 22 transferred to the cache 56 thereby having the memory 22 decrypted using the guest key 24.
  • the firmware services may transfer unencrypted data from the cache 56 to memory private to the firmware service or to the hypervisor 30.
  • the second firmware service is capable of transferring unencrypted data from its private memory or the hypervisor memory into a cache region associated with encrypted guest memory 22 and then transferring the contents of that cache region to the encrypted guest memory 22 while encrypting the contents of the cache region using the guest key 24.
  • a virtualized environment of a CPU 216 is extended decrypting or encrypting the guest memory 22 by the CPU 216, if the CPU 216 runs in guest 20 context; allowing the guest 20 to communicate externally through a non-encrypted memory range; paging encrypted pages of the guest memory 22 by the hypervisor 30.
  • a secure deployment and execution of a guest 20 comprises providing the guest 20 with the guest key 24 being encrypted with the public key 32 associated with a private key 26 of the CPU 216 for transfer to the key store 28 of the CPU 216; providing the CPU 216 with the private key 26, being stored in the CPU 216 and being used to decrypt the encrypted guest key 24; the guest key 24 being used to encrypt and decrypt the guest memory 22 while running guest or firmware code in guest 20 context by the CPU 216.
  • a boot image generation and deployment process covers generating a boot image by a client or customer for the guest 20; encrypting the boot image with the guest key 24; transferring the encrypted boot image to a boot disk; loading the encrypted boot image of a guest 20 by the hypervisor 30 to the guest memory 22; starting an execution of a guest 20 as a virtual machine at the CPU 216 level.
  • a boot process of the boot image comprises a thread of execution in the virtual machine executing on the guest memory 22 being decrypted to clear text while the CPU 216 is in guest 20 context; the guest memory 22 being decrypted while the CPU 216 is in guest 20 context, and the guest state 52, both, the guest memory 22 and the guest state 52 being protected from access by the hypervisor 30 or other guests.
  • Further execution of a guest 20 comprises extending a virtual ization function 34 of the CPU 216 to encrypt the guest memory 22 when the encrypted area of the guest memory 22 is written to in guest 20 context; decrypting the guest memory 22 when the encrypted area of a guest memory 22 is read from in guest 20 context; the encrypted area of the guest memory 22 and guest registers being accessible to the hypervisor 30 only in encrypted form.
  • An interaction between the guest 20 and the hypervisor 30 further covers the encrypted range of the guest memory 22 or registers associated with the guest event being not accessible to the hypervisor 30 in decrypted form; extending the virtualization function 34 of the CPU 216 by access methods to specific guest data associated with the guest event.
  • An I/O process of a guest 20 further comprises defining a non-encrypted memory area for I/O buffers and I/O control structures of the guest 20 outside the encrypted area of the guest memory 22; starting the I/O process by the guest 20 using that non-encrypted area of the guest memory 22; the virtualization function 34 of the CPU 216 generating a guest event; the hypervisor 30 reading a reason for the guest event and performing the I/O process.
  • a paging process further is characterized by paging-out pages of the guest memory 22 by the hypervisor 30; upon attempting access to a paged-out page, providing a page fault that indicates to the hypervisor 30 whether a page-out operation of the hypervisor 30 caused that page fault; triggering the hypervisor 30 to perform a page-in process to the guest memory 22.
  • the checking process comprises the steps: the checking process knowing the guest key 24; the guest 20 reading a memory content in clear text from the guest memory 22 transferring an arbitrary range of the guest memory 22 via a secure communication path to the checking process; requesting the same memory range of the guest memory 22 from the hypervisor 30 and transferring it to the checking process; comparing the memory content obtained from the guest 20 with the result of decrypting the memory content obtained from the hypervisor 30; delivering a comparison result depending on the contents of the two memory ranges; the result of the checking process being positive if the comparison result equals zero, otherwise being negative.
  • FIG 4 a generic flow chart for executing an encrypted guest running according to an embodiment of the invention from a hypervisor 30 and CPU 216 view is shown.
  • Figure 4 as well as Figure 5 reference in the flowcharts objects defined in the diagrams of Figures 2 and 3, so the reference numerals used also are referencing the objects of these Figures.
  • Running an encrypted guest 20 starts with step S410, where the hypervisor 30 reads an encrypted guest image from an initial program loader (IPL) device together with an encrypted guest key 24.
  • IPL initial program loader
  • step S420 the hypervisor 30 stores the encrypted guest image into the guest memory 22.
  • step S430 the hypervisor 30 prepares an initial guest state 52 that includes the encrypted guest key 24.
  • the steps S410 to S430 serve for initializing a guest 20 in a hypervisor- controlled system 10.
  • step S440 a secure guest 20 virtual machine is started according to the current guest state 52.
  • a CPU 216 runs the secure guest 20 in a secure guest context 42 as described by the current guest state 52.
  • step S460 if a guest event in the form of an interrupt or an instruction interception occurs, the guest 20 exits the guest context 42 with an updated guest state 52 due to this interrupt or interception.
  • the hypervisor 30 is now able in step S470, to handle the interrupt or interception using a first firmware service to read data from the secure guest 20 or a second firmware service to write data to the secure guest 20.
  • a first firmware service may be triggered, meaning that (ii) the firmware 70 is processing information associated with the guest event and presenting only a subset of the information of the guest state 52 and the guest memory 22 in decrypted form to the hypervisor 30, and (iii) the firmware 70 is retaining a part of the information that is not being sent to the hypervisor 30. Further, (iv) based on the received subset of the information, the hypervisor 30 may be triggering a second firmware service for (v) generating a state and/or memory modification of the guest 20, and for (vi) performing the state and/or memory modification associated with the guest event at the guest memory 22 in encrypted form
  • step S480 the whole process comes to an end. If the secure guest 20 is not finished, a loop to step S440 is closed and the hypervisor 30 is starting the secure guest 20 again.
  • Step S510 starts with a guest event, meaning that the secure guest 20 is issuing an instruction which requests interpretation or support by the hypervisor 30, e.g., an instruction to store system environment parameters, which is usually provided by the hypervisor 30.
  • a guest event meaning that the secure guest 20 is issuing an instruction which requests interpretation or support by the hypervisor 30, e.g., an instruction to store system environment parameters, which is usually provided by the hypervisor 30.
  • execution of the virtualization function 34 leaves the guest context 42 and passes initiative to a CPU-internal virtualization code.
  • the CPU- internal virtualization code detects a reason for exit of the guest 20, e.g., identifies instruction to store system environment parameters.
  • step S540 the CPU-internal virtualization code prepares handles for the hypervisor 30 to access input and output parameters, according to the reason for exit of the guest 20, e.g., associates the storage location for the requested information with a handle.
  • step S550 the CPU-internal virtualization code masks the part of the execution state not needed to process the interception and returns the initiative to the hypervisor 30, indicating the exit of the guest 20 and a hint to input and output parameter handles, e.g., hides registers and context data from the hypervisor 30, e.g. by encrypting them.
  • the CPU-internal virtualization code in steps S520 to S550 can alternatively be implemented as a first firmware service.
  • step S560 the hypervisor 30 detects the reason for the exit of the guest 20 by reading the reason indication from the CPU-internal virtualization code, e.g., reads a reason code to identify a virtual server's request to store system environment parameters.
  • the hypervisor 30 triggers in step S570 (if necessary, repeatedly) firmware services (e.g. the first firmware service) to work with input and output parameters to process the exit of the guest 20.
  • firmware services e.g. the first firmware service
  • the hypervisor 30 uses previously established handles as means to reference contents of the memory 230 and registers required for processing, e.g., the hypervisor 30 stores system environment parameters into the virtual server's memory through firmware services (e.g. the second firmware service) using the received handle.
  • step S580 the hypervisor 30 restarts virtualization function 34 execution by issuing an according CPU instruction, until in step S590, the CPU-internal virtualization code clears handles from the previous exit of the guest 20, unmasks the virtual server context for the virtualization function 34 execution and starts execution of the virtual server.
  • a state and/or memory modification of the guest 20 may be generated and performed at the guest memory 22 in encrypted form.
  • Data processing system 210 is only one example of a suitable data processing system and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. Regardless, data processing system 210 is capable of being implemented and/or performing any of the functionality set forth herein above.
  • a computer system/server 212 which is operational with numerous other general purpose or special purpose computing system environments or configurations.
  • Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server 212 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed Cloud computing environments that include any of the above systems or devices, and the like.
  • Computer system/server 212 may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system.
  • program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types.
  • Computer system/server 212 may be practiced in distributed Cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules may be located in both local and remote computer system storage media including memory storage devices.
  • computer system/server 212 in data processing system 210 is shown in the form of a general-purpose computing device.
  • the components of computer system/server 212 may include, but are not limited to, one or more processors or processing units 216, a system memory 228, and a bus 218 that couples various system components including system memory 228 to processor 216.
  • Bus 218 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
  • bus architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.
  • Computer system/server 212 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 212, and it includes both volatile and non-volatile media, removable and non-removable media.
  • System memory 228 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 230 and/or cache memory 232.
  • Computer system/server 212 may further include other removable/non-removable, volatile/non-volatile computer system storage media.
  • storage system 234 can be provided for reading from and writing to a non-removable, nonvolatile magnetic media (not shown and typically called a "hard drive").
  • a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk")
  • an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media
  • each can be connected to bus 218 by one or more data media interfaces.
  • memory 228 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.
  • Program/utility 240 having a set (at least one) of program modules 242, may be stored in memory 228 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.
  • Program modules 242 generally carry out the functions and/or methodologies of embodiments of the invention as described herein.
  • Computer system/server 212 may also communicate with one or more external devices 214 such as a keyboard, a pointing device, a display 224, etc.; one or more devices that enable a user to interact with computer system/server 212; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 212 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 222. Still yet, computer system/server 212 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 220.
  • LAN local area network
  • WAN wide area network
  • public network e.g., the Internet
  • network adapter 220 communicates with the other components of computer system/server 212 via bus 218. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 212. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
  • each block in the block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical functions.
  • the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
  • each block of the block diagrams, and combinations of blocks in the block diagrams can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

Abstract

The invention relates to a method for processing a guest event in a hypervisor- controlled system (10), comprising the steps: (i) the guest event triggering a first firmware service being specific for the guest event in a firmware (70), the guest event being associated with a guest (20) and with a guest state (52) and a guest memory (22) encrypted with a guest key (24); (ii) the firmware (70) processing information associated with the guest event, comprising information of the guest state (52) and the guest memory (22), and presenting only a subset of the information of the guest state (52) and the guest memory (22) in decrypted form to a hypervisor (30), wherein the subset of the information is selected to suffice for the hypervisor (30) to process the guest event; (iii) the firmware (70) retaining a part of the information of the guest state (52) and the guest memory (22) that is not being sent to the hypervisor (30); (iv) the hypervisor (30) processing the guest event based on the received subset of the information of the guest state (52) and the guest memory (22) and sending a process result to the firmware (70) triggering a second firmware service being specific for the guest event; (v) the firmware (70) processing the received process result together with the part of the information of the guest state (52) and the guest memory (22) that was not sent to the hypervisor (30), generating a state and/or memory modification; (vi) the firmware (70) performing the state and/or memory modification associated with the guest event at the guest memory (22) in encrypted form.

Description

D E S C R I P T I O N
PROCESSING A GUEST EVENT IN A HYPERVISOR-CONTROLLED SYSTEM
The present invention relates in general to data processing systems, and in particular, to a method and a system for processing a guest event in a hypervisor-controlled system.
BACKGROUND
Customer adoption of public Clouds is limited to non-mission critical data. Very often, the core business data is an essential asset to a customer, and the data's confidentiality is critical for business success. As long as customers do not trust Cloud environments, Cloud adoption of those business sensitive environments stays minimal. Among the main concerns of customers are lack of trust in the Cloud provider and the security of the Cloud.
Trust in the Cloud provider is critical since an administrator of the provider has the capability to fully inspect the customer's workload and data. This potential breach for espionage is the reason for being reluctant for many customers.
Trust in Cloud security relates to the threat of a hypervisor breach, i.e. if an attacker gains access to the hypervisor, the customer's workload and data are at risk again.
Approaches to guarantee confidentiality and privacy are limited to input/output (I/O) at this time: network encryption like secure sockets layer (SSL) can be used to encrypt socket connections and disk encryption tools like dm-crypt in LINUX can be used to encrypt data on a disk device.
A trusted platform module (TPM) has been developed to ensure the boot chain is valid at the time the customer runs its workload, yet it is not deployed in a Cloud environment. Also, TPMs do not ensure privacy but integrity of the setup at best.
All these technologies, even if used, do not address the issue that a hypervisor can always fully inspect its guests, where guests may in general be virtual machines on a hypervisor-controlled system, and read memory contents with potentially sensitive data of the image running in the guest. The concerns mentioned above cannot be eliminated by these technologies.
US 2011/0302400 Al describes a method that generally includes receiving, by a trust anchor on a central processing unit (CPU) having a plurality of processing cores, a virtual machine (VM) image. As received, the VM image is encrypted using a VM image encryption key. The method also includes obtaining the VM image encryption key and configuring a first encrypt/ decrypt block with the VM image encryption key. The method also includes generating a memory session key and configuring a second encrypt/decrypt block with the memory session key. The method also includes fetching one or more pages of the VM image into a memory accessible by the plurality of processing cores. Each fetched page is decrypted by the first encrypt/decrypt block using the VM image encryption key and subsequently encrypted by the second encrypt/decrypt block using the memory session key.
SUMMARY
It is an objective of the invention to provide a method for securely processing guest data in an untrusted Cloud environment.
Another objective is to provide a system for securely processing guest data in an untrusted Cloud environment.
These objectives are achieved by the features of the independent claims. The other claims, the drawings and the specification disclose advantageous embodiments of the invention.
According to a first aspect of the invention a method is proposed for processing a guest event in a hypervisor-controlled system, comprising the steps: (i) the guest event triggering a first firmware service being specific for the guest event in a firmware, the guest event being associated with a guest and with a guest state and a guest memory encrypted with a guest key; (ii) the firmware processing information associated with the guest event, comprising information of the guest state and the guest memory, and presenting only a subset of the information of the guest state and the guest memory in decrypted form to a hypervisor, wherein the subset of the information is selected to suffice for the hypervisor to process the guest event; (iii) the firmware retaining a part of the information of the guest state and the guest memory that is not being sent to the hypervisor; (iv) the hypervisor processing the guest event based on the received subset of the information of the guest state and the guest memory and sending a process result to the firmware triggering a second firmware service being specific for the guest event; (v) the firmware processing the received process result together with the part of the information of the guest state and the guest memory that was not sent to the hypervisor, generating a state and/or memory modification; (vi) the firmware performing the state and/or memory modification associated with the guest event at the guest memory in encrypted form.
The first firmware service may favorably comprise steps (ii) and (iii), namely (ii) the firmware processing information associated with the guest event, comprising information of the guest state and the guest memory, and presenting only a subset of the information of the guest state and the guest memory in decrypted form to a hypervisor, wherein the subset of information is selected to suffice for the hypervisor to process the guest event; and (iii) the firmware retaining a part of the information of the guest state and the guest memory that was not being sent to the hypervisor.
The second firmware service may favorably comprise steps (v) and (vi), namely (v) the firmware processing the received process result together with the part of the information of the guest state and the guest memory that was not sent to the hypervisor, generating a state and/or memory modification; and (vi) the firmware performing the state and/or memory modification associated with the guest event at the guest memory in encrypted form.
Particularly, a method for processing a guest event in a hypervisor-controlled system is addressed exhibiting the advantage of protecting guest confidentiality. Thus the method according to the invention generally describes securely managing virtual machines while maintaining privacy of virtual machine contents towards the hypervisor comprising one or more VMs each with resources including encrypted memory and context data, a hypervisor managing VM resources and VM states, CPU assisted virtualization enforcing restricted access of the hypervisor to VM state/memory/context through firmware services.
Particularly, the method according to the invention describes processing a guest event in a hypervisor-controlled system where guest data is encrypted with a guest key not accessible to the hypervisor and where CPUs and firmware are considered trusted and have access to the guest key when running in guest context. The firmware in this context particularly means system software implemented in a hardware based environment.
As said the method according to the invention describes running virtual machines from memory encrypted for a virtual machine. Yet the method prevents that a hypervisor can always fully inspect its guests, i.e. virtual machines/images, and read memory contents with potentially sensitive data. The advantage is that the described method does not use processes like authentication of a trust anchor with a (customer) key service, or re- encryption of a VM image (using a second key) when loading the encrypted image from disk to memory. It does not need the usage of a plain counter (CTR) mode encryption being insecure, instead is suggests the usage of a variant of a CTR mode encryption like an Xor-encrypt-xor (XEX)-based tweaked-codebook mode with ciphertext stealing (XTS) mode encryption being secure. It is able to deal with interrupts or hypervisor intercepts. The method is able to secure non-encrypted cache contents from a non- authorized access and is able to deal with I/O. The described method does not require an attestation module (e.g. a TPM) on the CPU.
Advantageously, particularly for extending a virtualized environment of CPU architectures, the method may further comprise the steps (i) decrypting or encrypting the guest memory by a CPU, if the CPU runs in guest context; (ii) allowing the guest to communicate externally through a non-encrypted memory range; (iii) paging encrypted pages of the guest memory by the hypervisor. A virtualization mechanism of CPU architectures may be extended, so that a memory of guests is always encrypted. This may be done during processing by the CPU and prevents the hypervisor from reading the memory or registering contents in clear text. For efficient processing, the cache may be unencrypted. However when data of a guest leaves the CPU, the content may be encrypted. Decryption of the guest memory during guest execution may take place transparently through the CPU, but only as the CPU is running the guest context.
Further, particularly for a secure deployment and execution of a virtual machine, the method may advantageously comprise the steps (i) providing the guest with the guest key being encrypted with the public key associated with a private key of the CPU for transfer to the key store of the CPU; (ii) providing the CPU with the private key, being stored in the CPU and being used to decrypt the encrypted guest key; (iii) the guest key being used to encrypt and decrypt the guest memory while running guest or firmware code in guest context by the CPU. Thus a secure deployment and execution of a virtual machine in a hypervisor-controlled system may be enabled.
Each CPU may get a key pair; its private key may be stored in the CPU only, and may be used to decrypt guest keys. The CPU public key may be used to encrypt (and transfer) the private guest key to the CPU, in which the guest key may be stored and used securely.
The guest may generate a key as well. The guest key may be encrypted with the CPU public key before it is transferred to the CPU. The CPU may use this guest key to encrypt the guest's memory (but only when running the guest in the context of the CPU virtualization function). The guest key may also be used to deploy images from the guest in a Cloud environment. Favorably, particularly for boot image generation and deployment, the method according to the invention may further comprise the steps (i) generating a boot image by a client or customer; (ii) encrypting the boot image with the guest key; (iii) transferring the encrypted boot image to a boot disk; (iv) loading the encrypted boot image of a guest by the hypervisor to the guest memory; (v) starting an execution of a guest as a virtual machine at the CPU level, where the guest is defined by an area of an encrypted memory, an area of an unencrypted memory and an encrypted guest key. The guest key may be known only to the client and the guest respectively and the CPU in guest context and for the transport to the CPU the guest key may be encrypted with the public key associated with the private key of the CPU. It need not be known to a Cloud operator or the hypervisor. The guest key may be encrypted for one or more systems or CPUs.
Advantageously, particularly for a boot process of the boot image, the method may further comprise the steps (i) decrypting a thread of execution in the virtual machine executing on the boot image to clear text when the CPU is in guest context; (ii) decrypting the guest memory while the CPU is in guest context and the guest state, both being protected from access by the hypervisor or other guests. The hypervisor may read contents of the boot image from the boot disk into the guest memory without relocation, where the boot disk contents may comprise a kernel, parameters, an initial ram disk. Loading the boot image may also comprise mounting a conventionally encrypted (e.g. via dm-crypt, a usually applied LINUX encrypting tool) root file system. Further the boot disk contents may comprise a kernel execution (kexec) environment that loads a new kernel from a conventionally encrypted target boot device.
Favorably, particularly for an execution of a virtual machine, the method may comprise the steps (i) extending a virtualization function of the CPU to encrypt the guest memory when the encrypted area of the guest memory is written to in guest context; (ii) decrypting the guest memory when the encrypted area of a guest memory is read from in guest context; (iii) keeping the encrypted area of the guest memory and guest registers being accessible to the hypervisor only in encrypted form. The CPU architecture may be extended to provide a well-defined means to access a guest state, where access methods may provide the hypervisor only with the necessary information to perform its tasks (e.g. handling traps). However, the guest memory and register file may not be accessible outside of said access methods. Thus confidentiality of the guest may be protected, since the hypervisor cannot read a guest state or guest data entirely. The register file may not be accessible to the hypervisor directly, but may be stored away and restored through a hypervisor service. Other contexts than the guest itself may only see encrypted memory contents, as the hypervisor may not see the unencrypted guest memory. An area of the guest memory may remain unencrypted in order to exchange data with the hypervisor or I/O devices. An I/O scratch area may be outside the encrypted memory area.
In an advantageous embodiment, particularly for an interaction between the virtual machine and the hypervisor, the method may further comprise the steps (i) keeping the encrypted range of the guest memory or registers associated with the guest event being not accessible to the hypervisor in decrypted form; (ii) extending the virtualization function of the CPU by access methods to specific guest data associated with the guest event. This step may be advantageous for a hypervisor operation, but may not reveal data or code (other than reason and relevant parameters for instructions that trap) of the guest and enable to continue execution of the guest event. Some traps may be disabled entirely since they may only be meaningful (e.g. single stepping), when a hypervisor has full access to a guest.
Advantageously, particularly for an I/O process of a guest, the method may further comprise the steps (i) defining a non-encrypted memory area for I/O buffers and I/O control structures of the guest outside the encrypted area of the guest memory; (ii) starting the I/O process by the guest using that non-encrypted area of the guest memory; (iii) the virtualization function of the CPU generating a guest event; (iv) the hypervisor reading a reason for the guest event and performing the I/O process. By putting the I/O buffers outside the encrypted guest memory, the hypervisor and I/O devices may have access to I/O control structures and data.
Favorably, particularly for a paging process by the hypervisor, the method may further comprise the steps (i) paging-out pages of the guest memory by the hypervisor; (ii) upon attempting access to a paged-out page, providing a page fault that indicates to the hypervisor whether a page-out operation of the hypervisor caused that page fault; (iii) triggering the hypervisor to perform a page-in process to the guest memory. The hypervisor may store the pages on a hypervisor owned swap device, where still the page contents may be encrypted. The CPU's virtualization function may trap, where the hypervisor may read a reason for the trap (e.g.„page fault") and may read a guest address. Then the hypervisor may put the page back to the same guest address, which maintains guest data integrity when encryption results are kept non-relocatable. Then the hypervisor may restart the guest.
In an advantageous embodiment, particularly for establishing trust in the described method, the method may further comprise checking a guest integrity with a checking process that knows the guest key, the checking process comprising the steps (i) the guest reading a memory content in clear text from the guest memory transferring an arbitrary range of the guest memory via a secure communication path to the checking process; (ii) requesting the same memory range of the guest memory from the hypervisor and transferring it to the checking process; (iii) comparing the memory content obtained from the guest with the result of decrypting the memory content obtained from the hypervisor; (iv) delivering a comparison result depending on the contents of the two memory ranges; (v) returning the result of the checking process being positive if the comparison result equals zero, otherwise being negative. These method steps may be especially advantageous because the hypervisor is not able to read/inject code or data since it is not provided with the key for guest memory decryption/encryption.
According to a further advantageous aspect of the invention a data processing program for execution in a data processing system is proposed comprising an implementation of an instruction set for performing a method as described above when the data processing program is run on a computer.
Further a favorable computer program product is proposed comprising a computer usable medium including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to perform a method for processing a guest event in a hypervisor-controlled system, comprising the steps: (i) the guest event triggering a first firmware service being specific for the guest event in a firmware, the guest event being associated with a guest and with a guest state and a guest memory encrypted with a guest key; (ii) the firmware processing information associated with the guest event, comprising information of the guest state and the guest memory, and presenting only a subset of the information of the guest state and the guest memory in decrypted form to a hypervisor, wherein the subset of the information is selected to suffice for the hypervisor to process the guest event; (iii) the firmware retaining a part of the information of the guest state and the guest memory that is not being sent to the hypervisor; (iv) the hypervisor processing the guest event based on the received subset of the information of the guest state and the guest memory and sending a process result to the firmware triggering a second firmware service being specific for the guest event; (v) the firmware processing the received process result together with the part of the information of the guest state and the guest memory that was not sent to the hypervisor, generating a state and/or memory modification; (vi) the firmware performing the state and/or memory modification associated with the guest event at the guest memory in encrypted form.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit," "module" or "system."
Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the block diagram block or blocks.
Due to a further aspect of the invention, a data processing system for execution of a data processing program is proposed, comprising software code portions for performing a method described above.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
The present invention together with the above-mentioned and other objects and advantages may best be understood from the following detailed description of the embodiments, but not restricted to the embodiments, wherein is shown in:
Fig. 1 a stack of components in a hypervisor-controlled system according to prior art;
Fig. 2 a general overview of a method for a secure execution of guests in an insecure environment according to an embodiment of the invention;
Fig. 3 a system diagram of a hypervisor-controlled system for a secure execution of guests in an insecure environment according to an embodiment of the invention;
Fig. 4 a generic flow chart for running an encrypted guest according to an embodiment of the invention;
Fig. 5 a detailed flow chart for interception handling with an encrypted guest running according to an embodiment of the invention;
Fig. 6 an example embodiment of a data processing system for carrying out a method according to the invention.
DETAILED DESCRIPTION
In the drawings, like elements are referred to with equal reference numerals. The drawings are merely schematic representations, not intended to portray specific parameters of the invention. Moreover, the drawings are intended to depict only typical embodiments of the invention and therefore should not be considered as limiting the scope of the invention.
Figure 1 shows a stack of components in a hypervisor-controlled system according to prior art. The different components comprise one or more guests 20, realized as a virtual machine, running on a hypervisor-controlled system as a virtual server system, consisting of firmware 70, hardware 72, as e.g. one or more CPUs, memory, I/O devices 74 for storage networking. A hypervisor 30 manages the resources of the hardware 72 and I/O devices 74 and allocates appropriate portions of these resources to the guests 20. In a Cloud environment the guest VM 20 is operated by a client or customer, whereas the hypervisor 30 is operated by a Cloud provider, who may be untrusted by the client. The firmware 70, as well as the hardware 72, are manufactured by a hardware vendor, who may be considered as trusted. It is an objective of the invention to provide a method for securely processing the guest VM 20 in a Cloud environment where the Cloud provider may not be trusted.
Summarizing, the method according to the invention for processing a guest event in a hypervisor-controlled system 10 is comprising the steps: (i) the guest event triggering a first firmware service being specific for the guest event in a firmware 70, the guest event being associated with a guest 20 and with a guest state 52 and a guest memory 22 encrypted with a guest key 24; (ii) the firmware 70 processing information associated with the guest event, comprising information of the guest state 52 and the guest memory 22, and presenting only a subset of the information of the guest state 52 and the guest memory 22 in decrypted form to a hypervisor 30, wherein the subset of the information is selected to suffice for the hypervisor 30 to process the guest event; (iii) the firmware 70 retaining a part of the information of the guest state 52 and the guest memory 22 that was not being sent to the hypervisor 30; (iv) the hypervisor 30 processing the guest event based on the received subset of the information of the guest state 52 and the guest memory 22 and sending a process result to the firmware 70 triggering a second firmware service being specific for the guest event; (v) the firmware 70 processing the received process result together with the part of the information of the guest state and the guest memory that was not sent to the hypervisor 30, generating a state and/or memory modification; (vi) the firmware 70 performing the state and/or memory modification associated with the guest event at the guest memory 22 in encrypted form. These steps are referenced in the description of the embodiments in the following Figures.
In one embodiment, the first firmware service may favorably comprise at least one of the steps (ii) and (iii) of the description above, wherein in step (ii), the firmware 70 processing information associated with the guest event, comprising information of the guest state 52 and the guest memory 22, and presenting only a subset of the information of the guest state 52 and the guest memory 22 in decrypted form to a hypervisor 30, wherein the subset of information is selected to suffice for the hypervisor 30 to process the guest event. Step (iii) comprises the firmware 70 retaining a part of the information of the guest state 52 and the guest memory 22 that was not being sent to the hypervisor 30.
In one embodiment, the second firmware service may favorably comprise at least one of the steps (v) and (vi) of the description above, wherein step (v) comprises the firmware 70 processing the received process result together with the part of the information of the guest state and the guest memory that was not sent to the hypervisor 30, generating a state and/or memory modification; and wherein in step (vi) the firmware 70 performing the state and/or memory modification associated with the guest event at the guest memory 22 in encrypted form.
Figure 2 gives a general overview of a method for a secure execution of guests 20 in an insecure environment of a hypervisor-controlled system 10 according to an embodiment of the invention. This may be achieved in analogy to a secure socket layer, where secure operation (i.e. messaging) is also achieved over an unsecure medium. A hypervisor 30, which is considered as untrusted, may control secure guests 20 as well as unsecure guests 40 at the same time and in the same system. The CPU 216 that runs the hypervisor 30 and the guests 20, 40 maintains a specific context 42 for each secure guest 20, a specific context 44 for each unsecure guest 40 and a context 46 for the hypervisor 30 respectively. Each context 42 of a secure guest 20 contains a guest key 24 associated which the according secure guest 20. The memory of each secure guest 20 is encrypted with the guest key 24 of the according secure guest 20. These guests, 20, 40 as well as the hypervisor 30 may run on a CPU 216 in their own contexts 42, 44, 46. Also on the CPU 216 there is the hypervisor 30 running in its own context 46. When a CPU 216 runs in one context it has no access to information maintained by another context. When a CPU 216 runs in a guest context 42 of a secure guest 20 it has access to the guest key 24 of that guest 20 to encrypt and decrypt data of that guest 20. Further a CPU 216 enters a context of a guest 20, 40 or a hypervisor 30 only if it processes code of that guest 20, 40 or that hypervisor 30 respectively.
Figure 3 shows a system diagram of a hypervisor-controlled system 10 for a secure execution of guests 20 in an insecure environment according to an embodiment of the invention. Numerals referenced in the following description which are not shown in Figure 3, reference objects of Figures 1 and 2.
First generic functions of an encrypted execution of guests 20 in an insecure environment according to an embodiment of the invention will be explained using the diagram in Figure 3, before the behavior of the hypervisor-controlled system for handling interrupts or interceptions due to a guest event will be discussed.
The diagram in Figure 3 shows one or more guests 20, named guest 1 to guest n, controlled by a hypervisor 30, all components running on a CPU 216, which is connected to a memory 230. The CPU 216 comprises access means 50 for a state of guest context of the CPU's virtualization function 34, where the access is controlled based on the context the CPU 216 is in. These access means 50 may read a guest state 52 and/or a virtual CPU state from a store of guest states 52, containing a context information and/or control blocks which may be hidden from the hypervisor 30. The store of guest states 52 contains a guest state 52 from the execution of the virtualization function 34. The instruction execution unit 54 fetches code from the memory 230 into the cache 56 and executes that code. As a result the memory fetches and stores, executed by the instruction execution unit 54, may be triggered. When these memory fetch and store requests are handled by the cache 56, data, involved in these fetch and store requests, is present in clear text. To enable the memory fetches to reach out to the encrypted guest memory area 22 in the memory 230, data will be decrypted on the transfer into the cache 56 by the encryption unit 58 when the virtualization function 34 is running in the context of the corresponding guest 20 using the guest key 24. When cache lines are pushed out into the memory 230, the encryption unit 58 will encrypt the cache lines on the transfer out to the memory 230 using the guest key 24 of the corresponding guest 20 that is currently executed by the virtualization function 34.
The encryption unit 58 is located between the cache 56 and the memory interface 60 of the CPU 216 which connects to the memory 230. The virtualization function 34 controls 64 the encryption unit 58 and provides it with the cryptographic guest key 24 of a secure guest 20 from the guest key store 28 if the CPU 216 runs in the context of that secure guest 20. The CPU 216 has got a private key 26 for decrypting encrypted guest keys 24, which are stored in the key store 28 and fed to the encryption unit 58. The guest key store 28 may contain encrypted guest keys 24 for transmission to the CPU 216 as well as decrypted guest keys for instruction execution. The cache 56 may contain clear text data, however processes, which are not running in a guest context, may not access this clear text data. The cache 56 therefore may associate data with the context of the guest 20 the data belongs to. The memory 230 may contain encrypted guest memory areas 22 as well as clear text areas for communicating guest data via I/O with an outside system as well as memory areas belonging to the hypervisor 30 and unsecure guests.
The hypervisor 30 has only limited access to data and/or code in the memory 230, because there exist ranges which are encrypted with a guest key 24 and other ranges which are visible to the hypervisor 30.
Following, the realization of the handling of interruptions or interceptions by means of firmware services as services implemented in the firmware 70 according to an embodiment of the invention is explained. In a short description, processing a guest event in a hypervisor-controlled system 10 is comprising the steps: (i) triggering a first firmware service; (ii) the firmware 70 processing information associated with the guest event, presenting only a subset of the information in decrypted form to a hypervisor 30; (iii) the firmware retaining a part of the information that is not being sent to the hypervisor 30; (iv) the hypervisor 30 triggering a second firmware service; (v) the firmware generating a guest state 52 and/or guest memory 22 modification; (vi) the firmware performing the guest state 52 and/or guest memory 22 modification. Concrete features of this generic approach are described hereafter in more details.
In case an interruption or an instruction interception, being associated with a guest 20 and with a guest state 52 and a guest memory 22 encrypted with a guest key 24 occurs, first and second firmware services associated with that interruption or instruction interception will have access to the guest state 52, the guest memory 22 both encrypted with the guest key 24 and decrypted in the cache 56, and the (unencrypted) hypervisor memory. Both services are capable of reading the guest memory 22 of the guest 20 by having this memory 22 transferred to the cache 56 thereby having the memory 22 decrypted using the guest key 24. The firmware services may transfer unencrypted data from the cache 56 to memory private to the firmware service or to the hypervisor 30. The second firmware service is capable of transferring unencrypted data from its private memory or the hypervisor memory into a cache region associated with encrypted guest memory 22 and then transferring the contents of that cache region to the encrypted guest memory 22 while encrypting the contents of the cache region using the guest key 24.
A virtualized environment of a CPU 216 is extended decrypting or encrypting the guest memory 22 by the CPU 216, if the CPU 216 runs in guest 20 context; allowing the guest 20 to communicate externally through a non-encrypted memory range; paging encrypted pages of the guest memory 22 by the hypervisor 30.
A secure deployment and execution of a guest 20 comprises providing the guest 20 with the guest key 24 being encrypted with the public key 32 associated with a private key 26 of the CPU 216 for transfer to the key store 28 of the CPU 216; providing the CPU 216 with the private key 26, being stored in the CPU 216 and being used to decrypt the encrypted guest key 24; the guest key 24 being used to encrypt and decrypt the guest memory 22 while running guest or firmware code in guest 20 context by the CPU 216.
A boot image generation and deployment process covers generating a boot image by a client or customer for the guest 20; encrypting the boot image with the guest key 24; transferring the encrypted boot image to a boot disk; loading the encrypted boot image of a guest 20 by the hypervisor 30 to the guest memory 22; starting an execution of a guest 20 as a virtual machine at the CPU 216 level.
A boot process of the boot image comprises a thread of execution in the virtual machine executing on the guest memory 22 being decrypted to clear text while the CPU 216 is in guest 20 context; the guest memory 22 being decrypted while the CPU 216 is in guest 20 context, and the guest state 52, both, the guest memory 22 and the guest state 52 being protected from access by the hypervisor 30 or other guests.
Further execution of a guest 20 comprises extending a virtual ization function 34 of the CPU 216 to encrypt the guest memory 22 when the encrypted area of the guest memory 22 is written to in guest 20 context; decrypting the guest memory 22 when the encrypted area of a guest memory 22 is read from in guest 20 context; the encrypted area of the guest memory 22 and guest registers being accessible to the hypervisor 30 only in encrypted form.
An interaction between the guest 20 and the hypervisor 30 further covers the encrypted range of the guest memory 22 or registers associated with the guest event being not accessible to the hypervisor 30 in decrypted form; extending the virtualization function 34 of the CPU 216 by access methods to specific guest data associated with the guest event.
An I/O process of a guest 20 further comprises defining a non-encrypted memory area for I/O buffers and I/O control structures of the guest 20 outside the encrypted area of the guest memory 22; starting the I/O process by the guest 20 using that non-encrypted area of the guest memory 22; the virtualization function 34 of the CPU 216 generating a guest event; the hypervisor 30 reading a reason for the guest event and performing the I/O process.
A paging process further is characterized by paging-out pages of the guest memory 22 by the hypervisor 30; upon attempting access to a paged-out page, providing a page fault that indicates to the hypervisor 30 whether a page-out operation of the hypervisor 30 caused that page fault; triggering the hypervisor 30 to perform a page-in process to the guest memory 22.
Further checking a guest integrity with a checking process, the checking process comprises the steps: the checking process knowing the guest key 24; the guest 20 reading a memory content in clear text from the guest memory 22 transferring an arbitrary range of the guest memory 22 via a secure communication path to the checking process; requesting the same memory range of the guest memory 22 from the hypervisor 30 and transferring it to the checking process; comparing the memory content obtained from the guest 20 with the result of decrypting the memory content obtained from the hypervisor 30; delivering a comparison result depending on the contents of the two memory ranges; the result of the checking process being positive if the comparison result equals zero, otherwise being negative.
In Figure 4 a generic flow chart for executing an encrypted guest running according to an embodiment of the invention from a hypervisor 30 and CPU 216 view is shown. Figure 4 as well as Figure 5 reference in the flowcharts objects defined in the diagrams of Figures 2 and 3, so the reference numerals used also are referencing the objects of these Figures. Running an encrypted guest 20 starts with step S410, where the hypervisor 30 reads an encrypted guest image from an initial program loader (IPL) device together with an encrypted guest key 24. Next, in step S420, the hypervisor 30 stores the encrypted guest image into the guest memory 22. In step S430 the hypervisor 30 prepares an initial guest state 52 that includes the encrypted guest key 24. Thus the steps S410 to S430 serve for initializing a guest 20 in a hypervisor- controlled system 10. In step S440 a secure guest 20 virtual machine is started according to the current guest state 52. Following in step S450, a CPU 216 runs the secure guest 20 in a secure guest context 42 as described by the current guest state 52. In step S460, if a guest event in the form of an interrupt or an instruction interception occurs, the guest 20 exits the guest context 42 with an updated guest state 52 due to this interrupt or interception. The hypervisor 30 is now able in step S470, to handle the interrupt or interception using a first firmware service to read data from the secure guest 20 or a second firmware service to write data to the secure guest 20.
Generally, a first firmware service may be triggered, meaning that (ii) the firmware 70 is processing information associated with the guest event and presenting only a subset of the information of the guest state 52 and the guest memory 22 in decrypted form to the hypervisor 30, and (iii) the firmware 70 is retaining a part of the information that is not being sent to the hypervisor 30. Further, (iv) based on the received subset of the information, the hypervisor 30 may be triggering a second firmware service for (v) generating a state and/or memory modification of the guest 20, and for (vi) performing the state and/or memory modification associated with the guest event at the guest memory 22 in encrypted form
If the secure guest 20 is finished, at branch S480 the whole process comes to an end. If the secure guest 20 is not finished, a loop to step S440 is closed and the hypervisor 30 is starting the secure guest 20 again.
In Figure 5 a detailed flow chart for interception handling with an encrypted guest running according to an embodiment of the invention is depicted. Step S510 starts with a guest event, meaning that the secure guest 20 is issuing an instruction which requests interpretation or support by the hypervisor 30, e.g., an instruction to store system environment parameters, which is usually provided by the hypervisor 30. In a next step S520, where execution of the virtualization function 34 leaves the guest context 42 and passes initiative to a CPU-internal virtualization code. Then in step S530 the CPU- internal virtualization code detects a reason for exit of the guest 20, e.g., identifies instruction to store system environment parameters. In step S540, the CPU-internal virtualization code prepares handles for the hypervisor 30 to access input and output parameters, according to the reason for exit of the guest 20, e.g., associates the storage location for the requested information with a handle. Then in step S550, the CPU-internal virtualization code masks the part of the execution state not needed to process the interception and returns the initiative to the hypervisor 30, indicating the exit of the guest 20 and a hint to input and output parameter handles, e.g., hides registers and context data from the hypervisor 30, e.g. by encrypting them. The CPU-internal virtualization code in steps S520 to S550 can alternatively be implemented as a first firmware service. Next, in step S560, the hypervisor 30 detects the reason for the exit of the guest 20 by reading the reason indication from the CPU-internal virtualization code, e.g., reads a reason code to identify a virtual server's request to store system environment parameters. The hypervisor 30 triggers in step S570 (if necessary, repeatedly) firmware services (e.g. the first firmware service) to work with input and output parameters to process the exit of the guest 20. To perform this, the hypervisor 30 uses previously established handles as means to reference contents of the memory 230 and registers required for processing, e.g., the hypervisor 30 stores system environment parameters into the virtual server's memory through firmware services (e.g. the second firmware service) using the received handle.
By this way in the detailed flow chart for interception handling with an encrypted guest in Figure 5 it is described how first and second firmware services are used for processing a guest event in a hypervisor-controlled system 10, how (ii) the firmware 70 is processing information associated with the guest event and presenting only a subset of the information in decrypted form to the hypervisor 30, as well as (iii) the firmware 70 is retaining a part of the information and (iv) based on the received subset of the information the second firmware service may be triggered.
Next, in step S580, the hypervisor 30 restarts virtualization function 34 execution by issuing an according CPU instruction, until in step S590, the CPU-internal virtualization code clears handles from the previous exit of the guest 20, unmasks the virtual server context for the virtualization function 34 execution and starts execution of the virtual server.
Thus a state and/or memory modification of the guest 20 may be generated and performed at the guest memory 22 in encrypted form.
Referring now to Figure 6, a schematic of an example of a data processing system 210 is shown. Data processing system 210 is only one example of a suitable data processing system and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. Regardless, data processing system 210 is capable of being implemented and/or performing any of the functionality set forth herein above.
In data processing system 210 there is a computer system/server 212, which is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server 212 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed Cloud computing environments that include any of the above systems or devices, and the like.
Computer system/server 212 may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Computer system/server 212 may be practiced in distributed Cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed Cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.
As shown in Fig. 6, computer system/server 212 in data processing system 210 is shown in the form of a general-purpose computing device. The components of computer system/server 212 may include, but are not limited to, one or more processors or processing units 216, a system memory 228, and a bus 218 that couples various system components including system memory 228 to processor 216.
Bus 218 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus. Computer system/server 212 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 212, and it includes both volatile and non-volatile media, removable and non-removable media.
System memory 228 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 230 and/or cache memory 232. Computer system/server 212 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system 234 can be provided for reading from and writing to a non-removable, nonvolatile magnetic media (not shown and typically called a "hard drive"). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 218 by one or more data media interfaces. As will be further depicted and described below, memory 228 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.
Program/utility 240, having a set (at least one) of program modules 242, may be stored in memory 228 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules 242 generally carry out the functions and/or methodologies of embodiments of the invention as described herein. Computer system/server 212 may also communicate with one or more external devices 214 such as a keyboard, a pointing device, a display 224, etc.; one or more devices that enable a user to interact with computer system/server 212; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 212 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 222. Still yet, computer system/server 212 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 220. As depicted, network adapter 220 communicates with the other components of computer system/server 212 via bus 218. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 212. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
The block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical functions. It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams, and combinations of blocks in the block diagrams, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

Claims

C L A I M S
1. Method for processing a guest event in a hypervisor-controlled system (10), comprising the steps:
(i) the guest event triggering a first firmware service being specific for the guest event in a firmware (70), the guest event being associated with a guest (20) and with a guest state (52) and a guest memory (22) encrypted with a guest key (24);
(ii) the firmware (70) processing information associated with the guest event, comprising information of the guest state (52) and the guest memory (22), and presenting only a subset of the information of the guest state (52) and the guest memory (22) in decrypted form to a hypervisor (30), wherein the subset of the information is selected to suffice for the hypervisor (30) to process the guest event;
(iii) the firmware (70) retaining a part of the information of the guest state
(52) and the guest memory (22) that is not being sent to the hypervisor (30);
(iv) the hypervisor (30) processing the guest event based on the received subset of the information of the guest state (52) and the guest memory (22) and sending a process result to the firmware (70) triggering a second firmware service being specific for the guest event;
(v) the firmware (70) processing the received process result together with the part of the information of the guest state (52) and the guest memory (22) that was not sent to the hypervisor (30), generating a state and/or memory modification;
(vi) the firmware (70) performing the state and/or memory modification associated with the guest event at the guest memory (22) in encrypted form.
2. Method according to claim 1 , further comprising the steps of
(i) decrypting or encrypting the guest memory (22) by a CPU (216), if the
CPU (216) runs in guest (20) context;
(ii) allowing the guest (20) to communicate externally through a non- encrypted memory range; (iii) paging encrypted pages of the guest memory (22) by the hypervisor (30).
3. Method according to claim 1 or 2, further comprising the steps of
(i) providing the guest (20) with the guest key (24) being encrypted with the public key (32) associated with a private key (26) of the CPU (216) for transfer to the key store (28) of the CPU (216);
(ii) providing the CPU (216) with the private key (26), being stored in the
CPU (216) and being used to decrypt the encrypted guest key (24);
(iii) the guest key (24) being used to encrypt and decrypt the guest memory
(22) while running guest or firmware code in guest (20) context by the CPU (216).
4. Method according to any one of the preceding claims, further comprising the steps of
(i) generating a boot image by a client;
(ii) encrypting the boot image with the guest key (24);
(iii) transferring the encrypted boot image to a boot disk;
(iv) loading the encrypted boot image of a guest (20) by the hypervisor (30) to the guest memory (22);
(v) starting an execution of a guest (20) as a virtual machine at the CPU
(216) level.
5. Method according to any one of the preceding claims, further comprising the steps of
(i) decrypting a thread of execution in the virtual machine executing on the guest memory (22) to clear text while the CPU (216) is in guest (20) context;
(ii) decrypting the guest memory (22) while the CPU (216) is in guest (20) context and the guest state (52), both being protected from access by the hypervisor (30) or other guests. Method according to any one of the preceding claims, further comprising the steps of
(i) extending a virtualization function (34) of the CPU (216) to encrypt the guest memory (22) when the encrypted area of the guest memory (22) is written to in guest (20) context;
(ii) decrypting the guest memory (22) when the encrypted area of a guest memory (22) is read from in guest (20) context;
(iii) keeping the encrypted area of the guest memory (22) and guest registers being accessible to the hypervisor (30) only in encrypted form.
Method according to any one of the preceding claims, further comprising the steps of
(i) keeping the encrypted range of the guest memory (22) or registers associated with the guest event not accessible to the hypervisor (30) in decrypted form;
(ii) extending the virtualization function (34) of the CPU (216) by access methods to specific guest data associated with the guest event.
Method according to any one of the preceding claims, further comprising the steps of
(i) defining a non-encrypted memory area for I/O buffers and I/O control structures of the guest (20) outside the encrypted area of the guest memory (22);
(ii) starting the I/O process by the guest (20) using that non-encrypted area of the guest memory (22);
(iii) the virtualization function (34) of the CPU (216) generating a guest event;
(iv) the hypervisor (30) reading a reason for the guest event and performing the I/O process.
9. Method according to any one of the preceding claims, further comprising the steps of
(i) paging-out pages of the guest memory (22) by the hypervisor (30); (ii) upon attempting access to a paged-out page, providing a page fault that indicates to the hypervisor (30) whether a page-out operation of the hypervisor (30) caused that page fault;
(iii) triggering the hypervisor (30) to perform a page-in process to the guest memory (22).
10. Method according to any one of the preceding claims, further checking a guest integrity with a checking process that knows the guest key (24), the checking process comprising the steps:
(i) the guest (20) reading a memory content in clear text from the guest memory (22) transferring an arbitrary range of the guest memory (22) via a secure communication path to the checking process;
(ii) requesting the same memory range of the guest memory (22) from the hypervisor (30) and transferring it to the checking process;
(iii) comparing the memory content obtained from the guest (20) with the result of decrypting the memory content obtained from the hypervisor (30);
(iv) delivering a comparison result depending on the contents of the two memory ranges;
(v) returning a result of the checking process being positive if the comparison result equals zero, otherwise being negative.
1 1 . A data processing program (240) for execution in a data processing system (210) comprising an implementation of an instruction set for performing a method according to anyone of the claims 1 to 10 when the data processing program (240) is run on a computer (212).
12. A computer program product comprising a computer usable medium including a computer readable program, wherein the computer readable program when executed on a computer (212) causes the computer (212) to perform a method for processing a guest event in a hypervisor-controlled system, comprising the steps:
(i) the guest event triggering a first firmware service being specific for the guest event in a firmware (70), the guest event being associated with a guest (20) and with guest state (52) and a guest memory (22) encrypted with a guest key (24);
the firmware (70) processing information associated with the guest event, comprising information of the guest state (52) and the guest memory (22), and presenting only a subset of the information of the guest state (52) and the guest memory (22) in decrypted form to a hypervisor (30), wherein the subset of the information is selected to suffice for the hypervisor (30) to process the guest event; the firmware (70) retaining a part of the information of the guest state (52) and the guest memory (22) that is not being sent to the hypervisor (30);
the hypervisor (30) processing the guest event based on the received subset of the information of the guest state (52) and the guest memory (22) and sending a process result to the firmware (70) triggering a second firmware service being specific for the guest event;
the firmware (70) processing the received process result together with the part of the information of the guest state (52) and the guest memory (22) that was not sent to the hypervisor (30), generating a state and/or memory modification;
the firmware (70) performing the state and/or memory modification associated with the guest event at the guest memory (22) in encrypted form.
13. A data processing system (210) for execution of a data processing program (240) comprising software code portions for performing a method according to anyone of the claims 1 to 10.
PCT/IB2014/059780 2013-06-27 2014-03-14 Processing a guest event in a hypervisor-controlled system WO2014207581A2 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201480036373.2A CN105453034B (en) 2013-06-27 2014-03-14 Customer event is handled in the system of manager control
DE112014000965.2T DE112014000965T5 (en) 2013-06-27 2014-03-14 Processing a guest event in a hypervisor-driven system
JP2016522898A JP6347831B2 (en) 2013-06-27 2014-03-14 Method, data processing program, computer program product, and data processing system for handling guest events in a system controlled by a hypervisor
GB1600172.9A GB2530225B (en) 2013-06-27 2014-03-14 Processing a guest event in a hypervisor-controlled system
US14/899,166 US9690947B2 (en) 2013-06-27 2014-03-14 Processing a guest event in a hypervisor-controlled system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1311430.1A GB2515536A (en) 2013-06-27 2013-06-27 Processing a guest event in a hypervisor-controlled system
GB1311430.1 2013-06-27

Publications (2)

Publication Number Publication Date
WO2014207581A2 true WO2014207581A2 (en) 2014-12-31
WO2014207581A3 WO2014207581A3 (en) 2015-04-09

Family

ID=48999042

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2014/059780 WO2014207581A2 (en) 2013-06-27 2014-03-14 Processing a guest event in a hypervisor-controlled system

Country Status (6)

Country Link
US (1) US9690947B2 (en)
JP (1) JP6347831B2 (en)
CN (1) CN105453034B (en)
DE (1) DE112014000965T5 (en)
GB (2) GB2515536A (en)
WO (1) WO2014207581A2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017111812A (en) * 2015-12-17 2017-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Method for transparent secure interception processing, computer system, firmware, hypervisor, and computer program
US9841987B2 (en) 2015-12-17 2017-12-12 International Business Machines Corporation Transparent secure interception handling
CN107690621A (en) * 2015-06-16 2018-02-13 Arm 有限公司 Shielded abnormal disposal
US10102152B2 (en) 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3036680B1 (en) * 2013-08-21 2018-07-18 Intel Corporation Processing data privately in the cloud
GB2532415A (en) * 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system
US9875047B2 (en) * 2015-05-27 2018-01-23 Red Hat Israel, Ltd. Exit-less host memory locking in a virtualized environment
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
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
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
CN105184154B (en) * 2015-09-15 2017-06-20 中国科学院信息工程研究所 A kind of system and method that crypto-operation service is provided in virtualized environment
US9894061B2 (en) * 2015-10-16 2018-02-13 International Business Machines Corporation Method for booting and dumping a confidential image on a trusted computer system
US9898326B2 (en) * 2016-02-23 2018-02-20 Red Hat Israel, Ltd. Securing code loading in a virtual environment
US11188651B2 (en) * 2016-03-07 2021-11-30 Crowdstrike, Inc. Hypervisor-based interception of memory accesses
US10348500B2 (en) * 2016-05-05 2019-07-09 Adventium Enterprises, Llc Key material management
US10243746B2 (en) 2017-02-27 2019-03-26 Red Hat, Inc. Systems and methods for providing I/O state protections in a virtualized environment
CN107240408B (en) * 2017-05-11 2019-05-10 中国科学院信息工程研究所 For the read-write managing and control system of CD-ROM CD media
GB2563886B (en) 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm management unit-private memory regions
US10686605B2 (en) * 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US10757082B2 (en) * 2018-02-22 2020-08-25 International Business Machines Corporation Transforming a wrapped key into a protected key
US10949547B2 (en) * 2018-10-05 2021-03-16 Google Llc Enclave fork support
US11354421B2 (en) * 2019-03-08 2022-06-07 International Business Machines Corporation Secure execution guest owner controls for secure interface control
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11308215B2 (en) 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US11443040B2 (en) * 2019-03-08 2022-09-13 International Business Machines Corporation Secure execution guest owner environmental controls
US10956188B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
WO2021167659A1 (en) * 2019-11-14 2021-08-26 Trideum Corporation Systems and methods of monitoring and controlling remote assets
US11475167B2 (en) 2020-01-29 2022-10-18 International Business Machines Corporation Reserving one or more security modules for a secure guest
CN111833108A (en) * 2020-07-17 2020-10-27 上海国际技贸联合有限公司 Information acquisition, analysis and processing system, method and storage medium

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404563A (en) * 1991-08-28 1995-04-04 International Business Machines Corporation Scheduling normally interchangeable facilities in multiprocessor computer systems
US5371867A (en) * 1992-11-10 1994-12-06 International Business Machines Corporation Method of using small addresses to access any guest zone in a large memory
JP2003051819A (en) * 2001-08-08 2003-02-21 Toshiba Corp Microprocessor
US7024555B2 (en) * 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
CN100447736C (en) * 2004-05-08 2008-12-31 英特尔公司 Firmware interface runtime environment protection field
US8627315B2 (en) * 2004-12-31 2014-01-07 Intel Corporation Apparatus and method for cooperative guest firmware
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US20080059556A1 (en) * 2006-08-31 2008-03-06 Egenera, Inc. Providing virtual machine technology as an embedded layer within a processing platform
US8615643B2 (en) * 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US7788464B2 (en) * 2006-12-22 2010-08-31 Microsoft Corporation Scalability of virtual TLBs for multi-processor virtual machines
JP2008181228A (en) * 2007-01-23 2008-08-07 Sony Corp Management system, management method, terminal equipment, management server, and program
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8127292B1 (en) * 2007-06-22 2012-02-28 Parallels Holdings, Ltd. Virtualization system with hypervisor embedded in bios or using extensible firmware interface
JP4678396B2 (en) * 2007-09-25 2011-04-27 日本電気株式会社 Computer and method for monitoring virtual machine monitor, and virtual machine monitor monitor program
US8156298B1 (en) * 2007-10-24 2012-04-10 Adam Stubblefield Virtualization-based security apparatuses, methods, and systems
US20090113111A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
CN101179379A (en) * 2007-12-11 2008-05-14 中兴通讯股份有限公司 Firmware security management method for microwave access global intercommunication system
CN101470783B (en) 2007-12-25 2010-09-01 中国长城计算机深圳股份有限公司 Identity recognition method and device based on trusted platform module
US8261028B2 (en) * 2007-12-31 2012-09-04 Intel Corporation Cached dirty bits for context switch consistency checks
US8364983B2 (en) * 2008-05-08 2013-01-29 Microsoft Corporation Corralling virtual machines with encryption keys
US8381032B2 (en) * 2008-08-06 2013-02-19 O'shantel Software L.L.C. System-directed checkpointing implementation using a hypervisor layer
JP4643702B2 (en) * 2008-10-27 2011-03-02 株式会社東芝 Microprocessor
US20100146267A1 (en) * 2008-12-10 2010-06-10 David Konetski Systems and methods for providing secure platform services
US8738932B2 (en) * 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8538919B1 (en) * 2009-05-16 2013-09-17 Eric H. Nielsen System, method, and computer program for real time remote recovery of virtual computing machines
WO2010135430A1 (en) * 2009-05-19 2010-11-25 Vmware, Inc. Shortcut input/output in virtual machine systems
US20110041126A1 (en) * 2009-08-13 2011-02-17 Levy Roger P Managing workloads in a virtual computing environment
US9703586B2 (en) * 2010-02-17 2017-07-11 Microsoft Technology Licensing, Llc Distribution control and tracking mechanism of virtual machine appliances
JP5484117B2 (en) * 2010-02-17 2014-05-07 株式会社日立製作所 Hypervisor and server device
US20110202765A1 (en) * 2010-02-17 2011-08-18 Microsoft Corporation Securely move virtual machines between host servers
WO2011101972A1 (en) * 2010-02-18 2011-08-25 株式会社東芝 Program
US8793439B2 (en) * 2010-03-18 2014-07-29 Oracle International Corporation Accelerating memory operations using virtualization information
US8375437B2 (en) * 2010-03-30 2013-02-12 Microsoft Corporation Hardware supported virtualized cryptographic service
US8671405B2 (en) * 2010-03-31 2014-03-11 Microsoft Corporation Virtual machine crash file generation techniques
JP5574230B2 (en) * 2010-04-28 2014-08-20 株式会社日立製作所 Fault handling method and computer
US8555377B2 (en) * 2010-04-29 2013-10-08 High Cloud Security Secure virtual machine
US8812871B2 (en) * 2010-05-27 2014-08-19 Cisco Technology, Inc. Method and apparatus for trusted execution in infrastructure as a service cloud environments
US8566613B2 (en) * 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images
US9183023B2 (en) * 2010-07-01 2015-11-10 Hewlett-Packard Development Company, L.P. Proactive distribution of virtual environment user credentials in a single sign-on system
US8239620B2 (en) * 2010-09-27 2012-08-07 Mips Technologies, Inc. Microprocessor with dual-level address translation
EP2668608A4 (en) * 2011-01-27 2017-07-05 L-3 Communications Corporation Internet isolation for avoiding internet security threats
JP5770840B2 (en) * 2011-05-16 2015-08-26 株式会社日立製作所 Computer system and node search method
JP5365664B2 (en) * 2011-06-20 2013-12-11 富士通セミコンダクター株式会社 Secure processor
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
US9256552B2 (en) * 2011-11-21 2016-02-09 Cisco Technology, Inc. Selective access to executable memory
US9146847B2 (en) * 2011-12-14 2015-09-29 Vmware, Inc. Optimizing for page sharing in virtualized java virtual machines
US8918608B2 (en) * 2012-01-09 2014-12-23 Ravello Systems Ltd. Techniques for handling memory accesses by processor-independent executable code in a multi-processor environment
US8959577B2 (en) * 2012-04-13 2015-02-17 Cisco Technology, Inc. Automatic curation and modification of virtualized computer programs
US10152409B2 (en) * 2012-04-30 2018-12-11 Vmware, Inc. Hybrid in-heap out-of-heap ballooning for java virtual machines
US10063380B2 (en) * 2013-01-22 2018-08-28 Amazon Technologies, Inc. Secure interface for invoking privileged operations
US9503268B2 (en) * 2013-01-22 2016-11-22 Amazon Technologies, Inc. Securing results of privileged computing operations
WO2014118969A1 (en) * 2013-02-01 2014-08-07 株式会社日立製作所 Virtual computer system and data transfer control method for virtual computer system
US9606818B2 (en) * 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US9880773B2 (en) * 2013-03-27 2018-01-30 Vmware, Inc. Non-homogeneous disk abstraction for data oriented applications

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107690621A (en) * 2015-06-16 2018-02-13 Arm 有限公司 Shielded abnormal disposal
KR20180017095A (en) * 2015-06-16 2018-02-20 에이알엠 리미티드 Handling Protected Exceptions
EP3311271B1 (en) * 2015-06-16 2023-02-22 ARM Limited Protected exception handling
KR102592377B1 (en) 2015-06-16 2023-10-23 에이알엠 리미티드 Protected exception handling
US10102152B2 (en) 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US10102151B2 (en) 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
JP2017111812A (en) * 2015-12-17 2017-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Method for transparent secure interception processing, computer system, firmware, hypervisor, and computer program
US9841987B2 (en) 2015-12-17 2017-12-12 International Business Machines Corporation Transparent secure interception handling
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US10838755B2 (en) 2015-12-17 2020-11-17 International Business Machines Corporation Transparent secure interception handling

Also Published As

Publication number Publication date
JP2016523421A (en) 2016-08-08
GB2530225A (en) 2016-03-16
GB201600172D0 (en) 2016-02-17
CN105453034B (en) 2018-11-16
GB201311430D0 (en) 2013-08-14
CN105453034A (en) 2016-03-30
JP6347831B2 (en) 2018-06-27
GB2515536A (en) 2014-12-31
US9690947B2 (en) 2017-06-27
US20160148001A1 (en) 2016-05-26
DE112014000965T5 (en) 2015-12-03
GB2530225B (en) 2016-10-19
WO2014207581A3 (en) 2015-04-09

Similar Documents

Publication Publication Date Title
US10599489B2 (en) Processing a guest event in a hypervisor-controlled system
US9690947B2 (en) Processing a guest event in a hypervisor-controlled system
EP3281146B1 (en) Isolating guest code and data using multiple nested page tables
EP3201820B1 (en) Protecting application secrets from operating system attacks
EP2577543B1 (en) Secure virtual machine bootstrap in untrusted cloud infrastructures
US9779032B2 (en) Protecting storage from unauthorized access
JP6682752B2 (en) Techniques for strengthening data encryption using secure enclaves
US9832199B2 (en) Protecting access to hardware devices through use of a secure processor
WO2015100188A1 (en) Virtual machine assurances
CN111190686A (en) System, apparatus, and method for integrity protection of tenant workloads in a multi-tenant computing environment
US9819653B2 (en) Protecting access to resources through use of a secure processor
JP2022522678A (en) Secure execution guest owner environment control
US9734325B1 (en) Hypervisor-based binding of data to cloud environment for improved security
US9772954B2 (en) Protecting contents of storage
US11533174B2 (en) Binding secure objects of a security module to a secure guest

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201480036373.2

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 112014000965

Country of ref document: DE

Ref document number: 1120140009652

Country of ref document: DE

ENP Entry into the national phase

Ref document number: 2016522898

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14899166

Country of ref document: US

ENP Entry into the national phase

Ref document number: 1600172

Country of ref document: GB

Kind code of ref document: A

Free format text: PCT FILING DATE = 20140314

122 Ep: pct application non-entry in european phase

Ref document number: 14817597

Country of ref document: EP

Kind code of ref document: A2