Hi Klaus,

Thanks for the thorough review. 

All your issues identified are tracked here 
https://github.com/SanKumar2015/EST-coaps/issues?utf8=%E2%9C%93&q=is%3Aissue+%22Klaus+WGLC%22
 . We tried to address all of them. The fixes we are putting in are spelled out 
in the github issues themselves. The actual latest version of the draft is 
https://github.com/SanKumar2015/EST-coaps/blob/master/draft-ietf-ace-coap-est.txt
 

After proof reading the draft one more time we will upload early next week. 

Below I am answering some of the questions you asked in your review. 

> 4. -- Is this section about the generated certificates or the DTLS connection 
> between the client and the server? If the latter, this section is weird, 
> because RFC 7252 already does define MTI cipher suites and extensions, and I 
> see no reason why an application layered on top of CoAP needs to restate all 
> of that.

This section describes how the (D)TLS profile defined in RFC7925 is used by 
EST-coaps. It was asked by the original ACE co-chair to show conformance with 
ACE profiles.  It touches on the client server authentication, the tunnel 
ciphersuites. It explains how the EST-coaps data exchange is secured thereby 
preventing eavesdropping, tampering, and message forgery. We wanted to spell 
out for implementers which parts of RFC7925 they should take into consideration 
instead of just pointing them to RFC7925 or RFC7252 etc. 

> 4. "The authentication of the EST-coaps client MUST be with a client 
> certificate in the DTLS handshake." -- Why? Why can't a client communicate 
> with a server using any other secure mechanism with client authentication? Or 
> is this just the MTI mechansim?

The issue is that EST mandates HTTP Basic or Digest Auth and/or client cert 
auth. HTTP Auth is not defined for COAP application as far as we know. So, for 
EST-coaps, the only viable authentication method is mutual cert auth. Other 
client auth methods could be defined, but are outside the scope of this draft. 
 
> 5.1. "Arbitrary Labels are usually defined and used by EST CAs in order to 
> route client requests to the appropriate certificate profile." -- I assume 
> that a client needs to construct URIs from the well-known path 
> "/.well-known/est", the Arbitrary Label and one of the suffixes. How does a 
> client determine which Arbitrary Label to use?

That is configured on the client out of band depending on the CA that generates 
the certs. It is outside the scope of EST or EST-coaps. 

> 5.1. "The EST-coaps server URIs, obtained through discovery of the EST-coaps 
> root resource(s) as shown below, are of the form:" -- If a client discovers 
> the URIs from "/.well-known/core" (annotated with "ace.est.crts", 
> "ace.est.sen", etc.), is this table 1 still needed? If not, I would recommend 
> that only the 'rt'  values are standardized ("ace.est.crts", "ace.est.sen", 
> etc.) and all paths are left to the implementation, in accordance with BCP 
> 190.

We intend to require /.well-known URIs so that resource discovery is not 
mandatory for pre-configured client deployments. Discovery is optional when 
non-default URIs are needed to save URI space. Feel free to check the text in 
https://github.com/SanKumar2015/EST-coaps/issues/123 where I edited the 
resource discovery text to make it clearer. 

> 5.1. "Discoverable port numbers MAY be returned in the <href> of the payload 
> [I-D.ietf-core-resource-directory]." -- What does this mean?
> And what does Resource Directory have to do with EST?

We needed a way to be able tell the client that the resource is hosted on 
another port but the reference to  I-D.ietf-core-resource-directory is removed 
after Jim last WGLC We no longer use anchors, just an href in the payload. 
Check out https://github.com/SanKumar2015/EST-coaps/issues/136  

> 5.2. "Table 2 specifies the mandatory-to-implement or optional implementation 
> of the est-coaps functions." -- How does a client discover which functions 
> are implemented?

Client pre-configuration or optionally resource discovery. We added a reference 
to the discovery section. 

> 5.3. "Content-Format TBD287 can be used in place of 281" -- It's a bit 
> difficult to see what TBD287 and 281 mean without scrolling all the way down 
> and scrolling back up. Maybe include the table here to make the section 
> easier to read?

I don't think that is necessary as we are stating that TBD287 and 281 "to carry 
a single certificate instead of a PKCS#7 container in a /crts, /sen, /sren or 
/skg response ". Also there is a reference to the IANA section in the paragraph 
above. 

> 5.7. "After a delay of Max-Age, the client SHOULD resend the identical CSR to 
> the server." -- Just for my understanding: Does the submission of a specific 
> CSR always lead to the same output, or can it happen (e.g., if the client 
> submits an identical CSR weeks or months later) that the client would get a 
> different output?

Submitting the same CSR will likely give the client a different output. The 
reason is that the server cert profile may have changed, but more importantly 
the issued certificate will have a different lifetime and thus signature value. 

> 5.7. "... or the client abandons for other reasons." -- Does the client need 
> to signal in some way when it wants to abandon?

When the server asks the client to come back in x amount of time, it does not 
keep state of the client and thus will not care if he returns or not. So, we 
don't need to require the client to signal that he is giving up. 

> 5.8. "containing a CBOR array with four items Section 5.3" -- Do the two 
> representations (each consisting of two CBOR array items) have to be in a 
> particular order or can they appear in any order?

Any order is fine, since the you can tell what format each representation 
carries. 

> 6. "In a constrained CoAP environment, endpoints can't always afford to 
> establish a DTLS connection for every EST transaction." -- I'm not aware of 
> any requirement that says CoAP clients must establish a new DTLS connection 
> for every request...

EST mandates using a new truststore after a cacerts request which most usually 
means a new TLS connection. We can't always require the client to do that in a 
constrained environment and thus this text. 

> I didn't review the appendices.

Pity, we are sure you could still uncover nits in there. 

Rgs,
Panos



-----Original Message-----
From: Ace <ace-boun...@ietf.org> On Behalf Of Klaus Hartke
Sent: Tuesday, February 12, 2019 12:38 PM
To: Jim Schaad <i...@augustcellars.com>
Cc: ace@ietf.org
Subject: Re: [Ace] WGLC for draft-ietf-ace-coap-est

Jim Schaad wrote:
> The chairs believe that the EST over CoAP draft is nearing the point 
> it should be sent to the IESG for publication.  We are therefore going 
> to have a Working Group Last Call on this document.  WGLC will until 
> 29th of this month.  Please review the document and send comments both 
> positive and negative to the list about its state.

I've performed a quick review of draft-ietf-ace-coap-est-08. Sorry for being 
late to the party.

2. "Therefore, this specification utilizes DTLS [RFC6347], CoAP [RFC7252] and 
UDP instead of TLS [RFC8446], HTTP [RFC7230] and TCP."
-- Is there a technical reason why EST could not be done over CoAP over TCP, 
TLS, WebSockets, or SMS?

I understand that it was fashionable at some point to fork a protocol like 
HTTP, layer some stuff on top of it and call it a new protocol.
However, I would strongly recommend that EST-coaps is presented as an 
application that is strictly layered on top of CoAP and doesn't define its own 
custom protocol stack.

4. -- Is this section about the generated certificates or the DTLS connection 
between the client and the server? If the latter, this section is weird, 
because RFC 7252 already does define MTI cipher suites and extensions, and I 
see no reason why an application layered on top of CoAP needs to restate all of 
that.

4. "The authentication of the EST-coaps client MUST be with a client 
certificate in the DTLS handshake." -- Why? Why can't a client communicate with 
a server using any other secure mechanism with client authentication? Or is 
this just the MTI mechansim?

5.1. The use of the well-known path "/.well-known/est" seems to follow the 
letter of BCP 190 but not the spirit. I don't see any reason why a well-known 
path is needed here. In fact, as the section emphasizes, short paths are 
important and an implementation will there likely want to do the 
"/.well-known/core"-based discovery of URIs. I would recommend that the entire 
use of "/.well-known/est" is dropped.

