L’identification par radiofréquence (ou RFID : Radio Frequency IDentification) est une technologie de communication sans contact de proximité (NFC : Near Field Contact) de plus en plus utilisée dans tous les domaines et celui de la sécurité n’y échappe pas. En effet, on peut l’utiliser que ce soit pour déverrouiller sa session d’ordinateur ou pour ouvrir la porte d’une zone sécurisée ou de son bureau. Il appartient donc aux responsables de la sécurité de bien connaître les vulnérabilités de ce système d’identification et/ou d’authentification afin d’éviter tout faux sentiment de sécurité qu’il suscite ainsi que toute mauvaise surprise (usurpation d’identité, fuite de données personnelles, etc.).
Cette solution de sécurisation des accès est souvent livrée « clé en main » au client, qui est généralement plus préoccupé par le côté pratique du « sans contact » que par son aspect sécurité. On est amené à penser que cette technologie est plus sécurisée qu’un système plus simple (mot de passe, code ou clé), mais comme pour tout moyen d’identification, cela dépend de la façon dont il a été implémenté.
Ces systèmes sont généralement composés des trois éléments suivants : les badges utilisateurs, les lecteurs (fixes ou mobiles) et le logiciel de gestion. Tous ces éléments doivent donc être vérifiés afin d’optimiser la fiabilité de la solution à mettre en place.
Composants d’un système RFID
Les badges :
Les badges (ou tags) sont les éléments de la RFID les plus accessibles pour un attaquant. Il faut donc porter une attention toute particulière à ceux-ci. Il en existe une grande diversité : du simple badge ne contenant dans sa mémoire qu’un identifiant unique (UID), à ceux contenant plusieurs kilos octets de données pouvant être chiffrées avec des algorithmes de type AES. Il existe également différentes architectures de stockage de ces données. Par exemple : une structure par secteur contenant des blocs mémoires prédéfinis par le constructeur accessible directement ou une structure accessible après appel de fonctions internes. Les badges à structure par bloc sont les plus répandus actuellement. Ils sont détaillés dans le reste de cet article.
Ce type de badge peut contenir les éléments suivants :
Un UID. Tous les badges en contiennent un, car cela permet de l’identifier de façon unique. Cette donnée ne peut pas être modifiée après la fabrication du badge ;
Des blocs de données « constructeur ». Ils contiennent le nom du fabricant et le type de badge. Ces données ne peuvent pas être modifiées après la fabrication du badge ;
Des blocs de données permettant de contrôler et de protéger l’accès aux données du badge. Ils permettent de gérer les accès en lecture et en écriture indépendamment pour chaque bloc mémoire ;
Des blocs de données « utilisateur » pouvant contenir des informations personnelles.
Les badges les plus utilisés pour la protection d’accès sont généralement les modèles les moins chers (et donc les plus simples). Par ailleurs, ils ont l’avantage d’être compatible avec de nombreux lecteurs et systèmes de gestion. Cependant, ils n’offrent pas ou peu de sécurité contrairement aux badges plus sophistiqués possédant des protections d’accès. Ces derniers fournissent ainsi une protection supplémentaire évitant leur duplication par des copieurs simples (achat sur Internet ou applications pour smartphones compatibles NFC par exemple). Mais encore faut-il que les données servant à identifier le porteur du badge, donc à lui concéder les droits d’accès, soient contenues dans une de ces zones de mémoires protégées! C’est lors de l’étude d’un de ces systèmes au sein du laboratoire CVO² de l’ESIEA que j’ai pu constater une telle erreur d’implémentation.
Exemple de mauvaise implémentation :
Nous sommes dans le cas d’un badge numéroté 187 :
Ce badge contient les 2 secteurs mémoire ci-dessous :
Le premier secteur contient l’UID du badge, les données fabricant ainsi qu’une donnée utilisateur (« 04 04 04 04 04 »). Il possède des blocs de données permettant de définir la protection des données du secteur (zone rouge). Ces blocs étant à 0, les protections ne sont pas actives.
Le secteur 2 contient la donnée utilisateur 0187, qui correspond au numéro inscrit sur le badge. Il possède également des blocs de protection contrôlant l’accès en lecture et en écriture de ce secteur. La valeur de ceux-ci (« 9 ») active ces protections.
On peut donc penser que la donnée utilisée pour identifier le porteur du badge est le numéro 187. Cependant, après plusieurs tests, j’ai constaté que le système RFID déployé identifiait le porteur du badge avec la donnée « 04 04 04 04 04 » du premier secteur, qui n’a aucune protection. Il est donc possible pour une personne mal intentionnée ayant accès au badge de copier uniquement cette donnée non protégée pour posséder la même identité que le porteur officiel.
Les lecteurs
Les lecteurs sont aussi un élément du système RFID au contact des utilisateurs et donc des possibles personnes mal intentionnées. À ce titre, ils doivent être convenablement configurés. Cela passe, comme nous venons de le voir, par le choix des zones mémoire du badge qu’ils doivent lire afin d’autoriser ou non l’accès. Leur emplacement a également son importance. Ils doivent être placés dans une zone dégagée et visible afin de prévenir l’installation d’équipements d’écoute de proximité pouvant récupérer la communication échangée entre le lecteur et les badges. La mise en place d’une caméra (même fictive) fixant le lecteur permet d’augmenter la couverture de ce risque.
Les logiciels de gestion
La partie « logiciel de gestion », bien que souvent fournie en mode « boîte noire », n’est pas à négliger pour autant. Car en plus de contenir toute la configuration du système, elle contient de nombreuses informations personnelles sur les utilisateurs : heures de passage, temps de présence, droits d’accès, etc.
Ces trois éléments sont donc à contrôler lors de l’installation d’un système RFID, même si celui-ci est livré « clé en main ». Enfin, comme pour tout système d’identification, une sensibilisation des utilisateurs est nécessaire afin qu’ils ne laissent pas leur moyen d’identification à la portée de tous .