Hello,
my name is Pedro Moreno-Sanchez. As this is my first post to this list, let me
give some background about myself. I am the main developer of PANATIKI
(https://www.mdpi.com/1424-8220/13/11/14888
<https://www.mdpi.com/1424-8220/13/11/14888>), a lightweight version of PANA as
EAP Lower Layer intended for constrained devices. Moreover, I have also
implemented the integration mechanism of PANA and PCP as described here
https://tools.ietf.org/html/draft-ohba-pcp-pana-04
<https://tools.ietf.org/html/draft-ohba-pcp-pana-04> and discussed in the
IETF84 PCP WG (https://www.ietf.org/proceedings/84/slides/slides-84-pcp-3.pdf
<https://www.ietf.org/proceedings/84/slides/slides-84-pcp-3.pdf>)
I have been recently informed about the call for adoption of the draft
(https://tools.ietf.org/html/draft-marin-ace-wg-coap-eap-07
<https://tools.ietf.org/html/draft-marin-ace-wg-coap-eap-07>)
and I am writing this email to express my opinion that I believe this document
should be adopted. I base this opinion in the following three points:
* I have analyzed the technical details of the draft. I attach my analysis at
the end of this email. I find the specification technically correct and the
rationale behind the architecture design well founded. Moreover, the
specification has taken special consideration on maintaining the requirements
of an EAP Lower Layer.
* EAP is the standard that has been successfully and widely used for
authentication in several other scenarios such as 802.1X. Therefore, IMHO
having EAP-based authentication in ACE is definitely interesting.
* From my experience as the main developer of PANATIKI, the approach of taking
a general purpose EAP Lower Layer like PANA (let alone a more complex one) and
“prune” it to make it compatible to constrained devices is a rather challenging
task and error prone. The design of CoAP as EAP Lower Layer in this document
not only has the advantages that (i) CoAP is already suitable for constrained
devices and (ii) it fulfills the requirements as EAP Lower Layer; but also the
fact that the design has been carefully thought with performance in mind and it
already contains the performance enhancements that we discovered while building
PANATIKI.
Best regards,
Pedro Moreno-Sanchez.
===========
======
* Architecture: I find the design of the architecture one of the most
interesting points and yet well-motivated ones. At a first glance, one would
imagine that EAP peer would be colocated with CoAP client whereas EAP
authentication would be colocated with CoAP server. However, indeed the fact
that EAP requests flow from the EAP authenticator highly motivates to co-locate
it with the CoAP client. Then the EAP peer and CoAP server will be naturally in
charge of processing incoming requests and create the corresponding responses.
Perhaps, the only aspect that I am not fully convinced about this architecture
is that it seems to be the case that the CoAP server needs to discover the CoAP
client to start the authentication in the first place. If this is the case, the
CoAP client would need to implement some kind of listening process where
“discovery requests” are sent, perhaps to a certain IP address and port that
need to be announced (and standardize?) before, etc. Moreover, I am wondering
whether such behavior/functionality is part of the standardize description of
CoAP in the first place. In any case, it would be interesting that authors
expand on how the CoAP Server discovers the CoAP client and what are the
possible modifications/consequences of the design of that part.
* Data protected with OSCORE (or DTLS) context: The OSCORE Context is used to
protect the exchanged data earlier than I was expecting. In particular, the EAP
Success message is already protected with the key material derived from the
authentication. This means that the EAP peer should have been able to derive
the MSK before the arrival of message 7 so that it is able to authenticate such
message. This situation leads to two questions: (i) Is the EAP success also
protected when an EAP Lower Layer other than CoAP is used?; and (ii) is it
possible that the EAP Success (and thus the corresponding ACK can be omitted)?
In particular, with regards to the latter question, it seems to me that after
message 6 in Figure 2, whenever the EAP peer receives a message that is
protected by the OSCORE context, the EAP peer knows that the authentication was
successful if it can successfully verify the authenticated incoming message. If
that is the case, then the message 6 can be used to send directly authenticated
application data instead of the EAP Success. In any case, it would be
interesting that the authors elaborate in this aspect of their design.
* Comments regarding the use case scenario (Section 5): I find this section
highly useful and enlightening to bring the proposed design and methodology to
a real world use case. I have identified two points that I believe can be
expanded by the authors to further improve this section. First, at the end of
this section, you mention that ACE framework can be used to let an
authenticated node A access information stored at another authenticated node B
assuming that both A and B have been successfully authenticated by a controller
C. As it is written now, it is unclear whether (a) the ACE framework also
defined how A and B are authenticated in the first place; or (b) the
authentication of A and B is considered out of the scope in the ACE framework
and hence the design of CoAP-EAP would be complementary there. I assume the
answer would be b, yet would be interesting to clarify it.
Second, you list a node D in the list of entities involved in the use case
scenario but it is never mentioned afterwards. I think adding a non-constrained
device like D in the description of your use case scenario is highly
interesting because allows to give answer to several interesting questions that
arise at this point: Given that D is non-constrained, one could imagine that D
could use an EAP Lower Layer other than CoAP, requiring thus that EAP
authenticator runs several EAP Lower layers. Is that a possibility? Or would
you require that all EAP peers within the same domain use the same lower layer?
Is it possible to use ACE across nodes that use a different EAP method and/or
EAP lower layer (e.g., nodes B and D in your case)?
* Seqnum option: Given the restrictions that you put over the CoAP exchange
(e.g., a single session, lockable steps, etc.), I was wondering whether it
would be possible that you get rid of this Seqnum option and use the token for
the purpose of ordering messages. While tokens are usually to distinguish
across sessions, given that you have a single session/process per EAP peer, it
might be possible that you use a different token for each request/response
exchange (similar to the message id approach that you also mention) in order to
order the messages. If this is possible, you might avoid the Seqnum in the
first place, which requires more bytes.
Other minor comments:
* Sequence number: The sequence number has been designed such that it is
initially drawn uniformly at random and then monotonically incremented by 1
after each request/response interaction. One could imagine that it is possible
that there exists situations where such sequence number overflows, that is, it
goes over the maximum number possible to represent with the number of bytes
assigned to it. I imagine that the solution then is to do rounding (i.e., go to
zero and continue from there), similar to what is done in other protocols. Yet,
it would be interesting that the authors specify this behavior.
* OSCORE vs DTLS_PSK: Throughout the document, you propose two different
security context, namely OSCORE and DTLS_PSK. While this is undoubtedly
beneficial for the interoperability of the proposed work, it would be
interesting if the authors could expand on: (i) the pros and cons for each of
the two approaches; and (ii) is there a set of basic yet mandatory guidelines
that one should follow to design its own security context (e.g., say based on
HIP) from the key material exported after the CoAP-EAP authentication?
* Section 6.1: You have not discussed how CoAP as EAP lower-layer handles
possible duplications of messages (if supported at all as it is not required
for lower layers).
* Section A.1: You mention that DTLS_PSK will have 16 bytes. Why is that? Is
this a strong requirement from DTLS itself? Otherwise, it seems to me a too
short key. In fact, you suggest that the key that needs to be derived within
the OSCORE security context should have 32 bytes instead.
Editorial comments:
- page 1: aganist a AAA —> against an AAA
- page 3: "can be used as a constrained link-layer independent EAP lower-layer”
—> This sentence is hard to parse. In particular, link-layer independent of
what?
- page 3: OSCORE is mentioned for the first time without any reference.
- page 10: perform an CoAP-EAP —> perform a CoAP-EAP
- page 14: suit —> suite
- page 15: you mention EMSK for the first time in the document without further
reference.
_______________________________________________
Ace mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/ace