龍洋洋,陳玉玲*,辛 陽,豆 慧
(1.公共大數據國家重點實驗室(貴州大學),貴陽 550025;2.貴州大學計算機科學與技術學院,貴陽 550025;3.北京郵電大學網絡空間安全學院,北京 100876)
(?通信作者電子郵箱61997525@qq.com)
目前,在微網和園區中,能源交易主要是以集中式優化決策的資源配置方式為主,建立一個易于設置、易于采用的控制中心來處理和管理能源交易。但該方法需要耗費的人力物力成本較高,缺乏對隱私的保護和匿名性,存在單點故障問題。控制中心可以直接或間接地查看用戶的隱私數據,根據所獲取到的數據分析和預測用戶的下一步行為。同時,控制中心的故障會對支付和認證活動造成干擾,阻礙提供可用性和可靠性安全目標。針對這一弊端,需要尋求一種去中心化的管理方式來對能源交易進行管理,降低成本,實現能源交易的自主管理,并且保障信息的安全性。區塊鏈技術結合數字簽名和分布式共識機制,是一種實現信息安全的數據存儲和分布式計算的新興技術,最早應用于比特幣[1]。然而,在能源互聯網中,參與能源交易的主體數量多,如果采用公有鏈,則每筆交易的執行都需要傳播給全網絕大多數節點并通過驗證,交易速度比較緩慢,不能適應能源互聯網高頻交易的需要。此外,倘若所有節點都存儲所有的歷史交易信息,存儲容量會很大,成本較高。因此在能源互聯網的能源交易中,可以采用聯盟鏈。聯盟鏈的核心在于將區塊鏈的節點分為全節點和輕節點兩類,全節點保存了歷史完整的交易信息,對區塊鏈具有讀寫權限,而輕節點只保存了自身相關的身份信息,只具有讀取權限,需要通過相關的協議向全節點發送讀取請求來確認與自身相關的交易是否成功寫入區塊鏈,如簡單支付驗證(Simple Payment Verification,SPV)協議[2]。
目前關于區塊鏈應用于能源互聯網的研究大多只是簡單地提出了應用方案,將去中心化的交易架構應用于能源互聯網,沒有針對能源互聯網中的隱私保護進行分析[3-8]。歐盟的Scanergy項目提出發行NRG 幣作為能源交易的代幣進行微網中的能源交易[3]。美國LO3 Eenergy 公司推出的Trans Active Grid項目只是將區塊鏈技術應用在能源節點數量有限的微電網場景[4]。文獻[5-9]分別探討了將區塊鏈技術應用到智能電網、車載網、智能家居和產業物聯網以實現分布式交易,但這些文獻對區塊鏈應用于能源互聯網的隱私問題都缺乏討論,不足以支撐用戶的多樣化需求。
將區塊鏈技術應用到能源互聯網中帶來的隱私問題,主要是由于區塊鏈中記錄交易數據的分布式全局賬本在網絡中都是公開的,任意攻擊者都能間接或者直接地獲取到錢包賬戶和交易行為等信息,導致隱私的泄露。例如,對賬本數據進行分析整理,攻擊者可以通過數據挖掘算法獲取任意賬戶的交易信息,還可以分析同一用戶所持賬戶之間的交易關系圖譜等。目前已經出現一些隱私保護機制[10],主要思想是在不影響交易以及存儲效率的情況下,對公開數據中的部分信息進行隱藏,增加數據分析的難度。文獻[11]提出了基于拉格朗日乘值法的隱私保護策略,文獻[12]提出了一種實現信息的隱私保護的優化策略,文獻[13]提出了一種集成微電網的隱私保護模型,以減少相互之間的數據共享。在不知道用戶信息的情況下,文獻[14]采用在線驗證機制來解決電動車的隱私保護問題。文獻[15]提出一種基于低密度校驗碼編解碼技術來實現通信數據的隱私保護。文獻[16]利用訪問控制來實現對隱私數據的保護。這些方法都對區塊鏈技術在能源互聯網中的隱私數據進行了一定的保護,但仍然存在兩個亟待解決的問題:由于存儲在區塊中的噪聲記錄會引起分布式賬本發生故障,現有的隱私保護機制大多數無法在不影響分布式能源交易系統運行效率的情況下,對隱私進行保護;攻擊者可能不需要準確的數據就可以獲取用戶的隱私。因此,需要提出一種能保護用戶隱私的能源互聯網交易模型。
本文在現有研究的基礎上,引入弱中心化的監管方式,并結合智能合約[17]的需求側響應,提出一種基于聯盟區塊鏈的安全能源交易模型,幫助能源交易實體雙方快速、可信、安全的交易。該模型通過一個一對多的賬戶匹配機制將小規模鄰近分布式能源交易的趨勢隱藏,防止基于數據挖掘算法的相關攻擊和確保交易實體之間交易信息的準確性。
本文提出的模型構成要素包括監管中心(Supervision Center,SC)、本地聚合商(Logical Business Component,LBC)、交易實體三個核心對象,如圖1所示。
在模型中,參與交易的實體包括能源買家、能源賣家。交易實體可以根據自己的能源需求和狀態,選擇出售或購買能源;本地聚合商作為可信能源中介,保存完整的區塊鏈數據,并為能源節點提供電力接入點和無線通信服務。每次能源出售節點都會向最近的本地聚合商發送能源售出的請求,經本地聚合商對能源節點的交易請求核實,并向所有本地聚合商廣播這一需求,為能源節點進行電力交易對的匹配;監管中心作為能源交易的監管部門,對本地聚合商、交易實體進行授權的同時,也對交易數據進行有效的監管。

