第3部分 原理篇2去中心化数字身份标识符(DID)(3)

3.2.2.4. DID文档 (DID Document)

本聪老师:DID标识符和DID URL还都只是ID,必须为它附加一个基本属性才可以证明是该主体独有的。这个就是我们下面介绍的DID文档。

第3部分 原理篇2去中心化数字身份标识符(DID)(3)

本聪老师:每个DID标识符都唯一对应一个DID文档,也可以说,每个DID标识符都可以被解析为一个唯一的DID文档。DID文档做什么用呢?简单来讲,DID文档中存有主体的公钥和验证相关的内容。使用这个公钥,就可以验证与 DID 主体交互相关的服务。DID文档可以放在区块链或者其他存储中,方便查询检索。

小云:对,我们回忆一下基础知识部分提过的,私钥加密的内容,公钥可以验证所有者的身份。

本聪老师:具体来讲,DID文档就是一个JSON格式字符串,示例如下:

{

“@context”: [

“https://www.w3.org/ns/did/v1”,

“https://w3id.org/security/suites/ed25519-2020/v1”

]

“id”: “did:example:123456789abcdefghi”,//DID标识符

“authentication”: [//下面是认证方式

{

“type”: “RsaSignatureAuthentication2018”,//签名算法

“publicKey”: “did:example:123456789abcdefghi#keys-1″//公钥

},

“service”: {

“type”: “DidAuthService”,

“serviceEndpoint”: //服务端点”https://auth.example.com/did:example:123456789abcdefg”

}

]

}

小明:我看到了公钥和签名算法。

本聪老师:不仅是这些。我们可以看到,DID文档内容由key/value这种条目组成,条目分为两大类:属性类和特定表示法(Representation-specific entry)类,我们常见到的是属性类,比如我们看到的:

id属性:“did:example:123456789abcdefghi”是主体对应的身份标识符,表明这个DID文档是关于此did标识符的文档,包含的都是与此相关的信息。

authentication属性:这个属性指定 DID 主体应如何进行身份认证,用于登录网站或参与任何类型的质询-响应协议等目的,包括签名算法和公钥等内容。公钥是DID文档最重要的内容之一,这里的“did:example:123456789abcdefghi#keys-1”指向DID标识符下的某个公钥,用于数字签名、DID主体身份验证。“RsaSignatureAuthentication2018”是签名算法类型。与认证属性相关的还有assertionMethod属性(用于发布与可验证凭证相关的声明目的)、keyAgreement属性(用于指定实体如何生成加密材料,以传输用于 DID 主体的机密信息)、CapabilityInvocation和CapabilityDelegation(指定授权协助或者委托给其他DID主体处理事物,比如更新DID文档、访问权限等等)。

service属性:包括服务类型和服务端点。描述在服务端点指示的URL“https://auth.example.com/did:example:123456789abcdefg”,采用服务类型所示的方式与DID主体进行互动。

除此之外,还会有DID 控制器属性(是指有权对 DID 文档进行更改的实体)、verifyMethod属性(验证或授权与 DID 主体或相关方的交互)和时间戳(DID文档创建和更新的时间)。

小云:有个问题,除了上面提到的验证DID标识符主体的身份,DID文档还有哪些用途呢?

本聪老师:DID标识符可以被解析为DID文档,解析的过程我们后面会学习。可以利用DID文档接受别人的验证,证明DID标识符所属主体的身份和属性,还可以授权他人访问自己的资源或服务等等。

3.2.2.5. DID控制器 (DID controller)

小天:谁来管理DID文档的内容呢?

本聪老师:这就是我们要介绍的DID控制器,顾名思义,DID控制器就是控制DID主体的现实世界的人或者组织,有权对主体的DID文档进行更新。具体说,DID控制器的主要作用就是创建和更新自己的DID文档,管理自己的公钥和私钥,与其他DID主体进行身份验证和授权。

本聪老师:问大家个问题:DID控制器与DID主体是什么关系?

小明:我觉得大部分情况下DID控制器就是DID主体吧?

小云:应该有其他情况,比如DID控制器与DID主体不是同一实体,比如无能力管理DID文档的人,比如儿童,还有设备物资DID文档,必须有实体代表他或者它来管理。

本聪老师:对,大家说的都对。

3.2.2.6. DID解析器 (DID resolver)

本聪老师:下面我们来介绍DID解析器。DID解析器实际上是软件系统中的一个组件,负责将接收到的DID标识符解析成DID文档。具体来说,DID解析器负责提供DID文档的查询接口,根据对应的DID方法(DID Method)执行检索对应的DID文档,并验证DID文档的完整性和有效性。

