0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LoRaWAN协议之OTAA入网流程

454398 来源:博客园 作者:博客园 2020-12-04 14:52 次阅读

通过OTAA方式入网的设备,通讯时使用的KEY需要通过服务器获得,在入网之间,设备无法通讯。

相关的OTAA入网流程已经在上一章中讲解过了,有兴趣的可以去看看**LoRaWAN协议(五)__OTAA入网方式详述**

这一章讲解的是OTAA中的密钥生成过程。

其中使用到的库函数都是从semtech的官方库中来的,官方库代码链接:LoRaMac-node。

详解

设备在通讯时,会使用的密钥有NwkSKey 和AppSKey。

生成的公式如下:

NwkSKey = aes128_encrypt(AppKey, 0x01 | AppNonce | NetID | DevNonce | pad16)

AppSKey = aes128_encrypt(AppKey, 0x02 | AppNonce | NetID | DevNonce | pad16)

可以看到相关的参数一共有四个:
1.AppNonce
2.NetID
3.DevNonce
4.pad16

其中AppNonce、NetID、pad16 是产生于服务器的,DevNonce产生于node设备本身。

还是使用LoRaWAN协议(五)这篇文章中使用的包数据来进行分析。

这里,我们调用官方库的接口,因为我们这里只是熟悉协议,并不是要研究Key的生成算法

如果不明白数据协议的,可以去看LoRaWAN协议(五)这篇文章

提取DevNonce

1.GW->NS JSON包,从中提取出来DevNonce,

data为MAC层数据,为join_request message,其数据包格式为

base64解码:

x00 x01 x00 x00 x20 x00 xc5 x26

x2c x16 x10 x16 x20 x00 x77 x4a

x00 x54 x7b x40 x2d xe1 x9a

得到的数据:

可以得到DevNonce的值为0x7b54

提取AppNonce、NetID、CFList

2.NS->GW JSON包,其中txpk.data为包含了MAC层数据内容

data base64 decode:

x20 xfa x80 x29 x74 x3b x2d x2f

xc2 x99 x85 x42 x0f x2f x0a xde

x4e

根据LoRaWAN specification 可知,join_accept message的格式如下:

但是这个数据是加密的,需要使用AppKey进行解密

所以,我们需要先使用AppKey解密join_accept message

payload为join_accept message,此处为

x20 xfa x80 x29 x74 x3b x2d x2f

xc2 x99 x85 x42 x0f x2f x0a xde

x4e

解密之后的数据存放在LoRaMacRxPayload数组中。

uint8_t LoRaMacAppKey[] = {0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C};

LoRaMacJoinDecrypt( payload + 1, size - 1, LoRaMacAppKey, LoRaMacRxPayload + 1 );

LoRaMacRxPayload[0] = payload[0];

可以得到解析之后的数组

0x20 0x43 0x75 0xcb 0x24 0x0 0x0 0x2

0x0 0x0 0x48 0x3 0x0 0x82 0xc9 0xd0

0xf9

根据协议,我们可以得到:

AppNonce:x43 x75 xcb

NetID:x24 x0 x0

DevNonce:0x7b54

pad16:没有

至此,我们就具备生成密钥的所有参数了

产生AppSKey 和 NwkSKey

最后,我们再调用

LoRaMacJoinComputeSKeys( LoRaMacAppKey, LoRaMacRxPayload + 1, LoRaMacDevNonce, LoRaMacNwkSKey, LoRaMacAppSKey );

就可以生成AppSKey和NwkSKey了。

得到的NwkSKey为

0xde 0x3 0x33 0x1a 0xeb 0x42 0x54 0xe9

0x72 0x7b 0x6f 0xaf 0xbf 0x13 0xdb 0x3d

得到的AppSKey为

0xe0 0x46 0x9e 0x44 0x9c 0x57 0x47 0x8c

0xbe 0xa7 0x25 0xda 0x84 0xf0 0x13 0x97

对比之间抓包的AS->NS的入网信息

AS->NS 发送入网信息,可以知道,生成的密码是正确的了。

当然最好是进行实际负载的验证,我也写了两个小程序进行了验证,证明了这两个Key确实是正确的。

两个小程序的链接:

decode_aes_base64

generate_key

至此,我所知的OTAA入网方面的协议就完了。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9119

    浏览量

    85312
  • lorawan
    +关注

    关注

    3

    文章

    316

    浏览量

    23815
