如何通过区块链+隐私计算实现数据跨机构合规安全共享 | QCon
如何在依法合规的情况下使用数据、共享数据,从而实现最大获利成为业界首要攻克的难题。本文整理了腾讯云区块链产品中心梁永甫老师的演讲《区块链和隐私计算在数据要素流通领域的应用实践》,与大家共同探索如何在保证数据产权和隐私的同时,通过数据共享挖掘数据价值。
今天跟大家分享的主题是“区块链和隐私计算在数据要素流通领域的应用实践”,在这个过程中会跟大家分享一些我们的观点,如我们怎么用区块链,为什么可以用区块链,用它到底能给我们带来哪些好处?
主要从以下三个部分跟大家分享,首先我们为什么要做数据共享,数据共享的意义在哪里,如果做数据共享,会面临哪些问题或痛点?接下来我们分两种场景,一种是 B2B,即企业之间做数据共享时应该怎么做,区块链能帮他们解决什么问题。
另一种是 C2B,就是个人数据在给企业分享时会面临哪些困难,可以通过什么样的方式去解决。这个我们可以用一种分布式数字身份,看看它是怎么解决这些问题的。
首先我们为什么要做数据共享?
根据中国信通院所出的《数据价值化与数据要素市场发展报告(2021 年)》,里面提到了一个数据发展路径:数据资源化——数据资产化——数据资本化。
最早大家使用数据的方法其实是一个资源化的过程,即使无序、混乱的原始数据成为有序、有使用价值的数据资源。包括通过数据采集、整理、聚合、分析等,本质是提升数据质量、形成数据使用价值的过程。这个过程是最早的,也可能是我们现在所处的一个阶段。
这个时候的数据应用,都是在企业内部,不需要去拿外部的数据,或者说不需要把我们的数据给到外部。
但当把数据汇集起来,用起来之后就会发现,不仅仅可以用自己的数据,还可以用别人的数据,同时自己的数据也可以被别人使用,这时候就产生了一个叫“数据资产化”过程,就是你在给别人数据或者从别人那里拿数据的过程中,数据本身是有价值的,是可以用价值化的方式衡量的。这个过程对数据使用提出了一个要求:要把这些数据通过一种什么样的方式,更合理地、更好地分享给别人和从别人那里拿出来。
过了这个阶段之后,就是“数据资本化”了,即这些数据的价值已经被广泛认可了,就像房子一样,它有了固定的价值,我们就可以拿它去做抵押,去做一些金融化的操作,这是一个数据未来发展的途径。
这个路径下,也看到其实整个数据市场规模还是挺可观的。报告中显示,在整个数据交换或者说数据直接买卖的市场上,中国在 2021 年会达到 73 亿美元,而且其增长速度非常快,增长率会达到 35.1%。
虽然 2018 年增长率 58.5% 更高,2019 年(47.2%)和 2020 年(32.3%)都降了一点,但整体增长速度还是非常快的。这也意味着,未来两年中国将有可能超过欧盟,成为全球第二大数据交易市场。
从政策角度看,我们国家已经把数据作为一种生产要素,让其参与到整个社会分配当中。目前已有一些可落地的政策正在实施中,比如全国一体化大数据中心的建设。这时候要做的事情是,由地方政府收集某个地区的相关数据,在不同地域之间进行数据交流、数据互换等。
从国家和地方角度来看,是鼓励大家使用数据,但同时也做了一些限制,比如第一部个人信息保护法的出台。
这也表明,不是鼓励大家随意使用这些数据,而是在保护企业数据安全和个人数据隐私的条件下去使用这些数据。这样看起来是比较矛盾,那这个矛盾就需要一种办法去解决,我们就想到区块链在这里面可能会有一些使用价值。
值得注意的是,在数据分享过程中,除了上述的大背景之外,数据流通与合作还面临以下四个挑战:
第一,如何保护数据资产方的数据产权。数据跟房子或车子不一样,数据分享出去后可以重复的复制,到最后可能已经说不清楚这些数据到底是谁的数据,这是一个很大的问题。如果不解决这个问题,那几乎不会有人愿意把数据共享出来。
第二,如何保护用户隐私和数据资产方隐私。
第三,如何有效融合、匹配多方数据。目前所做的数据共享,更多还是局限在某几方之间,但如果在一个更大的范围内做数据共享,协作方会变多,拿到的数据也会越来越多,这种情况下我们应该如何有效地融合和匹配多方数据?有没有可能做出一个标准化流程?
第四,如何为数据有效定价。数据定价就是要给到对方多少钱,才能达到数据交换的目的,这部分不是技术所能解决的问题,所以我们今天的分享主要是,如何通过区块链和隐私计算去解决前三个问题。
首先是企业与企业之间数据共享,标题中写到区块链 + 隐私计算,也就是说单靠区块链或者单靠隐私计算,可能没有很好的办法来解决,我们需要把这两个技术结合起来。
我们先看隐私计算到底是什么?它能解决什么问题呢?很多人一起把数据拿出来联合去计算,但又不把数据本身共享出去,也就是说我们看不到别人的数据,但是又能用他的数据做计算,拿到一个联合计算后的结果,这是隐私计算所要做的事情。
目前主要有三种方式,一种是可信计算,即企业 A 和企业 B 把数据放到一个可信计算环境中,大家能往里面输入数据和算法,但不能从里面拿数据,只能从里面得到计算结果,这样可以做到保护隐私。
另一种是联邦学习,就是各企业在自己本地做数据计算,计算过程中把一些模型参数共享给一个第三方,由第三方做聚合后再把结果分享给参与计算的相关方,这样企业的数据不用共享出去就可以得到计算结果,相当于企业双方的数据放在一起计算出来的效果。
第三种是安全多方计算,它不需要计算环境或者第三方,而是我们每个人都把数据加密后给到其他人,其他人拿这个加密数据,用我们共同的算法计算出一个结果。
从上图对比可以看到,不管是可落地性,还是性能或支持场景,可信计算的性能是最优的,但在构造可信计算环境时需要底层 CPU 的支持,所以它对硬件有依赖。
另外,从支持场景角度看,可行计算和安全多方计算可以支持任意场景,而联邦学习却有一些限制,只有某些特定的算法才能使用这种技术。
回到数据共享过程中三个根本问题,一个是所属权,一个是隐私保护,以及做更大范围的数据共享,我们该怎么解决这些问题?
现在,我们看看当前的数据传输,最底层这一层的互联网传输数据有一个缺点就是太自由了,想怎么传就怎么传,中间没有任何控制。
从另一个角度,我们举另一个例子,假设我跟在座的某一个人用手机打电话,通讯公司会先监测到我给你打了电话,接通后我们会建立一个通道,通话结束后,通讯公司会发一个订单告诉我,我打了多少分钟该扣多少钱。另外还存在一种情况就是通话过程中突然挂断,说我欠费了,这就是一个控制。
所以从打电话的过程可以发现,除了把我的语音信号传给对方之外,还有其他可控制的操作,一个控制是需要接通电话把我的数据传过去,找一条链路进行通话;另一个控制是计时计费,记录我们通话的时间和费用;还有一个控制就是实时控制,什么时候欠费了,就通话就该结束了。之所以做到这样是因为在移动通信里面,除数据传输通道外,它上面还有一层专门做这种控制的网络叫核心网。
那么,我们是不是也能在互联网上面加一个控制层,来解决我们提到的权属问题或隐私问题?通过移动通信这个例子来看,应该是可以做到的。
那么数据共享的控制层需要做哪些事情呢?
一个是数据的标准,如果我们想让更多的参与方参与进来去更大范围地共享数据,首先要把数据本身标准化,大家才能在同一个频道里互相获取数据。具体操作就是建一个数据目录,每个人需要提供哪些数据,数据格式是什么样,都写到控制层,这样所有人都可以看到并按照设定的标准去共享数据。
一个是权限可控,我的数据谁可以看,什么时候可以给他看,这个权限控制在数据所属方,所以需要在控制层设置一种授权机制,只有我在控制层里给他开了权限,他才能在通过互联网从我这里拿数据。同时,整个过程要是透明的,即我什么时候拿过什么数据都需要记录下来,类似于一个数据访问记录。
通过数据标准化、权限控制,以及过程透明,就可以解决我们之前提到的第一大范围应用,第二数据所有权,因为数据是从哪里出去的,谁从哪里拿了数据,在控制层里都有记录,这样就可以保证数据所有权的归属权是谁。
可能会有人问,控制层为什么必须要用区块链,用一个中心化系统是不是也能解决?
首先,数据交易与传统的通讯网络存在一点差异,就是它没有一个承载主体,即交换数据的可能是很多人,然后控制平面让谁去做这个事情,目前来看是没有一个单独的承载主体合适。在这种情况下,区块链作为一种分布式技术,通过共识技术完成操作,比较适合做控制层。
其次,它的核心作用是运用一种广播机制,将权限、访问记录这些信息实时共享给所有参与方,我们也不用担心数据被泄露,所以综合来看,区块链最适合做上层的控制层。做好这些,我们就解决了数据大范围共享以及数据的所属权问题。
接下来我们看隐私问题。上面提到的数据共享是明文,但有些数据我们不想共享明文,这时候就要把隐私计算术加进来,包括可信计算、联邦学习这些东西。在运用隐私计算的过程中,也会有一些需要交换和控制的参数,同样可以放到控制层统一管理起来,那具体如何实现呢?
第一种方式是先实现明文信息的访问。比如现在上面控制层就是一个区块链网络,数据提供方已按照设定导入了数据目录。假设有一方想使用里面数据,可以通过区块链网络查看谁有他想要的数据,再在链上做申请访问,而这个操作也会同步给数据提供方。
对方看到申请信息后,会将授权信息放到链上完成数据授权,这时候数据使用方就可以通过链下的方式从数据提供方那里拿到数据。这就是链上授权,链下共享,它的应用范围非常广,尤其是在供应链领域,因为它的核心要点不是我要保护隐私,而是数据共享。
第二种就是,不想共享明文的情况下就可以加上隐私计算。假设需要做一些数据共享,当大家只是想利用一下这个数据,并不想让明文看到的时候,就可以把这个数据和要对数据所做的操作算法,放到可信执行环境里面,同时在链上做一个存证。如果未来产生数据纠纷的话,就可以在链上去查找记录。
在构建可信计算环境的时候会生成一个公私钥对,私钥谁也拿不到,但可以把公钥公布出来。比如数据提供方提供数据时,就可以用公钥把数据加密提供到这个环境里面,然后在里面把数据解密出来做计算,但外面的人是没有办法从这里面拿数据的,就算你拿出来也是加密后的,且私钥也拿不出来。不仅可信计算环境里面的数据、数据计算过程都是保密的,安全性也得到了保证,这就实现了一种数据“可用不可见”,在需要保护数据隐私的应用场景里会比较适用。
把上述的两种机制实现出来就形成了一个产品叫“数链通”,主要实现明文可见和不可见这两个场景下的数据共享。
如上图,在区块链层,有一个 TBaaS 区块链底层管理平台,用来管理整个区块链网络,在网络上构建数据控制层所需要区块链智能合约,实现一些业务逻辑的控制等等。
TBaaS 管理平台之上的支撑层,就是需要利用可信计算环境时所需要用到的机制,比如链上加密交换、链上授权链下交换,以及可信安全环境的搭建。
再往上就是应用层,即数据目录,就是用户在使用这个平台的时候,可以把哪些数据通过可视化的方式放到链上供别人查看,也可以看到我曾经给谁授权访问或谁实际访问过的访问记录。
那数链通是如何运作的?原来的 IT 系统,可能中间只用数据源这一层东西,但数链通给它加上了数据适配网关和区块链节点。
区块链节点就构成了一个区块链网络,也就有了数据控制层,再给加一个控制网关。网关主要做什么事情呢?我们之前提到过互联网传输数据是没有控制的,现在有了控制层,不管数据对外出还是从外面进,网关就是一个入口,这个入口与区块链网络进行交互。原来 IT 系统不同去管区块链这套东西,该怎么用就还怎么用。
当你要把数据对外分享时,可以通过这个网关把数据目录放到区块链节点上;当你需要申请别人的数据时,就通过网关在区块链网络上去申请;同时别人在申请你的数据,拿你数据的时候,网关也会做一个验证,看看这个数据是不是通过了区块链网络上的授权记录,是不是被授权过了。这样相当于在传统数据里面加了一扇门,这扇门保证了我们自身数据的安全,就不用担心数据被别人随便拿走等等,这是整个系统部署实现的流程。
第一种应用场景是政府数据开放平台。其实政府有很多数据是可以共享出来给外部机构使用的,如银行、保险、征信。可是这些数据本身是企业的,我们要通过一种机制把这些数据拿出来给外部机构使用,本身对企业是有好处的。
比如中小企业有他的纳税记录、社保人数等数据,把这些数据给到银行,银行就可以根据这些数据做更方便、更全面的风险评估,如果评估完信用良好,银行就可以提供贷款。但如果没有这些数据,或者金融机构没有办法拿到这些数据的话,风险评估可能会缺少很多依据,那企业可能很难拿到贷款。
所以对企业、对金融机构来说,这些数据本身价值是很大的,而通过数链通的数据共享机制就可以实现,在数据本身不出去的情况下,也可以提供给企业使用。另外,政府在共享数据的时候,其实也需要企业给他授权,数链通的控制层就可以管理、记录授权风险。
(政府数据开放平台)
主要操作:
政务大数据中心对政府职能部门的数据进行归集,并对原始数据进行保管 ;
政务大数据中心将数据目录登记上链,数据使用方通过腾讯云可信计算平台进行数据权限申请 ;
政务大数据中心对数据使用方进行数据用途和数据用量授权,授权信息上链 ;
数据使用方通过腾讯云可信计算平台发起数据请求,平台通过可信计算环境获取数据,并执行运算模型,将计算结果加密上链 ;
政务大数据中心可实时对数据使用和模型运行情况进行审计 ;
第二种是中小微企业融资风险评估平台,跟第一种类似,只不过这种是从某一个点单独去拿这些数据,再专门给到金融机构。
第三种是医疗保险风险评估。医疗保险对外部数据的诉求是非常强烈的,比如寿险,除了体检报告中个人的一些健康数据,其他的个人财务状况、就医记录对评估个人的健康状况、财务状况是非常有用的。原来可能没办法拿到,或者医院考虑到病人隐私也不会对外提供这些数据。这时候如果有一个平台能解决医院等这些企业的顾虑,保证数据的安全性与隐私性,这一部分数据将来就有可能被拿出来分享使用。
主要涉及:
风险评估服务:提供风控评估算法模型
医院、银行等:提供评估所需数据处理为中间数据后加密上链(医院提供投保人、被保人的健康状况数据;银行提供投保人、被保人的财务状况数据)
保险公司风控部门:将基于健康、财务状况的风 险评估算法模型部署到 TEE
保险公司承保时,通过智能合约取用链上投保人 、受保人中间加密数据,输入部署了风险评估算法的 TEE 环境进行风险评估。
评估结果是否加密、是否上链可以按需要决定。保险公司以此评估结果为参考自动决定是否承保。
整个过程不会泄露医院、银行的数据,也可以为风险评估服务的算法模型提供一定的隐私保护。
除了企业与企业之间共享数据,我们个人的数据在给企业共享时,应该如何保护数据的安全和隐私?
这里用到一个技术叫“分布式数字身份”,它不是哪家公司创造的,而是来自于一个标准化组织。
2019 年 W3C VC 工作组发布了可验证凭证数据模型 (Verifiable Credentials Data Model 1.0) 正式推荐标准;2020 年,W3C DID 工作组发布了一个工作组草案,DID Identifiers v1.0。如果感兴趣,可以专门深入去研究。我们从这些标准里面定义的一些东西,抽象出来一个系统就叫“分布式数字身份”。
分布式数字身份结构里唯一的标识符是 DID,类似于我们的身份证号码。这种 DID 字符串能够保证有一个全球唯一的 ID。同时 DID 还会增加一个描述文档,这里面有一个很重要的东西是 publicKey,即公钥。当你给别人分享数据的时候,你用你的私钥去签名,但是别人可以拿到你公开的公钥去验证这个数据到底是不是你给他的。
(分布式数字身份的结构)
有了 DID 之后就会给个人签发一个实际的证明。举个例子,比如说交警部门签发的驾驶证,假设我注册了一个 DID,交警部门也会注册一个 DID,他们给我签发的驾驶证书,可以证明我曾经拿到了驾驶证。证书上包含了我的 DID、姓名,领取时间等信息,当交警部门对这个证书签名后,这个信息就发给我了,我存在我个人的手机上,将来如果别人想要验证我的驾照,我可以直接通过手机拿出来。
所以所谓分布式身份的结构,一个是 DID,一个是对 DID 的描述,还有一个是别人发给我的证明信息。这个证明信息就是我们未来要共享的东西。
这样一个底层的数据结构,我们把它包装成一个产品,它会变成什么样子?
从下图可以看到,产品的底层是一个区块链网络。之前提到的 DID,我们要 DID 的描述信息放到这个区块链网络里面,尤其是公钥,这样别人拿数据的时候,才能验证这些数据是你发的,所以我们需要一个可信的网络把这些东西存下来,这个网络目前看来区块链是最适合的。
当把我们的 DID、公钥放到链上后,将来我们需要申请别人给我们一个证明的时候,就会有发行人(签发凭证),我们是持有人(获取、保存、展示提交 DID 和凭证),然后还有验证人(验证 DID 和凭证),验证人会拿公钥这些信息去验证。
签发的这个凭证本身不在链上,打个比方就是给我签发的这个驾驶证本身,没有放到区块链上面,而是放在我们个人存储的系统里,这样就保证了我们的隐私安全。
(分布式身份产品形态)
分布式数字身份,还能实现另一个东西叫“选择性披露”。
举个例子,假设我有个身份证,上面包含了姓名、性别、年龄等信息,现在有很多地方说不能卖烟给未成年人,如果我想要买烟,对方需要验证我是否是成年人,他只要看我的年龄就好了,我不需要把身份证给他。因为如果给他看我整个身份证的话,对方不但看到了我的年龄,还会看到我的姓名、家庭住址等等,所以我只要给对方看我的年龄,证明我是成年人就可以了。
这个在分布式数字身份里实现的方式就是“选择性披露”。如何实现呢?
在签发证书时,把姓名、性别、年龄这三个字段,每个字段都计算一个哈希值,然后再把这三个哈希值合在一起计算出一个总的哈希值,我们对总的哈希值进行签名,签名后这些东西到了我的手机里面。
如果我想向另外一个人证明我是个成年人,年龄大于 18 岁的时候,我就从签发给我的证书抽出来一部分东西,即姓名的哈希值和性别的哈希值,这部分只提供哈希值,不提供原文。我提供的原文只有我的年龄,然后再提供总的哈希值和签名拿出来,这是我要做的。
验证方拿到数据后会看到,其他信息都是哈希值,只有年龄不是。然后他把年龄计算一个哈希值,再加上我们提供的姓名和性别的哈希值计算出一个总的哈希值,将这些再拿出来和我们提供给他的进行比较,对比相同的话就说明,我们提供给他的年龄就是别人给我签发证书时我上报的年龄。最后他再验证下签名,是不是公安部门给我们签发的,这个过程就实现了。
从这个过程我们可以看到,通过分布式数字身份可以做到这种选择性披露。我们拿到的是一个信息全面的证书,但是我在给别人验证的时候,只提供给他一小部分他需要知道东西。尽管我没有把整个证书提供给他,他也能验证这一小部分东西是真实有效的,这是一种选择性披露的方式。
最终,我们把这些实现机制做成了一个产品,叫 TDID。
TDID 的应用场景很多,包括政务服务、金融服务、工业制造、医疗健康、教育培训、数字孪生等。
我们具体看几个场景,第一个是政务一网通办场景。政府部门给我们发了很多证照,我们去其他部门办事需要拿这些证照给对方看,但目前这些证照更多还是纸质,验证也是看印章。
如果把这些都数字化,就可以通过分布式数字身份来实现。就是我们构建一条区块链,政府把签发给我的证书发到我的手机里,把签发的过程放到链上面,我再去其他部门办事,直接用手机把对方需要的信息提供出去,对方可以直接从链上去验证我提供给他的这些东西的真实性。这样不仅方便了双方,也提高了效率和速度。
第二种是医疗数据互联互通场景。我们个人的体检数据、病例数据可能在很多医院里面都有了,如果把这些数据分享出去,我们去另外一家医院就医,或者去保险公司买保险的时候,我们能不能把这些数据拿出来拿给我们自己,然后分享出去?
理论上是可以的,但实际在大部分情况下,这种互通更多还只是在医院内部体系,并没有做到跨医疗体系。比如说政府机构是不是可以拿?事业单位、保险公司是不是可以拿?这个目前是没有办法做到的。而且,如果没有经过用户授权就把这些数据给出去,也存在一定问题。
所以将来如果通过分布式数字身份的方式,把这些数据让医疗机构,签发给我们个人,那我们个人就可以根据自身的需求有选择地把数据分享给 B 端的政府机构或企业。
本次分享主要有三个方面,一是我们需要去做数据共享,不管是政策大环境,还是整个行业的发展状况,未来数据共享可能是很多企业所面临的的共同问题。但是数据共享的同时也要有一些约束和限制,要保证一定在合法、合规、合理的情况下去使用数据。
如何保证合法合规去使用这些数据,我们提到了两种场景,第一种是 B2B 场景下,我们可以通过区块链给网络传输加一个控制层去控制一些权限,来实现数据标准化、权限可控和过程透明,从而保证数据的安全性、数据的所属权,以及数据在更大范围的使用。
第二种是在 C2B 场景中,我们通过 TDID 的方式把很多个人非数字化的信息,数字化之后放到个人手机里面,即方便我们去对外提供,也方便别人去验证。
总结为以下三个要点:
数据共享能够更大程度发挥数据价值,是长期趋势,但必须保证数据安全、隐私和权属;
区块链结合隐私计算,可以在满足 1 要求的前提下,解决 B2B 数据共享的问题;
对于 C2B 数据共享,基于区块链的分布式数字身份提供了一种安全有效合规的方式。
梁永甫,腾讯云区块链资深架构师。拥有超过 15 年软件开发、架构设计及项目管理经验。2016 年开始专注区块链领域,在金融、保险、供应链金融领域主导和参与了多个区块链应用落地案例。ArchSummit 全球架构师峰会(深圳站)2021 明星讲师。
5 月 12-14 日,QCon 全球软件开发大会将落地北京国际会议中心,大会设置了下一代大数据系统架构、分布式数据库、云原生数据湖、业务架构、Rust、WASM、可观测、业务安全合规、产品设计、大前端新基建、组织管理等多个热点专题,与你一起探讨技术新趋势,点击阅读原文了解更多。现在购票即可享受 8 折限时优惠,购票立减 1760 元,扫码立即购票。