新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于USB接口和智能卡的PKI客戶端設(shè)計(jì)

基于USB接口和智能卡的PKI客戶端設(shè)計(jì)

——
作者:作者:劉培德 尉永青 劉培玉 時(shí)間:2007-01-26 來源:《單片機(jī)及嵌入式系統(tǒng)應(yīng)用》 收藏

計(jì)算機(jī)、網(wǎng)絡(luò)、通信技術(shù)的迅猛發(fā)展,使人們的生活和生產(chǎn)方式發(fā)生了深刻變化。高科技在給人們的工作和生活帶來方便、舒適的同時(shí),也給人們?cè)鎏砹嗽S多困擾。安全問題首當(dāng)其沖。pki(public key infrastructure,公鑰基礎(chǔ)設(shè)施)被譽(yù)為現(xiàn)代信息社會(huì)安全的基石,也是電子商務(wù)與電子政務(wù)的關(guān)鍵技術(shù)。它能夠?yàn)樗芯W(wǎng)絡(luò)應(yīng)用透明地提供加密和數(shù)字簽名等密碼服務(wù)所必需的密鑰和證書管理功能,能夠提供認(rèn)證、訪問控制、數(shù)據(jù)完整性、機(jī)密性和不可否認(rèn)性等核心安全服務(wù)。通常pki系統(tǒng)主要由認(rèn)證機(jī)構(gòu)、證書庫(kù)、密鑰備份及恢復(fù)系統(tǒng)、證書作廢處理系統(tǒng)、pki應(yīng)用接口系統(tǒng)等部分組成。

本文引用地址:http://m.butianyuan.cn/article/21060.htm

pki的基礎(chǔ)是基于非對(duì)稱加密算法的,每個(gè)用戶需要有一個(gè)能夠確保其安全的場(chǎng)所,用以存放一些個(gè)人密鑰(private key)、被其直接信任的ca(root ca)名字和證書,以及其他一些重要數(shù)據(jù)。智能卡(smart card)具有安全性高、保密性好的特點(diǎn),為密鑰的存儲(chǔ)管理提供了良好的介質(zhì)。智能卡具有嵌入卡片內(nèi)部的cpu和存儲(chǔ)器,同時(shí)還有一系列的安全機(jī)制來保證內(nèi)部數(shù)據(jù)的安全。利用智能卡卡上cpu的計(jì)算能力,可以在卡上進(jìn)行密鑰對(duì)的生成和進(jìn)行卡上的簽名和驗(yàn)證運(yùn)算;同時(shí),利用智能卡出色的安全機(jī)制,能夠?qū)Υ鎯?chǔ)在其中的數(shù)據(jù)提供強(qiáng)有力的安全保證,這樣在用戶私鑰的整個(gè)生命周期內(nèi),都處在智能卡的保護(hù)之下。另外,為了提高設(shè)備使用的靈活性和方便性,采用了usb接口技術(shù),充分發(fā)揮了usb接口的即插即用、總線供電等優(yōu)點(diǎn),使開發(fā)的設(shè)備具有可攜帶性、靈活性和方便性,可以在各種場(chǎng)合中進(jìn)行簽名和驗(yàn)證。

2 pkl客戶端設(shè)備的研制

pki客戶端設(shè)備是一個(gè)全功能、可操作pki系統(tǒng)的必要組成部分。主要提供以下一些功能[1.2]:

① 密鑰的產(chǎn)生、更新和保護(hù);

② 進(jìn)行加解密或數(shù)字簽名操作;

③ 證書管理,包括證書的申請(qǐng)、安裝、存儲(chǔ)及驗(yàn)證等;

④ 與主機(jī)、外圍設(shè)備和系統(tǒng)軟件有良好接口,方便用戶開發(fā)相應(yīng)的高層軟件。

2.1 客戶端設(shè)備的硬件實(shí)現(xiàn)

