?

可撤銷屬性加密的區塊鏈數據訪問控制方法

2024-02-22 07:44健,戚
計算機工程與設計 2024年2期
關鍵詞:私鑰密文解密

李 健,戚 湧

(南京理工大學 計算機科學與工程學院,江蘇 南京 210094)

0 引 言

區塊鏈技術[1,2]所具有的去中心化、開放性、自治性、鏈上數據不可篡改等特點使其在數據共享[3-5]方面具備得天獨厚的優勢。但是區塊鏈技術本身的P2P、節點間數據訪問權限相同的特性,致使基于區塊鏈的數據共享存在粗粒度訪問控制問題。密文策略屬性加密(attribute based encryption,CP-ABE)技術,通過將密文與屬性集合進行綁定,實現由數據用戶主導的訪問控制,與區塊鏈去中心化的特點契合,能夠實現區塊鏈數據共享機制中的細粒度訪問控制。在CP-ABE現有的諸多研究方向當中,屬性撤銷CP-ABE方案對于數據安全尤為重要,當系統中某些用戶因為身份屬性發生變化時,需要在CP-ABE方案中及時地撤銷用戶屬性。Li等[6,7]利用KEK樹和屬性組管理授權用戶,將用戶密鑰與屬性組密鑰進行綁定實現屬性撤銷。SHIRAISHI等[8]提出了一種面向共享數據細粒度訪問控制的屬性基加密方案,授權機構可以撤銷唯一指定用戶的屬性。LIU等[9]提出的CP-ABE方案通過在密文中嵌入撤銷列表來實現屬性撤銷。Qin等[10]通過將密鑰更新材料發送給用戶來實現抵抗解密密鑰暴露攻擊的屬性撤銷CP-ABE。上述方案均需更新密文實現屬性撤銷,對于區塊鏈系統來說,更新密文需要重復上鏈,所以上述方案均不適用于區塊鏈系統。汪玉江等[11]提出了一種適用于區塊鏈系統的屬性可撤銷RCP-ABE方案,該方案采用兩次解密的思想,由區塊鏈維護撤銷列表,屬性撤銷后,無需更新密鑰密文重新上鏈,但是該方案僅適用于小規模屬性集,且系統建立前需要指定屬性集大小。陽真等[12]通過引入第三方來實現屬性的動態撤銷,并將區塊鏈和IPFS結合實現鏈上鏈下存儲,但是該方案通過智能合約實現的加解密效率有待提升。

1 相關工作

Shashank等[13]基于素數階群下的非對稱雙線性映射[14]和線性秘密共享技術[15]構建了一種高效的CP-ABE方案,稱為FAME,方案包括以下步驟:

(1)系統初始化Setup(1λ)→(pk,msk), 輸入安全參數λ,輸出公鑰pk、主私鑰msk。

(2)生成屬性私鑰KeyGen(msk,S)→sk, 輸入主私鑰msk,屬性集合S,輸出屬性私鑰sk。

(3)加密:Encrypt(pk,(M,π),msg)→Ct, 輸入公鑰pk,訪問策略(M,π),明文msg,輸出密文Ct。

(4)解密:Decrypt(pk,Ct,sk)→msg, 輸入公鑰pk,密文Ct,屬性私鑰sk,輸出明文msg。

具體來說,FAME方案基于Ⅲ型映射群構造使其效率提高,且設計的解密過程僅需要少量Paring操作進行解密,即使是在大規模屬性集下,解密時間代價也保持在常量級上。但是,FAME方案僅支持屬性加密的基本功能,而不具備實時撤銷屬性的功能。

基于上述工作,本文開展如下工作:首先,基于區塊鏈技術的特性和應用背景,在FAME方案基礎上進行改進,提出一種支持屬性實時撤銷的CP-ABE算法,改進如下:在屬性私鑰生成階段生成兩把屬性私鑰,同時引入預解密過程,與之相應的加密、解密過程也需要進行改進,改進后的算法包括系統初始化、生成屬性私鑰、加密、預解密、解密5個組成部分,算法流程如圖1所示,其中虛線框內是本文改進的部分。

