張利華,曹 宇,張贛哲,黃 陽,陳世宏
(1.華東交通大學軟件學院,南昌 330013;2.華東交通大學電氣與自動化工程學院,南昌 330013)
隨著分布式清潔能源相關技術的日趨成熟完善,推動分布式能源系統在整個能源系統中占比、提高新能源滲透率成為未來世界能源技術的重要發展方向[1]。但由于傳統微電網的集中運營管理方式需要通過第三方平臺進行數據交換,數據存在被第三方平臺復制、保存甚至倒賣等風險,數據資產得不到有效保障,泄露風險高[2]。此外,隨著新能源的并網,還給微電網帶來諸多挑戰:由于智能電表記錄的用戶數據過于詳細,并且其雙向通信信道并不安全,一旦被攻擊者破獲,攻擊者就會根據用戶的實時用電數據推測并分析用戶的日常作息規律,實施盜竊等犯罪行為,給用戶造成難以估計的損失[3];普通用戶很難獲悉智能電表采集的用電數據,另外,科研人員可以利用這些數據進行科學研究,并為供電局每個季度的供電提供參考性意見,提高能源利用率,因此,這些數據擁有巨大的科研價值,但由于信息不透明、數據共享困難造成了數據資源的浪費和“信息孤島”現象[4];當前微網的這種集中式運營管理方式已經不再適合大規模分布式能源并網,為適應分布式能源的接入并保障數據的安全,微電網的這種集中運營管理方式需要改變[5-6]。
針對以上微電網存在的問題,本文將區塊鏈技術應用于能源數據共享領域,設計一種基于區塊鏈的微電網數據安全共享方案。采用改進的ElGamal加密算法對采集的數據進行加密[7],通過對指數2k進制化,減少迭代次數,提高運行速度,并將打包好的數據區塊對外廣播,發起共識。在共識階段,采用積分取代傳統代幣進行流通[8],規避金融風險,待共識達成后,將數據包存儲在鏈下分布式數據庫中,并將其存儲地址返回至鏈上進行存儲[9],實現數據的分布式存儲,以解決區塊鏈的存儲難題,提高數據共享效率。同時,為解決傳統權益證明(Proof of Stake,PoS)共識機制容易分叉的問題,對PoS 進行改進,節點在競爭記賬權前要抵押部分積分,節點需定期檢查最新區塊,以防止其分叉。
對于未涉及區塊鏈技術的能源共享數據研究,文獻[10]提出一個基于云的能源管理系統,由于異常檢測技術的不足,會使網絡和協議變得十分脆弱,系統可能會遭受攻擊導致數據泄露、硬件損壞甚至斷電,針對這些攻擊,該方案也提出了應對措施,但這些措施僅停留在理論層面,并不能完全保證該系統可以抵御攻擊;文獻[11]提出一種基于密文策略屬性的簽名加密方案,該方案部分解密過程由第三方服務器完成,系統安全性依賴服務器的安全強度,一旦服務器遭到入侵,用戶數據就有可能會泄露;文獻[12]提出一個保護隱私的多權限基于屬性的智能電網數據共享方案,該方案為保證數據的安全性,犧牲了加密時間,造成加密效率較低。
對于采用區塊鏈技術的其他領域數據共享研究,文獻[13]構建一種基于區塊鏈的醫療數據共享模型,該系統將數據存儲在中心化的數據庫中,并未解決數據的存儲問題;文獻[14]提出一種基于區塊鏈網絡的醫療記錄安全存儲訪問方案,該方案全程采用智能合約,導致系統開銷過大。
對于采用區塊鏈技術的能源數據共享研究,文獻[15]提出一種基于聯盟鏈的智能電網數據安全存儲與共享系統,該系統采用的傳統共識機制造成系統算力開銷過大,消耗了大量的計算機算力;文獻[16]設計一種基于區塊鏈的電池健康數據共享模型,打破了制造商與用戶之間的數據訪問和共享壁壘,但是其仍存在一定的安全隱患;文獻[17]設計一種基于區塊鏈的動力電池數據監控與共享系統,該系統同樣采用傳統共識機制,致使運行效率低下;文獻[18]構建一個解除監管的智能電網公平數據共享的區塊鏈模型,對于服務提供者來說,雖然用戶數據對提高其服務質量至關重要,但該模型在利用用戶數據的同時引發了隱私保護問題。
綜上所述,在已有研究中,區塊鏈在能源領域的數據共享應用還存在空白等問題。針對微電網中智能電表通信信道不安全、數據信息不透明以及微電網集中運營管理的方式等問題,本文利用區塊鏈技術,設計一種基于區塊鏈的微電網數據安全共享方案,在實現用戶用電數據隱私保護和數據安全共享的同時,也保證了交易速率。
區塊鏈按其去中心化程度的高低可以分為公有鏈、聯盟鏈和私有鏈[19]。將區塊鏈技術應用于能源領域中,各節點的加入或退出需要經過授權,否則過度開放的系統使各節點可以自由加入或退出,會給系統帶來混亂,使管理更加困難。另外,用戶的身份也需要實名,這樣可以避免一些來歷不明的用戶給系統帶來潛在的威脅。基于此,選用聯盟鏈搭建該系統更加合適。
本文方案主要由智能電表(Smart Meter,SM)、數據采集器(Data Collector,DC)、監督中心(Supervise Center,SC)、分布式數據庫(Distributed Database,DD)、聯盟鏈系統(Consortium Blockchain System,CBS)、分布式應用(Distributed Application,DAPP)構成。因此,可以將其分為數據層、監督層、存儲層、共識層、應用層共5 層。系統總體架構如圖1 所示。

