鄭宇泰 張 飛 黃劉松 宋 坤 周明琴
(1、南京華盾電力信息安全測評有限公司,江蘇 南京211100 2、安徽工業大學 信息化處,安徽 馬鞍山243032 3、馬鞍山師范高等專科學校 軟件學院,安徽 馬鞍山243041)
在近期中央工作會議關于能源領域“四個革命、一個合作”戰略和網絡強國戰略的重要論述指引下,2017 年發布的《中華人民共和國網絡安全法》中對重點領域工業控制系統安全保護提出明確規定,同時《關鍵信息基礎設施保護條例(征求意見稿)》、《網絡安全等級保護條例(征求意見稿)》、《電力監控系統安全防護規定》(中華人民共和國國家發展和改革委員會令第14 號)、《電力行業網絡與信息安全管理辦法》(國能安全[2014]317 號)、《電力監控系統安全防護總體方案》(國能安全[2015]36號)、《國家能源局關于加強電力行業網絡安全工作的指導意見》(國能安全[2018]72 號)等國家及行業相關要求中,均要求電力企業提升安全防護、應急響應與處置能力,從網絡架構、通信傳輸、邊界防護、訪問控制、入侵防范、惡意代碼防范、安全審計、集中管控等多方面保障網絡架構安全。
邊界防護方面,新能源遠程集控平臺采用統一建設標準,系統部署堅持“安全分區、網絡專用、橫向隔離、縱向認證”的原則,產控制大區網絡與管理信息大區網絡進行物理隔離,兩網之間部署符合電力系統要求的單向隔離裝置(下文簡稱為“網閘”),并確保單向隔離裝置策略配置安全有效,禁止任何穿越邊界的E-Mail、Web、Telnet、Rlogin、FTP 等通用網絡服務。
市場擁有科東、南瑞正反向隔離裝置,珠海鴻瑞正向隔離裝置,正反向隔離裝置的存在,使得信息的上送下達需要很多的限制。目前大部分使用隔離裝置的廠家,在進行網閘間數據通信都需要自己封裝數據通信模塊,其中不乏與自己本身產品耦合度比較高。
由于正反向隔離裝置,分布在場站測和集控側的軟件之間無法通過簡單的TCP、UDP 等協議實現信息的上送和下達。本文提出一種屏蔽場站側、集控側之間的正反向隔離裝置,實現場站側、集控側兩側部署的軟件無需對正反向隔離裝置進行改造,直接通過本文提出的方法進行控制指令的下發,指令反饋的上送,以及其它生產數據的上送,讓上下層軟件可以無感知連接。
本文利用正反向網閘通信原理,面向電力安全I 區,設計出一個基于正反向網閘的數據通信方案。新設計的數據通信方案能夠無縫銜接已成熟軟件架構,主要用于完成控制指令的下發,指令反饋的上送,以及其他生產數據的上送功能。方案將控制指令與生產數據分開,控制指令因為存在上送和下達,主要基于控制轉發中心和網閘適配程序完成;生產數據上送主要通過正向網閘上送,僅采用網閘適配程序完成。安全I 區的數據傳輸總架構如圖1 所示。

