Tarjetas inteligentes de identificación

Las tarjetas inteligentes son una tecnología de las últimas dos décadas que ha llegado a reemplazar el efectivo como medio de pagos, las llaves de ingreso a habitaciones y los pasaportes. Es sobre ésta tecnología, que puede ser leída y emulada por teléfonos con NFC, de la cual vamos a comentar algunos aspectos a continuación. La información la dividiremos en Generalidades, Lectura de datos y Generalidades de la obtención de datos.

Aviso: La siguiente publicación tiene una finalidad educativa, de difusión y de investigación. El uso práctico que se le pueda dar a su contenido queda a responsabilidad de quien lo utilice con las sanciones que le correspondan.

Generalidades:

Ante todo, debemos saber que las tarjetas inteligentes pueden funcionar en dos modalidades: «Contacto» o «Sin Contacto», pudiendo coexistir ambas tecnologías en un mismo plástico, incluso con otras tecnologías como son las bandas magnéticas o códigos QR. Un ejemplo claro de ello son las tarjetas bancarias que constan de un número único impreso, una banda magnética que entrega ese número, un chip de contacto para realizar transacciones con la tarjeta insertada y un chip con antena para comunicarse sin contacto con el terminal de pago. Otro uso masivo de las tarjetas de contacto es el formato de tarjeta SIM, las que cuentan con una capacidad de memoria en torno a los 128kb para almacenar la lista de contactos y permitir la asignación del número por parte del operador de telefonía.

*Ejemplos de SmartCard de uso diaria – De izquierda a derecha: Tarjeta sin contacto, tarjeta de contacto y tarjeta SIM*

Respecto al uso inalámbrico, las tarjetas «Sin Contacto»,  y NFC se comunican bajo RFID UF 13,56 MHz (alta frecuencia), pudiendo utilizarse a una distancia de hasta 10 cm del lector. Existen otras frecuencias usadas como las tarjetas RFID LF (baja frecuencia) a 125 kHz, y las utilizadas al interior de vehículos para estacionamiento o TAG que funcionan por RFID UHF a 868 MHz.

Colección de tarjetas multivia. Obtenida de Twitter

*Colección de tarjetas multivia, el plástico traslucía la antena y el chip como parte del diseño*

Estas tarjetas inalámbricas pueden ser leídas por celulares que implementen la tecnología NFC – Near Field Connection – o por lectores para computadores conectados por USB usando la especificación PC/SC, los que suministran la electricidad activando su procesador interno y accediendo a los datos de la memoria y operaciones para las que están diseñadas. Su forma no se limita a la del plástico de una tarjeta de crédito, pudiendo tener tamaño disminuido como la BBVA Wallet, forma de llavero, sticker, figuras Amiibo e incluso implantes subcutáneos.

*Figura amiibo de Nintendo, en la base cuenta con un circuito de etiqueta NFC / Chip implantado en mano para permitir acceso sin tener que sacar una tarjeta*

A nivel físico, las tarjetas cuentan con microprocesadores y memoria, lo que les permite ejecutar mini aplicaciones llamadas Applets, las cuales se identifican por sus ID refiriéndonos a ellas por AID y el número, permitiendo acceso seguro a datos a través de complejas operaciones. Estos datos se encuentran regulados por el estándar ISO7816, definiendo la estructura y el protocolo de comunicación, el cual se realiza a través de «Comandos APDU» por parte del lector y «Respuestas APDU» por el lado de la tarjeta.

Dentro de los tipos de tarjetas sin contacto nos encontramos diferentes estándares, siendo el más utilizado las tarjetas «mifare» de NXP, que se subdividen en MIFARE Classic, MIFARE DESFire y MIFARE Ultralight, entre otras.

