高效的无证书云数据审计方案
2022-05-25杨海滨李瑞峰李秀广袁文勇易铮阁杨晓元
杨海滨,李瑞峰,李秀广,3,袁文勇,易铮阁,杨晓元
(1.武警工程大学 密码工程学院,陕西 西安 710086;2.网络与信息安全武警部队重点实验室,陕西 西安 710086;3.西安电子科技大学 综合业务网国家重点实验室,陕西 西安 710071)
云计算技术是近年来最受欢迎的分布式计算方式之一。作为一种以数据存储和管理为核心的云计算系统,云存储技术因其便利、经济、高扩展性等特点,已成为一种新兴的存储模式。然而,云存储技术在国内外飞速发展的同时,也暴露出许多安全隐患,尤其是用户云端数据的完整性可能遭受破坏。如何保证云端数据的完整性不被破坏,已成为当前研究的热点。
在早期的远程数据完整性验证方案中,审计者需要从云端下载所有数据,然后使用本地存储的元数据来验证完整性。这种方法需要的通信和计算成本较高,导致算力与存储空间的巨大浪费。2007年,Ateniese等首次正式定义数据持有性证明方案,该方案中,只需抽取部分数据内容进行审计,就能确认全部数据内容的完整性。2013年,Wang等首次将云审计与身份基密码体制结合,来审计云端数据的完整性,解决了审计方案中存在的证书管理复杂的问题。随后,研究者在基于身份的云审计方案中,添加数据动态更新、多用户批量审计、用户可撤销等各种功能,以满足用户的不同需求,由此基于身份的云审计方案研究成果趋向成熟。然而,基于身份的审计方案中仍存在密钥托管问题,即审计系统的安全性完全依赖于KGC的安全性及可信性,用户的私钥面临泄露的威胁。
针对基于身份的云审计方案中存在的密钥托管问题,2013年,Wang等首次提出无证书云审计方案,但He等指出,文献[6]方案在面对Ⅰ类型敌手时,攻击者可擅自替换用户的公钥,存在安全问题。Yang等提出一种群用户数据共享的无证书云审计方案,该方案支持对数据内容、用户身份隐私保护和数据动态更新,但该方案中,云端每验证一个标签,需计算3次双线性对,计算开销较大。Ming等提出的无证书云审计方案,实现了对于身份隐私的保护,但该方案中,即使所有外包数据都被云服务器删除,仍然能够伪造数据持有证明,并通过审计。Huang等的方案支持数据的批量审计功能,并且基于中国剩余定理实现了高效的密钥更新功能,但该方案中云端存储的是加密后的数据块和使用未加密数据块计算的标签,因此生成的证据并不能满足验证等式。Kang等将无证书云审计方案应用于无线体域网络,所提方案能抵抗恶意审计者,保护数据内容,但该方案中没有数据的动态更新过程。He等的方案能够保护用户隐私,但存在安全性漏洞,云服务器即使篡改了用户数据,也可以通过审计。Ji等对文献[12]进行安全性改进,重新定义了原文的安全模型,解决了其中的安全问题,但改进的方案中仍未描述云端数据的动态更新过程。Wu等对保护隐私的无证书云审计方案的安全模型进行定义,所提方案支持多用户群组身份隐私保护,但该方案未描述动态更新和数据内容隐私保护,且云端在生成证明时,需计算2倍挑战数据块数量的双线性对,计算负担较大。Zhang等设计的抵抗恶意审计者的无证书云审计方案没有数据动态更新的过程,且未实现数据隐私保护。He等将无证书审计方案应用于基于云的智能电网数据管理系统,降低了计算开销,但该方案中功能不够完善,未介绍动态更新或批量审计的过程。另外,上述大部分无证书方案在审计过程中使用了幂指数、点哈希函数、双线性配对等大开销运算,双线性配对在实际应用中实现较难且开销较大,降低了方案的审计效率。
针对上述问题,本文基于椭圆曲线密码和无证书签名技术,设计了无双线性对的高效无证书公共云审计方案;使用虚拟索引数据结构,实现了方案对云端数据的动态更新;使用对称加密算法保护了云数据的内容隐私;基于分叉引理和离散对数问题的困难性,证明了方案是安全可靠的。方案在解决了身份基密钥托管问题的基础上,审计效率更高,计算开销有明显降低。
1 系统模型与相关技术
1.1 系统模型
2013年,Wang等首次定义云审计方案中的系统模型,规范了审计方案中的挑战-响应数据验证流程。本方案中使用的无证书云审计系统模型在文献[19]的基础上,增加了实体KGC,如图1所示。
图1中,用户是使用云存储服务的实体,也是审计工作的发起人。云服务提供商(cloud service provider,CSP)对外提供数据云端存储与管理服务。TPA是由用户委托的审计任务的执行者,能够节省用户的开销。KGC是密钥生成中心,为审计系统产生密钥。
图1 系统模型Fig. 1 System model
审计流程如下:首先,KGC与用户合作生成用户的公私钥。然后,用户将要存储的数据文件使用对称加密算法盲化,将数据文件分块,对每一个数据块计算标签,发送数据块和标签至云端,并删除本地数据和标签。上传数据后,用户可更新云端数据。TPA在收到用户的审计请求时,发送挑战给云端。最后,云端使用接收到的挑战与自身存储的数据块和标签,生成数据持有证明发送给TPA,由TPA对证明进行验证,并将结果告知用户。
1.2 无证书签名
研究者们所提出的基于身份的密码体制虽然解决了复杂的证书管理问题,但导致了密钥托管问题的出现,即KGC的安全性和可靠性是决定系统安全性最为关键的因素,如果KGC存在漏洞,就会使用户私钥的安全性遭到威胁,随时可能被泄露。为此,后续Al-Riyami等提出了由用户和KGC一起生成用户私钥,并进行管理的无证书密码体制,可以很好地解决此类问题。
1.3 椭圆曲线密码
椭圆曲线密码(elliptic curve cryptogr-aphy,ECC)的概念由Miller和Koblitz提出,其定义如下:
设定大素数p
、素数域F
。
F
上的椭圆曲线满足方程y
=x
+ax
+b
, 其中a
,b
∈F
, 且要求4a
+27b
modq
≠0。无穷远点和椭圆曲线上的点构成一个加法循环群G
。设P
、Q
为椭圆曲线上两点,k
为整数,且满足Q
=k
·P
,k
·P
就是椭圆曲线上的倍点运算,已知P
、Q
求k
的问题为椭圆曲线离散对数问题(elliptic curve discrete logarithm problem,ECDLP)。2 高效的无证书云数据审计方案
本文使用胡冰洁等提出的数字签名算法构造无证书云审计方案,将其中对单个消息的签名和验证扩展到对多数据块的标签生成和完整性审计。本方案具体包括如下7个算法:
1) S etup →(p
,k
) 。KGC生成公开参数p
和主密钥k
,选择椭圆曲线上循环群G
, 定义大素数q
,选择G
中 阶为q
的 生成元P
,定义H
:{0,1}→Z
,选取随机数k
∈Z
为系统主密钥,计算P
=k
·P
∈G
为系统主公钥,选取一个对称加密算法E
作为数据盲化算法,选取合适的 ρ=2(δ ∈N
)作为虚拟索引的步长,真实索引相邻的两个数据块中间最多可以插入2−1个数据块。另外,选择伪随机置换函数per:{0,1}→{0,1}(
s
≪n
), per以随机数字作为输入,并生成数量较多的伪随机数字流。秘密保存主密钥k
,公开参数p
={q
,P
,P
,H
,H
,H
,E
,ρ}。2) KeyGen(k
,p
)→(k
,k
)。用户选择随机数x
∈Z
,计算X
=x
·P
∈G
,将身份信息ID
和X
发送给KGC,KGC随机选取r
∈Z
,计算h
=H
(ID
,R
,X
),R
=r
·P
∈G
,d
=r
+k
h
,将R
和d
发送给用户。用户私钥为k
=(x
,d
), 公钥为k
=(X
,R
)。3) T agGen(file,k
,k
,m
)→S
。用户将要存储的数据文件 file 进 行对称加密盲化,得到F
=E
(file),而后分为n
个数据块,表示为F
={m
,m
,···,m
}。对于每个数据块m
(1 ≤i
≤n
) ,用户选取随机数k
∈Z
,计算K
=k
·P
,然后计算:i
·ρ ∈N
, η为 数据块虚拟索引;S
为数据块的标签。最后用户发送K
至 TPA,发送{m
,K
,S
}至云端,并删除本地数据和标签。4) ChallengeGen →(c
,k
)。TPA在收到用户的审计请求时,选取随机数c
∈Z
为审计数据块的数量,选取随机数k
∈Z
为函数 per 的密钥,发送 (c
,k
)给云端。 TPA、CSP 利 用函数 per , 输入k
产生被抽取的数据块索引i
。5) ProofGen(F
,S
,c
,k
)→proof。云端接收到挑战(c
,k
)后 ,计算获得被抽取的数据块索引i
。计算聚合标签作 为 p roof发送给TPA。6) VerifyProof(proof)→Yes or No 。TPA接收到来自CSP的p roof 后,对于每个数据块m
,计算式(1)、(2)得到h
、h
,将其与proof用于验证式(4)是否成立:使用式(5)的推导过程证明,若式(4)成立,则云端数据是安全完整的 :
F
)→F
。本方案使用文献[25]的虚拟索引结构,从而更高效地实现对数据块的动态更新操作。审计方案中的所有实体需要维护一份数据块与虚拟索引对应的转换表。在数据块m
之后插入盲化加密后的新数据块时,用户计算m
的虚拟索引 η=(η+η)/2,然后利用式(1)、(2)、(3)计算m
的标签S
。 用户发送插入请求和 η、m
、S
给云端,更新虚拟索引表。云端接收后,根据虚拟索引 η找到对应位置,插入m
与S
,并更新虚拟索引表。删除数据块m
时,用户发送删除请求和虚拟索引 η给云端,更新虚拟索引表。云端接收后根据 η查找对应位置,然后删除数据块m
与 相应标签S
,并更新虚拟索引表。修改数据块m
为m
时,用户发送修改请求与虚拟索引 η给云端,云端返回对应的数据块m
。 用户将m
根据需要修改成m
,然后利用式(1)~(3)计算m
的标签S
。用户发送修改请求和 η、m
、S
给云端。云端接收后,根据虚拟索引 η找到对应位置,修改数据块和标签为m
与S
。3 安全性证明
3.1 抗替代攻击
假设加密后的数据文件F
中块m
被删除,但m
、m
被完整保存,且在整个审计阶段,TPA和用户正确执行本方案。用户在 T agGen阶段利用式(3)计算标签,m
、m
的标签分别为:a
,a
∈Z
,m
对应的标签可以表示为:h
x
+d
+kh
比较,m
、m
代入式(9):m
被删除的情况下,m
、m
不 能替代m
通过审计,本方案可以抵抗替代攻击。3.2 不可伪造性
3.2.1 敌手A
的不可伪造性在随机谕言模型中,假设敌手A
在多项式时间内,能够以不可忽略的概率 ε伪造正确标签并通过审计,则存在一个多项式时间算法以[1/e
(q
+q
+1)]·(1−1/e
)·(1/q
)·ε的概率成功解决ECDLP。在挑战过程中,A
执 行q
次 部分私钥询问,执行q
次完整私钥询问,执行q
次
H
询问。证明:设a
是系统主密钥,算法C
以(P
,aP
)为输入,求a
的具体值。C
运行S etup算 法,输出P
, 发送给A
, 建立列表L
、L
和L
。设定主密钥k
=a
∈Z
,计算P
=a
·P
∈G
,L
中元组格式为(ID
,R
,h
,X
),
L
中元组格式为(ID
,R
,d
,x
,X
),
L
存储着A
的 身份。在游戏之前,C
对于A
的 身份未知,需随机选择一个A
的挑战身份ID
。在游戏过程中,A
将 使用q
+q
+1个不同的挑战身份。游戏结束后,C
利用A
解 决ECDLP,C
猜中A
身份的概率为1 /(q
+q
+1)。 游戏过程中,A
可执行的各种询问的定义如下:①公钥询问。当A
对 身份为ID
的用户的公钥进行询问时,C
检索L
,若L
中存在(ID
,R
,d
,x
,X
),则发送k
=(X
,R
)给
A
; 否则,选择随机数x
、h
、d
∈Z
,计算X
=x
·P
,R
=d
·P
−P
·h
,将(ID
,R
,d
,x
,X
)、(ID
,R
,h
,X
)加入到L
和L
中,向A
发送k
=(X
,R
)。②H
询问。当A
对身份为ID
的用户进行H
(ID
,R
,X
) 询问时,C
检索L
,若L
中存在(ID
,R
,h
,X
),发送h
给A
;否则,执行公钥生成算法,生成元组(ID
,R
,h
,X
) 并加入到L
中,向A
发送h
。③秘密值询问。当A
对 身份为ID
的用户进行秘密 值 询 问 时,C
检 索L
,若L
中 存在(ID
,R
,d
,x
,X
),发送x
给A
; 否则,执行公钥生成算法,向A
发 送x
。④部分私钥询问。当A
对 身份为ID
的用户进行部分私钥询问时,若ID
=ID
,C
终止;若I
D
≠ID
,则C
检索L
,若L
中存在 (ID
,R
,d
,x
,X
) ,发送d
给A
,否则,执行公钥生成算法,向A
发 送d
。⑤公钥替换询问。当A
对 身份为ID
的用户进行公钥替换询问k
=(R
,X
)时 ,C
检 索L
, 找到(ID
,R
,d
,x
,X
), 将X
、R
替 换为X
、
R
。⑥完整私钥询问。当A
对 身份为ID
的用户进行完整私钥询问时,若ID
=ID
,C
终止;若ID
≠ID
,C
检索L
,若L
中存在(ID
,R
,d
,x
,X
) ,发送d
、x
给A
,否则,执行公钥生成算法,向A
发 送d
、
x
。⑦标签生成询问。当A
对 身份ID
、数据块m
、公钥k
进 行标签生成询问时,C
计算h
、h
和S
,获得标签σ=(K
,S
) ,然后将m
和 σ=(K
,S
) 发送给A
,并在列表L
中记录身份消息ID
。伪造:A
输 出一个关于数据块m
、 身份ID
、公钥k
的伪造签名 σ,若ID
≠ID
, 则C
终 止;若ID
=ID
,且L
中不存在ID
,则生成一个有效伪造标签σ=(K
,S
)。 由分叉引理可知,选择不同的哈希函数H
与H
,能够得到额外的有效伪造标签 σ=(K
,S
),则以下方程组成立:C
利用A
能够成功解决ECDLP。定义事件E
表 示A
在 询问过程中不终止,事件E
表示A
在 伪造过程中不终止,事件E
表 示A
成功输出两个有效标签。则P
(E
)和
P
(E
)分别为:A
输出一个有效数据标签的概率为 ε,则P
(E
)为:C
能够以大于[1/e
(q
+q
+1)]·(1−1/e
)·(1/q
)·ε的概率解决ECDLP。3.2.2 敌手A
的不可伪造性在随机谕言模型中,假设敌手A
在多项式时间内,能够以不可忽略的概率 ε伪造正确标签并通过审计,则存在一个多项式时间算法以[1/e
(q
+q
+1)]·(1−1/e
)·(1/q
)·ε优势成功解决ECDLP。在挑战过程中,A
执行q
次 部分私钥询问,执行q
次完整密钥询问,执行q
次
H
询问。证明:设a
是系统主密钥,算法C
以(P
,aP
)为输入,求a
的具体值。C
运行S etup算法,输出P
和k
,发送给A
,建立?列表L
、L
和
L
。L
中元组格式为(ID
,R
,h
,K
),
L
中元组格式为 (ID
,R
,d
,x
,X
),
L
存储着A
的身份。在游戏之前,C
对于A
的身份未知,需随机选择一个A
的挑战身份ID
。在游戏过程中,A
将使用q
+q
+1个不同的挑战身份。游戏结束后,C
利用A
解决ECDLP,C
猜中A
身份的概率为1 /(q
+q
+1)。游戏过程中,A
可执行的各种询问的定义如下:①公钥询问。当A
对身份为ID
的用户的公钥进行询问时,C
检索L
,若L
中存在(ID
,R
,d
,x
,X
),则发送k
=(X
,R
)给
A
;否则,若I
D
≠ID
,选择随机数x
,r
∈Z
,计算R
=r
·P
,X
=x
·P
和d
=r
+k
H
(ID
,R
,X
) ,将 (ID
,R
,d
,x
,X
) 加 入 到L
中,向A
发 送k
=(X
,R
); 若I
D
=ID
, 选择随机数r
∈Z
,计算R
=r
·P
,X
=x
·P
, 将(ID
,R
,⊥,⊥,X
) 加入到L
中(其中, ⊥表示空值),向A
发送k
=(X
,R
)。②H
询问。当A
对身份为I
D
的用户进行H
(m
,ID
,K
,X
) 询 问 时,C
检 索L
,若L
中 存 在(ID
,R
,h
,K
) ,发送h
给
A
;否则,选择随机h
∈Z
,并加入到L
中,向A
发送h
。③秘密值询问。当A
对身份为ID
的用户进行秘密值询问时,若ID
=ID
,C
终止;否则,检索L
,若L
中存在 (ID
,R
,d
,x
,X
) ,发送x
给A
;否则,执行公钥生成算法,向A
发送x
。④私钥询问。与敌手A
的私钥询问过程相同。⑤标签生成询问。当A
对身份ID
、数据块m
进行标签生成询问时,C
计算h
、h
和S
,获得标签σ=(K
,S
) ,然后将m
和 σ=(K
,S
) 发送给A
,并在列表L
中记录身份消息ID
。伪造:与敌手A
的伪造过程相同。由分叉引理可知,选择不同的哈希函数H
与
H
,能够得到额外的有效伪造标签 σ=(K
,S
),则有:C
可 以利用A
解决ECDLP。定义事件E
:
A
在询问过程中不终止;事件E
:A
在伪造过程中不终止;事件E
:
A
成功输出两个有效标签。则概率P
(E
)和
P
(E
)分别为:A
输出的签名有效的概率为ε, 则P
(E
)为:C
能够以大于[1/e
(q
+q
+1)]·(1−1/e
)·(1/q
)·ε的概率成功解决ECDLP。3.3 隐私保护
用户持有私钥k
=(x
,d
),
x
由 用户自身产生,d
由KGC根据用户的ID
产生,针对KGC实现了私钥的隐私保护,能够解决密钥托管问题。若TPA或云端试图利用标签计算用户私钥x
、d
,则需要解决ECDLP,因此,无法计算用户私钥。云端存储数据块m
, 在VerifyProof阶段,TPA接受云端发送的数据块m
,云端和TPA虽然持有数据块,但由于数据块m
被加密算法E
盲化,所以无法获取真正的内容信息。4 效率分析
对方案的效率进行数值分析与实验验证,并从计算开销角度,将本方案与现有各无证书云审计方案进行了对比。
利用JPBC库进行实验,选取JPBC库中的TypeA型素数阶椭圆曲线 。定义G
为 椭圆曲线点群,G
为乘法循环群,在 64 bit、Windows 10操作系统、2.50 GHz、i5处理器、4 GB内存条件下,执行本方案审计过程中出现的各种运算10 000次,取平均时间开销,如表1所示。表1 各运算平均时间开销
Tab. 1 Average time cost of each operation
运算 描述 时间开销/ms P双线性映射 5.845 3 H′ 点映射哈希运算 2.017 3 H普通哈希函数运算 0.000 2 AG1 群G1 上的加法运算 0.142 3 MG1 群G1 上倍点运算 1.315 7 MG2 群G2 上的乘法运算 2.975 3 EG2 群G2 上的幂运算 1.254 6 AZq Z∗q上的加法运算 0.001 4 MZq Z∗q上的乘法运算 0.001 5
对本方案的计算开销进行数值分析,在TagGen阶段,用户计算K
=k
·P
与式(1)~(3),计算开销为2nH
+2nA
+2nM
+nM
。 在 P roofGen阶段,云端计算计算开 销 为 (c
−1)A
。在VerifyProof阶段,TPA计算式(1)、(2),并验证式(4),计算开销为(2c
−2)H
+3A
+3M
+M
。对本方案与各文献方案在各阶段的计算开销进行数值对比分析,如表2所示。表2中,n
为 数据块总数,c
为挑战数据块数量。表2 各方案在不同阶段的计算开销对比
Tab. 2 Calculation cost comparison of each scheme in different stages
方案 TagGen ProofGen VerifyProof文献[6]方案 nH′+2nEG2+2nMG1 ≈7.157 9n (c−1)MG2+cEG2+(c−1)AZq+cMZq ≈4.232 8c−2.976 7 3P+(c+1)H′+(2c−1)MG2+(2c+1)EG2 ≈10.477 1c+0.296 6文献[7]方案 (n+1)H′+H+nAG1+2nMG1+AZq+MZq ≈4.791n+2.020 2 2P+(c+1)H′+2H+(c+2)AG1+(c+3)MG1 ≈3.475 3c+17.939 6文献[11]方案 (n+1)H′+nH+2nAG1+4nMG1+nAZq ≈7.566 1n+2.017 3(c−1)AG1+cMG1+(c−1)AZq+cMZq ≈1.461 8c−0.143 7 4P+cH′+(c+1)H+2cAG1+(2c+3)MG1+(c−1)AZq+cMZq ≈4.936 2c+27.329 7文献[12]方案 nH′+nAG1+2nMG1+AZq ≈4.791n+0.001 4 H+(c−1)AG1+(c+1)MG1+cAZq+(c+1)MZq ≈1.460 9c+1.174 9 2P+(c+1)H′+2H+(c+3)AG1+(c+2)MG1 ≈3.475 3c+16.766 2文献[16]方案 3H′+nH+4AG1+(3n+3)MG1 ≈3.947 1n+10.568 2 2H+(c−1)AG1+(c+1)MG1+cAZq+(c+1)MZq ≈1.460 9c+1.174 9 4P+5H′+cH+2AG1+5MG1+(2c−2)AZq+cMZq ≈0.004 3c+40.328本方案 2nH+2nAZq+2nMZq+(2c−2)AG1+2cMG1+(c−1)AZq+cMZq ≈2.918 9c−0.286 nMG1 ≈1.321 5n (c−1)AG1 ≈0.142 3c−0.142 3 (2c−2)H+3AG1+3MG1+MZq ≈0.000 4c+4.375 5
由表2可以看出:在 TagGen阶段,文献[6,11]方案的计算开销约为本方案的6倍,文献[7,12,16]方案的计算开销约为本方案的3倍,故本方案对用户更加友好,且能够应用于算力较低的设备,在设计上更加合理高效。在 ProofGen与VerifyProof阶段,本方案的计算开销也明显小于其他方案,在挑战数据块数量c
逐渐增加的情况下,其他方案的计算开销增加的速度和幅度与本方案相比更加剧烈,故本方案的优势更加显著。为了测试本方案在实际应用中的性能,且更直观地对比各方案的计算开销,在实验环境下运行各方案,设定数据块大小为2 kB,记录各方案在TagGen、ProofGen、VerifyProof阶段的时间开销数据,根据数据绘制图2~4。在数据块总数n
变化的情况下,各方案在 TagGen阶段的时间开销如图2所示。由图2可知,各方案在TagGen阶段的时间开销都与n
约成正比关系,其中本方案对应的折线斜率最小,说明本方案效率最高。在挑战块数量c
变化的情况下,各方案在ProofGen 、Verifyproof阶段的时间开销如图3、4所示。由图3~4可知:本方案的时间开销仍然是各方案中最小的,而且随着挑战数据块数量c
的增加,本方案在ProofGen、VerifyProof阶段的时间开销仅有少量增加,增加程度明显小于其余各方案。图2~4证实了表2在各阶段的数值分析。图2 TagGen阶段时间开销对比Fig. 2 Comparison of time cost in TagGen
图3 ProofGen阶段时间开销对比Fig. 3 Comparison of time cost in ProofGen
图4 VerifyProof阶段时间开销对比Fig. 4 Comparison of time cost in VerifyProof
5 结束语
针对现有云审计方案中存在的证书管理问题和密钥托管问题,以及现有无证书云审计方案安全性不足且审计效率较低的问题,设计了一种安全高效的无证书云审计方案。本方案在正确验证云端数据完整性的基础上,能够实现高效的动态更新功能,支持数据内容隐私保护,降低了计算、通信开销,且更加安全。下一步研究将结合区块链技术或格密码技术,为云审计方案增加更多功能,以适应未来更加复杂的需求。