小天:我理解解析的过程就是从存储DID文档的区块链或者其他存储中检索的过程。

本聪老师:简单来讲是这样。解析的详细过程,我们后面还会学习。

3.2.2.7. DID方法 (DID Method)

本聪老师:下面我们学习DID方法这个概念。每个DID方法就相当于一个自治域网络,需要制定自治域内的微协议,包含命名空间规则、CRUD和解析机制、对所有依赖关系的引用,如标准化的加密签名方案,有时甚至是针对一套基础设施的模型和算法。DID方法的创建和管理需要遵循 DID 方法规范,另外也需要向W3C志愿者维护的列表登记注册。W3C有3个文档与DID方法管理相关,分别是:《DID核心架构、数据模型及表示法》【Decentralized Identifiers (DIDs) v1.0 Core architecture, data model, and representations,简称DID CORE】的第8章DID方法,《DID规范注册登记表》【DID Specification Registries】,《DID方法评测标准》【DID rubric】对DID方法规范有详细的阐述。其中DID CORE规定了DID方法的语法规范、运行要求、安全要求和隐私要求,DID规范注册登记表规定了机构向W3C登记注册自己的DID方法的注意事项以及DID文档的要求。第三个文档DID方法评测标准是对机构构建的DID方法进行评测的框架。附录部分有这3个文档的下载地址。

小明:组织构建的DID方法必须向W3C注册吗?

本聪老师:登记注册过程有志愿者根据DID core进行规范合规性检查,不符合规范要求的,不会被登记。登记注册过程相当于公告牌,供专业人士和同行评估。下面这个链接就列出了已经登记注册的DID方法:DID Specification Registries

小明:可以看到一些知名的机构,Microsoft、IBM、Mastercard、Tencent、Baidu、uPort,还有泰尔英福。

