# Concepts

## Sécurité Bluetooth : Coupler des périphériques

### Qu'est-ce que le "Couplage" ?

Très souvent il est nécessaire pour un périphérique de s'authentifier lui-même quand il veut accéder à un service. Dans ce cas les deux périphériques doivent être couplés. Quand deux périphériques sont couplés, ils peuvent être sûrs de l'identité de l'autre partie. Sans couplage, vous devriez vous fier à l'adresse ou le nom de l'autre périphérique, qui peut être falsifiée facilement.

Le couplage n'est effectué la plupart du temps qu'une seule fois entre 2 périphériques. Après le couplage, les connexions entre les deux périphériques seront automatiquement authentifiées.

Habituellement le processus de couplage sera lancé automatiquement quand il est nécessaire. Vous n'avez pas à vous inquiéter à propos d'un périphérique qui n'est pas couplé si vous voulez accéder à ses services. Si ils essaient de s'authentifier, mais échouent, le processus de couplage sera lancé automatiquement.

### Comment cela fonctionne-t-il ?

Mes périphériques sont couplés pour être sûrs de l'identité de l'autre partie. Mais si la première étape ne peut être effectuée automatiquement. Vous devez vous assurer de connaître qui veut se coupler avec votre périphérique. Cela est fait en entrant un code "PIN" dans les deux périphériques. La notion de "PIN" est largement utilisée, mais pas toujours à bon escient. Ce n'est pas le code PIN de votre carte bleue ou de votre carte SIM. Vous n'avez pas besoin de vous en souvenir. Et après que le couplage soit terminé vous n'avez pas besoin de le garder secret. Vous devez juste vous assurez que personne d'autre ne le connaisse avant que vous (ou vous deux) n'ayez saisi ce numéro dans chaque périphérique.

Pour être en sécurité, vous ne devriez pas seulement garder le PIN secret durant le couplage, mais vous devriez aussi utiliser un numéro aléatoire, qui ne peut être trouvé facilement. KDE Bluetooth vous assiste ici en créant un nombre aléatoire à 8 chiffres lui-même si c'est possible. Vous pouvez aussi utiliser des lettres pour un pin, mais vous pourriez avoir des problèmes lors de la saisie sur le clavier de votre téléphone portable.

### L'assistant à la saisie du code PIN

Mais où le code Pin doit-il être saisi ? Comme c'était noté précédemment, les périphériques vous demanderont simplement le code PIN quand il sera nécessaire. Pour BlueZ, les choses sont un petit peu plus compliquées. Il y a plusieurs manières pour BlueZ d'obtenir le code PIN de l'utilisateur.

La manière habituelle est de configurer le hcid de BlueZ pour qu'il utilise un"Assistant à la saisie du code PIN" et de mettre "security user;" dans `/etc/bluetooth/hcid.conf`. Cet assistant est un petit programme qui ne fait rien de plus que vous demander un numéro et de le faire sortir sur stdout. Bluez fournit son propre assistant appelé "bluepin", qui semble causer beaucoup de problèmes. Alors il y a un assistant plus pratique appelé "bluez-pin" et ce n'est pas tout il y a l'assistant de kdebluetooth : "kbluepin". Veuillez vous reporter aux instructions d'installation pour savoir comment mettre en place l'assistant et que faire si ça ne marche pas.

### Gérer des périphériques couplés

Après avoir couplé beaucoup de périphériques, vous pourriez vous demander quels périphériques sont couplés et lesquels ne le sont pas. Vous pouvez aussi vouloir supprimer un couplage. Les réponses sont la plupart du temps des mauvaises nouvelles.

Tout d'abord, aucun périphérique ne peut connaître efficacement avec quels périphériques il est couplé. Quand deux périphériques sont couplés, ils partagent une clé secrète qui a été créée durant le processus de couplage, qui est basée sur le pin et d'autres ingrédients. Étant donné que l'autre côté peut décider de supprimer cette clé sans le notifier, avoir une clé pour un périphérique donné ne garantit pas que la clé existe toujours de l'autre côté. Si une clé n'est plus, le couplage n'est plus. Bien sûr vous pouvez être sûr que vous n'êtes pas couplé avec un périphérique si vous n'avez pas de clé pour lui.

Alors comment les liens peuvent-ils être supprimés ? Cela dépend du périphérique. La plupart des téléphones ou PDA ont une liste des périphériques "couplés" ou "sûrs", où vous pouvez supprimer un élément. Pour la version actuelle de Bluez utils (2.6), les clés sont stockées habituellement dans le fichier `/etc/bluetooth/link_key`. Étant donné que les clés doivent être gardées secrètes, le fichier n'est accessible qu'en root. Vous pouvez supprimer ce fichier, mais alors tous vos couplages seront perdus. Et étant donné que ce fichier est binaire, vous ne pouvez pas facilement l'éditer sans outil spécifique. Actuellement, kdebluetooth ne contient pas d'outil pour lire ou écrire ce fichier, car la manipulation des clés par Bluez changera tôt (ou tard).

Il y a un ennui spécial impliqué, quand vous basculez fréquemment entre différents systèmes d'exploitation qui utilisent bluetooth (Linux/Windows habituellement) : quand vous couplez votre téléphone sous Linux et démarrez alors Windows, Windows ne connaîtra rien des clés gérées par BlueZ. Cela apparaîtra donc comme si l'ordinateur avait perdu les clés et vous devrez vous coupler de nouveau. Selon les périphériques il peut être possible ou pas de se coupler de nouveau sans supprimer "l'ancienne" clé sur votre téléphone auparavant. Vous pouvez rencontrer le même problème avec Bluez lui-même si vous sélectionnez "pairing single;" dans `/etc/bluetooth/hcid.conf`. Pour le moment soyez conscient de ce problème, n'utilisez pas Bluetooth sous deux OSes ou utilisez un adaptateur Bluetooth différent pour chaque OS. Il devrait aussi être possible de déplacer les clés entre windows et linux mais je ne connais aucun outil capable de faire cela.