Продолжение. Спецификация LoRaWAN 1.0.2.
Начало: Спецификация LoRaWAN. Введение. Основные понятия и классы оконечных устройств
Чтобы присоединиться к сети LoRaWAN, оконечное устройство должно пройти процедуру активации (End-Device Activation). Спецификация предусматривает два варианта активации устройств:
- OTAA, Over-The-Air Activation (требуется пройти процедуру присоединения (join procedure), во время которой вырабатываются сессионные ключи шифрования и адрес DevAddr).
- ABP, Activation By Personalization (не требуется проходить процедуру присоединения, ключи шифрования и адрес DevAddr записываются в устройство заранее (персонализация устройства))
После активации устройство должно содержать следующие значения:
- End-device address (DevAddr) — локальный адрес устройства в данной сети [32 бита]. DevAddr состоит из двух полей: NwkID (идентификатор сети, биты 31...25) и NwkAddr (сетевой адрес, биты 24...0).
- Network session key (NwkSKey) — сетевой сессионный ключ [128 бит], используемый для расчета и проверки поля MIC (message integrity code) сообщений при обмене между оконечным устройством и сетевым сервером (Network Server), а также шифрования сообщений MAC-уровня.
- Application session key (AppSKey) — сессионный ключ [128 бит], используемый для шифрования данных на уровне приложения (между оконечным устройством и сервером приложения).
- Также устройство должно иметь идентификатор приложения [64 бита], который записывается заранее — Application identifier (AppEUI)
Активация «по воздуху» — Over-The-Air Activation
При активации OTAA оконечное устройство должно проходить процедуру присоединения к сети каждый раз, когда сессионная информация (локальный адрес DevAddr, ключи NwkSKey, AppSKey) в устройстве отсутствует или неактуальна. Перед процедурой присоединения в устройство должны быть записаны:
- End-device identifier (DevEUI) — уникальный идентификатор, который присваивается устройству в процессе производства [64 бита].
- Application identifier (AppEUI) — уникальный идентификатор приложения [64 бита], который упоминался ранее.
- Application key (AppKey) — ключ [128 бит], который используется в процессе присоединения к сети для получения сессионных ключей NwkSKey и AppSKey.
Процедура присоединения при активации OTAA
Процедура присоединения всегда инициируется оконечным устройством и состоит из двух сообщений, которыми обмениваются оконечное устройство и сетевой сервер: join request (устройство -> сервер) и join accept (сервер -> устройство).
Сообщение join request содержит AppEUI, DevEUI и случайное число DevNonce:
8 байт | 8 байт | 2 байта |
AppEUI | DevEUI | DevNonce |
Для каждого оконечного устройства сетевой сервер запоминает значения DevNonce, которые использовались раньше, и игнорирует запросы, содержащие повторяющиеся значения DevNonce.
В ответ на join request сервер посылает сообщение join accept.
3 байта | 3 байта | 4 байта | 1 байт | 1 байт | 16 байт |
AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList |
где
AppNonce — случайное число.
NetID — идентификатор сети.
DevAddr — адрес устройства в сети.
DLSettings — параметры, используемые для нисходящих сообщений (сервер -> устройство).
RxDelay — задержка между окончанием передачи оконечного устройства и началом окна приема Rx1 (что такое окна приема — см. Спецификация LoRaWAN. Введение. Основные понятия и классы оконечных устройств).
CFList — список дополнительных частотных каналов, которые могут использоваться оконечным устройством.
Поле DLSettings [8 бит] имеет следующий формат:
7-й бит | биты 6...4 | биты 3...0 |
RFU | RX1DRoffset | RX2 Data rate |
где:
RFU — Reserved for Future Use, не используется.
RX1DRoffset — разница между скоростями (data rates) на восходящей и нисходящей линиях, используемая для первого окна приема Rx1. По умолчанию равна 0.
RX2 Data rate — скорость, используемая для второго окна приема Rx2.
Случайные числа DevNonce и AppNonce используются при вычислении сессионных ключей NwkSKey и AppSKey.
Активация путем персонализации — Activation By Personalization
«Активация путем персонализации» означает, что в устройство напрямую записываются значения DevAddr, NwkSKey и AppSKey (происходит персонализация устройства). Согласно спецификации, каждое устройство должно содержать уникальные значения сессионных ключей NwkSKey и AppSKey, чтобы компрометация этих значений, содержащихся в одном устройстве, не приводила к компрометации других устройств сети.
При таком способе активации оконечному устройству не нужно проходить процедуру присоединения к сети, сразу после включения устройство готово к передаче данных.
Ссылки по теме:
- Спецификация LoRaWAN. Введение. Основные понятия и классы оконечных устройств
- Базовые станции Multi-Tech позволяют развернуть сеть LoRaWAN за пару кликов
- Настраиваем шлюз LoRaWAN и создаем наше первое IoT-приложение
Автор: ЭФО