LoRaWAN的DevEUI、AppEUI和AppKey

19

我正在尝试理解来自LoRaWAN 1.2规范的三个魔法LoRaWAN ID。我的理解是:

  • DevEUI类似于MAC地址
  • AppKey类似于公钥(大致如此...)
  • AppEUI类似于端口号

现在我有一个问题,就是不明白究竟由负责创建这些ID:

  • DevEUI可以从LoRa芯片的内部ID寄存器生成(我正在使用Murata的ABZ型芯片)
  • AppKey:每个终端节点是否应该具有独特的键值? 我应该选择一个随机的,还是询问LoRaWAN提供商(例如Objenious)?
  • AppEUI:应该对每个终端节点通用(我想应该是这样吧)? 我应该选择一个随机的,还是向LoRaWAN提供商询问?
3个回答

14
DevEUI是用于标识设备的IEEE EUI64地址空间中的ID,由设备制造商提供。存在一种已弃用的算法,用于将48位MAC地址转换为EUI64。对于具有6个字节的MAC地址(例如01 02 03 04 05 06),在中间放置ff fe(例如01 02 03 ff fe 04 05 06)。此算法已被弃用,因为它可能会导致与其他DevEUI发生冲突。在空中激活期间,向设备分配DevAddr。之后,在LoRaWAN协议中使用此DevAddr。DevEUI以未加密的形式发送。
JoinEUI(曾称为AppEUI)是IEEE EUI64地址空间中的全球应用程序ID,用于在空中激活期间标识加入服务器。对于非私有网络,它对应于joineuis.lora-alliance.org的子域。通过DNS查找此服务器名称以找到加入服务器的IP地址。这在LoRaWAN™ Back-End Interfaces v1.0中有描述。

AppKey是在每次空中激活期间用于消息加密的密钥。激活后,将使用AppSKey。知道AppKey的侦听器可以推导出AppSKey。因此,您希望保持AppKey的机密性。通信渠道的哪一侧创建它并不重要。您只需要确保它是随机的。


谢谢。是我还是LoRaWAN网络提供商生成JoinEUI / AppEUI?我听说我应该向IEEE请求一种OUI范围来进行设置... - Matthieu
1
由于JoinEUI标识了加入服务器,因此只能由加入服务器的所有者提供。 - Xypron
好的,明白了。那么我应该为DevEUI注册IEEE,还是使用LoRa芯片制造商提供的ID? - Matthieu
1
由于DevEui与加密无关,并且由制造商提供的DevEui是全球唯一的,因此我建议您继续使用制造商提供的DevEui。 - Xypron
谢谢确认。现在我有足够的声望可以点赞了,给你+1 :) - Matthieu

8
DevEUI是IEEE EUI64地址空间中的全局终端设备ID,可唯一标识终端设备。

用户可以派生自己的DevEUI。

AppKey是特定于终端设备的AES128根密钥。每当终端设备通过空中激活(OAT)加入网络时,AppKey用于派生特定于该终端设备的会话密钥NwkSKey和AppSKey,以加密和验证网络通信和应用程序数据。

AppKey对于每个设备都应该是唯一的。用户可以派生自己的AppKey。

AppEUI是IEEE EUI64地址空间中的全球应用程序ID,可唯一标识能够处理JoinReq帧的实体。在执行激活过程之前,AppEUI存储在终端设备中。

AppEUI可以对于每个设备都不同,也可以对于所有设备都相同。这还取决于您使用的应用服务器类型。
例如,在loraserver.io中,您可以拥有独特的AppKey、AppEUI和DevEUI,但在TheThingsNetwork中,您可以为一个应用或AppEUI注册多个设备。但请注意,AppKey和DevEUI对于每个终端节点始终应该是唯一的。

TheThingNetwork中设备概览的截图


我理解加入服务器提供了AppEUI,而终端节点设备将其包含在加入请求中。但是如果我购买现成的LoRa设备,我该如何将AppEUI输入到该设备中? - user2479653

0

将AppEUI包含在上传到设备(例如murata或带有lora的arduino等)的草图中,即可将其获取到LoRa设备中。


当然,但是谁告诉你要使用什么作为AppEUI? - Matthieu
管理连接服务器的实体必须在该服务器中设置AppEUI并将其提供给您。 - Xypron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接