陳 寧 ,高祥濤 ,王美玲 ,傅 曉 ,朱 月 ,趙 峰 ,施 麟 ,曹曉寧 ,張 磊 ,王 培 ,吳立星
(1. 江蘇省水文水資源勘測局,江蘇 南京 210029;2. 河海大學(xué),江蘇 南京 210098;3. 江蘇省秦淮河水利工程管理處,江蘇 南京 210000;4. 江蘇省財政廳,江蘇 南京 210000)
自動化控制系統(tǒng)在各種類型的水利工程項目中普遍被用于數(shù)據(jù)監(jiān)測與信號采集、設(shè)備運行與管理、水資源調(diào)度等場景。其廣泛應(yīng)用,提高了運行管理效率,降低了人力管理成本,但同時也引入了新的技術(shù)風(fēng)險。通過對自動化控制系統(tǒng)的滲透與攻擊,可使相關(guān)基礎(chǔ)設(shè)施的功能癱瘓,從而造成重大經(jīng)濟損失、人員傷亡或社會影響。
在水利自動化控制系統(tǒng)中,現(xiàn)場總線是構(gòu)成PLC 網(wǎng)絡(luò)的基本組成部分,傳感器數(shù)據(jù)的采集與控制信號的反饋均通過下位機 PLC 實現(xiàn)。PLC 的電氣結(jié)構(gòu)簡單可靠,通常不具有計算機網(wǎng)絡(luò)通信能力,而是使用現(xiàn)場總線網(wǎng)絡(luò)進行數(shù)據(jù)傳輸。
目前,廣泛使用 Modbus 協(xié)議作為現(xiàn)場總線網(wǎng)絡(luò)的串行通信協(xié)議,它通常通過 RS-232 或 RS-485等電氣接口實現(xiàn),部署方便,開發(fā)難度較低。Modbus 協(xié)議作為一種開放協(xié)議,設(shè)計之初并未考慮其安全機制,行業(yè)內(nèi)對于 Modbus 現(xiàn)場總線通信協(xié)議缺乏訪問控制、密鑰管理、終端安全等措施造成的脆弱性,進行了具有前瞻性的研究。Liron Benbenishti[1]提出,Modbus 協(xié)議的脆弱性可總結(jié)歸納為以下5點:1)缺少機密性,數(shù)據(jù)以明文進行傳輸;2)缺少完整性,僅能依賴底層協(xié)議提供完整性校驗;3)缺少身份認(rèn)證,協(xié)議的每一層都不提供身份認(rèn)證服務(wù),甚至能夠執(zhí)行未被記錄的編程指令;4)簡單封裝成幀,運輸層的幀結(jié)構(gòu)不足以提供完備的保障;5)缺少會話機制,攻擊者可在會話中輕易插入攻擊指令。
針對 Modbus 協(xié)議的脆弱性,國外提出過多個實驗性的解決方案,具體如下:
1)Fovino[2]提出過一個 Secure Modbus 協(xié)議的設(shè)計。使用部署在現(xiàn)場總線和 PLC 接口之間的網(wǎng)關(guān)實現(xiàn)協(xié)議轉(zhuǎn)換,總線上的數(shù)據(jù)幀都經(jīng)過加密處理,并添加身份校驗信息,以防止中間人攻擊。該方案的實現(xiàn)需要的協(xié)議轉(zhuǎn)換設(shè)備部署成本較高,且加密技術(shù)非國產(chǎn)自主可控,存在安全隱患,可行性較低。
2)Bryes Security 公司[3]提出基于硬件的解決方案。通過在 PLC 和上位機之間部署計算機網(wǎng)絡(luò)及專用設(shè)備,將 Modbus 報文轉(zhuǎn)換為 TCP/IP 報文,通過數(shù)據(jù)網(wǎng)絡(luò)透明傳輸,以實現(xiàn)在非可信網(wǎng)絡(luò)上的安全傳輸。引入心跳檢測和異常處理機制,對 PLC進行周期式輪詢檢測。一旦發(fā)現(xiàn)異常事件,則由管理服務(wù)器進行統(tǒng)一處理,執(zhí)行預(yù)設(shè)的動作并產(chǎn)生告警。該方案同樣要求對原有的 PLC 網(wǎng)絡(luò)進行改造,改造成本高于建設(shè)成本。且 TCP 網(wǎng)絡(luò)傳輸介質(zhì)的物理特性,如強度、防水、耐腐蝕等,與 RS-232 或RS-485 相比不具備優(yōu)勢,推廣性不強。
3)Shahzad[4]提出一個使用對稱加密算法實現(xiàn)Modbus 協(xié)議中 PDU 操作碼及數(shù)據(jù)的語義層加密方案。為實現(xiàn)在不同拓?fù)浣Y(jié)構(gòu)和接口的網(wǎng)絡(luò)中進行傳輸,每一個鏈路層上的數(shù)據(jù)幀的首部包含協(xié)議約定的地址域,尾部包含差錯控制序列(通常是 CRC 校驗)。首部包含協(xié)議約定的地址域的數(shù)據(jù)單元由1個控制代碼和1段數(shù)據(jù)組成,控制代碼和數(shù)據(jù)共同實現(xiàn)了 Modbus RTU 的功能、操作、數(shù)據(jù)請求、數(shù)據(jù)響應(yīng)。但是,通過組態(tài)軟件不可能完成這一工作,而在硬件層面對于 PLC 設(shè)備進行大規(guī)模改造的成本也無法接受,大多數(shù) PLC 的硬件最初并不是為了實現(xiàn)安全傳輸功能而設(shè)計的。
4)Rohde & Schwarz Cybersecurity 公司[5]提出基于 DPI(Deep Packet Inspection,深度包檢測)技術(shù)的物聯(lián)網(wǎng)及自動化控制系統(tǒng)安全解決方案。通過在包交換設(shè)備上部署網(wǎng)絡(luò)探針,對于分組中所封裝數(shù)據(jù)進行檢測,生成檢測結(jié)果并進行反饋。該方案也需要先完成 PLC 網(wǎng)絡(luò)的計算機網(wǎng)絡(luò)化改造,在總線型現(xiàn)場總線網(wǎng)絡(luò)中無法進行部署。
綜合上述各解決方案,復(fù)用計算機網(wǎng)絡(luò)中相關(guān)理論及技術(shù),用以解決工業(yè)自動化控制系統(tǒng)網(wǎng)絡(luò),特別是現(xiàn)場總線中安全性問題的思路,在目前人員及技術(shù)條件下,具有相當(dāng)高的局限性。
根據(jù)上述問題,從安全可靠、自主可控的角度,考慮對原系統(tǒng)輕量化、低成本改造等因素,在現(xiàn)有的 PLC 與 Modbus 總線之間加裝基于國產(chǎn)密碼的安全網(wǎng)關(guān)。網(wǎng)關(guān)具有將明文通信數(shù)據(jù)轉(zhuǎn)換為密文的能力,同時可通過內(nèi)置的加密算法實現(xiàn)數(shù)據(jù)的保密性、完整性和身份驗證:1)所有經(jīng)過 Modbus 總線傳輸?shù)臄?shù)據(jù)字段都經(jīng)過對稱加密算法加密,而不使用明文,以防止總線上存在惡意的監(jiān)聽行為;2)數(shù)據(jù)字段中的所有內(nèi)容在加密之前使用雜湊算法生成哈希值,以確保在傳輸過程中一旦受到非法篡改,即可被輕易發(fā)現(xiàn);3)哈希值本身使用接收站設(shè)備的公鑰通過非對稱加密算法進行簽名,生成校驗序列,以防止自身受到中間人的篡改;4)校驗序列同時也承擔(dān)了身份驗證的功能,接收站可使用自身的私鑰對其進行驗簽,具有不可抵賴性;5)為防止重放攻擊,數(shù)據(jù)字段中加入不重數(shù),或使用一次性隨機密鑰進行加密,一旦發(fā)現(xiàn)相同的不重數(shù)或重復(fù)的隨機密鑰,即可認(rèn)為受到重放攻擊,立即丟棄可疑數(shù)據(jù)。
由于加密算法可通過硬件芯片實現(xiàn),因此網(wǎng)關(guān)本身僅需要使用低功耗的廉價 SOC(單片機)實現(xiàn),其成本遠(yuǎn)低于搭載以太網(wǎng)或無線以太網(wǎng)接口的 MCU。在原型設(shè)計與應(yīng)用驗證階段,可以使用FGPA(現(xiàn)場可編程門陣列)芯片實現(xiàn)。而在小試與量產(chǎn)階段,可以使用 STM,ACH 等成熟 SOC 方案進行生產(chǎn),具有較高的性價比。
該技術(shù)方案不需要對自動化控制系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、物理接口和電氣特性進行改造,無需敷設(shè)線纜,無需為 PLC 配套價格較高的 MCU,僅需要在原有的 RS-232 或 RS-485 接口之上接駁協(xié)議轉(zhuǎn)換器,即可實現(xiàn) Modbus 協(xié)議的安全性改造。對于原有控制系統(tǒng)的軟硬件沒有特殊要求,亦不需要廠家或?qū)I(yè)維護人員技術(shù)支持,成本較為經(jīng)濟,具有較高的實用價值。
由此為依據(jù),硬件加密網(wǎng)關(guān)由2個串口通信、加密、密鑰存儲、供電等模塊組成,其內(nèi)部結(jié)構(gòu)如圖1所示。
圖1 硬件加密網(wǎng)關(guān)內(nèi)部結(jié)構(gòu)圖
2個串口通信模塊均由串行通信芯片構(gòu)成,分別通過 UART 總線接口連接加密模塊,使用 RS-485接口連接外部設(shè)備。加密模塊由1個有國產(chǎn)商用加密芯片的單片機系統(tǒng)構(gòu)成,內(nèi)部預(yù)置 SM1,SM2,SM3,SM4 算法的硬件實現(xiàn),通過 UART 總線接口連接串口通信模塊,通過地址總線接口連接密鑰存儲模塊,通過二芯(VCC,GND)電源線接口連接供電模塊。密鑰存儲模塊由1塊 Flashrom 芯片組成,存儲目的地址編碼,以及與之相對應(yīng)的公鑰、私鑰。該模塊通過 NAND Flash 接口連接加密模塊。供電模塊由1個穩(wěn)壓直流電路組成,將現(xiàn)場總線上的寬壓直流電源輸入轉(zhuǎn)換為符合網(wǎng)關(guān)工況需求的電壓、電流,由 RS-485 接口從現(xiàn)場總線上取電。
硬件加密網(wǎng)關(guān)的2個串口通信模塊分別連接自動化控制設(shè)備和現(xiàn)場總線的網(wǎng)絡(luò)物理接口,硬件加密網(wǎng)關(guān)上電啟動后,對硬件加密網(wǎng)關(guān)的密鑰存儲模塊進行初始化。初始化完成后,開始執(zhí)行監(jiān)聽過程,監(jiān)聽過程包括2個部分:1)在連接現(xiàn)場總線端的串口通信模塊上,對于所有傳入硬件加密網(wǎng)關(guān)的串口通信應(yīng)用數(shù)據(jù)單元 ADU 進行監(jiān)聽;2)在連接設(shè)備端的串口通信模塊上,對于所有傳入硬件加密網(wǎng)關(guān)的串口通信應(yīng)用數(shù)據(jù)單元 ADU 進行監(jiān)聽。硬件加密網(wǎng)關(guān)的工作流程如圖2所示,本研究方案與國外方案比較如表1所示。
圖2 硬件加密網(wǎng)關(guān)的工作流程圖
表1 本研究方案與國外方案比較
原型系統(tǒng)開發(fā)成品后,為驗證硬件加密網(wǎng)關(guān)原型設(shè)備的穩(wěn)定性與兼容性是否符合設(shè)計要求,在某泵站現(xiàn)場進行了測試檢驗,對于該泵站的10臺機組,分別從溫度、電壓、電流等方面巡檢設(shè)備現(xiàn)場總線上加裝加密網(wǎng)關(guān)原型設(shè)備,以測試本研究方案在實際水利工程控制系統(tǒng)中的可靠性與時效性。加密網(wǎng)關(guān)設(shè)備設(shè)備現(xiàn)場連接示意圖如圖3所示?,F(xiàn)場10 臺傳感器以手挽手的 RS-485 接線方式傳送到主機 PLC 端,在主控端安裝1臺加密網(wǎng)關(guān)設(shè)備,每個溫度傳感器端安裝1臺加密網(wǎng)關(guān)設(shè)備。
圖3 加密網(wǎng)關(guān)設(shè)備現(xiàn)場連接示意圖
經(jīng)檢驗,在設(shè)備間傳輸距離為100m 左右,設(shè)備節(jié)點間單向傳輸 ADU 的平均時延為952ms。多次校驗分析,當(dāng)隨機生成的對稱密鑰 RK 長度為16 Byte 時,使用SM2非對稱加密算法加密后,得到的對稱密鑰密文 CK 長度將膨脹為112Byte。
通常情況下,現(xiàn)場總線上串行傳輸?shù)牟ㄌ芈蕿?600 bit/s。為抵消數(shù)據(jù)膨脹帶來的信道傳輸時延,修改設(shè)置硬件加密網(wǎng)關(guān)總線端波特率為115200bit/s(設(shè)備端為兼容現(xiàn)有自動化控制設(shè)備,仍為9600bit/s)。
改進后繼續(xù)測試,在未對該泵站的工業(yè)控制系統(tǒng)及設(shè)備的硬件、軟件進行任何修改的情況下,通過加密網(wǎng)關(guān)原型設(shè)備10臺機組實現(xiàn)了相繞組溫度、軸承溫度、電壓、電流、有功功率、無功功率、功率因數(shù)、頻率等通過現(xiàn)場總線傳輸?shù)臄?shù)據(jù)報文的加密保護。測試共分4次進行,每次測試持續(xù)超過15個日歷天。
通過查閱控制系統(tǒng)后臺日志,確認(rèn)系統(tǒng)狀態(tài)正常,硬件加密網(wǎng)關(guān)未引起任何異?;蚋婢?,測試過程中未出現(xiàn)死機現(xiàn)象,未出現(xiàn)數(shù)據(jù)錯誤等現(xiàn)象,平均時延降為200ms 以內(nèi)。完全符合設(shè)計要求。
綜上,通過在自動化控制設(shè)備與現(xiàn)場總線之間添加混合加密的硬件安全網(wǎng)關(guān),能夠在不對現(xiàn)有設(shè)備及現(xiàn)場總線網(wǎng)絡(luò)進行替換的條件下,實現(xiàn)基于國產(chǎn)加密算法的設(shè)備身份識別與認(rèn)證、報文數(shù)據(jù)保密、完整性校驗等功能。同時,在信道延遲上性能損失較少,能夠滿足大多數(shù)對于實時性要求不高的自動化控制系統(tǒng)的需求。