NFC初探之:如何选购IC复制卡

1,564 阅读5分钟

关于 NFC

  NFC(近场通信:Near Field Communication)起源 RFID(免接触射频识别:Radio Frequency Identification),由索尼和飞利浦联合开发,初期用于商城无线标签取代条码,后广泛应用于门禁、考勤、支付等数据传递场景。

对比NFCRFID蓝牙红外
频率13.56MHz125KHz-135KHz
13.56MHz
860MHz-960MHz
2.4GHz38KHz
距离<0.1m<10m<300m<1m
速率106kb/s212kb/s
424 kb/s848kb/s
2Mbps24Mbps115.2kp/s4Mb/s

  NFC 通信的物理基础为电磁感应原理,基于此有两种工作模式:被动模式中发起方(即主设备)需要有供电来提供射频场;主动模式中双方都需要主动产生射频场进而获得更快的连接速率。NFC 支持四种协议:FeliCaTM(即 Type-F),ISO14443A、B(Type-A、Type-B 是飞利浦的 Mifare 标准,识别距离近<10cm安全性高),ISO15693(针对需要高频清晰场的远距离场合);具体有三种应用场景:

  • 卡模式:相当于一张采用 RFID 技术的 IC 卡,如,门禁卡
  • 读卡器模式:从中介媒体中读取信息,如,触碰连 WiFi
  • P2P 模式:双向通信,如相机触碰导出照片

卡片选型

ID 卡

身份识别卡,一种含固定的编号、不可写入的低频感应卡(125KHz),一般用于门禁。

  1. ID 授权卡:出厂固化了 ID,只读授权卡
  2. T5577/5200EM4305:可擦写的复制卡
    • 5577 是原装芯片,5200 是兼容芯片能兼容 5577
  3. 8211/8268/8310:能穿防火墙的可擦写复制卡

IC 卡

集成电路卡,容量大可读写有加密功能的高频卡(13.56MHz), 主要用于一卡通、消费系统等。

  1. M1 卡:卡号块(0扇区-0号块)不可擦写的授权卡,其他扇区可擦写
    • 其中 S50 容量为1KB分 16 个扇区各扇区有独立密码和访问控制,S70 容量为4KB
  2. UID 卡:卡号块可擦写的复制卡,卡号可通过后门指令修改
  3. CUID 卡:能穿防火墙的可擦写复制卡,卡号只能由普通指令修改
    • 由于 CUID 不响应后门指令,所以防火墙无法通过后门指令检测克隆卡
    • 不响应后门指令可能导致数据一旦写错,无法再读取和格式化(即报废)
  4. FUID 卡:只能写入一次的的复制卡
    • 写入一次后同 M1 卡,可用于突破 CUID 克隆检查
  5. UFUID 卡:支持手动锁卡,锁定前同 UID 卡,锁定后同 FUID 卡
  6. GTU/GDM 卡:能自动复位数据的复制卡,用于突破滚码防复制机制

  根据以上卡特性总结如下:M1 为不可改卡号的原卡(需要系统授权),UID 卡可用来复制 M1 卡;但防火墙系统会通过后门指令修改卡号进而检查是否是复制卡,此时需要 CUID 卡因为它不会响应后门指令;若防火墙通过普通指令修改卡号则需要 FUID/UFUID 卡锁定卡号区块;对于有滚动码的刷卡系统,则可需要 GTU/GDM 的自动复位能力用滚动复位码突破之(但这并不是突破滚码机制的银子弹,参考滚动码

M1 卡认证过程

  Mifare Classic 1K 卡有 16 个扇区,每个扇区含 4 个块,每个块可以保留16B数据。每个扇区的第 4 个块是该扇区的独立密钥和访问控制(独立是一卡多用的关键):访问控制位决定了认证通过后对各块数据的读写支持(如FF078069在认证通过后可对块 0、块 1、块 2 进行读写和加减值操作)。密钥用在三轮认证阶段的Crypto-1算法(但该私有算法 2008 年被突破,进而可逆向计算出扇区中的秘钥)里:

m1-auth.jpg

  1. 读写器指定目标扇区,向卡发送身份验证请求(含操作类型:读或写,这相当于选择了密钥)
  2. 卡向读写器发送明文随机数 Nt(长度4B
  3. 读写器收到 Nt 后生成一个新随机数Nr,并将两个随机数一起加密为8B的数据发给卡片
  4. 卡解密得到NtNr,Nt 验证通过后再加密Nr发回给读卡器
  5. 读写器解密得到Nr后验证,若通过则认证成功

防伪机制

常见的防伪手段有:

  1. 加密:通过用 3 号块对扇区数据进行加密
    • 单加密很容易通过 PN532、PM3 等工具破解,但还需要辨识数据的业务用途,如梯控卡的楼层、有效期。
  2. 篡改:刷卡系统通过后台指令尝试写入 0 扇区
    • 若写入成功,则卡片作废(表现为 UID 卡复制后只能正常使用一次)
  3. 滚码:每次刷卡,系统都从特定扇区读取验证一段校验码,并写入新的校验码
    • 滚动码在系统内和卡号一一对应,若下次同一卡号中的滚码对不上则认为是伪造卡
  4. 卡号校验码:卡号在 0 扇区 0 块前4B,通常第5B为前四个字节的亦或值;部分系统还会在其他区块放一个特定的卡号校验码,这个值和有效期、楼号|梯号|层号、权限码等一样属于业务层的校验。