区块链技术下的云存储系统设计

区块链技术下的云存储系统设计

摘要:随着互联网的快速发展,人们对云存储的需求不断提升。传统的中心化云存储系统存在着数据可能被篡改、用户对数据控制权减弱等问题,而区块链云存储机制又存在着存储节点不够稳定、不可靠等问题。因此文章结合了中心化云存储与区块链云存储的优点,提出了基于区块链技术的轻量化分布式云存储系统LBCCS。该系统采用了中心化云存储系统与区块链操作记录账本系统独立运营的机制,在利用了中心化云存储保证了存储的可靠性和稳定性的同时,又利用区块链技术监督保证了云存储的不可篡改性。

关键词:区块链存储;分布式存储;云存储

1引言

在大数据、云计算快速发展浪潮下,互联网信息爆炸式增长,人们对云存储的需求不断增加,百度网盘、腾讯云等云存储产品也随之应运而生。传统的中心化的云存储方式相对于本地存储虽有异地存取方便、空间灵活等的优点,但也存在用户隐私容易泄露、用户数据容易被篡改、用户对数据控制权减弱等缺点。BCCS(BlockchainCloudStorage)即“区块链云存储”,可以解决传统中心化云存储存在的这些问题。BCCS是一种使用分布式数据库对信息进行识别、传播和记载的智能化对等网络技术。整个区块链就是一个巨型数据库,其具有将数据分散存储在每个节点的特点。在BCCS中,将用户上传到云盘的信息切成“碎片”后分散存储到分布式服务器集群上的众多节点中,取代单一节点的存储。去中心化的区块链云存储不但可以存储信息,而且由于区块链的特性,攻击者必须发动51%攻击才能对区块链系统进行有效攻击。所以,节点上的信息几乎是不可篡改的。然而,以普林斯顿大学研究的Filecoin项目来看,现有的区块链存储系统也存在如何长期对存储矿工进行激励、如何长期地存储其他用户文件、用户存储空间开销大、矿工突然退出导致的存储在旷工处的数据可能无法获取等问题。因此,结合中心化云存储和区块链云存储项目的优点,本文提出了基于区块链技术的轻量化分布式云存储系统,即LiteBlockchainCloudStorage,简称LBCCS。该系统采用了中心化云存储系统与区块链操作记录系统独立运营的机制,一方面利用了中心化云存储保证了存储的可靠性和稳定性,另一方面利用区块链技术监督保证了云存储的不可篡改性。

2 云存储服务的现状

2.1 传统中心化云存储。国内经典的传统云存储服务产品有百度网盘、腾讯云等。用户将数据直接上传到服务提供商的中心存储服务器中,这样服务提供商就可以很轻松地对用户的数据进行查看、复制、修改等,只要黑客攻破了中心服务器的防护系统,就可以随意窃取、修改、甚至删除用户的数据,用户数据有很大的安全隐患。并且,由于传统的云存储服务使用的是中心化数据库,服务器管理员有比较大的权限,可以修改、删除用户的存储记录,导致用户存取记录出错,降低了传统云存储服务的安全性。在《科研人员学术信息资源云存储服务应用安全障碍分析与对策》的调查中,有15%的受调查者有在网盘中存储的学术资源(非违规资源)被误删的经历,28%的受调查者有上传到网盘中的数据发生损坏并造成困扰的经历。用户希望获得的云存储服务应该是像本地存储一样,不被监控、安全、高速存取的数据存储服务。显然,传统的云存储服务无法做到。

2.2 区块链去中心化云存储。随着区块链技术的快速发展,对等网络技术也逐渐成熟,基于区块链的云存储项目也应运而生,现有的区块链云存储项目有Filecoin、Sia、Storj等,由于区块链的特性,这些区块链云存储项目的去中心化的特征,使区块链网络中的各个节点(包括存储节点)实现自治,用户存储数据的管理不再依赖管理员,相比于传统的中心化网盘存储,区块链云存储少了云存储服务商监管环节,自然就不存在用户数据被误判违规而被删除的情况,也不存在服务器被黑客攻击,导致数据被窃取的风险,安全性有了很大提升。以普林斯顿大学研究的Filecoin项目为例,用户存储上传文件时,发送存文件请求,矿工接单后,将用户上传的文件切片,存储到矿工的硬盘中,同时付费,交易产生的Filecoin交易信息、文件存储的哈希地址等信息会被记录到区块链账本中,当合约到期时,矿工会得到收益。用户需要下载文件时,先在区块链账本中查询文件信息,然后根据区块链账本返回的元数据在对等网络存储节点中下载文件。相对于传统的中心化云存储,这种区块链分布式云存储的引入提高了云存储的可扩展性和数据安全性。不过,这种存储方式也存在问题,不同于中心化存储服务器,矿工所用机器的质量参差不齐,容易出现硬盘损坏等硬件故障,导致用户数据丢失,并且由于矿工大多处于居家环境,网络质量也参差不齐,有大概率出现网络中断的现象,导致用户无法读取数据,此外,虽然Filecoin有矿工抵押代币的机制,但是矿机不一定有严格的管理,矿工可能会放弃抵押的代币停止挖矿,使用户数据丢失。在Filecoin项目中,由于用户数据放在多个矿工节点,如何保证用户存储的数据可获取是一个亟待解决的问题。

