一種智能卡讀寫器的設計與實現
文章出處:http://5052h112.com 作者:楊志峰 王志新 人氣: 發表時間:2011年10月20日
[文章內容簡介]:本文闡述了設計實現一種基于智能卡應用的IC卡 讀寫器。此讀寫器在智能卡應用的基礎上突出通用性,能夠對以智能卡為主的各類IC卡 進行操作。
1引言 智能卡也稱CPU卡,是一類將處理器、存儲設備和一定規模的操作系統集成一體,具備較強 功能和較高安全性的IC卡。智能卡讀寫器是智能卡應用過程中卡與用戶間的交互平臺,是能將數據信息“寫入”卡和將卡內部的數據信息“讀出”的接口體系,是開發智能卡相關產 品及系統集成所必備的前端處理設備。本文闡述了設計實現一種基于智能卡應用的IC卡 讀寫器。此讀寫器在智能卡應用的基礎上突出通用性,能夠對以智能卡為主的各類IC卡 進行操作。根據目前智能卡應用中的實際需求,讀寫器主要具備以下基本功能: (1) 向IC卡提供穩定的電源和時鐘信號。 (2) 實現讀寫器與IC卡之間的數據交換,并提供控制信號。 (3) 具有和外部用戶交換信息的接口,并提供相應的控制信號。 (4) 有基本的加/解密安全體系。 (5) 適用于對多種IC卡的操作。 設備同時具有開放性的軟、硬件接口,能夠與PC機等用戶平臺進行連接,從而為后期用戶提 供良好的二次開發方面的支持。 2硬件結構 讀寫器的硬件組成如圖1所示。包括電源、單片機系統、RS 232接口、IC卡讀寫接口、多路 時鐘系統和復位電路等幾個主要部分。 單片機系統由89C52CPU、三態地址鎖存器和靜態存貯器組成。89C52的P0口與三態地址鎖存 器形成地址總線的低8位,即A0~A7,以及數據總線D0~D7;89C52的P2.0~P2.6形成地址 總線的高8位,即A8~A12。靜態存貯器用于保存讀寫器運行過程中預設的一系列軟件指令。串行接口用于實現讀寫器與用戶端設備,如PC機等之間的數據通信。在當前系統中采用了一片MAX232,其中的RXD、TXD做為數據的I/O通道接CPU串行口,完成讀寫器CPU與外部間的數據交換。同時,外部用戶端還可通過串口的RTS信號對IC卡讀寫器進行軟件上的復位。 通用的智能卡多為異步型CPU卡,在其時鐘方面多需要不同的控制和發生體系。因此在讀寫 器中設置有專門的時鐘電路和時鐘控制電路,主要由74LS253雙四選一電路及D觸發器等組成 。晶振提供的脈沖經分頻產生時鐘信號分別送到四選一電路輸入端。另外2個輸入端分別接地和T0(89C52CPU的T0引腳),T0信號通過軟件編程分頻后向IC卡提供時鐘信號,時鐘頻率、脈沖寬度可由具體編程決定。四選一電路的選擇控制端分別接P1.0和P1.1、P1.0和P1.1,分別對應于不同的頻率關系。 在讀寫器的硬件構成上,還提供有上/下電控制電路。這部分電路用于控制對卡的上電和下 電操作,也就是提供對卡的電源開關控制。主要由89C52的P1.7、R3,R4和三極管Q2等組成開關電路來控制對卡的上/下電。當需要給IC卡加電時,通過預先設定的程序使P17置“0”,使Q2導通,VCC通過Q2將CVCC送至IC卡;當I C卡下電時,置P1.7為“1”使Q2截止,從而禁止向IC卡供電。詳細電路如圖2所示。 作為用戶與IC卡之間的交互平臺,讀寫器需要分別建立與外部用戶和內部IC卡之間的數據通 信體系。讀寫器中的IC卡接口即提供讀寫器與IC卡間進行數據交換的通道。根據目前通用的IC卡接口標準,與IC卡的接口基本上由8個信號組成:CLK時鐘、I/O數據、RST復位等,另外有3個NC信號供用戶自己定義。將他們分別與讀寫器中CPU接口線相連,再由CPU通過預設的軟件指令控制和實現與IC卡間的數據交換,如圖3所示。 3讀寫器的軟件體系 用戶以何種方式和過程使用讀寫器是讀寫器開發中的關鍵部分之一,其核心目標是在設備硬件體系的基礎上,開發并提供一個使用戶能夠對硬件進行直接操作的軟件層,這個軟件層部分包括的主要是一系列的應用協議和與其相配合的控制程序。在使用讀寫器的過程中,PC機或其他外部用戶系統必須遵循或借助于這些協議,才能夠與讀寫器內部的控制程序正確互動和協調一致,以實現對設備有效的使用。依據實際的應用要求,該讀寫器的軟件體系主要包含以下幾個組成部分。3.1對讀寫器的啟動 用戶在開始使用讀寫器,也就是要求與讀寫器進行數據通信前,首先需對設備進行復位,使其加電啟動系統并進入待機狀態。 具體實施過程為PC機端首先通過已選擇好的串口,根據標準串口通信協議發送一個正脈沖至 讀寫器端的RTS引腳。同時在讀寫器中,為了使用戶(如PC機)能夠驗證設備的當前復位狀態,在讀寫器被正確復位后,其上的控制系統會發送一個第一響應碼至用戶端,在用戶正確接收到后,需返回一個第二響應碼至讀寫器,使讀寫器端與用戶端能夠相互確認并建立起正確有效的通信體系。否則在用戶端需要繼續等待,讀寫器在一定限時內會重發第一響應碼。但如果用戶端長時間未能收到正確數據,此時重新進行復位操作。3.2通信“握手” 為保證數據通信過程的正確有效,使讀寫器保持較好的通信質量,在協議中規定對用戶設備 與讀寫器間建立的通信信道的可靠性進行實時的校驗。即在對讀寫器進行復位啟動后,還需要在用戶端與讀寫器間進行一個稱為通信“握手”的校驗程序,目的在于檢驗當前通信信道的工作狀態是否正常。其具體內容主要是對一組預定義的數據,在用戶端與讀寫器之間進行通信傳輸,通過驗證通信結果是否符合預設的數據內容,校驗當前通信信道是否正確可靠。通常為用戶發送第一響應碼至讀寫器,讀寫器正確接收到則返回第二響應碼至用戶端,而用戶端若正確接收到第二響應碼則繼續下一步工作,否則等待讀寫器端重發數據。但如果在限時內未收到正確的第二響應碼數據則確認為當前通信出現異常,并提示系統報告當前錯誤情況。3.3指令格式 讀寫器的用戶在與讀寫器進行數據通信時,根據智能卡應用規范,用戶端都應當遵循一定的 格式組織和創建指令及提供所需的相關數據,目前在讀寫器的控制與使用協議中定義并使用了以下的一種指令格式。 指令由5個基本字節組成:字節1:CLA,指令標識符一;字節2:INS,指令標識符二;字節3,4:P1和P2,指令參數;字節5:LC,數據長度。 用戶端依據這樣格式建立和發送指令序列至讀寫器,其中字節1和字節2形成一個二級的指令標識,說明當前指令操作碼的含義;字節3和字節4提供一個參數空間,輔助說明指令操作碼;字節5說明當前指令操作數的數據長度,主要是針對于非定長數據的通信傳輸過程。3.4操作流程 在用戶實際使用讀寫器操作智能卡的過程中,絕大部分操作都是在完成一個由用戶端發送指令和數據至讀寫器,由讀寫器解釋執行并轉發至智能卡,最后由智能卡端返回結果至讀寫器,讀寫器最終返回至用戶端的一個操作過程。因此也以他作為主要依據來規范相關的軟件協議,具體如下所示: 復位啟動讀寫器協議要求中的第一步工作。 通信“握手”為確保通信過程的正確有效,用戶與讀寫器進行數據通信 前都將要先進行這一步工作。 發送指令用戶向讀寫器發送操作指令時,指令組建必須要符合協議中的 規定格式。 發送數據對于含有操作數的指令,在送出指令碼后,還必須將相關的 數據送至讀寫器。 接收狀態碼讀寫器在接收到并執行用戶指令后,會根據執行結果的內容返回執行狀態碼和結果數據至PC機,由此用戶可得到指令的執行結果。 接收數據如果當前用戶指令要求讀寫器提供結果數據,讀寫器在返回執行狀態碼后,需繼續送結果數據至PC機。根據協議,結果數據的長度由指令碼中的LC字節說明。 4對智能卡的操作COS命令接口 讀寫器作為用戶端與IC卡間的操作平臺,在接受用戶端控制與使用的同時,還有一個重要的 功能就是實現對智能卡的操作。COS命令接口就是對智能卡操作的前端實現部分。通常在智能卡應用當中,智能卡本身都具備一個COS系統,由他協調并控制卡上的所有指令和數據處理過程,讀寫器必須借助于COS系統才能夠實現相應的功能。COS命令接口做為讀寫器端的CO S數據通道直接影響到讀寫器對卡的操作。在這一部分協議中規定讀寫器向IC卡發送一組定制的指令數據,IC卡接收到這組協議數據后,通過解釋這組指令數據的具體含義、形成操作指示,再進一步轉換為讀、寫、比較、認證及其他控制操作,然后將操作結果返回給接口設備,從而完成一次對卡的操作過程。讀寫器向卡發送的具有特定操作含義的數據塊就是對智能卡的操作命令;而從卡返回讀寫器的狀態及數據信息即為執行結果。其詳細過程如圖4所示。 5結語 智能卡作為IC卡家族中最重要的成員之一,得到了越來越廣泛的應用,由于其自身的眾多優勢,隨著設計和生產水平的不斷提高,必將成為未來IC應用方面的主流。而讀寫器作為卡與使用者之間的交互平臺,其設計與開發直接關系到智能卡應用的整個過程。實踐證明本文中闡述的智能卡讀寫器具有良好的性能,特別是在通用性、穩定性方面和批數據操作中表現突出,具有很好的應用前景和應用價值。
本文關鍵詞:智能卡,讀寫器,單片機
上一篇:基于新型非接觸IC卡T5557讀寫器設計[ 10-20 ]
下一篇:用PIC 單片機實現的IC 卡讀寫器[ 10-20 ]