[發明專利]一種基于ADD支持讀寫功能的密文策略屬性基加密方法有效
| 申請號: | 202011132274.8 | 申請日: | 2020-10-21 |
| 公開(公告)號: | CN112217641B | 公開(公告)日: | 2022-09-27 |
| 發明(設計)人: | 李龍;方穎;李晶晶;古天龍;常亮;李笠 | 申請(專利權)人: | 桂林電子科技大學 |
| 主分類號: | H04L9/08 | 分類號: | H04L9/08;H04L9/14;H04L9/30;G06F21/60 |
| 代理公司: | 桂林市華杰專利商標事務所有限責任公司 45112 | 代理人: | 童世鋒 |
| 地址: | 541004 廣*** | 國省代碼: | 廣西;45 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 add 支持 讀寫 功能 策略 屬性 加密 方法 | ||
1.一種基于ADD支持讀寫功能的密文策略屬性基加密方法,其特征在于,包括如下步驟:
1)構造ADD訪問結構
在給定訪問策略后,生成ADD訪問結構的過程包括如下步驟:
1-1)訪問策略的偽布爾函數表示
假設訪問策略中屬性集合為{x0,x1,…,xn-1},將訪問策略轉換為偽布爾函數f(x0,x1,…,xn-1)的過程如下:
1-1-1)對于屬性集合{x0,x1,…,xn-1}的2n-1個非空子集,分別執行集合內屬性的合取操作,得到2n-1個連接式,記作:
1-1-2)根據訪問策略求得非空子集的權重
1-1-3)結合權重,對連接式進行析取操作,獲得偽布爾函數
1-2)根據偽布爾函數構造相應的ADD訪問結構
針對同一函數,不同的變量序,即屬性順序會生成不同的ADD,因此,在構造ADD之前給定變量序π:x0x1…xn-1,對于ADD中任一節點u,若u是終端節點,則fu是常數;若u是非終端節點則其中“·”表示邏輯乘,“+”表示邏輯加;和分別表示偽布爾函數fu中變量u.var取值1和0時得到的偽布爾函數,即子節點u.high和u.low所對應的偽布爾函數;
ADD構造完成后,按照由上而下、從左至右的順序對所有節點進行重新編號,得到ADD訪問結構其中id為節點編號、ID為ADD中全部非終端節點編號,var為節點上的屬性、I為ADD中所有屬性組成的屬性集,本質上可使用四元組id,var,high,low表示,其中id為節點編號、var為節點上的屬性、high為本節點1-分支節點編號、low為本節點0-分支節點編號,ADD中編號為0、1、2、3的節點為終端節點,編號為4的節點為根節點root;
2)確定ADD訪問結構中的有效路徑
對于ADD訪問結構中從根節點到非零終端節點的有向路徑,若屬性出現的順序嚴格按照變量序π,且任意屬性至多出現一次,則該路徑被稱為是一條有效路徑,為了實現對密文的只讀、只寫、讀寫操作,根據有效路徑所達到的不同終端節點,將有效路徑進一步區分如下:
當且終端節點的id為1時,有效路徑為只讀路徑;
當且終端節點的id為2時,有效路徑為只寫路徑;
當且終端節點的id為3時,有效路徑為讀寫路徑;
3)基于ADD的CP-ABE方案
基于ADD的CP-ABE方案的實現過程中,共涉及4個實體:授權中心、數據加密方即數據擁有者、數據解密方即數據使用者、云服務器,其中授權中心負責執行Setup算法以及Keygen算法,分別實現系統建立以及用戶私鑰生成的功能;數據加密方執行Encrypt算法,完成明文加密;數據解密方執行Decrypt算法,實現對密文的讀、寫操作;云服務器負責密文數據的存儲;該方案的具體實現步驟如下:
3-1)系統建立:由授權中心執行Setup算法,生成系統公鑰PK和主密鑰MK,具體為:選擇p階雙線性群G0,生成元為隨機數g,定義雙線性映射e:G0×G0→G1;系統屬性集合N中包含m個屬性,記為N={att0,att1,…,attm-1},隨機選擇Zp中的元素y,α,t′0,t′1,…,t′m-1,t″0,t″1,…,t″m-1,令Y∶=e(g,g)y,X∶=e(g,g)α,最終生成系統公鑰PK:=e,g,Y,X{(T′i,T″i)|0≤i≤m-1}和主密鑰MK:=y,α,{(t′i,t″i)|0≤i≤m-1},定義全局變量rcount=0實時記錄讀取共享資源的人數,互斥變量mutex=1保護rcount更新時的互斥性,rw=1確保讀操作和寫操作的互斥性,w=1實現寫進程的優先級;
3-2)明文加密:由數據加密方執行Encrypt算法,最終生成密文數據CT,具體為:數據加密方首先根據具體的訪問策略生成相應的偽布爾函數,并進一步構造偽布爾函數相應的ADD結構;在該ADD結構的基礎之上,按照由上而下、從左至右的順序對所有節點進行重新編號,得到ADD訪問結構其中id為節點編號、ID為ADD中全部非終端節點編號,var為節點上的屬性、I為ADD中屬性集合;本質上使用四元組id,var,high,low表示,其中id為節點編號、var為節點上的屬性、high為本節點1-分支節點編號、low為本節點0-分支節點編號,ADD中編號為0、1、2、3的節點為終端節點;
數據加密方借助于ADD訪問結構完成對明文數據M∈G1的加密操作,假設ADD訪問結構所含有效路徑總數為T,并將其表示為R={R0,R1,…,RT-1},加密操作具體執行如下:
隨機選擇s∈Zp并計算,E:=Xs,定義為與路徑Rt相關的密文組件,其數學表述為:
上述(1)式中,It為路徑Rt上所包含的全部屬性,tvar代表步驟3-1)針對屬性var取正值時從Zp中選取的隨機元素t′var或針對屬性var取負值時從Zp中選取的隨機元素t″var,最終生成的密文表示為密文生成后被存儲在云平臺;
3-3)私鑰生成:由授權中心執行Keygen算法,根據用戶提供的屬性集S生成用戶私鑰SK,對于屬性attj,若attj取正值,表示為+attj;若attj取負值,表示為若默認attj取負值,即私鑰生成操作具體包括如下步驟:
3-3-1)查詢ADD結構中編號為4的節點,即根節點root,將其定義為當前節點即正被讀取的節點,設置tSK=0;
3-3-2)讀取當前節點中保存的信息,對于節點屬性attj:如果(attj∈S)∧attj=+attj,執行tSK+=t′j,轉到步驟3-3-3);如果執行tSK+=t″j,轉到步驟3-3-4);
3-3-3)根據當前節點的high域信息查找其1-邊子節點,如果到達終端節點,轉到步驟3-3-5);否則將該子節點定義為當前節點并轉到步驟3-3-2);
3-3-4)根據當前節點的low域信息查找其0-邊子節點,如果到達終端節點,轉到步驟3-3-5);否則將該子節點定義為當前節點并轉到步驟3-3-2);
3-3-5)隨機選擇r∈Zp,計算如果到達的終端節點編號為2,即id=2,為用戶分配私鑰否則,為用戶分配私鑰
3-4)密文解密,包括密文解密、密文更新、密文解密及更新:由數據解密方執行Decrypt算法,解密用戶借助于私鑰SK完成對密文CT的解密工作;假設密文為解密私鑰或解密過程通過以下遞歸算法實現:
3-4-1)解密用戶首先查詢ADD結構中編號為4的節點,即根節點root,將其定義為當前節點;
3-4-2)讀取當前節點中保存的信息對于當前節點中所含屬性attj,如果(attj∈S)∧attj=+attj,轉到步驟3-4-3);如果轉到步驟3-4-4);
3-4-3)根據當前節點的high域信息查找其1-邊子節點:
a)若1-邊子節點為編號為0的終端節點,終止遞歸算法,返回解密失敗;
b)若1-邊子節點為編號為非零實數的終端節點,轉到步驟3-4-5);
c)若1-邊子節點為非終端節點,將其定義為當前節點并轉入步驟3-4-2)繼續執行;
3-4-4)根據當前節點的low域信息查找其0-邊子節點:
d)若0-邊子節點為編號為0的終端節點,終止遞歸算法,返回解密失敗;
e)若0-邊子節點為編號為非零實數的終端節點,轉到步驟3-4-5);
f)若0-邊子節點為非終端節點,將其定義為當前節點并轉入步驟3-4-2)繼續執行;
3-4-5)若當前已成功匹配的有效路徑為Rt,此時有以下三種情況:
情況一:有效路徑Rt為只讀路徑,用戶具有只讀的權限,具體操作如下:
I、執行操作P(w),判斷是否有寫進程;如果存在寫進程,阻塞P(w)操作;否則轉到II;
II、執行操作P(mutex),使每個讀過程互斥地訪問變量rcount,如果rcount=0,執行P(rw),阻塞寫進程;否則,rcount=rcount+1,執行V(mutex)和V(w)釋放rcount和共享文件的訪問權限;
III、用戶完成以下解密計算:
IV、當用戶結束對共享資源的讀訪問時,執行P(mutex),rcount=rcount–1,如果rcount=0,執行V(rw)釋放共享資源對寫進程的阻塞,然后執行V(mutex)釋放對變量rcount的訪問;
情況二:若有效路徑Rt為只寫路徑,用戶具有只寫的權限,實現只寫權限的具體操作如下:
I、執行操作P(w),判斷是否有寫進程,若存在寫進程,阻塞P(w)操作;否則轉到步驟II;
II、執行操作P(rw)確保讀寫進程互斥地訪問共享資源,如果存在讀進程或寫進程,P(rw)操作被阻塞;否則,轉到步驟III;
III、用戶對共享資源具有只寫的訪問權限,新寫入的資源記為M1,用戶執行以下操作:
更新密文中的組件將CT重新上傳到云平臺;
IV、當用戶結束對共享資源的寫訪問時,執行V(rw)釋放對其他讀進程和寫進程的阻塞,執行V(w)釋放對共享資源的訪問權限;
情況三:若有效路徑Rt為讀寫路徑,用戶具有讀寫的權限;如果用戶需要讀取共享資源,按照情況一中所述步驟執行;如果用戶需要在共享文件中寫入數據,按照情況二中所述步驟執行。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于桂林電子科技大學,未經桂林電子科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011132274.8/1.html,轉載請聲明來源鉆瓜專利網。





