58
Spécification Bluetooth. Sécurité. Benoît Calmels

Spécification Bluetooth. Sécurité. Benoît Calmels

Embed Size (px)

Citation preview

Page 1: Spécification Bluetooth. Sécurité. Benoît Calmels

Spécification Bluetooth. Sécurité.

Benoît Calmels

Page 2: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité Bluetooth – Bilan des faiblesses

Spécification Bluetooth.IntroductionLes différentes couchesMécanismes de découverte et connexion

La sécurité Bluetooth.Ce qu’on peut en attendre.Flexibilité, mise en place.Vulnérabilités

Quelques services (profiles)

Des nouveautés 2.1: EDR, Simple Pairing

Page 3: Spécification Bluetooth. Sécurité. Benoît Calmels

Introduction à Bluetooth

Spécification de communications sans fil, courte distance et faible consommation d’énergie, destinée à des éléments tels que PDA, téléphones, PC,…

Développé à l’origine par Ericsson; création en 1998 du Bluetooth Special Interest Group, avec Ericsson, IBM, Intel, Nokia, Toshiba. Aujourd’hui plus de 2000 entreprises y participent.http://www.bluetooth.org

Débit: Voix: 64kbps, Max 3 simultanément.Données: Symétrique: 433 kbps, Asymétrique: 723/57 kbps.

Distance de transmission: 10 ~ 30 mètres.

Page 4: Spécification Bluetooth. Sécurité. Benoît Calmels

CouchePhysique

Bande de fréquence des

2.4 GHz (micro-ondes)

ISM (Industrial, Scientific & Medical) sans licence.

Page 5: Spécification Bluetooth. Sécurité. Benoît Calmels

Introduction à Bluetooth Pile protocolaire:

Page 6: Spécification Bluetooth. Sécurité. Benoît Calmels

Couche Physique

Communication entre un maître et jusqu’à sept esclaves (piconet). Communication entre plusieurs piconet: scatternet.

Page 7: Spécification Bluetooth. Sécurité. Benoît Calmels

Couche physique

Time Division Duplex: Canal physique divisé en slots de 625μs. Communication alternée entre le maître et les esclaves.

Page 8: Spécification Bluetooth. Sécurité. Benoît Calmels

Couche physique

Possibilité d'émettre sur plusieurs slots (5 max)

Page 9: Spécification Bluetooth. Sécurité. Benoît Calmels

Couche physique

Canal de communication composé de 72 sauts de fréquences (Frequency Hopping): 1600 sauts par seconde.

Séquence de sauts définie à partir de l’adresse Bluetooth BD_ADDR du maître (48 bits). Position dans la séquence de saut (synchronisation) déterminée à l’aide de l’horloge du maître (27 bits).

Modulation de fréquence (Gaussian Frequency Shift Keying).

Page 10: Spécification Bluetooth. Sécurité. Benoît Calmels

Couche physique

Bluetooth enhanced : AFH Adaptive frequency Hopping V1.2 de la norme Améliorer la cœxistence avec WiFi (partage de la bande des 2,4GHz)

Pkt error rateSignal strength

Page 11: Spécification Bluetooth. Sécurité. Benoît Calmels

Couche Liaison (Baseband) 2 types de liens :

SCO : Synchronous Connection-Oriented linkQoS de type commutation de circuit : réservation de slots.Transport de la voix.64 kb/s. 1 Master et 3 esclavesTSCO: délai entre 2 envoies du Maître.

Esclave répond dans le slot suivant.Pas de CRC, jamais retransmis.

ACL : Asynchronous Connection-Less link.Transport de données.Utilise les slots non réservés par SCOGestion de la retransmission de paquets endommagés.Débits: Symétrique : 433.9 kbps, Asymétrique: (723.2kbps,

57.6kbps)

Page 12: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband

Adresse Bluetooth BD_ADDR48 bitsA la manière de IEEE802:

LAP: Lower Address Part

UAP: Uper Address Part

NAP: Non-significant Address Part

