Re: [jose] #26: Allow for signature payload to not be base64 encoded

"Jim Schaad" <ietf@augustcellars.com> Thu, 27 June 2013 16:42 UTC

Return-Path: <ietf@augustcellars.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 0145B21F9E52 for <jose@ietfa.amsl.com>; Thu, 27 Jun 2013 09:42:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1
X-Spam-Level:
X-Spam-Status: No, score=-1 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_LOW=-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 2DVxOSy+DEr4 for <jose@ietfa.amsl.com>; Thu, 27 Jun 2013 09:41:54 -0700 (PDT)
Received: from smtp2.pacifier.net (smtp2.pacifier.net [64.255.237.172]) by ietfa.amsl.com (Postfix) with ESMTP id 1F18621F9E4B for <jose@ietf.org>; Thu, 27 Jun 2013 09:41:54 -0700 (PDT)
Received: from Philemon (mccpool-66-89.ci.monterey.ca.us [205.155.66.89]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jimsch@nwlink.com) by smtp2.pacifier.net (Postfix) with ESMTPSA id E96AB2C9E7; Thu, 27 Jun 2013 09:41:53 -0700 (PDT)
From: Jim Schaad <ietf@augustcellars.com>
To: 'n-sakimura' <n-sakimura@nri.co.jp>
References: <061.c2fcfec0a75d48eb8b194991ce56157e@trac.tools.ietf.org> <076.3f5d1244c042cd87bfb07814924fcbc9@trac.tools.ietf.org> <033a01ce729b$26bc3910$7434ab30$@augustcellars.com> <51CBA981.4050006@nri.co.jp>
In-Reply-To: <51CBA981.4050006@nri.co.jp>
Date: Thu, 27 Jun 2013 09:40:57 -0700
Message-ID: <048f01ce7355$19f05bc0$4dd11340$@augustcellars.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQFbtMM0AVMbmndwUUG6vntocHGkoALWvDclApUnp/sBuDIBRpn2Hglg
Content-Language: en-us
Cc: michael.jones@microsoft.com, jose@ietf.org, draft-ietf-jose-json-web-signature@tools.ietf.org
Subject: Re: [jose] #26: Allow for signature payload to not be base64 encoded
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: Thu, 27 Jun 2013 16:42:00 -0000

Nat,

The only thing that can be signed or encrypted is an octet string. (A slight over generalization. GOST for example hashes an integer, tree hashes can do strange things but a sufficiently true statement for our purposes.)

A that being said - yes case 1 would be something you can do.  Case #2 would not be something that you can do because it is not an octet string.

If you are looking at JavaScript, in order to hash something as an octet string it can be one of three things.  A UInt8Array, an Int8Array and, due to convention, a string where the top byte of all of the code points in the string is zero.

We currently don't have an efficient way to encode the Uint8Array case, although that might not be true if we are looking at new ECMA specifications which apparently are adding more defined types and serialization methods for those types.

> -----Original Message-----
> From: n-sakimura [mailto:n-sakimura@nri.co.jp]
> Sent: Wednesday, June 26, 2013 7:55 PM
> To: Jim Schaad
> Cc: draft-ietf-jose-json-web-signature@tools.ietf.org;
> michael.jones@microsoft.com; jose@ietf.org
> Subject: Re: [jose] #26: Allow for signature payload to not be base64 encoded
> 
> Let me understand the problem.
> 
> Are you suggesting that we should be able to do something like:
> 
> Case 1:
> 
>       {"protected":<integrity-protected shared header contents>",
>        "unprotected":<non-integrity-protected shared header contents>",
>        "payload":"this is a multi\nline text payload of which a line can be very
> very very long and wrapped during transmission. "
>        "signatures":[
>         {"header":"<per-signature unprotected header 1 contents>",
>          "signature":"<signature 1 contents>"},
>         ...
>         {"header":"<per-signature unprotected header N contents>",
>          "signature":"<signature N contents>"}],
>       }
> 
> or even
> 
> Case 2:
> 
>       {"protected":<integrity-protected shared header contents>",
>        "unprotected":<non-integrity-protected shared header contents>",
>        "payload":{
> 	"this":"is a json",
> 	"payload":"which is not base64url encoded"
>        }
>        "signatures":[
>         {"header":"<per-signature unprotected header 1 contents>",
>          "signature":"<signature 1 contents>"},
>         ...
>         {"header":"<per-signature unprotected header N contents>",
>          "signature":"<signature N contents>"}],
>       }
> 
> Then, I am worried about allowing them because in general we would not
> know what would a transmission mechanism and user agents (including text
> editors) would do to them, like Mike mentioned. I do not think we should
> assume the property of the transmission mechanism in JOSE level.
> Assuming that would cause brittleness in the implementations.
> 
> For detached signature, I do not understand why you would want non-
> base64url encoded payload. The application should define how to hash the
> octet stream that it wants to calculate signature over it, and we can just
> include the base64url encoded hash in the "payload".
> Why would you like to do other encoding for the hash?

If I am not transporting the base64url encoded content, because it is not in the "payload" field, then why should I need to base64 encode it just to validate the signature.  This is the alto case.

Jim

> 
> --
> Nat Sakimura (n-sakimura@nri.co.jp)
> Nomura Research Institute
> 
> PLEASE READ:
> The information contained in this e-mail is confidential and intended for the
> named recipient(s) only.
> If you are not an intended recipient of this e-mail, you are hereby notified
> that any review, dissemination, distribution or duplication of this message is
> strictly prohibited. If you have received this message in error, please notify
> the sender immediately and delete your copy from your system.