﻿ 基于模糊身份的动态数据审计方案
 计算机系统应用  2020, Vol. 29 Issue (2): 94-100 PDF

1. 福建师范大学 数学与信息学院, 福州 350117;
2. 福建师范大学 福建省网络安全与密码技术重点实验室, 福州 350007

Fuzzy Identity-Based Dynamic Data Auditing Scheme
ZHAO Chen-Bin, XU Li, WANG Feng
College of Mathematics and Informatics, Fujian Normal University, Fuzhou 350117, China;
Fujian Provincial Key Lab of Network Security & Cryptology, Fujian Normal University, Fuzhou 350007, China
Foundation item: National Natural Science Foundation of China (U1905211, 61771140); Higher Educations’ Industry-University-Research Cooperation Project of Science and Technology Bureau, Fujian Province (2017H6005); Major Project of Science and Technology Bureau of Fuzhou Municipality (RongKe(2017)325); Enterprises-Institution Cooperation Project (DH-1307)
Abstract: The rapid development of cloud storage services also brings many security challenges. The existing fuzzy identity-based data integrity auditing scheme only focuses on static data, which is obviously not suitable for many practical applications. This study proposes a fuzzy identity-based dynamic data integrity auditing scheme, which combines the dynamic data structure of Merkle hash tree to realize the complete dynamic operations of cloud data. Compared with data integrity auditing schemes based on the public key infrastructure, the scheme avoids the processes of issuing, managing, and revoking public key certificates by using fuzzy identity-based cryptosystem, and reduces the communication cost. Furthermore, the proposed scheme supports batch verification and improves authentication efficiency. Finally, the new scheme is analyzed in terms of security and function, which resists forgery attack and preserves data privacy, and has certain advantages over other schemes in terms of function.
Key words: cloud storage security     dynamic operation     fuzzy identity-based     Merkle hash tree     data integrity auditing

1 预备知识 1.1 双线性对

${G_1}$ ${G_2}$ 是两个给定的素数q阶乘法循环群, 其中g ${G_1}$ 的生成元. 双线性对运算定义为 $e:{G_1} \times {G_1}\to$ ${G_2}$ . 线性对e具有以下性质[17]:

(1) 双线性: $e({g^a},{g^b}) = e{(g,g)^{ab}}$ , 其中 $a,b \in {Z_q}$ .

(2) 可交换性: $e({g^a},{g^b}) = e({g^b},{g^a})$ , 其中 $a,b \in {Z_q}$ .

(3) 非退化性: $e(g,g) \ne 1$ .

1.2 默克哈希树 (MHT)

 图 1 默克哈希树认证结构

1.3 基于模糊身份的签名[18]

1) 初始化阶段: 系统输入安全参数1k以及门限值 $t$ , 概率型算法产生公开参数 $\widehat {pp}$ 以及主密钥 $mk$ .

2) 密钥生成阶段: 输入模糊身份集合 $\omega$ , 主密钥 $mk$ , 则产生用户私钥 $p{k_\omega }$ .

3) 标签生成阶段: 输入用户私钥 $p{k_\omega }$ , 公开参数 $\widehat {pp}$ , 以及明文消息 $Message$ , 输出相应的标签 $SIG$ .

4) 验证阶段: 输入验证者模糊身份集合 $\omega '$ , 公开参数 $\widehat {pp}$ , 明文消息 $Message$ , 以及标签 $SIG$ . 如果输出结果 $b = 1$ , 则说明验证通过.

2 系统模型

 图 2 数据完整性审计系统架构

1) 初始化阶段: KGC执行该算法, 输入安全参数 ${1^k}$ , 门限值 $t$ , 以及用户模糊身份集合中元素个数最大值 $m$ . 生成公开参数 $\widehat {pp}$ 和主密钥 $mk$ .

2) 密钥生成阶段: KGC执行该算法, 输入用户模糊身份集合 $\omega$ , 公开参数 $\widehat {pp}$ 和主密钥 $mk$ , 生成云用户的私钥 $p{k_\omega }$ .

