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.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |