一種基于usbkey的csp實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)信息安全領(lǐng)域,具體地說(shuō)是一種基于USBKEY的CSP實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]近十年來(lái),信息技術(shù)尤其是計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)得到了飛速發(fā)展。人們得益于信息革命帶來(lái)的巨大機(jī)遇的同時(shí),不得不面對(duì)信息安全問(wèn)題的嚴(yán)峻考驗(yàn)。為保證網(wǎng)上數(shù)字信息的傳輸安全,除了在通信傳輸中采用更強(qiáng)的加密算法等措施之外,必須建立一種信任及信任驗(yàn)證機(jī)制,保證傳輸數(shù)據(jù)的認(rèn)證、完整性、機(jī)密性和不可否認(rèn)性。
[0003]CryptoAPI是一個(gè)應(yīng)用程序編程接口,向開(kāi)發(fā)人員提供信息安全方面的各種功能,包括各種加密算法、數(shù)字簽名算法以及對(duì)密鑰的管理等,這些功能實(shí)現(xiàn)了信息的保密性、完整性和不可抵賴(lài)性。CryptoAPI定義了很多函數(shù)以及與函數(shù)相關(guān)的常數(shù)、結(jié)構(gòu)、對(duì)象,開(kāi)發(fā)人員不用知道底層的細(xì)節(jié)就可以調(diào)用這些函數(shù)來(lái)實(shí)現(xiàn)相關(guān)功能。上層應(yīng)用程序通過(guò)CryptoAPI函數(shù)對(duì)CSP進(jìn)行操作,并實(shí)現(xiàn)加密、解密、簽名、驗(yàn)證等過(guò)程。
[0004]CSP是密碼服務(wù)供應(yīng)商為了給用戶(hù)提供方便,針對(duì)應(yīng)用層提供的標(biāo)準(zhǔn)接口函數(shù)。CryptoAPI事實(shí)上是通過(guò)CSP以多種方式實(shí)現(xiàn)同一密碼函數(shù)。CSP是一個(gè)獨(dú)立的模塊,它實(shí)現(xiàn)了那些通過(guò)CryptoAPI公共接口訪問(wèn)的密碼函數(shù),即CSP封裝和隱藏了密碼算法的具體實(shí)現(xiàn),這樣用戶(hù)就不需要去關(guān)心它。
[0005]PKI技術(shù)以數(shù)字證書(shū)為媒介,通過(guò)對(duì)證書(shū)的使用和管理,可在網(wǎng)絡(luò)信息交流中實(shí)現(xiàn)身份認(rèn)證并保證信息傳輸?shù)陌踩?。USBKey中存儲(chǔ)了數(shù)字證書(shū)和對(duì)應(yīng)的私鑰,并且不允許私鑰導(dǎo)出。即使USBKey丟失也有口令保護(hù),不會(huì)造成私鑰的隨意泄漏,正是USBKey的小巧、方便易用以及高安全可靠性,使得它的應(yīng)用范圍越來(lái)越廣在證書(shū)系統(tǒng)中成為重要載體。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的技術(shù)任務(wù)是提供一種基于USBKEY的CSP實(shí)現(xiàn)方法。
[0007]本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,該方法步驟如下:
在申請(qǐng)證書(shū)時(shí)選擇CSP,將證書(shū)下載到USBKey中,利用公鑰和證書(shū)進(jìn)行數(shù)據(jù)的加解密和簽名驗(yàn)證,證書(shū)使用Crypto API中的證書(shū)相關(guān)函數(shù)接口進(jìn)行導(dǎo)入和導(dǎo)出;USBKey的內(nèi)部保存著每個(gè)合法用戶(hù)的證書(shū)和RSA密鑰對(duì),并且不允許導(dǎo)出私鑰,需要時(shí)對(duì)私鑰進(jìn)行的操作均在USBKey中實(shí)現(xiàn);以數(shù)字證書(shū)為媒介,通過(guò)對(duì)證書(shū)的使用和管理,在網(wǎng)絡(luò)信息交流中實(shí)現(xiàn)身份認(rèn)證并保證信息傳輸?shù)陌踩浴?br>[0008]所述的Crypto API從系統(tǒng)調(diào)用層次方面分為相互獨(dú)立的三層:
1)應(yīng)用層:用戶(hù)通過(guò)調(diào)用系統(tǒng)層提供的CryptoAPI使用加密服務(wù)的應(yīng)用程序,利用統(tǒng)一的API接口進(jìn)行編程,由操作系統(tǒng)通過(guò)統(tǒng)一的SPI接口來(lái)與具體的CSP進(jìn)行交互;
2)中間層:即操作系統(tǒng)層,隔離了應(yīng)用層和底層CSP和具體加密實(shí)現(xiàn)細(xì)節(jié),為應(yīng)用層提供統(tǒng)一的API接口,為加密服務(wù)提供層提供SPI接口;
3)加密服務(wù)提供層:使用不同的加密和簽名算法產(chǎn)生密鑰,交換密鑰、數(shù)據(jù)的加密驗(yàn)證。
[0009]所述的CSP的開(kāi)發(fā)流程如下:
1)Crypto SPI 函數(shù)集
自定義的CSP的DLL包括所有的Crypto SPI函數(shù),按照功能分為4大類(lèi):連接、密鑰產(chǎn)生與交換、數(shù)據(jù)加密以及哈希和數(shù)字簽名;
2)CSP的結(jié)構(gòu)設(shè)計(jì)
CSP的結(jié)構(gòu)從下往上分為三層:硬件抽象層、功能實(shí)現(xiàn)層以及接口封裝層;
硬件抽象層:該層屏蔽了硬件的具體實(shí)現(xiàn)細(xì)節(jié),為功能實(shí)現(xiàn)層提供一個(gè)統(tǒng)一的卡片操作函數(shù);
功能實(shí)現(xiàn)層:該層的核心部分是卡片文件系統(tǒng),完成卡片資源空間的分配和回收;同時(shí)該層對(duì)硬件抽象層進(jìn)一步封裝,為接口封裝層提供更友好的界面;該層可供底層開(kāi)發(fā)用戶(hù)使用;
接口封裝層:該層實(shí)現(xiàn)CSP所定義的標(biāo)準(zhǔn);
3)設(shè)計(jì)CSP動(dòng)態(tài)鏈接庫(kù)
開(kāi)發(fā)一個(gè)包含CSP接口函數(shù)的殼動(dòng)態(tài)庫(kù)Shell, dll文件來(lái)獲取微軟簽名,殼動(dòng)態(tài)庫(kù)Shell, dll是用來(lái)調(diào)用實(shí)體CSP動(dòng)態(tài)庫(kù)Csp.dll ;
基于 USBKEY 的 CSP 由以下四個(gè) DLL 組成:Shell, dll,Csp.dll,Token, dll 和 U1.dll ;其中CryptoAPI函數(shù)調(diào)用Shell, dll,具體的功能都在Csp.dll實(shí)現(xiàn),Token, dll為Csp.dll提供統(tǒng)一的卡片操作函數(shù),U1.dll提供友好的界面函數(shù)接口 ;
4)CSP注冊(cè)程序
建立CSP的安裝程序,將CSP的DLL拷貝到指定的目錄,安裝完成后,Shell, dll獲得微軟的正式簽名,就可以通過(guò)CryptAPI測(cè)試開(kāi)發(fā)出的CSP。
[0010]本發(fā)明的一種基于USBKEY的CSP實(shí)現(xiàn)方法和現(xiàn)有技術(shù)相比,不僅充分滿(mǎn)足CryptoSPI標(biāo)準(zhǔn)在功能和安全性方面的要求,使得用戶(hù)可以通過(guò)CryptoAPI來(lái)使用USBKey所提供的高安全的加密服務(wù),而且能很好地滿(mǎn)足終端安全領(lǐng)域的市場(chǎng)需求。
【附圖說(shuō)明】
[0011]附圖1為一種基于USBKEY的CSP實(shí)現(xiàn)方法的加密服務(wù)體系結(jié)構(gòu)示意圖。
[0012]附圖2為一種基于USBKEY的CSP實(shí)現(xiàn)方法的CSP和CryptoAPI接口關(guān)系示意圖。
[0013]附圖3為一種基于USBKEY的CSP實(shí)現(xiàn)方法的CSP設(shè)計(jì)結(jié)構(gòu)示意圖。
[0014]附圖4為一種基于USBKEY的CSP實(shí)現(xiàn)方法的動(dòng)態(tài)庫(kù)的組建結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0015]實(shí)施例1:
該基于USBKEY的CSP實(shí)現(xiàn)方法步驟如下:
在申請(qǐng)證書(shū)時(shí)選擇CSP,將證書(shū)下載到USBKey中,利用公鑰和證書(shū)進(jìn)行數(shù)據(jù)的加解密和簽名驗(yàn)證,證書(shū)使用Crypto API中的證書(shū)相關(guān)函數(shù)接口進(jìn)行導(dǎo)入和導(dǎo)出;USBKey的內(nèi)部保存著每個(gè)合法用戶(hù)的證書(shū)和RSA密鑰對(duì),并且不允許導(dǎo)出私鑰,需要時(shí)對(duì)私鑰進(jìn)行的操作均在USBKey中實(shí)現(xiàn);以數(shù)字證書(shū)為媒介,通過(guò)對(duì)證書(shū)的使用和管理,在網(wǎng)絡(luò)信息交流中實(shí)現(xiàn)身份認(rèn)證并保證信息傳輸?shù)陌踩浴?br>[0016]所述的Crypto API從系統(tǒng)調(diào)用層次方面分為相互獨(dú)立的三層:
1)應(yīng)用層:用戶(hù)通過(guò)調(diào)用系統(tǒng)層提供的CryptoAPI使用加密服務(wù)的應(yīng)用程序,利用統(tǒng)一的API接口進(jìn)行編程,由操作系統(tǒng)通過(guò)統(tǒng)一的SPI接口來(lái)與具體的CSP進(jìn)行交互;
2)中間層:即操作系統(tǒng)層,隔離了應(yīng)用層和底層CSP和具體加密實(shí)現(xiàn)細(xì)節(jié),為應(yīng)用層提供統(tǒng)一的API接口,為加密服務(wù)提供層提供SPI接口;
3)加密服務(wù)提供層:CSP是一個(gè)真正的數(shù)據(jù)加密獨(dú)立于應(yīng)用層和操作系統(tǒng)的模塊,具體功能包括使用不同的加密和簽名算法產(chǎn)生密鑰,交換密鑰、數(shù)據(jù)的加密驗(yàn)證。
[0017]所述的CSP的開(kāi)發(fā)流程如下: