基于USB接口和智能卡的PKI 客戶(hù)端設計
b.KEY文件及其文件中的密鑰
每個(gè)DF或MF下有且只有一個(gè)KEY文件,在任何情況下密鑰均無(wú)法讀出。在KEY文件中可存放多個(gè)密鑰,每個(gè)密鑰為一條定長(cháng)記錄。記錄中規定了其標識、版本、算法、屬性及密鑰本身等相關(guān)內容。
在滿(mǎn)足KEY文件的增加權限時(shí),可用Write KEY命令增加一條記錄。只有在滿(mǎn)足某個(gè)密鑰的使用權限時(shí)才可以使用該密鑰,在滿(mǎn)足某個(gè)密鑰的修改權限時(shí)才可以修改該密鑰。
每種密鑰具有其獨立性,用于一種特定功能的密鑰不可作為它用。本設計支持以下幾種密鑰:個(gè)人密碼(PIN)、外部認證密鑰、內部認證密鑰、(Crypt密鑰、PIN解鎖密鑰、PIN重裝密鑰、應用維護密鑰等。
③ 安全體系。主要是對所傳送的信息進(jìn)行安全性的檢查和處理,防止非法的竊聽(tīng)或侵入。安全體系包括3部分:安全狀態(tài)、安全屬性和安全機制。安全狀態(tài)是指當前智能卡所處的一種系統狀態(tài),這種安全狀態(tài)是在智能卡完成復位應答或完成某個(gè)命令后得到的;安全屬性是智能卡執行特定的命令所需要的安全條件,只有滿(mǎn)足了這個(gè)安全條件,命令才能執行;安全機制是指安全狀態(tài)實(shí)現轉移所采取的方法和手段,它是與安全狀態(tài)和安全屬性相聯(lián)系的。
④ 命令解釋。根據接收到的命令檢查各項參數是否正確,執行相應的操作。
IC卡通過(guò)USB接口與終端之間使用命令與應答的通信機制,即終端,把命令送到1C卡,IC卡接收并處理后發(fā)送響應給終端。這種機制包括兩種應用協(xié)議數據單元(APDU)——命令應用數據單元與響應應用數據單元。CLA字節代表命令的類(lèi)型。
INS字節表示命令編碼,P1和P2為具體命令參數。Lc字節表示數據的長(cháng)度,只有一個(gè)字節表示,取值范圍為1~115。如果Lc為0,表示沒(méi)有數據域。
Le表示期望卡返回的數據長(cháng)度,由單字節表示,取值范圍為1~115。
響應應用數據單元也包括兩部分:可能存在的響應數據體(應答體)和兩個(gè)狀態(tài)字節(應答尾部),其內容為
基于保密的原因,具體的命令代碼和狀態(tài)字節(SWl、SW2)的編碼略。
(2)算法庫的實(shí)現
算法庫是一個(gè)根據不同需要可擴展的函數庫。目前,算法庫里有:
◆對稱(chēng)加密算法——DES算法、3DES算法、RC2、RC4算法;
◆摘要(散列值)算法——SHA一1算法、MD5算法;
◆非對稱(chēng)加密算法——RSA算法、DSA算法、ECC算法。
以上算法全部在設備內實(shí)現。
2.2.2 USB接口層的軟件設計
USB接口層軟件主要完成計算機主機和客戶(hù)端設備之間的數據傳輸,完成主機與IC卡之間交互的命令及響應。一方面將主機來(lái)的USB信息包轉換成符合IS07816--4標準的智能卡可識別的命令,另一方面,根據IS07816--4標準,將智能卡的響應數據轉化成USB數據包,上傳給主機。
在USB的初始化中,完成終端設備USB的自舉過(guò)程??紤]到設備與計算機之間的數據交換具有數量少、傳輸速度不要求很高的特點(diǎn),因而將其配置為HID類(lèi)設備,實(shí)現在WIN2000、Win Me等環(huán)境下免安裝驅動(dòng)程序的特點(diǎn)。本設備使用了3個(gè)端點(diǎn):端點(diǎn)0用于控制信息的傳輸,端點(diǎn)1用于接收主機發(fā)來(lái)的數據,端點(diǎn)3用于向主機發(fā)送數據。
USB的消息處理過(guò)程是:USB發(fā)出中斷請求,單片機響應中斷,首先查看各中斷寄存器,找出產(chǎn)生中斷的事件,然后處理。程序的設計主要集中在中斷處理服務(wù)程序上。
上述2.2.1節和2.2.2節軟件設計為PKI終端設備內軟件設計,整個(gè)軟件采用了Keil C51語(yǔ)言編寫(xiě)。與匯編相比,C語(yǔ)言在功能、結構、可讀性、可維護性上有明顯的優(yōu)勢。Keil C51提供了豐富的庫函數和功能強大的集成開(kāi)發(fā)調試工具,全Windows界面。最后生成標準的HEX文件,以直接寫(xiě)入程序存儲器,如Flash中。
2.2.3應用層軟件設計
應用層(計算機主機)軟件開(kāi)發(fā)主要是提供底層API庫函數,在此基礎上實(shí)現CSP[4](Cryptographic Service Provider,加密服務(wù)提供者)軟件設計,為用戶(hù)提供符合微軟加密服務(wù)要求的中間件。
應用程序不能直接與CSP進(jìn)行通信。取而代之,應用程序通過(guò)調用由Advapi32.d11和Crypt32.dll模塊所提供的一些CryptoAPI接口函數來(lái)與CSP進(jìn)行通信,從而完成相應的功能。操作系統過(guò)濾這些函數調用,并把它們通過(guò)C2ryptoSPI(系統編程接口)傳遞給相應的CSP函數。
整個(gè)軟件的實(shí)現過(guò)程為:首先,根據智能卡COS命令,完成底層API庫函數CLlB。通過(guò)對庫函數進(jìn)行封裝生成PKIKEY類(lèi),即PKIKEY.CPP,PKIKEY.H,進(jìn)而生成CSP所需的DLL文件,最后通過(guò)向微軟申請認證,通過(guò)后微軟將進(jìn)行簽名。
本設計中,可以向客戶(hù)提供底層API函數和CSP兩種中間件接口,以支持客戶(hù)的二次開(kāi)發(fā)。
在應用軟件方面,我們設計了客戶(hù)端管理工具軟件和管理端管理工具軟件。
客端管理工具實(shí)現的功能:證書(shū)的自動(dòng)注冊注銷(xiāo),修改用戶(hù)密碼等功能。
管理端管理工具實(shí)現的功能:除具有客戶(hù)端管理工具的功能外,還提供了格式化設備、清空設備、解鎖用戶(hù)密碼、修改管理員密碼等功能。
2.3 主要技術(shù)指標
操作系統:Windows 98/Me/2000/XP,Mac OS 8/9,Linux.
證書(shū)及標準:PKCS#1l,MS CAPI,PC/SC,X.509 v3證書(shū)存儲。
加密算法:MD5,SHA - l,DES/3DES,RC2,RC4,RSA,DSA,ECC等。
接口類(lèi)型:USB V1.1 A型。
功耗:250 mW。
3 總 結
本文提出的PKI客戶(hù)端設備已經(jīng)小批量生產(chǎn)。它是整個(gè)PKI體系的重要組成部分,可以實(shí)現密鑰安全保管、證書(shū)管理、簽名、驗證簽名、加/解密和身份認證等功能,具有高穩定性、高安全性、高可靠性、安裝和攜帶方便、操作簡(jiǎn)便、運算速度快等特點(diǎn);可廣泛應用于要求個(gè)人身份認證、識別、數據加密、安全存儲等領(lǐng)域,如電子商務(wù)、電子政務(wù)等,所提供的底層庫函數和CSP軟件以中間件方式極大地方便了客戶(hù)的二次開(kāi)發(fā)??傊?,本設計思想先進(jìn),代表了當前該領(lǐng)域的發(fā)展方向,應用前景廣泛。
參考文獻:
[1].CSPdatasheethttp://www.dzsc.com/datasheet/CSP_2363263.html.
[2].RC2datasheethttp://www.dzsc.com/datasheet/RC2_1191068.html.
[3].SHAdatasheethttp://www.dzsc.com/datasheet/SHA_2043215.html.
評論