IC卡安全性研究与应用分析

2021-09-09 07:09刘永清
江苏通信 2021年4期
关键词:读卡器IC卡扇区

刘永清

国家计算机网络应急技术处理协调中心江苏分中心

0 引言

IC卡在生活和工作中十分常见,广泛应用于公共交通、门禁、电子钱包等领域,具有携带方便、操作简单、使用灵活、一卡多用、抗干扰性能力强、可靠性高等优点。标准的IC卡为长方形,尺寸为85.6×53.98mm2,实际生活中使用的IC卡的外形却是各种各样,有卡片式和钥匙扣等样式。

IC卡不但外形各异,卡片的种类也是十分繁多。根据读卡方式可分为接触式、非接触式、双界面卡;根据工作频率可分为低频125kHz、高频13.56MHz、微波2.4GHz等;根据嵌入芯片可分存储卡、逻辑加密卡、CPU卡。

1 M1卡介绍

在众多种类IC卡中,Mifare 1(简称M1)系列IC卡价格便宜,使用最为广泛。M1卡是一种逻辑加密卡,工作频率为13.56MHz,读卡距离可达10cm,与读卡器的通信速率可达106kbps,因此,一次刷卡交易可以0.1秒内完成。M1卡中的无线智能卡芯片是Philips公司根据ISO/IEC 14443A标准开发,通讯层遵从ISO/IEC 14443A的第1、2、3部分,保密层使用经区域验证的Crypto-1流密码,对M1卡的通信数据进行加密。M1卡内置芯片有S50和S70两种型号,S50与S70主要不同在于卡片的扇区分布和容量不同,S50容量为1K字节,而S70的容量达到了4K字节。S50卡使用最广泛,本文将重点介绍。

1.1 M1卡的特点

(1)无线传送数据和能量

M1卡中芯片连接着几匝线圈,组成一个LC串联谐振电路,谐振频率13.56MHz。这些芯片及线圈嵌入到塑料中,这就形成了一张无源的无线智能卡,这种卡不需要电池。读卡器持续向外发出一组固定频率的电磁波,其频率与M1卡的谐振频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使谐振电容内有了电荷,当积累的电荷达到2V以上时,即可驱动芯片工作,此时M1卡的高速RF通讯接口就可以与读卡器传送数据。

(2)反冲突

智能反冲突(Anticollision loop)功能允许同一工作区域中有不止一张M1卡同时工作,反冲突算法每次只选择一张卡,确保对被选中的卡正确执行操作,而且同一区域中没有被选中的卡不会破坏数据,而是回到待机状态等待新的请求命令。

(3)安全性

M1卡的一个重要特点是保密,防止受到欺骗攻击。M1卡和读卡器之间通过三轮确认(Three Pass Authentication)进行相互认证,认证后的数据交互都进行了加密,使得IC卡应用系统具有一定的保密性。

1.2 M1卡数据存储

(1)存储结构

M1 S50卡存储空间为1K字节,分成16个扇区(Sector),每个扇区又分成4块(Block),每块有16个字节,数据的读写以块为存取单位。每个扇区有两套独立的48位的密钥(KeyA, KeyB)。如图1所示。

图1 M1卡存储结构图

(2)访问权限

除了0扇区外,每个扇区的0~2块为数据块,3块为区尾(Sector Trailer)。每个扇区的区尾包括6字节KeyA、4字节存储控制位、6字节KeyB。M1卡每个扇区的存取控制位初始值为FF078069,KeyA,KeyB初始密钥为FFFFFFFFFFFF。

数据块和区尾由3个存取控制位[C1XY, C2XY, C3XY]Y=0~3来定义其读写权限,这些存取控制位以取反(上划线表示)和不取反的形式保存在指定的区尾中,其中字节9保留未使用。数据块和区尾访问条件的定义如表1和表2所示。

表1 数据块访问条件(Y=0~2)

表2 区尾访问条件

(3)数据块

根据访问权限,经过密码验证后,就可以访问数据块。M1卡的数据块根据读写方式又分为两种类型:

①读写块

读写块用作为普通读写的16字节数据块,只能进行读块或写块。

②值块

值块主要用于电子钱包功能,可以读值、加值、减值、转存、恢复,值块中的数据包括符号位共4字节。为了提供检错纠错能力,数据被存储3次,其中原始数据保存2次,取反数据保存1次。剩余4字节用于保存存储段的地址,原始地址和取反地址各保存2次。

(4)厂商块

0扇区0块与其他数据块不同,称为厂商块,标准M1卡的厂商块是只读的,有的兼容M1卡的厂商块可以更改,这种卡称为UID卡。厂商块共16字节,各字节的定义如下:

0~3字节为序列号(UID, Unique IDentifier)。

4字节为校验字节(BCC, Byte Calculation Check),是0~3字节的异或值。

5字节为选择确认码(SAK, Select AcKnowledge),S50的SAK为08,S70的SAK为18,CPU卡的SAK为20,模拟CPU卡的SAK为28。

6~7字节为请求响应码(ATQA, Answer To reQuest, type A),S50的ATQA为0004,表示UID长度为4字节,遵守面向比特的防冲突机制,S70的ATQA为0002,有的CPU卡的ATQA为0344或0008等。

8~15字节为厂商数据。

1.3 M1卡通信过程

为近一步理解M1卡的工作原理,表3列出了文献中实验侦听的IC卡通信过程数据。

表3 读卡器与M1卡通信数据举例

通过分析表3的通信数据可以得出M1卡与读卡器的通信过程如下:

(1)读卡器轮询

①读卡器不停地发送REQA(Request Command, Type A),以探测是否有A类型的IC卡靠近读卡器。

(2)IC卡响应

②IC卡中的LC谐振电路接收到读卡器的电磁波,因共振产生电荷,给IC卡芯片供电,IC卡复位后进入空闲状态,并侦听读卡器发出的命令。当收到读卡器的REQA命令后,IC卡回复ATQA码,并进入准备状态。

(3)防冲突循环检测

③读卡器发出SEL NVB(Select Number of Valid Bits),以进行冲突检测,其中NVB = 20表示有效命令为2个字节。

④靠近读卡器的IC卡都会回应其UID + BCC,M1卡的UID一般为4字节,BCC是一字节的校验字,是UID的异或值。如果此时有多张IC卡同时回应,那么就可能出现冲突,此时读卡器就会再次发送SEL NVB命令,直到没有冲突出现。

(4)选择IC卡

⑤如果没有检测到冲突,那么读卡器就发出SEL NVB UID CRC_A,以选择指定UID的IC卡,此时NVB = 70表示有效命令为7个字节。

M1卡的CRC_A的计算公式在ISO/IEC 13239中定义,其生成多项式为x16+x12+x5+1,记为0x11021,但是16移位寄存器的初始值不是0xFFFF,而是0x6363。

⑥被选中的IC卡回应SAK CRC_A,此时IC卡转换为活动状态,没有选中的IC卡保持准备状态,等待新的请求命令。

(5)三轮确认认证

⑦读卡器发出Auth Addr CRC_A,指定要访问的数据块,并选择密钥A或密钥B进行认证,Auth若为60则表示选择密钥A认证,若为61则表示选择密钥B认证,然后进入三轮确认认证。

⑧IC卡从对应块的区尾读出密钥和存储控制位,判断读卡器是否为合法访问,若为非法访问,则卡片不会响应读卡器;否则发送一个4字节的随机数RB(第一轮确认)。

⑨读卡器将接收到随机数RB、自己生成的随机数RA以及其他附加信息利用未公开的Crypto-1算法进行加密,然后将密文发给IC卡(第二轮确认)。

⑩IC卡对接收到的密文进行解密得到RA, RB及附加信息,检查RB及附加信息是否正确,若检查正确,则IC卡对读卡器认证通过,然后将RA加密后发给读卡器(第三轮确认)。

(6)数据块读写

读卡器对接收到的密文进行解密得到RA等信息,与IC卡进一步确认了随机数RA。认证通过后,就可以对指定的数据块进行读写操作,后续的数据通信都是加密传输的。

由于每个扇区都有各自的密码,如果要对其他扇区进行操作,还需进行⑦至步的三轮确认认证。

2 M1卡破解方法

M1卡虽然有三轮确认认证及数据加密传输等安全手段,但是M1卡存在着众多先天不足的问题,比如:密钥长度只有48位、密钥核验错误次数没有限制等,可以通过不断地重试,对M1卡进行暴力破解。早期要破解M1卡不但要对M1卡有深刻的了解,而且还要有高深的计算机技术,现在网上有多种破解工具,可以轻松破解M1卡。

2.1 PN532

PN532是最廉价的破解方案,仅一块简易电路板,配合mfoc和mfcuk软件使用,就可以满足常规的M1卡的读写操作,适合有一定计算机技术的人员使用,可以用于破解M1S50卡,不能破解全加密卡(所有扇区都未使用改初始密钥和简单密钥),适合破解门禁等应用简单的IC卡。

2.2 ACR122U

ACR122U读写的主芯片也是PN532,配套有更加完善破解软件,使用稍微简单一些,但同样不能破解全加密卡,对于加密了部分扇区的S70卡也较难破解,性价比一般。

2.3 Proxmark3

