一種基于智能卡的可信監(jiān)視器程序?qū)崿F(xiàn)方法
文章出處:http://m.compasssalessolutions.com 作者:涂國慶 人氣: 發(fā)表時間:2011年10月07日
1 概述
1.1 智能卡簡介
智能卡(Smart Card)又名IC 卡(Integrated Circuit Card),具有暫時或永久的數(shù)據(jù)存儲能力以及加密及數(shù)據(jù)處理能力。由于CPU 卡中的集成電路包括CPU、EEPROM、隨機存儲器RAM以及固化的只讀存儲器ROM中的片內(nèi)操作系統(tǒng)(COS),因此構成了一個完整的計算機系統(tǒng)。COS 建立在CPU、存儲器等硬件之上,是管理芯片資源和實現(xiàn)安全保密的操作系統(tǒng)。它的主要功能是:控制智能卡和外界的信息交換,管理智能卡內(nèi)的存儲器,在卡內(nèi)部完成各種命令的處理。COS 系統(tǒng)由傳輸管理、文件管理、安全管理、命令解釋4 個功能模塊及加密算法庫組成。
1.2 監(jiān)視器程序
智能卡系統(tǒng)由于具有成本敏感、資源有限、人機交互頻繁等特點,在應用時更容易受到物理和邏輯攻擊[2-3],其攻擊的防范重點往往要從指令行為的監(jiān)控上進行考慮。因此,文獻提出了一種監(jiān)視器子系統(tǒng),其結(jié)構如圖1 所示。
該系統(tǒng)通過對靜態(tài)二進制代碼進行分析,形成所有可能期望的指令序列路徑圖或狀態(tài)轉(zhuǎn)換圖,由監(jiān)視器子系統(tǒng)保存。在運行時,所有提交的指令系列都必須與預存的路徑圖比較,依據(jù)比較結(jié)果,可判斷是否有非法操作系列存在,同時即可判斷是否有攻擊產(chǎn)生。一旦監(jiān)視到這種情況發(fā)生,監(jiān)視器就引起中斷,終止當前處理器的指令執(zhí)行過程,同時采取相應恢復措施??梢姡挥邪凑找环N期望的方式執(zhí)行指令,才是合法指令流,這與可信計算理念是一致的。
2 可信增強的COS 設計方法
本文從金融應用的智能卡COS 架構進行安全改造,構筑一條包含軟信任根的可信鏈,并通過該可信鏈實現(xiàn)對智能卡COS 平臺環(huán)境和COS 操作指令行為的可信驗證,以達到可信增強的目的。由于卡片資源有限,同時考慮到實際應用的通用性和成本,因此不專門向卡中增加額外的硬件芯片或電路,而是充分利用卡片本身的資源,從軟件的角度模擬并設計出與可信計算相符的度量與存儲機制,為以后真正包含TPM 芯片的嵌入式系統(tǒng)的使用提供借鑒。
2.1 軟信任根
可信計算平臺通常包含專門的TPM 芯片,其內(nèi)部包含秘密存儲和密碼計算功能,平臺的信任根源就是RTM(可信度量根),往往存放在TPM 的秘密存儲區(qū)[5],稱之為硬件形態(tài)的信任根源。
考慮卡片的實際情況,本文提出軟信任根的概念。其思路就是將COS 內(nèi)核、卡片關鍵文件以及芯片主要參數(shù)等信息的完整性值作為卡片信任鏈的信任根源,存于卡片NVM(NotVolatile Memory)的OTP 區(qū)(One Time Programming Zone),該值在卡片初始化時寫入,在其后的卡片生命周期都不能更改,稱之為軟信任根SRTM(Soft-based RTM)。本文對軟信任根的度量不是通過TPM 實現(xiàn)的, 而是由一種軟度量模塊STMM(Soft-based Trust Measurement Module)的代碼實現(xiàn)的,這種軟度量模塊代碼存放于卡片提供的NVM 的ROM 區(qū)。
2.1.1 使用依據(jù)
軟信任根在卡片中能夠充當信任根源的理論與實用依據(jù)在于:
(1)卡片NVM 的OTP 區(qū)一旦寫入便不能更改,在保障物理可靠時認為足夠可信。
(2)軟信任根在卡片本身的BOOTROM 代碼執(zhí)行完后(卡片的硬件自檢完全通過后),在進入COS 核心代碼執(zhí)行之前才開始度量。其目的是為了追加驗證芯片的完整性并對即將執(zhí)行的COS 的完整性進行檢測,從而為其后的具體應用提供可信軟件平臺。
(3)軟度量模塊STMM 對軟信任根SRTM 進行驗證,若驗證通過,則初始化卡片的安全狀態(tài)為某一初值S0,該狀態(tài)值與普通卡片登錄MF 的安全狀態(tài)初值不同,且將它作為由MF 切換到ADF 的狀態(tài)機中的唯一合法起始狀態(tài)(如S0->Sx)。換而言之,若由MF 切換到ADF 的狀態(tài)變換不是以S0為起點,會遭到應用中的訪問控制或者監(jiān)視器程序(2.2 節(jié))拒絕??梢姡浶湃胃尿炞C操作不可被旁路。
2.1.2 完整性收集與度量
軟信任根SRTM 的完整性數(shù)據(jù)來源主要和卡片本身特征以及COS 代碼有關,可選用以下參數(shù)作為軟信任根計算完整性值的數(shù)據(jù)來源:芯片唯一序列號,產(chǎn)品標識符,發(fā)行商標識符,制造商標識符,COS 版本號,COS 內(nèi)核代碼校驗和,初次發(fā)行日期,主文件(MF)頭,軟度量模塊,監(jiān)視器程序。軟信任根的完整性度量方法首先利用完整性檢測算法對上述選定的參數(shù)或數(shù)據(jù)文件進行校驗,將校驗值編號并在初始化卡片時寫入OTP 區(qū)。當卡片上電進入COS 應用之前,重復上面的過程,并得到新的校驗值。將這2 組校驗值逐一進行比較,如果結(jié)果一致,則系統(tǒng)環(huán)境安全、核心文件完整;若不一致,說明系統(tǒng)核心文件有可能被非法篡改和破壞,或者進行了非法移植。該檢測過程主要是監(jiān)控系統(tǒng)環(huán)境和核心文件的數(shù)據(jù)信息的變化,是進入COS 平臺之前的一個基本可信的驗證過程。
2.2 信任鏈機制
TCPA 的信任鏈往往從一個物理的可信根源CRTM 開始檢測,逐級向后傳遞系統(tǒng)的控制權,整個過程都離不開TPM芯片的度量、存儲和報告。本節(jié)在軟信任根的基礎上分析可信的傳遞,對應了TCPA 信任鏈的POST(上電自檢)后的階段。這一階段主要是對COS 代碼、卡片文件以及應用操作行為進行度量,而且缺乏具體的TPM 芯片,主要采用替代的軟度量模塊和監(jiān)視器程序(Monitor)實現(xiàn),同樣能較好地實現(xiàn)可信的驗證。其可行性基于以下具體因素:
(1)代替TPM 芯片,采用NVM 中劃出的若干可信存儲區(qū)存儲可信的初值,該可信區(qū)與DDF(含MF)一一對應,對用戶來說是屏蔽和透明的,實現(xiàn)了TPM 芯片的秘密存儲功能。
(2)軟度量模塊STMM 首先對軟信任根SRTM 的完整性(含STMM 自身的完整性及Monitor 的完整性)進行度量,以確定能否進入COS 平臺;其后,STMM 繼續(xù)對卡片各個應用下的應用完整性值進行度量,以確定能否進入具體的應用。這些應用完整性值主要來源于每個應用下的文件結(jié)構、應用核心代碼和可信策略表等信息,稱之為AIVM(ApplicationIntegrity Value for Measurement)。
(3)結(jié)合基于狀態(tài)機的可信策略表檢測指令系列的可信性,實現(xiàn)了對操作行為的可信度量功能。
(4)選用具備非對稱加密協(xié)處理器、隨機數(shù)發(fā)生器、加密加速器及安全傳感器等安全組件的卡片,這些安全組件完全可以代替TPM 芯片進行相應的安全計算。
(5)本信任鏈雖然缺乏對系統(tǒng)加載之前階段的可信度量,但考慮到智能卡芯片和讀寫設備本身的安全特性及在應用時的可靠性保障措施,在COS 系統(tǒng)加載前,敏感信息是不可能從卡片泄漏的。
綜上所述,含軟度量模塊的信任鏈結(jié)構見圖2 實線部分的描述,其中,STMM 是軟度量模塊;SRTM 為軟信任根;AIVM 為應用完整性值;Monitor 為監(jiān)視器程序。BOOTROM為芯片啟動自檢代碼。各部分在芯片存儲器的存儲分布情況如圖3 所示。
結(jié)合圖2 與圖3,有3 個問題需要指出:
(1)軟度量模塊和監(jiān)視器程序在系統(tǒng)中唯一存在,其完整性由軟信任根度量。
(2)軟度量模塊對每個應用下的文件結(jié)構、核心代碼、可信策略表的完整性進行校驗并檢測是否與對應的預置初值相符,以決定能否進入該應用。預置初值保存于每個應用下的可信存儲區(qū)中。
(3)在進入應用之后,監(jiān)視器程序結(jié)合該應用下的可信策略表對涉及安全狀態(tài)改變的所有指令或指令序列進行監(jiān)視,以確保操作行為的可信。
2.3 可信驗證機制
這種可信增強的智能卡操作系統(tǒng)重點為行為和計算環(huán)境的可信方面提供有效的驗證手段,以保障用戶行為達到預期的目的。
(1)計算環(huán)境可信保障:智能卡COS 的計算環(huán)境主要是指使用和執(zhí)行COS 的應用環(huán)境。在上文指定了軟信任根,只有對該軟信任根中的關鍵參數(shù)進行完整性驗證后才能夠進入各具體應用,而這些參數(shù)正好反映了卡和卡操作系統(tǒng)的基本特征,可以認為是一種最基本的平臺計算環(huán)境。在驗證這種平臺計算環(huán)境可信之后,才能將信任傳遞給下一個可信模塊,即軟度量模塊。軟度量模塊負責對卡的所有應用進行完整性驗證,包含對應用下的文件結(jié)構、應用核心代碼以及可信策略的完整性值進行驗證,以確定能否進入該應用。這一階段實際上是對具體應用計算環(huán)境的可信認證。
(2)行為可信保障:本文在對智能卡COS 進行安全增強時,提出一種基于狀態(tài)機的監(jiān)視器程序,它與應用下的可信策略表結(jié)合,專門負責監(jiān)視指令的執(zhí)行過程/操作行為是否可信。該監(jiān)視器的基本工作原理如圖4 所示。
監(jiān)視器主要包含中斷輸入接口、響應輸出接口及決策模塊。其中,中斷輸入接口負責接收來自主程序(應用代碼)的可信度量請求;決策模塊進行查表,依據(jù)可信策略表的策略作出判斷,并由響應輸出接口輸出給主程序。實際上,監(jiān)視器程序與主程序共用CPU 和其他資源,以中斷的方式運行,在硬件上沒有要求卡片增加任何設施,只是為了提高中斷請求速度,借用了芯片的某個安全傳感器位(稱為行為度量請求位(Action Measurement Request, AMR))來觸發(fā)監(jiān)視器的中斷請求。
監(jiān)視器需要借助于可信策略表進行可信判斷,本文設計了一種實用的可信策略表,見表1。
在表1 中,“狀態(tài)切換”欄目列出了所有合法的安全狀態(tài)切換形式;“序列計數(shù)器”和“指令序列”分別記錄了從初始狀態(tài)變換到某一目標狀態(tài)所經(jīng)過的關鍵指令步驟數(shù)和所有關鍵指令的操作碼;“目的地址”記錄了該指令序列操作中要訪問的存儲器的物理地址。COS 主程序中的安全狀態(tài)切換(如由狀態(tài)A 切換到狀態(tài)B 記為:SA→SB)觸發(fā)監(jiān)視器中斷,監(jiān)視器工作流程如下:
(1)當COS 主程序中的某個指令執(zhí)行引起安全狀態(tài)發(fā)生改變或切換,說明系統(tǒng)在執(zhí)行與安全相關的操作,這時會引起安全傳感器的AMR 位置位,觸發(fā)監(jiān)視器中斷,即請求監(jiān)視器進行行為可信度量。
(2)監(jiān)視器接收到AMR 中斷后,開始執(zhí)行行為可信度量的服務程序。首先讀取當前狀態(tài)SB 以及前一狀態(tài)SA,得到SA→SB,并由SA→SB 作為索引查找可信策略表的狀態(tài)切換欄目,如果在策略表中不能查到與SA→SB 相符的項,說明操作為非法行為,轉(zhuǎn)出錯處理;如果找到對應項,假定為第k 項,繼續(xù)下一步驟。
(3) 監(jiān)視器讀取當前序列計數(shù)器值(Sequence Counter Value, SCV),假如該值為m,監(jiān)視器比較策略表中第k 項的序列計數(shù)器值,如果不符,轉(zhuǎn)出錯處理;否則繼續(xù)下一步。
(4)監(jiān)視器讀取最近的指令隊列并從該隊列中分析是否有訪存操作,若有,記訪存的物理地址PA=x,若沒有訪存操作,記PA=Null;假如隊列中最近的指令序列為Ir(I1, I2, …,In),而在策略表中的第k 項的“指令序列” 為Is(I1, I2, …, Im),若Ir(I1, I2, …, In)包含且匹配于Is(I1, I2, … , Im),轉(zhuǎn)下一步;否則,轉(zhuǎn)出錯處理。
(5)監(jiān)視器讀取策略表中第k 項的“目的地址”值,并將其與第(4)步中記錄的PA 值比較,若不相同,轉(zhuǎn)出錯處理;否則,轉(zhuǎn)下一步。
(6)監(jiān)視器清除安全傳感器的AMR 位,結(jié)束中斷服務過程,控制權移交主程序。
另外,出錯處理的步驟包含:清除安全傳感器的AMR位,給出警告,退出系統(tǒng)應用,或者重啟芯片,甚至鎖定應用直至鎖定卡片。當然,這些強制處理的選擇基于用戶的安全決策機構。
3 結(jié)束語
智能卡操作系統(tǒng)的軟信任根記錄了平臺環(huán)境的靜態(tài)數(shù)據(jù)和代碼的完整性,對其進行度量很好地解決了平臺環(huán)境的可信認證。對于智能卡應用時的動態(tài)行為,即操作指令序列,采用一種監(jiān)視器程序結(jié)合預存的可信行為策略對其實時監(jiān)控,實現(xiàn)了關鍵安全行為的可信驗證,從而達到行為的可預期性。開發(fā)和測試實驗證明,該軟信任根與監(jiān)視器子系統(tǒng)占用系統(tǒng)存儲空間很少,對系統(tǒng)性能影響不大,以較低成本達到了較好的效果。
(文/武漢大學計算機學院,涂國慶)