
LoRaWANデバイスがデータを送受信する前に、次のプロセスを完了する必要があります: アクティベーション — デバイスがネットワークアドレスとセッション鍵を取得するステップです。選択するアクティベーション方式は、セキュリティ、デプロイの複雑さ、日々の運用に影響します。
LoRaWAN仕様では、次の2つのアクティベーション方式が定義されています: OTAA (Over-The-Air Activation)と ABP (Activation By Personalization)です。本記事では、それぞれの仕組みを分解し、並べて比較し、実用的な選択ガイダンスを提供します。
OTAAは推奨されるアクティベーション方式です。デバイスはセッション鍵なしで出荷され、初回電源投入後に無線経由で認証を完了します。
OTAAのアクティベーションは3つのステップで行われます:
1。デバイスはJoin Requestを送信します
デバイスは以下を含むJoin Requestを送信します:
| フィールド | 説明 |
|---|---|
| JoinEUI / AppEUI | 参加するアプリケーションまたはネットワークサーバーを選択するアプリケーション識別子(64ビット) |
| DevEUI | グローバルに一意なデバイス識別子(64ビット)。通常はハードウェアMACから導出されるか、製造時にプログラムされます |
| DevNonce | Join Requestごとに増加する乱数(16ビット)で、リプレイ攻撃を防ぎます |
Join Requestは、次を用いて計算されたMIC(Message Integrity Code)で認証されます: AppKey。これによりメッセージが改ざんされていないことが保証されます。
2。ネットワークサーバーは検証を行い、Join Acceptを送信します
Join Requestを受信すると、ネットワークサーバーは次の処理を行います:
Join Acceptには次が含まれます:
| フィールド | 説明 |
|---|---|
| JoinNonce | ネットワークサーバーが生成するランダム値(24ビット)で、鍵導出に使用される |
| NetID | ネットワーク識別子(24ビット) |
| DevAddr | 割り当てられたネットワークアドレス(32ビット) |
| DLSettings | ダウンリンク設定(RX2データレート、RX1オフセットなど) |
| RxDelay | 受信ウィンドウ遅延 |
| CFList | チャネル周波数のオプションリスト |
3。デバイスはセッション鍵を導出する
デバイスはAppKeyでJoin Acceptを復号し、AppKey、JoinNonce、DevNonce、NetIDからセッション鍵を導出する。
LoRaWAN 1.0.x(1.0.2 / 1.0.3 / 1.0.4)は2つの鍵を導出する:
簡略化した導出:
NwkSKey = aes_encrypt(AppKey, 0x01 | AppNonce | NwkID | DevNonce)
AppSKey = aes_encrypt(AppKey, 0x02 | AppNonce | NwkID | DevNonce)
LoRaWAN 1.1 は鍵分離を導入し、四つの鍵を導出します:
LoRaWAN 1.1 は AppEUI を JoinEUI に改名し、 NwkKey を AppKeyから分離することで、ネットワークレベルとアプリケーションレベルの鍵分離を可能にします — これはセキュアなローミングの基盤です。
ABPはJoin手続きを完全に省略します。デバイスは製造時にすべての通信パラメータを事前プロビジョニングされ、電源投入後すぐに送信を開始します。
以下は出荷前にデバイスへ書き込み、事前にネットワークサーバーへ登録しておく必要があります:
| パラメータ | 説明 |
|---|---|
| DevAddr | デバイスのネットワークアドレス(32ビット)。サーバーの割り当て内で一意である必要があります |
| NwkSKey | ネットワークセッションキー(128ビットAES) |
| AppSKey | アプリケーションセッションキー(128ビットAES) |
ABPデバイスにはDevEUI、JoinEUI、AppKeyは不要です(後でOTAAへ移行する予定がある場合を除く)。
ABPデバイスは電源投入後すぐに動作を開始します:
Join Request/Join Acceptのハンドシェイクはありません。
ABPデバイスはアップリンク(FCntUp)とダウンリンク(FCntDown)のフレームカウンタを管理する必要があります。ネットワークサーバーはリプレイ攻撃を防ぐためにこれらのカウンタを追跡します。デバイスが再起動してカウンタがサーバーが最後に記録した値より下にリセットされると、そのフレームは拒否されます。
一般的な2つのアプローチ:
ManThink(門思科技)は、デバイス接続、ネットワーク、データ活用に向けたIoT製品を提供しています。この記事の技術情報とあわせて、以下の製品情報をご覧ください。
| 項目 | OTAA | ABP |
|---|---|---|
| セキュリティ | 高 — キーはJoin手続きで導出され、送信されることはない | 低 — キーは製造時に書き込み、サーバー側に登録する必要があり、漏洩リスクがある |
| キーローテーション | 可 — 再Joinして新しいキーを取得 | 不可 — キーは固定で、変更にはデバイスの再書き込みが必要 |
| DevAddrの割り当て | ネットワークサーバーが動的に割り当て | 製造時に固定。一意性は手動で管理する必要がある |
| デプロイの複雑さ | デバイスはルートキーのみ必要で、残りはサーバーが処理 | デバイスとサーバーの両方で完全な事前設定が必要 |
| 最初のパケットまでの時間 | まずJoin手続きが必要(通常5~15秒) | 即時 — 電源投入後すぐに動作 |
| フレームカウンタの管理 | Join後はゼロから開始。競合の問題なし | 慎重な管理が必要。再起動によりフレームが拒否される可能性がある |
| ローミング | 対応(LoRaWAN 1.1のキー分離) | 非対応 |
| LoRaWAN 1.1 | 完全対応 — 1.1はOTAAに依存 | 1.1では非推奨 |
| デプロイ規模 | 本番フリートに適する | 小規模なテストに適する |
| ネットワーク切り替え | JoinEUIを変更して別のネットワークにJoin | すべてのパラメータの再書き込みが必要 |
「ABPはJoin手続きがないので電力を節約できる。」
そうでもありません。Join手続きのコストはごくわずかで、Join Request1回とJoin Accept1回、通常数秒で完了します。デバイスの数年にわたるバッテリー寿命と比べれば、Joinフェーズのエネルギーは無視できます。ABPが実際に節約するのは 開発時の設定作業 — そして本番環境では、その利便性はセキュリティの低下と運用負荷の増大という代償を伴います。
ThinkLinkでは:
| OTAA | ABP | |
|---|---|---|
| ひとことで言うと | Wi-Fiに接続するようなもの — 自動認証、自動アドレス割り当て | 固定電話のようなもの — 番号と回線が工場で事前設定済み |
| セキュリティ | 高 | 低 |
| 本番環境での推奨 | はい | いいえ(デバッグ/教育用途のみ) |
| LoRaWAN 1.1 | 必須 | 非推奨 |
結論: 本番環境ではOTAAを使用し、ABPはデバッグと教育用途にのみ使用してください。 デバイスが十台を超える場合、または物理的に制御できない環境にデバイスが設置される場合、OTAAが唯一の合理的な選択です。
LoRaWAN 1.0.4および1.1仕様に基づいて執筆。プロトコルの詳細はLoRa Alliance仕様書に従い、運用上の助言はThinkLinkプラットフォームの経験に基づきます。
ThinkLinkはManThinkのIoTプラットフォーム製品であり、LoRaWANネットワーク管理、デバイス運用、データサービスを提供します。