新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CSP在基于智能卡的移動終端中的開發與應用

        CSP在基于智能卡的移動終端中的開發與應用

        作者: 時間:2011-01-04 來源:網絡 收藏

        的實現分為3個模塊:主程序模塊、圖形界面模塊、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接口來使用智能卡上所提供的高安全性的加密服務,來滿足日益增加的網絡安全需求。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平遥县| 凤山市| 湘乡市| 汉沽区| 平凉市| 丹江口市| 阳城县| 纳雍县| 隆子县| 泉州市| 都昌县| 保靖县| 陆川县| 色达县| 墨玉县| 特克斯县| 贵德县| 蓬安县| 永州市| 巨野县| 扎鲁特旗| 朝阳区| 申扎县| 尤溪县| 东乌| 沙坪坝区| 富宁县| 三明市| 札达县| 乌兰浩特市| 松阳县| 观塘区| 铜陵市| 三穗县| 原平市| 长海县| 泰顺县| 荥经县| 刚察县| 山东| 赞皇县|