卡片分类

卡片有很多种分类方式,不同分类又有各式组合,不存在严格的树形或包含关系。本文章的主角是Mifare卡,其它信息均不细讲。

卡片通信方式

卡片从读取方式上包含 接触式、非接触式(如射频)、混合式

  • 手机 Sim 卡是接触式卡
  • 校园卡、公交卡等是非接触式射频卡
  • 银行卡是混合式卡 —— 接触、磁条、射频

卡片通信方式可以从外观上轻松区分,设计上也都是取决于各自使用场景

Mifare 卡都属于 非接触式射频卡

非接触式射频卡的通信频率

超高频 UHF 卡 (865-995mHZ),不常见,常用于停车场的闸机系统,能隔数米远传输数据

低频 ID 卡 (125kHZ),存储只读数据,出厂写死卡号。常见于物流识别、宠物皮下芯片等

高频卡 (13.56mHz),又称 IC 卡,智能卡。它是目前最为常见,应用最广的射频卡片

Mifare 卡都属于 高频IC卡

非接触式高频射频卡的内置芯片

继续按照 高频射频式IC卡 的内置芯片分类,主要包含

  • MIFARE 系列:非常常见,由恩智浦半导体公司(NXP)研发,包含多个系列,成本低用途广。
  • NTAG 系列:同样由恩智浦推出,常用于存储WIFI、联系人、链接等信息,方便操作与共享。
  • CPU 卡:例如 银行卡、MifareDESFire 等。用于高安全性场景中,目前不可破解。
  • 其它 :FeliCa 、 HID iClass 等,不常见。

高安全需求中,CPU卡更加常见。但因制造和管理成本低,Mifare Classic 卡仍在被大量应用。

可通过卡片的 SAK 值判断卡芯片类型,具体见后文

射频通信

标准与协议

RFID(射频识别):

  • 包含低频到超高频
  • 工作距离几厘米到几十米
  • 读写器和标签是独立的两个实体
  • 不支持P2P,设备间为主从关系

NFC(近场通信):

  • 特指高频(13.56mHz)
  • 工作距离 0-10 厘米
  • 既支持读写操作模式也支持卡模式
  • 支持P2P,设备对等可交换数据

NFC 在 RFID 的基础上发展而来,也兼容 RFID 高频的通信标准,但两者不是包含关系

ISO 14443-A/B

ISO 14443 标准定义了 13.56 MHz 卡和读卡器之间的各种特性。分为两种载波调制和二进制编码方式不同且互不兼容的类型:Type-A 和 Type-B ,其对应的呼叫请求命令分别为 REQA 和 REQB,读卡器需要专门支持才能处理对应类型的卡。

硬件设计上,Type-B 比 Type-A 成本更高,更复杂,在高安全性需求的读卡系统中更常见。

  • Type-A 常见于:所有 Mifare 卡片,遵循 ISO14443A 标准
  • Type-B 常见于:银行卡、大多数国家(包括中国)的电子身份证

Mifare Classic 卡通信

读卡器,又称读头、PCD


确认卡片

读卡器工作时持续发射 13.56mHz 射频电磁波,包含呼叫请求命令,同时为卡片提供电能。

  • 卡片响应:

    一旦卡收到此请求,它就会响应读卡器,回应卡类型,让读卡器知道如何进行通信。

  • 防碰撞:

    收到卡的响应后,读卡器会再发送几个请求来检测附近是否有其他卡,从而避免干扰与所需卡的通信。如果只有一张卡响应信号,则读取器选择该卡并继续通信。

通信

读卡器配套系统的会存储对应密钥或密钥算法。选中卡片后可以执行:

  • 解卡

    读卡器使用密钥认证,以访问加密的数据。读和写加密数据的前提都是通过对应权限的密钥解卡

    Nonce 在计算机术语中的意思是“使用一次的数字”,翻译后的一种简称为“随机数”。

    Nonce in computer terminology means “Number used once”

    解卡三次握手:

    1. 读卡器发送认证请求
    2. **卡片返回 Nonce:**卡片生成nT发送给读卡器
    3. 读卡器加密 Nonce 并响应:读卡器用密钥加密nT得密文a,发送a及自身生成的nR
    4. 卡片验证并响应:卡片解密a验证nT匹配后,加密nR返回给读卡器完成认证
  • 读取

    卡片的0块包含 UID,厂商码,卡片类型,等信息,不加密可被直接读取。

    对于加密扇区,需要读取权限的密钥才能读取数据

  • 写入

    为了防复制、防破坏等安全需求,卡片的0块不可被写入

    对于加密扇区,需要写入权限的密钥才能写入数据

    写入操作还可根据密钥权限细分为:任意写入、增值、减值,由控制位决定

