郭劍嵐 陳俞強 郭鴻志
1東莞職業(yè)技術(shù)學(xué)院計算機工程系 廣東 523808
2廣東工業(yè)大學(xué)計算機學(xué)院 廣東 510006
本文主要闡述了智能卡COS的體系結(jié)構(gòu)、基本功能模塊和工作原理等內(nèi)容,同時對智能卡命令系統(tǒng)的相關(guān)理論作了著重闡述,包括了命令特征分析、命令分類方法、命令系統(tǒng)模型和開發(fā)方法的探討等。接著用特殊應(yīng)用的命令設(shè)計與實現(xiàn)來舉例說明,以此驗證理論的正確與否。
COS直接運行于芯片平臺上,是智能卡內(nèi)軟件的核心部分,也是卡片所支持全部應(yīng)用的基礎(chǔ)。COS的主要任務(wù)是從智能卡傳出和傳入數(shù)據(jù)、控制命令的執(zhí)行、管理文件、維護內(nèi)存空間、管理和執(zhí)行加密算法、執(zhí)行應(yīng)用代碼。因此,可以將智能卡COS的體系結(jié)構(gòu)模型劃分為COS內(nèi)核層和應(yīng)用層兩大部分(如圖1所示)。
圖1 智能卡COS體系結(jié)構(gòu)模型
根據(jù)智能卡COS的體系結(jié)構(gòu)模型,可以得到COS內(nèi)核的邏輯功能模塊主要分為四大部分:通信管理模塊、文件系統(tǒng)模塊、安全控制模塊和命令解釋模塊。下面分別論述各個模塊的具體功能。
通信管理模塊主要是依據(jù)智能卡所使用的信息傳輸協(xié)議,對由讀寫設(shè)備發(fā)出的命令進行接收,同時把對命令的響應(yīng)按照傳輸協(xié)議的格式發(fā)送出去。通信管理模塊確保智能卡與終端的信息傳輸正確無誤,保證雙方對傳輸?shù)男畔⒔馕鼍哂幸恢滦?。整個通信過程中需要處理ATR的發(fā)送、通信參數(shù)的PPS協(xié)商、APDU報文格式和具體的通信協(xié)議T=0或T=1協(xié)議等幾個重要的問題。
文件系統(tǒng)是COS的重要模塊之一,它負責(zé)組織、管理和維護智能卡內(nèi)存儲的所有的數(shù)據(jù)。智能卡上的數(shù)據(jù)或應(yīng)用是以文件的形式存放在FLASH或EEPROM等存儲介質(zhì)中的,COS通過對智能卡內(nèi)的文件系統(tǒng)的管理和組織來實現(xiàn)對數(shù)據(jù)信息和應(yīng)用的存儲和管理。
安全控制模塊是智能卡COS中最為核心的模塊,它對智能卡內(nèi)數(shù)據(jù)提供安全保障,同時也對外提供安全定義。在智能卡中,COS安全模塊的內(nèi)容主要包括加密算法的實現(xiàn)、系統(tǒng)的安全服務(wù)和安全控制策略的實現(xiàn)。它涉及到卡的鑒權(quán)與驗證方式的選擇,包括COS在對卡中文件進行訪問時的權(quán)限控制機制,還關(guān)系到卡中信息的保密機制。
命令解釋模塊是芯片操作系統(tǒng)的重要組成部分,它負責(zé)解析卡片與終端之間交互的信息指令,并作相應(yīng)的處理。命令是卡片和外界交互的基礎(chǔ),命令處理是COS的主要職能,它也是系統(tǒng)代碼和應(yīng)用代碼之間的重要接口。終端和卡片之間的通信過程都是基于命令響應(yīng)的方式處理的,COS利用IO接口接受命令報文,通過命令解釋器來解釋報文內(nèi)容,并進行相應(yīng)的處理,最終通過IO接口返回響應(yīng)狀態(tài)和響應(yīng)數(shù)據(jù)。
COS命令解釋的調(diào)度流程包括外部命令的接受,命令處理流程的啟動以及命令響應(yīng)數(shù)據(jù)和狀態(tài)的送回。其中,APDU命令報文的接收是按照CLA、INS、P1、P2、P3、DATA數(shù)據(jù)域的順序依次接收,并將接收結(jié)果保存在命令緩沖區(qū)的相應(yīng)字段中。若數(shù)據(jù)接收失敗,則命令報文的輸入中斷退出。不同的命令具有惟一的指令代碼INS,COS主守護流程根據(jù)終端發(fā)出的APDU命令的INS,跳轉(zhuǎn)到相應(yīng)的命令處理模塊中進行處理。在命令解釋模塊中,不僅要對相應(yīng)的命令的參數(shù)P1、P2、P3進行嚴格檢查,還應(yīng)對命令的執(zhí)行的安全條件進行檢測。
傳統(tǒng)的COS各模塊之間的調(diào)度關(guān)系一般采用層次調(diào)度關(guān)系,COS中所有從文件系統(tǒng)中到終端的數(shù)據(jù)都需要經(jīng)過安全模塊的處理,包括數(shù)據(jù)的加解密,對文件訪問是否符合當(dāng)前的安全條件,命令的執(zhí)行操作是否在安全環(huán)境中。
改進的COS各模塊之間的調(diào)用關(guān)系采用與層次結(jié)構(gòu)相似的調(diào)度方式,但與傳統(tǒng)的調(diào)用方式相比,具有更高的效率。改進的調(diào)用方式主要體現(xiàn)在安全控制模塊的設(shè)置上(如圖2所示)。
改進的COS模塊調(diào)用方式中,不是所有信息都需要進行安全處理,例如連續(xù)對同一文件進行訪問時就不需要重復(fù)進行安全處理,而是根據(jù)命令的類別來進行適當(dāng)?shù)陌踩幚怼_@樣節(jié)省了系統(tǒng)開銷,提高了系統(tǒng)的效率。
圖2 改進COS模塊關(guān)系
功能層各模塊之間的關(guān)系為程序調(diào)度請求和數(shù)據(jù)響應(yīng)關(guān)系,模塊的輸出為程序調(diào)度請求,輸入為調(diào)度后得到的數(shù)據(jù)響應(yīng),調(diào)度和響應(yīng)均以事務(wù)來表示,而事務(wù)表示一組數(shù)據(jù)以及在數(shù)據(jù)上的一組操作。圖3表示了改進COS模塊調(diào)用方式中模塊的調(diào)度關(guān)系和狀態(tài)轉(zhuǎn)換,表1列出了模塊狀態(tài)轉(zhuǎn)換及調(diào)度關(guān)系。
圖3 模塊狀態(tài)轉(zhuǎn)換及調(diào)度關(guān)系圖
表1 模塊狀態(tài)轉(zhuǎn)換及調(diào)度關(guān)系表
由于互聯(lián)網(wǎng)的迅速發(fā)展和普及,人們對網(wǎng)上身份認證的要求也越來越高,PKI體系成了解決Internet的安全問題的最優(yōu)解決方案。IC卡由于體積小、安全性高、攜帶方便等特點而被迅速引入到PKI體系結(jié)構(gòu)中來,成為了目前PKI體系最佳的支持平臺。智能卡通過實現(xiàn)非對稱加密算法,成為一張PKI卡。由于密鑰在卡內(nèi)生成,加解密工作在卡內(nèi)完成,不會以明文形式出現(xiàn),同時與PIN結(jié)合,可防止盜用,加上數(shù)據(jù)可長期保存以及便于攜帶和操作等特點,因而它可以成為數(shù)字簽名的理想載體。
智能卡在PKI中主要工作為:數(shù)字簽名和簽名驗證、加解密運算操作、證書和密鑰的存儲、證書的解析等。與PKI應(yīng)用相關(guān)的智能卡常用命令是以ISO/IEC7816-8規(guī)范為基礎(chǔ)上建立的,歸納如表2所示。
下面選取ENCRYPT命令作詳細說明。ENCRYPT命令功能主要用于對數(shù)據(jù)進行非對稱算法(RSA算法)的加密計算,輸入的是加密前的明文、密鑰,輸出的是加密后的密文,在執(zhí)行本命令之前先執(zhí)行MANAGE SECURITY ENVIRONMENT命令。加密算法在此處選用RSA算法,編碼格式為RSAESPKCS1-V1_5。該命令報文結(jié)構(gòu)如表3所示。
表2 PKI應(yīng)用相關(guān)命令
表3 數(shù)據(jù)加密命令報文
該命令實現(xiàn)的偽代碼如下:
STATUS pki_Encrpyt()
{ readUART(DAT,LEN); //將明文內(nèi)容放在DAT緩沖區(qū)中
if(TRUE == CheckSecCond()&& TRUE ==CheckP1P2())
{//檢測安全操作條件和參數(shù)P1P2
GetKey(); //從卡中獲取RSA密鑰
PKCS_1V5_ENCODE(DAT,LEN); //對原始數(shù)據(jù)進行PKCS1-V1_5編碼
Encrypt(data_encode,KEY); //進行加密運算
return SW9FXX; //返回狀態(tài),有xx字節(jié)長度的密文數(shù)據(jù)需要取出
} else
return ERROR; } //返回錯誤狀態(tài)
為了加強密鑰計算的安全性和數(shù)據(jù)保密性,一般運算需要對原始報文按照一定格式進行編碼,實際運算是對編碼以后數(shù)據(jù)的運算。此處采用的編碼格式為RSAES-PKCS1-V1_5編碼格式,詳細編碼格式和加密流程參照PKCS#1和PKCS#11規(guī)范。
[1]夏志遠.智能卡操作系統(tǒng)的研究與實現(xiàn)[D].湖北:華中科技大學(xué)圖書館.2006.
[2]ISO7816-4.Organization.security and commands for interchange[S].2002.
[3]李翔.智能卡研發(fā)技術(shù)與工程實踐[M].北京:人民郵電出版社.2003.
[4]黃健.智能卡COS的研究與設(shè)計[D].廣東:廣東工業(yè)大學(xué)圖書館.2008.
[5]劉玉珍,涂航,張煥國.實用智能卡操作系統(tǒng)的設(shè)計與實現(xiàn)[J].武漢大學(xué)學(xué)報(自然科學(xué)版).2000.
[6]張魯國,馬自堂.智能卡操作系統(tǒng)中存儲管理設(shè)計[J].微計算機信息.2005.
[7]邵華,王恒奎,王東琳.基于UML建模語言的開放式智能卡應(yīng)用模型[J].計算機工程.2004.