国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

結(jié)合區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)安全共享機(jī)制

2023-08-29 01:10李井涵沈國華卞書鈺張小玉
關(guān)鍵詞:主客體訪問控制合約

李井涵,沈國華,2,3,楊 陽,卞書鈺,張小玉

1(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211106)

2(南京航空航天大學(xué) 高安全系統(tǒng)的軟件開發(fā)與驗(yàn)證技術(shù)工業(yè)和信息化部重點(diǎn)實(shí)驗(yàn)室,南京 211106)

3(軟件新技術(shù)與產(chǎn)業(yè)化協(xié)同創(chuàng)新中心,南京210093)

1 引 言

如今是萬物互聯(lián)的時(shí)代,物聯(lián)網(wǎng)(Internet of Things)、傳感器技術(shù)飛速發(fā)展,愛立信一項(xiàng)研究表明到2050年全球?qū)?huì)有240億臺(tái)設(shè)備[1]相互連接,為人類提供服務(wù).物聯(lián)網(wǎng)設(shè)備不僅實(shí)現(xiàn)了人與物、物與物和人與人之間的聯(lián)系,更進(jìn)一步應(yīng)用在智能工廠[2]、智慧農(nóng)業(yè)[3]、智能醫(yī)療[4,5]等諸多領(lǐng)域.物聯(lián)網(wǎng)設(shè)備之間相互協(xié)作,信息共享,改變了生產(chǎn)模式,提高了生產(chǎn)效率,在人類社會(huì)的發(fā)展中發(fā)揮了重要作用.但隨著物聯(lián)網(wǎng)規(guī)模的不斷擴(kuò)大,其網(wǎng)絡(luò)結(jié)構(gòu)也越來越復(fù)雜,設(shè)備之間的數(shù)據(jù)交互頻率也越來越高.其中數(shù)據(jù)安全問題引起人們的重視.在物聯(lián)網(wǎng)系統(tǒng)環(huán)境下如何建立一套在不同組織之間的安全、有效的數(shù)據(jù)共享機(jī)制成為了研究者們關(guān)注的重點(diǎn).

物聯(lián)網(wǎng)設(shè)備會(huì)產(chǎn)生、交換大量的數(shù)據(jù),機(jī)密或私人的信息可能包含在傳輸?shù)臄?shù)據(jù)中,未經(jīng)身份驗(yàn)證或授權(quán)的用戶一旦使用系統(tǒng)功能,極有可能帶來數(shù)據(jù)安全隱患[6].此外,如有不誠實(shí)的用戶,在獲得授權(quán)后,濫用系統(tǒng)功能,惡意交換數(shù)據(jù),或發(fā)送無意義數(shù)據(jù),又或者竊聽數(shù)據(jù),也可能給其他用戶帶來經(jīng)濟(jì)或人身上的損害.傳統(tǒng)的數(shù)據(jù)共享機(jī)制往往將設(shè)備產(chǎn)生的數(shù)據(jù)傳輸給可信的第三方實(shí)體[7],第三方實(shí)體使用一系列方法分析數(shù)據(jù),為用戶提供服務(wù).然而,用戶一旦提交自己的數(shù)據(jù),就失去了對(duì)數(shù)據(jù)的控制權(quán),用戶無法知道數(shù)據(jù)是否泄露,是否被交易,集中式的數(shù)據(jù)管理機(jī)制對(duì)數(shù)據(jù)擁有者不透明,存在個(gè)人隱私泄露的風(fēng)險(xiǎn).除此之外,第三方實(shí)體數(shù)據(jù)安全問題頻發(fā),導(dǎo)致了現(xiàn)階段不可信的網(wǎng)絡(luò)環(huán)境,一部分用戶對(duì)第三方實(shí)體持不信任態(tài)度,所以有必要提出一種可信的、安全的數(shù)據(jù)共享機(jī)制.

區(qū)塊鏈技術(shù)的出現(xiàn)為解決此類問題提供了一個(gè)新的方法.與傳統(tǒng)中心化的架構(gòu)不同,區(qū)塊鏈?zhǔn)且环N分布式的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò),這種網(wǎng)絡(luò)能提供良好的安全特性如不可篡改性、去中心化等特點(diǎn),使用區(qū)塊鏈技術(shù),可構(gòu)建出一套更安全、方便的物聯(lián)網(wǎng)系統(tǒng)[8].將訪問控制與區(qū)塊鏈結(jié)合,能夠提出一種擴(kuò)展性強(qiáng)、安全的身份認(rèn)證機(jī)制,適合現(xiàn)階段物聯(lián)網(wǎng)分布式、大規(guī)模的特點(diǎn)[9].與基于角色的訪問控制(Role-Based Access Control,RBAC)相比,基于屬性的訪問控制(Attribute-Based Access Control,ABAC)[10]更為靈活,能按需提供不同粒度的權(quán)限控制,在物聯(lián)網(wǎng)數(shù)據(jù)共享中提供可靠的、動(dòng)態(tài)的身份認(rèn)證和權(quán)限控制機(jī)制.結(jié)合區(qū)塊鏈的特點(diǎn)[11],在智能合約上實(shí)現(xiàn)設(shè)備間的通信管理機(jī)制,以防止用戶濫用系統(tǒng)功能.

本文提出了一種基于區(qū)塊鏈的物聯(lián)網(wǎng)設(shè)備信息共享機(jī)制.該機(jī)制利用區(qū)塊鏈不可篡改、去中心化等特點(diǎn),融合基于屬性的訪問控制防止未經(jīng)授權(quán)用戶惡意訪問他人設(shè)備、數(shù)據(jù)的問題,基于智能合約實(shí)現(xiàn)設(shè)備間通信管理機(jī)制解決數(shù)據(jù)共享過程惡意通信的問題.本文貢獻(xiàn)如下:

