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