- From: Ryan Sleevi <sleevi@google.com>
- Date: Fri, 6 Sep 2013 16:19:47 -0700
- To: Jim Schaad <ietf@augustcellars.com>
- Cc: "public-webcrypto@w3.org" <public-webcrypto@w3.org>
- Message-ID: <CACvaWvY59XSfAbi=25JoU0MK5PpmkM9Qb=R4+7ZL-xSD+G3xkw@mail.gmail.com>
On Fri, Sep 6, 2013 at 3:41 PM, Jim Schaad <ietf@augustcellars.com> wrote: > This is a proposal of how to do tainting of keys with non-extractability. > As part of this proposal, there is a set of things that are restricted > when you have a key marked as non-extractable. I do not believe that these > restrictions are burdensome, but others might. This message is intended to > provide a workable solution to the non-extractible problem. There is still > a need to determine if this work is needed or not. > > My assumption is that when one starts with a non-extractable secret, then > all secrets that are derived from that secret need to be non-extractable as > well. > That's not something I desire. Is that something you desire, or is this an interpretation of what Netflix desires? I guess I read your preamble as "I'm not sure what problem I'm trying to solve, but here's a possible solution", which leaves me a bit... confused? > > Changes to the current document: > > 1. There is a new restriction placed on algorithm descriptions so that > the usages [KeyWrap,KeyUnwrap] and [Encryption,Decryption] are mutually > exclusive. Most of the time this will not be an issue, but for some > encryption algorithms it will mean that there will need to be two > algorithms defined. One of these will be for content encryption and one > will be for key encryption. This would be an issue for example with > AES-GCM where a new AES-GCM-KeyWrap algorithm would need to be defined > which allows for key wrapping to occur. > > 2. When a key agreement operation is done with a key marked as > non-extractable, the DeriveBits key usage is removed on the resulting > secret so that only keys can be derived. > > 3. KeyUnwrap, KeyAgreement and DeriveKey all propagate the > non-extractable bit if it is on the key that was used in the operation. > > 4. It is assumed that a key encryption algorithm which unwraps a key > produces a content encryption key (i.e. the usage on the resulting key is > decryption not key unwrap). If one wants to do a two level key unwrap then > a new algorithm would need to be defined that went from a key wrap key to a > key wrap key rather than a content encryption key. I would be surprised if > this was ever needed in practice. > > The resulting restrictions: > > 1. Only the algorithms defined in the UA will be available to a > non-extractible key and any secrets that are derived from it. This is an > issue if one looks at some of the composite AEAD algorithms such as the > AES-CBC/HMAC-SHA-256 algorithm that the JOSE documents use. If such an > algorithm is to be used, it must be in the UA and not provided by the > script even if all of the components of the composite algorithm are > provided by the UA. > > 2. DeriveBits cannot be used to generate both key data and non-key data > when using a non-extractable key. This makes it impossible, for example, > to derive both a key and an iv from the shared secret in the same way as > the TLS extractor done. It would be possible to document how an extractor > could be defined where the DeriveBits would still be permitted, but the > data stream and the key stream would be required to be distinct by having > the extractor mix in data that indicates the stream that the data is being > generated for as part of the data generation process. > > 3. Only those key formats that are supported by the UA can be used with a > non-extractable key. Thus if one wants to use a JWK key format, then that > format must be supported by the UA or it cannot be used. > > 4. If one assumes that bad code can exist, then one can only be truly > assured that this works for named keys (i.e. those keys that are populated > by the UA itself). However there are some tricks that one can play with > trying to extract and test non-extractable keys where one can potentially > later detect that the key was not generated with the non-extractable bit > set. > > Jim > > > >
Received on Friday, 6 September 2013 23:20:14 UTC