Re: [Webpush] Non-blocking comments on -05

Martin Thomson <martin.thomson@gmail.com> Wed, 01 June 2016 02:49 UTC

Return-Path: <martin.thomson@gmail.com>
X-Original-To: webpush@ietfa.amsl.com
Delivered-To: webpush@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A91F412D932 for <webpush@ietfa.amsl.com>; Tue, 31 May 2016 19:49:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xZMMGAZJ0LVB for <webpush@ietfa.amsl.com>; Tue, 31 May 2016 19:49:05 -0700 (PDT)
Received: from mail-qk0-x22b.google.com (mail-qk0-x22b.google.com [IPv6:2607:f8b0:400d:c09::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6446412B02B for <webpush@ietf.org>; Tue, 31 May 2016 19:49:05 -0700 (PDT)
Received: by mail-qk0-x22b.google.com with SMTP id c140so4454014qke.2 for <webpush@ietf.org>; Tue, 31 May 2016 19:49:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=doEMYT9RaewmLDds3YzzVdKviYOgeoKhTI524v5ZELk=; b=vD3zQDaDhVwfwH7evinnY7f38FQzzUKbPA5Mu0djqhF8uJyPUldxBIjtSG8lzHrOJY ubX3uO6/mIvDuLtp7jdjIgGyEhkcCNOLhtBu7l8CRL63UY0jpXp1zGroM9A/ZBn3N2OE Pyrej3tUjV7EiuQnS2YzE2hExbKgWDiGBNC4CA63ITCSII8DUJp2LEE9uHtj6dihSiku 8M8/9yZKWZScqmZ5pSGOnKmC8VXkuM8+BCZOfxM/P7MU2Ku5JtobKNKE7jhS1+AIcOL3 YB3hYOUt/oY0YJcBI1KgXgtd74C8cppjUJu/NAufOYNMepVluvkMH97SMcDK+QGIR6k+ ZdBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=doEMYT9RaewmLDds3YzzVdKviYOgeoKhTI524v5ZELk=; b=VgX1vmfyklxAI7wY2NCw7xNkCkIcBoNa8FO7NA12XEAwENAmzyWotBzmVTNXvrWB6z tK1RIWgw84ftOGeMXp5e4p5XJdccALWWHba2zUG7nSLeC1lgBh9jbk3L/j/8bgPXTzE4 H+wAy3AZCX04EOG44hk0T6HEfn7wWG6BpBZ+IXeit7hu+CEjzoKzIsNN+PgVNoPGcz9Q HTw7IKyK4tt3379jpyiCOgkvNEpwNaHouFqTsPSq7HDRxV+zoOdS0p3oj6x8x5x7tPzN eG63enlIY2OPfxirCSd5ghKD6hV1HbHdLaUOiEg++tsXbEj+RdE5qeTWZhk0IvuD64IL by8Q==
X-Gm-Message-State: ALyK8tI14zF4DVp1epgkLCu3n4j6OEFLgJn4Jadb06BP7HGbpml3ShnIquUFWy3mIAK2K4cCMxIBlap67JRqZA==
MIME-Version: 1.0
X-Received: by 10.55.138.194 with SMTP id m185mr36199199qkd.48.1464749344465; Tue, 31 May 2016 19:49:04 -0700 (PDT)
Received: by 10.140.104.110 with HTTP; Tue, 31 May 2016 19:49:04 -0700 (PDT)
In-Reply-To: <CALt3x6=_yc9TegOut_g+6W5fvhP7sfW+_gwRZnEVFA5PNgER6Q@mail.gmail.com>
References: <CALt3x6=_yc9TegOut_g+6W5fvhP7sfW+_gwRZnEVFA5PNgER6Q@mail.gmail.com>
Date: Wed, 1 Jun 2016 12:49:04 +1000
Message-ID: <CABkgnnUn7NSrh_vpEhezaBDCxWkt3fdnw8KxHjRtAH=23Hat-A@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
To: Peter Beverloo <beverloo@google.com>
Content-Type: text/plain; charset=UTF-8
Archived-At: <http://mailarchive.ietf.org/arch/msg/webpush/kAbkfcj-l6DeKks7qMbDRl0_zBA>
Cc: "webpush@ietf.org" <webpush@ietf.org>
Subject: Re: [Webpush] Non-blocking comments on -05
X-BeenThere: webpush@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of potential IETF work on a web push protocol <webpush.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webpush>, <mailto:webpush-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webpush/>
List-Post: <mailto:webpush@ietf.org>
List-Help: <mailto:webpush-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webpush>, <mailto:webpush-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Jun 2016 02:49:08 -0000

On 1 June 2016 at 05:40, Peter Beverloo <beverloo@google.com> wrote:
> Hi Martin, Brian, Elio,
>
> As an implementer I can only express my gratitude for the fantastic
> creating and editing of the standard you have done - thank you *so* much!
>
> I have a few last-minute comments, none of which have to be blocking for
> the WGLC. I'll acknowledge agreement in Shida's thread momentarily.
>
>     1) Page 11, "A push message with zero TTL...push messages."
>
> This section is very loose in defining whether or not delivery receipts
> should be send for messages with TTL 0. In effect, behaviour of the Web
> Push services out there today may strong-arm future services by
> establishing developer expectations.
>
> Have we considered not sending receipts for messages with TTL=0 at all?

I'd be OK with that.  It certainly reduces the cost of TTL=0, which I
think is useful.

PR: https://github.com/webpush-wg/webpush-protocol/pull/91

>     2) Page 21, "this can be signaled by returning a 400-series status
>        code, such as 410 (Gone)."
>
> This is the only ambiguous status code reference in the standard. What is
> the reason for not settling on 404 or 410?
>
> The example of 410 for expiring subscriptions here is different from the
> 404 mentioned in 7.1 (Page 20), it would be good to make that consistent.

