基于USB接口和智能卡的PKI客戶(hù)端設計
計算機、網(wǎng)絡(luò )、通信技術(shù)的迅猛發(fā)展,使人們的生活和生產(chǎn)方式發(fā)生了深刻變化。高科技在給人們的工作和生活帶來(lái)方便、舒適的同時(shí),也給人們增添了許多困擾。安全問(wèn)題首當其沖。pki(public key infrastructure,公鑰基礎設施)被譽(yù)為現代信息社會(huì )安全的基石,也是電子商務(wù)與電子政務(wù)的關(guān)鍵技術(shù)。它能夠為所有網(wǎng)絡(luò )應用透明地提供加密和數字簽名等密碼服務(wù)所必需的密鑰和證書(shū)管理功能,能夠提供認證、訪(fǎng)問(wèn)控制、數據完整性、機密性和不可否認性等核心安全服務(wù)。通常pki系統主要由認證機構、證書(shū)庫、密鑰備份及恢復系統、證書(shū)作廢處理系統、pki應用接口系統等部分組成。
本文引用地址:http://dyxdggzs.com/article/21060.htmpki的基礎是基于非對稱(chēng)加密算法的,每個(gè)用戶(hù)需要有一個(gè)能夠確保其安全的場(chǎng)所,用以存放一些個(gè)人密鑰(private key)、被其直接信任的ca(root ca)名字和證書(shū),以及其他一些重要數據。智能卡(smart card)具有安全性高、保密性好的特點(diǎn),為密鑰的存儲管理提供了良好的介質(zhì)。智能卡具有嵌入卡片內部的cpu和存儲器,同時(shí)還有一系列的安全機制來(lái)保證內部數據的安全。利用智能卡卡上cpu的計算能力,可以在卡上進(jìn)行密鑰對的生成和進(jìn)行卡上的簽名和驗證運算;同時(shí),利用智能卡出色的安全機制,能夠對存儲在其中的數據提供強有力的安全保證,這樣在用戶(hù)私鑰的整個(gè)生命周期內,都處在智能卡的保護之下。另外,為了提高設備使用的靈活性和方便性,采用了usb接口技術(shù),充分發(fā)揮了usb接口的即插即用、總線(xiàn)供電等優(yōu)點(diǎn),使開(kāi)發(fā)的設備具有可攜帶性、靈活性和方便性,可以在各種場(chǎng)合中進(jìn)行簽名和驗證。
2 pkl客戶(hù)端設備的研制
pki客戶(hù)端設備是一個(gè)全功能、可操作pki系統的必要組成部分。主要提供以下一些功能[1.2]:
① 密鑰的產(chǎn)生、更新和保護;
② 進(jìn)行加解密或數字簽名操作;
③ 證書(shū)管理,包括證書(shū)的申請、安裝、存儲及驗證等;
④ 與主機、外圍設備和系統軟件有良好接口,方便用戶(hù)開(kāi)發(fā)相應的高層軟件。
2.1 客戶(hù)端設備的硬件實(shí)現
要實(shí)現本客戶(hù)端設備,在硬件上必須具有智能卡芯片和usb芯片。作為智能卡芯片必須具備至少32 kb用戶(hù)數據區(eeprom)和32 kb程序存儲區及1 kb的ram;另外必須具備協(xié)處理器,能夠進(jìn)行至少1024位模冪運算,此外必須具備良好的物理安全性,以確保除了通過(guò)本系統外,沒(méi)有其他途徑可以獲取智能卡中ram、ee-prom、rom、寄存器的數據。而作為usb芯片,只需具備4個(gè)端口和滿(mǎn)足usb協(xié)議1.1即可。當然,如果能夠把這兩種芯片的功能集成在一起成一顆芯片,會(huì )進(jìn)一步提高安全性和進(jìn)一步降低設備的尺寸。經(jīng)過(guò)反復比較篩選,我們選用了atmel公司的同時(shí)具備ic卡和usb接口功能的單一芯片at90s6464c—usb。本芯片還具備硬件隨機數發(fā)生器、硬件實(shí)現des和3des算法、內置rsa、ecc算法等。
其硬件實(shí)現只需要加一個(gè)振蕩電路即可。另外,為了指示usb的讀寫(xiě)操作,加了一個(gè)指示燈。在讀寫(xiě)操作時(shí)指示燈亮。
2.2 客戶(hù)端設備的軟件設計
pki客戶(hù)端系統的軟件設計包括計算機主機的軟件設計和硬件設備中的軟件設計,具體的層次結構如圖1所示。