Ex: 00:80:98:24:53:BC

Page 13: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband

Format des paquets:

Page 14: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Access Code Access Code:

Identifie le canal de communication3 types:

CAC : Channel Access Code:– identification du piconet.– Généré à partir de l'@ du maître.

DAC : Device Access Code:– utilisé dans la phase de paging.– Généré à partir de l'@ de l'unité visée.

IAC : Inquiry Access Code :– utilisé dans la phase d'Inquiry– GIAC General IAC: utilisé pour la découverte d'autres unités– DIAC Dedicated IAC : utilisé pour la découverte des unités qui

partagent des caractéristiques communes.

Page 15: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Access Code Access Code:

Préambule:2 types suivant le 1er bit suivant.Éviter un courant continu pour faciliter la sync .

Page 16: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Access Code

Sync word:À partir des @ BluetoothDifférent suivant le type d'AC (IAC, DAC, CAC)

Trailer:2 types suivant le 1er bit précédent.Pas forcement présent dans DAC, IAC.Utile pour les paquets de synchronisation (FHS).

Page 17: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Header

AM_ADDRESS: adresse temporaire d'une unité active du piconet000 = broadcast.

Type:16 ≠Interprétation ≠ selon SCO ou ACL.Donne le nombre de slots occupés par le paquet.

Page 18: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Header/Type

Type (suite):

Paquets de contrôle

1 slot

3 slots

5 slots

Page 19: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Header/Type

Quelques paquets:ID: simplement Access Code DAC ou IAC: utilisé pour paging, inquiry. Donc pas dans le

tableau précédent (pas de Header!)…NULL: AC+Header, payload = 0. Utilisé pour Ack des données.POLL: AC+Header, payload = 0. Impose une réponse (Ack) de la part du correspondant.FHS: synchronisation: fournit l'horloge de l'émetteur et son @.DM1: contrôle et données sur SCO ou ACL.HV: dans les liens SCO: transport de la voix.DV: données et voix. Retransmission possible des données, pas de la voix.

DM: dans les liens ACL: data ou contrôle. FEC (correction) + CRC (détection)DH: idem DH, sans le FEC.

Page 20: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Header

FlowPour ACLContrôle de flux (STOP)

ARQNPour acquitter des données

SEQNPour s'assurer qu'on acquitte bien la bonne trame: alterné après chaque

transmission.Permet de détecter les doublons.

HEC : Header Error Check (cf CRC)

Page 21: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Payload

Payload SCO: 240 bits, pas d'en-tête Payload ACL:

Header: longueur de la charge utile, couche supérieure: LMP, L2CAP. 8 ou 16 bits.

Body: 0 - 339 octets.CRC : 16 bits.

Header Body CRC

Page 22: Spécification Bluetooth. Sécurité. Benoît Calmels

Baseband/Payload

Débits :

Page 23: Spécification Bluetooth. Sécurité. Benoît Calmels

Établissement de connexion:découverte du voisinage.

INQUIRYUnité "découvrable" dans l'état INQUIRY SCAN

Parcours une séquence de sauts de fréquence définie à partir d'une adresse de référence, partagée par tous (LAP: 0x9E8B33).

Séquence composée de 32 sauts. Change de fréquence tous les 1,28s Attend la réception d'un GIAC ou DIAC. Répond avec un paquet FHS (i.e. @ et horloge)

Unité qui effectue une découverte de réseau est dans l'état INQUIRY envoie des paquets ID, courts (simplement AC) envoie GIAC ou DIAC suivant le type d'unité cherché. n'envoie aucune info le concernant. durée de 10s max.

Page 24: Spécification Bluetooth. Sécurité. Benoît Calmels

Établissement de connexion

PagingUnité "connectable" dans l'état PAGE SCAN

Parcours une séquence de sauts de fréquence définie à partir de SON adresse bluetooth.

Séquence composée de 32 sauts. Change de fréquence tout les 1.28s écoute et attente de son DAC durant Tw page scan.

période de scan Tpage scan

