趙 越,張玉健,孫雨虹,蔣國(guó)權(quán)
(1.東南大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 211189;2.國(guó)防科技大學(xué) 第六十三研究所,江蘇 南京 210007;3.國(guó)防科技大學(xué) 大數(shù)據(jù)與決策實(shí)驗(yàn)室,湖南 長(zhǎng)沙 410073)
隨著數(shù)字信息化技術(shù)的發(fā)展,數(shù)據(jù)在軍事領(lǐng)域中扮演著越來越關(guān)鍵的角色,逐漸成為作戰(zhàn)決策和戰(zhàn)略規(guī)劃的重要依據(jù)。在軍事情報(bào)信息數(shù)據(jù)交換的過程中,對(duì)數(shù)據(jù)訪問行為采取安全的訪問控制(Access Control,AC)方法至關(guān)重要。在大規(guī)模的軍事數(shù)據(jù)交換和訪問環(huán)境中,訪問控制可以通過限制數(shù)據(jù)的訪問權(quán)限范圍來保護(hù)軍事數(shù)據(jù)的安全和保密性。通過訪問控制,資源所有者可以創(chuàng)建訪問策略,以確保只有合法用戶才能對(duì)資源執(zhí)行合法操作[1]。
訪問控制策略是控制數(shù)據(jù)訪問行為的第一道門檻,它能夠限制或制止未經(jīng)授權(quán)的訪問行為,從而保護(hù)數(shù)據(jù)的安全。在特殊場(chǎng)景如政府部門、軍事應(yīng)用等場(chǎng)景下,數(shù)據(jù)的安全存儲(chǔ)管理需要同時(shí)考慮保密性、完整性和可用性,因此訪問控制策略需要具有一定的細(xì)粒度需求。與此同時(shí),由于上述特殊場(chǎng)景下不同的實(shí)體擁有不同的安全層級(jí)關(guān)系(如不同的軍事數(shù)據(jù)保密等級(jí)),低敏感等級(jí)的數(shù)據(jù)用戶不能“越級(jí)”訪問高敏感等級(jí)的數(shù)據(jù),因此需要更為靈活且嚴(yán)格的訪問控制機(jī)制以契合特殊場(chǎng)景下的數(shù)據(jù)訪問安全和監(jiān)管需求。
傳統(tǒng)的訪問控制模型,例如自主訪問控制(Discretionary Access Control,DAC)、強(qiáng)制訪問控制(Mandatory Access Control,MAC)和基于角色的訪問控制(Role-Based Access Control,RBAC)雖然具有一定的可行性,但是它們的控制粒度比較粗糙,無法靈活地應(yīng)對(duì)不同場(chǎng)景下的數(shù)據(jù)訪問需求。例如,RBAC模型將用戶分為角色并將權(quán)限授予角色,而無法對(duì)用戶的具體屬性進(jìn)行細(xì)致的控制。基于屬性的訪問控制(Attribute-Based Access Control,ABAC)是一種新興的訪問控制模型,它通過對(duì)實(shí)體的屬性進(jìn)行細(xì)粒度的控制,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)訪問的精確控制[3]。然而,ABAC模型并不能滿足特別是在政府部門、軍事應(yīng)用等特殊場(chǎng)景下的訪問控制需求,需要更為嚴(yán)格的訪問控制策略。在這種情況下,強(qiáng)制訪問控制MAC模型可以實(shí)現(xiàn)對(duì)數(shù)據(jù)訪問的更為嚴(yán)格控制,即只有滿足特定的訪問層級(jí)才能訪問數(shù)據(jù)。
目前已有相關(guān)工作針對(duì)層次化訪問控制方法提出了將ABAC和MAC相結(jié)合的解決方案。在文獻(xiàn)[7]中通過屬性值、訪問安全值評(píng)估的方式,訪問者屬性值需要滿足數(shù)據(jù)安全值才能通過訪問控制的驗(yàn)證,但是這種評(píng)估和驗(yàn)證的方法都是依賴于一個(gè)中央評(píng)估機(jī)構(gòu)來進(jìn)行的,存在單點(diǎn)故障和屬性隱私泄露的風(fēng)險(xiǎn)。
區(qū)塊鏈技術(shù)具有去中心化、防篡改、集體維護(hù)和透明等特點(diǎn),被認(rèn)為是訪問控制方法的可信替代基礎(chǔ)設(shè)施[2]。首先,區(qū)塊鏈可以幫助解決傳統(tǒng)中心化訪問控制方案中的單點(diǎn)故障問題;其次,通過消除第三方而不需要擔(dān)心第三方的隱私泄露;第三,將區(qū)塊鏈技術(shù)應(yīng)用于訪問控制從而可以創(chuàng)建可信且不可修改的歷史日志。通過使用智能合約,可以監(jiān)控訪問控制程序并執(zhí)行預(yù)先指定的策略。因此,本文基于區(qū)塊鏈設(shè)計(jì)一種新的訪問控制模型,以滿足特殊分層訪問場(chǎng)景下的數(shù)據(jù)安全和監(jiān)管需求。需要設(shè)計(jì)一種新的訪問控制模型,一方面所設(shè)計(jì)的訪問控制模型需契合具有敏感安全層級(jí)的場(chǎng)景,另一方面所實(shí)際的訪問控制模型需要在驗(yàn)證的過程中保護(hù)重要屬性和層級(jí)區(qū)限的隱私安全。
本方案設(shè)計(jì)了一種將基于屬性的訪問控制ABAC和強(qiáng)訪問控制MAC相結(jié)合的方法,結(jié)合區(qū)塊鏈評(píng)估屬性值和敏感層級(jí)并公開評(píng)估結(jié)果,使用同態(tài)加密的方法在不暴露數(shù)據(jù)敏感層級(jí)和用戶屬性的前提下完成訪問控制權(quán)限的驗(yàn)證,從而確定數(shù)據(jù)用戶可訪問數(shù)據(jù)的具體范圍,同時(shí)所有的訪問控制歷史信息都通過日志的方式上鏈以供后續(xù)的監(jiān)管。本文的主要貢獻(xiàn)總結(jié)如下:
(1)本文提出了一種通過區(qū)塊鏈分布式賬本將屬性進(jìn)行評(píng)估量化并鏈上公開的方法,實(shí)現(xiàn)更加細(xì)粒度的且分層的數(shù)據(jù)訪問控制策略。通過Paillier同態(tài)加密算法在不暴露數(shù)據(jù)敏感層級(jí)和用戶屬性的前提下完成訪問控制權(quán)限的驗(yàn)證。
(2)除了從理論上分析所提出的訪問控制方案的安全性之外,本文還使用Hyperledger Fabric作為實(shí)驗(yàn)平臺(tái)對(duì)其進(jìn)行有效性和性能評(píng)估。
傳統(tǒng)的集中式訪問控制方法是指在一個(gè)中心服務(wù)器或授權(quán)機(jī)構(gòu)上進(jìn)行訪問權(quán)限的管理和控制。這種方法通常使用訪問控制列表(Access Control List,ACL)或訪問控制矩陣(Access Control Matrix,ACM)來定義用戶對(duì)資源的訪問權(quán)限[4]。文獻(xiàn)[6]針對(duì)智能醫(yī)療場(chǎng)景中敏感數(shù)據(jù)存儲(chǔ)和傳輸不安全的問題,提出了一種基于密文策略屬性加密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)的訪問控制框架,數(shù)據(jù)存儲(chǔ)在半可信服務(wù)器中,密鑰分為屬性密鑰和時(shí)間密鑰,患者在密文中嵌入訪問策略來進(jìn)行細(xì)粒度的訪問控制。文獻(xiàn)[7]針對(duì)一般高敏感度場(chǎng)景的訪問控制策略需求,提出將ABAC和MAC通過對(duì)屬性量化進(jìn)行結(jié)合的方法,根據(jù)屬性安全值來對(duì)訪問控制主體和客體進(jìn)行安全分級(jí),從而實(shí)現(xiàn)具有細(xì)粒度的層級(jí)訪問控制方法。然而,文獻(xiàn)[4]、文獻(xiàn)[5]、文獻(xiàn)[6]是基于單一的訪問控制方法(如ABAC方法)來進(jìn)行細(xì)粒度的訪問控制,單一的ABAC方法在有安全敏感分級(jí)需求的場(chǎng)景中缺乏對(duì)層級(jí)安全的考慮;文獻(xiàn)[7]考慮到了這一點(diǎn),但是其方案中屬性機(jī)構(gòu)評(píng)估的屬性值缺乏公平透明的公開方式,屬性值有單方面篡改的可能,同時(shí)該工作缺少對(duì)環(huán)境屬性的描述。此外,以上方法都是基于管理員在中心服務(wù)器上配置用戶的權(quán)限,并通過身份驗(yàn)證來確定用戶的身份和訪問權(quán)限。然而,這種方法仍存在例如單點(diǎn)故障、中心服務(wù)器的性能瓶頸和潛在的安全風(fēng)險(xiǎn)。
基于區(qū)塊鏈的訪問控制方法是近年來的新興研究方向,它利用區(qū)塊鏈技術(shù)來構(gòu)建分布式的訪問控制方法。例如針對(duì)傳統(tǒng)的訪問控制模型中存在的問題,文獻(xiàn)[10]提出了一種名為fabric-iot的物聯(lián)網(wǎng)訪問控制方法,通過三種智能合約分別對(duì)傳統(tǒng)的基于屬性的訪問控制提供去中心化、細(xì)粒度、動(dòng)態(tài)的訪問控制管理。文獻(xiàn)[17]設(shè)計(jì)了一種基于區(qū)塊鏈的去中心化ABAC解決方案(Blockchain-Based ABAC,BB-ABAC),以智能合約的形式自動(dòng)執(zhí)行授權(quán)邏輯,實(shí)現(xiàn)權(quán)限的可追溯、可信管理。文獻(xiàn)[19]提出了一種基于區(qū)塊鏈的多權(quán)限訪問控制方案(Blockchain-based Multi-authority Access Control,BMAC),用于安全地共享數(shù)據(jù),引入Shamir秘密共享方案和許可區(qū)塊鏈(Hyperledger Fabric),實(shí)現(xiàn)每個(gè)屬性由多個(gè)權(quán)限共同管理,避免單點(diǎn)故障。另外,為了解決鏈上存儲(chǔ)屬性時(shí)的隱私問題,文獻(xiàn)[12]提出了一種結(jié)合區(qū)塊鏈技術(shù)和ABAC模型的策略和屬性隱藏訪問控制方案,所提出的方案有助于實(shí)現(xiàn)可審計(jì)和隱私保護(hù)的訪問控制機(jī)制。上述工作雖然結(jié)合了區(qū)塊鏈解決了單點(diǎn)故障問題,但大多數(shù)中的訪問控制一系列機(jī)制,包括工作[12]中的屬性隱藏方法都過度依賴于區(qū)塊鏈執(zhí)行,沒有考慮鏈上的計(jì)算開銷。此外,這些工作都沒有針對(duì)特殊的敏感分級(jí)訪問控制場(chǎng)景進(jìn)行適配。
2.1.1 基于屬性的訪問控制(ABAC)
基于屬性的訪問控制是一種訪問控制模型,它使用實(shí)體的屬性來進(jìn)行訪問控制決策。在ABAC中,訪問策略是根據(jù)實(shí)體的屬性、資源的屬性和環(huán)境條件來定義的。實(shí)體的屬性可以包括用戶的角色、組織、位置、工作職責(zé)等,資源的屬性可以包括數(shù)據(jù)類型、敏感級(jí)別、所有者等。通過定義屬性之間的關(guān)系和訪問規(guī)則,ABAC模型可以實(shí)現(xiàn)對(duì)數(shù)據(jù)訪問的精細(xì)控制[9]。基于屬性的加密是ABAC模型的一種具體實(shí)現(xiàn)方式,它使用了加密算法來保護(hù)數(shù)據(jù)的安全[8]。
2.1.2 強(qiáng)制訪問控制(MAC)
強(qiáng)制訪問控制是一種訪問控制模型,它根據(jù)預(yù)定義的訪問規(guī)則對(duì)數(shù)據(jù)的訪問進(jìn)行嚴(yán)格控制。在MAC模型中,每個(gè)數(shù)據(jù)對(duì)象都有一個(gè)安全級(jí)別或標(biāo)簽,并且用戶也有一個(gè)相應(yīng)的安全級(jí)別。訪問控制規(guī)則指定了哪些用戶可以訪問哪些安全級(jí)別的數(shù)據(jù)。只有在滿足訪問規(guī)則的情況下,用戶才能訪問數(shù)據(jù)[13]。MAC模型適用于特殊場(chǎng)景下對(duì)數(shù)據(jù)訪問具有嚴(yán)格控制需求的情況,例如政府機(jī)構(gòu)、軍事機(jī)密等。通過定義嚴(yán)格的訪問規(guī)則和安全級(jí)別,MAC模型可以防止未經(jīng)授權(quán)的用戶越級(jí)訪問敏感數(shù)據(jù)。
Paillier同態(tài)加密算法是一種公鑰加密方案,具有同態(tài)加密的特性,由密碼學(xué)家Pascal Paillier提出[18]。Paillier同態(tài)加密算法可以實(shí)現(xiàn)加法同態(tài)性。加法同態(tài)性允許在密文空間中對(duì)兩個(gè)密文進(jìn)行乘法操作,得到的結(jié)果解密后與兩個(gè)明文的加法結(jié)果相等。這種同態(tài)性質(zhì)使得Paillier算法在安全的情況下可以進(jìn)行加法運(yùn)算,而無需對(duì)明文進(jìn)行解密。這對(duì)于保護(hù)隱私非常有利,因?yàn)樗试S在加密狀態(tài)下對(duì)數(shù)據(jù)進(jìn)行計(jì)算,而不暴露明文信息。
區(qū)塊鏈?zhǔn)且环N去中心化的分布式賬本技術(shù),使用密碼學(xué)方法確保數(shù)據(jù)的安全性和完整性。區(qū)塊鏈由一個(gè)個(gè)區(qū)塊組成,每個(gè)區(qū)塊包含一些交易記錄,并通過哈希函數(shù)與前一個(gè)區(qū)塊鏈接成不可篡改的鏈?zhǔn)浇Y(jié)構(gòu)[16]。區(qū)塊鏈的主要特點(diǎn)包括:
(1)去中心化:區(qū)塊鏈網(wǎng)絡(luò)由多個(gè)節(jié)點(diǎn)組成,沒有中心化的控制機(jī)構(gòu),數(shù)據(jù)由網(wǎng)絡(luò)中的節(jié)點(diǎn)共同維護(hù)和驗(yàn)證。
(2)防篡改:區(qū)塊鏈?zhǔn)褂霉:瘮?shù)和加密算法確保數(shù)據(jù)的完整性和安全性,一旦數(shù)據(jù)被寫入?yún)^(qū)塊鏈,就很難修改或篡改。
(3)透明性:區(qū)塊鏈中的交易和數(shù)據(jù)是公開的,任何人都可以查看和驗(yàn)證區(qū)塊鏈上的數(shù)據(jù)。
(4)智能合約:智能合約是在區(qū)塊鏈上執(zhí)行的自動(dòng)化合約,它們根據(jù)預(yù)先定義的規(guī)則和條件執(zhí)行特定的操作。
區(qū)塊鏈技術(shù)為訪問控制方法提供了可信的基礎(chǔ)設(shè)施。通過將訪問控制規(guī)則和訪問日志記錄存儲(chǔ)在區(qū)塊鏈上,可以實(shí)現(xiàn)去中心化、不可篡改的訪問控制策略,并提供透明性和監(jiān)管能力。
訪問控制部分?jǐn)M將傳統(tǒng)的基于屬性的訪問控制(ABAC)與和強(qiáng)制訪問控制(MAC)結(jié)合,并通過屬性量化和數(shù)據(jù)區(qū)限層級(jí)實(shí)現(xiàn)分層訪問控制,在訪問權(quán)限驗(yàn)證過程中使用同態(tài)加密在不暴露任何屬性信息的情況下完成屬性和訪問層級(jí)的驗(yàn)證,并將加密信息作為日志上鏈以供審計(jì),方法框架如圖1所示。本方法具體流程如下:
圖1 訪問控制方法框架示意圖
(1)屬性評(píng)估上鏈:在信息安全和身份管理領(lǐng)域,屬性授權(quán)機(jī)構(gòu)(Attribute Authority,AA)是負(fù)責(zé)管理和頒發(fā)數(shù)字身份認(rèn)證中的屬性聲明的實(shí)體。在初始階段,AA會(huì)對(duì)預(yù)分配的屬性進(jìn)行敏感估值,出于公開透明的開率將評(píng)估結(jié)果上鏈公開。
(2)屬性分配:AA會(huì)對(duì)所有加入本框架中的用戶實(shí)體分配相關(guān)的屬性認(rèn)證。區(qū)塊鏈CA會(huì)為用戶頒發(fā)包含公私鑰的身份證書。
(3)數(shù)據(jù)注冊(cè):若數(shù)據(jù)擁有者(Data Owner,DO)欲共享自己的數(shù)據(jù),需進(jìn)行數(shù)據(jù)注冊(cè)操作。數(shù)據(jù)注冊(cè)通過調(diào)用訪問控制智能合約實(shí)現(xiàn)。DO需要指定數(shù)據(jù)的訪問策略P,之后通過Paillier同態(tài)加密算法將數(shù)據(jù)信息(數(shù)據(jù)ID,即數(shù)據(jù)的離鏈地址)、策略P的哈希值、訪問區(qū)限加密后發(fā)起交易上傳至區(qū)塊鏈。
(4)數(shù)據(jù)請(qǐng)求:若數(shù)據(jù)用戶(Data User,DU)欲請(qǐng)求DO上傳的數(shù)據(jù)資源,則需要通過Paillier同態(tài)加密算法將請(qǐng)求的數(shù)據(jù)ID、自身屬性和屬性敏感總值加密后發(fā)起交易上傳至區(qū)塊鏈。
(5)驗(yàn)證授權(quán):區(qū)塊鏈通過Raft共識(shí)算法選舉的驗(yàn)證節(jié)點(diǎn)在收到來自DU的數(shù)據(jù)請(qǐng)求加密信息后,利用Paillier算法的加法同態(tài)性在不知道用戶實(shí)際的屬性和敏感值的情況下完成訪問控制權(quán)限的驗(yàn)證,驗(yàn)證過程包括屬性的驗(yàn)證和訪問層級(jí)區(qū)限的驗(yàn)證。
(6)鏈上訪問日志:在訪問控制流程結(jié)束后,驗(yàn)證節(jié)點(diǎn)則通過交易的方式將數(shù)據(jù)ID、數(shù)據(jù)用戶ID、訪問策略密文、請(qǐng)求策略密文上傳至區(qū)塊鏈作為訪問日志以供審計(jì)。
本方法流程包含三個(gè)關(guān)鍵部分:層次化訪問控制,同態(tài)加密訪問權(quán)限驗(yàn)證和日志審計(jì)。
3.2.1 層次化訪問控制
在初始階段,首先屬性機(jī)構(gòu)AA對(duì)方法中的每個(gè)預(yù)分配屬性進(jìn)行敏感性評(píng)估賦值(下文簡(jiǎn)稱為屬性值),屬性值評(píng)估完成后將屬性值公開上鏈,屬性分為資源屬性和環(huán)境屬性,如表1所示。值得注意的是,此處只是把屬性對(duì)應(yīng)的值公開,出于安全和隱私的考慮而不是對(duì)每個(gè)實(shí)體擁有的屬性進(jìn)行公開。屬性值評(píng)估完成后對(duì)所有用戶實(shí)體進(jìn)行常規(guī)屬性分配,頒發(fā)來自AA屬性簽名證明。
表1 屬性評(píng)估值鏈上公開示例
每個(gè)實(shí)體(包括DU和DO)的屬性敏感總值VUID是指實(shí)體所擁有的資源屬性值VR與環(huán)境屬性值VE的和,其中UID為實(shí)體的ID,k、b為相關(guān)系數(shù):
VUID=kVR+bVE
(1)
在本方法中,為了減輕區(qū)塊鏈數(shù)據(jù)存儲(chǔ)的負(fù)擔(dān),數(shù)據(jù)在注冊(cè)時(shí)數(shù)據(jù)本身不上鏈,而是通過sha256哈希函數(shù)對(duì)數(shù)據(jù)進(jìn)行哈希計(jì)算后將結(jié)果作為數(shù)據(jù)的ID(下文為DID)上鏈,作為數(shù)據(jù)的離鏈地址。而數(shù)據(jù)本身的存儲(chǔ)可以有多種方式,如使用星際文件系統(tǒng)。數(shù)據(jù)的存儲(chǔ)方式不在本方法的討論范圍內(nèi)。
每個(gè)待訪問的數(shù)據(jù)對(duì)象D都包含一個(gè)訪問控制策略樹τ,在訪問策略樹τ中,其中2 of 3為需要滿足其3個(gè)孩子節(jié)點(diǎn)中的2個(gè)屬性,如圖2所示。該策略樹由DO在數(shù)據(jù)注冊(cè)階段進(jìn)行指定,指定的內(nèi)容包括數(shù)據(jù)訪問所需的屬性和訪問層級(jí)區(qū)限R。這里的R是一個(gè)取值范圍,數(shù)據(jù)擁有者DO可以利用R對(duì)數(shù)據(jù)的訪問進(jìn)行敏感分層,即一個(gè)數(shù)據(jù)可以包含多個(gè)不同的R以作為層次化訪問控制驗(yàn)證的依據(jù)。
圖2 訪問控制策略樹τ示意圖
對(duì)于訪問權(quán)限的判定,3.2.2小節(jié)將以上述訪問策略樹τ為依據(jù),基于同態(tài)加密在密態(tài)的情況下判定,根據(jù)判定結(jié)果并結(jié)合以下規(guī)則判定用戶訪問權(quán)限:
數(shù)據(jù)用戶DU應(yīng)滿足其VUID∈R,在層級(jí)區(qū)限R外則進(jìn)行相關(guān)訪問限制。具體地,類似強(qiáng)制訪問控制MAC中的BLP方法,當(dāng)主體(DO)敏感等級(jí)不小于客體(數(shù)據(jù))敏感等級(jí)時(shí),主體可以對(duì)客體進(jìn)行讀取訪問;當(dāng)主體敏感等級(jí)不大于客體敏感等級(jí)時(shí),主體可以對(duì)客體進(jìn)行寫訪問。
3.2.2 同態(tài)加密訪問權(quán)限驗(yàn)證
在數(shù)據(jù)注冊(cè)階段,DO指定完數(shù)據(jù)訪問所需的屬性和訪問層級(jí)區(qū)限R之后,通過Paillier同態(tài)加密算法將數(shù)據(jù)DID、策略P的哈希值、訪問區(qū)限加密后發(fā)起交易Tx上傳至區(qū)塊鏈,SIGDO為DO的簽名:
Tx={DID,ACt(DID,H(P),R),SIGDO}
(2)
此處的ACt加密函數(shù)使用了Paillier同態(tài)加密算法,該算法所涉及的具體流程如下:
(1)密鑰生成
①密鑰生成算法由區(qū)塊鏈節(jié)點(diǎn)執(zhí)行,選擇的兩個(gè)大素?cái)?shù)p和q的選擇要滿足gcd(pq,(p-1)(q-1))=1,且n=pq。
(2)生成訪問策略密文ACt(DID,H(P),R)
①訪問策略密文生成算法由DO執(zhí)行,數(shù)據(jù)DID,訪問策略P的哈希值H(P),訪問層級(jí)區(qū)限R作為輸入,此處的R可以是層級(jí)上限或者下限,以下步驟針對(duì)H(P)和R分別執(zhí)行一次,以H(P)為例。
④選擇隨機(jī)數(shù)r2,滿足0 在執(zhí)行完ACt函數(shù)之后,DO下一步將加密結(jié)果EPKi(I1)、EPKi(n-K1)和整數(shù)I1通過交易的方式上鏈,以供后續(xù)的訪問控制權(quán)限驗(yàn)證。 在數(shù)據(jù)請(qǐng)求階段,數(shù)據(jù)用戶DU欲請(qǐng)求DO上傳的數(shù)據(jù)資源,則需要通過Paillier同態(tài)加密算法將請(qǐng)求的數(shù)據(jù)ID、自身屬性和屬性敏感總值加密后發(fā)起交易上傳至區(qū)塊鏈,同時(shí)調(diào)用智能合約中的數(shù)據(jù)請(qǐng)求函數(shù),此處SIGDU指DU的簽名: Tx={DID,RCt(DID,H(A),VUID),SIGDU} (3) 此處的RCt加密函數(shù)具體流程如下所示: (3)生成請(qǐng)求策略密文RCt(DID,H(A),VUID) ①請(qǐng)求策略密文生成算法由DU執(zhí)行,數(shù)據(jù)DID,用戶屬性的哈希值H(A),DU屬性敏感總值VUID作為輸入,以下兩個(gè)步驟針對(duì)H(A)和VUID分別執(zhí)行一次,以H(A)為例。 ③獲取鏈上請(qǐng)求數(shù)據(jù)的訪問策略密文EPKi(I1)和EPKi(n-K1),利用上述參數(shù)生成結(jié)果E,計(jì)算: E=EPKi(I1)K2EPKi(n-K1)I2 (4) 根據(jù)加法同態(tài)性,可得: E=EPKi(I1K2+nK2-I2K1) (5) 在執(zhí)行完RCt函數(shù)之后,DU下一步將計(jì)算結(jié)果E并與整數(shù)K2一起返回給數(shù)據(jù)請(qǐng)求函數(shù)做進(jìn)一步驗(yàn)證。 (4)結(jié)果驗(yàn)證算法Verify(E,SKi) 該算法由區(qū)塊鏈驗(yàn)證節(jié)點(diǎn)執(zhí)行,將來自DU的請(qǐng)求結(jié)果E,同態(tài)加密私鑰SKi作為輸入進(jìn)行驗(yàn)證。該算法將在不知道層級(jí)區(qū)限R和用戶敏感總值VUID的前提下對(duì)DU的訪問權(quán)限進(jìn)行雙重驗(yàn)證。利用SKi,計(jì)算: DSKi(E)=(I1K2+nK2-I2K1)modn (6) 化簡(jiǎn)得: DSKi(E)=(I1K2-I2K1)modn (7) 此時(shí),對(duì)于解密結(jié)果DSKi(E)考慮以下情況:若是屬性策略的驗(yàn)證,需嚴(yán)格要求DSKi(E)為0,即數(shù)據(jù)訪問策略的屬性和用戶訪問的屬性完全相同,則驗(yàn)證通過。若是層級(jí)區(qū)限R的驗(yàn)證,首先需要針對(duì)解密結(jié)果DSKi(E)做進(jìn)一步處理:若DSKi(E)>I1K2,則需令D=DSKi(E)-n,否則D=DSKi(E)。接下來需驗(yàn)證D和0的大小關(guān)系,若D>0,則表示R>VUID;若D<0,則R 3.2.3 訪問審計(jì) 在結(jié)果驗(yàn)證算法Verify對(duì)用戶的訪問權(quán)限驗(yàn)證通過后,出于后續(xù)審計(jì)的考慮,驗(yàn)證節(jié)點(diǎn)將通過交易的方式將上述算法中的數(shù)據(jù)ID、數(shù)據(jù)用戶ID、訪問策略密文、請(qǐng)求策略密文上傳至區(qū)塊鏈作為訪問日志以供審計(jì),如圖1中的日志交易所示。 審計(jì)方僅需從鏈上獲取ACt函數(shù)和RCt函數(shù)的結(jié)果,并通過3.2.2小節(jié)中結(jié)果驗(yàn)證算法檢查是否可以正確驗(yàn)證通過。 本文使用Hyperledger Fabric v2.5.0平臺(tái)構(gòu)建聯(lián)盟區(qū)塊鏈并測(cè)試相關(guān)功能的智能合約。 本實(shí)驗(yàn)使用Go語言1.20.2版本編寫鏈碼與Fabric聯(lián)盟區(qū)塊鏈進(jìn)行交互,實(shí)現(xiàn)訪問控制功能。鏈碼安裝在所有Peer節(jié)點(diǎn)上。對(duì)于屬性相關(guān)信息管理,本文使用Fabric CA為區(qū)塊鏈系統(tǒng)中的所有實(shí)體生成X.509證書。具體地,本文用 Shell 語言開發(fā)腳本,利用 Fabric CA 為加入?yún)^(qū)塊鏈系統(tǒng)的用戶生成包含密鑰的證書。 此外,本文的實(shí)驗(yàn)都在Windows電腦中的VirtualBox虛擬機(jī)上進(jìn)行的,電腦硬件的基本情況如下:CPU:Intel i7-8565U 1.80 GHz,內(nèi)存16 GB,GPU:NVIDIA GeForce MX250。 本部分將通過隨機(jī)模擬實(shí)驗(yàn)分析本方案中屬性訪問層級(jí)對(duì)訪問安全的有效性。實(shí)驗(yàn)定義的屬性列表(如職業(yè)、年齡、地址等信息),同時(shí)為每個(gè)屬性附上相應(yīng)的敏感值,例如,教師敏感值為0.1,若年齡在20和30之間則敏感值為0.2,其中定義的敏感值范圍在0和1之間。待訪問的數(shù)據(jù)一共有5份,表2中的5個(gè)示例數(shù)據(jù)是所有數(shù)據(jù)請(qǐng)求用戶訪問的數(shù)據(jù)對(duì)象。 表2 待訪問數(shù)據(jù)及訪問需求 通過隨機(jī)模擬實(shí)驗(yàn)探討如下場(chǎng)景:場(chǎng)景中每個(gè)用戶實(shí)體具有多個(gè)屬性,并根據(jù)這些屬性計(jì)算出屬性敏感值(Value)的總量。上述5個(gè)待訪問的數(shù)據(jù)除了需要滿足自身所需的屬性外,還需要根據(jù)屬性計(jì)算和評(píng)估訪問所需的敏感區(qū)限。 為了模擬該場(chǎng)景,編寫了一段Python腳本。該腳本定義了屬性集合(包括屬性敏感值),生成了大量的用戶實(shí)體。每個(gè)用戶實(shí)體包含隨機(jī)定義的屬性以及根據(jù)這些屬性計(jì)算出的屬性敏感值總量。判斷用戶是否具有訪問權(quán)限的依據(jù)如下:用戶的屬性必須滿足數(shù)據(jù)需求的屬性,與此同時(shí)用戶的屬性敏感值必須在數(shù)據(jù)的敏感區(qū)限范圍內(nèi)。 通過進(jìn)行10 000次隨機(jī)模擬實(shí)驗(yàn),統(tǒng)計(jì)了上述5個(gè)數(shù)據(jù)的用戶數(shù)量,這些用戶滿足了其訪問需求,并計(jì)算了滿足用戶占總用戶數(shù)的比重。實(shí)驗(yàn)結(jié)果如圖3所示。 圖3 滿足訪問條件的用戶占比 其中將“僅滿足屬性訪問需求”和“同時(shí)滿足區(qū)限(既滿足屬性又滿足訪問區(qū)限的要求)”的用戶數(shù)量繼續(xù)比較,可以確定哪些用戶滿足數(shù)據(jù)訪問的屬性需求。根據(jù)實(shí)驗(yàn)結(jié)果,可以觀察到:對(duì)于每個(gè)數(shù)據(jù)對(duì)象,有大部分用戶滿足其屬性訪問需求,且僅滿足屬性訪問需求的用戶數(shù)量占總用戶數(shù)的比重較高(約20%左右);在滿足屬性訪問需求的用戶中,也有一部分用戶同時(shí)滿足了數(shù)據(jù)對(duì)象的屬性敏感值要求,滿足全部訪問需求的用戶數(shù)量占總用戶數(shù)的比重在4%至18%。 這表明,通過計(jì)算用戶屬性敏感值總量并與數(shù)據(jù)對(duì)象的屬性敏感值區(qū)限層級(jí)進(jìn)行比較,可以進(jìn)一步篩選出滿足屬性敏感值要求的用戶。從而有效地制止了用戶“越級(jí)”訪問數(shù)據(jù)主體的情況,表明該方法可以從敏感訪問層級(jí)的角度來保護(hù)敏感數(shù)據(jù)的安全。 4.3.1 功能性對(duì)比 本部分將對(duì)方案功能性進(jìn)行對(duì)比,對(duì)比內(nèi)容具體為去中心化、層次化、隱私保護(hù)和訪問控制基本功能四個(gè)方面,如表3所示。 表3 方案功能性對(duì)比 其中,文獻(xiàn)[7]中的方案雖然考慮到了訪問控制層次化的問題,但存在單點(diǎn)故障和隱私保護(hù)問題;文獻(xiàn)[10]的方案盡管具備一定程度的去中心化和訪問控制能力,但在訪問控制層次化和隱私保護(hù)方面存在限制;文獻(xiàn)[12]的方案在去中心化、隱私保護(hù)和訪問控制三個(gè)方面均具備基本功能,然而并沒有考慮到層次化的訪問控制方法。而相比之下,本方案在包括去中心化、層次化、隱私保護(hù)和訪問控制方面均實(shí)現(xiàn)了基本功能。 4.3.2 屬性上鏈性能消耗 本部分將分析屬性個(gè)數(shù)對(duì)上鏈性能開銷的影響。實(shí)驗(yàn)定義了屬性資產(chǎn)的結(jié)構(gòu)體,包括屬性的類別、內(nèi)容和量化值,該量化值由屬性機(jī)構(gòu)得出評(píng)估值后上鏈。調(diào)用鏈碼中的CreateAsset函數(shù),其用于在區(qū)塊鏈?zhǔn)澜鐮顟B(tài)中創(chuàng)建新的屬性資產(chǎn)以及屬性上鏈的功能。該函數(shù)接收屬性資產(chǎn)的詳細(xì)信息作為參數(shù),并進(jìn)行一些資產(chǎn)創(chuàng)建權(quán)限的檢查和屬性數(shù)據(jù)處理,每次調(diào)用僅能針對(duì)一個(gè)屬性進(jìn)行操作。本實(shí)驗(yàn)中通過編寫Shell腳本來測(cè)試若干屬性創(chuàng)建并上鏈的平均延時(shí)數(shù)據(jù),實(shí)驗(yàn)結(jié)果如圖4所示。 圖4 屬性上鏈性能消耗(ms) 從實(shí)驗(yàn)結(jié)果可以看到,最終每個(gè)屬性上鏈的延時(shí)趨向于105 ms,隨著屬性數(shù)量的增多,對(duì)能造成的影響卻非常小,可見該方法可對(duì)大量屬性的創(chuàng)建及上鏈提供支持。 4.3.3 訪問權(quán)限驗(yàn)證開銷對(duì)比 本部分實(shí)驗(yàn)旨在評(píng)估訪問控制方法驗(yàn)證的時(shí)延表現(xiàn)。由于方案的加密部分由各個(gè)鏈下實(shí)體執(zhí)行,因此本小節(jié)實(shí)驗(yàn)部分主要針對(duì)驗(yàn)證節(jié)點(diǎn)的驗(yàn)證算法的開銷進(jìn)行測(cè)試。實(shí)驗(yàn)使用Python代碼復(fù)現(xiàn)了部分工作的訪問控制驗(yàn)證的部分,通過對(duì)比不同工作的10 000次訪問控制驗(yàn)證的執(zhí)行次數(shù)從而得出總時(shí)間(ms),結(jié)果如圖5所示。 圖5 屬性驗(yàn)證開銷對(duì)比(ms) 根據(jù)實(shí)驗(yàn)結(jié)果,在相同的執(zhí)行次數(shù)下,工作一[7]和工作二[12]的訪問控制驗(yàn)證部分的時(shí)延分別為12.96 ms和110.69 ms,本工作的訪問控制驗(yàn)證時(shí)總時(shí)間為87.72 ms。 相比之下,由于工作一的方案中未包含隱私保護(hù)的內(nèi)容,因此效率相對(duì)較高,但是也犧牲了隱私安全性,在軍事應(yīng)用場(chǎng)景中,隱私保護(hù)是至關(guān)重要的考慮因素,特別是對(duì)于處理敏感信息的場(chǎng)景。工作二中使用了分布式雙陷門公鑰密碼體制(Distributed 2 Trapdoors Public Key Cryptosystem,DT-PKC)[20]對(duì)訪問控制策略進(jìn)行了隱私保護(hù),但是這種方法在驗(yàn)證部分需要進(jìn)行分布式加密和匯總解密,性能消耗較高,相比之下本文中的驗(yàn)證算法具有較高的效率,能夠更快速地進(jìn)行訪問控制的屬性和層級(jí)驗(yàn)證。 本文基于區(qū)塊鏈技術(shù)提出了一種基于屬性的訪問控制(ABAC)和強(qiáng)制訪問控制(MAC)相結(jié)合的層次化訪問控制方法,用于數(shù)據(jù)交換場(chǎng)景。通過利用區(qū)塊鏈評(píng)估屬性值和敏感層級(jí),并公開評(píng)估結(jié)果,實(shí)現(xiàn)了更細(xì)粒度更安全的數(shù)據(jù)分層訪問控制策略。實(shí)驗(yàn)結(jié)果表明,所提出的方法有效地解決了用戶越級(jí)訪問數(shù)據(jù)主體的安全問題,并在關(guān)鍵功能上符合預(yù)期的運(yùn)行效率。在未來的工作中,將進(jìn)一步探索更安全更高效率的基于區(qū)塊鏈的訪問控制方法。4 實(shí)驗(yàn)評(píng)估
4.1 實(shí)驗(yàn)設(shè)置
4.2 有效性評(píng)估
4.3 實(shí)驗(yàn)評(píng)估和對(duì)比
5 結(jié)論
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2023年9期