一種基于智能卡的可信監(jiān)視器程序?qū)崿F(xiàn)方法
文章出處:http://m.luckydriving.com 作者:涂國(guó)慶 人氣: 發(fā)表時(shí)間:2011年10月07日
1 概述
1.1 智能卡簡(jiǎn)介
智能卡(Smart Card)又名IC 卡(Integrated Circuit Card),具有暫時(shí)或永久的數(shù)據(jù)存儲(chǔ)能力以及加密及數(shù)據(jù)處理能力。由于CPU 卡中的集成電路包括CPU、EEPROM、隨機(jī)存儲(chǔ)器RAM以及固化的只讀存儲(chǔ)器ROM中的片內(nèi)操作系統(tǒng)(COS),因此構(gòu)成了一個(gè)完整的計(jì)算機(jī)系統(tǒng)。COS 建立在CPU、存儲(chǔ)器等硬件之上,是管理芯片資源和實(shí)現(xiàn)安全保密的操作系統(tǒng)。它的主要功能是:控制智能卡和外界的信息交換,管理智能卡內(nèi)的存儲(chǔ)器,在卡內(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)通過對(duì)靜態(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)對(duì)智能卡COS 平臺(tái)環(huán)境和COS 操作指令行為的可信驗(yàn)證,以達(dá)到可信增強(qiáng)的目的。由于卡片資源有限,同時(shí)考慮到實(shí)際應(yīng)用的通用性和成本,因此不專門向卡中增加額外的硬件芯片或電路,而是充分利用卡片本身的資源,從軟件的角度模擬并設(shè)計(jì)出與可信計(jì)算相符的度量與存儲(chǔ)機(jī)制,為以后真正包含TPM 芯片的嵌入式系統(tǒng)的使用提供借鑒。
2.1 軟信任根
可信計(jì)算平臺(tái)通常包含專門的TPM 芯片,其內(nèi)部包含秘密存儲(chǔ)和密碼計(jì)算功能,平臺(tái)的信任根源就是RTM(可信度量根),往往存放在TPM 的秘密存儲(chǔ)區(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)。本文對(duì)軟信任根的度量不是通過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)證芯片的完整性并對(duì)即將執(zhí)行的COS 的完整性進(jìn)行檢測(cè),從而為其后的具體應(yīng)用提供可信軟件平臺(tái)。
(3)軟度量模塊STMM 對(duì)軟信任根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),會(huì)遭到應(yīng)用中的訪問控制或者監(jiān)視器程序(2.2 節(jié))拒絕??梢姡浶湃胃尿?yàn)證操作不可被旁路。
2.1.2 完整性收集與度量
軟信任根SRTM 的完整性數(shù)據(jù)來源主要和卡片本身特征以及COS 代碼有關(guān),可選用以下參數(shù)作為軟信任根計(jì)算完整性值的數(shù)據(jù)來源:芯片唯一序列號(hào),產(chǎn)品標(biāo)識(shí)符,發(fā)行商標(biāo)識(shí)符,制造商標(biāo)識(shí)符,COS 版本號(hào),COS 內(nèi)核代碼校驗(yàn)和,初次發(fā)行日期,主文件(MF)頭,軟度量模塊,監(jiān)視器程序。軟信任根的完整性度量方法首先利用完整性檢測(cè)算法對(duì)上述選定的參數(shù)或數(shù)據(jù)文件進(jìn)行校驗(yàn),將校驗(yàn)值編號(hào)并在初始化卡片時(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)行了非法移植。該檢測(cè)過程主要是監(jiān)控系統(tǒng)環(huán)境和核心文件的數(shù)據(jù)信息的變化,是進(jìn)入COS 平臺(tái)之前的一個(gè)基本可信的驗(yàn)證過程。
2.2 信任鏈機(jī)制
TCPA 的信任鏈往往從一個(gè)物理的可信根源CRTM 開始檢測(cè),逐級(jí)向后傳遞系統(tǒng)的控制權(quán),整個(gè)過程都離不開TPM芯片的度量、存儲(chǔ)和報(bào)告。本節(jié)在軟信任根的基礎(chǔ)上分析可信的傳遞,對(duì)應(yīng)了TCPA 信任鏈的POST(上電自檢)后的階段。這一階段主要是對(duì)COS 代碼、卡片文件以及應(yīng)用操作行為進(jìn)行度量,而且缺乏具體的TPM 芯片,主要采用替代的軟度量模塊和監(jiān)視器程序(Monitor)實(shí)現(xiàn),同樣能較好地實(shí)現(xiàn)可信的驗(yàn)證。其可行性基于以下具體因素:
(1)代替TPM 芯片,采用NVM 中劃出的若干可信存儲(chǔ)區(qū)存儲(chǔ)可信的初值,該可信區(qū)與DDF(含MF)一一對(duì)應(yīng),對(duì)用戶來說是屏蔽和透明的,實(shí)現(xiàn)了TPM 芯片的秘密存儲(chǔ)功能。
(2)軟度量模塊STMM 首先對(duì)軟信任根SRTM 的完整性(含STMM 自身的完整性及Monitor 的完整性)進(jìn)行度量,以確定能否進(jìn)入COS 平臺(tái);其后,STMM 繼續(xù)對(duì)卡片各個(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ī)的可信策略表檢測(cè)指令系列的可信性,實(shí)現(xiàn)了對(duì)操作行為的可信度量功能。
(4)選用具備非對(duì)稱加密協(xié)處理器、隨機(jī)數(shù)發(fā)生器、加密加速器及安全傳感器等安全組件的卡片,這些安全組件完全可以代替TPM 芯片進(jìn)行相應(yīng)的安全計(jì)算。
(5)本信任鏈雖然缺乏對(duì)系統(tǒng)加載之前階段的可信度量,但考慮到智能卡芯片和讀寫設(shè)備本身的安全特性及在應(yīng)用時(shí)的可靠性保障措施,在COS 系統(tǒng)加載前,敏感信息是不可能從卡片泄漏的。
綜上所述,含軟度量模塊的信任鏈結(jié)構(gòu)見圖2 實(shí)線部分的描述,其中,STMM 是軟度量模塊;SRTM 為軟信任根;AIVM 為應(yīng)用完整性值;Monitor 為監(jiān)視器程序。BOOTROM為芯片啟動(dòng)自檢代碼。各部分在芯片存儲(chǔ)器的存儲(chǔ)分布情況如圖3 所示。
結(jié)合圖2 與圖3,有3 個(gè)問題需要指出:
(1)軟度量模塊和監(jiān)視器程序在系統(tǒng)中唯一存在,其完整性由軟信任根度量。
(2)軟度量模塊對(duì)每個(gè)應(yīng)用下的文件結(jié)構(gòu)、核心代碼、可信策略表的完整性進(jìn)行校驗(yàn)并檢測(cè)是否與對(duì)應(yīng)的預(yù)置初值相符,以決定能否進(jìn)入該應(yīng)用。預(yù)置初值保存于每個(gè)應(yīng)用下的可信存儲(chǔ)區(qū)中。
(3)在進(jìn)入應(yīng)用之后,監(jiān)視器程序結(jié)合該應(yīng)用下的可信策略表對(duì)涉及安全狀態(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)境。在上文指定了軟信任根,只有對(duì)該軟信任根中的關(guān)鍵參數(shù)進(jìn)行完整性驗(yàn)證后才能夠進(jìn)入各具體應(yīng)用,而這些參數(shù)正好反映了卡和卡操作系統(tǒng)的基本特征,可以認(rèn)為是一種最基本的平臺(tái)計(jì)算環(huán)境。在驗(yàn)證這種平臺(tái)計(jì)算環(huán)境可信之后,才能將信任傳遞給下一個(gè)可信模塊,即軟度量模塊。軟度量模塊負(fù)責(zé)對(duì)卡的所有應(yīng)用進(jìn)行完整性驗(yàn)證,包含對(duì)應(yīng)用下的文件結(jié)構(gòu)、應(yīng)用核心代碼以及可信策略的完整性值進(jìn)行驗(yàn)證,以確定能否進(jìn)入該應(yīng)用。這一階段實(shí)際上是對(duì)具體應(yīng)用計(jì)算環(huán)境的可信認(rèn)證。
(2)行為可信保障:本文在對(duì)智能卡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)用代碼)的可信度量請(qǐng)求;決策模塊進(jìn)行查表,依據(jù)可信策略表的策略作出判斷,并由響應(yīng)輸出接口輸出給主程序。實(shí)際上,監(jiān)視器程序與主程序共用CPU 和其他資源,以中斷的方式運(yùn)行,在硬件上沒有要求卡片增加任何設(shè)施,只是為了提高中斷請(qǐng)求速度,借用了芯片的某個(gè)安全傳感器位(稱為行為度量請(qǐng)求位(Action Measurement Request, AMR))來觸發(fā)監(jiān)視器的中斷請(qǐng)求。
監(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)鍵指令的操作碼;“目的地址”記錄了該指令序列操作中要訪問的存儲(chǔ)器的物理地址。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í)會(huì)引起安全傳感器的AMR 位置位,觸發(fā)監(jiān)視器中斷,即請(qǐng)求監(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ò)處理;如果找到對(duì)應(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)的軟信任根記錄了平臺(tái)環(huán)境的靜態(tài)數(shù)據(jù)和代碼的完整性,對(duì)其進(jìn)行度量很好地解決了平臺(tái)環(huán)境的可信認(rèn)證。對(duì)于智能卡應(yīng)用時(shí)的動(dòng)態(tài)行為,即操作指令序列,采用一種監(jiān)視器程序結(jié)合預(yù)存的可信行為策略對(duì)其實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)了關(guān)鍵安全行為的可信驗(yàn)證,從而達(dá)到行為的可預(yù)期性。開發(fā)和測(cè)試實(shí)驗(yàn)證明,該軟信任根與監(jiān)視器子系統(tǒng)占用系統(tǒng)存儲(chǔ)空間很少,對(duì)系統(tǒng)性能影響不大,以較低成本達(dá)到了較好的效果。
(文/武漢大學(xué)計(jì)算機(jī)學(xué)院,涂國(guó)慶)