Hacking RFID, rompiendo la seguridad de Mifare

(Actualización: Ya tenemos el Esquema Nacional de Seguridad y el Esquema Nacional de Interoperabilidad aquí, recién salidos del horno. Real Decreto 3/2010 y 4/2010, respectivamente. Véase la página del BOE del 29 de enero para acceder a los PDFs)


En este post y los siguientes de la serie vamos a ver cómo conseguir romper la seguridad de las tarjetas de proximidad RFID basadas en tecnología Mifare. Ello conllevará la lectura y modificación interna de sus datos e incluso el clonado de las mismas.

La tecnología RFID (Identificación Mediante Radio Frecuencia), conforma, hoy en día, una solución extensamente utilizada en sistemas de pago en transportes públicos, controles de acceso a edificios u oficinas, pasaportes, monederos electrónicos o sistemas de control de encendido en automóviles entre otras aplicaciones. Existen diversas soluciones como Mifare, Keeloq o RFID EM4102, que permiten al portador interactuar de forma inalámbrica con los sistemas desplegados. La seguridad de este tipo de tecnologías presenta deficiencias que pueden permitir a usuarios malintencionados realizar acciones ilícitas como fraude en sistemas de pago, bypass del sistema de encendido de automóviles, suplantar la identidad de personas o acceder a áreas de acceso restringido, entre otras cosas.

En esta serie de entradas nos vamos a centrar en la tecnología Mifare Classic ya que es una de las más utilizadas en entornos de producción (sistemas de ticketing, control de acceso físico, monedero electrónico, etc.). El proceso de análisis de la seguridad de este tipo de tarjetas ha sido realizado por la Universidad Nijmegen Holandesa en 2008 [1], consiguiendo romper el cifrado propietario de Philips CRYPTO1 sobre el cual se basa Mifare. Ya sabéis “Security through obscurity” mal camino. El problema vuelve a residir en la predictibilidad del algoritmo de generación de números aleatorios, como ocurre en otras tecnologías.

Antes de entrar en los detalles técnicos de las debilidades de seguridad, pasaremos a describir su funcionamiento y estructura. En una arquitectura básica Mifare encontramos un lector y un tag o tarjeta, ejerciendo una comunicación dentro del radio de acción inalámbrico (unos 5 cm). Mifare Classic está basado en el estándar ISO 14443 e incorpora un protocolo anticolisiones, es decir, permite trabajar con varias tarjetas que estén dentro del radio de acción del lector al mismo tiempo. La principal diferencia de la implementación de Philips frente al estándar ISO 14443 es que la comunicación se produce de forma cifrada tras un proceso de autenticación mutuo lector-tarjeta. Cada 8 bits de transmisión, uno se utiliza para calcular la paridad, pero este es cifrado también, dejando la comprobación de integridad a la capa de aplicación.

Por lo que a su estructura lógica se refiere, la tarjeta está representada como un mapa de memoria con bloques de datos de 16 bytes. Estos bloques de datos se agrupan en sectores. Aquí hay que diferenciar las tarjetas de 1k de las de 4k.

Las de 1K tienen 16 sectores con 4 bloques de datos cada uno.
Las de 4K tienen los 32 primeros sectores compuestos por 4 bloques de datos y los 8 últimos sectores por 16 bloques de datos.

Para ambas, el último bloque de datos de cada sector se denomina trailer y es donde se guardarán las claves privadas de acceso y los permisos para acceder a ese sector, lo veremos más en detalle a continuación. Por último cabe destacar que existe un bloque especial que esta localizado en el bloque de datos 0 del sector 0, que alberga la siguiente información en modo solo lectura:

UID – Identificador único de la tarjeta.
BCC – bit count check, calculado por la sucesivas XORs de los bytes del UID.
11 bytes de datos que identifican al fabricante del tag.

La siguiente figura ilustra el mapa de memoria de una tarjeta Mifare 4K.

Para que el lector pueda leer y escribir el contenido de un sector, es decir, cualquiera de los 4 bloques de datos que tiene, necesita en primera instancia autenticarse contra él. Este proceso se realiza si y solo si la clave utilizada por el lector coincide con la que el sector trailer alberga. Mifare permite la utilización de dos claves por sector, la Key A (6 bytes) y la Key B (6 bytes), donde las condiciones o permisos de acceso al sector los marca la máscara Access Conditions (3 bytes). El byte restante U no tiene propósito específico. Este sistema permite con una única tarjeta desplegar varios sistemas que puedan interactuar con ella de forma independiente y sin conocer los datos de otros sectores. De esta manera, por ejemplo, una empresa de telefonía podría desplegar su sistema de monedero electrónico sin interferir en otro sistema de control de acceso físico implementado por un segundo, entregando al usuario un único Token de actuación.


Fuente: Security AT work

Comentarios

Entradas populares de este blog

Descienden las detecciones de malware en Android y crecen en iOS

Explotan el día cero de la VPN de Fortinet para robar credenciales

Microsoft dice que la interrupción masiva de Azure fue causada por un ataque DDoS