参考: 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系列
|