我最近使用的是Mifare Classic 1k智能卡。我使用制造商块(扇区0,块0)来识别卡,因为Mifare Classic卡的UID并不是真正独一无二。
我的应用场景是我想从智能卡读取标识符并将其与数据库进行比较,其中每个用户都分配了一个智能卡。因此,用户可以使用他们的卡登录。
现在我必须使用新的Mifare DESFire EV1 4k卡。这些卡也有像制造商块或只有7字节的UID吗?使用此UID识别卡是否安全?
答案 0 :(得分:2)
您可以预期正版 MIFARE DESFire EV1卡的7字节UID是唯一的。但请注意,DESFire EV1卡可以配置为使用随机的4字节UID。在这种情况下,为每次RF激活随机生成UID。此类卡的7字节UID只能在身份验证后使用GetCardUID
命令(命令代码0x51)获取。
但是,您应该知道(特别是考虑到您的用例)UID可以轻松克隆,并且不适合验证卡(或其用户)。另见
如果您想要与MIFARE Classic的制造商块相比较的东西(即显示有关产品类型和生产批次的信息的东西),MIFARE DESFire卡具有GetVersion
命令(命令代码0x60)。
最后请注意,MIFARE Classic卡的制造商块实际上并没有提供比UID更多的唯一性。原因是制造商块的前4个字节是UID本身。下一个字节是UID上的校验和(因此对于具有相同UID的卡,其值相同)。接下来的3个字节是SAK和ATQA值,它们通常是' 88'和' 0400'适用于所有(大多数?)MIFARE Classic 1K卡。剩下的字节识别芯片类型(因此对于所有相同类型的卡都是相同的)和生产批次(因此至少每批都相同)。