- From: Eric Korb <eric.korb@accreditrust.com>
- Date: Thu, 5 Feb 2015 11:26:05 -0500
- To: Dave Longley <dlongley@digitalbazaar.com>
- Cc: Nate Otto <nate@ottonomy.net>, Credentials Community Group <public-credentials@w3.org>
- Message-ID: <CAMX+RnDwcVg-+TNGJ2FXePUFQnhK939KwN8DfpEZs+Cux79kWA@mail.gmail.com>
@Dave Longley +1 Thanks for that detailed explanation. I believe we have implemented in the second form. On Thu, Feb 5, 2015 at 11:11 AM, Dave Longley <dlongley@digitalbazaar.com> wrote: > On 02/05/2015 03:45 AM, Nate Otto wrote: > > Open Creds, > > > > Either: > > 1. I've got poor reading comprehension that has prevented me from > > understanding this for months, > > 2. I'm completely wrong now, > > or 3. Does the signed JSON-LD technique we've been discussing ('Secure > > Messaging' <http://manu.sporny.org/2013/sm-vs-jose/>) allow (or is very > > close to allowing) multiple signatures on LD input without changing the > > expanded JSON-LD of the signed-output-minus-signature? This is > > interesting because that signed-output-minus-signature is the input to > > the signature-verification function, right? At least the first step of > > that algorithm is removing the signature property. > > There are two kinds of "multiple signatures" that we've discussed > providing support for [1]. The first approach is like a "counter > signature", it allows multiple entities to sign the same document. The > second is to allow nested or chained signing, that is, one or more > parties sign document A and then other parties sign document B that > embeds signed document A. > > The first approach, counter-signing, is like what you've shown in your > example below. The process for signing a document is to remove the > signature property, take the result and sign it, and then replace the > signature property with your signature appended to the set. The process > for verification is to remove the signature and take the result and > verify it. The "Secure Messaging" spec, I believe, currently only > details how to do this using a single signature, but this approach > should work for a set of signatures as well. Note we're moving that part > of the spec over to a separate spec, called "Linked Data Signatures 1.0" > [2], and we should do any corrections/clarifications over there. > > The second approach could be modeled in a number of different ways > depending on the problem domain -- it doesn't necessarily need a new > spec to detail it in a generic way. In the Identity Credentials work, > we're currently chaining signatures by taking a signed document (a > credential in this case) and nesting it under a credential property. > Then the document with the credential property is signed. This allows, > for example, the owner of a credential to place their own signature on a > set of their credentials, authorizing their transmission to a particular > domain (they can restrict the domain with their signature). > > For example: > > { > "@context": "https://w3id.org/identity/v1", > "id": "https://example.com/identities/jo", > "type": "Identity", > "credential": [{ > "id": "https://ssa.us.gov/83412", > "type": "Passport", > "claim": { > "id": "https://example.com/identities/jo", > "name": "Jo Joski", > "birthdate": "1964-11-08", > "governmentId": "123-45-6789" > }, > "expires": "2018-01-01", > "signature": { > "type": "GraphSignature2012", > "creator": "https://ssa.us.gov/keys/27", > "signatureValue": "bzva..." > } > }, > "signature": { > "type": "GraphSignature2012", > "creator": "https://example.com/identities/jo", > "domain": "https://airports.com/ORD", > "signatureValue: "mAMX..." > } > } > > Note that the two approaches could also be combined; for example, the > "credential" above may have a set of N signatures on it all asserting > that they trust the claim that has been made about the identity. > > 1. http://opencreds.org/minutes/2014-09-30/ > 2. https://web-payments.org/specs/source/ld-signatures/ > > > > > > > Here's an example of some signed JSON-LD: > > > > "value": { > > "@context": "https://w3id.org/identity/v1", > > "id": "http://ssa.us.gov/credential/8273", > > "type": "PassportCredential", > > "claim": { > > "id": "https://example.org/identities/alice", > > "name": "Alice Smith", > > "birthdate": "1988-11-02", > > "governmentId": "321-54-9876" > > }, > > "expires": "2017-02-04", > > "signature": { > > "type": "GraphSignature2012", > > "creator": "https://ssa.us.gov/keys/27", > > "signature": "r+e90REDpW....bAsNUtvQM" > > } > > } > > > > And with multiple signatures, the "signature" property just turns into > > an array of multiple values, just as it would turn into a 1-item array > > when JSON-LD expanded anyway: > > > > "value": { > > "@context": "https://w3id.org/identity/v1", > > "id": "http://ssa.us.gov/credential/8273", > > "type": "PassportCredential", > > "claim": { > > "id": "https://example.org/identities/alice", > > "name": "Alice Smith", > > "birthdate": "1988-11-02", > > "governmentId": "321-54-9876" > > }, > > "expires": "2017-02-04", > > *"signature": [{ > > "type": "GraphSignature2012", > > "creator": "https://ssa.us.gov/keys/27", > > "signature": "r+e90REDpW....bAsNUtvQM" > > },* > > > > * {* > > > > * "type": "GraphSignature2012", > > "creator": "https://example.org/keys/1", > > "signature": "r+eeeeeeee....aaaaBBBBB" > > ** }]* > > } > > > > > > Thanks for your indulgence, > > * > > * > > *Nate Otto, Developer* > > concentricsky.com <http://concentricsky.com> > > > > > > > -- > Dave Longley > CTO > Digital Bazaar, Inc. > >
Received on Thursday, 5 February 2015 16:26:54 UTC