Re: [Webpush] Application server authentication new years edition
Costin Manolache <costin@gmail.com> Fri, 08 January 2016 08:06 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 886A21ACE98 for <webpush@ietfa.amsl.com>; Fri, 8 Jan 2016 00:06:59 -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 Zctd6Nl4X7UD for <webpush@ietfa.amsl.com>; Fri, 8 Jan 2016 00:06:57 -0800 (PST)
Received: from mail-ob0-x233.google.com (mail-ob0-x233.google.com [IPv6:2607:f8b0:4003:c01::233]) (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 27DD91ACE97 for <webpush@ietf.org>; Fri, 8 Jan 2016 00:06:57 -0800 (PST)
Received: by mail-ob0-x233.google.com with SMTP id bx1so321140282obb.0 for <webpush@ietf.org>; Fri, 08 Jan 2016 00:06:57 -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=xNx0UMrXUDz9/zdCNTPbAETgGtWv86ay0nHoFqSJfKU=; b=Vw8A64DKNFDNtXpAPCQ1fH3tkK5GRIdJQlnY350Y7mbz21pBSulkISXNo8ZXSuqbur 5Y+sGg+YrinE1f4Ghhs5u5YOXpweeyvur1uJ/bWLUKdCoROrlAHbxYnMHoiNwrNT372E Pscjnr8YWuWxXBkYWhDhF38+Cv3vh9hY2h15+shB+r34wTHuIBD79mH/OREKflacEsj/ prmpEnq8y8gSsZ4RZcoSlSLoRzDHx4fhrr+m+CFZ1Pe+rn2YrZrmf3zqNt0PlYMzKUAE dWRQv9TnAuZQc8DNXAW/a1iEr2du4D3kPbayvHY+GXjl5eNpbJsBxtPXgBKWNOOLry8F ohtg==
MIME-Version: 1.0
X-Received: by 10.60.135.98 with SMTP id pr2mr71323742oeb.65.1452240416521; Fri, 08 Jan 2016 00:06:56 -0800 (PST)
Received: by 10.76.8.74 with HTTP; Fri, 8 Jan 2016 00:06:56 -0800 (PST)
In-Reply-To: <CABkgnnVwCSmu8zJ3vZa=5wgQ9K49GHMJsov6L8MWBsZJ41-sQg@mail.gmail.com>
References: <CABkgnnXBHXfY6Gz-FKGVUUoOwyJo9zaw1rWceSqVp94FypDbJA@mail.gmail.com> <CAP8-Fq=PhUcj5aaE6dvF2_+-HmVrGDyk41QBzkVxiNMxUakoag@mail.gmail.com> <CABkgnnUYkuu9pjuqLDhiWLNWzkr9ZfYRNny4ZvSKRTWie2bQyA@mail.gmail.com> <CAP8-FqnSqtMb5bT14tkycYXOOP+Xmoa9SMjuP5KkeN_ri+_NVQ@mail.gmail.com> <CABkgnnU0CP-fGpEfqLo01ZVdjT3dNVeb3MSufO1P8T2W63dNVw@mail.gmail.com> <CAP8-FqkF9X+_CjSyXB10621L0=b756REjXsbRfsL8rT6nuh9pw@mail.gmail.com> <CABkgnnW7oRTZRKDQcxf9=0f-mxKfctQQTrR5zY6q4qJtL_cPjw@mail.gmail.com> <CAP8-Fqnage13JQiz8Qkvrho-e8DWcw8p_NLd_xux+uQALwD7og@mail.gmail.com> <CABkgnnVwCSmu8zJ3vZa=5wgQ9K49GHMJsov6L8MWBsZJ41-sQg@mail.gmail.com>
Date: Fri, 08 Jan 2016 00:06:56 -0800
Message-ID: <CAP8-FqkFuqrGtH8CWgOEBvYUMCN=BUVp1LEKig9ADOwLEkcLXQ@mail.gmail.com>
From: Costin Manolache <costin@gmail.com>
To: Martin Thomson <martin.thomson@gmail.com>
Content-Type: multipart/alternative; boundary="047d7b41792127c6a00528ce1288"
Archived-At: <http://mailarchive.ietf.org/arch/msg/webpush/-E0S_F-zJLbyYkZ2mC-OOQqVWfg>
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: Fri, 08 Jan 2016 08:06:59 -0000
On Thu, Jan 7, 2016 at 1:57 PM, Martin Thomson <martin.thomson@gmail.com> wrote: > On 8 January 2016 at 05:59, Costin Manolache <costin@gmail.com> wrote: > > 1. Key identifiers ('kid') - for normal JWT, the key is known from the > > issuer or > > 'sub'. Since in our case we'll have self-generated keys, and we want to > > avoid > > having each key registered with all providers - all that a push service > will > > know > > when seeing a JWT token the first time will be the content of the token. > > So we need a way to find the public key needed to verify the content - > and > > the only one I know is to use something like the SHA of the public key. > > On subscribe - the provider can store the public key, with the kid as > lookup > > key, than > > on send it can verify. For example kid == (SHA1 or SHA256 truncated to > > 64bits) would work. > > The push service is going to need the public key, so that means > including a JWK in the message, I think. Knowing a hash of the public > key isn't enough. > The push service can store the key when subscribe() is called. I think we can make it work without a key ID - the send URL will decode to the registration, which would include the authorized public key. But I think it would still be a bit cleaner and simpler if the JWT key could be verified without having to use the URL. > > I think that we can avoid using key identifiers. We could include one > and use that to reference another header field, but it is easier to > say that there is exactly one JWT and exactly one JWK and that one > depends on the other. > That would work too, but the push service still need to verify that the key in subscribe is the same as the key in JWT. If you load the subscription - using either the URL or the key id - there is no need to send the JWK. > > 2. 'aud' field - not sure what would be the right value, maybe the > domain of > > the push provider ? > > I specified URL at the suggestion of Chris, but I had the same thought > you did. Maybe we can trim it to origin. That reduces portability > considerably and also shortens the token somewhat. > > > 3. Going back to the 'voluntary'/optional part: I'm not sure if > encryption > > is going to be required or > > optional in the final version ? > > The protocol won't absolutely require it, though it will strongly > recommend it. (I'd prefer to require it, but there you have it.) The > W3C API will require encryption. Does that make sense? > Yes. > > 4. I think we can have the sender key optional in the subscribe > operation, > > in particular for cases > > like low end IOT - not including it would give permission to anyone with > the > > URL and pubkey > > of the device to send messages. There is another case where it helps - > > pairing, in cases of D2D - > > but with restrictions ( either time, or binding the subscription to the > > sender at first use ). > > In other words: I'm not opposed to having 'optional' on the subscribe > (and > > on contact info). > > I agree. Making the JWT mandatory on the subscription would introduce > some operational problems for the cases where one endpoint has to be > used by several different application servers too. > > It shouldn't be mandatory - just recommended that subscribe indicates who is authorized to send. A push service that doesn't require authentication can just ignore it. > > 5. This may be a bit controversial :-), if we require the developers to > use > > a JOSE library to > > generate JWT tokens, signed with a ES256 - wouldn't make sense to also > allow > > them to use > > the same library to encrypt the payload for the e2e ? There is already a > > content type defined, so easy to > > differentiate. > > I don't know of any way to do that without also massively inflating > the size of the payload. There is a mapping to JWE already in the > encryption draft for those who would prefer to reuse their library. > The tricky part is key derivation, but I think that's largely > unavoidable in this case. > Yes, it doesn't seem possible to convert from JWE to the binary format, so UAs would need to support both, I don't think this would work. And it may be more confusing in the end. Costin
- Re: [Webpush] Application server authentication n… Martin Thomson
- [Webpush] Application server authentication new y… Martin Thomson
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Martin Thomson
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… jr conlin
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Benjamin Bangert
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Benjamin Bangert
- Re: [Webpush] Application server authentication n… Martin Thomson
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Martin Thomson
- Re: [Webpush] Application server authentication n… Benjamin Bangert
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Benjamin Bangert
- Re: [Webpush] Application server authentication n… Costin Manolache
- Re: [Webpush] Application server authentication n… Martin Thomson
- Re: [Webpush] Application server authentication n… Costin Manolache