Re: [OAUTH-WG] [jose] preventing confusion of one kind of JWT for another in JWT BCP

Brian Campbell <bcampbell@pingidentity.com> Thu, 27 July 2017 19:34 UTC

Return-Path: <bcampbell@pingidentity.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 543DC12F290 for <oauth@ietfa.amsl.com>; Thu, 27 Jul 2017 12:34:49 -0700 (PDT)
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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=pingidentity.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 RV3XSloH7pw7 for <oauth@ietfa.amsl.com>; Thu, 27 Jul 2017 12:34:47 -0700 (PDT)
Received: from mail-pg0-x22f.google.com (mail-pg0-x22f.google.com [IPv6:2607:f8b0:400e:c05::22f]) (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 1652B129B55 for <oauth@ietf.org>; Thu, 27 Jul 2017 12:34:47 -0700 (PDT)
Received: by mail-pg0-x22f.google.com with SMTP id 123so101790430pgj.1 for <oauth@ietf.org>; Thu, 27 Jul 2017 12:34:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pingidentity.com; s=gmail; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=lnhRzdoimbqhOwwyNhZHA9pWM1yyLBI7aSS1N48vdoY=; b=SelcqJ/rTLxB02yXyhD8ixVLZeuY+kwHNwzU0wSAadpRotn1sPizESw4vv8SexVW1P Lced2VBHl6C26O2UjO7UpI8WfPSPOy/KYRmUCGOkprq5mViwJJ4BAtodOKIBfVCqVZFY THRQm9L65GUIWQbhrENEZJk5jeWyWABD/iwJo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=lnhRzdoimbqhOwwyNhZHA9pWM1yyLBI7aSS1N48vdoY=; b=HMGnGG3M1ZuL4GB8rhatdNt4OMhf/15LY4SR0EPK0Mx6OZY5BNiXBhxP2ME5FCJoUy PUro3pTxxMjlhNPddxG+lgPlyEXSURTkhkJlqgOF/GZmrzhC0WEIqjkGr++FOOyd8FUe Yl00Znilbrnc1qsRknnZjMM35DtyQsfab/g1GKT50rDWkpmXRStvHMJ3OjAH/ADTT5O4 jS6qqijX1sBDb+hz821bVdoijump2Bwv9mL7Fm57j7E/9fHxnlJtb9AHiz0Htt+weMKh 006oGqminwIVv65ZUzJiFV4e8+B/X9F8ZmHDl+JnqbOBgL0Twv3N+CZqDnNniEZsltfN oNKg==
X-Gm-Message-State: AIVw1118JoBt+PgFxWgFvZS511vAf/X1GGrdkMHe3b2sQDc/J6TDmWbM O/SIItPaFpdmRFT4/d/+Y9gvcTAtE+5vb94mShmjeHOwX0hrlzTbwKcb7s8tKhbkwcNXvSaRSE3 MDJBY
X-Received: by 10.84.212.1 with SMTP id d1mr5579071pli.17.1501184086633; Thu, 27 Jul 2017 12:34:46 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.145.87 with HTTP; Thu, 27 Jul 2017 12:34:16 -0700 (PDT)
In-Reply-To: <CAOASepOjYBYoKYEVvCLMzZgsdyGhr2LOB-dNqekxsKFm_gxixg@mail.gmail.com>
References: <CA+k3eCRT_iuLHYrLxz+tf1MT9L9XG2jV0D0anC0h5w7A_ujEdQ@mail.gmail.com> <CAOASepOjYBYoKYEVvCLMzZgsdyGhr2LOB-dNqekxsKFm_gxixg@mail.gmail.com>
From: Brian Campbell <bcampbell@pingidentity.com>
Date: Thu, 27 Jul 2017 13:34:16 -0600
Message-ID: <CA+k3eCS-Va2AvzRhWia_ETqSDYUMBOoi=sY3jg7TbJFhhuVnZA@mail.gmail.com>
To: Nathaniel McCallum <npmccallum@redhat.com>
Cc: oauth <oauth@ietf.org>, "jose@ietf.org" <jose@ietf.org>
Content-Type: multipart/alternative; boundary="f403045d1f5e3a0e49055551a86e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/hQ8k21jqRs7acdCrUQ-VH0Kh-TU>
Subject: Re: [OAUTH-WG] [jose] preventing confusion of one kind of JWT for another in JWT BCP
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 27 Jul 2017 19:34:49 -0000

The draft describes it in
https://tools.ietf.org/html/draft-sheffer-oauth-jwt-bcp-01#section-2.7

On Thu, Jul 27, 2017 at 1:30 PM, Nathaniel McCallum <npmccallum@redhat.com>
wrote:

> What class of attacks is this trying to prevent? I frankly don't see a
> problem with confusing different types of JWT. But I may just be
> ignorant.
>
> On Thu, Jul 27, 2017 at 2:49 PM, Brian Campbell
> <bcampbell@pingidentity.com> wrote:
> > During the first WG meeting last week I asked if use of the JOSE "crit"
> > (Critical) Header Parameter had been considered as a recommendation for
> > preventing confusion of one kind of JWT for another. Time was running
> short
> > in the meeting so there wasn't much discussion and it was requested that
> I
> > take the question to the list. And so here on the list is that.
> >
> > Section 3.9 of the JWT BCP draft now recommends explicit typing using the
> > "typ" JWS/JWE header parameter but does concede that 'the use of explicit
> > typing may not achieve disambiguation from existing kinds of JWTs, as the
> > validation rules for existing kinds JWTs often do not use the "typ"
> header
> > parameter value.'  And the recommendations for how to use the Type Header
> > Parameter in JWT strongly suggest that it's not currently being used for
> any
> > validation.
> >
> > Alternatively using the JWS/JWE "crit" (Critical) Header Parameter to
> signal
> > the type/intent/profile/application of a JWT could achieve
> disambiguation
> > even in validation of existing kinds of JWTs. The critical header lists
> > other headers which must be understood and processed by the receiver and
> > that the JWS/JWE is invalid if those listed aren't understood. So a new
> > type/profile of JWT that uses the "crit" header would produce JWTs that
> > would be rejected even by existing applications of JWT validation (that
> > actually implement "crit" properly anyway).
> >
> > The JWT BCP could suggest the use of "crit" in conjunction with a
> > profile/application/type specific header. Or it could provide a bit more
> of
> > a framework like defining a registering a new JOSE header "p" (strawman
> of p
> > as a very short name for profile) and create a registry for its values. A
> > JWT header using that approach might look like the following where the
> value
> > 1 is registered as some cool new JWT profile/application. The consumer of
> > such a JWT would have to understand and process the "p" header, which
> would
> > mean checking that it had the value expected.
> >
> >      {
> >       "alg":"ES256",
> >       "crit":["p"],
> >       "p":1
> >      }
> >
> > A JOSE compliant JWT validator would reject such a JWT even for an OAuth
> > access token or OIDC id_token because the "p" header isn't known or
> > understood but is marked as critical.
> >
> > To me, that seems like an approach to preventing confusion that has more
> > teeth than the "typ" header. Which is why I asked about it last week and
> am
> > now bringing it to the list.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > CONFIDENTIALITY NOTICE: This email may contain confidential and
> privileged
> > material for the sole use of the intended recipient(s). Any review, use,
> > distribution or disclosure by others is strictly prohibited.  If you have
> > received this communication in error, please notify the sender
> immediately
> > by e-mail and delete the message and any file attachments from your
> > computer. Thank you.
> > _______________________________________________
> > jose mailing list
> > jose@ietf.org
> > https://www.ietf.org/mailman/listinfo/jose
> >
>

-- 
*CONFIDENTIALITY NOTICE: This email may contain confidential and privileged 
material for the sole use of the intended recipient(s). Any review, use, 
distribution or disclosure by others is strictly prohibited.  If you have 
received this communication in error, please notify the sender immediately 
by e-mail and delete the message and any file attachments from your 
computer. Thank you.*