第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.rhkb.cn/news/263722.html

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

相关文章

kubernetes负载均衡部署

目录 1.新master节点的搭建 对master02进行初始化配置(192.168.88.31) 将master01的配置移植到master02 修改master02配置文件 2.负载均衡的部署 两台负载均衡器配置nginx 部署keepalived服务 所有node节点操作 总结 实验准备: k8s…

LangChain Agent v0.2.0简明教程 (上)

快速入门指南 – LangChain中文网 langchain源码剖析系列课程 九天玩转Langchain! 1. LangChain是什么2. LangChain Expression Language (LCEL)Runnable 接口3. Model I/O3.1 Prompt Templates3.2 Language Model3.3 Output ParsersUse case(Q&A with RAG)1. LangChain…

C++多线程同步(上)

多线程同步 引言总述详情互斥锁示例运行结果分析条件变量示例一实现分析优化运行结果示例二实现代码运行结果示例三实现代码运行结果读写锁示例实现代码注意分析运行结果附言实现运行结果运行结果个人心得引言 项目中使用多线程,会遇到两种问题,一种是对共享资源的访问时需要…

《高效使用Redis》- 由面试题“Redis是否为单线程”引发的思考

由面试题“Redis是否为单线程”引发的思考 很多人都遇到过这么一道面试题:Redis是单线程还是多线程?这个问题既简单又复杂。说他简单是因为大多数人都知道Redis是单线程,说复杂是因为这个答案其实并不准确。 难道Redis不是单线程&#xff1f…

redis哨兵机制

目录 前言 1.基本概念 2.安装部署(基于docker) 3.重新选举 4.选举原理 5.总结 前言 Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于上了一…

MATLAB:数组与矩阵

2.1 数组运算 数组运算时MATLAB计算的基础。由于MATLAB面向对象的特性,这种数值数组称为MATLAN最重要的一种内建数据类型,而数组运算就是定义这种数据结果的方法。 2.1.1 数组的创建和操作 在MATLAB中一般使用方括号“[]”、逗号“,”、空格和分号“;…

详解 CSS 选择器

详解 CSS 选择器 选择器的功能 选中页面中指定的标签元素。 要先选中元素,才能设置元素的属性,就好比策略类指挥游戏,比如海岛奇兵这类的, 需要先选中单位, 再指挥该单位行动。 CSS 选择器的种类 注:以下介绍的选择器只是CSS2标…

Redis分布式锁的正确使用姿势

前言 分布式锁在日常开发中,用处非常的多。包括但不限于抢红包,秒杀,支付下单,幂等,等等场景。 分布式锁的实现方式有多种,包括redis实现,mysql实现,zookeeper实现等等。而其中redis…

【生活】浅浅记录

各位小伙伴们好鸭,今天不是技术文章,浅浅记录一下最近几个月的收获😊 新的一年,一起努力,加油加油!

解决IDEA搜不到插件

File -> Settings -> Plugins https://plugins.jetbrains.com/ 完成以上操作即可搜到插件

R cox回归 ggDCA报错

临床预测模型的决策曲线分析(DCA):基于ggDCA包 决策曲线分析法(decision curve analysis,DCA)是一种评估临床预测模型、诊断试验和分子标记物的简单方法。 我们在传统的诊断试验指标如:敏感性&a…

OpenGL ES (OpenGL) Compute Shader 计算着色器是怎么用的?

OpenGL ES (OpenGL) Compute Shader 是怎么用的? Compute Shader 是 OpenGL ES(以及 OpenGL )中的一种 Shader 程序类型,用于在GPU上执行通用计算任务。与传统的顶点着色器和片段着色器不同,Compute Shader 被设计用于在 GPU 上执行各种通用计算任务,而不是仅仅处理图形…

压缩感知常用的测量矩阵

测量矩阵的基本概念 在压缩感知(Compressed Sensing,CS)理论中,测量矩阵(也称为采样矩阵)是实现信号压缩采样的关键工具。它是一个通常为非方阵的矩阵,用于将信号从高维空间映射到低维空间&…

二蛋赠书十六期:《高效使用Redis:一书学透数据存储与高可用集群》

很多人都遇到过这么一道面试题:Redis是单线程还是多线程?这个问题既简单又复杂。说他简单是因为大多数人都知道Redis是单线程,说复杂是因为这个答案其实并不准确。 难道Redis不是单线程?我们启动一个Redis实例,验证一…

深度学习系列59:文字识别

1. 简单文本: 使用google加的tesseract,效果不错。 首先安装tesseract,在mac直接brew install即可。 python调用代码: import pytesseract from PIL import Image img Image.open(1.png) pytesseract.image_to_string(img, lan…

【算法与数据结构】1971、LeetCode寻找图中是否存在路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题应用并查集的理论直接就可以解决:【算法与数据结构】回溯算法、贪心算法、动态规划、图…

相机图像质量研究(35)常见问题总结:图像处理对成像的影响--运动噪声

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

Oracle迁移到mysql-表结构的坑

1.mysql中id自增字段必须是整数类型 id BIGINT AUTO_INCREMENT not null, 2.VARCHAR2改为VARCHAR 3.NUMBER(16)改为decimal(16,0) 4.date改为datetime 5.mysql范围分区必须int格式,不能list类型 ERROR 1697 (HY000): VALUES value for partition …

为什么在MOS管开关电路设计中使用三极管容易烧坏?

MOS管作为一种常用的开关元件,具有低导通电阻、高开关速度和低功耗等优点,因此在许多电子设备中广泛应用。然而,在一些特殊情况下,我们需要在MOS管控制电路中加入三极管来实现一些特殊功能。然而,不同于MOS管&#xff…

redis的缓存穿透,缓存并发,缓存雪崩,缓存问题及解决方案

缓存穿透 问题原因 解决方案 缓存并发 缓存雪崩 缓存失效时间设置一致导致的。 解决方案: 1)方案一 2)方案二 如何设计一个缓存策略,缓存热点数据?