On-cloud confidential and good lambda / function system

By creating and using a trusted execution environment in cloud computing, the problems of user trust and data security are solved, efficient and secure execution of user functions are achieved, and the credibility and user experience of cloud services are enhanced.

CN119698593APending Publication Date: 2025-03-25HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280098992.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-09-01
Publication Date
2025-03-25

AI Technical Summary

Technical Problem

Existing cloud computing technology has shortcomings in supporting user trust and the need for confidentiality, integrity, isolation and freshness, especially in the execution environment of user functions.

Method used

By creating a first trusted execution environment for proxy services and a second trusted execution environment for user functions, and receiving user functions and input data through a secure gateway, verifying the integrity and freshness of the input data using the proxy, and finally running the user functions in the second trusted execution environment.

Benefits of technology

It realizes providing a trusted execution environment on the cloud, ensuring the confidentiality, integrity and freshness of user functions, enhancing users' trust in cloud services, and reducing the latency of distributed services.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119698593A_ABST
    Figure CN119698593A_ABST
Patent Text Reader

Abstract

A method and system is disclosed for establishing a secure and confidential layer stack for computing cloud services (e.g., Function as a Service (FaaS)) that require a runtime environment using a trusted execution environment available in a modern CPU. The cloud service enables users and developers to focus on application logic, with less attention to infrastructure, and only needs to pay for computing resources used by their functions. As functions implemented on the cloud generally process sensitive data, security and privacy are most important. According to the method, the problem is solved, the confidentiality, integrity and freshness of data and codes of user functions are ensured, and the user can verify the integrity of function calculation, so that the trust to the cloud, particularly the trust to FaaS customers, is further enhanced.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Some embodiments described in the present invention relate to cloud computing, and more particularly but not exclusively, to a method for executing a lambda function on a trusted execution environment on the cloud that can be verified by a chip manufacturer.

[0002] The computing needs of many organizations and power end users are often difficult to meet using local monolithic servers, so the practice of using a network of remote servers accessed via the Internet to store, manage, and process data (i.e., cloud computing) has become common in many applications. Cloud computing enables on-demand computer system resources, such as data storage, specialized processing, processing power, etc., while delegating system management to trusted service providers. Function-as-a-Service (FaaS or FAAS) platforms enable developers to use pre-prepared execution environments and have become ubiquitous in the cloud ecosystem since their introduction in the mid-2010s.

[0003] Existing technical approaches used by cloud providers can support efficient resource utilization, for example by packing users on the same server and isolating users' lambda computations using sandboxes, however, user trust is reputation-based and has limited support for confidentiality credentials that are verifiable from the user's perspective. Summary of the invention

[0004] It is an object of the present invention to describe a system and method for establishing a trusted execution environment using a trusted execution environment for user functions and proxy services for integrity and freshness of data and code.

[0005] The above and other objects are achieved by the features of the independent claims. Other implementations are apparent from the dependent claims, the description and the drawings.

[0006] According to an aspect of some embodiments of the present invention, there is provided a method for establishing a trusted execution environment using at least one processor, a memory and a network interface, wherein the method comprises:

[0007] Creating a first trusted execution environment for the proxy service and a second trusted execution environment for the user function;

[0008] providing a secure gateway for remotely accessing the first trusted execution environment through the network interface;

[0009] receiving, via the security gateway, from a user a user function and at least one input for the user function;

[0010] verifying the integrity and freshness of the at least one input using the agent;

[0011] The user function is executed on the at least one input using a runtime environment on the second trusted execution environment.

[0012] According to aspects of some embodiments of the present invention, one or more computer program products are provided, comprising instructions for establishing a trusted execution environment, wherein when the instructions are executed by one or more processors of a computing system, the computing system is caused to perform the following operations:

[0013] Creating a first trusted execution environment for the proxy service and a second trusted execution environment for the user function;

[0014] providing a secure gateway for remotely accessing the first trusted execution environment through the network interface;

[0015] receiving, via the security gateway, from a user a user function and at least one input for the user function;

[0016] verifying the integrity and freshness of the at least one input using the agent;

[0017] The user function is executed on the at least one input using a runtime environment on the second trusted execution environment.

[0018] According to aspects of some embodiments of the present invention, there is provided a system comprising at least one processor, a memory and a network interface, wherein the at least one processor is configured to execute instructions to perform the following operations:

[0019] Creating a first trusted execution environment for the proxy service and a second trusted execution environment for the user function;

[0020] providing a secure gateway for remotely accessing the first trusted execution environment through the network interface;

[0021] receiving, via the security gateway, from a user a user function and at least one input for the user function;

[0022] verifying the integrity and freshness of the at least one input using the agent;

[0023] The user function is executed on the at least one input using a runtime environment on the second trusted execution environment.

[0024] Optionally, the proxy has a stateless architecture.

[0025] Optionally, the first trusted execution environment and the second trusted execution environment are provided by hardware of the at least one processor, and the at least one processor is further configured to provide certification data to the client device through the network interface.

[0026] Optionally, the at least one processor is further configured to provide certification data to a client device via the network interface.