針對(duì)物聯(lián)網(wǎng)中數(shù)據(jù)泄露未經(jīng)授權(quán)訪問的問題,以及細(xì)粒度的訪問控制問題,本文提出了結(jié)合區(qū)塊鏈和基于屬性的權(quán)限管理機(jī)制,實(shí)現(xiàn)去中心化的訪問控制機(jī)制,使資源擁有者掌握實(shí)質(zhì)的資源所有權(quán).

針對(duì)物聯(lián)網(wǎng)數(shù)據(jù)共享過程中惡意用戶濫用通信資源,破壞通信環(huán)境問題,本文提出了基于區(qū)塊鏈的通信管理機(jī)制,設(shè)備所有者建立通信隧道管理設(shè)備間的數(shù)據(jù)交換,實(shí)現(xiàn)安全的數(shù)據(jù)共享.

基于以太坊平臺(tái)實(shí)現(xiàn)了所提出的數(shù)據(jù)共享機(jī)制,并與相關(guān)研究作對(duì)比,證明其可用性和有效性.

2 相關(guān)工作

為解決物聯(lián)網(wǎng)中數(shù)據(jù)共享中存在的問題,研究者們已經(jīng)進(jìn)行了大量的研究,結(jié)合區(qū)塊鏈技術(shù)產(chǎn)生了新的研究成果.

在權(quán)限管理方面,部分研究采用不同的方式實(shí)現(xiàn)訪問控制.文獻(xiàn)[12]提出了一種基于區(qū)塊鏈的去中心化在線社交網(wǎng)絡(luò)訪問控制管理系統(tǒng).該方案結(jié)合區(qū)塊鏈提出了一個(gè)不可篡改的和可審計(jì)的訪問控制框架,資源擁有者使用訪問控制列表(Access Control List,ACL)定義策略通過主體的密鑰對(duì)來管理數(shù)據(jù)資源.文獻(xiàn)[13]使用類比特幣區(qū)塊鏈在智能家居應(yīng)用中的一種基于訪問控制列表的物聯(lián)網(wǎng)訪問控制方案,每個(gè)家庭都有一個(gè)本地區(qū)塊鏈來維護(hù)ACL,其中每個(gè)條目指定內(nèi)部或外部主體對(duì)內(nèi)部對(duì)象的訪問權(quán)限.

文獻(xiàn)[14]提出了一種基于區(qū)塊鏈的物聯(lián)網(wǎng)輕量級(jí)信息共享安全框架,使用和改進(jìn)部分盲簽名算法,實(shí)現(xiàn)對(duì)數(shù)據(jù)的保護(hù)和控制.文獻(xiàn)[15]提出了基于比特幣的ABAC方案,其中ABAC策略儲(chǔ)存在比特幣交易中,并使用現(xiàn)有的ABAC方案執(zhí)行訪問控制,策略可以通過附加一個(gè)帶有更新信息的新交易更新,或者簡單地通過花費(fèi)虛擬貨幣來刪除、增添.文獻(xiàn)[16] 提出了一種基于區(qū)塊鏈的訪問控制模型,在該系統(tǒng)中,物聯(lián)網(wǎng)用戶通過智能合約編寫的函數(shù)授予和撤銷物聯(lián)網(wǎng)數(shù)據(jù)區(qū)塊的訪問權(quán)限,并使用多種技術(shù)隱藏私密信息,只有相關(guān)用戶才能訪問.文獻(xiàn)[17]同樣在區(qū)塊鏈的基礎(chǔ)上,使用分散哈希列表來儲(chǔ)存物聯(lián)網(wǎng)中的數(shù)據(jù),該方案中區(qū)塊鏈存儲(chǔ)了不同用戶對(duì)分散哈希表中存儲(chǔ)的任何數(shù)據(jù)的訪問控制權(quán)限,分散哈希表節(jié)點(diǎn)用于查詢區(qū)塊記錄和做出訪問控制決策.

在數(shù)據(jù)共享方面,研究者結(jié)合不同區(qū)塊鏈類型實(shí)現(xiàn)數(shù)據(jù)共享.文獻(xiàn)[18]提出了一種基于FaBric區(qū)塊鏈的工業(yè)物聯(lián)網(wǎng)傳輸技術(shù),使用基于區(qū)塊鏈的動(dòng)態(tài)秘密共享機(jī)制,并優(yōu)化數(shù)據(jù)儲(chǔ)存和傳輸,提高了工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)傳輸?shù)陌踩院涂煽啃?提高了傳輸效率.文獻(xiàn)[19]提出了輕量化物聯(lián)網(wǎng)智能家居基于區(qū)塊鏈的定制構(gòu)架.該方案在超級(jí)賬本編寫器中管理智能家居屬性,以保證用戶數(shù)據(jù)機(jī)密性和服務(wù)可用性.

其中部分研究使用ACL等方式實(shí)現(xiàn)訪問控制,無法適應(yīng)現(xiàn)階段動(dòng)態(tài)、海量的物聯(lián)網(wǎng)環(huán)境,無法實(shí)現(xiàn)細(xì)粒度的訪問控制.部分研究基于比特幣平臺(tái),擴(kuò)展性較低.在數(shù)據(jù)交換階段,部分研究基于云平臺(tái),在請(qǐng)求過多時(shí),處理請(qǐng)求時(shí)間較長,同時(shí)對(duì)用戶或設(shè)備間的通信未做出管理,惡意用戶如果濫用通信資源,其產(chǎn)生的惡意行為會(huì)嚴(yán)重破壞物聯(lián)網(wǎng)的通信環(huán)境,因此,提出一種可控、安全的物聯(lián)網(wǎng)數(shù)據(jù)共享機(jī)制十分必要.

3 相關(guān)技術(shù)

區(qū)塊鏈作為新興的分布式技術(shù),為解決物聯(lián)網(wǎng)數(shù)據(jù)共享安全問題提供了一個(gè)新的方向.區(qū)塊鏈?zhǔn)且环N分布式賬本,記錄網(wǎng)絡(luò)中發(fā)生的交易,這種分布式賬本可以應(yīng)用于包含任何形式數(shù)據(jù)交換的網(wǎng)絡(luò).同時(shí),區(qū)塊鏈?zhǔn)且环N完全分布式的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò),所有參與的節(jié)點(diǎn)都維護(hù)賬本的相同副本.當(dāng)網(wǎng)絡(luò)中由新的交易發(fā)生時(shí),所有有關(guān)該交易的新通過各節(jié)點(diǎn)之間共識(shí)之后會(huì)添加到區(qū)塊鏈中.

圖1展示了區(qū)塊的數(shù)據(jù)結(jié)構(gòu).在區(qū)塊鏈網(wǎng)絡(luò)中,所有的交易信息都儲(chǔ)存在區(qū)塊中.區(qū)塊中記錄由上個(gè)區(qū)塊生成后產(chǎn)生的交易記錄.每個(gè)區(qū)塊包含區(qū)塊頭和區(qū)塊體,區(qū)塊頭中記錄區(qū)塊信息,其中包括:前一區(qū)塊哈希值、隨機(jī)數(shù)(Nonce)、時(shí)間戳等、默克爾根(Merkle Tree Root)等信息.其中隨機(jī)數(shù)(Nonce)用于挖礦,是一個(gè)試探性的隨機(jī)數(shù),是工作量證明的關(guān)鍵參數(shù).前一個(gè)區(qū)塊的哈希值可校驗(yàn)前一區(qū)塊的完整性,同時(shí)也作為當(dāng)前區(qū)塊哈希值計(jì)算的輸入.以這樣的方式,區(qū)塊就以鏈?zhǔn)降慕Y(jié)構(gòu)儲(chǔ)存起來.默克爾樹用于儲(chǔ)存交易哈希值,可以驗(yàn)證存入?yún)^(qū)塊交易的完整性.區(qū)塊體中存入的是各個(gè)交易的具體信息.

圖1 區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)

區(qū)塊鏈融合了加密算法、共識(shí)機(jī)制,分布式的網(wǎng)絡(luò)結(jié)構(gòu),使其擁有的良好的安全特性[20],其中包括:1)去中心化.網(wǎng)絡(luò)中無需可信第三方集中服務(wù)器提供服務(wù),節(jié)點(diǎn)之間可相互交易,使用智能合約提供服務(wù);2)不可篡改性.區(qū)塊中的條目都是由各個(gè)節(jié)點(diǎn)通過去中心化共識(shí)驗(yàn)證之后存入?yún)^(qū)塊的,同時(shí)區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu)使篡改的難度和成本非常高,因此,區(qū)塊鏈擁有良好的不可篡改性;3)可審計(jì)性.所有節(jié)點(diǎn)都持有賬本的副本,都可以訪問、驗(yàn)證各個(gè)交易;4)高容錯(cuò)性.所有節(jié)點(diǎn)都包含賬本的副本,如果網(wǎng)絡(luò)中發(fā)生故障或數(shù)據(jù)問題,可通過共識(shí)機(jī)制來識(shí)別.

4 基于區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享方案

4.1 方案概述

圖2 展示了本文提出的基于區(qū)塊鏈的數(shù)據(jù)共享方案,該方案使用基于屬性的訪問控制模型構(gòu)建數(shù)據(jù)共享權(quán)限管理機(jī)制,并在智能合約上實(shí)現(xiàn)對(duì)設(shè)備間的通信管理.根據(jù)不同的所屬關(guān)系,設(shè)備所有者會(huì)把設(shè)備劃分為不同的小組,每個(gè)小組有一個(gè)獨(dú)一無二的小組ID以便區(qū)分不同的小組,各個(gè)所有者會(huì)為其擁有的設(shè)備分配唯一的ID.

圖2 基于區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享方案

4.2 橢圓曲線數(shù)字簽名算法

橢圓曲線數(shù)字簽名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)[21]是一種非對(duì)稱的加密算法,相比與RSA有以下優(yōu)點(diǎn):安全性能更高,處理速度更快,儲(chǔ)存空間更少等.接下來簡單介紹該簽名算法的簽名和驗(yàn)證過程.其中Q標(biāo)識(shí)公鑰,d為私鑰,k為隨機(jī)數(shù),G為橢圓曲線的基點(diǎn),n為G的階數(shù)且n為素?cái)?shù),m為發(fā)送消息.

簽名生成步驟如下:1)在區(qū)間[1,n-1]中選取隨機(jī)數(shù)k;2)計(jì)算曲線點(diǎn)(x1,y2)=k×G;3)計(jì)算r=x1modn;4)使用Hash()函數(shù)計(jì)算Hash(m),并將得到的比特串轉(zhuǎn)化為整數(shù)e;5)計(jì)算s=k-1(e+rd)modn;6)(r,s)為簽名.

