# ZigBee

ZigBee ist eine Spezifikation für drahtlose Netzwerke mit geringem Datenaufkommen und geringem Stromverbrauch wie beispielsweise Hausautomation, Sensornetzwerke, Lichttechnik. ZigBee-Geräte kommunizieren in einem Mesh-Netzwerk bzw. einem Ad-hoc-Netz. Das heißt, wenn ein Kommunikationspfad im ZigBee-Netzwerk ausfällt, wird stattdessen ein anderer Pfad im Netzwerk verwendet. Der Schwerpunkt von ZigBee liegt in kurzreichweitigen Netzwerken bis 100 m im Innenbereich und bis 300 m in Sichtlinie.
Der Name ZigBee wurde aus dem „Zick-Zack-Tanz“ der Honigbienen abgeleitet.
Die Spezifikation ist eine Entwicklung der ZigBee-Allianz, die Ende 2002 gegründet wurde. Sie ist ein Zusammenschluss von derzeit mehr als 230 Unternehmen, die die weltweite Entwicklung dieser Technologie vorantreiben. 2004 kam die erste ZigBee-Spezifikation auf den Markt. Die mittlerweile unter dem Namen ZigBee 2004 bekannte Version gilt als veraltet und wurde 2006 von einer komplett überarbeiteten Version abgelöst. 2007 ist mit ZigBee Pro ein weiterer Zweig der ZigBee-Spezifikation erschienen. Er richtet sich an Anwendungen, die sowohl mit wenig Datenrate als auch speziell minimiertem Energieverbrauch auskommen sollen. Eine Weiterentwicklung ist Version 1.2.1 mit Verbesserungen der Sicherheit. Sie entschärft einen im November 2015 entdeckten Sicherheitsmangel. Im Dezember 2016 wurden für die Protokollversion 3.0 20 Zertifizierungen für acht Hersteller ausgestellt, um eine Vereinheitlichung im Bereich IoT voranzubringen. Durch die Zusammenarbeit mit Herstellern weltweit können Verbraucher zum Beispiel über intelligente Heizkörperthermostate ihre Heizung steuern, smarte Beleuchtungssysteme einbauen und Jalousien nach Bedarf steuern.

## Einleitung

Die Spezifikation beschreibt ein Framework für Funknetze. ZigBee baut auf dem Standard IEEE 802.15.4 auf und erweitert dessen Funktionalität insbesondere um die Möglichkeit des Routings und des sicheren Schlüsselaustausches. Im IEEE-802.15.4-Standard sind die PHY-Schicht und die MAC-Schicht definiert. ZigBee erweitert diesen Protokollstapel um die Schichten NWK und APL, wobei zu beachten ist, dass es sich bei ZigBee um ein Framework handelt und eine Anwendung in die APL-Schicht eingebettet wird.
Die Einsatzmöglichkeiten von ZigBee sind vielfältig, zum Beispiel in der Gebäude-Automation, im medizinischen Bereich, für Steuerungsanlagen und für alle Arten von Sensormessungen.
Die ZigBee-Spezifikation stellt dem Entwickler drei verschiedene Gerätearten (ZigBee Devices) zur Verfügung. Mit diesen Geräten wird ein ZigBee Wireless Personal Area Network (WPAN) aufgebaut. Man unterscheidet drei Rollen, die ein ZigBee-Gerät erfüllen kann:

### Endgerät (ZigBee End Device, ZED)

Geräte wie zum Beispiel Steuerungs- oder Sensormodule werden meist mit Batterien betrieben. Diese können als ZigBee-Endgeräte implementiert werden und benötigen nur einen Teil der Funktionen der ZigBee-Spezifikation. Sie nehmen nicht am Routing im Netzwerk teil und können in einen Schlafmodus gehen. Sie melden sich an einem Router ihrer Wahl an und treten so dem ZigBee-Netzwerk bei. Sie können ausschließlich mit dem Router kommunizieren, über den sie dem Netzwerk beigetreten sind. Werden Daten an ein solches Endgerät geschickt und dieses befindet sich im Schlafmodus, speichert der Router diese Pakete, bis das Endgerät sie abruft.

### Router (ZigBee-Router, ZR)

