劉世良
(國網(wǎng)青海省電力公司 信息通信公司,青海 西寧 810008)
隨著信息和通信技術的不斷發(fā)展,電力公司和客戶[1-2]之間實現(xiàn)了雙向通信。智能電表[3-4](smart meters,SM)已廣泛應用于電力服務。為了實現(xiàn)最優(yōu)調(diào)度,在用戶家中安裝了大量的短信息系統(tǒng),以按需或按計劃收集近實時的用電量數(shù)據(jù)。根據(jù)采集到的數(shù)據(jù),控制中心可以提供動態(tài)電價,用戶可以通過改變用電行為從中受益。比如,一些用戶在用電高峰時段,如果意識到用電成本過高,就會調(diào)整用電行為。此外,還可以根據(jù)總用電需求提前制定用電計劃。
然而,SM收集的近實時用電數(shù)據(jù)和用電請求可能會泄露用戶的隱私[5-6]。例如,通過分析用戶的耗電情況來推斷用戶的行為,這對用戶隱私構(gòu)成了不可忽視的威脅。此外,用于制定功率計劃的功率消耗請求可能會在將來披露用戶的活動計劃。再如,竊賊可能從電源請求中發(fā)現(xiàn)用戶何時不在家,并在此時實施盜竊行為。
盡管在智能電網(wǎng)隱私保護方面已經(jīng)做了許多工作,但仍有一些挑戰(zhàn)有待解決。其一是數(shù)據(jù)聚合[7-8]的信任方的可用性;其二是隱藏用戶真實身份和匿名之間的聯(lián)系[9];其三是身份驗證效率較為低下[10]。由于智能電網(wǎng)是一個龐大而復雜的系統(tǒng),傳統(tǒng)的認證機制因計算量大、時延大而不適用于智能電網(wǎng)。
為解決上述問題,筆者提出了基于區(qū)塊鏈的電力網(wǎng)絡安全系統(tǒng)。該系統(tǒng)能夠在缺乏可信第三方進行數(shù)據(jù)聚合的情況下,在每個時隙隨機選擇一個用戶來聚合所有用戶的數(shù)據(jù),并將這些數(shù)據(jù)記錄到區(qū)塊鏈中以確保消息的完整性。
基于區(qū)塊鏈的電力網(wǎng)絡安全系統(tǒng)模型如圖1所示,其是一個由鄰域網(wǎng)(neighborhood area networks,NAN)和廣域網(wǎng)(wide area networks,WAN)組成的多層智能電網(wǎng)通信網(wǎng)絡。NAN由附近大量的智能電表組成。SM將其儀表讀數(shù)發(fā)送到挖掘節(jié)點進行數(shù)據(jù)聚合,每個組的聚合數(shù)據(jù)通過廣域網(wǎng)發(fā)送到中心單元。
圖1 基于區(qū)塊鏈的電力網(wǎng)絡安全系統(tǒng)
根據(jù)用戶的用電類型將用戶分為不同的組。在每個時隙中,根據(jù)平均用電量數(shù)據(jù)選擇一個用戶作為挖掘節(jié)點。挖掘節(jié)點負責聚合數(shù)據(jù)并將這些數(shù)據(jù)記錄到私有區(qū)塊鏈中。
密鑰管理中心(key management center,KMC)主要負責為用戶初始化所有密鑰。KMC為每個用戶生成多個公鑰和私鑰,并將公鑰作為用戶的匿名。然后,通過收集匿名為每個組創(chuàng)建一個布隆過濾器,并將布隆過濾器發(fā)送給相應組中的所有用戶。
每個組的聚合數(shù)據(jù)將通過廣域網(wǎng)發(fā)送到控制中心??刂浦行母鶕?jù)聚合的近實時數(shù)據(jù)繪制電力消耗曲線,用于電力規(guī)劃和動態(tài)定價。
計費中心負責在計費日期到來時,根據(jù)每個組的區(qū)塊鏈計算每個用戶的計費數(shù)據(jù)。
KMC負責從一開始就引導整個系統(tǒng)。具體來說,KMC執(zhí)行以下系統(tǒng)初始化過程。所提方案的執(zhí)行過程如圖2所示。
圖2 系統(tǒng)執(zhí)行過程
(1)密鑰生成。密鑰生成選取RSA算法,具體過程描述如下:①KMC選擇兩個大素數(shù)p和q,計算n=pq;②選擇一個整數(shù)e,滿足1 每個用戶將其ID發(fā)送到KMC進行注冊,并通過運行RSA算法獲取公鑰和私鑰。每個用戶可以獲取多對公鑰和私鑰,并將公鑰作為其匿名。 (2)布隆過濾器。布隆過濾器是一種用于快速身份驗證的快速查詢算法,可以快速確認身份ID在系統(tǒng)中是否合法。根據(jù)用電類型將用戶分為不同的組,KMC為每個組創(chuàng)建布隆過濾器。系統(tǒng)中布隆過濾器過程描述如下:① KMC設置一個具有θ位的數(shù)組;②使用k個哈希函數(shù)計算同一組中所有匿名的哈希值;③將索引值等于hi(pk)modθ的映射值設置為1;④KMC將布隆過濾器發(fā)送給同一組中的所有用戶。 為了對同一組中的其他用戶隱藏身份,使用匿名代替用戶的真實身份,每個用戶可以用多個匿名綁定自己的用電量數(shù)據(jù),進一步加強數(shù)據(jù)安全。 在每個時隙,如15 min,每個用戶隨機將自己的用電量數(shù)據(jù)拆分為不同的匿名關聯(lián),并在群組中發(fā)布自己的用電量數(shù)據(jù)mi、匿名pki和EKski(mi|t|pki)。其中,EKski(mi|t|pki)表示電量數(shù)據(jù)mi、時間戳t和匿名pki的串聯(lián),且由發(fā)送方的私鑰ski進行加密。 值得注意的是,分配的數(shù)據(jù)可能是負數(shù)。因此,用戶的隱私敏感數(shù)據(jù)可以在非高峰時間(如午夜)得到保護。此外,每個用戶都可以根據(jù)實際需要將用電量數(shù)據(jù)或多或少進行匿名處理。最后,用戶將在群組中發(fā)布{mi,t,pki,EKski(mi|t|pki)}。 1.4.1 用戶匿名可信度 在攻擊者偽造用戶匿名的情況下,通過零知識證明[11]來驗證用戶匿名的可信度。當一個用戶收到另一個用戶發(fā)送的{mi,t,pki,EKski(mi|t|pki)}時,其使用發(fā)送者的匿名pki來驗證簽名{mi,t,pki,EKski(mi|t|pki)}。如果{mi,t,pki,EKski(mi|t|pki)}能被pki正確解碼,則證明該匿名是可信的。 1.4.2 用戶匿名驗證 當一個未注冊的攻擊者構(gòu)造一個匿名并向系統(tǒng)發(fā)送虛假數(shù)據(jù)時,系統(tǒng)使用布隆過濾器驗證用戶匿名。對于每個接收到的匿名,接收者將使用零知識證明驗證用戶合法性。如果所有驗證均通過,則證明匿名是合法的。否則,該匿名將視為非法用戶,并由接收方刪除。 身份認證完成后,所有用戶都會確定挖掘節(jié)點,并對自己的用電數(shù)據(jù)進行聚合,將這些數(shù)據(jù)記錄到區(qū)塊鏈中。首先,每個用戶根據(jù)所有接收到的數(shù)據(jù)計算平均用電量數(shù)據(jù)。其次,選擇數(shù)據(jù)最接近平均值的節(jié)點作為挖掘節(jié)點??赡苡卸鄠€匿名的平均用電量數(shù)據(jù)與平均值的距離相同,這意味著所有匿名都將是該時隙中的挖掘節(jié)點。然而,這種特殊情況并不影響新塊的生成,因為每個挖掘節(jié)點生成的新塊是相同的。在從組中的所有用戶收集數(shù)據(jù)之前,沒有人知道平均值的具體數(shù)字,因此,惡意攻擊用戶很難成為挖掘節(jié)點。 區(qū)塊鏈是一個按時間順序排列的區(qū)塊,可以看作是一個復制的狀態(tài)機。對于每個塊,事務在Merkle樹中散列。Merkle樹的根哈希和前一個塊的哈希記錄在塊頭中。由于這些塊是通過前一個塊的散列來連接的,因此任何想要更改回溯事務的人都必須修改該塊和后面的所有塊。由于實用終端設備只支持輕量級操作,筆者設計了一個簡單的隨機選擇挖掘節(jié)點的解決方案,選擇數(shù)據(jù)最接近時隙平均用電量數(shù)據(jù)的用戶作為挖掘節(jié)點。由于在接收到所有用戶的數(shù)據(jù)之前,沒有人能夠確定平均用電量數(shù)據(jù)的值,因此可以保證挖掘節(jié)點選擇的隨機性和唯一性。 1.6.1 區(qū)塊鏈建立 建立的區(qū)塊鏈結(jié)構(gòu)如圖3所示。選擇挖掘節(jié)點后,將用電量數(shù)據(jù)記錄到區(qū)塊鏈中,并在該組所有用戶中發(fā)布,進行消息認證。具體過程描述如下:①利用Merkle樹中的挖掘節(jié)點對用電量數(shù)據(jù)進行哈希處理;②挖掘節(jié)點將根哈希值、時間戳、前一個塊的哈希值、匿名和平均值記錄到塊頭中;③將新塊發(fā)布給組中的其他用戶進行消息認證;④重復上述過程,直至處理完所有節(jié)點。 圖3 區(qū)塊建立過程 1.6.2 區(qū)塊鏈驗證 在接收到新塊之后,每個用戶開始驗證記錄的真實性。如果新塊中的記錄正確,用戶將這個塊附加到保存在數(shù)據(jù)集中的區(qū)塊鏈上。如果新區(qū)塊中沒有人對記錄進行比對,挖掘節(jié)點會將用電量數(shù)據(jù)的總和發(fā)送給控制中心。 為了滿足智能電網(wǎng)中的實時調(diào)度,每個用戶只需對自己數(shù)據(jù)的相關記錄進行驗證,即可離線進行驗證。因此,區(qū)塊鏈技術將實現(xiàn)以分散的方式聚合接近實時數(shù)據(jù)的方法。 控制中心在收到各組用電量數(shù)據(jù)總和后,進行調(diào)度處理,鼓勵用戶調(diào)整用電行為。在每個計費周期(如一周或一個月),每個組的私有區(qū)塊鏈將發(fā)送到計費中心。在不同時間內(nèi)動態(tài)定價描述為p0,p1,…,pf,計費中心可根據(jù)以下公式計算用電費用psum: psum=E0p0+E1p1+…+Efpf 式中:E0,E1,…,Ef表示區(qū)塊鏈中記錄的不同時隙中的用電量數(shù)據(jù)。區(qū)塊鏈能夠保證數(shù)據(jù)的完整性,因此可以方便地實現(xiàn)準確的計費。 對所提系統(tǒng)的性能進行驗證與評估,執(zhí)行仿真時環(huán)境為:服務器為CPU i5的聯(lián)想工作站,內(nèi)存32 GB,操作系統(tǒng)為windows10×64;客戶端為CPU i5,內(nèi)存8 GB,操作系統(tǒng)為windows7×64;系統(tǒng)開發(fā)環(huán)境使用JAVA中Spring框架作為輸入來開發(fā)架構(gòu)的工作原型。實驗時將布隆過濾器的錯誤概率設為0.01,假設一個組中的用戶數(shù)在0到200之間,同時利用多組服務器模擬多層智能電網(wǎng)通信網(wǎng)絡,網(wǎng)絡總帶寬為100 MB。 首先,與傳統(tǒng)不采用布隆過濾器的認證方案的時間復雜度進行比較,結(jié)果如圖4所示,可以看出在身份認證過程中,所提方案的時間復雜度遠低于沒有布隆過濾器的傳統(tǒng)方案。 圖4 不同方法時間復雜度對比結(jié)果 進一步,將所提方案與PPM-HAD[12]和DG-APED[13]方法在計算成本上進行了比較,結(jié)果如圖5所示,可以看出所提方案明顯優(yōu)于PPM-HAD和DG-APED,當用戶數(shù)量為200時,計算量分別減少了86.25%和68.57%。 圖5 不同方法計算復雜度對比結(jié)果 (1)基于區(qū)塊鏈技術對電力網(wǎng)絡數(shù)據(jù)信息管理及安全進行研究與分析,提出了一種基于區(qū)塊鏈的電力網(wǎng)絡安全系統(tǒng)實現(xiàn)電力數(shù)據(jù)的隱私保護。 (2)在仿真分析時,研究僅保護網(wǎng)絡匿名攻擊行為,對于其他網(wǎng)絡攻擊尚未研究。同時,未來可對DOS攻擊、加密算法等進行研究,進一步提升系統(tǒng)性能。1.3 數(shù)據(jù)收集
1.4 身份驗證
1.5 挖掘節(jié)點選擇
1.6 區(qū)塊鏈
1.7 調(diào)度和計費
2 仿真與分析
3 結(jié)論