文章快速检索     高级检索
  重庆邮电大学学报(自然科学版)  2020, Vol. 32 Issue (3): 377-384  DOI: 10.3979/j.issn.1673-825X.2020.03.006
0

引用本文 

王凌宇, 陆治军, 张向东, 徐光侠. 基于多分支树结构的电力缴费终端数据完整性验证方案[J]. 重庆邮电大学学报(自然科学版), 2020, 32(3): 377-384.   DOI: 10.3979/j.issn.1673-825X.2020.03.006.
WANG Lingyu, LU Zhijun, ZHANG Xiangdong, XU Guangxia. Data payment integrity verification scheme for power payment terminal based on multi-branch tree structure[J]. Journal of Chongqing University of Posts and Telecommunications (Natural Science Edition), 2020, 32(3): 377-384.   DOI: 10.3979/j.issn.1673-825X.2020.03.006.

基金项目

国家电网重庆市电力公司电力缴费终端安全防护技术研究(SGCQKH00JSJS1800056)

Foundation item

The the State Grid Chongqing Electric Power Company Power Payment Terminal Security Protection Technology Research Project (SGCQKH00JSJS1800056)

作者简介

王凌宇(1993-)男, 重庆人, 助理工程师, 本科, 主要研究方向为网络与信息安全。E-mail:wanglingyu_1993@sina.com; 陆治军(1976-), 男, 重庆人, 高级工程师, 硕士, 主要研究方向为网络信息安全、大数据安全及智能安全。E-mail:allon168888@gmail.com; 张向东(1972-)男, 重庆人, 高级工程师, 硕士, 主要研究方向为信息安, 信息系统架构。E-mail:86752966@qq.com; 徐光侠(1974-), 女, 重庆人, 教授, 博士, 博士生导师, 主要研究方向为网络信息安全、大数据安全及智能安全。E-mail:xugx@cqupt.edu.cn

通讯作者

王凌宇  wanglingyu_1993@sina.com.

文章历史

收稿日期: 2018-12-28
修订日期: 2020-04-10
基于多分支树结构的电力缴费终端数据完整性验证方案
王凌宇1, 陆治军1, 张向东1, 徐光侠2     
1. 国网重庆市电力公司 客户服务中心, 重庆 400000;
2. 重庆邮电大学 软件学院, 重庆 400065
摘要: 针对电力缴费终端存在管理人员操作不当和黑客攻击等行为导致数据损坏和丢失等问题, 设计了一种基于多分支哈希树结构的数据完整性防护验证方法。该方法利用基于双线性映射的签名机制和多分支树结构的特性, 通过使用随机掩码技术对分块的数据进行随机化处理, 以确保数据的隐私性, 采用多分支树形结构实现对数据块的快速认证和快速签名, 并利用哈希树节点的哈希值验证数据块的完整性, 引入验证服务器对数据分块进行批量验证和证据计算, 并通过设置备份服务器完成对存储数据的备份处理。实验结果表明, 该方案可以有效提高对存储数据完整性的批量检测效率, 并降低终端和主服务器的计算开销, 同时具有较小的计算开销和较高的安全性。
关键词: 数据备份    数据完整性验证    数据安全    多分支树    终端安全    
Data payment integrity verification scheme for power payment terminal based on multi-branch tree structure
WANG Lingyu1 , LU Zhijun1 , ZHANG Xiangdong1 , XU Guangxia2     
1. Customer Service Center, State Grid Chongqing Electric Power Company, Chongqing 400000, P. R. China;
2. School of Software Engineering, Chongqing University of Posts and Telecommunications, Chongqing 400065, P. R. China
Abstract: Aiming at the problems of data corruption and loss caused by improper operation of administrators and hacker attacks etc. in power payment terminals, a data integrity protection verification method based on multi-branch hash tree structure is designed. This method uses the signature mechanism based on bilinear mapping and the characteristics of multi-branch tree structure. Firstly, the random mask technique is used to randomize the blocked data to ensure data privacy. Then, the multi-branch tree structure is used to implement the fast authentication and fast signature of the blocked data, and the hash value of the hash tree node is used to verify the integrity of the blocked data. Finally, the verification server is introduced to perform batch verification and evidence calculation on blocked data, and the backup server is to complete backup processing of stored data. The experimental results show that the scheme can effectively improve the batch detection efficiency of storage data integrity, reduce the computational overhead of the terminal and the main server, and has lower computational overhead and higher security.
Keywords: data backup    data integrity verification    data security    multi-branch tree    terminal security    
0 引言

