为什么 IBM 用于 abp 激活的 arduino-lmic 示例只有 2 个密钥?

物联网 罗拉万
2021-06-02 07:47:46

据我所知,LoraWan v1.1 规范使用以下键:

  • FNwkSIntKey:为了确保节点发送到服务器的数据的消息完整性。
  • SNwkSIntKey:为了保护节点从网络接收的数据的消息完整性。
  • NwkSEncKey:为了加密通过网络传输的有效载荷数据。

此外,我还看到在执行连接过程时还支持以下键:

  • JSIntKey:在加入过程中用于消息完整性。
  • JSEncKey:在加入过程中用于消息加密。

此外,我还使用 IBM 的 lmic 库查看了当前的 abp 激活代码示例

根据片段,我只看到了一个网络会话密钥和一个应用程序会话密钥:

static const PROGMEM u1_t NWKSKEY[16] = { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C };

static const u1_t PROGMEM APPSKEY[16] = { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C };

我想知道为什么他们只有 2 个会话密钥。所以我想问:

  • 他们支持 1.0.x 版而不是最新的 1.1 版吗?
  • 如果他们支持 1.1 版本,他们是否只使用 2 个键来实现向后兼容性(文档指出FNwkSIntKeySNwkSIntKeyNwkSEncKey在向后兼容性的情况下应该具有相同的值)?
  • 如果是,我将如何使用它来支持 LoraWan 的完整非向后兼容规范 1.1?
1个回答

他们支持 1.0.x 版而不是最新的 1.1 版吗?

的确。

虽然我不确定原始 LMiC 库的状态,但您所指的 Arduino 端口基于 LMiC 1.5,并且确实仅支持 LoRaWAN 1.0.x。它的README 中没有明确指出,但是查看更改您会发现最后一次有意义的提交可以追溯到 2017 年 8 月,而 LoRaWAN 1.1.x 直到当年 11 月才发布。

请注意,您的 LoRaWAN 提供商可能也不支持 1.1。(比如The Things Network的公网目前只支持1.0.x。)