Le Bluetooth

Ainsi, vous croyez connaître le Bluetooth? Et 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.4GHz (= 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.0B1999

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.1802.15.1–2002
  • Beaucoup d'erreurs corrigées,
  • possibilité d'avoir des canaux non-encryptés,
  • RSSI Received Signal Strength Indicator
  • v1.2
    Classic
    802.15.1–2005
  • découverte et connexion plus rapides (jusqu'à 721 kbit/s)
  • usage de l'évasion de fréquence adaptative, améliorant la résistance aux interférences (évitement des fréquences encombrées)
  • Extended Synchronous Connections (eSCO) améliorant la qualité en retransmettant les paquets corrompus
  • Introduction du Flow Control and Retransmission Modes pour le L2CAP.
  • v2.0
    Enhanced Data Rate
    2004
  • Introduction de l'Enhanced Data Rate (EDR): vitesse nominale de 3 Mbit/s, en pratique 2.1 Mbit/s. EDR utilise une combinaison de GFSK et de Phase Shift Keying modulation (PSK, modulation par changement de phase) avec 2 variantes π/4-DQPSK and 8DPSK. EDR offre aussi une réduction de la consommation électrique.
  • EDR n'est pas obligatoire: on peut avoir des appareils 2.0 qui ne sont pas "rapides".
  • v2.1 Enhanced Data Rate26 juillet 2007
  • La principale nouveauté est le SSP secure simple pairing: une amélioration de l'appairage et de la sécurité.
  • Le EIR Extended inquiry response permet d'avoir plus d'info pendant la phase de requête pour mieux filtrer les appareils avant connexion.
  • v3.0
    High Speed
    21 avril 2009
  • Théoriquement, Bluetooth High Speed devrait permettre du 24 Mbit/s. Mais ce n'est pas Bluetooth qui transporte... Bluetooth permet de négocier et d'établir un lien sur du 802.11 (typiquement du WiFi), c'est le AMP (Alternate MAC/PHY).
  • Le High Speed n'est pas obligatoire, c'est une option.
  • 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:

  • Single mode: seul le protocole basse consommation est implémenté.
  • Dual mode: la fonctionnalité Low Energy est intégrée dans le contrôleur "Classic Bluetooth".
  • 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).

  • Core Specification Addendum 2 édité en 2011 contient des améliorations concernant l'audio Host Controller Interface, ainsi que pour le High Speed.
  • v4.1
    04 dec 2013
  • Amélioration software: Bluetooth Core Specification Addenda (CSA 1, 2, 3 & 4).
  • v4.2
    02 dec 2014
  • Introduction de quelques spécifications clés pour l'IoT, comme le Data Length Extension.
  • v5.0
    Bluetooth 5
    prévue fin 2016

    La nouvelle version:

  • quadruplera la portée
  • doublera la vitesse
  • augmentera la capacité d'émission de 800%

  • 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.


    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

    Il existe trois classes de modules radio Bluetooth sur le marché.

    La plupart des fabricants d'appareils électroniques utilisent des modules classe 2.

    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é).


    piconet

    scatternet

    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'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 :

    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:

    Par exemple:


    Les connexions

    Réaliser une connexion

    Un appareil Bluetooth en discoverable mode (mode découverte) transmettra les informations suivantes sur demande:

    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:

    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:

    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