孟祥斌,劉笑凱,郝克林
(華北計算機系統工程研究所,北京 100083)
近些年計算機技術飛速發展,同時信息安全威脅事件大量爆發,信息安全問題被國內外各研究人員廣泛關注。傳統的信息安全防御技術有防火墻、堵漏洞以及入侵檢測等方式,很難有較大突破。沈昌祥院士提出:網絡安全最重要的是“安全可信”[1]。我國在“自主研發”方面實現了信息系統從硬件到軟件的自主研發、生產、升級、維護的全程可控,但是由于計算機體系結構固有的缺點以及軟件可能存在的缺陷,在自主研發的平臺下,仍然存在各種不可避免的未知的軟硬件漏洞。因此,本文將運用可信技術,遵照可信計算規范,自主設計可信硬件模塊,擴展可信BIOS和操作系統。以可信密碼模塊為信任根,構建貫穿硬件層、固件層、操作系統層和應用層全過程的信任鏈解決方案,能夠為國產化嵌入式計算平臺提供有效完整的全信任鏈保護,實現了信息系統基礎平臺裝備的“安全可信”。
可信計算從1983 年開始在國內外一直備受學者們關注,可信計算經歷了三個時代:(1)可信1.0 時代:容錯計算,其主要采取容錯算法和冗余備份等技術提高大型機時代主機的可靠性[2];(2)可信2.0 時代:被動可信體系,可信2.0 的理念是從硬件層面的可信根出發,建立從可信根到操作系統再到應用層面的可信鏈,以此完成可信度量和可信存儲等功能;(3)可信3.0 時代:主動免疫體系[3],可信節點的建立和與系統的交互是可信3.0的關鍵,可信3.0 的主動監控機制不需要修改現有系統環境即可提供可信支撐,其還可將可信計算的定義權交給屬主自己,為屬主提供極高的自由度,主動可信機制將可信計算功能封裝在可信子系統中,簡單化和規范化的可信子系統為開發工作提供便利,可信3.0 主動免疫體系在我國發展迅速,在很多領域的實際應用效果顯著[4]。本文將主動免疫體系的可信計算技術應用到全國產化嵌入式平臺。
(1)硬件平臺設計
自主安全國產化平臺組成框圖如圖1 所示,主要由龍芯2K-1000 處理器模塊[5]、存儲CRTM 的Nor Flash 存儲器、CPLD 控制器、NAND Flash 存儲器、4 個千兆網口、1 個串口、高云GW2A-55FPGA 以及基于CCP903T 芯片的TPCM 可信模塊組成。其中,可信硬件模塊通過miniPCIE插卡形式接入板卡,嵌入式平臺通過串口和網口進行調試。

圖1 自主安全的國產化硬件平臺組成框圖
(2)基于CCP903T 的可信模塊簡介
此平臺可信模塊是基于CCP903T 單核芯片設計的一款具有高速密碼服務的密碼模塊,遵循國家密碼管理局關于PCI 密碼模塊的相關規范,支持SM1、SM2、SM3、SM4 等國密算法;支持PCIE x4 lanes,能夠為各類可信安全平臺提供多線程、多進程和多卡并行處理的高速密碼運算服務,其可以提供數字簽名/驗證、非對稱/對稱加解密、數據完整性校驗、真隨機數生成、密鑰生成及管理等功能,可以保證敏感數據的機密性、真實性、完成性和抗抵賴性,此可信模塊滿足國產化自主安全、性能高、成本低等原則[6]。
基于龍芯2K-1000 CPU 的國產化嵌入式可信平臺的軟件設計如圖2 所示。

圖2 軟件設計架構
2.2.1 可信啟動
嵌入式系統上電后,首先會執行BIOS 程序,進行硬件初始化,建立內存映射圖,將系統配置到理想狀態;然后再讀取內核映像文件,并寫入內存;最后跳入內核入口進行嵌入式操作系統的啟動[7]。嵌入式系統存儲器具有固態非易失性,如EEROM和Flash 等,大多數情況下內核映像和根文件系統應用其存儲[8]。
此國產化嵌入式平臺經過改造后加入一個存儲CRTM和標準摘要值的Nor Flash、CPLD 控制器以及TPCM 可信模塊,通過CPLD 控制器控制整個可信啟動過程的各個階段,也就是Nor Flash、CPLD、TPCM 以及CPU 分別在不同時刻取得控制權,四者在不同時刻分別作為運算的核心部件。系統上電后CPLD 控制器首先取得控制權,使CPU 與外設之間的連接都斷開,阻止CPU 啟動,先啟動TPCM 模塊和Nor Flash,運行CRTM 可信根,CRTM 讀取內存中預存的TPCM 命令庫并調用TPCM 中的SM-3算法引擎,將命令庫發給TPCM,TPCM 對收到的數據進行度量并將結果擴展到PCR0。CRTM 讀取PCR0 中的摘要值,并與片內預存的標準摘要值進行對比,如果對比結果相同則繼續啟動,否則停止。然后CRTM 會以同樣的方式對標準值擴展庫、BIOS 程序、Bootloader 引導加載程序進行度量,若Bootloader 可信則CPLD 控制器復位CPU,運行Bootloader,CPU 獲取控制權。
隨后Bootloader 依次調用TPCM 對內核映像和根文件系統進行度量,若結果都可信,說明內核代碼沒有被篡改過,則可以啟動嵌入式系統內核。具體可信啟動流程如圖3 所示。