圖1 改進的 CP-ABE 屬性加密流程

改進后的算法適用于區塊鏈系統,適用性主要表現在兩方面:①通過引入預解密過程,并由區塊鏈系統結合屬性撤銷列表判斷是否進行預解密,以實現用戶的實時屬性撤銷,無需更新密鑰密文重復上鏈;②鑒于區塊鏈的效率問題,智能合約完成的預解密過程僅需要少量的Pairing操作、速度快,且在大規模屬性集下,時間代價不隨屬性個數的增加而增加。然后,基于非對稱群下的DBDH困難問題假設對方案進行安全性證明。最后,結合超級賬本Fabric進行系統設計,采用鏈上鏈下存儲,原始數據對稱加密后存儲在IPFS中,對稱密鑰進行屬性加密上鏈,解決區塊鏈容量不足以及系統效率問題,實現屬性可撤銷地、高效地、細粒度地區塊鏈數據訪問控制。

2 屬性加密算法

2.1 算法描述

算法包括系統初始化、生成屬性私鑰、加密、預解密、解密5個組成部分,具體如下。

(1)系統初始化算法:Setup(1λ)→(pk,msk)。

(2)生成屬性私鑰算法:KeyGen(msk,S)→(sk1,sk2)。

S表示用戶需要申請密鑰的屬性集合。隨機選擇r1,r2∈ZP, 計算sk0=(hb1r1,hb2r2,hr1+r2)。 利用msk中的h,b1,b2對所有的屬性y∈S和t=1,2,隨機選擇σy,uy∈ZP, 分別計算:(sky,t)1=V(y1t)b1r1/at·V(y2t)b2r2/at·V(y3t)(r1+r2)/at·gσy/at,(sky,t)2=V(y1t)b1r1/at·V(y2t)b2r2/at·V(y3t)(r1+r2)/at·guy/at。 其中V() 表示將屬性映射到群G中元素的映射函數,其輸入有兩種字符串組成格式:yLt和0jLt,其中y表示屬性,L=1,2,3,t=1,2,j表示正整數,后者以0開頭,以區分前者;輸出群G中元素。

設置私鑰組件:(sky)1=((sky,1)1,(sky,2)1,g-uy),(sky)2=((sky,1)2,sky,2)2,g-σy)。

隨機選擇σ′∈ZP, 計算:sk′t=gdt·V(011t)b1r1/at·V(012t)b2r2/at·V(013t)(r1+r2)/at·gσ′/at。

設置私鑰組件:sk′=(sk′1,sk′2,gd3·g-σ′)。

輸出兩把屬性私鑰:sk1=(sk0,(sky)1,sk′),sk2=(sk0,(sky)2,sk′)。

(3)加密算法:Encrypt(pk,(M,π),msg)→Ct。

(M,π) 表示訪問結構,其中M為n1×n2的矩陣,π為矩陣行到屬性的映射,msg表示明文。

設置密文組件:Cti=(Cti,1,Cti,2,Cti,3)。

輸出密文Ct=(Ct0,Ct1,…,Ctn1,Ct′)。

(4)預解密算法:FirstDecrypt(Ct,sk1)→firstm。

輸出預解密中間明文firstm。

(5)解密算法:SecDecrypt(Ct,sk2)→secm。

計算解密中間明文:secm=e(sk′1·∏i∈I(skπ(i),1)2wi,Ct0,1)·e(sk′2·∏i∈I(skπ(i),2)2wi,Ct0,2)·e(sk′3·∏i∈I(skπ(i),3)2wi,Ct0,3)。

計算中間參數:num=e(∏i∈ICti,1wi,sk0,1)·e(∏i∈ICti,2wi,sk0,2)·e(∏i∈ICti,3wi,sk0,3)。

2.2 安全模型

