Virtualization is becoming more prevalent in the information technology industry, transforming computational functionality into information that can be stored and managed. Virtual machines (“VMs”) may allow for the running of multiple operating systems on one physical machine. Users of VMs may want to save the state of a virtual machine, or to take a snapshot (or multiple snapshots) of a VM in order to preserve a virtual machine state (and perhaps, later in time, to get back to that state). Such VM images are used by endpoint systems in a virtual environment where the virtual machine image and the endpoint user require validation as part of a security mechanism for the VM image to run without tampering.
A method for use in providing a security mechanism for validating and executing a virtual machine image, the method comprising the steps of: obtaining the virtual machine image from an external source to run on a host system; connecting an electronic device comprising of validation data to the host system; validating the virtual machine image with the validation data; indicating whether the validation matched; and running the virtual machine image on the host system if authenticated.
Additional embodiments consistent with principles of the invention are set forth in the detailed description that follows or may be learned by practice of methods or use of systems or articles of manufacture disclosed herein. It is understood that both the foregoing general description and the following detailed description are exemplary and explanatory only, and are not restrictive of the invention as claimed.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments of the invention and, together with the description, serve to explain the principles of the invention. In the drawings:
Traditional security mechanisms based on unique computer hardware identifiers fail in the virtual environment. The unique computer hardware identifiers used for key generation, storage, authentication, or system fingerprinting conventionally fall short where multiple VM images are created with the same underlying physical hardware. Conventionally, VM images may be presented with an abstracted or generalized view of the hardware, thus eliminating the possibility of creating unique imprints amongst them. Virtual endpoint systems consequently lose fundamental underpinnings, once created traditionally by hardware roots of trust. Hence, a secure method is needed to carry and validate the VM image for the end user.
An embodiment of an example of the invention leverages the use of an Universal Serial Bus, or USB, device that can contain keys needed to authenticate/decrypt a downloaded VM image, thus allowing the image to be encrypted and or/digitally signed to assure integrity in transmission and during usage in the endpoint system. The device may contain significant flash memory to carry an encrypted image, and act as a bootable USB device at the desired endpoint or host system to decrypt and validate the VM image. In addition, the device can generate and store keys needed by the virtual endpoint systems to operate. Presence of the device may be needed to start the virtual endpoint system, and removal of the device renders the endpoint system inoperative. The device may also store volatile impure data between VM image boots. As a result, the device can act as the root of trust enabling VM images to run on the endpoint system while providing privacy, access control, and personalization.
Another example aspect of the validation process uses the cryptographic hash function described above in combination with a key on the VM image (e.g., Hash-based Message Authentication Code or HMAC or keyed hash), wherein the electronic device stores the hash value and the key. The validation software rehashes the VM image using the key stored in the electronic device, and verifies whether the output matches to the hash value stored on the electronic device. If there is a match, the VM image has not been tampered with or modified and the VM image is authentic. This process can be further enhanced as to comprise unique keys for different end users to allow for additional assurance of authenticity.
Yet another example aspect of the validation process includes the use of a digital signature. The VM image can be digitally signed by the issuing authority, and the electronic device can contain the digital signature of the VM image in which case the validation software in the host system contains the digital certificate matching the key used to sign the VM image. This process can further comprise encryption of the VM image using the digital certificate of the end user. The end user's private key can then be used to decrypt the VM image allowing for more personalization and privacy. Here, the electronic device can also store the end user's digital certificate for use by the issuing authority as a prerequisite to perform the initial encryption. As the end user connects the end user's device to obtain the encrypted VM image, the issuing authority can read the device to get the end user's digital certificate prior to the initial encryption. Another modification of the above mentioned process can involve the issuing authority to encrypt the VM image using its own private key. The electronic device can contain the digital certificate of the issuing authority, and the validation software may decrypt the VM image using the digital certificate stored on the device. Yet another modification of the process can be the issuing authority encrypting the VM image using a symmetric encryption key where the validation software can decrypt the VM image using the encryption key stored on the electronic device. The decryption in these processes can occur in the validation software or in the electronic device, and the electronic device can contain both the digital certificate and the signature. Matching signatures indicate that the VM image has not been tampered with or modified and that VM image is authentic.
Upon the completion of the validation process, the validation software indicates whether the validation passed or failed 130. If there is a match, the validation passed and the VM image is authentic or has not been tampered with and the host system executes the VM image 140.
At least one of the host systems 240a-n includes or provides one or more virtual machines 270 which may correspond to the underlying host system 240n. The context of an example to which the invention may be implemented is within a virtualization system or environment 260. Virtualization environment 260 is representative of a wide variety of designs and implementations in which underlying hardware resources are presented to software (typically to operating system software and/or applications) as virtualized instances of computational systems that may or may not precisely correspond to the underlying physical hardware. The processors included in the host systems 240a-n and may be any one of a variety of proprietary or commercially available single or multi-processor system, such as an Intel-based processor, or other type of commercially available processor able to support traffic in accordance with each particular embodiment and application.
Host systems 240a-n provide data and access control information through channels to the storage systems, and the storage systems may also provide data to the host systems also through the channels. The host systems do not address the disk drives of the storage systems directly, but rather access to data may be provided to one or more host systems from what the host systems view as a plurality of logical devices or logical volumes. The logical volumes may or may not correspond to the actual disk drives. For example, one or more logical volumes may reside on a single physical disk drive. Data in a single storage system may be accessed by multiple hosts allowing the hosts to share the data residing therein. A LUN (logical unit number) may be used to refer to one of the foregoing logically defined devices or volumes.
With respect to virtualization systems, the term virtualization system as used herein refers to any one of an individual computer system with virtual machine management functionality, a virtual machine host, an aggregation of an individual computer system with virtual machine management functionality and one or more virtual machine hosts communicatively coupled with the individual computer system, etc. Examples of virtualization systems include commercial implementations, such as, for example and without limitation, VMware® ESX Server™ (VMware and ESX Server are trademarks of VMware, Inc.), VMware® Server, and VMware® Workstation, available from VMware, Inc., Palo Alto, Calif.; operating systems with virtualization support, such as Microsoft® Virtual Server 2005; and open-source implementations such as, for example and without limitation, available from XenSource, Inc.
As is well known in the field of computer science, a virtual machine is a software abstraction—a “virtualization”—of an actual physical computer system. Some interface is generally provided between the guest software within a VM and the various hardware components and devices in the underlying hardware platform. This interface-which can generally be termed “virtualization layer”—may include one or more software components and/or layers, possibly including one or more of the software components known in the field of virtual machine technology as “virtual machine monitors” (VMMs), “hypervisors,” or virtualization “kernels.”
Because virtualization terminology has evolved over time, these terms (when used in the art) do not always provide clear distinctions between the software layers and components to which they refer. For example, the term “hypervisor” is often used to describe both a VMM and a kernel together, either as separate but cooperating components or with one or more VMMs incorporated wholly or partially into the kernel itself. However, the term “hypervisor” is sometimes used instead to mean some variant of a VMM alone, which interfaces with some other software layer(s) or component(s) to support the virtualization. Moreover, in some systems, some virtualization code is included in at least one “superior” VM to facilitate the operations of other VMs. Furthermore, specific software support for VMs is sometimes included in the host OS itself.
The device 340 may also include an end user certificate at the start. When being “charged,” the VM image can be encrypted using the key of the end user. This way, only the valid end user may decrypt and run the VM image. The key can be maintained on the device or loaded into the validation software, which may need to perform the decryption as part of its function.