Re: [Webpush] Eric Rescorla's Discuss on draft-ietf-webpush-vapid-03: (with DISCUSS and COMMENT)

jr conlin <> Wed, 16 August 2017 15:38 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id AA0B81325DD for <>; Wed, 16 Aug 2017 08:38:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id JuiXNkHe96lb for <>; Wed, 16 Aug 2017 08:38:12 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:400e:c00::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id B811C13248F for <>; Wed, 16 Aug 2017 08:38:12 -0700 (PDT)
Received: by with SMTP id h68so7625957pfk.0 for <>; Wed, 16 Aug 2017 08:38:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=google; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=hE2PNgB8htXGYrcSmMD1em6IveW3/R/YOCU6HUoA3O4=; b=NoivklE7/YiWIFVoNjEPXkC4F1GNrs5j0N/Z5cjIFrx2EESiT2uvQtno2jJuvfqUQI R/vWrvA/qbVLtn9+CfBoKW2Tw1Yd6j/4nFZ3hkEKdCt4/bNhrBSH3yd70958t/GvavqJ s4JJdzKkZKZdgjMZU1PVhgBmCZyIBYPxOPFlE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=hE2PNgB8htXGYrcSmMD1em6IveW3/R/YOCU6HUoA3O4=; b=Docey/nSCKLptkoXMkD7D6/6xjmCLweHF2e31c780wUpl3ReSDNp0NHOVJnLGAOytG HLchwtJMaxN79SMWQH61tVaRKFplcH1CNYXiXxFB2b0b63LCsxLWDSRtgWNWC6TgaZ6b HldZBW/5xlKWl5zd0H6MlRrnYelLwgfYy8oVXjEk6+KY1JyV3qh6dmPR7W3uiQdhXMK/ KegEJwY2UFTMW+hvjSQ292Ja2xBpGX/FJeBeVy8NW+8LSlaARH6YatSmqYOW0fTC2dDl hYAmEIdiKzSApswKMxGRE54bd62z1rwb5l33JkvirCzMlLiweRKMYAqg0BiSS/2Adev5 NjAQ==
X-Gm-Message-State: AHYfb5i58QxKFM9S+ZiN1S+yXFQnV0TU29rtKDVNHvYpM/7VHYNwakal rE4IEc2HiQSz2xhmFZaVag==
X-Received: by with SMTP id u2mr2295035plk.169.1502897891047; Wed, 16 Aug 2017 08:38:11 -0700 (PDT)
Received: from ?IPv6:2620:101:80fc:224:f591:311:94cf:3f06? ([2620:101:80fc:224:f591:311:94cf:3f06]) by with ESMTPSA id x1sm2606124pgt.82.2017. for <> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Aug 2017 08:38:09 -0700 (PDT)
References: <> <> <> <> <> <> <>
From: jr conlin <>
Message-ID: <>
Date: Wed, 16 Aug 2017 08:38:06 -0700
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Thunderbird/54.0a2
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: multipart/alternative; boundary="------------4A20FDF05678A99DDDDA0199"
Content-Language: en-US
Archived-At: <>
Subject: Re: [Webpush] Eric Rescorla's Discuss on draft-ietf-webpush-vapid-03: (with DISCUSS and COMMENT)
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Discussion of potential IETF work on a web push protocol <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 16 Aug 2017 15:38:18 -0000

If I may lend a bit of prospective from the point of view of the Push
Service provider.

We enjoy VAPID because it provides us a way to associate contact
information with the data we receive. It's (in theory) voluntary, and we
can prefer feeds that provide the data. VAPID provides us a reasonably
low cost means to "validate" the information we get *if* the requested
URI was secured using the same key, as well as prove that there has been
no casual MITM alterations of data. As Martin notes, the bar is set
fairly high for an attacker sending malicious data to the remote customer.

>From our point of view, VAPID isn't really a security device, it's a
contact device. It's equivalent to someone stapling their business card
to their letter, and is most useful for our ops folk when things go
awry. That's why we accept feeds that use VAPID even if the requested
URI was not secured. In addition, our most pressing concern is with
sites that perform non-hostile abuse. (e.g. we currently get near 2:1
traffic from sites sending to URIs that are no longer active, and do not
provide good ways to contact their operations.)

That said, we still encourage frankly horrible security practices around
VAPID just so that the barrier to use is as low as possible. We find the
data to still be that useful. For example, we encourage application
servers to cache the VAPID header for as long as possible to reduce the
publication load.

Naturally, we look forward to the guidance provided by the working group
and will adopt their suggestions, but I did want to offer what the more
hands-on usage of the spec has been so far.

