Hi Alan,

Thank you very much for your time to review the document and for the clarifications.


On 5/7/23 15:36, Alan DeKok wrote:
On Jul 5, 2023, at 4:09 AM, Eliot Lear via Datatracker <nore...@ietf.org> wrote:
3.  The terminology is a problem.  On the one hand, some people like
to use the terms "IoT Device" and "Controller".  In the EAP world,
this term is meaningless.  We use "peer", "authenticator", and
"authentication server".  I would suggest that those implementing this
work will be from the EAP world, and that this document will be far
more accessible to them if those terms are used.
   I agree.  My $0.02 is that there are very few stand-alone EAP authentication 
libraries suitable for integration into CoAP.  I suspect that most use-cases 
will proxy the EAP packets to an AAA server.

   Some more nit-picks on text:

Section 2:

The IoT device will act as a CoAP server for this service, and the EAP 
authenticator as a CoAP client. The rationale behind this decision, as expanded 
later, is that EAP requests go always from the EAP server to the EAP peer. 
Accordingly, the EAP responses go from the EAP peer to the EAP server.
   I don't know that this issue of "who gets the request or response" matters.  
In RADIUS, the Access-Request packet contains the EAP response.  That's fine.

   i.e. the EAP layer shouldn't change the role of the parties in a CoAP 
conversation.  If the IoT device is normally the CoAP client, then just keep it 
as the CoAP client for EAP.  it's fine.


This design choice was part of an initial discussion, and we considered this possibility.

https://mailarchive.ietf.org/arch/msg/ace/5PkNSpcWm-5U9bTRGwB96Uk7xcc/

The reasons for this choice were, basically, 1) reduce the complexity of the EAP client, leaving the responsibility for re-transmitting EAP requests to the CoAP client. 2) Reduce the complexity of the security association exchange.

In any case, we understand that having an initial message as a trigger is not new. We have a similar case for EAPOL-Start. In the CoAP-EAP case is the simplest message possible, without having to confirm nor acknowledge the first message.


It is worth noting that the CoAP client (EAP authenticator) MAY interact with a 
backend AAA infrastructure when EAP pass-through mode is used, which will place 
the EAP server in the AAA server that contains the information required to 
authenticate the EAP peer.
   When the EAP packets are proxied to an AAA server, the keying material comes 
back in the attributes MS-MPPE-(Send/Recv)-Key.  RFC 5216 Section 2.3 defines 
those attributes as containing the MSK.  This document should explain that 
connection, reference 5216, and explain how to derive the MSK from the MS-MPPE 
keys.

   Reading the document shows an unclear discussion of what is meant by "keying 
material". Perhaps the text could be updated to explain this:

EAP methods transported in CoAP MUST generate cryptographic material [RFC5247] 
in an MSK for this specification.  The MSK is used as the basis for further 
cryptographic derivations.
   And later:

For this specification, the EAP method MUST be able to derive keying material 
(MSK).


Thank you for this comment, we will review the explanation of the key derivation in the document.


   Section 3:

In CoAP-EAP, the IoT device (EAP peer/CoAP server) will only have one 
authentication session with a specific Controller (EAP authenticator/ CoAP 
client) and it will not process any other EAP authentication in parallel (with 
the same Controller)
   It may be worth noting that the controller may have parallel EAP sessions 
with multiple IoT devices.  Just to make it very clear that the limitation on 
the IoT device is not a limitation on the Controller.

Yes, you are correct. This should be better explained, thank you.


Section 3.2:

