¿Por qué las tarjetas de transporte japonesas no funcionan con casi ninguna app NFC?
La capa de radio rara vez es el obstáculo: casi todos los teléfonos actuales detectan estas tarjetas, que usan la técnica que Android expone como NfcF. Lo que bloquea a una aplicación genérica es el acceso a los datos, que están protegidos y solo puede leerlos software que posea credenciales gestionadas por los operadores de transporte.
Dos obstáculos distintos
«Mi aplicación no puede leer mi tarjeta de transporte» agrupa dos preguntas con respuestas distintas. ¿Puede siquiera el teléfono hablar con la tarjeta, y puede la aplicación entender lo que la tarjeta dice?
La primera suele estar en orden. La segunda suele no estarlo, y probar aplicaciones distintas no cambia nada.
La técnica de debajo
Estas tarjetas usan la familia que Android expone como NfcF y documenta como JIS 6319-4 en su referencia de técnicas. El NFC Forum adoptó esa misma familia como tipo 3. La técnica la desarrolla Sony, que publica una visión general de FeliCa.
La compatibilidad de hardware fuera de Japón fue irregular durante años y ha mejorado bastante.
Por qué el saldo queda oculto
Una tarjeta de transporte no es una etiqueta que lleve una cifra a la vista. Es un pequeño sistema seguro en el que los datos interesantes residen en zonas protegidas por claves que custodia el operador.
Una aplicación sin esas claves puede por lo general constatar que hay una tarjeta y leer los identificadores que la tarjeta expone libremente. No puede leer ni el saldo, ni el historial de viajes, ni nada que el operador considere suyo, porque la tarjeta no lo entrega.
Es un diseño deliberado y no una limitación. Una tarjeta de saldo que dejara a cualquier aplicación cercana leer su contenido sería un mal diseño para un medio de pago.
Qué puedes esperar razonablemente
Las aplicaciones que publican los propios operadores, y las funciones de cartera integradas en las plataformas de teléfono en Japón, funcionan porque tienen las credenciales y los acuerdos necesarios. Una herramienta NFC genérica no los tiene y no puede tenerlos.
La expectativa honesta ante una herramienta genérica es por tanto la inspección técnica y no contenido utilizable: la tarjeta se detecta, se identifica su técnica, y ahí termina lo que un desarrollo independiente puede ofrecer.
Si la ficha de una aplicación genérica afirma otra cosa, recibe esa afirmación con desconfianza. La barrera aquí es contractual y criptográfica, no una cuestión de mejor software.
Preguntas frecuentes
¿Le falta hardware a mi teléfono?
Es posible, en modelos antiguos vendidos fuera de Japón, pero mucho menos a menudo de lo que se supone. Antes de culpar al hardware: incluso un teléfono con compatibilidad completa no lee datos protegidos sin las claves del operador.
¿Puede alguna aplicación mostrar el saldo de mi tarjeta?
Solo las aplicaciones autorizadas por el operador, lo que en la práctica significa su propio software y las funciones de cartera de las plataformas en Japón. Es una barrera comercial y criptográfica, no una cuestión de calidad del software.
¿Por qué mi teléfono lee una tarjeta de hotel y no una de transporte?
Muchas tarjetas de hotel usan técnicas sencillas con protección por defecto o débil, así que una aplicación de lectura genérica llega más lejos. Las tarjetas de transporte están construidas para resistir precisamente eso, porque llevan un saldo.
¿Vale esto también para las tarjetas de transporte fuera de Japón?
El principio sí. La mayoría de los sistemas de transporte protegen sus datos con claves que gestionan ellos mismos, sea cual sea la técnica de debajo. Lo que cambia es la técnica, no el hecho de que las partes interesantes estén cerradas.