| < draft-ietf-teep-architecture-03.txt | draft-ietf-teep-architecture-04.txt > | |||
|---|---|---|---|---|
| TEEP M. Pei | TEEP M. Pei | |||
| Internet-Draft Symantec | Internet-Draft Symantec | |||
| Intended status: Informational H. Tschofenig | Intended status: Informational H. Tschofenig | |||
| Expires: January 9, 2020 Arm Limited | Expires: June 8, 2020 Arm Limited | |||
| D. Wheeler | D. Wheeler | |||
| Intel | Intel | |||
| A. Atyeo | A. Atyeo | |||
| Intercede | Intercede | |||
| L. Dapeng | L. Dapeng | |||
| Alibaba Group | Alibaba Group | |||
| July 08, 2019 | December 06, 2019 | |||
| Trusted Execution Environment Provisioning (TEEP) Architecture | Trusted Execution Environment Provisioning (TEEP) Architecture | |||
| draft-ietf-teep-architecture-03 | draft-ietf-teep-architecture-04 | |||
| Abstract | Abstract | |||
| A Trusted Execution Environment (TEE) is designed to provide a | A Trusted Execution Environment (TEE) is an environment that enforces | |||
| hardware-isolation mechanism to separate a regular operating system | that only authorized code can execute with that environment, and that | |||
| from security-sensitive application components. | any data used by such code cannot be read or tampered with by any | |||
| code outside that environment. This architecture document motivates | ||||
| This architecture document motivates the design and standardization | the design and standardization of a protocol for managing the | |||
| of a protocol for managing the lifecycle of trusted applications | lifecycle of trusted applications running inside a TEE. | |||
| running inside a TEE. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 9, 2020. | This Internet-Draft will expire on June 8, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
| Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
| 10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
| skipping to change at page 2, line 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.2. Authentication . . . . . . . . . . . . . . . . . . . . . 9 | 3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.3. Internet of Things . . . . . . . . . . . . . . . . . . . 9 | 3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 8 | |||
| 4.4. Confidential Cloud Computing . . . . . . . . . . . . . . 9 | 4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.1. System Components . . . . . . . . . . . . . . . . . . . . 9 | 4.2. Different Renditions of TEEP Architecture . . . . . . . . 10 | |||
| 5.2. Different Renditions of TEEP Architecture . . . . . . . . 12 | 4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 12 | |||
| 5.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 14 | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 13 | |||
| 5.4. Client Apps, Trusted Apps, and Personalization Data . . . 15 | 4.5. Examples of Application Delivery Mechanisms in Existing | |||
| 5.5. Examples of Application Delivery Mechanisms in Existing | TEEs . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| TEEs . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 4.6. Entity Relations . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5.6. TEEP Architectural Support for Client App, TA, and | 5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 17 | |||
| Personalization Data Delivery . . . . . . . . . . . . . . 17 | 5.1. Trust Anchors in TEE . . . . . . . . . . . . . . . . . . 18 | |||
| 5.7. Entity Relations . . . . . . . . . . . . . . . . . . . . 17 | 5.2. Trust Anchors in TAM . . . . . . . . . . . . . . . . . . 18 | |||
| 5.8. Trust Anchors in TEE . . . . . . . . . . . . . . . . . . 20 | 5.3. Scalability . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 5.9. Trust Anchors in TAM . . . . . . . . . . . . . . . . . . 20 | 5.4. Message Security . . . . . . . . . . . . . . . . . . . . 19 | |||
| 5.10. Keys and Certificate Types . . . . . . . . . . . . . . . 21 | 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 5.11. Scalability . . . . . . . . . . . . . . . . . . . . . . . 23 | 6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 20 | |||
| 5.12. Message Security . . . . . . . . . . . . . . . . . . . . 23 | 6.2. TEEP Broker Implementation Consideration . . . . . . . . 20 | |||
| 5.13. Security Domain . . . . . . . . . . . . . . . . . . . . . 23 | 6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 20 | |||
| 5.14. A Sample Device Setup Flow . . . . . . . . . . . . . . . 23 | 6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 21 | |||
| 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 6.2.3. Number of TEEP Brokers . . . . . . . . . . . . . . . 21 | |||
| 6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 25 | 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6.2. TEEP Broker Implementation Consideration . . . . . . . . 25 | 7.1. Information Required in TEEP Claims . . . . . . . . . . . 23 | |||
| 6.2.1. TEEP Broker Distribution . . . . . . . . . . . . . . 26 | 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 24 | |||
| 6.2.2. Number of TEEP Brokers . . . . . . . . . . . . . . . 26 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | |||
| 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 26 | 9.1. TA Trust Check at TEE . . . . . . . . . . . . . . . . . . 24 | |||
| 7.1. Attestation Cryptographic Properties . . . . . . . . . . 28 | 9.2. One TA Multiple SP Case . . . . . . . . . . . . . . . . . 25 | |||
| 7.2. TEEP Attestation Structure . . . . . . . . . . . . . . . 29 | 9.3. Broker Trust Model . . . . . . . . . . . . . . . . . . . 25 | |||
| 7.3. TEEP Attestation Claims . . . . . . . . . . . . . . . . . 31 | 9.4. Data Protection at TAM and TEE . . . . . . . . . . . . . 25 | |||
| 7.4. TEEP Attestation Flow . . . . . . . . . . . . . . . . . . 31 | 9.5. Compromised CA . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 7.5. Attestation Key Example . . . . . . . . . . . . . . . . . 31 | 9.6. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 7.5.1. Attestation Hierarchy Establishment: Manufacture . . 32 | 9.7. Certificate Renewal . . . . . . . . . . . . . . . . . . . 26 | |||
| 7.5.2. Attestation Hierarchy Establishment: Device Boot . . 32 | 9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 26 | |||
| 7.5.3. Attestation Hierarchy Establishment: TAM . . . . . . 32 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 32 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 33 | 12. Informative References . . . . . . . . . . . . . . . . . . . 26 | |||
| 9.1. TA Trust Check at TEE . . . . . . . . . . . . . . . . . . 33 | Appendix A. History . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9.2. One TA Multiple SP Case . . . . . . . . . . . . . . . . . 33 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9.3. Broker Trust Model . . . . . . . . . . . . . . . . . . . 34 | ||||
| 9.4. Data Protection at TAM and TEE . . . . . . . . . . . . . 34 | ||||
| 9.5. Compromised CA . . . . . . . . . . . . . . . . . . . . . 34 | ||||
| 9.6. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 34 | ||||
| 9.7. Certificate Renewal . . . . . . . . . . . . . . . . . . . 34 | ||||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 35 | ||||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 35 | ||||
| Appendix A. History . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
| 1. Introduction | 1. Introduction | |||
| Applications executing in a device are exposed to many different | Applications executing in a device are exposed to many different | |||
| attacks intended to compromise the execution of the application, or | attacks intended to compromise the execution of the application, or | |||
| reveal the data upon which those applications are operating. These | reveal the data upon which those applications are operating. These | |||
| attacks increase with the number of other applications on the device, | attacks increase with the number of other applications on the device, | |||
| with such other applications coming from potentially untrustworthy | with such other applications coming from potentially untrustworthy | |||
| sources. The potential for attacks further increase with the | sources. The potential for attacks further increase with the | |||
| complexity of features and applications on devices, and the | complexity of features and applications on devices, and the | |||
| unintended interactions among those features and applications. The | unintended interactions among those features and applications. The | |||
| danger of attacks on a system increases as the sensitivity of the | danger of attacks on a system increases as the sensitivity of the | |||
| applications or data on the device increases. As an example, | applications or data on the device increases. As an example, | |||
| exposure of emails from a mail client is likely to be of concern to | exposure of emails from a mail client is likely to be of concern to | |||
| its owner, but a compromise of a banking application raises even | its owner, but a compromise of a banking application raises even | |||
| greater concerns. | greater concerns. | |||
| The Trusted Execution Environment (TEE) concept is designed to | The Trusted Execution Environment (TEE) concept is designed to | |||
| execute applications in a protected environment that separates | execute applications in a protected environment that enforces that | |||
| applications inside the TEE from the regular operating system and | only authorized code can execute with that environment, and that any | |||
| from other applications on the device. This separation reduces the | data used by such code cannot be read or tampered with by any code | |||
| possibility of a successful attack on application components and the | outside that environment, including a commodity operating system (if | |||
| data contained inside the TEE. Typically, application components are | present). | |||
| chosen to execute inside a TEE because those application components | ||||
| perform security sensitive operations or operate on sensitive data. | ||||
| An application component running inside a TEE is referred to as a | ||||
| Trusted Application (TA), while a normal application running in the | ||||
| regular operating system is referred to as an Untrusted Application | ||||
| (UA). | ||||
| The TEE uses hardware to enforce protections on the TA and its data, | This separation reduces the possibility of a successful attack on | |||
| but also presents a more limited set of services to applications | application components and the data contained inside the TEE. | |||
| inside the TEE than is normally available to UA's running in the | Typically, application components are chosen to execute inside a TEE | |||
| normal operating system. | because those application components perform security sensitive | |||
| operations or operate on sensitive data. An application component | ||||
| running inside a TEE is referred to as a Trusted Application (TA), | ||||
| while an application running outside any TEE is referred to as an | ||||
| Untrusted Application (UA). | ||||
| The TEE typically uses hardware to enforce protections on the TA and | ||||
| its data, but also presents a more limited set of services to | ||||
| applications inside the TEE than is normally available to Untrusted | ||||
| Applications. | ||||
| But not all TEEs are the same, and different vendors may have | But not all TEEs are the same, and different vendors may have | |||
| different implementations of TEEs with different security properties, | different implementations of TEEs with different security properties, | |||
| different features, and different control mechanisms to operate on | different features, and different control mechanisms to operate on | |||
| TAs. Some vendors may themselves market multiple different TEEs with | TAs. Some vendors may themselves market multiple different TEEs with | |||
| different properties attuned to different markets. A device vendor | different properties attuned to different markets. A device vendor | |||
| may integrate one or more TEEs into their devices depending on market | may integrate one or more TEEs into their devices depending on market | |||
| needs. | needs. | |||
| To simplify the life of developers and service providers interacting | To simplify the life of developers and service providers interacting | |||
| with TAs in a TEE, an interoperable protocol for managing TAs running | with TAs in a TEE, an interoperable protocol for managing TAs running | |||
| in different TEEs of various devices is needed. In this TEE | in different TEEs of various devices is needed. In this TEE | |||
| ecosystem, there often arises a need for an external trusted party to | ecosystem, there often arises a need for an external trusted party to | |||
| verify the identity, claims, and rights of Service Providers(SP), | verify the identity, claims, and rights of Service Providers (SP), | |||
| devices, and their TEEs. This trusted third party is the Trusted | devices, and their TEEs. This trusted third party is the Trusted | |||
| Application Manager (TAM). | Application Manager (TAM). | |||
| This protocol addresses the following problems: | The Trusted Execution Provisioning (TEEP) protocol addresses the | |||
| following problems: | ||||
| - A Service Provider (SP) intending to provide services through a TA | - A Service Provider (SP) intending to provide services through a TA | |||
| to users of a device needs to determine security-relevant | to users of a device needs to determine security-relevant | |||
| information of a device before provisioning their TA to the TEE | information of a device before provisioning their TA to the TEE | |||
| within the device. Examples include the verification of the | within the device. An example is the verification of the type of | |||
| device 'root of trust' and the type of TEE included in a device. | TEE included in a device. | |||
| - A TEE in a device needs to determine whether a Service Provider | - A TEE in a device needs to determine whether a Service Provider | |||
| (SP) that wants to manage a TA in the device is authorized to | (SP) that wants to manage a TA in the device is authorized to | |||
| manage TAs in the TEE, and what TAs the SP is permitted to manage. | manage TAs in the TEE, and what TAs the SP is permitted to manage. | |||
| - The parties involved in the protocol must be able to attest that a | - The parties involved in the protocol must be able to attest that a | |||
| TEE is genuine and capable of providing the security protections | TEE is genuine and capable of providing the security protections | |||
| required by a particular TA. | required by a particular TA. | |||
| - A Service Provider (SP) must be able to determine if a TA exists | - A Service Provider (SP) must be able to determine if a TA exists | |||
| skipping to change at page 5, line 31 ¶ | skipping to change at page 5, line 23 ¶ | |||
| has expired, or a payment by the user has not been completed or | has expired, or a payment by the user has not been completed or | |||
| has been rescinded. | has been rescinded. | |||
| - A Service Provider (SP) must be able to define the relationship | - A Service Provider (SP) must be able to define the relationship | |||
| between cooperating TAs under the SP's control, and specify | between cooperating TAs under the SP's control, and specify | |||
| whether the TAs can communicate, share data, and/or share key | whether the TAs can communicate, share data, and/or share key | |||
| material. | material. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in BCP | ||||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| The following terms are used: | The following terms are used: | |||
| - Client Application: An application running in a Rich Execution | - Untrusted Application: An application running in a Rich Execution | |||
| Environment, such as an Android, Windows, or iOS application. We | Environment, such as an Android, Windows, or iOS application. | |||
| sometimes refer to this as the 'Client App'. | ||||
| - Device: A physical piece of hardware that hosts a TEE along with a | - Trusted Application Manager (TAM): An entity that manages Trusted | |||
| Rich Execution Environment. A Device contains a default list of | Applications (TAs) running in different TEEs of various devices. | |||
| Trust Anchors that identify entities (e.g., TAMs) that are trusted | ||||
| by the Device. This list is normally set by the Device | - Device: A physical piece of hardware that hosts one or more TEEs, | |||
| Manufacturer, and may be governed by the Device's network carrier. | often along with a Rich Execution Environment. A Device contains | |||
| The list of Trust Anchors is normally modifiable by the Device's | a default list of Trust Anchors that identify entities (e.g., | |||
| owner or Device Administrator. However the Device manufacturer | TAMs) that are trusted by the Device. This list is normally set | |||
| and network carrier may restrict some modifications, for example, | by the Device Manufacturer, and may be governed by the Device's | |||
| by not allowing the manufacturer or carrier's Trust Anchor to be | network carrier. The list of Trust Anchors is normally modifiable | |||
| removed or disabled. | by the Device's owner or Device Administrator. However the Device | |||
| manufacturer and network carrier may restrict some modifications, | ||||
| for example, by not allowing the manufacturer or carrier's Trust | ||||
| Anchor to be removed or disabled. | ||||
| - Rich Execution Environment (REE): An environment that is provided | - Rich Execution Environment (REE): An environment that is provided | |||
| and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | |||
| potentially in conjunction with other supporting operating systems | potentially in conjunction with other supporting operating systems | |||
| and hypervisors; it is outside of the TEE. This environment and | and hypervisors; it is outside of any TEE. This environment and | |||
| applications running on it are considered un-trusted. | applications running on it are considered untrusted. | |||
| - Service Provider (SP): An entity that wishes to provide a service | - Service Provider (SP): An entity that wishes to provide a service | |||
| on Devices that requires the use of one or more Trusted | on Devices that requires the use of one or more Trusted | |||
| Applications. A Service Provider requires the help of a TAM in | Applications. A Service Provider requires the help of a TAM in | |||
| order to provision the Trusted Applications to remote devices. | order to provision the Trusted Applications to remote devices. | |||
| - Device User: A human being that uses a device. Many devices have | - Device User: A human being that uses a device. Many devices have | |||
| a single device user. Some devices have a primary device user | a single device user. Some devices have a primary device user | |||
| with other human beings as secondary device users (e.g., parent | with other human beings as secondary device users (e.g., parent | |||
| allowing children to use their tablet or laptop). Relates to | allowing children to use their tablet or laptop). Other devices | |||
| Device Owner and Device Administrator. | are not used by a human being and hence have no device user. | |||
| Relates to Device Owner and Device Administrator. | ||||
| - Device Owner: A device is always owned by someone. It is common | - Device Owner: A device is always owned by someone. In some cases, | |||
| for the (primary) device user to also own the device, making the | it is common for the (primary) device user to also own the device, | |||
| device user/owner also the device administrator. In enterprise | making the device user/owner also the device administrator. In | |||
| environments it is more common for the enterprise to own the | enterprise environments it is more common for the enterprise to | |||
| device, and device users have no or limited administration rights. | own the device, and any device user has no or limited | |||
| In this case, the enterprise appoints a device administrator that | administration rights. In this case, the enterprise appoints a | |||
| is not the device owner. | device administrator that is not the device owner. | |||
| - Device Administrator (DA): An entity that is responsible for | - Device Administrator (DA): An entity that is responsible for | |||
| administration of a Device, which could be the device owner. A | administration of a Device, which could be the device owner. A | |||
| Device Administrator has privileges on the Device to install and | Device Administrator has privileges on the Device to install and | |||
| remove applications and TAs, approve or reject Trust Anchors, and | remove applications and TAs, approve or reject Trust Anchors, and | |||
| approve or reject Service Providers, among possibly other | approve or reject Service Providers, among possibly other | |||
| privileges on the Device. A Device Administrator can manage the | privileges on the Device. A Device Administrator can manage the | |||
| list of allowed TAMs by modifying the list of Trust Anchors on the | list of allowed TAMs by modifying the list of Trust Anchors on the | |||
| Device. Although a Device Administrator may have privileges and | Device. Although a Device Administrator may have privileges and | |||
| Device-specific controls to locally administer a device, the | Device-specific controls to locally administer a device, the | |||
| Device Administrator may choose to remotely administrate a device | Device Administrator may choose to remotely administrate a device | |||
| through a TAM. | through a TAM. | |||
| - Trust Anchor: A public key in a device whose corresponding private | - Trust Anchor: As defined in [RFC6024] and | |||
| key is held by an entity implicitly trusted by the device. The | [I-D.ietf-suit-manifest], "A trust anchor represents an | |||
| Trust Anchor may be a certificate or it may be a raw public key | authoritative entity via a public key and associated data. The | |||
| along with additional data if necessary such as its public key | public key is used to verify digital signatures, and the | |||
| algorithm and parameters. The Trust Anchor is normally stored in | associated data is used to constrain the types of information for | |||
| a location that resists unauthorized modification, insertion, or | which the trust anchor is authoritative." The Trust Anchor may be | |||
| replacement. The digital fingerprint of a Trust Anchor may be | a certificate or it may be a raw public key along with additional | |||
| stored along with the Trust Anchor certificate or public key. A | data if necessary such as its public key algorithm and parameters. | |||
| device can use the fingerprint to uniquely identify a Trust | ||||
| Anchor. The Trust Anchor private key owner can sign certificates | - Trust Anchor Store: As defined in [RFC6024], "A trust anchor store | |||
| of other public keys, which conveys trust about those keys to the | is a set of one or more trust anchors stored in a device. A | |||
| device. A certificate signed by the Trust Anchor communicates | device may have more than one trust anchor store, each of which | |||
| that the private key holder of the signed certificate is trusted | may be used by one or more applications." As noted in | |||
| by the Trust Anchor holder, and can therefore be trusted by the | [I-D.ietf-suit-manifest], a trust anchor store must resist | |||
| device. Trust Anchors in a device may be updated by an authorized | modification against unauthorized insertion, deletion, and | |||
| party when a Trust Anchor should be deprecated or a new Trust | modification. | |||
| Anchor should be added. | ||||
| - Trusted Application (TA): An application component that runs in a | - Trusted Application (TA): An application component that runs in a | |||
| TEE. | TEE. | |||
| - Trusted Execution Environment (TEE): An execution environment that | - Trusted Execution Environment (TEE): An execution environment that | |||
| runs alongside of, but is isolated from, an REE. A TEE has | enforces that only authorized code can execute within the TEE, and | |||
| security capabilities and meets certain security-related | data used by that code cannot be read or tampered with by code | |||
| requirements. It protects TEE assets from general software | outside the TEE. A TEE also generally has a device unique | |||
| attacks, defines rigid safeguards as to data and functions that a | credential that cannot be cloned. There are multiple technologies | |||
| program can access, and resists a set of defined threats. It | that can be used to implement a TEE, and the level of security | |||
| should have at least the following three properties: | achieved varies accordingly. In addition, TEEs typically use an | |||
| isolation mechanism between Trusted Applications to ensure that | ||||
| (a) A device unique credential that cannot be cloned; | one TA cannot read, modify or delete the data and code of another | |||
| TA. | ||||
| (b) Assurance that only authorized code can run in the TEE; | ||||
| (c) Memory that cannot be read by code outside the TEE. | ||||
| There are multiple technologies that can be used to implement a | ||||
| TEE, and the level of security achieved varies accordingly. | ||||
| - Root-of-Trust (RoT): A hardware or software component in a device | ||||
| that is inherently trusted to perform a certain security-critical | ||||
| function. A RoT should be secure by design, small, and protected | ||||
| by hardware against modification or interference. Examples of | ||||
| RoTs include software/firmware measurement and verification using | ||||
| a Trust Anchor (RoT for Verification), provide signed assertions | ||||
| using a protected attestation key (RoT for Reporting), or protect | ||||
| the storage and/or use of cryptographic keys (RoT for Storage). | ||||
| Other RoTs are possible, including RoT for Integrity, and RoT for | ||||
| Measurement. Reference: NIST SP800-164 (Draft). | ||||
| - Trusted Firmware (TFW): A firmware in a device that can be | ||||
| verified with a Trust Anchor by RoT for Verification. | ||||
| - Bootloader key: This symmetric key is protected by | ||||
| electronic fuse (eFUSE) technology. In this context it is used to | ||||
| decrypt a | ||||
| TFW private key, which belongs to a device-unique private/public | ||||
| key pair. Not every device is equipped with a bootloader key. | ||||
| This document uses the following abbreviations: | ||||
| - CA: Certificate Authority | ||||
| - REE: Rich Execution Environment | ||||
| - RoT: Root of Trust | ||||
| - SD: Security Domain | ||||
| - SP: Service Provider | ||||
| - TA: Trusted Application | ||||
| - TAM: Trusted Application Manager | ||||
| - TEE: Trusted Execution Environment | ||||
| - TFW: Trusted Firmware | ||||
| 3. Assumptions | ||||
| This specification assumes that an applicable device is equipped with | ||||
| one or more TEEs and each TEE is pre-provisioned with a device-unique | ||||
| public/private key pair, which is securely stored. | ||||
| A TEE uses an isolation mechanism between Trusted Applications to | ||||
| ensure that one TA cannot read, modify or delete the data and code of | ||||
| another TA. | ||||
| 4. Use Cases | 3. Use Cases | |||
| 4.1. Payment | 3.1. Payment | |||
| A payment application in a mobile device requires high security and | A payment application in a mobile device requires high security and | |||
| trust about the hosting device. Payments initiated from a mobile | trust about the hosting device. Payments initiated from a mobile | |||
| device can use a Trusted Application to provide strong identification | device can use a Trusted Application to provide strong identification | |||
| and proof of transaction. | and proof of transaction. | |||
| For a mobile payment application, some biometric identification | For a mobile payment application, some biometric identification | |||
| information could also be stored in a TEE. The mobile payment | information could also be stored in a TEE. The mobile payment | |||
| application can use such information for authentication. | application can use such information for authentication. | |||
| A secure user interface (UI) may be used in a mobile device to | A secure user interface (UI) may be used in a mobile device to | |||
| prevent malicious software from stealing sensitive user input data. | prevent malicious software from stealing sensitive user input data. | |||
| Such an application implementation often relies on a TEE for user | Such an application implementation often relies on a TEE for user | |||
| input protection. | input protection. | |||
| 4.2. Authentication | 3.2. Authentication | |||
| For better security of authentication, a device may store its | For better security of authentication, a device may store its | |||
| sensitive authentication keys inside a TEE, providing hardware- | sensitive authentication keys inside a TEE, providing TEE-protected | |||
| protected security key strength and trusted code execution. | security key strength and trusted code execution. | |||
| 4.3. Internet of Things | 3.3. Internet of Things | |||
| The Internet of Things (IoT) has been posing threats to networks and | The Internet of Things (IoT) has been posing threats to networks and | |||
| national infrastructures because of existing weak security in | national infrastructures because of existing weak security in | |||
| devices. It is very desirable that IoT devices can prevent malware | devices. It is very desirable that IoT devices can prevent malware | |||
| from manipulating actuators (e.g., unlocking a door), or stealing or | from manipulating actuators (e.g., unlocking a door), or stealing or | |||
| modifying sensitive data such as authentication credentials in the | modifying sensitive data such as authentication credentials in the | |||
| device. A TEE can be the best way to implement such IoT security | device. A TEE can be the best way to implement such IoT security | |||
| functions. | functions. | |||
| TEEs could be used to store variety of sensitive data for IoT | TEEs could be used to store variety of sensitive data for IoT | |||
| devices. For example, a TEE could be used in smart door locks to | devices. For example, a TEE could be used in smart door locks to | |||
| store a user's biometric information for identification, and for | store a user's biometric information for identification, and for | |||
| protecting access the locking mechanism. | protecting access the locking mechanism. | |||
| 4.4. Confidential Cloud Computing | 3.4. Confidential Cloud Computing | |||
| A tenant can store sensitive data in a TEE in a cloud computing | A tenant can store sensitive data in a TEE in a cloud computing | |||
| server such that only the tenant can access the data, preventing the | server such that only the tenant can access the data, preventing the | |||
| cloud hosting provider from accessing the data. A tenant can run TAs | cloud hosting provider from accessing the data. A tenant can run TAs | |||
| inside a server TEE for secure operation and enhanced data security. | inside a server TEE for secure operation and enhanced data security. | |||
| This provides benefits not only to tenants with better data security | This provides benefits not only to tenants with better data security | |||
| but also to cloud hosting provider for reduced liability and | but also to cloud hosting provider for reduced liability and | |||
| increased cloud adoption. | increased cloud adoption. | |||
| 5. Architecture | 4. Architecture | |||
| 5.1. System Components | 4.1. System Components | |||
| The following are the main components in the system. Full | The following are the main components in the system. Full | |||
| descriptions of components not previously defined are provided below. | descriptions of components not previously defined are provided below. | |||
| Interactions of all components are further explained in the following | Interactions of all components are further explained in the following | |||
| paragraphs. | paragraphs. | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| | Device | | | Device | | |||
| | +--------+ | Service Provider | | +--------+ | Service Provider | |||
| | +-------------+ | |----------+ | | | +-------------+ | |----------+ | | |||
| skipping to change at page 10, line 33 ¶ | skipping to change at page 9, line 7 ¶ | |||
| | +-------+ | | | +-------+ | | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| Figure 1: Notional Architecture of TEEP | Figure 1: Notional Architecture of TEEP | |||
| - Service Providers (SP) and Device Administrators (DA) utilize the | - Service Providers (SP) and Device Administrators (DA) utilize the | |||
| services of a TAM to manage TAs on Devices. SPs do not directly | services of a TAM to manage TAs on Devices. SPs do not directly | |||
| interact with devices. DAs may elect to use a TAM for remote | interact with devices. DAs may elect to use a TAM for remote | |||
| administration of TAs instead of managing each device directly. | administration of TAs instead of managing each device directly. | |||
| - TAM: A TAM is responsible for performing lifecycle management | - Trusted Application Manager (TAM): A TAM is responsible for | |||
| activity on TA's on behalf of Service Providers and Device | performing lifecycle management activity on TA's on behalf of | |||
| Administrators. This includes creation and deletion of TA's, and | Service Providers and Device Administrators. This includes | |||
| may include, for example, over-the-air updates to keep an SP's TAs | creation and deletion of TA's, and may include, for example, over- | |||
| up-to-date and clean up when a version should be removed. TAMs | the-air updates to keep an SP's TAs up-to-date and clean up when a | |||
| may provide services that make it easier for SPs or DAs to use the | version should be removed. TAMs may provide services that make it | |||
| TAM's service to manage multiple devices, although that is not | easier for SPs or DAs to use the TAM's service to manage multiple | |||
| required of a TAM. | devices, although that is not required of a TAM. | |||
| The TAM performs its management of TA's through an interaction | The TAM performs its management of TA's through an interaction | |||
| with a Device's TEEP Broker. As shown in #notionalarch, the TAM | with a Device's TEEP Broker. As shown in Figure 1, the TAM cannot | |||
| cannot directly contact a Device, but must wait for a the TEEP | directly contact a Device, but must wait for the TEEP Broker to | |||
| Broker or a Client Application to contact the TAM requesting a | contact the TAM requesting a particular service. This | |||
| particular service. This architecture is intentional in order to | architecture is intentional in order to accommodate network and | |||
| accommodate network and application firewalls that normally | application firewalls that normally protect user and enterprise | |||
| protect user and enterprise devices from arbitrary connections | devices from arbitrary connections from external network entities. | |||
| from external network entities. | ||||
| A TAM may be publicly available for use by many SPs, or a TAM may | A TAM may be publicly available for use by many SPs, or a TAM may | |||
| be private, and accessible by only one or a limited number of SPs. | be private, and accessible by only one or a limited number of SPs. | |||
| It is expected that manufacturers and carriers will run their own | It is expected that manufacturers and carriers will run their own | |||
| private TAM. Another example of a private TAM is a TAM running as | private TAM. Another example of a private TAM is a TAM running as | |||
| a Software-as-a-Service (SaaS) within an SP. | a Software-as-a-Service (SaaS) within an SP. | |||
| A SP or Device Administrator chooses a particular TAM based on | A SP or Device Administrator chooses a particular TAM based on | |||
| whether the TAM is trusted by a Device or set of Devices. The TAM | whether the TAM is trusted by a Device or set of Devices. The TAM | |||
| is trusted by a device if the TAM's public key is an authorized | is trusted by a device if the TAM's public key is an authorized | |||
| Trust Anchor in the Device. A SP or Device Administrator may run | Trust Anchor in the Device. A SP or Device Administrator may run | |||
| their own TAM, however the Devices they wish to manage must | their own TAM, however the Devices they wish to manage must | |||
| include this TAM's pubic key in the Trust Anchor list. | include this TAM's pubic key in the Trust Anchor list. | |||
| skipping to change at page 11, line 32 ¶ | skipping to change at page 10, line 5 ¶ | |||
| list on all their devices, overcoming this limitation. | list on all their devices, overcoming this limitation. | |||
| Any entity is free to operate a TAM. For a TAM to be successful, | Any entity is free to operate a TAM. For a TAM to be successful, | |||
| it must have its public key or certificate installed in Devices | it must have its public key or certificate installed in Devices | |||
| Trust Anchor list. A TAM may set up a relationship with device | Trust Anchor list. A TAM may set up a relationship with device | |||
| manufacturers or carriers to have them install the TAM's keys in | manufacturers or carriers to have them install the TAM's keys in | |||
| their device's Trust Anchor list. Alternatively, a TAM may | their device's Trust Anchor list. Alternatively, a TAM may | |||
| publish its certificate and allow Device Administrators to install | publish its certificate and allow Device Administrators to install | |||
| the TAM's certificate in their devices as an after-market-action. | the TAM's certificate in their devices as an after-market-action. | |||
| - TEEP Broker: The TEEP Broker is an application running in a Rich | - TEEP Broker: The TEEP Broker is an application component running | |||
| Execution Environment (REE) that enables the message protocol | in a Rich Execution Environment (REE) that enables the message | |||
| exchange between a TAM and a TEE in a device. The TEEP Broker | protocol exchange between a TAM and a TEE in a device. The TEEP | |||
| does not process messages on behalf of a TEE, but merely is | Broker does not process messages on behalf of a TEE, but merely is | |||
| responsible for relaying messages from the TAM to the TEE, and for | responsible for relaying messages from the TAM to the TEE, and for | |||
| returning the TEE's responses to the TAM. | returning the TEE's responses to the TAM. | |||
| A Client Application is expected to communicate with a TAM to | ||||
| request TAs that it needs to use. The Client Application needs to | ||||
| pass the messages from the TAM to TEEs in the device. This calls | ||||
| for a component in the REE that Client Applications can use to | ||||
| pass messages to TEEs. The TEEP Broker is thus an application in | ||||
| the REE or software library that can relay messages from a Client | ||||
| Application to a TEE in the device. A device usually comes with | ||||
| only one active TEE. A TEE may provide such a Broker to the | ||||
| device manufacturer to be bundled in devices. Such a TEE must | ||||
| also include a Broker counterpart, namely, a TEEP Agent inside the | ||||
| TEE, to parse TAM messages sent through the Broker. A TEEP Broker | ||||
| is generally acting as a dummy relaying box with just the TEE | ||||
| interacting capability; it doesn't need and shouldn't parse | ||||
| protocol messages. | ||||
| - TEEP Agent: the TEEP Agent is a processing module running inside a | - TEEP Agent: the TEEP Agent is a processing module running inside a | |||
| TEE that receives TAM requests that are relayed via a TEEP Broker | TEE that receives TAM requests that are relayed via a TEEP Broker | |||
| that runs in an REE. A TEEP Agent in the TEE may parse requests | that runs in an REE. A TEEP Agent in the TEE may parse requests | |||
| or forward requests to other processing modules in a TEE, which is | or forward requests to other processing modules in a TEE, which is | |||
| up to a TEE provider's implementation. A response message | up to a TEE provider's implementation. A response message | |||
| corresponding to a TAM request is sent by a TEEP Agent back to a | corresponding to a TAM request is sent by a TEEP Agent back to a | |||
| TEEP Broker. | TEEP Broker. | |||
| - Certification Authority (CA): Certificate-based credentials used | - Certification Authority (CA): Certificate-based credentials used | |||
| for authenticating a device, a TAM and an SP. A device embeds a | for authenticating a device, a TAM and an SP. A device embeds a | |||
| list of root certificates (Trust Anchors), from trusted CAs that a | list of root certificates (Trust Anchors), from trusted CAs that a | |||
| TAM will be validated against. A TAM will remotely attest a | TAM will be validated against. A TAM will remotely attest a | |||
| device by checking whether a device comes with a certificate from | device by checking whether a device comes with a certificate from | |||
| a CA that the TAM trusts. The CAs do not need to be the same; | a CA that the TAM trusts. The CAs do not need to be the same; | |||
| different CAs can be chosen by each TAM, and different device CAs | different CAs can be chosen by each TAM, and different device CAs | |||
| can be used by different device manufacturers. | can be used by different device manufacturers. | |||
| 5.2. Different Renditions of TEEP Architecture | 4.2. Different Renditions of TEEP Architecture | |||
| There is nothing prohibiting a device from implementing multiple | There is nothing prohibiting a device from implementing multiple | |||
| TEEs. In addition, some TEEs (for example, SGX) present themselves | TEEs. In addition, some TEEs (for example, SGX) present themselves | |||
| as separate containers within memory without a controlling manager | as separate containers within memory without a controlling manager | |||
| within the TEE. In these cases, the rich operating system hosts | within the TEE. In these cases, the Rich Execution Environment hosts | |||
| multiple TEEP brokers, where each broker manages a particular TEE or | multiple TEEP brokers, where each Broker manages a particular TEE or | |||
| set of TEEs. Enumeration and access to the appropriate broker is up | set of TEEs. Enumeration and access to the appropriate TEEP Broker | |||
| to the rich OS and the applications. Verification that the correct | is up to the Rich Execution Environment and the Untrusted | |||
| TA has been reached then becomes a matter of properly verifying TA | Applications. Verification that the correct TA has been reached then | |||
| attestations, which are unforgeable. The multiple TEE approach is | becomes a matter of properly verifying TA attestations, which are | |||
| shown in the diagram below. For brevity, TEEP Broker 2 is shown | unforgeable. The multiple TEE approach is shown in the diagram | |||
| interacting with only one TAM and UA, but no such limitation is | below. For brevity, TEEP Broker 2 is shown interacting with only one | |||
| intended to be implied in the architecture. | TAM and UA, but no such limitation is intended to be implied in the | |||
| architecture. | ||||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| | Device | | | Device | | |||
| | +--------+ | Service Provider | | +--------+ | Service Provider | |||
| | | |----------+ | | | | |----------+ | | |||
| | +-------------+ | TEEP |---------+| | | | +-------------+ | TEEP |---------+| | | |||
| | | TEE-1 | +---| Broker | | || +--------+ | | | | TEE-1 | +---| Broker | | || +--------+ | | |||
| | | | | | 1 |<---+ | |+-->| |<-+ | | | | | | 1 |<---+ | |+-->| |<-+ | |||
| | | +-------+ | | | | | | | | | | | | +-------+ | | | | | | | | | | |||
| | | | TEEP | | | | | | | | | | | | | | TEEP | | | | | | | | | | | |||
| skipping to change at page 13, line 31 ¶ | skipping to change at page 11, line 31 ¶ | |||
| | | | +---+ +---+ | | | | | | TAM-2 | | | | | | +---+ +---+ | | | | | | TAM-2 | | | |||
| | | | | | +-------+ | | | +--------+ | | | | | | | +-------+ | | | +--------+ | | |||
| | | +-------------+ +-----| App-2 |--+ | | ^ | | | | +-------------+ +-----| App-2 |--+ | | ^ | | |||
| | | +-------+ | | | | Device | | | +-------+ | | | | Device | |||
| | +--------------------| App-1 | | | | | Administrator | | +--------------------| App-1 | | | | | Administrator | |||
| | +------| | | | | | | | +------| | | | | | | |||
| | +-----------|-+ | |---+ | | | | | +-----------|-+ | |---+ | | | | |||
| | | TEE-2 | | | |--------+ | | | | | TEE-2 | | | |--------+ | | | |||
| | | +------+ | | | |------+ | | | | | +------+ | | | |------+ | | | |||
| | | | TEEP | | | +-------+ | | | | | | | TEEP | | | +-------+ | | | | |||
| | | | Agent|<-----+ | | | | | | | Agent|<-----+ | | | | |||
| | | | 2 | | | | | | | | | | | 2 | | | | | | | | |||
| | | +------+ | | | | | | | | | +------+ | | | | | | | |||
| | | | | | | | | | | | | | | | | | | |||
| | | +---+ | | | | | | | | | +---+ | | | | | | | |||
| | | |TA3|<----+ | | +----------+ | | | | | | |TA3|<----+ | | +----------+ | | | | |||
| | | | | | | | TEEP |<--+ | | | | | | | | | | TEEP |<--+ | | | |||
| | | +---+ | +--| Broker |----------------+ | | | +---+ | +--| Broker |----------------+ | |||
| | | | | 2 | | | | | | | 2 | | | |||
| | +-------------+ +----------+ | | | +-------------+ +----------+ | | |||
| | | | | | | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| Figure 2: Notional Architecture of TEEP wtih multiple TEEs | Figure 2: Notional Architecture of TEEP with multiple TEEs | |||
| In the diagram above, TEEP Broker 1 controls interactions with the | In the diagram above, TEEP Broker 1 controls interactions with the | |||
| TA's in TEE-1, and TEEP Broker 2 controls interactions with the TA's | TA's in TEE-1, and TEEP Broker 2 controls interactions with the TA's | |||
| in TEE-2. This presents some challenges for a TAM in completely | in TEE-2. This presents some challenges for a TAM in completely | |||
| managing the device, since a TAM may not interact with all the TEEP | managing the device, since a TAM may not interact with all the TEEP | |||
| Brokers on a particular platform. In addition, since TEE's may be | Brokers on a particular platform. In addition, since TEE's may be | |||
| physically separated, with wholly different resources, there may be | physically separated, with wholly different resources, there may be | |||
| no need for TEEP Brokers to share information on installed TAs or | no need for TEEP Brokers to share information on installed TAs or | |||
| resource usage. However, the architecture guarantees that the TAM | resource usage. However, the architecture guarantees that the TAM | |||
| will receive all the relevant information from the TEEP Broker to | will receive all the relevant information from the TEEP Broker to | |||
| which it communicates. | which it communicates. | |||
| 5.3. Multiple TAMs and Relationship to TAs | 4.3. Multiple TAMs and Relationship to TAs | |||
| As shown in Figure 2, the TEEP Broker provides connections from the | As shown in Figure 2, the TEEP Broker provides connections from the | |||
| TEE and the Client App to one or more TAMs. The selection of which | TEE and the Untrusted Application to one or more TAMs. The selection | |||
| TAM to communicate with is dependent on information from the Client | of which TAM to communicate with is dependent on information from the | |||
| App and is directly related to the TA. | Untrusted Application and is directly related to the TA. | |||
| When a SP offers a service which requires a TA, the SP associates | When a SP offers a service which requires a TA, the SP associates | |||
| that service with a specific TA. The TA itself is digitally signed, | that service with a specific TA. The TA itself is digitally signed, | |||
| protecting its integrity, but the signature also links the TA back to | protecting its integrity, but the signature also links the TA back to | |||
| the signer. The signer is usually the SP, but in some cases may be | the signer. The signer is usually the SP, but in some cases may be | |||
| another party that the SP trusts. The SP selects one or more TAMs | another party that the SP trusts. The SP selects one or more TAMs | |||
| through which to offer their service, and communicates the | through which to offer their service, and communicates the | |||
| information of the service and the specific client apps and TAs to | information of the service and the specific Untrusted Applications | |||
| the TAM. | and TAs to the TAM. | |||
| The SP chooses TAMs based upon the markets into which the TAM can | The SP chooses TAMs based upon the markets into which the TAM can | |||
| provide access. There may be TAMs that provide services to specific | provide access. There may be TAMs that provide services to specific | |||
| types of mobile devices, or mobile device operating systems, or | types of mobile devices, or mobile device operating systems, or | |||
| specific geographical regions or network carriers. A SP may be | specific geographical regions or network carriers. A SP may be | |||
| motivated to utilize multiple TAMs for its service in order to | motivated to utilize multiple TAMs for its service in order to | |||
| maximize market penetration and availability on multiple types of | maximize market penetration and availability on multiple types of | |||
| devices. This likely means that the same service will be available | devices. This likely means that the same service will be available | |||
| through multiple TAMs. | through multiple TAMs. | |||
| When the SP publishes the Client App to an app store or other app | When the SP publishes the Untrusted Application to an app store or | |||
| repositories, the SP binds the Client App with a manifest that | other app repositories, the SP binds the Untrusted Application with a | |||
| identifies what TAMs can be contacted for the TA. In some | manifest that identifies what TAMs can be contacted for the TA. In | |||
| situations, an SP may use only a single TAM - this is likely the case | some situations, an SP may use only a single TAM - this is likely the | |||
| for enterprise applications or SPs serving a closed community. For | case for enterprise applications or SPs serving a closed community. | |||
| broad public apps, there will likely be multiple TAMs in the manifest | For broad public apps, there will likely be multiple TAMs in the | |||
| - one servicing one brand of mobile device and another servicing a | manifest - one servicing one brand of mobile device and another | |||
| different manufacturer, etc. Because different devices and different | servicing a different manufacturer, etc. Because different devices | |||
| manufacturers trust different TAMs, the manifest will include | and different manufacturers trust different TAMs, the manifest will | |||
| different TAMs that support this SP's client app and TA. Multiple | include different TAMs that support this SP's Untrusted Application | |||
| TAMs allow the SP to provide thier service and this app (and TA) to | and TA. Multiple TAMs allow the SP to provide their service and this | |||
| multiple different devices. | app (and TA) to multiple different devices. | |||
| When the TEEP Broker receives a request to contact the TAM for a | When a TEEP Broker receives a request from an Untrusted Application | |||
| Client App in order to install a TA, a list of TAMs may be provided. | to install a TA, a list of TAM URIs may be provided for that TA, and | |||
| The TEEP Broker selects a single TAM that is consistent with the list | the request is passed to the TEEP Agent. If the TEEP Agent decides | |||
| of trusted TAMs (trust anchors) provisioned on the device. For any | that the TA needs to be installed, the TEEP Agent selects a single | |||
| client app, there should be only a single TAM for the TEEP Broker to | TAM URI that is consistent with the list of trusted TAMs provisioned | |||
| contact. This is also the case when a Client App uses multiple TAs, | on the device invokes the HTTP transport for TEEP to connect to the | |||
| or when one TA depends on anther TA in a software dependency (see | TAM URI and begins a TEEP protocol exchange. When the TEEP Agent | |||
| section TBD). The reason is that the SP should provide each TAM that | subsequently receives the TA to install and the TA's manifest | |||
| it places in the Client App's manifest all the TAs that the app | indicates dependencies on any other trusted components, each | |||
| requires. There is no benefit to going to multiple different TAMs, | dependency can include a list of TAM URIs for the relevant | |||
| and there is no need for a special TAM to be contacted for a specific | dependency. If such dependencies exist that are prerequisites to | |||
| TA. | install the TA, then the TEEP Agent recursively follows the same | |||
| procedure for each dependency that needs to be installed or updated, | ||||
| including selecting a TAM URI that is consistent with the list of | ||||
| trusted TAMs provisioned on the device, and beginning a TEEP | ||||
| exchange. If multiple TAM URIs are considered trusted, only one | ||||
| needs to be contacted and they can be attempted in some order until | ||||
| one responds. | ||||
| [Note: This should always be the case. When a particular device or | Separate from the Untrusted Application's manifest, this framework | |||
| TEE supports only a special proprietary attestation mechanism, then a | relies on the use of the manifest format in [I-D.ietf-suit-manifest] | |||
| specific TAM will be needed that supports that attestation scheme. | for expressing how to install the TA as well as dependencies on other | |||
| The TAM should also support standard atttestation signatures as well. | TEE components and versions. That is, dependencies from TAs on other | |||
| It is highly unlikely that a set of TAs would use different | TEE components can be expressed in a SUIT manifest, including | |||
| proprietary attestation mechanisms since a TEE is likley to support | dependencies on any other TAs, or trusted OS code (if any), or | |||
| only one such proprietary scheme.] | trusted firmware. Installation steps can also be expressed in a SUIT | |||
| manifest. | ||||
| [Note: This situation gets more complex in situations where a Client | For example, TEE's compliant with Global Platform may have a notion | |||
| App expects another application or a device to already have a | of a "security domain" (which is a grouping of one or more TAs | |||
| specific TA installed. This situation does not occur with SGX, but | installed on a device, that can share information within such a | |||
| could occur in situations where the secure world maintains an trusted | group) that must be created and into which one or more TAs can then | |||
| operating system and runs an entire trusted system with multiple TAs | be installed. It is thus up to the SUIT manifest to express a | |||
| running. This requires more discussion.] | dependency on having such a security domain existing or being created | |||
| first, as appropriate. | ||||
| 5.4. Client Apps, Trusted Apps, and Personalization Data | Updating a TA may cause compatibility issues with any Untrusted | |||
| Applications or other components that depend on the updated TA, just | ||||
| like updating the OS or a shared library could impact an Untrusted | ||||
| Application. Thus, an implementation needs to take into account such | ||||
| issues. | ||||
| 4.4. Untrusted Apps, Trusted Apps, and Personalization Data | ||||
| In TEEP, there is an explicit relationship and dependence between the | In TEEP, there is an explicit relationship and dependence between the | |||
| client app in the REE and one or more TAs in the TEE, as shown in | Untrusted Application in the REE and one or more TAs in the TEE, as | |||
| Figure 2. From the perspective of a device user, a client app that | shown in Figure 2. For most purposes, an Untrusted Application that | |||
| uses one or more TA's in a TEE appears no different from any other | uses one or more TA's in a TEE appears no different from any other | |||
| untrusted application in the REE. However, the way the client app | Untrusted Application in the REE. However, the way the Untrusted | |||
| and its corresponding TA's are packaged, delivered, and installed on | Application and its corresponding TA's are packaged, delivered, and | |||
| the device can vary. The variations depend on whether the client app | installed on the device can vary. The variations depend on whether | |||
| and TA are bundled together or are provided separately, and this has | the Untrusted Application and TA are bundled together or are provided | |||
| implications to the management of the TAs in the TEE. In addition to | separately, and this has implications to the management of the TAs in | |||
| the client app and TA, the TA and/or TEE may require some additional | the TEE. In addition to the Untrusted Application and TA, the TA | |||
| data to personalize the TA to the service provider or the device | and/or TEE may require some additional data to personalize the TA to | |||
| user. This personalization data is dependent on the TEE, the TA and | the service provider or the device or a user. This personalization | |||
| the SP; an example of personalization data might be username and | data is dependent on the TEE, the TA and the SP; an example of | |||
| password of the device user's account with the SP, or a secret | personalization data might be username and password of an account | |||
| symmetric key used to by the TA to communicate with the SP. The | with the SP, or a secret symmetric key used by the TA to communicate | |||
| personalization data must be encrypted to preserve the | with the SP. The personalization data must be encrypted to preserve | |||
| confidentiality of potentially sensitive data contained within it. | the confidentiality of potentially sensitive data contained within | |||
| Other than this requirement to support confidentiality, TEEP place no | it. Other than this requirement to support confidentiality, TEEP | |||
| limitations or requirements on the personalization data. | place no limitations or requirements on the personalization data. | |||
| There are three possible cases for bundling of the Client App, TA, | There are three possible cases for bundling of the Untrusted | |||
| and personalization data: | Application, TA, and personalization data: | |||
| 1. The Client App, TA, and personalization data are all bundled | 1. The Untrusted Application, TA, and personalization data are all | |||
| together in a single package by the SP and provided to the TEEP | bundled together in a single package by the SP and provided to | |||
| Broker through the TAM. | the TEEP Broker through the TAM. | |||
| 2. The Client App and the TA are bundled together in a single | 2. The Untrusted Application and the TA are bundled together in a | |||
| binary, which the TAM or a publicly accessible app store | single package, which a TAM or a publicly accessible app store | |||
| maintains in repository, and the personalization data is | maintains, and the personalization data is separately provided by | |||
| separately provided by the SP. In this case, the personalization | the SP's TAM. | |||
| data is collected by the TAM and included in the InstallTA | ||||
| message to the TEEP Broker. | ||||
| 3. All components are independent. The device user installs the | 3. All components are independent. The Untrusted Application is | |||
| Client App through some independent or device-specific mechanism, | installed through some independent or device-specific mechanism, | |||
| and the TAM provides the TA and personalization data from the SP. | and the TAM provides the TA and personalization data from the SP. | |||
| Delivery of the TA and personalization data may be combined or | Delivery of the TA and personalization data may be combined or | |||
| separate. | separate. | |||
| 5.5. Examples of Application Delivery Mechanisms in Existing TEEs | The TEEP protocol treats the TA, any dependencies the TA has, and | |||
| personalization data as separate components with separate | ||||
| installation steps that are expressed in SUIT manifests, and a SUIT | ||||
| manifest might contain or reference multiple binaries (see {{I- | ||||
| D.ietf-suit-manifest} for more details). The TEEP Agent is | ||||
| responsible for handling any installation steps that need to be | ||||
| performed inside the TEE, such as decryption of private TA bianries | ||||
| or personalization data. | ||||
| 4.5. Examples of Application Delivery Mechanisms in Existing TEEs | ||||
| In order to better understand these cases, it is helpful to review | In order to better understand these cases, it is helpful to review | |||
| actual implementations of TEEs and their application delivery | actual implementations of TEEs and their application delivery | |||
| mechanisms. | mechanisms. | |||
| In Intel Software Guard Extensions (SGX), the Client App and TA are | In Intel Software Guard Extensions (SGX), the Untrusted Application | |||
| typically bound into the same binary (Case 2). The TA is compiled | and TA are typically bundled into the same package (Case 2). The TA | |||
| into the Client App binary using SGX tools, and exists in the binary | exists in the package as a shared library (.so or .dll). The | |||
| as a shared library (.so or .dll). The Client App loads the TA into | Untrusted Application loads the TA into an SGX enclave when the | |||
| an SGX enclave when the client needs the TA. This organization makes | Untrusted Application needs the TA. This organization makes it easy | |||
| it easy to maintain compatibility between the Client App and the TA, | to maintain compatibility between the Untrusted Application and the | |||
| since they are updated together. It is entirely possible to create a | TA, since they are updated together. It is entirely possible to | |||
| Client App that loads an external TA into an SGX enclave and use that | create an Untrusted Application that loads an external TA into an SGX | |||
| TA (Case 3). In this case, the Client App would require a reference | enclave and use that TA (Case 3). In this case, the Untrusted | |||
| to an external file or download such a file dynamically, place the | Application would require a reference to an external file or download | |||
| contents of the file into memory, and load that as a TA. Obviously, | such a file dynamically, place the contents of the file into memory, | |||
| such file or downloaded content must be properly formatted and signed | and load that as a TA. Obviously, such file or downloaded content | |||
| for it to be accepted by the SGX TEE. In SGX, for Case 2 and Case 3, | must be properly formatted and signed for it to be accepted by the | |||
| the personalization data is normally loaded into the SGX enclave (the | SGX TEE. In SGX, for Case 2 and Case 3, the personalization data is | |||
| TA) after the TA has started. Although Case 1 is possible with SGX, | normally loaded into the SGX enclave (the TA) after the TA has | |||
| there are no instances of this known to be in use at this time, since | started. Although Case 1 is possible with SGX, there are no | |||
| such a construction would required a special installation program and | instances of this known to be in use at this time, since such a | |||
| SGX TA to recieve the encrypted binary, decrypt it, separate it into | construction would require a special installation program and SGX TA | |||
| the three different elements, and then install all three. This | to receive the encrypted binary, decrypt it, separate it into the | |||
| installation is complex, because the Client App decrypted inside the | three different elements, and then install all three. This | |||
| TEE must be passed out of the TEE to an installer in the REE which | installation is complex, because the Untrusted Application decrypted | |||
| would install the Client App; this assumes that the Client App binary | inside the TEE must be passed out of the TEE to an installer in the | |||
| includes the TA code also, otherwise there is a significant problem | REE which would install the Untrusted Application; this assumes that | |||
| in getting the SGX encalve code (the TA) from the TEE, through the | the Untrusted Application package includes the TA code also, since | |||
| installer and into the Client App in a trusted fashion. Finally, the | otherwise there is a significant problem in getting the SGX enclave | |||
| code (the TA) from the TEE, through the installer and into the | ||||
| Untrusted Application in a trusted fashion. Finally, the | ||||
| personalization data would need to be sent out of the TEE (encrypted | personalization data would need to be sent out of the TEE (encrypted | |||
| in an SGX encalve-to-enclave manner) to the REE's installation app, | in an SGX encalve-to-enclave manner) to the REE's installation app, | |||
| which would pass this data to the installed Client App, which would | which would pass this data to the installed Untrusted Application, | |||
| in turn send this data to the SGX enclave (TA). This complexity is | which would in turn send this data to the SGX enclave (TA). This | |||
| due to the fact that each SGX enclave is separate and does not have | complexity is due to the fact that each SGX enclave is separate and | |||
| direct communication to one another. | does not have direct communication to other SGX enclaves. | |||
| [NOTE: Need to add an equivalent discussion for an ARM/TZ | ||||
| implementation] | ||||
| 5.6. TEEP Architectural Support for Client App, TA, and Personalization | ||||
| Data Delivery | ||||
| This section defines TEEP support for the three different cases for | ||||
| delivery of the Client App, TA, and personalization data. | ||||
| [Note: discussion of format of this single binary, and who/what is | In ARM TrustZone based environments, the Untrusted Application and TA | |||
| responsible for splitting these things apart, and installing the | may or may not be bundled together. This differs from SGX since in | |||
| client app into the REE, the TA into the TEE, and the personalization | TrustZone the TA lifetime is not inherently tied to a specific | |||
| data into the TEE or TA. Obviously the decryption must be done by | Untrused Application process lifetime as occurs in SGX. A TA is | |||
| the TEE but this may not be supported by all TAs.] | loaded by a trusted OS running in the TEE, where the trusted OS is | |||
| separate from the OS in the REE. Thus Cases 2 and 3 are equally | ||||
| applicable. In addition, it is possible for TAs to communicate with | ||||
| each other without involving the Untrusted Application, and so the | ||||
| complexity of Case 1 is lower than in the SGX example, and so Case 1 | ||||
| is possible as well though still more complex than Cases 2 and 3. | ||||
| 5.7. Entity Relations | 4.6. Entity Relations | |||
| This architecture leverages asymmetric cryptography to authenticate a | This architecture leverages asymmetric cryptography to authenticate a | |||
| device to a TAM. Additionally, a TEE in a device authenticates a TAM | device to a TAM. Additionally, a TEE in a device authenticates a TAM | |||
| and TA signer. The provisioning of Trust Anchors to a device may | and TA signer. The provisioning of Trust Anchors to a device may be | |||
| different from one use case to the other. A device administrator may | different from one use case to the other. A device administrator may | |||
| want to have the capability to control what TAs are allowed. A | want to have the capability to control what TAs are allowed. A | |||
| device manufacturer enables verification of the TA signers and TAM | device manufacturer enables verification of the TA signers and TAM | |||
| providers; it may embed a list of default Trust Anchors that the | providers; it may embed a list of default Trust Anchors that the | |||
| signer of an allowed TA's signer certificate should chain to. A | signer of an allowed TA's signer certificate should chain to. A | |||
| device administrator may choose to accept a subset of the allowed TAs | device administrator may choose to accept a subset of the allowed TAs | |||
| via consent or action of downloading. | via consent or action of downloading. | |||
| PKI CA -- CA CA -- | ||||
| | | | | ||||
| | | | | ||||
| | | | | ||||
| Device | | --- Agent / Client App --- | | ||||
| SW | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | -- TEE TAM------- | ||||
| | | ||||
| | | ||||
| FW | ||||
| Figure 3: Entities | ||||
| (App Developer) (App Store) (TAM) (Device with TEE) (CAs) | (App Developer) (App Store) (TAM) (Device with TEE) (CAs) | |||
| | | | | | | |||
| | --> (Embedded TEE cert) <-- | | --> (Embedded TEE cert) <-- | |||
| | | | | | | |||
| | <------------------------------ Get an app cert ----- | | | <------------------------------ Get an app cert ----- | | |||
| | | <-- Get a TAM cert ------ | | | | <-- Get a TAM cert ------ | | |||
| | | | | |||
| 1. Build two apps: | 1. Build two apps: | |||
| Client App | Untrusted Application | |||
| TA | TA | |||
| | | | | |||
| | | | | |||
| Client App -- 2a. --> | ----- 3. Install -------> | | Untrusted Application -- 2a. --> | ----- 3. Install -------> | | |||
| TA ------- 2b. Supply ------> | 4. Messaging-->| | TA ----------------- 2b. Supply ------> | 4. Messaging-->| | |||
| | | | | | | | | | | |||
| Figure 4: Developer Experience | Figure 3: Developer Experience | |||
| Figure 4 shows an application developer building two applications: 1) | Figure 3 shows an application developer building two applications: 1) | |||
| a rich Client Application; 2) a TA that provides some security | an Untrusted Application; 2) a TA that provides some security | |||
| functions to be run inside a TEE. At step 2, the application | functions to be run inside a TEE. At step 2, the application | |||
| developer uploads the Client Application (2a) to an Application | developer uploads the Untrusted Application (2a) to an Application | |||
| Store. The Client Application may optionally bundle the TA binary. | Store. The Untrusted Application may optionally bundle the TA | |||
| Meanwhile, the application developer may provide its TA to a TAM | binary. Meanwhile, the application developer may provide its TA to a | |||
| provider that will be managing the TA in various devices. 3. A user | TAM provider that will be managing the TA in various devices. 3. A | |||
| will go to an Application Store to download the Client Application. | user will go to an Application Store to download the Untrusted | |||
| The Client Application will trigger TA installation by initiating | Application. The Untrusted Application will trigger TA installation | |||
| communication with a TAM. This is the step 4. The Client | by initiating communication with a TAM. This is the step 4. The | |||
| Application will get messages from TAM, and interacts with device TEE | Untrusted Application will get messages from TAM, and interacts with | |||
| via an Agent. | device TEE via an Agent. | |||
| The following diagram shows a system diagram about the entity | ||||
| relationships between CAs, TAMs, SPs and devices. | ||||
| ------- Message Protocol ----- | ||||
| | | | ||||
| | | | ||||
| -------------------- --------------- ---------- | ||||
| | REE | TEE | | TAM | | SP | | ||||
| | --- | --- | | --- | | -- | | ||||
| | | | | | | | | ||||
| | Client | TEEP | | TA | | TA | | ||||
| | Apps | Agent | | Mgmt | | | | ||||
| | | | | | | | | | ||||
| | | | TAs | | | | | | ||||
| | TEEP | | | | | | | ||||
| | Broker | List of | | List of | | | | ||||
| | | Trusted | | Trusted | | | | ||||
| | | TAM/SP | | FW/TEE | | | | ||||
| | | CAs | | CAs | | | | ||||
| | | | | | | | | ||||
| | |TEE Key/ | | TAM Key/ | |SP Key/ | | ||||
| | | Cert | | Cert | | Cert | | ||||
| | | FW Key/ | | | | | | ||||
| | | Cert | | | | | | ||||
| -------------------- --------------- ---------- | ||||
| | | | | ||||
| | | | | ||||
| ------------- ---------- --------- | ||||
| | TEE CA | | TAM CA | | SP CA | | ||||
| ------------- ---------- --------- | ||||
| Figure 5: Keys | ||||
| In the previous diagram, different CAs can be used for different | ||||
| types of certificates. Messages are always signed, where the signer | ||||
| key is the message originator's private key such as that of a TAM, | ||||
| the private key of trusted firmware (TFW), or a TEE's private key. | ||||
| The main components consist of a set of standard messages created by | The main components consist of a set of standard messages created by | |||
| a TAM to deliver TA management commands to a device, and device | a TAM to deliver TA management commands to a device, and device | |||
| attestation and response messages created by a TEE that responds to a | attestation and response messages created by a TEE that responds to a | |||
| TAM's message. | TAM's message. | |||
| It should be noted that network communication capability is generally | It should be noted that network communication capability is generally | |||
| not available in TAs in today's TEE-powered devices. The networking | not available in TAs in today's TEE-powered devices. Trusted | |||
| functionality must be delegated to a rich Client Application. Client | Applications need to rely on a broker in the REE to interact with a | |||
| Applications will need to rely on an agent in the REE to interact | TEE for network message exchanges. Consequently, a TAM generally | |||
| with a TEE for message exchanges. Consequently, a TAM generally | communicates with an Untrusted Application about how it gets messages | |||
| communicates with a Client Application about how it gets messages | ||||
| that originate from a TEE inside a device. Similarly, a TA or TEE | that originate from a TEE inside a device. Similarly, a TA or TEE | |||
| generally gets messages from a TAM via some Client Application, | generally gets messages from a TAM via a TEEP Broker in this protocol | |||
| namely, a TEEP Broker in this protocol architecture, not directly | architecture, not directly from the network. | |||
| from the network. | ||||
| It is imperative to have an interoperable protocol to communicate | It is imperative to have an interoperable protocol to communicate | |||
| with different TAMs and different TEEs in different devices. This is | with different TAMs and different TEEs in different devices. This is | |||
| the role of the Broker, which is a software component that bridges | the role of the Broker, which is a software component that bridges | |||
| communication between a TAM and a TEE. Furthermore the Broker | communication between a TAM and a TEE. Furthermore the Broker | |||
| communicates with a Agent inside a TEE that is responsible to process | communicates with a Agent inside a TEE that is responsible to process | |||
| TAM requests. The Broker in REE does not need to know the actual | TAM requests. The Broker in REE does not need to know the actual | |||
| content of messages except for the TEE routing information. | content of messages except for the TEE routing information. | |||
| 5.8. Trust Anchors in TEE | 5. Keys and Certificate Types | |||
| Each TEE comes with a trust store that contains a whitelist of Trust | ||||
| Anchors that are used to validate a TAM's certificate. A TEE will | ||||
| accept a TAM to create new Security Domains and install new TAs on | ||||
| behalf of an SP only if the TAM's certificate is chained to one of | ||||
| the root CA certificates in the TEE's trust store. | ||||
| A TEE's trust store is typically preloaded at manufacturing time. It | ||||
| is out of the scope in this document to specify how the trust anchors | ||||
| should be updated when a new root certificate should be added or | ||||
| existing one should be updated or removed. A device manufacturer is | ||||
| expected to provide its TEE trust anchors live update or out-of-band | ||||
| update to Device Administrators. | ||||
| When trust anchor update is carried out, it is imperative that any | ||||
| update must maintain integrity where only authentic trust anchor list | ||||
| from a device manufacturer or a Device Administrator is accepted. | ||||
| This calls for a complete lifecycle flow in authorizing who can make | ||||
| trust anchor update and whether a given trust anchor list are non- | ||||
| tampered from the original provider. The signing of a trust anchor | ||||
| list for integrity check and update authorization methods are | ||||
| desirable to be developed. This can be addressed outside of this | ||||
| architecture document. | ||||
| Before a TAM can begin operation in the marketplace to support a | ||||
| device with a particular TEE, it must obtain a TAM certificate from a | ||||
| CA that is listed in the trust store of the TEE. | ||||
| 5.9. Trust Anchors in TAM | ||||
| The Trust Anchor store in a TAM consists of a list of CA certificates | ||||
| that sign various device TEE certificates. A TAM will accept a | ||||
| device for TA management if the TEE in the device uses a TEE | ||||
| certificate that is chained to a CA that the TAM trusts. | ||||
| 5.10. Keys and Certificate Types | ||||
| This architecture leverages the following credentials, which allow | This architecture leverages the following credentials, which allow | |||
| delivering end-to-end security without relying on any transport | delivering end-to-end security between a TAM and a TEEP Agent, | |||
| security. | without relying on any transport security. | |||
| +-------------+----------+--------+-------------------+-------------+ | ||||
| | Key Entity | Location | Issuer | Checked Against | Cardinality | | ||||
| | Name | | | | | | ||||
| +-------------+----------+--------+-------------------+-------------+ | ||||
| | 1. TFW key | Device | FW CA | A whitelist of | 1 per | | ||||
| | pair and | secure | | FW root CA | device | | ||||
| | certificate | storage | | trusted by TAMs | | | ||||
| | | | | | | | ||||
| | 2. TEE key | Device | TEE CA | A whitelist of | 1 per | | ||||
| | pair and | TEE | under | TEE root CA | device | | ||||
| | certificate | | a root | trusted by TAMs | | | ||||
| | | | CA | | | | ||||
| | | | | | | | ||||
| | 3. TAM key | TAM | TAM CA | A whitelist of | 1 or | | ||||
| | pair and | provider | under | TAM root CA | multiple | | ||||
| | certificate | | a root | embedded in TEE | can be used | | ||||
| | | | CA | | by a TAM | | ||||
| | | | | | | | ||||
| | 4. SP key | SP | SP | A SP uses a TAM. | 1 or | | ||||
| | pair and | | signer | TA is signed by a | multiple | | ||||
| | certificate | | CA | SP signer. TEE | can be used | | ||||
| | | | | delegates trust | by a TAM | | ||||
| | | | | of TA to TAM. SP | | | ||||
| | | | | signer is | | | ||||
| | | | | associated with a | | | ||||
| | | | | TA as the owner. | | | ||||
| +-------------+----------+--------+-------------------+-------------+ | ||||
| Figure 6: Key and Certificate Types | ||||
| 1. TFW key pair and certificate: A key pair and certificate for | ||||
| evidence of trustworthy firmware in a device. This key pair is | ||||
| optional for TEEP architecture. Some TEE may present its trusted | ||||
| attributes to a TAM using signed attestation with a TFW key. For | ||||
| example, a platform that uses a hardware based TEE can have | ||||
| attestation data signed by a hardware protected TFW key. | ||||
| o Location: Device secure storage | ||||
| o Supported Key Type: RSA and ECC | ||||
| o Issuer: OEM CA | ||||
| o Checked Against: A whitelist of FW root CA trusted by TAMs | ||||
| o Cardinality: One per device | ||||
| 2. TEE key pair and certificate: It is used for device attestation | ||||
| to a remote TAM and SP. | ||||
| o This key pair is burned into the device by the device | ||||
| manufacturer. The key pair and its certificate are valid for | ||||
| the expected lifetime of the device. | ||||
| o Location: Device TEE | ||||
| o Supported Key Type: RSA and ECC | ||||
| o Issuer: A CA that chains to a TEE root CA | ||||
| o Checked Against: A whitelist of TEE root CAs trusted by TAMs | Figure 4 summarizes the relationships between various keys and where | |||
| they are stored. Each public/private key identifies an SP, TAM, or | ||||
| TEE, and gets a certificate that chains up to some CA. A list of | ||||
| trusted certificates is then used to check a presented certificate | ||||
| against. | ||||
| o Cardinality: One per device | Different CAs can be used for different types of certificates. TEEP | |||
| messages are always signed, where the signer key is the message | ||||
| originator's private key such as that of a TAM, or a TEE's private | ||||
| key. In addition to the keys shown in Figure 4, there may be | ||||
| additional keys used for attestation. Refer to the RATS Architecture | ||||
| for more discussion. | ||||
| 3. TAM key pair and certificate: A TAM provider acquires a | Cardinality & Location of | |||
| certificate from a CA that a TEE trusts. | Location of Private Key Corresponding | |||
| Purpose Private Key Signs CA Certs | ||||
| ------------------ ----------- ------------- ------------- | ||||
| Authenticating TEE 1 per TEE TEEP responses TAM | ||||
| o Location: TAM provider | Authenticating TAM 1 per TAM TEEP requests TEEP Agent | |||
| o Supported Key Type: RSA and ECC. | Code Signing 1 per SP TA binary TEE | |||
| o Supported Key Size: RSA 2048-bit, ECC P-256 and P-384. Other | Figure 4: Keys | |||
| sizes should be anticipated in future. | ||||
| o Issuer: TAM CA that chains to a root CA | The TEE key pair and certificate are used for authenticating the TEE | |||
| to a remote TAM. Often, the key pair is burned into the TEE by the | ||||
| TEE manufacturer and the key pair and its certificate are valid for | ||||
| the expected lifetime of the TEE. A TAM provider is responsible for | ||||
| configuring its TAM with the manufacturer certificates or CAs that | ||||
| are used to sign TEE keys. | ||||
| o Checked Against: A whitelist of TAM root CAs embedded in a TEE | The TAM key pair and certificate are used for authenticating a TAM to | |||
| a remote TEE. A TAM provider is responsible for acquiring a | ||||
| certificate from a CA that is trusted by the TEEs it manages. | ||||
| o Cardinality: One or multiple can be used by a TAM | The SP key pair and certificate are used to sign TAs that the TEE | |||
| will consider authorized to execute. TEEs must be configured with | ||||
| the CAs that it considers authorized to sign TAs that it will | ||||
| execute. | ||||
| 4. SP key pair and certificate: An SP uses its own key pair and | 5.1. Trust Anchors in TEE | |||
| certificate to sign a TA. | ||||
| o Location: SP | A TEEP Agent's Trust Anchor store contains a list of Trust Anchors, | |||
| which are CA certificates that sign various TAM certificates. The | ||||
| list is typically preloaded at manufacturing time, and can be updated | ||||
| using the TEEP protocol if the TEE has some form of "Trust Anchor | ||||
| Manager TA" that has Trust Anchors in its configuration data. Thus, | ||||
| Trust Anchors can be updated similar to updating the configuration | ||||
| data for any other TA. | ||||
| o Supported Key Type: RSA and ECC | When Trust Anchor update is carried out, it is imperative that any | |||
| update must maintain integrity where only authentic Trust Anchor list | ||||
| from a device manufacturer or a Device Administrator is accepted. | ||||
| This calls for a complete lifecycle flow in authorizing who can make | ||||
| Trust Anchor update and whether a given Trust Anchor list are non- | ||||
| tampered from the original provider. The signing of a Trust Anchor | ||||
| list for integrity check and update authorization methods are | ||||
| desirable to be developed. This can be addressed outside of this | ||||
| architecture document. | ||||
| o Supported Key Size: RSA 2048-bit, ECC P-256 and P-384. Other | Before a TAM can begin operation in the marketplace to support a | |||
| sizes should be anticipated in future. | device with a particular TEE, it must obtain a TAM certificate from a | |||
| CA that is listed in the Trust Anchor store of the TEE. | ||||
| o Issuer: An SP signer CA that chains to a root CA | 5.2. Trust Anchors in TAM | |||
| o Checked Against: An SP uses a TAM. A TEE trusts an SP by | ||||
| validating trust against a TAM that the SP uses. A TEE trusts | ||||
| a TAM to ensure that a TA is trustworthy. | ||||
| o Cardinality: One or multiple can be used by an SP | The Trust Anchor store in a TAM consists of a list of Trust Anchors, | |||
| which are CA certificates that sign various device TEE certificates. | ||||
| A TAM will accept a device for TA management if the TEE in the device | ||||
| uses a TEE certificate that is chained to a CA that the TAM trusts. | ||||
| 5.11. Scalability | 5.3. Scalability | |||
| This architecture uses a PKI. Trust Anchors exist on the devices to | This architecture uses a PKI. Trust Anchors exist on the devices to | |||
| enable the TEE to authenticate TAMs, and TAMs use Trust Anchors to | enable the TEE to authenticate TAMs, and TAMs use Trust Anchors to | |||
| authenticate TEEs. Since a PKI is used, many intermediate CA | authenticate TEEs. Since a PKI is used, many intermediate CA | |||
| certificates can chain to a root certificate, each of which can issue | certificates can chain to a root certificate, each of which can issue | |||
| many certificates. This makes the protocol highly scalable. New | many certificates. This makes the protocol highly scalable. New | |||
| factories that produce TEEs can join the ecosystem. In this case, | factories that produce TEEs can join the ecosystem. In this case, | |||
| such a factory can get an intermediate CA certificate from one of the | such a factory can get an intermediate CA certificate from one of the | |||
| existing roots without requiring that TAMs are updated with | existing roots without requiring that TAMs are updated with | |||
| information about the new device factory. Likewise, new TAMs can | information about the new device factory. Likewise, new TAMs can | |||
| join the ecosystem, providing they are issued a TAM certificate that | join the ecosystem, providing they are issued a TAM certificate that | |||
| chains to an existing root whereby existing TEEs will be allowed to | chains to an existing root whereby existing TEEs will be allowed to | |||
| be personalized by the TAM without requiring changes to the TEE | be personalized by the TAM without requiring changes to the TEE | |||
| itself. This enables the ecosystem to scale, and avoids the need for | itself. This enables the ecosystem to scale, and avoids the need for | |||
| centralized databases of all TEEs produced or all TAMs that exist. | centralized databases of all TEEs produced or all TAMs that exist. | |||
| 5.12. Message Security | 5.4. Message Security | |||
| Messages created by a TAM are used to deliver TA management commands | Messages created by a TAM are used to deliver TA management commands | |||
| to a device, and device attestation and messages created by the | to a device, and device attestation and messages created by the | |||
| device TEE to respond to TAM messages. | device TEE to respond to TAM messages. | |||
| These messages are signed end-to-end and are typically encrypted such | These messages are signed end-to-end between a TEEP Agent and a TAM, | |||
| that only the targeted device TEE or TAM is able to decrypt and view | and are typically encrypted such that only the targeted device TEE or | |||
| the actual content. | TAM is able to decrypt and view the actual content. | |||
| 5.13. Security Domain | ||||
| No security domain (SD) is explicitly assumed in a TEE for TA | ||||
| management. Some TEE, for example, some TEE compliant with Global | ||||
| Platform (GP), may continue to choose to use SD to organize resource | ||||
| partition and security boundaries. It is up to a TEE implementation | ||||
| to decide how a SD is attached to a TA installation, for example, one | ||||
| SD could be created per TA. | ||||
| 5.14. A Sample Device Setup Flow | ||||
| Step 1: Prepare Images for Devices | ||||
| 1. [TEE vendor] Deliver TEE Image (CODE Binary) to device OEM | ||||
| 2. [CA] Deliver root CA Whitelist | ||||
| 3. [Soc] Deliver TFW Image | ||||
| Step 2: Inject Key Pairs and Images to Devices | ||||
| 1. [OEM] Generate TFW Key Pair (May be shared among multiple | ||||
| devices) | ||||
| 2. [OEM] Flash signed TFW Image and signed TEE Image onto devices | ||||
| (signed by TFW Key) | ||||
| Step 3: Set up attestation key pairs in devices | ||||
| 1. [OEM] Flash TFW Public Key and a bootloader key. | ||||
| 2. [TFW/TEE] Generate a unique attestation key pair and get a | ||||
| certificate for the device. | ||||
| Step 4: Set up Trust Anchors in devices | ||||
| 1. [TFW/TEE] Store the key and certificate encrypted with the | ||||
| bootloader key | ||||
| 2. [TEE vendor or OEM] Store trusted CA certificate list into | ||||
| devices | ||||
| 6. TEEP Broker | 6. TEEP Broker | |||
| A TEE and TAs do not generally have the capability to communicate to | A TEE and TAs often do not have the capability to directly | |||
| the outside of the hosting device. For example, GlobalPlatform | communicate outside of the hosting device. For example, | |||
| [GPTEE] specifies one such architecture. This calls for a software | GlobalPlatform [GPTEE] specifies one such architecture. This calls | |||
| module in the REE world to handle the network communication. Each | for a software module in the REE world to handle network | |||
| Client Application in the REE might carry this communication | communication with a TAM. | |||
| functionality but such functionality must also interact with the TEE | ||||
| for the message exchange. | ||||
| The TEE interaction will vary according to different TEEs. In order | ||||
| for a Client Application to transparently support different TEEs, it | ||||
| is imperative to have a common interface for a Client Application to | ||||
| invoke for exchanging messages with TEEs. | ||||
| A shared module in REE comes to meet this need. A TEEP broker is an | A TEEP Broker is an application component running in the REE of the | |||
| application running in the REE of the device or an SDK that | device or an SDK that facilitates communication between a TAM and a | |||
| facilitates communication between a TAM and a TEE. It also provides | TEE. It also provides interfaces for Untrusted Applications to query | |||
| interfaces for Client Applications to query and trigger TA | and trigger TA installation that the application needs to use. | |||
| installation that the application needs to use. | ||||
| It isn't always that a Client Application directly calls such a | An Untrusted Application might communicate with the TEEP Broker at | |||
| Broker to interact with a TEE. A REE Application Installer might | runtime to trigger TA installation itself. Or an Untrusted | |||
| carry out TEE and TAM interaction to install all required TAs that a | Application might simply have a metadata file that describes the TAs | |||
| Client Application depends. A Client Application may have a metadata | it depends on and the associated TAM(s) for each TA, and an REE | |||
| file that describes the TAs it depends on and the associated TAM that | Application Installer can inspect this application metadata file and | |||
| each TA installation goes to use. The REE Application Installer can | invoke the TEEP Broker to trigger TA installation on behalf of the | |||
| inspect the application metadata file and installs TAs on behalf of | Untrusted Application without requiring the Untrusted Application to | |||
| the Client Application without requiring the Client Application to | ||||
| run first. | run first. | |||
| This interface for Client Applications or Application Installers may | ||||
| be commonly in a form of an OS service call for an REE OS. A Client | ||||
| Application or an Application Installer interacts with the device TEE | ||||
| and the TAMs. | ||||
| 6.1. Role of the TEEP Broker | 6.1. Role of the TEEP Broker | |||
| A TEEP Broker abstracts the message exchanges with a TEE in a device. | A TEEP Broker abstracts the message exchanges with a TEE in a device. | |||
| The input data is originated from a TAM or the first initialization | The input data is originated from a TAM or the first initialization | |||
| call to trigger a TA installation. | call to trigger a TA installation. | |||
| The Broker doesn't need to parse a message content received from a | The Broker doesn't need to parse a message content received from a | |||
| TAM that should be processed by a TEE. When a device has more than | TAM that should be processed by a TEE. When a device has more than | |||
| one TEE, one TEEP Broker per TEE could be present in REE. A TEEP | one TEE, one TEEP Broker per TEE could be present in REE. A TEEP | |||
| Broker interacts with a TEEP Agent inside a TEE. | Broker interacts with a TEEP Agent inside a TEE. | |||
| skipping to change at page 26, line 5 ¶ | skipping to change at page 20, line 37 ¶ | |||
| 6.2. TEEP Broker Implementation Consideration | 6.2. TEEP Broker Implementation Consideration | |||
| A Provider should consider methods of distribution, scope and | A Provider should consider methods of distribution, scope and | |||
| concurrency on devices and runtime options when implementing a TEEP | concurrency on devices and runtime options when implementing a TEEP | |||
| Broker. Several non-exhaustive options are discussed below. | Broker. Several non-exhaustive options are discussed below. | |||
| Providers are encouraged to take advantage of the latest | Providers are encouraged to take advantage of the latest | |||
| communication and platform capabilities to offer the best user | communication and platform capabilities to offer the best user | |||
| experience. | experience. | |||
| 6.2.1. TEEP Broker Distribution | 6.2.1. TEEP Broker APIs | |||
| The following conceptual APIs exist from a TEEP Broker to a TEEP | ||||
| Agent: | ||||
| 1. RequestTA: A notification from an REE application (e.g., an | ||||
| installer, or a normal application) that it depends on a given | ||||
| TA, which may or may not already be installed in the TEE. | ||||
| 2. ProcessTeepMessage: A message arriving from the network, to be | ||||
| delivered to the TEEP Agent for processing. | ||||
| 3. RequestPolicyCheck: A hint (e.g., based on a timer) that the TEEP | ||||
| Agent may wish to contact the TAM for any changes, without the | ||||
| device itself needing any particular change. | ||||
| 4. ProcessError: A notification that the TEEP Broker could not | ||||
| deliver an outbound TEEP message to a TAM. | ||||
| For comparison, similar APIs may exist on the TAM side, where a | ||||
| Broker may or may not exist (depending on whether the TAM uses a TEE | ||||
| or not): | ||||
| 1. ProcessConnect: A notification that an incoming TEEP session is | ||||
| being requested by a TEEP Agent. | ||||
| 2. ProcessTeepMessage: A message arriving from the network, to be | ||||
| delivered to the TAM for processing. | ||||
| For further discussion on these APIs, see | ||||
| [I-D.ietf-teep-otrp-over-http]. | ||||
| 6.2.2. TEEP Broker Distribution | ||||
| The Broker installation is commonly carried out at OEM time. A user | The Broker installation is commonly carried out at OEM time. A user | |||
| can dynamically download and install a Broker on-demand. | can dynamically download and install a Broker on-demand. | |||
| 6.2.2. Number of TEEP Brokers | 6.2.3. Number of TEEP Brokers | |||
| There should be generally only one shared TEEP Broker in a device. | There should be generally only one shared TEEP Broker in a device. | |||
| The device's TEE vendor will most probably supply one Broker. When | The device's TEE vendor will most probably supply one Broker. When | |||
| multiple TEEs are present in a device, one TEEP Broker per TEE may be | multiple TEEs are present in a device, one TEEP Broker per TEE may be | |||
| used. | used. | |||
| When only one Broker is used per device, the Broker provider is | When only one Broker is used per device, the Broker provider is | |||
| responsible to allow multiple TAMs and TEE providers to achieve | responsible to allow multiple TAMs and TEE providers to achieve | |||
| interoperability. With a standard Broker interface, each TAM can | interoperability. With a standard Broker interface, each TAM can | |||
| implement its own SDK for its SP Client Applications to work with | implement its own SDK for its SP Untrusted Applications to work with | |||
| this Broker. | this Broker. | |||
| Multiple independent Broker providers can be used as long as they | Multiple independent Broker providers can be used as long as they | |||
| have standard interface to a Client Application or TAM SDK. Only one | have standard interface to an Untrusted Application or TAM SDK. Only | |||
| Broker is generally expected in a device. | one Broker is generally expected in a device. | |||
| 7. Attestation | 7. Attestation | |||
| Attestation is the process through which one entity (an attestor) | Attestation is the process through which one entity (an Attester) | |||
| presents a series of claims to another entity (a verifier), and | presents "evidence", in the form of a series of claims, to another | |||
| provides sufficient proof that the claims are true. Different | entity (a Verifier), and provides sufficient proof that the claims | |||
| verifiers may have different standards for attestation proofs and not | are true. Different verifiers may have different standards for | |||
| all attestations are acceptable to every verifier. TEEP attestations | attestation proofs and not all attestations are acceptable to every | |||
| are based upon the use of an asymmetric key pair under the control of | verifier. A third entity (a Relying Party) can then use "attestation | |||
| the TEE to create digital signatures across a well-defined claim set. | results", in the form of another series of claims, from a Verifier to | |||
| make authorization decisions. | ||||
| In TEEP, the primary purpose of an attestation is to allow a device | In TEEP, as depicted in Figure 5, the primary purpose of an | |||
| to prove to TAMs and SPs that a TEE in the device has particular | attestation is to allow a device (the Attester) to prove to TAMs (the | |||
| properties, was built by a particular manufacturer, or is executing a | Relying Parties) that a TEE in the device has particular properties, | |||
| particular TA. Other claims are possible; this architecture | was built by a particular manufacturer, or is executing a particular | |||
| specification does not limit the attestation claims, but defines a | TA. Other claims are possible; TEEP does not limit the claims that | |||
| minimal set of claims required for TEEP to operate properly. | may appear in evidence or attestation results, but defines a minimal | |||
| Extensions to these claims are possible, but are not defined in the | set of attestation result claims required for TEEP to operate | |||
| TEEP specifications. Other standards or groups may define the format | properly. Extensions to these claims are possible. Other standards | |||
| and semantics of extended claims. The TEEP specification defines the | or groups may define the format and semantics of extended claims. | |||
| claims format such that these extended claims may be easily included | ||||
| in a TEEP attestation message. | +----------------+ | |||
| | Device | +----------+ | ||||
| | +------------+ | Evidence | TAM | Evidence +----------+ | ||||
| | | TEE |------------->| (Relying |-------------->| Verifier | | ||||
| | | (Attester) | | | Party) |<--------------| | | ||||
| | +------------+ | +----------+ Attestation +----------+ | ||||
| +----------------+ Result | ||||
| Figure 5: TEEP Attestation Roles | ||||
| As of the writing of this specification, device and TEE attestations | As of the writing of this specification, device and TEE attestations | |||
| have not been standardized across the market. Different devices, | have not been standardized across the market. Different devices, | |||
| manufacturers, and TEEs support different attestation algorithms and | manufacturers, and TEEs support different attestation algorithms and | |||
| mechanisms. In order for TEEP to be inclusive, the attestation | mechanisms. In order for TEEP to be inclusive, it is agnostic to the | |||
| format shall allow for both proprietary attestation signatures, as | format of evidence, allowing proprietary or standardized formats to | |||
| well as a standardized form of attestation signature. Either form of | be used between a TEE and a verifier (which may or may not be | |||
| attestation signature may be applied to a set of TEEP claims, and | colocated in the TAM). However, it should be recognized that not all | |||
| both forms of attestation shall be considered conformant with TEEP. | verifiers may be able to process all proprietary forms of attestation | |||
| However, it should be recognized that not all TAMs or SPs may be able | evidence. Similarly, the TEEP protocol is agnostic as to the format | |||
| to process all proprietary forms of attestations. All TAMs and SPs | of attestation results, and the protocol (if any) used between the | |||
| MUST be able to process the TEEP standard attestation format and | TAM and a verifier, as long as they convey at least the required set | |||
| attached signature. | of claims in some format. | |||
| The attestation formats and mechanisms described and mandated by TEEP | ||||
| shall convey a particular set of cryptographic properties based on | ||||
| minimal assumptions. The cryptographic properties are conveyed by | ||||
| the attestation; however the assumptions are not conveyed within the | ||||
| attestation itself. | ||||
| The assumptions which may apply to an attestation have to do with the | The assumptions which may apply to an attestation have to do with the | |||
| quality of the attestation and the quality and security provided by | quality of the attestation and the quality and security provided by | |||
| the TEE, the device, the manufacturer, or others involved in the | the TEE, the device, the manufacturer, or others involved in the | |||
| device or TEE ecosystem. Some of the assumptions that might apply to | device or TEE ecosystem. Some of the assumptions that might apply to | |||
| an attestations include (this may not be a comprehensive list): | an attestations include (this may not be a comprehensive list): | |||
| - Assumptions regarding the security measures a manufacturer takes | - Assumptions regarding the security measures a manufacturer takes | |||
| when provisioning keys into devices/TEEs; | when provisioning keys into devices/TEEs; | |||
| skipping to change at page 27, line 47 ¶ | skipping to change at page 23, line 18 ¶ | |||
| - Assumptions regarding the limitations of use applied to TEE | - Assumptions regarding the limitations of use applied to TEE | |||
| Attestation keys; | Attestation keys; | |||
| - Assumptions regarding the processes in place to discover or detect | - Assumptions regarding the processes in place to discover or detect | |||
| TEE breeches; and | TEE breeches; and | |||
| - Assumptions regarding the revocation and recovery process of TEE | - Assumptions regarding the revocation and recovery process of TEE | |||
| attestation keys. | attestation keys. | |||
| TAMs and SPs must be comfortable with the assumptions that are | TAMs must be comfortable with the assumptions that are inherently | |||
| inherently part of any attestation they accept. Alternatively, any | part of any attestation result they accept. Alternatively, any TAM | |||
| TAM or SP may choose not to accept an attestation generated from a | may choose not to accept an attestation result generated using | |||
| particular manufacturer or device's TEE based on the inherent | evidence from a particular manufacturer or device's TEE based on the | |||
| assumptions. The choice and policy decisions are left up to the | inherent assumptions. The choice and policy decisions are left up to | |||
| particular TAM/SP. | the particular TAM. | |||
| Some TAMs or SPs may require additional claims in order to properly | Some TAMs may require additional claims in order to properly | |||
| authorize a device or TEE. These additional claims may help clear up | authorize a device or TEE. These additional claims may help clear up | |||
| any assumptions for which the TAM/SP wants to alleviate. The | any assumptions for which the TAM wants to alleviate. The specific | |||
| specific format for these additional claims are outside the scope of | format for these additional claims are outside the scope of this | |||
| this specification, but the OTrP protocol SHALL allow these | specification, but the TEEP protocol allows these additional claims | |||
| additional claims to be included in the attestation messages. | to be included in the attestation messages. | |||
| The following sub-sections define the cryptographic properties | ||||
| conveyed by the TEEP attestation, the basic set of TEEP claims | ||||
| required in a TEEP attestation, the TEEP attestation flow between the | ||||
| TAM the device TEE, and some implementation examples of how an | ||||
| attestation key may be realized in a real TEEP device. | ||||
| 7.1. Attestation Cryptographic Properties | ||||
| The attestation constructed by TEEP must convey certain cryptographic | ||||
| properties from the attestor to the verifier; in the case of TEEP, | ||||
| the attestation must convey properties from the device to the TAM | ||||
| and/or SP. The properties required by TEEP include: | ||||
| - Non-repudiation, Unique Proof of Source - the cryptographic | ||||
| digital signature across the attestation, and optionally along | ||||
| with information in the attestion itself SHALL uniquely identify a | ||||
| specific TEE in a specific device. | ||||
| - Integrity of claims - the cryptographic digital signature across | ||||
| the attestation SHALL cover the entire attestation including all | ||||
| meta data and all the claims in the attestation, ensuring that the | ||||
| attestation has not be modified since the TEE signed the | ||||
| attestation. | ||||
| Standard public key algorithms such as RSA and ECDSA digital | ||||
| signatures convey these properties. Group public key algorithms such | ||||
| as EPID can also convey these properties, if the attestation includes | ||||
| a unique device identifier and an identifier for the TEE. Other | ||||
| cryptographic operations used in other attestation schemes may also | ||||
| convey these properties. | ||||
| The TEEP standard attestation format SHALL use one of the following | ||||
| digital signature formats: | ||||
| - RSA-2048 with SHA-256 or SHA-384 in RSASSA-PKCS1-v1_5 or PSS | ||||
| format | ||||
| - RSA-3072 with SHA-256 or SHA-384 in RSASSA-PKCS1-v1_5 or PSS | ||||
| format | ||||
| - ECDSA-256 using NIST P256 curve using SHA-256 | ||||
| - ECDSA-384 using NIST P384 curve using SHA-384 | ||||
| - HashEdDSA using Ed25519 with SHA-512 (Ed25519ph in RFC8032) and | ||||
| context="TEEP Attestation" | ||||
| - EdDSA using Ed448 with SHAK256 (Ed448ph in RFC8032) and | ||||
| context="TEEP Attestation" | ||||
| All TAMs and SPs MUST be able to accept attestations using these | ||||
| algorithms, contingent on their acceptance of the assumptions implied | ||||
| by the attestations. | ||||
| 7.2. TEEP Attestation Structure | ||||
| For a TEEP attestation to be useful, it must contain an information | ||||
| set allowing the TAM and/or SP to assess the attestation and make a | ||||
| related security policy decision. The structure of the TEEP | ||||
| attestation is shown in the diagram below. | ||||
| +------(Signed By)-----------+ | ||||
| | | | ||||
| /--------------------------\ V | ||||
| +---------------+-------------+--------------------------+ | ||||
| | Attestation | The | The | | ||||
| | Header | Claims | Attestation Signature(s) | | ||||
| +---------------+-------------+--------------------------+ | ||||
| | | ||||
| | | ||||
| +------------+--(Contains)------+-----------------+--------------+ | ||||
| | | | | | | ||||
| V V V V V | ||||
| +-------------+ +-------------+ +----------+ +-----------------+ +------------+ | ||||
| | Device | | TEE | | | | Action or | | Additional | | ||||
| | Identifying | | Identifying | | Liveness | | Operation | | or optional| | ||||
| | Info | | Info | | Proof | | Specific claims | | Claims | | ||||
| +-------------+ +-------------+ +----------+ +-----------------+ +------------+ | ||||
| Figure 7: Structure of TEEP Attestation | ||||
| The Attestation Header SHALL identify the "Attestation Type" and the | ||||
| "Attestation Signature Type" along with an "Attestation Format | ||||
| Version Number." The "Attestation Type" identifies the minimal set | ||||
| of claims that MUST be included in the attestation; this is an | ||||
| identifier for a profile that defines the claims that should be | ||||
| included in the attestation as part of the "Action or Operation | ||||
| Specific Claims." The "Attestation Signature Type" identifies the | ||||
| type of attestation signature that is attached. The type of | ||||
| attestation signature SHALL be one of the standard signatures types | ||||
| identified by an IANA number, a proprietary signature type identified | ||||
| by an IANA number, or the generic "Proprietary Signature" with an | ||||
| accompanying proprietary identifier. Not all TAMs may be able to | ||||
| process proprietary signatures. | ||||
| The claims in the attestation are set of mandatory and optional | 7.1. Information Required in TEEP Claims | |||
| claims. The claims themselves SHALL be defined in an attestation | ||||
| claims dictionary. See the next section on TEEP Attestation Claims. | ||||
| Claims are grouped in profiles under an identifier (Attestation | ||||
| Type), however all attestations require a minimal set of claims which | ||||
| includes: | ||||
| - Device Identifying Info: TEEP attestations must uniquely identify | - Device Identifying Info: TEEP attestations must uniquely identify | |||
| a device to the TAM and SP. This identifier allows the TAM/SP to | a device to the TAM and SP. This identifier allows the TAM to | |||
| provide services unique to the device, such as managing installed | provide services unique to the device, such as managing installed | |||
| TAs, and providing subscriptions to services, and locating device- | TAs, and providing subscriptions to services, and locating device- | |||
| specific keying material to communicate wiht or authenticate the | specific keying material to communicate with or authenticate the | |||
| device. Additionally, device manufacturer information must be | device. Additionally, device manufacturer information must be | |||
| provided to provide better universal uniqueness qualities without | provided to provide better universal uniqueness qualities without | |||
| requiring globally unique identifiers for all devices. | requiring globally unique identifiers for all devices. | |||
| - TEE Identifying info: The type of TEE that generated this | - TEE Identifying info: The type of TEE that generated this | |||
| attestation must be identified. Standard TEE types are identified | attestation must be identified. Standard TEE types are identified | |||
| by an IANA number, but also must include version identification | by an IANA number, but also must include version identification | |||
| information such as the hardware, firmware, and software version | information such as the hardware, firmware, and software version | |||
| of the TEE, as applicable by the TEE type. Structure to the | of the TEE, as applicable by the TEE type. TEE manufacturer | |||
| version number is required.TEE manufacturer information for the | information for the TEE is required in order to disambiguate the | |||
| TEE is required in order to disambiguate the same TEE type created | same TEE type created by different manufacturers and resolve | |||
| by different manufacturers and resolve potential assumptions | potential assumptions around manufacturer provisioning, keying and | |||
| around manufacturer provisioning, keying and support for the TEE. | support for the TEE. | |||
| - Liveness Proof: a claim that includes liveness information SHALL | ||||
| be included which may be a large nonce or may be a timestamp and | ||||
| short nonce. | ||||
| - Action Specific Claims: Certain attestation types shall include | ||||
| specific claims. For example an attestation from a specific TA | ||||
| shall include a measurement, version and signing public key for | ||||
| the TA. | ||||
| - Additional Claims: (Optional - May be empty set) A TAM or SP may | ||||
| require specific additional claims in order to address potential | ||||
| assumptions, such as the requirement that a device's REE performed | ||||
| a secure boot, or that the device is not currenlty in a debug or | ||||
| non-productions state. A TAM may require a device to provide a | ||||
| device health attestation that may include some claims or | ||||
| measurements about the REE. These claims are TAM specific. | ||||
| 7.3. TEEP Attestation Claims | ||||
| TEEP requires a set of attestation claims that provide sufficient | ||||
| evidence to the TAM and/or SP that the device and its TEE meet | ||||
| certain minimal requirements. Because attestation formats are not | ||||
| yet broadly standardized across the industry, standardization work is | ||||
| currently ongoing, and it is expected that extensions to the | ||||
| attestation claims will be required as new TEEs and devices are | ||||
| created, the set of attestation claims required by TEEP SHALL be | ||||
| defined in an IANA registry. That registry SHALL be defined in the | ||||
| OTrP protocol with sufficient elements to address basic TEEP claims, | ||||
| expected new standard claims (for example from | ||||
| https://www.ietf.org/id/draft-mandyam-eat-01.txt), and proprietary | ||||
| claim sets. | ||||
| 7.4. TEEP Attestation Flow | ||||
| Attesations are required in TEEP under the following flows: | ||||
| - When a TEE responds with device state information (dsi) to the TAM | ||||
| or SP, including a "GetDeviceState" response, "InstallTA" | ||||
| response, etc. | ||||
| - When a new key pair is generated for a TA-to-TAM or TA-to-SP | ||||
| communication, the keypair must be covered by an attestation, | ||||
| including "CreateSecurityDomain" response, "UpdateSecurityDomain" | ||||
| response, etc. | ||||
| 7.5. Attestation Key Example | ||||
| The attestation hierarchy and seed required for TAM protocol | ||||
| operation must be built into the device at manufacture. Additional | ||||
| TEEs can be added post-manufacture using the scheme proposed, but it | ||||
| is outside of the current scope of this document to detail that. | ||||
| It should be noted that the attestation scheme described is based on | ||||
| signatures. The only decryption that may take place is through the | ||||
| use of a bootloader key. | ||||
| A boot module generated attestation can be optional where the | ||||
| starting point of device attestation can be at TEE certificates. A | ||||
| TAM can define its policies on what kinds of TEE it trusts if TFW | ||||
| attestation is not included during the TEE attestation. | ||||
| 7.5.1. Attestation Hierarchy Establishment: Manufacture | ||||
| During manufacture the following steps are required: | ||||
| 1. A device-specific TFW key pair and certificate are burnt into the | ||||
| device. This key pair will be used for signing operations | ||||
| performed by the boot module. | ||||
| 2. TEE images are loaded and include a TEE instance-specific key | ||||
| pair and certificate. The key pair and certificate are included | ||||
| in the image and covered by the code signing hash. | ||||
| 3. The process for TEE images is repeated for any subordinate TEEs, | ||||
| which are additional TEEs after the root TEE that some devices | ||||
| have. | ||||
| 7.5.2. Attestation Hierarchy Establishment: Device Boot | ||||
| During device boot the following steps are required: | ||||
| 1. The boot module releases the TFW private key by decrypting it | ||||
| with the bootloader key. | ||||
| 2. The boot module verifies the code-signing signature of the active | ||||
| TEE and places its TEE public key into a signing buffer, along | ||||
| with its identifier for later access. For a TEE non-compliant to | ||||
| this architecture, the boot module leaves the TEE public key | ||||
| field blank. | ||||
| 3. The boot module signs the signing buffer with the TFW private | ||||
| key. | ||||
| 4. Each active TEE performs the same operation as the boot module, | ||||
| building up their own signed buffer containing subordinate TEE | ||||
| information. | ||||
| 7.5.3. Attestation Hierarchy Establishment: TAM | - Liveness Proof: A claim that includes liveness information must be | |||
| included, such as a nonce or timestamp. | ||||
| Before a TAM can begin operation in the marketplace, it must obtain a | - Requested Components: A list of zero or more components (TAs or | |||
| TAM certificate from a CA that is registered in the trust store of | other dependencies needed by a TEE) that are requested by some | |||
| devices. In this way, the TEE can check the intermediate and root CA | depending app, but which are not currently installed in the TEE. | |||
| and verify that it trusts this TAM to perform operations on the TEE. | ||||
| 8. Algorithm and Attestation Agility | 8. Algorithm and Attestation Agility | |||
| RFC 7696 [RFC7696] outlines the requirements to migrate from one | RFC 7696 [RFC7696] outlines the requirements to migrate from one | |||
| mandatory-to-implement algorithm suite to another over time. This | mandatory-to-implement algorithm suite to another over time. This | |||
| feature is also known as crypto agility. Protocol evolution is | feature is also known as crypto agility. Protocol evolution is | |||
| greatly simplified when crypto agility is already considered during | greatly simplified when crypto agility is already considered during | |||
| the design of the protocol. In the case of the Open Trust Protocol | the design of the protocol. In the case of the Trusted Execution | |||
| (OTrP) the diverse range of use cases, from trusted app updates for | Provisioning (TEEP) Protocol the diverse range of use cases, from | |||
| smart phones and tablets to updates of code on higher-end IoT | trusted app updates for smart phones and tablets to updates of code | |||
| devices, creates the need for different mandatory-to-implement | on higher-end IoT devices, creates the need for different mandatory- | |||
| algorithms already from the start. | to-implement algorithms already from the start. | |||
| Crypto agility in the OTrP concerns the use of symmetric as well as | Crypto agility in TEEP concerns the use of symmetric as well as | |||
| asymmetric algorithms. Symmetric algorithms are used for encryption | asymmetric algorithms. Symmetric algorithms are used for encryption | |||
| of content whereas the asymmetric algorithms are mostly used for | of content whereas the asymmetric algorithms are mostly used for | |||
| signing messages. | signing messages. | |||
| In addition to the use of cryptographic algorithms in OTrP there is | In addition to the use of cryptographic algorithms in TEEP there is | |||
| also the need to make use of different attestation technologies. A | also the need to make use of different attestation technologies. A | |||
| Device must provide techniques to inform a TAM about the attestation | Device must provide techniques to inform a TAM about the attestation | |||
| technology it supports. For many deployment cases it is more likely | technology it supports. For many deployment cases it is more likely | |||
| for the TAM to support one or more attestation techniques whereas the | for the TAM to support one or more attestation techniques whereas the | |||
| Device may only support one. | Device may only support one. | |||
| 9. Security Considerations | 9. Security Considerations | |||
| 9.1. TA Trust Check at TEE | 9.1. TA Trust Check at TEE | |||
| A TA binary is signed by a TA signer certificate. This TA signing | A TA binary is signed by a TA signer certificate. This TA signing | |||
| certificate/private key belongs to the SP, and may be self-signed | certificate/private key belongs to the SP, and may be self-signed | |||
| (i.e., it need not participate in a trust hierarchy). It is the | (i.e., it need not participate in a trust hierarchy). It is the | |||
| responsibility of the TAM to only allow verified TAs from trusted SPs | responsibility of the TAM to only allow verified TAs from trusted SPs | |||
| into the system. Delivery of that TA to the TEE is then the | into the system. Delivery of that TA to the TEE is then the | |||
| responsibility of the TEE, using the security mechanisms provided by | responsibility of the TEE, using the security mechanisms provided by | |||
| the protocol. | the protocol. | |||
| We allow a way for an (untrusted) application to check the | We allow a way for an Untrusted Application to check the | |||
| trustworthiness of a TA. A TEEP Broker has a function to allow an | trustworthiness of a TA. A TEEP Broker has a function to allow an | |||
| application to query the information about a TA. | application to query the information about a TA. | |||
| An application in the Rich O/S may perform verification of the TA by | An Untrusted Application may perform verification of the TA by | |||
| verifying the signature of the TA. The GetTAInformation function is | verifying the signature of the TA. An application can do additional | |||
| available to return the TEE supplied TA signer and TAM signer | ||||
| information to the application. An application can do additional | ||||
| trust checks on the certificate returned for this TA. It might trust | trust checks on the certificate returned for this TA. It might trust | |||
| the TAM, or require additional SP signer trust chaining. | the TAM, or require additional SP signer trust chaining. | |||
| 9.2. One TA Multiple SP Case | 9.2. One TA Multiple SP Case | |||
| A TA for multiple SPs must have a different identifier per SP. They | A TA for multiple SPs must have a different identifier per SP. They | |||
| should appear as different TAs when they are installed in the same | should appear as different TAs when they are installed in the same | |||
| device. | device. | |||
| 9.3. Broker Trust Model | 9.3. Broker Trust Model | |||
| A TEEP Broker could be malware in the vulnerable REE. A Client | A TEEP Broker could be malware in the vulnerable REE. An Untrusted | |||
| Application will connect its TAM provider for required TA | Application will connect its TAM provider for required TA | |||
| installation. It gets command messages from the TAM, and passes the | installation. It gets command messages from the TAM, and passes the | |||
| message to the Broker. | message to the Broker. | |||
| The architecture enables the TAM to communicate with the device's TEE | The architecture enables the TAM to communicate with the device's TEE | |||
| to manage TAs. All TAM messages are signed and sensitive data is | to manage TAs. All TAM messages are signed and sensitive data is | |||
| encrypted such that the TEEP Broker cannot modify or capture | encrypted such that the TEEP Broker cannot modify or capture | |||
| sensitive data. | sensitive data. | |||
| 9.4. Data Protection at TAM and TEE | 9.4. Data Protection at TAM and TEE | |||
| The TEE implementation provides protection of data on the device. It | The TEE implementation provides protection of data on the device. It | |||
| is the responsibility of the TAM to protect data on its servers. | is the responsibility of the TAM to protect data on its servers. | |||
| 9.5. Compromised CA | 9.5. Compromised CA | |||
| A root CA for TAM certificates might get compromised. Some TEE trust | A root CA for TAM certificates might get compromised. Some TEE Trust | |||
| anchor update mechanism is expected from device OEMs. A compromised | Anchor update mechanism is expected from device OEMs. TEEs are | |||
| intermediate CA is covered by OCSP stapling and OCSP validation check | responsible for validating certificate revocation about a TAM | |||
| in the protocol. A TEE should validate certificate revocation about | certificate chain. | |||
| a TAM certificate chain. | ||||
| If the root CA of some TEE device certificates is compromised, these | If the root CA of some TEE device certificates is compromised, these | |||
| devices might be rejected by a TAM, which is a decision of the TAM | devices might be rejected by a TAM, which is a decision of the TAM | |||
| implementation and policy choice. Any intermediate CA for TEE device | implementation and policy choice. TAMs are responsible for | |||
| certificates SHOULD be validated by TAM with a Certificate Revocation | validating any intermediate CA for TEE device certificates. | |||
| List (CRL) or Online Certificate Status Protocol (OCSP) method. | ||||
| 9.6. Compromised TAM | 9.6. Compromised TAM | |||
| The TEE SHOULD use validation of the supplied TAM certificates and | Device TEEs are responsible for validating the supplied TAM | |||
| OCSP stapled data to validate that the TAM is trustworthy. | certificates to determine that the TAM is trustworthy. | |||
| Since PKI is used, the integrity of the clock within the TEE | ||||
| determines the ability of the TEE to reject an expired TAM | ||||
| certificate, or revoked TAM certificate. Since OCSP stapling | ||||
| includes signature generation time, certificate validity dates are | ||||
| compared to the current time. | ||||
| 9.7. Certificate Renewal | 9.7. Certificate Renewal | |||
| TFW and TEE device certificates are expected to be long lived, longer | TEE device certificates are expected to be long lived, longer than | |||
| than the lifetime of a device. A TAM certificate usually has a | the lifetime of a device. A TAM certificate usually has a moderate | |||
| moderate lifetime of 2 to 5 years. A TAM should get renewed or | lifetime of 2 to 5 years. A TAM should get renewed or rekeyed | |||
| rekeyed certificates. The root CA certificates for a TAM, which are | certificates. The root CA certificates for a TAM, which are embedded | |||
| embedded into the Trust Anchor store in a device, should have long | into the Trust Anchor store in a device, should have long lifetimes | |||
| lifetimes that don't require device Trust Anchor update. On the | that don't require device Trust Anchor update. On the other hand, it | |||
| other hand, it is imperative that OEMs or device providers plan for | is imperative that OEMs or device providers plan for support of Trust | |||
| support of Trust Anchor update in their shipped devices. | Anchor update in their shipped devices. | |||
| 9.8. Keeping Secrets from the TAM | ||||
| In some scenarios, it is desirable to protect the TA binary or | ||||
| configuration from being disclosed to the TAM that distributes them. | ||||
| In such a scenario, the files can be encrypted end-to-end between an | ||||
| SP and a TEE. However, there must be some means of provisioning the | ||||
| decryption key into the TEE and/or some means of the SP securely | ||||
| learning a public key of the TEE that it can use to encrypt. One way | ||||
| to do this is for the SP to run its own TAM, merely to distribute the | ||||
| decryption key via the TEEP protocol, and the key file can be a | ||||
| dependency in the manifest of the encrypted TA. Thus, the TEEP Agent | ||||
| would look at the TA manifest, determine there is a dependency with a | ||||
| TAM URI of the SP's TAM. The Agent would then install the | ||||
| dependency, and then continue with the TA installation steps, | ||||
| including decrypting the TA binary with the relevant key. | ||||
| 10. IANA Considerations | 10. IANA Considerations | |||
| This document does not require actions by IANA. | This document does not require actions by IANA. | |||
| 11. Acknowledgements | 11. Acknowledgements | |||
| The authors thank Dave Thaler for his very thorough review and many | Some content of this document is based on text in a previous OTrP | |||
| important suggestions. Most content of this document is split from a | protocol document [I-D.ietf-teep-opentrustprotocol]. We thank the | |||
| previously combined OTrP protocol document | former co-authors Nick Cook and Minho Yoo for the initial document | |||
| [I-D.ietf-teep-opentrustprotocol]. We thank the former co-authors | content, and contributors Brian Witten, Tyler Kim, and Alin Mutu. | |||
| Nick Cook and Minho Yoo for the initial document content, and | ||||
| contributors Brian Witten, Tyler Kim, and Alin Mutu. | ||||
| 12. References | ||||
| 12.1. Normative References | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", BCP 14, RFC 2119, | ||||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| 12.2. Informative References | 12. Informative References | |||
| [GPTEE] Global Platform, "GlobalPlatform Device Technology: TEE | [GPTEE] Global Platform, "GlobalPlatform Device Technology: TEE | |||
| System Architecture, v1.1", Global Platform GPD_SPE_009, | System Architecture, v1.1", Global Platform GPD_SPE_009, | |||
| January 2017, <https://globalplatform.org/specs-library/ | January 2017, <https://globalplatform.org/specs-library/ | |||
| tee-system-architecture-v1-1/>. | tee-system-architecture-v1-1/>. | |||
| [I-D.ietf-suit-manifest] | ||||
| Moran, B., Tschofenig, H., and H. Birkholz, "A Concise | ||||
| Binary Object Representation (CBOR)-based Serialization | ||||
| Format for the Software Updates for Internet of Things | ||||
| (SUIT) Manifest", draft-ietf-suit-manifest-02 (work in | ||||
| progress), November 2019. | ||||
| [I-D.ietf-teep-opentrustprotocol] | [I-D.ietf-teep-opentrustprotocol] | |||
| Pei, M., Atyeo, A., Cook, N., Yoo, M., and H. Tschofenig, | Pei, M., Atyeo, A., Cook, N., Yoo, M., and H. Tschofenig, | |||
| "The Open Trust Protocol (OTrP)", draft-ietf-teep- | "The Open Trust Protocol (OTrP)", draft-ietf-teep- | |||
| opentrustprotocol-03 (work in progress), May 2019. | opentrustprotocol-03 (work in progress), May 2019. | |||
| [I-D.ietf-teep-otrp-over-http] | ||||
| Thaler, D., "HTTP Transport for Trusted Execution | ||||
| Environment Provisioning: Agent-to- TAM Communication", | ||||
| draft-ietf-teep-otrp-over-http-03 (work in progress), | ||||
| November 2019. | ||||
| [RFC6024] Reddy, R. and C. Wallace, "Trust Anchor Management | [RFC6024] Reddy, R. and C. Wallace, "Trust Anchor Management | |||
| Requirements", RFC 6024, DOI 10.17487/RFC6024, October | Requirements", RFC 6024, DOI 10.17487/RFC6024, October | |||
| 2010, <https://www.rfc-editor.org/info/rfc6024>. | 2010, <https://www.rfc-editor.org/info/rfc6024>. | |||
| [RFC7696] Housley, R., "Guidelines for Cryptographic Algorithm | [RFC7696] Housley, R., "Guidelines for Cryptographic Algorithm | |||
| Agility and Selecting Mandatory-to-Implement Algorithms", | Agility and Selecting Mandatory-to-Implement Algorithms", | |||
| BCP 201, RFC 7696, DOI 10.17487/RFC7696, November 2015, | BCP 201, RFC 7696, DOI 10.17487/RFC7696, November 2015, | |||
| <https://www.rfc-editor.org/info/rfc7696>. | <https://www.rfc-editor.org/info/rfc7696>. | |||
| Appendix A. History | Appendix A. History | |||
| End of changes. 120 change blocks. | ||||
| 961 lines changed or deleted | 568 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||