The message also includes a URI in the payload of the message to indicate to 
what resource (e.g. '/a/x'
   It would be good to give guidance here on choosing the URI.  The examples of "a/x" and 
then "a/y" are generic, but could give insufficient guidance to implementors.

   Perhaps it is worth suggesting that the implementors choose a URI with a 
common format, which can aid with implementation and administrator debugging.

   The resource could be "path/eap/counter".  e.g.

* "path" is some local path on the device to make the path unique.  This could 
be omitted if desired.

* "eap" îs the name which indicates that the URI is for the EAP peer.  This has 
no meaning for the protocol, but helps with debugging.

* "counter' which is an incrementing unique number for every packet.

   So the examples can use "path/eap/1", and then "path/eap/2", etc.

   Without such a suggestion, there is a temptation for implementors to come up 
with their own schemes, which are likely to be worse that this one.   e.g. just 
using the same URI every time, or deriving the URI from some kind of hash, etc.



Thank you for this suggestion, we will incorporate this clarification as well to the document.




   Section 3.3:

When the CoAP-EAP state is close to expiring, the IoT device MAY want to start 
a new authentication process
   Nit: I don't think MAY needs to be uppercase here.


Thank you, we will lowercase it.



   Section 6.1:

Minimum MTU. Lower layers need to provide an EAP MTU size of 1020 octets or 
greater. CoAP assumes an upper bound of 1024 for its payload which covers the 
requirements of EAP
To address Eliots comments this should be fine.  But it should be highlighted 
more strongly.

   I would also suggest adding a note that when EAP is proxied over an AAA 
framework, the Access-Request packets MUST contain a Framed-MTU attribute with 
value 1024.  This attribute signals the AAA server that it should limit is 
responses to 1024 octets.

   If the Framed-MTU attribute isn't included, then the AAA server could assume 
that the EAP packets are going over Ethernet, and assume an MTU ion 1536 
octets.  Which will cause this specification to silently break.

   It's also worth discussing AAA issues in more detail.  e.g. what to do when 
the AAA server doesn't reply.  Does the Controller silently drop the EAP 
session?  Does it send a notification to the IoT device that this has happened?


Thank you for the clarification and for bringing the discussion about the possible issues. We will address them as well in the next version of the document.

Regarding the behavior of the Controller in case the AAA server does not answer, we try to cover the situation in the section 3.5.2. Non-responding endpoint, but we will add the AAA not responding to the possible reasons why the devices may become non-responding.


Section 6.2:

On the other hand, when taking into account the EAP method overload, this 
reduction is less but still significant if the EAP method generates large EAP 
messages. If the EAP method is very taxing, the impact of the reduction in the 
size of the EAP lower layer is less significant.
   I'm not clear what this discussion means.


Sorry about this, we should re-write this for clarity.

The basic idea here was to relativize the EAP lower layer overhead. If the EAP method has a lot and very large messages, using an EAP lower layer that saves 10-40 bytes may not matter very much. On the other hand if EAP methods have few and short messages, this becomes more relevant. This becomes more relevant in very constrained networks.



   Given that the EAP packets can be forced to be no more than 1024 octets, the 
only difference between EAP methods is the number of packets exchanged, and the 
total amount of data exchanged.  Current EAP supplicants and authenticators 
limit the total number of exchanges to 50 or 100, depending on various factors.

   Is there a similar limit for CoAP?  i.e. will CoAP go fail if there is 64K 
of data being exchanged in EAP?


We tried not to go there in the document, just to acknowledge that CoAP fits the requirements for an EAP lower layer. In any case, EAP messages larger than 1024 could be sent using CoAP Block-wise transfer, that will seamlessly take care of sending payloads larger than CoAP Minimum MTU.



This leads to the conclusion that possible next steps in this field could be 
designing new EAP methods that can be better adapted to the requirements of IoT 
devices and networks.
   I'm wary of such a suggestion.  EAP is widely used outside of CoAP.  Adding 
new EAP methods also means that those EAP methods can be used in other 
circumstances, which don't have the transport security / reliability provided 
by CoAP.

   Other EAP methods which may be suitable for CoAP include EAP-PWD, which is 
also small and has few exchanged.  Even EAP-TLS may not be that bad, as EAP-TLS 
provides for PSK authentication.


You are correct. we will remove this statement from the document to avoid limiting the applicability.



   Even when certificates are used, the total packet exchanges are ~18 rounds, 
and maybe 20K or so.  Session resumption is reduces that to maybe 4 rounds, and 
a few K of data.

   Would that be too much for this use-case?


This should be fine, as with CoAP block-wise transfers would manage this.


Thank you.



   Alan DeKok.


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

Reply via email to