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