10.25DID调研

分布式身份标识(Decentralized Identifiers, DID)

1.背景

网络匿名⇒账号ID登录⇒授权一键登录⇒分布式数字身份

实现一个用户能自主创建、完全去中心化的身份管理。而区块链的出现,恰恰解决了 DID 去中心化的问题。

中心化身份 => 联盟身份 => 中心化身份(DID)一开始的数字认证始是中心化的,比如ICANN管理的域名与IP地址分配,以及PKI(Public Key Infrastructure)系统中的CA(Certificate Authority)证书机构管理的数字证书.中心化身份系统的本质就是,中央集权化的权威机构掌握着身份数据,因为围绕数据进行的认证、授权等也都由中心化的机构来决定。

身份不是由用户自己控制的。而且不同的中心化网站(比如淘宝、知乎、豆瓣等等)上有一套自己的身份系统,所以都需要你重新注册一个账户。而不同网站自己用的身份系统(及账户对应的数据)之间是不互通的。为了解决这个问题,不同的网站自己联合起来推出了联盟身份(这个概念是首先由微软在1999年提出的)。

在联盟身份体系下,用户的在线身份有了一定的可移植性。如今的不少网站注册都可以支持第三方登录,比如微信、QQ、新浪微博等。在联盟身份提出后,身份系统就开始走向去中心化了。期间也有很多去中心化的标准、方案出现,比如OpenID。其实就算是一些网站支持的微信、QQ第三方登录,其用户体验也不是很好,而且往往还是需要你用手机号 + 验证码进行注册的。

综上所述,中心化身份主要的问题就是两个,一是个人并不是真正意义上拥有自己的身份,二是身份无法互通。

2.基本概念术语

分布式数字身份包括:分布式数字身份标识符和数字身份凭证(声明集合)两部分:

2.1 分布式数字身份标识符

是一种去中心化的可验证的数字标识符,具有分布式、自主可控、跨链复用等特点

DID本质上是一个全球唯一的地址标识符URL,指向写有与用户身份关联的属性信息的DID文档

2.2 声明

是指与身份关联的属性信息。声明可以由身份所有者自己发出也可以由发行人发出,其中由发行人发出的为可验证声明

往往是个人或机构对自己身份的声称和主张,例如“我叫麦金塔,1984 年 1 月 24 日出生。”

2.3 可验证声明

DID持有者可以通过可验证声明,向其他实体(个人、组织、具体事物等)证明自己的某些属性是可信的

  • 可验证声明(Verifiable Credential)提供了一种规范来描述实体所具有的某些属性,实现基于证据的信任。DID持有者,可以通过可验证声明,向其他实体(个人、组织、具体事物等)证明自己的某些属性是可信的
  • 可验证声明可以表示现实事物所具有的相同信息。数字签名等技术的加入,使得可验证的凭证比其物理对等物更不易被篡改,也更值得信任。
  • 可验证的声明可以快速地传输,这使得它们在尝试建立距离上的信任时比物理对等物更方便。
  • 第三方根据他们的记录来确认声明是真实的。例如,一所大学可以证明某人在那里学习并获得了学位。来自权威的证明,要比能够伪造的证明更有说服力。

2.4 DID文档(Document)

与DID标识符形成键值对,描述引导与标识的实体进行密码可验证的交互所必需的公用密钥,身份验证协议和服务端点。

DID文档描述的是与被识别对象进行密码验证交互所必须的DID主体标识、公钥、验证协议、服务端点等,JSON-LD格式,LD(Linked Data),VC的格式也是JSON-LD,该格式可以将文档转换为结构化的数据

3.基本实现原理

W3C的DID标准

3.1DID标识符规范格式

  • DID的URL标识符

  • DID方法标识符

  • DID方法中特定的的标识符:在整个DID方法命名空间是唯一的

DID方法规范作用:如何在特定的区块链或者系统创建、解析、管理DID和DID文档,DID规范要包含:Create,Read,Update,Delete

3.2DID现有的方法

以bid方法为例——中国信息通信研究院(中国信通院)

