La mauvaise ID
Dans le monde des cartes sans contact, et particulièrement lorsqu’il s’agit de contrôle d’accès, on dit systématiquement que l’utilisation de l’ID (ou CSN) de la carte n’est pas une bonne idée.
La réponse des intervenants est souvent qu’il est difficile de cloner l’ID d’un badge et que cela relève plus du mythe que d’une réalité.
Du coup, dans cet article je voudrais vous prouver que loin d’être d’une légende urbaine pour faire peur aux responsables de sécurité le clonage des ID est une réalité qu’il ne faut pas négliger.
Qu’est ce qu’un ID
Commençons par le commencement.
Comme nous l’avons vu dans l’article sur la norme ISO/IEC 14443, l’ID d’un badge est une chaîne d’octet retournée au PCD durant la boucle anticollision.
Petite parenthèse pour les lecteurs qui sont un peu perdu suite à cette phrase, je vous invite à lire ou relire l’article sur la norme ISO/IEC 14443 🙂
Cette chaîne d’octet identifie le récepteur, il existe plusieurs types d’ID et plusieurs formats.
Un ID peu être composé à l’heure actuelle de 4 à 10 octets. La taille est dépendante du nombre de cascade (tours) dans la boucle anti-collision :
- Un niveau de cascade (1 tour) : 4 octets
- Deux niveaux de cascade (2 tours) : 7 octets
- Trois niveaux de cascade (3 tours) : 10 octets
On distingue également plusieurs types d’ID :
- nUID : “Non Unique Identifier”. Ce sont les pires, ils font 4 octets et ne sont pas réputés unique. Donc, naturellement, plusieurs badges portant le même ID ont put être mis en circulation.
- UID : “Unique Identifier”. Ces ID sont réputés unique. Il n’est naturellement pas possible de retrouver deux badges avec le même ID.
- rID : “Random Identifier”. Ces ID ne sont ni unique, si fixe. Ils changent à chaque présentation de récepteur au PCD. Pour différencier les “rID” des “nUID”, les premiers commencent toujours par “08h“.
Donc, à ce stade, sans parler de techniques révolutionnaires et très coûteuse pour cloner des badges, on peu dire que l’utilisation des “nUID” comme identifiant de badge est à proscrire. Cela signifie que l’ensemble des badges “MIFARE Classic” par exemple, doivent avoir un autre moyen pour identifier le porteur. Malheureusement c’est rarement le cas.
Pourquoi utiliser l’ID ?
L’ID a l’avantage d’être une donnée bas niveau (ISO/IEC 14443-3) et donc partagée par toutes les cartes et lisible par tous les lecteurs sans avoir à faire de la configuration. C’est donc très simple à mettre en oeuvre et peu coûteux.
Si l’on ne souhaite pas utiliser l’ID, il faut alors encoder le badge pour y inscrire un autre identifiant (unique et fiable celui-là). Cette opération d’encodage demande plus de travail et de la configuration sur chaque lecteur.
Voilà pourquoi l’ID est encore beaucoup utilisé aujourd’hui. Mais on oubli que l’ID est une donnée en claire et qu’un simple Smartphone d’entrée de gamme permet de lire cette information.
Quels risques ?
L’obtention de l’ID étant très simple, le plus compliqué reste la programmation de cet ID dans une autre carte.
Pour les MIFARE Classic, il existe des cartes dont l’ID est modifiable avec une simple commande d’écriture. D’expérience, l’obtention de ces cartes et très simple et très peu coûteuse (2€ la carte). On peut alors cloner l’ID de n’importe quelle carte MIFARE Classic. Si c’est ID est utilisé par le contrôle d’accès, c’est dommage… Le coût est minime :
- Un Raspberry Pi : 50€ avec la carte mémoire
- Un lecteur NFC : 40€
- Une carte avec ID modifiable : 5€ (avec les frais de port).
Donc, pour moins de 100€ on a une machine portable, capable de cloner l’ID des badges MIFARE Classic. Autant dire que le coût n’est plus une barrière.
Pour les autres badges (incluant MIFARE Classic), il existe une solution un peu plus coûteuse. Il s’agit dans ce cas d’émuler la carte complète. Des projets comme openPICC, Proxmark permettent de simuler une PICC. Le coût se situe entre 50 et 400€. Mais avec un kit à 400€, on ne se limite plus au clonage d’ID… Là aussi, le coût est faible par rapport aux failles que cela peut engendrer.
Conclusion
L’utilisation des ID doit être l’ultime solution à un problème. Un lecteur trop ancien ou une migration de technologie par exemple. Dans tous les cas, il faut imaginer que ces ID ne sont pas plus fiable que des codes barres, est-ce que vous diriez que votre site est sécurisé si vous étiez avec une technologie par code barre ?