王凌宇,傅 宏,楊 云,劉 俊
(1. 國網(wǎng)重慶市電力公司客戶服務(wù)中心,重慶 400000;2. 國網(wǎng)重慶市電力公司,重慶 400014;3. 重慶郵電大學(xué) 軟件工程學(xué)院,重慶 400065)
由于電力系統(tǒng)其本身結(jié)構(gòu)復(fù)雜、設(shè)備眾多,且隨著中國工業(yè)用電與居民用電需求越來越高從而產(chǎn)生海量的電力數(shù)據(jù)[1],如何高效且安全地對TB(trillionbyte)甚至PB(petabyte)級別的電力交互數(shù)據(jù)進(jìn)行存儲成為當(dāng)前電力企業(yè)發(fā)展的一個(gè)重要問題。
目前電力公司數(shù)據(jù)管理平臺多采用關(guān)系型數(shù)據(jù)庫(如Oracle、MySQL等),針對關(guān)系型數(shù)據(jù)庫對海量數(shù)據(jù)的讀寫性能比較差[2-3],宋亞奇等[4]提出了基于Hadoop和HBase的電力設(shè)備采樣數(shù)據(jù)的云存儲方案,實(shí)現(xiàn)了海量數(shù)據(jù)存儲和快速查詢。但是在云存儲環(huán)境中,當(dāng)非法用戶取得對電子記錄的控制權(quán)時(shí),云存儲的數(shù)據(jù)容易復(fù)制和篡改。同時(shí)云存儲服務(wù)器可能會故意刪除電子記錄以節(jié)省成本,從而對電子記錄的所有者造成不可挽回的損害。
針對云存儲存在數(shù)據(jù)丟失、信息安全受限等問題,顏擁等[5]提出將區(qū)塊鏈應(yīng)用到電力行業(yè)場景之中,以區(qū)塊鏈技術(shù)作為電力電子合同安全存儲的底層支撐,實(shí)現(xiàn)電力行業(yè)網(wǎng)中電子合同數(shù)據(jù)的完整性保存。
普通用戶在日常用電的過程中會產(chǎn)生用電數(shù)據(jù)信息,主要包括用戶名稱、用戶地址、電價(jià)電費(fèi)、用戶電量、用戶聯(lián)系信息及受電裝置等。這些信息涉及用戶的個(gè)人隱私,在向企業(yè)提供營銷數(shù)據(jù)信息的同時(shí)需要對其安全性進(jìn)行分析。筆者以區(qū)塊鏈技術(shù)為核心,提出一種基于區(qū)塊鏈技術(shù)的多級加密電力數(shù)據(jù)存儲機(jī)制,相比于傳統(tǒng)的電力數(shù)據(jù)存儲方案,該存儲機(jī)制利用區(qū)塊鏈技術(shù)解決電力的存儲安全問題,同時(shí)結(jié)合分布式存儲技術(shù),解決數(shù)據(jù)不斷增長集中式存儲硬件設(shè)備容量有限的問題,該存儲機(jī)制滿足分布式數(shù)據(jù)庫的高并發(fā)性、高可用性,經(jīng)過實(shí)驗(yàn)證明該存儲方案能夠滿足電力營銷數(shù)據(jù)的安全存儲性能的要求和服務(wù)可靠性的要求。
區(qū)塊鏈?zhǔn)且环N分布式數(shù)據(jù)結(jié)構(gòu),可以在網(wǎng)絡(luò)成員之間進(jìn)行復(fù)制和共享。它被引入比特幣[6]來解決雙重花費(fèi)問題[7]。區(qū)塊鏈?zhǔn)且环N基于分布式計(jì)算和數(shù)據(jù)存儲的新興技術(shù),受密碼學(xué)數(shù)字簽名和分布式共享機(jī)制的組合保護(hù)。即使存在網(wǎng)絡(luò)攻擊和通信中斷的情況下,區(qū)塊鏈系統(tǒng)中的各個(gè)節(jié)點(diǎn)依舊可以達(dá)成區(qū)塊鏈網(wǎng)絡(luò)狀態(tài)的一致性協(xié)議。在區(qū)塊鏈系統(tǒng)中有公有鏈、聯(lián)盟鏈和私有鏈3種類型[8],對比關(guān)系如表1所示。
表1 各區(qū)塊鏈系統(tǒng)類型對比
區(qū)塊鏈技術(shù)的核心優(yōu)勢在于其去中心化中達(dá)成信息的共識。通常可以將區(qū)塊鏈看作一個(gè)日志,它的記錄被處理成時(shí)間戳保存為區(qū)塊,每個(gè)塊由其密碼散列標(biāo)識。其中每個(gè)塊都引用它之前的塊的哈希值。這將在塊之間建立一個(gè)鏈接,從而創(chuàng)建一個(gè)塊鏈或區(qū)塊鏈,如圖1所示。
圖1 區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu)Fig. 1 Blockchain structure
在區(qū)塊鏈網(wǎng)絡(luò)中的任何一個(gè)節(jié)點(diǎn)都可以訪問這條鏈連接的區(qū)塊列表存儲的數(shù)據(jù)[9]。這些節(jié)點(diǎn)形成一個(gè)對等網(wǎng)絡(luò)(peer to peer, P2P),區(qū)塊鏈的交互流程如下:
1)節(jié)點(diǎn)之間交互。節(jié)點(diǎn)通過私鑰/公鑰與區(qū)塊鏈進(jìn)行交互[10]。其中私鑰來進(jìn)行自己的交易,并且可以通過公鑰在網(wǎng)絡(luò)上尋址。區(qū)塊鏈中使用非對稱加密技術(shù)將信息認(rèn)證,數(shù)據(jù)完整性和不可否認(rèn)性帶入到區(qū)塊鏈網(wǎng)絡(luò)。
2)交易驗(yàn)證。區(qū)塊鏈網(wǎng)絡(luò)中的對等節(jié)點(diǎn)對交易進(jìn)行驗(yàn)證,確保這個(gè)進(jìn)入?yún)^(qū)塊鏈中的交易有效,然后再進(jìn)一步轉(zhuǎn)發(fā),進(jìn)行全網(wǎng)的同步,無效的交易會被丟棄。
3)挖礦。挖礦是指在約定的時(shí)間間隔內(nèi),由網(wǎng)絡(luò)使用上述流程收集和驗(yàn)證的事務(wù),且將各事務(wù)進(jìn)行排序并打包成一個(gè)時(shí)間戳成為候選塊的過程。
4)事務(wù)驗(yàn)證。當(dāng)節(jié)點(diǎn)驗(yàn)證的交易包含事務(wù)的有效性,即當(dāng)前的散列引用其鏈上的前一個(gè)區(qū)塊的散列值時(shí),他們會將區(qū)塊添加到其鏈中,否則丟棄該候選的區(qū)塊。
區(qū)塊鏈應(yīng)用程序?yàn)楦鞣N場景提供了應(yīng)用程序接口(API)。用戶通過這些API與他們直接交互,而不必?fù)?dān)心底層的技術(shù)細(xì)節(jié)。通常在區(qū)塊鏈應(yīng)用中把它作為一個(gè)附加的數(shù)據(jù)庫,由對等網(wǎng)絡(luò)節(jié)點(diǎn)維護(hù)[11]。在區(qū)塊鏈系統(tǒng)中,任何節(jié)點(diǎn)都可以簽署和發(fā)布事務(wù),如果它們被驗(yàn)證通過則加入到新的區(qū)塊中。區(qū)塊鏈系統(tǒng)中的節(jié)點(diǎn)將隨時(shí)檢查其分散網(wǎng)絡(luò)中的其他節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都可以加入?yún)f(xié)商過程,將新的區(qū)塊擴(kuò)展到區(qū)塊鏈中。區(qū)塊鏈中數(shù)據(jù)具有防篡改特性,在新區(qū)塊生成過程中需要其他節(jié)點(diǎn)的驗(yàn)證,因此在全局賬本中記錄的所有有效的區(qū)塊和交易實(shí)際上都是不可變的。此外,整個(gè)全局賬本在區(qū)塊鏈節(jié)點(diǎn)之間按照協(xié)商一致的機(jī)制進(jìn)行同步[12],使區(qū)塊鏈上存儲的數(shù)據(jù)真實(shí)性和準(zhǔn)確性有了更大的保障。
區(qū)塊鏈中的每個(gè)區(qū)塊包含區(qū)塊頭和區(qū)塊體兩個(gè)部分[13]。區(qū)塊頭主要用于構(gòu)成區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu),主要有前一個(gè)區(qū)塊哈希值(prev hash)、時(shí)間戳(timestamp)、隨機(jī)數(shù)(nonce)和交易的根哈希(root hash)組成,其中目標(biāo)區(qū)塊的哈希值由前一個(gè)區(qū)塊的哈希值和隨機(jī)數(shù)生成,根哈希用于驗(yàn)證交易的真實(shí)性使得交易不可偽造[13]。區(qū)塊中的區(qū)塊體部分主要存儲交易數(shù)據(jù),交易數(shù)據(jù)的結(jié)構(gòu)由區(qū)塊鏈系統(tǒng)支持的功能所決定。
區(qū)塊鏈?zhǔn)腔诮灰椎南到y(tǒng)[8],在區(qū)塊鏈系統(tǒng)中存在大量的交易數(shù)據(jù),這些交易數(shù)據(jù)存儲結(jié)構(gòu)為Merkle樹。Merkle樹的數(shù)據(jù)結(jié)構(gòu)可以是二叉樹也可以是n叉樹,在比特幣中使用的是二叉樹結(jié)構(gòu)[14],如圖2所示。Merkle樹需要大量數(shù)據(jù),將其壓縮為一個(gè)簡單的字符串,可以證明Merkle 樹所保存數(shù)據(jù)的真實(shí)性,而無須透露原始數(shù)據(jù)[15]。Merkle樹采用自底向上方式構(gòu)建,在區(qū)塊鏈中葉節(jié)點(diǎn)為基礎(chǔ)交易數(shù)據(jù),每個(gè)中間節(jié)點(diǎn)是它的子節(jié)點(diǎn)的哈希,根節(jié)點(diǎn)是根哈希。在Merkle樹結(jié)構(gòu)中如果根據(jù)某種標(biāo)準(zhǔn)正確命名,則用戶可以識別內(nèi)容,而無須解壓縮并打開包含的文件。不同的區(qū)塊鏈系統(tǒng)在數(shù)據(jù)存儲結(jié)構(gòu)上有所不同,主要在根哈希結(jié)構(gòu)、根哈希數(shù)量和存儲編碼等方面,典型的區(qū)塊鏈存儲結(jié)構(gòu)對比如表2所示。
圖2 Merkle樹Fig. 2 Merkle tree
表2 典型區(qū)塊鏈存儲結(jié)構(gòu)對比
當(dāng)前主流的區(qū)塊鏈系統(tǒng)對區(qū)塊頭采用數(shù)據(jù)文件方式進(jìn)行存儲,對區(qū)塊體及元數(shù)據(jù)主要使用Key-Value的形式進(jìn)行數(shù)據(jù)存儲。區(qū)塊鏈系統(tǒng)的數(shù)據(jù)庫主要基于Key-Value的LevelDB 數(shù)據(jù)庫,以此為代表的主要為以太坊和比特幣,而超級賬本Fabric的數(shù)據(jù)可以在轉(zhuǎn)換成Json格式后選擇存儲在LevelDB或CouchDB之中。其他基于區(qū)塊鏈的存儲系統(tǒng),如Storj、Filecoin、BigchainDB 等系統(tǒng)也均采用了LevelDB或MongoDB等基于鍵值模型的數(shù)據(jù)庫系統(tǒng)存儲元數(shù)據(jù)信息[16]。
區(qū)塊鏈系統(tǒng)中,不僅要存儲區(qū)塊頭和區(qū)塊體的數(shù)據(jù),還需要根據(jù)功能設(shè)計(jì)管理狀態(tài)數(shù)據(jù)、索引數(shù)據(jù)和元信息等數(shù)據(jù),因此在數(shù)據(jù)組織方式上也具有較大的差異,主要的區(qū)塊鏈系統(tǒng)存儲組織對比如表3所示。
表3 典型區(qū)塊鏈系統(tǒng)存儲對比
將區(qū)塊鏈應(yīng)用到電力行業(yè)電力營銷數(shù)據(jù)存儲的場景之中,提出基于區(qū)塊鏈技術(shù)的電力營銷數(shù)據(jù)存儲模型,該模型具有2個(gè)數(shù)據(jù)庫,其中1個(gè)為分布式存儲數(shù)據(jù)庫和聯(lián)盟區(qū)塊鏈,分布式存儲數(shù)據(jù)庫為區(qū)塊鏈提供存儲服務(wù),區(qū)塊鏈為分布式存儲數(shù)據(jù)庫提供系統(tǒng)安全支撐,存儲架構(gòu)如圖3所示。
圖3 基于區(qū)塊鏈的電力營銷數(shù)據(jù)的分布式存儲架構(gòu)Fig. 3 Distributed storage architecture of power marketing data based on blockchain
基于區(qū)塊鏈的多級加密電力數(shù)據(jù)存儲主要包括電力營銷數(shù)據(jù)的分布式存儲服務(wù)和電力營銷數(shù)據(jù)的多級加密服務(wù)兩部分。其中基于區(qū)塊鏈的電力數(shù)據(jù)分布式存儲主要包括以下流程,首先智能電網(wǎng)設(shè)備或用戶向本存儲系統(tǒng)發(fā)出存儲資源節(jié)點(diǎn)的請求,然后由本系統(tǒng)中的分布式存儲節(jié)點(diǎn)提供存儲服務(wù),在存儲服務(wù)完成后需要在區(qū)塊鏈上登記存儲記錄,最后由智能電網(wǎng)設(shè)備或用戶評價(jià)存儲服務(wù)。
第1步,智能電網(wǎng)設(shè)備或用戶向基于區(qū)塊鏈的多級加密電力數(shù)據(jù)存儲系統(tǒng)發(fā)送存儲請求,需要在分布式存儲節(jié)點(diǎn)中選擇某個(gè)在線的存儲節(jié)點(diǎn)作為存儲服務(wù)的對象。在基于區(qū)塊鏈的電力營銷數(shù)據(jù)存儲系統(tǒng)中設(shè)定一旦終端發(fā)送請求,在60 s內(nèi)不能再選擇其他存儲節(jié)點(diǎn)發(fā)送存儲請求,且收到存儲節(jié)點(diǎn)的確認(rèn)后,直接傳送存儲數(shù)據(jù)。
第2步,當(dāng)在線存儲節(jié)點(diǎn)收到存儲請求時(shí)需要為請求節(jié)點(diǎn)提供存儲服務(wù),且按請求節(jié)點(diǎn)請求時(shí)間的先后順序回復(fù)節(jié)點(diǎn)。當(dāng)智能電網(wǎng)設(shè)備或者用戶收到存儲節(jié)點(diǎn)的確認(rèn)消息后,即向存儲節(jié)點(diǎn)傳輸電力數(shù)據(jù)。
第3步,存儲記錄信息上鏈,在存儲節(jié)點(diǎn)完成響應(yīng)請求的存儲服務(wù)之后,存儲節(jié)點(diǎn)將存儲記錄信息傳輸?shù)絽^(qū)塊鏈上。最后由智能電網(wǎng)設(shè)備或用戶評價(jià)此次存儲服務(wù),評價(jià)信息作為存儲節(jié)點(diǎn)的信用分,可根據(jù)該信用分評判該存儲節(jié)點(diǎn)的存儲性能。
在基于區(qū)塊鏈的電力營銷數(shù)據(jù)存儲機(jī)制中提出一種基于數(shù)據(jù)分割的多級加密機(jī)制以保護(hù)電力營銷數(shù)據(jù)的安全性和隱私性。使用多級加密機(jī)制與分布式存儲相結(jié)合可以很好地解決數(shù)據(jù)分割的使用場景,可有效提高系統(tǒng)效率,該多級加密機(jī)制支持電力數(shù)據(jù)上鏈、電力數(shù)據(jù)傳輸、智能合約調(diào)用等流程的逐級加密及驗(yàn)證,多級加密機(jī)制流程如圖4所示。
圖4 多級加密機(jī)制Fig. 4 Multi-level encryption mechanism
在本文中所提出的多級加密機(jī)制主要由以下組成:身份認(rèn)證模塊、數(shù)據(jù)加密上鏈模塊、上鏈數(shù)據(jù)哈希提取模塊、加密通信模塊。在身份認(rèn)證模塊中使用RSA算法生成公私鑰,公鑰可對用戶電力營銷數(shù)據(jù)加密,用作數(shù)據(jù)隱私保護(hù),私鑰用作智能電網(wǎng)設(shè)備或用戶簽名。為了提高系統(tǒng)效率同時(shí)減少密鑰管理難度采用密鑰長度為128 bit RSA加密算法,具體算法流程如圖5所示。
RSA加密算法密鑰生成:選擇兩個(gè)質(zhì)數(shù)p和q計(jì)算p和q的乘積n=p×q計(jì)算n的歐拉函數(shù)φ(n)=(p-1)(q-1)隨機(jī)選擇一個(gè)整數(shù)e,滿足1< e < φ(n),且e與φ(n)互為質(zhì)數(shù)計(jì)算e對于φ(n)的模反元素d將n和e封裝成公鑰,n和d封裝成私鑰加密利用公鑰(n,e)對明文M進(jìn)行加密:c=Memod n解密利用私鑰(n,d)對密文進(jìn)行解密:M=Cdmod n
數(shù)據(jù)加密模塊采用密鑰長度為192 bit的非對稱加密算法AES完成數(shù)據(jù)加密,從而實(shí)現(xiàn)電力營銷數(shù)據(jù)的安全存儲機(jī)制。AES加密密鑰由智能電力設(shè)備或用戶口令通過Hash方式生成。在數(shù)據(jù)解密時(shí),必須獲取密文對應(yīng)的密鑰來對密文進(jìn)行解密。上鏈數(shù)據(jù)哈希提取模塊主要采用當(dāng)前主流的Hash函數(shù)SHA-2/SHA-3,哈希算法將任意長度的二進(jìn)制值映射為固定長度的二進(jìn)制值,Hash函數(shù)已經(jīng)廣泛應(yīng)用對當(dāng)前生活的各個(gè)領(lǐng)域。在通信過程中使用TLS協(xié)議棧防止惡意用戶非法截取通信數(shù)據(jù)。
使用傳統(tǒng)集中式存儲機(jī)制與提出的基于區(qū)塊鏈的多級加密分布式存儲機(jī)制延遲情況對比如圖6所示,圖6(a)為延遲與接入設(shè)備數(shù)量之間的關(guān)系,圖6(b)為延遲與存儲服務(wù)數(shù)量之間的關(guān)系。由圖可知,當(dāng)隨著連接的設(shè)備數(shù)量與存儲服務(wù)數(shù)量增加時(shí),存儲的延遲會增加,但是所提出的基于區(qū)塊鏈的多級加密分布式存儲機(jī)制延遲情況均要優(yōu)于傳統(tǒng)的集中式存儲。
圖6 兩種存儲機(jī)制的延遲對比Fig. 6 Delay comparison of two storage mechanisms
存儲系統(tǒng)的吞吐量為單位時(shí)間內(nèi)存儲信息的量,是衡量存儲系統(tǒng)的性能標(biāo)準(zhǔn)之一,將傳統(tǒng)的集中式存儲機(jī)制與基于區(qū)塊鏈的存儲機(jī)制進(jìn)行對比,使用電力營銷數(shù)據(jù)作為存儲服務(wù),結(jié)果如圖7所示。與傳統(tǒng)的存儲機(jī)制相比,所提出的存儲方案具有較高的吞吐量,實(shí)現(xiàn)了存儲效率的改進(jìn)。圖8為文件大小與系統(tǒng)響應(yīng)時(shí)間的對比,結(jié)果表明,在小文件存儲過程中響應(yīng)速率相差不大,但是在大文件存儲時(shí)所提出的存儲方案具有更快的響應(yīng)速度,滿足電力大數(shù)據(jù)的存儲效率需求。
圖7 系統(tǒng)吞吐量變化對比Fig. 7 Comparison of system throughput changes
圖8 響應(yīng)時(shí)間與文件大小關(guān)系對比Fig. 8 Comparison of response time and file size
目前針對數(shù)據(jù)的安全防護(hù)技術(shù)有加密和脫敏2種方法,數(shù)據(jù)加密是通過使用加密算法對原始數(shù)據(jù)進(jìn)行加密,以密文的形式進(jìn)行數(shù)據(jù)存儲,適用于數(shù)據(jù)安全存儲,而數(shù)據(jù)脫敏是通過使用脫敏算法對原始數(shù)據(jù)信息進(jìn)行變形,適用于數(shù)據(jù)安全保護(hù)。通過使用AES與RSA加密算法對原始的電力營銷數(shù)據(jù)進(jìn)行加密,使數(shù)據(jù)以密文的形式進(jìn)行傳輸與存儲,更有效地對電力營銷數(shù)據(jù)進(jìn)行保護(hù)。
實(shí)驗(yàn)表明所提出的基于區(qū)塊鏈的多級加密電力營銷數(shù)據(jù)存儲機(jī)制能夠提供存儲穩(wěn)定性高、更安全、可靠的存儲性能,但是在該系統(tǒng)中由于采用分布式數(shù)據(jù)庫存儲電力營銷數(shù)據(jù),需要考慮數(shù)據(jù)完整性。數(shù)據(jù)完整性是指存儲提供方嚴(yán)格按照用戶的要求存儲數(shù)據(jù),存儲的文件不能丟失,使用時(shí)用戶的文件沒有被偽造或篡改的情況發(fā)生[17]。這里通過采用抽樣的策略對存儲在分布式數(shù)據(jù)庫中的數(shù)據(jù)文件進(jìn)行完整性分析。通常數(shù)據(jù)完整性證明有Setup和Challenge兩個(gè)階段,具體流程如下。
Setup階段:
1)隨機(jī)選取一個(gè)范德蒙矩陣A作為散布矩陣,經(jīng)過一系列初等變化后,A=[I/P],生成挑戰(zhàn)密鑰kchal和置換密鑰KPRP。
2)生成編碼文件
G=F·A={G1,…,Gm,Gm+1,…,Gn},
(1)
制動(dòng)屏在機(jī)車正常操作時(shí),實(shí)時(shí)顯示了均衡風(fēng)缸、制動(dòng)管、總風(fēng)缸和制動(dòng)缸的壓力值,也實(shí)時(shí)顯示制動(dòng)管充風(fēng)流量和空氣制動(dòng)模式的當(dāng)前狀況。如圖2所示。
3)生成驗(yàn)證元數(shù)據(jù):為每個(gè)服務(wù)器j∈[1,2,…,n],預(yù)選生成t個(gè)驗(yàn)證元數(shù)據(jù),每個(gè)標(biāo)簽i由式(2)計(jì)算得來:
(2)
Challenge階段:
3)接收到響應(yīng)集合后,去除冗余信息的屏蔽值
(3)
根據(jù)本地存儲的和P,判斷式(4)是否成立:
(4)
如果等式成立則文件是完整未損壞的。
4)不成立,繼續(xù)比較
如果仍不相等表明服務(wù)器j上的文件已損壞。
針對傳統(tǒng)的集中式數(shù)據(jù)存儲模式無法滿足電力業(yè)務(wù)數(shù)據(jù)存儲所要求的安全性、低延遲和擴(kuò)展性問題,提出了一種基于區(qū)塊鏈的多級加密電力數(shù)據(jù)存儲架構(gòu)。該存儲機(jī)制具有存儲穩(wěn)定性高、安全可靠、數(shù)據(jù)可追溯、可審計(jì)及可擴(kuò)展等諸多優(yōu)勢,同時(shí)提出的多級加密機(jī)制支持電力數(shù)據(jù)上鏈、電力數(shù)據(jù)傳輸?shù)攘鞒痰闹鸺壖用芗膀?yàn)證,使得電力數(shù)據(jù)存儲與數(shù)據(jù)訪問的安全性得到進(jìn)一步的保證。通過實(shí)驗(yàn)證明,相比于傳統(tǒng)的集中式電力數(shù)據(jù)存儲機(jī)制,所提出的電力數(shù)據(jù)存儲機(jī)制延遲更低,吞吐量更高和響應(yīng)時(shí)間更低能夠滿足電力營銷數(shù)據(jù)存儲的穩(wěn)定性和安全性要求。