Appearance
M1卡基础知识
基本结构
M1卡(Mifare Classic 1K)具有以下结构:
- 总共16个扇区(0-15号扇区)
- 每个扇区4个块(0-3号块)
- 每个块16字节
- 每个扇区的第4块(3号块)为控制块,存储该扇区的密钥和访问控制位
控制块结构(每扇区第4块)
+-------------+------------------+-------------+
| Key A(6字节) | 访问控制位(4字节) | Key B(6字节) |
+-------------+------------------+-------------+数据容量分析
每个扇区的数据容量:
- 每个扇区有4个块(Block)
- 每个块16字节
- 最后一个块(第4块,即3号块)是控制块,不能写入数据
- 所以每个扇区实际可写入数据的块数是3个
- 因此每个扇区可写入数据容量 = 3块 × 16字节 = 48字节
特殊情况:
- 扇区0的第一个块(0号块)存储厂商数据,不能写入
- 所以扇区0实际只有2个块可用,即32字节
总可写入容量:
- 扇区0:32字节
- 其他15个扇区:15 × 48 = 720字节
- 总计:752字节
密钥系统
- 每个扇区都有独立的Key A和Key B
- 这些密钥存储在每个扇区的第4块(控制块)
- 理论上可以有16组不同的密钥对
安全风险
防复制机制
- M1卡没有硬件级别的防复制机制
- 如果密钥泄露,卡片可以被完全复制
- 复制后的卡片与原卡功能完全相同
密钥泄露风险
- Key A泄露:可以读取卡片数据
- Key B泄露:可以读取和写入卡片数据
- 两个密钥都泄露:卡片可以被完全复制
已知安全漏洞
- 2008年发现了M1卡的加密算法漏洞
- 攻击者可以通过监听卡片与读卡器的通信来破解密钥
- 这个漏洞使得M1卡的安全性大大降低
UID(唯一标识符)
基本特性
- 每张M1卡出厂时都有一个唯一的7字节UID
- UID存储在扇区0的块0中
- UID是只读的,不能被修改
UID复制风险
- 存在可以修改UID的特殊卡片("UID可写卡")
- 这些特殊卡片可以完全模拟原卡的UID
- 市场上存在可以复制UID的设备
- 因此不能仅依赖UID来防止卡片复制
安全建议
- 不要修改扇区0的密钥
- 禁止在代码中硬编码密钥值
- 不要仅依赖UID来验证卡片合法性
- 建议结合其他安全措施(如密钥验证、数据加密等)
其他卡片参数对比
| 卡片类型 | ID特性 | 安全性 | 存储容量 | 价格(¥) | 主要应用场景 |
|---|---|---|---|---|---|
| ID卡 | 10字节固定 | 极易复制无密钥 | 无 | 0.25 | 低端门禁、简单考勤系统 |
| M1标准卡 | 7字节固定,不可修改 | 可复制可破解 | 1K | 0.3 | 学校饭卡、小区门禁、员工考勤 |
| M1 4K卡 | 7字节固定,不可修改 | 可复制可破解 | 4K | 0.5 | 校园一卡通、大型企业门禁、停车场管理 |
| 复旦FM系列 | 7字节固定,不可修改 | 不可复制不可破解 | 8K-16K | 0.4 | 金融支付、校园一卡通、政府门禁、城市公交卡 |
| CPU卡 | 7字节固定,不可修改 | 不可复制不可破解 | 8K-256K | 2 | 银行卡、社保卡、医保卡、电子钱包 |
| DESFire系列 | 7字节固定,不可修改 | 不可复制不可破解 | 2K-8K | 7 | 地铁公交卡、高端门禁、电子票务、智能交通 |
说明:
- 频率信息:大部分RFID卡工作频率为13.56MHz(高频),仅ID卡使用125kHz(低频)
- 密钥长度:M1系列为6字节,复旦FM系列和DESFire系列为16字节,CPU卡为8-32字节,ID卡无密钥
- 非主流卡片:CUID(可写UID卡)、FUID(一次性UID卡)等主要用于测试和特殊场景,不建议用于正式系统
- 增强安全性:如需更高安全性,推荐选择CPU卡、复旦FM系列或DESFire系列,而非M1卡
