李 露,謝映宏,李蔚凡,丁 凱,李 峰
(1.長園深瑞繼保自動化有限公司,廣東 深圳 518057;2.深圳市峰泳科技有限公司,廣東 深圳 518115)
隨著信息安全技術的快速發展和《能源生產和消費革命戰略2016—2030》的逐步推進,配電網終端的接入形式呈現多元化發展,開放互動網絡環境已形成,配電網終端的通信安全面臨著前所未有的挑戰。目前,電力系統通信協議主要有IEC 870-5-101(以下簡稱“101”)、IEC 870-5-104(以下簡稱“104”)、IEC 61850、DNP3(分布式網絡協議)。這些協議在設計之初均為封閉隔離,沒有采用加密認證等安全手段,使得網絡攻擊者很容易對數據進行監聽、篡改、拒絕服務攻擊[1]。近年來已有很多學者對協議本身的安全功能進行改進研究,但有一定的局限性,沒有從系統層面進行方案的剖析、比較和測試驗證。
2010 年“震網”事件發布后,各方將協議安全提到首要日程中,并對協議內部的安全性進行廣泛研究[2-11]。文獻[12-13]分別提出DNP Sec 和DNP SAv5A 安全防護,前者重點修改數據鏈路層,后者重點加固應用層,但仍存在數據的竊聽攻擊。文獻[14]使用SCAPY測試了大量的分組數據,證實存在重放、欺騙、竊聽攻擊。文獻[15]通過發送大量測試數據,導致DNP應用層數據接收緩沖區溢出,產生拒絕服務攻擊。文獻[16]研究了配電終端軟硬件的可信安全防護方案,基于BIOS(基本輸入輸出系統)、引導、操作系統內核、驅動程序、應用程序等,構成一個可信的、安全的ESAM(嵌入式安全控制模塊)芯片;該機制很大程度上依賴于強大的平臺,小型的配電網終端很難發揮其可信安全系統防護方案。文獻[17]介紹了傳統的配電網終端接入在安全防護和海量終端接入認證方面存在的不足,提出一種基于標識密碼公鑰體制的安全通信協議;該協議在安全性方面有所改善,但沒有通過專業的安全測試進行漏洞挖掘分析。
針對以上研究存在的問題,本文針對配電網終端的協議安全問題展開研究,設計一種基于國密算法的應用層規約改進和網絡層加密、認證雙重安全架構,有效解決配電網終端開放互聯安全威脅問題。通過應用層精簡的協議安全改進、比較和驗證,提高安全架構的效率和安全性。
網絡層和應用層的身份認證和密鑰協商,都需要用到對稱加密、非對稱加密、哈希計算。對稱加密對通信報文的數據進行加密,非對稱加密用于雙向認證的簽名及數字證書的簽名,哈希計算主要用于數據完整性計算。
為適應中國國情發展,滿足國家信息安全客觀要求,對國外相關的經典密碼算法進行比較和分析,總結了RFC(請求注解)標準的加密算法未來可能帶來的威脅和風險。國密標準與RFC 標準相關的典型算法見表1。

