草庐IT

「区块链+数字身份」:DID 身份认证的新战场

元宇宙中心 2023-04-18 原文

美国经济学家布莱恩 • 阿瑟在其著作《技术的本质》中,写过这么一句话:「技术总是进行着这样一种循环,为解决老问题去采用新技术,新技术又引发新问题,新问题的解决又要诉诸更新的技术」。

区块链技术之所以能流行,部分原因是它能解决互联网时代遗留下的问题,比如数据孤岛、数据垄断、隐私泄漏等。在诸多区块链的落地应用中,数字身份是最有可能率先覆盖上亿用户的场景之一。

对应现实生活的身份证,数字身份是公民在网络世界的标识,其价值不仅是证明「我是我」,更在于背后所链接的海量的个人信息。传统互联网是以中心化服务为特征,身份数据分散在各机构中,难以共享,且容易出现数据盗用问题。

区块链技术的可追溯、不可篡改和分布式等特点,有助于数字身份从中心化走向去中心化,即 DID(Decentralized Identity,译为「去中心化数字身份」或「分布式数字身份」)。DID 在保护隐私的同时,能让用户自主决定谁来查看和使用身份数据,在未来还有可能转换成可兑现的数据资产。

百度智能云 CloudDID

CloudDID 是百度智能云于 2019 年 11 月推出的一款智能小程序,内置于百度 APP,其核心是基于企业区块链平台「天链」的可信数字身份解决方案,为企业 / 用户提供数字身份服务。

刘尧说,「我们是先有区块链,后有数字身份。由于联盟链是跨部门、跨组织、跨机构的,当 BaaS 系统部署到企业端时,就会涉及企业间的身份认证。之前大家的做法是使用原有中心化的身份管理模式,但我认为,DID 将是未来更好的一种方式」。

使用体验上,用户要先注册百度 APP 的账号,才能登录 CloudDID 小程序,然后系统自动生成 DID 和私钥(主 / 备)。小程序的页面显示,CloudDID 采用的是 Secp256k1 签名算法,私钥仅本地存储。目前,用户可申请个人实名认证和企业实名认证,认证前需注册百度智能云的账号。

刘尧向巴比特表示,CloudDID 已实现开源,并被 W3C(万维网联盟)技术标准收录。2020 年 4 月 24 日,国家网信办发布《境内区块链信息服务备案清单(第三批)》,其中包括百度的可信计算平台 BCP 和可信数字身份 BIP。

 

CloudDID 的生态有三个参与方:一是用户,即 DID 的使用者,通过小程序来创建、管理自己的 DID,并把身份相关的数据存储在组件中;二是发证方,向用户发放数字证书,比如政府机关、学校等权威机构;三是应用方,向用户提供 DID 相关的应用服务,应用方会验证用户的 DID 和数字证书。

宏观上,DID 是一个动词,指的是用户、发证方和应用方在区块链上的交互过程。微观上,DID 是一个名词,指的是一串由数字和大小写字母组成的字符串,作为这三者在区块链上的身份标识。

它主要解决两类问题:认证和授权。认证的功能是证明用户使用某产品或服务前,具有使用资质;授权的功能是用户在获取某权利或认证时,需要通过前置认证来获得授权。开发者文档显示,

用户 DID 不是由单一机构赋予的,而是根据确定的算法(DID Spec)生成,同时还会生成一对秘钥(公钥和私钥),其中公钥与 DID 绑定在分布式存储(IPFS)上,私钥则保存在用户的设备(比如手机)。

与 DID 相关的个人数据不上链,而是加密存储在发证方,用发证方颁发的声明来证明用户的隐私属性(比如姓名、年龄、职业、邮箱地址等),但需经用户授权才能读取。这是与中心化数字身份的区别。

刘尧指出,开发 DID 有两个难点,一是认知上,「这个事情其实是比较新的,研发和产品经理理解起来都比较困难」;二是技术上,「虽然小程序看起来低端,但它是全栈式的,要融合到联盟链的身份系统中,对接和融合都有比较高的技术门槛。」

