Les serrures connectées sont apparues il y a quelques années, surfant sur la vague de l'Internet des objets (IoT) avec pour ambition de remplacer nos serrures mécaniques traditionnelles. Ces serrures intègrent pour la grande majorité une connectivité Bluetooth et/ou NFC, afin de permettre aux utilisateurs de communiquer avec ces dernières et de les actionner à l'aide de clefs numériques. C'est tout naturellement que le Labo Sysdream s'est intéressé à ces différentes solutions, afin d'évaluer leur sécurité et d'éprouver des mécanismes d'attaques sur les objets connectés en général.

Nous avons donc fait l'acquisition de deux modèles de serrures connectées et d'un cadenas connecté, et nous les avons passées au banc d'essai.

Une nouvelle manière de prêter ses clefs

Les serrures connectées innovent et proposent à l'utilisateur de créer, partager et révoquer des clefs numériques en lieu et place des clefs traditionnelles. Une clef numérique est une donnée qui peut facilement être créée et échangée via différents moyens de communication (SMS, courriel, etc.), et qui permet de manœuvrer la serrure à l'aide d'un smartphone muni d'une application dédiée. Cette solution permet de pallier aux problèmes généralement associés aux clefs physiques, telles que nous les connaissions:

  • copie de clef (volontaire ou non),
  • perte de clef,
  • clef cassée dans la serrure

Avec les serrures connectées, il est relativement simple de créer une clef sur mesure pour une personne, d'autoriser cette personne à manœuvrer la serrure sur une période de temps donnée et de révoquer très simplement des accès (c'est-à-dire de rendre inutilisable une clef numérique donnée à une personne). Cela est bien sûr accompagné de contraintes:

  • il faut posséder un smartphone avec l'application adéquate,
  • celui-ci doit être compatible Bluetooth ou NFC,
  • un accès à Internet à partir du smartphone est souvent requis

Sur le papier, cette solution est relativement élégante et semble très pratique pour des hôtels, ou même des particuliers qui souhaitent louer leur appartement ou leur maison via des applications comme AirBnB.

Etude de la communication entre le smartphone et la serrure

les deux modèles de serrures que nous avons testé supportent la communication via Bluetooth Low Energy (plus connu sous le nom BLE), un standard de communication élaboré à partir de la version 4.0 de la norme Bluetooth. Ce protocole de communication permet de s'affranchir de l'appairage autrefois nécessaire, et permet de communiquer facilement avec un périphérique compatible. De plus, la consommation d'énergie liée à l'utilisation de ce protocole de communication est très faible, ce qui en fait un protocole de choix pour les objets connectés. Enfin, des fabricants comme Texas Instruments fournissent des puces dédiées (des SoC comme le CC2541) qui permettent de développer rapidement des applications basées sur cette technologie.

Le protocole BLE permet au smartphone de découvrir les périphériques environnant et de déterminer leurs types et les services qu'ils offrent. De cette manière, il est aisé de déterminer la présence d'une serrure connectée compatible pour une application spécifique, puis de communiquer avec celle-ci pour l'actionner. Du point de vue de la communication, tous les échanges sont asynchrones et basés sur l'écriture ou la lecture de ce que la norme définit comme des Characteristics, des blocs de données référencés par des UUIDs. Ces blocs d'information peuvent contenir une taille variable de données, cependant la grande majorité des utilisations (dont l'implémentation standard Android) admettent généralement une taille maximale de 20 octets. Cela est relativement peu, et a pour conséquence de ne pas permettre une transmission rapide et efficace d'information via ce protocole. De même, si une application veut transmettre une quantité de données conséquentes à un périphérique, elle doit employer un protocole de transport qui lui est propre, car aucun standard n'est défini pour assurer cette transmission.

D'un point de vue sécurité, le protocole BLE fournit du chiffrement et une protection contre les attaques par interception, mécanismes de sécurité qui se trouvent ne pas être utilisés par les serrures connectées que nous avons évalués. De fait, une écoute des communications entre le smartphone et une serrure connectée est possible, grâce à un outil adapté: le sniffer BLE. Il existe plusieurs de ces outils dont l'excellent Ubertooth et le Bluefruit LE sniffer, ce dernier étant peu onéreux. Nous avons ainsi acheté un dongle USB Bluefruit LE sniffer sur le site d'Adafruit, en faisant l'hypothèse d'un attaquant n'ayant pas forcément de gros moyens.

Bluefruit LE Sniffer

Le protocole BLE repose sur le principe de channel hopping: lorsqu'une communication est établie, les deux parties prenantes à cette communication se synchronisent et passent d'un canal à l'autre selon une base de temps (la plage de fréquence attribuée au Bluetooth comporte 79 canaux). Ce mécanisme permet d'éviter les interférences et de rendre complexe l'interception. Cependant, ces sniffers interceptent les handshakes réalisés via BLE et se synchronisent afin d'écouter les différents canaux de communication. Ils sont ainsi en mesure de récupérer les informations transmises par les deux parties, et de nous les fournir pour analyse. Lorsque l'environnement radio est relativement pollué, comme c'est le cas dans les grandes villes et ce notamment à cause de nombreux réseaux WiFi utilisant la même plage de fréquence, il est difficile de réussir une interception du premier coup, et nous avons dû nous y prendre à plusieurs fois avant d'obtenir plusieurs captures exploitables.

Une fois les captures effectuées, il a fallu les analyser. Le format des captures produit par l'outil permettant de communiquer avec le sniffer BLE est particulier et nous avons développé un ensemble de scripts Python permettant de supporter ces captures dans Scapy, un framework d'analyse de captures réseaux polyvalent.

Etude de l'application mobile

