fieldtester.io

参加とセキュリティ

OTAA と ABP、デバイスの鍵、そしてゲートウェイがデータを読めない理由。

OTAA と ABP

OTAA(over-the-air activation):デバイスは Join リクエストでネットワークに参加します。必要な値は3つです。

  • DevEUI: デバイスごとに世界で一意の番号(16進数 16 文字)、
  • JoinEUI(旧称 AppEUI):Join サーバーを識別します、
  • AppKey: 秘密鍵(16進数 32 文字)。

これらの値から、参加のたびに新しいセッション鍵が導出されます。推奨されるのは OTAA です。

ABP(activation by personalization):セッション鍵とデバイスアドレスが固定されています。デバイスは参加手続きを行いません。簡単ですが、安全性が低く、フレームカウンターがずれると不具合が起きやすくなります。

暗号化

デバイスゲートウェイネットワークサーバーアプリサーバーアプリfieldtester.ioペイロードは AppSKey でエンドツーエンド暗号化ネットワーク鍵で署名、ネットワークが検証見えるのは暗号化バイトペイロードをここで復号
ペイロードはデバイスからアプリケーションサーバーまで暗号化されたままです。ゲートウェイとネットワークサーバーには暗号化されたバイトしか見えません。

LoRaWAN は2つのレベルで AES-128 を使います。

  • NwkSKey(LoRaWAN 1.1 では複数のネットワーク鍵):メッセージを改ざんから守ります。ネットワークはこの鍵で、メッセージが本物かどうかを確認します。
  • AppSKey: ペイロードをエンドツーエンドで暗号化します。ゲートウェイとネットワーク事業者には暗号化されたバイトしか見えず、復号するのはアプリケーションサーバーだけです。

フレームカウンター

各メッセージには連番のカウンター(FCnt)が付いています。ネットワークは、すでに受け取ったカウンター値のメッセージを破棄します。これにより、古いパケットを再送されることを防ぎます。

ABP デバイスが再起動して 0 から数え直すと、ネットワークはそのメッセージを破棄します。OTAA では参加のたびにカウンターが最初から始まり、その場合はそれが正しい動作です。