本聪老师:对,可以看到,大多数方法都注册到了区块链上,包括公链,Bitcoin、BSC、Ontology、Polygon,还有联盟链Hyperledger、 FabricFISCO BCOS。点击每个方法名,就可以跳转到对应的方法规范,以腾讯深圳注册的TDID为例(地址:https://github.com/TencentCloud-Blockchain/TDID-Method-Specification),介绍了TDID方法的特点,适用场景、DID文档结构、CRUD操作方法及安全隐私考虑。也就是说,各个组织机构可以根据规范自行设计部署DID方法,用户的DID标识符完全由自己创建和掌握,这就是DID数字身份去中心化的一个体现。另一个体现是DID方法可以部署在去中心化的区块链。当然机构可以根据自己的情况,W3C规范中明确DID方法实现也可以部署在中心化系统中。

3.2.2.8. 可验证数据注册表 (verifiable data registry,VDR)

小云:刚才我们看到大多数DID方法都注册到区块链上,那么具体这个区块链都存储哪些内容呢?

本聪老师:我们接下来要介绍的可验证数据注册表就负责通过分布式方式部署存储DID方法产生的数据。可验证数据注册表简单理解就是登记注册发布过程是可验证的。最常见的形式是公共可读分布式账本(如区块链或DAG)的产品或者平台,注册过程数据发布到不可篡改的区块链,成为DID方法相关数据的 “可验证数据注册表 “。

小云:看起来,每种DID方法都会根据自己的业务场景,选择自己适合的可验证注册表作为基础设施。

小天:那么,有没有具体产品或者平台可以直接使用呢?

本聪老师:有,宣称提供可验证数据注册表平台的有Verida(该平台允许用户将数据存储在 IPFS 上,官网:https://verida.io/)、Sovrin(使用 VDR 来存储和验证用户的数字身份,官网:https://sovrin.org/)等。


本文内容摘自《对话去中心化数字身份》。作者:乔布施。首发平台:https://ytm.app

欢迎转载,请注明出处及作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2804965.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【前端素材】推荐优质后台管理系统Symox模板(适用电商,附带源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】

欢迎来CILMY23的博客喔,本篇为​【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】,图文讲解四种内存函数,带大家更深刻理解C语言中内存函数的操作&…

Seurat包学习:如何查看R包函数源代码

​我们很多时候都很好奇作者的r包是如何写出来的,手痒的时候就想学习一下源码,顺便改一改 问题来源 为什么要写今天这个推文呢? 起因是因为我想使用seurat自带函数画热图,奈何这个图不是那么好看 DoHeatmap(pbmc,features fea…

[HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

编译GreatSQL with RocksDB引擎

GreatSQL里也能用上RocksDB引擎 1. 前言 RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点: 高性能: LSM 树结构使得RocksDB在写入密集型负载下表现…

2024-02-23 作业

作业要求: 1.自己实现单向循环链表的功能 2.整理思维导图 3.复习前面顺序表和链表的代码,重写链表逆置函数 1.自己实现单向循环链表的功能 运行代码: main.c #include "loop_list.h" int main(int argc, const char *argv[]) {loop_p H cr…

07 STL 简介

目录 什么是STLSTL的版本STL的六大组件STL的重要性如何学习STLSTL的缺陷 1. 什么是STL c标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构和算法的软件框架 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee在惠普实验室的…

【Python笔记-设计模式】装饰器模式

一、说明 装饰器模式是一种结构型设计模式,旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下,动态地给对象添加新的功能或职责,实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…

互联网广告投放与IP地理位置定位

随着互联网的发展和普及,互联网广告投放成为各行业推广营销的重要方式之一。而结合IP地理位置定位技术,可以实现精准定向,提高广告投放的效果和精准度。IP数据云将探讨互联网广告投放与IP地理位置定位的关系,分析其优势和应用场景…

Window部署SkyWalking

SkyWalking mysql的驱动依赖 选择下载版本 v9.4 现在后解压缩目录结构 一、修改config目录文件 application.yml 修改1: selector: ${SW_STORAGE:h2} 修改后: selector: ${SW_STORAGE:mysql} 修改2:使用mysql数据库 mysql: properti…

鼠标右键助手专业版 MouseBoost PRO for Mac v3.3.6中文破解

MouseBoost Pro mac版是一款简单实用的鼠标右键助手专业版,MouseBoost Pro for Mac只要轻点你的鼠标右键,就可以激活你想要的各种功能,让你的工作效率大幅度提高,非常好用。 软件下载:MouseBoost PRO for Mac v3.3.6中…

Electron实战之环境搭建

工欲善其事必先利其器,在进行实战开发的时候,我们最终的步骤是搞好一个舒服的开发环境,目前支持 Vue 的 Electron 工程化工具主要有 electron-vue、Vue CLI Plugin Electron Builder、electron-vite。 接下来我们将分别介绍基于 Vue CLI Plu…

【算法与数据结构】417、LeetCode太平洋大西洋水流问题

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:题目要求雨水既能流向太平洋也能流向大西洋的网格。雨水流向取决于网格的高度。一个比较直接的方式是对…

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录 4.1 引言 4.2 一个例子 4.3 ARP缓存 4.4 ARP帧格式 4.5 ARP例子 4.6 ARP缓存超时 4.7 代理ARP 4.8 免费ARP和地址冲突检测 4.9 ARP命令 4.10 使用ARP设置嵌入式设备IPv4地址 4.11 与ARP相关攻击 4.12 总结 4.1 引言 地址解析: IPv4:AR…

社交媒体变革者:剖析Facebook对在线互动的贡献

随着数字化时代的蓬勃发展,社交媒体已经成为人们日常生活中不可或缺的一部分。在这个领域的发展中,Facebook作为先行者和领导者,对在线互动的演变和发展产生了深远的影响。本文将深入剖析Facebook在社交媒体领域的贡献,以及它对在…

MySql-DQL-条件查询

目录 条件查询修改数据 查询 姓名 为 Name10 的员工查询 id小于等于5 的员工信息查询 没有分配职位 的员工信息查询 有职位 的员工信息查询 密码不等于 password1 的员工信息查询 入职日期 在 2000-01-01 (包含) 到 2010-01-01(包含) 之间的员工信息查询 入职时间 在 2000-01-0…

跨区互联组网怎么做?SD-WAN专线可以实现吗?

在当今数字化时代,企业不断扩张,跨区域互联成为业务发展的必然需求。然而,跨区互联组网涉及到复杂的网络架构和连接,传统的网络方案往往难以满足高性能、高可靠性和低成本的要求。SD-WAN专线技术的出现,为跨区互联组网…

C++:Level2阶段测试

总结。 只要你看过我的文章,哪怕只是一半,一定能够过关! 准备好开始测试氻吗? 判断题,每题4分,共100分 1、Red Panda Dev C Maker【3.0自创黑客版】添加的头文件有Heike.h() 2、在…

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法: 1)在普通方法中,this总是指向调用该方法的对象。在普通方法中,它是作为一种隐式参数一直就存在着(这句话的意思,就是其实在普通方法中,编译器一直就…

go使用trpc案例

1.go下载trpc go install trpc.group/trpc-go/trpc-cmdline/trpclatest 有报错的话尝试配置一些代理(选一个) go env -w GOPROXYhttps://goproxy.cn,direct go env -w GOPROXYhttps://goproxy.io,direct go env -w GOPROXYhttps://goproxy.baidu.com/…