邱 帆 陳蘭蘭 左黎明 侯欣悅
1(國網江西省電力公司吉安電力科學研究院 江西 吉安 343009)2(華東交通大學理學院 江西 南昌 330013)3(華東交通大學信息工程學院 江西 南昌 330013)
隨著電力系統的市場化發展,新型能源、智能電網等新概念不斷涌現,各種可再生能源、新型儲能系統、智能電力裝備等趨于成熟與應用,傳統的大電網逐漸向分布式微電網[1]轉變。隨著電力市場化改革政策[2-3]不斷深化,微電網或擁有DG 的用戶允許作為售電方進行電力市場交易,電力消費者或許成為消費、生產一體的電力市場參與者,而不再是單一的消費者角色。2017年10月31日,國家能源局聯合國家發展改革委發布了《關于開展分布式發電市場化交易試點的通知》[4],明確了分布式發電市場的交易機制,允許DG項目與電力購電用戶進行電力直接交易,并在接入點上一級變壓器供電范圍內向就近電網企業繳納“過網費”。然而,DG和用戶的電力直接交易具有規模小和分散化的特點[5],呈現多買多賣的局面,由于雙方還未建立成熟的價值流通渠道,故難以進行電力直接交易。因此建立成本低、安全性高的微電網市場交易模式是首要考慮。目前建立的交易模式存在交易信息被篡改的風險,對交易方的利益和交易信息安全造成直接威脅,因此創建一個安全性高的微電網交易管理模式具有重要價值和實際意義。
目前,分布式微電網的交易機制和模式的研究與應用仍在起步階段,但已有一些初步成果。文獻[6]建立了多方參與的一對多、多對多交易情況下的合作博弈模型,提出了一種合作交易模式。文獻[7]探討了區塊鏈與分布式發電市場化交易的對照關系,分析了區塊鏈技術在分布式發電中的交易模式,并指出現有的相關研究存在缺乏對交易效率的定量分析等問題。文獻[8]建立了分布式能源交易市場的信用評價指標,并提出了一種運用區塊鏈技術的分布式能源交易信用管理策略,使得守信市場主體獲得更多利益。文獻[9]概括了國外主要的分布式交易機制以及發展現狀,并探討了中國未來分布式發電市場化交易的發展。文獻[10]提出了基于多智能體的微網群內的電力交易策略,包括制定統一出清價方案、獎懲制度的電價方案、微網售電購電策略。文獻[11]提出了一種適用于多能源微電網的最優投標策略及市場機制。文獻[12]提出了一種由間歇分布式發電、存儲、可調度發電等組成的微電網市場最優競價策略,該策略基于混合隨機/魯棒優化模型。文獻[13]基于博弈論模型設計了一種分布式能源交易機制,該研究對微電網之間的能源交易提供了激勵作用。文獻[14-18]對區塊鏈技術在微電網交易的應用進行了研究。然而,上述關于微電網交易的研究絕大部分偏向于交易策略分析或簡單應用方案,缺少對交易主體在交易信息傳遞時的數據安全研究。在數據傳遞過程中,若存在攻擊者截獲交易數據并對其進行惡意篡改,將導致交易主體獲取的信息不對稱而直接損害其利益,影響交易市場的公平性與可靠性。
為避免分布式微電網電力直接交易過程中出現信息篡改和偽造等信息安全問題[19],本文提出了一個安全的分布式微電網交易系統,任何參與交易的DG或用戶都需要預先在系統中進行注冊,確認其真實身份,并為每次交易信息傳遞設計基于文獻[20]簽名方案的安全協議,包括報價協議和交易結算證明協議,分別用于DG或用戶提交報價信息和報價匹配成功后交易結算的數據安全,實現交易信息在傳遞過程中的隱私保護。
本文研究的微電網電力交易系統總體架構如圖1所示,主要由多個DG和用戶、電力交易中心組成。其中電力交易中心包含注冊中心,如圖2所示,注冊中心主要由注冊模塊和查詢模塊組成,DG和用戶在交易前需要在注冊模塊進行注冊,并可以在查詢模塊查詢自己及其他注冊者的部分信息。注冊完成后,在每個交易周期,DG向電力交易中心提交售電報價s_pri、售電量s_ele,用戶向交易中心提交購電報價p_pri、購電量p_ele。交易中心根據雙方報價按照系統定義的報價匹配機制進行匹配,并向外公布交易信息,包括當前最優賣價、最優買價、成交價。匹配成功的交易雙方和電力交易中心三方簽署交易結算證明,包括成交售電量t_ele和成交購電費用t_pri,作為交易憑證,并由三方保管。參數說明如表1所示。

圖1 微電網電力交易系統總體架構

