using the delegated coap authentication and authorization
play

Using The Delegated CoAP Authentication and Authorization Framework - PowerPoint PPT Presentation

Using The Delegated CoAP Authentication and Authorization Framework (DCAF) With CBOR Encoded Message Syntax draft-bergmann-ace-dcaf-cose Olaf Bergmann, Stefanie Gerdes { gerdes | bergmann } @tzi.org Presented by Carsten Bormann cabo@tzi.org


  1. Using The Delegated CoAP Authentication and Authorization Framework (DCAF) With CBOR Encoded Message Syntax draft-bergmann-ace-dcaf-cose Olaf Bergmann, Stefanie Gerdes { gerdes | bergmann } @tzi.org Presented by Carsten Bormann cabo@tzi.org IETF-94, ACE Meeting, 2015-11-02 1 / 18

  2. Motivation ◮ draft-gerdes-ace-dcaf-authorize ◮ Secure exchange of authorization information. ◮ Establish DTLS channel between constrained nodes. ◮ Support of class-1 devices (RFC 7228). ◮ Support cross-domain, multi-owner scenarios. ◮ draft-bergmann-ace-dcaf-cose ◮ Re-use light-weight DCAF messaging ◮ Support for application-level security using COSE objects ◮ Enable piggybacked protected content use-case 2 / 18

  3. Observation: DCAF Messages are not tied to DTLS Access Request CAM SAM Access Ticket C S 3 / 18

  4. Nor is the Ticket Data Access Request CAM SAM Face: Access Ticket [server authorization info] nonce [lifetime] Client Information: C S veri fi er (session key) [client authorization info, nonce] [lifetime] 4 / 18

  5. DCAF-Messages can be protected with COSE Example: Access Request POST /client-authorize Content-Format: application/cose+cbor [ h'a1031862', # protected { content_type: application/dcaf+cbor } { alg: AES-CCM-16-64-128 # unprotected nonce: h'd6150b90e6f0eb5be42164062c', # nonce }, h'{encrypted payload w/ tag}', # encrypted DCAF payload # recipients: [ [ h'', # protected (absent for AE algorithm) { alg: A128KW, # unprotected kid: h'383261622e6161733432' # context identifier: "82ab.aas42" }, h'52ff9ed52d...' # encrypted session key ] ] ] 5 / 18

  6. DCAF-Messages can be protected with COSE Example: Access Request POST /client-authorize Content-Format: application/cose+cbor [ h'a1031862', # protected { content_type: application/dcaf+cbor } { alg: AES-CCM-16-64-128 # unprotected nonce: h'd6150b90e6f0eb5be42164062c', # nonce }, h'{encrypted payload w/ tag}', # encrypted DCAF payload # recipients: [ [ h'', # protected (absent for AE algorithm) { alg: A128KW, # unprotected kid: h'383261622e6161733432' # context identifier: "82ab.aas42" }, h'52ff9ed52d...' # encrypted session key ] ] ] 6 / 18

  7. Key Derivation CAM SAM Security Association transfer Ticket Face during setup C S derive session key use session key from Ticket Face and from Veri fi er (direct K S,SAM or derived) 7 / 18

  8. Convey Ticket Face from C to S POST /authorize Content-Format: application/cose+cbor [ h'a1031862', # protected { content_type: application/dcaf+cbor } { alg: HMAC 256/256 }, # unprotected h'{ SAI: [ "/s/tempC" ... }', # DCAF payload wrapped in CBOR binary h'....', # tag: HMAC(options+protected+payload, secret) [ [ h'', {}, h'' ] ] # recipients ] 8 / 18

  9. Convey Ticket Face from C to S POST /authorize Content-Format: application/cose+cbor [ h'a1031862', # protected { content_type: application/dcaf+cbor } { alg: HMAC 256/256 }, # unprotected h'{ SAI: [ "/s/tempC" ... }', # DCAF payload wrapped in CBOR binary h'....', # tag: HMAC(options+protected+payload, secret) [ [ h'', {}, h'' ] ] # recipients ] 9 / 18

  10. Creation of Security Context POST /authorize Content-Format: application/cose+cbor [ h'a1031862', # protected { content_type: application/dcaf+cbor } { alg: HMAC 256/256 }, # unprotected h'{ SAI: [ "/s/tempC" ... }', # DCAF payload wrapped in CBOR binary h'....', # tag: HMAC(options+protected+payload, secret) [ [ h'', {}, h'' ] ] # recipients ] 2.01 Created Content-Format: application/cose+cbor Location-Path: 238dsa29 Authorization: [ h'a1031862', # protected { alg: HMAC 256/256 }, # unprotected h'', # empty payload h'....', # tag: HMAC(options+protected, secret) [ [ h'', {}, h'' ] ] # recipients ] 10 / 18

  11. Creation of Security Context POST /authorize Content-Format: application/cose+cbor [ h'a1031862', # protected { content_type: application/dcaf+cbor } { alg: HMAC 256/256 }, # unprotected h'{ SAI: [ "/s/tempC" ... }', # DCAF payload wrapped in CBOR binary h'....', # tag: HMAC(options+protected+payload, secret) [ [ h'', {}, h'' ] ] # recipients ] used as security context identifier 2.01 Created Content-Format: application/cose+cbor derived from Location-Path: 238dsa29 Ticket Face and Authorization: [ h'a1031862', # protected K S,SAM { alg: HMAC 256/256 }, # unprotected h'', # empty payload new option h'....', # tag: HMAC(options+protected, secret) [ [ h'', {}, h'' ] ] # recipients ] 11 / 18

  12. Usage of Security Context without payload GET /r Authorization: [ h'', # protected (empty) { alg: HMAC 256/256, # unprotected kid: h'3233386473613239' # context identifier: "238dsa29" }, nil, # payload (empty) h'....', # tag: HMAC(options+protected, secret) [ [ h'', {}, h'' ] ] # recipients ] 12 / 18

  13. Usage of Security Context without payload GET /r as returned in Authorization: [ h'', # protected (empty) Location-Path { alg: HMAC 256/256, # unprotected kid: h'3233386473613239' # context identifier: "238dsa29" }, nil, # payload (empty) h'....', # tag: HMAC(options+protected, secret) [ [ h'', {}, h'' ] ] # recipients ] 13 / 18

  14. Usage of Security Context with payload GET /r as returned in Authorization: [ h'', # protected (empty) Location-Path { alg: HMAC 256/256, # unprotected kid: h'3233386473613239' # context identifier: "238dsa29" }, nil, # payload (empty) h'....', # tag: HMAC(options+protected, secret) [ [ h'', {}, h'' ] ] # recipients ] PUT /r Content-Format: application/cose+cbor [ h'a10300', # protected { content_type: text/plain } { alg: HMAC 256/256, # unprotected kid: h'3233386473613239' # context identifier: "238dsa29" }, h'48656c6c6f20576f726c6421', # payload: "Hello World!\n" h'....', # tag: HMAC(options+protected+payload, secret) [ [ h'', {}, h'' ] ] # recipients ] 14 / 18

  15. Usage of Security Context with payload GET /r as returned in Authorization: [ h'', # protected (empty) Location-Path { alg: HMAC 256/256, # unprotected kid: h'3233386473613239' # context identifier: "238dsa29" }, nil, # payload (empty) h'....', # tag: HMAC(options+protected, secret) [ [ h'', {}, h'' ] ] # recipients ] PUT /r Content-Format: application/cose+cbor [ h'a10300', # protected { content_type: text/plain } { alg: HMAC 256/256, # unprotected kid: h'3233386473613239' # context identifier: "238dsa29" }, h'48656c6c6f20576f726c6421', # payload: "Hello World!\n" h'....', # tag: HMAC(options+protected+payload, secret) [ [ h'', {}, h'' ] ] # recipients ] 15 / 18

  16. Open Issues ◮ protection of changeable CoAP options (- > CoRE WG) ◮ describe how to apply key derivation methods from draft-ietf-cose-msg 16 / 18

  17. Summary ◮ DCAF-COSE supports application-level security using COSE objects ◮ use plain COSE as described in draft-ietf-cose-msg ◮ two new CoAP options: ◮ Authorization : convery authorization information ◮ Authorization-Format : allow for future extensions 17 / 18

  18. DCAF-COSE vs. OSCOAP DCAF-COSE OSCOAP invent "Secure Message format" Changes use COSE as is (-06) (COSE-profile in Appendix A) to COSE no changes required invent "COSE Optimizations" that are not COSE- compatible (new message types, remove unprot- ected header, alg ...) use parameter kid (identifies invent new parameter cid (identifies cipher suite, Security keys, alg-specific parameters, different for client auth info and session key) Context and server: "typically identifies the sending party") invent new parameter seq (-> sequence number, use parameter nonce Replay no freshness information) (-> local time) protection Server sends SAM Re-key "out of scope" (Section 7.1) Information Message Signaling use existing payload types implicit, new payload type two new options (not critical due to usual content-format new critical option handling) Handling COSE extension parameter not supported of unknown to signal required options options RFC 7252, 7641 options needs more work in CoRE WG block-wise 18 / 18

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend