加密技術(shù)之密文策略屬性

針對云存儲數(shù)據(jù)共享特性安全問題,我們提出了一種基于可信第三方密文策略屬性加密技術(shù)的云存儲共享方案,利用可信第三方有效地解決了用戶端負(fù)載量過大、密鑰分發(fā)與管理負(fù)擔(dān)等問題,采用密文控制訪問技術(shù),保證了數(shù)據(jù)在不完全可信云環(huán)境下的安全性。

一、密文策略屬性相關(guān)知識

1、CP-ABE相關(guān)術(shù)語定義

(1)屬性:設(shè)P={p1,p2,…,pn}為所有屬性的集合,則每個屬性4是P的一個非空子集,A∈{P1,P2….,PN},那么n個屬性可以鑒別2n個用戶。

(2)訪問結(jié)構(gòu):訪問的結(jié)構(gòu)丁是全集{P1,P2,…,Pn}的一個非空子集,T∈2{P1,P2,…,Pn}。T代表一個屬性判斷條件:在T中的屬性集合稱為授權(quán)集,不在F中的屬性集合稱為非授權(quán)集。

(3)訪問結(jié)構(gòu)樹:用來描述每一個訪問結(jié)構(gòu),如圖1,樹的每個節(jié)點代表一個屬性項,每個內(nèi)部節(jié)點代表一個門關(guān)系,可以是AND(n of n)、or(l ofn)以及n ofm(m>n)等。

加密技術(shù)之密文策略屬性

2、CP-ABE算法

CP-ABE算法的主要步驟如下:

(1)Setup,生成主密鑰MK和公開參數(shù)PK。

(2)CT=Encrypt( PK,M,T),使用PK、訪問結(jié)構(gòu)T和加密數(shù)據(jù)明文M,加密后的密文為CT。

(3)SK=KeyGen( MK,A),使用MK和用戶屬性集A生成用戶的私鑰SK。

(4)M=Decrypt( CT,SK),使用私鑰解密密文CT得到明文M。

二、安全假定

(1)可信第三方是完全可信的;

(2)云服務(wù)提供商(Cloud Service Provider,CSP)是不完全可信的,不完全可信說明CSP不會隨意泄露其服務(wù)端的數(shù)據(jù),會向可信第三方提供其用戶準(zhǔn)確的屬性集,而且可能會窺探數(shù)據(jù)內(nèi)容。

(3)具有訪問權(quán)限的用戶不會有意泄露自己的個人信息和密文相關(guān)信息給其他的用戶或CSP。

三、加密技術(shù)之密文策略屬性方案實現(xiàn)

1、主要思想

在實際應(yīng)用中,由于CP-ABE算法是非對稱,算法效率不高,不適合直接對大規(guī)模數(shù)據(jù)文件進(jìn)行加密,因此,在加密過程中數(shù)據(jù)所有者首先使用對稱加密算法加密源文件得到數(shù)據(jù)密文和密文密鑰,然后把數(shù)據(jù)密文、數(shù)據(jù)密文密鑰和訪問結(jié)構(gòu)發(fā)送給TTP,TTP根據(jù)不同的權(quán)限的訪問結(jié)構(gòu)使用CP-ABE加密數(shù)據(jù)密文密鑰得到相應(yīng)的密鑰密文,然后把密鑰密文發(fā)送給CSP,用戶向CSP提出申請訪問權(quán)限,得到數(shù)據(jù)密文、密鑰密文和簽名,向TTP發(fā)送自己的屬性證書,從而得到私鑰。利用私鑰解密密鑰密文得到數(shù)據(jù)密文密鑰,再對數(shù)據(jù)密文進(jìn)行解密訪問數(shù)據(jù)文件,當(dāng)數(shù)據(jù)所有者需要對文件進(jìn)行更新時,只需重新生成一份數(shù)據(jù)密文發(fā)送給CSP,若需要更改訪問策略時,只需要把更新后的訪問結(jié)構(gòu)發(fā)送給可信第三方,而由可信第三方來完成剩下的工作,降低了數(shù)據(jù)所有者重新生成密鑰和分發(fā)密鑰的時間代價,其基本架構(gòu)如圖2所示。

加密技術(shù)之密文策略屬性

2、系統(tǒng)架構(gòu)

本方案中各個實體間的通信通道默認(rèn)是安全的。

1)加密文件

生成并存儲3DES算法的密鑰K3d,數(shù)據(jù)所有者將文件F用K3d進(jìn)行加密得到加密后的密文Cf,因為CSP雖然是可信但是好奇,不能將K3d與0同時存儲在云端,防止CSP窺探數(shù)據(jù)內(nèi)容,數(shù)據(jù)所有者將Cf、K3d以及訪問結(jié)構(gòu)?。òㄖ蛔x訪問結(jié)構(gòu)N和讀寫訪問結(jié)構(gòu)L)發(fā)送給rrP。

2)生成密鑰密文

rrP從用戶得到K3d與訪問結(jié)構(gòu)丁,并初始化CP-ABE算法生成主密鑰MK和公開參數(shù)PK,一個RSA公私鑰對Ksign/KVerify用于對加密后的數(shù)據(jù)進(jìn)行簽名/驗證,為了控制訪問權(quán)限,假設(shè)只讀權(quán)限的訪問結(jié)構(gòu)為Tro,則對應(yīng)密文為CTr=Encrypt(PK,{ K3d,rify},Tro).假設(shè)讀寫權(quán)限的訪問結(jié)構(gòu)為T、則對應(yīng)密文為CTn=Encrypt( PK,{K3d,fy,Ksign},L),密鑰,SK與用戶屬性相關(guān)聯(lián),當(dāng)用戶屬性滿足訪問結(jié)構(gòu)Tr0或L時,才能對密鑰密文CTr0或CTrw解密,Ksign對密文Cf簽名得到SIGf,并把Cf、SIGf、CT與CTny上傳至CSP。

3)訪問文件

(1)讀數(shù)據(jù)

用戶首先向CSP獲取文件F讀權(quán)限的請求,云端返回Cf、SIf以及CTro接著向TrIP發(fā)送自己的屬性證書AC.TTP動態(tài)生成密鑰SK=KeyGen( MK,AC)并返回給用戶,用戶通過SK解密CTro得到K3d和K,首先使用Kr驗證簽名SIGrf的正確性,最后使用為d解密0得到文件F。

(2)寫數(shù)據(jù)

用戶首先向CSP獲取文件F讀寫權(quán)限的請求,云端返回Cf、SIGf以及CTrw.接著向Trp發(fā)送自己的屬性證書AC.TrIP動態(tài)生成密鑰SK=KeyGen( MK,AC)并返回給用戶,用戶通過SK解密CTn、T得到K3d。rify和Ksign.首先使用K0rify驗證簽名SIGf的正確性,其次用K3r解密0得到文件F,寫入數(shù)據(jù)后,用K3d加密F得到Cf,用Ksign對Cf加密得到SIGf,最后將Cf與SIGf上傳至云存儲服務(wù)器。

4)訪問權(quán)限控制

數(shù)據(jù)所有者更改訪問權(quán)限時,只需更改訪問結(jié)構(gòu),并將更改后的訪問結(jié)構(gòu)丁發(fā)送給TTP,TTP及時更新訪問結(jié)構(gòu)TTP及k,若用戶的權(quán)限被撤銷,則其私鑰SK=KeyGen(MK,AC)將不能再解密CT或CTn、T,因而保證了文件F的安全。

小知識之云存儲

云存儲是在云計算(cloud computing)概念上延伸和發(fā)展出來的一個新的概念,是一種新興的網(wǎng)絡(luò)存儲技術(shù),是指通過集群應(yīng)用、網(wǎng)絡(luò)技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作,共同對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問功能的一個系統(tǒng)。