圖1 系統的總體架構Fig.1 Overall architecture of the system
系統各部分的功能如下:
1)數據層主要完成對數據的采集清洗和加密并進行打包。每個DC 可以每隔一段時間完成對多塊SM 數據的采集,本系統為每個DC 設置的SM 數量上限為5 塊,時間間隔為15 min。
2)監督層發揮作用主要是在初始化階段。用戶需要在SC 完成賬戶注冊,并把SM 接入DC。
3)共識層與存儲層是該系統的核心。DC 采集的數據經過數據層的處理后,由共識層P2P 網絡將數據包進行廣播,發起共識,進入共識階段。
4)存儲層的主要任務是存儲數據,并將存儲索引返回至共識層。待各節點達成共識后,將數據包存儲在位于存儲層的DD 中,然后將存儲地址返回至共識層中的CBS 存儲。
5)最上層是應用層,查詢者通過DAPP 發起數據訪問申請,如果可以通過系統和用戶對其身份的驗證,則會自動觸發智能合約,完成數據的共享。
在初始化階段主要完成賬戶注冊和將SM 接入DC 兩個任務。
賬戶注冊的具體步驟如下:
1)用戶利用一種改進的ElGamal 算法產生公鑰和私鑰。
2)將公鑰和用戶私人信息,如身份證號、門牌號、身份信息(該系統為每位用戶的身份設置為普通家庭用戶、政府機關、國網公司、科研學者、在校師生、其他用戶)等,發送至SC。
3)SC 收到用戶信息對其核查無誤后,用SC 的私鑰對用戶公鑰進行加密,形成數字簽名sign,并將sign 返回給用戶。
4)用戶利用自己的公鑰和sign 創建賬戶,其他用戶可以用SC 的公鑰驗證sign 的真實性,從而保證賬戶的真實性。
將SM 接入DC 需要用戶將自己的賬戶上傳至DC,同時從DC 的數據庫中下載最新數據。初始化階段任務如圖2 所示。