簽名驗(yàn)證步驟如下:1)檢查r和s是否是屬于區(qū)間[1,n-1]的整數(shù);2)計(jì)算e=Hash(m);3)分別計(jì)算u1=es-1modn和u2=rs-1modn;4)計(jì)算曲線點(diǎn)(x1,y1)=u1×G+u2×Q,如果(x1,y1)=0,簽名無效;5)如果r≡x1(modn)則簽名有效,否則無效.

本文提出系統(tǒng)使用的簽名算法為ECDSA,節(jié)點(diǎn)間的數(shù)據(jù)交換和與智能合約交互使用ECDSA對(duì)消息簽名,消息接受方會(huì)驗(yàn)證簽名,保證通信中數(shù)據(jù)的完整性和可用性.

4.3 訪問控制框架

如圖3所示,ABAC框架由4個(gè)智能合約構(gòu)成,分別為訪問控制合約(Access Control Contract,ACC)、主體屬性合約(Subject Attribute Contract,SAC)、客體屬性合約(Object Attribute Contract,OAC)和策略合約(Policy Contract,PC).其中,SAC和OAC用于管理和存儲(chǔ)主客體的屬性,PC負(fù)責(zé)管理、儲(chǔ)存訪問控制策略,ACC負(fù)責(zé)整個(gè)物聯(lián)網(wǎng)系統(tǒng)中訪問控制.接下來本文分別介紹各個(gè)合約.

圖3 基于屬性的訪問控制合約框架

4.3.1 主體屬性合約和客體屬性合約

主體屬性合約和客體屬性合約功能相似,都用于儲(chǔ)存和管理物聯(lián)網(wǎng)中主客體的屬性.根據(jù)4.1概述中所描述的,每個(gè)分組會(huì)有一個(gè)所有者,這兩個(gè)合約只能由主客體所屬的所有者才能調(diào)用.同時(shí)每個(gè)主客體都擁有獨(dú)一無二的標(biāo)識(shí)符即ObjID,該ID在合約中充當(dāng)辨識(shí)主客體的唯一標(biāo)志.組ID為每個(gè)設(shè)備標(biāo)識(shí)其所屬關(guān)系,所屬關(guān)系會(huì)在后續(xù)數(shù)據(jù)交換階段會(huì)起到通信控制作用.每個(gè)ID都有與之相關(guān)的各類屬性.SAC和OAC還提供SubAttriAdd()/ObjAttriAdd()、SubAttriDelete()/ObjAttriDelete()、SubDelete()/ObjDelete()等應(yīng)用程序二進(jìn)制接口(Application Binary Interface,ABI)來更新對(duì)應(yīng)主客體屬性,或刪除主客體屬性條目.

在更新、添加和刪除屬性的時(shí)候,所有者需要將所要修改的主、客體的ID發(fā)送到SAC或OAC對(duì)應(yīng)的ABI,如果在合約沒有找到對(duì)應(yīng)ID的屬性條目,合約會(huì)自動(dòng)創(chuàng)建一條新條目并更新信息,在刪除的時(shí)候也執(zhí)行相似的流程.

4.3.2 策略合約

策略合約主要用于儲(chǔ)存、管理定義的ABAC策略,這個(gè)合約中的管理策略的ABI也只能由所有者調(diào)用.一條策略包含了一組主體屬性、一組客體屬性和一組動(dòng)作,例如SA={SubAttribute1:a1,SubAttribute2:a2},OA={ObjAttribute:b1,ObjAttribute:b2},Action={Action1,Action2 },這條策略規(guī)定任何擁有屬性a1,a2的主體都可以對(duì)擁有屬性b1,b2的客體進(jìn)行相應(yīng)動(dòng)作.與SAC和OAC類似,PC也提供policyAdd(),policyDelete(),policyUpdate()等ABI分別來添加、刪除和更新策略,合約會(huì)記錄每條策略的最近更新時(shí)間.

在搜索策略時(shí),會(huì)執(zhí)行不同的搜索方式,分別用于刪除策略和查找策略.刪除策略時(shí)使用一種完全匹配搜索,需要所有者提供策略中對(duì)應(yīng)主客體的所有屬性信息,這樣能夠準(zhǔn)確找對(duì)對(duì)應(yīng)主客體的訪問控制策略,避免刪除其他相似但非目的策略.在查找策略時(shí),多使用部分搜索,需要調(diào)用者提供部分對(duì)應(yīng)主客體屬性.但通過這樣的方式搜索會(huì)查找到多條符合條件的策略,查找出的策略是所有符合條件的策略的子集,最后確定策略時(shí),合約會(huì)首先匹配只包含提供屬性的策略,再以策略更新時(shí)間為依據(jù),返回最近更新的策略.部分搜索多用于ACC處理訪問請(qǐng)求時(shí)向PC查找策略.

在制定新的策略時(shí),所有者提供越多的屬性,所實(shí)現(xiàn)的訪問控制策略粒度越細(xì).當(dāng)所有者添加一條的新的策略時(shí),合約會(huì)查詢已有策略中是否存在和新增策略沖突的條目,如果存在,則需要所有者修改或刪除策略內(nèi)容來消除沖突,才能添加新策略.在一些情況下無需添加新策略,現(xiàn)有的策略會(huì)覆蓋可能會(huì)覆蓋新策略.

4.3.3 訪問控制合約

