---智能卡(SmartCard)又稱集成電路卡(Integrated Circuit Card,即IC卡),將微電子技術(shù)和單片機(jī)技術(shù)結(jié)合在一起,具有高的可靠性、安全性和靈活性,其廣泛地應(yīng)用于電信、金融、交通及公共事業(yè)等領(lǐng)域。智能卡接口控制器是連接智能卡和主控設(shè)備的橋梁,是智能卡處理設(shè)備中的最重要組成部分之一。面對(duì)龐大的市場(chǎng)需求,各大芯片廠商都推出了各自的智能卡接口控制器芯片,例如,Philips的8007、Linear的LTC1755/6等。本文也提出一種實(shí)用的智能卡接口控制器的設(shè)計(jì)方案。
單片機(jī)智能卡設(shè)計(jì)的硬件結(jié)構(gòu)
讀寫(xiě)器的硬件組成如圖1所示。包括電源、單片機(jī)系統(tǒng)、RS 232接口、IC卡讀寫(xiě)接口、多路 時(shí)鐘系統(tǒng)和復(fù)位電路等幾個(gè)主要部分。
單片機(jī)系統(tǒng)由89C52CPU、三態(tài)地址鎖存器和靜態(tài)存貯器組成。89C52的P0口與三態(tài)地址鎖存 器形成地址總線的低8位,即A0~A7,以及數(shù)據(jù)總線D0~D7;89C52的P2.0~P2.6形成地址 總線的高8位,即A8~A12。靜態(tài)存貯器用于保存讀寫(xiě)器運(yùn)行過(guò)程中預(yù)設(shè)的一系列軟件指令。串行接口用于實(shí)現(xiàn)讀寫(xiě)器與用戶端設(shè)備,如PC機(jī)等之間的數(shù)據(jù)通信。在當(dāng)前系統(tǒng)中采用了一片MAX232,其中的RXD、TXD做為數(shù)據(jù)的I/O通道接CPU串行口,完成讀寫(xiě)器CPU與外部間的數(shù)據(jù)交換。同時(shí),外部用戶端還可通過(guò)串口的RTS信號(hào)對(duì)IC卡讀寫(xiě)器進(jìn)行軟件上的復(fù)位。
通用的智能卡多為異步型CPU卡,在其時(shí)鐘方面多需要不同的控制和發(fā)生體系。因此在讀寫(xiě) 器中設(shè)置有專門(mén)的時(shí)鐘電路和時(shí)鐘控制電路,主要由74LS253雙四選一電路及D觸發(fā)器等組成 。晶振提供的脈沖經(jīng)分頻產(chǎn)生時(shí)鐘信號(hào)分別送到四選一電路輸入端。另外2個(gè)輸入端分別接地和T0(89C52CPU的T0引腳),T0信號(hào)通過(guò)軟件編程分頻后向IC卡提供時(shí)鐘信號(hào),時(shí)鐘頻率、脈沖寬度可由具體編程決定。四選一電路的選擇控制端分別接P1.0和P1.1、P1.0和P1.1,分別對(duì)應(yīng)于不同的頻率關(guān)系。
在讀寫(xiě)器的硬件構(gòu)成上,還提供有上/下電控制電路。這部分電路用于控制對(duì)卡的上電和下 電操作,也就是提供對(duì)卡的電源開(kāi)關(guān)控制。主要由89C52的P1.7、R3,R4和三極管Q2等組成開(kāi)關(guān)電路來(lái)控制對(duì)卡的上/下電。當(dāng)需要給IC卡加電時(shí),通過(guò)預(yù)先設(shè)定的程序使P17置“0”,使Q2導(dǎo)通,VCC通過(guò)Q2將CVCC送至IC卡;當(dāng)I C卡下電時(shí),置P1.7為“1”使Q2截止,從而禁止向IC卡供電。詳細(xì)電路如圖2所示。
作為用戶與IC卡之間的交互平臺(tái),讀寫(xiě)器需要分別建立與外部用戶和內(nèi)部IC卡之間的數(shù)據(jù)通 信體系。讀寫(xiě)器中的IC卡接口即提供讀寫(xiě)器與IC卡間進(jìn)行數(shù)據(jù)交換的通道。根據(jù)目前通用的IC卡接口標(biāo)準(zhǔn),與IC卡的接口基本上由8個(gè)信號(hào)組成:CLK時(shí)鐘、I/O數(shù)據(jù)、RST復(fù)位等,另外有3個(gè)NC信號(hào)供用戶自己定義。將他們分別與讀寫(xiě)器中CPU接口線相連,再由CPU通過(guò)預(yù)設(shè)的軟件指令控制和實(shí)現(xiàn)與IC卡間的數(shù)據(jù)交換,如圖3所示。
3讀寫(xiě)器的軟件體系
用戶以何種方式和過(guò)程使用讀寫(xiě)器是讀寫(xiě)器開(kāi)發(fā)中的關(guān)鍵部分之一,其核心目標(biāo)是在設(shè)備硬件體系的基礎(chǔ)上,開(kāi)發(fā)并提供一個(gè)使用戶能夠?qū)τ布M(jìn)行直接操作的軟件層,這個(gè)軟件層部分包括的主要是一系列的應(yīng)用協(xié)議和與其相配合的控制程序。在使用讀寫(xiě)器的過(guò)程中,PC機(jī)或其他外部用戶系統(tǒng)必須遵循或借助于這些協(xié)議,才能夠與讀寫(xiě)器內(nèi)部的控制程序正確互動(dòng)和協(xié)調(diào)一致,以實(shí)現(xiàn)對(duì)設(shè)備有效的使用。依據(jù)實(shí)際的應(yīng)用要求,該讀寫(xiě)器的軟件體系主要包含以下幾個(gè)組成部分。
3.1對(duì)讀寫(xiě)器的啟動(dòng)
用戶在開(kāi)始使用讀寫(xiě)器,也就是要求與讀寫(xiě)器進(jìn)行數(shù)據(jù)通信前,首先需對(duì)設(shè)備進(jìn)行復(fù)位,使其加電啟動(dòng)系統(tǒng)并進(jìn)入待機(jī)狀態(tài)。
具體實(shí)施過(guò)程為PC機(jī)端首先通過(guò)已選擇好的串口,根據(jù)標(biāo)準(zhǔn)串口通信協(xié)議發(fā)送一個(gè)正脈沖至 讀寫(xiě)器端的RTS引腳。同時(shí)在讀寫(xiě)器中,為了使用戶(如PC機(jī))能夠驗(yàn)證設(shè)備的當(dāng)前復(fù)位狀態(tài),在讀寫(xiě)器被正確復(fù)位后,其上的控制系統(tǒng)會(huì)發(fā)送一個(gè)第一響應(yīng)碼至用戶端,在用戶正確接收到后,需返回一個(gè)第二響應(yīng)碼至讀寫(xiě)器,使讀寫(xiě)器端與用戶端能夠相互確認(rèn)并建立起正確有效的通信體系。否則在用戶端需要繼續(xù)等待,讀寫(xiě)器在一定限時(shí)內(nèi)會(huì)重發(fā)第一響應(yīng)碼。但如果用戶端長(zhǎng)時(shí)間未能收到正確數(shù)據(jù),此時(shí)重新進(jìn)行復(fù)位操作。
3.2通信“握手”
為保證數(shù)據(jù)通信過(guò)程的正確有效,使讀寫(xiě)器保持較好的通信質(zhì)量,在協(xié)議中規(guī)定對(duì)用戶設(shè)備 與讀寫(xiě)器間建立的通信信道的可靠性進(jìn)行實(shí)時(shí)的校驗(yàn)。即在對(duì)讀寫(xiě)器進(jìn)行復(fù)位啟動(dòng)后,還需要在用戶端與讀寫(xiě)器間進(jìn)行一個(gè)稱為通信“握手”的校驗(yàn)程序,目的在于檢驗(yàn)當(dāng)前通信信道的工作狀態(tài)是否正常。其具體內(nèi)容主要是對(duì)一組預(yù)定義的數(shù)據(jù),在用戶端與讀寫(xiě)器之間進(jìn)行通信傳輸,通過(guò)驗(yàn)證通信結(jié)果是否符合預(yù)設(shè)的數(shù)據(jù)內(nèi)容,校驗(yàn)當(dāng)前通信信道是否正確可靠。通常為用戶發(fā)送第一響應(yīng)碼至讀寫(xiě)器,讀寫(xiě)器正確接收到則返回第二響應(yīng)碼至用戶端,而用戶端若正確接收到第二響應(yīng)碼則繼續(xù)下一步工作,否則等待讀寫(xiě)器端重發(fā)數(shù)據(jù)。但如果在限時(shí)內(nèi)未收到正確的第二響應(yīng)碼數(shù)據(jù)則確認(rèn)為當(dāng)前通信出現(xiàn)異常,并提示系統(tǒng)報(bào)告當(dāng)前錯(cuò)誤情況。
3.3指令格式
讀寫(xiě)器的用戶在與讀寫(xiě)器進(jìn)行數(shù)據(jù)通信時(shí),根據(jù)智能卡應(yīng)用規(guī)范,用戶端都應(yīng)當(dāng)遵循一定的 格式組織和創(chuàng)建指令及提供所需的相關(guān)數(shù)據(jù),目前在讀寫(xiě)器的控制與使用協(xié)議中定義并使用了以下的一種指令格式。
指令由5個(gè)基本字節(jié)組成:字節(jié)1:CLA,指令標(biāo)識(shí)符一;字節(jié)2:INS,指令標(biāo)識(shí)符二;字節(jié)3,4:P1和P2,指令參數(shù);字節(jié)5:LC,數(shù)據(jù)長(zhǎng)度。
用戶端依據(jù)這樣格式建立和發(fā)送指令序列至讀寫(xiě)器,其中字節(jié)1和字節(jié)2形成一個(gè)二級(jí)的指令標(biāo)識(shí),說(shuō)明當(dāng)前指令操作碼的含義;字節(jié)3和字節(jié)4提供一個(gè)參數(shù)空間,輔助說(shuō)明指令操作碼;字節(jié)5說(shuō)明當(dāng)前指令操作數(shù)的數(shù)據(jù)長(zhǎng)度,主要是針對(duì)于非定長(zhǎng)數(shù)據(jù)的通信傳輸過(guò)程。
3.4操作流程
在用戶實(shí)際使用讀寫(xiě)器操作智能卡的過(guò)程中,絕大部分操作都是在完成一個(gè)由用戶端發(fā)送指令和數(shù)據(jù)至讀寫(xiě)器,由讀寫(xiě)器解釋執(zhí)行并轉(zhuǎn)發(fā)至智能卡,最后由智能卡端返回結(jié)果至讀寫(xiě)器,讀寫(xiě)器最終返回至用戶端的一個(gè)操作過(guò)程。因此也以他作為主要依據(jù)來(lái)規(guī)范相關(guān)的軟件協(xié)議,具體如下所示:
復(fù)位啟動(dòng)讀寫(xiě)器協(xié)議要求中的第一步工作。
通信“握手”為確保通信過(guò)程的正確有效,用戶與讀寫(xiě)器進(jìn)行數(shù)據(jù)通信 前都將要先進(jìn)行這一步工作。
發(fā)送指令用戶向讀寫(xiě)器發(fā)送操作指令時(shí),指令組建必須要符合協(xié)議中的 規(guī)定格式。
發(fā)送數(shù)據(jù)對(duì)于含有操作數(shù)的指令,在送出指令碼后,還必須將相關(guān)的 數(shù)據(jù)送至讀寫(xiě)器。
接收狀態(tài)碼讀寫(xiě)器在接收到并執(zhí)行用戶指令后,會(huì)根據(jù)執(zhí)行結(jié)果的內(nèi)容返回執(zhí)行狀態(tài)碼和結(jié)果數(shù)據(jù)至PC機(jī),由此用戶可得到指令的執(zhí)行結(jié)果。
接收數(shù)據(jù)如果當(dāng)前用戶指令要求讀寫(xiě)器提供結(jié)果數(shù)據(jù),讀寫(xiě)器在返回執(zhí)行狀態(tài)碼后,需繼續(xù)送結(jié)果數(shù)據(jù)至PC機(jī)。根據(jù)協(xié)議,結(jié)果數(shù)據(jù)的長(zhǎng)度由指令碼中的LC字節(jié)說(shuō)明。
4對(duì)智能卡的操作COS命令接口
讀寫(xiě)器作為用戶端與IC卡間的操作平臺(tái),在接受用戶端控制與使用的同時(shí),還有一個(gè)重要的 功能就是實(shí)現(xiàn)對(duì)智能卡的操作。COS命令接口就是對(duì)智能卡操作的前端實(shí)現(xiàn)部分。通常在智能卡應(yīng)用當(dāng)中,智能卡本身都具備一個(gè)COS系統(tǒng),由他協(xié)調(diào)并控制卡上的所有指令和數(shù)據(jù)處理過(guò)程,讀寫(xiě)器必須借助于COS系統(tǒng)才能夠?qū)崿F(xiàn)相應(yīng)的功能。COS命令接口做為讀寫(xiě)器端的CO S數(shù)據(jù)通道直接影響到讀寫(xiě)器對(duì)卡的操作。在這一部分協(xié)議中規(guī)定讀寫(xiě)器向IC卡發(fā)送一組定制的指令數(shù)據(jù),IC卡接收到這組協(xié)議數(shù)據(jù)后,通過(guò)解釋這組指令數(shù)據(jù)的具體含義、形成操作指示,再進(jìn)一步轉(zhuǎn)換為讀、寫(xiě)、比較、認(rèn)證及其他控制操作,然后將操作結(jié)果返回給接口設(shè)備,從而完成一次對(duì)卡的操作過(guò)程。讀寫(xiě)器向卡發(fā)送的具有特定操作含義的數(shù)據(jù)塊就是對(duì)智能卡的操作命令;而從卡返回讀寫(xiě)器的狀態(tài)及數(shù)據(jù)信息即為執(zhí)行結(jié)果。其詳細(xì)過(guò)程如圖4所示。
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634631 -
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177803 -
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211574
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論