表1 典型算法
1.1.1 SM2與RSA算法介紹
SM2 算法是國密標準中的非對稱算法,其技術基礎為ECC(橢圓曲線算法),數學基礎為橢圓曲線離散對數。以下對SM2 的加密解密流程進行說明。
設G為橢圓曲線的一個基點,(x,y)為橢圓曲線的坐標點,C、C1、C2、C3、t為計算變量,KDF為密鑰派生函數,Hash為哈希函數,PB為用戶B的公鑰,S為比特串,[k]P表示橢圓曲線上點P的k倍點,⊕為異或操作,||為比特串的拼接操作,M為要發送的消息比特串,klen為M的比特串長度。對M進行加密需執行如下步驟[18]:
步驟1,用隨機數發生器產生隨機數k∈[1,n-1]。
步驟2,計算橢圓曲線點C1=[k]G=(x1,y1),將C1的數據類型轉換為比特串。
步驟3,計算橢圓曲線點S=[h]PB,若S是無窮遠點,則報錯并退出。
步驟4,計算橢圓曲線點[k]PB=(x2,y2),將計算后的坐標點數據類型轉換為比特串。
步驟5,計算t=KDF(x2‖y2,klen),若t為全0比特串,則返回步驟1。
步驟6,計算C2=M⊕t。
步驟7,計算C3=Hash(x2‖M‖y2)。
步驟8,輸出密文C=C1‖C3‖C2。
解密過程為上述操作的逆過程,通過私鑰解密后,再對原始的數據進行完整性檢測。
與SM2算法相比較,RSA算法的技術基礎為世界難題大樹分解,描述為:
對于較大的素數p和q,n=pq具有如下數學性質:若已知p和q,計算n非常容易;若已知n,求解p和q非常困難。
1.1.2 SM2與RSA算法比較
SM2與RSA算法的主要區別有以下兩個方面:
1)采用的算法原理不同,橢圓曲線算法能以較小的密鑰和較少的數據傳輸,效率較高。
2)安全性方面,橢圓曲線的數學理論非常復雜,難以工程實現。近幾年隨著量子計算的快速發展,RSA算法的暴力破解方法已經產生。
1.2.1 SM1、SM4、AES算法介紹
SM1 和SM4 算法為國密標準的分組密碼算法,明文和密鑰長度均為128位,加密和解密的密鑰相同。SM1 算法因源碼非公開,算法以知識產權授權的形式存在于硬核中,釋放了內存資源,安全性和快速性比AES(高級加密標準)都略高一籌。
SM4算法加密和密鑰流程如圖1所示。由圖1可知,加密和解密都需要通過32 輪非線性迭代實現,而解密的輪密鑰為加密所用的輪密鑰逆序。相比于AES,SM4 采用的分組長度也是128 位,但輪迭代次數和操作有差異。每一輪的操作包括行移位、列混淆、密鑰輪加。

圖1 SM4算法流程
1.2.2 SM4與AES算法分析
SM4算法與AES算法的主要區別如下:
1)算法結構。算法結構如表2所示,包括兩種算法的密鑰長度、分組長度、迭代次數。

表2 算法結構
2)輪操作。SM4輪操作包括將32位明文與輪密鑰異或、基于S 盒的字節到字節代替、基于移位的線性變化。
AES 輪操作包括使用S 盒完成分組的字節到字節代替、行移位、列混淆、密鑰輪加。
綜上所述,兩種算法的安全性均基于S 盒的非線性及線性變化提供的擴散作用,密鑰的使用方式都是將密鑰與明文或加密結果異或。區別在于,SM4 在每輪的開始使用密鑰,AES 在每輪的最后使用密鑰。
3)密鑰管理算法。SM4 的密鑰管理算法和加密算法基本相同,同樣將密鑰分為32 位的4 組,通過S 盒代替、線性變化來產生各輪密鑰。AES算法的密鑰產生較為繁瑣,代碼實現較為復雜,對嵌入式平臺內存資源要求較高。
通信數據的完整性通過哈希計算實現,計算后的哈希值用于判斷原始數據是否被惡意篡改。哈希算法在國密標準中為SM3算法,RFC標準中為SHA(安全散列算法)系列。哈希值被廣泛應用在數字簽名、消息認證、數據完整性檢測等領域。
SM3算法是在SHA-256基礎上的一種改進算法,采用Merkle-Damgard 結構,消息分組為512位,摘要值長度為256位。SM3算法流程如圖2所示,需要進行多次填充和迭代壓縮。

圖2 SM3算法流程
SM3算法的壓縮處理與SHA-256相似,但壓縮函數的每一輪使用2個消息字。摘要生成過程均包括填充和迭代壓縮過程。
2005 年我國密碼學家王小云[19-20]等人給出了SHA-1的碰撞算法,SHA-1的安全性已經存在漏洞。相比于SHA-1算法,SM3的安全性較高。
SM3 算法同樣可以通過國家密碼局授權的形式固化于硬件中進行加密解密運算,在計算效率和安全性方面都有很大提升。
國密算法的IPSec(互聯網安全協議)設計基于原始RFC傳輸架構,將不太安全的RFC標準的加密、簽名、哈希算法替換成自主可控的SM1、SM2、SM3、SM4 算法,符合國家對重要電力基礎設施的高安全標準。依據IPSec VPN技術規范,在配電網終端實現國密IPSec兩種工作模式。
1.4.1 隧道模式
隧道模式保護所有IP(因特網協議)數據并封裝新的IP 頭部,原始的IP 頭部不再進行IP 路由。隧道模式能夠為IP 層數據提供完整的數據保護,包括IP頭部和IP數據載荷,一般使用在網關或終端中。隧道模式AH(認證頭)和ESP(安全數據載荷)協議如圖3、圖4所示。由圖3可知,原始的IP地址是遠端的源地址和目的地址,新的IP 頭部包含IPSec 本端和對端地址。在隧道模式下,AH協議保護原始的IP 頭和IP 數據載荷。由圖4 可知,隧道模式下,ESP 協議同樣保護原始的IP頭和IP數據載荷。

