這是一篇 《LoRaWANSpecification1R0》,即LoRaWAN協議規范中文版譯文,為了表示嚴謹,本尊將會在如下正文中拋棄之前一貫的不正經風格,盡力保證翻譯地準確、周到。
本文作者twowinter,轉載請注明作者:http://blog.csdn.net/iotisan/
第6章 終端激活
為了加入LoRaWAN網絡,每個終端需要初始化及激活。
終端的激活有兩種方式,一種是空中激活 Over-The-Air Activation (OTAA),當設備部署和重置時使用; 另一種是獨立激活 Activation By Personalization (ABP),此時初始化和激活這兩步就在一個步驟內完成。
twowinter 備注: ABP 這個詞不太好翻譯,通常會翻成個性化激活,也就是通過獨立配置參數的方式激活。但總感覺少點味道,與空中激活擺在一起,感覺獨立激活這個詞在語義上更有并列感。當然這是我的主觀感覺,建議大家和同行交流時,還是說 ABP激活 吧。
激活后,終端會存儲如下信息:設備地址(DevAddr),應用ID(AppEUI),網絡會話密鑰(NwkSKey),應用會話密鑰(AppSKey)。
6.1.1 終端地址(DevAddr)終端地址(DevAddr)由可標識當前網絡設備的32位ID所組成,具體格式如下:
Bit# | [31..25] | [24..0] |
DevAddr bits | NwkID | NwkAddr |
它的高7位是NwkId,用來區別同一區域內的不同網絡,另外也保證防止節點竄到別的網絡去。它的低25位是NwkAddr,是終端的網絡地址,可以由網絡管理者來分配。
6.1.2 應用ID(AppEUI) AppEUI是一個類似IEEE EUI64的全球唯一ID,標識終端的應用提供者。 APPEUI在激活流程開始前就存儲在終端中。
6.1.3 網絡會話密鑰(NwkSKey)
NwkSKey被終端和網絡服務器用來計算和校驗所有消息的MIC,以保證數據完整性。也用來對單獨MAC的數據消息載荷進行加解密。
6.1.4 應用會話密鑰(AppSKey)AppSKey被終端和網絡服務器用來對應用層消息進行加解密。當應用層消息載荷有MIC時,也可以用來計算和校驗該應用層MIC。
針對空中激活,終端必須按照加網流程來和網絡服務器進行數據交互。如果終端丟失會話消息,則每次必須重新進行一次加網流程。 加網流程需要終端準備好如下這三個參數:DevEUI,AppEUI,AppKey。
APPEUI在上面的6.1.2已經做了描述。
注意:對于空中激活,終端不會初始化任何網絡密鑰。只有當終端加入網絡后,才會被分配一個網絡會話密鑰,用來加密和校驗網絡層的傳輸。通過這樣,使得終端在不同網絡間的漫游處理變得方便。同時使用網絡和應用會話密鑰,使得網絡服務器中的應用數據,不會被網絡提供者讀取或者篡改。
6.2.1 終端 ID (DevEUI) DevEUI 是一個類似IEEE EUI64的全球唯一ID,標識唯一的終端設備。
6.2.2 應用密鑰(AppKey) AppKey 是由應用程序擁有者分配給終端,很可能是由應用程序指定的根密鑰來衍生的,并且受提供者控制。當終端通過空中激活方式加入網絡,AppKey用來產生會話密鑰NwkSKey和AppSKey,會話密鑰分別用來加密和校驗網絡層和應用層數據。
6.2.3 加網流程 從終端角度看,加網流程是由和服務器的兩個MAC命令交互組成的,分別是 join request 和 join accept。
6.2.4 Join-request 消息 加網流程總是由終端發送 join-request 來發起。
Size (bytes) | 8 | 8 | 2 |
Join Request | AppEUI | DevEUI | DevNonce |
join-request 消息包含了AppEUI 和 DevEUI ,后面還跟了2個字節的聲明 DevNonce。
DevNonce 是一個隨機值。網絡服務器為每個終端記錄過去的 DevNonce 數值,如果相同設備發出相同的 DevNonce 的join request就會忽略。
join-request 消息的MIC數值(見第4章 MAC幀格式)按照如下公式計算:
cmac = aes128_cmac(AppKey, MHDR | AppEUI | DevEUI | DevNonce) MIC = cmac[0..3]
join-request 消息不用加密。
6.2.5 Join-accept 消息 待補充。在某些情況下,終端可以獨立激活。獨立激活是讓終端繞過 join request - join accept的加網流程,直接加入到指定網絡中。
獨立激活終端,意味著 DevAddr 和兩個會話密鑰 NwkSKey 和 AppSKey 直接存儲在終端中,而不是DevEUI,AppEUI,AppKey。終端在一開始就配置好了入網必要的信息。
每個終端必須要有唯一的 NwkSKey 和 AppSKey。這樣,一個設備的密鑰被破解也不會造成其他設備的安全性危險。創建那些密鑰的過程中,密鑰不允許通過公開可用信息獲得(例如節點地址)。
新聞熱點
疑難解答