黄薛蓉,郭荣佐
(四川师范大学 计算机科学学院,四川 成都 610101)
在互联网技术飞速发展的今天,互联网用户的需求越来越多样,网络边缘设备的急剧增加使得云计算负担加重,网络数据延迟和边缘设备的能耗问题日益凸显,所以产生了一种新兴的计算模式-边缘计算[1]。在边缘计算模型下,用户将自己的数据交付至数据中心便失去了对数据的直接掌握,因此需要提供数据完整性审计方案来确保存储在边缘或云数据中心的用户数据没有损坏,但移动边缘设备的计算能力和存储能力往往受限,因此在设计适用于移动边缘计算的数据完整性审计方案时,必须要以低功耗、低延时和低复杂度为目的。
现有研究中,对于数据完整性审计研究主要集中在公共审计、批量审计和动态审计、低复杂度上[2]。文献[3]与文献[4]分别提出基于身份的审计协议和动态审计协议。文献[5,6]中提出支持用户撤销的动态完整性审计方案。文献[7]为增强数据健壮性,利用同态完整性标记使云服务器可以从旧的完整性标记重新计算出新的完整性标记。Yu等在文献[8]中提出基于身份和RSA签名的支持可变文件块大小公共审计方案,随后在隐私保护方面,Yu等[9]利用密钥同态加密原语构造新的基于身份的审计方案,并对TPA确定零知识隐私的安全模型。文献[10,11]所提方案中用户对TPA的诚实性进行了验证。Li等[12]构造可分在线/离线签名来减少用户外包数据时的计算量。文献[13,14]采用代理方帮助用户完成签名的生成。李悦等[12]提出由TPA为用户提取私钥以及生成用户数据的同态认证器。上述文献对进一步研究移动边缘计算模型下的数据完整性审计提供了有益的参考,其中文献[3-10]中的方案用户计算量较大,文献[12]中虽只在离线时进行复杂签名,但用户仍需消耗大量计算资源以生成离线签名,文献[13-15]虽采用代理方来减少用户计算量,但增加了系统通信开销。
综上,提出一种基于身份的代理离线签名数据完整性审计方案(identity-based proxy offline signature PDP,IBPOS-PDP),采用基于身份的密码体制以减少系统的证书存储开销和终端的证书询问开销,用户委托离线签名代理方(offline signature agent,OSA)为自己生成代理离线签名,外包数据时只需要进行乘数级运算;用户或第三审计方利用变色龙哈希函数的碰撞性检验签名或数据的正确性。本文提出的方案与文献[13]中的IBPS-PDP方案相比,减少了服务器向代理方提供所有数据块的通信开销,并且高度保护用户隐私。
IBPOS-PDP模型采用离线签名代理方将数据签名过程中的离线签名外包,节约了终端用户的计算资源,使用户在整个签名阶段只需进行乘数级的在线运算(验证签名的正确性过程除外)。IBPOS-PDP系统模型定义如图1所示。
图1 IBPOS-PDP系统模型
该模型包括了终端用户(User)、边缘服务器或云服务器(edge cloud/cloud storage provider,CSP)、离线签名代理方(OSA)、第三审计方(third party auditor,TPA)等实体,各实体具体定义如下:
(1)密钥生成中心(private key generator,PKG):在系统中生成全局参数,帮助用户提取私钥的中心服务器。
(2)终端用户:拥有原始数据的终端设备,其计算能力或存储能力可以较低。
(3)边缘或云服务器(CSP):一种简单高效、安全可靠、处理能力可弹性伸缩的分布式存储系统,位于网络中心或者靠近用户的边缘处。
(4)离线签名代理方(OSA):帮助用户进行离线签名运算的设备,一般其运算能力高,可靠性强。
(5)第三审计方(TPA):在系统中协助用户完成数据审计任务的第三方审计者。
用户通过向OSA提交代理授权证书来委托其为自己生成代理离线签名。用户外包数据时生成在线签名,将在线签名、文件数据发送至边缘或云服务器,并通知OSA将自己的代理离线签名发送至CSP,随后用户将自己生成的在线签名及文件信息发送至TPA。TPA向CSP提出数据完整性验证挑战,TPA根据CSP返回的证据来确定云端数据有无损坏。
IBPOS-PDP协议主要由12个算法组成,协议使用的主要变量见表1。
每个算法的具体定义如下:
(1)GlobalSetup(1k)→params:该算法由PKG运行,生成系统的全局参数。PKG输入安全系数k来计算全局参数params,随机选择系统主密钥s。
(2)Extract(params,s,ID)→SID:该算法为系统成员提取私钥,由PKG运行。PKG输入(params,s,ID),输出成员私钥SID。
(3)CertiGen(ID,w)→W:由用户执行,生成用户的委托授权证书。用户输入自身ID和授权文件w,输出需要提交给OSA的代理授权证书W。
(4)CertiVeri(ID,W)→Accept/Reject:由OSA运行,验证用户的代理授权证书W的有效性,输入用户ID和代理授权证书W,若证书有效则输出Accept,否则输出Reject。
(5)DAInfoGen(SOSA,W)→V′:OSA产生需要返回给用户的共享密钥生成辅助信息。OSA输入私钥SOSA和证书W,输出共享密钥生成辅助信息V′。
表1 IBPOS-PDP协议变量标识
(6)SharedGen(V′,W)→SD:产生共享密钥,由用户执行。用户输入OSA返回的共享密钥产生辅助信息V′与证书W,输出与OSA之间的共享密钥SD。
(7)OffTagGen(n,k1,k2)→{TiOFF}1≤i≤n:生成用户的代理离线签名,由OSA执行。OSA输入用户提供的参数n、k1、k2,输出n个离线签名{TiOFF}1≤i≤n。
(8)OnTagGen(F,k1,k2)→{TiON}1≤i≤c:生成文件在线签名,由用户执行。用户输入文件F={m1,m2,…,mc},输出所有文件块的在线签名{TiON}1≤i≤c。
(9)DProofGen(chal,T)→{VP1,VP2}:获取标签正确性验证证据,由CSP执行。CSP输入用户提供的挑战chal和数据标签T,返回标签正确性验证证据{VP1,VP2};
(10)DProofVeri(w,VP1,VP2,F,chal)→Accept/Reject:验证存储在CSP处的标签正确性,由用户执行。用户输入授权文件w、文件F、CSP返回的标签正确性验证证据{VP1,VP2}及挑战chal,验证签名阶段生成的在线或离线签名是否正确,若签名完整且无损则返回Accept,反之则返回Reject。
(11)ProofGen(F,T,chal)→Proof:获取数据完整性验证证据,由CSP执行。CSP输入文件F、在线离线签名T以及挑战chal,返回数据验证证据Proof。
(12)ProofVeri(Proof,chal)→Accept/Reject:验证CSP存储的用户数据有无损坏,由TPA执行。TPA输入挑战chal以及验证证据Proof,验证CSP存储的用户数据有无缺失或替换,若CSP存储的用户数据完好,则返回Accept,反之,则返回Reject。
本方案可在随机预言机模型下构造形式化的敌手进行如下两个思维实验(分别定义为挑战游戏Game1与Game2),将敌手对本文签名算法的攻击规约到解决一个CDH难题上以证明IBPOS-PDP方案中的授权证书、代理离线签名以及完整性验证证据不可伪造。
定义1 IBPOS-PDP方案中,假设多项式敌手可以伪造出一个可通过验证的代理授权证书或代理离线签名,则其必须在多项式时间内能以一定的概率(不可忽略)攻克一个CDH难题,从而赢得Game1。敌手A1与挑战者C1之间的游戏Game1描述如下。初始阶段:挑战者C1运行GlobalSetup算法生成全局参数以及系统主密钥后,将全局参数发送至敌手A1。
(1)询问阶段:敌手A1向挑战者C1适应性地进行Hash询问及1.2节中描述的各种可获得有效信息的算法询问(Extract询问,CertiGen询问,DAInfoGen询问,OffTagGen询问)。
Hash询问:挑战者C1诚实地响应敌手A1提出的Hash询问。
Extract询问:挑战者C1在敌手A1提出有关用户私钥的询问后,运行Extract算法生成私钥SID。
CertiGen询问:挑战者C1在敌手A1提出有关代理授权证书的询问后,运行CertiGen算法生成并返回授权证书W。
DAInfoGen询问:挑战者C1在敌手A1询问{IDOSA,h}的共享密钥生成辅助信息V′后,运行DAInfoGen算法利用IDOSA和消息h产生并返回V′。
OffTagGen询问:敌手A1向挑战者C1询问{IDOSA,wi,ri}对应的代理离线签名,挑战者C1执行OffTagGen算法产生代理离线签名TiOFF,并将TiOFF返回给敌手A1。
(2)伪造阶段:敌手A1可终止向挑战者C1的询问,如果敌手伪造输出满足下列条件之一的信息,则认为敌手A1在挑战游戏Game1中胜出。
1)敌手A1输出用户U1的伪造证书T*={w*,V*,U*},使得CertiVeri(T*)=Accept,且敌手O1没有向挑战者C1发起用户U1的Extract询问,w*对应的CertiGen询问;
2)敌手A1输出伪造信息{w*,VP1*,VP2*,F*,chal*,ID,IDOSA},另外TiOFF*代表VP2*对应的代理离线签名,wi*、ri*为生成TiOFF*时的系数,使得DProofVeri(w*,VP1*,VP2*,F*,chal*)=Accept,且敌手A1没有向挑战者C1发起IDOSA的Extract询问、w*的CertiGen询问、(IDOSA,wi*,ri*)的OffTagGen询问。
定义2 IBPOS-PDP方案中,假设多项式敌手可以伪造出一个可通过验证的完整性验证证据,则其必须在多项式时间内能以一定的概率(不可忽略)攻克一个CDH难题,从而赢得Game2。敌手A2与挑战者C2之间的游戏Game2描述如下:
(1)初始阶段:与Game1相同。
(2)询问阶段:敌手A2向挑战者C2适应性地进行Hash询问及1.2节中描述的各种可获得有效信息的算法询问,其中Extract、CertiGen、DAInfoGen询问与Game1相同。
OffTagGen询问:敌手A2向挑战者C2询问{IDOSA,k1,k2,n}对应的代理离线签名,挑战者C2运行Off-TagGen算法生成n个离线签名{TiOFF}1≤i≤n,并将{TiOFF}1≤i≤n返回给敌手A2。
(3)伪造阶段:敌手A2可终止向挑战者C2的询问,如果敌手伪造输出满足下面所述条件的信息,则认为敌手A2在挑战游戏Game2中胜出。
敌手可伪造输出Proof*={M*,VP1*,VP2*},另外IDOSA代表离线签名代理方身份标识,w*为授权文件,{TiOFF*}1≤i≤c代表VP2*对应的离线签名集合,k1*、k2*为生成{TiOFF*}1≤i≤c的随机系数密钥,使得ProofVeri(Proof*,chal*)=Accept,且敌手A2没有向挑战者C2发起用户U2的Extract询问,w*的CertiGen询问,(IDOSA,k1*,k2*)的OffTagGen询问。
(1)全局参数初始化(GlobalSetup):
PKG选择系统安全参数k,随机生成大素数P,使得p≥2k,G1是q阶循环加法群,P是G1生成元,G2是q阶循环乘法群,建立下列双线性映射
e:G1×G1→G2
定义哈希函数:H1:{0,1}*→G1,H2:{0,1}*×G1→Zq,H3:G1→Zq;选择伪随机函数f0,f1,f2;随机选择s∈Zq为系统主密钥,则系统公钥Ppub=sP;系统公共参数为{G1,G2,P,e,Ppub,H1,H2,H3,f0,f1,f2}。
OSA选择随机数x∈Zq,计算fD=xP,公布fD。
(2)提取用户私钥(Extract):
PKG计算QID=H1(ID)∈G1为用户公钥,SID=sH1(ID)∈G1为用户私钥;用户验证式(1)是否成立
e(SID,P)=e(QID,Ppub)
(1)
若式(1)成立则私钥正确,否则私钥错误。
(1)生成代理授权证书(CertiGen):
用户A选择随机数r∈Zq,计算U=rP,委托消息为w,计算h=H2(w,U)∈Zq,计算需要发送至OSA的共享密钥生成辅助信息V=hSA,将代理授权证书W={w,V,U}发送至OSA。
(2)验证代理授权证书(CertiVeri):
OSA验证代理授权证书的有效性:通过w、U计算h=H2(w,U),验证式(2)是否成立
e(hQA,Ppub)=e(V,P)
(2)
等式(2)换算过程如下
e(hQA,Ppub)=e(hQA,P)s=
e(shQA,P)=e(hSA,P)=e(V,P)
若式(2)成立则授权证书正确,返回Accept,否则授权证书错误,返回Reject;
(3)生成共享私钥产生辅助信息(DAInfoGen):
OSA计算V′=hSB,将V′发送回用户A。
(4)生成共享私钥(SharedGen):
用户A验证下列式(3)是否成立,若等式成立则计算共享私钥SD=H3(V*V′)∈Zq,其对应公钥QD=SDP∈G1
e(hQB,Ppub)=e(V′,P)
(3)
(1)生成代理离线签名(OffTagGen):
1)用户A向OSA发送生成代理离线签名的请求{n,k1,k2};
OSA利用伪随机函数f1、f2计算C1={(wi,ri)wi=f1k1(i),ri=f2k2(i),1≤i≤n},C2={(Wi,Ri)|Wi=xwi,Ri=xri,1≤i≤n};
2)OSA计算离线签名TiOFF=WiQD+RiP+SB,存储n个离线签名{TiOFF}1≤i≤n。
(2)生成在线签名(OnTagGen):
1)用户A将文件分为c个数据块{m1,m2,…,mc}c≤n;
2)计算利用伪随机函数f1,f2计算wi=f1k1(i)∈Zq,ri=f2k2(i)∈Zq,其中1≤i≤c;
3)计算在线签名TON={TiON|TiON=(wi-mi)SD+ri,1≤i≤n}。
(3)数据发送:
1)用户A将在线签名TiON和文件F={m1,m2,…,mc}发送至CSP;
2)通知OSA将前c个离线签名发送至CSP;
(4)用户A提出验证签名正确性的挑战:
用户A提出验证签名正确性的挑战cha1={c,k0,{bi}1≤i≤c},{bi}1≤i≤c为随机生成的待验证数据签名下标,利用ai=f0k0(i)∈Zq生成随机系数集合a={ai}1≤i≤c。
(5)生成签名验证数据(PKProofGen):
1)CSP利用ai=f0k0(i)∈Zq生成随机系数集合a={ai}1≤i≤c;
CSP将proof={VP1,VP2,Qe}发送至用户A。
(6)用户验证签名正确性(DProofVeri):
Qe·e(MQD+VP1P,fD)=e(VP2,P)
(4)
等式(4)换算如下
若式(4)成立则数据标签正确,返回Accept,用户A删除文件F;否则数据标签错误,返回Reject。
(1)生成挑战信息:
TPA 提出验证数据完整性的挑战cha1={c,k0,{bi}1≤i≤c},{bi}1≤i≤c为待验证数据块下标,将cha1发送至CSP,利用ai=f0k0(i)∈Zq生成随机系数a={ai}1≤i≤c。
(2)获取完整性验证证据(ProofGen):
1)CSP利用ai=f0k0(i)∈Zq生成随机系数集合a={ai}1≤i≤c;
3)计算数据验证信息M=e(QD,fD)M′;
CSP将Proof={VP2,VP3}发送至TPA。
(3)验证数据的完整性(ProofVeri):
VP3·e(VP1P,fD)=e(VP2,P)
(5)
等式(5)换算如下
若式(5)成立则CSP存储的数据完整,返回Accept;否则数据错误,返回Reject。
至此IBPOS-PDP协议已完成。
定义3 基于身份的代理离线签名完整性审计协议IBPOS-PDP在适应性选择消息和适应性选择授权文件攻击下是安全的。
定理1 敌手伪造代理授权证书W使得CertiVeri(ID,W)=Accep成立或伪造离线签名TOFF使得DProofVeri(w,VP1,VP2,F,chal)=Accept成立的概率是可以忽略的。
证明:给定敌手A1一个CDH难题的环境(P,xP,yP),目的是求出xyP,敌手A1为敌手A0模拟运行环境,A0的目标是求得IDt对应的私钥SIDt,从而达到伪造输出可通过OSA证书验证的证书或可通过用户验证的代理离线签名这一目的。
(1)初始阶段:挑战者运行全局参数建立算法建立系统参数,生成加法循环群G1,乘法循环群G2,双线性映射e:G1×G1→G2,选择随机数{x,y,x′}∈Zq;挑战者将{G1,G2,P,e,x′,xP,yP,x′P}发送给A1。
1)A1为A0维护列表KList、H1List、H2List、H3List、CList、Dlist、DAList、OList,列表长度分别为qK、qH1、qH2、qH3、qD、qDA、qO,所有列表初始状态下为空;
2)A1选择哈希函数H1、H2,伪随机函数f0、f1、f2,系统公钥Ppub=xP,fD=x′P,随机选择t,1≤t≤qH;
3)A1设置系统公共参数为{G1,G2,P,e,x′,xP,yP,H1,H2,f0,f1,f2}。
(2)A1设置一个全局计数器r并设定初始值为1,当r=t可得到H1哈希查询结果为yP。
H1询问:敌手A1为A0维护一个列表H1List(ID,h1)来记录A0的H1查询。在敌手A0向敌手A1询问用户ID对应的H1散列值时,若r=t,则令IDt=ID,返回H1(ID)=yP∈G1;否则A1查询H1List中是否存在记录(ID,·),若存在则返回h1=H1(ID),若不存在则选择随机数h1∈Zq,返回H1(ID)=h1P,并将(ID,h1)存入H1List。
H2询问:敌手A1为A0维护一个列表H2List(w,U,h2),敌手A0询问{w,U}对应的H2散列值,A1检查H2List中是否存在记录(w,U,·),若存在则直接返回h2=H2(w,U),若不存在则选择随机数b∈G1,使h2=H2(w,U)=b,A1返回h2,并将记录(w,U,h2)存入H2List。
H3询问:敌手A1为A0维护一个列表H3List(S)来记录A0的H3查询。A1检查H3List中是否存在(S,·),若存在则直接返回h3=H3(S),若不存在则选择随机数h3∈Zq,返回h3,将记录(S,h3)存入H3List。
Extract询问:敌手A1为A0维护一个列表KList(ID,SID)来记录A0对用户密钥的查询。如果ID=IDt,则密钥查询失败,否则运行Extract算法生成用户私钥:A1查询KList中是否存在记录(ID,·),若存在则直接返回SID=Extract(ID),若不存在则查询h1=H1List(ID),计算SID=h1Ppub=h1xP,将SID返回给A0,并将(ID,SID)存入KList。
CertiGen询问:敌手A1为A0维护一个列表CList(ID,w,V,U)来记录A0的证书查询。当A0询问ID的授权文件w对应的授权证书W时,如果ID=IDt,则A1为A0模拟IDt的证书查询,否则利用ID对应的私钥生成授权证书:敌手A1检查CList是否存在记录(ID,w,·),若存在则直接返回W=CettiGen(w),若不存在敌手A1则选择随机数r,计算U=rp,再查询列表H2List,如果可以得到(w,U,·)的查询结果,表明发生了H2散列冲突,此次挑战询问失败,否则A1选择随机数h=H2(w,U)∈G1,查询KList获得ID的私钥SID,计算V=hSID,代理授权证书W={w,V,U},A1返回授权证书W,并将(ID,w,V,U)存入CList,将(w,U,h)存入H2List。
DAInfoGen询问:敌手A1为A0维护列表DAList(IDOSA,h,V′),敌手A0询问离线签名代理(IDOSA)对于消息h产生的共享私钥生成辅助信息V′,如果ID=IDt,则A1模拟IDOSA的共享私钥生成辅助信息V′,否则敌手A1计算IDOSA对应的共享私钥产生辅助信息V′:敌手A检查DAList是否存在记录(IDOSA,h,·),若存在则直接返回V′=DAInfoGen(h),若不存在记录则敌手A通过查询KList而获取IDOSA的私钥SOSA,计算V′=hSOSA,返回共享私钥生成辅助信息V′,并将(IDOSA,h,V′)存入DAList。
OffTagGen询问:敌手A1为A0维护列表OList(IDOSA,w,wi,ri,TiOFF),敌手A0询问{IDOSA,ID,w,wi,ri}对应的代理离线签名,如果ID=IDt,则A1模拟IDOSA的代理离线签名生成,否则A1利用IDOSA的私钥为该询问生成代理离线签名:敌手A1检查OList是否存在记录(IDOSA,w,wi,ri,·),若存在则直接返回TiOFF,若不存在A1则在KList中查询IDOSA的私钥SOSA,在CList中查询记录(ID,w,·)从而获得用户发送至OSA的共享密钥生成辅助信息V,在DAList中查询记录(IDOSA,h,·)从而获得OSA发送至用户的共享密钥生成辅助信息V′,计算共享私钥SD=V*V′,则共享私钥对应的公钥QD=SDP,然后计算离线签名TiOFF=(WiQD+RiP)SOSA,计算并返回离线签名TiOFF,将记录(IDOSA,w,wi,ri,TiOFF)存入OList。
(3)伪造阶段:敌手A0可终止向挑战者的询问,如果敌手A0伪造输出满足下列条件之一的信息,则认为敌手A0在挑战游戏Game1中胜出。
1)敌手A0输出伪造信息{w*,V*,U*,ID},使得CertiVeri(W*)=Accept(其中W*={w*,V*,U*},ID为用户身份标识),且(ID,w*,·)∉CList,敌手A0没有发起用户ID的密钥询问,则敌手A1可以得到一个有效的代理授权证书W*={w*,V*,U*},其中V*=h*SID,A1通过重置(h*)′=H2(w*,U*)可以得到另一个有效的授权证书W′*={w*,V′*,U*},其中h*≠(h*)′,则可得到如下关系
V*=h*SID=xyh*P
(6)
(7)
联立式(6)、式(7)可求解xyP=(V*-(V*)′)(h*-(h*)′)-1;
2)敌手A0输出伪造信息{W*,V′,TiON*,TiOFF*,F*,ID,IDOSA,wi*,ri*},其中W*={w*,V*,U*},ID、IDOSA分别代表用户和OSA的身份标识,使得DProofVeri(w*,TiON*,TiOFF*,F*,ID,IDOSA)=Accept,且(IDOSA,w*,·)∉CList,(IDOSA,wi*,ri*)∉OList,敌手A0没有发起IDOSA的密钥询问,敌手A1可得到一个有效的离线签名TiOFF*,并且敌手A1可通过重置(wi*)′、(ri*)′从而伪造一个可通过验证的代理离线签名TiOFF′*,其中QD=(V*V′)P,wi*≠(wi*)′,ri*≠(ri*)′,则有如下关系成立
TiOFF*=(Wi*QD+Ri*P)SOSA=
(Wi*QD+Ri*P)xyP
(8)
(9)
定理2 云服务器修改存储的文件数据块,进而伪造完数据整性验证证据Proof={M,VP1,VP2}使得ProofVeri(Proof,chal)=Accept成立的概率是可以忽略的。
证明:由协议的正确性可以得到,一个诚实的证明者对于挑战chal={c,k0,{bi}1≤i≤c}可以输出数据完整性验证证据Proof={M,VP1,VP2}使得式(10)成立
(10)
Game2与Game1的不同之处在于敌手A0可以一次查询n个代理离线签名,A1为A0维护列表KList、H1List、H2List、H2List、CList、Dlist、DAList、OList,列表长度分别为qK、qH1、qH2、qH3、qC、qD、qDA、qO,所有列表初始状态下为空。
OffTagGen询问:敌手A1为A0维护列表OList(IDOSA,k1,k2,n,{TiOFF}1≤i≤n),敌手A0询问{IDOSA,ID,k1,k2,n}对应的代理离线签名,如果ID=IDt,则A1模拟IDOSA的代理离线签名生成,否则为该询问生成代理离线签名。
伪造阶段:敌手A0可终止向挑战者的询问,如果敌手A0伪造输出满足下面所述条件的信息,则认为敌手A0在挑战游戏Game2中胜出。
A0输出一个完整性验证证据Proof*={M*,VP1*,VP2*}对于挑战chal={c,k0,{bi}1≤i≤c}可以通过完整性验证(代理签名方身份标识为IDOSA,代理授权文件为w*,代理离线签名的系数生成密钥为k1*,k2*),即ProofVeri(Proof*,chal)=Accept成立,且(IDOSA,w*,·)∉CList,(IDOSA,k1*,k2*,·)∉OList,敌手A0没有发起IDOSA的密钥询问,则下式(11)成立
(11)
敌手A1可通过重置ai伪造一个完整性验证证据(Proof*)′={(M*)′,(VP1*)′,(VP2*)′},对于挑战chal={c,k0,{bi}1≤i≤c}可以通过完整性验证,则有下式成立
(12)
定理3 本方案在代理离线签名生成过程中不会暴露用户隐私。
证明:OSA利用TiOFF=(WiQD+RiP)SB生成用户的代理离线签名,QD为代理公钥,则代理离线签名的生成,不需要文件数据块支持,故IBPOS-PDP方案能保护用户数据的隐私。(证毕)
记tMul为加法群中元素进行一次标量乘法所需时间,tAdd为加法群中元素进行一次加法运算所需时间,tMul′为乘法群中进行一次乘法运算所需时间,tE为在循环群中进行一次双线性映射所需时间,tZq为Zq上元素进行一次乘法所需时间,tExp、tH分别表示每次乘法群中幂运算的时间及Hash执行所需时间,则本文中所提IBPOS-PDP方案与IBPS-PDP方案[13]、IBDO方案[14]、文献[15]方案在计算量和通信量方面的对比见表2和表3。
由表2与表3可见,本文提出的IBPOS-PDP方案在网络通信量和用户计算量之间达到了一个较好的平衡,整个方案实施过程中只存在用户向CSP的文件数据传输,因而不会造成多余的网络通信开销,且用户在生成数据在线签名时,只需进行n次Zq上的乘法运算(假如忽略Zq上的加法运算),故本方案极大地减少了用户外包数据时的计算量。
表2 通信量对比
M代表一个文件数据块的通信量,T代表一个文件数据块对应的数据标签的通信量,T1、T2分别代表本方案中一个文件数据块对应的在线、离线签名,P代表云服务器返回的验证证据通信量。
n是文件数据块总量,s是文件数据块进一步划分扇区的数量,c是用户或TPA挑战的文件数据块数量,l代表文献[14]中一个用户ID的数据位数,L代表文献[14]中证书的数据位数。
表3 计算量对比
本文采用GMP大数运算库和PBC双线性运算库对IBPOS-PDP方案进行实验仿真,实验配置为Intel i7-8550处理器,8 GB内存,ubuntu 16.04操作系统。实验中测试的数据块大小为500 KB,IBPS-PDP方案中数据块进一步划分的扇区数为10,所有测试结果均为20次实验的平均值。
IBPOS-PDP方案中用户代理离线签名的生成不需要文件数据块,所以代理离线签名可以在外包数据之前进行,用户实际外包数据时只需计算轻量级在线签名。图2为本文方案在线签名和IBPS-PDP方案代理签名在生成时间上的对比,由此可见外包数据时在提前生成离线签名的前提下,本文方案只需用户进行乘数级的在线签名运算,时间耗费是极少的;图3为本文方案在线离线签名与IBPS-PDP方案代理签名在生成时间上的对比;图4为本文方案第三验证方与IBPS-PDP方案第三验证方在完整性验证阶段的时间对比。
图2 在线签名与代理签名时间对比
图3 在线离线签名与代理签名时间对比
图4 第三验证方验证时间对比
本文提出的IBPOS-PDP方案旨在降低用户计算量和系统通信开销,采用基于身份的密码体制来减少公钥服务器的存储及终端设备的证书询问,将复杂的离线签名运算交由代理方执行,外包数据时仅需执行乘数级的在线运算,不存在多余的网络通信开销。通过实验证明了IBPOS-PDP方案的可行性,在实验中对比IBPS-PDP方案,证明本方案在数据签名和数据验证上具有较低的时间花费,适用于移动边缘计算中资源受限的设备,但本方案尚未完成数据动态审计操作的设计,下一步将研究支持云端数据修改的动态完整性审计方案,结合边缘计算模型,构造支持多云审计的低延时和低消耗的完整性审计方案。