DID 的思路天然的对隐私保护友好,那么 Web3.0 的 App 中如何基于 DID 来保护用户隐私呢?
隐私数据的存储
首先面临一个问题,用户的隐私数据到底要存放在哪里呢?
首先,跟某些区块链项目的主张不同,本书中的 Web3.0 架构思路下,主张把隐私数据存放到区块链之外的地方。所谓“之外”,可能是用户自己的机器,也可能是其他公司维护的云服务器上的完全受用户控制的加密区域。不把所有的数据都存放到链上有这么几个原因:第一,区块链是非常昂贵的,数据要被全网络的每个节点都拷贝一份,数据量如果太大,那么节点的存储成本会上升,更严重的是,很多节点会因为购买不起昂贵的硬件而被迫退出网络。比特币之所以严格控制区块大小,主要就是因为这个原因。第二,区块链是个公共场合,数据一旦上传到链上,任何人都可以下载到。即使数据经过了加密,但是如果有一天我们用的加密方法破解了,那么隐私数据就泄露了。
DID 和数据之间的关联是如何形成的呢?或者说如何证明数据属于某个 DID 而不是其他的 DID 呢?数据中需要保存各种数字签名,来证明数据的主人是谁,签名通常是第三方的签署的,让我的 DID 和我的数据之间形成了绑定关系。就跟现在如果我要证明一条推文的确是我发的,需要 Twitter 公司证明一样。区别在于,Web2.0 条件下,要基于对 Twitter 数据库的信任来证明这种所属关系。未来 Web3.0 时代,如果还是需要 Twitter 来证明,那么只是需要 Twitter 的私钥签署一下即可,而 Twitter 的公钥是注册在区块链上的,所以这种形式的证明是可验证的,即使 Twitter 公司倒闭,也不妨碍验证。
所以最好的方式是把数据存储到链外一个可以被用户安全控制的区域。这个存储方式要能很好的以加密的方式存储数据,同时也要能以绝对安全的加密通道来更新数据。
有选择的公布数据
Web3.0 之上要运行一个经济体,数据是这个经济体的石油,所以数据不仅仅要有最高的隐私,也要能够充分的流动性。但是,到底要展示给谁,展示哪些内容,都应该是可以由用户本人灵活决定的。
展示数据分售卖和免费提供两种形式。售卖数据是为了增加自己的收入,例如很多医生都愿意出钱购买自己领域的一些疾病的病历,患者拿到钱可以缓解医疗费压力。另外一些时候,我们会主动免费提供一些私人数据,以便获得一些自己想要的服务。例如公布一些身体状况信息给医疗服务,便于他们给出健康建议。
展示过程中会涉及数据脱敏和零知识证明等相关技巧来保护隐私。出于隐私保护的考虑,我们希望能只公开那些必要的信息,而不去泄露额外的信息。例如有贷款机构需要评估我的偿还能力,这时我只需要证明我的月收入是五千元以上,而不需要公开我的真实收入金额,这个时候就可以利用零知识证明作为技术手段来达成。数据脱敏是在数据卖给他人之前,把里面的敏感信息,例如住址,电话等等进行剔除或者变形,这一点显然也是非常必要的。
结论
有了 DID ,有了用户自己控制数据的基本架构,隐私保护就变得简单了。首先,DID 是不绑定肉身的数字身份,并且可以必要时创建新的 DID 完成交易,所以很难通过 DID 来确定我是谁,这是对隐私的第一层保护,换句话说,DID 相当于一个假名。DID 架构下,数据可以加密后放到自己的存储区域,用户自己选择合适的加密,存储,和同步方式,这是对隐私的第二层保护。而最后一层保护是,用户可以结合零知识证明或者其他手段,来有选择的,自主的去决定要售卖或者公开自己的那些数据。