本文作者:hodit(信安之路无线安全小组成员)
在我们平时生活中有各种各样的卡,比如 ID 卡、IC 卡、RFID 卡、NFC 卡、Mifare 系列卡(可能银行卡、公交卡、饭卡、水卡、门禁卡、电梯卡......我们更亲切些)这么多称呼是不是把自己都搞糊涂了?最重要的还是卡的安全问题像贩卖水卡、盗刷银行卡这些安全问题我们可能都有所耳闻,然后我就这方面进行了简单的学习和实践测试。在网上查资料的时候发现了很多相关文章,但什么还要再写呢?因为这些技术虽然比较古老,但是对像我这种刚接触的新人还是感觉很新奇的,所以就想把自己了解到的一些知识尽可能全面地写出来和大家分享一下,一来是为了整理一下自己所得,二来也希望能够给刚接触这方面的同学一些参考。因此有什么写得不对的地方敬请大家原谅和指出!有什么学习建议也欢迎提出。
IC 卡 (integrated circuit card) 全称 集成电路卡,是 1970 年由法国人 Roland Moreno 发明的,他第一次将可编程设置的IC芯片放于卡片中,使卡片具有更多功能。“IC 卡”和“磁卡”都是从技术角度起的名字,不能将其和“信用卡”、“电话卡”等从应用角度命名的卡相混淆。自IC卡出现以后,国际上对它有多种叫法。英文名称有“SmartCard”、“IC Card”等;在亚洲特别是中国香港、中国台湾地区,多称为“聪明卡”、“智慧卡”、“智能卡”等;在我国,一般简称为“IC 卡”。
它将一个集成电路芯片镶嵌于塑料基片中,封装成卡的形式。
(1)根据镶嵌的芯片不同:
(I)储存器卡: 卡中的集成电路为 EEPROM (可用电擦除的可编程只读存储器)。
只有数据存储功能,没有数据处理能力.该卡本身不提供硬件加密功能,只能存储通过系统加密的数据,很容易被破解.
(II)逻辑加密卡:卡中的集成电路具有加密逻辑和 EEPROM。
加密逻辑电路在一定程度上保护卡及卡中数据的安全,但只是低层次的保护,无法防止恶意攻击。
(III)CPU 卡: 卡中的集成电路包括中央处理器 (central processing unit, CPU), EEPROM, 随机存储器(random access memory,RAM) 以及固化在只读存储器 (read-only memory,ROM) 中的片内操作系统 (chip operating system,COS).
该卡相当于一台没有显示器和键盘的微型计算机,卡中数据分为外部读取和内部处理两部分,以确保卡中数据的安全、可靠.因具有安全性高、可以离线操作、可以运算编程等突出优点,多用于金融、军事等对安全等级要求高的领域.
CPU 卡可作 M1 卡,ID 卡用;
M1 卡可作 ID 卡用,但不可当 CPU 卡用;
ID 卡既不可当 M1 卡用,也不可当 CPU 卡用
(2)按应用领域分为 金融卡 和 非金融卡(大致可以理解为银行卡和非银行卡)
金融卡
非金融卡
(3)按卡与外界传输数据的形式有可分为:接触式 IC 卡和非接触式 IC 卡
非接触式 IC 卡
电极模片(集成芯片电路引出的触点) 用来接触传输数据
像我们平时用的一卡通、水卡都是非接触式 IC 卡,而这种卡就应用了 RFID 技术。从磁卡、接触式IC卡、非接触式 IC 卡发展中,一些卡为了前后兼容会用混合使用。
RFID 是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,作为条形码的无线版本,RFID 技术具有条形码所不具备的防水、防磁、耐高温、使用寿命长、读取距离大、标签上数据可以加密、存储数据容量更大、存储信息更改自如等优点(取决于 RFID 标签的封装材质,条码标签采用树脂碳带和PET标签纸进行热转印也能达到较好的防水、长寿命等效果),其应用将给零售、物流等产业带来革命性变化。
非接触式 IC 卡
由三个部分组成:天线、MPU 微处理器、FLASH ROM
(I) 围成矩形的天线:除了传送信息外还是整个卡的能源装置。
MPU 微处理器与 FALSH ROM 被封装于同一芯片内,这是整个一卡通的核心。一卡通里面大约 10 平方毫米的矩形芯片。MPU 负责将天线接受的信号进行加解密、分析并控制数据的存储。而 FLASH ROM 就是存储介质,类似于 U 盘用来存储加密数据。
(II)供电以及读写原理:
非接触式 IC 卡本身没有能量,需要通过外部提供。
实现方式: LC 谐振电路
大概工作过程: 读写器发射一组固定频率的电磁波,卡内有一个 LC 串联谐振电路,其频率与读写器发射的频率一致,在电磁波的激励下 LC 谐振电路产生共振,从而使电容内有了电荷。在此电容的另一端接有一个单向导通的电子泵,将积累的电荷送到另一个电容内存储,当积累的电荷达到一定程度,电压就会达到 IC 电路能 正常工作的电压,此电容作为电源为其他电路提供电压,对卡内的数据进行读写。
那么卡是到底如何传输自己的信号呢,实际上卡端通过对自身连接的线圈的开路、短路来实现的,这样卡芯片基本上不损耗电。但条件是读卡器一直处于 13.56MHz 的高频信号下,卡通过不停的开路、短路自身的天线,导致读卡器与卡之间的磁场变化,从而影响了读卡器天线两端的电压幅度的微弱变化,再从这个微弱的信号中,类似 AM 收音机一样,获取信号。这个就是所谓的“负载调制”,那么还有一个“副载波”又是什么意思,这个等价于一般射频中的中频概念,主要是为了解决数据过来的时候,长0或长1的问题,比如连续很多个 0 信号或者 1 信号,导致读卡器接收的时候,无法分辨到底是数据,还是稳态的非数据,所以在数据传输的时候,再插入信号以作数据标识。
NFC 技术的起源却要从 2003 年说起。当时的飞利浦和索尼两家公司计划基于非接触式卡技术发展一种与之 兼容的无线通讯技术。因此,飞利浦派了一个团队到日本和索尼的工程师一起闭关开始研发这种技术。三个月两家公司联合对外发布了研发成果,既一种可兼容当前 ISO14443 非接触式卡协议的无线通讯技术,并取名为 NFC(Near Field CommunicaTIon)
就是这个技术由免接触式射频识别(RFID)演变而来,并向下兼容 RFID。
NFC 是目前手机非常常见的一个通信接口。可以让智能设备通过相互靠近的方式来交换数据。NFC 设备也可以与一个无源的 NFC 标签之间进行通信,这个通信方式就和 RFID 是一样的. NFC 技术是由 RFID 技术演变而来,除了通信协议,NFC 标准还规定了数据交换格式。在 NFC 单一芯片上结合了感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换
NFC 可以理解为 RFID 技术的一个子集,使用的是 13.56MHz 频段,而 RFID 还包括其他频段。RFID 的工作频段有很多,低频段有 125KHz,高频段有 13.56MHz,超高频段有 433.92MHz、915MHz,还有微波频段的 2.45GHz 等。
NFC 被称为近场通信,通信距离确实非常近,不超过 0.1m。
RFID 种类很多,可识别距离也不一样。像 RFID 门禁卡,识别距离和 NFC 差不多。但对于 ETC 这种应用场景,就要求识别距离比较长。长距离 RFID 的识别距离可达几十米甚至上百米。
RFID 无论主动还是被动,主要工作还是用于对物体的识别,物流、运输、仓储都广泛使用了 RFID 技术来跟踪货物。
NFC 芯片的集成度更高,包括了读卡器与标签于一体。另外 NFC 的双向通信能力得到了加强。也就是说,NFC 不仅可以当做标签来做识别,还可以作为一种双向通信方式用于数据交换。目前 NFC 最常用于支付领域。
上述卡片中 M1、MO 的 UID 号都不可以修改,UID 卡的 UID 卡虽然可以修改 UID 号但是目前大多数的读卡器系统都可以识别出来是 UID 卡,所以 UID 卡会被屏蔽也没什么用了。
但这难不倒我们智慧的人民群众,继而出现了 FUID 卡和 CUID 卡。
FUID 卡是一种支持修改 UID 号的卡,但是修改一次后将被锁死变成 M1,不能再修改 UID 可以完美防屏蔽。
CUID 卡是一种支持多次重写 UID 号并且可防屏蔽的卡,但还是有被检查出来的可能。
PN532
ACR122U-A
Proxmark3
Chameleon Mini
PN532、ACR122U-A、Proxmark3 主要用于破解卡密码、读写卡操作。而 Chameleon Mini 是德国大学在研究RFID 安全时所设计的一块针对多频段多类型 RFID 模拟的硬件,其设计本身支持 ISO14443 和 ISO15693 标准协议,简单直接的用法就是把获取到的 Dump 文件自己导入到变色龙内即可进行模拟操作,并且可以进行卡与卡之间的数据切换以及还原操作,可以理解为一张多功能的 uid 白卡/功能强大的监听卡。作用是将智能卡的 Dump 内容导入后,Chameleon Mini 即可在遇到读卡器的时候,直接采用智能卡与读卡器交互的逻辑进行工作,从而模拟出一张智能卡。
ID 卡又称射频 ID 卡,频率一般为 125KHz。现在市场采用的多是一种无源、唯一序列号的 ID 卡片,制造厂家在产品出厂前已将此序列号固化,不可更改。它的工作原理是卡上有环行线圈,线圈连接IC组成谐振电路,其频率与读写的发射频率相同。读写器发送电磁波使ID卡谐振电路产生共振并产生电流作用于 ID 芯片,这就是 ID 卡的读写原理。国内目前所说的 ID 卡俗称通常指与 EM4100 完全兼容的ID低频芯片卡,也有人称为 EM 卡
如今 ID 卡常用芯片型号有 EM4100、EM4102、SMC4001、NT8803、NT8805 等。国内实际用量最大的是中国台湾出产的 SMC4001,其次才是瑞士 EM 公司生产的 EM4100。目前 ID 卡最典型应用:门禁、考勤、消费、停车等各种安全要求不高的场合。
a.ID 使用场合:
ID 卡多使用在公司,小区安防等,针对具体应用,可将持卡人的个人资料送入后台计算机,建立数据库并配置应用软件,使用时通过读卡器将读到的卡号送至后台计算机,从数据库中调出持卡人的个人资料,而后根据具体进行操作。
b.ID卡的信息数据读取和复制:
ID 卡的构造简单,根据设备的频段读取设备信息,然后根据读取的信息,重新写入到新卡中,ID 的因为没有存储和加密的功能,所以读出的只是一串号码,把号码重新写入到新卡就可以完成复制了。
工作距离:可达 100mm (视天线结构而定)
工作频率: 13.56MH
安全机制:
①互三轮认证( ISO/IEC DIS9798-2)
②带重现攻击保护的射频通道数据加密
③每区(每应用)两个密钥,支持密钥分级的多应用场合
④每卡一个唯一序列号
⑤在运输过程中以传输密钥保护对 EEPROM的访问权
数据完整性:
①每块 16 bitCRC
②每字节的奇偶位(传送的每个字节末尾都有一个奇偶校验位(奇校验))
③位计数检查
④位编码,以区分 ”1”、 ”0”和无信息。
⑤通道监控(协议序列和位流分析)
工作流程:
功能模块
通信原理流程图
①RF-Interface: 射频接口电路,主要包括波形转换模块、调制/解调模块、电压调节模块和 POR(Power-On Reset) 上电复位模块。POR 模块主要是对卡片上个电路进行上电复位,使各电路同步启动。
②ATR模块(Answer to Request-请求应答模块): 当卡片靠近读卡器,读卡器会向卡片发送 Request standard/all 请求命令。在上电复位 POR 后,M1 卡发送 ATQA 码( TagType-卡片类型码-2 Byte,如 00 04 代表 MF1S503yX)回应 REQA 请求或者唤醒 WUPA 命令。建立第一次通信联系,如果ATR没成功则不会进行下一步操作。
③AntiCollison 模块: 防冲突机制,如果读卡器感应区存在多张卡,它们需要以自己的标识符(序列号-4Byte + 校验位-1Byte)来区分并且只有被选中的一张卡才能进行下一步操作。
④Select Application模块: 选卡,读卡器使用选卡命令选择一张卡作为验证和存储相关操作,卡片返回选择应答 SAK 码(卡片容量)。当读写器收到卡片容量信息后则进行下一步操作。
⑤Authentication&Access Control 模块: 3 次互相验证。在选卡之后,读卡器指定存储地址,使用相应的密码完成3次互相验证步骤。验证通过之后则允许读写器对卡片进行操作,所有的存储操作都是加密的。
存储器操作:
①读(Read): 读数据块
②写(Write): 写数据块
③减值(Decrement): 减少数据块内的数值,并将结果保存在临时内部数据寄存器中
④加值(Increment): 增加数据块内的数值,并将结果保存在数据寄存器中
⑤转存(Restore): 将临时内部数据寄存器的内容写入数值块
⑥暂停(Halt ): 将卡置于暂停上作状态
具体原理因作者能力太 low 无法详细解释清楚敬请原谅,不过我们知道要对储存器进行操作要完成 三轮认证
M1 标签信息 1K = 1024 Byte
三轮认证流程:
a) 读写器指定要访问的区,并选择密钥 A或 B。
b) 卡从位块读区密钥和访问条件。然后,卡向读写器发送随机数 (RB)。(第1轮)
c) 读写器利用密钥和随机数 (RB) 计算回应值。回应值连同读写器发出的随机数 (RA)--TOKEN AB,发送给卡。(第2轮)
d) 卡通过与自己的随机数 (RB) 比较, 验证读写器的回应值, 再计算回应值连同 RA--TOKEN BA 发送给读卡器(第3轮)。
e) 读写器解密 TOKEN BA 通过比较 c) 时发出的RA是否和 TOKEN BA 携带的 RA 相同。
在第一个随机数传送之后,卡与读写器之间的通讯都是加密的
基本内容介绍完毕。
水卡读取后的信息
............
Mifare 是 NXP 公司生产的一系列遵守 ISO14443A 标准的射频卡,包括 Mifare S50、Mifare S70、Mifare UltraLight、Mifare Pro、Mifare Desfire 等。Mifare S50 的容量为 1K 字节,常被称为 Mifare Standard,又被叫做 Mifare1,是遵守 ISO14443A 标准的卡片中应用最为广泛、影响力最大的的一员。Mifare Classic card 提供 1k-4k 的容量,我们经常见到的是 Mifare Classic 1k(S50) 即 M1K 卡,S50 的卡类型 (ATQA) 是 0004H.如图上去可以看到有 M1 卡 16 个数据储存区既"扇区"(0-15),每个扇区又分为 4 个储存单元既"块" (0-3),每个扇区尾部(对于 M1 卡是每个扇区的第 3 块)都有独立的一对用于验证的密钥 keyA 和 keyB。keyA 和 KeyB 中间的字节是访问限制 (Access Condition) 定义哪一个操作对于该扇区而言是可行的、根据哪个 Key 是用作认证和访问限制。第 0 扇区的第一个数据块存储着 IC 卡的 UID 号( 32 bit=4 byte,已经固化,不可修改),其他扇区可以存储其他的数据,如钱、次数、日期等数据(可以修改)。图中颜色已经标出,大家可以对照着看。
第 0 扇区 0 块数据分析:
UID &厂家数据
MSB 是 Most Significant Bit 的缩写,最高有效位。在二进制数中,MSB 是最高加权位。与十进制数字中最左边的一位类似。通常,MSB 位于二进制数的最左侧,LSB(Least Significant Bit,最低有效位)位于二进制数的最右侧。
校验位的计算方法:
前 4 个字节为 UID 号第 5 个字节为校验字节,校验字节 = 前 4 个字节单独连续异或
比如上图: UID(部分): 96 ED 4E F4
BBC(Bit Count Check): C1
C1=96xorEDxor4ExorF4
扇尾 trailer 有特殊的访问条件。密钥A是永远不可读的,而密钥B可被设置成可读或不可读。当B为可读时,存储器只用来存储数据而密钥B不能用作认证密钥。除了访问条件(AC)和密钥,剩下一个未被定义的数据字节(U)
访问控制位及期控制规则:
在存取控制中每个块都有相应的三个控制位,定义如下:
C10--Byte6 \ C20--Byte7 \ C30--Byte8
上划线表示取反
数据块访问权限(0,1,2块) ,块 3 与块 0,1,2 的则不同
尾块访问权限控制表
比如图中的 FF 07 80 69
因为扇区数据的读取需要用到 keyA 和 keyB 所以无论是复制卡还是修改卡内数据都需要先破解密码。
工具:带 NFC 功能的手机(及 MIFARE 经典工具)、PN532(及 NFC 上位机)、电脑( Win10)
准备:根据卡片表面信息查找相关信息、四周无人、读卡器周围是否有网线、判断卡片类型。。。
发现是常见的 M1 卡有戏......
发现扇区 10 和 11 不是默认密码 留意扇区 10 和 11
这里我用的是 PN532 因为比较便宜适合入门学习
连接设备 放上卡片 点击 读整卡 等待破解密码 读取内容
用手机读取是因为手机比较隐蔽适合多次读取 和 保存数据
将从保存的数据中提出 10 扇区 0 块数据 和 金额 进行分析
b0 b1 b2 b3 b5 bF
这 6 处
因为对十六进制直接运算不熟悉,所以我先转换成了十进制方便运算找规律。因为金额与数据有关我也将金额转换成16进制。但是因为有小数点,可以尝试扩大倍数。可以10 100 1000 10000一一尝试分析。因为小数点后面有两位小数,按着思维去小数点尝试 100 倍。
首先将金额放大 100 倍转 16 进制后 补齐位数 发现 为 b2 b3 的倒序 多组数据验证正确!
即b2、b3为金额字节,b0,b1,b5,bF为校验字节
然后观察发现 b1 = b2 + b3 多组数据验证!
然后观察十进制数中 b1 + b5 =255 所以 b5 = ~b1 多组数据验证!
然后继续观察 b15 = b5 - 11 多组数据验证!
然后继续观察 b0有时等于 b5 + 8 有时等于 b5 - 8 猜测 b0 = b ^ 8 多组数据验证!
到此6处改变的地方之间的规律都找完整了。
7.尝试修改数据 并验证 可以直接手机、工具修改 或者 先读取 dump 用 winhex 修改 等其他方法。
比如修改成 100.00 元 则 10000 然后转换成 16 进制-- 2710 --倒序-- 10 27 即 b2 = 27
b1 = 10, 然后根据上述规则依次算出数据。
该水卡的加密规则不是很复杂而对于有些涉及次数、时间、滚动码的卡怎么破解,因没有相关卡所以没有深入了解相关的破解分析。。。
危害: 对个人、公司、社会。。。, 损害他人利益,诱导别人犯罪......
1.国内很多厂商对于卡密都没有进行修改大部分都是弱密码,如 FFFFFFFFFFFF、000000000000 等而 M1 是被动卡,需要读卡器为之供能,一旦读卡器切断电源,卡中临时数据就会丢失,所以无论试错多少次密码都不会被锁定因此容易被暴力破解。可以采用复杂密码以提高安全。
2.IC 卡分 16 个扇区,很多厂商只对和金钱有关的扇区进行加密,这样就很容易通过对比来解密加密的扇区。可易 16 个扇区全加密多加混淆以提高分析难度。
3.由于有些厂商对 IC 卡的加密非常信任,数据完全存放于 IC 卡中,不与数据库做交互,因此有人利用这一漏洞来修改IC卡中的信息从而达到非法的目的。这种问题的解决办法是将卡中信息存入数据库中,每次刷卡时将IC卡中的信息与数据库中的信息做对照,如果一样可以使用,如果不一样则禁止此卡使用。
4.逐渐 M1 卡替换成安全系数更高的 CPU 卡.
5.注意保护好自己的卡,不要随意经手陌生人防止被破解复制盗刷.
Mifare 卡的算法破解和应用---刘欣凯
https://wenku.baidu.com/view/bdf1287da417866fb84a8ee1.html
典型非接触式卡 (MIFARECLAssic) 的攻击实实践
https://wenku.baidu.com/view/2a09235be2bd960591c6775e.html
M1 卡破解(智能卡攻防技术分层、分级研究探讨)
https://blog.csdn.net/fei0724/article/details/17420219
物联网设备的标识技术:RFID 与 NFC 究竟有什么关系?
http://news.rfidworld.com.cn/2017_06/551db8a812ead56e.html
ID 卡、IC 卡、RFID 卡、NFC卡、Mifare 卡各种概念的关系
https://wenku.baidu.com/view/54351977fad6195f302ba62a.html?from=search
M1 卡区块控制位详解
https://www.cnblogs.com/zhupengfei/p/8983666.html
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有