Re: last call Feedback for Opportunistic Security for HTTP (Experimental)

Patrick McManus <> Wed, 07 September 2016 20:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E6A9012B1AB for <>; Wed, 7 Sep 2016 13:18:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8.427
X-Spam-Status: No, score=-8.427 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.001, RP_MATCHES_RCVD=-1.508, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YvVlQCGYAkOF for <>; Wed, 7 Sep 2016 13:18:05 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 2031F12B157 for <>; Wed, 7 Sep 2016 13:18:04 -0700 (PDT)
Received: from lists by with local (Exim 4.80) (envelope-from <>) id 1bhjDg-00074Z-Sq for; Wed, 07 Sep 2016 20:13:16 +0000
Resent-Date: Wed, 07 Sep 2016 20:13:16 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <>) id 1bhjDY-00073f-3E for; Wed, 07 Sep 2016 20:13:08 +0000
Received: from ([] by with esmtp (Exim 4.80) (envelope-from <>) id 1bhjDT-0006ed-Nd for; Wed, 07 Sep 2016 20:13:05 +0000
Received: from ( []) by (Postfix) with ESMTPSA id 5D2953A01B for <>; Wed, 7 Sep 2016 16:12:21 -0400 (EDT)
Received: by with SMTP id i184so219046613itf.1 for <>; Wed, 07 Sep 2016 13:12:21 -0700 (PDT)
X-Gm-Message-State: AE9vXwNCD+g1Z5RCu2sF0c2+5Qw46+292kiVORqZZu8BDjCY+PuEAotbOSwzAWJn1pLKytVJVVb1kpPtBbjWpg==
X-Received: by with SMTP id x65mr9449357itf.54.1473279140866; Wed, 07 Sep 2016 13:12:20 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Wed, 7 Sep 2016 13:12:19 -0700 (PDT)
In-Reply-To: <>
References: <> <> <>
From: Patrick McManus <>
Date: Wed, 7 Sep 2016 16:12:19 -0400
X-Gmail-Original-Message-ID: <>
Message-ID: <>
To: Mike Bishop <>
Cc: Nick Sullivan <>, Patrick McManus <>, HTTP Working Group <>
Content-Type: multipart/alternative; boundary=94eb2c05bce8d8b37f053bf08790
Received-SPF: softfail client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-3.4
X-W3C-Hub-Spam-Report: AWL=-2.597, BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_SORBS_SPAM=2.397, SPF_HELO_PASS=-0.001, SPF_SOFTFAIL=0.665, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: 1bhjDT-0006ed-Nd 4ba1502ffbb6cd5c72599b5502288daf
Subject: Re: last call Feedback for Opportunistic Security for HTTP (Experimental)
Archived-At: <>
X-Mailing-List: <> archive/latest/32385
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

Personally I agree that there is more machinery here than is strictly
required for my tastes, but I think the arrangement I've described is
reasonable given what we're trying to accomplish.

The .wk, even absent tls-commit, brings with it a couple properties that
have been argued for here in the past. Erik (and maybe Kari? Sorry for not
looking it up) made strong cases that in the case of http:// over tls the
alternate needs a stronger opt in than TLS auth provides in order to
confirm that it is an alternate for a specific origin (including especially
the scheme). I think the concern is that if a host does indeed have a cert
for on port 443 (deployed to serve https) but that doesn't
mean it wants to see requests for there.. this is
thought to be a special truism even though h2 carries the scheme with every
request.. this is mostly out of concern over the historical handling of
gateways and scripts that would ignore the scheme. So .wk keeps things from
going off the rails by naming origins and alternate ports as well as opting
into the mixing of schemes on one connection.

I would honor the opinion of the server side dev on that one - from my pov
its not necessary for security, but it does improve robustness and is
simple for at least the server side to implement (by deploying .wk). I make
the claim about security because a MITM can always intercept the plaintext
http:// and send it to 443 with whatever scheme it wants - regardless of
the .wk filter it will ignore.

So there are 2 things that the .wk still accomplishes (opt in to origins
instead of hostnames and opt-in to mixed-scheme). I don't think
authentication invalidates those needs - if we do think those are
un-necessary then we don't need the doc at all - I agree. (It is somewhat
orthogonal but people have suggested other kinds of opt ins like other alpn
schemes.. but if we're going to do one I think .wk is the superior choice).

On Wed, Sep 7, 2016 at 2:30 PM, Mike Bishop <>

> The reason it’s currently “fuzzy” is actually very deliberate – RFC 7838
> requires “reasonable assurances” that the destination is under the same
> control as the origin, but defines only one way to do that – certs.
> Opp-Sec defines a second, the presence of .wk on both origin and
> alternate.  It’s optional in that you *can* use either – but if you don’t
> want to use certificate validation, then .wk is required as your only other
> (currently-defined) option.  I think the doc already says that, but if it’s
> not clear, we should make it clearer.

there are all kinds of weird problems here.. like tls-commit is only valid
when you are strongly auth'd but when you are strongly auth'd the doc is
saying .wk isn't required. I guess that's not untenable - but its fragile
in practice. and the opt-in isn't in play without .wk, which I really
thought people thought was necessary. (more necessary than I think it is
personally, but I thought that was the intent of the consensus). There is
also weird interaction between lifetime, ma, and tls-commit and again the
whole opportunistic and alternate nature of the thing.. that's just very
hard to square with commit. I went down that route in implementation and my
feedback is that its easy to brick and therefore probably not something I'm
overly eager to deploy.

> I agree that the commitment option in .wk conflicts with that goal a
> little bit – enhancing .wk to be a more generalized way to add parameters
> to Alt-Svc is interesting in itself.  If we have a collection of things we
> want to put in there, that warrant the new RFC on its own.  But you’re
> proposing eliminating both purposes that it currently serves, while
> retaining it, which is… interesting.  J
maybe I've cleared that up? Alternatively, maybe we should focus on the
whether those opt-ins that .wk still provides are necessary.. I would
expect others to be the primary respondents in that though..

fwiw I agree that 7838 allows http over TLS with auth. But if we feel there
is a stronger way to do that with concerns that are specific to the http://
scheme, there's nothing wrong with defining that - especially if that's
what is implemented.

> *From:* Nick Sullivan []
> *Sent:* Wednesday, September 7, 2016 10:49 AM
> *To:* Patrick McManus <>om>; HTTP Working Group <
> *Subject:* Re: last call Feedback for Opportunistic Security for HTTP
> (Experimental)
> I support this change. Requiring certificate validation for opportunistic
> security makes it more robust and simplifies the logic around retroactively
> applying certificate validation to the .wk if the tls-commit is present.
> Nick
> On Wed, Sep 7, 2016 at 10:28 AM Patrick McManus <>
> wrote:
> Hi all - Firefox Implementer Hat on here.
> Nick @cloudflare and I have been working on implementing the
> - which is in wg last call on the
> experimental track.
> Based on that experimental work, I'm going to recommend a few changes to
> the document before sending to IETF LC. I'll open issues on these too when
> I get a chance.
> 1] opportunistic security should require TLS authentication. Any other
> approach undermines the opt-in mechanism of .wk. As the PKI market has
> matured to allow truly free and automated certs certificate availability is
> no longer the chief barrier to https, and so opportunistic security should
> feel comfortable requiring real authentication. (THERE IS NO PROPOSED
> HTTPS:// STATUS AT ALL). The biggest barrier to https:// at this point
> seems to be mixed content.
> 2] /.well-known/http-opportunistic should always be required. The current
> doc is actually a little fuzzy on this, I think by accident. It refers to
> this as an "additional mechanism" in addition to authentication. But .wk
> does not really play the same role - it allows the server to opt-in to
> being an alternate for specific origins on specific ports. So if we're
> going to use it - we should always use it. (This has no bearing on https://
> alt-svc, this is just about http:// as that is all this doc governs).
> 3] get rid of tls-commit (i.e. the latch to opp sec) as this plays very
> poorly with alt-svc. The notion of alt-svc has always been that it is a
> shortcut route (or dns name if your prefer) for the same content as
> supplied at the default origin. If for any reason you cannot get there, you
> can always go back to the default origin. All of the machinery around this
> (validating alternates, etc) can happen transparently and asynchronously in
> the background until they are ready to be used. A mechanism that requires a
> characteristic of a route (auth'd TLS) but not the route itself doesn't
> play well - its far too easy to brick your site for an extended period of
> time and really ceases to be opportunistic in any meaningful sense. If
> you're up to managing this, then you're probably up to the fight of running
> https:// and using HSTS which at least has the benefit of not bringing a
> whole second technology (alt-svc) into play.
> Let me know what you think.
> -Patrick