要實(shí)現(xiàn)本客戶端設(shè)備,在硬件上必須具有智能卡芯片和usb芯片。作為智能卡芯片必須具備至少32 kb用戶數(shù)據(jù)區(qū)(eeprom)和32 kb程序存儲(chǔ)區(qū)及1 kb的ram;另外必須具備協(xié)處理器,能夠進(jìn)行至少1024位模冪運(yùn)算,此外必須具備良好的物理安全性,以確保除了通過本系統(tǒng)外,沒有其他途徑可以獲取智能卡中ram、ee-prom、rom、寄存器的數(shù)據(jù)。而作為usb芯片,只需具備4個(gè)端口和滿足usb協(xié)議1.1即可。當(dāng)然,如果能夠把這兩種芯片的功能集成在一起成一顆芯片,會(huì)進(jìn)一步提高安全性和進(jìn)一步降低設(shè)備的尺寸。經(jīng)過反復(fù)比較篩選,我們選用了atmel公司的同時(shí)具備ic卡和usb接口功能的單一芯片at90s6464c—usb。本芯片還具備硬件隨機(jī)數(shù)發(fā)生器、硬件實(shí)現(xiàn)des和3des算法、內(nèi)置rsa、ecc算法等。

其硬件實(shí)現(xiàn)只需要加一個(gè)振蕩電路即可。另外,為了指示usb的讀寫操作,加了一個(gè)指示燈。在讀寫操作時(shí)指示燈亮。

2.2 客戶端設(shè)備的軟件設(shè)計(jì)

pki客戶端系統(tǒng)的軟件設(shè)計(jì)包括計(jì)算機(jī)主機(jī)的軟件設(shè)計(jì)和硬件設(shè)備中的軟件設(shè)計(jì),具體的層次結(jié)構(gòu)如圖1所示。

智能卡層的軟件設(shè)計(jì),主要完成cos(chip operation system)軟件和加密算法;usb接口層的軟件設(shè)計(jì),主要完成主機(jī)和智能卡之間的信息傳遞;應(yīng)用層的軟件設(shè)計(jì),主要完成底層的api函數(shù)和csp軟件,為用戶提供開發(fā)接口支持。下面詳細(xì)介紹各部分的設(shè)計(jì)。

2.2.1 智能卡層軟件設(shè)計(jì)

主要包括兩個(gè)模塊:卡內(nèi)操作系統(tǒng)cos和算法庫(kù)。這是實(shí)現(xiàn)pki客戶端設(shè)備的關(guān)鍵部分。

1)卡內(nèi)操作系統(tǒng)cos的設(shè)計(jì)

智能卡內(nèi)設(shè)計(jì)了一個(gè)小型的操作系統(tǒng)cos. cos的主要功能是:控制智能卡與外界信息進(jìn)行交換,管理智能卡存儲(chǔ)器中的文件系統(tǒng),并在智能卡內(nèi)完成各種命令的處理。cos的基本功能必須遵循iso7816—4標(biāo)準(zhǔn)[3]。

cos系統(tǒng)是由傳輸管理、文件管理、安全體系、命令解釋四個(gè)功能模塊組成的。

① 傳輸管理。按iso7816—3標(biāo)準(zhǔn),監(jiān)督卡與終端之間的通信,保證數(shù)據(jù)正確地傳輸,防止與終端之間通信數(shù)據(jù)被非法竊取和篡改。

②文件管理。文件管理模塊用來管理智能卡芯片內(nèi)存儲(chǔ)的各種數(shù)據(jù),如證書、密鑰和其他用戶信息等。

