Status Object Security for Constrained RESTful Environments (OSCORE)

Author: Jaime Jiménez


Summary draft-ietf-core-object-security

Latest version https://tools.ietf.org/html/draft-ietf-core-object-security-08

In current CoAP environments, the DTLS security association is terminate at the proxies, making proxies capable of accessing and manipulating any part of the message payload and metadata.

OSCoRE protects CoAP (or HTTP) request-responses end-to-end across any intermediary nodes (i.e. proxies and translators). OSCORE supports the main CoRE RFCS (RFC7252, RFC7641, RFC7959, RFC7967, and RFC8132).

OSCORE essentially protects the RESTful interactions; the request method, the requested resource, the message payload, etc. OSCORE does neither protect the CoAP Messaging Layer nor the CoAP Token which may change between the endpoints. Additionally, since the message formats for CoAP/UDP and CoAP/TCP differ only in the messaging layer, OSCoRE can be used on both reliable and unreliable transports.

+-----------------------------------+
|            Application            |
+-----------------------------------+
+-----------------------------------+  \
|  Requests / Responses / Signaling |  |
|-----------------------------------|  |
|               OSCORE              |  | CoAP
|-----------------------------------|  |
| Messaging Layer / Message Framing |  |
+-----------------------------------+  /
+-----------------------------------+
|          UDP / TCP / ...          |
+-----------------------------------+  

OSCORE requires that client and server establish a shared security context used to process the COSE objects. OSCORE uses COSE with an Authenticated Encryption with Additional Data (AEAD) algorithm for protecting message data between a client and a server.

OSCoRE also defines a security option that indicates that the CoAP message uses OSCORE.

+-----+---+---+---+---+-----------------+--------+--------+---------+
| No. | C | U | N | R | Name            | Format | Length | Default |
+-----+---+---+---+---+-----------------+--------+--------+---------+
| TBD | x |   |   |   | Object-Security |  (*)   | 0-255  | (none)  |
+-----+---+---+---+---+-----------------+--------+--------+---------+

The CoAP Payload is always encrypted in a COSE object.

As mentioned before, OSCORE encrypts some of the CoAP header fields. However some of them are required to be read by proxies, thus cannot be protected end-to-end between endpoints and are send in the clear.

+------------------+---+---+
| Field            | E | U |
+------------------+---+---+
| Version (UDP)    |   | x |
| Type (UDP)       |   | x |
| Length (TCP)     |   | x |
| Token Length     |   | x |
| Code             | x |   |
| Message ID (UDP) |   | x |
| Token            |   | x |
+------------------+---+---+

More details available in the latest draft version: https://tools.ietf.org/html/draft-ietf-core-object-security-08

There are some available implementations at:


Shepherd Writeup

Summary

This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.

The document is intended as a Standards Track document.

Review and Consensus

The document has gone through multiple expert reviews and has been discussed on multiple IETF meetings. Before the last IETF the WGLC was completed.

Intellectual Property

Each author has stated that they do not have direct, personal knowledge of any IPR related to this document. I am not aware of any IPR discussion about this document on the CoRE WG.

Other Points

There are RFC Editor comments that need to be edited out note to RFC Editor. There have been multiple (informal) interops that have been instrumental in improving the document.

Checklist

IANA Considerations:

IANA shall add 'kid context' to the COSE Header Parameters Registry. 
A new CoAP Option is created.
a new CoAP Signaling Option is created.
a new Header Field is added to the Message Headers registry.