去中心化的身份认证方案
⑴ 为什么很多平台还在用人工实名认证的方法 即要求上传身份证正反面照片,这种很容易造成用户信息泄露。
首先这个方法是相对安全的,其次这个方法对于商家更便利,谈谈个人的一些理解。
1、是因为传统的人工实名认证方法已经非常常见,大家也早已习以为常,但是如果不是必须的情况下很多用户是不愿意去进行实名认证的,这就会造成很多平台白白流失了很多真实客户。同时这种方法等待时间较长,用户体验很不好,容易流失客户。
⑵ 如果有一个去中心化的身份认证系统
如果有一个去中心化的身份认证系统,我觉得我们上网的体验将会彻底的改变。
无意间看见一家研究 区块链身份认证的公司 ,以下是他们的产品说明,总结就是:
1、用户自由创建建立一个或多个包含自己身份信息的账户
2、账户可以包含公开和私密的信息,信息的查看需要在用户的授权下才可进行
3、该账户是去中心化的,用户使用私钥进行管理,其他第三方不能篡改
有了这样的系统,它会节约我们上网时5%用于验证、登录、找回密码的时间,并能让我们有效的管理自己的个人身份与品牌信息。
以后浏览网站可以省略需要注册、登录的流程。身份验证直接在浏览器和网站完成。网站本身也需要在该系统登记,提交需要验证用户身份的申请,并根据信息的私密程度分级。用户随后访问网站时,再根据网站的申请,决定是否同意网站查看自己的信息。
由于该系统是去中心的,信息的所有权,修改权将在用户手中。(敏感信息的修改,可以通过第三方机构认证。比如不能随意修改自己的出生日期等)。
⑶ 去中心化DID身份认证的应用解析
去中心化DID的目的,是在保护用户隐私的前提下,支持在多个网络中共享ID,实现互操作性,从而构建更好的web生态。前一章节 去中心化DID身份认证的技术解析 ,介绍了DID基本的技术原理,这一章节,我们简单描述几个DID的使用场景。
现在人们已经习惯微信扫码登录,或是支付宝授权登录等,这样就可以用微信账号、支付宝账号直接登录到第三方网站上。所以我们的个人信息是由微信、支付宝保管,相信这些大网站不会崩溃,也不会泄露我们的数据等。但“大数据杀熟”现象就是一个反例,网站利用我们的数据,操纵着我们的支付,这是用户信息中心化管理的弊端。
以小学生入学登记为例,家长报名时需要出示户口本(证明这小孩户口是在当地,也确实是家长的娃)、房产证(证明房屋是该家长的,该房屋也确实归属于所属校区)外加其他结婚证、疫苗接种证明等。这些证明都是纸质的,都是由相关部门盖章确认了的。只是使用的时候很麻烦,家长需要把所有证件都带上,万一丢了补办也很繁琐。
微众银行实现的“粤康码”与“澳门健康码”互通项目,就是基于区块链+DID技术实现了跨境身份的认证,使得前往澳门的内地旅客,除了提供核酸证明以外,只需申领“粤康码”即可轻松过关,无需再次填写澳门本地的健康码。
再以买房为例,在买房前期,售楼处会要求购房者先出示一个资金证明(比如存款>500万),这样的话购房者就需要将好几个银行的资金挪到一家银行,凑够500万后,再开具一个证明给售楼处。对购房者来说,资金在几家银行间来回挪动就是损失,同时也泄露了金额数目。
如果采用DID就会便捷很多(前提还是多个银行、购房者、售楼处都已经在区块链上注册了DID),流程如下图所示。
购房者手里有多个银行所给的银行存款证明VC,他可以将这些VC中的金额合并,之后加上零知识证明ZKP的proof隐藏具体的数目,签名后转成VP发给售楼处。售楼处验证这个VP的正确性后,并验证零知识证明ZKP的proof的正确性,确认购房者拥有500多万的资金,但却不知道具体数目。
伴随着IoT设备的种类扩大,物联网的数据也逐渐丰富起来,但物联网设备的安全,及物联网数据的可信度也逐渐引起人们的关注。
如果能以DID给物联网设备进行身份标识,就可以控制物联网设备的安全性,并从源头确认数据的可信度。
以工厂的机器为例,每个机器都由其制造商赋予了一个DID。当机器运转时会产生大量的生产数据,可以将这些生产数据(非敏感的)进行签名,将数据、签名结果和DID一同保存在区块链上。
机器的制造商可以根据链上数据得知机器的运行情况,便于更好的售后保养服务。
当企业需要贷款时,银行可以根据区块链上的生产数据,并结合机器制造商的背书,判断企业的生产经营情况,评估贷款风险。 (这也算是区块链跨多方机构使用的一个场景)
以云网盘数据共享为例,如果我想要把网盘上的一些照片发给出版商,就在云网盘上申请一个链接,并加上一个访问密码,交给出版商去访问。出版商拿到这个号码就能取回照片,但这个密码可能给其他人重复使用,就导致我的照片被泄露了。
采用DID方式,可以相对安全地将数据共享给使用者,如下图所示(前提:数据保管方、数据方、用户都在区块链上注册了DID).
本章简短地介绍了DID的几个使用场景,也是我目前收集到的。但纸上得来终觉浅,以后可以尝试多种DID,并挖掘出更多真实应用。
⑷ 鍖哄潡閾炬庝箞鏍峰仛韬浠借
鍖哄潡閾炬庝箞鍋氳韩浠借よ瘉
鍖哄潡閾炬槸涓绉嶅幓涓蹇冨寲銆佸叕寮閫忔槑鐨勫垎甯冨紡鏁版嵁搴撴妧鏈锛岃兘澶熶繚璇佹暟鎹鐨勫彲闈犳у拰瀹夊叏鎬э紝鍥犳よ骞挎硾搴旂敤浜庤韩浠借よ瘉銆
鍖哄潡閾捐韩浠借よ瘉鐨勮繃绋嬩竴鑸濡備笅锛
鐢ㄦ埛娉ㄥ唽锛氱敤鎴峰湪鍖哄潡閾句笂娉ㄥ唽璐﹀彿锛屽苟鎻愪氦涓浜轰俊鎭锛屽寘鎷濮撳悕銆佽韩浠借瘉鍙风爜绛夈
韬浠介獙璇侊細鍖哄潡閾句笂鐨勮妭鐐硅繘琛岃韩浠介獙璇侊紝纭淇濈敤鎴锋彁浜ょ殑淇℃伅鏄鐪熷疄鐨勩佹湁鏁堢殑銆
韬浠借よ瘉锛氱粡杩囪韩浠介獙璇佸悗锛岃妭鐐逛細涓虹敤鎴风敓鎴愪竴涓鍞涓鐨勮韩浠芥爣璇嗙︼紙ID锛夛紝璇ユ爣璇嗙﹁绉颁负鈥滃叕閽モ濓紝骞剁敤浜庡悗缁鐨勮韩浠借よ瘉銆
绛惧悕璁よ瘉锛氱敤鎴蜂娇鐢ㄨ嚜宸辩殑绉侀挜瀵归渶瑕佽よ瘉鐨勪俊鎭杩涜屾暟瀛楃惧悕锛屽苟灏嗙惧悕涓婁紶鍒板尯鍧楅摼涓娿傚尯鍧楅摼鑺傜偣浣跨敤鍏閽ラ獙璇佺惧悕鐨勬湁鏁堟э紝纭淇濊ヤ俊鎭鏄鐢辩敤鎴锋湰浜哄彂鍑虹殑銆
鏁版嵁瀛樺偍锛氱粡杩囪韩浠借よ瘉鐨勪俊鎭浼氳瀛樺偍鍦ㄥ尯鍧楅摼涓婏紝淇濊瘉鏁版嵁鐨勫畨鍏ㄦу拰鍙闈犳с
鎬讳箣锛屽尯鍧楅摼韬浠借よ瘉鍒╃敤鍘讳腑蹇冨寲銆佸垎甯冨紡鐨勭壒鐐规潵纭淇濈敤鎴风殑韬浠戒俊鎭瀹夊叏銆佸彲闈狅紝鍚屾椂淇濊瘉韬浠戒俊鎭鐨勯殣绉佹у拰淇濆瘑鎬с
⑸ 去中心化DID身份认证的技术解析
去中心化数字身份(Decentralized Identity,DID)是基于区块链技术建立起来的一种数字身份系统。它可以保证身份数据真实可信,同时也能保护身份用户相关的隐私,确保跟个人身份相关的数据归属于个人所有。很吻合2021年11月开始实施的《中国个人信息保护法》,有没有?
V1.0 传统的身份认证 :用户在每个网站上都重复注册账号,使用账号+密码的方式登录,每个网站各自掌握着用户的身份信息,如图1(a)所示。
缺点 :重复注册账号,用户会时常不记得账号密码;而且多个网站都有用户的信息,也导致信息泄露。
V2.0 以单点登录代表的身份认证 :用户在一个网站上注册的账号,可以授权登录到其他网站,比如在支付宝、微信、facebook、google等网站注册号账号后,授权登录到其他网站,如图1(b)所示。
缺点 :用户的信息都掌握在几个大网站内,会有”店大欺客“的成分存在,也容易出现信息泄露的情况,如facebook的用户信息泄露问题。
V3.0 去中心化的身份认证 :用户保管自己的身份信息,在必要的时候,以最小化的方式出示给各个网站确认即可,如图1(c)所示。
算缺点么? 需要区块链作为底层技术支撑,将区块链作为一个可信任的第三方,来保证身份信息的完整性和正确性。
DID 文档是对DID的详细说明,是一对一的关系,可以看作由两部分组成:DID metadata,以及 DID public key,如图4(a),其中public key是关键,用于数字签名或加密操作等。
一般 DID 由用户自己保存,而将DID document 保存在区块链上(可以DID为 key 做索引),以保证DID document 的正确性。
当用户在区块链上注册 DID 时,可以根据智能合约生成DID 及相关的document,并由智能合约负责 DID在链上的读取和更新等。
DID的认证过程涉及四方的交互:证书颁发者,证书持有者(可以拥有一个app保存多张证书凭据VC),验证方,以及DID注册系统(比如区块链)。
证书颁发者是一个权威机构,比如某大学、公安机关等;持有者会保存权威机构发布的凭据VC(比如从大学拿到的毕业证,公安机关拿到的身份证等);验证者会对这些凭据的表示(VP),并结合区块链上的信息进行验证。
DID认证的前提是权威机构、VC持有者、验证者都已经在区块链上注册了各自的ID。
VC(Verifiable Credential) : 可验证的凭据,这相当于大学颁发的毕业证,或是公安机构颁发的身份证等。其格式如图4(b)所示,包括:
(1) VC metadata,比如发行人、发行日期、声明(claim)的类型等;
(2) claim: 是一个或者多个关于主体的说明,比如身份证凭据的声明包含:姓名、性别、出生日期、民族、住址等;
(3) proof证明:保存了颁发者的数字签名,用于验证该VC的正确性及来源等。
有些实现方案中使用app或是钱包存储VC,持有者自己保管,也可以将VC存在区块链中,作为私密数据保存。
VP(Verifiable Presentation) : 可验证的凭据表示,或者说是可验证的凭据的展示方式,有些场景下持有者不便于将VC直接给验证者看,或者一次验证中会涉及多个VC,所以就将一个或多个VC包装成VP,其格式如图4(c):
(1) VP元数据,包含了版本等信息;
(2) VC列表,要对外展示的VC的内容,如果是选择性披露或者隐私保护的情形,就需要对原始的VC做一些变动并加上对变动的证明。
(3) proof证明,主要就是持有者对本VP的签名信息。
VC中的claim五花八门,可能是大学毕业证书、身份证、驾驶证、结婚证等,为了能正确地解析,就需要提前在区块链中注册其解析方式。
这种事情一般由Authority来完成,按照业务场景分类,定义不同类型数据结构的Claim结构,并注册在区块链上,以保证全网通用。
以身份证为例,其完整的VC凭据包括姓名、性别、出生日期、民族、住址、照片等。在买火车票时,可能只需要姓名和身份证号码;上学报名时,可能仅需要姓名、出生日期等;确认少数民族身份时,必须要明确民族信息。所以很多场景下,不是全部选项都需要,可能只需要其中的一两项,可以仅仅披露必须项。
但如何确认披露的这几项是正确的,没有被修改过呢?这里用到了经典的Merkle Tree结构,如图5所示。比如在只需要披露生日的场景下,就可以借用”生日“的兄弟选项”民族“,以其到树根的路径<Hash1, Hash34> + MerkleRoot 来验证”生日“的正确性。
比如证书到期了,颁发者需要撤销之前发布的凭据VC,这里用到了密码学中的累加器。
在颁发者发布VC时,会给每个VC都设置一个大素数,并保存所有大素数的RSA累加结果;当需要撤销某个VC时,就先用该VC的大素数去除Accumulator,并更新Accumulator,之后验证时,用 VC 对应的大素数去除 Issuer 公开的 Accumulator,如果能整除,则表明是VC是有效的(未被撤销)。
基于Ethereum,比较知名的DID是uPort。我也曾关注过Hyperledger的DID项目 Hyperledger Indy,但其底层采用了自己的一套区块链架构,而非Hyperledger Fabric,这估计是基于Fabric 的DID实现的场景较少的原因。微众银行FISCO BCOS基于自己的BCOS架构,实现了自己的一套 WeIdentity .
该章节只简单讲述了DID是什么,并粗略介绍了其使用原理,还有很多细节未能一一道来,如需要更多细节请移步:
在本文中介绍了DID的单一实现方式,今天看到另外一篇博客 Demystifying Digital Identity (2/2) 或参考其翻译 揭开数字身份的神秘面纱2/2 ,建议通过一组链接文档来实现扩展的DID,以信息图谱的方式来组织文档,如主链、关联的多个账户、分类的基本信息profile、关联的外部服务或资源等,如下图。这样的DID,就可以对接任何应用程序、服务或用户,而且是一个全球可用的、分布式的、可审查的DID。