宋麗華,朱宗科,李夢晨,郭艷飛,馬 禮
(1.北方工業(yè)大學 信息學院,北京100043;2.中國化工油氣股份有限公司,北京 100080; 3.治華盛頓大學 計算機科學系,華盛頓特區(qū) 20052)
自物聯(lián)網(wǎng)(internet of things,IoT)概念提出以來,物聯(lián)網(wǎng)技術得到了飛速發(fā)展,由于私人數(shù)據(jù)的收集、處理、分發(fā)已經(jīng)變得越來越隱蔽、普遍,過度授權、超范圍收集個人信息等現(xiàn)象大量存在,帶來了嚴重的安全和隱私問題[1]。
訪問控制是保障物聯(lián)網(wǎng)信息安全的常見技術之一。但常見的傳統(tǒng)訪問控制都是基于中央可信實體的概念構建,通過使用集中式服務器進行訪問控制的驗證。中央可信實體面臨的管理壓力較大,容易造成單點故障,且無法解決在不可信環(huán)境下的訪問控制[2]。因此,出現(xiàn)了一個關鍵問題:我們?nèi)绾卧谖锫?lián)網(wǎng)中實現(xiàn)分布式和可信賴的訪問控制?答案在于新興的區(qū)塊鏈技術。區(qū)塊鏈是一種開放、透明的分布式賬本系統(tǒng),可以驗證且永久地記錄雙方之間有效的交易,具有去中心、去信任、鏈上內(nèi)容不可篡改、鏈上信息公開透明、鏈上數(shù)據(jù)可追溯等特點[3]。以太坊提供了一個名為以太坊虛擬機(ethereum virtual machine,EVM)的去中心化圖靈完備平臺,以運行被稱為智能合約的應用程序代碼。智能合約是駐留在以太坊區(qū)塊鏈環(huán)境中的代碼,可在滿足特定條件時執(zhí)行。只要對區(qū)塊鏈進行寫操作,一定會發(fā)生交易。由于調(diào)用智能合約進行寫操作時一定會伴隨著交易,因此這種智能合約的調(diào)用也記錄在區(qū)塊鏈中[4]。
目前已有諸多將區(qū)塊鏈技術和訪問控制相結合的研究。為了解決傳統(tǒng)訪問控制中存在的單點故障問題,梅穎等[5]提出了一種基于比特幣平臺的區(qū)塊鏈訪問控制模型,將訪問權限和訪問控制策略等信息存儲在區(qū)塊鏈上。Ding等[6]、Alansari等[7]和Damiano等[8]則將區(qū)塊鏈技術和基于屬性的訪問控制技術相結合(attributes-based access control,ABAC)[9],Ding等、Alansari等利用區(qū)塊鏈記錄屬性信息,Damiano等則是利用比特幣交易進行管理和維護訪問控制權限。Ouaddah等[10]提出了一種名為FairAccess的新機制,引入了token的概念,將訪問權限以腳本的形式存在區(qū)塊鏈上。Dorri等[11]將區(qū)塊鏈技術應用到智能家居系統(tǒng)的訪問控制中去,利用比特幣交易管理設備。
隨著以太坊技術的發(fā)展,研究者們將訪問控制與區(qū)塊鏈技術進行更深層次的結合,利用智能合約進行權限的決策。Ouaddah等[12]、史等[13]使用token作為訪問令牌,并利用智能合約進行訪問控制。Christidis等[14]、Ramachandran等[15]、Zhang等[16]提出使用智能合約進行訪問控制裁決,保證了訪問控制的公開透明。Jemel等[17]則使用多個契約對訪問控制進行投票,為訪問控制提供了新的思路。
雖然已經(jīng)有了許多訪問控制和區(qū)塊鏈技術相結合的相關研究,但這些訪問控制技術并不成熟,存在以下問題:①更改權限方式過于復雜,無法做到細粒度控制;②沒有充分利用區(qū)塊鏈的計算能力;③或利用了區(qū)塊鏈的計算能力卻受累于區(qū)塊鏈的低效性;④無法支持輕量級物聯(lián)網(wǎng)設備。
為了解決以上問題,本文提出一種基于區(qū)塊鏈智能合約的物聯(lián)網(wǎng)屬性訪問控制模型ABAC-B(attributes-based access control using blockchain),設計思路如下:①通過引入ABAC中屬性的概念,并將屬性進一步劃分,有效簡化了訪問管理,且能夠進行動態(tài)、細粒度的訪問控制。②將訪問控制策略通過智能合約的方式部署在區(qū)塊鏈上,利用了區(qū)塊鏈的計算能力,且降低了物聯(lián)網(wǎng)設備的計算壓力。③在策略中引入token概念,訪問主體通過提前申請token獲得訪問權限,以及一次申請多次使用的方法,降低區(qū)塊鏈對訪問控制性能的影響。④使用物聯(lián)網(wǎng)網(wǎng)關管理物聯(lián)網(wǎng)設備,將權限驗證部分部署到區(qū)塊鏈智能合約和網(wǎng)關上。
綜合以上考慮,訪問控制模型如圖1所示。該模型由3個功能節(jié)點和兩個安全模塊組成,通過以太網(wǎng)和區(qū)塊鏈連接在一起。
定義1 訪問設備:訪問設備指在一次資源訪問過程中發(fā)起訪問的主體,它們可以不參與區(qū)塊鏈的交易驗證,但具有區(qū)塊鏈的讀取權限。可以用S={s1,s2,…,sn} 表示發(fā)起訪問請求的主體si的集合。
定義2 資源:資源定義請參見文獻[13],本文中的資源可以是數(shù)據(jù)、文件、可被訪問的程序和現(xiàn)實中的可被控制的硬件設備(如:可被遠程控制開關的燈)等客體。可以用O={o1,o2,…,on} 表示物聯(lián)網(wǎng)中可被訪問的資源oj的集合。
定義3 資源擁有者:資源擁有者即網(wǎng)關代理,擁有上述資源和管理權限的實體集合。為了確保有效的訪問和數(shù)據(jù)安全,用戶需要在交換數(shù)據(jù)之前獲得訪問授權。網(wǎng)關在收到用戶的訪問控制請求后,將調(diào)用智能合約進行決策,并將裁決結果在區(qū)塊鏈上進行廣播。
定義4 權限:權限定義請參見文獻[13],通過P={p1,p2,…,pn} 表示訪問控制模型中的權限,權限包括數(shù)據(jù)的讀、寫、刪除和對物聯(lián)網(wǎng)設備的操作等。
圖1 訪問控制模型
定義5 (Token)權限令牌Token定義請參見文獻[13]。通過Tokenij(a,p,tstart,tend)={tokenij(a,p,tstart,tend)|i∈S(tstart),j∈O(tstart),p∈P} 表示, tokenij(a,p,tstart,tend) 表示tstart到tend期間滿足屬性集a的用戶si擁有對資源體oj的操作權限p。資源擁有者需要對token進行簽名,驗證該資源擁有者是此token的發(fā)布方。
定義6 屬性:屬性定義請參見文獻[13]。
定義7 細粒度訪問控制:細粒度的訪問控制是指通過對模型中的對象加以細分,進而對數(shù)據(jù)層次進行權限管理的訪問控制。本文通過將屬性分為角色屬性、權限屬性和標識屬性達到細粒度訪問的目的。細粒度的訪問控制相較于粗粒度的訪問控制可以有效減少過度授權等問題的發(fā)生。在屬性數(shù)量相同的情況下,細粒度的訪問控制可以有效減少策略數(shù)量,減少角色和權限的授予量,降低權限管理難度。
定義8 角色屬性:角色屬性是指在指定模型中,為了劃分某一類設備或某一類角色而抽象出來的屬性,其會隨著模型和應用場景的更改而更改,目的是確認實體設備的身份、功能和此類所有設備所擁有的所有權限??梢杂肦A={ra1,ra2,…,ran} 表示角色屬性的集合。
定義9 權限屬性:權限屬性是指不影響角色分類但影響權限授予的一部分屬性。其可以為身份屬性所延伸的屬性,也可以是與身份屬性相對應的數(shù)值,例如:年齡、工作年限等。目的是在不過多增在角色分類的情況下細化權限授予過程,減少過度授權??梢杂肞A={pa1,pa2,…,pan} 表示權限屬性的集合。
定義10 標識屬性:標識屬性用作標記、臨時分類,也可通過簡單的規(guī)則運算來簡略驗證身份的真實性。可以用MA={ma1,ma2,…,man} 表示權限屬性的集合。
定義11 主體屬性:主體的屬性定義請參見文獻[13],主體屬性的集合用SA來表示。對于某個主體si的屬性集合,通過si.aj={aj|aj∈si,SA} 表示。
定義12 資源屬性:資源的屬性定義請參見文獻[13],資源屬性的集合用OA來表示。對于某個資源的oi的屬性集合,通過oi.aj={aj|aj∈oi,OA} 表示。
定義13 會話歷史:會話歷史是指用戶在系統(tǒng)中的歷史訪問行為和相關信息記錄,使用SH(s,o,t)={sh1,sh2,…,shn} 表示會話歷史的集合。區(qū)塊鏈鏈上內(nèi)容不可更改的特性可以保證每一次會話都被準確無誤地記載下來。
定義14 信任度:信任度Tt是指t時間段,系統(tǒng)根據(jù)用戶歷史行為記錄、模型訪問需求和其所擁有的屬性等信息計算出的一個取值在[-1,1]上的屬性,其目的是為了約束用戶不良行為、甄別惡意節(jié)點以及實施信任約束條件。信任度公式如下
(1)
該公式利用用戶以往的會話結果計算當前時間段t時的系統(tǒng)對訪問主體信任度Tt,其中P(shi)=p(shi)/∑p(shj), 表示會話sh在會話歷史集合SH中所占的比重,p(shi)隨著時間遞減。我們假設每一次會話行為都會帶來一定的收益,電子交易會帶了實際收益,資源的共享、管理和權限管理等會帶來行為收益。 F(s,o,shi)=f(Xsh-X(φ)), 表示對會話shi的信任評估。 X(φ) 為預期帶來的收益,Xsh為實際帶來的收益。 f(x)=sin(πx/2)。 對于首次會話的用戶其信任值在[0.8,0.9]之間隨機取得。
本文中設備注冊點并不承擔存儲功能,其在收到用戶設備或資源所有者設備的注冊信息后會根據(jù)設備的身份或能力發(fā)布為每個設備設置一組屬性,并為每個設備或某類設備部署其專屬的智能合約并記錄屬性、公鑰、訪問策略等相關信息。
主體注冊的目的是獲得一個唯一的ID作為標識和設備注冊點分配的屬性等,以及將相關信息上傳至智能合約。主體s向設備注冊點發(fā)送相關信息和公鑰s.pk,設備注冊點授予用戶唯一用作標識的s.id,屬性組s.a(s.a1,s.a2,…,s.an), 隨后創(chuàng)建并部署智能合約s.c,將主體s的屬性s.a和公鑰s.pk上傳至智能合約,然后在整個區(qū)塊鏈進行廣播并保存在區(qū)塊鏈上。主體和資源所有者可通過調(diào)用s.c智能合約GetAttribute(s)、GetPublicKey(s)函數(shù)獲得用戶s所擁有的屬性和公鑰。設備注冊點可通過調(diào)用智能合約SetAttribute(s.a)、SetPublicKey(s.k)函數(shù)更改主體的屬性,來達到撤銷主體的權限的功能。
資源注冊與主體注冊類似,其目的是獲得一個唯一的ID、設備注冊點分配的屬性和訪問策略等,以及將相關信息上傳至智能合約。
訪問控制過程中有多種終端設備資源,如傳感器、智能攝像頭等,其本身并不具備能夠滿足權限裁決的計算能力,也不能直接連接到權限裁決點,所以需要一個能夠進行權限判斷或者能夠連接到權限裁決點的訪問控制實施設備進行管理。物聯(lián)網(wǎng)中的網(wǎng)關具有一定的計算和存儲能力,并且能夠連接到權限裁決點,所以本模型使用物聯(lián)網(wǎng)網(wǎng)關作為這些資源的擁有者和管理者,同時,作為訪問控制過程中的訪問控制實施點。
當主體想要訪問某一資源時,主體并不直接與終端設備資源通信,而是與訪問控制實施點進行交互。主體向訪問控制實施點發(fā)送訪問控制請求,訪問控制實施點與訪問控制裁決點進行交互,權限通過后得到一個權限令牌token,然后訪問控制實施點與設備資源進行交互,將訪問結果和token返回給主體。
訪問主體也可以直接訪問權限裁決點,通過提前申請token達到降低訪問控制時間成本的目的。
權限裁決點能夠接收訪問控制實施點和訪問主體發(fā)送的訪問控制請求。權限裁決點首先調(diào)用智能合約獲得主體和資源的相關信息,查看安全監(jiān)測模塊判斷主體是否處于懲罰狀態(tài),然后調(diào)用策略合約進行權限裁決,最后若裁決通過,則生成一個權限令牌token,并將裁決結果和token返回給信息發(fā)送方。
當被訪問資源為敏感資源時,權限裁決點會拒絕來自訪問主體的訪問請求,只接受訪問控制實施點的訪問請求。訪問控制實施點發(fā)送訪問請求,權限裁決點將裁決結果和token直接返回給訪問控制實施點。然后訪問控制實施點需要先對token進行簽名,然后將裁決結果和token返回給訪問主體。
訪問控制模型中設置有安全監(jiān)測模塊,可以更好地督促用戶行為和懲罰惡意行為。訪問客體擁有訪問日志,區(qū)塊鏈會記錄用戶的訪問過程行為,當用戶存在不當操作或者惡意操作時會受到相應的懲罰,例如:當用戶在規(guī)定單位時間1 s內(nèi)進行超過閾值3次的訪問時或進行超過3次向無權限資源發(fā)起訪問時,系統(tǒng)判定為輕度惡意訪問,并在規(guī)定時間3 min內(nèi)限定其訪問;用戶在受到處罰過程中或之后再次進行違規(guī)操作,系統(tǒng)判定為中度或重度惡意訪問,延長限制時間,并下降20%信任度。日志分析模塊會在用戶進行訪問時分析用戶的在單位監(jiān)測時間內(nèi)的訪問頻率,當用戶訪問過于頻繁超過閥值或者多次認證失敗時,系統(tǒng)將采取懲罰措施。禁止用戶在一定時間內(nèi)的全部訪問請求,并將懲罰結果記錄在訪問日志和用戶智能合約中。當檢測到用戶進行越權行為或者用戶之間進行惡意串通時,系統(tǒng)也會采取一定的懲罰措施。
當被訪問資源為敏感資源時,訪問控制實施點與訪問主體進行通信的過程中需要使用身份認證模塊。訪問控制過程中用戶和資源都存在身份被冒領的可能,在模型中設置身份認證模塊可以有效地解決這一問題。其原理是使用非對稱加密算法里的數(shù)字簽名算法。
信息發(fā)送方需要預先將自身的相關信息和公鑰發(fā)送給屬性分配機構,屬性分配機構為其部署專屬智能合約,并將屬性、公鑰的相關信息記錄在智能合約中。任何用戶或者資源擁有者在擁有智能合約地址的前提下都可以查看存儲在其中的公鑰。區(qū)塊鏈的防篡改性、可追溯性保證了公鑰的可靠性。將屬性、公鑰等相關信息記錄在智能合約可以有效防止第三方在訪問控制過程中偽造虛假信息,為訪問控制提供了公開透明、安全可信的通訊環(huán)境。
上文描述了模型的形式化定義,這里將詳細介紹模型的工作流程。
當訪問主體沒有權限令牌token的情況下,主體向訪問控制實施點請求訪問資源和權限,具體流程如圖2所示,請求訪問權限過程如算法1所示。
圖2 訪問控制流程模型
算法1: 請求訪問權限算法
輸入: (s.id,o.id,s.p)
輸出: token
(1)RequestAccess (s.id,o.id,s.p)
(2)if o=msg.sender∧s.a≠NULL∧o≠NULL then
(3) s.a←GetAttributes(s);ra,pa←s.a;
(4) o.a←GetAttributes(o);
(5) If AFC(s.a)∈ACR∧Tt>Tr
(6) get Decision()←AFC(ra,pa);
(7) If Decision(o.a, s.a,s.p)=true then
(8) emit request event;
(9) token←CreateToken(s.a,o.a,s.p);
(10) return token;
(11) else return Access denied;
(12) end if
(13)else return Fail verification;
(14)end if
訪問控制實施點向權限裁決點發(fā)送一個三元組請求的消息(s.id,o,s.op)。 分別是主體的唯一id,主體o和用戶所請求的操作s.op。當收到訪問控制請求時權限裁決點通過調(diào)用GetAttribute(),GetStrategy()分別獲得用戶的屬性s.a,客體屬性o.a。依據(jù)屬性條件函數(shù)ACF()判斷屬性是否合規(guī),同時結合計算所得的信任度Tt確認用戶設備身份、類型和信任評價。使用角色條件函數(shù)AFC()根據(jù)角色屬性ra找到與設備相關訪問策略合約Decision()的地址。調(diào)用裁決合約Decision()利用獲得o.a, s.a,s.p做出決策,判斷是否授予權限。
調(diào)用裁決合約Decision()進行判斷的過程是需要發(fā)生交易的,所以會被廣播并記錄在區(qū)塊鏈上。如果決定授予權限,則權限裁決點生成一個對應的token。裁決過程由所有以太坊節(jié)點進行監(jiān)督,裁決結果根據(jù)共識算法的不同需要達到一定占比的支持才能生效,保證了裁決結果的公開透明。
為了不影響訪問速度,訪問主體可以提前向權限裁決點發(fā)送訪問請求。其過程與訪問控制實施點向權限裁決點請求裁決過程類似。
當訪問主體獲得token后,主體向訪問控制實施點發(fā)送訪問請求。訪問控制實施點通過判斷token的有效性代替權限裁決過程,判斷token是否合法如算法2所示。
算法2: 請求訪問算法
輸入: (s.id,o.id,token,s.p)
輸出: true or false
(1)GrantAccess (s.id,token,s.p)←(s.id,token,s.p);
(2)if s=msg.sender∧s.id≠NULL∧token≠NULL then
(3) s.a←GetAttributes(s);
(4) if Effective(token)∧GetAttributes(token)?s.a then
(5) s.p←GetPermission(token);
(6) If s.p?o.p
(7) return true;emit access event;
(8) else return false;
(9) end if
(10) else return false;
(11) end if
(12)else return false;
(13)end if
主體向訪問控制實施點發(fā)送四元消息 (s.id,o.id,token,s.p) 分別是主體的唯一id,主體所使用的token、客體的id和將要使用的權限。然后訪問控制實施點通過調(diào)用GerAttributes(s)查看主體屬性集s.a,并判斷有權利使用token的屬性是否被包含在主體屬性集s.a內(nèi)。最后判斷主體所請求的訪問權限s.p是否屬于資源所有者所允許的權限o.p內(nèi),是則用戶擁有s.p權限訪問資源。需要注意的是當被訪問資源為敏感資源時,主體發(fā)送訪問請求前需要對token進行簽名處理。
基于以上訪問控制模型,搭建了原型演示系統(tǒng),具體硬件環(huán)境配置如圖3所示,其中兩臺臺式計算機、3臺筆記本電腦、一個物聯(lián)網(wǎng)網(wǎng)關開發(fā)板、兩個Wi-Fi開發(fā)板。
圖3 部分設備環(huán)境
在兩臺臺式計算機、3臺筆記本電腦和物聯(lián)網(wǎng)網(wǎng)關開發(fā)板上安裝以太坊客戶端,安裝了以太坊geth客戶端的設備可以轉(zhuǎn)換為以太坊節(jié)點,這些節(jié)點通過配置加入到同一個私有區(qū)塊鏈網(wǎng)絡,如圖4所示。
圖4 仿真實驗拓撲圖
實驗中兩臺臺式計算機和3臺筆記本電腦充當?shù)V工維護整個私有區(qū)塊鏈網(wǎng)絡。物聯(lián)網(wǎng)網(wǎng)關開發(fā)板作為物聯(lián)網(wǎng)設備的代理通過Remix集成開發(fā)環(huán)境編譯用于訪問控制判斷的智能合約。每個以太坊節(jié)點還采用了web3j,通過web3j來與以太坊geth客戶端進行交互。計算機設備規(guī)格見表1。
案例:用戶依次對溫度計、燈進行讀取和控制操作。預計達到的訪問控制結果見表2。
表1 計算機設備規(guī)格
表2 預期訪問結果
用戶使用錯誤簽名請求對溫度計進行讀操作,溫度計可以進行讀操作,但是錯誤簽名導致簽名認證錯誤第一次操作被拒絕。用戶使用正確簽名向溫度計請求控制操作,溫度計只能進行讀操作,控制操作顯然超出溫度計的適用范圍,自然超出token權限范圍,操作被拒絕。用戶使用正確簽名向燈光控制器請求讀操作,權限允許,簽名認證通過,所以允許操作。實驗結果如圖5所示。
圖5 仿真實驗結果
女巫攻擊是指攻擊者利用單個節(jié)點來偽造多個身份存在于P2P網(wǎng)絡中,從而達到削弱網(wǎng)絡的冗余性,降低網(wǎng)絡健壯性,監(jiān)視或干擾網(wǎng)絡正常活動等目的。用戶和資源都存在身份被冒領的可能,本模型在請求訪問過程中,資源擁有者需要對token進行簽名,以此驗證該token是自己發(fā)布的。用戶在得到token后使用資源擁有者的公鑰進行認證,確認該token是資源擁有者所發(fā)布的。在訪問資源過程中,需要用戶自身對token進行私鑰加密簽名,資源擁有者會根據(jù)用戶的公鑰驗證訪問者的身份。解密和簽名的過程會極大地增加女巫攻擊的計算成本,而通過引入私鑰簽名、公鑰認證的過程,可以輕松解決掉用戶身份被冒領的問題。
為了確保正確的訪問控制,ABAC-B模型必須能夠抵抗共謀攻擊。有時,當設備中沒有一個滿足訪問控制要求的屬性集時,它們可能會在利益的驅(qū)動下相互勾結,以嘗試與他人進行身份驗證、惡意串通訪問權限以獲取有價值的數(shù)據(jù)。例如當用戶1擁有屬性集A,用戶2擁有屬性集B∩C。規(guī)定只有擁有(A∪B)∩C才能訪問資源。此時,用戶1想要訪問資源則需要和用戶2惡意串通獲得token。用于訪問時需要提交token和用戶1的ID。資源擁有者在獲得訪問請求后首先要調(diào)用驗證token是否合法,隨后調(diào)用智能合約查看用戶1是否符合token的屬性要求,可以很輕易地發(fā)現(xiàn)用戶1并沒有擁有屬性集C,并終止身份驗證。因此,我們的訪問控制是可以防止用戶間惡意串通的。
ABAC-B模型通過屬性分為角色屬性、權限屬性和標識屬性達到細粒度訪問的目的。本模塊共設置10個節(jié)點,其中包括3個惡意節(jié)點,即擁有錯誤屬性或偽造屬性的節(jié)點和2個低信任節(jié)點,即擁有正確屬性卻申請錯誤權限的節(jié)點,利用本文所提算法,使用循環(huán)隨機請求的方式分別進行10,100,500,1000次實驗,實驗預期及結果見表3。
表3 訪問結果
可以看到當訪問次數(shù)很少時,系統(tǒng)可以準確找到惡意節(jié)點,卻很難區(qū)分低信任節(jié)點。當訪問次數(shù)增加時,會話歷史也在增加,此時系統(tǒng)可以有更多的信息計算節(jié)點的信任度,訪問的正確率也逐步增加。
ABAC-B模型通過提前申請訪問權限和多次使用token,降低區(qū)塊鏈對訪問控制性能的影響。本模塊將通過實驗驗證,引用token可以有效降低區(qū)塊鏈對訪問控制性能的影響。因為本實驗的區(qū)塊鏈環(huán)境和數(shù)字簽名環(huán)境并不能客觀反映ABAC-B模型的時間效能,實驗中POW和PBFT的共識時間來自文獻[13,18]。本次實驗,5種訪問方式共進行20次取平均值,第一次完整的訪問控制時間如圖6所示。其中依次為ABAC-B模型在分別在POW和PBFT環(huán)境下進行無token的訪問控制、有token的訪問控制和傳統(tǒng)的ABAC。需要注意的是在有token的訪問控制過程中,訪問控制實施點通過判斷token的有效性來代替權限裁決過程和共識過程。而無token的訪問控制在進行第一次訪問控制之后,訪問主體將會獲得token,之后將進行有token的訪問控制。可以看出在引入token概念后訪問控制的時間得到有效的減少,且在理想環(huán)境下無token的訪問控制時間比傳統(tǒng)的ABAC訪問控制時間明顯增加,而有token的訪問控制時間則略低于傳統(tǒng)的ABAC訪問控制時間。累計訪問控制時間如圖7所示。
圖6 第一次訪問控制的響應時間
圖7 累計訪問控制響應時間
可以看出,在引入token進行多次訪問控制的情況下,可以有效降低區(qū)塊鏈對訪問控制性能的影響。
實驗中存在一種可能當用戶申請token后且在token生效時間內(nèi)屬性被更改,則此次訪問時間為正常訪問的兩倍,但是此類事件發(fā)生概率太低,可以忽略不計。
在本文中,我們引入了ABAC中屬性的概念,提出了一種與區(qū)塊鏈技術相結合的基于屬性的物聯(lián)網(wǎng)系統(tǒng)訪問控制方案。通過屬性將屬性細化,降低了訪問控制的管理難度。利用智能合約存儲重要數(shù)據(jù)和決策訪問策略,達到了分布式的訪問控制效果,有效防止了單點故障的問題。在策略中引入token概念,訪問主體通過提前申請token獲得訪問權限,以及一次申請多次使用的方法,降低區(qū)塊鏈對訪問控制性能的影響。將屬性、策略、公鑰和權限更新在區(qū)塊鏈上公開,創(chuàng)造了公開透明、安全可信的訪問控制環(huán)境。利用非對稱密碼認證用戶信息。引入了非對稱加密算法中的數(shù)字簽名算法,有效解決了身份被冒領的問題。