经过椭圆曲线加密和SM2,输出公钥,并对公钥进行hash处理

BID身份描述对象

{"@context": " https://www.w3.org/2019/did/v1",//@context是数据链接的词汇,这个特定的实例引用了URL"id": "did:bid:3acdafe161ef702033bdf895",//标识一个did主体"name":"shiweijun",//名称:设置昵称以提高出价标识符的可用性。"publicKey": [{//公钥用于身份认证"id": "did:bid:3acdafe161ef702033bdf895#keys-1","type": "RsaVerificationKey2018","controller": "did:bid:3acdafe161ef702033bdf895","authorizations": ["all"],"bid": "did:bid: 3acdafe161ef702033bdf895}, {"id": "did:bid:3acdafe161ef702033bdf895#keys-3","type": "Ieee2410VerificationKey2018","controller": "did:bid:3acdafe161ef702033bdf895","bid": "did:bid: 3acdafe161ef702033bdf895"}],"authentication": [{//身份验证:一个列表,其中包含用户的身份验证身份属性信息"type": "ED25519SigningAuthentication","publicKey": "did:bid:3acdafe161ef702033bdf895#keys-1","proofId":"c1cb770ac94000d946e583d13ea310"}],"service": [{//服务:每个服务都用属性ID标识。"id": "did:bid: 3acdafe161ef702033bdf895#home_page ","type": "DIDResolve","serviceEndpoint": "http://www.caict.ac.cn"}],"proof": {证明:用于证明DDO文档的内容完整性和源可靠性。"type": "RsaSignature2018", "created": "2017-10-24T05:33:31Z","creator": "did:bid: 3acdafe161ef702033bdf895#keys-1","signatureValue": "eyiOiJJ0eXAK...EjXkgFWFO"},"Extra":"abc123","isEnable":true,"createTime":1561945638,"updateTime":1561945638
}

Create

管理私钥的两种方式:

  1. 生成助记词
  2. 将私钥或者密钥库反馈给用户

Update:通过调用API进行

Read:可以通过查询BID或BID的昵称来获取BID文档以及对所有人公开的详细信息。以JSON格式反馈以响应查询

Delete:通过调用API完成

身份验证

3.3证明DID与DID文档之间的绑定关系

  1. 根据DID方法规范对一个DID文档进行解析
  2. 验证DID文档的id属性和DID解析出来的结果是否一致

3.4证明公钥的控制

静态和动态两种方法:静态方法时使用私钥对DID文档进行签名,这可以证明在DID文档注册前的私钥控制权;若DID文档未被签名,则可以用文档中关于公钥信息来动态证明

  1. 将包含DID文档中的公钥信息和nonce的质询消息发送到DID文档中描述的适当服务端点。
  2. 根据公钥信息验证响应消息的签名

4.DID CA即DID验证(或者是VC)

什么是CA: CA是认证中心的英文Certification Authority的缩写。 CA中心,又称为数字证书认证中心。CA中心作为电子交易中受信任的第三方

CA是干什么的:负责为电子商务环境中各个实体颁发数字证书,以证明各实体身份的真实性,并负责在交易中检验和管理证书。概括的说,CA的核心功能就是发放和管理数字证书。概括地说,CA认证中心的功能主要有:证书发放、证书更新、证书撤销和证书验证。

涉及的流程内容:

  • CA向用户颁发数字证书(证书包含证书主体的身份,公钥数据,颁发机构名称等)
  • 发证机构对信息进行数字签名形成证书
  • 拥有证书的用户拥有自己的公钥私钥
  • 用CA的公钥解密用户证书,即可得到用户认证公钥

VC生命周期

  1. 发行者Issuer向持有者holder签发issue可验证声明。
  2. 持有者可以将一个或多个可验证声明传输transfer给另一个持有者。
  3. 持有者向验证者verifiers显示present其一个或多个可验证声明。
  4. 验证者验证verify持有者所呈现的可验证声明的真实性。这包括检查撤销可验证声明的声明状态。
  5. 发行者可以撤销revoke可验证声明
  6. 持有者可以删除delete可验证声明

