梁曉艷,杜瑞忠
(1.河北大學(xué)網(wǎng)絡(luò)空間安全與計算機(jī)學(xué)院,河北 保定 071002;2.河北省高可信信息系統(tǒng)重點實驗室,河北 保定 071002)
物聯(lián)網(wǎng)(IoT,Internet of things)將包括傳感器、移動電話、交通工具、電視機(jī)、智能家電等的大量設(shè)備連接在一起相互通信、交換信息,已深入滲透到人們的日常工作和生活。預(yù)計到2022 年,將有297 億臺設(shè)備連入網(wǎng)絡(luò),其中181 億臺將通過物聯(lián)網(wǎng)互聯(lián)[1]。IoT 在智慧城市、智慧運(yùn)輸、智慧網(wǎng)格中獲得廣泛應(yīng)用的同時,其隱私和安全性也變得非常重要[2],訪問控制是其中的重要機(jī)制[3]。IoT 訪問控制分為基于角色的訪問控制(RBAC,role-based access control)[4]、基于屬性的訪問控制(ABAC,attribute-based access control)[5]和基于權(quán)能的訪問控制(CapBAC,capability-based access control)[6-7]。其中,CapBAC 由于其輕量級、分布式、動態(tài)性和可擴(kuò)展性、滿足最小權(quán)限原則的優(yōu)點,在物聯(lián)網(wǎng)環(huán)境中獲得了廣泛應(yīng)用[8-9]。
權(quán)能令牌和委托是CapBAC 的核心。令牌包括主體、客體、操作和時間間隔,其本質(zhì)上是一種訪問控制規(guī)則,由訪問者自己存放。委托機(jī)制使主體可以簽發(fā)令牌將自己的權(quán)限委托給其他主體,這使CapBAC 機(jī)制具有分布式的優(yōu)點[9],主體之間的委托圖關(guān)系中,一個主體的權(quán)限可能來自多個委托主體的授權(quán)[6],本文稱之為多委托機(jī)制。
訪問控制規(guī)則的準(zhǔn)確性關(guān)系著IoT 的安全性和隱私。CapBAC 規(guī)則對于主體、客體、操作均采用最小權(quán)限原則聲明,但是時間間隔卻由于依賴委托者的主觀判斷而導(dǎo)致其相對于準(zhǔn)確的時間間隔過大或過小,即具有一定的粗糙性。
時間間隔的粗糙性可能被惡意用戶利用。惡意用戶可利用多委托機(jī)制,向多個委托者提出授權(quán)請求,從而獲得多個授權(quán)者授予的對同一訪問授權(quán)的令牌,其中,每個授權(quán)者都根據(jù)自己的理解限制時間間隔,該用戶便可獲得粗糙性最大的時間間隔授權(quán),從而對IoT 應(yīng)用的安全性和隱私造成威脅。
時間間隔的粗糙性是由授權(quán)者對權(quán)限的時間限制認(rèn)識不精準(zhǔn)導(dǎo)致的,由于思維本身的粗糙性,授權(quán)者難以發(fā)現(xiàn)自身配置規(guī)則的粗糙性。
針對以上問題,本文在實際工作中發(fā)現(xiàn),如果多委托者對同一訪問的時間間隔不一致,那么至少一個時間間隔是粗糙的,即規(guī)則語義中的時間間隔是粗糙近似表示。因此,本文從時間間隔一致性分析的角度,分析來自多委托的同一訪問的時間間隔的差異,進(jìn)而分析時間間隔的粗糙性,并將分析結(jié)果通過高可讀性的方式顯示給管理員,從而使管理員可以發(fā)現(xiàn)規(guī)則中的粗糙性。
本文給出一種IoT 下CapBAC 規(guī)則語義表示模型IoTACS(IoT access control semantics)及其時間間隔粗糙性分析(IoTRA,IoT CapBAC interval roughness analysis)算法。首先,給出方法的應(yīng)用場景和系統(tǒng)框架;然后,基于語義網(wǎng)理論建立IoT CapBAC 規(guī)則語義表示模型;最后,界定時間間隔粗糙性,并基于時間間隔一致性給出其形式化表示,基于Jena API(Jena application programming infterface)和JavaCC(Java complier compiler)API給出時間間隔粗糙性分析算法。本文的貢獻(xiàn)如下。
1) 本文提出了一種高可讀性的IoT CapBAC規(guī)則語義表示模型,給出IoT CapBAC 規(guī)則的領(lǐng)域概念結(jié)構(gòu)(包括領(lǐng)域的概念和關(guān)系),可作為IoT CapBAC 規(guī)則領(lǐng)域的術(shù)語集;用概念類的具體實例來描述規(guī)則的指稱語義,因此與以屬性條件為語義組分的形式化方法[10]相比具有更高的可讀性。
2) 本文指出了IoT CapBAC規(guī)則時間間隔的粗糙性問題,并從多委托規(guī)則不一致對比角度給出該概念的形式界定。該概念用于刻畫規(guī)則語義的一種不確定性問題,為后續(xù)該問題的研究提供基礎(chǔ)。
3) 本文拓展了 OWL-Time(Web ontology language-time)[11]時間間隔關(guān)系及其形式表示,可為其他時間本體研究提供參考。
委托CapBAC 因為其輕量級、動態(tài)性和分布式的特點,被IoT@Work 廣泛應(yīng)用于IoT 訪問控制場景中[12]。近年來,CapBAC 與區(qū)塊鏈結(jié)合成為研究熱點。CapBAC 方案具有最小權(quán)限原則的優(yōu)點,即每個主機(jī)必須使用最小權(quán)限來完成訪問;此外,該方案允許主體將訪問權(quán)限委托給其他主體。在最新的研究中,為使委托具有靈活性,委托關(guān)系的結(jié)構(gòu)由樹變?yōu)閳D,即允許多個主體將自己的權(quán)限委托給一個主體,這種情況下,一個主體會擁有多個來自不同委托主體的令牌[6-7]。
由于最小權(quán)限原則使主體、操作和客體都是最小元素,不存在包含關(guān)系,因此該方案下的訪問不存在由于主體、操作和客體的包含關(guān)系而導(dǎo)致的不一致問題,但規(guī)則中的時間間隔可能存在不一致。例如,在智能家居這類需要人工分配訪問權(quán)限時間的場景中,由于不同的人對訪問控制權(quán)限應(yīng)賦時間的認(rèn)識不同,對同樣訪問的多委托授權(quán)者簽發(fā)的令牌中的訪問控制規(guī)則的時間可能不一致,而現(xiàn)有文獻(xiàn)尚未關(guān)注該問題。
已有文獻(xiàn)研究IoT CapBAC 方案中的安全問題。Nakamura 等[13-14]指出了CapBAC 方案中可以導(dǎo)致信息泄露的漏洞,即某用戶具有的權(quán)能限定在某個時間間隔內(nèi),這期間用戶將數(shù)據(jù)存放于另一個在其他時間可訪問的數(shù)據(jù)內(nèi),這樣就可以使用戶在非法時間訪問該數(shù)據(jù)。但文獻(xiàn)[13-14]關(guān)注的是CapBAC 系統(tǒng)流程上的漏洞,而本文關(guān)注的是訪問控制規(guī)則的漏洞。
當(dāng)前IoT 的語義表示和分析研究主要關(guān)注IoT設(shè)備配置的表示和分析[10,15]。Farooq 等[10]提出了一種基于Prolog 的IoT 配置安全屬性聲明及配置與安全屬性沖突檢測的方法。Vannucchi 等[15]提出了一種基于SMT 的對“事件-條件-動作”IoT 配置規(guī)則形式化驗證的技術(shù)。上述文獻(xiàn)采用基于形式化的建模方式,無法表現(xiàn)訪問控制意圖的高層實體。
本體技術(shù)不但可以表現(xiàn)底層的謂詞邏輯,也能表現(xiàn)結(jié)構(gòu)化、易理解的領(lǐng)域知識。CapBAC 訪問控制規(guī)則語義本質(zhì)上是訪問事件,基于本體的CapBAC 語義表示本質(zhì)上屬于事件本體表示研究范疇。現(xiàn)有事件本體模型主要有Event-Model-F[16]、LODSE(linking open descriptions of social event)[17]、TEO(time event ontology)[18]等。其中,Event-Model-F 描述時間、空間、物體和人有關(guān)的事件本體;LODSE 和TEO 描述社會事件。現(xiàn)有時間本體模型主要有OWL 描述的Time Ontology[11,19]、安全領(lǐng)域的時間本體[20]和GFO Time Ontology[21]。其中,Time Ontology 提供了時間屬性,并且描述了時間點和時間區(qū)間的順序。OWL-Time 時間本體描述了時間相關(guān)概念,它用OWL 的xsd:dataTime 數(shù)據(jù)類型定義了Intervals 和Time Point,這些類型支持?jǐn)?shù)據(jù)的比較,因此也可以表示特定時間點之間順序關(guān)系,但OWL-Time 沒有聲明怎樣推理interval 和point 之間的量化關(guān)系。GFO-Time 用一階邏輯公理表示時間,是時間的代數(shù)。此外,TEO也對GFO 做了改進(jìn),加入了在醫(yī)學(xué)語義中經(jīng)常出現(xiàn)的“Period Time”的語義表示。
當(dāng)前時間本體沒有給出時間先后關(guān)系的形式化表示,本文研究擴(kuò)展時間的關(guān)系并給出形式化表示。當(dāng)前事件本體中,均認(rèn)為事件是狀態(tài)的變化,并且定義的是針對具體領(lǐng)域的事件,本節(jié)不關(guān)注事件的狀態(tài)變化,而僅僅關(guān)注事件的動作,并且定義IoT CapBAC 特定領(lǐng)域的事件組分。另外,當(dāng)前的IoT 設(shè)備配置表示和分析主要基于形式化表示和分析,但該方法一直存在分析效率瓶頸[22]。
綜上,事件本體和時間本體可讀性較好,為建立新的IoT CapBAC 語義模型和探索快速的語義分析算法提供了基礎(chǔ),但針對IoT CapBAC 領(lǐng)域的事件語義及時間關(guān)系語義,以及時間間隔粗糙性分析算法尚需要進(jìn)一步研究。
系統(tǒng)框架如圖1 所示。令牌簽發(fā)機(jī)制由物聯(lián)網(wǎng)實體、云服務(wù)和部署在區(qū)塊鏈上的智能合約構(gòu)成。其中,物聯(lián)網(wǎng)實體指用戶、智能設(shè)備等,智能合約通過云服務(wù)接口彼此訪問,并通過云服務(wù)存放數(shù)據(jù)。
CapBAC 訪問控制令牌簽發(fā)機(jī)制如圖1 中的步驟1)~步驟6)、步驟10)~步驟12)所示。本文在上面的流程中加入粗糙性檢測方法,如圖1中的步驟7)~步驟9)所示,其中關(guān)鍵為步驟8)和步驟9)。具體步驟如下。
圖1 系統(tǒng)框架
1) 云服務(wù)部署區(qū)塊鏈和實現(xiàn)CapBAC 授權(quán)功能的智能合約。
2) 智能合約產(chǎn)生的令牌等數(shù)據(jù)存放于云服務(wù)上。
3) 物聯(lián)網(wǎng)的實體均向物聯(lián)網(wǎng)注冊,獲取VID和區(qū)塊鏈賬號。
4) 實體通過云服務(wù)向委托者申請授權(quán)。
5) 委托者給出授權(quán)的訪問控制規(guī)則,調(diào)用智能合約,提出令牌簽發(fā)請求。
6) 當(dāng)前區(qū)塊鏈中的智能合約驗證請求的有效性。
7) 查詢實體的所有令牌。
8) 生成步驟7)中返回令牌的訪問控制規(guī)則的語義。
9) 分析語義中的時間間隔的粗糙性。
10) 智能合約根據(jù)請求是否有效,簽發(fā)令牌或拒絕。
11) 返回令牌簽發(fā)結(jié)果給云服務(wù)。
12) 返回令牌簽發(fā)結(jié)果給實體。
Nakamura 等[6-7]給出了步驟7)的實現(xiàn),粗糙性檢測方法的關(guān)鍵在于步驟8)和步驟9),即本文所提的IoTRA 算法。該算法的理論基礎(chǔ)是CapBAC 規(guī)則的語義模型(記為IoTACS)和時間間隔粗糙性表示方法。其中,前者由IoT 訪問控制術(shù)語集(記為CBACT,描述領(lǐng)域術(shù)語集,包括高層意圖的概念結(jié)構(gòu)和基本概念的數(shù)據(jù)屬性等)、規(guī)則句義(記為CBACA1,是用該術(shù)語集描述的規(guī)則的句義)、規(guī)則句義隱含的時間關(guān)系語義(記為CBACA2)三部分組成;后者由時間間隔粗糙性(記為CBACA3)組成。
本節(jié)用描述邏輯給出CapBAC的術(shù)語集的形式化表示。
IoT CapBAC 規(guī)則的句法為
其中,rule 為非終結(jié)符,其余詞法變量為終結(jié)符。
按照易于管理員理解的概念及結(jié)構(gòu),本文定義描述式(1)所示規(guī)則語義所需的術(shù)語及關(guān)系,如圖2所示。
圖2 CapBAC 規(guī)則的術(shù)語集——CBACT
為描述式(1)的前4 項語義,本文定義“實體”(Entity)、“操作”(Operate)2 個概念,以及“操作是”(oprIs)、“主體是”(subIs)、“客體是”(objIs)3 個對象關(guān)系來界定“訪問”概念;用前4 項的值作為數(shù)據(jù)屬性界定“實體”和“操作”概念。
OWL-Time 本體中的“ 時間間隔(time:Interval)”概念表示式(1)中后12 項的語義;該概念由該本體中的“日期時間”(time:DataTime)概念,以及“time:hasBeginning”和“time:hasEnd”這2 個對象關(guān)系來界定;“日期時間”概念由這些屬性值作為數(shù)據(jù)屬性的值來界定。
為表示粗糙性,本文定義“粗糙集”(isRoughSetOf)對象關(guān)系表示“時間間隔”之間的粗糙性關(guān)系;定義“后”(after)關(guān)系表示時間之間的順序關(guān)系,進(jìn)而界定“包含”(include)、“交叉”(intersect)2 種不一致關(guān)系。
整個規(guī)則語義由上述概念界定的“訪問控制”(AccessControl)概念來描述。
綜上,術(shù)語集中共包含6 個概念、11 個對象關(guān)系以及8 個數(shù)據(jù)屬性關(guān)系。
1)“訪問”的概念結(jié)構(gòu)
定義1操作。操作表示主體通過物聯(lián)網(wǎng)內(nèi)的協(xié)議對客體完成的動作。在IoT 環(huán)境中,操作由IoT 中的協(xié)議類型和該協(xié)議中的標(biāo)志位唯一標(biāo)識。如IoT 中的MQTT 協(xié)議的PUBLISH、SUBSCRIBE 標(biāo)志位分別表示寫和讀操作,或者HTTP 的PUT 或GET 標(biāo)志位分別表示寫和讀操作。操作的形式化定義為
其中,xsd:String 是XSD(XML schema definition)中內(nèi)置的數(shù)據(jù)類型。下文帶“xsd”命名空間的數(shù)據(jù)類型也是如此,不再贅述。
定義2實體。實體是發(fā)起操作的主體和執(zhí)行操作的客體的集合。在IoT CapBAC 中,主體和客體都是最小粒度,因此不進(jìn)一步用屬性來界定該概念。
定義3訪問。訪問是主體對客體執(zhí)行的一次操作。該概念由主體、客體、操作唯一標(biāo)識,因此在定義1、定義2 的基礎(chǔ)上,引入3 個對象關(guān)系即可形式化表示該概念。
2)“時間間隔”的概念結(jié)構(gòu)
OWL-Time 本體通過首先定義“日期時間”,在此基礎(chǔ)上給出了“時間間隔”的定義,本文直接引入了這種概念結(jié)構(gòu),并進(jìn)一步給出其形式化表示。
定義4日期時間。日期時間表示日歷時鐘系統(tǒng)中的一個時刻。對日歷時鐘系統(tǒng)的不同元素用單獨的值構(gòu)成日期和時間的描述,引入OWL-Time 的數(shù)據(jù)屬性:年(year)、月(month)、日(day)、小時(hour)、分鐘(minute)、秒(second),由OWL的XSD 數(shù)據(jù)類型(如Decimal 和 Integer)表示。另外,為后續(xù)描述時間間隔之間的關(guān)系,還擴(kuò)展定義了對象屬性 after,它表示日期時間之間的“在……后”順序關(guān)系。
定義5時間間隔。時間間隔是表示時間日期范圍的時間。它由開始的日期時間和結(jié)束的日期時間唯一指定;此外,為表示粗糙性,本文引入了時間間隔之間的包含(include)、交叉(intersect)和粗糙集(isRoughSetOf)關(guān)系。形式化表示如下
1.4 觀察指標(biāo) 觀察兩種術(shù)式治療患者的術(shù)中出血量、淋巴結(jié)清掃數(shù)目、手術(shù)時間、術(shù)后肛門排氣時間、術(shù)后住院時間、術(shù)后并發(fā)癥發(fā)生率及術(shù)后生活質(zhì)量,術(shù)后生活質(zhì)量包括排便頻率、排便緊迫感、排便困難及肛門功能滿意度。
3)“訪問控制”的概念結(jié)構(gòu)
“訪問控制”是允許的訪問的聲明。它由訪問和日期時間間隔唯一確定。形式化表示如下
本節(jié)首先基于CapBAC 規(guī)則的句法結(jié)構(gòu)給出其句義(CBACA1)表示方法,然后給出句義中隱含的時間關(guān)系語義(CBACA2)。
對于滿足式(1)句法的CapBAC 規(guī)則,其句義可看作CBACT 中概念的實例以及實例間關(guān)系的集合。其形式化描述如下
其中,x和y為實例,C為x所屬的概念,z為實例或者值,r為對象關(guān)系或者數(shù)據(jù)屬性關(guān)系。
圖3 表示語義樹中的16 個葉子節(jié)點中的帶“_V”后綴的變量為式(1)中的16 個終結(jié)符詞法變量的取值。帶“_S”后綴的變量是由帶“_V”后綴的變量所生成的新變量,它們用來表示新生成的高層意圖對象。
圖3 CapBAC 規(guī)則句義的語義樹表示
這種句義表示方法與形式化的語義表示方法相比,不但能夠表示語義屬性的真值表達(dá)式,而且能夠表示其背后體現(xiàn)的高層訪問控制意圖的實體組分和實體之間的關(guān)系。因而,該句義表示方法可用于表示時間間隔的粗糙性。
5.1 節(jié)給出了句義表示方法。這些語義生成了各個基本概念的實例和依據(jù)概念界定關(guān)系生成的非基本概念的實例。但這些實例之間隱含的時間關(guān)系尚未表示。本節(jié)給出生成這些關(guān)系的定理。
設(shè)2 個DateTime 類型的實例d1 和d2 的year、month、day、hour、minute、second 的屬性值分別為y1、y2、m1、m2、d1、d2,h1、h2、、s1、s2。
定理1日期時間的“后”關(guān)系的邏輯表示為
式(8)中的橫線上面是邏輯條件,下面是邏輯結(jié)論。條件中以“swrl”為命名空間的謂詞為SWRL(semantic Web rule language)謂詞,其中,swrl:lessThan、swrl:equal 分別表示小于、等于數(shù)值關(guān)系謂詞。
通過上述邏輯表達(dá)式,可以通過推理日期之間的after 關(guān)系,進(jìn)而推理出時間間隔之間的包含(include)和交叉(intersect)2 種不一致關(guān)系。
設(shè)x1、x2為時間間隔的實例,y1、y2、y3和y4為日期時間的實例,則有定理2 和定理3。
定理2Interval 的邏輯表示滿足以下條件。
定理3Interval 的交叉關(guān)系的邏輯表示為
由于定理1、定理2 和定理3 較易理解,因而其證明過程不再贅述。
CBACA2中的元素為式(8)~式(10)所示推理規(guī)則的后件部分。
通過對時間間隔不一致現(xiàn)象的分析,本文發(fā)現(xiàn)以下規(guī)律。
定理4如果2 個規(guī)則對同樣訪問授權(quán)的時間間隔不一致,則其意圖至少是其中一個時間間隔的粗糙集。
證明1) 若2 個規(guī)則的訪問相同,則該訪問的時間間隔意圖(即應(yīng)允許的最準(zhǔn)確的時間間隔)應(yīng)是唯一的。
2) 若2 個時間間隔不一致,則2 個時間間隔不等價。
3) 若2 個時間間隔都是對同一個訪問的時間間隔意圖的精準(zhǔn)表示,則由1)可推知,2 個時間間隔均與意圖等價,即2 個時間間隔等價。
3)的結(jié)論與2)矛盾,因此3)的假設(shè)不成立。
證畢。
依據(jù)定理4,可以將意圖定義為2 個時間間隔的粗糙集。當(dāng)其中一個時間間隔為意圖的精確表示時,可以看作粗糙集中粗糙度為0 的極限情況。
當(dāng)有2 個訪問A和A′,對同樣的訪問a,有包含或者交叉的2 個時間間隔x和y時,則存在時間間隔意圖z是x的粗糙集,也是y的粗糙集。形式化表示為式(11)和式(12)。
式(11)和式(12)所示推理規(guī)則的后件部分為新產(chǎn)生的語義,記為CBACA3,即時間間隔的粗糙性。該語義的含義為創(chuàng)建新的時間間隔實例z,它是x和y的粗糙集。
時間間隔粗糙性分析算法偽代碼如算法1 所示。
算法1IoTRA 算法
輸入Rules={rulei|0≤i≤t},IoTACS.//Rules是待分析的規(guī)則集合;IoTACS 是TDB 形式存儲的OWL 語義,//其內(nèi)容僅包含CBACT(如第4 節(jié)所示,由人工創(chuàng)建完成),其他組分由算法依次生成
輸出CBACA3// CBACA3是規(guī)則語義中的時間間隔粗糙性(如第6 節(jié)所示)
首先借助Protégé 工具由人工建立術(shù)語體系(即第4 節(jié)所示的CBACT),然后在此基礎(chǔ)上,對規(guī)則進(jìn)行語法分析,依照圖3 所示的語義樹生成句義(即第5.1 節(jié)所示的CBACA1),接著根據(jù)式(8)~式(10)推理出時間關(guān)系(即第5.2 節(jié)所示的CBACA2),根據(jù)式(11)~式(12)推理出粗糙關(guān)系(即第6 節(jié)所示的CBACA3),最后得到語義 IoTACS=CBACT ∪CBACA1∪CBACA2∪CBACA3。
算法1 中,生成語義部分的時間復(fù)雜度與規(guī)則的條數(shù)m相關(guān),IOTACS 中的CBACA 的語義規(guī)模(即斷言的數(shù)目)與m成正比,因而CBACA1語義生成的復(fù)雜度為O(n)。語義推理部分,CBACA2和CBACA3均使用SPARQL 語言在Jena TDB 數(shù)據(jù)庫上完成推理,由于該數(shù)據(jù)庫按照主體、客體、屬性三元組分別建立索引,因而,設(shè)語義節(jié)點個數(shù)為n,推理的復(fù)雜度即為查詢的復(fù)雜度,每一個查詢項的復(fù)雜度為O(lgn),查詢的項數(shù)為式(8)~式(12)的前件所示,最大為6 項,因而推理的復(fù)雜度為O((lgn)6)。
本文給出的IoT CapBAC 規(guī)則語義表示模型,及其基礎(chǔ)上的時間間隔一致性分析算法,通過分析來自多委托的同一訪問的時間間隔的差異,進(jìn)而分析出時間間隔的粗糙性,并將分析結(jié)果通過高可讀性的方式顯示給管理員,從而使管理員可以發(fā)現(xiàn)規(guī)則中的粗糙性。該方法的特點如下。
1) IoTRA 算法的有效性:可以通過一致性對比分析出時間間隔的粗糙性。
2) IoTACS 模型的高可讀性:與形式化方法相比,該方法的語義具有更高的可讀性,便于管理員理解;可讀性采用由于易用而應(yīng)用最廣泛的文本可讀性[23]來度量,計算式為
其中,Average Sentence Length 表示句子包含的語詞數(shù);Number of hard words 表示難理解的詞,在英語語言中指超過2 個音節(jié)的詞,本文將該參數(shù)定義為不指代高層對象或關(guān)系的詞。
3) IoTRA 算法的高效性:與形式化方法相比,該方法的分析速度更快。本節(jié)通過仿真較大規(guī)模數(shù)據(jù),對比該方法和形式化方法的分析時間,說明該方法的高效性。
本節(jié)采用智能家居場景中的案例進(jìn)行研究,但在其他采用CapBAC多委托機(jī)制的場景中,如家居、數(shù)字醫(yī)療、車聯(lián)網(wǎng)、智能電網(wǎng)、工業(yè)與公共基礎(chǔ)設(shè)施等采用CapBAC 機(jī)制實現(xiàn)訪問控制的場景中,也同樣適用。
本節(jié)案例場景內(nèi)有3 個用戶:Alice、Bob 和Eve。Alice 與Bob 是家人,因此Alice 將智能家居訪問全部委托給Bob。2020 年11 月15 日Alice出差一天,她將智能家居中的灌溉服務(wù)的訪問權(quán)在10:00—12:00 這個時段賦予鄰居Eve。如果Eve想多獲得灌溉系統(tǒng)的訪問權(quán),他可以再向Bob 申請權(quán)限;Bob 平時不灌溉,因此依據(jù)Alice 的出差時間,將灌溉系統(tǒng)的訪問時間設(shè)置為8:00—22:00。
首先,用Protégé 工具建立術(shù)語集,如圖4 所示。圖4(a)~圖4(c)分別為用Protégé 創(chuàng)建的概念集、對象屬性關(guān)系集和數(shù)據(jù)屬性關(guān)系集。這些術(shù)語集存儲為OWL 文件。
圖4 用Protégé 人工構(gòu)建的術(shù)語
然后,在上述場景中,每次簽發(fā)Token 前運(yùn)行IoTRA 算法,該算法將本次授權(quán)的Token 與之前的Token 對比,生成規(guī)則的語義、推理隱含的時間關(guān)系,并進(jìn)一步推理出時間間隔粗糙性。運(yùn)行IoTRA算法,IoTACS 的全部語義用Protégé 顯示,如圖5所示。
圖5 用Protégé 顯示IoTACS 的全部語義
1) IoTRA 算法的有效性討論
圖5 中,“TimeIntention1”為新生成的Interval類型的實例,“IoTACT#2020.1.15_8:00_22:00”和“IoTACT#2020.1.15_10:00_12:00”為其粗糙集。
這樣,授權(quán)者Bob 收到該報告后可知授權(quán)的時間間隔的粗糙度為0.86,由于粗糙度太高,因此依據(jù)interval1 調(diào)整授權(quán)時間為10:00—12:00,從而有助于提升授權(quán)時間的準(zhǔn)確性。
該案例研究說明,在家居、數(shù)字醫(yī)療、車聯(lián)網(wǎng)、智能電網(wǎng)、工業(yè)與公共基礎(chǔ)設(shè)施等采用CapBAC 多委托機(jī)制實現(xiàn)訪問控制的場景中,使用本文算法可以通過不同委托者在授權(quán)的時間間隔上的對比發(fā)現(xiàn)其中至少一個時間間隔的粗糙性,從而有助于委托者準(zhǔn)確調(diào)整時間間隔而降低風(fēng)險。
2) IoTACS 與形式化模型相比較的高可讀性
本節(jié)對比IoTACS 與Farooq 等[10]提出的形式化模型來表示本節(jié)案例語義的可讀性。
首先,IoTACS 表示的一條語義如圖5 中的Token1所示,其中8 個實體詞、7 個關(guān)系詞,共計15 個詞,這些語詞都是高層對象或關(guān)系,均不是難懂詞,用式(13)計算IoTACS 表示的句義的可讀性為0.4×(15+0)=6。
采用文獻(xiàn)[10]模型,用Prolog 表示同樣的語義則為
根據(jù)文獻(xiàn)[10]表示的語義用到30 個語詞,包括15 個對象和15 個謂詞。其中,前3 個對象和前3 個謂詞是易懂詞,其余均為難懂詞,可讀性為0.4×(30+24)=21.6。
由此可見,IoTAC 模型的可讀性更好。語義的可讀性在規(guī)則分析中對于輔助管理員理解、診斷問題有重要影響[24]。因此,本文提出的模型更能輔助管理員理解當(dāng)前的訪問控制規(guī)則語義及其中的粗糙性。
選擇與本文最相近的IoTC2算法[10],來對比在不一致分析上的性能。
本文人工構(gòu)造了6 組不同規(guī)模的訪問控制規(guī)則,分別包含500 條、1 000 條、1 500 條、2 000 條、2 500 條和3 000 條訪問控制規(guī)則,并生成了對應(yīng)的Prolog 語義和本文的語義。為考慮存在不一致時的分析效率,構(gòu)造了3%不一致規(guī)則的數(shù)據(jù)。
本節(jié)實驗用IoTRA 算法和IoTC2算法分別析其中的不一致,記錄各算法的響應(yīng)時間。由于IoTC2算法只能分析不一致,不能分析粗糙性,因此本節(jié)實驗僅對比2 種算法的不一致分析性能,沒有對比粗糙性分析性能。
實驗環(huán)境如下:操作系統(tǒng)為Win7,內(nèi)存為16 GB,CPU 為Intel(R) Core(TM)i5-320M 2.50 GHz。響應(yīng)時間對比如表1 所示。
表1 分析不一致性的響應(yīng)時間對比
從表1 可以看出,IoTRA 算法的響應(yīng)時間在不同的不一致規(guī)則比例中都顯著優(yōu)于IoTC2算法。這是因為,IoTRA 算法分析不一致的復(fù)雜度為O((lgn)k),其中n為節(jié)點個數(shù),k為推理規(guī)則(如式(8)~式(10)所示)前件條件的最大項數(shù)。IoTC2算法基于Prolog API,是一種采用深度有限遍歷的方法,依據(jù)深度遍歷的復(fù)雜度,其推理語義的復(fù)雜度為O其中m為節(jié)點個數(shù),l為推理規(guī)則項數(shù)。語義節(jié)點數(shù)n和m為同量級變量,k和l為同量級變量,因此IoTRA 算法的時間復(fù)雜度小于IoTC2算法。
實驗結(jié)果表明,本文所提IoTRA 算法對規(guī)則分析的響應(yīng)性能顯著優(yōu)于IoTC2算法,更適用于大規(guī)模的IoT 訪問控制規(guī)則分析。
本文為突破IoT CapBAC 規(guī)則委托中的多授權(quán)規(guī)則時間粗糙性分析的瓶頸,提出規(guī)則語義中的時間間隔語義是時間間隔意圖的粗糙集近似是導(dǎo)致該問題的根本原因,進(jìn)而提出時間間隔粗糙性分析方法;給出了IoT 下CapBAC 規(guī)則的語義模型IoTAC,形式化界定時間間隔的不一致及粗糙性,并基于語義網(wǎng)開源Java 架構(gòu)——Apache Jena API,給出時間間隔粗糙性分析算法IoTRA。案例研究表明,本文所提算法可在簽發(fā)訪問控制規(guī)則前分析出時間間隔粗糙集,有助于管理員及時調(diào)整準(zhǔn)確的授權(quán)時間,并且與形式化模型相比,IoTAC 具有更好的可讀性。與IoTC2算法的對比實驗說明,IoTRA算法的響應(yīng)時間顯著減少。本文所提算法為分析IoT 訪問控制規(guī)則語義的粗糙性提供了一種思路。將來的研究工作是分析IoT 訪問控制規(guī)則語義中的其他不確定性。