具有防复制卡功能的ID卡读卡器设计与实现
扫描二维码
随时随地手机看文章
潘春伟,罗明华,姚庆梅
(1.山东建筑大学 信息与电气工程学院,山东 济南 250101;2.山东省智能建筑技术重点实验室,山东 济南 250101)
引 言
125kHzID 卡结构简单,40位的卡片序列号包含在卡内一个 64 位的卡号信息中,与读卡器使用TTF(TagTalkFirst) 方式通讯,广泛应用于考勤、门禁、微金额支付等系统中。由于卡片向读写器传送数据时使用了非加密的明码方式,使得复制、伪造卡片十分容易且成本低廉。
根据常见复制卡的特点,本文设计了一种新型 125 kHz 防复制ID 卡读卡器,可以对使用Temic、Hitags、EM 系列等可读写卡复制的ID 卡进行屏蔽排斥,从而有效保护用户系统的安全。
1 理论分析
原版的ID 卡功能单一,出厂时已将 64 位的卡号信息固化在卡片的非易失性存储器内。卡片进入125 kHz 的射频场后得电复位,立即主动将 64 位卡号信息持续循环向读卡器发送。原版卡的上电复位时间极短,我们以 EM4100 卡片为例[1],其说明书中虽然没有给出准确的卡片复位时间,但经大量实际测试表明该值小于1 ms。
最常见的有 Temic、Hitags、EM 系列可读写卡片。相对于原版的ID 卡,这些卡片的共同特点是,一方面可读写卡片比同类型只读卡片的电路结构复杂,相同情况下电路复位比只读卡需要更的时间 ;另一方面,这些可读写卡由于既可以工作在RTF(Reader Talk First)模式,又可以工作在 TTF 模式,通
常还可以设定通讯的数据编码和速率,故卡片电路复位完成后还要读出配置信息,以便决定进入哪种工作模式,执行何种通讯数据编码和通讯速率。因此,从进入射频场,到开始向读写器发送数据,复制的ID 卡所用的时间要远远大于原版的ID 卡。
上述三种常用于复制的卡片,从其数据说明书中可以查得准确的卡片从进入磁场到开始以TTF 模式发送数据的时间[2-4],与原版卡对比可以得到表 1。
普通125 kHz ID 卡工作时数据传输速率是 2 Kb/s,传送1 位的时间是 512 μs,传送 64 位的卡号信息共需 32.768 ms。根据表 1 中数据可以得出结论,若原版卡和复制卡同时进入射频场,复制卡开始主动发送数据的时间至少比原版卡滞后2 ms,即滞后约 4 个数据位(512 μs×4 ≈ 2 ms)。根据这一差别,设计读卡器时如果在打开射频场后延时 1 ms 开始读取数据, 则在之后的 32.768 ms 时间内可读到原版卡的全部 64 位卡号信息,而复制ID 卡只能读取约 60 位。利用这一特性,就可以设计出屏蔽复制卡的ID 卡读卡器。
2 硬件设计
从前述理论分析可看出,屏蔽复制卡的机制主要在于软件,硬件方面没特殊要求。如图 1 所示,整个系统以普通的 51 单片机STC89C52 为核心,外围电路包括 HTRC110 接收模块、串行口通讯模块、声光指示模块及电源模块等。STC89C52 控制HTRC110 芯片实现卡片信息读取,读到的 64 位卡号信息经解码后得到 40 位有效卡号通过串口输出,并驱动声光电路动作。此外串口还可以实现单片机的ISP 功能,电源电路实现对整个系统稳定可靠供电。
2.1 主控芯片电路
主控芯片完成系统各模块的软件初始化、读卡解码、串行通信及声光控制等功能,其中除读卡解码外其他任务都比较简单。读卡解码虽然工作量较大,但在普通ID 卡 2 Kb/s 的通讯速率下,技术成熟、物美价廉的 51 系列单片机就可以满足设计要求。
系统选用宏晶科技STC89C52RC 单片机作为主控芯片[5],STC89C52RC的最高时钟频率可达 80MHz,内部自带 8KBFLASH程序存储器和 512字节数据存储器,有 3个定时器和1 个串口,并可通过串口实现ISP 程序下载与更新。
STC89C52RC 外围配以简单的阻容复位电路,为获得较为准确的定时时间和串行通讯波特率,使用 22.118 4 MHz 晶振。
2.2 HTRC110模块电路
卡 号 信 息 接 收 模 块 选 用 125 kHz 射 频 接口 芯片HTRC110[6]。HTRC110 支持所有工作频率为 125 kHz, 使用AM 写数据、AM/PM 读数据的射频卡片(标签),可以对数据实现调制与解调,根据系统或卡片(标签)的需要设置芯片增益、带宽等参数,并可通过软件打开或关闭天线。110 芯片通过三线串行通讯与CPU 连接。
HTRC110 模块电路如图 2 所示。芯片时钟选用 4 MHz 晶振,SCLK、DOUT、DIN 加上拉电阻后与微处理器的I/O 口相连接,ANT 插座用于外接天线。
2.2 通讯及声光指示电路
通讯电路实现有效卡片序列号的输出,并实现 ISP 程序下载功能。系统中选用一片MAX232 实现串口通讯,其电路采用经典的 4 电容接法。声光指示电路用于读卡信息指示,当读到有效卡号时,LED 闪烁并伴蜂鸣器动作。
3 软件设计
防复制ID 卡读卡器的软件主要由系统初始化程序、卡片信息接收、卡片信息解码、数据输出与状态指示等部分组成。
系统软件总框图如图 3所示,开机初始化完成后即进入无限循环读卡,每次先复位射频场中的卡片,接着在限定时间内持续接收 64位卡号信息,如果接收成功则从接收的卡片信息中解码卡片序列号,并将卡片序列号从串口输出,同时驱动声光指示。
3.1 HTRC110初始化配置程序
HTRC110 初始化在开机后的系统初始化阶段进行,其流程图见图 4。首先通过 HTRC110 的 4 个配置页设置芯片相关工作参数, 包括:通过配置页 0, 设置通频带为160 Hz ~3 kHz,设置放大器增益为 500 ;通过向配置页 1 写入0 打开天线 ;向配置页 3 写入0 设置HTRC110 的外部晶振为 4 MHz。之后的AST 设置和通用设置都是HTRC110 厂家指定必须执行的序列[6]。经过上述步骤,HTRC110 初始化设置完成,开始准备从天线射频场中接收卡片信息。
3.2 卡号信息接收程序
卡号信息接收程序用来接收 64 位卡号信息,其流程如图5 所示。首先通过设置配置页 1 的 TXDIS 位关闭天线,射频场中的所有卡片因为失去能量来源而全部断电,5 ms 后清除TXDIS 位打开天线,射频场内的所有卡片得电复位,原版卡直接进入TTF 模式循环发送 64 位卡号信息,复制卡读取配置页数据,根据配置参数开始进入TTF 模式循环发送 64 位卡号信息。
HTRC110在打开天线后立即设置为数据接收模式,然后延时 1ms以等待原版卡复位,之后开始限时接收数据。接收64位卡号信息需要 32.768ms,为增加接收的可靠性,接收时间设置为接收 65位数据的时间,即 512μs×65=33.28ms, 在此时间内 CPU 循环查询 HTRC110的 DOUT引脚。64位ID卡的数据采用曼彻斯特编码,上升沿表示数据“1”,下降沿表示数据“0”,发送连续的“0”或“1”时,两个数据沿之间增加一个状态转换沿[7]。在DOUT端,捕捉到数据沿则立即将数据移位进入数据缓冲区,如果是状态转换沿则继续监测DOUT端的下一个电平跳变。如果在 33.28ms时间内接收到 64 个有效数据位则转去解码程序,否则继续进行下一次复位天线接收数据的循环。根据前述理论分析,只有原版卡可以在 33.28 ms 的时间内送出完整的 64 位卡号信息,复制卡无法全部送出,从而实现了对复制卡的屏蔽抑制。
样接收到的数据可能并不是以 9 个“1”开头,因此第一步先找出缓存中 64 位卡号数据的头部,方法是将 64 位卡号数据
3.3卡片序列号解码程序
卡片序列号解码程序实现从接收的 64 位卡号信息中提取40位有效的卡片序列号并校验其正确性。卡片内卡号信息的结构如表 2所示,其中 9个“1”的头部用于识别卡序列号的开始,之后是 50位的卡序列号及其校验位(卡序列号 5字节共 40位,每 4位增加一个行偶校验位),最后是 4位列偶检验及1位停止位“0”。
卡号解码程序的流程图如图 6 所示。通常的ID 卡接收程序中一般先识别接收 9 个“1”的卡片信息头部,然后接收其余部分。这种方法的好处是解码简单,而且可以边接收边解码,缺点是由于要先识别卡号信息的头部,导致接收时间变长。本设计由于要利用复制卡发送卡号信息起始时间的滞后性实现对复制卡的抑制,允许接收的时间严格控制为 33.28 ms, 故不能先识别头部,而是有数据就接收,先存储后解码。这样接收到的数据可能并不是以 9 个“1”开头,因此第一步先找出缓存中 64 位卡号数据的头部,方法是将 64 位卡号数据做大循环右移,每移 1 位立即检查开始的 9 位是不是 9 个“1”且第 64 位是不是结束位“0”,不是则继续移位直至找到头部。如果移位 64 次后都没有找到头部则说明接收的数据有误,返回接收程序继续接收。
找到数据的头部后,从头部的下一位(第 10位)开始到第 59位,每 5位正好对应半个字节卡序列号数据及1位偶校验位,因此可以每 5位提取作为一个字节,50位共提取 10个字节。第 60位到 64位是列校验位和停止位,此 5位提取作为第 11 个字节。
数据提取完成后先对前 10个字节作行偶校验,再将前10个字节与第 11字节进行列偶校验,校验通过说明接收到正确的卡号,将前 10 个字节中除校验位之外的数据提取组合为5 个字节,即为最后有效的 16 进制卡片序列号。
4 实验测试
使用EM4100、HITAGS32、EM4205、TEMIC5567 四种典型卡片各 200 张进行测试,所有的EM4100 原版卡片均可正常读取卡号,其他三种复制卡片全部被屏蔽,证明本文讨论的方法是正确可行的。
结 语
本文讨论了根据复制卡在进入磁场后发送卡片信息的时间滞后于原版卡的特性实现读卡器屏蔽复制卡的方法和主要技术。系统硬件结构简单,软件实现容易。随着技术的发展, 复位时间更短的复制卡,本系统可能会发生误读,另外使用更快的CPU 代替 51 单片机可以大大提高系统性能。