OpenPLC:符合IEC 61131-3标准的用于网络安全研究的开源工业控制器
OpenPLC: An IEC 61,131–3 compliant open source industrial controller for cyber security research【翻譯】
摘要
在過去的十年中,多次網(wǎng)絡(luò)攻擊成功地破壞了SCADA系統(tǒng)和plc的正常運行。為了對付這些攻擊,研究人員已經(jīng)努力尋找能夠保護(hù)網(wǎng)絡(luò)和可編程邏輯控制器的防御機(jī)制。然而,由于供應(yīng)商不提供有關(guān)其設(shè)備硬件和固件的可用信息,因此對可編程邏輯控制器進(jìn)行網(wǎng)絡(luò)安全研究變得具有挑戰(zhàn)性。本文提出了一種符合IEC 61131-3國際標(biāo)準(zhǔn)的開源PLC的開發(fā)方案。介紹了系統(tǒng)的硬件結(jié)構(gòu)、開發(fā)環(huán)境、支持的SCADA協(xié)議和一個附加的HMI編輯器包。此外,本文還提出了一種驗證PLC邏輯執(zhí)行、性能和SCADA連接的方法,并將OpenPLC在Modbus注入攻擊下的行為與其他四種流行的商用PLC進(jìn)行了比較,以支持OpenPLC是PLC網(wǎng)絡(luò)安全研究的有效平臺的說法。
一.介紹
封閉的工業(yè)環(huán)境隱藏著與專利、版權(quán)和商標(biāo)背后的技術(shù)發(fā)展相關(guān)的關(guān)鍵信息。如何保護(hù)發(fā)明人的知識產(chǎn)權(quán)不受濫用是一個值得商榷的問題,但傳統(tǒng)的知識產(chǎn)權(quán)保護(hù)模式會阻礙科學(xué)研究的信息流動。自1968年第一個可編程邏輯控制器(PLC)發(fā)明以來,供應(yīng)商一直在開發(fā)針對工業(yè)環(huán)境的專用硬件和軟件解決方案。近年來,隨著通信網(wǎng)絡(luò)和互聯(lián)網(wǎng)的發(fā)展,這些系統(tǒng)已經(jīng)變得容易受到各種各樣的網(wǎng)絡(luò)攻擊。
鑒于可編程邏輯控制器也用于關(guān)鍵的基礎(chǔ)設(shè)施,如電能系統(tǒng)、核能系統(tǒng)、水和污水處理廠、天然氣/石油能源系統(tǒng)和運輸系統(tǒng),對這些系統(tǒng)的攻擊會給國家?guī)頌?zāi)難性的后果。Alcaraz和Lopez(2012)提出的工作確定了關(guān)鍵控制系統(tǒng)的5項要求,如果實施,可能會對控制系統(tǒng)環(huán)境的服務(wù)、資源、操作控制和敏感信息造成影響。
為了對抗這些攻擊,研究人員已經(jīng)把他們的力量放在尋找防御機(jī)制,可以保護(hù)監(jiān)督控制和數(shù)據(jù)采集(SCADA)網(wǎng)絡(luò)和plc。關(guān)于SCADA系統(tǒng)的漏洞和威脅的文獻(xiàn)非常豐富。Alcaraz和Zeadally(2015, 2013)探討了SCADA系統(tǒng)的漏洞和威脅,并提出了4個方面的保護(hù)機(jī)制:治理(安全策略和標(biāo)準(zhǔn))、健壯的網(wǎng)絡(luò)設(shè)計、自修復(fù)、建模和仿真。Rautmare(2011)識別了SCADA環(huán)境中的一些威脅向量,并使用良好的網(wǎng)絡(luò)和操作安全實踐來處理它們。
然而,由于供應(yīng)商不提供有關(guān)其可編程邏輯控制器設(shè)備的硬件和固件的信息,因此對可編程邏輯控制器進(jìn)行網(wǎng)絡(luò)安全研究變得非常困難,通常必須依賴供應(yīng)商提供任何安全更新。
開源技術(shù)可以改變這種模式。術(shù)語“開放源碼”是指具有可公開訪問的設(shè)計的技術(shù),該設(shè)計可以根據(jù)需要進(jìn)行修改而不受任何限制。通過將開源工具引入到研究中,結(jié)果可以被大量的人進(jìn)行實驗和驗證。本文提出的OpenPLC平臺正是針對這一問題而設(shè)計的。因此,這項工作的主要貢獻(xiàn)是開發(fā)一個開源PLC平臺,該平臺包括一個程序開發(fā)環(huán)境,支持流行的SCADA協(xié)議,如Modbus/TCP(Modbus-IDA,2004)和DNP3(Curtis,2000),還包括一個名為ScadaBR的開源人機(jī)界面(HMI)編輯器。OpenPLC項目是根據(jù)IEC 61131-3標(biāo)準(zhǔn)(國際電工委員會,1993)創(chuàng)建的,該標(biāo)準(zhǔn)定義了plc的基本軟件架構(gòu)和編程語言。這意味著OpenPLC可以用五種標(biāo)準(zhǔn)語言中的任何一種進(jìn)行編程:梯形圖(LD)、功能框圖(FBD)、結(jié)構(gòu)化文本(ST)、指令列表(IL)和順序功能圖(SFC)。
此外,為了應(yīng)對對SCADA系統(tǒng)的網(wǎng)絡(luò)威脅,了解整個系統(tǒng)的行為非常重要。因此,許多研究人員依賴于建立能夠精確模擬監(jiān)控與數(shù)據(jù)采集系統(tǒng)的試驗臺。Holm等人的一項重要調(diào)查。(2015)分析了30個不同的監(jiān)控與數(shù)據(jù)采集試驗臺,確定了創(chuàng)建試驗臺的最主要目標(biāo)是使用它們進(jìn)行脆弱性分析,然后是對防御機(jī)制的教育和測試。為SCADA創(chuàng)建一個高保真度的測試臺通常意味著將PLC作為硬件在環(huán),一旦在沒有PLC內(nèi)部行為信息的虛擬環(huán)境中模擬PLC真的很有挑戰(zhàn)性。雖然PLC作為硬件在環(huán)為試驗臺提供了高保真度,但它降低了可移植性并增加了成本,開源PLC使研究人員無需訪問專有代碼就可以設(shè)計、測試和驗證工業(yè)控制器的安全增強(qiáng)。經(jīng)過驗證后,這些增強(qiáng)功能可以由其供應(yīng)商移植到封閉的商業(yè)系統(tǒng)中。此外,開源PLC使得SCADA虛擬化成為可能,因為PLC源代碼也可以移植到虛擬環(huán)境中運行。通過對PLC進(jìn)行虛擬化,可以創(chuàng)建虛擬SCADA試驗臺,而無需在回路中使用硬件。開源平臺也為教育和SCADA培訓(xùn)提供了低成本的替代方案。
本文將在以下幾個部分展開論述:相關(guān)工作、PLC體系結(jié)構(gòu)、OpenPLC體系結(jié)構(gòu)、PLC評估和基準(zhǔn)、網(wǎng)絡(luò)安全應(yīng)用。
2.相關(guān)工作
Linux是開源的最大貢獻(xiàn)者之一(Nagar,2017)。在科學(xué)界,它使學(xué)生、教育工作者和研究人員能夠在很大程度上利用計算機(jī)。Linux上的大多數(shù)工具都是由教育工作者和學(xué)生開發(fā)的,這并不奇怪。Linux的重要性可以從它現(xiàn)在被用來運行大部分的互聯(lián)網(wǎng),包括硬件和軟件來判斷。
開源產(chǎn)品可以變得比商業(yè)產(chǎn)品更加可靠和安全,因為測試和糾正錯誤的志愿者數(shù)量之多。從這個意義上說,谷歌啟動了一個項目,自動分析開源代碼,以發(fā)現(xiàn)并糾正錯誤。該項目被稱為OSS Fuzz(OSS Fuzz 2017)。協(xié)議變異測試,又稱模糊測試,是一種識別軟件中各種編程錯誤的著名技術(shù)。其中許多可檢測的錯誤(如緩沖區(qū)溢出漏洞)都可能具有嚴(yán)重的安全隱患。因此,OSS Fuzz的目標(biāo)是使用現(xiàn)代的fuzzing技術(shù)來發(fā)現(xiàn)和報告公共開源軟件上的漏洞,使它們更加安全和穩(wěn)定。OSS Fuzz不僅能發(fā)現(xiàn)與內(nèi)存安全相關(guān)的錯誤,還能發(fā)現(xiàn)正確性或邏輯錯誤。
根據(jù)谷歌提供的一份報告(OSS Fuzz:5個月后,獎勵項目2017),經(jīng)過5個月每天處理約10萬億個測試輸入,OSS Fuzz在47個項目上發(fā)現(xiàn)了1000多個bug,其中發(fā)現(xiàn)的1000個bug中有264個是潛在的安全漏洞。
因此,鑒于開源軟件對于科學(xué)研究和開發(fā)的重要性,開發(fā)一個工業(yè)控制器是至關(guān)重要的。有人試圖創(chuàng)建一個開源的PLC,其中最突出的一個由Souza提出,被稱為MatPLC(de Sousa,2002)。MatPLC的行為類似于POSIX兼容操作系統(tǒng)上的軟PLC,由幾個模塊組成,每個模塊在不同的線程上執(zhí)行。
雖然MatPLC奠定了一個開源PLC的基礎(chǔ),但它是不完整的。該項目網(wǎng)站上提供的最新穩(wěn)定版本可追溯到2006年5月,根據(jù)該網(wǎng)站,目前仍處于早期階段(de Souza,2017)。對于一些仍然缺少的東西,該項目缺乏與編程IDE的接口,缺乏一個硬件平臺來運行它和內(nèi)置的物理I/O以及對梯形邏輯的支持。
MatPLC提供的工具之一是matec編譯器(de Sousa and Carvalho,2003),它是兩種IEC 61131–3文本語言的編譯器。此編譯器分四個階段執(zhí)行:詞法分析器、語法分析器、語義分析器和代碼生成器。這種體系結(jié)構(gòu)允許輕松地為所需的任何輸出語言編寫新的代碼生成器,而無需重寫所有的詞匯、語法和語義解析器。OpenPLC使用MatIEC編譯器從IEC 61131-3結(jié)構(gòu)化文本代碼生成C++代碼。
(Tisserant等人。(2007)為IEC 61131-3框架開發(fā)了一個集成開發(fā)環(huán)境(IDE),稱為PLCOpen編輯器。IDE由一個圖形用戶界面組成,該界面允許用IEC 61131-3中定義的任何編程語言開發(fā)程序。另外,IDE還有一個后端編譯器,可以生成IEC 61131-3用戶程序中的結(jié)構(gòu)化文本代碼。PLCOpen編輯器的創(chuàng)建主要是為了讓學(xué)生在自己的個人計算機(jī)上使用IEC 61131-3編程環(huán)境并使用該語言進(jìn)行實踐,而無需支付現(xiàn)有供應(yīng)商昂貴的許可協(xié)議。盡管目的是滿足學(xué)生的需求,但作者希望并打算將PLCOpen編輯器項目也能在工業(yè)環(huán)境中用于實際的控制項目。OpenPLC通過在一個完整的PLC包上集成PLCOpen編輯器和MatIEC編譯器來實現(xiàn)這一點,并支持開源硬件和流行的SCADA協(xié)議。
對SCADA系統(tǒng)的研究依賴于能夠模擬真實SCADA環(huán)境的測試床的創(chuàng)建。考慮到PLC設(shè)備是基于專門的、有時是專有的硬件和軟件,Holm等人分析的30個不同的SCADA試驗臺中沒有一個包含虛擬的或仿真的PLC。因此,關(guān)于SCADA安全性研究的大部分工作僅依賴于帶有模擬plc的測試床或帶有硬件在環(huán)仿真的測試床。
有各種各樣的PLC仿真工具可用,從簡單的SCADA協(xié)議仿真器到完整的PLC系統(tǒng)仿真器。因此,為了便于對可用選項的分析,將PLC仿真工具分為三類:
(1) PLC系統(tǒng)仿真器:PLC系統(tǒng)仿真器是一種軟件,通常由PLC制造商提供,它可以模擬整個PLC系統(tǒng),包括其內(nèi)部行為、編程和網(wǎng)絡(luò)通信。PLC系統(tǒng)模擬器的例子包括S7-PLCSIM(西門子2017)和RSLogix Emulator(羅克韋爾2017)。
(2) PLC核心仿真器:PLC核心仿真器通常使用腳本語言來模擬PLC控制邏輯程序和網(wǎng)絡(luò)行為。可編程邏輯控制器核心仿真器的例子包括通用開放式研究仿真器(Core)(美國海軍研究實驗室,2017年)和AMIC(Genge等人,2012年)。
(3) PLC網(wǎng)絡(luò)仿真器:PLC網(wǎng)絡(luò)仿真器只關(guān)注模擬SCADA網(wǎng)絡(luò)協(xié)議的應(yīng)用層。因此,PLC網(wǎng)絡(luò)仿真器可以作為一個常規(guī)的PLC來響應(yīng)網(wǎng)絡(luò)查詢,但是沒有內(nèi)置的控制邏輯。可編程邏輯控制器網(wǎng)絡(luò)模擬器的例子包括來自Witte軟件的Modbus Rsim(Braam,2017)和Modbus Slave(Modbus T ools,2017)。
表1總結(jié)了上述方法的特點,并與OpenPLC進(jìn)行了對比。
西門子S7-1200(Siemens,2017)被用作硬件在環(huán)的例子,因為它是工業(yè)中最受歡迎的可編程邏輯控制器之一。RSLogix仿真是一個例子,一個PLC系統(tǒng)模擬器從艾倫布拉德利。AM-ICI是一個在關(guān)鍵基礎(chǔ)設(shè)施上進(jìn)行多域安全實驗的平臺,它被用作一個可編程邏輯控制器核心模擬器的例子。最后,以開放源碼Modbus Rsim作為PLC網(wǎng)絡(luò)仿真器的實例。
使用硬件在環(huán)的試驗臺對實際SCADA環(huán)境中使用的設(shè)備具有高保真度,但成本要高得多。用商用可編程邏輯控制器建造大型試驗臺在金錢上是不可行的。
另一方面,PLC系統(tǒng)模擬器可以提供與硬件在環(huán)方法相同的軟件環(huán)境,但沒有真正的硬件。考慮到一臺計算機(jī)可以運行一個PLC模擬器的多個實例,但不能提供任何硬件級的研究,對于大型SCADA試驗臺來說,這可能更具成本效益。
與PLC系統(tǒng)模擬器相比,PLC核心模擬器是一種更經(jīng)濟(jì)有效的將PLC集成到SCADA試驗臺的解決方案。然而,PLC核心模擬器通常過于具體,因為它們是為模擬單個PLC程序而構(gòu)建的,并且由于它們不支持傳統(tǒng)的PLC編程環(huán)境,因此很難重新編程。
PLC網(wǎng)絡(luò)仿真器通常不那么復(fù)雜,因為它們只專注于在應(yīng)用層上模擬監(jiān)控與數(shù)據(jù)采集協(xié)議,除了網(wǎng)絡(luò)通信之外沒有PLC功能。因此,它們更適合于SCADA設(shè)備網(wǎng)絡(luò)通信中更為關(guān)注的試驗臺。
OpenPLC是目前唯一允許在SCADA測試臺上對現(xiàn)場設(shè)備進(jìn)行虛擬化或仿真的PLC。與PLC核心仿真器和PLC網(wǎng)絡(luò)仿真器不同,OpenPLC提供了一個完整的IEC 61131-3兼容系統(tǒng),可以隨意重新編程,同時仍然為常用的SCADA協(xié)議提供支持。此外,OpenPLC擁有完整的可用源代碼,這一事實使研究人員能夠探索OpenPLC的內(nèi)部操作,并對硬件級別進(jìn)行更改。
三.可編程邏輯控制器體系結(jié)構(gòu)
可編程邏輯控制器(PLC)術(shù)語由IEC 61131-1定義為“設(shè)計用于工業(yè)環(huán)境的數(shù)字操作電子系統(tǒng)”。該標(biāo)準(zhǔn)還規(guī)定,可編程邏輯控制器應(yīng)具有可編程存儲器,用于面向用戶程序的內(nèi)部存儲。這些程序必須能夠?qū)崿F(xiàn)特定的功能,如邏輯、排序、定時、計數(shù)和算術(shù),以便通過數(shù)字或模擬輸入和輸出控制各種類型的機(jī)器或過程。此外,PLC必須具有編寫PLC程序的開發(fā)環(huán)境,并支持用于監(jiān)控和數(shù)據(jù)采集的工業(yè)通信協(xié)議。
3.1 PLC硬件架構(gòu)
PLC的主要部件是處理器(或CPU)模塊、電源和輸入輸出模塊。緊湊型可編程邏輯控制器通常將所有這些組件放在一個機(jī)箱中,而較大的可編程邏輯控制器則具有模塊化結(jié)構(gòu),并且是可擴(kuò)展的。由于PLC是一種基于微處理器的設(shè)備,它的內(nèi)部結(jié)構(gòu)類似于許多嵌入式計算機(jī)和控制器。可編程邏輯控制器和其他嵌入式設(shè)備的一個主要區(qū)別是,可編程邏輯控制器通常經(jīng)過加固以適應(yīng)惡劣的工業(yè)環(huán)境。此外,可編程邏輯控制器具有輸入和輸出模塊的標(biāo)準(zhǔn)化電壓和電流額定值,使用常用的SCADA協(xié)議進(jìn)行通信,并提供確定的實時響應(yīng)。
CPU模塊是PLC的核心部分,通常有一個微處理器來處理所有的程序任務(wù),一個可編程存儲器來存儲用戶程序,一個臨時存儲器來存儲程序執(zhí)行期間的數(shù)據(jù)。此外,CPU具有與外部和內(nèi)部I/O模塊通信的總線、與編程設(shè)備的接口以及與用于監(jiān)視和控制的其他通信網(wǎng)絡(luò)的接口。
由于可編程邏輯控制器是可編程的,它們可以執(zhí)行用戶定義的自定義邏輯程序。該用戶程序由可編程邏輯控制器在無限循環(huán)中執(zhí)行,循環(huán)的每次迭代稱為掃描循環(huán)。在每個掃描周期,微處理器必須執(zhí)行三個主要任務(wù):讀取物理輸入、執(zhí)行程序邏輯和寫入物理輸出。
為了讀取物理輸入,實際輸入的狀態(tài)被復(fù)制到通常稱為輸入圖像表的CPU內(nèi)存的一部分(Erickson,2016)。當(dāng)程序邏輯被執(zhí)行時,微處理器檢查輸入信息表以確定輸出的狀態(tài)。對輸出的這些更改隨后被寫入CPU內(nèi)存的另一部分,稱為輸出圖像表。最后,在掃描周期結(jié)束時,將輸出圖像表的內(nèi)容復(fù)制到物理輸出。這種執(zhí)行順序意味著,除非存在與輸入相關(guān)聯(lián)的中斷程序,否則可編程邏輯控制器在掃描周期內(nèi)無法感知其輸入的變化。
3.2 PLC程序開發(fā)環(huán)境
梯形邏輯最初是一種記錄繼電器機(jī)架設(shè)計和構(gòu)造的書面方法,但后來發(fā)展成為可編程邏輯控制器的編程語言。它是在繼電器邏輯硬件電路圖的基礎(chǔ)上,用圖形化的方式表示程序的,這意味著編寫程序就相當(dāng)于畫一個開關(guān)電路。這種方法有助于軟化從中繼機(jī)架到基于PLC的系統(tǒng)的過渡。
盡管梯形邏輯已經(jīng)成為所有可編程邏輯控制器的事實編程語言,但在實現(xiàn)這一概念時,從一家供應(yīng)商到另一家供應(yīng)商之間存在一些分歧。這導(dǎo)致不同品牌和型號的軟件不兼容。這些分歧最終導(dǎo)致了可編程邏輯控制器國際標(biāo)準(zhǔn)IEC 61131的誕生。本標(biāo)準(zhǔn)的第三部分涉及基本的軟件體系結(jié)構(gòu),定義了5種編程語言:梯形圖(LD)、功能框圖(FBD)、結(jié)構(gòu)化文本(ST)、指令表(IL)和順序功能圖(SFC)。大多數(shù)可編程邏輯控制器供應(yīng)商至少支持一種IEC 61131-3語言。
3.3 PLC通信協(xié)議
第一代可編程邏輯控制器開發(fā)不久,就需要與遠(yuǎn)程輸入/輸出系統(tǒng)通信,然后再與其他可編程邏輯控制器通信。這種通信使可編程邏輯控制器能夠控制遠(yuǎn)程設(shè)備并將數(shù)據(jù)報告回監(jiān)控與數(shù)據(jù)采集系統(tǒng)。
Modicon于1979年推出了第一個PLC到PLC的協(xié)議,稱之為Modbus。它很快成為了一個事實上的行業(yè)標(biāo)準(zhǔn),并且由于其標(biāo)準(zhǔn)是公開的,而且實施不需要許可費,所以仍然受到SCADA的歡迎。此外,Modbus可以在電話、以太網(wǎng)、無線電和衛(wèi)星等多種通信媒介上工作,這使得它非常適合大型SCADA系統(tǒng)。
另一個開放和流行的SCADA協(xié)議是分布式網(wǎng)絡(luò)協(xié)議(DNP3)。它的主要用途是電力和自來水公司等公用事業(yè)。DNP3協(xié)議具有顯著的特點,如提高了帶寬效率、時間同步和面向點的對象,使得它比Modbus更加健壯、高效和可互操作,但代價是更高的復(fù)雜性。
IEC 60870-5-104,或者僅僅IEC 104(2006年遠(yuǎn)程控制設(shè)備和系統(tǒng)),也被廣泛應(yīng)用于水、氣和電的控制通信,在歐洲公用事業(yè)和相關(guān)行業(yè)中尤為常見。經(jīng)設(shè)計證明,IEC 104的安全性存在問題(Maynard等人,2014),Modbus、DNP3和許多其他SCADA協(xié)議的安全性也在同一時間開發(fā)。這些協(xié)議的關(guān)鍵漏洞是缺乏身份驗證、完整性和保密機(jī)制。盡管有解決這些問題的解決方案,但由于運營問題、遺留問題和成本的原因,它們在現(xiàn)實世界中很少使用。
盡管Modbus、DNP3和IEC 104是一些最常見的SCADA協(xié)議,但一些供應(yīng)商已經(jīng)創(chuàng)建了自己的自定義協(xié)議,通常是專有協(xié)議。其他流行的工業(yè)協(xié)議包括PROFIBUS(DP、PA和PROFInet)(PROFIBUS 2015)、WorldFIP(CENELEC 1996)、ControlNet(ControlNet International 1998)、EtherNet/IP(ControlNet International 2001)和A-B DF1(Allen Bradley 1996)。
3.4 PLC人機(jī)界面(HMI)
在過去,控制系統(tǒng)的典型用戶界面由一個帶有按鈕、開關(guān)、燈和儀表的物理面板組成,所有這些都硬連線到面板中的主控制器。隨著低成本個人電腦的出現(xiàn),更大的硬接線面板被電腦程序上的圖形屏幕所取代。
PLC軟件包的一個重要特性是用于開發(fā)人機(jī)界面屏幕的軟件。該軟件是SCADA系統(tǒng)的核心,采集過程中的數(shù)據(jù)顯示在屏幕上,并向現(xiàn)場連接的設(shè)備發(fā)送控制命令。在較大的SCADA系統(tǒng)中,監(jiān)控軟件可以與運行在操作員工作站和客戶機(jī)上的HMI軟件分開。在這種情況下,數(shù)據(jù)采集系統(tǒng)可以運行在多個冗余服務(wù)器上,填充一個大型數(shù)據(jù)庫。
HMI軟件必須使用可編程邏輯控制器支持的網(wǎng)絡(luò)協(xié)議之一才能與其通信。由于這個原因,PLC供應(yīng)商通常提供他們自己的人機(jī)界面軟件,與PLC使用的協(xié)議兼容。PLC供應(yīng)商提供的一些HMI軟件示例有:SIMATIC WinCC(Siemens,2017)、Rockwell RSView(Rockwell Automation,2011)、Schneider IGSS(Schneider Electric,2012)、Omron CX Designer(Omron,2018)和Melsoft GT SoftGOT(Mitsubishi Electric,2018)。盡管所述軟件已優(yōu)化為使用供應(yīng)商可編程邏輯控制器協(xié)議運行,但所有所述示例也與其他供應(yīng)商的協(xié)議兼容,并且所有這些示例都支持Modbus協(xié)議的至少一種變體。
4 OPENPLC體系結(jié)構(gòu)
open PLC是一個開源的PLC平臺,目前可以運行在各種流行的設(shè)備上,如Raspberry Pi、Arduino和ESP8266。盡管這些設(shè)備可以運行OpenPLC,但它們不能提供真正的PLC所需的相同級別的電氣保護(hù)。Raspberry Pi平臺的一些變體,如UniPi和PiXtend,經(jīng)過加固,可以與工業(yè)級I/O兼容,也可以運行OpenPLC,但它們的硬件架構(gòu)并不理想,影響了OpenPLC的實時性能。UniPi使用諸如MCP23008和MCP3422的端口擴(kuò)展器來操作離散和模擬信號。這些集成電路使用I2C總線進(jìn)行通信,比直接存儲器存取慢約50倍。PiXtend使用AT-mega32A微控制器處理輸入和輸出信號,串行外圍接口(SPI)總線連接mi-crocontroller和Raspberry Pi。微控制器運行一個自定義固件,當(dāng)配置為最快模式時,該固件提供高達(dá)10赫茲的I/O更新。對于需要小于100 ms掃描時間的PLC應(yīng)用程序來說,這太慢了。
因此,為了公平比較OpenPLC平臺與其他商用plc的性能,提出了一種新的OpenPLC項目硬件板。OpenPLC Neo被設(shè)計成具有最佳性能的OpenPLC代碼,同時仍然是低成本的。
考慮到項目的硬件和軟件的復(fù)雜性,在這項工作中描述整個OpenPLC體系結(jié)構(gòu)是不可行的。因此,下一節(jié)將對OpenPLC的硬件和軟件體系結(jié)構(gòu)進(jìn)行廣泛的概述。關(guān)于這個項目的更多信息,特別是它如何安裝在開源平臺上,比如Ar-duino和Raspberry Pi,可以在項目的網(wǎng)站上找到(Alves,2017)。最新版本的源代碼可以在OpenPLC GitHub中找到(Alves,2017)。有關(guān)OpenPLC Neo硬件的信息,包括原理圖和案例設(shè)計,位于OpenPLC Neo GitHub(Alves,2017)。
4.1 OpenPLC新硬件
OpenPLC Neo在機(jī)箱上提供11個隔離的直流離散輸入、3個0-10v范圍的模擬輸入、8個隔離的離散輸出(其中4個是基于晶體管的,另外4個是基于繼電器的),以及3個基于PWM的模擬輸出。此外,OpenPLC Neo還具有一個RS-485擴(kuò)展總線連接器,允許CPU與外部I/O模塊通信。
該CPU基于Allwinner H3,一款四核Cortex-A7 ARM處理器,最高運行頻率可達(dá)1.2GHz。處理器模塊有256 MB的DDR3 RAM和10/100位以太網(wǎng)端口,用于網(wǎng)絡(luò)連接。可編程邏輯控制器通常被視為具有非常有限計算能力的傳統(tǒng)設(shè)備。與大多數(shù)可編程邏輯控制器中的處理器相比,OpenPLC Neo架構(gòu)提供了更好的性能。一個更強(qiáng)大的多核體系結(jié)構(gòu)支持額外的安全增強(qiáng),如機(jī)器學(xué)習(xí)算法和入侵檢測系統(tǒng),內(nèi)置在設(shè)備中,與PLC應(yīng)用程序一起運行。
CPU模塊還有一個協(xié)處理器,負(fù)責(zé)I/O操作。協(xié)處理器是一個運行在16兆赫的AVR ATMega644P。兩個處理器通過500 Kbps的UART鏈路相互通信。由于協(xié)處理器有兩個UART端口,它使用第二個端口作為與RS-485擴(kuò)展總線的接口。因此,來自主處理器的消息通過協(xié)處理器到達(dá)連接到擴(kuò)展總線的外部I/O模塊。
OpenPLC Neo運行Armbian Linux,這是一個針對嵌入式設(shè)備的改良的Debian發(fā)行版。OpenPLC軟件運行在這個操作系統(tǒng)之上。圖1顯示了OpenPLC的內(nèi)部結(jié)構(gòu)及其當(dāng)前模塊:web服務(wù)器、MatIEC編譯器、網(wǎng)絡(luò)層、I/O圖像表、硬件層和實時庫。
OpenPLC web服務(wù)器是一個允許上傳和編譯PLC程序的實用程序。它一直在8080端口上運行,可以在大多數(shù)現(xiàn)代web瀏覽器中打開。可編程邏輯控制器程序作為單個文件上傳,其中包含由OpenPLC提供的IEC 61131-3圖形編輯器生成的代碼。一旦文件被接收,它就被發(fā)送到MatIEC編譯器。
MatIEC編譯器將上傳的PLC程序編譯成等效的C程序。但是,這個C程序是不完整的,因為它只包含用戶創(chuàng)建的邏輯。如圖1所示,附加功能必須添加到系統(tǒng)中才能使用。OpenPLC提供額外的C文件,添加對網(wǎng)絡(luò)連接、內(nèi)部映像表、硬件接口(用于處理物理I/O)的支持,以及一個為OpenPLC添加實時行為的實時庫。當(dāng)與用戶創(chuàng)建的邏輯相結(jié)合時,這些額外的C文件為PLC應(yīng)用程序提供了整個環(huán)境。
網(wǎng)絡(luò)層負(fù)責(zé)通過SCADA協(xié)議進(jìn)行網(wǎng)絡(luò)通信。目前,OpenPLC支持Modbus/TCP和DNP3。將來可以通過在網(wǎng)絡(luò)層插入相應(yīng)的源代碼來添加更多的協(xié)議。為了響應(yīng)來自SCADA協(xié)議的網(wǎng)絡(luò)請求,該層必須能夠訪問輸入和輸出圖像表。
輸入和輸出圖像表是OpenPLC應(yīng)用程序中定義的存儲區(qū)域,用于存儲所有輸入和輸出的當(dāng)前狀態(tài)。當(dāng)執(zhí)行用戶程序時,它檢查輸入圖像表,以便邏輯可以確定所有物理輸出的下一個狀態(tài)。一旦邏輯執(zhí)行完成,所有輸出的狀態(tài)都將寫入輸出映像表。
硬件層模塊必須讀取物理輸入,將其狀態(tài)寫入到輸入圖像表中,并根據(jù)輸出圖像表設(shè)置物理輸出。要執(zhí)行這些操作,硬件層必須包含負(fù)責(zé)處理硬件I/O的設(shè)備驅(qū)動程序。這種模塊化架構(gòu)使OpenPLC很容易與其他設(shè)備兼容。事實上,它已經(jīng)有了硬件層驅(qū)動程序來處理許多不同的平臺,如Raspberry Pi、UniPi、Arduino、ESP8266等。因此,為OpenPLC Neo編寫了一個新的硬件層驅(qū)動程序,使OpenPLC能夠處理板I/O。
為OpenPLC Neo板編寫的設(shè)備驅(qū)動程序通過擴(kuò)展總線與協(xié)處理器和外部設(shè)備進(jìn)行通信。通過讀取從協(xié)處理器接收到的所有輸入點并將其寫入輸入圖像表來處理輸入。輸出從輸出圖像表讀取并封裝到發(fā)送到協(xié)處理器的內(nèi)部總線消息中。
實時庫為OpenPLC進(jìn)程提供了更好的實時響應(yīng)。Linux以不具有良好的實時性而聞名,它極大地影響了依賴確定性響應(yīng)的應(yīng)用程序。Linux的實時性受到調(diào)度策略的影響。當(dāng)一個正在運行的進(jìn)程被調(diào)度出去時,很難準(zhǔn)確地知道它什么時候會被調(diào)度回來。這種缺乏確定性的情況會影響需要實時響應(yīng)的進(jìn)程。OpenPLC的實時庫通過在分離的內(nèi)核上隔離OpenPLC進(jìn)程、將OpenPLC主線程的調(diào)度策略更改為SCHED_FIFO并將其優(yōu)先級設(shè)置為最大值來改進(jìn)多核架構(gòu)上的Linux響應(yīng)。根據(jù)具有最大優(yōu)先級的SCHED_FIFO策略調(diào)度的進(jìn)程將始終立即搶占核心中當(dāng)前運行的任何進(jìn)程。此外,此策略下的進(jìn)程沒有時間切片,這意味著調(diào)度線程無限期運行,直到它產(chǎn)生處理器或被I/O請求阻止為止。由于沒有其他進(jìn)程在給定的核心上與OpenPLC競爭,因此它永遠(yuǎn)不會被調(diào)度出來。由于OpenPLC進(jìn)程是不斷運行的,它可以提供一個改進(jìn)的確定性響應(yīng),特別是在系統(tǒng)處于重負(fù)載時。
4.2 OpenPLC程序開發(fā)環(huán)境
PLCOpen編輯器是用于為OpenPLC創(chuàng)建程序的開發(fā)環(huán)境。PLCOpen編輯器由一個圖形界面組成,該界面允許創(chuàng)建帶有多個IEC 61131-3程序組織單元(POU)的PLC項目。每個POU可以用五種IEC 61131–3語言中的任何一種編程。POU與PLC配置和資源一起列在左窗格的樹狀圖中。通過雙擊POU,相應(yīng)的語言編輯器將打開,其中包含程序的內(nèi)容。
圖形編輯器與PLCOpen規(guī)范緊密相連(PLCOpen技術(shù)委員會2005年6月)。此規(guī)范定義了描述五種IEC 61131-3語言的XML語法。根據(jù)此語法,在此環(huán)境中編寫的所有程序都保存到XML文件中。因此,可以與其他符合PLCOpen XML標(biāo)準(zhǔn)的IEC 61131-3編輯器交換項目。
PLCOpen編輯器有一個模塊負(fù)責(zé)將圖形語言(LD、FBD和SFC)編譯成結(jié)構(gòu)化文本(ST)。因此,在將程序上載到OpenPLC之前,當(dāng)前PLC程序的所有pou都被編譯成一個ST程序,不管它們最初是用哪種語言編寫的。
4.3 OpenPLC通信協(xié)議
OpenPLC在TCP/IP之上支持Modbus和DNP3-SCADA協(xié)議。來自任一協(xié)議的讀寫請求都可以直接訪問所有物理I/O點。默認(rèn)情況下,Modbus在502端口可用,DNP3在20000端口可用。但是,OpenPLC有可選的命令行參數(shù),這些參數(shù)只允許在特定端口上運行Modbus,或者只允許在特定端口上運行DNP3,或者在非標(biāo)準(zhǔn)端口上同時運行兩者。
Modbus實現(xiàn)是基于Modbus應(yīng)用協(xié)議規(guī)范從頭開始構(gòu)建的。DNP3應(yīng)用的實現(xiàn)基于opendnp3庫(opendnp3 2017)。Opendnp3是用C++11編寫的DNP3協(xié)議棧的可移植、可伸縮和經(jīng)過嚴(yán)格測試的實現(xiàn)。該庫是為具有許多并發(fā)TCP會話的高性能應(yīng)用程序設(shè)計的,盡管它也可以很容易地嵌入到較小的平臺上。
4.4 OpenPLC人機(jī)界面(HMI)
由于OpenPLC支持Modbus/TCP和DNP3協(xié)議,因此它與當(dāng)前可用的大多數(shù)SCADA軟件兼容。然而,OpenPLC還包括一個開源的SCADA軟件ScadaBR。ScadaBR是一個基于Java的應(yīng)用程序,運行在Windows、Linux或其他可以運行應(yīng)用服務(wù)器(如Apache T omcat)的操作系統(tǒng)上。ScadaBR最初由MCA Sistemas(ScadaBR 2017)開發(fā),并使用開放源代碼許可證分發(fā)。一旦ScadaBR被部署,它將作為后臺服務(wù)運行。
可以通過web瀏覽器訪問用戶接口,指向正確的地址和端口(默認(rèn)端口為8085)。主界面易于使用,并提供變量可視化、圖表、統(tǒng)計、協(xié)議配置、警報、人機(jī)界面屏幕創(chuàng)建和變量監(jiān)控。
目前,ScadaBR支持多種SCADA通信協(xié)議,包括Modbus和DNP3。
ScadaBR提供數(shù)據(jù)源和數(shù)據(jù)點,以組織來自遠(yuǎn)程設(shè)備的數(shù)據(jù)。數(shù)據(jù)源表示通過特定協(xié)議進(jìn)行通信的單個遠(yuǎn)程設(shè)備。一個數(shù)據(jù)源可以有多個數(shù)據(jù)點。每個數(shù)據(jù)點與來自遠(yuǎn)程設(shè)備的單個項相關(guān)聯(lián),例如模擬輸入、離散輸出或存儲器位置。HMI屏幕是通過在屏幕上拖放元素并將它們與數(shù)據(jù)點關(guān)聯(lián)來構(gòu)建的。圖2示出了使用ScadaBR構(gòu)建的典型HMI。此屏幕的數(shù)據(jù)點通過Modbus從OpenPLC檢索。
5. 可編程邏輯控制器評估和基準(zhǔn)
在一個開源的PLC平臺上進(jìn)行研究,只有當(dāng)這個平臺可以被驗證為可以像其他PLC一樣工作時,才是有價值的。因此,為了支持OpenPLC是PLC網(wǎng)絡(luò)安全研究的有效平臺的說法,本節(jié)通過分析PLC系統(tǒng)的三個基本概念:掃描時間、梯形邏輯執(zhí)行和SCADA連接,提出了驗證PLC的方法。此外,還執(zhí)行了Modbus注入攻擊,以評估網(wǎng)絡(luò)攻擊期間每個PLC的響應(yīng)。
創(chuàng)建了四個測試來評估上述每個概念:掃描時間測試、PLC梯形圖邏輯執(zhí)行測試、SCADA連接測試和Modbus注入攻擊測試。
這些測試在OpenPlcNeo和其他四個流行的(Boyes和O’Brien,2009)(ARC咨詢集團(tuán)2001)商用PLC上進(jìn)行:施耐德M221、西門子S7-1214C、歐姆龍CP1L-L20DR-D和艾倫布拉德利(A-B)MicroLogix 1400。
表2和表3列出了被測設(shè)備的特性。
5.1 掃描時間測試
PLC是實時系統(tǒng)的一個例子,因為輸出結(jié)果必須在有限的時間內(nèi)響應(yīng)輸入條件而產(chǎn)生,否則,將發(fā)生意外操作。PLC的實時行為通常與其掃描時間有關(guān),掃描時間是PLC讀取所有輸入、執(zhí)行邏輯程序和寫回所有輸出所需的時間。
考慮到邏輯程序的執(zhí)行通常可以簡化為條件語句的求值和一些算術(shù)運算,因此大部分掃描時間用于讀取輸入和寫入輸出。因此,如圖3所示,所提出的掃描時間測試由具有一個輸入和一個輸出的單階梯邏輯線組成。
這個程序根據(jù)輸入的否定狀態(tài)切換輸出。因此,如果輸入為false,則輸出為true。否則,如果輸入為true,則輸出為false。通過運行該程序并將PLC上的輸出和輸入物理連接在一起,可以創(chuàng)建振蕩器。這個振蕩器輸出一個方波,頻率是PLC在軟件中可以產(chǎn)生的最高頻率。由于每次掃描時輸出都會切換,所以掃描時間(以秒為單位)由公式(1)定義,其中f是以赫茲為單位生成的方波的頻率。
圖3中的梯形邏輯程序被上傳到使用供應(yīng)商編程軟件測試的每個可編程邏輯控制器中,將掃描時間設(shè)置為最小的可用選項。此外,根據(jù)測試定義,程序中的輸入和輸出引用連接在一起。用單片機(jī)測量輸出切換時間,每臺PLC采集4000個采樣。采樣數(shù)受微控制器上可用內(nèi)存量的限制。結(jié)果如下表4所示
掃描時間表示系統(tǒng)的響應(yīng)時間。在PLC上,硬件性能、I/o數(shù)量、操作系統(tǒng)和庫的復(fù)雜性以及梯形圖邏輯解釋器/編譯器的實現(xiàn)將定義掃描時間。掃描時間的標(biāo)準(zhǔn)差表示系統(tǒng)保持實時響應(yīng)的能力,換句話說,它定義了從可能的最小掃描時間可以預(yù)期的平均延遲。在分析的可編程邏輯控制器中,OpenPLC Neo獲得了與其他可編程邏輯控制器相似的標(biāo)準(zhǔn)偏差,同時也具有最小的掃描時間。OpenPLC Neo的性能更好,因為它使用的是具有更高時鐘頻率的現(xiàn)代處理器。選擇這個處理器是為了支持與未來網(wǎng)絡(luò)安全增強(qiáng)相關(guān)的研究。
5.2 PLC梯形圖邏輯執(zhí)行測試
本試驗的目的是根據(jù)IEC 61131-3標(biāo)準(zhǔn)驗證梯形圖的正確執(zhí)行。IEC 61131-3定義了所有PLC編程語言通用的以下標(biāo)準(zhǔn)功能塊:雙穩(wěn)態(tài)元件、邊緣檢測、定時器、計數(shù)器和比較器。該測試集中于評估使用IEC 61131-3中定義的所有標(biāo)準(zhǔn)功能塊以及算術(shù)運算的測試程序的執(zhí)行情況。測試程序通過供應(yīng)商的編程軟件上傳到每個可編程邏輯控制器。提供一個隨機(jī)輸入向量,并對所有輸出向量進(jìn)行比較。
測試程序有4個離散輸入和4個離散輸出。每個輸出負(fù)責(zé)評估一組特定的塊。因此,測試程序分為四個部分,每個部分負(fù)責(zé)四個輸出中的一個。
5.2.2 output O2-計時器的計算
第二個輸出(O2)計算計時器。使用了TON和TOF類型,它們的過期時間不同。根據(jù)IEC 61,131 3的定義,在經(jīng)過時間延遲PT后,在輸出Q處,TON定時器提供輸入的上升沿。如果輸入脈沖短于PT,則不啟動計時器,輸出Q為false。TOF定時器執(zhí)行與TON相反的功能,即它立即在輸出Q處提供輸入IN的上升沿,但延遲輸入IN的下降沿到輸出Q。
對于圖5所示的梯形圖測試程序段,如果其中一個平行TON計時器接收到大于PT值的輸入脈沖,則輸出O2被設(shè)置為true。定時器TON0到TON3由輸入I1、I2、I3和I4激活。O2應(yīng)保持激活狀態(tài),直到串聯(lián)的TOF計時器過期。
5.2.3 output O3-計數(shù)器的計算
第三個輸出(O3)驗證計數(shù)器塊。此測試同時使用向上(CTU)和向下(CTD)計數(shù)器。CTU計數(shù)器在輸入CU的每個上升沿上遞增內(nèi)部計數(shù)變量CV。如果CV中的值與用戶定義的PV變量匹配,則輸出Q設(shè)置為true。當(dāng)輸入R出現(xiàn)上升沿時,內(nèi)部計數(shù)變量CV被重置為零。類似地,CTD計數(shù)器在輸入CD的第一個上升沿上從PV加載內(nèi)部CV變量值,并在輸入CD的每個后續(xù)上升沿上遞減CV。一旦CV為零,輸出圖6-計數(shù)器測試。圖7-算術(shù)和比較器測試。Q設(shè)置為true。在輸入LD的上升沿上,原始PV值恢復(fù)為CV。
如圖6所示,在從CTD0接收到復(fù)位脈沖之前,如果CTU0評估為真至少兩次,則輸出O3被設(shè)置為真。輸入I1和I2連接到CTU0計數(shù)器的CU和R輸入,而輸入I3和I4連接到CTD0計數(shù)器的CD和LD輸入。
5.2.4 output O4-算數(shù)的計算
最后,第四個輸出(O4)計算算術(shù)和比較塊。在這個測試中,CTU計數(shù)器被添加到四個輸入中的每一個。每個CTU的CV變量連接到算術(shù)塊,以便執(zhí)行以下等式:
算術(shù)表達(dá)式的結(jié)果將轉(zhuǎn)到兩個并列塊。如果結(jié)果大于3或小于-3,則輸出設(shè)置為真。該試驗段的梯形圖如圖7所示。
5.2.5 結(jié)果
這個測試程序的所有四個輸入都是由一個隨機(jī)生成的100字節(jié)長的輸入向量刺激的。每個PLC上連接一個微控制器,提供輸入矢量刺激,并讀取運行測試程序的PLC產(chǎn)生的四個輸出。該測試評估給定相同的程序和相同的輸入向量,所有plc是否生成相同的輸出向量。各PLC的輸出矢量如表5所示。
表5中的值都是十六進(jìn)制。每個十六進(jìn)制數(shù)字代表一個字節(jié)(4位),與四個輸入(用于輸入向量)或輸出(用于輸出向量)直接相關(guān)。例如,輸入向量上的十六進(jìn)制數(shù)字A表示以下輸入位
從最重要的開始,輸入向量的每個半字節(jié)被發(fā)送到以100 ms間隔測試的所有可編程邏輯控制器的四個輸入端。在100 ms間隔之間,從可編程邏輯控制器的輸出端讀取輸出向量的每個半字節(jié)。
從表5所示的數(shù)據(jù)來看,OpenPLC和Siemens具有相同的輸出矢量。Schneider和A-B也有相同的輸出向量,但它們不同于OpenPLC和Siemens生成的第一組。歐姆龍有一個不同于其他所有的輸出矢量。試驗得出的結(jié)論是:
(1) 所有測試的可編程邏輯控制器的輸出O1和O2(雙穩(wěn)態(tài)元件、邊緣檢測和定時器)的結(jié)果相同。除歐姆龍外,所有可編程邏輯控制器的輸出O3(計數(shù)器測試)結(jié)果相同。OpenPLC和Siemens對輸出O4(算術(shù)和比較器測試)的結(jié)果相同。施耐德、A-B和歐姆龍對O4的輸出也有相同的結(jié)果,但與OpenPLC和西門子的結(jié)果不同。
(2) 盡管A–B和Schneider對于輸出O1有正確的結(jié)果,但它們在指令集中沒有雙穩(wěn)態(tài)元素。因此,A-B和Schnei-der的雙穩(wěn)態(tài)元件必須使用單獨的set和reset指令來實現(xiàn)。
(3) CTD計數(shù)器的A-B實施不符合IEC 61131-3標(biāo)準(zhǔn)。在第一次加載時,在輸入的上升沿上,它應(yīng)將預(yù)設(shè)值加載到accumu-lator。此外,在復(fù)位輸入的情況下,它應(yīng)該再次將預(yù)設(shè)變量的原始值加載到累加器中。對于這個特定的數(shù)據(jù)集,輸出沒有任何變化,但是,A–B可編程邏輯控制器的累加器在測試結(jié)束時的值與其他可編程邏輯控制器不同。
(4) 歐姆龍的編程軟件(CX程序員)不是基于IEC 61131-3標(biāo)準(zhǔn)。歐姆龍的編程軟件有一個不同的版本,叫做CX Programmer IEC,它符合標(biāo)準(zhǔn)。但是,CX程序員IEC只能與SYSMAC CS系列和CJ系列CPU單元一起使用。此外,Omron沒有TOF定時器塊,因此必須在測試程序中使用TON和一些梯形邏輯來實現(xiàn)它們。最后,歐姆龍的計數(shù)器與IEC 61131-3標(biāo)準(zhǔn)中定義的計數(shù)器非常不同。不可能使它們以與其他可編程邏輯控制器類似的方式工作。因此,歐姆龍公司在計數(shù)器測試中有不同的結(jié)果。
(5) 施耐德(Schneider)、A-B和歐姆龍(Omron)對零劃分的解釋不同于OpenPLC和西門子(Siemens)。對于Schneider、A–B和Omron,忽略零的除法,因此目的地保留上一個值。對于Siemens和OpenPLC,零除將零移到目標(biāo)寄存器。這解釋了為什么他們在算術(shù)和比較器測試中有不同的結(jié)果。
5.3 SCADA連接測試
可編程邏輯控制器和其他自動控制器設(shè)備是在工業(yè)通用互操作性標(biāo)準(zhǔn)(如IEC 61131)出現(xiàn)之前開發(fā)的。結(jié)果是,供應(yīng)商創(chuàng)建了大量不可互操作的控制協(xié)議,作為一種激勵,他們有自己的協(xié)議來鎖定他們的客戶群。
隨著SCADA開放協(xié)議的到來,業(yè)界開始從專有的封閉網(wǎng)絡(luò)轉(zhuǎn)向開放源代碼解決方案和支持TCP/IP的網(wǎng)絡(luò),允許不同的設(shè)備進(jìn)行互操作。盡管DNP3和以太網(wǎng)/IP等協(xié)議正逐漸流行起來,但實際上所有主要的PLC制造商都提供了對Modbus的支持。從表2中的數(shù)據(jù)可以看出這一點。盡管DNP3和以太網(wǎng)/IP在一些可編程邏輯控制器設(shè)備中很常見,但Modbus是所有這些設(shè)備的通用協(xié)議。因此,擬議的監(jiān)控與數(shù)據(jù)采集連接測試主要集中在Modbus協(xié)議中,因為它是監(jiān)控與數(shù)據(jù)采集供應(yīng)商之間的一個共同點。
Modbus是一種請求/應(yīng)答協(xié)議,提供由功能代碼指定的服務(wù)。Modbus應(yīng)用協(xié)議規(guī)范定義了三類Modbus功能代碼:公共、用戶定義和保留。用戶定義的和保留的功能代碼不適用于此測試,因為它們是特定于設(shè)備的,并且可以從一個實現(xiàn)更改為另一個實現(xiàn)。另一方面,公共功能代碼定義明確,公開記錄,并且對于符合Modbus規(guī)范的每個設(shè)備始終相同
Modbus規(guī)范定義了19種不同的公共功能代碼。SCADA連接測試評估每個被測PLC上所有Modbus公共功能代碼的實現(xiàn),以及每個功能代碼可用的地址范圍。測試程序用所有可能的Modbus公共功能代碼發(fā)送消息,并檢查響應(yīng),以評估被測設(shè)備是否支持特定的功能代碼。此外,它還請求離散輸入、線圈、輸入寄存器和保持寄存器的數(shù)據(jù),以評估設(shè)備上每種數(shù)據(jù)類型支持的地址范圍。表6和表7分別顯示了每個設(shè)備支持的功能代碼列表以及每個數(shù)據(jù)類型支持的地址范圍。
在執(zhí)行SCADA連接測試之前,有必要向Omron PLC添加CP1W-MODTCP61擴(kuò)展卡,因為該PLC沒有內(nèi)置以太網(wǎng)端口。該模塊負(fù)責(zé)將以太網(wǎng)和Modbus TCP功能添加到Omron CP1L系列中。
SCADA連接測試的結(jié)果導(dǎo)致了一些觀察結(jié)果:
1.盡管Modbus規(guī)范定義了許多公共功能代碼,但該測試表明,可編程邏輯控制器僅關(guān)注與Modbus數(shù)據(jù)類型和診斷直接相關(guān)的公共功能子集。
2.除了診斷功能外,OpenPLC支持與其他測試設(shè)備相同的功能代碼子集。但是,由于OpenPLC代碼是開源的,因此如果需要,可以添加對診斷和其他功能代碼的支持。
3.Modbus地址范圍在每個ven-dor之間變化很大。一些設(shè)備的離散I/O范圍較大,而另一些設(shè)備的寄存器范圍較大。
4.OpenPLC和Schneider將Modbus地址空間直接映射到物理I/O,這意味著可以通過Modbus請求直接觀察物理輸入和輸出的變化。西門子還將Modbus地址空間直接映射到I/O,但保留寄存器除外,其中,用戶被迫創(chuàng)建一個單獨的數(shù)據(jù)庫,以與Modbus保持寄存器相關(guān)聯(lián)。A-B和Omron對Modbus請求使用完全獨立的地址空間。如果需要在Modbus上報告物理I/O,用戶程序必須手動將每個Modbus地址鏈接到物理輸入或輸出。
5.根據(jù)Modbus規(guī)范,當(dāng)設(shè)備接收到不支持功能代碼的請求時,它必須以無效功能代碼異常回答。Omron沒有實現(xiàn)無效的函數(shù)代碼異常。相反,它只是關(guān)閉與請求者的連接。這給測試增加了很大的困難,因為每次測試不支持的函數(shù)代碼時都必須重置連接。
5.4 Modbus注入攻擊測試
指令注入攻擊是過程控制系統(tǒng)面臨的主要威脅之一。鑒于可編程邏輯控制器是一種智能電子設(shè)備,可編程邏輯控制器可直接在遠(yuǎn)程站點自動監(jiān)測和控制物理過程,通常有可編程邏輯控制器寄存器,用于保存過程的關(guān)鍵控制參數(shù),如上限和下限、有效狀態(tài)和當(dāng)前操作模式。攻擊者可以使用命令注入覆蓋這些寄存器中的值,從而導(dǎo)致控制算法做出錯誤的決策。
此測試的目的是驗證受到Modbus注入攻擊時的每個PLC行為。對于測試,每個可編程邏輯控制器用圖8中的梯形圖邏輯程序編程。
圖8中的梯形邏輯有一個主振蕩器,其產(chǎn)生周期為40 ms的方波。第一定時器(TON)將脈沖保持在低狀態(tài)20 ms,第二定時器(TOF)將脈沖保持在高狀態(tài)20 ms。該方波用作計數(shù)從0到100的內(nèi)部計數(shù)器的輸入。一旦計數(shù)達(dá)到100,計數(shù)器自動復(fù)位,計數(shù)重新開始。每個可編程邏輯控制器被配置為允許內(nèi)部計數(shù)在地址0處的Modbus保持寄存器中可用。
創(chuàng)建了一個監(jiān)控程序,以持續(xù)讀取和記錄每個可編程邏輯控制器的Modbus保持寄存器0。注入攻擊由另一個程序執(zhí)行,該程序旨在盡可能快地將寫消息發(fā)送到目標(biāo)PLC上的Modbus保持寄存器0。這些消息的目的是用值99覆蓋目標(biāo)PLC上的內(nèi)部計數(shù)。攻擊每個PLC的結(jié)果可以在圖9中看到。
結(jié)果表明,每個PLC在攻擊過程中都有不同的行為。OpenPLC和Schneider也有類似的行為,即使攻擊能夠多次覆蓋計數(shù)值,但它們都能夠正確地保持內(nèi)部計數(shù),從而使注入期間的輸出值在正確的內(nèi)部計數(shù)和注入值99之間振蕩。
A-B有一個不同的行為,攻擊實際上改變了內(nèi)部計數(shù)值,這樣計數(shù)器就可以從注入的值繼續(xù)計數(shù)。因此,噴射期間的輸出值在值99、100和0之間振蕩。
如第5.2節(jié)所述,歐姆龍計數(shù)器與其他平臺不同。歐姆龍CP1L系列只有下行計數(shù)器指令(CTD),因此歐姆龍可編程邏輯控制器的測試是用遞減計數(shù)器進(jìn)行的。解釋了為什么歐姆龍公司的曲線看起來是垂直的。此外,由于注入消息發(fā)送太快,Omron PLC無法處理許多讀取請求消息,這導(dǎo)致注入攻擊期間的讀取點更稀疏。由此得出結(jié)論,該PLC可能比其他PLC更容易受到拒絕服務(wù)(DoS)攻擊。
西門子是被測試的唯一一家對注射攻擊免疫的PLC。經(jīng)過仔細(xì)分析,可以看出西門子處理Modbus請求的優(yōu)先級低于梯形圖程序。此外,西門子PLC阻止了發(fā)送消息過快的連接,這迫使注入攻擊以更慢的速度發(fā)生。因此,即使注入程序試圖在Modbus寄存器中寫入該值,由于梯形圖邏輯周期的優(yōu)先級較高,內(nèi)部計數(shù)值立即恢復(fù)為正確值,因此在讀數(shù)上看不到注入。
鑒于open PLC是一個開源PLC,因此可以修改其內(nèi)部行為,使之與西門子PLC相匹配,以應(yīng)對此攻擊。如圖1所示,網(wǎng)絡(luò)層-w h i c h處理Modbus和DNP3連接,并且PLC邏輯可以直接訪問內(nèi)部圖像表。這意味著Modbus寫請求直接訪問OpenPLC內(nèi)部緩沖區(qū),因此可以立即修改緩沖區(qū)中的任何變量。為了具有與西門子PLC相似的行為,在網(wǎng)絡(luò)層和PLC邏輯之間添加了仲裁塊,這樣它們就不再直接訪問內(nèi)部圖像表。仲裁器被編程為優(yōu)先考慮可編程邏輯控制器邏輯,因此Modbus寫入請求將在臨時緩沖區(qū)上等待,直到所有梯形圖邏輯寫入內(nèi)部圖像表完成。如果Modbus寫入和PLC邏輯寫入之間存在沖突,則將保持PLC邏輯值。在OpenPLC上執(zhí)行這些修改之后,Modbus注入攻擊測試被重復(fù)。
從圖10可以看出,修改了源代碼的OpenPLC與Siemens PLC具有相同的行為。注入的消息無效,因為PLC邏輯優(yōu)先于Modbus寫入請求。在這種情況下修改open PLC以匹配最佳實踐,或者在其他情況下?lián)魯√囟ü舻哪芰?#xff0c;顯示了開源PLC在網(wǎng)絡(luò)安全研究中的價值。
雖然這種修改能夠擊敗這種特殊的注入攻擊,但它沒有修復(fù)與Modbus協(xié)議相關(guān)的身份驗證、完整性和機(jī)密性問題,這使得注入攻擊最初成為可能。解決這個問題的一個更全面的解決方案是在協(xié)議中實際消除這些限制。阿爾維斯等人進(jìn)行的一項研究。(2018)試圖解決其中一些問題,方法是證明有可能通過使用機(jī)器學(xué)習(xí)識別和阻止可能的攻擊的嵌入式入侵防御系統(tǒng)來增強(qiáng)OpenPLC。同樣的研究還描述了一個嵌入式加密模塊,為Modbus協(xié)議提供機(jī)密性。鑒于許多工業(yè)過程對實時性的嚴(yán)格要求,本研究還評估了采用加密和機(jī)器學(xué)習(xí)算法的ap的性能損失,并得出結(jié)論,這些改進(jìn)不會影響OpenPLC的實時性。這種行為的原因在于OpenPLC的實時庫,它受益于多核架構(gòu),為核心OpenPLC進(jìn)程提供了更好的實時響應(yīng)。
6 網(wǎng)絡(luò)安全應(yīng)用
與傳統(tǒng)的集中式方法相比,開源PLC為邊緣的嵌入式安全性創(chuàng)造了研究機(jī)會,可以提供更高的彈性。下面的章節(jié)列舉了OpenPLC的三個重要的網(wǎng)絡(luò)安全應(yīng)用領(lǐng)域。
6.1 可開發(fā)PLC用于SCADA安全培訓(xùn)
出于各種原因,安全行業(yè)的人員一直在使用故意易受攻擊的系統(tǒng),如Metasploitable(Metasploitable:一種易受攻擊的機(jī)器,用于測試Metasploit 2017),如網(wǎng)絡(luò)開發(fā)培訓(xùn)、漏洞開發(fā)和軟件測試。鑒于目前在可編程邏輯控制器層面上不存在此類系統(tǒng),可以創(chuàng)建原始OpenPLC代碼的分支,以實現(xiàn)在ICS-CERT咨詢和報告(ICS-CERT咨詢| ICS-CERT 2017)中披露的商業(yè)系統(tǒng)的安全漏洞。這個故意易受攻擊的系統(tǒng)可以用來進(jìn)行ICS安全培訓(xùn),測試網(wǎng)絡(luò)安全工具,并在不需要原始硬件的情況下實踐常見的ICS滲透技術(shù)。
6.2 嵌入式入侵檢測系統(tǒng)
雖然在提高入侵檢測系統(tǒng)(IDS)的準(zhǔn)確性和復(fù)雜度方面做了大量工作,但當(dāng)攻擊者攻擊網(wǎng)絡(luò)中的可信節(jié)點時,要保護(hù)工業(yè)系統(tǒng)免受受損節(jié)點的攻擊,就面臨著巨大的研究挑戰(zhàn)。攻擊者可以發(fā)起攻擊,發(fā)送有害的控制命令,甚至從受信任的節(jié)點取消激活I(lǐng)D。可以修改開放源碼的PLC代碼以包含嵌入式id。嵌入式體系結(jié)構(gòu)將ID暴露在網(wǎng)絡(luò)中的可能性降到最低,這樣受信任的節(jié)點就不能訪問ID。另外,一個嵌入式IDS一旦只關(guān)心自己的節(jié)點,可以分析更小的數(shù)據(jù)流。這樣可以提高入侵檢測系統(tǒng)的準(zhǔn)確性和訓(xùn)練時間。
在PLC中嵌入IDS還可以提供其他優(yōu)點。基于機(jī)器學(xué)習(xí)算法的IDS通過網(wǎng)絡(luò)遙測學(xué)習(xí)。機(jī)器學(xué)習(xí)IDS的性能和準(zhǔn)確性依賴于正確的特征和屬性的選擇,這是一個非常復(fù)雜和領(lǐng)域特定的任務(wù)。嵌入式IDS可以直接訪問由PLC執(zhí)行的邏輯程序,從而獲得有關(guān)該過程的領(lǐng)域特定知識,從而在最少的人工監(jiān)督下自動選擇正確的特性。
6.3 嵌入式加密
通過加密PLC與集中監(jiān)控之間的通信通道,可以提高SCADA網(wǎng)絡(luò)的安全性。IPsec為數(shù)據(jù)包提供加密和身份驗證,從而保護(hù)它們不被竊聽和篡改。由于IPsec在網(wǎng)絡(luò)層(OSI第3層)運行,它對應(yīng)用程序是完全透明的。研究人員一直致力于使用IPsec和其他加密技術(shù)(如SSL和TLS)包裝SCADA協(xié)議(Patel et al., 2009;阿爾希羅夫和金姆;Patel和Sanyal, 2008)。
由于閉源商用可編程邏輯控制器的網(wǎng)絡(luò)功能無法修改,在當(dāng)前的監(jiān)控與數(shù)據(jù)采集系統(tǒng)上使用加密技術(shù)需要額外的硬件,如可編程邏輯控制器與監(jiān)控與數(shù)據(jù)采集網(wǎng)絡(luò)其余部分之間的線路連接。這種方法的問題是PLC和加密設(shè)備之間的鏈接易受攻擊,因為它沒有加密。此外,網(wǎng)絡(luò)上添加的節(jié)點會增加延遲,從而影響網(wǎng)絡(luò)的實時響應(yīng)。
OpenPLC的模塊化架構(gòu)允許修改網(wǎng)絡(luò)層架構(gòu),而無需更改系統(tǒng)其他組件上的任何內(nèi)容。另外,由于OpenPLC是完全開放源碼的,它支持在設(shè)備中實現(xiàn)SSL、TLS或IPsec加密,而不需要任何外部硬件。將strongSwan(strongSwan簡介2017)集成到OpenPLC中進(jìn)行了初步測試,結(jié)果令人滿意。StrongSwan是一個完整的IPsec解決方案,為服務(wù)器和客戶端提供加密和身份驗證。它使用因特網(wǎng)密鑰交換協(xié)議(IKEv1和IKEv2)在兩個對等點之間建立安全關(guān)聯(lián)(SA)。IKE提供兩個對等方的強(qiáng)身份驗證,并派生唯一的加密會話密鑰。OpenPLC能夠使用strongSwan通過端到端加密通道成功地與ScadaBR HMI通信。不需要額外的硬件。
7. 結(jié)論
本文概述了一個通用的可編程邏輯控制器體系結(jié)構(gòu),并定義了一個符合IEC 61131-3國際標(biāo)準(zhǔn)的開源可編程邏輯控制器。這項工作的主要貢獻(xiàn)是OpenPLC Neo的開發(fā),它允許ICS研究人員在沒有專有代碼的情況下設(shè)計、測試和驗證工業(yè)控制器的安全增強(qiáng)。一旦這些增強(qiáng)功能經(jīng)過測試和驗證,供應(yīng)商就可以將它們移植到商業(yè)平臺上。
此外,為了支持OpenPLC是PLC研究的有效平臺的說法,本文提出了一種驗證PLC的方法。創(chuàng)建了四個測試來分析可編程邏輯控制器系統(tǒng)的有趣概念及其在網(wǎng)絡(luò)攻擊期間的行為:掃描時間測試、可編程邏輯控制器梯形圖邏輯執(zhí)行測試、SCADA連接測試和Modbus注入攻擊測試。應(yīng)用該方法對OpenPLC Neo與其他四種商用plc進(jìn)行了比較。結(jié)果是令人滿意的,因為OpenPLC Neo實現(xiàn)了相似的掃描時間,IEC 61131-3可兼容的邏輯執(zhí)行,與其他商業(yè)plc測試相同的SCADA連接。另外,在對OpenPLC源代碼做了一些修改之后,OpenPLC能夠模擬Modbus注入攻擊期間的最佳行為。修改open PLC以匹配最佳實踐或擊敗特定攻擊的能力顯示了開源PLC在網(wǎng)絡(luò)安全研究中的價值。
除了提供低成本的可編程邏輯控制器環(huán)境外,開放式可編程邏輯控制器還為集成電路網(wǎng)絡(luò)安全研究開辟了許多不同的領(lǐng)域。原始OpenPLC代碼的一個故意易受攻擊的版本可用于進(jìn)行ICS安全培訓(xùn)和測試網(wǎng)絡(luò)安全工具。嵌入OpenPLC代碼中的IDS系統(tǒng)暴露于網(wǎng)絡(luò)的程度較低,分析的數(shù)據(jù)流較小,提高了準(zhǔn)確性和訓(xùn)練時間,并且可以根據(jù)PLC執(zhí)行的邏輯程序自動選擇要學(xué)習(xí)的特征。最后,OpenPLC使SSL、TLS和IPsec等加密技術(shù)能夠嵌入到應(yīng)用程序中。嵌入式加密為控制中心提供直接和安全的通信通道,而不需要增加網(wǎng)絡(luò)延遲的外部硬件。
R E F E R E N C E S
Alcaraz C , L o p e z J . Analysis of requirements for critical control
systems. Int J Crit Infrastruc Protect 2012;5(3,4):137–45 .
Alcaraz C , Zeadally S . Critical control system protection in the
21st century. Computer 2013;46(10):74–83 .
Alcaraz C , Zeadally S . Critical infrastructure protection:
requirements and challenges for the 21st century. Int J Crit
Infrastruct Protect 2015;8:53–66 .
Allen-Bradley, “DF1 protocol and command set: reference
manual”, Publication No. 1770-6.5.16, Allen-Bradley
Milwaukee, Wisconsin, 1996.
Alsiherov F and Kim T, “Secure SCADA network technology and
methods”, WSEAS Trans Syst Control , vol. 5, no. 8, p. 635–645
Alves T, Das R, Morris T. Embedding encryption and machine
learning intrusion prevention systems on programmable logic
controllers. IEEE Embed Syst Lett 2018.
doi: 10.1109/LES.2018.2823906 . 1–1.
Alves T. The OpenPLC project. [Online]. Available,
http://www.openplcproject.com/ ; 2017 Accessed: 14- Dec
Alves T. OpenPLC_v2: OpenPLC with the new IEC ST to C
compiler. [Online]. Available:
https://github.com/thiagoralves/OpenPLC _ v2 ; 2017 [Accessed:
14- Dec].
Alves T. OpenPLC-Neo: a cheap, reliable, expandable and, of
course, open source device that works with OpenPLC
software. [Online]. Available:
https://github.com/thiagoralves/OpenPLC-Neo ; 2017
[Accessed: 14- Dec].
ARC Advisory Group, “A R C user survey: PLC supplier
preferences”, ARC Advisory Group 2001.
Boyes W , O’Brien L . To p 50 automation companies. Control
2009;XXI(12):22–9 .
Braam C. Modbus PLC simulator. [Online]. Available:,
http://www.plcsimulator.org/ ; 2017 [Accessed: 14- Dec] .
CENELEC, “General purpose field communication system”,
Document No. EN 50170, CENELEC 1996.
ControlNet International, “ControlNet specifications”, 2nd. ed.
ControlNet International, Boca Raton, FL, 1998.
ControlNet International, “EtherNet/IP specification”, Release 1.0,
ControlNet International, 2001
Curtis K, “A DNP3 protocol primer. Technical report”, DNP User’s
Group, 2000
de Sousa M , C a r v a l h o A . An IEC 61131-3 compiler for the MatPLC.
Proceedings of the EFTA 2003, IEEE conference on emerging
technologies and factory automation. (Cat. No.03TH8696),
2003 .
de Sousa M . MatPLC-the truly open automation controller.
Proceedings of the IEEE 28th annual conference of the
industrial electronics society, 2002 .
de Souza M. MatPLC home page. [Online]. Available,
http://mat.sourceforge.net/ ; 2017 [Accessed: 01- Aug- 2017] .
Erickson K, “Programmable logic controllers: an emphasis on
design and application”, 3rd ed., 2016. pp. 43-51, 86-88,
1218–1222.
Genge B , Siaterlis C , Hohenadel M . AMICI: an assessment
platform for multi-domain security experimentation on
critical infrastructures. Proceedings of the international
workshop on critical information infrastructures security -
CRITIS, 2012 .
Holm H , K a r r e s a n d M , Vidstr?m A , Westring E . A survey of
industrial control system testbeds. Secure IT Syst
2015;9417:11–26 .
ICS-CERT Advisories | ICS-CERT . ics-cert.us-cert.gov. [Online].
Available, https://ics- cert.us- cert.gov/advisories ; 2017
Accessed: 01- Aug- 2017 .
“International Electrotechnical Commission. IEC 61131-3:
programmable controllers – P a r t 3 programming languages”,
International Electrotechnical Commission, Geneva,
Switzerland, 1993.
Introduction to strongSwan. wiki.strongswan.org. [Online].
Available, https://wiki.strongswan.org/projects/strongswan/
wiki/IntroductionT ostrongSwan ; 2017 Accessed: 01- Aug-
2017 .
Maynard P , McLaughlin K , Haberler B . Towa rd s understanding
man-in-the-middle attacks on IEC 60870-5-104 SCADA
networks. Proceedings of the 2nd international symposium
for ICS & SCADA cyber security research, 2014 .
Rapid7, Metasploitable: a vulnerable machine to test metasploit,
Rapid7 2017. [Online]. Available: https://www.rapid7.com/
resources/test- metasploit- with- metasploitable/ . [Accessed:
01- Aug- 2017].
Mitsubishi Electric, “Graphic operation terminal/SCADA”,
Mitsubishi Electric 2018.
Modbus IDA, “Modbus application protocol specification v1.1a”,
Modbus IDA, June 4, 2004
Modbus T ools. Modbus slave simulator. [Online]. Available: ,
http://www.modbustools.com/modbus _ slave.html ; 2017
[Accessed: 14- Dec]
Nagar S. Open source boosts innovation in software, hardware
and beyond. Res Dev 2017. [Online]. Available
https://www.rdmag.com/article/2017/03/open-source-
boosts- innovation- software- hardware- and- beyond .
[Accessed: 31- Jul- 2017] .
Omron, “CX-designer: screen designer for NS series”, Cat. No.
V404-E1-01, Omron, 2018.
opendnp3. Automatak.com. [Online]. Available,
https://www.automatak.com/opendnp3/ ; 2017 [Accessed: 01-
Aug- 2017] .
OSS-Fuzz. GitHub; 2017 [Online]. Available:
https://github.com/google/oss-fuzz . [Accessed: 01-Aug-2017].
“OSS-Fuzz: five months later, and rewarding projects”, [Online].
Available https://opensource.googleblog.com/2017/05/
oss- fuzz- five- months- later- and.html ; 2017 [Accessed: 01-
Aug- 2017].
Patel S , S a n y a l P . Securing SCADA systems. Inf Manage Comput
Secur 2008;16(4):398–414 .
Patel S , B h a t t G , G r a h a m J . Improving the cyber security of SCADA
communication networks. Commun ACM 2009;52(7):139 .
PLCopen Technical Committee 6, “XML Formats for IEC 61131-3,
Ver 1.0”, PLCopen Technical Committee 6, April 2005
Profibus, “Profibus: design guideline”, Version 1.13, Order No.
8.012, Profibus 2015.
Rautmare S . SCADA system security: challenges and
recommendations. Proceedings of the annual IEEE India
conference, 2011 .
Rockwell. Studio 5000 Logix Emulate. rockwellautomation.com
[Online]. Available:, https://www.rockwellautomation.com/
rockwellsoftware/products/studio5000- logix- emulate.page ;
2017 Accessed: 14- Dec .
Rockwell Automation, “RSView 32 user’s guide”, Publication No.
VW32-UM001F-EN-E, Rockwell Automation 2011.
ScadaBR. Scadabr.com.br. [Online]. Available,
http://www.scadabr.com.br/ ; 2017 Accessed: 01- Aug- 2017 .
Schneider Electric, “Interactive graphical SCADA system: insight
and overview”, Publication No. 201209 US, Schneider Electric,
2012.
Siemens, “SIMATIC S7-PLCSIM - software for SIMATIC
controllers”, siemens.com [Online]. Available:
http://w3.siemens.com/mcms/simatic- controller- software/
en/step7/simatic- s7- plcsim/pages/default.aspx . [Accessed:
14- Dec- 2017]
Siemens AG, “Basic controller SIMATIC S7-1200”, Article No.
DFFA-B10053-03-7600, Germany, 2017
Siemens AG, “SIMATIC WinCC V7”, Article No.
DFFA-B10453-00-7600, Siemens AG, Germany, 2017
Telecontrol Equipment and Systems, “Part 5-104: transmission
protocols - network access for IEC 60870-5-101 using standard
transport profiles”, IEC Standard 60870, IEC, 2006.
Tisserant E , Bessard L , d e Sousa M . An Open Source IEC 61131-3
Integrated Development Environment. Proceedings of the 5th
IEEE international conference on industrial informatics, 2007 .
U.S. Naval Research Lab. Common Open Research Emulator
(CORE). [Online]. Available Accessed: 14- Dec,
https://www.nrl.navy.mil/itd/ncs/products/core ; 2017
Accessed: 14- Dec
2013年,蒂亞戈·阿爾維斯在“卡托利卡大學(xué)”(PUC)獲得電氣工程學(xué)士學(xué)位。2013年獲北大電氣工程系最佳高級設(shè)計獎。2014年,他創(chuàng)建了OpenPLC,這是第一個符合IEC 61131-3標(biāo)準(zhǔn)的開源工業(yè)控制器。OpenPLC正成為控制系統(tǒng)研究和教育的重要工具。OpenPLC項目得到了一些大學(xué)和私人公司的資助,如約翰霍普金斯大學(xué)和FreeWave技術(shù)公司。目前蒂亞戈是亨茨維爾阿拉巴馬大學(xué)的博士生。
他的研究方向包括SCADA系統(tǒng)、工業(yè)控制器和嵌入式系統(tǒng)的網(wǎng)絡(luò)安全。
莫里斯博士的主要研究領(lǐng)域是計算機(jī)安全。他目前的研究涉及工業(yè)控制系統(tǒng)(SCADA、智能電網(wǎng)、智能儀表、過程控制系統(tǒng))的安全。為了與一群學(xué)生研究人員合作,他正在調(diào)查控制系統(tǒng)的漏洞,并開發(fā)控制系統(tǒng)入侵檢測、法醫(yī)數(shù)據(jù)記錄和網(wǎng)絡(luò)流量驗證的方法。在加入位于亨茨維爾的阿拉巴馬大學(xué)之前,他于2008-2015年在密西西比州立大學(xué)工作,1991-2008年在德克薩斯儀器公司工作。在微軟大學(xué),他擔(dān)任副教授和中心主任。在TI,他曾擔(dān)任數(shù)字設(shè)計師和數(shù)字設(shè)計驗證工程師。
總結(jié)
以上是生活随笔為你收集整理的OpenPLC:符合IEC 61131-3标准的用于网络安全研究的开源工业控制器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NSIS中文用户手册下载(免费下载)
- 下一篇: c语言程序设计数字电位器,可编程数字电位