[jose] "crit" strings don't have to be field names

"Manger, James H" <James.H.Manger@team.telstra.com> Wed, 13 March 2013 02:09 UTC

Return-Path: <James.H.Manger@team.telstra.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 4F97D11E8113 for <jose@ietfa.amsl.com>; Tue, 12 Mar 2013 19:09:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.822
X-Spam-Level:
X-Spam-Status: No, score=-0.822 tagged_above=-999 required=5 tests=[AWL=0.079, BAYES_00=-2.599, HELO_EQ_AU=0.377, HOST_EQ_AU=0.327, RELAY_IS_203=0.994]
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 702tSK+BLonh for <jose@ietfa.amsl.com>; Tue, 12 Mar 2013 19:08:59 -0700 (PDT)
Received: from ipxbno.tcif.telstra.com.au (ipxbno.tcif.telstra.com.au [203.35.82.204]) by ietfa.amsl.com (Postfix) with ESMTP id 77E4511E80D1 for <jose@ietf.org>; Tue, 12 Mar 2013 19:08:59 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="4.84,833,1355058000"; d="scan'208";a="118776994"
Received: from unknown (HELO ipcani.tcif.telstra.com.au) ([10.97.216.200]) by ipobni.tcif.telstra.com.au with ESMTP; 13 Mar 2013 13:08:54 +1100
X-IronPort-AV: E=McAfee;i="5400,1158,7012"; a="68444464"
Received: from wsmsg3704.srv.dir.telstra.com ([172.49.40.197]) by ipcani.tcif.telstra.com.au with ESMTP; 13 Mar 2013 13:08:54 +1100
Received: from WSMSG3153V.srv.dir.telstra.com ([172.49.40.159]) by WSMSG3704.srv.dir.telstra.com ([172.49.40.197]) with mapi; Wed, 13 Mar 2013 13:08:53 +1100
From: "Manger, James H" <James.H.Manger@team.telstra.com>
To: "jose@ietf.org" <jose@ietf.org>
Date: Wed, 13 Mar 2013 13:08:48 +1100
Thread-Topic: "crit" strings don't have to be field names
Thread-Index: Ac4e7R9H1kqa+ob2SUSyRmT72Gsc4AALohOPABw0fkA=
Message-ID: <255B9BB34FB7D647A506DC292726F6E1150B8469AB@WSMSG3153V.srv.dir.telstra.com>
References: <3E6B6F2D-3932-4BDC-81E1-F8CDA0F5077C@team.telstra.com>
In-Reply-To: <3E6B6F2D-3932-4BDC-81E1-F8CDA0F5077C@team.telstra.com>
Accept-Language: en-US, en-AU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US, en-AU
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: [jose] "crit" strings don't have to be field names
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, 13 Mar 2013 02:09:00 -0000

As we define the "crit" field we don't need to use field names as the critical strings.

Implementations will have a list of critical strings they understand (based on the specs that define those critical strings) and will confirm that all the "crit" values are in their list. This will be a distinct step from the other code that uses specific fields.

For instance, if we defined a simple KDF initially then later specified support for the NIST 800-56A Concat KDF it would be better to define 1 critical string "nist800-56A", instead of listing "PartyUInfo", "PartyVInfo", "SuppPubInfo", and "SuppPriveInfo" fields names in the "crit" field -- any of which might be absent from a particular JOSE message if they had some default value.

Another example: if a group insists on a strong signature verification policy (eg MUST use OCSP, MUST hard-fail if OCSP is unavailable, MUST check Certificate Transparency, and MUST log results for 7 years) there is no new header field to add to a JWS, but it could define the critical string "StrongSig1".
 

--
James Manger

 -------- Original Message --------
> Subject: [jose] Proposed resolution of header criticality issue
> From: Karen O'Donoghue <odonoghue@isoc.org>
> Date: Tue, March 12, 2013 12:31 am
> To: jose@ietf.org

>  3.  Define a new header field that lists which additional fields not
> defined in the base specifications must be understood and acted upon
> when present.  For instance, an expiration-time extension field could
> be marked as must-be-understood-and-acted-upon.  One possible name for
> this would be “crit” (critical).  An example use, along with a
> hypothetical “exp” (expiration-time) field is:
> 
>    {"alg":"ES256",
>     "crit":["exp"],
>     "exp”:1363284000
>    }