ZigBee-Router nehmen am Routing der Pakete durch das Netzwerk teil. Sie benötigen einen größeren Funktionsumfang und damit auch etwas mehr Hardwareressourcen. ZigBee-Router treten einem Netzwerk bei, indem sie sich an einem im Netzwerk befindlichen Router anmelden. Das Routing im Netzwerk erfolgt entweder entlang eines sich so bildenden Baumes (Stackprofil ZigBee) oder durch dynamisches Routing als Meshnetzwerk (Stackprofil ZigBee PRO). Tritt ein Funkmodul über einen Router dem Netzwerk bei, vergibt dieser diesem eine 16-Bit-Kurzadresse (engl. short address). Bei Meshnetzwerken erfolgt dies zufällig. Auftretende Adresskonflikte müssen erkannt und dann behoben werden.

### Koordinator (ZigBee coordinator, ZC)

Ein ZigBee-Koordinator startet das Netzwerk mit festgelegten Parametern. Nach dem Start übernimmt er dieselben Aufgaben wie ein ZigBee-Router.

## Adressierung

Die Identifizierung des Netzwerks erfolgt über eine 64-Bit erweiterte PAN-ID. Um unnötigen Protokoll-Overhead zu vermeiden, wählt der Koordinator allerdings für ein PAN bei dessen Start eine 16-Bit-PAN-ID. Jedes Funkmodul besitzt eine eindeutige 64-Bit-IEEE-Adresse. Beim Eintritt in ein Netzwerk bekommt es allerdings ebenfalls eine 16-Bit-Kurzadresse zugewiesen. Bei stochastischer Adressvergabe müssen Adresskonflikte aufgelöst werden. Um Daten an ein anderes Funkmodul im selben Netzwerk zu senden, genügt damit die Angabe der 16-bit-Kurzadresse. Allerdings werden zusätzlich verschiedene Anwendungsobjekte über Endpunkte adressiert. Dieses Verfahren ähnelt dem TCP-Port bei TCP/IP. Jedem Knoten stehen 255 Endpunkte zur Verfügung. Für die Anwendungslogik sind die Endpunkte 1 bis 240 vorgesehen. Endpunkt 255 ist für Broadcast an alle Endpunkte reserviert. Die Endpunkte 241 bis 254 sind für spätere spezielle Aufgaben reserviert. An den Endpunkt 0 gerichtete Daten sind für das ZigBee Device Object (ZDO), welches die Steuerung der Netzwerkaufgaben übernimmt.
Über ein Bindingverfahren kann auch eine indirekte Adressierung ohne Kenntnis der Adresse zum Versenden von Daten benutzt werden. Hierzu müssen sich zwei Funkmodule an einem Bindingprozess beteiligen (zum Beispiel durch das Drücken eines Tasters). In einer Bindingtabelle werden zu einem Cluster, dem Ziel- und Senderendpunkt die entsprechenden Adressen der Funkmodule gespeichert. Für die Adressierung von Paketen genügt dann die Angabe eines Clusters und des Zielendpunkts. Aus der Bindingtabelle kann die benötigte Adresse ermittelt werden.
Es ist ebenfalls möglich, Nachrichten an eine Gruppe von Funkmodulen zu senden. Jedes Funkmodul speichert eine Liste mit 16-Bit-Gruppen-IDs. Ein Eintrag in dieser Tabelle bedeutet, dass das Funkmodul Mitglied der entsprechenden Gruppe ist. Die Nachricht an eine Gruppe wird über Broadcast gesendet. Die Reichweite kann aber zusätzlich begrenzt werden, indem von Nichtgruppenmitgliedern eine Nachricht nur an eine bestimmte Anzahl von Hops weitergeleitet wird.

## ZigBee RF4CE

RF4CE ist ein Akronym für radio frequency for consumer electronics. ZigBee-RF4CE ist eine weitere auf dem IEEE-802.15.4-Standard aufbauende Spezifikation der ZigBee-Allianz. Sie ist im Jahr 2008 erschienen und ist eine eigenständige Spezifikation. Sie spezifiziert einfache und kostengünstige drahtlose Netzwerke zur Steuerung von Geräten wie etwa Homeentertainment und Lichtsteuerung. Routing wird in diesen Netzwerken nicht unterstützt. Ein fernzusteuerndes Gerät bildet ein eigenes PAN (Personal Area Network). Die Fernsteuerung tritt diesem Netzwerk bei. Um mehrere Geräte zu steuern, partizipiert die Fernsteuerung im Allgemeinen an mehreren PANs. Auch ein fernzusteuerndes Gerät kann Mitglied eines zweiten PANs sein, wenn es selbst fernsteuernde Aufgaben erfüllt. Wenn der DVD-Player von der Fernbedienung gestartet wird, soll der DVD-Player gleichzeitig den Kanal des Fernsehers wechseln.

