Validating the Trust Posture of Heterogeneous Confidential Computing Clusters
By introducing a trusted execution environment and secure startup module into the network device, combined with a security measurement token, a composite reliability vector is generated, which solves the problem of device reliability evaluation in heterogeneous systems, real-time reliability verification and secure routing of network devices are realized.
Patent Information
- Application Number
- JP2023509609
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-01-25
- Filing Date
- 2022-03-29
- Publication Date
- 2025-01-28
- Estimated Expiration
- 2042-03-29
Smart Images

Figure 0007623472000005 
Figure 0007623472000006 
Figure 0007623472000007
Abstract
Description
[Technical field]
[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of and priority to U.S. Provisional Application No. 63 / 169,528, filed April 1, 2021, which claims the benefit of and priority to U.S. Nonprovisional Application No. 17 / 583,284, filed January 25, 2022, each of which is incorporated by reference in its entirety herein.
[0002] FIELD OF THEINVENTION The present disclosure relates generally to the field of computer networking, and more specifically to assessing the trustworthiness and reliability of devices operating within a network. [Background technology]
[0003] The trustworthiness of a given device operating in a network may degrade from its initial configuration. Active measurements may be required to prove that the device is as trustworthy as it was at the time of its initial deployment. New technologies are adding the ability to support secure real-time reporting of active trustworthiness measurements / assessments from remote devices. Specifically, all-in-one chips have been used to implement secure boot modules, trust anchor modules, and secure Joint Test Action Group (JTAG) solutions to verify the trustworthiness of devices. Additionally, tokens or metadata elements containing security measurements or evidence have been developed to verify the trustworthiness of devices.
[0004] A trust vector can allow claims from direct peers to represent their verified trustworthiness, so that a mesh of trust can be established and maintained across a set of network devices. However, a trust vector does not represent the multiple-hop-away trust relationships utilized by routing protocols to ensure that only certain Internet Protocol (IP) packets take trusted paths.
[0005] The problem of understanding trust across all elements of a "heterogeneous" system remains unsolved and is not unique to networking. With the advent of confidential computing, it has become useful for a Trusted Execution Environment (TEE) to provably assert the trust of any directly connected TEE. [Brief description of the drawings]
[0006] To explain the manner in which the above-mentioned and other advantages and features of the present disclosure can be obtained, a more particular description of the principles briefly described above will be made by reference to specific embodiments thereof, which are illustrated in the accompanying drawings, with the understanding that these drawings depict only exemplary embodiments of the present disclosure and therefore should not be considered as limiting the scope of the present disclosure, the principles herein will be described and explained with additional specificity and detail through the use of the accompanying drawings. [Figure 1] FIG. 1 illustrates an exemplary networking environment in accordance with some embodiments. [Diagram 2] FIG. 1 illustrates an exemplary networking environment in accordance with some embodiments. [Diagram 3] FIG. 1 illustrates an exemplary networking environment in accordance with some embodiments. [Figure 4] 1 illustrates an example of controller-orchestrated attestation-based routing, according to some embodiments. [Diagram 5] 5 illustrates an example of a hub-and-spoke topology 500 for interconnecting attestors, according to some embodiments. [Figure 6] FIG. 2 illustrates a sequence diagram of a process for generating composite security information for a service in a heterogeneous network according to one embodiment of the present disclosure. [Figure 7] 1 illustrates an exemplary diagram illustrating combining trust vectors from service nodes having different trusted execution environments (TEEs) into a composite trust vector, according to one embodiment of the present disclosure. [Figure 8] 1 illustrates an exemplary diagram illustrating combining trust vectors from service nodes having different trusted execution environments (TEEs) into a composite trust vector, according to one embodiment of the present disclosure. [Figure 9] 1 illustrates an exemplary diagram illustrating combining trust vectors from service nodes having different trusted execution environments (TEEs) into a composite trust vector, according to one embodiment of the present disclosure. [Figure 10] 1 illustrates an exemplary diagram illustrating combining trust vectors from service nodes having different trusted execution environments (TEEs) into a composite trust vector, according to one embodiment of the present disclosure. [Figure 11] 1 illustrates an exemplary method for a service node to provide a composite reliability vector in a heterogeneous network, according to one embodiment of the present disclosure. [Figure 12] 1 illustrates an exemplary method for combining security information of various associated service nodes into composite security information, according to one embodiment of the present disclosure. [Figure 13] 1 illustrates an exemplary method for combining security information of various associated service nodes into composite security information, according to one embodiment of the present disclosure. [Figure 14] 1 illustrates an example of a computing system according to one embodiment of the present disclosure. [Figure 15] 1 illustrates an example of a network device according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0007] Various embodiments of the present disclosure are discussed in detail below. Although specific implementations are discussed, it should be understood that this is done for illustrative purposes only. Those skilled in the art will recognize that other components and configurations may be used without departing from the spirit and scope of the present disclosure. Therefore, the following description and drawings are illustrative and should not be construed as limiting. Numerous specific details are described to provide a thorough understanding of the present disclosure. However, in certain instances, well-known or conventional details are not described to avoid obscuring the description. Reference to one or an embodiment in the present disclosure may be a reference to the same embodiment or any embodiment, and such reference means at least one of the embodiments.
[0008] Reference to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with an embodiment is included in at least one embodiment of the present disclosure. The appearances of the phrase "in one embodiment" in various places in the specification do not necessarily all refer to the same embodiment, nor are they mutually exclusive separate or alternative embodiments from other embodiments. Furthermore, various features are described that may be exhibited by some embodiments but not by other embodiments.
[0009] The terms used herein generally have their ordinary meaning in the art, within the context of this disclosure and in the specific context in which each term is used. Alternative language and synonyms may be used for any one or more of the terms discussed herein, and no special importance should be placed on whether a term is detailed or discussed herein. In some cases, synonyms of a particular term are provided. The recital of one or more synonyms does not exclude the use of other synonyms. The use of examples throughout this specification, including examples of any term discussed herein, is illustrative only and is not intended to further limit the scope and meaning of the disclosure or any exemplary term. Similarly, this disclosure is not limited to the various embodiments provided herein.
[0010] Without intending to limit the scope of the present disclosure, examples of instruments, devices, methods, and their related results according to the embodiments of the present disclosure are given below. Please note that titles or subtitles may be used in the examples for the convenience of the reader and do not limit the scope of the present disclosure. Unless otherwise defined, technical and scientific terms used herein have the meanings that are commonly understood by those skilled in the art to which the present disclosure belongs. In case of conflict, the present specification, including definitions, shall prevail.
[0011] Additional features and advantages of the present disclosure will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by practice of the principles disclosed herein. The features and advantages of the present disclosure may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present disclosure will become more fully apparent from the following description and the appended claims, or may be learned by practice of the principles as described herein.
[0012] overview Aspects of the invention are set out in the independent claims and preferred features are set out in the dependent claims. Features of one aspect may be applied to each aspect alone or in combination with other aspects.
[0013] Systems, methods, and computer-readable media for secure network routing are provided. An exemplary method may include receiving a request from a client device for security information of a service node, the request including information identifying a service to be received from the service node, identifying associated nodes in communication with the service node based on the service, requesting security information of the associated nodes after identifying the associated nodes, generating composite security information from the service node security information and the associated node security information, and transmitting the composite security information to the client device.
[0014] An exemplary system may include one or more processors and at least one computer-readable storage medium storing instructions that, when executed by the one or more processors, cause the one or more processors to receive a request for security information of a service node from a client device, the request including information identifying a service to be received from the service node, identify associated nodes that communicate with the service node based on the service, and after identifying the associated nodes, request security information of the associated nodes, generate composite security information from the security information of the service node and the security information of the associated nodes, and send the composite security information to the client device.
[0015] The system may include one or more processors and at least one computer-readable storage medium storing instructions that, when executed by the one or more processors, cause the one or more processors to receive a request for security information of a service node from a client device, the request including information identifying a service to be received from the service node, identify associated nodes that communicate with the service node based on the service, and after identifying the associated nodes, request security information of the associated nodes, generate composite security information from the security information of the service node and the security information of the associated nodes, and send the composite security information to the client device.
[0016] In some aspects, the security information includes a number of claims related to types of validation, the types of validation including at least one of hardware validation, unique identity validation, data integrity validation, boot validation, and executable validation.
[0017] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further include identifying an implied claim in the security information of the associated node, and adding the implied claim to the security information from the associated node.
[0018] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further include combining corresponding claims in the security information of the service node and in the security information of the associated node to generate composite security information.
[0019] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further include identifying a first value associated with the first claim in the security information of the service node and a second value associated with the first claim in the security information of the associated node, and generating a composite value for the first claim in the composite security information based on the first value and the second value.
[0020] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further include identifying a decrementing value associated with the first claim in one of the associated node security information and the service node security information, and excluding the first claim from the composite security information.
[0021] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further include normalizing security claims in the associated node security information and the service node security information, and combining each security claim into composite security information.
[0022] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further include performing a spanning tree algorithm to identify candidate nodes associated with the service from the addressable nodes, and an associated node is selected from the candidate nodes.
[0023] In some aspects, the service node includes a first trusted module and the associated node includes a second trusted module, the first trusted module being different from the second trusted module.
[0024] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further include transmitting a request to a management node to identify candidate associated nodes and receiving a list of candidate associated nodes, where the management node executes a group membership protocol to create different groups associated with each service.
[0025] Exemplary embodiments There are different ways to verify or attest the trustworthiness of a node in a network. Attestation is an example of a trusted computing approach that can be used to verify the integrity of a node based on the set of transactions that have occurred since boot time. Dedicated cryptographic processors, such as those in a Trusted Platform Module (TPM) platform, can perform measurements to attest (prove) the trustworthiness (e.g., identity, integrity, etc.) of the node and its environment (e.g., software, hardware, operating system, executable binaries, firmware, etc.). These measurements contain evidence that the node is in a secure state. However, there is no current technology that understands the trustworthiness of heterogeneous systems, a common feature in networking.
[0026] The disclosed technology addresses the challenge of establishing trust in a heterogeneous system by identifying the associated service nodes associated with a service and normalizing the different security claims of the associated service nodes. In this manner, an attest node can collect various security information and create composite security information that summarizes the security claims from any associated service nodes, allowing a requesting node to determine whether the attest node is trustworthy based on the composite security information. The composite security information provides a summary of the security claims of the service.
[0027] A description of a network environment and architecture for network data access and services, as shown in Figures 1, 2, and 3, is first disclosed herein. Then, an attestation routing orchestrator is described as shown in Figure 4. The disclosure then moves to an exemplary system for generating a composite security claim in a heterogeneous network in Figures 5 and 6, as well as corresponding sequence diagrams. Next, various examples of generating composite security information are discussed in conjunction with the examples in Figures 7, 8, 9, and 10. Next, a method for generating a composite security claim in a heterogeneous network is discussed with reference to Figures 11, 12, and 13. The discussion then concludes with a brief description of an exemplary device, as shown in Figure 14. These variations shall be described herein as various embodiments are described. The disclosure now moves to an initial discussion of exemplary concepts and techniques for providing verifiable proof of the integrity of network nodes traversed by a packet.
[0028] A computer network may include different nodes (e.g., network devices, client devices, sensors, and any other computing devices) interconnected by communication links and segments for transmitting data between end nodes. Many types of networks are available, including, for example, a local area network (LAN), a wide area network (WAN), a software-defined network (SDN), a wireless network, a core network, a cloud network, the Internet, etc. When data traffic is transmitted through one or more networks, the data traffic typically traverses several nodes that route the traffic from a source node to a destination node.
[0029] Having a large number of nodes can increase network connectivity and performance, but also increases security risks, as each node that a packet traverses introduces the risk of unauthorized data access and manipulation. For example, as a packet traverses a node, there is an introduced security risk that may result from the node being potentially compromised (e.g., hacked, manipulated, captured, etc.). As a result, compliance, security, and audit procedures can be implemented to verify that network users, devices, entities, and their associated network traffic comply with certain business and / or security policies.
[0030] When confidential information is transmitted through nodes in a network, such as in battlefields, banking environments, and healthcare environments, such traffic should be sent through uncompromised nodes to prevent access to, disclosure of, or tampering with the data and confidential information carried by the traffic. If an attacker gains access to a device through some security weakness, previous protection and encryption approaches for network interfaces are generally ineffective in mitigating or addressing such unauthorized access and the resulting damage.
[0031] Proving that network traffic complies with a particular policy may involve proving in a secure manner that the traffic traversed a well-defined set of network nodes (e.g., firewalls, switches, routers, etc.) and that such network nodes have not been modified or compromised. This can help ensure that the network nodes performed their expected or intended actions on the packet (e.g., packet processing, security or policy compliance validation, routing, etc.) and that the packet traversed the network nodes.
[0032] Some security approaches may aim to remove any implied trust in the network used to connect the on-device hosted application to a cloud or enterprise hosted service. Additionally, some security approaches may be implemented to verify the authenticity (e.g., integrity, identity, state, etc.) of the network and / or nodes traversed by the packet. In some cases, some validation checks may be implemented to prove or verify that the traffic has traversed a particular set of nodes and that such nodes are trusted and not compromised. In some examples, certain Proof-of-Transit (POT), Trusted Platform Module (TPM), attestation, or integrity proof approaches may be implemented to verify or verify the authenticity of the nodes in the network.
[0033] POT can allow a network user or entity to verify whether traffic has traversed a defined set of network nodes. Attestation can also be used to verify the integrity of the nodes, as described further below. In some cases, the approaches herein can integrate both to provide a secure approach that allows a network user or entity to verify that traffic has traversed a defined set of nodes, and that such nodes have not been compromised.
[0034] In some cases, a TPM may be implemented to collect and report the identity of hardware and software components in a platform to establish trust for that platform. A TPM used in a computing system may report on the hardware and software of the system to enable verification of expected behavior associated with the system and enable the establishment of trust from such expected behavior. A TPM may be a system component that includes a state separate from the host system to which it reports identity and / or other information. A TPM may be implemented (indirectly or directly) on the physical resources of a host system. In some examples, a TPM component may have a processor and memory, such as random access memory (RAM), read only memory (ROM), and / or flash memory. In other implementations of a TPM, a host processor may execute TPM code while the processor is in a particular execution mode. Portions of system memory may be partitioned by hardware to ensure that memory used by the TPM is not accessible by the host processor unless the host processor is in a particular execution mode.
[0035] In some cases, trusted computing (TC) implementations such as TPMs may rely on Roots of Trust. Roots of Trust may be system elements that should be trusted, because malfunctions by such system elements may not be detectable. A set of roots may provide a minimum set of functionality that can fully describe the characteristics that affect the trustworthiness of the platform. In some cases, it may not be possible to determine whether a root of trust is operating properly. However, it may be possible to determine how the root is implemented. For example, a certificate may provide assurance that the root is implemented in a trustworthy manner.
[0036] By way of example, the certificate may identify the manufacturer and evaluated assurance level (EAL) of the TPM. Such attestation may provide a level of confidence in the root of trust used in the TPM. Additionally, a certificate from the platform manufacturer may provide assurance that the TPM has been properly installed on a system that complies with certain requirements, and therefore the root of trust provided by the platform may be trusted. Some implementations may rely on three roots of trust in a trusted platform, including a Root of Trust for Measurement (RTM), a Root of Trust for Storage (RTS), and a Root of Trust for Reporting (RTR).
[0037] The RTM can send integrity information, such as an integrity measurement, to the RTS. In general, the RTM can be a processor controlled by a Core Root of Trust for Measurement (CRTM). The CRTM is the first set of instructions executed when a new chain of trust is established. When the system is reset, the processor (e.g., the RTM) can execute the CRTM, which can then send a value indicative of its identity to the RTS. Thus, in some cases, the starting point of a chain of trust can be established in this way.
[0038] As previously mentioned, the TPM memory can be protected from access by entities other than the TPM. The TPM can act as an RTS since it can be trusted to prevent unauthorized access to its memory. Additionally, the RTR can report on the contents of the RTS. The RTR report can be a digitally signed digest of the contents of one or more values within the TPM.
[0039] Attestation is another exemplary trusted computing approach that may be used to verify the integrity of a node. Attestation may be applied to a node, such as a router or switch, to review logs from connected devices, such as Layer 1 (L1) or Layer 2 (L2) connected devices, and maintain these logs in trusted storage. These logs may be protected by embedding a private key in all trust anchors generated for the hardware device and publishing the device's public key as a certificate to neighboring devices. The peering device may then push log updates from the trusted storage periodically and / or upon some log entry event. Reviewing any provided signed logs may provide an understanding of the current trusted state of the peer device. Additionally, by looking back at the set of transactions that have occurred since boot time, a determination may be made regarding the trustworthiness of the information that the peer device is asserting.
[0040] In some examples, metadata elements including security measurements or evidence can be used to provide verifiable evidence of device trustworthiness (e.g., integrity, state, etc.). The metadata elements can include applicable data for verifying the trustworthiness of the device and can be provided through applicable techniques for verifying the device trustworthiness. For example, the metadata elements can be provided as part of a canary stamp associated with the device. The canary stamp can indicate or otherwise include signed measurements associated with the device to verify the trustworthiness of the device. Such measurements can then be referred to as canary stamps because each signed measurement is like a stamp attesting to its authenticity and is like a canary in a coal mine that indicates early signs of trouble. Such verifiable evidence can be appended to or included in packets transmitted by nodes on the network. Thus, the metadata elements can be used to evaluate the trustworthiness of the node and react accordingly. For example, a device or entity can review metadata elements associated with a node to determine that the node should not be trusted and adjust network policies to mitigate possible damage.
[0041] In some implementations, a dedicated cryptographic processor, such as a processor in a TPM platform, can perform measurements to attest the trustworthiness (e.g., identity, integrity, etc.) of a node and its environment (e.g., software, hardware, operating system, executable binaries, firmware, etc.). These measurements include evidence that the node is in a secure state. In some cases, these measurements may be provided via canary stamps as described above. However, a receiver of such evidence should be able to attest that the evidence is fresh, since the evidence may become stale, thereby potentially reducing its effectiveness in reflecting the current trustworthiness of the node. For example, without ensuring the freshness of such evidence, an attacker has the opportunity to inject previously recorded measurements and assert the replayed ones as current.
[0042] Some approaches can detect replay of old evidence via a "nonce." A nonce is any number that can be used to introduce randomness. In some cases, a nonce can be used only once in a cryptographic communication. Additionally, a nonce can be passed to the TPM and / or incorporated into the canary stamp / metadata. In some cases, the result provided by the TPM can include a signature based on the nonce. Because the nonce can be based on a transaction challenge / response interaction model, in some cases, the nonce may not be very effective in one-way communication originating from the attest device. For example, the nonce may not be very effective in asynchronous push, multicast, or broadcast messages.
[0043] However, there are many use cases where it is advantageous for a platform to assess whether its peers are trustworthy. Being able to perform one-way attestation using asynchronous push, multicast, or broadcast messages with trusted binaries opens up many possibilities for a platform to assess whether their peers are trustworthy. Detection of an invalid attestation can trigger an alarm or event, a reduction in network access from the suspect device, or can be part of admission control (e.g., IEEE 802.1X). Some platforms can be configured to support one-way attestation mechanisms.
[0044] Other freshness approaches can be based on a trusted computing capability such as a TPM. For example, a token can be generated that allows an external entity to attest to the freshness of asserted data based on the state of an internal counter in the TPM. This token can be used to detect replay attacks and provide attestation for asynchronous push, multicast, and broadcast messages.
[0045] The various approaches mentioned above can be combined with TPM integrated capabilities aimed at verifying that valid computational components, such as binary processes, are running on a node. These capabilities can include, for example, a Trusted Execution Environment (TEE) that provides runtime malware protection, an Authenticated Code Module (ACM) that ensures that only digitally signed code modules can be loaded onto the processor, etc. These techniques can establish that the processor is running known software that has a valid chain of binary signatures.
[0046] In some cases, metadata elements, such as canary stamps and tokens, may be created by extracting current counters (e.g., clock, reset, restart) from the node's TPM and incorporating such counters and security measurements taken from the node into the packet. In some examples, the current counters and / or security measurements may be hashed with information in the external TPM. The metadata elements and tokens may thereby provide an unspoofable token or metadata element that may tie the continuously incrementing counters on the attestee (non-attesting means) to a known external state. Any reset of the TPM counters is visible in any subsequent TPM query, and any restart of the platform is also exposed in subsequent TPM queries. Within these ranges of resets and restarts, the TPM's time tick counters continuously increment. Thus, any push of attestee TPM information, including these counters, may be determined to have occurred subsequent to any previously received measurements. Also, if the reset and restart counters have not changed, the increment time since any previous measurement may be known.
[0047] In some cases, a large amount of information that should be trusted by network peers may not be contained within the TPM's Program Configuration Registers (PCRs), so that indirect methods of proving that a node has not been compromised can be applied.
[0048] Receipt of metadata elements, such as a canary stamp, and / or a token, may mean that the receiver should have the option to verify the information. In many cases, such verification can be performed without the need for supplemental evidence sent with the canary stamp. Furthermore, in non-controller-based or centralized implementations, the verification step does not need to take place at the receiver.
[0049] In some integrity verification implementations, the controller or device can implement an integrity verification application. The integrity verification application can be designed to recognize change events and evaluate known good values, allowing for the evaluation of boot integrity stamps and running process binary signature stamps, for example, based on TPM counters, timestamps, nonce, and / or time tokens. If there is any discrepancy, the controller or centralized device can isolate the compromised node from its network peers by shutting down the node's interfaces.
[0050] In some examples, metadata elements, such as canary stamps, and / or integrity validation may be implemented using a measurement bootstrap stamp (e.g., a SHA1 hash over PCRs 0-7), a validation bootstrap stamp (e.g., capable of validating that only recognized binaries were executed at boot time), a process stamp (e.g., a root of trust established through a process asserting a particular protocol or protocols), a file system stamp (e.g., all files in a vendor-determined set of directories), a log integrity stamp (e.g., used to augment existing integrity analysis and forensics), a configuration stamp (e.g., the current state of the device configuration), and the like. Some implementations may achieve all or some of these stamps, depending on the implementation. Additionally, in some implementations, all or some of these stamps may be implemented or achieved using single or multiple stamps.
[0051] As described above, the TPM provides a method for collecting and reporting the identity of hardware and software components in a platform to establish trust in that platform. TPM functionality can be embedded in a variety of devices, including mobile phones, personal computers, network nodes (e.g., switches, routers, firewalls, servers, network appliances, etc.), and / or any other computing device. Furthermore, attestation can describe how the TPM can be used as a hardware root of trust to provide proof of the integrity of the node. Such integrity can include hardware integrity, software integrity (e.g., microloaders, firmware, boot loaders, kernels, operating systems, binaries, files, etc.), and runtime integrity.
[0052] In some cases, the TPM and attestation may be implemented as described herein to provide proof of integrity and proof of passage through an uncompromised node. In some examples, metadata elements and tokens that include or reflect security measures are used to verify node integrity and perform continuous evaluation of node integrity, as described above. Thus, the metadata elements and tokens described herein may be used to provide proof of passage through an uncompromised node.
[0053] In some examples, metadata elements and tokens can be added as additional metadata to packets traversing a network where proof of passage through an uncompromised node is desired. Various strategies can be implemented to transport the metadata elements and tokens within the packets. In some cases, the metadata elements and tokens can be carried in an in-field (or in-band) Operations, Administration and Management (IOAM) data field.
[0054] In some implementations, metadata elements and tokens may be carried along with the IOAM trace data. For example, a canary stamp may be carried as part of the IOAM data field in various encapsulation protocols, such as, but not limited to, IPv4, IPv6, network service header (NSH), etc. In some cases, a canary stamp may be carried in the IOAM data field as an IOAM trace option data element (e.g., with an IOAM trace type for node integrity canary stamp). A metadata element, token, or digest, such as a canary stamp digest, may be added to the IOAM trace options of a packet by each node that forwards the packet.
[0055] When the packet reaches a node (e.g., the destination node and / or an intermediate node) that removes the IOAM metadata (e.g., an IOAM decapsulating node), the validity of the metadata elements and / or tokens in the packet can be verified to determine that the packet traversed an uncompromised node. In some examples, the canary stamps are time-limited, so that the IOAM-defined packet trace timestamps can be used to establish the canary stamps within a time window that the packet traversed that node.
[0056] Verification may be performed without placing a large transaction load on devices, such as the verifier or controller, that will ultimately attest to the security measurements associated with the metadata elements or tokens, since the measurements may change infrequently. The verifier may only need to attest to the metadata elements and / or tokens carried within the IOAM data trace whenever the associated security measurements change (e.g., the verifier only needs to check with the controller whenever the verifier sees that the node's TPM extends a PCR value not previously seen by the verifier).
[0057] In some cases, when only the time ticks in the signed metadata element increase, only the signature of the metadata element is verified. To do this, the verifier can use the public key of any node where the metadata element can be located. Such signature verification can be done without using the controller to verify the measurements.
[0058] In another example, a packet can carry IOAM POT data with space optimization of a metadata element value, such as a canary stamp value. For example, a new IOAM POT data field can carry a canary stamp or a hash extension of the canary stamp, and the canary stamp data can then be carried across nodes. In some cases, the canary stamp hash extension can be in a manner similar to the PCR extension operation performed by a TPM.
[0059] In some cases, the canary stamp hash may provide a one-way hash so that the canary stamp recorded by any node cannot be removed or modified without detection. The IOAM proof of passage option data for the canary stamp digest may be defined by a hash algorithm (e.g., 20 octets for SHA1, 32 octets for SHA256, etc.). In some implementations, each node along the path of the packet may forward the packet with a new or updated canary stamp digest. In some examples, the new or updated canary stamp digest may be generated by a node as follows: where IOAM canary stamp digest new value = digest of (IOAM canary stamp digest old value || hash (node's canary stamp)), where the IOAM canary stamp digest old value may refer to the canary stamp digest included in the packet by one or more previous hops.
[0060] Additionally, in some cases, a Per Packet Nonce (PPN), which changes for every packet and is carried as another field in the IOAM metadata option, may be added to provide robustness against replay attacks. To illustrate, in some examples, the PPN may be added as follows: new value of IOAM canary stamp digest = digest of (old value of IOAM canary stamp digest || hash(node's canary stamp || PPN)). Thus, a node creating a new value for the IOAM canary stamp digest may take the value of any previous IOAM canary stamp digest and extend / hash that value with the node's current canary stamp. The result of the concatenation and hashing may then be written to the IOAM POT data (or other IOAM data field) as the new IOAM canary stamp digest.
[0061] The same operation can be performed at a verifier (e.g., a device that verifies the canary stamp data) on the expected canary stamp value calculated for the nodes traversed within the time window when the packet was forwarded. The verifier can be an inline device or a centralized device. Furthermore, in some examples, the nodes expected to be traversed can be identified using IOAM traces, routing state, or by sending active probes. A match between the value of a particular metadata element, e.g., POT data carrying a canary stamp digest, and the expected canary stamp value can prove that the packet traversed a trusted or uncompromised node.
[0062] In some examples, one or more strategies can be implemented to optimize metadata element attestation. For example, a metadata element, such as a canary stamp, can detect replay attack attempts by embedding a nonce as well as a TPM or TPM2 counter (e.g., clock, reset, restart). In some cases, this nonce is part of the metadata element and can be different from the PPN described above.
[0063] A nonce is relevant to the receiver, such that the interval from the nonce's creation time to the first stamp received by the verifier can define a freshness interval (e.g., no measurement is older than this interval of freshness). From there, the TPM2 time tick counter can be used to maintain that initial gap in freshness, even in the absence of delivery of a new nonce.
[0064] In some implementations, to optimize attestation of metadata elements or tokens across nodes, the following approach can be implemented to distribute synchronization information from a central component to each node and verifier. For example, a central server can broadcast or multicast a centralized nonce value (e.g., a tracked random number). Each node can pick up the latest nonce and use it to attest the value. The verifier can know the freshness of the metadata element or token it receives from each node. This freshness can be the delta in time since that particular nonce was issued. Subsequent attestations can use incremental time ticks to prove freshness from that initial time gap. In some cases, the issuance of a new nonce can reset the time gap to a potentially shorter interval.
[0065] Further, in some cases, each node may embed the attested time in its metadata element. To obtain the attested time, a Time-Based Uni-Directional Attestation (TUDA) scheme may be used, such as the TUDA scheme described in https: / / tools.ietf.org / id / draft-birkholz-i2nsf-tuda-01.html, the contents of which are incorporated herein by reference in their entirety. This may result in the availability of both the attested time at a node and the value of the TPM2 counter at this node when the TUDA time synchronization token was created. This may eliminate the use of a central nonce authority, but may increase the size of the metadata element, since the nonce may be replaced by the TUDA time synchronization token. This approach may also implement a central time stamp authority according to TUDA. In some examples, for each hop, the canary stamp digest value may be as follows: new value of IOAM canary stamp digest = digest of (old value of IOAM canary stamp digest || hash(node's canary stamp || node's TUDA time synchronization token)).
[0066] This approach can provide many advantages. For example, but not by way of limitation, with this approach, the verifier can limit the number of verifications by verifying the signature of a hop's time synchronization token only if it has changed. Furthermore, with this approach, there may be no time gap nonce changeover freshness when the first measurement is received. Furthermore, in some cases, this approach may be implemented without carrying a PPN or synchronizing nonces across nodes, as previously discussed.
[0067] Further, an attestor, e.g., a node or verifier, can generate and verify attestation information using random or pseudo-random numbers created by peers and / or attestors. Specifically, an attestor can accumulate random numbers from one or more layer 2 peers. The random numbers can be accumulated from peers over a certain amount of time, e.g., a short duration. The random numbers can then be combined into a number through applicable techniques, e.g., Bloom filters. This number can serve as a nonce for a cryptographic processor to generate a result. As follows, layer 2 peers, potentially including attestors, can use the results created by the cryptographic processor to verify / prove that their corresponding provided random numbers were used in generating the nonce that is ultimately used by the cryptographic processor to generate the result. Layer 2 peers, potentially including attestors, can then generate verified attestation information based on the random numbers generated by the peers, the nonce created from the random numbers, and / or the results created by the cryptographic processor from the nonce.
[0068] Having provided an initial discussion of example concepts and techniques for providing explicit verifiable proof of the integrity of network nodes traversed by a packet, this disclosure now turns to FIG.
[0069] 1 is a block diagram of an example of a networking environment 100 according to some implementations. While relevant features are shown, those skilled in the art will appreciate from this disclosure that various other features are not shown for the sake of brevity so as not to obscure aspects of the example implementations disclosed herein.
[0070] In this example, the networking environment 100 may include a network 114 of interconnected nodes (e.g., 108A-108N, 110A-110N, and 112A-112N). The network 114 may include a private network, such as a LAN, and / or a public network, such as a cloud network, a core network, etc. In some implementations, the network 114 may also include one or more sub-networks, such as sub-network 114A. The sub-network 114A may include, for example, without limitation, a LAN, a virtual local area network (VLAN), a data center, a cloud network, a WAN, etc. In some examples, the sub-network 114A may include a WAN, such as the Internet. In other examples, the sub-network 114A may include a combination of nodes included within a LAN, a VLAN, and / or a WAN.
[0071] The networking environment 100 may include a source node 102. The source node 102 may be a networking device (e.g., a switch, a router, a gateway, an endpoint, etc.) associated with data packets destined for a destination node 116. The source node 102 may communicate with candidate next hop nodes 108A-108N on a network 114. Each of the candidate next hop nodes 108A-108N may be included in a respective route between the source node 102 and the destination node 116. Further, in some cases, each of the candidate next hop nodes 108A-108N may communicate with candidate second hop nodes 110A-110N in the network 114. Each of the candidate second hop nodes 110A-110N may similarly communicate with candidate N-th hop nodes 112A-112N in the network 114.
[0072] The networking environment 100 may also include an attestation routing orchestrator 104. The attestation routing orchestrator 104 may communicate with the candidate next hop nodes 108A-108N. In some implementations, the attestation routing orchestrator 104 may obtain attestation data (e.g., canary stamps, security measurements, signatures, and / or metadata) or vectors from the candidate next hop nodes 108A-108N. In some examples, the attestation routing orchestrator 104 may obtain additional information from the candidate second hop nodes 110A-110N and / or the candidate Nth hop nodes 112A-112N and utilize the additional information in selecting a particular candidate next hop node for a packet. In some implementations, the attestation routing orchestrator 104 may also obtain additional information from nodes that are more than two hops away (e.g., candidate third hop nodes, candidate fourth hop nodes, etc.).
[0073] The attestation routing orchestrator 104 can communicate with a verifier system 106. Although the verifier system 106 is conceptually shown as being implemented separately from the network 114, the verifier system 106 can be implemented within the network 114, for example, as part of a network device within the network 114. In some implementations, the attestation routing orchestrator 104 can obtain a trusted state, such as a trusted image vector, from the verifier system 106. The verifier system 106 can include a verified state repository 106A and one or more servers 106B. In some examples, the verified state in the verified state repository 106A can include one or more verified images, verified security measurements, verified configurations, verified node data, and / or any other verified trust or integrity data. In some implementations, the verified states in the verified state repository 106A may include one or more trusted state or image vectors that are known with a degree of confidence to represent an uncompromised state or image (e.g., a state or image that has not been hacked, attacked, or improperly accessed).
[0074] 4, in some cases, the attestation routing orchestrator 104 may select and direct data packets to particular ones of the candidate next hop nodes 108A-108N based on the trusted state or image vector and the attestation state or vector. Additionally, the attestation routing orchestrator 104 may direct data packets destined for the destination node 116 to particular candidate next hop nodes.
[0075] 2 is a block diagram of another example networking environment 200 according to some implementations. In this example, the networking environment 200 includes a source node 202 that implements an attestation routing orchestrator 202A. In some implementations, the attestation routing orchestrator 202A may be similar to or adapted from the attestation routing orchestrator 104 of FIG.
[0076] The source node 202 can include one or more processors 202B. In some implementations, the one or more processors 202B can provide processing resources for generating confidence scores for the candidate next hop nodes 108A-108N.
[0077] In some implementations, the one or more processors 202B can provide processing resources for selecting, from the confidence scores, particular confidence scores that satisfy one or more selection criteria.
[0078] In some examples, the source node 202 may include a memory 202C. The memory 202C may be a non-transitory memory, such as, for example, but not limited to, a random access memory (RAM), a read only memory (ROM), etc. The memory 202C may store data, such as packets destined for the destination node 116. In some implementations, the memory 202C may store trusted states or image vectors obtained from the verifier system 106. In some implementations, the memory 202C may store attestation states or vectors obtained from the candidate next hop nodes 108A-108N, and optionally attestation states or vectors obtained from the candidate second hop nodes 110A-110N and / or the candidate Nth hop nodes 112A-112N. The source node 202 may also include a network interface 202D for acquiring, receiving, and transmitting data packets and states or vectors.
[0079] In some implementations, the source node 202 can select and direct data packets to particular candidate next hop nodes based on the trusted state or image vector and the attestation state or vector.
[0080] 3 is a block diagram of another example networking environment 300 according to some implementations. In this example, one or more of the candidate next hop nodes 108A-108N can relay a trusted state or image vector from the verifier system 106 to a source node 302. In some implementations, the source node 302 can include an attestation routing orchestrator 302A similar to or adapted from the attestation routing orchestrator 104 of FIG. 1 and / or the attestation routing orchestrator 202A of FIG. 2. The source node can include a processor 302B, a memory 302C, and a network interface 302D.
[0081] In some implementations, the verifier system 106 can sign the trusted state or image vector and provide the signed trusted state or image vector to a particular candidate next hop node, which can then provide the signed trusted state or image vector to the source node 302. In some implementations, having a particular candidate next hop node provide a signed trusted state or image vector can reduce attestation time (e.g., the time to determine the trustworthiness of a particular candidate next hop node) because the source node 302 may not need to contact a remote node (the verifier system 106). In some implementations, the attestation time can be further reduced because a single attestation process (e.g., the verifier system 106 signs the trusted state or image vector) facilitates attestation of multiple source nodes. In other words, a trusted state or image vector does not have to be generated and evaluated for each source node.
[0082] Additionally, in implementations where the source node 302 is not connected (e.g., link down) to the verifier system 106, obtaining a trusted state or image vector from a particular candidate next hop provides an alternative mechanism for node attestation. In some implementations, the verifier system 106 appends a time-stamped response to the trusted state or image vector as part of the signing process, which may be referred to as stapling. As a result, the source node 302 does not have to contact the verifier system 106 to attest to a particular candidate next hop node.
[0083] 4 is a block diagram of an example of controller-orchestrated attestation-based routing 400 according to some implementations. In some examples, the source node 402 is similar to or adapted from the source node 102 of FIG. 1. As shown in FIG. 4, the attestation routing orchestrator 104 is separate from the source node 402 but coupled (e.g., connected) to the source node 402. In some examples, the attestation routing orchestrator 104 may include a controller having knowledge of the network 114 including the candidate next hop nodes 108A-108N and, optionally, the candidate second hop nodes 110A-110N and / or the candidate Nth hop nodes 112A-112N.
[0084] For example, in some implementations, the attestation routing orchestrator 104 may be a network management system (NMS). As another example, in some implementations, the attestation routing orchestrator 104 may be an intent-based networking system, such as Cisco's Digital Network Architecture (DNA). As yet another example, in some implementations, the attestation routing orchestrator 104 may be a wireless LAN controller (WLC), and the candidate next hop nodes 108A-108N and optionally the candidate second hop nodes 110A-110N and / or the candidate Nth hop nodes 112A-112N may be networking devices, such as access points, user devices, switches, routers, firewalls, etc.
[0085] The attestation routing orchestrator 104 can obtain attestation data (e.g., canary stamps) from the candidate next hop nodes 108A-108N. Each of the candidate next hop nodes 108A-108N can be included in a respective route between the source node 402 and a destination node (e.g., 114). In some implementations, the respective routes are independent of each other.
[0086] The attestation routing orchestrator 104 can determine a confidence score based on the attestation data. For example, in some cases, each of the confidence scores can be based on a comparison between a corresponding one of the attestation data and a trusted state or image vector. In some implementations, the attestation routing orchestrator 104 can obtain the trusted state or image vector from the verifier system 106.
[0087] In some examples, the attestation routing orchestrator 104 can obtain attestation data from a candidate second hop node (e.g., 110A-110N) and / or a candidate N-th hop node (112A-112N). Each of the candidate second hop nodes and / or the candidate N-th hop node can be included in a respective route between a corresponding one of the candidate next hop nodes 108A-108N and the destination node. Furthermore, each of the confidence scores can be further based on a comparison between a corresponding one of the attention data and a trusted state or image vector in combination with a comparison between another corresponding one of the attestation data from the candidate next hop nodes 108A-108N and a trusted state or image vector.
[0088] The attestation routing orchestrator 104 may select from the confidence scores a particular confidence score that satisfies one or more selection criteria, and the particular confidence score is associated with a particular candidate next hop node among the candidate next hop nodes 108A-108N.
[0089] The attestation routing orchestrator 104 can direct data packets destined for a destination node to a particular candidate next hop node. For example, in some cases, the attestation routing orchestrator 104 can provide attested route information (e.g., attested canary stamp data, security measurements, etc.) to the attested route manager 404D of the source node 402 to facilitate the source node 402 sending data packets to a particular candidate next hop node. The attested route information can indicate the trustworthiness of each of the candidate next hop nodes 108A-108N.
[0090] For example, in some implementations, the attested route information includes an identifier (e.g., an internet protocol (IP) address, a media access control (MAC) address, a service set identifier (SSID), etc.) that identifies a secure candidate next hop node among the candidate next hop nodes 108A-108N. In this example, the source node 402 can provide a data packet based on the identifier in order to route the data packet to the particular secure candidate next hop node.
[0091] As another example, in some implementations, the attested route information may include confidence scores associated with candidate next hop nodes 108A-108N. In this example, the attested route manager 404D may select a particular candidate score based on one or more selection criteria. Further, the attested route manager 404D may provide the data packet to a particular next hop node associated with a particular candidate score. In some examples, the attestation routing orchestrator 104 may stop directing additional data packets to a particular candidate next hop node in response to determining that a particular confidence score falls below a confidence threshold.
[0092] In some cases, the source node 402 may include one or more processors 404A. The one or more processors 404A may provide processing resources for managing the attested route information obtained from the attestation routing orchestrator 104. The source node 402 may also include a memory 404B. The memory 404B may include non-transitory memory, such as, for example, RAM, ROM, etc. In some examples, the memory 404B may store data, such as the obtained attested route information and data packets to be transmitted. The source node 402 may also include a network interface 404C for obtaining the attested route information and transmitting / receiving other data.
[0093] In some cases, whether a network device is compromised may be determined based on indicators associated with the network device and time information. The indicators may include, but are not limited to, a set of security measurements or evidence footprints that indicate whether a particular device is compromised. Such indicators may come from one or more sources, such as, but not limited to, TPM, canary stamps, syslog, YANG Push, EEM, peer devices, traffic counters, and other sources. Visibility may be a way to identify a compromise in a timely manner.
[0094] In the absence of indicators (i.e., no security measurements or footprints are available), the probability that a device has been compromised may be a function of the time that has elapsed since the last demonstration that the device was in a known good state. In some cases, the indicators described above may be used to provide a formula for estimating the probability or likelihood of compromise on any given device operating within a network.
[0095] For example, P_v1 may be defined as the probability of a type 1 compromise given the presence of a particular set of events / signatures corresponding to the compromise. P_v2 may be defined as the probability of a type 2 compromise, and P_vx may be defined as the probability of a type x compromise. Assuming that each of these compromises (P_v1 through P_vx) is independent, the following formula may provide the probability of compromise based on a recognized signature (P_v). P_v=1-((1-P_v1)(1-P_v2)(1-P_vx)) Equation (1)
[0096] If there are interdependencies between the different types of evaluated compromises (P_v1, P_v2, P_vx), other types of formulas can be used instead of or in addition to formula (1).
[0097] Further, in some cases, a given probability (e.g., P_v1-P_vx) may be determined based on event evidence from the device for which the probability of compromise is being calculated (e.g., via equation (1)) and / or evidence obtained from one or more devices adjacent to the device for which the probability of compromise is being calculated (e.g., via equation (1)).
[0098] In some cases, the probability that an invisible compromise has occurred on a device in a deployment environment may be expressed by the following formula: P i =(1-xt) n Formula (2)
[0099] In Equation 2, x is the probability of an invisible configuration opportunity in time period t, and n is the number of t intervals since the last verification of a good / non-compromised system state.
[0100] P iEffectively knowing may mean that the operator knows the expected half-life before a device is considered compromised independent of any concrete evidence. Note that the probability of invisible compromise does not have to be static; real-time correction based on current knowledge of the virus / attack may be possible.
[0101] Using the formulation for visible and invisible factors as described above (Equations (1) and (2)), the overall probability of compromise for a given device may be given by the following equation: P c =1-((1-P v )*(1-P i )) Formula (3)
[0102] Equation (3) provides an indicator of the trustworthiness of a given device. This metric takes into account both time-based entropy and any available evidence that can be correlated to a known compromise.
[0103] P c Being able to calculate (or estimate) P allows for efficient prioritization of various functions. For example, the controller can schedule when to do deeper validation (or perhaps direct refresh) of the device. This scheduling can include determining when to perform active checks to validate device memory locations (locations that may contain executable code that may have been compromised). These can be used to return the system to a known good state (and reset the entropy timer). The local configuration repository can be refreshed based on evidence of ongoing security / trust issues, rather than just based on time. Beyond scheduling system checks, P c There may be implications based on the value of P. For example, routing or switching behavior may be adjusted / influenced based on the relative reliability of the remote device. cIf the value is present, then covert data traffic flows may be routed around the device.
[0104] As a further benefit of the present disclosure, it is noted that encryption alone may be insufficient to protect covert flows, as there are scenarios (e.g., on the battlefield) where the fact that the flow occurs between endpoints may be considered information that must be protected.
[0105] As discussed above, the trust vector can allow claims from direct peers to represent their verified trust. The trust vector includes at least one security claim that attests to the security of a particular parameter, such as boot integrity, hardware integrity, or executable integrity. The security claim can affirm or decrement (or deny) the support of security. As a result, a mesh of trust can be established and maintained across a set of network devices. However, the trust vector does not represent the multiple-hop-away trust relationships utilized by routing protocols to ensure that only certain Internet Protocol (IP) packets take trusted paths.
[0106] With the advent of confidential computing, it has become useful for a TEE to provably assert the trustworthiness of any directly connected TEE. A system can be configured to directly peer with known and provably authentic / trusted instances of software. However, knowledge of the status of a directly connected peer does not prove the trustworthiness of the entire underlying system, as untrusted data may have been injected upstream. Thus, a single claim of trust at an endpoint is not sufficient to establish the level of trust of all components involved in a heterogeneous system, and there is no current way to share the trustworthiness of a heterogeneous system.
[0107] The present invention includes systems, methods, and computer-readable media for resolving these problems / inconsistencies. In particular, the present technology includes systems, methods, and computer-readable media for verifying the trustworthiness of any indirectly connected TEE that provides data to a directly connected TEE.
[0108] By standardizing the trust claims that can be asserted across heterogeneous systems, a heterogeneous set of applications and computing devices can maintain a system-wide trust vector (e.g., trust posture). The system-wide trust vector can be an intersection of positive claims and a union of decremental claims. In other examples, the system-wide trust posture can be a mathematical and logical combination of claims associated with service nodes in the heterogeneous system. The system-level trust vector can also be used by any device connecting to the heterogeneous system to determine whether to allow connectivity with a peer system and whether to apply policies (e.g., rate limiting, connecting to a specific context, etc.) to connections to the peer system.
[0109] Table 1 shows examples of various security claims that can be included in a trust vector, according to some examples. In some examples, the system can normalize (e.g., standardize) trust claims that can be asserted by an application verifier associated with an attest device. The security claims can either affirm the security of the device or decrement (e.g., deny) the security of the device.
[0110] [Table 1]
[0111] In some examples, the security claims may be a list of claims, where the presence of multiple claims may indicate that a race condition (e.g., ["executables-verified", "executables-fail"] is logically impossible. In other examples, the security claims may be key-value pairs identifying security claims and corresponding values, which may correspond to the security claims in Table 1. For an example object corresponding to JavaScript object notation (JSON) [{"areExecutablesVerified":true, "fileIntegrity":"225"}]), "areExecutablesVerified" corresponds to the "executables-verified" and "executables-fail" security claims and includes an integer value identifying a security value associated with the security claim associated with file system integrity.
[0112] Different trusted computing devices (e.g., different TEEs) have different security parameters, security requirements, etc. Examples of TEEs include, for example, TPM, Cisco trust anchor module (TAM), ARM TrustZone, AMD platform security processor (PSP), Secure Service Container (SSC), Secure Execution, Intel Software Guard Extensions (SGX) secure enclave, MultiZone, Keystone Enclave, Microsoft Pluton, and Penglai Enclave. Different trusted computing devices can have different security claims, and the disclosed systems and methods can normalize the device claims to the capabilities of different TEE types. For example, the system can identify which claims are automatic or implicit for a particular type of TEE. Some implicit claims can include that "confidential-data-in-motion" is valid when a workload is verifiably executing within a secure enclave (e.g., Intel SGX Secure Enclave). Table 2 below shows a comparison of security claims from TPM and TAM devices, and how the corresponding security claims can be determined.
[0113] [Table 2]
[0114] Tables 3 and 4 show examples of trust vectors, according to some examples. The trust vectors in Tables 3 and 4 are shown in JSON format for illustrative purposes and can be provided in any suitable format. In some implementations, the system can include a validation process associated with the attestor that generates the trust vector, which can aggregate a set of claims associated with the attestor device with other microservices / subsystems that exchange application data with the attestor. The trust vector can be exposed outside the set of attestors on the interface, allowing other processes to determine whether the attestor interface can assert that it can support a set of business-relevant / useful security claims outside the set of attestors. For example, the system can express whether a set of devices on the far side of the interface can meet a minimum trust level.
[0115] Table 3: Boolean-based credibility claims [Table 3]
[0116] Table 4: Integer-Based Reliability Claims [Table 4]
[0117] FIG. 5 illustrates an example of a hub-and-spoke topology 500 for interconnecting attestors, according to some examples. In some implementations, a reliability vector (e.g., security information) may be generated by the system by utilizing the base claim or the dependent claims. The method of generating the reliability vector may be based on the topology of the interconnected system. For example, the method of generating the reliability vector may include minimal computational effort and optimal operational simplicity. Three methods of calculating system level claims are described herein, and these methods may be based on the topology of interconnecting attestors.
[0118] In some implementations, a hub-and-spoke topology may be utilized to interconnect attestors. For example, the verifier 502 may evaluate the trustworthiness of each attestor and generate a device-specific trustworthiness vector (e.g., security information). For example, the verifier 502 may generate a trustworthiness vector for a storage medium 510, an artificial intelligence (AI) service 512, a cloud service 514, or a public cloud infrastructure 518. The client 504 may request the trustworthiness vector from the server 506 for a service based on a request transmitted over the network 508. In some cases, the service may be a temporary request (e.g., a bank account lookup) or a persistent connection (e.g., a streaming media connection). Non-limiting examples of persistent connections may be formed using, for example, a Google remote procedure call (gRPC) connection, a web socket connection, or the like.
[0119] The server 506 can generate security information (e.g., a trust vector) based on a hub-and-spoke topology based on interconnected devices associated with the service. For each attester service node (e.g., server 506) to which data requiring trusted processing is provided or received, the server 506 can retrieve an upstream trust vector from the associated service node using a mechanism to ensure that the trust vector cannot be tampered with. In the example shown in FIG. 5, the server 506 determines that a storage medium 510 (e.g., a relational database, a document database, a graph query language (GraphQL) service, etc.), an AI service 512, and a cloud service 514 can be integrated into the service by the server 506. The server 506 can also identify that a public cloud infrastructure 518 can be directly or indirectly implemented into the service for the client 504.
[0120] In some implementations, the server 506 can use different mechanisms to identify the associated service nodes. For example, the server 506 can use a group membership protocol to request that a management node that manages the members of the group identify the associated service nodes at run time. In another example, the server 506 and the service nodes can implement a spanning tree protocol to prevent the formation of a circular loop of associated service nodes. In one example, the server can provide a service and each connection request can be analyzed at compile time. For example, during the parsing phase of the compiler, each endpoint associated with a connection request can be identified, and the parser can be configured to insert code that requests security information based on the endpoint of each corresponding connection request.
[0121] The server 506 can also ensure that the trust vector cannot be tampered with, which can vary by TEE type. For example, in SGX, an interface with a developer-signed secure enclave may be sufficient. In the example of a service node of the server 506 that includes a TPM (e.g., storage medium 510, AI service 512, cloud service 514, or public cloud infrastructure 518), a stamped passport can be requested from the service node.
[0122] In some examples, the server 506 may convert any implied claims associated with the TEE into corresponding explicit claims. The server 506 may be configured to normalize the implied and explicit claims from various combinations of service nodes. Based on the normalized security claims, the server 506 may synthesize a composite trust vector (e.g., composite security information) that provides standardized security information for a group of heterogeneous service nodes. For example, a particular TEE type may include a single parameter that may correspond to two different normalized parameters, and the server 506 converts the single parameter into two normalized parameters. If a parameter of the trust vector is not available from the interface or cannot be verified, the trust vector may be considered null or set to a default value.
[0123] The server 506 synthesizes a composite reliability vector (e.g., reliability vector) based on the explicit claims and the implied claims based on the affirmative or decremental values from the reliability vector of the server 506 and the reliability vectors from the service nodes. In one example, the security claims may be logically combined to generate a composite reliability vector that summarizes the affirmative and decremental claims. For example, for any positive claim, a composite reliability vector may be generated based on an intersection (e.g., logical AND) of the device reliability vector and each upstream system reliability vector, and for any decremental claim, a composite reliability vector may be generated based on a union (e.g., logical OR) of the device reliability vector and each upstream system reliability vector. In some examples, the affirmative and decremental claims may be integers representing multiple values (e.g., 0-255), and each claim may be combined based on a mathematical operation.
[0124] FIG. 6 illustrates a sequence diagram 600 of a process for generating composite security information for a service in a heterogeneous network, according to one embodiment of the present disclosure. In FIG. 6, an originating node 602 is configured to request a trust vector (e.g., security information) from a service node 604 (e.g., a server, a network device, etc.). In this example, the service node 604 uses a service node 606 and a service node 608 for data in the service or other operations. Initially, the service node 604 may transmit a security information request 614 during a boot operation to request a verifier 610 to provide security information such as a trust vector, where the security information request 614 may include certain information such as information about hardware, software, firmware, file system, etc. In response, the service node 604 receives security information 616 such as a trust vector from the verifier 610 and securely stores the trust vector in a TEE (e.g., a secure environment such as a TPM, TAM, or other secure enclave as described above).
[0125] During a boot operation, the service node 606 can transmit a security information request 618 to the verifier 610 and receive security information 620 from the verifier 610 to securely store it in the secure environment. The service node 608 can also transmit a security information request 622 to the verifier 610 and receive security information 624 from the verifier 610 to securely store it in the secure environment during a boot operation.
[0126] The originating node 602 may receive instructions to configure a service, for example, from a user or service at the originating node 602, which causes the originating node 602 to transmit a security information request 626 to the service node 604. The security information request 626 may identify a service (e.g., a network service, an application service, etc.), and the service node 604 may determine other service nodes that may provide data, functionality, or other content to be provided to the originating node 602, in block 628. For example, the service node 604 may identify that the service node 606 provides data that needs to be trusted, and that the service node 608 provides functions performed on behalf of the service node 604. For example, the service node 608 may perform secure cryptographic functions, image processing functions, or natural language processing functions that are not suitable to be performed by the service node 604.
[0127] The identification of associated service nodes in block 628 can use different techniques to identify corresponding nodes. For example, the service nodes 604 can use a hub-and-spoke approach, whereby each associated service node further identifies associated service nodes. However, the hub-and-spoke approach can result in a circular loop of service nodes. In some examples, the service nodes 604 can be part of a group managed by a group membership protocol, and the service nodes 604 can connect to a management node (not shown) to identify associated service nodes. The various service nodes can also implement a spanning tree protocol or similar algorithm that prevents the creation of a circular loop of service nodes.
[0128] After identifying the associated service nodes (e.g., service node 606 and service node 608), service node 604 may transmit a security information request 630 to service node 606 and, in response, receive security information 620 associated with service node 606. Service node 604 may also transmit a security information request 632 to service node 608 and, in response, receive security information 624 associated with service node 608.
[0129] After receiving security information 620 and security information 624, in block 638, service node 604 creates (e.g., generates) composite security information 640 based on the security information of all nodes associated with the service. In this example, service node 604, service node 606, and service node 608 are participating nodes in the service, and service node 604 creates composite security information 640 from a combination of security information 616, security information 620, and security information 624. After creating composite security information 640, service node 604 sends composite security information 640 to originating node 602.
[0130] In response to receiving the composite security information 640, the originating node 602 ascertains whether the composite security information is sufficient to support a connection to the service node 604 for the service. For example, if the composite security information 640 indicates that at least one of the service nodes (e.g., service node 604, service node 606, or service node 608) does not have authentic hardware, the service may not be supported in block 642. In other examples, the originating node 602 may determine to connect with the service node 604 based on a different configuration that, for example, limits the secure information or provides a higher level of security that the service node 604 must meet. After determining the connection and connection configuration in block 642, the originating node 602 transmits a connection request 644 to the service node 604 to initiate a connection based on the connection configuration (assuming the originating node 602 allows the connection).
[0131] Figures 7-10 below illustrate various examples of generating a composite trust vector using different TEEs integral to a service node. The TEEs may provide different security claims, which are provided for illustrative purposes only. The implementation of the TEE may provide the security claims described below, or may provide any type of security claim.
[0132] 7 shows a diagram illustrating combining trust vectors from service nodes with different TEEs into a composite trust vector, according to one embodiment of the present disclosure. The composite trust vector 700 is generated from a TPM service node 702 that includes a TPM module, an SGX service node 704 that includes an SGX enclave, a TPM service node 706 that includes a TPM module, and a TAM service node 708 that includes a TAM module. In this example, the security claims in the trust vector are Boolean and are combined using an intersection of the positive claims and a union of the decrement claims.
[0133] The TPM service node 702 includes a trust vector 712 having three positive claims (hw-authentic, identity-verified, boot-verified). The TPM service node 702 is configured to receive a trust vector 714 from the SGX service node 704, a trust vector 716 from the TPM service node 706, and a trust vector 718 from the TAM service node 708, and generate a composite trust vector 700. In this example, the composite trust vector 700 includes a hw-authentic security claim and a boot-verified security claim based on the intersection of all trust vectors that include corresponding security claims. The trust vector 716 of the TPM service node 706 includes a file-repudiated decrement security claim, which will be included in the composite trust vector 700 based on the union of all decrement security claims.
[0134] 8 shows another diagram illustrating combining trust vectors from service nodes with different TEEs into a composite trust vector 800, according to one embodiment of the present disclosure. The composite trust vector 800 is generated from a TPM service node 802 that includes a TPM module, a TrustZone service node 804 that includes a TrustZone module, and a TAM service node 806 that includes a TAM module. Combining the positive and decremental security claims from the trust vector 812 of the TPM service node 802, the trust vector 814 of the TrustZone service node 804, and the trust vector 816 of the TAM service node 806 produces two positive security claims in the composite trust vector 800.
[0135] 9 shows a diagram illustrating combining trust vectors having integer values associated with different parameters from service nodes having different TEEs into a composite trust vector 900, according to one embodiment of the present disclosure. The composite trust vector 900 is generated from a TPM service node 902 including a TPM module, an SGX service node 904 including an SGX module, a TPM service node 906 including a TPM module, and a TAM service node 908 including a TAM module. In this example, the security claims in the trust vector are integer values and are combined using mathematical operations (e.g., median) and logical operations (e.g., floor functions or minimum functions).
[0136] In particular, the trust vector 912 of the TPM service node 902, the trust vector 914 of the SGX service node 904, the trust vector 916 of the TPM service node 906, and the trust vector 918 of the TAM service node 908 are mathematically and / or logically combined into a composite trust vector 900 such that each security claim is represented. The positive claims in this case may be a range from each positive claim which may be calculated using various means such as summation, weighting calculated based on integer values, non-linear combination, etc. Unlike the logical operations described in Figures 8 and 9, the absence of a security claim (e.g., the trust vector 918 does not include an identify-verified claim) may not affect the calculation of the composite trust vector 900. For example, the trust vector 918 does not include an identify-verified claim and the composite trust vector 900 calculates the identity-verified claim based on an average. However, in some cases, decremental security claims may be summed, as shown by the file-repudiated security claim in the composite trust vector 900, based on the sum of the file-repudiated security claims in the trust vector 916 and the trust vector 918.
[0137] 10 is a diagram illustrating combining trust vectors having integers associated with different parameters from a service node having a TEE into a composite trust vector according to one embodiment of the present disclosure. The composite trust vector 1000 is generated from a TPM service node 1002 including a TPM module, an SGX service node 1004 including an SGX, and a PSP service node 1006 including a PSP. In this example, the security claims in the trust vector are integer-valued and are combined using mathematical and / or logical operations.
[0138] The security claims of the composite trust vector 1000 are based on various combinations of the trust vector 1012 of the TPM service node 1002, the trust vector 1014 of the SGX service node 1004, and the trust vector 1016 of the PSP service node 1006. For example, the hw-authentic security claims in the composite trust vector 1000 use a floor (e.g., minimum) function, and the boot-verified security claims use an average of the explicit boot-verified claims.
[0139] In another example, the TPM service node 1002 can determine how to combine security claims based on data and / or functions provided by corresponding nodes. For example, the PSP service node 1006 can provide a function based on input data and return the processed data to the TPM service node 1002. In this example, the security claim of confidential-data-in-motion 255 is critical to the function provided by the PSP service node 1006, and the security claim of confidential-data-at-rest is not critical. The TPM service node 1002 determines that the composite trust vector 1000 includes the security claim of confidential-data-in-motion based on the service nodes (e.g., the TPM service node 1002 and the SGX service node 1004) that the security claims foresee by performing a floor function.
[0140] In some cases, different TEEs may have different formats, such as a list of corresponding claims (e.g., ["hw-authentic", "file-repudiated"]). In that case, the service node can determine the values associated with the explicit claims and determine the values associated with the implied claims. This allows the service node to normalize each type of security information regardless of the type of TEE and the format of the security information.
[0141] 11 illustrates an example method of a service node 1100 for generating a composite reliability vector in a heterogeneous network, according to one embodiment of the present disclosure. Although the example method 1100 illustrates a particular sequence of operations, the sequence may be modified without departing from the scope of the present disclosure. For example, some of the illustrated operations may be performed in parallel or in a different order without substantially affecting the functionality of the method 1100. In other examples, different components of an example device or system implementing the method 1100 may perform functions substantially simultaneously or in a particular order.
[0142] According to some examples, the method includes receiving a request for security information of the service node from a client device at block 1105. For example, the processor 1410 may receive a request for security information of the service node from the client device. In some examples, the request includes information identifying a service (e.g., an application programming interface (API), a gRPC service, etc.) to be received from the service node.
[0143] The verifier device determines security information of the service node and security information of the associated service node. The security information includes a number of claims related to a type of verification, which may include a positive or decrement value (e.g., a Boolean value, an integer value, etc.). In some examples, the type of verification includes at least one of hardware verification, unique identity verification, data integrity verification, boot verification, and executable verification. Additional types of verification may be included in the security information. The security information is based on unavailable hardware protection information that is separate from the operating system or application. For example, a vendor's public key may be hashed and verified by the TEE, and then the public key may be used to verify the digital signature of the trusted firmware from the vendor. The trusted firmware may be configured to provide security information such as boot verification, executable verification, etc.
[0144] After receiving the request for security information, the method 1100 includes, at block 1110, identifying (eg, by the processor 1410) at least one associated node for communicating with the service node based on the service.
[0145] In a first example, identifying associated nodes in block 1110 may include transmitting a request to identify candidate associated nodes to a management node. The management node executes a group membership protocol to create different groups associated with each service and responds to the request with a list of candidate associated nodes associated with the service. The service node may choose to receive security information from some or all of the candidate associated nodes identified by the management node.
[0146] In a second example, identifying associated nodes in block 1110 may include executing a spanning tree algorithm to identify candidate nodes associated with the service from the addressable nodes. The spanning tree algorithm may, for example, cause a node to provide security information advertisements to neighboring nodes, receive security information advertisements from neighboring nodes in response to the security information advertisements, identify loop routes associated with neighboring nodes based on multiple potential paths from the neighboring security information advertisements to the neighboring nodes, and exclude neighboring nodes as candidate child nodes.
[0147] After identifying the associated nodes, the method 1100 includes requesting (e.g., by the processor 1410) security information (e.g., trust vectors) of the associated node(s) at block 1115. In response to the request for security information, the service node may receive security information from each associated node.
[0148] After receiving security information from the associated node (or nodes), method 1100 includes generating (e.g., by processor 1410) composite security information from the service node's security information and the security information of the at least one associated service node, at block 1120. For example, processor 1410 shown in FIG. 14 may generate the composite security information from the service node's security information and the child node's security information. In some examples, generating the composite security information may include combining (e.g., by processor 1410) each corresponding claim in the service node's security information with the child node's security information to produce the composite security information. Examples of combining corresponding claims in security information are further described in FIGs. 12 and 13.
[0149] According to some examples, the method includes transmitting the composite security information to the client device at block 1125. For example, the processor 1410 shown in FIG. 14 may transmit the composite security information to the client device. The client device receives the composite security information and determines whether to allow the connection or implement a policy based on the composite security information.
[0150] FIG. 12 illustrates an example method 1200 for combining security information of various associated service nodes into composite security information, according to one embodiment of the present disclosure. For example, method 1200 may be performed by a service node receiving security information from an associated service node. Initially, method 1200 includes, in response to receiving security information from a child node, identifying (e.g., by processor 1410) an implied claim in the security information of the child node at block 1205 and appending the implied claim to the security information from the child node. At block 1210, the service node may identify the security information of the service node and values of corresponding claims in the security information of the associated service node. For example, the service node may identify a first value associated with a particular claim in the security information of the service node and a second value associated with that same particular claim in the security information of the child node.
[0151] At block 1215, the method 1200 may include performing (e.g., by the processor 1410) a union of the positive claims and the decrement claims to generate a composite security information. For example, the service node may generate a composite value for a particular claim in the composite security information based on the first value and the second value. Positive claims that are not present in each security information may be excluded from the composite security information, and decrement claims that are present in any security information may be included in the composite security information. In some examples, the composite security information may correspond to the security information shown in Table 4 above. In this example, the security information includes explicit positive claims and decrement claims.
[0152] 13 illustrates an example method 1300 for combining security information of various associated service nodes into composite security information, according to one embodiment of the present disclosure. For example, method 1300 may be performed by a service node that previously received security information from an associated service node. Initially, method 1200 includes, in response to receiving security information from a child node, identifying (e.g., by processor 1410) an implied claim in the security information of the child node, at block 1305, and appending the implied claim to the security information from the child node.
[0153] At block 1310, the method 1300 includes identifying (e.g., by the processor 1410) values of corresponding security claims in the security information of the service node and the security information of the associated service node. In this case, the claims may include integer values that determine whether the security claims are decremental or positive (or neutral). At block 1315, the method 1300 includes combining (e.g., by the processor 1410) the corresponding security claims using mathematical and logical operations to produce a composite security information. As described above, values can be averaged, non-linearly combined, combined based on weights, statistically combined using various statistical methods, minimum values can be identified, maximum values can be identified, etc. In some examples, the composite security information may correspond to the security information shown in Table 5 above. In this example, each security claim includes a range and may correspond to an explicit positive claim, a neutral claim, and a decrement claim. Neutral may be, for example, an inferred security claim that is not explicitly provided by the TEE.
[0154] 14 illustrates an example of a computing system 1400, which may be any computing device constituting any network node, such as, for example, an originating node 602, a service node 604, a service node 606, a service node 608, a verifier 610, a management node (not shown), or any components thereof in which the components of the system communicate with each other using connections 1405. The connections 1405 may be physical connections via a bus or direct connections to a processor 1410, such as in a chipset architecture. The connections 1405 may also be virtual, network, or logical connections.
[0155] In some embodiments, computing system 1400 is a distributed system in which the functionality described in this disclosure may be distributed within a data center, multiple data centers, a peer network, etc. In some embodiments, one or more of the system components described represent many such components, each performing some or all of the functionality for which the component is described. In some embodiments, the components may be physical or virtual devices.
[0156] The exemplary computing system 1400 includes at least one processing unit (CPU or processor) 1410 and connections 1405 coupling various system components to the processor 1410, including system memory 1415, such as ROM 1420 and RAM 1425. The computing system 1400 may include a cache of high-speed memory 1412 directly connected to, adjacent to, or integrated as part of the processor 1410.
[0157] The processor 1410 may include any general purpose processor, hardware or software services such as services 1432, 1434, and 1436 stored in a storage device 1430 configured to control the processor 1410, and special purpose processors where software instructions are embedded in the actual processor design. The processor 1410 may essentially be a completely self-contained computing system including multiple cores or processors, buses, memory controllers, caches, etc. Multi-core processors may be symmetric or asymmetric.
[0158] To enable user interaction, the computing system 1400 includes input devices 1445, which may represent any number of input mechanisms, such as a microphone for voice, a touch-sensitive screen for gesture or graphical input, a keyboard, a mouse, motion input, voice, etc. The computing system 1400 may also include output devices 1435, which may be one or more of several output mechanisms known to those skilled in the art. In some cases, a multimodal system may allow a user to provide multiple types of input / output to communicate with the computing system 1400. The computing system 1400 may include a communication interface 1440, which may generally govern and manage user input and system output. There is no restriction to operating on any particular hardware configuration, and thus the basic features herein may be readily substituted for improved hardware or firmware configurations as those configurations are developed.
[0159] The storage device 1430 may be a non-volatile memory device and may be a hard disk or other type of computer-readable medium capable of storing data accessible by a computer, such as a magnetic cassette, a flash memory card, a solid-state memory device, a digital versatile disk, a cartridge, RAM, ROM, and / or any combination of these devices.
[0160] The storage devices 1430 may include software services, servers, services, etc., where code defining such software, when executed by the processor 1410, causes the system to perform functions. In some embodiments, hardware services that perform particular functions may include software components stored in a computer-readable medium in association with the necessary hardware components, such as the processor 1410, connections 1405, output devices 1435, etc., to perform the functions.
[0161] 15 illustrates an example network device 1500 suitable for performing switching, routing, load balancing, and other networking operations. The example network device 1500 may be implemented as a switch, a router, a node, a metadata server, a load balancer, a client device, etc.
[0162] The network device 1500 includes a central processing unit (CPU) 1504, an interface 1502, and a bus 1510 (e.g., a Peripheral Component Interconnect (PCI) bus). When operating under the control of appropriate software or firmware, the CPU 1504 is responsible for performing packet management, error detection, and / or routing functions. The CPU 1504 preferably accomplishes all of these functions under the control of software, including an operating system and any appropriate application software. The CPU 1504 may include one or more processors 1508, such as a processor from the INTEL X86 family of microprocessors. In some cases, the processor 1508 may be hardware specifically designed to control the operation of the network device 1500. In some cases, the memory 1506 (e.g., non-volatile RAM, ROM, etc.) also forms part of the CPU 1504. However, there are many different ways in which memory may be coupled to a system.
[0163] The interfaces 1502 are typically provided as modular interface cards (sometimes referred to as "line cards"). In general, they control the transmission and reception of data packets over a network and sometimes support other peripherals used with the network device 1500. Among the interfaces that may be provided are Ethernet interfaces, frame relay interfaces, cable interfaces, digital subscriber line (DSL) interfaces, token ring interfaces, etc. In addition, various super-speed interfaces may be provided, such as high-speed token ring interfaces, wireless interfaces, Ethernet interfaces, Gigabit Ethernet interfaces, asynchronous transfer mode (ATM) interfaces, high-speed serial interfaces (HSSI), point-of-sale (POS) interfaces, fiber distributed data interface (FDDI), WIFI interfaces, 3G / 4G / 5G cellular interfaces, CAN BUS, LoRA, etc. In general, these interfaces may include ports suitable for communication with an appropriate medium. In some cases, they may include an independent processor and, in some cases, volatile RAM. Separate processors can control communication-intensive tasks such as packet switching, media control, signal processing, cryptography, and management. By providing separate processors for communication-intensive tasks, these interfaces allow the master CPU (e.g., 1504) to efficiently perform routing calculations, network diagnostics, security functions, and the like.
[0164] The system shown in Figure 15 is one particular network device of the present disclosure, but is by no means the only network device architecture in which the present disclosure may be implemented. For example, architectures having a single processor that handles communications and routing calculations, etc. are often used. Additionally, other types of interfaces and media may also be used with network device 1500.
[0165] Regardless of the configuration of the network device, the network device may employ one or more memories or memory modules (including memory 1506) configured to store program instructions for general network operations and mechanisms for roaming, route optimization, and routing functions described herein. The program instructions may, for example, control the operation of an operating system and / or one or more applications. The one or more memories may also be configured to store tables, such as mobility binding, registration, and association tables. The memory 1506 may also hold various software containers and virtualized execution environments and data.
[0166] Network device 1500 may also include an application specific integrated circuit (ASIC) 1512 that may be configured to perform routing and / or switching operations. ASIC 1512 may communicate with other components in network device 1500 via bus 1510 to exchange data and signals and coordinate various types of operations by network device 1500, such as, for example, routing, switching, and / or data storage operations.
[0167] In some examples, the disclosed system can verify the identity and security posture of a platform prior to interacting with the platform. For example, Azure Attestation receives evidence from the platform, validates it with security criteria, evaluates it against configurable policies, and generates attestation tokens for claims-based applications. The service supports attestation of TPMs and TEEs such as Intel® SGX and virtualization-based security (VBS) enclaves.
[0168] In summary, a system, apparatus, method, and computer readable medium for providing a security posture for services provided by a heterogeneous system are disclosed. A method for verifying trust by a service node includes receiving a request from a client device for security information of the service node, the request including information identifying a service to be received from the service node, identifying associated nodes communicating with the service node based on the service, requesting security information of the associated nodes after identifying the associated nodes, generating composite security information from the security information of the service node and the security information of the associated nodes, and transmitting the composite security information to the client device. The composite security information provides a security claim for the services implemented by the heterogeneous devices having different trusted execution environments.
[0169] Devices implementing methods according to these disclosures may comprise hardware, firmware, and / or software and may take any of a variety of form factors. Typical examples of such form factors include servers, laptops, smart phones, small form factor personal computers, personal digital assistants, etc. The functionality described herein may also be embodied in a peripheral device or an add-in card. Such functionality may also be implemented on a circuit board among different chips or different processes executed within a single device, as further examples.
[0170] For clarity of explanation, in some instances, the technology may be presented as including individual functional blocks, including functional blocks that comprise devices, device components, steps or routines in a method implemented in software or a combination of hardware and software.
[0171] Any of the steps, operations, functions, or processes described herein may be performed or implemented by hardware and software services or combinations of services, alone or in combination with other devices. In some embodiments, a service may be software that resides in memory of one or more servers of a client device and / or a content management system and performs one or more functions when a processor executes the software associated with the service. In some embodiments, a service is a program or a collection of programs that perform a particular function. In some embodiments, a service may be considered a server. Memory may be a non-transitory computer-readable medium.
[0172] In some embodiments, computer readable storage devices, media, and memories may include cables or wireless signals containing bit streams, etc. However, when referred to, non-transitory computer readable storage media explicitly excludes media such as energy, carrier signals, electromagnetic waves, and the signals themselves.
[0173] The method according to the above-described examples can be implemented using computer-executable instructions stored on or otherwise available from a computer-readable medium. Such instructions can include, for example, instructions and data that cause or otherwise configure a general purpose computer, a special purpose computer, or a special purpose processing device to perform a certain function or group of functions. Portions of the computer resources used may be accessible over a network. The computer-executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, or source code. Examples of computer-readable media that can be used to store instructions, information used, and / or information created during the method according to the described examples include magnetic or optical disks, solid state memory devices, flash memory, universal serial bus (USB) devices with non-volatile memory, networked storage devices, and the like.
[0174] Devices implementing methods according to these disclosures may comprise hardware, firmware, and / or software and may take any of a variety of form factors. Typical examples of such form factors include servers, laptops, smart phones, small form factor personal computers, personal digital assistants, etc. The functionality described herein may also be embodied in a peripheral device or an add-in card. Such functionality may also be implemented on a circuit board among different chips or different processes executed within a single device, as further examples.
[0175] The instructions, media for carrying such instructions, computing resources for executing them, and other structures for supporting such computing resources are means for providing the functionality described in these disclosures.
[0176] Although various examples and other information have been used to describe aspects within the scope of the appended claims, those skilled in the art may use these examples to derive a wide variety of implementations, and therefore no limitations of the claims should be implied based on the specific features or configurations in such examples. Moreover, while some subject matter may be described in language specific to example structural features and / or method steps, it should be understood that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. For example, such functionality may be differently distributed or performed in components other than those identified herein. Rather, the described features and steps are disclosed as example components of systems and methods within the scope of the appended claims.
[0177] Exemplary embodiments of the present disclosure include the following. Aspect 1. A method for verifying trust by a service node, comprising: receiving a request from a client device for security information of the service node, the request including information identifying a service to be received from the service node; identifying an associated node that communicates with the service node based on the service; after identifying the associated node, requesting security information of the associated node; generating composite security information from the security information of the service node and the security information of the associated node; and transmitting the composite security information to the client device.
[0178] Aspect 2. The method of aspect 1, wherein the security information includes a plurality of claims related to types of validation, the types of validation including at least one of hardware validation, unique identity validation, data integrity validation, boot validation, and executable validation.
[0179] Aspect 3. The method of aspect 1 or 2, initially including, in response to receiving security information from an associated node, identifying an implied claim in the security information of the associated node, and appending the implied claim to the security information from the associated node.
[0180] Aspect 4. The method of any one of aspects 1 to 3, wherein generating the composite security information includes combining corresponding claims in the security information of the service node and in the security information of the associated node to generate the composite security information.
[0181] Aspect 5. The method of any one of aspects 1-4, wherein combining each corresponding claim includes identifying a first value associated with the first claim in the security information of the service node and a second value associated with the first claim in the security information of the associated node, and generating a composite value for the first claim in the composite security information based on the first value and the second value.
[0182] Aspect 6. The method of any one of aspects 1-5, wherein combining each type of validation includes identifying a decrementing value associated with the first claim in one of the associated node security information and the service node security information, and excluding the first claim from the combined security information.
[0183] Aspect 7. The method of any one of aspects 1 to 6, wherein combining each type of validation includes normalizing security claims in the associated node security information and the service node security information, and combining each security claim into composite security information.
[0184] Example 8. The method of any one of Examples 1-7, further comprising: executing a spanning tree algorithm to identify candidate nodes associated with the service from the addressable nodes, wherein the associated node is selected from the candidate nodes.
[0185] Aspect 9. The method of any one of aspects 1-8, wherein the service node includes a first trusted module and the associated node includes a second trusted module, the first trusted module being different from the second trusted module.
[0186] Aspect 10. The method of any one of aspects 1-9, further comprising transmitting a request to a management node to identify candidate associated nodes and receiving a list of candidate associated nodes, wherein the management node executes a group membership protocol to create different groups associated with each service.
[0187] Aspect 11: A service for providing composite security information includes a storage (implemented in a circuit) configured to store instructions, and a processor configured to execute the instructions to cause the processor to receive a request from a client device for security information of a service node, the request including information identifying a service to be received from the service node, identify associated nodes in communication with the service node based on the service, request security information of the associated nodes after identifying the associated nodes, generate composite security information from the security information of the service node and the security information of the associated nodes, and transmit the composite security information to the client device.
[0188] Aspect 12: The service of aspect 11, wherein the security information includes a plurality of claims related to types of validation, the types of validation including at least one of hardware validation, unique identity validation, data integrity validation, boot validation, and executable validation.
[0189] Aspect 13: The service of aspect 11 or 12, wherein the processor is configured to execute instructions to cause the processor to identify an implied claim in security information of an associated node and add the implied claim to the security information from the associated node.
[0190] Aspect 14: The service of any one of aspects 11 to 13, wherein the processor is configured to execute instructions to cause the processor to combine corresponding claims in the security information of the service node and in the security information of the associated node to generate composite security information.
[0191] Aspect 15: The service of any one of aspects 11 to 14, wherein the processor is configured to execute instructions to cause the processor to identify a first value associated with a first claim in the security information of the service node and a second value associated with the first claim in the security information of the associated node, and generate a composite value for the first claim in the composite security information based on the first value and the second value.
[0192] Aspect 16: The service of any one of aspects 11 to 15, wherein the processor is configured to execute instructions to cause the processor to identify a decrementing value associated with a first claim in one of the associated node security information and the service node security information, and exclude the first claim from the composite security information.
[0193] Aspect 17: Normalizing security claims in the security information of the associated node and the security information of the service node, and combining each security claim into composite security information; and the service of any one of aspects 11 to 16.
[0194] Aspect 18: The service of any one of aspects 11 to 17, comprising: executing a spanning tree algorithm to identify candidate nodes associated with the service from addressable nodes, wherein the associated node is selected from the candidate nodes.
[0195] Aspect 19: The service of any one of aspects 11 to 18, wherein the service node includes a first trusted module, the associated node includes a second trusted module, and the first trusted module is different from the second trusted module.
[0196] Aspect 20: The service of any one of aspects 11 to 19, wherein the processor is configured to execute instructions to cause the processor to transmit a request to a management node to identify candidate associated nodes and receive a list of candidate associated nodes, and the management node executes a group membership protocol to create different groups associated with each service.
[0197] Aspect 21: A computer-readable medium including instructions for using a computer system. The computer includes a memory (e.g., implemented in a circuit) and a processor (or processors) coupled to the memory. The processor (or processors) is configured to execute the computer-readable medium and cause the processor to receive a request from a client device for security information of a service node, the request including information identifying a service to be received from the service node, identify associated nodes that communicate with the service node based on the service, request security information of the associated nodes after identifying the associated nodes, generate composite security information from the security information of the service node and the security information of the associated nodes, and transmit the composite security information to the client device.
[0198] Aspect 22: The computer-readable medium of aspect 21, wherein the security information includes a plurality of claims related to types of validation, the types of validation including at least one of hardware validation, unique identity validation, data integrity validation, boot validation, and executable validation.
[0199] Aspect 23: The computer-readable medium of aspect 21 or 22, wherein the processor is configured to execute the computer-readable medium and cause the processor to identify an implied claim in the security information of the associated node and add the implied claim to the security information from the associated node.
[0200] Aspect 24: The computer-readable medium of any one of aspects 21 to 23, wherein a processor is configured to execute the computer-readable medium and cause the processor to combine corresponding claims in the security information of the service node and in the security information of the associated node to generate composite security information.
[0201] Aspect 25: The computer-readable medium of any one of aspects 21 to 24, wherein a processor is configured to execute a computer-readable medium and cause the processor to identify a first value associated with a first claim in the security information of the service node and a second value associated with the first claim in the security information of the associated node, and generate a composite value for the first claim in the composite security information based on the first value and the second value.
[0202] Aspect 26: The computer-readable medium of any one of aspects 21 to 25, wherein a processor is configured to execute a computer-readable medium and cause the processor to identify a decrementing value associated with a first claim in one of the associated node security information and the service node security information, and exclude the first claim from the composite security information.
[0203] Aspect 27: Normalizing security claims in the associated node security information and the service node security information, and combining each security claim into composite security information; and the computer-readable medium of any one of aspects 21 to 26.
[0204] Aspect 28: The computer-readable medium of any one of aspects 21-27, performing a spanning tree algorithm to identify candidate nodes associated with a service from addressable nodes, wherein the associated node is selected from the candidate nodes.
[0205] Aspect 29: The computer-readable medium of any one of aspects 21-28, wherein the service node includes a first trusted module and the associated node includes a second trusted module, and the first trusted module is different from the second trusted module.
[0206] Aspect 30: The computer-readable medium of any one of aspects 21 to 29, wherein a processor is configured to execute a computer-readable medium and cause the processor to transmit a request to a management node to identify candidate associated nodes and receive a list of candidate associated nodes, and the management node executes a group membership protocol to create different groups associated with each service.
Claims
1. 1. A method for verifying trust by a service node, the method comprising: receiving a request from a client device for security information of the service node, the request including information identifying a service to be received from the service node; identifying an associated service node in communication with the service node based on the service, the associated service node being associated with the service; after identifying the associated service node, requesting security information of the associated service node; generating composite security information from the security information of the service node and the security information of the associated service node; transmitting the combined security information to the client device.
2. The method of claim 1 , wherein the security information comprises a number of claims associated with types of validation, the types of validation comprising at least one of hardware validation, unique identity validation, data integrity validation, boot validation, and executable validation.
3. 3. The method of claim 1, further comprising: in response to receiving the security information from the associated service node, identifying a predefined claim associated with a Trusted Execution Environment (TEE) type of the associated service node; and converting the predefined claim into a corresponding standardized claim.
4. The method of claim 2 or 3, wherein generating the composite security information comprises combining corresponding claims in the security information of the service node and in the security information of the related service node to produce the composite security information.
5. Combining the corresponding claims identifying a first value associated with a first claim in the security information of the service node and a second value associated with the first claim in the security information of the associated service node; and generating a composite value for the first claim in the composite security information based on the first value and the second value.
6. Combining the corresponding claims for positive claims that include a positive value, identifying an intersection of the security information of the associated service node and the security information of the service node; and excluding from the composite security information any positive claims that are not present in each security information.
7. Combining the corresponding claims A method according to any one of claims 4 to 6, comprising normalising the security claims in the security information of the associated service node and the security information of the service node.
8. 8. The method of claim 1, further comprising: executing a spanning tree algorithm to identify candidate nodes associated with the service from addressable nodes, the associated service node being selected from the candidate nodes.
9. 9. The method of claim 1, wherein the service node includes a first trusted module and the associated service node includes a second trusted module, the first trusted module being different from the second trusted module.
10. transmitting a request to a management node to identify candidate associated service nodes; The method of any one of claims 1 to 9, further comprising: receiving a list of the candidate associated service nodes from a management node that determines which candidate nodes are eligible to deliver the service.
11. A service node, storage configured to store instructions; A processor executing the instructions, the processor comprising: receiving a request from a client device for security information of the service node, the request including information identifying a service to be received from the service node; identifying an associated service node in communication with the service node based on the service, the associated service node being associated with the service; after identifying the associated service node, requesting security information of the associated service node; generating composite security information from the security information of the service node and the security information of the associated service node; A service node comprising: a processor configured to cause the combined security information to be transmitted to the client device.
12. The service node of claim 11 , wherein the security information includes a number of claims related to types of validation, the types of validation including at least one of hardware validation, unique identity validation, data integrity validation, boot validation, and executable validation.
13. 13. A service node according to claim 11 or 12, wherein generating the composite security information comprises identifying predefined claims associated with a Trusted Execution Environment (TEE) type of the associated service node and converting the predefined claims into corresponding standardized claims.
14. The processor executes the instructions, causing the processor to: A service node according to any one of claims 11 to 13, configured to combine the security information of the service node and each corresponding claim in the security information of the associated service node to produce the composite security information.
15. The processor executes the instructions, causing the processor to: Identifying a first value associated with a first claim in the security information of the service node and a second value associated with the first claim in the security information of the associated service node; and 15. The service node of claim 14, configured to generate a composite value for the first claim in the composite security information based on the first value and the second value.
16. generating the composite security information for positive claims that include a positive value, identifying an intersection of the security information of the associated service node and the security information of the service node; 16. A service node according to claim 14 or 15, further comprising excluding from the composite security information positive claims that are not present in each security information.
17. The processor executes the instructions, causing the processor to: A service node according to any one of claims 14 to 16, configured to cause normalisation of security claims in the security information of the associated service node and the security information of the service node.
18. The processor executes the instructions, causing the processor to:
18. A service node according to any one of claims 11 to 17, configured to cause a spanning tree algorithm to be executed to identify candidate nodes associated with the service from addressable nodes, the associated service node being selected from the candidate nodes.
19. A service node according to any one of claims 11 to 18, wherein the service node includes a first trusted module and the associated service node includes a second trusted module, the first trusted module being different from the second trusted module.
20. A non-transitory computer-readable medium containing instructions that, when executed by a computing system, cause the computing system to: receiving a request from a client device for security information of a service node, the request including information identifying a service to be received from the service node; identifying an associated service node in communication with the service node based on the service, the associated service node being associated with the service; after identifying the associated service node, requesting security information of the associated service node; generating composite security information from the security information of the service node and the security information of the associated service node; A non-transitory computer-readable medium that causes the combined security information to be transmitted to the client device.
21. A service node, the service node comprising: means for receiving a request for security information of the service node from a client device, the request including information identifying a service to be received from the service node; means for identifying an associated service node in communication with the service node based on the service, the associated service node being associated with the service; means for requesting security information of said associated service node after identifying said associated service node; means for generating composite security information from the security information of the service node and the security information of the associated service node; means for transmitting the combined security information to the client device.
22. A service node according to claim 21, further comprising means for carrying out the method according to any one of claims 2 to 10.
23. A computer program comprising instructions which, when executed by a computer, cause the computer to perform the steps of the method according to any one of claims 1 to 10.
24. the security information includes a number of claims related to a type of validation, each claim including either a value that affirms security support or a value that decrements security support; 2. The method of claim 1, wherein generating the composite security information includes identifying, for a claim including the decrementing value, a union of the security information of the associated service node and the security information of the service node, and generating composite security information from the security information of the service node and the security information of the associated service node, the composite security information including at least the identified union.
Citation Information
Patent Citations
Device, program and method for measuring platform configuration, device, program and method for authenticating platform configuration, device, program and method for verifying platform configuration, and device, program and method for disclosing platform configuration
JP2005301550A
Security-level visualization device
JP2012215994A
Mobile communication device and its operating method
JP2016536713A
Multiple domain system and domain ownership
JP2018063716A
Obtaining access data to a blockchain network using a highly available and trusted execution environment
JP2020527298A