郝少杰
(施耐德電氣(中國(guó))有限公司,湖北武漢430205)
Internet缺少安全性,我們生活中信息經(jīng)常被大數(shù)據(jù)抓取和被人任意利用,工業(yè)控制領(lǐng)域同樣存在安全隱患。工業(yè)系統(tǒng)目標(biāo)價(jià)值高,如果發(fā)生安全事件的后果相當(dāng)嚴(yán)重。隨著大數(shù)據(jù),物聯(lián)網(wǎng)的發(fā)展,工業(yè)控制系統(tǒng)設(shè)備和傳輸?shù)臄?shù)據(jù)就會(huì)暴露在互聯(lián)網(wǎng)上,針對(duì)網(wǎng)絡(luò)數(shù)據(jù)安全通過(guò)硬件設(shè)備隔離,比如部署防火墻設(shè)備或設(shè)計(jì)基于TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)的安全協(xié)議來(lái)增強(qiáng)IP網(wǎng)絡(luò)的安全性。施耐德電氣可編程邏輯控制器ePAC M580 控制器提供多重安全功能和安全保障,遵循IEC62443標(biāo)準(zhǔn)的信息安全功能設(shè)計(jì),可禁止未使用的服務(wù),設(shè)備層網(wǎng)絡(luò)的通信依照(因特網(wǎng)協(xié)議安全)IPsec協(xié)議。ePAC M580編程平臺(tái)Ecostruxure Control Expert 具有自我完整性檢查,所有的特性都為保證設(shè)備運(yùn)行的安全和穩(wěn)定,文章重點(diǎn)介紹IPSec協(xié)議和實(shí)現(xiàn)過(guò)程。
IPSec是因特網(wǎng)協(xié)議安全的英文簡(jiǎn)稱。IPSec是一個(gè)協(xié)議包,通過(guò)對(duì)IP協(xié)議加密和認(rèn)證來(lái)保護(hù)IP協(xié)議的網(wǎng)絡(luò)傳輸協(xié)議簇(一些相互關(guān)聯(lián)協(xié)議的集合)。IPSec實(shí)現(xiàn)加密模塊之間的IP 通信會(huì)話私有且安全。IPsec 認(rèn)證和加密算法需要用戶定義的密鑰,這些密鑰在IPsec會(huì)話中處理每個(gè)通信包。IPsec身份驗(yàn)證和加密算法要求用戶定義的加密密鑰來(lái)處理IPsec會(huì)話中的通訊數(shù)據(jù)包。IPSec的主要特征在于它可以對(duì)所有IP級(jí)的通信進(jìn)行加密和認(rèn)證[1]。IPSec協(xié)議主要由核心協(xié)議和支撐模塊構(gòu)成,核心協(xié)議包括驗(yàn)證頭(AH,authentication),封裝安全載荷(ESP,encapsulation security payload);支撐模塊包括加密算法,安全策略,安全關(guān)聯(lián),密鑰交換機(jī)制(IKE,internet key exchange)[2]。IPSec 可以在終端主機(jī)和設(shè)備之間實(shí)施或者路由器,報(bào)文基于Windows10操作系統(tǒng)的上位機(jī)系統(tǒng)Vijeo Citect7.5與M580控制器之間進(jìn)行通過(guò)IPSec進(jìn)行數(shù)據(jù)傳遞,通訊協(xié)議使用ModbusTCP。
報(bào)文通過(guò)模塊BMENOC0301采用預(yù)共享密鑰和AH模式對(duì)數(shù)據(jù)完整性保護(hù),也就是IPSec的封裝安全載荷和驗(yàn)證頭。機(jī)密性保護(hù)和數(shù)據(jù)完整性保護(hù)分別由封裝安全載荷和驗(yàn)證頭來(lái)完成,從而達(dá)到數(shù)據(jù)安全的目的。為完成數(shù)據(jù)的安全傳輸,必須要由密鑰管理生產(chǎn)出協(xié)商規(guī)則,根據(jù)雙方認(rèn)同和支持的加密和識(shí)別算法建立通訊[3]。
加密,鑒別,解密和密鑰存活期是構(gòu)成了密鑰管理協(xié)議的核心,密鑰管理協(xié)議核心就是安全關(guān)聯(lián)(Security Association,SA)。安全參數(shù)索引(Security Parameters Index,SPI)可以查詢符合的SA,根據(jù)SA的協(xié)商規(guī)則完成數(shù)據(jù)交互。ISAKMP,MKMP 等是常見(jiàn)的密鑰管理協(xié)議。ISAKMP初始化交換種類、通用載荷體的格式、加密解密機(jī)制和安全關(guān)聯(lián)SA 的管理內(nèi)容等,是SA 的建立和管理總框架[4]。
用戶對(duì)安全保密的要求和實(shí)施的邏輯拓?fù)浣Y(jié)構(gòu)決定IPSec 協(xié)議(ESP 和AH)實(shí)現(xiàn)的模式。實(shí)現(xiàn)的模式包括隧道模式和傳輸模式[5]。ESP和AH與隧道模式和傳輸模式之間有四種組合:隧道模式的ESP,傳輸模式的ESP、隧道模式的AH、傳輸模式的AH。兩種模式的區(qū)別是由模式所保護(hù)的數(shù)據(jù)范圍決定,隧道模式保護(hù)整個(gè)IP包,而傳輸模式保護(hù)IP 包內(nèi)的載荷。在要求端對(duì)端的安全保障時(shí),使用IPSec的傳輸模式。在傳輸模式下,ESP和AH會(huì)攔截從傳輸層到網(wǎng)絡(luò)層的數(shù)據(jù)包,并根據(jù)具體的配置提供安全保護(hù)[6]。BMENOC0301 IPSec 選擇預(yù)共享密鑰,未啟動(dòng)保密性且從截取的報(bào)文分析,本文的IPSec工作模式是隧道模式的AH。
IPSec隧道通訊建立,必須經(jīng)過(guò)兩個(gè)過(guò)程。經(jīng)歷第一個(gè)過(guò)程中的主模式(Main Mode)和第二個(gè)過(guò)程的快速模式(Quick Mode)。第一個(gè)過(guò)程中,必須完成以下內(nèi)容:
1.建立起保護(hù)隧道過(guò)程中數(shù)據(jù)的協(xié)商規(guī)則。
2.文章使用AES-CBC算法計(jì)算出雙方的加密KEY值,雙方密碼要一致。
3.通過(guò)預(yù)共享密鑰,加密臨時(shí)值,數(shù)字簽名對(duì)對(duì)等體進(jìn)行驗(yàn)證鑒別。
第一個(gè)過(guò)程,通過(guò)抓取的wireshark 報(bào)文和IPSec 協(xié)議規(guī)范可知,規(guī)范隧道建立過(guò)程是IKE協(xié)議,上述完成的內(nèi)容需要6個(gè)報(bào)文消息執(zhí)行完成,發(fā)送與接收即2條為一組。第一條消息攜帶加密機(jī)制等信息由隧道的發(fā)起者首先發(fā)出,對(duì)方有響應(yīng)后回復(fù)一樣的內(nèi)容,驗(yàn)證雙方是否匹配,直到成功建立通訊或者永遠(yuǎn)不匹配就關(guān)閉隧道。如果匹配,則發(fā)起者發(fā)出先經(jīng)過(guò)AES-CBC 加密的計(jì)算的KEY值,雙方的KEY值必須一致且各自獨(dú)立生產(chǎn)的KEY值,各自向?qū)Ψ桨l(fā)送。經(jīng)過(guò)驗(yàn)證KEY值后,第5,6條消息就是數(shù)據(jù)加密后驗(yàn)證對(duì)方[7]。
第二個(gè)過(guò)程,隧道發(fā)起者發(fā)送SA 的屬性,認(rèn)證協(xié)議頭AH進(jìn)行完整性檢驗(yàn)AH,確定隧道傳輸模式。響應(yīng)者對(duì)發(fā)起者的消息進(jìn)行確認(rèn),至此,隧道通訊建立完畢,雙方發(fā)送和接收真正經(jīng)過(guò)加密的用戶數(shù)據(jù)。認(rèn)證協(xié)議頭(AH)、互聯(lián)網(wǎng)密鑰管理協(xié)議(IKMP)和安全加載封裝(ESP)三者結(jié)合為IPSec保駕護(hù)航[8]。
基于以上的理論基礎(chǔ),通過(guò)ePAC M580的以太網(wǎng)模塊BENNOC0301 實(shí)現(xiàn)IPSec 數(shù)據(jù)加密。為每一個(gè)支持IPsec 的PC 手動(dòng)配置IPsec,適用于運(yùn)行Windows7 或Windows10的PC。ePACM580控制器的編程軟件Ecostruxure Control Expert v14配置BMENOC0301的IPsec。
第一階段,Control Expert v14 DTM配置IPsec:1.打開(kāi)Control Expert項(xiàng)目。2.打開(kāi)DTM瀏覽器(工具→DTM瀏覽器)。3.在DTM瀏覽器中,雙擊BMENOC0301/11模塊的名稱以打開(kāi)配置窗口。4.選擇導(dǎo)航樹(shù)中的安全以查看配置選項(xiàng)。5.在IPsec菜單中DH 2048,保密性不要勾選。6.在預(yù)共享密鑰字段中,輸入由16 個(gè)字符組成的預(yù)共享密鑰。有效密碼至少包含以下每個(gè)類別中的一個(gè)字符:古拉丁字母(A…Z)中的大寫字母,古拉丁字母(a…z)中的小寫字母,以10 為基的數(shù)字(0…9),特殊字符(~、!、@、$、%、^、&、*、_、+、-、=、'、|、、(、)、[、]、:、“、‘、<、>)。注意:在預(yù)共享密鑰中不得使用這些字符{};#。7.按應(yīng)用按鈕保存配置。8.重新創(chuàng)建項(xiàng)目,并下載應(yīng)用程序以將這些設(shè)置應(yīng)用于BMENOC0301/11模塊。
第二階段:Windows防火墻配置,根據(jù)Control Expertv14 DTM 中做出的選擇為Windows 防火墻配置IP安全策略[9]。1.使用管理員權(quán)限打開(kāi)DOS命令提示。注意:僅當(dāng)Windows防火墻激活時(shí),才實(shí)施這些規(guī)則。2.運(yùn)行此高級(jí)防火墻配置命令:netsh advfirewall set global mainmode mmkeylifetime 2879min,0sess。3.運(yùn)行此高級(jí)防火墻配置命令:netsh advfirewall set global mainmode mmsecmethods dh2048_variable。根據(jù)啟用DH 2048 選擇編輯命令中dh2048_variable 的值,取消選中:dhgroup2:aes128-sha256,選中:dhgroup14:aes128-sha 256。4.編輯和運(yùn)行此高級(jí)防火墻命令使PC的IP地址和子網(wǎng)與BMENOC301/311 模塊的IP 地址、子網(wǎng)和IPSec參數(shù)相符:
netsh advfirewall consec add rule name="BMENOC0301_rule_xyz"endpoint1=xxx.xxx.xxx.xxx/xx endpoint2=yyy.yyy.yyy.yyy/yy action=requireinrequireout description="DH2048&confidentiality_state mode=transport enable=yes profile=public type=static protocol=any auth1=computerpsk auth1psk=YourPsk-GoesHere qmpfs=none qmsecmethods=confidentiality_variable。xxx.xxx.xxx.xxx/xx:使用Control Expert主機(jī)(PC 或設(shè)備)的IP 地址。yyy.yyy.yyy.yyy/yy:使用BMENOC301/311 模塊的IP 地址。DH2048&confidentiality_state:修改此說(shuō)明以反映這些復(fù)選框(啟用DH 2048、啟用保密)的狀態(tài)。YourPskGoesHere:使用在DTM 中配置的預(yù)共享密鑰。confidentiality_variable根據(jù)您的啟用保密選擇編輯。取消選中:ah:sha256+1440min。選中:esp:sha256-aes128+1440min。
第三階段:確認(rèn)IPsec 連接,在您配置DTM 和Windows 防火墻之后確認(rèn)IPsec 連接。發(fā)送來(lái)自PC 的恒定Ping 命令以確認(rèn)IPSec 連接正常工作。使用上位機(jī)軟件Vijeo Citect7.5與M580的通訊模塊BMENOC0301正常建立通訊,讀寫數(shù)據(jù)。
第四階段:調(diào)試IPsec連接。本地計(jì)算機(jī)上具有高級(jí)安全功能Windows防火墻,查看連接安全規(guī)則[10]。
實(shí)驗(yàn)平臺(tái)為,電腦的IP地址:192.168.10.111,Modicon ePAC M580系統(tǒng),系統(tǒng)中以太網(wǎng)模塊BMENOC0301 IP地址:192.168.10.222。測(cè)試過(guò)程是,當(dāng)BMENOC03 01按照第三章節(jié)啟動(dòng)IPSec后,電腦側(cè)的密鑰與BMENOC 0301 從不一致到一致時(shí),電腦通過(guò)PING 命令和上位機(jī)Vijeo Citect7.5軟件掃描數(shù)據(jù),從不通到通,從無(wú)數(shù)據(jù)到有數(shù)據(jù)的過(guò)程,加密的以太網(wǎng)報(bào)文分析如下。如果密鑰不一致,或者上位機(jī)IPSec 服務(wù)配置不一致,那么報(bào)文中只有第一階段的主模式,不能進(jìn)入第二階段的快速模式。
密鑰一致情況下,經(jīng)過(guò)第一階段的6次主模式的信息交互,確認(rèn)通訊環(huán)境安全后,進(jìn)入第二階段快速模式。之后通過(guò)PING命令和上位機(jī)Vijeo Citect7.5與BMENOC 0301數(shù)據(jù)可成功完成。
圖1 Window防火墻IPsec策略設(shè)置完成
圖2 Vijeo Citect7.5與BMENOC0301通訊成功
圖3 密鑰不一致的情況
圖4 密鑰一致驗(yàn)證通過(guò)
圖5 第一條報(bào)文發(fā)起方和響應(yīng)方報(bào)文
第一條,發(fā)起方的SPI為:34919759b26fd05d,響應(yīng)方的SPI 為:0000000000000000(未知),本報(bào)文作用為協(xié)商IKE策略,交換模式為主模式,有效載荷類型:策略協(xié)商載荷長(zhǎng)度:60,解釋域?yàn)镮PSEC 協(xié)議,第二條是設(shè)備返回的報(bào)文與第一條內(nèi)容一樣,SPI值已經(jīng)確定。
圖6 第二條報(bào)文確定SPI值
第三,四條有效載荷類型為傳輸交互,內(nèi)容是IKE策略,作用為通過(guò)協(xié)商KEY Exchange 值產(chǎn)生第一階段的密碼,作用為密鑰交換,交換模式為主模式。
第五,六條驗(yàn)證數(shù)據(jù)加密有效。
第一階段6條數(shù)據(jù)相互交互后,發(fā)送方會(huì)把IPSEC策略發(fā)給對(duì)方,有對(duì)方選擇合適的策略,有效載荷類型為HASH驗(yàn)證數(shù)據(jù)完整性,交換模式為快速模式,表示當(dāng)前已經(jīng)是安全環(huán)境。
然后上位機(jī)與BMENOC0301 經(jīng)過(guò)IPSec 預(yù)共享密鑰方式實(shí)現(xiàn)ModbusTcp通訊,協(xié)議類型是AH方式,每一次的數(shù)據(jù)手法都加入AH驗(yàn)證,從而保證了數(shù)據(jù)的安全和完整性。
圖7 第三,四條報(bào)文IKE策略交互
圖8 第五,六條報(bào)文驗(yàn)證加密有效
圖9 確認(rèn)當(dāng)前環(huán)境安全經(jīng)過(guò)IPsec加密保護(hù)
通過(guò)IPsec協(xié)議實(shí)現(xiàn)了上位機(jī)與下位機(jī)的通訊,防止了未經(jīng)許可或密鑰不一致的設(shè)備訪問(wèn)可編程邏輯控制器M580,從而保證了數(shù)據(jù)安全性和設(shè)備運(yùn)行的可靠性。同時(shí)本文對(duì)ModbusTcp 數(shù)據(jù)通訊經(jīng)過(guò)IPSec 加密報(bào)文分析,有助于理解IPSec交換過(guò)程和BMENOC0301的IPSec的工作過(guò)程,驗(yàn)證IPSec 加密是有效的,為工控行業(yè)提供安全數(shù)據(jù)通訊的解決方案。
自動(dòng)化技術(shù)與應(yīng)用2022年1期