李婷,常利偉
(1.山西財經(jīng)大學(xué) 網(wǎng)絡(luò)與信息教育技術(shù)中心,山西 太原 030006;2.山西財經(jīng)大學(xué) 信息學(xué)院,山西 太原 030006)
公鑰加密是保護(hù)存儲和傳輸信息機(jī)密性的一種強(qiáng)大機(jī)制。傳統(tǒng)意義上,加密被視為一個用戶定向傳輸給指定用戶或者設(shè)備數(shù)據(jù)的一種方式。雖然這對“讓數(shù)據(jù)提供者明確知道他想要將該數(shù)據(jù)共享給誰的應(yīng)用”是非常有用的,但是在很多應(yīng)用中,是提供者想要根據(jù)一些屬性特征將數(shù)據(jù)信息發(fā)送給特定用戶,以共享私密數(shù)據(jù)信息。
云計算是一種非常迷人的計算范式,計算和存儲都從終端設(shè)備轉(zhuǎn)移到云上。這種新的流行范式為企業(yè)和個人管理在分發(fā)和共享內(nèi)容的方式上帶來了重要的變革和大膽的創(chuàng)新[1]。通過將自己的信息技術(shù)能力外包給一些云服務(wù)的提供商,云用戶可以大幅降低成本。如何保障云計算用戶的數(shù)據(jù)安全是公眾普遍關(guān)注的問題。部分外包數(shù)據(jù)是敏感的,只能由經(jīng)過授權(quán)的數(shù)據(jù)消費(fèi)者在遠(yuǎn)程位置訪問。
加密技術(shù)是實現(xiàn)這一目標(biāo)的基本方式。例如:屬性基加密(ABE)是一種功能強(qiáng)大的加密訪問方式。屬性基加密的概念最初是由Sahai和Waters提出的[2]。而根據(jù)其訪問控制策略部署方式可區(qū)分為兩種不同的加密系統(tǒng),即密鑰策略的屬性基加密(KP-ABE)和密文策略的屬性基加密(CP-ABE)[3-7]。在 KP-ABE 方案中,密鑰與訪問控制結(jié)構(gòu)相關(guān)聯(lián),密文與屬性相關(guān)聯(lián)(使用屬性集合對明文進(jìn)行加密,屬性相當(dāng)于公鑰),且其訪問控制結(jié)構(gòu)由私鑰產(chǎn)生中心(Private Key Generator,PKG)來控制分發(fā),誰能解密不由加密人控制,而僅由PKG控制,PKG為每個屬性分發(fā)相應(yīng)的密鑰,而只有當(dāng)解密屬性集合滿足訪問結(jié)構(gòu)時才可解密;在CP-ABE方案中,密文與訪問控制結(jié)構(gòu)相關(guān)聯(lián),密鑰與屬性相關(guān)聯(lián)(使用屬性集合對密文進(jìn)行解密),其訪問結(jié)構(gòu)由加密者控制,由加密者決定誰可以對密文進(jìn)行解密,因而靈活性更強(qiáng),只要是滿足加密者所規(guī)定的訪問控制結(jié)構(gòu)的屬性集合的解密人均可對密文進(jìn)行解密,從而實現(xiàn)了一對多的訪問控制。此后在具體的非交互假設(shè)下,Waters等[8]提出了一種新的方案來實現(xiàn)抗合謀攻擊的密文策略的屬性基加密系統(tǒng)。這之后Lewko等[9]又提出了一個完全安全的屬性基加密方案,進(jìn)一步充實了屬性基加密的安全可用性。但屬性基加密的加解密過程都存在很多雙線性映射對的計算,很大程度限制了計算效率,而外包解密可極大提高屬性基加密的使用效率,如文獻(xiàn)[10-11]的方案。
外包解密的常用方法是對用戶的私鑰進(jìn)行盲化后再傳送給云服務(wù)器,然后云服務(wù)器利用盲化后的私鑰即轉(zhuǎn)換密鑰來對密文進(jìn)行部分解密從而得到相應(yīng)的轉(zhuǎn)換密文,用戶最后只需要對已經(jīng)部分解密過的轉(zhuǎn)換密文進(jìn)行解密計算即可,即進(jìn)行少量的計算便可得到密文相對應(yīng)的明文。用戶在本地只需要進(jìn)行簡單的解密運(yùn)算即可得到明文消息,即以少量的計算資源為代價來換取消息的保密性,如文獻(xiàn)[12-15]的方案。近些年還出現(xiàn)了很多可追責(zé)、可驗證及支持屬性撤銷的外包解密的屬性加密方案,如文獻(xiàn)[16-17]的方案。
本文給出了一個高效的、抗合謀攻擊可證明安全的可外包解密的密文策略的屬性基加密方案,其組織結(jié)構(gòu)為:第一部分,介紹了方案中所需的基礎(chǔ)知識;第二部分,給出高效外包解密方案的構(gòu)造及正確性分析;第三部分,對高效外包解密方案進(jìn)行了安全性證明;最后全文總結(jié)。
假設(shè)存在兩個階為素數(shù)p的乘法循環(huán)群G,GT及一個雙線性映射函數(shù)e:G×G→GT,且此雙線性映射e屬性如下:
(1)雙線性:對于所有的u,v∈G及a,b∈Zp,存在e(ua,vb)=e(u,v)ab;
(2)非退化性:e(g,g)≠1。
如果G上的群運(yùn)算及雙線性映射e:G×G→GT是可高效運(yùn)算的,則稱G為一個雙線性映射群。因為e(ga,gb)=e(g,g)ab=e(gb,ga),故而雙線性映射e具有對稱性。
選擇一個與安全參數(shù)相對應(yīng)的階為素數(shù)p的群G,隨機(jī)選擇a,s,b1,…,bq∈Zp及生成元為g的群G。
如果一個敵手給出:
假設(shè)存在一個l×n的矩陣M,稱作分享生成矩陣,函數(shù)ρ表示矩陣M第i行的參與者,矩陣M第i行映射到ρ(i)屬性上。
設(shè)垂直向量 v=(s,r2,…,rn),其中 s∈Zp是將要分享的密鑰,r2,…,rn∈Zp是隨機(jī)數(shù),那么向量Mv表示對密鑰s分配給l個參與者的秘密份額。
LSSS方案具有線性重構(gòu)的特性。設(shè)S∈T是一個訪問授權(quán)集合,參與者下標(biāo)集合I={i:ρ(i)∈S}?{1,2,…},那么可以在多項式時間內(nèi)找到一組常數(shù){ωi∈Zp}i∈I,如果{λi}是對秘密 s的有效分享份額,則等式 ∑ωiλi=s(i∈I)成立。
參數(shù)生成(U):參數(shù)生成算法,輸入系統(tǒng)中的屬性值。選擇一個階為素數(shù)p的群G,選擇生成元 g和 U,隨機(jī)群元素 h1,…,hU∈G,是與系統(tǒng)中屬性U相關(guān)聯(lián)的。另外,選擇隨機(jī)冪元α,a ∈Zp。
公鑰為:PK=g,e(g,g)α,ga,h1,…,hU。
授權(quán)集合作為主密鑰:MSK=gα。
加密算法(PK,(M,ρ),M):加密算法,輸入公共參數(shù)PK和明文M,另外輸入密鑰共享訪問結(jié)構(gòu)(M,ρ)。函數(shù)ρ將矩陣M的行與屬性關(guān)聯(lián)起來。
M是l×n的一個矩陣。該算法首先選擇一個隨機(jī)矢量 v=(s,y2,…,yn)∈ Zp。該值將被用來共享加密冪次s。對從i=1到l,計算λi=υ·Mi,這里Mi是與M的第i行相對應(yīng)的矢量。另外,該算法選擇隨機(jī)數(shù)r1,…,rl∈Zp。
解密算法(CT,TK,SK):解密算法,輸入相對于訪問結(jié)構(gòu)(M,ρ)的密文CT和集合S的私鑰SK及相對應(yīng)的轉(zhuǎn)換密鑰TK。假設(shè)S滿足這個訪問結(jié)構(gòu),則令 I?{1,2,…,l}定義為 I={i:ρ(i)∈ S}。同時假設(shè){ωi∈ Zp}i∈I是這樣一個常數(shù)集合,如果{λi}是任意與M相關(guān)的秘密s的有效共享,且滿足 ∑i∈Iωiλi=s。(注意,存在其他的方法來選擇ωi值來滿足該要求)。
(1)外包解密
參數(shù)生成 挑戰(zhàn)者運(yùn)行參數(shù)生成算法,生成公共參數(shù),并將公鑰PK發(fā)送給敵手。
階段1 敵手不斷重復(fù)生成與屬性集合S1,…,Sq1
相對應(yīng)的私鑰。挑戰(zhàn)階段 敵手發(fā)出兩個等長的明文消息M0和M1。此外敵手給出一個挑戰(zhàn)訪問結(jié)構(gòu)A*使得來自階段1的集合S1,…,Sq1都不滿足該訪問結(jié)構(gòu)。挑戰(zhàn)者投擲一枚硬幣b,在訪問機(jī)構(gòu)A*加密明文Mb。并將密文CT*發(fā)送給敵手。
階段2 階段1在限制條件下重復(fù),屬性集Sq1+1,…,Sq不滿足與挑戰(zhàn)對應(yīng)的訪問結(jié)構(gòu)。
猜測階段 敵手輸出猜測結(jié)果b′或者b。
在證明我們系統(tǒng)安全中的一個重要步驟是簡化“程序”的挑戰(zhàn)密文為公共參數(shù)。
定理1 假定決策性q-parallelBDHE假設(shè)成立。不存在敵手可以在多項式時間內(nèi)成功攻破該方案,其挑戰(zhàn)矩陣為 l*× n*,且 l*,n*< q。
假定存在一個敵手A有不可忽略的優(yōu)勢∈=AdvA在選擇安全游戲中攻破該方案。此外,假定該敵手A選擇了一個維數(shù)小于q的矩陣M*。下面我們來演示模擬一個隨機(jī)預(yù)言機(jī)B來模擬決策性q-parallelBDHE問題。
初始化 隨機(jī)預(yù)言機(jī)從q-parallelBDHE挑戰(zhàn)中取得參數(shù)y,T。敵手發(fā)送挑戰(zhàn)訪問結(jié)構(gòu)(M*,ρ*),其中 M*有 n*行。
參數(shù)生成 隨機(jī)預(yù)言機(jī)選擇隨機(jī)數(shù)α′∈Zp,并 且 令 α=α′+aq+1, 則 有 e(g,g)α=e(ga,gaq)e(g,g)α′。 我 們 描 述 隨 機(jī) 預(yù) 言 機(jī) 生 成群元素h1,…,hU。對每一個滿足1≤x≤U的x選擇隨機(jī)值zx,再設(shè)X為指標(biāo)i的集合,且有ρ*(i)=x。隨機(jī)預(yù)言機(jī)程序hx值為;
注意到,如果X=?則有hx=gzx;且由于的取值,故而這些參數(shù)是隨機(jī)分布的。
階段3 在這一階段隨機(jī)預(yù)言機(jī)回答私鑰詢問。假定隨機(jī)預(yù)言機(jī)收到一個集合S中的私鑰詢問,該集合S是不滿足矩陣M*的。則隨機(jī)預(yù)言機(jī)首先選擇隨機(jī)數(shù)z,r∈Zp,然后找到一個向量 ω =(ω1,…,ωn*)∈,其中 ω1=-1且對所有的 ρ*(i)∈S 中的 i都有 ω·M*i=0。通過前文中LSSS的定義可知一定存在這樣的向量。注意,如果這樣的向量不存在,則向量(1,0,0,…,0)在S張成的空間中。見階段2中的討論。
隨機(jī)預(yù)言機(jī)隱式定義了t值,
現(xiàn)在必須計算出Kx(?x∈S)。首先,考慮到當(dāng)x∈S,則不存在i令ρ*(i)=x成立,則我們簡單的令Kx=Lyx。
更加困難任務(wù)是為屬性x∈S構(gòu)建對應(yīng)私鑰組件的Kx,其中x在訪問控制結(jié)構(gòu)中使用。對于這些私鑰組件,必須確保無法被模擬。但由于ω·Mi*=0,因此,所有的項都可以被消除。
同樣,設(shè)X是所有i的集合,且ρ*(i)=x。在此基礎(chǔ)上,隨機(jī)預(yù)言機(jī)創(chuàng)建Kx如下:
挑戰(zhàn)階段 最后,我們構(gòu)建一個挑戰(zhàn)密文。敵手給出兩個挑戰(zhàn)密文M0和M1,并發(fā)送給隨機(jī)預(yù)言機(jī)。隨機(jī)預(yù)言機(jī)擲一枚硬幣β,并給出密文C=MβTe(gs,gα′)和C′=gs。
棘手的部分是模擬Ci值,因為其包含我們必須消去的項。此外,隨機(jī)預(yù)言機(jī)可以選擇密鑰分割以此來消除這些項。直觀上,隨機(jī)預(yù)言機(jī)將會選擇隨機(jī)數(shù)y′2,…,y′n*,同時共享密鑰使用向量為:
另外,其選擇隨機(jī)值r1′,…,rl′。
對 于i=1,…,n*,我 們 定 義 對 于 所 有 的k≠i滿足ρ*(i)=ρ*(k)組成的集合Ri。換句話說,與行i具有相同屬性的所有其他行索引的集合。然后生成挑戰(zhàn)密文組成部分:
階段2與階段1相同。
猜測階段 最后敵手將輸出對β的猜測β′。如果β=β′,則隨機(jī)預(yù)言機(jī)輸出0,并猜測T=e(g,g)aq+1s;否則,如果β≠β′,則輸出 1,則T為GT中的一個隨機(jī)群元素。
當(dāng)T是一個元組時,隨機(jī)預(yù)言機(jī)B給出來看完美模擬,因此可以得到
當(dāng)T是隨機(jī)群元素,信息Mβ對敵手是完全隱藏的,則有
因此,B可以以不可忽略的優(yōu)勢攻破決策性q-parallelBDHE游戲。
表1中,我們總結(jié)了我們的方案和BSW加密方案及GJPS方案在密文個數(shù)和密鑰大小及解密時間方面的比較。n為訪問公式的大小,U為方案中定義的屬性個數(shù),nmax定義為任意訪問公式的一個界值,EG表示本方案的外包解密的時間。密文的大小以組元素的數(shù)量來表示,解密時間以配對的數(shù)量來表示。
表1 本文方案與相關(guān)方案的功能和性能比較Table 1 Comparison of function and performance between proposed scheme and other related schemes
綜上所述,本方案實現(xiàn)了與BSW加密方案相同的參數(shù)效率,但是本方案是在一個具體的安全假設(shè)下可證明安全的。同時在與GJPS加密方案相同的假設(shè)下,證明了d-BDH結(jié)構(gòu)在性能方面得到了顯著提升。
本文構(gòu)造了一個高效的抗合謀攻擊的密文策略的可外包解密的屬性基加密方案,該方案允許一個加密算法以任何訪問公式來指定訪問公式。我們使用線性密鑰共享方案矩陣表示系統(tǒng)的訪問控制。以前使用的結(jié)構(gòu),如公式(相當(dāng)于樹結(jié)構(gòu)),可以用線性密鑰共享方案簡單表示出來。與以往使用的訪問樹結(jié)構(gòu)描述相反,使用更通用的線性密鑰共享方案表示不會損失任何效率并且可獲得相同的性能和功能,并給出了該方案在一個具體且非交互模型下是可證明安全的。