?

DNP3安全認證功能的探索與實現

2023-09-12 07:47楊梅強胡紹謙尤小明周曉飛
湖北電力 2023年2期
關鍵詞:傳輸層子站應用層

楊梅強,胡紹謙,尤小明,周曉飛,楊 越

(南京南瑞繼保電氣有限公司,江蘇 南京 211102)

0 引言

隨著通信環境的日益復雜,電力系統自動化領域中數據交互日益頻繁,對控制系統和數據網絡的安全性、可靠性提出了嚴峻挑戰[1]。傳統的主子站通信協議如IEC101/IEC104、DNP3 也面臨著通信安全的風險[2-4],IEC62351 標準的頒布為這些協議實現通信安全提供了規范上的支撐[5]。近年來,國內外針對這些協議的通信安全也提出了多種解決方案[6-10],但方案大多基于網絡通信加密或結合身份認證來實現。實際上,這些協議多年前已經頒布了基于通信協議本身的安全認證協議擴展[11-12],但并未出現積極響應通信協議安全實施和開展相關互操作性測試的狀況。

IEC62351 通信協議安全采用應用層的“挑戰-應答”機制[13],因而實施通信協議安全需要基于主子站之間應用層數據的交互。IEC101/IEC104 協議盡管存在較為完善的鏈路層確認機制,但子站響應的應用層數據卻沒有相應的應用層確認機制,其應用層數據交互的關聯性較弱。DNP3協議的應用層存在“查詢/應答”、“響應/確認”機制,應用層數據交互的關聯性強,因而DNP3協議在實施通信協議安全存在一定的便利性。

DNP3 作為一種通信協議在海外電力領域有著廣泛的應用,其不僅應用于主子站通信,也應用于變電站內部通信。近幾年,海外電力領域關于DNP3 主子站通信安全的呼聲逐漸加大,但實際的工程實施層案例很少[14]。

基于上述兩點,本文嘗試通過DNP3 協議來探索實現通信協議的安全功能。本文闡述了DNP3子站的安全認證功能的實現方法,并基于國際權威認證檢測機構的認證測試情況,總結了DNP3 安全認證功能實現的一些細節。這些實現細節對以后實施IEC101/IEC104的通信協議安全也具備很好的參考價值。

1 DNP3安全認證功能介紹

早在2012年,DNP3發布的規范就已經推出了V5版安全認證的擴展規范,其按功能及實現可以分為兩個部分,傳輸層安全和應用層安全。其中,傳輸層安全基于TCP/IP 通信,遵循了《IEC 62351-3:2023 Power systems management and associated information exchange-data and communications security-Part 3: Communication network and system security-profiles including TCP/IP》。應用層安全基于對DNP3應用層功能碼、數據對象和處理流程的擴 展,遵 循 了《IEC 62351-5:2023 Power systems management and associated information exchange-data and communications security-Part 5: Security for IEC 60870-5 and derivatives》,適用于各種通信方式。DNP3安全認證功能的架構如圖1所示。

圖1 DNP3安全認證功能架構Fig.1 DNP3 secure authentication function architecture

1.1 DNP3傳輸層安全

DNP3 只有采用TCP/IP 通信時,才能實施傳輸層安全,關于傳輸層安全在電力系統中的應用和改進,已經有很多文獻進行過探討[15-16]。DNP3 實施傳輸層安全與其他協議并無太大的區別,可以采用開放的TLS接口,實施傳輸層安全不影響DNP3的數據鏈路層、傳輸層和應用層的處理。

1.2 DNP3傳輸層安全

DNP3 應用層遵循了IEC62351-5 的要求,并根據自身的特點,擴展定義了相應的功能碼和數據對象,適用于各種介質進行通信方式,例如串口、UDP、TCP等。

DNP3應用層安全,按功能和作用主要可以分為以下幾個部分[17]。

1.2.1 數據安全驗證

數據安全驗證的實質就是接收方對收到的ASDU的身份和數據完整性進行驗證的過程,是應用層安全的核心。

IEC62351-5 采用“挑戰-應答”(Challenge-Reply)機制對數據進行安全驗證,即接收方對收到的ASDU發起驗證挑戰(Challenge);發送方根據已發送的ASDU 和驗證挑戰信息生成消息認證碼(MAC:Message Authentication Code)并進行驗證應答(Reply);接收方校驗消息認證碼是否有效,有效則處理ASDU,否則丟棄ASDU。

