Re: [jose] Fwd: New Version Notification for draft-barnes-jose-jsms-00.txt

Mike Jones <Michael.Jones@microsoft.com> Sat, 16 June 2012 00:08 UTC

Return-Path: <Michael.Jones@microsoft.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 63DDB11E8108 for <jose@ietfa.amsl.com>; Fri, 15 Jun 2012 17:08:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.303
X-Spam-Level:
X-Spam-Status: No, score=-5.303 tagged_above=-999 required=5 tests=[AWL=1.296, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
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 GVrR1rDYsSJT for <jose@ietfa.amsl.com>; Fri, 15 Jun 2012 17:07:59 -0700 (PDT)
Received: from tx2outboundpool.messaging.microsoft.com (tx2ehsobe004.messaging.microsoft.com [65.55.88.14]) by ietfa.amsl.com (Postfix) with ESMTP id 8934B11E8103 for <jose@ietf.org>; Fri, 15 Jun 2012 17:07:58 -0700 (PDT)
Received: from mail67-tx2-R.bigfish.com (10.9.14.246) by TX2EHSOBE005.bigfish.com (10.9.40.25) with Microsoft SMTP Server id 14.1.225.23; Sat, 16 Jun 2012 00:06:46 +0000
Received: from mail67-tx2 (localhost [127.0.0.1]) by mail67-tx2-R.bigfish.com (Postfix) with ESMTP id 1C6D13A039B; Sat, 16 Jun 2012 00:06:46 +0000 (UTC)
X-Forefront-Antispam-Report: CIP:131.107.125.8; KIP:(null); UIP:(null); IPV:NLI; H:TK5EX14HUBC101.redmond.corp.microsoft.com; RD:none; EFVD:NLI
X-SpamScore: -31
X-BigFish: VS-31(zf7Iz98dI9371I936eI542M1432I4015Izz1202hzz1033IL8275bh8275dhz2fh2a8h668h839h944hd25hf0ah)
Received-SPF: pass (mail67-tx2: domain of microsoft.com designates 131.107.125.8 as permitted sender) client-ip=131.107.125.8; envelope-from=Michael.Jones@microsoft.com; helo=TK5EX14HUBC101.redmond.corp.microsoft.com ; icrosoft.com ;
Received: from mail67-tx2 (localhost.localdomain [127.0.0.1]) by mail67-tx2 (MessageSwitch) id 1339805204154610_20896; Sat, 16 Jun 2012 00:06:44 +0000 (UTC)
Received: from TX2EHSMHS012.bigfish.com (unknown [10.9.14.250]) by mail67-tx2.bigfish.com (Postfix) with ESMTP id 2184E30004F; Sat, 16 Jun 2012 00:06:44 +0000 (UTC)
Received: from TK5EX14HUBC101.redmond.corp.microsoft.com (131.107.125.8) by TX2EHSMHS012.bigfish.com (10.9.99.112) with Microsoft SMTP Server (TLS) id 14.1.225.23; Sat, 16 Jun 2012 00:06:43 +0000
Received: from TK5EX14MBXC283.redmond.corp.microsoft.com ([169.254.2.53]) by TK5EX14HUBC101.redmond.corp.microsoft.com ([157.54.7.153]) with mapi id 14.02.0309.003; Sat, 16 Jun 2012 00:07:53 +0000
From: Mike Jones <Michael.Jones@microsoft.com>
To: "Richard L. Barnes" <rbarnes@bbn.com>
Thread-Topic: [jose] Fwd: New Version Notification for draft-barnes-jose-jsms-00.txt
Thread-Index: Ac1LP+fspDEUYmahQDWRKCnENGlR3wAAlemAAAAMKRAABCTLAA==
Date: Sat, 16 Jun 2012 00:07:52 +0000
Message-ID: <4E1F6AAD24975D4BA5B168042967394366551A9E@TK5EX14MBXC283.redmond.corp.microsoft.com>
References: <4E1F6AAD24975D4BA5B16804296739436654F786@TK5EX14MBXC283.redmond.corp.microsoft.com> <9025B64C-7B95-40F5-BE44-51A40E3A5001@bbn.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [157.54.51.36]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
Cc: "jose@ietf.org" <jose@ietf.org>
Subject: Re: [jose] Fwd: New Version Notification for draft-barnes-jose-jsms-00.txt
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: Sat, 16 Jun 2012 00:08:01 -0000

Hi Richard,

Since your message has been kicking around in the back of my mind, I'll add one more data point on the "Not being JSON" comment.  As the designers of JWT and the resulting JOSE specs saw it, there were two clear choices to able to sign/encrypt JSON data structures:

(1)  Define a canonicalization algorithm and always operate on the canonical forms
(2)  Base64 encode a representation of the data structure to preserve the precise representation

XML Canonicalization has proven to be a horror, leading to more interoperability problems than any other aspect of XMLDSIG, XMLENC, SAML, or WS-*.

We chose #2. :-)

				-- Mike

-----Original Message-----
From: Mike Jones 
Sent: Friday, June 15, 2012 3:32 PM
To: 'Richard L. Barnes'
Cc: jose@ietf.org
Subject: RE: [jose] Fwd: New Version Notification for draft-barnes-jose-jsms-00.txt

Fair enough.  I'll briefly respond to each in turn.  Before doing so, I'll say that I'm writing in the spirit of trying to increase mutual understanding and consensus, rather than taking the point of view that the status quo is the only reasonable outcome.

-- Not being JSON

This was by design, so that the results are URL-safe.  This is required, for instance, for them to be used as OAuth Bearer Tokens.  At the request of the working group, closely related pure-JSON drafts were also published.  See:

http://tools.ietf.org/html/draft-jones-json-web-signature-json-serialization-01 and
http://tools.ietf.org/html/draft-jones-json-web-encryption-json-serialization-01

Use them if you prefer if they better suit your use cases.  They could be adopted as working group documents, if there's interest.

-- Not supporting multiple recipients

The JSON serialization drafts above do, again, in response to use cases presented by the working group.

-- Lacking clear distinctions between signing and MAC

Functionally, these are very similar operations, at least from an implementation perspective, so it's not clear that making a clear distinction would help either developers or adoption in any practical way.  They achieve overlapping, but admittedly sometimes different goals.  I believe that developers can be trusted to use the algorithms that achieve their applications' goals without making a hard distinction between the two.  But I'd be interested in hearing your thoughts on why you believe a brighter-line distinction might be useful or necessary.

-- Lacking clear processing instructions for different key establishment modalities

This seems like an area where the existing drafts could be refined to add descriptions for additional establishment modalities, possibly based upon your ideas and descriptions, should the working group decide to do so.  What additional modalities do you have use cases for that you believe are not achievable or straightforward with the existing drafts?  The existing modalities supported are largely those that existing developers had told us they needed and draw both from the precursor draft-jones-json-web-* documents and draft-rescorla-jsms.

Bear in mind that the balance that the current drafts try to strike is keeping the Mandatory to Implement (MTI) feature footprint small enough that developers, including Web developers, are likely to adopt the specs, while still providing enough functionality to make them generally useful.  As in any balance, it's often possible to shift things a bit and still maintain the balance, but I'd like people to keep the ubiquitous adoption goal front-and-center when proposing additional functionality.

Ubiquitous deployment and usefulness trump theoretical completeness.  (Just look at XMLDSIG and XMLENC to understand that!) 

-- Lack of clear typing of objects

Most JSON documents aren't clearly typed; instead, developers and implementations understand from context what the meaning of each field is.  XML is clearly typed, but developers are voting with their feet by moving to JSON.

What practical advantages resulting from overlaying a typing infrastructure on JSON do you believe are worth the potential costs of doing so?  BTW, I'm not opposed to having a JSON schema description of the JOSE JSON data structures like JSMS did in http://tools.ietf.org/html/draft-rescorla-jsms-00#appendix-A, but I'll remark that this an informative tool, not a normative one.

-- Lack of versioning for future extensibility

An optional version field could be added if the working group desires, however the last time the working group discussed it, they decided not to do so.  Rather, specs like this effectively become "versioned" when revised in a way that new fields are added.  If you understand the new fields, you support that new version.  (Note that this is independent of whether there is a version number field, which according to some participants in the previous discussion, they regarded as therefore being redundant information.)

I'm not religious about not having a version number field, but often "less is more".

				Best wishes,
				-- Mike

-----Original Message-----
From: Richard L. Barnes [mailto:rbarnes@bbn.com]
Sent: Friday, June 15, 2012 3:00 PM
To: Mike Jones
Cc: jose@ietf.org
Subject: Re: [jose] Fwd: New Version Notification for draft-barnes-jose-jsms-00.txt

Ok, so maybe I should have phrased my lead-in differently.  IMO, the current JW* specs are deficient in several ways, e.g.:
-- Not being JSON
-- Not supporting multiple recipients
-- Lacking clear distinctions between signing and MAC
-- Lacking clear processing instructions for different key establishment modalities
-- Lack of clear typing of objects
-- Lack of versioning for future extensibility

Looking at the current specs, it didn't seem to me that it would be simple to adapt them to address these deficiencies.  So I just did a re-write.  If you think they can be addressed within the current framework, please explain.  I just found it simpler to start from whole cloth.

Cheers,
--Richard



On Jun 15, 2012, at 5:43 PM, Mike Jones wrote:

> Hi Richard,
> 
> If you're puzzled by specific design decisions in the JOSE documents, I encourage you to ask about them on the list.  The documents have significant history going back to mid-2010 when convergence discussions started among people with four different JSON signing & encryption proposals.  JWT and the current JOSE specs and implementations are the result.  I realize that not all the JOSE participants were part of those discussions from the beginning (although many were) and so teasing out the rationale for specific decisions might help people better understand the choices made, and hopefully thereby increase consensus behind the eventual working group choices.
> 
> If the list that you're puzzled by is the bulleted list below, maybe we can start a discussion on that basis.
> 
> 				Best wishes,
> 				-- Mike
> 
> -----Original Message-----
> From: jose-bounces@ietf.org [mailto:jose-bounces@ietf.org] On Behalf 
> Of Richard L. Barnes
> Sent: Friday, June 15, 2012 2:08 PM
> To: jose@ietf.org
> Subject: [jose] Fwd: New Version Notification for 
> draft-barnes-jose-jsms-00.txt
> 
> Dear JOSE WG,
> 
> Like Mr. Manger, once I finally got around to doing a thorough review of the JW* specs, I was kind of puzzled by some of the design decisions.  So I also went through and wrote an alternative format, this time taking a more of a cue from CMS.  A link to the document is below.
> 
> Summary of differences:
> 
>   o  JSMS is pure JSON, whereas in JWE and JWS only the header
>      parameters are represented in JSON.
> 
>   o  JSMS allows for full algorithm agility in key agreement, while JWE
>      only allows ECDH-ES.
> 
>   o  JSMS supports multiple recipients for EncryptedData and
>      AuthenticatedData objects via the inclusion of multiple WrappedKey
>      objects.  Sending a JWE to multiple recipients requires re-
>      encryption of the entire object for each recipient.
> 
>   o  The signature and MAC functions of the JWS object are separated
>      into SignedData and AuthenticatedData JSMS objects.
> 
>   o  JSMS parameters are not integrity-protected, as they are in JWE
>      and JWS.
> 
>   o  The "typ" and "zip" parameters are not defined in JSMS, but could
>      be added without significant change.
> 
>   o  JSMS requires that recipients MUST ignore unknown header
>      parameters, in order to facilitate extensibility.
> 
> I've also thrown together an initial JavaScript implementation (based on NodeJS for some python crypto glue), which is on github:
> <https://github.com/bifurcation/jsms>
> 
> Comments are very welcome.  
> 
> Thanks,
> --Richard
> 
> 
> 
> Begin forwarded message:
> 
>> From: internet-drafts@ietf.org
>> Subject: New Version Notification for draft-barnes-jose-jsms-00.txt
>> Date: June 15, 2012 4:56:09 PM EDT
>> To: rbarnes@bbn.com
>> 
>> 
>> A new version of I-D, draft-barnes-jose-jsms-00.txt has been 
>> successfully submitted by Richard Barnes and posted to the IETF 
>> repository.
>> 
>> Filename:	 draft-barnes-jose-jsms
>> Revision:	 00
>> Title:		 JavaScript Message Security Format
>> Creation date:	 2012-06-15
>> WG ID:		 Individual Submission
>> Number of pages: 25
>> URL:             http://www.ietf.org/internet-drafts/draft-barnes-jose-jsms-00.txt
>> Status:          http://datatracker.ietf.org/doc/draft-barnes-jose-jsms
>> Htmlized:        http://tools.ietf.org/html/draft-barnes-jose-jsms-00
>> 
>> 
>> Abstract:
>>  Many applications require the ability to send cryptographically 
>> secured messages.  While the IETF has defined a number of formats for 
>> such messages (e.g.  CMS) those formats use encodings which are not 
>> easy to use in modern applications.  This document describes the 
>> JavaScript Message Security format (JSMS), a new cryptographic 
>> message format which is based on JavaScript Object Notation (JSON) 
>> and thus is easy for many applications to generate and parse.
>> 
>> 
>> 
>> 
>> The IETF Secretariat
> 
> _______________________________________________
> 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