Subject: [TLS] Review of draft-asmithee-tls-dnssec-downprot-00

From: Martin Thomson <[email-masked]>
Date: Fri, 18 May 2018 16:42:51 +1000

Hi Alan and Alan,

Thanks for writing this draft.  Even though the intent here is abundantly
clear and this email risks me being drawn into the toxic mess of the
related discussion, I found this draft to provoke an interesting thought.

Though the current design is for a two octet commitment that narrowly
addresses one particular extension, it seems that - like the must-staple
design - there is an opportunity here.

We have potential downgrade attacks on a range of extensions, not just the
identified one.  For instance, failing to provide the extended master
secret extension represents a fairly significant regression in capabilities
that could be indicative of an attack.  The same for renegotiation info,
SCT, and others.  I thought supported_versions might be a valid use, but
I'm not 100% sure there.  The extension could reference itself though.

A commitment to continue to provide a particular feature - as identified
via its extension - would be a potentially useful capability.

Of course, this would need to squarely address the potential for a service
to take itself out in the way that such commitments tend to.  It also needs
to address the scope of the commitment in more than just time.  This isn't
trivial when you consider that a server can be considered valid for
multiple identities.  The current draft doesn't really do either topic
justice.

Having this indicator expire when you get an authenticated denial of
existence seems odd.  Why not just update the lifetime when the connection
is successful unconditionally?

Finally, I don't see any value in the "if you use that then you must use
this" text in the draft, but that's likely just a consequence of the other
discussion.

Cheers,
Martin

---

From: Viktor Dukhovni <[email-masked]>
Date: Fri, 18 May 2018 09:45:08 -0400

> On May 18, 2018, at 2:42 AM, Martin Thomson <[email-masked]> wrote:
> 

The same thought had already occurred to me, and I concluded
that chain the extension is materially different in this
respect from the others and the approach is not generally
applicable.

The difference is that the DNSSEC (DANE) chain introduces a
new set of trust anchors, and so absent those trust anchors
one might reach different conclusions about the authenticity
of the peer.  Presence or absence of such trust anchors for
the server endpoint is authenticated via DNSSEC.

The other extensions you mention operate within the same
trust-anchor context whether present or absent.  An attacker
in possession of a forged certificate or a misappropriated
private key is not thwarted by the requirement to present those
extensions, can employ them at will, and can authenticate a reset
of any previous "support lifetime".

If the absence of a TLS extension makes it possible to impersonate
the peer (without having suitable credentials), that extension should
be mandatory in TLS.  If the extension merely protects against chosen
plaintext attacks (ala CRIME, BEAST, ...) then only the authentic
server can downgrade itself, so we don't need a pin to require the
extension.

Which optional extensions militate server impersonation by an MiTM
who does not have forged credentials or misappropriated keys?

Does the above make sense?  Am I missing a class of extensions that
are needed to make sure the peer's authenticity is not compromised
even in the absence of forged or stolen credentials?  If such
attacks are practical, why aren't the militating extensions mandatory?

-- 
	Viktor.