為了提高通信效率,主子站對ASDU進行了約定,區分為關鍵ASDU 和非關鍵ASDU。接收方只對關鍵ASDU 發起驗證挑戰。為了簡化流程,發送方可以采用主動驗證模式(Aggressive)的同時發送ASDU和消息認證碼,接收方收到ASDU 和消息認證碼即可校驗ASDU的有效性。通信時,主子站都可以對關鍵ASDU發起驗證挑戰。安全驗證的流程如圖2和圖3所示。

圖2 挑戰應答驗證流程Fig.2 Flow of challenging response verification

圖3 主動驗證模式流程Fig.3 Flow of using aggressive mode

1.2.2 會話密鑰協商

在數據安全驗證過程中,驗證的雙方都需要利用會話密鑰(Session Key)來計算消息認證碼,以達到驗證和保密的目的。為了保證通信雙方會話密鑰一致,在通信的初始化階段主站會發起會話密鑰握手協商;另外為了防止密鑰泄露產生安全問題,在通信過程中,主站會周期向子站發起會話密鑰協商。會話密鑰協商過程如圖4所示。

圖4 會話密鑰協商流程Fig.4 Session key initialization and periodic update

1.2.3 用戶管理及更新密鑰協商

數據安全驗證和會話密鑰協商都是基于相應的用戶。如果實施DNP3應用層安全時不支持用戶管理及更新密鑰(Update Key)協商,可以采用默認的用戶“Common”和預配置的更新密鑰;如果支持,則在通信初始化階段需要進行用戶管理及更新密鑰協商流程處理,如圖5所示。

圖5 用戶管理及更新密鑰協商流程Fig.5 Flow of user status change and key change update

1.2.4 安全統計數據

主子站實施DNP3 應用層安全時,需要對安全認證過程中的事件進行統計,以監視當前的運行狀態;如果這些統計數據開始頻繁超過事件報告閾值,表明該站正在遭受某些類型的安全攻擊。子站可以將安全統計數據上送給主站,以便于主站監視子站是否遭受到了安全攻擊。安全統計數據和前面3個部分一起構成了DNP3應用層安全。

2 DNP3安全認證功能實現方法及細節

DNP3 安全認證功能的實現,主要依賴于兩點:加密算法的支持和安全認證流程的實現。關于第一點加密算法本文不做闡述,只從子站的角度探討安全認證流程的實現方法及細節。

2.1 DNP3傳輸層安全的實現

如前面所述,DNP3傳輸層安全與DNP3協議的應用數據處理是完全獨立,在實施時僅需要在TLS 握手協商、報文接收和報文發送3個方面做兼容處理,主要流程如下(流程如圖6和圖7所示):

圖6 DNP3主子站TLS握手示意圖Fig.6 TLS handshake diagram of DNP3 master-sub station

圖7 DNP3主子站調用TLS收發數據Fig.7 DNP3 master-sub station invoking TLS request and response data

1) 主子站建立TCP 連接,調用TLS 接口進行初始化握手協商;

2) 調用TLS 接口接收數據,得到DNP3 協議的原始鏈路數據;

3) 進行DNP3的請求處理,依次進入鏈路層、傳輸層、應用層流程,處理應用請求;

4) 進行DNP3 的響應處理,將應用響應進行應用層、傳輸層、鏈路層組幀和封裝,準備發送;

5) 調用TLS接口進行數據發送。

僅實施傳輸層安全時,不影響DNP3協議的鏈路層、傳輸層、應用層處理流程,對DNP3整體的實現影響較小,實施時相對簡單,但其僅僅適用于TCP/IP通信方式[18]。

2.2 DNP3應用層安全的實現

DNP3 應用層安全通過擴充功能碼和數據對象來實現,需要對DNP3 原有的處理流程進行調整,其中,會話密鑰協商、用戶管理及更新密鑰協商、安全統計數據對DNP3 原有的處理流程影響較小,而數據安全驗證過程對原有的處理流程影響較大。本文在實現時將應用層安全按如下方式進行處理。

2.2.1 應用層處理請求數據流程

