zoukankan      html  css  js  c++  java
  • 基于区块链的自主身份和可信声明

    摘要

    自主身份是以用户为中心建立的自主认证系统,可信声明则是围绕自主身份建立的鉴权系统。自主身份和可信声明真正做到了身份和权限的分离,让数字身份的使用范围无限扩大、权限粒度无限细分,将身份的控制权交还给用户。基于这些技术,未来可以建立可信网络。

    1.自主身份

    自主身份是一种数字身份,它的宗旨是将用户置于身份管理和控制的中心。反观我们平时使用的社交、应用、服务等账号及其衍生出的单点登录账号系统,账号全部都由相应的中心化系统分配,在这些系统中,用户获得的是通行令牌而非身份。那什么是身份?身份是指在数字世界中,人、机构、应用或设备等实体的属性集合,如人的居住地址就是其中一个属性。所谓自主身份指的是可以让用户自行管理其围绕其身份标识的可信声明等一系列的属性集合,例如所有权、操作权,皆归用户所控制。这样一套身份系统将有望成为数字世界的基础设施。

    ThoughtWorks 区块链团队参考 W3C 的 DID 协议和可验证声明协议,设计并开发了自主身份框架和系统,尝试建立一套 DPKI 基础设施,主要作用是把线下线上的实体,映射到区块链网络上,让数据有其属主,支持基于 DID 的登录,可信声明的颁发和验证等用例,以期建立一个可信网络。

    2.可信声明

    在我们现实生活中,毕业证书,身份证,护照,驾照,职业资格证,某件艺术品的鉴定证书是非常常见和有用的。但是在我们的数字世界,这类机制却不够完善,比如我们没法把上述现实生活中的证书方便地数字化。

    可信声明又称可验证声明,证书或者凭据,是我们在数字世界中颁发证书的一种技术,这种技术需要解决可信声明的创建,存贮,展示,验证,所有权,隐私保护等问题,我们需要寻找到一种可以解决自主管理数字身份和声明的技术方案。

    3.可信声明解决的问题

    当下的互联网已经给世界带来了非常巨大的变化,但是互联网在设计的时候,主要是用来传播信息,可信声明可以从另一个维度可以组建一个新的网络世界:

    1. 数字身份:可信声明是网络世界中的数据,在当前的互联网中,数据是可以随意复制的,想要颁发可信声明,就必须解决数据所有权问题,所有权可以归属于人,也可以归属实体,而这些人和实体必须映射到网络世界。
    2. 数据所有权:当在线下有法律意义的实体(人或者公司)在数字世界有身份后,就可以把某些数据的所有权设置为这些实体。
    3. 可验证的数据:数据有了所有权,必然是因为有办法验证是谁颁发该可信声明给谁,并且该数据是否有篡改。
    4. 隐私保护:在当下互联网世界,数据掌握在中心化的服务中,而数据所有权的要求必然使数据掌握在所有者手中,这样就具有更好的隐私保护。
    5. 可信网络:当网络的参与者都是具有数字身份,并且携带可信声明的数字人的时候,网络世界将不同于现在充斥着无主信息的互联网,而是可信网络。 我们可以看到,当下的互联网技术是无法满足可信声明的需求的,必须有新的技术才能解决上述问题。

    4.可信声明框架

    ThoughtWorks 使用区块链技术,提出了自己的可信声明框架,协议和实现,帮助创新落地,本文分别介绍以下两个概念:DID(Decentralized Identifiers),Verifiable Claim(可验证声明),并介绍 ThoughtWorks 自己的实现。

    4.1.ThoughtWorks DID

    关于 DID 协议,简单的说就是依托 DPKI,基于区块链的去中心化身份标识。 我们使用联盟链,把标识线下线上的实体赋予数字化的身份,这个身份简单来说就是一个 ID,和我们的身份证号一样。不要小看这一个 ID,实现它的创建,存贮,使用,验证等一系列功能可不容易,比如存贮方面,如果没有区块链技术,我们哪一家公司可以承担保存这个 ID 的重任呢,政府也只适合去保存身份证一类的 ID。

    这些 ID,还可以关联其他一些信息,比如公钥,有了公钥,就可以用来进行验证或者加密,另外可信声明也是关联到 DID 上。值得注意的是,DID 可以标识人,财,事,物等,不仅仅标识人。

    4.2.可验证声明

    声明是一份文件,它标识了 DID 的某些属性,为了方便讨论,我们抽象出几个角色,分别是:

    1. 声明”持有者”,该持有者在数字世界用 DID 标识。
    2. “颁发者”,它被社会或者法律认可可以颁发某种证书,同样,也具有一个 DID 标识其数字身份。颁发的证书中包含持有者和颁发者的 DID,证书本身也具有 DID。
    3. “验证者”,验证者往往提供某些服务给持有者,但在提供服务前它可以验证持有者的某些声明。验证者不一定需要 DID,但是如果验证者有 DID,就可以让持有者反向验证自己。

    下图是可信声明的颁发序列图,用户使用区块链钱包和 issuer 交互,双方都有 DID,在区块链上注册,DID Register可以理解为区块链上的一层API。

    颁发可信声明

     

    下图是验证流程,用户可以像服务方出示声明,服务方可以充当验证者,去验证用户的声明是否是自己想要的。

    验证流程

     

    举个例子来阐述一下问题,当学生从某大学毕业后,学校会给其颁发证书,学生去找工作,用人单位在发聘用函之前,需要验证该求职者的毕业证书,验证的方法是让其出示原件,并且委托专业的背景调查公司去调查证书的真伪。如果是由工作经验的求职者,则还会调查其工作背景,工作表现等等。上述事实说明,建立信任的过程成本是比较高的,当下的这个流程,只能用在求职这样比较重要的事情上,使用场景也比较局限。

    那么 ThoughtWorks 是如何利用区块链技术赋能类似场景的呢?

    1. 首先我们要解决颁发者的问题,需要有一种技术手段,把纸质的毕业证书变成数字化的,这时候数字签名技术就可以发挥作用,某学校可以把学生的信息用学校的私钥签名,形成独一无二的一份数字文件,把这份文件给到学生,并且在区块链上进行存证(这一步后面可以用来吊销证书),标注产生的日期。
    2. 学生拿到这份证书后,可以保存在自己的手机钱包,U盘等多个地方,就像保存纸质的证书一样,保存的责任在于学生自己,当然这一步可以用技术手段帮助学生存贮证书,比如存贮在云盘或者去中心化存储,如 IPFS 上。
    3. 学生求职的时候,可以向公司出示这份证书,因为证书是签名的,公司可以用学校的公钥(公钥保存在区块链上)去验证是否是某学校签名的,并且是否被修改过内容。

    4.3.可验证的网络

    上面毕业求职的场景中,学校是颁发者,公司是验证者,验证者验证证书的真假,该真假的内容包括:是否是该学校颁发的,是否是颁发给该学生的,内容是否是没有被改过的,该场景是我们的一个引子,可以延伸出更多的场景,比如:

    1. 我们确定了是学校颁发的,那么我们是否可以确认该学校是不是正规的学校呢,学校的信息在网络上是否可验证的。
    2. 学生出示证书给公司的时候,公司是否是可验证的呢?
    3. 公司在前面验证了学历证书,那么是否可以验证该学生的公民身份呢? 可能会奇怪,现实生活中,学校一般都是比较大的有公信力的,往往不需要验证,公司有自己的办公楼,有新闻报道,一般也具有一定的公信力,为什么还需要验证呢?大家不要忘了,现在我们是在数字世界中,数字世界里面,你看不到宏伟的办公楼,也看不到新闻报道,人感觉到的信任源都不存在,那么我们怎么满足这样的需求呢?

    我们可以这么验证学校,首先,公司,学生和学校都可以在我们的可信网络里面注册 DID 来标识他们的数字身份,这些数字身份关联到公钥,并且公布在外,人人都可以获得该标识和该公钥。然后学校的DID 里面可以携带一个国家教育部门颁发的签名文件,里面包含了学校的信息(因为学校是公共机构,并不需要保护它的隐私),这样公司就可以验证该学校是否是正规的了,这个场景在跨国坏境其实还蛮重要,你不太可能知道美国第20名的学校是哪个,也不方便验证一个美国学生的毕业证书,如果有可信网络,完成这个则场景非常方便。

    如果想验证公司,工商局也可以给供公司一个 DID,公司可以出示一个签名文件给学生,学生可以拿网上公开的公司公钥去验证这个签名,如果成功,则可以确定该公司是合法的公司,并且可以看到公司的一些基本工商信息。

    验证学生,学生可以先做 KYC,绑定到自己的 DID,在发送证书给公司的时候可以带上自己的签名,这样公司就可以验证自己的公民身份。

    5.可信网络的威力

    求职的例子比较好理解,但是却不太能体现整个可信网络的威力,实际上,如果我们整个社会的信用成本降低,则会大大促进金融活动的产生,从而促进经济的发展。这一块,相信有前瞻性的公司已经在投入大量的资源进行探索。区块链技术已经上升到国家层面,可信网络是重要原因。

    一个人在生活工作中会有各种记录产生,就像上面的学生获得的毕业证书。那么可信网络除了加快学生找工作的流程外,还降低了企业的成本。同样,一个小公司也可以复用这个流程,比如一个经营状况良好、资金运转规范、交税正常的公司,把自己的公司也注册到可信网络中,那么银行在审查的时候,则可以回顾其营业历史,给予其中小公司的贷款,而现在,中小公司是比较难获得贷款的。

    除了映射线下的人和公司,还有很多虚拟的资产可以有身份和价值,比如游戏道具本来只是游戏服务器的数据,但是有了数字身份以后,他就可以属于某一个人,数据被加工以后,还可以升值,转卖。数据一旦支持加工转卖,那么大数据公司和 AI 公司将会迎来爆发。

    6.隐私保护问题

    学校,公司的信息是可以公开的,所以政府部门给学校和公司的背书是可以放在网络上的。个人信息是不公开的,可以把声明保存在安全的地方。验证方验证的时候,并非需要向验证方出示所有的信息,这里我们可以进行隐私保护的设计,设计某种规则,让用户出示必要的信息,或者利用密码学的技术,进行隐私保护。 如果隐私保护,数据保护的问题能得到解决,大数据的数据源就可以形成市场,数据的收集,加工,交易,运算就会形成一个开放的市场,这一块值得在技术上持续探索。对于隐私保护, 我们现在的方案如下:

    6.1.信任验证方的情况

    如过验证方式可信的,我们可以把原文信息发送给验证方,这种情况下,我们可以用验证方的公钥加密,发送加密信息给验证方,这样只有验证方可以解密数据。

    6.2.不信任验证方

    在这种情况下,我们需要验证方发送一个断言,比如是否年龄大于 18 岁,这时候,我们可以发送特殊加密的信息给验证方,验证方经过运算后得出真假,验证方并不知道我们具体的年龄,只得到一个参与运算的结果。

    7.健康码的实践

    ThoughtWorks 在区块链领域不仅进行了技术性研究,同时也对某些关键技术进行了落地的尝试和原型的搭建,健康码就是其中之一。 现在的健康码,是中心化服务器收集用户的数据,在支付宝或微信等应用中产生的,这样效率是很高,但它的数据不是掌握在用户手中,不可能实现我们上文中的可信网络。

    支付宝验证码

     

    ThoughtWorks 基于区块链技术,建立了可验证的健康码,未来,该技术可以很方便的迁移到其他的领域。

    健康证明申请流程

     

    该流程适用的场景如下:我们去医院检查新冠肺炎,医院可以给我们出具测试报告,该报告用医院私钥签名,存贮证明在链上,用户可以用该证明去工厂工作。如果该用户外出接触到了患者或者发高烧,也可以吊销该证明(医院可以主动吊销,也可以由其他检测机构或者患者自己申请吊销)。

    健康声明的验证流程

     

    健康声明的验证流程,我们以进入某商场为例,用户进入商场前,需要接受商场门卫的体温检测,并且出示健康码(也可以扫验证者的二维码去上传手机中保存的健康声明)。验证者拿到声明后,用规定的验证签名算法去验证这个健康声明的内容和所有者,确定健康声明是否有效,这种手段能用机器验证声明的真伪,而且可以确保声明和持有人身份的一致性。


    作者:yin_shen
    链接:https://juejin.im/post/5ef6e026e51d453476711d3f
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Hadoop性能调优、YARN的内存和CPU配置
    linux权限之su和sudo的差别
    Hadoop JobHistory
    Hive存储格式
    左边元素和右边一样高
    状态码
    document.ready(function(){}),window.onload,$(function(){})的区别
    模糊查询实例
    jq实时监测输入框内容改变
    博客遇到的问题
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312512.html
Copyright © 2011-2022 走看看