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