【问题标题】:Detect a real Mifare classic card from a simulated one从模拟卡中检测出真正的 Mifare 经典卡
【发布时间】:2015-07-04 16:59:17
【问题描述】:

您可能知道,Mifare Classic 卡大约在 7 年前被黑。因此,现在任何人都可以破解 Mifare 卡以提取其身份验证密钥并读取其内容。之后,他/她可以在其手机上模拟该卡,例如,并在其手机上使用手机而不是使用 NFC 技术的卡。我想知道有没有办法检测到这张模拟卡? (任何!)例如,移动设备和读卡器与卡和读卡器之间的传输协议之间的区别。 我知道,在读卡器和读卡器的通信中,命令arw以基于T = CL协议的APDU形式传输。但我对 NFC 通信一无所知。

【问题讨论】:

  • 我认为可能有两件事可行。首次响应时间,实际卡在处理和响应请求方面可能较慢。极端情况的第二次处理,如果规范不是 100% 清楚(并且规范很少是),那么实现之间的解释可能会有一些细微的变化。因此,在某些极少数情况下,实际卡可能会给出与模拟不同的响应。
  • 还有(至少在暗通道上可用)空白卡,可能是完全写入的(包括序列号),我认为它与手机模拟的一样值得检测。您正在尝试的是,通过评估额外的侧信道信息来挽救损坏的密码学。虽然这在某种程度上是可能的,但我不希望安全性有显着提高(如果有的话)。抱歉,唯一的选择是使用更好的基础密码学。

标签: nfc smartcard mifare smartcard-reader contactless-smartcard


【解决方案1】:

大多数卡仿真技术(proxmark、NFC 电话、可更改 UID 的卡等)都不能提供完美的仿真器。

首先,有明显的区别:某些收发器无法模拟所有 UID、ATQA 或 SAK(如其他答案中所述);但是在处理错误或稍微超出规范时,它们也会出现许多协议问题。

我在开发收发器驱动程序和使用各种卡进行测试时注意到的一些事情:

  • 一些克隆卡无法处理power up -> WUPA -> SEL(完整的选择命令,带有CRC)序列正确,它们假设WUPA之后的第一个请求是CL1(短anticollision 命令),因此它们在使用正版卡时会发生碰撞,

  • 如果你使用WUPA -> WUPA,一些克隆卡仍然会回复SEL,但它们不应该w.r.t。 ISO14443-3 状态机(它们应该停留在IDLE 状态),

  • 错误处理有时会中断(尤其是当 Mifare 身份验证失败时),

  • 当然,UID 可更改的“中国”卡实际上响应解锁“魔法”命令,而正版卡没有,

  • 最后,NXP 在其卡片中引入了 Originality Check(他们这样称呼它),它被营销为一种检查卡片是否真实的方法(我从未使用过,文档是不公开的,所以我不能评论这些说法),恩智浦保证给定的 UID 不会发布两次。

通过所有这些,您可能可以检测并拒绝所有当前的克隆和模拟器实现,但您不能保证没有人会创造出完美的。

如果您真的依赖不可克隆的卡,那么 Mifare Classic 可能不是相关技术,因为所有“安全”功能都经过逆向工程。今天,Mifare Classic 应该被视为一种与明文等效的可复制内存。

【讨论】:

    【解决方案2】:

    您可以从 ISO 14443 检查 SAK 值(选择确认,类型 A)。
    值 0x28 和 0x38 表示 Mifare 模拟。
    恩智浦在此处提供的其他值:AN10833
    这里还有一张桌子:ISO14443A

    【讨论】:

    • 黑客不能修改仿真卡中的SAK值吗?
    • 是的,如果您有可编程卡,这是可能的。我认为您必须在应用程序级别添加安全措施,并选择具有现代协议的卡,例如 Cipurse。
    • 模拟卡我没控制!
    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多