黃薛蓉,郭榮佐
(四川師范大學 計算機科學學院,四川 成都 610101)
在互聯(lián)網(wǎng)技術(shù)飛速發(fā)展的今天,互聯(lián)網(wǎng)用戶的需求越來越多樣,網(wǎng)絡(luò)邊緣設(shè)備的急劇增加使得云計算負擔加重,網(wǎng)絡(luò)數(shù)據(jù)延遲和邊緣設(shè)備的能耗問題日益凸顯,所以產(chǎn)生了一種新興的計算模式-邊緣計算[1]。在邊緣計算模型下,用戶將自己的數(shù)據(jù)交付至數(shù)據(jù)中心便失去了對數(shù)據(jù)的直接掌握,因此需要提供數(shù)據(jù)完整性審計方案來確保存儲在邊緣或云數(shù)據(jù)中心的用戶數(shù)據(jù)沒有損壞,但移動邊緣設(shè)備的計算能力和存儲能力往往受限,因此在設(shè)計適用于移動邊緣計算的數(shù)據(jù)完整性審計方案時,必須要以低功耗、低延時和低復雜度為目的。
現(xiàn)有研究中,對于數(shù)據(jù)完整性審計研究主要集中在公共審計、批量審計和動態(tài)審計、低復雜度上[2]。文獻[3]與文獻[4]分別提出基于身份的審計協(xié)議和動態(tài)審計協(xié)議。文獻[5,6]中提出支持用戶撤銷的動態(tài)完整性審計方案。文獻[7]為增強數(shù)據(jù)健壯性,利用同態(tài)完整性標記使云服務(wù)器可以從舊的完整性標記重新計算出新的完整性標記。Yu等在文獻[8]中提出基于身份和RSA簽名的支持可變文件塊大小公共審計方案,隨后在隱私保護方面,Yu等[9]利用密鑰同態(tài)加密原語構(gòu)造新的基于身份的審計方案,并對TPA確定零知識隱私的安全模型。文獻[10,11]所提方案中用戶對TPA的誠實性進行了驗證。Li等[12]構(gòu)造可分在線/離線簽名來減少用戶外包數(shù)據(jù)時的計算量。文獻[13,14]采用代理方幫助用戶完成簽名的生成。李悅等[12]提出由TPA為用戶提取私鑰以及生成用戶數(shù)據(jù)的同態(tài)認證器。上述文獻對進一步研究移動邊緣計算模型下的數(shù)據(jù)完整性審計提供了有益的參考,其中文獻[3-10]中的方案用戶計算量較大,文獻[12]中雖只在離線時進行復雜簽名,但用戶仍需消耗大量計算資源以生成離線簽名,文獻[13-15]雖采用代理方來減少用戶計算量,但增加了系統(tǒng)通信開銷。
綜上,提出一種基于身份的代理離線簽名數(shù)據(jù)完整性審計方案(identity-based proxy offline signature PDP,IBPOS-PDP),采用基于身份的密碼體制以減少系統(tǒng)的證書存儲開銷和終端的證書詢問開銷,用戶委托離線簽名代理方(offline signature agent,OSA)為自己生成代理離線簽名,外包數(shù)據(jù)時只需要進行乘數(shù)級運算;用戶或第三審計方利用變色龍哈希函數(shù)的碰撞性檢驗簽名或數(shù)據(jù)的正確性。本文提出的方案與文獻[13]中的IBPS-PDP方案相比,減少了服務(wù)器向代理方提供所有數(shù)據(jù)塊的通信開銷,并且高度保護用戶隱私。
IBPOS-PDP模型采用離線簽名代理方將數(shù)據(jù)簽名過程中的離線簽名外包,節(jié)約了終端用戶的計算資源,使用戶在整個簽名階段只需進行乘數(shù)級的在線運算(驗證簽名的正確性過程除外)。IBPOS-PDP系統(tǒng)模型定義如圖1所示。
圖1 IBPOS-PDP系統(tǒng)模型
該模型包括了終端用戶(User)、邊緣服務(wù)器或云服務(wù)器(edge cloud/cloud storage provider,CSP)、離線簽名代理方(OSA)、第三審計方(third party auditor,TPA)等實體,各實體具體定義如下:
(1)密鑰生成中心(private key generator,PKG):在系統(tǒng)中生成全局參數(shù),幫助用戶提取私鑰的中心服務(wù)器。
(2)終端用戶:擁有原始數(shù)據(jù)的終端設(shè)備,其計算能力或存儲能力可以較低。
(3)邊緣或云服務(wù)器(CSP):一種簡單高效、安全可靠、處理能力可彈性伸縮的分布式存儲系統(tǒng),位于網(wǎng)絡(luò)中心或者靠近用戶的邊緣處。
(4)離線簽名代理方(OSA):幫助用戶進行離線簽名運算的設(shè)備,一般其運算能力高,可靠性強。
(5)第三審計方(TPA):在系統(tǒng)中協(xié)助用戶完成數(shù)據(jù)審計任務(wù)的第三方審計者。
用戶通過向OSA提交代理授權(quán)證書來委托其為自己生成代理離線簽名。用戶外包數(shù)據(jù)時生成在線簽名,將在線簽名、文件數(shù)據(jù)發(fā)送至邊緣或云服務(wù)器,并通知OSA將自己的代理離線簽名發(fā)送至CSP,隨后用戶將自己生成的在線簽名及文件信息發(fā)送至TPA。TPA向CSP提出數(shù)據(jù)完整性驗證挑戰(zhàn),TPA根據(jù)CSP返回的證據(jù)來確定云端數(shù)據(jù)有無損壞。
IBPOS-PDP協(xié)議主要由12個算法組成,協(xié)議使用的主要變量見表1。
每個算法的具體定義如下:
(1)GlobalSetup(1k)→params:該算法由PKG運行,生成系統(tǒng)的全局參數(shù)。PKG輸入安全系數(shù)k來計算全局參數(shù)params,隨機選擇系統(tǒng)主密鑰s。
(2)Extract(params,s,ID)→SID:該算法為系統(tǒng)成員提取私鑰,由PKG運行。PKG輸入(params,s,ID),輸出成員私鑰SID。
(3)CertiGen(ID,w)→W:由用戶執(zhí)行,生成用戶的委托授權(quán)證書。用戶輸入自身ID和授權(quán)文件w,輸出需要提交給OSA的代理授權(quán)證書W。
(4)CertiVeri(ID,W)→Accept/Reject:由OSA運行,驗證用戶的代理授權(quán)證書W的有效性,輸入用戶ID和代理授權(quán)證書W,若證書有效則輸出Accept,否則輸出Reject。
(5)DAInfoGen(SOSA,W)→V′:OSA產(chǎn)生需要返回給用戶的共享密鑰生成輔助信息。OSA輸入私鑰SOSA和證書W,輸出共享密鑰生成輔助信息V′。
表1 IBPOS-PDP協(xié)議變量標識
(6)SharedGen(V′,W)→SD:產(chǎn)生共享密鑰,由用戶執(zhí)行。用戶輸入OSA返回的共享密鑰產(chǎn)生輔助信息V′與證書W,輸出與OSA之間的共享密鑰SD。
(7)OffTagGen(n,k1,k2)→{TiOFF}1≤i≤n:生成用戶的代理離線簽名,由OSA執(zhí)行。OSA輸入用戶提供的參數(shù)n、k1、k2,輸出n個離線簽名{TiOFF}1≤i≤n。
(8)OnTagGen(F,k1,k2)→{TiON}1≤i≤c:生成文件在線簽名,由用戶執(zhí)行。用戶輸入文件F={m1,m2,…,mc},輸出所有文件塊的在線簽名{TiON}1≤i≤c。
(9)DProofGen(chal,T)→{VP1,VP2}:獲取標簽正確性驗證證據(jù),由CSP執(zhí)行。CSP輸入用戶提供的挑戰(zhàn)chal和數(shù)據(jù)標簽T,返回標簽正確性驗證證據(jù){VP1,VP2};
(10)DProofVeri(w,VP1,VP2,F,chal)→Accept/Reject:驗證存儲在CSP處的標簽正確性,由用戶執(zhí)行。用戶輸入授權(quán)文件w、文件F、CSP返回的標簽正確性驗證證據(jù){VP1,VP2}及挑戰(zhàn)chal,驗證簽名階段生成的在線或離線簽名是否正確,若簽名完整且無損則返回Accept,反之則返回Reject。
(11)ProofGen(F,T,chal)→Proof:獲取數(shù)據(jù)完整性驗證證據(jù),由CSP執(zhí)行。CSP輸入文件F、在線離線簽名T以及挑戰(zhàn)chal,返回數(shù)據(jù)驗證證據(jù)Proof。
(12)ProofVeri(Proof,chal)→Accept/Reject:驗證CSP存儲的用戶數(shù)據(jù)有無損壞,由TPA執(zhí)行。TPA輸入挑戰(zhàn)chal以及驗證證據(jù)Proof,驗證CSP存儲的用戶數(shù)據(jù)有無缺失或替換,若CSP存儲的用戶數(shù)據(jù)完好,則返回Accept,反之,則返回Reject。
本方案可在隨機預言機模型下構(gòu)造形式化的敵手進行如下兩個思維實驗(分別定義為挑戰(zhàn)游戲Game1與Game2),將敵手對本文簽名算法的攻擊規(guī)約到解決一個CDH難題上以證明IBPOS-PDP方案中的授權(quán)證書、代理離線簽名以及完整性驗證證據(jù)不可偽造。
定義1 IBPOS-PDP方案中,假設(shè)多項式敵手可以偽造出一個可通過驗證的代理授權(quán)證書或代理離線簽名,則其必須在多項式時間內(nèi)能以一定的概率(不可忽略)攻克一個CDH難題,從而贏得Game1。敵手A1與挑戰(zhàn)者C1之間的游戲Game1描述如下。初始階段:挑戰(zhàn)者C1運行GlobalSetup算法生成全局參數(shù)以及系統(tǒng)主密鑰后,將全局參數(shù)發(fā)送至敵手A1。
(1)詢問階段:敵手A1向挑戰(zhàn)者C1適應性地進行Hash詢問及1.2節(jié)中描述的各種可獲得有效信息的算法詢問(Extract詢問,CertiGen詢問,DAInfoGen詢問,OffTagGen詢問)。
Hash詢問:挑戰(zhàn)者C1誠實地響應敵手A1提出的Hash詢問。
Extract詢問:挑戰(zhàn)者C1在敵手A1提出有關(guān)用戶私鑰的詢問后,運行Extract算法生成私鑰SID。
CertiGen詢問:挑戰(zhàn)者C1在敵手A1提出有關(guān)代理授權(quán)證書的詢問后,運行CertiGen算法生成并返回授權(quán)證書W。
DAInfoGen詢問:挑戰(zhàn)者C1在敵手A1詢問{IDOSA,h}的共享密鑰生成輔助信息V′后,運行DAInfoGen算法利用IDOSA和消息h產(chǎn)生并返回V′。
OffTagGen詢問:敵手A1向挑戰(zhàn)者C1詢問{IDOSA,wi,ri}對應的代理離線簽名,挑戰(zhàn)者C1執(zhí)行OffTagGen算法產(chǎn)生代理離線簽名TiOFF,并將TiOFF返回給敵手A1。
(2)偽造階段:敵手A1可終止向挑戰(zhàn)者C1的詢問,如果敵手偽造輸出滿足下列條件之一的信息,則認為敵手A1在挑戰(zhàn)游戲Game1中勝出。
1)敵手A1輸出用戶U1的偽造證書T*={w*,V*,U*},使得CertiVeri(T*)=Accept,且敵手O1沒有向挑戰(zhàn)者C1發(fā)起用戶U1的Extract詢問,w*對應的CertiGen詢問;
2)敵手A1輸出偽造信息{w*,VP1*,VP2*,F(xiàn)*,chal*,ID,IDOSA},另外TiOFF*代表VP2*對應的代理離線簽名,wi*、ri*為生成TiOFF*時的系數(shù),使得DProofVeri(w*,VP1*,VP2*,F*,chal*)=Accept,且敵手A1沒有向挑戰(zhàn)者C1發(fā)起IDOSA的Extract詢問、w*的CertiGen詢問、(IDOSA,wi*,ri*)的OffTagGen詢問。
定義2 IBPOS-PDP方案中,假設(shè)多項式敵手可以偽造出一個可通過驗證的完整性驗證證據(jù),則其必須在多項式時間內(nèi)能以一定的概率(不可忽略)攻克一個CDH難題,從而贏得Game2。敵手A2與挑戰(zhàn)者C2之間的游戲Game2描述如下:
(1)初始階段:與Game1相同。
(2)詢問階段:敵手A2向挑戰(zhàn)者C2適應性地進行Hash詢問及1.2節(jié)中描述的各種可獲得有效信息的算法詢問,其中Extract、CertiGen、DAInfoGen詢問與Game1相同。
OffTagGen詢問:敵手A2向挑戰(zhàn)者C2詢問{IDOSA,k1,k2,n}對應的代理離線簽名,挑戰(zhàn)者C2運行Off-TagGen算法生成n個離線簽名{TiOFF}1≤i≤n,并將{TiOFF}1≤i≤n返回給敵手A2。
(3)偽造階段:敵手A2可終止向挑戰(zhàn)者C2的詢問,如果敵手偽造輸出滿足下面所述條件的信息,則認為敵手A2在挑戰(zhàn)游戲Game2中勝出。
敵手可偽造輸出Proof*={M*,VP1*,VP2*},另外IDOSA代表離線簽名代理方身份標識,w*為授權(quán)文件,{TiOFF*}1≤i≤c代表VP2*對應的離線簽名集合,k1*、k2*為生成{TiOFF*}1≤i≤c的隨機系數(shù)密鑰,使得ProofVeri(Proof*,chal*)=Accept,且敵手A2沒有向挑戰(zhàn)者C2發(fā)起用戶U2的Extract詢問,w*的CertiGen詢問,(IDOSA,k1*,k2*)的OffTagGen詢問。
(1)全局參數(shù)初始化(GlobalSetup):
PKG選擇系統(tǒng)安全參數(shù)k,隨機生成大素數(shù)P,使得p≥2k,G1是q階循環(huán)加法群,P是G1生成元,G2是q階循環(huán)乘法群,建立下列雙線性映射
e:G1×G1→G2
定義哈希函數(shù):H1:{0,1}*→G1,H2:{0,1}*×G1→Zq,H3:G1→Zq;選擇偽隨機函數(shù)f0,f1,f2;隨機選擇s∈Zq為系統(tǒng)主密鑰,則系統(tǒng)公鑰Ppub=sP;系統(tǒng)公共參數(shù)為{G1,G2,P,e,Ppub,H1,H2,H3,f0,f1,f2}。
OSA選擇隨機數(shù)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)生成代理授權(quán)證書(CertiGen):
用戶A選擇隨機數(shù)r∈Zq,計算U=rP,委托消息為w,計算h=H2(w,U)∈Zq,計算需要發(fā)送至OSA的共享密鑰生成輔助信息V=hSA,將代理授權(quán)證書W={w,V,U}發(fā)送至OSA。
(2)驗證代理授權(quán)證書(CertiVeri):
OSA驗證代理授權(quán)證書的有效性:通過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)成立則授權(quán)證書正確,返回Accept,否則授權(quán)證書錯誤,返回Reject;
(3)生成共享私鑰產(chǎn)生輔助信息(DAInfoGen):
OSA計算V′=hSB,將V′發(fā)送回用戶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發(fā)送生成代理離線簽名的請求{n,k1,k2};
OSA利用偽隨機函數(shù)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個數(shù)據(jù)塊{m1,m2,…,mc}c≤n;
2)計算利用偽隨機函數(shù)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)數(shù)據(jù)發(fā)送:
1)用戶A將在線簽名TiON和文件F={m1,m2,…,mc}發(fā)送至CSP;
2)通知OSA將前c個離線簽名發(fā)送至CSP;
(4)用戶A提出驗證簽名正確性的挑戰(zhàn):
用戶A提出驗證簽名正確性的挑戰(zhàn)cha1={c,k0,{bi}1≤i≤c},{bi}1≤i≤c為隨機生成的待驗證數(shù)據(jù)簽名下標,利用ai=f0k0(i)∈Zq生成隨機系數(shù)集合a={ai}1≤i≤c。
(5)生成簽名驗證數(shù)據(jù)(PKProofGen):
1)CSP利用ai=f0k0(i)∈Zq生成隨機系數(shù)集合a={ai}1≤i≤c;
CSP將proof={VP1,VP2,Qe}發(fā)送至用戶A。
(6)用戶驗證簽名正確性(DProofVeri):
Qe·e(MQD+VP1P,fD)=e(VP2,P)
(4)
等式(4)換算如下
若式(4)成立則數(shù)據(jù)標簽正確,返回Accept,用戶A刪除文件F;否則數(shù)據(jù)標簽錯誤,返回Reject。
(1)生成挑戰(zhàn)信息:
TPA 提出驗證數(shù)據(jù)完整性的挑戰(zhàn)cha1={c,k0,{bi}1≤i≤c},{bi}1≤i≤c為待驗證數(shù)據(jù)塊下標,將cha1發(fā)送至CSP,利用ai=f0k0(i)∈Zq生成隨機系數(shù)a={ai}1≤i≤c。
(2)獲取完整性驗證證據(jù)(ProofGen):
1)CSP利用ai=f0k0(i)∈Zq生成隨機系數(shù)集合a={ai}1≤i≤c;
3)計算數(shù)據(jù)驗證信息M=e(QD,fD)M′;
CSP將Proof={VP2,VP3}發(fā)送至TPA。
(3)驗證數(shù)據(jù)的完整性(ProofVeri):
VP3·e(VP1P,fD)=e(VP2,P)
(5)
等式(5)換算如下
若式(5)成立則CSP存儲的數(shù)據(jù)完整,返回Accept;否則數(shù)據(jù)錯誤,返回Reject。
至此IBPOS-PDP協(xié)議已完成。
定義3 基于身份的代理離線簽名完整性審計協(xié)議IBPOS-PDP在適應性選擇消息和適應性選擇授權(quán)文件攻擊下是安全的。
定理1 敵手偽造代理授權(quán)證書W使得CertiVeri(ID,W)=Accep成立或偽造離線簽名TOFF使得DProofVeri(w,VP1,VP2,F,chal)=Accept成立的概率是可以忽略的。
證明:給定敵手A1一個CDH難題的環(huán)境(P,xP,yP),目的是求出xyP,敵手A1為敵手A0模擬運行環(huán)境,A0的目標是求得IDt對應的私鑰SIDt,從而達到偽造輸出可通過OSA證書驗證的證書或可通過用戶驗證的代理離線簽名這一目的。
(1)初始階段:挑戰(zhàn)者運行全局參數(shù)建立算法建立系統(tǒng)參數(shù),生成加法循環(huán)群G1,乘法循環(huán)群G2,雙線性映射e:G1×G1→G2,選擇隨機數(shù){x,y,x′}∈Zq;挑戰(zhàn)者將{G1,G2,P,e,x′,xP,yP,x′P}發(fā)送給A1。
1)A1為A0維護列表KList、H1List、H2List、H3List、CList、Dlist、DAList、OList,列表長度分別為qK、qH1、qH2、qH3、qD、qDA、qO,所有列表初始狀態(tài)下為空;
2)A1選擇哈希函數(shù)H1、H2,偽隨機函數(shù)f0、f1、f2,系統(tǒng)公鑰Ppub=xP,fD=x′P,隨機選擇t,1≤t≤qH;
3)A1設(shè)置系統(tǒng)公共參數(shù)為{G1,G2,P,e,x′,xP,yP,H1,H2,f0,f1,f2}。
(2)A1設(shè)置一個全局計數(shù)器r并設(shè)定初始值為1,當r=t可得到H1哈希查詢結(jié)果為yP。
H1詢問:敵手A1為A0維護一個列表H1List(ID,h1)來記錄A0的H1查詢。在敵手A0向敵手A1詢問用戶ID對應的H1散列值時,若r=t,則令I(lǐng)Dt=ID,返回H1(ID)=yP∈G1;否則A1查詢H1List中是否存在記錄(ID,·),若存在則返回h1=H1(ID),若不存在則選擇隨機數(shù)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),若不存在則選擇隨機數(shù)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),若不存在則選擇隨機數(shù)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的授權(quán)文件w對應的授權(quán)證書W時,如果ID=IDt,則A1為A0模擬IDt的證書查詢,否則利用ID對應的私鑰生成授權(quán)證書:敵手A1檢查CList是否存在記錄(ID,w,·),若存在則直接返回W=CettiGen(w),若不存在敵手A1則選擇隨機數(shù)r,計算U=rp,再查詢列表H2List,如果可以得到(w,U,·)的查詢結(jié)果,表明發(fā)生了H2散列沖突,此次挑戰(zhàn)詢問失敗,否則A1選擇隨機數(shù)h=H2(w,U)∈G1,查詢KList獲得ID的私鑰SID,計算V=hSID,代理授權(quán)證書W={w,V,U},A1返回授權(quán)證書W,并將(ID,w,V,U)存入CList,將(w,U,h)存入H2List。
DAInfoGen詢問:敵手A1為A0維護列表DAList(IDOSA,h,V′),敵手A0詢問離線簽名代理(IDOSA)對于消息h產(chǎn)生的共享私鑰生成輔助信息V′,如果ID=IDt,則A1模擬IDOSA的共享私鑰生成輔助信息V′,否則敵手A1計算IDOSA對應的共享私鑰產(chǎn)生輔助信息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,·)從而獲得用戶發(fā)送至OSA的共享密鑰生成輔助信息V,在DAList中查詢記錄(IDOSA,h,·)從而獲得OSA發(fā)送至用戶的共享密鑰生成輔助信息V′,計算共享私鑰SD=V*V′,則共享私鑰對應的公鑰QD=SDP,然后計算離線簽名TiOFF=(WiQD+RiP)SOSA,計算并返回離線簽名TiOFF,將記錄(IDOSA,w,wi,ri,TiOFF)存入OList。
(3)偽造階段:敵手A0可終止向挑戰(zhàn)者的詢問,如果敵手A0偽造輸出滿足下列條件之一的信息,則認為敵手A0在挑戰(zhàn)游戲Game1中勝出。
1)敵手A0輸出偽造信息{w*,V*,U*,ID},使得CertiVeri(W*)=Accept(其中W*={w*,V*,U*},ID為用戶身份標識),且(ID,w*,·)?CList,敵手A0沒有發(fā)起用戶ID的密鑰詢問,則敵手A1可以得到一個有效的代理授權(quán)證書W*={w*,V*,U*},其中V*=h*SID,A1通過重置(h*)′=H2(w*,U*)可以得到另一個有效的授權(quán)證書W′*={w*,V′*,U*},其中h*≠(h*)′,則可得到如下關(guān)系
V*=h*SID=xyh*P
(6)
(7)
聯(lián)立式(6)、式(7)可求解xyP=(V*-(V*)′)(h*-(h*)′)-1;
2)敵手A0輸出偽造信息{W*,V′,TiON*,TiOFF*,F(xiàn)*,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沒有發(fā)起IDOSA的密鑰詢問,敵手A1可得到一個有效的離線簽名TiOFF*,并且敵手A1可通過重置(wi*)′、(ri*)′從而偽造一個可通過驗證的代理離線簽名TiOFF′*,其中QD=(V*V′)P,wi*≠(wi*)′,ri*≠(ri*)′,則有如下關(guān)系成立
TiOFF*=(Wi*QD+Ri*P)SOSA=
(Wi*QD+Ri*P)xyP
(8)
(9)
定理2 云服務(wù)器修改存儲的文件數(shù)據(jù)塊,進而偽造完數(shù)據(jù)整性驗證證據(jù)Proof={M,VP1,VP2}使得ProofVeri(Proof,chal)=Accept成立的概率是可以忽略的。
證明:由協(xié)議的正確性可以得到,一個誠實的證明者對于挑戰(zhàn)chal={c,k0,{bi}1≤i≤c}可以輸出數(shù)據(jù)完整性驗證證據(jù)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,所有列表初始狀態(tài)下為空。
OffTagGen詢問:敵手A1為A0維護列表OList(IDOSA,k1,k2,n,{TiOFF}1≤i≤n),敵手A0詢問{IDOSA,ID,k1,k2,n}對應的代理離線簽名,如果ID=IDt,則A1模擬IDOSA的代理離線簽名生成,否則為該詢問生成代理離線簽名。
偽造階段:敵手A0可終止向挑戰(zhàn)者的詢問,如果敵手A0偽造輸出滿足下面所述條件的信息,則認為敵手A0在挑戰(zhàn)游戲Game2中勝出。
A0輸出一個完整性驗證證據(jù)Proof*={M*,VP1*,VP2*}對于挑戰(zhàn)chal={c,k0,{bi}1≤i≤c}可以通過完整性驗證(代理簽名方身份標識為IDOSA,代理授權(quán)文件為w*,代理離線簽名的系數(shù)生成密鑰為k1*,k2*),即ProofVeri(Proof*,chal)=Accept成立,且(IDOSA,w*,·)?CList,(IDOSA,k1*,k2*,·)?OList,敵手A0沒有發(fā)起IDOSA的密鑰詢問,則下式(11)成立
(11)
敵手A1可通過重置ai偽造一個完整性驗證證據(jù)(Proof*)′={(M*)′,(VP1*)′,(VP2*)′},對于挑戰(zhàn)chal={c,k0,{bi}1≤i≤c}可以通過完整性驗證,則有下式成立
(12)
定理3 本方案在代理離線簽名生成過程中不會暴露用戶隱私。
證明:OSA利用TiOFF=(WiQD+RiP)SB生成用戶的代理離線簽名,QD為代理公鑰,則代理離線簽名的生成,不需要文件數(shù)據(jù)塊支持,故IBPOS-PDP方案能保護用戶數(shù)據(jù)的隱私。(證畢)
記tMul為加法群中元素進行一次標量乘法所需時間,tAdd為加法群中元素進行一次加法運算所需時間,tMul′為乘法群中進行一次乘法運算所需時間,tE為在循環(huán)群中進行一次雙線性映射所需時間,tZq為Zq上元素進行一次乘法所需時間,tExp、tH分別表示每次乘法群中冪運算的時間及Hash執(zhí)行所需時間,則本文中所提IBPOS-PDP方案與IBPS-PDP方案[13]、IBDO方案[14]、文獻[15]方案在計算量和通信量方面的對比見表2和表3。
由表2與表3可見,本文提出的IBPOS-PDP方案在網(wǎng)絡(luò)通信量和用戶計算量之間達到了一個較好的平衡,整個方案實施過程中只存在用戶向CSP的文件數(shù)據(jù)傳輸,因而不會造成多余的網(wǎng)絡(luò)通信開銷,且用戶在生成數(shù)據(jù)在線簽名時,只需進行n次Zq上的乘法運算(假如忽略Zq上的加法運算),故本方案極大地減少了用戶外包數(shù)據(jù)時的計算量。
表2 通信量對比
M代表一個文件數(shù)據(jù)塊的通信量,T代表一個文件數(shù)據(jù)塊對應的數(shù)據(jù)標簽的通信量,T1、T2分別代表本方案中一個文件數(shù)據(jù)塊對應的在線、離線簽名,P代表云服務(wù)器返回的驗證證據(jù)通信量。
n是文件數(shù)據(jù)塊總量,s是文件數(shù)據(jù)塊進一步劃分扇區(qū)的數(shù)量,c是用戶或TPA挑戰(zhàn)的文件數(shù)據(jù)塊數(shù)量,l代表文獻[14]中一個用戶ID的數(shù)據(jù)位數(shù),L代表文獻[14]中證書的數(shù)據(jù)位數(shù)。
表3 計算量對比
本文采用GMP大數(shù)運算庫和PBC雙線性運算庫對IBPOS-PDP方案進行實驗仿真,實驗配置為Intel i7-8550處理器,8 GB內(nèi)存,ubuntu 16.04操作系統(tǒng)。實驗中測試的數(shù)據(jù)塊大小為500 KB,IBPS-PDP方案中數(shù)據(jù)塊進一步劃分的扇區(qū)數(shù)為10,所有測試結(jié)果均為20次實驗的平均值。
IBPOS-PDP方案中用戶代理離線簽名的生成不需要文件數(shù)據(jù)塊,所以代理離線簽名可以在外包數(shù)據(jù)之前進行,用戶實際外包數(shù)據(jù)時只需計算輕量級在線簽名。圖2為本文方案在線簽名和IBPS-PDP方案代理簽名在生成時間上的對比,由此可見外包數(shù)據(jù)時在提前生成離線簽名的前提下,本文方案只需用戶進行乘數(shù)級的在線簽名運算,時間耗費是極少的;圖3為本文方案在線離線簽名與IBPS-PDP方案代理簽名在生成時間上的對比;圖4為本文方案第三驗證方與IBPS-PDP方案第三驗證方在完整性驗證階段的時間對比。
圖2 在線簽名與代理簽名時間對比
圖3 在線離線簽名與代理簽名時間對比
圖4 第三驗證方驗證時間對比
本文提出的IBPOS-PDP方案旨在降低用戶計算量和系統(tǒng)通信開銷,采用基于身份的密碼體制來減少公鑰服務(wù)器的存儲及終端設(shè)備的證書詢問,將復雜的離線簽名運算交由代理方執(zhí)行,外包數(shù)據(jù)時僅需執(zhí)行乘數(shù)級的在線運算,不存在多余的網(wǎng)絡(luò)通信開銷。通過實驗證明了IBPOS-PDP方案的可行性,在實驗中對比IBPS-PDP方案,證明本方案在數(shù)據(jù)簽名和數(shù)據(jù)驗證上具有較低的時間花費,適用于移動邊緣計算中資源受限的設(shè)備,但本方案尚未完成數(shù)據(jù)動態(tài)審計操作的設(shè)計,下一步將研究支持云端數(shù)據(jù)修改的動態(tài)完整性審計方案,結(jié)合邊緣計算模型,構(gòu)造支持多云審計的低延時和低消耗的完整性審計方案。