[0027] Optionally, a key management system on a third trusted execution environment is further included, and the key management system is used to communicate with the agent, the user function and the user using transport layer security.

[0028] Optionally, the at least one processor is further configured to provide at least one encryption key to the user function in response to remote attestation.

[0029] Optionally, the at least one processor is further configured to automatically perform remote attestation by verifying the integrity of the user function.

[0030] Optionally, the at least one processor is further configured to return output to an end user via a secure connection.

[0031] Optionally, the at least one processor is further configured to encrypt at least one output of the user function and place the at least one output into a storage backend.

[0032] Other systems, methods, features and advantages of the present invention will be or become apparent to those skilled in the art after studying the following drawings and detailed description. It is intended that all such other systems, methods, features and advantages be included in this description, within the scope of the present invention, and protected by the accompanying claims.

[0033] Unless otherwise defined, all technical and / or scientific terms used herein have the same meaning as those known to those of ordinary skill in the field described in the embodiments. Although methods and materials similar or equivalent to the methods and materials described herein can be used in the practice or testing of the embodiments, exemplary methods and / or materials are described below. In the event of a conflict, the patent specification including the definition shall prevail. In addition, these materials, methods and examples are only illustrative and not necessarily restrictive. BRIEF DESCRIPTION OF THE DRAWINGS

[0034] Some embodiments are described herein by way of example only in conjunction with the accompanying drawings. The following detailed descriptions with specific reference to the accompanying drawings emphasize that the details shown are only examples and are for illustrative purposes only in discussing the embodiments. Thus, it will be apparent to those skilled in the art how to practice the embodiments based on the accompanying drawings.

[0035] In the attached picture:

[0036] Figure 1 A schematic diagram of an exemplary system for a trusted cloud function service provided for some embodiments of the present invention;

[0037] Figure 2A schematic block diagram of exemplary basic software of a system for trusted cloud function services provided for some embodiments of the present invention;

[0038] Figure 3 A flowchart schematically showing an optional operation flow for a trusted cloud function service provided for some embodiments of the present invention;

[0039] Figure 4 A schematic block diagram of an exemplary processor vendor provided trusted execution environment for some embodiments of the present invention;

[0040] Figure 5 A schematic block diagram of an exemplary processor vendor certification system with an exemplary associated operational flow provided for some embodiments of the present invention;

[0041] Figure 6 A schematic block diagram of an exemplary cloud setup of a system for trusted cloud function services provided for some embodiments of the present invention;

[0042] Figure 7 Another schematic block diagram of an exemplary cloud setup of a system for trusted cloud function services provided for some embodiments of the present invention;

[0043] Figure 8 Additional schematic block diagrams of exemplary cloud setups of systems for trusted cloud function services provided for some embodiments of the present invention;

[0044] Fig. 9 A supplementary schematic block diagram of an exemplary cloud setup of a system for trusted cloud function services provided for some embodiments of the present invention;

[0045] Fig.10 Another additional schematic block diagram of an exemplary cloud setup of a system for trusted cloud function services provided for some embodiments of the present invention. DETAILED DESCRIPTION

[0046] Some embodiments described in the present invention relate to cloud computing, and more particularly but not exclusively, to a method for executing a lambda function on a trusted execution environment on the cloud that can be verified by a chip manufacturer.

[0047] Cloud application models such as data flow, GUI, game, stock trading, system control, etc. may be subject to various hacker attacks and impose security requirements on related function codes, data, and execution environment.

[0048] Customers may choose function as a service (FaaS) platforms based on the provider’s reputation, which poses a challenge to new or smaller competitors, as well as competitors that offer global services where eavesdropping is a concern.

[0049] Customers may be reluctant to trust cloud providers and administrators with root access, which may allow attacks when having privileged access rights (such as sudo) and access to the entire software stack, including the operating system (OS). The present invention may be accompanied by measures to mitigate attacks other than those mentioned above, such as denial of service (DoS) attacks, side channel attacks, microarchitectural attacks, etc.

[0050] When executing lambda / function user code in the cloud, customers may be concerned about security, including confidentiality, integrity, isolation, and secure execution and freshness. Freshness can be protected using a simple nonce-based protocol or using a trusted counter.

[0051] Some implementations of the proposed framework run user code in a sandbox for transparency, providing application programmers with unmodified programming APIs and Get / Select interfaces, REST APIs, etc.

[0052] Some implementations of the present invention may deploy user functions in a sandbox such as a virtual machine (VM), and enable the user functions in the sandbox to run in a trusted execution environment (TEE).

[0053] Some implementations of the present invention may transparently and automatically perform remote attestation, for example, to verify the integrity of user functions and provide secret encryption and / or decryption keys to user functions running within a TEE.

[0054] Some implementations of the present invention may also verify the integrity and freshness of input data.

[0055] Some implementations of the present invention may perform user function computations within the TEE and return the output to the end user via a secure connection and / or encrypt the output and place it in memory.

[0056] Executing user software, such as Lambda functions, within a TEE and sandbox ensures the confidentiality and integrity of user software (including sensitive user data), preventing interference with software execution, including from attackers with privileged access.