智能卡芯片內(nèi)的文件分為mf、df和ef三種。mf(主文件)是所有文件的根文件;df文件是目錄文件,根據(jù)df可以區(qū)分存在于智能卡上的不同應(yīng)用;ef是基本文件,用來存儲(chǔ)具體的數(shù)據(jù)和記錄,也是cos命令所要操作的具體對(duì)象。本設(shè)計(jì)中,ef分為四種類對(duì)象:密鑰、證書、認(rèn)證對(duì)象和數(shù)據(jù)對(duì)象。其中認(rèn)證對(duì)象中保存識(shí)別用戶身份的pin碼。ef的存放分為文件頭和文件體兩個(gè)部分。文件頭中包含文件的標(biāo)識(shí)符、訪問權(quán)限和文件體的指針;而文件體中存放具體數(shù)據(jù)。

對(duì)ic卡的操作,是通過命令的方式實(shí)現(xiàn)的。實(shí)際上是通過命令對(duì)ic卡內(nèi)文件的操作。增加功能即是增加文件,所以,下面著重就文件系統(tǒng)進(jìn)行說明。

a.文件的空間結(jié)構(gòu)

每個(gè)文件在eeprom中的存放格式為


cos整個(gè)的文件空間劃分如下:

◆當(dāng)建立完.mf之后,cos自動(dòng)將整個(gè)eeprom空間都分配給它。mf的文件頭長(zhǎng)度為13字節(jié)十文件名長(zhǎng)度(5~16字節(jié))。

◆每個(gè)df所占空間=df文件頭空間(等同于mf)+df下所有的文件空間之和。

◆二進(jìn)制結(jié)構(gòu)文件的空間=文件頭空間(13字節(jié))+ef所申請(qǐng)的空間。

◆定長(zhǎng)記錄和循環(huán)定長(zhǎng)記錄文件的空間=文件頭空間(13字節(jié))+記錄數(shù)×記錄長(zhǎng)度。

◆變長(zhǎng)記錄結(jié)構(gòu)文件的空間=文件頭空間(13字節(jié))+建立時(shí)申請(qǐng)的空間。

◆安全基本文件的空間一文件頭空間(13字節(jié))+密鑰個(gè)數(shù)×(25字節(jié))。

b.key文件及其文件中的密鑰

每個(gè)df或mf下有且只有一個(gè)key文件,在任何情況下密鑰均無法讀出。在key文件中可存放多個(gè)密鑰,每個(gè)密鑰為一條定長(zhǎng)記錄。記錄中規(guī)定了其標(biāo)識(shí)、版本、算法、屬性及密鑰本身等相關(guān)內(nèi)容。

在滿足key文件的增加權(quán)限時(shí),可用write key命令增加一條記錄。只有在滿足某個(gè)密鑰的使用權(quán)限時(shí)才可以使用該密鑰,在滿足某個(gè)密鑰的修改權(quán)限時(shí)才可以修改該密鑰。

