入网与安全
OTAA 和 ABP、设备的密钥,以及为什么网关无法读取您的数据。
OTAA 和 ABP
OTAA(空中激活):设备通过入网请求(join request)加入网络。它需要三个值:
- DevEUI: 设备在全球唯一的编号(16 个十六进制字符),
- JoinEUI(以前称为 AppEUI):标识入网服务器,
- AppKey: 密钥(32 个十六进制字符)。
每次入网时,都会由这些值派生出新的会话密钥。OTAA 是推荐的方式。
ABP(个性化激活):会话密钥和设备地址是固定的。设备从不执行入网。这种方式更简单,但安全性较低,而且帧计数器不同步时容易出错。
加密
LoRaWAN 在两个层面上使用 AES-128:
- NwkSKey(LoRaWAN 1.1 中有多个网络密钥):防止消息被篡改;网络用它来检查消息是否真实。
- AppSKey: 对有效载荷进行端到端加密。网关和网络运营方只能看到加密后的字节;只有应用服务器才能将其解密。
帧计数器
每条消息都带有一个递增的计数器(FCnt)。网络会丢弃计数器值已经出现过的消息。这样可以防止有人重放旧的数据包。
如果 ABP 设备重启后从 0 重新开始计数,网络会丢弃它的消息。使用 OTAA 时,每次入网后计数器都会重新开始,这在 OTAA 下是正确的。