Hace bastante que no posteo en el blog, pero la vida del ‘grad student’ a veces no te deja mucho tiempo libre -sobre todo cuando la conferencia SuperComputing se acerca-. Hace un par de semanas empezamos en la universidad un grupo de computación distribuida. Nos juntamos cada un par de semanas, en las que una persona comenta un paper en el que esté trabajando o simplemente lo encuentre interesante y discutimos sobre él. El tema de esta semana ha sido los famosos chips RFID y un estándar asociado propuesto, ONS.
Para los que no lo sepáis, RFID puede ser una de las más peligrosas invasiones de la privacidad personal a la que nos enfrentemos en los próximos años -ver info en la Wikipedia española-. Seguro que habéis visto ya estos chips en la vida real adheridos a los productos que compramos. Básicamente es una antena con una mini-memoria conectada que se puede leer a distancia -y sin necesidad de electricidad en el propio chip-. Está diseñado para sustituir a los códigos de barras. Los códigos de barras identifican el tipo de producto, RFID podemos asignar un identificador único a cada producto: caja de cereales, jersey, libro, etc. ya que tenemos memoria suficiente para asignar billones de identificadores únicos. Wal-mart -la cadena de tiendas más popular- quiere obligar a todos sus proveedores a usar estas etiquetas en todos y cada uno de los productos. Entonces, simplemente con acercar tu carro al lector de RFID se podrían leer al instante y generar la cuenta rápidamente. O los proveedores pueden recoger información de dónde está cada producto más fácilmente, etc.
RFID tiene muchos usos legítimos, pero también puede ser utilizado para vigilar a personas. Una persona en unos años llevará varios chips RFID encima sin saberlo. Simplemente por pasar cerca de un detector se puede saber qué es lo que llevas encima: tarjetas de crédito, llaves del coche, qué tipo de teléfono móvil o PDA, marcas de ropa, etc. Y cada uno de estos objetos con un identificador único de producto. Esto requiere tener que escanearte con un lector, con lo que requiere estar cerca, aunque no hace falta contacto físico. Pero ahora es cuando entra en juego el ONS: Object Name Service.
ONS está diseñado encima de DNS (Domain Name Service) y tiene como objetivo conseguir, dado un tipo de producto, un servicio web asociado. Por ejemplo, una lavadora puede leer los RFID de la ropa que tiene dentro, conectarse a los servicios web apropiados y obtener el tipo de lavado que requiere – sólo blancos, algodón, delicados, etc.-. El problema está en que DNS permite hacer muchas cosas malignas. Obtener el servicio web asociado con un chip RFID implica contactar con múltiples servidores DNS: si queremos buscar el producto 54.nike.ons (esto nos lo da el lector de tarjetas al acercarte llevando tus zapatillas) la pregunta pasa por los servidores *.ons, *.nike.ons. Una persona llevará encima un conjunto de RFID tags lo suficientemente único -con alta probabilidad- como para identificarte usando sólo el tipo de producto (y sin recurrir al identificador único). Y los lectores de RFID van a estar en muchas partes. Con lo cual yo puedo apuntar mi programa de seguimiento a múltiples servidores DNS (primero a los de primer nivel, luego va progresivamente bajando de niveles) y preguntar por si han resuelto recientemente (la tienen el la caché) el producto 54.nike.ons (ya que yo sé qué zapatillas llevas). Añadiendo la información sobre el tipo de tu tarjeta de crédito, llaves del coche, etc. puedo conseguir la localización de los lectores de RFID por lo que has pasado en los últimos minutos, ya que la dirección IP de estos lectores lleva cierta información geográfica asociada. En resumen, sólo sabiendo algunos de los productos que llevas puedo seguir tus movimientos (cada X minutos y en un área más o menos pequeña) desde casa haciendo consultas DNS a un número de servidores lo suficientemente pequeño para no levantar sospechas. Y esto por un error de diseño, no por una vulnerabilidad en la implementación de ciertos servidores DNS o ONS.
Aún hay más. Imaginemos que fabrico productos con identificador *.evil.ons. Si consigo que compres un producto manufacturado por mí (el atacante) y te acercas a un lector RFID éste resolverá la dirección 32.evil.ons, por ejemplo. En la respuesta DNS puedo decir que soy responsable también de *.nokia.ons, con lo que si llevas un producto con esa etiqueta encima se enviará a mi servidor y sabré qué otros productos llevan los que hayan comprado los míos (o si he comprometido un servidor ONS, los de esa compañía).
En mi universidad Karsten Nohl (estudiante de doctorado) es el que está trabajando en estos temas y el que nos dio la presentación sobre estos ataques, para los que hay un par de posibles soluciones. Veremos cómo evoluciona esto. Si no, ya sabéis: un par de segundos en el microondas probablemente son suficientes para dañar los chips RFID. O recubrirse de papel de aluminio.


