I could actually live with this. It's not as parallel to the JWE JSON
Serialization but it's simpler and makes more sense. If people aren't worried
about the duplication, we could do this, at least as far as I'm concerned.
-- Mike
From: Richard Barnes [mailto:[email protected]]
Sent: Wednesday, July 03, 2013 3:47 PM
To: Mike Jones
Cc: [email protected]
Subject: Re: [jose] #24: Move JWS headers into signature block
You're right on the goal, but wrong on the implementation.
More places for headers is not the answer. Just put everything in the
per-signer headers, like this issue suggests.
Think of it this way. A multiply-signed JWS-JSON object is the moral
equivalent of a bunch of individual JWS objects over the same payload:
header1.payload.sig1
header2.payload.sig2
...
headerN.payload.sigN
We obviously can't require that header1 == header2 == ... == headerN, since the
different signers are going to use different keys, algorithms, etc. So if
you're going to staple all of these things together, the natural thing is to
express the payload once (at the top level), then have a header for each signer.
{
"payload": payload,
"signatures": [
{ "protected": header1, "signature": sig1 },
...
{ "protected": headerN, "signature": sigN },
]
}
Then you add in "unprotected" in parallel to "protected" to please the folks
that don't want header integrity.
Same story for verification. If I handed you the pile of JWSs above, you would
verify them each individually, then combine the results however your
application likes. Because of the way we structure things above, you can just
do this by copying the payload down to get a bunch of individual JWSs:
{ "protected": header1, "payload": payload, "signature": sig1 },
...
{ "protected": headerN, "payload": payload, "signature": sigN }
This seems like a very simple story to me, much more so than the current doc.
Am I making sense here?
--Richard
On Sat, Jun 29, 2013 at 6:42 AM, Mike Jones
<[email protected]<mailto:[email protected]>> wrote:
Perhaps I'm in an odd frame of mind tonight, because I wouldn't normally even
consider re-raising a closed issue, but Ben Laurie's advice "why not just
protect everything" kept running my mind and I realized that the current JWS
JSON Serialization doesn't allow us to do that in the general case.
Specifically, we don't allow a per-signature "protected" headers field, which
would be necessary to protect the cryptographic parameters if different
signatures use different algorithms.
So I'd at least like others' thoughts on whether we want to "fill in the
matrix" for the JWS JSON Serialization and allow header parameters to be
specified both in protected and unprotected forms, both on a shared and
per-signature basis. We currently support 3 of these 4 header parameter
locations.
Note that we would not do this for JWE, since (as extensively discussed)
per-recipient protected content is problematic.
For the signature input, if both shared and per-signature protected headers
were present, we'd need to concatenate the two base64url encoded
representations together with a separator character between (I'm thinking comma
(',') because it is distinct from period ('.'), which is also used as a
separator in the signature input).
I'm fine with this issue remaining closed, but I wanted to at least run this
possibility by the working group for their input, since it hadn't been
discussed previously.
Cheers,
-- Mike
-----Original Message-----
From: jose issue tracker
[mailto:[email protected]<mailto:trac%[email protected]>]
Sent: Monday, June 24, 2013 10:57 PM
To:
[email protected]<mailto:[email protected]>;
Mike Jones; [email protected]<mailto:[email protected]>
Cc: [email protected]<mailto:[email protected]>
Subject: Re: [jose] #24: Move JWS headers into signature block
#24: Move JWS headers into signature block
Changes (by [email protected]<mailto:[email protected]>):
* status: new => closed
* resolution: => wontfix
Comment:
Closing per the discussion on the teleconference.
We currently do not have a strong use case for per user items. It will
be possible in future versions to add a protected field to the per signer
item and include both in the integrity protection in the event that a use case
appears.
There was no strong recommendation from the CFRG list if a hash substitution
attack is either probable or possible.
--
-------------------------+----------------------------------------------
-------------------------+---
Reporter: [email protected]<mailto:[email protected]> | Owner:
draft-ietf-jose-json-web-
Type: defect |
[email protected]<mailto:[email protected]>
Priority: major | Status: closed
Component: json-web- | Milestone:
signature | Version:
Severity: - | Resolution: wontfix
Keywords: |
-------------------------+----------------------------------------------
-------------------------+---
Ticket URL: <http://trac.tools.ietf.org/wg/jose/trac/ticket/24#comment:2>
jose <http://tools.ietf.org/jose/>
_______________________________________________
jose mailing list
[email protected]<mailto:[email protected]>
https://www.ietf.org/mailman/listinfo/jose
_______________________________________________
jose mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/jose