圖1 能源區塊鏈網絡Fig.1 Energy blockchain network
由于所有的交易數據均持有本地聚合商的數字簽名,若存在惡意的本地聚合商對交易數據更改,被更改的交易數據很容易被監管中心統計和定位。經監管中心核實之后,該本地聚合商無法再進行任何與交易相關的行為。
能源交易模型由三個部分組成:用戶注冊、交易和驗證,如圖2所示。
1)用戶注冊:為了加強監管和識別惡意用戶,用戶在參與交易前需要在監管中心進行注冊。本文采用半中心化的聯盟區塊鏈系統,設置由代幣銀行和交易服務器組成的本地聚合商,讓本地聚合商管理交易及用戶賬戶的信息,只有被授權的用戶才能進入交易系統。
2)用戶交易:參與交易的交易實體根據自身能源狀態選擇出售或購買能源,由本地聚合商對交易對象進行匹配和參與能源區塊鏈系統的共識過程。
3)交易驗證:由于聯盟區塊鏈可以通過選定的節點來執行共識過程,每筆交易的執行只需要傳播給預選節點進行驗證。在模型中,參與驗證的節點為本地聚合商。
如圖2 所示,本地聚合商包含兩個實體,即交易服務器(Transaction Server,TS)和存儲池。TS 主要負責從交易實體中收集能源請求,對交易實體進行匹配,并為能源交易節點提供交易代幣和代幣兌換服務。存儲池用于存儲完整的區塊鏈信息。其中,交易代幣類似于NRG 幣,交易代幣的流通對模型交易效率、安全性均無影響。
在用戶注冊過程中,監管中心的角色可定義為第三方證書授權機構,每個用戶向監管中心提交相關信息,經過監管中心授權以后,用戶獲得數字證書以及自己的公鑰和私鑰。
用戶向監管中心提交自己的信息(姓名、年齡、身份證號等),監管中心使用非對稱加密算法為用戶生成一組公鑰PKi和私鑰SKi,并使用其私鑰SKsc對用戶的公鑰PKi進行加密,形成數字簽名sign,最終將公鑰PKi、私鑰SKi以及數字簽名sign返回給用戶。用戶經監管中心注冊之后,就是一個合法節點。其他用戶可以使用監管中心的公鑰PKsc來驗證數字簽名sign的合法性。另外,在合法節點參與交易之前,需要接入本地聚合商,并將自己的賬戶上傳到本地聚合商,同時從本地聚合商中下載最新的交易數據,同步交易數據信息。其中,本地聚合商中已經存儲了完整的區塊鏈數據,無論交易數據有多龐大,用戶不需要再存儲和驗證整個區塊鏈上的交易數據,只需要同步區塊頭數據即可,每個區塊頭的大小只保持80 字節的大小,極大地減小了用戶在存儲方面的負擔。

