龔 琴,孫學(xué)軍
(1.閩南科技學(xué)院計(jì)算機(jī)信息學(xué)院,福建 泉州 362332;2.臨沂大學(xué)費(fèi)縣校區(qū),山東 臨沂 273400)
物聯(lián)網(wǎng)技術(shù)也被稱為數(shù)據(jù)傳輸?shù)牡谌卫顺盵1],但在使用物聯(lián)網(wǎng)的過(guò)程中,會(huì)出現(xiàn)被人盜用相關(guān)密文數(shù)據(jù)的情況,因此只能限制物聯(lián)網(wǎng)的普及且必須加密物聯(lián)網(wǎng)中的密文數(shù)據(jù)[2],無(wú)法撤銷密文數(shù)據(jù),降低了用戶體驗(yàn)感,所以必須設(shè)計(jì)出密文數(shù)據(jù)加密算法保證物聯(lián)網(wǎng)訪問(wèn)的安全性[3]。
黃鳳鳴[4]等人提出基于霧計(jì)算中支持外包與撤銷的屬性基加密算法,該算法構(gòu)建"云-霧-終端"三層系統(tǒng)模型,引入屬性組密鑰技術(shù),更新動(dòng)態(tài)密鑰,實(shí)現(xiàn)物聯(lián)網(wǎng)屬性基加密,降低了屬性基加密性能。曹素珍[5]等人提出基于可驗(yàn)證混合存儲(chǔ)物聯(lián)網(wǎng)屬性基加密算法,通過(guò)用戶版本號(hào)和其屬性鑰的綁定方式實(shí)現(xiàn)撤銷,在防止不良用戶入侵密文數(shù)據(jù)時(shí)未采用雙層加密的策略,無(wú)法獲取雙倍密鑰進(jìn)行加密,存在加密效率低的問(wèn)題。趙志遠(yuǎn)[6]等人提出基于密文長(zhǎng)度恒定的物聯(lián)網(wǎng)可撤銷屬性基加密算法,通過(guò)每個(gè)用戶的屬性群密鑰不能通用的特性有效抵抗撤銷用戶與未撤銷用戶的合謀攻擊,結(jié)合支持多值屬性和通配符的"AND"門策略,實(shí)現(xiàn)物聯(lián)網(wǎng)屬性基加密,該算法無(wú)法增強(qiáng)物聯(lián)網(wǎng)數(shù)據(jù)加密算法的靈活度,導(dǎo)致屬性基加密算法的敏感程度過(guò)低。
為了解決上述問(wèn)題,提出基于區(qū)塊鏈的物聯(lián)網(wǎng)可撤銷屬性基加密算法。
Setup(1λ):在頁(yè)面中輸入屬性區(qū)域R、生產(chǎn)公鑰PK、主私鑰MSK及系統(tǒng)安全參數(shù)λ。
KGen(PK,MSK,ω,U):在頁(yè)面中輸入系統(tǒng)用戶集合U,屬性集合ω,導(dǎo)入公共參數(shù)PK,輸出用戶屬性私鑰SKω及主私鑰MSK。
此時(shí)系統(tǒng)用戶若想要獲取密鑰,系統(tǒng)將主動(dòng)為其生成專屬私鑰[7]。
2)顯示出用戶的專屬私鑰SKω=(ei)i∈ω。
記載各個(gè)屬性i∈R對(duì)應(yīng)的屬性系統(tǒng)用戶集合Ui,同時(shí)將此集合記錄在系統(tǒng)數(shù)據(jù)管理服務(wù)器中。
KEKGen(U):在頁(yè)面中導(dǎo)入屬性用戶集合U,生成系統(tǒng)用戶的專屬二叉樹(shù)KEK。
第一步:在數(shù)據(jù)管理服務(wù)器中,二叉樹(shù)KEK是按照系統(tǒng)用戶的個(gè)數(shù)決定的,且每個(gè)用戶代表二叉樹(shù)中一個(gè)葉子節(jié)點(diǎn)Vj,KEKj是每個(gè)節(jié)點(diǎn)任意產(chǎn)生的相應(yīng)密鑰。系統(tǒng)中某用戶ut的路徑密鑰是Path(ut),即ut所對(duì)應(yīng)的二叉樹(shù)節(jié)點(diǎn)到二叉樹(shù)根部節(jié)點(diǎn)所經(jīng)過(guò)的所有節(jié)點(diǎn)的集合。
第二步:KEK(Ui)是系統(tǒng)中含有屬性用戶集合Ui的最小集合,若集合中包含{u1,u2,u3,u4}4個(gè)用戶,其屬性用戶集合是Uj={u1,u2,u3},可知KEK(Uj)={KEK2,KEK6}。
當(dāng)系統(tǒng)中的用戶自帶數(shù)據(jù)時(shí),可先取得公共參數(shù)PK,按照訪問(wèn)樹(shù)T的流程,并利用Enc(PK,M,T)算法加密數(shù)據(jù)M。
第二步:假設(shè)訪問(wèn)樹(shù)中標(biāo)記成已分配根節(jié)點(diǎn)值為s,除s外的所有節(jié)點(diǎn)均是未分配,且節(jié)點(diǎn)表示數(shù)據(jù)屬性。則訪問(wèn)樹(shù)中從樹(shù)頂?shù)綐?shù)根未分配的節(jié)點(diǎn)的運(yùn)行遞歸算法如下。
(1)
求解出上述式子后回到密文C=(C0,{C1,i,C2,i}i∈T),即完成可撤銷屬性基加密算法[8]。
物聯(lián)網(wǎng)中除了數(shù)據(jù)因盜用需要加密外,用戶安全也是一大問(wèn)題,有很多不良用戶進(jìn)入系統(tǒng)并威脅系統(tǒng)安全,因此驗(yàn)證用戶身份也是物聯(lián)網(wǎng)需要加密的一項(xiàng)任務(wù)。
經(jīng)過(guò)上述對(duì)物聯(lián)網(wǎng)中的數(shù)據(jù)完成第一次加密保證了數(shù)據(jù)安全,為進(jìn)一步提升物聯(lián)網(wǎng)系統(tǒng)的安全,可利用區(qū)塊鏈技術(shù)的優(yōu)勢(shì)再次進(jìn)行加密,并將加密數(shù)據(jù)存儲(chǔ)在區(qū)塊鏈中,同時(shí)通過(guò)加密方式驗(yàn)證用戶身份保證物聯(lián)網(wǎng)系統(tǒng)安全。
PK=(C0,C1,p,g,h=gβ,e(g,g)α,F(xiàn),H1,H2)
(2)
式中,e(g,g)代表在群G1中雙線性映射的值。則物聯(lián)網(wǎng)系統(tǒng)的主私鑰為
MK=(α,β)
(3)
Enc(PK,D,W,SKS,Γ,K1,K2)→C,MAC,I,若DO中含有n個(gè)明文文檔,用函數(shù)表示為
D={D1,D2,…,Dn}
(4)
并且需將n個(gè)明文文檔加密后并傳輸?shù)紺SP中。
1)物聯(lián)網(wǎng)中的文檔加密
FileEnc(D,K1,K2)→C,MAC。物聯(lián)網(wǎng)中自帶數(shù)據(jù)的用戶記為DO,DO數(shù)據(jù)中明文文檔的對(duì)稱加密密鑰K1可在{0,1}k中任意選取。自帶數(shù)據(jù)用戶利用密鑰K1加密文檔Di(i∈[1,n]),可獲取如下文檔
Ci={ε.EncK1(Di)|i∈[1,n]}
(5)
式中,ε代表文檔安全的對(duì)稱加密計(jì)劃,ε.Dec代表物聯(lián)網(wǎng)基于區(qū)塊鏈的解密過(guò)程,ε.Enc代表物聯(lián)網(wǎng)基于區(qū)塊鏈的加密過(guò)程。
自帶數(shù)據(jù)用戶在集合{0,1}k中選擇密鑰K2后產(chǎn)生的密文文檔Ci(i∈[1,n])的消息驗(yàn)證碼集合為
MACCi={H2(K2,Ci)|i∈[1,n]}
(6)
同時(shí)系統(tǒng)用戶將其自帶數(shù)據(jù)中的所有密文文檔C={C1,C2,…,Cn}輸送給CSP。
2)密鑰加密
KeyEnc(PK,K1,Γ)→CK1,在密鑰K1中,自帶數(shù)據(jù)用戶DO規(guī)定出訪問(wèn)結(jié)構(gòu)為Γ,將結(jié)構(gòu)Γ視為樹(shù),其根部自下而上經(jīng)過(guò)的所有節(jié)點(diǎn)x標(biāo)記為階dx的已分配常數(shù)多項(xiàng)式為qx,當(dāng)Γ中節(jié)點(diǎn)x的門限值為kx,令deg 為
deg(qx)=dx=kx-1
(7)
(8)
式中,att(y)代表區(qū)塊鏈屬性值,s代表任意數(shù)。
3)生成索引
IndexGen(PK,W,SKs)→I。自帶數(shù)據(jù)用戶DO在其數(shù)據(jù)文檔D={D1,D2,…,Dn}內(nèi)選取出關(guān)鍵詞,若關(guān)鍵詞集合為W={w1,w2,…,wm},由于每個(gè)關(guān)鍵詞都屬于集合W,因此DO所選取的大小為n的空數(shù)組DB(wi)也屬于集合W,其中,當(dāng)空數(shù)組DB(wi)內(nèi)的第j個(gè)文檔含有關(guān)鍵詞wi,則DB(wi)[j]=1,除此之外的DB(wi)[j]=0。
4)上傳數(shù)據(jù)
自帶數(shù)據(jù)用戶DO利用安全信息傳輸通道把K2、MAC={MACC1,MACC2,…,MACCn}及SKS上傳給TA。
(9)
通過(guò)TA可以給予DU信息驗(yàn)證碼集合MAC={MACC1,MACC2,…,MACCn}、認(rèn)證密鑰K2和搜索密鑰SKS三種信息,當(dāng)存在不相同的DU時(shí),除屬性私鑰SKU為不相同,其余皆相同。
Search(I,Tkw)→CK1,DB(kw)。DU利用交易TXT把搜索令牌Tkw傳送到搜索合約地址Adds,并借用智能合約的addIndex()函數(shù)將其發(fā)送到搜索令牌Tkw中進(jìn)行搜索[11]。
在智能合約中檢索出DB(kw)及CK1,并把CK1傳送至借用合約DU中。因?yàn)閰^(qū)塊鏈中的所有數(shù)據(jù)皆為公開(kāi)使用,因此用戶和云服務(wù)器都可隨時(shí)獲取DB(kw),聯(lián)合智能合約進(jìn)行搜索還可降低云服務(wù)器的存儲(chǔ)負(fù)擔(dān)及成本[12]。
在保證云服務(wù)器結(jié)果是最正確的條件下,用戶最終獲取的密文文檔一定是正確的,因此不再需要驗(yàn)證,隨之降低了成本。
Dec(SKU,CK1,Ckw)→Dkw,用戶得到正確的密文文檔后通過(guò)驗(yàn)證其是否含有解密功能,即驗(yàn)證出其具有解密功能后,可立即進(jìn)行解密并獲取明文文檔,否則反之。
1)認(rèn)證密鑰:Test(SKU,CK1)→K1,當(dāng)用戶獲取密文Ck1后立即檢測(cè)密文的訪問(wèn)計(jì)劃Γ是否匹配其屬性私鑰SKU,若匹配,則根據(jù)從上到下的遞歸算法進(jìn)行運(yùn)算,并獲取A=e(g,g)rs,否則回到第一步重新運(yùn)算,經(jīng)上述運(yùn)算用戶即可還原其對(duì)稱密鑰為:
=[K1e(g,g)αse(g,g)rs]/e(g,g)s(r+α)
(10)
2)物聯(lián)網(wǎng)用戶解密Dec(Ckw,K1)→Dkw,通過(guò)解密獲取對(duì)稱密鑰K1、含有查詢關(guān)鍵詞的明文文檔及密文文檔,即Dj={ε.Dec(K1,Ci)|i∈[1,j]}。
為了驗(yàn)證所提算法的整體有效性,在某公司信息安全傳輸系統(tǒng)中的Hadoop平臺(tái)進(jìn)行加密復(fù)雜程度、加密效率和密鑰敏感程度測(cè)試。
密鑰越短數(shù)據(jù)加密復(fù)雜度越低,由圖1中的數(shù)據(jù)可知,其它兩種算法安全等級(jí)越高密鑰越長(zhǎng),文獻(xiàn)[5]算法的密鑰長(zhǎng)度甚至高于7200,而所提算法在同一安全等級(jí)下的密鑰長(zhǎng)度最短,且無(wú)論多大等級(jí)其長(zhǎng)度始終不超過(guò)300,因?yàn)樗崴惴ɡ每沙蜂N加密算法和區(qū)塊鏈加密算法形成混合加密算法后對(duì)物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行加密,大大提高加密性能,從而降低加密復(fù)雜度。
圖1 不同算法的加密復(fù)雜度
比較三種算法在加密過(guò)程中不同階段所消耗的時(shí)間,分析圖2可知,在任何階段所提算法的時(shí)間消耗都是最低的,將所有階段的所需時(shí)間加在一起形成加密時(shí)間消耗,發(fā)現(xiàn)所提算法的加密時(shí)間消耗僅用3.56s,文獻(xiàn)[4]算法用時(shí)7.58s,文獻(xiàn)[5]算法的加密時(shí)間已經(jīng)超過(guò)10s,證明所提算法最優(yōu),這是由于所提算法在實(shí)現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)信息加密時(shí)采用雙層加密的策略,獲取雙倍密鑰進(jìn)行加密,加快加密速度,減少加密時(shí)間,提高加密效率。
圖2 三種算法不同階段的時(shí)間消耗
加密算法的對(duì)稱加密算法及公鑰加密算法組成了明文敏感性,因此若明文發(fā)生變化,則密文數(shù)據(jù)隨之發(fā)生改變,改變?cè)酱笳f(shuō)明算法越敏感,由圖3可知,利用所提算法、文獻(xiàn)[4]算法和文獻(xiàn)[5]算法經(jīng)多次實(shí)驗(yàn)比較其敏感程度,所提算法的敏感程度經(jīng)多次迭代其敏感程度一直保持50%以上,而文獻(xiàn)[4]算法和文獻(xiàn)[5]算法的敏感程度都過(guò)低,因?yàn)樗崴惴ㄊ紫仍O(shè)計(jì)出帶有密鑰加密密鑰的可撤銷加密算法再進(jìn)行物聯(lián)網(wǎng)數(shù)據(jù)加密,以加強(qiáng)物聯(lián)網(wǎng)數(shù)據(jù)加密算法的靈活度,從而提升算法的敏感程度。
圖3 密鑰敏感程度
針對(duì)當(dāng)前算法的不足,提出基于區(qū)塊鏈的物聯(lián)網(wǎng)可撤銷屬性基加密算法。該算法設(shè)計(jì)出可對(duì)密鑰進(jìn)行加密的互聯(lián)網(wǎng)可撤銷屬性基的加密算法,再利用區(qū)塊鏈技術(shù)設(shè)計(jì)出物聯(lián)網(wǎng)數(shù)據(jù)的加密算法,中和兩種加密算法,實(shí)現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)加密。經(jīng)試驗(yàn)表明,所提算法加密復(fù)雜度低、加密效率高和密鑰敏感程度高,由于部分物聯(lián)網(wǎng)在云環(huán)境下需要加收用戶驗(yàn)證費(fèi)用,因此接下來(lái)以平衡用戶與服務(wù)器之間費(fèi)用問(wèn)題展開(kāi)研究。