Execution environment and gatekeeper deployment
By introducing a gatekeeper execution environment in the data center and utilizing separation and verification mechanisms, the security risks caused by security vulnerabilities in remote tenant code are resolved. This enables secure execution and communication management of complex application code, ensuring the security and trustworthiness of the data center.
Patent Information
- Application Number
- CN202080048630.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-07-03
- Filing Date
- 2020-05-15
- Publication Date
- 2025-11-14
- Estimated Expiration
- 2040-05-15
AI Technical Summary
In data centers, code uploaded by remote tenants may contain security vulnerabilities, leading to potential security breaches and damages. Existing trusted execution environments struggle to provide a high level of security assurance.
A gatekeeper execution environment is adopted, which is isolated from other execution environments through a separation mechanism, interferes with their communication, implements input/output policies, and provides a proof mechanism to ensure security.
It enables secure execution of application code that may contain security vulnerabilities, prevents unauthorized communication, and provides policy and feature proofs to ensure the security and trustworthiness of the data center.
Smart Images

Figure CN114041132B_ABST
Abstract
Description
Background Technology
[0001] Compute nodes in a data center typically have one or more execution environments used by the data center's tenants. An execution environment within a compute node can be a physical machine or a virtual machine, where a virtual machine is a virtualized, semi-virtualized, or higher-level abstraction of real hardware. A non-exhaustive list of examples of execution environments includes privilege levels, virtual machines, and processors.
[0002] Remote tenants using data center resources can upload code to one or more execution environments within the data center, allowing the code to execute within the data center. Execution environments are typically able to communicate with other entities within and outside the data center, such as to retrieve data to be processed or to send computation results.
[0003] In many cases, the code uploaded by remote tenants is complex and potentially contains security vulnerabilities. Therefore, running software applications in the cloud is often not more secure than running them locally.
[0004] The embodiments described below are not limited to implementations that address any or all of the shortcomings of known execution environments. Summary of the Invention
[0005] The following is a brief summary of the invention to provide the reader with a basic understanding. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter. Its sole purpose is to present the selection of concepts disclosed herein in a concise form as a prelude to the more detailed description that follows.
[0006] In various examples, there exists a computer system comprising at least two execution environments. This computer system has a separation mechanism that enforces separation between the at least two execution environments, such that one execution environment acts as a gatekeeper interfering with all communication of the other execution environments. The computer system also has a proof mechanism that allows the gatekeeper to prove the characteristics of the at least two execution environments. In the case of third-party code containing a Trojan horse, the first execution environment runs application-specific code that may contain security vulnerabilities or be actively malicious. The gate is configured to interfere with all communication to and from the first execution environment by forwarding, modifying, or discarding individual communications according to a policy, thereby enforcing an input / output policy on the first execution environment. Therefore, outgoing communication from the first execution environment according to the policy is sent out of the computer system, and incoming communication from the first execution environment according to the policy is acknowledged. The gate provides proof of both the application-specific code and the policy.
[0007] Many of the accompanying features will be better understood and thus more readily grasped by referring to the detailed description below in conjunction with the accompanying drawings. Attached Figure Description
[0008] This description will be better understood by referring to the accompanying drawings and reading the following detailed description, in which:
[0009] Figure 1 This is a schematic diagram of a data center with multiple compute nodes, where each compute node has a partitioning mechanism that implements separation between at least two execution environments, one of which is a gatekeeper.
[0010] Figure 2 It is a schematic diagram of the isolation mechanism including the isolation processor connected to the gatekeeper processor;
[0011] Figure 3 This is a diagram illustrating the separation mechanism that includes two privilege levels;
[0012] Figure 4 This is a diagram illustrating the separation mechanism that includes three privilege levels;
[0013] Figure 5 This is a schematic diagram of the partitioning mechanism, including the sandbox.
[0014] Figure 6 This is a diagram illustrating the separation mechanism used in conjunction with management procedures;
[0015] Figure 7 This is a flowchart of the operation method at the network guard station;
[0016] The same reference numerals are used in the accompanying drawings to denote the same parts. Detailed Implementation
[0017] The specific embodiments provided below with reference to the accompanying drawings are intended to describe this example and are not intended to represent the only form of constructing or utilizing this example. This specification sets forth the functionality of this example and the sequence of operations for constructing and operating this example. However, the same or equivalent functionality and sequences can be implemented through different examples.
[0018] Figure 1 A data center 100 is shown, having multiple computing nodes 102 interconnected via a communication network within the data center (not shown). The data center is connected to a communication network 108, such as the Internet, an intranet, or another communication network. The data center 100 can access one or more data storage devices 110. Remote parties, such as party A 112 and party B 114, are able to use the resources of the data center. Remote parties A and B are computer implementations.
[0019] Suppose a remote tenant, such as Party A, uploads code to an execution environment in a data center located at one of the compute nodes in compute node 102. This code is application code that Party A wants to execute in order to provide services or perform processing tasks such as processing encrypted data from Party B from secure data storage device 110. However, Party A notices that the code potentially contains security vulnerabilities. Party A is unable to perform a full security audit due to insufficient resources. The code may have defects that are too difficult or too expensive to fix, making it preferable to isolate the code without modification. Typically, the code is too large for Party A to formally verify. Therefore, when the code is executed, it can lead to security breaches and / or harm. Party A could also be a malicious actor who embeds code in Party A's services that intentionally leaks or damages Party B's data and sells the service to Party B. Potentially causing harm to one or more of the following: data center 100, secure data storage device 110, Party A 112, and Party B 114.
[0020] Even when using a Trusted Execution Environment (TEE) on compute node 102 in the data center, problems still arise. Even though the TEE provides protection against external tampering, the possibility of security issues remains. This is because the application code that Party A expects to execute on one of the compute nodes in compute node 102 may contain security vulnerabilities. Even when using a TEE, such as an enclave or other TEE, it is assumed that the application code uploaded to the TEE is trustworthy, i.e., free from security vulnerabilities. In this context, "free from security vulnerabilities" means that the application code executes exactly as the user expects it, no more, no less. A typical simple TEE contains a small amount of code that is assumed to be correct. This code is usually small enough to be auditable and even formally verified. As hardware capabilities increase and data center tenants begin running entire commercial operating systems and middleware stacks within TEEs, it becomes increasingly difficult to prove that the assumption that the code is free of security vulnerabilities is reasonable. The protection against external tampering provided by a TEE still has value, but may not be sufficient to provide a higher level of security guarantees.
[0021] Consider the following example, where compute nodes in data center 100 include application code uploaded by Party A to provide a service for indexing Party A's encrypted data. This service for indexing Party A's encrypted data is granted access to one or more data storage devices 110 to read data from the accessed data repository(s) and write the encrypted index to a specific storage device binary large object (blob). In a traditional trusted execution environment design, if Party A's encrypted file repository contains malformed files that could trigger arbitrary code execution vulnerabilities (perhaps malicious images in a backup's internal web browser cache directory), an attacker could send all of Party A's files (or just the encryption keys for those files) across the network, or at least write the index unencrypted, thereby bypassing some confidentiality guarantees.
[0022] The technology disclosed herein provides a gatekeeper execution environment 106 for use with another execution environment 104. For ease of understanding, the other execution environment 104 is referred to herein as the "isolated" execution environment 104, even if it is not completely isolated. The isolated execution environment 104 stores application code that potentially contains security vulnerabilities and has been uploaded, for example, by Party A. Since the application code potentially contains security vulnerabilities, it is recognized herein that one way to address potential security vulnerabilities is to restrict which entities the application code can communicate with. Another option is to implement specific encryption that must be used for communication between the application code and other entities. The gatekeeper execution environment 106 (referred to herein as gatekeeper 106 for simplicity) can access policies specifying details about which entities the application code can communicate with and / or details about the encryption of communication with the application code. Gatekeeper 106 interferes with all communication with the isolated execution environment 104 and is able to apply policies to these communications. In this way, complex application code that potentially contains security vulnerabilities can be executed in a manner that provides security guarantees. This policy can be easily replaced by different policies when Party A's application has been completed and (multiple) compute nodes will be used by another party with different application code. The gatekeeper 106 can prove the characteristics of the isolated execution environment, as well as its own characteristics. Therefore, Party A can receive proof from the gatekeeper to assure Party A that the correct application code and / or the correct policy are being executed. This proof arrives before the tenant provides the decryption key for accessing the data to execution environment 104 or gatekeeper 106. Note that in some cases (such as using a key service or proof service in the cloud), this proof is presented to a trusted intermediary instead of Party A to obtain the key.
[0023] Figure 1 An exploded view of one of the compute nodes in compute node 102 of the data center is shown. In the exploded view, a gatekeeper 106 and an isolated execution environment 104 are present. The compute node includes details to be referenced later. Figure 2 Described and for clarity in Figure 1Other components not specified. One or more other compute nodes 102 in the data center have a gatekeeper 106 and an isolated execution environment 106.
[0024] A separation mechanism is used to isolate the gatekeeper from other execution environments, enabling the gatekeeper to intervene in all communications with these environments. This separation mechanism can be implemented using hardware, software, or firmware. (See reference) Figures 2 to 5 An example of a separation mechanism is described. The gatekeeper has a proof mechanism that enables it to prove properties of at least two execution environments (itself and other execution environments). This proof mechanism is implemented using any one or more of hardware, software, and firmware.
[0025] The gatekeeper execution environment disclosed herein operates in an unconventional manner to enable secure execution of application code in another execution environment.
[0026] The gatekeeper execution environment improves the functionality of the underlying computing device by interfering with communication with another execution environment, where application code containing potential security vulnerabilities is being executed.
[0027] Figure 2 An example of implementing the isolation mechanism using hardware is shown. The isolation processor 204 has private memory 210 and, apart from that, only accesses regions of shared memory 212 (e.g., an on-chip static random access memory (SRAM) library) and interrupt lines 214 that connect it to the gatekeeper processor 206. The gatekeeper processor has access 208 to external communications, such as via a peripheral component interconnect (PCIe) bus or network interface. The gatekeeper processor 206 is used to provide gatekeeper services and, in some examples, to load code onto the main core (i.e., the isolation processor 204). The isolation processor 204 is physically isolated except for the interrupt lines that connect it to the gatekeeper processor. In this way, the physical arrangement of the isolation processor 204, the interrupt lines, and the gatekeeper processor 206 separates the gatekeeper from other execution environments (which reside on the isolation processor 204).
[0028] Complex application code executes on isolation processor 204, and gatekeeper processor 206 intervenes in all communication to and from isolation processor 204. Gatekeeper processor 206 operates according to the above reference... Figure 1 The described strategy is used to modify, discard, or forward individual communications to and from the isolation processor 204. This strategy is stored in private memory 210, and complex application code (which may contain security vulnerabilities) cannot tamper with it because the memory is private to the gatekeeper processor 206 and cannot be accessed by the isolation processor 204.
[0029] exist Figure 2In the example, the gatekeeper processor 206 has a proof mechanism that enables the gatekeeper to prove its own and the properties of the isolation processor 204. The gatekeeper processor 206 can prove its policies applied to and from communications to and from the isolation processor 204. The gatekeeper processor 206 can prove complex application code executed on the isolation processor 204. Any appropriate proof mechanism is used. For example, the processor provides hardware or firmware support to securely measure the gatekeeper's code and configuration, and it uses hardware or firmware secrets to sign the obtained measurements. In some examples, the processor also signs the credentials provided to the gatekeeper's code. For example, the processor also signs the gatekeeper policy loaded into private memory, as well as the configuration and code used to create the isolated execution environment. As another example, the gatekeeper's code obtains measurements of the isolated execution environment's configuration and code from the isolation processor, and then signs them together with the gatekeeper policy using credentials provided by the gatekeeper processor. In some cases, the processor also provides additional supporting evidence, such as cryptographic certificates from hardware and cloud providers, which endorse the signing keys used by the processor for proof. Therefore, the evidence generated by the proof mechanism consists of a set of cryptographic signatures or certificates that together prove the properties of two execution environments.
[0030] Figure 3 An example of using software to form a separation mechanism is shown. The isolated execution environment is a lower privilege level 304 of compute node 102, and the gatekeeper execution environment is a higher privilege level 306. In the example, the lower privilege level 304 is user mode, while the higher privilege level 306 is administrator mode for an enclave virtual machine or an encrypted virtual machine. The privilege levels are implemented such that the lower privilege level 304 can only communicate with the higher privilege level 306 using the same separation mechanism used in a regular operating system.
[0031] In the example, Figure 3 Privilege levels 304 and 306 include administrative procedures ( Figure 3 (Not shown in the image) is part of an encrypted virtual machine. In this case, the higher privilege level (gatekeeper) 306 computes a proof including a proof citation that guarantees memory allocated by the lower privilege level 304 cannot be accessed by the hypervisor and cannot be modified by the hypervisor and application code executed in the lower privilege level 304. The higher privilege level 306 is also able to compute proofs to demonstrate the policy used by the gatekeeper. The hypervisor cannot alter control or data flow in the lower privilege level 304 without going through the higher privilege level 306. The lower privilege level 304 cannot directly issue hypercalls.
[0032] A shared ring buffer or other communication channel is implemented between the two privilege levels and is configured to ensure that all data entering or leaving the lower privilege level 304 conforms to a policy enforced by the gatekeeper in the higher privilege level 306. In this example, all memory typically owned by the lower privilege level is visible to the higher privilege level, so the gatekeeper can read and write memory owned by the higher privilege level without needing to marshal it into the ring buffer.
[0033] Figure 4 It is similar to Figure 3 This example illustrates a scenario where more than two privilege levels exist. In this example, the highest privilege level is gatekeeper 406, and there are two other privilege levels (intermediate privilege level 408 and lower privilege level 404). Intermediate privilege level 408 and lower privilege level 404 are isolated, except that the lower privilege level can communicate with the intermediate privilege level, and the intermediate privilege level can communicate with the highest privilege level. The highest privilege level 406 can communicate directly with the lowest privilege level 404, although whether it does so depends on the specific implementation (e.g., where in the kernel device transfer is performed). The lowest privilege level 404 cannot initiate communication with the highest privilege level 406.
[0034] Application code that potentially includes security vulnerabilities executes at lower privilege level 404 and intermediate privilege level 408. In the example, the application code includes the entire operating system and user space.
[0035] As previously mentioned, the highest privilege level 406 acts as a gatekeeper. It applies policies to discard, modify, or forward communications with the intermediate privilege level 408.
[0036] The highest privilege level 406 is configured to compute proofs to prove policies and application codes at intermediate privilege levels and the lowest privilege levels 404 and 408.
[0037] Figure 5 This is an example of using a software-implemented sandbox 504 as an isolated execution environment. Traditional software fault isolation techniques and / or language-based virtual machines are used to create the software-implemented sandbox 504. Application code is able to run within the software-implemented sandbox 504 with a combination of static and dynamic checks to ensure that application code within the sandbox cannot access any memory outside the software-implemented sandbox 504. The gatekeeper 506 is implemented using the privilege level provided by a single piece of hardware within the trusted execution environment. The gatekeeper intervenes in all communication with the sandbox 504 and discards, modifies, or forwards individual communications according to the policies described above.
[0038] In some examples, the gatekeeper 506 is responsible for setting up the sandbox 504 for the software implementation and launching application code such as the operating system.
[0039] The 506 gatekeeper provides a proof mechanism to verify the policies and application code implemented in the sandbox 504.
[0040] Figure 6 This is a schematic diagram of the isolation mechanism used in conjunction with the management program 600. The isolated execution environment 104 uses physical and / or software isolation for isolation and can only communicate with the gatekeeper execution environment 106. The gatekeeper execution environment intervenes in all communication with the isolated execution environment 104 according to the policies described above.
[0041] Gatekeeper 106 exposes paravirtualized (or emulated) devices that, from the perspective of application code in isolated execution environment 104, appear as storage devices with built-in encryption support and network interfaces with full Transport Layer Security (TLS) offload. From the perspective of application code running on internal execution environment 104, the application code reads and writes from one or more disks and accepts and initiates encrypted network connections. Gatekeeper 106 enforces encryption and access control policies. In the example, it rejects all inbound network connections that do not establish a Transport Layer Security (TLS) connection and presents a client certificate signed by an authorized party. Dependent party 602 communicates with hypervisor 600 using TLS. Gatekeeper 106 computes a proof citation that validates the policies and application code on isolated execution environment 104.
[0042] In the example, Figure 6 The arrangement in Figure 1 The gatekeeper is used across multiple compute nodes in a data center to allow enterprises to deploy services in the cloud, which is used only by the enterprise's employees and protected from attack by any other party. In this example, compute node 102 stores the service's code in an isolated execution environment (IDE). The gatekeeper only allows communication with the IDE if the communication is associated with an employee of the enterprise. If a third party (who is not an employee) attempts to exploit a vulnerability in the service code, the attack will be blocked because the gatekeeper only allows communication from employees.
[0043] Similarly, encryption with a policy and encryption key guaranteed by proof citation allows access to the storage service while making it impossible for application code in the internal execution environment 104 to violate encryption requirements.
[0044] Figure 6 The examples also illustrate some resistance to covert channels. For instance, when the gatekeeper 106 is responsible for constructing Transport Security Layer (TSL) packets, it is not possible to create a covert channel using padding within TSL blocks.
[0045] Figure 7 This is a flowchart of the method executed by the gatekeeper execution environment 106, such as... Figures 2 to 6This refers to any of the gatekeeper execution environments (referred to as the gatekeeper for simplicity). When a data center tenant wants to use data center resources to execute application code, they send a request to the gatekeeper to install the application code on isolated execution environment 104. The gatekeeper performs the installation by loading the code, in the same way it would do without the gatekeeper. For example, by creating a virtual machine and loading the kernel, or by loading the WebAssembly (trademark) program into a WebAssembly software fault isolation container. The request includes information about the policy to be installed at the gatekeeper, and installs the policy according to the data center tenant's request.
[0046] The gatekeeper computes one or more indices to validate policies and isolated execution environment 104 for application code. The gatekeeper computes indices using conventional methods such as cryptographic hashes, signatures, and certificates. The gatekeeper may also include additional support signatures and certificates provided by hardware and cloud providers. The indices are sent to data center tenants, such as… Figure 6 Dependency 602 or Figure 1 A-side 112 or B-side 114, and data center tenants can check the reports to ensure that the expected policies and application code are being used in the data center.
[0047] The isolated execution environment executes application code and reaches a point in execution where it must communicate with another entity to read data, write data, send requests, or for other reasons. The isolated execution environment sends communications, and the gatekeeper receives 706 communications because all communication with the isolated execution environment is handled by the gatekeeper. The gatekeeper inspects communications, such as when they are packet-based, by examining the packet headers.
[0048] The gatekeeper checks 708 to determine if communication should be dropped. The gatekeeper applies policies, such as by checking if the destination specified in the packet header is on a whitelist of destinations listed in the policy. If the destination is not on the whitelist, the gatekeeper drops the packet, and the packet is discarded 710.
[0049] If the communication is not dropped, the gatekeeper continues to check 712 whether the communication needs to be modified. In the example, the gatekeeper checks whether the communication has been encrypted using the encryption scheme specified in the policy. If not, the gatekeeper modifies 714 by appropriately encrypting the communication and then forwarding 716 to the destination specified in the header. If check 712 finds that the communication does not need to be modified, 716 is forwarded to the destination specified in the header.
[0050] Check 718 is performed to see if the application execution has ended, such as by checking if the time interval has expired or if an event has occurred. Figure 7The method specifies the number of iterations. If execution is to continue, then... Figure 7 The operation of the method repeats from operation 706. If the application execution ends, the gatekeeper waits and eventually receives the new application and / or new policy at operation 720. The gatekeeper continues to install the new application at operation 700, and... Figure 7 The method is repeated.
[0051] In this way, Figure 7 This method enables efficient and secure use of data center resources to execute application code that may contain security vulnerabilities.
[0052] As an alternative or supplement to other examples described herein, examples include any combination of the following:
[0053] Clause A. A computer system comprising:
[0054] At least two execution environments;
[0055] A separation mechanism that implements separation between at least two execution environments, such that one execution environment acts as a gatekeeper to all communications of the other execution environments;
[0056] A proof mechanism that enables the gatekeeper to prove the properties of at least two execution environments;
[0057] The first execution environment in the execution environment can run application-specific code that contains security vulnerabilities.
[0058] The gatekeeper is configured to intervene in all communications to and from the first execution environment by forwarding, modifying, or discarding individual communications in the communication according to a policy, thereby enforcing input / output policies on the first execution environment.
[0059] This enables outgoing communications from the first execution environment to be sent out of the computer system according to a policy, and incoming communications from the first execution environment to be accepted according to a policy; and wherein the gatekeeper provides evidence of both application-specific code and policy.
[0060] Clause B. The computer system described in Clause A, wherein the separation mechanism is implemented using hardware by deploying a gatekeeper on a processor and deploying other execution environments on separate processors and connecting the processors via interrupt lines.
[0061] Clause C. A computer system as described in Clause A or Clause B, wherein other execution environments are deployed on a secure processor.
[0062] Clause D. A computer system pursuant to any of the foregoing clauses, wherein the processor deploying the gatekeeper is capable of accessing communications outside the computer system.
[0063] Clause E. A computer system pursuant to any of the preceding clauses, wherein the separation mechanism is implemented using multiple privilege levels, and wherein a gatekeeper is deployed at the highest privilege level among the privilege levels.
[0064] Clause F. A computer system pursuant to Clause E includes at least one communication channel between privilege levels.
[0065] Clause G. A computer system as described in Clause E includes a hypervisor, wherein the hypervisor cannot alter the control or data flow in the privilege level of application-specific code without a gatekeeper.
[0066] Clause H. A computer system pursuant to Clause E includes a hypervisor, wherein a gatekeeper is configured to compute a proof citation that guarantees that memory allocated by a lower privilege level cannot be accessed by the hypervisor, and that neither the hypervisor nor application-specific code can modify the memory allocated by the lower privilege level.
[0067] Clause I. A computer system pursuant to Clause A, wherein the separation mechanism is implemented using more than two privilege levels, and wherein the gatekeeper is deployed at the highest privilege level, and application-specific code is deployed at other privilege levels.
[0068] Clause J. Computer systems pursuant to Clause A, wherein the separation mechanism is implemented using a software-implemented sandbox as an execution environment for running application-specific code.
[0069] Clause K. A computer system pursuant to Clause A, wherein the gatekeeper exposes at least one paravirtualized device, which, from the perspective of the execution environment running application-specific code, behaves as a storage device with built-in encryption support and a network interface with transport layer security offload.
[0070] Clause L. Computer systems described in any of the foregoing clauses, wherein the gatekeeper uses policies to implement both encryption and access control.
[0071] Clause M. Computer systems pursuant to any of the foregoing clauses, wherein policy and / or application-specific code can be replaced by new policy and / or application-specific code.
[0072] Clause N. A method implemented by a computer, executed by a gatekeeper as part of a computer system, the method comprising:
[0073] By intervening in all communications to and from the first execution environment according to a policy of forwarding, modifying or discarding individual communications in the communications, an input / output policy is implemented on the first execution environment, wherein the implementation is accomplished using the separation mechanism of the computer system;
[0074] This causes outgoing communications from the first execution environment to be sent out of the computer system according to the policy, and incoming communications from the first execution environment to be received according to the policy; and
[0075] Using the proof mechanism of a computer system, evidence is computed for both application-specific code and policy.
[0076] Article O. The methods described under Article N include sending evidence of proof to the entity. In this manner, such as Figure 1 The entity, either Party A or Party B, can know that a specific strategy is being used and that application-specific code is being used.
[0077] Clause P. The methods described under Clause N or O include replacing policies with new ones and replacing application-specific code.
[0078] Clause Q. The method according to any one of Clauses N to P includes exposing at least one semi-virtualized device, which, from the perspective of the execution environment running application-specific code, appears as a storage device with built-in cryptographic support and a network interface with transport layer security offloading.
[0079] Clause R. The method pursuant to any one of Clauses N to Q includes deploying a gatekeeper on a processor and deploying a first execution environment on an isolated processor separated from the gatekeeper.
[0080] Clause S. The method described under Clause R includes connecting a gatekeeper to a security processor.
[0081] Clause T. One or more device-readable media having device-executable instructions, which, when executed by a computer system, instruct the computer system to perform operations including:
[0082] By intervening in all communications to and from the first execution environment according to a policy of forwarding, modifying or discarding individual communications in the communications, an input / output policy is implemented on the first execution environment, wherein the implementation is accomplished using the separation mechanism of the computer system;
[0083] According to the policy, outgoing communications from the first execution environment are sent out of the computer system, and incoming communications from the first execution environment are received according to the policy; and
[0084] Using the proof mechanism of a computer system, evidence is computed for both application-specific code and strategy.
[0085] As used herein, the term 'computer' or 'computation-based device' refers to any device that has processing power that enables it to execute instructions. Those skilled in the art will recognize that such processing power is incorporated into many different devices, and therefore the terms 'computer' and 'computation-based device' each include personal computers (PCs), servers, mobile phones (including smartphones), tablet computers, set-top boxes, media players, game consoles, personal digital assistants, wearable computers, and many other devices.
[0086] In some examples, the methods described herein are executed by software in a machine-readable form on a tangible storage medium, such as a computer program including computer program code components, adapted to perform all operations of one or more methods described herein when the program is run on a computer and the computer program can be implemented on a computer-readable medium. The software is adapted to execute on a parallel or serial processor such that the method operations can be performed in any suitable order or simultaneously.
[0087] This document acknowledges that software is a valuable, separately tradable commodity. It is intended to include software that runs or is controlled on “dumb” or standard hardware to perform desired functions. It is also intended to include software that “describes” or defines hardware configurations, such as HDL (Hardware Description Language) software, used for designing silicon chips or configuring general-purpose programmable chips to perform desired functions.
[0088] Those skilled in the art will recognize that storage devices used to store program instructions may optionally be distributed across a network. For example, a remote computer may store examples of processes described as software. A local or terminal computer may access the remote computer and download part or all of the software to run the program. Alternatively, a local computer may download multiple software programs as needed, or execute some software instructions at a local terminal and others at a remote computer (or computer network). Those skilled in the art will also recognize that, by utilizing conventional techniques known to them, all or part of the software instructions can be executed by dedicated circuitry such as digital signal processors (DSPs), programmable logic arrays, etc.
[0089] Any range or device values given herein may be extended or changed without loss of the desired effect, as will be apparent to those skilled in the art.
[0090] Although the subject matter has been described in language specific to structural features and / or methodological actions, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or actions described above. Rather, the specific features and actions described above are disclosed as exemplary forms for implementing the claims.
[0091] It should be understood that the above benefits and advantages may relate to one embodiment or several embodiments. These embodiments are not limited to embodiments that solve any or all of the stated problems or have any or all of the stated benefits and advantages. It should also be understood that a reference to 'one' object refers to one or more of those objects.
[0092] The operations of the methods described herein can be performed in any suitable order, or simultaneously where appropriate. Furthermore, individual boxes can be removed from any method without departing from the scope of the subject matter described herein. Aspects of any of the examples above can be combined with aspects of any other example described to form additional examples without sacrificing the desired effect.
[0093] As used herein, the term 'including' means including the identified method box or element, but such box or element does not include an exclusive list, and a method or apparatus may include additional boxes or elements.
[0094] It should be understood that the above description is given by way of example only, and various modifications can be made by those skilled in the art. The foregoing specification, examples, and data provide a complete description of the structure and use of exemplary embodiments. Although various embodiments have been described above with a degree of specificity or with reference to one or more individual embodiments, many changes can be made to the disclosed embodiments by those skilled in the art without departing from the scope of this specification.
Claims
1. A computer system, comprising: At least two execution environments; The separation mechanism is configured as follows: Implement the separation between the at least two execution environments, and based on at least the implementation, such that one of the at least two execution environments is a gatekeeper that interferes with all communications of the other execution environments; A proof mechanism that enables the gatekeeper to prove the characteristics of the at least two execution environments; The first execution environment in the at least two execution environments can run application code that contains security vulnerabilities; The gatekeeper is configured to intervene in all communications to and from the first execution environment among the at least two execution environments by forwarding, modifying, or discarding individual communications in the communications according to an input / output policy, thereby implementing the policy on the first execution environment such that, according to the policy, outgoing communications from the first execution environment among the at least two execution environments are sent out of the computer system, and incoming communications from the first execution environment among the at least two execution environments are accepted according to the policy; and The gatekeeper provides evidence of proof for both the application code and the policy, wherein the evidence generated by the proof mechanism includes either a cryptographic signature or a certificate, thereby restricting which entities the application code can communicate with.
2. The computer system of claim 1, wherein the separation mechanism is implemented in hardware by deploying the gatekeeper on a processor and deploying the other execution environment on separate processors and connecting the processors via interrupt lines.
3. The computer system of claim 1, wherein the additional execution environment is deployed on a secure processor.
4. The computer system of claim 2, wherein the processor deploying the gatekeeper is capable of accessing communications outside the computer system.
5. The computer system of claim 1, wherein the separation mechanism is implemented using multiple privilege levels, and wherein the gatekeeper is deployed at the highest privilege level among the privilege levels.
6. The computer system of claim 5, comprising at least one communication channel between the privilege levels.
7. The computer system of claim 5, comprising a management program, wherein the management program cannot alter the control or data flow at the privilege level maintaining the application code without via the gatekeeper.
8. The computer system of claim 5, comprising a management program, wherein the gatekeeper is configured to compute a proof citation, the proof citation ensuring that memory allocated by a lower privilege level cannot be accessed by the management program, and that neither the management program nor the application code can modify the memory allocated by the lower privilege level.
9. The computer system of claim 1, wherein the separation mechanism is implemented using more than two privilege levels, wherein the gatekeeper is deployed at the highest privilege level among the privilege levels, and the application code is deployed at other privilege levels.
10. The computer system of claim 1, wherein the separation mechanism is implemented using a software-implemented sandbox as the execution environment for running the application code.
11. The computer system of claim 1, wherein the gatekeeper exposes at least one semi-virtualized device, which, from the perspective of the execution environment running the application code, manifests as a storage device with built-in encryption support and a network interface with transport layer security offload.
12. The computer system of claim 1, wherein the gatekeeper uses the policy to implement both encryption and access control.
13. The computer system of claim 1, wherein the policy and / or the application code can be replaced by a new policy and / or application code.
14. A method implemented by a computer, executed by a gatekeeper as part of a computer system, the method comprising: By intervening in all communications to and from the first execution environment according to a policy of forwarding, modifying or discarding individual communications in the communication, an input / output policy is implemented on the first execution environment. According to the strategy, outgoing communications from the first execution environment are sent out of the computer system, and incoming communications from the first execution environment are accepted according to the strategy. as well as Using the proof mechanism of the computer system, evidence is computed to prove both the application code and the policy, wherein the evidence generated by the proof mechanism includes either a cryptographic signature or a certificate, thereby restricting which entities the application code can communicate with.
15. The method of claim 14, comprising sending evidence of the proof to the entity.
16. The method of claim 14, comprising replacing the strategy with a new strategy and replacing the application code.
17. The method of claim 14, further comprising exposing at least one semi-virtualized device, said at least one semi-virtualized device, from the perspective of the execution environment running the application code, manifesting as a storage device with built-in encryption support and a network interface with transport layer security offload.
18. The method of claim 14, comprising deploying the gatekeeper on a processor and deploying the first execution environment on an isolated processor separate from the gatekeeper.
19. The method of claim 18, further comprising connecting the gatekeeper to a security processor.
20. One or more computer-readable hardware devices, the one or more computer-readable hardware devices comprising a device-readable medium having device-executable instructions, which, when executed by a computer system, instruct the computing system to perform the following operations: By intervening in all communications to and from the first execution environment according to a policy of forwarding, modifying or discarding individual communications in the communication, an input / output policy is implemented on the first execution environment. According to the strategy, outgoing communications from the first execution environment are sent out of the computer system, and incoming communications from the first execution environment are accepted according to the strategy. as well as Using the proof mechanism of the computer system, evidence is computed to prove both the application code and the policy, wherein the evidence generated by the proof mechanism includes either a cryptographic signature or a certificate, thereby restricting which entities the application code can communicate with.
Citation Information
Patent Citations
Hypervisor-based attestation of virtual environments
EP3217310A1
Systems and methods for preventing data loss over virtualized networks
US9300693B1
Method and device for data access control
WO2017020716A1
Preventing data loss over network channels by dynamically monitoring file system operations of a process
WO2017058842A1