On Thu, Jun 22, 2017 at 1:59 PM Jakob Bohm via dev-security-policy <
dev-secur...@lists.mozilla.org> wrote:
> Please note that Apache and NGINX are by far not the only TLS servers
> that will need working OCSP stapling code before must-staple can become
> default or the only method checked by Browsers and other TLS clients.
>
> What is needed is:
>
> 1. An alternative checking mechanism, such as the compact super-CRL
> developed by some researchers earlier this year. This needs to be
> deployed and used *before* turning off traditional CRL and OCSP
> checking in relying party code, since leaving a relying party
> application without any checking for revoked certificates is a pretty
> obvious security hole.
There is reasonable and well-argued disagreement with you on this. Without
hardfail, it is not a security hole, and now mainstream client has ever
shipped hardfail, so it is not a reasonable requirement to introduce into
this discussion.
There's equally a host of pragmatic and practical concerns, which you can
find in the years of discussion on this topic and related solutions (as the
"super-CRL" you refer to is just the application of one particular
technology, which had previously been outlined years prior, and which
alternatives of similar constraints also existed even before that).
I suspect this may simply resolve to irreconcilable differences, as some
people may incorrectly choose to believe that soft-fail revocation provides
a defensible security boundary, or may believe that CAs revocation is a
trustworthy reason to deny access, both of which ample evidence and
arguments exist to show otherwise. I mention this largely to avoid
rehashing the same conversations that have been had, but if you are
unfamiliar with them, and are interested in learning of this other
perspective, I would be happy to provide them. I just figure as shorthand
that we disagree on this.
>
> 2. Full OCSP stapling support in all TLS libraries, including the LTS
> branches of OpenSSL, mbedTLS, NSS, Java, Android etc. Providing this
> only in the "next great release that is incompatible with many
> existing users" is a common malpractice among security library
> vendors, just as there are still systems that refuse to support TLS
> 1.2 and ubiquitous SHA-256 signatures in todays world, simply because
> the original system/library vendor refuses to backport the needed
> changes.
There is zero reason to introduce this as a dependency beforehand. Perhaps
your assumption is that it is unreasonable to require of the ecosystem what
the ecosystem does not support, but equally realize, the ecosystem will not
support it until it is required.
It is already true that a sufficient and meaningful majority support most
of the necessary work, and so the argument that ALL servers or libraries
must support is to ignore both the market realities and to place the
(unreasonable) perfect ahead of the achievable good.
Further, you conflate OCSP Multi-Staple as necessary, when in fact it is
entirely undesirable from a performance perspective and largely unnecessary
from a deployment scenario, given the existence of CRLSets, CDLs,
OneCRL-et-al.
>
> 3. Once #2 is achieved, actual TLS servers and clients using those
> libraries can begin to enable OCSP stapling.
>
> 4. Once #3 is achieved and deployed, then OCSP stapling might become
> mandatory by default.
This is to completely upend the only action that has been seen to
meaningfully improve the ecosystem, which is the mandate that thus spurs
implementation or innovation.
On a more pragmatic level, there is nothing wrong with saying "The only
revocation supported will be stapling and OneCRL". There is no need to go
above and beyond this, because collectively, this achieves the goal of
providing a compelling revocation story.
The disconnect that results in proposals like yours is that they presume
revocation is for the benefit of the relying party, as opposed to being for
the benefit of the site operator.
A site operator cares about revocation for cases of key compromise and
impersonation. A relying party may care about revocation for reasons like
misrepresentation (which is not, despite some views contrary, an accepted
concern of the Mozilla policies - c.f. malware and phishing), apathetic
server compromise (that is, they did not enable stapling. However, the root
cause/risk is the apathy, for which revocation does not fix), or should the
user want to deny themselves access to a site (which no user does).
If we focus on stapling, the position is that it is not necessary for the
browser to protect the user from servers' apathy (in not enabling
stapling), or from CAs' capricious opinions about certificates (which the
so-called supercrls try to enable, as a business model), but to allow
servers to protect themselves. There is similarly no concern given to CAs
that want to use OCSP or CRLs to "rent a cert" (as some tried to in the
past), because that's hostile to servers and the user security experience.
For these reasons, and more, it's merely sufficient to OFFER sites the
ability to use stapling and OneCRL. No other revocation methods are needed
or justified. No ecosystem dependencies are introduced - if your server
software doesn't support it, change servers, don't hold the ecosystem back.
The introduction of mandatory stapling only applies if you trust CAs enough
to issue revocation status accurately (empirically not true), you wish to
cede control of your user experience to a third party (no browser does), or
you plan to use the stapling in conjunction with application-specific risk
evaluations.