5.1. "Arbitrary Labels are usually defined and used by EST CAs in order to 
route client requests to the appropriate certificate profile." -- I assume that 
a client needs to construct URIs from the well-known path "/.well-known/est", 
the Arbitrary Label and one of the suffixes. How does a client determine which 
Arbitrary Label to use?

5.1. "The EST-coaps server URIs, obtained through discovery of the EST-coaps 
root resource(s) as shown below, are of the form:" -- If a client discovers the 
URIs from "/.well-known/core" (annotated with "ace.est.crts", "ace.est.sen", 
etc.), is this table 1 still needed? If not, I would recommend that only the 
'rt'  values are standardized ("ace.est.crts", "ace.est.sen", etc.) and all 
paths are left to the implementation, in accordance with BCP 190.

5.1. "Clients and servers MUST support the short resource URIs. The 
corresponding longer URIs from [RFC7030] MAY be supported." -- Does this 
provide any benefit or is it just to annoy implementers? Like, we can have 
short paths, we can have long paths, we cannot decide, so let's have ALL OF 
THEM!

5.1. "In the context of CoAP, the presence and location of (path to) the 
management data are discovered by sending a GET request to "/.well-known/core" 
including a resource type (RT) parameter with the value "ace.est" -- I 
understand that EST defines the operations on the resources labeled with 
annotated with "ace.est.crts", "ace.est.sen", etc. but I don't understand what 
I can do with a resource that is annotated with "ace.est".

5.1. "The first line of the discovery response above MUST be included.
The five consecutive lines after the first MAY be included." -- When would I 
include what?

5.1. "The return of the content types allows the client to choose the most 
appropriate one." -- Does the example actually match what a server returns? 
E.g., does ct="62 280 284 281 TBD287" mean that a server actually returns a 
TBD287 representation or would it always be a 62 (multipart) representation 
that happens to contain a TBD287 representation?

5.1. "Port numbers, not returned in the example, are assumed to be the default 
numbers 5683 and 5684 for CoAP and CoAPS respectively" -- No need to make any 
assumptions. This is exactly what RFC 7252 specifies.
Please don't make any normative statements that just repeat (or
contradict) what RFC 7252 says.

5.1. "Discoverable port numbers MAY be returned in the <href> of the payload 
[I-D.ietf-core-resource-directory]." -- What does this mean?
And what does Resource Directory have to do with EST?

5.1. " The server MUST support the default /.well-known/est server root 
resource and port 5684." -- As said above, I would drop this entirely.

5.1. "Resource discovery is necessary when the IP address of the server is 
unknown to the client." -- Assuming that "resource directory" refers to 
"/.well-known/core"-based discovery of URIs, then this is wrong. If the IP 
address of a server is not known, then a client cannot retrieve the 
"/.well-known/core" of that server.

5.2. "Table 2 specifies the mandatory-to-implement or optional implementation 
of the est-coaps functions." -- How does a client discover which functions are 
implemented?

5.3. "Content-Format TBD287 can be used in place of 281" -- It's a bit 
difficult to see what TBD287 and 281 mean without scrolling all the way down 
and scrolling back up. Maybe include the table here to make the section easier 
to read?

5.3. "If an Accept Option is not included in the request, the client is not 
expressing any preference and the server SHOULD choose format 281.  If the 
preferred Content-Format cannot be returned, the server MUST send a 4.06 (Not 
Acceptable) response, unless another error code takes precedence for the 
response [RFC7252]." -- Please don't make any normative statements that repeat 
(or contradict) what RFC 7252 says.

5.3. "*application/multipart-core*" -- Formatting missing?

5.3. "The collection is encoded as a CBOR array [RFC7049] with an even number 
of elements. ..." -- This is already described in [I-D.ietf-core-multipart-ct]. 
Is there any reason why the text needs to be duplicated?