Yes, let's just settle on a single value.

PR: https://github.com/webpush-wg/webpush-protocol/pull/92

> I also have a few editorial comments:

PR: https://github.com/webpush-wg/webpush-protocol/pull/90

Commits in brackets below.

>     - Page 3, "Requesting the delivery of events is particularly important
>       for the W3C Push API."
>
> It is not explained why it is particularly important. Is this assumed
> knowledge of the reader? I would suggest the following addition:
>
> "...for the W3C Push API as the developer may have to request push message
> delivery from any number of push services."

[0bf550e]
"A standardized method of event delivery is particularly important for
the W3C Push API, where application servers might need to use multiple
push services."

>     - Page 4, definition of "application server"
>
> Nothing precludes an application from not needing a server side at all. I
> don't think we should change the term, but perhaps we can consider
> slightly rephrasing the definition as:
>
> "The component of an application that *usually* runs on a server and
> requests the delivery of a push message."

[e022200]

>     - Page 7, "Confidentiality protection and application server
>       authentication MUST be used to ensure that this URI is not disclosed
>       to unauthorized recipients (Section 8.3)."
>
> Is it appropriate for the standard to dictate a MUST here when the
> distribution method is defined to be application-specific? (I do agree
> with the premise.)

There are no implications for interoperability, but there are for
security.  We do that sort of dodgy MUST-ing all the time when it
comes to securing protocols.  Even when it has interoperability
penalties.  (See RFC 7568, which says "SSLv3 MUST NOT be used.")

>     - Page 7, "[subscription sets] can represent a significant efficiency
>       improvement for a push service."
>
> There are significant improvements for many types of user agents as well,
> so I would suggest rephrasing as "... improvements for push services and
> user agents."

[90307f9]

>     - Page 8, "The push message is included in the body of the request."
>
> While covered by Section 8.1 in the Operational Considerations, given the
> strong focus on security and privacy considerations throughout the rest
> of the standard I think it would be appropriate to mention the strong
> preference for encryption here?

[ee8ca46]
"The ciphertext of the push message is included in the body of the request."

Yes, there are cases where this won't be true because confidentiality
and integrity are provided by other means, but those people can just
say that they are using the double-rot13 cipher.

>
>     - Page 11, page 13: s/acknowledgement receipts/delivery receipts/.

[51ae2d0]

>     - Page 12, 13: Both "update" and "replace" are used to describe the
>       same operation. I don't think that consistently using "replace"
>       would change the meaning of this section- could we?

[884fc85]
That's a fairly big change.

> One final thing that I'm on the fence about is that the push service MUST
> NOT forward the Urgency value to the user agent. I can see uses, but also
> concerns in the scenario of a compromised or malicious push service. Is
> this the reason behind the strong language?

The general rule that I've followed here is that anything that could
be from an application server needs to be authenticated when it is
sent to the user agent.  Anything else is clearly from the push
service and can be discarded.

Maybe that's excessive paranoia and I've been spending too much time
with cryptographers lately.  If the information is important it can't
be included in the payload.