Dear ACE and EMU WG members,

In the last exchange of CoAP-EAP we intended to run OSCORE to achieve key confirmation, a protected EAP success and the establishment of the OSCORE security association. It was our understanding that only integrity protection was possible but it is not the case after consulting OSCORE authors. More specifically, the payload and URI-Path with OSCORE are class E they are ciphered (and integrity protected) and, as far as we understand, there is no option, currently, of using a NULL encryption suite to achieve only integrity.

             CoAP                                     CoAP
Sever                                    Client
                               ...
           5) |<----------------------------------------|
              | ACK [0x9869]                            |
              | Token (0xac)                            |
              | 2.01 Created Location-Path [/a/z]       | MSK
              | Payload EAP-X-Resp (n)                  |  |
           6) |---------------------------------------->|  v
              |                CON [0x7811] POST /a/z   |OSCORE
              |                  Token (0xac), OSCORE   |CONTEXT
    MSK       | Payload (EAP success||Session-Lifetime) |(*)
     |     7) |<----------------------------------------|
     v        | ACK [0x7811]                            |
   OSCORE  (*)| Token (0xac), OSCORE                    |
   CONTEXT 8) |---------------------------------------->|
              (*) Protected with OSCORE

As such, CoAP server (left side) could not see the content of the CoAP message (message 7) without deciphering it. Moreover, as the URI-path is also ciphered we cannot point to the right application to process the message to achieve an alternate indication of success.However, the MSK required to create the OSCORE context, which allows deciphering the message, is not available yet (even though eapKeyData variable has content). The reason is that, according to EAP state machine (RFC 4137) Figure 3, the MSK becomes available (eapKeyAvailable = TRUE) when EAP success (rxSuccess or altSuccess from the EAP lower layer) is sent to EAP state machine.

rxSuccess &&
    (reqId == lastId) &&
    (decision != FAIL)
             |
             V
 __________________________
|______SUCCESS_____________|
|if (eapKeyData != NONE)   |
| eapKeyAvailable = TRUE |
|eapSuccess = TRUE         |
|__________________________|
             ^
             |
(altAccept && decision != FAIL) ||
    (idleWhile == 0 &&
     decision == UNCOND_SUCC)


Our proposed solution is to generate an authentication tag in the form of a COSE object that will be used to integrity-protect the payload of message 7 and message 8, allowing the EAP peer to see the EAP success and sending it to the EAP state machine so that, after obtaining the MSK, verifying the authentication tag in message 7 (key confirmation). After message 7 is processed correctly, CoAP server will be able to generate the OSCORE security context and after processing message 8 CoAP client (right entity in the exchange) will create the OSCORE context. From this point CoAP messages between both entities can be protected using OSCORE context.

             CoAP         CoAP
Sever                                    Client
           5) |<----------------------------------------|
              | ACK [0x9869]                            |
              | Token (0xac)                            |
              | 2.01 Created Location-Path [/a/z]       |
              | Payload EAP-X-Resp (n)                  |
           6) |---------------------------------------->|
              |                CON [0x7811] POST /a/z   |
              |                          Token (0xac)   |      MSK
              | Payload (EAP success||Session-Lifetime |     |  |
  MSK         |           || AuthenticationTag) |     v  |
  | |      7) |<----------------------------------------|AUTH_KEY|
| v         | ACK [0x7811]                            | |
|AUTH_KEY   | 2.01 Created Location-Path [/a/z1]      |        |
v           | Token (0xac)                            |        |
OSCORE Context| Payload(AuthenticationTag)              |        V
           8) |---------------------------------------->| OSCORE
Context




Best Regards.
_______________________________________________
Emu mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/emu

Reply via email to