区块链与分布式身份

身份的定义和形态
《汉语大词典》中关于“身份”定义的第一条为“出身和社会地位”。国际标准组织ISO(International Organization for Standardization)将“身份”定义为“一组与实体关联的属性”(ISO/IEC 24760-1:2019——“set of attributes related to an entity”),其中“实体”定义为“操作某个特定域的相关项,具有物理或逻辑形态,包括自然人、组织、设备、SIM卡、护照、网卡、应用软件、服务或网站”。

可以看出,《汉语大词典》中这条关于身份的定义是针对于人的,包含了一个人与生俱来的“出身”以及后天的“社会地位”,前者通过籍贯、姓名、身份证号等“自然属性”去标识一个“人”,而后者通过某种社会共识或过程去认证一个“人”,赋予这个“人”更多的社会属性。ISO的定义则将身份的范围扩大到包含人在内的各类实体,并且抽象出“某个实体”+“一组属性”的模型,“出身和社会地位”实际也是这个模型的一个实例。

我们今天所说的分布式身份,来源于数字身份的演进。数字身份的发展是与计算机互联网的发展息息相关的。随着互联网的普及和发展,数字身份早已融入到了我们生活中的方方面面,例如微信号、QQ号、手机号、电子健康码、网络游戏账号、电子邮箱等等。从数字身份出现,到后来随着用户对身份控制和自我保护意识的增强,数字身份先后产生了四种形态,分别是:
1.    中心化身份;
2.    联盟身份;
3.    以用户为中心的身份;
4.    去中心化/分布式身份。
它们具体的含义不在此赘述,在此只说结论,从技术上和法律上来看,前3种数字身份信息的所有权其实都不属于用户,在本质上都难以解决用户隐私问题和授权问题。随着用户数据泄露和滥用的日益增加,用户有权在数字世界中拥有和控制他们的身份,同时他们的数字身份信息可以被安全地存储并实现隐私保护成为越来越强烈的需求。从2018年被称为史上最严格的欧洲的《通用数据保护法案》 (GDPR),到2020年7月3日,第十三届全国人大常委会第二十次会议审议的《中华人民共和国数据安全法(草案)》无不体现着这个趋势的到来。与此同时,强调匿名性隐私性、密码学控制的区块链技术的应用热潮似乎也在呼应着这个趋势。因此利用区块链技术来解决前三种数字身份的弊端、实现分布式身份成为了一个可选项。
分布式身份的特征
那么,站在设计者的角度,作为一种摆脱前三种数字身份弊端的分布式身份,应该具有哪些特征呢?
首先,用户应该能够获得和控制一个全球唯一的ID。这个ID的产生可以完全不依赖于某一个中心机构,用户只要遵从某个公开的标准(通过软件/硬件)即可自行产生,完成身份定义里的“标识”任务,也就是对实体在一定范围内独一无二的标识作用,并且还能够控制这个ID以及能够证明自己对这个ID的控制。需要注意的是,为了使ID在某个命名空间——例如全球——是唯一的,那么需要具备两个条件,一个是公开,一个是时间戳。“公开”使得后续产生的、因为某种原因重复的ID不再被大家接受,而时间戳使得ID被公开的先后顺序有保障。作为分布式的身份,同时也为了保护隐私,并不适宜使用类似由权威中心颁发的身份证号等可能泄露隐私的ID作为身份的主索引。
因此,“一套ID产生算法”+“一套用于绑定ID并证明对其控制权的公私钥产生算法” + “一个能公开访问的、有时间戳的、不被某个中心权威控制的、难以被篡改的注册表”就构成了这个解决方案的部分要素。
其次,标识符ID的产生问题解决了,还需要解决“属性”的问题。属性问题的解决实际要分成两个层面:
1.解决各种各样属性与ID的关联问题,使得属性/ID持有者通过ID可以管理和它关联的属性,也可以让属性的赋予者/颁发者能够对属性进行状态的变更;
2.解决从ID到属性的访问入口问题,毕竟我们希望这种数字身份能够在网络世界中可信地传输并且快速验证,从而构建身份持有者与身份验证者(往往也是服务提供者)之间的信任。
第一个层面的问题,实际是颁发者向一个申请者ID颁证的过程及对发出的凭证的认证和维护能力。在颁证过程中,首先需要用户以此ID向颁发者申请,并证明自己是ID的控制者;凭证的颁发者以用户自主产生的ID为核心对其进行属性描述,最后加上颁发者对这个描述的签名认证。对于凭证的吊销/停用等维护,除了颁发者能够对属性进行变更,也需要一个公开的、可信的渠道来进行公告,便于验证者核验。
第二个层面的问题,作为用户自我控制的身份,其入口也应当由用户进行公告和维护。毕竟使用身份的目的是为了与外部进行交互,因此我们可以用一个公开的文档来描述与ID有关的metadata,放入用户自己产生并控制的公钥的信息、放入验证ID的密码学方案、更重要的是放入与ID相关的属性访问入口、交互方式。
需要特别指出的是,这个ID与ID的metadata信息都是用户自己产生的、自我控制的,是一个自认证,并没有一个类似CA的信任根为其做中心化的权威证明。因此我们需要一个机制去让整个分布式系统对用户的自认证达成一致,且不可被恶意篡改,才能实现对这个身份的分布式信任。为了保障metadata与ID的绑定关系和建立自认证的信任基,我们可以在不可篡改的分布式系统中同时公布ID及metadata,并以它们的首次公开记录作为信任基,从而后续metadata的更迭能够以此建立一个信任链。回过头来看,这个metadata实际上就是ID持有者自认证的一组属性。
总结上面两个层面的需求,可以看到,我们需要一个这种自认证提供渠道来完成类似PKI的功能,公布ID与公私钥的绑定关系,公布ID相关的metadata描述ID并为外部提供与ID交互的方法。即我们需要一个分布式PKI(DPKI)完成对ID的解析。
第三,作为分布式的身份,不被某个中心化机构控制,必然需要一个分布式系统作为上述机制的承载者,最重要的是,这个承载设施一定能够让身份相关的多方(身份持有者、颁发者、验证者等)对其信任。因此,这个分布式系统应当是公开透明的、防篡改的,并能够正确记录哪些数据由哪些实体控制。
综合以上三点,我们发现,能够实现分布式身份的基础设施至少是一个分布式的PKI,是一个公开的注册表,能够支持:
1.  用户自主产生和注册ID
2.  用户自主产生公私钥并与ID完成绑定,证明对ID的控制
3.  能够公开ID有关的加密材料、验证方法和各类服务(如访问各类属性)的入口以方便被外部访问
4.  验证方能够通过ID不依赖第三方而自主解析出相关的元数据从而展开进一步的访问
5.   记录的数据不可篡改,赢得所有参与方的信任
区块链技术赋能分布式身份
作为一种新的分布式系统形态,区块链技术通过其公开透明、不可篡改、去中心化维护等特性,极好地匹配了上述分布式身份系统对其支撑框架的需求,因此当前世界上几乎所有的分布式身份的探索都基于区块链技术展开。
腾讯云区块链的分布式身份解决方案也依托于腾讯云先进的区块链服务TBaaS平台实现了在广东省教育卡、安徽省立医院医联体电子健康卡等项目的落地,并在金融、政务、教育、医疗等领域持续进行探索和实践。
分布式身份与区块链的结合正在解决传统中心化身份带来的可移植性、合规性、敏感信息泄露等问题,将身份的主权交回用户手中。在这类体系下,第三方权威机构如CA等不再作为用户身份认证的信任根,仅仅作为用户控制下诸多凭证中某一个凭证的颁发者,验证者对用户身份的验证不再依赖于CA等权威中心,而是依赖于区块链这个信任机器构建的自认证机制。
希望未来能够携手更多的合作伙伴,共同探索和挖掘区块链分布式身份的价值。