Online Store

Методы сопоставления данных NDEF памяти MIFARE Classic и MIFARE Plus IC

Каталог приложений MIFARE#

Методы сопоставления данных памяти NDEF MIFARE Classic и MIFARE Plus IC используют структуру каталогов приложений MIFARE (MAD).

Каталог приложений MIFARE (MAD) определяет, к какому приложению принадлежит информация, хранящаяся в каждом секторе памяти.

Были указаны два каталога приложений MIFARE:

      1. Каталог приложений MIFARE 1 (MAD1): MAD1 МОЖЕТ использоваться в любом продукте, совместимом с MIFARE Classic. MAD1 расположен в секторе MAD (сектор 00h), В случае, если MAD1 используется на продуктах с объемом памяти более 1 Кбайт, только 1 КБ памяти может использоваться и адресуться MAD1. Поэтому оставшаяся память не используется для хранения NDEF и остается свободной.
      2. Каталог приложений MIFARE 2 (MAD2): MAD1 МОЖЕТ использоваться в любом продукте, совместимом с MIFARE Classic, с объемом памяти более 1 Кбайт. MAD2 неприменим для продуктов с объемом памяти меньше или равным 1 Кбайт. MAD2 расположен в секторах MAD (сектор 00h и 10h)

С каждым приложением MAD связывает уникальный идентификатор приложения (AID). Идентификаторы приложений (AID) хранятся внутри сектора (секторов) MAD 00h.

AID имеет длину два байта и разделен на 2 поля по одному байту каждое:

  1. код кластера функций (1 байт), определяющий кластер, к которому принадлежит приложение, и
  2. код приложения (1 байт), идентифицирующий приложение внутри кластера. Для получения дополнительной информации о MAD1 и MAD2.

Байт общего назначения (GPB) сектора MAD ДОЛЖЕН быть установлен с битом DA, равным 1b (бит DA — это mad-доступный бит GPB).

Все неиспользуемые в настоящее время сектора ДОЛЖНЫ быть защищены от записи секретными ключами, определенными издателем тегов, чтобы предотвратить непреднамеренное переопределение условий доступа и ключей. РЕКОМЕНДУЕТСЯ использовать разные клавиши для всех свободных секторов. Это позволяет в будущем передавать некоторые сектора новым поставщикам услуг без необходимости высвобождения всех свободных секторов.

Доступ к сектору MAD#

Секторы памяти, в которых хранятся MAD1 и MAD2 (см. [MAD]), защищены с помощью ключей A и B. [MAD] По секторам памяти выделяют:

        • MAD1: сектор MAD составляет 00h (сектор 0), и
        • MAD2: секторы MAD — 00h и 10h (сектор 0 и сектор 16).

Любому лицу ДОЛЖНО быть разрешено читать разделы MAD. Это достигается с помощью открытого ключа A, описанного втаблице1(см. также [MAD]).

Таблица 1. Открытый ключ Значение сектора (секторов) MAD

Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5
А0ч А1ч А2ч А3ч А4ч А5ч

Биты доступа для секторов MAD задаются следующим образом:

        • как описано втаблице2, если сектору MAD предоставлен доступ на чтение и запись, или
        • как описано втаблице3, если сектору MAD предоставлен доступ только для чтения (см. также [MF1K, MF4K, MFPLUS]).

В этом контексте термин «предоставленный доступ на чтение и запись» означает, что для секторов MAD, которые ранее были аутентифицированы с помощью секретного ключа B, можно считывать и записывать все блоки секторов, кроме блока секторного прицепа (см.Таблицу2для получения более подробной информации).

Вместоэтоготермин«предоставленныйдоступтолькодля чтения» означает, что для секторов MAD, которые ранее были аутентифицированы с помощью открытого ключа Aиз таблицы1или секретного ключа B, можно считывать только все секторные блоки, кроме блока секторного прицепа (см.Таблицу 5для получения более подробной информации).

С помощью клавиши A всегда можно считывать только блоки сектора MAD. Секторные трейлеры имеют определенную конфигурацию доступа, когда предоставляется доступ на чтение/запись или доступ только для чтения (см.таблицу2итаблицу3).