每種密鑰具有其獨(dú)立性,用于一種特定功能的密鑰不可作為它用。本設(shè)計(jì)支持以下幾種密鑰:個(gè)人密碼(pin)、外部認(rèn)證密鑰、內(nèi)部認(rèn)證密鑰、(crypt密鑰、pin解鎖密鑰、pin重裝密鑰、應(yīng)用維護(hù)密鑰等。

③ 安全體系。主要是對(duì)所傳送的信息進(jìn)行安全性的檢查和處理,防止非法的竊聽或侵入。安全體系包括3部分:安全狀態(tài)、安全屬性和安全機(jī)制。安全狀態(tài)是指當(dāng)前智能卡所處的一種系統(tǒng)狀態(tài),這種安全狀態(tài)是在智能卡完成復(fù)位應(yīng)答或完成某個(gè)命令后得到的;安全屬性是智能卡執(zhí)行特定的命令所需要的安全條件,只有滿足了這個(gè)安全條件,命令才能執(zhí)行;安全機(jī)制是指安全狀態(tài)實(shí)現(xiàn)轉(zhuǎn)移所采取的方法和手段,它是與安全狀態(tài)和安全屬性相聯(lián)系的。

④ 命令解釋。根據(jù)接收到的命令檢查各項(xiàng)參數(shù)是否正確,執(zhí)行相應(yīng)的操作。

ic卡通過usb接口與終端之間使用命令與應(yīng)答的通信機(jī)制,即終端,把命令送到1c卡,ic卡接收并處理后發(fā)送響應(yīng)給終端。這種機(jī)制包括兩種應(yīng)用協(xié)議數(shù)據(jù)單元(apdu)——命令應(yīng)用數(shù)據(jù)單元與響應(yīng)應(yīng)用數(shù)據(jù)單元。

命令應(yīng)用數(shù)據(jù)單元包含兩部分:固定的4字節(jié)命令頭和長(zhǎng)度可變的命令體,其內(nèi)容為

cla字節(jié)代表命令的類型。

ins字節(jié)表示命令編碼,p1和p2為具體命令參數(shù)。lc字節(jié)表示數(shù)據(jù)的長(zhǎng)度,只有一個(gè)字節(jié)表示,取值范圍為1~115。如果lc為0,表示沒有數(shù)據(jù)域。

le表示期望卡返回的數(shù)據(jù)長(zhǎng)度,由單字節(jié)表示,取值范圍為1~115。

響應(yīng)應(yīng)用數(shù)據(jù)單元也包括兩部分:可能存在的響應(yīng)數(shù)據(jù)體(應(yīng)答體)和兩個(gè)狀態(tài)字節(jié)(應(yīng)答尾部),其內(nèi)容為

基于保密的原因,具體的命令代碼和狀態(tài)字節(jié)(swl、sw2)的編碼略。

(2)算法庫(kù)的實(shí)現(xiàn)

算法庫(kù)是一個(gè)根據(jù)不同需要可擴(kuò)展的函數(shù)庫(kù)。目前,算法庫(kù)里有:

◆對(duì)稱加密算法——des算法、3des算法、rc2、rc4算法;

◆摘要(散列值)算法——sha一1算法、md5算法;

◆非對(duì)稱加密算法——rsa算法、dsa算法、ecc算法。

以上算法全部在設(shè)備內(nèi)實(shí)現(xiàn)。

2.2.2 usb接口層的軟件設(shè)計(jì)

usb接口層軟件主要完成計(jì)算機(jī)主機(jī)和客戶端設(shè)備之間的數(shù)據(jù)傳輸,完成主機(jī)與ic卡之間交互的命令及響應(yīng)。一方面將主機(jī)來的usb信息包轉(zhuǎn)換成符合is07816--4標(biāo)準(zhǔn)的智能卡可識(shí)別的命令,另一方面,根據(jù)is07816--4標(biāo)準(zhǔn),將智能卡的響應(yīng)數(shù)據(jù)轉(zhuǎn)化成usb數(shù)據(jù)包,上傳給主機(jī)。

在usb的初始化中,完成終端設(shè)備usb的自舉過程??紤]到設(shè)備與計(jì)算機(jī)之間的數(shù)據(jù)交換具有數(shù)量少、傳輸速度不要求很高的特點(diǎn),因而將其配置為hid類設(shè)備,實(shí)現(xiàn)在win2000、win me等環(huán)境下免安裝驅(qū)動(dòng)程序的特點(diǎn)。本設(shè)備使用了3個(gè)端點(diǎn):端點(diǎn)0用于控制信息的傳輸,端點(diǎn)1用于接收主機(jī)發(fā)來的數(shù)據(jù),端點(diǎn)3用于向主機(jī)發(fā)送數(shù)據(jù)。

usb的消息處理過程是:usb發(fā)出中斷請(qǐng)求,單片機(jī)響應(yīng)中斷,首先查看各中斷寄存器,找出產(chǎn)生中斷的事件,然后處理。程序的設(shè)計(jì)主要集中在中斷處理服務(wù)程序上,如圖2所示。

