Low-Power-Funk nach IEEE 802.15.4: Angriffe und Abwehr

Eine Reihe von Angriffen hebelt den Schutz von IEEE 802.15.4-basierten Funknetzen aus, aber ein Open-Source-Projekt hilft bei der Abwehr.

Know-how  –  3 Kommentare

Der Low-Power-Funkstandard IEEE 802.15.4 – kurz 15.4 – erfreut sich im Internet der Dinge einer weiten Verbreitung. Seine Mediumzugriffsschicht (Medium Access Control Layer, MAC-Layer) bietet drei grundlegende Sicherheitsfunktionen: Verschlüsselung, Authentifizierung und Replay-Schutz. Forschungsergebnisse zeigen jedoch, dass sie die Mediumzugriffsschicht nicht vor allen Angriffen schützen. Entwickler könnnen die Sicherheitslücken nun schließen, indem sie eine Open-Source-Software vom Potsdamer Hasso-Plattner-Institut (HPI) einbinden.

Schnelleinstieg in IEEE 802.15.4

15.4 kommt in diversen Bereichen zum Einsatz, unter anderem im Smart-Home-, Smart-City- und Smart-Factory-Bereich. Bemerkenswert ist vor allem dessen Unterstützung von Mesh-Topologien. Das unterstützen zwar Bluetooth Low Energy (BLE) und Z-Wave ebenfalls, aber ein Alleinstellungsmerkmal von 15.4 ist das auch diejenigen Knoten auf Batterien laufen, die als Router für andere Knoten fungieren. Das erleichtert das Deployment von 15.4-Netzwerken gegenüber BLE und Z-Wave enorm und sorgt nebenbei für weitaus mehr Routing-Pfade, auf die sich ausweichen lässt.

Zum Energiesparen bietet 15.4 vier energieeffiziente Mediumzugriffsprotokolle zur Wahl. Davon sind die zwei neuesten Time-Slotted Channel Hopping (TSCH) und Coordinated Sampled Listening (CSL). Beide verfolgen zum Energiesparen einen sogenannten Duty-Cycling-Ansatz. Das heißt, dass sie den energiehungrigen Empfangsmodus des Funkmoduls nur kurz zu bestimmten Zeiten einschalten.

Time-Slotted Channel Hopping

TSCH setzt Duty-Cycling durch Zeitsynchronisierung um. Alle Knoten in einem TSCH-Netzwerk sind zeitsynchronisiert und wissen, wer mit wem in welchem Zeitslot und auf welchem Kanal kommunizieren darf. Sollte ein Knoten in einem Slot weder Funknachrichten erwarten noch versenden, kann er sein Funkmodul ausgeschaltet lassen und somit Energie sparen. Beim Verwenden eines Zeitslots kann die Kommunikation wie in Abbildung 1 gezeigt ablaufen.

TSCH teilt die Zeit in Slots ein, für die jeweils feststeht, wer mit wem auf welchen Kanal kommunizieren darf (Abb. 1).

Das Diagramm zeigt, dass Bob in diesem Zeitslot empfangsbereit ist und daher für eine kurze Zeitspanne aufwacht, um eingehende Funknachrichten wahrzunehmen. Alice möchte und darf Bob in diesem Zeitslot eine Funknachricht senden. Sie prüft zunächst, ob der Kanal frei ist, und sendet anschließend ihre Nachricht. Die Übertragung einer Funknachricht ist zeitlich derart abgestimmt, dass sie bei perfekter Zeitsynchronisierung in der Mitte des Empfangsfensters erkannt wird. Nach der Übertragung wechselt Alice ebenfalls in den Empfangsmodus, weil sie ein Acknowledgment – eine spezielle Funknachricht – als Antwort erwartet. Bliebe es aus, würde Alice die Übertragung typischerweise zu einem späteren Zeitpunkt erneut versuchen. In dem Beispiel aus Abbildung 1 empfängt Bob die Funknachricht von Alice und bestätigt ihr den erfolgreichen Empfang.

Coordinated Sampled Listening

Einen anderen Ansatz des Duty-Cyclings verfolgt CSL. Es kommt ohne Zeitsynchronisierung aus und bietet deshalb weniger Angriffsfläche als TSCH. Die Übertragung einer Funknachricht läuft bei CSL prinzipiell wie in Abbildung 2 ab.

CSL-Knoten schlafen die meiste Zeit und bieten lediglich kurze, periodische Empfangsfenster (Abb. 2).

Alle Knoten wachen regelmäßig auf, um eingehende Funknachrichten zu erkennen. Wenn ein Knoten eine solche senden möchte, kann er dafür jederzeit zuerst eine Wake-up-Sequenz und nachfolgend die eigentliche Payload-Funknachricht senden. Erstere setzt sich aus mehreren Wake-up-Funknachrichten zusammen, die, wie ein Countdown, jeweils die Zeit bis zur Übertragung der Payload-Funknachricht ankündigen.

Erkennt und empfängt ein Knoten eine Wake-up-Nachricht, kann er basierend auf der enthaltenen Zeitangabe sein Funkmodul bis zur Übertragung der Nutzdaten abschalten, für deren Empfang er dann wieder aufwacht. Wie bei TSCH bestätigt er üblicherweise anschließend den Empfang mit einem Acknowledgment. Auch das wiederholte Übertragen, wenn die Bestätigung ausbleibt, funktioniert analog zu TSCH.

Sicherheitsfunktionen und -lücken

Die Implementierung der Sicherheitsfunktionen für Verschlüsselung, Authentifizierung und Replay-Schutz ist in Abbildung 3 zu sehen.

Frame-Counter dienen einerseits dem Generieren von Nonces und andererseits der Implementierung eines schwachen Replay-Schutzes (Abb. 3).

15.4 baut auf den kombinierten Verschlüsselungs- und Authentifizierungs-Algorithmus CCM-AES-128, der drei Eingangsvariablen nimmt: die ungesicherte Funknachricht, einen symmetrischen Schlüssel und eine Nonce (kurz für "number used once"). Bei Nichtverwendung von TSCH erfolgt die Ableitung der Nonce unter anderem durch einen sogenannten Frame-Counter. Normalerweise verwaltet jeder Knoten genau einen davon, der die Anzahl der abgesicherten Funknachrichten zählt. Der aktuelle Wert des Frame-Counters ist Bestandteil des Headers abgesicherter Funknachrichten. Auf die Weise kann die Empfängerseite einerseits die Nonce wiederherstellen und andererseits erneut abgespielte Funknachrichten erkennen.

Beim Verwenden von TSCH erfolgt die Ableitung der Nonce unter anderem aus dem Index des Zeitslots beim Versand der Funknachricht. Ein erneutes Abspielen einer TSCH-Funknachricht in einem späteren Zeitslot würde also nicht funktionieren, da der von CCM generierte Integritätscode inkorrekt wäre.

Die drei Sicherheitsfunktionen von 15.4 verhindern sowohl unterschiedliche Angriffe auf höhere Protokollschichten als auch auf die 15.4-Mediumzugriffsschicht selbst. Forschungsergebnissen zeigen jedoch, dass folgende Angriffe möglich bleiben:

  • diverse Denial-of-Sleep-Angriffe
  • diverse Zeitsynchronisierungsangriffe
  • bestimmte Replay-Angriffe
  • bestimmte Acknowledgment-Spoofing-Angriffe