Re: [Webpush] Application server authentication new years edition

Costin Manolache <costin@gmail.com> Wed, 06 January 2016 04:55 UTC

Return-Path: <costin@gmail.com>
X-Original-To: webpush@ietfa.amsl.com
Delivered-To: webpush@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1E14F1A8A8E for <webpush@ietfa.amsl.com>; Tue, 5 Jan 2016 20:55:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 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, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=ham
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 u1ZzrljOhfhT for <webpush@ietfa.amsl.com>; Tue, 5 Jan 2016 20:55:26 -0800 (PST)
Received: from mail-ob0-x236.google.com (mail-ob0-x236.google.com [IPv6:2607:f8b0:4003:c01::236]) (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 0F8CB1A90EB for <webpush@ietf.org>; Tue, 5 Jan 2016 20:55:24 -0800 (PST)
Received: by mail-ob0-x236.google.com with SMTP id ba1so291534300obb.3 for <webpush@ietf.org>; Tue, 05 Jan 2016 20:55:24 -0800 (PST)
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:content-type; bh=ybFdMRmr39Qeu7X84mtAGYBY2V/uh50e+9uxEDGJWHk=; b=l0609gHkTeDifct3XM6hCKKn5FXpe6pcBy4iMWPHutgglH2fx7IiTDRPVCztTgr674 /jJWSbDEb5xIIe/OLenUecXwsNcJqXT/LAn6s0/1Jdf1j92zYC6qhlPJraBFrIJNURYF oJz3Gv3/8tDBRSvfZxf7o/pU+PR2q+iWqgkHyrlGktEh9GRcpvnDhH1RpnmKlIqLiVZP +VCXN047hyYwUtkPclQ5tAAUeHh7BKaxFD04syubAgUu4qz5wdQm0+dGPopNE6rDS3cB ZSSG3dVEfqVbhLEZFmjDbYmHk0fmoxpRoqetLyTmm0DNyp+jexpNq2ulX/XFcgg2t4qU qKxQ==
MIME-Version: 1.0
X-Received: by 10.60.135.98 with SMTP id pr2mr59854393oeb.65.1452056123456; Tue, 05 Jan 2016 20:55:23 -0800 (PST)
Received: by 10.76.8.74 with HTTP; Tue, 5 Jan 2016 20:55:23 -0800 (PST)
In-Reply-To: <CABkgnnXBHXfY6Gz-FKGVUUoOwyJo9zaw1rWceSqVp94FypDbJA@mail.gmail.com>
References: <CABkgnnXBHXfY6Gz-FKGVUUoOwyJo9zaw1rWceSqVp94FypDbJA@mail.gmail.com>
Date: Tue, 5 Jan 2016 20:55:23 -0800
Message-ID: <CAP8-Fq=PhUcj5aaE6dvF2_+-HmVrGDyk41QBzkVxiNMxUakoag@mail.gmail.com>
From: Costin Manolache <costin@gmail.com>
To: Martin Thomson <martin.thomson@gmail.com>
Content-Type: multipart/alternative; boundary=047d7b4179216ec6330528a32902
Archived-At: <http://mailarchive.ietf.org/arch/msg/webpush/nHo4mX8w0uVDUWDqXwLVJOkG9CU>
Cc: Ben Bangert <bbangert@mozilla.com>, Costin Manolache <costin@google.com>, "webpush@ietf.org" <webpush@ietf.org>
Subject: Re: [Webpush] Application server authentication new years edition
X-BeenThere: webpush@ietf.org
X-Mailman-Version: 2.1.15
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, 06 Jan 2016 04:55:29 -0000

It is important to define what "voluntary" means :-). My understanding is
that it involves
a choice made by an entity, either the app server and push service.

The only 'voluntary' choice an app server has is to not use
a push service and UAs that requires authentication/authorization.

Separate comments on the 3 elements - authentication, authorization and
contact info.