验证过程

  1. 用户申请注册DID,由用户自己管理

  2. 验证用户DID(用户与DID是否对应),用户出示VC凭证,

  3. 验证者验证VC是由发行者发行的,通过VC中URL找到用户的DID文档,用过DID文档中的公钥再验证用户DID标识

可验证声明的信任模型

  • 验证者信任由发行者发行的可验证声明
  • 所有实体都相信可验证数据注册表是防篡改的,并且正确记录是由哪些实体控制哪些数据
  • 持有者和验证者信任发布者发布真实的(即,不是虚假的)关于主体的声明,并在适当的时候迅速撤销。
  • 持有者信任存储库安全地存储声明,不会将其释放给持有者以外的任何人,并且在保管声明不会损坏或丢失声明。

此信任模型与其他信任模型的区别在于:

  • 发行者和验证者不需要信任存储库
  • 发行者不需要知道或信任验证者。

零知识证明

为了使用零知识可验证凭证,发行者必须以一种使持有人 能够以增强隐私的方式将信息提供给验证者的方式来发行可验证凭证。这意味着持有人可以证明发行人签名的有效性, 而无需透露已签名的值,或者仅透露某些选定的值。标准做法是通过证明签名知识而不公开签名本身来做到这一点。

5.答疑

DID与区块链的解决方案

DID作为代表实体身份的全球唯一分布式标识符应该如何存储和提供访问,即人们如何访问它们——区块链

分布式数字身份体系并不局限于区块链技术,更不绑定到唯一区块链平台上,其系统模块可能基于不同的区块链平台实现,甚至是非区块链的其他分布式账本实现

解决方案及流程

  1. 在身份证明机构、数据持有机构、数据使用机构间搭建区块链网络,机构作为节点接入并注册DID
  2. 由身份证明机构为用户生成DID
  3. 用户授权数据使用机构使用自己的数据
  4. 数据使用机构生成授权凭证(Credential),标明授权对象、数据属主、有效期、授权内容等属性,并使用机构私钥进行签名;数据使用机构可选择将授权凭证生成摘要并写入区块链,达到增信目的
  5. 数据使用机构出示授权凭证给数据持有机构
  6. 数据持有机构通过凭证验证(Verify)接口,验证授权凭证
  7. 验证通过,数据持有机构将数据发送给数据使用机构
  • “区块+共识算法”解决分布式系统的数据一致性问题,将可验证声明和DID文档存证于区块链中

优势:

  • 可公开访问
  • 可信验证
  • 操作成本低廉
  • 支持用户控制自己的标识符和凭证托管,转换数据治理模型,减少对受信任中介的依赖性;
  • 用户可以管理自己的身份数据,并在之情和授权的基础上将其公开给依赖方
  • 企业可以依靠可验证的用户信息来简化其运营,而不必自己充当数据托管人并处理相关的成本和风险

DID分布式如何理解

去中心化身份(DID)利用区块链技术实现让数字身份真正为用户所拥有并支配,就像我们把身份证、护照、户口本这些纸质文件放在自己家里小心保存,只有在需要的时候再拿出来一样,不再有任何中间人(即使是 DID 技术供应商)接触拥有控制用户的身份和数据。

去中心化+用户自己管理

关于保护隐私

  • 用户可以拥有多个DID,且DID之间没有任何关联。
  • 加密的数字凭证(VC)和零知识证明(可以向对方证明一件事情,但透露的信息为0)
  • 将用户标识符和凭证加密后存储在区块链上,不可篡改,人人都可以验证
  • DID文档和区块链上不包含个人数据。所有个人资料应保存在DID当事人控制的服务端点后。(服务端点在DID文档中用于表示与DID主题或关联实体进行通信的方式)

DID文档中没有任何和个人真实信息相关的内容,比如你的真实姓名、地址、手机号等。因此光靠DID规范是无法验证一个人的身份的,必须要靠DID应用层中的可声明验证(VC)

