湛高峰,王曉峰,程 楠
(公安部第一研究所 信息安全部,北京 100048)
電子證照是數(shù)字化時(shí)代社會(huì)信用體系建立的重要一環(huán)[1],電子證照管理系統(tǒng)是實(shí)現(xiàn)安全高效的證照創(chuàng)建、存儲(chǔ)與使用共享的有效方案。傳統(tǒng)的電子證照管理系統(tǒng)通常依賴核心部門(mén)的中心服務(wù)器,這種管理模式只占用少量資源,但在數(shù)據(jù)共享方面限制較大,且易遭受非法攻擊導(dǎo)致中心、邊緣節(jié)點(diǎn)數(shù)據(jù)泄漏。因此,如何實(shí)現(xiàn)電子證照管理的去中心化,實(shí)現(xiàn)證照數(shù)據(jù)共享過(guò)程的隱私保護(hù),是構(gòu)建電子證照管理方案的主要問(wèn)題。
針對(duì)上述問(wèn)題,學(xué)者們面向不同應(yīng)用場(chǎng)景,提出了一些基于區(qū)塊鏈技術(shù)的電子證照管理系統(tǒng)。2017 年閔旭蓉等[2]針對(duì)政務(wù)信息透明需求,提出一種基于區(qū)塊鏈技術(shù)的電子證照管理平臺(tái),通過(guò)區(qū)塊鏈的共同記賬技術(shù)原理實(shí)現(xiàn)數(shù)據(jù)共享,實(shí)現(xiàn)了各部門(mén)政務(wù)信息的互聯(lián)互通。2018 年,巢燕[3]同樣針對(duì)“互聯(lián)網(wǎng)+政務(wù)”場(chǎng)景提出一種基于區(qū)塊鏈技術(shù)的電子證照管理系統(tǒng),使用Hyperledger Fabric 設(shè)計(jì)證照管理區(qū)塊鏈,實(shí)現(xiàn)了各部門(mén)間數(shù)據(jù)共享、海量數(shù)據(jù)存儲(chǔ)。2020 年,王浩亮等[4]針對(duì)傳統(tǒng)智慧誠(chéng)實(shí)系統(tǒng)建設(shè)下的數(shù)據(jù)孤島問(wèn)題提出了一種基于區(qū)塊鏈的去中心化電子證照共享交易系統(tǒng),將電子證照上鏈存儲(chǔ),借助智能合約實(shí)現(xiàn)了電子證照的鏈上交易。2021 年,藺悅霞等[5]針對(duì)水利能源場(chǎng)景,提出一種取水許可電子證照系統(tǒng),系統(tǒng)采用標(biāo)準(zhǔn)中心化架構(gòu),實(shí)現(xiàn)電子證照的集中式管理。
上述研究方案中,區(qū)塊鏈通常作為一個(gè)不可篡改的分布式賬本來(lái)存儲(chǔ)電子證照數(shù)據(jù),由于區(qū)塊鏈的可追溯特性,可以保證電子證照數(shù)據(jù)共享過(guò)程的透明。這些方案相較于傳統(tǒng)的電子證照管理系統(tǒng)在安全性上有明顯提升,但仍忽略了一些實(shí)際通信場(chǎng)景的安全問(wèn)題。由于區(qū)塊鏈交易使轉(zhuǎn)賬人和收款人綁定,敵手可以通過(guò)分析區(qū)塊內(nèi)容獲得有效信息,且智能合約輸入輸出公開(kāi)[6],可能造成隱私數(shù)據(jù)泄漏。為此,一些學(xué)者開(kāi)始關(guān)注分布式存儲(chǔ)系統(tǒng)下的訪問(wèn)控制與隱私保護(hù)問(wèn)題。2018 年,Wang 等[7]提出了一個(gè)基于區(qū)塊鏈的,結(jié)合IPFS、以太坊和屬性基加密技術(shù)的分布式存儲(chǔ)框架,實(shí)現(xiàn)分布式存儲(chǔ)中的數(shù)據(jù)共享;2021 年,Li 等[8]提出一種基于區(qū)塊鏈并帶有隱私保護(hù)的電子證照管理系統(tǒng),采用屬性基加密方式對(duì)電子證照數(shù)據(jù)進(jìn)行加密,實(shí)現(xiàn)安全的電子證照數(shù)據(jù)共享。
受Wang 等[7]工作的啟發(fā),為了確保電子證照數(shù)據(jù)的有效存儲(chǔ)與安全管理,本文基于區(qū)塊鏈智能合約與屬性基加密(Attribute-Based Encryption,ABE)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一種安全有效的電子證照管理系統(tǒng)。智能合約的設(shè)計(jì)思想來(lái)自以太坊[9],實(shí)現(xiàn)電子證照信息的發(fā)布、共享與瀏覽功能,并且使用基于屬性的加密來(lái)確保細(xì)粒度的電子證照數(shù)據(jù)的訪問(wèn)控制。
區(qū)塊鏈最早由NAKAMOTO[10]提出,作為比特幣底層基礎(chǔ)的點(diǎn)對(duì)點(diǎn)分布式網(wǎng)絡(luò)技術(shù),比特幣區(qū)塊鏈?zhǔn)堑谝粋€(gè)出現(xiàn)的公共區(qū)塊鏈網(wǎng)絡(luò)。比特幣區(qū)塊鏈?zhǔn)且粋€(gè)分布式、不斷增長(zhǎng)、共享的區(qū)塊分類賬[11]。2014年,以太坊(Ethereum)[9]作為一個(gè)新的公共區(qū)塊鏈被提出,以太坊基于新的智能合約實(shí)現(xiàn)分布式計(jì)算,以去中心化的特性解決了比特幣區(qū)塊鏈擴(kuò)展性不足問(wèn)題,廣泛應(yīng)用于金融、科學(xué)、政務(wù)、醫(yī)療、教育等領(lǐng)域。
在物聯(lián)網(wǎng)領(lǐng)域,區(qū)塊鏈技術(shù)的引入可以使分布式系統(tǒng)突破對(duì)中心服務(wù)器的依賴,使用區(qū)塊鏈的共識(shí)機(jī)制解決信任問(wèn)題[12]?,F(xiàn)有電子證照的管理同樣屬于分布式存儲(chǔ)問(wèn)題,結(jié)合區(qū)塊鏈技術(shù)可以實(shí)現(xiàn)系統(tǒng)的去中心化,進(jìn)一步提高系統(tǒng)安全性。
智能合約(Smart Contract)最早由Szabo[13]提出,是一種以信息化方式傳播、驗(yàn)證或執(zhí)行合同的計(jì)算機(jī)協(xié)議,允許在沒(méi)有第三方的情況下進(jìn)行可信的交易并且交易具有可追蹤性和不可否認(rèn)性。智能合約并不綁定區(qū)塊鏈技術(shù),其最初的定義是關(guān)于法律的自動(dòng)化合同。近年來(lái),智能合約在區(qū)塊鏈和其他分布式賬本技術(shù)中獲得了更新的含義:是防篡改的計(jì)算更新分類賬狀態(tài)的程序[14]。智能合約針對(duì)不同性質(zhì)的自動(dòng)化任務(wù)來(lái)執(zhí)行任意邏輯。
智能合約是一段代碼和數(shù)據(jù)的集合,可以部署在以太坊網(wǎng)絡(luò)上,通過(guò)以太坊虛擬機(jī)(Ethereum Virtual Machine,EVM)解釋成字節(jié)碼進(jìn)行執(zhí)行。EVM 內(nèi)運(yùn)行的每一步操作實(shí)際上同時(shí)在被所有節(jié)點(diǎn)所執(zhí)行,保證了智能合約在同一時(shí)刻狀態(tài)的一致性。同時(shí)智能合約有自己的賬戶,在時(shí)間或事件的驅(qū)動(dòng)下能自動(dòng)執(zhí)行一些功能,如可以在相互之間傳遞信息,修改區(qū)塊鏈的狀態(tài)(比如賬戶信息)等。
設(shè)G 和GT是素?cái)?shù)p 的兩個(gè)乘法循環(huán)群,g 代表G 的生成元,雙線性映射[15]滿足以下條件:
雙線性:對(duì)任意a,b∈Zp,有;
可計(jì)算性:對(duì)g1,g2∈G,計(jì)算是可行的。
本系統(tǒng)在以太坊的基礎(chǔ)上設(shè)計(jì)開(kāi)發(fā)。以太坊是一個(gè)通用區(qū)塊鏈平臺(tái),與標(biāo)準(zhǔn)的比特幣區(qū)塊鏈相比,以太坊的交易場(chǎng)景更加簡(jiǎn)單,且以太坊的智能合同可以解決數(shù)據(jù)完整性問(wèn)題,實(shí)現(xiàn)客戶端-服務(wù)器架構(gòu),適合跨層級(jí)、跨領(lǐng)域的分布式電子證照管理系統(tǒng)的開(kāi)發(fā)。
系統(tǒng)架構(gòu)如圖1 所示,主要包括六個(gè)部分:證照發(fā)布方、證照使用方、證照持有方、智能合約、區(qū)塊鏈、可信機(jī)構(gòu)組織。
圖1 系統(tǒng)模型
證照發(fā)布方:負(fù)責(zé)為證照持有者發(fā)布電子證照,可以上傳數(shù)據(jù)密文至存儲(chǔ)系統(tǒng),并將密文索引發(fā)布至區(qū)塊鏈。
證照持有方:電子證照數(shù)據(jù)的持有者,證照持有方執(zhí)行訪問(wèn)控制策略,根據(jù)自身電子證照信息生成簽名信息可使用密鑰加解密電子證照數(shù)據(jù),可以為證照使用方的訪問(wèn)請(qǐng)求進(jìn)行授權(quán)。
證照使用方:需要使用電子證照數(shù)據(jù)的第三方,使用方在獲取持有方授權(quán)后,可以使用持有方提供的搜索令牌與關(guān)鍵詞進(jìn)行檢索,并通過(guò)可信機(jī)構(gòu)提供的屬性密鑰進(jìn)行數(shù)據(jù)解密。證照使用方獲取電子證照數(shù)據(jù)時(shí),首先向證照持有方申請(qǐng)授權(quán),獲得持有方屬性令牌。然后向區(qū)塊鏈系統(tǒng)發(fā)送訪問(wèn)電子證照的請(qǐng)求,以獲取對(duì)應(yīng)的電子證照數(shù)據(jù)索引,最后使用索引獲得電子證照數(shù)據(jù)密文。
可信機(jī)構(gòu):負(fù)責(zé)系統(tǒng)的管理,初始化階段可信機(jī)構(gòu)為整個(gè)系統(tǒng)選擇公共參數(shù),系統(tǒng)的參與者需要在可信機(jī)構(gòu)進(jìn)行注冊(cè),在驗(yàn)證注冊(cè)用戶的身份后,可信機(jī)構(gòu)會(huì)為系統(tǒng)的參與者生成屬性密鑰。
存儲(chǔ)系統(tǒng):負(fù)責(zé)存儲(chǔ)電子證照數(shù)據(jù)密文與電子證照數(shù)據(jù)相關(guān)的信息及其簽名。
區(qū)塊鏈:負(fù)責(zé)存儲(chǔ)電子證照數(shù)據(jù)密文索引。
智能合約:其核心為電子證照的操作過(guò)程,區(qū)塊記錄內(nèi)容為加密的電子證照。智能合約需完成電子證照發(fā)布、取用接口,發(fā)布電子證照的過(guò)程需有可信機(jī)構(gòu)組織、證照發(fā)布方、證照持有方簽名,發(fā)布成功的電子證照密文索引在區(qū)塊上。
電子證照的共享實(shí)質(zhì)為證照持有方將電子證照的副本交易給目標(biāo)用戶的過(guò)程,該過(guò)程由證照發(fā)布方、證照使用方、證照持有方、可信機(jī)構(gòu)通過(guò)以太坊智能合約實(shí)現(xiàn)。副本的有效性可由電子證照hash值與原始區(qū)塊中記錄的電子證照hash 值對(duì)比,以校驗(yàn)真實(shí)性,并將共享過(guò)程記錄在區(qū)塊鏈中。
完整的電子證照信息上傳與訪問(wèn)經(jīng)過(guò)如下步驟:(1)數(shù)據(jù)用戶認(rèn)證注冊(cè)。
(2)可信機(jī)構(gòu)為電子證照持有方與證照發(fā)布方生成屬性密鑰。
(3)數(shù)據(jù)用戶基于文檔集合的索引,然后生成密文索引并將其外包給區(qū)塊鏈。
(4)證照使用方獲得持有方授權(quán),使用持有方身份與關(guān)鍵字構(gòu)造一個(gè)加密的令牌,通過(guò)安全信道將其發(fā)送給證照使用方。
(5)使用方向區(qū)塊鏈發(fā)送帶有加密令牌的訪問(wèn)請(qǐng)求,區(qū)塊鏈上的“會(huì)計(jì)節(jié)點(diǎn)”接收到令牌后,調(diào)用智能合約接口執(zhí)行搜索,獲得匹配的鍵值對(duì)與區(qū)塊鏈交易ID,使用返回的區(qū)塊鏈交易ID 獲得密文索引,將密文索引發(fā)送給使用方。
(6)使用方發(fā)送帶有密文索引的訪問(wèn)請(qǐng)求,存儲(chǔ)系統(tǒng)驗(yàn)證數(shù)據(jù)訪問(wèn)者的屬性是否滿足訪問(wèn)控制策略,若滿足則發(fā)送密文給使用方。
區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)如圖2 所示。區(qū)塊鏈一些節(jié)點(diǎn)保有一份完整的、最新的區(qū)塊鏈拷貝,這樣的節(jié)點(diǎn)被稱為“全節(jié)點(diǎn)”。另外還有一些節(jié)點(diǎn)只保留了區(qū)塊鏈的一部分,這樣的節(jié)點(diǎn)被稱為“輕量級(jí)節(jié)點(diǎn)”。每個(gè)節(jié)點(diǎn)都參與全網(wǎng)的路由功能,同時(shí)也可能包含其他功能。每個(gè)節(jié)點(diǎn)都參與驗(yàn)證并傳播交易及區(qū)塊信息,發(fā)現(xiàn)并維持與對(duì)等節(jié)點(diǎn)的連接。根據(jù)所提供的功能不同,各節(jié)點(diǎn)可能具有不同的分工,一些節(jié)點(diǎn)可調(diào)用智能合約搜索接口,執(zhí)行索引搜索功能,稱為會(huì)計(jì)節(jié)點(diǎn)。各工作節(jié)點(diǎn)組成P2P 網(wǎng)絡(luò)架構(gòu),以扁平flat 拓?fù)浣Y(jié)構(gòu)相互連通。
圖2 區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)
可信機(jī)構(gòu)選擇階數(shù)為素?cái)?shù)p 的乘法循環(huán)群G和GT,一個(gè)G 的生成元g,以及一個(gè)雙線性映射e^ :G×G →GT,定義哈希函數(shù)H1:{0,1}*→Zp,H2:{0,1}*→G,并定義加解密函數(shù)SE=(SE.Enc,SE.Dec)。之后,隨機(jī)選擇(α,β)∈Zp,計(jì)算g1=gα,h=gβ,Y=e^ (g,g)α。最終,可信機(jī)構(gòu)發(fā)布公共系統(tǒng)參數(shù)PP=(G,GT,e,p,g,H1,H2),生成公鑰PK 與私有的系統(tǒng)主密鑰MK。
證照發(fā)布方的準(zhǔn)入由區(qū)塊鏈網(wǎng)絡(luò)中的可信機(jī)構(gòu)進(jìn)行認(rèn)證與管理。數(shù)據(jù)用戶的注冊(cè)與認(rèn)證管理也可委托給證照發(fā)布方。數(shù)據(jù)用戶包括證照持有方和證照使用方,每個(gè)成功注冊(cè)的數(shù)據(jù)用戶都獲得系統(tǒng)分配的全局標(biāo)識(shí)GID,用于建立用戶密鑰并標(biāo)識(shí)用戶真實(shí)身份。
可信機(jī)構(gòu)在區(qū)塊鏈上部署了一個(gè)用戶管理合約。合約輸入GID 以確定用戶的身份。如果用戶GID 為證照使用方,則根據(jù)其訪問(wèn)的部門(mén)資質(zhì)信息為其分配相應(yīng)的屬性。如果用戶GID 是經(jīng)過(guò)身份驗(yàn)證的使用方,則會(huì)將其電子證照的屬性分配給他。
可信機(jī)構(gòu)基于用戶GID 的屬性集A 為每個(gè)用戶生成私鑰SKu。隨機(jī)選擇x←Zp,計(jì)算K1=g(α+x)/β,K2=g1/β,K3=gx。對(duì)每一個(gè)屬性a ∈A,隨機(jī)選擇Sa∈Zp并計(jì)算Ka=H2(a)SaK3,。之后可信機(jī)構(gòu)通過(guò)安全信道將發(fā)送給標(biāo)識(shí)為GID 的用戶。
證照發(fā)布方為用戶生成電子證照數(shù)據(jù),通過(guò)可信機(jī)構(gòu)部署的合約將數(shù)據(jù)密文的hash 值、時(shí)間戳、交易發(fā)起者、發(fā)布方簽名等信息上傳到區(qū)塊鏈,并得到返回的交易Id。證照持有方可以瀏覽電子證照數(shù)據(jù),區(qū)塊鏈記錄所有數(shù)據(jù)共享交易信息。
具體加密流程如下:證照持有方隨機(jī)選擇對(duì)稱密鑰k,加密電子證照數(shù)據(jù)EL 得SE.Enc(EL),上傳SE.Enc(EL)至存儲(chǔ)系統(tǒng),并獲得相應(yīng)的索引地址URL(SE.Enc(EL))。之后根據(jù)電子證照數(shù)據(jù)密文生成關(guān)鍵字索引與電子證照密文數(shù)據(jù)索引,將索引提交給證照發(fā)布方,并生成加密的關(guān)鍵字索引與密文索引。
證照使用方想要檢索電子證照數(shù)據(jù)時(shí),首先獲取證照持有方的授權(quán)。可根據(jù)持有方關(guān)鍵字以及自身私鑰SK 生成一個(gè)搜索陷門(mén)。
證照使用方首先輸入自己的私鑰SK 與想要搜索的關(guān)鍵字k,并計(jì)算,Tu(k)=T*K1,證照使用方通過(guò)關(guān)鍵字k 生成搜索陷門(mén)Tk=(Tu(k),a,ta=Ka,。調(diào)用在區(qū)塊鏈上部署的智能合約,合約輸入用戶GID 和陷門(mén)Tq,并調(diào)用搜索算法進(jìn)行搜索。
搜索算法根據(jù)訪問(wèn)結(jié)構(gòu)T 關(guān)聯(lián)的屬性返回?cái)?shù)據(jù)密文索引CI。當(dāng)且僅當(dāng)用戶GID 的屬性集A 滿足訪問(wèn)結(jié)構(gòu)T,且查詢關(guān)鍵字k 等于索引關(guān)鍵字w,才能返回密文索引CI,所有相關(guān)的操作信息均會(huì)自動(dòng)添加到區(qū)塊鏈中。之后證照使用方提交密文索引,可根據(jù)密文索引獲得存儲(chǔ)系統(tǒng)對(duì)應(yīng)的電子證照數(shù)據(jù)密文SE.Enc(EL),使用對(duì)稱密鑰k 解密。
本文區(qū)塊鏈系統(tǒng)基于以太坊搭建,數(shù)據(jù)用戶和服務(wù)對(duì)等點(diǎn)的實(shí)驗(yàn)環(huán)境所使用的操作系統(tǒng)為64 位Windows 系統(tǒng),處理器為英特爾酷睿i5 3.5 GHz。利用JPBC 2.0.0 庫(kù)進(jìn)行智能合約的部署。對(duì)方案進(jìn)行了部分實(shí)現(xiàn)并對(duì)系統(tǒng)進(jìn)行了測(cè)試,測(cè)試中統(tǒng)計(jì)了電子證照數(shù)據(jù)加密階段和解密階段的運(yùn)行時(shí)間與索引生成時(shí)間。之后與文獻(xiàn)[7]、文獻(xiàn)[8]中的分布式存儲(chǔ)共享方案進(jìn)行了分析對(duì)比。
圖3 模擬可信機(jī)構(gòu)節(jié)點(diǎn)生成系統(tǒng)的主密鑰與為用戶生成私鑰的過(guò)程,通過(guò)隨機(jī)采樣生成32 B屬性密鑰。AES 對(duì)稱密鑰生成約耗時(shí)0.6 ms,非對(duì)稱密鑰對(duì)生成耗時(shí)約為0.5 ms。
圖3 密鑰生成
圖4 演示了數(shù)據(jù)加密與索引生成,加密并生成數(shù)據(jù)索引耗時(shí)約為8 ms。
圖4 索引生成
假設(shè)n 表示屬性的數(shù)量,雙線性映射操作時(shí)間為P,E 表示循環(huán)群中的指數(shù)運(yùn)算,分析本方案與文獻(xiàn)[7]、文獻(xiàn)[8]的理論計(jì)算開(kāi)銷,結(jié)果如表1 所示。
表1 計(jì)算開(kāi)銷對(duì)比
最后,比較了本文方案與文獻(xiàn)[7]、文獻(xiàn)[8]建立索引時(shí)的性能,如圖5 所示。
圖5 索引建立時(shí)間開(kāi)銷
對(duì)本系統(tǒng)在防篡改、隱私保護(hù)、可驗(yàn)證性、安全密鑰管理等方面進(jìn)行非形式化的安全性分析。與相關(guān)方案對(duì)比如表2 所示。
表2 計(jì)算開(kāi)銷對(duì)比
防篡改:電子證照數(shù)據(jù)經(jīng)過(guò)對(duì)稱加密并存儲(chǔ)在獨(dú)立于區(qū)塊鏈的存儲(chǔ)系統(tǒng)中,相應(yīng)的索引和對(duì)稱密鑰被加密并存儲(chǔ)在區(qū)塊鏈中,因此電子證照數(shù)據(jù)和索引難以被篡改。
隱私保護(hù):系統(tǒng)中的每一個(gè)用戶均使用一個(gè)隨機(jī)生成的GID 匿名地參與區(qū)塊鏈交易,且區(qū)塊鏈索引和鏈外存儲(chǔ)模式提供了隱私保護(hù)。
可驗(yàn)證性:所有與電子證照數(shù)據(jù)共享和搜索相關(guān)的操作都記錄在防篡改的區(qū)塊鏈上,可以提供有效的驗(yàn)證和匿名的跟蹤。
安全密鑰管理:每個(gè)隨機(jī)生成的對(duì)稱密鑰對(duì)電子證照數(shù)據(jù)進(jìn)行加密,相應(yīng)的索引同樣進(jìn)行加密,并存儲(chǔ)在區(qū)塊鏈中??尚艡C(jī)構(gòu)通過(guò)區(qū)塊鏈在各節(jié)點(diǎn)建立信任,確保密鑰管理的安全性。
綜上,本方案可以完成電子證照數(shù)據(jù)的密文存儲(chǔ)與索引上鏈工作,數(shù)據(jù)用戶可以有效地檢索電子證照密文數(shù)據(jù)。與現(xiàn)有一些方案相比本方案具有更好的安全性,只引入少量的計(jì)算開(kāi)銷,能夠滿足電子證照管理的主體需求。
本文針對(duì)電子證照管理中的去中心化共享與隱私保護(hù)問(wèn)題,使用區(qū)塊鏈與可搜索加密技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)安全的電子證照管理系統(tǒng)。利用區(qū)塊鏈技術(shù)對(duì)現(xiàn)存運(yùn)行方案不足之處進(jìn)行優(yōu)化,能有效簡(jiǎn)化流程和提高運(yùn)營(yíng)效率,并能及時(shí)規(guī)避信息不透明和容易被篡改的問(wèn)題。實(shí)驗(yàn)表明,本文的電子證照管理系統(tǒng)有去中心化、分布式可信存儲(chǔ)、不可篡改等特性,該系統(tǒng)有助于電子證照跨地區(qū)管理,有利于構(gòu)建良性的社會(huì)信用生態(tài)。
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2023年1期