上述2.2.1節(jié)和2.2.2節(jié)軟件設(shè)計(jì)為pki終端設(shè)備內(nèi)軟件設(shè)計(jì),整個(gè)軟件采用了keil c51語(yǔ)言編寫。與匯編相比,c語(yǔ)言在功能、結(jié)構(gòu)、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì)。keil c51提供了豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全windows界面。最后生成標(biāo)準(zhǔn)的hex文件,以直接寫入程序存儲(chǔ)器,如flash中。

2.2.3應(yīng)用層軟件設(shè)計(jì)

應(yīng)用層(計(jì)算機(jī)主機(jī))軟件開發(fā)主要是提供底層api庫(kù)函數(shù),在此基礎(chǔ)上實(shí)現(xiàn)csp[4](cryptographic service provider,加密服務(wù)提供者)軟件設(shè)計(jì),為用戶提供符合微軟加密服務(wù)要求的中間件。應(yīng)用層軟件結(jié)構(gòu)如圖3所示。

應(yīng)用程序不能直接與csp進(jìn)行通信。取而代之,應(yīng)用程序通過調(diào)用由advapi32.d11和crypt32.dll模塊所提供的一些cryptoapi接口函數(shù)來與csp進(jìn)行通信,從而完成相應(yīng)的功能。操作系統(tǒng)過濾這些函數(shù)調(diào)用,并把它們通過c2ryptospi(系統(tǒng)編程接口)傳遞給相應(yīng)的csp函數(shù)。

整個(gè)軟件的實(shí)現(xiàn)過程為:首先,根據(jù)智能卡cos命令,完成底層api庫(kù)函數(shù)cllb。通過對(duì)庫(kù)函數(shù)進(jìn)行封裝生成pkikey類,即pkikey.cpp,pkikey.h,進(jìn)而生成csp所需的dll文件,最后通過向微軟申請(qǐng)認(rèn)證,通過后微軟將進(jìn)行簽名。

本設(shè)計(jì)中,可以向客戶提供底層api函數(shù)和csp兩種中間件接口,以支持客戶的二次開發(fā)。

在應(yīng)用軟件方面,我們?cè)O(shè)計(jì)了客戶端管理工具軟件和管理端管理工具軟件。

客端管理工具實(shí)現(xiàn)的功能:證書的自動(dòng)注冊(cè)注銷,修改用戶密碼等功能。

管理端管理工具實(shí)現(xiàn)的功能:除具有客戶端管理工具的功能外,還提供了格式化設(shè)備、清空設(shè)備、解鎖用戶密碼、修改管理員密碼等功能。

2.3 主要技術(shù)指標(biāo)

操作系統(tǒng):windows 98/me/2000/xp,mac os 8/9,linux.

證書及標(biāo)準(zhǔn):pkcs#1l,ms capi,pc/sc,x.509 v3證書存儲(chǔ)。

加密算法:md5,sha - l,des/3des,rc2,rc4,rsa,dsa,ecc等。

接口類型:usb v1.1 a型。

功耗:<250 mw。

3 總 結(jié)

本文提出的pki客戶端設(shè)備已經(jīng)小批量生產(chǎn)。它是整個(gè)pki體系的重要組成部分,可以實(shí)現(xiàn)密鑰安全保管、證書管理、簽名、驗(yàn)證簽名、加/解密和身份認(rèn)證等功能,具有高穩(wěn)定性、高安全性、高可靠性、安裝和攜帶方便、操作簡(jiǎn)便、運(yùn)算速度快等特點(diǎn);可廣泛應(yīng)用于要求個(gè)人身份認(rèn)證、識(shí)別、數(shù)據(jù)加密、安全存儲(chǔ)等領(lǐng)域,如電子商務(wù)、電子政務(wù)等,所提供的底層庫(kù)函數(shù)和csp軟件以中間件方式極大地方便了客戶的二次開發(fā)。總之,本設(shè)計(jì)思想先進(jìn),代表了當(dāng)前該領(lǐng)域的發(fā)展方向,應(yīng)用前景廣泛。




關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