作者:北京和利時系統工程有限公司 李宗杰,劉盈
摘要:嵌入式控制器是控制系統的核心設備,而控制算法是控制器的指令集,也是控制系統的核心價值所在。本文從保護控制算法的角度,結合數字證書和傳統控制技術描述了一種權限控制以及通信加解密技術的實現方案:包括工程師組態工具的權限控制,通信數據的加密處理。
關鍵詞:數字證書;OpenVPN;嵌入式控制器
1 前言
現代工業控制系統普遍采用數據采集與監控系統(SCADA)、分布式控制系統(DCS)、可編程邏輯控制(PLC)以及其他控制系統等,而且已廣泛應用于石化、電力、水力、醫藥、食品、汽車、鋼鐵、航天等工業領域,成為國家關鍵基礎設施的重要組成部分,其是否能夠安全穩定運行,已經關系到國家的戰略安全。在大部分控制系統中算法是系統中的核心,決定了被控系統的行為;同時,算法是工程師智慧的結晶,尤其對于一些優化和精細化控制的應用場合,是企業核心價值所在。控制器是算法的載體,對該設備的安全保護顯得尤為重要。
本文從控制器使用的角度介紹了可編程邏輯控制器的算法保護的一種方法(基于數字證書),包括工程師組態工具的權限控制,通信數據的加密處理。兼顧信息安全和工業控制系統自身的要求,系統包括證書管控平臺、控制計算機軟件套件、安全通信模塊、可信控制器。如圖1所示。
圖1 系統示意圖
2 數字簽名算法和加解密算法
2.1 典型數字簽名算法
數字簽名算法是數字簽名標準的一個子集,數字簽名一般采用非對稱密鑰密碼體制來實現。密鑰運行在由SHA-1(也可以是其它哈希算法)產生的消息哈希:為了驗證一個簽名,要重新計算消息的哈希,使用公鑰解密簽名然后比較結果。縮寫為DSA。簽名算法多采用哈希算法或非對稱算法實現,典型的算法包括:
(1)哈希算法
SHA算法
SHA(Secure Hash Algorithm,中文名為安全散列算法)是美國國家安全局(NSA)設計,美國國家標準與技術研究院(NIST)發布的一系列密碼散列函數。正式名稱為SHA的家族第一個成員發布于1993年,又稱為SHA-0,以避免與它的后繼者混淆。兩年后發布了SHA-1。另外還有四種變體,曾經發布以提升輸出的范圍和變更一些細微設計:SHA-224、SHA-256、SHA-384 和 SHA-512(也被稱為 SHA-2)。
SHA-1在許多安全協議中廣為使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被視為是MD5的后繼者。
MD5算法
Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。該算法的文件號為RFC 1321。MD5用于確保信息傳輸完整一致,是計算機廣泛使用的雜湊算法之一,主流編程語言普遍已有MD5實現。MD5的前身有MD2、MD3和MD4。
MD5可以為任何文件產生一個同樣獨一無二的“數字指紋”,如果任何人對文件做了任何改動,其MD5值也就是對應的“數字指紋”都會發生變化。
SM3算法
SM3算法也是一種哈希算法,中國國家密碼管理局在2010年發布,其名稱是SM3密碼雜湊算法。給數據加一個固定長度的指紋,這個固定長度是32字節。
(2)基于非對稱加密的簽名算法
RSA算法
RSA公鑰加密算法是1977年由羅納德 李維斯特(Ron Rivest)、阿迪 薩莫爾(Adi Shamir)和倫納德 阿德曼(Leonard Adleman)一起提出的RSA是目前最有影響力和最常用的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被ISO推薦為公鑰數據加密標準。
該算法適用于加解密和數字簽名。
SM2算法
SM2是國密算法。SM2加密使用接收方公鑰加密,公鑰由一個曲線坐標點組成。SM2公鑰加密算法比RSA相對復雜,加密結果由3個部分組成,SM2加密過程中使用了隨機數,因此同樣的明文數據每一次加密結果都不一樣。
該算法適用于加解密和數字簽名,需要配合使用SM3算法。
DSA算法
DSA(Digital Signature Algorithm),它是另一種公開密鑰算法,它不能用作加密,只用作數字簽名。DSA使用公開密鑰,為接受者驗證數據的完整性和數據發送者的身份。它也可用于由第三方去確定簽名和所簽數據的真實性。DSA算法的安全性基于解離散對數的困難性,這類簽字標準具有較大的兼容性和適用性,成為網絡安全體系的基本構件之一。
ECDSA算法
RSA和ECC它們是基于不同的數學難題基礎上的,而且不同的密碼算法以及簽名體制有不同的算法復雜度。ECDSA的全名是Elliptic Curve DSA ,它是DSA應用了橢圓曲線加密算法的變種。橢圓曲線算法的原理很復雜,但是具有很好的公開密鑰算法特性,通過公鑰無法逆向獲得私鑰。RSA的破譯和求解難度是亞指數級的;而ECDSA的破譯和求解難度基本上是指數級的。
2.2 典型通信加解密算法
根據密鑰類型不同將現代密碼技術分為兩類:對稱加密算法(秘密鑰匙加密)和非對稱加密算法(公開密鑰加密)。對稱鑰匙加密系統是加密和解密均采用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,并保持鑰匙的秘密。非對稱密鑰加密系統采用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。
(1)非對稱加密
數字簽名算法中提過的RSA、SM2均可以用來加密。
(2)對稱加密
對稱加密算法用來對敏感數據等信息進行加密,常用的算法包括:
DES(Data Encryption Standard):數據加密標準,速度較快,適用于加密大量數據的場合。
3DES(Triple DES):是基于DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高;
SM4:國密算法。密鑰長度和分組長度均為128位。加密算法與密鑰擴展算法都采用32輪非線性迭代結構。解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
3 基于數字證書的身份認證
工業控制系統中工程師主要使用組態軟件進行算法編輯和下裝。本文提到的安全組態軟件使用兩級權限保護機制,一是采用MD5加密算法對口令進行加密存儲;二是采用U盾的方式(存私鑰)對軟件的使用進行限制。如圖2所示。
圖2 工程師站組件結構圖
U盾里邊存儲私鑰和由數字證書管控平臺頒發的數字證書。工程師站(安裝組態軟件的PC機等)存有CA母證書。安全組件是對U盾以及數字證書相關操作包括證書的讀取解析、簽名、驗簽等功能的封裝。
組態軟件通過安全組件可以讀取解析數字證書,以及讀取U盾的數字證書,利用安全組件的證書驗證接口判斷證書的有效性,另外采用U盾簽名和數字證書的驗簽,來確定私鑰的有效性。通過以上環節,確定U盾是否有效,在有效的情況下才可以正常使用組態軟件。
控制器中存儲了U盾的數字證書的公鑰,通過驗簽等手段保證接收到的邏輯算法是由有效身份的工程師所下載的。對于重要的操作,例如影響控制器運算的在線值寫入,讀取工程,強制輸出,控制器啟動停止等,也通過私鑰進行簽名。
通過以上設計可以有效地保護工程師站的算法,有效地抵御控制器受非預期指令的影響。
4 基于數字證書的通信加解密
工程師站的權限控制雖然在一定程度上解決了算法邏輯編輯的權限控制問題,在下裝的過程中依舊存在關鍵傳輸數據被截獲、竊取等風險。本文設計了采用了OpenVPN的技術方案解決通信過程中數據泄密的風險。兼顧工業通信效率和保密性要求,采用“挑戰”的方式進行密鑰協商確定對稱密鑰,接著用對稱密鑰實現數據通信的加解密過程。如圖3所示。
圖3 工程師站安全通信密鑰協商過程
OpenVPN收發數據包都是通過虛擬網卡。該設備既能以字符設備的方式被讀寫,作為系統的虛擬網卡,也具有和物理網卡相同的特點:能夠配置IP地址和路由。對虛擬網卡的使用是OpenVPN實現其SSL VPN功能的關鍵。
OpenVPN的服務器和客戶端支持tcp和udp兩種連接方式,只需要在服務端和客戶端預先定義好使用的連接方式(tcp或udp)和端口號,客戶端和服務端在這個連接的基礎上進行SSL握手。連接包括SSL的握手以及虛擬網絡上的管理信息,OpenVPN將虛擬網上的網段、地址、路由發送給客戶端。連接成功后,客戶端和服務端建立起SSL安全連接,客戶端和服務端的數據都流入虛擬網卡做SSL的處理,再在tcp或udp的連接上從物理網卡發送出去。如圖4所示。
圖4
5 結語
隨著信息安全形勢的日益嚴峻,尤其在工控領域,很多涉及到民生領域的控制系統,信息安全顯得格外重要以及迫切。本文結合數字證書相關技術與傳統的控制技術,從控制算法的保護的角度闡述了一個可行的實現方案,并且基于此方案可以配套有更多的衍生設備,比如獨立的安全網關設備,支持路由的安全設備等。
注:本研究依托國家高技術研究發展計劃“863計劃”先進制造技術領域“可編程嵌入式電子裝備的安全技術”項目“可編程嵌入式電子設備的安全防護技術及開發工具”課題任務進行。
作者簡介:
李宗杰(1983-),男,浙江人,工程師,碩士,現任北京和利時系統工程有限公司技術中心副總經理,研究方向為計算機應用。
劉盈(1990-),男,內蒙古人,工程師,現任北京和利時系統工程有限公司信息安全系統架構師,主要從事工業控制系統信息安全解決方案的設計,以及信息安全關鍵技術的設計和實現方面的工作。
參考文獻:
[1] 肖建榮. 工業控制系統信息安全[M]. 北京:電子工業出版社, 2015.
[2] 王志海. OpenSSL與網絡信息安全——基礎、結構和指令[M]. 北京:清華大學出版社, 2007.