丁 滟,王 闯,冯了了,王 锋,常俊胜
(1.国防科技大学计算机学院,湖南 长沙 410073;2.湖南大学信息科学与工程学院,湖南 长沙 410082)
数据资源是大数据产业发展的关键基础,作为大数据时代重要的生产要素和战略资产,其价值体现以数据开放和流通为前提[1]。根据统计报告,单个机构通常仅存储15%与其业务相关的数据,所需的其他数据都来自其它机构。因此,当前基于网络环境的联盟式数据流通系统不断涌现,加入机构的用户向系统提供数据信息,同时也可以获取其他机构提供的信息。通过数据流通将数据从数据生产端转移至数据应用端,从而打破“数据孤岛”,深度挖掘数据价值[2,3]。然而,当所流转的信息具有较强的敏感性时(例如医疗、军工数据等),在优化资源配置、促进数据资源融合的同时,必须要保护数据资源不被违规使用,并能够及时追踪和发现违规侵权行为。因此,需要对流通的数据建立完善的追溯审计体制,实现数据流通的可追溯性。
区块链是在当前数字化社会中处理信任问题的有效解决方案,成为近年的研究热点。区块链基于点对点P2P(Point-to-Point)网络与密码学的支持,综合运用分布式共识、智能合约及通证激励等手段,实现了基于去中心化的信用保障,成功解决了去权威中心或多权威中心条件下的分布式系统信任问题,并具有防伪造、防篡改和可追溯等安全特点。因此,基于区块链技术设计实现对联盟数据流通系统的数据流通监管,利用区块链记录数据高度冗余、难于篡改的特性,来完成对安全敏感行为的记录与控制,为联盟数据流通系统提供可审计性保障。
在利用区块链技术对联盟数据流通完成可信增强的过程中,需要重点考虑以下几个方面的问题:
首先,数据流通系统中的数据存储位置问题。可以直接将数据保存在区块链上,也可以采用分布式数据存储方式。保存在区块链上,可以有效地利用区块链的账本组织方式保护数据的完整性,但是可以支持的数据存储空间有限,并且只能支持数据的增量式修改,缺乏灵活性。因此,采用分布式数据存储与区块链审计相结合的方式更符合联盟数据流通系统的要求。
其次,联盟数据流通系统的用户身份刻画问题。在面向联盟的系统中,联盟由不同的组织组成,每个组织有自己的用户。因此,在联盟内必须明确用户的组成及数据的归属,并且在区块链、数据库以及系统终端上做到统一的身份管理,为数据访问行为的正确审计提供基础支撑。
再次,联盟数据流通系统的统一接入管理问题。联盟数据流通系统由用户身份管理、数据存储和区块链监管等多个模块构成,系统结构复杂,需要有规范的便于追责的统一化接入管理来提供准确的可靠的数据访问与上链审计。
针对以上问题,本文提出了一种基于区块链技术的复杂环境中的联盟数据可信流通系统,在组织内部采用分布式文件系统完成数据存储与访问,在此基础上利用区块链的去信任、不可篡改的特性对数据流通内容与行为进行监管,研究基于区块链监管的数据流通体系。本文的主要工作包括:(1)提出了基于区块链监管的联盟数据可信流通系统模型,设计了系统架构和层次式的用户管理模式。(2)面向复杂环境下的数据流通问题,提出了基于可信代理的优化访问分系统结构,定义可信代理统一数据访问接口,实现联盟数据可信流通系统的统一化接入。(3)提出了联盟数据可信流通系统的数据流通协议,设计数据上传流程与数据下载流程。(4)基于Hyperledger Fabric联盟链实现了系统原型并进行了分析,验证了数据流通及用户并发请求等的规模可扩展性,并为以后进一步的优化工作提出了方向。
大数据产业的蓬勃发展对数据流通提出了日益增长的需求。目前华为云、阿里云等云服务公司都已提供了数据可信流通解决方案,UCloud公司设计了基于数据沙箱的数据流通安全屋服务,DataHub针对使用平台即服务PaaS(Platform as Service)的用户提供了数据流通支持[4]。但是,这些服务基本将数据流通作为云服务的一部分来提供,与公有云服务逻辑深度耦合,难以满足联盟用户内部的数据流通需求。
自2008年Nakamoto[5]提出比特币的设计构想以来,区块链逐渐从加密数字货币演变为一种提供可信区块链即服务BaaS(Blockchain as a Service)的平台,为弱中心/多中心分布式环境提供以账本共识为基础的信任基点。目前,区块链技术被广泛应用于解决医疗、金融、物联网和安全等特定敏感领域的数据安全存储与共享问题。针对电子病历EMR(Electronic Medical Record)在数据流通共享中存在的问题,文献[6]将区块链和离链存储相结合,构建了一个保护用户隐私的个人数据管理平台;文献[7]则利用区块链技术提出了一种创新的EMR信息处理系统,为病历创建了一个可访问的历史记录;文献[8]针对非可信环境的医疗数据共享问题,通过区块链实现了共享数据来源确定与访问审计;文献[9]面向医疗记录的安全共享,提出了基于双区块链的存储与共享方案;文献[10]基于以太坊和深度强化学习技术,在实现数据高效收集的同时,保证了数据的可靠共享;文献[11]面向物联网环境,基于区块链和向量机技术实现了支持隐私保护的数据训练方案;文献[12]提出了基于区块链的告警日志安全存储方法,提高了告警日志的存储安全性与检索速度。
在通用数据的共享存储方面,针对有数据集中存储方的情况,文献[13]提出了去中心化共享存储平台Sia,将存储提供方与用户的存储合约保存在区块链上,从而对双方行为进行约束;文献[14]提出了3层架构的 TBchain用于保存云存储中的对象元数据,并验证云存储的数据是否发生了修改,实现了可信云存储;文献[15]提出了基于智能合约的多云平台上的可靠协作模型,用于解决多云数据共享情况下的数据安全问题。
另一方面,利用区块链增强数据分散存储的安全性也是研究热点。其中,基于公有链(例如以太坊)开发的区块链共享存储系统MetaDisk[16]和 Storj[17],将存储提供方提供的空闲空间组织起来,数据上传后将分散保存在各地的存储提供方处。这类技术的另一个代表是星际文件系统IPFS(Inter Planetary File System)[18],该系统提供P2P的分布式文件存储,定义文件的分布存储、索引和传输协议,并对资源提供者给予Filecoin代币[19]的激励。以IPFS为基础,文献[20]将IPFS与以太坊公有链相结合,并通过基于属性的加密技术提高存储安全性。在医疗领域,文献[21]研究基于IPFS的医疗电子数据共享,并对患者与服务方之间的数据共享提供基于智能合约的访问控制;文献[22]则针对医疗数据设计基于属性的加密方案,实现基于IPFS的安全存储和高效共享。
尽管去中心化的共享存储系统可以有效利用闲置资源,降低数据存储成本,但是基于公有链的数据安全存储与用户隐私保护都存在巨大的挑战。并且,区块链本身的存储空间有限,无法承担过大的数据存储任务,全副本的数据管理方式也将带来极大的资源浪费。因此,本文在针对联盟间的数据流通研究中,在采用分布式文件系统实现数据存储与访问的基础上,利用区块链的去信任和不可篡改的特性对数据流通内容与行为进行监管,研究基于区块链监管的数据流通体系。
基于区块链技术构造联盟数据可信流通系统,可以利用区块链的去信任和不可篡改的特性对数据流通内容与行为进行监管。系统结构如图1所示。
用户身份管理模块负责验证系统中用户的身份,并向通过验证的用户颁发证书和密钥。每个组织的授权中心CA(Certificate Authority)根据用户在组织中的角色对该用户进行授权,并为组织拥有的数据设置访问控制规则,以限制具有不同访问权限的用户对指定数据的访问。每个组织的用户身份证明与访问授权规则都将上传到监管区块链上,数据访问发生时将从监管区块链上获取相关信息,实现对不同组织的用户身份认证。
数据访问模块以用户终端的形式,为用户提供访问数据流通系统的功能接口。用户可以通过终端上传、浏览或下载数据,上传的数据保存在各组织内部的分布式数据库中。用户对数据的访问行为也将上传到区块链中接受监管。
监管区块链模块则是将监管区块链与分布式文件系统进行融合,通过区块的形式将系统中的用户信息、数据信息及用户对数据的访问过程等保存在区块链上,形成不可篡改的审计记录。
在面向联盟的数据可信流通系统中,用户主要分为以下3类:
(1)联盟管理员用户。
联盟管理员是整个数据可信流通系统的管理员。该管理员只有1个,在本系统中,管理员必须是完全可信可靠的。联盟管理员负责对各参与的组织管理员进行身份认证,生成证书和私钥。在此基础上,按照各组织之间的数据共享规则,生成访问控制规则。组织管理员证书和数据共享访问控制规则都保存在监管区块链上。
(2)组织管理员用户。
组织管理员是每个组织内部的管理员用户,负责对本组织的用户进行身份认证,并为每个用户生成证书和私钥。
(3)普通用户。
普通用户分别属于自己所属的组织,通过用户终端访问数据流通系统,根据联盟之间的数据共享规则,上传或下载数据。
如图1所示,在系统运行过程中,所有数据通过分布式存储系统完成流通。首先各组织的管理员通过组织内部的CA对系统中的用户进行管理与授权。用户通过数据访问终端将自己的数据上传至本组织的分布式存储系统中进行保存。系统中其他对该数据具有访问权限的用户则可以通过数据访问终端发起请求,从该组织的分布式存储系统中下载数据。所有用户对数据的上传、下载等访问行为都会被记录在监管区块链中。一旦记录上链,便通过区块链不可篡改的特性来保证记录的完整性。
由于联盟数据可信流通系统为分布式文件系统、监管区块链、访问终端等多个模块的分布式协同工作提供服务,同时联盟数据可信流通系统的数据使用者和数据提供者数量庞大、组织松散,需要有规范的、便于追责的用户访问行为管理者来提供准确、可靠的上链数据。因此,本文在系统中引入了可信代理,一方面接入本组织内部的文件存储系统,提供文件上传和下载服务,并验证用户访问权限;另一方面接入监管区块链系统,提供可靠的关键文件资产数据及用户访问行为数据。通过可信代理提供的统一服务接口,可以防止用户访问终端直接接入系统时可能导致的用户绕过应用平台直接获取文件,避免监管和激励的失效问题。为了避免可信代理绕过访问控制规则为用户提供文件下载服务的漏洞,可以通过链下监管机制对代理的可信性进行监管,避免链下的作弊行为。
可信代理分系统的结构如图2所示。
在分系统中,文件访问可信代理是一个后台Web服务。代理最主要的功能是与组织内部的文件服务集群通信,为客户端提供文件上传和下载服务。另外,它还要与区块链通信,定期同步文件信息、权限信息及用户证书。客户端可以直接从可信代理本地获取文件列表,而不用每次都到区块链上查询。
为了控制对监管区块链的访问,系统为每一个组织生成一个虚拟的可信代理用户“Agent”。组织管理员可以在集中管控端创建Agent用户,生成证书和私钥,然后再把证书和私钥保存到可信代理处,这样可信代理才能访问区块链。
客户端访问可信代理提供的API时,首先要进行签名验证。签名验证不通过就不能进行相关的操作。当用户下载文件时,除了进行签名验证,还要访问监管区块链进一步验证用户的访问权限。
在提供系统平台统一接口的同时,可信代理还可以起到缓存数据的作用。当用户登录客户端时,所看到的文件列表以及文件的属主信息、访问权限都是从可信代理本地获取,但是当用户真正要下载文件或者购买文件的所有权时还是需要到区块链上检验当前用户是否有足够的权限进行相关的操作。这样既提高了访问性能,又保证了数据流通的安全性。
如图2所示,可信代理将从监管区块链上定期提取最近修改的文件信息,并根据该信息指导从各组织的文件服务集群上获取相应的索引信息,生成目录树,并保存在本地的目录服务器上。具体数据同步算法如算法1所示。
算法1DataSync
矿浆从设备上部入料口给入,水介质则按预定的压力和流速由泵打入设备底部的分配器,通过紊流板均匀分布到分选机底部,形成上升的脉动水流。入料中的颗粒在分选机中做干扰沉降运动,沉降末速与上升水流流速相同的颗粒在分选机柱体中间悬浮形成干扰层,也称沸腾床层。当达到稳定状态时,密度低于干扰床层平均密度的颗粒将向上运动,进入溢流;而高于干扰床层平均密度的颗粒将穿透床层进入沉物流,并通过底部的排料口排出。干扰床分选机工作原理见图3。
Input: null。
Output: null。
Whiletruedo
1ModifiedList←get latest file-modify entries from the blockchain;
2forentry_finModifiedListdo
3ifentry_fis stored on the remote file server
4then
5dir_f←get the file directory information ofentry_ffrom remote agent;
6else
7dir_f←get the file directory information ofentry_ffrom local file server;
8 build and save the directory tree in the local directory server;
9 update the file ofentry_findir_lon local directory server;
10interval←read time interval from configuration file;
11 sleep forintervalseconds
当用户登录数据流通系统进行访问时,可信代理将根据本地目录服务器的缓存结果,并结合用户的访问权限,为用户提供可访问的数据视图。
可信代理与监管区块链的交互主要包括:根据用户名获取用户证书,根据文件ID获取文件信息,根据时间戳同步文件列表,根据时间戳同步访问权限规则等。
(1)根据用户名获取用户证书。
与常规的使用用户名和密码登录方式不同,在可信代理分系统中用户通过证书登录客户端。客户端访问可信代理的API时使用证书进行身份验证。可信代理默认是不保存用户证书的,需要到监管区块链上获取用户的证书信息。
(2)根据文件ID获取文件信息。
如果可信代理需要获取某个已知文件ID的文件信息,需要调用监管区块链提供的数据文件信息查询接口,监管区块链将相应的数据监管信息发送到可信代理。
(3)根据时间戳同步文件列表。
为了保证本地缓存的数据元信息与监管区块链上的文件信息列表同步一致,可信代理会定时以时间戳为参数,从监管区块链上获取文件信息列表,并将相应的信息解析后,缓存到本地,以备用户访问。
(4)根据时间戳同步访问权限规则。
可信代理为了保证本地缓存的访问权限规则与监管区块链端同步,会定时从监管区块链获取权限规则,并将相应的信息解析后,缓存到本地。当用户发出数据访问请求时,可信代理将首先判断该行为是否满足访问权限规则,被允许时才会继续操作。
数据可信流通系统的数据访问监管信息保存在监管区块链上,所有的数据流通行为通过可信代理发出请求,围绕监管区块链进行,最终的数据保存在分布式数据库中。本节介绍数据流通的系统协作流程。
在数据可信流通系统中,普通用户可以通过客户端上传数据,数据的成功上传者拥有对数据的所有权。上传数据时,系统首先对数据使用SM3国密算法进行校验。如果数据已经被他人上传过,则上传失败。数据上传时,客户端要先访问代理,由代理将数据上传到本组织内部的分布式数据库中,上传成功之后,将文件摘要保存到监管区块链上。
如图3所示,数据上传过程中系统各模块的具体处理流程如下所示:
(1)用户在客户端调用UploadFile()函数发起“数据上传”请求,请求数据包含文档数据、用户ID和数字签名,即UploadFile(FileData,UserID,Sig)。其中数字签名Sig由客户端以自己的私钥Skuser为参数调用国密算法SM2生成,即Sig=SM2(SM3(FileData),Skuser)。
(2)可信代理收到客户端请求后,调用VerifyUsrSig()函数在链上查询该用户ID对应的证书,从证书中取出该客户端的公钥Pkuser,然后调用国密算法SM2验证客户端的数字签名Sig。
(3)可信代理通过Digest()函数调用SM3算法计算所传文档的摘要,并调用监管区块链上智能合约的数据摘要查询功能SearchDig。
(4)监管区块链的智能合约查询链上保存了所有数据摘要,如果摘要已经存在,则返回“数据已存在”的错误信息,数据上传终止。
(5)可信代理调用SaveFile()函数将数据存储至本组织内部的分布式文件系统中。
(6)存储成功后,可信代理向监管区块链发起交易,调用智能合约的FileAudit()函数上传数据的摘要及拥有者等元信息并奖励拥有者。
(7)监管区块链的智能合约将数据摘要和拥有者信息写入链上账本。
用户可以下载自己有权限下载的数据,具体的访问权限由联盟根据组织之间的数据共享规则来制定。数据下载也要通过可信代理来完成。可信代理先检验用户是否对数据拥有下载权,如果有才能执行下载。所有数据访问必须通过可信代理来完成,这样就避免了用户绕过访问控制直接下载文件。
如图4所示,数据下载流程如下所示:
(1)用户在客户端调用DownloadFile()函数发起“数据下载”请求,请求数据包含文档数据、用户ID和数字签名,即DownloadFile(FileData,UserID,Sig),生成数字签名的方法与5.1节中的(2)一致。
(2)可信代理收到客户端请求后,调用VerifyUsrSig()函数验证请求数据的数字签名,验证数字签名的方法与5.1节中的(2)一致,若验证失败返回“Fail”消息。
(3)可信代理以用户ID和文档摘要为参数,调用智能合约AccessRight()函数查询用户是否有下载权限,并返回判断结果。
(4)代理收到智能合约的权限判断结果后,如果发现用户没有权限,则向客户端返回“Fail”消息。
(5)如果用户有访问权限,可信代理接着调用IsLocalFile()函数检查将要下载的数据是否保存在本地文件服务器中,如果的确保存在本地,则直接从本地文件服务器中获取文档数据;否则以代理身份构建数据下载请求,并发送给其他可信代理请求下载数据。
(6)可信代理将获取的文档返回给客户端。
超级账本Hyperledger Fabric是一个模块化且可扩展的开源系统,用于部署和操作授权的区块链,其中的数据只允许系统内不同的机构进行读写和发送交易,具有交易速度快、部分去中心化、可控性较强和交易成本低等特点。本文基于Hyperledger Fabric联盟链构建数据可信流通原型系统,并对其进行性能分析。
Minio是在Apache License v2.0协议下发布的对象存储服务器,与Amazon S3云存储服务兼容,适合存储非结构化数据,如照片、视频、日志文件、备份和容器/虚拟机映像。在本文中,可信代理端使用Minio进行文档数据统一管理,主要包括文件上传、文件下载、文件查看和文件更新功能。
实验所采用的系统结构部署如图5所示。
为了体现不同组织以及组织与监管区块链之间的远程访问,分别部署了2台云主机。在云主机1上部署了组织1的客户端、可信代理与文件服务集群等,并且还部署了一个Peer节点(P1)加入监管区块链;在云主机2上部署了组织2的可信代理与文件服务集群等,以及2个Peer节点(P2和P3)加入监管区块链。此外,监管区块链还包括2个Order节点(O1和O2),均部署在云主机2上。云主机的硬件参数配置如表1所示。
Table 1 Hardware parameters of experimental environment
为了测试原型系统对不同大小文件的上传和下载性能,本文构造了若干组从1 KB到32 MB大小不等的文件,然后在单用户模式下进行了测试分析,结果如图6所示。
由图6可知,随着文件大小的快速增大,原型系统的文件下载延迟和上传延迟缓慢上升,这表明文件大小并不是影响原型系统文件上传和下载性能的关键因素。此外,由于网络延迟的影响,相比本地文件下载,远程文件下载延迟略微有所增加。不过相比文件下载延迟,文件上传延迟随着文件大小的增大呈现出明显上升趋势。由5.1节和5.2节可知,文件数据上传流程大致分为:计算文档数据摘要并进行签名校验,链上查询数据摘要,存储文件数据,文件信息上链;本地文件数据下载流程大致分为:对下载请求进行签名校验,链上查询用户下载权限,下载文件数据。相比本地文件下载,文件数据上传需要额外计算文档数据的摘要信息,并对摘要进行签名校验,因此文件上传延迟与文件大小呈现正相关关系。
为了探究影响原型系统文件上传和文件下载性能的关键因素,本文将文件上传和文件下载流程进行了分解,分别测试各部分在文件下载和文件上传延迟中所占的比重。由于在远程文件下载流程中系统实际部署的网络环境将对文件下载性能引入不确定的影响,为了排除网络因素对性能分析的影响,本文主要针对本地文件下载和文件上传进行测试分析,测试结果如表2和表3所示。
Table 2 File upload latency breakdown
Table 3 Local file download latency breakdown
由表2和表3可知,存储文件数据和下载文件数据的延迟比重仅占文件上传延迟和本地文件下载延迟中的很小一部分,在文件上传中,文件信息上链延迟比重达到了92.24%,而在本地文件下载中,链上查询下载权限延迟比重则达到了94.01%。这表明,区块链的交易吞吐率严重制约了原型系统的文件上传和文件下载性能,为今后的性能优化提供了方向。
为了测试原型系统的并发处理能力,本文将文件大小固定为1 KB,测试当存在多个用户同时上传和下载文件时,原型系统平均处理延迟,测试结果如图7所示。
由图7可知,当并发用户数量较小时,远程下载延迟与本地下载延迟基本相同,当并发用户数量较大时,受限于网络带宽的影响,远程下载延迟明显增加。此外,根据平均延迟曲线走势来判断,原型系统的平均响应延迟与并发用户的数量之间的关系并不是简单的线性关系。例如,由图6可知,单个用户下载大小为1 KB的文件,平均响应延迟为2 509.46 ms,当同时存在16个用户从本地下载文件时,图7表明此时系统的平均本地下载延迟为4 603.69 ms,平均下载延迟并不是简单地同比增加15倍,而是仅增加了83.4%。这得益于Hyperledger Fabric联盟链采用了“执行-排序-验证”共识机制,不同于比特币等公有链采用的“排序-执行”共识机制,“执行-排序-验证”共识机制保证了区块链网络能够并行处理用户交易,极大提升了系统的交易吞吐率。
以上实验结果表明,区块链网络的交易吞吐率是制约原型系统文件上传和下载性能的瓶颈,对区块链网络所使用的共识算法进行优化能极大提升原型系统的性能;随着并发用户数量的增加,原型系统的平均响应延迟缓慢增加,具有一定的并发处理能力,改善硬件配置能进一步释放原型系统的并发处理性能。
针对复杂环境中数据流通系统中的数据存储位置、用户身份刻画和系统的统一接入管理等问题,本文提出了一种基于区块链技术的联盟数据可信流通系统,以分布式数据库作为底层数据存储系统,通过区块链审计机制来记录文件数据、用户身份及用户行为信息,并通过可信代理实现联盟数据可信流通系统的统一化接入,避免非法用户绕过区块链的监督对数据进行访问。下一步将进一步研究如何实现轻量级共识算法,并将其应用到联盟数据可信流通系统中,从而进一步提升联盟数据可信流通系统的文件吞吐率和并发处理能力。