Métodos de asignación de datos NDEF de memoria IC MIFARE Classic y MIFARE Plus
View Categories

Métodos de asignación de datos NDEF de memoria IC MIFARE Classic y MIFARE Plus

Directorio de aplicaciones MIFARE #

Los métodos NDEF de asignación de datos de memoria de MIFARE Classic y MIFARE Plus IC utilizan la estructura de directorios de aplicaciones (MAD) MIFARE.

El directorio de aplicaciones MIFARE (MAD) identifica a qué aplicación pertenece la información almacenada dentro de cada sector de memoria.

Se han especificado dos directorios de aplicaciones MIFARE:

      1. Directorio de aplicaciones MIFARE 1 (MAD1): MAD1 PUEDE utilizarse en cualquier producto compatible con MIFARE Classic. El MAD1 se encuentra en el sector MAD (sector 00h), En caso de que el MAD1 se utilice en productos con un tamaño de memoria superior a 1Kbytes, solo la memoria de 1Kbytes puede ser utilizada y direccionada por el MAD1. Por lo tanto, la memoria restante no se utiliza para el almacenamiento NDEF y permanece libre.
      2. Directorio de aplicaciones MIFARE 2 (MAD2): MAD1 PUEDE utilizarse en cualquier producto compatible con MIFARE Classic con un tamaño de memoria superior a 1 Kbytes. MAD2 no es aplicable para productos con un tamaño de memoria menor o igual a 1Kbytes. El MAD2 está ubicado en los sectores MAD (sector 00h y 10h)

A cada aplicación, el MAD asocia un identificador de aplicación único (AID). Los identificadores de aplicación (SIDA) se almacenan dentro de los sectores MAD 00h.

El AID tiene dos bytes de largo, y se divide en 2 campos de un byte cada uno:

  1. el código del clúster de funciones (1 byte) que identifica el clúster al que pertenece la aplicación, y
  2. el código de aplicación (1 byte) que identifica la aplicación dentro del clúster. Para más información sobre MAD1 y MAD2.

El byte de propósito general (GPB) del sector MAD SE establecerá con un bit DA igual a 1b (el bit DA es el bit MAD disponible del GPB).

Todos los sectores actualmente no utilizados DEBEN estar protegidos contra escritura con claves secretas definidas por el emisor de la etiqueta para evitar la redefinición involuntaria de las condiciones y claves de acceso. Se RECOMIENDA utilizar diferentes claves para todos los sectores libres. Esto permite la futura liberación de algunos sectores a nuevos proveedores de servicios sin la necesidad de liberar todos los sectores gratuitos.

Acceso al sector MAD #

Los sectores de memoria donde se almacenan mad1 y MAD2 (ver [MAD]), se protegen mediante la clave A y la clave B. Según [MAD] los sectores de memoria son:

        • MAD1: el sector MAD es 00h (sector 0), y
        • MAD2: los sectores MAD son 00h y 10h (sector 0 y sector 16).

Cualquier persona podrá leer los sectores MAD. Esto se logra mediante el uso de una clave pública A descrita en la Tabla 1 (véase también [MAD]).

Tabuladorle 1. Clave pública Valor de los sectores MAD

Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5
A0h A1h A2h A3h A4h A5h

Los bits de acceso para los sectores MAD se establecen en:

        • como se describe en la tabla 2 si el sector MAD tiene acceso de lectura y escritura concedido, o
        • como se describe en el cuadro 3 si el sector MAD tiene acceso de sólo lectura concedido (véase también [MF1K, MF4K, MFPLUS]).

En este contexto, el término acceso de lectura y escritura concedido significa que para los sectores MAD que han sido previamente autenticados con la clave secreta B, es posible leer y escribir todos los bloques de sectores excepto el bloque de remolque de sector (consulte la Tabla 2 para obtener más detalles).

En cambio, el término acceso de solo lectura concedido significa que para los sectores MAD que han sido previamente autenticados con la clave pública A de la Tabla 1 o la clave secreta B, es posible leer solo todos los bloques de sectores excepto el bloque de remolque de sector (consulte la Tabla 5 para obtener más detalles).

Usando la tecla A siempre es posible leer los bloques del sector MAD. Los remolques de sector tienen una configuración de acceso particular cuando se concede acceso de lectura/escritura o acceso de solo lectura (consulte la Tabla 2 y la Tabla 3).

