張利華,胡方舟,黃 陽,萬源華,李晶晶
1.華東交通大學軟件學院,南昌330013
2.華東交通大學電氣與自動化工程學院,南昌330013
微電網(wǎng)是結(jié)合分布式發(fā)電、負荷、儲能裝置及控制而形成的一個單一可控的獨立供電系統(tǒng),其電源多為容量較小的分布式電源,因此微電網(wǎng)是大電網(wǎng)的有力補充,也是智能電網(wǎng)領域的重要組成部分[1].微電網(wǎng)電力交易的方案存在著很多問題.例如:電力交易無法追蹤溯源,缺乏安全可信任的支撐等,這些問題導致目前微電網(wǎng)電力交易規(guī)模很小.微電網(wǎng)具有分布式部署的特點,存在節(jié)點之間的信任認證不統(tǒng)一、不同區(qū)域的節(jié)點認證成本過高等問題[2].
2008年,一位化名為“中本聰”的學者提出“A peer-to-peer electrontic cash system”[3],由此誕生了比特幣,而區(qū)塊鏈技術就是比特幣的核心技術.區(qū)塊鏈是一種按照時間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈式數(shù)據(jù)結(jié)構(gòu),并以密碼學方式保證其不可篡改和不可偽造的去中心化、去信任的分布式共享總賬系統(tǒng).從數(shù)據(jù)安全的角度來看,區(qū)塊鏈實質(zhì)上是一種不可能被更改的分布式數(shù)據(jù)庫.攻擊者必須控制至少51%的節(jié)點才能更改分布式數(shù)據(jù)庫,而實際上區(qū)塊鏈上的節(jié)點成千上萬,可見攻擊者幾乎不可能做到[4].
區(qū)塊鏈技術運用非對稱加密、數(shù)字簽名、工作量證明等機制實現(xiàn)了點對點交易[3].工信部在《中國區(qū)塊鏈技術和應用發(fā)展白皮書(2016)》中指出區(qū)塊鏈的應用已延伸到物聯(lián)網(wǎng)、智能制造、供應鏈管理、數(shù)字資產(chǎn)交易等多個領域,并且有能力引發(fā)新一輪的技術創(chuàng)新和產(chǎn)業(yè)變革.基于區(qū)塊鏈的交易模式無需承擔交易機構(gòu)的運行管理成本,此外分布式數(shù)據(jù)庫存儲方式又降低了購買服務器的成本,并且能夠保證交易數(shù)據(jù)的透明和安全[4].
基于上述微電網(wǎng)及區(qū)塊鏈技術的特點,本文提出了微電網(wǎng)基于聯(lián)盟鏈的身份認證方案.微電網(wǎng)結(jié)合區(qū)塊鏈技術,既能保留其原先分布式部署的特點又能有效解決微電網(wǎng)節(jié)點之間的身份認證問題.
相對于公有鏈,聯(lián)盟鏈、私有鏈具有以下優(yōu)勢:1)成員只要得到管理方的許可即可改變區(qū)塊鏈運行規(guī)則而不必征求其他節(jié)點的意見,具有較高的效率;2)交易的確認只在機構(gòu)內(nèi)部人員之間進行而不涉及外部用戶,從而提升了聯(lián)盟鏈、私有鏈之間的共識效率.在使用過程中,聯(lián)盟鏈、私有鏈要求所有節(jié)點的身份都經(jīng)過認證便于監(jiān)管,因而得到了監(jiān)管機構(gòu)更多的支持.然而,私有鏈的寫入權(quán)限由某個組織或機構(gòu)控制,且參與節(jié)點的資格被嚴格控制,可見私有鏈的擴展性不強.本文經(jīng)過比較選擇采用聯(lián)盟鏈.
文獻[5]設計了一個三層模型,分別是電力控制中心、配電網(wǎng)、智能電表.該方案通過盲簽名方式實現(xiàn)智能電表的身份認證,即以使簽名者不清楚簽名內(nèi)容生成認證憑證的方式實現(xiàn)身份認證;同時該方案還實現(xiàn)了消息認證、身份隱私保護、請求消息的保密、消息的可追溯性.然而,該方案中的智能電表需要頻繁地與控制中心交互信息,造成了智能電表過多的性能損耗.文獻[6]使用環(huán)簽名實現(xiàn)智能電表的身份認證及隱私保護.在該方案中,發(fā)電方將一個社區(qū)或者一棟建筑物的用電量進行聚合后不會泄露用戶用電的信息,但計算復雜且通信開銷大.文獻[7]是通過給智能電表頒發(fā)證書的方式進行身份認證的,將智能電表一方作為操作域而將用戶作為客戶域,使用可信第3 方作為證書發(fā)送方,但該方案缺少了智能電表與發(fā)電方的身份認證過程.文獻[8]基于區(qū)塊鏈的智能電表身份認證方案,由可信第3 方分發(fā)密鑰對,再由密鑰對生成自身公鑰和私鑰;根據(jù)公鑰加密、私鑰解密原理解決身份認證問題,同時采用信譽值的方法解決節(jié)點信任問題.該方案能有效保護用戶身份信息,不過計算量較大.文獻[9]基于區(qū)塊鏈的智能物件認證技術方案設計,采用零知識證明(zero-knowledge proof, ZKP)解決智能物件的身份認證問題,同時結(jié)合DH 密鑰交換算法解決物件之間的共識問題.然而,該方案采用的DH 密鑰交換算法計算量大,通常適用于智能物件節(jié)點數(shù)量不多的情況,而不適用于節(jié)點眾多的情況.
微電網(wǎng)電表安裝在微電網(wǎng)節(jié)點,記錄用戶的發(fā)電以及用電情況.這種電表本身的運算能力以及數(shù)據(jù)存儲能力并不強,于是將系統(tǒng)分為四部分:管理機構(gòu)(management organization,MO)、區(qū)域管理器(region manager, RM)、微電網(wǎng)節(jié)點(micro-grid node, MN)、云端數(shù)據(jù)中心(clould data center, CDC),系統(tǒng)結(jié)構(gòu)如圖1所示.管理機構(gòu)對區(qū)域管理器以及微電網(wǎng)節(jié)點提供身份管理,但是不參與電力交易以及身份認證的過程;區(qū)域管理器是某一個區(qū)域的電力管理中心,用來驗證微電網(wǎng)電表的身份信息并對微電網(wǎng)電表的請求進行響應,也可以和其他區(qū)域進行電力交易.本方案身份認證協(xié)議是基于零知識證明中的Feige-Fiat-Shamir(FFS)[10]身份識別協(xié)議.
圖1 微電網(wǎng)節(jié)點的架構(gòu)示意圖Figure 1 Architecture diagram of micro-grid node
微電網(wǎng)節(jié)點都安裝有一個身份認證的模塊,該模塊將零知識證明算法用于新節(jié)點的認證.本方案將計算能力及存儲能力較強的區(qū)域管理器認定為聯(lián)盟鏈的授權(quán)節(jié)點,而將微電網(wǎng)節(jié)點認定為聯(lián)盟鏈的一般節(jié)點.
2.2.1 系統(tǒng)初始化
微電網(wǎng)節(jié)點向區(qū)域管理器提出注冊申請并且附著系統(tǒng)時間戳T,區(qū)域管理器在驗證時間戳T之后向管理機構(gòu)申請,管理機構(gòu)篩選申請是否符合條件,如果符合就向云端數(shù)據(jù)中心申請.云端數(shù)據(jù)中心再次篩選申請是否符合條件,通過驗證以后將微電網(wǎng)節(jié)點的ID 發(fā)送給區(qū)域管理器,區(qū)域管理器再將ID 號發(fā)給微電網(wǎng)節(jié)點.系統(tǒng)初始化流程如圖2所示.
圖2 微電網(wǎng)節(jié)點系統(tǒng)初始化Figure 2 Initialization of micro-grid node system
2.2.2 微電網(wǎng)的身份認證階段
根據(jù)FFS 身份識別協(xié)議,由可信賴第3 方選n=p1p2,p1、p2為兩個大素數(shù),并選擇k個不同的隨機數(shù)v1,v2,···,vk,vi是modn的平方剩余,且可逆.以v1,v2,···,vk為證明者P的公鑰,計算最小正整數(shù)si,將作為P的私人密鑰.零知識證明的流程見圖3.具體協(xié)議如下:
1)P選擇隨機數(shù)r(r 2)V選擇k個隨機二進制串傳送給P,其中bi ∈{0,1}. 3)P計算出并發(fā)送給V. 4)V驗證 根據(jù)FFS[10]協(xié)議,將云端數(shù)據(jù)中心視為可信第3 方,微電網(wǎng)節(jié)點視為驗證者P,區(qū)域管理器視為被驗證者V.每個新加入的微電網(wǎng)節(jié)點需要計算出x=r2modn作為自己的零知識證明值用以驗證.只要新節(jié)點通過驗證,區(qū)域管理器就將該節(jié)點的ID 號寫入Merkle tree,并在整個聯(lián)盟鏈中全網(wǎng)廣播.ID 寫入Merkle tree 的流程如圖4所示. 圖3 零知識證明流程圖Figure 3 Zero-knowledge proof flow chart 圖4 ID 寫入Merkle tree 的流程圖Figure 4 Write ID to Merkle tree flowchart 區(qū)塊鏈共識機制主要分為工作量證明(proof of work, PoW)、權(quán)益證明(proof of stake,PoS)、實用拜占庭容錯系統(tǒng)(practical Byzantine fault tolerance, PBFT)、瑞波共識機制算法(Ripple consensus protocol, RCP)[11].PoW 證明的優(yōu)點是完全去中心化、節(jié)點自由進出,但是這種證明也存在以下缺點:1)比特幣已經(jīng)吸引全球大部分的算力,其他區(qū)塊鏈應用很難獲得相同的算力來保障自身的安全;2)挖礦造成大量的資源浪費;3)共識達成的周期較長,不適合商業(yè)應用.PoS 的優(yōu)點是在一定程度上縮短了共識達成的時間,但還需要“挖礦”,本質(zhì)上沒有解決商業(yè)的應用.PBFT 的優(yōu)點是不需要“挖礦”,也不需要多重驗證交易,節(jié)省了等待確認交易安全性的時間,但不適合節(jié)點數(shù)量過大的區(qū)塊鏈系統(tǒng),擴展性差.RCP 的優(yōu)點是不需要“挖礦”,適用于節(jié)點眾多的環(huán)境,可以讓系統(tǒng)中所有節(jié)點在一個相對很短的時間內(nèi)自動接收總賬本交易記錄的更新.由于微電網(wǎng)環(huán)境下涉及的節(jié)點眾多,需要一個共識機制速率大且計算開銷較小的一個共識機制.根據(jù)以上對比可知瑞波共識機制適用于由微電網(wǎng)節(jié)點組成的聯(lián)盟鏈. 瑞波共識機制是一種基于互聯(lián)網(wǎng)的開源支付協(xié)議,可以實現(xiàn)去中心化的貨幣兌換、支付與清算功能.在瑞波網(wǎng)絡中,交易由客戶端(應用)發(fā)起,由追蹤節(jié)點(tracking node)或驗證節(jié)點(validating node)將交易廣播到整個網(wǎng)絡中.追蹤節(jié)點的主要功能是分發(fā)交易信息以及響應客戶端的賬本請求.除包含追蹤節(jié)點的所有功能外,驗證節(jié)點還能夠通過共識協(xié)議在賬本中增加新的賬本實例數(shù)據(jù).瑞波共識機制節(jié)點交互過程見圖5,其投票流程見圖6. 瑞波共識的達成發(fā)生在驗證節(jié)點之間,每個驗證節(jié)點均預先配置了一份可信任節(jié)點名單(unique node list, UNL).在名單上的節(jié)點可對交易能否達成進行投票,每隔數(shù)秒瑞波網(wǎng)絡將進行以下共識,具體步驟如下: 步驟1每個驗證節(jié)點會不斷收到從網(wǎng)絡發(fā)送來的交易,將這些交易與本地賬本進行數(shù)據(jù)驗證后直接丟棄不合法的交易,再將合法的交易匯總成交易候選集(candidate set).交易候選集里還包括之前共識過程無法確認而遺留下來的交易. 步驟2每個驗證節(jié)點把自己的交易候選集作為提案發(fā)送給其他驗證節(jié)點. 步驟3驗證節(jié)點在收到其他節(jié)點發(fā)來的提案后進行判斷,如果不是來自UNL 的節(jié)點,則忽略該提案;如果是來自UNL 的節(jié)點,就會對比提案中的交易和本地的交易候選集.如果有相同的交易,該交易就獲得一票.在一定時間內(nèi),當交易獲得超過50%的票數(shù)時,該交易進入下一輪.對于不超過50%的交易,將留待下一次共識過程去確認. 步驟4驗證節(jié)點把超過50%票數(shù)的交易作為提案發(fā)給其他節(jié)點,同時提高所需票數(shù)的閾值至60%,重復步驟3 和4,直至閾值達到80%. 步驟5驗證節(jié)點把通過80%的UNL 節(jié)點確認的交易正式寫入本地的賬本數(shù)據(jù),這個數(shù)據(jù)稱為最后關閉賬本,即賬本最后的狀態(tài). 在瑞波共識機制中,參與投票節(jié)點的身份已知,因此算法的效率高于PoW 等匿名共識算法的效率,且交易的確認時間只需數(shù)秒.當瑞波共識機制的拜占庭容錯(Byzantine fault tolerance, BFT)能力為(n ?1)/5 時,就可以容忍整個網(wǎng)絡中20%的節(jié)點出現(xiàn)拜占庭錯誤而不影響正確的共識. 圖5 節(jié)點交互示意圖Figure 5 Diagram of node interaction process 本方案采用第3 代B+型樹莓派作為載體模擬節(jié)點,以Remix-IDE 作為以太坊智能合約的開發(fā)工具,采用Solidity 語言編寫,在以太坊測試網(wǎng)上運行.在相同的實驗條件下,對3 個方案的身份認證算法、共識算法進行測試.實驗分為兩個:實驗1 用來監(jiān)測3 個方案中主節(jié)點CPU 的耗能,以及判斷3 個方案的身份認證算法的計算量;實驗2 用來測試3 個方案節(jié)點連接的耗時,并判斷3 個方案共識算法的性能.實驗涉及的硬件/軟件的詳細參數(shù)見表1. 圖6 節(jié)點投票流程圖Figure 6 Node voting flow chart 表1 實驗硬件/軟件參數(shù)Table 1 Experimental hardware/software parameters 4.2.1 實驗1 CPU 耗能方案對比 CPU 耗能方案對比情況如圖7所示: 圖7 CPU耗能方案對比Figure 7 Comparison of CPU energy consumption schemes 實驗1 將一個樹莓派作為主節(jié)點,監(jiān)測主節(jié)點連接1 個節(jié)點到5 個節(jié)點時CPU 的耗能情況.由圖7可以看出:文獻[8]方案在相同節(jié)點接入時耗能最高,本方案的耗能最低,說明本方案使用的零知識證明在連接相同節(jié)點時的計算量在3 個方案中最小,計算開銷最低. 4.2.2 實驗2 節(jié)點連接耗時方案對比 節(jié)點連接耗時方案對比情況如圖8所示: 圖8 節(jié)點連接耗時方案對比Figure 8 Comparison of node connection time-consuming schemes 實驗2 將一個樹莓派作為主節(jié)點,監(jiān)測連接一個次節(jié)點到5 個次節(jié)點所消耗的時間.由圖8可以發(fā)現(xiàn):文獻[9]方案在相同節(jié)點接入時的耗時最長.本方案采用的瑞波共識機制耗時最短,優(yōu)于文獻[8]方案的信譽值投票及文獻[9]方案的DH 密鑰交換共識算法.由兩個實驗可以得知:本方案采用的零知識證明算法在身份認證中的計算開銷最小,瑞波共識機制的消耗連接時間最短,共識速率最大. 文獻[8]基于區(qū)塊鏈的智能電表身份認證方案,由第3 方產(chǎn)生密鑰對,以公鑰加密、私鑰解密的方式解決身份認證.該方案需要消耗節(jié)點大量的效能用于節(jié)點的哈希運算.對于微電網(wǎng)一般節(jié)點來講,計算能力并不強,無法承擔過多節(jié)點的哈希運算.文獻[9]基于區(qū)塊鏈的智能物件認證技術方案設計,采用零知識證明來解決智能物件的身份認證問題,結(jié)合DH 密鑰交換算法解決物件之間的共識問題.對于智能物件少量節(jié)點相互認證的情況,采用DH 密鑰交換算法是可行的;對于微電網(wǎng)成百上千個節(jié)點來講,DH 算法的計算能力顯然不足.本文采用零知識證明和瑞波共識機制,其最大的優(yōu)點就是零知識證明計算開銷小而且瑞波共識機制不需要“挖礦”,可以讓系統(tǒng)中所有節(jié)點在數(shù)秒內(nèi)自動接收針對總賬本交易記錄的更新. 定理FFS 零知識證明用于身份認證時具備完備性、正確性和安全性. 證明 1)完備性 如果P和V遵守協(xié)議,且P知道私鑰則應答y是模n下r2xe的平方根,在協(xié)議當中V接受P的證明,所以協(xié)議是完備的. 2)正確性 a)P不知道sk,P發(fā)送x ≡r2modn給V,V將bk發(fā)送給P.當b=0 時,V可通過檢驗而受騙;當b=1 時,V發(fā)現(xiàn)P不知道s,但連續(xù)受騙概率為1/2kt. b)V無法知道P的秘密,因為V沒有機會產(chǎn)生(0, 1)以外的數(shù)字,P送給V的消息中僅為P知道V的平方根這一消息. 3)安全性 a)P選取一個隨機數(shù)r,r b)V將一個k位的隨機二進制發(fā)送給P. c)P計算隨后將y發(fā)送給V. d)V驗證 P和V重復這個協(xié)議t次直至V確信P知道k與t.P欺騙V的概率為1/2kt,隨著k與t的不斷變大,P欺騙V的概率為0. 根據(jù)區(qū)塊鏈的特點將每一筆交易都記錄在區(qū)塊鏈中,并且將賬本分布式存儲在各個節(jié)點上,這樣就可以保證數(shù)據(jù)不易被篡改,提高了數(shù)據(jù)的安全性和可靠性. 5.2.1 內(nèi)部攻擊 本文采用云端數(shù)據(jù)中心對每一個微電網(wǎng)節(jié)點都設定了唯一一個ID,區(qū)塊鏈技術又采用分布式存儲方案,從根本上阻止了系統(tǒng)中不法用戶假冒其他用戶身份發(fā)起內(nèi)部攻擊. 5.2.2 重放攻擊 微電網(wǎng)節(jié)點系統(tǒng)初始化使用了時間戳T,須在有效時間內(nèi)通過驗證才能進行下一步申請,加上所有的電力交易都有時間戳,這樣就可以有效抵抗重放攻擊. 5.2.3 rd games, blockchain, HuffMHT, encryption algorith中間人攻擊 攻擊者通過入侵網(wǎng)絡控制當中的一個或者幾個節(jié)點攔截信息并且修改信息,最終達到控制整個網(wǎng)絡的目的.該設計采用了瑞波共識機制以及區(qū)塊鏈本身的分布式帳本的特點,因此攻擊者即使掌握了幾個節(jié)點也不能篡改整個區(qū)塊鏈上面的賬本信息. 5.2.4 竊聽攻擊 本方案是基于零知識身份認證設計方案,即使攻擊者惡意竊聽,也只能獲得無用的一系列隨機二進制串,所以竊聽攻擊無效. 5.2.5 女巫攻擊 首先每一個新的節(jié)點在注冊階段需要得到云端服務器以及區(qū)域管理器共同的認證才能加入聯(lián)盟鏈,其次采用的瑞波共識機制使得驗證節(jié)點必須得到網(wǎng)絡中大多數(shù)節(jié)點的認可,否則視為惡意節(jié)點.所以,兩者的結(jié)合可以解決女巫攻擊. 5.2.6 DDOS 攻擊 區(qū)塊鏈的所有節(jié)點都是分布式部署,即使單個節(jié)點出現(xiàn)故障,也不會影響其他節(jié)點正常工作.相對于中心化的服務系統(tǒng)架構(gòu),它對抵抗拒絕服務攻擊更有效.因此,區(qū)塊鏈分布式部署、去中心化的結(jié)構(gòu)部署能夠有效防止DDOS 攻擊. 5.2.7 雙向認證 本文將云端作為驗證方,而將微電網(wǎng)節(jié)點作為被驗證方,只有通過了云端數(shù)據(jù)中心的驗證才能通過身份認證. 本方案將區(qū)塊鏈技術應用于微電網(wǎng)身份認證,既能結(jié)合微電網(wǎng)分布式部署的特點,又能將區(qū)塊鏈所具有的數(shù)據(jù)不易篡改、交易數(shù)據(jù)可追蹤溯源等特點應用于身份認證.另外,將區(qū)塊鏈技術運用到能源系統(tǒng)中不僅能夠提高交易的可信程度,還能建立一套完整的可追溯交易體系對發(fā)生的交易進行監(jiān)管,避免了傳統(tǒng)電力市場中存在的假賬和錯賬問題[2].瑞波共識機制部署在節(jié)點眾多的環(huán)境下,能夠快速解決每個節(jié)點之間的共識問題.最后,通過方案對比、性能分析、安全性證明及分析闡述了本方案在安全可靠地解決身份認證問題的同時又使微電網(wǎng)節(jié)點性能消耗達到最低.本方案所使用的的零知識證明保證了每個新節(jié)點加入的可靠性,適用于區(qū)塊鏈技術新節(jié)點的認證問題,可應用于很多場景,如智能電網(wǎng)、物聯(lián)網(wǎng)等一些需要解決身份認證的環(huán)境.瑞波共識機制能夠適用于解決區(qū)塊鏈技術節(jié)點的共識問題,適用于絕大部分聯(lián)盟區(qū)塊鏈環(huán)境.本方案是將區(qū)塊鏈技術應用于微電網(wǎng)的身份認證,下一步可以挖掘出區(qū)塊鏈在智能電網(wǎng)及類似場景中的更多潛力,如將區(qū)塊鏈技術應用于智能電網(wǎng)的隱私保護或者將區(qū)塊鏈與IPFS 結(jié)合應用于智能電網(wǎng)的數(shù)據(jù)共享方面.3 共識機制
4 方案對比及分析
4.1 實驗方案部署
4.2 實驗分析
4.3 性能分析
5 安全性證明及分析
5.1 安全性證明
5.2 安全性分析
6 結(jié) 語