羅金喜,王 珺
(南京郵電大學(xué)通信與信息工程學(xué)院,江蘇 南京 210003)
邊緣計(jì)算作為5G 時(shí)代的核心技術(shù)之一,通過(guò)將終端設(shè)備的數(shù)據(jù)放入邊緣服務(wù)器以進(jìn)行存儲(chǔ)或計(jì)算,可以解決終端存儲(chǔ)容量有限、計(jì)算能力不足的問(wèn)題。邊緣計(jì)算系統(tǒng)中的邊緣服務(wù)器節(jié)點(diǎn)是眾多終端的匯聚點(diǎn),這些終端包括智能移動(dòng)終端、傳感器、攝像頭等物聯(lián)網(wǎng)設(shè)備。若將終端收集、產(chǎn)生或存儲(chǔ)的一些數(shù)據(jù)共享,那么數(shù)據(jù)資源將得到最大化利用。
然而邊緣網(wǎng)絡(luò)中不同個(gè)體或機(jī)構(gòu)間缺乏合作的保障和信任關(guān)系,難以形成安全可靠的數(shù)據(jù)共享局面,因此急需一個(gè)適用于邊緣網(wǎng)絡(luò)的訪問(wèn)控制機(jī)制。傳統(tǒng)的訪問(wèn)控制策略包括基于角色的訪問(wèn)控制(Role-Based Access Control,RBAC)、基于屬性的訪問(wèn)控制(Attribute Based Access Control,ABAC)和基于風(fēng)險(xiǎn)的訪問(wèn)控制(Risk Based Access Control,Risk-BAC)。上述訪問(wèn)控制方案均通過(guò)一個(gè)權(quán)威的中心機(jī)構(gòu)來(lái)驗(yàn)證訪問(wèn)權(quán),因此面臨著中心化所帶來(lái)的問(wèn)題,即可能發(fā)生單點(diǎn)故障。而且訪問(wèn)控制有三個(gè)重要的安全要素:認(rèn)證、授權(quán)和審計(jì),如果由一個(gè)中心服務(wù)器來(lái)提供訪問(wèn)控制,那么惡意的中心服務(wù)器可能會(huì)認(rèn)證、授權(quán)不具有相關(guān)權(quán)限的用戶,從而導(dǎo)致數(shù)據(jù)泄露問(wèn)題。審計(jì)負(fù)責(zé)記錄系統(tǒng)中所有已發(fā)生的訪問(wèn)控制事件,如果中心服務(wù)器擁有對(duì)審計(jì)的完全控制權(quán),則很難防范惡意的服務(wù)器篡改審計(jì)數(shù)據(jù)。
為了解決上述問(wèn)題,本文利用區(qū)塊鏈上的智能合約來(lái)管理訪問(wèn)權(quán)限和審計(jì)數(shù)據(jù),依賴于區(qū)塊鏈的去中心化和不可篡改特性解決單點(diǎn)故障和節(jié)點(diǎn)信任問(wèn)題。為了保證數(shù)據(jù)的隱私性,上傳到第三方服務(wù)器上的共享數(shù)據(jù)采用AES-128 算法加密,而解密密鑰則通過(guò)SGX(Software Guard Extensions)技術(shù)構(gòu)建安全程序進(jìn)行共享。
如圖1 所示,本文所考慮的邊緣計(jì)算系統(tǒng)由云服務(wù)器、邊緣服務(wù)器和眾多終端組成。由于本文方案的底層區(qū)塊鏈網(wǎng)路為以太坊,而以太坊是一種公有區(qū)塊鏈,任何節(jié)點(diǎn)可以隨時(shí)加入和退出網(wǎng)絡(luò),因此邊緣計(jì)算系統(tǒng)中的任意設(shè)備均可成為區(qū)塊鏈節(jié)點(diǎn)。本文根據(jù)上述各元素在訪問(wèn)控制中的作用,將其分為以下角色:數(shù)據(jù)所有者、第三方服務(wù)器、區(qū)塊鏈網(wǎng)絡(luò)和數(shù)據(jù)請(qǐng)求者。
圖1 邊緣計(jì)算系統(tǒng)架構(gòu)
共享數(shù)據(jù)的擁有者,可以是網(wǎng)絡(luò)中的任意節(jié)點(diǎn)。
主要由邊緣服務(wù)器和云服務(wù)器組成,為數(shù)據(jù)共享提供存儲(chǔ)和計(jì)算資源,本方案的存儲(chǔ)模式也是分布式的,數(shù)據(jù)所有者可以自由選擇系統(tǒng)中注冊(cè)的服務(wù)器作為存儲(chǔ)數(shù)據(jù)的第三方服務(wù)器。
包含交易和智能合約的區(qū)塊鏈,由邊緣網(wǎng)絡(luò)中所有設(shè)備共同維護(hù),任意節(jié)點(diǎn)可根據(jù)業(yè)務(wù)需要靈活地加入。
是共享數(shù)據(jù)的請(qǐng)求者。
本文采用了文獻(xiàn)[6]中定義的訪問(wèn)控制列表模型來(lái)實(shí)現(xiàn)權(quán)限管理。訪問(wèn)控制列表(Access Control List,ACL)模型是一種以對(duì)象為中心的方法,為每個(gè)對(duì)象O定義了一個(gè)列表L,即O 的訪問(wèn)控制權(quán),這個(gè)列表列舉了所有擁有O 的訪問(wèn)權(quán)限的主體,這個(gè)列表還指定了授予主體的訪問(wèn)權(quán)限(例如,讀和寫)。為了將ACL 映射到我們的方案,對(duì)于每個(gè)對(duì)象O,也就是存儲(chǔ)在第三方服務(wù)器上的數(shù)據(jù),本文定義了如表1所示的列表,記錄主體(數(shù)據(jù)請(qǐng)求者)所擁有的權(quán)限的相關(guān)信息。這個(gè)列表存儲(chǔ)在區(qū)塊鏈中。
表1 訪問(wèn)控制列表
本文基于區(qū)塊鏈技術(shù)設(shè)計(jì)了一種適用于邊緣計(jì)算系統(tǒng)的訪問(wèn)控制框架。該框架通過(guò)訪問(wèn)控制列表ACL 模型實(shí)現(xiàn)訪問(wèn)控制,而此模型的權(quán)限列表則由區(qū)塊鏈上的智能合約管理,因此可以解決傳統(tǒng)訪問(wèn)控制中的集中化問(wèn)題。
區(qū)塊鏈上資源寶貴,因此共享數(shù)據(jù)需存儲(chǔ)到第三方服務(wù)器,為了防止第三方服務(wù)器泄漏數(shù)據(jù),本方案將數(shù)據(jù)的共享分割為兩部分,即加密數(shù)據(jù)和解密密鑰的共享方式并不相同。第三方服務(wù)器通過(guò)執(zhí)行以太坊合約驗(yàn)證請(qǐng)求者訪問(wèn)權(quán)限,根據(jù)返回結(jié)果決定加密數(shù)據(jù)的共享,而解密密鑰則通過(guò)SGX技術(shù)進(jìn)行管理。
本文提出的智能合約框架包含三種合約,ACC 合約、ACP合約和AUD合約。
2.1.1 ACC合約
對(duì)于數(shù)據(jù)所有者而言,該合約是ACP 合約的生產(chǎn)工廠,即ACP 合約只能通過(guò)調(diào)用ACC 合約提供的createACP 函數(shù)進(jìn)行部署。而數(shù)據(jù)請(qǐng)求者則可以通過(guò)數(shù)據(jù)對(duì)象的唯一id 索引所需的相關(guān)信息,包括ACP 合約地址、原始數(shù)據(jù)hash摘要(數(shù)據(jù)請(qǐng)求者用于驗(yàn)證解密后數(shù)據(jù)的正確性)、密鑰分發(fā)節(jié)點(diǎn)、第三方服務(wù)器等。該合約主要包含以下幾個(gè)函數(shù)。
●createACP:該函數(shù)接受數(shù)據(jù)對(duì)象的相關(guān)參數(shù),并在區(qū)塊鏈上部署一個(gè)ACP 合約,同時(shí)把相應(yīng)的信息存入此合約維護(hù)的列表中。
●retrieveObject:該函數(shù)接受數(shù)據(jù)對(duì)象ID,返回獲取數(shù)據(jù)所需的相關(guān)信息。
2.1.2 ACP合約
該合約用于管理數(shù)據(jù)對(duì)象的訪問(wèn)權(quán)限。每個(gè)ACP 合約中都維護(hù)著一個(gè)列表,結(jié)構(gòu)如表1 所示。該列表記錄了其他終端用戶的訪問(wèn)權(quán)限,其中許可字段存儲(chǔ)的是數(shù)字簽名(用于在Enclave程序中驗(yàn)證請(qǐng)求者對(duì)對(duì)稱密鑰的獲取權(quán)限),第三方服務(wù)器通過(guò)判斷返回的許可是否為零來(lái)決定用戶的訪問(wèn)權(quán)。
ACP 合約所有者可以對(duì)訪問(wèn)控制列表的內(nèi)容進(jìn)行增刪改查的操作;第三方服務(wù)器可以通過(guò)交易發(fā)起驗(yàn)證用戶權(quán)限的請(qǐng)求,相應(yīng)的訪問(wèn)日志會(huì)被記錄在AUD 合約中。合約所有者地址、第三方服務(wù)器地址等屬性由合約的構(gòu)造函數(shù)進(jìn)行初始化。ACP 主要提供了以下函數(shù)來(lái)管理訪問(wèn)控制。
●addRight:該函數(shù)接收新的訪問(wèn)控制策略信息,并將此項(xiàng)控制策略添加到訪問(wèn)控制列表中。
●updateRight:該函數(shù)接收需要更新的策略信息,并更新訪問(wèn)控制列表中的策略。
●validateRight:該函數(shù)接收訪問(wèn)控制所需的信息,返回訪問(wèn)結(jié)果,同時(shí)調(diào)用AUD 合約中的setLog 函數(shù),將此次訪問(wèn)信息存儲(chǔ)到日志中。
2.1.3 AUD合約
該合約由ACP 合約的構(gòu)造函數(shù)部署到區(qū)塊鏈上。AUD 合約維護(hù)一個(gè)審計(jì)所需信息的列表,此列表是為了將數(shù)據(jù)使用情況存儲(chǔ)到區(qū)塊鏈上進(jìn)行審計(jì)。該合約包含以下幾個(gè)函數(shù)。
●accessLog:該函數(shù)接收數(shù)據(jù)訪問(wèn)者公鑰,并返回該訪問(wèn)者的歷史訪問(wèn)日志。
●setLog:該函數(shù)接收訪問(wèn)日志信息,并將此日志信息的情況存入AUD合約維護(hù)的審計(jì)列表中。
整個(gè)接入控制過(guò)程可分為共享數(shù)據(jù)上傳和共享數(shù)據(jù)下載兩部分。
2.2.1 共享數(shù)據(jù)上傳
首先數(shù)據(jù)所有者通過(guò)交易執(zhí)行區(qū)塊鏈上的ACC合約中的createACP 函數(shù),將共享數(shù)據(jù)注冊(cè),并部署管理該共享數(shù)據(jù)訪問(wèn)控制的ACP 合約,ACP 合約初始化時(shí)也會(huì)部署一個(gè)記錄日志信息的AUD合約,最后將返回ACP合約地址給數(shù)據(jù)所有者。
為了保障數(shù)據(jù)的隱私性,本方案中在將數(shù)據(jù)上傳到第三方服務(wù)器前,首先需要對(duì)其進(jìn)行加密。為了降低加密、解密數(shù)據(jù)所消耗的計(jì)算資源,本文采用對(duì)稱加密技術(shù),即數(shù)據(jù)所有者隨機(jī)選擇一個(gè)128 位的加密密鑰,并使用AES-128 算法對(duì)數(shù)據(jù)進(jìn)行加密。然后,數(shù)據(jù)所有者將加密的數(shù)據(jù)與ACP 合約地址一起發(fā)送給第三方服務(wù)器。發(fā)送ACP 合約的地址是為了讓第三方服務(wù)器調(diào)用并執(zhí)行該合約的validateRight 函數(shù),以驗(yàn)證數(shù)據(jù)請(qǐng)求者的訪問(wèn)權(quán)限。同時(shí)第三方服務(wù)器還要獲得ACP 合約的所有者公鑰,以此驗(yàn)證數(shù)據(jù)所有者的簽名。如果簽名有效,第三方服務(wù)器將把已加密的數(shù)據(jù)存儲(chǔ)到他們的設(shè)備中。
圖2 數(shù)據(jù)上傳流程
數(shù)據(jù)成功上傳到第三方存儲(chǔ)服務(wù)器后,數(shù)據(jù)所有者通過(guò)英特爾認(rèn)證服務(wù)(Intel Authentication Service,IAS)驗(yàn)證密鑰分發(fā)節(jié)點(diǎn)中實(shí)例化的Enclave 的完整性,包括內(nèi)部數(shù)據(jù)和代碼。此外,驗(yàn)證報(bào)告還包含Enclave產(chǎn)生的公鑰,數(shù)據(jù)所有者用該公鑰加密需分發(fā)的對(duì)稱密鑰,從而保證其安全地傳入了Enclave中。為了保證系統(tǒng)的魯棒性,應(yīng)該有多個(gè)密鑰分發(fā)節(jié)點(diǎn),以確保在任何時(shí)間內(nèi)系統(tǒng)都能正常工作。
2.2.2 共享數(shù)據(jù)下載
當(dāng)數(shù)據(jù)請(qǐng)求者需要訪問(wèn)某項(xiàng)數(shù)據(jù)時(shí),為了保證數(shù)據(jù)的安全性,首先調(diào)用ACC 合約中的retrieveObject 函數(shù),根據(jù)數(shù)據(jù)唯一ID 獲得實(shí)現(xiàn)訪問(wèn)所需的相關(guān)信息,如第三方服務(wù)器地址、密鑰分發(fā)節(jié)點(diǎn)和原始數(shù)據(jù)hash摘要。
圖3 數(shù)據(jù)下載流程
數(shù)據(jù)請(qǐng)求者隨后向第三方服務(wù)器發(fā)送一個(gè)請(qǐng)求,該請(qǐng)求包含所需數(shù)據(jù)對(duì)象ID、自身公鑰以及對(duì)訪問(wèn)所需的相關(guān)數(shù)據(jù)的簽名(數(shù)字簽名使用ECDSA)。第三方服務(wù)器可以通過(guò)提供的公鑰驗(yàn)證用戶的身份,如果簽名是有效的,那么將繼續(xù)驗(yàn)證用戶的訪問(wèn)權(quán)限。它向區(qū)塊鏈發(fā)送一個(gè)交易,以執(zhí)行ACP合約validateRight函數(shù)來(lái)驗(yàn)證訪問(wèn)權(quán),如果返回的是非零的數(shù)字簽名,則表明用戶有權(quán)訪問(wèn)數(shù)據(jù),那么就會(huì)向用戶提供加密的數(shù)據(jù)和返回的數(shù)字簽名,此數(shù)字簽名是數(shù)據(jù)所有者對(duì)預(yù)定義消息(根據(jù)消息結(jié)構(gòu)生成)的簽名,該消息結(jié)構(gòu)如表2所示。
表2 預(yù)定義消息結(jié)構(gòu)
為了解密第三方服務(wù)器傳來(lái)的數(shù)據(jù),數(shù)據(jù)請(qǐng)求者向密鑰分發(fā)節(jié)點(diǎn)發(fā)起密鑰請(qǐng)求,該請(qǐng)求包含上述數(shù)字簽名和預(yù)定義的消息。密鑰分發(fā)節(jié)點(diǎn)中的Enclave 程序首先通過(guò)數(shù)字簽名驗(yàn)證消息的完整性,如果有效,且當(dāng)前的系統(tǒng)時(shí)間小于截止時(shí)間,則證明該用戶擁有訪問(wèn)權(quán)。然后根據(jù)中的請(qǐng)求數(shù)據(jù)的索引數(shù)據(jù)所有者存入的解密密鑰,并用數(shù)據(jù)請(qǐng)求者的公鑰PK對(duì)其進(jìn)行加密,將結(jié)果返回?cái)?shù)據(jù)請(qǐng)求者,Enclave 程序的具體流程如圖4 所示。最終數(shù)據(jù)請(qǐng)求者通過(guò)自己的私鑰解密傳回的結(jié)果獲得解密密鑰。
圖4 Enclave程序流程圖
此方案的性能高度依賴于底層區(qū)塊鏈平臺(tái),區(qū)塊鏈系統(tǒng)的hash 算力、網(wǎng)絡(luò)架構(gòu)、智能合約的復(fù)雜性、任務(wù)數(shù)量、區(qū)塊生成率和網(wǎng)絡(luò)帶寬都將極大地影響了此方案的性能。
因此本節(jié)主要對(duì)初始化階段和執(zhí)行階段的額外開(kāi)銷進(jìn)行擴(kuò)展性分析。在初始化階段,所有的額外開(kāi)銷和以下操作有關(guān)系:智能合約被創(chuàng)建/部署到區(qū)塊鏈、對(duì)Enclave 進(jìn)行遠(yuǎn)程認(rèn)證并傳入解密密鑰和用AES-128 算法對(duì)原始數(shù)據(jù)進(jìn)行加密。其中前兩個(gè)操作的時(shí)間花銷與共享數(shù)據(jù)的大小無(wú)關(guān),在一個(gè)固定值附近波動(dòng),而最后一個(gè)操作與共享數(shù)據(jù)的大小有著緊密的關(guān)系,本文在個(gè)人電腦上使用AES-128 算法進(jìn)行了性能測(cè)試,結(jié)果如圖5所示,加密時(shí)間隨著共享數(shù)據(jù)的大小增加而線性增加,滿足擴(kuò)展性要求,而每一份共享的數(shù)據(jù)對(duì)象只需要初始化一次,因此本文提出的方案的初始化開(kāi)銷是可以接受的。
圖5 加/解密開(kāi)銷與文件大小的關(guān)系
在執(zhí)行階段,所有的額外開(kāi)銷由訪問(wèn)權(quán)驗(yàn)證交易、從Enclave中獲取解密密鑰和用對(duì)稱密鑰解密數(shù)據(jù)的時(shí)間組成。其中,交易完成時(shí)間由區(qū)塊鏈的區(qū)塊生成時(shí)間決定,又解密密鑰固定為128位,即正常網(wǎng)絡(luò)情況下密鑰請(qǐng)求時(shí)間基本固定,最終的數(shù)據(jù)解密時(shí)間與文件的大小關(guān)系為圖5 所示的線性關(guān)系,滿足擴(kuò)展性要求。綜上,相對(duì)于現(xiàn)有的集中式數(shù)據(jù)共享平臺(tái),本方案雖然會(huì)有性能上的損失,但總體時(shí)間成本可控,能夠滿足大型數(shù)據(jù)共享的要求。
本文針對(duì)邊緣計(jì)算網(wǎng)絡(luò)中數(shù)據(jù)共享的隱私、信任和單點(diǎn)故障的挑戰(zhàn),提出了一個(gè)基于智能合約的方案,該方案可以為邊緣計(jì)算系統(tǒng)提供一個(gè)去中心化的訪問(wèn)控制機(jī)制。而且根據(jù)上述的性能分析可知,相對(duì)于傳統(tǒng)的數(shù)據(jù)共享系統(tǒng),本文提出的方案雖然在性能上有一定損失,但安全性卻大大增加,能抵抗惡意的服務(wù)提供商攻擊和中間人攻擊。本方案的性能高度依賴于底層區(qū)塊鏈平臺(tái),因此,下一步重點(diǎn)研究的內(nèi)容是探索適合該方案框架的區(qū)塊鏈擴(kuò)容技術(shù),進(jìn)一步提高方案的實(shí)用性。