Ein Bluetooth Beacon ist ein Lautsprecher in einem vollen Raum: Es sendet dasselbe Paket an alle in Reichweite, standardmaessig ohne Pairing und ohne Authentifizierung. Diese Offenheit macht Beacons billig und leicht auszubringen – bedeutet aber auch, dass jeder mit einem Handy den Beacon-Verkehr lesen, klonen oder faelschen kann. Dieser Artikel kartet das reale Bedrohungsmodell eines Bluetooth Beacon und die Engineering-Massnahmen, die einen Angreifer wirklich stoppen.
Warum ein Beacon von Design her exponiert ist
Ein Beacon bewirbt sich, um gehoert zu werden. Advertising-Pakete sind fuer jeden Scanner lesbar, und die Nutzlast (iBeacon-UUID/Major/Minor, Eddystone-Namespace/Instance oder eine eigene MSD) wird im Klartext gesendet, sofern Sie sie nicht explizit verschluesseln. Beim Advertising wird kein Schluessel ausgehandelt, also kann das Funkgeraet eine legitime Gateway nicht von einem fremden Handy unterscheiden.
Das Bedrohungsmodell
| Bedrohung | Was der Angreifer tut | Was kaputtgeht |
|---|---|---|
| Abhoeren | Protokolliert Advertising passiv | Privatsphaere, Standortleck |
| Spoofing | Sendet falschen Beacon mit Ihren IDs | Praesenzbetrug, Trigger-Missbrauch |
| Replay | Nimmt gueltiges Paket auf, sendet spaeter | Illusion „noch da“ |
| MITM / falsche Gateway | Gibt Uplink als Gateway aus | Dateninjektion, Manipulation |
Abhoeren: Klartext verraet Standort
Ein Standard-iBeacon-Frame traegt eine feste UUID plus Major/Minor, die oft Etage, Zone oder Anlageklasse kodieren. Ein Angreifer in der Lobby protokolliert die UUIDs und hat am Nachmittag eine Karte Ihrer Zonen. Gegenmassnahmen: opake, rotierende IDs nutzen; nie sinnvolle Daten in statische Felder; die echte Zuordnung serverseitig halten.
Spoofing: falsche Praesenz
Da die Beacon-ID oeffentlich ist, sendet ein Angreifer dieselbe UUID/Major/Minor von einem 10-Dollar-Board, und Ihr System glaubt, eine Anlage (oder ein Kunde) sei da, wo sie nicht ist. Einzelhandel: falsche „Treue anwesend“-Events. Logistik: Phantom-Paletten. Die Loesung ist Echtheit – der Empfaenger muss kryptografisch verifizieren, dass das Paket von einem Schluesselhalter kommt, nicht nur, dass die ID passt.
Replay: aufnehmen und wieder senden
Replay ist der einfachste und leicht zu uebersehende Angriff. Ein Angreifer zeichnet heute ein gueltiges Paket auf und sendet es naechste Woche erneut, um zu behaupten, der Beacon „sei noch da“. Ein rohes iBeacon-Frame hat weder Zeitstempel noch Nonce, also kann der Empfaenger alt von neu nicht unterscheiden. Ein signierter Zeitstempel verhindert es.
MITM und die falsche Gateway
Wenn Ihr Beacon mit einer Gateway ueber eine unverschluesselte Verbindung spricht, kann eine falsche Gateway Messwerte injizieren oder manipulieren. Das Gleiche gilt, wenn Gateway-zu-Cloud nicht authentifiziert ist. Jeder Hop braucht eigene Integritaet und, wo die Daten sensibel sind, Vertraulichkeit.
Kryptografische Massnahmen, die wirken
Verschluesseltes Advertising. Packen Sie die sinnvolle Nutzlast in einen verschluesselten Blob (AES-CCM unter LE Secure Connections oder einem vorab geteilten Schluessel). Das Funkgeraet sendet weiter, aber nur Schluesselhalter koennen lesen.
Signierte Beacons. Stempeln Sie jedes Paket mit einer ECDSA-Signatur ueber Nutzlast plus Zeitstempel. Der Empfaenger verifiziert, bevor er vertraut:
def sign_beacon(nutzlast, ts, priv_schluessel):
msg = nutzlast + ts # ts = grober Zaehler oder Unixzeit
sig = ecdsa_sign(msg, priv_schluessel) # P-256 oder Ed25519
return nutzlast + ts + sig
def verify_beacon(anomaly, pub_schluessel, fenster):
nutzlast, ts, sig = split(anomaly)
if jetzt() - ts > fenster: # z.B. 60 s
return REPLAY_ERKANNT
return ecdsa_verify(nutzlast + ts, sig, pub_schluessel)
Rotierende, fluechtige IDs. Spiegeln Sie das Privatsphaeremodell aufloesbarer privater Adressen: senden Sie eine schluesselabgeleitete rotierende ID, die nur Ihr Server aufloesen kann. Ein Abhoerer sieht alle paar Minuten eine andere ID und kann nicht verfolgen.
Zeitstempel + Nonce gegen Replay. Ein monotoner Zaehler oder grober Zeitstempel im signierten Umschlag macht jedes Paket einzigartig und kurzlebig.
Sicherheit vs. Aufwand
| Verfahren | Vertraulichkeit | Integritaet | Replay-Schutz | Strom | Kompatibilitaet |
|---|---|---|---|---|---|
| Klartext | Keine | Keine | Keiner | Keiner | Universal |
| Rotierende ID | Schwach | Keine | Teilweise | Niedrig | Universal |
| Signiert | Keine | Stark | Ja (Zeit) | Mittel | Braucht Verif. |
| Verschluesselt | Stark | Stark | Ja (Nonce) | Hoch | Braucht Schluessel |
Schluessel-Provisionierung und Hardware-Root
Die Signatur ist nur so vertrauenswuerdig wie der private Schluessel. Lagern Sie ihn in einem Secure Element oder leiten Sie ihn aus einem PUF ab, damit er nicht aus dem Firmware-Image ausgelesen werden kann. Das ist dieselbe Root-of-Trust-Disziplin wie beim Secure Boot: die Identitaet des Beacon wird in der Fabrik eingebrannt, nicht zur Laufzeit aus Flash geladen.
Operative Erkennung
Auch mit Krypto: ueberwachen Sie die Luft.
- RSSI-Anomalie: ein Beacon, das ploetzlich +20 dB staerker liest, deutet auf einen Spoofer in der Naehe.
- Dieselbe ID gleichzeitig an zwei Orten: physikalisch unmoeglich – markieren.
- Gateway-Whitelist: nur Uplinks von bekannten Zertifikaten annehmen.
Standards, auf die man bauen kann
Apple Find My und die plattformuebergreifende Spec Detecting Unwanted Location Trackers definieren Anti-Stalking-Verhalten (Trennwarnung, Ton), das Sie bei Consumer-Tags spiegeln sollten. Device Provisioning Protocol (DPP) gibt ein sauberes Onboarding fuer Gateways.
OEM-Checkliste
1. Legen Sie das Bedrohungsmodell fest, bevor Sie ein Verfahren waehlen – die meisten Einsaetze brauchen Signatur, nicht Verschluesselung.
2. Schluessel im Secure Element / PUF lagern, nie im App-Flash.
3. Jedem Paket Zeitstempel oder Zaehler anfuegen; das Fenster pruefen.
4. Oeffentliche IDs in einem Takt rotieren, den der Server aufloesen kann.
5. Mittel zum Widerrufen und Neubeschluesseln eines kompromittierten Beacon ausliefern.
Ein Bluetooth Beacon verdient Vertrauen wie alles andere: indem es bei jedem Paket beweist, dass es das ist, als das es sich ausgibt.