第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://www.mzph.cn/news/699557.shtml

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

相关文章

潇洒郎:2024 IDEA、Pycharm获取最新激活码获取方式

IDEA获取最新激活码 https://idea.javatiku.cn/ 手机打开,看到验证码,30分钟有效,输入验证码 获取到最新激活码

Redis(十六)缓存预热+缓存雪崩+缓存击穿+缓存穿透

文章目录 面试题缓存预热缓存雪崩解决方案 缓存穿透解决方案 缓存击穿解决方案案例:高并发聚划算业务 总结表格 面试题 缓存预热、雪崩、穿透、击穿分别是什么?你遇到过那几个情况?缓存预热你是怎么做的?如何避免或者减少缓存雪崩?穿透和击穿有什么区别?他两是…

基于大数据的智能家居销量数据分析

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

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

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

HTTP概要

文章目录 什么是HTTP?URL的结构请求报文结构请求方法GETHEADPOSTPUTDELETETRACEOPTIONSCONNECTPATCH解释 请求头字段 响应报文结构响应状态响应头字段 HTTP会话3次握手无状态协议 什么是HTTP? HTTP,即Hypertext Transfer Protocol(超文本传输协议) 它是一个”请…

Linux——简单的Shell程序

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、Shell程序思路二、Shell代码展示 一、Shell程序思路 用下图的时间轴来表示事件的发生次序…

XUbuntu22.04之解决:systemd-journald占用cpu过高问题(二百一十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Linux运维-Web服务器的配置与管理(PHP)

Web服务器的配置与管理(PHP) 项目场景 某企业在CentOS上搭建Web服务系统,以PHP作为网页开发环境,以MySQL为后台数据库。 基础知识 PHP PHP原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”(超…

iOS面试:4.多线程GCD

一、多线程基础知识 1.1 什么是进程? 进程是指在系统中正在运行的一个应用程序。对于电脑而已,你打开一个软件,就相当于开启了一个进程。对于手机而已,你打开了一个APP,就相当于开启了一个进程。 1.2 什么是线程&am…

算法题目中图和树的存储

邻接表的方式存储图和树 这就是邻接表,就是将每个结点的孩子结点用链表表示出来,再将所有结点以数组形式连起来。 存储树和图我们需要三个数组,h[N], e[N], ne[N],分别表示邻接表,结点值,结点的next值,h[i…

面试经典150题——快乐数

​"Success is not final, failure is not fatal: It is the courage to continue that counts." - Winston Churchill 1. 题目描述 2. 题目分析与解析 2.1 思路一 还是最简单的,模拟最直观的思路,就是进行一个while循环。比如:…

yolov8-seg dnn调用

接上篇一直更换torch、opencv版本都无法解决这个问题(seg调用dnn报错)。那问题会不会出在yolov8源码本身呢。yolov8的讨论区基本都看过了,我决定尝试在其前身yolov5的讨论区上找找我不信没人遇到这个问题。很快找到下面的讨论第一个帖子&…

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

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

软件性能测试和功能测试有何联系和区别?第三方软件检测机构简析

软件性能测试和功能测试是软件开发过程中非常重要的两个环节。从根本上说,它们都是为了保证软件质量和可靠性,但它们的目标和方法却有所不同。 软件性能测试是评估软件在特定负载下的性能表现,包括响应时间、吞吐量、并发能力等指标。它通过…

Jenkins详解

目录 一、Jenkins CI/CD 1、 Jenkins CI/CD 流程图 2、介绍 Jenkins 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 3、安装Jenkins 1、安装JDK 2、安装tomcat 3.安装maven 4安装jenkins 5.启动tomcat,并页面访问 5.添加节点 一、Jenkins CI/…

Opencv实战(2)绘图与图像操作

Opencv实战(2)绘图与图像操作 指路前文:Opencv实战(1)读取与像素操作 三、基本绘图 文章目录 Opencv实战(2)绘图与图像操作三、基本绘图(1).line(2).rectangle(3).circle 四、图像处理(1).颜色空间1.意义2.cvtColor()3.inRange()4.适应光线 (2).形态操作1.腐蚀2.膨…

Python语句(一)【条件语句】

条件语句:通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 其程序流程图如下: 条件语句包括:if 判断条件:执行语句…… else:执行语句……orif 判断条件1:执行语句1…… el…

电商+支付双系统项目------项目部署到服务器

我已经把这个项目的所有模块都做好了。那么,现在我们要做的就是将这个项目部署发布了。其实关于部署发布网上有很多的文章都会教,我就不写哪些很具体的步骤了,我就简单的总结一下怎么部署这个项目,让大家对项目部署有一个整体的认…

kubernetes的网络flannel与caclio

flannel网络 跨主机通信的一个解决方案是Flannel,由CoreOS推出,支持3种实现:UDP、VXLAN、host-gw udp模式:使用设备flannel.0进行封包解包,不是内核原生支持,上下文切换较大,性能非常差 vxlan模…

瑞_23种设计模式_装饰者模式

文章目录 1 装饰者模式(Decorator Pattern)1.1 介绍1.2 概述1.3 装饰者模式的结构 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析5 总结5.1 装饰者模式的优缺点5.2 装饰者模式的使用场景5.3 装饰者模式 VS 代理模式 &#x…