趙悅琪,閔曉霜
(中國電子信息產(chǎn)業(yè)集團有限公司第六研究所,北京 102209)
可編程邏輯控制器(PLC) 在工控領(lǐng)域的應(yīng)用逐漸廣泛,它的核心控制地位也逐漸提升。盡管市場上許多國外的PLC設(shè)備已經(jīng)可以實現(xiàn)安全穩(wěn)定的通信,但國產(chǎn)化是獨立發(fā)展民族經(jīng)濟的重要措施,對國家有特別重要的意義,因此將軟硬件純國產(chǎn)的PLC系統(tǒng)投入市場使用有著極為重要和特別的意義,那么基于國產(chǎn) PLC 進行標準化通信協(xié)議的開發(fā)就顯得很有價值。OPC統(tǒng)一架構(gòu)(OPC UA)體系是一個基于網(wǎng)絡(luò)服務(wù)的不依賴于平臺的新標準,借助這樣一個標準,各種各樣的系統(tǒng)和設(shè)備能在不同網(wǎng)絡(luò)中以“客戶端/服務(wù)器”模式進行通信,它通過確認客戶端與服務(wù)器的身份和自動抵御攻擊來支持安全可靠的通信,大大提高了數(shù)據(jù)采集和處理的安全性和效率[1]。OPC UA借助其優(yōu)勢,在國產(chǎn)PLC系統(tǒng)中的應(yīng)用十分廣泛,但是通信過程中的安全問題還處在比較薄弱的階段,因此提供安全可靠的通信方案顯得尤為重要。OPC UA基金會提供了一個基本的安全模型,為客戶端和服務(wù)器之間的信息交換提供了保障,但是面對復(fù)雜的網(wǎng)絡(luò)環(huán)境和惡意的外部攻擊時還會暴露出基本模型存在的不足[2]。其中身份認證是在任何一次通信對話過程中都不可避免的環(huán)節(jié),如果身份認證機制不夠安全,將會遭受諸如中間人攻擊、消息欺騙、口令竊聽等攻擊,使信息泄露甚至影響系統(tǒng)整體運行。本文針對國產(chǎn)化PLC系統(tǒng)與OPC UA通信過程的身份認證機制進行優(yōu)化,以提高通信系統(tǒng)的安全性。
身份認證技術(shù)是信息安全的核心技術(shù)之一,它的發(fā)展直接決定了信息技術(shù)產(chǎn)業(yè)的發(fā)展,它是一種證實被認證對象是否屬實或有效的過程和技術(shù),其基本思想是通過驗證被認證對象的屬性來達到證實其是否真實有效的目的[3],對于保證信息只被合法授權(quán)用戶獲取和訪問起著重要作用。本文在已有的身份認證手段基礎(chǔ)之上,基于安全模型的不足提出了一種雙向身份認證機制,對安全模型進行優(yōu)化,使之在身份認證環(huán)節(jié)的安全性大大提高。
OPC UA基金會給用戶提供了一個基本的安全模型,這是一個允許在不同的應(yīng)用環(huán)境中實現(xiàn)功能的通用的安全模型。OPC UA安全模型被構(gòu)建在傳輸層之上的應(yīng)用層和通信層中,定義描述了一個分層的方法,每一層都有對于安全問題的具體職責。文獻 [4]描述了基本安全模型的工作機制,其結(jié)構(gòu)如圖1所示。
圖1 OPC UA 安全模型
OPC UA的身份認證和授權(quán)包含幾個不同的層面,分別是應(yīng)用程序認證和授權(quán)、產(chǎn)品認證和授權(quán)、用戶認證和授權(quán)。其中,應(yīng)用程序認證和授權(quán)使服務(wù)器可以驗證一個應(yīng)用實例證書屬于某個OPC UA 客戶端,可否允許客戶端建立安全通道;用戶認證和授權(quán)是指OPC UA服務(wù)器可以驗證準備從服務(wù)器獲取數(shù)據(jù)的用戶確實是其所聲稱的用戶;產(chǎn)品認證和授權(quán)以及用戶認證和授權(quán)過程均是在會話建立期間進行的。
由于認證級別不同、傳輸憑據(jù)的類型不同,服務(wù)器將執(zhí)行不同任務(wù)以驗證用戶身份。以應(yīng)用程序認證和授權(quán)為例,圖2顯示了應(yīng)用程序的認證過程。
具體地,客戶端用簽名的“打開安全通道請求”來證明其對證書關(guān)聯(lián)的私鑰的所有權(quán),經(jīng)過服務(wù)器用客戶端證書的公鑰來驗證客戶端身份,驗證后服務(wù)器端用私鑰對“打開安全通道請求”進行帶有自己的簽名的回應(yīng),客戶端也可以驗證從服務(wù)器接收的證書是服務(wù)器的證書以驗證其身份,最終達到建立安全通道的目的[4]。
圖2 應(yīng)用程序認證過程
傳統(tǒng)的安全模型雖然一定程度上可以滿足安全需求,但是在國產(chǎn)化PLC 系統(tǒng)的應(yīng)用當中卻面臨著種種問題。首先,無法防止冒充,一旦對話被黑客攻擊竊取到過程信息,就可以進行身份冒充,欺騙客戶端給出錯誤的數(shù)據(jù)或者欺騙服務(wù)器非法讀取數(shù)據(jù);其次,無法防止重放攻擊,同一用戶或者服務(wù)器在進行認證時都提供相同的簽名和數(shù)字證書,極易被中間人攔截進行重放攻擊,從而獲取私密工業(yè)數(shù)據(jù);此外,整個認證授權(quán)過程對于雙方的身份確認和隱私保護過程較為簡單,安全防護等級較低,無法應(yīng)對工業(yè)控制領(lǐng)域中復(fù)雜的環(huán)境和來自外部的刻意攻擊,面臨著諸如消息欺騙、竊聽、會話劫持、用戶憑證泄密等威脅[5]。鑒于這些風(fēng)險,提供一個雙向的、安全的身份認證模型對于安全通信十分重要。
基于上文提出的問題,本文設(shè)計了一種增強的雙向身份認證機制以提高安全性能,為了實現(xiàn)雙向的身份認證,本文使用審計系統(tǒng)作為權(quán)威第三方,以公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure, PKI)技術(shù)作為認證過程中的基礎(chǔ)技術(shù),通過證書和公私密鑰對來驗證用戶身份的合法性。增加了USBKey防護,USBKey是一種芯片級操作系統(tǒng),所有讀寫和加密運算都在芯片內(nèi)部完成,它自身所具備的存儲器可以用來存儲一些個人信息或證書,用來標識用戶身份,具有很高的安全性[6]。
優(yōu)化后的系統(tǒng)主要包括如下幾部分。
(1)OPC UA客戶端和USBKey:OPC UA 客戶端主要實現(xiàn)系統(tǒng)和客戶的管理,為終端用戶提供一個簡潔、可操作的交互界面;系統(tǒng)對客戶端的每一個用戶都分發(fā)一個USBKey,當中存有用戶證書、用戶密碼口令和服務(wù)器公鑰。在USBKey與服務(wù)器連接成功后,OPC UA 的服務(wù)器可以從這里調(diào)用用戶的證書信息并進行加解密工作。
(2)控制代理器:它是客戶端和服務(wù)器進行信息交流的中介,主要用于接收用戶從客戶端發(fā)出的訪問請求和提交的認證信息,并將這些信息轉(zhuǎn)發(fā)給服務(wù)器端。在用戶認證成功后,它成為用戶訪問資源數(shù)據(jù)庫的代理服務(wù)器。
(3)OPC UA服務(wù)器端和用戶信息數(shù)據(jù)庫:OPC UA服務(wù)器主要是接收由控制代理轉(zhuǎn)發(fā)來的用戶信息,接收后與用戶信息數(shù)據(jù)庫中的信息進行對照,完成對客戶端的認證工作。
(4)審計系統(tǒng):包括審計服務(wù)器和審計數(shù)據(jù)庫,其中數(shù)據(jù)庫用于存儲用戶名和OPC UA服務(wù)器生成的隨機序列碼,審計服務(wù)器負責對數(shù)據(jù)庫中的內(nèi)容進行數(shù)字簽名。
設(shè)計的身份認證系統(tǒng)邏輯結(jié)構(gòu)如圖3所示。
圖3 雙向身份認證系統(tǒng)
上述系統(tǒng)的具體認證過程步驟如圖4所示。
圖4 雙向身份認證流程
(1)客戶端的用戶將自己的USBKey插入PC的USB接口,輸入用戶名和口令,如果口令正確,控制代理器與USBKey建立連接,否則失敗。
(2)連接成功后,控制代理器會從USBKey中調(diào)用用戶證書,并轉(zhuǎn)發(fā)給OPC UA服務(wù)器端。
(3)服務(wù)器收到證書后會提取其中的用戶名、用戶公鑰和證書序列號S,并根據(jù)用戶名在用戶信息數(shù)據(jù)庫中查找,如果存在,認證過程繼續(xù),否則認證失敗。
(4)如果在數(shù)據(jù)庫中找到了用戶信息,服務(wù)器會根據(jù)該信息在輕量目錄訪問協(xié)議服務(wù)器(Lightweight Directory Access Protocol,LDAP)中找到用戶證書序列號S,并與上一步驟中獲取的證書序列號S比對,如果相等則驗證成功,否則失敗,OPC UA服務(wù)器會將驗證結(jié)果進行簽名后存到審計數(shù)據(jù)庫中;
(5)在步驟(3)中,OPC UA服務(wù)器提取了證書的用戶名信息,此時會產(chǎn)生一個隨機的序列碼M,M和用戶名綁定形成UserM,服務(wù)器調(diào)用自己的私鑰KS和用戶的公鑰KU分別對這組信息加密,得到KS(UserM)和KU(UserM),KS(UserM)通過控制代理器存入USBKey中,KU(UserM)通過審計服務(wù)器存入到設(shè)計數(shù)據(jù)庫中。
(6)OPC UA客戶端收到KS(UserM)后,利用OPC UA 服務(wù)器的公鑰PS進行解密PS(KS(UserM)),得到UserM,再利用用戶的公鑰KU進行加密得到KU(UserM),結(jié)果發(fā)送到審計服務(wù)器。
(7)審計服務(wù)器把步驟(6)得到的KU(UserM)和步驟(5)得到KU(UserM)的進行比對,如果結(jié)果一致則認證成功,否則失敗。
(8)只有在步驟(4)和步驟(7)中的認證都成功時,控制代理器才會將OPC UA客戶端和服務(wù)器接通,用戶可以訪問服務(wù)器中的過程數(shù)據(jù),否則連接失敗。
這樣的認證過程就實現(xiàn)了安全的雙向身份認證,步驟(1)~(4) 是OPC UA服務(wù)器對用戶身份的驗證,步驟(5)~(8)則實現(xiàn)了用戶對服務(wù)器身份的認證,當雙向認證成功后即可以建立資源訪問。認證的結(jié)果同時被詳細地記錄在審計數(shù)據(jù)庫中,已備日后在發(fā)生糾紛時作為第三方對通信雙方進行仲裁[7]。
本文是基于國產(chǎn)自主可控 PLC系統(tǒng)與 OPC UA 通信過程的優(yōu)化設(shè)計,整個過程要通過建立起帶有 OPC UA 客戶端和服務(wù)器的PC與PLC之間的連接,進行 OPC UA 數(shù)據(jù)交互,實現(xiàn)控制 PLC 運行、讀取現(xiàn)場工業(yè)數(shù)據(jù)、讀取PLC 控制器數(shù)據(jù)等功能,OPC UA 的應(yīng)用環(huán)境十分復(fù)雜,可能發(fā)生在控制網(wǎng)絡(luò)層、操作網(wǎng)絡(luò)層、企業(yè)網(wǎng)絡(luò)層甚至連接到互聯(lián)網(wǎng),具體使用環(huán)境如圖5所示。
圖5 國產(chǎn)PLC系統(tǒng)中的OPC UA
由圖5可知OPC UA 客戶端和服務(wù)器的交互既可能發(fā)生在公司內(nèi)部網(wǎng)絡(luò)的各個層面,也可能發(fā)生在互聯(lián)網(wǎng)層面之中,安全問題會隨著網(wǎng)絡(luò)層級的提升而愈發(fā)復(fù)雜,在身份認證的環(huán)節(jié)更是有可能遭受到各種攻擊。而優(yōu)化后的安全模型利用PKI技術(shù),既保障了服務(wù)器不被非法訪問,也可以防止黑客干擾客戶端的信息訪問,在面對復(fù)雜的網(wǎng)絡(luò)環(huán)境的情況下顯現(xiàn)出了以下幾個方面的優(yōu)勢。
(1)用戶信息保密:安全套接層(Secure Sockets Layer,SSL)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,在傳輸層對網(wǎng)絡(luò)連接進行加密,本文方案用戶信息選擇通過SSL協(xié)議進行傳輸,可以防止網(wǎng)絡(luò)監(jiān)聽。
(2)防止重放攻擊:每次認證時服務(wù)器會向客戶端發(fā)送一個隨機序列碼,因此即使信息被黑客截獲也無法重放。
(3)防止冒充:只有用戶同時拿到USBKey并知道密碼口令才能進行認證,而服務(wù)器也具有自己的私鑰防止了中間人偽裝。
(4)提供詳細的審計記錄:每次認證都會把雙方的認證結(jié)果記錄到審計數(shù)據(jù)庫中,以備日后需要時查看。
在完整的PLC通信系統(tǒng)中并不是每個身份認證的環(huán)節(jié)都需要用到復(fù)雜的認證方式,因為算法和方式的復(fù)雜會增加系統(tǒng)消耗的時間,在PLC底層數(shù)據(jù)采集的過程中建立簡單的安全模型即可,當更上一級的客戶端(如HMI系統(tǒng)、SCADA系統(tǒng)中的客戶端)訪問數(shù)據(jù)時,尤其是在互聯(lián)網(wǎng)的環(huán)境下,面臨的風(fēng)險也增加,所以此處選擇更為完善的身份認證機制更為可靠,也為后續(xù)的數(shù)據(jù)交互提供保障[8]。
本文結(jié)合國產(chǎn)化PLC系統(tǒng)的安全需求,從OPC UA 的安全模型出發(fā),以身份認證技術(shù)為切入點,分析傳統(tǒng)安全模型安全性能的不足之處,對身份認證環(huán)節(jié)進行了雙向驗證的優(yōu)化設(shè)計,完善了安全模型的功能。同時,在應(yīng)用環(huán)境中對其安全性進行分析,在實現(xiàn)雙向認證功能的基礎(chǔ)上能達到用戶信息保密、防止重放攻擊、防止冒充等安全目標,同時還可以提供詳細的審計記錄以備使用。
在國產(chǎn)PLC系統(tǒng)的不同網(wǎng)絡(luò)層級可以采取不同的安全策略,以在保證整個系統(tǒng)安全的基礎(chǔ)之上提高運行效率,體現(xiàn)出OPC UA系統(tǒng)的靈活性。但除了身份認證環(huán)節(jié)外,OPC UA客戶端和服務(wù)器的交互過程中還有很多要解決的問題,安全模型還應(yīng)該從不同角度進行優(yōu)化,使其更加適用于國產(chǎn)化PLC系統(tǒng)的使用環(huán)境。這也是接下來要研究的重點內(nèi)容。