孟祥斌,劉笑凱,郝克林
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
近些年計(jì)算機(jī)技術(shù)飛速發(fā)展,同時(shí)信息安全威脅事件大量爆發(fā),信息安全問題被國內(nèi)外各研究人員廣泛關(guān)注。傳統(tǒng)的信息安全防御技術(shù)有防火墻、堵漏洞以及入侵檢測等方式,很難有較大突破。沈昌祥院士提出:網(wǎng)絡(luò)安全最重要的是“安全可信”[1]。我國在“自主研發(fā)”方面實(shí)現(xiàn)了信息系統(tǒng)從硬件到軟件的自主研發(fā)、生產(chǎn)、升級(jí)、維護(hù)的全程可控,但是由于計(jì)算機(jī)體系結(jié)構(gòu)固有的缺點(diǎn)以及軟件可能存在的缺陷,在自主研發(fā)的平臺(tái)下,仍然存在各種不可避免的未知的軟硬件漏洞。因此,本文將運(yùn)用可信技術(shù),遵照可信計(jì)算規(guī)范,自主設(shè)計(jì)可信硬件模塊,擴(kuò)展可信BIOS和操作系統(tǒng)。以可信密碼模塊為信任根,構(gòu)建貫穿硬件層、固件層、操作系統(tǒng)層和應(yīng)用層全過程的信任鏈解決方案,能夠?yàn)閲a(chǎn)化嵌入式計(jì)算平臺(tái)提供有效完整的全信任鏈保護(hù),實(shí)現(xiàn)了信息系統(tǒng)基礎(chǔ)平臺(tái)裝備的“安全可信”。
可信計(jì)算從1983 年開始在國內(nèi)外一直備受學(xué)者們關(guān)注,可信計(jì)算經(jīng)歷了三個(gè)時(shí)代:(1)可信1.0 時(shí)代:容錯(cuò)計(jì)算,其主要采取容錯(cuò)算法和冗余備份等技術(shù)提高大型機(jī)時(shí)代主機(jī)的可靠性[2];(2)可信2.0 時(shí)代:被動(dòng)可信體系,可信2.0 的理念是從硬件層面的可信根出發(fā),建立從可信根到操作系統(tǒng)再到應(yīng)用層面的可信鏈,以此完成可信度量和可信存儲(chǔ)等功能;(3)可信3.0 時(shí)代:主動(dòng)免疫體系[3],可信節(jié)點(diǎn)的建立和與系統(tǒng)的交互是可信3.0的關(guān)鍵,可信3.0 的主動(dòng)監(jiān)控機(jī)制不需要修改現(xiàn)有系統(tǒng)環(huán)境即可提供可信支撐,其還可將可信計(jì)算的定義權(quán)交給屬主自己,為屬主提供極高的自由度,主動(dòng)可信機(jī)制將可信計(jì)算功能封裝在可信子系統(tǒng)中,簡單化和規(guī)范化的可信子系統(tǒng)為開發(fā)工作提供便利,可信3.0 主動(dòng)免疫體系在我國發(fā)展迅速,在很多領(lǐng)域的實(shí)際應(yīng)用效果顯著[4]。本文將主動(dòng)免疫體系的可信計(jì)算技術(shù)應(yīng)用到全國產(chǎn)化嵌入式平臺(tái)。
(1)硬件平臺(tái)設(shè)計(jì)
自主安全國產(chǎn)化平臺(tái)組成框圖如圖1 所示,主要由龍芯2K-1000 處理器模塊[5]、存儲(chǔ)CRTM 的Nor Flash 存儲(chǔ)器、CPLD 控制器、NAND Flash 存儲(chǔ)器、4 個(gè)千兆網(wǎng)口、1 個(gè)串口、高云GW2A-55FPGA 以及基于CCP903T 芯片的TPCM 可信模塊組成。其中,可信硬件模塊通過miniPCIE插卡形式接入板卡,嵌入式平臺(tái)通過串口和網(wǎng)口進(jìn)行調(diào)試。
圖1 自主安全的國產(chǎn)化硬件平臺(tái)組成框圖
(2)基于CCP903T 的可信模塊簡介
此平臺(tái)可信模塊是基于CCP903T 單核芯片設(shè)計(jì)的一款具有高速密碼服務(wù)的密碼模塊,遵循國家密碼管理局關(guān)于PCI 密碼模塊的相關(guān)規(guī)范,支持SM1、SM2、SM3、SM4 等國密算法;支持PCIE x4 lanes,能夠?yàn)楦黝惪尚虐踩脚_(tái)提供多線程、多進(jìn)程和多卡并行處理的高速密碼運(yùn)算服務(wù),其可以提供數(shù)字簽名/驗(yàn)證、非對(duì)稱/對(duì)稱加解密、數(shù)據(jù)完整性校驗(yàn)、真隨機(jī)數(shù)生成、密鑰生成及管理等功能,可以保證敏感數(shù)據(jù)的機(jī)密性、真實(shí)性、完成性和抗抵賴性,此可信模塊滿足國產(chǎn)化自主安全、性能高、成本低等原則[6]。
基于龍芯2K-1000 CPU 的國產(chǎn)化嵌入式可信平臺(tái)的軟件設(shè)計(jì)如圖2 所示。
圖2 軟件設(shè)計(jì)架構(gòu)
2.2.1 可信啟動(dòng)
嵌入式系統(tǒng)上電后,首先會(huì)執(zhí)行BIOS 程序,進(jìn)行硬件初始化,建立內(nèi)存映射圖,將系統(tǒng)配置到理想狀態(tài);然后再讀取內(nèi)核映像文件,并寫入內(nèi)存;最后跳入內(nèi)核入口進(jìn)行嵌入式操作系統(tǒng)的啟動(dòng)[7]。嵌入式系統(tǒng)存儲(chǔ)器具有固態(tài)非易失性,如EEROM和Flash 等,大多數(shù)情況下內(nèi)核映像和根文件系統(tǒng)應(yīng)用其存儲(chǔ)[8]。
此國產(chǎn)化嵌入式平臺(tái)經(jīng)過改造后加入一個(gè)存儲(chǔ)CRTM和標(biāo)準(zhǔn)摘要值的Nor Flash、CPLD 控制器以及TPCM 可信模塊,通過CPLD 控制器控制整個(gè)可信啟動(dòng)過程的各個(gè)階段,也就是Nor Flash、CPLD、TPCM 以及CPU 分別在不同時(shí)刻取得控制權(quán),四者在不同時(shí)刻分別作為運(yùn)算的核心部件。系統(tǒng)上電后CPLD 控制器首先取得控制權(quán),使CPU 與外設(shè)之間的連接都斷開,阻止CPU 啟動(dòng),先啟動(dòng)TPCM 模塊和Nor Flash,運(yùn)行CRTM 可信根,CRTM 讀取內(nèi)存中預(yù)存的TPCM 命令庫并調(diào)用TPCM 中的SM-3算法引擎,將命令庫發(fā)給TPCM,TPCM 對(duì)收到的數(shù)據(jù)進(jìn)行度量并將結(jié)果擴(kuò)展到PCR0。CRTM 讀取PCR0 中的摘要值,并與片內(nèi)預(yù)存的標(biāo)準(zhǔn)摘要值進(jìn)行對(duì)比,如果對(duì)比結(jié)果相同則繼續(xù)啟動(dòng),否則停止。然后CRTM 會(huì)以同樣的方式對(duì)標(biāo)準(zhǔn)值擴(kuò)展庫、BIOS 程序、Bootloader 引導(dǎo)加載程序進(jìn)行度量,若Bootloader 可信則CPLD 控制器復(fù)位CPU,運(yùn)行Bootloader,CPU 獲取控制權(quán)。
隨后Bootloader 依次調(diào)用TPCM 對(duì)內(nèi)核映像和根文件系統(tǒng)進(jìn)行度量,若結(jié)果都可信,說明內(nèi)核代碼沒有被篡改過,則可以啟動(dòng)嵌入式系統(tǒng)內(nèi)核。具體可信啟動(dòng)流程如圖3 所示。
圖3 可信啟動(dòng)流程
2.2.2 可信軟件基
國產(chǎn)化嵌入式平臺(tái)可信啟動(dòng)成功,操作系統(tǒng)開始運(yùn)行,隨后會(huì)有大量程序運(yùn)行和應(yīng)用軟件啟動(dòng),系統(tǒng)運(yùn)行任務(wù)繁重,運(yùn)行環(huán)境復(fù)雜,此后更加容易受到持續(xù)的安全威脅。由于TPCM 安全芯片主要提供安全核心的密碼學(xué)功能,其存儲(chǔ)和計(jì)算能力薄弱,需要可信軟件基TSB代理TPCM 的可信管理功能,支撐系統(tǒng)的可信運(yùn)行環(huán)境??尚跑浖慕M成機(jī)制如圖4 所示。
圖4 可信軟件基TSB 組成機(jī)制
可信軟件基在整個(gè)國產(chǎn)化嵌入式可信平臺(tái)中承擔(dān)著承上啟下的作用,對(duì)上保護(hù)操作系統(tǒng)中運(yùn)行的應(yīng)用程序,對(duì)下調(diào)用TPCM 安全芯片的功能接口并管理TPCM中其他可信資源[9]。
可信軟件基由宿主系統(tǒng)中多個(gè)可信功能軟件互聯(lián)互通構(gòu)成,并不是一個(gè)獨(dú)立系統(tǒng),TSB 包括度量機(jī)制、控制機(jī)制、判定機(jī)制、可信基準(zhǔn)庫和基本信任基等主要部件[10]。其基本信任基由TPCM 的可信根提供,為可信軟件基提供基本可信功能;可信基準(zhǔn)庫為可信度量、控制、管理和判定提供基準(zhǔn)可信資源;TSB 的度量機(jī)制計(jì)算可信計(jì)算平臺(tái)系統(tǒng)應(yīng)用軟件的度量值;根據(jù)度量機(jī)制產(chǎn)生的度量值和系統(tǒng)規(guī)則判定機(jī)制推導(dǎo)其是否可信;根據(jù)度量值、判定結(jié)論和可信基準(zhǔn)庫中的基準(zhǔn)控制策略,控制機(jī)制向TPCM 安全芯片發(fā)送控制指令;支撐機(jī)制為應(yīng)用系統(tǒng)提供可信密碼服務(wù)和其他可信服務(wù),支持可信軟件基對(duì)安全芯片TPCM 的訪問與控制,并將可信資源傳給TSB 內(nèi)部和可信基準(zhǔn)庫,供TSB 使用。
國產(chǎn)化嵌入式操作系統(tǒng)可信啟動(dòng)后,則運(yùn)行實(shí)現(xiàn)業(yè)務(wù)的應(yīng)用軟件,應(yīng)用軟件執(zhí)行需要配置文件和動(dòng)態(tài)庫文件支撐。在運(yùn)行應(yīng)用軟件前可信軟件基的度量機(jī)制調(diào)用TPCM 安全芯片的SM-3 算法引擎對(duì)應(yīng)用程序進(jìn)行度量,將度量結(jié)果擴(kuò)展到PCR 寄存器,可信軟件基的判斷機(jī)制讀取PCR 寄存器中的度量值并與可信基準(zhǔn)庫中標(biāo)準(zhǔn)摘要值進(jìn)行對(duì)比,根據(jù)判定結(jié)果可知應(yīng)用程序是否被篡改,從而控制機(jī)制決定應(yīng)用軟件是否運(yùn)行。運(yùn)行過程中需要加載系統(tǒng)文件時(shí),根據(jù)同樣的度量、判定和控制機(jī)制進(jìn)行文件的可信度量,控制其是否可被加載。
應(yīng)用程序的可信執(zhí)行建立在系統(tǒng)已可信啟動(dòng)進(jìn)入可信運(yùn)行環(huán)境的基礎(chǔ)上,應(yīng)用程序執(zhí)行過程中的可信度量由可信軟件基的控制機(jī)制、度量機(jī)制、判定機(jī)制以及可信基準(zhǔn)庫配合TPCM 可信硬件模塊共同完成。
2.2.3 可信平臺(tái)下文件存儲(chǔ)與操作
傳統(tǒng)國產(chǎn)化嵌入式平臺(tái)的加密文件系統(tǒng)是將密鑰加密存儲(chǔ)在磁盤,這種方式大大降低密鑰管理的安全性,整個(gè)系統(tǒng)缺少可信計(jì)算基,給加解密模塊帶來嚴(yán)重安全威脅[11]。目前國產(chǎn)化可信嵌入式平臺(tái)的文件加解密系統(tǒng)仍存在一定問題,如密鑰存儲(chǔ)的安全性、不能對(duì)文件粒度進(jìn)行加密保護(hù)導(dǎo)致加解密粒度過粗等問題。
下面針對(duì)目前存在的問題設(shè)計(jì)此嵌入式平臺(tái)的密鑰管理模塊、文件加解密服務(wù)和文件完整性校驗(yàn)?zāi)K。
(1)密鑰管理模塊
密鑰的安全管理是影響整個(gè)可信平臺(tái)可靠性的重要因素,此平臺(tái)的密鑰管理采用分層加密思想,可信根中的存儲(chǔ)根密鑰(SRK)作為源頭,建立可信鏈,將可信傳遞給密鑰和文件。可信存儲(chǔ)根密鑰永遠(yuǎn)存放在可信根內(nèi)部,當(dāng)使用SRK 時(shí),必須將需要加密的文件傳到可信根內(nèi)部,加密完成后再將密文對(duì)外傳遞使用。當(dāng)文件需要機(jī)密性保護(hù)時(shí),系統(tǒng)調(diào)用TPCM 的隨機(jī)數(shù)生成器生成存儲(chǔ)密鑰,系統(tǒng)中對(duì)每個(gè)用戶TPCM 會(huì)生成一個(gè)用戶加密密鑰,用戶加密密鑰將存儲(chǔ)密鑰加密,再將加密后的數(shù)據(jù)傳給可信根,用SRK 進(jìn)行加密,再將最終密文存儲(chǔ)到底層文件系統(tǒng)。此密鑰管理方式是用SRK 保護(hù)用戶加密密鑰,使用用戶加密密鑰保護(hù)存儲(chǔ)密鑰。此分層密鑰管理模式提高了密鑰存儲(chǔ)的可靠性與安全性。密鑰管理流程如圖5 所示。
圖5 密鑰管理流程圖
(2)文件加解密模塊
此國產(chǎn)化嵌入式平臺(tái)的文件加解密服務(wù)采用SM4 對(duì)稱加密算法。文件需要機(jī)密性保護(hù)時(shí),用戶調(diào)用TPCM中SM4 算法引擎,并與密鑰管理模塊交互獲得存儲(chǔ)密鑰,文件加解密模塊將加密后的文件密文存儲(chǔ)在底層文件系統(tǒng)。加解密模塊最重要的就是保護(hù)存儲(chǔ)密鑰的安全性,本文采用分層密鑰管理的方式保證密鑰安全性。
(3)文件完整性校驗(yàn)?zāi)K
完整性校驗(yàn)采用HMAC 機(jī)制實(shí)現(xiàn),HMAC 是散列函數(shù)消息碼鑒別機(jī)制。此平臺(tái)HMAC 機(jī)制通過采用TPCM中SM3 雜湊算法和存儲(chǔ)密鑰來實(shí)現(xiàn)。
2.2.4 I/O 口可信認(rèn)證
I/O 口的可信訪問主要基于身份認(rèn)證機(jī)制和訪問控制機(jī)制[12],用戶只有通過身份認(rèn)證機(jī)制后,才能通過訪問控制機(jī)制進(jìn)行I/O 口的使用。此平臺(tái)的I/O 口主要包括網(wǎng)卡、顯示屏、LED 燈、開關(guān)機(jī)鍵、身份認(rèn)證口、主備按鍵、串口以及銷毀鍵等。I/O 口的可信訪問流程如圖6所示。
圖6 I/O 口可信訪問流程
(1)身份認(rèn)證機(jī)制
傳統(tǒng)的身份認(rèn)證一般是通過“用戶名+密碼”的方式[13],一旦密碼丟失,系統(tǒng)中重要信息就會(huì)被攻擊者竊取或篡改,此國產(chǎn)化平臺(tái)采用USB 身份鑰匙配合TPCM模塊進(jìn)行身份認(rèn)證,USB 身份鑰匙中包含用戶ID、用戶訪問權(quán)限以及用于身份認(rèn)證的私鑰,身份認(rèn)證私鑰存儲(chǔ)在TPCM 模塊內(nèi)存中,具體身份認(rèn)證流程如下:
①USB 身份鑰匙插入此平臺(tái),TSB 調(diào)用TPCM 中SM2算法引擎對(duì)USB 中存儲(chǔ)的身份信息進(jìn)行可信度量,若度量值與基準(zhǔn)值不匹配則停止訪問;
②確認(rèn)身份信息沒有被篡改,TPCM 的隨機(jī)數(shù)生成器生成一串隨機(jī)數(shù);
③TPCM 用SM4 算法將隨機(jī)數(shù)進(jìn)行加密,生成密文C;
④TPCM 分別從USB和內(nèi)存中讀取身份認(rèn)證私鑰合并成完成私鑰;
⑤用身份認(rèn)證私鑰對(duì)密文C 解密,若解密成功則身份認(rèn)證成功;
⑥訪問控制機(jī)制讀取USB 中的用戶訪問權(quán)限信息并存儲(chǔ)。
(2)訪問控制機(jī)制
訪問控制機(jī)制主要限制非法使用戶和越權(quán)訪問用戶[14],訪問控制一般有3 種類型,基于身份的訪問控制(DAC)、基于規(guī)則的訪問控制(MAC)和基于角色的訪問控制(RBAC)。DAC 靈活性高,但控制能力差;MAC 控制能力強(qiáng),但靈活性低[15];綜合考慮本平臺(tái)采用基于角色的訪問控制。此平臺(tái)用戶分為非法用戶、普通用戶和管理員用戶,非法用戶禁止訪問I/O 口,普通用戶也稱為受限用戶,其只能訪問一部分I/O 口,此平臺(tái)用戶分類以及訪問權(quán)限劃分如表1 所示。
表1 用戶訪問權(quán)限表
(3)銷毀鍵可信訪問具體實(shí)現(xiàn)
銷毀鍵在此平臺(tái)I/O 口中屬于高安全級(jí)別按鍵,不能隨意將密碼資源銷毀。因此需要訪問控制機(jī)制進(jìn)行管控。具體流程如下:
①銷毀鍵按下,銷毀線程檢測到銷毀鍵按下操作;
②鉤子函數(shù)截獲程序的執(zhí)行,進(jìn)行用戶身份的確認(rèn);
③若為管理員用戶則放行此操作,否則禁止訪問。
此國產(chǎn)化可信嵌入式平臺(tái)已在某衛(wèi)星項(xiàng)目中投入使用,使用狀況良好,基于此平臺(tái)進(jìn)行可信技術(shù)的測試驗(yàn)證。
可信度量測試中,未篡改可執(zhí)行程序可以正常運(yùn)行,篡改過的可執(zhí)行程序error。未篡改的應(yīng)用程序請(qǐng)求執(zhí)行如圖7 所示,應(yīng)用程序篡改后請(qǐng)求執(zhí)行如圖8 所示。
圖7 應(yīng)用程序執(zhí)行成功
圖8 應(yīng)用程序執(zhí)行失敗
本文實(shí)現(xiàn)了基于龍芯2K-1000 CPU 的國產(chǎn)化嵌入式平臺(tái)的“安全可信”。應(yīng)用可信啟動(dòng)、可信軟件基、可信存儲(chǔ)和可信I/O 訪問等可信技術(shù)實(shí)現(xiàn)國產(chǎn)化嵌入式平臺(tái)的可信運(yùn)行,此可信的國產(chǎn)化嵌入式平臺(tái)已在某衛(wèi)星項(xiàng)目投入使用,這對(duì)以后國產(chǎn)化嵌入式平臺(tái)可信技術(shù)的應(yīng)用以及標(biāo)準(zhǔn)化形成有參考性意義。