> -----Original Message-----
> From: Jim Schaad [mailto:[email protected]]
> Sent: Monday, October 06, 2014 5:35 AM
> To: Mike Jones; 'Pete Resnick'; 'The IESG'
> Cc: [email protected]; [email protected]; draft-ietf-jose-json-web-
> [email protected]
> Subject: RE: [jose] Pete Resnick's Discuss on
> draft-ietf-jose-json-web-signature-
> 33: (with DISCUSS and COMMENT)
>
> > -----Original Message-----
> > From: jose [mailto:[email protected]] On Behalf Of Mike Jones
> > Sent: Saturday, October 04, 2014 6:58 PM
> > To: Pete Resnick; The IESG
> > Cc: [email protected]; [email protected];
> > draft-ietf-jose-json-web- [email protected]
> > Subject: Re: [jose] Pete Resnick's Discuss on
> > draft-ietf-jose-json-web-
> > signature-33: (with DISCUSS and COMMENT)
> >
> > Thanks for your review, Pete. I've added the working group to the thread.
> > Replies are inline below...
> >
> > > -----Original Message-----
> > > From: Pete Resnick [mailto:[email protected]]
> > > Sent: Wednesday, October 01, 2014 9:14 PM
> > > To: The IESG
> > > Cc: [email protected]; draft-ietf-jose-json-web-
> > > [email protected]
> > > Subject: Pete Resnick's Discuss on
> > > draft-ietf-jose-json-web-signature-33: (with DISCUSS and COMMENT)
> > >
> > > Pete Resnick has entered the following ballot position for
> > > draft-ietf-jose-json-web-signature-33: Discuss
> > >
> > > When responding, please keep the subject line intact and reply to
> > > all email addresses included in the To and CC lines. (Feel free to
> > > cut this introductory paragraph, however.)
> > >
> > >
> > > Please refer to
> > > http://www.ietf.org/iesg/statement/discuss-criteria.html
> > > for more information about IESG DISCUSS and COMMENT positions.
> > >
> > >
> > > The document, along with other ballot positions, can be found here:
> > > http://datatracker.ietf.org/doc/draft-ietf-jose-json-web-signature/
> > >
> > >
> > >
> > > --------------------------------------------------------------------
> > > --
> > > DISCUSS:
> > > --------------------------------------------------------------------
> > > --
> > >
> > > 3.1: Why can't I use an unprotected header when I'm using the
> > > Compact Serialization? This seems like a real problem, since I can't
> > > convert (in a round- trippable way) between a JWS with an
> > > unprotected header in the JSON Serialization to a Compact Serialization.
> Why the limitation?
> >
> > As Richard explained during the telechat, this was a deliberate choice
> > on the part of the working group to keep the compact form as simple as
> > possible by removing some options. Do I remember correctly that you
> > said on the telechat that you would be willing to withdraw this DISCUSS on
> that basis?
> >
>
> There was an explicit decision by the group that the JWT case did not require
> a
> multiple signature capability. Thus when the JSON form was developed it was
> determined that this would not be back ported into that format. I think that
> until we have a case that wants the compact format and needs multiple signers
> this is a reasonable decision.
Agreed. It's understood by at least some in the working group how we could do
a compact serialization representation enabling multiple signatures, but this
could easily be addressed in a subsequent specification, if an actual need for
it arises. (BTW, the design thinking didn't apply to just the JWT use case -
it applied to any simple JWS use case.)
> > > 5.2:
> > >
> > > Strike the last sentence of the second paragraph. There's no
> > > requirement here. If none of them validate, I can do what I want
> > > with the JWS. I needn't "reject" it. I might just mark it as "invalid".
> > >
> > > [Get rid of all talk of "rejecting" throughout this document. Again,
> > > I will note that the signatures are not valid, but rejecting is a
> > > local implementation detail.]
> >
> > As discussed during the telechat and on subsequent threads, the terms
> > "accept" and "reject" are commonly used in this way, for instance, in
> > RFC 5820. As Kathleen wrote after the call, "For the "reject"
> > language, Pete said on the call that he would go through each one to
> > see where it might be application specific and will suggest changes.
> > Thanks in
> advance, Pete.".
> >
> > > This section would be greatly simplified if step 1 was: "If the
> > > Compact Serialization is being used, convert it to the JSON
> > > Serialization."
> >
> > This would be doing a disservice to some implementers, since some
> > implementations (for instance those designed to support JWTs) will
> > only implement the Compact Serialization. I therefore request that
> > you withdraw this DISCUSS on that basis.
>
> Mike, I have a higher opinion of most implementers than you apparently do. I
> don't think this would really be an issue to change from that perspective.
>
> Pete, If I had proposed this to the group while things were in progress. I
> would
> have ended up declaring myself in the weeds. For better or worse, the main
> focus of the WG was on the compact serialization and not on the JSON
> serialization. This means that, IMHO, the JSON serialization was always a
> second class item in the document. I will admit that when I did a fast and
> dirty
> implementation I did exactly what you suggested in terms of doing the
> conversion before (and then after) everything else was done.
>
> If this change was done, then it would also require that the first paragraph
> be re-
> written so that the algorithm becomes something other than normative. That is
> it would need to say that any algorithm that produced an equivalent result
> would be acceptable.
It's not that I have a low opinion of implementers (quite the contrary!) or
that I think they wouldn't understand the specification if it were revised in
the way that Pete suggests. The disservice would be to write the prescriptive
steps to validate a JWS in a way that said that it was necessary to convert any
JWSs using the compact serialization to the JSON serialization in order to
validate them. This demonstrably isn't a necessary step.
Only semantically necessary steps should be in the list. Since this step isn't
necessary, I therefore request that you withdraw this DISCUSS on that basis,
Pete.
> > > Some of these steps are not steps. I could not follow this to figure
> > > out what to do. This section could use a serious rewrite. I'm glad
> > > to work with you on that, but did not have time to provide a rewrite
> > > during
> > my review.
> >
> > This section has been heavily wordsmithed already by numerous reviewers.
> > That said, I'd be glad to receive suggestion for specific proposed changes.
> >
> > > 8: This section needs to be removed. There is no need for TLS in a
> > > whole host of applications that could implement this protocol.
> >
> > As discussed in threads that immediately followed your review, I
> > propose to clarify to which specific features ("jku" and "x5u") this section
> applies.
> >
> > > --------------------------------------------------------------------
> > > --
> > > COMMENT:
> > > --------------------------------------------------------------------
> > > --
> > >
> > > 3.2:
> > >
> > > In the JWS JSON Serialization, a JWS object is represented as the
> > > combination of these four values,
> > > BASE64URL(UTF8(JWS Protected Header)),
> > > JWS Unprotected Header,
> > > BASE64URL(JWS Payload), and
> > > BASE64URL(JWS Signature)
> > >
> > > Why is the Payload (a) part of the serialization and (b) base64ed?
> > > Are you saying that the only way I can use JWS is to include the
> > > payload as part of the JOSE object? Why can't it be a separate
> > > thing? Also, why does
> > it have to be base64ed?
> > > It could be a UTF-8 string, or it could be a large binary object
> > > that I'm using in a non-JSON context, neither of which I want to
> > > bloat by base64ing it. This seems bogus.
> >
> > It is base64url encoded because JSON has no way of representing
> > arbitrary octet sequences. This enables the "binary object" case that
> > you're describing to work. Also note that this was extensively
> > discussed by the working group in the context of issue #26
> http://trac.tools.ietf.org/wg/jose/trac/ticket/26.
>
> Pete, I tried to strongly argue that this change should be made and in the
> end
> had to declare myself in the weeds as far as the working group was considered.
> The reasons that were given by people in the group did not have to do with
> security, i.e. that one or the other was more or less secure, and had more to
> do
> with "We have already deployed code that uses the base64 as the input rather
> than the raw data and don't feel it would be reasonable to change at this
> time."
> The initial impetus for doing and use the base64 was the compact
> serialization.
> The strings that were parsed directly from the serialization could be hashed
> and
> thus those strings are kept rather than the base64 decoded strings.
>
> The working group would not be happy with this change.
Yes, that's an understatement. This was vigorously discussed on the thread
http://www.ietf.org/mail-archive/web/jose/current/msg02645.html "[jose] #26:
Allow for signature payload to not be base64 encoded" (33 messages) in the
context of http://trac.tools.ietf.org/wg/jose/trac/ticket/26, following a
preceding discussion that also covered the much of the same ground of issue
http://trac.tools.ietf.org/wg/jose/trac/ticket/23 on the thread
http://www.ietf.org/mail-archive/web/jose/current/msg02493.html "[jose] #23:
Make crypto independent of binary encoding (base64)" (39 messages). Working
group discussion of #23 and #26 is also recorded in the minutes of IETF 87 at
http://www.ietf.org/proceedings/87/minutes/minutes-87-jose.
> > > I'll get back to in Section 5. Finally:
> > >
> > > Concatenating these values...
> > >
> > > This section is not about the compact serialization. If you want to
> > > give both example serializations in this section, fine, but if you
> > > are giving a general "Example JWS" as the title of the section
> > > states, don't just
> > give the compact.
> >
> > The point is to give a simple example to familiarize readers with the
> > idea of a JWS - not for the example section to be a complete tutorial
> > on the possibilities. Note, however than an example using the JSON
> > Serialization
> > *is* present in Appendix A.6 and many are present in
> > http://tools.ietf.org/html/draft-ietf-jose-cookbook-03.
>
> At a minimum I think that there should be a sentence that points to the
> appendix
> for an example of a compact serialization. I would be good if the example was
> the same as this one, but that may be stretching the issue too far. I don’t
> think
> that Pete is to far out of line in requesting that there be a paragraph at
> the end
> that says "The equivalent to this example using the JSON serialization would
> be:
> ...."
I'm OK adding a forward reference to the JSON serialization example in A.6.
> > > 4.1.1/4.2: Why even bother mentioning that the alg could be a
> > > "Collision- Resistant Name" (what a term!)? The alg should be registered.
> > > If it's not, you're in private agreement space anyway, so it needn't
> > > be specified in the spec. Same thing for Public Header Parameter
> > > Names: If you're going to do this interoperably, you're going to
> > > have to know what the thing means; otherwise, it's out of band
> > > anyway. I say get rid of the whole concept of using non-registered names.
> >
> > Per the response to a similar comment in Stephen Kent's secdir review:
> >
> > This specification will be used both in open environments, in which
> > multiple organizations will need to have a common understanding of any
> > extensions used, and closed environments, which the producing and
> > consuming organization will always be the same and private values could be
> safely used.
> > IANA registration is definitely the right thing to do for open
> > environments. It s probably unnecessary for deployments in closed
> environments.
> >
>
> I have a small agreement here with Pete. If this is really a closed
> environment
> then the uses would not care if they violated this type of statement. There
> is no
> 2119 language regarding this feature. I am a bit more sympathetic to keep the
> collision resistant naming as this means that we won't get people saying we
> are
> going to use FOOBAR for algorithm foo and never get it registered so we end up
> with FOOBAR and foo as two different names for the same algorithm. It would
> be clear that one was assigned by a specific entity and did not go through
> IANA.
> What happens if they then ask for OID:1.2.3.4.5 to be the assigned name in the
> IANA table does become an interesting question.
Yes, the point of the collision-resistant name language is that Example org
could use the algorithm name
https://schemas.example.com/algorithms/2014/10/super-duper without having to
register it, because no naming collisions would result.
> > Thanks again,
> > -- Mike
> >
> > _______________________________________________
> > jose mailing list
> > [email protected]
> > https://www.ietf.org/mailman/listinfo/jose
_______________________________________________
jose mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/jose