王秀利, 江曉舟, 李 洋
(中央財經(jīng)大學(xué) 信息學(xué)院,北京 100081)
對企業(yè)而言,數(shù)據(jù)越來越有價值,甚至已經(jīng)上升到戰(zhàn)略核心地位.企業(yè)關(guān)注的重點(diǎn)也從如何利用數(shù)據(jù)轉(zhuǎn)向如何保護(hù)數(shù)據(jù).傳統(tǒng)的集中式存儲存在許多安全隱患,若防火墻被攻克或數(shù)據(jù)泄露,將導(dǎo)致大范圍數(shù)據(jù)丟失,而且也不利于企業(yè)內(nèi)部多層級的訪問控制需求和監(jiān)督管理.區(qū)塊鏈以數(shù)據(jù)難偽造、難篡改和可追溯引起了學(xué)術(shù)界和產(chǎn)業(yè)界的廣泛關(guān)注[1],成為解決上述問題的關(guān)鍵技術(shù).以比特幣等數(shù)字貨幣為代表的區(qū)塊鏈 1.0[2]解決了去中心化等問題,但仍存在不足之處:(1) 交易完全透明且等待時間過長;(2) 在設(shè)計之初,有部分功能以規(guī)避監(jiān)管為目的,并不適用于企業(yè)內(nèi)部與行業(yè)內(nèi)部;(3) 賬戶加密通常使用傳統(tǒng)的非對稱加密方式,在加密貨幣一對一的交易場景下可以提供很高的安全性,但對于企業(yè)內(nèi)部場景,不便于靈活地訪問控制,也不便于密鑰的管理與保存.因此,傳統(tǒng)區(qū)塊鏈并不適合直接應(yīng)用于企業(yè).
對行業(yè)而言,同行業(yè)中的各個企業(yè)往往有合作與競爭的雙重關(guān)系——既需要各個企業(yè)數(shù)據(jù)共享來完成整個行業(yè)版圖的繪制,又需要保護(hù)好自己企業(yè)的數(shù)據(jù).另外,各行業(yè)通常都有國家部門進(jìn)行監(jiān)管,如何在保證有效監(jiān)管的同時又保護(hù)好各自的數(shù)據(jù),成為了亟待解決的問題.
為解決上述問題,本文結(jié)合現(xiàn)實場景,分為企業(yè)內(nèi)部與企業(yè)之間兩部分,利用屬性基加密(attribute-based encryption,簡稱ABE)對區(qū)塊鏈進(jìn)行改進(jìn),提出一種新的企業(yè)內(nèi)部訪問控制與企業(yè)之間數(shù)據(jù)安全共享模型.
區(qū)塊鏈?zhǔn)抢眉用苕準(zhǔn)絽^(qū)塊結(jié)構(gòu)來驗證與存儲數(shù)據(jù)、利用分布式節(jié)點(diǎn)共識算法來生成和更新數(shù)據(jù)、利用智能合約來編程和操作數(shù)據(jù)的一種去中心化基礎(chǔ)架構(gòu)與分布式計算范式[3].比特幣、萊特幣是典型的公有鏈,所有節(jié)點(diǎn)中立、開放,并不適用于企業(yè)內(nèi)部與行業(yè)內(nèi)部.同時,由于所有節(jié)點(diǎn)都參與投票,交易的確認(rèn)和區(qū)塊的形成速度都非常慢.以比特幣為例,每分鐘確認(rèn)7筆交易,每10分鐘生成一個區(qū)塊[4](為了確保安全,通常需要等待6個區(qū)塊生成,即 1小時完成交易確認(rèn)),這在很多行業(yè)內(nèi)是無法接受的.與公有鏈對應(yīng)的是許可鏈,即只有被許可的節(jié)點(diǎn)才能參與投票、記賬,其所有節(jié)點(diǎn)都在企業(yè)或行業(yè)內(nèi)部,數(shù)量相對較少,因此響應(yīng)速度較快.私有鏈、聯(lián)盟鏈都屬于許可鏈.
區(qū)塊鏈通常使用單鏈結(jié)構(gòu),將賬目、合約、交易等信息全部放在一條鏈上,所有參與計算的節(jié)點(diǎn)都在該鏈上投票以保證一致性.而這既沒有保護(hù)隱私,又因大量冗余數(shù)據(jù)造成響應(yīng)遲緩,平行區(qū)塊鏈[5]應(yīng)運(yùn)而生.文獻(xiàn)[6,7]提出了雙鏈結(jié)構(gòu),所有參與的機(jī)構(gòu)分享元數(shù)據(jù)及協(xié)議,但不分享數(shù)據(jù).所有參與的機(jī)構(gòu)都可以與其他機(jī)構(gòu)交易,而保證隱私性.以此設(shè)計出兩類區(qū)塊鏈:(1) 僅存儲賬戶信息和交易后的信息,但不執(zhí)行交易的賬戶區(qū)塊鏈;(2) 僅存儲對交易有用的信息并且執(zhí)行相關(guān)交易的交易區(qū)塊鏈.這極大地提高了整個區(qū)塊鏈的運(yùn)行效率,同時,將賬戶自身變動與交易信息變動相分離,增加數(shù)據(jù)管理的靈活性.其所使用的雙鏈結(jié)構(gòu)主要用于金融領(lǐng)域,交易依然是一對一進(jìn)行,未對原有非對稱密碼體制進(jìn)行改動.
將區(qū)塊鏈應(yīng)用于數(shù)據(jù)共享,業(yè)內(nèi)已有實踐.如 Enigma[8,9]是一個分散的計算平臺,擁有隱私性與可拓展性等特點(diǎn).通過安全多方計算,其數(shù)據(jù)查詢以分布式方式計算,任何一個節(jié)點(diǎn)都不能完整地訪問數(shù)據(jù).通過脫鏈存儲技術(shù),將區(qū)塊鏈與分布式散列表[10]相關(guān)聯(lián),在區(qū)塊鏈上僅保存數(shù)據(jù)存放的地址.MedRec框架[11]將智能合約與訪問控制相結(jié)合進(jìn)行自動化的權(quán)限管理,實現(xiàn)了對不同組織的分布式醫(yī)療數(shù)據(jù)的整合和權(quán)限管理.
非對稱加密[12]是保證眾多加密貨幣安全交易的基礎(chǔ)之一,它包含2個密鑰,即公鑰和私鑰.系統(tǒng)先以某種密鑰生成算法(如SHA256 Hash算法[13]、Base58轉(zhuǎn)換),將輸入經(jīng)過計算得出私鑰(一串固定長度的字符串),然后采用另一個算法(如 Secp256k1橢圓曲線算法[14])分解私鑰生成公鑰,此過程是不可逆的.非對稱加密在區(qū)塊鏈中有兩種用途:(1) 數(shù)據(jù)加密,用信息接收者的公鑰對發(fā)送的信息進(jìn)行加密,接收者以自己的私鑰解密;(2) 數(shù)字簽名,信息發(fā)送者以自己的密鑰對信息哈希值加密(簽名),接收者以發(fā)送者公鑰解密后與原文哈希進(jìn)行比對,用以確認(rèn)此信息確實由發(fā)送者發(fā)送,達(dá)到不可偽造和不可抵賴目的.
區(qū)塊鏈?zhǔn)褂玫臋E圓曲線非對稱加密機(jī)制雖然可以提供很高的安全性,但其密鑰不可更改,且每個賬戶都要有單獨(dú)的密鑰.另外,加密貨幣只限于兩個賬戶之間的交易,因此不存在權(quán)限管理問題.而在企業(yè)內(nèi)部,這種加密方式難以滿足大量員工對數(shù)據(jù)的多層級訪問控制.
ABE[15-17]以屬性為公鑰,將密文、私鑰與屬性相關(guān)聯(lián),能更加靈活地表示訪問控制策略.ABE有以下優(yōu)點(diǎn):(1) 加密時只需要根據(jù)成員屬性加密消息,而不需要關(guān)心群體中成員的數(shù)量和身份,降低了數(shù)據(jù)加密開銷,也保護(hù)了成員隱私;(2) 只有符合密文屬性要求的群體成員才能解密消息,不符合屬性要求的成員無法解密,從而保證了數(shù)據(jù)安全;(3) 用戶密鑰與隨機(jī)多項式或隨機(jī)數(shù)相關(guān),不同用戶的密鑰無法聯(lián)合,防止了用戶的串謀攻擊;(4) 支持基于屬性的靈活訪問控制策略,可以實現(xiàn)屬性的與、或、非等門限操作.因此,ABE在細(xì)粒度訪問控制、隱私保護(hù)等方面具有良好的應(yīng)用前景.
使用樹狀圖表示訪問控制策略,以T表示.樹中葉結(jié)點(diǎn)表示屬性,非葉結(jié)點(diǎn)表示與、或等邏輯門限.設(shè)U={A1,A2,…,An}是系統(tǒng)中的屬性集合,leaves(T)表示T中所有葉結(jié)點(diǎn)集合.設(shè)numv為v的子結(jié)點(diǎn)數(shù),kv(1≤kv≤numv)為v的門限值,以att(v)表示與結(jié)點(diǎn)v有關(guān)的屬性.給定一個屬性集U和訪問控制策略樹Tv,如下定義函數(shù)F(U,Tv).
· 若v是葉結(jié)點(diǎn),當(dāng)且僅當(dāng)att(v)∈U時,F(U,Tv)=1;
· 在其他情況下,F(U,Tv)=0.
哈希算法是一個函數(shù),將任意長度的數(shù)據(jù)作為輸入,都將被映射為固定長度的字符串.同時,它也是一個單向函數(shù),由輸入可以輕易地算出數(shù)據(jù)的哈希值,卻無法由哈希值逆向推出原數(shù)據(jù).
Merkle樹[18]是基于哈希算法的樹型數(shù)據(jù)結(jié)構(gòu),每個非葉結(jié)點(diǎn)都是其葉結(jié)點(diǎn)的哈希值.將數(shù)據(jù)進(jìn)行分組哈希,并將生成的新哈希值插入到樹中,如此遞歸,直到只剩最后一個根哈希值.相較于對所有數(shù)據(jù)打包進(jìn)行哈希計算而言,這極大減少了工作量.以圖1為例,當(dāng)加密文件3出現(xiàn)改動時,需要更新哈希值,若不使用Merkle樹,則要把所有4個文件重新哈希;而使用Merkle樹,則只需重新計算哈希值3和6,便可以得到新的根哈希值.
本模型分為5層:存儲層、區(qū)塊鏈服務(wù)層、API層、鏈上代碼(智能合約)層、應(yīng)用層,其架構(gòu)如圖2所示.
· 存儲層:為快速生成檢索區(qū)塊,采用鏈下存儲方式,即鏈上只存儲數(shù)據(jù)地址,原數(shù)據(jù)經(jīng)過對稱加密后存儲在底層數(shù)據(jù)庫,由企業(yè)維護(hù).存儲層設(shè)在企業(yè)內(nèi)部,其存儲結(jié)構(gòu)可以使數(shù)據(jù)擁有者在將數(shù)據(jù)存入時決定數(shù)據(jù)的訪問控制策略;
· 區(qū)塊鏈服務(wù)層:分為企業(yè)鏈(company blockchain,簡稱CBC)和行業(yè)鏈(industry blockchain,簡稱IBC).其中,CBC記錄企業(yè)內(nèi)部的數(shù)據(jù)存儲地址與變化情況,由企業(yè)內(nèi)部節(jié)點(diǎn)共同維護(hù),確保不同節(jié)點(diǎn)狀態(tài)一致,提供基于屬性的訪問控制服務(wù);IBC記錄行業(yè)內(nèi)部企業(yè)之間的數(shù)據(jù)交換與調(diào)用,數(shù)據(jù)的請求與共享都將記錄在IBC上以便查詢和監(jiān)管;
· API層:接口用于數(shù)據(jù)的查詢、區(qū)塊廣播、發(fā)送等;
· 鏈上代碼層:提供智能合約服務(wù).主要功能是提供屬性基訪問控制,即在CBC與IBC上提供自定義的訪問控制策略,只有滿足特定屬性(或級別)的賬戶才能讀取(或?qū)懭?數(shù)據(jù);
· 應(yīng)用層:提供各種應(yīng)用程序,如監(jiān)管系統(tǒng)、查詢系統(tǒng)等.
無論企業(yè)內(nèi)部還是行業(yè)內(nèi)部,都是弱信用環(huán)境.因此本模型基于聯(lián)盟鏈,即只有被許可的節(jié)點(diǎn)才能進(jìn)行讀寫操作.同時摒棄了公有鏈常用的 POW,POS等共識機(jī)制,而是使用信用制,當(dāng)發(fā)現(xiàn)節(jié)點(diǎn)有違規(guī)寫入垃圾信息或其他作惡行為,則直接將其剔除出整個系統(tǒng),收回其權(quán)限.
整個行業(yè)區(qū)塊鏈系統(tǒng)由3種節(jié)點(diǎn)維護(hù),分別為企業(yè)節(jié)點(diǎn)、行業(yè)節(jié)點(diǎn)與邊緣節(jié)點(diǎn),節(jié)點(diǎn)之間關(guān)系如圖3所示.各自職能如下.
(1) 企業(yè)節(jié)點(diǎn):用于維護(hù)企業(yè)鏈.當(dāng)新數(shù)據(jù)達(dá)到閾值后,企業(yè)節(jié)點(diǎn)將數(shù)據(jù)經(jīng)過對稱加密后存放至底層數(shù)據(jù)庫,并將其存放地址和密鑰及Merkle樹一同放到鏈上用于查詢與驗證;
(2) 行業(yè)節(jié)點(diǎn):用于維護(hù)行業(yè)鏈而非企業(yè)內(nèi)部數(shù)據(jù),由行業(yè)協(xié)會或行業(yè)內(nèi)所有企業(yè)共同維護(hù),用于確認(rèn)行業(yè)內(nèi)各企業(yè)之間的數(shù)據(jù)交互(數(shù)據(jù)交集查詢).行業(yè)節(jié)點(diǎn)僅維護(hù)行業(yè)鏈而不屬于任何企業(yè)鏈.其主要功能是便于監(jiān)管機(jī)構(gòu)或行業(yè)協(xié)會對行業(yè)鏈進(jìn)行監(jiān)管;
(3) 邊緣節(jié)點(diǎn):同時加入企業(yè)內(nèi)部區(qū)塊鏈網(wǎng)絡(luò)與行業(yè)區(qū)塊鏈網(wǎng)絡(luò),用于連接企業(yè)鏈與行業(yè)鏈,進(jìn)行數(shù)據(jù)傳遞.企業(yè)鏈與行業(yè)鏈?zhǔn)褂猛惶讓傩曰用芩惴?將授權(quán)中心 CA部署在邊緣節(jié)點(diǎn)可以提高資源利用率.當(dāng)某企業(yè)在行業(yè)鏈上發(fā)出數(shù)據(jù)共享請求時,其他企業(yè)邊緣節(jié)點(diǎn)上的智能合約自動驗證其訪問權(quán)限,并進(jìn)行交集操作.
整個系統(tǒng)包括企業(yè)鏈與行業(yè)鏈兩部分,是平行區(qū)塊鏈結(jié)構(gòu):企業(yè)鏈負(fù)責(zé)存儲具體數(shù)據(jù)的位置索引,行業(yè)鏈負(fù)責(zé)記錄企業(yè)之間的數(shù)據(jù)交集操作.具體如下.
(1) 企業(yè)區(qū)塊鏈:確保企業(yè)內(nèi)部數(shù)據(jù)的安全與可追溯.
當(dāng)緩存區(qū)中的數(shù)據(jù)達(dá)到閾值,企業(yè)內(nèi)部節(jié)點(diǎn)將其加密后傳輸至底層數(shù)據(jù)庫中,同時將數(shù)據(jù)的輸入時間戳、區(qū)塊長度及前一個區(qū)塊的哈希值作為區(qū)塊頭,根據(jù)訪問控制樹將數(shù)據(jù)位置索引、明文形式的訪問控制策略和數(shù)據(jù)Merkle根加密后打包成塊,存儲至區(qū)塊體中,其后上傳至企業(yè)鏈上.其數(shù)據(jù)存儲結(jié)構(gòu)如圖4所示.
(2) 行業(yè)區(qū)塊鏈:將行業(yè)內(nèi)各企業(yè)置于監(jiān)管之下,并可通過多方計算將所有企業(yè)的數(shù)據(jù)進(jìn)行統(tǒng)一分析.
與企業(yè)鏈中的準(zhǔn)備工作相同,每個企業(yè)在將數(shù)據(jù)位置索引上傳至企業(yè)鏈時,將行業(yè)內(nèi)其他企業(yè)的屬性也納入訪問控制樹中,一個典型的屬性基加密策略樹如圖 5所示.其左支代表對企業(yè)的屬性要求,右支代表企業(yè)中有權(quán)限部門的賬戶要求.只有特定企業(yè)中的特定部門才能進(jìn)行解密.數(shù)據(jù)請求者在提出數(shù)據(jù)交集請求時,需將所請求數(shù)據(jù)與含有自己屬性的令牌一同發(fā)布至行業(yè)區(qū)塊鏈上.所有企業(yè)的邊緣節(jié)點(diǎn)都將驗證其是否有訪問本企業(yè)數(shù)據(jù)的權(quán)限,只有通過權(quán)限驗證,邊緣節(jié)點(diǎn)才會自動對所請求的數(shù)據(jù)進(jìn)行交集操作,并返回給請求企業(yè).由于屬性基訪問控制策略的存在,全行業(yè)鏈節(jié)點(diǎn)都將記錄這一過程,但只有交易雙方可見交易的細(xì)節(jié).另外,對于需要監(jiān)管者查看所有數(shù)據(jù)的行業(yè),可直接將監(jiān)管者屬性列入訪問控制樹左支,即可使其擁有訪問權(quán)限.
數(shù)據(jù)存儲方面,本模型使用了密文存儲與脫鏈存儲來保證數(shù)據(jù)的安全.
(1) 密文存儲:由于系統(tǒng)主要功能是保護(hù)企業(yè)內(nèi)部重要數(shù)據(jù),通常是用戶隱私數(shù)據(jù)、財務(wù)數(shù)據(jù)等,因此底層存儲應(yīng)采用密文存儲.而直接使用非對稱加密會導(dǎo)致密鑰管理混亂,同時對于大量底層數(shù)據(jù)而言效率不高.因此,選用對稱加密方式對底層數(shù)據(jù)進(jìn)行加密;
(2) 脫鏈存儲:由于區(qū)塊鏈處理速度較慢,不適宜將所有數(shù)據(jù)直接存儲在鏈上,因此使用脫鏈存儲.通過建立分布式散列表,區(qū)塊鏈存儲對數(shù)據(jù)的引用,而非數(shù)據(jù)本身.數(shù)據(jù)在存儲時進(jìn)行加密,并編輯數(shù)據(jù)訪問控制策略.Merkle樹保證了數(shù)據(jù)即使沒有存在鏈上,也不能被篡改,且在部分?jǐn)?shù)據(jù)變動后可以較小代價更新Merkle根.
該方案由企業(yè)鏈與行業(yè)鏈兩個相互隔離又可通過邊緣節(jié)點(diǎn)相互通信的雙鏈系統(tǒng)組成,其中:企業(yè)鏈用于加密存儲企業(yè)內(nèi)部數(shù)據(jù)的地址,行業(yè)鏈則用于記錄行業(yè)內(nèi)部企業(yè)之間的數(shù)據(jù)請求.具體步驟如下.
3.2.1 企業(yè)內(nèi)部訪問控制
(1) 初始化:根據(jù)安全參數(shù)lλ,由授權(quán)中心CA執(zhí)行產(chǎn)生主私鑰mk和公共參數(shù)pp;
(2) 身份注冊:企業(yè)內(nèi)各部門向系統(tǒng)提出注冊申請,獲取其真實身份信息對應(yīng)的標(biāo)識UID及屬性集合SU;
(3) 密鑰分發(fā):按照密鑰分發(fā)算法KeyGen(mk,SU),CA根據(jù)注冊者屬性集U∈SU,計算其屬性私鑰、屬性參數(shù),并由此計算出使用者的私鑰SK,將其通過安全信道發(fā)送給使用者保存;
(4) 加密數(shù)據(jù):數(shù)據(jù)上傳者根據(jù)訪問者的屬性對數(shù)據(jù)制定訪問控制策略樹StrGen(SU)→Tcom,隨機(jī)生成對稱加密密鑰rs,數(shù)據(jù)經(jīng)過對稱加密計算后放入底層數(shù)據(jù)庫.對稱加密算法可以表示為
(5) 數(shù)據(jù)上傳:企業(yè)節(jié)點(diǎn)根據(jù)訪問控制策略樹對數(shù)據(jù)索引地址add、對稱加密密鑰rs進(jìn)行加密,并將其廣播至區(qū)塊鏈.同時,節(jié)點(diǎn)生成該數(shù)據(jù)索引id與鏈上數(shù)據(jù)的映射,將其放入底層數(shù)據(jù)庫(不與經(jīng)對稱加密后的數(shù)據(jù)一同存放):
(6) 訪問密文:訪問者根據(jù)數(shù)據(jù)索引id在鏈上查得該數(shù)據(jù)的地址與對稱加密密鑰.若該訪問者沒有權(quán)限訪問此數(shù)據(jù),則無法得到密鑰rs,無法對索引地址進(jìn)行解密,也就無法訪問原數(shù)據(jù);若該訪問者屬性滿足訪問控制策略樹,則其可以解密得到地址add與密鑰rs,可以至底層數(shù)據(jù)庫訪問該數(shù)據(jù):
3.2.2 行業(yè)內(nèi)部訪問控制
(1) 前4步與企業(yè)內(nèi)部數(shù)據(jù)訪問控制相同,但在對數(shù)據(jù)加密時,其訪問控制策略樹不僅考慮企業(yè)內(nèi)部賬戶,還加入行業(yè)內(nèi)其他可進(jìn)行交集操作的企業(yè)屬性SU′,StrGen(SU′)→Tind;
(2) 令牌生成:每個企業(yè)生成一個token令牌,包含該企業(yè)的權(quán)限與屬性信息;
(3) 加密請求:請求數(shù)據(jù)的企業(yè)將需要與其他企業(yè)進(jìn)行交集操作的數(shù)據(jù)D(d1,d2,d3,…,dn)用訪問控制樹Tind進(jìn)行加密,使其僅滿足被請求企業(yè)的屬性:
(4) 發(fā)送交集操作請求:請求數(shù)據(jù)企業(yè)將加密后的數(shù)據(jù)與自己的令牌一同發(fā)送至行業(yè)區(qū)塊鏈上,所有企業(yè)都可以看到并記錄這一消息,并由令牌中的信息判定其來源,但只有符合密文中所包含的訪問控制樹的企業(yè)節(jié)點(diǎn)可以解密此消息:
(5) 交集操作:由于邊緣節(jié)點(diǎn)既是企業(yè)鏈的節(jié)點(diǎn),又是行業(yè)鏈的節(jié)點(diǎn),被請求方的邊緣節(jié)點(diǎn)在完成解密后,可以自動在其內(nèi)部企業(yè)鏈上檢索該數(shù)據(jù)是否開放給請求方.若接收到的令牌可以滿足交集數(shù)據(jù)的訪問控制樹,則邊緣節(jié)點(diǎn)自動將數(shù)據(jù)進(jìn)行交集操作,并通過安全信道返回給請求方:
(6) 上傳區(qū)塊鏈確認(rèn):當(dāng)請求方完成交集操作后,全局廣播一條包含此令牌的數(shù)據(jù),表明已完成交集操作,其他企業(yè)確認(rèn)后將此行為記錄在行業(yè)區(qū)塊鏈上.
以A,B,C這3家處于同一個行業(yè)鏈中的企業(yè)為例.A為數(shù)據(jù)請求方,B和C為數(shù)據(jù)共享方.其中,B在企業(yè)鏈的訪問控制樹中將本年度1月~3月數(shù)據(jù)設(shè)為對A可操作,而C只共享了一月數(shù)據(jù)給A.A試圖請求B,C的1月、2月數(shù)據(jù)用作交集操作,則將自己1月、2月數(shù)據(jù)經(jīng)過Enc(D(JanA,FebA))得到cphA,此密文所含訪問控制樹僅B,C可解密.將cphA連同tokenA發(fā)送至區(qū)塊鏈.B和C都將接收到此信息,但邊緣節(jié)點(diǎn)用tokenA嘗試解密各自的1月、2月數(shù)據(jù)時,只有B能完成操作,則B的邊緣節(jié)點(diǎn)將D(JanB,FebB)∩D(JanA,FebA)返回給A,C返回空.在B,C都完成上述操作后,A將自動向區(qū)塊鏈廣播一條消息表明已完成交集操作.
假設(shè)B在企業(yè)鏈的訪問控制樹中將數(shù)據(jù)d1,d2,d3設(shè)為對A可操作,而C只共享d1給A.A向B和C提出d1,d2,d3數(shù)據(jù)交集申請的具體算法如下.
算法.
1.B,C利用StrGen(SU)分別生成各自的TindB和TindC;
2.B,C分別使用隨機(jī)生成的對稱密碼對數(shù)據(jù)加密:
3.B,C根據(jù)各自策略樹對數(shù)據(jù)地址索引與對稱密碼加密:
4. 數(shù)據(jù)上鏈:
5.A向B,C發(fā)起交集請求,B的邊緣節(jié)點(diǎn)將會進(jìn)行如下操作:
對于C,由于A不滿足C設(shè)定的交集訪問權(quán)限,因此無法使用Dec算法解密數(shù)據(jù),返回null.
6.A在完成上述操作后,將此操作上傳至行業(yè)區(qū)塊鏈IBC,使行業(yè)鏈上的其他企業(yè)都記錄下這一操作過程:
表1從數(shù)據(jù)安全、企業(yè)間弱信用環(huán)境和數(shù)據(jù)存儲等方面將本模型與傳統(tǒng)區(qū)塊鏈進(jìn)行對比分析.
隨著區(qū)塊鏈的快速發(fā)展,越來越多的應(yīng)用場景被開發(fā)出來,其在數(shù)據(jù)存儲與共享方面的研究與實踐也受到廣泛關(guān)注.本文提出一種應(yīng)用區(qū)塊鏈的數(shù)據(jù)訪問控制與共享模型,用屬性基加密對現(xiàn)有區(qū)塊鏈的加密方式、數(shù)據(jù)存儲方式進(jìn)行了改進(jìn),以滿足數(shù)據(jù)在企業(yè)內(nèi)部的訪問控制以及企業(yè)之間數(shù)據(jù)共享的需求,達(dá)到了細(xì)粒度訪問控制與安全共享的目的.其中,脫鏈存儲、非對稱加密與對稱加密相結(jié)合的措施已可在Hyperledger Fabric[19]等平臺上實現(xiàn).
Table 1 Comparative analysis between the model and traditional blockchain表1 本模型與傳統(tǒng)區(qū)塊鏈對比分析