宋 健 蛟
(中國電建集團成都勘測設(shè)計研究院有限公司,四川 成都 610072)
隨著國家“十四五”規(guī)劃的全面啟動與“新基建”戰(zhàn)略的提出,關(guān)鍵信息基礎(chǔ)設(shè)施的智能化建設(shè)已經(jīng)在國內(nèi)全面實施。在關(guān)鍵信息基礎(chǔ)設(shè)施中,工業(yè)系統(tǒng)無疑是最為關(guān)鍵的信息系統(tǒng)。其不僅在工業(yè)生產(chǎn)、數(shù)據(jù)采集、生產(chǎn)安全監(jiān)測與預(yù)警等方面起到了決定性作用,而且關(guān)系著國家的發(fā)展和社會的穩(wěn)定。例如,能源信息管理系統(tǒng)就是工業(yè)系統(tǒng)中使用較為普遍的信息系統(tǒng),一個大型的省級能源信息系統(tǒng)具有很好的“承上啟下”的作用,不僅涉及省級和各市州能源相關(guān)部門、企業(yè)數(shù)據(jù)的采集、匯總、監(jiān)督、預(yù)警等,而且承擔(dān)了國家、地區(qū)以及其他類型的工業(yè)信息的互聯(lián)互通功能。因此,一個大型的能源管理信息系統(tǒng)可以構(gòu)建能源信息的統(tǒng)一管理、統(tǒng)一分析,其不僅可以對各級系統(tǒng)進行統(tǒng)一的日常監(jiān)管,還可以對異常變化進行預(yù)警,同時還能完成突發(fā)事件的響應(yīng),為決策定制提供依據(jù)。以四川省能源信息系統(tǒng)為例,系統(tǒng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)如圖1所示。
工業(yè)企業(yè)信息的互聯(lián)互通,打破了之前各系統(tǒng)原有的“封閉安全性”,關(guān)于工業(yè)信息系統(tǒng)的安全性也成為了人們關(guān)注的熱點。工業(yè)信息系統(tǒng)主要應(yīng)用在電力、石油、核工業(yè)、化工等眾多與國家穩(wěn)定、國計民生息息相關(guān)的產(chǎn)業(yè)中,如若系統(tǒng)遭受黑客攻擊,將直接影響國家安全與社會穩(wěn)定。2010年6月,震網(wǎng)病毒被世人所熟知,這款專門針對核工業(yè)系統(tǒng)的病毒對伊朗的核工業(yè)基地造成了致命的打擊,直接破壞了伊朗的核進程,同時也讓世界認識到了工業(yè)系統(tǒng)安全的重要性[1]。已有大量的研究文獻表明,工業(yè)系統(tǒng)正在成為或者已經(jīng)成為了黑客攻擊的首選目標[2],工業(yè)信息系統(tǒng)正在成為地緣政治博弈的新戰(zhàn)場。過去幾年,全球多個工控系統(tǒng)遭受了黑客的攻擊,涉及電力、能源、核工業(yè)等15個行業(yè)。其中,在美國、委內(nèi)瑞拉等國家的工業(yè)信息系統(tǒng)因遭受大規(guī)模的網(wǎng)絡(luò)攻擊造成了大范圍的停工停產(chǎn)事故,產(chǎn)生了巨大的經(jīng)濟損失和惡劣的社會影響。而在中國,每年針對工業(yè)系統(tǒng)的惡意嗅探高達幾千萬件[2],因此,中國的工業(yè)網(wǎng)絡(luò)正在面臨非常嚴峻的安全形勢。
圖1 系統(tǒng)網(wǎng)絡(luò)拓撲示意
傳統(tǒng)系統(tǒng)的信息安全是圍繞信息的機密性開展防范的,遵從機密性、完整性與可用性的優(yōu)先級規(guī)則。但是,針對工業(yè)系統(tǒng)的攻擊往往是以破壞其可用性為最終目的,因此,工業(yè)信息系統(tǒng)以保護系統(tǒng)可用性為最主要的目標,遵循可用性、完整性、機密性的優(yōu)先級規(guī)則[3]。同時,工業(yè)系統(tǒng)具有“計算能力弱、存儲資源不足、能量資源有限”等特點[4],這就造成針對傳統(tǒng)信息系統(tǒng)的常規(guī)安全技術(shù)措施并不適用于工業(yè)信息系統(tǒng)?,F(xiàn)階段,工業(yè)信息系統(tǒng)的攻擊主要是針對數(shù)據(jù)和控制指令的監(jiān)聽與非法篡改[5]。然而,由于現(xiàn)有的絕大多數(shù)信息系統(tǒng)采用的是基于邊界的安全防護手段,黑客想要繞過邊界安全設(shè)備,從而完成對數(shù)據(jù)的竊取和控制指令的修改是十分困難的。因此,黑客針對數(shù)據(jù)和控制指令的攻擊首先需要進入系統(tǒng)內(nèi)部,其次再完成對通信數(shù)據(jù)的劫持與篡改。不幸的是,黑客想要進入系統(tǒng)內(nèi)部的方法有很多,常用的方法有:①黑客通過社交工程手段獲取到內(nèi)部用戶的賬號和口令,從而可以偽裝成內(nèi)部用戶;②黑客通過其他手段,將惡意木馬植入到系統(tǒng)內(nèi)部,從而繞過邊界安全設(shè)備,完成從內(nèi)部發(fā)起的攻擊;③黑客本身就是系統(tǒng)的特權(quán)用戶或者超級管理員,從而可以輕而易舉地對系統(tǒng)造成破壞。無論是通過對現(xiàn)有的工業(yè)系統(tǒng)安全案例進行充分總結(jié),還是從信息安全的角度來看,從系統(tǒng)內(nèi)部發(fā)動的網(wǎng)絡(luò)攻擊往往最為致命,破壞力也最強。因此,有效抵抗來自系統(tǒng)內(nèi)部的攻擊是目前工業(yè)信息系統(tǒng)亟待解決的問題。
眾所周知,數(shù)據(jù)在信息系統(tǒng)中主要有3種形態(tài),分別是存儲狀態(tài)、傳輸狀態(tài)以及使用狀態(tài)。目前,針對前兩種狀態(tài)的數(shù)據(jù),已經(jīng)有成熟的安全技術(shù)與數(shù)據(jù)加密方法對相關(guān)數(shù)據(jù)進行保護,但是,對于正處于使用狀態(tài)的數(shù)據(jù),并沒有成熟、安全的方法進行防護。如果數(shù)據(jù)需要從存儲狀態(tài)或者傳輸狀態(tài)轉(zhuǎn)變成即將參與計算的運行狀態(tài)時,其需要首先離開安全的存儲環(huán)境或者完成數(shù)據(jù)解密后,才能參與計算。如果此時,數(shù)據(jù)進入一個危險的計算環(huán)境或者黑客突然出現(xiàn)并且竊取了相關(guān)數(shù)據(jù),那么之前所有的安全措施都將會失效,數(shù)據(jù)的機密性則會遭到直接的破壞。由此,機密計算技術(shù)應(yīng)運而生。
機密計算是將需要運行的數(shù)據(jù)隔離到一個受信任的執(zhí)行環(huán)境,這個環(huán)境是一個嚴格基于硬件的執(zhí)行環(huán)境,其通過預(yù)留的安全接口,將相關(guān)計算請求放置在安全區(qū)內(nèi)進行運算。通過對處理器和內(nèi)存的保護,機密計算可以保證運行程序在信任環(huán)境內(nèi)安全執(zhí)行,用以防止來自環(huán)境外部對運行代碼的查看以及修改。機密計算可以將數(shù)據(jù)始終保持在強隔離的狀態(tài),從而保障了數(shù)據(jù)的安全性。機密計算可以簡單抽象為一個黑盒,即將運行的數(shù)據(jù)放入受信任執(zhí)行環(huán)境中,相關(guān)應(yīng)用及用戶需要將數(shù)據(jù)參與的運算加載至環(huán)境中,然后環(huán)境將運行結(jié)果返回給應(yīng)用及用戶,整個過程中外部應(yīng)用或用戶拿不到任何數(shù)據(jù),如圖2所示。
圖2 機密計算示意
機密計算的引入,可以解決很多場景中“互不信任”的問題,例如組織之間的數(shù)據(jù)融合、密態(tài)數(shù)據(jù)庫、多方協(xié)同計算、密鑰管理系統(tǒng)、區(qū)塊鏈中智能合約的隱私和機密性保護、AI數(shù)據(jù)訓(xùn)練中隱私保護的問題等。機密計算不僅可以保護高敏感數(shù)據(jù)(醫(yī)療檔案、能源信息)等,還能協(xié)助保護與系統(tǒng)安全相關(guān)的關(guān)鍵數(shù)據(jù)(如訪問控制列表、加密密鑰、口令)。目前,很多廠家都推出了機密計算的解決方案,例如Intel 推出了SGX及MKTME,ARM推出了Trustzone,RISC-V推出了Keystone。SGX的特點是將內(nèi)存地址劃分為安全容器,從而有效保護地址內(nèi)存中數(shù)據(jù)的安全性[6]。Trustzone主要的原理是通過采用時分復(fù)用的CPU,構(gòu)造出兩個界域,將CPU在一段時間內(nèi)專門提供給某個特定的應(yīng)用程序,針對安全性更好的數(shù)據(jù)進行相關(guān)運算,確保了運算數(shù)據(jù)的機密性[7]。
雖然目前各大IT廠商都推出了機密計算相關(guān)產(chǎn)品,但每個解決方案從原理和對外提供的接口都不相同,優(yōu)缺點十分明顯。例如,SGX在安全內(nèi)存中嵌入了單獨的匯編指令集來完成操作,通過EENTER、EEXIT等指令集進行enclave的進出和內(nèi)存操作,這就使得SGX的并發(fā)性較差。而Trustzone主要通過總線對CPU時間片進行切換,它的部署方式則是需要在代碼中完成相關(guān)定義,而交互方式則是需要通過SMC的指令通信,這就造成Trustzone的并發(fā)性比SGX還要差,但是由于Trustzone并不需要單獨的機密計算芯片,所以其在實現(xiàn)機密計算的成本方面要遠低于SGX。由于機密計算涉及的行業(yè)領(lǐng)域眾多,每個應(yīng)用場景對于機密計算的需求也各不相同,所以造成機密計算的兼容性差、維護成本高等問題。為此,華為公司獨立自主研發(fā)出了自己的機密計算產(chǎn)品——secGear,用以解決這些問題。secGear可以通過全新的指令集與訪問控制機制,實現(xiàn)不同程序間的運行隔離性,從而保障關(guān)鍵服務(wù)器的加解密代碼、數(shù)據(jù)的機密性與完整性不被惡意程序破壞。
secGear框架包含Base Layer、Middleware Layer和Service Layer 3層架構(gòu),Service Layer層主要作為密鑰管理服務(wù)。在這一層,secGear可以通過enclave提供相關(guān)增強應(yīng)用,完成可靠的、安全性高的密鑰生成與管理服務(wù),解決很多應(yīng)用程序在密鑰處理時產(chǎn)生的成本高、安全性低的問題,常用的密鑰管理方法雖然可以提供數(shù)據(jù)的加密保護,但是密鑰本身的安全性并沒有充分考慮,secGear可以將密鑰加密后存儲。因此,secGear在這層可以提供密鑰的管理和權(quán)限控制等多重保護。Middleware Layer主要提供了密鑰管理的接口、密鑰交換協(xié)議、安全鏈路協(xié)議。在這一層架構(gòu)中,secGear可以提供非常多的中間件,方便程序員在開發(fā)的過程中實現(xiàn)無感知編程。Base Layer主要作為代碼輔助的中間生成工具,提供數(shù)據(jù)的密封和認證功能。secGear在這一層架構(gòu)中提供enclave接口,使得用戶可以開發(fā)出相應(yīng)的安全程序,secGear架構(gòu)如圖3所示。
圖3 secGear 架構(gòu)示意
在本文中,我們將工業(yè)信息系統(tǒng)的內(nèi)網(wǎng)引入機密計算框架,以期完善傳統(tǒng)的工業(yè)信息系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu),增強安全性[8](見圖4)。
(1)首先找到工業(yè)網(wǎng)絡(luò)中通信線路匯聚最多或者較多的網(wǎng)絡(luò)節(jié)點處,在圖中定義為網(wǎng)關(guān)。這里的網(wǎng)關(guān)在實際的網(wǎng)絡(luò)結(jié)構(gòu)中可以不稱作網(wǎng)關(guān),凡是在網(wǎng)絡(luò)拓撲中處于關(guān)鍵位置的匯聚節(jié)點,都可以等同于這里的網(wǎng)關(guān)。之所以需要找到網(wǎng)關(guān),是因為機密計算服務(wù)器的部署成本較高,為了最大化提高整個網(wǎng)絡(luò)的安全性能,降低部署成本,所以需要將機密計算服務(wù)器部署在整個工業(yè)系統(tǒng)中最為關(guān)鍵的位置。
圖4 基于機密計算的網(wǎng)絡(luò)示意
(2)在網(wǎng)關(guān)處,通過旁路連接的聯(lián)通方式,將搭載secGear的機密計算服務(wù)器與網(wǎng)關(guān)旁路連接。這里之所以不采用直連的網(wǎng)絡(luò)連接方式,是因為機密計算為了保障數(shù)據(jù)安全,需要建立enclave[9],這里會有一些額外的計算開銷與通信開銷,采用旁路連接的方式,可以減少由于機密計算服務(wù)器建立enclave對網(wǎng)絡(luò)可用性造成的影響。
(3)在secGear機密計算框架中存放安全關(guān)鍵參數(shù)以及相關(guān)安全配置信息,例如網(wǎng)絡(luò)通信主密鑰、網(wǎng)絡(luò)存儲主密鑰、訪問控制列表、惡意代碼特征庫、異常行為庫等。
(4)當用戶需要訪問工業(yè)終端時,首先需要向網(wǎng)關(guān)發(fā)送請求,通過內(nèi)網(wǎng)鏈路將相關(guān)請求和參數(shù)傳遞給網(wǎng)關(guān)。
(5)網(wǎng)關(guān)在拿到相關(guān)參數(shù)后,將與安全相關(guān)的參數(shù)送入secGear機密計算服務(wù)器,例如:訪問目標節(jié)點、代碼特征、行為特征等。
(6)secGear在拿到相關(guān)參數(shù)后,在自己的受信任執(zhí)行環(huán)境內(nèi)對預(yù)執(zhí)行代碼進行相關(guān)特征的比對,對用戶的訪問行為與惡意行為特征進行比對,判斷用戶預(yù)訪問的目標節(jié)點是否在其本來具有的訪問控制列表中,完成相關(guān)加密密鑰的讀取,在受信任執(zhí)行環(huán)境內(nèi)完成數(shù)據(jù)的加密計算,最后將相關(guān)計算結(jié)果、行為特征判斷結(jié)果、權(quán)限判斷結(jié)果通過密鑰完成加密后,返回給網(wǎng)關(guān)。
(7)網(wǎng)關(guān)在拿到secGear返回的結(jié)果后,決定是否允許用戶訪問相關(guān)工業(yè)終端。只有所有判斷都符合安全規(guī)則的前提下,才能允許用戶從終端處獲取相關(guān)工業(yè)數(shù)據(jù)或者發(fā)送相關(guān)控制指令。
2.2.1 國密SM3
目前,國家推出了《中華人民共和國密碼法》,推廣商用密碼的應(yīng)用已經(jīng)成為了國家信息安全戰(zhàn)略中的重要一環(huán)。因此,在本文中,我們使用了國產(chǎn)SM3算法,實現(xiàn)了基礎(chǔ)的哈希算法,在secGear機密計算框架內(nèi)自主實現(xiàn)了SM3算法。SM3算法適用于商用密碼應(yīng)用中的數(shù)字簽名和驗證,是在SHA-256基礎(chǔ)上改進實現(xiàn)的一種算法。其采用Merkle-Damgard結(jié)構(gòu),消息長度為512位,摘要值長度為256位[10],SM3算法2012年被采納為行業(yè)標準,2016年正式上升為國標,相關(guān)信息如表1所示[11]。由表1可以看出,國密算法的實現(xiàn)已經(jīng)是國家相關(guān)信息安全戰(zhàn)略中至關(guān)重要的一環(huán)。
2.2.2 基于secGear框架的設(shè)計與實現(xiàn)
本文采用MySQL作為數(shù)據(jù)庫產(chǎn)品,所有設(shè)計到隱私的字段均首先在secGear機密計算框架中進行加密,再將加密后的密文存儲至數(shù)據(jù)庫中,用以保護數(shù)據(jù)的安全性。flask sqlalchemy在flask框架內(nèi)使用MySQL命令對數(shù)據(jù)庫進行增、刪、改、查等操作。本文通過將一些關(guān)鍵步驟調(diào)用secGear框架,最大限度平衡了安全性與可用性。通過C++在secGear框架中編寫了SM3、RSA等基礎(chǔ)操作組件,部分實現(xiàn)代碼如圖5所示。
表1 SM3對應(yīng)的國家/行業(yè)標準
在現(xiàn)有的工業(yè)系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)中,一旦內(nèi)部網(wǎng)絡(luò)發(fā)起安全攻擊,整個工業(yè)系統(tǒng)安全性將會遭受致命打擊。針對內(nèi)部特權(quán)用戶、數(shù)據(jù)的監(jiān)聽與篡改以及惡意代碼感染等攻擊方法,現(xiàn)有的工業(yè)系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)不能有效抵抗。現(xiàn)提出基于機密計算技術(shù)的工業(yè)系統(tǒng)網(wǎng)絡(luò)安全結(jié)構(gòu),能夠有效抵抗這幾類攻擊,相關(guān)安全性分析如下。
2.3.1 特權(quán)用戶攻擊
一旦超級管理員或者相關(guān)特權(quán)用戶轉(zhuǎn)變成黑客,即可試圖發(fā)起對內(nèi)網(wǎng)系統(tǒng)的攻擊。在現(xiàn)有的工業(yè)系統(tǒng)中,用戶的訪問控制列表、行為特征庫、惡意代碼庫都可以被特權(quán)用戶更改,從而使現(xiàn)有的安全措施失效,完成內(nèi)網(wǎng)攻擊。在該安全架構(gòu)中,由于所有安全關(guān)鍵信息秘密保存在secGear服務(wù)器中,特權(quán)用戶對secGear服務(wù)器保存的安全信息不能讀取,更不能更改,最大限度限制了特權(quán)用戶的權(quán)利。因此,這種網(wǎng)絡(luò)安全結(jié)構(gòu)可以抵抗特權(quán)用戶攻擊。
2.3.2 內(nèi)部惡意代碼攻擊
在現(xiàn)有的安全案例中,網(wǎng)關(guān)可以通過U盤、建立的私有VPN通道感染外部的惡意代碼,例如震網(wǎng)病毒、網(wǎng)絡(luò)蠕蟲病毒等。在現(xiàn)有的工業(yè)系統(tǒng)中,一旦內(nèi)部感染了惡意代碼,惡意代碼通過提權(quán)等方式可以首先破壞惡意代碼的特征庫,從而完成對整個內(nèi)網(wǎng)的絕對控制,讀取相關(guān)機密數(shù)據(jù)。在此網(wǎng)絡(luò)安全結(jié)構(gòu)中,由于惡意代碼存儲在secGear中,因此惡意代碼庫不能被讀取,更不能被非法篡改。其次,由于機密數(shù)據(jù)存儲在secGear中,因此外部應(yīng)用程序無法讀取到相關(guān)內(nèi)存地址,從而保障了機密數(shù)據(jù)的安全性。因此,這種網(wǎng)絡(luò)安全結(jié)構(gòu)可以抵抗內(nèi)部惡意代碼攻擊。
圖5 secGear內(nèi)SM3部分實現(xiàn)代碼
2.3.3 數(shù)據(jù)的監(jiān)聽與篡改
現(xiàn)有的工業(yè)系統(tǒng)都是明文存儲數(shù)據(jù)的加密通信密鑰,如果黑客進入到了系統(tǒng)內(nèi)部,獲取了相關(guān)通信密鑰,那么他就可以完成對內(nèi)網(wǎng)數(shù)據(jù)的監(jiān)聽與篡改,從而達到對工業(yè)系統(tǒng)完成破壞的目的。在此網(wǎng)絡(luò)安全結(jié)構(gòu)里針對數(shù)據(jù)的加密/解密密鑰機密存儲在secGear中,由于其從不離開相關(guān)受信任的執(zhí)行環(huán)境,因此,黑客無法拿到相關(guān)密鑰,從而不能完成對內(nèi)網(wǎng)數(shù)據(jù)的監(jiān)聽與篡改。
基于機密計算的工業(yè)信息系統(tǒng)網(wǎng)絡(luò)安全結(jié)構(gòu),通過首選國產(chǎn)的機密計算技術(shù)secGear來輔助完成網(wǎng)絡(luò)拓撲結(jié)構(gòu)的部署,同時實現(xiàn)了過程SM3算法替代了其他哈希算法。其次,通過采用旁路連接的網(wǎng)絡(luò)通信方式,最大限度保障了工業(yè)信息系統(tǒng)的可用性,最后通過安全性分析,證明了該網(wǎng)絡(luò)安全結(jié)構(gòu)可以有效抵抗來自內(nèi)部系統(tǒng)的特權(quán)用戶攻擊、惡意代碼攻擊以及數(shù)據(jù)的監(jiān)聽與篡改,證明了該網(wǎng)絡(luò)安全結(jié)構(gòu)相較于之前的傳統(tǒng)拓撲結(jié)構(gòu)可以提高網(wǎng)絡(luò)安全性。未來的研究將會繼續(xù)完善機密計算的使用,爭取能夠為推廣機密計算技術(shù)提供理論依據(jù)。