Après réception, passe dans l'état "Slave Response" puis répond avec un paquet "ID" contenant son DAC. Attend alors un Paquet FHS.

1.28T w page scan

T page scan

f

t

Page 25: Spécification Bluetooth. Sécurité. Benoît Calmels

Établissement de connexion

PagingUnité cherchant à se connecter dans l'état PAGE

Envoi un "page" i.e. un paquet ID avec le DAC de l'équipement cible.– séquence de saut: connaît LAP (dérive de la BD_ADDR du futur esclave), suite

à Inquiry ou mémorisé lors d'une communication antérieure.– phase :possède l'horloge (suite à Inquiry) du futur esclave ou approximation de

l'horloge (mémorisée lors d'une communication précédente, mais dérive).

Utilisation de trains de fréquences, centrés autour de la fréquence supposée:– trains A : f(k-8)… f(k).. f(k+7)– trains B : f(k-16).. f(k-9), f(k+8)…f(k+15)

Page 26: Spécification Bluetooth. Sécurité. Benoît Calmels

Établissement de connexion

PagingUnité cherchant à se connecter dans l'état PAGE

paquets ID très courts : on en envoie 2 par slots

attente d'une réponse ID avec le DAC du futur esclave

répond avec un paquet FHS et passe dans l'état "Master Response"

Page 27: Spécification Bluetooth. Sécurité. Benoît Calmels

Établissement de connexion

Page 28: Spécification Bluetooth. Sécurité. Benoît Calmels

Établissement de connexion

Page 29: Spécification Bluetooth. Sécurité. Benoît Calmels

Établissement de connexion

Page 30: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité Bluetooth – Bilan des faiblesses

Spécification Bluetooth.IntroductionLes différentes couchesMécanismes de découverte et connexion

La sécurité Bluetooth.Ce qu’on peut en attendre.Flexibilité, mise en place.Vulnérabilités

Quelques services (profiles)

Des nouveautés 2.1: EDR, Simple Pairing

Page 31: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité

Assurer la sécurisation de la couche liaisonAuthentification des unités Bluetooth.Confidentialité des échanges.

3 niveaux pour mettre en place de façon flexible ces mécanismes:Mode 1: Pas de sécuritéMode 2: Sécurité au niveau service (après l’établissement de la connexion

L2CAP). Mise en place d’un security manager qui gère les accès aux différents services:

Ouvert à tous.Authentification nécessaire.Authentification et Autorisation nécessaires.

Mode 3: Sécurité au niveau liaison (LMP)

Page 32: Spécification Bluetooth. Sécurité. Benoît Calmels

Security Manager:

Page 33: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité

Éléments intervenants:BD_ADDR (48 bits).Clefs de liaison (128 bits).

KAB: combination key.

KA: unit key.

KMASTER: master key.

KINIT: initialisation key.

Clefs de chiffrement KC (8-128 bits).

Aléas (128 bits).PIN (8-128 bits).

Page 34: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité

Mise en place: Association de deux unités Bluetooth (bonding)

Création d’une clef d’initialisation.Création d’une clef de liaison.Échange de la clef de liaison.Authentification.Création d’une clef de chiffrement (optionnel).

pairing.

Connexion d’unités déjà associées préalablement (possèdent déjà une clef de liaison):

Authentification.Création d’une clef de chiffrement (optionnel).

Page 35: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité

Génération des clefs: utilisation de SAPHER+, Cylink.Chiffrement par blocs de 128 bits.Candidat à l’AES, NESSIE.Utilisé dans :

E1 (Authentification).

E21(Unit key, Combination key).

E22 (Initialisation, clef de groupe).

E3 (clef de chiffrement).

Légère Modification de SAFER+ pour empêcher une réversibilité.

Page 36: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité

E0: Chiffrement par flux:

Composition:IV: Kc (8-128 bits), BD_ADDR (48 bits), aléa (128), horloge (26).Quatre LFSR: 25, 31, 33 et 39 bits.Un mélangeur.2 niveaux.

texte chiffré+IV

