Подключение и безопасность
OTAA и ABP, ключи устройства и почему шлюз не может прочитать ваши данные.
OTAA и ABP
OTAA (over-the-air activation, активация по радио): устройство подключается к сети с помощью join request. Для этого ему нужны три значения:
- DevEUI: глобально уникальный номер устройства (16 шестнадцатеричных символов),
- JoinEUI (ранее AppEUI): идентифицирует сервер подключения,
- AppKey: секретный ключ (32 шестнадцатеричных символа).
Из них при каждом подключении выводятся новые сеансовые ключи. OTAA – рекомендуемый способ.
ABP (activation by personalization, активация через персонализацию): сеансовые ключи и адрес устройства заданы заранее и не меняются. Устройство никогда не выполняет подключение. Это проще, но менее безопасно и приводит к ошибкам, когда счётчики кадров рассинхронизируются.
Шифрование
LoRaWAN использует AES-128 на двух уровнях:
- NwkSKey (в LoRaWAN 1.1 несколько сетевых ключей): защищает сообщение от изменений; с его помощью сеть проверяет, что сообщение подлинное.
- AppSKey: шифрует полезные данные из конца в конец. Шлюз и оператор сети видят только зашифрованные байты; расшифровывает их только сервер приложений.
Счётчик кадров
Каждое сообщение содержит последовательный счётчик (FCnt). Сеть отбрасывает сообщения со значением счётчика, которое она уже видела. Так никто не может повторно отправить старые пакеты.
Если устройство ABP перезапускается и снова начинает с 0, сеть отбрасывает его сообщения. При OTAA счётчик начинается заново после каждого подключения, и там это правильно.