圖3 隧道模式AH協議

圖4 隧道模式ESP協議
1.4.2 傳輸模式
傳輸模式保護原始IP 頭部后面的數據,在原始的IP 頭和payload 間插入IPSec 頭部,可提供端到端的加密會話。傳輸模式AH 協議和ESP 協議如圖5、圖6 所示。由圖5 可知,在國密IPSec 傳輸模式下,AH 協議插入到TCP 之前。由圖6 可知,隧道模式下ESP協議插入到TCP和Data的前后,并保護原始的IP數據載荷和數據完整性。

圖5 傳輸模式AH協議

圖6 傳輸模式ESP協議
綜上可知,國密IPSec 傳輸模式下,通過AH頭或ESP頭對IP層數據載荷進行保護,原始IP頭保持不變;國密IPSec 隧道模式下,通過新的IPSec 頭進行數據路由,而原先的IP 頭和數據被保護起來,內部的路由信息也被保護起來。
安全架構采用輪訓和突發兩種通信模式,主站可請求子站,子站響應;子站也可突發上送數據給主站,主站響應。通信方式采用網口,安全架構在應用層和網絡層進行加密和認證,同時具備雙重加密認證屬性,保證了數據傳輸的機密性、完整性和身份的合法性。
安全架構如圖7 所示,應用層主要完成加密、認證、業務建立,網絡層完成密鑰協商和加密隧道建立。安全架構設計重點解決消息欺騙、消息篡改、竊聽攻擊、重放攻擊、中間人攻擊等問題。網絡層和安全層的脆弱性解決策略如表3所示,主要從欺騙、重放、篡改、竊聽等維度進行分析和設計。

圖7 安全架構

表3 脆弱性解決策略
對101 和104 協議進行安全性改造,并在配電終端PRS-3351保護測控裝置上應用。在原101和104報文的基礎上,增加安全層協議報文。安全層協議報文格式如表4所示,信息安全擴展區包含時間戳、隨機數、簽名,最終哈希計算生成MAC(消息認證碼)。

表4 安全層協議報文格式
考慮到協議的安全改進會影響通信效率,在心跳幀和初始化鏈路幀中不采用加密方式,其他進行加密處理。安全擴展區定義如表5所示。由表5 可知,密文區的信息安全擴展區也作了精簡設計,針對不同的101和104應用業務類型,添加了時間戳、隨機數和簽名,數據字節總長度僅為79字節。

表5 安全擴展區定義
定義時間戳可確保通信報文的時效性。隨機數可提供數據的不可預測性,此種機制能夠保存報文的新鮮度,防止重放攻擊。簽名信息是對信息的完整性和不可抵賴性作保證,為主站和終端的雙向認證提供技術支撐。
2.1.1 傳統認證
終端的接入需要接受主站認證,同時終端也對主站進行認證,安全認證流程如圖8所示。

圖8 安全認證流程
2.1.2 認證改進
相比于傳統接入認證管理,加密網關負責配電網終端的認證和接入管理,通過證書中心為每個終端簽名證書,因此加密網關需要負責大量的用戶證書信息。由于未能考慮到證書吊銷或注銷等不及時性問題,身份認證存在一定的管理缺陷。為了避免多次人工進行證書簽發,安全架構集成證書在線狀態接口,防止相關敏感數據泄露和通信負荷增加。動態認證流程如圖9所示,終端接口查詢并緩存簽名信息,有效解決人工維護的不安全性問題。