Секторы MAD ДОЛЖНЫ быть защищены от записи с помощью секретного ключа B (например, определенного издателем тега) или установки тегов MIFARE Classic и MIFARE Plus в качестве доступных только для чтения с использованием битов доступа.

Таблица 2. Настройка битов доступа для сектора MAD с предоставленным доступом на чтение и запись

Настройка битов доступа для сектора 0 MAD1 или MAD2 и для сектора 16 MAD2
Биты доступа Значения Замечания
С10С20С30 100би Блок 0 считывается с помощью клавиши A или B и записывается клавишей B
С11С21С31 100б Блок 1 считывается с помощью клавиши A или клавиши B и записывается клавишей B
С12С22С32 100б Блок 2 считывается с помощью клавиши A или B и записывается клавишей B
С13С23С33 011б Сектор прицепного блока:

  • Ключ A записывается ключом B и никогда не читается,
  • Биты доступа считываются с помощью клавиши A или B и записываются клавишей B,
  • КлючBзаписываетсяключомBиникогданечитается.
i.Рекомендуемоезначениедлябитов доступаC10C20C30сектора0(блок производителя).

Таблица 3. Настройка битов доступа для сектора MAD с предоставлением доступа только для чтения

Настройка битов доступа для сектора 0 MAD1 или MAD2 и для сектора 16 MAD2
Биты доступа Значения Замечания
С10С20С30 010б Блок 0 считывается с помощью клавиши A или клавиши B
С11С21С31 010б Блок 1 считывается с помощью клавиши A или B
С12С22С32 010б Блок 2 считывается с помощью клавиши A или клавиши B
С13С23С33 110б Сектор прицепного блока:

  • Ключ А никогда не пишется и не читается,
  • Биты доступа считываются с помощью клавиши A или B и никогда не записываются,
  • Ключ B никогда не пишется и не читается.
i. Рекомендуемоезначениедлябитов доступаC10C20C30сектора0(блок производителя).

Блоки TLV#

Блок TLV состоит из одного-трех полей:

T(поле тега, или поле T) ДОЛЖНО определять тип блока TLV (см.Таблицу 9) и ДОЛЖНО состоять из одного байта, кодирующего число от 00h до FFh. Значения тегов от 01h, 02h, 04h до FCh и FFh зарезервированы для будущего использования.

L(поле длины или поле L) ДОЛЖНО указывать размер поля значения в байтах. Он имеет два разных формата, состоящих из одного или трех байтов. Считывающее устройство ДОЛЖНО понимать все двухдлинные форматы полей.На рисунке 5показаны две различные по длине полевые структуры. Однако, в зависимости от значения поля тега, поле длины МОЖЕТ отсутствовать.

  • Однобайтовый формат: однобайтовый формат ДОЛЖЕН кодировать длину поля значения между 00h и FEh байтами. Этот байт ДОЛЖЕН интерпретироваться как кардинальный, если значение находится между 00h и FEh. Если он содержит FFh, значение ДОЛЖНО интерпретироваться как флаг, указывающий, что поле длины состоит из более чем одного байта.
  • Формат трех последовательных байтов: Этот формат ДОЛЖЕН кодировать длину поля значения между байтами 00FFh и FFFEh. Предполагается, что первый байт является флагом, равным FFh, указывающим, что длина еще двух байтов ДОЛЖНА интерпретироваться как слово. Это слово ДОЛЖНО толковаться как кардинальное, если значение находится между 00FFh и FFFEh. Значение FFFFh зарезервировано для будущего использования (RFU).

V(поле значения, или поле V) Если поле длины равно 00h или нет поля длины, поля значения НЕ ДОЛЖНО быть, т.е. блок TLV пуст. Если есть поле длины и указывает длину поля значений N больше нуля (N>0), то поле значения SHALL состоит из N последовательных байтов.

Втаблице4перечислены блоки TLV, указанные в этом документе, которые описаны в следующих разделах.

Таблица 4. Определенныеблоки电磁阀

Имя блока TLV Значение поля тега Краткое описание
NULL TLV 00ч Он может быть использован для заполнения областей памяти, и считывающее устройство ДОЛЖНО игнорировать это
Сообщение NDEF TLV 03ч Он содержит сообщение NDEF
Проприетарный TLV ФДХ Пометить конфиденциальную информацию
Терминатор TLV ФЭх Последний блок TLV в области данных

