APP下载

基于区块链技术的电子数据存证系统

2018-10-08孙国梓冒小乐陈鼎洁李华康

西安邮电大学学报 2018年4期
关键词:分片合约区块

孙国梓,冒小乐,陈鼎洁,雷 鹏,李华康

(南京邮电大学计算机学院、软件学院、网络空间安全学院,江苏南京210023)

在过去的几年中,区块链技术获得了巨大的发展,主要归功于加密货币比特币的成功。区块链(也称为分布式总账)本质上是由一组不相互完全信任的节点维护的共享数据库。但是随着应用场景不断发展,比特币已经在很多区块链场景下不适用。在这种情况下,一个多层的、基于密码学的开源技术协议的以太坊便应运而生。以太坊通过整体设计集成了不同的功能模块,是一个创建和去中心化应用的综合平台[1]。

电子数据存证是一种便于浏览,便于举证,便于鉴定,便于保存的系统结构。它首先要对数据按数据类型进行很好的存储保存,其次还要对数据的可信性,完整性要有很好的保障。电子数据的存证要方便对数据进行存储、共享、验证,并安全地提供有效的数据分享。区块链技术可以提供完善的安全加密技术和用户验证系统[2]。

目前,国内外关于区块链应用是研究热点问题。文献[3]研究了医疗数据共享系统中的访问控制管理问题,主要设计了一个基于区块链的数据共享方案,允许数据用户/所有者在身份验证后,从共享数据库访问电子病历。文献[4]在基于区块链的电子数据存证应用研究中,从电子数据存储应用场景出发,研究了如何将业务与区块链技术相结合,提出一种优化当前数据存储的方法,以此高效地为用户服务。文献[5]在基于区块链的云取证系统中,采用区块链的分布式数据库特点,首尾相连的链式结构技术,设计了一中去中心化、可验证、不可篡改的系统。

到目前为止,关于存证系统还有以下几个问题有待于解决。如系统过程中自动化程度不高;系统过程中电子数据存证风险较大;第三方机构法律处理流程繁琐;电子数据安全缺失等。

本文提出了一个安全的、可扩展的基于区块链的电子数据存证系统。采用数据与用户对应映射关系查找方式,来确保对电子数据池的高效访问控制。并设计了一个基于区块链的数据存证方案,允许数据用户/所有者在身份验证后,从电子数据库访问电子数据。数据存储主要进行分片冗余算法和分布式存储保证数据安全性,并且系统引入用户积分机制,保证系统负载均衡。验证和后续服务封闭在系统内部,写入区块并成为区块链的一部分。

1 存证系统架构

系统的设计采用“高内聚低耦合”的思想,整个系统主要功能有4层,从上至下依次是业务层、逻辑层、智能合约层和区块链层,如图1所示。

图1 系统功能架构图

(1)应用层:应用层主要包含图1中前端UI、展示层和业务层,前端UI为用户访问系统提供可视化的Web界面。应用层接收用户提交的请求,进行简单的预处理后,将请求发送给逻辑层进行核心计算;待计算完成后将数据信息从展示层接收信息,通过Web界面直观地反馈给用户。用户可以是需要保全数据的客户,也可以是需要下载数据公证的第三方机构。

(2)逻辑层:根据应用层所提供的六大界面,逻辑层分别给出了对应功能模块的实现方法。其中,基于TCP的Socket多线程并发模块是整个系统能够顺利运行起来的框架基础,系统利用该模块实现不同节点之间数据的可靠传输[6]。基于上述的基础框架,系统引入里所码的编码解码、节点选择模块用于文件的上传和下载功能模块的实现;引入用户节点性能测试模块来判定其性能优劣水平;引入Hash比对模块判定文件是否被恶意篡改;引入用户注册/登录、积分模块来完成对用户信息的管理工作。

(3)智能合约层:部署在以太坊平台的智能合约。智能合约层作为逻辑层和区块链层之间的桥梁,将逻辑层的计算结果(如电子数据及其分片的指纹信息、用户节点的积分信息等)锚定到区块链层的存储区内[7]。在编写智能合约的过程中,系统定义了若干的结构体(如 File、Record、User等),实现以自定义的数据形式存储电子数据的关键信息。该方案显著地提高了电子数据的查询效率,也增强了电子数据的可读性。

