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

John Bradley <ve7jtb@ve7jtb.com> Wed, 12 June 2013 21:40 UTC

Return-Path: <ve7jtb@ve7jtb.com>
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 033C721E808A for <jose@ietfa.amsl.com>; Wed, 12 Jun 2013 14:40:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Level:
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001]
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 ouJQQeM352BD for <jose@ietfa.amsl.com>; Wed, 12 Jun 2013 14:40:44 -0700 (PDT)
Received: from mail-we0-x22a.google.com (mail-we0-x22a.google.com [IPv6:2a00:1450:400c:c03::22a]) by ietfa.amsl.com (Postfix) with ESMTP id 6706E21E80F1 for <jose@ietf.org>; Wed, 12 Jun 2013 14:40:42 -0700 (PDT)
Received: by mail-we0-f170.google.com with SMTP id w57so7434254wes.1 for <jose@ietf.org>; Wed, 12 Jun 2013 14:40:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to:x-mailer:x-gm-message-state; bh=I8vqUd3+wYIG3oyBDmTJGYmIOhMVBr/uN2w5NRjQgis=; b=mcA1F7c4RFhIa0NGPukvhccz+h9RTy0Is5SoczH4f1Cp5Lxo3m3t2FXoaM92Cujafj 4B6Rm7z0ep9yci/dQfSYu7U9ePbVIg6PuN49779BWUVl13HyTp9ROfpiWvk+g5NvlcAM 7N1hQou7B3kuD+oAXJ1N39Og3wRWMekiL2RnL78/1/vco5Z48EuNXGZA4Zo6U3xz7BDq opTK8BCfGrX83Seb6e/u09br2wbJB5KtoYpCPRB6L93F/wuyLwKxa2NdSix3ae51V54k 6xfcAKC0zDAxeUzr1FUyogn6ivqDDjUryAPDXGohve4HONsp6221mZXzYO6CMEWalH2m ICVA==
X-Received: by 10.194.91.194 with SMTP id cg2mr11651648wjb.53.1371073242221; Wed, 12 Jun 2013 14:40:42 -0700 (PDT)
Received: from [192.168.0.93] ([87.213.45.202]) by mx.google.com with ESMTPSA id k10sm27530115wia.4.2013.06.12.14.40.40 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 12 Jun 2013 14:40:40 -0700 (PDT)
Content-Type: multipart/signed; boundary="Apple-Mail=_9956CA3D-7280-4E38-9AC4-CF8A828984D4"; protocol="application/pkcs7-signature"; micalg="sha1"
Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\))
From: John Bradley <ve7jtb@ve7jtb.com>
In-Reply-To: <CAL02cgSpYtAVVNe7AOiNhnBUqP-=CWaXw7NH2XwUu6eXgfZJ+w@mail.gmail.com>
Date: Wed, 12 Jun 2013 23:40:39 +0200
Message-Id: <F337BFF0-4194-405F-ACDA-644B253BA24E@ve7jtb.com>
References: <049.69ffc5ebf959c6eac7990651822fadf9@trac.tools.ietf.org> <064.e396e921644745f7bd339ad363a7d7f7@trac.tools.ietf.org> <BF7E36B9C495A6468E8EC573603ED94115283F43@xmb-aln-x11.cisco.com> <CAL02cgSpYtAVVNe7AOiNhnBUqP-=CWaXw7NH2XwUu6eXgfZJ+w@mail.gmail.com>
To: Richard Barnes <rlb@ipv.sx>
X-Mailer: Apple Mail (2.1508)
X-Gm-Message-State: ALoCoQm8DH3/TL4tqbxy/mGv63D9tUExBJx6GcgRCULSpSJgKLDTZVOGcRBUTm0fo9fWmkcwPteS
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>, "Matt Miller (mamille2)" <mamille2@cisco.com>
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 21:40:45 -0000

Independent of the current implementations.   I prefer the current base64url encoding of the segments, it is harder for people to get wrong.

I have sympathy for the constrained environment people who want BSON (binary JSON).   Having a compact binary representation probably makes sense for those environments where you can safely transmit binary objects.   

I however think that alternate binary encodings are future work and what we have meets the goal of driving adoption.

If size is the issue then you can always compress a jws on the wire and expand it at the other end before validating the signature.

I think changing at this point would be a mistake.

John B.

On 2013-06-12, at 10:23 PM, Richard Barnes <rlb@ipv.sx> wrote:

> <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
> 
> 
> _______________________________________________
> jose mailing list
> jose@ietf.org
> https://www.ietf.org/mailman/listinfo/jose