圖1 安全I 區的數據傳輸總架構
如圖所示:安全I 區數據傳輸過程中,分為兩種情況,一種是存在正反向隔離裝置的線路,一種是沒有網閘裝置的線路;控制指令都是通過控制轉發中心進行上送下達,經過正反向隔離裝置的鏈路,在上層和下層都存在網閘適配程序,用于封裝正反向隔離裝置,實現上下層程序無縫通信,如同沒有網閘裝置的線路。
控制轉發中心根據一區建設需要主要完成將SCADA 程序中控制指令的轉發到ECELL 中以及接收ECELL 反饋的控制指令的工作。其中SCADA 為集控建設中信息展示控制軟件,ECELL 為電力信息采集控制指令轉發軟件,二者都為架構相對成熟的軟件,這里對其建設原理不做描述。
控制轉發中心上層與Kafka 總線相連,不予具體程序相連,屏蔽了對不同程序的差異性,下層通過TCP 服務端接收下層程序連接,在集控I 區建設中,就是于ECELL 和網閘適配模塊相連接。
控制轉發中心功能模塊:
2.1.1 Kafka 操作模塊
通過Kafka 消費者訂閱Topic 與上層程序(SCADA)交互,接受SCADA 控制指令,以及通過Kafka 生產折將反饋指令(ECELL/網閘適配器模塊服務端接收的指令)反饋給上層程序(SCADA)。
2.1.2 TCP 服務端(ECELL/網閘適配端)
以TCP 協議與下層程序(ECELL/網閘適配器程序)交互(分為無網閘、有網閘兩種情況,即一個客戶端存在無網閘、有網閘兩種情況下兩路地址)。將上層程序(SCADA)控制指令發送給ECELL/網閘適配器程序,以及接受ECELL 執行遙控指令的反饋信息。
2.1.3 雙地址功能
為了適應雙網絡環境(不經正反向隔離網閘的鏈路、經正反向隔離網閘的鏈路兩種情況),控制轉發中心對于同一下層程序(ECELL)客戶端,支持下層程序(ECELL)客戶端地址以及屏蔽網閘的網閘適配器地址兩個通道。
2.1.4 主備選擇及心跳檢測功能
控制轉發中心定時與下層模塊(已連接客戶端模塊)進行心跳檢測(發送心跳報文),檢測不通過,則主動斷開客戶端連接。
對于一個客戶端的兩個地址,如果主地址鏈路暢通,則主動斷開從地址,并不接受從地址連接。若主地址心跳不通過,再接收從地址連接。
網閘適配模塊的主要作用,是屏蔽正反向網閘對上下兩層程序交互的影響。它的存在如同一根網線一樣,將上下兩層程序連接在一起,實現信息的直接通信,而不需要考慮信息隔離的影響。
2.2.1 組成部分
網閘適配模塊分為網閘上層適配模塊以及網閘下層適配模塊兩部分。
2.2.1.1 網閘上層適配模塊。上層適配模塊包括TCP 的客戶端、TCP 的服務端、反向網閘客戶端、正向信息緩存隊列以及反向信息緩存隊列。其中TCP 的客戶端主要與上層的程序相連,此處為ECELL 和控制轉發中心;TCP 的服務端主要用于接收穿越正向網閘過來的信息(主要為控制指令的反饋信息和電力數據信息);反向網閘客戶端主要基于反向網閘通信規則,將上層程序下發控制指令發送到反向網閘另一端;正向信息緩存隊列以及反向信息緩存隊列主要用于暫存上送下達的信息。
2.2.1.2 網閘下層適配模塊。下層適配模塊包括TCP 的服務端、TCP 的客戶端、反向網閘服務端、正向信息緩存隊列以及反向信息緩存隊列。其中TCP 的服務端主要用于接收下層程序上送/反饋的信息,TCP 的客戶端主要基于正向網閘通信規則,將信息發送給正向網閘另一端;反向網閘服務端用于接收反向網閘客戶端發送過來的控制指令;正向信息緩存隊列以及反向信息緩存隊列主要用于暫存上送下達的信息。
2.2.2 心跳檢測功能
上層適配模塊(A 側)和下層適配模塊(B 側)需要檢測鏈路的狀態,來確保鏈路通暢,即定時B 側模塊向A 側模塊發送心跳報文(0X10 0X04 0X2A 0X16),A 側收到心跳,利用正向網閘可回復1 字節特性,回復心跳確認幀0X00。
2.2.3 程序運行模式
2.2.3.1 程序運行時,首先上層適配模塊啟動TCP Server 端,用于等待連接。下層適配模塊啟動TCP Client 端,用于不斷連接上層適配模塊的TCP Server。
2.2.3.2 當下層適配模塊的TCP Client 連接上服務端后,定時發送心跳報文檢測。
2.2.3.3 上層適配模塊在心跳超時時間內檢測是否收到心跳報文,如果符合則去檢測上層適配模塊中TCP Client 的狀態,如果TCP Client 處于斷開狀態,則不斷去重新創建TCP Client連接;如果TCP Client 處于連接狀態,則保持當前連接;當收到心跳報文且TCP Client 狀態為連接時,利用正向網閘可回復1字節特性,回復心跳確認幀0X00,如果在心跳超時時間內沒有檢測到心跳報文,則主動斷開上層適配模塊中TCP Client 連接。
2.2.3.4 下層適配模塊在心跳超時時間內檢測到心跳回復報文,則去檢測下層適配模塊TCP Server 狀態,如果TCP Server狀態為未創建狀態,則主動創建TCP Server;如果TCP Server 已經創建,則維持該狀態。如果在心跳超時時間內沒有檢測到心跳回復報文,則主動銷毀該TCP Server。
2.2.3.5 上下層適配模塊中反向網閘模塊根據需要可配置是否啟用,如果不啟動,則網閘適配模塊不會進行控制指令的下達,啟動狀態下則會將接收的控制指令下達。
2.2.3.6 上層適配模塊TCP Client 接收到控制指令后,會通過反向網閘客戶端發送給下層反向網閘服務端,下層適配模塊TCP Server 會將控制指令下發到下層程序。
2.2.3.7 下層適配模塊TCP Server 端接受下層程序上送的電力數據及控制反饋指令。通過下層適配模塊TCP Client 端發送給上層適配模塊TCP Server 端,上層適配模塊TCP Client 又會將TCP Server 端接收到信息發送給上層程序。
綜上所述,本文提出的面向電力安全一區的數據傳輸方法,屏蔽正反向網閘的通信方式,內部封裝了正反向網閘通信機制。能夠實現自動檢測網閘間網絡鏈路和通信狀態,并將鏈路狀態模擬出通信中斷或網絡中斷的狀態,告知給上下層程序,實現上下層程序的無感知連接,并將控制指令單獨抽離,形成控制轉發中心,形成控制指令的統一上送下達,并考慮了包含雙網絡通信、故障切換等現實通訊狀況。