南京铁道职业技术学院王啸东
基于单片机的IC卡读写方法研究
南京铁道职业技术学院王啸东
在日常生活中,IC卡有着越来越广泛的应用,如小区的安保系统、食堂的管理系统等。IC卡的安全性是使用者最为关心的问题之一。本文中,笔者介绍的西门子公司生产IC卡为带有保护功能和可编程密码(PSC)的256个字节EEPROM的存储卡SLE4442。SLE4442具有256X8位的EEPROM用户内存;32X1位写保护内存;2线制通信协议,可以按字节寻址;串行接口、触点配置、复位响应符合ISO标准7816-3;擦除和写入的编程时间各为2.5MS等特性,满足了IC卡应用系统的设计要求。
SLE4442主存储器的容量为256个字节,每个字节为8位。主存储器可分为保护区和应用区,地址单元为00H~1FH的32个字节是保护区,带位保护功能,一旦实行保护后,被保护的单元不可擦除和改写。保护区中没有设置为保护状态的字节,其使用与应用区完全相同。
SLE4442保护区已固化的信息如下:00H~03H复位应答信息;04H~07H芯片生产厂家代码和卡型编码;15H~1AH应用标识。在应用系统中,根据需要,保护区既可用作存放固定信息,如发行单位编号、卡编号、批次号、发行时间、持卡人姓名、证件号码等,也可像应用区一样,存放可变信息。
1.复位电路。在电路上,IC卡与接口设备的连接采用I2C总线形式,支持ISO/7816-3同步传输协议,除去密码区操作外,其他类似与对一般串行EEPROM的操作。对SLE4442的操作仅需3根线,即串行时钟线CLK、复位线RST和双向资料线I/O。3根线各自都需要通过一个上拉电阻连到电源线上。复位和复位应答的时序如图1所示。
上电以后,随着CLK上的1个时钟脉冲,当RST由高电平到低电平时,即进行了一次复位操作。这个操作将得到卡的应答。随着以后32个时钟脉冲的输入,I/O线上将得到相应的32位资料,这就是从卡发送到CPU的复位应答标头。
2.密码存储器操作。对密码内存的操作有三个命令:读密码、写密码和校验密码。其中最主要的是校验密码,密码校验正确,读/写密码的情况就类似与读/写主存储器的操作。校验密码必须严格按图的程序框图进行,任何改变都会导致失败,达不到改写卡中资料的目的,还可能引起EC位从“1”变为“0”。在程序返回前,如校验不成功,芯片内部将相当于使EC的三位右移一次,高位用0填充。
3.密码存储器操作记忆体操作。对主存储器的操作有4个命令,包括了读/写保护区的命令。如果保护区里有被保护位,被保护的信息就不能改写。伴随着32个时钟脉冲的输入,使用读保护区的命令可以知道32个字节中那些有被保护的位,也就能够读出保护区的内容。保护区中没带保护位单元的操作如同对应用区的操作一样。
IC卡系统硬件电路介绍了单片机、(IC)SEL4442等硬件电路的设计(图2)。在IC卡控制系统中,在对卡操作前,一般要进行复位和复位应答操作,有时要连续进行两次这样的操作,才能得到正确的复位应答信息。复位应答以后,芯片等待输入操作命令。每个命令必须由三部分组成:一个开始状态,接着是写入三个字节(命令字、地址、资料),再接着是一个停止状态。CLK在高电平时,I/O线由高到低为开始状态;CLK在高电平时,I/O线由高到低为停止状态。
西门子公司的IC卡SLE4442,有着众多的保护、密码功能,提高了IC卡系统的安全性,推进了IC卡应用系统的普及速度。本文中,笔者介绍的基于单片机的IC卡读写方法在实际应用中有着良好的工作效果,系统安全、稳定、可靠。