可验证声明结合数字签名和零知识证明等密码学技术,可以使得声明更加安全可信,并进一步保障用户隐私不被侵犯

用户对ID身份的控制权

在DID系统中,用户对自己的身份拥有绝对的 控 制 权 , 用 户 根 据 实 际 需 要 自 主 选 择 使 用 哪些 个 人 身 份 信 息 来 进 行 身 份 验 证 , 并 将 身 份 信息的哈希值 存 储 在 区 块 链 上 , 供 其 他 人 验 证 。

在数字领域,我们的身份由拥有我们在线帐户的众多平台管理。每当您注册一项新服务时,该公司实际上就已经拥有了您的数字身份的很大一部分。当您使用Facebook或Gmail访问在线服务时,这种情况会放大。在这些情况下,您无法控制或了解共享了多少数据以及如何处理数据。为了在线参与,您必须放弃对个人数据的控制。

  • 每个人在各个平台上会有数十个数字身份
  • 每当注册一项新服务,企业公司网站已经拥有了用户数字身份的很大一部分,且无法控制或了解共享了多少数据
  • 用户仅仅依靠账号+密码+手机/邮箱验证码进行管理使用,存在安全风险

总结

DID 技术实现的去中心化身份的体验和用途与传统的数字身份截然不同:首先,你将不只有一个 DID,而是依据身份场合需要的不同拥有无数不同的 DID,每一个 DID 都给你一个单独的终生加密的私密渠道与其他个人、组织或事物交互沟通,因此更好的选择你的身份来交流,更好的保护你的隐私,传统互联网的“人肉”现象将不会再发生;DID 将不仅用来证明的身份,而且可用来交换可验证的数字证书;最棒的是,每个 DID 直接登记在区块链或分布式网络上,无需向中心化注册机构申请。

疑问

  • 与区块链的关系是什么
  • 分布式如何理解
  • 如何保护隐私
  • DID系统中角色之间的关系:1.用户+数据持有机构+数据使用机构+身份证明机构;2.身份所有者,声明发行人
  • DID流程
  • DID基本原理
  • DID中CA

VC运行流程

用户去标识符注册机构注册DID,用户拿到DID和VC凭证,由用户自己管理

验证用户DID(用户与DID是否对应),用户出示VC凭证,

验证者验证VC是由发行者发行的,通过VC中URL找到用户的DID文档,用过DID文档中的公钥再验证用户DID标识

提问解答

规模问题

与UUID的区别,或者说DID的优势

  • DID与URN的格式一致
  • UUID强调的是信息实体的唯一性,DID标识符也是唯一的,但DID更强调的是分布式管理和信息的可验证性

UUID的作用

应用:

它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用唯一标识符有非常大的区别。UUID最少在3000+年内不会重复。

URI,URL,URN

  • URI包括URL,URN;
  • URI是统一资源标识符
  • URI进一步分为定位符(URL)和名称(URN):类似住址和人名(类比人名和地址是不能重复的)