Считывающее устройство ДОЛЖНО записывать блоки TLV в определенном порядке внутри области данных в соответствии с приведенными ниже правилами:

  • Блоки TLV ДОЛЖНЫ быть записаны в порядке, начиная с байта 0 блока 0 сектора NFC (сектора, содержащего данные NDEF) с наименьшим адресом.
  • Блок TLB МОЖЕТ запоминаться в двух или более секторах NFC.
  • При наличии Терминатор TLV является последним блоком TLV в тегах MIFARE Classic и MIFARE Plus.

NULL TLV и Terminator TLV являются единственными блоками TLV длиной 1 байт (например, состоят только из поля Tag, см. Ниже).

Считывающие устройства ДОЛЖНЫ игнорировать и перепрыгивать через те блоки TLV, которые используют зарезервированные значения полей тегов (см. Выше). Чтобы перейти через блок TLV с зарезервированными значениями полей тегов, считывающее устройство ДОЛЖНО считывать поле длины, чтобы понять длину поля значения.

Будущие определения блоков TLV, состоящих только из поля тега, не являются обратно совместимыми с этим примечанием по применению.

Сообщение NDEF TLV#

По крайней мере, одно сообщение NDEF TLV ДОЛЖНО всегда присутствовать внутри тега MIFARE Classic и MIFARE Plus. Сообщение NDEF TLV хранит сообщение NDEF в поле Значение. Считывающее устройство ДОЛЖНО быть способно считывать и обрабатывать сообщение NDEF TLV, найденное в соответствии с процедурой обнаружения NDEF (также называемой обязательным сообщением NDEF TLV или первым сообщением NDEF TLV); В любом случае могут присутствовать дополнительные блоки TLV сообщения NDEF. Ниже показана кодировка 3 полей TLV сообщения NDEF:

Tдолжен быть равен 03h (см.таблицу 4).

LДОЛЖЕН быть равен размеру в байтах сохраненного сообщения NDEF.

VДОЛЖЕН хранить Сообщение NDEF.

Пустое сообщение NDEF TLV должно быть определено как сообщение NDEF TLV с полем L, равным 00h, и без поля V (т.е. в поле V нет сообщения NDEF, см. [NDEF]).

Непустое сообщение NDEF TLV МОЖЕТ содержать пустые или непустые сообщения NDEF.

Проприетарный TLV#

Проприетарный TLV содержит конфиденциальную информацию. Теги MIFARE Classic и MIFARE Plus ДОЛЖНЫ содержать ноль, один или несколько проприетарных TLV. Устройство Reader может игнорировать данные, содержащиеся в этом блоке TLV. Ниже приведена кодировка 3 полей TLV Проприетарного TLV:

Tдолжен быть равен FDh (см.таблицу 4).

LДОЛЖЕН быть равен размеру в байтах проприетарных данных в поле Vale.

VДОЛЖНЫ содержать любые данные, являющиеся собственностью компании.

NULL TLV#

NULL TLV МОЖЕТ использоваться для заполнения области данных. Тег MIFARE Classic и MIFARE Plus МОЖЕТ содержать ноль, один или более NULL TLV. Считывающее устройство ДОЛЖНО игнорировать этот блок TLV. NULL TLV ДОЛЖЕН состоять из 1-байтового поля тега. Ниже показана кодировка поля тега NULL TLV:

Tдолжен быть равен 00h (см.таблицу 4).

ЛНЕ ДОЛЖНЫ присутствовать.

VНЕ ДОЛЖНО присутствовать.

Терминатор TLV#

Терминатор TLV МОЖЕТ присутствовать внутри метки MIFARE Classic и MIFARE Plus, а считывающее устройство ДОЛЖНО быть способно считывать/обрабатывать его. Terminator TLV является последним блоком TLV в области памяти данных. Терминатор TLV ДОЛЖЕН состоять из 1-байтового поля тега. Ниже показана кодировка поля тега Терминатора TLV:

TДОЛЖЕН быть равен FEh (см.таблицу 4).

ЛНЕ ДОЛЖНЫ присутствовать.

VНЕ ДОЛЖНО присутствовать.

Baidu
map