基于秘密分割的区块链安全数据共享模型

2023-12-29 12:23王瑞民吴佳璇张建辉
关键词:分片全网门限

王瑞民,吴佳璇,张建辉

(1. 郑州大学 计算机与人工智能学院,郑州 450001;2. 郑州大学 网络空间安全学院,郑州 450002)

0 引 言

如何保障数据的秘密性和完整性等安全问题是数据共享面临的瓶颈问题之一。传统数据共享模型要求数据拥有者将共享数据全部存储于中介机构的数据库[1],如Sharemind[2]。数据需求者只能通过中介机构使用数据。中介机构如果复制、转卖、留存共享数据[3],可能导致数据泄露。另外,一旦发生单点故障,还可能造成数据不可用的严重后果。

区块链是由多方共同维护的分布式记账技术,利用加密链式区块结构验证和存储数据,自动化脚本代码(智能合约)编程和操作数据[4-5]。它不依赖于第三方机构,能够实现无信任关系节点之间的可信通信,其去中心化和防篡改特性有力提升了数据共享的安全性。DataBrokerDAO借助区块链搭建了数据共享平台,通过专用网关直接联系数据所有者和数据需求者,推动了数据的安全流通[6]。

Sun等[7]提出了基于区块链的共享服务概念模型,但仅限于区块链和共享服务结合的概念和架构的理论探讨;Shafagh等[8]提出的数据共享方案,通过区块链管理云端的敏感数据;薛腾飞等[9]设计了基于区块链的数据分享模型,对不同机构内数据信息进行整合,将数据索引存储在区块链上,以推动机构间的数据流通,便于各方人员对数据的安全访问。由于传统区块的体积上限设定为1 MByte,且全网节点需同步相同区块链数据,存在大量的数据冗余,增大了各节点的存储压力。不少方案选择数据存储到链下第三方存储系统(如云[10],星际文件系统(interPlanetary file system,IPFS)[11]和分布式哈希表(distributed Hash table,DHT)[12]),以缓解链上节点的存储压力,提高区块链的可扩展性,但云存储方案增加了对中心化机构的依赖性,违背了区块链“去中心化”的初衷。一旦云服务器受到攻击,将严重影响数据真实性。DHT与IPFS方案依靠于分布式存储系统,系统维护比较困难,存储节点易出现恶意行为[13]。在链上数据的存储与安全问题上,其中一种方案结合纠删码技术对共享数据进行分块后再用矩阵进行线性变换,分片存储变换后的数据,可降低链上数据的存储量,且一定的数据冗余能保障数据可用性[14],但是分片后仍存在部分存储节点存在获取共享数据的风险;另一种方案则将区块链和代理重加密技术结合,通过代理服务器对数据拥有者共享的数据重加密,保障了数据流通过程的安全性[15],但是代理服务器的选取是一个问题,且单次代理重加密算法存在的时间开销,在数据需要频繁共享时显得力不从心[16]。在数据负载与数据存储安全2个问题上,不同方案各有取舍,难以兼备安全性和数据低负载。

针对区块链上数据共享模型的数据安全和数据负载问题,提出了一种基于秘密分割的链上安全数据共享模型(secret sharing data sharing model,SSDSM)。在保障数据安全存储的前提下,减少时间开销的同时,可有效降低单个节点的数据冗余量。

SSDSM整体工作过程分为2部分:数据上传共享部分和数据读取恢复部分。数据上传共享部分利用秘密分割算法,对共享数据进行分割,并将分片数据分发到不同节点组内同步上链;数据读取恢复部分,需求方向多个节点组请求目标分片数据,在获取到满足门限数量的不同分片数据时,利用秘密分割算法进行数据恢复。

1 数据上传共享

1979年,Shamir[17]和Blakley[18]分别提出了秘密分割的概念与应用场景。一个秘密s分成n份子秘密,通过安全信道分发给n个参与者,每一个参与者仅知道自己的子秘密而不知道其他参与者的子秘密。恢复s须要t个或者t个以上的参与者联合,而少于t个参与者无法恢复[19],即满足确定阈值数量的子秘密即可重构秘密,此方案为(t,n)门限秘密分割方案[20]。该方案广泛应用于安全多方计算和访问控制等领域。