圖9 動態認證流程
2.1.3 數據加密流程
采用國密算法對數據進行加密,能夠保證數據的機密性。由表4 可知,信息安全擴展區的MAC可保證數據的完整性,加密后的密文數據能夠保證數據的機密性,防止竊聽。
應用層對標準的101和104報文進行加密封裝后,數據經由傳輸層到達網絡層,并通過國密IPSec進行網絡層的加密和認證。
為保證加密隧道完全可靠,設計基于終端到網關之間的加密隧道。加密認證設計由ISAKMP(因特網安全關聯和密鑰管理協議)、AH 協議、ESP 協議三部分組成。傳輸模式采用隧道模式,目的是對原始透明的IP數據包進行二次封裝。IPSec的安全體系框架如圖10所示。

圖10 IPSec安全體系框架
2.2.1 密鑰協商
密鑰管理協議為建立安全聯盟過程,便于身份和密鑰的同步。協議設計采用ISAKMP,報文使用UDP(用戶數據協議)500端口進行傳輸。
ISAKMP 需要通過兩個階段的交換。第一階段,終端和加密網關建立ISAKMP SA,該SA 是協商通信雙方共享策略和密鑰[21]。第二階段,終端和加密網關使用第一階段的ISAKMP SA 協商建立IPSec SA,IPSec SA 是為了保護數據通信而使用共享策略和密鑰[22]。
兩個模式的交換,有主模式和快速模式。主模式用于第一階段交換,實現終端和網關之間的身份鑒別和密鑰交換,從而得到會話密鑰,此密鑰用于保護第二階段的協商過程。快速模式用于第二階段交換,實現終端和網關之間的IPSec SA協商,確定通信雙方的IPSec 安全策略及會話密鑰。
密鑰協商過程中的證書通過權威的CA(認證機構)簽發,并對證書交換的方式進行SM2算法認證簽名授權,解決了RFC模式下RSA認證算法存在的中間人攻擊問題。第一階段協商和第二階段協商過程如圖11所示。

圖11 協商交換流程
第一階段協商,首先完成SA安全聯盟,響應方發送安全聯盟和響應方的證書簽名及證書加密。然后,發送方和響應方進行密鑰數據交換,并用臨時密鑰Sk 進行SM2 公鑰加密保護和簽名。最后,發送方和響應方鑒別前面的交換過程,用協商好的對稱密碼算法進行數據加密。
第二階段協商,首先發送方發送哈希載荷和安全聯盟載荷。然后,接收方也發送一個哈希載荷和安全聯盟載荷。最后,發送方發送的哈希載荷對前面的交換進行鑒別。
攻擊者就算截獲了密鑰交換的信息,無法通過DH密鑰交換協議的漏洞,也無法取得密鑰。所以從安全性角度來看,密鑰協商交換是一種高度安全協議,可有效防止中間人攻擊。
2.2.2 加密算法流程
網絡層IPSec密鑰協商成功,隨后加密隧道成功建立,雙方的數據業務通過ESP 協議封裝對原始的IP頭和數據載荷進行加密傳輸。依據國密IPSec VPN 技術規范,數據業務傳輸的過程中通過國密算法SM1 或SM4 進行對稱加密,通過SM3進行業務數據完整性保護。利用國密算法的封閉性及硬件加密卡定制實現加密和解密過程。
加密流程如圖12所示,收到IP層數據后,通過響應的算法標識進行接口調用,最后完成明文加密并對IP 層數據包進行再次封裝,通過鏈路發送出去。

圖12 加密流程
101或104報文中通過源地址和目的地址的組合來區分報文信息的來源和目的,繼而表明主站和終端身份。這種方式易被攻擊者偽裝合法地址,從而偽造通信報文,形成欺騙攻擊。安全架構的雙向認證技術能夠明確確定正在與之授權的用戶通信并提供服務,一旦惡意用戶闖入,則添加錯誤日志信息,便于審計和追溯。
通信過程中,應用層重要戳報文操作通過SM3 函數進行摘要計算并添加時間進行簽名。攻擊者惡意篡改報文,對端進行驗簽和MAC驗證時報錯,并添加錯誤日志信息,便于審計。通過這種方式,保障了數據的完整性和不可抵賴性。
電網數據的重要性不言而喻,一旦電網數據被竊聽,終端實時遙測數據、電能信息和控制數據等都可以用來進行行為分析,并利用人工智能技術進行預測。應用層通過SM1 或SM4 進行加密,而國密算法SM1 未公開,可在很大程度上防止竊聽,具備出口數據加密效果。
為防止攻擊者發送一個目的主機曾接受過的數據包,通過應用層時間戳和網絡層的序列號來防止重放攻擊。
為排除不同算法和不同軟硬件平臺的性能差異,通過C 語言軟件編程實現OPENSSL 庫的AES、RSA、SHA 國際算法。方案一采用國家密碼算法,方案二采用RFC 標準算法,考慮到101和104協議數據業務載荷不超過256字節,分別選取128 字節、256 字節、512 字節的二進制文件,硬件處理器為國產自研的FUXI 100 MHz,操作系統為國產自研的Sylix。
加密和解密時間如表6 所示。數據載荷越大,加密和解密的時間越長。SM4 算法的加密和解密時間相當,時間均衡的原因是算法的對稱性。而AES 的解密時間略長于加密時間,時間不均衡的原因是算法的非對稱性。按照通信協議數據載荷為128 字節計算,SM4 的加密和解密時間低于AES,效率高于AES。