收藏 人收藏

    评论

    相关推荐

    基于lorawan协议的几种常见入网方法

    OTAA(Over-The-Air Activation),是LoRaWAN的一种空中入网方式。当node在上电的时候处于非入网状态时,需要先入网
    的头像 发表于 11-11 07:18 1.6w次阅读
    基于<b class='flag-5'>lorawan</b><b class='flag-5'>协议</b>的几种常见<b class='flag-5'>入网</b>方法

    st官网lora节点程序OTAA模式加入网络后,把网关与服务器的连接断开后,节点是否一直持续发送数据?

    st官网lora节点程序OTAA模式加入网络后,把网关与服务器的连接断开后,节点是否一直持续发送数据?
    发表于 04-28 06:54

    国产无线脉冲水表LoRaWAN方案分享

    功能,不受磁干扰。06LoRaWAN:持OTAA/ABP入网模式;支持CN470/EU868/AU915频段;支持指令设置ADR功能/发送确认或非确认报文/APP端口号/DevEui/AppEui/AppKey/DevAddr/
    发表于 04-03 15:45

    详解LoRaWAN网络架构和协议内容

    本文是一篇LoRaWAN的科普介绍,你已经在朋友圈看过无数蜻蜓点水的LoRaWAN文章,是时候来一篇真正的技术干货了。本文先从横向介绍下LoRaWAN的背后势力和网络部署情况,然后纵向讲解了网络架构和具体的
    的头像 发表于 06-16 07:18 2.6w次阅读
    详解<b class='flag-5'>LoRaWAN</b>网络架构和<b class='flag-5'>协议</b>内容

    介绍STM32和LoRaWAN协议及其应用

    入门指南_STM32和LoRaWAN协议
    的头像 发表于 07-02 08:29 1.1w次阅读

    LoRa节点如何以OTAA方式入网TTN服务器?

    前言 当你将LoRaWAN网关和LoRa节点都添加到TTN上,这时候,你需要通过ABP或OTAA方式,配置LoRa节点的参数,才能最终实现入网到TTN的目的。 如何将LoRaWAN网关
    发表于 05-15 15:01 1586次阅读

    LoRa节点如何以ABP方式入网TTN服务器?

    TTN,可参考文章LoRa节点如何以OTAA方式入网TTN。 如何将LoRaWAN网关添加到TTN上,可参考文章如何将树莓派网关连接到TTN手把手教你如何将树莓派网关连接到服务器第四
    发表于 05-19 09:33 2066次阅读

    OTAA和ABP入网方式的区别

    已获小七老师授权,小七老师是腾讯云在线课程讲师,点击链接可以观看课程视频。 LoRaWAN终端两种不同的入网方式,在LoRaWAN协议中,它们分别称为
    发表于 03-13 09:36 3225次阅读

    弱网区域下LoRa节点入网方式该如何选择

    小七老师授权,小七老师是腾讯云在线课程讲师,点击链接可以观看课程视频。 LoRa终端两种不同的入网方式,在LoRa协议中,它们分别称为OTAA和ABP。在上一篇文章“LoRaWAN终端
    发表于 03-13 09:34 891次阅读

    LoRaWAN网络协议的优势介绍

    物联网很多应用现在都普遍用了LoRa技术的芯片,然而没有使用LoRaWan网络协议。经过调查发现,没有使用LoRaWAN网络协议的原因有:应用点数少、规模小,有的是因为
    发表于 03-11 12:10 1180次阅读

    OTAA节点是如何入网

    在之前的文章中向大家介绍了LoRaWAN协议中节点的两种不同的入网方式OTAA和ABP的区别,本文主要介绍了OTAA节点是如何
    发表于 03-19 13:50 1211次阅读

    浅谈LoRa终端ABP入网方式

    在介绍ABP入网方式之前,我们先来回忆下OTAA入网方式。OTAA入网方式的节点需要发送一条Join Request
    发表于 04-02 17:30 1684次阅读

    基于安信可Ra-08系列LoRaWAN模组的入网流程

    最近LoRaWAN技术很火热,在我们的一些开发者交流群中,也经常有开发者讨论LoRaWAN的一些技术应用。今天就分享一篇教程——基于安信可Ra-08系列LoRaWAN模组的入网
    的头像 发表于 05-19 19:23 2345次阅读
    基于安信可Ra-08系列<b class='flag-5'>LoRaWAN</b>模组的<b class='flag-5'>入网</b><b class='flag-5'>流程</b>

    基于安信可Ra-08系列LoRaWAN模组的入网流程

    最近LoRaWAN技术很火热,在我们的一些开发者交流群中,也经常有开发者讨论LoRaWAN的一些技术应用。 今天就分享一篇教程——基于安信可Ra-08系列LoRaWAN模组的入网
    的头像 发表于 05-21 09:19 1394次阅读
    基于安信可Ra-08系列<b class='flag-5'>LoRaWAN</b>模组的<b class='flag-5'>入网</b><b class='flag-5'>流程</b>

    应用笔记 | STM32WL LoRa节点入网失败问题分析总结

    关键字:STM32WL,LoRaWAN入网OTAA   目录预览 1.引言 2.LoRaWAN网络架构 3.创建CubeMX工程 4.移植过程中可能遇到的问题 5.小结 0 1 前
    的头像 发表于 09-27 17:10 2271次阅读