3) 标签生成阶段: CU执行该算法, 输入公开参数 $\widehat {pp}$ , 用户的私钥 $p{k_\omega }$ , 以及文件 $File$ , 生成数据标签 $SIG$ .

4) 挑战-响应阶段: TPA执行此算法, 输入公开参数 $\widehat {pp}$ , 文件 $File$ , 以及用户模糊身份集合 $\omega$ , 输出挑战 $CHAL$ , 云服务器根据挑战信息进行响应回复.

5) 验证阶段: TPA接收到CS返回的响应RESP, 输入公开参数 $\widehat {pp}$ , 用户模糊身份集合 $\omega '$ , 挑战CHAL和响应RESP, 进行验证. 如果输出结果为1, 说明数据未被改变.

6) 动态操作阶段: 当符合模糊身份集合的CU执行动态操作, 输入新的文件 $File$ , 以及用户私钥 $p{k_\omega }$ , 生成对应的数据标签上传至CS.

3 安全需求

1) 正确性: 在审计验证过程中, TPA首先向CS发送挑战, 然后CS根据挑战信息进行响应回复. 最终, TPA验证响应信息的正确性.

2) 隐私性: 受用户委托, TPA完成云端数据审计. 但在整个审计协议实施过程中, 禁止泄露任何的用户数据信息给TPA. 即TPA会接收到CS发送的响应信息, 但TPA不能得到用户具体的数据块信息.

3) 伪造攻击: CS在提供数据存储服务时, 为了维护自身的利益, 可能故意删除普通云用户很少访问的数据文件. 或者由于其他利益因素, CS会发生篡改数据等恶意行为. 因此CS会通过某些方式对数据块和认证标签进行伪造, 以至于在整个审计过程中, 审计者不能发现数据被损坏.

