本發(fā)明涉及文件加密技術(shù)領(lǐng)域,具體涉及一種支持多值分配和屬性組合的基于屬性的加密方法。
背景技術(shù):
由于具有一次加密、多人分享的優(yōu)勢,作為一種密文共享算法,基于屬性的加密(CP-ABE,Cipher Policy Attribute Based Encryption)算法受到廣泛關(guān)注。然而,絕大多數(shù)CP-ABE算法存在兩個明顯的問題:
不支持屬性取多個值。在已有的算法中,某一類屬性只能出現(xiàn)一次且只能取一個值。而在實際應用中,有些屬性會多次出現(xiàn)且多次取值。例如,在描述企業(yè)員工屬性時,屬性“職務”可能出現(xiàn)多次,某員工可能是銷售部經(jīng)理,同時還可能是人力資源部的副經(jīng)理。這種情況下,CP-ABE算法就無法描述。
不支持屬性組合。CP-ABE算法不支持不同類屬性進行組合,使得一些現(xiàn)實情況無法準確描述。在上述例子中,假設(shè)CP-ABE算法支持多值分配,如果用“銷售部”、“人力資源部”、“經(jīng)理”和“副經(jīng)理”描述該員工,則會引起理解上的歧義。
僅有的支持多值分配和屬性組合的CP-ASBE算法,由于算法結(jié)構(gòu)過于復雜、性能較差,很難應用實施。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的是現(xiàn)有的基于屬性的加密算法不支持多值分配和屬性組合的問題。
本發(fā)明通過下述技術(shù)方案實現(xiàn):
一種支持多值分配和屬性組合的基于屬性的加密方法,包括:
初始化:設(shè)置安全參數(shù)d;授權(quán)中心選擇一個階為大素數(shù)p的雙線性群G0和G1,記G0的生成元為g,對應的雙線性映射為e:G×G→GT;定義系統(tǒng)所需的屬性集合A={a1,a2,…,an}和組合屬性名集合AA={AA1,AA2,…,AAm},定義一個哈希函數(shù)H:{0,1}*→G;隨機選擇 將系統(tǒng)公鑰信息PK={G0,g,gβ,e(g,g)α}發(fā)往云服務器并公開,數(shù)據(jù)所有者秘密保存主私鑰MK={gα,β},其中,為大素數(shù)p的剩余類集合中與大素數(shù)p互素的元素構(gòu)成的集合;
生成用戶私鑰:定義給用戶Ui分配的基本屬性集合為組合屬性集合為w”;選擇用戶私鑰隨機數(shù)對于每個元素aj∈w',隨機選擇生成私鑰為 其中,alk為構(gòu)成組合屬性Al的第l個基本屬性;
加密:將代表訪問策略的訪問邏輯表達式轉(zhuǎn)變?yōu)樵L問結(jié)構(gòu)樹T;為訪問結(jié)構(gòu)樹T每個葉子節(jié)點賦值其中,LT表示葉子節(jié)點的集合;生成的密文為CT=(CTi(1)=m·e(g,g)αs,CT(2)=hs,且parent(li)為基本的:且parent(li)為組合的:其中,libj∈liB,liB為li所有兄弟葉子節(jié)點構(gòu)成的集合,att()用來求葉子節(jié)點對應的屬性;
解密:
對于訪問結(jié)構(gòu)樹T的葉子節(jié)點,如果葉子節(jié)點z對應的屬性為基本屬性,則 其中,QZ(0)為葉子節(jié)點z對應多項式的常數(shù)項;
對于訪問結(jié)構(gòu)樹T的葉子節(jié)點,如果葉子節(jié)點z對應的屬性為組合屬性,則
對于訪問結(jié)構(gòu)樹T的非葉子節(jié)點x,
其中,sx為非葉子節(jié)點x的所有孩子節(jié)點構(gòu)成的集合,index(z)為葉子節(jié)點z在兄弟節(jié)點中的排行序號,parent(z)為葉子節(jié)點z的父節(jié)點,Qx(0)為非葉子節(jié)點x對應多項式的常數(shù)項;
對于訪問結(jié)構(gòu)樹T的根節(jié)點root,其中,Qr(0) 為根節(jié)點root對應多項式的常數(shù)項;
解密恢復明文為:
可選的,將代表訪問策略的訪問邏輯表達式轉(zhuǎn)變?yōu)樵L問結(jié)構(gòu)樹T包括:
在訪問結(jié)構(gòu)樹T中,每個葉子節(jié)點代表基本屬性集合中的一個屬性,其門限值為1;
在訪問結(jié)構(gòu)樹T中,每個非葉子節(jié)點起門限作用;
如果同屬于一個父節(jié)點的葉子節(jié)點所對應的屬性名能夠形成組合屬性名,則:構(gòu)建新的AND門限節(jié)點并將其標識為組合,讓新的AND門限節(jié)點為該父節(jié)點的孩子,將構(gòu)成組合屬性的基本屬性所對應的葉子節(jié)點全部變更為新的AND門限節(jié)點的孩子節(jié)點。
可選的,在訪問結(jié)構(gòu)樹T中,如果葉子節(jié)點對應的為非屬性,將該葉子節(jié)點用相應的編碼屬性節(jié)點替代。
可選的,為訪問結(jié)構(gòu)樹T每個葉子節(jié)點賦值包括:
為操作符為AND的非葉子節(jié)點x隨機選擇一個一元numx-1次多項式函數(shù)Qx(x),為葉子節(jié)點z隨機選擇一個一元多項式函數(shù)Qz(x),其中,numx為非葉子節(jié)點x的孩子節(jié)點的個數(shù);
為根節(jié)點root隨機選擇秘密共享數(shù)且s=Qr(0),Qr(i)為根節(jié)點root第i個孩子節(jié)點對應的秘密共享數(shù);
對于任意非根節(jié)點y且其父節(jié)點操作符為AND,Qy(0)=Qparent(y)(index(y)),其中,index(y)為非根節(jié)點y在兄弟節(jié)點中的排行序號;
對于任意非根節(jié)點y且其父節(jié)點操作符為OR,Qy(0)=Qparent(y)(0)。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下的優(yōu)點和有益效果:
本發(fā)明提供的支持多值分配和屬性組合的基于屬性的加密方法,在用戶私鑰生成和密文計算時將構(gòu)成組合屬性的基本屬性進行綁定。本方法不僅支持同一類屬性多次出現(xiàn),還允許不同屬性進行組合以形成組合屬性。在用戶私鑰生成時,不僅要為基本屬性計算私鑰子項,還要為組合屬性計算私鑰子項。在計算共享密文時,先要掃描訪問結(jié)構(gòu)樹以識別出組合屬性。在出現(xiàn)組合屬性的情況下,秘密共享基于的是組合屬性而非基本屬性。本發(fā)明提供的支持多值分配和屬性組合的基于屬性的加密方法,有著和經(jīng)典CP-ABE算法一樣的安全性和相當?shù)?性能表現(xiàn),但卻和CP-ASBE算法一樣支持屬性多值分配和屬性組合。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下面結(jié)合實施例,對本發(fā)明作進一步的詳細說明,本發(fā)明的示意性實施方式及其說明僅用于解釋本發(fā)明,并不作為對本發(fā)明的限定。
實施例
屬性是指事物的特性,它由屬性名和屬性值組成。屬性名類似數(shù)據(jù)庫中的字段名,是對屬性本身的概括描述,屬性值則是對屬性的具體說明。屬性名和屬性值相結(jié)合才能實現(xiàn)對屬性的準確描述。直接從事物特征中提取出來的屬性,被稱作基本屬性。由多個不同基本屬性組合而形成的屬性,被稱作組合屬性。例如,“部門:銷售”和“職務:經(jīng)理”這兩個基本屬性組合起來就形成了組合屬性“部門職務:銷售經(jīng)理”。
所有的基本屬性組合起來就形成了基本屬性集合,所有的組合屬性組合起來就形成了組合屬性集合。然而,并非任意兩個或多個基本屬性就能構(gòu)成一個組合屬性,因為這樣的組合從邏輯上講沒有意義,如“學歷:研究生”和“部門:銷售”。為確保形成正確的組合屬性,需要人為地進行基本屬性關(guān)聯(lián)。例如,將屬性名分別為“部門”和“職務”進行關(guān)聯(lián),就可以形成“部門職務”組合屬性名,對應的屬性也稱作關(guān)聯(lián)屬性。顯然,該組合屬性的取值空間為“部門”的所有屬性值和“職務”的所有屬性值兩兩組合形成的空間。
上述屬性組合方法使得同一類屬性不僅可以取多個值,還可以防止歧義的產(chǎn)生。例如,同一個人的“職務”屬性就可以取多個值,不僅取值可以為“經(jīng)理”和“副經(jīng)理”,還可以取值為“經(jīng)理”和“經(jīng)理”。如果一個人同時為銷售部經(jīng)理和人力資源部副經(jīng)理,使用組合屬性“部門職務:銷售部經(jīng)理”和“部門職務:人力資源部副經(jīng)理”就能精確地描述?;诖?,本發(fā)明在用戶私鑰生成和密文計算時將構(gòu)成組合屬性的基本屬性進行綁定,提出一種支持多值分配和屬性組合的基于屬性的加密方法,包括初始化、生成用戶私鑰、加密以及解密四個步驟。
初始化:設(shè)置安全參數(shù)d;授權(quán)中心選擇一個階為大素數(shù)p的雙線性群G0和G1,記G0的生成元為g,對應的雙線性映射為e:G×G→GT;定義系統(tǒng)所需的屬性集合A={a1,a2,…,an}和組合屬性名集合AA={AA1,AA2,…,AAm},定義一個哈希函數(shù)H:{0,1}*→G;隨機選擇 將系統(tǒng)公鑰信息PK={G0,g,gβ,e(g,g)α}發(fā)往云服務器并公開,數(shù)據(jù)所有者秘密保存主私鑰MK={gα,β},其中,為大素數(shù)p的剩余類集合中與大素數(shù)p互素的元素構(gòu)成的 集合。
生成用戶私鑰:定義給用戶Ui分配的基本屬性集合為組合屬性集合為w”;選擇用戶私鑰隨機數(shù)對于每個元素aj∈w',隨機選擇生成私鑰 其中,alk為構(gòu)成組合屬性Al的第l個基本屬性。需要說明的是,凡是出現(xiàn)在組合屬性中的基本屬性也都屬于基本屬性集合,組合屬性名稱的集合為組合屬性名集合AA的子集。
加密:將代表訪問策略的訪問邏輯表達式轉(zhuǎn)變?yōu)樵L問結(jié)構(gòu)樹T;為訪問結(jié)構(gòu)樹T每個葉子節(jié)點賦值其中,LT表示葉子節(jié)點的集合;生成的密文為CT=(CTi(1)=m·e(g,g)αs,CT(2)=hs,且parent(li)為基本的:且parent(li)為組合的:其中,libj∈liB,liB為li所有兄弟葉子節(jié)點構(gòu)成的集合。
具體地,在訪問結(jié)構(gòu)樹T中,每個葉子節(jié)點都代表基本屬性集合中的一個屬性,其門限值為1;每個非葉子節(jié)點起門限作用。如果分別用numx和kx表示非葉子節(jié)點x的孩子節(jié)點的個數(shù)和門限值,那么必有0<kx≤numx。當非葉子節(jié)點x的門限為AND門限時,其門限值kx=numx;當非葉子節(jié)點x的門限為OR時,其門限值kx=1。
在掃描訪問結(jié)構(gòu)樹T的葉子節(jié)點時,確定是否存在組合屬性和編碼屬性。如果同屬于一個父節(jié)點的葉子節(jié)點所對應的屬性名能夠形成組合屬性名,那么就需要對以該父節(jié)點為根節(jié)點的子樹進行改造。改造具體方法為:構(gòu)建新的AND門限節(jié)點并將其標識為組合,讓新的AND門限節(jié)點為該父節(jié)點的孩子節(jié)點,將構(gòu)成組合屬性的基本屬性所對應的葉子節(jié)點全部變更為新的AND門限節(jié)點的孩子節(jié)點。如果葉子節(jié)點對應的是非屬性,將該葉子節(jié)點用相應的編碼屬性節(jié)點替代。
設(shè)訪問結(jié)構(gòu)樹T的根節(jié)點為r,Tx表示根節(jié)點為x的訪問控制樹,顯然有T=Tr。如果屬性集滿足訪問控制樹Tx,記為Tx(γ)=1。計算可以按下面方式遞歸進行:如x為非葉子節(jié)點,為該非葉子節(jié)點的所有孩子節(jié)點x'計算Tx'(γ),當且僅當至少kx個孩子的Tx'(γ)返回值都為1時,Tx(γ)=1;如x為葉子節(jié)點,當且僅當葉子節(jié)點x的屬性屬于γ時,Tx(γ)=1。
為訪問結(jié)構(gòu)樹T每個葉子節(jié)點賦值是按照從上至下進行。具體地,為訪問結(jié)構(gòu)樹T中每個操作符為AND的非葉子節(jié)點x隨機選擇一個一元numx-1次多項式函數(shù)Qx(x),為葉子節(jié)點z隨機選擇一個一元多項式函數(shù)Qz(x);為根節(jié)點root隨機選擇秘密共享數(shù)且s=Qr(0),Qr(i)為根節(jié)點root第i個孩子節(jié)點(按從左到右的順序編號)對應的秘密共享數(shù);對于任意非根節(jié)點y且其父節(jié)點操作符為AND,Qy(0)=Qparent(y)(index(y)),其中,index(y)為非根節(jié)點y在兄弟節(jié)點中的排行序號;對于任意非根節(jié)點y且父節(jié)點操作符為OR,Qy(0)=Qparent(y)(0)。
解密:
對于訪問結(jié)構(gòu)樹T的葉子節(jié)點,如果葉子節(jié)點z對應的屬性為基本屬性,則 其中,QZ(0)為葉子節(jié)點z對應多項式的常數(shù)項;
對于訪問結(jié)構(gòu)樹T的葉子節(jié)點,如果葉子節(jié)點z對應的屬性為組合屬性,則
對于訪問結(jié)構(gòu)樹T的非葉子節(jié)點x,
其中,sx為非葉子節(jié)點x的所有孩子節(jié)點構(gòu)成的集合,index(z)為葉子節(jié)點z在兄弟節(jié)點中的排行序號,parent(z)為葉子節(jié)點z的父節(jié)點,Qx(0)為非葉子節(jié)點x對應多項式的常數(shù)項;
對于訪問結(jié)構(gòu)樹T的根節(jié)點root,有其中,Qr(0)為根節(jié)點root對應多項式的常數(shù)項;
解密恢復明文為:
以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。