徐延明,許 艾,劉 剛,李 維,周立東
(1.北京四方繼保自動(dòng)化股份有限公司,北京 100085;2.北京四方繼保工程技術(shù)有限公司,北京 100085)
近幾年,隨著網(wǎng)絡(luò)技術(shù)和軟件技術(shù)的飛速發(fā)展,特別是電網(wǎng)公司對(duì)自主可控操作系統(tǒng)的不斷需求,直接影響電網(wǎng)企業(yè)核心業(yè)務(wù)系統(tǒng)迭代更新的進(jìn)度和安全[1-3]。隨著電網(wǎng)公司加大對(duì)電力基礎(chǔ)設(shè)施的投資,變電站一、二次設(shè)備國產(chǎn)化也在穩(wěn)步推進(jìn),電力二次系統(tǒng)的安全性也越來越受到重視[4-6],因此,自主可控的操作系統(tǒng)必須具有高度可信性和安全性。Linux操作系統(tǒng)的全球性、開放性為電力系統(tǒng)提供了極大便利,基于開源的Linux系統(tǒng)研發(fā)自主可控的操作系統(tǒng)是各大國產(chǎn)操作系統(tǒng)公司首先考慮的方案[7]。
電力監(jiān)控系統(tǒng)是國家電網(wǎng)公司重要系統(tǒng)之一,已建成以網(wǎng)絡(luò)專用、橫向隔離及邊界防護(hù)為主的網(wǎng)絡(luò)安全縱深防護(hù)體系。而近年來,網(wǎng)絡(luò)攻擊手段層出不窮,以“震網(wǎng)”“火焰”[8-9]等惡意代碼為主要技術(shù)手段的攻擊對(duì)能源等工控系統(tǒng)造成了極大危害,其破壞力極強(qiáng),破壞過程也非常隱蔽,能夠突破現(xiàn)有的“隔離、檢測、查殺”等安全防護(hù)措施[10]。必須針對(duì)以上網(wǎng)絡(luò)安全漏洞進(jìn)行有效的防護(hù),否則會(huì)造成設(shè)備誤動(dòng)、拒動(dòng),嚴(yán)重威脅電網(wǎng)的安全穩(wěn)定運(yùn)行。
本文提出基于自主可控操作系統(tǒng)平臺(tái)的電力監(jiān)控系統(tǒng)關(guān)鍵程序安全防護(hù)機(jī)制,基于國密算法與證書對(duì)電力監(jiān)控系統(tǒng)的進(jìn)程、動(dòng)態(tài)庫及組件等實(shí)現(xiàn)安全調(diào)用與驗(yàn)證,從而保證系統(tǒng)文件、數(shù)據(jù)的完整性和可用性。
近幾年,由于國內(nèi)外安全形勢日益嚴(yán)峻,我國越來越重視電力基礎(chǔ)設(shè)施的安全,電力監(jiān)控系統(tǒng)安全防護(hù)是以“安全分區(qū)、網(wǎng)絡(luò)專用、橫向隔離、縱向認(rèn)證”[11]為防護(hù)策略,其核心內(nèi)容是加強(qiáng)邊界防護(hù)。采用基于邊界保護(hù)的物理隔離無法有效抵抗高級(jí)病毒軟件的入侵[12]。有關(guān)文獻(xiàn)在電力監(jiān)控系統(tǒng)通信安全方面進(jìn)行了不少的研究[13-14],為后來研究者提供了大量的理論依據(jù)與實(shí)踐成果,但電力監(jiān)控系統(tǒng)本體安全方面的研究仍很少見。
國產(chǎn)自主可控操作系統(tǒng)大多基于Linux內(nèi)核構(gòu)建,ELF作為Linux下最主要的可執(zhí)行二進(jìn)制文件格式成為了病毒及各種惡意代碼的攻擊目標(biāo)。入侵通過直接修改ELF文件的方法來實(shí)現(xiàn),而Linux系統(tǒng)本身并不會(huì)對(duì)執(zhí)行的代碼進(jìn)行完整性和合法性檢測,因而讓很多病毒程序以及木馬程序有機(jī)可乘。電力監(jiān)控系統(tǒng)程序、動(dòng)態(tài)庫、組件等基于代碼簽名驗(yàn)證是一種能夠有效防止病毒以及其他惡意代碼入侵的方法。因此,提出了一種基于ELF 文件格式的代碼簽名驗(yàn)證機(jī)制,通過提供更加靈活的分級(jí)驗(yàn)證方式,進(jìn)一步提高驗(yàn)證效率,并且使系統(tǒng)在安全性與效率方面取得平衡。以自主可控操作系統(tǒng)為平臺(tái),采用操作系統(tǒng)內(nèi)核對(duì)文件簽名驗(yàn)證的安全機(jī)制,同時(shí)結(jié)合國產(chǎn)密碼算法與調(diào)度數(shù)字證書安全技術(shù),可實(shí)現(xiàn)電力監(jiān)控系統(tǒng)本體安全。
近幾年,中國密碼管理局相繼頒布了一系列國產(chǎn)密碼算法標(biāo)準(zhǔn),一些研究機(jī)構(gòu)、大學(xué)及公司企業(yè)也依據(jù)標(biāo)準(zhǔn)研發(fā)了相應(yīng)的算法,其中比較常用的有SM2、SM3、SM4 算法[15-17]等。這些算法都屬于商業(yè)密碼算法,其中SM2 是非對(duì)稱算法,SM3是哈希算法,SM4是對(duì)稱算法。
SM2 算法有多種用法,其中數(shù)字簽名算法應(yīng)用最為廣泛,具體應(yīng)用是由簽名者通過算法對(duì)數(shù)據(jù)生成簽名值,并由驗(yàn)證者通過算法驗(yàn)證簽名值的真實(shí)性。簽名者擁有私鑰和公鑰各一個(gè),私鑰用來產(chǎn)生簽名,公鑰用來驗(yàn)證簽名。驗(yàn)證者獲得簽名者的公鑰可以驗(yàn)證簽名值。SM2 簽名算法的應(yīng)用要與SM3算法配合實(shí)現(xiàn),可以通過SM3算法對(duì)待簽名數(shù)據(jù)包計(jì)算雜湊值,再利用SM2 簽名算法對(duì)雜湊值計(jì)算簽名值。圖1 是SM2 算法數(shù)字簽名驗(yàn)證過程。
圖1 數(shù)字簽名及驗(yàn)證過程
調(diào)度證書系統(tǒng)是電力系統(tǒng)關(guān)鍵基礎(chǔ)安全系統(tǒng),能夠?yàn)殡娏ο到y(tǒng)中的用戶、關(guān)鍵網(wǎng)絡(luò)設(shè)備、服務(wù)器提供數(shù)字認(rèn)證服務(wù)。調(diào)度證書為電力系統(tǒng)與網(wǎng)絡(luò)關(guān)鍵環(huán)節(jié)實(shí)現(xiàn)高強(qiáng)度的身份認(rèn)證和安全數(shù)據(jù)傳輸提供了安全技術(shù)保證。圖2所示為調(diào)度證書系統(tǒng)架構(gòu)。
圖2 調(diào)度證書系統(tǒng)
調(diào)度證書系統(tǒng)是基于PKI(公鑰基礎(chǔ)設(shè)施體系)[18]中的一個(gè)電力行業(yè)應(yīng)用,而PKI是用來實(shí)現(xiàn)基于公鑰密碼體制的密鑰和證書的產(chǎn)生、管理、存儲(chǔ)、分發(fā)和撤銷等功能。本文基于調(diào)度證書系統(tǒng)提供的調(diào)度證書與國密算法相結(jié)合來實(shí)現(xiàn)電力監(jiān)控系統(tǒng)的本體安全,即在自主可控操作系統(tǒng)平臺(tái)上,采用操作系統(tǒng)內(nèi)核安全機(jī)制實(shí)現(xiàn)對(duì)電力監(jiān)控系統(tǒng)中的程序、動(dòng)態(tài)庫及組件的安全簽名與驗(yàn)證,確保電力監(jiān)控系統(tǒng)安全的啟動(dòng)與運(yùn)行,保證電力監(jiān)控系統(tǒng)的完整性、可追塑性。
近兩年,隨著電力二次系統(tǒng)的升級(jí)改造,國產(chǎn)自主可控操作系統(tǒng)受到電網(wǎng)公司的青睞并被大力推廣應(yīng)用,因此操作系統(tǒng)的安全機(jī)制也越來越被重視。在信息安全領(lǐng)域,數(shù)據(jù)的完整性、機(jī)密性及有效性是安全通信的三要素,可利用公鑰密碼安全機(jī)制來解決機(jī)密性、完整性和有效性問題。
本章主要從操作系統(tǒng)文件的代碼簽名驗(yàn)證、基于調(diào)度證書身份標(biāo)識(shí)認(rèn)證技術(shù)兩方面闡述基于自主可控操作系統(tǒng)的軟件保護(hù)技術(shù)。
國內(nèi)自主可控安全操作系統(tǒng)的廠家比較多,本節(jié)簡要介紹在電力領(lǐng)域應(yīng)用較廣泛的凝思安全操作系統(tǒng),其與普通Linux系統(tǒng)在安全性、功能方面具有不同的安全特征。
1)四權(quán)分立系統(tǒng)管理
傳統(tǒng)Linux操作系統(tǒng)由一個(gè)超級(jí)用戶管理,它具有超越系統(tǒng)所有限制的特權(quán)。凝思安全操作系統(tǒng)去除了超級(jí)用戶,將系統(tǒng)管理功能分配給4個(gè)固有用戶完成,即系統(tǒng)管理員、安全管理員、網(wǎng)絡(luò)管理員和審計(jì)管理員。
2)可信進(jìn)程白名單技術(shù)
凝思安全操作系統(tǒng)也研發(fā)了可信進(jìn)程白名單安全技術(shù)。其借鑒可信計(jì)算技術(shù)原理,以軟可信根的方式度量操作系統(tǒng)上運(yùn)行的應(yīng)用程序,具有白名單屬性的進(jìn)程可正確運(yùn)行,有效杜絕了病毒入侵。
3)熱備與互備
凝思安全操作系統(tǒng)提供多種熱備、互備及服務(wù)自動(dòng)切換機(jī)制。當(dāng)單點(diǎn)服務(wù)器發(fā)生故障時(shí),互備/熱備服務(wù)器能夠自動(dòng)接管相應(yīng)的服務(wù),保證整個(gè)網(wǎng)絡(luò)系統(tǒng)服務(wù)的連續(xù),提高災(zāi)害發(fā)生情況下的可生存性。
凝思安全操作系統(tǒng)在行業(yè)應(yīng)用領(lǐng)域提供了更多的安全特性,借鑒了等保2.0 規(guī)范的有關(guān)要求,更加適合在國內(nèi)電力能源等領(lǐng)域的應(yīng)用。
Linux ELF 文件格式是一種用于二進(jìn)制文件、可執(zhí)行文件、目標(biāo)代碼、共享庫的標(biāo)準(zhǔn)文件格式。ELF 文件格式靈活、可拓展、跨平臺(tái),它支持不同的字節(jié)序和地址大小,因此不會(huì)排除任何特定的CPU和指令集體系結(jié)構(gòu)。ELF文件能滿足可鏈接、可加載、可執(zhí)行三大基本功能。ELF 文件由ELF 文件頭、程序頭部表、段、段名字符串表和段頭部表組成,程序頭部表用于描述0個(gè)或者多個(gè)內(nèi)存段,段頭部表用于描述0 個(gè)或多個(gè)段。ELF文件結(jié)構(gòu)如圖3所示。
圖3 ELF文件結(jié)構(gòu)
通過圖3 可以看出,常規(guī)的ELF 文件沒有簽名數(shù)據(jù)段,本文根據(jù)安全需求設(shè)計(jì)出如圖4所示的安全ELF文件格式,即在ELF文件尾增加簽名數(shù)據(jù)段,通過增加簽名數(shù)據(jù)段,在程序啟動(dòng)或加載過程中對(duì)程序的完整性進(jìn)行安全驗(yàn)證,符合安全規(guī)則的程序允許啟動(dòng)運(yùn)行。
圖4 ELF文件安全結(jié)構(gòu)
電力監(jiān)控系統(tǒng)的核心程序和模塊均以ELF 文件的方式存在。為確保系統(tǒng)的完整性、安全性,基于調(diào)度證書和國密算法對(duì)給定的可執(zhí)行程序進(jìn)行簽名加固,同時(shí)應(yīng)用Linux內(nèi)核的安全機(jī)制對(duì)可執(zhí)行程序的啟動(dòng)進(jìn)行安全驗(yàn)證,只有合法、安全與完整的程序才可以啟動(dòng)。
3.3.1 基于數(shù)字證書簽名的流程設(shè)計(jì)
為了實(shí)現(xiàn)電力監(jiān)控系統(tǒng)關(guān)鍵程序、模塊及動(dòng)態(tài)庫的安全可信,采用調(diào)度證書系統(tǒng)簽發(fā)各環(huán)節(jié)證書,確保環(huán)節(jié)節(jié)點(diǎn)身份的真實(shí)性,同時(shí)結(jié)合國密算法SM2、SM3 對(duì)關(guān)鍵文件實(shí)施簽名,確保電力監(jiān)控系統(tǒng)核心模塊程序的完整性、安全性?;谧C書文件簽名流程主要包括4 個(gè)部分,如圖5所示。
圖5所示的文件簽名過程總體流程如下:
圖5 文件簽名流程
1)采用調(diào)度證書系統(tǒng)為自主可控操作系統(tǒng)平臺(tái)簽發(fā)平臺(tái)證書,平臺(tái)證書主要用于標(biāo)識(shí)操作系統(tǒng)平臺(tái)身份的真實(shí)性,同時(shí)也可以驗(yàn)證在平臺(tái)上運(yùn)行的電力監(jiān)控系統(tǒng)身份的真實(shí)性。
2)電力監(jiān)控系統(tǒng)若要在自主可控操作系統(tǒng)平臺(tái)上安全運(yùn)行也必須簽發(fā)標(biāo)識(shí)自己身份的證書,因此可基于操作平臺(tái)證書為二級(jí)證書簽發(fā)電力監(jiān)控系統(tǒng)證書,電力監(jiān)控系統(tǒng)中的核心程序、模塊及動(dòng)態(tài)庫均采用監(jiān)控系統(tǒng)證書簽名,實(shí)現(xiàn)文件及整個(gè)監(jiān)控系統(tǒng)的完整性和安全性。
3)采用國密算法SM3 對(duì)文件的程序代碼段進(jìn)行散列計(jì)算,通過SM2 算法的私鑰對(duì)散列值進(jìn)行簽名得到簽名值,把簽名值作為單獨(dú)的節(jié)附加到ELF文件的尾部。
4)將電力監(jiān)控系統(tǒng)公鑰證書作為單獨(dú)的節(jié)附加到ELF 文件的尾部,用于驗(yàn)證步驟3)中生成的簽名值。
上述4 個(gè)步驟詳細(xì)闡述了ELF 文件的簽名過程。另外,為了驗(yàn)證ELF 文件尾附加的電力監(jiān)控系統(tǒng)公鑰證書的真實(shí)性,則需操作系統(tǒng)平臺(tái)證書對(duì)電力監(jiān)控系統(tǒng)公鑰證書進(jìn)行驗(yàn)證,確保電力監(jiān)控系統(tǒng)關(guān)鍵程序、模塊及文件在操作系統(tǒng)平臺(tái)中安全、完整地運(yùn)行。
3.3.2 基于數(shù)字證書驗(yàn)證流程設(shè)計(jì)
操作系統(tǒng)執(zhí)行或加載ELF 文件時(shí),內(nèi)核首先將ELF文件載入內(nèi)存,解析出文件被保護(hù)信息(代碼、數(shù)據(jù)等)對(duì)應(yīng)的簽名值與監(jiān)控系統(tǒng)公鑰證書,內(nèi)核中的驗(yàn)證模塊計(jì)算出被保護(hù)信息的摘要,再使用監(jiān)控系統(tǒng)公鑰證書對(duì)簽名值進(jìn)行驗(yàn)證,若驗(yàn)證成功,則ELF 文件未被篡改,ELF 文件的完整性是可以保證的。另一方面,內(nèi)核中的驗(yàn)證模塊還需要驗(yàn)證ELF 文件中監(jiān)控系統(tǒng)公鑰證書的合法性和真實(shí)性,同樣內(nèi)核驗(yàn)證模塊使用內(nèi)核信任的內(nèi)置操作系統(tǒng)平臺(tái)證書對(duì)監(jiān)控系統(tǒng)公鑰證書中的簽名值進(jìn)行驗(yàn)證,若驗(yàn)證成功,則說明ELF 文件是可信的、安全的,內(nèi)核便開始啟動(dòng)并運(yùn)行這個(gè)可執(zhí)行程序。
在ELF 文件驗(yàn)證模塊中,還有以下3 點(diǎn)需要注意:格式檢查,判斷該二進(jìn)制文件是否符合ELF 格式,跳過所有非ELF 格式的文件;自身簽名驗(yàn)證,如果文件符合ELF格式,則按ELF格式取出其中附帶的數(shù)字簽名并驗(yàn)證;依賴簽名驗(yàn)證,如果ELF 文件依賴其他(共享對(duì)象)文件,則對(duì)其所有的依賴進(jìn)行數(shù)字簽名驗(yàn)證。
在ELF文件運(yùn)行之前,還需對(duì)文件進(jìn)行驗(yàn)證,若ELF 文件沒有被簽名或者簽名驗(yàn)證失敗則應(yīng)停止運(yùn)行本程序,若簽名驗(yàn)證成功則可以正常運(yùn)行。圖6所示為ELF文件驗(yàn)證流程。
圖6 文件驗(yàn)證流程
為了更好地論證上述技術(shù)方案的可行性,以下從不同角度進(jìn)行實(shí)驗(yàn)驗(yàn)證。
本實(shí)驗(yàn)主要用于驗(yàn)證兩種情況的ELF 文件,一種是帶有正確簽名的ELF 文件可以正常運(yùn)行;另一種是ELF文件未簽名,運(yùn)行失敗。根據(jù)3.2.2節(jié)所述的驗(yàn)證流程,帶簽名的ELF 文件通過驗(yàn)證并正常運(yùn)行,如圖7所示。
圖7 ELF文件正常運(yùn)行
沒有簽名的ELF 文件未通過驗(yàn)證,打印錯(cuò)誤信息,并中斷程序的執(zhí)行,如圖8所示。
圖8 ELF文件運(yùn)行失敗
本文采用了國密算法SM2和SM3對(duì)文件的完整性進(jìn)行保護(hù)。通過查閱有關(guān)文獻(xiàn)可以得知,王小云教授等公布了MD5碰撞的新方法,利用該方法用普通PC機(jī)在幾分鐘內(nèi)即可找到MD5的碰撞,因此MD5已不再安全[19-20]。采用國密算法SM2和SM3 比國際算法RSA 與MD5 在安全性與效率方面都有很大提升。本文對(duì)RSA、SM2、MD5 及SM3算法基于文件簽名進(jìn)行多次測試,結(jié)果如表1所示。
表1 算法比較
通過表1 可以看出,RSA 公鑰算法的密鑰長度有128/256字節(jié),輸出數(shù)據(jù)的長度為128/256字節(jié),但在安全性和執(zhí)行速度方面都比較低;MD5的執(zhí)行速度比較快,但它的安全性比較低。因此,本文采用SM2和SM3算法,在安全性和運(yùn)算效率方面均有一定的優(yōu)勢。
操作系統(tǒng)調(diào)用ELF 文件時(shí),首先要驗(yàn)證ELF文件是否完整、可信,即帶簽名信息的ELF 文件與不帶簽名信息ELF 文件在啟動(dòng)時(shí)的時(shí)間開銷存在差異,如表2所示。
表2 ELF文件執(zhí)行時(shí)間比較
根據(jù)表2可以看出,沒有簽名驗(yàn)證的執(zhí)行時(shí)間基本穩(wěn)定在90~100 μs,加入簽名驗(yàn)證機(jī)制后,系統(tǒng)調(diào)用的執(zhí)行時(shí)間與程序代碼段長度相關(guān),比如tar 程序的代碼段特別長,因此需要更長的時(shí)間來分配內(nèi)存、計(jì)算哈希并驗(yàn)證。通過實(shí)驗(yàn)結(jié)果可以得出,基于自主可控操作系統(tǒng)上運(yùn)行的電力監(jiān)控系統(tǒng)的關(guān)鍵程序、模塊及動(dòng)態(tài)庫可以實(shí)施簽名,在這些模塊啟動(dòng)時(shí),由于加入了簽名信息會(huì)有一定的延時(shí),但程序啟動(dòng)并不是很頻繁,因此在工程應(yīng)用中可參考對(duì)關(guān)鍵模塊、動(dòng)態(tài)庫進(jìn)行簽名。
本文從自主可控操作系統(tǒng)文件的代碼簽名驗(yàn)證、為操作系統(tǒng)與電力監(jiān)控系統(tǒng)簽發(fā)身份證書以及基于國密算法與調(diào)度證書相結(jié)合的方式共同實(shí)施對(duì)電力監(jiān)控系統(tǒng)的關(guān)鍵程序、模塊及動(dòng)態(tài)庫文件簽名,確保在自主可控操作系統(tǒng)平臺(tái)上運(yùn)行的電力監(jiān)控系統(tǒng)的完整性及安全性。未采用簽名認(rèn)證的電力監(jiān)控系統(tǒng)模塊、被非法篡改的文件、被非調(diào)度證書系統(tǒng)簽發(fā)的證書簽名的模塊都將被操作系統(tǒng)內(nèi)核程序攔截,不能啟動(dòng)執(zhí)行。
根據(jù)實(shí)驗(yàn)結(jié)果,采用國密SM2、SM3 算法與調(diào)度證書可以確保電力監(jiān)控系統(tǒng)關(guān)鍵程序和模塊的完整性、安全性及可用性。帶簽名文件在啟動(dòng)執(zhí)行時(shí)會(huì)有一定的延時(shí),但由于程序啟動(dòng)并不頻繁,因此,在實(shí)際工程實(shí)施過程中可考慮對(duì)關(guān)鍵程序和模塊實(shí)施簽名認(rèn)證,以保證電力監(jiān)控系統(tǒng)的本體安全。