La estructura de los datos para estas tarjetas depende de la capacidad de la memoria, siendo las de 1 kB divididas en 16 sectores de 64 bytes cada uno, subdivididos en bloques de 16 bytes, reservando el contenido del último bloque de cada sector para guardar los siguientes datos: «clave A (6 bytes), condiciones de acceso (36 bytes), clave B (6 bytes)» En el caso de las tarjetas de 4 kB, la división es en 40 sectores, 32 de 4 bloques y 8 de 16 bloques, siguiendo la misma subdivisión por bloque. En el primer bloque del sector 0 de todas estas tarjetas se entrega información importante, que corresponde al UID (primeros 4 bytes), BCC (1 byte) y datos del fabricante (11 bytes) totalizando 32 caracteres. Ademas de ello, dentro de las respuestas que entrega la tarjeta al lector se encuentra el ATR (Answer to reset), que permite identificar mas o menos el tipo de tarjeta. Por ejemplo, si la respuesta es «3B 88 80 01 31 CC CC 01 77 83 A1 00 6C» sabremos que se trata de una cédula de identidad chilena, o «3B 65 00 00 20 63 CB AD 80» respecto a una tarjeta de débito del banco Santander. Existen listados en internet que recopilan información al respecto y nos permiten averiguar con facilidad de qué tarjeta se podría tratar.

Aparte del uso de tarjetas bancarias y de acceso a habitaciones de hotel comentados al inicio, esta tecnología es usada en los pasaportes «ePassport y otros medios de identificación como el carnet de identidad y la tarjeta nacional estudiantil (TNE) de Chile, cumpliendo los dos primeros con normas internacionales para llevar datos personales, conocidas como ICAO e identificadas por un logo característico con un círculo al centro.

Para la lectura de tarjetas ICAO, se requiere acceder al AID «A0000002471001» que es el que contiene los datos personales, y una clave generada en base a 3 datos: el número del documento, la fecha de vencimiento y la de nacimiento.

Carnet chileno

*Cédula de identidad chilena, el logo celeste en la parte inferior derecha indica cumplir con la norma ICAO*

En el caso de las tarjetas de transporte, las tarjetas cuentan con claves de lectura especiales que varían por entidad emisora, pero que normalmente son compartidas entre todas las tarjetas emitidas por la misma entidad. Ejemplos de estas tarjetas son la Oyster de Londres, Bip! de Santiago, SUBE de Buenos Aires, ShokoTicket del sector del Rin-Ruhr y las Suika y PASMO de Japón.

Aplicaciones como la «PuntoBip!» del 2014, «SaldoBip!», «MetroApp» (no oficial) y «Carga Activa» hacen uso de estas claves y capacidades de los celulares con NFC para leer el saldo e  incluso modificar los datos de la tarjeta. Esta tecnología recién a fines de 2019 está siendo aprovechada por Metro de Santiago para permitir la carga remota de las tarjetas a través de la aplicación «Carga Activa» sin tener que acceder a lectores específicos para la tarea denominados PuntoBip!

*Totem InfoBip! / Aplicación «Carga Activa» ambos para activación de carga remota*

Y finalmente hablaremos de una utilidad que se está masificando recientemente, el uso de las tarjetas sin contacto para control de acceso a recintos como salas de clases, oficinas, cafetería y las habitaciones de hotel. El simple gesto de acercar la tarjeta se traduce en una implementación que en realidad es sencilla. Si bien la tarjeta puede contener datos personales del usuario, cada tarjeta es también identificable de forma casi única por su UID, 8 caracteres hexadecimales ubicado en el sector 0 de solo lectura. Este valor es colocado en una lista blanca que el lector considera para realizar la función de destrabar la puerta. ¿El problema? Existen tarjetas mágicas que vienen sin este valor, para que el usuario se lo pueda colocar y de esta forma clonar la tarjeta. Otra forma de vulnerarlo es emular una tarjeta con un celular Android, el cual debe estar rooteado para poder acceder a la parte más profunda del sistema y establecer un UID fijo en lugar de dinámico.

Lectura de datos:

Una vez ya visto la parte general de las tarjetas inteligentes, vamos a pasar a la lectura de los datos. Para ello requeriremos un lector USB o un teléfono con NFC. La aplicación básica para los teléfonos Android es «Mifare Classic Tool», que con las claves adecuadas te mostrará la información almacenada.

Algunas claves que quizá te interese conocer para acceder a los datos son:

Tarjeta Universitaria Inteligente «TUI» de Santander:

  • A0A1A2A3A4A5
  • E070C9F8E9F6