4 具体方案 4.1 初始化阶段

 $T(x) = {g_2}^{{x^m}} \cdot \prod\limits_{i = 1}^{m + 1} {{t_i}^{{\Delta _{i,m}}(x)}}$ (1)

 $\widehat {pp} = \{ {g_1},{g_2},{t_1},\cdots,{t_{m + 1}},\upsilon ',\Lambda = e({g_1},{g_2})\}$ (2)
4.2 密钥生成阶段

 $S{K_k} = {g_2}^{\widehat q(k)} \cdot T{(x)^{{r_k}}},s{k_k} = {g^{ - {r_k}}}$ (3)

4.3 标签生成阶段

CU首先对文件进行分块得到 $F = ({m_1},{m_{\rm{2}}},\cdots,{m_n})$ , 并对每个数据块 ${m_i}$ 进行签名. 首先选择随机数 $u \in {G_1}$ 以及 ${s_k} \in {Z_q}$ , 计算 $\Gamma = \mathbb{N}\parallel u\parallel Sig(\mathbb{N}\parallel u)$ , 其中 $\mathbb{N}$ 为每个文件对应的文件名. 接下来, 对每个数据块 ${m_i}$ 生成对应的数据块标签:

 \left\{ \begin{aligned} & SIG_{1,i}^k = \{ S{K_k} \cdot {(H({m_i}) \cdot \upsilon ' \cdot {u^{{m_i}}})^{{s_k}}}\} \\ & SIG_{2,i}^k = \{ {g^{ - {s_k}}}\} \\ & SIG_{3,i}^k = \{ {g^{ - {r_k}}}\} \end{aligned}\right. (4)

4.4 挑战-响应阶段

1) 挑战阶段: TPA从 $[1,n]$ 中随机选择子集L= $\{ 1,2,\cdots,c\}$ , 对于每个 $i \in L$ , 选择相应的随机数 ${\mu _i} \subseteq {Z_q}$ . 然后将挑战信息CHAL $= {\{ (i,{\mu _i})\} _{(1 \le i \le c)}}$ 发送给CS.

2) 响应阶段: 当CS接收到TPA的挑战信息, 它首先计算:

 \left\{ \begin{aligned} &\mu = \sum\limits_{i = 1}^c {{\mu _i} \cdot {m_i} \in {Z_q}} \\ & SIG_1^k = \prod\limits_{i = 1}^c {{{(SIG_{1,i}^k)}^{{\mu _i}}}} \\ & SIG_2^k = SIG_{2,i}^k\\ & SIG_3^k = SIG_{3,i}^k \end{aligned}\right. (5)

4.5 验证阶段

 $\prod\limits_{(i,{\mu _i}) \in CHAL} {\Lambda ^{{\mu _i}}} \mathop = \limits^? \prod\limits_{k \in s} \left\{ e(SIG_1^k,g) \cdot \prod\limits_{(i,{\mu _i}) \in CHAL} e(T(k),\{ SIG_3^k\} ^{\mu _i}) \cdot e((H({m_i}) \cdot \upsilon ')^{\mu _i} \cdot {u^\mu },SIG_2^k)\right\} ^{{\Delta _{i,m}}(0)}$ (6)
4.6 动态操作阶段

(1)修改操作: 当用户把第 $i$ 个数据块mi修改成 $m_i'$ (例如: $i = 3$ , 如图3). 首先, 在新的数据块 $m_i'$ 的基础上计算其相应的标签 ${SIG{_{1,i}^k}' } = \{ S{K_k} \cdot {(H({m_i}' ) \cdot \upsilon ' \cdot {u^{{m_i}' }})^{{s_k}}}\}$ , ${SIG{_{2,i}^k}' } = \{ {g^{ - {s_k}}}\}$ , ${SIG{_{3,i}^k}' } = \{ {g^{ - {r_k}}}\}$ , 因此产生新的标签集合 $\Phi ' = \{ {SIG{_{1,i}^k}' },{SIG{_{2,i}^k}' },{SIG{_{3,i}^k}' }\}$ . 然后用户发送更新 $update = (M,i,{m_i}' ,\Phi ')$ 给CS. 接收到请求后, CS执行更新操作: ① 将数据块 ${m_i}$ 修改成 ${m_i}'$ , 并且输出新的文件 $F'$ ; ② 将相应数据块标签进行修改, 输出新的数据标签集合 $\Phi '$ ; ③ 在MHT中, 将 $H({m_i})$ 修改成 $H({m_i}' )$ , 并且产生新的根节点R'. 更新操作完成后, CS发送更新执行证明 $Proo{f_{\rm{update}}} = \{ {\theta _i},H({m_i}),R',Sig(H(R))\}$ 给用户. 当用户接收到证明信息, 根据 $\{ H({m_i}),{\theta _i}\}$ 的值计算出根节点R, 随后验证根节点哈希值的签名 $Sig(H(R))$ . 如果验证不通过, 输出FALSE. 否则的话, 用户继续验证CS是否执行修改操作, 使用 $\{ H({m_i}' ),{\theta _i}\}$ 的值来计算新的根节点并与R'进行比较. 如果不等, 输出FALSE, 否则的话输出TRUE. 最后, 用户对新产生的根节点R'进行签名, 计算 $Sig(H(R'))$ 并发送到CS.

