牛津文
(許繼集團有限公司,河南 許昌 461000)
與其他工業控制系統不同,電力系統運行控制面臨的通信認證問題具有一定的特殊性[1]。目前,大部分通信認證策略是用于防范來自互聯網的黑客攻擊,而電力系統運行控制環境與公用互聯網環境具有非常大的差別。將公用互聯網的認證通信技術照搬到電力系統運行控制環境中,顯然缺乏對電力系統運行控制通信認證需求的深刻理解。當前的主流認證服務和產品主要是面向普通工業用戶而設計的,可能無法滿足電力系統運行控制環境下的嚴苛性能和可靠性要求。
變電站網絡系統容易受到多種形式的攻擊破壞,不同的攻擊模式會產生不同的威脅,進而破壞變電站信息的完整性、保密性、有效性以及不可否認性。因此,分析變電站的初始攻擊形式是解決報文安全性的首要任務。常見的攻擊形式有竊聽、中斷、截獲以及篡改等[2-4]。相應地,針對變電站報文的各類攻擊主要造成以下幾種威脅。一是違反授權。變電站控制系統人員利用授權身份或設備,執行非授權操作。二是篡改。報文在傳輸過程中被第三方截獲后,經刪除、插入、修改、改變次序以及重放等操作后再發給接收方,以達到損壞報文的目的。三是拒絕服務。向變電站網絡發送大量數據,造成網絡或監控系統癱瘓。四是抵賴。接入信息系統并進行操作,但事后卻拒絕承認事實。針對上述4種威脅可使用相應的防范措施,設計相應的認證機制便成為報文在傳輸過程中的重中之重,必須采取相應的防范措施[5]。
本文提供一種基于變電站GOOSE報文的認證機制,該認證機制引入身份認證、消息認證以及密鑰管理的概念,有效地解決目前GOOSE報文在網絡傳輸過程中所面臨的威脅,而且能夠保證GOOSE信息對于實時性的要求[6-9]。
為了實現GOOSE報文網絡傳輸的認證機制,需要對原始報文的格式進行擴展。擴展的GOOSE報文格式不僅符合IEC 61850-9-2的規定,而且滿足ISO/IEC 8802-3幀結構和ASN.1基本編碼規則。同時利用原有GOOSE報文格式中的保留1和保留2兩個字段,對認證機制及擴展字段進行補充說明。
首先,對于GOOSE報文格式的擴展字段由兩部分組成,第一部分用于身份認證,第二部分用于消息認證。其中,第一部分身份認證的內容包括用戶名、密碼以及密鑰管理服務器定期更新的密鑰信息,隨后將以上3種信息通過DES算法進行置換操作,生成相應的密文字符串,作為報文的身份認證信息加入到原始GOOSE報文進行傳輸。第二部分的消息認證是對GOOSE報文中的數據信息進行壓縮操作,采用的是MD5算法,數據被壓縮后生成定長的信息摘要字符串。最后,與身份認證生成的字符串組成擴展字段的內容,通過發送端發送到網絡上。
對于GOOSE報文的接收端來說,收到網絡上過來的GOOSE報文后首先判斷是否為GOOSE認證擴展報文,如果是則先進行身份認證,將接收到的身份認證字符串通過DES算法進行置換操作,然后將置換后的字符串,即用戶名、密碼、密鑰信息以及自身的對應信息進行比對,如果用戶名和密碼一致,而且密鑰信息與密鑰池中的密鑰信息也一致,則通過GOOSE報文的身份認證[10]。身份認證通過后繼續將接收到的數據信息通過MD5算法生成信息摘要字符串,然后與接收到的信息摘要字符串進行比對,如果一致則通過消息認證。
當身份認證與消息認證全部通過后則認為此幀報文通過認證,接收端隨即發送一幀確認報文確定認證通過。發送端收到確認報文后,將在協商的認證通信時間段T內進行原始GOOSE報文的通信,即GOOSE報文收發過程中不再進行認證操作。當通信時間超過協商認證通信時間段T后,則需要重新發送包含身份認證與消息認證的GOOSE認證報文進行再次認證。
其中,對于密鑰池的生成則由密鑰服務器單獨完成,并且定期更新,每次更新的密鑰池都會發送給GOOSE報文的發送端與接收端,收到密鑰池后實時更新自己維護的密鑰池,以達到提高GOOSE報文安全性的目的。
實現GOOSE報文的認證機制,需要對原始報文格式進行擴展,并加入身份認證與消息認證信息以實現正常交互前的認證流程,GOOSE原始報文及擴展報文格式由圖1所示。

