Static data protection for virtual machines
Patent Information
- Application Number
- CN202380057216.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-08-29
- Filing Date
- 2023-07-20
- Publication Date
- 2025-03-14
AI Technical Summary
The existing hypervisor-based virtualization technology has shortcomings in protecting virtual machine customers' data at rest, especially traditional disk encryption technology cannot encrypt the entire disk, and it depends on the configuration of the customer OS, which increases the setup time and complexity.
Execute the data protection component in the context of the higher privileges of the client partition. This component virtualizes disk I/O from the client OS, implements encryption and integrity protection of data at rest, ensures the data security of the entire disk, and is transparent to the client OS, and does not require additional configuration.
Through virtualized disk I/O, the data protection component can provide encryption and integrity protection for the entire disk, solving the problem that traditional technology cannot encrypt the entire disk, simplifying the data protection process and reducing dependence on customer OS.
Smart Images

Figure CN119631074A_ABST
Abstract
Description
Background Art
[0001] Hypervisor-based virtualization technology allocates parts of a computer system's physical resources (e.g., processor cores and / or time, physical memory areas, storage resources) into separate partitions, and executes software within each of these partitions. Thus, hypervisor-based virtualization technology facilitates the creation of virtual machine (VM) clients, each of which executes client software, such as an operating system (OS) and other software executed therein. Although hypervisor-based virtualization technology can take various forms, many technologies use an architecture that includes a hypervisor that directly accesses hardware and operates in an execution environment separate from all other software in the system, a host partition that executes a host OS and a host virtualization stack, and one or more client partitions corresponding to the VM client. The host virtualization stack within the host partition manages the client partitions, and thus the hypervisor grants the host partition a higher level of access to the hypervisor and hardware resources than to the client partition.
[0002] Taking HYPER-V from MICROSOFT CORPORATION as an example, the HYPER-V hypervisor is the lowest layer of the HYPER-V stack. The HYPER-V hypervisor provides basic functions for scheduling and executing virtual processors for VM clients. The HYPER-V hypervisor has hardware virtualization capabilities (e.g., Second Level Address Translation (SLAT) processor extensions, such as fast virtualization indexing from ADVANCED MICRO DEVICES, or extended page tables from INTEL; Input / Output (I / O) Memory Management Unit (IOMMU), which connects an I / O bus with direct memory access capability to main memory; processor virtualization control). The HYPER-V hypervisor also provides a set of interfaces to allow the HYPER-V host stack within the host partition to manage VM clients using these virtualization capabilities. The HYPER-V host stack provides common functions for VM client virtualization (e.g., memory management, VM client lifecycle management, device virtualization).
[0003] In addition to isolating client partitions from each other, some hypervisor-based virtualization technologies also operate to isolate VM client states (e.g., registers, memory) from the host partition (and the host OS executed therein), and even from the entity that manages the computing system on which the VM client is hosted. To achieve the above, these virtualization technologies introduce a security boundary between the hypervisor and the host virtualization stack. The security boundary limits which VM client resources the host OS (and accordingly, the host virtualization stack) can access to ensure the integrity and confidentiality of the VM client. Such VM clients are referred to herein as isolated VM (IVM) clients.
[0004] Although the hypervisor-based virtualization technology creates client partitions and isolates these client partitions from each other and potentially from the host partition, the client OS in each client partition is responsible for using disk encryption technology to protect its static data. For example, the WINDOWS client OS can protect its static data by encrypting its system and / or (multiple) data volumes using BITLOCKER, and the LINUX client OS can similarly protect its static data by using dm-crypt.
[0005] The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above.Rather, this background is merely provided to illustrate one exemplary technology area where some embodiments described herein may be practiced. Summary of the invention
[0006] In some aspects, the technology described herein relates to methods, systems, and computer program products (computer storage media), which include: operating a data protection component within a first customer privileged context of a customer partition, the data protection component participating in data input / output operations of a customer OS operating in a second customer privileged context, the second customer privileged context being restricted from accessing a memory associated with the first customer privileged context; based on the data protection component identifying a data output operation of the customer OS, the data protection component: applying a first data protection operation to first data associated with the data output operation, and initiating storage of a first result of the first data protection operation to a data storage device; and based on the data protection component identifying a data input operation of the customer OS, the data protection component: applying a second data protection operation to second data associated with the data input operation, and based on applying the second data protection operation to the second data, communicating the result of the data input operation to the customer OS.
[0007] In some aspects, the technology described herein relates to methods, systems, and computer program products (computer storage media), which include: operating a data protection component within a first customer privileged context of a customer partition, the data protection component participating in data input / output operations of a customer OS operating in a second customer privileged context, the second customer privileged context being restricted from accessing a memory associated with the first customer privileged context; based on the data protection component identifying a data output operation of the customer OS, the data protection component: applying an encryption operation to first data associated with the data output operation, and initiating storage of the encrypted first data to a data storage device; and based on the data protection component identifying a data input operation of the customer OS, the data protection component: applying a decryption operation to second data associated with the data input operation, and communicating the decrypted second data to the customer OS.
[0008] In some aspects, the technology described herein relates to methods, systems, and computer program products (computer storage media), which include: operating a data protection component within a first customer privileged context of a customer partition, the data protection component participating in a data input / output operation of a customer OS operating in a second customer privileged context, the second customer privileged context being restricted from accessing a memory associated with the first customer privileged context; based on the data protection component identifying a data output operation of the customer OS, the data protection component: generating a first integrity token based on first data associated with the data output operation, and initiating storage of the first integrity token to a data storage device, and initiating storage of the first data or a derivative of the first data to the data storage device; and based on the data protection component identifying a data input operation of the customer OS, the data protection component: obtaining a second integrity token from the data storage device, the second integrity token being associated with second data, the second data being associated with the data input operation, generating a second integrity token based on the second data, determining that the first integrity token is equal to the second integrity token, and based on determining that the first integrity token is equal to the second integrity token, communicating the second data or a derivative of the second data to the customer OS.
[0009] This summary is provided to introduce a series of concepts in a simplified form, which will be further described in the detailed description below. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] In order to describe the manner in which the advantages and features of the systems and methods described herein can be obtained, a more particular description of the embodiments briefly described above will be provided with reference to specific embodiments illustrated in the accompanying drawings. Understanding that these drawings depict only typical embodiments of the systems and methods described herein and are, therefore, not to be considered limiting of their scope, certain systems and methods will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
[0011] Figure 1 An example computer architecture that facilitates static data protection for VM guests is shown;
[0012] Figure 2 illustrates example functionality of a data protection component;
[0013] Figure 3A-3C An example of data protection associated with an intercepted data output operation is shown;
[0014] Figure 4A-4C An example of data protection associated with an intercepted data entry operation is shown; and
[0015] Figure 5 A flow chart illustrating an example method for static data protection for VM guests. DETAILED DESCRIPTION
[0016] Although the guest OS can use disk encryption technology (such as BITLOCKER or dm-crypt) to protect the static data of the guest VM, this protection is incomplete because these encryption technologies do not encrypt the entire disk. For example, for WINDOWS VM guests, BITLOCKER does not encrypt the Extensible Firmware Interface (EFI) partition and boot loader data on the disk. Similarly, for LINUX VM guests, dm-crypt does not encrypt the kernel image and initramfs (boot partition) on the disk. Additionally, guest OS-based disk encryption technology relies on the configuration of the guest OS to set up disk encryption. This increases the time spent setting up VM guests, relies on guest OS-specific knowledge, and is prone to errors.
[0017] At least some embodiments described herein implement static data protection for VM clients. These embodiments create isolated memory contexts within a client partition, which may include a lower privileged context and a higher privileged context. These embodiments then execute a client OS in one of these contexts (e.g., a lower privileged context) and execute a data protection component in another of these contexts (e.g., a higher privileged context). The data protection component virtualizes disk I / O from the client OS. Therefore, when the client OS initiates I / O operations, these operations pass through the data protection component, which implements static data protection, including, for example, data encryption and / or data integrity protection.
[0018] By virtualizing the disk I / O in this manner, the data protection component can implement static data protection for all data written by the VM client. Thus, for example, the data protection component can provide disk encryption for the entire disk, including partitions that were not previously encrypted by traditional client OS encryption (e.g., EFI and boot-related partitions). Additionally, by virtualizing the disk I / O in this manner, the data protection component can implement static data protection in a manner that is completely transparent to the client OS. In embodiments, this means that the client OS does not even need to know about the data protection component or the data protection operations it is performing. In these embodiments, the client OS operates on "plain text" (e.g., data without any protection transformation (such as encryption)), and the data protection component handles data protection operations without any client OS participation. This means that there is no need to configure the client OS (e.g., to set up disk encryption); no client OS enlightenment is required; and the client OS does not even need to support disk encryption to take advantage of the data protection provided herein.
[0019] Embodiments herein are applicable to conventional VM guests (e.g., VM guests that lack security boundaries (multiple) that restrict host OS access to VM guest resources), as well as IVM guests. Notably, IVM guests can provide encryption of data in use to isolate guest data from other partitions (including host partitions). When combined with the static data protection described herein, IVM guests can provide end-to-end data protection for both data in use and data at rest.
[0020] Figure 1 An example computer architecture 100 is shown that facilitates static data protection for VM guests. As shown, computer architecture 100 includes a computer system 101 that includes hardware 102. Figure 1 In the example of hardware 102, an example of hardware 102 includes processor(s) 103 (e.g., a single processor, or multiple processors), memory 104 (e.g., system or main memory), local storage 105 (e.g., a single computer-readable storage medium, or multiple computer-readable storage media), a network interface 106 (e.g., one or more network interface cards) for interconnecting (via (multiple) networks 108) to one or more other computer systems (e.g., authentication service 121, remote storage 122), and a trusted platform module (TPM) (TPM 107) for facilitating the measured boot feature of providing a tamper-resistant log of loaded boot components. Although not shown, hardware 102 may also include other hardware devices, such as an IOMMU, (multiple) video display interface, (multiple) user input interface, etc.
[0021] As shown, in computer architecture 100 , hypervisor 109 executes directly on hardware 102 . Typically, the hypervisor 109 divides hardware resources (e.g., processor(s) 103; memory 104; I / O resources (such as I / O address space, disk resources, and network resources) between a host partition 111 in which a host OS 115 executes and a client partition 112a in which a client OS 116 executes. As indicated by the ellipsis, the hypervisor 109 may divide the hardware resources into a plurality of client partitions 112 (e.g., client partition 112a to client partition 112n), each client partition executing a corresponding client OS. In the description herein, the term "VM client" is used to refer to a "client partition", and the term "IVM client" is used to indicate that a particular VM client is an isolated VM client operating in an isolated client partition under an IVM architecture. The hypervisor 109 also implements controlled communication between partitions via a bus (e.g., a VM bus, not shown). As shown, the host OS 115 includes a virtualization stack 118 that manages VM client virtualization (e.g., memory management, VM client lifecycle management, device virtualization) via one or more application program interface (API) calls to the hypervisor 109.
[0022] In computer architecture 100, virtualization stack 118 is shown to include context manager 119, which divides client partitions into different privileged areas (referred to herein as client privileged contexts). Thus, for example, client partition 112a is shown to include client privileged context 113 (hereinafter referred to as context 113) and client privileged context 114 (hereinafter referred to as context 114). As used herein, privilege means the right to perform security-related functions on a computer system. Thus, a higher privilege means a greater ability to perform security-related functions on a computer system, while a lower privilege means a lower ability to perform security-related functions on a computer system. In an embodiment, context manager 119 may divide any partition in client partition 112 into different client privileged contexts. Figure 1 As indicated, in some embodiments, context 113 is a lower privileged context (e.g., when compared to context 114), while context 114 is a higher privileged context (e.g., when compared to context 113). In these embodiments, context 113 being less privileged than context 114 means that context 113 cannot access the client partition memory assigned to context 114. In some embodiments, context 114 can access the client partition memory assigned to context 113. In other embodiments, context 114 lacks access to the client partition memory assigned to context 113.
[0023] In some embodiments, context 113 and context 114 are created based on mappings within SLAT 110, which includes one or more tables that map system physical addresses (SPAs) in memory 104 to guest physical addresses (GPAs) as seen by guest partition 112a. In these embodiments, these mappings prevent context 113 from accessing memory assigned to context 114. In one example, hypervisor 109 is a HYPER-V hypervisor and partitions are divided into virtual trust levels (VTLs) using virtualization-based security (VBS). In this example, context 113 operates under the VBS in the more privileged VTL and context 114 operates under the VBS in the less privileged VTL.
[0024] In other embodiments, context 113 and context 114 are created based on nested virtualization, where client partition 112a operates a hypervisor similar to hypervisor 109 that divides the resources of client partition 112a into sub-partitions. In these embodiments, the hypervisor operating within client partition 112a prevents context 113 from accessing memory allocated to context 114.
[0025] exist Figure 1 1, context 114 is shown to include a data protection component 117. In an embodiment, data protection component 117 runs in each VM configured by context manager 119 for static data protection as described herein. In some embodiments, context 114 operates as a host compatibility layer (HCL) firmware environment that provides a set of facilities (such as virtualized TPM support) to the guest OS running in context 113. In these embodiments, data protection component 117 is part of the HCL firmware environment and provides data protection facilities.
[0026] In an embodiment, the data protection component 117 virtualizes one or more I / O devices that are exposed as disks to the client OS 116. Therefore, disk I / O operations initiated by any component operating within the client OS 116 (symbolically represented by the I / O initiator 120) pass through the data protection component 117. For example, the data protection component 117 exposes a disk image stored in the local storage device 105, the remote storage device 122, etc. as a virtual disk to the client OS 116. Because the data protection component 117 is involved in the disk I / O of the client partition 112a, the data protection component 117 can implement its own data protection (e.g., data encryption and / or data integrity protection) without any support from the client OS 116.
[0027] For example, encryption occurs within context 114, which is "below" guest OS 116; thus, guest OS 116 may operate on plaintext, and data protection component 117 is responsible for cryptography—ensuring that storage writes by guest OS 116 are encrypted before the data leaves client partition 112a, and storage reads by guest OS 116 are decrypted before the data is communicated to guest OS 116. In this model, data protection component 117 may encrypt the entire disk, including the portion of the disk containing the boot loader, etc. Additionally, or alternatively, data integrity protection occurs within context 114; thus, guest OS 116 may transparently generate and store integrity tokens (e.g., hashes, checksums) for data written by guest OS 116, and use these integrity tokens to verify the data when guest OS 116 later reads it and before it is communicated to guest OS 116. In this model, data protection component 117 may provide data integrity protection for the entire disk, including the portion of the disk containing the boot loader, etc.
[0028] It is noteworthy that when the data protection component 117 operates within a guest partition configured as an IVM guest, it is protected from the host OS 115, just like the guest OS running within the IVM guest. Therefore, in an embodiment, the data protection component 117 is part of the trusted computing base (TCB) of the IVM guest and is measured as part of the initial image of the IVM guest.
[0029] Figure 2 Shows Figure 1 An example 200 of internal components of the data protection component 117. Figure 2 Each internal component of the data protection component 117 depicted in represents various functions that the data protection component 117 can implement according to various embodiments described herein. However, it will be understood that the depicted components—including their identities and arrangements—are presented only as an aid in describing example embodiments of the data protection component 117.
[0030] As shown, in an embodiment, the data protection component 117 includes a key manager 201 that manages one or more keys used for cryptographic operations (such as encryption, decryption, hashing, etc.). Figure 1As shown, key manager 201 can obtain keys from various sources, such as from authentication service 121 (key 123), from remote storage 122 (key 124), from TPM 107 (key 125), from host OS 115 (key 126), etc. In some embodiments, data protection component 117 receives the keys as part of VM provisioning (e.g., as part of the VM image). In some embodiments, key manager 201 obtains the keys during VM operation (e.g., such as from one of the locations just described). In some embodiments, key manager 201 generates the keys itself.
[0031] The data protection component 117 also includes an I / O interceptor 202 that intercepts I / O operations of the client OS 116. For example, the I / O interceptor 202 exposes a disk image (e.g., stored in the local storage device 105 or the remote storage device 122) as a virtual disk to the client OS 116. The I / O interceptor 202 then intercepts and identifies input (read) operations and output (write) operations initiated by the client OS 116 to the virtual disk.
[0032] The data protection component 117 also includes a protection operation component 203 that applies one or more data protection operations to the data associated with the I / O operation identified by the I / O interceptor 202. As shown, in an embodiment, the data protection component 117 includes one or more of an encryption component 204 and an integrity component 205. Thus, in an embodiment, the protection operation component 203 applies encryption and / or data integrity protection operations to the data associated with the I / O operation identified by the I / O interceptor 202.
[0033] The data protection component 117 also includes a communication component 206 that communicates the results of the data protection operations of the protection operation component 203. In an embodiment, for a data output operation, the communication component 206 initiates the storage of appropriate data (e.g., data associated with the output operation, an encrypted form of the data, and / or an integrity token) to a storage device. In an embodiment, in a data input operation, the communication component 206 initiates the communication of appropriate data (e.g., data associated with the input operation, or data decrypted from the data) or a fault to the guest OS 116.
[0034] Figure 3A-3C An example of protection of data associated with an intercepted data output operation is shown. Initially, Figure 3AAn example 300a of encryption of data associated with an intercepted data output operation is shown. In example 300a, protection operation component 203 inputs data 301 and encrypts the data using encryption component 204 (together with a key managed by key manager 201), resulting in encrypted data 301' that communication component 206 writes to a storage device (e.g., local storage device 105, remote storage device 122).
[0035] Figure 3B An example 300b of generating an integrity token for data associated with an intercepted data output operation is shown. In example 300b, the protection operation component 203 inputs data 301 and generates an integrity token from the data 301 using the integrity component 205 (potentially using a key managed by the key manager 201), thereby obtaining the data 301 and a token 302 that uniquely represents the data 301, and the communication component 206 writes both to a storage device (e.g., a local storage device 105, a remote storage device 122).
[0036] Combined encryption and data integrity protection, Figure 3C An example 300c of encrypting data associated with an intercepted data output operation and generating an integrity token is shown. In example 300c, the protection operation component 203 inputs data 301 and encrypts the data using the encryption component 204 (together with the key managed by the key manager 201), resulting in encrypted data 301' that the communication component 206 writes to a storage device (e.g., local storage device 105, remote storage device 122). In example 300c, the protection operation component 203 also uses the integrity component 205 (potentially using the key managed by the key manager 201) to generate an integrity token based on the data 301, resulting in a token 303 that the communication component 206 writes to a storage device (e.g., local storage device 105, remote storage device 122). It is worth noting that when generating an integrity token based on data 301, integrity component 205 can use data 301 itself to generate the integrity token (such that token 303 uniquely represents data 301), or can use encrypted data 301' to generate the integrity token (such that token 303 uniquely represents encrypted data 301').
[0037] Figure 4A-4C An example of protection of data associated with an intercepted data input operation is shown. Initially, Figure 4AAn example 400a of decryption of data associated with an intercepted data input operation is shown. In example 400a, protection operation component 203 inputs encrypted data 401' and uses encryption component 204 (together with the key managed by key manager 201) to decrypt the data, resulting in data 401 that communication component 206 communicates to client OS 116. Referring to example 300a, in one example, encrypted data 401' is equal to encrypted data 301', and data 401 is equal to data 301.
[0038] Figure 4B An example 400b of integrity protection of data associated with an intercepted data input operation is shown. In example 400b, protection operation component 203 inputs data 401 and token 402, and uses integrity component 205 (potentially using keys managed by key manager 201) to determine whether token 402 represents data 401. In the example, integrity component 205 generates a new token for data 401 and compares the new token to token 402. If the tokens are equal, integrity component 205 determines that token 402 represents data 401 and has passed the integrity test; if the tokens are not equal, integrity component 205 determines that token 402 does not represent data 401 and the integrity test has failed. If the integrity test is passed, communication component 206 communicates data 401 to client OS 116; if the integrity test fails, communication component 206 communicates fault 404 (e.g., read fault, I / O fault) to client OS 116. Referring to example 300 b , in one example, data 401 is equal to data 301 , and token 402 is equal to token 302 .
[0039] Combined encryption and data integrity protection, Figure 4CAn example 400c of decryption and integrity protection of data associated with an intercepted data input operation is shown. In example 400c, the protection operation component 203 inputs encrypted data 401' and decrypts the data using the encryption component 204 (together with the key managed by the key manager 201), thereby obtaining data 401. In example 400c, the protection operation component 203 also uses the integrity component 205 (potentially using the key managed by the key manager 201) to determine whether the token 403 is associated with the encrypted data 401'. In one example (for example, when the token 303 is generated from the encrypted data 301' in example 300c), the integrity component 205 verifies the integrity of the encrypted data 401'. Therefore, the integrity component 205 generates a new token for the encrypted data 401' and compares the new token with the token 403. If the tokens are equal, the integrity component 205 determines that the token 403 represents the encrypted data 401' and has passed the integrity test; if the tokens are not equal, the integrity component 205 determines that the token 403 does not represent the encrypted data 401' and the integrity test has failed. In another example (e.g., when the token 303 is generated from the data 301 in the example 300c), the integrity component 205 verifies the integrity of the data 401. Therefore, the integrity component 205 generates a new token for the data 401 and compares the new token with the token 403. If the tokens are equal, the integrity component 205 determines that the token 403 represents the data 401 and has passed the integrity test; if the tokens are not equal, the integrity component 205 determines that the token 403 does not represent the data 401 and the integrity test has failed. In either case, if the integrity test passes, the communication component 206 communicates data 401 to the guest OS 116; if the integrity test fails, the communication component 206 communicates a fault 404 (e.g., a read fault, an I / O fault) to the guest OS 116. Referring to example 300c, in one example, encrypted data 401' is equal to data 401, and token 403 is equal to token 303.
[0040] It is noteworthy that the data protection component 117 can support various VM client provisioning flows. In one VM client provisioning flow, the VM client is initially provisioned with an unencrypted disk image. Then, during the operation of the VM client, the data protection component 117 encrypts the data on the disk image. In an embodiment, this encryption is performed passively (e.g., encrypting blocks as they are written), or actively (e.g., starting with the first block and continuing to the last block). In another VM client provisioning flow, the VM client is initially provisioned with a disk image that has been encrypted, and is provided with a key for decrypting the disk image.
[0041] Now combine Figure 5 , which shows a flowchart of an example method 500 for static data protection of VM guests. In an embodiment, instructions for implementing the method 500 are encoded as computer-executable instructions (e.g., context manager 119, data protection component 117) stored on a computer storage medium (e.g., local storage device 105), which can be executed by a processor (e.g., processor (s) 103) to cause a computer system (e.g., computer system 101) to perform the method 500.
[0042] The following discussion now involves a number of methods and method actions. Although method actions may be discussed in a certain order, or may be shown in a flow chart as occurring in a specific order, no specific order is required unless otherwise specified, or because an action depends on another action being completed before the action is performed.
[0043] refer to Figure 5 In some embodiments, method 500 includes an act 501 of creating privileged and non-privileged memory contexts for a client partition. In some embodiments, act 501 includes creating a first client privileged context and a second client privileged context for the client partition, the second client privileged context being restricted from accessing memory associated with the first client privileged context. In some embodiments of act 501, these contexts are created based on SLAT. In other embodiments of act 501, these contexts are created based on nested virtualization. In an example, context manager 119 divides client partition 112a into context 113 and context 114, wherein context 113 is restricted from accessing memory associated with context 114. This enables data protection component 117 to operate within context 114 that is separate from client OS 116 (whose operating context 113). In some embodiments, this means that client OS 116 is unaware of context 114 and data protection component 117 operates therein. Therefore, in some embodiments of act 501, client OS is unaware of the first client privileged context.
[0044] In some embodiments, the client partition is configured as an IVM client isolated from the host partition. In these embodiments, the host OS cannot access the memory area associated with the client partition.
[0045] Method 500 includes an act 502 of intercepting I / O operations of a guest OS within a privileged memory context. In some embodiments, act 502 includes operating a data protection component within a first guest privileged context that participates in data I / O operations of a guest OS operating in a second guest privileged context. In an example, using I / O interceptor 202, data protection component 117 intercepts I / O operations of guest OS 116. For example, in act 503a, data protection component 117 intercepts outgoing I / O operations of guest OS 116, and in act 503b, data protection component 117 intercepts incoming I / O operations of guest OS 116. This enables data protection component 117 to transparently apply data protection operations (e.g., encryption and data integrity protection) to data reads and data writes of guest OS 116.
[0046] Regarding intercepting data writes, in an embodiment, based on intercepting the I / O operation in action 502, method 500 includes an action 503a of intercepting an output operation. In some embodiments, action 503a includes identifying a data output operation of the guest OS. In an example, I / O interceptor 202 intercepts and identifies a write I / O operation of an I / O initiator 120 (e.g., an OS component, an application, etc.) operating within guest OS 116.
[0047] After act 503a, method 500 includes act 504a of applying data protection. In some embodiments, act 504a includes a data protection component based on identifying a data output operation of the guest OS, the data protection component applying a first data protection operation to first data associated with the data output operation. In the example, protection operation component 203 applies the data protection operation to data associated with the intercepted data write initiated by I / O initiator 120. This means that data written by guest OS 116 or applications executed therein are protected before leaving client partition 112a.
[0048] In some embodiments, the data protection operation is encryption. Thus, as shown, in some embodiments, action 504a includes an action 505a of encryption. In some embodiments, action 505a includes applying an encryption operation to the first data associated with the data output operation. For example, Figure 3A and Figure 3C An example is shown in which the encryption component 204 encrypts data 301 associated with an output I / O operation to generate encrypted data 301'. This means that the data 301 is transparently encrypted before the data leaves the client partition 112a.
[0049] Additionally, or alternatively, in some embodiments, the data protection operation is integrity protection. Thus, in addition to or as an alternative to action 505a, in some embodiments, action 504a includes an action 506a of creating an integrity token. In some embodiments, action 506a includes generating a first integrity token based on first data associated with the data output operation. For example, Figure 3B and Figure 3C An example is shown where the integrity component 205 generates tokens (eg, token 302, token 303) based on data 301 associated with an output I / O operation. This means that integrity verification data is transparently generated for data 301 related to data leaving the client partition 112a.
[0050] After act 504a, method 500 includes act 507 of outputting to a storage device. In some embodiments, act 507 includes initiating a data protection component to store a first result of the first data protection operation to a data storage device. In an example, communication component 206 initiates storing appropriate data to a storage device (e.g., local storage device 105, remote storage device 122).
[0051] In an embodiment, when action 504a includes action 505a, action 507 includes initiating storage of the encrypted first data to the data storage device. Figure 3A and Figure 3C In the context of , action 507 comprises initiating storage of the encrypted data 301 ′ to a storage device.
[0052] In an embodiment, when action 504a includes action 506a, action 507 includes initiating storage of the first integrity token to the data storage device; and initiating storage of the first data or a derivative of the first data to the data storage device. Figure 3B In the context of (e.g., action 504a includes action 506a but not 505a), action 507 includes initiating storage of token 302 and data 301 to a storage device. Figure 3C In the context of (eg, action 504a includes each of action 505a and action 506a), action 507 includes initiating storage of the token 303 and the encrypted data 301' to a storage device.
[0053] As indicated by the arrow extending from act 507, in an embodiment, method 500 returns to act 502 to intercept another I / O operation.
[0054] Regarding intercepting data reads, in an embodiment, based on intercepting the I / O operation in action 502, method 500 includes an action 503b of intercepting an input operation. In some embodiments, action 503b includes identifying a data input operation of the guest OS. In an example, the I / O interceptor 202 intercepts and identifies a read operation of an I / O initiator 120 (e.g., an OS component, an application, etc.) operating within the guest OS 116.
[0055] After action 503b, method 500 includes an action 504b of applying data protection. In some embodiments, action 504b includes: based on a data protection component identifying a data input operation of the client OS, the data protection component applies a second data protection operation to second data associated with the data input operation. In the example, protection operation component 203 applies a data protection operation to data associated with an intercepted data read initiated by I / O initiator 120. This means that the data read by client OS 116 or the application executed therein is decrypted and / or its integrity is verified before reaching client OS 116.
[0056] In some embodiments, the data protection operation is decryption. Thus, as shown, in some embodiments, action 505b includes applying a decryption operation to the second data associated with the data input operation. For example, Figure 4A and Figure 4C An example is shown in which encryption component 204 decrypts encrypted data 401' associated with an input I / O operation to generate data 401. This means that data 401 is transparently decrypted before the data is communicated to guest OS 116.
[0057] Additionally, or alternatively, in some embodiments, the data protection operation is integrity protection. Thus, in addition to or as an alternative to action 505b, in some embodiments, action 504b includes an action 506b of verifying the integrity token. In some embodiments, action 506b includes: obtaining a second integrity token from a data storage device, the second integrity token associated with second data, the second data associated with the data input operation, generating a second integrity token based on the second data, and determining that the first integrity token is equal to the second integrity token. For example, Figure 4B and Figure 4C An example is shown in which integrity component 205 verifies a token (e.g., token 402, token 303) based on data associated with an input I / O operation (e.g., data 401, encrypted data 401'). This means that the stored integrity verification data is used to transparently verify the integrity of the read data before it is communicated to guest OS 116.
[0058] After act 504b, method 500 includes act 508 of communicating to the guest OS. In some embodiments, act 508 includes: based on applying the second data protection operation to the second data, the data protection component communicates the result of the data input operation to the guest OS. In the example, communication component 206 initiates communication of appropriate data (e.g., data associated with the input operation, or decrypted data of the data), or a fault, to guest OS 116.
[0059] In an embodiment, when action 504b includes action 505b, action 508 includes communicating the decrypted second data to the guest OS. Figure 3A In the context of , action 508 includes communicating data 401 to guest OS 116 .
[0060] In some embodiments, when act 504b includes act 506b, act 508 includes communicating the second data or a derivative of the second data to the guest OS based on determining that the first integrity token is equal to the second integrity token. Figure 4B In the context of (e.g., action 504b includes action 506b but does not include action 505b), action 508 includes communicating data 401 to client OS 116. In another example, Figure 4C In the context of (eg, action 504b includes each of actions 505b and 506b), action 508 includes communicating data 401 to guest OS 116, the communicated data 401 being a derivative of encrypted data 401'.
[0061] In other embodiments, when act 504b includes act 506b, act 508 includes communicating a failure to the guest OS based on determining that the first integrity token is not equal to the second integrity token. Figure 4B and Figure 4C In the context of , action 508 includes communicating the failure 404 (eg, read failure, I / O failure) to the guest OS 116 .
[0062] As indicated by the arrow extending from act 508, in an embodiment, method 500 returns to act 502 to intercept another I / O operation.
[0063] In some embodiments, applying the first data protection operation to the first data in act 504a includes applying an encryption operation to the first data (act 505a), such that the first result of the first data protection operation includes the encrypted first data. In these embodiments, applying the second data protection operation to the second data in act 504b includes applying a decryption operation to the second data (act 505b), and communicating the result of the data input operation to the guest OS in act 508 includes communicating the decrypted second data to the guest OS. In some of these embodiments, the data output to the storage device in act 507 is data associated with the operation intercepted in act 503b, such that the encrypted first data is equal to the second data, and the first data is equal to the decrypted second data.
[0064] In some embodiments, applying the first data protection operation to the first data in act 504a includes: generating a first integrity token based on the first data (act 506a), and initiating storage of the first result of the first protection operation to the data storage device in act 507 includes initiating storage of the first integrity token to the data storage device. Some embodiments may also include initiating storage of the first data to the data storage device. Alternatively, in some embodiments, applying the first data protection operation to the first data in act 504a also includes applying an encryption operation to the first data (act 505a), and in these embodiments, initiating storage of the first result of the first data protection operation to the data storage device in act 507 includes: initiating storage of the encrypted first data to the data storage device. In one or more embodiments, generating the first integrity token based on the first data includes generating the first integrity token from the first data. Alternatively, in one or more embodiments, generating the first integrity token based on the first data includes generating the first integrity token from the encrypted first data.
[0065] In some embodiments, applying the second data protection operation to the second data in act 504b includes applying a data integrity verification to the second data (act 506b). In these embodiments, communicating the result of the data input operation to the guest OS in act 508 may include communicating the second data or a derivative of the second data to the guest OS based on the data integrity verification indicating that the second data is valid. Alternatively, in these embodiments, communicating the result of the data input operation to the guest OS in act 508 may include communicating a failure to the guest OS based on the data integrity verification indicating that the second data is invalid.
[0066] In some embodiments, applying the data integrity validation to the second data in act 504b includes obtaining a first integrity token from a data storage device, the first integrity token being associated with the second data; generating a second integrity token based on the second data; and determining whether the first integrity token is equal to the second integrity token. In these embodiments, when the first integrity token is equal to the second integrity token, the data integrity validation may indicate that the second data is valid. Thus, in some embodiments, the first integrity token is equal to the second integrity token. In these embodiments, the method 500 includes communicating the second data or a derivative of the second data to the guest OS based on the data integrity validation indicating that the second data is valid. Alternatively, when the first integrity token is different from the second integrity token, the data integrity validation may indicate that the second data is invalid. Thus, in some embodiments, the first integrity token is not equal to the second integrity token. In these embodiments, the method 500 includes communicating a failure to the guest OS based on the data integrity validation indicating that the second data is invalid.
[0067] In an embodiment, method 500 includes obtaining an encryption key from one of a host OS (eg, key 126 ), a hardware device (eg, key 125 , key 124 ), or an authentication service (eg, key 123 ).
[0068] Embodiments of the present disclosure may include or utilize a special or general-purpose computer system (e.g., computer system 101), as discussed in more detail below, which includes computer hardware, such as a processor system (e.g., (multiple) processors 103) and system memory (e.g., memory 104). Embodiments within the scope of the present disclosure also include physical and other computer-readable media for carrying or storing computer-executable instructions and / or data structures. Such computer-readable media can be any available media accessible to a general or special-purpose computer system. Computer-readable media that store computer-executable instructions and / or data structures are computer storage media (e.g., local storage device 105). Computer-readable media that carry computer-executable instructions and / or data structures are transmission media. Therefore, as an example, embodiments of the present disclosure may include at least two distinct types of computer-readable media: computer storage media and transmission media.
[0069] Computer storage media are physical storage media that store computer executable instructions and / or data structures. Physical storage media include computer hardware, such as random access memory (RAM), read-only memory (ROM), electrically erasable programmable ROM (EEPROM), solid-state drive (SSD), flash memory, phase change memory (PCM), optical disk storage, magnetic disk storage or other magnetic storage devices, or any other (multiple) hardware storage devices that can be used to store program code in the form of computer executable instructions or data structures that can be accessed and executed by a general or special purpose computer system to implement the disclosed functions.
[0070] Transmission media may include networks and / or data links, which may be used to carry computer executable instructions or program codes in the form of data structures, and may be accessed by general or special computer systems."Network" is defined as one or more data links that can transmit electronic data between a computer system and / or a module and / or other electronic devices. When information is transmitted or provided to a computer system via a network or another communication connection (hardwired, wireless, or a combination of hardwired or wireless), the computer system may view the connection as a transmission medium. The above combination should also be included in the scope of computer-readable media.
[0071] In addition, upon reaching various computer system components, program code in the form of computer executable instructions or data structures can be automatically transferred from transmission media to computer storage media (or vice versa). For example, computer executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., network interface 106), and then ultimately transferred to computer system RAM and / or less volatile computer storage media at the computer system. Therefore, it should be understood that computer storage media can be included in computer system components that also (or even primarily) utilize transmission media.
[0072] Computer executable instructions include, for example, instructions and data that, when executed at one or more processors, cause a general purpose computer system, a special purpose computer system, or a special purpose processing device to perform a certain function or group of functions. Computer executable instructions may be, for example, binary, intermediate format instructions (such as assembly language), or even source code.
[0073] It should be understood that the disclosed system and method can be practiced in a network computing environment with many types of computer system configurations, including personal computers, desktop computers, notebook computers, message processors, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile phones, PDAs, tablet computers, pagers, routers, switches, etc. The embodiments of the present disclosure can also be practiced in a distributed system environment, wherein the local and remote computer systems linked (by a hardwired data link, a wireless data link, or by a combination of a hardwired and wireless data link) by a network all perform tasks. Like this, in a distributed system environment, a computer system can include multiple component computer systems. In a distributed system environment, program modules can be located in local and remote memory storage devices.
[0074] It should also be understood that embodiments of the present disclosure may be practiced in a cloud computing environment. Although not required, a cloud computing environment may be distributed. When a cloud computing environment is distributed, it may be distributed internationally within an organization and / or have components across multiple organizations. In this specification and the following claims, "cloud computing" is defined as a model for implementing on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage devices, applications, and services). A cloud computing model may consist of various features, such as on-demand self-service, extensive network access, resource pools, rapid elasticity, measured services, and the like. A cloud computing model may also appear in the form of various service models, such as software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS). A cloud computing model may also be deployed using different deployment models (such as private clouds, community clouds, public clouds, hybrid clouds, and the like).
[0075] Some embodiments, such as a cloud computing environment, may include a system that includes one or more hosts, each of which is capable of running one or more virtual machines. During operation, the virtual machine emulates an operating computing system that supports an operating system and may also support one or more other applications. In some embodiments, each host includes a hypervisor that emulates the virtual resources of the virtual machine using physical resources extracted from the virtual machine's view. The hypervisor also provides appropriate isolation between virtual machines. Therefore, from the perspective of any given virtual machine, the hypervisor provides the illusion that the virtual machine interacts with the physical resource interface, even if the virtual machine only interacts with the appearance of the physical resource (e.g., virtual resource) interface. Examples of physical resources include processing power, memory, disk space, network bandwidth, media drives, etc.
[0076] Although the subject matter has been described in language specific to structural features and / or methodological acts, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the features or acts described above, or to the order of acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.
[0077] The present disclosure may be embodied in other specific forms without departing from its essential characteristics. The described embodiments are to be considered in all respects as illustrative rather than restrictive. All changes within the meaning and range of equivalents of the claims should be included within their scope.
[0078] When introducing elements in the appended claims, the articles "a," "an," "the," and "said" are intended to mean that there are one or more of the elements. The terms "comprising," "including," and "having" are intended to be inclusive and mean that there may be additional elements other than the listed elements.
Claims
1. A method comprising: operating a data protection component within a first guest privileged context of a guest partition, the data protection component participating in data input / output operations of a guest operating system (OS) operating in a second guest privileged context, the second guest privileged context being restricted from accessing memory associated with the first guest privileged context; Based on the data protection component identifying the data output operation of the client OS, the data protection component: applying a first data protection operation to first data associated with the data output operation, and Initiate storing a first result of the first data protection operation in a data storage device; as well as Based on the data protection component identifying the data input operation of the client OS, the data protection component: applying a second data protection operation to second data associated with the data input operation, and Based on applying the second data protection operation to the second data, a result of the data input operation is communicated to the guest OS.
2. The method according to claim 1, wherein: Applying the first data protection operation to the first data includes applying an encryption operation to the first data; The first result of the first data protection operation includes encrypted first data; Applying the second data protection operation to the second data includes applying a decryption operation to the second data; as well as Communicating the result of the data input operation to the guest OS includes communicating decrypted second data to the guest OS. 3 . The method of claim 2 , wherein the encrypted first data is equal to the second data, and the first data is equal to the decrypted second data.
4. The method according to claim 1, wherein: Applying the first data protection operation to the first data includes generating a first integrity token based on the first data; as well as Initiating storage of the first result of the first data protection operation in the data storage device includes initiating storage of the first integrity token in the data storage device.
5. The method according to claim 4, wherein: Applying the first data protection operation to the first data also includes applying an encryption operation to the first data; as well as Initiating storage of the first result of the first data protection operation on the data storage device includes initiating storage of encrypted first data on the data storage device.
6. The method of claim 5, wherein generating the first integrity token based on the first data comprises one of: generating the first integrity token from the first data; or The first integrity token is generated from the encrypted first data.
7. The method of claim 4, further comprising initiating storage of the first data in the data storage device.
8. The method of claim 1, wherein: Applying the second data protection operation to the second data includes applying data integrity verification to the second data; as well as Communicating the result of the data input operation to the guest OS includes one of the following: Based on the data integrity verification indicating that the second data is valid, communicating the second data or a derivative of the second data to the guest OS; or Based on the data integrity verification indicating that the second data is invalid, a failure is communicated to the guest OS.
9. The method of claim 8, wherein applying the data integrity verification to the second data comprises: obtaining a first integrity token from the data storage device, the first integrity token being associated with the second data; generating a second integrity token based on the second data; as well as determining whether the first integrity token is equal to the second integrity token, wherein: When the first integrity token is equal to the second integrity token, the data integrity verification indicates that the second data is valid; or When the first integrity token is different from the second integrity token, the data integrity verification indicates that the second data is invalid.
10. The method of claim 9, wherein the first integrity token is equal to the second integrity token, and wherein the method comprises, based on the data integrity verification indicating that the second data is valid, communicating the second data or the derivative of the second data to the guest OS.
11. The method of claim 9, wherein the first integrity token is not equal to the second integrity token, and wherein the method includes, based on the data integrity verification indicating that the second data is invalid, communicating the failure to the guest OS.
12. The method according to claim 1, further comprising: The first guest privileged context and the second guest privileged context are created based on one or more of second level address translation or nested virtualization.
13. The method of claim 1, further comprising obtaining an encryption key from one of a host OS, a hardware device, or an authentication service.
14. The method of claim 1, wherein the guest OS is unaware of the first guest privileged context.
15. The method of claim 1, wherein a memory area associated with the client partition is inaccessible to a host OS.