引言
---智能卡(SmartCard)又称集成电路卡(Integrated Circuit Card,即IC卡),将微电子技术和单片机技术结合在一起,具有高的可靠性、安全性和灵活性,其广泛地应用于电信、金融、交通及公共事业等领域。智能卡接口控制器是连接智能卡和主控设备的桥梁,是智能卡处理设备中的最重要组成部分之一。面对庞大的市场需求,各大芯片厂商都推出了各自的智能卡接口控制器芯片,例如,Philips的8007、Linear的LTC1755/6等。本文也提出一种实用的智能卡接口控制器的设计方案。
单片机智能卡设计的硬件结构
读写器的硬件组成如图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所示。