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