| < draft-ietf-teep-architecture-12.txt | draft-ietf-teep-architecture-13.txt > | |||
|---|---|---|---|---|
| TEEP M. Pei | TEEP M. Pei | |||
| Internet-Draft Broadcom | Internet-Draft Broadcom | |||
| Intended status: Informational H. Tschofenig | Intended status: Informational H. Tschofenig | |||
| Expires: January 14, 2021 Arm Limited | Expires: May 6, 2021 Arm Limited | |||
| D. Thaler | D. Thaler | |||
| Microsoft | Microsoft | |||
| D. Wheeler | D. Wheeler | |||
| Intel | Intel | |||
| July 13, 2020 | November 02, 2020 | |||
| Trusted Execution Environment Provisioning (TEEP) Architecture | Trusted Execution Environment Provisioning (TEEP) Architecture | |||
| draft-ietf-teep-architecture-12 | draft-ietf-teep-architecture-13 | |||
| Abstract | Abstract | |||
| A Trusted Execution Environment (TEE) is an environment that enforces | A Trusted Execution Environment (TEE) is an environment that enforces | |||
| that any code within that environment cannot be tampered with, and | that any code within that environment cannot be tampered with, and | |||
| that any data used by such code cannot be read or tampered with by | that any data used by such code cannot be read or tampered with by | |||
| any code outside that environment. This architecture document | any code outside that environment. This architecture document | |||
| motivates the design and standardization of a protocol for managing | motivates the design and standardization of a protocol for managing | |||
| the lifecycle of trusted applications running inside such a TEE. | the lifecycle of trusted applications running inside such a TEE. | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 http://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 14, 2021. | This Internet-Draft will expire on May 6, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
| (http://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 | |||
| skipping to change at page 2, line 29 ¶ | skipping to change at page 2, line 29 ¶ | |||
| 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. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 8 | 3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 8 | 3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 8 | |||
| 4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | 4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.2. Multiple TEEs in a Device . . . . . . . . . . . . . . . . 11 | 4.2. Multiple TEEs in a Device . . . . . . . . . . . . . . . . 11 | |||
| 4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 13 | 4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 13 | |||
| 4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 14 | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 14 | |||
| 4.4.1. Example: Application Delivery Mechanisms in Intel SGX 16 | 4.4.1. Example: Application Delivery Mechanisms in Intel SGX 16 | |||
| 4.4.2. Example: Application Delivery Mechanisms in Arm | 4.4.2. Example: Application Delivery Mechanisms in Arm | |||
| TrustZone . . . . . . . . . . . . . . . . . . . . . . 16 | TrustZone . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 17 | 4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 17 | |||
| 5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 18 | 5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 18 | |||
| 5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 20 | 5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 20 | |||
| 5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 20 | 5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 20 | |||
| 5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 20 | 5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 20 | |||
| 5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.5. Message Security . . . . . . . . . . . . . . . . . . . . 21 | 5.5. Message Security . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 22 | 6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 22 | |||
| 6.2. TEEP Broker Implementation Consideration . . . . . . . . 22 | 6.2. TEEP Broker Implementation Consideration . . . . . . . . 22 | |||
| 6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 22 | 6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 23 | |||
| 6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 23 | 6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 24 | |||
| 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7.1. Information Required in TEEP Claims . . . . . . . . . . . 25 | 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 26 | |||
| 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 25 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | 9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 27 | |||
| 9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 26 | 9.2. Data Protection . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 9.2. Data Protection . . . . . . . . . . . . . . . . . . . . . 26 | 9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 27 | 9.4. CA Compromise or Expiry of CA Certificate . . . . . . . . 29 | |||
| 9.4. Compromised CA . . . . . . . . . . . . . . . . . . . . . 28 | 9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 28 | 9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 29 | |||
| 9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 28 | 9.7. Certificate Expiry and Renewal . . . . . . . . . . . . . 30 | |||
| 9.7. Certificate Expiry and Renewal . . . . . . . . . . . . . 29 | 9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 31 | |||
| 9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 30 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 30 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 | 13. Informative References . . . . . . . . . . . . . . . . . . . 31 | |||
| 13. Informative References . . . . . . . . . . . . . . . . . . . 30 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
| 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 increases with the | sources. The potential for attacks further increases with the | |||
| complexity of features and applications on devices, and the | complexity of features and applications on devices, and the | |||
| skipping to change at page 6, line 15 ¶ | skipping to change at page 6, line 12 ¶ | |||
| administration rights. In this case, the enterprise appoints a | administration rights. In this case, the enterprise appoints a | |||
| Device Administrator that is not the device owner. | Device Administrator that is not the device owner. | |||
| - 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). Other devices | allowing children to use their tablet or laptop). Other devices | |||
| are not used by a human being and hence have no device user. | are not used by a human being and hence have no device user. | |||
| Relates to Device Owner and Device Administrator. | Relates to Device Owner and Device Administrator. | |||
| - Personalization Data: A set of configuration data that is specific | ||||
| to the device or user. The Personalization Data may depend on the | ||||
| type of TEE, a particular TEE instance, the TA, and even the user | ||||
| of the device; an example of Personalization Data might be a | ||||
| secret symmetric key used by a TA to communicate with some | ||||
| service. | ||||
| - Raw Public Key: The raw public key only consists of the | - Raw Public Key: The raw public key only consists of the | |||
| SubjectPublicKeyInfo structure of a PKIX certificate that carries | SubjectPublicKeyInfo structure of a PKIX certificate [RFC5280] | |||
| the parameters necessary to describe the public key. Other | that carries the parameters necessary to describe the public key. | |||
| serialization formats that do not rely on ASN.1 may also be used. | Other serialization formats that do not rely on ASN.1 may also be | |||
| used. | ||||
| - 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 any TEE. This environment and | and hypervisors; it is outside of any TEE. This environment and | |||
| applications running on it are considered untrusted (or more | applications running on it are considered untrusted (or more | |||
| precisely, less trusted than a TEE). | precisely, less trusted than a TEE). | |||
| - Trust Anchor: As defined in [RFC6024] and | - Trust Anchor: As defined in [RFC6024] and | |||
| [I-D.ietf-suit-manifest], "A trust anchor represents an | [I-D.ietf-suit-manifest], "A trust anchor represents an | |||
| skipping to change at page 6, line 50 ¶ | skipping to change at page 7, line 8 ¶ | |||
| [I-D.ietf-suit-manifest], a Trust Anchor Store must resist | [I-D.ietf-suit-manifest], a Trust Anchor Store must resist | |||
| modification against unauthorized insertion, deletion, and | modification against unauthorized insertion, deletion, and | |||
| modification. | modification. | |||
| - Trusted Application (TA): An application (or, in some | - Trusted Application (TA): An application (or, in some | |||
| implementations, an application component) that runs in a TEE. | implementations, an application component) that runs in a TEE. | |||
| - Trusted Application (TA) Developer: An entity that develops one or | - Trusted Application (TA) Developer: An entity that develops one or | |||
| more TAs. | more TAs. | |||
| - Trusted Application (TA) Signer: An entity that signs a TA with a | - Trusted Component (TA) Signer: An entity that signs a Trusted | |||
| key that a TEE will trust. The signer might or might not be the | Component with a key that a TEE will trust. The signer might or | |||
| same entity as the TA Developer. For example, a TA might be | might not be the same entity as the TA Developer. For example, a | |||
| signed (or re-signed) by a Device Administrator if the TEE will | TA might be signed (or re-signed) by a Device Administrator if the | |||
| only trust the Device Administrator. A TA might also be | TEE will only trust the Device Administrator. A TA might also be | |||
| encrypted, if the code is considered confidential. | encrypted, if the code is considered confidential. | |||
| - Trusted Application Manager (TAM): An entity that manages Trusted | - Trusted Application Manager (TAM): An entity that manages Trusted | |||
| Applications (TAs) running in TEEs of various devices. | Components running in TEEs of various devices. | |||
| - Trusted Component: A set of code and/or data in a TEE managed as a | ||||
| unit by a Trusted Application Manager. Trusted Applications and | ||||
| Personalization Data are thus managed by being included in Trusted | ||||
| Components. Trusted OS code or trusted firmware can also be | ||||
| expressed as Trusted Components that a TA depends on. | ||||
| - Trusted Execution Environment (TEE): An execution environment that | - Trusted Execution Environment (TEE): An execution environment that | |||
| enforces that only authorized code can execute within the TEE, and | enforces that only authorized code can execute within the TEE, and | |||
| data used by that code cannot be read or tampered with by code | data used by that code cannot be read or tampered with by code | |||
| outside the TEE. A TEE also generally has a device unique | outside the TEE. A TEE also generally has a device unique | |||
| credential that cannot be cloned. There are multiple technologies | credential that cannot be cloned. There are multiple technologies | |||
| that can be used to implement a TEE, and the level of security | that can be used to implement a TEE, and the level of security | |||
| achieved varies accordingly. In addition, TEEs typically use an | achieved varies accordingly. In addition, TEEs typically use an | |||
| isolation mechanism between Trusted Applications to ensure that | isolation mechanism between Trusted Applications to ensure that | |||
| one TA cannot read, modify or delete the data and code of another | one TA cannot read, modify or delete the data and code of another | |||
| skipping to change at page 8, line 16 ¶ | skipping to change at page 8, line 29 ¶ | |||
| The Internet of Things (IoT) has been posing threats to critical | The Internet of Things (IoT) has been posing threats to critical | |||
| infrastructure because of weak security in devices. It is desirable | infrastructure because of weak security in devices. It is desirable | |||
| that IoT devices can prevent malware from manipulating actuators | that IoT devices can prevent malware from manipulating actuators | |||
| (e.g., unlocking a door), or stealing or modifying sensitive data, | (e.g., unlocking a door), or stealing or modifying sensitive data, | |||
| such as authentication credentials in the device. A TEE can be the | such as authentication credentials in the device. A TEE can be the | |||
| best way to implement such IoT security functions. | best way to implement such IoT security functions. | |||
| 3.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, such as customer details or credit | |||
| server such that only the tenant can access the data, preventing the | card numbers, in a TEE in a cloud computing server such that only the | |||
| cloud hosting provider from accessing the data. A tenant can run TAs | tenant can access the data, preventing the cloud hosting provider | |||
| inside a server TEE for secure operation and enhanced data security. | from accessing the data. A tenant can run TAs inside a server TEE | |||
| This provides benefits not only to tenants with better data security | for secure operation and enhanced data security. This provides | |||
| but also to cloud hosting providers for reduced liability and | benefits not only to tenants with better data security but also to | |||
| increased cloud adoption. | cloud hosting providers for reduced liability and increased cloud | |||
| adoption. | ||||
| 4. Architecture | 4. Architecture | |||
| 4.1. System Components | 4.1. System Components | |||
| Figure 1 shows the main components in a typical device with an REE. | Figure 1 shows the main components in a typical device with an REE. | |||
| Full descriptions of components not previously defined are provided | Full descriptions of components not previously defined are provided | |||
| below. Interactions of all components are further explained in the | below. Interactions of all components are further explained in the | |||
| following paragraphs. | following paragraphs. | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| | Device | | | Device | Trusted Component | |||
| | +--------+ | TA Developer | | +--------+ | Signer | |||
| | +-------------+ | |-----------+ | | | +-------------+ | |-----------+ | | |||
| | | TEE-1 | | TEEP |---------+ | | | | | TEE-1 | | TEEP |---------+ | | | |||
| | | +--------+ | +----| Broker | | | | +--------+ | | | | +--------+ | +----| Broker | | | | +--------+ | | |||
| | | | TEEP | | | | |<---+ | | +->| |<-+ | | | | TEEP | | | | |<---+ | | +->| |<-+ | |||
| | | | Agent |<----+ | | | | | +-| TAM-1 | | | | | Agent |<----+ | | | | | +-| TAM-1 | | |||
| | | +--------+ | | |<-+ | | +->| | |<-+ | | | +--------+ | | |<-+ | | +->| | |<-+ | |||
| | | | +--------+ | | | | +--------+ | | | | | +--------+ | | | | +--------+ | | |||
| | | +---+ +---+ | | | | | TAM-2 | | | | | +---+ +---+ | | | | | TAM-2 | | | |||
| | +-->|TA1| |TA2| | +-------+ | | | +--------+ | | | +-->|TA1| |TA2| | +-------+ | | | +--------+ | | |||
| | | | | | | |<---------| App-2 |--+ | | | | | | | | | | |<---------| App-2 |--+ | | | | |||
| | | | +---+ +---+ | +-------+ | | | Device Administrator | | | | +---+ +---+ | +-------+ | | | Device Administrator | |||
| | | +-------------+ | App-1 | | | | | | | +-------------+ | App-1 | | | | | |||
| | | | | | | | | | | | | | | | | |||
| | +--------------------| |---+ | | | | +--------------------| |---+ | | | |||
| | | |--------+ | | | | |--------+ | | |||
| | +-------+ | | | +-------+ | | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| Figure 1: Notional Architecture of TEEP | Figure 1: Notional Architecture of TEEP | |||
| - TA Signers and Device Administrators utilize the services of a TAM | - Trusted Component Signers and Device Administrators utilize the | |||
| to manage TAs on devices. TA Signers do not directly interact | services of a TAM to manage TAs on devices. Trusted Component | |||
| with devices. Device Administators may elect to use a TAM for | Signers do not directly interact with devices. Device | |||
| remote administration of TAs instead of managing each device | Administators may elect to use a TAM for remote administration of | |||
| directly. | TAs instead of managing each device directly. | |||
| - Trusted Application Manager (TAM): A TAM is responsible for | - Trusted Application Manager (TAM): A TAM is responsible for | |||
| performing lifecycle management activity on TAs on behalf of TA | performing lifecycle management activity on Trusted Components on | |||
| Signers and Device Administrators. This includes installation and | behalf of Trusted Component Signers and Device Administrators. | |||
| deletion of TAs, and may include, for example, over-the-air | This includes installation and deletion of Trusted Components, and | |||
| updates to keep TAs up-to-date and clean up when a version should | may include, for example, over-the-air updates to keep Trusted | |||
| be removed. TAMs may provide services that make it easier for TA | Components up-to-date and clean up when one should be removed. | |||
| Signers or Device Administators to use the TAM's service to manage | TAMs may provide services that make it easier for Trusted | |||
| multiple devices, although that is not required of a TAM. | Component Signers or Device Administators to use the TAM's service | |||
| to manage multiple devices, although that is not required of a | ||||
| TAM. | ||||
| The TAM performs its management of TAs on the device through | The TAM performs its management of Trusted Components on the | |||
| interactions with a device's TEEP Broker, which relays messages | device through interactions with a device's TEEP Broker, which | |||
| between a TAM and a TEEP Agent running inside the TEE. TEEP | relays messages between a TAM and a TEEP Agent running inside the | |||
| authentication is performed between a TAM and a TEEP Agent. | TEE. TEEP authentication is performed between a TAM and a TEEP | |||
| Agent. | ||||
| As shown in Figure 1, the TAM cannot directly contact a TEEP | As shown in Figure 1, the TAM cannot directly contact a TEEP | |||
| Agent, but must wait for the TEEP Broker to contact the TAM | Agent, but must wait for the TEEP Broker to contact the TAM | |||
| requesting a particular service. This architecture is intentional | requesting a particular service. This architecture is intentional | |||
| in order to accommodate network and application firewalls that | in order to accommodate network and application firewalls that | |||
| normally protect user and enterprise devices from arbitrary | normally protect user and enterprise devices from arbitrary | |||
| connections from external network entities. | connections from external network entities. | |||
| A TAM may be publicly available for use by many TA Signers, or a | A TAM may be publicly available for use by many Trusted Component | |||
| TAM may be private, and accessible by only one or a limited number | Signers, or a TAM may be private, and accessible by only one or a | |||
| of TA Signers. It is expected that many manufacturers and network | limited number of Trusted Component Signers. It is expected that | |||
| carriers will run their own private TAM. | many manufacturers and network carriers will run their own private | |||
| TAM. | ||||
| A TA Signer or Device Administrator chooses a particular TAM based | A Trusted Component Signer or Device Administrator chooses a | |||
| on whether the TAM is trusted by a device or set of devices. The | particular TAM based on whether the TAM is trusted by a device or | |||
| TAM is trusted by a device if the TAM's public key is, or chains | set of devices. The TAM is trusted by a device if the TAM's | |||
| up to, an authorized Trust Anchor in the device. A TA Signer or | public key is, or chains up to, an authorized Trust Anchor in the | |||
| Device Administrator may run their own TAM, but the devices they | device. A Trusted Component Signer or Device Administrator may | |||
| wish to manage must include this TAM's public key/certificate | run their own TAM, but the devices they wish to manage must | |||
| [RFC5280], or a certificate it chains up to, in the Trust Anchor | include this TAM's public key or certificate, or a certificate it | |||
| Store. | chains up to, in the Trust Anchor Store. | |||
| A TA Signer or Device Administrator is free to utilize multiple | A Trusted Component Signer or Device Administrator is free to | |||
| TAMs. This may be required for managing TAs on multiple different | utilize multiple TAMs. This may be required for managing Trusted | |||
| types of devices from different manufacturers, or mobile devices | Components on multiple different types of devices from different | |||
| on different network carriers, since the Trust Anchor Store on | manufacturers, or mobile devices on different network carriers, | |||
| these different devices may contain different TAMs. A Device | since the Trust Anchor Store on these different devices may | |||
| Administrator may be able to add their own TAM's public key or | contain different TAMs. A Device Administrator may be able to add | |||
| certificate to the Trust Anchor Store on all their devices, | their own TAM's public key or certificate to the Trust Anchor | |||
| overcoming this limitation. | Store 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 a device's | it must have its public key or certificate installed in a device's | |||
| Trust Anchor Store. A TAM may set up a relationship with device | Trust Anchor Store. A TAM may set up a relationship with device | |||
| manufacturers or network carriers to have them install the TAM's | manufacturers or network carriers to have them install the TAM's | |||
| keys in their device's Trust Anchor Store. Alternatively, a TAM | keys in their device's Trust Anchor Store. Alternatively, a TAM | |||
| may publish its certificate and allow Device Administrators to | may publish its certificate and allow Device Administrators to | |||
| install the TAM's certificate in their devices as an after-market- | install the TAM's certificate in their devices as an after-market- | |||
| action. | action. | |||
| skipping to change at page 11, line 14 ¶ | skipping to change at page 11, line 17 ¶ | |||
| Broker that runs in an REE). A TEEP Agent in the TEE may parse | Broker that runs in an REE). A TEEP Agent in the TEE may parse | |||
| requests or forward requests to other processing modules in a TEE, | requests or forward requests to other processing modules in a TEE, | |||
| which is up to a TEE provider's implementation. A response | which is up to a TEE provider's implementation. A response | |||
| message corresponding to a TAM request is sent back to the TAM, | message corresponding to a TAM request is sent back to the TAM, | |||
| again typically relayed via a TEEP Broker. | again typically relayed via a TEEP Broker. | |||
| - Certification Authority (CA): A CA is an entity that issues | - Certification Authority (CA): A CA is an entity that issues | |||
| digital certificates (especially X.509 certificates) and vouches | digital certificates (especially X.509 certificates) and vouches | |||
| for the binding between the data items in a certificate [RFC4949]. | for the binding between the data items in a certificate [RFC4949]. | |||
| Certificates are then used for authenticating a device, a TAM, or | Certificates are then used for authenticating a device, a TAM, or | |||
| a TA Signer, as discussed in Section 5. The CAs do not need to be | a Trusted Component Signer, as discussed in Section 5. The CAs do | |||
| the same; different CAs can be chosen by each TAM, and different | not need to be the same; different CAs can be chosen by each TAM, | |||
| device CAs can be used by different device manufacturers. | and different device CAs can be used by different device | |||
| manufacturers. | ||||
| 4.2. Multiple TEEs in a Device | 4.2. Multiple TEEs in a Device | |||
| Some devices might implement multiple TEEs. In these cases, there | Some devices might implement multiple TEEs. In these cases, there | |||
| might be one shared TEEP Broker that interacts with all the TEEs in | might be one shared TEEP Broker that interacts with all the TEEs in | |||
| the device. However, some TEEs (for example, SGX [SGX]) present | the device. However, some TEEs (for example, SGX [SGX]) present | |||
| themselves as separate containers within memory without a controlling | themselves as separate containers within memory without a controlling | |||
| manager within the TEE. As such, there might be multiple TEEP | manager within the TEE. As such, there might be multiple TEEP | |||
| Brokers in the REE, where each TEEP Broker communicates with one or | Brokers in the REE, where each TEEP Broker communicates with one or | |||
| more TEEs associated with it. | more TEEs associated with it. | |||
| skipping to change at page 12, line 5 ¶ | skipping to change at page 12, line 5 ¶ | |||
| It is up to the REE and the Untrusted Applications how they select | It is up to the REE and the Untrusted Applications how they select | |||
| the correct TEEP Broker. Verification that the correct TA has been | the correct TEEP Broker. Verification that the correct TA has been | |||
| reached then becomes a matter of properly verifying TA attestations, | reached then becomes a matter of properly verifying TA attestations, | |||
| which are unforgeable. | which are unforgeable. | |||
| The multiple TEEP Broker approach is shown in the diagram below. For | The multiple TEEP Broker approach is shown in the diagram below. For | |||
| brevity, TEEP Broker 2 is shown interacting with only one TAM and | brevity, TEEP Broker 2 is shown interacting with only one TAM and | |||
| Untrusted Application and only one TEE, but no such limitations are | Untrusted Application and only one TEE, but no such limitations are | |||
| intended to be implied in the architecture. | intended to be implied in the architecture. | |||
| +-------------------------------------------+ | +-------------------------------------------+ Trusted | |||
| | Device | | | Device | Component | |||
| | | TA Signer | | | Signer | |||
| | +-------------+ | | | | +-------------+ | | | |||
| | | TEE-1 | | | | | | TEE-1 | | | | |||
| | | +-------+ | +--------+ | +--------+ | | | | +-------+ | +--------+ | +--------+ | | |||
| | | | TEEP | | | TEEP |------------->| |<-+ | | | | TEEP | | | TEEP |------------->| |<-+ | |||
| | | | Agent |<----------| Broker | | | | TA | | | | Agent |<----------| Broker | | | | TA | |||
| | | | 1 | | | 1 |---------+ | | | | | | 1 | | | 1 |---------+ | | | |||
| | | +-------+ | | | | | | | | | | +-------+ | | | | | | | | |||
| | | | | |<---+ | | | | | | | | | |<---+ | | | | | |||
| | | +---+ +---+ | | | | | | +-| TAM-1 |Policy | | | +---+ +---+ | | | | | | +-| TAM-1 |Policy | |||
| | | |TA1| |TA2| | | |<-+ | | +->| | |<-+ | | | |TA1| |TA2| | | |<-+ | | +->| | |<-+ | |||
| skipping to change at page 12, line 50 ¶ | skipping to change at page 12, line 50 ¶ | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| Figure 2: Notional Architecture of TEEP with 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 | |||
| TAs in TEE-1, and TEEP Broker 2 controls interactions with the TAs in | TAs in TEE-1, and TEEP Broker 2 controls interactions with the TAs in | |||
| TEE-2. This presents some challenges for a TAM in completely | 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 TEEs may be | Brokers on a particular platform. In addition, since TEEs 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 Trusted | |||
| resource usage. | Components or resource usage. | |||
| 4.3. Multiple TAMs and Relationship to TAs | 4.3. Multiple TAMs and Relationship to TAs | |||
| As shown in Figure 2, a TEEP Broker provides communication between | As shown in Figure 2, a TEEP Broker provides communication between | |||
| one or more TEEP Agents and one or more TAMs. The selection of which | one or more TEEP Agents and one or more TAMs. The selection of which | |||
| TAM to communicate with might be made with or without input from an | TAM to communicate with might be made with or without input from an | |||
| Untrusted Application, but is ultimately the decision of a TEEP | Untrusted Application, but is ultimately the decision of a TEEP | |||
| Agent. | Agent. | |||
| A TEEP Agent is assumed to be able to determine, for any given TA, | A TEEP Agent is assumed to be able to determine, for any given | |||
| whether that TA is installed (or minimally, is running) in a TEE with | Trusted Component, whether that Trusted Component is installed (or | |||
| which the TEEP Agent is associated. | minimally, is running) in a TEE with which the TEEP Agent is | |||
| associated. | ||||
| Each TA is digitally signed, protecting its integrity, and linking | Each Trusted Component is digitally signed, protecting its integrity, | |||
| the TA back to the TA Signer. The TA Signer is often the TA | and linking the Trusted Component back to the Trusted Component | |||
| Developer, but in some cases might be another party such as a Device | Signer. The Trusted Component Signer is often the TA Developer, but | |||
| Administrator or other party to whom the code has been licensed (in | in some cases might be another party such as a Device Administrator | |||
| which case the same code might be signed by multiple licensees and | or other party to whom the code has been licensed (in which case the | |||
| distributed as if it were different TAs). | same code might be signed by multiple licensees and distributed as if | |||
| it were different TAs). | ||||
| A TA Signer selects one or more TAMs and communicates the TA(s) to | A Trusted Component Signer selects one or more TAMs and communicates | |||
| the TAM. For example, the TA Signer might choose TAMs based upon the | the Trusted Component(s) to the TAM. For example, the Trusted | |||
| markets into which the TAM can provide access. There may be TAMs | Component Signer might choose TAMs based upon the markets into which | |||
| that provide services to specific types of devices, or device | the TAM can provide access. There may be TAMs that provide services | |||
| operating systems, or specific geographical regions or network | to specific types of devices, or device operating systems, or | |||
| carriers. A TA Signer may be motivated to utilize multiple TAMs in | specific geographical regions or network carriers. A Trusted | |||
| order to maximize market penetration and availability on multiple | Component Signer may be motivated to utilize multiple TAMs in order | |||
| types of devices. This means that the same TA will often be | to maximize market penetration and availability on multiple types of | |||
| devices. This means that the same Trusted Component will often be | ||||
| available through multiple TAMs. | available through multiple TAMs. | |||
| When the developer of an Untrusted Application that depends on a TA | When the developer of an Untrusted Application that depends on a | |||
| publishes the Untrusted Application to an app store or other app | Trusted Component publishes the Untrusted Application to an app store | |||
| repository, the developer optionally binds the Untrusted Application | or other app repository, the developer optionally binds the Untrusted | |||
| with a manifest that identifies what TAMs can be contacted for the | Application with a manifest that identifies what TAMs can be | |||
| TA. In some situations, a TA may only be available via a single TAM | contacted for the Trusted Component. In some situations, a Trusted | |||
| - this is likely the case for enterprise applications or TA Signers | Component may only be available via a single TAM - this is likely the | |||
| serving a closed community. For broad public apps, there will likely | case for enterprise applications or Trusted Component Signers serving | |||
| be multiple TAMs in the manifest - one servicing one brand of mobile | a closed community. For broad public apps, there will likely be | |||
| device and another servicing a different manufacturer, etc. Because | multiple TAMs in the Untrusted Application's manifest - one servicing | |||
| different devices and different manufacturers trust different TAMs, | one brand of mobile device and another servicing a different | |||
| the manifest can include multiple TAMs that support the required TA. | manufacturer, etc. Because different devices and different | |||
| manufacturers trust different TAMs, the manifest can include multiple | ||||
| TAMs that support the required Trusted Component. | ||||
| When a TEEP Broker receives a request (see the RequestTA API in | When a TEEP Broker receives a request (see the RequestTA API in | |||
| Section 6.2.1) from an Untrusted Application to install a TA, a list | Section 6.2.1) from an Untrusted Application to install a Trusted | |||
| of TAM URIs may be provided for that TA, and the request is passed to | Component, a list of TAM URIs may be provided for that Trusted | |||
| the TEEP Agent. If the TEEP Agent decides that the TA needs to be | Component, and the request is passed to the TEEP Agent. If the TEEP | |||
| installed, the TEEP Agent selects a single TAM URI that is consistent | Agent decides that the Trusted Component needs to be installed, the | |||
| with the list of trusted TAMs provisioned in the TEEP Agent, invokes | TEEP Agent selects a single TAM URI that is consistent with the list | |||
| the HTTP transport for TEEP to connect to the TAM URI, and begins a | of trusted TAMs provisioned in the TEEP Agent, invokes the HTTP | |||
| TEEP protocol exchange. When the TEEP Agent subsequently receives | transport for TEEP to connect to the TAM URI, and begins a TEEP | |||
| the TA to install and the TA's manifest indicates dependencies on any | protocol exchange. When the TEEP Agent subsequently receives the | |||
| other trusted components, each dependency can include a list of TAM | Trusted Component to install and the Trusted Component's manifest | |||
| URIs for the relevant dependency. If such dependencies exist that | indicates dependencies on any other trusted components, each | |||
| are prerequisites to install the TA, then the TEEP Agent recursively | dependency can include a list of TAM URIs for the relevant | |||
| dependency. If such dependencies exist that are prerequisites to | ||||
| install the Trusted Component, then the TEEP Agent recursively | ||||
| follows the same procedure for each dependency that needs to be | follows the same procedure for each dependency that needs to be | |||
| installed or updated, including selecting a TAM URI that is | installed or updated, including selecting a TAM URI that is | |||
| consistent with the list of trusted TAMs provisioned on the device, | consistent with the list of trusted TAMs provisioned on the device, | |||
| and beginning a TEEP exchange. If multiple TAM URIs are considered | and beginning a TEEP exchange. If multiple TAM URIs are considered | |||
| trusted, only one needs to be contacted and they can be attempted in | trusted, only one needs to be contacted and they can be attempted in | |||
| some order until one responds. | some order until one responds. | |||
| Separate from the Untrusted Application's manifest, this framework | Separate from the Untrusted Application's manifest, this framework | |||
| relies on the use of the manifest format in [I-D.ietf-suit-manifest] | relies on the use of the manifest format in [I-D.ietf-suit-manifest] | |||
| for expressing how to install a TA, as well as any dependencies on | for expressing how to install a Trusted Component, as well as any | |||
| other TEE components and versions. That is, dependencies from TAs on | dependencies on other TEE components and versions. That is, | |||
| other TEE components can be expressed in a SUIT manifest, including | dependencies from Trusted Components on other Trusted Components can | |||
| dependencies on any other TAs, or trusted OS code (if any), or | be expressed in a SUIT manifest, including dependencies on any other | |||
| trusted firmware. Installation steps can also be expressed in a SUIT | TAs, or trusted OS code (if any), or trusted firmware. Installation | |||
| manifest. | steps can also be expressed in a SUIT manifest. | |||
| For example, TEEs compliant with GlobalPlatform may have a notion of | For example, TEEs compliant with GlobalPlatform may have a notion of | |||
| a "security domain" (which is a grouping of one or more TAs installed | a "security domain" (which is a grouping of one or more TAs installed | |||
| on a device, that can share information within such a group) that | on a device, that can share information within such a group) that | |||
| must be created and into which one or more TAs can then be installed. | must be created and into which one or more TAs can then be installed. | |||
| It is thus up to the SUIT manifest to express a dependency on having | It is thus up to the SUIT manifest to express a dependency on having | |||
| such a security domain existing or being created first, as | such a security domain existing or being created first, as | |||
| appropriate. | appropriate. | |||
| Updating a TA may cause compatibility issues with any Untrusted | Updating a Trusted Component may cause compatibility issues with any | |||
| Applications or other components that depend on the updated TA, just | Untrusted Applications or other components that depend on the updated | |||
| like updating the OS or a shared library could impact an Untrusted | Trusted Component, just like updating the OS or a shared library | |||
| Application. Thus, an implementation needs to take into account such | could impact an Untrusted Application. Thus, an implementation needs | |||
| issues. | to take into account such issues. | |||
| 4.4. Untrusted Apps, Trusted Apps, and Personalization Data | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data | |||
| In TEEP, there is an explicit relationship and dependence between an | In TEEP, there is an explicit relationship and dependence between an | |||
| Untrusted Application in an REE and one or more TAs in a TEE, as | Untrusted Application in an REE and one or more TAs in a TEE, as | |||
| shown in Figure 2. For most purposes, an Untrusted Application that | shown in Figure 2. For most purposes, an Untrusted Application that | |||
| uses one or more TAs in a TEE appears no different from any other | uses one or more TAs in a TEE appears no different from any other | |||
| Untrusted Application in the REE. However, the way the Untrusted | Untrusted Application in the REE. However, the way the Untrusted | |||
| Application and its corresponding TAs are packaged, delivered, and | Application and its corresponding TAs are packaged, delivered, and | |||
| installed on the device can vary. The variations depend on whether | installed on the device can vary. The variations depend on whether | |||
| the Untrusted Application and TA are bundled together or are provided | the Untrusted Application and TA are bundled together or are provided | |||
| separately, and this has implications to the management of the TAs in | separately, and this has implications to the management of the TAs in | |||
| a TEE. In addition to the Untrusted Application and TA(s), the TA(s) | a TEE. In addition to the Untrusted Application and TA(s), the TA(s) | |||
| and/or TEE may require some additional data to personalize the TA to | and/or TEE may also require additional data to personalize the TA to | |||
| the device or a user. This personalization data may depend on the | the device or a user. Implementations must support encryption of | |||
| type of TEE, a particular TEE instance, the TA, and even the user of | such Personalization Data to preserve the confidentiality of | |||
| the device; an example of personalization data might be a secret | potentially sensitive data contained within it and support integrity | |||
| symmetric key used by the TA to communicate with some service. | protection of the Personalization Data. Other than the requirement | |||
| Implementations must support encryption of personalization data to | to support confidentiality and integrity protection, the TEEP | |||
| preserve the confidentiality of potentially sensitive data contained | architecture places no limitations or requirements on the | |||
| within it and support integrity protection of the personalization | Personalization Data. | |||
| data. Other than the requirement to support confidentiality and | ||||
| integrity protection, the TEEP architecture places no limitations or | ||||
| requirements on the personalization data. | ||||
| There are three possible cases for bundling of an Untrusted | There are three possible cases for bundling of an Untrusted | |||
| Application, TA(s), and personalization data: | Application, TA(s), and Personalization Data: | |||
| 1. The Untrusted Application, TA(s), and personalization data are | 1. The Untrusted Application, TA(s), and Personalization Data are | |||
| all bundled together in a single package by a TA Signer and | all bundled together in a single package by a Trusted Component | |||
| either provided to the TEEP Broker through the TAM, or provided | Signer and either provided to the TEEP Broker through the TAM, or | |||
| separately (with encrypted personalization data), with key | provided separately (with encrypted Personalization Data), with | |||
| material needed to decrypt and install the personalization data | key material needed to decrypt and install the Personalization | |||
| and TA provided by a TAM. | Data and TA provided by a TAM. | |||
| 2. The Untrusted Application and the TA(s) are bundled together in a | 2. The Untrusted Application and the TA(s) are bundled together in a | |||
| single package, which a TAM or a publicly accessible app store | single package, which a TAM or a publicly accessible app store | |||
| maintains, and the personalization data is separately provided by | maintains, and the Personalization Data is separately provided by | |||
| the TA Signer's TAM. | the Trusted Component Signer's TAM. | |||
| 3. All components are independent. The Untrusted Application is | 3. All components are independent. The Untrusted Application is | |||
| installed 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 TA | and the TAM provides the TA and Personalization Data from the | |||
| Signer. Delivery of the TA and personalization data may be | Trusted Component Signer. Delivery of the TA and Personalization | |||
| combined or separate. | Data may be combined or separate. | |||
| The TEEP protocol treats each TA, any dependencies the TA has, and | The TEEP protocol can treat each TA, any dependencies the TA has, and | |||
| personalization data as separate components with separate | Personalization Data as separate Trusted Components with separate | |||
| installation steps that are expressed in SUIT manifests, and a SUIT | installation steps that are expressed in SUIT manifests, and a SUIT | |||
| manifest might contain or reference multiple binaries (see | manifest might contain or reference multiple binaries (see | |||
| [I-D.ietf-suit-manifest] for more details). The TEEP Agent is | [I-D.ietf-suit-manifest] for more details). The TEEP Agent is | |||
| responsible for handling any installation steps that need to be | responsible for handling any installation steps that need to be | |||
| performed inside the TEE, such as decryption of private TA binaries | performed inside the TEE, such as decryption of private TA binaries | |||
| or personalization data. | or Personalization Data. | |||
| 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. | |||
| 4.4.1. Example: Application Delivery Mechanisms in Intel SGX | 4.4.1. Example: Application Delivery Mechanisms in Intel SGX | |||
| In Intel Software Guard Extensions (SGX), the Untrusted Application | In Intel Software Guard Extensions (SGX), the Untrusted Application | |||
| and TA are typically bundled into the same package (Case 2). The TA | and TA are typically bundled into the same package (Case 2). The TA | |||
| exists in the package as a shared library (.so or .dll). The | exists in the package as a shared library (.so or .dll). The | |||
| Untrusted Application loads the TA into an SGX enclave when the | Untrusted Application loads the TA into an SGX enclave when the | |||
| Untrusted Application needs the TA. This organization makes it easy | Untrusted Application needs the TA. This organization makes it easy | |||
| to maintain compatibility between the Untrusted Application and the | to maintain compatibility between the Untrusted Application and the | |||
| TA, since they are updated together. It is entirely possible to | TA, since they are updated together. It is entirely possible to | |||
| create an Untrusted Application that loads an external TA into an SGX | create an Untrusted Application that loads an external TA into an SGX | |||
| enclave, and use that TA (Case 3). In this case, the Untrusted | enclave, and use that TA (Case 3). In this case, the Untrusted | |||
| Application would require a reference to an external file or download | Application would require a reference to an external file or download | |||
| such a file dynamically, place the contents of the file into memory, | such a file dynamically, place the contents of the file into memory, | |||
| and load that as a TA. Obviously, such file or downloaded content | and load that as a TA. Obviously, such file or downloaded content | |||
| must be properly formatted and signed for it to be accepted by the | must be properly formatted and signed for it to be accepted by the | |||
| SGX TEE. In SGX, for Case 2 and Case 3, the personalization data is | SGX TEE. In SGX, for Case 2 and Case 3, the Personalization Data is | |||
| normally loaded into the SGX enclave (the TA) after the TA has | normally loaded into the SGX enclave (the TA) after the TA has | |||
| started. Although Case 1 is possible with SGX, there are no | started. Although Case 1 is possible with SGX, there are no | |||
| instances of this known to be in use at this time, since such a | instances of this known to be in use at this time, since such a | |||
| construction would require a special installation program and SGX TA | construction would require a special installation program and SGX TA | |||
| to receive the encrypted binary, decrypt it, separate it into the | to receive the encrypted binary, decrypt it, separate it into the | |||
| three different elements, and then install all three. This | three different elements, and then install all three. This | |||
| installation is complex because the Untrusted Application decrypted | installation is complex because the Untrusted Application decrypted | |||
| inside the TEE must be passed out of the TEE to an installer in the | inside the TEE must be passed out of the TEE to an installer in the | |||
| REE which would install the Untrusted Application; this assumes that | REE which would install the Untrusted Application; this assumes that | |||
| the Untrusted Application package includes the TA code also, since | the Untrusted Application package includes the TA code also, since | |||
| otherwise there is a significant problem in getting the SGX enclave | otherwise there is a significant problem in getting the SGX enclave | |||
| code (the TA) from the TEE, through the installer, and into the | code (the TA) from the TEE, through the installer, and into the | |||
| Untrusted Application in a trusted fashion. Finally, 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 enclave-to-enclave manner) to the REE's installation app, | in an SGX enclave-to-enclave manner) to the REE's installation app, | |||
| which would pass this data to the installed Untrusted Application, | which would pass this data to the installed Untrusted Application, | |||
| which would in turn send this data to the SGX enclave (TA). This | which would in turn send this data to the SGX enclave (TA). This | |||
| complexity is due to the fact that each SGX enclave is separate and | complexity is due to the fact that each SGX enclave is separate and | |||
| does not have direct communication to other SGX enclaves. | does not have direct communication to other SGX enclaves. | |||
| 4.4.2. Example: Application Delivery Mechanisms in Arm TrustZone | 4.4.2. Example: Application Delivery Mechanisms in Arm TrustZone | |||
| In Arm TrustZone [TrustZone] for A-class devices, the Untrusted | In Arm TrustZone [TrustZone] for A-class devices, the Untrusted | |||
| Application and TA may or may not be bundled together. This differs | Application and TA may or may not be bundled together. This differs | |||
| skipping to change at page 17, line 15 ¶ | skipping to change at page 17, line 15 ¶ | |||
| well, though still more complex than Cases 2 and 3. | well, though still more complex than Cases 2 and 3. | |||
| 4.5. Entity Relations | 4.5. Entity Relations | |||
| This architecture leverages asymmetric cryptography to authenticate a | This architecture leverages asymmetric cryptography to authenticate a | |||
| device to a TAM. Additionally, a TEEP Agent in a device | device to a TAM. Additionally, a TEEP Agent in a device | |||
| authenticates a TAM. The provisioning of Trust Anchors to a device | authenticates a TAM. The provisioning of Trust Anchors to a device | |||
| may be different from one use case to the other. A Device | may be different from one use case to the other. A Device | |||
| Administrator may want to have the capability to control what TAs are | Administrator may want to have the capability to control what TAs are | |||
| allowed. A device manufacturer enables verification by one or more | allowed. A device manufacturer enables verification by one or more | |||
| TAMs and by TA Signers; it may embed a list of default Trust Anchors | TAMs and by Trusted Component Signers; it may embed a list of default | |||
| into the TEEP Agent and TEE for TAM trust verification and TA | Trust Anchors into the TEEP Agent and TEE for TAM trust verification | |||
| signature verification. | and TA signature verification. | |||
| (App Developers) (App Store) (TAM) (Device with TEE) (CAs) | (App Developers) (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: | | | | | |||
| skipping to change at page 17, line 46 ¶ | skipping to change at page 17, line 46 ¶ | |||
| Figure 3 shows an example where the same developer builds and signs | Figure 3 shows an example where the same developer builds and signs | |||
| two applications: (a) an Untrusted Application; (b) a TA that | two applications: (a) an Untrusted Application; (b) a TA that | |||
| provides some security functions to be run inside a TEE. This | provides some security functions to be run inside a TEE. This | |||
| example assumes that the developer, the TEE, and the TAM have | example assumes that the developer, the TEE, and the TAM have | |||
| previously been provisioned with certificates. | previously been provisioned with certificates. | |||
| At step 1, the developer authors the two applications. | At step 1, the developer authors the two applications. | |||
| At step 2, the developer uploads the Untrusted Application (2a) to an | At step 2, the developer uploads the Untrusted Application (2a) to an | |||
| Application Store. In this example, the developer is also the TA | Application Store. In this example, the developer is also the | |||
| Signer, and so generates a signed TA. The developer can then either | Trusted Component Signer, and so generates a signed TA. The | |||
| bundle the signed TA with the Untrusted Application, or the developer | developer can then either bundle the signed TA with the Untrusted | |||
| can provide the signed TA to a TAM that will be managing the TA in | Application, or the developer can provide a signed Trusted Component | |||
| various devices. | containing the TA to a TAM that will be managing the TA in various | |||
| devices. | ||||
| At step 3, a user will go to an Application Store to download the | At step 3, a user will go to an Application Store to download the | |||
| Untrusted Application (where the arrow indicates the direction of | Untrusted Application (where the arrow indicates the direction of | |||
| data transfer). | data transfer). | |||
| At step 4, since the Untrusted Application depends on the TA, | At step 4, since the Untrusted Application depends on the TA, | |||
| installing the Untrusted Application will trigger TA installation by | installing the Untrusted Application will trigger TA installation by | |||
| initiating communication with a TAM. The TEEP Agent will interact | initiating communication with a TAM. The TEEP Agent will interact | |||
| with TAM via a TEEP Broker that faciliates communications between a | with TAM via a TEEP Broker that faciliates communications between a | |||
| TAM and the TEEP Agent in TEE. | TAM and the TEEP Agent in TEE. | |||
| Some TA installation implementations might ask for a user's consent. | Some Trusted Component installation implementations might ask for a | |||
| In other implementations, a Device Administrator might choose what | user's consent. In other implementations, a Device Administrator | |||
| Untrusted Applications and related TAs to be installed. A user | might choose what Untrusted Applications and related Trusted | |||
| consent flow is out of scope of the TEEP architecture. | Components to be installed. A user consent flow is out of scope of | |||
| the TEEP architecture. | ||||
| 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 Trusted Component management commands to a device, | |||
| attestation and response messages created by a TEE that responds to a | and device attestation and response messages created by a TEE that | |||
| TAM's message. | responds to a 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. Consequently, | not available in TAs in today's TEE-powered devices. Consequently, | |||
| Trusted Applications generally rely on broker in the REE to provide | Trusted Applications generally rely on broker in the REE to provide | |||
| access to network functionality in the REE. A broker does not need | access to network functionality in the REE. A broker does not need | |||
| to know the actual content of messages to facilitate such access. | to know the actual content of messages to facilitate such access. | |||
| Similarly, since the TEEP Agent runs inside a TEE, the TEEP Agent | Similarly, since the TEEP Agent runs inside a TEE, the TEEP Agent | |||
| generally relies on a TEEP Broker in the REE to provide network | generally relies on a TEEP Broker in the REE to provide network | |||
| access, and relay TAM requests to the TEEP Agent and relay the | access, and relay TAM requests to the TEEP Agent and relay the | |||
| responses back to the TAM. | responses back to the TAM. | |||
| 5. Keys and Certificate Types | 5. 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 between a TAM and a TEEP Agent. | delivering end-to-end security between a TAM and a TEEP Agent. | |||
| Figure 4 summarizes the relationships between various keys and where | Figure 4 summarizes the relationships between various keys and where | |||
| they are stored. Each public/private key identifies a TA Signer, | they are stored. Each public/private key identifies a Trusted | |||
| TAM, or TEE, and gets a certificate that chains up to some trust | Component Signer, TAM, or TEE, and gets a certificate that chains up | |||
| anchor. A list of trusted certificates is then used to check a | to some trust anchor. A list of trusted certificates is then used to | |||
| presented certificate against. | check a presented certificate against. | |||
| Different CAs can be used for different types of certificates. TEEP | Different CAs can be used for different types of certificates. TEEP | |||
| messages are always signed, where the signer key is the message | messages are always signed, where the signer key is the message | |||
| originator's private key, such as that of a TAM or a TEE. In | originator's private key, such as that of a TAM or a TEE. In | |||
| addition to the keys shown in Figure 4, there may be additional keys | addition to the keys shown in Figure 4, there may be additional keys | |||
| used for attestation. Refer to the RATS Architecture | used for attestation. Refer to the RATS Architecture | |||
| [I-D.ietf-rats-architecture] for more discussion. | [I-D.ietf-rats-architecture] for more discussion. | |||
| Cardinality & Location of | Cardinality & Location of | |||
| Location of Private Key Trust Anchor | Location of Private Key Trust Anchor | |||
| Purpose Private Key Signs Store | Purpose Private Key Signs Store | |||
| ------------------ ----------- ------------- ------------- | ------------------ ----------- ------------- ------------- | |||
| Authenticating TEE 1 per TEE TEEP responses TAM | Authenticating TEE 1 per TEE TEEP responses TAM | |||
| Authenticating TAM 1 per TAM TEEP requests TEEP Agent | Authenticating TAM 1 per TAM TEEP requests TEEP Agent | |||
| Code Signing 1 per TA TA binary TEE | Code Signing 1 per Trusted TA binary TEE | |||
| Component | ||||
| Signer | Signer | |||
| Figure 4: Signature Keys | Figure 4: Signature Keys | |||
| Note that personalization data is not included in the table above. | Note that Personalization Data is not included in the table above. | |||
| The use of personalization data is dependent on how TAs are used and | The use of Personalization Data is dependent on how TAs are used and | |||
| what their security requirements are. | what their security requirements are. | |||
| TEEP requests from a TAM to a TEEP Agent are signed with the TAM | TEEP requests from a TAM to a TEEP Agent are signed with the TAM | |||
| private key (for authentication and integrity protection). | private key (for authentication and integrity protection). | |||
| Personalization data and TA binaries can be encrypted with a key that | Personalization Data and TA binaries can be encrypted with a key that | |||
| is established with a content encryption key established with the TEE | is established with a content-encryption key established with the TEE | |||
| public key (to provide confidentiality). Conversely, TEEP responses | public key (to provide confidentiality). Conversely, TEEP responses | |||
| from a TEEP Agent to a TAM can be signed with the TEE private key. | from a TEEP Agent to a TAM can be signed with the TEE private key. | |||
| The TEE key pair and certificate are thus used for authenticating the | The TEE key pair and certificate are thus used for authenticating the | |||
| TEE to a remote TAM, and for sending private data to the TEE. Often, | TEE to a remote TAM, and for sending private data to the TEE. Often, | |||
| the key pair is burned into the TEE by the TEE manufacturer and the | 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 | key pair and its certificate are valid for the expected lifetime of | |||
| the TEE. A TAM provider is responsible for configuring the TAM's | the TEE. A TAM provider is responsible for configuring the TAM's | |||
| Trust Anchor Store with the manufacturer certificates or CAs that are | Trust Anchor Store with the manufacturer certificates or CAs that are | |||
| used to sign TEE keys. This is discussed further in Section 5.3 | used to sign TEE keys. This is discussed further in Section 5.3 | |||
| below. | below. | |||
| The TAM key pair and certificate are used for authenticating a TAM to | The TAM key pair and certificate are used for authenticating a TAM to | |||
| a remote TEE, and for sending private data to the TAM. A TAM | a remote TEE, and for sending private data to the TAM. A TAM | |||
| provider is responsible for acquiring a certificate from a CA that is | provider is responsible for acquiring a certificate from a CA that is | |||
| trusted by the TEEs it manages. This is discussed further in | trusted by the TEEs it manages. This is discussed further in | |||
| Section 5.1 below. | Section 5.1 below. | |||
| The TA Signer key pair and certificate are used to sign TAs that the | The Trusted Component Signer key pair and certificate are used to | |||
| TEE will consider authorized to execute. TEEs must be configured | sign Trusted Components that the TEE will consider authorized to | |||
| with the certificates or keys that it considers authorized to sign | execute. TEEs must be configured with the certificates or keys that | |||
| TAs that it will execute. This is discussed further in Section 5.2 | it considers authorized to sign TAs that it will execute. This is | |||
| below. | discussed further in Section 5.2 below. | |||
| 5.1. Trust Anchors in a TEEP Agent | 5.1. Trust Anchors in a TEEP Agent | |||
| A TEEP Agent's Trust Anchor Store contains a list of Trust Anchors, | A TEEP Agent's Trust Anchor Store contains a list of Trust Anchors, | |||
| which are CA certificates that sign various TAM certificates. The | which are CA certificates that sign various TAM certificates. The | |||
| list is typically preloaded at manufacturing time, and can be updated | list is typically preloaded at manufacturing time, and can be updated | |||
| using the TEEP protocol if the TEE has some form of "Trust Anchor | using the TEEP protocol if the TEE has some form of "Trust Anchor | |||
| Manager TA" that has Trust Anchors in its configuration data. Thus, | Manager TA" that has Trust Anchors in its configuration data. Thus, | |||
| Trust Anchors can be updated similar to updating the configuration | Trust Anchors can be updated similar to updating the Personalization | |||
| data for any other TA. | Data for any other TA. | |||
| When Trust Anchor update is carried out, it is imperative that any | When Trust Anchor update is carried out, it is imperative that any | |||
| update must maintain integrity where only an authentic Trust Anchor | update must maintain integrity where only an authentic Trust Anchor | |||
| list from a device manufacturer or a Device Administrator is | list from a device manufacturer or a Device Administrator is | |||
| accepted. Details are out of scope of the architecture and can be | accepted. Details are out of scope of the architecture and can be | |||
| addressed in a protocol document. | addressed in a protocol document. | |||
| Before a TAM can begin operation in the marketplace to support a | 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 | device with a particular TEE, it must obtain a TAM certificate from a | |||
| CA or the raw public key of a TAM that is listed in the Trust Anchor | CA or the raw public key of a TAM that is listed in the Trust Anchor | |||
| skipping to change at page 20, line 35 ¶ | skipping to change at page 20, line 35 ¶ | |||
| 5.2. Trust Anchors in a TEE | 5.2. Trust Anchors in a TEE | |||
| A TEE determines whether TA binaries are allowed to execute by | A TEE determines whether TA binaries are allowed to execute by | |||
| verifying whether their signature can be verified using | verifying whether their signature can be verified using | |||
| certificate(s) or raw public key(s) in the TEE's Trust Anchor Store. | certificate(s) or raw public key(s) in the TEE's Trust Anchor Store. | |||
| The list is typically preloaded at manufacturing time, and can be | The list is typically preloaded at manufacturing time, and can be | |||
| updated using the TEEP protocol if the TEE has some form of "Trust | updated using the TEEP protocol if the TEE has some form of "Trust | |||
| Anchor Manager TA" that has Trust Anchors in its configuration data. | Anchor Manager TA" that has Trust Anchors in its configuration data. | |||
| Thus, Trust Anchors can be updated similar to updating the | Thus, Trust Anchors can be updated similar to updating the | |||
| configuration data for any other TA, as discussed in Section 5.1. | Personalization Data for any other TA, as discussed in Section 5.1. | |||
| 5.3. Trust Anchors in a TAM | 5.3. Trust Anchors in a TAM | |||
| The Trust Anchor Store in a TAM consists of a list of Trust Anchors, | The Trust Anchor Store in a TAM consists of a list of Trust Anchors, | |||
| which are certificates that sign various device TEE certificates. A | which are certificates that sign various device TEE certificates. A | |||
| TAM will accept a device for TA management if the TEE in the device | TAM will accept a device for Trusted Component management if the TEE | |||
| uses a TEE certificate that is chained to a certificate or raw public | in the device uses a TEE certificate that is chained to a certificate | |||
| key that the TAM trusts, is contained in an allow list, is not found | or raw public key that the TAM trusts, is contained in an allow list, | |||
| on a block list, and/or fulfills any other policy criteria. | is not found on a block list, and/or fulfills any other policy | |||
| criteria. | ||||
| 5.4. Scalability | 5.4. Scalability | |||
| This architecture uses a PKI (including self-signed certificates). | This architecture uses a PKI (including self-signed certificates). | |||
| Trust Anchors exist on the devices to enable the TEE to authenticate | Trust Anchors exist on the devices to enable the TEE to authenticate | |||
| TAMs and TA Signers, and TAMs use Trust Anchors to authenticate TEEs. | TAMs and Trusted Component Signers, and TAMs use Trust Anchors to | |||
| When a PKI is used, many intermediate CA certificates can chain to a | authenticate TEEs. When a PKI is used, many intermediate CA | |||
| root certificate, each of which can issue many certificates. This | certificates can chain to a root certificate, each of which can issue | |||
| makes the protocol highly scalable. New factories that produce TEEs | many certificates. This makes the protocol highly scalable. New | |||
| can join the ecosystem. In this case, such a factory can get an | factories that produce TEEs can join the ecosystem. In this case, | |||
| intermediate CA certificate from one of the existing roots without | such a factory can get an intermediate CA certificate from one of the | |||
| requiring that TAMs are updated with information about the new device | existing roots without requiring that TAMs are updated with | |||
| factory. Likewise, new TAMs can join the ecosystem, providing they | information about the new device factory. Likewise, new TAMs can | |||
| are issued a TAM certificate that chains to an existing root whereby | join the ecosystem, providing they are issued a TAM certificate that | |||
| existing TEEs will be allowed to be personalized by the TAM without | chains to an existing root whereby existing TEEs will be allowed to | |||
| requiring changes to the TEE itself. This enables the ecosystem to | be personalized by the TAM without requiring changes to the TEE | |||
| scale, and avoids the need for centralized databases of all TEEs | itself. This enables the ecosystem to scale, and avoids the need for | |||
| produced or all TAMs that exist or all TA Signers that exist. | centralized databases of all TEEs produced or all TAMs that exist or | |||
| all Trusted Component Signers that exist. | ||||
| 5.5. Message Security | 5.5. Message Security | |||
| Messages created by a TAM are used to deliver TA management commands | Messages created by a TAM are used to deliver Trusted Component | |||
| to a device, and device attestation and messages created by the | management commands to a device, and device attestation and messages | |||
| device TEE to respond to TAM messages. | created by the device TEE to respond to TAM messages. | |||
| These messages are signed end-to-end between a TEEP Agent and a TAM. | These messages are signed end-to-end between a TEEP Agent and a TAM. | |||
| Confidentiality is provided by encrypting sensitive payloads (such as | Confidentiality is provided by encrypting sensitive payloads (such as | |||
| personalization data and attestation evidence), rather than | Personalization Data and attestation evidence), rather than | |||
| encrypting the messages themselves. Using encrypted payloads is | encrypting the messages themselves. Using encrypted payloads is | |||
| important to ensure that only the targeted device TEE or TAM is able | important to ensure that only the targeted device TEE or TAM is able | |||
| to decrypt and view the actual content. | to decrypt and view the actual content. | |||
| 6. TEEP Broker | 6. TEEP Broker | |||
| A TEE and TAs often do not have the capability to directly | A TEE and TAs often do not have the capability to directly | |||
| communicate outside of the hosting device. For example, | communicate outside of the hosting device. For example, | |||
| GlobalPlatform [GPTEE] specifies one such architecture. This calls | GlobalPlatform [GPTEE] specifies one such architecture. This calls | |||
| for a software module in the REE world to handle network | for a software module in the REE world to handle network | |||
| communication with a TAM. | communication with a TAM. | |||
| A TEEP Broker is an application component running in the REE of the | A TEEP Broker is an application component running in the REE of the | |||
| device or an SDK that facilitates communication between a TAM and a | device or an SDK that facilitates communication between a TAM and a | |||
| TEE. It also provides interfaces for Untrusted Applications to query | TEE. It also provides interfaces for Untrusted Applications to query | |||
| and trigger TA installation that the application needs to use. | and trigger installation of Trusted Components that the application | |||
| needs to use. | ||||
| An Untrusted Application might communicate with a TEEP Broker at | An Untrusted Application might communicate with a TEEP Broker at | |||
| runtime to trigger TA installation itself, or an Untrusted | runtime to trigger Trusted Component installation itself, or an | |||
| Application might simply have a metadata file that describes the TAs | Untrusted Application might simply have a metadata file that | |||
| it depends on and the associated TAM(s) for each TA, and an REE | describes the Trusted Components it depends on and the associated | |||
| Application Installer can inspect this application metadata file and | TAM(s) for each Trusted Component, and an REE Application Installer | |||
| invoke the TEEP Broker to trigger TA installation on behalf of the | can inspect this application metadata file and invoke the TEEP Broker | |||
| Untrusted Application without requiring the Untrusted Application to | to trigger Trusted Component installation on behalf of the Untrusted | |||
| run first. | Application without requiring the Untrusted Application to run first. | |||
| 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 Trusted Component 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 (see the ProcessTeepMessage API | TAM that should be processed by a TEE (see the ProcessTeepMessage API | |||
| in Section 6.2.1). When a device has more than one TEE, one TEEP | in Section 6.2.1). When a device has more than one TEE, one TEEP | |||
| Broker per TEE could be present in the REE. A TEEP Broker interacts | Broker per TEE could be present in the REE. A TEEP Broker interacts | |||
| with a TEEP Agent inside a TEE. | with a TEEP Agent inside a TEE. | |||
| A TAM message may indicate the target TEE where a TA should be | A TAM message may indicate the target TEE where a Trusted Component | |||
| installed. A compliant TEEP protocol should include a target TEE | should be installed. A compliant TEEP protocol should include a | |||
| identifier for a TEEP Broker when multiple TEEs are present. | target TEE identifier for a TEEP Broker when multiple TEEs are | |||
| present. | ||||
| The Broker relays the response messages generated from a TEEP Agent | The Broker relays the response messages generated from a TEEP Agent | |||
| in a TEE to the TAM. | in a TEE to the TAM. | |||
| The Broker only needs to return a (transport) error message if the | The Broker only needs to return a (transport) error message if the | |||
| TEE is not reachable for some reason. Other errors are represented | TEE is not reachable for some reason. Other errors are represented | |||
| as response messages returned from the TEE which will then be passed | as response messages returned from the TEE which will then be passed | |||
| to the TAM. | to the TAM. | |||
| 6.2. TEEP Broker Implementation Consideration | 6.2. TEEP Broker Implementation Consideration | |||
| As depicted in Figure 5, there are multiple ways in which a TEEP | ||||
| Broker can be implemented, with more or fewer layers being inside the | ||||
| TEE. For example, in model A, the model with the smallest TEE | ||||
| footprint, only the TEEP implementation is inside the TEE, whereas | ||||
| the TEEP/HTTP implementation is in the TEEP Broker outside the TEE. | ||||
| Model: A B C ... | ||||
| TEE TEE TEE | ||||
| +----------------+ | | | | ||||
| | TEEP | Agent | | | Agent | ||||
| | implementation | | | | | ||||
| +----------------+ v | | | ||||
| | | | | ||||
| +----------------+ ^ | | | ||||
| | TEEP/HTTP | Broker | | | | ||||
| | implementation | | | | | ||||
| +----------------+ | v | | ||||
| | | | | ||||
| +----------------+ | ^ | | ||||
| | HTTP | | | | | ||||
| | implementation | | | | | ||||
| +----------------+ | | v | ||||
| | | | | ||||
| +----------------+ | | ^ | ||||
| | TCP or QUIC | | | | Broker | ||||
| | implementation | | | | | ||||
| +----------------+ | | | | ||||
| REE REE REE | ||||
| Figure 5: TEEP Broker Models | ||||
| In other models, additional layers are moved into the TEE, increasing | ||||
| the TEE footprint, with the Broker either containing or calling the | ||||
| topmost protocol layer outside of the TEE. An implementation is free | ||||
| to choose any of these models. | ||||
| TEEP Broker implementers should consider methods of distribution, | TEEP Broker implementers should consider methods of distribution, | |||
| scope and concurrency on devices and runtime options. Several non- | scope and concurrency on devices and runtime options. | |||
| exhaustive options are discussed below. | ||||
| 6.2.1. TEEP Broker APIs | 6.2.1. TEEP Broker APIs | |||
| The following conceptual APIs exist from a TEEP Broker to a TEEP | The following conceptual APIs exist from a TEEP Broker to a TEEP | |||
| Agent: | Agent: | |||
| 1. RequestTA: A notification from an REE application (e.g., an | 1. RequestTA: A notification from an REE application (e.g., an | |||
| installer, or an Untrusted Application) that it depends on a | installer, or an Untrusted Application) that it depends on a | |||
| given TA, which may or may not already be installed in the TEE. | given Trusted Component, which may or may not already be | |||
| installed in the TEE. | ||||
| 2. ProcessTeepMessage: A message arriving from the network, to be | 2. ProcessTeepMessage: A message arriving from the network, to be | |||
| delivered to the TEEP Agent for processing. | delivered to the TEEP Agent for processing. | |||
| 3. RequestPolicyCheck: A hint (e.g., based on a timer) that the TEEP | 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 | Agent may wish to contact the TAM for any changes, without the | |||
| device itself needing any particular change. | device itself needing any particular change. | |||
| 4. ProcessError: A notification that the TEEP Broker could not | 4. ProcessError: A notification that the TEEP Broker could not | |||
| deliver an outbound TEEP message to a TAM. | deliver an outbound TEEP message to a TAM. | |||
| skipping to change at page 23, line 35 ¶ | skipping to change at page 24, line 42 ¶ | |||
| Attestation is the process through which one entity (an Attester) | Attestation is the process through which one entity (an Attester) | |||
| presents "evidence", in the form of a series of claims, to another | presents "evidence", in the form of a series of claims, to another | |||
| entity (a Verifier), and provides sufficient proof that the claims | entity (a Verifier), and provides sufficient proof that the claims | |||
| are true. Different Verifiers may require different degrees of | are true. Different Verifiers may require different degrees of | |||
| confidence in attestation proofs and not all attestations are | confidence in attestation proofs and not all attestations are | |||
| acceptable to every verifier. A third entity (a Relying Party) can | acceptable to every verifier. A third entity (a Relying Party) can | |||
| then use "attestation results", in the form of another series of | then use "attestation results", in the form of another series of | |||
| claims, from a Verifier to make authorization decisions. (See | claims, from a Verifier to make authorization decisions. (See | |||
| [I-D.ietf-rats-architecture] for more discussion.) | [I-D.ietf-rats-architecture] for more discussion.) | |||
| In TEEP, as depicted in Figure 5, the primary purpose of an | In TEEP, as depicted in Figure 6, the primary purpose of an | |||
| attestation is to allow a device (the Attester) to prove to a TAM | attestation is to allow a device (the Attester) to prove to a TAM | |||
| (the Relying Party) that a TEE in the device has particular | (the Relying Party) that a TEE in the device has particular | |||
| properties, was built by a particular manufacturer, and/or is | properties, was built by a particular manufacturer, and/or is | |||
| executing a particular TA. Other claims are possible; TEEP does not | executing a particular TA. Other claims are possible; TEEP does not | |||
| limit the claims that may appear in evidence or attestation results, | limit the claims that may appear in evidence or attestation results, | |||
| but defines a minimal set of attestation result claims required for | but defines a minimal set of attestation result claims required for | |||
| TEEP to operate properly. Extensions to these claims are possible. | TEEP to operate properly. Extensions to these claims are possible. | |||
| Other standards or groups may define the format and semantics of | Other standards or groups may define the format and semantics of | |||
| extended claims. | extended claims. | |||
| +----------------+ | +----------------+ | |||
| | Device | +----------+ | | Device | +----------+ | |||
| | +------------+ | Evidence | TAM | Evidence +----------+ | | +------------+ | Evidence | TAM | Evidence +----------+ | |||
| | | TEE |------------->| (Relying |-------------->| Verifier | | | | TEE |------------->| (Relying |-------------->| Verifier | | |||
| | | (Attester) | | | Party) |<--------------| | | | | (Attester) | | | Party) |<--------------| | | |||
| | +------------+ | +----------+ Attestation +----------+ | | +------------+ | +----------+ Attestation +----------+ | |||
| +----------------+ Result | +----------------+ Result | |||
| Figure 5: TEEP Attestation Roles | Figure 6: 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 protocols. In | manufacturers, and TEEs support different attestation protocols. In | |||
| order for TEEP to be inclusive, it is agnostic to the format of | order for TEEP to be inclusive, it is agnostic to the format of | |||
| evidence, allowing proprietary or standardized formats to be used | evidence, allowing proprietary or standardized formats to be used | |||
| between a TEE and a verifier (which may or may not be colocated in | between a TEE and a verifier (which may or may not be colocated in | |||
| the TAM), as long as the format supports encryption of any | the TAM), as long as the format supports encryption of any | |||
| information that is considered sensitive. | information that is considered sensitive. | |||
| skipping to change at page 25, line 15 ¶ | skipping to change at page 26, line 15 ¶ | |||
| Some TAMs may require additional claims in order to properly | Some TAMs may require additional claims in order to properly | |||
| authorize a device or TEE. The specific format for these additional | authorize a device or TEE. The specific format for these additional | |||
| claims are outside the scope of this specification, but the TEEP | claims are outside the scope of this specification, but the TEEP | |||
| protocol allows these additional claims to be included in the | protocol allows these additional claims to be included in the | |||
| attestation messages. | attestation messages. | |||
| For more discussion of the attestation and appraisal process, see the | For more discussion of the attestation and appraisal process, see the | |||
| RATS Architecture [I-D.ietf-rats-architecture]. | RATS Architecture [I-D.ietf-rats-architecture]. | |||
| 7.1. Information Required in TEEP Claims | The following information is required for TEEP attestation: | |||
| - Device Identifying Information: TEEP attestations may need to | - Device Identifying Information: Attestation information may need | |||
| uniquely identify a device to the TAM. Unique device | to uniquely identify a device to the TAM. Unique device | |||
| identification allows the TAM to provide services to the device, | identification allows the TAM to provide services to the device, | |||
| such as managing installed TAs, and providing subscriptions to | such as managing installed TAs, and providing subscriptions to | |||
| services, and locating device-specific keying material to | services, and locating device-specific keying material to | |||
| communicate with or authenticate the device. In some use cases it | communicate with or authenticate the device. In some use cases it | |||
| may be sufficient to identify only the class of the device. The | may be sufficient to identify only the class of the device. The | |||
| security and privacy requirements regarding device identification | security and privacy requirements regarding device identification | |||
| will vary with the type of TA provisioned to the TEE. | will vary with the type of TA provisioned to the TEE. | |||
| - TEE Identifying Information: The type of TEE that generated this | - TEE Identifying Information: The type of TEE that generated this | |||
| attestation must be identified, including version identification | attestation must be identified. This includes version | |||
| information such as the hardware, firmware, and software version | identification information for hardware, firmware, and software | |||
| of the TEE, as applicable by the TEE type. TEE manufacturer | version of the TEE, as applicable by the TEE type. TEE | |||
| information for the TEE is required in order to disambiguate the | manufacturer information for the TEE is required in order to | |||
| same TEE type created by different manufacturers and address | disambiguate the same TEE type created by different manufacturers | |||
| considerations around manufacturer provisioning, keying and | and address considerations around manufacturer provisioning, | |||
| support for the TEE. | keying and support for the TEE. | |||
| - Freshness Proof: A claim that includes freshness information must | - Freshness Proof: A claim that includes freshness information must | |||
| be included, such as a nonce or timestamp. | be included, such as a nonce or timestamp. | |||
| - Requested Components: A list of zero or more components (TAs or | ||||
| other dependencies needed by a TEE) that are requested by some | ||||
| depending app, but which are not currently installed in the TEE. | ||||
| The claims also need to specify for each component, whether the TA | ||||
| binary is needed, or whether the TA binary is already available | ||||
| and only permission to install is needed. | ||||
| 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 cryptographic algorithm suite to another over | mandatory-to-implement cryptographic algorithm suite to another over | |||
| time. This feature is also known as crypto agility. Protocol | time. This feature is also known as crypto agility. Protocol | |||
| evolution is greatly simplified when crypto agility is considered | evolution is greatly simplified when crypto agility is considered | |||
| during the design of the protocol. In the case of the TEEP protocol | during the design of the protocol. In the case of the TEEP protocol | |||
| the diverse range of use cases, from trusted app updates for smart | the diverse range of use cases, from trusted app updates for smart | |||
| phones and tablets to updates of code on higher-end IoT devices, | phones and tablets to updates of code on higher-end IoT devices, | |||
| creates the need for different mandatory-to-implement algorithms | creates the need for different mandatory-to-implement algorithms | |||
| already from the start. | already from the start. | |||
| Crypto agility in TEEP concerns the use of symmetric as well as | Crypto agility in TEEP concerns the use of symmetric as well as | |||
| asymmetric algorithms. In the context of TEEP, symmetric algorithms | asymmetric algorithms. In the context of TEEP, symmetric algorithms | |||
| are used for encryption of TA binaries and personalization data | are used for encryption and integrity protection of TA binaries and | |||
| whereas the asymmetric algorithms are mostly used for signing | Personalization Data whereas the asymmetric algorithms are used for | |||
| messages. | signing messages and managing symmetric keys. | |||
| In addition to the use of cryptographic algorithms in TEEP, 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. Broker Trust Model | 9.1. Broker Trust Model | |||
| The architecture enables the TAM to communicate, via a TEEP Broker, | The architecture enables the TAM to communicate, via a TEEP Broker, | |||
| with the device's TEE to manage TAs. Since the TEEP Broker runs in a | with the device's TEE to manage Trusted Components. Since the TEEP | |||
| potentially vulnerable REE, the TEEP Broker could, however, be (or be | Broker runs in a potentially vulnerable REE, the TEEP Broker could, | |||
| infected by) malware. As such, all TAM messages are signed and | however, be (or be infected by) malware. As such, all TAM messages | |||
| sensitive data is encrypted such that the TEEP Broker cannot modify | are signed and sensitive data is encrypted such that the TEEP Broker | |||
| or capture sensitive data, but the TEEP Broker can still conduct DoS | cannot modify or capture sensitive data, but the TEEP Broker can | |||
| attacks as discussed in Section 9.3. | still conduct DoS attacks as discussed in Section 9.3. | |||
| A TEEP Agent in a TEE is responsible for protecting against potential | A TEEP Agent in a TEE is responsible for protecting against potential | |||
| attacks from a compromised TEEP Broker or rogue malware in the REE. | attacks from a compromised TEEP Broker or rogue malware in the REE. | |||
| A rogue TEEP Broker might send corrupted data to the TEEP Agent, or | A rogue TEEP Broker might send corrupted data to the TEEP Agent, or | |||
| launch a DoS attack by sending a flood of TEEP protocol requests. | launch a DoS attack by sending a flood of TEEP protocol requests. | |||
| The TEEP Agent validates the signature of each TEEP protocol request | The TEEP Agent validates the signature of each TEEP protocol request | |||
| and checks the signing certificate against its Trust Anchors. To | and checks the signing certificate against its Trust Anchors. To | |||
| mitigate DoS attacks, it might also add some protection scheme such | mitigate DoS attacks, it might also add some protection scheme such | |||
| as a threshold on repeated requests or number of TAs that can be | as a threshold on repeated requests or number of TAs that can be | |||
| installed. | installed. | |||
| 9.2. Data Protection | 9.2. Data Protection | |||
| It is the responsibility of the TAM to protect data on its servers. | It is the responsibility of the TAM to protect data on its servers. | |||
| Similarly, it is the responsibility of the TEE implementation to | Similarly, it is the responsibility of the TEE implementation to | |||
| provides protection of data against integrity and confidentiality | provide protection of data against integrity and confidentiality | |||
| attacks from outside the TEE. TEEs that provide isolation among TAs | attacks from outside the TEE. TEEs that provide isolation among TAs | |||
| within the TEE are likewise responsible for protecting TA data | within the TEE are likewise responsible for protecting TA data | |||
| against the REE and other TAs. For example, this can be used to | against the REE and other TAs. For example, this can be used to | |||
| protect one user's or tenant's data from compromise by another user/ | protect one user's or tenant's data from compromise by another user | |||
| tenant, even if the attacker has TAs. | or tenant, even if the attacker has TAs. | |||
| The protocol between TEEP Agents and TAMs similarly is responsible | The protocol between TEEP Agents and TAMs similarly is responsible | |||
| for securely providing integrity and confidentiality protection | for securely providing integrity and confidentiality protection | |||
| against adversaries between them. Since the transport protocol under | against adversaries between them. Since the transport protocol under | |||
| the TEEP protocol might be implemented outside a TEE, as discussed in | the TEEP protocol might be implemented outside a TEE, as discussed in | |||
| Section 6, it cannot be relied upon for sufficient protection. The | Section 6, it cannot be relied upon for sufficient protection. The | |||
| TEEP protocol provides integrity protection, but confidentiality must | TEEP protocol provides integrity protection, but confidentiality must | |||
| be provided by payload security, i.e., using encrypted TA binaries | be provided by payload encryption, i.e., using encrypted TA binaries | |||
| and encrypted attestation information. See [I-D.ietf-teep-protocol] | and encrypted attestation information. See [I-D.ietf-teep-protocol] | |||
| for more discussion. | for more discussion. | |||
| 9.3. Compromised REE | 9.3. Compromised REE | |||
| It is possible that the REE of a device is compromised. If the REE | It is possible that the REE of a device is compromised. We have | |||
| is compromised, several DoS attacks may be launched. The compromised | already seen examples of attacks on the public Internet of billions | |||
| REE may terminate the TEEP Broker such that TEEP transactions cannot | of compromised devices being used to mount DDoS attacks. A | |||
| reach the TEE, or might drop or delay messages between a TAM and a | compromised REE can be used for such an attack but it cannot tamper | |||
| TEEP Agent. However, while a DoS attack cannot be prevented, the REE | with the TEE's code or data in doing so. A compromised REE can, | |||
| cannot access anything in the TEE if it is implemented correctly. | however, launch DoS attacks against the TEE. | |||
| Some TEEs may have some watchdog scheme to observe REE state and | ||||
| mitigate DoS attacks against it but most TEEs don't have such a | The compromised REE may terminate the TEEP Broker such that TEEP | |||
| capability. | transactions cannot reach the TEE, or might drop or delay messages | |||
| between a TAM and a TEEP Agent. However, while a DoS attack cannot | ||||
| be prevented, the REE cannot access anything in the TEE if it is | ||||
| implemented correctly. Some TEEs may have some watchdog scheme to | ||||
| observe REE state and mitigate DoS attacks against it but most TEEs | ||||
| don't have such a capability. | ||||
| In some other scenarios, the compromised REE may ask a TEEP Broker to | In some other scenarios, the compromised REE may ask a TEEP Broker to | |||
| make repeated requests to a TEEP Agent in a TEE to install or | make repeated requests to a TEEP Agent in a TEE to install or | |||
| uninstall a TA. A TA installation or uninstallation request | uninstall a Trusted Component. An installation or uninstallation | |||
| constructed by the TEEP Broker or REE will be rejected by the TEEP | request constructed by the TEEP Broker or REE will be rejected by the | |||
| Agent because the request won't have the correct signature from a TAM | TEEP Agent because the request won't have the correct signature from | |||
| to pass the request signature validation. | a TAM to pass the request signature validation. | |||
| This can become a DoS attack by exhausting resources in a TEE with | This can become a DoS attack by exhausting resources in a TEE with | |||
| repeated requests. In general, a DoS attack threat exists when the | repeated requests. In general, a DoS attack threat exists when the | |||
| REE is compromised, and a DoS attack can happen to other resources. | REE is compromised, and a DoS attack can happen to other resources. | |||
| The TEEP architecture doesn't change this. | The TEEP architecture doesn't change this. | |||
| A compromised REE might also request initiating the full flow of | A compromised REE might also request initiating the full flow of | |||
| installation of TAs that are not necessary. It may also repeat a | installation of Trusted Components that are not necessary. It may | |||
| prior legitimate TA installation request. A TEEP Agent | also repeat a prior legitimate Trusted Component installation | |||
| implementation is responsible for ensuring that it can recognize and | request. A TEEP Agent implementation is responsible for ensuring | |||
| decline such repeated requests. It is also responsible for | that it can recognize and decline such repeated requests. It is also | |||
| protecting the resource usage allocated for TA management. | responsible for protecting the resource usage allocated for Trusted | |||
| Component management. | ||||
| 9.4. Compromised CA | 9.4. CA Compromise or Expiry of CA Certificate | |||
| A root CA for TAM certificates might get compromised or its | A root CA for TAM certificates might get compromised or its | |||
| certificate might expire, or a Trust Anchor other than a root CA | certificate might expire, or a Trust Anchor other than a root CA | |||
| certificate may also expire or be compromised. TEEs are responsible | certificate may also expire or be compromised. TEEs are responsible | |||
| for validating the entire TAM certificate chain, including the TAM | for validating the entire TAM certificate chain, including the TAM | |||
| certificate and any intermediate certificates up to the root | certificate and any intermediate certificates up to the root | |||
| certificate. Such validation includes checking for certificate | certificate. Such validation includes checking for certificate | |||
| revocation. | revocation. | |||
| If a TAM certificate chain validation fails, the TAM might be | If a TAM certificate chain validation fails, the TAM might be | |||
| skipping to change at page 29, line 26 ¶ | skipping to change at page 30, line 26 ¶ | |||
| would occur the next time connectivity does exist. That is, to | would occur the next time connectivity does exist. That is, to | |||
| recover, the TEEP Agent must be able to reach out to the TAM, for | recover, the TEEP Agent must be able to reach out to the TAM, for | |||
| example whenever the RequestPolicyCheck API (Section 6.2.1) is | example whenever the RequestPolicyCheck API (Section 6.2.1) is | |||
| invoked by a timer or other event. | invoked by a timer or other event. | |||
| Furthermore the policy in the Verifier in an attestation process can | Furthermore the policy in the Verifier in an attestation process can | |||
| be updated so that any evidence that includes the malicious TA would | be updated so that any evidence that includes the malicious TA would | |||
| result in an attestation failure. There is, however, a time window | result in an attestation failure. There is, however, a time window | |||
| during which a malicious TA might be able to operate successfully, | during which a malicious TA might be able to operate successfully, | |||
| which is the validity time of the previous attestation result. For | which is the validity time of the previous attestation result. For | |||
| example, if the Verifier in Figure 5 is updated to treat a previously | example, if the Verifier in Figure 6 is updated to treat a previously | |||
| valid TA as no longer trustworthy, any attestation result it | valid TA as no longer trustworthy, any attestation result it | |||
| previously generated saying that the TA is valid will continue to be | previously generated saying that the TA is valid will continue to be | |||
| used until the attestation result expires. As such, the TAM's | used until the attestation result expires. As such, the TAM's | |||
| Verifier should take into account the acceptable time window when | Verifier should take into account the acceptable time window when | |||
| generating attestation results. See [I-D.ietf-rats-architecture] for | generating attestation results. See [I-D.ietf-rats-architecture] for | |||
| further discussion. | further discussion. | |||
| 9.7. Certificate Expiry and Renewal | 9.7. Certificate Expiry and Renewal | |||
| TEE device certificates are expected to be long lived, longer than | TEE device certificates are expected to be long lived, longer than | |||
| skipping to change at page 30, line 8 ¶ | skipping to change at page 31, line 8 ¶ | |||
| it is imperative that OEMs or device providers plan for support of | it is imperative that OEMs or device providers plan for support of | |||
| Trust Anchor update in their shipped devices. | Trust Anchor update in their shipped devices. | |||
| For those cases where TEE devices are given certificates for which no | For those cases where TEE devices are given certificates for which no | |||
| good expiration date can be assigned the recommendations in | good expiration date can be assigned the recommendations in | |||
| Section 4.1.2.5 of [RFC5280] are applicable. | Section 4.1.2.5 of [RFC5280] are applicable. | |||
| 9.8. Keeping Secrets from the TAM | 9.8. Keeping Secrets from the TAM | |||
| In some scenarios, it is desirable to protect the TA binary or | In some scenarios, it is desirable to protect the TA binary or | |||
| configuration from being disclosed to the TAM that distributes them. | Personalization Data from being disclosed to the TAM that distributes | |||
| In such a scenario, the files can be encrypted end-to-end between a | them. In such a scenario, the files can be encrypted end-to-end | |||
| TA Signer and a TEE. However, there must be some means of | between a Trusted Component Signer and a TEE. However, there must be | |||
| provisioning the decryption key into the TEE and/or some means of the | some means of provisioning the decryption key into the TEE and/or | |||
| TA Signer securely learning a public key of the TEE that it can use | some means of the Trusted Component Signer securely learning a public | |||
| to encrypt. One way to do this is for the TA Signer to run its own | key of the TEE that it can use to encrypt. One way to do this is for | |||
| TAM so that it can distribute the decryption key via the TEEP | the Trusted Component Signer to run its own TAM so that it can | |||
| protocol, and the key file can be a dependency in the manifest of the | distribute the decryption key via the TEEP protocol, and the key file | |||
| encrypted TA. Thus, the TEEP Agent would look at the TA manifest, | can be a dependency in the manifest of the encrypted TA. Thus, the | |||
| determine there is a dependency with a TAM URI of the TA Signer's | TEEP Agent would look at the Trusted Component manifest, determine | |||
| TAM. The Agent would then install the dependency, and then continue | there is a dependency with a TAM URI of the Trusted Component | |||
| with the TA installation steps, including decrypting the TA binary | Signer's TAM. The Agent would then install the dependency, and then | |||
| with the relevant key. | continue with the Trusted Component 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. Contributors | 11. Contributors | |||
| - Andrew Atyeo, Intercede (andrew.atyeo@intercede.com) | - Andrew Atyeo, Intercede (andrew.atyeo@intercede.com) | |||
| - Liu Dapeng, Alibaba Group (maxpassion@gmail.com) | - Liu Dapeng, Alibaba Group (maxpassion@gmail.com) | |||
| skipping to change at page 30, line 49 ¶ | skipping to change at page 31, line 50 ¶ | |||
| 13. Informative References | 13. Informative References | |||
| [GPTEE] GlobalPlatform, "GlobalPlatform Device Technology: TEE | [GPTEE] GlobalPlatform, "GlobalPlatform Device Technology: TEE | |||
| System Architecture, v1.1", GlobalPlatform GPD_SPE_009, | System Architecture, v1.1", GlobalPlatform 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-rats-architecture] | [I-D.ietf-rats-architecture] | |||
| Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | |||
| W. Pan, "Remote Attestation Procedures Architecture", | W. Pan, "Remote Attestation Procedures Architecture", | |||
| draft-ietf-rats-architecture-05 (work in progress), July | draft-ietf-rats-architecture-07 (work in progress), | |||
| 2020. | October 2020. | |||
| [I-D.ietf-suit-manifest] | [I-D.ietf-suit-manifest] | |||
| Moran, B., Tschofenig, H., Birkholz, H., and K. Zandberg, | Moran, B., Tschofenig, H., Birkholz, H., and K. Zandberg, | |||
| "A Concise Binary Object Representation (CBOR)-based | "A Concise Binary Object Representation (CBOR)-based | |||
| Serialization Format for the Software Updates for Internet | Serialization Format for the Software Updates for Internet | |||
| of Things (SUIT) Manifest", draft-ietf-suit-manifest-08 | of Things (SUIT) Manifest", draft-ietf-suit-manifest-09 | |||
| (work in progress), July 2020. | (work in progress), July 2020. | |||
| [I-D.ietf-teep-otrp-over-http] | [I-D.ietf-teep-otrp-over-http] | |||
| Thaler, D., "HTTP Transport for Trusted Execution | Thaler, D., "HTTP Transport for Trusted Execution | |||
| Environment Provisioning: Agent-to- TAM Communication", | Environment Provisioning: Agent-to- TAM Communication", | |||
| draft-ietf-teep-otrp-over-http-06 (work in progress), | draft-ietf-teep-otrp-over-http-08 (work in progress), | |||
| April 2020. | October 2020. | |||
| [I-D.ietf-teep-protocol] | [I-D.ietf-teep-protocol] | |||
| Tschofenig, H., Pei, M., Wheeler, D., Thaler, D., and A. | Tschofenig, H., Pei, M., Wheeler, D., Thaler, D., and A. | |||
| Tsukamoto, "Trusted Execution Environment Provisioning | Tsukamoto, "Trusted Execution Environment Provisioning | |||
| (TEEP) Protocol", draft-ietf-teep-protocol-02 (work in | (TEEP) Protocol", draft-ietf-teep-protocol-03 (work in | |||
| progress), April 2020. | progress), July 2020. | |||
| [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | |||
| FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | |||
| <https://www.rfc-editor.org/info/rfc4949>. | <https://www.rfc-editor.org/info/rfc4949>. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
| <https://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
| End of changes. 81 change blocks. | ||||
| 304 lines changed or deleted | 371 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/ | ||||