| < draft-ietf-teep-protocol-03.txt | draft-ietf-teep-protocol-04.txt > | |||
|---|---|---|---|---|
| TEEP H. Tschofenig | TEEP H. Tschofenig | |||
| Internet-Draft Arm Ltd. | Internet-Draft Arm Ltd. | |||
| Intended status: Standards Track M. Pei | Intended status: Standards Track M. Pei | |||
| Expires: January 14, 2021 Broadcom | Expires: May 6, 2021 Broadcom | |||
| D. Wheeler | D. Wheeler | |||
| Intel | Intel | |||
| D. Thaler | D. Thaler | |||
| Microsoft | Microsoft | |||
| A. Tsukamoto | A. Tsukamoto | |||
| AIST | AIST | |||
| July 13, 2020 | November 2, 2020 | |||
| Trusted Execution Environment Provisioning (TEEP) Protocol | Trusted Execution Environment Provisioning (TEEP) Protocol | |||
| draft-ietf-teep-protocol-03 | draft-ietf-teep-protocol-04 | |||
| Abstract | Abstract | |||
| This document specifies a protocol that installs, updates, and | This document specifies a protocol that installs, updates, and | |||
| deletes Trusted Applications (TAs) in a device with a Trusted | deletes Trusted Applications (TAs) in a device with a Trusted | |||
| Execution Environment (TEE). This specification defines an | Execution Environment (TEE). This specification defines an | |||
| interoperable protocol for managing the lifecycle of TAs. | interoperable protocol for managing the lifecycle of TAs. | |||
| The protocol name is pronounced teepee. This conjures an image of a | The protocol name is pronounced teepee. This conjures an image of a | |||
| wedge-shaped protective covering for one's belongings, which sort of | wedge-shaped protective covering for one's belongings, which sort of | |||
| skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 14, 2021. | This Internet-Draft will expire on May 6, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| 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. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Message Overview . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Message Overview . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Detailed Messages Specification . . . . . . . . . . . . . . . 5 | 4. Detailed Messages Specification . . . . . . . . . . . . . . . 6 | |||
| 4.1. Creating and Validating TEEP Messages . . . . . . . . . . 5 | 4.1. Creating and Validating TEEP Messages . . . . . . . . . . 6 | |||
| 4.1.1. Creating a TEEP message . . . . . . . . . . . . . . . 5 | 4.1.1. Creating a TEEP message . . . . . . . . . . . . . . . 6 | |||
| 4.1.2. Validating a TEEP Message . . . . . . . . . . . . . . 6 | 4.1.2. Validating a TEEP Message . . . . . . . . . . . . . . 6 | |||
| 4.2. QueryRequest . . . . . . . . . . . . . . . . . . . . . . 6 | 4.2. QueryRequest Message . . . . . . . . . . . . . . . . . . 7 | |||
| 4.3. QueryResponse . . . . . . . . . . . . . . . . . . . . . . 8 | 4.3. QueryResponse Message . . . . . . . . . . . . . . . . . . 9 | |||
| 4.4. TrustedAppInstall . . . . . . . . . . . . . . . . . . . . 10 | 4.4. Install Message . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 4.5. TrustedAppDelete . . . . . . . . . . . . . . . . . . . . 11 | 4.5. Delete Message . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4.6. Success . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.6. Success Message . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.7. Error . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 4.7. Error Message . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5. Mapping of TEEP Message Parameters to CBOR Labels . . . . . . 15 | 5. Mapping of TEEP Message Parameters to CBOR Labels . . . . . . 17 | |||
| 6. Ciphersuites . . . . . . . . . . . . . . . . . . . . . . . . 15 | 6. Ciphersuites . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 8.1. Media Type Registration . . . . . . . . . . . . . . . . . 18 | 8.1. Media Type Registration . . . . . . . . . . . . . . . . . 20 | |||
| 8.2. Error Code Registry . . . . . . . . . . . . . . . . . . . 19 | 8.2. Error Code Registry . . . . . . . . . . . . . . . . . . . 21 | |||
| 8.3. Ciphersuite Registry . . . . . . . . . . . . . . . . . . 19 | 8.3. Ciphersuite Registry . . . . . . . . . . . . . . . . . . 21 | |||
| 8.4. CBOR Tag Registry . . . . . . . . . . . . . . . . . . . . 19 | 8.4. CBOR Tag Registry . . . . . . . . . . . . . . . . . . . . 21 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 22 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 21 | 9.2. Informative References . . . . . . . . . . . . . . . . . 23 | |||
| A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 21 | A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| B. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 21 | B. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| C. Complete CDDL . . . . . . . . . . . . . . . . . . . . . . . . 21 | C. Complete CDDL . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | D. Examples of Diagnostic Notation and Binary Representation . . 27 | |||
| D.1. Some assumptions in examples . . . . . . . . . . . . . . 27 | ||||
| D.2. QueryRequest Message . . . . . . . . . . . . . . . . . . 28 | ||||
| D.2.1. CBOR Diagnostic Notation . . . . . . . . . . . . . . 28 | ||||
| D.2.2. CBOR Binary Representation . . . . . . . . . . . . . 28 | ||||
| D.3. QueryResponse Message . . . . . . . . . . . . . . . . . . 29 | ||||
| D.3.1. CBOR Diagnostic Notation . . . . . . . . . . . . . . 29 | ||||
| D.3.2. CBOR Binary Representation . . . . . . . . . . . . . 29 | ||||
| D.4. Install Message . . . . . . . . . . . . . . . . . . . . . 29 | ||||
| D.4.1. CBOR Diagnostic Notation . . . . . . . . . . . . . . 29 | ||||
| D.4.2. CBOR Binary Representation . . . . . . . . . . . . . 30 | ||||
| D.5. Success Message (for Install) . . . . . . . . . . . . . . 30 | ||||
| D.5.1. CBOR Diagnostic Notation . . . . . . . . . . . . . . 30 | ||||
| D.5.2. CBOR Binary Representation . . . . . . . . . . . . . 30 | ||||
| D.6. Error Message (for Install) . . . . . . . . . . . . . . . 30 | ||||
| D.6.1. CBOR Diagnostic Notation . . . . . . . . . . . . . . 30 | ||||
| D.6.2. CBOR binary Representation . . . . . . . . . . . . . 31 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
| 1. Introduction | 1. Introduction | |||
| The Trusted Execution Environment (TEE) concept has been designed to | The Trusted Execution Environment (TEE) concept has been designed to | |||
| separate a regular operating system, also referred as a Rich | separate a regular operating system, also referred as a Rich | |||
| Execution Environment (REE), from security-sensitive applications. | Execution Environment (REE), from security-sensitive applications. | |||
| In an TEE ecosystem, device vendors may use different operating | In a TEE ecosystem, device vendors may use different operating | |||
| systems in the REE and may use different types of TEEs. When | systems in the REE and may use different types of TEEs. When TA | |||
| application providers or device administrators use Trusted | Developers or Device Administrators use Trusted Application Managers | |||
| Application Managers (TAMs) to install, update, and delete Trusted | (TAMs) to install, update, and delete Trusted Applications (TAs) on a | |||
| Applications (TAs) on a wide range of devices with potentially | wide range of devices with potentially different TEEs then an | |||
| different TEEs then an interoperability need arises. | interoperability need arises. | |||
| This document specifies the protocol for communicating between a TAM | This document specifies the protocol for communicating between a TAM | |||
| and a TEEP Agent, involving a TEEP Broker. | and a TEEP Agent. | |||
| The Trusted Execution Environment Provisioning (TEEP) architecture | The Trusted Execution Environment Provisioning (TEEP) architecture | |||
| document [I-D.ietf-teep-architecture] has set to provide a design | document [I-D.ietf-teep-architecture] provides design guidance and | |||
| guidance for such an interoperable protocol and introduces the | introduces the necessary terminology. | |||
| necessary terminology. Note that the term Trusted Application may | ||||
| include more than code; it may also include configuration data and | ||||
| keys needed by the TA to operate correctly. | ||||
| 2. Requirements Language | 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", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| This specification re-uses the terminology defined in | This specification re-uses the terminology defined in | |||
| [I-D.ietf-teep-architecture]. | [I-D.ietf-teep-architecture]. | |||
| As explained in Section 4.4 of that document, the TEEP protocol | ||||
| treats each TA, any dependencies the TA has, and personalization data | ||||
| as separate components that are expressed in SUIT manifests, and a | ||||
| SUIT manifest might contain or reference multiple binaries (see | ||||
| [I-D.ietf-suit-manifest] for more details). | ||||
| As such, the term Trusted Component in this document refers to a set | ||||
| of binaries expressed in a SUIT manifest, to be installed in a TEE. | ||||
| Note that a Trusted Component may include one or more TAs and/or | ||||
| configuration data and keys needed by a TA to operate correctly. | ||||
| Each Trusted Component is uniquely identified by a "component-id" | ||||
| byte string, such as a 16-byte UUID [RFC4122]. If Concise Software | ||||
| Identifiers [I-D.ietf-sacm-coswid] are used (e.g., in the suit-coswid | ||||
| field of SUIT manifests), the component-id value is the CoSWID tag-id | ||||
| value. | ||||
| 3. Message Overview | 3. Message Overview | |||
| The TEEP protocol consists of a couple of messages exchanged between | The TEEP protocol consists of messages exchanged between a TAM and a | |||
| a TAM and a TEEP Agent via a TEEP Broker. The messages are encoded | TEEP Agent. The messages are encoded in CBOR and designed to provide | |||
| in CBOR and designed to provide end-to-end security. TEEP protocol | end-to-end security. TEEP protocol messages are signed by the | |||
| messages are signed by the endpoints, i.e., the TAM and the TEEP | endpoints, i.e., the TAM and the TEEP Agent, but Trusted Applications | |||
| Agent, but trusted applications may as well be encrypted and signed | may also be encrypted and signed by a TA Developer or Device | |||
| by the service provider. The TEEP protocol not only re-use CBOR but | Administrator. The TEEP protocol not only uses CBOR but also the | |||
| also the respective security wrapper, namely COSE [RFC8152]. | respective security wrapper, namely COSE [RFC8152]. Furthermore, for | |||
| Furthermore, for attestation the Entity Attestation Token (EAT) | software updates the SUIT manifest format [I-D.ietf-suit-manifest] is | |||
| [I-D.ietf-rats-eat] and for software updates the SUIT manifest format | used, and for attestation the Entity Attestation Token (EAT) | |||
| [I-D.ietf-suit-manifest] are re-used. | [I-D.ietf-rats-eat] format is supported although other attestation | |||
| formats are also permitted. | ||||
| This specification defines six messages. | This specification defines six messages. | |||
| A TAM queries a device's current state with a QueryRequest message. | A TAM queries a device's current state with a QueryRequest message. | |||
| A TEEP Agent will, after authenticating and authorizing the request, | A TEEP Agent will, after authenticating and authorizing the request, | |||
| report attestation information, list all TAs, and provide information | report attestation information, list all Trusted Components, and | |||
| about supported algorithms and extensions in a QueryResponse message. | provide information about supported algorithms and extensions in a | |||
| An error message is returned if the request could not be processed. | QueryResponse message. An error message is returned if the request | |||
| A TAM will process the QueryResponse message and determine whether | could not be processed. A TAM will process the QueryResponse message | |||
| subsequent message exchanges to install, update, or delete trusted | and determine whether to initiate subsequent message exchanges to | |||
| applications shall be initiated. | install, update, or delete Trusted Applications. | |||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| | TAM | |TEEP Agent | | | TAM | |TEEP Agent | | |||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| QueryRequest -------> | QueryRequest -------> | |||
| QueryResponse | QueryResponse | |||
| <------- or | <------- or | |||
| Error | Error | |||
| With the TrustedAppInstall message a TAM can instruct a TEEP Agent to | With the Install message a TAM can instruct a TEEP Agent to install a | |||
| install a TA. The TEEP Agent will process the message, determine | Trusted Component. The TEEP Agent will process the message, | |||
| whether the TAM is authorized and whether the TA has been signed by | determine whether the TAM is authorized and whether the Trusted | |||
| an authorized SP. In addition to the binary, the TAM may also | Component has been signed by an authorized TA Signer. If the Install | |||
| provide personalization data. If the TrustedAppInstall message was | message was processed successfully then a Success message is returned | |||
| processed successfully then a Success message is returned to the TAM, | to the TAM, or an Error message otherwise. | |||
| an Error message otherwise. | ||||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| | TAM | |TEEP Agent | | | TAM | |TEEP Agent | | |||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| TrustedAppInstall ----> | Install ----> | |||
| Success | Success | |||
| <---- or | <---- or | |||
| Error | Error | |||
| With the TrustedAppDelete message a TAM can instruct a TEEP Agent to | With the Delete message a TAM can instruct a TEEP Agent to delete one | |||
| delete one or multiple TA(s). A Success message is returned when the | or multiple Trusted Components. A Success message is returned when | |||
| operation has been completed successfully, and an Error message | the operation has been completed successfully, or an Error message | |||
| otherwise. | otherwise. | |||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| | TAM | |TEEP Agent | | | TAM | |TEEP Agent | | |||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| TrustedAppDelete ----> | Delete ----> | |||
| Success | Success | |||
| <---- or | <---- or | |||
| Error | Error | |||
| 4. Detailed Messages Specification | 4. Detailed Messages Specification | |||
| TEEP messages are protected by the COSE_Sign1 structure. The TEEP | TEEP messages are protected by the COSE_Sign1 structure. The TEEP | |||
| protocol messages are described in CDDL format [RFC8610] below. | protocol messages are described in CDDL format [RFC8610] below. | |||
| teep-message => (QueryRequest / | { | |||
| QueryResponse / | teep-message => (query-request / | |||
| TrustedAppInstall / | query-response / | |||
| TrustedAppDelete / | install / | |||
| Error / | delete / | |||
| Success ), | teep-success / | |||
| teep-error ), | ||||
| } | } | |||
| 4.1. Creating and Validating TEEP Messages | 4.1. Creating and Validating TEEP Messages | |||
| 4.1.1. Creating a TEEP message | 4.1.1. Creating a TEEP message | |||
| To create a TEEP message, the following steps are performed. | To create a TEEP message, the following steps are performed. | |||
| 1. Create a TEEP message according to the description below and | 1. Create a TEEP message according to the description below and | |||
| populate it with the respective content. | populate it with the respective content. | |||
| skipping to change at page 6, line 30 ¶ | skipping to change at page 7, line 17 ¶ | |||
| supported or that are specified as being ignored when not | supported or that are specified as being ignored when not | |||
| understood. | understood. | |||
| 5. Follow the steps specified in Section 4 of [RFC8152] ("Signing | 5. Follow the steps specified in Section 4 of [RFC8152] ("Signing | |||
| Objects") for validating a COSE_Sign1 object. The COSE_Sign1 | Objects") for validating a COSE_Sign1 object. The COSE_Sign1 | |||
| payload is the content of the TEEP message. | payload is the content of the TEEP message. | |||
| 6. Verify that the TEEP message is a valid CBOR map and verify the | 6. Verify that the TEEP message is a valid CBOR map and verify the | |||
| fields of the TEEP message according to this specification. | fields of the TEEP message according to this specification. | |||
| 4.2. QueryRequest | 4.2. QueryRequest Message | |||
| A QueryRequest message is used by the TAM to learn information from | A QueryRequest message is used by the TAM to learn information from | |||
| the TEEP Agent. The TAM can learn the features supported by the TEEP | the TEEP Agent, such as the features supported by the TEEP Agent, | |||
| Agent, including ciphersuites, and protocol versions. Additionally, | including ciphersuites, and protocol versions. Additionally, the TAM | |||
| the TAM can selectively request data items from the TEEP Agent via | can selectively request data items from the TEEP Agent via the | |||
| the request parameter. Currently, the following features are | request parameter. Currently, the following features are supported: | |||
| supported: | ||||
| o Request for attestation information, | o Request for attestation information, | |||
| o Listing supported extensions, | o Listing supported extensions, | |||
| o Querying installed software (trusted apps), and | o Querying installed Trusted Components, and | |||
| o Listing supporting SUIT commands. | o Listing supporting SUIT commands. | |||
| Like other TEEP messages, the QueryRequest message is signed, and the | Like other TEEP messages, the QueryRequest message is signed, and the | |||
| relevant CDDL snippet is shown below. The complete CDDL structure is | relevant CDDL snippet is shown below. The complete CDDL structure is | |||
| shown in [CDDL]. | shown in [CDDL]. | |||
| query-request = [ | query-request = [ | |||
| type: TEEP-TYPE-query-request, | type: TEEP-TYPE-query-request, | |||
| token: uint, | token: uint, | |||
| options: { | options: { | |||
| ? supported-cipher-suites => suite, | ? supported-cipher-suites => [ + suite ], | |||
| ? nonce => bstr .size (8..64), | ? challenge => bstr .size (8..64), | |||
| ? version => [ + version ], | ? versions => [ + version ], | |||
| ? oscp-data => bstr, | ? ocsp-data => bstr, | |||
| * $$query-request-extensions | * $$query-request-extensions | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| }, | }, | |||
| data-item-requested | data-item-requested | |||
| ] | ] | |||
| The message has the following fields: | The message has the following fields: | |||
| type | type | |||
| The value of (1) corresponds to a QueryRequest message sent from | The value of (1) corresponds to a QueryRequest message sent from | |||
| the TAM to the TEEP Agent. | the TAM to the TEEP Agent. | |||
| token | token | |||
| The value in the token parameter is used to match responses to | The value in the token parameter is used to match responses to | |||
| requests. This is particualrly useful when a TAM issues multiple | requests. This is particularly useful when a TAM issues multiple | |||
| concurrent requests to a TEEP Agent. | concurrent requests to a TEEP Agent. | |||
| request | data-item-requested | |||
| The request parameter indicates what information the TAM requests | The data-item-requested parameter indicates what information the | |||
| from the TEEP Agent in form of a bitmap. Each value in the bitmap | TAM requests from the TEEP Agent in the form of a bitmap. Each | |||
| corresponds to an IANA registered information element. This | value in the bitmap corresponds to an IANA registered information | |||
| specification defines the following initial set of information | element. This specification defines the following initial set of | |||
| elements: | information elements: | |||
| attestation (1) With this value the TAM requests the TEEP Agent | attestation (1) With this value the TAM requests the TEEP Agent | |||
| to return an entity attestation token (EAT) in the response. | to return attestation evidence (e.g., an EAT) in the response. | |||
| If the TAM requests an attestation token to be returned by the | ||||
| TEEP Agent then it MUST also include the nonce in the message. | ||||
| The nonce is subsequently placed into the EAT token for replay | ||||
| protection. | ||||
| trusted_apps (2) With this value the TAM queries the TEEP Agent | trusted-components (2) With this value the TAM queries the TEEP | |||
| for all installed TAs. | Agent for all installed Trusted Components. | |||
| extensions (4) With this value the TAM queries the TEEP Agent for | extensions (4) With this value the TAM queries the TEEP Agent for | |||
| supported capabilities and extensions, which allows a TAM to | supported capabilities and extensions, which allows a TAM to | |||
| discover the capabilities of a TEEP Agent implementation. | discover the capabilities of a TEEP Agent implementation. | |||
| suit_commands (8) With this value the TAM queries the TEEP Agent | suit-commands (8) With this value the TAM queries the TEEP Agent | |||
| for supported commands offered by the SUIT manifest | for supported commands offered by the SUIT manifest | |||
| implementation. | implementation. | |||
| Further values may be added in the future via IANA registration. | Further values may be added in the future via IANA registration. | |||
| cipher-suites | supported-cipher-suites | |||
| The cipher-suites parameter lists the ciphersuite(s) supported by | The supported-cipher-suites parameter lists the ciphersuite(s) | |||
| the TAM. Details about the ciphersuite encoding can be found in | supported by the TAM. Details about the ciphersuite encoding can | |||
| Section 6. | be found in Section 6. | |||
| nonce | challenge | |||
| The none field is an optional parameter used for ensuring the | The challenge field is an optional parameter used for ensuring the | |||
| refreshness of the Entity Attestation Token (EAT) returned with a | refreshness of the attestation evidence returned with a | |||
| QueryResponse message. When a nonce is provided in the | QueryResponse message. When a challenge is provided in the | |||
| QueryRequest and an EAT is returned with the QueryResponse message | QueryRequest and an EAT is returned with the QueryResponse message | |||
| then the nonce contained in this request MUST be copied into the | then the challenge contained in this request MUST be copied into | |||
| nonce claim found in the EAT token. | the nonce claim found in the EAT. If any format other than EAT is | |||
| used, it is up to that format to define the use of the challenge | ||||
| field. | ||||
| version | versions | |||
| The version field parameter the version(s) supported by the TAM. | The versions parameter enumerates the TEEP protocol version(s) | |||
| For this version of the specification this field can be omitted. | supported by the TAM A value of 0 refers to the current version of | |||
| the TEEP protocol. If this field is not present, it is to be | ||||
| treated the same as if it contained only version 0. | ||||
| ocsp_data | ocsp-data | |||
| The ocsp_data parameter contains a list of OCSP stapling data | The ocsp-data parameter contains a list of OCSP stapling data | |||
| respectively for the TAM certificate and each of the CA | respectively for the TAM certificate and each of the CA | |||
| certificates up to the root certificate. The TAM provides OCSP | certificates up to the root certificate. The TAM provides OCSP | |||
| data so that the TEEP Agent can validate the status of the TAM | data so that the TEEP Agent can validate the status of the TAM | |||
| certificate chain without making its own external OCSP service | certificate chain without making its own external OCSP service | |||
| call. OCSP data MUST be conveyed as a DER-encoded OCSP response | call. OCSP data MUST be conveyed as a DER-encoded OCSP response | |||
| (using the ASN.1 type OCSPResponse defined in [RFC2560]). The use | (using the ASN.1 type OCSPResponse defined in [RFC2560]). The use | |||
| of OCSP is optional to implement for both the TAM and the TEEP | of OCSP is OPTIONAL to implement for both the TAM and the TEEP | |||
| Agent. A TAM can query the TEEP Agent for the support of this | Agent. A TAM can query the TEEP Agent for the support of this | |||
| functionality via the capability discovery exchange, as described | functionality via the capability discovery exchange, as described | |||
| above. | above. | |||
| 4.3. QueryResponse | 4.3. QueryResponse Message | |||
| The QueryResponse message is the successful response by the TEEP | The QueryResponse message is the successful response by the TEEP | |||
| Agent after receiving a QueryRequest message. | Agent after receiving a QueryRequest message. | |||
| Like other TEEP messages, the QueryResponse message is signed, and | Like other TEEP messages, the QueryResponse message is signed, and | |||
| the relevant CDDL snippet is shown below. The complete CDDL | the relevant CDDL snippet is shown below. The complete CDDL | |||
| structure is shown in [CDDL]. | structure is shown in [CDDL]. | |||
| query-response = [ | query-response = [ | |||
| type: TEEP-TYPE-query-response, | type: TEEP-TYPE-query-response, | |||
| token: uint, | token: uint, | |||
| options: { | options: { | |||
| ? selected-cipher-suite => suite, | ? selected-cipher-suite => suite, | |||
| ? selected-version => version, | ? selected-version => version, | |||
| ? eat => bstr, | ? evidence-format => text, | |||
| ? ta-list => [ + bstr ], | ? evidence => bstr, | |||
| ? tc-list => [ + tc-info ], | ||||
| ? requested-ta-list => [ + requested-ta-info ], | ||||
| ? unneeded-ta-list => [ + bstr ], | ||||
| ? ext-list => [ + ext-info ], | ? ext-list => [ + ext-info ], | |||
| * $$query-response-extensions, | * $$query-response-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| The message has the following fields: | tc-info = { | |||
| component-id: bstr, | ||||
| ? tc-manifest-sequence-number: uint | ||||
| } | ||||
| requested-ta-info = { | ||||
| component-id: bstr, | ||||
| ? tc-manifest-sequence-number: uint, | ||||
| ? have-binary: bool | ||||
| } | ||||
| The QueryResponse message has the following fields: | ||||
| type | type | |||
| The value of (2) corresponds to a QueryResponse message sent from | The value of (2) corresponds to a QueryResponse message sent from | |||
| the TEEP Agent to the TAM. | the TEEP Agent to the TAM. | |||
| token | token | |||
| The value in the token parameter is used to match responses to | The value in the token parameter is used to match responses to | |||
| requests. The value MUST correspond to the value received with | requests. The value MUST correspond to the value received with | |||
| the QueryRequest message. | the QueryRequest message. | |||
| selected-cipher-suite | selected-cipher-suite | |||
| The selected-cipher-suite parameter indicates the selected | The selected-cipher-suite parameter indicates the selected | |||
| ciphersuite. Details about the ciphersuite encoding can be found | ciphersuite. Details about the ciphersuite encoding can be found | |||
| in Section 6. | in Section 6. | |||
| selected-version | selected-version | |||
| The selected-version parameter indicates the protocol version | The selected-version parameter indicates the TEEP protocol version | |||
| selected by the TEEP Agent. | selected by the TEEP Agent. The absense of this parameter | |||
| indicates the same as if it was present with a value of 0. | ||||
| eat | evidence-format | |||
| The eat parameter contains an Entity Attestation Token following | The evidence-format parameter indicates the IANA Media Type of the | |||
| the encoding defined in [I-D.ietf-rats-eat]. | attestation evidence contained in the evidence parameter. It MUST | |||
| be present if the evidence parameter is present and the format is | ||||
| not an EAT. | ||||
| ta-list | evidence | |||
| The ta-list parameter enumerates the trusted applications | The evidence parameter contains the attestation evidence. This | |||
| installed on the device in form of TA_ID byte strings. | parameter MUST be present if the QueryResponse is sent in response | |||
| to a QueryRequest with the attestation bit set. If the evidence- | ||||
| format parameter is absent, the attestation evidence contained in | ||||
| this parameter MUST be an Entity Attestation Token following the | ||||
| encoding defined in [I-D.ietf-rats-eat]. | ||||
| tc-list | ||||
| The tc-list parameter enumerates the Trusted Components installed | ||||
| on the device in the form of tc-info objects. | ||||
| requested-ta-list | ||||
| The requested-ta-list parameter enumerates the Trusted | ||||
| Applications that are not currently installed in the TEE, but | ||||
| which are requested to be installed, for example by an installer | ||||
| of an Untrusted Application that has a TA as a dependency. | ||||
| Requested TAs are expressed in the form of requested-ta-info | ||||
| objects. | ||||
| unneeded-ta-list | ||||
| The unneeded-ta-list parameter enumerates the Trusted Applications | ||||
| that are currently installed in the TEE, but which are no longer | ||||
| needed by any other application. The TAM can use this information | ||||
| in determining whether a TA can be deleted. Each unneeded TA is | ||||
| expressed in the form of a component-id byte string. | ||||
| ext-list | ext-list | |||
| The ext-list parameter lists the supported extensions. This | The ext-list parameter lists the supported extensions. This | |||
| document does not define any extensions. | document does not define any extensions. | |||
| 4.4. TrustedAppInstall | The tc-info object has the following fields: | |||
| The TrustedAppInstall message is used by the TAM to install software | component-id | |||
| (trusted apps) via the TEEP Agent. | A unique identifier encoded as a CBOR bstr. | |||
| Like other TEEP messages, the TrustedAppInstall message is signed, | tc-manifest-sequence-number | |||
| and the relevant CDDL snippet is shown below. The complete CDDL | The suit-manifest-sequence-number value from the SUIT manifest for | |||
| structure is shown in [CDDL]. | the Trusted Component, if a SUIT manifest was used. | |||
| trusted-app-install = [ | The requested-ta-info message has the following fields: | |||
| type: TEEP-TYPE-trusted-app-install, | ||||
| component-id | ||||
| A unique identifier encoded as a CBOR bstr. | ||||
| tc-manifest-sequence-number | ||||
| The minimum suit-manifest-sequence-number value from a SUIT | ||||
| manifest for the TA. If not present, indicates that any version | ||||
| will do. | ||||
| have-binary | ||||
| If present with a value of true, indicates that the TEEP agent | ||||
| already has the TA binary and only needs an Install message with a | ||||
| SUIT manifest that authorizes installing it. If have-binary is | ||||
| true, the tc-manifest-sequence-number field MUST be present. | ||||
| 4.4. Install Message | ||||
| The Install message is used by the TAM to install a Trusted Component | ||||
| via the TEEP Agent. | ||||
| Like other TEEP messages, the Install message is signed, and the | ||||
| relevant CDDL snippet is shown below. The complete CDDL structure is | ||||
| shown in [CDDL]. | ||||
| install = [ | ||||
| type: TEEP-TYPE-install, | ||||
| token: uint, | token: uint, | |||
| option: { | option: { | |||
| ? manifest-list => [ + SUIT_Envelope ], | ? manifest-list => [ + SUIT_Envelope ], | |||
| * $$trusted-app-install-extensions, | * $$install-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| The TrustedAppInstall message has the following fields: | The Install message has the following fields: | |||
| type | type | |||
| The value of (3) corresponds to a TrustedAppInstall message sent | The value of (3) corresponds to an Install message sent from the | |||
| from the TAM to the TEEP Agent. In case of successful processing, | TAM to the TEEP Agent. In case of successful processing, a | |||
| an Success message is returned by the TEEP Agent. In case of an | Success message is returned by the TEEP Agent. In case of an | |||
| error, an Error message is returned. Note that the | error, an Error message is returned. Note that the Install | |||
| TrustedAppInstall message is used for initial TA installation but | message is used for initial Trusted Component installation as well | |||
| also for TA updates. | as for updates. | |||
| token | token | |||
| The value in the token field is used to match responses to | The value in the token field is used to match responses to | |||
| requests. | requests. | |||
| manifest-list | manifest-list | |||
| The manifest-list field is used to convey one or multiple SUIT | The manifest-list field is used to convey one or multiple SUIT | |||
| manifests. A manifest is a bundle of metadata about the trusted | manifests. A manifest is a bundle of metadata about a TA, such as | |||
| app, where to find the code, the devices to which it applies, and | where to find the code, the devices to which it applies, and | |||
| cryptographic information protecting the manifest. The manifest | cryptographic information protecting the manifest. The manifest | |||
| may also convey personalization data. TA binaries and | may also convey personalization data. TA binaries and | |||
| personalization data is typically signed and encrypted by the SP. | personalization data can be signed and encrypted by the same TA | |||
| Other combinations are, however, possible as well. For example, | Signer. Other combinations are, however, possible as well. For | |||
| it is also possible for the TAM to sign and encrypt the | example, it is also possible for the TAM to sign and encrypt the | |||
| personalization data and to let the SP sign and/or encrypt the TA | personalization data and to let the TA Developer sign and/or | |||
| binary. | encrypt the TA binary. | |||
| 4.5. TrustedAppDelete | 4.5. Delete Message | |||
| The TrustedAppDelete message is used by the TAM to remove software | The Delete message is used by the TAM to remove a Trusted Component | |||
| (trust apps) from the device. | from the device. | |||
| Like other TEEP messages, the TrustedAppDelete message is signed, and | Like other TEEP messages, the Delete message is signed, and the | |||
| the relevant CDDL snippet is shown below. The complete CDDL | relevant CDDL snippet is shown below. The complete CDDL structure is | |||
| structure is shown in [CDDL]. | shown in [CDDL]. | |||
| trusted-app-delete = [ | delete = [ | |||
| type: TEEP-TYPE-trusted-app-delete, | type: TEEP-TYPE-delete, | |||
| token: uint, | token: uint, | |||
| option: { | option: { | |||
| ? ta-list => [ + bstr ], | ? tc-list => [ + bstr ], | |||
| * $$trusted-app-delete-extensions, | * $$delete-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| The TrustedAppDelete message has the following fields: | The Delete message has the following fields: | |||
| type | type | |||
| The value of (4) corresponds to a TrustedAppDelete message sent | The value of (4) corresponds to a Delete message sent from the TAM | |||
| from the TAM to the TEEP Agent. In case of successful processing, | to the TEEP Agent. In case of successful processing, a Success | |||
| an Success message is returned by the TEEP Agent. In case of an | message is returned by the TEEP Agent. In case of an error, an | |||
| error, an Error message is returned. | Error message is returned. | |||
| token | token | |||
| The value in the token parameter is used to match responses to | The value in the token parameter is used to match responses to | |||
| requests. | requests. | |||
| ta-list | tc-list | |||
| The ta-list parameter enumerates the TAs to be deleted. | The tc-list parameter enumerates the Trusted Components to be | |||
| deleted, in the form of component-id byte strings. | ||||
| 4.6. Success | 4.6. Success Message | |||
| The TEEP protocol defines two implicit success messages and this | The TEEP protocol defines two implicit success messages and this | |||
| explicit Success message for the cases where the TEEP Agent cannot | explicit Success message for the cases where the TEEP Agent cannot | |||
| return another reply, such as for the TrustedAppInstall and the | return another reply, such as for the Install and the Delete | |||
| TrustedAppDelete messages. | messages. | |||
| Like other TEEP messages, the Success message is signed, and the | Like other TEEP messages, the Success message is signed, and the | |||
| relevant CDDL snippet is shown below. The complete CDDL structure is | relevant CDDL snippet is shown below. The complete CDDL structure is | |||
| shown in [CDDL]. | shown in [CDDL]. | |||
| teep-success = [ | teep-success = [ | |||
| type: TEEP-TYPE-teep-success, | type: TEEP-TYPE-teep-success, | |||
| token: uint, | token: uint, | |||
| option: { | option: { | |||
| ? msg => text, | ? msg => text, | |||
| ? suit-reports => [ + suit-report ], | ||||
| * $$teep-success-extensions, | * $$teep-success-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| The Success message has the following fields: | The Success message has the following fields: | |||
| type | type | |||
| The value of (5) corresponds to corresponds to a Success message | The value of (5) corresponds to corresponds to a Success message | |||
| sent from the TEEP Agent to the TAM. | sent from the TEEP Agent to the TAM. | |||
| token | token | |||
| The value in the token parameter is used to match responses to | The value in the token parameter is used to match responses to | |||
| requests. | requests. | |||
| msg | msg | |||
| The msg parameter contains optional diagnostics information | The msg parameter contains optional diagnostics information | |||
| encoded in UTF-8 [RFC3629] returned by the TEEP Agent. | encoded in UTF-8 [RFC3629] returned by the TEEP Agent. | |||
| 4.7. Error | suit-reports | |||
| If present, the suit-reports parameter contains a set of SUIT | ||||
| Reports as defined in Section 4 of [I-D.moran-suit-report]. | ||||
| 4.7. Error Message | ||||
| The Error message is used by the TEEP Agent to return an error. | The Error message is used by the TEEP Agent to return an error. | |||
| Like other TEEP messages, the Error message is signed, and the | Like other TEEP messages, the Error message is signed, and the | |||
| relevant CDDL snippet is shown below. The complete CDDL structure is | relevant CDDL snippet is shown below. The complete CDDL structure is | |||
| shown in [CDDL]. | shown in [CDDL]. | |||
| teep-error = [ | teep-error = [ | |||
| type: TEEP-TYPE-teep-error, | type: TEEP-TYPE-teep-error, | |||
| token: uint, | token: uint, | |||
| err-code: uint, | err-code: uint, | |||
| options: { | options: { | |||
| ? err-msg => text, | ? err-msg => text, | |||
| ? cipher-suites => [ + suite ], | ? supported-cipher-suites => [ + suite ], | |||
| ? versions => [ + version ], | ? versions => [ + version ], | |||
| ? suit-reports => [ + suit-report ], | ||||
| * $$teep-error--extensions, | * $$teep-error--extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| The Error message has the following fields: | The Error message has the following fields: | |||
| type | type | |||
| The value of (6) corresponds to an Error message sent from the | The value of (6) corresponds to an Error message sent from the | |||
| TEEP Agent to the TAM. | TEEP Agent to the TAM. | |||
| token | token | |||
| The value in the token parameter is used to match responses to | The value in the token parameter is used to match responses to | |||
| requests. | requests. | |||
| err-code | err-code | |||
| The err-code parameter is populated with values listed in a | The err-code parameter contains one of the values listed in the | |||
| registry (with the initial set of error codes listed below). Only | registry defined in Section 8.2 (with the initial set of error | |||
| selected messages are applicable to each message. | codes listed below). Only selected values are applicable to each | |||
| message. | ||||
| err-msg | err-msg | |||
| The err-msg parameter is a human-readable diagnostic text that | The err-msg parameter is human-readable diagnostic text that MUST | |||
| MUST be encoded using UTF-8 [RFC3629] using Net-Unicode form | be encoded using UTF-8 [RFC3629] using Net-Unicode form [RFC5198]. | |||
| [RFC5198]. | ||||
| cipher-suites | supported-cipher-suites | |||
| The cipher-suites parameter lists the ciphersuite(s) supported by | The supported-cipher-suites parameter lists the ciphersuite(s) | |||
| the TEEP Agent. This field is optional but MUST be returned with | supported by the TEEP Agent. Details about the ciphersuite | |||
| the ERR_UNSUPPORTED_CRYPTO_ALG error message. | encoding can be found in Section 6. This field is optional but | |||
| MUST be returned with the ERR_UNSUPPORTED_CRYPTO_ALG error | ||||
| message. | ||||
| versions | versions | |||
| The version parameter enumerates the protocol version(s) supported | The versions parameter enumerates the TEEP protocol version(s) | |||
| by the TEEP Agent. This otherwise optional parameter MUST be | supported by the TEEP Agent. This otherwise optional parameter | |||
| returned with the ERR_UNSUPPORTED_MSG_VERSION error message. | MUST be returned with the ERR_UNSUPPORTED_MSG_VERSION error | |||
| message. | ||||
| suit-reports | ||||
| If present, the suit-reports parameter contains a set of SUIT | ||||
| Reports as defined in Section 4 of [I-D.moran-suit-report]. | ||||
| This specification defines the following initial error messages: | This specification defines the following initial error messages: | |||
| ERR_ILLEGAL_PARAMETER (1) | ERR_ILLEGAL_PARAMETER (1) | |||
| The TEEP Agent sends this error message when a request contains | The TEEP request contained incorrect fields or fields that are | |||
| incorrect fields or fields that are inconsistent with other | inconsistent with other fields. | |||
| fields. | ||||
| ERR_UNSUPPORTED_EXTENSION (2) | ERR_UNSUPPORTED_EXTENSION (2) | |||
| The TEEP Agent sends this error message when it recognizes an | The TEEP Agent does not support the request message or an | |||
| unsupported extension or unsupported message. | extension it indicated. | |||
| ERR_REQUEST_SIGNATURE_FAILED (3) | ERR_REQUEST_SIGNATURE_FAILED (3) | |||
| The TEEP Agent sends this error message when it fails to verify | The TEEP Agent could not verify the signature of the request | |||
| the signature of the message. | message. | |||
| ERR_UNSUPPORTED_MSG_VERSION (4) | ERR_UNSUPPORTED_MSG_VERSION (4) | |||
| The TEEP Agent receives a message but does not support the | The TEEP Agent does not support the TEEP protocol version | |||
| indicated version. | indicated in the request message. | |||
| ERR_UNSUPPORTED_CRYPTO_ALG (5) | ERR_UNSUPPORTED_CRYPTO_ALG (5) | |||
| The TEEP Agent receives a request message encoded with an | The TEEP Agent does not support the cryptographic algorithm | |||
| unsupported cryptographic algorithm. | indicated in the request message. | |||
| ERR_BAD_CERTIFICATE (6) | ERR_BAD_CERTIFICATE (6) | |||
| The TEEP Agent returns this error when processing of a certificate | Processing of a certificate failed. For diagnosis purposes it is | |||
| failed. For diagnosis purposes it is RECOMMMENDED to include | RECOMMMENDED to include information about the failing certificate | |||
| information about the failing certificate in the error message. | in the error message. | |||
| ERR_UNSUPPORTED_CERTIFICATE (7) | ERR_UNSUPPORTED_CERTIFICATE (7) | |||
| The TEEP Agent returns this error when a certificate was of an | A certificate was of an unsupported type. | |||
| unsupported type. | ||||
| ERR_CERTIFICATE_REVOKED (8) | ERR_CERTIFICATE_REVOKED (8) | |||
| The TEEP Agent returns this error when a certificate was revoked | A certificate was revoked by its signer. | |||
| by its signer. | ||||
| ERR_CERTIFICATE_EXPIRED (9) | ERR_CERTIFICATE_EXPIRED (9) | |||
| The TEEP Agent returns this error when a certificate has expired | A certificate has expired or is not currently valid. | |||
| or is not currently valid. | ||||
| ERR_INTERNAL_ERROR (10) | ERR_INTERNAL_ERROR (10) | |||
| The TEEP Agent returns this error when a miscellaneous internal | A miscellaneous internal error occurred while processing the | |||
| error occurred while processing the request. | request message. | |||
| ERR_RESOURCE_FULL (11) | ||||
| This error is reported when a device resource isn't available | ||||
| anymore, such as storage space is full. | ||||
| ERR_TA_NOT_FOUND (12) | ||||
| This error will occur when the target TA does not exist. This | ||||
| error may happen when the TAM has stale information and tries to | ||||
| delete a TA that has already been deleted. | ||||
| ERR_TA_ALREADY_INSTALLED (13) | ||||
| While installing a TA, a TEE will return this error if the TA has | ||||
| already been installed. | ||||
| ERR_TA_UNKNOWN_FORMAT (14) | ||||
| The TEEP Agent returns this error when it does not recognize the | ||||
| format of the TA binary. | ||||
| ERR_TA_DECRYPTION_FAILED (15) | ||||
| The TEEP Agent returns this error when it fails to decrypt the TA | ||||
| binary. | ||||
| ERR_TA_DECOMPRESSION_FAILED (16) | ERR_TC_NOT_FOUND (12) | |||
| The TEEP Agent returns this error when it fails to decompress the | The target Trusted Component does not exist. This error may | |||
| TA binary. | happen when the TAM has stale information and tries to delete a | |||
| Trusted Component that has already been deleted. | ||||
| ERR_MANIFEST_PROCESSING_FAILED (17) | ERR_MANIFEST_PROCESSING_FAILED (17) | |||
| The TEEP Agent returns this error when manifest processing | The TEEP Agent encountered one or more manifest processing | |||
| failures occur that are less specific than ERR_TA_UNKNOWN_FORMAT, | failures. If the suit-reports parameter is present, it contains | |||
| ERR_TA_UNKNOWN_FORMAT, and ERR_TA_DECOMPRESSION_FAILED. | the failure details. | |||
| ERR_PD_PROCESSING_FAILED (18) | ||||
| The TEEP Agent returns this error when it fails to process the | ||||
| provided personalization data. | ||||
| Additional error code can be registered with IANA. | Additional error codes can be registered with IANA. | |||
| 5. Mapping of TEEP Message Parameters to CBOR Labels | 5. Mapping of TEEP Message Parameters to CBOR Labels | |||
| In COSE, arrays and maps use strings, negative integers, and unsigned | In COSE, arrays and maps use strings, negative integers, and unsigned | |||
| integers as their keys. Integers are used for compactness of | integers as their keys. Integers are used for compactness of | |||
| encoding. Since the word "key" is mainly used in its other meaning, | encoding. Since the word "key" is mainly used in its other meaning, | |||
| as a cryptographic key, this specification uses the term "label" for | as a cryptographic key, this specification uses the term "label" for | |||
| this usage as a map key. | this usage as a map key. | |||
| This specification uses the following mapping: | This specification uses the following mapping: | |||
| +-----------------------+-------+ | +-----------------------------+-------+ | |||
| | Name | Label | | | Name | Label | | |||
| +-----------------------+-------+ | +-----------------------------+-------+ | |||
| | cipher-suites | 1 | | | supported-cipher-suites | 1 | | |||
| | nonce | 2 | | | challenge | 2 | | |||
| | version | 3 | | | version | 3 | | |||
| | ocsp-data | 4 | | | ocsp-data | 4 | | |||
| | selected-cipher-suite | 5 | | | selected-cipher-suite | 5 | | |||
| | selected-version | 6 | | | selected-version | 6 | | |||
| | eat | 7 | | | evidence | 7 | | |||
| | ta-list | 8 | | | tc-list | 8 | | |||
| | ext-list | 9 | | | ext-list | 9 | | |||
| | manifest-list | 10 | | | manifest-list | 10 | | |||
| | msg | 11 | | | msg | 11 | | |||
| | err-msg | 12 | | | err-msg | 12 | | |||
| +-----------------------+-------+ | | evidence-format | 13 | | |||
| | requested-tc-list | 14 | | ||||
| | unneeded-tc-list | 15 | | ||||
| | component-id | 16 | | ||||
| | tc-manifest-sequence-number | 17 | | ||||
| | have-binary | 18 | | ||||
| | suit-reports | 19 | | ||||
| +-----------------------------+-------+ | ||||
| 6. Ciphersuites | 6. Ciphersuites | |||
| A ciphersuite consists of an AEAD algorithm, a HMAC algorithm, and a | A ciphersuite consists of an AEAD algorithm, an HMAC algorithm, and a | |||
| signature algorithm. Each ciphersuite is identified with an integer | signature algorithm. Each ciphersuite is identified with an integer | |||
| value, which corresponds to an IANA registered ciphersuite. This | value, which corresponds to an IANA registered ciphersuite (see | |||
| document specifies two ciphersuites. | Section 8.3. This document specifies two ciphersuites. | |||
| +-------+------------------------------------------------+ | +-------+------------------------------------------------+ | |||
| | Value | Ciphersuite | | | Value | Ciphersuite | | |||
| +-------+------------------------------------------------+ | +-------+------------------------------------------------+ | |||
| | 1 | AES-CCM-16-64-128, HMAC 256/256, X25519, EdDSA | | | 1 | AES-CCM-16-64-128, HMAC 256/256, X25519, EdDSA | | |||
| | 2 | AES-CCM-16-64-128, HMAC 256/256, P-256, ES256 | | | 2 | AES-CCM-16-64-128, HMAC 256/256, P-256, ES256 | | |||
| +-------+------------------------------------------------+ | +-------+------------------------------------------------+ | |||
| 7. Security Considerations | 7. Security Considerations | |||
| This section summarizes the security considerations discussed in this | This section summarizes the security considerations discussed in this | |||
| specification: | specification: | |||
| Cryptographic Algorithms | Cryptographic Algorithms | |||
| TEEP protocol messages exchanged between the TAM and the TEEP | TEEP protocol messages exchanged between the TAM and the TEEP | |||
| Agent are protected using COSE. This specification relies on the | Agent are protected using COSE. This specification relies on the | |||
| cryptographic algorithms provided by COSE. Public key based | cryptographic algorithms provided by COSE. Public key based | |||
| authentication is used to by the TEEP Agent to authenticate the | authentication is used by the TEEP Agent to authenticate the TAM | |||
| TAM and vice versa. | and vice versa. | |||
| Attestation | Attestation | |||
| A TAM may rely on the attestation information provided by the TEEP | A TAM can rely on the attestation evidence provided by the TEEP | |||
| Agent and the Entity Attestation Token is re-used to convey this | Agent. To sign the attestation evidence, it is necessary for the | |||
| information. To sign the Entity Attestation Token it is necessary | device to possess a public key (usually in the form of a | |||
| for the device to possess a public key (usually in the form of a | ||||
| certificate) along with the corresponding private key. Depending | certificate) along with the corresponding private key. Depending | |||
| on the properties of the attestation mechanism it is possible to | on the properties of the attestation mechanism, it is possible to | |||
| uniquely identify a device based on information in the attestation | uniquely identify a device based on information in the attestation | |||
| information or in the certificate used to sign the attestation | evidence or in the certificate used to sign the attestation | |||
| token. This uniqueness may raise privacy concerns. To lower the | evidence. This uniqueness may raise privacy concerns. To lower | |||
| privacy implications the TEEP Agent MUST present its attestation | the privacy implications the TEEP Agent MUST present its | |||
| information only to an authenticated and authorized TAM and SHOULD | attestation evidence only to an authenticated and authorized TAM | |||
| use encryption in EATs as discussed in [I-D.ietf-rats-eat] since | and when using EATS, it SHOULD use encryption as discussed in | |||
| confidentiality is not provided by the TEEP protocol itself, and | [I-D.ietf-rats-eat], since confidentiality is not provided by the | |||
| the transport protocol under the TEEP protocol might be | TEEP protocol itself and the transport protocol under the TEEP | |||
| implemented outside of any TEE. | protocol might be implemented outside of any TEE. If any | |||
| mechanism other than EATs is used, it is up to that mechanism to | ||||
| specify how privacy is provided. | ||||
| TA Binaries | TA Binaries | |||
| TA binaries are provided by the SP. It is the responsibility of | Each TA binary is signed by a TA Signer. It is the responsibility | |||
| the TAM to relay only verified TAs from authorized SPs. Delivery | of the TAM to relay only verified TAs from authorized TA Signers. | |||
| of that TA to the TEEP Agent is then the responsibility of the TAM | Delivery of a TA to the TEEP Agent is then the responsibility of | |||
| and the TEEP Broker, using the security mechanisms provided by the | the TAM, using the security mechanisms provided by the TEEP | |||
| TEEP protocol. To protect the TA binary the SUIT manifest is re- | protocol. To protect the TA binary, the SUIT manifest format is | |||
| used and it offers a varity of security features, including | used and it offers a variety of security features, including | |||
| digitial signatures and symmetric encryption. | digitial signatures and symmetric encryption. | |||
| Personalization Data | Personalization Data | |||
| An SP or a TAM can supply personalization data along with a TA. | A TA Signer or TAM can supply personalization data along with a | |||
| This data is also protected by a SUIT manifest. The | TA. This data is also protected by a SUIT manifest. | |||
| personalization data may be opaque to the TAM. | Personalization data signed and encrypted by a TA Signer other | |||
| than the TAM is opaque to the TAM. | ||||
| TEEP Broker | TEEP Broker | |||
| The TEEP protocol relies on the TEEP Broker to relay messages | As discussed in section 6 of [I-D.ietf-teep-architecture], the | |||
| TEEP protocol typically relies on a TEEP Broker to relay messages | ||||
| between the TAM and the TEEP Agent. When the TEEP Broker is | between the TAM and the TEEP Agent. When the TEEP Broker is | |||
| compromised it can drop messages, delay the delivery of messages, | compromised it can drop messages, delay the delivery of messages, | |||
| and replay messages but it cannot modify those messages. (A | and replay messages but it cannot modify those messages. (A | |||
| replay would be, however, detected by the TEEP Agent.) A | replay would be, however, detected by the TEEP Agent.) A | |||
| compromised TEEP Broker could reorder messages in an attempt to | compromised TEEP Broker could reorder messages in an attempt to | |||
| install an old version of a TA. Information in the manifest | install an old version of a TA. Information in the manifest | |||
| ensures that the TEEP Agents are protected against such | ensures that TEEP Agents are protected against such downgrade | |||
| downgrading attacks based on features offered by the manifest | attacks based on features offered by the manifest itself. | |||
| itself. | ||||
| CA Compromise | TA Signer Compromise | |||
| The QueryRequest message from a TAM to the TEEP Agent may include | The QueryRequest message from a TAM to the TEEP Agent can include | |||
| OCSP stapling data for the TAM's signer certificate and for | OCSP stapling data for the TAM's certificate and for intermediate | |||
| intermediate CA certificates up to the root certificate so that | CA certificates up to the root certificate so that the TEEP Agent | |||
| the TEEP Agent can verify the certificate's revocation status. A | can verify the certificate's revocation status. A certificate | |||
| certificate revocation status check on a TA signer certificate is | revocation status check on a TA Signer certificate is OPTIONAL by | |||
| OPTIONAL by a TEEP Agent. A TAM is responsible for vetting a TA | a TEEP Agent. A TAM is responsible for vetting a TA and before | |||
| and before distributing them to TEEP Agents. TEEP Agents will | distributing them to TEEP Agents, so TEEP Agents can instead | |||
| trust a TA signer certificate's validation status done by a TAM. | simply trust that a TA Signer certificate's status was done by the | |||
| TAM. | ||||
| CA Compromise | CA Compromise | |||
| The CA issuing certificates to a TAM or an SP may get compromised. | The CA issuing certificates to a TAM or a TA Signer might get | |||
| A compromised intermediate CA certificates can be detected by a | compromised. A compromised intermediate CA certificate can be | |||
| TEEP Agent by using OCSP information, assuming the revocation | detected by a TEEP Agent by using OCSP information, assuming the | |||
| information is available. Additionally, it is RECOMMENDED to | revocation information is available. Additionally, it is | |||
| provide a way to update the trust anchor store used by the device, | RECOMMENDED to provide a way to update the trust anchor store used | |||
| for example using a firmware update mechanism. If the CA issuing | by the TEE, for example using a firmware update mechanism. If the | |||
| certificates to devices gets compromised then these devices might | CA issuing certificates to devices gets compromised then these | |||
| be rejected by a TAM, if revocation is available to the TAM. | devices might be rejected by a TAM, if revocation is available to | |||
| the TAM. | ||||
| Compromised TAM | Compromised TAM | |||
| The TEEP Agent SHOULD use OCSP information to verify the validity | The TEEP Agent SHOULD use OCSP information to verify the validity | |||
| of the TAM-provided certificate (as well as the validity of | of the TAM's certificate (as well as the validity of intermediate | |||
| intermediate CA certificates). The integrity and the accuracy of | CA certificates). The integrity and the accuracy of the clock | |||
| the clock within the TEE determines the ability to determine an | within the TEE determines the ability to determine an expired or | |||
| expired or revoked certificate since OCSP stapling includes | revoked certificate. OCSP stapling data includes signature | |||
| signature generation time, certificate validity dates are compared | generation time, allowing certificate validity dates to be | |||
| to the current time. | compared to the current time. | |||
| Compromised Time Source | ||||
| As discussed above, certificate validity checks rely on comparing | ||||
| validity dates to the current time, which relies on having a | ||||
| trusted source of time, such as [RFC8915]. A compromised time | ||||
| source could thus be used to subvert such validity checks. | ||||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 8.1. Media Type Registration | 8.1. Media Type Registration | |||
| IANA is requested to assign a media type for application/teep+cbor. | IANA is requested to assign a media type for application/teep+cbor. | |||
| Type name: application | Type name: application | |||
| Subtype name: teep+cbor | Subtype name: teep+cbor | |||
| Required parameters: none | Required parameters: none | |||
| Optional parameters: none | Optional parameters: none | |||
| Encoding considerations: Same as encoding considerations of | Encoding considerations: Same as encoding considerations of | |||
| application/cbor | application/cbor. | |||
| Security considerations: See Security Considerations Section of this | Security considerations: See Security Considerations Section of this | |||
| document. | document. | |||
| Interoperability considerations: Same as interoperability | Interoperability considerations: Same as interoperability | |||
| considerations of application/cbor as specified in [RFC7049] | considerations of application/cbor as specified in [RFC7049]. | |||
| Published specification: This document. | Published specification: This document. | |||
| Applications that use this media type: TEEP protocol implementations | Applications that use this media type: TEEP protocol implementations | |||
| Fragment identifier considerations: N/A | Fragment identifier considerations: N/A | |||
| Additional information: | Additional information: | |||
| Deprecated alias names for this type: N/A | Deprecated alias names for this type: N/A | |||
| skipping to change at page 19, line 46 ¶ | skipping to change at page 22, line 4 ¶ | |||
| defined in Section 6. | defined in Section 6. | |||
| 8.4. CBOR Tag Registry | 8.4. CBOR Tag Registry | |||
| IANA is requested to register a CBOR tag in the "CBOR Tags" registry | IANA is requested to register a CBOR tag in the "CBOR Tags" registry | |||
| for use with TEEP messages. | for use with TEEP messages. | |||
| The registry contents is: | The registry contents is: | |||
| o CBOR Tag: TBD1 | o CBOR Tag: TBD1 | |||
| o Data Item: TEEP Message | o Data Item: TEEP Message | |||
| o Semantics: TEEP Message, as defined in [[TBD: This RFC]] | o Semantics: TEEP Message, as defined in [[TBD: This RFC]] | |||
| o Reference: [[TBD: This RFC]] | o Reference: [[TBD: This RFC]] | |||
| o Point of Contact: TEEP working group (teep@ietf.org) | o Point of Contact: TEEP working group (teep@ietf.org) | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [I-D.ietf-rats-eat] | [I-D.ietf-rats-eat] | |||
| Mandyam, G., Lundblade, L., Ballesteros, M., and J. | Mandyam, G., Lundblade, L., Ballesteros, M., and J. | |||
| O'Donoghue, "The Entity Attestation Token (EAT)", draft- | O'Donoghue, "The Entity Attestation Token (EAT)", draft- | |||
| ietf-rats-eat-03 (work in progress), February 2020. | ietf-rats-eat-04 (work in progress), August 2020. | |||
| [I-D.ietf-suit-manifest] | [I-D.ietf-suit-manifest] | |||
| Moran, B., Tschofenig, H., Birkholz, H., and K. Zandberg, | Moran, B., Tschofenig, H., Birkholz, H., and K. Zandberg, | |||
| "A Concise Binary Object Representation (CBOR)-based | "A Concise Binary Object Representation (CBOR)-based | |||
| Serialization Format for the Software Updates for Internet | Serialization Format for the Software Updates for Internet | |||
| of Things (SUIT) Manifest", draft-ietf-suit-manifest-08 | of Things (SUIT) Manifest", draft-ietf-suit-manifest-09 | |||
| (work in progress), July 2020. | (work in progress), July 2020. | |||
| [I-D.moran-suit-report] | ||||
| Moran, B., "Secure Reporting of Update Status", draft- | ||||
| moran-suit-report-00 (work in progress), October 2020. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
| editor.org/info/rfc2119>. | editor.org/info/rfc2119>. | |||
| [RFC2560] Myers, M., Ankney, R., Malpani, A., Galperin, S., and C. | [RFC2560] Myers, M., Ankney, R., Malpani, A., Galperin, S., and C. | |||
| Adams, "X.509 Internet Public Key Infrastructure Online | Adams, "X.509 Internet Public Key Infrastructure Online | |||
| Certificate Status Protocol - OCSP", RFC 2560, | Certificate Status Protocol - OCSP", RFC 2560, | |||
| DOI 10.17487/RFC2560, June 1999, <https://www.rfc- | DOI 10.17487/RFC2560, June 1999, <https://www.rfc- | |||
| editor.org/info/rfc2560>. | editor.org/info/rfc2560>. | |||
| skipping to change at page 21, line 7 ¶ | skipping to change at page 23, line 19 ¶ | |||
| [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | |||
| RFC 8152, DOI 10.17487/RFC8152, July 2017, | RFC 8152, DOI 10.17487/RFC8152, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8152>. | <https://www.rfc-editor.org/info/rfc8152>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [I-D.ietf-sacm-coswid] | ||||
| Birkholz, H., Fitzgerald-McKay, J., Schmidt, C., and D. | ||||
| Waltermire, "Concise Software Identification Tags", draft- | ||||
| ietf-sacm-coswid-15 (work in progress), May 2020. | ||||
| [I-D.ietf-teep-architecture] | [I-D.ietf-teep-architecture] | |||
| Pei, M., Tschofenig, H., Thaler, D., and D. Wheeler, | Pei, M., Tschofenig, H., Thaler, D., and D. Wheeler, | |||
| "Trusted Execution Environment Provisioning (TEEP) | "Trusted Execution Environment Provisioning (TEEP) | |||
| Architecture", draft-ietf-teep-architecture-11 (work in | Architecture", draft-ietf-teep-architecture-12 (work in | |||
| progress), July 2020. | progress), July 2020. | |||
| [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | ||||
| Unique IDentifier (UUID) URN Namespace", RFC 4122, | ||||
| DOI 10.17487/RFC4122, July 2005, <https://www.rfc- | ||||
| editor.org/info/rfc4122>. | ||||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | |||
| Definition Language (CDDL): A Notational Convention to | Definition Language (CDDL): A Notational Convention to | |||
| Express Concise Binary Object Representation (CBOR) and | Express Concise Binary Object Representation (CBOR) and | |||
| JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | |||
| June 2019, <https://www.rfc-editor.org/info/rfc8610>. | June 2019, <https://www.rfc-editor.org/info/rfc8610>. | |||
| [RFC8915] Franke, D., Sibold, D., Teichel, K., Dansarie, M., and R. | ||||
| Sundblad, "Network Time Security for the Network Time | ||||
| Protocol", RFC 8915, DOI 10.17487/RFC8915, September 2020, | ||||
| <https://www.rfc-editor.org/info/rfc8915>. | ||||
| A. Contributors | A. Contributors | |||
| We would like to thank Brian Witten (Symantec), Tyler Kim (Solacia), | We would like to thank Brian Witten (Symantec), Tyler Kim (Solacia), | |||
| Nick Cook (Arm), and Minho Yoo (IoTrust) for their contributions to | Nick Cook (Arm), and Minho Yoo (IoTrust) for their contributions to | |||
| the Open Trust Protocol (OTrP), which influenced the design of this | the Open Trust Protocol (OTrP), which influenced the design of this | |||
| specification. | specification. | |||
| B. Acknowledgements | B. Acknowledgements | |||
| We would like to thank Eve Schooler for the suggestion of the | We would like to thank Eve Schooler for the suggestion of the | |||
| skipping to change at page 22, line 4 ¶ | skipping to change at page 24, line 33 ¶ | |||
| C. Complete CDDL | C. Complete CDDL | |||
| Valid TEEP messages MUST adhere to the following CDDL data | Valid TEEP messages MUST adhere to the following CDDL data | |||
| definitions, except that "SUIT_Envelope" is specified in | definitions, except that "SUIT_Envelope" is specified in | |||
| [I-D.ietf-suit-manifest]. | [I-D.ietf-suit-manifest]. | |||
| teep-message = $teep-message-type .within teep-message-framework | teep-message = $teep-message-type .within teep-message-framework | |||
| SUIT_Envelope = any | SUIT_Envelope = any | |||
| teep-message-framework = [ | teep-message-framework = [ | |||
| type: 0..23 / $teep-type-extension, | type: 0..23 / $teep-type-extension, | |||
| token: uint, | token: uint, | |||
| options: { * teep-option }, | options: { * teep-option }, | |||
| * int; further integers, e.g. for data-item-requested | * int; further integers, e.g. for data-item-requested | |||
| ] | ] | |||
| teep-option = (uint => any) | teep-option = (uint => any) | |||
| ; messages defined below: | ; messages defined below: | |||
| $teep-message-type /= query-request | $teep-message-type /= query-request | |||
| $teep-message-type /= query-response | $teep-message-type /= query-response | |||
| $teep-message-type /= trusted-app-install | $teep-message-type /= install | |||
| $teep-message-type /= trusted-app-delete | $teep-message-type /= delete | |||
| $teep-message-type /= teep-error | ||||
| $teep-message-type /= teep-success | $teep-message-type /= teep-success | |||
| $teep-message-type /= teep-error | ||||
| ; message type numbers | ; message type numbers | |||
| TEEP-TYPE-query-request = 1 | TEEP-TYPE-query-request = 1 | |||
| TEEP-TYPE-query-response = 2 | TEEP-TYPE-query-response = 2 | |||
| TEEP-TYPE-trusted-app-install = 3 | TEEP-TYPE-install = 3 | |||
| TEEP-TYPE-trusted-app-delete = 4 | TEEP-TYPE-delete = 4 | |||
| TEEP-TYPE-teep-success = 5 | TEEP-TYPE-teep-success = 5 | |||
| TEEP-TYPE-teep-error = 6 | TEEP-TYPE-teep-error = 6 | |||
| version = uint .size 4 | version = uint .size 4 | |||
| ext-info = uint | ext-info = uint | |||
| ; data items as bitmaps | ; data items as bitmaps | |||
| data-item-requested = $data-item-requested .within uint .size 8 | data-item-requested = $data-item-requested .within uint .size 8 | |||
| attestation = 1 | attestation = 1 | |||
| $data-item-requested /= attestation | $data-item-requested /= attestation | |||
| trusted-apps = 2 | trusted-components = 2 | |||
| $data-item-requested /= trusted-apps | $data-item-requested /= trusted-components | |||
| extensions = 4 | extensions = 4 | |||
| $data-item-requested /= extensions | $data-item-requested /= extensions | |||
| suit-commands = 8 | suit-commands = 8 | |||
| $data-item-requested /= suit-commands | $data-item-requested /= suit-commands | |||
| query-request = [ | query-request = [ | |||
| type: TEEP-TYPE-query-request, | type: TEEP-TYPE-query-request, | |||
| token: uint, | token: uint, | |||
| options: { | options: { | |||
| ? supported-cipher-suites => suite, | ? supported-cipher-suites => [ + suite ], | |||
| ? nonce => bstr .size (8..64), | ? challenge => bstr .size (8..64), | |||
| ? version => [ + version ], | ? versions => [ + version ], | |||
| ? oscp-data => bstr, | ? ocsp-data => bstr, | |||
| * $$query-request-extensions | * $$query-request-extensions | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| }, | }, | |||
| data-item-requested | data-item-requested | |||
| ] | ] | |||
| ; ciphersuites as bitmaps | ; ciphersuites as bitmaps | |||
| suite = $TEEP-suite .within uint .size 8 | suite = $TEEP-suite .within uint .size 8 | |||
| TEEP-AES-CCM-16-64-128-HMAC256--256-X25519-EdDSA = 1 | TEEP-AES-CCM-16-64-128-HMAC256--256-X25519-EdDSA = 1 | |||
| skipping to change at page 23, line 24 ¶ | skipping to change at page 26, line 5 ¶ | |||
| $TEEP-suite /= TEEP-AES-CCM-16-64-128-HMAC256--256-X25519-EdDSA | $TEEP-suite /= TEEP-AES-CCM-16-64-128-HMAC256--256-X25519-EdDSA | |||
| $TEEP-suite /= TEEP-AES-CCM-16-64-128-HMAC256--256-P-256-ES256 | $TEEP-suite /= TEEP-AES-CCM-16-64-128-HMAC256--256-P-256-ES256 | |||
| query-response = [ | query-response = [ | |||
| type: TEEP-TYPE-query-response, | type: TEEP-TYPE-query-response, | |||
| token: uint, | token: uint, | |||
| options: { | options: { | |||
| ? selected-cipher-suite => suite, | ? selected-cipher-suite => suite, | |||
| ? selected-version => version, | ? selected-version => version, | |||
| ? eat => bstr, | ? evidence-format => text, | |||
| ? ta-list => [ + bstr ], | ? evidence => bstr, | |||
| ? tc-list => [ + tc-info ], | ||||
| ? requested-tc-list => [ + requested-tc-info ], | ||||
| ? unneeded-tc-list => [ + bstr ], | ||||
| ? ext-list => [ + ext-info ], | ? ext-list => [ + ext-info ], | |||
| * $$query-response-extensions, | * $$query-response-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| trusted-app-install = [ | tc-info = { | |||
| type: TEEP-TYPE-trusted-app-install, | component-id: bstr, | |||
| ? tc-manifest-sequence-number: uint | ||||
| } | ||||
| requested-ta-info = { | ||||
| component-id: bstr, | ||||
| ? tc-manifest-sequence-number: uint, | ||||
| ? have-binary: bool | ||||
| } | ||||
| install = [ | ||||
| type: TEEP-TYPE-install, | ||||
| token: uint, | token: uint, | |||
| option: { | option: { | |||
| ? manifest-list => [ + SUIT_Envelope ], | ? manifest-list => [ + SUIT_Envelope ], | |||
| * $$trusted-app-install-extensions, | * $$install-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| trusted-app-delete = [ | delete = [ | |||
| type: TEEP-TYPE-trusted-app-delete, | type: TEEP-TYPE-delete, | |||
| token: uint, | token: uint, | |||
| option: { | option: { | |||
| ? ta-list => [ + bstr ], | ? tc-list => [ + bstr ], | |||
| * $$trusted-app-delete-extensions, | * $$delete-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| teep-success = [ | teep-success = [ | |||
| type: TEEP-TYPE-teep-success, | type: TEEP-TYPE-teep-success, | |||
| token: uint, | token: uint, | |||
| option: { | option: { | |||
| ? msg => text, | ? msg => text, | |||
| ? suit-reports => [ + suit-report ], | ||||
| * $$teep-success-extensions, | * $$teep-success-extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| ] | ] | |||
| teep-error = [ | teep-error = [ | |||
| type: TEEP-TYPE-teep-error, | type: TEEP-TYPE-teep-error, | |||
| token: uint, | token: uint, | |||
| err-code: uint, | ||||
| options: { | options: { | |||
| ? err-msg => text, | ? err-msg => text, | |||
| ? cipher-suites => [ + suite ], | ? supported-cipher-suites => [ + suite ], | |||
| ? versions => [ + version ], | ? versions => [ + version ], | |||
| ? suit-reports => [ + suit-report ], | ||||
| * $$teep-error--extensions, | * $$teep-error--extensions, | |||
| * $$teep-option-extensions | * $$teep-option-extensions | |||
| } | } | |||
| err-code: uint, | ||||
| ] | ] | |||
| cipher-suites = 1 | supported-cipher-suites = 1 | |||
| nonce = 2 | challenge = 2 | |||
| versions = 3 | versions = 3 | |||
| oscp-data = 4 | ocsp-data = 4 | |||
| selected-cipher-suite = 5 | selected-cipher-suite = 5 | |||
| selected-version = 6 | selected-version = 6 | |||
| eat = 7 | evidence = 7 | |||
| ta-list = 8 | tc-list = 8 | |||
| ext-list = 9 | ext-list = 9 | |||
| manifest-list = 10 | manifest-list = 10 | |||
| msg = 11 | msg = 11 | |||
| err-msg = 12 | err-msg = 12 | |||
| evidence-format = 13 | ||||
| requested-tc-list = 14 | ||||
| unneeded-tc-list = 15 | ||||
| component-id = 16 | ||||
| tc-manifest-sequence-number = 17 | ||||
| have-binary = 18 | ||||
| suit-reports = 19 | ||||
| D. Examples of Diagnostic Notation and Binary Representation | ||||
| D.1. Some assumptions in examples | ||||
| o OCSP stapling data = h'010203' | ||||
| o TEEP Device will have 2 TAs | ||||
| * TA-ID: 0x0102030405060708090a0b0c0d0e0f, | ||||
| 0x1102030405060708090a0b0c0d0e0f | ||||
| o SUIT manifest-list is set empty only for example purposes | ||||
| o Not including Entity Attestation Token (EAT) parameters for | ||||
| example purposes | ||||
| D.2. QueryRequest Message | ||||
| D.2.1. CBOR Diagnostic Notation | ||||
| / query-request = / | ||||
| [ | ||||
| 1, / type : TEEP-TYPE-query-request = 1 (fixed int) / | ||||
| 2004318071, / token : 0x77777777 (uint), generated by TAM / | ||||
| / options : / | ||||
| { | ||||
| 1 : [ 1 ] / supported-cipher-suites = 1 (mapkey) : / | ||||
| / TEEP-AES-CCM-16-64-128-HMAC256--256-X25519-EdDSA = | ||||
| [ 1 ] (array of uint .size 8) / | ||||
| 3 : [ 0 ] / version = 3 (mapkey) : | ||||
| [ 0 ] (array of uint .size 4) / | ||||
| 4 : h'010203' / ocsp-data = 4 (mapkey) : 0x010203 (bstr) / | ||||
| }, | ||||
| 2 / data-item-requested : trusted-components = 2 (uint) / | ||||
| ] | ||||
| D.2.2. CBOR Binary Representation | ||||
| 84 # array(4), | ||||
| 01 # unsigned(1) | ||||
| 1A 77777777 # unsigned(2004318071, 0x77777777) | ||||
| A3 # map(3) | ||||
| 01 # unsigned(1) | ||||
| 81 # array(1) | ||||
| 01 # unsigned(1) within .size 8 | ||||
| 03 # unsigned(3) | ||||
| 81 # array(1) | ||||
| 00 # unsigned(0) within .size 4 | ||||
| 04 # unsigned(4) | ||||
| 43 # bytes(3) | ||||
| 010203 # "\x01\x02\x03" | ||||
| 02 # unsigned(2) | ||||
| D.3. QueryResponse Message | ||||
| D.3.1. CBOR Diagnostic Notation | ||||
| / query-response = / | ||||
| [ | ||||
| 2, / type : TEEP-TYPE-query-response = 2 (fixed int) / | ||||
| 2004318071, / token : 0x77777777 (uint), from TAM's QueryRequest | ||||
| message / | ||||
| / options : / | ||||
| { | ||||
| 5 : 1, / selected-cipher-suite = 5(mapkey) :/ | ||||
| / TEEP-AES-CCM-16-64-128-HMAC256--256-X25519-EdDSA = | ||||
| 1 (uint .size 8) / | ||||
| 6 : 0, / selected-version = 6 (mapkey) : 0 (uint .size 4) / | ||||
| 8 : [ h'0102030405060708090a0b0c0d0e0f', | ||||
| h'1102030405060708090a0b0c0d0e0f' ] | ||||
| / ta-list = 8 (mapkey) : | ||||
| [ 0x0102030405060708090a0b0c0d0e0f, | ||||
| 0x1102030405060708090a0b0c0d0e0f ] | ||||
| (array of bstr) / | ||||
| } | ||||
| ] | ||||
| D.3.2. CBOR Binary Representation | ||||
| 83 # array(3) | ||||
| 02 # unsigned(2) | ||||
| 1A 77777777 # unsigned(2004318071, 0x77777777) | ||||
| A3 # map(3) | ||||
| 05 # unsigned(5) | ||||
| 01 # unsigned(1) within .size 8 | ||||
| 06 # unsigned(6) | ||||
| 00 # unsigned(0) within .size 4 | ||||
| 08 # unsigned(8) | ||||
| 82 # array(2) | ||||
| 4F # bytes(16) | ||||
| 0102030405060708090A0B0C0D0D0F | ||||
| 4F # bytes(16) | ||||
| 1102030405060708090A0B0C0D0D0F | ||||
| D.4. Install Message | ||||
| D.4.1. CBOR Diagnostic Notation | ||||
| / install = / | ||||
| [ | ||||
| 3, / type : TEEP-TYPE-install = 3 (fixed int) / | ||||
| 2004318072, / token : 0x777777778 (uint), generated by TAM / | ||||
| / options : / | ||||
| { | ||||
| 10 : [ ] / manifest-list = 10 (mapkey) : | ||||
| [ ] (array of SUIT_Envelope(any)) / | ||||
| / empty, example purpose only / | ||||
| } | ||||
| ] | ||||
| D.4.2. CBOR Binary Representation | ||||
| 83 # array(3) | ||||
| 03 # unsigned(3) | ||||
| 1A 77777778 # unsigned(2004318072, 0x77777778) | ||||
| A1 # map(1) | ||||
| 0A # unsigned(10) | ||||
| 80 # array(0) | ||||
| D.5. Success Message (for Install) | ||||
| D.5.1. CBOR Diagnostic Notation | ||||
| / teep-success = / | ||||
| [ | ||||
| 5, / type : TEEP-TYPE-teep-success = 5 (fixed int) / | ||||
| 2004318072, / token : 0x777777778 (uint), from Install message / | ||||
| ] | ||||
| D.5.2. CBOR Binary Representation | ||||
| 83 # array(3) | ||||
| 05 # unsigned(5) | ||||
| 1A 77777778 # unsigned(2004318072, 0x77777778) | ||||
| D.6. Error Message (for Install) | ||||
| D.6.1. CBOR Diagnostic Notation | ||||
| / teep-error = / | ||||
| [ | ||||
| 6, / type : TEEP-TYPE-teep-error = 6 (fixed int) / | ||||
| 2004318072, / token : 0x777777778 (uint), from Install message / | ||||
| ERR_MANIFEST_PROCESSING_FAILED, | ||||
| / err-code : ERR_MANIFEST_PROCESSING_FAILED = 17 (uint) / | ||||
| / options : / | ||||
| { | ||||
| 12 : "disk-full" / err-msg = 12 (mapkey) : | ||||
| "disk-full" (UTF-8 string) / | ||||
| } | ||||
| ] | ||||
| D.6.2. CBOR binary Representation | ||||
| 83 # array(3) | ||||
| 06 # unsigned(6) | ||||
| 1A 77777778 # unsigned(2004318072, 0x77777778) | ||||
| 11 # unsigned(17) | ||||
| A1 # map(1) | ||||
| 0B # unsigned(12) | ||||
| 69 # text(9) | ||||
| 6469736b2d66756c6c # "disk-full" | ||||
| Authors' Addresses | Authors' Addresses | |||
| Hannes Tschofenig | Hannes Tschofenig | |||
| Arm Ltd. | Arm Ltd. | |||
| Absam, Tirol 6067 | Absam, Tirol 6067 | |||
| Austria | Austria | |||
| Email: hannes.tschofenig@arm.com | Email: hannes.tschofenig@arm.com | |||
| Mingliang Pei | Mingliang Pei | |||
| Broadcom | Broadcom | |||
| 350 Ellis St | 350 Ellis St | |||
| Mountain View, CA 94043 | Mountain View, CA 94043 | |||
| USA | USA | |||
| Email: mingliang.pei@broadcom.com | Email: mingliang.pei@broadcom.com | |||
| David Wheeler | David Wheeler | |||
| Intel | Intel | |||
| End of changes. 126 change blocks. | ||||
| 347 lines changed or deleted | 651 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||