| < draft-ietf-teep-protocol-01.txt | draft-ietf-teep-protocol-02.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: September 10, 2020 Broadcom | Expires: October 16, 2020 Broadcom | |||
| D. Wheeler | D. Wheeler | |||
| Intel | Intel | |||
| D. Thaler | D. Thaler | |||
| Microsoft | Microsoft | |||
| March 9, 2020 | A. Tsukamoto | |||
| AIST | ||||
| April 14, 2020 | ||||
| Trusted Execution Environment Provisioning (TEEP) Protocol | Trusted Execution Environment Provisioning (TEEP) Protocol | |||
| draft-ietf-teep-protocol-01 | draft-ietf-teep-protocol-02 | |||
| 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 42 ¶ | 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 https://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 September 10, 2020. | This Internet-Draft will expire on October 16, 2020. | |||
| 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 | |||
| (https://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. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Message Overview . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Message Overview . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Detailed Messages Specification . . . . . . . . . . . . . . . 5 | 4. Detailed Messages Specification . . . . . . . . . . . . . . . 5 | |||
| 4.1. QueryRequest . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1. Creating and Validating TEEP Messages . . . . . . . . . . 5 | |||
| 4.2. QueryResponse . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1.1. Creating a TEEP message . . . . . . . . . . . . . . . 5 | |||
| 4.3. TrustedAppInstall . . . . . . . . . . . . . . . . . . . . 7 | 4.1.2. Validating a TEEP Message . . . . . . . . . . . . . . 6 | |||
| 4.4. TrustedAppDelete . . . . . . . . . . . . . . . . . . . . 8 | 4.2. QueryRequest . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.5. Success . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.3. QueryResponse . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.6. Error . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.4. TrustedAppInstall . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5. Ciphersuites . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.5. TrustedAppDelete . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6. Security Consideration . . . . . . . . . . . . . . . . . . . 12 | 4.6. Success . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 4.7. Error . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7.1. Media Type Registration . . . . . . . . . . . . . . . . . 13 | 5. Mapping of TEEP Message Parameters to CBOR Labels . . . . . . 15 | |||
| 7.2. Error Code Registry . . . . . . . . . . . . . . . . . . . 14 | 6. Ciphersuites . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 7.3. Ciphersuite Registry . . . . . . . . . . . . . . . . . . 15 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 15 | 8.1. Media Type Registration . . . . . . . . . . . . . . . . . 17 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 16 | 8.2. Error Code Registry . . . . . . . . . . . . . . . . . . . 18 | |||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 16 | 8.3. Ciphersuite Registry . . . . . . . . . . . . . . . . . . 19 | |||
| Appendix B. Contributors . . . . . . . . . . . . . . . . . . . . 17 | 8.4. CBOR Tag Registry . . . . . . . . . . . . . . . . . . . . 19 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 20 | ||||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 21 | ||||
| A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| B. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| C. Complete CDDL . . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
| 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 an 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 | |||
| application providers or device administrators use Trusted | application providers or device administrators use Trusted | |||
| Application Managers (TAMs) to install, update, and delete Trusted | Application Managers (TAMs) to install, update, and delete Trusted | |||
| skipping to change at page 3, line 18 ¶ | skipping to change at page 3, line 30 ¶ | |||
| 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] has set to provide a design | |||
| guidance for such an interoperable protocol and introduces the | guidance for such an interoperable protocol and introduces the | |||
| necessary terminology. Note that the term Trusted Application may | necessary terminology. Note that the term Trusted Application may | |||
| include more than code; it may also include configuration data and | include more than code; it may also include configuration data and | |||
| keys needed by the TA to operate correctly. | keys needed by the TA to operate correctly. | |||
| 2. Requirements Language | 2. Requirements Language | |||
| 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 [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. | ||||
| 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]. | |||
| 3. Message Overview | 3. Message Overview | |||
| The TEEP protocol consists of a couple of messages exchanged between | The TEEP protocol consists of a couple of messages exchanged between | |||
| a TAM and a TEEP Agent via a TEEP Broker. The messages are encoded | a TAM and a TEEP Agent via a TEEP Broker. The messages are encoded | |||
| in CBOR and designed to provide end-to-end security. TEEP protocol | in CBOR and designed to provide end-to-end security. TEEP protocol | |||
| messages are signed by the endpoints, i.e., the TAM and the TEEP | messages are signed by the endpoints, i.e., the TAM and the TEEP | |||
| skipping to change at page 5, line 7 ¶ | skipping to change at page 5, line 19 ¶ | |||
| TrustedAppDelete ----> | TrustedAppDelete ----> | |||
| Success | Success | |||
| <---- or | <---- or | |||
| Error | Error | |||
| 4. Detailed Messages Specification | 4. Detailed Messages Specification | |||
| The CBOR-encoded messages are protected by COSE, as described in CDDL | TEEP messages are protected by the COSE_Sign1 structure. The TEEP | |||
| format [I-D.ietf-cbor-cddl] below. | protocol messages are described in CDDL format [RFC8610] below. | |||
| Outer_Wrapper = { | ||||
| msg-authenc-wrapper => bstr .cbor | ||||
| Msg_AuthEnc_Wrapper / nil, | ||||
| teep-message => (QueryRequest / | teep-message => (QueryRequest / | |||
| QueryResponse / | QueryResponse / | |||
| TrustedAppInstall / | TrustedAppInstall / | |||
| TrustedAppDelete / | TrustedAppDelete / | |||
| Error / | Error / | |||
| Success ), | Success ), | |||
| } | } | |||
| msg-authenc-wrapper = 1 | 4.1. Creating and Validating TEEP Messages | |||
| teep-message = 2 | ||||
| Msg_AuthEnc_Wrapper = [ * (COSE_Mac_Tagged / | 4.1.1. Creating a TEEP message | |||
| COSE_Sign_Tagged / | ||||
| COSE_Mac0_Tagged / | ||||
| COSE_Sign1_Tagged)] | ||||
| 4.1. QueryRequest | To create a TEEP message, the following steps are performed. | |||
| suite = int | 1. Create a TEEP message according to the description below and | |||
| populate it with the respective content. | ||||
| version = int | 2. Create a COSE Header containing the desired set of Header | |||
| Parameters. The COSE Header MUST be valid per the [RFC8152] | ||||
| specification. | ||||
| data_item = int | 3. Create a COSE_Sign1 object using the TEEP message as the | |||
| COSE_Sign1 Payload; all steps specified in [RFC8152] for creating | ||||
| a COSE_Sign1 object MUST be followed. | ||||
| QueryRequest = { | 4. Prepend the COSE object with the TEEP CBOR tag to indicate that | |||
| TYPE : int, | the CBOR-encoded message is indeed a TEEP message. | |||
| TOKEN : bstr, | ||||
| REQUEST : [+data_item], | ||||
| ? CIPHER_SUITE : [+suite], | ||||
| ? NONCE : bstr, | ||||
| ? VERSION : [+version], | ||||
| ? OCSP_DATA : bstr, | ||||
| * $$extensions | ||||
| } | ||||
| A QueryRequest message is signed by the TAM and has the following | 4.1.2. Validating a TEEP Message | |||
| fields: | ||||
| TYPE TYPE = 1 corresponds to a QueryRequest message sent from the | When validating a TEEP message, the following steps are performed. | |||
| TAM to the TEEP Agent. | If any of the listed steps fail, then the TEEP message MUST be | |||
| rejected. | ||||
| TOKEN The value in the TOKEN field is used to match requests to | 1. Verify that the received message is a valid CBOR object. | |||
| responses. | ||||
| REQUEST The REQUEST field indicates what information the TAM | 2. Remove the TEEP message CBOR tag and verify that one of the COSE | |||
| requests from the TEEP Agent in form of a list of integer values. | CBOR tags follows it. | |||
| Each integer value corresponds to an IANA registered information | ||||
| element. This specification defines the initial set of | 3. Verify that the message contains a COSE_Sign1 structure. | |||
| information elements: | ||||
| 4. Verify that the resulting COSE Header includes only parameters | ||||
| and values whose syntax and semantics are both understood and | ||||
| supported or that are specified as being ignored when not | ||||
| understood. | ||||
| 5. Follow the steps specified in Section 4 of [RFC8152] ("Signing | ||||
| Objects") for validating a COSE_Sign1 object. The COSE_Sign1 | ||||
| payload is the content of the TEEP message. | ||||
| 6. Verify that the TEEP message is a valid CBOR map and verify the | ||||
| fields of the TEEP message according to this specification. | ||||
| 4.2. QueryRequest | ||||
| 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 | ||||
| Agent, including ciphersuites, and protocol versions. Additionally, | ||||
| the TAM can selectively request data items from the TEEP Agent via | ||||
| the request parameter. Currently, the following features are | ||||
| supported: | ||||
| o Request for attestation information, | ||||
| o Listing supported extensions, | ||||
| o Querying installed software (trusted apps), and | ||||
| o Listing supporting SUIT commands. | ||||
| Like other TEEP messages, the QueryRequest message is signed, and the | ||||
| relevant CDDL snippet is shown below. The complete CDDL structure is | ||||
| shown in [CDDL]. | ||||
| query-request = [ | ||||
| type: TEEP-TYPE-query-request, | ||||
| token: uint, | ||||
| options: { | ||||
| ? supported-cipher-suites => suite, | ||||
| ? nonce => bstr .size (8..64), | ||||
| ? version => [ + version ], | ||||
| ? oscp-data => bstr, | ||||
| * $$query-request-extensions | ||||
| * $$teep-option-extensions | ||||
| }, | ||||
| data-item-requested | ||||
| ] | ||||
| The message has the following fields: | ||||
| type | ||||
| The value of (1) corresponds to a QueryRequest message sent from | ||||
| the TAM to the TEEP Agent. | ||||
| token | ||||
| The value in the token parameter is used to match responses to | ||||
| requests. This is particualrly useful when a TAM issues multiple | ||||
| concurrent requests to a TEEP Agent. | ||||
| request | ||||
| The request parameter indicates what information the TAM requests | ||||
| from the TEEP Agent in form of a bitmap. Each value in the bitmap | ||||
| corresponds to an IANA registered information element. This | ||||
| specification defines the following initial set of 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 an entity attestation token (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_apps (2) With this value the TAM queries the TEEP Agent | |||
| for all installed TAs. | for all installed TAs. | |||
| extensions (3) 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 (4) 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_SUITE The CIPHER_SUITE field lists the ciphersuite(s) | cipher-suites | |||
| supported by the TAM. Details about the ciphersuite encoding can | The cipher-suites parameter lists the ciphersuite(s) supported by | |||
| be found in Section 5. | the TAM. Details about the ciphersuite encoding can be found in | |||
| Section 6. | ||||
| NONCE NONCE is an optional field used for ensuring the refreshness | nonce | |||
| of the Entity Attestation Token (EAT) contained in the response. | The none field is an optional parameter used for ensuring the | |||
| refreshness of the Entity Attestation Token (EAT) returned with a | ||||
| QueryResponse message. When a nonce is provided in the | ||||
| QueryRequest and an EAT is returned with the QueryResponse message | ||||
| then the nonce contained in this request MUST be copied into the | ||||
| nonce claim found in the EAT token. | ||||
| VERSION The VERSION field lists the version(s) supported by the TAM. | version | |||
| The version field parameter the version(s) supported by the TAM. | ||||
| For this version of the specification this field can be omitted. | For this version of the specification this field can be omitted. | |||
| OCSP_DATA The OCSP_DATA field contains a list of OCSP stapling data | ocsp_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 bo th 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.2. QueryResponse | 4.3. QueryResponse | |||
| ext_info = int | The QueryResponse message is the successful response by the TEEP | |||
| Agent after receiving a QueryRequest message. | ||||
| QueryResponse = { | Like other TEEP messages, the QueryResponse message is signed, and | |||
| TYPE : int, | the relevant CDDL snippet is shown below. The complete CDDL | |||
| TOKEN : bstr, | structure is shown in [CDDL]. | |||
| ? SELECTED_CIPHER_SUITE : suite, | ||||
| ? SELECTED_VERSION : version, | ||||
| ? EAT : bstr, | ||||
| ? TA_LIST : [+bstr], | ||||
| ? EXT_LIST : [+ext_info], | ||||
| * $$extensions | ||||
| } | ||||
| The QueryResponse message is signed and encrypted by the TEEP Agent | query-response = [ | |||
| and returned to the TAM. It has the following fields: | type: TEEP-TYPE-query-response, | |||
| token: uint, | ||||
| options: { | ||||
| ? selected-cipher-suite => suite, | ||||
| ? selected-version => version, | ||||
| ? eat => bstr, | ||||
| ? ta-list => [ + bstr ], | ||||
| ? ext-list => [ + ext-info ], | ||||
| * $$query-response-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| TYPE TYPE = 2 corresponds to a QueryResponse message sent from the | The message has the following fields: | |||
| TEEP Agent to the TAM. | ||||
| TOKEN The value in the TOKEN field is used to match requests to | type | |||
| responses. The value MUST correspond to the value received with | The value of (2) corresponds to a QueryResponse message sent from | |||
| the QueryRequest. | the TEEP Agent to the TAM. | |||
| SELECTED_CIPHER_SUITE The SELECTED_CIPHER_SUITE field indicates the | token | |||
| selected ciphersuite. Details about the ciphersuite encoding can | The value in the token parameter is used to match responses to | |||
| be found in Section 5. | requests. The value MUST correspond to the value received with | |||
| the QueryRequest message. | ||||
| SELECTED_VERSION The SELECTED_VERSION field indicates the protocol | selected-cipher-suite | |||
| version selected by the TEEP Agent. | The selected-cipher-suite parameter indicates the selected | |||
| ciphersuite. Details about the ciphersuite encoding can be found | ||||
| in Section 6. | ||||
| EAT The EAT field contains an Entity Attestation Token following the | selected-version | |||
| encoding defined in [I-D.ietf-rats-eat]. | The selected-version parameter indicates the protocol version | |||
| selected by the TEEP Agent. | ||||
| TA_LIST The TA_LIST field enumerates the trusted applications | eat | |||
| installed on the device in form of TA ID strings. | The eat parameter contains an Entity Attestation Token following | |||
| the encoding defined in [I-D.ietf-rats-eat]. | ||||
| EXT_LIST The EXT_LIST field lists the supported extensions. This | ta-list | |||
| The ta-list parameter enumerates the trusted applications | ||||
| installed on the device in form of TA_ID byte strings. | ||||
| ext-list | ||||
| The ext-list parameter lists the supported extensions. This | ||||
| document does not define any extensions. | document does not define any extensions. | |||
| 4.3. TrustedAppInstall | 4.4. TrustedAppInstall | |||
| TrustedAppInstall = { | ||||
| TYPE : int, | ||||
| TOKEN : bstr, | ||||
| ? MANIFEST_LIST : [+ SUIT_Outer_Wrapper], | ||||
| * $$extensions | ||||
| } | ||||
| The TrustedAppInstall message is MACed and encrypted by the TAM and | The TrustedAppInstall message is used by the TAM to install software | |||
| has the following fields: | (trusted apps) via the TEEP Agent. | |||
| TYPE TYPE = 3 corresponds to a TrustedAppInstall message sent from | Like other TEEP messages, the TrustedAppInstall message is signed, | |||
| the TAM to the TEEP Agent. In case of successful processing, an | and the relevant CDDL snippet is shown below. The complete CDDL | |||
| Success message is returned by the TEEP Agent. In case of an | structure is shown in [CDDL]. | |||
| trusted-app-install = [ | ||||
| type: TEEP-TYPE-trusted-app-install, | ||||
| token: uint, | ||||
| option: { | ||||
| ? manifest-list => [ + SUIT-envelope ], | ||||
| * $$trusted-app-install-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| The TrustedAppInstall message has the following fields: | ||||
| type | ||||
| The value of (3) corresponds to a TrustedAppInstall message sent | ||||
| from the TAM to the TEEP Agent. In case of successful processing, | ||||
| 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 | |||
| TrustedAppInstall message is used for initial TA installation but | TrustedAppInstall message is used for initial TA installation but | |||
| also for TA updates. | also for TA updates. | |||
| TOKEN The value in the TOKEN field is used to match requests to | token | |||
| responses. | The value in the token field is used to match responses to | |||
| requests. | ||||
| TA The MANIFEST_LIST field is used to convey one or multiple SUIT | manifest-list | |||
| 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 the trusted | |||
| app, where to find the code, the devices to which it applies, and | app, 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 is typically signed and encrypted by the SP. | |||
| Other combinations are, however, possible as well. For example, | Other combinations are, however, possible as well. For example, | |||
| it is also possible for the TAM to sign and encrypt the | 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 SP sign and/or encrypt the TA | |||
| binary. | binary. | |||
| 4.4. TrustedAppDelete | 4.5. TrustedAppDelete | |||
| TrustedAppDelete = { | The TrustedAppDelete message is used by the TAM to remove software | |||
| TYPE : int, | (trust apps) from the device. | |||
| TOKEN : bstr, | ||||
| ? TA_LIST : [+bstr], | ||||
| * $$extensions | ||||
| } | ||||
| The TrustedAppDelete message is MACed and encrypted by the TAM and | Like other TEEP messages, the TrustedAppDelete message is signed, and | |||
| has the following fields: | the relevant CDDL snippet is shown below. The complete CDDL | |||
| structure is shown in [CDDL]. | ||||
| TYPE TYPE = 4 corresponds to a TrustedAppDelete message sent from | trusted-app-delete = [ | |||
| the TAM to the TEEP Agent. In case of successful processing, an | type: TEEP-TYPE-trusted-app-delete, | |||
| Success message is returned by the TEEP Agent. In case of an | token: uint, | |||
| option: { | ||||
| ? ta-list => [ + bstr ], | ||||
| * $$trusted-app-delete-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| The TrustedAppDelete message has the following fields: | ||||
| type | ||||
| The value of (4) corresponds to a TrustedAppDelete message sent | ||||
| from the TAM to the TEEP Agent. In case of successful processing, | ||||
| an Success message is returned by the TEEP Agent. In case of an | ||||
| error, an Error message is returned. | error, an Error message is returned. | |||
| TOKEN The value in the TOKEN field is used to match requests to | token | |||
| responses. | The value in the token parameter is used to match responses to | |||
| requests. | ||||
| TA_LIST The TA_LIST field enumerates the TAs to be deleted. | ta-list | |||
| The ta-list parameter enumerates the TAs to be deleted. | ||||
| 4.5. Success | 4.6. Success | |||
| Success = { | The TEEP protocol defines two implicit success messages and this | |||
| TYPE : int, | explicit Success message for the cases where the TEEP Agent cannot | |||
| TOKEN : bstr, | return another reply, such as for the TrustedAppInstall and the | |||
| ? MSG : tstr, | TrustedAppDelete messages. | |||
| * $$extensions | ||||
| } | ||||
| The Success message is MACed and encrypted by the TEEP Agent and has | Like other TEEP messages, the Success message is signed, and the | |||
| the following fields: | relevant CDDL snippet is shown below. The complete CDDL structure is | |||
| shown in [CDDL]. | ||||
| TYPE TYPE = 5 corresponds to a Error message sent from the TEEP | teep-success = [ | |||
| Agent to the TAM. | type: TEEP-TYPE-teep-success, | |||
| token: uint, | ||||
| option: { | ||||
| ? msg => text, | ||||
| * $$teep-success-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| TOKEN The value in the TOKEN field is used to match requests to | The Success message has the following fields: | |||
| responses. | ||||
| MSG The MSG field contains optional diagnostics information encoded | type | |||
| in UTF-8 [RFC3629] returned by the TEEP Agent. | The value of (5) corresponds to corresponds to a Success message | |||
| sent from the TEEP Agent to the TAM. | ||||
| 4.6. Error | token | |||
| The value in the token parameter is used to match responses to | ||||
| requests. | ||||
| Error = { | msg | |||
| TYPE : int, | The msg parameter contains optional diagnostics information | |||
| TOKEN : bstr, | encoded in UTF-8 [RFC3629] returned by the TEEP Agent. | |||
| ERR_CODE : int, | ||||
| ? ERR_MSG : tstr, | ||||
| ? CIPHER_SUITE : [+suite], | ||||
| ? VERSION : [+version], | ||||
| * $$extensions | ||||
| } | ||||
| If possible, the Error message is MACed and encrypted by the TEEP | 4.7. Error | |||
| Agent. Unprotected Error messages MUST be handled with care by the | ||||
| TAM due to possible downgrading attacks. It has the following | ||||
| fields: | ||||
| TYPE TYPE = 6 corresponds to a Error message sent from the TEEP | The Error message is used by the TEEP Agent to return an error. | |||
| Agent to the TAM. | ||||
| TOKEN The value in the TOKEN field is used to match requests to | Like other TEEP messages, the Error message is signed, and the | |||
| responses. | relevant CDDL snippet is shown below. The complete CDDL structure is | |||
| shown in [CDDL]. | ||||
| ERR_CODE The ERR_CODE field is populated with values listed in a | teep-error = [ | |||
| type: TEEP-TYPE-teep-error, | ||||
| token: uint, | ||||
| err-code: uint, | ||||
| options: { | ||||
| ? err-msg => text, | ||||
| ? cipher-suites => [ + suite ], | ||||
| ? versions => [ + version ], | ||||
| * $$teep-error--extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| The Error message has the following fields: | ||||
| type | ||||
| The value of (6) corresponds to an Error message sent from the | ||||
| TEEP Agent to the TAM. | ||||
| token | ||||
| The value in the token parameter is used to match responses to | ||||
| requests. | ||||
| err-code | ||||
| The err-code parameter is populated with values listed in a | ||||
| registry (with the initial set of error codes listed below). Only | registry (with the initial set of error codes listed below). Only | |||
| selected messages are applicable to each message. | selected messages are applicable to each message. | |||
| ERR_MSG The ERR_MSG message is a human-readable diagnostic message | err-msg | |||
| that MUST be encoded using UTF-8 [RFC3629] using Net-Unicode form | The err-msg parameter is a human-readable diagnostic text that | |||
| MUST be encoded using UTF-8 [RFC3629] using Net-Unicode form | ||||
| [RFC5198]. | [RFC5198]. | |||
| VERSION The VERSION field enumerates the protocol version(s) | cipher-suites | |||
| supported by the TEEP Agent. This field is optional but MUST be | The cipher-suites parameter lists the ciphersuite(s) supported by | |||
| the TEEP Agent. This field is optional but MUST be returned with | ||||
| the ERR_UNSUPPORTED_CRYPTO_ALG error message. | ||||
| versions | ||||
| The version parameter enumerates the protocol version(s) supported | ||||
| by the TEEP Agent. This otherwise optional parameter MUST be | ||||
| returned with the ERR_UNSUPPORTED_MSG_VERSION error message. | returned with the ERR_UNSUPPORTED_MSG_VERSION error message. | |||
| CIPHER_SUITE The CIPHER_SUITE field lists the ciphersuite(s) | This specification defines the following initial error messages: | |||
| supported by the TEEP Agent. This field is optional but MUST be | ||||
| returned with the ERR_UNSUPPORTED_CRYPTO_ALG error message. | ||||
| This specification defines the following initial error messages. | ERR_ILLEGAL_PARAMETER (1) | |||
| Additional error code can be registered with IANA. | The TEEP Agent sends this error message when a request contains | |||
| incorrect fields or fields that are inconsistent with other | ||||
| fields. | ||||
| ERR_ILLEGAL_PARAMETER (1) The TEEP Agent sends this error message | ERR_UNSUPPORTED_EXTENSION (2) | |||
| when a request contains incorrect fields or fields that are | The TEEP Agent sends this error message when it recognizes an | |||
| inconsistent with other fields. | unsupported extension or unsupported message. | |||
| ERR_UNSUPPORTED_EXTENSION (2) The TEEP Agent sends this error | ERR_REQUEST_SIGNATURE_FAILED (3) | |||
| message when it recognizes an unsupported extension or unsupported | The TEEP Agent sends this error message when it fails to verify | |||
| message. | the signature of the message. | |||
| ERR_REQUEST_SIGNATURE_FAILED (3) The TEEP Agent sends this error | ERR_UNSUPPORTED_MSG_VERSION (4) | |||
| message when it fails to verify the signature of the message. | The TEEP Agent receives a message but does not support the | |||
| indicated version. | ||||
| ERR_UNSUPPORTED_MSG_VERSION (4) The TEEP Agent receives a message | ERR_UNSUPPORTED_CRYPTO_ALG (5) | |||
| but does not support the indicated version. | The TEEP Agent receives a request message encoded with an | |||
| unsupported cryptographic algorithm. | ||||
| ERR_UNSUPPORTED_CRYPTO_ALG (5) The TEEP Agent receives a request | ERR_BAD_CERTIFICATE (6) | |||
| message encoded with an unsupported cryptographic algorithm. | The TEEP Agent returns this error when processing of a certificate | |||
| failed. For diagnosis purposes it is RECOMMMENDED to include | ||||
| information about the failing certificate in the error message. | ||||
| ERR_BAD_CERTIFICATE (6) The TEEP Agent returns this error when | ERR_UNSUPPORTED_CERTIFICATE (7) | |||
| processing of a certificate failed. For diagnosis purposes it is | The TEEP Agent returns this error when a certificate was of an | |||
| RECOMMMENDED to include information about the failing certificate | unsupported type. | |||
| in the error message. | ||||
| ERR_UNSUPPORTED_CERTIFICATE (7) The TEEP Agent returns this error | ERR_CERTIFICATE_REVOKED (8) | |||
| when a certificate was of an unsupported type. | The TEEP Agent returns this error when a certificate was revoked | |||
| by its signer. | ||||
| ERR_CERTIFICATE_REVOKED (8) The TEEP Agent returns this error when a | ERR_CERTIFICATE_EXPIRED (9) | |||
| certificate was revoked by its signer. | The TEEP Agent returns this error when a certificate has expired | |||
| or is not currently valid. | ||||
| ERR_CERTIFICATE_EXPIRED (9) The TEEP Agent returns this error when a | ERR_INTERNAL_ERROR (10) | |||
| certificate has expired or is not currently valid. | The TEEP Agent returns this error when a miscellaneous internal | |||
| error occurred while processing the request. | ||||
| ERR_INTERNAL_ERROR (10) The TEEP Agent returns this error when a | ERR_RESOURCE_FULL (11) | |||
| miscellaneous internal error occurred while processing the | This error is reported when a device resource isn't available | |||
| request. | anymore, such as storage space is full. | |||
| ERR_RESOURCE_FULL (11) This error is reported when a device resource | ERR_TA_NOT_FOUND (12) | |||
| isn't available anymore, such as storage space is full. | 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_NOT_FOUND (12) This error will occur when the target TA does | ERR_TA_ALREADY_INSTALLED (13) | |||
| not exist. This error may happen when the TAM has stale | While installing a TA, a TEE will return this error if the TA has | |||
| information and tries to delete a TA that has already been | already been installed. | |||
| deleted. | ||||
| ERR_TA_ALREADY_INSTALLED (13) While installing a TA, a TEE will | ERR_TA_UNKNOWN_FORMAT (14) | |||
| return this error if the TA has already been installed. | The TEEP Agent returns this error when it does not recognize the | |||
| format of the TA binary. | ||||
| ERR_TA_UNKNOWN_FORMAT (14) The TEEP Agent returns this error when it | ERR_TA_DECRYPTION_FAILED (15) | |||
| does not recognize the format of the TA binary. | The TEEP Agent returns this error when it fails to decrypt the TA | |||
| binary. | ||||
| ERR_TA_DECRYPTION_FAILED (15) The TEEP Agent returns this error when | ERR_TA_DECOMPRESSION_FAILED (16) | |||
| it fails to decrypt the TA binary. | The TEEP Agent returns this error when it fails to decompress the | |||
| TA binary. | ||||
| ERR_TA_DECOMPRESSION_FAILED (16) The TEEP Agent returns this error | ERR_MANIFEST_PROCESSING_FAILED (17) | |||
| when it fails to decompress the TA binary. | The TEEP Agent returns this error when manifest processing | |||
| failures occur that are less specific than ERR_TA_UNKNOWN_FORMAT, | ||||
| ERR_TA_UNKNOWN_FORMAT, and ERR_TA_DECOMPRESSION_FAILED. | ||||
| ERR_MANIFEST_PROCESSING_FAILED (17) The TEEP Agent returns this | ERR_PD_PROCESSING_FAILED (18) | |||
| error when manifest processing failures occur that are less | The TEEP Agent returns this error when it fails to process the | |||
| specific than ERR_TA_UNKNOWN_FORMAT, ERR_TA_UNKNOWN_FORMAT, and | provided personalization data. | |||
| ERR_TA_DECOMPRESSION_FAILED. | ||||
| ERR_PD_PROCESSING_FAILED (18) The TEEP Agent returns this error when | Additional error code can be registered with IANA. | |||
| it fails to process the provided personalization data. | ||||
| 5. Ciphersuites | 5. Mapping of TEEP Message Parameters to CBOR Labels | |||
| In COSE, arrays and maps use strings, negative integers, and unsigned | ||||
| integers as their keys. Integers are used for compactness of | ||||
| encoding. Since the word "key" is mainly used in its other meaning, | ||||
| as a cryptographic key, this specification uses the term "label" for | ||||
| this usage as a map key. | ||||
| This specification uses the following mapping: | ||||
| +-----------------------+-------+ | ||||
| | Name | Label | | ||||
| +-----------------------+-------+ | ||||
| | cipher-suites | 1 | | ||||
| | nonce | 2 | | ||||
| | version | 3 | | ||||
| | ocsp-data | 4 | | ||||
| | selected-cipher-suite | 5 | | ||||
| | selected-version | 6 | | ||||
| | eat | 7 | | ||||
| | ta-list | 8 | | ||||
| | ext-list | 9 | | ||||
| | manifest-list | 10 | | ||||
| | msg | 11 | | ||||
| | err-msg | 12 | | ||||
| +-----------------------+-------+ | ||||
| 6. Ciphersuites | ||||
| A ciphersuite consists of an AEAD algorithm, a HMAC algorithm, and a | A ciphersuite consists of an AEAD algorithm, a 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. This | |||
| document specifies two ciphersuites. | document specifies two ciphersuites. | |||
| Value | Ciphersuite | +-------+------------------------------------------------+ | |||
| ------+------------------------------------------------ | | Value | Ciphersuite | | |||
| 0 | AES-CCM-16-64-128, HMAC 256/256, X25519, EdDSA | +-------+------------------------------------------------+ | |||
| 1 | AES-CCM-16-64-128, HMAC 256/256, P-256, ES256 | | 1 | AES-CCM-16-64-128, HMAC 256/256, X25519, EdDSA | | |||
| | 2 | AES-CCM-16-64-128, HMAC 256/256, P-256, ES256 | | ||||
| +-------+------------------------------------------------+ | ||||
| 6. Security Consideration | 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 TEEP protocol messages exchanged between | Cryptographic Algorithms | |||
| the TAM and the TEEP Agent are protected using COSE. This | TEEP protocol messages exchanged between the TAM and the TEEP | |||
| specification relies on the cryptographic algorithms provided by | Agent are protected using COSE. This specification relies on the | |||
| COSE. Public key based authentication is used to by the TEEP | cryptographic algorithms provided by COSE. Public key based | |||
| Agent to authenticate the TAM and vice versa. | authentication is used to by the TEEP Agent to authenticate the | |||
| TAM and vice versa. | ||||
| Attestation A TAM may rely on the attestation information provided | Attestation | |||
| by the TEEP Agent and the Entity Attestation Token is re-used to | A TAM may rely on the attestation information provided by the TEEP | |||
| convey this information. To sign the Entity Attestation Token it | Agent and the Entity Attestation Token is re-used to convey this | |||
| is necessary for the device to possess a public key (usually in | information. To sign the Entity Attestation Token it is necessary | |||
| the form of a certificate) along with the corresponding private | for the device to possess a public key (usually in the form of a | |||
| key. Depending on the properties of the attestation mechanism it | certificate) along with the corresponding private key. Depending | |||
| is possible to uniquely identify a device based on information in | on the properties of the attestation mechanism it is possible to | |||
| the attestation information or in the certificate used to sign the | uniquely identify a device based on information in the attestation | |||
| attestation token. This uniqueness may raise privacy concerns. | information or in the certificate used to sign the attestation | |||
| To lower the privacy implications the TEEP Agent MUST present its | token. This uniqueness may raise privacy concerns. To lower the | |||
| attestation information only to an authenticated and authorized | privacy implications the TEEP Agent MUST present its attestation | |||
| TAM. | information only to an authenticated and authorized TAM. | |||
| TA Binaries TA binaries are provided by the SP.It is the | TA Binaries | |||
| responsibility of the TAM to relay only verified TAs from | TA binaries are provided by the SP. It is the responsibility of | |||
| authorized SPs. Delivery of that TA to the TEEP Agent is then the | the TAM to relay only verified TAs from authorized SPs. Delivery | |||
| responsibility of the TAM and the TEEP Broker, using the security | of that TA to the TEEP Agent is then the responsibility of the TAM | |||
| mechanisms provided by the TEEP protocol. To protect the TA | and the TEEP Broker, using the security mechanisms provided by the | |||
| binary the SUIT manifest is re-used and it offers a varity of | TEEP protocol. To protect the TA binary the SUIT manifest is re- | |||
| security features, including digitial signatures and symmetric | used and it offers a varity of security features, including | |||
| encryption. | digitial signatures and symmetric encryption. | |||
| Personalization Data An SP or a TAM can supply personalization data | Personalization Data | |||
| along with a TA. This data is also protected by a SUIT manifest. | An SP or a TAM can supply personalization data along with a TA. | |||
| The personalization data may be opaque to the TAM. | This data is also protected by a SUIT manifest. The | |||
| personalization data may be opaque to the TAM. | ||||
| TEEP Broker The TEEP protocol relies on the TEEP Broker to relay | TEEP Broker | |||
| messages between the TAM and the TEEP Agent. When the TEEP Broker | The TEEP protocol relies on the TEEP Broker to relay messages | |||
| is compromised it can drop messages, delay the delivery of | between the TAM and the TEEP Agent. When the TEEP Broker is | |||
| messages, and replay messages but it cannot modify those messages. | compromised it can drop messages, delay the delivery of messages, | |||
| (A replay would be, however, detected by the TEEP Agent.) A | and replay messages but it cannot modify those messages. (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 the TEEP Agents are protected against such | |||
| downgrading attacks based on features offered by the manifest | downgrading attacks based on features offered by the manifest | |||
| itself. | itself. | |||
| CA Compromise The QueryRequest message from a TAM to the TEEP Agent | CA Compromise | |||
| may include OCSP stapling data for the TAM's signer certificate | The QueryRequest message from a TAM to the TEEP Agent may include | |||
| and for intermediate CA certificates up to the root certificate so | OCSP stapling data for the TAM's signer certificate and for | |||
| that the TEEP Agent can verify the certificate's revocation | intermediate CA certificates up to the root certificate so that | |||
| status. | the TEEP Agent can verify the certificate's revocation status. A | |||
| certificate revocation status check on a TA signer certificate is | ||||
| A certificate revocation status check on a TA signer certificate | OPTIONAL by a TEEP Agent. A TAM is responsible for vetting a TA | |||
| is OPTIONAL by a TEEP Agent. A TAM is responsible for vetting a | and before distributing them to TEEP Agents. TEEP Agents will | |||
| TA and before distributing them to TEEP Agents. TEEP Agents will | ||||
| trust a TA signer certificate's validation status done by a TAM. | trust a TA signer certificate's validation status done by a TAM. | |||
| CA Compromise The CA issuing certificates to a TAM or an SP may get | CA Compromise | |||
| compromised. A compromised intermediate CA certificates can be | The CA issuing certificates to a TAM or an SP may get compromised. | |||
| detected by a TEEP Agent by using OCSP information, assuming the | A compromised intermediate CA certificates can be detected by a | |||
| revocation information is available. Additionally, it is | TEEP Agent by using OCSP information, assuming the revocation | |||
| RECOMMENDED to provide a way to update the trust anchor store used | information is available. Additionally, it is RECOMMENDED to | |||
| by the device, for example using a firmware update mechanism. | provide a way to update the trust anchor store used by the device, | |||
| for example using a firmware update mechanism. If the CA issuing | ||||
| If the CA issuing certificates to devices gets compromised then | certificates to devices gets compromised then these devices might | |||
| these devices might be rejected by a TAM, if revocation is | be rejected by a TAM, if revocation is available to the TAM. | |||
| available to the TAM. | ||||
| Compromised TAM The TEEP Agent SHOULD use OCSP information to verify | Compromised TAM | |||
| the validity of the TAM-provided certificate (as well as the | The TEEP Agent SHOULD use OCSP information to verify the validity | |||
| validity of intermediate CA certificates). The integrity and the | of the TAM-provided certificate (as well as the validity of | |||
| accuracy of the clock within the TEE determines the ability to | intermediate CA certificates). The integrity and the accuracy of | |||
| determine an expired or revoked certificate since OCSP stapling | the clock within the TEE determines the ability to determine an | |||
| includes signature generation time, certificate validity dates are | expired or revoked certificate since OCSP stapling includes | |||
| compared to the current time. | signature generation time, certificate validity dates are compared | |||
| to the current time. | ||||
| 7. IANA Considerations | 8. IANA Considerations | |||
| 7.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 | |||
| Magic number(s): N/A | Magic number(s): N/A | |||
| File extension(s): N/A | File extension(s): N/A | |||
| Macintosh file type code(s): N/A | Macintosh file type code(s): N/A | |||
| Person to contact for further information: teep@ietf.org | Person to contact for further information: teep@ietf.org | |||
| Intended usage: COMMON | Intended usage: COMMON | |||
| Restrictions on usage: none | Restrictions on usage: none | |||
| Author: See the "Authors' Addresses" section of this document | Author: See the "Authors' Addresses" section of this document | |||
| Change controller: IETF | Change controller: IETF | |||
| 7.2. Error Code Registry | 8.2. Error Code Registry | |||
| IANA is also requested to create a new registry for the error codes | IANA is also requested to create a new registry for the error codes | |||
| defined in Section 4. | defined in Section 4. | |||
| Registration requests are evaluated after a three-week review period | Registration requests are evaluated after a three-week review period | |||
| on the teep-reg-review@ietf.org mailing list, on the advice of one or | on the teep-reg-review@ietf.org mailing list, on the advice of one or | |||
| more Designated Experts [RFC8126]. However, to allow for the | more Designated Experts [RFC8126]. However, to allow for the | |||
| allocation of values prior to publication, the Designated Experts may | allocation of values prior to publication, the Designated Experts may | |||
| approve registration once they are satisfied that such a | approve registration once they are satisfied that such a | |||
| specification will be published. | specification will be published. | |||
| skipping to change at page 15, line 17 ¶ | skipping to change at page 19, line 25 ¶ | |||
| Criteria that should be applied by the Designated Experts includes | Criteria that should be applied by the Designated Experts includes | |||
| determining whether the proposed registration duplicates existing | determining whether the proposed registration duplicates existing | |||
| functionality, whether it is likely to be of general applicability or | functionality, whether it is likely to be of general applicability or | |||
| whether it is useful only for a single extension, and whether the | whether it is useful only for a single extension, and whether the | |||
| registration description is clear. | registration description is clear. | |||
| IANA must only accept registry updates from the Designated Experts | IANA must only accept registry updates from the Designated Experts | |||
| and should direct all requests for registration to the review mailing | and should direct all requests for registration to the review mailing | |||
| list. | list. | |||
| 7.3. Ciphersuite Registry | 8.3. Ciphersuite Registry | |||
| IANA is also requested to create a new registry for ciphersuites, as | IANA is also requested to create a new registry for ciphersuites, as | |||
| defined in Section 5. | defined in Section 6. | |||
| 8. References | 8.4. CBOR Tag Registry | |||
| 8.1. Normative References | IANA is requested to register a CBOR tag in the "CBOR Tags" registry | |||
| for use with TEEP messages. | ||||
| The registry contents is: | ||||
| o CBOR Tag: TBD1 | ||||
| o Data Item: TEEP Message | ||||
| o Semantics: TEEP Message, as defined in [[TBD: This RFC]] | ||||
| o Reference: [[TBD: This RFC]] | ||||
| o Point of Contact: TEEP working group (teep@ietf.org) | ||||
| 9. 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-03 (work in progress), February 2020. | |||
| [I-D.ietf-suit-manifest] | [I-D.ietf-suit-manifest] | |||
| Moran, B., Tschofenig, H., and H. Birkholz, "A Concise | Moran, B., Tschofenig, H., Birkholz, H., and K. Zandberg, | |||
| Binary Object Representation (CBOR)-based Serialization | "A Concise Binary Object Representation (CBOR)-based | |||
| Format for the Software Updates for Internet of Things | Serialization Format for the Software Updates for Internet | |||
| (SUIT) Manifest", draft-ietf-suit-manifest-03 (work in | of Things (SUIT) Manifest", draft-ietf-suit-manifest-04 | |||
| progress), February 2020. | (work in progress), March 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, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-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, | DOI 10.17487/RFC2560, June 1999, | |||
| <https://www.rfc-editor.org/info/rfc2560>. | <https://www.rfc-editor.org/info/rfc2560>. | |||
| [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
| 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | |||
| 2003, <https://www.rfc-editor.org/info/rfc3629>. | 2003, <https://www.rfc-editor.org/info/rfc3629>. | |||
| [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | ||||
| Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4648>. | ||||
| [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network | [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network | |||
| Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, | Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, | |||
| <https://www.rfc-editor.org/info/rfc5198>. | <https://www.rfc-editor.org/info/rfc5198>. | |||
| [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object | [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object | |||
| Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, | Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, | |||
| October 2013, <https://www.rfc-editor.org/info/rfc7049>. | October 2013, <https://www.rfc-editor.org/info/rfc7049>. | |||
| [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>. | |||
| 8.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>. | ||||
| [I-D.ietf-cbor-cddl] | 9.2. Informative References | |||
| Birkholz, H., Vigano, C., and C. Bormann, "Concise data | ||||
| definition language (CDDL): a notational convention to | ||||
| express CBOR and JSON data structures", draft-ietf-cbor- | ||||
| cddl-08 (work in progress), March 2019. | ||||
| [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-07 (work in | Architecture", draft-ietf-teep-architecture-08 (work in | |||
| progress), March 2020. | progress), April 2020. | |||
| [I-D.ietf-teep-opentrustprotocol] | ||||
| Pei, M., Atyeo, A., Cook, N., Yoo, M., and H. Tschofenig, | ||||
| "The Open Trust Protocol (OTrP)", draft-ietf-teep- | ||||
| opentrustprotocol-03 (work in progress), May 2019. | ||||
| [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>. | |||
| Appendix A. Acknowledgements | [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | |||
| Definition Language (CDDL): A Notational Convention to | ||||
| Express Concise Binary Object Representation (CBOR) and | ||||
| JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | ||||
| June 2019, <https://www.rfc-editor.org/info/rfc8610>. | ||||
| This work is based on the initial version of OTrP | A. Contributors | |||
| [I-D.ietf-teep-opentrustprotocol] and hence credits go to those who | ||||
| have contributed to it. | We would like to thank Brian Witten (Symantec), Tyler Kim (Solacia), | |||
| Nick Cook (Arm), and Minho Yoo (IoTrust) for their contributions to | ||||
| the Open Trust Protocol (OTrP), which influenced the design of this | ||||
| specification. | ||||
| 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 | |||
| protocol name. | protocol name. | |||
| We would like to thank Akira Tsukamoto, Isobe Kohei, Kohei Isobe, | We would like to thank Kohei Isobe (TRASIO/SECOM), Kuniyasu Suzaki | |||
| Tsukasa Ooi, and Yuichi Takita for their valuable implementation | (TRASIO/AIST), Tsukasa Oi (TRASIO), and Yuichi Takita (SECOM) for | |||
| feedback. | their valuable implementation feedback. | |||
| Appendix B. Contributors | We would also like to thank Carsten Bormann and Henk Birkholz for | |||
| their help with the CDDL. | ||||
| We would like to thank the following individuals for their | C. Complete CDDL | |||
| contributions to an initial version of this specification. | ||||
| - Brian Witten | teep-message = $teep-message-type .within teep-message-framework | |||
| Symantec | ||||
| brian_witten@symantec.com | ||||
| - Tyler Kim | SUIT-envelope = bstr ; placeholder | |||
| Solacia | ||||
| tylerkim@iotrust.kr | ||||
| - Nick Cook | teep-message-framework = [ | |||
| Arm Ltd. | type: 0..23 / $teep-type-extension, | |||
| nicholas.cook@arm.com | token: uint, | |||
| options: { * teep-option }, | ||||
| * int; further integers, e.g. for data-item-requested | ||||
| ] | ||||
| - Minho Yoo | teep-option = (uint => any) | |||
| IoTrust | ||||
| minho.yoo@iotrust.kr | ; messages defined below: | |||
| $teep-message-type /= query-request | ||||
| $teep-message-type /= query-response | ||||
| $teep-message-type /= trusted-app-install | ||||
| $teep-message-type /= trusted-app-delete | ||||
| $teep-message-type /= teep-error | ||||
| $teep-message-type /= teep-success | ||||
| ; message type numbers | ||||
| TEEP-TYPE-query-request = 1 | ||||
| TEEP-TYPE-query-response = 2 | ||||
| TEEP-TYPE-trusted-app-install = 3 | ||||
| TEEP-TYPE-trusted-app-delete = 4 | ||||
| TEEP-TYPE-teep-error = 5 | ||||
| TEEP-TYPE-teep-success = 6 | ||||
| version = uint .size 4 | ||||
| ext-info = uint | ||||
| ; data items as bitmaps | ||||
| data-item-requested = $data-item-requested .within uint .size 8 | ||||
| attestation = 1 | ||||
| $data-item-requested /= attestation | ||||
| trusted-apps = 2 | ||||
| $data-item-requested /= trusted-apps | ||||
| extensions = 4 | ||||
| $data-item-requested /= extensions | ||||
| suit-commands = 8 | ||||
| $data-item-requested /= suit-commands | ||||
| query-request = [ | ||||
| type: TEEP-TYPE-query-request, | ||||
| token: uint, | ||||
| options: { | ||||
| ? supported-cipher-suites => suite, | ||||
| ? nonce => bstr .size (8..64), | ||||
| ? version => [ + version ], | ||||
| ? oscp-data => bstr, | ||||
| * $$query-request-extensions | ||||
| * $$teep-option-extensions | ||||
| }, | ||||
| data-item-requested | ||||
| ] | ||||
| ; ciphersuites as bitmaps | ||||
| 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-P-256-ES256 = 2 | ||||
| $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 | ||||
| query-response = [ | ||||
| type: TEEP-TYPE-query-response, | ||||
| token: uint, | ||||
| options: { | ||||
| ? selected-cipher-suite => suite, | ||||
| ? selected-version => version, | ||||
| ? eat => bstr, | ||||
| ? ta-list => [ + bstr ], | ||||
| ? ext-list => [ + ext-info ], | ||||
| * $$query-response-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| trusted-app-install = [ | ||||
| type: TEEP-TYPE-trusted-app-install, | ||||
| token: uint, | ||||
| option: { | ||||
| ? manifest-list => [ + SUIT-envelope ], | ||||
| * $$trusted-app-install-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| trusted-app-delete = [ | ||||
| type: TEEP-TYPE-trusted-app-delete, | ||||
| token: uint, | ||||
| option: { | ||||
| ? ta-list => [ + bstr ], | ||||
| * $$trusted-app-delete-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| teep-success = [ | ||||
| type: TEEP-TYPE-teep-success, | ||||
| token: uint, | ||||
| option: { | ||||
| ? msg => text, | ||||
| * $$teep-success-extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| ] | ||||
| teep-error = [ | ||||
| type: TEEP-TYPE-teep-error, | ||||
| token: uint, | ||||
| options: { | ||||
| ? err-msg => text, | ||||
| ? cipher-suites => [ + suite ], | ||||
| ? versions => [ + version ], | ||||
| * $$teep-error--extensions, | ||||
| * $$teep-option-extensions | ||||
| } | ||||
| err-code: uint, | ||||
| ] | ||||
| cipher-suites = 1 | ||||
| nonce = 2 | ||||
| versions = 3 | ||||
| oscp-data = 4 | ||||
| selected-cipher-suite = 5 | ||||
| selected-version = 6 | ||||
| eat = 7 | ||||
| ta-list = 8 | ||||
| ext-list = 9 | ||||
| manifest-list = 10 | ||||
| msg = 11 | ||||
| err-msg = 12 | ||||
| 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 | |||
| skipping to change at line 808 ¶ | skipping to change at page 25, line 15 ¶ | |||
| Intel | Intel | |||
| US | US | |||
| Email: david.m.wheeler@intel.com | Email: david.m.wheeler@intel.com | |||
| Dave Thaler | Dave Thaler | |||
| Microsoft | Microsoft | |||
| US | US | |||
| Email: dthaler@microsoft.com | Email: dthaler@microsoft.com | |||
| Akira Tsukamoto | ||||
| AIST | ||||
| JP | ||||
| Email: akira.tsukamoto@aist.go.jp | ||||
| End of changes. 125 change blocks. | ||||
| 342 lines changed or deleted | 659 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/ | ||||