3系统设计

在分析传统云存储和区块链云存的优缺点的基础上,本文提出了基于区块链技术的轻量化分布式云存储系统,即LiteBlockchainCloudStorage,简称LBCCS。

3.1 系统框架。系统框架如图1,在数据存储端,LBCCS继承了中心云存储服务器的架构和运行机制,保证了运存储的可靠性和稳定性。而在数据的操作记录端,LBCCS引入了区块链技术,将云存储的操作记录保存在包含中心服务器、终端用户在内的区块链账本当中,保证了云服务器数据的不可篡改性。中心数据存储服务器中保存的是区块链全节点,可以查询到所有的用户操作记录。普通用户可以选择全节点或者轻节点存储策略,轻节点是经过高度修剪的,可以查询跟本节点有关的记录。如果普通用户选择全节点存储策略,那么在每次接收到其他用户文件的操作记录时,将会获得一定的云空间容量币奖励,即“矿工节点”。

3.2 系统流程。3.2.1 文件操作流程。用户需要操作文件时,向系统发送操作申请,系统验证用户的密码,通过验证后,用户对文件进行操作。操作记录包括新增、删除、修改、查找记录。操作完成后,用户生成了包含片区编号、操作前的校验值、操作后的校验值、用户信息等关键信息的操作记录并进行广播。矿工节点收集到用户的操作记录后,将若干条操作记录打包进入区块。打包完成后,“矿工”将完整的区块向网络传播,保证了网络中区块链的完整性与一致性。图2上传文件流程3.2.2 文件校验下载流程。文件校验下载流程如图3。用户需要下载文件时,向系统发送下载申请,系统验证用户的密码。通过验证后,系统在区块链中检索用户文件的存储地址,开始下载文件分片,用户下载分片完毕后,计算各分片的校验值。与此同时,用户向区块链账本发送请求,区块链账本返回用户所需下载文件各分片的校验值。返回的校验值与计算得到的校验值进行比较。若一致,说明数据完整,将分片合并成文件,下载成功。若不一致,则说明数据已被篡改,返回出错片区位置,丢弃数据。图3文件校验下载流程

4 系统实现

4.1 文件分片及SHA1码生成。为发挥分布式存储系统优势,方便将文件存入不同服务器,提高数据传输率,本系统将存储空间分为16MB/片的若干分片。并使用SHA1算法生成对应分片的校验数据和,成为操作记录的一部分存入区块链中。

4.2 文件操作记录格式。操作记录主要保存以下信息:分片编号:同一文件的分片编号,32字节;操作前校验值:记录操作前的SHA1码,40字节;操作后校验值:记录操作后的SHA1码,40字节;操作时间:记录操作时间,16字节;文件创建者:文件创建者ID,16字节;文件操作者:文件操作者ID,16字节。其操作记录格式如图4。

4.3 区块结构。区块结构如图5,区块由区块头和区块体组成,区块头包括前一区块的哈希值、时间戳、随机数、目标哈希值、区块体包含若干条操作记录及其哈希值,若操作记录为单数,则复制一份最后存入区块的记录,作为新的记录保存在区块中,以保证可以生成merkle树根。

5 小结

本文在对中心化云存储与区块链云存储的分许对比的基础上,结合两者的优势,提出了基于区块链技术的轻量化分布式云存储系统LBCCS。该系统采用了中心化云存储系统与区块链操作记录账本系统独立运营的机制,在利用了中心化云存储保证了存储的可靠性和稳定性的同时,又利用区块链技术监督保证了云存储的不可篡改性。在系统设计上及实现上,存在一定的先进性。但其也存在着只能发现数据被篡改,但无法恢复数据的问题,需要与云存储系统数据恢复机制相配合。

作者:赖力潜 刘学东 钟伟豪 单位:嘉应学院