Skip to content

M1卡基础知识

基本结构

M1卡(Mifare Classic 1K)具有以下结构:

  • 总共16个扇区(0-15号扇区)
  • 每个扇区4个块(0-3号块)
  • 每个块16字节
  • 每个扇区的第4块(3号块)为控制块,存储该扇区的密钥和访问控制位

控制块结构(每扇区第4块)

+-------------+------------------+-------------+
| Key A(6字节) | 访问控制位(4字节) | Key B(6字节) |
+-------------+------------------+-------------+

数据容量分析

每个扇区的数据容量:

  1. 每个扇区有4个块(Block)
  2. 每个块16字节
  3. 最后一个块(第4块,即3号块)是控制块,不能写入数据
  4. 所以每个扇区实际可写入数据的块数是3个
  5. 因此每个扇区可写入数据容量 = 3块 × 16字节 = 48字节

特殊情况:

  1. 扇区0的第一个块(0号块)存储厂商数据,不能写入
  2. 所以扇区0实际只有2个块可用,即32字节

总可写入容量:

  • 扇区0:32字节
  • 其他15个扇区:15 × 48 = 720字节
  • 总计:752字节

密钥系统

  1. 每个扇区都有独立的Key A和Key B
  2. 这些密钥存储在每个扇区的第4块(控制块)
  3. 理论上可以有16组不同的密钥对

安全风险

  1. 防复制机制

    • M1卡没有硬件级别的防复制机制
    • 如果密钥泄露,卡片可以被完全复制
    • 复制后的卡片与原卡功能完全相同
  2. 密钥泄露风险

    • Key A泄露:可以读取卡片数据
    • Key B泄露:可以读取和写入卡片数据
    • 两个密钥都泄露:卡片可以被完全复制
  3. 已知安全漏洞

    • 2008年发现了M1卡的加密算法漏洞
    • 攻击者可以通过监听卡片与读卡器的通信来破解密钥
    • 这个漏洞使得M1卡的安全性大大降低

UID(唯一标识符)

  1. 基本特性

    • 每张M1卡出厂时都有一个唯一的7字节UID
    • UID存储在扇区0的块0中
    • UID是只读的,不能被修改
  2. UID复制风险

    • 存在可以修改UID的特殊卡片("UID可写卡")
    • 这些特殊卡片可以完全模拟原卡的UID
    • 市场上存在可以复制UID的设备
    • 因此不能仅依赖UID来防止卡片复制

安全建议

  1. 不要修改扇区0的密钥
  2. 禁止在代码中硬编码密钥值
  3. 不要仅依赖UID来验证卡片合法性
  4. 建议结合其他安全措施(如密钥验证、数据加密等)

其他卡片参数对比

卡片类型ID特性安全性存储容量价格(¥)主要应用场景
ID卡10字节固定极易复制无密钥0.25低端门禁、简单考勤系统
M1标准卡7字节固定,不可修改可复制可破解1K0.3学校饭卡、小区门禁、员工考勤
M1 4K卡7字节固定,不可修改可复制可破解4K0.5校园一卡通、大型企业门禁、停车场管理
复旦FM系列7字节固定,不可修改不可复制不可破解8K-16K0.4金融支付、校园一卡通、政府门禁、城市公交卡
CPU卡7字节固定,不可修改不可复制不可破解8K-256K2银行卡、社保卡、医保卡、电子钱包
DESFire系列7字节固定,不可修改不可复制不可破解2K-8K7地铁公交卡、高端门禁、电子票务、智能交通

说明

  1. 频率信息:大部分RFID卡工作频率为13.56MHz(高频),仅ID卡使用125kHz(低频)
  2. 密钥长度:M1系列为6字节,复旦FM系列和DESFire系列为16字节,CPU卡为8-32字节,ID卡无密钥
  3. 非主流卡片:CUID(可写UID卡)、FUID(一次性UID卡)等主要用于测试和特殊场景,不建议用于正式系统
  4. 增强安全性:如需更高安全性,推荐选择CPU卡、复旦FM系列或DESFire系列,而非M1卡

物联网设备通信协议文档