圖3 可信啟動流程
2.2.2 可信軟件基
國產化嵌入式平臺可信啟動成功,操作系統開始運行,隨后會有大量程序運行和應用軟件啟動,系統運行任務繁重,運行環境復雜,此后更加容易受到持續的安全威脅。由于TPCM 安全芯片主要提供安全核心的密碼學功能,其存儲和計算能力薄弱,需要可信軟件基TSB代理TPCM 的可信管理功能,支撐系統的可信運行環境。可信軟件基的組成機制如圖4 所示。

圖4 可信軟件基TSB 組成機制
可信軟件基在整個國產化嵌入式可信平臺中承擔著承上啟下的作用,對上保護操作系統中運行的應用程序,對下調用TPCM 安全芯片的功能接口并管理TPCM中其他可信資源[9]。
可信軟件基由宿主系統中多個可信功能軟件互聯互通構成,并不是一個獨立系統,TSB 包括度量機制、控制機制、判定機制、可信基準庫和基本信任基等主要部件[10]。其基本信任基由TPCM 的可信根提供,為可信軟件基提供基本可信功能;可信基準庫為可信度量、控制、管理和判定提供基準可信資源;TSB 的度量機制計算可信計算平臺系統應用軟件的度量值;根據度量機制產生的度量值和系統規則判定機制推導其是否可信;根據度量值、判定結論和可信基準庫中的基準控制策略,控制機制向TPCM 安全芯片發送控制指令;支撐機制為應用系統提供可信密碼服務和其他可信服務,支持可信軟件基對安全芯片TPCM 的訪問與控制,并將可信資源傳給TSB 內部和可信基準庫,供TSB 使用。
國產化嵌入式操作系統可信啟動后,則運行實現業務的應用軟件,應用軟件執行需要配置文件和動態庫文件支撐。在運行應用軟件前可信軟件基的度量機制調用TPCM 安全芯片的SM-3 算法引擎對應用程序進行度量,將度量結果擴展到PCR 寄存器,可信軟件基的判斷機制讀取PCR 寄存器中的度量值并與可信基準庫中標準摘要值進行對比,根據判定結果可知應用程序是否被篡改,從而控制機制決定應用軟件是否運行。運行過程中需要加載系統文件時,根據同樣的度量、判定和控制機制進行文件的可信度量,控制其是否可被加載。
應用程序的可信執行建立在系統已可信啟動進入可信運行環境的基礎上,應用程序執行過程中的可信度量由可信軟件基的控制機制、度量機制、判定機制以及可信基準庫配合TPCM 可信硬件模塊共同完成。
2.2.3 可信平臺下文件存儲與操作
傳統國產化嵌入式平臺的加密文件系統是將密鑰加密存儲在磁盤,這種方式大大降低密鑰管理的安全性,整個系統缺少可信計算基,給加解密模塊帶來嚴重安全威脅[11]。目前國產化可信嵌入式平臺的文件加解密系統仍存在一定問題,如密鑰存儲的安全性、不能對文件粒度進行加密保護導致加解密粒度過粗等問題。
下面針對目前存在的問題設計此嵌入式平臺的密鑰管理模塊、文件加解密服務和文件完整性校驗模塊。
(1)密鑰管理模塊
密鑰的安全管理是影響整個可信平臺可靠性的重要因素,此平臺的密鑰管理采用分層加密思想,可信根中的存儲根密鑰(SRK)作為源頭,建立可信鏈,將可信傳遞給密鑰和文件。可信存儲根密鑰永遠存放在可信根內部,當使用SRK 時,必須將需要加密的文件傳到可信根內部,加密完成后再將密文對外傳遞使用。當文件需要機密性保護時,系統調用TPCM 的隨機數生成器生成存儲密鑰,系統中對每個用戶TPCM 會生成一個用戶加密密鑰,用戶加密密鑰將存儲密鑰加密,再將加密后的數據傳給可信根,用SRK 進行加密,再將最終密文存儲到底層文件系統。此密鑰管理方式是用SRK 保護用戶加密密鑰,使用用戶加密密鑰保護存儲密鑰。此分層密鑰管理模式提高了密鑰存儲的可靠性與安全性。密鑰管理流程如圖5 所示。