(2)插入操作: 在用户第i个数据块mi后插入数据块 $m_i^*$ (例如: $i = 3$ , 如图4所示). 具体操作为: 首先, 在新的数据块 $m_i^*$ 的基础上计算其相应的标签 ${SIG{_{1,i}^k}^*} =$ $\{ S\!\!{K_k} \cdot (H({m_i}^*) \cdot \upsilon ' \cdot {u^{{m_i}^*}})^{{s_k}}\}$ , ${S\!\!IG{_{2,i}^k}^*} = \{ {g^{ - {s_k}}}\}$ , ${S\!\!IG{_{3,i}^k}^*} = \{ {g^{ - {r_k}}}\}$ . 因此, 产生新的标签集合 ${\Phi ^*} = \{ {S\!\!IG{_{1,i}^k}^*},{S\!\!IG{_{2,i}^k}^*},{S\!\!IG{_{3,i}^k}^*}\}$ . 然后, 用户发送更新请求 $update = (I,i,{m_i}^*,{\Phi ^*})$ 给CS. 接收到请求后, CS执行更新操作: ① 保存数据块 ${m_i}^*$ , 并在MHT中叶子节点 $h(H({m_i}))$ 之后插入新的叶子节点 $h(H({m_i}^*))$ , 输出新的文件F*; ② 增加新产生的标签, 输出新的数据标签集合 ${\Phi ^*}$ ; ③ 基于更新之后的MHT产生新的根节点R*. 更新操作完成后, CS发送更新执行证明 $Proo{f_{\rm{update}}} =$ $\{ {\theta _i},H({m_i}),{R^*},Sig(H(R))\}$ 给用户. 例如: 我们假设在 $h(H({m_3}))$ 之后插入 $h(H({m_3}^*))$ , 仅仅增加叶子节点 $h(H({m_3}^*))$ 和内部节点C, 其中 ${h_c} = h(h(H({m_3}))\parallel$ $h(H({m_3}^*)))$ . 当用户接收到证明信息, 首先根据 $\{ H({m_i}),{\theta _i}\}$ 的值计算出根节点R, 随后验证根节点哈希值的签名 $Sig(H(R))$ . 如果验证不通过, 输出FALSE. 否则的话, 用户继续验证CS是否执行插入操作, 使用 $\{ H({m_i}^*),H({m_i}),{\theta _i}\}$ 的值来计算新的根节点并与R*进行比较. 如果不等, 输出FALSE, 否则, 输出TRUE. 最后, 用户对新产生的根节点R*进行签名, 计算 $Sig(H({R^*}))$ 并发送到CS.

3)删除操作: 删除操作与插入操作刚好相对立. 假设CS接收到删除数据块 ${m_i}$ 的请求(例如: $i = 4$ , 如图5所示), 则CS在存储空间中删除数据块 ${m_i}$ 以及MHT中相应的叶子节点 $h(H({m_i}))$ , 然后重新计算新的根节点R'', 具体细节与插入操作相类似.

 图 3 表示数据块的修改操作, 其中 ${x_i}$ 和 ${x_i}'$ 分别指 $H({m_i})$ 和 $H({m_i}' )$

 图 4 表示数据块的插入操作, 其中 ${x_i}$ 和 ${x_i}^*$ 分别指 $H({m_i})$ 和 $H({m_i}^*)$

 图 5 表示数据块的删除操作

5 正确性和安全性分析