在电力终端智能化不断发展的同时,终端的安全问题也愈发严重。作为国家电网公司主要业务的电力营销,其电力缴费终端的安全问题也越来越引起人们的重视。在黑客攻击技术不断发展和黑色产业利益的推动下,网络攻击造成的终端数据泄露、数据损坏等恶意事件屡屡发生。因此,针对终端存储数据的安全性问题,如何设计一种高效的数据完整性验证方案,有效保证数据的完整性和安全性,解决终端的安全问题,切实保障电力用户隐私数据的安全性乃是当前迫切需要研究的重要课题。

在对数据的完整性检测上,大多数方案是基于数据可恢复证明(proofs of retrievability,POR)或数据拥有证明(provable data possession,PDP)方案来验证一个数据块甚至一批次数据块的完整性。但是,一旦批量验证失败,就会导致批量数据中的所有块因为没有准确识别出损坏的块,而不能判断它是完整的还是损坏的。为了提高识别数据损坏的效率,文献[1]设计了一种基于3维数据定位的损坏数据快速检测算法,利用一致散列来平衡计算成本,并且通过应用立方体分裂来逐步缩小可疑块的范围从而定位损坏的块,利用数据分层级联等技术来提高验证效率并保留用户数据检测过程中的隐私,但是该方案计算开销较大。文献[2]结合哈希算法,用Hash数据压缩方法来降低其压缩率,减少了检测存储量,增加了数据对象检测的指示错误数。文献[3]提出一种基于邻接哈希表的验证协议,提高了动态验证和数据更新的效率,该方法利用这种认证结构有效降低了计算和通信成本。根据哈希表展现出的特性,文献[4]提出一种结合分布式哈希表(distributed hash table,DHT)的验证方案,该方案使用2维数据结构,引入第三方验证,将授权信息分离,减少了计算开销。

总的来说,现有的数据完整性检测方案都能实现对数据完整的验证,但是由于电力缴费终端的应用环境与云存储环境有一定的差异,部分方案采用默克尔树、邻接表等结构来重新组织数据,导致数据访问的复杂度过高,认证所需的辅助信息过多等不足[5]

综上所述,本文提出一种基于多分支哈希认证树的电力终端数据完整性防护检测方法,对经过加密处理后的数据文件采用随机掩码技术进行随机分块以提高数据的安全性和隐私性,采用多分支树结构的构造方式来提高对大批量数据文件的完整性检测效率。此外,可以实现对数据的删除、修改、插入的动态操作。引入验证服务器实现对数据的批量验证以加快验证速率和减少其他部分的计算开销。本方案通过基于双线性映射的签名[6]机制和多分支哈希认证树的特性,使其具有良好的检测效率,可以实现对数据的安全存储、抗伪造攻击和抗伪造数字签名。

1 系统模型概述

基于多分支树结构的电力缴费终端数据完整性验证方案的设计模型如图 1,设计模型主要由以下4部分组成。

图 1 数据完整性防护检测模型 Fig.1 Data integrity protection detection model

1) 电力缴费终端。有电力缴费需求的用户,通过终端查询主服务器获取用电信息,执行缴费操作。

2) 主服务器。提供算力和存储资源,计算验证服务器需要的验证证据,完成验证服务器的验证需求。

3) 验证服务器。生成并发出验证完整性的消息,并计算返回证据的正确性,完成主服务器存储数据的完整性验证工作。

4) 备份服务器。提供对备份数据的算力资源和存储资源。

在基于多分支哈希树的电力缴费终端数据完整性防护检测方法系统模型中,用户首先需要进行终端身份验证和用户验证。终端身份验证是验证终端的身份合法性,是否是准许入网的缴费终端,此操作由验证服务器完成。用户身份验证由用户登陆个人用户信息,由主服务器验证信息是否准确。登陆成功以后,在本模型中,终端将数据存储在主服务器中,本地不再保留隐私数据。为进一步保证数据的安全性,再对数据进行备份处理,将备份的数据存储至第三方服务器(备份服务器),必要时可以异地存储。同时验证服务器可以实现对主服务器中存储数据的完整性校验,减少终端的计算开销。

2 基于多分支哈希树的数据完整性防护检测模型 2.1 相关定义

本系统设计主要由以下几个算法组成,定义如下。