应用方面,CloudDID 目前主要面向 to B 的应用场景,刘尧举例,「联盟链上有多个参与方,比如某一家银行和运营商,如果某人既是银行的白金信用卡用户,又是运营商的黄金会员,由于两家机构都在联盟链上,那么他们可以相互认证,而不再需要繁琐的材料来证明用户的真实信息。」

谈及未来的规划,他表示,将继续把 CloudDID 向各个企业推广,通过数字身份,在各个联盟链之间搭建起桥梁。同时还将结合更多的安全技术,包括可信执行环境、安全多方计算、同态加密等,加强用户身份隐私的保护。

eID 数字身份链

如果你使用的是华为手机,那么打开手机自带的华为钱包,在卡证专区有一个选项是「eID」,可通过华为钱包使用 eID 相关的服务,比如电子合同的签名、快捷支付等。

eID 是以智能安全芯片为载体,由 “公民网络身份识别系统” 签发给公民的网络电子身份标识,在保护公民身份信息的前提下,快速实现线上身份识别。

eID 和 eID 数字身份链有着紧密的联系,eID 数字身份链以 eID 数字身份为统一的个人身份标识,结合 eID 电子签名和区块链技术,建立链接个人各维度数据的个人隐私保护体系和数据授权使用。公安部第三研究所作为指导机构和参与建设单位,北京公易联科技有限公司作为建设单位共同推广。eID 数字身份链结合 eID 电子签名和区块链技术,提供个人身份认证、签名授权、区块链存证等平台解决方案,在用户授权的前提下,实现多个信息系统的数据互通。

甘国华向巴比特表示,经过两年的发展,eID 数字身份链大致经历了三个关键节点,

一是区块链和 eID 的结合,当时我们发现数字身份是非常好的区块链应用场景,而 eID 在数字身份领域具有重要地位;

二是电子证照的应用,我们每个人在成长过程中有很多证照,比如居民身份证、学生证、毕业证等,都与身份证挂钩,于是把电子证照作为 eID 数字身份链的第一个应用;

三是提供数据服务,eID 数字身份链对个人数据进行确权,在用户授权的前提下,实现互通共享。

使用流程上,拥有 eID 用户即可使用 eID 数字身份链的服务,用户私钥存储在智能设备的芯片中;身份数据提供人提交信息确权申请,其他主体查看用户身份信息时,也需取得用户本人的授权,数据提供方将授权记录上链。

 

在甘国华看来,无论是数字身份,还是区块链,都处于发展初期,落地方面存在一些难点

首先是认知方面,尽管 eID 推广了这么多年,但大家还是更习惯使用身份证,对 eID 的认知比较初级。区块链在一定程度上促进了 eID 的推广;然后是应用方面,要做出具有示范效应的杀手级应用,基于 eID 数字身份链的电子证照具备这样的条件;最后是业务对接方面,如何让更多的合作方加入到 eID 数字身份链、共同发展,这既是难点,也是重点。

2020 年 3 月,深圳市信息服务业区块链协会举办区块链咨询培训,学员在线上考试成绩合格后,由该协会发放相关证书,eID 数字身份链对证书进行核验,学员可通过手机号查询并永久保存自己的电子证书。此外,中华国际科学交流基金会与中国集团公司促进会也利用 eID 数字身份链颁发了公益捐赠证书。

甘国华透露,eID 数字身份链「区块链 + 电子证照」服务还将应用于学历教育、物品认证、企业 / 个人名片等多个领域。未来会建立一个国际化的标准,跨全球应用,对外提供身份验证。

井证 J-DID