圖2 注冊中心

表1 參數說明
本文提出的電力交易報價匹配機制參與對象包括DG生產者、DG獨立運營商以及普通用戶,由于可再生能源的變化性和負荷程度預測準確性[21],設定交易周期為1小時。該報價匹配機制按照“價格優先,時間優先”的原則[21]對買賣雙方進行排序。如圖3所示,對賣方的報價從低到高排序,而對買方的報價從高到低進行排序,在報價相同的情況下,按提交時間先后進行排序。其中,最優賣價為賣方最低報價,最優買價為買方最高報價,當最優買價大于最優賣價時,即可進行交易,報價最低的賣方和報價最高的買方進行匹配,成交價為買賣雙方的均價。以此類推,直到最優買價小于最優賣價,則完成一輪交易,每輪交易至少完成一次匹配和交易。

圖3 報價匹配機制
在交易中,參與方可以查看成交價、當前最優賣價和最優買價信息,并根據市場信息調整自身報價進行下一輪交易,直到交易時間截止或者交易電量全部匹配成功。如果交易截止時,買賣雙方還未匹配成功,則通過大電網進行購電或售電。
分布式微電網直接交易系統的多方交互環節包括交易雙方報價提交、交易信息公開、交易結算證明。為防止信息在交互過程中被惡意篡改和偽造,導致用戶獲取的信息不對稱,影響交易的公平公正,本文采用文獻[20]提出的多重短簽名方案對信息進行保護,并基于該方案設計了兩種安全交互協議:報價協議和交易結算證明協議,以此來提高數據在交互過程中的安全性和真實性。
定義1 雙線性對:設安全參數k,G1和G2分別為q階循環加法群和乘法群,其中q為一個k-bit素數,設P為G1的生成元,則稱映射e:G1×G1→G2為雙線性對,若滿足以下三條性質:
(2) 非退化性:e(P,P)≠1;
(3) 易計算性:?Q,R∈G1,存在有效算法計算e(Q,R)。
文獻[20]提出的適用于分布式審批工作流的多重短簽名方案在安全性和簽名性能上都具有優勢,且適用于分布式系統,故滿足分布式微電網交易系統的安全和性能要求。方案主要包括系統初始化、密鑰生成與注入、多重簽名、多重簽名驗證和授權簽名驗證五個算法組成,具體描述如下:


3) 多重簽名:對于M個用戶L={U1,U2,…,UM}的多重簽名,它們的身份集合為LID={ID1ID2,…,IDM},具體簽名步驟如下:
(1) 首先用戶U1對消息m進行簽名,計算h=H2(m),S1=ID1xID1h,再將身份ID1、消息m、部分簽名S1發送給下一個用戶U2。
(2) 用戶U2收到信息后,先驗證S1的有效性,再進行簽名。過程如下:
① 計算h=H2(m)。
② 驗證e(S1,P)=e(h,ID1yID1)是否成立,如果不成立,則驗證失敗,并返回“FALSE”,否則U2繼續簽名。
③ 計算S2=S1+ID2xID2h,將身份ID1、身份ID2、消息m以及部分簽名S2發送給下一個用戶U3。
(3) 用戶Ui(i=3,4,…,M)收到第i-1個用戶Ui-1發送的身份ID1,ID2,…,IDi-1、消息m以及部分簽名Si-1后,先驗證Si-1的有效性,再進行簽名。過程如下:
① 計算h=H2(m)。

③ 計算Si=Si-1+IDixIDih,則Si為i個用戶U1,U2,…,Ui對消息m的部分簽名。當i=M時,得到的簽名SM為M個用戶U1,U2,…,UM對消息m的多重短簽名。
4) 多重簽名驗證:驗證者對給定消息m的多重簽名SM進行驗證。過程如下:
① 計算h=H2(m)。
簽名算法正確性驗證如下:
5) 授權簽名驗證:KGC向驗證者公開身份為IDi的用戶對應的授權信息Qi=H1(IDi,KIDi,s),任何人都可以通過用戶的身份ID和Q驗證簽名。驗證如下等式是否成立,如果成立,則簽名有效,返回“TRUE”,否則返回“FALSE”。
為提高系統在交易過程中信息來源的真實性、可靠性和不可抵賴性,本文基于文獻[20]簽名方案分別設計了報價協議和交易結算證明協議兩種安全協議,并進行了安全性分析。兩種協議均加入時戳新鮮因子,用于抵抗重放攻擊。
在兩種協議實現交互之前,DG和用戶均需要在注冊中心的注冊模塊進行密鑰注冊,即為注冊者分配身份ID并按照文獻[20]簽名方案的密鑰生成算法生成相應的密鑰對,再通過安全的方式將生成的密鑰對發給注冊者,注冊者還可以在注冊中心的查詢模塊查看其他注冊者以及電力交易中心的的公鑰及授權信息。
3.1.1 報價協議
報價協議用于實現DG和用戶分別向電力交易中心提交報價信息時數據的保護,圖4所示為DG或用戶與電力交易中心參與的報價協議交互圖。