圖2 能源區塊鏈網絡交易流程Fig.2 Transaction process in energy blockchain network
能源出售方向本地聚合商以智能合約的形式發送售能請求,經TS核實無誤后,為賣家用戶選擇交易賬戶,并給該賬戶分配一個錢包,用于存儲交易代幣。賬戶選擇完畢,TS 將請求信息打包,并廣播到所有本地聚合商中以供買方匹配。TS如何為賣家用戶選擇交易賬戶在2.3節進行詳細描述。
交易雙方匹配成功后,能源購買方從本地聚合商處接收出售方所提交的售電合約Script,并產生新的合約newScript與出售方協商價格。與出售方達成協議后買方通過自己的錢包向出售方支付代幣,并生成交易記錄發送給出售方。出售方對交易記錄進行驗證并進行數字簽名,將交易記錄上傳給本地聚合商進行驗證。
由于所有本地聚合商都是經監管中心注冊的可信節點,本文采取三階段共識機制。
第一階段是記賬節點的選取。所有的本地聚合商收集一段時間內產生的交易信息,然后對交易信息進行加密和數字簽名,并將加密后的交易記錄寫入區塊中。類似于比特幣,查找一個有效的工作量證明(一個滿足特定難度的哈希值),通過生成一個隨機數x,并結合前一個區塊的哈希值、時間戳、交易merkle 根等信息(定義為data)計算其所構建區塊的哈希值。如式(1)所示:

其中,Difficulty是一個由系統控制的整數,主要用來調整隨機數x的查找速度。最快找出隨機數的本地聚合商為當前共識過程的記賬節點,記作lbc。
第二階段是lbc將區塊數據、隨機數、時間戳信息打包并廣播給其他本地聚合商,交由其他本地聚合商對區塊數據進行驗證。驗證結束后,其余本地聚合商將驗證結果進行數字簽名,并互相把驗證結果互相比對,最終向lbc反饋比對結果,反饋信息包括每一個本地聚合商的驗證結果、數字簽名、比對結果。
第三階段是lbc對收到的反饋進行數理統計分析,若所有的本地聚合商都同意區塊數據,記賬節點則將當前經過驗證的區塊數據進行數字簽名,并向其他本地聚合商發送一份確認結果,以便于存儲。
共識過程完成,區塊數據由記賬節點有序寫入區塊鏈,記賬節點收到獎勵的交易代幣。若存在本地聚合商對區塊的數據存在異議,記賬節點將進一步分析驗證結果,并再次給存在異議的本地聚合商發送區塊數據。在這一共識過程中,所有的驗證結果均持有各自的數字簽名,很容易統計和查找。
安全能源交易模型的提出,需要解決在實現隱私保護的同時,不影響模型交易的效率與交易數據的完整性這一問題。本文基于上述交易模型提出一個賬戶保護機制,通過一對多的方式來實現對銷售方的交易數據進行隱藏,如圖3所示。

圖3 賬戶匹配機制Fig.3 Account mapping mechanism
如圖3 所示,當賣家向自己的錢包賬戶中存儲代幣時,此一對多的賬戶匹配機制至少能給賣家提供兩種方式:創建一個新的賬戶并向該賬戶的錢包中存儲代幣;向原有賬戶的錢包存儲代幣。選擇哪種方式取決于賣家交易代幣的數量。
模型設置一個動態隨機數B用于決定是否創建新的賬戶,B的設定由分布式預測函數T()生成。此動態隨機數的設定主要是為了防止數據挖掘算法對隨機數的檢測。當賣家所需存儲的交易代幣數量小于B,則將交易代幣存儲至已存在的賬戶錢包;當存儲的交易代幣大于B時,模型就會創建一個新的賬戶,并將交易代幣存儲在該新建的賬戶中。在賬戶創建的過程中,有兩種模式可供選擇,定義為Mt和Mf,Mt表示創建新的賬戶進行交易代幣的存儲,Mf表示賣家選擇原有賬戶的錢包進行交易代幣的存儲。若由函數f()決定選取哪種模式。f(si,vi,Mt)指為賣家si的第i筆能源交易選取模式Mt,其中vi為賣家的第i筆能源交易量。
該機制的提出需要解決三個關鍵問題:
①隨機數該如何設置,即使隨機數能設置為一個動態改變的變量,單一隨機數控制模式的選取能在一定程度上有效防御攻擊,但還是不足以抵御應用數據挖掘算法發起的相關攻擊。攻擊者可以觀察區塊鏈里的共享交易記錄信息,并針對所獲取到的售電量等信息,猜測出賬戶與隨機數之間的關系,進而發起攻擊。為了解決這一問題,本文使用分布式預測函數T()來對隨機數B的波動范圍進行控制。隨機數B源于賣家的歷史交易數據,是一個交易量預測值,而不是狀態變量。將經過分布式預測函數T()所創建的預測值作為隨機數B,其數學表達式如式(2)所示:

