draft-ietf-ace-coap-est-16.txt   draft-ietf-ace-coap-est-17.txt 
ACE P. van der Stok ACE P. van der Stok
Internet-Draft Consultant Internet-Draft Consultant
Intended status: Standards Track P. Kampanakis Intended status: Standards Track P. Kampanakis
Expires: April 24, 2020 Cisco Systems Expires: June 7, 2020 Cisco Systems
M. Richardson M. Richardson
SSW SSW
S. Raza S. Raza
RISE SICS RISE SICS
October 22, 2019 December 5, 2019
EST over secure CoAP (EST-coaps) EST over secure CoAP (EST-coaps)
draft-ietf-ace-coap-est-16 draft-ietf-ace-coap-est-17
Abstract Abstract
Enrollment over Secure Transport (EST) is used as a certificate Enrollment over Secure Transport (EST) is used as a certificate
provisioning protocol over HTTPS. Low-resource devices often use the provisioning protocol over HTTPS. Low-resource devices often use the
lightweight Constrained Application Protocol (CoAP) for message lightweight Constrained Application Protocol (CoAP) for message
exchanges. This document defines how to transport EST payloads over exchanges. This document defines how to transport EST payloads over
secure CoAP (EST-coaps), which allows constrained devices to use secure CoAP (EST-coaps), which allows constrained devices to use
existing EST functionality for provisioning certificates. existing EST functionality for provisioning certificates.
skipping to change at page 1, line 40 skipping to change at page 1, line 40
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 April 24, 2020. This Internet-Draft will expire on June 7, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. DTLS and conformance to RFC7925 profiles . . . . . . . . . . 7 4. DTLS and conformance to RFC7925 profiles . . . . . . . . . . 7
5. Protocol Design . . . . . . . . . . . . . . . . . . . . . . . 10 5. Protocol Design . . . . . . . . . . . . . . . . . . . . . . . 10
5.1. Discovery and URIs . . . . . . . . . . . . . . . . . . . 10 5.1. Discovery and URIs . . . . . . . . . . . . . . . . . . . 11
5.2. Mandatory/optional EST Functions . . . . . . . . . . . . 13 5.2. Mandatory/optional EST Functions . . . . . . . . . . . . 13
5.3. Payload formats . . . . . . . . . . . . . . . . . . . . . 13 5.3. Payload formats . . . . . . . . . . . . . . . . . . . . . 14
5.4. Message Bindings . . . . . . . . . . . . . . . . . . . . 15 5.4. Message Bindings . . . . . . . . . . . . . . . . . . . . 15
5.5. CoAP response codes . . . . . . . . . . . . . . . . . . . 15 5.5. CoAP response codes . . . . . . . . . . . . . . . . . . . 16
5.6. Message fragmentation . . . . . . . . . . . . . . . . . . 16 5.6. Message fragmentation . . . . . . . . . . . . . . . . . . 17
5.7. Delayed Responses . . . . . . . . . . . . . . . . . . . . 17 5.7. Delayed Responses . . . . . . . . . . . . . . . . . . . . 18
5.8. Server-side Key Generation . . . . . . . . . . . . . . . 19 5.8. Server-side Key Generation . . . . . . . . . . . . . . . 20
6. HTTPS-CoAPS Registrar . . . . . . . . . . . . . . . . . . . . 21 6. HTTPS-CoAPS Registrar . . . . . . . . . . . . . . . . . . . . 22
7. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 23 7. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 24
8. Deployment limitations . . . . . . . . . . . . . . . . . . . 23 8. Deployment limitations . . . . . . . . . . . . . . . . . . . 24
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25
9.1. Content-Format Registry . . . . . . . . . . . . . . . . . 24 9.1. Content-Format Registry . . . . . . . . . . . . . . . . . 25
9.2. Resource Type registry . . . . . . . . . . . . . . . . . 24 9.2. Resource Type registry . . . . . . . . . . . . . . . . . 25
10. Security Considerations . . . . . . . . . . . . . . . . . . . 25 10. Security Considerations . . . . . . . . . . . . . . . . . . . 26
10.1. EST server considerations . . . . . . . . . . . . . . . 25 10.1. EST server considerations . . . . . . . . . . . . . . . 26
10.2. HTTPS-CoAPS Registrar considerations . . . . . . . . . . 27 10.2. HTTPS-CoAPS Registrar considerations . . . . . . . . . . 28
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 27 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 29
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 29
13.1. Normative References . . . . . . . . . . . . . . . . . . 28 13.1. Normative References . . . . . . . . . . . . . . . . . . 29
13.2. Informative References . . . . . . . . . . . . . . . . . 30 13.2. Informative References . . . . . . . . . . . . . . . . . 31
Appendix A. EST messages to EST-coaps . . . . . . . . . . . . . 32 Appendix A. EST messages to EST-coaps . . . . . . . . . . . . . 33
A.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 34
A.2. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 35 A.2. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 36
A.3. serverkeygen . . . . . . . . . . . . . . . . . . . . . . 36 A.3. serverkeygen . . . . . . . . . . . . . . . . . . . . . . 38
A.4. csrattrs . . . . . . . . . . . . . . . . . . . . . . . . 38 A.4. csrattrs . . . . . . . . . . . . . . . . . . . . . . . . 40
Appendix B. EST-coaps Block message examples . . . . . . . . . . 39 Appendix B. EST-coaps Block message examples . . . . . . . . . . 41
B.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 39 B.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 41
B.2. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 43 B.2. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 45
Appendix C. Message content breakdown . . . . . . . . . . . . . 44 Appendix C. Message content breakdown . . . . . . . . . . . . . 46
C.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 44 C.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 46
C.2. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 45 C.2. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 47
C.3. serverkeygen . . . . . . . . . . . . . . . . . . . . . . 47 C.3. serverkeygen . . . . . . . . . . . . . . . . . . . . . . 49
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51
1. Change Log 1. Change Log
EDNOTE: Remove this section before publication EDNOTE: Remove this section before publication
-17
v16 remnants by Ben K.
Typos.
-16 -16
Updates to address Yaron S.'s Secdir review. Updates to address Yaron S.'s Secdir review.
Updates to address David S.'s Gen-ART review. Updates to address David S.'s Gen-ART review.
-15 -15
Updates to addressed Ben's AD follow up feedback. Updates to addressed Ben's AD follow up feedback.
skipping to change at page 7, line 38 skipping to change at page 7, line 45
Many of the concepts in this document are taken from [RFC7030]. Many of the concepts in this document are taken from [RFC7030].
Consequently, much text is directly traceable to [RFC7030]. Consequently, much text is directly traceable to [RFC7030].
4. DTLS and conformance to RFC7925 profiles 4. DTLS and conformance to RFC7925 profiles
This section describes how EST-coaps conforms to the profiles of low- This section describes how EST-coaps conforms to the profiles of low-
resource devices described in [RFC7925]. EST-coaps can transport resource devices described in [RFC7925]. EST-coaps can transport
certificates and private keys. Certificates are responses to certificates and private keys. Certificates are responses to
(re-)enrollment requests or requests for a trusted certificate list. (re-)enrollment requests or requests for a trusted certificate list.
Private keys can be transported as responses to a server-side key Private keys can be transported as responses to a server-side key
generation request as described in Section 4.4 of [RFC7030] and generation request as described in Section 4.4 of [RFC7030] (and
discussed in Section 5.8 of this document. subsections) and discussed in Section 5.8 of this document.
EST-coaps depends on a secure transport mechanism that secures the EST-coaps depends on a secure transport mechanism that secures the
exchanged CoAP messages. DTLS is one such secure protocol. No other exchanged CoAP messages. DTLS is one such secure protocol. No other
changes are necessary regarding the secure transport of EST messages. changes are necessary regarding the secure transport of EST messages.
+------------------------------------------------+ +------------------------------------------------+
| EST request/response messages | | EST request/response messages |
+------------------------------------------------+ +------------------------------------------------+
| CoAP for message transfer and signaling | | CoAP for message transfer and signaling |
+------------------------------------------------+ +------------------------------------------------+
| Secure Transport | | Secure Transport |
+------------------------------------------------+ +------------------------------------------------+
Figure 1: EST-coaps protocol layers Figure 1: EST-coaps protocol layers
In accordance with sections 3.3 and 4.4 of [RFC7925], the mandatory In accordance with sections 3.3 and 4.4 of [RFC7925], the mandatory
cipher suite for DTLS in EST-coaps is cipher suite for DTLS in EST-coaps is
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 [RFC7251]. Curve secp256r1 MUST TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 [RFC7251]. Curve secp256r1 MUST
be supported [RFC8422]; this curve is equivalent to the NIST P-256 be supported [RFC8422]; this curve is equivalent to the NIST P-256
curve. After the standardization of [RFC7748], support for curve. After the publication of [RFC7748], support for Curve25519
Curve25519 will likely be required in the future by (D)TLS Profiles will likely be required in the future by (D)TLS Profiles for the
for the Internet of Things [RFC7925]. Internet of Things [RFC7925].
DTLS 1.2 implementations must use the Supported Elliptic Curves and DTLS 1.2 implementations must use the Supported Elliptic Curves and
Supported Point Formats Extensions in [RFC8422]. Uncompressed point Supported Point Formats Extensions in [RFC8422]. Uncompressed point
format must also be supported. DTLS 1.3 [I-D.ietf-tls-dtls13] format must also be supported.
implementations differ from DTLS 1.2 because they do not support
point format negotiation in favor of a single point format for each DTLS 1.3 [I-D.ietf-tls-dtls13] implementations differ from DTLS 1.2
curve. Thus, support for DTLS 1.3 does not mandate point format because they do not support point format negotiation in favor of a
extensions and negotiation. In addition, in DTLS 1.3 the Supported single point format for each curve. Thus, support for DTLS 1.3 does
Elliptic Curves extension has been renamed to Supported Groups. not mandate point format extensions and negotiation. In addition, in
DTLS 1.3 the Supported Elliptic Curves extension has been renamed to
Supported Groups.
CoAP was designed to avoid IP fragmentation. DTLS is used to secure CoAP was designed to avoid IP fragmentation. DTLS is used to secure
CoAP messages. However, fragmentation is still possible at the DTLS CoAP messages. However, fragmentation is still possible at the DTLS
layer during the DTLS handshake when using ECC ciphersuites. If layer during the DTLS handshake when using ECC ciphersuites. If
fragmentation is necessary, "DTLS provides a mechanism for fragmentation is necessary, "DTLS provides a mechanism for
fragmenting a handshake message over several records, each of which fragmenting a handshake message over several records, each of which
can be transmitted separately, thus avoiding IP fragmentation" can be transmitted separately, thus avoiding IP fragmentation"
[RFC6347]. [RFC6347].
The authentication of the EST-coaps server by the EST-coaps client is The authentication of the EST-coaps server by the EST-coaps client is
skipping to change at page 9, line 19 skipping to change at page 9, line 22
server MAY want to authenticate a client certificate against its server MAY want to authenticate a client certificate against its
trust store although the certificate is expired (Section 10). trust store although the certificate is expired (Section 10).
EST-coaps supports the certificate types and Trust Anchors (TA) that EST-coaps supports the certificate types and Trust Anchors (TA) that
are specified for EST in Section 3 of [RFC7030]. are specified for EST in Section 3 of [RFC7030].
As described in Section 2.1 of [RFC5272] proof-of-identity refers to As described in Section 2.1 of [RFC5272] proof-of-identity refers to
a value that can be used to prove that the private key corresponding a value that can be used to prove that the private key corresponding
to the certified public key is in the possession of and can be used to the certified public key is in the possession of and can be used
by an end-entity or client. Additionally, channel-binding by an end-entity or client. Additionally, channel-binding
information can link proof-of-identity with an established connetion. information can link proof-of-identity with an established
Connection-based proof-of-possession is OPTIONAL for EST-coaps connection. Connection-based proof-of-possession is OPTIONAL for
clients and servers. When proof-of-possession is desired, a set of EST-coaps clients and servers. When proof-of-possession is desired,
actions are required regarding the use of tls-unique, described in a set of actions are required regarding the use of tls-unique,
Section 3.5 in [RFC7030]. The tls-unique information consists of the described in Section 3.5 in [RFC7030]. The tls-unique information
contents of the first "Finished" message in the (D)TLS handshake consists of the contents of the first "Finished" message in the
between server and client [RFC5929]. The client adds the "Finished" (D)TLS handshake between server and client [RFC5929]. The client
message as a ChallengePassword in the attributes section of the adds the "Finished" message as a ChallengePassword in the attributes
PKCS#10 Request [RFC5967] to prove that the client is indeed in section of the PKCS#10 Request [RFC5967] to prove that the client is
control of the private key at the time of the (D)TLS session indeed in control of the private key at the time of the (D)TLS
establishment. session establishment.
In the case of handshake message fragmentation, if proof-of- In the case of handshake message fragmentation, if proof-of-
possession is desired, the Finished message added as the possession is desired, the Finished message added as the
ChallengePassword in the CSR is calculated as specified by the DTLS ChallengePassword in the CSR is calculated as specified by the DTLS
standards. We summarize it here for convenience. For DTLS 1.2, in standards. We summarize it here for convenience. For DTLS 1.2, in
the event of handshake message fragmentation, the Hash of the the event of handshake message fragmentation, the Hash of the
handshake messages used in the MAC calculation of the Finished handshake messages used in the MAC calculation of the Finished
message must be computed as if each handshake message had been sent message must be computed as if each handshake message had been sent
as a single fragment (Section 4.2.6 of [RFC6347]). The Finished as a single fragment (Section 4.2.6 of [RFC6347]). The Finished
message is calculated as shown in Section 7.4.9 of [RFC5246]. message is calculated as shown in Section 7.4.9 of [RFC5246].
skipping to change at page 9, line 50 skipping to change at page 10, line 6
Similarly, for DTLS 1.3, the Finished message must be computed as if Similarly, for DTLS 1.3, the Finished message must be computed as if
each handshake message had been sent as a single fragment each handshake message had been sent as a single fragment
(Section 5.8 of [I-D.ietf-tls-dtls13]) following the algorithm (Section 5.8 of [I-D.ietf-tls-dtls13]) following the algorithm
described in 4.4.4 of [RFC8446]. described in 4.4.4 of [RFC8446].
In a constrained CoAP environment, endpoints can't always afford to In a constrained CoAP environment, endpoints can't always afford to
establish a DTLS connection for every EST transaction. establish a DTLS connection for every EST transaction.
Authenticating and negotiating DTLS keys requires resources on low- Authenticating and negotiating DTLS keys requires resources on low-
end endpoints and consumes valuable bandwidth. To alleviate this end endpoints and consumes valuable bandwidth. To alleviate this
situation, an EST-coaps DTLS connection MAY remain open for situation, an EST-coaps DTLS connection MAY remain open for
sequential EST transactions. For example, an EST csrattrs request sequential EST transactions which was not the case with [RFC7030].
that is followed by a simpleenroll request can use the same For example, an EST csrattrs request that is followed by a
authenticated DTLS connection. However, when a cacerts request is simpleenroll request can use the same authenticated DTLS connection.
included in the set of sequential EST transactions, some additional However, when a cacerts request is included in the set of sequential
security considerations apply regarding the use of the Implicit and EST transactions, some additional security considerations apply
Explicit TA database as explained in Section 10.1. regarding the use of the Implicit and Explicit TA database as
explained in Section 10.1.
Given that after a successful enrollment, it is more likely that a Given that after a successful enrollment, it is more likely that a
new EST transaction will take place after a significant amount of new EST transaction will take place after a significant amount of
time, the DTLS connections SHOULD only be kept alive for EST messages time, the DTLS connections SHOULD only be kept alive for EST messages
that are relatively close to each other. In some cases, like NAT that are relatively close to each other. In some cases, like NAT
rebinding, keeping the state of a connection is not possible when rebinding, keeping the state of a connection is not possible when
devices sleep for extended periods of time. In such occasions, devices sleep for extended periods of time. In such occasions,
[I-D.ietf-tls-dtls-connection-id] negotiates a connection ID that can [I-D.ietf-tls-dtls-connection-id] negotiates a connection ID that can
eliminate the need for new handshake and its additional cost; or DTLS eliminate the need for new handshake and its additional cost; or DTLS
session resumption provides a less costly alternative than re-doing a session resumption provides a less costly alternative than re-doing a
skipping to change at page 11, line 14 skipping to change at page 11, line 22
For both types of installations, saving header space is important and For both types of installations, saving header space is important and
short EST-coaps URIs are specified in this document. These URIs are short EST-coaps URIs are specified in this document. These URIs are
shorter than the ones in [RFC7030]. Two example EST-coaps resource shorter than the ones in [RFC7030]. Two example EST-coaps resource
path names are: path names are:
coaps://example.com:<port>/.well-known/est/<short-est> coaps://example.com:<port>/.well-known/est/<short-est>
coaps://example.com:<port>/.well-known/est/ coaps://example.com:<port>/.well-known/est/
ArbitraryLabel/<short-est> ArbitraryLabel/<short-est>
The short-est strings are defined in Table 1. Arbitrary Labels are The short-est strings are defined in Table 1.
usually defined and used by EST CAs in order to route client requests
to the appropriate certificate profile. Implementers should consider Arbitrary Labels are usually defined and used by EST CAs in order to
using short labels to minimize transmission overhead. route client requests to the appropriate certificate profile.
Implementers should consider using short labels to minimize
transmission overhead.
The EST-coaps server URIs, obtained through discovery of the EST- The EST-coaps server URIs, obtained through discovery of the EST-
coaps resource(s) as shown below, are of the form: coaps resource(s) as shown below, are of the form:
coaps://example.com:<port>/<root-resource>/<short-est> coaps://example.com:<port>/<root-resource>/<short-est>
coaps://example.com:<port>/<root-resource>/ coaps://example.com:<port>/<root-resource>/
ArbitraryLabel/<short-est> ArbitraryLabel/<short-est>
Figure 5 in Section 3.2.2 of [RFC7030] enumerates the operations and Figure 5 in Section 3.2.2 of [RFC7030] enumerates the operations and
corresponding paths which are supported by EST. Table 1 provides the corresponding paths which are supported by EST. Table 1 provides the
mapping from the EST URI path to the shorter EST-coaps URI path. mapping from the EST URI path to the shorter EST-coaps URI path.
+------------------+------------------------------+ +-------------------+-------------------------------+
| EST | EST-coaps | | EST | EST-coaps |
+------------------+------------------------------+ +-------------------+-------------------------------+
| /cacerts | /crts | | /cacerts | /crts |
| /simpleenroll | /sen | | /simpleenroll | /sen |
| /simplereenroll | /sren | | /simplereenroll | /sren |
| /serverkeygen | /skg (PKCS#7) | | /serverkeygen | /skg (PKCS#7) |
| /serverkeygen | /skc (application/pkix-cert) | | /serverkeygen | /skc (application/pkix-cert) |
| /csrattrs | /att | | /csrattrs | /att |
+------------------+------------------------------+ +-------------------+-------------------------------+
Table 1: Short EST-coaps URI path Table 1: Short EST-coaps URI path
The /skg message is the EST /serverkeygen equivalent where the client The /skg message is the EST /serverkeygen equivalent where the client
requests a certificate in PKCS#7 format and a private key. If the requests a certificate in PKCS#7 format and a private key. If the
client prefers a single application/pkix-cert certificate instead of client prefers a single application/pkix-cert certificate instead of
PKCS#7, it will make an /skc request. In both cases (i.e., /skg, PKCS#7, it will make an /skc request. In both cases (i.e., /skg,
/skc) a private key MUST be returned /skc) a private key MUST be returned.
Clients and servers MUST support the short resource EST-coaps URIs. Clients and servers MUST support the short resource EST-coaps URIs.
In the context of CoAP, the presence and location of (path to) the In the context of CoAP, the presence and location of (path to) the
EST resources are discovered by sending a GET request to "/.well- EST resources are discovered by sending a GET request to "/.well-
known/core" including a resource type (RT) parameter with the value known/core" including a resource type (RT) parameter with the value
"ace.est*" [RFC6690]. The example below shows the discovery over "ace.est*" [RFC6690].
CoAPS of the presence and location of EST-coaps resources. Linefeeds
are included only for readability. The example below shows the discovery over CoAPS of the presence and
location of EST-coaps resources. Linefeeds are included only for
readability.
REQ: GET /.well-known/core?rt=ace.est* REQ: GET /.well-known/core?rt=ace.est*
RES: 2.05 Content RES: 2.05 Content
</est/crts>;rt="ace.est.crts";ct="281 TBD287", </est/crts>;rt="ace.est.crts";ct="281 TBD287",
</est/sen>;rt="ace.est.sen";ct="281 TBD287", </est/sen>;rt="ace.est.sen";ct="281 TBD287",
</est/sren>;rt="ace.est.sren";ct="281 TBD287", </est/sren>;rt="ace.est.sren";ct="281 TBD287",
</est/att>;rt="ace.est.att";ct=285, </est/att>;rt="ace.est.att";ct=285,
</est/skg>;rt="ace.est.skg";ct=62, </est/skg>;rt="ace.est.skg";ct=62,
</est/skc>;rt="ace.est.skc";ct=62 </est/skc>;rt="ace.est.skc";ct=62
skipping to change at page 12, line 47 skipping to change at page 13, line 21
ct="281 TBD287", ct="281 TBD287",
<coaps://[2001:db8:3::123]:61617/est/sren>;rt="ace.est.sren"; <coaps://[2001:db8:3::123]:61617/est/sren>;rt="ace.est.sren";
ct="281 TBD287", ct="281 TBD287",
<coaps://[2001:db8:3::123]:61617/est/att>;rt="ace.est.att"; <coaps://[2001:db8:3::123]:61617/est/att>;rt="ace.est.att";
ct=285, ct=285,
<coaps://[2001:db8:3::123]:61617/est/skg>;rt="ace.est.skg"; <coaps://[2001:db8:3::123]:61617/est/skg>;rt="ace.est.skg";
ct=62, ct=62,
<coaps://[2001:db8:3::123]:61617/est/skc>;rt="ace.est.skc"; <coaps://[2001:db8:3::123]:61617/est/skc>;rt="ace.est.skc";
ct=62 ct=62
The server MUST support the default /.well-known/est root resource. The server MUST support the default /.well-known/est root resource
The server SHOULD support resource discovery when it supports non-
. The server SHOULD support resource discovery when it supports non-
default URIs (like /est or /est/ArbitraryLabel) or ports. The client default URIs (like /est or /est/ArbitraryLabel) or ports. The client
SHOULD use resource discovery when it is unaware of the available SHOULD use resource discovery when it is unaware of the available
EST-coaps resources. EST-coaps resources.
Throughout this document the example root resource of /est is used. Throughout this document the example root resource of /est is used.
5.2. Mandatory/optional EST Functions 5.2. Mandatory/optional EST Functions
This specification contains a set of required-to-implement functions, This specification contains a set of required-to-implement functions,
optional functions, and not specified functions. The latter ones are optional functions, and not specified functions. The latter ones are
deemed too expensive for low-resource devices in payload and deemed too expensive for low-resource devices in payload and
calculation times. calculation times.
Table 2 specifies the mandatory-to-implement or optional Table 2 specifies the mandatory-to-implement or optional
implementation of the EST-coaps functions. Discovery of the implementation of the EST-coaps functions. Discovery of the
existence of optional functions is described in Section 5.1. existence of optional functions is described in Section 5.1.
+------------------+--------------------------+ +-------------------+--------------------------+
| EST Functions | EST-coaps implementation | | EST Functions | EST-coaps implementation |
+------------------+--------------------------+ +-------------------+--------------------------+
| /cacerts | MUST | | /cacerts | MUST |
| /simpleenroll | MUST | | /simpleenroll | MUST |
| /simplereenroll | MUST | | /simplereenroll | MUST |
| /fullcmc | Not specified | | /fullcmc | Not specified |
| /serverkeygen | OPTIONAL | | /serverkeygen | OPTIONAL |
| /csrattrs | OPTIONAL | | /csrattrs | OPTIONAL |
+------------------+--------------------------+ +-------------------+--------------------------+
Table 2: List of EST-coaps functions Table 2: List of EST-coaps functions
5.3. Payload formats 5.3. Payload formats
EST-coaps is designed for low-resource devices and hence does not EST-coaps is designed for low-resource devices and hence does not
need to send Base64-encoded data. Simple binary is more efficient need to send Base64-encoded data. Simple binary is more efficient
(30% smaller payload for DER-encoded ASN.1) and well supported by (30% smaller payload for DER-encoded ASN.1) and well supported by
CoAP. Thus, the payload for a given Media-Type follows the ASN.1 CoAP. Thus, the payload for a given Media-Type follows the ASN.1
structure of the Media-Type and is transported in binary format. structure of the Media-Type and is transported in binary format.
skipping to change at page 14, line 16 skipping to change at page 14, line 40
the preferred response Content-Format. If an Accept Option is not the preferred response Content-Format. If an Accept Option is not
included in the request, the client is not expressing any preference included in the request, the client is not expressing any preference
and the server SHOULD choose format 281. and the server SHOULD choose format 281.
Content-Format 286 is used in /sen, /sren and /skg requests and 285 Content-Format 286 is used in /sen, /sren and /skg requests and 285
in /att responses. in /att responses.
A representation with Content-Format identifier 62 contains a A representation with Content-Format identifier 62 contains a
collection of representations along with their respective Content- collection of representations along with their respective Content-
Format. The Content-Format identifies the Media-Type application/ Format. The Content-Format identifies the Media-Type application/
multipart-core specified in [I-D.ietf-core-multipart-ct]. For multipart-core specified in [I-D.ietf-core-multipart-ct].
example, a collection, containing two representations in response to
a EST-coaps server-side key generation /skg request, could include a For example, a collection, containing two representations in response
private key in PKCS#8 [RFC5958] with Content-Format identifier 284 to a EST-coaps server-side key generation /skg request, could include
a private key in PKCS#8 [RFC5958] with Content-Format identifier 284
(0x011C) and a single certificate in a PKCS#7 container with Content- (0x011C) and a single certificate in a PKCS#7 container with Content-
Format identifier 281 (0x0119). Such a collection would look like Format identifier 281 (0x0119). Such a collection would look like
[284,h'0123456789abcdef', 281,h'fedcba9876543210'] in diagnostic CBOR [284,h'0123456789abcdef', 281,h'fedcba9876543210'] in diagnostic CBOR
notation. The serialization of such CBOR content would be notation. The serialization of such CBOR content would be
84 # array(4) 84 # array(4)
19 011C # unsigned(284) 19 011C # unsigned(284)
48 # bytes(8) 48 # bytes(8)
0123456789ABCDEF # "\x01#Eg\x89\xAB\xCD\xEF" 0123456789ABCDEF # "\x01#Eg\x89\xAB\xCD\xEF"
19 0119 # unsigned(281) 19 0119 # unsigned(281)
48 # bytes(8) 48 # bytes(8)
FEDCBA9876543210 # "\xFE\xDC\xBA\x98vT2\x10" FEDCBA9876543210 # "\xFE\xDC\xBA\x98vT2\x10"
Multipart /skg response serialization Multipart /skg response serialization
skipping to change at page 14, line 46 skipping to change at page 15, line 25
the private key is a single X.509 certificate (not a PKCS#7 the private key is a single X.509 certificate (not a PKCS#7
container) with Content-Format identifier TBD287 (0x011F) instead of container) with Content-Format identifier TBD287 (0x011F) instead of
281. In cases where the private key is encrypted with CMS (as 281. In cases where the private key is encrypted with CMS (as
explained in Section 5.8) the Content-Format identifier is 280 explained in Section 5.8) the Content-Format identifier is 280
(0x0118) instead of 284. The content format used in the response is (0x0118) instead of 284. The content format used in the response is
summarized in Table 3. summarized in Table 3.
+----------+-----------------+-----------------+ +----------+-----------------+-----------------+
| Function | Response part 1 | Response part 2 | | Function | Response part 1 | Response part 2 |
+----------+-----------------+-----------------+ +----------+-----------------+-----------------+
| /skg | 284 | 281 | | /skg | 284 | 281 |
| /skc | 280 | TBD287 | | /skc | 280 | TBD287 |
+----------+-----------------+-----------------+ +----------+-----------------+-----------------+
Table 3: response content formats for skg and skc Table 3: response content formats for skg and skc
The key and certificate representations are DER-encoded ASN.1, in its The key and certificate representations are DER-encoded ASN.1, in its
native binary form. An example is shown in Appendix A.3. native binary form. An example is shown in Appendix A.3.
5.4. Message Bindings 5.4. Message Bindings
The general EST-coaps message characteristics are: The general EST-coaps message characteristics are:
skipping to change at page 15, line 26 skipping to change at page 16, line 5
confirmable CON CoAP messages. confirmable CON CoAP messages.
o The CoAP Options used are Uri-Host, Uri-Path, Uri-Port, Content- o The CoAP Options used are Uri-Host, Uri-Path, Uri-Port, Content-
Format, Block1, Block2, and Accept. These CoAP Options are used Format, Block1, Block2, and Accept. These CoAP Options are used
to communicate the HTTP fields specified in the EST REST messages. to communicate the HTTP fields specified in the EST REST messages.
The Uri-host and Uri-Port Options can be omitted from the COAP The Uri-host and Uri-Port Options can be omitted from the COAP
message sent on the wire. When omitted, they are logically message sent on the wire. When omitted, they are logically
assumed to be the transport protocol destination address and port assumed to be the transport protocol destination address and port
respectively. Explicit Uri-Host and Uri-Port Options are respectively. Explicit Uri-Host and Uri-Port Options are
typically used when an endpoint hosts multiple virtual servers and typically used when an endpoint hosts multiple virtual servers and
uses the Options to route the requests accordingly. Other COAP uses the Options to route the requests accordingly.
Options should be handled in accordance with [RFC7252].
o Other COAP Options should be handled in accordance with [RFC7252].
o EST URLs are HTTPS based (https://), in CoAP these are assumed to o EST URLs are HTTPS based (https://), in CoAP these are assumed to
be translated to CoAPS (coaps://) be translated to CoAPS (coaps://)
Table 1 provides the mapping from the EST URI path to the EST-coaps Table 1 provides the mapping from the EST URI path to the EST-coaps
URI path. Appendix A includes some practical examples of EST URI path. Appendix A includes some practical examples of EST
messages translated to CoAP. messages translated to CoAP.
5.5. CoAP response codes 5.5. CoAP response codes
Section 5.9 of [RFC7252] and Section 7 of [RFC8075] specify the Section 5.9 of [RFC7252] and Section 7 of [RFC8075] specify the
mapping of HTTP response codes to CoAP response codes. The success mapping of HTTP response codes to CoAP response codes. The success
code in response to an EST-coaps GET request (/crts, /att), is 2.05. code in response to an EST-coaps GET request (/crts, /att), is 2.05.
Similarly, 2.04 is used in successfull response to EST-coaps POST Similarly, 2.04
requests (/sen, /sren, /skg, /skc).
is used in successfull response to EST-coaps POST requests (/sen,
/sren, /skg, /skc).
EST makes use of HTTP 204 or 404 responses when a resource is not EST makes use of HTTP 204 or 404 responses when a resource is not
available for the client. In EST-coaps 2.04 is used in response to a available for the client. In EST-coaps 2.04 is used in response to a
POST (/sen, /sren, /skg, /skc). 4.04 is used when the resource is not POST (/sen, /sren, /skg, /skc). 4.04 is used when the resource is not
available for the client. available for the client.
HTTP response code 202 with a Retry-After header in [RFC7030] has no HTTP response code 202 with a Retry-After header in [RFC7030] has no
equivalent in CoAP. HTTP 202 with Retry-After is used in EST for equivalent in CoAP. HTTP 202 with Retry-After is used in EST for
delayed server responses. Section 5.7 specifies how EST-coaps delayed server responses. Section 5.7 specifies how EST-coaps
handles delayed messages with 5.03 responses with a Max-Age Option. handles delayed messages with 5.03 responses with a Max-Age Option.
Additionally, EST's HTTP 400, 401, 403, 404 and 503 status codes have Additionally, EST's HTTP 400, 401, 403, 404 and 503 status codes have
their equivalent CoAP 4.00, 4.01, 4.03, 4.04 and 5.03 response codes their equivalent CoAP 4.00, 4.01, 4.03, 4.04 and 5.03 response codes
in EST-coaps. Table 4 summarizes the EST-coaps response codes. in EST-coaps.
Table 4 summarizes the EST-coaps response codes.
+-----------------+-----------------+-------------------------------+ +-----------------+-----------------+-------------------------------+
| operation | EST-coaps | Description | | operation | EST-coaps | Description |
| | response code | | | | response code | |
+-----------------+-----------------+-------------------------------+ +-----------------+-----------------+-------------------------------+
| /crts, /att | 2.05 | Success. Certs included in | | /crts, /att | 2.05 | Success. Certs included in |
| | | the response payload. | | | | the response payload. |
| | 4.xx / 5.xx | Failure. | | | 4.xx / 5.xx | Failure. |
| /sen, /skg, | 2.04 | Success. Cert included in the | | /sen, /skg, | 2.04 | Success. Cert included in the |
| /sren, /skc | | response payload. | | /sren, /skc | | response payload. |
skipping to change at page 16, line 50 skipping to change at page 17, line 46
which could fluctuate further based on the algorithms, OIDs, Subject which could fluctuate further based on the algorithms, OIDs, Subject
Alternative Names (SAN) and cert fields. For 384-bit curves, ECDSA Alternative Names (SAN) and cert fields. For 384-bit curves, ECDSA
certificates increase in size and can sometimes reach 1.5KB. certificates increase in size and can sometimes reach 1.5KB.
Additionally, there are times when the EST cacerts response from the Additionally, there are times when the EST cacerts response from the
server can include multiple certificates that amount to large server can include multiple certificates that amount to large
payloads. Section 4.6 of CoAP [RFC7252] describes the possible payloads. Section 4.6 of CoAP [RFC7252] describes the possible
payload sizes: "if nothing is known about the size of the headers, payload sizes: "if nothing is known about the size of the headers,
good upper bounds are 1152 bytes for the message size and 1024 bytes good upper bounds are 1152 bytes for the message size and 1024 bytes
for the payload size". Section 4.6 of [RFC7252] also suggests that for the payload size". Section 4.6 of [RFC7252] also suggests that
IPv4 implementations may want to limit themselves to more IPv4 implementations may want to limit themselves to more
conservative IPv4 datagram sizes such as 576 bytes. Even with ECC, conservative IPv4 datagram sizes such as 576 bytes.
EST-coaps messages can still exceed MTU sizes on the Internet or
6LoWPAN [RFC4919] (Section 2 of [RFC7959]). EST-coaps needs to be Even with ECC, EST-coaps messages can still exceed MTU sizes on the
able to fragment messages into multiple DTLS datagrams. Internet or 6LoWPAN [RFC4919] (Section 2 of [RFC7959]). EST-coaps
needs to be able to fragment messages into multiple DTLS datagrams.
To perform fragmentation in CoAP, [RFC7959] specifies the Block1 To perform fragmentation in CoAP, [RFC7959] specifies the Block1
Option for fragmentation of the request payload and the Block2 Option Option for fragmentation of the request payload and the Block2 Option
for fragmentation of the return payload of a CoAP flow. As explained for fragmentation of the return payload of a CoAP flow. As explained
in Section 1 of [RFC7959], block-wise transfers should be used in in Section 1 of [RFC7959], block-wise transfers should be used in
Confirmable CoAP messages to avoid the exacerbation of lost blocks. Confirmable CoAP messages to avoid the exacerbation of lost blocks.
Both EST-coaps clients and servers MUST support Block2. EST-coaps Both EST-coaps clients and servers MUST support Block2. EST-coaps
servers MUST also support Block1. The EST-coaps client MUST support servers MUST also support Block1. The EST-coaps client MUST support
Block1 only if it sends EST-coaps requests with an IP packet size Block1 only if it sends EST-coaps requests with an IP packet size
that exceeds the Path MTU. that exceeds the Path MTU.
skipping to change at page 20, line 31 skipping to change at page 21, line 31
280 for the private key. Then the private key is encrypted 280 for the private key. Then the private key is encrypted
symmetrically or asymmetrically as per [RFC7030]. The symmetric key symmetrically or asymmetrically as per [RFC7030]. The symmetric key
or the asymmetric keypair establishment method is out of scope of the or the asymmetric keypair establishment method is out of scope of the
specification. A /skg or /skc request with a CSR without specification. A /skg or /skc request with a CSR without
SMIMECapabilities expects an application/multipart-core with an SMIMECapabilities expects an application/multipart-core with an
unencrypted PKCS#8 private key with Content-Format 284. unencrypted PKCS#8 private key with Content-Format 284.
The EST-coaps server-side key generation response is returned with The EST-coaps server-side key generation response is returned with
Content-Format application/multipart-core Content-Format application/multipart-core
[I-D.ietf-core-multipart-ct] containing a CBOR array with four items [I-D.ietf-core-multipart-ct] containing a CBOR array with four items
(Section 5.3) . The two representations (each consisting of two CBOR
array items) do not have to be in a particular order since each (Section 5.3)
representation is preceded by its Content-Format ID. Dependent on
the request, the private key can be in unprotected PKCS#8 [RFC5958] . The two representations (each consisting of two CBOR array items)
format (Content-Format 284) or protected inside of CMS SignedData do not have to be in a particular order since each representation is
(Content-Format 280). The SignedData, placed in the outermost preceded by its Content-Format ID. Dependent on the request, the
container, is signed by the party that generated the private key, private key can be in unprotected PKCS#8 [RFC5958] format (Content-
which may be the EST server or the EST CA. SignedData placed within Format 284) or protected inside of CMS SignedData (Content-Format
the Enveloped Data does not need additional signing as explained in 280). The SignedData, placed in the outermost container, is signed
Section 4.4.2 of [RFC7030]. In summary, the symmetrically encrypted by the party that generated the private key, which may be the EST
key is included in the encryptedKey attribute in a KEKRecipientInfo server or the EST CA. SignedData placed within the Enveloped Data
structure. In the case where the asymmetric encryption key is does not need additional signing as explained in Section 4.4.2 of
suitable for transport key operations the generated private key is [RFC7030]. In summary, the symmetrically encrypted key is included
encrypted with a symmetric key which is encrypted by the client- in the encryptedKey attribute in a KEKRecipientInfo structure. In
defined (in the CSR) asymmetric public key and is carried in an the case where the asymmetric encryption key is suitable for
encryptedKey attribute in a KeyTransRecipientInfo structure. transport key operations the generated private key is encrypted with
Finally, if the asymmetric encryption key is suitable for key a symmetric key which is encrypted by the client-defined (in the CSR)
agreement, the generated private key is encrypted with a symmetric asymmetric public key and is carried in an encryptedKey attribute in
key which is encrypted by the client defined (in the CSR) asymmetric a KeyTransRecipientInfo structure. Finally, if the asymmetric
public key and is carried in an recipientEncryptedKeys attribute in a encryption key is suitable for key agreement, the generated private
KeyAgreeRecipientInfo. key is encrypted with a symmetric key which is encrypted by the
client defined (in the CSR) asymmetric public key and is carried in
an recipientEncryptedKeys attribute in a KeyAgreeRecipientInfo.
[RFC7030] recommends the use of additional encryption of the returned [RFC7030] recommends the use of additional encryption of the returned
private key. For the context of this specification, clients and private key. For the context of this specification, clients and
servers that choose to support server-side key generation MUST servers that choose to support server-side key generation MUST
support unprotected (PKCS#8) private keys (Content-Format 284). support unprotected (PKCS#8) private keys (Content-Format 284).
Symmetric or asymmetric encryption of the private key (CMS Symmetric or asymmetric encryption of the private key (CMS
EnvelopedData, Content-Format 280) SHOULD be supported for EnvelopedData, Content-Format 280) SHOULD be supported for
deployments where end-to-end encryption is needed between the client deployments where end-to-end encryption is needed between the client
and a server. Such cases could include architectures where an entity and a server. Such cases could include architectures where an entity
between the client and the CA terminates the DTLS connection between the client and the CA terminates the DTLS connection
skipping to change at page 23, line 8 skipping to change at page 24, line 8
HTTP Registrar MUST reassemble the BLOCKs before translating the HTTP Registrar MUST reassemble the BLOCKs before translating the
binary content to Base64, and consecutively relay the message binary content to Base64, and consecutively relay the message
upstream. upstream.
The EST-coaps-to-HTTP Registrar MUST support resource discovery The EST-coaps-to-HTTP Registrar MUST support resource discovery
according to the rules in Section 5.1. according to the rules in Section 5.1.
7. Parameters 7. Parameters
This section addresses transmission parameters described in sections This section addresses transmission parameters described in sections
4.7 and 4.8 of [RFC7252]. EST does not impose any unique values on 4.7 and 4.8 of [RFC7252].
the CoAP parameters in [RFC7252], but the setting of the CoAP
parameter values may have consequence for the setting of the EST
parameter values.
It is recommended, based on experiments, to follow the default CoAP EST does not impose any unique values on the CoAP parameters in
configuration parameters ([RFC7252]). However, depending on the [RFC7252], but the setting of the CoAP parameter values may have
implementation scenario, retransmissions and timeouts can also occur consequence for the setting of the EST parameter values.
on other networking layers, governed by other configuration
parameters. When a change in a server parameter has taken place, the It is recommended, based on experiments,
parameter values in the communicating endpoints MUST be adjusted as
necessary. to follow the default CoAP configuration parameters ([RFC7252]).
However, depending on the implementation scenario, retransmissions
and timeouts can also occur on other networking layers, governed by
other configuration parameters. When a change in a server parameter
has taken place, the parameter values in the communicating endpoints
MUST be adjusted as necessary.
Some further comments about some specific parameters, mainly from Some further comments about some specific parameters, mainly from
Table 2 in [RFC7252]: Table 2 in [RFC7252]:
o NSTART: A parameter that controls the number of simultaneous o NSTART: A parameter that controls the number of simultaneous
outstanding interactions that a client maintains to a given outstanding interactions that a client maintains to a given
server. An EST-coaps client is expected to control at most one server. An EST-coaps client is expected to control at most one
interaction with a given server, which is the default NSTART value interaction with a given server, which is the default NSTART value
defined in [RFC7252]. defined in [RFC7252].
skipping to change at page 24, line 27 skipping to change at page 25, line 29
| application/pkcs7-mime; | 280 | [RFC7030] [I-D.ietf-lamps- | | application/pkcs7-mime; | 280 | [RFC7030] [I-D.ietf-lamps- |
| smime-type=server-generated- | | rfc5751-bis] [ThisRFC] | | smime-type=server-generated- | | rfc5751-bis] [ThisRFC] |
| key | | | | key | | |
| application/pkcs7-mime; | 281 | [I-D.ietf-lamps-rfc5751-bi | | application/pkcs7-mime; | 281 | [I-D.ietf-lamps-rfc5751-bi |
| smime-type=certs-only | | s] [ThisRFC] | | smime-type=certs-only | | s] [ThisRFC] |
| application/pkcs8 | 284 | [RFC5958] [I-D.ietf-lamps- | | application/pkcs8 | 284 | [RFC5958] [I-D.ietf-lamps- |
| | | rfc5751-bis] [ThisRFC] | | | | rfc5751-bis] [ThisRFC] |
| application/csrattrs | 285 | [RFC7030] | | application/csrattrs | 285 | [RFC7030] |
| application/pkcs10 | 286 | [RFC5967] [I-D.ietf-lamps- | | application/pkcs10 | 286 | [RFC5967] [I-D.ietf-lamps- |
| | | rfc5751-bis] [ThisRFC] | | | | rfc5751-bis] [ThisRFC] |
| application/pkix-cert | TBD28 | [RFC2585] [ThisRFC] | | application/pkix-cert | TBD28 | [RFC2585] [ThisRFC] |
| | 7 | | | | 7 | |
+------------------------------+-------+----------------------------+ +------------------------------+-------+----------------------------+
Table 5: New CoAP Content-Formats Table 5: New CoAP Content-Formats
It is suggested that 287 is allocated to TBD287. It is suggested that 287 is allocated to TBD287.
9.2. Resource Type registry 9.2. Resource Type registry
This memo registers new Resource Type (rt=) Link Target Attributes in This memo registers new Resource Type (rt=) Link Target Attributes in
skipping to change at page 25, line 49 skipping to change at page 26, line 52
not available on many constrained devices, such as mouse movement, not available on many constrained devices, such as mouse movement,
timing of keystrokes, or air turbulence on the movement of hard drive timing of keystrokes, or air turbulence on the movement of hard drive
heads, as pointed out in [PsQs]. Other sources have to be used or heads, as pointed out in [PsQs]. Other sources have to be used or
dedicated hardware has to be added. Selecting hardware for an IoT dedicated hardware has to be added. Selecting hardware for an IoT
device that is capable of producing high-quality random numbers is device that is capable of producing high-quality random numbers is
therefore important [RSAfact]. therefore important [RSAfact].
It is also RECOMMENDED that the Implicit Trust Anchor database used It is also RECOMMENDED that the Implicit Trust Anchor database used
for EST server authentication is carefully managed to reduce the for EST server authentication is carefully managed to reduce the
chance of a third-party CA with poor certification practices chance of a third-party CA with poor certification practices
jeopardizing authentication. Disabling the Implicit Trust Anchor jeopardizing authentication.
database after successfully receiving the Distribution of CA
certificates response (Section 4.1.3 of [RFC7030]) limits any risk to Disabling the Implicit Trust Anchor database after successfully
the first DTLS exchange. Alternatively, in a case where a /sen receiving the Distribution of CA certificates response (Section 4.1.3
request immediately follows a /crts, a client MAY choose to keep the of [RFC7030]) limits any risk to the first DTLS exchange.
connection authenticated by the Implicit TA open for efficiency Alternatively, in a case where a /sen request immediately follows a
reasons (Section 4). A client that interleaves EST-coaps /crts /crts, a client MAY choose to keep the connection authenticated by
request with other requests in the same DTLS connection SHOULD the Implicit TA open for efficiency reasons (Section 4). A client
revalidate the server certificate chain against the updated Explicit that interleaves EST-coaps /crts request with other requests in the
TA from the /crts response before proceeding with the subsequent same DTLS connection SHOULD revalidate the server certificate chain
requests. If the server certificate chain does not authenticate against the updated Explicit TA from the /crts response before
against the database, the client SHOULD close the connection without proceeding with the subsequent requests. If the server certificate
completing the rest of the requests. The updated Explicit TA MUST chain does not authenticate against the database, the client SHOULD
continue to be used in new DTLS connections. close the connection without completing the rest of the requests.
The updated Explicit TA MUST continue to be used in new DTLS
connections.
In cases where the IDevID used to authenticate the client is expired In cases where the IDevID used to authenticate the client is expired
the server MAY still authenticate the client because IDevIDs are the server MAY still authenticate the client because IDevIDs are
expected to live as long as the device itself (Section 4). In such expected to live as long as the device itself (Section 4). In such
occasions, checking the certificate revocation status or authorizing occasions, checking the certificate revocation status or authorizing
the client using another method is important for the server to ensure the client using another method is important for the server to ensure
that the client is to be trusted. that the client is to be trusted.
In accordance with [RFC7030], TLS cipher suites that include In accordance with [RFC7030], TLS cipher suites that include
"_EXPORT_" and "_DES_" in their names MUST NOT be used. More "_EXPORT_" and "_DES_" in their names MUST NOT be used. More
skipping to change at page 26, line 38 skipping to change at page 27, line 43
used as signature keys, signing the certification request with the used as signature keys, signing the certification request with the
private key serves as a PoP on that key pair". The inclusion of tls- private key serves as a PoP on that key pair". The inclusion of tls-
unique in the certificate request links the proof-of-possession to unique in the certificate request links the proof-of-possession to
the TLS proof-of-identity. This implies but does not prove that only the TLS proof-of-identity. This implies but does not prove that only
the authenticated client currently has access to the private key. the authenticated client currently has access to the private key.
What's more, CMC PoP linking uses tls-unique as it is defined in What's more, CMC PoP linking uses tls-unique as it is defined in
[RFC5929]. The 3SHAKE attack [tripleshake] poses a risk by allowing [RFC5929]. The 3SHAKE attack [tripleshake] poses a risk by allowing
a man-in-the-middle to leverage session resumption and renegotiation a man-in-the-middle to leverage session resumption and renegotiation
to inject himself between a client and server even when channel to inject himself between a client and server even when channel
binding is in use. Implementers should use the Extended Master binding is in use.
Secret Extension in DTLS [RFC7627] to prevent such attacks. In the
context of this specification, an attacker could invalidate the Implementers should use the Extended Master Secret Extension in DTLS
purpose of the PoP linking ChallengePassword in the client request by [RFC7627] to prevent such attacks. In the context of this
resuming an EST-coaps connection. Even though the practical risk of specification, an attacker could invalidate the purpose of the PoP
such an attack to EST-coaps is not devastating, we would rather use a linking ChallengePassword in the client request by resuming an EST-
more secure channel binding mechanism. Such a mechanism could coaps connection. Even though the practical risk of such an attack
include an updated tls-unique value generation like the tls-unique- to EST-coaps is not devastating, we would rather use a more secure
prf defined in [I-D.josefsson-sasl-tls-cb] by using a TLS exporter channel binding mechanism. Such a mechanism could include an updated
[RFC5705] in TLS 1.2 or TLS 1.3's updated exporter (Section 7.5 of tls-unique value generation like the tls-unique-prf defined in
[RFC8446]) value in place of the tls-unique value in the CSR. Such
mechanism has not been standardized yet. Adopting a channel binding [I-D.josefsson-sasl-tls-cb] by using a TLS exporter [RFC5705] in TLS
value generated from an exporter would break backwards compatibility 1.2 or TLS 1.3's updated exporter (Section 7.5 of [RFC8446]) value in
for an RA that proxies through to a classic EST server. Thus, in place of the tls-unique value in the CSR. Such mechanism has not
this specification we still depend on the tls-unique mechanism been standardized yet. Adopting a channel binding value generated
defined in [RFC5929], especially since a 3SHAKE attack does not from an exporter would break backwards compatibility for an RA that
expose messages exchanged with EST-coaps. proxies through to a classic EST server. Thus, in this specification
we still depend on the tls-unique mechanism defined in [RFC5929],
especially since a 3SHAKE attack does not expose messages exchanged
with EST-coaps.
Interpreters of ASN.1 structures should be aware of the use of Interpreters of ASN.1 structures should be aware of the use of
invalid ASN.1 length fields and should take appropriate measures to invalid ASN.1 length fields and should take appropriate measures to
guard against buffer overflows, stack overruns in particular, and guard against buffer overflows, stack overruns in particular, and
malicious content in general. malicious content in general.
10.2. HTTPS-CoAPS Registrar considerations 10.2. HTTPS-CoAPS Registrar considerations
The Registrar proposed in Section 6 must be deployed with care, and The Registrar proposed in Section 6 must be deployed with care, and
only when direct client-server connections are not possible. When only when direct client-server connections are not possible. When
skipping to change at page 27, line 50 skipping to change at page 29, line 9
Registrar will be generating the private key and enrolling the Registrar will be generating the private key and enrolling the
certificates with the CA or if the CA will be responsible for certificates with the CA or if the CA will be responsible for
generating the key. In such cases, the existence of a Registrar generating the key. In such cases, the existence of a Registrar
requires the client to put its trust on the registrar when it is requires the client to put its trust on the registrar when it is
generating the private key. generating the private key.
11. Contributors 11. Contributors
Martin Furuhed contributed to the EST-coaps specification by Martin Furuhed contributed to the EST-coaps specification by
providing feedback based on the Nexus EST over CoAPS server providing feedback based on the Nexus EST over CoAPS server
implementation that started in 2015. Sandeep Kumar kick-started this implementation that started in 2015.
specification and was instrumental in drawing attention to the
importance of the subject. Sandeep Kumar kick-started this specification and was instrumental in
drawing attention to the importance of the subject.
12. Acknowledgements 12. Acknowledgements
The authors are very grateful to Klaus Hartke for his detailed The authors are very grateful to Klaus Hartke for his detailed
explanations on the use of Block with DTLS and his support for the explanations on the use of Block with DTLS and his support for the
Content-Format specification. The authors would like to thank Esko Content-Format specification. The authors would like to thank Esko
Dijk and Michael Verschoor for the valuable discussions that helped Dijk and Michael Verschoor for the valuable discussions that helped
in shaping the solution. They would also like to thank Peter in shaping the solution. They would also like to thank Peter
Panburana for his feedback on technical details of the solution. Panburana for his feedback on technical details of the solution.
Constructive comments were received from Benjamin Kaduk, Eliot Lear, Constructive comments were received from Benjamin Kaduk, Eliot Lear,
skipping to change at page 28, line 42 skipping to change at page 29, line 49
[I-D.ietf-lamps-rfc5751-bis] [I-D.ietf-lamps-rfc5751-bis]
Schaad, J., Ramsdell, B., and S. Turner, "Secure/ Schaad, J., Ramsdell, B., and S. Turner, "Secure/
Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Multipurpose Internet Mail Extensions (S/MIME) Version 4.0
Message Specification", draft-ietf-lamps-rfc5751-bis-12 Message Specification", draft-ietf-lamps-rfc5751-bis-12
(work in progress), September 2018. (work in progress), September 2018.
[I-D.ietf-tls-dtls13] [I-D.ietf-tls-dtls13]
Rescorla, E., Tschofenig, H., and N. Modadugu, "The Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version Datagram Transport Layer Security (DTLS) Protocol Version
1.3", draft-ietf-tls-dtls13-33 (work in progress), October 1.3", draft-ietf-tls-dtls13-34 (work in progress),
2019. November 2019.
[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>.
[RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key [RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key
Infrastructure Operational Protocols: FTP and HTTP", Infrastructure Operational Protocols: FTP and HTTP",
RFC 2585, DOI 10.17487/RFC2585, May 1999, RFC 2585, DOI 10.17487/RFC2585, May 1999,
<https://www.rfc-editor.org/info/rfc2585>. <https://www.rfc-editor.org/info/rfc2585>.
 End of changes. 36 change blocks. 
181 lines changed or deleted 211 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/