- From: Adrian Hope-Bailie <adrian@hopebailie.com>
- Date: Fri, 15 Dec 2017 16:28:24 +0200
- To: Anders Rundgren <anders.rundgren.net@gmail.com>
- Cc: Matt Saxon <matt.saxon@gmail.com>, Ian Jacobs <ij@w3.org>, Payments WG <public-payments-wg@w3.org>, "Ahuja, Sachin" <Sachin.Ahuja@mastercard.com>
- Message-ID: <CA+eFz_KeBs7-2yg=CfY4ohgLU9n4EsHSQSuCsLnc3vzzKZg_dg@mail.gmail.com>
On 15 December 2017 at 14:45, Anders Rundgren <anders.rundgren.net@gmail.com
> wrote:
> On 2017-12-15 11:06, Adrian Hope-Bailie wrote:
>
>> For example, I would recommend we don't allow clear JSON at all but only
>> the base64 encoded data that has been signed.
>>
>
> Then you are all set because JWS gives you exactly what you propose.
> Current [2017-12-14] W3C writeup:
>
I agree.
>
> {
> supportedMethods: "https://example.com/bobpay";,
> data: {
> signedData: {
> merchantIdentifier: "XXXX",
> bobPaySpecificField: true
> },
> unsignedData: {...},
dataSecurity: {
> signature: {...},
> signatureCertPath: "public.pem"
> }
> }
> }
>
> After applying JWS in a fully standard-conformant way:
>
> {
> supportedMethods: "https://example.com/bobpay";,
> data: {
> signedData: "Base64UrlData.Base64UrlData.Base64UrlData",
> unsignedData: {...}
> }
> }
> The only functional difference from the original is that the URL to the
> certificate path (supplied in an "x5u" property somewhere in the Base64Url
> data...), would have to be absolute. This is hardly a showstopper or
> reason for creating a custom scheme.
>
> I don't recommend supporting multiple approaches this simply serves to
>> increase the attack surface.
>>
>> As Anders points out this is a contentious area or discussion even among
>> the "experts". My suggestion would be to follow the standards that are
>> gaining the most traction and adopt a profile of one of these (likely JWS)
>> that limits the options available and places some specific restrictions on
>> implementors and users to avoid known weaknesses.
>>
>>
> The core issue has not been about security but about interoperability.
> All signature schemes are open to content attacks; in the end it really
> boils down to the quality of the implementation.
>
> JWS's support of the algorithm "none" spurred a lot of (very
> uninteresting) security discussions. I would simply have dropped that
> option and moved on.
>
Agree. I would suggest we have a profile of JWS that:
1. Rejects unsignedData. (i.e. There is only the encoded binary version so
developers can't mistakenly use the clear text without verifying it matches
the binary data that was signed.)
2. Has a limited set of allowed algorithms
>
> thanx,
> Anders
>
>
>> On 14 December 2017 at 22:15, Matt Saxon <matt.saxon@gmail.com <mailto:
>> matt.saxon@gmail.com>> wrote:
>>
>> So you are happy with the concepts, but you’d like a different
>> encoding method for the signatures?
>>
>> What the view in this if we could/should support multiple approaches?
>>
>> Sent from my iPhone
>>
>> > On 12 Dec 2017, at 06:23, Anders Rundgren <
>> anders.rundgren.net@gmail.com <mailto:anders.rundgren.net@gmail.com>>
>> wrote:
>> >
>> >> On 2017-12-11 22:07, Matt Saxon wrote:
>> >> Anders,
>> >> I understand your point and it will be addressed when we get
>> further into the proposal.
>> >> At the moment, we are trying to get agreement to the principles,
>> not the detailed encoding format.
>> >> As you suggest we will need to address the encoding of signed
>> data, but I don’t believe this interferes with the principles.
>> >
>> > Right. However, Base64Url-ecoding signed JSON data violently
>> interferes with my "esthetics" :-)
>> >
>> > I'm not [at all] alone thinking that.
>> >
>> > JSON-LD Signatures by Manu Sporny and the credentials folks:
>> > https://w3c-dvcg.github.io/ld-signatures/ <
>> https://w3c-dvcg.github.io/ld-signatures/>
>> >
>> > JCS (JSON Cleartext Signature) by yours truly, here presented in
>> an on-line test/demo setup:
>> > https://mobilepki.org/jcs/home
>> >
>> > These schemes are reusing parts of the JOSE stack but are actually
>> quite different.
>> >
>> > Shameless plug: JCS builds on JWK + JWA + ES6 + "New Stuff". JCS
>> only needs JSON.parse() and JSON.stringify() for processing. In addition,
>> JCS permits signatures to be expressed as JavaScript objects.
>> >
>> > Regards,
>> > Anders
>> >
>> >
>> >> Regards,
>> >> Matt
>> >> Sent from my iPhone
>> >>> On 11 Dec 2017, at 18:51, Ian Jacobs <ij@w3.org <mailto:
>> ij@w3.org>> wrote:
>> >>>
>> >>> com
>> >
>>
>>
>>
>
Received on Friday, 15 December 2017 14:29:38 UTC