訪問控制合約提供整個(gè)訪問控制流程的核心功能,該合約控制著這個(gè)物聯(lián)網(wǎng)系統(tǒng)從主體發(fā)出請(qǐng)求到返回請(qǐng)求結(jié)果.主體發(fā)送包含主體ID和客體ID的交易到ACC,ACC接收到請(qǐng)求后會(huì)從SAC、OAC和PC中分別獲取對(duì)應(yīng)主體屬性、客體屬性,再通過主客體屬性查詢PC中對(duì)應(yīng)的策略,并驗(yàn)證主體的訪問控制權(quán)限,確認(rèn)訪問結(jié)果之后返回給主客體.

詳細(xì)的步驟如下:1)主體向ACC發(fā)送訪問請(qǐng)求交易,該交易包含主體ID,所要訪問客體ID和請(qǐng)求動(dòng)作;2)ACC分別向SAC和OAC發(fā)送主客體ID檢索對(duì)應(yīng)屬性;3)ACC在收到屬性將其發(fā)送給PC查詢相關(guān)策略,如返回屬性為空則向主體返回錯(cuò)誤;4)根據(jù)接收到的策略,ACC確定主體是否有權(quán)對(duì)客體進(jìn)行該動(dòng)作,并返回結(jié)果.通過算法1實(shí)現(xiàn).

算法1.訪問控制算法

輸入:SAC_address,OAC_address,PC_address,sub_id,obj_id,sub_action

輸出:results or error

1.subattri←GetAttribute(SAC_address,sub_id);

2.objattri←GetAttribute(OAC_address,obj_id); //獲取屬性

3.if(subattri==NULL||objattri==NULL)then

4.returnError(“Attribute error!”);

5.endif

6.policynow←GetPolicy(subattri,objattri,PC_address);

7.if(policynow==NULL)then

8.returnError(“Policy Not Found!”)

9.endif

10.if(TimeCheck(policynow))then

11. if(sub_action==policynow.action)then

12. return sub_action comfirmed;

13.elsereturnError(“Action Error!”);

14.endif

15.else if(sub_action==policynow[0].action)then

16.return sub_action confirm;

17.endif

其中GetAttribute()、GetPolicy()、TimeCheck()為ACC中定義的ABI,功能分別為獲取屬性、獲取策略和策略時(shí)間檢查.如找到多條匹配策略會(huì)返回最近更新條目,否則會(huì)以找到第一條策略來判斷請(qǐng)求是否符合條件.

4.4 通信隧道

在權(quán)限授予之后,物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)共享進(jìn)入到數(shù)據(jù)交換階段,在本系統(tǒng)中,所有的數(shù)據(jù)通信都由智能合約完成的,設(shè)備間每一次通信都需要向負(fù)責(zé)數(shù)據(jù)通信的智能合約發(fā)出交易,每次通信數(shù)據(jù)都會(huì)儲(chǔ)存在區(qū)塊中以便審計(jì),保證數(shù)據(jù)不可篡改.

為了防止不誠實(shí)的用戶在取得設(shè)備訪問權(quán)限后,做出惡意行為,可能導(dǎo)致數(shù)據(jù)泄露、篡改等問題.該系統(tǒng)提出了通信隧道機(jī)制,符合條件且需要數(shù)據(jù)交互的設(shè)備必須在通信隧道建立之后才能通信,通信隧道合約(Communication Tunnel Contract,CTC)來完成這項(xiàng)工作.

在該系統(tǒng)中,把發(fā)出通信的設(shè)備成為源設(shè)備(Source Object,SO),源設(shè)備所屬小組稱為源小組(Source Group,SG),源小組的所有者稱為源所有者(Source Master,SM),把源設(shè)備所要通信的目標(biāo)成為目的設(shè)備(Destiny Object,DO),同理對(duì)應(yīng)的組和所有者稱為目的組(Destiny Group,DG),目的所有者(Destiny Master,DM).

通信隧道合約管理設(shè)備間的通信,每次設(shè)備需要通信則需要調(diào)用該合約的ABI,并提供相應(yīng)信息,符合條件后才能通信.如果SO和DO來自同一小組,那么這兩個(gè)設(shè)備可以直接進(jìn)行數(shù)據(jù)交換,不需要建立通信隧道.SO和DO來自不同的小組則需要在建立通信隧道的情況下才能交換數(shù)據(jù).建立通信隧道需要SM和DM 進(jìn)行協(xié)商,雙方需要調(diào)用CTC中對(duì)應(yīng)的ABI,完成協(xié)商后會(huì)將隧道設(shè)置信息儲(chǔ)存在區(qū)塊中.區(qū)塊鏈不可篡改的特性,將隧道信息存入?yún)^(qū)塊中可以記錄隧道建立、更新、刪除整個(gè)過程,所有通信隧道的生命周期都儲(chǔ)存在區(qū)塊中,防止篡改,并提供給歷史記錄查詢.需要協(xié)商的內(nèi)容如下:

1)方向標(biāo)志(Direction Flag,DF).該標(biāo)志有0和1兩個(gè)狀態(tài),分別代表單向通信和雙向通信.該標(biāo)志位為0,SO只能向DO發(fā)送數(shù)據(jù),標(biāo)志位為1時(shí),SO和DO都可以發(fā)送數(shù)據(jù).

2)通信時(shí)長(Time to Communicate,TTC).該設(shè)置能夠限制兩個(gè)設(shè)備間的通信次數(shù),該字段會(huì)記錄在隧道設(shè)置中,每次設(shè)備通信時(shí)都會(huì)更新該字段直到其數(shù)據(jù)為0,之后兩個(gè)設(shè)備不能繼續(xù)通信,該字段可由所有者更新,字段設(shè)定值大小需要通信雙方的所有者協(xié)商設(shè)定.

CTC中還提供TunnelRequest(),TunnelInfoCheck()和CommViaTunnel()等API,分別用來申請(qǐng)隧道,查詢隧道信息和使用隧道通信.

圖4展示了隧道設(shè)定需要的步驟,接下來會(huì)詳細(xì)說明每個(gè)步驟:

圖4 通信隧道建立過程

1)SO會(huì)向SM發(fā)出通信請(qǐng)求的交易Tx1,包含DO的ID和DO的組ID,Tx1如下:

Tx1=(DB‖DO)

(1)

2)SM會(huì)添加SO信息和隧道信息,包括其組ID、設(shè)備ID和DF、TTC,簽名后作為交易Tx2發(fā)送給DM,Tx2如下:

Tx2=((DG‖DO‖SG‖SO‖TTC‖DF)signedbySM)

(2)

3)DM在收到交易Tx2驗(yàn)證簽名是否正確,并根據(jù)SM的要求決定是否建立隧道,如同意建立,DM會(huì)將Tx2加上DO信息簽名后形成交易Tx3發(fā)送給CTC,Tx3如下:

Tx3=(((DG‖DO‖SG‖SO‖TTC‖DF)signedbySM))signedbySM)

(3)

4)CTC收到Tx3驗(yàn)證其中簽名,檢查是否有重復(fù)隧道,如有則更新信息,之后隧道建立完成,向SM返回信息.

5)SM向SO返回信息,告知是否能進(jìn)行通信.

隧道建立完成,對(duì)應(yīng)設(shè)備便可通過隧道通信,每次通信會(huì)更新隧道信息,直到隧道不能再通信.設(shè)備間通過算法2進(jìn)行通信.

算法2.通信隧道算法

輸入:tunnel_id,SO,DO,message

輸出:event or error

1.if(tunnel[tunnel_id].TTC>0)then

2. if(tunnel[tunnel_id].SO_ObjID == SO.ObjID‖tunnel[tunnel_id].DO_ObjID == DO.ObjID)then

3. send SO_message,event(“message sent”);

4. tunnel[tunnel_id]-1;

5.elseError(“tunnel info error!”)

6.endif

7. if(DF==1)then

8. send DO_message,event(“DO message sent”); //DO可發(fā)送信息;

9. tunnel[tunnel_id].ttc-1;

10.elseError(“direction error!”)

11.endif

12.else Error(“TTC runs out!”)

13.endif

4.5 數(shù)據(jù)共享流程

圖5展示了該方案中主體請(qǐng)求數(shù)據(jù)共享的整個(gè)流程.在權(quán)限申請(qǐng)階段,主體需要先向ACC發(fā)出請(qǐng)求,ACC會(huì)根據(jù)主體的ID和客體的ID 查詢主客體屬性,并通過主客體屬性查詢相關(guān)策略,之后返回請(qǐng)求結(jié)果.如果請(qǐng)求成功,且客體與主體不在同一小組,則需要申請(qǐng)通信隧道才能進(jìn)行數(shù)據(jù)交換.主體會(huì)向主體的所有者發(fā)出通信請(qǐng)求,接著主體所有者和客體所有者會(huì)協(xié)商并確定主客體之間隧道設(shè)定(通信方向、通信次數(shù)),主客體所有者都會(huì)對(duì)隧道信息簽名保證信息的完整性,向通信隧道合約發(fā)出請(qǐng)求,將隧道設(shè)定信息儲(chǔ)存在區(qū)塊,隧道建立后,主體便可與客體交換數(shù)據(jù),同時(shí)更新隧道信息.在通信時(shí)所有的消息都會(huì)由通信雙方的公鑰加密保證消息的機(jī)密性.

圖5 數(shù)據(jù)共享流程

所有設(shè)備間的交互都由智能合約實(shí)現(xiàn),訪問控制和通信管理成為區(qū)塊鏈中分布式的應(yīng)用程序,系統(tǒng)內(nèi)節(jié)點(diǎn)都會(huì)執(zhí)行,節(jié)點(diǎn)以發(fā)送交易的形式與合約和其他節(jié)點(diǎn)交互.所有的訪問歷史和結(jié)果都會(huì)儲(chǔ)存在區(qū)塊鏈上,即使一些節(jié)點(diǎn)遭到破壞或入侵,該數(shù)據(jù)共享系統(tǒng)仍可以可靠工作.

5 實(shí)驗(yàn)設(shè)計(jì)與性能分析

5.1 實(shí)驗(yàn)環(huán)境

實(shí)驗(yàn)在一臺(tái)操作系統(tǒng)為Ubuntu16.04的計(jì)算機(jī)上進(jìn)行,其硬件配置為:CPU為Intel(R)Core(TM)i7-9750h CPU 2.6GHz,RAM為16 GB.并在以太坊平臺(tái)實(shí)現(xiàn)本方案,以太坊是公共區(qū)塊鏈平臺(tái),支持智能合約,使用Solidity編寫智能合約.使用Geth客戶端來管理網(wǎng)絡(luò)中的節(jié)點(diǎn),其中每個(gè)節(jié)點(diǎn)都可以調(diào)用智能合約的ABI,ABI與節(jié)點(diǎn)發(fā)出的交易交互.該實(shí)驗(yàn)在以太坊測(cè)試鏈上進(jìn)行,使用Remix IDE開發(fā)智能合約.主要測(cè)試各個(gè)函數(shù)調(diào)用的資源消耗即Gas消耗和在調(diào)用通信隧道合約相關(guān)函數(shù)的時(shí)延.

