BLE-Grundlagen
Architektur, Protokollstapel und GATT-Hierarchie von Bluetooth Low Energy
Lernziel
Nach dieser Seite weißt du, wie BLE intern aufgebaut ist — vom Funksignal bis zum Anwendungsbefehl. Du kennst die Schichten des Protokollstapels, verstehst die GATT-Hierarchie und weißt, welche Sicherheitsstufen BLE bietet. Dieses Wissen ist das Fundament für alle folgenden Kapitel.
Der Protokollstapel — das Stockwerk-Modell
Stell dir BLE wie ein Hochhaus vor. Jedes Stockwerk hat eine klare Aufgabe und kommuniziert nur mit dem Stockwerk direkt darüber und darunter. Gemeinsam ermöglichen sie, dass dein Smartphone einer smarten LED-Lampe sagt: "Werde rot."
BLE wurde 2010 mit der Bluetooth-4.0-Spezifikation eingeführt und ist vollständig von Classic Bluetooth (dem Audio-Bluetooth) getrennt. Der Stapel teilt sich in zwei Subsysteme: den Controller für alles Hardwarenahe und den Host für die Anwendungslogik.
Controller vs. Host
Der Controller sitzt im Bluetooth-Chip und kümmert sich um Funksignale und Timing. Der Host läuft als Software und versteht die Bedeutung der Daten. Das HCI verbindet beide — deshalb kann man sie auch physisch trennen, zum Beispiel auf USB-Dongles.
Physical Layer (PHY) — das Erdgeschoss
Der Physical Layer ist das unterste Stockwerk: das eigentliche Funksignal. BLE nutzt das lizenzfreie 2,4-GHz-ISM-Band (dasselbe wie WLAN und Mikrowellen). Um Störungen zu vermeiden, wechselt BLE ständig die Frequenz — ein Verfahren namens Frequency Hopping.
BLE teilt das Band in 40 Kanäle auf, je 2 MHz breit:
- 3 Advertising-Kanäle (Kanäle 37, 38, 39): Für Ankündigungen und Verbindungsaufbau
- 37 Datenkanäle: Für die eigentliche Kommunikation nach dem Verbindungsaufbau
Die Datenrate beträgt 1 Mbit/s oder 2 Mbit/s — deutlich langsamer als WLAN, aber völlig ausreichend für Sensorwerte und Steuerbefehle.
Link Layer (LL) — der Hausmeister
Der Link Layer verwaltet den Zustand jeder Verbindung. Er kennt nur wenige Zustände: Standby, Advertising, Scanning, Initiating und Connected. Er ist verantwortlich für:
- Adressierung: Jedes BLE-Gerät hat eine 48-Bit-Adresse (öffentlich oder zufällig)
- Paketformatierung: Aufbau und Prüfung der Datenpakete
- Timing: Synchronisation zwischen Sender und Empfänger
- Verschlüsselung: AES-128-CCM für gesicherte Verbindungen
Warum Advertising-Kanäle 37, 38, 39?
Diese drei Kanäle liegen bewusst zwischen den WLAN-Kanälen 1, 6 und 11, die am häufigsten genutzt werden. So minimiert BLE Interferenzen mit WLAN-Netzwerken in der Umgebung.
HCI — die Telefonzentrale
Das Host Controller Interface (HCI) ist die standardisierte Schnittstelle zwischen Controller und Host. Es definiert einen Befehlssatz, über den der Host den Controller steuert. Wichtig für die Sicherheitsanalyse: Über HCI lassen sich Rohdaten mitlesen — Tools wie Wireshark nutzen genau das.
L2CAP — der Paketverteiler
Das Logical Link Control and Adaptation Protocol (L2CAP) löst ein praktisches Problem: BLE-Pakete dürfen maximal 27 Byte Nutzdaten tragen. L2CAP zerschneidet größere Nachrichten in passende Stücke (Fragmentierung) und setzt sie beim Empfänger wieder zusammen (Reassemblierung).
SMP — der Sicherheitsbeauftragte
Das Security Manager Protocol (SMP) regelt alles rund um Authentifizierung und Verschlüsselung:
- Aushandlung der Pairing-Methode
- Erzeugung und Verteilung kryptografischer Schlüssel
- Verwaltung von drei Schlüsseltypen: LTK (Long Term Key für Verschlüsselung), IRK (Identity Resolving Key für Adressen-Datenschutz), CSRK (Connection Signature Resolving Key für Datensignierung)
ATT — das Datenbankprotokoll
Das Attribute Protocol (ATT) funktioniert nach dem Client-Server-Prinzip. Das Gerät (z.B. ein Sensor) ist der Server und stellt Daten bereit. Die App ist der Client und fragt Daten ab oder sendet Befehle. Jeder Datenpunkt hat einen eindeutigen 16-Bit-Handle — eine Art Hausnummer in der Gerätedatenbank.
GATT — das Anwendungs-Framework
Das Generic Attribute Profile (GATT) baut auf ATT auf und bringt Struktur in die rohen Handles. GATT definiert, wie Daten in Services und Characteristics organisiert werden — mehr dazu im nächsten Abschnitt.
GAP — der Reiseführer
Das Generic Access Profile (GAP) regelt, wie Geräte sich ankündigen und finden. Es steuert:
- Advertising: Gerät sendet Pakete, um gefunden zu werden
- Scanning: Gerät sucht nach Advertising-Paketen
- Verbindungsaufbau: Wer initiiert die Verbindung, wer akzeptiert sie
- Sicherheitsinitiierung: Wann wird Pairing gestartet
Anwendungsprofile definieren, wie Geräte miteinander interagieren. GAP steuert Geräteerkennung und Verbindungsaufbau, während GATT das Datenaustauschformat über Services und Characteristics festlegt.
Die Host-Schicht verwaltet logische Verbindungen, Sicherheit und Datenformatierung. ATT liefert das attributbasierte Datenmodell, SMP übernimmt Pairing und Schlüsselverteilung, und L2CAP multiplext logische Kanäle.
Das HCI ist die standardisierte Schnittstelle zwischen Host (Software) und Controller (Hardware). Es definiert Befehle, Ereignisse und Datenpakete, die zwischen den beiden Schichten ausgetauscht werden.
Der Controller übernimmt die gesamte Funkkommunikation. Der Link Layer steuert Advertising, Scanning, Verbindungszustandsautomaten und Paketformatierung. Die PHY-Schicht kümmert sich um die eigentliche 2,4-GHz-Funkübertragung.
Auf welchem Frequenzband arbeitet BLE?
GATT-Hierarchie — das Dateiverzeichnis des Geräts
GATT organisiert die Daten eines BLE-Geräts in einer klaren Dreistufenhierarchie. Stell es dir wie ein gut strukturiertes Bürogebäude vor:
Gerät
└── Service "Herzfrequenz" (UUID: 0x180D)
├── Characteristic "Herzfrequenz-Messung" (UUID: 0x2A37)
│ ├── Value: [0x06, 0x4B] ← der eigentliche Wert
│ └── Descriptor CCCD (UUID: 0x2902) ← Benachrichtigungen an/aus
└── Characteristic "Sensor-Position" (UUID: 0x2A38)
└── Value: [0x01] ← "Brust"
Services — die Abteilungen
Ein Service fasst zusammengehörige Funktionen unter einer UUID (Universally Unique Identifier) zusammen. Es gibt zwei Arten:
-
16-Bit-UUIDs für von der Bluetooth SIG standardisierte Services, z.B.:
0x180D— Heart Rate Service0x180F— Battery Service0x1800— Generic Access Service
-
128-Bit-UUIDs für herstellerspezifische Services, z.B.:
0000FFF0-0000-1000-8000-00805F9B34FB— proprietärer Steuerservice einer LED-Brille
128-Bit-UUIDs sind ein Hinweis auf proprietäre Protokolle
Wenn du bei der Analyse ein Gerät mit 128-Bit-UUIDs siehst, bedeutet das: Der Hersteller hat kein Standardprotokoll verwendet. Das Protokoll musst du selbst rekonstruieren — und oft fehlt dabei jede Dokumentation. Das ist gleichzeitig eine Chance und eine Warnung: Proprietäre Protokolle sind häufig schlechter durchdacht.
Characteristics — die Akten
Eine Characteristic ist der eigentliche Datenpunkt. Sie besteht aus:
- Declaration: Enthält Properties (Zugriffsrechte) und den Handle
- Value: Der rohe Datenwert (bis zu 512 Byte)
- Descriptors: Optionale Metadaten
Die Properties bestimmen, was ein Client mit der Characteristic tun darf:
| Property | Bedeutung |
|---|---|
| Read | Client kann den Wert lesen |
| Write | Client kann schreiben (mit Bestätigung) |
| Write Without Response | Schreiben ohne Bestätigung (schneller, aber unsicher) |
| Notify | Gerät sendet Werte automatisch, ohne Bestätigung |
| Indicate | Gerät sendet mit Bestätigung |
Descriptors — die Post-its
Descriptors liefern Metadaten zu einer Characteristic. Der wichtigste ist der Client Characteristic Configuration Descriptor (CCCD) mit der UUID 0x2902. Über ihn aktiviert der Client Notifications oder Indications — also: "Sag mir Bescheid, wenn sich dieser Wert ändert."
CCCD in der Praxis
Wenn du in Wireshark ein "Write Request" auf Handle 0x2902 siehst mit dem Wert 0x0100, hat die App gerade Notifications für eine Characteristic aktiviert. Das ist oft der erste Schritt in einer BLE-Sitzung.
GATT-Operationen
Die fünf zentralen Operationen sind:
- Read: Client fragt einen Wert ab — Gerät antwortet
- Write: Client sendet einen Wert — Gerät bestätigt den Empfang
- Write Without Response: Client sendet, keine Bestätigung
- Notify: Gerät sendet selbstständig neue Werte — Client bestätigt nicht
- Indicate: Gerät sendet — Client muss bestätigen
GATT Profile
Welche UUID identifiziert den Client Characteristic Configuration Descriptor (CCCD)?
BLE-Sicherheitsmechanismen
Jetzt wo du die Architektur kennst, schauen wir uns an, wie BLE Sicherheit implementiert — und wo die Schwachstellen liegen.
Security Modes und Levels
Die Bluetooth-Spezifikation definiert zwei Security Modes:
Security Mode 1 (verschlüsselungsbasiert) hat vier Stufen:
| Level | Name | Schutz |
|---|---|---|
| Level 1 | No Security | Keine Verschlüsselung, keine Authentifizierung |
| Level 2 | Unauthenticated Encryption | Verschlüsselung ohne MITM-Schutz |
| Level 3 | Authenticated Encryption | Verschlüsselung + MITM-Schutz durch authentifiziertes Pairing |
| Level 4 | LE Secure Connections | Höchste Stufe: ECDH, AES-CCM, FIPS-konform (seit Bluetooth 4.2) |
Security Mode 2 ergänzt signaturbasierte Zugriffskontrolle auf Datenschicht — wird in der Praxis selten eingesetzt.
Level 1 ist erschreckend verbreitet
Viele IoT-Geräte — auch kommerziell erfolgreiche Produkte — operieren auf Level 1: keine Verschlüsselung, keine Authentifizierung. Jeder in Reichweite kann die Kommunikation mitlesen und Befehle senden. Die Analyse in diesem Guide zeigt, dass das keine Ausnahme ist.
Pairing — der Schlüsselaustausch
Pairing ist der Prozess, bei dem zwei Geräte kryptografische Schlüssel austauschen, um eine sichere Verbindung aufzubauen. Er läuft in drei Phasen ab:
- Feature Exchange: Geräte tauschen Fähigkeiten aus (Display vorhanden? Tastatur? NFC?)
- Schlüsselerzeugung: Je nach Fähigkeiten wird ein Verfahren gewählt
- Schlüsselverteilung: LTK, IRK und CSRK werden verteilt
Es gibt vier Association Models (Pairing-Methoden):
Just Works Kein Benutzereingriff nötig. Der Temporary Key (TK) wird auf 0 gesetzt. Das klingt praktisch — ist aber das unsicherste Verfahren: bietet keinen Schutz gegen Man-in-the-Middle-Angriffe (MITM). Jeder kann passiv mithören und die Schlüssel ableiten.
Passkey Entry Eine 6-stellige PIN wird auf einem Gerät angezeigt und auf dem anderen eingegeben. Bietet MITM-Schutz, da ein Angreifer die PIN kennen müsste. Schwachstelle: 10^6 = 1.000.000 mögliche PINs — bei einem Offline-Angriff mit schneller Hardware in Minuten geknackt.
Numeric Comparison Beide Geräte zeigen dieselbe 6-stellige Zahl an und der Nutzer bestätigt. Verwendet ECDH für den eigentlichen Schlüsselaustausch. Deutlich sicherer als Passkey Entry.
Out of Band (OOB) Der Schlüsselaustausch erfolgt über einen externen Kanal, z.B. NFC oder QR-Code. Sehr sicher, aber selten in günstigen IoT-Geräten implementiert.
LE Secure Connections vs. Legacy Pairing
Vor Bluetooth 4.2 gab es nur "Legacy Pairing". Dabei wird der Temporary Key über den Funkkanal abgeleitet — ein Angreifer der die Pairing-Phase mithört, kann alle späteren Verbindungen entschlüsseln. "LE Secure Connections" (seit BT 4.2) nutzt ECDH und ist deutlich resistenter gegen passive Angriffe.
Bonding — das Gedächtnis
Bonding bedeutet, dass die ausgetauschten Schlüssel dauerhaft gespeichert werden. Bei der nächsten Verbindung müssen die Geräte nicht erneut pairen — sie erkennen sich anhand des gespeicherten LTK. Das ist der Unterschied zwischen "pairen" (einmalig) und "gebondet sein" (dauerhaft gespeichert).
Zusammenfassung
- BLE nutzt das 2,4-GHz-ISM-Band mit 40 Kanälen (3 Advertising, 37 Daten)
- Der Protokollstapel besteht aus PHY, Link Layer, HCI, L2CAP, SMP, ATT, GATT und GAP
- GATT organisiert Gerätedaten in der Hierarchie: Services → Characteristics → Descriptors
- 16-Bit-UUIDs sind standardisiert; 128-Bit-UUIDs sind herstellerspezifisch
- Security Mode 1 hat vier Stufen — Level 1 bietet keine Sicherheit
- Just Works ist das unsicherste Pairing-Verfahren, LE Secure Connections das sicherste
- Bonding speichert Schlüssel dauerhaft für spätere Verbindungen
Was ist der Hauptunterschied zwischen Just Works und Passkey Entry?