卡片状态:

  • Power-off:卡片不在/离开射频场,处于断电状态
  1. Idle:卡片在射频场附近,进入空闲状态
  2. Ready:卡片收到读卡器REQA/B轮询,进入准备状态
  3. Active:卡片收到读卡器选择,进入激活状态
  4. Halt:卡片收到休眠命令,进入休眠状态(可被唤醒回到2)

MIFARE卡片系列

MIFARE卡遵守ISO14443A标准,是该标准的最有力代表,甚至同标准其它卡也会被称为MIFARE卡

MIFARE

MIFARE 卡系列目前分为

  • MIFARE Ultralight - 无加密,简称 M0 卡,用于一次性或有限次数使用,如地铁单程票
  • MIFARE Classic - 传统 Crypto-1 加密,广泛用于交通卡、会员卡、酒店门禁卡等
  • MIFARE Plus - 迭代安全升级版,可用 AES 加密,也兼容 Classic 的 Crypto-1 加密
  • MIFARE DESFire - 迭代安全升级版,支持 AES、TDES 加密、

目前知名度最高应用最广的就是 MIFARE Classic 卡型

MIFARE Classic

  • MIFARE Classic 1K(S50):总容量1KB
  • MIFARE Classic 4K(S70):总容量4KB
  • MIFARE Classic Mini(S20):总容量320Byte

这些卡型仅数据存储量不同,其中 MIFARE Classic 1K 卡 最最常见

“M1卡”既可以特指“MIFARE Classic 1K卡”,也可以指整个 MIFARE Classic 系列卡

由于 MIFARE Classic 1K 卡非常普及,影响力过大,有观点认为简称中的 ”1“ 特指 1K 卡;另有观点认为 ”1“ 特指MIFARE Classic系列的 Crypto-1 加密。简称本就是不严谨的,也没必要过于纠结。只是在少数情况需要明确区分 MIFARE Classic 系列内某卡型时,不要用简称。

IC 卡/智能卡 包含 M1 卡,不可将 M1 卡与 MIFARE Classic 外的卡型混为一谈。

为什么 M1 卡如此主流

Transclude of ../assets/mfcards.avif

M1 卡的使用寿命约为 10年,非常可靠。

M1 卡主要用于存储姓名、编号、电话、日期、金额等数据。虽然有更大容量的卡型,但 1K卡已经能满足大多数使用需求。此外 M1卡的各种软硬件系统(读卡系统、管理后台、数据库等)已相当成熟,被广泛应用。CPU 卡通常需要定制的软硬件系统,生产、发行、更换、维护各环节成本都相对较高,在很多场景中暂时不能替换 M1 卡。

MIFARE Classic 自1994年左右推出,关键技术的专利保护大致在2010年以后已经过期。任何组织或厂商都可以基于 MIFARE Classic 技术生产发行兼容卡,还能自行技术升级、魔改等(如2K卡、魔术卡),而无需支付授权费用。这注定了 M1卡的使用成本低,且更容易推广。

中国及多数国家专利保护期为20年,MIFARE DESFire 系列卡由于多次技术迭代,其专利到期大约于 2026–2040 年。或许在那之后它们会更快的替代 MIFARE Classic。

M1卡片数据

包含关系:卡片/Card > 扇区/Sector > 区块/Block > 字节/Byte


卡型容量

Classic 1K卡:

扇区:每张卡含 0-15 共16扇区

区块:每扇区含 0-3 共4个区块

字节:每区块含 16 Bytes

Classic 4K卡:

扇区:每张卡含 0-39 共40扇区

区块:前32个扇区含 0-3 共4个区块,后8个扇区包含区块 0-15 共16个区块

字节:每区块含 16 Bytes

Classic Mini卡:

扇区:每张卡含 0-4 共5扇区

区块:每扇区含 0-3 共4个区块

字节:每区块含 16 Bytes

数据结构

该图示例了M1卡的0、1扇区,0扇区未加密(空密钥),1扇区使用相同的A/B密钥加密,且都未存储数据

如图所示,第 0 行 0扇区 0区块 存储 M1卡基础数据,该块不会被加密,出厂写死不可修改

