去中心化标识符(Decentralized Identifier,DID)
最后更新于
最后更新于
通常一个实体可以拥有多个身份,每个身份被分配唯一的DID,以及与之关联的非对称密钥。使用DID的优势在于:去中心化、避免身份数据被单一的中心化权威机构所控制;基于分布式公钥基础设施,每个终端的身份不是由可信第三方控制,而是由其所有者控制,终端能自主管理自己的身份;身份信息的真实数据可以在终端也可以在第三方,认证的过程不需要依赖提供身份的真实数据而实现可信访问。
DID是一种统一资源标识符,是一个不可变的字符串。DID有两个作用:一是标记任何目标的DID对象(DID Subject),可以是任何实体对象,包括人、商品、机器、动物等;二是DID通过DID URL关联到描述目标对象的DID文档,是唯一标识符,而且通过DID能够在数据库中搜索到具体的DID文档。
DID由三部分组成:一是DID方案标识符;二是DID方法标识符;三是DID方法中特定的标识符。
did
是DID scheme identifier.
example
是DID method identifier.
123456789abcdefghi
DID method中的唯一标识。
DID方法定义了一组策略和标准,用于创建、解析、更新和管理去中心化标识符(DID)及其相关元数据。这些方法确保DID在去中心化系统中能实现以下操作:
创建:生成一个唯一的DID标识符。
解析:将DID解析成其关联的文档或元数据。
更新:修改DID文档中的信息。
删除:从系统中完全移除DID。
注册:在特定的身份系统中注册DID。
替换:替换现有的DID或其关联数据。
轮换:更换DID的关联密钥或其他安全凭证。
恢复:恢复被意外删除或丢失的DID。
到期:设置DID的生命周期,确保其到期失效。
DID方法的核心目的是在去中心化环境中提供灵活性和安全性,以支持自主身份管理和数据隐私保护。
DID文档包含所有与DID对象有关的信息。DID文档通常由DID控制者负责数据写入和更改,包含与DID验证相关的密钥信息和验证方法,提供了一组使DID控制者能够证明其对DID控制的机制。DID文档样例:
在这个样例中:
@context
指定了DID文档的上下文,通常设置为W3C定义的DID标准上下文。
id
是DID本身,是文档的唯一标识符。
publicKey
是一个数组,包含了与DID关联的公钥信息,每个公钥都有一个id
、type
和publicKeyPem
属性。
authentication
是一个可选属性,包含了一组身份验证方法,每个方法都有一个type
和一个publicKey
属性。
service
是一个可选属性,包含了一组服务端点,每个服务端点都有一个id
、type
和一个serviceEndpoint
属性。
管理DID文档的DID控制者可能是DID对象的拥有者,也可能是第三方机构,不同的DID方法对DID文档的权限管理有所区别。DID控制者可以根据需要对不同的DID文档授权,验证人只能阅读被授权的DID文档,而无法获得更多信息,从而实现DID对象的信息保护。
DID文档的组成如图所示,其包括两部分。第一部分为标签,是在DID文档中可以查询到并可直接阅读的内容,包括三种标签:核心标签(如ID、控制者、验证、服务等)、扩展标签(如互联网地址等),以及一些没有在W3C DID规范注册中心注册的标签。第二部分是没有在DID文档中列出,而是借助URL等特定形式链接到第三方平台或网站系统可查的相关身份信息。为了确保最优的交互操作性和信息兼容性,W3C建立了DID规范注册中心(DID Specification Registry),保障特定形式的内容在DID文档中是可识别和解析的。当有新的标签出现,相关平台或系统需要向DID规范注册中心进行登记注册。
不同DID之间存在信息交互关系,如图所示。在W3C中有生产(Production)和消费(Consumption)的概念。创建一个DID文档的过程为生产,而将创建的这个DID文档引用至该DID对象其他DID创建过程则是消费。在验证过程中,每个DID对应的DID文档是独立的,相当于对每个DID做了信息隔离。DID控制者可以根据需要对不同的DID授权,验证人只能阅读到被授权的DID文档,无法获得更多信息,从而达到对DID对象的信息保护目的。
在DID方案中,每个设备/用户可以在不同场景、不同时间,因为不同目的,在任意可信的第三方平台登记不同的DID,相关权益和资产所有权与不同的DID直接绑定,身份主体通过持有DID来证明其对资产的所有权或具体权益。DID没有直接与现实身份生成映射关系,且DID信息也是由身份主体或可信的第三方来维护,保证了信息的安全性。
通过深入理解和探索DID技术,个体和组织可以把握未来数字身份管理的机遇,推动更加自主和安全的数字化进程。