Asmuth-Bloom法[21]是一种基于中国剩余定理(Chinese remainder theorem, CRT)提出的秘密分割方案。对于一个秘密s,设

d1

(1)

(di,dj)=1,i≠j

(2)

d1×d2×…×dt>s>dn-t+2×dn-t+3×…×dn

(3)

(1)—(3)式中,t为秘密分割方案的门限;n为子秘密数量;di为互不相等的整数。

对秘密s进行计算

(4)

(4)式中:ki为求模的余数;(ki,di)为生成的子秘密。

设上传的待分割数据编码为十进制的正数D。首先随机生成满足长度要求的大数,进行素性检验,通过则留下,否则重复此步骤,直到生成满足(3)式的n个两两互素的大数,并形成列表Prime_list。然后根据(4)式计算D的余数结果并组成列表remainder_list,最后返回分片数据列表。具体算法过程如算法1所示。

算法1数据分割算法

输入:待分割数据D,(threshold,amount)

输出:分片数据列表[remainder_list, prime_list]

length ← len(D) // threshold + 1

prime_list = list

remainder_list = list

for i = 0,1,…,n-1 do

while True

prime = Random(length)

if Prime_testing(prime)==True then

remainder = Data mod prime

add prime to prime_list

add remainder to remainder_list

break

end if

end for

return list[remainder_list, prime_list]

2 数据读取恢复

需求方仅同步所在节点组管理的一份分片数据,因此,需向其他节点组请求数据进行恢复。当请求到的分片数据数量不少于门限t时,需求方可对分片数据进行数据恢复获得源数据。

假设已有t个分片数据,则

(5)

(6)

(5)—(6)式中,S则为恢复后的秘密。

具体算法过程如算法2所示。获取的remainder和prime集合为2个列表remainder_list和prime_list,其中,div_result为计算(6)式中间值所生成的列表,根据(6)式计算累和值data,求模并重新编码后返回源数据D。

算法2源数据恢复算法

输入:不少于门限(threshold)数量的分片数据[remainder, prime]

输出:源数据D

Prime_list ←

all prime of [remainder, prime]

Remainder_list ←

all remainder of [remainder, prime]

Product ← 1

for i = 0,1,…,threshold do

Product *= Prime_list[i]

end for

M_list ← div_result(Prime_list)

inverse_list ←

mod_inverse(M_list, Prime_list)

data ← 0

for i = 0,1,…,threshold do

data = data + M_list[i] *

inverse_list[i] * inverse_list[i]

end for

D ←decode(data % Product)

return D

3 SSDSM框架与工作流程

广义上,区块链技术是一种以链式区块存储数据,通过共识算法验证和更新全网节点数据,利用智能合约操作数据的去中心化基础架构和分布式计算范式[22-23]。区块体存储交易记录,区块头存储前一区块地址和时间戳等信息以及由交易记录构成的Merkle树树根。节点通过共识算法竞争区块的记账权,成功节点有权生成新区块,将更新后的区块链全网广播,所有节点对区块链数据进行验证后更新自己的区块链,直到全网存储相同的区块链。传统区块链的网络架构如图1所示。

图1 传统区块链网络结构Fig.1 Traditional blockchain network structure

为了适用数据共享场景下的应用,首先对网络结构进行了改进,如图2所示。SSDSM对每个节点随机生成唯一标识该节点的地址,根据(t,n)门限方案,将全网节点按地址模n的值划分成n个节点组(n≤全网节点总数),每一个节点组管理一条由分片数据形成的区块链。

图2 SSDSM网络结构Fig.2 Network structure of SSDSM

基于传统区块体数据结构,SSDSM设计了一种适合秘密分割算法和数据共享场景应用的区块体结构,如图3所示。一个区块记录一份共享数据,区块体包含门限、节点地址、分片数据和数据说明等4项信息,以此构造Merkle树,并将Merkle树根记录在区块头中,用于进行区块体数据校验。与传统区块头信息相比,SSDSM额外增加了全文Hash和节点组编号。全文Hash为源数据的Hash值,用于索引不同节点组中目标数据,恢复数据时,利用全文Hash进行数据校验。节点组编号标识该区块所在的节点组,如果获取的分片数据存在问题,可根据编号标识进行追溯。

图3 SSDSM区块数据结构Fig.3 SSDSM block data structure

SSDSM整体流程如下。

1)数据上传共享具体流程。

步骤1新节点申请加入网络,SSDSM随机生成唯一标识该节点的地址与相关信息,根据地址模n的值,将新节点并入节点组,同步所在组维护的区块链信息。

步骤2节点上传共享数据以及相关信息。

步骤3SSDSM根据CRT算法(算法1)将共享数据分割成n份,将n份分片数据分发至n个节点组。该过程具体实例如表1所示,其中,待分割数据由源数据编码而成。

步骤4各节点组进行数据验证后生成区块,节点组内同步更新数据链。

步骤5全网数据链成功更新,数据成功上链。

2)数据读取恢复具体流程。

步骤1需求方遍历本地存储的区块链,根据区块内数据描述寻找目标数据。

步骤2确定目标数据的全文Hash和门限t(1

步骤3验证接收的所有分片数据,若存在未通过验证的分片数据,进行追溯并向其他节点组请求。

步骤4SSDSM基于CRT算法(算法2)对目标数据进行数据恢复。该过程具体实例如表2所示,其中,分片数据为表1中随机选取结果,数据恢复结果进行解码后可得源数据。

步骤5成功恢复数据后利用全文Hash对目标数据进行校验。校验通过,则成功获取目标数据;否则返回步骤2,重新请求。

表1 数据上传共享实例Tab.1 Data upload shared instance

表2 数据读取恢复实例Tab.2 Data read recovery instance

4 实验与分析

实验在配置为Intel(R) Core(TM) i5-6200U 2.30 GHz的CPU和4 GByte内存的PC上进行,自行搭建区块链环境,编程语言为python。

在本地开启不同端口模拟区块链网络中不同的共识节点,每个节点运行相同的区块链代码。当有节点申请进行共享数据时,SSDSM基于中国剩余定理(Chinese remainder theorem,CRT)算法进行数据分割并分发分片数据,各节点组内进行一次挖矿,生成区块链接到各节点组内维护的区块链上,作为一次数据共享流程。节点获取目标数据至少t个分片数据,SSDSM基于CRT算法进行目标数据恢复,作为一次数据恢复的流程。由于环境限制,实验仅创建了少量节点用以对模型整体流程进行模拟,确保模型的可用性。

实验重点测试SSDSM在数据共享流程和数据恢复流程中的时间开销以及单节点数据冗余量的变化,因此,实验中共识算法以简化后的工作量证明(PoW)代替,且结果未计入通信开销。在门限方案的设计上,全网节点组数从n=10开始,分5次均匀递增至n=50,共测试了5种不同方案。

4.1 实验结果与分析

测试文件为随机生成的“.txt”文档,将其转化成十进制大数(1 000位以上)用于测试(若低于1 000位,为了统一,对其进行填充)。测试相同的文件,使用不同的门限方案进行数据分割和数据恢复的时间开销,以及单节点数据冗余量的变化。每个方案进行50次测试,最后取平均值记录,实验结果如图4所示。

图4 不同门限方案下各参数测试情况Fig.4 Test conditions of each parameter under different threshold schemes

图4a为不同(t,n)门限方案下对同一文件进行分割的时间开销测试结果:①n为定值,当t增大时,数据处理的时间开销逐渐降低;②t为定值,当n增大时,数据处理的时间开销随之增加;③当t,n同时增加时,门限方案的时间开销呈下降趋势。

当分片数量满足恢复数据的门限要求时,图4b反映了节点恢复目标数据的时间开销,门限值占比为t/n。不同的门限方案中,门限值的变化对数据恢复的时间开销影响并不明显,且所有门限下数据恢复的时间开销都稳定在0.01 s以下。

传统区块链全网节点存储同一数据,设该情况下的单个节点数据冗余量为100%。图4c反映了不同门限方案下单个节点的数据冗余量变化情况。随着门限值的增大,单节点数据冗余量减少,并渐趋平缓。而单节点数据冗余量和全网节点组数无关,仅随门限值变化。当t>10时,单个节点数据冗余量可降低至20%以下,在保障有一定冗余可恢复源数据的前提下,极大减轻单个节点的数据存储压力。

在完整的数据共享与恢复过程中,SSDSM处理共享数据后分发分片数据到各节点组并上链,而后多个需求方可同时申请多个分片数据进行源数据恢复。数据共享阶段在门限值较高情况下存在一定时间开销,但数据恢复阶段的时间开销极小,适用于大数据共享场景。

4.2 性能评估

1)数据安全性。区块头存储区块体的Merkle树根,且区块间依赖哈希进行链接。在需求方得到目标数据后,通过区块链上存储的全文Hash对目标数据进行验证,保障了数据的完整性。

SSDSM中所有节点均存储了分片数据,需求方对各节点组请求数据过程中,即使部分节点发生故障无法回应,只要t个不同组存在节点正常工作,需求方仍可以向其他节点请求数据,根据秘密分割方案的特点,需求方只需获取大于等于门限值t份不同的分片数据,即可恢复目标数据。可用性有所保障。

在机密性方面,SSDSM中,秘密分割方案保证单个节点无法获得共享数据的相关信息,仅获取足够分片数据的需求方可以得到共享数据,保障了存储数据的机密性。

在抗攻击性方面,SSDSM的冗余机制具有健壮性,能容忍部分节点的分片数据损坏、丢失,问题节点仍可以通过同步节点组内其他节点存储的区块链进行修复更新。

假定存在恶意节点,篡改了区块中的数据。需求方收到分片数据后先对其进行逐一校验,根据分片数据中Merkle根来鉴别区块体内的数据是否被篡改。一旦某一份分片数据被篡改,可根据该分片数据区块头中节点组编号确认其所在的分组,并向该节点组内其他节点或其他组内节点申请分片数据并再次验证。直到所有分片数据均通过校验后方可恢复数据。利用全文Hash再进行校验最终确认,如果没有通过校验,需求方仍可向不同节点申请数据。

假设攻击者成功攻破单个节点,攻击者在消耗存储空间下载该节点存储的区块链信息前提下,仍无法获得任意共享数据的完整内容。假设攻击者控制多个节点,在SSDSM中,新加入网络的节点根据随机生成的唯一地址决定所在的节点组,在最差的情况下,攻击者仅生成t个节点即可加入不同的节点组并同步组内数据,利用(t,n)门限方案进行数据恢复,从而获得全网的共享数据。最优的情况下,是控制全网t/n的节点才可以获得全网的数据。一般情况下有

(7)

(7)式中:T为攻击者需生成的节点数量,即攻击者至少生成T个节点可得到t个节点组内的共享数据信息。

考虑实际数据共享场景下,全网共享数据的数据量极大,且不同门限方案中,单节点数据冗余量与门限值两者为非线性关系。以(15,20)门限方案为例,该方案下单个节点数据冗余量为13.5%,若攻击者创建15个节点并成功加入15个不同节点组,为获取全网共享数据,攻击者需存储数据冗余量高达202.5%的数据,存储代价大。

2)算法性能。数据处理过程中的时间开销主要为生成满足(3)式的n个素数,由于转为十进制的共享数据为大数,因此,需要保证t个素数的位数和不小于共享数据的位数。SSDSM根据共享数据大小,生成指定位数的随机数并进行素性检验,素性检验采用Miller-Rabin方法的时间复杂度为O(logm)。

随着待检验数的位数增加,时间开销随之增加。n决定生成素数的个数,时间开销为单次素性检验的n倍;t决定素数的位数,t增加时,生成素数的位数变小,因此,时间开销减少。

数据恢复过程中,在获取t个分片数据情况下,依照 (5)式、(6)式计算即可,且求模逆的算法时间复杂度为O(logP) (P为(6)式中di)。在应用相同测试数据的前提下,所有测试门限方案的数据恢复时间开销均保持在0.01 s以下,效率很高且稳定。SSDSM整体算法的性能表现更适合应用于一次处理多次恢复的数据共享环境。

3)单个节点数据冗余量。传统区块链要求每个节点均要同步相同数据,而SSDSM中通过(t,n)门限方案对共享数据进行分割,此时有

(8)

(9)

(8)—(9)式中:C为全网节点数;d为一份共享数据的数据量;ξall为除共享数据外的其他数据量;ξone为单条区块链中除共享数据外的其他数据量;Dall为该门限方案下全网的数据量;Done为该门限方案下单条链的数据量。以传统区块链(此时Dall=(C×d)+ξall,Done=d+ξone)作为标准值进行比较分析,随着t的增大,全网的数据量和单条区块链数据量有效降低,减小了单个节点的存储压力,见图4c。

4.3 与其他数据共享方案比较

SSDSM应用(15,20)门限方案与其他类型的数据共享模型算法比较,从机密性、数据处理和恢复开销以及单节点数据冗余量多方面进行分析比较,算法测试均采用相同数据。结果如表3所示。

表3 与其他模型的参数比较结果Tab.3 Results are compared with those of other models

传统区块链所有节点存储相同链数据,可直接读取,未对区块体内存放数据进行加密处理。以传统区块链单节点数据冗余量为100%作为标准值比较,文献[14]利用纠删码降低节点数据冗余量,通过矩阵变换数据,各节点存储部分数据,该算法下节点数据冗余量降低至20%且运算时间开销极低,但部分节点仍可获得源数据部分信息,未对机密性进行改进;文献[15]对区块链上存储的数据对称加密,通过非对称加密其对称密钥,引入代理重加密算法,保障数据机密性,但是每一次数据恢复时间开销较大,且对称加密计算下节点数据冗余量大于100%。SSDSM采用基于CRT的秘密分割算法,各节点仅存储分片数据,无法获得共享数据的相关信息,在保障了数据机密性的同时,也提供了共享数据的冗余备份,具备抗攻击能力。而在数据处理和数据恢复上保障了较低的时间开销,在数据需要频繁共享的情况下,仍能保持运行效率,同时单个节点数据冗余量在该门限方案下低至13.5%,相较其他的数据共享方案达到了较低的数据负载。综上分析,与其他数据共享方案相比,兼备安全性和低数据负载的SSDSM 更加适合数据共享环境。

5 总结与展望

近些年来,脱胎于比特币的区块链技术发展迅速,其去中心化、不可篡改和可编程的特点在数据共享领域方面有广泛的应用前景。基于秘密分割的区块链数据共享模型,全网节点进行分组,利用Asmuth-Bloom法的秘密分割方案将共享数据分割成多份分别分发给各节点组存储,需要时从多于门限的数值分组获取数据进行恢复。

SSDSM在保障源数据安全的前提下降低了全网的冗余量,实验结果表明,随着门限的提升,数据分割的时间开销逐渐降低且各节点存储的数据量逐渐下降,而数据恢复的时间开销保持较低水平。综合看,该模型能较好地适应数据共享场景。

SSDSM仍需要进一步完善,如是否让分割时生成的素数由各节点组进行生成,效率更高更安全;对每一个节点组的数据需要访问控制机制来限制任意节点的访问,否则恶意节点也可以进行数据的恢复;在区块链网络中使用更高效的共识算法等。下一步会继续研究以上内容,以便该模型更好地适应更多场景并保障其数据的安全性。

猜你喜欢
分片全网门限
上下分片與詞的時空佈局
基于规则的HEV逻辑门限控制策略
地方债对经济增长的门限效应及地区差异研究
《唐宫夜宴》火遍全网的背后
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
双十一带货6500万,他凭什么?——靠一句“把价格打下来”,牛肉哥火遍全网
随机失效门限下指数退化轨道模型的分析与应用
基于模糊二分查找的帧分片算法设计与实现
电力系统全网一体化暂态仿真接口技术