圖4 報價協議交互圖
假設DG、用戶的身份分別為IDDG和IDU,具體交互流程如下:
(1) DG或用戶→電力交易中心:基于文獻[20]的簽名方案,并引入時戳T,DG對售電報價s_pri、售電量s_ele和T進行簽名,得到簽名sig(IDDG,s_pri,s_ele,T),用戶對提交的購電報價p_pri、購電量p_ele和T進行簽名,得到簽名sig(IDU,p_pri,p_ele,T),DG或用戶分別將(IDDG,s_pri,s_ele,T,sig(IDDG,s_pri,s_ele,T))或(IDU,p_pri,p_ele,T,sig(IDU,p_pri,p_ele,T))發送至電力交易中心。
(2) 電力交易中心驗證簽名:電力交易中心對接收的信息進行驗證,首先解析出簽名信息sig(IDDG,s_pri,s_ele,T)或sig(IDU,p_pri,p_ele,T),再采用文獻[20]方案的簽名驗證算法驗證簽名,同時驗證時戳的有效性,若驗證成功,則輸出“TRUE”,否則輸出“FALSE”。
3.1.2 交易結算證明協議
交易結算證明協議用于對報價匹配成功的DG和用戶的交易憑證進行保護,該交易憑證信息包括DG售電量和用戶購電費用信息,并由匹配成功的DG和用戶以及電力交易中心共同簽名。該協議采用文獻[20]的多重簽名方案。圖5所示為DG或用戶與電力交易中心參與的交易結算證明協議交互圖。

圖5 交易結算證明協議交互圖
假設電力交易中心、DG和用戶的身份分別為IDEC、IDDG、IDU,具體交互流程如下:
(1) 電力交易中心→DG:電力交易中心創建交易憑證,并引入時戳T對其簽名,即生成成交購電費用t_pri、成交售電量t_ele和T的部分簽名sig1(IDEC,t_pri,t_ele,T),再將(IDEC,t_pri,t_ele,T,sig1(IDEC,t_pri,t_ele,T))發給匹配成功的DG。
(2) DG→電力交易中心:DG對接收的信息進行驗證,首先解析出簽名信息sig1(IDEC,t_pri,t_ele,T),驗證簽名和時戳的有效性,如果驗證失敗,輸出“FALSE”,否則生成部分簽名sig2(IDEC,IDDG,t_pri,t_ele,T),再將(IDEC,IDDG,t_pri,t_ele,T,sig2(IDEC,IDDG,t_pri,t_ele,T))發送至電力交易中心。
(3) 電力交易中心→用戶:電力交易中心對接收的信息進行驗證,首先解析出簽名信息sig2(IDEC,IDDG,t_pri,t_ele,T),驗證簽名和時戳有效性,如果驗證失敗,輸出“FALSE”,否則將(IDEC,IDDG,t_pri,t_ele,T,sig2(IDEC,IDDG,t_pri,t_ele,T))轉發給匹配成功的用戶。
(4) 用戶→電力交易中心:用戶對接收的信息進行驗證,首先解析出簽名信息sig2(IDEC,IDDG,t_pri,t_ele,T),驗證簽名和時戳有效性,如果驗證失敗,輸出“FALSE”,否則生成最終的多重簽名sig3(IDEC,IDDG,IDU,t_pri,t_ele,T),再將(IDEC,IDDG,IDU,t_pri,t_ele,T,sig3(IDEC,IDDG,IDU,t_pri,t_ele,T))發送至電力交易中心。
(5) 電力交易中心驗證并公布交易憑證:電力交易中心對接收的信息進行驗證,首先解析出簽名信息sig3(IDEC,IDDG,IDU,t_pri,t_ele,T),再通過驗證算法驗證簽名,同時驗證時戳的有效性,若驗證失敗,輸出“FALSE”,否則確定匹配成功的DG和用戶最終的交易憑證為(IDEC,IDDG,IDU,t_pri,t_ele,T,sig3(IDEC,IDDG,IDU,t_pri,t_ele,T)),并公開保存在系統中,供其他注冊者查詢和驗證。
(1) 防篡改攻擊。設計的報價協議和交易結算證明協議對交互的數據進行簽名,交互中的驗證方在收到數據后,進行簽名驗證,任何通過截獲交互數據的攻擊者如果篡改了數據,都無法驗證通過,因此該協議可以抵御篡改攻擊。攻擊者對于DG與電力交易中心的報價協議的篡改攻擊過程與結果如圖6所示。攻擊者截獲DG的報價信息m,并篡改m,將篡改后的消息和原簽名發送給電力交易中心。電力交易中心對接收的消息和簽名進行驗證,由于消息被篡改,故驗證失敗。

