程晗蕾,魯 靜,齊 榮
(遠光軟件股份有限公司,廣東 珠海 519085)
隨著信息技術的高速發展,電網逐步實現智能化,形成智能電網,使電力系統在運行過程中的“電力流、信息流、業務流”得以集中管控。
電力數據在采集、存儲、流轉及使用過程中往往會面臨一系列的安全問題。2018-09-13,國家能源局發布《關于加強電力行業網絡安全工作的指導意見》,對加強電力企業數據安全保護、支持網絡安全自主創新與安全可控等方面提出了要求。
在智能電網中,電力公司根據大量邊緣終端采集設備(如智能終端、傳感器、芯片、智能電表、信號采集器等)實時采集到的用戶電量數據和電網監控數據,調整電網運行狀態。
智能電表將采集到的電量、電價數據傳輸給電力用戶用電信息采集系統及MIS系統后,由其進行中心化歸集、整理、挖掘、分析,再反饋給其他電力管理系統來改善電力交易質量。然而,通常這些邊緣傳感節點的計算能力和資源存儲能力有限,易遭受DDoS攻擊。這種中心化的電力數據存儲和共享模式,存在多個數據安全問題。
(1) 數據面臨單點故障。當前電力數據管控仍是集中式的,智能電網系統存在數據中心這類可信中心節點。一旦中心服務器失效,有可能造成數據全部丟失,且難以進行完整性恢復。
(2) 數據易遭受重發攻擊。數據在傳輸過程中,任一環節都存在數據被惡意篡改和竊取的可能性,使數據的真實性遭到質疑。攻擊者可能運用非法手段截獲正在傳輸的數據,然后偽造該數據并重發給電網公司或用戶,導致數據機密性不可控,甚至使電力交易雙方之間可能遭受經濟損失。
(3) 隱私信息泄露。由于邊緣終端采集節點橋接用戶和智能電網為了能夠及時響應用戶,通常會存儲一些敏感信息,包括用戶分時電力消耗信息、用戶物理身份標識、電網監控及調用信息等。這些高價值的敏感數據是網絡攻擊者集中攻擊的對象。
(4) 數據無法安全管控。當前電力業務較為繁雜,且各系統存在“數據孤島”,相關主體在處理業務時,電力數據跨組織、跨部門的交叉使用現象屢見不鮮。這種情況下,電力公司往往很難追溯越權訪問、下載或篡改數據等不合規行為。此外,目前電子數據審計記錄依然存在無痕篡改的可能性,無法完全保障多方之間的電力數據共享行為被全周期、實時監控,且每一次的訪問授權操作也無法做到有跡可循。
傳統互聯網技術不能很好解決上述問題,因此,有必要運用新技術構建去中心化的電力數據存儲和共享機制,保障智能電網的安全運行。
比特幣是區塊鏈技術的首個成功應用,最早于2008年由化名為“中本聰”的學者在論文《比特幣:一種點對點電子現金系統》中提出。在比特幣網絡中,無需第三方中間機構參與,交易雙方可自信任地完成點對點加密貨幣交易。從2009-01-03比特幣創世區塊誕生至今,比特幣系統在無人管控下長期穩定運行十余年,區塊鏈作為其底層支撐技術逐漸受到全球學術界和工業界的廣泛關注。
區塊鏈本質上是一個去中心化的分布式賬本,并由多個分散節點嚴格遵照一定的共識規則來共同維護更新。每個賬本都是將數據區塊由時間戳鏈接而成的鏈式數據結構,并以密碼學方式保證其不可篡改性和不可偽造性。
每個區塊可包含多條數據或交易。區塊由區塊頭和區塊體兩部分組成。區塊頭中包含當前區塊的目標哈希值、區塊版本號、前一個區塊的哈希、隨機數、默克爾樹根、當前區塊高度及時間戳等信息。區塊體中包含該區塊的全部交易。
由于區塊始終通過區塊頭的哈希引用到前一個區塊,且區塊哈希是區塊中全部交易的默克爾根節點哈希值,因此,前一個區塊的交易中任一微小變動都會導致整條鏈發生改變,且很容易檢測到變化。因此,數據一旦分布式上鏈,便不可篡改。任何人都可以對賬本進行核查,但不存在單一用戶可以對它進行控制。
根據節點是否能自由加入或退出區塊鏈網絡參與記賬,將區塊鏈劃分為公有鏈、私有鏈和聯盟鏈。
(1) 公有鏈。普遍應用于數字貨幣交易,最具有代表性的是比特幣和以太坊。它們的區塊鏈網絡完全開放,任何用戶和組織可匿名加入分布式網絡參與交易和競爭新區塊的記賬權,鏈上數據全局可見,但記賬性能較低,每筆交易確認時間較長。
(2) 私有鏈。與公有鏈相反,對參與節點具有嚴格的身份準入限制,數據寫入和訪問權限由單個組織的運營者完全控制,偏弱中心化的網絡,但數據或交易達成共識時間較多,記賬效率更高。
(3) 聯盟鏈。介于公有鏈和私有鏈之間,可實現“多中心化”,是企業級區塊鏈應用中最常應用的分布式網絡架構。它允許多個組織作為聯盟成員協同記賬,并僅允許特定組織加入該網絡。盡管每個組織都擁有全量賬本,但僅能寫入/讀取與自身相關的數據,其他鏈上數據需授權才可見,具有很強的隱私保護機制,更多適用于不同組織之間的B2B交易。相較于公有鏈,聯盟鏈的參與記賬節點數量有限,可以更快達成一致性共識,數據上鏈的吞吐量更高。
在智能電網中,由數據采集基站通過有線或無線傳感網絡將邊緣終端設備采集的電力交易和監控數據進行整合,再中繼給鄰近的數據采集基站。能源聯盟鏈體系涉及4層架構,即數據感知層、網絡傳輸層、能源區塊鏈層和分布式應用層,并提出跨區域的數據采集基站作為全節點構建能源聯盟鏈。
(1) 數據感知層。通過電網各個環節的邊緣設備節點來采集、讀取和傳輸充電、用電、電流、設備運行狀態等信息。
(2) 網絡傳輸層。網絡中的節點之間通過Gossip協議來進行狀態同步及數據接入和傳輸。
(3) 能源區塊鏈層。負責對多源數據進行可信分布式存儲,并對請求數據訪問的節點進行身份校驗與智能合約授權。
(4) 分布式應用層。依托建設的能源區塊鏈產品,分析和處理電力數據,并輸出決策,為企業內部和外部用戶提供優質電力運營服務。
數據采集基站負責緩存不同邊緣設備節點采集到的電力數據、執行共識驗證流程、校驗緩存數據完整性等工作。每個基站均保存了一個完整的聯盟分布式賬本,但僅對與自己相關的數據擁有權限。
在微電網內,多個邊緣終端采集設備作為輕量節點與鄰近的數據采集基站組成邊緣能源私有鏈。這些邊緣采集節點無需保存所屬鏈中所有數據和交易內容,只需存儲區塊頭與自己相關的交易細節,并通過Merkle證明來判斷交易是否在當前的區塊鏈交易列表中。
本模型提出邊緣智能終端將采集到的數據進行加密,并將本地元數據經加密后上傳至所屬能源私有鏈安全存儲,而關聯的全量數據和元數據索引則經附近的數據采集基站運行共識驗證后,執行智能電網去中心化的安全可靠數據存儲。
(1) 區塊鏈系統初始化和密鑰生成。系統首先選擇一個安全參數λ,計算需公開的初始化參數pp,秘密保存的主密鑰x(x∈Z*q)。智能電網產生的電力數據流擁有哈希標識符ID,為了保障節點的身份合法性,本系統通過PKI證書體系為節點提供CA證書。對于每個采集節點而言,以其哈希地址、數據流ID、時間戳、CA證書為輸入,輸出獨一無二的通用唯一識別碼(Universally Unique Identifier,UUID),并以此作為節點身份ID被登記上鏈。通過該UUDI不能查驗到采集終端的地理位置等任何隱私信息。輸入UUID,根據密鑰生成函數,可獲得該采集節點的公私鑰對。
(2) 數據加密和簽名。利用國密算法加密電力數據得到密文,并對其使用對應采集節點的私鑰進行數字簽名。簽名密文經Merkle運算得到哈希值,以區塊頭形式分布式存儲于所屬的私有鏈中,而密文則同步上傳至鄰近的數據采集基站。該基站根據接收到的密文數據生成哈希索引。
(3) 編譯訪問策略。電力數據實際擁有者(即某一邊緣采集節點)將數據訪問策略編譯為智能合約,并上傳安裝至數據采集基站節點上,最終在Docker容器中運行。當第三方節點/用戶發送的數據訪問請求滿足合約中預設條件(包括需要數據共享范圍、共享時間段、共享次數、能否復制或下載、能否增添新內容等),則自動觸發合約執行,從而向該節點開放數據訪問接口。每一次訪問將以交易形式記錄于區塊鏈上,可被公開審計。
(4) 數據區塊的共識過程。考慮到邊緣采集節點通常還具有執行電力交易和賬戶資金轉賬功能,使用DPoS共識協議來完成電力元數據的上鏈。通過集體投票來選舉出記賬節點,并由該節點完成數據打包出塊。投票權重與每個采集節點在全網上鏈的數據量和電力交易量成正比,激勵更多節點選出最有效的記賬人。
每個數據采集基站節點根據從不同采集節點中繼獲得電力數據,以表格的形式編排,并可指定多列為索引字段,創建區域數據共享資源目錄。數據請求者可使用一個或多個關鍵詞進行查詢,進而獲取匹配的記錄。
3.3.1 基于智能合約的數據共享流程
當第三方節點/用戶發起數據訪問請求時,區塊鏈會員管理機制對該請求者執行UUID身份認證。若身份合法,則匹配相應的數據共享策略,同時將共享請求發送至共享策略合約并觸發預置條件,每次觸發時都會自動生成共享令牌(Token)。該共享令牌是由隨機校驗碼和對應合約發布者公鑰封裝組成,并由數據采集基站節點進行數字簽名。該令牌作為請求交易確認發回智能合約。
數據采集基站節點接收到共享令牌,并攜帶該令牌訪問該數據的第三方節點/用戶。該節點用數據采集基站節點的公鑰對共享令牌進行簽名驗證,得到隨機校驗碼和合約發布者的公鑰,驗證其正確性。驗證通過后,數據所有者根據數據采集基站節點的公鑰解密出授權策略,策略合約里會封裝數據訪問操作權限,包括需要數據共享范圍、共享時段、共享次數、能否復制或下載、能否增添新內容等。
根據合約里的訪問約束條件,對第三方節點/用戶提供的證明進行核驗。若所有的條件和證明都合規、合理,則將核驗通過結果返回給共享策略合約。共享策略合約根據核驗結果自動放行或阻斷數據采集基站節點的共享數據API接口,完成電力數據的可控安全共享。
3.3.2 數據共享交易的共識上鏈
方案中訪問策略編譯為智能合約,當代碼合約完成后,以交易形式廣播給其他節點共識驗證,再存儲于分布式賬本中。
采用Raft一致性協議算法來完成共享交易的共識上鏈。首先從眾多的數據采集基站節點中取出領導節點,再由該節點通知其他節點同步記賬。具體選舉過程如下。
(1) 初始狀態下,集群中所有的數據采集基站節點處于跟隨者狀態。
(2) 當其中一個跟隨者節點在選舉時間內未收到領導節點的心跳消息,則轉化為候選者狀態。
(3) 候選者節點向其他跟隨者節點發出要求選舉自己的投票請求。
(4) 當某一候選節點接收到集群中超過半數的投票,則其身份轉換為領導者狀態。
(5) 成為領導者之后,領導節點將定時向跟隨節點同步日志通知。跟隨節點遵從其指令將新的日志內容追加到各自日志中。
(6) 大多數跟隨節點將交易記錄寫入賬本后,確認追加成功,發出確認成功信息。
(7) 在下一個心跳中,領導節點會通知所有跟隨節點更新確認的記賬內容。對于每個新的交易記錄,都會重復上述過程。
每一次的授權和訪問行為經過共識驗證后,都會以交易哈希形式記錄于區塊鏈上,不可篡改,可實時追溯。
(1) 所有節點的身份都是以企業級CA系統簽發的CA證書作為輸入條件生成。通過該身份,可以使節點對網絡上傳輸的信息進行加密和解密、數字簽名和簽名驗證,確保網絡中信息傳輸的保密性、數據交換的完整性、發送信息的不可否認性、交易者身份的確定性。
(2) 將訪問策略編譯為智能合約,能夠實現對電力數據的自主訪問控制。同時,將合約編譯權利與合約校驗權利分離給邊緣采集節點(數據實際擁有者)和數據采集基站(數據資源提供者),能夠實現對數據的安全訪問,防止非法串謀泄露。
(3) 利用區塊鏈對數據執行分布式安全存儲,這種存儲方法不依賴于傳統數據中心存儲,避免了傳統中心式的單節點故障。節點之間通過端—端的方式來完成數據傳輸和訪問授權。
(4) 采用Raft共識算法,具有較高的容錯性,共識效率較高,且實現易工程化。Raft容錯性高于經典PBFT共識,具有更高的安全性。研究學者嘗試將PBFT與Raft兩種協議融合為RBFT共識協議,該共識協議的通信開銷為4.06×104比特,相較于經典PBFT通信開銷(3.51×106比特)降低了98.8 %。隨著網絡節點的增多,該共識協議通信開銷越大,并能保證高共識效率,其系統每秒交互量約為經典PBFT的300 %~400 %,更適用于對系統交互要求更高的聯盟鏈應用場景。
隨著智能電網中接入的邊緣智能終端設備日益增多,傳統中心化的數據存儲和共享模式難以滿足多主體之間的實時交互需求。區塊鏈作為一種分布式數據賬本技術能夠實現節點之間端—端的數據安全共享。跨網的雙層多鏈的數據存儲系統將數據分布式存儲于第一層的能源私有鏈上,實現數據安全存儲,同時將數據訪問控制合約部署于第二層的能源聯盟鏈上,自動執行安全有效的數據共享訪問。在未來工作中,還將開展仿真實驗,以求通過量化分析進一步驗證本方案的邏輯性。