該實(shí)驗(yàn)分別在50個(gè)節(jié)點(diǎn)、100個(gè)節(jié)點(diǎn)和200個(gè)節(jié)點(diǎn)3種網(wǎng)絡(luò)環(huán)境下進(jìn)行,模擬不同大小的網(wǎng)絡(luò)規(guī)模,并在不同的節(jié)點(diǎn)環(huán)境下測(cè)試函數(shù)調(diào)用時(shí)延.

5.2 實(shí)驗(yàn)結(jié)果與分析

在以太坊平臺(tái)中,部署和調(diào)用函數(shù)會(huì)消耗一定成本(gas),節(jié)點(diǎn)和智能合約交互或?qū)^(qū)塊執(zhí)行操作時(shí),交易的發(fā)起方都會(huì)支付一定gas費(fèi)用,ether是以太坊中通用虛擬貨幣可以和gas相互兌換.

部署合約之后,測(cè)試了一部分函數(shù)調(diào)用成本,如表1所示.從中可以看出,SubAttriAdd()、policyAdd()、TunnelRequest()這3個(gè)函數(shù)的執(zhí)行成本明顯高于其他函數(shù),由于這3個(gè)函數(shù)在初次調(diào)用時(shí)會(huì)初始化數(shù)據(jù)結(jié)構(gòu),修改或刪除區(qū)塊內(nèi)容,寫入操作在以太坊中有更高的執(zhí)行成本.

表1 各個(gè)函數(shù)的Gas消耗

如圖6所示,policyAdd()函數(shù)在不同節(jié)點(diǎn)規(guī)模下有不同的gas消耗,因?yàn)殡S著節(jié)點(diǎn)數(shù)量的增加,對(duì)每個(gè)交易的驗(yàn)證次數(shù)就會(huì)變多,會(huì)帶來更多的成本.因?yàn)槌跏蓟瘮?shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)寫入?yún)^(qū)塊導(dǎo)致在最初調(diào)用函數(shù)時(shí)有最高的gas消耗.同時(shí)從圖6中可以看出,節(jié)點(diǎn)數(shù)量增多,并沒有導(dǎo)致該函數(shù)調(diào)用成本快速增長,成本消耗較為穩(wěn)定.

圖6 policyUpdate()函數(shù)的Gas消耗

圖7展示了在不同節(jié)點(diǎn)數(shù)量的情況下函數(shù)TunnelRequest()的時(shí)間消耗.可以明顯的看出節(jié)點(diǎn)數(shù)量對(duì)于該函數(shù)的影響較大,這是因?yàn)楣?jié)點(diǎn)數(shù)量越多,區(qū)塊中存在的隧道數(shù)量也會(huì)越多,在申請(qǐng)時(shí)合約會(huì)搜索查詢是否有重復(fù)隧道,到使用較多時(shí)間,此外節(jié)點(diǎn)數(shù)量變多,交易驗(yàn)證時(shí)間增加.

圖7 函數(shù)TunnelRequest()時(shí)延

表2展示了該函數(shù)在不同節(jié)點(diǎn)數(shù)下執(zhí)行30個(gè)交易的時(shí)間統(tǒng)計(jì).可以看出隨著節(jié)點(diǎn)規(guī)模的增長,交易執(zhí)行的隨之增長.節(jié)點(diǎn)規(guī)模到達(dá)200后交易執(zhí)行時(shí)間增長較快.50節(jié)點(diǎn)到100節(jié)點(diǎn)平均時(shí)間開銷增長為945ms,100節(jié)點(diǎn)到200節(jié)點(diǎn)平均時(shí)間開銷增長為1551ms.但在同一節(jié)點(diǎn)規(guī)模下,最大時(shí)間開銷差不超過300ms,說明本文提出方法在節(jié)點(diǎn)規(guī)模不同情況下執(zhí)行穩(wěn)定,不影響使用者體驗(yàn).

表2 30個(gè)交易下函數(shù)TunnelRequest()的時(shí)間統(tǒng)計(jì)

表3展示了本文方法中相關(guān)函數(shù)和其他研究中的對(duì)比.表3中分別比較了policyadd()、policyUpdate()、和policyDelete()3個(gè)函數(shù)與文獻(xiàn)[12]中對(duì)應(yīng)函數(shù)的Gas消耗對(duì)比.

表3 函數(shù)Gas消耗對(duì)比

從表3中可以看出,在增加策略、策略更新和策略刪除上,本文提出的方法Gas消耗低于文獻(xiàn)[12]中的方法.但在訪問控制函數(shù)上本文的Gas消耗要高于文獻(xiàn)[12]中的方法.因?yàn)樵趯?duì)比文獻(xiàn)中,一條訪問控制請(qǐng)求只需要查詢區(qū)塊里儲(chǔ)存的訪問控制列表,無需向其他合約請(qǐng)求規(guī)則或?qū)傩?而本文提出的方法則需要與主體屬性合約和客體屬性合約、策略合約交互,需要執(zhí)行更多的計(jì)算,并且調(diào)用更多的函數(shù)產(chǎn)生更多的消耗.但文獻(xiàn)[12]中的方法需要資源所有者對(duì)不同的資源制定不同的訪問控制列表并形成訪問控制合約,所以在區(qū)塊中會(huì)存在較多訪問控制合約,在策略制定階段會(huì)存在更多的成本,其策略相關(guān)的函數(shù)相比本文消耗更多.在資源數(shù)量較多的情況下,需要設(shè)定和部署更多的訪問控制合約,相比于執(zhí)行合約中的函數(shù),部署合約有著更高的成本,同時(shí)如果需要頻繁修改增添規(guī)則,所需的成本更高.相比于文本方法,成本更大,說明了提出方法的可行性.

圖8展示了本文執(zhí)行建立通信隧道交易的時(shí)間消耗與BAC[22]中執(zhí)行整個(gè)訪問控制流程的時(shí)間消耗作對(duì)比.BAC提出了一種基于區(qū)塊鏈的訪問控制方案,結(jié)合動(dòng)態(tài)和靜態(tài)代理的方法來提高區(qū)塊鏈的管理效率.BAC主要面向的是節(jié)點(diǎn)規(guī)模較少的智能家居場(chǎng)景,解決未經(jīng)授權(quán)導(dǎo)致的資源濫用、家庭入侵威脅和私人信息泄露問題.

圖8 與BAC對(duì)比

在與BAC實(shí)驗(yàn)節(jié)點(diǎn)規(guī)模相同情況下進(jìn)行對(duì)比,其中網(wǎng)絡(luò)規(guī)模為50個(gè)節(jié)點(diǎn),計(jì)算執(zhí)行50~250 個(gè)交易時(shí)間消耗.從圖8中可以看出,在執(zhí)行不同個(gè)數(shù)交易的時(shí)間消耗上,本文提出的方法相比于BAC時(shí)間消耗少,執(zhí)行的交易越多,本方法與BAC的時(shí)間消耗差距越大,說明本文方法的可用性.

綜上實(shí)驗(yàn)結(jié)果分析可得,通過和其他研究相對(duì)比,本方案在實(shí)現(xiàn)了細(xì)粒度的、低成本的訪問控制方案,使用設(shè)備所有者真實(shí)擁有設(shè)備的管理權(quán),還考慮數(shù)據(jù)交換過程中通信管理問題,通過建立通信隧道實(shí)現(xiàn)設(shè)備間可控?cái)?shù)據(jù)交換.同時(shí)利用區(qū)塊鏈不可篡改、可審計(jì)等特點(diǎn),將訪問控制策略、通信隧道信息存入?yún)^(qū)塊,記錄設(shè)備所有者、設(shè)備的權(quán)限授予、數(shù)據(jù)交換過程,保證了數(shù)據(jù)交換過程的安全性.

6 總 結(jié)

本文提出了一種基于區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)安全共享機(jī)制,結(jié)合基于屬性的訪問控制提出了一套有效的權(quán)限管理機(jī)制,該機(jī)制主要有屬性管理、策略管理和訪問控制組成,實(shí)現(xiàn)了對(duì)系統(tǒng)中用戶靈活、細(xì)粒度的訪問控制,利用區(qū)塊鏈解決了設(shè)備頻繁接入、退出網(wǎng)絡(luò)等情況.同時(shí),基于智能合約實(shí)現(xiàn)了主客體間的通信管理機(jī)制,防止惡意用戶濫用通信資源.最后,在本地以太坊平臺(tái)上測(cè)試該方案的可行性和成本,結(jié)果證明該方案可作為物聯(lián)網(wǎng)系統(tǒng)中安全的、有效的數(shù)據(jù)共享機(jī)制.利用區(qū)塊鏈不可篡改、去中心化等特性,儲(chǔ)存訪問控制規(guī)則、通信隧道信息在區(qū)塊中,阻止了未經(jīng)授權(quán)訪問且便于后續(xù)審計(jì),同時(shí)解決第三方角色帶來的單點(diǎn)故障、不可信等問題.本文所提機(jī)制還存在一些不足,在通信隧道中控制字段現(xiàn)階段較少,需要添加更多的控制內(nèi)容,同時(shí)優(yōu)化在數(shù)據(jù)交換過程中,控制字段編碼,降低控制字段在數(shù)據(jù)交換中的通信成本,并降低通信時(shí)延.在進(jìn)一步完善本方案之外,考慮根據(jù)物聯(lián)網(wǎng)特點(diǎn)改進(jìn)共識(shí)機(jī)制實(shí)現(xiàn)更少的交易時(shí)延,同時(shí)嘗試其他類區(qū)塊鏈平臺(tái),例如IOTA,來解決物聯(lián)網(wǎng)數(shù)據(jù)共享中存在的問題.

猜你喜歡
主客體訪問控制合約
《甲·宣》——文明記憶的主客體交互表達(dá)
新中國成立初期馬克思主義大眾化主客體關(guān)系的特點(diǎn)與當(dāng)代啟示
ONVIF的全新主張:一致性及最訪問控制的Profile A
動(dòng)態(tài)自適應(yīng)訪問控制模型
淺析云計(jì)算環(huán)境下等級(jí)保護(hù)訪問控制測(cè)評(píng)技術(shù)
大數(shù)據(jù)平臺(tái)訪問控制方法的設(shè)計(jì)與實(shí)現(xiàn)
非物質(zhì)文化遺產(chǎn)保護(hù)之管見
論中學(xué)音樂教學(xué)主客體的角色互換
合約必守,誰能例外!——對(duì)“情勢(shì)變更”制度不可寄于過高期望
育儿| 崇左市| 漾濞| 彰化市| 弋阳县| 镇沅| 五莲县| 巴马| 漳州市| 白沙| 淳安县| 金沙县| 广南县| 积石山| 郑州市| 都匀市| 大荔县| 新营市| 晋中市| 太原市| 盘山县| 台州市| 宝应县| 扶余县| 瑞安市| 高邑县| 连州市| 建湖县| 维西| 武宁县| 西乡县| 九江市| 左贡县| 长春市| 曲靖市| 潞城市| 岳阳县| 水富县| 乐昌市| 乳山市| 海南省|