## ZigBee IP

ZigBee IP ist eine im Jahr 2012 erschienene Spezifikation für drahtlose Netzwerke mit Anbindung an das Internet. Die ZigBee Alliance orientiert sich bei der Entwicklung an bestehenden Protokollen von Standardisierungsgremien wie IETF, IEEE, W3C, ISO und IEC. Der Stack nutzt in der Netzwerk-Schicht (OSI-Modell Network Layer) unter anderem die von der IETF entwickelten Protokolle 6LoWPAN und RPL. Das 6LoWPAN-Protokoll ermöglicht die direkte Anbindung von Geräten oder Sensornetzwerken an das Internet über IPv6 (Internet of Things).

## ZigBee Cluster Library

Um insbesondere Interoperabilität von Produkten verschiedener Hersteller zu gewährleisten, hat die ZigBee Allianz Cluster und Profile definiert. Ein Cluster funktioniert nach dem Client/Serverprinzip. Der Server eines Cluster besitzt verschiedene Attribute, die im Allgemeinen der Client durch bestimmte Kommandos verändern kann. Eine Lampe ist zum Beispiel ein Server des Clusters OnOff (ClusterID: 0x0006). Der Client kann durch Senden definierter Kommandos (On, Off, Toggle) den Zustand des Attributes verändern. Der Datenaustausch erfolgt über ZCL-Frames. Sämtliche Cluster sind in der ZigBee Cluster Library zusammengefasst.

## ZigBee-Profile

In ZigBee-Profilen werden für einen bestimmten Anwendungsfall Systemvoraussetzungen und Geräte definiert. Jedes Gerät implementiert hierbei eine Menge von Clustern. Beispielprofile sind Home Automation, Building Automation und Health Care. Man unterscheidet dabei zwischen veröffentlichten Profilen und herstellerspezifischen Profilen. Herstellerspezifische Profile werden von Geräteherstellern entworfen und in der Regel nicht veröffentlicht. Dieses Profile ermöglichen es Herstellern Funktionen zu implementieren, welche nicht in öffentlichen Anwendungsprofilen definiert sind. Nachteilig dabei ist, dass nur Geräte des jeweiligen Hersteller dieses Profil sinnvoll nutzen können.

### ZigBee Light Link

Dieses Profil dient zur Steuerung von Lichttechnik aller Art. Die Steuerung von Farbanteilen, Helligkeit und einfach An- und Ausschalten von Lampen ist in diesem Profil vorgesehen. Auf einen Koordinator und damit auch ein Trustcenter zur Schlüsselverteilung wird der Einfachheit halber verzichtet. Die Kommunikation erfolgt immer verschlüsselt durch einen Netzwerkschlüssel. Der Netzwerkschlüssel wird an ein dem Netzwerk beitretendes Funkmodul durch den sogenannten Masterkey verschlüsselt mitgeteilt. Dies ist auch die große Schwachstelle von Light Link. Der Masterkey ist für alle Light Link zertifizierten ZigBee-Produkte identisch und wird von der ZigBee Alliance nach bestandener Zertifizierung dem Hersteller mitgeteilt. Das heißt, es wurde versucht den Masterkey geheim zuhalten. Dieser ist aber schon seit geraumer Zeit öffentlich bekannt. Ein nachträgliches Ändern des Masterkeys auf zertifizierten Produkten ist nicht vorgesehen. Ein weiteres Manko der Geheimhaltung des Masterkeys ist es, dass Privatanwender zum Beispiel keine eigenen Produkte wie Schalter oder Controller für zertifizierte Light-Link-Produkte erstellen können, solange der Masterkey nicht bekannt ist. Für die Lichtsteuerung ist die Schlüsselproblematik sicherheitstechnisch nicht so dramatisch. Ein großer Schaden kann im Allgemeinen nicht angestellt werden und die Reichweite der ZigBee-Light-Link-Übertragung ist auch eher gering, so dass ein potentieller Angreifer der Hardware schon recht nahe kommen muss.

