張益兵
(中國電力財(cái)務(wù)有限公司,北京 100005)
在數(shù)據(jù)傳送過程中,對海量Web 數(shù)據(jù)加密是一種十分普遍的安全措施,其能有效地防止原始海量Web 數(shù)據(jù)被泄露。采用傳統(tǒng)數(shù)據(jù)存儲技術(shù),能有效地保護(hù)海量Web 數(shù)據(jù)的唯一性和抗篡改性。然而,由于海量Web 數(shù)據(jù)傳輸量在不斷增長,使得海量Web 數(shù)據(jù)在存儲過程中很容易遭到其他應(yīng)用程序攻擊,導(dǎo)致數(shù)據(jù)存儲不穩(wěn)定。為了解決該問題,近幾年研究的文獻(xiàn)中設(shè)計(jì)了基于多屬性的存儲系統(tǒng)[1]和基于Kubernetes 的存儲系統(tǒng)[2],在此基礎(chǔ)上,利用HDFS對Web 數(shù)據(jù)進(jìn)行分類,解決了Web 數(shù)據(jù)的少量存儲問題,并建立了基于HBase 的索引機(jī)制,達(dá)到高效存儲Web 數(shù)據(jù)的目的;基于Kubernetes 的存儲系統(tǒng)提供了一個統(tǒng)一的應(yīng)用程序接口,通過建立面向?qū)ο蟮哪P蛠韺?shí)現(xiàn)大量網(wǎng)絡(luò)數(shù)據(jù)的存儲,并使用Kubernetes 的自動化工具,使得存儲系統(tǒng)的部署更加方便。然而,由于海量Web 數(shù)據(jù)存在數(shù)據(jù)不對稱的問題,使用上述兩種方法不能有效解決該問題。區(qū)塊鏈技術(shù)是一種利用非中心化、非信任的方式,能夠安全、可靠地儲存動態(tài)數(shù)據(jù)。為此,設(shè)計(jì)了基于區(qū)塊鏈技術(shù)的海量Web 數(shù)據(jù)關(guān)聯(lián)存儲系統(tǒng)。
利用塊鏈?zhǔn)浇Y(jié)構(gòu)來驗(yàn)證數(shù)據(jù)存儲的安全性,利用分布式節(jié)點(diǎn)共識模式構(gòu)建硬件結(jié)構(gòu),如圖1 所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
由圖1 可知,該硬件結(jié)構(gòu)分為存儲層、計(jì)算層和服務(wù)層。存儲層負(fù)責(zé)存儲原始具有結(jié)構(gòu)屬性的索引數(shù)據(jù)[3];計(jì)算層主要由數(shù)據(jù)緩存模塊、數(shù)據(jù)檢索模塊、數(shù)據(jù)統(tǒng)計(jì)模塊和關(guān)聯(lián)映射模塊組成。該層根據(jù)海量Web 數(shù)據(jù)更新特點(diǎn),建立了相應(yīng)的更新模型,并對更新后的數(shù)據(jù)進(jìn)行處理[4];服務(wù)層的核心部分是數(shù)據(jù)檢索和相關(guān)API 模塊,為分析人員進(jìn)行相關(guān)檢索與統(tǒng)計(jì)提供API[5-6],為后續(xù)分析提供基本服務(wù),并建立了一個用戶查詢接口,以提供功能展示服務(wù)。
區(qū)塊鏈集群監(jiān)控模塊是數(shù)據(jù)關(guān)聯(lián)存儲系統(tǒng)的核心運(yùn)行結(jié)構(gòu),其結(jié)構(gòu)如圖2 所示。
由圖2 可知,分布式開源監(jiān)控代理客戶機(jī)與代理管理機(jī)的下端相連,該代理主要有兩種工作方式:主動式和被動式。主動式監(jiān)控能夠在網(wǎng)絡(luò)環(huán)境下對海量Web 數(shù)據(jù)進(jìn)行直接采集,并對相關(guān)的數(shù)據(jù)進(jìn)行標(biāo)簽,并將其存入系統(tǒng)主機(jī)[7];被動式監(jiān)控要求利用geth 節(jié)點(diǎn)來觀測Web 數(shù)據(jù),并將其通過傳送信道返回到分布式開源監(jiān)控代理客戶機(jī)[8]。主機(jī)集群不能主動向客戶機(jī)發(fā)送消息,只有在被動的情況下才能執(zhí)行其連接命令[9]。一旦服務(wù)監(jiān)聽接口和分布式開源監(jiān)控服務(wù)器建立了聯(lián)系,主機(jī)就會重新恢復(fù)其信息處理功能[10-11]。在此期間,分布式開源監(jiān)控服務(wù)器將不會公開真實(shí)IP 地址[12],因此,采用區(qū)塊鏈集群監(jiān)控結(jié)構(gòu)可以避免被攻擊。
圖2 區(qū)塊鏈集群監(jiān)控結(jié)構(gòu)
區(qū)塊鏈不能直接存儲數(shù)據(jù),其必須把數(shù)據(jù)轉(zhuǎn)化成哈希函數(shù)的數(shù)字格式,然后通過編碼構(gòu)成一個字符串。構(gòu)造一個關(guān)聯(lián)映射模型,即把一個數(shù)據(jù)串映射到一個數(shù)據(jù)格式[13]。因此,采用區(qū)塊鏈共識機(jī)制將新生成的塊通過引用前一個塊的散列值來鎖定前一個塊,后一個區(qū)塊包含前一個區(qū)塊點(diǎn)哈希值,通過共識機(jī)制確定有效塊,進(jìn)而確定主鏈,由此形成了區(qū)塊鏈映射結(jié)構(gòu)[14]。
在該模塊中,使用哈希運(yùn)算方式生成64 位代碼,通過區(qū)塊鏈映射結(jié)構(gòu)封裝全部映射數(shù)據(jù)并打包到區(qū)塊鏈中。系統(tǒng)將關(guān)聯(lián)映射的數(shù)據(jù)通過界面?zhèn)鬏斀o服務(wù)器,并用哈希算法[15]進(jìn)行加密,然后將其保存在數(shù)據(jù)庫中,成為服務(wù)器。同時,服務(wù)器也會向系統(tǒng)提供最新的數(shù)據(jù)。在系統(tǒng)執(zhí)行查詢操作時,服務(wù)器會收到查詢命令,并按照實(shí)時要求對系統(tǒng)進(jìn)行響應(yīng)。通過關(guān)聯(lián)映射模塊實(shí)現(xiàn)了數(shù)據(jù)記錄和交互認(rèn)證。
系統(tǒng)設(shè)計(jì)了一種服務(wù)端結(jié)構(gòu),該服務(wù)端主要包括數(shù)據(jù)庫單元和服務(wù)單元兩種結(jié)構(gòu)。其中數(shù)據(jù)庫單元在數(shù)據(jù)存儲方面起到一定作用,當(dāng)客戶端采集到相關(guān)數(shù)據(jù)后,首先要對原始數(shù)據(jù)進(jìn)行有效標(biāo)記,然后通過哈希對前一塊進(jìn)行加密,從而產(chǎn)生新數(shù)據(jù);服務(wù)單元在服務(wù)部方面起到的主要作用是作為“發(fā)報(bào)機(jī)”,其要求在資料庫中建立一個數(shù)據(jù)指針,每一次都會自動地查看最近的數(shù)據(jù),并從中挑選出最新的數(shù)據(jù),并在拆解后進(jìn)行選擇[16]。
將服務(wù)端與區(qū)塊鏈集群監(jiān)控結(jié)構(gòu)連接起來,使其變成一種具有針對性的服務(wù)結(jié)構(gòu),該服務(wù)以Windows窗口形式進(jìn)行展現(xiàn)。由于服務(wù)端同時會與多個分布式開源監(jiān)控代理客戶機(jī)建立連接,一旦服務(wù)端開始運(yùn)行就會占用大量資源,影響服務(wù)端與其他端口的通信效率,因此,將其與分布式開源監(jiān)控代理客戶機(jī)相連接,只需傳送待存儲數(shù)據(jù)即可。
根據(jù)海量Web 數(shù)據(jù)關(guān)聯(lián)存儲過程中面臨的安全性問題,計(jì)算系統(tǒng)遭到攻擊的概率,如式(1)所示:
式中,t為初始時間;Δt為時間間隔;pn(t)、pn+1(t) 分別表示在t時刻系統(tǒng)遭到第n、n+1 次攻擊的概率。在沒有遭到攻擊的情況下,為了防止數(shù)據(jù)被篡改、偽造,需要從兩個角度來保證數(shù)據(jù)安全。一是驗(yàn)證動態(tài)數(shù)據(jù)是否正確,從該角度避免存儲的數(shù)據(jù)出現(xiàn)異常數(shù)據(jù);二是跟蹤動態(tài)數(shù)據(jù)操作模式,追溯歷史操作行為,使系統(tǒng)具有一定的復(fù)原功能。
構(gòu)建系統(tǒng)目標(biāo)約束函數(shù)如式(2)所示:
式中,minc(t)表示系統(tǒng)在t時刻的最小運(yùn)行風(fēng)險(xiǎn);Pn(t+Δt)表示滿足安全運(yùn)行條件下,在t+Δt時間范圍內(nèi)系統(tǒng)遭到攻擊的概率。該計(jì)算結(jié)果用于衡量一段時間內(nèi)系統(tǒng)遭受攻擊的情況,計(jì)算結(jié)果越小,說明系統(tǒng)魯棒性越強(qiáng)。
在已知海量Web 數(shù)據(jù)關(guān)聯(lián)存儲安全問題的情況下,海量Web 數(shù)據(jù)庫的實(shí)體結(jié)構(gòu)越大,系統(tǒng)存儲數(shù)據(jù)也就越多。將消息頭設(shè)置為區(qū)塊鏈報(bào)文前綴,其表示海量Web 數(shù)據(jù)的真實(shí)儲存地點(diǎn)。在很長一段時間內(nèi),數(shù)據(jù)存儲受到關(guān)聯(lián)主機(jī)影響,導(dǎo)致存儲數(shù)據(jù)結(jié)構(gòu)與實(shí)際存儲結(jié)構(gòu)存在一定差異。
設(shè)l表示海量Web 數(shù)據(jù)關(guān)聯(lián)存儲中的原始長度值,由此計(jì)算海量Web 數(shù)據(jù)關(guān)聯(lián)存儲加密結(jié)果,如式(3)所示:
式中,η表示區(qū)塊鏈報(bào)文作用條件;smax表示最大信息輸出量;λ表示對稱密碼編譯系數(shù);α表示與數(shù)據(jù)庫主機(jī)匹配的關(guān)聯(lián)存儲系數(shù)。
對于區(qū)塊鏈報(bào)文可表示為:
對于提交的區(qū)塊鏈報(bào)文,需要驗(yàn)證提交結(jié)果是否合法,判斷公式為:
在區(qū)塊鏈報(bào)文的作用下,通過連接存儲對象和系統(tǒng)功能,可在確保安全的前提下實(shí)現(xiàn)對海量Web數(shù)據(jù)的完整存儲。
選擇兩臺網(wǎng)絡(luò)主機(jī)作為Web 數(shù)據(jù)的輸出裝置,分別在IEEE.165.127.5.0 和IEEE.165.127.2.0 協(xié)議網(wǎng)關(guān)影響下,對系統(tǒng)進(jìn)行實(shí)驗(yàn)驗(yàn)證。
以某臺電能表計(jì)量實(shí)際Web 觀測數(shù)據(jù)為例,操作實(shí)例如圖3 所示。
圖3 操作實(shí)例
由圖3 可知,當(dāng)輸入操作指令為1 時,即增加電能表計(jì)量數(shù)據(jù)。在該操作實(shí)例下,客戶端程序以go語言為實(shí)驗(yàn)環(huán)境,經(jīng)過多次轉(zhuǎn)譯,創(chuàng)建存儲參數(shù)表,如表1 所示。
通過上述創(chuàng)建的存儲參數(shù)表,獲取相關(guān)運(yùn)行數(shù)據(jù),如表2 所示。
將表2 中的數(shù)據(jù)作為實(shí)驗(yàn)標(biāo)準(zhǔn)數(shù)據(jù),進(jìn)行實(shí)驗(yàn)對比分析。
表1 存儲參數(shù)創(chuàng)建表
表2 電能表計(jì)量實(shí)際觀測數(shù)據(jù)
以存儲擁塞率為指標(biāo),其計(jì)算公式為:
式中,m表示待存儲數(shù)據(jù)量;L表示存儲通道;P表示排隊(duì)系統(tǒng)中沒有目標(biāo)數(shù)據(jù)的概率。以該計(jì)算結(jié)果為標(biāo)準(zhǔn),數(shù)值越小,說明系統(tǒng)存儲效果越好。
分別使用基于多屬性的存儲系統(tǒng)、基于Kubernetes的存儲系統(tǒng)和基于區(qū)塊鏈技術(shù)存儲系統(tǒng),對比分析數(shù)據(jù)存儲擁塞率,如圖4 所示。
由圖4(a)可知,Kubernetes 存儲系統(tǒng)的擁塞率最高,其次是多屬性存儲系統(tǒng),基于區(qū)塊鏈技術(shù)存儲系統(tǒng)的擁塞率最低,最低值為2%。由圖4(b)可知,Kubernetes 存儲系統(tǒng)的擁塞率最高,最高值為63%;其次是多屬性存儲系統(tǒng),最高值為46%;基于區(qū)塊鏈技術(shù)存儲系統(tǒng)的擁塞率最低,最低值為7%。由圖4(c)可知,雖然使用Kubernetes存儲系統(tǒng)擁塞率最高,但在該功率因數(shù)下變化最大的是多屬性存儲系統(tǒng),而基于區(qū)塊鏈技術(shù)存儲系統(tǒng)擁塞率仍然最低,最低值為7%。
圖4 3種方法電流鑒定誤差對比分析
該文設(shè)計(jì)了基于區(qū)塊鏈技術(shù)的海量Web 數(shù)據(jù)關(guān)聯(lián)存儲系統(tǒng),該系統(tǒng)利用區(qū)塊鏈技術(shù)可以輔助關(guān)聯(lián)存儲系統(tǒng)安全地儲存海量Web 數(shù)據(jù),并且通過使用區(qū)塊鏈的集群監(jiān)控模塊,簡化數(shù)據(jù)關(guān)聯(lián)存儲的同時,避免了大量數(shù)據(jù)被惡意篡改。在后續(xù)研究進(jìn)程中,應(yīng)從存儲時間角度優(yōu)化系統(tǒng),進(jìn)一步縮短系統(tǒng)的存儲時間。