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

news2024/10/7 8:19:31
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://www.coloradmin.cn/o/1467167.html

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

相关文章

什么是负载均衡集群?

目录 1、集群是什么? 2、负载均衡集群技术 3、负载均衡集群技术的实现 4、实现效果如图 5、负载均衡分类 6、四层负载均衡(基于IP端口的负载均衡) 7、七层的负载均衡(基于虚拟的URL或主机IP的负载均衡) 8、四层负载与七层…

Typora+PicGo+super-prefix+阿里云OSS设置图床

🌈个人主页:godspeed_lucip 🔥 系列专栏:实用工具 1 TyporaPicGosuper-prefix阿里云OSS设置图床1.1 设置阿里云OSS1.2 以时间戳命名图片1.2.1 安装super-prefix1.2.2 设置配置文件 1.3 批量上传图片遇到的问题1.4 参考资料 2 将ma…

OpenHarmony JS和TS三方组件使用指导

OpenHarmony JS和TS三方组件介绍 OpenHarmony JS和TS三方组件使用的是OpenHarmony静态共享包,即HAR(Harmony Archive),可以包含js/ts代码、c库、资源和配置文件。通过HAR,可以实现多个模块或者多个工程共享ArkUI组件、资源等相关代码。HAR不…

robots.txt 文件规则

robots.txt 是一种用于网站根目录的文本文件,其主要目的在于指示网络爬虫(web crawlers)和其他网页机器人(bots)哪些页面可以抓取,以及哪些页面不应该被抓取。可以看作是网站和搜索引擎机器人之间的一个协议…

Element table 实现表格行、列拖拽功能

安装包 npm install sortablejs --save <template><div class"draggable" style"padding: 20px"><el-table row-key"id" :data"tableData" style"width: 100%" border><el-table-columnv-for"(it…

osg qt5.15 osg3.6.3 osgEarth3.1 编译爬山

Demo演示&#xff1a;Qt5.15.2OSG3.6.3OsgEarth3.1的QtCreator下的msvc2019x64版本 osgQt编译 步骤一&#xff1a;下载解压 步骤二&#xff1a;CMake配置 步骤三&#xff1a;CMake配置添加osg环境 步骤四&#xff1a;CMake配置添加Qt环境 步骤五&#xff1a;CMake修改CMakeLis…

【数据结构】C语言实现图的相关操作

图 图&#xff08;Graph&#xff09;是由顶点的有穷非空集合和顶点之间边的集合组成&#xff0c;通常表示为&#xff1a;G(V,E)&#xff0c;其中&#xff0c;G 表示一个图&#xff0c;V 是图 G 中顶点的集合&#xff0c;E 是图 G 中边的集合。 术语 无向图&#xff1a;每条边…

使用HiveMQ实现Android MQTT

MQTT官网&#xff1a;https://mqtt.org/ 百度Android MQTT&#xff0c;或者B站上搜索&#xff0c;发现大多使用https://github.com/eclipse/paho.mqtt.android&#xff0c;这是Eclipse的一个Android MQTT客户端实现库&#xff0c;但是我发现这个库在运行到高版本的手机上时报错…

Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)

1、前言 Unet 图像分割之前介绍了不少&#xff0c;具体可以参考 图像分割专栏 为了实现多类别的自适应分割&#xff0c;前段时间利用numpy的unique函数实现了一个项目。通过numpy函数将mask的灰度值提取出来&#xff0c;保存在txt文本里&#xff0c;这样txt里面就会有类似0 1…

基于微信小程序的垃圾分类系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Java SpringBoot测试OceanBase

对上篇mysql导入到OceanBase中的数据库进行代码测试&#xff0c;写了个demo包含测试方法&#xff0c;在原mysql库中成功执行&#xff0c;迁移到OceanBase时看是否能不修改业务代码而成功执行测试方法&#xff1a; 代码基于SpringBoot MyBastis测试增删改查、批量新增、多表联…

在项目中应用设计模式的实践指南

目录 ✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 引言 一. 单例模式&#xff08;Singleton Pattern&#xff09; 1、实现单例模式的方式 1…

List集合之UML、特点、遍历方式、迭代器原理、泛型、装拆箱及ArrayList、LinkedList和Vector的区别

目录 ​编辑 一、什么是UML 二、集合框架 三、List集合 1.特点 2.遍历方式 3.删除 4.优化 四、迭代器原理 五、泛型 六、装拆箱 七、ArrayList、LinkedList和Vector的区别 ArrayList和Vector的区别 LinkedList和Vector的区别 一、什么是UML UML&#xff08;Unif…

20个改善编码的Python异常处理技巧,让你的代码更高效

异常处理是写好代码的一个重要的方面&#xff0c;虽然许多开发人员都熟悉基本的try-except块&#xff0c;但是有很多更深入的知识可以使异常处理更高效、更可读和更python化。所以本文将介绍关于Python异常的20个可以显著改善编码的Python异常处理技巧&#xff0c;这些技巧可以…

C/C++内存管理学习【new】

文章目录 一、C/C内存分布二、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free三、C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型四、operator new与operator delete函数五、new和delete的实现原理5.1 内置类型 六、定位new表达式(pl…

天锐绿盾 | 文件数据\资料防泄漏软件 \ 自动智能透明加密保护

怎么防止公司办公终端文件数据资料外泄? 防止公司办公终端文件数据资料外泄是非常重要的&#xff0c;以下是一些有效的措施&#xff1a; 限制访问权限&#xff1a;根据员工的职责和需求&#xff0c;设定文件和数据资料的访问权限。确保只有授权人员才能访问敏感信息。 加密存…

2024图像处理分析与信息工程国际学术会议(IACIPIE2024)

2024图像处理分析与信息工程国际学术会议(IACIPIE2024) 会议简介 2024图像处理分析与信息工程国际学术会议&#xff08;IACIPIE2024&#xff09;将在中国长沙举行。 IACIPIE2024是一个年度会议&#xff0c;探讨图像处理分析和信息工程相关领域的发展和影响&#xff0c;旨在介…

数字孪生低代码平台盘点(一):厂家介绍

特别说明&#xff1a;本文根据网上资料搜集整理而成&#xff0c;排名不分先后&#xff0c;配图是为了更好地阅读体验&#xff0c;并非表明该图为该平台所生产。如有错误之处&#xff0c;请在评论区提出。 一、优锘ChartBuilder 优锘ChartBuilder是一款基于Web的数据可视化工具…

C++的vector容器->基本概念、构造函数、赋值操作、容量和大小、插入和删除、数据存取、互换容器、预留空间

#include<iostream> using namespace std; #include <vector> //vector容器构造 void printVector(vector<int>& v) { for (vector<int>::iterator it v.begin(); it ! v.end(); it) { cout << *it << " "…

挑战杯 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…