区块链应用系列 - DID

参考:
https://mp.weixin.qq.com/s/3pUC0uRwQAJJ-QC_FF-QTg

https://w3c.github.io/did-core

https://www.w3.org/TR/vc-data-model/#example-42-the-relationship-property-in-a-child-s-credential

初识

如果我们要用区块链做DID(Decentralized Identity)的话,主要涉及到的三点:

  • 去中心化: 用户个人对自己身份的完全掌控,只有自己知道密码,只有自己有权限修改、读取身份信息
  • 互通: 注册一次数字身份,可以在其他服务商的任意数字服务上登录。
  • 隐私保护: 用户自己保管数据,从而能够决定服务商能够调用哪些数据.

个人认为目前我们链有能力提供DID相应的基础服务:

  • 去中心化: 链上账户的注册与权限认证, 私钥由用户自己保管, 可用于登录认证与授权
  • 互通: 链的登录验证用节点(API节点)提供账户权限认证服务, 其它互联网/数字服务商接入我们的认证SDK
  • 隐私保护: 要出示的证明是由权威机构认证后产生的proof与签名,服务商不会获取到隐私数据本身,他们能verify你出示的证明

名词解释

  • DID方法: 这使实施者能够设计特定类型的DID,以与他们信任的计算基础架构(例如分布式账本,分散式文件系统,分布式数据库,对等网络)一起使用。特定类型的DID的规范称为DID方法。使用DID的应用程序或系统的实现者可以选择支持最适合其特定用例的DID方法。(不一定非得使用区块链)

  • 可验证的数据注册表: 为了可解析为DID文档,DID通常记录在某种底层系统或网络上。无论使用哪种特定技术,任何支持记录DID并返回产生DID文档所必需的数据的此类系统都称为可验证数据注册表。示例包括分布式分类帐,分散式文件系统,任何类型的数据库,政府ID数据库, 对等网络以及其他形式的可信数据存储。

  • 分散标识符(DID): 全局唯一的永久标识符,因为它是通过密码生成和/或注册的,因此不需要集中的注册机构。 DID的通用格式在DID Core规范中定义。在DID方法规范中定义了特定的DID方案。许多(但不是全部)DID方法使用分布式分类帐技术(DLT)或某种其他形式的分散网络。

  • 分布式分类帐(DLT): 用于记录事件的非集中式系统。这些系统为参与者建立了足够的信心,使其可以依靠其他人记录的数据来做出操作决策。他们通常使用分布式数据库,其中不同的节点使用共识协议来确认密码签名的交易的顺序。随着时间的流逝,数字签名交易的链接通常使总账的历史有效地不可变。(比如 区块链)

  • DIDs: 是将DID主题 与DID文档相关联的URI,允许与该主题相关联的可信交互。

  • DID文档: 每个DID文档都可以表示加密材料,验证方法或服务端点,这提供了一组机制,使DID控制器能够证明对DID的控制。

  • DID文件: 一个DID文件可能包含DID主题本身

  • DID主题: DID主题是信息资源,如数据模型。

  • PII 应保密的个人身份信息: 如果为所有可公开获得所有DID和DID文档的公共可验证数据注册表编写了DID方法规范,则DID文档不包含任何个人数据至关重要。所有个人数据应在DID主题的控制下保存在服务端点之后。还应围绕服务端点中URL的使用进行额外的尽职调查,以防止服务端点URL中意外的个人数据或相关性的泄漏。例如,包含用户名的URL可能很危险地包含在DID文档中,因为该用户名可能具有人类意义,其方式可能会无意间泄露DID主题不同意共享的信息。使用此隐私体系结构,可以使用由DID文档中的公钥描述标识和保护的通信通道,在私人,对等基础上交换个人数据。这也使DID主体和请求方能够实施GDPR(通用数据保护条例)权利,因为没有个人数据写入不可变的分布式分类帐中

DID字符串

一个DID是一个简单的文本字符串由三个部分组成:

  • URI方案标识符(did)
  • DID方法的 标识符
  • DID方法特定的标识符。
did:example:123456789abcdefghi

DID Document

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:example:123456789abcdefghi",
  "authentication": [{
    
    "id": "did:example:123456789abcdefghi#keys-1",
    "type": "Ed25519VerificationKey2018",
    "controller": "did:example:123456789abcdefghi",
    "publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
  }],
  "service": [{
    
    "id":"did:example:123456789abcdefghi#vcs",
    "type": "VerifiableCredentialService",
    "serviceEndpoint": "https://example.com/vc/"
  }]
}

可验证凭证数据模型

该规范提供了一种标准的方法,可以以加密安全,尊重隐私和可机器验证的方式在Web上表达凭据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MqTVx2oz-1639613215336)(https://www.w3.org/TR/vc-data-model/diagrams/ecosystem.svg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9togjJWX-1639613215338)(https://www.w3.org/TR/vc-data-model/diagrams/credential-graph.svg)]

EXAMPLE 40: Usage of the nonTransferable property
{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://www.w3.org/2018/credentials/examples/v1"
  ],
  "id": "http://example.edu/credentials/3732",
  "type": ["VerifiableCredential", "ProofOfAgeCredential"],
  "issuer": "https://example.edu/issuers/14",
  "issuanceDate": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "ageOver": 21
    },
  "nonTransferable": "True",
  "proof": { ..
  "verificationMethod": "did:example:ebfeb1f712ebc6f1c276e12ec21",
  ... }
}
EXAMPLE 42: The relationship property in a child's credential
{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://www.w3.org/2018/credentials/examples/v1"
  ],
  "id": "http://example.edu/credentials/3732",
  "type": ["VerifiableCredential", "AgeCredential", "RelationshipCredential"],
  "issuer": "https://example.edu/issuers/14",
  "issuanceDate": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "ageUnder": 16,
    "parent": {
      "id": "did:example:ebfeb1c276e12ec211f712ebc6f",
      "type": "Mother"
    }
  },
  "proof": {  ... }  
}

注意

避免将同一验证方法用于多种目的


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
比特币系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

版权声明:本文为wcc19840827原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。