For authentication:  2.1(certificate) would be my preference, and is a well
known and established
mechanism, followed by 2.6, 2.3.
-2.4 doesn't cover authentication,
-2.5 seems too complicated (2.5 maps to Oauth1, 2.3 to Oauth2 - we know the
outcome)
-2.2 is what we use now, but doesn't work well with 3. - subscription
association - if
public keys are used.

For authorization - or "subscription association" - big +1 :-)
I like using the public key of the sender - in which case authentication
must use 2.1, 2.6 or 2.3.
Using an ID provided by the push service will be complicated if multiple
push services are used.
I don't see any other option - whatever the subscriber uses needs to be
verifiable by the push service
when send happens.

For contact - each of the authentication schemes in the draft provide a way
to include contact info, and
the choice for senders is to include it or not, and the choice for push
services is to throttle/reject
 or not. The tricky part is if any additional verification will be done by
push services.
I guess some providers (in particular free services) may be ok with a more
relaxed verification
or even allow some rate-limited sending without contact info, I personally
don't mind it - if we
can't contact a sender in case of problems we just block it.

Costin

On Tue, Jan 5, 2016 at 7:35 PM, Martin Thomson <martin.thomson@gmail.com>;
 wrote:

> With Peter's help, I've just submitted a new version of a draft that
> attempts to enumerate the options for application server
> authentication (issue #44).
>
>   https://tools.ietf.org/html/draft-thomson-webpush-vapid-01
>
> This assumes the following requirements:
>
> 1. A push service would like to be able to correlate requests from a
> particular application server over time.
>
> 2. A push service would like to be able to contact the
> operator/developer of an application server.
>
> This takes the position that any correlation or contact information is
> provided voluntarily by an application server and that we don't
> require strong authentication for application servers.
>
> Both Ben and Costin have suggested that we could (SHOULD?) construct a
> scheme to strongly authenticate servers.  Ben observed that most web
> push consumers will have HTTPS endpoints with valid server
> certificates and we could use that to construct a system that strongly
> authenticates senders.  That might be possible, but it's likely to be
> a complicated system that introduces a whole new set of technical,
> operational and privacy problems.
>
> The voluntary authentication incrementally improves the situation and
> allows us to build stronger authentication systems on top in future.
> I think that we should look at doing that, but I would be opposed to
> anything that made a more heavyweight authentication system mandatory
> to use.
>
> So I come to the question:  what levels of authentication do we want
> to support for application servers?
>
>   A. anonymous/none - push without being authenticated
>
>   B. voluntary authentication - as proposed in the draft
>
>   C. strong - proposal TBD
>


On Tue, Jan 5, 2016 at 7:35 PM, Martin Thomson <martin.thomson@gmail.com>;
wrote:

> With Peter's help, I've just submitted a new version of a draft that
> attempts to enumerate the options for application server
> authentication (issue #44).
>
>   https://tools.ietf.org/html/draft-thomson-webpush-vapid-01
>
> This assumes the following requirements:
>
> 1. A push service would like to be able to correlate requests from a
> particular application server over time.
>
> 2. A push service would like to be able to contact the
> operator/developer of an application server.
>
> This takes the position that any correlation or contact information is
> provided voluntarily by an application server and that we don't
> require strong authentication for application servers.
>
> Both Ben and Costin have suggested that we could (SHOULD?) construct a
> scheme to strongly authenticate servers.  Ben observed that most web
> push consumers will have HTTPS endpoints with valid server
> certificates and we could use that to construct a system that strongly
> authenticates senders.  That might be possible, but it's likely to be
> a complicated system that introduces a whole new set of technical,
> operational and privacy problems.
>
> The voluntary authentication incrementally improves the situation and
> allows us to build stronger authentication systems on top in future.
> I think that we should look at doing that, but I would be opposed to
> anything that made a more heavyweight authentication system mandatory
> to use.
>
> So I come to the question:  what levels of authentication do we want
> to support for application servers?
>
>   A. anonymous/none - push without being authenticated
>
>   B. voluntary authentication - as proposed in the draft
>
>   C. strong - proposal TBD
>
> _______________________________________________
> Webpush mailing list
> Webpush@ietf.org
> https://www.ietf.org/mailman/listinfo/webpush
>