Le Bluetooth
Ainsi, vous croyez connaître le Bluetooth ? Eh bien attachez vos ceintures et relevez les tablettes...

Bluetooth ou la "dent bleue" était le surnom d’un roi du Danemark (940-981). D'ailleurs, le logo provient de l'alphabet runique, il faut dire que c'est Ericsson qui l'a créé en 1994.
En 1999 est apparue la spécification 1.0, en 2006 la seconde génération est proposée par le Bluetooth Special Interest Group (SIG) avec des débits cent fois supérieur, groupe qui comporte à présent plus de 17000 membres. Maintenant, c'est la version 4.0 "Low Energy" (+addendum), qui inclue aussi les anciennes "Classic" et "High Speed", qui est active depuis 2010.
Bluetooth opère dans la bande des 2.4 GHz (= pas de licence), exactement comme pour le WiFi 802.11b,g ou tout bêtement les fours à micro-ondes = ne placez pas vos appareils Bluetooth et autres bases WiFi à coté !
Présentation générale des versions
Le Bluetooth est basé sur la technique
d'étalement de spectre à évasion de fréquence FHSS.
Toutes les versions de Bluetooth sont compatibles dans le sens descendant, c'est-à-dire
qu'un appareil version 4.0 reconnaitra un appareil version 1.0, mais pas forcément l'inverse
car de nouvelles techniques ont été introduites au cours du temps. Du coup, il suffit d'avoir
la dernière version du standard pour avoir aussi toutes les anciennes versions.
Version | Date, standard | Description |
---|---|---|
v1.0 & v1.0B | 1999 | Ces deux versions ont connues de nombreux problèmes, et les fabriquants ont eu du mal à faire des produits interoperables. de plus, l'adresse hardware obligatoire dans le protocole de transmission pour se connecter, rendant l'anonymat impossible, était bloquante pour certains services. |
v1.1 | 802.15.1–2002 |
|
v1.2 Classic | 802.15.1–2005 |
|
v2.0 Enhanced Data Rate | 2004 |
|
v2.1 Enhanced Data Rate | 26 juillet 2007 |
|
v3.0 High Speed | 21 avril 2009 |
Ultra-wideband Le coup de l'AMP était prévu pour utiliser de l'ULB (UWB) spécifiée par l'alliance WiMedia, mais celle-ci s'est auto-détruite, en transférant les travaux à ... Bluetooth, qui a fini par suspendre ce développement en octobre 2009. Le SIG serait en train d'évaluer de nouvelles options. Autrement dit, le 3.0 HS n'est pas vraiment opérationnelle, comme on peut le deviner à demi-mots sur le site officiel de Bluetooth / High Speed (stay tuned). |
v4.0 Low Energy | 30 juin 2010 | Bluetooth Low Energy (BLE), connu aussi sous le nom de WiBree ou Bluetooth Ultralow Power ULP, est un protocole entièrement nouveau pour permettre la création de liens rapides, et basse consommation (pour fonctionner avec une pile bouton). En 2011, tous ces surnoms ont été remplacé par Bluetooth Smart Ready pour les hôtes, et Bluetooth Smart pour les capteurs. Deux implémentations:
Les chips bas-coût, single mode, intégrés et compacts permettent un mode ultra-basse consommation en attente, une découverte simplifiée et un transfert fiable de données sur des connexions sécurisées (AES encryption).
|
v4.1 | 04 dec 2013 |
|
v4.2 | 02 dec 2014 |
|
v5.0 Bluetooth 5 | prévue fin 2016 | La nouvelle version:
|
Fonctionnement du Bluetooth
Nous allons examiner le fonctionnement en suivant le diagramme en couches, en partant de la couche basse, la radio.
La couche Radio
La couche radio est gérée au niveau matériel. C'est elle qui s'occupe de l'émission et de la réception des ondes radio. Elle définit les caractéristiques telles que la bande de fréquence et l'arrangement des canaux, les caractéristiques du transmetteur, de la modulation, du récepteur, etc.
Le système Bluetooth opère dans les bandes de fréquences ISM (Industrial, Scientific and Medical) 2,4 GHz dont l'exploitation ne nécessite pas de licence. Cette bande de fréquences est comprise entre 2 400 et 2 483,5 MHz.
Deux modulations sont définies : une modulation obligatoire utilise une modulation de fréquence binaire pour minimiser la complexité de l'émetteur; une modulation optionnelle utilise une modulation de phase (PSK à 4 et 8 symboles). La rapidité de modulation est de 1 Mbaud pour toutes les modulations. La transmission duplex utilise une division temporelle.
Les 79 canaux RF sont numérotés de 0 à 78 et séparés par 1 MHz en commençant par 2 402 MHz. Le codage de l'information se fait par sauts de fréquence et la période est de 625 µs, ce qui permet 1 600 sauts par seconde.