(4)区块链层:作为系统去中心化的数据库,存储逻辑层产生的数据信息。其中,网络层承担验证交易信息,产生新区块,维护区块链网络稳定运行的工作;数据层保存着整个系统所有上传的关键信息。

存证系统架构设计借助于区块链的全新思想,把电子数据分布式存储的记录放在区块链上。系统主要采用数据冗余分片技术结合Reed-solomon码[8],将电子数据分成n个信息片和m个冗余片,再进行数据片的分布式存储保证数据信息的安全性,对系统服务端主机存储容量、带宽、时延、丢包率进行采集,结合模糊层次分析法确定权重比和理想优基点,计算出系统存储主机的网络综合性能评分,保证系统信息存储的负载均衡[9]。利用智能合约去中心化的特点,即采用P2P网络技术实现系统的去中心化,使用哈希算法保证数据的完整性,使用共识算法保障计算节点间数据的一致性,并设计了一种去中心化且可验证的分布式存储系统[10]。基于该系统提供相应的智能合约,该智能合约能够在用户双方或多方,自动实现电子数据存证的事务处理和保存机制等。

2 存证系统设计

存证系统制定数据共享机制,用于基于区块链的数据共享,以确保数据的安全性和可溯源。存证系统的详细流程图如图2中,分为6个主要步骤。

图2 系统详细流程图

如图2所示,区块链存证系统主要由存证用户节点、存储用户节点和智能合约组成。其中节点A既可以是存储用户节点也可以是存证用户节点。系统进行一次存证流程如下。

(1)用户登录系统后,系统中区块链的合约member类获取用户信息,并通过用户节点获取到其他节点的性能信息,为后续数据分片存储性能主机的计算获取数值。

(2)用户上传需要存证的文件,将文件的关键信息存入到区块链合约file类中去,形成数据与用户的对应映射关系。

(3)系统进行冗余分片算法对上传的电子数据进行分片,并且根据节点的性能信息选取若干最优性能节点,用于存储每一个分片数据。

(4)系统根据性能选中的节点,将数据分片,对不同的节点进行数据分发,并将数据的关键信息返回给区块链智能合约,包括数据存储的IP地址、数据存储的绝对路径和数据分片的哈希值等,存储到合约的record对象中。

(5)当用户需要对电子数据进行下载或查询操作时,对系统提出授权请求,系统将用户信息与需要访问的数据建立对应的映射关系,用户便可以在区块中链接上相应的用户信息。

(6)用户获得权限后,从区块链合约中读取到电子数据的相关信息,系统根据存储信息找到电子数据存储的位置,下载电子数据分片并还原数据并比对文件哈希值,验证电子数据的完整性。

系统的主要流程为用户上传、保全、查看、下载、比对和授权电子数据文件,下面将分小节对以上流程进行介绍。

2.1 系统上传功能

在用户登陆系统中,当用户提出电子数据上传操作请求时,系统会根据电子数据分片数目计算本次上传所花费的积分数量c,然后调用合约积分功能,获取用户当前的积分数量t。系统进行积分数量判断验证,通过判断后,系统给用户提供上传功能,并且在区块链上更新用户对应的积分信息。若判断不通过,则提示用户积分不足。

2.2 系统数据保全功能

首先,系统对电子数据利用里所码进行数据冗余分片,获得n个数据片及m个冗余片。系统获取存储主机的性能参数,主要包括吞吐量、时延、带宽,并根据模糊层次分析法对3个参数进行计算获得网络性能评分[11]。同时,系统获取存储主机的硬盘容量和硬盘健康程度。系统根据网络性能评分和磁盘存储容量作为参数,利用理想优基点法,计算存储主机性能综合距离并排序,获取性能最优主机用户[12]。系统向选中的用户主机随机分发电子数据的分片,经过区块链的共识算法固定到区块链的存储区中,并将分片信息写入区块链中[10]。

2.3 系统数据查询功能

用户可以随时在本系统使用电子数据的查询功能来获取具有文件的存储信息。结合电子数据存证的需求,默认情况下电子数据仅上传者可见。用户需要查看其他用户的电子数据时,需要得到对应用户的授权。当用户提出查询请求时,系统与合约进行交互,首先对用户权限进行判断,判断文件是否属于用户节点。成功后,则读取数据文件对应的索引号以及分片存储位置的索引号,判断文件索引是否小于用户文件数,获取文件的绝对索引位。得出数据存储在区块链上的信息并通过信息(IP地址和存储绝对路径)找到电子数据。