Tarjeta Bip! y TNE (Claves A y B para sectores 0 al 15):

  • 3A42F33AF429 1FC235AC1309
  • 6338A371C0ED 243F160918D1
  • F124C2578AD0 9AFC42372AF1
  • 32AC3B90AC13 682D401ABB09
  • 4AD1E273EAF1 067DB45454A9
  • E2C42591368A 15FC4C7613FE
  • 2A3C347A1200 68D30288910A
  • 16F3D5AB1139 F59A36A2546D
  • 937A4FFF3011 64E3C10394C2
  • 35C3D2CAEE88 B736412614AF
  • 693143F10368 324F5DF65310
  • A3F97428DD01 643FB6DE2217
  • 63F17A449AF0 82F435DEDF01
  • C4652C54261C 0263DE1278F3
  • D49E2826664F 51284C3686A6
  • 3DF14C8000A1 6A470D54127C

Tarjeta TNE 2015 en adelante (Tarjeta de 4kB, claves A y B para el sector 16 en adelante):

  • FFFFFFFFFFFF

Lectura de datos de Bip! / TNE

La información a continuación corresponde a un extracto del análisis realizado por Boris Romero para su tesis, puedes encontrar más información al pie de la publicación. Dentro de los datos que destacan en los almacenados en las tarjetas se encuentran: Nombre del alumno (TNE, bloque 12), rut del alumno sin el dígito verificador (TNE, bloque 13), mes y día último uso (bloque 16) y el saldo (bloques 33 y 34). Para poder leer el saldo nos interesan los dos primeros valores hexadecimales de los bloques 33 y 34 (ambos bloques manejan los mismos datos a modo espejo). Estos valores hay que transformarlos a decimales, pero para su correcta lectura debes usar primero el segundo valor y después el primer valor. Osea si es un 50 00, léelo como un 00 50. Y si es un 76 43, léelo como un 43 76. Para convertirlo a decimal puedes usar la función de Excel HEX A DIC o un conversor de valores en línea. En las imágenes de ejemplo tenemos una tarjeta con un saldo de 80 pesos, lo cual equivale en HEX a 00 50, y en la tarjeta es almacenado como 50 00.

*Saldo de la tarjeta en la aplicación Punto Bip! y al leer los datos con MCF*

Lectura de datos de tarjetas TUI

Estas tarjetas funcionan como tarjeta de débito del banco Santander y como credencial universitaria en las universidades. La tarjeta almacena para lectura de la universidad el nombre de la institución (sector 21), rut de la institución (sector 19), carrera (sector 20), nombre (sector 18) y rut del alumno sin el dígito verificador (sector 22), los que podemos leer haciendo uso de las dos claves anteriores.

*Lectura de una tarjeta universitaria inteligente con MIFARE Classic Tool*

Lectura de datos de tarjetas de crédito

La información que pueden leer estas aplicaciones incluye el nombre del titular de la tarjeta, los últimos 4 dígitos de la tarjeta, la fecha de expiración, el emisor de la tarjeta y si es Visa o MasterCard, intentos restantes de clave (para el bloqueo después de 3 intentos fallidos), y un detalle de con fecha, monto y país del terminal de las últimas transacciones. Por diseño, las tarjetas tienen un número de transacciones limitado (valor de 2B, siendo el máximo 65535), para el cual existe un contador interno. Al intentar descifrar los datos de la tarjeta este contador se incrementa en 1000, permitiendo un escaso números de intentos antes de boquearse la tarjeta por exceder el número de transacciones. lo que hace poco factible la clonación de tarjetas con las técnicas actuales.

Para obtener una clave es posible usar herramientas como MFOC o MFCUK con lectores para computador que permiten en menos de un día obtenerla gracias a los fallos encontrados a partir del 2007 para la tecnología Crypto-1 de NXP Semiconductors. Otra posibilidad es usar una versión modificada de Mifare Classic Tool que permite hacer un ataque de fuerza bruta, pero este no es recomendado ya que prueba (según el modelo de celular) entre 20 y 40 claves por segundo de un total de 2^48 combinaciones posibles.

Lector HID Omnikey 5021CL

*Lector Omnikey 5021CL para leer tarjetas en el computador*

Aplicaciones útiles:

Enlaces de interés:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *