Volver a las guías

Por qué tu iPhone no detecta una tarjeta MIFARE Classic

El Core NFC de Apple no admite MIFARE Classic, por eso las apps de iPhone no leen esas tarjetas. Te explicamos el motivo, qué sí admite el iPhone y qué usar.

Publicado

Tu iPhone no está averiado. El framework Core NFC de Apple no admite MIFARE Classic, así que una app de iPhone no tiene ninguna vía oficial para leer la memoria de esa tarjeta. Si tu tarjeta es una credencial de acceso antigua, una llave de hotel, un pase de gimnasio o una tarjeta de transporte, es muy probable que sea Classic.

A continuación: qué hace diferente a Classic, qué ha dicho Apple al respecto y qué usar en su lugar.

Por qué MIFARE Classic es diferente

MIFARE Classic no es una etiqueta estándar del NFC Forum. Según el artículo de MIFARE en Wikipedia, usa un protocolo propietario que cumple las partes 1 a 3 de ISO/IEC 14443 Tipo A, más un protocolo de seguridad de NXP para la autenticación y el cifrado. El cifrado es Crypto-1, con una clave de 48 bits.

La memoria se divide en sectores, y cada sector está protegido por dos claves, A y B. Según la referencia MifareClassic de Android, una tarjeta de 1K guarda 1.024 bytes en 16 sectores de cuatro bloques, una de 4K guarda 4.096 bytes, y cada bloque ocupa 16 bytes. Hay que autenticar un sector antes de poder leerlo o escribirlo.

Ahí está el problema. Para leer una tarjeta Classic, el lector tiene que hablar este protocolo de sectores y claves. Pedir un mensaje NDEF no basta.

Qué dice Apple sobre MIFARE Classic

En su sesión de la WWDC19 sobre las mejoras de Core NFC, Apple describe el tipo de etiqueta MIFARE como Ultralight, Plus o DESFire, y afirma: "At this time, MIFARE Classic tags are not supported." No hemos encontrado ninguna fuente de Apple que diga que esto haya cambiado, pero la sesión es de 2019, así que consulta la documentación actual de Core NFC si tienes una versión reciente de iOS.

Los desarrolladores del foro de Apple dicen lo mismo. Uno cuenta que Core NFC no admite Classic 1K y que su app usa un lector Bluetooth externo. El desarrollador de NFC Tools añade que un modo de compatibilidad puede leer y escribir registros NDEF estándar en algunas tarjetas Classic, pero que leer la memoria no es posible. Son declaraciones de desarrolladores y fabricantes, no de Apple; tómalas como informes de campo.

Qué sí admite el iPhone

El soporte MIFARE de Core NFC cubre Ultralight, Plus y DESFire. Las etiquetas Ultralight son etiquetas NFC Tipo 2, la misma familia que la mayoría de las pegatinas. Plus y DESFire se pueden alcanzar con comandos ISO 7816. Para saber más sobre esa familia, consulta si tu teléfono puede leer una tarjeta DESFire y por qué una tarjeta DESFire no muestra registros NDEF.

La lectura de etiquetas en segundo plano, en la que el iPhone reacciona sin abrir una app, sigue exigiendo etiquetas con formato NDEF y es de solo lectura, según la misma sesión de la WWDC.

Android tampoco lo garantiza

Android es más amable, aunque no en todas partes. Su documentación indica que implementar MIFARE Classic en un dispositivo es opcional. Si el teléfono no lo implementa, la tecnología MifareClassic nunca aparece, aunque la etiqueta se siga viendo como NfcA. Wikipedia señala que las pegatinas basadas en Classic solo pueden leerse en dispositivos con un controlador NFC de NXP. Por eso, si una tarjeta es invisible en un teléfono Android, el motivo puede ser el hardware y no la tarjeta.

Qué hacer en su lugar

  • Necesitas los datos de una tarjeta Classic que ya tienes: usa un teléfono Android con soporte Classic o un lector dedicado. Lee únicamente tarjetas que sean tuyas o para las que tengas autorización.
  • Empiezas un proyecto nuevo: compra chips NTAG213 o NTAG216. El creador de NFC Tools los recomienda y funcionan con iPhone. MIFARE Ultralight también es un tipo documentado de Core NFC.
  • La seguridad importa: según Wikipedia, Crypto-1 fue descifrado mediante ingeniería inversa en 2008 y los ataques posteriores recuperan las claves con rapidez. NXP ha recomendado migrar a productos de mayor seguridad, así que no montes un sistema de acceso nuevo sobre Classic.
  • Tu etiqueta no se borra ni se reescribe: consulta tarjetas NFC protegidas frente a bloqueadas.

Si escribes etiquetas NDEF para tus propios proyectos, NFCore para iPhone y para Android puede leerlas, escribirlas e inspeccionarlas. No puede hacer que Core NFC lea una tarjeta que Apple no admite.

Preguntas frecuentes

¿Por qué mi iPhone no detecta mi tarjeta MIFARE Classic?

Core NFC de Apple cubre MIFARE Ultralight, Plus y DESFire, y Apple dijo en su sesión de la WWDC19 que las etiquetas MIFARE Classic no están admitidas. Classic usa un protocolo propietario con autenticación de sectores Crypto-1 que una app no puede realizar a través de Core NFC.

¿Puede una app NFC de iPhone leer en absoluto una MIFARE Classic 1K?

Su memoria, no. El desarrollador de NFC Tools dice que un modo de compatibilidad puede leer y escribir registros NDEF estándar en algunas tarjetas Classic, pero que no es posible leer la memoria en bruto. Es una declaración de un desarrollador, no una garantía de Apple.

¿Qué etiqueta debería comprar para iPhone?

NTAG213 o NTAG216 son los chips que recomienda el creador de NFC Tools, y MIFARE Ultralight es un tipo documentado de Core NFC. Ambos son mucho más fáciles de usar en iPhone que Classic.