Mifare DESFire EV1 4k 制造商块

Mifare DESFire EV1 4k Manufacturer Block

我最近在使用 Mifare Classic 1k 智能卡。我使用制造商块(扇区 0,块 0)来识别卡,因为 Mifare Classic 卡的 UID 并不是真正唯一的。

我的应用场景是,我想从智能卡中读取一个标识符并将其与数据库进行比较,其中每个用户都有一个分配给他们的智能卡。因此用户可以使用他们的卡登录。

现在我必须使用新的 Mifare DESFire EV1 4k 卡。这些卡是否也有类似制造商块或只有 7 字节 UID 的东西?使用此 UID 识别卡是否安全?

您可以预期 正版 MIFARE DESFire EV1 卡的 7 字节 UID 是唯一的。但请注意,DESFire EV1 卡可以配置为使用随机的 4 字节 UID。在这种情况下,UID 是为每次 RF 激活随机生成的。此类卡的7字节UID只能在认证后使用GetCardUID命令(命令码0x51)获取。

但是,您应该知道(特别是考虑您的用例)UID 很容易被克隆并且不适合验证卡(或其用户)。另见

如果您想要与 MIFARE Classic 的制造商块相媲美的东西(即显示有关产品类型和生产批次的信息的东西),MIFARE DESFire 卡有一个 GetVersion 命令(命令代码 0x60 ).

最后,请注意,MIFARE Classic 卡的制造商块并不能真正提供比 UID 本身更多的唯一性。这样做的原因是制造商块的前 4 个字节是 UID 本身。下一个字节是 UID 的校验和(因此它的值对于具有相同 UID 的卡是相同的)。接下来的 3 个字节是 SAK 和 ATQA 值,对于所有(大多数?)MIFARE Classic 1K 卡,它们通常是“88”和“0400”。剩余字节标识芯片类型(因此所有相同类型的卡都相同)和生产批次(因此至少每批次相同)。