其中:vi表示賣家第i筆能源交易量;Vi-1表示賣家si的前i-1筆能源交易量之和;e1和e2表示當前能源交易量vi所占的權重值以及前i-1 筆平均能源交易量交易所占的權重值,范圍在(0,1)。賣家的總能源交易量是一個可以計算的值,使用Vi表示賣家Si的前i筆能源交易量之和,用式(3)表示:

②在相鄰的用戶交易過程中,有許多用戶很少或從不出售能源,新賬戶的創建會使得這些用戶的賬戶更加明顯,尤其是在一個小規模的環境中。因此,新賬戶創建的同時也需要對這些不活躍賬戶進行隱藏。針對這一問題,模型通過虛擬賬戶的創建來對這些不活躍賬戶隱藏。模型將能源交易數額較少的賬戶標記為不活躍賬戶,使用限制參數m來估計不活躍賬戶的狀態,任意賬戶累計交易量少于m的賬戶均屬于不活躍賬戶。同時,維持不活躍賬戶的個數所占的比例在一個固定的階段,使用n表示,范圍在(0,1)。定義賣家si所持賬戶為集合R=Ria∪Ra,其中Ria為不活躍賬戶集合,Ra為活躍賬戶集合。使用N表示賣家si所持賬戶總數,K表示不活躍賬戶個數在滿足式(4)時,模型將創建一個虛擬賬戶。

③針對f(si,vi,Mf),什么時候需要選取Mf模式,即Mf模式下如何選擇賬戶。攻擊者對分布式共享賬本數據進行分析整理,可以通過數據挖掘算法獲取賬戶的交易信息,還可以分析同一用戶所持賬戶之間的交易關系圖譜。為了解決這一問題,在Mf模式下選擇原有賬戶時,模型根據賬戶的創建時間先后順序,從不活躍賬戶中選擇創建最早的賬戶為當前交易的賬戶。
賬戶匹配算法可以用以下偽代碼表示:
算法1 賬戶映射算法。

為了分析模型的相關特點,在Ubuntu 16.04環境下,基于超級賬本(Hyper-ledger Fabric 1.0)技術建立了仿真平臺,硬件參數如下:16 GB 內存,i5-6500 CPU 和GeForce GT 730 顯卡。實驗基于一組相鄰用戶對隱私保護性能進行對比分析,并將模型與比特幣交易模型所需的交易驗證時間進行對比分析。除此之外,還對模型的安全性進行評估。
實驗選取了500 個能源節點來部署智能電表與光伏發電機,測試使用與不使用模型時交易的分布和趨勢。其中,包含200個買方節點,200個售方節點,100個本地聚合商節點。圖4(a)描述了從買方節點和賣方節點中隨機選取的50 個相鄰用戶在同一個月的光伏發電機發電情況,定義為A 組。在圖4(a)中,有50個鄰居用戶,其平均收集電量為90.79 kW·h,范圍為[62,124]。圖4(b)顯示了相同用戶群體在同一月份的電量消耗情況。在圖4(b)中,平均能耗為80.31 kW·h,范圍為[52,115]。圖4(c)描述了從買方節點和賣方節點中隨機選取的100 個相鄰用戶在同一個月的光伏發電機發電情況,定義為B 組。由于附近的地理位置,收集電量相似。在圖4(c)中,有100個鄰居用戶,其平均收集電量為89.58 kW·h,范圍為[25,149]。相應地,圖4(d)顯示了相同用戶群體在同一月份的電量消耗情況。在圖4(d)中,平均能耗為79.54 kW·h,范圍為[40,111]。

圖4 兩組能源的收集與消耗情況Fig.4 Energy collection and consumption of two groups
圖5 展示了與A 組同一時間段從原始交易記錄中檢索到的50 個相鄰用戶的能源銷售分布情況。在圖5 中,對這些明顯不同的售能數據進行標記,容易看出至少4 家賣家的銷售電量超出正常生活用電或遠低于平均銷售電量。圖6 展示了與B 組同一時間段從原始交易記錄中檢索到的100 個相鄰用戶的能源銷售分布情況。在圖6 中,對這些明顯不同的售能數據進行標記,容易看出很多賣家的能源交易數量與其他賣家明顯不同。可以表明這些用戶家里配置了較多的光伏發電機,或很少呆在家里,除去日常用電之外,還有大量的電量剩余。同時,還可以表明這些售電量較低的用戶家里配置了較多的電力設備。