[0057] Providing an attestation mechanism allows users to ensure that their lambda functions are running within the TEE. Remote attestation mechanisms help users build trust in cloud provider infrastructure. Transparent and automatic attestation helps users deploy confidential scalable services. In addition, the remote attestation mechanism provided by the central processing unit (CPU) vendor only attests the FaaS runtime within the TEE, while user code may be vulnerable to man-in-the-middle and other attacks that may be supported by root access.

[0058] Some implementations of the present invention may provide mechanisms to ensure the integrity and freshness of input data and code from a file system or storage system, such as an agent-based approach to obtaining data from a storage system. The agent may ensure the integrity and freshness of the input data and runs within the TEE, so it can be proven by the user.

[0059] Thus, the agent can have a stateless architecture, be scalable in a distributed setting, and provide a scalable key management system (KMS). The KMS can also run inside the TEE, and users can prove the KMS before uploading secrets (such as certificates, encryption or decryption keys) for their software through the transport layer service (TLS). The KMS can be integrated with the existing KMS of the cloud provider and support backup and update mechanisms for fault tolerance.

[0060] Advantages for cloud service providers can include enhancing the trust of customers (especially foreign customers) by providing customers with an apparently confidential FaaS with the confidentiality, integrity, and freshness of a cloud storage service.

[0061] The benefits for cloud users can include the ability to deploy confidential, complex, and scalable services on the cloud with high security guarantees and low overhead, as well as reducing the latency of distributed services through automatic remote attestation and key management systems. In addition, not only the confidentiality and integrity of datasets can be protected, but also the freshness of datasets, while reducing the cost of confidential computing services.

[0062] Before explaining at least one embodiment in detail, it should be understood that the embodiments are not necessarily limited to the details of the construction and arrangement of the components and / or methods described in the following description and / or drawings and / or examples. The implementations described herein support other embodiments or support being practiced or executed in various ways.

[0063] The embodiments may be a system, method and / or computer program product. The computer program product may include one or more computer-readable storage media having computer-readable program instructions that cause a processor to perform various aspects of the embodiments.

[0064] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium in the corresponding computing / processing device.