DID分布式身份标识技术调研相关推荐

  1. 区块链BaaS云服务(17)纸贵科技DID分布式身份标识

    分布式身份标识Decentralized Identifiers 1. 保障数据隐私的可验证声明 提供一种规范来描述并声明实体所具有的某些属性,既可以放在链上也可以根据用户的隐私性要求存储在链下可验证 ...

  2. 分布式身份认证——未来信任生态的基石

    一年前,微软在其官方博客中宣布,将在旗下微软身份验证(Microsoft Authenticator)应用程序内整合基于区块链的去中心化 ID 验证技术,标志着微软正式开始进入DID(分布式身份验证) ...

  3. 云图说丨初识可信分布式身份服务

    摘要:可信分布式身份服务为个人和企业用户提供统一的.可自解释的.移植性强的分布式身份标识. 本文分享自华为云社区<[云图说]第253期 初识可信分布式身份服务>,作者: 阅识风云 . 可信 ...

  4. 登录工程:传统 Web 应用中的身份验证技术

    标题中 "传统 Web 应用" 这一说法也并没有什么官方定义,只是为了与"现代化 Web 应用"形成比较而自拟的一个概念.所谓现代化 Web 应用指的是那些基于 ...

  5. 湖仓一体技术调研(Apache Hudi、Iceberg和Delta lake对比)

    湖仓一体技术调研(Apache Hudi.Iceberg和Delta lake对比) 作者:程哥哥.刘某迎 .杜某安.刘某.施某宇.严某程 1 引 言 ​ 随着当前的大数据技术逐步革新,企业对单一的数 ...

  6. SASE:基于数字身份标识的网络与安全访问云服务

    摘要:企业数字化转型促成了广域网组网与安全技术的深度融合,SASE将SD-WAN与基于数字身份标识的网络安全访问集成于云服务基础设施中,实现了一种能适应当前企业网络流量模型的安全架构,为无处不在的用户 ...

  7. 微服务架构技术调研<3>--微服务架构实践

    引言: 由于公司商业上有实打实的需求和场景,倒逼产品开始思考架构升级,以适应这种商业环境的快速变化.架构师在进行技术选型或者架构升级前,需要做大量技术调研.竞品分析,<微服务架构综述>则是 ...

  8. 深度学习自动编译和优化技术调研

    深度学习自动编译和优化技术调研 转自:https://moqi.com.cn/blog/deeplearning/ 作者:墨奇科技全栈开发 在墨奇科技,我们需要将一些包含深度神经网络(DNN)的 AI ...

  9. c#获取对象的唯一标识_DDD领域驱动设计实战 - 创建实体身份标识的常用策略

    从简单到复杂依次为: 3.1.1 用户提供唯一标识 这时用户将输入一些可识别的数值或符号,或从已有标识中选其一,然后创建实体对象.这是一种非常简单方案,但也可能变得复杂. 由于需用户自己生成高质量的标 ...

最新文章

  1. 循环神经网络(RNN, Recurrent Neural Networks)——无非引入了环,解决时间序列问题...
  2. 优化内存中DataTable搜索速度,IP区域汇总
  3. Java数组的基本操作方法整理
  4. 所有配置_Springboot 打印所有配置
  5. cannot find #include caffe/proto/caffe.pb.h
  6. 程序员面试金典 - 面试题 01.05. 一次编辑(编辑距离,DP)
  7. 江西财经大学计算机排名2019,2019年全国商科院校评价报告出炉 江西财经大学排名第七...
  8. hdu 5380 Travel with candy(双端队列)
  9. cubemx stm32 配置两个串口_STM32CubeMX的串口配置,以及驱动代码
  10. GaussDB数据dump实现完全同步
  11. bzoj 5029 poj 2528 nyoj 1009: 贴小广告(线段树)
  12. Pycharm同步代码到Github 踩坑
  13. LabVIEW入门教程
  14. 改winpe注册信息及OEM信息
  15. 2022-2028年中国抽水蓄能电站设备制造行业市场竞争态势及发展趋向分析报告
  16. fpu测试_「正点原子NANO STM32开发板资料连载」第三十一章 FPU 测试实验
  17. 名企面试题个人总结——蘑菇街2017校园招聘(特殊交换)
  18. 基于C++和OpenCV的中心线提取算法
  19. imx6ul can调试(代码)
  20. 『Linux』CentOS 7下一些有趣的配置

热门文章

  1. C语言实现计算一段字符串的MD5码
  2. 计算机常用的函数类型,珍藏版:计算机二级考试MS office 常用函数
  3. 准确测试身高的软件,情侣身高对比软件-身高模拟对比软件预约 v1.0最新版_5577安卓网...
  4. 防电脑辐射的方法,电脑防辐射技巧
  5. 【解决】ERROR Failed to compile with 1 error;error in ./node_modules/pdfjs-dist/build/pdf.js
  6. 3D相机定位抓取介绍
  7. 心电图心跳信号多分类预测-建模调参(四)
  8. 【kafka】Kafka 快速入门
  9. 如何在Proteus8.9中从官网中添加没有的元器件(以添加STM32F103ZET6为例子)
  10. 转:System32与SysWOW64的关系