圖5 與A組同時段檢索到的50個相鄰用戶的原始售能分布Fig.5 Original energy sales distribution of 50 neighboring users retrieved in the same time period as group A
圖7 和圖8 顯示了使用隨機數B來限制活躍賣家的能源銷售情況。在圖7中,模型為賣家創建了14個賬戶,其中新賬戶10個,虛擬賬戶4個。在圖8中,模型為賣家創建了45個賬戶,其中新賬戶38 個,虛擬賬戶7 個。容易看出,模型不僅為活躍賣家創建了新的賬戶,這些創建出的新賬戶可以屏蔽鄰近賬戶的分布,這在很大程度上保護了賣家的隱私。此外,模型也為不活躍的賣家創建了虛擬賬戶,其中虛擬賬戶為銷售能量為0 的賬戶。實驗結果表明模型可以從整體上對賣家的售能分布情況進行隱藏,提高用戶的隱私保護性能。

圖6 與B組同時段檢索到的100個相鄰用戶的原始售能分布Fig.6 Original energy sales distribution of 50 neighboring users retrieved in the same time period as group B

圖7 與A組同時段檢索到的50個相鄰用戶使用模型后的售能分布Fig.7 Energy sales distribution after using model of 50 neighboring users retrieved in the same time period as group A

圖8 與B組同時段檢索到的100個相鄰用戶使用模型后的售能分布Fig.8 Energy sales distribution after using model of 100 neighboring users retrieved in the same time period as group B
在比特幣交易模型中,交易驗證時間需要60 min[16],當能源交易的次數增加時,需要花費的交易驗證時間高于基于聯盟鏈區塊鏈的安全能源交易模型的交易驗證時間。針對模型的交易性能,實驗設定一個本地聚合商完成交易驗證所需的時間為10 min、每小時的能源交易次數為{1,2,3,4,5},并從100個本地聚合商中隨機選取40個節點,觀察4 h內在比特幣交易模型和基于聯盟鏈區塊鏈的安全能源交易模型下的交易驗證時間變化。其中,交易驗證時間是指本地聚合商完成能源交易共識的時間。
如圖9 所示,與比特幣交易模型相比較,基于聯盟鏈區塊鏈的安全能源交易模型在應用于能源交易時,具有較低的交易驗證時間,這是由于交易的共識過程均由本地聚合商執行,達成共識的時間更少,故在同等時間下,本文模型的能源節點在區塊鏈上持續進行能源交易所花費的時間更少。實驗結果表明,基于聯盟鏈區塊鏈的安全能源交易模型支持快速的能源交易。

圖9 兩種交易模型交易速度對比Fig.9 Transaction speed comparison of two transaction models
不同于傳統的通信安全和隱私保護,基于聯盟鏈區塊鏈的安全能源交易模型使用聯盟區塊鏈技術來確保能源交易的安全性,與區塊鏈相關的安全性分析主要包括三個方面[18]:1)可信中介的去除。不同于傳統依賴可信中介的集中式交易,經監管中心注冊的能源節點以點對點的方式交易能源,所有能源節點接入經授權的本地聚合商進行能源交易,各能源節點具有平等的交易權。在沒有可信中介機構參與的情況下,模型是安全且可信的。2)賬戶安全。由于每個用戶都持有多個交易賬戶,攻擊者不能使用數據挖掘相關的算法來分析區塊鏈中共享數據與用戶的關系,賬戶的安全能得到有效的保障。3)交易驗證安全。所有交易數據均由其他本地聚合商公開驗證。由于巨大的成本開銷,惡意節點難以篡改交易數據。即使惡意節點篡改了交易數據,在構造區塊之前,就會查找并糾正經篡改交易數據。綜上所述,可認為模型是安全的。
本文主要對鄰近能源互聯網交易的隱私保護進行研究:借助聯盟區塊鏈技術提出了一種能保護用戶隱私的能源互聯網交易模型,并討論了模型在隱私保護性能、安全性、交易效率等方面的優缺點。實驗結果表明,聯盟區塊鏈結合能源互聯網能在不影響交易性能的情況下,有效防止攻擊者直接獲取和分析交易信息。同時表明,本文方案能夠較好地應用在能源互聯網場景。
區塊鏈技術作為一種多方參與、多方維護的新興技術,雖然能實時追溯交易記錄,但用戶自身的賬戶信息在傳播過程中也會存在人為泄露的安全問題。未來將結合代理重加密、同態加密等密碼學技術保護用戶隱私信息。