閆璽璽, 何廣輝, 于金霞
河南理工大學計算機科學與技術(shù)學院, 焦作454000
隨著云計算技術(shù)的出現(xiàn)與快速發(fā)展, 其強大的計算資源與存儲性能越來越受到互聯(lián)網(wǎng)各界領(lǐng)域的青睞, 也因此產(chǎn)生一種新的計算模式: 外包計算[1]. 它允許計算與存儲資源匱乏的終端用戶將一些耗時的計算外包給云服務(wù)器進行處理, 通過云計算按需付費這一特點, 用戶便可享受到云端提供的各類信息服務(wù).但由于云服務(wù)器并非是完全可信的, 數(shù)據(jù)持有者將要計算的任務(wù)上傳給云端時, 同時也失去了對數(shù)據(jù)的實際控制, 如何保護數(shù)據(jù)中包含的私密信息, 是當前研究的安全問題之一. Sahai 與Waters 提出了一種新的公鑰密碼系統(tǒng), 屬性基加密(attribute-based encryption, ABE)[2], 數(shù)據(jù)擁有者通過訪問策略可以有效地實現(xiàn)在云計算系統(tǒng)中數(shù)據(jù)的細粒度訪問控制. 依照訪問策略位置不同可以分為兩類: 密文策略屬性基加密(ciphertext-policy ABE, CP-ABE)[3]與密鑰策略屬性基加密(key-policy ABE, KP-ABE)[4]. 傳統(tǒng)的屬性基加密, 其計算代價會隨著屬性數(shù)量的增加和訪問策略的復雜度呈線性遞增的關(guān)系, 無疑給設(shè)備終端帶來龐大的計算負擔, 學者們也提出了各種屬性基外包方案, 既能通過外包給云服務(wù)器來減少開銷, 也能保護數(shù)據(jù)的隱私性. 例如在電子醫(yī)療系統(tǒng)中, 病人的健康紀錄通常被外包在第三方機構(gòu), 病人的敏感信息得不到保障, 為了解決這種情況, Liu 等人設(shè)計了一種離線/在線的屬性基簽名方案[5], 通過引入離散對數(shù)的陷門哈希函數(shù), 有效地實現(xiàn)了醫(yī)療文件的私密性, 簽名者的匿名性與不可偽造性; 另外, 提出一種密文策略屬性基簽密方案[6], 簽名的同時又滿足加密, 可以有效地保障數(shù)據(jù)隱私的機密性與不可偽造性; 隨后通過使用門限秘密共享與訪問樹結(jié)構(gòu), 提出了兩種不同的RSS (redactable signature scheme)[7]方案來實現(xiàn)對醫(yī)療文件的完整性與對數(shù)據(jù)靈活的訪問控制. 但因為用戶私鑰與屬性相關(guān), 存在多個用戶的屬性私鑰相同的情況, Jiang 等人[8]提出了一種在霧計算中防止密鑰委托濫用的密文策略屬性基加密方案, 方案基于“與” 門訪問結(jié)構(gòu)與雙線性群的性質(zhì)進行構(gòu)造, 同時對泄露的密鑰具備可追蹤功能; 針對屬性撤銷問題, Liu等人[9]提出了一種基于時間的直接撤銷的CP-ABE 方案, 該方案通過將撤銷列表嵌入到密文中, 撤銷列表中的密鑰都存在一個有效期, 同時對非撤銷用戶給出了一種密鑰更新算法, 以此來實現(xiàn)更加靈活的訪問控制功能.
由于在外包計算過程中, 云服務(wù)器可能因為“偷懶” 行為, 或受到敵手惡意攻擊, 極大地影響計算結(jié)果的準確性, 因此如何設(shè)計一種有效的驗證算法是數(shù)據(jù)外包過程中另一個安全挑戰(zhàn). 相關(guān)學者也將熱點放在外包計算過程中如何由云服務(wù)器執(zhí)行復雜的計算操作以及如何對返回計算的結(jié)果進行驗證. Green 等人[10]首次在隨機預言機模型下所提出的屬性基加密外包方案, 該方案將解密操作交由解密服務(wù)器執(zhí)行,通過將密文部分解密成ElGamal 類型的轉(zhuǎn)換密文, 再交付給用戶來降低用戶計算代價. 王皓等人[11]給出屬性基加密外包的形式化定義, 并給出了一個詳細的CP-ABE 方案, 并在標準模型下證明方案是自適應(yīng)安全的, 但方案效率較低. Li 等人[12]給出一種離線/在線屬性基加密方案, 該方案在加密期間將龐大的計算開銷使用離線/在線技術(shù)實現(xiàn), 同時引入“變色龍” 哈希函數(shù)來實現(xiàn)解密前的驗證功能, 并證明方案是適應(yīng)性選擇密文攻擊安全, 但解密涉及的雙線性對運算對用戶依然是較大的開銷. Fan 等人[13]提出一種云-霧計算中可驗證多授權(quán)機構(gòu)的外包方案, 該方案將加密與解密外包給離終端用戶較近的霧節(jié)點, 相對于遠端的云數(shù)據(jù)中心, 霧節(jié)點可以以較低的時延來進行計算, 很適合對數(shù)據(jù)進行實時計算處理. Zhang 等人[14]首次提出了一種完全外包方案, 即將密鑰生成、加密與解密操作全部由云端來進行處理, 但缺乏驗證機制. 該方案在加密階段通過租用多個加密服務(wù)器來完成計算, 最后將多個加密服務(wù)器計算的結(jié)果交付給用戶從而生成完整密文, 即使惡意用戶與加密服務(wù)器勾結(jié), 也不能截取有效的密文, 解密操作也是類似,但前提條件是假設(shè)服務(wù)器之間不會互相勾結(jié). Zhao 等人[15]在原來Zhang 等人[14]方案的基礎(chǔ)上提出了可驗證的完全外包方案, 除了支持可驗證功能, 其計算代價不會隨著屬性數(shù)量增加或訪問策略復雜度而顯著提升.
在上述方案的外包計算過程中, 數(shù)據(jù)擁有者只需計算常數(shù)個指數(shù)運算, 而與屬性數(shù)量呈線性相關(guān)的部分指數(shù)運算外包給加密服務(wù)商執(zhí)行, 但其底數(shù)與指數(shù)包含的信息對加密服務(wù)商而言是透明的, 尤其指數(shù)部分中包含有訪問結(jié)構(gòu)的部分信息, 如在外包解密運算中為重構(gòu)共享秘密s 的有效秘密份額λi等信息會泄露, 因此對訪問結(jié)構(gòu)中部分信息進行隱藏格外重要. 針對外包加密過程中涉及到的指數(shù)運算, Fu 等人[16]提出了針對冪指數(shù)安全外包計算, 通過邏輯分割的方式, 將數(shù)據(jù)分割成隨機片的形式來達到隱私保護的目的. Li 等人[17]將冪指數(shù)安全外包算法應(yīng)用到屬性基加密的方案中, 在外包加密過程中的指數(shù)運算, 通過冪指數(shù)安全外包算法, 可以有效的對密文中提到的底數(shù)與對數(shù)實現(xiàn)信息隱藏, 從而避免加密服務(wù)商獲取密文中的私密信息, 同時支持對計算結(jié)果的可驗證性, 但是因為由服務(wù)器對多個隨機片計算的結(jié)果不能進行有效的區(qū)分, 因此在驗證時正確驗證的概率只有1/2.
針對上述問題, 本文提出了一種支持可驗證的冪指數(shù)運算安全外包算法的屬性基加密, 該算法是在Li等人[17]提出的算法基礎(chǔ)上, 借鑒Fu 等人[16]的算法思想, 對驗證操作進行完善, 使正確驗證概率提升為“1”. 通過在屬性基外包方案中引入該算法, 可以有效地實現(xiàn)在外包加密操作中, 對部分密文組件(如Ci,Di的計算) 執(zhí)行一種新的數(shù)學分割方式, 并用產(chǎn)生的隨機盲化對進行處理, 生成隨機片的形式, 之后交由云服務(wù)器計算, 即將數(shù)據(jù)分割成由加密服務(wù)商計算的隨機片的形式, 以此來達到數(shù)據(jù)的隱私保護這一目的, 方案中同時也支持可驗證的外包解密這一操作. 最后在隨機預言機模型下, 證明本文方案是選擇性抗重放選擇密文攻擊(replay chosen-ciphertext attacks, RCCA)[18]安全.
定義G,GT是素數(shù)階為p 的兩個乘法循環(huán)群, g 為群G 的生成元, 雙線性映射e : G×G →GT滿足下列性質(zhì):
(1) 雙線性: e(ga,gb)=e(g,g)ab,?g ∈G,?a,b ∈.
(2) 非退化性: e(g,g)/=1.
判定性q-BDHE 問題定義如下:
在安全參數(shù)下選擇一個素數(shù)階p 的群G, 隨機選取a,s,b1,··· ,bq∈Zp, 公開
算法通過輸出z ∈{0,1} 進行猜測, 如果
定義擁有ε 優(yōu)勢來解決判定性q-BDHE 問題, 若無多項式時間以不可忽略的優(yōu)勢解決q-BDHE 問題, 就稱判定性q-BDHE 假設(shè)是成立的.
在多數(shù)方案中, 用戶借助子程序Rand[19]來生成隨機盲化對, Rand 的輸入是一個素數(shù)p 和一個底數(shù)g ∈RZ*p, 調(diào)用后輸出一個具有(a,ga)mod p 形式的盲化對, 其中a ∈RZ*p, 實現(xiàn)這個子程序的方法常用的有兩種: (1) 檢查表方法; (2) 預處理[20]技術(shù). 用戶通過Rand 程序返回的隨機數(shù)對對數(shù)據(jù)進行盲化處理, 進而發(fā)送給云服務(wù)器.
本文所提的方案系統(tǒng)模型包括數(shù)據(jù)擁有者(data owner, DO), 加密服務(wù)商(encryption service provider, ESP), 存儲服務(wù)商(storage service provider, SSP), 解密服務(wù)商(decryption service provider,DSP), 用戶(data user, DU), 屬性中心(attribute authority, AA)6 個實體組成.
圖1 安全外包屬性基加密模型Figure 1 Secure outsourced attribute-based encryption model
數(shù)據(jù)擁有者DO 指定好訪問策略, 先對數(shù)據(jù)執(zhí)行簡單指數(shù)運算的加密與異或操作, 然后將隨屬性數(shù)量線性增加的復雜的指數(shù)運算與模乘運算交由ESP, ESP 根據(jù)訪問結(jié)構(gòu)執(zhí)行外包加密操作, DO 收到ESP返回的部分加密密文后對計算結(jié)果進行驗證, 若驗證成功則將DO 與ESP 計算的結(jié)果構(gòu)成一個完整密文CT 上傳到SSP.
終端用戶DU 可以訪問云服務(wù)器上密文文件并從SSP 下載密文, 由于終端設(shè)備資源有限, 將解密過程中涉及的指數(shù)與雙線性對運算交由DSP 執(zhí)行, DSP 利用AA 生成的轉(zhuǎn)換密鑰TK 來生成轉(zhuǎn)換密文并發(fā)送給DU, DU 對DSP 返回的計算結(jié)果進行驗證并用自己秘密保存的私鑰SK 進行解密, 恢復出明文.
本文假設(shè)服務(wù)器之間不會發(fā)生共謀勾結(jié), AA 是密鑰分發(fā)機構(gòu), 是完全可信的, 方案所包含的算法由以下5 個算法組成.
Setup(λ,{0,1}*): 該算法輸入安全參數(shù)λ 與系統(tǒng)屬性集合{0,1}*, 輸出系統(tǒng)公鑰PK 與主私鑰MSK.
Encrypt(PK,m ∈{0,1}λ,(M,ρ)): 加密算法由DO 與加密服務(wù)商ESP 合作共同完成, 通過輸入PK, m 與訪問策略, 在兩種模冪安全外包算法Exp_1, Exp_2 下, ESP 執(zhí)行部分加密操作生成中間密文CTout. 最后與DO 執(zhí)行的加密操作生成完整密文CT.
KeyGenout(MSK,S): 密鑰生成算法由AA 執(zhí)行, 輸入主私鑰MSK 與用戶屬性集合S, 輸出轉(zhuǎn)換密鑰TK 與私鑰SK.
Transformout(TK,CT): 該算法由DSP 執(zhí)行, 輸入轉(zhuǎn)換密鑰TK 與完整密文CT, 輸出轉(zhuǎn)換密文CTtransform.
Decrypt(SK,CT′): 該算法由數(shù)據(jù)用戶DU 執(zhí)行, 輸入轉(zhuǎn)換密文CTtransform與用戶私鑰SK, 最后恢復出明文m.
本文采用的安全游戲是選擇性抗重放選擇密文攻擊(RCCA) 安全, 它允許對提供的密文進行修改卻不會改變消息內(nèi)容. 如果在Setup 階段前加入Init 階段, 則稱是選擇性安全.
Init. 敵手A 選擇一個要挑戰(zhàn)的訪問策略(M*,ρ*), 發(fā)送給模擬者(挑戰(zhàn)者)B.
Setup. 模擬者B 運行Setup 算法, 將PK 發(fā)送給敵手A.
Phase 1. 模擬者初始化一個空表T*, 一個集合D 與一個整數(shù)j =0, 敵手A 對屬性集合S 重復進行以下詢問.
· Creat(S): 模擬者設(shè)置j = j +1, 運行密鑰生成算法KeyGen 來獲得密鑰對(SK,TK), 然后將(j,S,SK,TK) 存儲在表T*中. 模擬者發(fā)送轉(zhuǎn)換密鑰TK 給敵手A.
· Corrupt(i): 如果在表T*中存在第i 個實體, 挑戰(zhàn)者獲得實體(i, S, SK, TK) 并設(shè)置D :=D ∪{S}, 將私鑰SK 發(fā)送給敵手A, 如果不存在這個實體, 就返回終止符“⊥”.
· Decryt(i, CT): 如果在表T*中存在第i 個實體, 挑戰(zhàn)者獲得實體(i, S, SK, TK), 將解密算法中輸入(SK,CT) 計算的輸出結(jié)果返回給敵手A, 如果沒有查詢到第i 個實體, 就輸出“⊥”.
Challenge. 敵手A 提交兩個等長度消息m0,m1, 模擬者隨機選擇mβ,β ∈{0,1}, 運行Encrypt算法獲得mβ的密文CT*, 最后模擬者將CT*發(fā)送給敵手A.
Phase 2. 與Phase 1 類似, 繼續(xù)給出以上詢問.
Guess. 敵手A 輸出β′∈{0,1} 的值作為對β 的猜測, 如果β′= β, 我們稱敵手A 贏得了該游戲,其敵手優(yōu)勢定義為:
定義1 若無多項式時間以不可忽略的優(yōu)勢來攻破上述安全模型, 那么我們就說本文提出的方案是選擇性RCCA.
一個安全外包[21]算法(T, U) 通常由兩個實體組成, 可信的用戶T 與不可信的云服務(wù)器U. 用戶使用子程序Rand 產(chǎn)生的隨機盲化對來實現(xiàn)對數(shù)據(jù)的分割隱藏, 將盲化后的隨機數(shù)對上傳到云服務(wù)器進行計算, 并將計算結(jié)果返回給用戶, 最后用戶進行驗證. 針對冪指數(shù)運算外包算法, Li 等人[17]提出了多個底數(shù)模冪運算與單個底數(shù)模冪運算, 可有效的解決指數(shù)計算開銷大的問題, 但是正確驗證概率分別只有2/5與1/2. 為實現(xiàn)驗證概率為“1”, 本文通過對Li 等人[17]算法進行完善, 提出了驗證概率為“1” 的模冪安全外包算法.
應(yīng)注意的是為提高邏輯分割過程中的安全性, x1,x2通常至少選取64 bit 長度.
(2) 用戶T 向服務(wù)器U 詢問計算的結(jié)果:
(3) 用戶T 對服務(wù)器U 返回的結(jié)果用下面等式進行驗證:
如果等式成立, 用戶便可以計算出:
否則, 輸出錯誤符號“⊥”.
算法描述: Exp2(a,u)→ua
給定一個素數(shù)階p 的循環(huán)群G,群G 的生成元為g,任意選取一個底數(shù)u ∈RG 與一個指數(shù)a ∈R,輸出結(jié)果uamod p.
(1) T 運行Rand 程序得到四組盲化隨機數(shù)對(γ,gγ),(β,gβ), (α,gα),(η,gη) 同時對數(shù)據(jù)u,a 邏輯分割成由云服務(wù)器U 計算的隨機片形式, 分割過程如下:
(3) 用戶T 對服務(wù)器U 返回的結(jié)果用下面等式進行驗證:
如果等式成立, 用戶便可以計算出:
否則, 輸出錯誤符號“⊥”.
在云外包服務(wù)器模型下的安全外包密文策略屬性基加密方案是基于Green 等人[10]的方案上來構(gòu)造我們的方案, 具體由以下5 個算法組成, 每個算法的詳細敘述如下:
Setup(λ,{0,1}*). 該算法輸入一個安全參數(shù)λ 與系統(tǒng)屬性集合, 然后選擇一個素數(shù)階p 的雙線性群G, 群G 的生成元g, 一個將{0,1}*映射到群G 的哈希函數(shù)F. 另外, 隨機選擇的指數(shù)α,α ∈Zp, 選擇兩個哈希函數(shù)H1:{0,1}*→Zp與H2:{0,1}*→{0,1}λ最后輸出系統(tǒng)主私鑰MSK=(gα,PK), 系統(tǒng)公鑰PK={g,e(g,g)α,ga,F,H1,H2}.
ESP 將每次的計算出的結(jié)果CTout發(fā)送給DO, 即
同樣地, 依照Exp2算法來對Di進行計算, 過程與對Ci的計算類似.
(3) DO 對返回的計算結(jié)果進行驗證, 驗證公式如下:
若上述等式成立, 則說明ESP 準確地執(zhí)行了計算結(jié)果, DO 根據(jù)返回的結(jié)果就可以輸出完整密文CT=(C,C′,C′′,Ci,Di). 其中C,C′,C′′由DO 計算得出; Ci,Di由ESP 執(zhí)行計算操作, 同時DO 還需對云服務(wù)器返回的計算結(jié)果進行驗證.
最終輸出部分解密密文CT′={C,C′′,CTtransform}.
Decrypt(SK,CT′). 該算法由用戶執(zhí)行, 通過輸入CT′= {C,C′′,CTtransform} 與SK, 則計算r = C/(CTtransform)z,m=C ⊕H2(r), 并且計算s = H1(r,m). 如果C = r ·e(g,g)αs,CTtransform=e(g,g)sα/z, 則說明云服務(wù)器返回的計算結(jié)果正確, 便輸出明文m.
本文所提出的兩種冪指數(shù)安全外包算法以及所構(gòu)造的方案, 我們分別從該算法可驗證性與方案的安全性進行證明.
定理1 在單個不可信服務(wù)器模型下, 算法Exp1和Exp2是本文方案的一個正確性的實現(xiàn), 那么正確驗證概率為“1”.
證明: 對于Exp1, 數(shù)據(jù)擁有者對于輸入的數(shù)據(jù)u1au2b, 那么可以準確地執(zhí)行下列計算:
由式(7)與式(8)可知, 只要云服務(wù)器因懶惰或者遭受惡意攻擊可返回錯誤結(jié)果, 那么當數(shù)據(jù)擁有者收到云服務(wù)器返回來的計算結(jié)果后, 通過驗證公式(3)便可判斷云服務(wù)器計算的結(jié)果是否正確, 若不符合等式, 說明云服務(wù)器計算產(chǎn)生錯誤, 因此數(shù)據(jù)擁有者便可以“1” 的概率檢測出錯誤.
同理, Exp2證明過程與上述類似, 其正確驗證概率為“1”.
定理2 假設(shè)判定性q-BDHE 假設(shè)在群G 與GT成立, 那么本文所提的方案在隨機預言機模型下是選擇性RCCA 安全.如果S 滿足訪問策略, 那么選一個“假” 轉(zhuǎn)換密鑰, 過程與上面類似, 選取一個隨機值d ∈Zp, 運行KeyGen 算法來獲得SK′, 設(shè)置TK = SK′, SK = (d,TK), 其中, d 如果被未知的值z = α/d,重新生成TK. 最后將(j,S,SK,TK) 存放在表T3中, 返回TK 給A.
· Corrupt(i): A 不能詢問與訪問策略(M*,ρ*) 相關(guān)聯(lián)的密鑰key. 如果在表T3中存在一個實體,那么B 就可以獲得這個實體(i,S,SK,TK) 與D :=D ∪{S}, B 將SK 返回給A, 如果在表中不存在, 則輸出“⊥”.
· Decrypt(i,CT): 我們假設(shè)所輸入的密文已被部分解密, 由于B 和A 都可以訪問TK 的值, 因此只有其中一個可以執(zhí)行轉(zhuǎn)換密文的操作. 與訪問策略相關(guān)的密文CT=(C,C′′,CTtransform), 在表T3中可以查詢到(i,S,SK,TK), 若查詢不到或者S /∈(M,ρ), 輸出“⊥” 給A. 如果第i 個實體中的密鑰不滿足挑戰(zhàn)的訪問策略(M*,ρ*), 執(zhí)行以下過程:
所以, B 能以不可忽略的優(yōu)勢ε 攻破該判定性q-BDHE 困難問題假設(shè).
將本文的方案與文獻[10], 文獻[17] 方案從功能方面與計算開銷方面兩個角度來進行分析比較, 在方案對比中, |?| 代表策略屬性集合數(shù)量大小, E 表示模指數(shù)運算, P 表示雙線性對計算, M 表示群中模乘運算, 由于在方案里面開銷較大的指數(shù)運算與雙線性對運算, 以及較復雜的乘法運算, 因此忽略其它次要的運算(如哈希運算).
表1 主要從功能方面進行對比分析, 從中可以看到文獻[10] 的方案僅僅將解密工作外包給云服務(wù)器進行計算, 加密工作還是由數(shù)據(jù)擁有者進行計算, 所以數(shù)據(jù)擁有者在加密期間涉及到繁重的指數(shù)運算以及較大的乘法運算. 文獻[17] 與本文方案都是將加密操作和解密操作都外包給云服務(wù)器進行計算, 大大減少了用戶終端的計算量. 文獻[17] 不僅支持外包加密解密操作, 而且針對外包加密中的指數(shù)運算提出了兩類冪指數(shù)安全外包算法, 通過數(shù)學分割以及盲化操作, 對密文組件中包含的底數(shù)與指數(shù)進行隱藏, 以此來實現(xiàn)數(shù)據(jù)的隱私保護, 然而多個底數(shù)模冪安全外包算法與單個底數(shù)模冪安全外包算法的正確性驗證概率分別只有2/5、1/2. 本文方案將加密解密操作外包給云服務(wù)器執(zhí)行, 并且通過對文獻[17] 算法進行改進, 不僅可以實現(xiàn)隱私保護這一功能, 還將正確驗證概率提升為“1”.
表1 功能分析Table 1 Function comparison
表2 主要從數(shù)據(jù)擁有者加密操作、驗證以及數(shù)據(jù)使用者解密操作、驗證等方面進行計算代價分析, 文獻[17] 方案數(shù)據(jù)擁有者在加密階段只涉及到2 次指數(shù)運算, 在對計算結(jié)果驗證上需要2 次指數(shù)與1 次乘法, 數(shù)據(jù)用戶在解密過程中進行1 次模乘操作, 但驗證過程中涉及到5 次指數(shù)操作和1 次雙線性對以及4 次模乘操作, 而雙線性對計算代價遠遠大于模乘計算的代價. 文獻[10] 中由于加密計算全部由數(shù)據(jù)擁有者操作, 所以加密階段需要進行3|?|+2 次指數(shù)運算和1|?|+1 次模乘運算, 指數(shù)運算的工作量遠遠加重了數(shù)據(jù)擁有者的計算量. 本文方案在加密階段進行2E 次操作, 與文獻[10] 相同, 加密驗證階段我們比文獻[17] 多進行了2 次指數(shù)運算和13 次乘法運算, 但是我們將驗證的概率從2/5 提升到了“1”, 犧牲計算代價獲得100% 的驗證正確性是值得的. 解密階段我們比文獻[17] 多了1 次指數(shù)計算, 但我們的解密驗證階段僅需要1 次乘法與2 次指數(shù)運算, 比文獻[17] 的1 次雙線性運算, 5 次指數(shù)運算以及4 次乘法運算, 其計算代價要小很多.
整體來看, 我們的方案將數(shù)據(jù)加密和數(shù)據(jù)解密中的指數(shù)運算都進行了外包操作, 大大減少了用戶終端的計算量, 而且本文方案中用戶的加密驗證和解密驗證正確率達到了100%, 完全實現(xiàn)了外包計算的可靠性和安全性.
表2 計算代價分析Table 2 Comparison of computing overhead
通過上述理論分析, 本文方案在功能與效率上更有優(yōu)勢, 為了更準確評估方案的實際性能, 通過實驗進一步分析與文獻[10]、文獻[17] 在終端設(shè)備的計算量上的時間開銷, 包括加解密時間與驗證所需的時間.
實驗環(huán)境: Windows 10 操作系統(tǒng), Inter? Core(TM) i3-3217U(1.80 GHz)、內(nèi)存2 GB, 實驗代碼基于JPBC-2.0.0 (java pairing-based cryptography library) 函數(shù)庫與MyEclipse 開發(fā)環(huán)境進行編寫, 其中模冪與模乘運算是分別調(diào)用庫中G_1.powZn() 與G_1.mul() 兩個函數(shù)進行測試.
實驗設(shè)置: 在密文策略屬性基加密方案中, 訪問策略中屬性個數(shù)影響加密與解密時間, 在實驗過程中,由于龐大的計算開銷外包給云服務(wù)器進行計算, 因此我們只測試用戶端的計算時間. 我們在實驗中設(shè)置屬性個數(shù)為100, 每次遞增10 個屬性個數(shù), 從而產(chǎn)生10 種不同的訪問策略, 通過比較用戶端在不同訪問策略下的計算時間, 每個訪問策略我們測試10 次, 取一個平均值作為實驗結(jié)果.
圖2 有兩個子圖, 圖2(a) 與圖2(b), 分別代表了數(shù)據(jù)擁有者的計算時間與數(shù)據(jù)用戶的計算時間. 在圖2(a) 中, 我們可以看到文獻[10] 由于所有加密操作都由數(shù)據(jù)擁有者獨立完成, 可以看到計算時間隨著屬性數(shù)量的增加線性遞增, 文獻[17] 與本文方案由于數(shù)據(jù)擁有者只承擔部分加密操作, 可以看到時間不會隨屬性數(shù)量的增加而逐漸遞增, 同時本文方案所需的計算時間要高于文獻[17], 但我們將正確驗證概率提升到“1”, 文獻[17] 并不具備這項優(yōu)勢. 在圖2(b) 中文獻[17] 的用戶解密與驗證時間要高于本文方案與文獻[10], 而本文方案與文獻[10] 用戶所花的計算時間幾乎相同, 但因為文獻[10] 中的加密運算時間隨著屬性數(shù)目增加而逐漸遞增, 因此本文方案是更有效的.
綜合分析, 本文方案中的數(shù)據(jù)擁有者與數(shù)據(jù)用戶的計算時間不會隨著訪問策略中屬性個數(shù)增加而遞增, 雖然在加密過程中數(shù)據(jù)擁有者的計算時間成本略高, 但可以準確地驗證云服務(wù)器返回的計算結(jié)果, 并且用戶解密時間成本較低, 因此本文方案是可行的.
圖2 仿真時間對比Figure 2 Comparison of simulation time
為解決基于屬性加密外包方案中的冪指數(shù)運算, 本文提出了一種針對冪指數(shù)運算的模冪安全外包算法, 通過對數(shù)據(jù)分割、盲化等操作, 在屬性基加密方案中由ESP 執(zhí)行的外包加密過程期間, 可以有效地對數(shù)據(jù)私密信息實現(xiàn)隱藏這一功能, 以及概率為“1” 的可驗證性; 同時支持DSP 執(zhí)行部分解密計算, 以此降低本地解密計算量, 用戶通過哈希算法與異或操作進行外包解密結(jié)果的驗證并恢復出明文. 最后在隨機預言機模型下證明了方案的安全性, 并從功能與效率兩方面進行比較, 表明我們的方案更具優(yōu)勢.