圖2 初始化階段任務Fig.2 Initialization phase tasks
在用戶完成注冊并將SM 接入DC 后,用戶加入該系統,隨后進入數據采集階段。該系統為每個DC設置的SM 數量上限是5 塊,因此DC 中也存儲著5 位用戶的公鑰,DC 對SM 的數據采集間隔設置為15 min,之后將采集來的數據進行清洗壓縮,這樣可以減小數據包的大小,提高數據質量,隨后DC 利用每位用戶各自的公鑰對數據進行加密。加密過程如下:
1)用戶隨機選取一個充分大的素數p,然后再選一個整數g,g是p的原根,且1 2)將指數x進行2k進制化,然后計算y=gxmodp,并將y作為自己的公鑰,x作為私鑰。 3)在利用ElGamal 算法進行加密時,明文m以分組的方式進行加密,分組的長度應該小于lbp比特,用戶隨機選取一個整數r,1 該方案在對數據進行加密時,采用一種改進的ElGamal 加密算法。傳統的加密算法由于指數序列過長,在計算過程中會進行多次迭代,采用冪剩余計算耗時太多,會造成算法運行效率低下。改進的算法通過對指數2k進制化,使其指數序列長度減小,從而減少了迭代次數,提高了運行速度。對指數2k進制化的過程定義為BR()函數,該函數的偽代碼如算法1 所示。 算法1BR()函數 該過程只需要做2k次迭代運算,將所得結果存儲在表中,該表只需要創建一次即可,在計算加解密求模運算時,直接通過查表就可以獲得結果。 在對數據完成清洗壓縮加密等操作后,將數據包進行廣播,發起共識,進入共識階段。 目前應用最為廣泛的共識機制還是比特幣系統所采用的工作證明機制(Proof of Work,PoW),但該機制要求計算大量的哈希會造成算力資源的嚴重浪費[20]。針對PoW 的缺陷,PoS 既可以保證PoW 共識機制中各節點的競爭力,又能使各節點自身做好優化,還提高了交易速度。因此,PoS 共識機制更適合該系統。但是,由于代幣發行嚴重擾亂了經濟金融秩序,因此早在2017 年代幣發行在中國已經被禁止[21]。 本文針對傳統的PoS 共識機制做出以下3 點改進: 1)用積分來代替代幣進行流通,這樣既可以規避代幣流通的風險,又能通過為新加入的用戶發放積分來使其做好自身優化。如果用戶本身既可以購電,還可以發電售電,則會獲得更多的積分,這就可以鼓勵后加入的用戶安裝清潔能源發電裝置,促進清潔能源的推廣。 2)由于傳統PoS 共識機制容易產生分叉的問題,因此該系統要求每個節點在競爭記賬權生成區塊前要先抵押一部分積分,而且抵押的積分一定要大于獲得記賬權獎勵的積分,如果節點出現同時在兩條鏈上產生區塊,未在最新高度上產生區塊等惡意行為,則系統會沒收抵押積分,若節點未出現惡意行為,則系統會歸還抵押積分。 3)各節點還要定期檢查最新區塊,檢查時間間隔一定要小于最短的積分抵押時間,拒收重組記錄過長的區塊,這樣就可以有效預防分叉問題。 各節點積分的獲得遵循以下規則: 1)為鼓勵用戶加入該系統,系統會在用戶注冊加入時獎勵用戶一定的積分。 2)為鼓勵用戶使用清潔能源,用戶在用電的過程中如果購買了清潔能源,系統會發放一部分積分。 3)為普及清潔能源,用戶自己生產的清潔能源如果富余,可以將其出售,系統會獎勵一定的積分。 4)如果節點通過競爭獲得記賬權,打包并整理區塊,則系統也會獎勵積分。 各節點的積分數學模型如式(1)所示: 其中:Ap表示節點通過競爭獲得記賬權獎勵的積分;Ip表示用戶加入系統時所獲得的積分獎勵;Sp表示銷售每度清潔能源所獲得的積分;Es表示銷售的清潔能源電量;Pp表示購買每度清潔能源所獲得的積分;Ep表示購買的清潔能源電量;Cp表示執行智能合約查詢數據支付的積分。 節點通過競爭獲得記賬權獎勵的積分涉及三部分,即獲得記賬權獎勵的積分、抵押積分以及定期檢查最新區塊獎勵的積分。因此,節點通過競爭獲得記賬權獎勵的積分Ap的數學模型如式(2)所示: 其中:ARp表示獲得記賬權獎勵的積分;Lp表示定期檢查最新區塊獎勵的積分;Mp表示抵押積分;Rp表示返還積分,若節點出現上述惡意行為,則返還積分為零,否則抵押積分與返還積分數量相等;wi表示權重。 每位用戶加入系統時所獲得的積分獎勵并不是完全一致的,系統會根據每位用戶的基礎設施投入、過往一年時間中每月的平均用電量以及用戶過往是否存在電費拖欠等不良信譽情況發放積分。因此,用戶加入系統時所獲得的積分獎勵Ip的數學模型如式(3)所示: 其中:Ii表示基礎設施投入;Ae表示過往一年時間里每月的平均用電量;Nr表示用戶過往無不良信譽情況系統獎勵的積分,若用戶存在不良信譽情況,則Nr為零;wi表示權重。 各節點會根據自己所擁有的5 位用戶的積分之和來競爭記賬權,積分多的節點更有可能獲得記賬權。獲得記賬權的節點將加密數據包存儲在鏈下的DD 中,并將存儲地址寫入區塊鏈,最后系統將會向全網節點進行廣播同步數據。數據的存儲過程如圖3 所示。 圖3 數據存儲過程Fig.3 Data storage procedure 數據被存儲在鏈下DD 后,若有查詢方想查詢用戶數據,則需要通過DAPP 發起查詢請求,隨后系統會自動執行智能合約完成數據的共享。在以太坊中,智能合約的運行需要消耗gas[22]。在該方案中,用戶可以使用初始化階段和買賣清潔能源以及節點競爭記賬權獲得的積分代替gas 進行支付。只有當用戶所持積分不小于執行智能合約所耗積分時,查詢方才有可能成功訪問數據。智能合約的運行流程如圖4 所示,偽代碼如算法2 所示。 圖4 智能合約運行流程Fig.4 Procedure of smart contract operation 算法2智能合約 數據共享的具體過程如下: 1)查詢方通過DAPP 發起查詢請求,請求的信息包括用戶身份、查詢目的、數據有效時間等。 2)執行智能合約驗證查詢方身份,若查詢方身份為其他用戶,則該類用戶只能查詢自己的用電數據,否則系統會直接拒絕其查詢請求,如若不是,則將查詢方的請求信息發送給數據擁有者,若數據擁有者對其身份等請求信息驗證通過,則針對查詢方的請求信息制定相應的約束條件并將私鑰上傳,否則,拒絕其查詢請求。 3)系統根據鏈上的存儲索引查找鏈下DD 中存儲的加密數據包,根據用戶提供的私鑰計算m=對其進行解密得到明文m。 4)將數據發送至查詢方接入的DC,查詢方就可以通過DAPP 下載獲得所需數據。 5)如果查詢方恰好是數據擁有者,則無需制定約束條件上傳私鑰,系統會直接根據鏈上的存儲索引查找DD 中的數據包,并將其發送給用戶接入的DC,用戶通過DAPP 下載數據包后利用自己的私鑰解密即可獲得所需數據。 6)在完成數據共享的同時還需要對查詢方賬戶積分進行清算。 該方案采用聯盟鏈來搭建系統,利用非對稱加密算法對數據進行加密,確保數據傳輸過程更加安全可靠[23]。針對系統及區塊鏈的安全性,從以下8 個方面進行綜合分析: 1)51%攻擊 在該方案中,礦工挖礦的成本幾乎為零,可以忽略不計。從本質上講,PoS 共識機制使挖礦者與使用者合二為一,這意味著如果礦工發動51%攻擊就需要掌握全網51%的幣齡,幾乎不可能實現,即使成功發起了51%攻擊,PoS 也會使整個區塊鏈P2P 網絡不斷健壯,而且本身作為全網最大的持幣用戶,遭受的損失也是最大的。因此,發起51%攻擊很難實現。 2)女巫攻擊 該方案中每一個新用戶加入都需要在SC 中進行賬戶注冊,在通過SC 的身份認證后才可以加入聯盟鏈系統。因此,該方案可以有效防止女巫攻擊。 3)無利害關系攻擊 該方案對PoS 共識機制做出改進,為其加入懲罰機制,各節點需要抵押一部分積分才有權參與競爭獲得記賬權,而且抵押積分大于其收益。一旦節點出現在兩條鏈上同時產生區塊,未在最新高度上產生區塊等惡意行為,系統將不再返還其抵押積分。因此,該方案可以有效預防無利害攻擊。 4)長程攻擊 該方案要求各節點要定期檢查最新區快,而且檢查時間間隔小于最短的積分抵押時間與拒收重組記錄過長的區塊。定期檢查最新區塊可以使在返還積分的時間段中,肯定包含至少一次檢查,則節點不會選擇攻擊者創建的最長鏈。因此,該方案可以有效遏制長程攻擊。 5)內部攻擊 在初始化階段,用戶用SC 發來的數字簽名sign和自己的公鑰來創建賬戶,這些都是唯一的。另外,該方案采用的分布式存儲也可以阻止系統中的惡意用戶假冒其他合法用戶身份發起內部攻擊。 6)分布式拒絕服務攻擊(Distributed Denial of Service,DDoS) 由于該方案使用了非對稱加密算法來產生密鑰并加密數據,因此若想感染某個節點是非常困難的。另外,區塊鏈系統是分布式結構,即使某個節點出現故障,也不會影響其他節點的正常工作。因此,該方案可以有效防止DDoS 攻擊。 7)修改攻擊 在該方案中,每一個區塊的區塊頭中都有上一區塊的哈希值和當前區塊的時間戳,這些可以保證發現數據是否被修改或移除過。因此,修改攻擊對該方案無效。 8)共識周期攻擊 如果有攻擊者發送虛假請求更新共識周期,請求若想生效,則至少需要超過1/2 節點的簽名,這種情況發生的概率極低,可以忽略不計。因此,該方案也可以防止共識周期攻擊。 本文實驗對算法的運行效率、系統開銷以及區塊鏈的交易吞吐量TPS(Transaction Per Second)3 個方面進行了測試,可以將其分為3 個實驗。通過測試該方案在3 個實驗中的表現并與其他方案做對比,可以具體觀察該方案的性能表現。 在該實驗過程中,采用第三代B+型樹莓派(Raspberry Pi,RPi)作為硬件載體模擬節點,將Remix-IDE 作為以太坊智能合約的開發工具,使用Solidity 語言編寫程序。該實驗所涉及的軟件和硬件具體參數如表1 所示。 表1 實驗軟件和硬件的參數Table 1 Parameters of experimental software and hardware 5.2.1 算法效率 該實驗利用迭代次數和改進算法的迭代次數與傳統算法的迭代次數之比來衡量算法的運行效率。由于運行效率受算法的指數x的二進制序列長度影響,因此通過改變其序列長度,觀察迭代次數及其比值的變化,就可以了解算法的運行效率。算法效率對比實驗如圖5 所示。 圖5 算法效率對比實驗結果Fig.5 Experimental results of algorithm efficiency comparison 當指數x的二進制序列長度在100 bit 以上時,傳統算法迭代次數曲線增長迅速,而改進算法迭代次數曲線增長緩慢,改進算法與傳統算法迭代次數之比最高也不到0.50,改進算法較傳統算法效率提高了3 倍。另外,隨著序列長度的增加,迭代次數比值曲線呈現下降趨勢,而且兩條迭代次數曲線的差距越來越大,說明序列長度越大,改進算法的效果越好,運行效率較傳統算法越高。 5.2.2 系統開銷 由于該系統采用積分取代虛擬代幣進行流通,而且在智能合約運行過程中會消耗gas。根據火幣網實時數據,假設1gas=0.007 8p。該實驗通過運行智能合約一個周期觀察其消耗的積分來衡量系統的開銷。對比方案選擇文獻[14]的醫療記錄安全存儲訪問方案、文獻[15]的智能電網數據安全存儲與共享方案以及文獻[16]的電池健康數據共享方案。系統開銷對比實驗如圖6 所示。 圖6 不同方案系統開銷對比實驗結果Fig.6 Experimental results of system overhead comparison of different schemes 文獻[14]方案積分消耗在420p 以上,積分消耗最高,這是由于該方案在實現過程中全程采用智能合約的形式,導致系統開銷過大。文獻[15-16]方案較文獻[14]方案積分消耗減少1/2 有余,這是因為兩方案均僅在數據共享階段使用智能合約,因此,積分消耗大幅減少。而本文方案積分消耗不足165p,較文獻[14]方案消耗積分大幅減少,對比文獻[15-16]方案(170p 以上)也有一些改進,這是由于本文方案將加密數據包存儲在鏈下DD 中,而鏈上只存儲數據存儲索引,在進行數據查詢時,相較于直接將數據存儲在鏈上的傳統方案系統開銷更小。因此,本文方案開銷相較于其他方案是最少的。 5.2.3 交易吞吐量 區塊鏈的交易吞吐量是指單位時間內完成的交易數量,該實驗將區塊大小設置為固定值1 MB,通過設置不同的區塊生成時間,測試不同時間的交易數量20 次,然后取其平均值并繪制曲線。對比方案同樣選擇文獻[14]的醫療記錄安全存儲訪問方案、文獻[15]的智能電網數據安全存儲與共享方案以及文獻[16]的電池健康數據共享方案。圖7 所示為TPS 實驗結果對比。 圖7 不同方案TPS 對比實驗結果Fig.7 Experiment results of TPS comparison of different schemes 所有方案的TPS 均隨出塊時間的增大而降低,這是由于出塊時間增大意味著相同時間內區塊鏈處理的交易數量減少。文獻[14]方案表現最差,最高剛超過50 tx/s,這是由于其過多使用智能合約,反而造成系統開銷過大,降低了TPS。文獻[15]方案最高接近200 tx/s,文獻[16]方案最高剛超過250 tx/s,本方案最高可接近300 tx/s,這是由于文獻[15-16]方案采用的均是傳統的PoW 共識機制,而本文方案在PoS 共識機制的基礎上有一定程度的改進。因此,該方案相較于其他方案的TPS 更高。 區塊鏈技術因其去中心化和數據透明可追溯的特點,應用范圍已滲透到各行各業。本文設計一個基于區塊鏈的微電網數據安全共享方案,通過改變傳統微電網的中心化運營方式,打破“信息孤島”的困局,保護用戶的用電隱私。但目前多數相關區塊鏈技術的應用主要是圍繞金融領域展開,這是由于其脫胎于虛擬貨幣,其核心技術即共識機制多數更適用于金融領域。受此限制,未來若要將區塊鏈技術應用到更多領域,必須對共識機制進行改進,或者研發出更加適合其他領域的共識機制。因此,下一步將對現有的共識機制做出改進,將區塊鏈技術推向更廣更深層次的應用領域。
3.3 數據存儲




3.4 數據共享


4 安全性分析
5 性能評估
5.1 實驗部署

5.2 結果分析



6 結束語