5.4. "All EST-coaps messages expect a response from the server, thus the client 
MUST send the requests over confirmable CON CoAP messages."
-- The use of confirmable messages for requests is completely unrelated to 
whether a response is expected or not. Also, it is entirely inappropriate for 
an application layered on top of CoAP to mandate the message type.

5.4. "The Ver, TKL, Token, and Message ID values of the CoAP header are not 
affected by EST." -- And it would be entirely inappropriate if they were. So 
I'm not sure what to do with this information.

5.4. "The CoAP Options used are Uri-Host, Uri-Path, Uri-Port, Content-Format, 
Accept and Location-Path." -- Of course, a server must be prepared to receive 
requests that include other kinds of options (such as "ETag" or "If-Match") and 
handle these in accordance to RFC 7252.

5.4. "The CoAP Options used are Uri-Host, Uri-Path, Uri-Port, Content-Format, 
Accept and Location-Path." -- The Block options seem to be missing.

5.4. "The Uri-Host and Uri-Port Options are optional." -- No, these options are 
not optional. They just can be encoded very efficiently (in 0 bytes) if they 
happen to have their default value.

5.4. "They are usually omitted as the DTLS destination and port are 
sufficient." -- No. The default values of the options are the IP destination 
address and UDP port, respectively (in CoAP-over-UDP).

5.4. "Alternatively, if a UDP port to a server is blocked, someone could send 
the DTLS packets to a known open port on the server and use the Uri-Port to 
convey the intended port he is attempting to reach."
-- Where is that coming from? Sounds extremely weird.

5.5. "Response code HTTP 202 Retry-After that existed in EST" -- HTTP doesn't 
have response codes. And there is no status code named "Retry-After" in HTTP.

5.5. "Moreover, if the Content-Format requested in the client Accept Option, is 
not supported the server MUST return a 4.06 (Not Acceptable), unless another 
error code takes precedence for the response." -- Please don't make any 
normative statements that repeat (or contradict) what RFC 7252 says.

5.7. "In particular, a slow server can respond to an EST-coaps enrollment 
request with an empty ACK with code 0.00, before sending the certificate to the 
server after a short delay." -- ...before sending the certificate to the 
*client*?

5.7. "After a delay of Max-Age, the client SHOULD resend the identical CSR to 
the server." -- Just for my understanding: Does the submission of a specific 
CSR always lead to the same output, or can it happen (e.g., if the client 
submits an identical CSR weeks or months later) that the client would get a 
different output?

5.7. "... or the client abandons for other reasons." -- Does the client need to 
signal in some way when it wants to abandon?

5.8. "containing a CBOR array with four items Section 5.3" -- Missing word 
between 'items' and 'Section'

5.8. "containing a CBOR array with four items Section 5.3" -- Do the two 
representations (each consisting of two CBOR array items) have to be in a 
particular order or can they appear in any order?

6. "DTLS Transport Protocol" -- This section seems to have the same topic as 
section 4. Merge section 4 into section 6?

6. "In a constrained CoAP environment, endpoints can't always afford to 
establish a DTLS connection for every EST transaction." -- I'm not aware of any 
requirement that says CoAP clients must establish a new DTLS connection for 
every request...

6. "To alleviate this situation, an EST-coaps DTLS connection MAY remain open 
for sequential EST transactions." -- An application layered on top of CoAP 
shouldn't mandate a particular way in which DTLS is used.

8. "Parameters" -- An application layered on top of CoAP shouldn't mandate CoAP 
congestion control parameters.

10.2. "This EST resource is used to query and return the supported EST 
resources of a CoAP server." -- Is there any specification for how to query and 
return the supported EST resources?

I didn't review the appendices.

Klaus

_______________________________________________
Ace mailing list
Ace@ietf.org
https://www.ietf.org/mailman/listinfo/ace

_______________________________________________
Ace mailing list
Ace@ietf.org
https://www.ietf.org/mailman/listinfo/ace

Reply via email to