去中心身份的独立日
2022-07-04
作者: 冒志鸿 ArcBlock Founder/CEO
插图: 曹雯 ArcBlock UX Designer
6月30日, Tim Berners-Lee爵士否决了Google,Mozilla 等对 DID Core成为W3C建议的否决意见,为 DID Core 最终成为 W3C建议铺平了道路。 这是W3C CCG(Credentials Community Group )所有成员和贡献者的胜利,更是用户的胜利。考虑到DID 是第一个成为W3C标准的自主身份(SSI,Self-Soverign Identity) 协议,这甚至可以说这是人民的胜利。
这过后的几天7月4日恰好是美国的独立日, 这是為紀念美利堅合眾國於1776年7月4日宣佈《獨立宣言》所成立的節日。 我觉得 DID Core 成为W3C 标准这件事,也许可以看成是一种网络自主身份技术标准的“独立宣言”, 从长远来看其意义也许会和独立日一样深远。
什么是DID ? 快速入门
让我们先用简单的几句话来最简明地介绍一下什么是DID。 W3C 的DID Core规范基础其实仅仅是定义了“去中心化标识符(Decentralized Identifier)”的标准格式。
这个格式看起来很像我们现在已经熟悉而常见的以 https:// 开头的web网址,它分为三个部分:
- 第1部分总是为“DID” ,这表明这是一个“去中心化标识符”
- 第2部分称为“方法(Method)”, 例图里的 ABT 就是我们ArcBlock定义的DID 方法
- 第3部分可以是任何字符串,其定义、产生和解释等完全由第2部分的方法Method来自主定义和实现
不要小看这样一个简单的各格式性规范,没有这个规范的各种服务的就会各自为政, 比如Facebook上一个用户的最基础的标识符就是个顺序数字,同样的数字可能也会出现其他的系统里往往代表的是一个完全不同的东西。比如我的Facebook 的用户ID 是 1314596489
,但这个ID在亚马逊可能代表一本书,在Instagram可能代表一张照片。 有了 DID 规范,就可以清晰定义全球唯一的标识符,无论这个对象是在那个系统里,谁来开发实现都可以不混淆。
DID Core 一个独特(但被大公司批评的)的设计,就是允许大量注册的方法(Methods),而后面的标识由这些不同的方法来定义与解释。 这样的设计本身就体现了去中心化的精神,而且赋予了DID 灵活无限扩展的可能性,并且能和现有的传统ID系统兼容。从我们在2019年初参与的时候这个Methods列表只有短短的清单,如今这已经是一个有好几页之长的名单,而且随着DID Core成为标准,这个清单会中的成员和支持的方法可预见会变得更多。
在这次DID协议草案遭受到来自Google 和 Mozilla反对的意见中,对DID支持众多的methods而没有严格定义标准方法的做法是被批评的地方之一,由于methods很多那就需要有互通的问题,这是又一个被批判的地方; 由于methods 可以有多种实现也就意味着其实DID的一些method可以不是去中心化的,这是Google提出否决的又一个理由。 但是我认为这并不是设计的缺陷,而恰恰是去中心化的体现,站在中心化商业利益公司的角度并非看不到这样做的价值,而是害怕这样的设计会让他们失去了既得利益的高地和对用户身份和数据的垄断独占。
W3C 的 DID 还定义了 DID Document 的概念,这是一个极具扩展性的设计,这种设计不但让DID 和 URI (Universal Resource Identifier)统一了起来,而且吸取了不少过去互联网协议里的经验和教训,但很容易被误解和混淆,本文就不在这里展开这些细节了。
什么是可验证凭证( Verifiable Credentials)? 快速入门
DID 仅仅是最基础的一层,而基于DID之上的可验证凭证(Verifiable Credentials)则是让DID 能解锁各自应用场景的关键。
可验证凭证是一种包含了数字签名来实现可验证的数据格式规范。其实这个概念也非常简单,就是说这些数据的格式里包含了一些验证信息使其可以高效率的验证,并不能被篡改和破坏。这里使用的签名和验证技术已经在众多的互联网应用中普遍使用,是很成熟的技术和实践,这里设计规范的目的就是为了能让这些数据格式标准化,这样不同的系统、不同的实现都能有效地互操作。
W3C CCG在基于DID的可验证凭证设计上提出了这样一个抽象的通用概念模型:
在这个模型里,把证书的各个环节的角色主要划分为颁发者(Issuer),持有者(Holder)和验证者(Verifier), 每个角色均采用DID 来作为标识,可验证凭证就是可以用签名算法来验证的数据。
从DID 到可验证凭证,都和今天的区块链、加密货币没有必然联系。 可验证凭证的设计里常常用到哈希、签名等算法和今天区块链广泛使用的算法是类似的。 在上面的模型里还有一个可验证的数据登记(VDR,Verifiable Data Registry)的角色,这个角色可以采用区块链来实现,但也并非是必需采用区块链的,完全可以根据实际的应用场景采用传统数据库,甚至一个普通的文件来实现。我在《ArcBlock 如何利用 AWS QLDB 构建去中心化身份解决方案》这篇文章里介绍了一种使用AWS QLDB来作为VDR的 DID实现。
W3C CCG的“ Verifiable Claims Working Groups' Use Cases”这篇文档里列举了大量可以使用可验证凭证来解决的实际应用的场景和例子。 市场上所看到的很多“企业区块链应用场景”其实都是可验证凭证的典型应用场景。
可验证凭证有非常多具体的应用场景,这里随便给出一些应用的例子:
- 是否超过一定年龄?比如购买烟酒或进入有年龄限制的场所
- 是否有能力驾驶机动车辆?如数字化的驾照
- 是否通过某种培训并获得某种学历?如数字化的学历和培训证书
- 是否有专业的执照,如行医的许可? 如数字化的执照
- 是否是通过KYC验证? 是否是符合某些法律法规下合格投资者?
- 是否可以进行国际旅行? 如签证、护照、疫苗卡等
- …
有可能有人会说上面这些例子今天都已经能实现了,甚至已经日常使用了。 没错,上面很多的例子都是现在使用中的场景,但是存在着几个问题,首先基本上这些基于中心化设计的验证系统都需要有完美的网络连接,在某些网络环境或突发事件下就可能失效; 其次这些中心化设计可能成为黑客工具的重要目标,往往造成严重的数据泄露和隐私灾难;然后这些今天的方案往往是特定的厂商或政府部分各种实现的,不能很好互联互通,用户往往手机里需要无数个App适应各种不同的应用场合。 DID 的可验证证书设计目标是不但完成上面的应用,而且保证去中心化的特性,保护用户的隐私。
DID 解锁了新的应用开发范式
我们看到的是 DID 带来的一系列的未来应用的机会以及其对应用开发范式的迁移。 这种软件开发范式的改变,让“去中心应用”变得更为现实。DID、去中心化应用,和最近的Web3 运动可谓不谋而合。 可以想象,DID技术会成为Web3运动中的关键技术革命。
DID 对标识(Identifier)的标准化使得不同的软件模块、系统之间的互操作性变得更为容易,更重要的是 DID 的核心思想是让用户,而不是服务商,来完整拥有和控制自己的数据, 这是对过去互联网时代,尤其Web2思路的一个巨大转变。 过去的互联网服务的“核心竞争力”是拥有多少用户的数据,因此厂商和厂商之间的竞争关键是看谁控制更多的用户数据,而DID的思路下,只有用户才拥有自己的数据,厂商只是专心提供服务或者软件,这使得软件和服务之间的更紧密合作变得不再存在那么严重的利益冲突。
早在 2017年 ArcBlock 创立之初我们就意识到了一种去中心化身份的必要性,但是那时候我们还没有找到最适合的解决方案。 2018年我们研究了当前市场上各种方案后被 W3C CCG 提出的DID 所吸引并认为这是市场上多种去中心身份中的最佳选择。 从2019年上半年开始,我们把 DID 技术纳入了我们的核心技术栈并在这个领域深耕至今。 2022年,我们更是将DID相关的技术分拆成立了DID Labs 作为生态系统的一部分,这样可以更为独立且专注地发展DID技术。
我们在参与DID的过程之中,标准并没有形成,而且行业标准往往意味着需要漫长的时间和大量的讨论和妥协,往往作为创业公司很难有资源和时间去跟随标准的形成过程。我们采用了比较灵活轻便的方法来参与:
积极加入标准组织的社区,认真研习社区产生的文档、会议记录和讨论。 在社区里我们更多扮演的倾听和学习的角色而不是积极输出观点的角色;
我们并不等待标准和社区共识(这一般需要相当长的时间),而是迅速按照自己的理解来实现和尝试自己的版本,在自己的原型甚至产品实现了,我们再对照社区其他人的做法或讨论的结构来改进。 这种做法使得我们不会花大量的时间在还没有形成的标准之上,又不会固步自封;
和其他DID methods的互通性上,我们先采取暂时观望的态度,没有在早期花费精力,但我们会随时观察社区的动态,会在标准正式形成的时候在互操作性上下功夫;
在这样的策略下,围绕 W3C DID Core的建议加上我们自己的创新,我们实现了一系列和DID 相关的模块,形成了一套现对完整并立刻开箱即用的产品体系。
- 基于 DID 的原生区块链地址:采用DID 的区块链地址
- 基于 DID/VC 的NFT格式: 采用DID 和 VC 的 NFT 数据格式
- 基于 DID/VC 的访问控制Passport:采用DID 和 VC 的访问控制格式
- DID Wallet : 用户用来管理自己的去中心身份和数字资产的钱包
- DID Connect : 用DID来连接用户和应用的协议
- DID Motif: 一种对DID的可视化渲染库,让用户一眼就能从图案色彩的区别来区分不同的DID
- DID Storage:用DID来管理的用户数据访问协议和去中心化数据存储格式
我们将把这些产品体系里我们自创的部分开源并贡献给DID 社区,也会在DID 的正式标准形成的过程中全面拥抱标准和互操作性。
DID 未来的挑战
W3C DID 将为了正式的W3C建议标准。 这是所有DID推动者的巨大胜利里程碑,但也只是漫漫去中心化之路上的起点。目前成为W3C建议的还只是DID Core这个最基础的协议,而基于DID 构建应用需要的远远不只是这些。 未来DID技术还将面临很多挑战,更多标准和规范的形成还有漫漫长路要走。
W3C CCG的DID 也并非去中心化身份的唯一标准,还有其他一些竞争或者类似的协议,可以认为是不同流派在相同的方向上的竞争。 其他的协议如 OpenID、 WebID、Web Authn、 IndieAuth 等等,这些有些和DID 并不是解决相同问题,但有一定程度的重合。
在DID 形成标准的路上,Google,Mozilla等互联网时代的大公司提出了反对意见,试图阻止DID规范的形成,无论他们是出于什么样的动机,我相信这都恰恰说明了DID的价值和潜力。 这让我想起了上次我在VoIP领域创业的时候,大的电话公司,通信技术公司和国营的电信企业企图对IP 电话技术的扼杀,对创新发起了一波又一波的狙击… 如今VoIP技术已经是今天电信业务的基础服务甚至说新的支柱都不为过。 所有曾经试图阻止技术创新的那些“巨头”不是自己成为了历史,就是最终自己也被迫拥抱了创新加入了新的阵营 … 历史从来都是如此的押韵。
Hacker News上关于DID Core 成为W3C 建议的一则讨论里,我惊讶地看到很多其中的评论都集中在对有很多区块链技术公司参与在DID之中而导致的批判和嘲讽。我把这里几十条评论和一个都认真看了一遍,没有看到一条“有理有据”的反面观点,相反充满了对DID的误解、对区块链和加密货币的误读和恶意。 正如前面所述 DID 和区块链其实是独立的技术,两者可以没有必然联系。但是由于区块链、数字货币以及现在时兴的Web3概念的流行,有相当数量的区块链技术公司(包括我们在内)看到了DID的价值并且投身于其中。 在极客圈的Hacker News的讨论里竟是很多人对此持嘲讽和反感的态度,这颇为令人意外和遗憾,但也说明了DID 要普及还任重道远。
正如如果我们回到历史上的7月,当《独立宣言》被第一次撰写、签署和宣布的时刻,美国还只是风雨飘摇中的一个弱小政体,这离美国成长为一个强大的国家,还有着漫长的历程,没有人知道这份短短的宣言在未来会书写一份不可磨灭的历史。