1) 正确性: 通过双线性对运算, 来判断4.5小节验证阶段中式(6)是否相等. 首先计算:

 \begin{aligned} e(SIG_1^k,g) =& e\left(\prod\limits_{i = 1}^c {{{(SIG_{1,i}^k)}^{{\mu _i}}},g} \right) = e\left({\prod\limits_{i = 1}^c {(S{K_k} \cdot {{(H({m_i}) \cdot \upsilon ' \cdot {u^{{m_i}}})}^{{s_k}}})} ^{{\mu _i}}},g\right)\\ = & \prod\limits_{i = 1}^c {e{{(g_2^{\widehat q(k)},g)}^{{\mu _i}}} \cdot e{{(T{{(x)}^{{r_k}}},g)}^{{\mu _i}}} \cdot e((H({m_i}) \cdot } \upsilon ' \cdot {u^{{m_i}}}{)^{{\mu _i}}},{g^{{s_k}}}) \end{aligned} (7)

 \begin{aligned} \prod\limits_{k \in s} \left\{ e\left(SIG_1^k ,g\right) \cdot \prod\limits_{(i,{\mu _i}) \in CHAL} e\left(T(k),{{\left\{ SIG_3^k\right\} }^{{\mu _i}}}\right) \cdot e\left((H({m_i}) \cdot \upsilon ')^{{\mu _i}} \cdot {u^\mu },SIG_2^k\right)\right\} ^{{\Delta _{i,m}}(0)}\\ =\prod\limits_{k \in s} \prod\limits_{(i,{\mu _i}) \in CHAL} \left\{ e(g_2^{\widehat q(k)},g) ^{{\mu _i}}\right\} ^{{\Delta _{i,m}}(0)} = {\prod\limits_{(i,{\mu _i}) \in CHAL} {e({g_2},{g_1})} ^{{\mu _i}}} = {\prod\limits_{(i,{\mu _i}) \in CHAL} \Lambda ^{{\mu _i}}} \end{aligned} (8)

2) 隐私保护: 在数据审计过程中, TPA向CS发送挑战信息CHAL, 并且收到响应回复RESP. 数据信息主要在响应回复中, 但是从式(5)中可以看出, 所有的响应回复都是数据块以及认证标签与随机数聚合的结果. 在整个过程中, TPA只能得到聚合值 $\mu$ $SIG_1^k$ , 根本得不到具体的数据块 ${m_i}$ 的信息. 因此用户的数据隐私得到了很好的保护.

3) 抵抗伪造攻击: 假设用户想要对数据块 ${m_i}$ 进行验证, CS发现该数据存在丢失或者损坏等情况, 于是通过某种手段伪造一个数据块信息 $\widehat {{m_i}}$ , 并且明显可知 $\widehat {{m_i}} \ne {m_i}$ . 当CS接收到TPA发起的挑战时, 返回的响应信息 $RESP$ 中包含有数据块 $\widehat {{m_i}}$ 对应的哈希值 $H(\widehat {{m_i}})$ 以及相应的辅助信息 $\widehat {{\theta _i}}$ 和根节点哈希值的签名 $Sig(H(R))$ . 当TPA接收到响应信息时, 首先利用 $\{ H(\widehat {{m_i}}),\widehat {{\theta _i}}\}$ 产生根节点 $\widehat R$ 的值, 然后验证根节点哈希值的签名 $Sig(H(R))$ . 如果通过验证, 则说明CS伪造的数据块信息 $\widehat {{m_i}}$ 以及相应的哈希值 $H(\widehat {{m_i}})$ 可以通过验证. 则说明CS有能力找到 $\widehat {{m_i}} \ne {m_i}$ , 使得 $H(\widehat {{m_i}}) = H({m_i})$ . 根据哈希函数抗碰撞性: 找出任意两个不同的 $x'$ $x$ , 使得 $H(x') = H(x)$ 是困难的. 则上述过程与哈希函数的抗碰撞性相矛盾, CS伪造数据块信息 $\widehat {{m_i}}$ 不成功. 因此CS不可能以不可忽略的概率通过TPA的验证. 即本方案能够抵抗伪造攻击.

6 功能对比和性能分析

1) 功能对比: 我们在功能上分别与文献[9,13,16]进行对比, 见表1. 在文献[9]的审计方案中, 支持完整的数据动态操作, 但是没有采用基于模糊身份的密码体制. 在文献[13]的方案是基于身份的密码体制, 文献[16]采用的是基于模糊身份的密码体制, 但是两者都只针对静态数据, 不能支持数据动态操作. 而我们的方案采用基于模糊身份的密码体制, 保证数据完整性的同时, 可以支持完整的动态操作.

2)性能分析: 分别从标签生成阶段, 挑战-响应阶段, 验证阶段, 以及动态操作阶段的计算代价进行分析. 其中 ${{ E}_{{G_1}}}$ ${{ E}_{{G_2}}}$ 分别表示在群 ${G_1}$ ${G_2}$ 中的指数运算, P表示双线性对运算, ${{ M}_{{G_1}}}$ ${{ M}_{{G_2}}}$ 分别表示在群 ${G_1}$ ${G_2}$ 中的乘法运算. 从表2中可以看出, 相对于文献[9], 我们的计算代价稍有逊色, 但是在可以接受的范围. 但是文献[9]是基于PKI密码体制, 数据完整性审计协议需要对公钥证书认证管理. 如证书生成、交付、撤销、更新等. 改进方案使用基于模糊身份的密码体制, 在数据标签生成阶段, 用户将原始数据上传至云端时, 简化了云端对用户的证书认证管理. 在审计操作过程中, TPA只需要验证用户的模糊身份集合, 简化了云端对用户证书的认证操作. 在云计算中, 大多数验证人员的计算能力有限, 为了提高效率, 基于模糊身份的数据完整性验证更有优势[19]. 并且, 我们的方案在执行动态操作权限管理上也更加灵活. 相对于文献[16]来说, 我们方案相当于该文献方案中s取1的情况. 因此, 在各个阶段的计算代价相当, 最关键的是本文方案能够支持数据的动态操作, 在云存储的环境下也更加适用.

7 结语

 [1] Siddiqa A, Karim A, Gani A. Big data storage technologies: A survey. Frontiers of Information Technology & Electronic Engineering, 2017, 18(8): 1040-1070. [2] 黄宇, 吴维刚, 赵军平. 分布式云存储: 理论、技术、系统专题前言. 软件学报, 2017, 28(8): 1927-1928. DOI:10.13328/j.cnki.jos.005205 [3] 邓晓鹏, 马自堂, 高敏霞. 一种基于双线性对的云数据完整性验证算法. 计算机应用研究, 2013, 30(7): 2124-2127. DOI:10.3969/j.issn.1001-3695.2013.07.051 [4] Deswarte Y, Quisquater JJ, Saidane A. Remote integrity checking: How to trust files stored on untrusted servers. Proceedings of the 6th Working Conference on Integrity and Internal Control in Information Systems. Lausanne, Switzerland. 2004. 1−11. [5] Ateniese G, Burns R, Curtmola R, et al. Provable data possession at untrusted stores. Proceedings of the 2007 ACM Conference on Computer and Communications Security. Alexandria, VA, USA. 2007. 598−609. [6] Juels A, Kaliski Jr BS. PORs: Proofs of retrievability for large files. Proceedings of the 2007 ACM Conference on Computer and Communications Security. Alexandria, VA, USA. 2007. 584−597. [7] Ateniese G, Di Pietro R, Mancini LV, et al. Scalable and efficient provable data possession. Proceedings of the 4th International Conference on Security and Privacy in Communication Netowrks. Istanbul, Turkey, 2008, 9. [8] Erway CC, Küpçü A, Papamanthou C, et al. Dynamic provable data possession. Proceedings of the 16th ACM Conference on Computer and Communications Security. Chicago, IL, USA. 2009. 213–222. [9] Wang Q, Wang C, Li J, et al. Enabling public verifiability and data dynamics for storage security in cloud computing. Proceedings of the 14th European Symposium on Research in Computer Security. Saint-Malo, France. 2009. 355–370. [10] Fu AM, Yu S, Zhang YQ, et al. NPP: A new privacy-aware public auditing scheme for cloud data sharing with group users. IEEE Transactions on Big Data, 2017. DOI:10.1109/TBDATA.2017.2701347 [11] Yan H, Li JG, Han JG, et al. A novel efficient remote data possession checking protocol in cloud storage. IEEE Transactions on Information Forensics and Security, 2017, 12(1): 78-88. DOI:10.1109/TIFS.2016.2601070 [12] Li JG, Yan H, Zhang YC. Certificateless public integrity checking of group shared data on cloud storage. IEEE Transactions on Services Computing, 2018, 1. DOI:10.1109/TSC.2018.2789893 [13] Yu Y, Zhang YF, Mu Y, et al. Provably secure identity based provable data possession. In: Au MH, Miyaji A, eds. Provable Security. Cham: Springer, 2015. 310–325. [14] Zhang JH, Dong QC. Efficient ID-based public auditing for the outsourced data in cloud storage. Information Sciences, 2016, 343–344: 1-14. DOI:10.1016/j.ins.2015.12.043 [15] Wang F, Xu L, Wang HQ, et al. Identity-based non-repudiable dynamic provable data possession in cloud storage. Computers & Electrical Engineering, 2018, 69: 521-533. [16] 李艳楠. 基于属性的云数据审计协议研究[硕士学位论文]. 成都: 电子科技大学, 2017. [17] Boneh D, Franklin M. Identity-based encryption from the Weil pairing. SIAM Journal on Computing, 2003, 32(3): 586-615. DOI:10.1137/S0097539701398521 [18] Yang PY, Cao ZF, Dong XL. Fuzzy identity based signature with applications to biometric authentication. Computers & Electrical Engineering, 2011, 37(4): 532-540. [19] Wang HQ. Identity-based distributed provable data possession in multicloud storage. IEEE Transactions on Services Computing, 2015, 8(2): 328-340. DOI:10.1109/TSC.2014.1