Hi Malisa:

Thanks a lot of for this analysis. I would like to make some clarifications 
regarding the option 1.C/D. related with draft-marin-ace-wg-coap-eap-02 and 
other aspects.

1) EAP-PSK is just an example in our draft (maybe it is not clear in the 
current version so we will try to clarify it). So saying EAP-PSK over CoAP is 
not accurate. It is just EAP over CoAP. You can use any EAP method you want. In 
fact the usage of EAP is to give flexibility for the authentication mechanism. 
Moreover it opens the door to scalability. 

2) The establishment of DTLS is required if you want to protect CoAP messages 
(e.g. for other services) after the EAP authentication happens. In fact EAP 
over CoAP goes through unprotected port. The question is: do you need to 
protect CoAP messages after the bootstrapping happens? If yes any solution will 
require to DTLS unless you protect the CoAP messages at application level (like 
option 1.D) or if the link-layer is protected with the keys generated after EAP 
authentication.

Having said that I have some additional comments inline.

> El 22 oct 2015, a las 14:55, Malisa Vucinic <malisa.vuci...@imag.fr> escribió:
> 
> Dear all,
> 
> Here is an attempt to summarize the recent discussions regarding the problem 
> of 6tisch join and provisioning of K2 to JN. See bellow. Implementation 
> components that can be reused are enclosed in the parentheses. Traffic load 
> is expressed as the number of messages, rather than number of exchanges, as 
> this better reflects the nature of the link we will be using: a single shared 
> communication slot carrying ~100 bytes of data (cf. 
> draft-ietf-6tisch-minimal).
> 
> It seems there are three main directions the WG can take: 1) EAP over foo; 2) 
> DTLS; 3) 6tisch-specific solution. 
> 
> Option 1 seems the most extensible and generic but I dislike the fact that 
> there would be a lot of join-specific code. We are already having 
> difficulties fitting the stack into certain IoT MCUs due to the flash 
> constraints and having 2-3 protocol implementations that are used only once 
> certainly does not help. Cases 1.C and 1.D that seem to require less 
> join-specific code have either prohibitively large traffic load (1.C) or rely 
> on session security that is not standardized, in which case a 6tisch-specific 
> solution with 4x improvement factor in traffic would IMO be a better option.

Here you can find a study about the usage of PANA in constrained devices (in 
particular, Contiki OS).

http://www.mdpi.com/1424-8220/13/11/14888

We are doing same study related with EAP over CoAP, with implementations we 
have of our service for Contiki OS and mbed. In fact, EAP over CoAP was born 
precisely for your comment ("having 2-3 protocol implementations that are used 
only once certainly does not help”). EAP over CoAP re-use source code related 
with CoAP (that is assumed to be used for other purposes as well) and it only 
adds EAP, which is not too complex.

> 
> Option 2 leverages the DTLS implementation that is in any case mandated by 
> CoAP so it does not necessitate much additional implementation effort,

Thus, we assume in this option we have CoAP anyway, right?. Then, EAP over CoAP 
assumes that you can built an authentication/bootstrapping service based on 
CoAP.

> other than the JA relay application. Another advantage here is that one can 
> pass from PSK to certificate-based authentication transparently.

This advantage is also possible in EAP-based solutions for, precisely, the 
usage of EAP.

> The traffic load remains a significant concern. See 
> http://arxiv.org/pdf/1507.05810 for some figures on duration of DTLS PSK 
> handshake with *dedicated* cells (e.g. ~5 seconds per hop per JN with 
> 101-long slotframe, and this is in the *best* case tripled with many nodes 
> joining and slotted Aloha behavior).

This is a great paper indeed. That is why I think it might be worthy 
considering protection at application level (maybe OSCOAP)

> 
> Option 3 would imply designing a minimal 6tisch solution to provision K2, 
> compatible with the existing 6tisch architecture and mechanisms (6top, 
> CoAPie). In short, we discussed a simple protocol where JCE keeps track of 
> JN-specific join counter used for replay detection, that JN advertizes in the 
> hello message including information like its EUI-64, random challenge for 
> JCE, all protected with PSK. The JCE sends K2 encrypted with  PSK and 
> transfers that over the network to JN. Advantage of this direction would be 
> minimized traffic load (3 messages vs 11+) and possibly implementation 
> requirements as we can do this extending 6top and re-using CBOR 
> implementation. A disadvantage would be the fact that we are not using a 
> standardized solution.