L'application installée sur le smartphone est en réalité une simple interface permettant à un utilisateur de s'authentifier sur un service en ligne, et demander des clefs à usage unique permettant d'ouvrir ou de fermer la serrure. Il est donc indispensable d'avoir un accès à Internet pour pouvoir actionner la serrure. Heureusement, l'application prévoit la mise en cache de clefs à usage unique afin de permettre l'ouverture et la fermeture malgré l'absence d'accès à Internet, mais avec un nombre limité d'utilisation.

C'est donc un service en ligne, hébergé sur Internet qui communique au travers de l'application avec la serrure connectée. A aucun moment l'application ne génère de clefs numériques, et celle-ci ne contient aucune clef de chiffrement permettant de compromettre la sécurité de la serrure. L'application mobile n'est au final qu'un media faisant le lien entre la serrure connectée et le service en ligne. Ce mode de fonctionnement est compréhensible, la serrure ne pouvant avoir accès à Internet sous peine d'épuiser très rapidement ses batteries. L'utilisateur doit ainsi synchroniser sa serrure connectée avec le service en ligne à chaque modification apportée à la configuration de celle-ci: le service en ligne génère une donnée de configuration chiffrée que seule la serrure peut déchiffrer. Il va de soit que le service en ligne possède une clef connue de la serrure, un secret partagé, utilisé pour communiquer de manière sécurisée.

Des vulnérabilités prévisibles

La première vulnérabilité touchant l'une des serrures testées concerne l'implémentation du chiffrement AES: la donnée chiffrée transmise par le smartphone est accompagnée de 4 octets qui semblent être utilisés lors du déchiffrement. En fuzzant ces quatre octets et en utilisant le protocole de transport adéquat, nous avons été en mesure d'actionner la serrure en dérivant une clef numérique. Si un attaquant peut sniffer une communication lorsqu'un utilisateur ouvre une porte munie de cette serrure et extraire la clef numérique, alors il peut générer une infinité de clefs permettant de l'ouvrir. Un vol de clef numérique rendu possible par l'utilisation du protocole de communication BLE sans chiffrement. Il s'agit là d'une erreur d'implémentation triviale, mais qui a une portée limitée: l'attaquant doit être en mesure d'écouter la communication entre la serrure et le smartphone, au moment exact où ce dernier transmet la clef à usage unique.

La seconde vulnérabilité est plus subtile: il est possible de simuler le comportement d'une serrure à l'aide d'un ordinateur et d'une bibliothèque Node.js afin de faire croire au smartphone qu'il communique avec la serrure qu'il cherche à actionner. Il s'agit purement et simplement d'usurper l'identité de la serrure, et de forcer le smartphone à communiquer avec notre machine plutôt que la serrure véritable. En faisant cela, il est très facile d'intercepter une clef à usage unique (voire deux clefs, si l'on veut mener une attaque similaire à celle qu'a mis au point le chercheur en sécurité Samy Kamkar sur les portes de garages) et de réussir à générer à partir de celle-ci une infinité de clefs permettant d'ouvrir la serrure. Avec cette technique, il n'y a plus besoin de sniffer une communication BLE ce qui rend cette attaque beaucoup plus efficace.

En pratique, la puissance d'émission des adaptateurs Bluetooth employés sur un ordinateur est significativement plus élevée que celle des puces intégrées dans les différentes serrures. Ainsi, nous avons pu forcer un smartphone à se connecter à notre fausse serrure (notre ordinateur) malgré que ce dernier soit situé à 10 mètres environ de la serrure alors que le smartphone se trouvait dans un rayon d'un mètre de celle-ci. Une attaque qui s'est donc révélée très efficace, et qui met à mal la sécurité d'un des modèles testés.

De même, le cadenas connecté que nous avons testé n'emploie aucun chiffrement et l'application mobile associée est vulnérable à une usurpation d'identité (une émulation du cadenas par BLE), ce qui permet d'intercepter le mot de passe numérique de ce dernier et de l'ouvrir sans encombre autant de fois que souhaité.

Plusieurs fuites d'information ont aussi été observées, comme le journal d’événements accessible sur plusieurs modèles. Ce journal indique exactement qui a actionné la serrure et à quelle date et heure, mais aussi les erreurs rencontrés par le système en cas de mauvaise configuration ou de tentative ratée d'authentification. L'accès à ce journal est en principe protégé par mot de passe lorsque l'on utilise l'application, mais est directement accessible en pratique sans authentification, en communiquant directement avec la serrure. C'est un bon moyen pour vérifier si une maison ou un appartement est occupé ou non, et pour planifier une intrusion physique.

Enfin, nous avons été en mesure d'attaquer physiquement certains de ces dispositifs grâce à des techniques de crochetage. Le cadenas n'a pas résisté à l'utilisation de shims, ce qui démontre une conception mécanique faible, tandis que la serrure a pu être crochetée traditionnellement.

Conclusion

Les serrures connectées que nous avons testé souffrent des mêmes problèmes que les serrures mécaniques traditionnelles, mais certaines d'entre elles permettent à un attaquant de contourner à distance le contrôle d'accès en place à l'aide d'un simple ordinateur équipé d'un adaptateur Bluetooth.

A l'heure actuelle, les fabricants réputés de serrures traditionnelles finalisent des serrures connectées prenant en compte leur expérience dans la sécurité physique tandis que les modèles populaires sont conçus par des ingénieurs n'ayant pas de connaissances approfondies des techniques d'attaque physique. Cette technologie sera mature lorsque ces deux mondes, celui des serrures mécaniques traditionnelles et celui des serrures électroniques connectées, auront pu mettre en commun leurs expériences respectives afin de concevoir une gamme de produits robustes et éprouvés.