Précédent : if (‘RFID’==’Radio Frequency Insecure Devices’) {Intro();}
Après avoir très (brièvement) introduit les tags RFID EM4X02, nous allons maintenant nous focaliser sur un des moyens permettant de contourner la sécurité d’un système basé sur ceux-ci: le clonage.
Comme nous l’avons vu précédemment, l’élément sur lequel repose toute la sécurité du mécanisme est l’identifiant (soit-disant) unique et inaltérable contenu dans chacun d’eux. Cet identifiant est codé sur 40 bits, laissant ainsi la possibilité d’avoir un total de 1 099 511 627 776 identifiants différents. A priori, il est vrai que cela semble permettre le déploiement d’un assez grand nombre de tags avant d’arriver à l’épuisement des IDs possibles. Toutefois, la problématique qui nous intéresse ici est autre et tourne autour de l’aspect lecture-seule de ces tags.
En effet, comme nous l’avons déjà vu, la valeur des tags EM4X02 ne peut pas être modifiée après fabrication, il n’est donc pas possible de modifier un de ces tags afin de “voler” l’identité d’un autre. Si cette remarque est tout a fait vraie, ce qu’elle ne dit pas c’est qu’il existe – toutefois – d’autres types de tags disposant de cette fonctionnalité, et surtout, fonctionnellement compatibles aves les EM4X02. Parmi ceux-ci, on peut notamment citer les tags Q5 et Hitag2. Tout deux fonctionnent de manière compatible avec les lecteurs EM4X02, tout en disposant d’une mémoire accessible en lecture/écriture, altérable au travers d’un ensemble de commandes spécifiques. Bien entendu, l’utilisation de ces commandes spécifiques (en d’autres termes la programmation d’un identifiant arbitraire) nécessite du matériel spécifique, notamment un lecteur compatible. Néanmoins, une fois cet investissement initial effectué (lecteur et tags Q5 ou Hitag2), il est alors possible de programmer n’importe quel identifiant sur un de ces tags et de s’en servir pour cloner un tag EM4X02 légitime. A ce propos, il existe un excellent outil – RFIDIOt – développé sous forme de collection d’outils Python par Adam Laurie et destiné à faciliter l’interaction (bien ou mal intentionnée) avec une large palette de systèmes RFID. Le seul bémol de cette solution est la relative difficulté à mettre la main sur ce type de tags ainsi que sur les lecteurs compatibles (tous deux peuvent néanmoins être directement commandés sur le site de RFIDIOt). Le prix de ces derniers est toutefois, sensiblement supérieur à celui d’un simple lecteur EM4X02.
Ceci étant dit, d’autres moyens si on est prêt à sacrifier un peu de la flexibilité offerte par la combinaison RFIDIOt + Q5/Hitag2, d’autres solutions – plus simples à mettre en oeuvre et moins chères – existent, notamment des appareils “stand-alone” pouvant cloner un tag EM4X02 en quelques secondes. Ce type d’appareils se content en réalité de lire le tag original, de stocker temporairement l’identifiant de celui-ci, pour l’envoyer à un tag de type lecture/écriture, généralement livré avec l’appareil. Ces tags sont, en termes de concept, très similaires aux tags Q5 et Hitag2. Bien qu’il soit difficile de faire plus simple au niveau utilisation – on pose la tag légitime dessus, on appuie sur un bouton et on répète l’opération avec la tag “pirate” – la seule contrainte de cette solution est de devoir disposer (au moins pour quelques secondes) du tag original que l’on souhaite copier.
Ayant présenté ces deux moyens faciles de cloner un tag RFID de type EM4X02, il est facile de comprendre pourquoi la sécurité système reposant uniquement sur ce type de tags – et notamment s’il s’agit d’un système sensible tel qu’un système de contrôle d’accès – est en réalité toute relative. En effet, une fois le côté “mystérieux” du RFID mis de côté, il est au final bien plus simple et rapide de cloner un tag “unique” que de dupliquer un clé de serrure!
Bien que nous ayons déjà, avec ce type d’équipements, largement de quoi déjouer un système de sécurité basé uniquement sur ce type de tags, nous allons plonger encore un peu plus profondément dans le EM4X02 afin de voir comment construire soi-même – pour quelques francs – un circuit électronique capable d’émuler n’importe quel tag EM4X02. Rendez-vous, pour cela, dans le prochain article.
A suivre: if (‘RFID’==’Radio Frequency Insecure Devices’) {Emulation();}