本文方案的安全性定義為選擇明文攻擊下的不可區分性(IND-CPA),由挑戰者Chal和敵手Adver間的安全游戲進行證明,具體描述如下:

(1)系統建立:挑戰者Chal運行系統初始化算法Setup(1λ)→(pk,msk), 將pk發生給敵手Adver,自己保留msk。

(2)私鑰查詢:敵手Adver向挑戰者Chal發送一系列的屬性集合S1,S2…, 挑戰者Chal運行私鑰生成算法KeyGen(msk,S)→(sk1,sk2), 并將生成的屬性密鑰sk1,sk2發送給敵手Adver。

(3)挑戰:敵手Adver發送兩個長度相等的消息msg0,msg1和訪問結構 (M,π) 給挑戰者Chal,并且加以限制:私鑰查詢階段生成的密鑰都不能滿足訪問結構 (M,π)。 挑戰者Chal隨機選擇b∈{0,1}, 執行加密算法Encrypt(pk,(M,π),msgb)→Ctb, 并將生成的密文Ctb發送給敵手Adver。

(4)私鑰查詢,重復步驟(2):敵手Adver再次向挑戰者Chal發送屬性集合查詢私鑰,但同樣限定屬性集合不能滿足訪問結構 (M,π)。

(5)猜測:敵手Adver輸出值b的猜測結果b′∈{0,1}。

2.3 安全性證明

本節基于非對稱情況下DBDH的困難問題假設進行安全性證明,具體分析過程如下:

AdvDBDH=

定義2 如果在多項式時間內,算法不能以不可忽略的優勢解決非對稱情況下DBDH問題,則認為非對稱情況下DBDH假設成立。

證明:參考文獻[13]模擬相關隨機預言機。首先進行相關參數定義:

當v表示列向量 (v1,v2,…,vn)T時,其相關參數定義見表1。

表1 列向量的相關參數定義

表2 矩陣的相關參數定義

Samp()算法定義見表3。

(1)初始化階段Setup。運行初始化算法獲得 (p,G,H,GT,e,g,h)。

運行算法Samp(p),獲得 (A,a⊥),(B,b⊥)。

d表示列向量 (d1,d2,d3)T,d1,d2,d3∈ZP, 設置pk=([A]2,[dTA]T),msk=(g,h,A,B,[d]1)。

為了模擬隨機預言機:Chal維護兩個列表:P和Q。

P有形式為 (x,Wx) 和 (j,Uj) 的元組,其中x是任意的二進制字符串,j是正整數,Wx、Uj是ZP上的3×3矩陣。

Q有形式為(q,r)的元組,其中q可以是xLt或0jLt(L∈{1,2,3},t∈{1,2}), 也可以是其它任意元素,r是G中的元素。

敵手Adver可以進行以下3種類型的預言機查詢:

3)q:Chal查詢是否有 (q,r)∈Q, 如果有則返回r,否則從G中隨機選擇一個元素r′,將 (q,r′) 添加到Q,返回r′。

(4)私鑰查詢階段KeyGen。重復過程(2)。

3 系統設計及仿真分析

3.1 系統設計

本文系統包括屬性授權、數據擁有者(DO)、數據使用者(DU)、區塊鏈、IPFS這5個組成部分,系統模型如圖2所示。

圖2 系統模型

(1)屬性授權:負責系統的參數設置,生成系統的公鑰和主私鑰;同時,當用戶注冊進入系統時,根據用戶的屬性集合生成屬性私鑰。同時,根據實際情況維護一張用戶訪問控制的屬性撤銷列表,當發現系統中用戶屬性發生變化時,負責實時撤銷用戶屬性。

(2)數據擁有者(DO):負責數據的加密工作,首先對明文進行對稱加密,將對稱加密后的密文存放在IPFS中,對返回的索引以及對稱密鑰指定訪問策略,進行屬性加密,將屬性加密密文發送給區塊鏈。

