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