### ZigBee Home Automation

Dieses Profil kann auch zur Steuerung von Lichttechnik benutzt werden, dient aber der allgemeinen Steuerung von Geräten in kleineren Gebäuden. Die Übertragung erfolgt ebenfalls durch einen Netzwerkschlüssel verschlüsselt. Auch hier wird der Netzwerkschlüssel beim Eintritt in das Netzwerk durch einen Masterkey verschlüsselt verteilt. Der Masterkey ist in diesem Fall bekannt, allerdings kann durch die Benutzung eines Trustcenters der Zutritt zum Netzwerk gesperrt werden und zum Beispiel nur durch das Betätigen eines Buttons für einige Sekunden gestattet werden. Hier kann ein Schaden durch ungewollten Zugang allerdings auch größer ausfallen. Werden beispielsweise Temperaturwerte für Klimageräte, Kühlschrank oder Heizung manipuliert, kann dies ggf. erhebliche Auswirkungen haben.

### ZigBee Green Power (ZGP)

Das ZigBee Green Power Profil spezifiziert ein ZigBee-Profil für den Betrieb von batterielosen Sensoren. Eingeführt wurde dieses Profil mit der ZigBee Version 3.0. Das Konzept bedient sich dabei des Prinzips des Micro Energy Harvesting. Jeder ZigBee 3.0 Router oder Koordinator muss dabei die Funktion eines Green Power Basic Proxys (GPBP) implementieren. Dieser erlaubt es den mit dem Router bzw. Koordinator verbundenen Geräten sogenannte Green Power Device Frames zu senden.

## Anwendungsgebiete

* Industrie- und Automatisierungstechnik (z. B. A.N. Solutions)
** Anlagensteuerung
** Güterüberwachung
** Übertragen von Sensordaten (z. B. ZIGPOS)
* Medizintechnik (z. B. Telemedizinische Geräte der Brunel University London)
** Patientendatenübertragung
* Heim- und Gebäudeautomatisierung
** Unterhaltungselektronik (z. B. 3D-Shutterbrillen)
** Computer-Peripherie
** Funkmelder
** Waschmaschinen (z. B. Miele)
** Kaffeeautomaten

## Konkurrenz

Im Bereich Heimautomation und M2M steht ZigBee in direkter Konkurrenz zu Z-Wave. Für beide Protokolle gibt es eine Reihe OSGi-basierter Framework-Lösungen, die über das reine Protokoll hinausgehende Heimautomatisierungsfunktionen beinhalten, wie zum Beispiel einen Geräteabstraktionslayer. Darüber hinaus steht ZigBee im Bereich der Heimautomation in Konkurrenz zu Enocean, das anders als ZigBee und Z-Wave durch die Betonung des Energy-Harvesting batterielose Sensoren ermöglicht.
Im Bereich Medizintechnik ist als Konkurrenzstandard Bluetooth bzw. die Spezifikation der Continua Health Allianz erwähnenswert. Mit dem Bluetooth Mesh Protokoll wird der Bluetooth-Low-Energy-Standard um passende Funktionen erweitert.

## Sicherheit

