物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

基于USB和SD接口智能卡的CSP設(shè)計

作者:婁曉晉,陳恭亮,楊樹堂
來源:中國一卡通網(wǎng)
日期:2011-11-14 09:24:49
摘要:開發(fā)基于智能卡的CSP 能提供高可靠性和安全性的加密服務(wù),同時由于智能卡的小巧和可便攜性的特點,使得它能用于諸如手機、掌上電腦、PC 機等各種終端設(shè)備。論文提出了一套基于USB 和SD 接口智能卡的CSP 體系結(jié)構(gòu)的設(shè)計,智能卡中文件系統(tǒng)結(jié)構(gòu)的設(shè)計以及CSP 命令流的模塊設(shè)計。它的最大特點是能夠很方便地集成多種廠商的智能卡設(shè)備。
關(guān)鍵詞:智能卡CSPUSBSD接口

    為了方便在Windows 上提供加密服務(wù),Microsoft 提出了一套CSP/Crypto API 的開發(fā)模式,它提供了一套加解密和簽名認證的編程接口供應(yīng)用程序開發(fā)人員調(diào)用,通過調(diào)用這套函數(shù)接口,應(yīng)用程序可以利用軟件或硬件(智能卡)為用戶提供強大的加解密服務(wù)。近幾年來,由于智能卡的小巧,方便易用和高安全可靠性使得它已成為主流的安全介質(zhì)。采用基于智能卡的CSP 能充分發(fā)揮智能卡即插即用、總線供電的特點,使安全設(shè)備具有可攜帶性和靈活性,能方便地在各種場合進行簽名加密和認證。然而目前每個智能卡廠商都需要開發(fā)基于自己智能卡的CSP,如果能提供一套方便的、集成多廠商智能卡的CSP 的解決方案,將大大提高開發(fā)效率,節(jié)約開發(fā)成本,具有很高的應(yīng)用價值和很好的市場前景。

    1 CSP簡介

    1.1 關(guān)于Microsoft CryptoAPI和CSP 

    為了提供一些諸如加密/ 解密、簽名/ 認證、隨機數(shù)的生成等基本的信息安全服務(wù),一些標準化組織和業(yè)界的大廠商提出了各自的一套關(guān)于提供這些服務(wù)的API,目前有關(guān)加密API 的國際標準和規(guī)范主要有:Intel CDSA、RSA PKCS#11 和微軟CryptoAPI。其中微軟CryptoAPI 是PKI 推薦使用的加密API[1],它為應(yīng)用程序的開發(fā)者提供了一套完備的Win32 環(huán)境下加解密和簽名驗證接口,而CSP(Cryptographic Service Provider)則是真正實現(xiàn)這些加解密和簽名驗證功能的基本模塊。 

    如圖1 所示,應(yīng)用程序通過調(diào)用CryptoAPI 提供的接口來使用所提供的安全服務(wù),操作系統(tǒng)根據(jù)上層的API 調(diào)用來選擇合適的SPI,相應(yīng)的CSP 則通過統(tǒng)一的接口(SPI)來得到上層調(diào)用的參數(shù),API 函數(shù)的具體實現(xiàn)則由具體對應(yīng)的CSP提供。其中CSP 的實體是一個DLL 和一個簽名文件,DLL 中包括:加密設(shè)備提供函數(shù)、密鑰產(chǎn)生和交換函數(shù)、數(shù)據(jù)加密/ 解密函數(shù)、散列和數(shù)字簽名函數(shù)等幾類共24個基本的函數(shù)。在函數(shù)具體的實現(xiàn)中可以采用軟件實現(xiàn)和基于USB 或SD 接口智能卡的硬件實現(xiàn)方式。本文提出了一套基于USB 和SD 接口智能卡的CSP 設(shè)計,應(yīng)用程序可以通過CSP 在卡中建立公/ 私鑰文件、對稱密鑰文件,并且能夠進行加解密和簽名認證。由于智能卡在不同文件的訪問上可以設(shè)置不同的密鑰來規(guī)定文件的訪問權(quán)限,因此從硬件上保證了密鑰文件的安全存儲。

    1.2 關(guān)于智能卡 

    這里所用到的智能卡也稱CPU 卡,卡中包含中央處理器C P U 、E E P R O M 、R A M、R O M,其中R O M 中固化有COS(Chip Operating System)。智能卡對外通信的接口最常見的有應(yīng)用于PC 上的USB 接口以及用于手持設(shè)備上的SD 接口。目前業(yè)界應(yīng)用最廣的智能卡標準是ISO7816,各大智能卡廠商會根據(jù)此標準來生產(chǎn)智能卡以及COS。智能卡能和外界進行通信,根據(jù)傳入的命令在內(nèi)部執(zhí)行并且傳出結(jié)果,我們所用到的智能卡能夠在內(nèi)部生成和保存RSA 的公私鑰對,進行RSA 加解密運算。

    在智能卡中有一個文件系統(tǒng),根據(jù)ISO7816-4,智能卡內(nèi)支持兩種類型的文件:DF(Dedicated File)和E F(Elementary File)。DF 類似于DOS 中目錄文件,其中可以包含DF 和EF;EF 類似于DOS 中的數(shù)據(jù)文件,是真正存放數(shù)據(jù)的文件,公私鑰和對稱密鑰文件對屬于EF 文件;在每個智能卡文件系統(tǒng)中有一個根目錄文件MF(Master File),所有的DF 和EF 都存放在此根目錄文件中。EF 存在兩種類型,一種是二進制的EF,另一種是記錄型EF。二進制EF 文件是一種無結(jié)構(gòu)的文件,而記錄型的EF 文件則是按記錄來進行存取的,每條記錄的長度可以在文件創(chuàng)建初指定。各智能卡廠商編寫的COS 對ISO7816 的支持不同,如有的廠商COS不支持記錄文件,文件訪問權(quán)限的實現(xiàn)大不相同等等,這就需要各廠商開發(fā)針對自己智能卡的CSP,這樣不利于節(jié)約開發(fā)成本和提高開發(fā)效率。本文提出的這套CSP 架構(gòu)能夠方便地集成不同廠商不同COS 版本的智能卡,從而解決該問題。

    1.3 基于USB 和SD 接口智能卡的CSP

    目前智能卡的接口主要是USB 接口和SD 接口兩種,前者主要用于PC 機上,支持的操作系統(tǒng)多為各版本的PC Windows 系統(tǒng)(Windows 98/2000/XP);后者主要用于一些手持設(shè)備,如智能手機、掌上電腦,而這些手持設(shè)備上可以使用W i n -dows CE 操作系統(tǒng)。本文所介紹的CSP 主要是在這兩種操作系統(tǒng)上進行開發(fā)的。對于USB 接口智能卡,可以通過PC機上的CSP(基于Windows98/2000/XP)直接對其進行操作;對于SD接口智能卡,有兩種操作方式:一種是在手持設(shè)備上開發(fā)CSP(基于Windows CE)對其進行操作,另一種方式是通過PC 機上的CSP 和接入PC機的手持設(shè)備在底層進行通訊,CSP 把命令通過PC 機發(fā)送到手持設(shè)備的智能卡中,此時手持設(shè)備相當(dāng)于一臺讀卡器。

    2 基于USB和SD接口智能卡體系結(jié)構(gòu)和模塊設(shè)計

    2.1 CSP 的邏輯結(jié)構(gòu)

    我們提出的這套CSP 的設(shè)計主要包括三個部分:CSP 的邏輯結(jié)構(gòu)、智能卡中文件組織結(jié)構(gòu)、CSP 的基本命令流模塊。CSP 的基本操作是對密鑰的操作,其中密鑰主要是用于對稱加密的會話密鑰和用于交換和簽名的公/ 私密鑰。密鑰操作主要包括:產(chǎn)生密鑰、銷毀密鑰、導(dǎo)入導(dǎo)出密鑰、用對稱密鑰進行加密解密、用公/ 私密鑰對進行簽名驗證等。

    CSP 的邏輯結(jié)構(gòu)如圖2 所示。密鑰由密鑰提供者(KeyProvider) 來提供,密鑰提供者可以分為會話密鑰提供者(Session Key Provider)和公私密鑰提供者(RSA Key Provider),負責(zé)具體密鑰的產(chǎn)生、密鑰參數(shù)設(shè)置、密鑰的操作的實現(xiàn)。密鑰提供者驅(qū)動智能卡產(chǎn)生RSA 公/ 私密鑰,并保存在卡內(nèi)相應(yīng)的密鑰文件(EF)中,同時智能卡還提供簽名、驗證和隨機數(shù)生成等操作,這些操作都是由密鑰提供者根據(jù)ISO7816-4 協(xié)議在內(nèi)存中構(gòu)建相應(yīng)的命令并發(fā)送到智能卡由其執(zhí)行。相對于會話密鑰,CSP 則可提供軟實現(xiàn),在內(nèi)存中來進行操作。 

    密鑰容器(Key Container)控制密鑰提供者,每一個密鑰容器對于一個特定的應(yīng)用。對于一個新的應(yīng)用,CSP 創(chuàng)建一個新的密鑰容器,設(shè)置所需的參數(shù),通過控制密鑰提供者來產(chǎn)生特定的密鑰,最后對其進行操作。對于用戶,各個密鑰容器之間是透明的,互不影響互不干涉,統(tǒng)一應(yīng)用于同一個CSP 中。密鑰容器的創(chuàng)建涉及到在智能卡上建立一個目錄文件(DF),其中有關(guān)于該容器的密鑰文件(EF)都放在該目錄文件下。CSP 管理員(CSP Manager)充當(dāng)一個全局管理者的角色,它是全局唯一的,負責(zé)建立和管理各類CSP 上下文環(huán)境。每個用戶有自己特定的CSP 應(yīng)用環(huán)境,CSP 上下文則代表一個用戶具體的CSP 應(yīng)用環(huán)境,CSP 管理員負責(zé)初始化CSP 的管理環(huán)境,主要包括初始化智能卡和設(shè)置智能卡管理員密鑰文件。CSP 上下文(CSP Context)相當(dāng)于一個用戶的應(yīng)用環(huán)境,所有的應(yīng)用都是在CSP 上下文中完成,CSP 應(yīng)用環(huán)境主要包括該用戶所建立密鑰容器的類型、密鑰提供者的類型和密鑰容器所在的具體位置。CSP 上下文在智能卡中為每個用戶創(chuàng)建該CSP 應(yīng)用主目錄文件,保存用戶密鑰文件,為每個應(yīng)用創(chuàng)建密鑰容器,并對其進行管理。

    2.2 智能卡中的文件系統(tǒng)結(jié)構(gòu)

    對于上面提出的CSP 邏輯結(jié)構(gòu),在智能卡中應(yīng)有相應(yīng)的文件系統(tǒng)結(jié)構(gòu)對其進行支持,對CSP 管理員、CSP 上下文、密鑰容器和密鑰提供者的操作都涉及到智能卡相應(yīng)的文件操作,在卡中建立特定文件結(jié)構(gòu)來進行密鑰的管理和操作。我們設(shè)計的該CSP 智能卡文件系統(tǒng)結(jié)構(gòu)如圖3 所示,其中CSP 管理員初始化卡,建立根目錄(MF),在根目錄下建立管理員密鑰文件。只有擁有合法密鑰的用戶才能擁有管理員權(quán)限;為用戶建立CSP 上下文,即在根目錄下面為每一個CSP 上下文建立一個目錄文件(DF),不同的目錄文件對應(yīng)于不同的CSP上下文,最后在根目錄下創(chuàng)建一個記錄型的EF 文件,該文件每一條記錄對應(yīng)一個上下文,記錄它所在的目錄ID、CSP上下文名字等信息。CSP 上下文在自己的目錄文件中建立用戶密鑰文件、密鑰容器目錄文件,以及記錄密鑰容器信息的記錄型EF文件。每一個密鑰容器對應(yīng)于一個目錄文件,在密鑰容器的目錄文件中,密鑰容器建立自己特定的密鑰文件,包括會話密鑰和公/ 私密鑰文件。各密鑰容器目錄相互獨立互不影響。

    2.3 CSP 中的命令流

    該CSP 設(shè)計的兩大部分是CSP 邏輯結(jié)構(gòu)設(shè)計和CSP 命令流的設(shè)計。CSP 命令流是CSP 的邏輯模塊(CSP Manager,CSP Context,CSP Container,Key Provider)根據(jù)ISO7816-4 中命令格式在內(nèi)存中構(gòu)建命令并發(fā)送到智能卡中,智能卡執(zhí)行命令后返回結(jié)果。該CSP 中對智能卡進行操作的模塊包括:命令構(gòu)建模塊、命令傳輸模塊、命令解析模塊。CSP 上層邏輯模塊對智能卡操作的過程主要包括:通過命令構(gòu)建模塊構(gòu)建要進行操作的命令,命令傳輸模塊調(diào)用卡的驅(qū)動把命令發(fā)送到智能卡中執(zhí)行,執(zhí)行后通過命令傳輸模塊得到返回的結(jié)果,再由命令解析模塊解析該結(jié)果。 

    這樣設(shè)計最大的好處在于決策和執(zhí)行分開。邏輯模塊決策要執(zhí)行的命令,由命令流模塊構(gòu)建和傳輸命令。命令流模塊可以針對不同廠商的智能卡來設(shè)計和實現(xiàn),比如根據(jù)每個智能卡廠商COS 對ISO7816-4 的支持不同,分別針對其開發(fā)不同的命令構(gòu)建模塊和命令解析模塊集成到一個CSP 中。邏輯模塊只負責(zé)決策要實施的命令,具體命令的構(gòu)建、傳送、解析對它是透明的。這樣就能在不改變上層邏輯結(jié)構(gòu)模塊的前提下,靠增加命令流模塊方便地集成更多廠商智能卡設(shè)備;同時由于命令傳輸模塊和智能卡驅(qū)動分離,通過命令傳輸模塊調(diào)用不同的驅(qū)動把命令發(fā)往不同接口的智能卡,這樣該CSP 就能支持基于不同平臺、不同終端、不同廠商的USB 和SD 接口智能卡。

    3 結(jié)論

    開發(fā)這樣一套能集成不同廠商智能卡的CSP 不僅能節(jié)約開發(fā)成本,提高開發(fā)效率,而且由于其本身支持SD 接口智能卡,使之能用于手機和Pocket PC 這樣的掌上設(shè)備,可以開發(fā)出基于其上的功能強大且靈活的應(yīng)用程序,這些應(yīng)用程序可以被用于諸如個人金融、證券、保險等行業(yè)和領(lǐng)域,應(yīng)用前景十分廣闊。