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