1. A system having one or more physical machines, comprising: a secure execution domain established on a host operating system executing a first trusted process; a hardware virtualization component operating within the secure execution domain and configured to implement a virtual machine, wherein the virtual machine is a hardware virtualization of a data processing apparatus, and wherein the virtual machine is isolated such that the virtual machine has limited access to resources not included in the virtual machine and the hardware virtualization component, and comprises: a shared virtual memory device within the virtual machine; and a guest software application, executed within the virtual machine and communicatively coupled to the shared virtual memory device, the virtual machine being configured such that the guest software application executed in the virtual machine does not have access to memory and resources that are external to the virtual machine and the guest software application can communicate with a second trusted process executed within the secure execution domain but external to the virtual machine using only the shared virtual memory device; the second trusted process running in the secure execution domain on the host operating system, the second trusted process being separate from the virtual machine and enabled to access at least some of the resources of the secure execution domain, wherein the second trusted process is communicatively coupled to the shared virtual memory device and configured to communicate with the guest software application only through the shared virtual memory device via a communication channel using a memory driver associated with the snared virtual memory device, wherein communications between the second trusted process and the guest software application are secure communications based on the guest software application being configured such that the guest software application does not have access to memory and resources that are external to the virtual machine and can communicate with the second trusted process using only the shared virtual memory device.