On Fri, Jul 20, 2018 at 7:39 AM Nikos Mavrogiannopoulos <n...@redhat.com>
wrote:

> On Fri, 2018-07-20 at 02:38 -0700, Eric Rescorla wrote:
> > >
> > > > This is somewhat timely, as if we do want to introduce a
> > > restriction,
> > > > it
> > > > would ideally be in the form of some text in the TLS 1.3
> > > > specification,
> > > > which is very nearly done.
> > > >
> > > > It would be good to hear more opinions on this question,
> > > particularly
> > > > from those who have worked on the formal verification directly.
> > > >
> > > > If I can attempt to summarize some discussion that occurred in
> > > the
> > > > mic
> > > > line today, Hannes was surprised that we would care, likening
> > > this
> > > > case
> > > > to the regular version negotiation, where we are happy to use the
> > > > same
> > > > certificate to sign messages for both TLS 1.2 and 1.3.  David
> > > > Benjamin
> > > > points out that we explicitly go to the trouble of putting 64
> > > bytes
> > > > of
> > > > 0x20 padding at the front of the content that gets signed for
> > > > CertificateVerify, to enforce separation between the TLS
> > > versions.
> > > >
> > > > My own personal opinion is that we should enforce a domain
> > > separation
> > > > between TLS 1.2 PSKs and TLS 1.3 PSKs; David Benjamin's
> > > "Universal
> > > > PSKs"
> > > > proposal seems like a potential mechanism by which to do so
> > > without
> > > > doubling the provisioning needs.
> > >
> > > I think the same rules should apply for PSK and RSA/ECDSA/EdDSA
> > > keys.
> > > There is no inherent difference between the two keys types. I could
> > > have deployed TLS with PKI or TLS with PSK. I should be able to
> > > upgrade
> > > protocols the same way.
> > >
> > > If RSA keys can be re-used between TLS1.2 and TLS1.3, then so
> > > should
> > > PSK keys. The current document specifically allows that re-use, and
> > > if
> > > you fear that the current document did not take cross-protocol
> > > attacks
> > > in mind during design, then let's fix that instead.
> >
> > The issue is not cross-protocol attacks; it's the reuse of PSKs with
> > different KDFs, which we don't have any analysis for
>
> I understand, but as I have already mentioned that argument also
> applies for RSA keys which can be used e.g., for RSA encryption under
> TLS1.2 and for RSA-PSS signatures under TLS1.3. ECDSA keys can be used
> with multiple hashes under TLS1.2 while only one under TLS1.3.
> TLS 1.3 did not enforce protocol separation for that ugly scenario, so
> I wouldn't expect the treatment of PSKs differently.
>

PSKs are much easier to fix this with than signing algorithms, given that
we don't want to reprovision either to deploy TLS 1.3.

ECDSA in TLS didn't get worse with TLS 1.3. We didn't add a new hash to
mixup, just restricted the set from TLS 1.2. If we left it alone, we'd
still have the same effect. For RSA, you're right that we introduced an
extra pair of algorithms to worry about. The options there are:

(1) Add PSS, forbid PKCS1, and forbid PSS with id-rsaEncryption. Cost: TLS
1.3 requires reprovisioning RSA keys.
(2) Add PSS, forbid PKCS1, but allow PSS with id-rsaEncryption. Cost: We
have two algorithms with one key.
(3) Don't forbid PKCS1. Cost: We don't get rid of PKCS#1.

(1)'s cost is clearly fatal, given 1.3's goals. I'm personally fine with
either (2) or (3), but the WG chose (2).

With PSKs, I think we can get both. If we consider 1.2 PSKs to be paired
with the 1.2 PRF, we can allocate a new label, and derive a separate thing
to stick in 1.3, and not require reprovisioning. It's basically free, so I
think it makes sense to do it.

(I suspect using the same key with TLS1.2-PRF-SHA256 and HKDF-SHA256 is
probably *more* risky than mixing HKDF-SHA256 and HKDF-SHA384. I don't
think we actually believe SHA256 and SHA384 give related output. It's just
nice to avoid the assumption. Whereas TLS1.2-PRF-SHA256 and HKDF-SHA256
actually a chance of misbehavior. Perhaps it's worth doing that analysis?)

Of course, I don't actually know what I'm talking about. Opinions from the
formal analysis folks would be great. :-)


> Said that, I want to clarify that I wouldn't necessarily object to an
> improvement the situation for externally established PSKs. The issue I
> see is that TLS1.3 already gives a "good enough" solution with re-using
> the key, and I'm afraid we're going to have interoperation issues if
> some implementations move to universal psks and some do not, defeating
> the purpose of a standard.
>

I think that's the point of deciding this immediate question now, so we can
get some text in the specification. If we decide to fix this, we'd instruct
implementations to (temporary!) turn off TLS 1.3 if 1.2 PSKs are configured
and then, once the fixup document is published, implement it and remove the
version logic. This is interoperable at all combinations as version
negotiation runs first.

Personally, I actually don't care much about 1.2 PSKs as I don't work with
anything that uses them. I do care about allowing new protocols to use 1.3
external PSKs cleanly---new protocols can just mandate 1.3 and avoid 1.2,
but the hash rule makes the whole thing unusable and it is unclear whether
1.3 PSKs will be usable in a future 1.4. I figured it'd be easy to patch
the 1.2 issue while I was at it, thus the construction in my draft.

But the exact derivation can be worked out separately, my draft or not. The
immediate question is whether we think 1.2 PSKs should be reusable in 1.3
as-is or whether we should stick a derivation step to separate them.
(Thanks, Ben, for making this thread. I failed to call out the immediate
question in mine and then didn't had time to catch up on it.)

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

Reply via email to