在线商店

NDEF检测和访问- MIFARE经典& MIFARE Plus标签

打印友好,PDF和电子邮件
[printfriendly电流= '是的']
打印友好,PDF和电子邮件

NDEF检测和访问

本章描述了如何在MIFARE Classic和MIFARE Plus标签中存储和访问NDEF数据(例如NDEF Message)。

这个应用程序注释在MIFARE Classic和MIFARE Plus中管理的NDEF消息存储在一个NDEF message TLV中,称为强制NDEF message TLV或第一个NDEF message TLV。强制的NDEF消息TLV也是由NDEF检测过程发现的NDEF消息TLV第一节。4.1).

NDEF管理

为了检测和访问MIFARE Classic和MIFARE Plus标签内的NDEF数据(例如NDEF Message), MAD将被使用2.4节),并与近距离通讯界别的总务委员会合作。

MAD的应用程序标识符(AID)被称为NFC AID,用于标识具有NDEF数据的扇区。具有NDEF数据的扇区称为NFC扇区。NFC AID的两个字段设置如下:

函数聚类代码等于E1h,用NDEF数据识别扇区的聚类,且

应用程序代码等于03h,用于标识此应用程序注释相关的NFC扇区。

一个或多个NFC扇区可以出现在一个MIFARE经典1k/4k标签中。

如果有多个NFC扇区,则NFC扇区将是连续的。在MIFARE Classic 4k或MIFARE Plus 4kbytes的情况下,它将被认为是连续的NFC扇区序列,其中包括MAD扇区16。

相邻NFC扇区的例子如下:

  • NFC扇区从扇区2到扇区3,以及
  • NFC扇区从扇区1到扇区39。在这种情况下,MAD扇区16被包含,但仍然按照上面的定义,NFC扇区被认为是连续的。

非连续NFC扇区的一个例子是:

  • 没有扇区4的扇区3和扇区5是NFC扇区。在本例中,扇区4不是NFC扇区,因此其余两个NFC扇区不是相邻的。

NDEF数据将从最小扇区号到最大扇区号的NFC扇区开始写入。

通用字节(GPB,参见2.1节而且2.3节)提供了用于将NDEF数据存储到MIFARE Classic和MIFARE Plus的映射模型的版本号的信息第一节。1.1)和NFC扇区的写权限。GPB将按照表格1

表格1.一般目的字节结构

msb比特7 位6 位5 位4 位3 位2 位1 lsb位0
配套版本号 准入条件
主要版本号 次要版本号 读访问条件 写访问条件

GPB的4个最低有效位(lsb)表示NFC扇区的访问条件:

  • Bit 2-3表示读访问条件:
    • 00b表示授予不带任何安全性的读访问权限。
    • 值11b表示不授予读访问权。
    • 任何其他值表示授予读访问权(即私有)需要供应商安全操作。
  • 0-1表示写访问条件:
    • 00b表示授予不带任何安全性的写访问。
    • 值11b表示不授予写访问权。
    • 任何其他值表示需要供应商安全操作来授予写访问,即私有访问。

最有效的4位(msb)表示映射版本号(参见第一节。1.1):

  • Bit 7-6 (mapping version number字段的2msb)表示主版本号。
  • 第5-4位(映射版本号字段的2lsb)表示副版本号。

在MIFARE Classic和MIFARE Plus标签中,包含强制NDEF消息TLV的NFC扇区将被设置为读取访问条件等于00h,写入访问条件等于00b或11b(参见第一节。3.).

实现此应用笔记的阅读器设备将管理MIFARE Classic和MIFARE Plus标签,主版本号等于01b,次版本号等于00b,即映射版本1.0。

版本治疗

NFC扇区的GPB包含MIFARE Classic 1k/4k或MIFARE Plus标签应用映射模型的映射版本号。配套关系的版本号用两个数字表示:主版本号和次版本号。

MIFARE Classic或MIFARE Plus标签(称为MSVNo)的不同主版本号和次版本号的处理,以及在Reader设备中实现的版本号(称为NFCDevVNo)的处理,在的4个案例中进行了解释表格12

表格12.处理映射文档版本数字

没有 版本号 处理
1 Major NFCDevVNo等于Major MSVNo,并且

minor NFCDevVNo大于等于minor MSVNo

阅读器设备将访问MIFARE Classic或MIFARE Plus标记,并将应用映射文档的所有功能用于此MIFARE Classic或MIFARE Plus标记。
2 如果major NFCDevVNo等于major MSVNo,并且

minor NFCDevVNo低于minor MSVNo

可能不是MIFARE Classic或MIFARE Plus标签的所有功能都可以访问。阅读器设备将使用其所有功能,并将访问这个MIFARE Classic或MIFARE Plus标签。

没有 版本号 处理
3. 如果major NFCDevVNo小于major MSVNo 不兼容的数据格式。Reader设备无法理解MIFARE Classic或MIFARE Plus标签数据。阅读器设备将拒绝此MIFARE Classic或MIFARE Plus标记。
4 如果major NFCDevVNo大于major MSVNo Reader设备除了其主版本外,还可能实现对该规范以前版本的支持。如果阅读器设备有以前版本的支持,它将访问MIFARE Classic或MIFARE Plus标记。相反,如果阅读器设备没有以前版本的支持,它将拒绝MIFARE Classic或MIFARE Plus标记。

NDEF存储

NDEF消息的数据格式在[NDEF]中定义。NDEF消息将存储在NDEF消息TLV的值字段中(参见2.6.1节)使用一个或多个NFC扇区。NFC扇区由NFC AID在MAD扇区中确定。

生命周期

MIFARE Classic或MIFARE Plus标签的NFC扇区可能处于以下状态:初始化、读写或只读。近场通信扇区在特定时刻只会处于一种状态。这种状态将通过NFC板块的内容体现出来。国家不是与单个NFC部门相关,而是与所有NFC部门相关。这些状态将在以下部分中描述。

如果MIFARE Classic或MIFARE Plus标签只包含NFC扇区,则NFC扇区的状态称为MIFARE Classic或MIFARE Plus标签的状态。在下面的描述中,MIFARE Classic或MIFARE Plus标签的状态与(即等于)NFC扇区的状态相混淆。

每个状态都有其称为转换或状态更改的有效操作。状态转换只与能够写入MIFARE Classic或MIFARE Plus标记的读取器设备相关。

通过比较强制NDEF Message TLV开始的NFC扇区的GPB和强制NDEF Message TLV的字段来识别不同的状态。中描述的扇区预告片的访问位部分2.5,在本应用笔记中不用于识别具体状态。

如果根据本应用说明,MIFARE Classic或MIFARE Plus标签不在有效状态,则所有NFC扇区中MIFARE Classic或MIFARE Plus标签的NDEF数据将被忽略。原因可能是:

  • 非连续NFC扇区。
  • 标签内没有NFC扇区,即MAD使用NFC AID指示没有扇区。
  • 总体TLV块长度与数据区域的实际长度不匹配。
  • 无效的TLV块。

初始化状态

MIFARE Classic或MIFARE Plus标签将在以下情况下被检测到处于初始化状态:

        • 中所述的GPB设置第一节。1,特别是位0-1等于00b,位2-3等于00b(授予读写访问权),
        • NFC扇区包含一个NDEF Message TLV(强制的),和
        • 强制NDEF消息TLV的长度字段等于00h。

在初始化状态下,NFC设备可以修改强制NDEF消息TLV的内容,在TLV中写入NDEF消息。第10章附件D附件E0,章而且第12章附件F显示两个例子分别MIFARE经典1k, MIFARE Plus与2千字节,和MIFARE经典4k或MIFARE Plus与4千字节都在初始化状态。

读/写状态

MIFARE Classic或MIFARE Plus标签在以下情况下将被检测到处于READ/WRITE状态:

        • 中所述的GPB设置第一节。1,特别是位0-1等于00b,位2-3等于00b(授予读写访问权),
        • 强制NDEF消息TLV存在于NFC扇区中,并且
        • 强制NDEF消息TLV的length字段不等于0。

读/写状态将通过初始化状态到达。在这种状态下,NFC设备可以修改强制NDEF消息TLV的内容,在其中写入NDEF消息。

只读状态

MIFARE Classic或MIFARE Plus标签将在以下情况下被检测到处于只读状态:

        • 中所述的GPB设置第一节。1,特别是位0-1等于11b,位2-3等于00b(不授予写访问权,只授予读访问权),
        • 强制NDEF消息TLV存在于NFC扇区中,并且
        • 强制NDEF消息TLV的长度字段将不同于零。

在READ-ONLY状态下,所有的NFC扇区都具有只读访问权限。MIFARE Classic或MIFARE Plus标记在剩余的生命周期中保持只读状态。

命令顺序说明

在本节中,描述了几个管理NDEF数据的过程,例如NFC扇区内的强制NDEF Message TLV。还详细说明了MIFARE Classic或MIFARE Plus标记状态之间的不同状态变化或转换。

在读写过程中涉及的每个扇区之前,将使用Authentication操作对其进行身份验证。公钥A将根据扇区类型(即MAD扇区或NFC扇区)选择。

NDEF检测过程

NDEF检测过程将用于检测MIFARE Classic或MIFARE Plus标签内的强制NDEF消息(参见[NDEF])。

NDEF检测程序基于以下检查:

        • MAD部门,
        • NFC部门,以及
        • 包含NDEF消息的强制NDEF Message TLV。

如前所述,由NDEF检测过程发现的NDEF消息TLV被称为强制NDEF消息TLV或第一个NDEF消息TLV。当MIFARE Classic或MIFARE Plus处于READ/WRITE或READ- only状态时,此NDEF Message TLV包含一个NDEF Message。在初始化状态下,NDEF消息TLV为空。

(1)在Authentication或Read操作失败后,MIFARE Classic或MIFARE Plus不再响应任何命令,需要重新激活并选择to 继续NDEF检测程序。

为了执行NDEF检测过程,阅读器设备(或NFC设备)将执行以下操作(参见图6)在MIFARE Classic或MIFARE Plus上:

  1. 检查是否存在MAD扇区。
  2. 验证和读取MAD扇区:使用Read操作,MAD1为扇区0,MAD2为扇区0和16。
  1. 如果在MAD中发现一个或多个与一个或多个相邻扇区相关的NFC AID相等的AID,则转到第4项。否则,在MIFARE Classic或MIFARE Plus标签中没有检测到NFC AID,并且MIFARE Classic或MIFARE Plus标签不处于有效状态。
  2. 对于每个NFC扇区,从最小的扇区号到最高的扇区号依次执行如下操作:
    1. 使用NFC扇区的公钥A验证和读取NFC扇区的扇区预告(参见表格6).
    2. 如果认证和读操作都成功,请检查NFC扇区的扇区尾。否则,如果认证或读取操作失败,则会发现一个私有的NFC扇区(参见下面的NFC扇区描述),然后转到第f项。
    3. 如果根据上述规则,GPB的第4-7位描述的版本号是正确的,则转到第d项。否则,由于MIFARE Classic或MIFARE Plus标签状态不合法,请停止此过程。
    4. 如果GPB的读访问条件字段(bit 2-3)值为00b,写访问条件字段(bit 0-1)值为00b或11b,则使用中指定的read操作读取相对NFC扇区的数据块5.1.3节,查找NDEF Message tlv,转到e项。否则,如果GPB的读访问字段值与00h不同,或者GPB的写访问条件字段(位0-1)值与00b和11b不同,则发现一个专有的NFC扇区(参见下面NFC扇区的描述),则转到f项。
    5. 如果找到一个NDEF Message TLV,这是(即第一个)强制NDEF Message TLV,然后转到第5项。否则,如果没有找到NDEF Message TLV,请转到f项。
    6. 如果可用,检查下一个NFC扇区并转到a项。否则,如果没有更多的NFC扇区可用,则停止该过程,因为没有找到NDEF Message TLV。MIFARE Classic或MIFARE Plus标记不处于有效状态。
  3. 如果强制NDEF消息TLV的长度字段不为零,则在MIFARE Classic或MIFARE Plus标签中检测到NDEF消息(参见[NDEF]),并且阅读器设备可以使用NDEF读过程或NDEF写过程。如果length字段等于0,则MIFARE Classic或MIFARE Plus标签中没有检测到NDEF消息,阅读器设备可以使用NDEF写入过程(标签可能处于初始化状态)。

NDEF检测过程与有效的NDEF消息无关。它从NDEF Message TLV的length字段中读取NDEF Message的长度,但不解析NDEF Message。

阅读器设备将忽略并跳过专有的NFC扇区。私有NFC扇区定义为NFC扇区,即NFC扇区不能使用公钥A进行身份验证,或者GPB的读访问字段值与00b不同,或者GPB的写访问条件字段(位0-1)值与00b和11b不同。

每次鉴权操作、读操作或写操作失败时,MIFARE Classic或MIFARE Plus将保持沉默,不再响应任何操作

命令。在这种情况下,要继续NDEF检测程序,需要重新激活和选择MIFARE Classic或MIFARE Plus。

NDEF读过程

NDEF读取过程用于Reader设备从强制NDEF Message TLV中读取NDEF Message。在读取NDEF消息之前,NDEF检测程序将被执行,MIFARE Classic或MIFARE Plus标记将处于有效状态。

使用NDEF读取过程,阅读器设备将使用一个或多个读取操作从强制NDEF Message TLV中读取整个NDEF Message。要读取的NDEF消息的长度由强制NDEF消息TLV的length字段提供。

如果强制NDEF消息TLV存储在一个或多个NFC扇区中,阅读器设备将能够使用NFC扇区的公钥A对所有这些扇区进行身份验证表6).如果身份验证过程失败,则MIFARE Classic或MIFARE Plus标记不处于有效状态。

NDEF写入过程

NDEF写入过程将被阅读器设备用于写入强制NDEF消息TLV,其中包含MIFARE Classic或MIFARE Plus标签中的NDEF消息。

NDEF写过程使用读和写操作(参见5.1.3节而且5.1.4节).

要写入NDEF消息,MIFARE Classic或MIFARE Plus标签将处于初始化或读/写状态,即强制NDEF消息TLV将在MIFARE Classic或MIFARE Plus标签中已经存在。

为了执行NDEF写过程,阅读器设备将对MIFARE Classic或MIFARE Plus标签执行以下操作:

  1. 使用NDEF检测过程(参见1.4.1节)来查找强制的NDEF消息TLV。如果发现强制NDEF Message TLV,请转到第2项。否则,如果没有找到NDEF Message TLV,则结束此过程。
  2. 如果NDEF Message TLV的可用内存大小等于或大于NDEF Message大小,下面的操作将使用一个或多个Write操作按以下顺序执行:
    1. 强制NDEF消息TLV的长度字段将是一个字节长,其值将被设置为00h,
    2. 新的NDEF消息将被写入强制NDEF消息TLV的值字段中,并且
    1. 强制NDEF消息TLV的长度字段将随着NDEF消息的长度而更新。

否则,如果MIFARE Classic或MIFARE Plus标记中没有足够的可用内存空间,则NDEF消息将不会写入MIFARE Classic或MIFARE Plus标记中。

  1. 如果第2项成功完成,阅读器设备将使用写操作在NDEF消息TLV之后的下一个字节写入终止器TLV。当强制NDEF消息TLV结束于最后一个可用NFC扇区(即具有最大扇区号的NFC扇区)的最后一个字节时,终止符TLV将不会被写入。

关于操作项目二。b,写入找到的NDEF Message TLV的值字段将为下一个操作项2所需的长度字段留下1或3个字节。c用于存储NDEF消息的长度。

NDEF写过程不会改变强制NDEF消息TLV的起始位置。

在MIFARE Classic 4k和MIFARE Plus使用4kbytes的情况下,NDEF写过程可以跨相邻的NFC扇区(除了MAD扇区16)写NDEF消息TLV。

强制NDEF消息TLV的可用内存大小是从强制NDEF消息TLV的位置计算出来的,为以下数的和:

  • 包含强制NDEF消息TLV的NFC扇区的空闲内存空间。空闲内存空间从强制NFC Message TLV开始,到NFC扇区结束
  • 包含强制NDEF Message TLV的扇区后面的NFC扇区的整个内存空间。以下NFC扇区的大小可以是48字节(3个块)或240字节(15个块)。以下可用NFC扇区的信息将从MAD扇区检索。

对于Write操作,当NDEF Message TLV开始于一个块的中间时,首先需要读取未完全更新的块。

状态改变

介绍MIFARE Classic和MIFARE Plus标签的状态变化情况。无花果8显示状态和状态之间的状态变化(也称为转换)。在这个应用程序注释中,唯一指定的转换是从initialized到READ/WRITE。

阅读器设备可以在初始化状态、读/写状态甚至只读状态下发出MIFARE Classic或MIFARE Plus标签。

的过渡初始化读/写

要执行从initialized到READ/WRITE的转换,Reader设备将执行以下操作:一个非空的NDEF Message TLV(长度字段不为零)将使用NDEF WRITE过程替换之前的空NDEF Message TLV。NDEF Message TLV是使用NDEF检测过程检测到的强制性TLV。

空的NDEF消息可以用来替换非空的NDEF消息。

Baidu
map