KeyGen(1k)→(pk, sk)。该算法为密钥生成算法,输入安全参数k,输出一对公钥和私钥(pk, sk)。

SigGen(sk, F′)→(σ, T)。该算法是多分支哈希认证树根节点和数据块签名生成算法,由主服务器运行。算法输入是私钥sk和数据块集合F′,算法输出结果是数据块的签名值σ集合和树根节点签名值T,并发送给验证服务器存储。

GenVerification(I, Q)→verif。该算法为验证信息生成算法,由验证服务器运行。算法输入为验证的数据块集合I和随机数对Q=(i, vi),最后生成验证请求并转发给主服务器。

VerifyEvidence(P, verif)→(True, False)。该算法是P的验证算法,由验证服务器运行。输入(P, verif),输出计算结果。通过为True;否则,输出False。

多分支哈希认证树。根据默克尔树的结构思路,节点记录数据分块的哈希值,上级节点散列计算下级节点的哈希值,一层一层往上,直到哈希计算出根节点的值。

假设数据分块集M={b1, b2, …, bn},如图 2。用数据块哈希值表示最底层的节点值,树的深度为l=2,每个非终端节点的下级节点个数为n,则叶子节点数量为n2,即可以签名的节点有n2个。最下级节点记录数据分块的哈希值h(bi),1≤in2,所以节点xi的值为

图 2 多分支哈希认证树结构 Fig.2 Multi-branch hash authentication tree structure
$ {R_{{x_i}}} = h\left( {h\left( {{b_i}} \right)||h\left( {{b_{i + 1}}} \right)|| \cdots ||h\left( {{b_{i + n - 1}}} \right)} \right) $

节点x0的节点值为

$ {R_{{x_0}}} = h\left( {h\left( {{x_1}} \right)||h\left( {{x_2}} \right)||h\left( {{x_3}} \right)} \right) $
2.2 系统方案实现 2.2.1 密钥生成

密钥生成计算主要是由主服务器计算生成公私钥对。假设素数阶为p的循环群G1G2的生成元分别为g1g2。双线性映射e:G1×G2GT,抗碰撞Hash函数h:M→{0, 1}sM为消息空间。随机选取a0, a1, a2, …, anZqHG2,并选择随机密钥k

计算HiH1/αiHiG2i={1, 2, …, n}, 选取gG1,计算ye(g, H),x0e(g, H)α0,得到公钥pkk, H, H0, H1, …, Hn, yx0,私钥ska0, a1, a2, …, ang

2.2.2 备份生成

备份生成算法由主服务器对数据进行处理并生成特定的数据备份,具体的处理步骤如下。

1) 主服务器运行对称加密算法对数据文件F加密处理之后得到密文数据文件,然后对其进行分块处理得到${\tilde F}$ ={m1, m2, …, mn}。

2) 将分块数据${\tilde F}$保存一个备份得到${\hat F}$={m1, m2, …, mn}。

3) 使用随机掩码技术对分块数据${\hat F}$进行随机化处理,获得F′={bj}1≤jn={b1, b2, …, bn},其中,bj=mjs+rsmj={mj1, mj2, …, mjn},rs由伪随机函数生成rs=f(Hj||s),1≤j, sn

2.2.3 数字签名生成

数字签名生成算法主要由主服务器计算数据块和哈希认证树根节点的签名值。哈希树中的节点除根节点外,都被对应的上级节点认证,然后计算数据分块的哈希值,将文件的哈希值记录在最下层的节点上,具体的构造操作如下。

1) 假设为数据分块集合F′={bj}构造认证树,树深度是l,每个非终端节点的孩子节点数目为v,则有vl个数据分块可以被记录认证。

在哈希认证树中,第j个数据节点xj的认证辅助信息用($\vartheta $, ζ, ξ)表示,其中,$\vartheta $ζξ分别是节点散列值h(xj),深度值和节点的位置信息(l, h)。

2) 通过(1)式计算根节点R0的数字签名T

$ T = {\left( {h\left( {{R_0}} \right)} \right)^{1/{\alpha _0}}} $ (1)

(1) 式中:R0是根节点值;h是哈希运算;α0是私钥值。

3) 通过(2)式计算数据块bj的签名值σj

$ {\sigma _j} = {\left( {h\left( {{b_j}} \right) \cdot {H^{{b_j}}}} \right)^{1/{\alpha _n}}} $ (2)

