Hi folks,

Since #15 has been resolved, we'd like to revisit the proposed key schedule 
label modification here:

   https://github.com/tlswg/draft-ietf-tls-external-psk-importer/pull/10

Please have a look and comment!

Thanks,
Chris

On Thu, Sep 5, 2019, at 4:46 PM, Martin Thomson wrote:
> That's a much better answer than I was looking for :)
> 
> That makes sense.  The gap between theory and practice here is still 
> something that is worth spending some time on, but I can see how that 
> is something that we might want to keep out of this document.  The goal 
> here is simple: take a PSK that is bound to one KDF and apply a 
> transform that will allow it to be used with TLS ... in a way where the 
> choice of cipher suite is not constrained by the properties of that PSK.
> 
> Understanding your broader goals better leads me to conclude that issue 
> #15 
> (https://github.com/tlswg/draft-ietf-tls-external-psk-importer/issues/15) is 
> more important to resolve.
> 
> On Thu, Sep 5, 2019, at 20:56, Jonathan Hoyland wrote:
> > Hi Martin,
> > 
> > So I agree that on the micro-scale there is limited practical value to 
> > be gained from adding this binding.
> > The theoretical benefits, which mean that the client and server agree 
> > that PSK Importers are being used are nice, but on their own might not 
> > justify a high-effort change. 
> > However, at the macro-scale I think this is an interesting and useful 
> > addition.
> > In particular I think we can use this change to address what I see as a 
> > short-coming of TLS 1.3 in general. 
> > 
> > Being able to use TLS as a building block for other protocols is really 
> > powerful and useful, but the current mechanisms are unnecessarily 
> > restrictive. 
> > I have spent a lot of time thinking about exporter keys, and the way 
> > they let us combine other protocols with TLS. 
> > TLS has really nice, strong, properties, and being able to leverage 
> > them in other protocols makes designing complex protocols much easier, 
> > especially from a formal analysis perspective. 
> > 
> > One limitation of exporter keys, however, is that you need to use TLS 
> > as your first/base protocol. 
> > Whilst you can use exporter keys to securely run a protocol over the 
> > top of TLS and get the guarantees of both*, you cannot run TLS inside 
> > another protocol and easily get the security guarantees of both*. 
> > I think that this restriction is unnecessary. 
> > 
> > My overarching goal is to make it possible to securely put protocol 
> > building blocks before TLS. 
> > The way you would achieve this is by allowing such blocks to be chained 
> > together and then bound into the TLS handshake.
> > Ideally, all protocols that wish to use TLS in this way would use this 
> > key-schedule extension, allowing for complex state to be built up and 
> > composed into the TLS handshake.
> > 
> > PSK Importers are, to my mind, a good place to start. 
> > Agreeing on a change of hash function can be viewed as a very small, 
> > very simple protocol. 
> > The necessary modifications are small, and the benefits, whilst 
> > incremental, are clear. 
> > The modification to the key schedule means that both parties can be 
> > sure that the other agrees that they are using PSK Importers and 
> > further, that they agree on the original hash function and the new hash 
> > function.
> > 
> > Other protocols can then also make use of this extension to the key 
> > schedule to achieve similar aims. 
> > The idea would be that any protocol that uses this label implies that 
> > it is providing a context field (which may or may not be empty). 
> > These protocols can then be chained together in an agreed order, and 
> > the agreement properties of TLS can be used to verify that both parties 
> > agree on the transcripts of the previous protocols. 
> > 
> > Making this change allows us to leverage this power in future to make 
> > any number of more useful protocols. 
> > However, without a key schedule change, there is no way for a Client 
> > and Server to be sure that their peer is actually using TLS as a 
> > building block, which kneecaps any ability to compose it with other 
> > protocols. 
> > In this case it means that a Client cannot be sure that it agrees with 
> > the Server on the status of their relationship, and vice versa.
> > So to directly answer your question, the value of the distinction in 
> > this case is incremental, but opens the door for other 
> > extensions/protocols to leverage it to provide arbitrarily complex 
> > guarantees**. 
> > 
> > There may be a case for working on a backwards compatible way of doing 
> > this, where a client offers PSK Importers multiple times with binders 
> > computed both ways, but I don't think that it's necessarily a good 
> > idea. 
> > 
> > Regards,
> > 
> > Jonathan
> > 
> > * The guarantees it is possible to get from this key-schedule change 
> > are a little bit nuanced, because a PSK handshake doesn't rely on a 
> > long-term asymmetric key, but that's a discussion for another time. 
> > ** Modulo limitations on outward compound authentication. 
> > 
> > 
> > On Wed, 4 Sep 2019 at 02:46, Martin Thomson <m...@lowentropy.net> wrote:
> > > I want to push on this a little harder. Not because I don't think that 
> > > more formal protections in the line of key separation are bad (they are 
> > > great), but more to dig into the real reasons driving this change. The 
> > > justification I've gotten thus far is somewhat superficial, and I want to 
> > > see if there is something fundamental that we can point at.
> > > 
> > >  When we built the ext/res distinction, there was a clear problem 
> > > expressed. We had the potential for both to be used by the same servers 
> > > at the same time (though not for the same connection) and distinguishing 
> > > between them was important. It wasn't so much that agreement about 
> > > provenance of keys was important, but more what it meant for that 
> > > provenance to be confused. A resumption key implies a number of things 
> > > about the new session that extend from the previous session, whereas a 
> > > straight external key does not imply the same. If a client and server 
> > > were to disagree on these properties, one might assume properties of the 
> > > resulting session that the other did not and we would be in a bad place.
> > > 
> > >  It's true that servers are in complete control over how keys are 
> > > identified, and so this could always be addressed by the server by 
> > > ensuring that key identifiers clearly distinguish between the two types. 
> > > However, that protection would be informal and ad hoc. We wouldn't 
> > > guarantee that separation by any mechanism. By applying different labels 
> > > to the binder key we produce, disagreement results in interoperability 
> > > failure (both client and server could be wrong, but at least they then 
> > > agree, which is the property we really need).
> > > 
> > >  As an aside, we could have used explicit labels in the protocol, but we 
> > > decided that an implicit one was better. For the record, I still think 
> > > that's a good design paradigm to apply.
> > > 
> > >  The concern with the ext/res distinction doesn't seem to apply equally 
> > > here. For simplicity, I think that we should consider this a path into 
> > > the "ext" bucket, so that we have an resumption/other analysis holding 
> > > (as above), and an external/imported analysis to perform in order to 
> > > arrive at the "other" category. The question then becomes whether to 
> > > fully distinguish imported PSKs from "regular" external PSKs.
> > > 
> > >  I think that the context of use is important to consider. The imported 
> > > PSK will enter the key schedule (as shown below) after having been 
> > > through a derivation process that includes additional information: most 
> > > importantly, the protocol version and the hash function that the 
> > > resulting PSK will be bound to. That produces something that could 
> > > coexist with other uniformly random PSKs of sufficient entropy (i.e., it 
> > > wouldn't collide with "external" PSKs with non-negligible probability). 
> > > Because neither imported nor external PSKs come with any different 
> > > presumption about the session that is ultimately produced, the same 
> > > rationale for ext/res doesn't apply, and I'm struggling to find any 
> > > stronger justification.
> > > 
> > >  The cost of adding more separation is forced changes to code. With the 
> > > design prior to this, the importer function was loosely coupled to the 
> > > TLS stack. It would be possible to manufacture as many "external" PSKs as 
> > > needed from an root "imported" PSK. The resulting outputs could be fed to 
> > > endpoints that haven't been updated to support this new importer stuff. 
> > > That's obviously less clean than having native support for this, because 
> > > the amount and complexity of key provisioning is higher, but it could 
> > > have worked. This now requires code changes to deploy.
> > > 
> > >  So I'm not seeing strong cause here.
> > > 
> > >  To me, the relevant question is: Do client and server need to agree that 
> > > this is an imported PSK as distinct from another form of external PSK? 
> > > Or, what is the value of this distinction?
> > > 
> > >  On Tue, Sep 3, 2019, at 09:29, Christopher Wood wrote:
> > >  > Hi folks,
> > >  > 
> > >  > 
> > >  > Per Jonathan Hoyland's recommendation, we're considering adding a new 
> > >  > binder_key label ("imp binder") for imported PSKs. Specifically, this 
> > >  > changes the key schedule from this:
> > >  > 
> > >  > ~~~
> > >  > 0
> > >  > |
> > >  > v
> > >  > PSK -> HKDF-Extract = Early Secret
> > >  > |
> > >  > +-----> Derive-Secret(., "ext binder" | "res binder", "")
> > >  > | = binder_key
> > >  > ~~~
> > >  > 
> > >  > to this:
> > >  > 
> > >  > ~~~
> > >  > 0
> > >  > |
> > >  > v
> > >  > PSK -> HKDF-Extract = Early Secret
> > >  > |
> > >  > +-----> Derive-Secret(., "ext binder"
> > >  > | | "res binder"
> > >  > | | "imp binder", "")
> > >  > | = binder_key
> > >  > ~~~
> > >  > 
> > >  > Details can be found in the PR [1]. 
> > >  > 
> > >  > This does not seem to affect the interoperability story (imported keys 
> > >  > are further differentiated from non-imported keys). However, it's non 
> > >  > trivial, so we'd like feedback from the group before merging the 
> > > change.
> > >  > 
> > >  > Thanks!
> > >  > Chris (no hat)
> > >  > 
> > >  > [1] 
> > > https://github.com/tlswg/draft-ietf-tls-external-psk-importer/pull/10
> > >  > 
> > >  > _______________________________________________
> > >  > TLS mailing list
> > >  > TLS@ietf.org
> > >  > https://www.ietf.org/mailman/listinfo/tls
> > >  >
> > > 
> > >  _______________________________________________
> > >  TLS mailing list
> > > TLS@ietf.org
> > > https://www.ietf.org/mailman/listinfo/tls
> 
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to