Los sectores MAD DEBEN estar protegidos contra escritura mediante la clave secreta B (por ejemplo, definida por el emisor de la etiqueta) o configurando la etiqueta MIFARE Classic y MIFARE Plus como de solo lectura utilizando los bits de acceso.

Tabla 2. Configuración de bits de acceso para el sector MAD con el acceso de lectura y escritura concedido

Configuración de bits de acceso para el sector 0 de MAD1 o MAD2 y para el sector 16 de MAD2
Bits de acceso Valores Observaciones
C10 C20 C30 100bi El bloque 0 se lee con la tecla A o la tecla B y se escribe con la tecla B
C11 C21 C31 100b El bloque 1 se lee con la clave A o la tecla B y se escribe con la clave B
C12 C22 C32 100b El bloque 2 se lee con la clave A o la tecla B y se escribe con la tecla B
C13 C23 C33 011b El bloque de remolques del sector:

  • La clave A se escribe con la tecla B y nunca se lee,
  • Los bits de acceso se leen con la clave A o la clave B y se escriben con la clave B,
  • La tecla B se escribe con la tecla B y nunca se lee.
i. Valor recomendado para los bits de acceso C10 C20 C30 del sector 0 (bloque fabricante).

Tabla 3. Configuración de bits de acceso para el sector MAD con acceso de solo lectura concedido

Configuración de bits de acceso para el sector 0 de MAD1 o MAD2 y para el sector 16 de MAD2
Bits de acceso Valores Observaciones
C10 C20 C30 010b El bloque 0 se lee con la tecla A o la tecla B
C11 C21 C31 010b El bloque 1 se lee con la tecla A o la tecla B
C12 C22 C32 010b El bloque 2 se lee con la tecla A o la tecla B
C13 C23 C33 110b El bloque de remolques del sector:

  • La clave A nunca se escribe y se lee,
  • Los bits de acceso se leen con la clave A o la clave B y nunca se escriben,
  • La clave B nunca se escribe ni se lee.
i. Valor recomendado para los bits de acceso C10 C20 C30 del sector 0 (bloque fabricante).

Bloques TLV #

Un bloque TLV consta de uno a tres campos:

T (campo de etiqueta, o campo T) DEBE identificar el tipo de bloque TLV (ver Tabla 9), y CONSISTIRÁ en un solo byte que codifica un número de 00h a FFh. Los valores de etiqueta 01h, 02h, 04h a FCh y FFh están reservados para su uso futuro.

L (campo de longitud, o campo L) DEBE proporcionar el tamaño en bytes del campo de valor. Tiene dos formatos diferentes compuestos por uno o tres bytes. El dispositivo Lector DEBE comprender todos los formatos de campo de dos longitudes. La Fig. 5 muestra las dos estructuras de campo de longitud diferentes. Sin embargo, dependiendo del valor del campo de etiqueta, el campo de longitud PUEDE no estar presente.

  • Formato de un byte: El formato de un byte CODIFICARÁ la longitud del campo de valor entre 00h y FEh bytes. Este byte SE interpretará como cardinal si el valor está entre 00h y FEh. Si contiene FFh, el valor SE INTERPRETARÁ como un indicador que especifique que el campo de longitud está compuesto por más de un byte.
  • Formato de tres bytes consecutivos: Este formato DEBE codificar la longitud del campo de valor entre 00FFh y FFFEh bytes. Se supone que el primer byte es una bandera igual a FFh que indica que dos bytes más de longitud SE interpretarán como una palabra. Esta palabra SE INTERPRETARÁ como cardinal si el valor está entre 00FFh y FFFEh. El valor FFFFh está reservado para uso futuro (RFU).

V (campo de valor, o campo V) Si el campo de longitud es igual a 00h o no hay campo de longitud, NO debe haber el campo de valor, es decir, el bloque TLV está vacío. Si existe el campo de longitud e indica una longitud del campo de valor N mayor que cero (N>0), el campo de valor CONSTARÁ de N bytes consecutivos.

En la Tabla 4 se enumeran los bloques TLV especificados en este documento que se describen en las secciones siguientes.

Tabla 4. BloquesTLVdefinidos  

