方國(guó)強(qiáng)
(中國(guó)移動(dòng)通信集團(tuán)浙江有限公司,浙江 杭州 310000)
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,信息系統(tǒng)與人們生活結(jié)合得越來(lái)越緊密,給人們帶來(lái)了諸多便利。這些便利也給網(wǎng)絡(luò)黑客帶去了攻擊便利,增加了網(wǎng)絡(luò)攻擊的攻擊面。即使是最強(qiáng)大的網(wǎng)絡(luò)防火墻[1]、入侵檢測(cè)系統(tǒng)[2]和反病毒軟件[3]一起,也無(wú)法保證信息系統(tǒng)的完全安全。在這種情況下,計(jì)算機(jī)審計(jì)系統(tǒng)[4]的作用愈發(fā)明顯。審計(jì)系統(tǒng)通過記錄和分析系統(tǒng)中發(fā)生的操作事件,對(duì)攻擊行為進(jìn)行抽絲剝繭般的分析、追溯和特征歸納,從而對(duì)未來(lái)網(wǎng)絡(luò)攻擊進(jìn)行預(yù)警。然而,現(xiàn)有的審計(jì)系統(tǒng)往往存在超級(jí)管理員權(quán)限過大的問題。具體來(lái)說(shuō),超級(jí)管理員擁有刪除審計(jì)記錄的權(quán)限。在極端情況,超級(jí)管理員可以監(jiān)守自盜,并且從審計(jì)系統(tǒng)中刪除可能追蹤到他的所有審計(jì)記錄。此外,調(diào)查研究發(fā)現(xiàn)[5],60%以上安全攻擊來(lái)自于內(nèi)部。因此,超級(jí)管理員的極端情況是不得不考慮的安全事件。
針對(duì)超級(jí)管理員問題,很多學(xué)者和企業(yè)也提出了許多解決方案,主要包括分散法和加層法。分散法中,超級(jí)管理員不是一個(gè)人,而是一個(gè)賬戶,該賬戶由多個(gè)人共同管理。當(dāng)僅有其中的少數(shù)人作惡時(shí),無(wú)法獲得審計(jì)記錄刪除權(quán)限,從而解決了超級(jí)管理員問題。但是,這種方法存在如下問題。超級(jí)管理員人數(shù)不能過多,如果人數(shù)過多將不利于日常升級(jí)系統(tǒng)的管理;一旦人數(shù)過少,將易使得合謀成功,從而又回到該問題的原點(diǎn)。加層法則指的是在超級(jí)管理員上面再設(shè)立一個(gè)管理員,該管理員只負(fù)責(zé)記錄超級(jí)管理員的操作行為。然而,這種方法完全寄托于新設(shè)立管理員的可信度。當(dāng)該管理員和超級(jí)管理員合謀時(shí),超級(jí)管理問題將再次發(fā)生。另外,當(dāng)該管理員作惡如偽造超級(jí)管理員操作,將陷害超級(jí)管理員。如此一來(lái),要區(qū)分是誰(shuí)在作假,審計(jì)系統(tǒng)還需引進(jìn)一套決策系統(tǒng)。公平地說(shuō),目前已有的審計(jì)系統(tǒng)沒有很好地解決超級(jí)管理員問題。
2008 年年底,一個(gè)化名為中本聰?shù)膶W(xué)者提出了一種新的密碼貨幣,名為比特幣[6]。經(jīng)過不斷發(fā)展,將在比特幣中涉及的技術(shù)歸納總結(jié)為區(qū)塊鏈技術(shù)。區(qū)塊鏈技術(shù)可以在一個(gè)無(wú)中心的不可信的環(huán)境中建立可信數(shù)據(jù)鏈,這些數(shù)據(jù)共享于全網(wǎng)絡(luò)且不可篡改。超級(jí)管理員問題實(shí)質(zhì)上是數(shù)據(jù)篡改問題,而區(qū)塊鏈的一大特點(diǎn)是不可篡改性。因此,本文將結(jié)合區(qū)塊鏈技術(shù),利用其不可篡改性,提出一個(gè)防篡改的審計(jì)系統(tǒng)。該系統(tǒng)不同于已有的解決方案,并不對(duì)已有的審計(jì)系統(tǒng)進(jìn)行修改,而是將其作為一個(gè)黑盒,節(jié)約建設(shè)成本和人員培訓(xùn)成本;由于區(qū)塊鏈本身是在不可信環(huán)境中建立可信的性質(zhì),最大程度上降低了超級(jí)管理員與區(qū)塊鏈進(jìn)行合謀的可能性。
當(dāng)然,僅僅使用區(qū)塊鏈技術(shù)并不能完全解決超級(jí)管理問題,原因有二。第一,當(dāng)審計(jì)數(shù)據(jù)上鏈后,這些數(shù)據(jù)將被全網(wǎng)獲取,因此必須對(duì)其進(jìn)行保密處理,而且是細(xì)粒度的訪問控制。第二,由于區(qū)塊鏈本身不支持查找搜索的特性,勢(shì)必會(huì)影響其審計(jì)數(shù)據(jù)稽核效率,因此必須設(shè)計(jì)一種快速有效的稽核方法。本文所提的最終解決方案較好地解決了以上兩個(gè)問題。
本文剩余內(nèi)容安排如下。第1 節(jié)介紹所提審計(jì)系統(tǒng)的系統(tǒng)框架和設(shè)計(jì)目標(biāo)。第2 節(jié)介紹所提審計(jì)系統(tǒng)涉及的基礎(chǔ)知識(shí),包括哈希函數(shù)、數(shù)字簽名、區(qū)塊鏈和屬性基加密等。第3 節(jié)和第4 節(jié)分別給出系統(tǒng)的描述和分析。第5 節(jié)基于之前的系統(tǒng)提出一個(gè)更高效的防篡改審計(jì)系統(tǒng)。最后,在第6 節(jié)給出結(jié)論。
介紹涉及的防篡改審計(jì)系統(tǒng)的設(shè)計(jì)框架、信任假設(shè)以及設(shè)計(jì)目標(biāo)。
如圖1 所示,提出的防篡改審計(jì)系統(tǒng)共有5 個(gè)部分,分別是傳統(tǒng)審計(jì)系統(tǒng)、數(shù)據(jù)采集網(wǎng)關(guān)、區(qū)塊鏈網(wǎng)絡(luò)、審計(jì)驗(yàn)證系統(tǒng)和密鑰管理服務(wù)器。傳統(tǒng)審計(jì)系統(tǒng)顧名思義是現(xiàn)行的審計(jì)系統(tǒng),具有對(duì)系統(tǒng)內(nèi)部操作進(jìn)行記錄和分析的功能,包括超級(jí)管理員對(duì)系統(tǒng)的操作。但是,由于超級(jí)管理員的權(quán)限設(shè)置問題,使得超級(jí)管理員可以刪除操作記錄。為了防止該情況的發(fā)生,數(shù)據(jù)采集網(wǎng)關(guān)將超級(jí)管理員的操作記錄收集并上傳至區(qū)塊鏈網(wǎng)絡(luò)中,利用區(qū)塊鏈的不可篡改性防止超級(jí)管理員對(duì)其操作記錄進(jìn)行刪除。由于這些操作記錄涉及到企業(yè)內(nèi)部信息或超級(jí)管理員的敏感信息,因此數(shù)據(jù)采集網(wǎng)關(guān)必須在上傳至區(qū)塊鏈網(wǎng)絡(luò)前對(duì)其進(jìn)行加密。最后,用戶可以通過審計(jì)驗(yàn)證系統(tǒng)驗(yàn)證傳統(tǒng)審計(jì)系統(tǒng)中超級(jí)管理員的操作記錄是否經(jīng)過修改。當(dāng)然,用戶在驗(yàn)證時(shí)需要用到解密密鑰。操作記錄的加解密密鑰都是由密鑰管理器生成和分發(fā)的。另外,這里的區(qū)塊鏈可以是許可鏈也可以是非許可鏈,但是不管是哪種區(qū)塊鏈,上鏈數(shù)據(jù)都需要進(jìn)行認(rèn)證。因此,在數(shù)據(jù)上傳前操作記錄將會(huì)由數(shù)據(jù)采集網(wǎng)關(guān)進(jìn)行簽名。簽名所用到的公私鑰對(duì)由網(wǎng)關(guān)獨(dú)立生成,簽名驗(yàn)證鑰(公鑰)由密鑰管理服務(wù)器上傳至區(qū)塊鏈。
圖1 防篡改審計(jì)系統(tǒng)的系統(tǒng)設(shè)計(jì)框架
在所提的防篡改審計(jì)系統(tǒng)中,本文分別對(duì)各個(gè)參與組件做出如下信任假設(shè)。
(1)傳統(tǒng)審計(jì)系統(tǒng)是可靠的,即系統(tǒng)中的所有操作都會(huì)被記錄,但是在記錄后超級(jí)管理員可以利用其權(quán)限對(duì)操作記錄進(jìn)行修改。
(2)數(shù)據(jù)采集網(wǎng)關(guān)是完全可信的,也就是說(shuō)該網(wǎng)關(guān)會(huì)采集所有滿足條件的審計(jì)記錄(在本文的具體例子中指超級(jí)管理員的操作記錄),并且不會(huì)存儲(chǔ)所采集的審計(jì)記錄而泄露給其他參與方或外部人員。
(3)密鑰管理服務(wù)器也是完全可信的,會(huì)存儲(chǔ)數(shù)據(jù)采集網(wǎng)關(guān)的簽名驗(yàn)證鑰(私鑰),會(huì)產(chǎn)生對(duì)記錄進(jìn)行加解密操作的加解密鑰,并對(duì)其進(jìn)行安全分發(fā)。它與數(shù)據(jù)采集網(wǎng)關(guān)之間的通信信道是可信的,而與審計(jì)驗(yàn)證系統(tǒng)的通信信道是可信并保密的。
(4)區(qū)塊鏈網(wǎng)絡(luò)是誠(chéng)實(shí)但好奇的,也就是區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)會(huì)根據(jù)區(qū)塊鏈的共識(shí)機(jī)制對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證和上鏈操作,但是同時(shí)它們也對(duì)上鏈數(shù)據(jù)(審計(jì)數(shù)據(jù))感興趣并嘗試獲得這些信息。當(dāng)然,根據(jù)區(qū)塊鏈的性質(zhì),它不會(huì)發(fā)起主動(dòng)攻擊。
(5)審計(jì)驗(yàn)證系統(tǒng)由用戶控制,只有用戶具有對(duì)應(yīng)的解密密鑰時(shí),才能判斷審計(jì)記錄是否進(jìn)行了修改。
本系統(tǒng)的設(shè)計(jì)目標(biāo)包含安全和效率兩個(gè)方面。
1.3.1 安全設(shè)計(jì)目標(biāo)
安全設(shè)計(jì)目標(biāo)又包含審計(jì)記錄不可篡改性和審計(jì)記錄的保密性兩個(gè)子目標(biāo)。不可篡改性指的是審計(jì)記錄一旦生成,任何人包括超級(jí)管理員都不能對(duì)其進(jìn)行修改。保密性指的是審計(jì)數(shù)據(jù)在從數(shù)據(jù)采集網(wǎng)關(guān)出來(lái)后,只有授權(quán)過的用戶才能訪問這些審計(jì)數(shù)據(jù),并滿足細(xì)粒度訪問控制的要求。
1.3.2 效率設(shè)計(jì)目標(biāo)
效率設(shè)計(jì)目標(biāo)包含上鏈效率和下鏈效率兩個(gè)子方面。上鏈效率指的是審計(jì)數(shù)據(jù)通過數(shù)據(jù)采集服務(wù)器出來(lái)后記錄到區(qū)塊鏈中的速度。在本文的具體應(yīng)用中,需要滿足中國(guó)移動(dòng)審計(jì)系統(tǒng)中每天上百萬(wàn)條的數(shù)據(jù)量。下鏈效率指的是進(jìn)行審計(jì)數(shù)據(jù)稽核時(shí),它的效率在能接收的范圍內(nèi)。當(dāng)數(shù)據(jù)沒有被修改時(shí),它的稽核效率不應(yīng)該小于1 000 條/秒;當(dāng)數(shù)據(jù)有修改時(shí),假設(shè)1 000 條記錄中有1 條被修改,其定位效率不低于5 s。
本節(jié)中將主要介紹所設(shè)計(jì)的防篡改審計(jì)系統(tǒng)涉及的基本概念,包括區(qū)塊鏈、哈希函數(shù)、數(shù)字簽名以及屬性基加密。
哈希函數(shù)是一種特殊的函數(shù),其輸入可以是任意字符串,而其輸出是一串恒定長(zhǎng)度的字符串。兩個(gè)輸入字符串中僅僅只有一個(gè)比特不同,其得到的輸出也有很大的不同。一個(gè)哈希函數(shù)必須滿足單向性和抗碰撞性兩個(gè)安全屬性。單向性指的是從函數(shù)的輸出求不出函數(shù)的輸入??古鲎残灾傅氖钦也坏絻蓚€(gè)不同的輸入其輸出是一樣的。在本文的剩余部分,將用H 來(lái)表示哈希函數(shù)。
數(shù)字簽名方案是一種公鑰密碼方案,包含公私鑰生成算法KeyGen、簽名算法Sign 和驗(yàn)證算法Verify 這3 個(gè)算法。在公私鑰生產(chǎn)算法中會(huì)產(chǎn)生一對(duì)公私鑰對(duì)(pk,sk)私鑰sk 用在簽名算法中產(chǎn)生對(duì)消息m 的簽名σ,而公鑰pk 可在驗(yàn)證算法中用來(lái)驗(yàn)證σ,判斷其是否是消息m 的有效簽名。公鑰pk也可被稱為簽名驗(yàn)證鑰。在本文的剩余部分,將用S 來(lái)表示數(shù)字簽名方案。
對(duì)于數(shù)字簽名來(lái)說(shuō),其安全屬性主要是不可偽造性。該屬性保證了攻擊者即使通過自適應(yīng)的方式獲得相當(dāng)數(shù)量的消息簽名對(duì)(m,σ)后,也不能對(duì)一個(gè)新的消息m 產(chǎn)生有效的簽名σ。
區(qū)塊鏈技術(shù)來(lái)源于一個(gè)化名為中本聰?shù)膶W(xué)者提出的比特幣[6],其最大的特點(diǎn)是不可篡改性。該性質(zhì)主要通過全局共享和哈希鏈結(jié)構(gòu)獲得。區(qū)塊鏈由一系列數(shù)據(jù)塊組成,且這些數(shù)據(jù)塊是公開可獲得的。也就是說(shuō),網(wǎng)絡(luò)中的任何一個(gè)節(jié)點(diǎn)都可以獲得區(qū)塊鏈上的所有數(shù)據(jù),即使一個(gè)節(jié)點(diǎn)丟失了區(qū)塊鏈數(shù)據(jù),也可以從其他網(wǎng)絡(luò)節(jié)點(diǎn)中獲得區(qū)塊鏈數(shù)據(jù)。此外,這些數(shù)據(jù)塊通過哈希函數(shù)連接在一起,修改其中的任何一個(gè)數(shù)據(jù)都會(huì)引起其后續(xù)區(qū)塊的變動(dòng)。然而,根據(jù)哈希函數(shù)的安全屬性,這種變動(dòng)很難實(shí)現(xiàn)。結(jié)合以上兩點(diǎn),區(qū)塊鏈上的數(shù)據(jù)是不可篡改的。本文正是利用區(qū)塊鏈的該特性,提出了一個(gè)基于區(qū)塊鏈的防篡改審計(jì)系統(tǒng)。
屬性基加密是一種特殊公鑰加密類型,由密碼學(xué)家Sahai 和Waters[7]在歐密2005 會(huì)議上提出,主要用來(lái)實(shí)現(xiàn)密文的細(xì)粒度訪問控制系統(tǒng)。只有用戶的屬性滿足密文的訪問控制要求時(shí),用戶所擁有的私鑰才能進(jìn)行解密活動(dòng)對(duì)應(yīng)的明文。屬性基加密分為密鑰策略和密文策略兩種類型。前者中,訪問控制策略主要通過用戶所擁有的私鑰來(lái)實(shí)現(xiàn);后者中,主要通過密文來(lái)實(shí)現(xiàn)。當(dāng)然,屬性基加密也包含加密算法Enc 和解密算法Dec,還有系統(tǒng)公私鑰對(duì)產(chǎn)生算法SKeyGen 和用戶私鑰產(chǎn)生算法Ext。SKeyGen產(chǎn)生一對(duì)公私鑰對(duì)(mpk,msk),mpk 公開,msk 由一個(gè)叫密鑰生成中心(PKG)的實(shí)體掌握。該P(yáng)KG 可以利用msk 根據(jù)用戶的屬性在Ext 算法中產(chǎn)生對(duì)應(yīng)的用戶私鑰。在本文的剩余部分,用ABE 表示屬性基加密。
對(duì)于屬性基加密來(lái)說(shuō),它的安全屬性主要通過不可區(qū)分性來(lái)保證所加密消息的私密性。不可區(qū)分性指的是攻擊者不能得知一個(gè)給定的密文所對(duì)應(yīng)的消息,即使這個(gè)消息是其所選定的兩個(gè)消息之一。另外,根據(jù)攻擊者是否可以獲得其他一些信息,不可區(qū)分性又可分為多個(gè)等級(jí),如選擇明文攻擊(Chosen-plaintext Attack,CPA)、選擇密文攻擊(Chosen-ciphertext Attack,CCA)以及選擇模型(Selective Model,SM)等。
利用介紹的基本工具,給出設(shè)計(jì)的防篡改審計(jì)系統(tǒng)。該系統(tǒng)主要包括系統(tǒng)初始化階段、數(shù)據(jù)收集階段、數(shù)據(jù)上鏈階段以及數(shù)據(jù)下鏈階段。
該階段,各個(gè)系統(tǒng)組件生成必要的密鑰數(shù)據(jù)。
(3)系統(tǒng)中的用戶可以向密鑰管理服務(wù)器申請(qǐng)自己屬性所對(duì)應(yīng)的私鑰。具體來(lái)說(shuō),密鑰管理服務(wù)器首先要認(rèn)證用戶聲稱的屬性是真實(shí)的,可通過第三方認(rèn)證系統(tǒng)來(lái)實(shí)現(xiàn),如短信認(rèn)證等。通過認(rèn)證后,密鑰管理服務(wù)器運(yùn)行生成用戶屬性所對(duì)應(yīng)的私鑰,并通過可信且保密的通信信道傳輸給用戶。
該階段,數(shù)據(jù)采集網(wǎng)關(guān)將從傳統(tǒng)審計(jì)系統(tǒng)中收集到的審計(jì)數(shù)據(jù)經(jīng)過處理上傳至區(qū)塊鏈網(wǎng)絡(luò)。具體來(lái)說(shuō),主要有以下步驟。
(1)從傳統(tǒng)審計(jì)系統(tǒng)中收集審計(jì)數(shù)據(jù),記為m。
(2)利用一個(gè)對(duì)稱加密算法如SM4,對(duì)m 進(jìn)行加密。加密所使用的密鑰記為k,加密后所得的密文記為C1。
(4)用sk 對(duì)密文C1、C2和m 的生成時(shí)間t 運(yùn)行 S.Sign算法,獲得相對(duì)應(yīng)的簽名σ。
(5)將(t,C1,C2,σ)廣播到區(qū)塊鏈網(wǎng)絡(luò)中。
該階段,區(qū)塊鏈網(wǎng)絡(luò)中的區(qū)塊生成節(jié)點(diǎn)(或稱共識(shí)節(jié)點(diǎn))對(duì)傳播到區(qū)塊鏈網(wǎng)絡(luò)中的(t,C1,C2,σ)進(jìn)行驗(yàn)證。如驗(yàn)證通過,則將其記錄到區(qū)塊鏈中;如驗(yàn)證不通過,則拋棄該(t,C1,C2,σ)。
驗(yàn)證過程主要包括以下步驟。
(1)(t,C1,C2,σ)是否已包含在區(qū)塊鏈中,如是,則驗(yàn)證不通過;
(2)利用pk 運(yùn)行 S.Sign算法驗(yàn)證簽名σ 是否是對(duì)(t,C1,C2)的有效簽名,如不是有效簽名,則驗(yàn)證不通過。
該階段,用戶可以通過審計(jì)驗(yàn)證系統(tǒng)驗(yàn)證傳統(tǒng)審計(jì)系統(tǒng)中是否有記錄進(jìn)行了改動(dòng)。
(1)用戶確定稽核時(shí)間段[T1,T2]。
(2)根據(jù)時(shí)間段[T1,T2],從傳統(tǒng)審計(jì)系統(tǒng)中下載對(duì)應(yīng)數(shù)據(jù)M′={m′}。這里M′是一個(gè)審計(jì)數(shù)據(jù)的集合,包含數(shù)個(gè)待稽核的審計(jì)數(shù)據(jù)m′。
(3)根據(jù)時(shí)間段[T1,T2],從區(qū)塊鏈中下載對(duì)應(yīng)數(shù)據(jù),輸入從密鑰管理服務(wù)器處獲得的自己的私鑰,讓審計(jì)驗(yàn)證服務(wù)器對(duì)下載的數(shù)據(jù)進(jìn)行解密獲得審計(jì)數(shù)據(jù)明文。具體來(lái)說(shuō),用用戶的私鑰對(duì)C2運(yùn)行算法獲得k,然后利用k 對(duì)C1進(jìn)行解密獲得m。最終,從區(qū)塊鏈中獲得的審計(jì)數(shù)據(jù)記為M={m}。
(4)對(duì)集合M′和M 中的數(shù)據(jù)逐項(xiàng)進(jìn)行稽核,從而驗(yàn)證傳統(tǒng)審計(jì)系統(tǒng)中在時(shí)間段[T1,T2]是否有記錄進(jìn)行了修改。
本節(jié)將對(duì)提出的防篡改審計(jì)系統(tǒng)進(jìn)行分析,包括安全分析和效率分析。
4.1.1 防篡改性
根據(jù)信任假設(shè)可知,數(shù)據(jù)采集網(wǎng)關(guān)一定能收集到所有的審計(jì)數(shù)據(jù),并將這些審計(jì)數(shù)據(jù)傳輸?shù)絽^(qū)塊鏈網(wǎng)絡(luò)。當(dāng)區(qū)塊鏈網(wǎng)絡(luò)收到數(shù)據(jù)采集網(wǎng)關(guān)發(fā)來(lái)的審計(jì)數(shù)據(jù)時(shí),會(huì)驗(yàn)證其有效性。通過有效性驗(yàn)證后,這些數(shù)據(jù)將會(huì)被寫入?yún)^(qū)塊鏈。由區(qū)塊鏈的不可篡改性可知,數(shù)據(jù)一旦上傳至區(qū)塊鏈中將不可被修改;而用戶通過審計(jì)驗(yàn)證服務(wù)器,一定能從區(qū)塊鏈上下載到完整的審計(jì)數(shù)據(jù)。數(shù)據(jù)采集網(wǎng)關(guān)會(huì)對(duì)所有傳輸?shù)絽^(qū)塊鏈網(wǎng)絡(luò)中的審計(jì)數(shù)據(jù)進(jìn)行數(shù)字簽名認(rèn)證。根據(jù)數(shù)字簽名的不可偽造性可知,系統(tǒng)中的其他實(shí)體或者其他人無(wú)法產(chǎn)生偽造的審計(jì)數(shù)據(jù)。因此,在所提的審計(jì)系統(tǒng)中,任何人都無(wú)法篡改審計(jì)數(shù)據(jù),從而滿足防篡改性。
4.1.2 細(xì)粒度訪問控制
審計(jì)數(shù)據(jù)是經(jīng)過對(duì)稱加密算法進(jìn)行加密的,其使用的加密密鑰又是經(jīng)過屬性基加密方案加密的。根據(jù)屬性基加密和對(duì)稱加密算法的安全性可知,沒有對(duì)應(yīng)的解密密鑰是無(wú)法獲得對(duì)應(yīng)的審計(jì)數(shù)據(jù)的。根據(jù)屬性基加密的特點(diǎn),如果用戶的屬性無(wú)法滿足密文的訪問控制要求,那么用戶擁有的密鑰將無(wú)法進(jìn)行解密。因此,即使用戶可以從區(qū)塊鏈中隨意下載(t,C1,C2,σ)數(shù)據(jù),但只有其屬性滿足要求時(shí)才能審計(jì)明文數(shù)據(jù),從而實(shí)現(xiàn)細(xì)粒度訪問控制。
在所提的防篡改審計(jì)系統(tǒng)中,系統(tǒng)初始化階段的主要消耗是公私鑰的產(chǎn)生。這些操作可在秒級(jí)程度上完成。初始化操作一般都只執(zhí)行一次,或者在系統(tǒng)更新時(shí)才執(zhí)行,而系統(tǒng)更新的頻率很低,次數(shù)屈指可數(shù),因此初始化操作即使在分鐘級(jí)別也是能夠接受的。另外,在數(shù)據(jù)上鏈階段,主要消耗包括對(duì)數(shù)據(jù)采集網(wǎng)關(guān)簽名的驗(yàn)證和共識(shí)形成。前者的時(shí)間消耗在毫秒級(jí)內(nèi)完成,特別是使用ECDSA 時(shí),而后者取決于所使用的共識(shí)機(jī)制。在非許可鏈中,使用PoS(Proof of Stake)共識(shí)機(jī)制的變體[8],其效率可以在秒級(jí)程度上完成。在許可鏈中可以獲得比在非許可鏈中更高的效率[9]。因此,下面將詳細(xì)分析數(shù)據(jù)收集階段和數(shù)據(jù)下鏈階段兩個(gè)階段的效率。
(1)數(shù)據(jù)收集階段。該階段,時(shí)間的消耗主要是在屬性基加密操作。對(duì)于屬性基加密來(lái)說(shuō),時(shí)間消耗在秒級(jí)。對(duì)于一天數(shù)百萬(wàn)審計(jì)記錄的系統(tǒng)來(lái)說(shuō),該階段的時(shí)間消耗很大,遠(yuǎn)遠(yuǎn)達(dá)不到高效的要求。
(2)數(shù)據(jù)下鏈階段。不同于數(shù)據(jù)收集階段,該階段的時(shí)間消耗除了在屬性基解密操作上外,還有相當(dāng)部分時(shí)間消耗在區(qū)塊鏈上查找對(duì)應(yīng)的審計(jì)數(shù)據(jù)上。眾所周知,區(qū)塊鏈?zhǔn)且粋€(gè)不支持快速查詢的數(shù)據(jù)庫(kù),其查找只能按順序逐個(gè)查找,時(shí)間復(fù)雜度是O(n),n 是區(qū)塊鏈上審計(jì)數(shù)據(jù)的數(shù)量。當(dāng)審計(jì)數(shù)據(jù)達(dá)到每天數(shù)百萬(wàn)的量級(jí)時(shí),查找速度將會(huì)無(wú)法忍受。
由上述分析可知,提出的審計(jì)系統(tǒng)雖然在安全性上達(dá)到了設(shè)計(jì)要求,但其效率遠(yuǎn)遠(yuǎn)不足,必須對(duì)其進(jìn)行改進(jìn)。
在給出本文的改進(jìn)方案之前,簡(jiǎn)要闡述改進(jìn)思路。
(1)密碼操作加速。對(duì)于屬性基加解密的操作,由于所使用的密碼算法都已是標(biāo)準(zhǔn)算法或知名算法,已經(jīng)很難從算法本身去改進(jìn)。為此,從計(jì)算機(jī)系統(tǒng)思路進(jìn)行改進(jìn),采取批處理的思想,即多個(gè)審計(jì)記錄用相同的加密密鑰,從而減少屬性基加解密操作次數(shù)。
(2)查找加速。由于區(qū)塊鏈本身不支持查找搜索功能,因此必須自建一個(gè)對(duì)應(yīng)于區(qū)塊鏈的數(shù)據(jù)庫(kù),從而達(dá)到快速查找的功能。但是,如此一來(lái),如何保證自建數(shù)據(jù)庫(kù)不可篡改性就成了一個(gè)新問題。為此,設(shè)計(jì)了一個(gè)快速稽核方法,在每次利用自建數(shù)據(jù)庫(kù)稽核前都要驗(yàn)證自建數(shù)據(jù)庫(kù)是否被篡改。
同第4 節(jié)中描述相同。
本階段中,數(shù)據(jù)將被分批、分階段、分類型進(jìn)行打包、上傳至區(qū)塊鏈網(wǎng)絡(luò)。
(1)建立一個(gè)空打包表,包括時(shí)間點(diǎn)、訪問策略、屬性基密文以及密鑰。
(2)從傳統(tǒng)審計(jì)系統(tǒng)中收集審計(jì)數(shù)據(jù),記為m。
(3)在打包表中查找滿足以下兩方面的記錄。
①審計(jì)數(shù)據(jù)m 的生成時(shí)間t 和記錄的時(shí)間點(diǎn)處于相同時(shí)間段。時(shí)間段的定義可靈活設(shè)置,可為1 h、1 d 或1 a 等。
②審計(jì)數(shù)據(jù)m 的訪問控制策略和記錄的訪問策略是否一致。
如果存在這樣的記錄,則取出對(duì)應(yīng)的屬性基密文(記為C2)和密鑰(記為k);如果不存在這樣的記錄,則隨機(jī)生成滿足對(duì)稱加密的密鑰k,對(duì)k利用算法,獲得對(duì)應(yīng)于訪問控制策略的屬性基密文,并將審計(jì)數(shù)據(jù)m 的t、訪問策略、C2和k 記錄在打包表中。
(4)對(duì)m 進(jìn)行加密,加密使用的密鑰記為k,得到密文C1。
(5)用sk 對(duì)密文C1、C2、t、h、h-1運(yùn)行 S.Sign算法,獲得相對(duì)應(yīng)的簽名σ。這里h=H(h-1||C1||C2||t),h-1為上一條審計(jì)記錄的h 值。
(6)將(t,C1,C2,σ,h,h-1)廣播到區(qū)塊鏈網(wǎng)絡(luò)。
對(duì)比第4 節(jié)中的數(shù)據(jù)收集階段,本文并不是對(duì)每一條審計(jì)記錄都進(jìn)行屬性基加密,在同一時(shí)間段內(nèi)訪問控制策略一致的審計(jì)數(shù)據(jù)只做一次屬性基加密操作,從而大大減少了數(shù)據(jù)收集階段的時(shí)間消耗。
審計(jì)驗(yàn)證系統(tǒng)將建立一個(gè)支持搜索功能的數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)存儲(chǔ)(t,C1,C2,σ,h,h-1)和區(qū)塊ID 等,并主動(dòng)監(jiān)測(cè)區(qū)塊鏈。當(dāng)有新的區(qū)塊產(chǎn)生時(shí),審計(jì)驗(yàn)證系統(tǒng)去區(qū)塊中讀取(t,C1,C2,σ,h,h-1),并連同區(qū)塊ID存儲(chǔ)在數(shù)據(jù)庫(kù)中。
審計(jì)數(shù)據(jù)稽核過程如下。
(1)用戶確定稽核時(shí)間段[T1,T2]。
(2)自建數(shù)據(jù)庫(kù)對(duì)應(yīng)于時(shí)間段[T1,T2]為
(3)從區(qū)塊鏈中取得{ti1,C1,i1,C2,i2,σi1,hi1,h-1,i1}的前一審計(jì)記錄(t,C1,C2,σ,h,h-1),驗(yàn)證h-1,i1=h 是否成立,且對(duì)于j=1,…,n-1,驗(yàn)證和hij=H(h-1,ij||C1||C2||t)是否成立。如果h-1,ij+1=hij有一個(gè)不成立,說(shuō)明自建數(shù)據(jù)庫(kù)被人修改過,需要重新讀取數(shù)據(jù);否則,說(shuō)明自建數(shù)據(jù)庫(kù)在時(shí)間段[T1,T2]的數(shù)據(jù)和區(qū)塊鏈中的數(shù)據(jù)一致。
(4)根據(jù)時(shí)間段[T1,T2],從傳統(tǒng)審計(jì)系統(tǒng)中下載對(duì)應(yīng)數(shù)據(jù)M′={m′}。這里M′是一個(gè)審計(jì)數(shù)據(jù)的集合,包含數(shù)個(gè)待稽核的審計(jì)數(shù)據(jù)m′。
(5)根據(jù)時(shí)間段[T1,T2],從區(qū)塊鏈中下載對(duì)應(yīng)數(shù)據(jù),輸入從密鑰管理服務(wù)器處獲得的自己的私鑰,讓審計(jì)驗(yàn)證服務(wù)器對(duì)下載的數(shù)據(jù)進(jìn)行解密,獲得審計(jì)數(shù)據(jù)明文。具體來(lái)說(shuō),用戶需要建立一個(gè)解密表,包括屬性基密文和密鑰。在打包表中查找C2。如果存在這樣的記錄,則取出對(duì)應(yīng)密鑰(記為k);如果不存在這樣的記錄,則利用其密鑰進(jìn)行算法,獲得對(duì)稱加密密鑰k(可能為空,即無(wú)法解密),并將C2和k 記錄在解密表中。
(6)當(dāng)k 不為空時(shí),對(duì)密文解密獲得m。最終,從區(qū)塊鏈中獲得的審計(jì)數(shù)據(jù)記為M={m}。
(7)對(duì)集合M′和M 中的數(shù)據(jù)逐項(xiàng)進(jìn)行稽核,從而驗(yàn)證傳統(tǒng)審計(jì)系統(tǒng)中在時(shí)間段[T1,T2]是否有記錄進(jìn)行了修改。
對(duì)比第4 節(jié)中的數(shù)據(jù)收集階段,本文并不是對(duì)每一條審計(jì)記錄都進(jìn)行屬性基加密,在同一時(shí)間段內(nèi)訪問控制策略一致的審計(jì)數(shù)據(jù)只做一次屬性基加密操作。另外,對(duì)于區(qū)塊鏈的操作僅僅是一次,而不是每條審計(jì)記錄都要進(jìn)行臨時(shí)下鏈操作,從而大大提高了稽核效率。
針對(duì)傳統(tǒng)審計(jì)系統(tǒng)無(wú)法對(duì)超級(jí)管理員進(jìn)行有效審計(jì)的問題,利用區(qū)塊鏈技術(shù)的不可篡改性,提出了一個(gè)新的防篡改審計(jì)系統(tǒng)。為了保護(hù)審計(jì)數(shù)據(jù)的私密性,利用屬性基加密實(shí)現(xiàn)了密文的審計(jì)數(shù)據(jù)的細(xì)粒度訪問控制。由于使用區(qū)塊鏈和屬性基加密帶來(lái)了效率上的損失,于是提出了相應(yīng)的提速方法。