圖1 GOOSE原始報文與擴展報文格式
認證擴展報文包括身份認證與消息認證兩部分內容,總共占用40 Byte大小。其中身份認證占用36 Byte,消息認證占用4 Byte。身份認證由用戶名、密碼以及密鑰3部分組成,通過DES算法對以上內容進行置換操作,置換后生成的字符串長度不得超過36 Byte,也就是說置換前的用戶名、密碼以及密鑰3者加起來的字符串長度不得超過36 Byte。
消息認證由GOOSE報文格式中的APDU報文組成,通過MD5算法對APDU報文進行壓縮操作,壓縮后生成的字符串長度不得超過4 Byte。
另外原始報文中的保留字段Reserved1(2 Byte)和Reserved2(2 Byte)也作為GOOSE認證擴展報文內容的一部分進行使用。其中,Reserved1作為判斷是否為GOOSE認證擴展報文的唯一標示,即當保留字段的值為FEFE時,則接收端認為此報文為GOOSE認證擴展報文,除此以外均為原始GOOSE報文。Reserved2則記錄認證擴展報文的實際長度,其大小應小于最大占用空間40 Byte。
GOOSE擴展認證流程由可由任一方主動發起,發送端將要發送GOOSE認證擴展報文時,首先置換身份認證信息,將置換后的字符串添加到認證擴展報文的身份認證字段中,其次壓縮認證信息,將壓縮后的字符串添加到認證擴展報文的消息認證字段中,最后將身份認證信息、消息認證信息、保留字段1、保留字段2以及GOOSE原始報文組成GOOSE認證報文發送給接收端。
接收端收到GOOSE報文后判斷是否為認證報文,如果是則先讀取報文中的身份認證信息,進行身份認證。身份認證通過后接著讀取消息認證信息,進行消息認證。當消息認證通過后則認為收到的GOOSE報文是安全且可靠的,隨后向發送端發送認證確認報文,告知對方認證通過,隨后便進行正常原始GOOSE報文的通信。
當通信時間超過協商認證通信時段T時,發送端需要再次發送認證擴展報文進行認證,認證通過后才可以繼續進行正常的原始GOOSE報文通信。認證流程如圖2所示。

圖2 GOOSE擴展認證流程圖
為防止抗抵賴攻擊,GOOSE擴展身份認證需要對通信雙方身份的合法性進行校驗與確認,即數字簽名,雙方確認通過后方可進行下一步操作,身份認證流程圖如圖3所示。

圖3 GOOSE擴展身份認證流程圖
GOOSE認證擴展報文進行身份認證時,發送端首先讀取本地的用戶名、密碼以及密鑰信息,將以上3組信息組成一組明文字符串M,然后使用DES算法將字符串M進行置換生成新的密文字符串M1,將M1添加到認證擴展報文中的消息認證字段發送給接收端。
當接收端收到身份認證報文時首先讀取GOOSE認證擴展報文的身份認證字段,然后將讀取到的身份認證密文字符串M1通過DES算法還原生成新的明文字符串M2,然后將字符串M2與本機讀取到的用戶名、密碼以及密鑰信息進行比對,如果比對結果一致則認為身份認證通過,繼續進行消息認證操作。
為防篡改與中間人攻擊,需要對通信雙方進行消息認證,并通過不可逆算法對發送的隨機字符串進行校驗,以保證網絡數據的完整性和可靠性。消息認證流程如圖4所示。

圖4 GOOSE擴展消息認證流程圖
GOOSE認證擴展報文進行消息認證時,發送端首先讀取GOOSE原始報文中的APDU信息字符串S,然后使用MD5算法將字符串S進行壓縮生成定長的信息摘要字符串S1,將S1添加到認證擴展報文中消息認證字段中發送給接收端。當接收端收到消息認證報文時先讀取GOOSE認證擴展報文的消息認證字段,將讀取到的APDU信息S同樣使用MD5算法生成信息摘要字符串S2,然后將字符串S1與字符串S2進行比對,如果比對結果一致則認為消息認證通過。當消息認證通過后則確定GOOSE認證擴展報文通過認證,隨即發送確認幀給發送端告知對方認證成功。
針對變電站間隔層通信網絡安全隱患,引入身份認證、消息認證以及密鑰管理等概念,使用GOOSE報文中的保留字段及擴展字段,將身份認證、消息認證及密鑰信息加入其中與原始報文一起發送,實現GOOSE報文發送與接收的認證機制。其中,字段的變換不僅滿足ASN.1基本編碼規則的TLV轉換語法,還使得原始報文和認證報文能夠在變電站自動化通信系統中兼容,符合IEC 62351標準。通過實現以上認證機制,實現了防止黑客進行非法認證、篡改、重放以及抵賴等攻擊手段,從而保證了基于變電站的GOOSE報文通信過程中的保密性、完整性、可用性以及不可抵賴性。