| rfc9334.original | rfc9334.txt | |||
|---|---|---|---|---|
| RATS Working Group H. Birkholz | Internet Engineering Task Force (IETF) H. Birkholz | |||
| Internet-Draft Fraunhofer SIT | Request for Comments: 9334 Fraunhofer SIT | |||
| Intended status: Informational D. Thaler | Category: Informational D. Thaler | |||
| Expires: 1 April 2023 Microsoft | ISSN: 2070-1721 Microsoft | |||
| M. Richardson | M. Richardson | |||
| Sandelman Software Works | Sandelman Software Works | |||
| N. Smith | N. Smith | |||
| Intel | Intel | |||
| W. Pan | W. Pan | |||
| Huawei Technologies | Huawei | |||
| 28 September 2022 | January 2023 | |||
| Remote Attestation Procedures Architecture | Remote ATtestation procedureS (RATS) Architecture | |||
| draft-ietf-rats-architecture-22 | ||||
| Abstract | Abstract | |||
| In network protocol exchanges it is often useful for one end of a | In network protocol exchanges, it is often useful for one end of a | |||
| communication to know whether the other end is in an intended | communication to know whether the other end is in an intended | |||
| operating state. This document provides an architectural overview of | operating state. This document provides an architectural overview of | |||
| the entities involved that make such tests possible through the | the entities involved that make such tests possible through the | |||
| process of generating, conveying, and evaluating evidentiary claims. | process of generating, conveying, and evaluating evidentiary Claims. | |||
| An attempt is made to provide for a model that is neutral toward | It provides a model that is neutral toward processor architectures, | |||
| processor architectures, the content of claims, and protocols. | the content of Claims, and protocols. | |||
| Note to Readers | ||||
| Discussion of this document takes place on the RATS Working Group | ||||
| mailing list (rats@ietf.org), which is archived at | ||||
| https://mailarchive.ietf.org/arch/browse/rats/ | ||||
| (https://mailarchive.ietf.org/arch/browse/rats/). | ||||
| Source for this draft and an issue tracker can be found at | ||||
| https://github.com/ietf-rats-wg/architecture (https://github.com/ | ||||
| ietf-rats-wg/architecture). | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
| provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
| approved by the IESG are candidates for any level of Internet | ||||
| Standard; see Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 1 April 2023. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9334. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Reference Use Cases . . . . . . . . . . . . . . . . . . . . . 5 | 2. Reference Use Cases | |||
| 2.1. Network Endpoint Assessment . . . . . . . . . . . . . . . 5 | 2.1. Network Endpoint Assessment | |||
| 2.2. Confidential Machine Learning Model Protection . . . . . 6 | 2.2. Confidential Machine Learning Model Protection | |||
| 2.3. Confidential Data Protection . . . . . . . . . . . . . . 6 | 2.3. Confidential Data Protection | |||
| 2.4. Critical Infrastructure Control . . . . . . . . . . . . . 6 | 2.4. Critical Infrastructure Control | |||
| 2.5. Trusted Execution Environment Provisioning . . . . . . . 7 | 2.5. Trusted Execution Environment Provisioning | |||
| 2.6. Hardware Watchdog . . . . . . . . . . . . . . . . . . . . 7 | 2.6. Hardware Watchdog | |||
| 2.7. FIDO Biometric Authentication . . . . . . . . . . . . . . 8 | 2.7. FIDO Biometric Authentication | |||
| 3. Architectural Overview . . . . . . . . . . . . . . . . . . . 8 | 3. Architectural Overview | |||
| 3.1. Two Types of Environments of an Attester . . . . . . . . 10 | 3.1. Two Types of Environments of an Attester | |||
| 3.2. Layered Attestation Environments . . . . . . . . . . . . 12 | 3.2. Layered Attestation Environments | |||
| 3.3. Composite Device . . . . . . . . . . . . . . . . . . . . 14 | 3.3. Composite Device | |||
| 3.4. Implementation Considerations . . . . . . . . . . . . . . 16 | 3.4. Implementation Considerations | |||
| 4. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 4. Terminology | |||
| 4.1. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 4.1. Roles | |||
| 4.2. Artifacts . . . . . . . . . . . . . . . . . . . . . . . . 18 | 4.2. Artifacts | |||
| 5. Topological Patterns . . . . . . . . . . . . . . . . . . . . 20 | 5. Topological Patterns | |||
| 5.1. Passport Model . . . . . . . . . . . . . . . . . . . . . 20 | 5.1. Passport Model | |||
| 5.2. Background-Check Model . . . . . . . . . . . . . . . . . 21 | 5.2. Background-Check Model | |||
| 5.3. Combinations . . . . . . . . . . . . . . . . . . . . . . 22 | 5.3. Combinations | |||
| 6. Roles and Entities . . . . . . . . . . . . . . . . . . . . . 24 | 6. Roles and Entities | |||
| 7. Trust Model . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 7. Trust Model | |||
| 7.1. Relying Party . . . . . . . . . . . . . . . . . . . . . . 24 | 7.1. Relying Party | |||
| 7.2. Attester . . . . . . . . . . . . . . . . . . . . . . . . 26 | 7.2. Attester | |||
| 7.3. Relying Party Owner . . . . . . . . . . . . . . . . . . . 26 | 7.3. Relying Party Owner | |||
| 7.4. Verifier . . . . . . . . . . . . . . . . . . . . . . . . 26 | 7.4. Verifier | |||
| 7.5. Endorser, Reference Value Provider, and Verifier Owner . 28 | 7.5. Endorser, Reference Value Provider, and Verifier Owner | |||
| 8. Conceptual Messages . . . . . . . . . . . . . . . . . . . . . 29 | 8. Conceptual Messages | |||
| 8.1. Evidence . . . . . . . . . . . . . . . . . . . . . . . . 29 | 8.1. Evidence | |||
| 8.2. Endorsements . . . . . . . . . . . . . . . . . . . . . . 29 | 8.2. Endorsements | |||
| 8.3. Reference Values . . . . . . . . . . . . . . . . . . . . 30 | 8.3. Reference Values | |||
| 8.4. Attestation Results . . . . . . . . . . . . . . . . . . . 30 | 8.4. Attestation Results | |||
| 8.5. Appraisal Policies . . . . . . . . . . . . . . . . . . . 31 | 8.5. Appraisal Policies | |||
| 9. Claims Encoding Formats . . . . . . . . . . . . . . . . . . . 32 | 9. Claims Encoding Formats | |||
| 10. Freshness . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 10. Freshness | |||
| 10.1. Explicit Timekeeping using Synchronized Clocks . . . . . 34 | 10.1. Explicit Timekeeping Using Synchronized Clocks | |||
| 10.2. Implicit Timekeeping using Nonces . . . . . . . . . . . 35 | 10.2. Implicit Timekeeping Using Nonces | |||
| 10.3. Implicit Timekeeping using Epoch IDs . . . . . . . . . . 35 | 10.3. Implicit Timekeeping Using Epoch IDs | |||
| 10.4. Discussion . . . . . . . . . . . . . . . . . . . . . . . 36 | 10.4. Discussion | |||
| 11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 37 | 11. Privacy Considerations | |||
| 12. Security Considerations . . . . . . . . . . . . . . . . . . . 38 | 12. Security Considerations | |||
| 12.1. Attester and Attestation Key Protection . . . . . . . . 38 | 12.1. Attester and Attestation Key Protection | |||
| 12.1.1. On-Device Attester and Key Protection . . . . . . . 39 | 12.1.1. On-Device Attester and Key Protection | |||
| 12.1.2. Attestation Key Provisioning Processes . . . . . . . 39 | 12.1.2. Attestation Key Provisioning Processes | |||
| 12.2. Conceptual Message Protection . . . . . . . . . . . . . 41 | 12.2. Conceptual Message Protection | |||
| 12.3. Epoch ID-based Attestation . . . . . . . . . . . . . . . 42 | 12.3. Attestation Based on Epoch ID | |||
| 12.4. Trust Anchor Protection . . . . . . . . . . . . . . . . 42 | 12.4. Trust Anchor Protection | |||
| 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43 | 13. IANA Considerations | |||
| 14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 43 | 14. References | |||
| 15. Notable Contributions . . . . . . . . . . . . . . . . . . . . 43 | 14.1. Normative References | |||
| 16. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 | 14.2. Informative References | |||
| 16.1. Normative References . . . . . . . . . . . . . . . . . . 43 | Appendix A. Time Considerations | |||
| 16.2. Informative References . . . . . . . . . . . . . . . . . 44 | A.1. Example 1: Timestamp-Based Passport Model | |||
| Appendix A. Time Considerations . . . . . . . . . . . . . . . . 46 | A.2. Example 2: Nonce-Based Passport Model | |||
| A.1. Example 1: Timestamp-based Passport Model Example . . . . 48 | A.3. Example 3: Passport Model Based on Epoch ID | |||
| A.2. Example 2: Nonce-based Passport Model Example . . . . . . 50 | A.4. Example 4: Timestamp-Based Background-Check Model | |||
| A.3. Example 3: Epoch ID-based Passport Model Example . . . . 52 | A.5. Example 5: Nonce-Based Background-Check Model | |||
| A.4. Example 4: Timestamp-based Background-Check Model | Acknowledgments | |||
| Example . . . . . . . . . . . . . . . . . . . . . . . . . 53 | Contributors | |||
| A.5. Example 5: Nonce-based Background-Check Model Example . . 54 | Authors' Addresses | |||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 55 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 | ||||
| 1. Introduction | 1. Introduction | |||
| The question of how one system can know that another system can be | The question of how one system can know that another system can be | |||
| trusted has found new interest and relevance in a world where trusted | trusted has found new interest and relevance in a world where trusted | |||
| computing elements are maturing in processor architectures. | computing elements are maturing in processor architectures. | |||
| Systems that have been attested and verified to be in a good state | Systems that have been attested and verified to be in a good state | |||
| (for some value of "good") can improve overall system posture. | (for some value of "good") can improve overall system posture. | |||
| Conversely, systems that cannot be attested and verified to be in a | Conversely, systems that cannot be attested and verified to be in a | |||
| skipping to change at page 4, line 19 ¶ | skipping to change at line 141 ¶ | |||
| service, or otherwise flagged for repair. | service, or otherwise flagged for repair. | |||
| For example: | For example: | |||
| * A bank backend system might refuse to transact with another system | * A bank backend system might refuse to transact with another system | |||
| that is not known to be in a good state. | that is not known to be in a good state. | |||
| * A healthcare system might refuse to transmit electronic healthcare | * A healthcare system might refuse to transmit electronic healthcare | |||
| records to a system that is not known to be in a good state. | records to a system that is not known to be in a good state. | |||
| In Remote Attestation Procedures (RATS), one peer (the "Attester") | In Remote ATtestation procedureS (RATS), one peer (the "Attester") | |||
| produces believable information about itself - Evidence - to enable a | produces believable information about itself ("Evidence") to enable a | |||
| remote peer (the "Relying Party") to decide whether to consider that | remote peer (the "Relying Party") to decide whether or not to | |||
| Attester a trustworthy peer or not. RATS are facilitated by an | consider that Attester a trustworthy peer. Remote attestation | |||
| additional vital party, the Verifier. | procedures are facilitated by an additional vital party (the | |||
| "Verifier"). | ||||
| The Verifier appraises Evidence via appraisal policies and creates | The Verifier appraises Evidence via appraisal policies and creates | |||
| the Attestation Results to support Relying Parties in their decision | the Attestation Results to support Relying Parties in their decision | |||
| process. This document defines a flexible architecture consisting of | process. This document defines a flexible architecture consisting of | |||
| attestation roles and their interactions via conceptual messages. | attestation roles and their interactions via conceptual messages. | |||
| Additionally, this document defines a universal set of terms that can | Additionally, this document defines a universal set of terms that can | |||
| be mapped to various existing and emerging Remote Attestation | be mapped to various existing and emerging remote attestation | |||
| Procedures. Common topological patterns and the sequence of data | procedures. Common topological patterns and the sequence of data | |||
| flows associated with them, such as the "Passport Model" and the | flows associated with them, such as the "Passport Model" and the | |||
| "Background-Check Model", are illustrated. The purpose is to define | "Background-Check Model", are illustrated. The purpose is to define | |||
| useful terminology for remote attestation and enable readers to map | useful terminology for remote attestation and enable readers to map | |||
| their solution architecture to the canonical attestation architecture | their solution architecture to the canonical attestation architecture | |||
| provided here. Having a common terminology that provides well- | provided here. Having a common terminology that provides well- | |||
| understood meanings for common themes such as roles, device | understood meanings for common themes, such as roles, device | |||
| composition, topological patterns, and appraisal procedures is vital | composition, topological patterns, and appraisal procedures, is vital | |||
| for semantic interoperability across solutions and platforms | for semantic interoperability across solutions and platforms | |||
| involving multiple vendors and providers. | involving multiple vendors and providers. | |||
| Amongst other things, this document is about trust and | Amongst other things, this document is about trust and | |||
| trustworthiness. Trust is a choice one makes about another system. | trustworthiness. Trust is a choice one makes about another system. | |||
| Trustworthiness is a quality about the other system that can be used | Trustworthiness is a quality about the other system that can be used | |||
| in making one's decision to trust it or not. This is a subtle | in making one's decision to trust it or not. This is a subtle | |||
| difference and being familiar with the difference is crucial for | difference; being familiar with the difference is crucial for using | |||
| using this document. Additionally, the concepts of freshness and | this document. Additionally, the concepts of freshness and trust | |||
| trust relationships with respect to RATS are elaborated on to enable | relationships are specified to enable implementers to choose | |||
| implementers to choose appropriate solutions to compose their Remote | appropriate solutions to compose their remote attestation procedures. | |||
| Attestation Procedures. | ||||
| 2. Reference Use Cases | 2. Reference Use Cases | |||
| This section covers a number of representative and generic use cases | This section covers a number of representative and generic use cases | |||
| for remote attestation, independent of specific solutions. The | for remote attestation, independent of specific solutions. The | |||
| purpose is to provide motivation for various aspects of the | purpose is to provide motivation for various aspects of the | |||
| architecture presented in this document. Many other use cases exist, | architecture presented in this document. Many other use cases exist; | |||
| and this document does not intend to have a complete list, only to | this document does not contain a complete list. It only illustrates | |||
| illustrate a set of use cases that collectively cover all the | a set of use cases that collectively cover all the functionality | |||
| functionality required in the architecture. | required in the architecture. | |||
| Each use case includes a description followed by an additional | Each use case includes a description followed by an additional | |||
| summary of the Attester and Relying Party roles derived from the use | summary of the Attester and Relying Party roles derived from the use | |||
| case. | case. | |||
| 2.1. Network Endpoint Assessment | 2.1. Network Endpoint Assessment | |||
| Network operators want trustworthy reports that include identity and | Network operators want trustworthy reports that include identity and | |||
| version information about the hardware and software on the machines | version information about the hardware and software on the machines | |||
| attached to their network. Examples of reports include purposes, | attached to their network. Examples of reports include purposes | |||
| such as inventory summaries, audit results, anomaly notifications, | (such as inventory summaries), audit results, and anomaly | |||
| typically including the maintenance of log records or trend reports. | notifications (which typically include the maintenance of log records | |||
| The network operator may also want a policy by which full access is | or trend reports). The network operator may also want a policy by | |||
| only granted to devices that meet some definition of hygiene, and so | which full access is only granted to devices that meet some | |||
| wants to get Claims about such information and verify its validity. | definition of hygiene, and so wants to get Claims about such | |||
| Remote attestation is desired to prevent vulnerable or compromised | information and verify its validity. Remote attestation is desired | |||
| devices from getting access to the network and potentially harming | to prevent vulnerable or compromised devices from getting access to | |||
| others. | the network and potentially harming others. | |||
| Typically, a solution starts with a specific component (sometimes | Typically, a solution starts with a specific component (sometimes | |||
| referred to as a root of trust) that often provides trustworthy | referred to as a "root of trust") that often provides a trustworthy | |||
| device identity, and performs a series of operations that enables | device identity and performs a series of operations that enables | |||
| trustworthiness appraisals for other components. Such components | trustworthiness appraisals for other components. Such components | |||
| perform operations that help determine the trustworthiness of yet | perform operations that help determine the trustworthiness of yet | |||
| other components, by collecting, protecting or signing measurements. | other components by collecting, protecting, or signing measurements. | |||
| Measurements that have been signed by such components are comprised | Measurements that have been signed by such components are comprised | |||
| of Evidence that when evaluated either supports or refutes a claim of | of Evidence that either supports or refutes a claim of | |||
| trustworthiness. Measurements can describe a variety of attributes | trustworthiness when evaluated. Measurements can describe a variety | |||
| of system components, such as hardware, firmware, BIOS, software, | of attributes of system components, such as hardware, firmware, BIOS, | |||
| etc. | software, etc., and how they are hardened. | |||
| Attester: A device desiring access to a network. | Attester: A device desiring access to a network. | |||
| Relying Party: Network equipment such as a router, switch, or access | Relying Party: Network equipment (such as a router, switch, or | |||
| point, responsible for admission of the device into the network. | access point) that is responsible for admission of the device into | |||
| the network. | ||||
| 2.2. Confidential Machine Learning Model Protection | 2.2. Confidential Machine Learning Model Protection | |||
| A device manufacturer wants to protect its intellectual property. | A device manufacturer wants to protect its intellectual property. | |||
| The intellectual property's scope primarily encompasses the machine | The intellectual property's scope primarily encompasses the machine | |||
| learning (ML) model that is deployed in the devices purchased by its | learning (ML) model that is deployed in the devices purchased by its | |||
| customers. The protection goals include preventing attackers, | customers. The protection goals include preventing attackers, | |||
| potentially the customer themselves, from seeing the details of the | potentially the customer themselves, from seeing the details of the | |||
| model. | model. | |||
| This typically works by having some protected environment in the | Typically, this works by having some protected environment in the | |||
| device go through a remote attestation with some manufacturer service | device go through a remote attestation with some manufacturer service | |||
| that can assess its trustworthiness. If remote attestation succeeds, | that can assess its trustworthiness. If remote attestation succeeds, | |||
| then the manufacturer service releases either the model, or a key to | then the manufacturer service releases either the model or a key to | |||
| decrypt a model already deployed on the Attester in encrypted form, | decrypt a model already deployed on the Attester in encrypted form to | |||
| to the requester. | the requester. | |||
| Attester: A device desiring to run an ML model. | Attester: A device desiring to run an ML model. | |||
| Relying Party: A server or service holding ML models it desires to | Relying Party: A server or service holding ML models it desires to | |||
| protect. | protect. | |||
| 2.3. Confidential Data Protection | 2.3. Confidential Data Protection | |||
| This is a generalization of the ML model use case above, where the | This is a generalization of the ML model use case above where the | |||
| data can be any highly confidential data, such as health data about | data can be any highly confidential data, such as health data about | |||
| customers, payroll data about employees, future business plans, etc. | customers, payroll data about employees, future business plans, etc. | |||
| As part of the attestation procedure, an assessment is made against a | As part of the attestation procedure, an assessment is made against a | |||
| set of policies to evaluate the state of the system that is | set of policies to evaluate the state of the system that is | |||
| requesting the confidential data. Attestation is desired to prevent | requesting the confidential data. Attestation is desired to prevent | |||
| leaking data via compromised devices. | leaking data via compromised devices. | |||
| Attester: An entity desiring to retrieve confidential data. | Attester: An entity desiring to retrieve confidential data. | |||
| Relying Party: An entity that holds confidential data for release to | Relying Party: An entity that holds confidential data for release to | |||
| skipping to change at page 6, line 52 ¶ | skipping to change at line 267 ¶ | |||
| Potentially harmful physical equipment (e.g., power grid, traffic | Potentially harmful physical equipment (e.g., power grid, traffic | |||
| control, hazardous chemical processing, etc.) is connected to a | control, hazardous chemical processing, etc.) is connected to a | |||
| network in support of critical infrastructure. The organization | network in support of critical infrastructure. The organization | |||
| managing such infrastructure needs to ensure that only authorized | managing such infrastructure needs to ensure that only authorized | |||
| code and users can control corresponding critical processes, and that | code and users can control corresponding critical processes, and that | |||
| these processes are protected from unauthorized manipulation or other | these processes are protected from unauthorized manipulation or other | |||
| threats. When a protocol operation can affect a critical system | threats. When a protocol operation can affect a critical system | |||
| component of the infrastructure, devices attached to that critical | component of the infrastructure, devices attached to that critical | |||
| component require some assurances depending on the security context, | component require some assurances depending on the security context, | |||
| including that: a requesting device or application has not been | including assurances that a requesting device or application has not | |||
| compromised, and the requesters and actors act on applicable | been compromised and the requesters and actors act on applicable | |||
| policies. As such, remote attestation can be used to only accept | policies. As such, remote attestation can be used to only accept | |||
| commands from requesters that are within policy. | commands from requesters that are within policy. | |||
| Attester: A device or application wishing to control physical | Attester: A device or application wishing to control physical | |||
| equipment. | equipment. | |||
| Relying Party: A device or application connected to potentially | Relying Party: A device or application connected to potentially | |||
| dangerous physical equipment (hazardous chemical processing, | dangerous physical equipment (hazardous chemical processing, | |||
| traffic control, power grid, etc.). | traffic control, power grid, etc.). | |||
| 2.5. Trusted Execution Environment Provisioning | 2.5. Trusted Execution Environment Provisioning | |||
| A Trusted Application Manager (TAM) server is responsible for | A Trusted Application Manager (TAM) server is responsible for | |||
| managing the applications running in a Trusted Execution Environment | managing the applications running in a Trusted Execution Environment | |||
| (TEE) of a client device, as described in | (TEE) of a client device, as described in [TEEP-ARCH]. To achieve | |||
| [I-D.ietf-teep-architecture]. To achieve its purpose, the TAM needs | its purpose, the TAM needs to assess the state of a TEE or | |||
| to assess the state of a TEE, or of applications in the TEE, of a | applications in the TEE of a client device. The TEE conducts remote | |||
| client device. The TEE conducts Remote Attestation Procedures with | attestation procedures with the TAM, which can then decide whether | |||
| the TAM, which can then decide whether the TEE is already in | the TEE is already in compliance with the TAM's latest policy. If | |||
| compliance with the TAM's latest policy. If not, the TAM has to | not, the TAM has to uninstall, update, or install approved | |||
| uninstall, update, or install approved applications in the TEE to | applications in the TEE to bring it back into compliance with the | |||
| bring it back into compliance with the TAM's policy. | TAM's policy. | |||
| Attester: A device with a TEE capable of running trusted | Attester: A device with a TEE capable of running trusted | |||
| applications that can be updated. | applications that can be updated. | |||
| Relying Party: A TAM. | Relying Party: A TAM. | |||
| 2.6. Hardware Watchdog | 2.6. Hardware Watchdog | |||
| There is a class of malware that holds a device hostage and does not | There is a class of malware that holds a device hostage and does not | |||
| allow it to reboot to prevent updates from being applied. This can | allow it to reboot to prevent updates from being applied. This can | |||
| be a significant problem, because it allows a fleet of devices to be | be a significant problem because it allows a fleet of devices to be | |||
| held hostage for ransom. | held hostage for ransom. | |||
| A solution to this problem is a watchdog timer implemented in a | A solution to this problem is a watchdog timer implemented in a | |||
| protected environment such as a Trusted Platform Module (TPM), as | protected environment, such as a Trusted Platform Module (TPM), as | |||
| described in [TCGarch] section 43.3. If the watchdog does not | described in Section 43.3 of [TCGarch]. If the watchdog does not | |||
| receive regular, and fresh, Attestation Results as to the system's | receive regular and fresh Attestation Results regarding the system's | |||
| health, then it forces a reboot. | health, then it forces a reboot. | |||
| Attester: The device that should be protected from being held | Attester: The device that should be protected from being held | |||
| hostage for a long period of time. | hostage for a long period of time. | |||
| Relying Party: A watchdog capable of triggering a procedure that | Relying Party: A watchdog capable of triggering a procedure that | |||
| resets a device into a known, good operational state. | resets a device into a known, good operational state. | |||
| 2.7. FIDO Biometric Authentication | 2.7. FIDO Biometric Authentication | |||
| In the Fast IDentity Online (FIDO) protocol [WebAuthN], [CTAP], the | In the Fast IDentity Online (FIDO) protocol [WebAuthN] [CTAP], the | |||
| device in the user's hand authenticates the human user, whether by | device in the user's hand authenticates the human user, whether by | |||
| biometrics (such as fingerprints), or by PIN and password. FIDO | biometrics (such as fingerprints) or by PIN and password. FIDO | |||
| authentication puts a large amount of trust in the device compared to | authentication puts a large amount of trust in the device compared to | |||
| typical password authentication because it is the device that | typical password authentication because it is the device that | |||
| verifies the biometric, PIN and password inputs from the user, not | verifies the biometric, PIN, and password inputs from the user, not | |||
| the server. For the Relying Party to know that the authentication is | the server. For the Relying Party to know that the authentication is | |||
| trustworthy, the Relying Party needs to know that the Authenticator | trustworthy, the Relying Party needs to know that the Authenticator | |||
| part of the device is trustworthy. The FIDO protocol employs remote | part of the device is trustworthy. The FIDO protocol employs remote | |||
| attestation for this. | attestation for this. | |||
| The FIDO protocol supports several remote attestation protocols and a | The FIDO protocol supports several remote attestation protocols and a | |||
| mechanism by which new ones can be registered and added. Remote | mechanism by which new ones can be registered and added; thus, remote | |||
| attestation defined by RATS is thus a candidate for use in the FIDO | attestation defined by the RATS architecture is a candidate for use | |||
| protocol. | in the FIDO protocol. | |||
| Attester: FIDO Authenticator. | Attester: FIDO Authenticator. | |||
| Relying Party: Any web site, mobile application backend, or service | Relying Party: Any website, mobile application backend, or service | |||
| that relies on authentication data based on biometric information. | that relies on authentication data based on biometric information. | |||
| 3. Architectural Overview | 3. Architectural Overview | |||
| Figure 1 depicts the data that flows between different roles, | Figure 1 depicts the data that flows between different roles, | |||
| independent of protocol or use case. | independent of protocol or use case. | |||
| .--------. .---------. .--------. .-------------. | .--------. .---------. .--------. .-------------. | |||
| | Endorser | | Reference | | Verifier | | Relying Party | | | Endorser | | Reference | | Verifier | | Relying Party | | |||
| '-+------' | Value | | Owner | | Owner | | '-+------' | Value | | Owner | | Owner | | |||
| skipping to change at page 9, line 34 ¶ | skipping to change at line 373 ¶ | |||
| | v v | | v v | |||
| .-----+----. .---------------. | .-----+----. .---------------. | |||
| | Attester | | Relying Party | | | Attester | | Relying Party | | |||
| '----------' '---------------' | '----------' '---------------' | |||
| Figure 1: Conceptual Data Flow | Figure 1: Conceptual Data Flow | |||
| The text below summarizes the activities conducted by the roles | The text below summarizes the activities conducted by the roles | |||
| illustrated in Figure 1. Roles are assigned to entities. Entities | illustrated in Figure 1. Roles are assigned to entities. Entities | |||
| are often system components [RFC4949], such as devices. As the term | are often system components [RFC4949], such as devices. As the term | |||
| device is typically more intuitive than the term entity or system | "device" is typically more intuitive than the term "entity" or | |||
| component, device is often used as an illustrative synonym throughout | "system component", device is often used as an illustrative synonym | |||
| this document. | throughout this document. | |||
| The Attester role is assigned to entities that create Evidence that | The Attester role is assigned to entities that create Evidence that | |||
| is conveyed to a Verifier. | is conveyed to a Verifier. | |||
| The Verifier role is assigned to entities that use the Evidence, any | The Verifier role is assigned to entities that use the Evidence, any | |||
| Reference Values from Reference Value Providers, and any Endorsements | Reference Values from Reference Value Providers, and any Endorsements | |||
| from Endorsers, by applying an Appraisal Policy for Evidence to | from Endorsers by applying an Appraisal Policy for Evidence to assess | |||
| assess the trustworthiness of the Attester. This procedure is called | the trustworthiness of the Attester. This procedure is called the | |||
| the appraisal of Evidence. | "appraisal of Evidence". | |||
| Subsequently, the Verifier role generates Attestation Results for use | Subsequently, the Verifier role generates Attestation Results for use | |||
| by Relying Parties. | by Relying Parties. | |||
| The Appraisal Policy for Evidence might be obtained from the Verifier | The Appraisal Policy for Evidence might be obtained from the Verifier | |||
| Owner via some protocol mechanism, or might be configured into the | Owner via some protocol mechanism, configured into the Verifier by | |||
| Verifier by the Verifier Owner, or might be programmed into the | the Verifier Owner, programmed into the Verifier, or obtained via | |||
| Verifier, or might be obtained via some other mechanism. | some other mechanism. | |||
| The Relying Party role is assigned to an entity that uses Attestation | The Relying Party role is assigned to an entity that uses Attestation | |||
| Results by applying its own appraisal policy to make application- | Results by applying its own appraisal policy to make application- | |||
| specific decisions, such as authorization decisions. This procedure | specific decisions, such as authorization decisions. This procedure | |||
| is called the appraisal of Attestation Results. | is called the "appraisal of Attestation Results". | |||
| The Appraisal Policy for Attestation Results might be obtained from | The Appraisal Policy for Attestation Results might be obtained from | |||
| the Relying Party Owner via some protocol mechanism, or might be | the Relying Party Owner via some protocol mechanism, configured into | |||
| configured into the Relying Party by the Relying Party Owner, or | the Relying Party by the Relying Party Owner, programmed into the | |||
| might be programmed into the Relying Party, or might be obtained via | Relying Party, or obtained via some other mechanism. | |||
| some other mechanism. | ||||
| See Section 8 for further discussion of the conceptual messages shown | See Section 8 for further discussion of the conceptual messages shown | |||
| in Figure 1. Section 4 provides a more complete definition of all | in Figure 1. Section 4 provides a more complete definition of all | |||
| RATS roles. | RATS roles. | |||
| 3.1. Two Types of Environments of an Attester | 3.1. Two Types of Environments of an Attester | |||
| As shown in Figure 2, an Attester consists of at least one Attesting | As shown in Figure 2, an Attester consists of at least one Attesting | |||
| Environment and at least one Target Environment co-located in one | Environment and at least one Target Environment co-located in one | |||
| entity. In some implementations, the Attesting and Target | entity. In some implementations, the Attesting and Target | |||
| Environments might be combined into one environment. Other | Environments might be combined into one environment. Other | |||
| implementations might have multiple Attesting and Target | implementations might have multiple Attesting and Target | |||
| Environments, such as in the examples described in more detail in | Environments, such as in the examples described in more detail in | |||
| Section 3.2 and Section 3.3. Other examples may exist. All | Sections 3.2 and 3.3. Other examples may exist. All compositions of | |||
| compositions of Attesting and Target Environments discussed in this | Attesting and Target Environments discussed in this architecture can | |||
| architecture can be combined into more complex implementations. | be combined into more complex implementations. | |||
| .--------------------------------. | .--------------------------------. | |||
| | | | | | | |||
| | Verifier | | | Verifier | | |||
| | | | | | | |||
| '--------------------------------' | '--------------------------------' | |||
| ^ | ^ | |||
| | | | | |||
| .-------------------------|----------. | .-------------------------|----------. | |||
| | | | | | | | | |||
| skipping to change at page 11, line 33 ¶ | skipping to change at line 448 ¶ | |||
| | | | | | | | | | | |||
| | v | | | | v | | | |||
| | .-------+-----. | | | .-------+-----. | | |||
| | | Attesting | | | | | Attesting | | | |||
| | | Environment | | | | | Environment | | | |||
| | | | | | | | | | | |||
| | '-------------' | | | '-------------' | | |||
| | Attester | | | Attester | | |||
| '------------------------------------' | '------------------------------------' | |||
| Figure 2: Two Types of Environments | Figure 2: Two Types of Environments within an Attester | |||
| Claims are collected from Target Environments. That is, Attesting | Claims are collected from Target Environments. That is, Attesting | |||
| Environments collect the values and the information to be represented | Environments collect the values and the information to be represented | |||
| in Claims, by reading system registers and variables, calling into | in Claims by reading system registers and variables, calling into | |||
| subsystems, taking measurements on code, memory, or other security | subsystems, and taking measurements on code, memory, or other | |||
| related assets of the Target Environment. Attesting Environments | relevant assets of the Target Environment. Attesting Environments | |||
| then format the Claims appropriately, and typically use key material | then format the Claims appropriately; typically, they use key | |||
| and cryptographic functions, such as signing or cipher algorithms, to | material and cryptographic functions, such as signing or cipher | |||
| generate Evidence. There is no limit to or requirement on the types | algorithms, to generate Evidence. There is no limit or requirement | |||
| of hardware or software environments that can be used to implement an | on the types of hardware or software environments that can be used to | |||
| Attesting Environment, for example: Trusted Execution Environments | implement an Attesting Environment. For example, TEEs, embedded | |||
| (TEEs), embedded Secure Elements (eSEs), Trusted Platform Modules | Secure Elements (eSEs), TPMs [TCGarch], or BIOS firmware. | |||
| (TPMs) [TCGarch], or BIOS firmware. | ||||
| An arbitrary execution environment may not, by default, be capable of | An arbitrary execution environment may not, by default, be capable of | |||
| Claims collection for a given Target Environment. Execution | Claims collection for a given Target Environment. Execution | |||
| environments that are designed specifically to be capable of Claims | environments that are designed specifically to be capable of Claims | |||
| collection are referred to in this document as Attesting | collection are referred to in this document as "Attesting | |||
| Environments. For example, a TPM doesn't actively collect Claims | Environments". For example, a TPM doesn't actively collect Claims | |||
| itself, it instead requires another component to feed various values | itself. Instead, it requires another component to feed various | |||
| to the TPM. Thus, an Attesting Environment in such a case would be | values to the TPM. Thus, an Attesting Environment in such a case | |||
| the combination of the TPM together with whatever component is | would be the combination of the TPM together with whatever component | |||
| feeding it the measurements. | is feeding it the measurements. | |||
| 3.2. Layered Attestation Environments | 3.2. Layered Attestation Environments | |||
| By definition, the Attester role generates Evidence. An Attester may | By definition, the Attester role generates Evidence. An Attester may | |||
| consist of one or more nested environments (layers). The bottom | consist of one or more nested environments (layers). The bottom | |||
| layer of an Attester has an Attesting Environment that is typically | layer of an Attester has an Attesting Environment that is typically | |||
| designed to be immutable or difficult to modify by malicious code. | designed to be immutable or difficult to modify by malicious code. | |||
| In order to appraise Evidence generated by an Attester, the Verifier | In order to appraise Evidence generated by an Attester, the Verifier | |||
| needs to trust various layers, including the bottom Attesting | needs to trust various layers, including the bottom Attesting | |||
| Environment. Trust in the Attester's layers, including the bottom | Environment. Trust in the Attester's layers, including the bottom | |||
| layer, can be established in various ways as discussed in | layer, can be established in various ways, as discussed in | |||
| Section 7.4. | Section 7.4. | |||
| In layered attestation, Claims can be collected from or about each | In layered attestation, Claims can be collected from or about each | |||
| layer beginning with an initial layer. The corresponding Claims can | layer beginning with an initial layer. The corresponding Claims can | |||
| be structured in a nested fashion that reflects the nesting of the | be structured in a nested fashion that reflects the nesting of the | |||
| Attester's layers. Normally, Claims are not self-asserted, rather a | Attester's layers. Normally, Claims are not self-asserted. Rather, | |||
| previous layer acts as the Attesting Environment for the next layer. | a previous layer acts as the Attesting Environment for the next | |||
| Claims about an initial layer typically are asserted by an Endorser. | layer. Claims about an initial layer are typically asserted by an | |||
| Endorser. | ||||
| The example device illustrated in Figure 3 includes (A) a BIOS stored | The example device illustrated in Figure 3 includes (A) a BIOS stored | |||
| in read-only memory, (B) a bootloader, and (C) an operating system | in read-only memory, (B) a bootloader, and (C) an operating system | |||
| kernel. | kernel. | |||
| .-------------. Endorsement for ROM | .-------------. Endorsement for ROM | |||
| | Endorser +-----------------------. | | Endorser +-----------------------. | |||
| '-------------' | | '-------------' | | |||
| v | v | |||
| .-------------. Reference .----------. | .-------------. Reference .----------. | |||
| | Reference | Values for | | | | Reference | Values for | | | |||
| | Value +----------------->| Verifier | | | Value +----------------->| Verifier | | |||
| | Provider(s) | ROM, bootloader, | | | | Provider(s) | ROM, bootloader, | | | |||
| '-------------' and kernel '----------' | '-------------' and kernel '----------' | |||
| ^ | ^ | |||
| .------------------------------------. | | .------------------------------------. | | |||
| | | | | | | | | |||
| | .---------------------------. | | | | .---------------------------. | | | |||
| | | Kernel | | | | | | Kernel(C) | | | | |||
| | | | | | Layered | | | | | | Layered | |||
| | | Target | | | Evidence | | | Target | | | Evidence | |||
| | | Environment | | | for | | | Environment | | | for | |||
| | '---------------+-----------' | | bootloader | | '---------------+-----------' | | bootloader | |||
| | Collect | | | and | | Collect | | | and | |||
| | Claims | | | kernel | | Claims | | | kernel | |||
| | .---------------|-----------. | | | | .---------------|-----------. | | | |||
| | | Bootloader v | | | | | | Bootloader(B) v | | | | |||
| | | .-----------. | | | | | | .-----------. | | | | |||
| | | Target | Attesting | | | | | | | Target | Attesting | | | | | |||
| | | Environment |Environment+-----------' | | | Environment |Environment+-----------' | |||
| | | | | | | | | | | | | | | |||
| | | '-----------' | | | | | '-----------' | | | |||
| | | ^ | | | | | ^ | | | |||
| | '--------------+--|---------' | | | '--------------+--|---------' | | |||
| | Collect | | Evidence for | | | Collect | | Evidence for | | |||
| | Claims v | bootloader | | | Claims v | bootloader | | |||
| | .-----------------+---------. | | | .-----------------+---------. | | |||
| | | ROM | | | | | ROM(A) | | | |||
| | | | | | | | | | | |||
| | | Attesting | | | | | Attesting | | | |||
| | | Environment | | | | | Environment | | | |||
| | '---------------------------' | | | '---------------------------' | | |||
| | | | | | | |||
| '------------------------------------' | '------------------------------------' | |||
| Figure 3: Layered Attester | Figure 3: Layered Attester | |||
| The first Attesting Environment, the ROM in this example, has to | The first Attesting Environment (the ROM in this example) has to | |||
| ensure the integrity of the bootloader (the first Target | ensure the integrity of the bootloader (the first Target | |||
| Environment). There are potentially multiple kernels to boot, and | Environment). There are potentially multiple kernels to boot; the | |||
| the decision is up to the bootloader. Only a bootloader with intact | decision is up to the bootloader. Only a bootloader with intact | |||
| integrity will make an appropriate decision. Therefore, the Claims | integrity will make an appropriate decision. Therefore, the Claims | |||
| relating to the integrity of the bootloader have to be measured | relating to the integrity of the bootloader have to be measured | |||
| securely. At this stage of the boot-cycle of the device, the Claims | securely. At this stage of the boot cycle of the device, the Claims | |||
| collected typically cannot be composed into Evidence. | collected typically cannot be composed into Evidence. | |||
| After the boot sequence is started, the BIOS conducts the most | After the boot sequence is started, the BIOS conducts the most | |||
| important and defining feature of layered attestation, which is that | important and defining feature of layered attestation: the | |||
| the successfully measured bootloader now becomes (or contains) an | successfully measured bootloader now becomes (or contains) an | |||
| Attesting Environment for the next layer. This procedure in layered | Attesting Environment for the next layer. This procedure in layered | |||
| attestation is sometimes called "staging". It is important that the | attestation is sometimes called "staging". It is important that the | |||
| bootloader not be able to alter any Claims about itself that were | bootloader not be able to alter any Claims about itself that were | |||
| collected by the BIOS. This can be ensured having those Claims be | collected by the BIOS. This can be ensured having those Claims be | |||
| either signed by the BIOS or stored in a tamper-proof manner by the | either signed by the BIOS or stored in a tamper-proof manner by the | |||
| BIOS. | BIOS. | |||
| Continuing with this example, the bootloader's Attesting Environment | Continuing with this example, the bootloader's Attesting Environment | |||
| is now in charge of collecting Claims about the next Target | is now in charge of collecting Claims about the next Target | |||
| Environment, which in this example is the kernel to be booted. The | Environment. In this example, it is the kernel to be booted. The | |||
| final Evidence thus contains two sets of Claims: one set about the | final Evidence thus contains two sets of Claims: one set about the | |||
| bootloader as measured and signed by the BIOS, plus a set of Claims | bootloader as measured and signed by the BIOS and another set of | |||
| about the kernel as measured and signed by the bootloader. | Claims about the kernel as measured and signed by the bootloader. | |||
| This example could be extended further by making the kernel become | This example could be extended further by making the kernel become | |||
| another Attesting Environment for an application as another Target | another Attesting Environment for an application as another Target | |||
| Environment. This would result in a third set of Claims in the | Environment. This would result in a third set of Claims in the | |||
| Evidence pertaining to that application. | Evidence pertaining to that application. | |||
| The essence of this example is a cascade of staged environments. | The essence of this example is a cascade of staged environments. | |||
| Each environment has the responsibility of measuring the next | Each environment has the responsibility of measuring the next | |||
| environment before the next environment is started. In general, the | environment before the next environment is started. In general, the | |||
| number of layers may vary by device or implementation, and an | number of layers may vary by device or implementation, and an | |||
| skipping to change at page 14, line 51 ¶ | skipping to change at line 584 ¶ | |||
| that it measures, rather than only one as shown by example in | that it measures, rather than only one as shown by example in | |||
| Figure 3. | Figure 3. | |||
| 3.3. Composite Device | 3.3. Composite Device | |||
| A composite device is an entity composed of multiple sub-entities | A composite device is an entity composed of multiple sub-entities | |||
| such that its trustworthiness has to be determined by the appraisal | such that its trustworthiness has to be determined by the appraisal | |||
| of all these sub-entities. | of all these sub-entities. | |||
| Each sub-entity has at least one Attesting Environment collecting the | Each sub-entity has at least one Attesting Environment collecting the | |||
| Claims from at least one Target Environment, then this sub-entity | Claims from at least one Target Environment. Then, this sub-entity | |||
| generates Evidence about its trustworthiness. Therefore, each sub- | generates Evidence about its trustworthiness; therefore, each sub- | |||
| entity can be called an Attester. Among all the Attesters, there may | entity can be called an "Attester". Among all the Attesters, there | |||
| be only some which have the ability to communicate with the Verifier | may be only some that have the ability to communicate with the | |||
| while others do not. | Verifier while others do not. | |||
| For example, a carrier-grade router consists of a chassis and | For example, a carrier-grade router consists of a chassis and | |||
| multiple slots. The trustworthiness of the router depends on all its | multiple slots. The trustworthiness of the router depends on all its | |||
| slots' trustworthiness. Each slot has an Attesting Environment, such | slots' trustworthiness. Each slot has an Attesting Environment, such | |||
| as a TEE, collecting the Claims of its boot process, after which it | as a TEE, collecting the Claims of its boot process, after which it | |||
| generates Evidence from the Claims. | generates Evidence from the Claims. | |||
| Among these slots, only a "main" slot can communicate with the | Among these slots, only a "main" slot can communicate with the | |||
| Verifier while other slots cannot. But other slots can communicate | Verifier while other slots cannot. However, other slots can | |||
| with the main slot by the links between them inside the router. So | communicate with the main slot by the links between them inside the | |||
| the main slot collects the Evidence of other slots, produces the | router. The main slot collects the Evidence of other slots, produces | |||
| final Evidence of the whole router and conveys the final Evidence to | the final Evidence of the whole router, and conveys the final | |||
| the Verifier. Therefore, the router is a composite device, each slot | Evidence to the Verifier. Therefore, the router is a composite | |||
| is an Attester, and the main slot is the lead Attester. | device, each slot is an Attester, and the main slot is the lead | |||
| Attester. | ||||
| Another example is a multi-chassis router composed of multiple single | Another example is a multi-chassis router composed of multiple single | |||
| carrier-grade routers. Multi-chassis router setups create redundancy | carrier-grade routers. Multi-chassis router setups create redundancy | |||
| groups that provide higher throughput by interconnecting multiple | groups that provide higher throughput by interconnecting multiple | |||
| routers in these groups, which can be treated as one logical router | routers in these groups, which can be treated as one logical router | |||
| for simpler management. A multi-chassis router setup provides a | for simpler management. A multi-chassis router setup provides a | |||
| management point that connects to the Verifier. Typically, one | management point that connects to the Verifier. Typically, one | |||
| router in the group is designated as the main router. Other routers | router in the group is designated as the main router. Other routers | |||
| in the multi-chassis setup are connected to the main router only via | in the multi-chassis setup are connected to the main router only via | |||
| physical network links and are therefore managed and appraised via | physical network links; therefore, they are managed and appraised via | |||
| the main router's help. Consequently, a multi-chassis router setup | the main router's help. Consequently, a multi-chassis router setup | |||
| is a composite device, each router is an Attester, and the main | is a composite device, each router is an Attester, and the main | |||
| router is the lead Attester. | router is the lead Attester. | |||
| Figure 4 depicts the conceptual data flow for a composite device. | Figure 4 depicts the conceptual data flow for a composite device. | |||
| .-----------------------------. | .-----------------------------. | |||
| | Verifier | | | Verifier | | |||
| '-----------------------------' | '-----------------------------' | |||
| ^ | ^ | |||
| | | | | |||
| | Evidence of | | Evidence of | |||
| | Composite Device | | Composite Device | |||
| | | | | |||
| .----------------------------------|-------------------------------. | .----------------------------------|-------------------------------. | |||
| | .--------------------------------|-----. .------------. | | | .--------------------------------|-----. .------------. | | |||
| | | Collect .---------+--. | | | | | | | Collect .---------+--. | | | | | |||
| | | Claims .--------->| Attesting |<--------+ Attester B +-. | | | | Claims .--------->| Attesting |<--------+ Attester B +-. | | |||
| | | | |Environment | | '------------' | | | | | | |Environment | | '-+----------' | | | |||
| | | .--------+-------. | |<----------+ Attester C +-. | | | | .--------+-------. | |<----------+ Attester C +-. | | |||
| | | | Target | | | | '------------' | | | | | | Target | | | | '-+----------' | | | |||
| | | | Environment(s) | | |<------------+ ... | | | | | | Environment(s) | | |<------------+ ... | | | |||
| | | | | '------------' | Evidence '------------' | | | | | | '------------' | Evidence '------------' | | |||
| | | '----------------' | of | | | | '----------------' | of | | |||
| | | | Attesters | | | | | Attesters | | |||
| | | lead Attester A | (via Internal Links or | | | | lead Attester A | (via Internal Links or | | |||
| | '--------------------------------------' Network Connections) | | | '--------------------------------------' Network Connections) | | |||
| | | | | | | |||
| | Composite Device | | | Composite Device | | |||
| '------------------------------------------------------------------' | '------------------------------------------------------------------' | |||
| skipping to change at page 16, line 52 ¶ | skipping to change at line 667 ¶ | |||
| In this scenario, the trust model described in Section 7 can also be | In this scenario, the trust model described in Section 7 can also be | |||
| applied to an inside Verifier. | applied to an inside Verifier. | |||
| 3.4. Implementation Considerations | 3.4. Implementation Considerations | |||
| An entity can take on multiple RATS roles (e.g., Attester, Verifier, | An entity can take on multiple RATS roles (e.g., Attester, Verifier, | |||
| Relying Party, etc.) at the same time. Multiple entities can | Relying Party, etc.) at the same time. Multiple entities can | |||
| cooperate to implement a single RATS role as well. In essence, the | cooperate to implement a single RATS role as well. In essence, the | |||
| combination of roles and entities can be arbitrary. For example, in | combination of roles and entities can be arbitrary. For example, in | |||
| the composite device scenario, the entity inside the lead Attester | the composite device scenario, the entity inside the lead Attester | |||
| can also take on the role of a Verifier, and the outer entity of | can also take on the role of a Verifier and the outer entity of | |||
| Verifier can take on the role of a Relying Party. After collecting | Verifier can take on the role of a Relying Party. After collecting | |||
| the Evidence of other Attesters, this inside Verifier uses | the Evidence of other Attesters, this inside Verifier uses | |||
| Endorsements and appraisal policies (obtained the same way as by any | Endorsements and appraisal policies (obtained the same way as by any | |||
| other Verifier) as part of the appraisal procedures that generate | other Verifier) as part of the appraisal procedures that generate | |||
| Attestation Results. The inside Verifier then conveys the | Attestation Results. The inside Verifier then conveys the | |||
| Attestation Results of other Attesters to the outside Verifier, | Attestation Results of other Attesters to the outside Verifier, | |||
| whether in the same conveyance protocol as part of the Evidence or | whether in the same conveyance protocol as part of the Evidence or | |||
| not. | not. | |||
| As explained in Section 4, there are a variety of roles in the RATS | As explained in Section 4, there are a variety of roles in the RATS | |||
| architecture and they are defined by a unique combination of | architecture; they are defined by a unique combination of artifacts | |||
| artifacts they produce and consume. Conversely, artifacts are also | they produce and consume. Conversely, artifacts are also defined by | |||
| defined by the roles that produce or consume them. To produce an | the roles that produce or consume them. To produce an artifact means | |||
| artifact means that a given role introduces it into the RATS | that a given role introduces it into the RATS architecture. To | |||
| architecture. To consume an artifact means that a given role has | consume an artifact means that a given role has responsibility for | |||
| responsibility for processing it in the RATS architecture. Roles | processing it in the RATS architecture. Roles also have the ability | |||
| also have the ability to perform additional actions such as caching | to perform additional actions, such as caching or forwarding | |||
| or forwarding artifacts as opaque data. As depicted in Section 5, | artifacts as opaque data. As depicted in Section 5, these additional | |||
| these additional actions can be performed by several roles. | actions can be performed by several roles. | |||
| 4. Terminology | 4. Terminology | |||
| [RFC4949] has defined a number of terms that are also used in this | [RFC4949] has defined a number of terms that are also used in this | |||
| document. Some of the terms are close to, but not exactly the same. | document. Some of the terms are close to, but not exactly the same. | |||
| Where the terms are similar, they are noted below with references. | Where the terms are similar, they are noted below with references. | |||
| As explained in [RFC4949], Section 2.6 when this document says | As explained in Section 2.6 of [RFC4949], when this document says | |||
| "Compare:", the terminology used in this document differs | "Compare:", the terminology used in this document differs | |||
| significantly from the definition in the reference. | significantly from the definition in the reference. | |||
| This document uses the following terms. | This document uses the terms in the subsections that follow. | |||
| 4.1. Roles | 4.1. Roles | |||
| Attester: A role performed by an entity (typically a device) whose | Attester: A role performed by an entity (typically a device) whose | |||
| Evidence must be appraised in order to infer the extent to which | Evidence must be appraised in order to infer the extent to which | |||
| the Attester is considered trustworthy, such as when deciding | the Attester is considered trustworthy, such as when deciding | |||
| whether it is authorized to perform some operation. | whether it is authorized to perform some operation. | |||
| Produces: Evidence | Produces: Evidence | |||
| Relying Party: A role performed by an entity that depends on the | Relying Party: A role performed by an entity that depends on the | |||
| validity of information about an Attester, for purposes of | validity of information about an Attester for purposes of reliably | |||
| reliably applying application specific actions. Compare: /relying | applying application-specific actions. Compare: relying party | |||
| party/ in [RFC4949]. | [RFC4949]. | |||
| Consumes: Attestation Results, Appraisal Policy for Attestation | Consumes: Attestation Results, Appraisal Policy for Attestation | |||
| Results | Results | |||
| Verifier: A role performed by an entity that appraises the validity | Verifier: A role performed by an entity that appraises the validity | |||
| of Evidence about an Attester and produces Attestation Results to | of Evidence about an Attester and produces Attestation Results to | |||
| be used by a Relying Party. | be used by a Relying Party. | |||
| Consumes: Evidence, Reference Values, Endorsements, Appraisal | Consumes: Evidence, Reference Values, Endorsements, Appraisal | |||
| Policy for Evidence | Policy for Evidence | |||
| Produces: Attestation Results | Produces: Attestation Results | |||
| Relying Party Owner: A role performed by an entity (typically an | Relying Party Owner: A role performed by an entity (typically an | |||
| administrator), that is authorized to configure Appraisal Policy | administrator) that is authorized to configure an Appraisal Policy | |||
| for Attestation Results in a Relying Party. | for Attestation Results in a Relying Party. | |||
| Produces: Appraisal Policy for Attestation Results | Produces: Appraisal Policy for Attestation Results | |||
| Verifier Owner: A role performed by an entity (typically an | Verifier Owner: A role performed by an entity (typically an | |||
| administrator), that is authorized to configure Appraisal Policy | administrator) that is authorized to configure an Appraisal Policy | |||
| for Evidence in a Verifier. | for Evidence in a Verifier. | |||
| Produces: Appraisal Policy for Evidence | Produces: Appraisal Policy for Evidence | |||
| Endorser: A role performed by an entity (typically a manufacturer) | Endorser: A role performed by an entity (typically a manufacturer) | |||
| whose Endorsements may help Verifiers appraise the authenticity of | whose Endorsements may help Verifiers appraise the authenticity of | |||
| Evidence and infer further capabilities of the Attester. | Evidence and infer further capabilities of the Attester. | |||
| Produces: Endorsements | Produces: Endorsements | |||
| Reference Value Provider: A role performed by an entity (typically a | Reference Value Provider: A role performed by an entity (typically a | |||
| manufacturer) whose Reference Values help Verifiers appraise | manufacturer) whose Reference Values help Verifiers appraise | |||
| Evidence to determine if acceptable known Claims have been | Evidence to determine if acceptable known Claims have been | |||
| recorded by the Attester. | recorded by the Attester. | |||
| Produces: Reference Values | Produces: Reference Values | |||
| 4.2. Artifacts | 4.2. Artifacts | |||
| Claim: A piece of asserted information, often in the form of a name/ | Claim: A piece of asserted information, often in the form of a name/ | |||
| value pair. Claims make up the usual structure of Evidence and | value pair. Claims make up the usual structure of Evidence and | |||
| other RATS artifacts. Compare: /claim/ in [RFC7519]. | other RATS conceptual messages. Compare: claim [RFC7519]. | |||
| Endorsement: A secure statement that an Endorser vouches for the | Endorsement: A secure statement that an Endorser vouches for the | |||
| integrity of an Attester's various capabilities such as Claims | integrity of an Attester's various capabilities, such as Claims | |||
| collection and Evidence signing. | collection and Evidence signing. | |||
| Consumed By: Verifier | Consumed By: Verifier | |||
| Produced By: Endorser | Produced By: Endorser | |||
| Evidence: A set of Claims generated by an Attester to be appraised | Evidence: A set of Claims generated by an Attester to be appraised | |||
| by a Verifier. Evidence may include configuration data, | by a Verifier. Evidence may include configuration data, | |||
| measurements, telemetry, or inferences. | measurements, telemetry, or inferences. | |||
| Consumed By: Verifier | Consumed By: Verifier | |||
| Produced By: Attester | Produced By: Attester | |||
| Attestation Result: The output generated by a Verifier, typically | Attestation Result: The output generated by a Verifier, typically | |||
| including information about an Attester, where the Verifier | including information about an Attester, where the Verifier | |||
| vouches for the validity of the results. | vouches for the validity of the results. | |||
| Consumed By: Relying Party | Consumed By: Relying Party | |||
| Produced By: Verifier | Produced By: Verifier | |||
| Appraisal Policy for Evidence: A set of rules that informs how a | Appraisal Policy for Evidence: A set of rules that a Verifier uses | |||
| Verifier evaluates the validity of information about an Attester. | to evaluate the validity of information about an Attester. | |||
| Compare: /security policy/ in [RFC4949]. | Compare: security policy [RFC4949]. | |||
| Consumed By: Verifier | Consumed By: Verifier | |||
| Produced By: Verifier Owner | Produced By: Verifier Owner | |||
| Appraisal Policy for Attestation Results: A set of rules that direct | Appraisal Policy for Attestation Results: A set of rules that direct | |||
| how a Relying Party uses the Attestation Results regarding an | how a Relying Party uses the Attestation Results regarding an | |||
| Attester generated by the Verifiers. Compare: /security policy/ | Attester generated by the Verifiers. Compare: security policy | |||
| in [RFC4949]. | [RFC4949]. | |||
| Consumed by: Relying Party | Consumed by: Relying Party | |||
| Produced by: Relying Party Owner | Produced by: Relying Party Owner | |||
| Reference Values: A set of values against which values of Claims can | Reference Values: A set of values against which values of Claims can | |||
| be compared as part of applying an Appraisal Policy for Evidence. | be compared as part of applying an Appraisal Policy for Evidence. | |||
| Reference Values are sometimes referred to in other documents as | Reference Values are sometimes referred to in other documents as | |||
| known-good values, golden measurements, or nominal values, | "known-good values", "golden measurements", or "nominal values". | |||
| although those terms typically assume comparison for equality, | These terms typically assume comparison for equality, whereas | |||
| whereas here Reference Values might be more general and be used in | here, Reference Values might be more general and be used in any | |||
| any sort of comparison. | sort of comparison. | |||
| Consumed By: Verifier | Consumed By: Verifier | |||
| Produced By: Reference Value Provider | Produced By: Reference Value Provider | |||
| 5. Topological Patterns | 5. Topological Patterns | |||
| Figure 1 shows a data-flow diagram for communication between an | Figure 1 shows a data flow diagram for communication between an | |||
| Attester, a Verifier, and a Relying Party. The Attester conveys its | Attester, a Verifier, and a Relying Party. The Attester conveys its | |||
| Evidence to the Verifier for appraisal, and the Relying Party | Evidence to the Verifier for appraisal and the Relying Party receives | |||
| receives the Attestation Result from the Verifier. This section | the Attestation Result from the Verifier. This section refines the | |||
| refines the data-flow diagram by describing two reference models, as | data-flow diagram by describing two reference models, as well as one | |||
| well as one example composition thereof. The discussion that follows | example composition thereof. The discussion that follows is for | |||
| is for illustrative purposes only and does not constrain the | illustrative purposes only and does not constrain the interactions | |||
| interactions between RATS roles to the presented patterns. | between RATS roles to the presented models. | |||
| 5.1. Passport Model | 5.1. Passport Model | |||
| The passport model is so named because of its resemblance to how | The Passport Model is so named because of its resemblance to how | |||
| nations issue passports to their citizens. The nature of the | nations issue passports to their citizens. The nature of the | |||
| Evidence that an individual needs to provide to its local authority | Evidence that an individual needs to provide to its local authority | |||
| is specific to the country involved. The citizen retains control of | is specific to the country involved. The citizen retains control of | |||
| the resulting passport document and presents it to other entities | the resulting passport document and presents it to other entities | |||
| when it needs to assert a citizenship or identity Claim, such as an | when it needs to assert a citizenship or identity Claim, such as at | |||
| airport immigration desk. The passport is considered sufficient | an airport immigration desk. The passport is considered sufficient | |||
| because it vouches for the citizenship and identity Claims, and it is | because it vouches for the citizenship and identity Claims and it is | |||
| issued by a trusted authority. | issued by a trusted authority. | |||
| Thus, in this immigration desk analogy, the citizen is the Attester, | Thus, in this immigration desk analogy, the citizen is the Attester, | |||
| the passport issuing agency is a Verifier, and the passport | the passport-issuing agency is a Verifier, and the passport | |||
| application and identifying information (e.g., birth certificate) is | application and identifying information (e.g., birth certificate) is | |||
| the the Evidence. The passport is an Attestation Result, and the | the Evidence. The passport is an Attestation Result and the | |||
| immigration desk is a Relying Party. | immigration desk is a Relying Party. | |||
| In this model, an Attester conveys Evidence to a Verifier, which | In this model, an Attester conveys Evidence to a Verifier that | |||
| compares the Evidence against its appraisal policy. The Verifier | compares the Evidence against its appraisal policy. The Verifier | |||
| then gives back an Attestation Result which the Attester treats as | then gives back an Attestation Result that the Attester treats as | |||
| opaque data. | opaque data. | |||
| The Attester does not consume the Attestation Result, but might cache | The Attester does not consume the Attestation Result, but it might | |||
| it. The Attester can then present the Attestation Result (and | cache it. The Attester can then present the Attestation Result (and | |||
| possibly additional Claims) to a Relying Party, which then compares | possibly additional Claims) to a Relying Party, which then compares | |||
| this information against its own appraisal policy. The Attester may | this information against its own appraisal policy. The Attester may | |||
| also present the same Attestation Result to other Relying Parties. | also present the same Attestation Result to other Relying Parties. | |||
| Three ways in which the process may fail include: | There are three ways in which the process may fail: | |||
| * First, the Verifier may not issue a positive Attestation Result | * First, the Verifier may not issue a positive Attestation Result | |||
| due to the Evidence not passing the Appraisal Policy for Evidence. | due to the Evidence not passing the Appraisal Policy for Evidence. | |||
| * The second way in which the process may fail is when the | * The second way in which the process may fail is when the | |||
| Attestation Result is examined by the Relying Party, and based | Attestation Result is examined by the Relying Party, and based | |||
| upon the Appraisal Policy for Attestation Results, the result does | upon the Appraisal Policy for Attestation Results, the result does | |||
| not pass the policy. | not comply with the policy. | |||
| * The third way is when the Verifier is unreachable or unavailable. | * The third way is when the Verifier is unreachable or unavailable. | |||
| As with any other information needed by the Relying Party to make an | As with any other information needed by the Relying Party to make an | |||
| authorization decision, an Attestation Result can be carried in a | authorization decision, an Attestation Result can be carried in a | |||
| resource access protocol between the Attester and Relying Party. In | resource access protocol between the Attester and Relying Party. In | |||
| this model the details of the resource access protocol constrain the | this model, the details of the resource access protocol constrain the | |||
| serialization format of the Attestation Result. The format of the | serialization format of the Attestation Result. On the other hand, | |||
| Evidence on the other hand is only constrained by the Attester- | the format of the Evidence is only constrained by the Attester- | |||
| Verifier remote attestation protocol. This implies that | Verifier remote attestation protocol. This implies that | |||
| interoperability and standardization is more relevant for Attestation | interoperability and standardization is more relevant for Attestation | |||
| Results than it is for Evidence. | Results than it is for Evidence. | |||
| .------------. | .------------. | |||
| | | Compare Evidence | | | Compare Evidence | |||
| | Verifier | against appraisal policy | | Verifier | against appraisal policy | |||
| | | | | | | |||
| '--------+---' | '--------+---' | |||
| ^ | | ^ | | |||
| skipping to change at page 21, line 41 ¶ | skipping to change at line 890 ¶ | |||
| .---+--------. .-------------. | .---+--------. .-------------. | |||
| | +------------->| | Compare Attestation | | +------------->| | Compare Attestation | |||
| | Attester | Attestation | Relying | Result against | | Attester | Attestation | Relying | Result against | |||
| | | Result | Party | appraisal policy | | | Result | Party | appraisal policy | |||
| '------------' '-------------' | '------------' '-------------' | |||
| Figure 5: Passport Model | Figure 5: Passport Model | |||
| 5.2. Background-Check Model | 5.2. Background-Check Model | |||
| The background-check model is so named because of the resemblance of | The Background-Check Model is so named because of the resemblance of | |||
| how employers and volunteer organizations perform background checks. | how employers and volunteer organizations perform background checks. | |||
| When a prospective employee provides Claims about education or | When a prospective employee provides Claims about education or | |||
| previous experience, the employer will contact the respective | previous experience, the employer will contact the respective | |||
| institutions or former employers to validate the Claim. Volunteer | institutions or former employers to validate the Claim. Volunteer | |||
| organizations often perform police background checks on volunteers in | organizations often perform police background checks on volunteers in | |||
| order to determine the volunteer's trustworthiness. Thus, in this | order to determine the volunteer's trustworthiness. Thus, in this | |||
| analogy, a prospective volunteer is an Attester, the organization is | analogy, a prospective volunteer is an Attester, the organization is | |||
| the Relying Party, and the organization that issues a report is a | the Relying Party, and the organization that issues a report is a | |||
| Verifier. | Verifier. | |||
| In this model, an Attester conveys Evidence to a Relying Party, which | In this model, an Attester conveys Evidence to a Relying Party, which | |||
| treats it as opaque and simply forwards it on to a Verifier. The | treats it as opaque and simply forwards it on to a Verifier. The | |||
| Verifier compares the Evidence against its appraisal policy, and | Verifier compares the Evidence against its appraisal policy and | |||
| returns an Attestation Result to the Relying Party. The Relying | returns an Attestation Result to the Relying Party. The Relying | |||
| Party then compares the Attestation Result against its own appraisal | Party then compares the Attestation Result against its own appraisal | |||
| policy. | policy. | |||
| The resource access protocol between the Attester and Relying Party | The resource access protocol between the Attester and Relying Party | |||
| includes Evidence rather than an Attestation Result, but that | includes Evidence rather than an Attestation Result, but that | |||
| Evidence is not processed by the Relying Party. | Evidence is not processed by the Relying Party. | |||
| Since the Evidence is merely forwarded on to a trusted Verifier, any | Since the Evidence is merely forwarded on to a trusted Verifier, any | |||
| serialization format can be used for Evidence because the Relying | serialization format can be used for Evidence because the Relying | |||
| Party does not need a parser for it. The only requirement is that | Party does not need a parser for it. The only requirement is that | |||
| the Evidence can be _encapsulated in_ the format required by the | the Evidence can be _encapsulated_ in the format required by the | |||
| resource access protocol between the Attester and Relying Party. | resource access protocol between the Attester and Relying Party. | |||
| However, like in the Passport model, an Attestation Result is still | However, as seen in the Passport Model, an Attestation Result is | |||
| consumed by the Relying Party. Code footprint and attack surface | still consumed by the Relying Party. Code footprint and attack | |||
| area can be minimized by using a serialization format for which the | surface area can be minimized by using a serialization format for | |||
| Relying Party already needs a parser to support the protocol between | which the Relying Party already needs a parser to support the | |||
| the Attester and Relying Party, which may be an existing standard or | protocol between the Attester and Relying Party, which may be an | |||
| widely deployed resource access protocol. Such minimization is | existing standard or widely deployed resource access protocol. Such | |||
| especially important if the Relying Party is a constrained node. | minimization is especially important if the Relying Party is a | |||
| constrained node. | ||||
| .-------------. | .-------------. | |||
| | | Compare Evidence | | | Compare Evidence | |||
| | Verifier | against appraisal | | Verifier | against appraisal | |||
| | | policy | | | policy | |||
| '--------+----' | '--------+----' | |||
| ^ | | ^ | | |||
| Evidence | | Attestation | Evidence | | Attestation | |||
| | | Result | | | Result | |||
| | v | | v | |||
| .------------. .----|--------. | .------------. .----|--------. | |||
| | +-------------->|---' | Compare Attestation | | +-------------->|---' | Compare Attestation | |||
| | Attester | Evidence | Relying | Result against | | Attester | Evidence | Relying | Result against | |||
| | | | Party | appraisal policy | | | | Party | appraisal policy | |||
| '------------' '-------------' | '------------' '-------------' | |||
| Figure 6: Background-Check Model | Figure 6: Background-Check Model | |||
| 5.3. Combinations | 5.3. Combinations | |||
| One variation of the background-check model is where the Relying | One variation of the Background-Check Model is where the Relying | |||
| Party and the Verifier are on the same machine, performing both | Party and the Verifier are on the same machine, performing both | |||
| functions together. In this case, there is no need for a protocol | functions together. In this case, there is no need for a protocol | |||
| between the two. | between the two. | |||
| It is also worth pointing out that the choice of model depends on the | It is also worth pointing out that the choice of model depends on the | |||
| use case, and that different Relying Parties may use different | use case and that different Relying Parties may use different | |||
| topological patterns. | topological patterns. | |||
| The same device may need to create Evidence for different Relying | The same device may need to create Evidence for different Relying | |||
| Parties and/or different use cases. For instance, it would use one | Parties and/or different use cases. For instance, it would use one | |||
| model to provide Evidence to a network infrastructure device to gain | model to provide Evidence to a network infrastructure device to gain | |||
| access to the network, and the other model to provide Evidence to a | access to the network and the other model to provide Evidence to a | |||
| server holding confidential data to gain access to that data. As | server holding confidential data to gain access to that data. As | |||
| such, both models may simultaneously be in use by the same device. | such, both models may simultaneously be in use by the same device. | |||
| Figure 7 shows another example of a combination where Relying Party 1 | Figure 7 shows another example of a combination where Relying Party 1 | |||
| uses the passport model, whereas Relying Party 2 uses an extension of | uses the Passport Model, whereas Relying Party 2 uses an extension of | |||
| the background-check model. Specifically, in addition to the basic | the Background-Check Model. Specifically, in addition to the basic | |||
| functionality shown in Figure 6, Relying Party 2 actually provides | functionality shown in Figure 6, Relying Party 2 actually provides | |||
| the Attestation Result back to the Attester, allowing the Attester to | the Attestation Result back to the Attester, allowing the Attester to | |||
| use it with other Relying Parties. This is the model that the | use it with other Relying Parties. This is the model that the TAM | |||
| Trusted Application Manager plans to support in the TEEP architecture | plans to support in the TEEP architecture [TEEP-ARCH]. | |||
| [I-D.ietf-teep-architecture]. | ||||
| .-------------. | .-------------. | |||
| | | Compare Evidence | | | Compare Evidence | |||
| | Verifier | against appraisal policy | | Verifier | against appraisal policy | |||
| | | | | | | |||
| '--------+----' | '--------+----' | |||
| ^ | | ^ | | |||
| Evidence | | Attestation | Evidence | | Attestation | |||
| | | Result | | | Result | |||
| | v | | v | |||
| skipping to change at page 24, line 11 ¶ | skipping to change at line 1002 ¶ | |||
| '-------------' '-------------' | '-------------' '-------------' | |||
| Figure 7: Example Combination | Figure 7: Example Combination | |||
| 6. Roles and Entities | 6. Roles and Entities | |||
| An entity in the RATS architecture includes at least one of the roles | An entity in the RATS architecture includes at least one of the roles | |||
| defined in this document. | defined in this document. | |||
| An entity can aggregate more than one role into itself, such as being | An entity can aggregate more than one role into itself, such as being | |||
| both a Verifier and a Relying Party, or being both a Reference Value | both a Verifier and a Relying Party or being both a Reference Value | |||
| Provider and an Endorser. As such, any conceptual messages (see | Provider and an Endorser. As such, any conceptual messages (see | |||
| Section 8 for more discussion) originating from such roles might also | Section 8 for more discussion) originating from such roles might also | |||
| be combined. For example, Reference Values might be conveyed as part | be combined. For example, Reference Values might be conveyed as part | |||
| of an appraisal policy if the Verifier Owner and Reference Value | of an appraisal policy if the Verifier Owner and Reference Value | |||
| Provider roles are combined. Similarly, Reference Values might be | Provider roles are combined. Similarly, Reference Values might be | |||
| conveyed as part of an Endorsement if the Endorser and Reference | conveyed as part of an Endorsement if the Endorser and Reference | |||
| Value Provider roles are combined. | Value Provider roles are combined. | |||
| Interactions between roles aggregated into the same entity do not | Interactions between roles aggregated into the same entity do not | |||
| necessarily use the Internet Protocol. Such interactions might use a | necessarily use the Internet Protocol. Such interactions might use a | |||
| loopback device or other IP-based communication between separate | loopback device or other IP-based communication between separate | |||
| environments, but they do not have to. Alternative channels to | environments, but they do not have to. Alternative channels to | |||
| convey conceptual messages include function calls, sockets, GPIO | convey conceptual messages include function calls, sockets, General- | |||
| interfaces, local busses, or hypervisor calls. This type of | Purpose Input/Output (GPIO) interfaces, local buses, or hypervisor | |||
| conveyance is typically found in composite devices. Most | calls. This type of conveyance is typically found in composite | |||
| importantly, these conveyance methods are out-of-scope of RATS, but | devices. Most importantly, these conveyance methods are out of scope | |||
| they are presumed to exist in order to convey conceptual messages | of the RATS architecture, but they are presumed to exist in order to | |||
| appropriately between roles. | convey conceptual messages appropriately between roles. | |||
| In essence, an entity that combines more than one role creates and | In essence, an entity that combines more than one role creates and | |||
| consumes the corresponding conceptual messages as defined in this | consumes the corresponding conceptual messages as defined in this | |||
| document. | document. | |||
| 7. Trust Model | 7. Trust Model | |||
| 7.1. Relying Party | 7.1. Relying Party | |||
| This document covers scenarios for which a Relying Party trusts a | This document covers scenarios for which a Relying Party trusts a | |||
| Verifier that can appraise the trustworthiness of information about | Verifier that can appraise the trustworthiness of information about | |||
| an Attester. Such trust is expressed by storing one or more "trust | an Attester. Such trust is expressed by storing one or more "trust | |||
| anchors" in a secure location known as a trust anchor store. | anchors" in a secure location known as a "trust anchor store". | |||
| As defined in [RFC6024], "A trust anchor represents an authoritative | As defined in [RFC6024]: | |||
| entity via a public key and associated data. The public key is used | ||||
| to verify digital signatures, and the associated data is used to | | A trust anchor represents an authoritative entity via a public key | |||
| constrain the types of information for which the trust anchor is | | and associated data. The public key is used to verify digital | |||
| authoritative." The trust anchor may be a certificate or it may be a | | signatures, and the associated data is used to constrain the types | |||
| raw public key along with additional data if necessary such as its | | of information for which the trust anchor is authoritative. | |||
| public key algorithm and parameters. In the context of this | ||||
| document, a trust anchor may also be a symmetric key, as in | The trust anchor may be a certificate or it may be a raw public key | |||
| [TCG-DICE-SIBDA] or the symmetric mode described in | along with additional data if necessary, such as its public key | |||
| [I-D.tschofenig-rats-psa-token]. | algorithm and parameters. In the context of this document, a trust | |||
| anchor may also be a symmetric key, as in [TCG-DICE-SIBDA], or the | ||||
| symmetric mode described in [RATS-PSA-TOKEN]. | ||||
| Thus, trusting a Verifier might be expressed by having the Relying | Thus, trusting a Verifier might be expressed by having the Relying | |||
| Party store the Verifier's key or certificate in its trust anchor | Party store the Verifier's key or certificate in its trust anchor | |||
| store, or might be expressed by storing the public key or certificate | store. It might also be expressed by storing the public key or | |||
| of an entity (e.g., a Certificate Authority) that is in the | certificate of an entity (e.g., a Certificate Authority) that is in | |||
| Verifier's certificate path. For example, the Relying Party can | the Verifier's certificate path. For example, the Relying Party can | |||
| verify that the Verifier is an expected one by out-of-band | verify that the Verifier is an expected one by out-of-band | |||
| establishment of key material, combined with a protocol like TLS to | establishment of key material combined with a protocol like TLS to | |||
| communicate. There is an assumption that between the establishment | communicate. There is an assumption that the Verifier has not been | |||
| of the trusted key material and the creation of the Evidence, that | compromised between the establishment of the trusted key material and | |||
| the Verifier has not been compromised. | the creation of the Evidence. | |||
| For a stronger level of security, the Relying Party might require | For a stronger level of security, the Relying Party might require | |||
| that the Verifier first provide information about itself that the | that the Verifier first provide information about itself that the | |||
| Relying Party can use to assess the trustworthiness of the Verifier | Relying Party can use to assess the trustworthiness of the Verifier | |||
| before accepting its Attestation Results. Such process would provide | before accepting its Attestation Results. Such a process would | |||
| a stronger level of confidence in the correctness of the information | provide a stronger level of confidence in the correctness of the | |||
| provided, such as a belief that the authentic Verifier has not been | information provided, such as a belief that the authentic Verifier | |||
| compromised by malware. | has not been compromised by malware. | |||
| For example, one explicit way for a Relying Party "A" to establish | For example, one explicit way for a Relying Party "A" to establish | |||
| such confidence in the correctness of a Verifier "B", would be for B | such confidence in the correctness of a Verifier "B" would be for B | |||
| to first act as an Attester where A acts as a combined Verifier/ | to first act as an Attester where A acts as a combined Verifier/ | |||
| Relying Party. If A then accepts B as trustworthy, it can choose to | Relying Party. If A then accepts B as trustworthy, it can choose to | |||
| accept B as a Verifier for other Attesters. | accept B as a Verifier for other Attesters. | |||
| Similarly, the Relying Party also needs to trust the Relying Party | Similarly, the Relying Party also needs to trust the Relying Party | |||
| Owner for providing its Appraisal Policy for Attestation Results, and | Owner for providing its Appraisal Policy for Attestation Results, | |||
| in some scenarios the Relying Party might even require that the | and, in some scenarios, the Relying Party might even require that the | |||
| Relying Party Owner go through a remote attestation procedure with it | Relying Party Owner go through a remote attestation procedure with it | |||
| before the Relying Party will accept an updated policy. This can be | before the Relying Party will accept an updated policy. This can be | |||
| done similarly to how a Relying Party could establish trust in a | done in a manner similar to how a Relying Party could establish trust | |||
| Verifier as discussed above, i.e., verifying credentials against a | in a Verifier as discussed above, i.e., verifying credentials against | |||
| trust anchor store and optionally requiring Attestation Results from | a trust anchor store and optionally requiring Attestation Results | |||
| the Relying Party Owner. | from the Relying Party Owner. | |||
| 7.2. Attester | 7.2. Attester | |||
| In some scenarios, Evidence might contain sensitive information such | In some scenarios, Evidence might contain sensitive information, such | |||
| as Personally Identifiable Information (PII) or system identifiable | as Personally Identifiable Information (PII) or system identifiable | |||
| information. Thus, an Attester must trust entities to which it | information. Thus, an Attester must trust the entities to which it | |||
| conveys Evidence, to not reveal sensitive data to unauthorized | conveys Evidence to not reveal sensitive data to unauthorized | |||
| parties. The Verifier might share this information with other | parties. The Verifier might share this information with other | |||
| authorized parties, according to a governing policy that address the | authorized parties according to a governing policy that addresses the | |||
| handling of sensitive information (potentially included in Appraisal | handling of sensitive information (potentially included in Appraisal | |||
| Policies for Evidence). In the background-check model, this Evidence | Policies for Evidence). In the Background-Check Model, this Evidence | |||
| may also be revealed to Relying Party(s). | may also be revealed to Relying Parties. | |||
| When Evidence contains sensitive information, an Attester typically | When Evidence contains sensitive information, an Attester typically | |||
| requires that a Verifier authenticates itself (e.g., at TLS session | requires that a Verifier authenticates itself (e.g., at TLS session | |||
| establishment) and might even request a remote attestation before the | establishment) and might even request a remote attestation before the | |||
| Attester sends the sensitive Evidence. This can be done by having | Attester sends the sensitive Evidence. This can be done by having | |||
| the Attester first act as a Verifier/Relying Party, and the Verifier | the Attester first act as a Verifier/Relying Party and the Verifier | |||
| act as its own Attester, as discussed above. | act as its own Attester, as discussed above. | |||
| 7.3. Relying Party Owner | 7.3. Relying Party Owner | |||
| The Relying Party Owner might also require that the Relying Party | The Relying Party Owner might also require that the Relying Party | |||
| first act as an Attester, providing Evidence that the Owner can | first act as an Attester by providing Evidence that the Owner can | |||
| appraise, before the Owner would give the Relying Party an updated | appraise before the Owner would give the Relying Party an updated | |||
| policy that might contain sensitive information. In such a case, | policy that might contain sensitive information. In such a case, | |||
| authentication or attestation in both directions might be needed, in | authentication or attestation in both directions might be needed. | |||
| which case typically one side's Evidence must be considered safe to | Typically, one side's Evidence must be considered safe to share with | |||
| share with an untrusted entity, in order to bootstrap the sequence. | an untrusted entity in order to bootstrap the sequence. See | |||
| See Section 11 for more discussion. | Section 11 for more discussion. | |||
| 7.4. Verifier | 7.4. Verifier | |||
| The Verifier trusts (or more specifically, the Verifier's security | The Verifier trusts (or more specifically, the Verifier's security | |||
| policy is written in a way that configures the Verifier to trust) a | policy is written in a way that configures the Verifier to trust) a | |||
| manufacturer, or the manufacturer's hardware, so as to be able to | manufacturer or the manufacturer's hardware so as to be able to | |||
| appraise the trustworthiness of that manufacturer's devices. Such | appraise the trustworthiness of that manufacturer's devices. Such | |||
| trust is expressed by storing one or more trust anchors in the | trust is expressed by storing one or more trust anchors in the | |||
| Verifier's trust anchor store. | Verifier's trust anchor store. | |||
| In a typical solution, a Verifier comes to trust an Attester | In a typical solution, a Verifier comes to trust an Attester | |||
| indirectly by having an Endorser (such as a manufacturer) vouch for | indirectly by having an Endorser (such as a manufacturer) vouch for | |||
| the Attester's ability to securely generate Evidence through | the Attester's ability to securely generate Evidence through | |||
| Endorsements (see Section 8.2). Endorsements might describe the ways | Endorsements (see Section 8.2). Endorsements might describe the ways | |||
| in which the Attester resists attack, protects secrets and measures | in which the Attester resists attacks, protects secrets, and measures | |||
| Target Environments. Consequently, the Endorser's key material is | Target Environments. Consequently, the Endorser's key material is | |||
| stored in the Verifier's trust anchor store so that Endorsements can | stored in the Verifier's trust anchor store so that Endorsements can | |||
| be authenticated and used in the Verifier's appraisal process. | be authenticated and used in the Verifier's appraisal process. | |||
| In some solutions, a Verifier might be configured to directly trust | In some solutions, a Verifier might be configured to directly trust | |||
| an Attester by having the Verifier have the Attester's key material | an Attester by having the Verifier possess the Attester's key | |||
| (rather than the Endorser's) in its trust anchor store. | material (rather than the Endorser's) in its trust anchor store. | |||
| Such direct trust must first be established at the time of trust | Such direct trust must first be established at the time of trust | |||
| anchor store configuration either by checking with an Endorser at | anchor store configuration either by checking with an Endorser at | |||
| that time, or by conducting a security analysis of the specific | that time or by conducting a security analysis of the specific | |||
| device. Having the Attester directly in the trust anchor store | device. Having the Attester directly in the trust anchor store | |||
| narrows the Verifier's trust to only specific devices rather than all | narrows the Verifier's trust to only specific devices rather than all | |||
| devices the Endorser might vouch for, such as all devices | devices the Endorser might vouch for, such as all devices | |||
| manufactured by the same manufacturer in the case that the Endorser | manufactured by the same manufacturer in the case that the Endorser | |||
| is a manufacturer. | is a manufacturer. | |||
| Such narrowing is often important since physical possession of a | Such narrowing is often important since physical possession of a | |||
| device can also be used to conduct a number of attacks, and so a | device can also be used to conduct a number of attacks, and so a | |||
| device in a physically secure environment (such as one's own | device in a physically secure environment (such as one's own | |||
| premises) may be considered trusted whereas devices owned by others | premises) may be considered trusted, whereas devices owned by others | |||
| would not be. This often results in a desire to either have the | would not be. This often results in a desire either to have the | |||
| owner run their own Endorser that would only endorse devices one | owner run their own Endorser that would only endorse devices one owns | |||
| owns, or to use Attesters directly in the trust anchor store. When | or to use Attesters directly in the trust anchor store. When there | |||
| there are many Attesters owned, the use of an Endorser enables better | are many Attesters owned, the use of an Endorser enables better | |||
| scalability. | scalability. | |||
| That is, a Verifier might appraise the trustworthiness of an | That is, a Verifier might appraise the trustworthiness of an | |||
| application component, operating system component, or service under | application component, operating system component, or service under | |||
| the assumption that information provided about it by the lower-layer | the assumption that information provided about it by the lower-layer | |||
| firmware or software is true. A stronger level of assurance of | firmware or software is true. A stronger level of assurance of | |||
| security comes when information can be vouched for by hardware or by | security comes when information can be vouched for by hardware or by | |||
| ROM code, especially if such hardware is physically resistant to | ROM code, especially if such hardware is physically resistant to | |||
| hardware tampering. In most cases, components that have to be | hardware tampering. In most cases, components that have to be | |||
| vouched for via Endorsements because no Evidence is generated about | vouched for via Endorsements (because no Evidence is generated about | |||
| them are referred to as roots of trust. | them) are referred to as "roots of trust". | |||
| The manufacturer having arranged for an Attesting Environment to be | The manufacturer having arranged for an Attesting Environment to be | |||
| provisioned with key material with which to sign Evidence, the | provisioned with key material with which to sign Evidence, the | |||
| Verifier is then provided with some way of verifying the signature on | Verifier is then provided with some way of verifying the signature on | |||
| the Evidence. This may be in the form of an appropriate trust | the Evidence. This may be in the form of an appropriate trust anchor | |||
| anchor, or the Verifier may be provided with a database of public | or the Verifier may be provided with a database of public keys | |||
| keys (rather than certificates) or even carefully curated and secured | (rather than certificates) or even carefully curated and secured | |||
| lists of symmetric keys. | lists of symmetric keys. | |||
| The nature of how the Verifier manages to validate the signatures | The nature of how the Verifier manages to validate the signatures | |||
| produced by the Attester is critical to the secure operation of a | produced by the Attester is critical to the secure operation of a | |||
| remote attestation system, but is not the subject of standardization | remote attestation system but is not the subject of standardization | |||
| within this architecture. | within this architecture. | |||
| A conveyance protocol that provides authentication and integrity | A conveyance protocol that provides authentication and integrity | |||
| protection can be used to convey Evidence that is otherwise | protection can be used to convey Evidence that is otherwise | |||
| unprotected (e.g., not signed). Appropriate conveyance of | unprotected (e.g., not signed). Appropriate conveyance of | |||
| unprotected Evidence (e.g., [I-D.birkholz-rats-uccs]) relies on the | unprotected Evidence (e.g., [RATS-UCCS]) relies on the following | |||
| following conveyance protocol's protection capabilities: | conveyance protocol's protection capabilities: | |||
| 1. The key material used to authenticate and integrity protect the | 1. The key material used to authenticate and integrity protect the | |||
| conveyance channel is trusted by the Verifier to speak for the | conveyance channel is trusted by the Verifier to speak for the | |||
| Attesting Environment(s) that collected Claims about the Target | Attesting Environment(s) that collected Claims about the Target | |||
| Environment(s). | Environment(s). | |||
| 2. All unprotected Evidence that is conveyed is supplied exclusively | 2. All unprotected Evidence that is conveyed is supplied exclusively | |||
| by the Attesting Environment that has the key material that | by the Attesting Environment that has the key material that | |||
| protects the conveyance channel | protects the conveyance channel. | |||
| 3. A trusted environment protects the conveyance channel's key | 3. A trusted environment protects the conveyance channel's key | |||
| material which may depend on other Attesting Environments with | material, which may depend on other Attesting Environments with | |||
| equivalent strength protections. | equivalent strength protections. | |||
| As illustrated in [I-D.birkholz-rats-uccs], an entity that receives | As illustrated in [RATS-UCCS], an entity that receives unprotected | |||
| unprotected Evidence via a trusted conveyance channel always takes on | Evidence via a trusted conveyance channel always takes on the | |||
| the responsibility of vouching for the Evidence's authenticity and | responsibility of vouching for the Evidence's authenticity and | |||
| freshness. If protected Evidence is generated, the Attester's | freshness. If protected Evidence is generated, the Attester's | |||
| Attesting Environments take on that responsibility. In cases where | Attesting Environments take on that responsibility. In cases where | |||
| unprotected Evidence is processed by a Verifier, Relying Parties have | unprotected Evidence is processed by a Verifier, Relying Parties have | |||
| to trust that the Verifier is capable of handling Evidence in a | to trust that the Verifier is capable of handling Evidence in a | |||
| manner that preserves the Evidence's authenticity and freshness. | manner that preserves the Evidence's authenticity and freshness. | |||
| Generating and conveying unprotected Evidence always creates | Generating and conveying unprotected Evidence always creates | |||
| significant risk and the benefits of that approach have to be | significant risk and the benefits of that approach have to be | |||
| carefully weighed against potential drawbacks. | carefully weighed against potential drawbacks. | |||
| See Section 12 for discussion on security strength. | See Section 12 for discussion on security strength. | |||
| 7.5. Endorser, Reference Value Provider, and Verifier Owner | 7.5. Endorser, Reference Value Provider, and Verifier Owner | |||
| In some scenarios, the Endorser, Reference Value Provider, and | In some scenarios, the Endorser, Reference Value Provider, and | |||
| Verifier Owner may need to trust the Verifier before giving the | Verifier Owner may need to trust the Verifier before giving the | |||
| Endorsement, Reference Values, or appraisal policy to it. This can | Endorsement, Reference Values, or appraisal policy to it. This can | |||
| be done similarly to how a Relying Party might establish trust in a | be done in a similar manner to how a Relying Party might establish | |||
| Verifier. | trust in a Verifier. | |||
| As discussed in Section 7.3, authentication or attestation in both | As discussed in Section 7.3, authentication or attestation in both | |||
| directions might be needed, in which case typically one side's | directions might be needed. Typically, one side's identity or | |||
| identity or Evidence must be considered safe to share with an | Evidence in this case must be considered safe to share with an | |||
| untrusted entity, in order to bootstrap the sequence. See Section 11 | untrusted entity in order to bootstrap the sequence. See Section 11 | |||
| for more discussion. | for more discussion. | |||
| 8. Conceptual Messages | 8. Conceptual Messages | |||
| Figure 1 illustrates the flow of conceptual messages between various | Figure 1 illustrates the flow of conceptual messages between various | |||
| roles. This section provides additional elaboration and | roles. This section provides additional elaboration and | |||
| implementation considerations. It is the responsibility of protocol | implementation considerations. It is the responsibility of protocol | |||
| specifications to define the actual data format and semantics of any | specifications to define the actual data format and semantics of any | |||
| relevant conceptual messages. | relevant conceptual messages. | |||
| 8.1. Evidence | 8.1. Evidence | |||
| Evidence is a set of Claims about the target environment that reveal | Evidence is a set of Claims about the Target Environment that reveal | |||
| operational status, health, configuration or construction that have | operational status, health, configuration, or construction that have | |||
| security relevance. Evidence is appraised by a Verifier to establish | security relevance. Evidence is appraised by a Verifier to establish | |||
| its relevance, compliance, and timeliness. Claims need to be | its relevance, compliance, and timeliness. Claims need to be | |||
| collected in a manner that is reliable such that a Target Environment | collected in a manner that is reliable such that a Target Environment | |||
| cannot lie to the Attesting Environment about its trustworthiness | cannot lie to the Attesting Environment about its trustworthiness | |||
| properties. Evidence needs to be securely associated with the target | properties. Evidence needs to be securely associated with the Target | |||
| environment so that the Verifier cannot be tricked into accepting | Environment so that the Verifier cannot be tricked into accepting | |||
| Claims originating from a different environment (that may be more | Claims originating from a different environment (that may be more | |||
| trustworthy). Evidence also must be protected from an active on-path | trustworthy). Evidence also must be protected from an active on-path | |||
| attacker who may observe, change or misdirect Evidence as it travels | attacker who may observe, change, or misdirect Evidence as it travels | |||
| from Attester to Verifier. The timeliness of Evidence can be | from the Attester to the Verifier. The timeliness of Evidence can be | |||
| captured using Claims that pinpoint the time or interval when changes | captured using Claims that pinpoint the time or interval when changes | |||
| in operational status, health, and so forth occur. | in operational status, health, and so forth occur. | |||
| 8.2. Endorsements | 8.2. Endorsements | |||
| An Endorsement is a secure statement that some entity (e.g., a | An Endorsement is a secure statement that some entity (e.g., a | |||
| manufacturer) vouches for the integrity of the device's various | manufacturer) vouches for the integrity of the device's various | |||
| capabilities such as claims collection, signing, launching code, | capabilities, such as Claims collection, signing, launching code, | |||
| transitioning to other environments, storing secrets, and more. For | transitioning to other environments, storing secrets, and more. For | |||
| example, if the device's signing capability is in hardware, then an | example, if the device's signing capability is in hardware, then an | |||
| Endorsement might be a manufacturer certificate that signs a public | Endorsement might be a manufacturer certificate that signs a public | |||
| key whose corresponding private key is only known inside the device's | key whose corresponding private key is only known inside the device's | |||
| hardware. Thus, when Evidence and such an Endorsement are used | hardware. Thus, when Evidence and such an Endorsement are used | |||
| together, an appraisal procedure can be conducted based on appraisal | together, an appraisal procedure can be conducted based on appraisal | |||
| policies that may not be specific to the device instance, but merely | policies that may not be specific to the device instance but are | |||
| specific to the manufacturer providing the Endorsement. For example, | merely specific to the manufacturer providing the Endorsement. For | |||
| an appraisal policy might simply check that devices from a given | example, an appraisal policy might simply check that devices from a | |||
| manufacturer have information matching a set of Reference Values, or | given manufacturer have information matching a set of Reference | |||
| an appraisal policy might have a set of more complex logic on how to | Values. An appraisal policy might also have a set of more complex | |||
| appraise the validity of information. | logic on how to appraise the validity of information. | |||
| However, while an appraisal policy that treats all devices from a | However, while an appraisal policy that treats all devices from a | |||
| given manufacturer the same may be appropriate for some use cases, it | given manufacturer the same may be appropriate for some use cases, it | |||
| would be inappropriate to use such an appraisal policy as the sole | would be inappropriate to use such an appraisal policy as the sole | |||
| means of authorization for use cases that wish to constrain _which_ | means of authorization for use cases that wish to constrain _which_ | |||
| compliant devices are considered authorized for some purpose. For | compliant devices are considered authorized for some purpose. For | |||
| example, an enterprise using remote attestation for Network Endpoint | example, an enterprise using remote attestation for Network Endpoint | |||
| Assessment [RFC5209] may not wish to let every healthy laptop from | Assessment (NEA) [RFC5209] may not wish to let every healthy laptop | |||
| the same manufacturer onto the network, but instead only want to let | from the same manufacturer onto the network. Instead, it may only | |||
| devices that it legally owns onto the network. Thus, an Endorsement | want to let devices that it legally owns onto the network. Thus, an | |||
| may be helpful information in authenticating information about a | Endorsement may be helpful information in authenticating information | |||
| device, but is not necessarily sufficient to authorize access to | about a device, but is not necessarily sufficient to authorize access | |||
| resources which may need device-specific information such as a public | to resources that may need device-specific information, such as a | |||
| key for the device or component or user on the device. | public key for the device or component or user on the device. | |||
| 8.3. Reference Values | 8.3. Reference Values | |||
| Reference Values used in appraisal procedures come from a Reference | Reference Values used in appraisal procedures come from a Reference | |||
| Value Provider and are then used by the Verifier to compare to | Value Provider and are then used by the Verifier to compare to | |||
| Evidence. Reference Values with matching Evidence produces | Evidence. Reference Values with matching Evidence produce acceptable | |||
| acceptable Claims. Additionally, appraisal policy may play a role in | Claims. Additionally, an appraisal policy may play a role in | |||
| determining the acceptance of Claims. | determining the acceptance of Claims. | |||
| 8.4. Attestation Results | 8.4. Attestation Results | |||
| Attestation Results are the input used by the Relying Party to decide | Attestation Results are the input used by the Relying Party to decide | |||
| the extent to which it will trust a particular Attester, and allow it | the extent to which it will trust a particular Attester and allow it | |||
| to access some data or perform some operation. | to access some data or perform some operation. | |||
| Attestation Results may carry a boolean value indicating compliance | Attestation Results may carry a boolean value indicating compliance | |||
| or non-compliance with a Verifier's appraisal policy, or may carry a | or non-compliance with a Verifier's appraisal policy or may carry a | |||
| richer set of Claims about the Attester, against which the Relying | richer set of Claims about the Attester, against which the Relying | |||
| Party applies its Appraisal Policy for Attestation Results. | Party applies its Appraisal Policy for Attestation Results. | |||
| The quality of the Attestation Results depends upon the ability of | The quality of the Attestation Results depends upon the ability of | |||
| the Verifier to evaluate the Attester. Different Attesters have a | the Verifier to evaluate the Attester. Different Attesters have a | |||
| different _Strength of Function_ [strengthoffunction], which results | different _Strength of Function_ [strengthoffunction], which results | |||
| in the Attestation Results being qualitatively different in strength. | in the Attestation Results being qualitatively different in strength. | |||
| An Attestation Result that indicates non-compliance can be used by an | An Attestation Result that indicates non-compliance can be used by an | |||
| Attester (in the passport model) or a Relying Party (in the | Attester (in the Passport Model) or a Relying Party (in the | |||
| background-check model) to indicate that the Attester should not be | Background-Check Model) to indicate that the Attester should not be | |||
| treated as authorized and may be in need of remediation. In some | treated as authorized and may be in need of remediation. In some | |||
| cases, it may even indicate that the Evidence itself cannot be | cases, it may even indicate that the Evidence itself cannot be | |||
| authenticated as being correct. | authenticated as being correct. | |||
| By default, the Relying Party does not believe the Attester to be | By default, the Relying Party does not believe the Attester to be | |||
| compliant. Upon receipt of an authentic Attestation Result and given | compliant. Upon receipt of an authentic Attestation Result and given | |||
| the Appraisal Policy for Attestation Results is satisfied, the | the Appraisal Policy for Attestation Results is satisfied, the | |||
| Attester is allowed to perform the prescribed actions or access. The | Attester is allowed to perform the prescribed actions or access. The | |||
| simplest such appraisal policy might authorize granting the Attester | simplest such appraisal policy might authorize granting the Attester | |||
| full access or control over the resources guarded by the Relying | full access or control over the resources guarded by the Relying | |||
| Party. A more complex appraisal policy might involve using the | Party. A more complex appraisal policy might involve using the | |||
| information provided in the Attestation Result to compare against | information provided in the Attestation Result to compare against | |||
| expected values, or to apply complex analysis of other information | expected values or to apply complex analysis of other information | |||
| contained in the Attestation Result. | contained in the Attestation Result. | |||
| Thus, Attestation Results can contain detailed information about an | Thus, Attestation Results can contain detailed information about an | |||
| Attester, which can include privacy sensitive information as | Attester, which can include privacy sensitive information as | |||
| discussed in Section 11. Unlike Evidence, which is often very | discussed in Section 11. Unlike Evidence, which is often very | |||
| device- and vendor-specific, Attestation Results can be vendor- | device- and vendor-specific, Attestation Results can be vendor- | |||
| neutral, if the Verifier has a way to generate vendor-agnostic | neutral, if the Verifier has a way to generate vendor-agnostic | |||
| information based on the appraisal of vendor-specific information in | information based on the appraisal of vendor-specific information in | |||
| Evidence. This allows a Relying Party's appraisal policy to be | Evidence. This allows a Relying Party's appraisal policy to be | |||
| simpler, potentially based on standard ways of expressing the | simpler, potentially based on standard ways of expressing the | |||
| information, while still allowing interoperability with heterogeneous | information, while still allowing interoperability with heterogeneous | |||
| devices. | devices. | |||
| Finally, whereas Evidence is signed by the device (or indirectly by a | Finally, whereas Evidence is signed by the device (or indirectly by a | |||
| manufacturer, if Endorsements are used), Attestation Results are | manufacturer if Endorsements are used), Attestation Results are | |||
| signed by a Verifier, allowing a Relying Party to only need a trust | signed by a Verifier, allowing a Relying Party to only need a trust | |||
| relationship with one entity, rather than a larger set of entities, | relationship with one entity rather than a larger set of entities for | |||
| for purposes of its appraisal policy. | purposes of its appraisal policy. | |||
| 8.5. Appraisal Policies | 8.5. Appraisal Policies | |||
| The Verifier, when appraising Evidence, or the Relying Party, when | The Verifier (when appraising Evidence) or the Relying Party (when | |||
| appraising Attestation Results, checks the values of matched Claims | appraising Attestation Results) checks the values of matched Claims | |||
| against constraints specified in its appraisal policy. Examples of | against constraints specified in its appraisal policy. Examples of | |||
| such constraints checking include: | such constraints checking include the following: | |||
| * comparison for equality against a Reference Value, or | * Comparison for equality against a Reference Value. | |||
| * a check for being in a range bounded by Reference Values, or | * A check for being in a range bounded by Reference Values. | |||
| * membership in a set of Reference Values, or | * Membership in a set of Reference Values. | |||
| * a check against values in other Claims. | * A check against values in other Claims. | |||
| Upon completing all appraisal policy constraints, the remaining | Upon completing all appraisal policy constraints, the remaining | |||
| Claims are accepted as input toward determining Attestation Results, | Claims are accepted as input toward determining Attestation Results | |||
| when appraising Evidence, or as input to a Relying Party, when | (when appraising Evidence) or as input to a Relying Party (when | |||
| appraising Attestation Results. | appraising Attestation Results). | |||
| 9. Claims Encoding Formats | 9. Claims Encoding Formats | |||
| The following diagram illustrates a relationship to which remote | Figure 8 illustrates a relationship to which remote attestation is | |||
| attestation is desired to be added: | desired to be added: | |||
| .-------------. .------------. Evaluate | .-------------. .------------. Evaluate | |||
| | +-------------->| | request | | +-------------->| | request | |||
| | Attester | Access some | Relying | against | | Attester | Access some | Relying | against | |||
| | | resource | Party | security | | | resource | Party | security | |||
| '-------------' '------------' policy | '-------------' '------------' policy | |||
| Figure 8: Typical Resource Access | Figure 8: Typical Resource Access | |||
| In this diagram, the protocol between Attester and a Relying Party | In this diagram, the protocol between the Attester and a Relying | |||
| can be any new or existing protocol (e.g., HTTP(S), COAP(S), ROLIE | Party can be any new or existing protocol (e.g., HTTP(S), CoAP(S), | |||
| [RFC8322], 802.1x, OPC UA [OPCUA], etc.), depending on the use case. | Resource-Oriented Lightweight Information Exchange (ROLIE) [RFC8322], | |||
| 802.1x, OPC UA [OPCUA], etc.) depending on the use case. | ||||
| Typically, such protocols already have mechanisms for passing | Typically, such protocols already have mechanisms for passing | |||
| security information for authentication and authorization purposes. | security information for authentication and authorization purposes. | |||
| Common formats include JWTs [RFC7519], CWTs [RFC8392], and X.509 | Common formats include JSON Web Tokens (JWTs) [RFC7519], CWTs | |||
| certificates. | [RFC8392], and X.509 certificates. | |||
| Retrofitting already deployed protocols with remote attestation | Retrofitting already-deployed protocols with remote attestation | |||
| requires adding RATS conceptual messages to the existing data flows. | requires adding RATS conceptual messages to the existing data flows. | |||
| This must be done in a way that does not degrade the security | This must be done in a way that does not degrade the security | |||
| properties of the systems involved and should use native extension | properties of the systems involved and should use extension | |||
| mechanisms provided by the underlying protocol. For example, if a | mechanisms provided by the underlying protocol. For example, if a | |||
| TLS handshake is to be extended with remote attestation capabilities, | TLS handshake is to be extended with remote attestation capabilities, | |||
| attestation Evidence may be embedded in an ad-hoc X.509 certificate | attestation Evidence may be embedded in an ad hoc X.509 certificate | |||
| extension (e.g., [TCG-DICE]), or into a new TLS Certificate Type | extension (e.g., [TCG-DICE]) or into a new TLS Certificate Type | |||
| (e.g., [I-D.tschofenig-tls-cwt]). | (e.g., [TLS-CWT]). | |||
| Especially for constrained nodes there is a desire to minimize the | Especially for constrained nodes, there is a desire to minimize the | |||
| amount of parsing code needed in a Relying Party, in order to both | amount of parsing code needed in a Relying Party in order to both | |||
| minimize footprint and to minimize the attack surface. While it | minimize footprint and the attack surface. While it would be | |||
| would be possible to embed a CWT inside a JWT, or a JWT inside an | possible to embed a CWT inside a JWT, or a JWT inside an X.509 | |||
| X.509 extension, etc., there is a desire to encode the information | extension, etc., there is a desire to encode the information in a | |||
| natively in a format that is already supported by the Relying Party. | format that is already supported by the Relying Party. | |||
| This motivates having a common "information model" that describes the | This motivates having a common "information model" that describes the | |||
| set of remote attestation related information in an encoding-agnostic | set of remote attestation related information in an encoding-agnostic | |||
| way, and allowing multiple encoding formats (CWT, JWT, X.509, etc.) | way and allows multiple encoding formats (CWT, JWT, X.509, etc.) that | |||
| that encode the same information into the Claims format needed by the | encode the same information into the Claims format needed by the | |||
| Relying Party. | Relying Party. | |||
| The following diagram illustrates that Evidence and Attestation | Figure 9 illustrates that Evidence and Attestation Results might be | |||
| Results might be expressed via multiple potential encoding formats, | expressed via multiple potential encoding formats so that they can be | |||
| so that they can be conveyed by various existing protocols. It also | conveyed by various existing protocols. It also motivates why the | |||
| motivates why the Verifier might also be responsible for accepting | Verifier might also be responsible for accepting Evidence that | |||
| Evidence that encodes Claims in one format, while issuing Attestation | encodes Claims in one format while issuing Attestation Results that | |||
| Results that encode Claims in a different format. | encode Claims in a different format. | |||
| Evidence Attestation Results | Evidence Attestation Results | |||
| .--------------. CWT CWT .-------------------. | .--------------. CWT CWT .-------------------. | |||
| | Attester-A +-----------. .---------->| Relying Party V | | | Attester-A +-----------. .---------->| Relying Party V | | |||
| '--------------' | | `-------------------' | '--------------' | | `-------------------' | |||
| v | | v | | |||
| .--------------. JWT .---------+--. JWT .-------------------. | .--------------. JWT .---------+--. JWT .-------------------. | |||
| | Attester-B +-------->| +-------->| Relying Party W | | | Attester-B +-------->| +-------->| Relying Party W | | |||
| '--------------' | | `-------------------' | '--------------' | | `-------------------' | |||
| | | | | | | |||
| skipping to change at page 33, line 39 ¶ | skipping to change at line 1444 ¶ | |||
| Figure 9: Multiple Attesters and Relying Parties with Different | Figure 9: Multiple Attesters and Relying Parties with Different | |||
| Formats | Formats | |||
| 10. Freshness | 10. Freshness | |||
| A Verifier or Relying Party might need to learn the point in time | A Verifier or Relying Party might need to learn the point in time | |||
| (i.e., the "epoch") an Evidence or Attestation Result has been | (i.e., the "epoch") an Evidence or Attestation Result has been | |||
| produced. This is essential in deciding whether the included Claims | produced. This is essential in deciding whether the included Claims | |||
| can be considered fresh, meaning they still reflect the latest state | can be considered fresh, meaning they still reflect the latest state | |||
| of the Attester, and that any Attestation Result was generated using | of the Attester, and that any Attestation Result was generated using | |||
| the latest Appraisal Policy for Evidence. | the latest Appraisal Policy for Evidence, Endorsements, and Reference | |||
| Values. | ||||
| This section provides a number of details. It does not however | This section provides a number of details. However, it does not | |||
| define any protocol formats, the interactions shown are abstract. | define any protocol formats and the interactions shown are abstract. | |||
| This section is intended for those creating protocols and solutions | This section is intended for those creating protocols and solutions | |||
| to understand the options available to ensure freshness. The way in | to understand the options available to ensure freshness. The way in | |||
| which freshness is provisioned in a protocol is an architectural | which freshness is provisioned in a protocol is an architectural | |||
| decision. Provisioning of freshness has an impact on the number of | decision. Provisioning of freshness has an impact on the number of | |||
| needed round trips in a protocol, and therefore must be made very | needed round trips in a protocol; therefore, it must be made very | |||
| early in the design. Different decisions will have significant | early in the design. Different decisions will have significant | |||
| impacts on resulting interoperability, which is why this section goes | impacts on resulting interoperability, which is why this section goes | |||
| into sufficient detail such that choices in freshness will be | into sufficient detail such that choices in freshness will be | |||
| compatible across interacting protocols, such as depicted in | compatible across interacting protocols, such as depicted in | |||
| Figure 9. | Figure 9. | |||
| Freshness is assessed based on the Appraisal Policy for Evidence or | Freshness is assessed based on the Appraisal Policy for Evidence or | |||
| Attestation Results that compares the estimated epoch against an | Attestation Results that compares the estimated epoch against an | |||
| "expiry" threshold defined locally to that policy. There is, | "expiry" threshold defined locally to that policy. There is, | |||
| however, always a race condition possible in that the state of the | however, always a race condition possible in that the state of the | |||
| Attester, and the appraisal policies might change immediately after | Attester and the appraisal policies might change immediately after | |||
| the Evidence or Attestation Result was generated. The goal is merely | the Evidence or Attestation Result was generated. The goal is merely | |||
| to narrow their recentness to something the Verifier (for Evidence) | to narrow their recentness to something the Verifier (for Evidence) | |||
| or Relying Party (for Attestation Result) is willing to accept. Some | or Relying Party (for Attestation Result) is willing to accept. Some | |||
| flexibility on the freshness requirement is a key component for | flexibility on the freshness requirement is a key component for | |||
| enabling caching and reuse of both Evidence and Attestation Results, | enabling caching and reuse of both Evidence and Attestation Results, | |||
| which is especially valuable in cases where their computation uses a | which is especially valuable in cases where their computation uses a | |||
| substantial part of the resource budget (e.g., energy in constrained | substantial part of the resource budget (e.g., energy in constrained | |||
| devices). | devices). | |||
| There are three common approaches for determining the epoch of | There are three common approaches for determining the epoch of | |||
| Evidence or an Attestation Result. | Evidence or an Attestation Result. | |||
| 10.1. Explicit Timekeeping using Synchronized Clocks | 10.1. Explicit Timekeeping Using Synchronized Clocks | |||
| The first approach is to rely on synchronized and trustworthy clocks, | The first approach is to rely on synchronized and trustworthy clocks | |||
| and include a signed timestamp (see [I-D.birkholz-rats-tuda]) along | and include a signed timestamp (see [RATS-TUDA]) along with the | |||
| with the Claims in the Evidence or Attestation Result. Timestamps | Claims in the Evidence or Attestation Result. Timestamps can also be | |||
| can also be added on a per-Claim basis to distinguish the time of | added on a per-Claim basis to distinguish the time of generation of | |||
| generation of Evidence or Attestation Result from the time that a | Evidence or Attestation Result from the time that a specific Claim | |||
| specific Claim was generated. The clock's trustworthiness can | was generated. The clock's trustworthiness can generally be | |||
| generally be established via Endorsements and typically requires | established via Endorsements and typically requires additional Claims | |||
| additional Claims about the signer's time synchronization mechanism. | about the signer's time synchronization mechanism. | |||
| In some use cases, however, a trustworthy clock might not be | However, a trustworthy clock might not be available in some use | |||
| available. For example, in many Trusted Execution Environments | cases. For example, in many TEEs today, a clock is only available | |||
| (TEEs) today, a clock is only available outside the TEE and so cannot | outside the TEE; thus, it cannot be trusted by the TEE. | |||
| be trusted by the TEE. | ||||
| 10.2. Implicit Timekeeping using Nonces | 10.2. Implicit Timekeeping Using Nonces | |||
| A second approach places the onus of timekeeping solely on the | A second approach places the onus of timekeeping solely on the | |||
| Verifier (for Evidence) or the Relying Party (for Attestation | Verifier (for Evidence) or the Relying Party (for Attestation | |||
| Results), and might be suitable, for example, in case the Attester | Results). For example, this approach might be suitable in case the | |||
| does not have a trustworthy clock or time synchronization is | Attester does not have a trustworthy clock or time synchronization is | |||
| otherwise impaired. In this approach, a non-predictable nonce is | otherwise impaired. In this approach, an unpredictable nonce is sent | |||
| sent by the appraising entity, and the nonce is then signed and | by the appraising entity and the nonce is then signed and included | |||
| included along with the Claims in the Evidence or Attestation Result. | along with the Claims in the Evidence or Attestation Result. After | |||
| After checking that the sent and received nonces are the same, the | checking that the sent and received nonces are the same, the | |||
| appraising entity knows that the Claims were signed after the nonce | appraising entity knows that the Claims were signed after the nonce | |||
| was generated. This allows associating a "rough" epoch to the | was generated. This allows associating a "rough" epoch to the | |||
| Evidence or Attestation Result. In this case the epoch is said to be | Evidence or Attestation Result. In this case, the epoch is said to | |||
| rough because: | be rough because: | |||
| * The epoch applies to the entire Claim set instead of a more | * The epoch applies to the entire Claim set instead of a more | |||
| granular association, and | granular association, and | |||
| * The time between the creation of Claims and the collection of | * The time between the creation of Claims and the collection of | |||
| Claims is indistinguishable. | Claims is indistinguishable. | |||
| 10.3. Implicit Timekeeping using Epoch IDs | 10.3. Implicit Timekeeping Using Epoch IDs | |||
| A third approach relies on having epoch identifiers (or "IDs") | A third approach relies on having epoch identifiers (IDs) | |||
| periodically sent to both the sender and receiver of Evidence or | periodically sent to both the sender and receiver of Evidence or | |||
| Attestation Results by some "Epoch ID Distributor". | Attestation Results by some "epoch ID distributor". | |||
| Epoch IDs are different from nonces as they can be used more than | Epoch IDs are different from nonces as they can be used more than | |||
| once and can even be used by more than one entity at the same time. | once and can even be used by more than one entity at the same time. | |||
| Epoch IDs are different from timestamps as they do not have to convey | Epoch IDs are different from timestamps as they do not have to convey | |||
| information about a point in time, i.e., they are not necessarily | information about a point in time, i.e., they are not necessarily | |||
| monotonically increasing integers. | monotonically increasing integers. | |||
| Like the nonce approach, this allows associating a "rough" epoch | Like the nonce approach, this allows associating a "rough" epoch | |||
| without requiring a trustworthy clock or time synchronization in | without requiring a trustworthy clock or time synchronization in | |||
| order to generate or appraise the freshness of Evidence or | order to generate or appraise the freshness of Evidence or | |||
| Attestation Results. Only the Epoch ID Distributor requires access | Attestation Results. Only the epoch ID distributor requires access | |||
| to a clock so it can periodically send new epoch IDs. | to a clock so it can periodically send new epoch IDs. | |||
| The most recent epoch ID is included in the produced Evidence or | The most recent epoch ID is included in the produced Evidence or | |||
| Attestation Results, and the appraising entity can compare the epoch | Attestation Results, and the appraising entity can compare the epoch | |||
| ID in received Evidence or Attestation Results against the latest | ID in received Evidence or Attestation Results against the latest | |||
| epoch ID it received from the Epoch ID Distributor to determine if it | epoch ID it received from the epoch ID distributor to determine if it | |||
| is within the current epoch. An actual solution also needs to take | is within the current epoch. An actual solution also needs to take | |||
| into account race conditions when transitioning to a new epoch, such | into account race conditions when transitioning to a new epoch, such | |||
| as by using a counter signed by the Epoch ID Distributor as the epoch | as by using a counter signed by the epoch ID distributor as the epoch | |||
| ID, or by including both the current and previous epoch IDs in | ID, by including both the current and previous epoch IDs in messages | |||
| messages and/or checks, by requiring retries in case of mismatching | and/or checks by requiring retries in case of mismatching epoch IDs, | |||
| epoch IDs, or by buffering incoming messages that might be associated | or by buffering incoming messages that might be associated with an | |||
| with an epoch ID that the receiver has not yet obtained. | epoch ID that the receiver has not yet obtained. | |||
| More generally, in order to prevent an appraising entity from | More generally, in order to prevent an appraising entity from | |||
| generating false negatives (e.g., discarding Evidence that is deemed | generating false negatives (e.g., discarding Evidence that is deemed | |||
| stale even if it is not), the appraising entity should keep an "epoch | stale even if it is not), the appraising entity should keep an "epoch | |||
| window" consisting of the most recently received epoch IDs. The | window" consisting of the most recently received epoch IDs. The | |||
| depth of such epoch window is directly proportional to the maximum | depth of such epoch window is directly proportional to the maximum | |||
| network propagation delay between the first to receive the epoch ID | network propagation delay between the first to receive the epoch ID | |||
| and the last to receive the epoch ID, and it is inversely | and the last to receive the epoch ID and it is inversely proportional | |||
| proportional to the epoch duration. The appraising entity shall | to the epoch duration. The appraising entity shall compare the epoch | |||
| compare the epoch ID carried in the received Evidence or Attestation | ID carried in the received Evidence or Attestation Result with the | |||
| Result with the epoch IDs in its epoch window to find a suitable | epoch IDs in its epoch window to find a suitable match. | |||
| match. | ||||
| Whereas the nonce approach typically requires the appraising entity | Whereas the nonce approach typically requires the appraising entity | |||
| to keep state for each nonce generated, the epoch ID approach | to keep state for each nonce generated, the epoch ID approach | |||
| minimizes the state kept to be independent of the number of Attesters | minimizes the state kept to be independent of the number of Attesters | |||
| or Verifiers from which it expects to receive Evidence or Attestation | or Verifiers from which it expects to receive Evidence or Attestation | |||
| Results, as long as all use the same Epoch ID Distributor. | Results as long as all use the same epoch ID distributor. | |||
| 10.4. Discussion | 10.4. Discussion | |||
| Implicit and explicit timekeeping can be combined into hybrid | Implicit and explicit timekeeping can be combined into hybrid | |||
| mechanisms. For example, if clocks exist within the Attesting | mechanisms. For example, if clocks exist within the Attesting | |||
| Environment and are considered trustworthy (tamper-proof) but are not | Environment and are considered trustworthy (tamper-proof) but are not | |||
| synchronized, a nonce-based exchange may be used to determine the | synchronized, a nonce-based exchange may be used to determine the | |||
| (relative) time offset between the involved peers, followed by any | (relative) time offset between the involved peers followed by any | |||
| number of timestamp based exchanges. | number of timestamp based exchanges. | |||
| It is important to note that the actual values in Claims might have | It is important to note that the actual values in Claims might have | |||
| been generated long before the Claims are signed. If so, it is the | been generated long before the Claims are signed. If so, it is the | |||
| signer's responsibility to ensure that the values are still correct | signer's responsibility to ensure that the values are still fresh | |||
| when they are signed. For example, values generated at boot time | when they are signed. For example, values generated at boot time | |||
| might have been saved to secure storage until network connectivity is | might have been saved to secure storage until network connectivity is | |||
| established to the remote Verifier and a nonce is obtained. | established to the remote Verifier and a nonce is obtained. | |||
| A more detailed discussion with examples appears in Appendix A. | A more detailed discussion with examples appears in Appendix A. | |||
| For a discussion on the security of epoch IDs see Section 12.3. | For a discussion on the security of epoch IDs see Section 12.3. | |||
| 11. Privacy Considerations | 11. Privacy Considerations | |||
| skipping to change at page 37, line 27 ¶ | skipping to change at line 1600 ¶ | |||
| This information might be particularly interesting to many attackers. | This information might be particularly interesting to many attackers. | |||
| For example, knowing that a device is running a weak version of | For example, knowing that a device is running a weak version of | |||
| firmware provides a way to aim attacks better. | firmware provides a way to aim attacks better. | |||
| In some circumstances, if an attacker can become aware of | In some circumstances, if an attacker can become aware of | |||
| Endorsements, Reference Values, or appraisal policies, it could | Endorsements, Reference Values, or appraisal policies, it could | |||
| potentially provide an attacker with insight into defensive | potentially provide an attacker with insight into defensive | |||
| mitigations. It is recommended that attention be paid to | mitigations. It is recommended that attention be paid to | |||
| confidentiality of such information. | confidentiality of such information. | |||
| Additionally, many Claims in Evidence, many Claims in Attestation | Additionally, many Evidence, Attestation Results, and appraisal | |||
| Results, and appraisal policies potentially contain Personally | policies potentially contain Personally Identifying Information (PII) | |||
| Identifying Information (PII) depending on the end-to-end use case of | depending on the end-to-end use case of the remote attestation | |||
| the remote attestation procedure. Remote attestation that includes | procedure. Remote attestation that includes containers and | |||
| containers and applications, e.g., a blood pressure monitor, may | applications, e.g., a blood pressure monitor, may further reveal | |||
| further reveal details about specific systems or users. | details about specific systems or users. | |||
| In some cases, an attacker may be able to make inferences about the | In some cases, an attacker may be able to make inferences about the | |||
| contents of Evidence from the resulting effects or timing of the | contents of Evidence from the resulting effects or timing of the | |||
| processing. For example, an attacker might be able to infer the | processing. For example, an attacker might be able to infer the | |||
| value of specific Claims if it knew that only certain values were | value of specific Claims if it knew that only certain values were | |||
| accepted by the Relying Party. | accepted by the Relying Party. | |||
| Conceptual messages (see Section 8) carrying sensitive or | Conceptual messages (see Section 8) carrying sensitive or | |||
| confidential information are expected to be integrity protected | confidential information are expected to be integrity protected | |||
| (i.e., either via signing or a secure channel) and optionally might | (i.e., either via signing or a secure channel) and optionally might | |||
| be confidentiality protected via encryption. If there isn't | be confidentiality protected via encryption. If there isn't | |||
| confidentiality protection of conceptual messages themselves, the | confidentiality protection of conceptual messages themselves, the | |||
| underlying conveyance protocol should provide these protections. | underlying conveyance protocol should provide these protections. | |||
| As Evidence might contain sensitive or confidential information, | As Evidence might contain sensitive or confidential information, | |||
| Attesters are responsible for only sending such Evidence to trusted | Attesters are responsible for only sending such Evidence to trusted | |||
| Verifiers. Some Attesters might want a stronger level of assurance | Verifiers. Some Attesters might want a stronger level of assurance | |||
| of the trustworthiness of a Verifier before sending Evidence to it. | of the trustworthiness of a Verifier before sending Evidence to it. | |||
| In such cases, an Attester can first act as a Relying Party and ask | In such cases, an Attester can first act as a Relying Party and ask | |||
| for the Verifier's own Attestation Result, and appraising it just as | for the Verifier's own Attestation Result. Appraising it just as a | |||
| a Relying Party would appraise an Attestation Result for any other | Relying Party would appraise an Attestation Result for any other | |||
| purpose. | purpose. | |||
| Another approach to deal with Evidence is to remove PII from the | Another approach to deal with Evidence is to remove PII from the | |||
| Evidence while still being able to verify that the Attester is one of | Evidence while still being able to verify that the Attester is one of | |||
| a large set. This approach is often called "Direct Anonymous | a large set. This approach is often called "Direct Anonymous | |||
| Attestation". See [CCC-DeepDive] section 6.2 and [I-D.ietf-rats-daa] | Attestation". See Section 6.2 of [CCC-DeepDive] and [RATS-DAA] for | |||
| for more discussion. | more discussion. | |||
| 12. Security Considerations | 12. Security Considerations | |||
| This document provides an architecture for doing remote attestation. | This document provides an architecture for doing remote attestation. | |||
| No specific wire protocol is documented here. Without a specific | No specific wire protocol is documented here. Without a specific | |||
| proposal to compare against, it is impossible to know if the security | proposal to compare against, it is impossible to know if the security | |||
| threats listed below have been mitigated well. | threats listed below have been mitigated well. | |||
| The security considerations below should be read as being essentially | The security considerations below should be read as being, | |||
| requirements against realizations of the RATS Architecture. Some | essentially, requirements against realizations of the RATS | |||
| threats apply to protocols, some are against implementations (code), | architecture. Some threats apply to protocols and some are against | |||
| and some threats are against physical infrastructure (such as | implementations (code) and physical infrastructure (such as | |||
| factories). | factories). | |||
| The fundamental purpose of the RATS architecture is to allow a | The fundamental purpose of the RATS architecture is to allow a | |||
| Relying Party to establish a basis for trusting the Attester. | Relying Party to establish a basis for trusting the Attester. | |||
| 12.1. Attester and Attestation Key Protection | 12.1. Attester and Attestation Key Protection | |||
| Implementers need to pay close attention to the protection of the | Implementers need to pay close attention to the protection of the | |||
| Attester and the manufacturing processes for provisioning attestation | Attester and the manufacturing processes for provisioning attestation | |||
| key material. If either of these are compromised, intended levels of | key material. If either of these are compromised, intended levels of | |||
| assurance for RATS are compromised because attackers can forge | assurance for remote attestation procedures are compromised because | |||
| Evidence or manipulate the Attesting Environment. For example, a | attackers can forge Evidence or manipulate the Attesting Environment. | |||
| Target Environment should not be able to tamper with the Attesting | For example, a Target Environment should not be able to tamper with | |||
| Environment that measures it, by isolating the two environments from | the Attesting Environment that measures it by isolating the two | |||
| each other in some way. | environments from each other in some way. | |||
| Remote attestation applies to use cases with a range of security | Remote attestation applies to use cases with a range of security | |||
| requirements, so the protections discussed here range from low to | requirements. The protections discussed here range from low to high | |||
| high security where low security may be limited to application or | security: low security may be limited to application or process | |||
| process isolation by the device's operating system, and high security | isolation by the device's operating system and high security may | |||
| may involve specialized hardware to defend against physical attacks | involve specialized hardware to defend against physical attacks on a | |||
| on a chip. | chip. | |||
| 12.1.1. On-Device Attester and Key Protection | 12.1.1. On-Device Attester and Key Protection | |||
| It is assumed that an Attesting Environment is sufficiently isolated | It is assumed that an Attesting Environment is sufficiently isolated | |||
| from the Target Environment it collects Claims about and that it | from the Target Environment it collects Claims about and that it | |||
| signs the resulting Claims set with an attestation key, so that the | signs the resulting Claims set with an attestation key so that the | |||
| Target Environment cannot forge Evidence about itself. Such an | Target Environment cannot forge Evidence about itself. Such an | |||
| isolated environment might be provided by a process, a dedicated | isolated environment might be provided by a process, a dedicated | |||
| chip, a TEE, a virtual machine, or another secure mode of operation. | chip, a TEE, a virtual machine, or another secure mode of operation. | |||
| The Attesting Environment must be protected from unauthorized | The Attesting Environment must be protected from unauthorized | |||
| modification to ensure it behaves correctly. Confidentiality | modification to ensure it behaves correctly. Confidentiality | |||
| protection of the Attesting Environment's signing key is vital so it | protection of the Attesting Environment's signing key is vital so it | |||
| cannot be misused to forge Evidence. | cannot be misused to forge Evidence. | |||
| In many cases the user or owner of a device that includes the role of | In many cases, the user or owner of a device that includes the role | |||
| Attester must not be able to modify or extract keys from the | of Attester must not be able to modify or extract keys from the | |||
| Attesting Environments, to prevent creating forged Evidence. Some | Attesting Environments to prevent creating forged Evidence. Some | |||
| common examples include the user of a mobile phone or FIDO | common examples include the user of a mobile phone or FIDO | |||
| authenticator. | authenticator. | |||
| Measures for a minimally protected system might include process or | Measures for a minimally protected system might include process or | |||
| application isolation provided by a high-level operating system, and | application isolation provided by a high-level operating system and | |||
| restricted access to root or system privileges. In contrast, For | restricted access to root or system privileges. In contrast, for | |||
| really simple single-use devices that don't use a protected mode | really simple single-use devices that don't use a protected mode | |||
| operating system, like a Bluetooth speaker, the only factual | operating system (like a Bluetooth speaker), the only factual | |||
| isolation might be the sturdy housing of the device. | isolation might be the sturdy housing of the device. | |||
| Measures for a moderately protected system could include a special | Measures for a moderately protected system could include a special | |||
| restricted operating environment, such as a TEE. In this case, only | restricted operating environment, such as a TEE. In this case, only | |||
| security-oriented software has access to the Attester and key | security-oriented software has access to the Attester and key | |||
| material. | material. | |||
| Measures for a highly protected system could include specialized | Measures for a highly protected system could include specialized | |||
| hardware that is used to provide protection against chip decapping | hardware that is used to provide protection against chip decapping | |||
| attacks, power supply and clock glitching, faulting injection and RF | attacks, power supply and clock glitching, faulting injection and RF, | |||
| and power side channel attacks. | and power side channel attacks. | |||
| 12.1.2. Attestation Key Provisioning Processes | 12.1.2. Attestation Key Provisioning Processes | |||
| Attestation key provisioning is the process that occurs in the | Attestation key provisioning is the process that occurs in the | |||
| factory or elsewhere to establish signing key material on the device | factory or elsewhere to establish signing key material on the device | |||
| and the validation key material off the device. Sometimes this | and the validation key material off the device. Sometimes, this | |||
| procedure is referred to as personalization or customization. | procedure is referred to as "personalization" or "customization". | |||
| When generating keys off-device in the factory or in the device, the | When generating keys off-device in the factory or in the device, the | |||
| use of a Cryptographically Strong Sequence ([RFC4086], Section 6.2) | use of a cryptographically strong sequence ([RFC4086], Section 6.2) | |||
| needs consideration. | needs consideration. | |||
| 12.1.2.1. Off-Device Key Generation | 12.1.2.1. Off-Device Key Generation | |||
| One way to provision key material is to first generate it external to | One way to provision key material is to first generate it external to | |||
| the device and then copy the key onto the device. In this case, | the device and then copy the key onto the device. In this case, | |||
| confidentiality protection of the generator, as well as for the path | confidentiality protection of the generator and the path over which | |||
| over which the key is provisioned, is necessary. The manufacturer | the key is provisioned is necessary. The manufacturer needs to take | |||
| needs to take care to protect corresponding key material with | care to protect corresponding key material with measures appropriate | |||
| measures appropriate for its value. | for its value. | |||
| The degree of protection afforded to this key material can vary by | The degree of protection afforded to this key material can vary by | |||
| the intended function of the device and the specific practices of the | the intended function of the device and the specific practices of the | |||
| device manufacturer or integrator. The confidentiality protection is | device manufacturer or integrator. The confidentiality protection is | |||
| fundamentally based upon some amount of physical protection: while | fundamentally based upon some amount of physical protection. While | |||
| encryption is often used to provide confidentiality when a key is | encryption is often used to provide confidentiality when a key is | |||
| conveyed across a factory, where the attestation key is created or | conveyed across a factory where the attestation key is created or | |||
| applied, it must be available in an unencrypted form. The physical | applied, it must be available in an unencrypted form. The physical | |||
| protection can therefore vary from situations where the key is | protection can therefore vary from situations where the key is | |||
| unencrypted only within carefully controlled secure enclaves within | unencrypted only within carefully controlled secure enclaves within | |||
| silicon, to situations where an entire facility is considered secure, | silicon to situations where an entire facility is considered secure | |||
| by the simple means of locked doors and limited access. | by the simple means of locked doors and limited access. | |||
| The cryptography that is used to enable confidentiality protection of | The cryptography that is used to enable confidentiality protection of | |||
| the attestation key comes with its own requirements to be secured. | the attestation key comes with its own requirements to be secured. | |||
| This results in recursive problems, as the key material used to | This results in recursive problems, as the key material used to | |||
| provision attestation keys must again somehow have been provisioned | provision attestation keys must again somehow have been provisioned | |||
| securely beforehand (requiring an additional level of protection, and | securely beforehand (requiring an additional level of protection and | |||
| so on). | so on). | |||
| Commonly, a combination of some physical security measures and some | Commonly, a combination of some physical security measures and some | |||
| cryptographic measures are used to establish confidentiality | cryptographic measures are used to establish confidentiality | |||
| protection. | protection. | |||
| 12.1.2.2. On-Device Key Generation | 12.1.2.2. On-Device Key Generation | |||
| When key material is generated within a device and the secret part of | When key material is generated within a device and the secret part of | |||
| it never leaves the device, then the problem may lessen. For public- | it never leaves the device, the problem may lessen. For public-key | |||
| key cryptography, it is, by definition, not necessary to maintain | cryptography, it is not necessary to maintain confidentiality of the | |||
| confidentiality of the public key: however integrity of the chain of | public key. However, integrity of the chain of custody of the public | |||
| custody of the public key is necessary in order to avoid attacks | key is necessary in order to avoid attacks where an attacker is able | |||
| where an attacker is able to get a key they control endorsed. | to get a key endorsed that the attacker controls. | |||
| To summarize: attestation key provisioning must ensure that only | To summarize, attestation key provisioning must ensure that only | |||
| valid attestation key material is established in Attesters. | valid attestation key material is established in Attesters. | |||
| 12.2. Conceptual Message Protection | 12.2. Conceptual Message Protection | |||
| Any solution that conveys information in any conceptual message (see | Any solution that conveys information in any conceptual message (see | |||
| Section 8) must support end-to-end integrity protection and replay | Section 8) must support end-to-end integrity protection and replay | |||
| attack prevention, and often also needs to support additional | attack prevention. It often also needs to support additional | |||
| security properties, including: | security properties, including: | |||
| * end-to-end encryption, | * end-to-end encryption, | |||
| * denial of service protection, | * denial-of-service protection, | |||
| * authentication, | * authentication, | |||
| * auditing, | * auditing, | |||
| * fine grained access controls, and | * fine-grained access controls, and | |||
| * logging. | * logging. | |||
| Section 10 discusses ways in which freshness can be used in this | Section 10 discusses ways in which freshness can be used in this | |||
| architecture to protect against replay attacks. | architecture to protect against replay attacks. | |||
| To assess the security provided by a particular appraisal policy, it | To assess the security provided by a particular appraisal policy, it | |||
| is important to understand the strength of the root of trust, e.g., | is important to understand the strength of the root of trust, e.g., | |||
| whether it is mutable software, or firmware that is read-only after | whether it is mutable software or firmware that is read-only after | |||
| boot, or immutable hardware/ROM. | boot or immutable hardware/ROM. | |||
| It is also important that the appraisal policy was itself obtained | It is also important that the appraisal policy was obtained securely | |||
| securely. If an attacker can configure or modify appraisal policies, | itself. If an attacker can configure or modify appraisal policies | |||
| Endorsements or Reference Values for a Relying Party or for a | and Endorsements or Reference Values for a Relying Party or a | |||
| Verifier, then integrity of the process is compromised. | Verifier, then integrity of the process is compromised. | |||
| Security protections in RATS may be applied at different layers, | Security protections in the RATS architecture may be applied at | |||
| whether by a conveyance protocol, or an information encoding format. | different layers, whether by a conveyance protocol or an information | |||
| This architecture expects conceptual messages to be end-to-end | encoding format. This architecture expects conceptual messages to be | |||
| protected based on the role interaction context. For example, if an | end-to-end protected based on the role interaction context. For | |||
| Attester produces Evidence that is relayed through some other entity | example, if an Attester produces Evidence that is relayed through | |||
| that doesn't implement the Attester or the intended Verifier roles, | some other entity that doesn't implement the Attester or the intended | |||
| then the relaying entity should not expect to have access to the | Verifier roles, then the relaying entity should not expect to have | |||
| Evidence. | access to the Evidence. | |||
| The RATS architecture allows for an entity to function in multiple | The RATS architecture allows for an entity to function in multiple | |||
| roles (Section 6) and for composite devices (Section 3.3). | roles (Section 6) and for composite devices (Section 3.3). | |||
| Implementers need to evaluate their designs to ensure that the | Implementers need to evaluate their designs to ensure that the | |||
| assumed security properties of the individual components and roles | assumed security properties of the individual components and roles | |||
| still hold despite the lack of separation, and that emergent risk is | still hold despite the lack of separation and that emergent risk is | |||
| not introduced. The specifics of this evaluation will depend on the | not introduced. The specifics of this evaluation will depend on the | |||
| implementation and the use case and hence is out of scope for this | implementation and the use case; hence, they are out of scope for | |||
| document. Isolation mechanisms in software or hardware that separate | this document. Isolation mechanisms in software or hardware that | |||
| Attesting Environments and Target Environments Section 3.1 can | separate Attesting Environments and Target Environments (Section 3.1) | |||
| support an implementer's evaluation and resulting design decisions. | can support an implementer's evaluation and resulting design | |||
| decisions. | ||||
| 12.3. Epoch ID-based Attestation | 12.3. Attestation Based on Epoch ID | |||
| Epoch IDs, described in Section 10.3, can be tampered with, replayed, | Epoch IDs, described in Section 10.3, can be tampered with, replayed, | |||
| dropped, delayed, and reordered by an attacker. | dropped, delayed, and reordered by an attacker. | |||
| An attacker could be either external or belong to the distribution | An attacker could either be external or belong to the distribution | |||
| group, for example, if one of the Attester entities have been | group (for example, if one of the Attester entities have been | |||
| compromised. | compromised). | |||
| An attacker who is able to tamper with epoch IDs can potentially lock | An attacker who is able to tamper with epoch IDs can potentially lock | |||
| all the participants in a certain epoch of choice forever, | all the participants in a certain epoch of choice forever, | |||
| effectively freezing time. This is problematic since it destroys the | effectively freezing time. This is problematic since it destroys the | |||
| ability to ascertain freshness of Evidence and Attestation Results. | ability to ascertain freshness of Evidence and Attestation Results. | |||
| To mitigate this threat, the transport should be at least integrity | To mitigate this threat, the transport should be at least integrity | |||
| protected and provide origin authentication. | protected and provide origin authentication. | |||
| Selective dropping of epoch IDs is equivalent to pinning the victim | Selective dropping of epoch IDs is equivalent to pinning the victim | |||
| node to a past epoch. An attacker could drop epoch IDs to only some | node to a past epoch. An attacker could drop epoch IDs to only some | |||
| entities and not others, which will typically result in a denial of | entities and not others, which will typically result in a denial of | |||
| service due to the permanent staleness of the Attestation Result or | service due to the permanent staleness of the Attestation Result or | |||
| Evidence. | Evidence. | |||
| Delaying or reordering epoch IDs is equivalent to manipulating the | Delaying or reordering epoch IDs is equivalent to manipulating the | |||
| victim's timeline at will. This ability could be used by a malicious | victim's timeline at will. This ability could be used by a malicious | |||
| actor (e.g., a compromised router) to mount a confusion attack where, | actor (e.g., a compromised router) to mount a confusion attack. For | |||
| for example, a Verifier is tricked into accepting Evidence coming | example, a Verifier can be tricked into accepting Evidence coming | |||
| from a past epoch as fresh, while in the meantime the Attester has | from a past epoch as fresh, while, in the meantime, the Attester has | |||
| been compromised. | been compromised. | |||
| Reordering and dropping attacks are mitigated if the transport | Reordering and dropping attacks are mitigated if the transport | |||
| provides the ability to detect reordering and drop. However, the | provides the ability to detect reordering and drop. However, the | |||
| delay attack described above can't be thwarted in this manner. | delay attack described above can't be thwarted in this manner. | |||
| 12.4. Trust Anchor Protection | 12.4. Trust Anchor Protection | |||
| As noted in Section 7, Verifiers and Relying Parties have trust | As noted in Section 7, Verifiers and Relying Parties have trust | |||
| anchor stores that must be secured. [RFC6024] contains more | anchor stores that must be secured. [RFC6024] contains more | |||
| skipping to change at page 43, line 9 ¶ | skipping to change at line 1862 ¶ | |||
| keys. Section 6 of [NIST-800-57-p1] contains a comprehensive | keys. Section 6 of [NIST-800-57-p1] contains a comprehensive | |||
| treatment of the topic, including the protection of symmetric key | treatment of the topic, including the protection of symmetric key | |||
| material. Specifically, a trust anchor store must resist | material. Specifically, a trust anchor store must resist | |||
| modification against unauthorized insertion, deletion, and | modification against unauthorized insertion, deletion, and | |||
| modification. Additionally, if the trust anchor is a symmetric key, | modification. Additionally, if the trust anchor is a symmetric key, | |||
| the trust anchor store must not allow unauthorized read. | the trust anchor store must not allow unauthorized read. | |||
| If certificates are used as trust anchors, Verifiers and Relying | If certificates are used as trust anchors, Verifiers and Relying | |||
| Parties are also responsible for validating the entire certificate | Parties are also responsible for validating the entire certificate | |||
| path up to the trust anchor, which includes checking for certificate | path up to the trust anchor, which includes checking for certificate | |||
| revocation. For an example of such a proceedure see Section 6 of | revocation. For an example of such a procedure, see Section 6 of | |||
| [RFC5280]. | [RFC5280]. | |||
| 13. IANA Considerations | 13. IANA Considerations | |||
| This document does not require any actions by IANA. | This document has no IANA actions. | |||
| 14. Acknowledgments | ||||
| Special thanks go to Joerg Borchert, Nancy Cam-Winget, Jessica | ||||
| Fitzgerald-McKay, Diego Lopez, Laurence Lundblade, Paul Rowe, Hannes | ||||
| Tschofenig, Frank Xia, and David Wooten. | ||||
| 15. Notable Contributions | ||||
| Thomas Hardjono created initial versions of the terminology section | ||||
| in collaboration with Ned Smith. Eric Voit provided the conceptual | ||||
| separation between Attestation Provision Flows and Attestation | ||||
| Evidence Flows. Monty Wisemen created the content structure of the | ||||
| first three architecture drafts. Carsten Bormann provided many of | ||||
| the motivational building blocks with respect to the Internet Threat | ||||
| Model. | ||||
| Peter Loscocco contributed critical review feedback as part of the | ||||
| weekly design team meetings that added precision and depth to several | ||||
| sections. | ||||
| 16. References | 14. References | |||
| 16.1. Normative References | 14.1. Normative References | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., Polk, W., and RFC Publisher, "Internet X.509 | |||
| Infrastructure Certificate and Certificate Revocation List | Public Key Infrastructure Certificate and Certificate | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | Revocation List (CRL) Profile", RFC 5280, | |||
| <https://www.rfc-editor.org/rfc/rfc5280>. | DOI 10.17487/RFC5280, May 2008, | |||
| <https://www.rfc-editor.org/info/rfc5280>. | ||||
| [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | [RFC7519] Jones, M., Bradley, J., Sakimura, N., and RFC Publisher, | |||
| (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, | |||
| <https://www.rfc-editor.org/rfc/rfc7519>. | May 2015, <https://www.rfc-editor.org/info/rfc7519>. | |||
| [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, | [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., Tschofenig, H., | |||
| "CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, | and RFC Publisher, "CBOR Web Token (CWT)", RFC 8392, | |||
| May 2018, <https://www.rfc-editor.org/rfc/rfc8392>. | DOI 10.17487/RFC8392, May 2018, | |||
| <https://www.rfc-editor.org/info/rfc8392>. | ||||
| 16.2. Informative References | 14.2. Informative References | |||
| [CCC-DeepDive] | [CCC-DeepDive] | |||
| Confidential Computing Consortium, "Confidential Computing | Confidential Computing Consortium, "A Technical Analysis | |||
| Deep Dive", n.d., | of Confidential Computing", Version 1.3, November 2022, | |||
| <https://confidentialcomputing.io/whitepaper-02-latest>. | <https://confidentialcomputing.io/white-papers-reports>. | |||
| [CTAP] FIDO Alliance, "Client to Authenticator Protocol", n.d., | [CTAP] FIDO Alliance, "Client to Authenticator Protocol (CTAP)", | |||
| <https://fidoalliance.org/specs/fido-v2.0-id-20180227/ | February 2018, <https://fidoalliance.org/specs/fido-v2.0- | |||
| fido-client-to-authenticator-protocol-v2.0-id- | id-20180227/fido-client-to-authenticator-protocol-v2.0-id- | |||
| 20180227.html>. | 20180227.html>. | |||
| [I-D.birkholz-rats-tuda] | [NIST-800-57-p1] | |||
| Fuchs, A., Birkholz, H., McDonald, I., and C. Bormann, | Barker, E., "Recommendation for Key Management: Part 1 - | |||
| "Time-Based Uni-Directional Attestation", Work in | General", DOI 10.6028/NIST.SP.800-57pt1r5, May 2020, | |||
| Progress, Internet-Draft, draft-birkholz-rats-tuda-07, 10 | <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | |||
| July 2022, <https://datatracker.ietf.org/doc/html/draft- | NIST.SP.800-57pt1r5.pdf>. | |||
| birkholz-rats-tuda-07>. | ||||
| [I-D.birkholz-rats-uccs] | [OPCUA] OPC Foundation, "OPC Unified Architecture Specification, | |||
| Birkholz, H., O'Donoghue, J., Cam-Winget, N., and C. | Part 2: Security Model, Release 1.03", OPC 10000-2 , | |||
| Bormann, "A CBOR Tag for Unprotected CWT Claims Sets", | November 2015, <https://opcfoundation.org/developer-tools/ | |||
| Work in Progress, Internet-Draft, draft-birkholz-rats- | specifications-unified-architecture/part-2-security- | |||
| uccs-03, 8 March 2021, | model/>. | |||
| <https://datatracker.ietf.org/doc/html/draft-birkholz- | ||||
| rats-uccs-03>. | ||||
| [I-D.ietf-rats-daa] | [RATS-DAA] Birkholz, H., Newton, C., Chen, L., and D. Thaler, "Direct | |||
| Birkholz, H., Newton, C., Chen, L., and D. Thaler, "Direct | ||||
| Anonymous Attestation for the Remote Attestation | Anonymous Attestation for the Remote Attestation | |||
| Procedures Architecture", Work in Progress, Internet- | Procedures Architecture", Work in Progress, Internet- | |||
| Draft, draft-ietf-rats-daa-02, 7 September 2022, | Draft, draft-ietf-rats-daa-02, 7 September 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-rats- | <https://datatracker.ietf.org/doc/html/draft-ietf-rats- | |||
| daa-02>. | daa-02>. | |||
| [I-D.ietf-teep-architecture] | [RATS-PSA-TOKEN] | |||
| Pei, M., Tschofenig, H., Thaler, D., and D. M. Wheeler, | ||||
| "Trusted Execution Environment Provisioning (TEEP) | ||||
| Architecture", Work in Progress, Internet-Draft, draft- | ||||
| ietf-teep-architecture-18, 11 July 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-teep- | ||||
| architecture-18>. | ||||
| [I-D.tschofenig-rats-psa-token] | ||||
| Tschofenig, H., Frost, S., Brossard, M., Shaw, A. L., and | Tschofenig, H., Frost, S., Brossard, M., Shaw, A. L., and | |||
| T. Fossati, "Arm's Platform Security Architecture (PSA) | T. Fossati, "Arm's Platform Security Architecture (PSA) | |||
| Attestation Token", Work in Progress, Internet-Draft, | Attestation Token", Work in Progress, Internet-Draft, | |||
| draft-tschofenig-rats-psa-token-10, 6 September 2022, | draft-tschofenig-rats-psa-token-10, 6 September 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-tschofenig- | <https://datatracker.ietf.org/doc/html/draft-tschofenig- | |||
| rats-psa-token-10>. | rats-psa-token-10>. | |||
| [I-D.tschofenig-tls-cwt] | [RATS-TUDA] | |||
| Tschofenig, H. and M. Brossard, "Using CBOR Web Tokens | Fuchs, A., Birkholz, H., McDonald, I., and C. Bormann, | |||
| (CWTs) in Transport Layer Security (TLS) and Datagram | "Time-Based Uni-Directional Attestation", Work in | |||
| Transport Layer Security (DTLS)", Work in Progress, | Progress, Internet-Draft, draft-birkholz-rats-tuda-07, 10 | |||
| Internet-Draft, draft-tschofenig-tls-cwt-02, 13 July 2020, | July 2022, <https://datatracker.ietf.org/doc/html/draft- | |||
| <https://datatracker.ietf.org/doc/html/draft-tschofenig- | birkholz-rats-tuda-07>. | |||
| tls-cwt-02>. | ||||
| [NIST-800-57-p1] | ||||
| Barker, E., "Recommendation for Key Managemement: Part 1 - | ||||
| General", May 2020, | ||||
| <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | ||||
| NIST.SP.800-57pt1r5.pdf>. | ||||
| [OPCUA] OPC Foundation, "OPC Unified Architecture Specification, | [RATS-UCCS] | |||
| Part 2: Security Model, Release 1.03", OPC 10000-2 , 25 | Birkholz, H., O'Donoghue, J., Cam-Winget, N., and C. | |||
| November 2015, <https://opcfoundation.org/developer-tools/ | Bormann, "A CBOR Tag for Unprotected CWT Claims Sets", | |||
| specifications-unified-architecture/part-2-security- | Work in Progress, Internet-Draft, draft-ietf-rats-uccs-03, | |||
| model/>. | 11 July 2022, <https://datatracker.ietf.org/doc/html/ | |||
| draft-ietf-rats-uccs-03>. | ||||
| [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | [RFC4086] Eastlake 3rd, D., Schiller, J., Crocker, S., and RFC | |||
| "Randomness Requirements for Security", BCP 106, RFC 4086, | Publisher, "Randomness Requirements for Security", | |||
| DOI 10.17487/RFC4086, June 2005, | BCP 106, RFC 4086, DOI 10.17487/RFC4086, June 2005, | |||
| <https://www.rfc-editor.org/rfc/rfc4086>. | <https://www.rfc-editor.org/info/rfc4086>. | |||
| [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R. and RFC Publisher, "Internet Security Glossary, | |||
| FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | Version 2", FYI 36, RFC 4949, DOI 10.17487/RFC4949, August | |||
| <https://www.rfc-editor.org/rfc/rfc4949>. | 2007, <https://www.rfc-editor.org/info/rfc4949>. | |||
| [RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., and J. | [RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., Tardo, | |||
| Tardo, "Network Endpoint Assessment (NEA): Overview and | J., and RFC Publisher, "Network Endpoint Assessment (NEA): | |||
| Requirements", RFC 5209, DOI 10.17487/RFC5209, June 2008, | Overview and Requirements", RFC 5209, | |||
| <https://www.rfc-editor.org/rfc/rfc5209>. | DOI 10.17487/RFC5209, June 2008, | |||
| <https://www.rfc-editor.org/info/rfc5209>. | ||||
| [RFC6024] Reddy, R. and C. Wallace, "Trust Anchor Management | [RFC6024] Reddy, R., Wallace, C., and RFC Publisher, "Trust Anchor | |||
| Requirements", RFC 6024, DOI 10.17487/RFC6024, October | Management Requirements", RFC 6024, DOI 10.17487/RFC6024, | |||
| 2010, <https://www.rfc-editor.org/rfc/rfc6024>. | October 2010, <https://www.rfc-editor.org/info/rfc6024>. | |||
| [RFC8322] Field, J., Banghart, S., and D. Waltermire, "Resource- | [RFC8322] Field, J., Banghart, S., Waltermire, D., and RFC | |||
| Oriented Lightweight Information Exchange (ROLIE)", | Publisher, "Resource-Oriented Lightweight Information | |||
| RFC 8322, DOI 10.17487/RFC8322, February 2018, | Exchange (ROLIE)", RFC 8322, DOI 10.17487/RFC8322, | |||
| <https://www.rfc-editor.org/rfc/rfc8322>. | February 2018, <https://www.rfc-editor.org/info/rfc8322>. | |||
| [strengthoffunction] | [strengthoffunction] | |||
| NISC, "Strength of Function", n.d., | NIST, "Strength of Function", | |||
| <https://csrc.nist.gov/glossary/term/ | <https://csrc.nist.gov/glossary/term/ | |||
| strength_of_function>. | strength_of_function>. | |||
| [TCG-DICE] Trusted Computing Group, "DICE Certificate Profiles", | [TCG-DICE] Trusted Computing Group, "DICE Attestation Architecture", | |||
| n.d., <https://trustedcomputinggroup.org/wp- | Version 1.00, Revision 0.23, March 2021, | |||
| content/uploads/DICE-Certificate-Profiles- | <https://trustedcomputinggroup.org/wp-content/uploads/ | |||
| r01_3june2020-1.pdf>. | DICE-Attestation-Architecture-r23-final.pdf>. | |||
| [TCG-DICE-SIBDA] | [TCG-DICE-SIBDA] | |||
| Trusted Computing Group, "Symmetric Identity Based Device | Trusted Computing Group, "Symmetric Identity Based Device | |||
| Attestation for DICE", 24 July 2019, | Attestation", Version 1.0, Revision 0.95, January 2020, | |||
| <https://trustedcomputinggroup.org/wp-content/uploads/ | <https://trustedcomputinggroup.org/wp-content/uploads/ | |||
| TCG_DICE_SymIDAttest_v1_r0p94_pubrev.pdf>. | TCG_DICE_SymIDAttest_v1_r0p95_pub-1.pdf>. | |||
| [TCGarch] Trusted Computing Group, "Trusted Platform Module Library | [TCGarch] Trusted Computing Group, "Trusted Platform Module Library, | |||
| - Part 1: Architecture", 8 November 2019, | Part 1: Architecture", November 2019, | |||
| <https://trustedcomputinggroup.org/wp-content/uploads/ | <https://trustedcomputinggroup.org/wp-content/uploads/ | |||
| TCG_TPM2_r1p59_Part1_Architecture_pub.pdf>. | TCG_TPM2_r1p59_Part1_Architecture_pub.pdf>. | |||
| [TEEP-ARCH] | ||||
| Pei, M., Tschofenig, H., Thaler, D., and D. M. Wheeler, | ||||
| "Trusted Execution Environment Provisioning (TEEP) | ||||
| Architecture", Work in Progress, Internet-Draft, draft- | ||||
| ietf-teep-architecture-19, 24 October 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-teep- | ||||
| architecture-19>. | ||||
| [TLS-CWT] Tschofenig, H. and M. Brossard, "Using CBOR Web Tokens | ||||
| (CWTs) in Transport Layer Security (TLS) and Datagram | ||||
| Transport Layer Security (DTLS)", Work in Progress, | ||||
| Internet-Draft, draft-tschofenig-tls-cwt-02, 13 July 2020, | ||||
| <https://datatracker.ietf.org/doc/html/draft-tschofenig- | ||||
| tls-cwt-02>. | ||||
| [WebAuthN] W3C, "Web Authentication: An API for accessing Public Key | [WebAuthN] W3C, "Web Authentication: An API for accessing Public Key | |||
| Credentials", n.d., <https://www.w3.org/TR/webauthn-1/>. | Credentials Level 1", March 2019, | |||
| <https://www.w3.org/TR/webauthn-1/>. | ||||
| Appendix A. Time Considerations | Appendix A. Time Considerations | |||
| Section 10 discussed various issues and requirements around freshness | Section 10 discussed various issues and requirements around freshness | |||
| of evidence, and summarized three approaches that might be used by | of Evidence and summarized three approaches that might be used by | |||
| different solutions to address them. This appendix provides more | different solutions to address them. This appendix provides more | |||
| details with examples to help illustrate potential approaches, to | details with examples to help illustrate potential approaches and | |||
| inform those creating specific solutions. | inform those creating specific solutions. | |||
| The table below defines a number of relevant events, with an ID that | The table below defines a number of relevant events with an ID that | |||
| is used in subsequent diagrams. The times of said events might be | is used in subsequent diagrams. The times of said events might be | |||
| defined in terms of an absolute clock time, such as the Coordinated | defined in terms of an absolute clock time, such as the Coordinated | |||
| Universal Time timescale, or might be defined relative to some other | Universal Time timescale, or might be defined relative to some other | |||
| timestamp or timeticks counter, such as a clock resetting its epoch | timestamp or timeticks counter, such as a clock resetting its epoch | |||
| each time it is powered on. | each time it is powered on. | |||
| +====+============+=================================================+ | +====+============+=================================================+ | |||
| | ID | Event | Explanation of event | | | ID | Event | Explanation of event | | |||
| +====+============+=================================================+ | +====+============+=================================================+ | |||
| | VG | Value | A value to appear in a Claim was created. | | | VG | Value | A value to appear in a Claim was created. | | |||
| | | generated | In some cases, a value may have technically | | | | generated | In some cases, a value may have technically | | |||
| | | | existed before an Attester became aware of | | | | | existed before an Attester became aware of | | |||
| | | | it but the Attester might have no idea how | | | | | it, but the Attester might have no idea how | | |||
| | | | long it has had that value. In such a | | | | | long it has had that value. In such a | | |||
| | | | case, the Value created time is the time at | | | | | case, the value created time is the time at | | |||
| | | | which the Claim containing the copy of the | | | | | which the Claim containing the copy of the | | |||
| | | | value was created. | | | | | value was created. | | |||
| +----+------------+-------------------------------------------------+ | +----+------------+-------------------------------------------------+ | |||
| | NS | Nonce sent | A nonce not predictable to an Attester | | | NS | Nonce sent | A nonce not predictable to an Attester | | |||
| | | | (recentness & uniqueness) is sent to an | | | | | (recentness & uniqueness) is sent to an | | |||
| | | | Attester. | | | | | Attester. | | |||
| +----+------------+-------------------------------------------------+ | +----+------------+-------------------------------------------------+ | |||
| | NR | Nonce | A nonce is relayed to an Attester by | | | NR | Nonce | A nonce is relayed to an Attester by | | |||
| | | relayed | another entity. | | | | relayed | another entity. | | |||
| +----+------------+-------------------------------------------------+ | +----+------------+-------------------------------------------------+ | |||
| skipping to change at page 48, line 4 ¶ | skipping to change at line 2068 ¶ | |||
| | OP | Operation | The Relying Party performs some operation | | | OP | Operation | The Relying Party performs some operation | | |||
| | | performed | requested by the Attester via a resource | | | | performed | requested by the Attester via a resource | | |||
| | | | access protocol as depicted in Figure 8, | | | | | access protocol as depicted in Figure 8, | | |||
| | | | e.g., across a session created earlier at | | | | | e.g., across a session created earlier at | | |||
| | | | time(RA). | | | | | time(RA). | | |||
| +----+------------+-------------------------------------------------+ | +----+------------+-------------------------------------------------+ | |||
| | RX | Result | An Attestation Result should no longer be | | | RX | Result | An Attestation Result should no longer be | | |||
| | | expiry | accepted, according to the Verifier that | | | | expiry | accepted, according to the Verifier that | | |||
| | | | generated it. | | | | | generated it. | | |||
| +----+------------+-------------------------------------------------+ | +----+------------+-------------------------------------------------+ | |||
| Table 1 | ||||
| Table 1: Relevant Events over Time | ||||
| Using the table above, a number of hypothetical examples of how a | Using the table above, a number of hypothetical examples of how a | |||
| solution might be built are illustrated below. This list is not | solution might be built are illustrated below. This list is not | |||
| intended to be complete, but is just representative enough to | intended to be complete; it is just representative enough to | |||
| highlight various timing considerations. | highlight various timing considerations. | |||
| All times are relative to the local clocks, indicated by an "_a" | All times are relative to the local clocks, indicated by an "_a" | |||
| (Attester), "_v" (Verifier), or "_r" (Relying Party) suffix. | (Attester), "_v" (Verifier), or "_r" (Relying Party) suffix. | |||
| Times with an appended Prime (') indicate a second instance of the | Times with an appended Prime (') indicate a second instance of the | |||
| same event. | same event. | |||
| How and if clocks are synchronized depends upon the model. | How and if clocks are synchronized depends upon the model. | |||
| In the figures below, curly braces indicate containment. For | In the figures below, curly braces indicate containment. For | |||
| example, the notation Evidence{foo} indicates that 'foo' is contained | example, the notation Evidence{foo} indicates that 'foo' is contained | |||
| in the Evidence and is thus covered by its signature. | in the Evidence; thus, it is covered by its signature. | |||
| A.1. Example 1: Timestamp-based Passport Model Example | A.1. Example 1: Timestamp-Based Passport Model | |||
| The following example illustrates a hypothetical Passport Model | Figure 10 illustrates a hypothetical Passport Model solution that | |||
| solution that uses timestamps and requires roughly synchronized | uses timestamps and requires roughly synchronized clocks between the | |||
| clocks between the Attester, Verifier, and Relying Party, which | Attester, Verifier, and Relying Party, which depends on using a | |||
| depends on using a secure clock synchronization mechanism. As a | secure clock synchronization mechanism. As a result, the receiver of | |||
| result, the receiver of a conceptual message containing a timestamp | a conceptual message containing a timestamp can directly compare it | |||
| can directly compare it to its own clock and timestamps. | to its own clock and timestamps. | |||
| .----------. .----------. .---------------. | .----------. .----------. .---------------. | |||
| | Attester | | Verifier | | Relying Party | | | Attester | | Verifier | | Relying Party | | |||
| '----+-----' '-----+----' '-------+-------' | '----+-----' '-----+----' '-------+-------' | |||
| | | | | | | | | |||
| time(VG_a) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| time(EG_a) | | | time(EG_a) | | | |||
| skipping to change at page 49, line 29 ¶ | skipping to change at line 2121 ¶ | |||
| |<-----Attestation Result---------+ | | |<-----Attestation Result---------+ | | |||
| | {time(RG_v),time(RX_v)} | | | | {time(RG_v),time(RX_v)} | | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| +--Attestation Result{time(RG_v),time(RX_v)}--> time(RA_r) | +--Attestation Result{time(RG_v),time(RX_v)}--> time(RA_r) | |||
| | | | | | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| | time(OP_r) | | time(OP_r) | |||
| Figure 10: Timestamp-Based Passport Model | ||||
| The Verifier can check whether the Evidence is fresh when appraising | The Verifier can check whether the Evidence is fresh when appraising | |||
| it at time(RG_v) by checking time(RG_v) - time(EG_a) < Threshold, | it at time(RG_v) by checking time(RG_v) - time(EG_a) < Threshold, | |||
| where the Verifier's threshold is large enough to account for the | where the Verifier's threshold is large enough to account for the | |||
| maximum permitted clock skew between the Verifier and the Attester. | maximum permitted clock skew between the Verifier and the Attester. | |||
| If time(VG_a) is also included in the Evidence along with the Claim | If time(VG_a) is included in the Evidence along with the Claim value | |||
| value generated at that time, and the Verifier decides that it can | generated at that time, and the Verifier decides that it can trust | |||
| trust the time(VG_a) value, the Verifier can also determine whether | the time(VG_a) value, the Verifier can also determine whether the | |||
| the Claim value is recent by checking time(RG_v) - time(VG_a) < | Claim value is recent by checking time(RG_v) - time(VG_a) < | |||
| Threshold. The threshold is decided by the Appraisal Policy for | Threshold. The threshold is decided by the Appraisal Policy for | |||
| Evidence, and again needs to take into account the maximum permitted | Evidence and, again, needs to take into account the maximum permitted | |||
| clock skew between the Verifier and the Attester. | clock skew between the Verifier and the Attester. | |||
| The Attester does not consume the Attestation Result, but might cache | The Attester does not consume the Attestation Result but might cache | |||
| it. | it. | |||
| The Relying Party can check whether the Attestation Result is fresh | The Relying Party can check whether the Attestation Result is fresh | |||
| when appraising it at time(RA_r) by checking time(RA_r) - time(RG_v) | when appraising it at time(RA_r) by checking the time(RA_r) - | |||
| < Threshold, where the Relying Party's threshold is large enough to | time(RG_v) < Threshold, where the Relying Party's threshold is large | |||
| account for the maximum permitted clock skew between the Relying | enough to account for the maximum permitted clock skew between the | |||
| Party and the Verifier. The result might then be used for some time | Relying Party and the Verifier. The result might then be used for | |||
| (e.g., throughout the lifetime of a connection established at | some time (e.g., throughout the lifetime of a connection established | |||
| time(RA_r)). The Relying Party must be careful, however, to not | at time(RA_r)). However, the Relying Party must be careful not to | |||
| allow continued use beyond the period for which it deems the | allow continued use beyond the period for which it deems the | |||
| Attestation Result to remain fresh enough. Thus, it might allow use | Attestation Result to remain fresh enough. Thus, it might allow use | |||
| (at time(OP_r)) as long as time(OP_r) - time(RG_v) < Threshold. | (at time(OP_r)) as long as time(OP_r) - time(RG_v) < Threshold. | |||
| However, if the Attestation Result contains an expiry time time(RX_v) | However, if the Attestation Result contains an expiry time | |||
| then it could explicitly check time(OP_r) < time(RX_v). | time(RX_v), then it could explicitly check time(OP_r) < time(RX_v). | |||
| A.2. Example 2: Nonce-based Passport Model Example | A.2. Example 2: Nonce-Based Passport Model | |||
| The following example illustrates a hypothetical Passport Model | Figure 11 illustrates a hypothetical Passport Model solution that | |||
| solution that uses nonces instead of timestamps. Compared to the | uses nonces instead of timestamps. Compared to the timestamp-based | |||
| timestamp-based example, it requires an extra round trip to retrieve | example, it requires an extra round trip to retrieve a nonce and | |||
| a nonce, and requires that the Verifier and Relying Party track state | requires that the Verifier and Relying Party track state to remember | |||
| to remember the nonce for some period of time. | the nonce for some period of time. | |||
| The advantage is that it does not require that any clocks are | The advantage is that it does not require that any clocks are | |||
| synchronized. As a result, the receiver of a conceptual message | synchronized. As a result, the receiver of a conceptual message | |||
| containing a timestamp cannot directly compare it to its own clock or | containing a timestamp cannot directly compare it to its own clock or | |||
| timestamps. Thus, we use a suffix ("a" for Attester, "v" for | timestamps. Thus, we use a suffix ("a" for Attester, "v" for | |||
| Verifier, and "r" for Relying Party) on the IDs below indicating | Verifier, and "r" for Relying Party) on the IDs below indicating | |||
| which clock generated them, since times from different clocks cannot | which clock generated them since times from different clocks cannot | |||
| be compared. Only the delta between two events from the sender can | be compared. Only the delta between two events from the sender can | |||
| be used by the receiver. | be used by the receiver. | |||
| .----------. .----------. .---------------. | .----------. .----------. .---------------. | |||
| | Attester | | Verifier | | Relying Party | | | Attester | | Verifier | | Relying Party | | |||
| '----+-----' '-----+----' '-------+-------' | '----+-----' '-----+----' '-------+-------' | |||
| | | | | | | | | |||
| time(VG_a) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| skipping to change at page 51, line 37 ¶ | skipping to change at line 2201 ¶ | |||
| | | | | | | |||
| time(RR_a) | | time(RR_a) | | |||
| | | | | | | |||
| +--[Attestation Result{time(RX_v)-time(RG_v)}, -->|time(RA_r) | +--[Attestation Result{time(RX_v)-time(RG_v)}, -->|time(RA_r) | |||
| | Nonce2, time(RR_a)-time(EG_a)] | | | Nonce2, time(RR_a)-time(EG_a)] | | |||
| | | | | | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| | time(OP_r) | | time(OP_r) | |||
| Figure 11: Nonce-Based Passport Model | ||||
| In this example solution, the Verifier can check whether the Evidence | In this example solution, the Verifier can check whether the Evidence | |||
| is fresh at time(RG_v) by verifying that time(RG_v)-time(NS_v) < | is fresh at time(RG_v) by verifying that time(RG_v)-time(NS_v) < | |||
| Threshold. | Threshold. | |||
| The Verifier cannot, however, simply rely on a Nonce to determine | However, the Verifier cannot simply rely on a Nonce to determine | |||
| whether the value of a Claim is recent, since the Claim value might | whether the value of a Claim is recent since the Claim value might | |||
| have been generated long before the nonce was sent by the Verifier. | have been generated long before the nonce was sent by the Verifier. | |||
| However, if the Verifier decides that the Attester can be trusted to | Nevertheless, if the Verifier decides that the Attester can be | |||
| correctly provide the delta time(EG_a)-time(VG_a), then it can | trusted to correctly provide the delta time(EG_a)-time(VG_a), then it | |||
| determine recency by checking time(RG_v)-time(NS_v) + time(EG_a)- | can determine recency by checking time(RG_v)-time(NS_v) + time(EG_a)- | |||
| time(VG_a) < Threshold. | time(VG_a) < Threshold. | |||
| Similarly if, based on an Attestation Result from a Verifier it | Similarly if, based on an Attestation Result from a Verifier it | |||
| trusts, the Relying Party decides that the Attester can be trusted to | trusts, the Relying Party decides that the Attester can be trusted to | |||
| correctly provide time deltas, then it can determine whether the | correctly provide time deltas, then it can determine whether the | |||
| Attestation Result is fresh by checking time(OP_r)-time(NS_r) + | Attestation Result is fresh by checking time(OP_r)-time(NS_r) + | |||
| time(RR_a)-time(EG_a) < Threshold. Although the Nonce2 and | time(RR_a)-time(EG_a) < Threshold. Although the Nonce2 and | |||
| time(RR_a)-time(EG_a) values cannot be inside the Attestation Result, | time(RR_a)-time(EG_a) values cannot be inside the Attestation Result, | |||
| they might be signed by the Attester such that the Attestation Result | they might be signed by the Attester such that the Attestation Result | |||
| vouches for the Attester's signing capability. | vouches for the Attester's signing capability. | |||
| The Relying Party must still be careful, however, to not allow | However, the Relying Party must still be careful not to allow | |||
| continued use beyond the period for which it deems the Attestation | continued use beyond the period for which it deems the Attestation | |||
| Result to remain valid. Thus, if the Attestation Result sends a | Result to remain valid. Thus, if the Attestation Result sends a | |||
| validity lifetime in terms of time(RX_v)-time(RG_v), then the Relying | validity lifetime in terms of time(RX_v)-time(RG_v), then the Relying | |||
| Party can check time(OP_r)-time(NS_r) < time(RX_v)-time(RG_v). | Party can check time(OP_r)-time(NS_r) < time(RX_v)-time(RG_v). | |||
| A.3. Example 3: Epoch ID-based Passport Model Example | A.3. Example 3: Passport Model Based on Epoch ID | |||
| The example in Figure 10 illustrates a hypothetical Passport Model | The example in Figure 12 illustrates a hypothetical Passport Model | |||
| solution that uses epoch IDs instead of nonces or timestamps. | solution that uses epoch IDs instead of nonces or timestamps. | |||
| The Epoch ID Distributor broadcasts epoch ID I which starts a new | The epoch ID distributor broadcasts epoch ID I, which starts a new | |||
| epoch E for a protocol participant upon reception at time(IR). | epoch E for a protocol participant upon reception at time(IR). | |||
| The Attester generates Evidence incorporating epoch ID I and conveys | The Attester generates Evidence incorporating epoch ID I and conveys | |||
| it to the Verifier. | it to the Verifier. | |||
| The Verifier appraises that the received epoch ID I is "fresh" | The Verifier appraises that the received epoch ID I is "fresh" | |||
| according to the definition provided in Section 10.3 whereby retries | according to the definition provided in Section 10.3 whereby retries | |||
| are required in the case of mismatching epoch IDs, and generates an | are required in the case of mismatching epoch IDs; then the Verifier | |||
| Attestation Result. The Attestation Result is conveyed to the | generates an Attestation Result. The Attestation Result is conveyed | |||
| Attester. | to the Attester. | |||
| After the transmission of epoch ID I' a new epoch E' is established | After the transmission of epoch ID I' a new epoch E' is established | |||
| when I' is received by each protocol participant. The Attester | when I' is received by each protocol participant. The Attester | |||
| relays the Attestation Result obtained during epoch E (associated | relays the Attestation Result obtained during epoch E (associated | |||
| with epoch ID I) to the Relying Party using the epoch ID for the | with epoch ID I) to the Relying Party using the epoch ID for the | |||
| current epoch I'. If the Relying Party had not yet received I', then | current epoch I'. If the Relying Party had not yet received I', then | |||
| the Attestation Result would be rejected, but in this example, it is | the Attestation Result would be rejected. The Attestation Result is | |||
| received. | received in this example. | |||
| In the illustrated scenario, the epoch ID for relaying an Attestation | In Figure 12, the epoch ID for relaying an Attestation Result to the | |||
| Result to the Relying Party is current, while a previous epoch ID was | Relying Party is current while a previous epoch ID was used to | |||
| used to generate Verifier evaluated evidence. This indicates that at | generate Verifier evaluated Evidence. This indicates that at least | |||
| least one epoch transition has occurred, and the Attestation Results | one epoch transition has occurred and the Attestation Results may | |||
| may only be as fresh as the previous epoch. If the Relying Party | only be as fresh as the previous epoch. If the Relying Party | |||
| remembers the previous epoch ID I during an epoch window as discussed | remembers the previous epoch ID I during an epoch window as discussed | |||
| in Section 10.3, and the message is received during that window, the | in Section 10.3, and the message is received during that window, the | |||
| Attestation Result is accepted as fresh, and otherwise it is rejected | Attestation Result is accepted as fresh; otherwise, it is rejected as | |||
| as stale. | stale. | |||
| .-------------. | .-------------. | |||
| .----------. | Epoch ID | .----------. .---------------. | .----------. | Epoch ID | .----------. .---------------. | |||
| | Attester | | Distributor | | Verifier | | Relying Party | | | Attester | | Distributor | | Verifier | | Relying Party | | |||
| '----+-----' '------+------' '-----+----' '-------+-------' | '----+-----' '------+------' '-----+----' '-------+-------' | |||
| | | | | | | | | | | |||
| time(VG_a) | | | | time(VG_a) | | | | |||
| | | | | | | | | | | |||
| ~ | ~ ~ | ~ | ~ ~ | |||
| | | | | | | | | | | |||
| skipping to change at page 53, line 35 ¶ | skipping to change at line 2295 ¶ | |||
| | | | | | | | | | | |||
| time(IR'_a) <----I'-o--I' ----> time(IR'_v) --> time(IR'_r) | time(IR'_a) <----I'-o--I' ----> time(IR'_v) --> time(IR'_r) | |||
| | | | | | | | | |||
| +---[Attestation Result--------------------> time(RA_r) | +---[Attestation Result--------------------> time(RA_r) | |||
| | {I,time(RX_v)-time(RG_v)},I'] | | | | {I,time(RX_v)-time(RG_v)},I'] | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| | | time(OP_r) | | | time(OP_r) | |||
| Figure 10: Epoch ID-based Passport Model | Figure 12: Epoch ID-Based Passport Model | |||
| A.4. Example 4: Timestamp-based Background-Check Model Example | A.4. Example 4: Timestamp-Based Background-Check Model | |||
| The following example illustrates a hypothetical Background-Check | Figure 13 illustrates a hypothetical Background-Check Model solution | |||
| Model solution that uses timestamps and requires roughly synchronized | that uses timestamps and requires roughly synchronized clocks between | |||
| clocks between the Attester, Verifier, and Relying Party. The | the Attester, Verifier, and Relying Party. The Attester conveys | |||
| Attester conveys Evidence to the Relying Party, which treats it as | Evidence to the Relying Party, which treats it as opaque and simply | |||
| opaque and simply forwards it on to the Verifier. | forwards it on to the Verifier. | |||
| .----------. .---------------. .----------. | .----------. .---------------. .----------. | |||
| | Attester | | Relying Party | | Verifier | | | Attester | | Relying Party | | Verifier | | |||
| '-------+--' '-------+-------' '----+-----' | '-------+--' '-------+-------' '----+-----' | |||
| | | | | | | | | |||
| time(VG_a) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| time(EG_a) | | | time(EG_a) | | | |||
| skipping to change at page 54, line 27 ¶ | skipping to change at line 2327 ¶ | |||
| | time(ER_r) ---Evidence{time(EG_a)}---->| | | time(ER_r) ---Evidence{time(EG_a)}---->| | |||
| | | | | | | | | |||
| | | time(RG_v) | | | time(RG_v) | |||
| | | | | | | | | |||
| | time(RA_r) <---Attestation Result------+ | | time(RA_r) <---Attestation Result------+ | |||
| | | {time(RX_v)} | | | | {time(RX_v)} | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| | time(OP_r) | | | time(OP_r) | | |||
| Figure 13: Timestamp-Based Background-Check Model | ||||
| The time considerations in this example are equivalent to those | The time considerations in this example are equivalent to those | |||
| discussed under Example 1 above. | discussed under Example 1. | |||
| A.5. Example 5: Nonce-based Background-Check Model Example | A.5. Example 5: Nonce-Based Background-Check Model | |||
| The following example illustrates a hypothetical Background-Check | Figure 14 illustrates a hypothetical Background-Check Model solution | |||
| Model solution that uses nonces and thus does not require that any | that uses nonces; thus, it does not require that any clocks be | |||
| clocks are synchronized. In this example solution, a nonce is | synchronized. In this example solution, a nonce is generated by a | |||
| generated by a Verifier at the request of a Relying Party, when the | Verifier at the request of a Relying Party when the Relying Party | |||
| Relying Party needs to send one to an Attester. | needs to send one to an Attester. | |||
| .----------. .---------------. .----------. | .----------. .---------------. .----------. | |||
| | Attester | | Relying Party | | Verifier | | | Attester | | Relying Party | | Verifier | | |||
| '----+-----' '-------+-------' '----+-----' | '----+-----' '-------+-------' '----+-----' | |||
| | | | | | | | | |||
| time(VG_a) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| | |<-------Nonce-----------time(NS_v) | | |<-------Nonce-----------time(NS_v) | |||
| skipping to change at page 55, line 31 ¶ | skipping to change at line 2366 ¶ | |||
| | time(ER_r) ---Evidence{Nonce}--->| | | time(ER_r) ---Evidence{Nonce}--->| | |||
| | | | | | | | | |||
| | | time(RG_v) | | | time(RG_v) | |||
| | | | | | | | | |||
| | ime(RA_r) <---Attestation Result--+ | | ime(RA_r) <---Attestation Result--+ | |||
| | | {time(RX_v)-time(RG_v)} | | | | {time(RX_v)-time(RG_v)} | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| | time(OP_r) | | | time(OP_r) | | |||
| The Verifier can check whether the Evidence is fresh, and whether a | Figure 14: Nonce-Based Background-Check Model | |||
| Claim value is recent, the same as in Example 2 above. | ||||
| The Verifier can check whether the Evidence is fresh and a Claim | ||||
| value is recent, which is the same as Example 2. | ||||
| However, unlike in Example 2, the Relying Party can use the Nonce to | However, unlike in Example 2, the Relying Party can use the Nonce to | |||
| determine whether the Attestation Result is fresh, by verifying that | determine whether the Attestation Result is fresh by verifying that | |||
| time(OP_r)-time(NR_r) < Threshold. | time(OP_r)-time(NR_r) < Threshold. | |||
| The Relying Party must still be careful, however, to not allow | However, the Relying Party must still be careful not to allow | |||
| continued use beyond the period for which it deems the Attestation | continued use beyond the period for which it deems the Attestation | |||
| Result to remain valid. Thus, if the Attestation Result sends a | Result to remain valid. Thus, if the Attestation Result sends a | |||
| validity lifetime in terms of time(RX_v)-time(RG_v), then the Relying | validity lifetime in terms of time(RX_v)-time(RG_v), then the Relying | |||
| Party can check time(OP_r)-time(ER_r) < time(RX_v)-time(RG_v). | Party can check time(OP_r)-time(ER_r) < time(RX_v)-time(RG_v). | |||
| Contributors | Acknowledgments | |||
| Monty Wiseman | ||||
| Email: montywiseman32@gmail.com | ||||
| Liang Xia | ||||
| Email: frank.xialiang@huawei.com | ||||
| Laurence Lundblade | ||||
| Email: lgl@island-resort.com | ||||
| Eliot Lear | ||||
| Email: elear@cisco.com | ||||
| Jessica Fitzgerald-McKay | ||||
| Sarah C. Helbe | ||||
| Andrew Guinn | ||||
| Peter Loscocco | ||||
| Email: pete.loscocco@gmail.com | ||||
| Eric Voit | ||||
| Thomas Fossati | ||||
| Email: thomas.fossati@arm.com | ||||
| Paul Rowe | ||||
| Carsten Bormann | The authors would like to thank the following people for their input: | |||
| Email: cabo@tzi.org | ||||
| Giri Mandyam | Joerg Borchert, Carsten Bormann, Nancy Cam-Winget, Guy Fedorkow, | |||
| Email: mandyam@qti.qualcomm.com | Jessica Fitzgerald-McKay, Thomas Fossati, Simon Frost, Andrew Guinn, | |||
| Thomas Hardjano, Eliot Lear, Diego Lopez, Peter Loscocco, Laurence | ||||
| Lundblade, Giri Mandyam, Daniel Migault, Kathleen Moriarty, Paul | ||||
| Rowe, Hannes Tschofenig, Eric Voit, Monty Wiseman, David Wooten, and | ||||
| Liang Xia. | ||||
| Kathleen Moriarty | Contributors | |||
| Email: kathleen.moriarty.ietf@gmail.com | ||||
| Guy Fedorkow | Thomas Hardjono created initial versions of the terminology section | |||
| Email: gfedorkow@juniper.net | in collaboration with Ned Smith. Eric Voit provided the conceptual | |||
| separation between Attestation Provision Flows and Attestation | ||||
| Evidence Flows. Monty Wisemen was a key author of a document that | ||||
| was merged to create this document. Carsten Bormann provided many of | ||||
| the motivational building blocks with respect to the Internet Threat | ||||
| Model. | ||||
| Simon Frost | Peter Loscocco contributed critical review feedback as part of the | |||
| Email: Simon.Frost@arm.com | weekly design team meetings that added precision and depth to several | |||
| sections. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Henk Birkholz | Henk Birkholz | |||
| Fraunhofer SIT | Fraunhofer SIT | |||
| Rheinstrasse 75 | Rheinstrasse 75 | |||
| 64295 Darmstadt | 64295 Darmstadt | |||
| Germany | Germany | |||
| Email: henk.birkholz@sit.fraunhofer.de | Email: henk.birkholz@sit.fraunhofer.de | |||
| End of changes. 296 change blocks. | ||||
| 811 lines changed or deleted | 772 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||