首页 > 解决方案 > MIFARE 只读和写保护块同时?

问题描述

哪些 MIFARE 卡支持单个块,该块可以编程为需要密码才能写入,但每个人都可以读取其数据?并且这种标准适用于所有平台,特别是 iOS。它可以使用其 NFC 芯片在此类卡上执行上述两项操作吗?

标签: iosnfcrfidmifarecontactless-smartcard

解决方案


MIFARE 产品系列1中有相当多的产品允许使用身份验证密钥/密码对信息进行写保护(同时使该信息可自由读取):

  • MIFARE Ultralight EV1:32位明文密码验证,密码可用作写密码(自由读取,“认证”写入)或读/写密码(仅“认证”读/写)。不能为单个块设置密码,只能为从特定偏移量开始的所有块设置一个密码。请注意,许多 NXP 的 NTAG 产品也具有这些功能。
  • MIFARE Ultralight C:与上述功能类似,但使用 2-key-TDES 的身份验证机制更强。
  • MIFARE Classic:每个扇区可以有单独的键。你总是需要钥匙来读写。
  • MIFARE DESFire EV1:不是按块组织,而是按文件组织。每个文件都可以设置多个用于读保护和/或写保护的密钥。因此,您可以拥有一个可自由读取但需要密钥才能写入的文件。

您的第二个要求“在所有平台上都符合这种标准,特别是 iOS ”,回答起来有点复杂:首先,在 iOS 中无法写入 NFC 标签(除非越狱?)因此,我会解释即:哪些标签支持写保护并且可以用 iOS 设备读取?

iOS 设备只能读取已经包含 NDEF 消息的 NFC 论坛标签。此外,由于 NFC 论坛标签规范(还没有?)定义访问 NDEF 数据的身份验证方式,因此所有数据都需要可自由读取。

因此,以上所有内容,可能除了 MIFARE Classic 之外,都可以使用。您将需要格式化标签以包含 NDEF 消息。

例如,您可以使用 Ultralight C/EV1 标签,在其上存储 NDEF 消息,然后为存储 NDEF 数据的区域(即所有页面 >= 3)设置写保护。但是,只为特定块添加写保护是行不通的。您可以制作 NDEF 消息,使写保护部分位于 Ultrlaight 标签的块边界处的 NDEF 消息的末尾。然后,您可以仅为该特定块(以及所有更高但未使用的块)添加写保护。不幸的是,这为对 NDEF 消息的大小字段的潜在操作打开了大门(从数据中删除该写保护块)。因此,从安全角度来看,对 NDEF 消息进行部分写保护可能不是一个好主意。

与上述类似,您也可以使用 DESFire EV1。当用作 NFC 论坛标签时,NDEF 消息存储在单个文件中。因此,您可以使用身份验证密钥限制对该文件的写入。

由于 iOS 无法写入标签,您可能会使用另一个平台来写入标签的更新。例如,Android 能够向上述任何标签发送身份验证所需的低级命令。同样,许多基于 PC 的阅读器都支持这一点(尽管 DESFire 通常在那里有更好的支持)。


1 ) 请注意,还有其他产品(甚至来自其他制造商)也提供类似的功能。


推荐阅读