(2) 式中:H是公钥值; αn是数据块的私钥。

4) 主服务器保存数据F′={bj}和哈希认证树根节点R0的签名值T,认证树构造信息(l, v)和数据块签名值σ={σj}1≤jn,并将备份数据转发至备份服务器,然后签名值Tσ转存至验证服务器。

5) 备份服务器收到F′={bj}后,构建同样的哈希认证树,存储根节点值R0和各个数据块的节点值集合{Rn},各个数据块的签名值集合{σj}1≤jn

2.2.4 验证信息生成

此算法由验证服务器运行,生成相关的验证请求信息,并转发至主服务器。验证服务器从{1, 2, …, n}中随机选取e个组成验证集合I={s1, s2, …, se},1≤s1≤…≤sen,每个iI,选取一个随机数viZq,构成Q=(i, vi),并将verif={i, vi}s1ise发送到主存服务器。

2.2.5 证据计算

首先,主服务器根据验证信息中的验证数据块,查找多分支哈希认证树,计算被验证数据块所对应的节点值和根节点值,然后计算验证数据块的签名值,并聚合生成持有性证据P,步骤如下。

1) 主服务器收到verif信息之后,依据所构造的哈希树,检索verif={i, vi}s1ise验证数据块存储节点的哈希值,并返回这些节点的认证辅助信息{Ωj}s1ise${{\tilde R}_0}$和对应的签名值σi

2) 计算验证数据块的上级认证节点的认证信息和验证数据块的签名信息为

$ R' = h\left( {h\left( {{R_{{s_1}}}} \right)||h\left( {{R_{{s_2}}}} \right)|| \cdots ||h\left( {{R_{{s_e}}}} \right)} \right) $ (3)
$ \delta = {\left( {\prod\limits_{i = {s_1}}^{{s_e}} {\sigma _i^{{v_i}}} } \right)^{1/{\alpha _k}}} $ (4)
$ \mu = {v_i}\sum\limits_{i = {s_1}}^{{s_e}} {{b_i}} $ (5)

(3)—(5)式中:Rse是需要验证的数据节点;vi是随机数;σi是签名值;αk是私钥。

主服务器把计算的证据P={R′, δ′, μ}返回至验证端。

2.2.6 证据验证

收到主服务器返回的证据P之后,验证服务器验证步骤如下。

1) 验证主服务器返回数据块的哈希信息是否是被挑战验证数据块,验证发送的PR′, δ′和μ是否正确。利用${{\tilde R}_0}$校验分块数据有效性表示为

$ e\left( {T, H} \right) = e\left( {h\left( {{{\tilde R}_0}} \right), {H_0}} \right) $ (6)

(6) 式中:H0是根节点实际的公钥值;T是根节点签名值;H根节点理论的公钥值。

2) 验证(3)式计算的值是否正确,然后将签名值和μ代入验证数据块的持有者服务器是否正确,表示为

$ e\left( {\delta , H} \right) = e\left( {\prod\limits_{i = {s_1}}^{{s_e}} h {{\left( {{b_j}} \right)}^{{v_i}}}{H^\mu }, {H_{{s_e}}}} \right) $ (7)

(7) 式中:δ表示节点签名值;H是验证服务器存储的公钥;Hse是验证数据块的公钥;vi是随机数。

验证服务器利用认证树的根节点值R0来验证这个认证树的数据是否完整。计算根节点签名值T=(h(R0))1/α0与之前存储在验证服务器的值是否相同,验证根节点的哈希值是否相同,如果相同,则输出True,不同则输出False。

2.2.7 数据动态操作

动态操作主要是对数据进行修改、插入和删除。本阶段中,一般是高权限终端对主服务器存储数据的管理。由于电力缴费的应用环境对数据的插入操作要求很低,正好弥补了本方案存在的认证树有限次数签名的不足。

2.2.7.1 数据修改操作

假设需要对数据进行修改操作,发出数据修改请求,需要将bk, i修改为bk, i,与主服务器的交互如下。

1) 操作终端计算数据块bk, i的签名值和哈希值h′(bk, i),根据用户信息查询修改数据块的位置信息,生成请求消息Update=(U, (k, i), bk, i, σk, i),其中,U为修改操作的标识符,同时将消息转发至主服务器和验证服务器。

