陳藝琳,羅嬌燕,胡逸芳,易傳佳,左黎明
(華東交通大學(xué) 理學(xué)院,江西 南昌 330013)
隨著風(fēng)能、太陽能、天然氣等清潔能源開發(fā)技術(shù)的不斷突破,分布式電源[1]逐漸得到發(fā)展。分布式電源可以較好地避免集中供電技術(shù)存在的環(huán)境破壞和資源浪費問題。隨著分布式電源并入到配電網(wǎng)中,為了有效提高分布式電源的利用效率,微電網(wǎng)[2-5]的概念被提出。微電網(wǎng)系統(tǒng)可以促進可再生能源的開發(fā)與利用,為負荷提供穩(wěn)定可靠的電能。在微電網(wǎng)技術(shù)快速發(fā)展的背景下,面向園區(qū)的微電網(wǎng)[6-8]建設(shè)也在快速發(fā)展。穩(wěn)定可靠的電力供應(yīng)是園區(qū)正常生產(chǎn)和運營的重要保障,園區(qū)微電網(wǎng)的安全控制是保障園區(qū)正常運轉(zhuǎn)的關(guān)鍵。微電網(wǎng)的控制成為近年來的研究熱點[9-12],文獻[13]針對微電網(wǎng)控制器成本高、集成度低等問題提出一種基于嵌入式系統(tǒng)的園區(qū)微電網(wǎng)中央控制器,并驗證了中央控制器的功能和能量管理策略具有較好的實用性。微電網(wǎng)的控制系統(tǒng)依賴于大量的數(shù)據(jù)采集與交互,在網(wǎng)絡(luò)攻擊層出不窮的互聯(lián)網(wǎng)環(huán)境下,微電網(wǎng)的正常運營面臨著網(wǎng)絡(luò)攻擊的威脅。2015年和2016年末烏克蘭曾發(fā)生由黑客組織進攻導(dǎo)致的大面積停電事故,2019年3月委內(nèi)瑞拉電網(wǎng)遭到網(wǎng)絡(luò)攻擊,導(dǎo)致全國18個州范圍電力中斷超過24小時。此類停電事故造成了巨大的經(jīng)濟損失,為避免此類事故的發(fā)生,相關(guān)網(wǎng)絡(luò)安全研究者和電網(wǎng)機構(gòu)開始對電網(wǎng)和微電網(wǎng)的安全性進行研究[14-16]。園區(qū)微電網(wǎng)的控制系統(tǒng)中,包含有園區(qū)大量電力設(shè)備的用電數(shù)據(jù),攻擊者一旦通過網(wǎng)絡(luò)攻擊手段竊取或篡改微電網(wǎng)數(shù)據(jù),很可能使園區(qū)微電網(wǎng)以及其他生產(chǎn)設(shè)備發(fā)生故障,從而導(dǎo)致園區(qū)產(chǎn)生重大安全事故和經(jīng)濟損失。針對園區(qū)微電網(wǎng)控制系統(tǒng)中可能存在的信息安全問題,該文提出一種消息可恢復(fù)數(shù)字簽名方案,并基于該方案設(shè)計一種適用于園區(qū)微電網(wǎng)的安全控制協(xié)議,在保證通信效率的前提下,有效保障微電網(wǎng)控制系統(tǒng)數(shù)據(jù)交互的安全性,保障園區(qū)微電網(wǎng)穩(wěn)定運行。
園區(qū)微電網(wǎng)是一個可以實現(xiàn)自我控制、保護和管理的自治系統(tǒng),主要為商業(yè)園區(qū)或工業(yè)園區(qū)提供電能服務(wù)。
如圖1所示,園區(qū)微電網(wǎng)主要包括光伏電源、儲能裝置、電力負荷等設(shè)備。園區(qū)微電網(wǎng)通過公共連接點(point of common coupling,PCC)與配電網(wǎng)連接,PCC處的靜態(tài)開關(guān)可以實現(xiàn)微電網(wǎng)在孤網(wǎng)和并網(wǎng)兩種運行狀態(tài)間的平滑切換。在該文所描述的園區(qū)微電網(wǎng)中,分布式能源為太陽能,光伏電源和儲能裝置負責(zé)對多個負荷端提供電能和電壓支撐,這樣可以有效節(jié)約從大電網(wǎng)購買電力而產(chǎn)生的經(jīng)濟成本,同時也有效降低了電力傳輸?shù)呢摀?dān)。在大電網(wǎng)發(fā)生突發(fā)故障或電能質(zhì)量不達標時,PCC處的靜態(tài)開關(guān)斷開與配電網(wǎng)的連接,園區(qū)微電網(wǎng)從并網(wǎng)模式平滑切換至孤網(wǎng)模式獨立運行,這種方式有效降低了由于主網(wǎng)故障帶來的影響,提高了園區(qū)供電的可靠性與安全性,園區(qū)的正常運營也得到有效保障。
園區(qū)微電網(wǎng)的控制系統(tǒng)是整個園區(qū)微電網(wǎng)系統(tǒng)的核心部分,是維持園區(qū)微電網(wǎng)安全、穩(wěn)定、高效運行的重要組成部分。目前主流的微電網(wǎng)控制系統(tǒng)為三層控制結(jié)構(gòu),分別為配電網(wǎng)調(diào)度層、集中控制層、本地控制層??刂葡到y(tǒng)由各部分控制裝置組成,可實現(xiàn)分布式電源控制、儲能裝置控制、孤網(wǎng)并網(wǎng)切換控制、微電網(wǎng)電能管理以及微電網(wǎng)實時監(jiān)控等。
(1)配電網(wǎng)調(diào)度層。
配電網(wǎng)調(diào)度層是一個云服務(wù)端,可以實時采集各個控制裝置的數(shù)據(jù),并將數(shù)據(jù)進行計算和分析。實時數(shù)據(jù)和計算分析結(jié)果可以在云服務(wù)端以圖表等形式實時顯示。云服務(wù)端根據(jù)計算分析結(jié)果給各個控制裝置下達控制指令,同時也能接受上級配電網(wǎng)的調(diào)節(jié)控制指令,從微電網(wǎng)安全、經(jīng)濟運行的角度協(xié)調(diào)和調(diào)度微電網(wǎng)。
(2)集中控制層。
集中控制層是微電網(wǎng)的控制中心,也是整個微電網(wǎng)控制系統(tǒng)的核心部分,主要控制裝置為中央控制器。中央控制器對分布式電源、儲能裝置、各個負荷的運行數(shù)據(jù)進行實時采集,對它們的運行狀態(tài)進行實時監(jiān)控,并對采集的數(shù)據(jù)進行計算與分析,得出微電網(wǎng)的實時運行狀態(tài)。中央控制器可以接受配電網(wǎng)調(diào)度層的控制指令給出相應(yīng)的控制動作。中央控制器根據(jù)實時運行狀態(tài),實時優(yōu)化控制策略,控制分布式電源、儲能裝置、負荷的啟動和停止,實現(xiàn)微電網(wǎng)并網(wǎng)狀態(tài)、孤網(wǎng)狀態(tài)的平滑切換,保障微電網(wǎng)穩(wěn)定運行。
(3)本地控制層。
本地控制層由分布式電源控制器、儲能控制器、負荷控制器等控制設(shè)備組成,接受集中控制層的控制指令,同時通過分布式電源控制器調(diào)節(jié)分布式電源,通過儲能控制器實現(xiàn)儲能裝置的充放電控制,通過負荷控制器實現(xiàn)對負荷的控制。
在園區(qū)微電網(wǎng)的運行過程中,配電網(wǎng)調(diào)度層、集中控制層和本地控制層自上而下通過通信向下發(fā)送控制指令。在這個過程中存在網(wǎng)絡(luò)攻擊威脅的根源主要在于數(shù)據(jù)來源缺乏安全認證,該文提出的適用于園區(qū)微電網(wǎng)的安全控制協(xié)議基于消息可恢復(fù)簽名方案,可以通過數(shù)字簽名對數(shù)據(jù)來源進行安全認證,保障數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
消息可恢復(fù)的簽名方案由系統(tǒng)初始化、密鑰生成、簽名和驗證簽名四個算法組成,具體描述如下:
(1)系統(tǒng)初始化:給定安全參數(shù),輸出系統(tǒng)參數(shù),公開系統(tǒng)參數(shù)。
(2)密鑰生成:根據(jù)公開的系統(tǒng)參數(shù),生成用戶的私鑰,并計算系統(tǒng)公鑰。
(3)簽名:輸入系統(tǒng)參數(shù)和用戶私鑰,輸出簽名,并發(fā)給驗證者。
(4)驗證簽名:輸入系統(tǒng)參數(shù)、簽名,輸出驗證結(jié)果,“TRUE”或者“FALSE”,輸出恢復(fù)的完整消息。
在園區(qū)微電網(wǎng)控制系統(tǒng)中,云服務(wù)端為簽名驗證者,中央控制器可以生成私鑰并定期更新私鑰。中央控制器發(fā)送數(shù)據(jù)封包時,先對數(shù)據(jù)封包進行簽名,然后發(fā)送給云服務(wù)端,當云服務(wù)端對簽名信息進行驗證,驗證成功則輸出恢復(fù)的完整消息,驗證失敗則發(fā)出警告信息。
基于橢圓曲線上離散對數(shù)問題的難解性,提出一種消息可恢復(fù)簽名方案。為了方便方案描述,首先給出一些常用符號,符號對照如表1所示。
表1 符號說明
下面給出方案的詳細描述,方案主要由四個算法構(gòu)成,具體描述如下:
(1)系統(tǒng)初始化。
(2)密鑰生成。
(3)簽名。
K=x1y2
(1)
R=rP
(2)
h1=H(m)||H(H(m))⊕m
(3)
h2=H(K,R)
(4)
s=h1⊕h2
(5)
e=sx1+rmodq
(6)
則(e,s)為消息m的簽名。
(4)簽名驗證。
對給定消息m的簽名(e,s),驗證簽名的過程如下:
①依次計算:
R=eP-sy1
(7)
K=x2y1
(8)
(9)
整個簽名驗證和消息恢復(fù)過程正確性證明如下:
R=eP-sy1=sx1P+rP-sx1P=rP
(10)
K=x2y1=x2x1P=x1y2
(11)
(12)
(13)
(14)
(15)
H(H(m))⊕H(H(m))⊕m=m
(16)
在微電網(wǎng)系統(tǒng)中,中央控制器與云服務(wù)端的安全控制架構(gòu)如圖2所示。在中央控制器中集成了數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊和簽名模塊,云服務(wù)端由身份認證模塊、信息處理模塊組成。
在中央控制器中,數(shù)據(jù)采集模塊負責(zé)微電網(wǎng)數(shù)據(jù)的采集,信息處理模塊負責(zé)數(shù)據(jù)格式的處理,將數(shù)據(jù)處理為規(guī)范的消息封包,簽名模塊負責(zé)對消息封包進行簽名。在云服務(wù)端,信息處理模塊負責(zé)對接受到的消息封包進行解析,簽名驗證模塊負責(zé)對中央控制器發(fā)送過來的簽名進行驗證及消息恢復(fù)。
安全協(xié)議的交互過程如圖3所示。
步驟1:數(shù)據(jù)采集模塊采集實時數(shù)據(jù),得到數(shù)據(jù)系列data1,data2,data3等。
步驟2:數(shù)據(jù)采集模塊將采集的數(shù)據(jù)系列data1,data2,data3發(fā)送到信息處理模塊。
步驟3:信息處理模塊接收到數(shù)據(jù)后,將數(shù)據(jù)處理成data1*data2*data3的封包格式,然后發(fā)送到簽名模塊。
步驟4:簽名模塊接收到消息封包后,調(diào)用簽名算法得到簽名Sig。
步驟5:簽名模塊將簽名結(jié)果Sig發(fā)送到云服務(wù)端。
步驟6:云服務(wù)端接收到消息封包后,簽名驗證模塊調(diào)用簽名驗證算法對消息封包進行簽名驗證,驗證通過則恢復(fù)消息,并把消息發(fā)送到信息處理模塊,驗證不通過則發(fā)出警告信息。
步驟7:信息處理模塊對消息封包進行解析,獲得原始數(shù)據(jù)。
當控制器與云服務(wù)端進行通信時,攻擊者可以對通信數(shù)據(jù)進行監(jiān)聽。當通信數(shù)據(jù)以明文數(shù)據(jù)傳輸時,攻擊者可以竊取通信雙方的通信具體內(nèi)容。在安全控制協(xié)議中,控制器會先將通信數(shù)據(jù)進行簽名處理再發(fā)送簽名,云服務(wù)端對簽名進行驗證,然后通過簽名進行消息恢復(fù)。通信的報文內(nèi)容只含有簽名數(shù)據(jù),不包括原始消息,原始消息不會暴露在通信過程中,從而保證了數(shù)據(jù)的機密性。
信息的完整性是指在存儲或傳輸信息的過程中,原始的信息不能允許被隨意更改。篡改攻擊是破壞數(shù)據(jù)完整性最常見的方法之一,篡改攻擊是指攻擊者對攔截到的報文進行篡改,將篡改后的報文進行發(fā)送達到攻擊目的。在安全控制協(xié)議中,當攻擊者對報文進行篡改并發(fā)送到服務(wù)端后,由于報文已經(jīng)被篡改,服務(wù)端進行簽名驗證時會驗證失敗,無法對消息進行恢復(fù)。從而使得協(xié)議可以抵抗篡改攻擊,確保數(shù)據(jù)的完整性。
在網(wǎng)絡(luò)通信中,攻擊者常常利用冒充、偽造等方法向接收方發(fā)送報文,在安全控制協(xié)議中,采用了消息可恢復(fù)式簽名技術(shù),服務(wù)端可以根據(jù)公開參數(shù)簽名者公開的公鑰對接收到的報文進行簽名驗證,可以有效地保障數(shù)據(jù)來源的可靠性。
在Windows7 64位操作系統(tǒng)Microsoft Visual Studio 2012微軟平臺下,采用C#輕量級密碼術(shù)包(bouncy castle)實現(xiàn)了文中方案。實驗結(jié)果顯示該方案簽名所消耗時間為0.010秒,驗證所消耗時間為0.219秒。實現(xiàn)結(jié)果如圖4所示。
在中央控制器中,首先對采集的數(shù)據(jù)進行封包處理,然后通過該簽名方案對數(shù)據(jù)封包進行簽名處理,核心代碼如下:
ecc myecc=new ecc();
ECPoint y1=myecc.ecc_point_g.Multiply(x1);
ECPoint y2=myecc.ecc_point_g.Multiply(x2);
ECPoint K=y2.Multiply(x1);
ECPoint R=myecc.ecc_point_g.Multiply(r);
hash myhash=new hash();
byte[] hm=myhash.TanGetDigestByteArray(m);
//計算H(H(m))
byte[] hhm=myhash.TanGetDigestByteArray(hm);
//計算H(H(m))⊕m
byte[] hmxor=HexXorByte(hhm, m);
//計算h1
byte[] h1=new byte[64];
Array.Copy(hm, 0, h1, 0, 32);
Array.Copy(hmxor, 0, h1, 32, 32);
//計算h2
string KK=K.X.ToBigInteger().ToString() + K.Y.ToBigInteger().ToString();
string RR=R.X.ToBigInteger().ToString() + R.Y.ToBigInteger().ToString();
string KR=KK+RR;
byte[] h2=myhash.TanGetDigestByteArray512(KR);
//計算s=h1⊕h2
byte[] ss=HexXorByte(h1, h2);
//計算e
BigInteger s=new BigInteger(ss);
BigInteger sx1=s.Multiply(x1);
BigInteger e=sx1.Add(r.Mod(myecc.ecc_n));
在云服務(wù)端,接收到中央控制器發(fā)送過來的數(shù)據(jù)封包后,根據(jù)該簽名方案的簽名驗證算法對簽名進行驗證,核心代碼如下:
ECPoint ep=myecc.ecc_point_g.Multiply(e);
ECPoint sy1=y1.Multiply(s);
ECPoint R1=ep.Subtract(sy1);
ECPoint K1=y1.Multiply(x2);
string KK1=K1.X.ToBigInteger().ToString()+K1.Y.ToBigInteger().ToString();
string RR1=R1.X.ToBigInteger().ToString()+R1.Y.ToBigInteger().ToString();
string KR1=KK1 + RR1;
byte[] H2=myhash.TanGetDigestByteArray512(KR1);
byte[] H1=HexXorByte(H2, ss);
byte[] H1L=new byte[32];
byte[] H1R=new byte[32];
Array.Copy(H1, 0, H1L, 0, 32);
Array.Copy(H1, 32, H1R, 0, 32);
byte[] HL=myhash.TanGetDigestByteArray(H1L);
//恢復(fù)消息m
byte[] m1=HexXorByte(HL, H1R);
byte[] left=H1L;
byte[] right=myhash.TanGetDigestByteArray(m1);
if (ByteEquals(left,right))
{
Console.WriteLine("驗證簽名通過!");
Console.WriteLine("消息恢復(fù)成功!");
Console.WriteLine("恢復(fù)的消息:{0}", Encoding.UTF8.GetString(m1));
}
else
{
Console.WriteLine("驗證簽名失??!消息恢復(fù)失敗!");
}
在Windows7 64位操作系統(tǒng)Microsoft Visual Studio 2012微軟平臺下,采用C#輕量級密碼術(shù)包(bouncy castle)運行文獻[16-20]中方案對應(yīng)的協(xié)議,分別運行100次,計算簽名過程與驗證簽名的平均耗時并進行比較,各協(xié)議簽名過程與驗證簽名的平均耗時如圖5所示。
在簽名過程中,文獻[16]對應(yīng)協(xié)議的簽名過程平均耗時0.022秒,文獻[17]平均耗時0.114秒,文獻[18]平均耗時0.038秒,文獻[19]平均耗時0.044秒,文獻[20]平均耗時0.032秒,文中方案簽名過程平均耗時為0.013秒。相比其他協(xié)議,文中方案的安全控制協(xié)議在簽名效率方面存在優(yōu)勢。
在驗證簽名過程中,文中方案的驗證簽名過程平均耗時為0.22秒,相比文獻[16-20]的驗證簽名過程平均耗時都要高,這是由于驗證簽名的過程不僅需要簽名的驗證,而且需要消息的恢復(fù),其計算復(fù)雜程度高于簽名過程。
綜合來看,文中方案協(xié)議的簽名過程運行效率較高,適合在計算能力差的設(shè)備上運行,驗證簽名過程運行效率一般,需要在計算能力高的設(shè)備上運行。在安全控制協(xié)議中主要針對的是中央控制器的性能,在中央控制器上進行的為簽名過程,驗證簽名在云服務(wù)端進行。在微電網(wǎng)控制系統(tǒng)的結(jié)構(gòu)中,中央控制器受限于設(shè)備本身,在中央控制器運行的協(xié)議需要較高的運行效率,而云服務(wù)端采用的服務(wù)器集群,計算能力很高。因此,文中方案的簽名過程運行在中央控制器,驗證簽名過程運行在云服務(wù)端,可以保障協(xié)議的安全高效運行。
針對當前園區(qū)微電網(wǎng)控制系統(tǒng)在數(shù)據(jù)交互過程中存在安全性認證和數(shù)據(jù)完整性保護問題,提出了一種消息可恢復(fù)的數(shù)字簽名方案,并進一步設(shè)計了一種適用于園區(qū)微電網(wǎng)的安全控制協(xié)議。對安全控制協(xié)議進行了實驗與仿真,結(jié)果表明該方案在控制器端的效率較高。該方案應(yīng)用到園區(qū)微電網(wǎng)的控制系統(tǒng)中,可以提高系統(tǒng)的安全性,保障園區(qū)微電網(wǎng)的安全穩(wěn)定運行。