智能卡操作系統(tǒng)的測(cè)試技術(shù)
文章出處:http://m.luckydriving.com 作者:謝晶晶, 李代平, 郭琨 人氣: 發(fā)表時(shí)間:2011年09月01日
引 言
具有穩(wěn)定、可靠的卡內(nèi)操作系統(tǒng)是智能卡正常工作的基礎(chǔ),智能卡操作系統(tǒng)控制外界與智能卡之間的通信,管理卡片的存儲(chǔ)空間,并且在卡內(nèi)對(duì)于各種命令進(jìn)行處理,所以在COS 開(kāi)發(fā)過(guò)程中有必要對(duì)COS 進(jìn)行充分且全面的測(cè)試。COS 的主要特點(diǎn): 它是一個(gè)專用系統(tǒng); COS 一般是根據(jù)某種卡片的特點(diǎn)以及應(yīng)用范圍來(lái)設(shè)計(jì)開(kāi)發(fā)的,具有高可靠性; COS 所要完成的功能需遵循相關(guān)的國(guó)際規(guī)范以及行業(yè)規(guī)范; 支持同一應(yīng)用類型的COS 往往遵循同樣的規(guī)范,這使得COS 的測(cè)試有一定的重用性。
以上特點(diǎn)決定了常規(guī)的軟件測(cè)試方法不能直接用于COS 測(cè)試。
1 智能卡操作系統(tǒng)
1. 1 COS 組成結(jié)構(gòu)
COS 的主要功能是從智能卡傳出和傳入數(shù)據(jù),控制執(zhí)行相關(guān)的命令,管理維護(hù)文件系統(tǒng),管理與執(zhí)行加密算法。其結(jié)構(gòu)可劃分為兩個(gè)層次: 功能層和微內(nèi)核層。
功能層主要實(shí)現(xiàn)COS 的業(yè)務(wù)邏輯,包含通信管理、安全管理、命令解釋、文件管理四大模塊。
1) 通信管理模塊: 對(duì)輸入緩沖區(qū)中收到的數(shù)據(jù)進(jìn)行奇偶校驗(yàn),以及對(duì)分組長(zhǎng)度等進(jìn)行正確性判斷,但不對(duì)信息的內(nèi)容進(jìn)行判斷,以ISO/ IEC 7816- 4 中有關(guān)命令結(jié)構(gòu)作為判斷的標(biāo)準(zhǔn); 接收經(jīng)過(guò)命令處理、文件管理處理、安全認(rèn)證后的數(shù)據(jù),并按照ISO/ IEC 7816- 4中有關(guān)命令結(jié)構(gòu)要求將其打包成完整的結(jié)果報(bào)文,放入到輸出緩沖區(qū),發(fā)送結(jié)果報(bào)文。
2) 安全管理模塊: 接受通信管理模塊的調(diào)度,并將處理后的信息返回給通信管理模塊; 對(duì)通信管理模塊接收的數(shù)據(jù)進(jìn)行安全驗(yàn)證,但不對(duì)數(shù)據(jù)內(nèi)容進(jìn)行驗(yàn)證,若安全驗(yàn)證失敗,則直接返回驗(yàn)證失敗。
3)命令解釋模塊: 接受安全管理模塊的調(diào)度,并將處理后的數(shù)據(jù)信息( 與命令相對(duì)應(yīng)的響應(yīng)代碼) 返回給安全管理模塊; 需要作數(shù)據(jù)內(nèi)容上的鑒別( 檢查命令的各項(xiàng)參數(shù)是否正確) ,然后執(zhí)行相應(yīng)的操作,完成對(duì)卡內(nèi)有關(guān)數(shù)據(jù)的操作,若對(duì)數(shù)據(jù)內(nèi)容鑒別未通過(guò),則直接返回錯(cuò)誤碼給通信管理模塊。
4)文件管理模塊: 接受命令管理模塊的調(diào)度; 數(shù)據(jù)在卡內(nèi)是以文件形式存在的,文件管理模塊須提供文件的建立、修改、刪除等基本操作,文件訪問(wèn)的安全控制等。
微內(nèi)核的主要功能: 為上層的功能層提供硬件支持,實(shí)現(xiàn)終端與卡內(nèi)硬件的通信。微內(nèi)核分為接口層、驅(qū)動(dòng)層,接口層為功能層提供服務(wù),將功能層的服務(wù)請(qǐng)求轉(zhuǎn)化成對(duì)驅(qū)動(dòng)層的調(diào)用,為功能層提供統(tǒng)一的接口。驅(qū)動(dòng)層主要實(shí)現(xiàn)對(duì)底層硬件的各種驅(qū)動(dòng)操作。
1. 2 COS 的狀態(tài)轉(zhuǎn)移過(guò)程
各功能模塊在完成特定請(qǐng)求的過(guò)程中可能還需要向其他功能模塊發(fā)出請(qǐng)求。各模塊之間是調(diào)度請(qǐng)求和數(shù)據(jù)響應(yīng)的關(guān)系,在一對(duì)關(guān)系中調(diào)度請(qǐng)求表現(xiàn)為模塊的輸出,數(shù)據(jù)響應(yīng)表現(xiàn)為模塊的輸入,調(diào)度和響應(yīng)都用事務(wù)表示,事務(wù)所代表的是一組數(shù)據(jù),以及對(duì)數(shù)據(jù)的操作。
系統(tǒng)請(qǐng)求/ 響應(yīng)過(guò)程中的狀態(tài)轉(zhuǎn)換圖,如圖1 所示。
與其相對(duì)應(yīng)的狀態(tài)表,如表1 所示。
事務(wù)1: 智能卡收到終端的APDU 請(qǐng)求;
事務(wù)2: 智能卡向終端發(fā)出的APDU 響應(yīng);
事務(wù)3: 通信管理模塊接收到APDU 命令,進(jìn)行校驗(yàn)后,調(diào)用命令解釋模塊對(duì)APDU 指令進(jìn)行處理;
事務(wù)4: 命令解釋模塊向通信管理模塊返回處理后的數(shù)據(jù)或異常事件;
事務(wù)5: 命令解釋模塊在APDU 命令的處理過(guò)程中,需要訪問(wèn)文件而調(diào)用文件系統(tǒng)模塊;
事務(wù)6: 文件系統(tǒng)模塊將處理后的信息返回給命令解釋模塊;
事務(wù)7: 文件系統(tǒng)模塊在對(duì)文件操作時(shí)需要進(jìn)行安全控制時(shí)調(diào)用安全模塊;
事務(wù)8: 安全管理模塊在涉及安全性相關(guān)的文件時(shí)調(diào)用文件系統(tǒng)模塊;
事務(wù)9: 命令解釋模塊向安全管理模塊發(fā)出的響應(yīng)事件;
事務(wù)10: 安全管理模塊向命令解釋模塊發(fā)出的處理數(shù)據(jù)請(qǐng)求;
事務(wù)11: 安全管理模塊向通信管理模塊發(fā)出的響應(yīng)事件或異常事件;
事務(wù)12: 通信管理模塊為完成終端發(fā)出的APDU請(qǐng)求,向COS 微內(nèi)核發(fā)出的調(diào)用底層硬件接口請(qǐng)求;
事務(wù)13: 命令解釋模塊為完成安全管理模塊請(qǐng)求,向COS 微內(nèi)核發(fā)出的調(diào)用底層硬件接口請(qǐng)求;
事務(wù)14: 文件系統(tǒng)模塊為完成安全管理模塊請(qǐng)求,向COS 微內(nèi)核發(fā)出的調(diào)用底層硬件接口請(qǐng)求;
事務(wù)15: 安全管理模塊為完成安全管理模塊請(qǐng)求,向COS 微內(nèi)核發(fā)出的調(diào)用底層硬件接口請(qǐng)求。
1. 3 智能卡通信過(guò)程
智能卡與終端之間的通信是通過(guò)命令--響應(yīng)對(duì)實(shí)現(xiàn)的。終端向卡發(fā)送命令( 以C- APDU 形式) ,卡收到命令后,由COS 對(duì)接收的命令報(bào)文進(jìn)行處理,然后將處理結(jié)果打包成響應(yīng)報(bào)文( 以R- APDU 形式) 返回給終端。
C- APDU 由兩部分組成 : 一個(gè)必備的連續(xù)4 字節(jié)的命令頭,用CLA、I NS、P1 和P2 表示,以及一個(gè)可選的長(zhǎng)度可變的條件體。在C- APDU 中發(fā)送的數(shù)據(jù)的字節(jié)數(shù)由1 字節(jié)的L c 定義,期望卡回送的R- AP􀀁DU 數(shù)據(jù)字段的最大字節(jié)數(shù)由1 字節(jié)的L e 指定,格式見(jiàn)圖2。
R- APDU 由兩部分組成[: 可選的條件體以及必備的2 字節(jié)狀態(tài)碼SW1| SW2,格式見(jiàn)圖3。
在智能卡上電復(fù)位之后,COS 便運(yùn)行起來(lái),開(kāi)始執(zhí)行卡片的初始化工作,完成初始化的COS 處于接收準(zhǔn)備狀態(tài)。COS 一旦查詢到有命令輸入,就采用已經(jīng)被初始化了的通信協(xié)議參數(shù)接收數(shù)據(jù),數(shù)據(jù)全部接收后,存放在內(nèi)存中命令的緩沖區(qū)中,啟動(dòng)命令處理流程,對(duì)命令報(bào)文進(jìn)行語(yǔ)法檢查,然后根據(jù)命令的類別以及應(yīng)用的類別去執(zhí)行相應(yīng)的命令處理程序,命令處理完成后,將需要返回的數(shù)據(jù)存放在響應(yīng)數(shù)據(jù)緩沖區(qū)中,與命令處理結(jié)果的響應(yīng)狀態(tài)碼一起回送給終端。
2 智能卡操作系統(tǒng)測(cè)試方案
COS 測(cè)試主要包括基本功能、防拔插、兼容性以及耐久性測(cè)試:
(1) COS 基本功能的測(cè)試,主要包括文件的測(cè)試、命令功能、命令的執(zhí)行情況、命令出錯(cuò)處理等;
( 2) 由于智能卡在應(yīng)用中往往會(huì)涉及到對(duì)一些敏感數(shù)據(jù)的操作,因此必須針對(duì)在COS 與終端進(jìn)行交互的過(guò)程中被意外事件中斷時(shí)其自動(dòng)恢復(fù)能力進(jìn)行測(cè)試,即防拔插測(cè)試;
( 3) 智能卡的使用壽命是有限的,對(duì)存儲(chǔ)介質(zhì)的過(guò)度損耗是導(dǎo)致智能卡損壞的主要原因,但可以采用軟件優(yōu)化來(lái)均衡對(duì)存儲(chǔ)介質(zhì)的訪問(wèn)從而延長(zhǎng)智能卡的使用壽命,因此在COS 測(cè)試中需要對(duì)智能卡進(jìn)行耐久性測(cè)試;
( 4) 智能卡與終端之間進(jìn)行正常通信的前提是它們遵循相同的協(xié)議,因此在COS 的測(cè)試中需對(duì)協(xié)議的實(shí)現(xiàn)情況進(jìn)行測(cè)試,即協(xié)議測(cè)試。
COS 測(cè)試總體上采用增量測(cè)試的方法,各項(xiàng)內(nèi)容與測(cè)試階段對(duì)應(yīng)見(jiàn)表2。
2. 1 COS 基本功能測(cè)試
灰盒測(cè)試結(jié)合了白盒測(cè)試和黑盒測(cè)試,軟件需求規(guī)格說(shuō)明書(shū)是測(cè)試用例[ 7,8] 的設(shè)計(jì)依據(jù),也是驗(yàn)證軟件滿足其功能需求的依據(jù),在對(duì)需求和結(jié)構(gòu)進(jìn)行覆蓋分析時(shí)須使用同樣的測(cè)試用例?;液袦y(cè)試是發(fā)現(xiàn)軟件潛在缺陷的非常有效的技術(shù)手段。對(duì)于COS 基本功能的灰盒測(cè)試方法如下: 測(cè)試人員根據(jù)ISO/ IEC7816- 4 標(biāo)準(zhǔn)以及具體的需求規(guī)范進(jìn)行測(cè)試用例設(shè)計(jì),對(duì)已有測(cè)試進(jìn)行覆蓋分析來(lái)進(jìn)一步擴(kuò)充測(cè)試用例以確保測(cè)試的充分性,對(duì)于需求的覆蓋率一般要達(dá)到100%,而對(duì)于結(jié)構(gòu)的覆蓋率達(dá)到所要求的即可。從智能卡所遵循的ISO/ IEC 7816- 4 規(guī)范入手設(shè)計(jì)COS 的測(cè)試用例,ISO/ IEC 7816- 4 規(guī)范的主要內(nèi)容包括: 在接口設(shè)備與智能卡之間的通信中所傳送的報(bào)文、命令和響應(yīng)的內(nèi)容; 在處理交換用的行業(yè)間命令時(shí),在接口處所看到的數(shù)據(jù)文件的結(jié)構(gòu); 卡內(nèi)數(shù)據(jù)文件的訪問(wèn)方法; 定義卡內(nèi)數(shù)據(jù)文件訪問(wèn)權(quán)限的安全體系結(jié)構(gòu)。這些都可用模擬終端發(fā)送特定的命令序列給COS,然后根據(jù)COS 執(zhí)行命令的結(jié)果來(lái)進(jìn)行測(cè)試。
智能卡與終端是以APDU 為基本單元通信的,COS 功能測(cè)試主要關(guān)注工作流程、命令參數(shù)、安全狀態(tài)、狀態(tài)碼和響應(yīng)數(shù)據(jù)。因而對(duì)COS 基本功能測(cè)試的對(duì)象就是APDU 序列。
首先需要針對(duì)標(biāo)準(zhǔn)以及需求規(guī)范中描述的每個(gè)命令的APDU 設(shè)計(jì)測(cè)試用例,由于命令解釋模塊首先對(duì)命令緩沖區(qū)中APDU 的4 個(gè)字節(jié)的必備頭進(jìn)行接受分析處理,因此對(duì)各個(gè)命令可依據(jù)圖4 所示的測(cè)試用例樹(shù)來(lái)設(shè)計(jì)測(cè)試用例。
測(cè)試時(shí),判斷命令執(zhí)行結(jié)果是否正確的主要依據(jù)是COS 執(zhí)行APDU 命令后返回的狀態(tài)碼,在COS 中定義了4 種狀態(tài):
1) St ate- Response: 命令執(zhí)行完后,把命令執(zhí)行的結(jié)果存儲(chǔ)在Get Response 專用緩沖區(qū)中,并且卡回送的狀態(tài)碼被設(shè)為61XX,它通知終端發(fā)出Get Response命令來(lái)獲取數(shù)據(jù);
2) St ate- Success: 命令成功執(zhí)行時(shí)返回的狀態(tài),該狀態(tài)不需要終端再使用Get Response 命令來(lái)獲取數(shù)據(jù);
3) St ate- Error: 在執(zhí)行命令過(guò)程中出現(xiàn)了異常情況時(shí)返回的狀態(tài),這時(shí)會(huì)向終端回送錯(cuò)誤代碼,包括命令的參數(shù)出錯(cuò)和在執(zhí)行命令過(guò)程中出現(xiàn)的存儲(chǔ)空間、安全狀態(tài)等錯(cuò)誤;
4) State- T imeout: 在接收Lc 長(zhǎng)度的數(shù)據(jù)的過(guò)程中發(fā)生超時(shí),則返回該狀態(tài),此時(shí)不需要向終端回送錯(cuò)誤代碼。
第1頁(yè)第2頁(yè)
在EVDO 卡的測(cè)試中,以SELECT 命令為例,依據(jù)圖4 設(shè)計(jì)測(cè)試用例,如表3 所示。
對(duì)命令功能的測(cè)試主要是測(cè)試各命令之間的相互關(guān)系以及命令序列所完成的功能。根據(jù)ISO 7816- 4中規(guī)定的命令執(zhí)行時(shí)需要滿足的條件及有關(guān)命令間的相互關(guān)系,描述執(zhí)行命令序列的過(guò)程,然后以非正常和正常事件作為輸入來(lái)設(shè)計(jì)測(cè)試用例。
在EVDO 卡的測(cè)試過(guò)程中,利用團(tuán)隊(duì)自主開(kāi)發(fā)的自動(dòng)化測(cè)試工具,引入腳本技術(shù),實(shí)現(xiàn)COS 測(cè)試的自動(dòng)化,大大地提高了測(cè)試的效率。引入自動(dòng)化測(cè)試技術(shù)具有如下優(yōu)勢(shì):
1)使測(cè)試可以快速準(zhǔn)確地進(jìn)行,減少人為的操作失誤,更多更頻繁地運(yùn)行測(cè)試腳本,使得腳本的執(zhí)行效率高于手工測(cè)試,縮短發(fā)布產(chǎn)品的時(shí)間;
2)對(duì)新版本的程序運(yùn)行已有的測(cè)試腳本,特別是在程序更新較頻繁時(shí),自動(dòng)化測(cè)試可以在短時(shí)間內(nèi)測(cè)試已有的腳本;
3)更好地利用資源,使繁瑣的任務(wù)自動(dòng)化可提高測(cè)試的準(zhǔn)確性以及測(cè)試人員的積極性,從而使測(cè)試人員能有更多精力來(lái)設(shè)計(jì)更好的測(cè)試用例;
4) 自動(dòng)化測(cè)試可通過(guò)重復(fù)執(zhí)行相同的測(cè)試腳本來(lái)獲得測(cè)試的可重復(fù)性和一致性。
2. 2 防拔插和耐久性測(cè)試
防拔插測(cè)試主要檢測(cè)因突然斷電而使操作中斷后智能卡能否自動(dòng)恢復(fù)。主要涉及的是在正常環(huán)境下執(zhí)行正確的命令序列,COS 寫FLASH 時(shí),突然斷電,智能卡能夠保證卡內(nèi)的數(shù)據(jù)依然具有完整性。若命令未能成功執(zhí)行,驗(yàn)證卡內(nèi)數(shù)據(jù)與命令執(zhí)行前是否完全一致,若一致則表示卡片的防插拔功能是有效的。智能卡的使用壽命是有限的,對(duì)智能卡的插拔次數(shù)決定了智能卡的物理壽命,一般來(lái)說(shuō),約在1 萬(wàn)次左右; 而數(shù)據(jù)存儲(chǔ)器的擦寫次數(shù)決定了集成電路芯片的壽命,各廠家生產(chǎn)的芯片其指標(biāo)是不同的。故而必須對(duì)智能卡實(shí)施耐久性測(cè)試,檢驗(yàn)存儲(chǔ)器的擦寫次數(shù)是否會(huì)因?yàn)槿粘J褂枚鲂酒鎯?chǔ)器擦寫的最大值。對(duì)文件的操作是使用智能卡時(shí)主要涉及的內(nèi)容,因而需要模擬日常使用智能卡的行為,對(duì)所有文件的訪問(wèn)頻率進(jìn)行統(tǒng)計(jì),找出具有相對(duì)較高訪問(wèn)頻率的那些文件,在個(gè)人化過(guò)程中分散存儲(chǔ)這些文件,避免某一塊存儲(chǔ)區(qū)域擦寫過(guò)度,均衡整個(gè)存儲(chǔ)器的擦寫。
3 結(jié)束語(yǔ)
根據(jù)COS 的特點(diǎn)給出了COS 的測(cè)試方案,對(duì)于每個(gè)測(cè)試項(xiàng)給出了其測(cè)試的方法和技術(shù)。在測(cè)試中,結(jié)合對(duì)測(cè)試結(jié)果的分析,進(jìn)一步補(bǔ)充測(cè)試用例。在EVDO 卡的開(kāi)發(fā)中按照文中的測(cè)試方案進(jìn)行了測(cè)試,經(jīng)反復(fù)測(cè)試,開(kāi)發(fā)的EVDO 卡通過(guò)了第3 方測(cè)試,該卡正應(yīng)用于生產(chǎn)。