圖6 攻擊者對于DG與電力交易中心的報價協議的篡改攻擊
(2) 抗重放攻擊。設計的兩種協議都引入了時戳新鮮因子,驗證方在收到數據后,在驗證簽名的同時驗證時戳的新鮮性,任何攻擊者若使用之前截獲的交互數據進行冒充,都無法通過重放再次通過驗證,因此該協議可以抵御重放攻擊。攻擊者對于DG與電力交易中心的報價協議的重放攻擊過程如圖7所示。攻擊者預先記錄了DG先前的報價信息和簽名。攻擊者將先前的報價信息m′,T′和簽名發送給電力交易中心。電力交易中心對接收的消息和簽名進行驗證,由于時戳已經過期,故驗證失敗。

圖7 攻擊者對于DG與電力交易中心的報價協議的重放攻擊
(3) 抗存在性偽造攻擊。設計的兩種協議都采用文獻[20]的簽名方案,該方案在適應性選擇消息攻擊下是抗存在性偽造的,而本協議中每次交互時數據傳遞都是單向的,且只有一次交互,簽名方案的安全性可以保證協議的安全性。因此,本文提出的報價協議和交易結算證明協議可以抵抗存在性偽造攻擊,簽名方案安全性分析的形式化證明見文獻[20]。
在Windows 7 64 位操作系統的 Microsoft Visual Studio 2012 開發平臺下,采用斯坦福BONEH等基于C語言開發的PBC庫[22]實現本文提出的報價協議。由于DG和用戶分別與電力交易中心交互的過程相同,僅交互數據不同,故本實驗只實現DG與電力交易中心之間的交互。
(1) DG生成簽名。DG基于文獻[20]簽名方案對報價信息進行簽名,實驗結果如圖8所示,可見簽名耗時為0.048秒。

圖8 DG簽名實驗結果
實驗仿真核心代碼如下:
//DG簽名
//m為DG報價信息
char m[256]="售電報價:0.6元/度,售電量:500度";
printf("DG報價信息為: {%s} ",m);
element_init_G1(h,pairing);
//哈希函數H2
element_init_Zr(d1,pairing);
element_init_G1(S1,pairing);
//DG簽名
//計算h
element_from_hash(h,m,strlen(m));
//生成簽名S1=ID1×X1×h
element_mul(d1,ID1,X1);
element_mul(S1,d1,h);
element_printf("DG生成簽名為: %B ", S1);
(2) 電力交易中心驗證簽名。電力交易中心對接收的DG報價信息采用文獻[20]驗證算法進行驗證,實驗結果如圖9所示,可見驗證簽名成功,耗時為0.079秒,運行效率較高。

圖9 電力交易中心驗證簽名實驗結果
實驗仿真核心代碼如下:
//電力交易中心驗證簽名
//計算h
element_from_hash(h,m,strlen(m));
element_t left1,right1,temp1;
element_init_GT(left1,pairing);
element_init_GT(right1,pairing);
element_init_G1(temp1,pairing);
//等式左邊e(S1,P)
element_pairing(left1,S1,P);
//等式右邊e(h,ID1×Y1)
element_mul(temp1,ID1,Y1);
//ID1×Y1
element_pairing(right1,h,temp1);
// 左右比較
if (element_cmp(right1, left1))
//驗證失敗
printf("驗證結果:FALSE ");
else
//驗證成功
printf("驗證結果:TRUE ");
針對不同的報價信息進行反復多次實驗,驗證結果均為成功,且每次交互消耗時間較少,效率較高,部分實驗結果如圖10所示。

圖10 多次交互部分實驗結果
本文針對分布式微電網電力交易信息傳遞過程存在的信息篡改問題,提出一個分布式微電網交易系統。該系統要求參與交易的用戶必須在系統中進行注冊,并基于文獻[20]的簽名方案針對報價和交易結算過程設計了兩種安全協議。對設計的協議進行了安全性分析,表明其能夠抵抗消息篡改攻擊、重放攻擊和存在性偽造攻擊,能夠保護DG或用戶提交報價信息和報價匹配成功后交易結算的數據安全。最后對報價協議進行了實驗仿真,結果表明該協議具有較高的運行效率和良好的性能。本文僅研究了某一個交易時刻的交互安全,下一步將針對整個交易周期進行研究。