Re: [jose] #23: Make crypto independent of binary encoding (base64)

Richard Barnes <rlb@ipv.sx> Wed, 12 June 2013 20:23 UTC

Return-Path: <rlb@ipv.sx>
X-Original-To: jose@ietfa.amsl.com
Delivered-To: jose@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7C78821E8091 for <jose@ietfa.amsl.com>; Wed, 12 Jun 2013 13:23:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.333
X-Spam-Level:
X-Spam-Status: No, score=-0.333 tagged_above=-999 required=5 tests=[AWL=0.092, BAYES_00=-2.599, FH_RELAY_NODNS=1.451, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RDNS_NONE=0.1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ssq0cB-IqSho for <jose@ietfa.amsl.com>; Wed, 12 Jun 2013 13:23:40 -0700 (PDT)
Received: from mail-ob0-x22f.google.com (mail-ob0-x22f.google.com [IPv6:2607:f8b0:4003:c01::22f]) by ietfa.amsl.com (Postfix) with ESMTP id E398C21E80A5 for <jose@ietf.org>; Wed, 12 Jun 2013 13:23:37 -0700 (PDT)
Received: by mail-ob0-f175.google.com with SMTP id xn12so14019592obc.34 for <jose@ietf.org>; Wed, 12 Jun 2013 13:23:37 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-originating-ip:in-reply-to:references:date :message-id:subject:from:to:cc:content-type:x-gm-message-state; bh=P3pXsvKSULObeVjdqBrhabFno8EyYjr/YcZNxcrFVuU=; b=DSB8aGCA2gKWitkqI37+YuSZoeel33W+fPmRHXaUJnG34xk49Jlypz/3kQOq8qunvW pxrauXVj8km5L2syWA9X+tdH88YAnVRRjbrSKNl0U96YYch1wrVKwV2JpRWhIg3FjapP N0On2pP685W8hh854Fjeb8SJcd216xhOlk9Gp1XGBVD9qSTkCa0n6fH0g0jVdI0rYG/V DsttIw5pgiwbN6Wks8iaNcSYNVasygU4j1ADgkIZ1LazXaHnkcqH5B2i27fOsLYt46se TxwWhjjKRSDEjRNFEYBcmKuBXd2FTO4lhLjA3gV4VLqk1FSHBVvAx/agaB8cfqQrq3hL /CKg==
MIME-Version: 1.0
X-Received: by 10.182.237.77 with SMTP id va13mr16740768obc.65.1371068617348; Wed, 12 Jun 2013 13:23:37 -0700 (PDT)
Received: by 10.60.84.8 with HTTP; Wed, 12 Jun 2013 13:23:37 -0700 (PDT)
X-Originating-IP: [192.1.51.101]
In-Reply-To: <BF7E36B9C495A6468E8EC573603ED94115283F43@xmb-aln-x11.cisco.com>
References: <049.69ffc5ebf959c6eac7990651822fadf9@trac.tools.ietf.org> <064.e396e921644745f7bd339ad363a7d7f7@trac.tools.ietf.org> <BF7E36B9C495A6468E8EC573603ED94115283F43@xmb-aln-x11.cisco.com>
Date: Wed, 12 Jun 2013 16:23:37 -0400
Message-ID: <CAL02cgSpYtAVVNe7AOiNhnBUqP-=CWaXw7NH2XwUu6eXgfZJ+w@mail.gmail.com>
From: Richard Barnes <rlb@ipv.sx>
To: "Matt Miller (mamille2)" <mamille2@cisco.com>
Content-Type: multipart/alternative; boundary="e89a8ff1cdcce670fb04defac99f"
X-Gm-Message-State: ALoCoQl+Yi4czqiBcOxsZn0wIx/Nnxb9cy/a0iJiQ29NxJFFfIJV2qtDZ1k1CGdVQlll9aXMvRU0
Cc: "<draft-ietf-jose-json-web-encryption@tools.ietf.org>" <draft-ietf-jose-json-web-encryption@tools.ietf.org>, "<michael.jones@microsoft.com>" <michael.jones@microsoft.com>, jose issue tracker <trac+jose@trac.tools.ietf.org>, "<jose@ietf.org>" <jose@ietf.org>
Subject: Re: [jose] #23: Make crypto independent of binary encoding (base64)
X-BeenThere: jose@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Javascript Object Signing and Encryption <jose.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/jose>, <mailto:jose-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/jose>
List-Post: <mailto:jose@ietf.org>
List-Help: <mailto:jose-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/jose>, <mailto:jose-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 12 Jun 2013 20:23:44 -0000

<impartial-analysis>
So just to be clear on the trade-off the WG has to make:

On the one hand: Breaking every existing JWT implementation in the world
On the other hand: Eternally binding ourselves to base64 encoding, even if
binary-safe encodings become available (CBOR, MsgPack, etc.)
</impartial-analysis >

<personal-opinion>
I have some sympathy with JWT implementors.  It sucks to have to refactor
code.  But I think we're literally talking about something like a 5-line
patch.  And early JWT implementors knew or should have known (to use a DC
phrase) that they were dealing with a draft spec.  As the W3C editor's
draft template says, in big bold red print, "Implementors who are not
taking part in the discussions are likely to find the specification
changing out from under them in incompatible ways."

As PHB pointed out in the other thread, it would be nice to use JWS and JWE
in place of CMS one day, without the base64 hit.  We should incur the
implementation pain now, and get the design right for the long run.  Base64
is a hack around JSON; we should build the system so that when we no longer
need that hack, it can go away.
</personal-opinion>

--Richard




On Wed, Jun 12, 2013 at 10:27 AM, Matt Miller (mamille2) <mamille2@cisco.com
> wrote:

> I did at first find it curious why the cryptographic operations were over
> the base64url-enccoded values, but I was also very focused on JWE, where I
> think the field separation problem is less of an issue (at least now).  For
> JWS, this would certainly cause problems without some manner of unambiguous
> field parameterization.
>
> I will note that unescaped NULL is not valid in JSON, so it could be used
> as a separator between the encoded header and the payload.  I do find it
> interesting if JOSE could more easily and efficiently support other
> encodings.  However, I think that while this is an interesting thought
> experiment, it seems we're too far down the path to seriously consider it
> unless the current state were shown to be horribly broken.
>
>
> - m&m
>
> Matt Miller < mamille2@cisco.com >
> Cisco Systems, Inc.
>
> On Jun 11, 2013, at 6:01 PM, jose issue tracker <
> trac+jose@trac.tools.ietf.org> wrote:
>
> > #23: Make crypto independent of binary encoding (base64)
> >
> >
> > Comment (by michael.jones@microsoft.com):
> >
> > For both serializations, you already need the base64url encoded versions
> > of the JWS Header and the JWS Payload to preserve them in transmission,
> so
> > computing them isn't an extra burden.  In the JWS Compact Serialization,
> > you already need the concatenation of the Encoded JWS Header, a period
> > character, and the Encoded JWS Payload, so computing that concatenation
> > isn't an extra burden.  Given you already have that quantity, computing
> > the signature over it is the easiest thing for developers to do, and it's
> > been shown to work well in practice.  There's no compelling reason to
> make
> > this change.
> >
> > Even for the JSON Serialization, the only "extra" step that's required to
> > compute the signature is the concatenation with the period character - to
> > prevent shifting of data from one field to the other, as described by Jim
> > Schaad in the e-mail thread.  So this step isn't actually "extra" at all
> -
> > it's necessary.  It's also highly advantageous to use exactly the same
> > computation for both serializations, which is currently the case.
> >
> > Since there is no compelling reason to make this change, and since making
> > it could enable the "shifting" problem identified by Jim, it should not
> be
> > made.
> >
> > --
> >
> -------------------------+-------------------------------------------------
> > Reporter:  rlb@ipv.sx   |       Owner:  draft-ietf-jose-json-web-
> >     Type:  defect       |  encryption@tools.ietf.org
> > Priority:  major        |      Status:  new
> > Component:  json-web-    |   Milestone:
> >  encryption             |     Version:
> > Severity:  -            |  Resolution:
> > Keywords:               |
> >
> -------------------------+-------------------------------------------------
> >
> > Ticket URL: <http://trac.tools.ietf.org/wg/jose/trac/ticket/23#comment:2
> >
> > jose <http://tools.ietf.org/jose/>
> >
> > _______________________________________________
> > jose mailing list
> > jose@ietf.org
> > https://www.ietf.org/mailman/listinfo/jose
>
>