rfc9397.original | rfc9397.txt | |||
---|---|---|---|---|
TEEP M. Pei | Internet Engineering Task Force (IETF) M. Pei | |||
Internet-Draft Broadcom | Request for Comments: 9397 Broadcom | |||
Intended status: Informational H. Tschofenig | Category: Informational H. Tschofenig | |||
Expires: 27 April 2023 Arm Limited | ISSN: 2070-1721 | |||
D. Thaler | D. Thaler | |||
Microsoft | Microsoft | |||
D. Wheeler | D. Wheeler | |||
Amazon | Amazon | |||
24 October 2022 | July 2023 | |||
Trusted Execution Environment Provisioning (TEEP) Architecture | Trusted Execution Environment Provisioning (TEEP) Architecture | |||
draft-ietf-teep-architecture-19 | ||||
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 | the following: any code within the environment cannot be tampered | |||
that any data used by such code cannot be read or tampered with by | with, and any data used by such code cannot be read or tampered with | |||
any code outside that environment. This architecture document | by any code outside the environment. This architecture document | |||
motivates the design and standardization of a protocol for managing | discusses the motivation for designing and standardizing a protocol | |||
the lifecycle of trusted applications running inside such a TEE. | for managing the lifecycle of Trusted Applications running inside | |||
such a TEE. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 27 April 2023. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9397. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | ||||
Please review these documents carefully, as they describe your rights | carefully, as they describe your rights and restrictions with respect | |||
and restrictions with respect to this document. Code Components | to this document. Code Components extracted from this document must | |||
extracted from this document must include Revised BSD License text as | include Revised BSD License text as described in Section 4.e of the | |||
described in Section 4.e of the Trust Legal Provisions and are | Trust Legal Provisions and are provided without warranty as described | |||
provided without warranty as described in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology | |||
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Use Cases | |||
3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.1. Payment | |||
3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Authentication | |||
3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 8 | 3.3. Internet of Things | |||
3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 9 | 3.4. Confidential Cloud Computing | |||
4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4. Architecture | |||
4.1. System Components . . . . . . . . . . . . . . . . . . . . 9 | 4.1. System Components | |||
4.2. Multiple TEEs in a Device . . . . . . . . . . . . . . . . 12 | 4.2. Multiple TEEs in a Device | |||
4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 14 | 4.3. Multiple TAMs and Relationship to TAs | |||
4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 16 | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data | |||
4.4.1. Example: Application Delivery Mechanisms in Intel | 4.4.1. Example: Application Delivery Mechanisms in Intel SGX | |||
SGX . . . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
4.4.2. Example: Application Delivery Mechanisms in Arm | 4.4.2. Example: Application Delivery Mechanisms in Arm | |||
TrustZone . . . . . . . . . . . . . . . . . . . . . . 18 | TrustZone | |||
4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 18 | 4.5. Entity Relations | |||
5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 20 | 5. Keys and Certificate Types | |||
5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 22 | 5.1. Trust Anchors in a TEEP Agent | |||
5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 22 | 5.2. Trust Anchors in a TEE | |||
5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 22 | 5.3. Trust Anchors in a TAM | |||
5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 23 | 5.4. Scalability | |||
5.5. Message Security . . . . . . . . . . . . . . . . . . . . 23 | 5.5. Message Security | |||
6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 6. TEEP Broker | |||
6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 24 | 6.1. Role of the TEEP Broker | |||
6.2. TEEP Broker Implementation Consideration . . . . . . . . 24 | 6.2. TEEP Broker Implementation Consideration | |||
6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 25 | 6.2.1. TEEP Broker APIs | |||
6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 26 | 6.2.2. TEEP Broker Distribution | |||
7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 26 | 7. Attestation | |||
8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 29 | 8. Algorithm and Attestation Agility | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | 9. Security Considerations | |||
9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 29 | 9.1. Broker Trust Model | |||
9.2. Data Protection . . . . . . . . . . . . . . . . . . . . . 30 | 9.2. Data Protection | |||
9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 31 | 9.3. Compromised REE | |||
9.4. CA Compromise or Expiry of CA Certificate . . . . . . . . 32 | 9.4. CA Compromise or Expiry of CA Certificate | |||
9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 32 | 9.5. Compromised TAM | |||
9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 33 | 9.6. Malicious TA Removal | |||
9.7. TEE Certificate Expiry and Renewal . . . . . . . . . . . 34 | 9.7. TEE Certificate Expiry and Renewal | |||
9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 34 | 9.8. Keeping Secrets from the TAM | |||
9.9. REE Privacy . . . . . . . . . . . . . . . . . . . . . . . 35 | 9.9. REE Privacy | |||
10. IANA Considerations | ||||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | 11. Informative References | |||
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 35 | Acknowledgments | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | Contributors | |||
13. Informative References . . . . . . . . . . . . . . . . . . . 35 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
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 unintended | |||
unintended interactions among those features and applications. The | interactions among those features and applications. The risk of | |||
risk of attacks on a system increases as the sensitivity of the | attacks on a system increases as the sensitivity of the applications | |||
applications or data on the device increases. As an example, | or data on the device increases. As an example, exposure of emails | |||
exposure of emails from a mail client is likely to be of concern to | from a mail client is likely to be of concern to its owner, but a | |||
its owner, but a compromise of a banking application raises even | compromise of a banking application raises even greater concerns. | |||
greater concerns. | ||||
The Trusted Execution Environment (TEE) concept is designed to let | The Trusted Execution Environment (TEE) concept is designed to let | |||
applications execute in a protected environment that enforces that | applications execute in a protected 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 | |||
any data used by such code cannot be read or tampered with by any | data used by such code cannot be read or tampered with by any code | |||
code outside that environment, including by a commodity operating | outside that environment, including by a commodity operating system | |||
system (if present). In a system with multiple TEEs, this also means | (if present). In a system with multiple TEEs, this also means that | |||
that code in one TEE cannot be read or tampered with by code in | code in one TEE cannot be read or tampered with by code in another | |||
another TEE. | TEE. | |||
This separation reduces the possibility of a successful attack on | This separation reduces the possibility of a successful attack on | |||
application components and the data contained inside the TEE. | application components and the data contained inside the TEE. | |||
Typically, application components are chosen to execute inside a TEE | Typically, application components are chosen to execute inside a TEE | |||
because those application components perform security sensitive | because those application components perform security-sensitive | |||
operations or operate on sensitive data. An application component | operations or operate on sensitive data. An application component | |||
running inside a TEE is commonly referred to (e.g., in [GPTEE], | running inside a TEE is commonly referred to (e.g., in [GPTEE] and | |||
[OP-TEE], etc.) as a Trusted Application (TA), while an application | [OP-TEE]) as a Trusted Application (TA), while an application running | |||
running outside any TEE, i.e., in the Rich Execution Environment | outside any TEE, i.e., in the Rich Execution Environment (REE), is | |||
(REE), is referred to as an Untrusted Application (UA). In the | referred to as an Untrusted Application (UA). In the example of a | |||
example of a banking application, code that relates to the | banking application, code that relates to the authentication protocol | |||
authentication protocol could reside in a TA while the application | could reside in a TA while the application logic including HTTP | |||
logic including HTTP protocol parsing could be contained in the | protocol parsing could be contained in the Untrusted Application. In | |||
Untrusted Application. In addition, processing of credit card | addition, processing of credit card numbers or account balances could | |||
numbers or account balances could be done in a TA as it is sensitive | be done in a TA as it is sensitive data. The precise code split is | |||
data. The precise code split is ultimately a decision of the | ultimately a decision of the developer based on the assets the person | |||
developer based on the assets the person wants to protect according | wants to protect according to the threat model. | |||
to the threat model. | ||||
TEEs are typically used in cases where software or data assets need | TEEs are typically used in cases where software or data assets need | |||
to be protected from unauthorized access where threat actors may have | to be protected from unauthorized access where threat actors may have | |||
physical or administrative access to a device. This situation arises | physical or administrative access to a device. This situation | |||
for example in gaming consoles where anti-cheat protection is a | arises, for example, in gaming consoles where anti-cheat protection | |||
concern, devices such as ATMs or IoT devices placed in locations | is a concern, devices such as ATMs or IoT devices placed in locations | |||
where attackers might have physical access, cell phones or other | where attackers might have physical access, cell phones or other | |||
devices used for mobile payments, and hosted cloud environments. | devices used for mobile payments, and hosted cloud environments. | |||
Such environments can be thought of as hybrid devices where one user | Such environments can be thought of as hybrid devices where one user | |||
or administrator controls the REE and a different (remote) user or | or administrator controls the REE and a different (remote) user or | |||
administrator controls a TEE in the same physical device. | administrator controls a TEE in the same physical device. In some | |||
It may also be the case in some constrained devices that there is no | constrained devices, it may also be the case that there is no REE | |||
REE (only a TEE) and there may be no local "user" per se, only a | (only a TEE) and no local "user" per se, but only a remote TEE | |||
remote TEE administrator. For further discussion of such | administrator. For further discussion of such confidential computing | |||
confidential computing use cases and threat model, see [CC-Overview] | use cases and threat model, see [CC-Overview] and | |||
and [CC-Technical-Analysis]. | [CC-Technical-Analysis]. | |||
TEEs use hardware enforcement combined with software protection to | TEEs use hardware enforcement combined with software protection to | |||
secure TAs and their data. TEEs typically offer a more limited set | secure TAs and their data. TEEs typically offer a more limited set | |||
of services to TAs than is normally available to Untrusted | of services to TAs than what is normally available to Untrusted | |||
Applications. | Applications. | |||
Not all TEEs are the same, however, and different vendors may have | However, not all TEEs are the same. Different vendors may have | |||
different implementations of TEEs with different security properties, | different implementations of TEEs with different security properties, | |||
different features, and different control mechanisms to operate on | features, and control mechanisms to operate on TAs. Some vendors may | |||
TAs. Some vendors may themselves market multiple different TEEs with | market multiple different TEEs themselves, with different properties | |||
different properties attuned to different markets. A device vendor | attuned to different markets. A device vendor may integrate one or | |||
may integrate one or more TEEs into their devices depending on market | more TEEs into their devices depending on market needs. | |||
needs. | ||||
To simplify the life of TA developers interacting with TAs in a TEE, | To simplify the life of TA developers interacting with TAs in a TEE, | |||
an interoperable protocol for managing TAs running in different TEEs | an interoperable protocol for managing TAs running in different TEEs | |||
of various devices is needed. This software update protocol needs to | of various devices is needed. This software update protocol needs to | |||
make sure that compatible trusted and untrusted components (if any) | make sure that compatible trusted and Untrusted Components (if any) | |||
of an application are installed on the correct device. In this TEE | of an application are installed on the correct device. In this TEE | |||
ecosystem, there often arises a need for an external trusted party to | ecosystem, the need often arises for an external trusted party to | |||
verify the identity, claims, and permissions of TA developers, | verify the identity, claims, and permissions of TA developers, | |||
devices, and their TEEs. This external trusted party is the Trusted | devices, and their TEEs. This external trusted party is the Trusted | |||
Application Manager (TAM). | Application Manager (TAM). | |||
The Trusted Execution Environment Provisioning (TEEP) protocol | The Trusted Execution Environment Provisioning (TEEP) protocol | |||
addresses the following problems: | addresses the following problems: | |||
* An installer of an Untrusted Application that depends on a given | * An installer of an Untrusted Application that depends on a given | |||
TA wants to request installation of that TA in the device's TEE so | TA wants to request installation of that TA in the device's TEE so | |||
that the installation of Untrusted Application can complete, but | that the installation of the Untrusted Application can complete, | |||
the TEE needs to verify whether such a TA is actually authorized | but the TEE needs to verify whether such a TA is actually | |||
to run in the TEE and consume potentially scarce TEE resources. | authorized to run in the TEE and consume potentially scarce TEE | |||
resources. | ||||
* A TA developer providing a TA whose code itself is considered | * A TA developer providing a TA whose code itself is considered | |||
confidential wants to determine security-relevant information of a | confidential wants to determine security-relevant information of a | |||
device before allowing their TA to be provisioned to the TEE | device before allowing their TA to be provisioned to the TEE | |||
within the device. An example is the verification of the type of | within the device. An example is the verification of the type of | |||
TEE included in a device and that it is capable of providing the | TEE included in a device and its capability of providing the | |||
security protections required. | security protections required. | |||
* A TEE in a device needs to determine whether an entity that wants | * A TEE in a device needs to determine whether an entity that wants | |||
to manage a TA in the device is authorized to manage TAs in the | to manage a TA in the device is authorized to manage TAs in the | |||
TEE, and what TAs the entity is permitted to manage. | TEE and what TAs the entity is permitted to manage. | |||
* A Device Administrator wants to determine if a TA exists (is | * A Device Administrator wants to determine if a TA exists on a | |||
installed) on a device (in the TEE), and if not, install the TA in | device (i.e., is installed in the TEE) and, if not, install the TA | |||
the TEE. | in the TEE. | |||
* A Device Administrator wants to check whether a TA in a device's | * A Device Administrator wants to check whether a TA in a device's | |||
TEE is the most up-to-date version, and if not, update the TA in | TEE is the most up-to-date version, and if not, update the TA in | |||
the TEE. | the TEE. | |||
* A Device Administrator wants to remove a TA from a device's TEE if | * A Device Administrator wants to remove a TA from a device's TEE if | |||
the TA developer is no longer maintaining that TA, when the TA has | the TA developer is no longer maintaining that TA, when the TA has | |||
been revoked, or is not used for other reasons anymore (e.g., due | been revoked, or if the TA is not used for other reasons (e.g., | |||
to an expired subscription). | due to an expired subscription). | |||
For TEEs that simply verify and load signed TA's from an untrusted | For TEEs that simply verify and load signed TAs from an untrusted | |||
filesystem, classic application distribution protocols can be used | filesystem, classic application distribution protocols can be used | |||
without modification. The problems in the bullets above, on the | without modification. On the other hand, the problems listed in the | |||
other hand, require a new protocol, i.e., the TEEP protocol. The | bullets above require a new protocol -- the TEEP protocol. The TEEP | |||
TEEP protocol is a solution for TEEs that can install and enumerate | protocol is a solution for TEEs that can install and enumerate TAs in | |||
TAs in a TEE-secured location where another domain-specific protocol | a TEE-secured location where another domain-specific protocol | |||
standard (e.g., [GSMA], [OTRP]) that meets the needs is not already | standard (e.g., [GSMA] and [OTRP]) that meets the needs is not | |||
in use. | already in use. | |||
2. Terminology | 2. Terminology | |||
The following terms are used: | The following terms are used: | |||
* App Store: An online location from which Untrusted Applications | App Store: An online location from which Untrusted Applications can | |||
can be downloaded. | be downloaded. | |||
* Device: A physical piece of hardware that hosts one or more TEEs, | Device: A physical piece of hardware that hosts one or more TEEs, | |||
often along with an REE. | often along with an REE. | |||
* Device Administrator: An entity that is responsible for | Device Administrator: An entity that is responsible for | |||
administration of a device, which could be the Device Owner. A | administration of a device, which could be the Device Owner. A | |||
Device Administrator has privileges on the device to install and | Device Administrator has privileges on the device to install and | |||
remove Untrusted Applications and TAs, approve or reject Trust | remove Untrusted Applications and TAs, approve or reject Trust | |||
Anchors, and approve or reject TA developers, among possibly other | Anchors, and approve or reject TA developers, among other possible | |||
privileges on the device. A Device Administrator can manage the | privileges on the device. A Device Administrator can manage the | |||
list of allowed TAMs by modifying the list of Trust Anchors on the | list of allowed TAMs by modifying the list of Trust Anchors on the | |||
device. Although a Device Administrator may have privileges and | device. Although a Device Administrator may have privileges and | |||
device-specific controls to locally administer a device, the | device-specific controls to locally administer a device, the | |||
Device Administrator may choose to remotely administer a device | Device Administrator may choose to remotely administer a device | |||
through a TAM. | through a TAM. | |||
* Device Owner: A device is always owned by someone. In some cases, | Device Owner: A device is always owned by someone. In some cases, | |||
it is common for the (primary) device user to also own the device, | it is common for the (primary) device user to also own the device, | |||
making the device user/owner also the Device Administrator. In | making the device user/owner also the Device Administrator. In | |||
enterprise environments it is more common for the enterprise to | enterprise environments, it is more common for the enterprise to | |||
own the device, and for any device user to have no or limited | own the device and for any device user to have no or limited | |||
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 | |||
a single device user. Some devices have a primary device user | single device user. Some devices have a primary device user with | |||
with other human beings as secondary device users (e.g., a parent | other human beings as secondary device users (e.g., a 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; hence, they have no device user. | |||
* Personalization Data: A set of configuration data that is specific | Personalization Data: A set of configuration data that is specific | |||
to the device or user. The Personalization Data may depend on the | 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 | type of TEE, a particular TEE instance, the TA, and even the user | |||
of the device; an example of Personalization Data might be a | of the device. An example of Personalization Data might be a | |||
secret symmetric key used by a TA to communicate with some | secret symmetric key used by a TA to communicate with some | |||
service. | service. | |||
* Raw Public Key: A raw public key consists of only the algorithm | Raw Public Key: A raw public key consists of only the algorithm | |||
identifier (type) of the key and the cryptographic public key | identifier (type) of the key and the cryptographic public key | |||
material, such as the SubjectPublicKeyInfo structure of a PKIX | material, such as the SubjectPublicKeyInfo structure of a PKIX | |||
certificate [RFC5280]. Other serialization formats that do not | certificate [RFC5280]. Other serialization formats that do not | |||
rely on ASN.1 may also be used. | 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 the TEE(s) managed by the TEEP | and hypervisors; it is outside of the TEE(s) managed by the TEEP | |||
protocol. This environment and applications running on it are | protocol. This environment and applications running on it are | |||
considered untrusted (or more precisely, less trusted than a TEE). | considered untrusted (or more precisely, less trusted than a TEE). | |||
* Trust Anchor: As defined in [RFC6024] and [RFC9019], "A trust | Trust Anchor: As defined in [RFC6024] and [RFC9019], a Trust Anchor | |||
anchor represents an authoritative entity via a public key and | "represents an authoritative entity via a public key and | |||
associated data. The public key is used to verify digital | associated data. The public key is used to verify digital | |||
signatures, and the associated data is used to constrain the types | signatures, and the associated data is used to constrain the types | |||
of information for which the trust anchor is authoritative." The | of information for which the trust anchor is authoritative." The | |||
Trust Anchor may be a certificate, a raw public key or other | Trust Anchor may be a certificate, a raw public key, or other | |||
structure, as appropriate. It can be a non-root certificate when | structure, as appropriate. It can be a non-root certificate when | |||
it is a certificate. | it is a certificate. | |||
* Trust Anchor Store: As defined in [RFC6024], "A trust anchor store | Trust Anchor Store: As defined in [RFC6024], a "trust anchor store | |||
is a set of one or more trust anchors stored in a device... A | is a set of one or more trust anchors stored in a device... A | |||
device may have more than one trust anchor store, each of which | device may have more than one trust anchor store, each of which | |||
may be used by one or more applications." As noted in [RFC9019], | may be used by one or more applications." As noted in [RFC9019], | |||
a Trust Anchor Store must resist modification against unauthorized | "a trust anchor store must resist modification against | |||
insertion, deletion, and modification. | unauthorized insertion, deletion, and 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 Manager (TAM): An entity that manages Trusted | Trusted Application Manager (TAM): An entity that manages Trusted | |||
Applications and other Trusted Components running in TEEs of | Applications and other Trusted Components running in TEEs of | |||
various devices. | various devices. | |||
* Trusted Component: A set of code and/or data in a TEE managed as a | Trusted Component: A set of code and/or data in a TEE managed as a | |||
unit by a Trusted Application Manager. Trusted Applications and | unit by a Trusted Application Manager. Trusted Applications and | |||
Personalization Data are thus managed by being included in Trusted | Personalization Data are thus managed by being included in Trusted | |||
Components. Trusted OS code or trusted firmware can also be | Components. Trusted OS code or trusted firmware can also be | |||
expressed as Trusted Components that a Trusted Component depends | expressed as Trusted Components that a Trusted Component depends | |||
on. | on. | |||
* Trusted Component Developer: An entity that develops one or more | Trusted Component Developer: An entity that develops one or more | |||
Trusted Components. | Trusted Components. | |||
* Trusted Component Signer: An entity that signs a Trusted Component | Trusted Component Signer: An entity that signs a Trusted Component | |||
with a key that a TEE will trust. The signer might or might not | with a key that a TEE will trust. The signer might or might not | |||
be the same entity as the Trusted Component Developer. For | be the same entity as the Trusted Component Developer. For | |||
example, a Trusted Component might be signed (or re-signed) by a | example, a Trusted Component might be signed (or re-signed) by a | |||
Device Administrator if the TEE will only trust the Device | Device Administrator if the TEE will only trust the Device | |||
Administrator. A Trusted Component might also be encrypted, if | Administrator. A Trusted Component might also be encrypted if the | |||
the code is considered confidential, for example, when a developer | code is considered confidential, for example, when a developer | |||
wants to provide a TA without revealing its code to others. | wants to provide a TA without revealing its code to others. | |||
* 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 unique device | |||
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 | |||
TA. | TA. | |||
* Untrusted Application (UA): An application running in an REE. An | Untrusted Application (UA): An application running in an REE. An | |||
Untrusted Application might depend on one or more TAs. | Untrusted Application might depend on one or more TAs. | |||
3. Use Cases | 3. Use Cases | |||
3.1. Payment | 3.1. Payment | |||
A payment application in a mobile device requires high security and | A payment application in a mobile device requires high security and | |||
trust in the hosting device. Payments initiated from a mobile device | trust in the hosting device. Payments initiated from a mobile device | |||
can use a Trusted Application to provide strong identification and | can use a Trusted Application to provide strong identification and | |||
proof of transaction. | proof of transaction. | |||
For a mobile payment application, some biometric identification | For a mobile payment application, some biometric identification | |||
information could also be stored in a TEE. The mobile payment | information could also be stored in a TEE. The mobile payment | |||
application can use such information for unlocking the device and for | application can use such information for unlocking the device and | |||
local identification of the user. | local identification of the user. | |||
A trusted user interface (UI) may be used in a mobile device or | A trusted user interface (UI) may be used in a mobile device or | |||
point-of-sale device to prevent malicious software from stealing | point-of-sale device to prevent malicious software from stealing | |||
sensitive user input data. Such an implementation often relies on a | sensitive user input data. Such an implementation often relies on a | |||
TEE for providing access to peripherals, such as PIN input or a | TEE for providing access to peripherals, such as PIN input or a | |||
trusted display, so that the REE cannot observe or tamper with the | trusted display, so that the REE cannot observe or tamper with the | |||
user input or output. | user input or output. | |||
3.2. Authentication | 3.2. Authentication | |||
For better security of authentication, a device may store its keys | For better security of authentication, a device may store its keys | |||
and cryptographic libraries inside a TEE limiting access to | and cryptographic libraries inside a TEE, limiting access to | |||
cryptographic functions via a well-defined interface and thereby | cryptographic functions via a well-defined interface and thereby | |||
reducing access to keying material. | reducing access to keying material. | |||
3.3. Internet of Things | 3.3. Internet of Things | |||
Weak security in Internet of Things (IoT) devices has been posing | Weak security in Internet of Things (IoT) devices has been posing | |||
threats to critical infrastructure, i.e., assets that are essential | threats to critical infrastructure, i.e., assets that are essential | |||
for the functioning of a society and economy. It is desirable that | for the functioning of a society and economy. It is desirable that | |||
IoT devices can prevent malware from manipulating actuators (e.g., | IoT devices can prevent malware from manipulating actuators (e.g., | |||
unlocking a door), or stealing or modifying sensitive data, such as | unlocking a door) or stealing or modifying sensitive data, such as | |||
authentication credentials in the device. A TEE can be one of the | authentication credentials in the device. A TEE can be one of the | |||
best ways to implement such IoT security functions. For example, | best ways to implement such IoT security functions. For example, | |||
[GPTEE] uses the term "trusted peripheral" to refer to such things | [GPTEE] uses the term "trusted peripheral" to refer to such things | |||
being accessible only from the TEE, and this concept is used, and | being accessible only from the TEE, and this concept is used in some | |||
this concept is used in some GlobalPlatform-compliant devices today. | GlobalPlatform-compliant devices today. | |||
3.4. Confidential Cloud Computing | 3.4. Confidential Cloud Computing | |||
A tenant can store sensitive data, such as customer details or credit | A tenant can store sensitive data, such as customer details or credit | |||
card numbers, in a TEE in a cloud computing server such that only the | card numbers, in a TEE in a cloud computing server such that only the | |||
tenant can access the data, preventing the cloud hosting provider | tenant can access the data, which prevents the cloud hosting provider | |||
from accessing the data. A tenant can run TAs inside a server TEE | from accessing the data. A tenant can run TAs inside a server TEE | |||
for secure operation and enhanced data security. This provides | for secure operation and enhanced data security. This provides | |||
benefits not only to tenants with better data security but also to | benefits not only to tenants with better data security but also to | |||
cloud hosting providers for reduced liability and increased cloud | cloud hosting providers for reduced liability and increased cloud | |||
adoption. | adoption. | |||
4. Architecture | 4. Architecture | |||
4.1. System Components | 4.1. System Components | |||
skipping to change at page 9, line 46 ¶ | skipping to change at line 418 ¶ | |||
| +-->|TA-1| |TA-2| | +-------+ | | | +-------+ | | | +-->|TA-1| |TA-2| | +-------+ | | | +-------+ | | |||
| | | | | | |<---------| UA-2 |--+ | | | | | | | | | | |<---------| UA-2 |--+ | | | | |||
| | | +----+ +----+ | +-------+ | | | Device | | | | +----+ +----+ | +-------+ | | | Device | |||
| | +---------------+ | UA-1 | | | | Administrator | | | +---------------+ | UA-1 | | | | Administrator | |||
| | | | | | | | | | | | | | | | |||
| +--------------------| |-----+ | | | | +--------------------| |-----+ | | | |||
| | |----------+ | | | | |----------+ | | |||
| +-------+ | | | +-------+ | | |||
+---------------------------------------------+ | +---------------------------------------------+ | |||
Figure 1: Notional Architecture of TEEP | Figure 1: Notional Architecture of TEEP | |||
* Trusted Component Signers and Device Administrators utilize the | Trusted Component Signer and Device Administrator: Trusted Component | |||
services of a TAM to manage TAs on devices. Trusted Component | Signers and Device Administrators utilize the services of a TAM to | |||
Signers do not directly interact with devices. Device | manage TAs on devices. Trusted Component Signers do not directly | |||
Administrators may elect to use a TAM for remote administration of | interact with devices. Device Administrators may elect to use a | |||
TAs instead of managing each device directly. | TAM for remote administration of 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 Trusted Components on | performing lifecycle management activity on Trusted Components on | |||
behalf of Trusted Component Signers and Device Administrators. | behalf of Trusted Component Signers and Device Administrators. | |||
This includes installation and deletion of Trusted Components, and | This includes installation and deletion of Trusted Components and | |||
may include, for example, over-the-air updates to keep Trusted | may include, for example, over-the-air updates to keep Trusted | |||
Components up-to-date and clean up when Trusted Components should | Components up-to-date and clean up when Trusted Components should | |||
be removed. TAMs may provide services that make it easier for | be removed. TAMs may provide services that make it easier for | |||
Trusted Component Signers or Device Administrators to use the | Trusted Component Signers or Device Administrators to use the | |||
TAM's service to manage multiple devices, although that is not | TAM's service to manage multiple devices, although that is not | |||
required of a TAM. | required of a TAM. | |||
The TAM performs its management of Trusted Components on the | The TAM performs its management of Trusted Components on the | |||
device through interactions with a device's TEEP Broker, which | device through interactions with a device's TEEP Broker, which | |||
relays messages between a TAM and a TEEP Agent running inside the | relays messages between a TAM and a TEEP Agent running inside the | |||
TEE. TEEP authentication is performed between a TAM and a TEEP | TEE. TEEP authentication is performed between a TAM and a TEEP | |||
Agent. | Agent. | |||
When the TEEP Agent runs in a user or enterprise device, network | When the TEEP Agent runs in a user or enterprise device, network | |||
and application firewalls normally protect user and enterprise | and application firewalls normally protect user and enterprise | |||
devices from arbitrary connections from external network entities. | devices from arbitrary connections from external network entities. | |||
In such a deployment, a TAM outside that network might not be able | In such a deployment, a TAM outside that network might not be able | |||
to directly contact a TEEP Agent, but needs to wait for the TEEP | to directly contact a TEEP Agent but needs to wait for the TEEP | |||
Broker to contact it. The architecture in Figure 1 accommodates | Broker to contact it. The architecture in Figure 1 accommodates | |||
this case as well as other less restrictive cases by leaving such | this case as well as other less restrictive cases by leaving such | |||
details to an appropriate TEEP transport protocol (e.g., | details to an appropriate TEEP transport protocol (e.g., | |||
[I-D.ietf-teep-otrp-over-http], though other transport protocols | [TEEP-HTTP], though other transport protocols can be defined under | |||
can be defined under the TEEP protocol for other cases). | the TEEP protocol for other cases). | |||
A TAM may be publicly available for use by many Trusted Component | A TAM may be publicly available for use by many Trusted Component | |||
Signers, or a TAM may be private, and accessible by only one or a | Signers, or a TAM may be private and accessible by only one or a | |||
limited number of Trusted Component Signers. It is expected that | limited number of Trusted Component Signers. It is expected that | |||
many enterprises, manufacturers, and network carriers will run | many enterprises, manufacturers, and network carriers will run | |||
their own private TAM. | their own private TAM. | |||
A Trusted Component Signer or Device Administrator chooses a | A Trusted Component Signer or Device Administrator chooses a | |||
particular TAM based on whether the TAM is trusted by a device or | particular TAM based on whether the TAM is trusted by a device or | |||
set of devices. The TAM is trusted by a device if the TAM's | set of devices. The TAM is trusted by a device if the TAM's | |||
public key is, or chains up to, an authorized Trust Anchor in the | public key is, or chains up to, an authorized Trust Anchor in the | |||
device, and conforms with all constraints defined in the Trust | device and conforms with all constraints defined in the Trust | |||
Anchor. A Trusted Component Signer or Device Administrator may | Anchor. A Trusted Component Signer or Device Administrator may | |||
run their own TAM, but the devices they wish to manage must | run their own TAM, but the devices they wish to manage must | |||
include this TAM's public key or certificate, or a certificate it | include this TAM's public key or certificate, or a certificate it | |||
chains up to, in the Trust Anchor Store. | chains up to, in the Trust Anchor Store. | |||
A Trusted Component Signer or Device Administrator is free to | A Trusted Component Signer or Device Administrator is free to | |||
utilize multiple TAMs. This may be required for managing Trusted | utilize multiple TAMs. This may be required for managing Trusted | |||
Components on multiple different types of devices from different | Components on multiple different types of devices from different | |||
manufacturers, or mobile devices on different network carriers, | manufacturers or mobile devices on different network carriers, | |||
since the Trust Anchor Store on these different devices may | since the Trust Anchor Store on these different devices may | |||
contain keys for different TAMs. A Device Administrator may be | contain keys for different TAMs. To overcome this limitation, | |||
able to add their own TAM's public key or certificate, or a | Device Administrator may be able to add their own TAM's public key | |||
certificate it chains up to, to the Trust Anchor Store on all | or certificate, or a certificate it chains up to, to the Trust | |||
their devices, overcoming this limitation. | Anchor Store on all their devices. | |||
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 aftermarket | |||
action. | action. | |||
* TEEP Broker: A TEEP Broker is an application component running in | TEEP Broker: A TEEP Broker is an application component running in a | |||
a Rich Execution Environment (REE) that enables the message | Rich Execution Environment (REE) that enables the message protocol | |||
protocol exchange between a TAM and a TEE in a device. A TEEP | exchange between a TAM and a TEE in a device. A TEEP Broker does | |||
Broker does not process messages on behalf of a TEE, but merely is | not process messages on behalf of a TEE but is merely responsible | |||
responsible for relaying messages from the TAM to the TEE, and for | for relaying messages from the TAM to the TEE and for returning | |||
returning the TEE's responses to the TAM. In devices with no REE | the TEE's responses to the TAM. In devices with no REE (e.g., a | |||
(e.g., a microcontroller where all code runs in an environment | microcontroller where all code runs in an environment that meets | |||
that meets the definition of a Trusted Execution Environment in | the definition of a Trusted Execution Environment in Section 2), | |||
Section 2), the TEEP Broker would be absent and instead the TEEP | the TEEP Broker would be absent, and the TEEP protocol transport | |||
protocol transport would be implemented inside the TEE itself. | would be implemented inside the TEE itself. | |||
* TEEP Agent: The TEEP Agent is a processing module running inside a | TEEP Agent: The TEEP Agent is a processing module running inside a | |||
TEE that receives TAM requests (typically relayed via a TEEP | TEE that receives TAM requests (typically relayed via a TEEP | |||
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 or | |||
requests or forward requests to other processing modules in a TEE, | forward requests to other processing modules in a TEE, which is up | |||
which is up to a TEE provider's implementation. A response | to a TEE provider's implementation. A response message | |||
message corresponding to a TAM request is sent back to the TAM, | corresponding to a TAM request is sent back to the TAM, again | |||
again typically relayed via a TEEP Broker. | 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 | |||
digital certificates (especially X.509 certificates) and vouches | certificates (especially X.509 certificates) and vouches for the | |||
for the binding between the data items in a certificate [RFC4949]. | 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 Trusted Component Signer, as discussed in Section 5. The CAs do | a Trusted Component Signer, as discussed in Section 5. The CAs do | |||
not need to be the same; different CAs can be chosen by each TAM, | not need to be the same; different CAs can be chosen by each TAM, | |||
and different device CAs can be used by different device | and different device CAs can be used by different device | |||
manufacturers. | 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 | |||
skipping to change at page 12, line 21 ¶ | skipping to change at line 534 ¶ | |||
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. | |||
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, | |||
Untrusted Application and only one TEE, but no such limitations are | Untrusted Application, and TEE, but no such limitations are intended | |||
intended to be implied in the architecture. | to be implied in the architecture. | |||
+-------------------------------------------+ | +-------------------------------------------+ | |||
| Device | Trusted Component | | Device | Trusted Component | |||
| | Signer | | | Signer | |||
| +---------------+ | | | | +---------------+ | | | |||
| | TEE-1 | | | | | | TEE-1 | | | | |||
| | +-------+ | +--------+ | +--------+ | | | | +-------+ | +--------+ | +--------+ | | |||
| | | TEEP | | | TEEP |------------->| |<-+ | | | | TEEP | | | TEEP |------------->| |<-+ | |||
| | | Agent |<----------| Broker | | | | TA | | | | Agent |<----------| Broker | | | | TA | |||
| | | 1 | | | 1 |---------+ | | | | | | 1 | | | 1 |---------+ | | | |||
skipping to change at page 13, line 42 ¶ | skipping to change at line 575 ¶ | |||
| | | | | | | | | | | | | | | | | | |||
| | +----+ | | | | | | | | | +----+ | | | | | | | |||
| | |TA-3|<---+ | | +---------+ | | | | | | |TA-3|<---+ | | +---------+ | | | | |||
| | | | | | | TEEP |<-+ | | | | | | | | | | TEEP |<-+ | | | |||
| | +----+ | +---| Broker | | | | | | +----+ | +---| Broker | | | | |||
| | | | 2 |--------------+ | | | | | 2 |--------------+ | |||
| +---------------+ +---------+ | | | +---------------+ +---------+ | | |||
| | | | | | |||
+-------------------------------------------+ | +-------------------------------------------+ | |||
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 Trusted | no need for TEEP Brokers to share information on installed Trusted | |||
Components or 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 interact with might be made with or without input from an | TAM to interact 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 | For any given Trusted Component, a TEEP Agent is assumed to be able | |||
Trusted Component, whether that Trusted Component is installed (or | to determine whether that Trusted Component is installed (or | |||
minimally, is running) in a TEE with which the TEEP Agent is | minimally, is running) in a TEE with which the TEEP Agent is | |||
associated. | associated. | |||
Each Trusted Component is digitally signed, protecting its integrity, | Each Trusted Component is digitally signed, protecting its integrity | |||
and linking the Trusted Component back to the Trusted Component | and linking the Trusted Component back to the Trusted Component | |||
Signer. The Trusted Component Signer is often the Trusted Component | Signer. The Trusted Component Signer is often the Trusted Component | |||
Developer, but in some cases might be another party such as a Device | Developer but, in some cases, might be another party such as a Device | |||
Administrator or other party to whom the code has been licensed (in | Administrator or other party to whom the code has been licensed (in | |||
which case the same code might be signed by multiple licensees and | which case, the same code might be signed by multiple licensees and | |||
distributed as if it were different TAs). | distributed as if it were different TAs). | |||
A Trusted Component Signer selects one or more TAMs and communicates | A Trusted Component Signer selects one or more TAMs and communicates | |||
the Trusted Component(s) to the TAM. For example, the Trusted | the Trusted Component(s) to the TAM. For example, the Trusted | |||
Component Signer might choose TAMs based upon the markets into which | Component Signer might choose TAMs based upon the markets into which | |||
the TAM can provide access. There may be TAMs that provide services | the TAM can provide access. There may be TAMs that provide services | |||
to specific types of devices, or device operating systems, or | to specific types of devices, device operating systems, specific | |||
specific geographical regions or network carriers. A Trusted | geographical regions, or network carriers. A Trusted Component | |||
Component Signer may be motivated to utilize multiple TAMs in order | Signer may be motivated to utilize multiple TAMs in order to maximize | |||
to maximize market penetration and availability on multiple types of | market penetration and availability on multiple types of devices. | |||
devices. This means that the same Trusted Component will often be | This means that the same Trusted Component will often be available | |||
available through multiple TAMs. | through multiple TAMs. | |||
When the developer of an Untrusted Application that depends on a | When the developer of an Untrusted Application that depends on a | |||
Trusted Component publishes the Untrusted Application to an app store | Trusted Component publishes the Untrusted Application to an app store | |||
or other app repository, the developer optionally binds the Untrusted | or other app repository, the developer optionally binds the Untrusted | |||
Application with a manifest that identifies what TAMs can be | Application with a manifest that identifies what TAMs can be | |||
contacted for the Trusted Component. In some situations, a Trusted | contacted for the Trusted Component. In some situations, a Trusted | |||
Component may only be available via a single TAM - this is likely the | Component may only be available via a single TAM; this is likely the | |||
case for enterprise applications or Trusted Component Signers serving | case for enterprise applications or Trusted Component Signers serving | |||
a closed community. For broad public apps, there will likely be | a closed community. For broad public apps, there will likely be | |||
multiple TAMs in the Untrusted Application's manifest - one servicing | multiple TAMs in the Untrusted Application's manifest, one servicing | |||
one brand of mobile device and another servicing a different | one brand of mobile device and another servicing a different | |||
manufacturer, etc. Because different devices and different | manufacturer, etc. Because different devices and manufacturers trust | |||
manufacturers trust different TAMs, the manifest can include multiple | different TAMs, the manifest can include multiple TAMs that support | |||
TAMs that support the required Trusted Component. | 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 Trusted | Section 6.2.1) from an Untrusted Application to install a Trusted | |||
Component, a list of TAM URIs may be provided for that Trusted | Component, a list of TAM URIs may be provided for that Trusted | |||
Component, and the request is passed to the TEEP Agent. If the TEEP | Component, and the request is passed to the TEEP Agent. If the TEEP | |||
Agent decides that the Trusted Component needs to be installed, the | Agent decides that the Trusted Component needs to be installed, the | |||
TEEP Agent selects a single TAM URI that is consistent with the list | TEEP Agent selects a single TAM URI that is consistent with the list | |||
of trusted TAMs provisioned in the TEEP Agent, invokes the HTTP | of trusted TAMs provisioned in the TEEP Agent, invokes the HTTP | |||
transport for TEEP to connect to the TAM URI, and begins a TEEP | transport for TEEP to connect to the TAM URI, and begins a TEEP | |||
protocol exchange. When the TEEP Agent subsequently receives the | protocol exchange. When the TEEP Agent subsequently receives the | |||
Trusted Component to install and the Trusted Component's manifest | Trusted Component to install and the Trusted Component's manifest | |||
indicates dependencies on any other trusted components, each | indicates dependencies on any other Trusted Components, each | |||
dependency can include a list of TAM URIs for the relevant | dependency can include a list of TAM URIs for the relevant | |||
dependency. If such dependencies exist that are prerequisites to | dependency. If such dependencies exist that are prerequisites to | |||
install the Trusted Component, then the TEEP Agent recursively | 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 [SUIT-MANIFEST] for | |||
for expressing how to install a Trusted Component, as well as any | expressing how to install a Trusted Component, as well as any | |||
dependencies on other TEE components and versions. That is, | dependencies on other TEE components and versions. That is, | |||
dependencies from Trusted Components on other Trusted Components can | dependencies from Trusted Components on other Trusted Components can | |||
be expressed in a SUIT manifest, including dependencies on any other | be expressed in a Software Update for the Internet of Things (SUIT) | |||
TAs, trusted OS code (if any), or trusted firmware. Installation | manifest, including dependencies on any other TAs, trusted OS code | |||
steps can also be expressed in a SUIT manifest. | (if any), or trusted firmware. Installation steps can also be | |||
expressed in a SUIT manifest. | ||||
For example, TEEs compliant with GlobalPlatform [GPTEE] may have a | For example, TEEs compliant with GlobalPlatform [GPTEE] may have a | |||
notion of a "security domain" (which is a grouping of one or more TAs | notion of a "security domain" (which is a grouping of one or more TAs | |||
installed on a device, that can share information within such a | installed on a device that can share information within such a group) | |||
group) that must be created and into which one or more TAs can then | that must be created and into which one or more TAs can then be | |||
be installed. It is thus up to the SUIT manifest to express a | installed. It is thus up to the SUIT manifest to express a | |||
dependency on having such a security domain existing or being created | dependency on having such a security domain existing or being created | |||
first, as appropriate. | first, as appropriate. | |||
Updating a Trusted Component may cause compatibility issues with any | Updating a Trusted Component may cause compatibility issues with any | |||
Untrusted Applications or other components that depend on the updated | Untrusted Applications or other components that depend on the updated | |||
Trusted Component, just like updating the OS or a shared library | Trusted Component, just like updating the OS or a shared library | |||
could impact an Untrusted Application. Thus, an implementation needs | could impact an Untrusted Application. Thus, an implementation needs | |||
to take into account such issues. | to take such issues into account. | |||
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 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 also require 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. Implementations of the TEEP protocol must | the device or a user. Implementations of the TEEP protocol must | |||
support encryption to preserve the confidentiality of such | support encryption to preserve the confidentiality of such | |||
Personalization Data, which may potentially contain sensitive data. | Personalization Data, which may potentially contain sensitive data. | |||
The encryption is used to ensure that no personalization data is sent | The encryption is used to ensure that no personalization data is sent | |||
in the clear. Implementations must also support mechanisms for | in the clear. Implementations must also support mechanisms for | |||
integrity protection of such Personalization Data. Other than the | integrity protection of such Personalization Data. Other than the | |||
requirement to support confidentiality and integrity protection, the | requirement to support confidentiality and integrity protection, the | |||
TEEP architecture places no limitations or requirements on the | TEEP architecture places no limitations or requirements on the | |||
Personalization Data. | Personalization Data. | |||
There are multiple possible cases for bundling of an Untrusted | There are multiple possible cases for bundling of an Untrusted | |||
Application, TA(s), and Personalization Data. Such cases include | Application, TA(s), and Personalization Data. Such cases include | |||
(possibly among others): | (possibly among others): | |||
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 Trusted Component | all bundled together in a single package by a Trusted Component | |||
Signer and either provided to the TEEP Broker through the TAM, or | Signer and either provided to the TEEP Broker through the TAM or | |||
provided separately (with encrypted Personalization Data), with | provided separately (with encrypted Personalization Data), with | |||
key material needed to decrypt and install the Personalization | key material needed to decrypt and install the Personalization | |||
Data 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 Personalization Data provider's TAM. | the Personalization Data provider's TAM. | |||
3. All components are independent packages. The Untrusted | 3. All components are independent packages. The Untrusted | |||
Application is installed through some independent or device- | Application is installed through some independent or device- | |||
specific mechanism, and one or more TAMs provide (directly or | specific mechanism, and one or more TAMs provide (directly or | |||
indirectly by reference) the TA(s) and Personalization Data. | indirectly by reference) the TA(s) and Personalization Data. | |||
4. The TA(s) and Personalization Data are bundled together into a | 4. The TA(s) and Personalization Data are bundled together into a | |||
package provided by a TAM, while the Untrusted Application is | package provided by a TAM, while the Untrusted Application is | |||
installed through some independent or device-specific mechanism | installed through some independent or device-specific mechanism, | |||
such as an app store. | such as an app store. | |||
5. Encrypted Personalization Data is bundled into a package | 5. Encrypted Personalization Data is bundled into a package | |||
distributed with the Untrusted Application, while the TA(s) and | distributed with the Untrusted Application, while the TA(s) and | |||
key material needed to decrypt and install the Personalization | key material needed to decrypt and install the Personalization | |||
Data are in a separate package provided by a TAM. | Data are in a separate package provided by a TAM. | |||
Personalization Data is encrypted with a key unique to that | Personalization Data is encrypted with a key unique to that | |||
specific TEE, as discussed in Section 5. | specific TEE, as discussed in Section 5. | |||
The TEEP protocol can treat 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 Trusted 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 | [SUIT-MANIFEST] for more details). The TEEP Agent is responsible for | |||
responsible for handling any installation steps that need to be | handling any installation steps that need to be performed inside the | |||
performed inside the TEE, such as decryption of private TA binaries | TEE, such as decryption of private TA binaries or Personalization | |||
or Personalization Data. | 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 (Cases 3-5). In this case, the Untrusted | enclave and use that TA (Cases 3-5). 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. | SGX TEE. | |||
In SGX, any Personalization Data is normally loaded into the SGX | In SGX, any Personalization Data is normally loaded into the SGX | |||
enclave (the TA) after the TA has started. Although it is possible | enclave (the TA) after the TA has started. Although it is possible | |||
with SGX to include the Untrusted Application in an encrypted package | with SGX to include the Untrusted Application in an encrypted package | |||
along with Personalization Data (Cases 1 and 5), there are no | along with Personalization Data (Cases 1 and 5), there are currently | |||
instances of this known to be in use at this time, since such a | no known instances of this in use, since such a construction would | |||
construction would require a special installation program and SGX TA | require a special installation program and SGX TA (which might or | |||
(which might or might not be the TEEP Agent itself based on the | might not be the TEEP Agent itself based on the implementation) to | |||
implementation) to receive the encrypted package, decrypt it, | receive the encrypted package, decrypt it, separate it into the | |||
separate it into the different elements, and then install each one. | different elements, and then install each one. This installation is | |||
This installation is complex because the Untrusted Application | complex because the Untrusted Application decrypted inside the TEE | |||
decrypted inside the TEE must be passed out of the TEE to an | must be passed out of the TEE to an installer in the REE that would | |||
installer in the REE which would install the Untrusted Application. | install the Untrusted Application. Finally, the Personalization Data | |||
Finally, the Personalization Data would need to be sent out of the | would need to be sent out of the TEE (encrypted in an SGX enclave-to- | |||
TEE (encrypted in an SGX enclave-to-enclave manner) to the REE's | enclave manner) to the REE's installation app, which would pass this | |||
installation app, which would pass this data to the installed | data to the installed Untrusted Application, which would in turn send | |||
Untrusted Application, which would in turn send this data to the SGX | this data to the SGX enclave (TA). This complexity is due to the | |||
enclave (TA). This complexity is due to the fact that each SGX | fact that each SGX enclave is separate and does not have direct | |||
enclave is separate and does not have direct communication to other | communication to other SGX enclaves. | |||
SGX enclaves. | ||||
As long as signed files (TAs and/or Personalization Data) are | As long as signed files (TAs and/or Personalization Data) are | |||
installed into an untrusted filesystem and trust is verified by the | installed into an untrusted filesystem and trust is verified by the | |||
TEE at load time, classic distribution mechanisms can be used. Some | TEE at load time, classic distribution mechanisms can be used. | |||
uses of SGX, however, allow a model where a TA can be dynamically | However, some uses of SGX allow a model where a TA can be dynamically | |||
installed into an SGX enclave that provides a runtime platform. The | installed into an SGX enclave that provides a runtime platform. The | |||
TEEP protocol can be used in such cases, where the runtime platform | TEEP protocol can be used in such cases, where the runtime platform | |||
could include a TEEP Agent. | could include a TEEP Agent. | |||
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 | |||
from SGX since in TrustZone the TA lifetime is not inherently tied to | from SGX since in TrustZone, the TA lifetime is not inherently tied | |||
a specific Untrusted Application process lifetime as occurs in SGX. | to a specific Untrusted Application process lifetime as occurs in | |||
A TA is loaded by a trusted OS running in the TEE such as a | SGX. A TA is loaded by a trusted OS running in the TEE, such as a | |||
GlobalPlatform [GPTEE] compliant TEE, where the trusted OS is | TEE compliant with GlobalPlatform [GPTEE], where the trusted OS is | |||
separate from the OS in the REE. Thus Cases 2-4 are equally | separate from the OS in the REE. Thus, Cases 2-4 are equally | |||
applicable. In addition, it is possible for TAs to communicate with | applicable. In addition, it is possible for TAs to communicate with | |||
each other without involving any Untrusted Application, and so the | each other without involving any Untrusted Application; thus, the | |||
complexity of Cases 1 and 5 are lower than in the SGX example, though | complexity of Cases 1 and 5 are lower than in the SGX example, though | |||
still more complex than Cases 2-4. | still more complex than Cases 2-4. | |||
A trusted OS running in the TEE (e.g., OP-TEE [OP-TEE]) that supports | A trusted OS running in the TEE (e.g., OP-TEE [OP-TEE]) that supports | |||
loading and verifying signed TAs from an untrusted filesystem can, | loading and verifying signed TAs from an untrusted filesystem can, | |||
like SGX, use classic file distribution mechanisms. If secure TA | like SGX, use classic file distribution mechanisms. If secure TA | |||
storage is used (e.g., a Replay-Protected Memory Block device) on the | storage is used (e.g., a Replay-Protected Memory Block device) on the | |||
other hand, the TEEP protocol can be used to manage such storage. | other hand, the TEEP protocol can be used to manage such storage. | |||
4.5. Entity Relations | 4.5. Entity Relations | |||
skipping to change at page 19, line 27 ¶ | skipping to change at line 843 ¶ | |||
| | | | | | | | | | |||
(b) TA -- 2b. Supply ----------> | | | | (b) TA -- 2b. Supply ----------> | | | | |||
| | | | | | | | | | |||
| --- 3. Install ------> | | | | --- 3. Install ------> | | | |||
| | | | | | | | | | |||
| | 4. Messaging-->| | | | | 4. Messaging-->| | | |||
Figure 3: Example Developer Experience | Figure 3: Example Developer Experience | |||
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 and (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 | Application Store. In this example, the developer is also the | |||
Trusted Component Signer, and so generates a signed TA. The | Trusted Component Signer and thus generates a signed TA. The | |||
developer can then either bundle the signed TA with the Untrusted | developer can then either bundle the signed TA with the Untrusted | |||
Application, or the developer can provide a signed Trusted Component | Application or provide a signed Trusted Component containing the TA | |||
containing the TA to a TAM that will be managing the TA in various | to a TAM that will be managing the TA in various devices. | |||
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 via | installing the Untrusted Application will trigger TA installation via | |||
communication with a TAM. The TEEP Agent will interact with the TAM | communication with a TAM. The TEEP Agent will interact with the TAM | |||
via a TEEP Broker that facilitates communications between the TAM and | via a TEEP Broker that facilitates communications between the TAM and | |||
the TEEP Agent. | the TEEP Agent. | |||
Some Trusted Component installation implementations might ask for a | Some implementations that install Trusted Components might ask for a | |||
user's consent. In other implementations, a Device Administrator | user's consent. In other implementations, a Device Administrator | |||
might choose what Untrusted Applications and related Trusted | might choose the Untrusted Applications and related Trusted | |||
Components to be installed. A user consent flow is out of scope of | Components to be installed. A user consent flow is out of scope of | |||
the TEEP architecture. | the TEEP architecture. | |||
The main components of the TEEP protocol consist of a set of standard | The main components of the TEEP protocol consist of a set of standard | |||
messages created by a TAM to deliver Trusted Component management | messages created by a TAM to deliver Trusted Component management | |||
commands to a device, and device attestation and response messages | commands to a device and device attestation and response messages | |||
created by a TEE that responds to a TAM's message. | created by a TEE that 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 a broker in the REE to provide | Trusted Applications generally rely on a 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, relay TAM requests to the TEEP Agent, and relay the responses | |||
responses back to the TAM. | 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 | |||
achieving end-to-end security between a TAM and a TEEP Agent. | achieving end-to-end security between a TAM and a TEEP Agent. | |||
Figure 4 summarizes the relationships between various keys and where | Table 1 summarizes the relationships between various keys and where | |||
they are stored. Each public/private key identifies a Trusted | they are stored. Each public/private key identifies a Trusted | |||
Component Signer, TAM, or TEE, and gets a certificate that chains up | Component Signer, TAM, or TEE and gets a certificate that chains up | |||
to some trust anchor. A list of trusted certificates is used to | to some Trust Anchor. A list of trusted certificates is used to | |||
check a 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 Table 1, there may be additional keys | |||
used for attestation or encryption. Refer to the RATS Architecture | used for attestation or encryption. Refer to the RATS Architecture | |||
[I-D.ietf-rats-architecture] for more discussion. | [RFC9334] for more discussion. | |||
Cardinality & Location of | ||||
Location of Private Key Trust Anchor | ||||
Purpose Private Key Signs Store | ||||
------------------ ----------- ------------- ------------- | ||||
Authenticating 1 per TEE TEEP responses TAM | ||||
TEEP Agent | ||||
Authenticating TAM 1 per TAM TEEP requests TEEP Agent | ||||
Code Signing 1 per Trusted TA binary TEE | +================+===============+===========+==============+ | |||
Component | | Purpose | Cardinality & | Private | Location of | | |||
Signer | | | Location of | Key Signs | Trust Anchor | | |||
| | Private Key | | Store | | ||||
+================+===============+===========+==============+ | ||||
| Authenticating | 1 per TEE | TEEP | TAM | | ||||
| TEEP Agent | | responses | | | ||||
+----------------+---------------+-----------+--------------+ | ||||
| Authenticating | 1 per TAM | TEEP | TEEP Agent | | ||||
| TAM | | requests | | | ||||
+----------------+---------------+-----------+--------------+ | ||||
| Code Signing | 1 per Trusted | TA binary | TEE | | ||||
| | Component | | | | ||||
| | Signer | | | | ||||
+----------------+---------------+-----------+--------------+ | ||||
Figure 4: Signature Keys | Table 1: 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 | Personalization Data and TA binaries can be encrypted with a key | |||
unique to that specific TEE, established with a content-encryption | unique to that specific TEE. Conversely, TEEP responses from a TEEP | |||
key established with the TEE public key (to provide confidentiality). | Agent to a TAM can be signed with the TEE private key. | |||
Conversely, TEEP responses 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. Typically, the same key TEE pair is used for both signing and | Typically, the same TEE key pair is used for both signing and | |||
encryption, though separate key pairs might also be used in the | encryption, though separate key pairs might also be used in the | |||
future, as the joint security of encryption and signature with a | future, as the joint security of encryption and signature with a | |||
single key remains to some extent an open question in academic | single key remains, to some extent, an open question in academic | |||
cryptography. | cryptography. | |||
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 (separate key | a remote TEE and for sending private data to the TAM (separate key | |||
pairs for authentication vs. encryption could also be used in the | pairs for authentication vs. encryption could also be used in the | |||
future). A TAM provider is responsible for acquiring a certificate | future). A TAM provider is responsible for acquiring a certificate | |||
from a CA that is trusted by the TEEs it manages. This is discussed | from a CA that is trusted by the TEEs it manages. This is discussed | |||
further in Section 5.1 below. | further in Section 5.1. | |||
The Trusted Component Signer key pair and certificate are used to | The Trusted Component Signer key pair and certificate are used to | |||
sign Trusted Components that the TEE will consider authorized to | sign Trusted Components that the TEE will consider authorized to | |||
execute. TEEs must be configured with the certificates or keys that | execute. TEEs must be configured with the certificates or keys that | |||
it considers authorized to sign TAs that it will execute. This is | it considers authorized to sign TAs that it will execute. This is | |||
discussed further in Section 5.2 below. | discussed further in Section 5.2. | |||
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 typically CA certificates that sign various TAM | which are typically CA certificates that sign various TAM | |||
certificates. The list is typically preloaded at manufacturing time, | certificates. The list is usually preloaded at manufacturing time | |||
and can be updated using the TEEP protocol if the TEE has some form | and can be updated using the TEEP protocol if the TEE has some form | |||
of "Trust Anchor Manager TA" that has Trust Anchors in its | of "Trust Anchor Manager TA" that has Trust Anchors in its | |||
configuration data. Thus, Trust Anchors can be updated similarly to | configuration data. Thus, Trust Anchors can be updated similarly to | |||
the Personalization Data for any other TA. | the Personalization Data for any other TA. | |||
When Trust Anchor update is carried out, it is imperative that any | When a 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 this architecture document and | |||
addressed in a protocol document. | can be 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 be able to get its raw public | device with a particular TEE, it must be able to get its raw public | |||
key, or its certificate, or a certificate it chains up to, listed in | key, its certificate, or a certificate it chains up to listed in the | |||
the Trust Anchor Store of the TEEP Agent. | Trust Anchor Store of the TEEP Agent. | |||
5.2. Trust Anchors in a TEE | 5.2. Trust Anchors in a TEE | |||
The Trust Anchor Store in a TEE contains a list of Trust Anchors (raw | The Trust Anchor Store in a TEE contains a list of Trust Anchors (raw | |||
public keys or certificates) that are used to determine whether TA | public keys or certificates) that are used to determine whether TA | |||
binaries are allowed to execute by checking if their signatures can | binaries are allowed to execute by checking if their signatures can | |||
be verified. The list is typically preloaded at manufacturing time, | be verified. The list is typically preloaded at manufacturing time | |||
and can be updated using the TEEP protocol if the TEE has some form | and can be updated using the TEEP protocol if the TEE has some form | |||
of "Trust Anchor Manager TA" that has Trust Anchors in its | of "Trust Anchor Manager TA" that has Trust Anchors in its | |||
configuration data. Thus, Trust Anchors can be updated similarly to | configuration data. Thus, Trust Anchors can be updated similarly to | |||
the Personalization Data for any other TA, as discussed in | the Personalization Data for any other TA, as discussed in | |||
Section 5.1. | 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 | |||
skipping to change at page 23, line 21 ¶ | skipping to change at line 1020 ¶ | |||
When a PKI is used, many intermediate CA certificates can chain to a | When a PKI is used, many intermediate CA certificates can chain to a | |||
root certificate, each of which can issue many certificates. This | root certificate, each of which can issue many certificates. This | |||
makes the protocol highly scalable. New factories that produce TEEs | makes the protocol highly scalable. New factories that produce TEEs | |||
can join the ecosystem. In this case, such a factory can get an | can join the ecosystem. In this case, such a factory can get an | |||
intermediate CA certificate from one of the existing roots without | intermediate CA certificate from one of the existing roots without | |||
requiring that TAMs are updated with information about the new device | requiring that TAMs are updated with information about the new device | |||
factory. Likewise, new TAMs can join the ecosystem, providing they | factory. Likewise, new TAMs can join the ecosystem, providing they | |||
are issued a TAM certificate that chains to an existing root whereby | are issued a TAM certificate that chains to an existing root whereby | |||
existing TAs in the TEE will be allowed to be personalized by the TAM | existing TAs in the TEE will be allowed to be personalized by the TAM | |||
without requiring changes to the TEE itself. This enables the | without requiring changes to the TEE itself. This enables the | |||
ecosystem to scale, and avoids the need for centralized databases of | ecosystem to scale and avoids the need for centralized databases of | |||
all TEEs produced or all TAMs that exist or all Trusted Component | all TEEs produced, all TAMs that exist, or all Trusted Component | |||
Signers that exist. | Signers that exist. | |||
5.5. Message Security | 5.5. Message Security | |||
Messages created by a TAM are used to deliver Trusted Component | Messages created by a TAM are used to deliver Trusted Component | |||
management commands to a device, and device attestation and messages | management commands to a device, and device attestation and messages | |||
are created by the device TEE to respond to TAM messages. | are 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 | |||
skipping to change at page 24, line 6 ¶ | skipping to change at line 1052 ¶ | |||
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 installation of Trusted Components that the application | and trigger installation of Trusted Components that the application | |||
needs to use. | 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 Trusted Component installation itself, or an | runtime to trigger Trusted Component installation itself. | |||
Untrusted Application might simply have a metadata file that | Alternatively, an Untrusted Application might simply have a metadata | |||
describes the Trusted Components it depends on and the associated | file that describes the Trusted Components it depends on and the | |||
TAM(s) for each Trusted Component, and an REE Application Installer | associated TAM(s) for each Trusted Component. An REE Application | |||
can inspect this application metadata file and invoke the TEEP Broker | Installer can inspect this application metadata file and invoke the | |||
to trigger Trusted Component installation on behalf of the Untrusted | TEEP Broker to trigger Trusted Component installation on behalf of | |||
Application without requiring the Untrusted Application to run first. | the Untrusted 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 interacts with a TEEP Agent inside a TEE, relaying | A TEEP Broker interacts with a TEEP Agent inside a TEE, relaying | |||
messages between the TEEP Agent and the TAM, and may also interact | messages between the TEEP Agent and the TAM, and may also interact | |||
with one or more Untrusted Applications (see Section 6.2.1). The | with one or more Untrusted Applications (see Section 6.2.1). The | |||
Broker cannot parse encrypted TEEP messages between a TAM and a TEEP | Broker cannot parse encrypted TEEP messages exchanged between a TAM | |||
agent but merely relays them. | and a TEEP Agent but merely relays them. | |||
When a device has more than one TEE, one TEEP Broker per TEE could be | When a device has more than one TEE, one TEEP Broker per TEE could be | |||
present in the REE or a common TEEP Broker could be used by multiple | present in the REE, or a common TEEP Broker could be used by multiple | |||
TEEs where the transport protocol (e.g., | TEEs where the transport protocol (e.g., [TEEP-HTTP]) allows the TEEP | |||
[I-D.ietf-teep-otrp-over-http]) allows the TEEP Broker to distinguish | Broker to distinguish which TEE is relevant for each message from a | |||
which TEE is relevant for each message from a TAM. | TAM. | |||
The Broker only needs to return a (transport) error message to the | The Broker only needs to return an error message to the TAM if the | |||
TAM if the TEE is not reachable for some reason. Other errors are | TEE is not reachable for some reason. Other errors are represented | |||
represented as TEEP response messages returned from the TEE which | as TEEP response messages returned from the TEE, which will then be | |||
will then be passed to the TAM. | passed 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 | As depicted in Figure 4, there are multiple ways in which a TEEP | |||
Broker can be implemented, with more or fewer layers being inside the | Broker can be implemented with more or fewer layers being inside the | |||
TEE. For example, in model A, the model with the smallest TEE | TEE. For example, in model A (the model with the smallest TEE | |||
footprint, only the TEEP implementation is inside the TEE, whereas | footprint), only the TEEP implementation is inside the TEE, whereas | |||
the TEEP/HTTP implementation is in the TEEP Broker outside the TEE. | the TEEP/HTTP implementation is in the TEEP Broker outside the TEE. | |||
Model: A B C | Model: A B C | |||
TEE TEE TEE | TEE TEE TEE | |||
+----------------+ | | | | +----------------+ | | | | |||
| TEEP | Agent | | | Agent | | TEEP | Agent | | | Agent | |||
| implementation | | | | | | implementation | | | | | |||
+----------------+ v | | | +----------------+ v | | | |||
| | | | | | | | |||
+----------------+ ^ | | | +----------------+ ^ | | | |||
| TEEP/HTTP | Broker | | | | | TEEP/HTTP | Broker | | | | |||
| implementation | | | | | | implementation | | | | | |||
+----------------+ | v | | +----------------+ | v | | |||
| | | | | | | | |||
+----------------+ | ^ | | +----------------+ | ^ | | |||
| HTTP(S) | | | | | | HTTP(S) | | | | | |||
| implementation | | | | | | implementation | | | | | |||
+----------------+ | | v | +----------------+ | | v | |||
| | | | | | | | |||
+----------------+ | | ^ | +----------------+ | | ^ | |||
| TCP or QUIC | | | | Broker | | TCP or QUIC | | | | Broker | |||
| implementation | | | | | | implementation | | | | | |||
+----------------+ | | | | +----------------+ | | | | |||
REE REE REE | REE REE REE | |||
Figure 5: TEEP Broker Models | Figure 4: TEEP Broker Models | |||
In other models, additional layers are moved into the TEE, increasing | In other models, additional layers are moved into the TEE, increasing | |||
the TEE footprint, with the Broker either containing or calling the | the TEE footprint, with the Broker either containing or calling the | |||
topmost protocol layer outside of the TEE. An implementation is free | topmost protocol layer outside of the TEE. An implementation is free | |||
to choose any of these models. | 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. | scope, and concurrency on devices and runtime options. | |||
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 the application | |||
given Trusted Component, which may or may not already be | depends on a given Trusted Component, which may or may not | |||
installed in the TEE. | already be installed in the TEE. | |||
2. UnrequestTA: A notification from an REE application (e.g., an | 2. UnrequestTA: A notification from an REE application (e.g., an | |||
installer, or an Untrusted Application) that it no longer depends | installer or an Untrusted Application) that the application no | |||
on a given Trusted Component, which may or may not already be | longer depends on a given Trusted Component, which may or may not | |||
installed in the TEE. For example, if the Untrusted Application | already be installed in the TEE. For example, if the Untrusted | |||
is uninstalled, the uninstaller might invoke this conceptual API. | Application is uninstalled, the uninstaller might invoke this | |||
conceptual API. | ||||
3. ProcessTeepMessage: A message arriving from the network, to be | 3. ProcessTeepMessage: A message arriving from the network, to be | |||
delivered to the TEEP Agent for processing. | delivered to the TEEP Agent for processing. | |||
4. RequestPolicyCheck: A hint (e.g., based on a timer) that the TEEP | 4. 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. | |||
5. ProcessError: A notification that the TEEP Broker could not | 5. 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. | |||
For comparison, similar APIs may exist on the TAM side, where a | For comparison, similar APIs may exist on the TAM side, where a | |||
Broker may or may not exist, depending on whether the TAM uses a TEE | Broker may or may not exist, depending on whether the TAM uses a TEE | |||
or not: | or not: | |||
1. ProcessConnect: A notification that a new TEEP session is being | 1. ProcessConnect: A notification that a new TEEP session is being | |||
requested by a TEEP Agent. | requested by a TEEP Agent. | |||
2. ProcessTeepMessage: A message arriving at an existing TEEP | 2. ProcessTeepMessage: A message arriving at an existing TEEP | |||
session, to be delivered to the TAM for processing. | session, to be delivered to the TAM for processing. | |||
For further discussion on these APIs, see | For further discussion on these APIs, see [TEEP-HTTP]. | |||
[I-D.ietf-teep-otrp-over-http]. | ||||
6.2.2. TEEP Broker Distribution | 6.2.2. TEEP Broker Distribution | |||
The Broker installation is commonly carried out at device | The Broker installation is commonly carried out at device | |||
manufacturing time. A user may also dynamically download and install | manufacturing time. A user may also dynamically download and install | |||
a Broker on-demand. | a Broker on demand. | |||
7. Attestation | 7. Attestation | |||
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 | |||
are true. Different Verifiers may require different degrees of | 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.) | [RFC9334] for more discussion.) | |||
In TEEP, as depicted in Figure 6, the primary purpose of an | ||||
In TEEP, as depicted in Figure 5, 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 it defines a minimal set of attestation result claims required | |||
TEEP to operate properly. Extensions to these claims are possible. | for TEEP to operate properly. Extensions to these claims are | |||
Other standards or groups may define the format and semantics of | possible. Other standards or groups may define the format and | |||
extended claims. | semantics of 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 6: TEEP Attestation Roles | Figure 5: TEEP Attestation Roles | |||
As of the writing of this specification, device and TEE attestations | At the time of writing this specification, device and TEE | |||
have not been standardized across the market. Different devices, | attestations have not been standardized across the market. Different | |||
manufacturers, and TEEs support different attestation protocols. In | devices, manufacturers, and TEEs support different attestation | |||
order for TEEP to be inclusive, it is agnostic to the format of | protocols. In order for TEEP to be inclusive, it is agnostic to the | |||
evidence, allowing proprietary or standardized formats to be used | format of evidence, allowing proprietary or standardized formats to | |||
between a TEE and a Verifier (which may or may not be colocated in | be used between a TEE and a Verifier (which may or may not be | |||
the TAM), as long as the format supports encryption of any | colocated in the TAM), as long as the format supports encryption of | |||
information that is considered sensitive. | any information that is considered sensitive. | |||
However, it should be recognized that not all Verifiers may be able | However, it should be recognized that not all Verifiers may be able | |||
to process all proprietary forms of attestation evidence. Similarly, | to process all proprietary forms of attestation evidence. Similarly, | |||
the TEEP protocol is agnostic as to the format of attestation | the TEEP protocol is agnostic as to the format of attestation results | |||
results, and the protocol (if any) used between the TAM and a | and the protocol (if any) used between the TAM and a Verifier, as | |||
Verifier, as long as they convey at least the required set of claims | long as they convey at least the required set of claims in some | |||
in some format. Note that the respective attestation algorithms are | format. Note that the respective attestation algorithms are not | |||
not defined in the TEEP protocol itself; see | defined in the TEEP protocol itself; see [RFC9334] and [TEEP] for | |||
[I-D.ietf-rats-architecture] and [I-D.ietf-teep-protocol] for more | more discussion. | |||
discussion. | ||||
There are a number of considerations that need to be considered when | Considerations when appraising evidence provided by a TEE include the | |||
appraising evidence provided by a TEE, including: | following: | |||
* What security measures a manufacturer takes when provisioning keys | * What security measures a manufacturer takes when provisioning keys | |||
into devices/TEEs; | into devices/TEEs; | |||
* What hardware and software components have access to the | * What hardware and software components have access to the | |||
attestation keys of the TEE; | attestation keys of the TEE; | |||
* The source or local verification of claims within an attestation | * The source or local verification of claims within an attestation | |||
prior to a TEE signing a set of claims; | prior to a TEE signing a set of claims; | |||
skipping to change at page 28, line 24 ¶ | skipping to change at line 1246 ¶ | |||
* The revocation and recovery process of TEE attestation keys. | * The revocation and recovery process of TEE attestation keys. | |||
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 [RFC9334]. | |||
The following information is required for TEEP attestation: | The following information is required for TEEP attestation: | |||
* Device Identifying Information: Attestation information may need | * Device Identifying Information: Attestation information may need | |||
to 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, 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, | |||
may be sufficient to identify only the model or class of the | it may be sufficient to identify only the model or class of the | |||
device, for example, a DAA Issuer's group public key ID when the | device, for example, a DAA Issuer's group public key ID when the | |||
attestation uses DAA, see [I-D.ietf-rats-daa]. Another example of | attestation uses DAA; see [RATS-DAA]. Another example of models | |||
models is the hwmodel (Hardware Model) as defined in | is the hwmodel (Hardware Model) as defined in [EAT]. The security | |||
[I-D.ietf-rats-eat]. The security and privacy requirements | and privacy requirements regarding device identification will vary | |||
regarding device identification will vary with the type of TA | with the type of TA provisioned to the TEE. | |||
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. This includes version | attestation must be identified. This includes version | |||
identification information for hardware, firmware, and software | identification information for hardware, firmware, and software | |||
version of the TEE, as applicable by the TEE type. TEE | version of the TEE, as applicable by the TEE type. TEE | |||
manufacturer information for the TEE is required in order to | manufacturer information for the TEE is required in order to | |||
disambiguate the same TEE type created by different manufacturers | disambiguate the same TEE type created by different manufacturers | |||
and address considerations around manufacturer provisioning, | and address considerations around manufacturer provisioning, | |||
keying and 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. | |||
8. Algorithm and Attestation Agility | 8. Algorithm and Attestation Agility | |||
[RFC7696] outlines the requirements to migrate from one mandatory-to- | [RFC7696] outlines the requirements to migrate from one mandatory-to- | |||
implement cryptographic algorithm suite to another over time. This | implement cryptographic algorithm suite to another over time. This | |||
feature is also known as crypto agility. Protocol evolution is | feature is also known as "crypto agility". Protocol evolution is | |||
greatly simplified when crypto agility is considered during the | greatly simplified when crypto agility is considered during the | |||
design of the protocol. In the case of the TEEP protocol the diverse | design of the protocol. In the case of the TEEP protocol, the | |||
range of use cases, from trusted app updates for smartphones and | diverse range of use cases (from trusted app updates for smartphones | |||
tablets to updates of code on higher-end IoT devices, creates the | and tablets to updates of code on higher-end IoT devices) creates the | |||
need for different mandatory-to-implement algorithms already from the | need for different mandatory-to-implement algorithms from the start. | |||
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 and integrity protection of TA binaries and | are used for encryption and integrity protection of TA binaries and | |||
Personalization Data whereas the asymmetric algorithms are used for | Personalization Data, whereas the asymmetric algorithms are used for | |||
signing messages and managing symmetric keys. | 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 | |||
device may only support one. | the 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 Trusted Components. Since the TEEP | with the device's TEE to manage Trusted Components. However, since | |||
Broker runs in a potentially vulnerable REE, the TEEP Broker could, | the TEEP Broker runs in a potentially vulnerable REE, the TEEP Broker | |||
however, be (or be infected by) malware. As such, all TAM messages | could be malware or be infected by malware. As such, all TAM | |||
are signed and sensitive data is encrypted such that the TEEP Broker | messages are signed and sensitive data is encrypted such that the | |||
cannot modify or capture sensitive data, but the TEEP Broker can | TEEP Broker cannot modify or capture sensitive data, but the TEEP | |||
still conduct DoS attacks as discussed in Section 9.3. | Broker can 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, | |||
launch a DoS attack by sending a flood of TEEP protocol requests, or | launch a DoS attack by sending a flood of TEEP protocol requests, or | |||
simply drop or delay notifications to a TEE. The TEEP Agent | simply drop or delay notifications to a TEE. The TEEP Agent | |||
validates the signature of each TEEP protocol request and checks the | validates the signature of each TEEP protocol request and checks the | |||
signing certificate against its Trust Anchors. To mitigate DoS | signing certificate against its Trust Anchors. To mitigate DoS | |||
attacks, it might also add some protection scheme such as a threshold | attacks, it might also add some protection scheme such as a threshold | |||
on repeated requests or number of TAs that can be installed. | on repeated requests or the number of TAs that can be installed. | |||
Some implementations might rely on (due to lack of any available | Due to the lack of any available alternative, some implementations | |||
alternative) the use of an untrusted timer or other event to call the | might rely on the use of an untrusted timer or other event to call | |||
RequestPolicyCheck API (Section 6.2.1), which means that a | the RequestPolicyCheck API (Section 6.2.1), which means that a | |||
compromised REE can cause a TEE to not receive policy changes and | compromised REE can cause a TEE to not receive policy changes and | |||
thus be out of date with respect to policy. The same can potentially | thus be out of date with respect to policy. The same can potentially | |||
be done by any other manipulator-in-the-middle simply by blocking | be done by any other manipulator-in-the-middle simply by blocking | |||
communication with a TAM. Ultimately such outdated compliance could | communication with a TAM. Ultimately, such outdated compliance could | |||
be addressed by using attestation in secure communication, where the | be addressed by using attestation in secure communication, where the | |||
attestation evidence reveals what state the TEE is in, so that | attestation evidence reveals what state the TEE is in, so that | |||
communication (other than remediation such as via TEEP) from an out- | communication (other than remediation such as via TEEP) from an out- | |||
of-compliance TEE can be rejected. | of-compliance TEE can be rejected. | |||
Similarly, in most implementations the REE is involved in the | Similarly, in most implementations, the REE is involved in the | |||
mechanics of installing new TAs. However, the authority for what TAs | mechanics of installing new TAs. However, the authority for what TAs | |||
are running in a given TEE is between the TEEP Agent and the TAM. | are running in a given TEE is between the TEEP Agent and the TAM. | |||
While a TEEP Broker can in effect make suggestions as discussed in | While a TEEP Broker can, in effect, make suggestions as discussed in | |||
Section Section 6.2.1, it cannot decide or enforce what runs where. | Section 6.2.1, it cannot decide or enforce what runs where. The TEEP | |||
The TEEP Broker can also control which TEE a given installation | Broker can also control which TEE a given installation request is | |||
request is directed at, but a TEEP Agent will only accept TAs that | directed at, but a TEEP Agent will only accept TAs that are actually | |||
are actually applicable to it and where installation instructions are | applicable to it and where installation instructions are received by | |||
received by a TAM that it trusts. | a TAM that it trusts. | |||
The authorization model for the UnrequestTA operation is, however, | The authorization model for the UnrequestTA operation is, however, | |||
weaker in that it expresses the removal of a dependency from an | weaker in that it expresses the removal of a dependency from an | |||
application that was untrusted to begin with. This means that a | application that was untrusted to begin with. This means that a | |||
compromised REE could remove a valid dependency from an Untrusted | compromised REE could remove a valid dependency from an Untrusted | |||
Application on a TA. Normal REE security mechanisms should be used | Application on a TA. Normal REE security mechanisms should be used | |||
to protect the REE and Untrusted Applications. | to protect the REE and Untrusted Applications. | |||
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 | |||
provide 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 the data of one user or tenant from compromise by another | |||
or tenant, even if the attacker has TAs. | user 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 is similarly responsible | |||
for securely providing integrity and confidentiality protection | for securely providing integrity and confidentiality protection | |||
against adversaries between them. It is a design choice at what | against adversaries between them. The layers at which to best | |||
layers to best provide protection against network adversaries. As | provide protection against network adversaries is a design choice. | |||
discussed in Section 6, the transport protocol and any security | As discussed in Section 6, the transport protocol and any security | |||
mechanism associated with it (e.g., the Transport Layer Security | mechanism associated with it (e.g., the Transport Layer Security | |||
protocol) under the TEEP protocol may terminate outside a TEE. If it | protocol) under the TEEP protocol may terminate outside a TEE. If it | |||
does, the TEEP protocol itself must provide integrity protection and | does, the TEEP protocol itself must provide integrity and | |||
confidentiality protection to secure data end-to-end. For example, | confidentiality protection to secure data end-to-end. For example, | |||
confidentiality protection for payloads may be provided by utilizing | confidentiality protection for payloads may be provided by utilizing | |||
encrypted TA binaries and encrypted attestation information. See | encrypted TA binaries and encrypted attestation information. See | |||
[I-D.ietf-teep-protocol] for how a specific solution addresses the | [TEEP] for how a specific solution addresses the design question of | |||
design question of how to provide integrity and confidentiality | how to provide integrity and confidentiality protection. | |||
protection. | ||||
9.3. Compromised REE | 9.3. Compromised REE | |||
It is possible that the REE of a device is compromised. We have | It is possible that the REE of a device is compromised. We have | |||
already seen examples of attacks on the public Internet with a large | already seen examples of attacks on the public Internet with a large | |||
number of compromised devices being used to mount DDoS attacks. A | number of compromised devices being used to mount DDoS attacks. A | |||
compromised REE can be used for such an attack but it cannot tamper | compromised REE can be used for such an attack, but it cannot tamper | |||
with the TEE's code or data in doing so. A compromised REE can, | with the TEE's code or data in doing so. A compromised REE can, | |||
however, launch DoS attacks against the TEE. | however, launch DoS attacks against the TEE. | |||
The compromised REE may terminate the TEEP Broker such that TEEP | The compromised REE may terminate the TEEP Broker such that TEEP | |||
transactions cannot reach the TEE, or might drop, replay, or delay | transactions cannot reach the TEE or might drop, replay, or delay | |||
messages between a TAM and a TEEP Agent. However, while a DoS attack | 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 the | cannot be prevented, the REE cannot access anything in the TEE if the | |||
TEE is implemented correctly. Some TEEs may have some watchdog | TEE is implemented correctly. Some TEEs may have some watchdog | |||
scheme to observe REE state and mitigate DoS attacks against it but | scheme to observe REE state and mitigate DoS attacks against it, but | |||
most TEEs don't have such a capability. | 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 Trusted Component. An installation or uninstallation | uninstall a Trusted Component. An installation or uninstallation | |||
request constructed by the TEEP Broker or REE will be rejected by the | request constructed by the TEEP Broker or REE will be rejected by the | |||
TEEP Agent because the request won't have the correct signature from | TEEP Agent because the request won't have the correct signature from | |||
a TAM 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 Trusted Components that are not necessary. It may | installation of Trusted Components that are not necessary. It may | |||
also repeat a prior legitimate Trusted Component installation | also repeat a prior legitimate Trusted Component installation | |||
request. A TEEP Agent implementation is responsible for ensuring | request. A TEEP Agent implementation is responsible for ensuring | |||
that it can recognize and decline such repeated requests. It is also | that it can recognize and decline such repeated requests. It is also | |||
responsible for protecting the resource usage allocated for Trusted | responsible for protecting the resource usage allocated for Trusted | |||
Component management. | Component management. | |||
9.4. CA Compromise or Expiry of CA Certificate | 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, its certificate | |||
certificate might expire, or a Trust Anchor other than a root CA | might expire, or a Trust Anchor other than a root CA certificate may | |||
certificate may also expire or be compromised. TEEs are responsible | also expire or be compromised. TEEs are responsible for validating | |||
for validating the entire TAM certificate path, including the TAM | the entire TAM certification path, including the TAM certificate and | |||
certificate and any intermediate certificates up to the root | any intermediate certificates up to the root certificate. See | |||
certificate. See Section 6 of [RFC5280] for details. Such | Section 6 of [RFC5280] for details. Such validation generally | |||
validation generally includes checking for certificate revocation, | includes checking for certificate revocation, but certificate status | |||
but certificate status check protocols may not scale down to | check protocols may not scale down to constrained devices that use | |||
constrained devices that use TEEP. | TEEP. | |||
To address the above issues, a certificate path update mechanism is | To address the above issues, a certification path update mechanism is | |||
expected from TAM operators, so that the TAM can get a new | expected from TAM operators, so that the TAM can get a new | |||
certificate path that can be validated by a TEEP Agent. In addition, | certification path that can be validated by a TEEP Agent. In | |||
the Trust Anchor in the TEEP Agent's Trust Anchor Store may need to | addition, the Trust Anchor in the TEEP Agent's Trust Anchor Store may | |||
be updated. To address this, some TEE Trust Anchor update mechanism | need to be updated. To address this, a TEE Trust Anchor update | |||
is expected from device OEMs, such as using the TEEP protocol to | mechanism is expected from device equipment manufacturers (OEMs), | |||
distribute new Trust Anchors. | such as using the TEEP protocol to distribute new Trust Anchors. | |||
Similarly, a root CA for TEE certificates might get compromised, or | Similarly, a root CA for TEE certificates might get compromised, its | |||
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. TAMs are responsible | certificate may also expire or be compromised. TAMs are responsible | |||
for validating the entire TEE certificate path, including the TEE | for validating the entire TEE certification path, including the TEE | |||
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 TEE certificate path validation fails, the TEE might be rejected | If a TEE certification path validation fails, the TEE might be | |||
by a TAM, subject to the TAM's policy. To address this, some | rejected by a TAM, subject to the TAM's policy. To address this, a | |||
certificate path update mechanism is expected from device OEMs, so | certification path update mechanism is expected from device OEMs, so | |||
that the TEE can get a new certificate path that can be validated by | that the TEE can get a new certification path that can be validated | |||
a TAM. In addition, the Trust Anchor in the TAM's Trust Anchor Store | by a TAM. In addition, the Trust Anchor in the TAM's Trust Anchor | |||
may need to be updated. | Store may need to be updated. | |||
9.5. Compromised TAM | 9.5. Compromised TAM | |||
Device TEEs are responsible for validating the supplied TAM | Device TEEs are responsible for validating the supplied TAM | |||
certificates. A compromised TAM may bring multiple threats and | certificates. A compromised TAM may bring multiple threats and | |||
damage to user devices that it can manage and thus to the Device | damage to user devices that it can manage and thus to the Device | |||
Owners. Information on devices that the TAM manages may be leaked to | Owners. Information on devices that the TAM manages may be leaked to | |||
a bad actor. A compromised TAM can also install many TAs to launch a | a bad actor. A compromised TAM can also install many TAs to launch a | |||
DoS attack on devices, for example, by filling up a device's TEE | DoS attack on devices, for example, by filling up a device's TEE | |||
resources reserved for TAs such that other TAs may not get resources | resources reserved for TAs such that other TAs may not get resources | |||
to be installed or properly function. It may also install malicious | to be installed or properly function. It may also install malicious | |||
TAs to potentially many devices under the condition that it also has | TAs to potentially many devices under the condition that it also has | |||
a Trusted Component signer key that is trusted by the TEEs. This | a Trusted Component signer key that is trusted by the TEEs. This | |||
makes TAMs high value targets. A TAM could be compromised without | makes TAMs high-value targets. A TAM could be compromised without | |||
impacting its certificate or raising concern from the TAM's operator. | impacting its certificate or raising concern from the TAM's operator. | |||
To mitigate this threat, TEEP Agents and Device Owners have several | To mitigate this threat, TEEP Agents and Device Owners have several | |||
options, including but potentially not limited to those listed below, | options for detecting and mitigating a compromised TAM, including but | |||
for detecting and mitigating a compromised TAM: | potentially not limited to the following: | |||
1. Apply an ACL to the TAM key, limiting which Trusted Components | 1. Apply an ACL to the TAM key, limiting which Trusted Components | |||
the TAM is permitted to install or update. | the TAM is permitted to install or update. | |||
2. Use a transparency log to expose a TAM compromise: TAMs publish | 2. Use a transparency log to expose a TAM compromise. TAMs publish | |||
an out-of-band record of Trusted Component releases, allowing a | an out-of-band record of Trusted Component releases, allowing a | |||
TEE to cross-check the Trusted Components delivered against the | TEE to cross-check the Trusted Components delivered against the | |||
Trusted Component installs in order to detect a TAM compromise. | Trusted Components installed in order to detect a TAM compromise. | |||
3. Use remote attestation of the TAM to prove trustworthiness. | 3. Use remote attestation of the TAM to prove trustworthiness. | |||
9.6. Malicious TA Removal | 9.6. Malicious TA Removal | |||
It is possible that a rogue developer distributes a malicious | It is possible that a rogue developer distributes a malicious | |||
Untrusted Application and intends to get a malicious TA installed. | Untrusted Application and intends to have a malicious TA installed. | |||
Such a TA might be able to escape from malware detection by the REE, | Such a TA might be able to escape from malware detection by the REE | |||
or access trusted resources within the TEE (but could not access | or access trusted resources within the TEE (but could not access | |||
other TEEs, or access other TA's if the TEE provides isolation | other TEEs or other TAs if the TEE provides isolation between TAs). | |||
between TAs). | ||||
It is the responsibility of the TAM to not install malicious TAs in | It is the responsibility of the TAM to not install malicious TAs in | |||
the first place. The TEEP architecture allows a TEEP Agent to decide | the first place. The TEEP architecture allows a TEEP Agent to decide | |||
which TAMs it trusts via Trust Anchors, and delegates the TA | which TAMs it trusts via Trust Anchors and delegate the TA | |||
authenticity check to the TAMs it trusts. | authenticity check to the TAMs it trusts. | |||
It may happen that a TA was previously considered trustworthy but is | A TA that was previously considered trustworthy may later be found to | |||
later found to be buggy or compromised. In this case, the TAM can | be buggy or compromised. In this case, the TAM can initiate the | |||
initiate the removal of the TA by notifying devices to remove the TA | removal of the TA by notifying devices to remove the TA (and | |||
(and potentially the REE or Device Owner to remove any Untrusted | potentially notify the REE or Device Owner to remove any Untrusted | |||
Application that depend on the TA). If the TAM does not currently | Application that depend on the TA). If the TAM does not currently | |||
have a connection to the TEEP Agent on a device, such a notification | have a connection to the TEEP Agent on a device, such a notification | |||
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 6 is updated to treat a previously | example, if the Verifier in Figure 5 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 [RFC9334] for further | |||
further discussion. | discussion. | |||
9.7. TEE Certificate Expiry and Renewal | 9.7. TEE 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 | |||
the lifetime of a device. A TAM certificate usually has a moderate | the lifetime of a device. A TAM certificate usually has a moderate | |||
lifetime of 1 to 5 years. A TAM should get renewed or rekeyed | lifetime of 1 to 5 years. A TAM should get renewed or rekeyed | |||
certificates. The root CA certificates for a TAM, which are embedded | certificates. The root CA certificates for a TAM, which are embedded | |||
into the Trust Anchor Store in a device, should have long lifetimes | into the Trust Anchor Store in a device, should have long lifetimes | |||
that don't require device Trust Anchor updates. On the other hand, | that don't require device Trust Anchor updates. On the other hand, | |||
it is imperative that OEMs or device providers plan for support of | it is imperative that OEMs or device providers plan for support of a | |||
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 | |||
Personalization Data from being disclosed to the TAM that distributes | Personalization Data from being disclosed to the TAM that distributes | |||
them. In such a scenario, the files can be encrypted end-to-end | them. In such a scenario, the files can be encrypted end-to-end | |||
between a Trusted Component Signer and a TEE. However, there must be | between a Trusted Component Signer and a TEE. However, there must be | |||
some means of provisioning the decryption key into the TEE and/or | some means of provisioning the decryption key into the TEE and/or | |||
some means of the Trusted Component Signer securely learning a public | some means of the Trusted Component Signer securely learning a public | |||
key of the TEE that it can use to encrypt. The Trusted Component | key of the TEE that it can use to encrypt. The Trusted Component | |||
Signer cannot necessarily even trust the TAM to report the correct | Signer cannot necessarily even trust the TAM to report the correct | |||
public key of a TEE for use with encryption, since the TAM might | public key of a TEE for use with encryption, since the TAM might | |||
instead provide the public key of a TEE that it controls. | instead provide the public key of a TEE that it controls. | |||
One way to solve this is for the Trusted Component Signer to run its | One way to solve this is for the Trusted Component Signer to run its | |||
own TAM that is only used to distribute the decryption key via the | own TAM that is only used to distribute the decryption key via the | |||
TEEP protocol, and the key file can be a dependency in the manifest | TEEP protocol and the key file can be a dependency in the manifest of | |||
of the encrypted TA. Thus, the TEEP Agent would look at the Trusted | the encrypted TA. Thus, the TEEP Agent would look at the Trusted | |||
Component manifest, determine there is a dependency with a TAM URI of | Component manifest to determine if there is a dependency with a TAM | |||
the Trusted Component Signer's TAM. The Agent would then install the | URI of the Trusted Component Signer's TAM. The Agent would then | |||
dependency, and then continue with the Trusted Component installation | install the dependency and continue with the Trusted Component | |||
steps, including decrypting the TA binary with the relevant key. | installation steps, including decrypting the TA binary with the | |||
relevant key. | ||||
9.9. REE Privacy | 9.9. REE Privacy | |||
The TEEP architecture is applicable to cases where devices have a TEE | The TEEP architecture is applicable to cases where devices have a TEE | |||
that protects data and code from the REE administrator. In such | that protects data and code from the REE administrator. In such | |||
cases, the TAM administrator, not the REE administrator, controls the | cases, the TAM administrator, not the REE administrator, controls the | |||
TEE in the devices. As some examples: | TEE in the devices. Examples include: | |||
* a cloud hoster may be the REE administrator where a customer | * A cloud hoster may be the REE administrator where a customer | |||
administrator controls the TEE hosted in the cloud. | administrator controls the TEE hosted in the cloud. | |||
* a device manufacturer might control the TEE in a device purchased | * A device manufacturer might control the TEE in a device purchased | |||
by a customer | by a customer. | |||
The privacy risk is that data in the REE might be susceptible to | The privacy risk is that data in the REE might be susceptible to | |||
disclosure to the TEE administrator. This risk is not introduced by | disclosure to the TEE administrator. This risk is not introduced by | |||
the TEEP architecture, but is inherent in most uses of TEEs. This | the TEEP architecture, but it is inherent in most uses of TEEs. This | |||
risk can be mitigated by making sure the REE administrator is aware | risk can be mitigated by making sure the REE administrator explicitly | |||
of and explicitly chooses to have a TEE that is managed by another | chooses to have a TEE that is managed by another party. In the cloud | |||
party. In the cloud hoster example, this choice is made by | hoster example, this choice is made by explicitly offering a service | |||
explicitly offering a service to customers to provide TEEs for them | to customers to provide TEEs for them to administer. In the device | |||
to administer. In the device manufacturer example, this choice is | manufacturer example, this choice is made by the customer choosing to | |||
made by the customer choosing to buy a device made by a given | buy a device made by a given manufacturer. | |||
manufacturer. | ||||
10. IANA Considerations | 10. IANA Considerations | |||
This document does not require actions by IANA. | This document has no IANA actions. | |||
11. Contributors | ||||
* Andrew Atyeo, Intercede (andrew.atyeo@intercede.com) | ||||
* Liu Dapeng, Alibaba Group (maxpassion@gmail.com) | ||||
12. Acknowledgements | ||||
We would like to thank Nick Cook, Minho Yoo, Brian Witten, Tyler Kim, | ||||
Alin Mutu, Juergen Schoenwaelder, Nicolae Paladi, Sorin Faibish, Ned | ||||
Smith, Russ Housley, Jeremy O'Donoghue, Anders Rundgren, and Brendan | ||||
Moran for their feedback. | ||||
13. Informative References | 11. Informative References | |||
[CC-Overview] | [CC-Overview] | |||
Confidential Computing Consortium, "Confidential | Confidential Computing Consortium, "Confidential | |||
Computing: Hardware-Based Trusted Execution for | Computing: Hardware-Based Trusted Execution for | |||
Applications and Data", January 2021, | Applications and Data", November 2022, | |||
<https://confidentialcomputing.io/wp- | <https://confidentialcomputing.io/wp- | |||
content/uploads/sites/85/2021/03/ | content/uploads/sites/85/2021/03/ | |||
confidentialcomputing_outreach_whitepaper-8-5x11-1.pdf>. | confidentialcomputing_outreach_whitepaper-8-5x11-1.pdf>. | |||
[CC-Technical-Analysis] | [CC-Technical-Analysis] | |||
Confidential Computing Consortium, "A Technical Analysis | Confidential Computing Consortium, "A Technical Analysis | |||
of Confidential Computing, v1.2", October 2021, | of Confidential Computing", v1.3, November 2022, | |||
<https://confidentialcomputing.io/wp- | <https://confidentialcomputing.io/wp- | |||
content/uploads/sites/85/2022/01/CCC-A-Technical-Analysis- | content/uploads/sites/10/2023/03/CCC-A-Technical-Analysis- | |||
of-Confidential-Computing-v1.2.pdf>. | of-Confidential-Computing-v1.3_unlocked.pdf>. | |||
[GPTEE] GlobalPlatform, "GlobalPlatform Device Technology: TEE | ||||
System Architecture, v1.3", GlobalPlatform GPD_SPE_009, | ||||
May 2022, <https://globalplatform.org/specs-library/tee- | ||||
system-architecture/>. | ||||
[GSMA] GSM Association, "GP.22 RSP Technical Specification, | ||||
Version 2.2.2", June 2020, <https://www.gsma.com/esim/wp- | ||||
content/uploads/2020/06/SGP.22-v2.2.2.pdf>. | ||||
[I-D.ietf-rats-architecture] | ||||
Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | ||||
W. Pan, "Remote Attestation Procedures Architecture", Work | ||||
in Progress, Internet-Draft, draft-ietf-rats-architecture- | ||||
22, 28 September 2022, <https://www.ietf.org/archive/id/ | ||||
draft-ietf-rats-architecture-22.txt>. | ||||
[I-D.ietf-rats-daa] | ||||
Birkholz, H., Newton, C., Chen, L., and D. Thaler, "Direct | ||||
Anonymous Attestation for the Remote Attestation | ||||
Procedures Architecture", Work in Progress, Internet- | ||||
Draft, draft-ietf-rats-daa-02, 7 September 2022, | ||||
<https://www.ietf.org/archive/id/draft-ietf-rats-daa- | ||||
02.txt>. | ||||
[I-D.ietf-rats-eat] | [EAT] Lundblade, L., Mandyam, G., O'Donoghue, J., and C. | |||
Lundblade, L., Mandyam, G., O'Donoghue, J., and C. | ||||
Wallace, "The Entity Attestation Token (EAT)", Work in | Wallace, "The Entity Attestation Token (EAT)", Work in | |||
Progress, Internet-Draft, draft-ietf-rats-eat-17, 22 | Progress, Internet-Draft, draft-ietf-rats-eat-21, 30 June | |||
October 2022, <https://www.ietf.org/archive/id/draft-ietf- | 2023, <https://datatracker.ietf.org/doc/html/draft-ietf- | |||
rats-eat-17.txt>. | rats-eat-21>. | |||
[I-D.ietf-suit-manifest] | ||||
Moran, B., Tschofenig, H., Birkholz, H., Zandberg, K., and | ||||
O. Rønningstad, "A Concise Binary Object Representation | ||||
(CBOR)-based Serialization Format for the Software Updates | ||||
for Internet of Things (SUIT) Manifest", Work in Progress, | ||||
Internet-Draft, draft-ietf-suit-manifest-20, 7 October | ||||
2022, <https://www.ietf.org/archive/id/draft-ietf-suit- | ||||
manifest-20.txt>. | ||||
[I-D.ietf-teep-otrp-over-http] | [GPTEE] GlobalPlatform, "TEE System Architecture v1.3", | |||
Thaler, D., "HTTP Transport for Trusted Execution | GlobalPlatform GPD_SPE_009, May 2022, | |||
Environment Provisioning: Agent Initiated Communication", | <https://globalplatform.org/specs-library/tee-system- | |||
Work in Progress, Internet-Draft, draft-ietf-teep-otrp- | architecture/>. | |||
over-http-14, 14 October 2022, | ||||
<https://www.ietf.org/archive/id/draft-ietf-teep-otrp- | ||||
over-http-14.txt>. | ||||
[I-D.ietf-teep-protocol] | [GSMA] GSM Association, "SGP.22 RSP Technical Specification", | |||
Tschofenig, H., Pei, M., Wheeler, D. M., Thaler, D., and | Version 2.2.2, June 2020, <https://www.gsma.com/esim/wp- | |||
A. Tsukamoto, "Trusted Execution Environment Provisioning | content/uploads/2020/06/SGP.22-v2.2.2.pdf>. | |||
(TEEP) Protocol", Work in Progress, Internet-Draft, draft- | ||||
ietf-teep-protocol-10, 28 July 2022, | ||||
<https://www.ietf.org/archive/id/draft-ietf-teep-protocol- | ||||
10.txt>. | ||||
[OP-TEE] TrustedFirmware.org, "OP-TEE Documentation", 2022, | [OP-TEE] TrustedFirmware.org, "OP-TEE Documentation", | |||
<https://optee.readthedocs.io/en/latest/>. | <https://optee.readthedocs.io/en/latest/>. | |||
[OTRP] GlobalPlatform, "Open Trust Protocol (OTrP) Profile v1.1", | [OTRP] GlobalPlatform, "TEE Management Framework: Open Trust | |||
GlobalPlatform GPD_SPE_123, July 2020, | Protocol (OTrP) Profile v1.1", GlobalPlatform GPD_SPE_123, | |||
<https://globalplatform.org/specs-library/tee-management- | July 2020, <https://globalplatform.org/specs-library/tee- | |||
framework-open-trust-protocol/>. | management-framework-open-trust-protocol/>. | |||
[RATS-DAA] Birkholz, H., Newton, C., Chen, L., and D. Thaler, "Direct | ||||
Anonymous Attestation for the Remote Attestation | ||||
Procedures Architecture", Work in Progress, Internet- | ||||
Draft, draft-ietf-rats-daa-03, 10 March 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-rats- | ||||
daa-03>. | ||||
[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>. | |||
skipping to change at page 38, line 15 ¶ | skipping to change at line 1649 ¶ | |||
[RFC7696] Housley, R., "Guidelines for Cryptographic Algorithm | [RFC7696] Housley, R., "Guidelines for Cryptographic Algorithm | |||
Agility and Selecting Mandatory-to-Implement Algorithms", | Agility and Selecting Mandatory-to-Implement Algorithms", | |||
BCP 201, RFC 7696, DOI 10.17487/RFC7696, November 2015, | BCP 201, RFC 7696, DOI 10.17487/RFC7696, November 2015, | |||
<https://www.rfc-editor.org/info/rfc7696>. | <https://www.rfc-editor.org/info/rfc7696>. | |||
[RFC9019] Moran, B., Tschofenig, H., Brown, D., and M. Meriac, "A | [RFC9019] Moran, B., Tschofenig, H., Brown, D., and M. Meriac, "A | |||
Firmware Update Architecture for Internet of Things", | Firmware Update Architecture for Internet of Things", | |||
RFC 9019, DOI 10.17487/RFC9019, April 2021, | RFC 9019, DOI 10.17487/RFC9019, April 2021, | |||
<https://www.rfc-editor.org/info/rfc9019>. | <https://www.rfc-editor.org/info/rfc9019>. | |||
[RFC9334] Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | ||||
W. Pan, "Remote ATtestation procedureS (RATS) | ||||
Architecture", RFC 9334, DOI 10.17487/RFC9334, January | ||||
2023, <https://www.rfc-editor.org/info/rfc9334>. | ||||
[SGX] Intel, "Intel(R) Software Guard Extensions (Intel (R) | [SGX] Intel, "Intel(R) Software Guard Extensions (Intel (R) | |||
SGX)", n.d., <https://www.intel.com/content/www/us/en/ | SGX)", <https://www.intel.com/content/www/us/en/ | |||
architecture-and-technology/software-guard- | architecture-and-technology/software-guard- | |||
extensions.html>. | extensions.html>. | |||
[SUIT-MANIFEST] | ||||
Moran, B., Tschofenig, H., Birkholz, H., Zandberg, K., and | ||||
O. Rønningstad, "A Concise Binary Object Representation | ||||
(CBOR)-based Serialization Format for the Software Updates | ||||
for Internet of Things (SUIT) Manifest", Work in Progress, | ||||
Internet-Draft, draft-ietf-suit-manifest-22, 27 February | ||||
2023, <https://datatracker.ietf.org/doc/html/draft-ietf- | ||||
suit-manifest-22>. | ||||
[TEEP] Tschofenig, H., Pei, M., Wheeler, D. M., Thaler, D., and | ||||
A. Tsukamoto, "Trusted Execution Environment Provisioning | ||||
(TEEP) Protocol", Work in Progress, Internet-Draft, draft- | ||||
ietf-teep-protocol-15, 3 July 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-teep- | ||||
protocol-15>. | ||||
[TEEP-HTTP] | ||||
Thaler, D., "HTTP Transport for Trusted Execution | ||||
Environment Provisioning: Agent Initiated Communication", | ||||
Work in Progress, Internet-Draft, draft-ietf-teep-otrp- | ||||
over-http-15, 27 March 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-teep- | ||||
otrp-over-http-15>. | ||||
[TrustZone] | [TrustZone] | |||
Arm, "Arm TrustZone Technology", n.d., | Arm, "TrustZone for Cortex-A", | |||
<https://developer.arm.com/ip-products/security-ip/ | <https://www.arm.com/technologies/trustzone-for-cortex-a>. | |||
trustzone>. | ||||
Acknowledgments | ||||
We would like to thank Nick Cook, Minho Yoo, Brian Witten, Tyler Kim, | ||||
Alin Mutu, Juergen Schoenwaelder, Nicolae Paladi, Sorin Faibish, Ned | ||||
Smith, Russ Housley, Jeremy O'Donoghue, Anders Rundgren, and Brendan | ||||
Moran for their feedback. | ||||
Contributors | ||||
Andrew Atyeo | ||||
Intercede | ||||
Email: andrew.atyeo@intercede.com | ||||
Liu Dapeng | ||||
Alibaba Group | ||||
Email: maxpassion@gmail.com | ||||
Authors' Addresses | Authors' Addresses | |||
Mingliang Pei | Mingliang Pei | |||
Broadcom | Broadcom | |||
Email: mingliang.pei@broadcom.com | Email: mingliang.pei@broadcom.com | |||
Hannes Tschofenig | Hannes Tschofenig | |||
Arm Limited | Email: hannes.tschofenig@gmx.net | |||
Email: hannes.tschofenig@arm.com | ||||
Dave Thaler | Dave Thaler | |||
Microsoft | Microsoft | |||
Email: dthaler@microsoft.com | Email: dthaler@microsoft.com | |||
David Wheeler | David Wheeler | |||
Amazon | Amazon | |||
Email: davewhee@amazon.com | Email: davewhee@amazon.com | |||
End of changes. 216 change blocks. | ||||
618 lines changed or deleted | 607 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |