蔡璽,張文軒
(甘肅同興智能科技發(fā)展有限責(zé)任公司,甘肅蘭州 730000)
電力行業(yè)日志數(shù)據(jù)存儲(chǔ)的主要結(jié)構(gòu)特征是集中式部署和分布式應(yīng)用,這一方式為核心網(wǎng)絡(luò)帶來了巨大的通信壓力,造成了端到端的數(shù)據(jù)存儲(chǔ)時(shí)間增長(zhǎng)。隨著智能電網(wǎng)、新型電力設(shè)備的不斷更新以及電網(wǎng)信息化的不斷發(fā)展,電力系統(tǒng)分布式計(jì)量已經(jīng)成為電力系統(tǒng)的一種重要手段。為了安全、可靠、高效地存儲(chǔ)和分享電力數(shù)據(jù),相關(guān)的電網(wǎng)數(shù)據(jù)存儲(chǔ)方法引起了學(xué)者的重視和研究。文獻(xiàn)[1]提出了基于預(yù)分區(qū)策略的存儲(chǔ)方法,該方法首先構(gòu)建了電網(wǎng)數(shù)據(jù)存儲(chǔ)模型,該模型在預(yù)分區(qū)機(jī)制下結(jié)合數(shù)據(jù)快速存儲(chǔ)方法,將負(fù)載均衡存儲(chǔ)到數(shù)據(jù)庫(kù)中;文獻(xiàn)[2]提出了基于K-距離拓?fù)涞拇鎯?chǔ)方法,該方法通過尋找K-距離拓?fù)渥咏Y(jié)構(gòu)來實(shí)現(xiàn)數(shù)據(jù)的安全存儲(chǔ),優(yōu)先選擇距離最近的節(jié)點(diǎn),結(jié)合K-距離計(jì)算實(shí)現(xiàn)總體存儲(chǔ)性能的提升。上述兩種方法使用過程中,存在數(shù)據(jù)存儲(chǔ)過程容易被外界入侵的風(fēng)險(xiǎn),因此,提出了電網(wǎng)區(qū)塊鏈多層次日志數(shù)據(jù)分布式存儲(chǔ)方法。
區(qū)塊鏈技術(shù)是將一種數(shù)據(jù)區(qū)塊按照時(shí)間順序依次相連的結(jié)構(gòu),結(jié)合加密算法來保證數(shù)據(jù)分布式存儲(chǔ)的安全。因此,在數(shù)據(jù)存儲(chǔ)和點(diǎn)對(duì)點(diǎn)傳送方面,通過共識(shí)機(jī)制使各個(gè)區(qū)塊結(jié)構(gòu)達(dá)到一致性[3-4]?;谠撛順?gòu)建的分布式存儲(chǔ)模型如圖1 所示。
由圖1 可知,該模型主要用于對(duì)存儲(chǔ)的告警日志進(jìn)行加密,并利用報(bào)警記錄對(duì)存儲(chǔ)的結(jié)果進(jìn)行校驗(yàn)[5-6]。將本地告警日志轉(zhuǎn)入到區(qū)塊鏈上,將存儲(chǔ)系統(tǒng)與區(qū)塊鏈技術(shù)相結(jié)合,將報(bào)警記錄存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中,然后通過關(guān)鍵字進(jìn)行查詢,從而實(shí)現(xiàn)了對(duì)日志數(shù)據(jù)的安全存儲(chǔ)。
以電網(wǎng)公司為核心的區(qū)塊鏈結(jié)構(gòu)模式,當(dāng)電網(wǎng)節(jié)點(diǎn)加入?yún)^(qū)塊鏈之后,它就會(huì)生成一種加密的密鑰,并將其發(fā)送給電網(wǎng)公司用于儲(chǔ)存。
將日志數(shù)據(jù)采集節(jié)點(diǎn)預(yù)先發(fā)送給采集基站,該基站的第i個(gè)數(shù)據(jù)采集節(jié)點(diǎn)Ki通過無線通信向多個(gè)基站傳輸數(shù)據(jù),可表示為:
2.2.1 源地址對(duì)目的地址威脅程度分析
將多層次日志數(shù)據(jù)分布式寫入到客戶端,計(jì)算日志數(shù)據(jù)對(duì)目的主機(jī)造成的威脅程度的公式為:
公式(2)中,N表示第N次告警;ωi表示告警權(quán)重;ni表示告警出現(xiàn)的次數(shù)[12]。在相同的警報(bào)系統(tǒng)中,統(tǒng)計(jì)不同級(jí)別的報(bào)警次數(shù),并將其轉(zhuǎn)換成統(tǒng)一格式,從而得到相同警報(bào)系統(tǒng)中,源地址對(duì)目標(biāo)的威脅程度[13]。
2.2.2 區(qū)塊鏈密文索引結(jié)構(gòu)構(gòu)建
通過對(duì)報(bào)警數(shù)據(jù)的預(yù)處理,提取出具有重要意義的數(shù)據(jù)屬性,組成告警向量,并通過日志索引構(gòu)建一個(gè)文件,從而形成該文件的索引結(jié)構(gòu),如圖2所示。
圖2 密文索引結(jié)構(gòu)
將日志元數(shù)據(jù)、日志索引結(jié)構(gòu)、日志對(duì)稱密鑰和日志上傳方的身份認(rèn)證信息一起打包,并將打包數(shù)據(jù)傳輸至區(qū)塊鏈節(jié)點(diǎn)。
2.2.3 數(shù)據(jù)加密處理
在區(qū)塊鏈中,所有的有效操作都會(huì)被記錄在一個(gè)以分享為載體的區(qū)塊上。在該區(qū)塊上使用隱私加密保護(hù)機(jī)制,利用共享技術(shù)實(shí)現(xiàn)了網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)交換[14]。在這種基礎(chǔ)上,設(shè)計(jì)一種加密方法,即抽取數(shù)據(jù)中的密鑰,并利用數(shù)據(jù)查詢的私有密鑰對(duì)其進(jìn)行加密,從而生成一種密碼:
公式(3)中,SCi表示區(qū)塊鏈中每個(gè)節(jié)點(diǎn)都對(duì)應(yīng)的私鑰。將密文存儲(chǔ)到數(shù)據(jù)庫(kù)中,并使用哈希函數(shù)映射到關(guān)鍵字過濾器中,由此得到密文存儲(chǔ)位置:
公式(4)中,Wi表示映射位置,H(·)表示映射函數(shù)。將密文存儲(chǔ)位置傳送到區(qū)塊鏈中,方便數(shù)據(jù)安全存儲(chǔ)。
2.2.4 基于PoW共識(shí)算法的數(shù)據(jù)安全存儲(chǔ)
在收到密碼驗(yàn)證信息后,將由區(qū)塊鏈節(jié)點(diǎn)進(jìn)行解密,獲取身份信息[15]。在確認(rèn)日志上的身份信息后,將記錄元數(shù)據(jù)存儲(chǔ)到區(qū)塊中,由此構(gòu)建的索引結(jié)構(gòu)便于找到告警記錄。同時(shí)將記錄對(duì)稱密鑰存儲(chǔ)在區(qū)塊中,完成搜索后,將其提交給日志分析員,利用PoW 一致性算法競(jìng)爭(zhēng)區(qū)塊生成權(quán)限[16]。由于PoW 一致性算法總是選擇最長(zhǎng)的鏈路,所以攻擊者要使用雙重攻擊,其偽造的區(qū)塊鏈長(zhǎng)度必須比真實(shí)區(qū)塊更長(zhǎng)。因?yàn)楣粽弑仨氁谡鎸?shí)交易得到確認(rèn)后,才能展開攻擊,而交易確認(rèn)通常需要若干個(gè)區(qū)塊。所以假設(shè)攻擊開始時(shí),攻擊區(qū)塊落后真實(shí)區(qū)塊h個(gè),這種假設(shè)是合理的。那么有:
當(dāng)攻擊方的運(yùn)算量不比受信任節(jié)點(diǎn)低時(shí),攻擊方就會(huì)獲得成功;當(dāng)攻擊方的運(yùn)算能力低于受信任節(jié)點(diǎn)時(shí),攻擊者的攻擊成功率會(huì)以指數(shù)形式遞減。在此過程中,獲授權(quán)的節(jié)點(diǎn)會(huì)將新的區(qū)塊與其所維護(hù)的區(qū)塊鏈相關(guān)聯(lián),并對(duì)該區(qū)塊的索引進(jìn)行更新,以實(shí)現(xiàn)對(duì)該區(qū)塊數(shù)據(jù)的分布式存儲(chǔ)。
在特定容忍范圍內(nèi),區(qū)塊鏈具有一定不可篡改和不可復(fù)制性。為了確保數(shù)據(jù)的真實(shí)性、可靠性和完整性,采用了密碼學(xué)算法。數(shù)據(jù)的發(fā)送端簽署了一個(gè)散列值,并完成了數(shù)據(jù)區(qū)塊共識(shí)。
假設(shè)數(shù)據(jù)區(qū)塊共識(shí)過程中存在m個(gè)節(jié)點(diǎn),則使用區(qū)塊鏈技術(shù)提供的容錯(cuò)能力為:
公式(6)中,m表示惡意節(jié)點(diǎn)個(gè)數(shù)。在共識(shí)過程中失效節(jié)點(diǎn)不超過全部節(jié)點(diǎn)的。為了證明數(shù)據(jù)分布式存儲(chǔ)的安全性,將全部節(jié)點(diǎn)分成三部分:
公式(7)中,a1、a2均表示可信節(jié)點(diǎn)集合;S表示惡意節(jié)點(diǎn)組成的集合。如果惡意節(jié)點(diǎn)要破壞一致進(jìn)程,就必須嘗試修改電網(wǎng)實(shí)際運(yùn)行狀態(tài),即便是出現(xiàn)了“分叉”,也會(huì)偽造一個(gè)區(qū)塊鏈。如果一個(gè)惡意節(jié)點(diǎn)希望“分叉”,則其會(huì)與受信任的節(jié)點(diǎn)達(dá)成一致,然后發(fā)布一個(gè)新的區(qū)塊。在不通知被信任的節(jié)點(diǎn)前提下,與其進(jìn)行二次協(xié)商,從而取消和信任節(jié)點(diǎn)之間的一致性。為了撤銷與可信節(jié)點(diǎn)的共識(shí),必須符合公式(8)的條件:
通過上述公式,使得電網(wǎng)區(qū)塊鏈多層次日志數(shù)據(jù)在分布式存儲(chǔ)過程中,惡意節(jié)點(diǎn)數(shù)量達(dá)到了最小值,因此該方法在共識(shí)過程中能夠起到有效阻止惡意破壞的目的,避免數(shù)據(jù)庫(kù)中出現(xiàn)虛假?gòu)V播惡意數(shù)據(jù)。
為了驗(yàn)證基于區(qū)塊鏈技術(shù)存儲(chǔ)日志數(shù)據(jù)的合理性,部署了3 臺(tái)裝有官方客戶端的服務(wù)器,并在該服務(wù)器上部署區(qū)塊鏈節(jié)點(diǎn)。選擇我國(guó)某地區(qū)電網(wǎng)有限責(zé)任公司的2019 年-2021 年碼表記錄作為實(shí)驗(yàn)數(shù)據(jù),由此完成實(shí)驗(yàn)?zāi)M系統(tǒng)的搭建。
客戶機(jī)節(jié)點(diǎn)向IPFS 請(qǐng)求發(fā)送電力數(shù)據(jù),IPFS 會(huì)將該數(shù)據(jù)散列值作為IPFS 的唯一標(biāo)識(shí),它的主要存取碼和功能顯示如下:
Func (Power grid) query(The client node issues a request for uploading electrical energy data to the whole block chain)peer.
{
fmt.Write formatted output“(/n”)
fmt.The federation chain node requests to invoke the keyword“(node name/n”)
fmt.The federation chain node requests to invoke the keyword“(Hash ID/n”)
Return shim.Success(nil)
}
客戶端節(jié)點(diǎn)發(fā)送電力數(shù)據(jù)下載請(qǐng)求,由聯(lián)盟節(jié)點(diǎn)請(qǐng)求調(diào)用密鑰,以散列值和信息類型作為輸入。在各個(gè)節(jié)點(diǎn)達(dá)成共識(shí)后,將智能合同的執(zhí)行情況寫入到一個(gè)區(qū)塊鏈賬簿中,并將其反饋到采集節(jié)點(diǎn)中,以存儲(chǔ)客戶的數(shù)據(jù)。
在00:00-24:00 訪問過程中,每隔4 h 采集一次數(shù)據(jù),得到如下三種日志數(shù)據(jù):
種類1:在交流混合配電網(wǎng)中,交流電壓在220 kV以上,直流電壓在300 kV 以上,此時(shí)得到的功率數(shù)據(jù)為:70 kW、90 kW、110 kW、95 kW、75 kW、60 kW。
種類2:在交流混合配電網(wǎng)中,交流電壓在110 kV以上,直流電壓在200 kV 以上,此時(shí)得到的功率數(shù)據(jù)為:40 kW、60 kW、80 kW、65 kW、60 kW、35 kW。
種類3:在交流混合配電網(wǎng)中,交流電壓在110 kV以上,直流電壓在50 kV 以上,此時(shí)得到的功率數(shù)據(jù)為:20 kW、45 kW、70 kW、50 kW、40 kW、25 kW。
在數(shù)據(jù)采集過程中發(fā)現(xiàn),電網(wǎng)產(chǎn)生數(shù)據(jù)的高峰期在每天08:00-12:00。
對(duì)于日志數(shù)據(jù)存儲(chǔ)的完整性校驗(yàn),設(shè)定了如下實(shí)驗(yàn)指標(biāo):
公式(9)中,α表示隨機(jī)數(shù);χ表示密鑰參數(shù);n表示需要待存儲(chǔ)的分塊參數(shù);j表示表示參數(shù)分塊數(shù)量。將該公式計(jì)算結(jié)果發(fā)送給實(shí)驗(yàn)?zāi)M系統(tǒng),當(dāng)系統(tǒng)接收到應(yīng)答信息后,將其與預(yù)先設(shè)定的閾值D′進(jìn)行對(duì)比。如果D=D′,則說明數(shù)據(jù)存儲(chǔ)完整,反之則不完整。
將基于預(yù)分區(qū)策略的存儲(chǔ)方法、基于K-距離拓?fù)涞拇鎯?chǔ)方法作為所提方法的對(duì)照方法,分別利用三種方法存儲(chǔ)上述三種日志數(shù)據(jù),并驗(yàn)證對(duì)應(yīng)方法的存儲(chǔ)完整性,即存儲(chǔ)的數(shù)據(jù)是否與實(shí)際數(shù)據(jù)一致,如圖3 所示。
圖3 三種方法存儲(chǔ)數(shù)據(jù)對(duì)比分析
由圖3 可知,對(duì)于種類1:使用基于預(yù)分區(qū)策略的存儲(chǔ)方法、基于K-距離拓?fù)涞拇鎯?chǔ)方法在00:00-24:00 期間,與實(shí)際功率數(shù)據(jù)分別存在25~35 kW 的誤差。所提方法在00:00-24:00 期間,與實(shí)際功率數(shù)據(jù)一致;對(duì)于種類2:使用基于預(yù)分區(qū)策略的存儲(chǔ)方法、基于K-距離拓?fù)涞拇鎯?chǔ)方法在00:00-24:00 期間,與實(shí)際功率數(shù)據(jù)分別存在9~17 kW 的誤差。所提方法在00:00-24:00 期間,與實(shí)際功率數(shù)據(jù)一致;對(duì)于種類3:使用基于預(yù)分區(qū)策略的存儲(chǔ)方法、基于K-距離拓?fù)涞拇鎯?chǔ)方法在00:00-24:00 期間,與實(shí)際功率數(shù)據(jù)均存在25 kW 的誤差。所提方法在00:00-24:00 期間,與實(shí)際功率數(shù)據(jù)存在最大為2 kW 的誤差。綜合數(shù)據(jù)結(jié)果可知,所提方法存儲(chǔ)的數(shù)據(jù)與實(shí)際數(shù)據(jù)基本一致,說明使用該方法存儲(chǔ)結(jié)果具有完整性。
針對(duì)電網(wǎng)日志數(shù)據(jù)存儲(chǔ)結(jié)果不完整的問題,提出了電網(wǎng)區(qū)塊鏈多層次日志數(shù)據(jù)分布式存儲(chǔ)方法。實(shí)驗(yàn)結(jié)果表明,使用區(qū)塊鏈技術(shù)分布式存儲(chǔ)電網(wǎng)日志數(shù)據(jù)方法有效解決了存儲(chǔ)不完整問題,并結(jié)合加密算法實(shí)現(xiàn)了日志數(shù)據(jù)加密存儲(chǔ)。