draft-ietf-teep-architecture-00.txt | draft-ietf-teep-architecture-01.txt | |||
---|---|---|---|---|
TEEP M. Pei | TEEP M. Pei | |||
Internet-Draft Symantec | Internet-Draft Symantec | |||
Intended status: Informational H. Tschofenig | Intended status: Informational H. Tschofenig | |||
Expires: January 3, 2019 Arm Ltd. | Expires: April 26, 2019 Arm Limited | |||
D. Wheeler | ||||
Intel | ||||
A. Atyeo | A. Atyeo | |||
Intercede | Intercede | |||
D. Liu | L. Dapeng | |||
Alibaba Group | Alibaba Group | |||
July 2, 2018 | October 23, 2018 | |||
Trusted Execution Environment Provisioning (TEEP) Architecture | Trusted Execution Environment Provisioning (TEEP) Architecture | |||
draft-ietf-teep-architecture-00.txt | draft-ietf-teep-architecture-01 | |||
Abstract | Abstract | |||
A Trusted Execution Environment (TEE) was designed to provide a | A Trusted Execution Environment (TEE) is designed to provide a | |||
hardware-isolation mechanism to separate a regular operating system | hardware-isolation mechanism to separate a regular operating system | |||
from security- sensitive applications. | from security-sensitive application components. | |||
This architecture document motivates the design and standardization | This architecture document motivates the design and standardization | |||
of a protocol for managing the lifecyle of trusted applications | of a protocol for managing the lifecycle of trusted applications | |||
running inside a TEE. | running inside a TEE. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 3, 2019. | This Internet-Draft will expire on April 26, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
This document may contain material from IETF Documents or IETF | ||||
Contributions published or made publicly available before November | ||||
10, 2008. The person(s) controlling the copyright in some of this | ||||
material may not have granted the IETF Trust the right to allow | ||||
modifications of such material outside the IETF Standards Process. | ||||
Without obtaining an adequate license from the person(s) controlling | ||||
the copyright in such materials, this document may not be modified | ||||
outside the IETF Standards Process, and derivative works of it may | ||||
not be created outside the IETF Standards Process, except to format | ||||
it for publication as an RFC or to translate it into languages other | ||||
than English. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Scope and Assumptions . . . . . . . . . . . . . . . . . . . . 6 | 3. Scope and Assumptions . . . . . . . . . . . . . . . . . . . . 7 | |||
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | 4.2. Authentication . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.3. Internet of Things . . . . . . . . . . . . . . . . . . . 7 | 4.3. Internet of Things . . . . . . . . . . . . . . . . . . . 9 | |||
4.4. Confidential Cloud Computing . . . . . . . . . . . . . . 7 | 4.4. Confidential Cloud Computing . . . . . . . . . . . . . . 9 | |||
5. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
5.1. System Components . . . . . . . . . . . . . . . . . . . . 7 | 5.1. System Components . . . . . . . . . . . . . . . . . . . . 9 | |||
5.2. Entity Relations . . . . . . . . . . . . . . . . . . . . 9 | 5.2. Different Renditions of TEEP Architecture . . . . . . . . 12 | |||
5.3. Trust Anchors in TEE . . . . . . . . . . . . . . . . . . 12 | 5.3. Entity Relations . . . . . . . . . . . . . . . . . . . . 12 | |||
5.4. Trust Anchors in TAM . . . . . . . . . . . . . . . . . . 12 | 5.4. Trust Anchors in TEE . . . . . . . . . . . . . . . . . . 15 | |||
5.5. Keys and Certificate Types . . . . . . . . . . . . . . . 12 | 5.5. Trust Anchors in TAM . . . . . . . . . . . . . . . . . . 15 | |||
5.6. Scalability . . . . . . . . . . . . . . . . . . . . . . . 15 | 5.6. Keys and Certificate Types . . . . . . . . . . . . . . . 15 | |||
5.7. Message Security . . . . . . . . . . . . . . . . . . . . 15 | 5.7. Scalability . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
5.8. Security Domain Hierarchy and Ownership . . . . . . . . . 15 | 5.8. Message Security . . . . . . . . . . . . . . . . . . . . 18 | |||
5.9. SD Owner Identification and TAM Certificate Requirements 16 | 5.9. Security Domain Hierarchy and Ownership . . . . . . . . . 18 | |||
5.10. Service Provider Container . . . . . . . . . . . . . . . 17 | 5.10. SD Owner Identification and TAM Certificate Requirements 19 | |||
5.11. A Sample Device Setup Flow . . . . . . . . . . . . . . . 17 | 5.11. Service Provider Container . . . . . . . . . . . . . . . 20 | |||
6. Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.12. A Sample Device Setup Flow . . . . . . . . . . . . . . . 20 | |||
6.1. Role of the Agent . . . . . . . . . . . . . . . . . . . . 18 | 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
6.2. Agent Implementation Consideration . . . . . . . . . . . 19 | 6.1. Role of the Agent . . . . . . . . . . . . . . . . . . . . 22 | |||
6.2.1. Agent Distribution . . . . . . . . . . . . . . . . . 19 | 6.2. Agent Implementation Consideration . . . . . . . . . . . 22 | |||
6.2.2. Number of Agents . . . . . . . . . . . . . . . . . . 19 | 6.2.1. Agent Distribution . . . . . . . . . . . . . . . . . 22 | |||
7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 6.2.2. Number of Agents . . . . . . . . . . . . . . . . . . 23 | |||
7.1. Attestation Hierarchy . . . . . . . . . . . . . . . . . . 20 | 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
7.1.1. Attestation Hierarchy Establishment: Manufacture . . 20 | 7.1. Attestation Hierarchy . . . . . . . . . . . . . . . . . . 23 | |||
7.1.2. Attestation Hierarchy Establishment: Device Boot . . 20 | 7.1.1. Attestation Hierarchy Establishment: Manufacture . . 23 | |||
7.1.3. Attestation Hierarchy Establishment: TAM . . . . . . 21 | 7.1.2. Attestation Hierarchy Establishment: Device Boot . . 24 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 | 7.1.3. Attestation Hierarchy Establishment: TAM . . . . . . 24 | |||
9. Security Consideration . . . . . . . . . . . . . . . . . . . 21 | 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 24 | |||
9.1. TA Trust Check at TEE . . . . . . . . . . . . . . . . . . 21 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
9.2. One TA Multiple SP Case . . . . . . . . . . . . . . . . . 22 | 9.1. TA Trust Check at TEE . . . . . . . . . . . . . . . . . . 25 | |||
9.3. Agent Trust Model . . . . . . . . . . . . . . . . . . . . 22 | 9.2. One TA Multiple SP Case . . . . . . . . . . . . . . . . . 25 | |||
9.4. Data Protection at TAM and TEE . . . . . . . . . . . . . 22 | 9.3. Agent Trust Model . . . . . . . . . . . . . . . . . . . . 25 | |||
9.5. Compromised CA . . . . . . . . . . . . . . . . . . . . . 22 | 9.4. Data Protection at TAM and TEE . . . . . . . . . . . . . 26 | |||
9.6. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 22 | 9.5. Compromised CA . . . . . . . . . . . . . . . . . . . . . 26 | |||
9.7. Certificate Renewal . . . . . . . . . . . . . . . . . . . 23 | 9.6. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 26 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 9.7. Certificate Renewal . . . . . . . . . . . . . . . . . . . 26 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 23 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 23 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 27 | ||||
12.2. Informative References . . . . . . . . . . . . . . . . . 27 | ||||
Appendix A. History . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
1. Introduction | 1. Introduction | |||
The Trusted Execution Environment (TEE) concept has been designed to | Applications executing in a device are exposed to many different | |||
separate a regular operating system, also referred as a Rich | attacks intended to compromise the execution of the application, or | |||
Execution Environment (REE), from security- sensitive applications. | reveal the data upon which those applications are operating. These | |||
A TEE provides hardware-enforcement so that any data inside the TEE | attacks increase with the number of other applications on the device, | |||
cannot be read by code outside of the TEE. Compromising a REE and | with such other applications coming from potentially untrustworthy | |||
normal applications in the REE do not affect code inside the TEE, | sources. The potential for attacks further increase with the | |||
which is called a Trusted Application (TA), running inside the TEE. | complexity of features and applications on devices, and the | |||
unintended interactions among those features and applications. The | ||||
danger of attacks on a system increases as the sensitivity of the | ||||
applications or data on the device increases. As an example, | ||||
exposure of emails from a mail client is likely to be of concern to | ||||
its owner, but a compromise of a banking application raises even | ||||
greater concerns. | ||||
In an TEE ecosystem, a Trusted Application Manager (TAM) is commonly | The Trusted Execution Environment (TEE) concept is designed to | |||
used to manage keys and TAs that run in a device. Different device | execute applications in a protected environment that separates | |||
vendors may use different TEE implementations. Different application | applications inside the TEE from the regular operating system and | |||
providers or device administrators may choose to use different TAM | from other applications on the device. This separation reduces the | |||
providers. | possibility of a successful attack on application components and the | |||
data contained inside the TEE. Typically, application components are | ||||
chosen to execute inside a TEE because those application components | ||||
perform security sensitive operations or operate on sensitive data. | ||||
To simplify the life of developers an interoperable protocol for | An application component running inside a TEE is referred to as a | |||
managing TAs running in different TEEs of various devices is needed. | Trusted Application (TA), while a normal application running in the | |||
regular operating system is referred to as an Untrusted Application | ||||
(UA). | ||||
The protocol addresses the following problems. | The TEE uses hardware to enforce protections on the TA and its data, | |||
but also presents a more limited set of services to applications | ||||
inside the TEE than is normally available to UA's running in the | ||||
normal operating system. | ||||
1. A Device Administrator (DA) or Service Provider (SP) of the | But not all TEEs are the same, and different vendors may have | |||
device users needs to determine security-relevant information of | different implementations of TEEs with different security properties, | |||
a device before provisioning the TA to the device with a TEE. | different features, and different control mechanisms to operate on | |||
Examples include the verification of the device 'root of trust' | TAs. Some vendors may themselves market multiple different TEEs with | |||
and the type of TEE included in a device. | different properties attuned to different markets. A device vendor | |||
may integrate one or more TEEs into their devices depending on market | ||||
needs. | ||||
2. A TEE in a device needs to determine whether a Device | To simplify the life of developers and service providers interacting | |||
Administrator (DA) or a Service Provider (SP) that wants to | with TAs in a TEE, an interoperable protocol for managing TAs running | |||
manage an TA in the device is authorized to manage applications | in different TEEs of various devices is needed. In this TEE | |||
in the TEE. | ecosystem, there often arises a need for an external trusted party to | |||
verify the identity, claims, and rights of Service Providers(SP), | ||||
devices, and their TEEs. This trusted third party is the Trusted | ||||
Application Manager (TAM). | ||||
3. Attestation must be able to ensure a TEE is genuine. | This protocol addresses the following problems: | |||
- A Service Provider (SP) intending to provide services through a TA | ||||
to users of a device needs to determine security-relevant | ||||
information of a device before provisioning their TA to the TEE | ||||
within the device. Examples include the verification of the | ||||
device 'root of trust' and the type of TEE included in a device. | ||||
- A TEE in a device needs to determine whether a Service Provider | ||||
(SP) that wants to manage a TA in the device is authorized to | ||||
manage TAs in the TEE, and what TAs the SP is permitted to manage. | ||||
- The parties involved in the protocol must be able to attest that a | ||||
TEE is genuine and capable of providing the security protections | ||||
required by a particular TA. | ||||
- A Service Provider (SP) must be able to deterine if a TA exists | ||||
(is installed) on a device (in the TEE), and if not, install the | ||||
TA in the TEE. | ||||
- A Service Provider (SP) must be able to check whether a TA in a | ||||
device's TEE is the most up-to-date version, and if not, update | ||||
the TA in the TEE. | ||||
- A Service Provider (SP) must be able to remove a TA in a device's | ||||
TEE if the SP is no longer offering such services or the services | ||||
are being revoked from a particular user (or device). For | ||||
example, if a subscription or contract for a particular service | ||||
has expired, or a payment by the user has not been completed or | ||||
has been recinded. | ||||
- A Service Provider (SP) must be able to define the relationship | ||||
between cooperating TAs under the SP's control, and specify | ||||
whether the TAs can communicate, share data, and/or share key | ||||
material. | ||||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
Client Application: An application running on a rich OS, such as an | The following terms are used: | |||
Android, Windows, or iOS application. | ||||
Device: A physical piece of hardware that hosts a TEE along with a | - Client Application: An application running in a Rich Execution | |||
rich OS. | Environment, such as an Android, Windows, or iOS application. | |||
Agent: An application running in the rich OS allowing the message | - Device: A physical piece of hardware that hosts a TEE along with a | |||
protocol exchange between a TAM and a TEE in a device. A TEE is | Rich Execution Environment. A Device contains a default list of | |||
responsible to processing relayed messages and for returning an | Trust Anchors that identify entities (e.g., TAMs) that are trusted | |||
appropriate reponse. | by the Device. This list is normally set by the Device | |||
Manufacturer, and may be governed by the Device's network carrier. | ||||
The list of Trust Anchors is normally modifiable by the Device's | ||||
owner or Device Administrator. However the Device manufacturer | ||||
and network carrier may restrict some modifications, for example, | ||||
by not allowing the manufacturer or carrier's Trust Anchor to be | ||||
removed or disabled. | ||||
Rich Execution Environment (REE) An environment that is provided and | - Rich Execution Environment (REE): An environment that is provided | |||
governed by a typical OS (Linux, Windows, Android, iOS, etc.), | and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | |||
potentially in conjunction with other supporting operating | potentially in conjunction with other supporting operating systems | |||
systems and hypervisors; it is outside of the TEE. This | and hypervisors; it is outside of the TEE. This environment and | |||
environment and applications running on it are considered un- | applications running on it are considered un-trusted. | |||
trusted. | ||||
Secure Boot Module (SBM): A firmware in a device that delivers | - Service Provider (SP): An entity that wishes to provide a service | |||
secure boot functionality. It is generally signed and can be | on Devices that requires the use of one or more Trusted | |||
verified whether it can be trusted. | Applications. A Service Provider requires the help of a TAM in | |||
order to provision the Trusted Applications to remote devices. | ||||
Service Provider (SP): An entity that wishes to supply Trusted | - Device Administrator: An entity that owns or is responsible for | |||
Applications to remote devices. A Service Provider requires the | administration of a Device. A Device Administrator has privileges | |||
help of a TAM in order to provision the Trusted Applications to | on the Device to install and remove applications and TAs, approve | |||
the devices. | or reject Trust Anchors, and approve or reject Service Providers, | |||
among possibly other privileges on the Device. A device owner can | ||||
manage the list of allowed TAMs by modifying the list of Trust | ||||
Anchors on the Device. Although a Device Administrator may have | ||||
privileges and Device-specific controls to locally administer a | ||||
device, the Device Administrator may choose to remotely | ||||
administrate a device through a TAM. | ||||
Trust Anchor: A root certificate that can be used to validate its | - Trust Anchor: A public key in a device whose corresponding private | |||
children certificates. It is usually embedded in a device or | key is held by an entity implicitly trusted by the device. The | |||
configured by a TAM for validating the trust of a remote entity's | Trust Anchor may be a certificate or it may be a raw public key. | |||
certificate. | The trust anchor is normally stored in a location that resists | |||
unauthorized modification, insertion, or replacement. | ||||
The trust anchor private key owner can sign certificates of other | ||||
public keys, which conveys trust about those keys to the device. | ||||
A certificate signed by the trust anchor communicates that the | ||||
private key holder of the signed certificate is trusted by the | ||||
trust anchor holder, and can therefore be trusted by the device. | ||||
Trusted Application (TA): An Application that runs in a TEE. | - Trusted Application (TA): An application component that runs in a | |||
TEE. | ||||
Trusted Execution Environment (TEE): An execution environment that | - Trusted Execution Environment (TEE): An execution environment that | |||
runs alongside of, but is isolated from, an REE. A TEE has | runs alongside of, but is isolated from, an REE. A TEE has | |||
security capabilities and meets certain security-related | security capabilities and meets certain security-related | |||
requirements. It protects TEE assets from general software | requirements. It protects TEE assets from general software | |||
attacks, defines rigid safeguards as to data and functions that a | attacks, defines rigid safeguards as to data and functions that a | |||
program can access, and resists a set of defined threats. It | program can access, and resists a set of defined threats. It | |||
should have at least the following three properties: | should have at least the following three properties: | |||
(a) A device unique credential that cannot be cloned; | (a) A device unique credential that cannot be cloned; | |||
(b) Assurance that only authorized code can run in the TEE; | (b) Assurance that only authorized code can run in the TEE; | |||
(c) Memory that cannot be read by code outside of TEE. | (c) Memory that cannot be read by code outside the TEE. | |||
There are multiple technologies that can be used to implement a | There are multiple technologies that can be used to implement a | |||
TEE, and the level of security achieved varies accordingly. | TEE, and the level of security achieved varies accordingly. | |||
Trusted Firmware (TFW): A signed SBM firmware that can be verified | - Root-of-Trust (RoT): A hardware or software component in a device | |||
and is trusted by a TEE in a device. | that is inherently trusted to perform a certain security-critical | |||
function. A RoT should be secure by design, small, and protected | ||||
by hardware against modification or interference. Examples of | ||||
RoTs include software/firmware measurement and verification using | ||||
a trust anchor (RoT for Verification), provide signed assertions | ||||
using a protected attestation key (RoT for Reporting), or protect | ||||
the storage and/or use of cryptographic keys (RoT for Storage). | ||||
Other RoTs are possible, including RoT for Integrity, and RoT for | ||||
Measurement. Reference: NIST SP800-164 (Draft). | ||||
- Trusted Firmware (TFW): A firmware in a device that can be | ||||
verified with a trust anchor by RoT for Verification. | ||||
- Bootloader key: This symmetric key is protected by | ||||
electronic fuse (eFUSE) technology. In this context it is used to | ||||
decrypt a | ||||
TFW private key, which belongs to a device-unique private/public | ||||
key pair. Not every device is equipped with a bootloader key. | ||||
This document uses the following abbreviations: | This document uses the following abbreviations: | |||
CA Certificate Authority | - CA: Certificate Authority | |||
REE Rich Execution Environment | - REE: Rich Execution Environment | |||
SD Security Domain | - RoT: Root of Trust | |||
SP Service Provider | - SD: Security Domain | |||
SBM Secure Boot Module | - SP: Service Provider | |||
TA Trusted Application | - TA: Trusted Application | |||
TEE Trusted Execution Environment | - TAM: Trusted Application Manager | |||
TFW Trusted Firmware | - TEE: Trusted Execution Environment | |||
TAM Trusted Application Manager | - TFW: Trusted Firmware | |||
3. Scope and Assumptions | 3. Scope and Assumptions | |||
This specification assumes that an applicable device is equipped with | This specification assumes that an applicable device is equipped with | |||
one or more TEEs and each TEE is pre-provisioned with a device-unique | one or more TEEs and each TEE is pre-provisioned with a device-unique | |||
public/private key pair, which is securely stored. This key pair is | public/private key pair, which is securely stored. This key pair is | |||
referred to as the 'root of trust' for remote attestation of the | referred to as the 'root of trust' for remote attestation of the | |||
associated TEE in a device by an TAM. | associated TEE in a device by an TAM. | |||
New note: SD is for managing keys for TAs | ||||
A Security Domain (SD) concept is used as the security boundary | A Security Domain (SD) concept is used as the security boundary | |||
inside a TEE for trusted applications. Each SD is typically | inside a TEE for trusted applications. Each SD is typically | |||
associated with one TA provider as the owner, which is a logical | associated with one TA provider as the owner, which is a logical | |||
space that contains a SP's TAs. One TA provider may request to have | space that contains an SP's TAs. One TA provider may request to have | |||
multiple SDs in a TEE. One SD may contain multiple TAs. Each | multiple SDs in a TEE. One SD may contain multiple TAs. Each | |||
Security Domain requires the management operations of TAs in the form | Security Domain requires the management operations of TAs in the form | |||
of installation, update and deletion. | of installation, update and deletion. | |||
A TA binary and configuration data can be from two sources: | Each TA binary and configuration data can be from either of two | |||
sources: | ||||
1. A TAM supplies the signed and encrypted TA binary | 1. A TAM supplies the signed and encrypted TA binary and any | |||
required configuration data | ||||
2. A Client Application supplies the TA binary | 2. A Client Application supplies the TA binary | |||
The architecture covers the first case where the TA binary and | The architecture covers the first case where the TA binary and | |||
configuration data are delivered from a TAM. The second case calls | configuration data are delivered from a TAM. The second case calls | |||
for an extension when a TAM is absent. | for an extension when a TAM is absent. | |||
Messages exchange with a TAM require some transport and HTTPS is one | ||||
commonly used transport. | ||||
4. Use Cases | 4. Use Cases | |||
4.1. Payment | 4.1. Payment | |||
A payment application in a mobile device requires high security and | A payment application in a mobile device requires high security and | |||
trust about the hosting device. Payments initiated from a mobile | trust about the hosting device. Payments initiated from a mobile | |||
device can use a Trusted Application running inside TEE in the device | device can use a Trusted Application to provide strong identification | |||
to provide strong identification and proof of transaction. | and proof of transaction. | |||
For a mobile payment application, some biometric identification | For a mobile payment application, some biometric identification | |||
information could also be stored in the TEE. The mobile payment | information could also be stored in a TEE. The mobile payment | |||
application can use such information for authentication. | application can use such information for authentication. | |||
A secure user interface (UI) may be used in a mobile device to | A secure user interface (UI) may be used in a mobile device to | |||
prevent malicious software from stealing sensitive user input data. | prevent malicious software from stealing sensitive user input data. | |||
Such an application implementation often relies on TEE for user input | Such an application implementation often relies on a TEE for user | |||
protection. | input protection. | |||
4.2. Authentication | 4.2. Authentication | |||
For better security of authentication, a devices may store its | For better security of authentication, a device may store its | |||
sensitive authentication keys inside a TEE of the device, providing | sensitive authentication keys inside a TEE, providing hardware- | |||
hardware-protected security key strength and trusted execution code. | protected security key strength and trusted code execution. | |||
4.3. Internet of Things | 4.3. Internet of Things | |||
Internet of Things (IoT) has been posing threats to networks and | The Internet of Things (IoT) has been posing threats to networks and | |||
national infrastructures because of existing weak security in | national infrastructures because of existing weak security in | |||
devices. It is very desirable that IoT devices can prevent a malware | devices. It is very desirable that IoT devices can prevent malware | |||
from stealing or modifying sensitive data such as authentication | from manipulating actuators (e.g., unlocking a door), or stealing or | |||
credentials in the device. A TEE can be the best way to implement | modifying sensitive data such as authentication credentials in the | |||
such IoT security functions. | device. A TEE can be the best way to implement such IoT security | |||
functions. | ||||
TEEs could be used to store variety of sensitive data for IoT | TEEs could be used to store variety of sensitive data for IoT | |||
devices. For example, a TEE could be used in smart door locks to | devices. For example, a TEE could be used in smart door locks to | |||
store a user's biometric information for identification, and for | store a user's biometric information for identification, and for | |||
protecting access the locking mechanism. Bike-sharing is another | protecting access the locking mechanism. | |||
example that shares a similar usage scenario. | ||||
4.4. Confidential Cloud Computing | 4.4. Confidential Cloud Computing | |||
A tenant can store sensitive data in a TEE in a cloud computing | A tenant can store sensitive data in a TEE in a cloud computing | |||
server such that only the tenant can access the data, preventing the | server such that only the tenant can access the data, preventing the | |||
cloud host provider from accessing the data. A tenant can run TAs | cloud hosting provider from accessing the data. A tenant can run TAs | |||
inside a server TEE for secure operation and enhanced data security. | inside a server TEE for secure operation and enhanced data security. | |||
This provides benefits not only to tenants with better data security | This provides benefits not only to tenants with better data security | |||
but also to cloud host provider for reduced liability and increased | but also to cloud hosting provider for reduced liability and | |||
cloud adoption. | increased cloud adoption. | |||
5. Architecture | 5. Architecture | |||
5.1. System Components | 5.1. System Components | |||
The following are the main components in the system. | The following are the main components in the system. Full | |||
descriptions of components not previously defined are provided below. | ||||
Interactions of all components are further explained in the following | ||||
paragraphs. | ||||
TAM: A TAM is responsible for originating and coordinating lifecycle | +-------------------------------------------+ | |||
management activity on a particular TEE on behalf of a Service | | Device | | |||
Provider or a Device Administrator. For example, a payment | | +--------+ | Service Provider | |||
application provider, which also provides payment service as a | | | |----------+ | | |||
Service Provider using its payment TA, may choose to use a TAM | | +-------------+ | TEEP |---------+| | | |||
that it runs or a third party TAM service to distribute and | | | TEE-1 |<------| Broker | | || +--------+ | | |||
update its payment TA application in payment user devices. The | | | | | |<---+ | |+-->| |<-+ | |||
payment SP isn't a device administrator of the user devices. A | | | | | | | | | +-| TAM-1 | | |||
user who chooses to download the payment TA into its devices acts | | | | | |<-+ | | +->| | |<-+ | |||
as the device administrator, authorizing the TA installation via | | | +---+ +---+ | +--------+ | | | | +--------+ | | |||
the downloading consent. The device manufacturer is typically | | | |TA1| |TA2| | | | | | TAM-2 | | | |||
responsible for embedding the TAM trust verification capability | | +-->| | | | | +-------+ | | | +--------+ | | |||
in its device TEE. | | | | | | | |<---------| App-2 |--+ | | | | |||
| | | +---+ +---+ | +-------+ | | | Device Administrator | ||||
| | +-------------+ | App-1 | | | | | ||||
| | | | | | | | ||||
| +--------------------| |---+ | | | ||||
| | |--------+ | | ||||
| +-------+ | | ||||
+-------------------------------------------+ | ||||
A TAM may be used by one SP or many SPs where a TAM may run as a | Figure 1: Notional Architecture of TEEP | |||
Software-as-a-Service (SaaS). A TAM may provide Security Domain | ||||
management and TA management in a device for the SD and TAs that | ||||
a SP owns. In particular, a TAM typically offers over-the-air | ||||
update to keep a SP's TAs up-to-date and clean up when a version | ||||
should be removed. A TEE administrator or device administrator | ||||
may decide TAMs that it trusts to manage its devices. | ||||
Certification Authority (CA): Certificate-based credentials used for | - Service Providers and Device Administrators utilize the services | |||
authenticating a device, a TAM and an SP. A device embeds a list | of a TAM to manage TAs on Devices. SPs do not directly interact | |||
of root certificates (trust anchors), from trusted CAs that a TAM | with devices. DAs may elect to use a TAM for remote | |||
will be validated against. A TAM will remotely attest a device | administration of TAs instead of managing each device directly. | |||
by checking whether a device comes with a certificate from a CA | ||||
that the TAM trusts. The CAs do not need to be the same; | ||||
different CAs can be chosen by each TAM, and different device CAs | ||||
can be used by different device manufacturers. | ||||
TEE: A TEE in a device is responsible for protecting applications | - TAM: A TAM is responsible for performing lifecycle management | |||
from attack, enabling the application to perform secure | activity on TA's and SD's on behalf of Service Providers and | |||
operations. | Device Administrators. This includes creation and deletion of | |||
TA's and SD's, and may include, for example, over-the-air updates | ||||
to keep an SP's TAs up-to-date and clean up when a version should | ||||
be removed. TAMs may provide services that make it easier for SPs | ||||
or DAs to use the TAM's service to manage multiple devices, | ||||
although that is not required of a TAM. | ||||
REE: The REE in a device is responsible for enabling off-device | The TAM performs its management of TA's and SD's through an | |||
communications to be established between a TEE and TAM. The | interaction with a Device's TEEP Broker. As shown in | |||
architecture does not assume or require that the REE or Client | #notionalarch, the TAM cannot directly contact a Device, but must | |||
Applications is secure. | wait for a the TEEP Broker or a Client Application to contact the | |||
TAM requesting a particular service. This architecture is | ||||
intentional in order to accommodate network and application | ||||
firewalls that normally protect user and enterprise devices from | ||||
arbitrary connections from external network entities. | ||||
Agent: A Client Application is expected to communicate with a TAM to | A TAM may be publically available for use by many SPs, or a TAM | |||
request TAs that it needs to use. The Client Application needs | may be private, and accessible by only one or a limited number of | |||
to pass the messages from the TAM to TEEs in the device. This | SPs. It is expected that manufacturers and carriers will run | |||
calls for a component in REE that the Client Application can use | their own private TAM. Another example of a private TAM is a TAM | |||
to pass messages to TEEs. An Agent is this component to fill the | running as a Software-as-a-Service (SaaS) within an SP. | |||
role. In other words, an Agent is an application in the REE or | ||||
software library that can simply relays messages from a Client | ||||
Application to a TEE in the device. A device usually comes with | ||||
only one active TEE. A TEE that supports may provide such an | ||||
Agent to the device manufacturer to be bundled in devices. Such | ||||
a compliant TEE must also include an Agent counterpart, namely, a | ||||
processing module inside the TEE, to parse TAM messages sent | ||||
through the Agent. An Agent is generally acting as a dummy | ||||
relaying box with just the TEE interacting capability; it doesn't | ||||
need and shouldn't parse protocol messages. | ||||
Device Administrator: A device owner or administrator may want to | A SP or Device Administrator chooses a particular TAM based on | |||
manage what TAs allowed to run in its devices. A default list of | whether the TAM is trusted by a Device or set of Devices. The TAM | |||
allowed TA trust root CA certificates is included in a device by | is trusted by a device if the TAM's public key is an authorized | |||
the device's manufacturer, which may be governed by the device | Trust Anchor in the Device. A SP or Device Administrator may run | |||
carriers sometimes. There may be needs to expose overriding | their own TAM, however the Devices they wish to manage must | |||
capability for a device owner to decide the list of allowed TAs | include this TAM's pubic key in the Trust Anchor list. | |||
by updating the list of trusted CA certificates. | ||||
Secure Boot: Secure boot must enable authenticity checking of TEEs | A SP or Device Administrator is free to utilize multiple TAMs. | |||
by the TAM. Note that some TEE implementations do not require | This may be required for a SP to manage multiple different types | |||
secure boot functionality. | of devices from different manufacturers, or devices on different | |||
carriers, since the Trust Anchor list on these different devices | ||||
may contain different TAMs. A Device Administrator may be able to | ||||
add their own TAM's public key or certificate to the Trust Anchor | ||||
list on all their devices, overcoming this limitation. | ||||
5.2. Entity Relations | Any entity is free to operate a TAM. For a TAM to be successful, | |||
it must have its public key or certificate installed in Devices | ||||
Trust Anchor list. A TAM may set up a relationship with device | ||||
manufacturers or carriers to have them install the TAM's keys in | ||||
their device's Trust Anchor list. Alternatively, a TAM may | ||||
publish its certificate and allow Device Administrators to install | ||||
the TAM's certificate in their devices as an after-market-action. | ||||
- TEEP Broker: The TEEP Broker is an application running in a Rich | ||||
Execution Environment that enables the message protocol exchange | ||||
between a TAM and a TEE in a device. The TEEP Broker does not | ||||
process messages on behalf of a TEE, but merely is responsible for | ||||
relaying messages from the TAM to the TEE, and for returning the | ||||
TEE's responses to the TAM. | ||||
A Client Application is expected to communicate with a TAM to | ||||
request TAs that it needs to use. The Client Application needs to | ||||
pass the messages from the TAM to TEEs in the device. This calls | ||||
for a component in the REE that Client Applications can use to | ||||
pass messages to TEEs. An Agent is thus an application in the REE | ||||
or software library that can relay messages from a Client | ||||
Application to a TEE in the device. A device usually comes with | ||||
only one active TEE. A TEE may provide such an Agent to the | ||||
device manufacturer to be bundled in devices. Such a TEE must | ||||
also include an Agent counterpart, namely, a processing module | ||||
inside the TEE, to parse TAM messages sent through the Agent. An | ||||
Agent is generally acting as a dummy relaying box with just the | ||||
TEE interacting capability; it doesn't need and shouldn't parse | ||||
protocol messages. | ||||
- Certification Authority (CA): Certificate-based credentials used | ||||
for authenticating a device, a TAM and an SP. A device embeds a | ||||
list of root certificates (trust anchors), from trusted CAs that a | ||||
TAM will be validated against. A TAM will remotely attest a | ||||
device by checking whether a device comes with a certificate from | ||||
a CA that the TAM trusts. The CAs do not need to be the same; | ||||
different CAs can be chosen by each TAM, and different device CAs | ||||
can be used by different device manufacturers. | ||||
5.2. Different Renditions of TEEP Architecture | ||||
5.3. Entity Relations | ||||
This architecture leverages asymmetric cryptography to authenticate a | This architecture leverages asymmetric cryptography to authenticate a | |||
device towards a TAM. Additionally, a TEE in a device authenticates | device to a TAM. Additionally, a TEE in a device authenticates a TAM | |||
a TAM provider and TA signer. The provisioning of trust anchors to a | and TA signer. The provisioning of trust anchors to a device may | |||
device may different from one use case to the other. The device | different from one use case to the other. A device administrator may | |||
administrator may want to have the capability to control what TAs are | want to have the capability to control what TAs are allowed. A | |||
allowed. A device manufacturer enables verification of the TA | device manufacturer enables verification of the TA signers and TAM | |||
signers and TAM providers; it may embed a list of default trust | providers; it may embed a list of default trust anchors that the | |||
anchors that the signer of an allowed TA's signer certificate should | signer of an allowed TA's signer certificate should chain to. A | |||
chain to. A device administrator may choose to accept a subset of | device administrator may choose to accept a subset of the allowed TAs | |||
the allowed TAs via consent or action of downloading. | via consent or action of downloading. | |||
PKI CA -- CA CA -- | PKI CA -- CA CA -- | |||
| | | | | | | | |||
| | | | | | | | |||
| | | | | | | | |||
Device | | --- Agent / Client App --- | | Device | | --- Agent / Client App --- | | |||
SW | | | | | | SW | | | | | | |||
| | | | | | | | | | | | |||
| | | | | | | | | | | | |||
| -- TEE TAM------- | | -- TEE TAM------- | |||
| | | | |||
| | | | |||
FW | FW | |||
Figure 1: Entities | Figure 2: Entities | |||
(App Developer) (App Store) (TAM) (Device with TEE) (CAs) | (App Developer) (App Store) (TAM) (Device with TEE) (CAs) | |||
| | | | | | |||
| --> (Embedded TEE cert) <-- | | --> (Embedded TEE cert) <-- | |||
| | | | | | |||
| <------------------------------ Get an app cert ----- | | | <------------------------------ Get an app cert ----- | | |||
| | <-- Get a TAM cert ------ | | | | <-- Get a TAM cert ------ | | |||
| | | | |||
1. Build two apps: | 1. Build two apps: | |||
Client App | Client App | |||
TA | TA | |||
| | | | |||
| | | | |||
Client App -- 2a. --> | ----- 3. Install -------> | | Client App -- 2a. --> | ----- 3. Install -------> | | |||
TA ------- 2b. Supply ------> | 4. Messaging-->| | TA ------- 2b. Supply ------> | 4. Messaging-->| | |||
| | | | | | | | | | |||
Figure 2: Developer Experience | Figure 3: Developer Experience | |||
Figure 2 shows an application developer building two applications: 1) | Figure 3 shows an application developer building two applications: 1) | |||
a rich Client Application; 2) a TA that provides some security | a rich Client Application; 2) a TA that provides some security | |||
functions to be run inside a TEE. At step 2, the application | functions to be run inside a TEE. At step 2, the application | |||
developer uploads the Client Application (2a) to an Application | developer uploads the Client Application (2a) to an Application | |||
Store. The Client Application may optionally bundle the TA binary. | Store. The Client Application may optionally bundle the TA binary. | |||
Meanwhile, the application developer may provide its TA to a TAM | Meanwhile, the application developer may provide its TA to a TAM | |||
provider that will be managing the TA in various devices. 3. A user | provider that will be managing the TA in various devices. 3. A user | |||
will go to an Application Store to download the Client Application. | will go to an Application Store to download the Client Application. | |||
The Client Application will trigger TA installation by calling TAM. | The Client Application will trigger TA installation by initiating | |||
This is the step 4. The Client Application will get messages from | communication with a TAM. This is the step 4. The Client | |||
TAM, and interacts with device TEE via an Agent. | Application will get messages from TAM, and interacts with device TEE | |||
via an Agent. | ||||
The following diagram will show a system diagram about the entity | The following diagram shows a system diagram about the entity | |||
relationships between CAs, TAM, SP and devices. | relationships between CAs, TAMs, SPs and devices. | |||
------- Message Protocol ----- | ------- Message Protocol ----- | |||
| | | | | | |||
| | | | | | |||
-------------------- --------------- ---------- | -------------------- --------------- ---------- | |||
| REE | TEE | | TAM | | SP | | | REE | TEE | | TAM | | SP | | |||
| --- | --- | | --- | | -- | | | --- | --- | | --- | | -- | | |||
| | | | | | | | | | | | | | | | |||
| Client | SD (TAs)| | SD / TA | | TA | | | Client | SD (TAs)| | SD / TA | | TA | | |||
| Apps | | | Mgmt | | | | | Apps | | | Mgmt | | | | |||
| | | | | | | | | | | | | | | | | | |||
| | | | | | | | | | | | List of | | List of | | | | |||
| | Trusted | | Trusted | | | | | | Trusted | | Trusted | | | | |||
| Agent | TAM/SP | | FW/TEE | | | | | Agent | TAM/SP | | FW/TEE | | | | |||
| | CAs | | CAs | | | | | | CAs | | CAs | | | | |||
| | | | | | | | | | | | | | | | |||
| |TEE Key/ | | TAM Key/ | |SP Key/ | | | |TEE Key/ | | TAM Key/ | |SP Key/ | | |||
| | Cert | | Cert | | Cert | | | | Cert | | Cert | | Cert | | |||
| | FW Key/ | | | | | | | | FW Key/ | | | | | | |||
| | Cert | | | | | | | | Cert | | | | | | |||
-------------------- --------------- ---------- | -------------------- --------------- ---------- | |||
| | | | | | | | |||
| | | | | | | | |||
------------- ---------- --------- | ------------- ---------- --------- | |||
| TEE CA | | TAM CA | | SP CA | | | TEE CA | | TAM CA | | SP CA | | |||
------------- ---------- --------- | ------------- ---------- --------- | |||
Figure 3: Keys | Figure 4: Keys | |||
In the previous diagram, different CAs can be used for different | In the previous diagram, different CAs can be used for different | |||
types of certificates. Messages are always signed, where the signer | types of certificates. Messages are always signed, where the signer | |||
key is the message originator's private key such as that of a TAM, | key is the message originator's private key such as that of a TAM, | |||
the private key of a trusted firmware (TFW), or a TEE's private key. | the private key of trusted firmware (TFW), or a TEE's private key. | |||
The main components consist of a set of standard messages created by | The main components consist of a set of standard messages created by | |||
a TAM to deliver device SD and TA management commands to a device, | a TAM to deliver device SD and TA management commands to a device, | |||
and device attestation and response messages created by a TEE that | and device attestation and response messages created by a TEE that | |||
responds to a TAM's message. | responds to a TAM's message. | |||
It should be noted that network communication capability is generally | It should be noted that network communication capability is generally | |||
not available in TAs in today's TEE-powered devices. The networking | not available in TAs in today's TEE-powered devices. The networking | |||
functionality must be delegated to a rich Client Application. Client | functionality must be delegated to a rich Client Application. Client | |||
Applications will need to rely on an agent in the REE to interact | Applications will need to rely on an agent in the REE to interact | |||
with a TEE for message exchanges. Consequently, a TAM generally | with a TEE for message exchanges. Consequently, a TAM generally | |||
communicates with a Client Application about how it gets messages | communicates with a Client Application about how it gets messages | |||
that originates from TEE inside a device. Similarly, a TA or TEE | that originate from a TEE inside a device. Similarly, a TA or TEE | |||
generally gets messages from a TAM via some Client Application, | generally gets messages from a TAM via some Client Application, | |||
namely, an agent in this protocol architecture, not directly from the | namely, an agent in this protocol architecture, not directly from the | |||
internet. | network. | |||
It is imperative to have an interoperable protocol to communicate | It is imperative to have an interoperable protocol to communicate | |||
with different TEEs in different devices that a Client Application | with different TAMs and different TEEs in different devices. This is | |||
needs to run and access a TA inside a TEE. This is the role of the | the role of the agent, which is a software component that bridges | |||
agent, which is a software component that bridges communication | communication between a TAM and a TEE. The agent does not need to | |||
between a TAM and a TEE. The agent does not need to know the actual | know the actual content of messages except for the TEE routing | |||
content of messages except for the TEE routing information. | information. | |||
5.3. Trust Anchors in TEE | 5.4. Trust Anchors in TEE | |||
Each TEE comes with a trust store that contains a whitelist of root | Each TEE comes with a trust store that contains a whitelist of root | |||
CA certificates that are used to validate a TAM's certificate. A TEE | CA certificates that are used to validate a TAM's certificate. A TEE | |||
will accept a TAM to create new Security Domains and install new TAs | will accept a TAM to create new Security Domains and install new TAs | |||
on behalf of a SP only if the TAM's certificate is chained to one of | on behalf of an SP only if the TAM's certificate is chained to one of | |||
the root CA certificates in the TEE's trust store. | the root CA certificates in the TEE's trust store. | |||
A TEE's trust store is typically preloaded at manufacturing time. It | A TEE's trust store is typically preloaded at manufacturing time. It | |||
is out of the scope in this document to specify how the trust store | is out of the scope in this document to specify how the trust store | |||
should be updated when a new root certificate should be added or | should be updated when a new root certificate should be added or | |||
existing one should be updated or removed. A device manufacturer is | existing one should be updated or removed. A device manufacturer is | |||
expected to provide its TEE trust store live update or out-of-band | expected to provide its TEE trust store live update or out-of-band | |||
update to devices. | update to devices. | |||
Before a TAM can begin operation in the marketplace to support TEE- | Before a TAM can begin operation in the marketplace to support a | |||
powered devices with a particular TEE, it must obtain a TAM | device with a particular TEE, it must obtain a TAM certificate from a | |||
certificate from a CA that is listed in the trust store of the TEE. | CA that is listed in the trust store of the TEE. | |||
5.4. Trust Anchors in TAM | 5.5. Trust Anchors in TAM | |||
The trust anchor store in a TAM consists of a list of CA certificates | The trust anchor store in a TAM consists of a list of CA certificates | |||
that sign various device TEE certificates. A TAM decides what | that sign various device TEE certificates. A TAM decides what | |||
devices it will trust the TEE in. | devices it will trust the TEE in. | |||
5.5. Keys and Certificate Types | 5.6. Keys and Certificate Types | |||
This architecture leverages the following credentials, which allow | This architecture leverages the following credentials, which allow | |||
delivering end-to-end security without relying on any transport | delivering end-to-end security without relying on any transport | |||
security. | security. | |||
+-------------+----------+--------+-------------------+-------------+ | +-------------+----------+--------+-------------------+-------------+ | |||
| Key Entity | Location | Issuer | Checked Against | Cardinality | | | Key Entity | Location | Issuer | Checked Against | Cardinality | | |||
| Name | | | | | | | Name | | | | | | |||
+-------------+----------+--------+-------------------+-------------+ | +-------------+----------+--------+-------------------+-------------+ | |||
| 1. TFW key | Device | FW CA | A white list of | 1 per | | | 1. TFW key | Device | FW CA | A whitelist of | 1 per | | |||
| pair and | secure | | FW root CA | device | | | pair and | secure | | FW root CA | device | | |||
| certificate | storage | | trusted by TAMs | | | | certificate | storage | | trusted by TAMs | | | |||
| | | | | | | | | | | | | | |||
| 2. TEE key | Device | TEE CA | A white list of | 1 per | | | 2. TEE key | Device | TEE CA | A whitelist of | 1 per | | |||
| pair and | TEE | under | TEE root CA | device | | | pair and | TEE | under | TEE root CA | device | | |||
| certificate | | a root | trusted by TAMs | | | | certificate | | a root | trusted by TAMs | | | |||
| | | CA | | | | | | | CA | | | | |||
| | | | | | | | | | | | | | |||
| 3. TAM key | TAM | TAM CA | A white list of | 1 or | | | 3. TAM key | TAM | TAM CA | A whitelist of | 1 or | | |||
| pair and | provider | under | TAM root CA | multiple | | | pair and | provider | under | TAM root CA | multiple | | |||
| certificate | | a root | embedded in TEE | can be used | | | certificate | | a root | embedded in TEE | can be used | | |||
| | | CA | | by a TAM | | | | | CA | | by a TAM | | |||
| | | | | | | | | | | | | | |||
| 4. SP key | SP | SP | A SP uses a TAM. | 1 or | | | 4. SP key | SP | SP | A SP uses a TAM. | 1 or | | |||
| pair and | | signer | TA is signed by a | multiple | | | pair and | | signer | TA is signed by a | multiple | | |||
| certificate | | CA | SP signer. TEE | can be used | | | certificate | | CA | SP signer. TEE | can be used | | |||
| | | | delegates trust | by a TAM | | | | | | delegates trust | by a TAM | | |||
| | | | of TA to TAM. SP | | | | | | | of TA to TAM. SP | | | |||
| | | | signer is | | | | | | | signer is | | | |||
| | | | associated with a | | | | | | | associated with a | | | |||
| | | | SD as the owner. | | | | | | | SD as the owner. | | | |||
+-------------+----------+--------+-------------------+-------------+ | +-------------+----------+--------+-------------------+-------------+ | |||
Table 1: Key and Certificate Types | Figure 5: Key and Certificate Types | |||
1. TFW key pair and certificate: A key pair and certificate for | 1. TFW key pair and certificate: A key pair and certificate for | |||
evidence of secure boot and trustworthy firmware in a device. | evidence of trustworthy firmware in a device. This key pair is | |||
optional for TEEP architecture. Some TEE may present its trusted | ||||
attributes to a TAM using signed attestation with a TFW key. For | ||||
example, a platform that uses a hardware based TEE can have | ||||
attestation data signed by a hardware protected TFW key. | ||||
Location: Device secure storage | o Location: Device secure storage | |||
Supported Key Type: RSA and ECC | o Supported Key Type: RSA and ECC | |||
Issuer: OEM CA | o Issuer: OEM CA | |||
Checked Against: A white list of FW root CA trusted by TAMs | o Checked Against: A whitelist of FW root CA trusted by TAMs | |||
Cardinality: One per device | o Cardinality: One per device | |||
2. TEE key pair and certificate: It is used for device attestation | 2. TEE key pair and certificate: It is used for device attestation | |||
to a remote TAM and SP. | to a remote TAM and SP. | |||
This key pair is burned into the device at device manufacturer. | o This key pair is burned into the device by the device | |||
The key pair and its certificate are valid for the expected | manufacturer. The key pair and its certificate are valid for | |||
lifetime of the device. | the expected lifetime of the device. | |||
Location: Device TEE | o Location: Device TEE | |||
Supported Key Type: RSA and ECC | o Supported Key Type: RSA and ECC | |||
Issuer: A CA that chains to a TEE root CA | o Issuer: A CA that chains to a TEE root CA | |||
Checked Against: A white list of TEE root CA trusted by TAMs | o Checked Against: A whitelist of TEE root CAs trusted by TAMs | |||
Cardinality: One per device | o Cardinality: One per device | |||
3. TAM key pair and certificate: A TAM provider acquires a | 3. TAM key pair and certificate: A TAM provider acquires a | |||
certificate from a CA that a TEE trusts. | certificate from a CA that a TEE trusts. | |||
Location: TAM provider | o Location: TAM provider | |||
Supported Key Type: RSA and ECC. | o Supported Key Type: RSA and ECC. | |||
Supported Key Size: RSA 2048-bit, ECC P-256 and P-384. Other | o Supported Key Size: RSA 2048-bit, ECC P-256 and P-384. Other | |||
sizes should be anticipated in future. | sizes should be anticipated in future. | |||
Issuer: TAM CA that chains to a root CA | o Issuer: TAM CA that chains to a root CA | |||
Checked Against: A white list of TAM root CA embedded in TEE | o Checked Against: A whitelist of TAM root CAs embedded in a TEE | |||
Cardinality: One or multiple can be used by a TAM | o Cardinality: One or multiple can be used by a TAM | |||
4. SP key pair and certificate: an SP uses its own key pair and | 4. SP key pair and certificate: An SP uses its own key pair and | |||
certificate to sign a TA. | certificate to sign a TA. | |||
Location: SP | o Location: SP | |||
Supported Key Type: RSA and ECC | o Supported Key Type: RSA and ECC | |||
Supported Key Size: RSA 2048-bit, ECC P-256 and P-384. Other | o Supported Key Size: RSA 2048-bit, ECC P-256 and P-384. Other | |||
sizes should be anticipated in future. | sizes should be anticipated in future. | |||
Issuer: an SP signer CA that chains to a root CA | o Issuer: An SP signer CA that chains to a root CA | |||
Checked Against: A SP uses a TAM. A TEE trusts an SP by | o Checked Against: An SP uses a TAM. A TEE trusts an SP by | |||
validating trust against a TAM that the SP uses. A TEE trusts | validating trust against a TAM that the SP uses. A TEE trusts | |||
TAM to ensure that a TA from the TAM is trustworthy. | a TAM to ensure that a TA is trustworthy. | |||
Cardinality: One or multiple can be used by an SP | o Cardinality: One or multiple can be used by an SP | |||
5.6. Scalability | 5.7. Scalability | |||
This architecture uses a PKI. Trust anchors exist on the devices to | This architecture uses a PKI. Trust anchors exist on the devices to | |||
enable the TEE to authenticate TAMs, and TAMs use trust anchors to | enable the TEE to authenticate TAMs, and TAMs use trust anchors to | |||
authenticate TEEs. Since a PKI is used, many intermediate CAs | authenticate TEEs. Since a PKI is used, many intermediate CA | |||
certificates can chain to a root certificate, each of which can issue | certificates can chain to a root certificate, each of which can issue | |||
many certificates. This makes the protocol highly scalable. New | many certificates. This makes the protocol highly scalable. New | |||
factories that produce TEEs can join the ecosystem. In this case, | factories that produce TEEs can join the ecosystem. In this case, | |||
such a factory can get an intermediate CA certificate from one of the | such a factory can get an intermediate CA certificate from one of the | |||
existing roots without requiring that TAMs are updated with | existing roots without requiring that TAMs are updated with | |||
information about the new device factory. Likewise, new TAMs can | information about the new device factory. Likewise, new TAMs can | |||
join the ecosystem, providing they are issued a TAM certificate that | join the ecosystem, providing they are issued a TAM certificate that | |||
chains to an existing root whereby existing TEEs will be allowed to | chains to an existing root whereby existing TEEs will be allowed to | |||
be personalized by the TAM without requiring changes to the TEE | be personalized by the TAM without requiring changes to the TEE | |||
itself. This enables the ecosystem to scale, and avoids the need for | itself. This enables the ecosystem to scale, and avoids the need for | |||
centralized databases of all TEEs produced or all TAMs that exist. | centralized databases of all TEEs produced or all TAMs that exist. | |||
5.7. Message Security | 5.8. Message Security | |||
Messages created by a TAM are used to deliver device SD and TA | Messages created by a TAM are used to deliver device SD and TA | |||
management commands to a device, and device attestation and response | management commands to a device, and device attestation and messages | |||
messages created by the TEE to respond to TAM messages. | created by the device TEE to respond to TAM messages. | |||
These messages are signed end-to-end and are typically encrypted such | These messages are signed end-to-end and are typically encrypted such | |||
that only the targeted device TEE or TAM is able to decrypt and view | that only the targeted device TEE or TAM is able to decrypt and view | |||
the actual content. | the actual content. | |||
5.8. Security Domain Hierarchy and Ownership | 5.9. Security Domain Hierarchy and Ownership | |||
The primary job of a TAM is to help an SP to manage its trusted | The primary job of a TAM is to help an SP to manage its trusted | |||
applications. A TA is typically installed in an SD. An SD is | applications. A TA is typically installed in an SD. An SD is | |||
commonly created for an SP. | commonly created for an SP. | |||
When an SP delegates its SD and TA management to a TAM, an SD is | When an SP delegates its SD and TA management to a TAM, an SD is | |||
created on behalf of a TAM in a TEE and the owner of the SD is | created on behalf of a TAM in a TEE and the owner of the SD is | |||
assigned to the TAM. An SD may be associated with an SP but the TAM | assigned to the TAM. An SD may be associated with an SP but the TAM | |||
has full privilege to manage the SD for the SP. | has full privilege to manage the SD for the SP. | |||
Each SD for an SP is associated with only one TAM. When an SP | Each SD for an SP is associated with only one TAM. When an SP | |||
changes TAM, a new SP SD must be created to associate with the new | changes TAM, a new SP SD must be created to associate with the new | |||
TAM. The TEE will maintain a registry of TAM ID and SP SD ID | TAM. The TEE will maintain a registry of TAM ID and SP SD ID | |||
mapping. | mapping. | |||
From an SD ownership perspective, the SD tree is flat and there is | From an SD ownership perspective, the SD tree is flat and there is | |||
only one level. An SD is associated with its owner. It is up to TEE | only one level. An SD is associated with its owner. It is up to the | |||
implementation how it maintains SD binding information for a TAM and | TEE implementation how it maintains SD binding information for a TAM | |||
different SPs under the same TAM. | and different SPs under the same TAM. | |||
It is an important decision in this protocol specification that a TEE | It is an important decision in this architecture that a TEE doesn't | |||
doesn't need to know whether a TAM is authorized to manage the SD for | need to know whether a TAM is authorized to manage the SD for an SP. | |||
an SP. This authorization is implicitly triggered by an SP Client | This authorization is implicitly triggered by an SP Client | |||
Application, which instructs what TAM it wants to use. An SD is | Application, which instructs what TAM it wants to use. An SD is | |||
always associated with a TAM in addition to its SP ID. A rogue TAM | always associated with a TAM in addition to its SP ID. A rogue TAM | |||
isn't able to do anything on an unauthorized SP's SD managed by | isn't able to do anything on an unauthorized SP's SD managed by | |||
another TAM. | another TAM. | |||
Since a TAM may support multiple SPs, sharing the same SD name for | Since a TAM may support multiple SPs, sharing the same SD name for | |||
different SPs creates a dependency in deleting an SD. An SD can be | different SPs creates a dependency in deleting an SD. An SD can be | |||
deleted only after all TAs associated with this SD is deleted. An SP | deleted only after all TAs associated with the SD are deleted. An SP | |||
cannot delete a Security Domain on its own with a TAM if a TAM | cannot delete a Security Domain on its own with a TAM if a TAM | |||
decides to introduce such sharing. There are cases where multiple | decides to introduce such sharing. There are cases where multiple | |||
virtual SPs belong to the same organization, and a TAM chooses to use | virtual SPs belong to the same organization, and a TAM chooses to use | |||
the same SD name for those SPs. This is totally up to the TAM | the same SD name for those SPs. This is totally up to the TAM | |||
implementation and out of scope of this specification. | implementation and out of scope of this specification. | |||
5.9. SD Owner Identification and TAM Certificate Requirements | 5.10. SD Owner Identification and TAM Certificate Requirements | |||
There is a need of cryptographically binding proof about the owner of | There is a need of cryptographically binding proof about the owner of | |||
an SD in a device. When an SD is created on behalf of a TAM, a | an SD in a device. When an SD is created on behalf of a TAM, a | |||
future request from the TAM must present itself as a way that the TEE | future request from the TAM must present itself as a way that the TEE | |||
can verify it is the true owner. The certificate itself cannot | can verify it is the true owner. The certificate itself cannot | |||
reliably used as the owner because TAM may change its certificate. | reliably used as the owner because TAM may change its certificate. | |||
** need to handle the normal key roll-over case, as well as the less | ||||
frequent key compromise case | ||||
To this end, each TAM will be associated with a trusted identifier | To this end, each TAM will be associated with a trusted identifier | |||
defined as an attribute in the TAM certificate. This field is kept | defined as an attribute in the TAM certificate. This field is kept | |||
the same when the TAM renew its certificates. A TAM CA is | the same when the TAM renew its certificates. A TAM CA is | |||
responsible to vet the requested TAM attribute value. | responsible to vet the requested TAM attribute value. | |||
This identifier value must not collide among different TAM providers, | This identifier value must not collide among different TAM providers, | |||
and one TAM shouldn't be able to claim the identifier used by another | and one TAM shouldn't be able to claim the identifier used by another | |||
TAM provider. | TAM provider. | |||
The certificate extension name to carry the identifier can initially | The certificate extension name to carry the identifier can initially | |||
skipping to change at page 17, line 5 ¶ | skipping to change at page 20, line 12 ¶ | |||
A CA can verify the domain ownership of the URL with the TAM in the | A CA can verify the domain ownership of the URL with the TAM in the | |||
certificate enrollment process. | certificate enrollment process. | |||
A TEE can assign this certificate attribute value as the TAM owner ID | A TEE can assign this certificate attribute value as the TAM owner ID | |||
for the SDs that are created for the TAM. | for the SDs that are created for the TAM. | |||
An alternative way to represent an SD ownership by a TAM is to have a | An alternative way to represent an SD ownership by a TAM is to have a | |||
unique secret key upon SD creation such that only the creator TAM is | unique secret key upon SD creation such that only the creator TAM is | |||
able to produce a proof-of-possession (PoP) data with the secret. | able to produce a proof-of-possession (PoP) data with the secret. | |||
5.10. Service Provider Container | 5.11. Service Provider Container | |||
A sample Security Domain hierarchy for the TEE is shown in Figure 4. | A sample Security Domain hierarchy for the TEE is shown in Figure 6. | |||
---------- | ---------- | |||
| TEE | | | TEE | | |||
---------- | ---------- | |||
| | | | |||
| ---------- | | ---------- | |||
|----------| SP1 SD1 | | |----------| SP1 SD1 | | |||
| ---------- | | ---------- | |||
| ---------- | | ---------- | |||
|----------| SP1 SD2 | | |----------| SP1 SD2 | | |||
| ---------- | | ---------- | |||
| ---------- | | ---------- | |||
|----------| SP2 SD1 | | |----------| SP2 SD1 | | |||
---------- | ---------- | |||
Figure 4: Security Domain Hiearchy | Figure 6: Security Domain Hierarchy | |||
The architecture separates SDs and TAs such that a TAM can only | The architecture separates SDs and TAs such that a TAM can only | |||
manage or retrieve data for SDs and TAs that it previously created | manage or retrieve data for SDs and TAs that it previously created | |||
for the SPs it represents. | for the SPs it represents. | |||
5.11. A Sample Device Setup Flow | 5.12. A Sample Device Setup Flow | |||
Step 1: Prepare Images for Devices | Step 1: Prepare Images for Devices | |||
1. [TEE vendor] Deliver TEE Image (CODE Binary) to device OEM | - | |||
2. [CA] Deliver root CA Whitelist | 1. [TEE vendor] Deliver TEE Image (CODE Binary) to device OEM | |||
3. [Soc] Deliver TFW Image | - | |||
1. [CA] Deliver root CA Whitelist | ||||
- | ||||
1. [Soc] Deliver TFW Image | ||||
Step 2: Inject Key Pairs and Images to Devices | Step 2: Inject Key Pairs and Images to Devices | |||
- | ||||
1. [OEM] Generate Secure Boot Key Pair (May be shared among multiple | 1. [OEM] Generate TFW Key Pair (May be shared among multiple | |||
devices) | devices) | |||
2. [OEM] Flash signed TFW Image and signed TEE Image onto devices | - | |||
(signed by Secure Boot Key) | ||||
Step 3: Setup attestation key pairs in devices | 1. [OEM] Flash signed TFW Image and signed TEE Image onto devices | |||
(signed by TFW Key) | ||||
1. [OEM] Flash Secure Boot Public Key and eFuse Key (eFuse key is | Step 3: Set up attestation key pairs in devices | |||
unique per device) | ||||
2. [TFW/TEE] Generate a unique attestation key pair and get a | - | |||
certificate for the device. | ||||
Step 4: Setup trust anchors in devices | 1. [OEM] Flash TFW Public Key and a bootloader key. | |||
1. [TFW/TEE] Store the key and certificate encrypted with the eFuse | - | |||
key | ||||
2. [TEE vendor or OEM] Store trusted CA certificate list into | 1. [TFW/TEE] Generate a unique attestation key pair and get a | |||
devices | certificate for the device. | |||
6. Agent | Step 4: Set up trust anchors in devices | |||
A TEE and TAs do not generally have capability to communicate to the | - | |||
outside of the hosting device. For example, the Global Platform | ||||
1. [TFW/TEE] Store the key and certificate encrypted with the | ||||
bootloader key | ||||
- | ||||
1. [TEE vendor or OEM] Store trusted CA certificate list into | ||||
devices | ||||
6. TEEP Broker | ||||
A TEE and TAs do not generally have the capability to communicate to | ||||
the outside of the hosting device. For example, GlobalPlatform | ||||
[GPTEE] specifies one such architecture. This calls for a software | [GPTEE] specifies one such architecture. This calls for a software | |||
module in the REE world to handle the network communication. Each | module in the REE world to handle the network communication. Each | |||
Client Application in REE may carry this communication functionality | Client Application in the REE might carry this communication | |||
but it must also interact with the TEE for the message exchange. The | functionality but such functionality must also interact with the TEE | |||
TEE interaction will vary according to different TEEs. In order for | for the message exchange. The TEE interaction will vary according to | |||
a Client Application to transparently support different TEEs, it is | different TEEs. In order for a Client Application to transparently | |||
imperative to have a common interface for a Client Application to | support different TEEs, it is imperative to have a common interface | |||
invoke for exchanging messages with TEEs. | for a Client Application to invoke for exchanging messages with TEEs. | |||
A shared agent comes to meed this need. An agent is an application | A shared agent comes to meet this need. An agent is an application | |||
running in the REE of the device or a SDK that facilitates | running in the REE of the device or an SDK that facilitates | |||
communication between a TAM and TEE. It also provides interfaces for | communication between a TAM and a TEE. It also provides interfaces | |||
TAM SDK or Client Applications to query and trigger TA installation | for TAM SDK or Client Applications to query and trigger TA | |||
that the application needs to use. | installation that the application needs to use. | |||
This interface for Client Applications may be commonly an Android | This interface for Client Applications may be commonly an OS service | |||
service call for an Android powered device. A Client Application | call for an REE OS. A Client Application interacts with a TAM, and | |||
interacts with a TAM, and turns around to pass messages received from | turns around to pass messages received from TAM to agent. | |||
TAM to agent. | ||||
In all cases, a Client Application needs to be able to identify an | In all cases, a Client Application needs to be able to identify an | |||
agent that it can use. | agent that it can use. | |||
6.1. Role of the Agent | 6.1. Role of the Agent | |||
An agent abstracts the message exchanges with the TEE in a device. | An agent abstracts the message exchanges with the TEE in a device. | |||
The input data is originated from a TAM that a Client Application | The input data is originated from a TAM to which a Client Application | |||
connects. A Client Application may also directly call Agent for some | connects. A Client Application may also directly call an Agent for | |||
TA query functions. | some TA query functions. | |||
The agent may internally process a request from TAM. At least, it | The agent may internally process a message from a TAM. At least, it | |||
needs to know where to route a message, e.g., TEE instance. It does | needs to know where to route a message, e.g., TEE instance. It does | |||
not need to process or verify message content. | not need to process or verify message content. | |||
The agent returns TEE / TFW generated response messages to the | The agent returns TEE / TFW generated response messages to the | |||
caller. The agent is not expected to handle any network connection | caller. The agent is not expected to handle any network connection | |||
with an application or TAM. | with an application or TAM. | |||
The agent only needs to return an agent error message if the TEE is | The agent only needs to return an agent error message if the TEE is | |||
not reachable for some reason. Other errors are represented as | not reachable for some reason. Other errors are represented as | |||
response messages returned from the TEE which will then be passed to | response messages returned from the TEE which will then be passed to | |||
the TAM. | the TAM. | |||
6.2. Agent Implementation Consideration | 6.2. Agent Implementation Consideration | |||
A Provider should consider methods of distribution, scope and | A Provider should consider methods of distribution, scope and | |||
concurrency on device and runtime options when implementing an agent. | concurrency on devices and runtime options when implementing an | |||
Several non-exhaustive options are discussed below. Providers are | agent. Several non-exhaustive options are discussed below. | |||
encouraged to take advantage of the latest communication and platform | Providers are encouraged to take advantage of the latest | |||
capabilities to offer the best user experience. | communication and platform capabilities to offer the best user | |||
experience. | ||||
6.2.1. Agent Distribution | 6.2.1. Agent Distribution | |||
The agent installation is commonly carried out at OEM time. A user | The agent installation is commonly carried out at OEM time. A user | |||
can dynamically download and install an agent on-demand. | can dynamically download and install an agent on-demand. | |||
It is important to ensure a legitimate agent is installed and used. | It is important to ensure a legitimate agent is installed and used. | |||
If an agent is compromised it may drop messages and thereby | If an agent is compromised it may drop messages and thereby introduce | |||
introducing a denial of service. | a denial of service. | |||
6.2.2. Number of Agents | 6.2.2. Number of Agents | |||
We anticipate only one shared agent instance in a device. The | We anticipate only one shared agent instance in a device. The | |||
device's TEE vendor will most probably supply one aent. | device's TEE vendor will most probably supply one agent. | |||
With one shared agent, the agent provider is responsible to allow | With one shared agent, the agent provider is responsible to allow | |||
multiple TAMs and TEE providers to achieve interoperability. With a | multiple TAMs and TEE providers to achieve interoperability. With a | |||
standard agent interface, TAM can implement its own SDK for its SP | standard agent interface, each TAM can implement its own SDK for its | |||
Client Applications to work with this agent. | SP Client Applications to work with this agent. | |||
Multiple independent agent providers can be used as long as they have | Multiple independent agent providers can be used as long as they have | |||
standard interface to a Client Application or TAM SDK. Only one | standard interface to a Client Application or TAM SDK. Only one | |||
agent is expected in a device. | agent is expected in a device. | |||
TAM providers are generally expected to provide SDK for SP | TAM providers are generally expected to provide an SDK for SP | |||
applications to interact with an agent for the TAM and TEE | applications to interact with an agent for the TAM and TEE | |||
interaction. | interaction. | |||
7. Attestation | 7. Attestation | |||
7.1. Attestation Hierarchy | 7.1. Attestation Hierarchy | |||
The attestation hierarchy and seed required for TAM protocol | The attestation hierarchy and seed required for TAM protocol | |||
operation must be built into the device at manufacture. Additional | operation must be built into the device at manufacture. Additional | |||
TEEs can be added post-manufacture using the scheme proposed, but it | TEEs can be added post-manufacture using the scheme proposed, but it | |||
is outside of the current scope of this document to detail that. | is outside of the current scope of this document to detail that. | |||
It should be noted that the attestation scheme described is based on | It should be noted that the attestation scheme described is based on | |||
signatures. The only encryption that takes place may be the use of a | signatures. The only decryption that may take place is through the | |||
so-called eFuse to release the SBM signing key and later during the | use of a bootloader key. | |||
protocol lifecycle management interchange with the TAM. | ||||
SBM attestation can be optional in TEEP architecture where the | A boot module generated attestation can be optional where the | |||
starting point of device attestion can be at TEE certfificates. TAM | starting point of device attestation can be at TEE certificates. A | |||
can define its policies on what kind of TEE it trusts if TFW | TAM can define its policies on what kinds of TEE it trusts if TFW | |||
attestation isn't included during the TEE attestation. | attestation is not included during the TEE attestation. | |||
7.1.1. Attestation Hierarchy Establishment: Manufacture | 7.1.1. Attestation Hierarchy Establishment: Manufacture | |||
During manufacture the following steps are required: | During manufacture the following steps are required: | |||
1. A device-specific TFW key pair and certificate are burnt into the | 1. A device-specific TFW key pair and certificate are burnt into the | |||
device, encrypted by eFuse. This key pair will be used for | device. This key pair will be used for signing operations | |||
signing operations performed by the SBM. | performed by the boot module. | |||
2. TEE images are loaded and include a TEE instance-specific key | 2. TEE images are loaded and include a TEE instance-specific key | |||
pair and certificate. The key pair and certificate are included | pair and certificate. The key pair and certificate are included | |||
in the image and covered by the code signing hash. | in the image and covered by the code signing hash. | |||
3. The process for TEE images is repeated for any subordinate TEEs, | 3. The process for TEE images is repeated for any subordinate TEEs, | |||
which are additional TEEs after the root TEE that some devices | which are additional TEEs after the root TEE that some devices | |||
have. | have. | |||
7.1.2. Attestation Hierarchy Establishment: Device Boot | 7.1.2. Attestation Hierarchy Establishment: Device Boot | |||
During device boot the following steps are required: | During device boot the following steps are required: | |||
1. Secure boot releases the TFW private key by decrypting it with | 1. The boot module releases the TFW private key by decrypting it | |||
eFuse. | with the bootloader key. | |||
2. The SBM verifies the code-signing signature of the active TEE and | 2. The boot module verifies the code-signing signature of the active | |||
places its TEE public key into a signing buffer, along with its | TEE and places its TEE public key into a signing buffer, along | |||
identifier for later access. For a TEE non-compliant to this | with its identifier for later access. For a TEE non-compliant to | |||
architecture, the SBM leaves the TEE public key field blank. | this architecture, the boot module leaves the TEE public key | |||
field blank. | ||||
3. The SBM signs the signing buffer with the TFW private key. | 3. The boot module signs the signing buffer with the TFW private | |||
key. | ||||
4. Each active TEE performs the same operation as the SBM, building | 4. Each active TEE performs the same operation as the boot module, | |||
up their own signed buffer containing subordinate TEE | building up their own signed buffer containing subordinate TEE | |||
information. | information. | |||
7.1.3. Attestation Hierarchy Establishment: TAM | 7.1.3. Attestation Hierarchy Establishment: TAM | |||
Before a TAM can begin operation in the marketplace to support | Before a TAM can begin operation in the marketplace, it must obtain a | |||
devices of a given TEE, it must obtain a TAM certificate from a CA | TAM certificate from a CA that is registered in the trust store of | |||
that is registered in the trust store of devices with that TEE. In | devices. In this way, the TEE can check the intermediate and root CA | |||
this way, the TEE can check the intermediate and root CA and verify | and verify that it trusts this TAM to perform operations on the TEE. | |||
that it trusts this TAM to perform operations on the TEE. | ||||
8. Acknowledgements | 8. Algorithm and Attestation Agility | |||
The authors thank Dave Thaler for his very thorough review and many | RFC 7696 [RFC7696] outlines the requirements to migrate from one | |||
important suggestions. Most content of this document are split from | mandatory-to-implement algorithm suite to another over time. This | |||
a previously combined OTrP protocol document | feature is also known as crypto agility. Protocol evolution is | |||
[I-D.ietf-teep-opentrustprotocol]. We thank the former co-authors | greatly simplified when crypto agility is already considered during | |||
Nick Cook and Minho Yoo for the initial document content, and | the design of the protocol. In the case of Open Trust Protocol | |||
contributors Brian Witten, Tyler Kim, and Alin Mutu. | (OTrP) the diverse range of use cases, from trusted app updates for | |||
smart phones and tablets to updates of code on higher-end IoT | ||||
devices, creates the need for different mandatory-to-implement | ||||
algorithms already from the start. | ||||
9. Security Consideration | Crypto agility in the OTrP concerns the use of symmetric as well as | |||
asymmetric algorithms. Symmetric algorithms are used for encryption | ||||
of content whereas the asymmetric algorithms are mostly used for | ||||
signing messages. | ||||
In addition to the use of cryptographic algorithms in OTrP there is | ||||
also the need to make use of different attestation technologies. A | ||||
Device must provide techniques to inform a TAM about the attestation | ||||
technology it supports. For many deployment cases it is more likely | ||||
for the TAM to support one or more attestation techniques whereas the | ||||
Device may only support one. | ||||
9. Security Considerations | ||||
9.1. TA Trust Check at TEE | 9.1. TA Trust Check at TEE | |||
A TA binary is signed by a TA signer certificate. This TA signing | A TA binary is signed by a TA signer certificate. This TA signing | |||
certificate/private key belongs to the SP, and may be self-signed | certificate/private key belongs to the SP, and may be self-signed | |||
(i.e., it need not participate in a trust hierarchy). It is the | (i.e., it need not participate in a trust hierarchy). It is the | |||
responsibility of the TAM to only allow verified TAs from trusted SPs | responsibility of the TAM to only allow verified TAs from trusted SPs | |||
into the system. Delivery of that TA to the TEE is then the | into the system. Delivery of that TA to the TEE is then the | |||
responsibility of the TEE, using the security mechanisms provided by | responsibility of the TEE, using the security mechanisms provided by | |||
the protocol. | the protocol. | |||
skipping to change at page 22, line 12 ¶ | skipping to change at page 25, line 42 ¶ | |||
trust checks on the certificate returned for this TA. It might trust | trust checks on the certificate returned for this TA. It might trust | |||
the TAM, or require additional SP signer trust chaining. | the TAM, or require additional SP signer trust chaining. | |||
9.2. One TA Multiple SP Case | 9.2. One TA Multiple SP Case | |||
A TA for multiple SPs must have a different identifier per SP. A TA | A TA for multiple SPs must have a different identifier per SP. A TA | |||
will be installed in a different SD for each respective SP. | will be installed in a different SD for each respective SP. | |||
9.3. Agent Trust Model | 9.3. Agent Trust Model | |||
An agent could be malware in the vulnerable Rich OS. A Client | An agent could be malware in the vulnerable REE. A Client | |||
Application will connect its TAM provider for required TA | Application will connect its TAM provider for required TA | |||
installation. It gets command messages from the TAM, and passes the | installation. It gets command messages from the TAM, and passes the | |||
message to the agent. | message to the agent. | |||
The architecture enables the TAM to communicate with the device's TEE | The architecture enables the TAM to communicate with the device's TEE | |||
to manage SDs and TAs. All TAM messages are signed and sensitive | to manage SDs and TAs. All TAM messages are signed and sensitive | |||
data is encrypted such that the agent cannot modify or capture | data is encrypted such that the agent cannot modify or capture | |||
sensitive data. | sensitive data. | |||
9.4. Data Protection at TAM and TEE | 9.4. Data Protection at TAM and TEE | |||
The TEE implementation provides protection of data on the device. It | The TEE implementation provides protection of data on the device. It | |||
is the responsibility of the TAM to protect data on its servers. | is the responsibility of the TAM to protect data on its servers. | |||
9.5. Compromised CA | 9.5. Compromised CA | |||
A root CA for TAM certificates might get compromised. Some TEE trust | A root CA for TAM certificates might get compromised. Some TEE trust | |||
anchor update mechanism is expected from device OEM. A compromised | anchor update mechanism is expected from device OEMs. A compromised | |||
intermediate CA is covered by OCSP stapling and OCSP validation check | intermediate CA is covered by OCSP stapling and OCSP validation check | |||
in the protocol. A TEE should validate certificate revocation about | in the protocol. A TEE should validate certificate revocation about | |||
a TAM certificate chain. | a TAM certificate chain. | |||
If the root CA of some TEE device certificates is compromised, these | If the root CA of some TEE device certificates is compromised, these | |||
devices might be rejected by a TAM, which is a decision of the TAM | devices might be rejected by a TAM, which is a decision of the TAM | |||
implementation and policy choice. Any intermediate CA for TEE device | implementation and policy choice. Any intermediate CA for TEE device | |||
certificates SHOULD be validated by TAM with a Certificate Revocation | certificates SHOULD be validated by TAM with a Certificate Revocation | |||
List (CRL) or Online Certificate Status Protocol (OCSP) method. | List (CRL) or Online Certificate Status Protocol (OCSP) method. | |||
skipping to change at page 23, line 16 ¶ | skipping to change at page 26, line 46 ¶ | |||
TFW and TEE device certificates are expected to be long lived, longer | TFW and TEE device certificates are expected to be long lived, longer | |||
than the lifetime of a device. A TAM certificate usually has a | than the lifetime of a device. A TAM certificate usually has a | |||
moderate lifetime of 2 to 5 years. A TAM should get renewed or | moderate lifetime of 2 to 5 years. A TAM should get renewed or | |||
rekeyed certificates. The root CA certificates for a TAM, which are | rekeyed certificates. The root CA certificates for a TAM, which are | |||
embedded into the trust anchor store in a device, should have long | embedded into the trust anchor store in a device, should have long | |||
lifetimes that don't require device trust anchor update. On the | lifetimes that don't require device trust anchor update. On the | |||
other hand, it is imperative that OEMs or device providers plan for | other hand, it is imperative that OEMs or device providers plan for | |||
support of trust anchor update in their shipped devices. | support of trust anchor update in their shipped devices. | |||
10. References | 10. IANA Considerations | |||
10.1. Normative References | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | This document does not require actions by IANA. | |||
Requirement Levels", BCP 14, RFC 2119, | ||||
DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | ||||
editor.org/info/rfc2119>. | ||||
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | 11. Acknowledgements | |||
Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | ||||
<https://www.rfc-editor.org/info/rfc4648>. | ||||
[RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | The authors thank Dave Thaler for his very thorough review and many | |||
Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May | important suggestions. Most content of this document is split from a | |||
2015, <https://www.rfc-editor.org/info/rfc7515>. | previously combined OTrP protocol document | |||
[I-D.ietf-teep-opentrustprotocol]. We thank the former co-authors | ||||
Nick Cook and Minho Yoo for the initial document content, and | ||||
contributors Brian Witten, Tyler Kim, and Alin Mutu. | ||||
[RFC7516] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)", | 12. References | |||
RFC 7516, DOI 10.17487/RFC7516, May 2015, | ||||
<https://www.rfc-editor.org/info/rfc7516>. | ||||
[RFC7517] Jones, M., "JSON Web Key (JWK)", RFC 7517, | 12.1. Normative References | |||
DOI 10.17487/RFC7517, May 2015, <https://www.rfc- | ||||
editor.org/info/rfc7517>. | ||||
[RFC7518] Jones, M., "JSON Web Algorithms (JWA)", RFC 7518, | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
DOI 10.17487/RFC7518, May 2015, <https://www.rfc- | Requirement Levels", BCP 14, RFC 2119, | |||
editor.org/info/rfc7518>. | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | ||||
10.2. Informative References | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[GPTEE] Global Platform, "Global Platform, GlobalPlatform Device | 12.2. Informative References | |||
Technology: TEE System Architecture, v1.0", 2013. | ||||
[GPTEECLAPI] | [GPTEE] Global Platform, "GlobalPlatform Device Technology: TEE | |||
Global Platform, "Global Platform, GlobalPlatform Device | System Architecture, v1.1", Global Platform GPD_SPE_009, | |||
Technology: TEE Client API Specification, v1.0", 2013. | January 2017, <https://globalplatform.org/specs-library/ | |||
tee-system-architecture-v1-1/>. | ||||
[I-D.ietf-teep-opentrustprotocol] | [I-D.ietf-teep-opentrustprotocol] | |||
Pei, M., Atyeo, A., Cook, N., Yoo, M., and H. Tschofenig, | Pei, M., Atyeo, A., Cook, N., Yoo, M., and H. Tschofenig, | |||
"The Open Trust Protocol (OTrP)", draft-ietf-teep- | "The Open Trust Protocol (OTrP)", draft-ietf-teep- | |||
opentrustprotocol-00 (work in progress), May 2018. | opentrustprotocol-01 (work in progress), July 2018. | |||
[RFC7696] Housley, R., "Guidelines for Cryptographic Algorithm | ||||
Agility and Selecting Mandatory-to-Implement Algorithms", | ||||
BCP 201, RFC 7696, DOI 10.17487/RFC7696, November 2015, | ||||
<https://www.rfc-editor.org/info/rfc7696>. | ||||
Appendix A. History | ||||
RFC EDITOR: PLEASE REMOVE THIS SECTION | ||||
IETF Drafts | ||||
draft-00: - Initial working group document | ||||
Authors' Addresses | Authors' Addresses | |||
Mingliang Pei | Mingliang Pei | |||
Symantec | Symantec | |||
350 Ellis St | ||||
Mountain View, CA 94043 | ||||
USA | ||||
Email: mingliang_pei@symantec.com | EMail: mingliang_pei@symantec.com | |||
Hannes Tschofenig | Hannes Tschofenig | |||
Arm Ltd. | Arm Limited | |||
Absam, Tirol 6067 | ||||
Austria | ||||
Email: Hannes.Tschofenig@arm.com | EMail: hannes.tschofenig@arm.com | |||
David Wheeler | ||||
Intel | ||||
EMail: david.m.wheeler@intel.com | ||||
Andrew Atyeo | Andrew Atyeo | |||
Intercede | Intercede | |||
St. Mary's Road, Lutterworth | ||||
Leicestershire, LE17 4PS | ||||
Great Britain | ||||
Email: andrew.atyeo@intercede.com | EMail: andrew.atyeo@intercede.com | |||
Dapeng | Liu Dapeng | |||
Alibaba Group | Alibaba Group | |||
Wangjing East Garden 4th Area,Chaoyang District | ||||
Beijing 100102 | ||||
China | ||||
Email: maxpassion@gmail.com | EMail: maxpassion@gmail.com | |||
End of changes. 187 change blocks. | ||||
444 lines changed or deleted | 636 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |