Re: [jose] Enveloped JSON signatures

Anders Rundgren <anders.rundgren@telia.com> Tue, 23 July 2013 06:49 UTC

Return-Path: <anders.rundgren@telia.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 2EDAF11E80F0 for <jose@ietfa.amsl.com>; Mon, 22 Jul 2013 23:49:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.599
X-Spam-Level:
X-Spam-Status: No, score=-3.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, 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 zJDa8JUWf2IR for <jose@ietfa.amsl.com>; Mon, 22 Jul 2013 23:49:39 -0700 (PDT)
Received: from smtp-out12.han.skanova.net (smtp-out12.han.skanova.net [195.67.226.212]) by ietfa.amsl.com (Postfix) with ESMTP id 8743111E80D1 for <jose@ietf.org>; Mon, 22 Jul 2013 23:49:39 -0700 (PDT)
Received: from [192.168.0.202] (213.64.1.89) by smtp-out12.han.skanova.net (8.5.133) (authenticated as u36408181) id 51B4DDE700875CBE; Tue, 23 Jul 2013 08:49:37 +0200
Message-ID: <51EE277B.4060604@telia.com>
Date: Tue, 23 Jul 2013 08:49:31 +0200
From: Anders Rundgren <anders.rundgren@telia.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7
MIME-Version: 1.0
To: Phillip Hallam-Baker <hallam@gmail.com>
References: <51E7AB29.7060600@telia.com> <CAMm+Lwgaz2XSycCqYY965Ln6s7BdbkH_XXoiYVSYzMf5RtFaCg@mail.gmail.com>
In-Reply-To: <CAMm+Lwgaz2XSycCqYY965Ln6s7BdbkH_XXoiYVSYzMf5RtFaCg@mail.gmail.com>
X-Enigmail-Version: 1.5.1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Cc: "jose@ietf.org" <jose@ietf.org>
Subject: Re: [jose] Enveloped JSON signatures
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: Tue, 23 Jul 2013 06:49:44 -0000

On 2013-07-18 17:21, Phillip Hallam-Baker wrote:
> I agree that enveloped signatures are useful. But trying to do that in XML or JSON is quite painful without resort to Base64 encoding or the like.

I have used enveloped XML signatures in XML for about 10 years and the only problem I have experienced is the many options which makes interoperability difficult.

Although I haven't yet decided on switching to JSON (for market adoption reasons only, technically there's no need at all) I have come up with a scheme that inherits stuff from JWS that could work:

{
    "ElementToBeIncludedInTheEnvelopedSignature": {
        "arbitrary_but_required_identifier_and_unique_data": "5fr70ydte",
        "PayloadData": "The_meat_of_the_message",
        "envelopedsignature": {
            "arbitrary_but_required_identifier_and_unique_data": "5fr70ydte",
            "protected": "integrity_protected_header_contents",
            "header": "non_integrity_protected_header_contents",
            "signature": "signature_contents"
        }
    }
}

Naturally you need a canonicalization scheme but I believe it could be quite simple and still even support multiple signatures.

Anders

>
> The problem is where to define the start and end of the signed text. Add some whitespace, do a trivial reformat and the position is lost. 
>
> This is where ASN.1 has an advantage over JSON. Which would be fine if it didn't also come with so many disadvantages. ASN.1 is the CPL of binary encodings and XML is the CPL of text encodings.
>
> Fortunately we now have JSON which is the C of text encodings. It may not be pretty, it may not support every need but it does the job for 95% of all needs. Unfortunately there remains a 5% in which there is no substitute for a binary encoding.
>
> Which is the reason Casten and Paul have been looking at CBOR and while I have been working on JSON-B, C and D.
>
> http://tools.ietf.org/html/draft-hallambaker-jsonbcd-00
>
>
> What I am trying to do here is not compete with JSON for the purposes that JSON is good at. In fact a compliant JSON-B reader will read JSON without modification, a JSON-B reader will read JSON or JSON-B and a JSON-C reader will read any of them.
>
> The idea of JSON-BCD is not to compete with JSON, it is to minimally extend the JSON syntax so as to address the missing 5% in which binary is essential so that we can use JSON to drive a steak through the heart of ASN.1 (preferably fillet).
>
>
> I would like to use JSON-B as a wrapper for Jose data.
>
>
>
> On Thu, Jul 18, 2013 at 4:45 AM, Anders Rundgren <anders.rundgren@telia.com <mailto:anders.rundgren@telia.com>> wrote:
>
>     Hi,
>     I'm hooked on enveloped signatures i XML.  I'm considering dropping XML for JSON.
>     I guess enveloped signatures won't be a part of JWS?
>
>     Why enveloped signatures you may wonder?
>     Well, in most schemes the root/top element is the message/type indicator
>     and it is of course nice if a signature can cover the entire message.
>
>     thanx
>     Anders
>
>     <ProvisioningInitializationResponse
>           Attestation="NxcMqBJGQi...hcKoS2wPQm7rvRc="
>           ClientTime="2013-07-09T18:13:52+02:00"
>           ID="C-13fc435e15fe1f9c7534beb0a08"
>           ServerSessionID="S-13fc435e0099bb7345b0bf57a85"
>           ServerTime="2013-07-09T18:13:52+02:00"
>           xmlns="http://xmlns.webpki.org/keygen2/beta/20121228#"
>           xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
>           xmlns:ds11="http://www.w3.org/2009/xmldsig11#">
>         <ClientEphemeralKey>
>             <ds11:ECKeyValue>
>                 <ds11:NamedCurve URI="urn:oid:1.2.840.10045.3.1.7"/>
>                 <ds11:PublicKey>BEdD3W6GslfY/AVEkRTD8MqT2R24iYnb+qvs2zP8PWXfecMNioEYR5P1VWPnKLPbRm1JMWPNrgBcTrBPebJ0eKc=</ds11:PublicKey>
>             </ds11:ECKeyValue>
>         </ClientEphemeralKey>
>         <DeviceCertificatePath>
>             <ds:X509Data>
>                 <ds:X509Certificate>MIIC2DCCAcCgAwIBAg...xtVD5cD1Gcn7KNdcJfLt</ds:X509Certificate>
>             </ds:X509Data>
>         </DeviceCertificatePath>
>         <ds:Signature>
>             <ds:SignedInfo>
>                 <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
>                 <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"/>
>                 <ds:Reference URI="#C-13fc435e15fe1f9c7534beb0a08">
>                     <ds:Transforms>
>                         <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
>                         <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
>                     </ds:Transforms>
>                     <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
>                     <ds:DigestValue>bQymGISGazFazPrSFcl45YrUBYPzF1sZ1O+29zpfx+w=</ds:DigestValue>
>                 </ds:Reference>
>             </ds:SignedInfo>
>             <ds:SignatureValue>ZN1QM20uWIfHd4rloiqtQqRRf6jAgifcFlzNxqlnk84=</ds:SignatureValue>
>             <ds:KeyInfo>
>                 <ds:KeyName>derived-session-key</ds:KeyName>
>             </ds:KeyInfo>
>         </ds:Signature>
>     </ProvisioningInitializationResponse>
>
>     _______________________________________________
>     jose mailing list
>     jose@ietf.org <mailto:jose@ietf.org>
>     https://www.ietf.org/mailman/listinfo/jose
>
>
>
>
> -- 
> Website: http://hallambaker.com/
>
>
> _______________________________________________
> jose mailing list
> jose@ietf.org
> https://www.ietf.org/mailman/listinfo/jose