On 8/16/17 5:55 AM, Eric Rescorla wrote:
> On Tue, Aug 15, 2017 at 10:09 PM, Martin Thomson
> < <>> wrote:
>     On 16 August 2017 at 12:35, Adam Roach <
>     <>> wrote:
>     > On 8/15/17 9:31 PM, Ben Campbell wrote:
>     >>
>     >> My knee jerk response is to agree with Ekr. But it’s worth
>     discussing how
>     >> big of an incompatibility with existing code people are talking
>     about. Are
>     >> there a lot of deployed services that support vapid? Do people
>     think that
>     >> existing implementors will choose not to implement/deploy the
>     additional
>     >> protection?
>     >
>     >
>     >
>     > My inclination is to ask the WG to weigh in on this issue in
>     particular.
>     > I've received some pretty confident responses indicating that
>     VAPID has no
>     > issues with crypto-agility. Given that such is the case, it
>     seems like the
>     > question of how many deployed implementations we have is pretty
>     irrelevant:
>     > if we can't change crypto schemes at scale, then we shouldn't
>     publish this
>     > document anyway.
>     No change is free.  We'd first have to establish whether the change is
>     a net gain.
>     The presumption here seems to be that the presented design is
>     unconditionally superior.  That's not true.  This is a trade-off, and
>     - in my opinion - not one that favours any change.
>     For me the important point here is that the proposed change (in any
>     form) is of fairly marginal value.  Yes, the IETF is investing in
>     anti-bearer-token-theft technology, but in this case what you get is
>     the ability to send a message to user agent and wake it up.
>     You get that after stealing two pieces of information: the push
>     subscription URI and this token.  (That's assuming that the first was
>     not already sufficient, which it is in some cases.)  You can't send
>     arbitrary data, for that you need two more pieces of information: a
>     public key and authorization code, and neither of these appear on the
>     HTTPS connection from which the other items were stolen.
> This is a rather odd argument, as it also applies to the mechanism in
> this document as a whole.
>     So that's benefits.  Let's talk about costs.
>     If we take the suggested design the biggest challenge is key
>     management for K_p (the key that the push service would have to
>     maintain).  Maintaining a set of keys across a globally-distributed
>     service isn't free.  Given that key compromise would undermine the
>     effort we'd be putting in here, you also need a strategy for updating
>     those keys and revocation of old or compromised keys.  For that you
>     want multiple keys, which means key identifiers in messages.  You also
>     need some way of having application servers update their view of what
>     keys are current, maybe using expiration times.
> You raise several issues here:
> 1. The cost of coordinating the key. I agree that this is a real cost
> to the mechanism I proposed here, though it's possible to mitigate it
> in a number of ways (e.g., by having a centralized oracle for doing
> the verification, given that you don't need to do a lot of EC
> computation here).  
> 2. The need for revocation. You don't actually need that here, just a
> key update mechanism and a way to tell the app server "use this new
> key". But this latter mechanism is the same one you use for key
> updates and for updates to the mechanism, which this document implies
> the WG thinks is easy.
> 3. Key identifiers in messages are just specification work, so I don't
> think that that's a strong argument (see below).
> 4. Yes, it's a concern if these keys are compromised, but note that
> even if that's so, the security of the system reduces back to a bearer
> token (because you need the DH public key and the signed JWT), so that
> doesn't seem like much of a cost.
>     Technically, we also have to work out what to cover with the MAC.  My
>     experience with HTTP and signing suggests that this isn't as trivial
>     as it might seem.  I think that we could canonicalize the push
>     subscription URI, Content-Encoding header field and payload and be
>     reasonably sure that the MAC couldn't be transplanted.  Probably also
>     the RFC 8030 TTL, Urgency and Topic header fields, which suggests that
>     there needs to be a way to sign any new and relevant header fields
>     that might be added later.  This would need some more analysis than
>     I've given it here.
> I agree that there are complexities here, but they're complexities
> that are motivated by actually trying to design something with
> stronger security properties. More generally, they are costs to the
> WG, but not really costs to the world at large.
> Finally, I think this discussion has ratholed a bit on this particular
> counter-proposal. My point isn't that you should do this particular
> thing but rather that it seems like the WG decided on a bearer-token
> model without giving sufficient consideration to alternatives that
> have better security (of which this is merely one). The fact that I
> was able to produce two such alternatives in a few hours (which I'll
> concede are not in every way superior) and your response was not "yes,
> we considered those and here is a pointer to the WG archives" seems to
> lend that point some plausibility.
> As I said initially, this is ultimately a WG decision and I'm fine
> with being told by the ADs and the Chairs that they believe sufficient
> consideration has been given, in which case I'll withdraw my discuss.
> So far I haven't heard that.
> -Ekr
>     p.s., It's been a while since I've been on the receiving end of the
>     old "your code doesn't matter, you took a risk implementing an I-D"
>     argument.  As an argument it kinda stinks.  I'm embarrassed to confess
>     that I've used it in the past, despite reminding myself not to. 
> I think I explicitly labelled this argument as flippant, but I also
> don't think it's valueless, especially when put up against "Three
> large companies implemented and are too lazy to change".
> _______________________________________________
> Webpush mailing list