On Thu, Jul 26, 2018 at 11:38 AM, Benjamin Kaduk <bka...@akamai.com> wrote:

> On Thu, Jul 26, 2018 at 10:58:05AM -0700, Eric Rescorla wrote:
> > Ben,
> >
> > Thanks for focusing on this issue.
>
> Just trying to make sure loose ends get wrapped up before TLS 1.3 goes
> final...
>
> > Chris and I have been discussing an alternative design which we think
> > is more consistent with the existing structure, which we call PSK
> > Importers. As with your design, we have an input universal PSK, but
>
> (I think you mean David Benjamin's design?)
>

Oh, yeah. I originally meant to be responding to davidben and then forgot
to edit
the msg.

>
> > instead of using explicitly as part of the connection, we just use it
> > as the base key to import a set of new PSKs into TLS.
> >
> > As with Universal PSKs (UPSKs), each input key is a triplet of
> > (BaseIdentity, BaseKey, KDF), where a BaseIdentity is a PSK identity
> > as used today. To use a UPSK, an implementation takes the set of KDF
> > hashes it knows about H_i and derives a set of PSKs:
> >
> >   Hash_i: H_i
> >   Identity_i: BaseIdentity || H_i
> >   Key_i: Derived from BaseKey and Identity_i
> >
> > This gives you a set of keys which you can offer simultaneously on the
> > TLS connection in independent psk_identity blocks. (Note that the hash
> > algorithm is what differentiates each derived key.) This is a bit
> > ugly, but with the current TLS 1.3 ciphers, this basically just means
> > SHA-256, but even in the worst case it’s probably only 2-3.
> >
> > The nice thing about this design is that if you know the set of hash
> > functions, you can just compute all the imported PSKs in advance, and
> > there’s no need to touch the internals of the TLS stack. This also
> > means that if you have decided you don’t like old hash X, you don’t
> > need to use it to compute PSK binders, you just use it do the KDF,
> > which seems like it has weakersecurity requirements.
> >
> > Here’s a specific construction, but we’re flexible about the details:
> >
> >    struct {
> >        opaque base_identity<1...2^16-1>;
> >        HashAlgorithm hash;
> >    } imported_psk_identity;
> >
> >    UPSKx = HKDF-Extract(0, UPSK)  // UPSK is the input universal PSK
> >    PSK = HKDF-Expand-Label(UPSKx, "derived psk", BaseKDF(psk_identity),
> > TargetHash.length) // Might need to shorten label
> >
> > These functions would be executed with the KDF associated with the UPSK,
> > but produce
> > a key the size of the desired hash.
> >
> > This brings us to the question of TLS 1.2. I found Ilari’s analyis
> > pretty persuasive, so I would suggest we add the following text to the
> > TLS 1.3 spec:
> >
> >     TLS 1.3 takes a conservative approach to PSKs by binding them to a
> >     specific KDF. TLS 1.2 allows PSKs to be used with any hash function
>
> (I know it's awkward to write about, but we don't really get away with
> pretending that 1.2 1.3 are the only versions in the rest of the document..)
>

Fair enough.



> >     and the TLS 1.2 PRF. The constructions in TLS 1.2 and TLS 1.3,
> >     although both based on HMAC, are very different and there is no known
> >     way in which reuse of the same PSK in TLS 1.3 and TLS 1.2 would
> >     produce related output, although only limited formal analysis has
> been
> >     done. Implementations MAY wish to avoid reuse of keys between TLS 1..3
> >     and TLS 1.2, or use a key derivation proposal such as [Informative
> ref
> >     to this email or a draft].
>
> I might add "to avoid the risk of using under-analyzed cryptographic
> constructions"
> (or similar), but implicit might be good enough.
>

I like that.

-Ekr


> >
> > Other than this, we wouldn’t make any changes to the document.
> >
> > What do people think?
>
> This seems like a good sort of approach to take (that is, make the key
> derivation
> for hash specificity something that happens outside of the TLS mechanics
> itself),
> given the context in which we're thinking about it.
>
> It might be worth going even farther, and including the target TLS version
> in the
> (derived) identities and keys.  Though maybe the negotiation process means
> that
> doesn't actually protect against an attack; I haven't thought it through
> enough.
>
> Thanks for putting this together,
>
> Ben (no hats)
>
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to