(3)數據使用者(DU):數據的訪問者,向區塊鏈發送訪問請求,如果屬性滿足訪問策略且未被撤銷,則由區塊鏈智能合約進行預解密操作,并將預解密的結果發送給數據使用者,數據使用者進行屬性解密操作,得到IPFS存儲索引以及對稱密鑰,再從IPFS中獲取對稱加密的密文,進行對稱解密,獲取明文。

(4)區塊鏈:負責存儲屬性加密后的密文以及用戶的預解密屬性私鑰、存儲一張用戶屬性撤銷列表,通過智能合約提供屬性撤銷和屬性預解密相關功能。

(5)IPFS:負責原始數據對稱加密后的密文數據的分布式存儲工作,保證區塊鏈只存儲少量關鍵信息,減輕區塊鏈的存儲壓力。

3.2 流程設計

本文方法主要完成數據擁有者與數據使用者之間的數據共享和細粒度訪問控制的工作,本節對此過程進行流程設計,具體如下:

3.2.1 數據擁有者加密數據流程

如圖3所示,數據擁有者加密數據流程主要分為身份注冊和數據加密兩個階段。

圖3 數據擁有者加密數據流程

首先是身份注冊階段,數據擁有者初次登錄系統時,進行身份的注冊登錄的操作:屬性授權根據數據擁有者的身份信息運行屬性私鑰生成算法KeyGen(msk,S) 為數據擁有者生成兩把屬性私鑰sk1和sk2,分別稱為區塊鏈屬性私鑰和用戶屬性私鑰,屬性授權將區塊鏈屬性私鑰發送給區塊鏈,區塊鏈進行存儲。將用戶屬性私鑰發送給數據擁有者。

接下來進入數據加密階段,數據擁有者在用戶端對原始數據進行對稱加密,接著將對稱密文發送給IPFS進行分布式存儲,IPFS返回對應索引信息。數據擁有者指定訪問策略調用屬性加密算法Encrypt(pk,(M,π),msg) 對返回的索引信息以及對稱密鑰進行屬性加密,將生成的屬性加密密文發送給區塊鏈,區塊鏈進行上鏈存儲。

3.2.2 數據使用者解密數據流程

如圖4所示,數據使用者解密數據流程主要分為身份注冊和數據解密兩個階段。

圖4 數據使用者解密數據流程

首先是身份注冊階段,與數據擁有者類似。

接下來進入數據解密階段,數據使用者發送數據解密的請求給區塊鏈,區塊鏈首先查詢屬性撤銷列表是否有該數據使用者的屬性元組,如果沒有則說明未被撤銷屬性,利用其區塊鏈屬性私鑰調用預解密算法FirstDecrypt(Ct,sk1), 返回預解密結果firstm;如果有則說明屬性被撤銷更改,此時,判斷新屬性集合是否滿足訪問策略,如果滿足,則進行預解密,否則拒絕預解密,返回一個非零隨機值。數據使用者在用戶端利用用戶屬性私鑰對區塊鏈返回的值進行屬性解密SecDecrypt(Ct,sk2,firstm), 在其滿足訪問策略且未被撤銷屬性的情況下,得到對稱密鑰和IPFS索引信息,利用索引從IPFS中取得對稱密文,利用對稱密鑰進行對稱解密獲得原始數據。

3.2.3 屬性授權撤銷屬性流程

如圖5所示,屬性授權撤銷屬性流程如下:當系統中的數據使用者身份屬性發生變化時,屬性授權向區塊鏈發送該數據使用者新的屬性集合,以維護屬性撤銷列表,實現數據使用者身份屬性實時更新。

圖5 屬性授權撤銷屬性流程

本節將所提屬性撤銷CP-ABE算法應用于區塊鏈系統,進行了詳細的系統流程設計,相比于基礎區塊鏈系統中用戶數據訪問權限相同的特點,本文系統中,由數據擁有者根據實際需求制定訪問策略,以限定數據使用者。同時,當系統中數據使用者的身份發生變化時,屬性授權只需調用屬性撤銷的智能合約來更新屬性撤銷列表,就可完成屬性級的屬性撤銷,實現了區塊鏈數據的細粒度訪問控制。

