1 引言
由于移動(dòng)公網(wǎng)的廣泛發(fā)展和手機PDA 的大力普及,移動(dòng)終端作為固網(wǎng)上業(yè)務(wù)服務(wù)器的訪(fǎng)問(wèn)接入終端也變得越來(lái)越常見(jiàn)。然而,移動(dòng)終端通過(guò)基于GPRS/CDMA的移動(dòng)公網(wǎng)接入業(yè)務(wù)服務(wù)器的過(guò)程存在著(zhù)較大的安全風(fēng)險。在沒(méi)有執行任何安全保護措施的情況下,移動(dòng)終端就與業(yè)務(wù)服務(wù)器進(jìn)行數據傳輸,很容易導致雙方傳輸的數據被別有用心的人截取或者篡改,如果這些數據涉及到商業(yè)敏感信息,這將對雙方的利益帶來(lái)巨大的損失。并且,移動(dòng)終端雖然體積小巧,方便攜帶,也容易丟失和被盜,再加上設備的非授權使用,授權用戶(hù)的不合理或者惡意的行為,這些全都會(huì )帶來(lái)安全威脅。因而,尋找給移動(dòng)終端和業(yè)務(wù)服務(wù)器的訪(fǎng)問(wèn)過(guò)程增加安全性的解決方案是人們追求的目標。IPSec VPN技術(shù)是目前普遍使用的方法,先在公共網(wǎng)絡(luò )上建立一個(gè)私有隧道,然后才在這個(gè)隧道上進(jìn)行雙方的數據傳輸。這樣,安全性確實(shí)會(huì )得到一定的提高,但是如果沒(méi)有智能卡的幫助,安全性還是會(huì )大打折扣。因此,針對這種情況,設計了一個(gè)基于智能卡的移動(dòng)IPSec VPN安全接入終端系統,本文重點(diǎn)介紹該系統中CSP的開(kāi)發(fā)。 2 相關(guān)背景
2.1智能卡與PC/SC規范 智能卡是一張內含嵌入式集成電路芯片的信用卡般大小的塑料卡,具有儲存信息量大,數據保密性好,抗干擾能力強,儲存可靠,讀寫(xiě)設備簡(jiǎn)單,使用靈活,操作速度快,脫機工作能力強,易于攜帶等特點(diǎn)。本系統所使用的智能卡是一張特制的內含有交換密鑰對,簽名密鑰對和證書(shū)用以提供加解密、認證等服務(wù)的電子卡。 PC/SC規范是一套為集成電路卡(ICC)與個(gè)人計算機系統設計進(jìn)行交互的規范,能夠讓智能卡方便地訪(fǎng)問(wèn)WindoW平臺。其主要優(yōu)點(diǎn)就是讓?xiě)贸绦虿槐貫榱伺c智能卡通信而去了解智能卡讀卡器的細節,應用程序通過(guò)PC/SC規范和智能卡讀卡器通信,后者再通過(guò)ISO7816與智能卡進(jìn)行通信來(lái)獲取智能卡提供的服務(wù),其傳輸的包結構是TPDU。 1.2 Crypto API體系結構與CSP Crypto API是微軟提供的一套公共接口,包含了一系列的函數,為應用程序提供加解密、數字簽名、哈希等安全服務(wù),而應用程序不必關(guān)心其具體實(shí)現。不同的供應商可以開(kāi)發(fā)獨立的加密模塊,這些模塊成為加密服務(wù)提供者(Cryptographic Service Provider CSP),完成密鑰生成/交換、加解密、數字簽名、認證等服務(wù)的真正模塊。微軟默認的CSP是RSA Based Provider,使用RSA公司的加密算法。一個(gè)系統中可以加載多個(gè)CSP模塊,它們相互獨立。應用程序可以使用任意一個(gè)CSP模塊,而不必關(guān)心它的具體實(shí)現,每個(gè)CSP都對Crypto API進(jìn)行不同的實(shí)現。 Crypto API的體系結構如圖1所示。

從圖1可以看出,它分為應用層:系統層和加密服務(wù)提供層。處于應用層的應用程序通過(guò)Crypto API來(lái)調用CSP模塊提供的各種服務(wù)。 3 軟硬件結合的CSP開(kāi)發(fā)
本文介紹的移動(dòng)安全接入終端系統在WINCE下開(kāi)發(fā),使用WIND0w MOBILE 5.0 SDK。系統分兩層,彼此間相互獨立,上層進(jìn)行撥號,下層給上層提供CSP支撐,上下兩層通過(guò)系統來(lái)整合。CSP可以基于軟件實(shí)現,也可以基于硬件實(shí)現,還可以基于軟硬件結合實(shí)現;谲浖䦟(shí)現的C SP,其使用的密鑰對及算法與操作系統有關(guān),安全性不高;而基于硬件實(shí)現的CSP雖然安全性較高,但是費用昂貴;而基于軟硬件實(shí)現的CSP, 由于將密鑰技術(shù)對生成和加解密操作與操作系統分離,所以其密鑰的管理和加解密比基于軟件的CSP安全提高了很多,而與安全性方面沒(méi)有多少關(guān)系的部分使用軟件實(shí)現,費用比基于硬件實(shí)現的CSP降低了許多,可以說(shuō)是一種比較折中的選擇。本系統使用的CSP采用軟硬件結合的方案, 目標是提供一個(gè)基于SDIO智能卡的CSP。哈希、解密等功能是不需要硬件實(shí)現的, 因此這些部分可以用軟件實(shí)現。而WINCE系統中包含了這部分的軟實(shí)現,所以在設計中可以利用現有資源,只在需要硬實(shí)現的部分才對卡進(jìn)行操作,這樣既提高了性能又不影響安全性。 在對卡的調用中, 命令和響應報文要符合IS07816-4標準,因此需要一個(gè)將數據根據智能卡指令組裝成智能卡可識別的APDU的程序,由此程序負責數據格式的轉換。 根據以上設計原理的分析,可得圖2所示的CSP系統結構圖。

將CSP的實(shí)現分為3個(gè)模塊:CSP主程序模塊、CSP圖形界面模塊、CSP智能卡訪(fǎng)問(wèn)模塊

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