On Sun, October 11, 2015 7:43 pm, Dave Garrett wrote:
>  I'd like to get a sense of what the WG is willing to consider with regard
>  to SHA-1, rather than only Viktor and myself discussing this. Basically, I
>  see 3 options:
>
>  Option 0: Do nothing new. SHA-1 is soft deprecated, but still a fully
>  viable option in TLS 1.3 if nothing better is installed.
>  Option 1: Explicitly state that TLS 1.3+ clients must not trust SHA-1
>  signatures (but may trust full certificates, namely roots).
>  Option 2: Distrust (option 1) and also prohibit endpoints from sending
>  chains that rely on SHA-1 signatures to their peers when negotiating TLS
>  1.3. (aka, don't upgrade to TLS 1.3 until you've upgraded your
>  certificates; self-signed roots still exempt)

My personal preference, speaking on behalf of myself and neither that of
my employer or colleagues (we are all individuals here, right? ;D), would
be Option 0.

If that's all you care to know, stop here - the rest is pontificating and
poorly articulating why :)


Background:
It's no secret I hate SHA-1. I'm accused by a number of Chrome users as
being too aggressive in the deprecation of SHA-1. I'm unquestionably
accused by CAs of being too harsh on SHA-1 - my opposition towards any
extension of SHA-1 signatures by CAs complying with the CA/Browser Forum
Baseline Requirements is unquestionable and well known.

Why would I support "do nothing"-ism, which is effectively what Option 0 is?

Two reasons:
- I agree with Viktor that TLS is a protocol for which many credential
types can be delivered, and while I have no desire nor intent to support a
number of them within Chrome (... I'm looking at you, DANE), I don't deny
their utility or viability in some circumstances and environments beyond
that of web browsers. It feels inconsistent to apply this to one specific
type of credentials, with a particular policy. This is an ideological
argument for specification purity, fundamentally, so I fully anticipate
disagreement, as is expected with such arguments.

- Simply one of complexity. The modern TLS stack, as used in Web browsers
(thus revealing my bias, as if we didn't know it already) is already hairy
and complex. HTTP/2 imposes a (much needed) profile on ciphersuite
negotiations. Browsers themselves key UI off a variety of factors
contributing to the connection, both direct (e.g. ciphersuite) and
indirect (e.g. mixed content). If we accept that browsers are only
concerned with the Web PKI (I know some wish it were otherwise), then the
WebPKI is messy, and whether or not a certificate is signed by SHA-1 is...
complex and complicated and invokes path building and cross certificates
and many of the things outside the remit of TLS.

This certificate path building and discovery depends on a variety of
factors and external resources (and here's where Martin Rex would chime in
about how awful such a state is, but let's accept it as the state of the
world today and not argue about necessity or not), and implementing such a
policy necessarily interleaves that into the connection management.

The 'gross' state of my world today, which will no doubt shock and offend,
is that in many cases and ways, the verification of the server identity is
deferred until after the overall connection has been established, before
any data is transferred over it, and before any keys, session parameters,
or overall state is persisted for reuse. The alternative to this is to do
something akin to Firefox, which does verification semi-synchronously
during handshaking, but which doesn't fetch such external resources (and
thus has a much harder time interacting with nominally 'secure' sites),
and which if it did, would trigger the various 'retry' logic to deal with
servers that time out if the handshakes fail to happen in a 'reasonable'
time.

Look, I think the deprecation of SHA-1 is a noble goal - hopefully my
bonafides are established such that few would want it more - but my
concern is that it would add significant implementation complexity to my
world, and fundamentally offer no benefit for my existing and documented
plans.

Were I (and my colleagues) to ignore such a MUST, for entirely pragmatic
and yet equally secure reasons, we'd end up cheesing off folks like Dave
and those who treat MUSTs as inviolate (reasonably and rightfully so), and
would be seen as tacitly encouraging others to ignore such MUSTs as well.
I'd like to avoid that world.

I think the reasons for such a proposal are laudable, but the pragmatic
application and interpretation of such a requirement would be
confoundingly obnoxious, and to no obvious benefit, since I (and my
counterparts at various other browser organizations) am well on my way to
killing SHA-1 within the commercial space.

So the only party left to all this is the Enterprise folk, those who will
always override a MUST with an application profile, or who will always
deal with legacy in such a way that, practically speaking, such a MUST is
toothless.

Such a requirement doesn't help my efforts towards the death of SHA-1 and
evangelizing the need for such a death, and would only distract myself and
my colleagues from implementing TLS 1.3 as quickly as reasonable and
possible. Maybe it will help in some niche ecosystems that still hold to
SHA-1 as the bastion of security, but frankly, may the deity/deities they
worship have mercy on their misguided souls.

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

Reply via email to