郭凱陽(yáng) ,韓 益 亮 ,吳日銘
(1.武警工程大學(xué) 密碼工程學(xué)院,陜西 西安 710086;2.武警部隊(duì)密碼與信息安全保密重點(diǎn)實(shí)驗(yàn)室,陜西 西安710086)
在信息時(shí)代與大數(shù)據(jù)時(shí)代的背景下,當(dāng)今網(wǎng)絡(luò)中的信息量呈現(xiàn)爆炸式的增長(zhǎng),網(wǎng)絡(luò)信息安全問(wèn)題引起了人們的廣泛關(guān)注,密碼技術(shù)作為保障信息安全的關(guān)鍵技術(shù)之一,其研究發(fā)展也越來(lái)越受到重視。1976年Diffle和Hellman提出了公鑰密碼思想體制[1],解決了對(duì)稱(chēng)密碼體制中密鑰管理代價(jià)高、功能單一等問(wèn)題,但是隨著需求發(fā)展,傳統(tǒng)基于公鑰基礎(chǔ)設(shè)施的加密機(jī)制也遇到了一些瓶頸,為了提高效率,Shamir于1984年提出了基于身份的加密機(jī)制(Identity-Based Encryption,IBE)[2],在此基礎(chǔ)上,Sahai和 Waters進(jìn)一步提出了屬性加密機(jī)制[3]。屬性加密機(jī)制實(shí)現(xiàn)了一對(duì)多的加密模式且具有靈活的訪問(wèn)結(jié)構(gòu),通常分為密文策略屬性加密(Ciphertext-Policy Attribute Based Encryption,CP-ABE)和密鑰策略屬性加密(Key-Policy Attribute Based Encryption,KP-ABE)[4]。為了完善屬性加密機(jī)制的功能,發(fā)掘其潛在的應(yīng)用前景,田有亮等人提出了基于屬性加密的區(qū)塊鏈數(shù)據(jù)溯源算法[5];劉建華等人在屬性加密的基礎(chǔ)上提出了支持密文檢索的云存儲(chǔ)方案[6];王崢等人提出了霧計(jì)算中用戶和屬性可撤銷(xiāo)的訪問(wèn)控制方案[7];汪金苗等人基于多授權(quán)的屬性加密設(shè)計(jì)了面向區(qū)塊鏈的隱私保護(hù)和訪問(wèn)控制方案[8]。
構(gòu)造簡(jiǎn)單、抗量子攻擊是格密碼體制的兩大優(yōu)點(diǎn),Regev在2005年提出了格上的誤差學(xué)習(xí)問(wèn)題(Learning With Error,LWE)[9],并指出可以用來(lái)設(shè)計(jì)身份加密和屬性加密方案,之后構(gòu)造格上的屬性加密方案成為了學(xué)者研究的熱點(diǎn)之一,張欣等人利用二叉樹(shù)設(shè)計(jì)了可撤銷(xiāo)屬性的格基屬性加密方案[10]。Tan等人利用LSSS技術(shù)構(gòu)造了理想格上的高效CP-ABE方案[11]。吳立強(qiáng)等人提出了一種基于RLWE問(wèn)題的高效模糊身份的加密方案[12]。于金霞等人提出了一種基于RLWE的支持訪問(wèn)樹(shù)的屬性加密方案[13],之后基于LWE問(wèn)題設(shè)計(jì)了一個(gè)外包環(huán)境下可撤銷(xiāo)的屬性基加密方案[14]。
在大多數(shù)屬性加密方案中,通常都是將所有的屬性歸在同一個(gè)層次,無(wú)法根據(jù)屬性之間的層次關(guān)系實(shí)現(xiàn)靈活高效的訪問(wèn)控制。因此在2009年,Jin Li等人提出了將屬性分層處理的加密思想[15],并通過(guò)構(gòu)建不同類(lèi)的屬性樹(shù)設(shè)計(jì)了一個(gè)分層的屬性加密方案(Hierarchy Attribute-Based Encryption,HABE)。2014年Liu等人通過(guò)將屬性分布在不同的矩陣行中也實(shí)現(xiàn)了屬性分層[16]。2016年王梓瑩等人在其方案中給出了一個(gè)新的屬性分層加密的形式化定義[17]。目前分層屬性加密方案的構(gòu)造大多是基于雙線性對(duì)映射且不具備其他功能,基于格基來(lái)構(gòu)造分層屬性加密方案的例子較少。
為了使方案更加滿足實(shí)際需要,本文在Tan[11]等人的CP-ABE方案的基礎(chǔ)上對(duì)其進(jìn)行改進(jìn),在研究格上屬性加密方案的同時(shí)嘗試將屬性進(jìn)行分層,并參考王光波等人方案中的撤銷(xiāo)思想[18],設(shè)計(jì)了一種基于RLWE的支持撤銷(xiāo)的分層屬性加密方案。方案采用第三方機(jī)構(gòu)進(jìn)行撤銷(xiāo)減少了系統(tǒng)的工作量,采用改進(jìn)的分層訪問(wèn)結(jié)構(gòu)可以實(shí)現(xiàn)靈活的訪問(wèn)策略,在兼具抗量子攻擊的同時(shí)實(shí)現(xiàn)了屬性分層及即時(shí)撤銷(xiāo)。
定義 3理想格 如果存在一個(gè)環(huán) R=[x]/<f>和一個(gè)理想 I?R且格 Λ∈Zn與 I相關(guān),則稱(chēng)其為理想格。
定義4判定型環(huán)上誤差學(xué)習(xí)問(wèn)題 給定安全參數(shù) λ,選 d、q為基于 λ 的整數(shù),定義 R=Z[x]/f(x)是模 f(x)的整數(shù)多項(xiàng)式環(huán),Rq=Z[x]/f(x)表示模 f(x)和q的整數(shù)多項(xiàng)式環(huán),其中,f(x)=xn+1。給定基于 λ的離散分布 χ?Rq,判定性 RLWE問(wèn)題中有一個(gè)指定的挑戰(zhàn)模型 O,對(duì)于 s∈Rq,判定該挑戰(zhàn)模型是含有噪聲的偽隨機(jī)采樣機(jī)Os還是真正的隨機(jī)采樣機(jī),其中Os和有以下特征。
Os:輸出偽隨機(jī) 樣本,即(ω,v)=(ω,ωs+e)∈Rq×Rq,且樣本中含有噪聲,其中,ω為環(huán)多項(xiàng)式,s∈Rq表示均勻分布的密鑰,e是系數(shù)取自離散分布χ的噪聲。
Tamir在2007年提出了分層門(mén)限秘密共享方案[19],其原理與LSSS方案相似,都是通過(guò)滿足訪問(wèn)結(jié)構(gòu)的參與者重構(gòu)多項(xiàng)式進(jìn)而恢復(fù)出秘密,不同的是方案中運(yùn)用求導(dǎo)的方法來(lái)區(qū)分參與者之間的層次,高等級(jí)對(duì)應(yīng)較低層,子秘密中包含的秘密信息多,低等級(jí)則正好相反。在此基礎(chǔ)上,毛穎穎等人提出用一個(gè)自定義函數(shù)運(yùn)算代替求導(dǎo)進(jìn)而提高了原方案的運(yùn)算效率[20],本文在構(gòu)造訪問(wèn)結(jié)構(gòu)時(shí)使用的就是毛穎穎改進(jìn)的分層門(mén)限秘密共享方案,下面對(duì)此方案進(jìn)行介紹。
在恢復(fù)秘密時(shí),V={v1,v2,…,v|v|}?U 表示授權(quán)屬性的集合,滿足:
…
其中 0≤l0≤l1≤…≤lm=|V|,當(dāng)且僅當(dāng)對(duì)于所有的 0≤i≤m,li≥ki, 則 V作為一個(gè)授權(quán)子集, 列出方 程 Fv·(→)T=σT, 即 :
則通過(guò)計(jì)算可以恢復(fù)出秘密s。
定義了一個(gè)選擇明文攻擊下的不可區(qū)分性游戲模型,游戲包括一個(gè)模擬器和一個(gè)敵手,具體定義如下:
階段 2:重復(fù)階段 1。
猜測(cè):敵手提交對(duì) b的猜想 b′。
方案中系統(tǒng)根據(jù)屬性的重要程度將不同的屬性劃分為不同的等級(jí),每個(gè)用戶持有一組屬性的私鑰,當(dāng)數(shù)據(jù)擁有者在設(shè)置訪問(wèn)策略時(shí),可以依據(jù)屬性的級(jí)別不同設(shè)置更為細(xì)粒度的控制策略,只有當(dāng)數(shù)據(jù)訪問(wèn)者的屬性集中,每層屬性的個(gè)數(shù)超過(guò)訪問(wèn)策略中設(shè)定的每層屬性的個(gè)數(shù)的門(mén)限值時(shí),才能成功通過(guò)密鑰解密密文,且一般高等級(jí)屬性的門(mén)限值要小于低等級(jí)屬性的門(mén)限值,在解密過(guò)程中,高等級(jí)屬性的解密能力要大于低等級(jí)屬性的解密能力,且可以避免高等級(jí)的屬性被多個(gè)低等級(jí)屬性合作取代的情況出現(xiàn)。
方案構(gòu)架如圖1所示,本文方案主要包括5個(gè)主體部分:
圖1 方案架構(gòu)
可信權(quán)威機(jī)構(gòu):生成系統(tǒng)的公共參數(shù)和主私鑰,為每個(gè)合法的用戶構(gòu)造私鑰并負(fù)責(zé)屬性的更新與撤銷(xiāo)。
數(shù)據(jù)管理服務(wù)器:管理上傳到服務(wù)器中的數(shù)據(jù),實(shí)現(xiàn)外部用戶的訪問(wèn)控制。
數(shù)據(jù)服務(wù)器:存儲(chǔ)上傳到服務(wù)器中的數(shù)據(jù)。
數(shù)據(jù)擁有者:設(shè)置此密文的訪問(wèn)策略對(duì)數(shù)據(jù)進(jìn)行加密,并將其上傳到數(shù)據(jù)服務(wù)器。
數(shù)據(jù)訪問(wèn)者:對(duì)數(shù)據(jù)服務(wù)器上的數(shù)據(jù)進(jìn)行訪問(wèn)。
本文方案共分為6個(gè)部分:(1)可信權(quán)威機(jī)構(gòu)生成公共參數(shù)和主密鑰;(2)為注冊(cè)的用戶生成私鑰;(3)已經(jīng)注冊(cè)的用戶根據(jù)自己設(shè)置的訪問(wèn)策略加密需要共享的數(shù)據(jù)并將其上傳至服務(wù)器中;(4)當(dāng)服務(wù)器中的數(shù)據(jù)中涉及到屬性撤銷(xiāo)時(shí),生成數(shù)據(jù)加密密鑰;(5)是對(duì)數(shù)據(jù)重加密;(6)數(shù)據(jù)訪問(wèn)者利用自己的私鑰對(duì)數(shù)據(jù)進(jìn)行解密,具體流程如圖2所示。
圖2 方案流程圖
Encrypt(PP,M,A)→CT:該算法由加密者執(zhí)行,輸入公共參數(shù)PP,明文消息M和一個(gè)屬性集U上的訪問(wèn)結(jié)構(gòu) A,輸出密文 CT。
KeyGen(MSK,D)→K:該算法由授權(quán)機(jī)構(gòu)執(zhí)行,輸入主密鑰MSK和一個(gè)用戶屬性集合D,為用戶輸出一個(gè)私鑰K。
KEKGen(Uz)→KEK(Uz):該算法由數(shù)據(jù)管理服務(wù)器執(zhí)行,若屬性Z中用戶信息更新,輸入屬性Z更新后的屬性用戶群Uz,為更新后的用戶群中的每個(gè)合法用戶輸出密鑰加密密鑰KEK(Uz)。
reEncrypt(CT,KEK(Uz))→CT*:該算法由數(shù)據(jù)管理服務(wù)器執(zhí)行,輸入密文CT和密鑰加密密鑰KEK(Uz),對(duì)密文進(jìn)行重加密,輸出CT*。
Decrypt(PP,CT*,A,K)→M:該算法由用戶執(zhí)行,輸入公共參數(shù) PP,用戶的密鑰 K,重加密密文CT*,根據(jù)屬性更新后該用戶是否仍然滿足訪問(wèn)結(jié)構(gòu)A對(duì)密文進(jìn)行解密,解密成功輸出M,否則輸出⊥。
(1)色譜條件:XBridgeTM-C18色譜柱(250 mm×4.6 mm,5 μm);填充劑為十八烷基硅烷鍵合硅膠;流動(dòng)相為乙腈-0.5%氨水,梯度洗脫:0~45 min,30%~60%乙腈;45~80 min,60%~80%乙腈;體積流量0.5 mL/min;檢測(cè)波長(zhǎng)235 nm;柱溫30 ℃;進(jìn)樣量20 μL。理論板數(shù)按烏頭堿計(jì)算不低于6 500。
密鑰加密密鑰生成 KEKGen(Uz):數(shù)據(jù)管理服務(wù)器收到關(guān)于屬性z的更新屬性群Uz后,輸出KEK(Uz),建立過(guò)程為:
將屬性群中的每個(gè)成員都分布到一棵完全二叉樹(shù)的葉子節(jié)點(diǎn)上,令每個(gè)節(jié)點(diǎn)vz對(duì)應(yīng)一個(gè)隨機(jī)密鑰KEKz,如圖3所示。若 ut∈U為樹(shù)中的某葉子節(jié)點(diǎn),令KLt為ut到根節(jié)點(diǎn)所對(duì)應(yīng)的所有隨機(jī)密鑰的集合。例如,圖3中u3的隨機(jī)密鑰鏈集合KL3={KEK10,KEK5,KEK2,KEK1}, 對(duì) 于 屬 性 用 戶 群 Uz,KEK(Uz)表示二叉樹(shù)與Uz中用戶對(duì)應(yīng)隨機(jī)密鑰的最小覆蓋集。 例如,假設(shè) Uz={u1,u2,u5,u6,u7,u8},則在圖 3 中KEK(Uz)={KEK3,KEK4}。
圖3 屬性用戶群構(gòu)造的二叉樹(shù)
數(shù)據(jù)重 加 密 reEncrypt(CT,KEK(Uz)):數(shù)據(jù) 管 理服務(wù)器收到加密密文后,根據(jù)屬性更新情況,對(duì)密文進(jìn)行再次加密。
(2)生成頭文件信息 Hdr={Ek(f-1)}k∈KEK(Uz),其中Ek(f-1)表示以k為密鑰的快速對(duì)稱(chēng)加密。
當(dāng)用戶申請(qǐng)?jiān)L問(wèn)數(shù)據(jù)時(shí),將重加密密文CT*=(Hdr,CT′)發(fā)送給用戶。
數(shù)據(jù)解密 Decrypt(PP,CT*,A,K):輸 入公共參數(shù) PP,用戶的密鑰 K,重加密密文(Hdr,CT′)。
若通過(guò)方案的解密部分正確解密密文,則驗(yàn)證方案算法正確,下面對(duì)解密部分進(jìn)行計(jì)算:
進(jìn)一步計(jì)算得出 M=M′mod p。
合謀攻擊是屬性加密中常見(jiàn)的攻擊手段,系統(tǒng)中的惡意用戶會(huì)將他們的屬性集聯(lián)合起來(lái),對(duì)一些他們各自權(quán)限之外的密文進(jìn)行非法解密。為了抵抗這種合謀攻擊,本文方案在用戶密鑰生成過(guò)程中采用隨機(jī)化處理的方法,在每個(gè)密鑰中都嵌入一個(gè)隨機(jī)元素t∈Rq,這是每個(gè)用戶獨(dú)有的進(jìn)而使用戶之間無(wú)法聯(lián)合,增加了惡意用戶合謀攻擊的難度,下面重點(diǎn)證明方案的選擇明文攻擊下的不可區(qū)分性安全。
證明 判定型RLWE問(wèn)題是針對(duì)挑戰(zhàn)預(yù)言機(jī)O,對(duì)于 SK0∈Rq,判定該挑戰(zhàn)模型是含有噪聲的偽隨機(jī)采樣機(jī)Os還是真正的隨機(jī)采樣機(jī)。詢問(wèn)挑戰(zhàn) 預(yù) 言 機(jī) O(t+1)次 , 并 返 回 (ωk,υk)∈Rq×Rq, 其 中k∈{0,1,2,…,t},游戲按照以下步驟運(yùn)行。
階段1:查詢密鑰及密鑰加密密鑰。
階段 2:重復(fù)階段 1。
則B的優(yōu)勢(shì)為:
本文方案基于格上RLWE問(wèn)題構(gòu)造了一個(gè)CP-ABE方案,選取一些其他的格上密文策略方案從訪問(wèn)結(jié)構(gòu)、困難問(wèn)題、私鑰長(zhǎng)度、密文長(zhǎng)度以及是否支持屬性撤銷(xiāo)和分層等方面進(jìn)行對(duì)比,具體結(jié)果如表1所示,其中Ac表示加密屬性個(gè)數(shù),Au表示用戶屬性規(guī)模,n、m為格上的相關(guān)參數(shù)。
表1 相關(guān)方案對(duì)比
從表1中可以看出,文獻(xiàn)[10]僅僅支持門(mén)限訪問(wèn)結(jié)構(gòu),訪問(wèn)結(jié)構(gòu)不夠靈活,文獻(xiàn)[13]和[14]采取訪問(wèn)樹(shù)的訪問(wèn)結(jié)構(gòu),文獻(xiàn)[11]采取LSSS訪問(wèn)結(jié)構(gòu),本文采取的是分層秘密共享訪問(wèn)結(jié)構(gòu),都可以實(shí)現(xiàn)與、或和門(mén)限操作。文獻(xiàn)[10]和文獻(xiàn)[14]基于LWE構(gòu)造,私鑰長(zhǎng)度分別為 2mAulogq和 mAulogq,文獻(xiàn)[11]和文獻(xiàn)[13]及本文方案基于RLWE構(gòu)造,文獻(xiàn)[14]的私鑰長(zhǎng)度為 mAulog q,文獻(xiàn)[11]、[13]和本文方案的私鑰長(zhǎng)度為(nAu+n)logq,因?yàn)閰?shù)之間存在m≥5nlogq的關(guān)系,所以本文方案的私鑰長(zhǎng)度小于文獻(xiàn)[10]和文獻(xiàn)[14],同樣在密文尺寸上,本文方案的密文長(zhǎng)度小于文獻(xiàn)[10]和文獻(xiàn)[14]。文獻(xiàn)[11]和文獻(xiàn)[13]不支持屬性撤銷(xiāo)和屬性分層,文獻(xiàn)[10]和文獻(xiàn)[14]雖然支持屬性撤銷(xiāo),但不支持屬性分層,本文方案在支持屬性分層的同時(shí)也能實(shí)現(xiàn)屬性撤銷(xiāo)。
本文利用格上的RLWE問(wèn)題構(gòu)造了支持屬性分層的可撤銷(xiāo)CP-ABE方案,并證明了滿足抗合謀攻擊和選擇明文攻擊下的安全性,方案采用多等級(jí)門(mén)限秘密共享訪問(wèn)控制矩陣實(shí)現(xiàn)了屬性的分層,在云環(huán)境的基礎(chǔ)上通過(guò)第三方機(jī)構(gòu)控制用戶對(duì)屬性陷門(mén)的獲取實(shí)現(xiàn)了高效的屬性撤銷(xiāo),在功能和性能上更適用于實(shí)際應(yīng)用環(huán)境。但是方案僅僅依靠第三方實(shí)現(xiàn)了屬性的間接撤銷(xiāo),且并未考慮對(duì)隱私信息的保護(hù)和泄露密鑰的追蹤問(wèn)題,如何實(shí)現(xiàn)用戶或者屬性的直接撤銷(xiāo),以及屬性加密機(jī)制的隱私保護(hù)和叛逆者追蹤問(wèn)題將是之后研究的重點(diǎn)。