2) 主服务器收到请求消息之后,根据请求消息中包含的信息,计算更新数据块bk, i的哈希值h(bk, i)、签名值并更新上级认证节点的哈希值,将(k, i)位置的数据块bk, i替换为bk, i,再将更新的认证辅助信息{Ωi}1≤in发送给验证服务器。

3) 验证服务器验证块哈希h′(bk, i)=h(bk, i)和根节点值是否相等,通过则保存相关信息并向操作终端和主服务器发送此次修改操作成功的信息。

4) 终端获得操作成功的消息之后,删除本地的数据bk, i和签名值σk, i,修改操作结束。

2.2.7.2 数据插入操作

如果在位置(k, i)的数据分片bk, i后面插入数据分片b*,步骤如下。

1) 操作终端计算数据分块b*的签名值σb*和哈希值h(b*),生成插入请求信息Insert=(I, (k, i+1), b*, σb*),分别发送给验证和主服务器。

2) 主服务器根据Insert中包含的信息,存储新的数据分片b*,计算签名值σb*、分块数据的哈希值h′(b*)和根节点值R0,并生成插入数据分块的认证辅助信息,然后向验证服务器发送操作后的证据信息。

3) 验证服务器对证据信息进行验证,通过对比插入数据文件的哈希值h(b*)=h′(b*)与根节点值R0=R0是否成立,认证路径的相关信息是否正确,验证是否插入到指定的位置,插入的分块数据是否正确,如果验证都通过,则向主服务器和操作终端回复此次插入操作成功,同时更新文件存储的相关信息。

4) 终端获得操作成功的消息之后,删除本地数据b*和签名值σb*等数据信息。

2.2.7.3 数据删除操作

1) 首先,查询需要删除数据的位置(k, i),计算删除数据块的签名值σk, i,然后发出删除指令Delete=(D, (k, i), σk, i),其中D为删除操作标识符。

2) 主服务器对比签名值σk, i是否和存储在主服务器的σk, i一致,如果一致,确认数据删除的位置无误后,删除该数据块bk, i,否则,终止操作。

3) 主服务器更新哈希认证树的路径信息和根节点的节点值,向验证服务器返回此次操作的证据$\left\{ {{{\left\{ {{{\mathit{\hat \Omega }}_i}} \right\}}_{1 \le i \le n}}, {{\hat R}_0}} \right\}$,并向备份服务器发送相关的数据更新信息,验证服务器更新数据存储的相关信息。

3 安全性分析 3.1 安全性分析

在本方案中,h是抗碰撞哈希函数,则验证服务器在对主服务器数据发起验证时,是不能获得原始的数据的。

在主服务器安全的情况下,验证服务器通过正常行使其职能可以获取到验证的数据集合{s1, s2, …, se}和主服务器返回的验证证据。验证服务器验证c次,返回的证据P中包含$\mu = \sum\limits_{u = 1}^c {\left( {{v_i}\sum\limits_{{s_1}}^{{s_e}} {{b_i}} } \right)} $和数据分块的签名信息集合。

由于分块数据集是随机选取的,由主服务器聚合运算会随着c的变化而变化,验证服务器找到(v1(1), v2(1), …, vc(1))得到

$ \left| {\begin{array}{*{20}{c}} {v_1^{\left( 1 \right)}}&{v_2^{\left( 1 \right)}}& \cdots &{v_c^{\left( 1 \right)}}\\ \cdots & \cdots & \cdots & \cdots \\ {v_1^{\left( c \right)}}&{v_2^{\left( c \right)}}& \cdots &{v_c^{\left( c \right)}} \end{array}} \right| \ne 0 $ (8)

验证服务器也无法获取随机数据块bi

验证服务器计算$\delta = \prod\limits_{i = {s_1}}^{{s_e}} {\sigma _i^{{v_i}}} $进行签名验证时,数据分块都采用了抗碰撞散列函数进行处理,在计算上h(bj)是不可能通过计算算出原始数据块bj的,并且多分支哈希认证树的构造和节点值的认证计算都是由主服务器和终端完成,即使获得签名信息,验证服务器也难以通过破解签名信息来获取bk, i

本方案还采用了加密算法对原始数据进行加密,并进一步使用了伪随机函数对加密后的原始数据进行随机分块操作bj=mjs+rs,其中rs=f(Hj||s),f为伪随机函数。所以,要想得到原始数据文件,只有获得了文件的所有数据分块,并且破解出伪随机函数规则以及其输入的随机数,否则,难以破解。