Sorry for not knowing the details of this option, but I understand that JN is 
authenticated with the PSK, right?. 

> 
> It would be useful if we could discuss some of these aspects tomorrow during 
> the call. Also, it would be great if people with benchmarks on join duration 
> without any security would post these to the list. 
> 
> Regards,
> Mališa

So some final comments to your analysis… below...

> 
> Option 1: EAP-based
> ———————————
> Case 1.A: IKEv2 over 802.15.9 + EAP (e.g. -AKA) 
> (http://mailarchive.ietf.org/arch/msg/6tisch/fPmwtSOL-v0FDNcU3sWwHAdeyTs) 
> - Traffic load: 6 messages between JN-JA, 4 messages between JA-JCE
> - Implementation requirements: minimal IKEv2, 802.15.9, EAP-AKA
> - Notes: JA takes active role during join, could be useful for DoS protection 
> with certificate-based authentication
> 
> Case 1.B: EAP over PANA
> - Traffic load: minimum 4 messages for PANA + [ 5 messages for EAP-AKA, 15+ 
> messages for EAP-TLS ] + 1 packet to provision K2
> - Implementation requirements: PANA, EAP method
> - Notes: JA is a passive relay

Btw, Zigbee IP already uses this option.
> 
> Case 1.C. EAP-PSK over CoAP + DTLS (e.g. draft-marin-ace-wg-coap-eap-02)
> - Traffic load: 10 messages between JN-JCE to establish a unique session key 
> + 11 messages for DTLS to establish a session with the established key + 1 
> packet to provision K2
> - Implementation requirements: EAP-PSK, (DTLS)
> - Notes: JA is a passive relay
> 
> Case 1.D. EAP-PSK over CoAP + custom protection of CoAP header/payload with 
> the generated key
> - Traffic load: 10 messages between JN-JCE to establish a unique session key 
> + 1 packet to provision K2
> - Implementation requirements: EAP-PSK, custom CoAP security extension
> - Notes: JA is a passive relay


In 1.C/D the idea of using CoAP in EAP over CoAP is to re-use source code and 
providing shorter messages to transport EAP. As I said, adding DTLS is 
necessary if you want to protect further CoAP messages after the bootstrapping 
unless you want to use protection at CoAP level (e.g. OSCOAP) or link-layer 
protection that is bootstrapped after the EAP authentication.

Btw, I am thinking that a little re-design of EAP over CoAP service with a 
proper EAP method could allow to generate a fresh pre-shared key in less 
messages. Nevertheless, this is just a preliminary thought that needs to be 
discussed of course.

> 
> Option 2: DTLS-based
> ———————————
> Case 2.A: JN is a DTLS client
> - Traffic load: 11 messages between JN-JCE + 1 packet to communicate K2 over 
> the established session
> - Implementation requirements: (DTLS), relay application
> - Notes: JA is a passive relay

And considering protection at application level to avoid DTLS?

> 
> Option 3: 6TiSCH-specific 
> ———————————
> Case 3.A: Explicit provisioning of K2 using 6top+CoAP, protected with JN’s 
> PSK (e.g. 
> http://mailarchive.ietf.org/arch/msg/6tisch/Obm-_ehdAeGXKXOEwzpdeB5diq8)
> - Traffic load: 3 messages between JN - JCE
> - Implementation requirements: (CBOR) + COSE
> - Notes: JA is a passive relay

I still need to check more carefully this link (the flow is difficult to read) 
but if we assume that a PSK is used as credential for the JN there are several 
handshake protocols in the literature (e.g. AKEP2, HIP-DEX,...) that may be 
adapted for this case. In any case, somehow that is not “bootstrapping" to me 
because it is just assuming you configure “manually” a PSK and run the 
handshake protocol. Although I might be wrong.

Let’s talk tomorrow in the call if time is available. 

Best Regards and thank you again!

> 
> 
> _______________________________________________
> 6tisch mailing list
> 6tisch@ietf.org
> https://www.ietf.org/mailman/listinfo/6tisch

-------------------------------------------------------
Rafael Marin Lopez, PhD
Dept. Information and Communications Engineering (DIIC)
Faculty of Computer Science-University of Murcia
30100 Murcia - Spain
Telf: +34868888501 Fax: +34868884151 e-mail: r...@um.es
-------------------------------------------------------




_______________________________________________
6tisch mailing list
6tisch@ietf.org
https://www.ietf.org/mailman/listinfo/6tisch

Reply via email to