- From: Orie Steele <orie@transmute.industries>
- Date: Thu, 26 Sep 2019 12:08:21 -0500
- To: Oliver Terbu <oliver.terbu@consensys.net>
- Cc: public-vc-wg@w3.org
- Message-ID: <CAN8C-_J54RM24QLVMhEF2SvYGmzxi_A20u5sYcCsTQG3x-6LDg@mail.gmail.com>
As I understand it, there is no formalization of this concept... or if there is, its not widely supported enough to be linked or described in https://www.w3.org/TR/vc-data-model/#security-considerations I think there are 2 things related to revocation that need to be defined well. 1. Key revocation (how to show that a key that is still present in a DID Document or similar is revoked)... pretty similar to the concept in PGP... http://www.pgp.net/pgpnet/pgp-faq/pgp-faq-key-revocation.html... Important to consider because it may or may not be a requirement: see the comment about signing key in 2. 2. Credential revocation with registry (as you mention). There are a couple highlights that hint at implementation requirements (the following subset pulled from search results for "revocation"): *A. Revocation by the issuer should not reveal any identifying information about the subject, the holder, the specific verifiable credential, or the verifier.* *B. Issuers revoking verifiable credentials should distinguish between revocation for cryptographic integrity (for example, the signing key is compromised) versus revocation for a status change (for example, the driver’s license is suspended).C. Designing revocation APIs that do not depend on submitting the ID of the credential. For example, use a revocation list instead of a query.* I implemented a revocation approach for an ipfs based did scheme as a PoC a while back. It used self describing JSON Schema, and a custom revocation credential format: https://github.com/transmute-industries/transmute/blob/86563bfca6e197877f0e5bb287948501bcce8e84/docs/schemas/com.transmute/didRevocationCert/jsonschema/1-0-0 This code is pretty stale at this point, but I will try and explain: https://github.com/transmute-industries/transmute/blob/86563bfca6e197877f0e5bb287948501bcce8e84/packages/transmute-did-orbit-db/scripts/utils/orbitHelpers.js#L380 We used OrbitDB which is an append only database on top of IPFS. For any given public key, you can construct a log that will only take signed entries from that key, (the log is p2p discoverable and sync-able over WebRTC). When processing a DID Document, the verifier needs to know that the "revocations" property of a public key points to a orbit db database address, that needs to be searched for messages related revocations. The messages must be signed by the key to get added to the list (property of orbitdb). The message can be a revocation of the key itself, or a revocation of a specific VC (indicated by hash). The verifier should handle these scenarios differently as noted above. The PoC worked and there was a UI demo of it but it relied on IPNS and I have since taken down the IPFS node. You may or may not be able to get it to work locally: https://github.com/transmute-industries/transmute/tree/86563bfca6e197877f0e5bb287948501bcce8e84/packages/transmute-did-orbit-db 2 reasons we abandoned this project. 1. it was mostly an experiment related to DIDs 2. there was no formalization around what we were doing from a revocation perspective I would love to help get a better formalization around revocation, if any of this is helpful feel free to use it. OS On Thu, Sep 26, 2019 at 11:31 AM Oliver Terbu <oliver.terbu@consensys.net> wrote: > Hi, > > Is there a recommended way for how to specify a revocation method in the > VC, or what information a revocation entry should provide -- e.g., status > only? I know there will be likely a revocation method registry in the > future but how do we avoid name clashes? > > I'm familiar with: > > "revocation": { > "id": "http://example.gov/revocations/738", > "type": "SimpleRevocationList2017" > }, > > We want to implement a smart contract-based revocation registry -- don't > worry, we are not going to store the revoked VCs themselves. My proposal > would be: > > "revocation": { > "id": "some-identifier-that-points-to-the-instance", > "type": "EIPxyzRevocationRegistry2019" > }, > > Thanks, > Oliver > -- *ORIE STEELE* Chief Architect www.transmute.industries <https://www.transmute.industries>
Received on Thursday, 26 September 2019 17:09:18 UTC