On Tue, Dec 24, 2013 at 7:56 PM, Mike Jones <[email protected]>wrote:
> I agree with your sentiment. We could add this language to try to > discourage multiple unrelated uses: > > > > Multiple unrelated uses SHOULD NOT be specified for a key because of the > potential vulnerabilities associated with using the same key with multiple > algorithms. So the combinations “sign” with “verify”, “encrypt” with > “decrypt”, and “wrap” with “unwrap” are permitted, but other combinations > SHOULD NOT be used. > > > > The rub is that WebCrypto apparently isn’t enforcing this restriction, so > we need to provide them syntax to express even the nonsensical combinations > – hence the use of SHOULD rather than MUST above. > If you're going to have that text, you might as well just make "use" the array, and have the caveats apply there as well. I would strongly prefer that solution to creating a different, incompatible key usage field. On issue (1), my preference would be to simply delete the implementation requirements, but failing that, renaming to "JOSE implementation requirements" or "JWS/JWE implementation requirements" seems OK. If you wanted to be extra clean, you could just move the implementation requirements to a separate registry. --Richard > > > -- Mike > > > > *From:* jose [mailto:[email protected]] *On Behalf Of *John Bradley > *Sent:* Tuesday, December 24, 2013 4:28 PM > *To:* Mike Jones > *Cc:* [email protected] > *Subject:* Re: [jose] Two proposed JOSE spec actions to more closely > coordinate with WebCrypto > > > > Having it be an array encourages multiple uses for the same key. I have > stated many times that encouraging people to do that is not a good idea, > and making it easy makes people think it is a good idea. > > > > You can use the single value field and have multiple entries with > different key containing the same or different keys to do the same thing. > > > > On the practical side "use_details" is better than creating crazy dot > separated como uses. > > > > John B. > > > > On Dec 24, 2013, at 8:26 PM, Mike Jones <[email protected]> > wrote: > > > > Hi all, > > > > Having reflected upon discussions among WebCrypto and JOSE participants > about JWK usage by WebCrypto over the holidays, I’d like to propose the two > JOSE spec actions to more closely coordinate with WebCrypto: > > > > 1. Change the JWA registry field name from “Implementation Requirements” > to “JOSE Implementation Requirements” in the JSON Web Signature and > Encryption Algorithms Registry ( > http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-18#section-7.1). > This will make it clearer that the Implementation Requirements apply only > to JWS and JWE implementations – and not other uses of JWK (such as > WebCrypto). This changes only non-normative text and is non-breaking. > > > > 2. Define the new JWK field “use_details” for recording intended > fine-grained key usage information. This would enable WebCrypto KeyUsage ( > https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#key-interface) > values to be used directly with JWK. The proposed definition is: > > > > *3.3. "use_details" (Key Use Details) Parameter* > > The "use_details" (key use details) member identifies fine-grained > > details the intended use of the key. Its value is an array of > > key use details values. Values defined by this specification are: > > > > o "sign" (compute signature or MAC) > > o "verify" (verify signature or MAC) > > o "encrypt" (encrypt content) > > o "decrypt" (decrypt content and verify decryption, if applicable) > > o "wrap" (encrypt key) > > o "unwrap" (decrypt key and verify decryption, if applicable) > > o "deriveKey" (derive key) > > o "deriveBits" (derive bits not to be used as a key) > > > > Other values MAY be used. Key Use Details values can be registered > > in the IANA JSON Web Key Use Details registry defined in Section 7.3. > > The use details values are case-sensitive strings. > > Duplicate use details values MUST NOT be present in the array. > > Use of the "use_details" member is OPTIONAL, unless the application > > requires use this member to record fine-grained key usage details. > > (Note that the "use_details" values intentionally match the "KeyUsage" > > values defined in the WebCrypto [WebCrypto] specification.) > > > > If both "use" and "use_details" JWK members are present, the usages > > specified by them MUST be consistent. In particular, the "use" value > > "sig" corresponds to "sign" and/or "verify". The "use" value > > "enc" corresponds to all other values defined above. > > If "use_details" values corresponding to both "sig" and "enc" > > "use" values are present, the "use" member SHOULD NOT be present, > > and if present, its value MUST NOT be either "sig" or "enc". > > > > This is a non-breaking change – allowing simple applications that want to > distinguish between signing and encryption operations to continue doing so > as they do today, while also providing a multi-valued key usage details > field to be used by applications that want to record fine-grained > distinctions among potential key usages, including distinguishing between > producer and consumer operations. > > > > As I see it, while having two related key usage representations isn’t > ideal, it’s far better than having WebCrypto overload “use” with > multi-valued values encoded in strings, such as “signOnly,verifyOnly”, > which I believe is their current plan of record. > > > > Comments? > > > > -- Mike > > > > P.S. This proposal was already discussed on the WebCrypto list in the > thread > http://lists.w3.org/Archives/Public/public-webcrypto/2013Dec/0052.html and > no objections were raised there that I’m aware of. > > > > _______________________________________________ > jose mailing list > [email protected] > https://www.ietf.org/mailman/listinfo/jose > > > > _______________________________________________ > jose mailing list > [email protected] > https://www.ietf.org/mailman/listinfo/jose > >
_______________________________________________ jose mailing list [email protected] https://www.ietf.org/mailman/listinfo/jose