圖5 密鑰管理流程圖
(2)文件加解密模塊
此國產化嵌入式平臺的文件加解密服務采用SM4 對稱加密算法。文件需要機密性保護時,用戶調用TPCM中SM4 算法引擎,并與密鑰管理模塊交互獲得存儲密鑰,文件加解密模塊將加密后的文件密文存儲在底層文件系統。加解密模塊最重要的就是保護存儲密鑰的安全性,本文采用分層密鑰管理的方式保證密鑰安全性。
(3)文件完整性校驗模塊
完整性校驗采用HMAC 機制實現,HMAC 是散列函數消息碼鑒別機制。此平臺HMAC 機制通過采用TPCM中SM3 雜湊算法和存儲密鑰來實現。
2.2.4 I/O 口可信認證
I/O 口的可信訪問主要基于身份認證機制和訪問控制機制[12],用戶只有通過身份認證機制后,才能通過訪問控制機制進行I/O 口的使用。此平臺的I/O 口主要包括網卡、顯示屏、LED 燈、開關機鍵、身份認證口、主備按鍵、串口以及銷毀鍵等。I/O 口的可信訪問流程如圖6所示。

圖6 I/O 口可信訪問流程
(1)身份認證機制
傳統的身份認證一般是通過“用戶名+密碼”的方式[13],一旦密碼丟失,系統中重要信息就會被攻擊者竊取或篡改,此國產化平臺采用USB 身份鑰匙配合TPCM模塊進行身份認證,USB 身份鑰匙中包含用戶ID、用戶訪問權限以及用于身份認證的私鑰,身份認證私鑰存儲在TPCM 模塊內存中,具體身份認證流程如下:
①USB 身份鑰匙插入此平臺,TSB 調用TPCM 中SM2算法引擎對USB 中存儲的身份信息進行可信度量,若度量值與基準值不匹配則停止訪問;
②確認身份信息沒有被篡改,TPCM 的隨機數生成器生成一串隨機數;
③TPCM 用SM4 算法將隨機數進行加密,生成密文C;
④TPCM 分別從USB和內存中讀取身份認證私鑰合并成完成私鑰;
⑤用身份認證私鑰對密文C 解密,若解密成功則身份認證成功;
⑥訪問控制機制讀取USB 中的用戶訪問權限信息并存儲。
(2)訪問控制機制
訪問控制機制主要限制非法使用戶和越權訪問用戶[14],訪問控制一般有3 種類型,基于身份的訪問控制(DAC)、基于規則的訪問控制(MAC)和基于角色的訪問控制(RBAC)。DAC 靈活性高,但控制能力差;MAC 控制能力強,但靈活性低[15];綜合考慮本平臺采用基于角色的訪問控制。此平臺用戶分為非法用戶、普通用戶和管理員用戶,非法用戶禁止訪問I/O 口,普通用戶也稱為受限用戶,其只能訪問一部分I/O 口,此平臺用戶分類以及訪問權限劃分如表1 所示。

表1 用戶訪問權限表
(3)銷毀鍵可信訪問具體實現
銷毀鍵在此平臺I/O 口中屬于高安全級別按鍵,不能隨意將密碼資源銷毀。因此需要訪問控制機制進行管控。具體流程如下:
①銷毀鍵按下,銷毀線程檢測到銷毀鍵按下操作;
②鉤子函數截獲程序的執行,進行用戶身份的確認;
③若為管理員用戶則放行此操作,否則禁止訪問。
此國產化可信嵌入式平臺已在某衛星項目中投入使用,使用狀況良好,基于此平臺進行可信技術的測試驗證。
可信度量測試中,未篡改可執行程序可以正常運行,篡改過的可執行程序error。未篡改的應用程序請求執行如圖7 所示,應用程序篡改后請求執行如圖8 所示。

圖7 應用程序執行成功

圖8 應用程序執行失敗
本文實現了基于龍芯2K-1000 CPU 的國產化嵌入式平臺的“安全可信”。應用可信啟動、可信軟件基、可信存儲和可信I/O 訪問等可信技術實現國產化嵌入式平臺的可信運行,此可信的國產化嵌入式平臺已在某衛星項目投入使用,這對以后國產化嵌入式平臺可信技術的應用以及標準化形成有參考性意義。