ZigBee/IEEE802.15.4 setzt beim Verschlüsseln von Daten auf eine erweiterte Version des CCM-Mode-Verfahrens (CCM*). Als Blockverschlüsselungsalgorithmus wird AES-128 eingesetzt, das als kryptografisch sicher eingestuft ist. Trotzdem weisen die verwendeten Protokolle sicherheitskritische Schwachstellen auf; so müssen alle Geräte ein und dasselbe Schlüsselpaar (Fallback Key) kennen und akzeptieren, welches öffentlich bekannt ist.
Datenpakete können auf Netzwerkschichtebene oder auf der Anwendungsebene verschlüsselt werden. Bei einer Verschlüsselung auf der Netzwerkebene muss allerdings allen Funkmodulen ein bestimmter Netzwerkschlüssel bekannt sein. Bei einer Verschlüsselung auf der Anwendungsebene kann eine Verbindung zwischen zwei Funkmodulen explizit mit einem eigenen, nur den zwei Funkmodulen bekannten Schlüssel verschlüsselt werden. Die große Schwierigkeit hierbei ist die Verteilung der Schlüssel auf die Funkmodule. Hierbei gibt es verschiedene Möglichkeiten, die nur bedingt oder nicht sicher sind:
* Die Schlüssel können auf den Funkmodulen vorinstalliert werden. Andere Funkmodule mit selbigem vorinstallierten Schlüssel können ggf. dem Netzwerk beitreten. Zusätzlich existiert dabei aber auch ein fixer, fest vereinbarter und allgemein bekannter Schlüssel, um neue ZigBee-Module in einem Netzwerk anzumelden – dieser Punkt stellt die Schwachstelle im Sicherheitskonzept dar, da ein Angreifer diesen Vorgang belauschen kann und so den geheimen und individuellen Netzwerkschlüssel im Rahmen der Datenübertragung ermitteln kann.
* Die Schlüssel werden einem Funkmodul beim Eintritt in das PAN unverschlüsselt mitgeteilt. Hierbei ist die Gefahr des Abhörens relativ groß. Allerdings ist die Reichweite von ZigBee-Modulen meist gering, sodass sich ein potentieller Angreifer in der Nähe aufhalten muss. Durch das Herabsenken der Transceiverleistung kann die Reichweite des Weiteren auf ein Minimum reduziert werden. Einen zusätzlichen Schutz bietet die Möglichkeit, die Zeitspanne der unverschlüsselten Datenübertragung des Schlüssels zu begrenzen, beispielsweise durch gleichzeitiges Drücken eines Knopfes an jedem Funkmodul, wie dies auch bei Powerline-Adaptern üblich ist.
* Die sicherste Möglichkeit ist der Einsatz eines ausgewählten Trustcenters. Jedes Funkmodul besitzt nur einen Masterlinkschlüssel, mit dem zunächst ein Linkschlüssel für die Verbindung mit dem Trustcenter und dem entsprechenden Funkmodul generiert wird. Benötigen zwei Funkmodule einen Linkschlüssel für eine Verbindung zueinander, erfolgt die Schlüsselgenerierung mittels des sogenannten SKKE-Protokolls über das Trustcenter. Das Trustcenter selbst dient nur zur Vermittlung und kann selbst den Schlüssel nicht bestimmen.
Beim CCM*-Verfahren kann durch einen Authentifizierungscode (Message Integrity Code) die Datenintegrität von Datenpaketen geschützt werden. Mittels CTR-Verfahren werden die Daten verschlüsselt. Durch Nutzung eines Counters besteht zudem keine Möglichkeit, Pakete abzufangen und diese später ins Netzwerk einzuschleusen (replay attack).

### Sicherheitslücken

Ein bekanntes herstellerübergreifendes Sicherheitsproblem gibt es bei der Implementierung: Wird der Netzwerkschlüssel neu übertragen, dann kann bei einer unverschlüsselten Übertragung der Netzwerkschlüssel mitgelesen werden. Insbesondere ZigBee-basierte Türschlösser sind hier negativ aufgefallen, indem Geräte gezwungen werden konnten, den Schlüsselaustausch neu zu beantragen.
Zigbee 3.0 gibt den Geräteherstellern die Möglichkeit, einen eigenen Installations-Key zu verwenden und dem Gerät beizulegen. Auf diese Weise wird die bei Zigbee 1.2 aufgedeckte Verwendung eines weltweit bekannten Fallback-Keys verhindert, so dass Zigbee-Geräte auch beim Pairing bereits geschützt miteinander kommunizieren. Zudem müssen alle Geräte, auch solche die noch den Fallback-Key verwenden, direkt nach dem Pairing einen randomisierten Key verwenden. Der Zigbee-Coordinator innerhalb des Zigbee-Netzwerks kann dabei festlegen, ob er Geräte, die dagegen verstoßen, den Zutritt in das Netzwerk verweigert. Außerdem wurden im Zigbee 3.0-Protokoll Maßnahmen gegen das Herauswerfen von bereits gepaarten Zigbee-Geräten getroffen.

### Zukunft

Die Weiterentwicklung von ZigBee erfolgt faktisch im Projekt Matter (Standard) unter Federführung der Zigbee Alliance, jetzt Connectivity Standards Alliance (CSA).