Содержание статьи
- Почему ZigBee?
- Основные понятия
- PHY
- MAC
- NWK layer
- Адресация в сетях ZigBee
- APL layer
- Безопасность ZigBee
- Распределенная модель
- Централизованная модель
- Ключи шифрования в ZigBee
- Работаем с ZigBee в Wireshark
- Уязвимости ZigBee
- Софт для работы с ZigBee
- Железо для работы с ZigBee
- Digi XBee ZigBee Mesh Kit
- Texas Instruments CC2531
- Texas Instruments CC1352
![](/wp-content/themes/engine/img/info-icon.jpg)
INFO
Мои коллеги из GS Labs занимаются разработками, связанными с умным домом, что позволило мне вблизи познакомиться с безопасностью ZigBee. На этот опыт я и буду опираться, когда речь зайдет о практике.
Почему ZigBee?
Конечно, этот протокол не нов — стандарт появился еще в 2003 году. Сегодня есть более современные аналоги вроде LoRaWAN и RPMA, но ZigBee продолжает быть популярным. Почему? Взгляни на картинку.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/02.jpg)
Помимо дальности и скорости здесь учтена стоимость. И сразу видно, что ZigBee отлично сбалансирован и при невысокой цене дает приемлемые дальность действия и скорость передачи данных. Вряд ли тебе понадобится стримить видео в 4K на выключатель, а чтобы что-то сделать издалека, обычно используется подключенный к интернету хаб. Вот и получается, что ZigBee не сильно бьет по карману при создании умного дома и покрывает основные нужды.
К тому же более новые протоколы могут таить неприятные сюрпризы. Например, в разговорах о LoRa я уже несколько раз слышал от интеграторов, что при большом количестве устройств в сети могут начаться чудеса. Говорят, что на опрос сотни девайсов может уйти около часа.
Основные понятия
Топология сети может быть одной из следующих:
- звезда;
- кластерное дерево;
- стильный-модный-молодежный вариант — mesh.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/15.jpg)
Координатор (он же FFD) — это самый главный узел. Он создает сеть, выбирает, на каком канале общаться, может выступать как «центр доверия» (trust center). Роутеры — устройства уже чуть попроще. Они служат зачастую ретрансляторами сообщений от конечных устройств. Конечные устройства (end device) — то, что мы объединяем в сеть, то есть выключатели, лампочки, датчики движения и прочие гаджеты.
![Сводная таблица функциональности каждого из устройств](https://xakep.ru/wp-content/uploads/2019/09/240763/zbt.jpg)
А теперь открываем официальную спецификацию ZigBee. Там нас почти сразу встречает вот такая интересная картинка.
![ZigBee Stack Architecture](https://xakep.ru/wp-content/uploads/2019/09/240763/03.jpg)
Но пусть она тебя не пугает, потому что к концу статьи ты поймешь, что в реальности все немного проще! 🙂
PHY
Итак, начнем изучение с PHY, физического уровня, и будем подниматься вверх по слоям.
![](/wp-content/themes/engine/img/info-icon.jpg)
INFO
Мы будем говорить о ZigBee, но ZigBee базируется на IEEE 802.15.4. Причем этот же стандарт взят за основу для WirelessHART и для ISA100.11a.
ZigBee, а точнее, IEEE 802.15.4 может работать в трех частотных диапазонах.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/05.jpg)
И, как ты можешь заметить, если выбрать для него частоту 2,4 ГГц, то Wi-Fi и ZigBee могут начать мешать друг другу. Для уменьшения перекрестных помех между Wi-Fi и ZigBee лучше выбирать следующие каналы.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/06.jpg)
Что не может не радовать, в стандарте есть такое понятие, как ED — Energy Detection. Эта фича используется в координаторе умного дома, чтобы он выбирал канал, где меньше всего помех.
Общий вид посылки для PHY имеет следующий вид.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/07.jpg)
Если у тебя дома завалялся SDR и ты желаешь контролировать каждый-прекаждый битик в модуляции OQPSK, то тебе поможет вот эта схема.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/08.jpg)
Этот вид модуляции как раз и применяется на частоте 2,4 ГГц. А мы тем временем идем дальше выше по стеку протоколов, и нас ждет уровень MAC.
MAC
Общий вид MAC-фреймов представлен ниже.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/09.jpg)
Как видишь, Frame Control отвечает за тип пакета данных (Beacon, Ack, Cmd, Data), тип адресации, а также наличие шифрования.
Теперь поговорим о каждом фрейме данных чуть подробнее.
Data Frame — один из самых простых фреймов. В нем передаются данные протоколов, которые работают поверх IEEE 802.15.4. Получается, что ты можешь взять за основу IEEE 802.15.4 и разработать протокол для своих нужд.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/10.jpg)
ACK Frame — фрейм подтверждения. Увы, мы живем в неидеальном мире, где бывает много помех, а при передаче по радиоканалу тем более. Поэтому необходимо подтверждать принятые данные.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/11.jpg)
Здесь Sequence Number указывает на то, какой фрейм из пришедших ранее мы подтверждаем.
MAC Cmd frame в той или иной степени отвечает за «организацию сети» на уровне 802.15.4.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/12.jpg)
Ниже представлены команды, которые могут тебе встретиться.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/13.jpg)
FFD — Full-function Device — это координатор сети, та самая главная «железка», которая организовывает сеть ZigBee.
RFD — Reduced-function Device — не столь важное устройство, как координатор, выполняет функции роутера при пересылке пакетов.
Beacon frame — об этом фрейме стоит поговорить подробнее.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/14.jpg)
Так как мы передаем данные по радиоканалу и у нас есть несколько устройств, эти устройства должны как-то определять, в какой момент можно передавать данные, а когда занята несущая и стоит подождать. Поэтому в сетях ZigBee/IEEE 802.15.4 есть два способа передачи данных: режимы Beacon и NonBeacon.
Для передачи данных в режиме NonBeacon используется так называемый unslotted CSMA-CA channel access mechanism. По моему опыту, он используется редко.
Наиболее частый случай — использование режима Beacon. В этом случае координатор отправляет так называемые маячки (beacons), на основе которых остальные устройства синхронизируются и передают данные.
Общий вид передачи данных в этом режиме представлен ниже.
![](https://xakep.ru/wp-content/uploads/2019/09/240763/17.jpg)
Во фрейме Beacon указывается, сколько будет slotted CSMA-CA, будет ли доступ без конкуренции и последует ли Inactive portion — время, когда конечные устройства смогут со спокойной совестью уйти в спячку для продления работы от батарейки.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»