第 0 行里,圈中的基础数据从前到后依次为:

  • UID 卡号:卡片唯一标识符,4字节卡号有约42亿种组合,基本不会发生偶然重合。
  • BCC 校验码:BCC = UID0^UID1^UID2
  • SAK 卡类型:声明卡片类型,如此处 1K卡值为 08,更多例值见后文
  • ATQA 应答:告知卡片 UID 长度和遵循何种防冲突机制,更多信息见后文
  • ATS 厂商码:记录生产厂商和生产日期。该数据并未标准化,有些卡可能包含自定义数据

所有扇区的最后一个区块称为控制块,由 A密钥-控制位-B密钥 三部分组成:

  • Key A 密钥A:6 字节的密钥,全是FF即为空密钥
  • Access Bits 控制位:规定A/B密钥各自在指定数据部分的读写权限
  • Key B 密钥B:6 字节的密钥,全是FF即为空密钥

除 0扇区 0区块和每扇区控制块以外的所有区块均为数据存储区块。

数据转储

MIFARE 卡的 “数据转储(dump)” 就是将卡片内完整数据导出,以文件形式保存于外部设备中。可用于卡片 备份、分析、修改、克隆 等各种需求。

json - 明文带指示数据

bin - 16进制

eml - 纯明文(兼容性好)

上图为常见转储文件格式:

  • .json / .nfc(Proxmark / Flipper Zero 等 )
  • .bin / .mfd / .dump(Proxmark3 / libnfc / mfoc)
  • .eml(Proxmark3 模拟内存,不含任何不必要数据的文本形式)

未知数据:若部分扇区的数据或密钥未知或不能读取,转储文件内将用??占位

数据含义


SAK 卡片类型

SAK值用于声明卡片类型,它不只在 MIFARE 卡中被使用。

以下为常见值,一个 SAK 值可能会对应多种卡型,需结合其它信息进一步确认

  • 00 - MIFARE Ultralight , NTAG
  • 08 - MIFARE Classic 1K
  • 09 - MIFARE Mini
  • 18 - MIFARE Classic 4K
  • 20 - MIFARE Plus (Crypto1) , MIFARE DESFire , 其它CPU卡
  • 28 - MIFARE Plus (EV1/EV2) , CPU卡模拟 MIFARE Classic 1K卡
  • 38 - MIFARE Plus (AES) , MIFARE Classic 4K + DESFire 支持
  • 40 - P2P

ATQA 应答

该数据作用是告知卡片UID长度和遵循何种防冲突机制

0x0400 是标准的 MIFARE Classic 卡的应答,显示为 00 04 或 04 00(取决于字节序),意为 4 字节 UID + 标准防冲突协议支持。

  • 若卡片支持 7 字节 UID(部分 MIFARE Plus 卡),ATQA 可能为 0200 或 4200
  • 协议扩展:支持 ISO 14443-4 的卡片(如 MIFARE DESFire)可能返回 0344
  • MIFARE Ultralight 系列、NTAG 系列,均为 0x0044( 4400 )

Access Bits 控制位

控制位包含4字节。前三个字节是真实的控制位,第四个是备用控制位一般用不上

如何配置控制位和使用密钥是管理员和读卡系统的事,和用户关系不大。以下是两个最常见的控制位,其它信息不细讲。如果遇到其它的控制位,可使用 MCT 或其它在线工具进行解析/计算。

  • FF 07 80 69 是默认控制位,表示:

    数据块:A密钥 / B密钥 均可读可写

    控制块:A密钥:A密钥禁读可写,控制位可读写,B密钥可读写(自身不可读,其它操作允许)

    控制块:B密钥:A密钥禁读禁写,控制位禁读禁写,B密钥禁读禁写(完全禁止)

  • 08 77 8F 00 是除默认外最常见的控制位,表示:

    数据块:A密钥可读可减值 / B密钥可读可写

    控制块:A密钥:A密钥禁读禁写,控制位可读禁写,B密钥禁读禁写(仅可读控制位)

    控制块:B密钥:A密钥禁读可写,控制位可读可写,B密钥禁读可写(可读写控制位,可写密钥)

参考

维基百科

MIFARE

B站UP-宅人改造家 的系列视频教程,包含详细的信息和经验。

手把手玩转IC卡 - 宅人改造家的视频教程(技术研究笔记)

恩智浦 Mifare Classic 官网与文档

MIFARE Classic EV1 1K - 4K

Mifare Classic Docs En:

www.nxp.com

Mifare Classic 中文文档:

www.nxp.com