¿Puede una app iOS leer el identificador de una etiqueta?
Sí, mediante una sesión de etiqueta. Las etiquetas MIFARE, ISO 7816 e ISO 15693 exponen una propiedad identifier, el identificador único del aparato en orden de bytes de mayor a menor, y una etiqueta FeliCa expone su IDm. Una sesión NDEF no da ningún identificador. En todos los casos el valor distingue etiquetas y no prueba nada de ellas.
Dónde está el identificador
Cada tipo de etiqueta que entrega una sesión de etiqueta lleva su propia propiedad. NFCMiFareTag, NFCISO7816Tag y NFCISO15693Tag exponen identifier, que la referencia de Apple describe como el identificador único del aparato de la etiqueta, en orden de bytes de mayor a menor.
FeliCa es distinta. NFCFeliCaTag expone currentIDm, el identificador del fabricante del sistema seleccionado en ese momento, que la referencia dice que se actualiza en cada comando de sondeo y que está vacío cuando la selección falla.
Las etiquetas ISO 15693 añaden icManufacturerCode e icSerialNumber, y las ISO 7816 y MIFARE sus bytes históricos.
No en una sesión NDEF
NFCNDEFTag, el protocolo que entrega una sesión NDEF, expone la disponibilidad, el estado y el mensaje, y ningún identificador. Una aplicación que lo necesita abre una sesión de etiqueta, con las declaraciones que cubre la página de las declaraciones.
Guarda el valor como bytes, en el orden que da la referencia, antes de compararlo con identificadores leídos en otra parte. Una comparación de cadenas hexadecimales escritas en dos órdenes distintos falla sobre la misma etiqueta.
Para qué sirve
Un identificador distingue dos etiquetas. Sirve para un registro de las etiquetas desplegadas, el apunte de qué etiqueta contiene qué, o para comprobar que la etiqueta que se tiene delante es la que la aplicación espera antes de escribir en ella.
Lo que no prueba
Cualquier lector obtiene el identificador en claro, así que no puede demostrar que una etiqueta sea auténtica. La página de la credencial explica por qué se puede engañar a un sistema que se fía de él, y la página de la autenticidad qué demuestra sí que una etiqueta es auténtica.
Preguntas frecuentes
¿Puede una sesión NDEF leer el identificador?
No. NFCNDEFTag no expone ningún identificador, así que hay que abrir una sesión de etiqueta para leerlo.
¿En qué orden de bytes está el identificador?
De mayor a menor, según la referencia de Apple para las etiquetas MIFARE, ISO 7816 e ISO 15693.
¿Una etiqueta FeliCa tiene identificador?
Expone currentIDm, el identificador del fabricante del sistema seleccionado, que está vacío cuando la selección falla.
¿El identificador puede autenticar una etiqueta?
No. Cualquier lector lo obtiene en claro, así que no prueba nada de su origen; autenticar necesita un chip que responda a un desafío criptográfico.