實現常規DNP3 功能時,子站往往根據應用層功能碼進行讀、寫、遙控等請求的處理和響應,而當實施DNP3安全認證功能后,子站會對讀、寫、遙控等請求進行安全驗證,驗證通過后才進行響應;而安全認證請求和常規的讀、寫、遙控都屬于應用層請求,打亂了DNP3原本清晰的分層處理邏輯,導致應用層請求的處理存在嵌套處理的困擾。

為了避免這種嵌套對原有處理流程的大幅調整,可以將常規應用層請求之前的安全認證處理過程作為介于DNP3傳輸層和應用層之間虛擬的安全分層來考慮。

如圖8 所示,該虛擬安全分層可以對原始的應用層請求進行區分處理,能很好地解決應用層請求的邏輯嵌套。同時,從協議分層處理的角度來看,構造虛擬安全分層后,可以用該分層的邏輯接收緩存來承載數據安全驗證過程中的關鍵ASDU 數據,可以有效降低對原來的傳輸層和應用層處理流程的影響。

2.2.2 應用層發送響應數據流程

實施應用層安全對應用層響應的處理流程也會產生較大影響,主要體現在以下幾個方面:

1) 應用層響應的安全驗證處理。在實施安全認證功能前,應用層響應會直接進入到傳輸層響應處理流程,而實施后,應用層響應需要先進行安全驗證處理(如增加主動驗證模式數據對象、增加驗證挑戰信息對象等)后才能進入到傳輸層處理流程;

2) 應用層數據發送順序的調整。在實施安全認證功能之前,DNP3子站發送應用層響應遵循先進先出的原則,而實施后,DNP3 子站需要優先對應用層安全驗證請求進行處理和響應;

3) 應用層響應緩存清除策略的調整。在實施安全認證功能之前,DNP3子站應用層響應的緩存在發送后或收到應用層確認即可清除,而實施后,緩存的清除需要考慮主站是否進行驗證挑戰等因素。

為了應對這些情況,可以將應用層響應和傳輸層響應之間的安全驗證處理納入到虛擬安全分層來考慮。其中,將流程1)封裝為“應用層響應安全驗證處理”子邏輯(如圖9所示),構成虛擬安全分層的響應處理。

圖9 應用層響應安全驗證處理流程Fig.9 Processing flow of application layer response to security verification

進行虛擬安全分層后,“應用層安全驗證響應”在層級上要低于應用層響應,理應優先進行響應處理,能合理地解決上述流程2)導致的問題;而虛擬安全分層對應的邏輯發送緩存也能很好地處理上述流程3)中應用緩存的清除和配合問題。

將應用層接收處理和發送處理的虛擬安全分層邏輯整合,可以得到完整的虛擬安全分層,其邏輯如圖10所示。

圖10 虛擬安全分層邏輯示意圖Fig.10 Hierarchical logic diagram of virtual security

虛擬安全分層處理有效減少了對原有應用層和傳輸層的請求/響應處理流程的調整,保持了原有分層的獨立性,這一點在功能實現和一致性測試中得到了驗證。

3 DNP3安全認證功能測試及分析

3.1 一致性測試介紹

實現DNP3安全認證功能后,為了便于工程實施,進行了DNP3安全認證功能的一致性測試。一致性測試的內容包含以下幾個部分:

1) 驗證請求測試。測試發起驗證請求的一方處理流程是否滿足規范要求,包括根據會話密鑰正確對ASDU 發起驗證請求并驗證響應、處理主動驗證模式的響應等。

2) 驗證響應測試。測試響應驗證請求的一方處理流程是否滿足規范要求,包括根據會話密鑰正確處理驗證請求并進行響應、正確地發送主動驗證模式的響應等。

3) 子站功能測試。測試子站特定功能是否滿足規范要求,包括正確處理會話密鑰協商請求并進行響應、正確處理用戶管理及更新密鑰協商請求并進行響應,正確根據用戶角色處理應用層請求等。

4) 特定功能測試。測試子站是否滿足傳輸層安全的要求等。

測試內容涵蓋了應用層安全[19]和傳輸層安全的各項要求。

3.2 性能測試及分析