[0065] The computer-readable program instructions for performing the operations in the embodiment can be assembler instructions, instruction set architecture (instruction-set-architecture, ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages. These programming languages ​​include object-oriented programming languages, such as Smalltalk, C++, etc., and traditional procedural programming languages, such as "C" programming language or similar programming languages. The computer-readable program instructions can be executed completely on the user's computer, partially on the user's computer, executed as an independent software package, partially on the user's computer and partially on a remote computer, or completely on a remote computer or server. In the last scenario, the remote computer can be connected to the user's computer through any type of network, and any type of network includes a local area network (localarea network, LAN) or a wide area network (wide area network, WAN); or connected to an external computer (for example, by using the Internet of an Internet service provider). In some embodiments, an electronic circuit including a programmable logic circuit, a field-programmable gate array (FPGA) or a programmable logic array (PLA), etc. can execute the computer-readable program instructions to customize the electronic circuit by using the state information of the computer-readable program instructions, thereby performing various aspects of the present invention.

[0066] Various aspects of the embodiments are described herein in conjunction with flowchart illustrations and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present invention. It should be understood that each box of the flowchart and / or block diagram and the combination of boxes in the flowchart illustration and / or block diagram can be implemented by computer-readable program instructions.

[0067] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine, so that the instructions are executed by the processor of the computer or other programmable instruction execution device, creating a mechanism for implementing the functions / actions specified in the flowchart and / or block diagram or block. These computer-readable program instructions can also be stored in a computer-readable storage medium, which can instruct a computer, a programmable data processing device, and / or other equipment to work in a specific manner, so that the computer-readable storage medium having the instructions stored therein includes an article of manufacture, and the article of manufacture includes instructions for implementing various aspects of the functions / actions specified in the flowchart and / or block diagram steps.

[0068] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, so that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / actions specified in the flowchart and / or block diagram steps.

[0069] The flow chart and block diagram in the figure show the architecture, function and operation of the possible implementation of the system, method and computer program product provided by various embodiments. In this regard, each square block in the flow chart or block diagram can represent the part of a module, section or instruction, including one or more executable instructions for realizing a specified logical function. In some alternative implementations, the function described in the square block may not be performed in the order described in the figure. For example, in fact, the two square blocks shown in succession can be performed almost simultaneously, or sometimes, the square blocks can be performed in the opposite order, determined according to the functions involved. It should also be noted that each square block in the block diagram and / or flow chart and the combination of square blocks in the block diagram and / or flow chart can be performed by a system based on special hardware, which performs a specific function or action, or performs a combination of special hardware and computer instructions.

[0070] Now referring to the accompanying drawings, Figure 1 Schematic diagram of an exemplary system for providing a trusted cloud function service for some embodiments of the present invention. The exemplary computer system 100 can be used to perform 300 execution processes for providing a trusted cloud function service. Further details about these exemplary processes are as follows Figure 3 shown.

[0071] Various aspects of the present invention are described by narrative text, flow charts, block diagrams of computer systems, and / or block diagrams of machine logic, included in computer program product (CPP) embodiments. For any flow chart, depending on the technology involved, the operations may be in a different order than shown in a given flow chart. For example, also depending on the technology involved, two operations shown in consecutive flow chart blocks may be performed in reverse order, as a single integrated step, simultaneously, or in a manner that at least partially overlaps in time.

[0072] Computer program product embodiments ("CPP embodiments" or "CPP") are terms used in this disclosure to describe any one or more storage media (also referred to as "media") collectively included in a collection of one or more storage devices that collectively include machine-readable code corresponding to instructions and / or data for performing the computer operations specified in a given CPP claim. A "storage device" is any tangible device that can hold and store instructions for use by a computer processor. Without limitation, a computer-readable storage medium can be an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these media include: floppy disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanical encoding device with instructions recorded, such as punched cards or raised structures in grooves, and any suitable combination of the foregoing. Computer-readable storage medium, as the term is used in this disclosure, should not be interpreted as storage in the form of transient signals per se, such as propagating electromagnetic signals, light pulses through fiber optic cables, electrical signals communicated through wires, and / or other transmission media. As will be understood by those skilled in the art, during normal operation of the storage device, such as during access, sharding, or garbage collection, data will typically be moved at some occasional point in time, but this does not make the storage device temporary because the data is not temporary when stored.

[0073] The computing environment 100 includes an example of an execution environment for executing at least some of the computer codes involved in the disclosed method, such as a system for a trusted cloud function service. In addition to block 200, the computing environment 100 includes, for example, a computer 102, a wide area network (WAN) 108, an end user device (EUD) 132, a remote server 104, a public cloud 150, and a private cloud 106. In this embodiment, the computer 102 includes a processor group 110 (including a processing circuit 120 and a cache 122), a communication structure 160, a volatile memory 112, a permanent memory 116 (including an operating system 122 and block 200, as described above), a peripheral device group 114 (including a user interface (UI), a device group 126, a memory 124, and an Internet of Things (IoT) sensor group 128) and a network module 118. The remote server 104 includes a remote database 130. The public cloud 150 includes a gateway 140 , a cloud orchestration module 146 , a host physical machine group 142 , a virtual machine group 148 , and a container group 144 .

[0074] Computer 102 may take the form of a desktop computer, a laptop computer, a tablet computer, a smart phone, a smart watch or other wearable computer, a mainframe computer, a quantum computer, or any other form of computer or mobile device now known or developed in the future that is capable of running programs, accessing a network, or querying a database (e.g., remote database 130). As is well known in the art of computer technology, and depending on the technology, the performance of computer-implemented methods may be distributed among multiple computers and / or among multiple locations. On the other hand, in this demonstration of computing environment 100, the detailed discussion focuses on a single computer, particularly computer 102, to keep the demonstration as simple as possible. Computer 102 may be located in the cloud, such as Figure 1 As shown, however, computer 102 may also be located outside the cloud. On the other hand, computer 102 need not be in the cloud, except to the extent that it can be positively indicated.

[0075] Processor group 110 includes one or more computer processors of any type known now or to be developed in the future. For example, the processor group may include one or more of a central processing unit (CPU), a microcontroller, a parallel processor, a digital signal processing (DSP) unit supporting multiple data, a graphics processing unit (GPU) module, etc., as well as an optical processor, a quantum processor, and a processing unit based on a technology that may be developed in the future. Processing circuit 120 can be distributed on multiple packages, such as multiple coordinated integrated circuit chips. Processing circuit 120 can implement multiple processor threads and / or multiple processor cores. Cache 122 is a memory located in the processor chip package and is generally used for data or code, which should be available for fast access to threads or cores running on processor group 110. Cache memory can be organized into multiple levels. Processor group 110 can be designed to process quantum bits and perform quantum calculations.

[0076] Computer readable program instructions are typically loaded onto the computer 102 to cause the processor group 110 of the computer 102 to perform a series of operating steps to implement a computer-implemented method, such that the instructions so executed will instantiate the method specified in the flowchart and / or the narrative description of the computer-implemented method (collectively referred to as the "disclosed method") included in this document. These computer readable program instructions are stored in various types of computer readable storage media, such as cache 122 and other storage media discussed below. The program instructions and associated data are accessed by the processor group 110 to control and direct the execution of the disclosed method. In the computing environment 100, at least some of the instructions for executing the disclosed method can be stored in a persistent memory 116 in the block 200.

[0077] Communications fabric 160 is the signaling pathways that allow the various components of computer 102 to communicate with each other. Typically, such an architecture is comprised of switches and conductive pathways, such as those that make up a bus, bridges, physical input / output ports, etc. Other types of signal communication pathways may be used, such as fiber optic communication pathways and / or wireless communication pathways.

[0078] The volatile memory 112 is any type of volatile memory now known or to be developed in the future. Examples include dynamic type random access memory (RAM) or static type RAM. Typically, volatile memory is characterized by random access, but this is not required unless explicitly stated. In the computer 102, the volatile memory 112 is located in a single package and is internal to the computer 102, but, alternatively or additionally, the volatile memory can be distributed over multiple packages and / or located externally relative to the computer 102.

[0079] Permanent memory 116 is any form of non-volatile memory for computers currently known or to be developed in the future. The non-volatility of this memory means that the stored data is maintained regardless of whether power is supplied to computer 102 and / or directly supplied to permanent memory 116. Permanent memory 116 can be a read-only memory (ROM), but usually at least a portion of permanent memory allows writing data, deleting data, and rewriting data. Some common forms of permanent memory include disks and solid-state storage devices. Operating system 122 can take several forms, such as various known proprietary operating systems or operating systems of open source portable operating system interface types using a kernel. The code included in block 200 typically includes at least some computer code involved in executing the disclosed method.

[0080] The peripheral device group 114 includes a peripheral device group of the computer 102. The data communication connection between the peripheral device and other components of the computer 102 can be implemented in various ways, such as a Bluetooth connection, a Near-Field Communication (NFC) connection, a connection formed by a cable (e.g., a universal serial bus (USB) type cable), a plug-in connection (e.g., a secure digital (SD) card), a connection through a local area network communication network, or even a connection through a wide area network such as the Internet. In various embodiments, the UI device group 126 may include components such as a display screen, a speaker, a microphone, a wearable device (e.g., goggles and a smart watch), a keyboard, a mouse, a printer, a touchpad, a game controller, and a tactile device. The memory 124 is an external memory, such as an external hard drive, or a pluggable memory, such as an SD card. The memory 124 can be permanent and / or volatile. In some embodiments, the memory 124 can take the form of a quantum computing storage device for storing data in the form of quantum bits. In embodiments where computer 102 is required to have a large amount of storage (e.g., where computer 102 locally stores and manages a large database), the storage may be provided by a peripheral storage device designed to store very large amounts of data, such as a storage area network (SAN) shared by multiple geographically distributed computers. IoT sensor group 128 consists of sensors that can be used in IoT applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.

[0081] The network module 118 is a collection of computer software, hardware, and firmware that allows the computer 102 to communicate with other computers via the WAN 108. The network module 118 may include hardware, such as a modem or a Wi-Fi signal transceiver, software for grouping and / or degrouping data for communication network transmission, and / or Web browser software for transmitting data on the Internet. In some embodiments, the network control function and the network forwarding function of the network module 118 are executed on the same physical hardware device. In other embodiments (e.g., embodiments utilizing software-defined networking (SDN)), the control function and the forwarding function of the network module 118 are executed on physically separate devices, so that the control function manages several different network hardware devices. Computer-readable program instructions for executing the described method can typically be downloaded to the computer 102 from an external computer or an external storage device via a network adapter card or a network interface included in the network module 118.

[0082] WAN 108 is any wide area network (e.g., the Internet) capable of transmitting computer data over non-local distances by any technology for transmitting computer data now known or to be developed in the future. In some embodiments, the wide area network may be replaced and / or supplemented by a local area network (LAN), which is designed to transmit data between devices located in a local area, such as a Wi-Fi network. WANs and / or LANs typically include computer hardware such as copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and edge servers.

[0083] An end user device (EUD) 132 is any computer system used and controlled by an end user (e.g., a customer of an enterprise operating computer 102), and may take any of the forms discussed above in connection with computer 102. EUD 132 typically receives helpful and useful data from the operation of computer 102. For example, in the hypothetical case where computer 102 is designed to provide recommendations to an end user, the recommendations would typically be transmitted from network module 118 of computer 102 to EUD 132 via WAN 108. In this manner, EUD 132 may display or otherwise present the recommendations to the end user. In some embodiments, EUD 132 may be a client device, such as a thin client, a heavy client, a mainframe computer, a desktop computer, etc.

[0084] Remote server 104 is any computer system that provides at least some data and / or functionality to computer 102. Remote server 104 may be controlled and used by the same entity that operates computer 102. Remote server 104 represents a machine that collects and stores helpful and useful data for use by other computers, such as computer 102. For example, in the hypothetical case where computer 102 is designed and programmed to provide recommendations based on historical data, then this historical data may be provided to computer 102 from remote database 130 of remote server 104.

[0085] Cloud services 150 are a group of computer systems available to multiple entities, providing on-demand availability of computer system resources and / or other computer capabilities, particularly data storage (cloud storage) and computing capabilities, without direct active management by users. Cloud computing typically uses resource sharing to achieve consistency and economies of scale. Direct and active management of the computing resources of the public cloud 150 is performed by computer hardware and / or software of the cloud coordination module 146. The computing resources provided by the public cloud 150 are typically implemented by virtual computing environments running on various computers that constitute the host physical machine group 142, which is a full set of physical computers in and / or available for the public cloud 150. Virtual computing environments (VCEs) typically take the form of virtual machines from the virtual machine group 148 and / or containers from the container group 144. It should be understood that these VCEs can be stored as images and can be transferred between various physical machine hosts as images or after VCE instantiation. Cloud orchestration module 146 manages the transfer and storage of images, deploys new instantiations of VCEs, and manages active instantiations of VCE deployments. Gateway 140 is a collection of computer software, hardware, and firmware that allows public cloud 150 to communicate over WAN 108 .

[0086] Now some further explanation about virtualized computing environments (VCEs) will be provided. A VCE can be stored as an "image". A new active instance of a VCE can be instantiated from an image. Two common types of VCEs are virtual machines and containers. Containers are VCEs that use operating system-level virtualization. This refers to an operating system feature where the kernel allows the existence of multiple isolated user space instances, called containers. From the perspective of the programs running in them, these isolated user space instances typically behave like real computers. Computer programs running on a normal operating system can utilize all of the resources of that computer, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running inside a container can only use the contents of the container and the devices assigned to the container, a feature known as containerization.

[0087] Reference now Figure 2 , a schematic block diagram of exemplary basic software of a system for trusted cloud function services provided for some embodiments of the present invention.

[0088] The exemplary software 200 includes code for three trusted execution environments (TEEs). A Key Management System (KMS) that uses a transport layer service (TLS) to communicate with Lamnda user code and agents on the runtime environment. The agent uses TLS to communicate with user code and with storage units, clients, etc. It should be noted that some implementations may include multiple components in the same TEE and / or use methods other than TLS for communication.

[0089] The software components shown may run within a sandbox on a virtual machine, container, bare metal server, and / or the like, and may be supported by hardware protection.

[0090] Reference now Figure 3 , a flowchart schematically showing an optional operation flow for a trusted cloud function service provided for some embodiments of the present invention. The processing circuit 120 can perform the exemplary process 300 for various purposes involving distributed database-based services, complex processing, digital logic, analysis, and / or the like.

[0091] The exemplary process 300 begins by creating a first trusted execution environment for a proxy service and a second trusted execution environment for a user function, as shown at 302 .

[0092] The first trusted execution environment and the second trusted execution environment are provided by hardware of at least one of the at least one processor, the at least one processor being further configured to provide attestation data to the client device via the network interface (e.g., via TLS). The proxy can be a stateless architecture, but alternative implementations can use different proxy architectures. An enclave is an example of a trusted execution environment. A Lambda function is an example of a user function.

[0093] Exemplary process 300 continues by providing a secure gateway for remote access to the first trusted execution environment through a network interface, as shown in 304. TLS is an example of a network interface that may use network module 118. The gateway may be used to communicate between the trusted execution environment and a user through device 132 or at another machine.

[0094] Some implementations may require a user to perform attestation before providing any secrets and / or similar information to the trusted execution environment.

[0095] The example process 300 optionally continues, as shown at 305 , with providing at least one cryptographic key to the user function in response to the remote attestation.

[0096] Some implementations include a key management system that may run on one of the TEEs, or on a third trusted execution environment, which may be used to communicate with agents, user functions, and users, for example using transport layer security.

[0097] One or more users can trigger or perform attestation to ensure that no unauthorized agents have modified the code or data of the key management system (KMS). Subsequently, the user can submit a security policy containing the keys and / or configurations of their Lambda functions and / or function as a service (FaaS) applications.

[0098] The exemplary process 300 continues by receiving a user function and at least one input for the user function from the user through the secure gateway, as shown at 306. When the user deploys its FaaS code and / or data through the secure gateway, the input can be encrypted and received using TLS through the network module 118.

[0099] Subsequently, as shown at 307, process 300 may continue by automatically performing remote attestation to verify the integrity of the user function.

[0100] The attestation may be requested by an application running on a user computer, which may request and receive a report from the TEE. A process may then send a quote from a process running on the TEE to the user computer. The user computer may then send the quote to a system operated by a vendor of a TEE-supported processor for attestation over the Internet. When the quote is valid, the attestation may then be sent from the vendor-operated system to the user computer.

[0101] KMS can take over the role of the user performing attestation for other components, such as the FaaS runtime, user code, and proxy services.

[0102] When the attestation passes, KMS can provide the key to the user function or FaaS application in the TEE, and the function can then decrypt the input data when executed.

[0103] When a FaaS application reads input data through a proxy, the proxy can check the integrity and freshness of the input data to ensure that no attacker has modified or replaced the data with an old version of the data, malicious data, and so on.

[0104] Subsequently, whenever the attestation succeeds, the KMS can provide the key to the FaaS application so that the FaaS application can decrypt the input data when executing.

[0105] The example process 300 continues, as indicated at 308 , with verifying the integrity and freshness of the at least one input using a proxy service.

[0106] Authentication can be accomplished using encryption and decryption keys, which can be transmitted through a secure gateway.

[0107] The example process 300 continues, as shown in 310 , by executing the user function on the at least one input using the runtime environment on the second trusted execution environment.

[0108] A TEE that supports at least one processor can use the software infrastructure of a runtime environment, such as Java, JavaScript, Python, C library, etc. to execute functions, and can be provided by a cloud service. When the cloud service provider maintains the operating system, runtime environment, and infrastructure required to execute user function code, the user may benefit from the hardware optimization provided by the cloud and focus on the high-level aspects of programming.

[0109] The process may then include storing the data, which may be encrypted, and / or returning the output to the end user over a secure connection.

[0110] Reference now Figure 4 , a schematic block diagram of an exemplary processor vendor-provided trusted execution environment provided for some embodiments of the present invention.

[0111] In the exemplary system 400, one or more components of the processing circuit 120 are Intel Skylake TM A central processing unit (CPU) including a memory encryption engine facilitates secure communication with an enclave page cache (EPC) that is a physical memory feature, accesses memory such as 112 in an encrypted manner and generates an enclave with a virtual memory that prohibits access from an operating system 122 and can be shielded from snooping.

[0112] Reference now Figure 5 , a schematic block diagram of an exemplary processor vendor certification system with exemplary associated operational flows provided for some embodiments of the present invention.

[0113] In this example of environment 500, the verifier process on the user computer sends a request to the application running on the enclave TEE (1), which sends a report to the Intel quoting enclave (QE) (2). The QE then sends a quotation (3) back to the application enclave, which forwards it to the verifier on the user computer. The user computer sends the quotation to the Intel Attestation service (IAS) over the Internet, and if the quotation is valid, a verification quotation is returned to the verifier on the user computer (4).

[0114] Intel SGX can be used for lambda functions. However, SGX only supports single machines, does not support transparent / automatic remote attestation, does not support key management systems, and does not support distributed systems.

[0115] User applications can be distributed microservices, requiring transparent / automatic remote attestation mechanisms and key management systems to make the proposed system work in practice. In addition, it may be necessary to ensure the confidentiality, integrity, and freshness of input data and user code.

[0116] Reference now Figure 6 , a schematic block diagram of an exemplary cloud setting of a system for trusted cloud function services provided in some embodiments of the present invention.

[0117] The exemplary system 600 can deploy user software including one or more functions into a Lambda sandbox, which can also be simply called a sandbox, and have it execute these functions remotely. Alternatively, the sandbox can be checkpointed and restarted from a saved image. The sandbox can be a virtual machine, a container, an isolator, etc. Any mechanism that achieves separation between user software and other software systems.

[0118] The sandbox can be executed in a cloud node, a physical node (e.g., metal or virtual node), which can include one or more processing units on a processing circuit selected from a CPU, GPU, TPU, FPGA, etc., in the machine itself or in another storage tier, and can also include a smartNIC, smartSSD, etc.

[0119] A virtual machine may run a software stack including an operating system (OS) kernel, a runtime, user code (eg, Lambda functions), and other layers.

[0120] Reference now Figure 7 , another schematic block diagram of an exemplary cloud setting of a system for trusted cloud function services provided for some embodiments of the present invention.

[0121] The exemplary system 700 may support transparent and automatic remote attestation using a Key Management System (KMS) while protecting code and data from privileged attackers who may have root access.

[0122] Reference now Figure 8 , an additional schematic block diagram of an exemplary cloud setup for a system for trusted cloud function services provided for some embodiments of the present invention.

[0123] To support integrity and freshness protection of input data from the file system and storage system, some implementations of the present invention, such as 800, further include an agent-based method for obtaining data from the storage system and / or writing data to it. The agent can ensure the integrity and freshness of the input data, such as by using a monotonic counter service-based method.

[0124] The agent can also run inside the TEE, so it can be authenticated by the end user and maintain scalability.

[0125] Reference now Fig. 9 , a supplementary schematic block diagram of an exemplary cloud setting of a system for trusted cloud function services provided in some embodiments of the present invention.

[0126] Some implementations of the present invention, such as 900, support a secure, scalable, and reliable KMS to manage secrets and configurations of user lambda functions. The KMS can be integrated with the cloud provider's KMS, but allows users to authenticate the system and TEE. Keys for services may be generated inside the TEE. The system can also provide backup and update mechanisms.

[0127] Reference now Fig.10 , another additional schematic block diagram of an exemplary cloud setting of a system for trusted cloud function services provided for some embodiments of the present invention.

[0128] The exemplary system 1000 has a compute server running cloud native services in a TEE such as an enclave, and uses TLS to communicate with the user code FunctionGraph associated with the data server, also in the enclave. The key management system (also located in the enclave) can generate keys and provide proof and key transmission via TLS. These enclaves can run on hosts, virtual machines (VMs), containers, etc.

[0129] The description of various embodiments is for illustrative purposes only, but these descriptions are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used herein are selected to best explain the principles, practical applications, or technological advances of the embodiments, or to enable other persons skilled in the art to understand the embodiments disclosed herein, as compared to the technology available on the market.

[0130] It is expected that during the life of the patent expiring on this application, many related hardware vendor protected environments will be developed, and the scope of the term Trusted Execution Environment is intended a priori to include all such new technologies.

[0131] As used herein, the term "about" refers to ± 10%.

[0132] The terms "including," "having," and variations thereof mean "including but not limited to." This term encompasses the terms "consisting of" and "consisting essentially of.

[0133] The phrase "consisting essentially of means that the composition or method may include additional ingredients and / or steps, but only if the additional ingredients and / or steps do not materially alter the basic and novel characteristics of the claimed composition or method.

[0134] As used herein, the singular forms "a", "an" and "the" include plural references unless the context clearly indicates otherwise. For example, the term "a compound" or "at least one compound" may include a plurality of compounds, including mixtures thereof.

[0135] The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any “exemplary” embodiment is not necessarily to be construed as preferred or advantageous over other embodiments, and / or does not exclude the incorporation of features of other embodiments.

[0136] The word “optionally” is used herein to mean “provided in some embodiments and not provided in other embodiments.” Any particular embodiment may include multiple “optional” features, unless such features are mutually incompatible.

[0137] In the present application, various embodiments can be presented in range format. It should be understood that the description of the range format is only for convenience and brevity, and should not be interpreted as a fixed limitation on the scope of the embodiments. Therefore, the description of the range should be considered to have specifically disclosed all possible sub-ranges and individual numerical values ​​within the range. For example, the description of the range from 1 to 6 should be considered to have specifically disclosed sub-ranges from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6, etc. and single numbers within the range, such as 1, 2, 3, 4, 5 and 6. No matter how wide the range is, this applies.

[0138] When a numerical range is indicated herein, it is intended to include any number (fractional or integer) listed within the indicated range. The phrases "a range between a first indicated number and a second indicated number" and "a range from a first indicated number to a second indicated number" are used interchangeably herein to include the first indicated number and the second indicated number and all fractions and integers therebetween.

[0139] It should be understood that certain features of the embodiments described in the context of separate embodiments for the sake of clarity may also be provided in combination in a single embodiment. Conversely, various features of the embodiments described in the context of a single embodiment for the sake of brevity may also be provided individually or in any suitable sub-combination or in any other described embodiments as appropriate. Certain features described in the context of various embodiments are not considered essential features of these embodiments, unless the embodiment is invalid without these elements.

[0140] Although the embodiments have been described in conjunction with specific embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. It is therefore intended to embrace all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims.

[0141] It is the purpose of the applicant that all publications, patents and patent applications mentioned in this specification are incorporated herein by reference in their entirety, as if each individual publication, patent or patent application was specifically and individually indicated when it was mentioned to be incorporated herein by reference. In addition, the reference or identification of any reference of the present application cannot be regarded as allowing such reference to take precedence over the present invention in the prior art. In terms of the use of section headings, section headings should not be understood as necessary limitations. In addition, any priority document of the present application is incorporated herein by reference in its entirety.

Claims

1. A system, characterized in that: The system comprises at least one processor, a memory and a network interface, wherein the at least one processor is configured to execute instructions to perform the following operations: Creating a first trusted execution environment for the proxy service and a second trusted execution environment for the user function; providing a secure gateway for remotely accessing the first trusted execution environment through the network interface; receiving, via the security gateway, from a user a user function and at least one input for the user function; verifying the integrity and freshness of the at least one input using the proxy service; The user function is executed on the at least one input using a runtime environment on the second trusted execution environment.

2. The system according to claim 1, characterized in that The proxy has a stateless architecture.

3. The system according to claim 1, characterized in that The first trusted execution environment and the second trusted execution environment are provided by hardware of the at least one processor.

4. The system according to claim 1, characterized in that Also included is a key management system on a third trusted execution environment, the key management system being configured to communicate with the agent, the user function, and the user using transport layer security.

5. The system according to claim 4, characterized in that The at least one processor is further configured to provide at least one encryption key to the user function in response to remote attestation.

6. The system according to claim 1, characterized in that The at least one processor is further configured to automatically perform remote attestation by verifying the integrity of the user function.

7. The system according to claim 1, characterized in that The at least one processor is further configured to return output to an end user via the secure connection.

8. The system according to claim 1, characterized in that The at least one processor is further configured to encrypt at least one output of the user function and place the at least one output into a storage backend.

9. A method for establishing a trusted execution environment using at least one processor, a memory, and a network interface, characterized in that: The method comprises: Creating a first trusted execution environment for the proxy service and a second trusted execution environment for the user function; providing a secure gateway for remotely accessing the first trusted execution environment through the network interface; receiving, via the security gateway, from a user a user function and at least one input for the user function; verifying the integrity and freshness of the at least one input using the proxy service; The user function is executed on the at least one input using a runtime environment on the second trusted execution environment.

10. The method according to claim 9, characterized in that The proxy has a stateless architecture.

11. The method according to claim 9, characterized in that The first trusted execution environment and the second trusted execution environment are provided by hardware of the at least one processor.

12. The method according to claim 9, characterized in that Also included is a key management system on a third trusted execution environment, the key management system being configured to communicate with the agent, the user function, and the user using transport layer security.

13. The method according to claim 12, characterized in that Also included is providing at least one encryption key to the user function in response to remote attestation.

14. The method according to claim 9, characterized in that It also includes automated remote attestation by verifying the integrity of user functions.

15. One or more computer program products, characterized in that The invention includes instructions for establishing a trusted execution environment, wherein when the instructions are executed by one or more processors of a computing system, the computing system is caused to perform the following operations: Creating a first trusted execution environment for the proxy service and a second trusted execution environment for the user function; providing a secure gateway for remotely accessing the first trusted execution environment through the network interface; receiving, via the security gateway, from a user a user function and at least one input for the user function; verifying the integrity and freshness of the at least one input using the proxy service; The user function is executed on the at least one input using a runtime environment on the second trusted execution environment.