CSP在基于智能卡的移動終端中的開發與應用
將CSP的實現分為3個模塊:CSP主程序模塊、CSP圖形界面模塊、CSP智能卡訪問模塊
(1)CSP主程序模塊
主程序模塊是CSP的核心模塊,實現CSP中的業務邏輯并以Crypto SPI標準接口形式提供。主程序模塊通過調用圖形界面模塊的相應圖形界面實現與用戶的交互(在CRYPT—SLIENT標志未設置時)。主程序模塊對智能卡的訪問及數據傳送都是通過智能卡訪問模塊來實現的。
(2)CSP圖形界面模塊
圖形界面模塊負責CSP與用戶的交互實現。主要有卡片初始化時的PIN碼設置界面和程序運行中提示用戶輸入PIN碼以驗證其合法性的界面。
(3)CSP智能卡訪問模塊
智能卡訪問模塊是CSP使用智能卡上服務的實現模塊。它負責與智能卡建立連接,數據傳輸,釋放連接等。它接收主程序模塊的智能卡訪問請求,并根據請求組織相應的APDU發送到智能卡,以及從卡上獲取返回的結果,最終將結果數據提交給主程序模塊。
將CSP劃分成3個模塊,可以降低程序各個模塊之間的耦合度,實現起來比較靈活。如果需要更改程序界面就不需要去改變CSP主程序模塊。同樣,當使用另外一種智能卡時,只需要替換相應的智能卡實現模塊,而不需要去改變主程序模塊和程序界面,這樣就可以很方便地將第三方的智能卡實現模塊加載進來,實現對多智能卡的支持。
CSP主程序模塊以DLL形式提供,是實現CSP的關鍵,其中的各個類都有具體的功能職責,并且通過組合和關聯關系形成一定的層次關系。此外在CSP中,還有其他的輔助函數定義,如塊加密時的編碼與解碼函數等。其類設計如下:
(1)CContext
CContext類對應了一個用戶上下文對象,在邏輯上相當于密鑰庫。它通過組合關系包括了CSP中的其他類對象,并通過這些類對象來進行相應的操作。C C ontext作為用戶上下文對象,是提供Crypto SPI中23個接口函數實現的對象。
(2)C Container
CContainer類對應了一個密鑰容器,一個用戶上下文往往包含多個密鑰容器。C Container對象中會緩存其包括的證書信息,這里緩存交換密鑰對證書和簽名密鑰對證書兩個證書。
(3)CCard
CCard類代表了擴展卡類型。在這個類中封裝了所有對卡的安全操作,包括驗證、加解密、存儲管理等。一個CCard對象會緩存對應擴展卡上的所有密鑰容器對象,這樣要訪問密鑰容器的相關信息就會變得方便、快捷。
(4)CRSAProvider
CRSAProvider類是用于調用系統提供的CSP的。它負責獲取系統提供CSP的句柄,利用此句柄調用相關的功能實現以及釋放得到的句柄。
(5)CPPManager
CPPManager類也是一個輔助控制類,它的定義只是為了使得程序更加清晰。它的功能是根據CPGetProvParam中參數的不同值取得CSP的相關信息。
(6)CHandleTable
CHandleTable類是一個輔助存儲類,它用于存儲CSP中密鑰容器等對象的句柄。它采用Hash表結構來存儲對象句柄,并且提供了相應的增加、刪除、讀取等功能。CSP編寫測試完成后,必須要讓微軟對其CSPDLL進行簽名,這樣該C SP才能裝進操作系統內。這步比較簡單, 只需要將其DLL與一個資源描述文件作為附件發往cspsign@microsoft.com就可以了,簽名周期一般為3天。完成簽名后,CSP就可以安裝到系統中工作了。在Windows Mobile 5.0系統中,需在注冊表中注冊該CSP,CSP安裝完成,以后可以通過Crypto API接口調用CSP提供的安全服務了。
4 結束語
本文不僅對微軟加密體系進行了詳細的分析,而且結合移動安全終端系統,對智能卡上的CSP的開發進行了充分的介紹和分析。CSP通過標準的Crypto SPI接口嵌入到微軟加密體系中,使用戶可以通過Crypto API接口來使用智能卡上所提供的高安全性的加密服務,來滿足日益增加的網絡安全需求。
評論