draft-ietf-ace-coap-est-05.txt | draft-ietf-ace-coap-est-06.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: January 19, 2019 Cisco Systems | Expires: April 11, 2019 Cisco Systems | |||
S. Kumar | S. Kumar | |||
Philips Lighting Research | Philips Lighting Research | |||
M. Richardson | M. Richardson | |||
SSW | SSW | |||
M. Furuhed | M. Furuhed | |||
Nexus Group | Nexus Group | |||
S. Raza | S. Raza | |||
RISE SICS | RISE SICS | |||
July 18, 2018 | October 8, 2018 | |||
EST over secure CoAP (EST-coaps) | EST over secure CoAP (EST-coaps) | |||
draft-ietf-ace-coap-est-05 | draft-ietf-ace-coap-est-06 | |||
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 low-resource constrained | secure CoAP (EST-coaps), which allows low-resource constrained | |||
devices to use existing EST functionality for provisioning | devices to use existing EST functionality for provisioning | |||
certificates. | certificates. | |||
skipping to change at page 1, line 45 ¶ | skipping to change at page 1, line 45 ¶ | |||
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 January 19, 2019. | This Internet-Draft will expire on April 11, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Conformance to RFC7925 profiles . . . . . . . . . . . . . . . 3 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Protocol Design . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Conformance to RFC7925 profiles . . . . . . . . . . . . . . . 5 | |||
4.1. Payload format . . . . . . . . . . . . . . . . . . . . . 5 | 5. Protocol Design . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1.1. Content Format application/multipart-core . . . . . . 6 | 5.1. Mandatory/optional EST Functions . . . . . . . . . . . . 7 | |||
4.2. Message Bindings . . . . . . . . . . . . . . . . . . . . 6 | 5.2. Payload format . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.3. CoAP response codes . . . . . . . . . . . . . . . . . . . 6 | 5.2.1. Content Format application/multipart-core . . . . . . 8 | |||
4.4. Delayed Responses . . . . . . . . . . . . . . . . . . . . 7 | 5.3. Message Bindings . . . . . . . . . . . . . . . . . . . . 8 | |||
4.5. Server-side Key Generation . . . . . . . . . . . . . . . 9 | 5.4. CoAP response codes . . . . . . . . . . . . . . . . . . . 9 | |||
4.6. Message fragmentation . . . . . . . . . . . . . . . . . . 10 | 5.5. Delayed Responses . . . . . . . . . . . . . . . . . . . . 9 | |||
4.7. Deployment limits . . . . . . . . . . . . . . . . . . . . 11 | 5.6. Server-side Key Generation . . . . . . . . . . . . . . . 11 | |||
5. Discovery and URI . . . . . . . . . . . . . . . . . . . . . . 11 | 5.7. Message fragmentation . . . . . . . . . . . . . . . . . . 12 | |||
6. DTLS Transport Protocol . . . . . . . . . . . . . . . . . . . 13 | 5.8. Deployment limits . . . . . . . . . . . . . . . . . . . . 13 | |||
7. HTTPS-CoAPS Registrar . . . . . . . . . . . . . . . . . . . . 14 | 6. Discovery and URI . . . . . . . . . . . . . . . . . . . . . . 13 | |||
8. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 7. DTLS Transport Protocol . . . . . . . . . . . . . . . . . . . 15 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 8. HTTPS-CoAPS Registrar . . . . . . . . . . . . . . . . . . . . 17 | |||
9.1. Content-Format Registry . . . . . . . . . . . . . . . . . 17 | 9. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
9.2. Resource Type registry . . . . . . . . . . . . . . . . . 18 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 10.1. Content-Format Registry . . . . . . . . . . . . . . . . 20 | |||
10.1. EST server considerations . . . . . . . . . . . . . . . 18 | 10.2. Resource Type registry . . . . . . . . . . . . . . . . . 20 | |||
10.2. HTTPS-CoAPS Registrar considerations . . . . . . . . . . 19 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | 11.1. EST server considerations . . . . . . . . . . . . . . . 21 | |||
12. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 11.2. HTTPS-CoAPS Registrar considerations . . . . . . . . . . 22 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 21 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 22 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 23 | |||
Appendix A. EST messages to EST-coaps . . . . . . . . . . . . . 24 | 13.2. Informative References . . . . . . . . . . . . . . . . . 24 | |||
A.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 25 | Appendix A. EST messages to EST-coaps . . . . . . . . . . . . . 26 | |||
A.2. csrattrs . . . . . . . . . . . . . . . . . . . . . . . . 29 | A.1. cacerts . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
A.3. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 29 | A.2. csrattrs . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
A.4. serverkeygen . . . . . . . . . . . . . . . . . . . . . . 32 | A.3. enroll / reenroll . . . . . . . . . . . . . . . . . . . . 31 | |||
Appendix B. EST-coaps Block message examples . . . . . . . . . . 34 | A.4. serverkeygen . . . . . . . . . . . . . . . . . . . . . . 33 | |||
B.1. cacerts block example . . . . . . . . . . . . . . . . . . 34 | Appendix B. EST-coaps Block message examples . . . . . . . . . . 35 | |||
B.2. enroll block example . . . . . . . . . . . . . . . . . . 37 | B.1. cacerts block example . . . . . . . . . . . . . . . . . . 35 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | B.2. enroll block example . . . . . . . . . . . . . . . . . . 38 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 | ||||
1. Introduction | 1. Change Log | |||
EDNOTE: Remove this section before publication | ||||
-06: | ||||
clarified discovery section, by specifying that no discovery may | ||||
be needed for /.well-known/est URI. | ||||
added resource type values for IANA | ||||
added list of compulsory to implement and optional functions. | ||||
Fixed issues pointed out by the idnits tool. | ||||
Updated COAP response codes section with more mappings between EST | ||||
HTTP codes and EST-coaps COAP codes. | ||||
Minor updates to the MTI EST Functions section. | ||||
Moved Change Log section higher. | ||||
-05: | ||||
repaired again | ||||
TBD8 removed from C-F registration, to be done in CT draft. | ||||
-04: | ||||
Updated Delayed response section to reflect short and long delay | ||||
options. | ||||
-03: | ||||
Removed observe and simplified long waits | ||||
Repaired content-format specification | ||||
-02: | ||||
Added parameter discussion in section 8 | ||||
Concluded content-format specification using multipart-ct draft | ||||
examples updated | ||||
-01: | ||||
Editorials done. | ||||
Redefinition of proxy to Registrar in Section 8. Explained better | ||||
the role of https-coaps Registrar, instead of "proxy" | ||||
Provide "observe" option examples | ||||
extended block message example. | ||||
inserted new server key generation text in Section 5.6 and | ||||
motivated server key generation. | ||||
Broke down details for DTLS 1.3 | ||||
New media type uses CBOR array for multiple content-format | ||||
payloads | ||||
provided new content format tables | ||||
new media format for IANA | ||||
-00 | ||||
copied from vanderstok-ace-coap-04 | ||||
2. Introduction | ||||
"Classical" Enrollment over Secure Transport (EST) [RFC7030] is used | "Classical" Enrollment over Secure Transport (EST) [RFC7030] is used | |||
for authenticated/authorized endpoint certificate enrollment (and | for authenticated/authorized endpoint certificate enrollment (and | |||
optionally key provisioning) through a Certificate Authority (CA) or | optionally key provisioning) through a Certificate Authority (CA) or | |||
Registration Authority (RA). EST messages run over HTTPS. | Registration Authority (RA). EST messages run over HTTPS. | |||
This document defines a new transport for EST based on the | This document defines a new transport for EST based on the | |||
Constrained Application Protocol (CoAP) since some Internet of Things | Constrained Application Protocol (CoAP) since some Internet of Things | |||
(IoT) devices use CoAP instead of HTTP. Therefore, this | (IoT) devices use CoAP instead of HTTP. Therefore, this | |||
specification utilizes DTLS [RFC6347], CoAP [RFC7252], and UDP | specification utilizes DTLS [RFC6347], CoAP [RFC7252], and UDP | |||
instead of TLS [RFC5246], HTTP [RFC7230] and TCP. | instead of TLS [RFC8446], HTTP [RFC7230] and TCP. | |||
EST messages may be relatively large and for this reason this | EST messages may be relatively large and for this reason this | |||
document also uses CoAP Block-Wise Transfer [RFC7959] to offer a | document also uses CoAP Block-Wise Transfer [RFC7959] to offer a | |||
fragmentation mechanism of EST messages at the CoAP layer. | fragmentation mechanism of EST messages at the CoAP layer. | |||
This specification also profiles the use of EST to only support | This specification also profiles the use of EST to only support | |||
certificate-based client Authentication. HTTP Basic or Digest | certificate-based client Authentication. HTTP Basic or Digest | |||
authentication (as described in Section 3.2.3 of [RFC7030] are not | authentication (as described in Section 3.2.3 of [RFC7030] are not | |||
supported. | supported. | |||
2. Terminology | 3. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
Many of the concepts in this document are taken over from [RFC7030]. | Many of the concepts in this document are taken over from [RFC7030]. | |||
Consequently, much text is directly traceable to [RFC7030]. The same | Consequently, much text is directly traceable to [RFC7030]. The same | |||
document structure is followed to point out the differences and | document structure is followed to point out the differences and | |||
commonalities between EST and EST-coaps. | commonalities between EST and EST-coaps. | |||
3. Conformance to RFC7925 profiles | 4. Conformance to RFC7925 profiles | |||
This section shows how EST-coaps fits into the profiles of low- | This section shows how EST-coaps fits into the profiles of low- | |||
resource devices described in [RFC7925]. | resource devices described in [RFC7925]. | |||
EST-coaps can transport certificates and private keys. Certificates | EST-coaps can transport certificates and private keys. Certificates | |||
are responses to (re-)enrollment requests or request for a trusted | are responses to (re-)enrollment requests or request for a trusted | |||
certificate list. Private keys can be transported as responses to a | certificate list. Private keys can be transported as responses to a | |||
request to a server-side keygeneration as described in section 4.4 of | request to a server-side keygeneration as described in section 4.4 of | |||
[RFC7030] and discussed in Section 4.5 of this document. | [RFC7030] and discussed in Section 5.6 of this document. | |||
As per [RFC7925] section 3.3 and section 4.4, the mandatory cipher | As per [RFC7925] section 3.3 and section 4.4, the mandatory cipher | |||
suite for DTLS in EST-coaps is TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 | suite for DTLS in EST-coaps is TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 | |||
defined in [RFC7251], and the curve secp256r1 MUST be supported | defined in [RFC7251], and the curve secp256r1 MUST be supported | |||
[RFC4492]; this curve is equivalent to the NIST P-256 curve. Crypto | [RFC8422]; this curve is equivalent to the NIST P-256 curve. Crypto | |||
agility is important, and the recommendations in [RFC7925] section | agility is important, and the recommendations in [RFC7925] section | |||
4.4 and any updates to RFC7925 concerning Curve25519 and other CFRG | 4.4 and any updates to RFC7925 concerning Curve25519 and other CFRG | |||
curves also applies. | curves also apply. | |||
DTLS1.2 implementations MUST use the Supported Elliptic Curves and | DTLS1.2 implementations MUST use the Supported Elliptic Curves and | |||
Supported Point Formats Extensions [RFC4492]. Uncompressed point | Supported Point Formats Extensions [RFC8422]. Uncompressed point | |||
format MUST also be supported. [RFC6090] can be used as summary of | format MUST also be supported. [RFC6090] can be used as summary of | |||
the ECC algorithms. DTLS 1.3 implementations differ from DTLS 1.2 | the ECC algorithms. DTLS 1.3 implementations differ from DTLS 1.2 | |||
because they do not support point format negotiation in favor of a | because they do not support point format negotiation in favor of a | |||
single point format for each curve and thus support for DTLS 1.3 does | single point format for each curve and thus support for DTLS 1.3 does | |||
not mandate point formation extensions and negotiation. | not mandate point formation extensions and negotiation. | |||
The EST-coaps client MUST be configured with at least an implicit TA | The EST-coaps client MUST be configured with at least an implicit TA | |||
database from its manufacturer. The authentication of the EST-coaps | database from its manufacturer. The authentication of the EST-coaps | |||
server by the EST-coaps client is based on certificate authentication | server by the EST-coaps client is based on certificate authentication | |||
in the DTLS handshake. | in the DTLS handshake. | |||
The authentication of the EST-coaps client is based on a client | The authentication of the EST-coaps client is based on a client | |||
certificate in the DTLS handshake. This can either be | certificate in the DTLS handshake. This can either be | |||
o a previously issued client certificate (e.g., an existing | o a previously issued client certificate (e.g., an existing | |||
certificate issued by the EST CA); this could be a common case for | certificate issued by the EST CA); this could be a common case for | |||
simple re-enrollment of clients; | simple reenrollment of clients; | |||
o a previously installed certificate (e.g., manufacturer-installed | o a previously installed certificate (e.g., manufacturer-installed | |||
certificate or a certificate issued by some other party); the | certificate or a certificate issued by some other party); the | |||
server is expected to trust the manufacturer's root CA certificate | server is expected to trust the manufacturer's root CA certificate | |||
in this case. | in this case. | |||
4. Protocol Design | 5. Protocol Design | |||
EST-coaps uses CoAP to transfer EST messages, aided by Block-Wise | EST-coaps uses CoAP to transfer EST messages, aided by Block-Wise | |||
Transfer [RFC7959] to transport CoAP messages in blocks thus avoiding | Transfer [RFC7959] to transport CoAP messages in blocks thus avoiding | |||
(excessive) fragmentation of UDP datagrams. The use of "Block" for | (excessive) fragmentation of UDP datagrams. The use of "Block" for | |||
the transfer of larger EST messages is specified in Section 4.6. The | the transfer of larger EST messages is specified in Section 5.7. The | |||
Figure 1 below shows the layered EST-coaps architecture. | Figure 1 below shows the layered EST-coaps architecture. | |||
+------------------------------------------------+ | +------------------------------------------------+ | |||
| EST request/response messages | | | EST request/response messages | | |||
+------------------------------------------------+ | +------------------------------------------------+ | |||
| CoAP for message transfer and signalling | | | CoAP for message transfer and signalling | | |||
+------------------------------------------------+ | +------------------------------------------------+ | |||
| DTLS for transport security | | | DTLS for transport security | | |||
+------------------------------------------------+ | +------------------------------------------------+ | |||
| UDP for transport | | | UDP for transport | | |||
+------------------------------------------------+ | +------------------------------------------------+ | |||
Figure 1: EST-coaps protocol layers | Figure 1: EST-coaps protocol layers | |||
The EST-coaps protocol design follows closely the EST design. The | The EST-coaps protocol design follows closely the EST design. The | |||
actions supported by EST-coaps are identified by their message types: | actions supported by EST-coaps are identified by their message types: | |||
skipping to change at page 5, line 33 ¶ | skipping to change at page 7, line 9 ¶ | |||
o Simple enroll and reenroll, for CA to sign public client-identity | o Simple enroll and reenroll, for CA to sign public client-identity | |||
key. | key. | |||
o Certificate Signing Request (CSR) Attributes request messages, | o Certificate Signing Request (CSR) Attributes request messages, | |||
informs the client of the fields to include in generated CSR. | informs the client of the fields to include in generated CSR. | |||
o Server-side key generation messages, to provide a private client- | o Server-side key generation messages, to provide a private client- | |||
identity key when the client choses for an external entity to | identity key when the client choses for an external entity to | |||
generate its private key. | generate its private key. | |||
4.1. Payload format | 5.1. Mandatory/optional EST Functions | |||
This specification contains a set of required-to-implement functions, | ||||
optional functions, and not specified functions. The latter ones are | ||||
deemed too expensive for low-resource devices in payload and | ||||
calculation times. | ||||
Table 1 specifies the mandatory-to-implement or optional | ||||
implementation of the est-coaps functions. | ||||
+------------------+--------------------------+ | ||||
| EST Functions | EST-coaps implementation | | ||||
+------------------+--------------------------+ | ||||
| /cacerts | Mandatory | | ||||
| /simpleenroll | Mandatory | | ||||
| /simplereenroll | Mandatory | | ||||
| /fullcmc | Not specified | | ||||
| /serverkeygen | Optional | | ||||
| /csrattrs | Optional | | ||||
+------------------+--------------------------+ | ||||
Table 1: list of EST -coaps fuctions | ||||
5.2. Payload format | ||||
The content-format (media type equivalent) of the CoAP message | The content-format (media type equivalent) of the CoAP message | |||
determines which EST message is transported in the CoAP payload. The | determines which EST message is transported in the CoAP payload. The | |||
media types specified in the HTTP Content-Type header (section 3.2.2 | media types specified in the HTTP Content-Type header (section 3.2.2 | |||
of [RFC7030]) are in EST-coaps specified by the Content-Format Option | of [RFC7030]) are in EST-coaps specified by the Content-Format Option | |||
(12) of CoAP. The combination of URI path and content-format used | (12) of CoAP. The combination of URI path and content-format used | |||
for CoAP MUST map to an allowed combination of URI and media type as | for CoAP MUST map to an allowed combination of URI and media type as | |||
defined for EST. The required content-formats for these requests and | defined for EST. The required content-formats for these requests and | |||
response messages are defined in Section 9. The CoAP response codes | response messages are defined in Section 10. The CoAP response codes | |||
are defined in Section 4.3. | are defined in Section 5.4. | |||
EST-coaps is designed for use between low-resource devices and hence | EST-coaps is designed for use between low-resource devices and hence | |||
does not need to send base64-encoded data. Simple binary is more | does not need to send base64-encoded data. Simple binary is more | |||
efficient (30% smaller payload) and well supported by CoAP. | efficient (30% smaller payload) and well supported by CoAP. | |||
Therefore, the content formats specification in Section 4.1.1 | ||||
specifies that the binary payload is transported as a CBOR major type | ||||
2, a byte string, for all EST-coaps Content-Formats. In the examples | ||||
of Appendix A, the base16 diagnostic notation is used for CBOR major | ||||
type 2, where h'450aafbb' represents an example binary payload. | ||||
4.1.1. Content Format application/multipart-core | The payload for a given media type follows the ASN.1 structure of the | |||
media-type and is transported as straight binary coding instead of | ||||
the base64-encoded. The binary is wrapped in a CBOR major type 2 | ||||
using h'xxx' notation (to assure compatibility with multipart). | ||||
EDNote: suggestion to remove CBOR wrapping for not multipart. | ||||
In the examples of Appendix A, the base16 diagnostic notation is used | ||||
for CBOR major type 2, where h'450aafbb' represents an example binary | ||||
payload. The content formats specification in Section 5.2.1 | ||||
specifies the payload structure when multiple media types are present | ||||
in the payload. | ||||
5.2.1. Content Format application/multipart-core | ||||
A representation with content format ID TBD8 contains a collection of | A representation with content format ID TBD8 contains a collection of | |||
representations along with their respective content format. The | representations along with their respective content format. The | |||
content-format identifies the media-type application/multipart-core | content-format identifies the media-type application/multipart-core | |||
specified in [I-D.fossati-core-multipart-ct]. | specified in [I-D.ietf-core-multipart-ct]. | |||
The collection is encoded as a CBOR array [RFC7049] with an even | The collection is encoded as a CBOR array [RFC7049] with an even | |||
number of elements. The second, fourth, sixth, etc. element is a | number of elements. The second, fourth, sixth, etc. element is a | |||
binary string containing a representation. The first, third, fifth, | binary string containing a representation. The first, third, fifth, | |||
etc. element is an unsigned integer specifying the content format ID | etc. element is an unsigned integer specifying the content format ID | |||
of the following representation. | of the following representation. | |||
For example, a collection containing two representations, one with | For example, a collection containing two representations in response | |||
content format ID TBD5 and one with content format ID TBD2, looks | to a server-side key generation, could include a private key in | |||
like this in diagnostic CBOR notation: | PKCS#8 with content format ID 284 and a certificate with content | |||
[TBD5,h'0123456789abcdef',TBD2,h'fedcba9876543210']. An example is | format ID 281, looks like this in diagnostic CBOR notation: | |||
shown in Appendix A.4. | [284,h'0123456789abcdef',281,h'fedcba9876543210']. The PKCS#8 key | |||
and the X.509 certificate representations will be ASN.1 encoded in | ||||
binary format. An example is shown in Appendix A.4. | ||||
4.2. Message Bindings | 5.3. Message Bindings | |||
The general EST CoAP message characteristics are: | The general EST CoAP message characteristics are: | |||
o All EST-coaps messages expect a response from the server, thus the | o All EST-coaps messages expect a response from the server, thus the | |||
client MUST send the requests over confirmable CON COAP messages. | client MUST send the requests over confirmable CON COAP messages. | |||
o The Ver, TKL, Token, and Message ID values of the CoAP header are | o The Ver, TKL, Token, and Message ID values of the CoAP header are | |||
not affected by EST. | not affected by EST. | |||
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, and Location-Path in CoAP. These CoAP Options are used to | Format, and Location-Path in CoAP. These CoAP Options are used to | |||
communicate the HTTP fields specified in the EST REST messages. | communicate the HTTP fields specified in the EST REST messages. | |||
o EST URLs are HTTPS based (https://), in CoAP these will be assumed | o EST URLs are HTTPS based (https://), in CoAP these will be assumed | |||
to be transformed to coaps (coaps://) | to be transformed to coaps (coaps://) | |||
Appendix A includes some practical examples of EST messages | Appendix A includes some practical examples of EST messages | |||
translated to CoAP. | translated to CoAP. | |||
4.3. CoAP response codes | 5.4. CoAP response codes | |||
Section 5.9 of [RFC7252] specifies the mapping of HTTP response codes | Section 5.9 of [RFC7252] specifies the mapping of HTTP response codes | |||
to CoAP response codes. Every time the HTTP response code 200 is | to CoAP response codes. Every time the HTTP response code 200 is | |||
specified in [RFC7030] in response to a GET request, in EST-coaps the | specified in [RFC7030] in response to a GET request, in EST-coaps the | |||
equivalent CoAP response code 2.05 or 2.03 MUST be used. Similarly, | equivalent CoAP response code 2.05 or 2.03 MUST be used. Similarly, | |||
2.01, 2.02 or 2.04 MUST be used in response to POST EST requests. | 2.01, 2.02 or 2.04 MUST be used in response to POST EST requests. | |||
Response code HTTP 202 has no equivalent in CoAP. In Section 4.4 it | Response code HTTP 202 has no equivalent in CoAP. Section 5.5 | |||
is specified how EST requests over CoAP handle delayed messages. | specifies how EST requests over CoAP handle delayed messages. | |||
All other HTTP 2xx response codes are not used by EST. For the | Other HTTP response codes EST makes use of, are 204 and 404 when a | |||
following HTTP 4xx error codes that may occur: 400, 401, 403, 404, | resource is not available for the client. The equivalent COAP error | |||
405, 406, 412, 413, 415; the equivalent CoAP response code for EST- | code to use in an EST-coaps response is 4.04. Additionally, EST's | |||
coaps is 4.xx. For the HTTP 5xx error codes: 500, 501, 502, 503, 504 | 401 error translates to 4.01 in EST-coaps. Other HTTP error messages | |||
the equivalent CoAP response code is 5.xx. | commonly used in EST are 400, 423 and 503. Their equivalent COAP | |||
errors are 4.00, 4.03 and 5.03 respectively. | ||||
4.4. Delayed Responses | 5.5. Delayed Responses | |||
Appendix B.2 shows an example of a server response that comes | Appendix B.2 shows an example of a server response that comes | |||
immediately after a client request. The example shows the flows of | immediately after a client request. The example shows the flows of | |||
blocks as the large messages require fragmentation. But server | blocks as the large messages require fragmentation. But server | |||
responses can sometimes be delayed. | responses can sometimes be delayed. | |||
According to section 5.2.2 of [RFC7252], a slow server can | According to section 5.2.2 of [RFC7252], a slow server can | |||
acknowledge the request and respond later with the requested resource | acknowledge the request and respond later with the requested resource | |||
representation. In particular, a slow server can respond to a enroll | representation. In particular, a slow server can respond to a enroll | |||
request with an empty ACK with code 0.00, before sending the | request with an empty ACK with code 0.00, before sending the | |||
skipping to change at page 9, line 31 ¶ | skipping to change at page 11, line 31 ¶ | |||
POST [2001:db8::2:1]:61616/est/sen (CON)(2:1/0/128) --> | POST [2001:db8::2:1]:61616/est/sen (CON)(2:1/0/128) --> | |||
<-- (ACK) (2:1/1/128) (2.04 Changed) {Cert resp} | <-- (ACK) (2:1/1/128) (2.04 Changed) {Cert resp} | |||
. | . | |||
. | . | |||
. | . | |||
POST [2001:db8::2:1]:61616/est/sen (CON)(2:N2/0/128) --> | POST [2001:db8::2:1]:61616/est/sen (CON)(2:N2/0/128) --> | |||
<-- (ACK) (2:N2/0/128) (2.04 Changed) {Cert resp} | <-- (ACK) (2:N2/0/128) (2.04 Changed) {Cert resp} | |||
Figure 3: EST-COAP enrolment with long wait | Figure 3: EST-COAP enrolment with long wait | |||
4.5. Server-side Key Generation | 5.6. Server-side Key Generation | |||
Constrained devices sometimes do not have the necessary hardware to | Constrained devices sometimes do not have the necessary hardware to | |||
generate statistically random numbers for private keys and DTLS | generate statistically random numbers for private keys and DTLS | |||
ephemeral keys. Past experience has shown that low-resource | ephemeral keys. Past experience has shown that low-resource | |||
endpoints sometimes generate numbers which could allow someone to | endpoints sometimes generate numbers which could allow someone to | |||
decrypt the communication or guess the private key and impersonate as | decrypt the communication or guess the private key and impersonate as | |||
the device. Studies have shown that the same keys are generated by | the device. Studies have shown that the same keys are generated by | |||
the same model devices deployed on-line. | the same model devices deployed on-line. | |||
EDNote: Is there a reference for these studies? | ||||
Additionally, random number key generation is costly, thus energy | Additionally, random number key generation is costly, thus energy | |||
draining. Even though the random numbers that constitute the | draining. Even though the random numbers that constitute the | |||
identity/cert do not get generated often, an endpoint may not want to | identity/cert do not get generated often, an endpoint may not want to | |||
spend time and energy generating keypairs, and just ask for one from | spend time and energy generating keypairs, and just ask for one from | |||
the server. | the server. | |||
In these scenarios, server-side key generation can be used. The | In these scenarios, server-side key generation can be used. The | |||
client asks for the server or proxy to generate the private key and | client asks for the server or proxy to generate the private key and | |||
the certificate which is transferred back to the client in the | the certificate which is transferred back to the client in the | |||
server-side key generation response. | server-side key generation response. | |||
skipping to change at page 10, line 15 ¶ | skipping to change at page 12, line 17 ¶ | |||
[RFC7030] recommends for the private key returned by the server to be | [RFC7030] recommends for the private key returned by the server to be | |||
encrypted. The specification provides two methods to encrypt the | encrypted. The specification provides two methods to encrypt the | |||
generated key, symmetric and asymmetric. The methods are signalled | generated key, symmetric and asymmetric. The methods are signalled | |||
by the client by using the relevant attributes (SMIMECapabilities and | by the client by using the relevant attributes (SMIMECapabilities and | |||
DecryptKeyIdentifier or AsymmetricDecryptKeyIdentifier) in the CSR | DecryptKeyIdentifier or AsymmetricDecryptKeyIdentifier) in the CSR | |||
request. In the symmetric key case, the key can be established out- | request. In the symmetric key case, the key can be established out- | |||
of-band or alternatively derived by the established TLS connection as | of-band or alternatively derived by the established TLS connection as | |||
described in [RFC5705]. | described in [RFC5705]. | |||
The sever-side key generation response is returned using a CBOR array | The sever-side key generation response is returned using a CBOR array | |||
Section 4.1.1. The certificate part exactly matches the response | Section 5.2.1. The certificate part exactly matches the response | |||
from a enrollment response. The private key is placed inside of a | from an enrollment response. The private key is placed inside of a | |||
CMS SignedData. The SignedData is signed by the party that generated | CMS SignedData. The SignedData is signed by the party that generated | |||
the private key, which may or may not be the EST server or the EST | the private key, which may or may not be the EST server or the EST | |||
CA. The SignedData is further protected by placing it inside of a | CA. The SignedData is further protected by placing it inside of a | |||
CMS EnvelopedData as explained in Section 4.4.2 of [RFC7030]. | CMS EnvelopedData as explained in Section 4.4.2 of [RFC7030]. | |||
4.6. Message fragmentation | 5.7. Message fragmentation | |||
DTLS defines fragmentation only for the handshake part and not for | DTLS defines fragmentation only for the handshake part and not for | |||
secure data exchange (DTLS records). [RFC6347] states that to avoid | secure data exchange (DTLS records). [RFC6347] states that to avoid | |||
using IP fragmentation, which involves error-prone datagram | using IP fragmentation, which involves error-prone datagram | |||
reconstitution, invokers of the DTLS record layer SHOULD size DTLS | reconstitution, invokers of the DTLS record layer SHOULD size DTLS | |||
records so that they fit within any Path MTU estimates obtained from | records so that they fit within any Path MTU estimates obtained from | |||
the record layer. In addition, invokers residing on a 6LoWPAN over | the record layer. In addition, invokers residing on a 6LoWPAN over | |||
IEEE 802.15.4 network SHOULD attempt to size CoAP messages such that | IEEE 802.15.4 network SHOULD attempt to size CoAP messages such that | |||
each DTLS record will fit within one or two IEEE 802.15.4 frames. | each DTLS record will fit within one or two IEEE 802.15.4 frames. | |||
skipping to change at page 11, line 31 ¶ | skipping to change at page 13, line 33 ¶ | |||
The Size1 response MAY be parsed by the client as a size indication | The Size1 response MAY be parsed by the client as a size indication | |||
of the Block2 resource in the server response or by the server as a | of the Block2 resource in the server response or by the server as a | |||
request for a size estimate by the client. Similarly, Size2 option | request for a size estimate by the client. Similarly, Size2 option | |||
defined in BLOCK should be parsed by the server as an indication of | defined in BLOCK should be parsed by the server as an indication of | |||
the size of the resource carried in Block1 options and by the client | the size of the resource carried in Block1 options and by the client | |||
as a maximum size expected in the 4.13 (Request Entity Too Large) | as a maximum size expected in the 4.13 (Request Entity Too Large) | |||
response to a request. | response to a request. | |||
Examples of fragmented messages are shown in Appendix B. | Examples of fragmented messages are shown in Appendix B. | |||
4.7. Deployment limits | 5.8. Deployment limits | |||
Although EST-coaps paves the way for the utilization of EST for | Although EST-coaps paves the way for the utilization of EST for | |||
constrained devices on constrained networks, some devices will not | constrained devices on constrained networks, some devices will not | |||
have enough resources to handle the large payloads that come with | have enough resources to handle the large payloads that come with | |||
EST-coaps. The specification of EST-coaps is intended to ensure that | EST-coaps. The specification of EST-coaps is intended to ensure that | |||
EST works for networks of constrained devices that choose to limit | EST works for networks of constrained devices that choose to limit | |||
their communications stack to UDP/CoAP. It is up to the network | their communications stack to UDP/CoAP. It is up to the network | |||
designer to decide which devices execute the EST protocol and which | designer to decide which devices execute the EST protocol and which | |||
do not. | do not. | |||
5. Discovery and URI | 6. Discovery and URI | |||
EST-coaps is targeted to low-resource networks with small packets. | EST-coaps is targeted to low-resource networks with small packets. | |||
Saving header space is important and an additional EST-coaps URI is | Saving header space is important and a short EST-coaps URI (see | |||
specified that is shorter than the EST URI. | Table 2) is specified that is shorter than the EST URI specified in | |||
[RFC7030]. The individual EST-coaps well-known server URIs differ | ||||
from the EST URI by replacing the scheme https by coaps and by | ||||
specifying shorter resource path names: | ||||
coaps://example.com:<port>/.well-known/est/<short-est> | ||||
coaps://example.com:<port>/.well-known/est/ArbitraryLabel/<short-est> | ||||
The ArbitraryLabel Path-Segment, if used, SHOULD be of the shortest | ||||
length possible (See sections 3.1 and 3.2.2 of [RFC7030]. Following | ||||
[RFC7030] discovery is not needed when the client is preconfigured | ||||
with the /.well-known/est server URI and the coaps port 5684. | ||||
The additional EST-coaps server URIs, obtained through discovery of | ||||
the EST root resource(s) as shown below, are of the form: | ||||
coaps://example.com:<port>/<root-resource>/<short-est> | ||||
coaps://example.com:<port>/<root-resource>/ArbitraryLabel/<short-est> | ||||
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 | |||
management data are discovered by sending a GET request to "/.well- | management data 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]. Upon success, the return payload will contain | "ace.est" [RFC6690]. Upon success, the return payload will contain | |||
the root resource of the EST resources. It is up to the | the root resource of the EST resources. It is up to the | |||
implementation to choose its root resource; throughout this document | implementation to choose its root resource; throughout this document | |||
the example root resource /est is used. | the example root resource /est is used. | |||
The individual EST-coaps server URIs differ from the EST URI by | The optional additional EST-coaps server URIs, obtained through | |||
replacing the scheme https by coaps and by specifying shorter | discovery of the EST root resource(s) as shown below, are of the | |||
resource path names: | form: | |||
coaps://www.example.com/.well-known/est/ArbitraryLabel/<short-est>. | ||||
The ArbitraryLabel Path-Segment SHOULD be of the shortest length | coaps://example.com:<port>/<root-resource>/<short-est> | |||
possible. | coaps://example.com:<port>/<root-resource>/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 2 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 | | |||
| /csrattrs | /att | | | /csrattrs | /att | | |||
| /serverkeygen | /skg | | | /serverkeygen | /skg | | |||
+------------------+-----------+ | +------------------+-----------+ | |||
Table 1 | Table 2: Short EST-coaps URI path | |||
The short resource URIs MUST be supported. The corresponding longer | The short resource URIs MUST be supported. The corresponding longer | |||
URIs specified in [RFC7030] MAY be supported. | URIs specified in [RFC7030] MAY be supported. | |||
When discovering the root path for the EST resources, the server MAY | When discovering the root path for the EST resources, the server MAY | |||
return all available resource paths and the used content types. This | return all available resource paths and the used content types. This | |||
is useful when multiple content types are specified for EST-coaps | is useful when multiple content types are specified for EST-coaps | |||
server. The example below shows the discovery of the presence and | server and optional functions are available. The example below shows | |||
location of management data. | the discovery 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>; rt="ace.est" | </est>; rt="ace.est", | |||
</est/crts>;ct=TBD2 | </est/crts>;rt="ace.est.crts";ct=281, | |||
</est/sen>;ct=TBD2 TBD7 | </est/sen>;rt="ace.est.sen"ct=281 286, | |||
</est/sren>;ct=TBD2 TBD7 | </est/sren>;rt="ace.est.sren"ct=281 286, | |||
</est/att>;ct=TBD6 | </est/att>;rt="ace.est.att"ct=285, | |||
</est/skg>;ct=TBD1 TBD7 TBD8 | </est/skg>;rt="ace.est.skg"ct=280 286 TBD8 | |||
The first line of the discovery response MUST be returned. The five | The first line of the discovery response MUST be returned. The five | |||
consecutive lines MAY be returned. The return of the content-types | consecutive lines MAY be returned. The return of the content-types | |||
in the last four lines allows the client to choose the most | in the last four lines allows the client to choose the most | |||
appropriate one from multiple content types. | appropriate one from multiple content types. | |||
6. DTLS Transport Protocol | Port numbers, not returned in the example, are assumed to be the | |||
default numbers 5683 and 5684 for coap and coaps respectively | ||||
(sections 12.6 and 12.7 of [RFC7252]. Discoverable port numbers MAY | ||||
be returned in the <href> of the payload. | ||||
7. DTLS Transport Protocol | ||||
EST-coaps depends on a secure transport mechanism over UDP that can | EST-coaps depends on a secure transport mechanism over UDP that can | |||
secure (confidentiality, authenticity) the exchanged CoAP messages. | secure (confidentiality, authenticity) the exchanged CoAP messages. | |||
DTLS is one such secure protocol. When "TLS" is referred to in the | DTLS is one such secure protocol. When "TLS" is referred to in the | |||
context of EST, it is understood that in EST-coaps, security is | context of EST, it is understood that in EST-coaps, security is | |||
provided using DTLS instead. No other changes are necessary (all | provided using DTLS instead. No other changes are necessary (all | |||
provisional modes etc. are the same as for TLS). | provisional modes etc. are the same as for TLS). | |||
CoAP was designed to avoid fragmentation. DTLS is used to secure | CoAP was designed to avoid fragmentation. DTLS is used to secure | |||
skipping to change at page 14, line 17 ¶ | skipping to change at page 16, line 39 ¶ | |||
message | message | |||
HMAC(finished_key, | HMAC(finished_key, | |||
Transcript-Hash(Handshake Context, | Transcript-Hash(Handshake Context, | |||
Certificate*, CertificateVerify*)) | Certificate*, CertificateVerify*)) | |||
* Only included if present. | * Only included if present. | |||
MUST be computed as if each handshake message had been sent as a | MUST be computed as if each handshake message had been sent as a | |||
single fragment following the algorithm described in 4.4.4 of | single fragment following the algorithm described in 4.4.4 of | |||
[I-D.ietf-tls-tls13]. | [RFC8446]. | |||
In a constrained CoAP environment, endpoints can't afford to | In a constrained CoAP environment, endpoints can't 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. The DTLS connection | end endpoints and consumes valuable bandwidth. The DTLS connection | |||
SHOULD remain open for persistent EST connections. For example, an | SHOULD remain open for persistent EST connections. For example, an | |||
EST cacerts request that is followed by a simpleenroll request can | EST cacerts request that is followed by a simpleenroll request can | |||
use the same authenticated DTLS connection. Given that after a | use the same authenticated DTLS connection. Given that after a | |||
successful enrollment, it is more likely that a new EST transaction | successful enrollment, it is more likely that a new EST transaction | |||
will take place after a significant amount of time, the DTLS | will take place after a significant amount of time, the DTLS | |||
connections SHOULD only be kept alive for EST messages that are | connections SHOULD only be kept alive for EST messages that are | |||
relatively close to each other. In some cases, such as NAT | relatively close to each other. In some cases, such as 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.rescorla-tls-dtls-connection-id] negotiates a connection ID that | [I-D.rescorla-tls-dtls-connection-id] negotiates a connection ID that | |||
can eliminate the need for new handshake and its additional cost. | can eliminate the need for new handshake and its additional cost. | |||
7. HTTPS-CoAPS Registrar | 8. HTTPS-CoAPS Registrar | |||
In real-world deployments, the EST server will not always reside | In real-world deployments, the EST server will not always reside | |||
within the CoAP boundary. The EST-server can exist outside the | within the CoAP boundary. The EST-server can exist outside the | |||
constrained network in a non-constrained network that supports TLS/ | constrained network in a non-constrained network that supports TLS/ | |||
HTTP. In such environments EST-coaps is used by the client within | HTTP. In such environments EST-coaps is used by the client within | |||
the CoAP boundary and TLS is used to transport the EST messages | the CoAP boundary and TLS is used to transport the EST messages | |||
outside the CoAP boundary. A Registrar at the edge is required to | outside the CoAP boundary. A Registrar at the edge is required to | |||
operate between the CoAP environment and the external HTTP network. | operate between the CoAP environment and the external HTTP network. | |||
The EST coaps-to-HTTPS Registrar MUST terminate EST-coaps and | The EST coaps-to-HTTPS Registrar MUST terminate EST-coaps and | |||
authenticate the client downstream and initiate EST connections over | authenticate the client downstream and initiate EST connections over | |||
TLS upstream. | TLS upstream. | |||
The Registrar SHOULD authenticate the client downstream and it should | The Registrar SHOULD authenticate the client downstream and it should | |||
be authenticated by the EST server or CA upstream. The Registration | be authenticated by the EST server or CA upstream. The Registration | |||
Authority (re-)creates the secure connection from DTLS to TLS and | Authority (re-)creates the secure connection from DTLS to TLS and | |||
vice versa. A trust relationship SHOULD be pre-established between | vice versa. A trust relationship SHOULD be pre-established between | |||
the Registrar and the EST servers to be able to proxy these | the Registrar and the EST servers to be able to proxy these | |||
connections on behalf of various clients. | connections on behalf of various clients. | |||
When enforcing Proof-of-Possession (POP), the (D)TLS tls-unique value | When enforcing Proof-of-Possession (POP) linking, the (D)TLS tls- | |||
of the (D)TLS session needs to be used to prove that the private key | unique value of the (D)TLS session needs to be used to prove that the | |||
corresponding to the public key is in the possession of and can be | private key corresponding to the public key is in the possession of | |||
used by an end-entity or client. In other words, the CSR the client | and was used to establish the connection by an end-entity or client. | |||
is using needs to include information from the DTLS connection the | To do that the CSR the client is using needs to include information | |||
client establishes with the server. In EST, that information is the | from the DTLS connection the client establishes with the server. In | |||
(D)TLS tls-unique value of the (D)TLS session. In the presence of | EST, that information is the (D)TLS tls-unique value of the (D)TLS | |||
ESTcoaps-to-HTTPS Registrar, the EST-coaps client MUST be | session. In the presence of ESTcoaps-to-HTTPS Registrar, the EST- | |||
authenticated and authorized by the Registrar and the Registrar MUST | coaps client MUST be authenticated and authorized by the Registrar | |||
be authenticated as an EST Registrar client to the EST server. Thus | and the Registrar MUST be authenticated as an EST Registrar client to | |||
the POP information is lost between the EST-coaps client and the EST | the EST server. Thus the POP linking information is lost between the | |||
server. The EST server becomes aware of the presence of an EST | EST-coaps client and the EST server. The EST server becomes aware of | |||
Registrar from its TLS client certificate that includes id-kp-cmcRA | the presence of an EST Registrar from its TLS client certificate that | |||
[RFC6402] extended key usage extension. As explained in Section 3.7 | includes id-kp-cmcRA [RFC6402] extended key usage extension. As | |||
of [RFC7030], the EST server SHOULD apply an authorization policy | explained in Section 3.7 of [RFC7030], the EST server SHOULD apply an | |||
consistent with a Registrar client. For example, it could be | authorization policy consistent with a Registrar client. For | |||
configured to accept POP linking information that does not match the | example, it could be configured to accept POP linking information | |||
current TLS session because the authenticated EST client Registrar | that does not match the current TLS session because the authenticated | |||
has verified this information when acting as an EST server. | EST client Registrar has verified this information when acting as an | |||
EST server. | ||||
For some use cases, clients that leverage server-side key generation | ||||
might prefer for the enrolled keys to be generated by the Registrar | ||||
if the CA does not support server-side key generation. In these | ||||
cases the Registrar MUST support the random number generation using | ||||
proper entropy and is responsible for generating a new CSR signed by | ||||
a new key which will be returned to the client along with the | ||||
certificate from the CA. | ||||
One possible use-case, shown in one figure below, is expected to be | One possible use-case, shown in one figure below, is expected to be | |||
deployed in practice: | deployed in practice: | |||
Constrained Network | Constrained Network | |||
.---------. .----------------------------. | .------. .----------------------------. | |||
| CA | |.--------------------------.| | | CA | |.--------------------------.| | |||
'---------' || || | '------' || || | |||
| || || | | || || | |||
.------. HTTP .-----------------. CoAPS .-----------. || | .------. HTTP .-----------------. CoAPS .-----------. || | |||
| EST |<------->|ESTcoaps-to-HTTPS|<-------->| EST Client| || | | EST |<------->|ESTcoaps-to-HTTPS|<-------->| EST Client| || | |||
|Server|over TLS | Registrar | '-----------' || | |Server|over TLS | Registrar | '-----------' || | |||
'------' '-----------------' || | '------' '-----------------' || | |||
|| || | || || | |||
|'--------------------------'| | |'--------------------------'| | |||
'----------------------------' | '----------------------------' | |||
ESTcoaps-to-HTTPS Registrar at the CoAP boundary. | ESTcoaps-to-HTTPS Registrar at the CoAP boundary. | |||
Table 1 contains the URI mapping between the EST-coaps and EST the | Table 2 contains the URI mapping between the EST-coaps and EST the | |||
Registrar SHOULD adhere to. Section 7 of [RFC8075] and Section 4.3 | Registrar SHOULD adhere to. Section 7 of [RFC8075] and Section 5.4 | |||
define the mapping between EST-coaps and HTTP response codes, that | define the mapping between EST-coaps and HTTP response codes, that | |||
determines how the Registrar translates CoAP response codes from/to | determines how the Registrar translates CoAP response codes from/to | |||
HTTP status codes. The mapping from Content-Type to media type is | HTTP status codes. The mapping from Content-Type to media type is | |||
defined in Section 9. The conversion from CBOR major type 2 to | defined in Section 10. The conversion from CBOR major type 2 to | |||
base64 encoding needs to be done in the Registrar. Conversion is | base64 encoding needs to be done in the Registrar. Conversion is | |||
possible because a TLS link exists between EST-coaps-to-HTTP | possible because a TLS link exists between EST-coaps-to-HTTP | |||
Registrar and EST server and a corresponding DTLS link exists between | Registrar and EST server and a corresponding DTLS link exists between | |||
EST-coaps-to-HTTP Registrar and EST client. | EST-coaps-to-HTTP Registrar and EST client. | |||
Due to fragmentation of large messages into blocks, an EST-coaps-to- | Due to fragmentation of large messages into blocks, an EST-coaps-to- | |||
HTTP Registrar SHOULD reassemble the BLOCKs before translating the | HTTP Registrar MUST reassemble the BLOCKs before translating the | |||
binary content to Base-64, and consecutively relay the message | binary content to Base-64, and consecutively relay the message | |||
upstream. | upstream. | |||
For the discovery of the EST server by the EST client in the coap | For the discovery of the EST server by the EST client in the coap | |||
environment, the EST-coaps-to-HTTP Registrar MUST announce itself | environment, the EST-coaps-to-HTTP Registrar MUST announce itself | |||
according to the rules of Section 5. The available actions of the | according to the rules of Section 6. The available actions of the | |||
Registrars MUST be announced with as many resource paths. The | Registrars MUST be announced with as many resource paths. The | |||
discovery of EST server in the http environment follow the rules | discovery of EST server in the http environment follow the rules | |||
specified in [RFC7030]. | specified in [RFC7030]. | |||
When server-side key generation is used, if the private key is | 9. Parameters | |||
protected using symmetric keys then the Registrar needs to encrypt | ||||
the private key down to the client with one symmetric key and decrypt | ||||
it from the server with another. If no private key encryption takes | ||||
place the Registrar will be able to see the key as it establishes a | ||||
separate connection to the server. In the case of asymmetrically | ||||
encrypted private key, the Registrar may not be able to decrypt it if | ||||
the server encrypted it with a public key that corresponds to a | ||||
private key that belongs to the client. | ||||
8. Parameters | ||||
THis section addresses transmission parameters described in sections | This section addresses transmission parameters described in sections | |||
4.7 and 4.8 of the CoAP document [RFC7252]. | 4.7 and 4.8 of the CoAP document [RFC7252]. | |||
ACK_TIMEOUT | 2 seconds | | ACK_TIMEOUT | 2 seconds | | |||
ACK_RANDOM_FACTOR | 1.5 | | ACK_RANDOM_FACTOR | 1.5 | | |||
MAX_RETRANSMIT | 4 | | MAX_RETRANSMIT | 4 | | |||
NSTART | 1 | | NSTART | 1 | | |||
DEFAULT_LEISURE | 5 seconds | | DEFAULT_LEISURE | 5 seconds | | |||
PROBING_RATE | 1 byte/second | | PROBING_RATE | 1 byte/second | | |||
Figure 4: EST-COAP protocol parameters | Figure 4: EST-COAP protocol parameters | |||
EST does not impose any unique parameters that affect the CoAP | EST does not impose any unique parameters that affect the CoAP | |||
parameters in Table 2 and 3 in the CoAP draft but the ones in CoAP | parameters in Table 2 and 3 in the CoAP draft but the ones in CoAP | |||
could be affecting EST. For example, the processing delay of CAs | could be affecting EST. For example, the processing delay of CAs | |||
could be less then 2s, but in this case they should send a CoAP ACK | could be less then 2s, but in this case they should send a CoAP ACK | |||
every 2s while processing. | every 2s while processing. | |||
The main recommendation, based on experiments using Nexus Certificate | The main recommendation, based on experiments using Nexus Certificate | |||
skipping to change at page 17, line 32 ¶ | skipping to change at page 20, line 7 ¶ | |||
o PROBING_RATE: A parameter which specifies the rate of re-sending | o PROBING_RATE: A parameter which specifies the rate of re-sending | |||
non-confirmable messages. The EST messages are defined to be sent | non-confirmable messages. The EST messages are defined to be sent | |||
as CoAP confirmable messages, hence the PROBING_RATE setting is | as CoAP confirmable messages, hence the PROBING_RATE setting is | |||
not applicable. | not applicable. | |||
Finally, the Table 3 parameters are mainly derived from the more | Finally, the Table 3 parameters are mainly derived from the more | |||
basic Table 2 parameters. If the CoAP implementation allows setting | basic Table 2 parameters. If the CoAP implementation allows setting | |||
them directly, they might need to be updated if the table 2 | them directly, they might need to be updated if the table 2 | |||
parameters are changed. | parameters are changed. | |||
9. IANA Considerations | 10. IANA Considerations | |||
9.1. Content-Format Registry | 10.1. Content-Format Registry | |||
Additions to the sub-registry "CoAP Content-Formats", within the | Additions to the sub-registry "CoAP Content-Formats", within the | |||
"CoRE Parameters" registry are specified in Table 2. These can be | "CoRE Parameters" registry are specified in Table 3. These have been | |||
registered either in the Expert Review range (0-255) or IETF Review | registered temporarily in the Expert Review range (0-255). | |||
range (256-9999). | ||||
+-----------------------------------+----------+------+-------------+ | +--------------------------+--------+-----+-------------------------+ | |||
| Media type | Encoding | ID | Reference | | | HTTP Media-Type | Encodi | ID | Reference | | |||
+-----------------------------------+----------+------+-------------+ | | | ng | | | | |||
| application/pkcs7-mime; smime- | - | TBD1 | [RFC5751] | | +--------------------------+--------+-----+-------------------------+ | |||
| type=server-generated-key | | | [RFC7030] | | | application/pkcs7-mime; | - | 280 | [I-D.ietf-lamps-rfc5751 | | |||
| application/pkcs7-mime; smime- | - | TBD2 | [RFC5751] | | | smime-type=server- | | | -bis] [RFC7030] | | |||
| type=certs-only | | | | | | generated-key | | | | | |||
| application/pkcs7-mime; smime- | - | TBD3 | [RFC5751] | | | application/pkcs7-mime; | - | 281 | [I-D.ietf-lamps-rfc5751 | | |||
| type=CMC-request | | | [RFC5273] | | | smime-type=certs-only | | | -bis] | | |||
| application/pkcs7-mime; smime- | - | TBD4 | [RFC5751] | | | application/pkcs7-mime; | - | 282 | [I-D.ietf-lamps-rfc5751 | | |||
| type=CMC-response | | | [RFC5273] | | | smime-type=CMC-request | | | -bis] [RFC5273] | | |||
| application/pkcs8 | - | TBD5 | [RFC5751] | | | application/pkcs7-mime; | - | 283 | [I-D.ietf-lamps-rfc5751 | | |||
| | | | [RFC5958] | | | smime-type=CMC-response | | | -bis] [RFC5273] | | |||
| application/csrattrs | - | TBD6 | [RFC7030] | | | application/pkcs8 | - | 284 | [I-D.ietf-lamps-rfc5751 | | |||
| | | | [RFC7231] | | | | | | -bis] [RFC5958] | | |||
| application/pkcs10 | - | TBD7 | [RFC5751] | | | application/csrattrs | - | 285 | [RFC7030] [RFC7231] | | |||
| | | | [RFC5967] | | | application/pkcs10 | - | 286 | [I-D.ietf-lamps-rfc5751 | | |||
+-----------------------------------+----------+------+-------------+ | | | | | -bis] [RFC5967] | | |||
+--------------------------+--------+-----+-------------------------+ | ||||
Table 2: New CoAP Content-Formats | Table 3: New CoAP Content-Formats | |||
9.2. Resource Type registry | 10.2. Resource Type registry | |||
Additions to the sub-registry "CoAP Resource Type", within the "CoRE | This memo registers a new Resource Type (rt=) Link Target Attributes | |||
Parameters" registry are needed for a new resource type. | in the "Resource Type (rt=) Link Target Attribute Values" subregistry | |||
under the "Constrained RESTful Environments (CoRE) Parameters" | ||||
registry. | ||||
o rt="ace.est" needs registration with IANA. | o rt="ace.est". This EST resource is used to query and return the | |||
supported EST resources of a CoAP server. | ||||
10. Security Considerations | o rt="ace.est.crts". This resource depicts the support of EST get | |||
cacerts. | ||||
10.1. EST server considerations | o rt="ace.est.sen". This resource depicts the support of EST simple | |||
enroll. | ||||
o rt="ace.est.sren". This resource depicts the support of EST | ||||
simple reenroll. | ||||
o rt="ace.est.att". This resource depicts the support of EST CSR | ||||
attributes. | ||||
o rt="ace.est.skg". This resource depicts the support of EST | ||||
server-side key generation. | ||||
11. Security Considerations | ||||
11.1. EST server considerations | ||||
The security considerations of Section 6 of [RFC7030] are only | The security considerations of Section 6 of [RFC7030] are only | |||
partially valid for the purposes of this document. As HTTP Basic | partially valid for the purposes of this document. As HTTP Basic | |||
Authentication is not supported, the considerations expressed for | Authentication is not supported, the considerations expressed for | |||
using passwords do not apply. | using passwords do not apply. | |||
Given that the client has only limited resources and may not be able | Given that the client has only limited resources and may not be able | |||
to generate sufficiently random keys to encrypt its identity, it is | to generate sufficiently random keys to encrypt its identity, it is | |||
possible that the client uses server generated private/public keys to | possible that the client uses server generated private/public keys to | |||
encrypt its certificate. The transport of these keys is inherently | encrypt its certificate. The transport of these keys is inherently | |||
risky. A full probability analysis MUST be done to establish whether | risky. A full probability analysis MUST be done to establish whether | |||
server side key generation enhances or decreases the probability of | server side key generation enhances or decreases the probability of | |||
identity stealing. | identity stealing. | |||
When a client uses the Implicit TA database for certificate | When a client uses the Implicit TA database for certificate | |||
validation, the client cannot verify that the implicit database can | validation, the client cannot verify that the implicit database can | |||
act as an RA. It is RECOMMENDED that such clients include "Linking | act as an RA. It is RECOMMENDED that such clients include "Linking | |||
Identity and POP Information" Section 6 in requests (to prevent such | Identity and POP Information" Section 7 in requests (to prevent such | |||
requests from being forwarded to a real EST server by a man in the | requests from being forwarded to a real EST server by a man in the | |||
middle). It is RECOMMENDED that the Implicit Trust Anchor database | middle). It is RECOMMENDED that the Implicit Trust Anchor database | |||
used for EST server authentication be carefully managed to reduce the | used for EST server authentication be carefully managed to reduce the | |||
chance of a third-party CA with poor certification practices from | chance of a third-party CA with poor certification practices from | |||
being trusted. Disabling the Implicit Trust Anchor database after | being trusted. Disabling the Implicit Trust Anchor database after | |||
successfully receiving the Distribution of CA certificates response | successfully receiving the Distribution of CA certificates response | |||
(Section 4.1.3 of [RFC7030]) limits any risk to the first DTLS | (Section 4.1.3 of [RFC7030]) limits any risk to the first DTLS | |||
exchange. | exchange. | |||
In accordance with [RFC7030], TLS cipher suites that include | In accordance with [RFC7030], TLS cipher suites that include | |||
skipping to change at page 19, line 37 ¶ | skipping to change at page 22, line 18 ¶ | |||
exclude attributes that a server may want, include attributes that a | exclude attributes that a server may want, include attributes that a | |||
server may not want, and render meaningless other attributes that a | server may not want, and render meaningless other attributes that a | |||
server may want. The CA is expected to be able to enforce policies | server may want. The CA is expected to be able to enforce policies | |||
to recover from improper CSR requests. | to recover from improper CSR requests. | |||
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 | 11.2. HTTPS-CoAPS Registrar considerations | |||
The Registrar proposed in Section 7 must be deployed with care, and | The Registrar proposed in Section 8 must be deployed with care, and | |||
only when the recommended connections are impossible. When POP is | only when the recommended connections are impossible. When POP | |||
used the Registrar terminating the TLS connection establishes a new | linking is used the Registrar terminating the TLS connection | |||
one with the upstream CA. Thus, it is impossible for POP to be | establishes a new one with the upstream CA. Thus, it is impossible | |||
enforced throughout the EST transaction. The EST server could be | for POP linking to be enforced end-to-end for the EST transaction. | |||
configured to accept POP linking information that does not match the | The EST server could be configured to accept POP linking information | |||
current TLS session because the authenticated EST Registrar client | that does not match the current TLS session because the authenticated | |||
has verified this information when acting as an EST server. The | EST Registrar client has verified this information when acting as an | |||
introduction of an EST-coaps-to-HTTP Registrar assumes the client can | EST server. The introduction of an EST-coaps-to-HTTP Registrar | |||
trust the registrar using its implicit or explicit TA database. It | assumes the client can trust the registrar using its implicit or | |||
also assumes the Registrar has a trust relationship with the upstream | explicit TA database. It also assumes the Registrar has a trust | |||
EST server in order to act on behalf of the clients. | relationship with the upstream EST server in order to act on behalf | |||
of the clients. | ||||
In a server-side key generation case, depending on the private key | In a server-side key generation case, if no end-to-end encryption is | |||
encryption method, the Registrar may be able see the private key as | used, the Registrar may be able see the private key as it acts as a | |||
it acts as a man-in-the-middle. Thus, the clients puts its trust on | man-in-the-middle. Thus, the clients puts its trust on the Registrar | |||
the Registrar not exposing the private key. | not exposing the private key. | |||
For some use cases, clients that leverage server-side key generation | Clients that leverage server-side key generation have no knowledge if | |||
might prefer for the enrolled keys to be generated by the Registrar | the Registrar will be generating the keys and enrolling the | |||
if the CA does not support server-side key generation. In these | certificates with the CA or if the CA will be responsible for | |||
cases the Registrar must support the random number generation using | generating the keys, the existence of a Registrar requires the client | |||
proper entropy. Since the client has no knowledge if the Registrar | to put its trust on the registrar doing the right thing if it is | |||
will be generating the keys and enrolling the certificates with the | generating they private keys. | |||
CA or if the CA will be responsible for generating the keys, the | ||||
existence of a Registrar requires the client to put its trust on the | ||||
registrar doing the right thing if it is generating they private | ||||
keys. | ||||
11. 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, | |||
Jim Schaad, Hannes Tschofenig, Julien Vermillard, and John Manuel. | Jim Schaad, Hannes Tschofenig, Julien Vermillard, and John Manuel. | |||
12. Change Log | ||||
-04: | ||||
TBD8 removed from C-F registration, to be done CT draft | ||||
-03: | ||||
Removed observe and simplified long waits | ||||
Repaired content-format specification | ||||
-02: | ||||
Added parameter discussion in section 8 | ||||
Concluded content-format specification using multipart-ct draft | ||||
examples updated | ||||
-01: | ||||
Editorials done. | ||||
Redefinition of proxy to Registrar in Section 7. Explained better | ||||
the role of https-coaps Registrar, instead of "proxy" | ||||
Provide "observe" option examples | ||||
extended block message example. | ||||
inserted new server key generation text in Section 4.5 and | ||||
motivated server key generation. | ||||
Broke down details for DTLS 1.3 | ||||
New media type uses CBOR array for multiple content-format | ||||
payloads | ||||
provided new content format tables | ||||
new media format for IANA | ||||
-00 | ||||
copied from vanderstok-ace-coap-04 | ||||
13. References | 13. References | |||
13.1. Normative References | 13.1. Normative References | |||
[I-D.fossati-core-multipart-ct] | [I-D.ietf-core-multipart-ct] | |||
Bormann, C., "Multipart Content-Format for CoAP", draft- | Fossati, T., Hartke, K., and C. Bormann, "Multipart | |||
fossati-core-multipart-ct-05 (work in progress), June | Content-Format for CoAP", draft-ietf-core-multipart-ct-02 | |||
2018. | (work in progress), August 2018. | |||
[I-D.ietf-tls-tls13] | [I-D.ietf-lamps-rfc5751-bis] | |||
Rescorla, E., "The Transport Layer Security (TLS) Protocol | Schaad, J., Ramsdell, B., and S. Turner, "Secure/ | |||
Version 1.3", draft-ietf-tls-tls13-28 (work in progress), | Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 | |||
March 2018. | Message Specification", draft-ietf-lamps-rfc5751-bis-12 | |||
(work in progress), September 2018. | ||||
[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>. | |||
[RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS | [RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS | |||
(CMC)", RFC 5272, DOI 10.17487/RFC5272, June 2008, | (CMC)", RFC 5272, DOI 10.17487/RFC5272, June 2008, | |||
<https://www.rfc-editor.org/info/rfc5272>. | <https://www.rfc-editor.org/info/rfc5272>. | |||
[RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet | ||||
Mail Extensions (S/MIME) Version 3.2 Message | ||||
Specification", RFC 5751, DOI 10.17487/RFC5751, January | ||||
2010, <https://www.rfc-editor.org/info/rfc5751>. | ||||
[RFC5967] Turner, S., "The application/pkcs10 Media Type", RFC 5967, | [RFC5967] Turner, S., "The application/pkcs10 Media Type", RFC 5967, | |||
DOI 10.17487/RFC5967, August 2010, | DOI 10.17487/RFC5967, August 2010, | |||
<https://www.rfc-editor.org/info/rfc5967>. | <https://www.rfc-editor.org/info/rfc5967>. | |||
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | |||
January 2012, <https://www.rfc-editor.org/info/rfc6347>. | January 2012, <https://www.rfc-editor.org/info/rfc6347>. | |||
[RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | |||
Format", RFC 6690, DOI 10.17487/RFC6690, August 2012, | Format", RFC 6690, DOI 10.17487/RFC6690, August 2012, | |||
skipping to change at page 22, line 47 ¶ | skipping to change at page 24, line 25 ¶ | |||
the Constrained Application Protocol (CoAP)", RFC 7959, | the Constrained Application Protocol (CoAP)", RFC 7959, | |||
DOI 10.17487/RFC7959, August 2016, | DOI 10.17487/RFC7959, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7959>. | <https://www.rfc-editor.org/info/rfc7959>. | |||
[RFC8075] Castellani, A., Loreto, S., Rahman, A., Fossati, T., and | [RFC8075] Castellani, A., Loreto, S., Rahman, A., Fossati, T., and | |||
E. Dijk, "Guidelines for Mapping Implementations: HTTP to | E. Dijk, "Guidelines for Mapping Implementations: HTTP to | |||
the Constrained Application Protocol (CoAP)", RFC 8075, | the Constrained Application Protocol (CoAP)", RFC 8075, | |||
DOI 10.17487/RFC8075, February 2017, | DOI 10.17487/RFC8075, February 2017, | |||
<https://www.rfc-editor.org/info/rfc8075>. | <https://www.rfc-editor.org/info/rfc8075>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
<https://www.rfc-editor.org/info/rfc8446>. | ||||
13.2. Informative References | 13.2. Informative References | |||
[I-D.rescorla-tls-dtls-connection-id] | [I-D.rescorla-tls-dtls-connection-id] | |||
Rescorla, E., Tschofenig, H., Fossati, T., and T. Gondrom, | Rescorla, E., Tschofenig, H., Fossati, T., and T. Gondrom, | |||
"The Datagram Transport Layer Security (DTLS) Connection | "The Datagram Transport Layer Security (DTLS) Connection | |||
Identifier", draft-rescorla-tls-dtls-connection-id-02 | Identifier", draft-rescorla-tls-dtls-connection-id-02 | |||
(work in progress), November 2017. | (work in progress), November 2017. | |||
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
<https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
[RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. | ||||
Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | ||||
for Transport Layer Security (TLS)", RFC 4492, | ||||
DOI 10.17487/RFC4492, May 2006, | ||||
<https://www.rfc-editor.org/info/rfc4492>. | ||||
[RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6 | [RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6 | |||
over Low-Power Wireless Personal Area Networks (6LoWPANs): | over Low-Power Wireless Personal Area Networks (6LoWPANs): | |||
Overview, Assumptions, Problem Statement, and Goals", | Overview, Assumptions, Problem Statement, and Goals", | |||
RFC 4919, DOI 10.17487/RFC4919, August 2007, | RFC 4919, DOI 10.17487/RFC4919, August 2007, | |||
<https://www.rfc-editor.org/info/rfc4919>. | <https://www.rfc-editor.org/info/rfc4919>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
(TLS) Protocol Version 1.2", RFC 5246, | ||||
DOI 10.17487/RFC5246, August 2008, | ||||
<https://www.rfc-editor.org/info/rfc5246>. | ||||
[RFC5273] Schaad, J. and M. Myers, "Certificate Management over CMS | [RFC5273] Schaad, J. and M. Myers, "Certificate Management over CMS | |||
(CMC): Transport Protocols", RFC 5273, | (CMC): Transport Protocols", RFC 5273, | |||
DOI 10.17487/RFC5273, June 2008, | DOI 10.17487/RFC5273, June 2008, | |||
<https://www.rfc-editor.org/info/rfc5273>. | <https://www.rfc-editor.org/info/rfc5273>. | |||
[RFC5705] Rescorla, E., "Keying Material Exporters for Transport | [RFC5705] Rescorla, E., "Keying Material Exporters for Transport | |||
Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, | Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, | |||
March 2010, <https://www.rfc-editor.org/info/rfc5705>. | March 2010, <https://www.rfc-editor.org/info/rfc5705>. | |||
[RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings | [RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings | |||
skipping to change at page 24, line 36 ¶ | skipping to change at page 26, line 5 ¶ | |||
Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
(DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | |||
2015, <https://www.rfc-editor.org/info/rfc7525>. | 2015, <https://www.rfc-editor.org/info/rfc7525>. | |||
[RFC7925] Tschofenig, H., Ed. and T. Fossati, "Transport Layer | [RFC7925] Tschofenig, H., Ed. and T. Fossati, "Transport Layer | |||
Security (TLS) / Datagram Transport Layer Security (DTLS) | Security (TLS) / Datagram Transport Layer Security (DTLS) | |||
Profiles for the Internet of Things", RFC 7925, | Profiles for the Internet of Things", RFC 7925, | |||
DOI 10.17487/RFC7925, July 2016, | DOI 10.17487/RFC7925, July 2016, | |||
<https://www.rfc-editor.org/info/rfc7925>. | <https://www.rfc-editor.org/info/rfc7925>. | |||
[RFC8422] Nir, Y., Josefsson, S., and M. Pegourie-Gonnard, "Elliptic | ||||
Curve Cryptography (ECC) Cipher Suites for Transport Layer | ||||
Security (TLS) Versions 1.2 and Earlier", RFC 8422, | ||||
DOI 10.17487/RFC8422, August 2018, | ||||
<https://www.rfc-editor.org/info/rfc8422>. | ||||
Appendix A. EST messages to EST-coaps | Appendix A. EST messages to EST-coaps | |||
This section takes all examples from Appendix A of [RFC7030], changes | This section takes all examples from Appendix A of [RFC7030], changes | |||
the payload from Base64 to binary and replaces the http headers by | the payload from Base64 to binary and replaces the http headers by | |||
their CoAP equivalents. | their CoAP equivalents. | |||
The corresponding CoAP headers are only shown in Appendix A.1. | The corresponding CoAP headers are only shown in Appendix A.1. | |||
Creating CoAP headers are assumed to be generally known. | Creating CoAP headers are assumed to be generally known. | |||
Binary payload is a CBOR major type 2 (byte array), that is shown | Binary payload is a CBOR major type 2 (byte array), that is shown | |||
skipping to change at page 25, line 46 ¶ | skipping to change at page 27, line 34 ¶ | |||
Option Length = 0x6 | Option Length = 0x6 | |||
Option Value = "crts" | Option Value = "crts" | |||
Option5 (Max-Age) | Option5 (Max-Age) | |||
Option Delta = 0x3 (option nr = 11+3= 14) | Option Delta = 0x3 (option nr = 11+3= 14) | |||
Option Length = 0x1 | Option Length = 0x1 | |||
Option Value = 0x1 (1 minute) | Option Value = 0x1 (1 minute) | |||
Payload = [Empty] | Payload = [Empty] | |||
A 2.05 Content response with a cert in EST-coaps will then be: | A 2.05 Content response with a cert in EST-coaps will then be: | |||
2.05 Content (Content-Format: TBD2) | 2.05 Content (Content-Format: 281) | |||
{payload} | {payload} | |||
with CoAP fields | with CoAP fields | |||
Ver = 1 | Ver = 1 | |||
T = 2 (ACK) | T = 2 (ACK) | |||
Code = 0x45 (2.05 Content) | Code = 0x45 (2.05 Content) | |||
Token = 0x9a (copied by server) | Token = 0x9a (copied by server) | |||
Options | Options | |||
Option1 (Content-Format) | Option1 (Content-Format) | |||
Option Delta = 0xC (option nr =12) | Option Delta = 0xC (option nr =12) | |||
Option Length = 0x2 | Option Length = 0x2 | |||
Option Value = TBD2 (defined in this document) | Option Value = 281 (defined in this document) | |||
Payload = | Payload = | |||
h'30233906092a6206734107028c2a3023260201013100300b06092a6206734107018 | h'30233906092a6206734107028c2a3023260201013100300b06092a6206734107018 | |||
c0c3020bb302063c20102020900a61e75193b7acc0d06092a620673410105050030 | c0c3020bb302063c20102020900a61e75193b7acc0d06092a620673410105050030 | |||
1b31193017060355040313106573744578616d706c654341204f774f301e170d313 | 1b31193017060355040313106573744578616d706c654341204f774f301e170d313 | |||
3303530393033353333315a170d3134303530393033353333315a301b3119301706 | 3303530393033353333315a170d3134303530393033353333315a301b3119301706 | |||
0355040313106573744578616d706c654341204f774f302062300d06092a6206734 | 0355040313106573744578616d706c654341204f774f302062300d06092a6206734 | |||
10101050003204f0030204a022041003a923a2968bae4aae136ca4e2512c5200680 | 10101050003204f0030204a022041003a923a2968bae4aae136ca4e2512c5200680 | |||
358482ac39d6f640e4574e654ea35f48b1e054c5da3372872f7a1e429f4edf39584 | 358482ac39d6f640e4574e654ea35f48b1e054c5da3372872f7a1e429f4edf39584 | |||
32efb2106591d3eb783c1034709f251fc86566bda2d541c792389eac4ec9e181f4b | 32efb2106591d3eb783c1034709f251fc86566bda2d541c792389eac4ec9e181f4b | |||
skipping to change at page 29, line 39 ¶ | skipping to change at page 31, line 27 ¶ | |||
A.2. csrattrs | A.2. csrattrs | |||
In the following valid /csrattrs exchange, the EST-coaps client | In the following valid /csrattrs exchange, the EST-coaps client | |||
authenticates itself with a certificate issued by the connected CA. | authenticates itself with a certificate issued by the connected CA. | |||
The initial DTLS handshake is identical to the enrollment example. | The initial DTLS handshake is identical to the enrollment example. | |||
The IPv6 CoAP GET request looks like: | The IPv6 CoAP GET request looks like: | |||
REQ: | REQ: | |||
GET coaps://[2001:db8::2:1]:61616/est/att | GET coaps://[2001:db8::2:1]:61616/est/att | |||
(Content-Format: TBD6) | (Content-Format: 285) | |||
A 2.05 Content response contains attributes which are relevant for | A 2.05 Content response contains attributes which are relevant for | |||
the authenticated client. In this example, the EST-coaps server | the authenticated client. In this example, the EST-coaps server | |||
returns two attributes that the client can ignore when they are | returns two attributes that the client can ignore when they are | |||
unknown to him. | unknown to him. | |||
A.3. enroll / reenroll | A.3. enroll / reenroll | |||
During the Enroll/Reenroll exchange, the EST-coaps client uses a CSR | During the Enroll/Reenroll exchange, the EST-coaps client uses a CSR | |||
(Content-Format TBD7) request in the POST request payload. | (Content-Format 286) request in the POST request payload. | |||
After verification of the CSR by the server, a 2.05 Content response | After verification of the CSR by the server, a 2.05 Content response | |||
with the issued certificate will be returned to the client. As | with the issued certificate will be returned to the client. As | |||
described in Section 4.4, if the server is not able to provide a | described in Section 5.5, if the server is not able to provide a | |||
response immediately, it sends an empty ACK with response code 5.03 | response immediately, it sends an empty ACK with response code 5.03 | |||
(Service Unavailabel) and the Max-Age option. See Figure 3 for an | (Service Unavailabel) and the Max-Age option. See Figure 3 for an | |||
example exchange. | example exchange. | |||
[EDNOTE: When redoing this example, given that proof of possession | [EDNOTE: When redoing this example, given that POP linking is also | |||
(POP) is also used, make sure it is obvious that the | used, make sure it is obvious that the ChallengePassword attribute in | |||
ChallengePassword attribute in the CSR is valid HMAC output. HMAC- | the CSR is valid HMAC output. HMAC-REAL.] | |||
REAL.] | ||||
POST [2001:db8::2:1]:61616/est/sen | POST [2001:db8::2:1]:61616/est/sen | |||
(token 0x45) | (token 0x45) | |||
(Content-Format: TBD7) | (Content-Format: 286) | |||
h'30208530206d020100301f311d301b0603550403131464656d6f7374657034203 | h'30208530206d020100301f311d301b0603550403131464656d6f7374657034203 | |||
1333638313431333532302062300d06092a620673410101050003204f0030204a | 1333638313431333532302062300d06092a620673410101050003204f0030204a | |||
022041005d9f4dffd3c5949f646a9584367778560950b355c35b8e34726dd3764 | 022041005d9f4dffd3c5949f646a9584367778560950b355c35b8e34726dd3764 | |||
54231734795b4c09b9c6d75d408311307a81f7adef7f5d241f7d5be85620c5d44 | 54231734795b4c09b9c6d75d408311307a81f7adef7f5d241f7d5be85620c5d44 | |||
38bbb4242cf215c167f2ccf36c364ea2618a62f0536576369d6304e6a96877224 | 38bbb4242cf215c167f2ccf36c364ea2618a62f0536576369d6304e6a96877224 | |||
7d86824f079faac7a6f694cfda5b84c42087dc062d462190c525813f210a036a7 | 7d86824f079faac7a6f694cfda5b84c42087dc062d462190c525813f210a036a7 | |||
37b4f30d8891f4b75559fb72752453146332d51c937557716ccec624f5125c3a4 | 37b4f30d8891f4b75559fb72752453146332d51c937557716ccec624f5125c3a4 | |||
447ad3115020048113fef54ad554ee88af09a2583aac9024075113db4990b1786 | 447ad3115020048113fef54ad554ee88af09a2583aac9024075113db4990b1786 | |||
b871691e0f02030100018701f06092a620673410907311213102b72724369722f | b871691e0f02030100018701f06092a620673410907311213102b72724369722f | |||
372b45597535305434300d06092a620673410105050003204100441b40177a3a6 | 372b45597535305434300d06092a620673410105050003204100441b40177a3a6 | |||
5501487735a8ad5d3827a4eaa867013920e2afcda87aa81733c7c0353be47e1bf | 5501487735a8ad5d3827a4eaa867013920e2afcda87aa81733c7c0353be47e1bf | |||
a7cda5176e7ccc6be22ae03498588d5f2de3b143f2b1a6175ec544e8e7625af6b | a7cda5176e7ccc6be22ae03498588d5f2de3b143f2b1a6175ec544e8e7625af6b | |||
836fd4416894c2e55ea99c6606f69075d6d53475d410729aa6d806afbb9986caf | 836fd4416894c2e55ea99c6606f69075d6d53475d410729aa6d806afbb9986caf | |||
7b844b5b3e4545f19071865ada007060cad6db26a592d4a7bda7d586b68110962 | 7b844b5b3e4545f19071865ada007060cad6db26a592d4a7bda7d586b68110962 | |||
17071103407553155cddc75481e272b5ed553a8593fb7e25100a6f7605085dab4 | 17071103407553155cddc75481e272b5ed553a8593fb7e25100a6f7605085dab4 | |||
fc7e0731f0e7fe305703791362d5157e92e6b5c2e3edbcadb40' | fc7e0731f0e7fe305703791362d5157e92e6b5c2e3edbcadb40' | |||
RET: | RET: | |||
(Content-Format: TBD2)(token =0x45) | (Content-Format: 281)(token =0x45) | |||
2.01 Created | 2.01 Created | |||
h'3020f806092a62067341070283293020e50201013100300b06092a62067341070 | h'3020f806092a62067341070283293020e50201013100300b06092a62067341070 | |||
1830b3020c730206fc20102020115300d06092a6206734101050500301b311930 | 1830b3020c730206fc20102020115300d06092a6206734101050500301b311930 | |||
17060355040313106573744578616d706c654341204e774e301e170d313330353 | 17060355040313106573744578616d706c654341204e774e301e170d313330353 | |||
0393233313535335a170d3134303530393233313535335a301f311d301b060355 | 0393233313535335a170d3134303530393233313535335a301f311d301b060355 | |||
0403131464656d6f73746570342031333638313431333532302062300d06092a6 | 0403131464656d6f73746570342031333638313431333532302062300d06092a6 | |||
20673410101050003204f0030204a022041005d9f4dffd3c5949f646a95843677 | 20673410101050003204f0030204a022041005d9f4dffd3c5949f646a95843677 | |||
78560950b355c35b8e34726dd376454231734795b4c09b9c6d75d408311307a81 | 78560950b355c35b8e34726dd376454231734795b4c09b9c6d75d408311307a81 | |||
f7adef7f5d241f7d5be85620c5d4438bbb4242cf215c167f2ccf36c364ea2618a | f7adef7f5d241f7d5be85620c5d4438bbb4242cf215c167f2ccf36c364ea2618a | |||
62f0536576369d6304e6a968772247d86824f079faac7a6f694cfda5b84c42087 | 62f0536576369d6304e6a968772247d86824f079faac7a6f694cfda5b84c42087 | |||
skipping to change at page 32, line 18 ¶ | skipping to change at page 33, line 18 ¶ | |||
authenticates itself using the certificate provided by the connected | authenticates itself using the certificate provided by the connected | |||
CA. | CA. | |||
The initial DTLS handshake is identical to the enrollment example. | The initial DTLS handshake is identical to the enrollment example. | |||
The CoAP GET request looks like: | The CoAP GET request looks like: | |||
[EDNOTE: same comment as HMAC-REAL above applies.] | [EDNOTE: same comment as HMAC-REAL above applies.] | |||
[EDNOTE: Suggestion to have only one example with complete encrypted | [EDNOTE: Suggestion to have only one example with complete encrypted | |||
payload (the short one) and point out the different fields. Update | payload (the short one) and point out the different fields. Update | |||
this example according to the agreed upon solution from Section 4.5. | this example according to the agreed upon solution from Section 5.6. | |||
] | ] | |||
POST coaps://192.0.2.1:8085/est/skg | POST coaps://192.0.2.1:8085/est/skg | |||
(token 0xa5) | (token 0xa5) | |||
(Content-Format: TBD7)(Max-Age=120) | (Content-Format: 286)(Max-Age=120) | |||
h'302081302069020100305b313e303c060355040313357365727665724b6579476 | h'302081302069020100305b313e303c060355040313357365727665724b6579476 | |||
56e2072657120627920636c69656e7420696e2064656d6f207374657020313220 | 56e2072657120627920636c69656e7420696e2064656d6f207374657020313220 | |||
3133363831343139353531193017060355040513105049443a576964676574205 | 3133363831343139353531193017060355040513105049443a576964676574205 | |||
34e3a3130302062300d06092a620673410101050003204f0030204a02204100f4 | 34e3a3130302062300d06092a620673410101050003204f0030204a02204100f4 | |||
dfa6c03f7f2766b23776c333d2c0f9d1a7a6ee36d01499bbe6f075d1e38a57e98 | dfa6c03f7f2766b23776c333d2c0f9d1a7a6ee36d01499bbe6f075d1e38a57e98 | |||
ecc197f51b75228454b7f19652332de5e52e4a974c6ae34e1df80b33f15f47d3b | ecc197f51b75228454b7f19652332de5e52e4a974c6ae34e1df80b33f15f47d3b | |||
cbf76116bb0e4d3e04a9651218a476a13fc186c2a255e4065ff7c271cff104e47 | cbf76116bb0e4d3e04a9651218a476a13fc186c2a255e4065ff7c271cff104e47 | |||
31fad53c22b21a1e5138bf9ad0187314ac39445949a48805392390e78c7659621 | 31fad53c22b21a1e5138bf9ad0187314ac39445949a48805392390e78c7659621 | |||
6d3e61327a534f5ea7721d2b1343c7362b37da502717cfc2475653c7a3860c5f4 | 6d3e61327a534f5ea7721d2b1343c7362b37da502717cfc2475653c7a3860c5f4 | |||
skipping to change at page 32, line 48 ¶ | skipping to change at page 33, line 48 ¶ | |||
4050af497f428189b63655d03a194ef729f101743e5d03fbc6ae1e84486d1300a | 4050af497f428189b63655d03a194ef729f101743e5d03fbc6ae1e84486d1300a | |||
f9288724381909188c851fa9a5059802eb64449f2a3c9e441353d136768da27ff | f9288724381909188c851fa9a5059802eb64449f2a3c9e441353d136768da27ff | |||
4f277651d676a6a7e51931b08f56135a2230891fd184960e1313e7a1a9139ed19 | 4f277651d676a6a7e51931b08f56135a2230891fd184960e1313e7a1a9139ed19 | |||
28196867079a456cd2266cb754a45151b7b1b939e381be333fea61580fe5d25bf | 28196867079a456cd2266cb754a45151b7b1b939e381be333fea61580fe5d25bf | |||
4823dbd2d6a98445b46305c10637e202856611' | 4823dbd2d6a98445b46305c10637e202856611' | |||
RET: | RET: | |||
2.01 Content (Content-Format: TBD8) | 2.01 Content (Content-Format: TBD8) | |||
(token=0xa5) | (token=0xa5) | |||
[TBD5, | [284, | |||
h'30213e020100300d06092a6206734101010500042128302124020100022041003 | h'30213e020100300d06092a6206734101010500042128302124020100022041003 | |||
c0bc2748f2003e3e8ea15f746f2a71e83f585412b92cf6f8e64de02e056153274 | c0bc2748f2003e3e8ea15f746f2a71e83f585412b92cf6f8e64de02e056153274 | |||
dd01c95dd9cff3112aa141774ab655c3d56359c3b3df055294692ed848e7e30a1 | dd01c95dd9cff3112aa141774ab655c3d56359c3b3df055294692ed848e7e30a1 | |||
1bf14e47e0693d93017022b4cdb3e6d40325356152b213c8b535851e681a7074c | 1bf14e47e0693d93017022b4cdb3e6d40325356152b213c8b535851e681a7074c | |||
0c6d2b60e7c32fc0336b28e743eba4e5921074d47195d3c05e43c527526e692d5 | 0c6d2b60e7c32fc0336b28e743eba4e5921074d47195d3c05e43c527526e692d5 | |||
45e562578d2d4b5f2191bff89d3eef0222764a2674637a1f99257216647df6704 | 45e562578d2d4b5f2191bff89d3eef0222764a2674637a1f99257216647df6704 | |||
efec5adbf54dab24231844eb595875795000e673dd6862310a146ad7e31083010 | efec5adbf54dab24231844eb595875795000e673dd6862310a146ad7e31083010 | |||
001022041004e6b3f78b7791d6377f33117c17844531c81111fb8000282816264 | 001022041004e6b3f78b7791d6377f33117c17844531c81111fb8000282816264 | |||
915565bc7c3f3f643b537a2c69140a31c22550fa97e5132c61b74166b68626704 | 915565bc7c3f3f643b537a2c69140a31c22550fa97e5132c61b74166b68626704 | |||
260620333050f510096b6570f5880e7e1c15dc0ca6ce2b5f187e2325da14ab705 | 260620333050f510096b6570f5880e7e1c15dc0ca6ce2b5f187e2325da14ab705 | |||
skipping to change at page 33, line 29 ¶ | skipping to change at page 34, line 29 ¶ | |||
c0844881f791f23b0813ea0921325edd14459d41c8a1593f04316388e40b35fef | c0844881f791f23b0813ea0921325edd14459d41c8a1593f04316388e40b35fef | |||
7d2a195a5930fa54774427ac821eee2c62790d2c17bd192af794c611011506557 | 7d2a195a5930fa54774427ac821eee2c62790d2c17bd192af794c611011506557 | |||
83d4efe22185cbd83368786f2b1e68a5a27067e321066f0217b4b6d7971a3c21a | 83d4efe22185cbd83368786f2b1e68a5a27067e321066f0217b4b6d7971a3c21a | |||
241366b7907187583b511102103369047e5cce0b65012200df5ec697b5827575c | 241366b7907187583b511102103369047e5cce0b65012200df5ec697b5827575c | |||
db6821ff299d6a69574b31ddf0fbe9245ea2f74396c24b3a7565067e41366423b | db6821ff299d6a69574b31ddf0fbe9245ea2f74396c24b3a7565067e41366423b | |||
5bdd2b2a78194094dbe333f493d159b8e07722f2280d48388db7f1c9f0633bb0e | 5bdd2b2a78194094dbe333f493d159b8e07722f2280d48388db7f1c9f0633bb0e | |||
173de2c3aa1f200af535411c7090210401421e2ea217e37312dcc606f453a6634 | 173de2c3aa1f200af535411c7090210401421e2ea217e37312dcc606f453a6634 | |||
f3df4dc31a9e910614406412e70eec9247f10672a500947a64356c015a845a7d1 | f3df4dc31a9e910614406412e70eec9247f10672a500947a64356c015a845a7d1 | |||
50e2e3911a2b3b61070a73247166da10bb45474cc97d1ec2bc392524307f35118 | 50e2e3911a2b3b61070a73247166da10bb45474cc97d1ec2bc392524307f35118 | |||
f917438f607f18181684376e13a39e07', | f917438f607f18181684376e13a39e07', | |||
TBD2, | 281, | |||
h'3020c506092a62067341070283363020f20201013100300b06092a62067341070 | h'3020c506092a62067341070283363020f20201013100300b06092a62067341070 | |||
183183020d430207cc20102020116300d06092a6206734101050500301b311930 | 183183020d430207cc20102020116300d06092a6206734101050500301b311930 | |||
17060355040313106573744578616d706c654341204e774e301e170d313330353 | 17060355040313106573744578616d706c654341204e774e301e170d313330353 | |||
0393233323535365a170d3134303530393233323535365a302c312a3028060355 | 0393233323535365a170d3134303530393233323535365a302c312a3028060355 | |||
0403132173657276657273696465206b65792067656e657261746564207265737 | 0403132173657276657273696465206b65792067656e657261746564207265737 | |||
06f6e7365302062300d06092a620673410101050003204f0030204a022041003c | 06f6e7365302062300d06092a620673410101050003204f0030204a022041003c | |||
0bc2748f2003e3e8ea15f746f2a71e83f585412b92cf6f8e64de02e056153274d | 0bc2748f2003e3e8ea15f746f2a71e83f585412b92cf6f8e64de02e056153274d | |||
d01c95dd9cff3112aa141774ab655c3d56359c3b3df055294692ed848e7e30a11 | d01c95dd9cff3112aa141774ab655c3d56359c3b3df055294692ed848e7e30a11 | |||
bf14e47e0693d93017022b4cdb3e6d40325356152b213c8b535851e681a7074c0 | bf14e47e0693d93017022b4cdb3e6d40325356152b213c8b535851e681a7074c0 | |||
c6d2b60e7c32fc0336b28e743eba4e5921074d47195d3c05e43c527526e692d54 | c6d2b60e7c32fc0336b28e743eba4e5921074d47195d3c05e43c527526e692d54 | |||
skipping to change at page 36, line 13 ¶ | skipping to change at page 37, line 13 ¶ | |||
The header of the first response looks like: | The header of the first response looks like: | |||
Ver = 1 | Ver = 1 | |||
T = 2 (ACK) | T = 2 (ACK) | |||
Code = 0x45 (2.05 Content) | Code = 0x45 (2.05 Content) | |||
Token = 0x9a (copied by server) | Token = 0x9a (copied by server) | |||
Options | Options | |||
Option1 (Content-Format) | Option1 (Content-Format) | |||
Option Delta = 0xC (option nr =12) | Option Delta = 0xC (option nr =12) | |||
Option Length = 0x2 | Option Length = 0x2 | |||
Option Value = TBD2 | Option Value = 281 | |||
Option2 (Block2) | Option2 (Block2) | |||
Option Delta = 0xB (option 23 = 12 + 11) | Option Delta = 0xB (option 23 = 12 + 11) | |||
Option Length = 0x1 | Option Length = 0x1 | |||
Option Value = 0x0A (block number = 0, M=1, SZX=2) | Option Value = 0x0A (block number = 0, M=1, SZX=2) | |||
Payload = | Payload = | |||
h'30233906092a6206734107028c2a3023260201013100300b06092a6206734107018 | h'30233906092a6206734107028c2a3023260201013100300b06092a6206734107018 | |||
c0c3020bb302063c20102020900a61e75193b7acc0d06092a6206734101' | c0c3020bb302063c20102020900a61e75193b7acc0d06092a6206734101' | |||
The second Block2: | The second Block2: | |||
Ver = 1 | Ver = 1 | |||
T = 2 (means ACK) | T = 2 (means ACK) | |||
Code = 0x45 (2.05 Content) | Code = 0x45 (2.05 Content) | |||
Token = 0x9a (copied by server) | Token = 0x9a (copied by server) | |||
Options | Options | |||
Option1 (Content-Format) | Option1 (Content-Format) | |||
Option Delta = 0xC (option nr =12) | Option Delta = 0xC (option nr =12) | |||
Option Length = 0x2 | Option Length = 0x2 | |||
Option Value = TBD2 | Option Value = 281 | |||
Option2 (Block2) | Option2 (Block2) | |||
Option Delta = 0xB (option 23 = 12 + 11) | Option Delta = 0xB (option 23 = 12 + 11) | |||
Option Length = 0x1 | Option Length = 0x1 | |||
Option Value = 0x1A (block number = 1, M=1, SZX=2) | Option Value = 0x1A (block number = 1, M=1, SZX=2) | |||
Payload = | Payload = | |||
h'05050030 | h'05050030 | |||
1b31193017060355040313106573744578616d706c654341204f774f301e170d313 | 1b31193017060355040313106573744578616d706c654341204f774f301e170d313 | |||
3303530393033353333315a170d3134303530393033353333315a' | 3303530393033353333315a170d3134303530393033353333315a' | |||
The 40th and final Block2: | The 40th and final Block2: | |||
Ver = 1 | Ver = 1 | |||
T = 2 (means ACK) | T = 2 (means ACK) | |||
Code = 0x45 (2.05 Content) | Code = 0x45 (2.05 Content) | |||
Token = 0x9a (copied by server) | Token = 0x9a (copied by server) | |||
Options | Options | |||
Option1 (Content-Format) | Option1 (Content-Format) | |||
Option Delta = 0xC (option nr =12) | Option Delta = 0xC (option nr =12) | |||
Option Length = 0x2 | Option Length = 0x2 | |||
Option Value = TBD2 | Option Value = 281 | |||
Option2 (Block2) | Option2 (Block2) | |||
Option Delta = 0xB (option 23 = 12 + 11) | Option Delta = 0xB (option 23 = 12 + 11) | |||
Option Length = 0x2 | Option Length = 0x2 | |||
Option Value = 0x272 (block number = 39, M=0, SZX=2) | Option Value = 0x272 (block number = 39, M=0, SZX=2) | |||
Payload = h'73a30d0c006343116f58403100' | Payload = h'73a30d0c006343116f58403100' | |||
B.2. enroll block example | B.2. enroll block example | |||
In this example the requested block2 size of 256 bytes, required by | In this example the requested block2 size of 256 bytes, required by | |||
the client, is transferred to the server in the very first request | the client, is transferred to the server in the very first request | |||
End of changes. 93 change blocks. | ||||
300 lines changed or deleted | 394 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/ |