DNP3子站實施安全認證功能,對通信流量和計算耗時會產生影響。由于已經有文章對傳輸層安全的這些影響做過分析[20-21],本文的分析只針對DNP3 應用層安全。在DNP3應用層安全中,會話密鑰協商、用戶管理和更新密鑰協商流程出現的頻率較低,對整體通信的影響不大,本文的分析主要集中在數據安全驗證環節。

在安全驗證環節,MAC 算法一般采用HMAC[22-24]算法,MAC算法和安全驗證模式的選擇會對通信流量產生直接影響。采用挑戰/應答模式,安全驗證流程會增加88~98字節的通信流量;采用主動驗證模式,會增加24~36 字 節 的 通 信 流 量[25-26]。具 體 情 況 如 表1所示。

表1 MAC算法和驗證模式對流量增加的影響Table 1 Impact of MAC algorithm and authentication mode on traffic increment

DNP3 中子站響應只有0x81(請求響應)、0x82(非請求響應)、0x83(安全認證響應)3 個功能碼,如果主站對子站響應進行安全驗證,則功能碼為0x81、0x82的響應都會進行安全驗證??紤]DNP3 實際應用場景,主站是在進行多次CLASS1/2/3事件查詢后才進行一次CLASS0 總查詢或狀態數據查詢,當事件出現的頻率較低時(無事件數據時,子站響應空數據幀的長度為17 個字節),安全驗證流程導致流量增量的比例會比較明顯。

安全驗證環節的計算耗時主要體現在驗證挑戰時的Challenge 信息生成和MAC 計算。為了得到相對準確的數據,在認證測試過程中,針對性地修改程序,對Challenge 信息生成和MAC 計算的過程進行連續性測試。運行測試程序的CPU 為雙核800 MHz,內存為2 G,程序按單線程運行,得到數據如表2和表3所示。

表2 生成Challenge信息耗時Table 2 Time-consuming of generating challenge information

表3 MAC校驗計算耗時Table 3 Time-consuming of MAC check calculation

從表2 可以看出,生成Challenge 消息的耗時平均一次約為320 μs,實際測試中,生成Challenge 消息的耗時主要耗費在調用接口生成隨機數上。

表3 列出了兩種計算MAC 算法的耗時,平均下來采用HMAC-SHA-256 進行一次MAC 計算耗時約為55 μs,而采用HMAC-SHA-1 進行一次MAC 計算耗時約為26 μs。

從以上測試數據可以看出,實施應用層安全后,通信流量增加產生的影響會比計算耗時增加的影響更加顯著。

4 DNP3安全認證功能測試及分析

在測試過程中,發現安全認證功能在工程應用中可能存在以下問題:

1) 安全認證過程中CSQ、KSQ 等序號的校驗及失步風險。以CSQ 序號為例,挑戰方和應答方都會校驗CSQ是否連續,如果出現CSQ不匹配,則會導致通信出現問題。但DNP3的安全認證規范并未明確CSQ序號失步后如何再同步。在實際工程實施過程中,主子站需要對序號失步問題進行防范。

2) 對通信問題定位的影響。實際工程中通信問題涉及到很多方面,如通道延時、誤碼、主子站配合等;定位通信問題往往會借助報文和日志信息。實施安全認證功能后,對通信問題的分析、定位和處理會變得更加復雜。

5 結語

本文闡述了DNP3 實施安全認證功能的實施細節,在變電站通信終端上實現了DNP3安全認證功能。對測試流程和數據進行了整理和歸納,分析了測試過程中遇到的問題以及產生的原因,對DNP3 安全認證功能的實施和應用有重要意義。本文的實現方法和技術細節對實施IEC101/IEC104 安全認證功能也具備很好的參考價值。

猜你喜歡
傳輸層子站應用層
基于Python語言的網絡傳輸層UDP協議攻擊性行為研究
液壓平推CNG子站改造為標準CNG子站的建議
ZnO電子傳輸層在有機無機雜化鈣鈦礦太陽能電池中的應用
物聯網無線通信傳輸層動態通道保障機制
基于物聯網GIS的消防智能巡檢系統設計與實現
淺談10kV配電自動化系統設計
基于分級保護的OA系統應用層訪問控制研究
配電自動化建設方案研究
新一代雙向互動電力線通信技術的應用層協議研究
物聯網技術在信息機房制冷系統中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合