同时,验证服务器通过(3)式验证${{\tilde R}_0}$,判断数据是否被修改,整个过程只需要数据文件的哈希值就可以进行完成验证工作,因此,也不存在数据泄露的风险。所以,在整个验证过程中,主服务器的数据安全性得到了保证,有效保证了数据的完整性。

3.2 安全威胁模型

本文威胁电力终端系统数据完整性的因素主要有:①存储服务器管理人员不正确的操作导致的数据损坏而故意隐瞒;②硬件故障、自然灾害、黑客攻击等因素造成数据的丢失和破坏。为此,在验证过程中存储服务器可能发起如下攻击。①替换攻击。存储服务器用正确的数据块和标签组去更换被挑战验证的数据块和标签组; ②伪造攻击。黑客通过伪造证据欺骗验证服务器或伪造数据标签; ③重放攻击。存储服务器用已通过验证的证据或者用旧版本的数据块和标签欺骗验证服务器。本节假设服务器两两之间的通信是安全可靠的。

完整性检测方案的安全性可以通过伪造攻击对手的安全游戏进行模型构建,C表示验证服务器,攻击对手A试图伪造证据赢得安全游戏,具体过程如下。

Step 1  在验证信息生成阶段,随机生成验证数据块集合I={s1, s2, …, se},选取一个随机数viZq,构成Q=(i, vi),并将verif={i, vi}s1ise发送到A。

Step 2  在证据计算阶段,A不诚实采用替换、伪造和重放攻击的手段,将真实的认证辅助信息($\vartheta $, $\varsigma $, ζ)放在被破坏或者替换后的分块数据上,得到伪造证据P=(R′, δ′, μ),掩盖原始数据被破坏的真相,并将相关信息返回给C。

Step 3  在证据验证阶段,由于A使用的数据标签($\vartheta $, $\varsigma $, ζ)是真实的,C直接使用A返回的P={R′, δ′, μ}验证完整性,由于A会返回被验证的原始数据分块,C重新计算得到的($\vartheta $, $\varsigma $, ζ)将不能通过完整性检测。

4 性能分析

本方案的实验环境是:intel Core i5-7300hq CPU 2.5 GHz, 8 GB内存,64 bit Windows 10操作系统。实验中使用双线性映射密码库(PBC library)来模拟密码算法,使用128 bit高级标准加密算法加密数据。椭圆曲线域表示为G1G2GT,椭圆加密算法(ECC)的密钥ρ大小为|ρ|=160 bit,G1G2中的元素大小为|G1|=|G2|=160 bit,选取随机数大小为r和安全参数的大小为|r|=|p|=80 bit, |ρ|=160 bit,假设一个数据文件为M=223bit,且单个数据分块的大小为|b|=213bit,则计算出的分块数量为num=M/b=210个。由此, 可以推算出多分支哈希认证树的叶子节点个数为210个。根据节点个数可以得到树的深度n=4,下级节点个数l=5,则单个数据分块的签名信息的存储大小是6ρ+5r=1 360 bit。

4.1 计算开销

如果要以99%的概率发现损坏或删除率不超过1%的数据文件,结合文献[7]所提出的设想,需要从1 024个数据块中随机选取超过460个数据分块文件进行验证,所以本实验中完整性验证选取的验证数据块数量为460。

结合文献[8]、文献[9]所提方案,通过使用程序包Magma来做代数运算,得到密钥计算时间为28 ms,单文件签名时间大约为48 ms,单文件的认证信息生成时间大约为68 ms,使用AES加密的时间约为220 ms。实验主要从密钥生成、签名生成、证明和验证等阶段进行分析,实验结果如图 3

图 3 计算开销对比 Fig.3 Calculation overhead comparison

图 3中,证据生成和验证计算开销是针对460个验证数据块的。通过图 3a图 3b可以看出,本文证据生成和证据验证这2个环节总体计算开销低于其他2方案。从图 3c可以看出,在密钥生成和数字签名阶段,本方案的计算开销较低,总体表现良好,检测效率较高。

实验分析了多分支树结构的根节点计算开销,结果如图 4,其中, 叶子节点的取值为[2,64]。

图 4 根节点计算时间随度的变化 Fig.4 Root node calculation time change

当度的数量为2时与默克尔树的结构相同,由图 4分析可知,在根节点的计算开销方面,随着树的度量的增加,对比传统的默克尔树,本方案根节点的计算时间更小,对目前电力用户数据增长越来越快的大环境更为适用。