Nombre del bloque TLV Valor del campo de etiqueta Breve descripción
NULL TLV 00h Puede usarse para rellenar áreas de memoria y el dispositivo Lector DEBE ignorar esto
Mensaje NDEF TLV 03h Contiene el mensaje NDEF
TLV patentado FDh Etiquetar información propietaria
Terminator TLV Feh Último bloque TLV en el área de datos

El dispositivo lector DEBE escribir los bloques TLV en un orden específico dentro del área de datos siguiendo las siguientes reglas:

  • Los bloques TLV SE escribirán en orden a partir del byte 0 del bloque 0 del Sector NFC (sector que contiene datos NDEF) con la dirección más pequeña.
  • Un bloque TLB PUEDE memorizarse en dos o más sectores NFC.
  • Si está presente, el Terminator TLV es el último bloque TLV en la etiqueta MIFARE Classic y MIFARE Plus.

NULL TLV y Terminator TLV son los únicos bloques TLV que tienen 1 byte de largo (por ejemplo, compuestos solo por el campo Tag, ver más abajo).

Los dispositivos lectores DEBEN ignorar y saltar sobre aquellos bloques TLV que hacen uso de valores de campo de etiqueta reservados (ver arriba). Para saltar sobre un bloque TLV con valores de campo de etiqueta reservados, el dispositivo Lector DEBE leer el campo de longitud para comprender la longitud del campo de valor.

Las definiciones futuras de bloques TLV compuestos solo por el campo de etiqueta no son compatibles con versiones anteriores de esta nota de aplicación.

Mensaje NDEF TLV #

Al menos un mensaje NDEF TLV ESTARÁ siempre presente dentro de la etiqueta MIFARE Classic y MIFARE Plus. El TLV del mensaje NDEF almacena el mensaje NDEF dentro del campo Valor. El dispositivo lector DEBERÁ ser capaz de leer y procesar el TLV de mensaje NDEF encontrado por el procedimiento de detección de NDEF (también llamado TLV de mensaje NDEF obligatorio o primer mensaje NDEF TLV); de todos modos, otros bloques TLV de mensajes NDEF PUEDEN estar presentes. A continuación se muestra la codificación de los 3 campos TLV del mensaje NDEF TLV:

T SERÁ igual a 03h (véase el cuadro 4).

L SERÁ igual al tamaño en bytes del mensaje NDEF almacenado.

V ALMACENARÁ el mensaje NDEF.

Un TLV de mensaje NDEF vacío debe definirse como un TLV de mensaje NDEF con campo L igual a 00h, y ningún campo V (es decir, no hay ningún mensaje NDEF presente en el campo V, consulte [NDEF]).

Un TLV de mensaje NDEF no vacío PUEDE contener mensajes NDEF vacíos o no vacíos.

TLV patentado #

El TLV propietario contiene información patentada. Una etiqueta MIFARE Classic y MIFARE Plus DEBERÁ contener cero, uno o más TLV propietario. El dispositivo Reader puede ignorar los datos contenidos en este bloque TLV. A continuación se muestra la codificación de los 3 campos TLV de Proprietary TLV:

T SERÁ igual a FDh (véase el cuadro 4).

L SERÁ igual al tamaño en bytes de los datos propietarios en el campo Vale.

V CONTENDRÁ cualquier dato de propiedad.

NULL TLV #

El NULL TLV PUEDE utilizarse para el relleno del área de datos. Una etiqueta MIFARE Classic y MIFARE Plus PUEDE contener cero, uno o más NULL TLV. El dispositivo Lector DEBERÁ ignorar este bloque TLV. NULL TLV SE compone de un campo de etiqueta de 1 byte. Debajo se muestra la codificación del campo de etiqueta del NULL TLV:

T SERÁ igual a 00h (ver Tabla 4).

L NO ESTARÁ presente.

V NO ESTARÁ presente.

Terminator TLV #

El Terminator TLV PUEDE estar presente dentro de la etiqueta MIFARE Classic y MIFARE Plus, y un dispositivo Lector DEBE ser capaz de leerlo/procesarlo. El Terminator TLV es el último bloque TLV en el área de memoria de datos. Terminator TLV DEBE estar compuesto por un campo de etiqueta de 1 byte. Debajo se muestra la codificación del campo de etiqueta del Terminator TLV:

T SERÁ igual a FEh (véase el cuadro 4).

L NO ESTARÁ presente.

V NO ESTARÁ presente.