Proxmark3是一款开源的研究平台,设计图被公布在Proxmark3官方网站,在网上可以找到配套的软件,另有社区可获取对应的固件及技术支持,可破解低频卡、S50和S70全加密卡及部分特殊卡,功能相当强大,但价格较贵。

3 M1卡应用案例分析

M1卡在工作与生活中使用非常广泛,某市的公共自行车卡就是选用了M1卡。

3.1 卡片破解

为了分析该公共自行车卡存储的数据,笔者用ACR122U对自行车卡进行了破解,破解操作界面如图2所示,破解完成后生成了二进制dump文件。

图2 ACR122U破解软件

3.2 数据分析

下面分析破解生成的dump文件,查看公共自行车卡的各个扇区分别存储了什么数据。

(1)0扇区数据

图3 0扇区数据

0扇区第0块数据块是厂商块,SAK=08, ATQA=0004(先传低字节后传高字节),由此进一步验证了该公共自行车卡是M1卡。第1块数据中“20160303”是制卡时间,其他字节功能未知,最后一个字节为校验字节,是0x33与当前块前15字节的异或值。不同自行车卡的第2块数据都相同,可能是公共自行车卡的标识。0区的密钥A为常用的密码“A0A1A2A3A4A5”,密钥B无明显特征,存取控制位为69678969。

(2)1扇区数据

图4 1扇区数据

1扇区第1块和第2块数据相同,是为了数据安全存储而进行的冗余存储,而且这两块数据是作为值块进行存储的,数据值为0x00001324,十进制为4900,即自行车卡的余额为49.00元。

(3)2扇区数据

2扇区第0块数据为自行车的卡号,采用ASCII编码。第1块数据为办卡时间;第2块数据为持卡人姓名,也是ASCII编码。前三块数据的最后一个字节也是校验字节。

卡片其他的扇区,存储数据的意义不明显,有的扇区没有存储数据,在此不再列举分析。

图5 2扇区数据

3.3 卡片克隆

破解了IC卡后,就可对卡片余额等数据进行修改,也可对IC进行复制,操作很简单,导入之前破解生成的dump文件,将该文件写入空白的UID卡中,即可实现IC卡克隆。笔者测试过,复制的公共自行车卡可以正常借车。

3.4 安全建议

通过对某市公共自行车卡的破解可以看出,由于M1卡的先天不足,导致M1卡很容易受到非法复制、恶意修改数据等攻击。那么如何提高M1卡的应用安全呢?有以下两种方案:

(1)将离线刷卡调整为在线刷卡,每次刷卡交易,读卡器都会将卡内数据与联网查询的后台数据进行比较,发现数据不一致时,将该卡列为黑名单禁止使用。正常刷卡时,在更新IC卡内数据时,也同步联网更新后台数据库数据。这种方式可以降低IC卡被非法破解使用的风险,但是也存在一定弊端,每次交易都要网络连接后台数据库,造成交易时长增加,客户体验下降,而且如果网络中断,那么刷卡交易将无法进行。

(2)将公共自行车卡由M1卡更换为安全性更高的CPU卡,这种方案能够彻底解决公共自行车卡的安全问题,但是所有客户都要重新换卡,自行车站点要更换CPU卡读卡器,整个公共自行车系统软件也要更新,工作量较大,需要财政投资升级系统。

图6 ACR122U复制UID卡软件

4 结束语

IC卡在生活和工作中普遍使用,本文首先根据使用方式、工作频率、嵌入芯片对IC卡进行了分类,引入了最为常见的非接触式13.56MHz的逻辑加密卡——M1卡,M1卡因价格便宜使用最为广泛;接着重点介绍了M1卡数据分区存储结构和数据通信过程,指出了当前市面上流行的破解M1卡的三种工具;最后以某市公共自行车卡作为M1的应用案例,对其进行了破解分析,并提出了改进建议。因此,可以说当前许多在用的基于M1卡的交易系统是不够安全的,随着CPU卡价格的下降,无论是政府还是企事业单位在新建IC卡应用系统时,建议使用CPU卡代替M1卡,以提高系统安全性。

猜你喜欢
读卡器IC卡扇区
分阶段调整增加扇区通行能力策略
工商业IC卡控制器改造为物联网控制器实践
与淘汰命运抗争 看懂笔记本的读卡器
在用电梯加装外接式IC卡运行控制系统设计改进
U盘故障排除经验谈
基于EMV非接通信规范的非接触读卡器设计
为二维码识别的献礼之作——评测平治二维码门禁读卡器
基于贝叶斯估计的短时空域扇区交通流量预测
重建分区表与FAT32_DBR研究与实现
MATLAB实现组态王中TCP/IP读卡器监控方法