Hacking RFID, rompiendo la seguridad de Mifare (I)

(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.

En la próxima entrada, profundizaremos un poco más en cómo Mifare realiza el proceso de autenticación. Por lo demás, pasen un buen fin de semana.

[1] Flavio D. Garcia, Gerhard de Koning Gans, Ruben Muijrers, Peter van Rossum, Roel Verdult, Ronny Wichers Schreur, and Bart Jacobs. Dismanteling MIFARE Classic, Radboud University Nijmegen 2008.

Comments

  1. Hace unos años vi en el CCC bastante cosas sobre RFID , parece qe la cosa sigue bastante igual.

  2. Hola Omar, como en todas las tecnologías tenemos desarrollos más o menos seguros, es de especial importancia la elección de las mismas a la hora de implementar entornos de producción de cara al público. Lo que sí que esta claro y como comentaba en el post es que, la formula “Security through obscurity” no suele funcionar.

    Gracias por tus comentarios.

  3. @Olopez: igual igual no sigue, por de pronto existen ataques implementados como el siguiente http://code.google.com/p/crapto1/ ;)

  4. vierito5 la herramienta que mencionas la comentaremos en las siguientes entradas de la serie.

    Gracias por tus comentarios, gran blog el tuyo vierito.es

  5. @ramado: muchas gracias! Estaré atento a las siguientes entregas :)

  6. roberto quisiera saber mas de donde salen mas economicos comprar los snnifers y los skimmer y si puedes negociamos el plano de tu maquina receptora de señal inalambrica para rfid

  7. Hola zwtercane, gracias por tus comentarios. Yo compré el dispositivo directamente al fabricante original http://proxmark3.com/, la verdad es que está bien de precio.
    Para los esquemas de la antena puedes consultar en sus foros http://proxmark.org/forum/, la comunidad suele aportar sus diseños.

  8. hola consegui la clave de los 15 sectores A , COMO PUEDO HACER PARA HACER UNA COPIA EXACTA DE LA TARJETA O MODIFICARLA PARA INCREMENTAR EL CONTENIDO DE LOS PASAJES TENGO UN ACR122U Y UN MODULO ACG. GRACIAS .HAY ALGUNA APLICACION PARA ESTO

  9. Desconozco si existe una aplicación que haga la copia completa, dado que la clave privada funciona por sector. Existe un API en la página de Omnikey para programarse una aplicación como la que planteas. Eso si debes disponer de este lector. Un saludo.

  10. GRACIAS POR TU GRAN AYUDA TAL VEZ PARA EL VOLCADO COMPLETO NO SEA NESESARIO , SERIA EN DONDE PUEDO CAMBIAR LA INFORMACION EN Q SECTOR Y EN BLOQUE PARA AUMENTAR LOS TICKETS DE TRANSPORTE PUBLICO O COMO SABER COMO Y EN DONDE LOS CAMBIO .GRACIAS

  11. Esa información la desconozco.

    Un saludo

Trackbacks

  1. […] This post was mentioned on Twitter by Security Art Work, vierito5, Diego , Roger Carhuatocto, phr0nak and others. phr0nak said: Hacking RFID, rompiendo la seguridad de Mifare (1/?) http://tinyurl.com/yan7ssg (Spanish) #rfid #mifare […]

  2. Social comments and analytics for this post…

    This post was mentioned on Twitter by Securityartwork: Primera entrada de Roberto sobre una serie de Hacking RFID: http://bit.ly/aP21mm

  3. […] a continuar con la serie sobre seguridad en Mifare Classic que él comenzó hace unos meses (véase I y […]