2.4 系统数据下载功能

当用户向系统提交下载请求时,根据在区块链存储区定位到相应的数据信息并找到数据存储位置后,实现自动化文件的下载和文件解码重组工作。这与电子数据查询类似,用户能下载的数据文件必须是由自己上传的或者是他人授权的,以保证用户的隐私安全。

2.5 系统数据比对功能

系统在得到数据返回的分片之后,对分片分别调用SHA-1、SHA-256和MD5哈希算法,求取到每个分片的哈希值之后,与之前存储在智能合约中的哈希值进行比对[13]。如果哈希值相等,说明文件未遭到篡改。系统在运行过程中,如果存在部分数据分片丢失,则只需要这部分丢失的数据分片数量小于系统冗余分片总数目范围内,则仍然能够还原系统源文件。

2.6 系统数据授权功能

考虑到系统的需求,需要对用户的个人隐私进行保护,所以,系统默认用户的电子数据是用户的个人信息文件。用户需要通过授权给他人,其他用户才有权查看被授权的电子数据。授权时,主要将用户的公钥输入即用户账户和待授权文件序号,系统将授权文件信息写入区块链,则授权结束。

本部分主要描述了基于区块链智能合约电子存证系统的实现,详细描述了数据的上传、保全、查看、下载、比对和授权及系统的交互。其中,智能合约部分是支撑系统的底层数据存储方式,文件上传、分片、存储、下载和比对等则构成了系统的主要功能点。

3 系统功能测试与评估

为验证系统的性能,采用黑盒测试的方法[14]对基于区块链的电子数据存证系统进行功能测试,分析该系统功能的可用性、界面的合理性、数据交互的正确性等。为了确定该系统可使用性和可扩展性,下面将验证系统在局域网下的数据分布式存证。测试环境为4台linux服务器,部署于同一个局域网内,同时运行服务端程序并与客户端进行数据交互。

功能测试与评估时,共选取了30组电子数据文件,每个文件大小从20kb到4000kb不等,将这些文件依次进行上传存证操作,依次对这些电子数据文件进行查看、下载、比对等操作,并分别记录电子数据文件在系统中是所耗费的时长。将这些时长获取下来,进行比对,获得更多的评估可以通过不同的文件类型,操作和文件共享状态来进行。对于起源获取,专注于为每个起源数据请求区块链存证的效率。在实验中,每次操作1条记录,大小为1045.9KB,平均时间4s到7s左右。对于每次操作区块链数据,均记录不同文件操作的花费时间。最后计算获得结果如表1。

表1 实验结果评估表

表1可以看出,本文所设计系统对数据检索的速率较快,数据验证比对结果正确率达到百分百,系统采用数据信息与数据结构体信息映射关系保存,加快了数据的查询效率。数据进行分片并分布式存储,保证了数据的安全性。系统测试结果可以完整对数据进行存证,并且存证效率较快。

4 结语

本文研究主要根据区块链的不可篡改性,把电子数据存储记录在区块链上,实现一个去中心化的存证系统。借助区块链这一新兴技术,把电子数据的关键“数字指纹”锚定在区块链的存储区上,并结合智能合约、分布式存储、容错编码、多属性决策等技术,设计并实现了基于区块链的电子数据存证系统。测试结果表明,系统利用区块链的去中心化和不可篡改性的核心特点,确保电子数据的真实性、完整性和唯一性。同时,系统充分考虑到分布式存储系统的容错需求,使用里所码对电子数据进行了冗余保护,降低因单台服务器宕机或者传输通道出错产生的问题。

目前,利用本文的方法开发了一个简易的基于区块链的电子数据存证系统。系统主机之间的交互主要是在局域网内进行,未来计划进一步对系统进行优化,实现广域网内的电子数据存证。另外,本文区块链所使用的共识算法是POW工作量证明,此算法时间周期较长,对系统资源存在着浪费,当前的共识机制算法有待于进一步优化。

猜你喜欢

分片合约区块
上下分片與詞的時空佈局
降低跨分片交易回滚概率的多轮验证方案
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
基于模糊二分查找的帧分片算法设计与实现
区块链将给媒体业带来什么
区块链+媒体业的N种可能
通用导弹雷达罩曲面分片展开系统的开发