梅森是一位 70 后的创业老兵,曾在国内一家通信巨头工作 17 年,见证了通信行业和互联网行业的兴衰。2019 年,他的大学同学、时任安徽井畅 CTO 田朝晖找到了他,他们发现,同一个人在不同交易所注册的时候,都需要进行一次实名认证,对用户来说重复认证是不必要的。于是,他们俩一拍即合,决定把数字身份作为区块链创业的切入口,井证由此成立。

经过一年的发展,井证打造了两个产品:** Jpassword 和 J-DID**。 Jpassword 是面向 C 端用户的密码管理软件,用于保存用户名、密码、私钥和其他个人隐私数据;J-DID 是面向 B 端和 G 端的基于区块链的可信数字身份平台,遵循 W3C DIDs 标准,打造完全属于个人的 ID。

梅森认为,**「区块链 + 数字身份 + 通证」是中小企业打破巨头垄断的新机遇。**他说,

目前中小企业和互联网巨头竞争,需要打破传统思想观念的束缚。如果用巨头定义的规则进行竞争,是不可能成功的,要利用先进的技术和商业模式。而数字身份和通证正是解决这一问题的有力手段。

他进而解释道,「数字身份解决的是用户量的问题,通证解决的是用户激励的问题,如果一家企业既有用户量,又有用户激励,那么就有可能打破巨头的垄断。」尽管井证是基于井通底层公链进行开发的,但是他强调,井证满足合规要求,本身不会发行通证,考虑到未来每个人或企业都需要数字身份,因此把通证的数据归属于各自的数字身份之下是最合理的。

目前,井证和中国电信、公安部第一研究所都有合作,并参与了某市的政务区块链项目。其中,与中国电信的合作让梅森印象深刻。他说,现在电信使用天翼 U 盾来保护用户信息的安全,如果各个组织机构颁发各自的 U 盾,用户携带各种 U 盾就很不方便。基于区块链的数字身份,能解决这一问题,用户的 J-DID 和私钥存储在 SIM 卡安全芯片,与 DID 相关的隐私数据保存在 IPFS 分布式存储平台。用户的数据由自己控制,为未来的数据确权和交易奠定基础。

 

其中,CTID 是由公安部第一研究所推出的「居民身份证网上功能凭证」,与 eID 是竞争关系

在中国,随着 BAT 等巨头公司的壮大,和互联网获客成本的增加,很多人习惯利用支付宝或微信提供的用户身份信息,来访问各类应用。梅森坦言,项目落地最大的困难,是向客户普及数字身份的作用,和解释数字身份给用户带来的益处,「因为在互联网下, 大家使用中心化公司提供的身份登录应用的观念根深蒂固,所以在说服客户方面需要花很大的力气。」

至于未来,他表示,中国数字身份的发展将经历三个阶段:初期是 3 年内解决用户隐私问题,打破数据孤岛;中期是 5 年内解决用户数据权属和交易的问题;后期是 10 年内解决用户在应用上的选择权问题,打破巨头的垄断。而井证正在按照预定的规划向前走,把数字身份的事业做大做强。

