楊宇榮,許永軍,杜東威,韓 超
(長園深瑞繼保自動化有限公司,廣東 深圳 518057)
DNP3.0(網絡分布式規(guī)約)是由美國GEHARRIS公司最早制訂的,基于IEC 870-5標準的增強型體系結構網絡分布式規(guī)約[1]。目前該通信協議是配電自動化技術中一種主流通信規(guī)約,該規(guī)約高度靈活并且末端開放,不含任何目標硬件的專用結構,適合高可靠、中等速度和中等吞吐量的應用。鑒于此,現在越來越多的國家及地區(qū)的RTU(遠程終端單元)與SCADA(數據采集與監(jiān)視控制系統(tǒng))之間選用該通信規(guī)約。
隨著智能配電網技術的發(fā)展和電網安全穩(wěn)定控制技術的提高,對通信的要求進一步增強[2]。但是目前國內外對于DNP3.0的應用都是因為其高效、可靠的數據傳輸和控制功能,主要使用規(guī)約中的數據查詢、時鐘同步、控制輸出、文件傳輸等機制,而對于通信的安全防護并沒有太大的重視。
最新的DNP3.0中提出了一種基于IEC/TC 62351-5的安全防護方案[3]。該方案針對部分重要操作,采用基于挑戰(zhàn)-應答[4]的安全驗證機制,確保操作雙方的有效身份,從而可以避免來自第三方的惡意攻擊。
本文以長園深瑞繼保自動化有限公司的PRS-3300配電自動化終端為例,介紹基于DNP3.0的配電網安全防護實用化應用方案。該方案采用模塊化設計,把安全防護功能實例化為具體接口,易于實現,同時將安全防護參數在調試工具中展示出來,便于運維人員后期維護。該方案在工程應用中對配電網的安全運行起到了良好的保護作用,可以在眾多使用DNP3.0規(guī)約的SCADA系統(tǒng)中進行推廣。
DNP3.0是基于IEC 870-5的標準通訊協議,采用了OSI七層模型中的三層:物理層、數據鏈路層和應用層,其結構為增強型協議結構,這種結構使得數據傳送的可靠性大大提高,同時也便于軟件編程的模塊化[5]。
如圖1所示,DNP3.0共分為4部分:數據鏈路層、傳輸功能、應用層及數據對象庫。
圖1 DNP3.0架構
DNP3.0的安全防護功能是在原有架構基礎上,在應用層加入安全驗證功能,如圖2所示。不同的用戶可以選擇各自需要進行安全驗證的報文類型,主站和終端的通信過程中只針對確定類型的報文進行安全驗證,不需要針對所有的報文類型進行驗證,這樣有效控制了啟用安全驗證功能時的數據流量,減輕網絡帶寬壓力。
圖2 DNP3.0安全防護架構
整個驗證功能主要包括[4]:發(fā)起挑戰(zhàn)、應答挑戰(zhàn)、驗證、驗證失敗、主動模式、變更密鑰、管理會話密鑰、管理升級密鑰、安全統(tǒng)計。
1.1.1 挑戰(zhàn)-應答機制
該機制為DNP3.0安全防護的根本,主站和終端均可以主動發(fā)起挑戰(zhàn)。通信雙方需要約定好需要進行安全驗證的ASDU(應用服務數據單元),并將此類ASDU視為“重要”類型的ASDU。
1.1.2 消息驗證碼
MAC(消息驗證碼)[7]是由主站或外站基于待驗證的ASDU計算得到,算法一般為SHA-HMAC,AES-GMAC算法其中的一種。
重要的ASDU在處理之前,均需要進行驗證操作。為了防范重復攻擊,每次的驗證數據均需要隨機生成。發(fā)起挑戰(zhàn)方通過報文向應答方傳遞MAC算法,以便應答方生成其應答報文。發(fā)起方收到應答方的應答報文后,進行驗證,驗證通過后才可以進行后續(xù)報文交互,如果驗證失敗,那么發(fā)起挑戰(zhàn)方將忽略之前收到的ASDU,并且可以發(fā)送一幀驗證失敗報文,流程見圖3、圖4。
圖3 常規(guī)安全驗證通過流程
圖4 常規(guī)安全驗證失敗流程
為了節(jié)約通訊帶寬,應答方可以在發(fā)送包含重要操作信息的報文時,將MAC值包含在同一個ASDU中,這樣就省去了挑戰(zhàn)、應答報文,從而減少了報文交互。DNP3.0中的所有需要驗證的操作均需支持主動模式,但主動模式又是可以通過配置來決定是否啟用。其報文交互流程如圖5、圖6所示。
圖5 主動模式下的安全驗證通過流程
圖6 主動模式下的安全驗證失敗流程
DNP3.0安全認證方案中用到兩種密鑰[8]:會話密鑰、升級密鑰。
會話密鑰是最常用到的密鑰,對于通信的不同方向其會話密鑰是不一樣的。主站和終端之間的通信一旦建立后,主站會立即向終端初始化會話密鑰,并定期變更該密鑰。
升級密鑰是主站用來更改會話密鑰的,當主站需要更新會話密鑰時,會對新的會話密鑰進行加密,并通過“更改密鑰報文”將其發(fā)送出去。升級密鑰一般很少進行更換,除非安全政策發(fā)生改變或者該密鑰被盜時。
DNP3.0安全驗證機制有一個重要特征,就是操作人員可以發(fā)覺一些對DNP3.0網絡的攻擊[9]。主站進行安全驗證的同時必須對相應的操作記錄進行統(tǒng)計,例如驗證失敗、事件報告的數量開始超過其預設閾值。
隨著國內外配電網建設的不斷推進,配電自動化終端與主站之間通信的安全可靠性越來越重要,配電終端PRS-3000系列產品的DNP3.0中增加了安全驗證模塊,并在泰國MEA電網公司的工程中得到了應用。
在原有終端到主站方向的應用層功能碼中增加功能碼0x83,用于安全驗證請求上送的報文;在原有主站到終端方向的應用層功能碼中增加功能碼0x20,用于安全驗證請求。
此外,還增加了DNP3.0關于安全驗證處理的數據對象庫,見表1。此安全防護方案沒有涉及通過規(guī)約對升級密鑰進行變更。
表1 安全驗證數據對象
目前配電終端DNP3.0支持多種ASDU類型,在安全防護方案中需要進行安全驗證的ASDU種類如表2所示。
表2 需要安全驗證的ASDU功能碼
為了在現有DNP3.0組件中實現安全防護功能,特地設計了5個安全防護接口。
處理主動驗證:Rtu_DNP_Para_SA_AgrsChallenge
處理其他驗證:Rtu_DNP_Para_SA_Else
發(fā)送挑戰(zhàn)報文:Rtu_DNP_Send_SA_Challenge
發(fā)送密鑰狀態(tài):Rtu_DNP_Send_SA_Session-KeyStatus
發(fā)送驗證錯誤:Rtu_DNP_Send_SA_Error
DNP3.0安全驗證功能可配置投入/退出,以下流程均默認在該功能投入的情況下進行。
當終端收到報文中的應用層功能碼不是0x20時,按照常規(guī)原有流程處理。
當終端收到報文中的應用層功能碼為0x20且數據對象為主動請求模式(組別0x78,變體0x03)時,調用Rtu_DNP_Para_SA_AgrsChallenge接口進行解析。
當終端收到報文中的應用層功能碼為0x20且數據對象為其他安全驗證數據對象時,則調用Rtu_DNP_Para_SA_Else接口進行解析并備份當前收到的報文。如果解析出數據對象為“身份驗證回復”報文(組別 0x78,變體0x02),就對回復信息進行驗證,驗證失敗則通過Rtu_DNP_Send_SA_Error接口回復驗證失敗報文,驗證通過則回到正常流程解析之前備份的報文。如果解析出數據對象為“當前密鑰狀態(tài)”報文(組別0x78,變體0x04),調用接口 Rtu_DNP_Send_SA_SessionKey Status,回復會話密鑰的當前狀態(tài)。如果解析出數據對象為“更改密鑰”報文(組別0x78,變體0x06),對報文中的密鑰信息進行解密,解密失敗則通過Rtu_DNP_Send_SA_Error接口回復驗證失敗報文,解密通過則更新密鑰后調用接口Rtu_DNP_Send_SA_SessionKeyStatus,回復會話密鑰的當前狀態(tài)。
“鯤龍”AG-600的出現恰好可以讓這些問題迎刃而解。它只需要一塊水深超過2.5米的水域便可實現降落,同時其自身的大載重量也確保了投送量的足夠多。
當終端收到報文中的應用層功能碼為表2中的一種時,調用Rtu_DNP_Send_SA_Challenge接口發(fā)送挑戰(zhàn)報文。
DNP3.0的安全防護方案挑戰(zhàn)機制中的MAC值是通過hash[10]算法計算得到,實際應用中我們使用了HAMC SHA-1,HMAC SHA-256兩種。
對于會話密鑰變更需要用到的加解密算法則使用了AES-128,AES-256[11]兩種。
工程配電終端使用網口與SCADA[12]進行通信,SCADA給每一臺終端分配一個獨立的網絡IP。終端網口首先接到就地的光電轉換器,再由光電轉換器接入到光纖網絡,最終通過上層交換機接入到SCADA后臺服務器,如圖7所示。
圖7 工程應用網絡架構
終端和SCADA的通信除了DNP3.0基本配置(規(guī)約地址、FRAGMENT大小、校時周期等)以外,還增加了安全防護相關的配置,見表3。安全防護功能啟用,但是主動驗證模式退出(該項配置需要和主站保持一致,如果主站投入主動模式那么終端也需要同步啟用該功能)。
表3 安全防護參數配置
此外,用于更新會話密鑰的升級密鑰事先存儲在終端文件系統(tǒng)中的二進制文件中,該密鑰由SCADA方告知運維人員后就地修改。
DNP3.0安全防護報文基本可分兩類:會話密鑰變更和對重要ASDU的安全驗證。
下面以實際工程中終端與主站之間的初始化密鑰、遙控[14]選擇操作報文為例,展示DNP3.0的安全防護實際流程。其陰影部分為校驗碼[15],所有報文數據均為十六進制數。
3.2.1 初始化會話密鑰
帶安全防護功能的DNP3.0,鏈路初始化之前會首先進行會話密鑰的初始化,該流程由主站發(fā)起,詳見表4—表7。
表4 主站→終端(會話密鑰狀態(tài)查詢報文)
表5 終端→主站(會話密鑰狀態(tài)應答報文)
表6 主站→終端(會話密鑰變更報文)
表7 終端→主站(會話密鑰狀態(tài)應答報文)
3.2.2 遙控操作
終端收到主站發(fā)出的遙控選擇、遙控執(zhí)行報文后主動發(fā)起挑戰(zhàn),對主站后續(xù)的應答報文認證通過后才執(zhí)行遙控操作,以下為遙控選擇流程報文(見表 8—表 11)。
表8 主站→終端(遙控選擇)
到目前為止,該工程已投入使用半年多,終端與SCADA之間通信正常,沒有出現網絡異?,F象。將配電網基本運行工況及時上報到SCADA的同時,確保了網絡的正常運行。
隨著配電網對通信安全防護要求的提升,DNP3.0等規(guī)約的安全防護方案需求也將越來越突出。本文從DNP3.0的基本安全防護架構開始闡述,詳細描述了安全防護的設計方案及工程應用,對DNP3.0在配電網領域的推廣應用具有重要意義。
表9 終端→主站(挑戰(zhàn)報文)
表10 主站→終端(應答報文)
表11 終端→主站(遙控選擇應答報文)