一種goose報文完整性認證方法
【技術領域】
[0001]本發明屬于電力系統信息安全領域,具體涉及一種高效的GOOSE報文完整性認證方法。
【背景技術】
[0002]電力通信網絡從獨立的封閉系統,逐步發展為廣域互聯的開放系統,其邊界范圍和地理分布不斷擴大,接入方式更加靈活,報文數據的安全性問題也日趨突出。尤其像GOOSE這類直接影響電力系統狀態的重要報文,當其報文受到篡改時,可能帶來災難性的后果O
[0003]在電力系統通信網絡中,面向通用對象的變電站事件(GOOSE, Generic ObjectOriented Substat1n Event)報文主要用于表征斷路器的跳、合閘等操作命令和斷路器位置信息等重要場合,其安全性、準確性、實時性很大程度上影響著電力系統運行的可靠性。而且,在以數字化變電站為代表的智能電網中得到越來越廣泛的應用的背景下,G00SE電力報文有可能跨區域、跨電網傳輸,使得其更可能遭受竊聽、攻擊、篡改等入侵事件,其在電力信息安全方面的重要性愈發突出。
[0004]電力信息安全標準IEC62351建議對G00SE報文采用HMAC認證或數字簽名以保障G00SE報文的完整性。但結合當前智能電子設備實際的運算和存儲能力,基于非對稱加密環節的數字簽名方法難以滿足G00SE等電力報文的4ms延時要求。因此,目前的G00SE安全算法研宄主要選擇采用HMAC認證保障完整性。
[0005]HMAC認證算法通過引入密鑰并設置兩輪Hash運算實現認證運算,可有效保障報文的完整性,但對G00SE這類短報文而言效率并不高,并非最優的選擇。不同于一般的網絡報文,G00SE報文定義了嚴格的幀結構,包括細致的幀格式、APDU中所具有的顯性長度域和同步性參數等。G00SE報文獨特的報文結構,有助于避免一般帶密鑰HASH算法遭受長度擴展等攻擊。結合G00SE報文域的特點以及表征的意義,尋求一種G00SE報文更有效的認證方法具有重要研宄價值。
【發明內容】
[0006]本發明的目的在于克服現有技術的缺點與不足,提供一種G00SE報文完整性認證方法,以提高認證效率,更好地適應電力系統高實時性要求。本發明方法基于選定的HASH函數(SHA256或MD5等函數),以密鑰和消息作為輸入,直接HASH運算生成消息摘要輸出作為認證碼。算法中只用到密鑰和帶認證消息的HASH運算,效率比HMAC更高。
[0007]為了達到上述目的,本發明采用的技術方案是:一種G00SE報文完整性認證方法,包括以下步驟:
[0008]S1、G00SE報文發送端認證過程:
[0009]S11、提取 G00SE 報文 APDU 中的 UtcTime、stNum、sqNum 關鍵信息,根據 UtcTime、stNum、sqNum順序依次連接,形成關鍵信息報文段P2 ;
[0010]S12、刪除GOOSE報文APDU中的UtcTime、stNum, sqNum關鍵信息以及CRC校驗碼域,形成非關鍵信息報文段Pl ;
[0011]S13、判斷非關鍵信息報文段Pl是否與前一 GOOSE報文非關鍵信息一致,若一致則跳至步驟S15,否則執行步驟S14 ;
[0012]S14、利用發送端和接收端預先約定好的任意長度的密鑰及Hash算法,對步驟S12所述報文段Pl進行Hash運算得Hash碼Cl,將步驟Sll所述報文段P2附加到Cl末端,并再次進行Hash運算,得到最終Hash認證碼C2,然后執行步驟S16 ;
[0013]S15、將步驟Sll所述報文段P2附加到前一 GOOSE報文APDU認證計算所得Hash碼Cl'末端,利用發送端和接收端預先約定好的任意長度的密鑰及Hash算法,對其進行Hash運算得到最終Hash認證碼C2,然后執行步驟S16 ;
[0014]S16、將Hash認證碼C2作循環冗余校驗CRC32運算,得到32比特長度的循環冗余校驗碼,將其填充于GOOSE報文的CRC校驗碼域;
[0015]S2、GOOSE報文接收端認證過程:
[0016]S21、提取 GOOSE 報文 APDU 中的 UtcTime、stNum, sqNum 關鍵信息,根據 UtcTime、stNum、sqNum順序依次連接,形成關鍵信息報文段P4 ;
[0017]S22、刪除GOOSE報文APDU中的UtcTime、stNum, sqNum關鍵信息以及CRC校驗碼域,形成非關鍵信息報文段P3;
[0018]S23、利用發送端和接收端預先約定好的任意長度的密鑰及Hash算法,對步驟S22所述報文段P3進行Hash運算得Hash碼C3,將步驟S21所述報文段P4附加到C3末端,并再次進行Hash運算,得到最終Hash認證碼C4 ;
[0019]S24、將步驟S23所得Hash認證碼C4作循環冗余校驗CRC32運算,得到32比特長度的循環冗余校驗碼,將其與接收到的GOOSE報文的CRC校驗碼域進行對比,若二者一致則認證成功,否則認證失敗。
[0020]具體的,所述GOOSE報文APDU中的UtcTime、stNum、sqNum關鍵信息是時間以及報文發送序號相關信息。
[0021]在認證算法和密鑰長度一定時,降低GOOSE報文認證運算耗時的核心在于減少所需進行加密運算的報文的長度。分析GOOSE報文發送機制,GOOSE報文需重復、不定間隔發送,其中除了 stNum、sqNum等參數,GOOSE報文其他數據不變。再結合HASH運算算法按512bit長度對待運算數據進行分組,固定輸入情況下輸入不變,因此,可將變化的數據放與待運算數據末端,即可避免前面相同數據的HASH運算過程。
[0022]具體的,所述步驟S14中,得到最終Hash認證碼C2的計算過程是:
[0023]Cl = Hash (key, PI);
[0024]C2 = Hash (Cl, P2);
[0025]其中,key表示發送端和接收端預先約定好的任意長度的密鑰。
[0026]具體的,所述步驟S15中,得到最終Hash認證碼C2的計算過程是:
[0027]C2 = Hash (Cl',P2);
[0028]其中,Cl'是前一 GOOSE報文非關鍵信息段Pl對應的Hash運算結果。
[0029]具體的,所述步驟S23中,得到最終Hash認證碼C4的計算過程是:
[0030]C3 = Hash (key, P3);
[0031]C4 = Hash (C3, P4);
[0032]其中,key表示發送端和接收端預先約定好的任意長度的密鑰。
[0033]本發明與現有技術相比,具有如下優點和有益效果:
[0034]本發明通過分析GOOSE報文特點以及發送機制,提取GOOSE報文APDU的UtcTime、stNum, sqNum關鍵信息,判斷APDU其余非關鍵信息是否與前一 GOOSE報文APDU非關鍵信息一致,若一致,則根據前一 GOOSE報文APDU的非關鍵信息Hash結果,僅對上述關鍵信息進行Hash運算,在不降低報文信息安全性的前提下,避免對整個GOOSE報文的加解密,減少加解密算法的耗時。
【附圖說明】
[0035]圖1是本發明GOOSE報文發送端認證過程流程圖。
[0036]圖2是本發明GOOSE報文接收端認證過程流程圖。
[0037]圖3是GOOSE報文結構示意圖。
【具體實施方式】
[0038]下面結合實施例及附圖對本發明作進一步詳細的描述,但本發明的實施方式不限于此。
[0039]實施例1
[0040]GOOSE報文結構如圖3所示,本實施例一種高效的GOOSE報文認證方法是針對GOOSE報文APDU域的認證,其余報文域不屬于認證內容,此方法包括GOOSE報文發送端認證過程以及GOOSE報文接收端認證過程,下面分別結合圖1、2對其進行具體說明。
[0041 ] 1、GOOSE報文發送端認證過程
[0042]參見圖1,包括步驟如下: