鮑金鵬 梁光明 劉偉
摘 要: 面對(duì)日趨嚴(yán)峻的工業(yè)控制系統(tǒng)安全威脅,通常采取主動(dòng)隔離和被動(dòng)檢測(cè)的安全解決方案,然而這些方案僅能作為解決工業(yè)控制系統(tǒng)邊界安全的一種手段,對(duì)于解決系統(tǒng)內(nèi)部網(wǎng)絡(luò)以及有效通信等問(wèn)題作用不是太大,侵入者依舊可以利用各種手段侵入到內(nèi)部網(wǎng)絡(luò)進(jìn)行鏈路數(shù)據(jù)破壞。該文從應(yīng)用層數(shù)據(jù)安全需求出發(fā),提出一種基于加密網(wǎng)關(guān)的工業(yè)控制系統(tǒng)通信數(shù)據(jù)加密防護(hù)方法,采用RC4加密算法有效保護(hù)上位機(jī)與PLC的通信數(shù)據(jù)安全。實(shí)踐表明,該方案可靠、穩(wěn)定、安全,能滿足以太網(wǎng)環(huán)境下數(shù)據(jù)加密傳輸?shù)男枰?/p>
關(guān)鍵詞: 工業(yè)控制系統(tǒng); 鏈路數(shù)據(jù); 安全防護(hù); 加密
中圖分類號(hào): TN915?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)08?0014?04
Safety protection method of data in application layer for industrial control system
BAO Jinpeng, LIANG Guangming, LIU Wei
(College of Electronic Sciences and Engineering, National University of Defense Technology, Changsha 410073, China)
Abstract: Faced with increasingly severe security threats to industrial control system, the security solutions of the active isolation and passive detection are usually taken. However, these solutions can be only used as a means to deal with the border security of industrial control systems, but cannot solve the issues in internal networks of the system and effective communication entirely, and the intruders can still take advantage of a variety of means to intrude into the internal network to conduct link data destruction. Considering the security requirement of data in the application layer, a communication data encryption protection method based on encryption gateway is proposed for the industrial control systems, in which RC4 encryption algorithm is adopted to effectively protect the communication data between upper computer and PLC.
Keywords: industrial control system; link data; safety protection; encryption
0 引 言
工業(yè)控制系統(tǒng)(Industrial Control System,ICS)它已廣泛用于國(guó)防軍工、交通運(yùn)輸、科學(xué)研究、石油煉化、核能電力、污水處理等領(lǐng)域,用于控制生產(chǎn)設(shè)備的運(yùn)行,系統(tǒng)在工業(yè)以太網(wǎng)技術(shù)大量應(yīng)用下引發(fā)的病毒和木馬攻擊事件頻發(fā),直接影響公共基礎(chǔ)設(shè)施的安全[1]。2010 年,網(wǎng)絡(luò)超級(jí)武器“Stuxnet ”病毒通過(guò)針對(duì)性的入侵工業(yè)控制系統(tǒng),使伊朗布什爾核電站核反應(yīng)堆幾近癱瘓;2011年,黑客通過(guò)侵入美國(guó)伊利諾伊州斯普林菲爾德市(Springfield)的公共供水SCADA系統(tǒng)網(wǎng)絡(luò),通過(guò)連續(xù)開關(guān)水泵閥門,導(dǎo)致水泵損壞,影響整個(gè)區(qū)域正常供水。
隨著ICS安全形勢(shì)的日趨嚴(yán)峻,國(guó)內(nèi)外安全機(jī)構(gòu)和公司對(duì)工業(yè)控制系統(tǒng)提出了一系列安全解決方案,廣泛采用包括工業(yè)防火墻、IDS(入侵檢測(cè)系統(tǒng))、IPS(入侵保護(hù)系統(tǒng))、VPN(虛擬專用網(wǎng)絡(luò))和網(wǎng)閘等防護(hù)設(shè)備。文獻(xiàn)[2]從工控平臺(tái)、網(wǎng)絡(luò)、安全策略、管理流程等方面對(duì)ICS的安全性進(jìn)行了分析,并針對(duì)ICS的不同層次提出了相應(yīng)的解決方案。文獻(xiàn)[3]提出運(yùn)用“深度防御”思想,以ICS資產(chǎn)功能及重要性為安全域劃分依據(jù),從技術(shù)與管理兩個(gè)維度設(shè)計(jì)適用于ICS的網(wǎng)絡(luò)安全防護(hù)體系。文獻(xiàn)[4]基于數(shù)據(jù)安全和管理安全兩個(gè)維度來(lái)討論了ICS安全防護(hù)技術(shù)的設(shè)計(jì)原則,從區(qū)域劃分、終端防護(hù)、通信管控、安全設(shè)備選擇方法、安全操作策略和流程,給出了典型工業(yè)控制系統(tǒng)的安全部署圖。這些方案僅能作為解決工業(yè)控制系統(tǒng)邊界安全的一種手段,對(duì)于解決系統(tǒng)內(nèi)部網(wǎng)絡(luò)以及有效通信等問(wèn)題作用不是太大,侵入者依舊可以利用邊界防護(hù)設(shè)備自身配置中的漏洞,進(jìn)入內(nèi)部網(wǎng)絡(luò),對(duì)通信數(shù)據(jù)進(jìn)行截獲分析,獲取通信數(shù)據(jù)格式和通信時(shí)序,實(shí)現(xiàn)偽上位機(jī)設(shè)計(jì),偽造時(shí)序數(shù)據(jù)對(duì)可編程邏輯控制器(PLC)進(jìn)行攻擊,達(dá)到欺騙通信、欺騙控制的攻擊目的,進(jìn)而對(duì)整個(gè)系統(tǒng)進(jìn)行控制和破壞。
本文提出了一種基于加密網(wǎng)關(guān)的工業(yè)控制系統(tǒng)通信數(shù)據(jù)加密防護(hù)方法;該方法采用RC4加密算法,實(shí)現(xiàn)了上位機(jī)與PLC的通信數(shù)據(jù)保密。
1 工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全隱患分析
1.1 工業(yè)控制系統(tǒng)結(jié)構(gòu)模型
以典型的ICS應(yīng)用為例,其基于工業(yè)以太網(wǎng)絡(luò),整個(gè)控制處理單元主要用于生產(chǎn)過(guò)程控制與調(diào)度自動(dòng)化系統(tǒng),同時(shí)可以對(duì)現(xiàn)場(chǎng)的運(yùn)行設(shè)備進(jìn)行監(jiān)視和控制,以實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集和處理、設(shè)備控制、參數(shù)調(diào)節(jié)以及各類信號(hào)監(jiān)測(cè)等各項(xiàng)功能。以西門子工控系統(tǒng)為例,其簡(jiǎn)化結(jié)構(gòu)模型如圖1所示。
該模型包括現(xiàn)場(chǎng)編程計(jì)算機(jī)(Step7)、可編程邏輯控制器(PLC)、智能電子設(shè)備(IED)和確保各組件通信的接口技術(shù)。其中,作為西門子PLC的專用編程軟件,Step7可以通過(guò)多種通信模式完成硬件配置、參數(shù)設(shè)置、通信組態(tài)、編程、診斷等功能,實(shí)現(xiàn)工程文件的上裝、下載等各種命令信息。PLC主要執(zhí)行邏輯運(yùn)算、順序控制、定時(shí)、計(jì)數(shù)等操作命令,控制各種類型的IED設(shè)備[5]。
1.2 工業(yè)控制系統(tǒng)通信數(shù)據(jù)結(jié)構(gòu)
基于上述簡(jiǎn)化模型,本文對(duì)現(xiàn)場(chǎng)編程計(jì)算機(jī)與PLC實(shí)時(shí)通信數(shù)據(jù)進(jìn)行分析,得出以太網(wǎng)通信模式下工業(yè)控制系統(tǒng)的上位機(jī)與PLC的通信協(xié)議層次模型,如圖2所示。其中,在數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層使用國(guó)際通行Ethernet+TCP/IP標(biāo)準(zhǔn),而在應(yīng)用層則使用基于工業(yè)以太網(wǎng)的現(xiàn)場(chǎng)總線協(xié)議PROFINET(PROcess FIeld NET)技術(shù)[6]。為進(jìn)一步分析實(shí)時(shí)通信數(shù)據(jù),本文利用wireshark抓包軟件抓取鏈路上通信數(shù)據(jù),對(duì)數(shù)據(jù)內(nèi)容進(jìn)行分析,獲取了各層協(xié)議實(shí)際內(nèi)容,如圖3所示。
1.3 工業(yè)控制系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)安全隱患
ICS網(wǎng)絡(luò)像其他信息網(wǎng)絡(luò)一樣通常面臨四大威脅:一是利用工業(yè)控制系統(tǒng)軟硬件存在的漏洞,截獲物理通道上傳輸?shù)乃行畔ⅲ⑦M(jìn)行數(shù)據(jù)比對(duì)分析,甄別信息內(nèi)容,獲取重要資源;二是中斷系統(tǒng)網(wǎng)絡(luò)或者使服務(wù)器拒絕服務(wù),數(shù)據(jù)無(wú)法送達(dá)接收方,無(wú)法繼續(xù)執(zhí)行相應(yīng)的命令;三是非法用戶冒充合法用戶,并使用合法用戶的口令以合法的用戶身份加入到通信雙方之間,實(shí)時(shí)監(jiān)控雙方通信內(nèi)容,實(shí)施攻擊時(shí)參與數(shù)據(jù)流的篡改替換,破壞應(yīng)用系統(tǒng)的正常運(yùn)行;四是攻擊者偽裝成另一臺(tái)合法上位機(jī)來(lái)哄騙網(wǎng)絡(luò)中的下位機(jī)誤將其作為合法機(jī)器加以接收,誘使下位機(jī)向他發(fā)送據(jù)或接收他偽造的失真甚至完全破壞系統(tǒng)數(shù)據(jù),促使系統(tǒng)癱瘓等。如圖4所示
在ICS底層網(wǎng)絡(luò)中,實(shí)時(shí)傳送的信息主要來(lái)自于PLC、現(xiàn)場(chǎng)的變送器、過(guò)程量轉(zhuǎn)換器、開關(guān)、控制閥、執(zhí)行器等之間交互的數(shù)據(jù),信息包括諸如設(shè)備型號(hào)、監(jiān)測(cè)量、系統(tǒng)組態(tài),報(bào)警標(biāo)識(shí)等。這些數(shù)據(jù)報(bào)文的數(shù)據(jù)量一般不是很大,其所攜帶信息量也就少,經(jīng)過(guò)工業(yè)以太網(wǎng)協(xié)議封裝后的報(bào)文往往也不超過(guò)幾百字節(jié)。另外,系統(tǒng)的生產(chǎn)控制過(guò)程一經(jīng)設(shè)定,往往不能隨意變動(dòng),所以涉及生產(chǎn)控制信息的總體數(shù)據(jù)量和信息量不大,對(duì)于攻擊者來(lái)說(shuō),只需要截獲一個(gè)生產(chǎn)運(yùn)行周期的數(shù)據(jù)就可以掌握這條生產(chǎn)線的全部信息[7]。
攻擊者可以利用高級(jí)隱遁技術(shù)(AET)手段,如字符串混淆、加密和隧道技術(shù)、碎片技術(shù)等騙過(guò)IPS的檢查,穿透IPS成功進(jìn)入ICS內(nèi)部[8],識(shí)別PLC型號(hào)、硬件組態(tài)信息、外設(shè)屬性等信息,如果上位機(jī)與PLC的通信內(nèi)容不加任何保護(hù)措施,那么很容易偵測(cè)出包括通信數(shù)據(jù)格式和通信時(shí)序,攻擊者可以建立偽上位機(jī)通過(guò)修改數(shù)據(jù)包頭、凈負(fù)荷等攻擊PLC,致使PLC工作癱瘓,無(wú)法正常工作。要確保ICS控制網(wǎng)絡(luò)數(shù)據(jù)安全,就必須確保上位機(jī)與下位機(jī)之間敏感數(shù)據(jù)的采集、傳輸、存儲(chǔ)、執(zhí)行過(guò)程中的信息安全問(wèn)題。基于此目的,本文通過(guò)采用數(shù)據(jù)加密技術(shù),將用戶數(shù)據(jù)經(jīng)加密算法加密成密文,然后再將密文發(fā)送到網(wǎng)絡(luò)上進(jìn)行傳輸,這樣,即使發(fā)生數(shù)據(jù)被截獲,也能夠確保數(shù)據(jù)內(nèi)容無(wú)法識(shí)別和執(zhí)行,從而可以提高上位機(jī)與PLC數(shù)據(jù)傳輸?shù)陌踩?、可用性和完整性,保證ICS的正常工作。
2 應(yīng)用層數(shù)據(jù)傳輸安全方案
2.1 工業(yè)控制系統(tǒng)應(yīng)用層數(shù)據(jù)加密模型
基于上述安全隱患和實(shí)際需求,本文提出一種應(yīng)用層數(shù)據(jù)安全防護(hù)方法,其簡(jiǎn)化模型如圖5所示。
在該模型中,編程上位機(jī)編寫STL/LAD高級(jí)程序,由Step7編譯成可執(zhí)行代碼,再將可執(zhí)行二進(jìn)制代碼通過(guò)PROFINET協(xié)議對(duì)數(shù)據(jù)封包,使用加密網(wǎng)關(guān)對(duì)此數(shù)據(jù)包進(jìn)行加密處理,通過(guò)以太網(wǎng)發(fā)送數(shù)據(jù)包,經(jīng)由中間交換機(jī)對(duì)數(shù)據(jù)進(jìn)行分發(fā),在每一個(gè)PLC前由加密網(wǎng)關(guān)完成對(duì)交換機(jī)分發(fā)數(shù)據(jù)解密處理,然后由PLC解析并執(zhí)行這些代碼,這樣就完成了上位主機(jī)對(duì)PLC的現(xiàn)場(chǎng)編程。
數(shù)據(jù)加密按加密途徑分有鏈路加密與端?端加密兩種。鏈路加密側(cè)重在鏈路上而不考慮信源與信宿,是對(duì)保密信息通過(guò)各鏈路采用不同的加密密鑰提供安全保護(hù)。端?端加密指信息由發(fā)送端自動(dòng)加密,并且由通信協(xié)議進(jìn)行數(shù)據(jù)包封裝,然后作為不可閱讀和不可識(shí)別的數(shù)據(jù)穿過(guò)局域網(wǎng),當(dāng)這些信息到達(dá)目的地,將被自動(dòng)重組、解密,而成為可讀的數(shù)據(jù)??紤]到非對(duì)稱密鑰密碼體制相對(duì)于對(duì)稱密鑰密碼體制運(yùn)行速度慢,而ICS需要在很短的時(shí)間內(nèi)處理大量的數(shù)據(jù),對(duì)數(shù)據(jù)的傳輸要求精確、安全且快速,如果采用非對(duì)稱密鑰密碼體制會(huì)引入較大的消息傳輸延遲,所以該模型把加、解密速度作為首選條件,綜合考慮加密算法的安全性,本文采用RC4算法,其算法簡(jiǎn)單、速度快,不管是軟件還是硬件,實(shí)現(xiàn)起來(lái)都十分容易。
2.2 RC4加密算法[9]
RC4算法包含2個(gè)部分:密鑰調(diào)度算法(Key Scheduling Algorithm,KSA)以及偽隨機(jī)數(shù)生成算法(Pseudo Random Generation Algorithm,PRGA)。 KSA算法用來(lái)設(shè)置數(shù)組S的初始排序,PRGA算法用來(lái)隨機(jī)選取元素作為密鑰K,與新的S序列字節(jié)間進(jìn)行隨機(jī)置換,產(chǎn)生最后的隨機(jī)序列輸出,即為加密密鑰,用來(lái)與明文進(jìn)行異或運(yùn)算實(shí)現(xiàn)加密。RC4算法加密流程見圖6。
2.2.1 KSA算法
從1~256 B(8~2 048 b)的可變長(zhǎng)度密鑰初始化一個(gè)256 B的狀態(tài)矢量S,S的元素記為S[0],S[1],S[2],…,S[255],從始至終置換后的S包含從0~255的所有8 b的數(shù)。對(duì)于加密和解密,字節(jié)K由S中256個(gè)元素按一定方式選出一個(gè)元素而生成,每生成一個(gè)K的值,S中的元素就被重新置換一次。
2.2.2 PRGA算法
在KSA將數(shù)組S進(jìn)行初始隨機(jī)化排序的基礎(chǔ)上,PRGA從數(shù)組S中隨機(jī)選取元素作為密鑰流字節(jié),同時(shí)修改數(shù)組S的排序,以便下次密鑰流的選取。選取過(guò)程取決于兩個(gè)索引i和j,這兩個(gè)索引都從0開始,選取時(shí)重復(fù)執(zhí)行算法,直到產(chǎn)生與明文的長(zhǎng)度相等的密鑰流。矢量S一旦完成初始化,輸入密鑰就不再被使用,密鑰流的生成為S[0]~S[255],對(duì)每個(gè)S[i],根據(jù)當(dāng)前S的值,將S[i]與S中的另一個(gè)字節(jié)置換,當(dāng)S[255]完成置換后,操作繼續(xù)重復(fù),從S[0]開始。其算法流程[10]如圖7所示。
3 實(shí)驗(yàn)驗(yàn)證
基于圖7數(shù)據(jù)加密傳輸模型,本文搭建了一個(gè)簡(jiǎn)單驗(yàn)證平臺(tái),平臺(tái)以編程計(jì)算機(jī)、加密網(wǎng)關(guān)、可編程控制器(PLC)、交換機(jī)等組成局域網(wǎng)絡(luò)。一個(gè)正常的數(shù)據(jù)包由用戶包頭和用戶數(shù)據(jù)構(gòu)成,如果加密網(wǎng)關(guān)對(duì)整個(gè)數(shù)據(jù)包不進(jìn)行剝離就直接加密處理,交換機(jī)收到的數(shù)據(jù)包都是經(jīng)過(guò)加密處理的,它沒有密鑰,不能解密加密包,也就不能正常讀取報(bào)頭內(nèi)容,無(wú)法完成數(shù)據(jù)的路由,網(wǎng)絡(luò)也就不能正常工作。在此模型中,本文只對(duì)包的用戶數(shù)據(jù)進(jìn)行加密,而留下明文的包頭,使得數(shù)據(jù)可以被工業(yè)以太網(wǎng)閱讀,完成數(shù)據(jù)交互功能。通過(guò)wireshark,本文對(duì)抓取的數(shù)據(jù)進(jìn)一步分析,可以獲取上位機(jī)與PLC傳送的實(shí)時(shí)有效數(shù)據(jù)包全部?jī)?nèi)容,如圖8、圖9所示。
通過(guò)比對(duì)抓取的數(shù)據(jù)包可看出,除了數(shù)據(jù)內(nèi)容Data不同外,其他報(bào)頭的信息一樣,這也驗(yàn)證了對(duì)于Ethernet+TCP/IP協(xié)議包頭本文不需要進(jìn)行加密,只需要對(duì)用戶數(shù)據(jù)進(jìn)行加密,然后對(duì)明文的包頭和密文的數(shù)據(jù)進(jìn)行封裝傳送。基于上文提出的數(shù)據(jù)加密傳輸模型,本文在對(duì)數(shù)據(jù)通信協(xié)議結(jié)構(gòu)分析的基礎(chǔ)上,編程實(shí)現(xiàn)用戶數(shù)據(jù)提取,而后利用加密算法對(duì)用戶數(shù)據(jù)進(jìn)行加密處理。從圖10可以看出,其中一個(gè)數(shù)據(jù)包,其用戶數(shù)據(jù)是22 B,經(jīng)過(guò)加密處理后變成了一個(gè)沒有實(shí)際意義的44 B的字符串,然后本文對(duì)密文進(jìn)行解密操作,又還原成相同的22 B用戶數(shù)據(jù)。在整個(gè)加密處理過(guò)程中,本文的報(bào)頭始終是明文,這樣工業(yè)以太網(wǎng)就可以進(jìn)行識(shí)別。
基于上文提出的模型,在節(jié)點(diǎn)A通過(guò)抓包軟件,截獲A發(fā)送給B的數(shù)據(jù)包和在C處截獲B發(fā)送給C的數(shù)據(jù)包,發(fā)現(xiàn)其數(shù)據(jù)包內(nèi)容是一樣的,見圖11。而在節(jié)點(diǎn)B通過(guò)抓包軟件,截獲由A發(fā)送B的數(shù)據(jù)包,見圖12。通過(guò)比對(duì)發(fā)現(xiàn),數(shù)據(jù)包內(nèi)容已經(jīng)完全失去了原來(lái)的意義。
上述實(shí)驗(yàn)中可以看出Step7編譯之后的數(shù)據(jù)經(jīng)過(guò)加密處理后,變成了不識(shí)別的亂碼,只有經(jīng)過(guò)正確的密鑰解密后,才能還原成原始數(shù)據(jù),執(zhí)行相應(yīng)的操作。所以,在該條數(shù)據(jù)鏈路上經(jīng)加密后的數(shù)據(jù)傳輸是有安全保障的,即使在B處被非法截獲也毫無(wú)實(shí)際意義,可以在實(shí)際應(yīng)用中很好的起到保護(hù)關(guān)鍵數(shù)據(jù)傳輸?shù)淖饔谩?/p>
4 結(jié) 語(yǔ)
本文主要針對(duì)當(dāng)前工業(yè)控制系統(tǒng)網(wǎng)絡(luò)中存在的傳輸數(shù)據(jù)信息被截獲、篡改、偽造等問(wèn)題,提出了一個(gè)可以增強(qiáng)上位機(jī)與PLC傳輸過(guò)程中安全可靠性的方案,即設(shè)計(jì)一個(gè)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密和解密的模型,并搭建實(shí)驗(yàn)平臺(tái)進(jìn)行驗(yàn)證,實(shí)驗(yàn)表明該數(shù)據(jù)傳輸方案可靠、穩(wěn)定、安全,能夠滿足工業(yè)以太網(wǎng)環(huán)境下數(shù)據(jù)加密傳輸?shù)男枰?/p>
參考文獻(xiàn)
[1] 魏欽志.工業(yè)控制系統(tǒng)安全現(xiàn)狀及安全策略分析[J].信息安全與技術(shù),2013,4(2):23?26.
[2] 向登宇,馬增良.工業(yè)控制系統(tǒng)安全分析及解決方案[J].信息安全與技術(shù),2013,4(11):28?30.
[3] 陳亞亮,楊海軍,姚欽鋒,等.工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全防護(hù)體系研究[J].信息網(wǎng)絡(luò)安全,2013(10):57?59.
[4] 王斯梁,尹一樺.工業(yè)控制系統(tǒng)安全防護(hù)技術(shù)研究[J].通信技術(shù),2014,47(2):205?209.
[5] 張還,王至秋,趙麗清,等.圖解西門子S7?300/400PLC控制系統(tǒng)設(shè)計(jì)快速入門[M].北京:機(jī)械工業(yè)出版社,2011.
[6] 李程.基于PROFINET協(xié)議的現(xiàn)場(chǎng)總線設(shè)備研究[D].青島:青島科技大學(xué),2010.
[7] WANG Y. SCADA: Securing SCADA infrastructure communications [J]. International journal of communication networks and distributed systems, 2011, 6(1): 59?79.
[8] 李世元,徐金偉.高級(jí)隱遁技術(shù)對(duì)網(wǎng)絡(luò)安全的威脅[C]//中國(guó)信息安全技術(shù)大會(huì)暨工業(yè)控制系統(tǒng)安全發(fā)展高峰論壇論文集.北京:中國(guó)電子信息產(chǎn)業(yè)發(fā)展研究院,2013:142?148.
[9] 楊梅,張耀文.RC4流密碼原理與硬件實(shí)現(xiàn)[J].信息通信,2009(6):40?43.
[10] 黃道林,楊軍.RC4加密算法的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].云南大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,31(z1):80?83.
[11] 余勇,林為民.工業(yè)控制SCADA系統(tǒng)的信息安全防護(hù)體系研究[J].信息網(wǎng)絡(luò)安全,2012(5):74?77.