texte clair

G

Verschiffrant

Page 37: Spécification Bluetooth. Sécurité. Benoît Calmels

Niveau 1: initialisation du niveau 2

Niveau 2: vers chiffrant

Page 38: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité

Chiffrement de la payload:

Format de la payload:

Page 39: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité Authentification, pairing

A,B honnêtes, C attaquant.

- Génération de KINIT:

Une seule donnée secrète: le code PIN.

A B

IN_RANDA

E22

KINIT

IN_RANDA

PIN & BD_ADDRB

LE22

IN_RANDA

PIN & BD_ADDRB

L

KINIT

iMac C

Page 40: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité

- Création et échange de la clef de liaison:

Échanges d’aléas chiffré par KINIT (Xor).

- Authentification de B par A:

Page 41: Spécification Bluetooth. Sécurité. Benoît Calmels

Faiblesses protocolaires

Conséquences:Confidentialité perdue.Si C peut modifier sa BD_ADDR, une imposture est possible.Imposture possible sans avoir à recommencer une phase de pairing.Attaque réalisée off-line.

Difficulté de réalisation:Écoute de la phase de pairing.PIN code « faible ».

Parades:Éviter les endroits publics pour la phase d’appariement.Couche logicielle.PIN bien choisi.

Page 42: Spécification Bluetooth. Sécurité. Benoît Calmels

Faiblesses protocolaires

Complexité des PINs:

Taille du PIN \ Caractères utilisés Chiffres (10) Chiffres+Alphabet (36) Chiffres+Alphabet+Casse (62)

4 caractères _ _ _ _ 2 1̂3 2 2̂1 2 2̂410 caractères _ _ _ _ _ _ _ _ _ _ 2 3̂3 2 5̂2 2 6̂0

12 caractères _ _ _ _ _ _ _ _ _ _ _ _ 2 4̂0 2 6̂2 2 7̂116 caractères _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2 5̂3 2 8̂3 2 9̂5

Page 43: Spécification Bluetooth. Sécurité. Benoît Calmels

Faiblesse des Unit Keys

3 unités A (ressources limités), B, C. Pairing de A avec C:

Création de KINIT.

A calcule KA à partir d’un aléa et de sa BD_ADDR avec E21.A négocie et fournit KA à C, qui devient la clef de liaison.

Conclusion:C peut désormais écouter et déchiffrer toutes les conversations de A.Si C peut modifier sa BD_ADDR, il peut réaliser des impostures.C n’est pas obligé de s’appairer avec A, s’il utilise l’attaque précédente

(pairing).

Parades:Utilisation des Combination Keys s’il n’y a pas de contraintes matérielles

réelles.

Page 44: Spécification Bluetooth. Sécurité. Benoît Calmels

Déni de service

Temps d’attente après un échec de la phase d’appariement:Usurper l’identité d’un utilisateur légitime et effectuer des tentatives de

connexion avec de mauvais paramètres (PIN/clefs erronés): le temps d’attente croît exponentiellement

Sur-consommation d’énergie.

Page 45: Spécification Bluetooth. Sécurité. Benoît Calmels

Cryptanalyse de E0

Hypothèse de travail à clair connu

Saarinen:Complexité de 2100, avec 125 bits de message connu.

Jakobsson et WetzelComplexité de 266, avec 266 bits de message connu.

Fluhrer et LucksComplexité de 284 pour 132 bits de message connu.Complexité de 273 pour 243 bits connus.

KrauseComplexité de 277 pour 128 bits de connu.

Études théoriques, restent inapplicables aujourd’hui car trop complexes, ou nécessitent trop de clair connu.

Page 46: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité Bluetooth – Bilan des faiblesses

Spécification Bluetooth.IntroductionLes différentes couchesMécanismes de découverte et connexion

La sécurité Bluetooth.Ce qu’on peut en attendre.Flexibilité, mise en place.Vulnérabilités

Quelques services (profiles)

Des nouveautés 2.1: EDR, Simple Pairing