Il existe trois classes de modules radio Bluetooth sur le marché.
La plupart des fabricants d'appareils électroniques utilisent des modules classe 2.
Classe | Puissance | Portée |
---|---|---|
1 | 100 mW (20 dBm) | 100 m |
2 | 2,5 mW (4 dBm) | <10 à 20 m |
3 | 1 mW (0 dBm) | Quelques m |
La bande de base
La bande de base (ou baseband en anglais) est également gérée au niveau matériel. C'est au niveau de la bande de base que sont définies les adresses matérielles des périphériques (équivalentes à l'adresse MAC d'une carte réseau). Cette adresse est nommée BD_ADDR (Bluetooth Device Address) et est codée sur 48 bits. Ces adresses sont gérées par la IEEE Registration Authority.
C'est également la bande de base qui gère les différents types de communication entre les appareils. Les connexions établies entre deux appareils Bluetooth peuvent être synchrones ou asynchrones, ces connexions sont appelées « Liens Logiques » (Logical Link). La bande de base peut donc gérer deux types majeurs de liens logiques :
- les liens SCO (Synchronous Connection-Oriented);
- les liens ACL (Asynchronous Connection-Less).
Les données transportées sur ces liens logiques sont sous forme de paquets. Il existe divers types de paquets et peuvent être utilisés par les deux liens logiques ou seulement par un seul type de lien. Chaque paquet est composé globalement de la même manière.
On retrouvera trois parties essentielles :
- Le code d'accès : 72 ou 68 bits
- L'entête (Header) : 54 bits
- La charge utile (Payload) : de 0 à 2745 bits.
Un mécanisme permet de corriger les erreurs pour certains paquets à l'aide de code correcteurs. De plus, les paquets avec CRC seront retransmis jusqu'à l'acquiescement par une ARQ automatic repeat request
Picoréseau (piconet)
Un picoréseau (on emploie également l'anglicisme piconet) est un mini-réseau qui se crée de manière instantanée et automatique quand plusieurs périphériques Bluetooth sont dans un même rayon. Un picoréseau est organisé selon une topologie en étoile : il y a un « maître » et plusieurs « esclaves ».
Un périphérique maître peut administrer jusqu'à :
- 7 esclaves actifs
- 255 esclaves en mode parked

La communication est directe entre le maître et un esclave. Les esclaves ne peuvent pas communiquer entre eux. Tous les esclaves du picoréseau sont synchronisés sur l'horloge du maître. C'est le maître qui détermine la fréquence de saut pour tout le picoréseau.
Inter-réseau Bluetooth (scatternet)
Les périphériques esclaves peuvent avoir plusieurs maîtres: les différents piconets peuvent donc être reliés entre eux. Le réseau ainsi formé est appelé un scatternet (littéralement réseau dispersé).

Le contrôleur de liaisons (LC)
Il encode et décode les paquets bluetooth selon la charge utile et les paramètres liés au canal physique, transport logique et liaisons logiques.
Le gestionnaire de liaisons (LM)
Il crée, gère et détruit les canaux L2CAP pour le transport des protocoles de services et les flux de données applicatives. Il utilise le protocole 2CAP pour interagir avec son homologue sur les équipements distants. Cette couche gère les liens entre les périphériques maîtres et esclaves ainsi que les types de liaisons (synchrones ou asynchrones).
C'est le gestionnaire de liaisons qui implémente les mécanismes de sécurité comme :
- l'authentification
- le pairage (l'association)
- la création et la modification des clés
- le chiffrement
L'interface de contrôle de l'hôte (HCI)
Cette couche fournit une méthode uniforme pour accéder aux couches matérielles. Son rôle de séparation permet un développement indépendant du matériel et du logiciel.
Les protocoles de transport suivants sont supportés :
- Universal Serial Bus (USB)
- PC-Card
- RS-232
- UART
HCI permet un transfert de données à débit maximum, soit 720 kbit/s pour la norme 1.2, et un débit trois fois plus élevé pour la norme 2.0+EDR.
La couche L2CAP
La couche L2CAP (Logical Link Control & Adaptation Protocol) fournit les services de multiplexage des protocoles de niveau supérieur et la segmentation et le réassemblage des paquets ainsi que le transport des informations de qualité de service. Les protocoles de haut niveau peuvent ainsi transmettre et recevoir des paquets jusqu'à 64 Ko. Elle autorise un contrôle de flux par canal de communication.
Les services
RFCOMM signifie Radio frequency communication. Ce service est basé sur les spécifications RS-232, qui émule des liaisons séries. Il peut notamment servir à faire passer une communication IP par Bluetooth. RFCOMM est utilisé lorsque le débit des données n'atteint pas plus de 360 kbit/s (par exemple, téléphones mobiles).
SDP signifie Service Discovery Protocol. Ce protocole permet à un appareil Bluetooth de rechercher d'autres appareils et d'identifier les services disponibles. Il s'agit d'un élément particulièrement complexe de Bluetooth.
OBEX signifie OBject EXchange. Ce service permet de transférer des objets grâce au protocole d'échange développé pour l'IrDA.
Normes et Profils
On retrouvera les normes "actives" sur le site Bluetooth Special Interest Group SIG, ainsi que les différents profils (=applications) existants, et il en existe pas mal, en voici quelques-uns pour illustration, mais n'hésitez pas à aller voir.
Les profils ont pour but d'assurer une interopérabilité entre tous les appareils Bluetooth. Ils définissent:
- la manière d'implémenter un usage défini
- les protocoles spécifiques à utiliser
- les contraintes et les intervalles de valeurs de ces protocoles
Par exemple:
- HDP Health Device Profile pour la santé, avec des éléments concernant:
- BLP, BLS pour la pression artérielle
- GLP, GLS pour le glucose
- HTP, HTS pour les thermomètres
- HRP, HRS pour le coeur
- ...
- A2DP (Advanced Audio Distribution Profile) pour envoyer de la musique, avec la particularité que ça marche dans un seul sens.
- FTP File Transfert Profile pour les fichiers
- SPP Serial Port Profile
- ...
Les connexions
Réaliser une connexion
Un appareil Bluetooth en discoverable mode (mode découverte) transmettra les informations suivantes sur demande:
- Nom
- Classe
- Liste de services
- Infos techniques: fabriquant, version Bluetooth, horloge...
N'importe quel appareil peut demander à se connecter ainsi qu'à répondre aux demandes. L'utilisation d'un service de l'appareil peut exiger l'appairage et l'acceptation par son propriétaire, mais la connexion elle-même peut être initiée par n'importe quel appareil tant qu'il est à portée. Certains appareils ne peuvent être connecté qu'à un seul autre appareil, et dans ce cas, ils n'apparaissent plus dans les requêtes jusqu'à déconnexion.
Tout appareil a une adresse unique codée sur 48 bits. Cependant, ces adresses n'apparaissent pas lors des requêtes. A la place, des noms usuels Bluetooth sont définis par les utilisateurs, et sont utilisés dans la liste des appareils appairés.
On se souviendra que ces noms usuels ont souvent par défaut le nom du téléphone,
par exemple T610. Du coup on peut avoir plusieurs T610 dans le coin, et se tromper
d'appareil (Bluejacking).

Appairage et liens (pairing and bonding)
Comme des données privées peuvent être diffusées par Bluetooth, il est nécessaire de contrôler qui peut se connecter. En même temps, il sera pratique que deux appareils puissent se connecter sans intervention, dès qu'ils sont à portée.
Pour résoudre ce conflit, Bluetooth établi un lien (bond), créé au travers de la séquence d'appairage (pairing). L'appairage est déclenché par une requête spécifique (add a Bluetooth device), ou automatiquement en se connectant à un service où l'identité est requise pour des raisons de sécurité.
L'appairage requiert la plupart du temps une interaction avec l'utilisateur pour confirmer l'identité. Une fois que le lien a été créé, il n'y a plus besoin de refaire la séquence de confirmation d'identité, à moins que l'utilisateur ne l'ai explicitement retiré.
Pour réaliser l'appairage, une clé secrète est partagée entre les deux appareils. Cette clé servira à se reconnaître lors des futures connexions en utilisant des algorithmes cryptographiques. Si la clé est détruite, alors le lien est perdu et il faudra recommencer le processus d'appairage. Il existe cependant certains services qui n'ont pas besoin d'authentification ou d'encryption, ce qui simplifie l'appairage.
Mécanisme d'appairage
L'appairage a considérablement changé depuis Bluetooth v2.1 et l'introduction du Secure Simple Pairing.
Avant la v2.0: Legacy Pairing
L'utilisation d'un PIN code est la seule méthode disponible: il faut entrer la même chaine de caractères sur chacun des deux appareils, avec certaines limitations:
- Appareils sans clavier: par exemple les oreillettes Bluetooth, qui comportent un code fixe (0000, 1234).
- Appareils avec clavier numérique: donc rien d'autre que des chiffres.
- Autres: le code peut être n'importe quelle chaîne de caractères (PC...).
Et il n'y a pas de moyen de savoir à l'avance les limitations de l'appareil, ce qui n'est pas très pratique.
Depuis la v2.1: Secure Simple Pairing
Cette méthode utilise un mécanisme de type clé publique. Plusieurs possibilités existent :
- Simple: aucune interaction utilisateur n'est requise, mais cependant une confirmation peut être demandée. Sert par exemple pour les oreillettes, et offre une meilleure sécurité que le PIN code, mais aucune protection contre les attaques du type homme du milieu (man in the middle).
- Comparaison numérique: si un affichage existe de chaque coté, et que l'un des deux a un bouton d'acceptation oui/non, alors on peut afficher un code à 6 chiffres de chaque coté, comparer manuellement et accepter.
- Code manuel: dans le cas d'un afficheur d'un coté et d'un clavier de l'autre, ou d'un clavier de chaque coté, alors on entrera le même code ou on recopiera le code affiché.
- Hors bande (OOB Out Of Band): la clé est transmise par un autre canal de communication comme le NFC par exemple.
L'attaque de type homme du milieu est évitée si une clé est échangée autrement que par le canal Bluetooth, manuellement ou par NFC (si le NFC est considéré comme sécurisé...).
Le SSP est considéré comme simple car il n'y a plus besoin de générer un mot de passe soi-même, et que pour certains appareils tout devient transparent. Le NFC peut être très pratique car l'appairage pourra se faire simplement lorsque les deux appareils seront proches.
On n'oubliera pas l'obligation d'être compatible avec les versions antérieures, ce qui veut dire que le mécanisme à PIN code doit être implémenté systématiquement.

Sécurité
Avant la version 2.1, le chiffrement n'était pas obligatoire et on pouvait l'enlever quand on voulait. De plus, après environ 23.5 heures, une attaque simple de type XOR permettait de trouver la clé. Pour arranger les choses, certaines opérations devant se dérouler en clair, il était difficile de savoir si le chiffrement était arrêté pour une raison valable ou si c'était une attaque...
Depuis la version 2.1:
- Le chiffrement est exigé pour toutes les opérations non-SDP (Service Discovery Protocol)
- Cependant, on peut arrêter le chiffrement seulement si on utilise l'Encryption Pause and Resume
- La clé de chiffrement doit être renouvellée avant expiration.
Les clés de chiffrement peuvent être stockées sur le système de fichier de l'appareil, pas forcément dans le chip de communication Bluetooth. On se souviendra que du point de vue sécurité, il faut protéger l'accès à ces clés... On se souviendra aussi que Bluetooth est susceptible d'être attaqué par pas mal de types d'attaques, et qu'il convient de réaliser une analyse de sécurité digne de ce nom, avec évaluation des menaces et consort, lorsque vous implémentez Bluetooth dans votre système. Rien de bien nouveau, comme d'habitude il ne faut pas faire une confiance aveugle et choisir en connaissance de cause.
- The Official Bluetooth Wireless Info Site
- The Official Bluetooth Membership Site (peu intérêt si vous n'êtes pas membre, sauf pour les normes).
- Wikipedia Bluetooth (français)
- Wikipedia Bluetooth (anglais)
- Wikipedia Wibree Bluetooth low energy