3.3 系統仿真與分析

本節對系統進行仿真與分析,仿真的實驗環境如下:操作系統為64位的Ubuntu16.04,內存8 GB;CPU為Intel Core i7 8700;用戶端代碼和智能合約使用Java開發語言編寫,屬性加密方案使用jpbc2.0.0庫,根據提供的TypeD曲線構造雙線性映射,實驗數據取運行20次的所得的平均值;區塊鏈使用Hyperledger-fabric1.4.3版本,采用solo類型的排序服務;使用docker部署IPFS集群。

3.3.1 功能性分析

方案功能性對比分析見表4:文獻[6]支持屬性撤銷,但不支持大規模屬性集;文獻[11]支持通過引入預解密過程實現屬性撤銷,但不支持大規模屬性集;文獻[12]實現了屬性撤銷,但不支持預解密和大規模屬性集;文獻[13]支持大規模屬性集,但不支持預解密和屬性撤銷;文獻[16]引入了預解密過程,但不支持屬性撤銷和大規模屬性集;本文方案通過引入預解密的過程實現了無需更新密鑰密文的屬性撤銷,并且支持大規模屬性集。

表4 本文方案與其它方案功能性比較

3.3.2 性能分析

如圖6所示:與對比方案相比,在密鑰生成階段,本文方案與對比方案的時間代價隨屬性個數的增加而增加,但是本文方案增加相對緩慢。

圖6 密鑰生成算法對比

如圖7所示:與對比方案相比,在加密階段,本文方案具備顯著優勢,并且隨著屬性個數的增加,時間代價呈現為緩慢增加趨勢。

圖7 加密算法對比

如圖8所示:在解密階段,本文方案因在預解密和解密各自只需要6次Pairing操作,所以預解密和解密時間代價各自保持在75 ms和150 ms常量級上,且綜合來看,本文方案總解密時間顯著優于對比方案。

圖8 解密算法對比

如圖9所示:本文方案在大規模屬性集下解密效率高,且解密時間不隨屬性數量增加而增加。由用戶端完成的解密過程,只需要150 ms左右的常量級時間代價,而對于在系統中由區塊鏈智能合約完成的預解密過程,只需要75 ms左右的常量級時間代價。

圖9 大規模屬性集合解密時間

綜上,本文設計的屬性撤銷CP-ABE方法通過引入預解密過程而使屬性撤銷無需更新密鑰密文重復上鏈;并且屬性加密各個階段的時間代價均低于對比方案,尤其是由智能合約完成的預解密過程在大規模屬性集下時間代價保持在75 ms的常量級上,應用于區塊鏈上對系統的效率性能影響很小。

4 結束語

本文針對區塊鏈數據共享中存在的粗粒度訪問控制問題,首先提出了一種可撤銷屬性加密的區塊鏈數據訪問控制方法,通過引入預解密過程,構建了一種屬性可撤銷的CP-ABE方法,僅需要少量的Pairing操作進行解密,大規模屬性集下由智能合約完成的預解密過程僅需75 ms左右;可根據需求及時撤銷屬性,無需更新密鑰密文重復上鏈,適用于區塊鏈系統。最后進行系統設計,結合IPFS實現鏈上鏈下存儲,解決區塊鏈容量不足和系統效率問題,實現高效的、細粒度的區塊鏈數據訪問控制。

猜你喜歡
私鑰密文解密
解密“熱脹冷縮”
一種針對格基后量子密碼的能量側信道分析框架
清掃機器人避障系統區塊鏈私鑰分片存儲方法
一種支持動態更新的可排名密文搜索方案
比特幣的安全性到底有多高
基于模糊數學的通信網絡密文信息差錯恢復
基于改進ECC 算法的網絡信息私鑰變換優化方法
解密“一包三改”
炫詞解密
一種基于虛擬私鑰的OpenSSL與CSP交互方案
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合