Page 47: Spécification Bluetooth. Sécurité. Benoît Calmels

Link Manager Protocol

Commandes pour la gestion de la connexion ou de la sécuritéLMP_encryption_key_size_reqLMP_switch_roleLMP_max_powerLMP_name_req

Page 48: Spécification Bluetooth. Sécurité. Benoît Calmels

L2CAP

Logical Link Control and Adaptation ProtocolProtocol multiplexing: car non géré au niveau de la Baseband (pas de champs

"type").Segmentation et réassemblement : gérer les données des couches supérieures

en fonction des différentes MTU possibles.Utilisation de Channels pour identifier les flux.

Page 49: Spécification Bluetooth. Sécurité. Benoît Calmels

SDP

Service Discovery ProfileDonne les services disponibles sur un équipement, et le moyen de les obtenir.Service Class : donne le type de service (printer, headset, …) en fonction d'un code:

Classe de service UUID

Headset 0x1108

Generic Audio 0x1203

Cordless Telephony 0x1109

GenericTelephony 0x1204

Page 50: Spécification Bluetooth. Sécurité. Benoît Calmels

Sécurité Bluetooth – Bilan des faiblesses

Spécification Bluetooth.IntroductionLes différentes couchesMécanismes de découverte et connexion

La sécurité Bluetooth.Ce qu’on peut en attendre.Flexibilité, mise en place.Vulnérabilités

Quelques services (profiles)

Des nouveautés 2.1: EDR, Simple Pairing, Security mode 4

Page 51: Spécification Bluetooth. Sécurité. Benoît Calmels

Nouveautés 2.1

26 juillet 2007, 1420 pages

Enhanced Data Rate : 2 Mbps et 3 Mbps

Simple pairing

Security mode 4

Page 52: Spécification Bluetooth. Sécurité. Benoît Calmels

Simple pairing - Objectifs

Simplifier la procédure pour l’utilisateur

Améliorer la sécuritéAttaques par écoute passive

On n’utilise plus de PIN choisi par l’utilisateur comme source d’entropie.

Utilisation des courbes elliptiques Diffie Hellman (ECDH) , mécanisme à clef publique.

Attaque de type MIMEnvoie/récéption de messages validé par l’utilisateur : permet de

confirmer qu’on travaille avec les bonnes clefs publiques.Communication hors bande

-> Dépend du « modèle d’association »

Page 53: Spécification Bluetooth. Sécurité. Benoît Calmels

Simple pairing

4 modèles d’association :Comparaison de nombresDirectHors bandeEntrée de mot de passe

Page 54: Spécification Bluetooth. Sécurité. Benoît Calmels

Simple pairing

Dans le détail : 4 phases1. Echange des clefs publiques Diffie Hellman

2. Authentification : phase 1 (dépendant du modèle)– 3 types :

– Comparaison de nb– Hors bande– Entrée de mot de passe

– Objectif : vérifier la validité de la clef publique

Page 55: Spécification Bluetooth. Sécurité. Benoît Calmels

Simple pairing

Dans le détail : 4 phases

3. Authentification : phase 2– Confirmation du bon déroulement de la phase 1– Commun à tous les modèles

4. Calcul de la Link key– f(DH,Aléas, BDaddr), identique pour les 2 équipements

Page 56: Spécification Bluetooth. Sécurité. Benoît Calmels

Simple pairing

Exemple : échange de clef par NFC

Page 57: Spécification Bluetooth. Sécurité. Benoît Calmels

Security mode 4

Prise en compte du Simple Pairing Protocol.

Mise en place de la sécurité dès l’établissement de la communication (comme security mode 3).

Flexibilité dans les modes de sécurité (comme mode 2) :Clef de liaison authentifiée requise

- Avec le Simple Pairing, hors modèle « direct »Clef de liaison non authentifiée requise

- Ancien pairingPas de sécurité

Page 58: Spécification Bluetooth. Sécurité. Benoît Calmels

Bluetooth

Pour aller plus loin:http://www.bluetooth.org