表6 加密解密時間比較
表7 對比了方案一和方案二的哈希計算時間。由表7 可知,SM3 哈希計算時間隨著輸入樣本數據的增加而增加,SHA256 哈希計算時間也是類似。但在執行時間上,SM3 時間比SHA256 時間略長,主要原因是SM3 設計是基于SHA256,算法的復雜度高于SHA256。按照通信協議數據載荷為128字節計算,哈希計算的時間基本相當。

表7 哈希計算時間比較
相比于101和104協議的原始報文結構,改進后的安全層協議確實存在毫秒級的額外加密耗時。為了驗證加密算法的復雜度是否對配電網終端通信系統的實時性造成影響,通過軟件添加終端和主站的出/入口時間戳,實測終端對網絡層和應用層加解密的時間消耗。
安全規約終端處理時間如圖13 所示,網口接收耗時2 s。整個時間包括網口接收數據、網絡層解密、網絡層哈希驗證、應用層解密、應用層MAC 驗證、應用層處理、應用層加密、應用層MAC計算、網絡層加密、網絡層MAC計算。

圖13 安全規約終端處理時間
安全規約傳輸時間如圖14 所示,通過主站側請求報文可知,總傳輸耗時在3 s。傳輸耗時包括應用層規約處理、網絡層無線模塊加密、主站加密網關加/解密等。

圖14 安全規約傳輸時間
傳輸時間比較見表8。相比于傳統規約,安全架構存在500 ms 延時,但同時帶來網絡層和應用層的雙重加密。因此,安全架構在效率和安全之間取得了較好的平衡。

表8 傳輸時間比較
根據上述設計的安全架構,配電網終端PRS-3342 進行安全性測試和國家信息安全研究中心認證測試,并給出響應數據。測試環境如圖15所示。

圖15 通信測試環境
4.3.1 安全性測試
通過加密主站建立密鑰和隧道,建立完畢后,主站進行應用層雙向認證,業務完全建立成功,密鑰協商如圖16所示。從圖16可知,密鑰協商的兩個階段順利完成。

圖16 密鑰協商
載荷安全數據如圖17所示。由圖17可知,業務交互通過ESP數據進行端到端的數據加密傳輸,保證了敏感信息的機密性。

圖17 載荷安全數據
4.3.2 國家信息安全研究中心測試
配電網終端通信協議安全架構的設計,涉及到協議層次的安全測試。國家信息安全研究中心的測試比較全面,協議層次相關的測試項目和結論如表9 所示。由表9 可知,配電終端能夠使用SM3算法計算度量值,具有加/解密、簽名驗簽功能,可與主站雙向認證,支持國密SM2、SM3、SM4 算法,應用層安全改進協議無程序崩潰、緩沖區溢出、拒絕服務等異常。測試詳情見測試報告,編號為NA-RW-1470/2103-21CJ11-01。

表9 部分測試項目和結論
配電網終端通信協議的安全架構采用國密算法設計,對標準的應用層規約和網絡層進行安全改進,具有認證和加密雙重屬性,很好地解決了協議安全本身的脆弱性問題。協議的安全性分析和測試驗證結果表明:
1)該通信協議的安全架構集成了網絡層和應用層雙重防護。
2)改造后的安全層協議并未因為新增的加密算法的復雜度導致通信效率降低。
3)通信協議的安全架構能夠有效抵御欺騙、篡改、竊聽、中間人等網絡攻擊,保障配電網通信系統的安全。