在上一篇文章中,我们给出了一种零知识证明的方法,解决用户身份属性的隐私问题,下面我们再来谈谈基于DID技术,我们都能在什么场景去应用。
0x.0 无密码安全登录
这个使用场景大家应该都很熟悉了,就类似于微信扫码登录,当我们要注册或者登录一个网站时,不需要再填写用户名、密码、邮箱之类的信息,只需要用手机里的数字身份APP扫描登录页的二维码,然后在APP中弹出扫码后的信息,选择确认登录即可。使用DID的APP与传统的微信扫码登录不同之处就在于DID中用户的身份信息是用户自己掌握的,而微信扫码登录的身份信息是腾讯掌握的,如果哪一天腾讯封禁了你的微信账号,那么你将无法登录所有之前使用微信登录的网站。而DID不会有这个问题,因为没有人能够封禁你的DID。使用DID实现无密码登录的流程如下:
- 用户打开要登录的网站,网站服务器生成一个包含随机分配的ID、网站DID、网站服务器URL的二维码。
- 用户解锁手机中的DID APP,并扫描网站上的二维码。
- APP获得二维码中的ID和服务器提交URL,生成登录请求,并使用网站DID去区块链查询DID文档,获得网站服务器的公钥,用公钥加密请求数据,发送到网站服务器。
- 网站服务器用私钥解密登录请求,并在区块链中查询DID对应的DID文档,从中获得公钥,用公钥验证签名,确保DID为对应的用户。
- 网站服务器验证通过,刷新登录页面为已登录状态。
从整个流程中我们可以看到,服务器并不知道用户的密码,而且也无法获得除用户的DID和DID文档以外的任何信息,从而保证了用户隐私数据的安全。从此再也不用担心XX网站用户信息泄露或者密码被黑客撞库,登录了其他网站盗取有用信息的情况发生。
0x.1 身份认证
在大量的涉及价值的网络中,尤其是金融产品的网络,都要求做好KYC和AML。尤其是KYC,需要获得用户的一些身份信息,而每注册一个金融网站就需要认证一次身份信息十分繁复,使用DID进行身份认证可以简化这个流程。以某互联网金融APP为例,如果一个新用户想在上面做投资,那么需要提供手机验证码、身份证照片验证、人脸识别验证、录制视频等手续。而如果该用户又去另一个互联网金融的APP里面,又得再次进行相关的验证,非常的麻烦。而如果基于DID,可以将身份认证的手续大为简化。当然要进行身份认证的前提是:公安机关、大学等身份信息、证书颁发机构已经将VC生成,并发到了用户手中。用户将VC存储在自己的云空间或者自己的手机中。
在用户通过无密码登录APP后,进行实名认证的过程如下:
- 用户登录到网站或者APP或者商家点击认证按钮。
- 服务器根据业务需求,生成需要认证的信息的请求,并将请求以二维码或者其他方式发送给用户DID的APP。
- DID APP收到认证请求后,查询本DID是否有满足要求的VC,是否有对应的字段等,如果满足要求,显示认证的内容,并请求用户通过指纹或者密码解锁私钥进行签名,以生成VP。
- 用户在确认信息无误后,解锁私钥,生成VP,并将VP以二维码或者直接回传商家服务器的形式,发送到商家服务器。
- 商家服务器收到VP后,验证VP签名无误,满足验证的要求,显示验证通过。商家服务器将VP保存,并关联用户DID。
除了金融场景要求的KYC之外,前面我们也举例过的公司入职时要验证学历、酒店入住的时候要验证身份、买烟酒时要验证年龄大于18岁,在购买景区门票时验证学生身份享受学生折扣等。
0x.2 电子签名
在传统的电子签名方案中,用户需要预制一个U盾,该U盾中含有分配给该用户的私钥还有给该用户颁发的证书,每次签名需要插入U盾,安装插件,才能正常使用。而基于U盾的电子签名方案具有以下几个问题:
1.需要很长的时间来准备U盾(制作证书),所以不能立刻申请,立刻使用。
2.U盾必须随身携带,而用户一般只有随身带手机的习惯,没有随身带U盾的习惯。
3.签名方在首次签名后可以对原文件进行修改,然后重新签名,仍然验证通过的。
基于数字身份DID的电子签名方案可以很好的解决前面提到的三个问题。其使用流程如下:
- 用户通过自己的手机创建好DID后,先向可信发证方发起请求,获得VC,并将VC存储在用户端。该VC就相当于传统PKI体系的证书文件。
- 用户在审阅文档确认没问题后,计算文档Hash,将文档Hash和其他摘要信息通过二维码或者其他方式发送到DID APP中。
- DID APP请求用户解锁私钥,并用私钥对文档哈希进行签名,并同时将:DID、文档Hash、签名值上链。
- PC端检索区块链,获得上一步骤上链的DID、签名值等信息,验证通过,将签名结果展示在文档中。
以上步骤中,因为VC的生成和下载都是软件实现,所以不需要长时间等待U盾制作;而且私钥通过加密保存到手机中,不用单独再随身带个U盾;签名结果直接上链,防止篡改,预防签名方多次签名同一个文档多个版本的情况。
0x3 个人隐私保护
这个我在前面两篇文章,用户身份属性的选择性披露和零知识证明中已经详细讲到了,用户在亮证的时候只披露验证方需要的信息,而不会把整个证件的所有信息暴露,从而实现了个人隐私保护的目的。
另外还有进一步的一种叫PDC(个人数据中心)的方案,个人数据都加密保存在个人的数据中心中并与个人的DID关联,每个人对自己的数据负责,当需要获取用户的某些隐私数据时,需要该DID的授权才能解密访问。这属于一个比较新,而且还没有真正应用起来的方案,细节就不再赘述。
0x4 物联网标识
前面提到的几个应用场景都是针对人的身份,实际上IOT也可以与DID进行紧密结合,我们给每个IOT设备都分配其独一无二的IDD,基于物联网 区块链 DID构建:商品溯源、车联网、智能制造、智慧城市等应用场景。
以制造业中的制造机器为例,每个机器都有一个DID,该DID是由机器的制造商生成并赋予每台机器的,当机器运转时会产生大量的生产数据,该机器会将数据签名,将非敏感生产数据、签名结果和DID上链。机器的制造商可以根据链上数据得知机器的运行情况,便于更好的售后保养服务。当企业需要贷款时,银行可以根据区块链上的生产数据,并结合机器制造商的背书,判断企业的生产经营情况,评估贷款风险。
我们再以高价值商品的物联网防伪溯源为例,当每个商品被制造出来时,商家就为其IOT设备生产私钥并创建唯一的DID。因为私钥无法复制导出,所以只有在区块链上登记了DID的商品才是正品。而且商品的DID可以映射对应的非同质化通证,以数字化的形式表现商品的流转过程。
0x5 总结
DID技术是一个具有广泛应用场景的技术,尤其在关于居民身份信息的电子政务领域具有明显的优势,但是该技术需要公安部门之类的背书,目前还没有真正应用起来的场景。但是在不久的将来,随着个人隐私数据的保护立法和人民群众隐私保护意识的加强,DID必然会大放异彩。除了人的身份外,随着物联网技术,车联网技术,尤其是新兴的AIoT技术的发展,物品的身份标识也越来越重要,并以物联网标识为基础可以拓展出大量的应用场景。