4.2 存储和通信开销

由于本方案采用树形结构存储数据,主要由主服务器存储电力用户数据、数据块签名、认证树的签名值和认证树结构信息等内容。主服务器和备份服务器的信息存储总量差不多,只需比较额外的存储开销,由于验证服务器不作数据存储,存储开销可以忽略不计。因此,主要的存储开销是认证辅助信息的存储量。通信开销则主要分析数据块验证阶段服务器交互产生的开销。实验分析结果如图 5

图 5 存储、通信和数据插入开销对比 Fig.5 Storage, communication, and data insertion overhead comparison

本文提出的基于哈希树的数据完整性检测方案,主要用3元组($\vartheta $, $\varsigma $, ζ)表示哈希认证树的认证辅助信息,分别是节点哈希值、深度值和位置信息。从图 5可以看出,对比另外2个方案,本方案额外存储的辅助信息比文献[8]略低,略高于文献[9],但是在对数据的动态操作上,由图 5b可以看出,由于本方案采用了多分支树结构构造数据,对数据的动态操作效率更快,时间成本更小。通过图 5c可以看出,本方案的通信开销表现良好,开销更低。

5 结束语

本文针对终端数据的完整性问题和验证过程中出现的计算开销过大等问题,提出一种基于多分支哈希树结构的完整性防护检测方法。本文介绍了相关的完整性检测方案,具体阐述了所提模型的主要思想及步骤,最后对模型进行了实验分析,并把当前的数据完整性检测方法和本文所提的方法进行对比。实验结果表明,本文提出的数据完整性检测方法的计算开销总体相对较低,利用验证服务器有效减少了批量认证的计算开销。本方案能够达到较好的完整性验证效果,提高完整性检测效率,具有良好的稳定性和安全性,对电力缴费终端数据有较好的防护效果。

参考文献
[1]
XU G, SUN Z, YAN C, et al. A rapid detection algorithm of corrupted data in cloud storage[J]. Journal of Parallel and Distributed Computing, 2018(111): 115-125.
[2]
吴烈, 杨云. 一种面向电力云的细粒度数据完整性检验方法[J]. 重庆邮电大学学报(自然科学版), 2012, 24(06): 703-707.
WU L, YANG Y. A fine-grained data integrity checking method for electric power cloud[J]. Journal of Chongqing University of Posts and Telecommunications (Natural Science Edition), 2012, 24(6): 703-707.
[3]
CHEN W, TIAN H, CHANG C C, et al. Adjacency-Hash-Table Based Public Auditing for Data Integrity in Mobile Cloud Computing[J]. Wireless Communications and Mobile Computing, 2018(10): 1-12.
[4]
SONAWANE K, DAHAKE R. Efficient Public Auditing Scheme for Shared Cloud Data Storage Using Multi Replica Merkel Hash Tree[J]. International Journal of Advanced Research in Computer and Communication Engineering, 2016, 5(7): 373-378.
[5]
谭霜, 贾焰, 韩伟红. 云存储中的数据完整性证明研究及进展[J]. 计算机学报, 2015, 38(1): 164-177.
TAN S, JIA Y, HAN W H. Research and development of provable data integrity in cloud storage[J]. Chinese Journal of Computers, 2015, 38(1): 164-177.
[6]
VERMA V, GUPTA D. An efficient signcryption algorithm using bilinear mapping[C]//IEEE International Conference on Computing for Sustainable Global Development. New Delhi, India: IEEE, 2016: 680-682.
[7]
ATENIESE G, BURNS R, CURTMOLA R, et al. Provable data possession at untrusted stores[C]//Proceedings of the 14th ACM conference on Computer and communications security. Alexandria, VA, USA: ACM, 2007: 598-609.
[8]
陈何峰, 林柏钢, 杨旸, 等. 基于BLS的多用户多副本数据持有性批量审计[J]. 密码学报, 2014, 1(4): 368-378.
CHEN H F, LIN B G, YANG Y, et al. Public batch auditing for 2M-PDP based on BLS in cloud storage[J]. Journal of Cryptologic Research, 2014, 1(4): 368-378.
[9]
BARSOUM A F, HASAN M A. Provable Multicopy Dynamic Data Possession in Cloud Computing Systems[J]. IEEE Trans. Information Forensics and Security, 2015, 10(3): 485-497. DOI:10.1109/TIFS.2014.2384391