本文来自公众号:远望资本iVision,原文标题:《你如何证明你是你自己?DID去中心化身份的意义》,题图来自:视觉中国
身份管理(ID)是计算机技术基础设施的组成部分,但是因为其简单而且无处不在,因此经常被大家理解为想当然的存在而被忽略。就像生活中我们一出生就默认有了身份一样。但是,一旦我们丢失了ID之后或者像《谍影重重》电影里面的主人公被政府剥夺身份后,就会发现我们寸步难行。
正像现实世界里面ID是生活的基础组成部分,ID技术也是计算机的基础设施。我们打开电脑的时候,第一步就是要输入用户名和密码登陆系统,我们访问任何网站的时候,大部份的操作需要输入用户名和密码。
人类社会进入文明社会以来,这世界上的大多国家都建立了完整的身份管理系统。国内用身份证或者驾照或者社会保险号,国际旅行用护照。互联网大概遵循了同样的发展道路:
从1996年的“在互联网网上没有人知道对方是条狗”的匿名时代,发展到了2004年Facebook成立后的实名社交时代。互联网也从一种信息获取手段发展到了电子商务和电子政务等重要工作效率手段。
可以预测到,区块链也会从现在完全匿名的状态,在未来一个周期发展到由DID去中心化身份(Decentralized Identity)支持的实名阶段。区块链至今缺乏对用户身份的支持,因此被过度的金融化而无法进入实用场景。而且,正如互联网的发展,网络平台效应在由用户控制的共享情况下产生的效用,要远远高于完全被公司控制(如Facebook)或者完全公有被政府控制(如道路)的机制。
当然,ID不仅仅包括人,还包括各种主体,比如:公司有营业执照和D-U-N-S®代码,手机有mac地址,我们可以统一将这些称为主体(subject)。
因此我们使用ID这个术语的时候,我们应该小心,有些人认为权威机构颁发的才叫ID,有些人认为任何一个机构都可以颁发由自己认证的ID。本文讨论的DID用的广泛意义的ID,比如用户自主生成的公密钥对就可以作为ID。
事实上,任何一个用户已经在使用DID,因为用户进入加密世界的第一步就是生成钱包,在比特币链上,你的比特币地址就是一个你的DID(比特币的设计并不友好,因为每一次交易都变更地址为了保护隐私);在以太坊上,每个用户都拥有一个以公钥为地址的DID。不管广义还是狭义的ID,ID都必须在一定范围(namespace)内保证唯一性,而且生成ID的意义一般绑定一定的使用环境(context)。
和DID紧密相关但是又没有必然关系的一个概念是Verified Credential(VC)。VC代表了一个由中心化主体(issuer)对一个主体(subject)发行(issue)的证书(credential)。传统上因为这个证书无法保真,因此issuer必须提供相应的查询验证服务,比如:在中国教育部提供了学历查询验证服务网站。因此,如果查询验证必须线下进行不够便利,就会刺激伪造证书和影响证书的使用效率;如果发行主体停止提供服务,就会影响证书的使用;如果证书有有效期经常需要更新,就会更麻烦。
但如果基于加密技术的证书,就可以通过发行主体(issuer)的数字签名对证书进行签名,验证可以在加密算法数学的支持下单独进行,subject可以将VC放入自己的数字存储介质(repository,包括钱包)里面,在需要的时候提供给第三方(verifier)查看和验证。
虽然w3协议明确说明DID协议和其VC协议是完全分开的,可以独立存在的协议,但是其DID假设用户自主生成的公密钥对必须结合权威机构颁发的VC使用才有意义。w3的DID协议里面的公密钥对只是作为DID架构的支撑部分而存在,用来链接一个用户拥有的不同VC,以及解耦合VC查询,验证,展示对于发证机关的依赖。
而且,DID的存在不需要区块链,区块链技术支撑的DID地址解析和数据登记只是作为DID生态的一部分。但是,本文作者认为,作为数字原生的元宇宙的组成部分,一个subject可以完全脱离VC而存在,根据subject的元宇宙行为而独立于VC存在。就像在DeFi热潮中,大量用户根据公钥地址作为DAPP的账户系统参与DeFi交互,虽然不方便,用户还是通过Nansen等钱包地址标签来进行交流。
我认为,加密世界里面的NFT、gameFi、DeFi等大量的应用场景为原生的DID以及对应的链上信誉提供了足够的市场应用场景。这些设计哲学方面的不同,导致了w3的DID和区块链原教旨的DID有很大的不同。鉴于整个去中心化身份的技术刚刚起步,各个技术流派需要互相借鉴,本文的讨论不区分w3 DID和区块链原生DID技术。
另外,一个subject可以有多个ID,即一个人可以有多个身份;persona是一个相对概念,比如在国内使用身份证,跨国使用护照,那么护照和身份证相对于同一个主体就是不同的persona。
经常和ID管理联系在一起的概念还包括验证(authentication)和授权(authorization)。验证指第三方(verifier)通过issuer或者加密算法验证主体身份的过程;验证身份之后,第三方根据自己的政策(policy)授予主体对应的权利范围,这个过程称为授权(authorization),简单举例,当我们登陆一个论坛的时候,输入用户名和密码的过程称为验证,网站会根据我们是管理员还是普通用户会授予我们相应的读帖和删贴的权利。对用户权利管理的政策经常会被称为Access Control List(ACL)。
一个ID可以有很多属性(attributes),一组属性可以定义角色(roles),这样提供ID应用场景的管理员可以方便的基于自己定义的访问限制列表(Access Control List),按照不同的属性或者角色授予(autherize)不同的ID不同的权限。
比如:Tom(subject)第一天入职公司Big(issuer),领到了66的工号(ID),他的名字Tom为属性(attribute),分配的工作岗位为信息管理员(roles),赋予(authorize)了相应的可以进出机房的权利(ACL)。
在DID出现之前,所有的ID都是由一个中心主体(issuer)基于某种政策(policy)授予一个主体,这个中心主体因此有权利授予或者取消某个个体获得ID的权利;有时候,这个中心主体必须为第三方(verifier)提供对应的验真查询服务(比如Tom更换工作后,新的雇主希望做背景调查核实Tom是否真的为Big工作过)。因此,subject依赖于issuer的服务,issuer如果停止服务或者拒绝服务,就会对subject使用ID的权利造成影响。
我们无法低估DID带给人类的意义,因为人是社会动物,而身份是社会关系的起点,不依赖于发行方的身份自由是自由的起点,有了身份,才能讨论包括财产权的各种权利,就如同注册账户后才能使用网站的权利。当我们拥有一个不依赖于任何主体而生成和使用的身份主体的时候,才能讨论建立数据拥有权。因此DID的设计理念经常被称为自我主权身份(SSI, Self-Sovereigh Identity)。
因为没有了一个中心化的身份发行方提供查询验证服务,DID与传统ID管理技术(IAM)最大的区别是,谁来生成这个ID?以及当你声称(claim)你拥有或者控制这个ID的时候,你如何证明你是你自己?
DID是人类历史上第一次给予了subject自己证明是自己的一个技术。
DID基于密码学技术自我生成一对公密钥,公钥作为自己的ID,密钥作为自己控制对应公钥的证明。为了关联自己的其他中心化的身份,如果发行主体提供VC服务,就可以非常简单的通过验证签名VC来关联;如果发行主体不提供,则subject可以声明(claim)拥有某个中心化ID或者链下身份,然后通过第三方验证(attestation)服务来关联。
我们小结一下,DID的特征和术语:
ID代表的主体(subject)可以是人,公司或者任何一个物体;
ID在一个范围(namespace)内必须是唯一的;
ID一定有一个发行方(issuer或者传统IAM中称为Identity Provider),DID的发行方是subject自己;
issuer需要为第三方(verifier或者传统IAM中Relying Party)提供查询和验证服务,DID的验证由加密算法的数学公式提供;
一个声明(claim或者statement或者assertion)包括自我声明或者第三方声明,需要提供对应的验证(verify或者attest)机制;这种验证机制有时候是确定性的,比如一个人声明他拥有1个比特币,可以通过验证他是否控制一个超过一个比特币的地址验证;验证机制有时候是概率性的,比如一个人声明他拥有Java编程能力,这个声明需要以前的同事背书,虽然拥有编程能力的熟练程度是一个概率;
身份天生具有场景特征,人们在不同的场景使用不同的身份(persona);而职能(role)定义了一个属性(attributes)集合,代表了一类用户经过认证(authenticate)后被赋予不同的权利范围(ACL)。
由于DID和VC的技术基于加密算法,这给零知识证明的应用提供了空间。当用户需要验证年龄需要出示自己身份证的时候,不再需要担心验证者顺便看到了自己的家庭住址;当用户需要证明自己的资产满足某个条件对时候不需要让对方知道准确的资产总额。
本文来自公众号:远望资本iVision
本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系 hezuo@huxiu.com
正在改变与想要改变世界的人,都在 虎嗅APP