Thanks, Joe.  I think this could be pretty straightforward.  As I understand 
it, it would replace uses of JSON and base64url encoding with CBOR, but 
otherwise reuse as much of JOSE with as few changes as possible, such as 
reusing the algorithms, header parameters, etc.  A few CBOR-specific features 
would be needed, such as defining the particular CBOR concatenation used to 
represent the JWS Signing Input (instead of "ASCII(BASE64URL(UTF8(JWS Protected 
Header)) || '.' || BASE64URL(JWS Payload))", which is JSON-specific).

I agree that any work on this should be CBOR-specific, due to the need for a 
few CBOR-specific rules such as the one above, while also trying to capture 
what it would take to do other encodings (essentially, the necessary 
differences from JSON-specific and CBOR-specific rules), and probably capture 
that in a non-normative appendix.  A fully generic treatment wouldn't answer 
necessary questions to achieve interop.

I personally think this work should happen, because of interest from IoT folks, 
and that it should happen in JOSE, because we already have most of the right 
experts assembled into a working group.  It won't be hard for interested JOSE 
members to learn the necessary details about CBOR, and I'm sure Carsten will 
guide us in that regard.

                                -- Mike

-----Original Message-----
From: jose [mailto:[email protected]] On Behalf Of Joe Hildebrand (jhildebr)
Sent: Wednesday, February 04, 2015 12:10 PM
To: [email protected]
Subject: [jose] CBOR encoding for JOSE?

There have been some hallway conversations about making the JOSE semantics 
available in CBOR (RFC 7049).  I wanted to start a conversation on the JOSE 
list to see if there was any interest in doing the work here (after a 
recharter), in another working group, or through some other mechanism.

The hope is that the CBOR encoding would be pretty easy to specify.  It would 
do away with the Base64url requirements from the JSON form (reducing size and 
complexity), since arrays of bytes are first-class entities in CBOR.  It would 
not require JOSE/JSON compatibility.

There are several reasons people seem to want this:
- byte size on the wire (CBOR packs more tightly than JSON, and no need to
Base64)
- size of implementation for constrained devices (CBOR implementations can be 
quite small)
- CPU utilization (CBOR can be more efficient, particularly on small
devices)

More information on the motivations and suggested approach can be found at:

http://www.ietf.org/proceedings/90/slides/slides-90-jose-2.pdf

(skip to slide 33 if you understand what a constrained network device looks 
like)

There may be other encodings that people want to do.  One I've heard mentioned 
is protobufs (https://developers.google.com/protocol-buffers/docs/overview).  I 
don't yet believe there are enough of those other encodings for us to do a 
bunch of work generalizing JSON in an encoding-agnostic way.  Each encoding 
will also need specific handling for what bytes will be protected.  As such, my 
suggestion would be for us to gather a set of lessons learned in the process of 
doing the CBOR encoding that might act as signposts if anyone wants another 
encoding later.

Please discuss.

--
Joe Hildebrand



_______________________________________________
jose mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/jose

_______________________________________________
jose mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/jose

Reply via email to