An apparatus comprising: a processor; and a memory coupled to the processor; wherein the processor is to execute an untrusted host virtual machine monitor to manage execution by the processor of at least one guest virtual machine; the untrusted host virtual machine monitor is to receive an encrypted key domain key, an encrypted guest code image encrypted by a key domain key, and an encrypted guest control structure encrypted by the key domain key, the key domain being a cryptographically separate portion of memory, where access to data stored in memory locations belonging to the key domain require using an associated key domain key, the key domain key inaccessible to the untrusted host virtual machine monitor; the untrusted host virtual machine monitor is to issue a create command to the processor to create a key domain, the key domain comprising a region of the memory to be encrypted by the key domain key, in response to receiving the create command, the processor is to create the key domain and decrypt the encrypted key domain key to produce the key domain key; the untrusted host virtual machine monitor is to issue a first launch command to the processor to launch a first guest virtual machine within the key domain; in response to receiving the first launch command, the processor is to switch to the key domain, decrypt the encrypted guest control structure to produce a guest control structure containing guest processor state information, decrypt the encrypted guest code image to produce a guest code image, and execute the guest code image within the key domain using the guest processor state information; the encrypted guest code image includes an agent code image; the encrypted guest control structure includes an agent control structure; the untrusted host virtual machine monitor is to verify the agent control structure; the untrusted host virtual machine monitor is to issue a second launch command to the processor to launch a second guest virtual machine within the key domain, the second guest virtual machine to provide an agent to act on behalf of the untrusted host virtual machine monitor within the key domain; and in response to receiving the second launch command, the processor is to switch to the key domain, decrypt the encrypted guest code image to produce the agent code image, decrypt the encrypted guest control structure to produce the agent control structure containing agent processor state information, and execute the agent code image within the key domain using the agent processor state information. a processor; and a memory coupled to the processor; wherein the processor is to execute an untrusted host virtual machine monitor to manage execution by the processor of at least one guest virtual machine; the untrusted host virtual machine monitor is to receive an encrypted key domain key, an encrypted guest code image encrypted by a key domain key, and an encrypted guest control structure encrypted by the key domain key, the key domain being a cryptographically separate portion of memory, where access to data stored in memory locations belonging to the key domain require using an associated key domain key, the key domain key inaccessible to the untrusted host virtual machine monitor; the untrusted host virtual machine monitor is to issue a create command to the processor to create a key domain, the key domain comprising a region of the memory to be encrypted by the key domain key, in response to receiving the create command, the processor is to create the key domain and decrypt the encrypted key domain key to produce the key domain key; the untrusted host virtual machine monitor is to issue a first launch command to the processor to launch a first guest virtual machine within the key domain; in response to receiving the first launch command, the processor is to switch to the key domain, decrypt the encrypted guest control structure to produce a guest control structure containing guest processor state information, decrypt the encrypted guest code image to produce a guest code image, and execute the guest code image within the key domain using the guest processor state information; the encrypted guest code image includes an agent code image; the encrypted guest control structure includes an agent control structure; the untrusted host virtual machine monitor is to verify the agent control structure; the untrusted host virtual machine monitor is to issue a second launch command to the processor to launch a second guest virtual machine within the key domain, the second guest virtual machine to provide an agent to act on behalf of the untrusted host virtual machine monitor within the key domain; and in response to receiving the second launch command, the processor is to switch to the key domain, decrypt the encrypted guest code image to produce the agent code image, decrypt the encrypted guest control structure to produce the agent control structure containing agent processor state information, and execute the agent code image within the key domain using the agent processor state information.