有关「区块链+数字身份」:DID 身份认证的新战场的更多相关文章

  1. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  2. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  3. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  4. ruby - 在 Ruby 中创建按公共(public)键值分组的新哈希 - 2

    假设我有一个在Ruby中看起来像这样的哈希:{:ie0=>"Hi",:ex0=>"Hey",:eg0=>"Howdy",:ie1=>"Hello",:ex1=>"Greetings",:eg1=>"Goodday"}有什么好的方法可以将它变成如下内容:{"0"=>{"ie"=>"Hi","ex"=>"Hey","eg"=>"Howdy"},"1"=>{"ie"=>"Hello","ex"=>"Greetings","eg"=>"Goodday"}} 最佳答案 您要求一个好的方法来做到这一点,所以答案是:一种您或同事可以在六个月后理解

  5. ruby - 将n维数组的每个元素乘以Ruby中的数字 - 2

    在Ruby中,是否有一种简单的方法可以将n维数组中的每个元素乘以一个数字?这样:[1,2,3,4,5].multiplied_by2==[2,4,6,8,10]和[[1,2,3],[1,2,3]].multiplied_by2==[[2,4,6],[2,4,6]]?(很明显,我编写了multiplied_by函数以区别于*,它似乎连接了数组的多个副本,不幸的是这不是我需要的)。谢谢! 最佳答案 它的长格式等价物是:[1,2,3,4,5].collect{|n|n*2}其实并没有那么复杂。你总是可以使你的multiply_by方法:c

  6. Ruby 的数字方法性能 - 2

    我正在使用Ruby解决一些ProjectEuler问题,特别是这里我要讨论的问题25(Fibonacci数列中包含1000位数字的第一项的索引是多少?)。起初,我使用的是Ruby2.2.3,我将问题编码为:number=3a=1b=2whileb.to_s.length但后来我发现2.4.2版本有一个名为digits的方法,这正是我需要的。我转换为代码:whileb.digits.length当我比较这两种方法时,digits慢得多。时间./025/problem025.rb0.13s用户0.02s系统80%cpu0.190总计./025/problem025.rb2.19s用户0.0

  7. ruby - 按数字(从大到大)然后按字母(字母顺序)对对象集合进行排序 - 2

    我正在构建一个小部件来显示奥运会的奖牌数。我有一个“国家”对象的集合,其中每个对象都有一个“名称”属性,以及奖牌计数的“金”、“银”、“铜”。列表应该排序:1.首先是奖牌总数2.如果奖牌相同,按类型分割(金>银>铜,即2金>1金+1银)3.如果奖牌和类型相同,则按字母顺序子排序我正在用ruby​​做这件事,但我想语言并不重要。我确实找到了一个解决方案,但如果感觉必须有更优雅的方法来实现它。这是我做的:使用加权奖牌总数创建一个虚拟属性。因此,如果他们有2个金牌和1个银牌,加权总数将为“3.020100”。1金1银1铜为“3.010101”由于我们希望将奖牌数排序为最高的,因此列表按降序排

  8. ruby-on-rails - rails 中的正则表达式匹配 [\w] 和 "-"但不匹配数字 - 2

    我想为名字验证编写一个正则表达式。正则表达式应包括所有字母(拉丁/法语/德语字符等)。但是我想从中排除数字并允许-。所以基本上它是\w(减)数(加)-。请帮忙。 最佳答案 ^[\p{L}-]+$\p{L}匹配anykindofletterfromanylanguage. 关于ruby-on-rails-rails中的正则表达式匹配[\w]和"-"但不匹配数字,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  9. ruby-on-rails - 将数字字符串转换为数字数组 - 2

    在我的应用程序中,我有一个文本字段,用户可以在其中输入类似这样的内容"1,2,3,4"存储到数据库中。现在,当我想使用内部数字时,我有两个选择:"1,2,3,4".split(',')或string.scan(/\d+/)do|x|a两种方式我都得到一个像这样的数组["1","2","3","4"]然后我可以通过在每个数字上调用to_i来使用这些数字。有没有更好的方法可以转换"1,2,3"to[1,2,3]andnot["1","2","3"] 最佳答案 str.split(",").map{|i|i.to_i}但是这个想法对你来说

  10. ruby - 递归地将所有数字字符串转换为 Ruby 哈希中的整数 - 2

    我有一个随机大小的散列,它可能有类似"100"的值,我想将其转换为整数。我知道我可以使用value.to_iifvalue.to_i.to_s==value来做到这一点,但我不确定我将如何在我的散列中递归地做到这一点,考虑到一个值可以是一个字符串,或一个数组(哈希或字符串),或另一个哈希。 最佳答案 这是一个非常简单的递归实现(尽管必须同时处理数组和散列会增加一些技巧)。deffixnumifyobjifobj.respond_to?:to_i#IfwecancastittoaFixnum,doit.obj.to_ielsifobj

随机推荐