深入:LoRaWAN®终端设备激活¶
本文涵盖了LoRaWAN®终端设备激活深度。它是针对终端设备软件开发人员和管理人员的团队建设设备与罗拉®实现LoRaWAN v1.0.4链路层规范。本文可以帮助您获得的深刻理解激活终端设备是如何工作的,可用的选项和最佳实践。
已经在使用的软件等LoRaMAC-Node™处理终端设备激活吗?这篇文章给你的背景你需要了解软件是如何工作的,检查代码,获得信心,你的后端设备标准和最佳实践LoRaWAN链路层中定义的规范。
终端设备激活选项¶
所有参与LoRaWAN网络终端设备必须被激活。有两种激活方法可以选择:无线激活(OTAA)或激活的个性化(ABP)。
秘密OTAA和ABP激活方法每个结果会话密钥被终端设备和网络服务器,用于安全的消息在网络上发送和接收。ABP,这些会话密钥存储在终端设备在制造过程中。OTAA,会话密钥生成过程中一系列的交流与网络服务器。
OTAA是更安全的选择,因为可以随时更换钥匙重新加入网络。网络服务器还提供设置终端设备在OTAA加入过程优化正在进行的网络服务器和终端设备之间的通信。
实现OTAA除非你有强烈的理由不这样做。
激活后的数据存储在终端设备¶
三个数据在设备上设置的激活过程:网络会话密钥(NwkSKey),应用程序会话密钥(AppSKey),终端设备地址(DevAddr)。这些是生成和存储设备第一次尝试连接到网络设备实现OTAA OTAA过程,或直接存储在设备制造业设备实现ABP的时间。
网络会话密钥(NwkSKey)¶
网络服务器和终端设备都使用网络会话密钥(NwkSKey)来验证所有数据帧的完整性。此外,NwkSKey使用网络服务器和终端设备加密和解密MAC命令作为款发送数据帧。
使用NwkSKey完整性验证¶
每个LoRaWAN上行或下载包包含一个4-octet消息完整性代码(麦克风在PHY载荷),如图1所示。
计算麦克风在Mac头(MHDR),帧头(FHDR),框架端口(FPort)和帧负载(FRMPayload)使用NwkSKey在4.4节的指令之后,消息完整性代码规范(25页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
计算麦克风使用NwkSKey在发送上行链路终端设备。网络服务器验证麦克风使用相同的NwkSKey。
验证麦克风使用NwkSKey当收到下行从网络服务器。
验证麦克风确保数据没有被篡改。
使用加密的NwkSKey款数据帧¶
MAC命令发送的帧有效负载(FRMPayload)帧的端口(FPort)设置为0款数据帧,如图2所示。款数据帧加密使用NwkSKey。
加密和解密FRMPayload使用NwkSKey4.3.3节中说明后,MAC帧载荷的加密规范(24页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
加密FRMPayload使用NwkSKey当发送款数据帧的上行链路终端设备。
解密FRMPayload使用NwkSKey当收到款数据帧下行从网络服务器。
加密FRMPayload提供安全和防止任何人检查这些信息。
阅读更多关于款数据帧的发送和接收MAC命令部分我们的论文深入了解LoRaWAN®MAC命令。
警告
当你加密FRMPayload,确保你计算麦克风加密后,使用加密FRMPayload。如果你计算麦克风在未加密的FRMPayload,麦克风验证将会失败。
应用程序会话密钥(AppSKey)¶
应用程序服务器和终端设备使用AppSKey加密和解密帧有效负载(FRMPayload)领域的特定于应用程序的数据帧。
请注意
应用服务器是指与网络服务器分开LoRaWAN 1.0.4规范。终端设备的消息首先被发送到网络服务器。在内部,然后网络服务器将特定于应用程序的数据帧的帧载荷传递给应用服务器。
分离网络服务器和应用服务器的一个好处是,网络服务器不需要知道AppSKey因此不能解密应用程序消息。
了解更多关于分离的网络服务器和应用程序服务器TS2-1.1.0 LoRaWAN后端接口规范。
使用加密的AppSKey特定于应用程序的数据帧¶
特定于应用程序的数据帧数据帧发送帧的端口(FPort)设置1到255之间,表明框架有效负载(FRMPayload)包含应用程序数据如图3所示。特定于应用程序的数据帧包含特定于终端设备的数据用例,如温度传感器的温度读数。
加密和解密FRMPayload在使用特定于应用程序的数据帧AppSKey4.3.3节中说明后,MAC帧载荷的加密规范(24页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
加密FRMPayload使用AppSKey在发送特定于应用程序的数据帧的上行链路终端设备。
解密FRMPayload使用AppSKey当收到特定于应用程序的数据帧下行从网络服务器。
加密FRMPayload提供安全和防止任何人检查这些信息。
警告
当你加密FRMPayload,确保你计算麦克风加密后,使用加密FRMPayload。如果你计算麦克风在未加密的FRMPayload,麦克风验证将会失败。
设备地址(DevAddr)¶
设备地址(DevAddr)是一个32位的标识符分配的网络服务器。DevAddr使用的NwkSKey在当前的网络识别设备。
警告
有可能网络服务器分配相同的DevAddr到多个设备。这并不造成任何问题在网络服务器上,因为网络服务器标识设备使用的组合DevAddr和NwkSKey,NwkSKey是独一无二的每个设备。使用设备行(DevEUI)来唯一地标识你的设备在您自己的应用程序;这是固定的,不会改变,当你移动设备之间的网络。
无线激活(OTAA)设备配置¶
OTAA是最安全的连接到网络服务器的方法。在本节中,我们解释了OTAA过程,如图4所示,从设置初始密钥通过连接过程和发送第一个消息。
步骤1:提供终端设备与钥匙¶
必须提供以下键(存储)终端设备在非易失性内存(NVM)当设备制造:设备Extended-Unique-Identifier (DevEUI),加入Extended-Unique-Identifier (JoinEUI),并且应用程序键(AppKey)。
你负责获取这些键如本节所述。
请注意
一个良好的实践是打印DevEUI封面上的终端设备,以缓解设备管理。文档TR005 LoRaWAN设备识别二维码解释了如何生成一个二维码包含DevEUI和JoinEUI。不包括AppKey在这个二维码,不会显示它的封面上末端设备。
设备行(DevEUI)¶
DevEUI是全球唯一的64位标识符在电气和电子工程师学会(IEEE)行- 64地址空间,惟一地标识设备。
无线电模块的生产商可能已经与有效配置模块DevEUI。如果没有,或者如果你不能使用供应DevEUI,你必须获得自己的全局唯一的DevEUI。了解获得商用DevEUI通过阅读2.2节,Extended-Unique 2.5.1标识符(第7页)和部分,设备行(8页)TR007发展LoRaWAN V1.0.0®设备。获得进一步的建议DevEUI被发现在发展LoRaWAN-based设备:事情要知道,DevEUI。
警告
至关重要的是,你获得独一无二的地址为你当你把它们投入生产的设备。不要发明自己的DevEUIs。一旦你的设备被运送到客户,可以加入到任何网络;如果另一个网络上的设备已经使用相同的DevEUI作为你的设备,你的客户不能将你的设备添加到他们的网络。
此外,使用一个全局唯一标识符使你的设备可以使用LoRaWAN漫游。如果服务器支持的网络终端设备注册,漫游使使用网关提供的其他网络服务器参与漫游方案与您自己的网络提供商。了解更多关于11节中漫游,漫游过程(22页)LoRaWAN®后端接口技术规范(TS002-1.1.0)。
加入服务器标识符(JoinEUI)¶
连接服务器标识符(JoinEUI)允许支持使用一个连接服务器,它是独立于网络服务器,提供一个额外的安全层,是不可能的网络服务器访问AppSKey因此网络服务器无法解密的特定于应用程序的消息发送到和设备。了解更多关于网络服务器和连接服务器的分离TS2-1.1.0 LoRaWAN后端接口规范。
的JoinEUI一个标识符在电气和电子工程师学会(IEEE)行- 64地址空间标识连接服务器用来处理连接的过程。这个连接服务器必须与设备的供应AppKey和DevEUI在加入过程开始之前。
的JoinEUI是提供给你的运营商加入服务器使用。许多设备将使用相同的JoinEUI。
如果你不使用一个连接服务器与网络服务器分开,选择自己的行JoinEUI使用在你所有的设备上。使用一个有效的行为JoinEUI将使你在未来使用外部连接服务器。
警告
没有发明你自己的吗JoinEUI。不生成唯一JoinEUI为每个设备。
请注意
在LoRaWAN链路层规范1.0.4之前,JoinEUI被称为AppEUI。
应用键(AppKey)¶
应用键(AppKey)是一个高级加密标准(AES) 128位根键独特的终端设备。使用AppKey终端设备和连接服务器来推导出NwkSKey和AppSKey会话密钥OTAA过程,验证连接请求和连接的完整性接受OTAA过程中发送的消息的一部分麦克风。
2.5.3阅读部分,根键(9页)TR007发展LoRaWAN V1.0.0®设备学习如何安全地生成和存储根键等AppKey。
步骤2:提供网络服务器和连接服务器与钥匙¶
你启动OTAA加入流程之前,您必须注册键与网络服务器,如果使用,连接服务器。这个过程取决于你是否使用一个单独的连接服务器。
如果您正在使用一个单独的连接服务器:
连接服务器上注册设备,提供DevEUI和AppKey。
你或你的客户将在网络服务器上注册设备DevEUI,AppKey,JoinEUI启动前加入过程描述如下。
如果你不使用一个单独的连接服务器:
你或你的客户将在网络服务器上注册设备DevEUI和AppKey启动前加入过程描述如下。
请注意
如果你的网络服务器所需要的领域JoinEUI或AppEUI你不使用一个单独的连接服务器,设置这个值JoinEUI你在你的设备定义。指导客户在附带的信息做同样的设备,所以他们并不感到困惑。
步骤3:终端设备发送连接请求¶
发起连接过程,最后加入请求帧包含设备问题JoinEUI,DevEUI和一个DevNonce如图8所示。
加入请求负载领域¶
的JoinEUI和DevEUI存储在设备上节中解释吗步骤1:提供终端设备与钥匙。处理连接请求的代码从设备中检索这些键。
的DevNonce是一个计数器,应该从0开始,必须增加每一个连接请求被发送到网络服务器。的DevNonce不应该被重用。如果没有加入接受接收到消息,和重复相同的加入请求,那么DevNonce仍必须增加。
警告
网络服务器应该拒绝使用以前发送请求DevNonce,所以存储DevNonce在非易失性存储器(NVM)之间存在权力周期。如果DevNonce动力循环后复位为0,和网络服务器是符合LoRaWAN 1.0.4规范,设备将无法加入网络,因为DevNonce并没有增加。
计算消息完整性代码(麦克风)¶
计算消息完整性代码(麦克风在Mac头()MHDR),JoinEUI,DevEUI,DevNonce使用AppKey6.2.5节指令后,计划框架(45页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。的麦克风使用网络服务器,以确保消息在传输过程中没有被修改。
加入请求传输¶
加入的多个传输请求应在所有默认通道允许在该地区和一系列的数据率允许在该地区,以确保消息到达网关。
遵循第7节中描述的传输补偿过程,重发倒扣(49页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。这些指导方针确保传输时间跨多个终端设备是随机足以避免洪水网络如果他们都试图连接在同一时间。
按照3.7节中的步骤,避免同步行为(16页)的文档TR007发展LoRaWAN®设备确保随机性网关和最大化网络容量的传输时间和频道选择当发送连接请求。
如果你在一个地区的运作与固定通道计划,阅读更多关于使用频道3.2节中,固定频道计划加入文档的流程优化(12页)TR007发展LoRaWAN®设备。
进一步指导传播责任周期,您应该使用渠道,利率应该使用不同地区之间的数据。找到你所在地区的指导方针,开放RP002-1.0.3 LoRaWAN区域参数规范,定位你的设备将在部分区域。的指导方针在分段资格加入请求地区名称带通道的频率。例如,对于该地区eu863 - 870小节标题eu863 - 870带通道的频率在25页。
请注意
记得要增加DevNonce值的每一个传输连接请求。
步骤3 b:连接服务器处理连接请求¶
如果使用一个单独的连接服务器,服务器通过网络连接请求,连接服务器处理请求。如果不使用一个单独的连接服务器,网络服务器的连接服务器组件处理该请求。
连接服务器使用128位AES加密算法来计算的NwkSKey和AppSKey。两个钥匙,是使用的加密密钥AppKey在步骤2提供(提供网络服务器和连接服务器与键)。输入加密的数据包括连接请求DevNonce,连接服务器nonce (JoinNonce)生成的连接服务器,服务器的网络标识符(NetID)。当生成NwkSKey,服务器还包括一个值0 x01
区分的关键AppSKey它使用一个值的0 x02
。
的NwkSKey提供给网络服务器连接服务器,以便它可以用来签名和验证信息和加密款数据帧的完整性。
的AppSKey加入到应用程序服务器提供的服务器,以便它可以用来加密和解密应用程序数据帧。
为了使终端设备可以推出相同的键作为网络服务器,JoinNonce和NetID在下一步中返回给终端设备,连接接受。结束,设备将获得相同的键,如下所述。
步骤3 c:网络服务器发送和接受¶
如果连接被接受,网络服务器准备加入接受帧包含生成所需的字段NwkSKey和AppSKey,连接服务器nonce (JoinNonce),加入服务器网络标识符(NetID)。网络服务器提供的额外字段并添加到加入接受:终端设备地址(DevAddr),下行配置设置(DLSettings传输和开放之间的延迟),所需的接收窗口(RXDelay)和一个可选的网络参数列表(CFList)。在下一步我们描述与每个字段终端设备上应该做什么。
的麦克风计算使用AppKey在Mac头(MHDR)中的所有字段加入接受框架。
的JoinNonce,NetID,DevAddr,DLSettings,RXDelay,CFList,麦克风然后加密使用吗AppKey的秘密。输出是传播接受框架连接,作为解释下一步处理。
请注意
连接服务器加密连接接受电子码书中使用AES解密函数(ECB)模式。终端设备必须运行AES加密函数在ECB模式加入接受,而不是AES解密功能。这意味着终端设备只需要支持AES和AES加密解密。阅读更多关于此节6.2.6 Join-Accept帧(45页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
警告
如果连接不被接受,那么没有响应返回给终端设备。
步骤3 d:终端设备处理和接受¶
如果成功连接服务器处理连接请求,终端设备接收加密的加入应该接受响应框架。
解密加密字段¶
加密字段包含所有加入接受字段和麦克风是LoRaWAN PHY载荷内发现包如图9所示。
请注意
具体的加密的有效载荷的大小取决于是否有网络参数(CFList)提供与接受。自MHDR在1八隅体长度是固定的,麦克风在4个八位字节长度是固定的,你解密所有剩下的八位字节之间的第一个八位字节和最后4个八位字节。
包含加密解密八位字节负载使用AES加密函数在电子代码书(ECB)模式,与AppKey的秘密。
警告
加密连接接受帧使用AES加密解密函数在ECB模式中,而不是AES解密。这是为了避免终端设备实现AES加密和解密。
解密后返回的字段,如图10所示,加入服务器nonce (JoinNonce),加入服务器网络标识符(NetID),终端设备地址(DevAddr),下行配置设置(DLSettings传输和开放之间的延迟),所需的接收窗口(RXDelay)和可选的网络参数列表(CFList),以及一个重复的消息完整性代码(麦克风),还发现在PHYPayload。
请注意
将解密后的输出划分为单个字段时,注意到的字段CFList都是固定长度(12个八位字节总数),和麦克风后CFList是固定的长度(4个八位字节)。这意味着剩下的八位字节,如果有剩余,包括可选的CFList字段。
验证消息完整性代码(麦克风)¶
计算消息完整性代码(MIC)来验证加入接受消息的完整性,确保它没有被篡改。计算麦克风在Mac头(MHDR),JoinNonce,NetId,DevAddr,DLSettings,RXDelay,CFList使用AppKey6.2.6节在第1481行指令后,Join-Accept帧(45页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
确认麦克风你计算匹配麦克风返回的PHY载荷,以及麦克风加密的有效负载中发现只是解密。如果任何麦克风不匹配,忽略此消息。
检查连接Nonce防止连接接受重播攻击¶
敌人位置范围内的终端设备可以记录加入接受信息,然后回放消息以应对未来加入请求签发的设备。如果终端设备接受这重播加入接受,它将生成会话密钥使用JoinNonce在老加入接受,这将是不同的JoinNonce使用的网络服务器。因此,终端设备将产生不正确的会话密钥,将拒绝任何进一步上行链路和网络服务器。这种类型的攻击是一节更详细地描述问题# 1:Join-accept回放(6页)的技术建议文档技术建议防止状态同步问题LoRaWAN®1.0。x加入程序。
有助于防止加入接受重放攻击,终端设备可以存储每一个JoinNonce所收到的加入接受,拒绝新加入接受,如果它包含了JoinNonce在存储列表。加入目前必须存储在非易失性内存(NVM),这样他们不会丢失设备时骑车。然而,存储每一个加入Nonce将消耗大量的内存。因此,作为一个最小值,设备应该存储之前加入目前的合理数量。这将防止连接接受再现攻击的基于连接接受发送在一个合理的时间内攻击之前。
一节题为补救# 1:防止Join-accept回放(8)页的技术建议文档技术建议防止状态同步问题LoRaWAN®1.0。x加入程序建议加入服务器使用一个特定于设备的递增计数器JoinNonce,每个加入增量曾接受发表。这意味着JoinNonce收到了每个加入接受1,2、3等终端设备然后检查JoinNonce在加入接受高于先前存储JoinNonce,忽视整个加入接受,如果它不是。如果连接被接受,接受新的JoinNonce存储在NVM。实现这个检查时,您必须确定您所使用的网络服务器或者加入服务器支持一个递增JoinNonce。检查文档在加入服务器/网络服务器或联系你的供应商。终端设备实现这张支票可以不再是搬到一个网络服务器或加入服务器没有实现一个递增JoinNonce。确保您的终端设备可以移动/加入服务器和网络服务器之间保持尽可能的安全,你可以有终端设备上的软件启用或禁用递增JoinNonce通过一个下行的行为。
警告
增量JoinNonce验证检查意味着当设备之间移动网络,连接将被拒绝接受,即使新的网络服务器/加入服务器也使用增量JoinNonce。一些网络服务器允许您定义的值JoinNonce。在一个网络服务器/加入服务器不支持设置初始的能力JoinNonce,你需要计划一个选项,允许您重置最后存储JoinNonce在设备上通过下行或使用一个硬连接的连接。
生成会话密钥¶
你使用相同的算法作为加入服务器用于生成NwkSKey和AppSKey会话密钥。使用生成的密钥AppKey随着JoinNonce,NetID,DevNonce在解密加入接受有效载荷。按照说明在部分6.2.6线1479年和1480年,Join-Accept帧(45页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范生成密钥。
请注意
存储NwkSKey和AppSKey会话密钥在非易失性内存(NVM)来避免重新加入网络设备时骑车。
存储设备地址(DevAddr)¶
设备地址(DevAddr)中加入接受用于上行帧从后端设备发送激活过程。存储DevAddr在非易失性存储器(NVM)准备发送上行链路时使用。
处理下行配置设置(DLSettings和RXDelay)¶
下行配置设置字段(DLSettings)包含两个字段,设置RX1DROffset和RX2DataRate字段。
RX1DROffset使用网络服务器调整之间的数据率抵消上行和第一接收窗口(RX1)。
RX2DataRate使用网络服务器调整数据率第二接收窗口后上行(RX2)。
后,RX1DROffset和RX2DataRate最初在这个配置加入接受,这些字段更新通过接收MAC命令窗口参数(RXParamSetupReq)。这个命令的文档也作为这些字段的详细指南,发现在5.4节中,接收窗口参数(第33页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
的RXDelay字段定义之间的延迟的上行传输和开幕式的第一接收窗口。
后,RXDelay最初加入接受配置,更新价值通过接收窗口时机MAC命令(RXTimingSetupReq)▽字段。这两个字段遵循相同的约定。了解RXDelay领域,读相同的文档格式▽在5.7节,设置延迟TX和RX(39页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
数据率抵消、数据速率和延时沟通应该使用这些字段在所有进一步的传播,直到通知否则通过相应的MAC命令(RXParamSetupReq和RXTimingSetupReq),应该替换默认区域设置这些值。
MAC层设置默认值¶
后设置传递的值RX1DROffset,RX2DataRate,RXDelay字段和初始数据速率,最终设备现在应该设置区域所有剩余的MAC层参数默认设置,包括传输能量的,和通道配置,也部分中引用默认使用ADR上行之前设置我们的实现自适应数据速率。
网络参数(CFList)¶
网络参数的列表可能会提供的CFList字段。这一领域可能表明您的终端设备应使用的渠道。这些参数的细节,以及他们是否会提供有针对性。找到你所在地区的详细信息,开放RP002-1.0.3 LoRaWAN区域参数规范,定位你的设备将在部分区域。在分段资格的指导方针地区名称Join-Accept CFList。例如,对于该地区eu863 - 870小节标题eu863 - 870 Join-Accept CFList27页。
重置帧计数器(FCntUp和FCntDown)¶
重置帧计数器(FCntUp和FCntDown)值为0。
后的第一个终端设备发送的上行激活包括FCntUp设置为0。FCntUp增加了1对所有后续新上行消息。
当每一个新的下行接收来自网络服务器FCntDown是递增的。如果新的下行包含一个FCntDown这是低于FCntDown前收到的消息,下行被忽略。
了解更多关于部分4.3.1.5帧计数器,计数器(22页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
请注意
帧计数器不需要存储在非易失性内存(NVM),除非能力骑自行车不触发重新加入你的设备。通常,一个动力循环将导致设备加入网络服务器,必须重置计数器。
第四步:终端设备发送第一个上行¶
终端设备现在可以发送第一上行使用新的会话密钥FCntUp设置为新值为0。
建议第一次发送的消息包含设备信息,包括固件版本。阅读更多关于第一上行的建议我们的论文发展LoRaWAN-based设备:事情要知道,广告在0号帧中固件版本和状态。
加密数据帧包含一个负载使用NwkSKey节中描述使用加密的NwkSKey款数据帧。
加密数据帧包含一个特定于应用程序的负载使用AppSKey中描述的使用加密的AppSKey特定于应用程序的数据帧。
计算使用的麦克风NwkSKey节中描述使用NwkSKey完整性验证。
了解更多关于发送上行链路在第四节,MAC帧格式(15页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
完成类C的加入过程设备¶
如果您的终端设备使用C类,年底前可以收到下行设备在任何时候除非传输,网络服务器将不会开始发送下行,直到它首先接收终端设备的上行。
你应该立即向服务器发送消息,需要确认,确认上行,为例。继续发送此消息,尊重工作周期和重新传输指南,直到收到相应的下行从网络服务器。
如果终端设备发送消息定义的变量的次数ADR_ACK_LIMIT,仍然没有收到响应,开始加入再发送另一个连接请求。ADR_ACK_LIMIT区域中定义参数的值文档中默认设置。在版本RP002-1.0.3,ADR_ACK_LIMIT设置为64。
阅读更多关于完成类C的加入程序设备部分补救# 3:快速键确认(9页)的技术建议文档技术建议防止状态同步问题LoRaWAN®1.0。x加入程序。
重新加入网络¶
为了避免意外成为从网络断开,您应该实现的策略,确保设备保持联系。在我们的论文读到一些推荐策略发展LoRaWAN-based设备:事情要知道,加入和重新加入。
激活的个性化(ABP)¶
会话密钥(NwkSKey和AppSKey),DevAddr,DevEUI都存储在非易失性存储器(NVM)在设备制造过程中。
设置FCntUp值为0,并存储在NVM确保帧计数器值永远不会重置,这将导致上行链路被拒绝的网络服务器。
没有进一步加入过程。这些字段不能改变一旦设备已经创建,除非设备重新编程。
如果可能的话,允许支持ABP OTAA激活设备供应他们DevEUI,JoinEUI,AppKey,以及确保他们可以处理上述OTAA过程。这使得设备操作作为一个OTAA设备。能够激活OTAA下行可以通过程序控制将被激活,或从一个硬连接的电缆。
提供终端设备与钥匙¶
设备行(DevEUI)¶
1.0.4 LoRaWAN规范介绍了ABP设备供应的要求DevEUI以及NwkSKey,AppSKey,DevAddr。按照说明的部分设备行(DevEUI)学习如何获得DevEUI。
设备地址(DevAddr)¶
如果你的设备将在公共网络,注册DevAddr必须提供的网络服务器。如果网络服务器是私人,你可以生成自己的DevAddr遵循指导方针但是节终端设备地址(42页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。获得进一步的建议DevAddr被发现在发展LoRaWAN-based设备:事情要知道,通过个性化设备地址和激活。
警告
ABP设备公共网络必须使用DevAddr提供的网络服务器。这意味着设备将与网络,不能移动到另一个网络。支持OTAA激活,使设备搬到另一个网络。
会话密钥(NwkSKey和AppSKey)¶
的NwkSKey和AppSKey会话密钥类型的根密钥。2.5.3阅读部分,根键(9页)TR007发展LoRaWAN V1.0.0®设备学习如何安全地生成和存储根键。
警告
一个良好的实践是打印DevEUI封面上的终端设备,以缓解设备管理。不包括会话密钥NwkSKey或AppSKey封面上的设备。
帧计数器(FCntUp和FCntDown)¶
集FCntUp和FCntDown为0,将它们存储在非易失性内存(NVM),以确保持续电力设备时骑车。
第一次发送的上行设备应该结束FCntUp设置为0。FCntUp是为每个后续新的上行消息增加了1。
当每一个新的下行接收从网络服务器FCntDown是递增的。如果新的下行包含一个FCntDown这是低于FCntDown前收到的消息,下行被忽略。
了解更多关于部分4.3.1.5帧计数器,计数器(22页)TS001-1.0.4 LoRaWAN®L2 1.0.4规范。
警告
如果你没有商店FCntUp和FCntDown在NVM,当设备是电力骑车FCntUp将被重新设置为0,和网络服务器将拒绝以来的上行吗FCntUp将低于之前的。该设备将断开连接。来解决这个问题,您可以修改的设置终端设备在网络服务器支持,或者你需要删除,然后重新添加该设备在网络服务器上。
终端设备激活最佳实践¶
列出关键的最佳实践中引用这个文件供您参考:
没有实现ABP,但是如果你一定要,也支持OTAA。
使用DevEUI无线电模块提供的制造商或获得一个有效的,全局唯一的DevEUI你自己的。
如果你使用一个单独的连接服务器,您必须使用的JoinEUI加入服务器提供的;否则,使用单个行,你自己的作为JoinEUI为你所有的设备上。
生成AppKey遵循安全的根密钥生成的建议。
选择一个方法来防止加入接受继电器攻击,所述检查连接Nonce防止连接接受重播攻击。
打印二维码包含附加到最后设备DevEUI和JoinEUI。不包括AppKey(对于OTAA)或NwkSKey/AppSKey在这个二维码(ABP)。
确保动力循环不需要设备重新加入,存储AppSKey,NwkSKey,最后用DevNonce,任何JoinNonce非易失性内存中的值(NVM)。如果你使用ABP,FCntUp还应该存储在NVM。
结论¶
在本文中,我们解释端设备激活端设备制造商实现LoRaWAN 1.0.4链路层规范。现在,您应该了解ABP和OTAA之间的差异,以及如何实现每个规范。你现在也应该有一个好的理解终端设备激活最佳实践,确保你的设备仍然安全,以及如何有效地加入网络。
进一步的阅读¶
阅读这些技术规范的全面了解LoRaWAN v1.0.4和相关的概念:
阅读这些正式的技术建议的最佳实践的概述:
阅读我们的论文其他LoRaWAN 1.0.4概念:
查看终端设备激活是如何实现的一个例子在罗拉MAC层实现LoRaWAN链路层规范1.0.4在C语言中,下载LoRaMAC-Node终端设备堆栈的实现。阅读我们的LoRaMAC-Node动手实验室学习如何使用LoRaMAC-Node参考实现。