2.2.1 智能卡層軟件設計
主要包括兩個(gè)模塊:卡內操作系統cos和算法庫。這是實(shí)現pki客戶(hù)端設備的關(guān)鍵部分。
1)卡內操作系統cos的設計
智能卡內設計了一個(gè)小型的操作系統cos. cos的主要功能是:控制智能卡與外界信息進(jìn)行交換,管理智能卡存儲器中的文件系統,并在智能卡內完成各種命令的處理。cos的基本功能必須遵循iso7816—4標準[3]。
cos系統是由傳輸管理、文件管理、安全體系、命令解釋四個(gè)功能模塊組成的。
① 傳輸管理。按iso7816—3標準,監督卡與終端之間的通信,保證數據正確地傳輸,防止與終端之間通信數據被非法竊取和篡改。
②文件管理。文件管理模塊用來(lái)管理智能卡芯片內存儲的各種數據,如證書(shū)、密鑰和其他用戶(hù)信息等。
智能卡芯片內的文件分為mf、df和ef三種。mf(主文件)是所有文件的根文件;df文件是目錄文件,根據df可以區分存在于智能卡上的不同應用;ef是基本文件,用來(lái)存儲具體的數據和記錄,也是cos命令所要操作的具體對象。本設計中,ef分為四種類(lèi)對象:密鑰、證書(shū)、認證對象和數據對象。其中認證對象中保存識別用戶(hù)身份的pin碼。ef的存放分為文件頭和文件體兩個(gè)部分。文件頭中包含文件的標識符、訪(fǎng)問(wèn)權限和文件體的指針;而文件體中存放具體數據。
對ic卡的操作,是通過(guò)命令的方式實(shí)現的。實(shí)際上是通過(guò)命令對ic卡內文件的操作。增加功能即是增加文件,所以,下面著(zhù)重就文件系統進(jìn)行說(shuō)明。
a.文件的空間結構
每個(gè)文件在eeprom中的存放格式為

cos整個(gè)的文件空間劃分如下:
◆當建立完.mf之后,cos自動(dòng)將整個(gè)eeprom空間都分配給它。mf的文件頭長(cháng)度為13字節十文件名長(cháng)度(5~16字節)。
◆每個(gè)df所占空間=df文件頭空間(等同于mf)+df下所有的文件空間之和。
◆二進(jìn)制結構文件的空間=文件頭空間(13字節)+ef所申請的空間。
◆定長(cháng)記錄和循環(huán)定長(cháng)記錄文件的空間=文件頭空間(13字節)+記錄數×記錄長(cháng)度。
◆變長(cháng)記錄結構文件的空間=文件頭空間(13字節)+建立時(shí)申請的空間。
◆安全基本文件的空間一文件頭空間(13字節)+密鑰個(gè)數×(25字節)。
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)——命令應用數據單元與響應應用數據單元。
命令應用數據單元包含兩部分:固定的4字節命令頭和長(cháng)度可變的命令體,其內容為

ins字節表示命令編碼,p1和p2為具體命令參數。lc字節表示數據的長(cháng)度,只有一個(gè)字節表示,取值范圍為1~115。如果lc為0,表示沒(méi)有數據域。
le表示期望卡返回的數據長(cháng)度,由單字節表示,取值范圍為1~115。
響應應用數據單元也包括兩部分:可能存在的響應數據體(應答體)和兩個(gè)狀態(tài)字節(應答尾部),其內容為

(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.2.3應用層軟件設計
應用層(計算機主機)軟件開(kāi)發(fā)主要是提供底層api庫函數,在此基礎上實(shí)現csp[4](cryptographic service
provider,加密服務(wù)提供者)軟件設計,為用戶(hù)提供符合微軟加密服務(wù)要求的中間件。應用層軟件結構如圖3所示。

整個(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ā)展方向,應用前景廣泛。
評論