参考:
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相应的基础服务:
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:example:123456789abcdefghi
{
"@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": { ... }
}
避免将同一验证方法用于多种目的