31个深度问答,揭开LoRa背后那些事儿
LoRa 是LPWAN通信技术中的一种,是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。这一方案改变了以往关于传输距离与功耗的折衷考虑方式,为用户提供一种简单的能实现远距离、长电池寿命、大容量的系统,进而扩展传感网络。目前,LoRa 主要在全球免费频段运行,包括433、868、915 MHz等。
再深入了解LoRa之前,我们先从LoRa联盟最新白皮书开始,聊聊LoRa那些事
LoRa联盟最新白皮书:为IoT应用供应商提供完整的端对端加密
安全是所有应用场景的基本前提,所以从一开始在LoRaWAN协议中就对安全性进行了设计。然而安全包含众多方面,尤其是LoRaWAN的加密机制需要特殊的解释。
所以此白皮书将会对当前LoRaWAN协议的安全性进行说明。首先会针对协议中的安全属性进行阐述,然后呈现具体的实现细节,最后对一些LoRaWAN安全性上的设计进行解释。
LoRaWAN 安全属性
LoRaWAN的安全性设计原则要符合LoRaWAN的标准初衷,即低功耗、低复杂度、低成本和大扩展性。由于设备在现场部署并持续的时间很长(往往是数年时间),所以安全考虑一定要全面并且有前瞻性。LoRaWAN安全设计遵循先进的原则:标准的采取,算法的审查,以及端到端的安全机制。接下来我们会对LoRaWAN安全性的基本特性进行描述:包括双向认证、完整性校验和保密机制。
双向认证作为网络连接的过程,发生在LoRaWAN终端节点与网络之间。这确保只有真正的和已授权的设备才能与真实的网络相连接。
LoRaWAN的MAC和应用消息是“生来”经过认证、完整性保护和加密的。这种保护和双向认证一同确保了网络流量没有改变,是来自一个合法的设备,而不是“窃听者”,或者“流氓”设备。
LoRaWAN安全性进一步为终端设备和服务器之间的数据交换提供了端对端的加密机制。LoRaWAN是为数不多的支持端对端加密的IoT网络技术。传统的蜂窝网络中,加密发生在空中接口处,但在运营商的核心网络中只是把它当做纯文本来传输的。
因此,终端用户还要选择、部署和管理一个额外的安全层(通常通过某种类型的VPN或应用层加密如TLS来实现)。但这种方法并不适合应用在LPWAN技术中,因为这会额外地增加网络功耗、复杂性和成本。
安全策略
之前提到的安全机制依赖于经过完备测试和标准化的AES加密算法。加密社区已经对这些算法进行了多年的研究和分析,并且被美国国家标准技术研究所认定为适用于节点和网络之间最佳的安全算法。
LoRaWAN使用AES加密语句,并结合多个操作模式:用于完整性保护的CMAC、用于加密的CTR。每一个LoRaWAN终端具有一个唯一识别的128位AES Key(称为AppKey)和另外一个唯一标识符(EUI-64-based DevEUI),二者都应用于设备识别过程。
EUI - 64标识符的分配要求申请人从 IEEE 登记机关获得组织唯一标识符 (OUI)。同样地,LoRaWAN网络由LoRa 联盟分配的24位全球惟一标识符进行标定。
安全应用的负载:
LoRaWAN? 应用负载的端对端加密发生在终端设备和服务器之间。完整性保护由跳频来实现: 空中跳频通过LoRaWAN提供的完整性保护,网络和服务器之间的跳频通过使用安全传输方案如HTTPS和VPNS来实现。
双向认证:
空中激活证明了终端设备和网络都具有AppKey的概念。这通过将一个AES-CMAC(使用AppKey)装载到设备的加入请求和后端接收器得到证明。
两个会话秘钥接着进行相互认证,一个用来提供完整性保护和LoRaWAN MAC指令和应用程序负载(NwkSKey)的加密,另一个用来提供端对端应用负载(AppSKey)的加密。
NwkSKey装载在LoRaWAN网络是为了验证数据包的真实性和完整性。从网络运营商的角度AppKey和AppSKey可以被隐藏,所以破解应用负载是不可能实现的。
数据完整性和隐私保护:
LoRaWAN通信使用两个会话秘钥进行保护。每个负载由AES-CTR加密,并且携带一个帧计数器(为了避免数据包回放),一个消息完整性代码(MIC)和AES-CMAC(为了避免数据包被篡改)。下图是LoRaWAN包结构示意图。
安全性事实与谬论:
LoRaWAN设备的物理安全:
AppKey和衍生而来的会话秘钥会持续的保存在LoRaWAN设备中,它们的安全性依赖于设备的物理安全。一旦设备受到物理损害,这些秘钥存在防篡改存储器中从而受到保护,并且很难提取。
密码学:
一些资料指出LoRaWAN?密码只使用了XOR而并非AES。事实上,如之前所提到的,AES用在了标准化CTR模式,这利用了XOR加密操作(还有CBC等许多其他模式)。这通过给每个分组密码分配一个惟一的AES码强化了AES算法。
会话秘钥分布:
由于AppSKey 和NwkSKey从同一个AppKey生成,可以说如果LoRaWAN运营商获得了AppKey,它能够推导出AppSKey从而解码网络。
所以为了避免这种情况的发生,服务器要对AppKey的存储进行管理,双向认证和密钥推导的过程可以由运营商以外的实体进行操作。为了给运营商额外的灵活性,LoRaWAN接下来的新版本协议(1.1)会定义两个主秘钥,一个用于网络(NwkKey),一个用于应用(AppKey)。
后端接口安全:
后端接口包括网络和应用程序服务器之间控制和数据信号。HTTPS和VPN技术用于保护这些关键的基础设施元素之间沟通的安全性。
实现和部署安全:
LoRa联盟一直在确保其协议和架构规范的安全性,但是解决方案的总体安全性还要依赖于具体的实现和部署方式。所以安全问题需要各个环节的配合,制造商、供应商、运营商都需要参与当中。
注解
1 AES – 一种高级加密标准。这是一个基于对称密钥的加密算法,允许消息加密和身份认证。
2 CMAC - 基于暗码的消息认证码。
3 CTR - 计数器模式加密标准。一种依赖于计数器的数据流加密AES算法的操作模式。
4 AES-CMAC - 基于暗码的消息认证码,使用AES加密算法提供消息的完整性和真实性。
5 CBC是AES算法的一种操作模式,依靠一个初始化向量和前序的数据块进行数据流的加密。
最后这个图是LoRa联盟给出的全球部署情况图,LoRa联盟现阶段有超过400个会员,全球有超过150个正在进行的部署计划,并且有34个运营商的加入。
关于Lora问答的31个问答清单
1.) 什么是LoRa调制?
LoRa (Long Range,远距离)是一种调制技术,与同类技术相比,提供更长的通信距离。调制是基于扩频技术,线性调制扩频(CSS)的一个变种,具有前向纠错(FEC)。
LoRa显著地提高了接受灵敏度,与其他扩频技术一样,使用了整个信道带宽广播一个信号,从而使信道噪声和由于使用低成本晶振而引起频率偏移的不敏感性更健壮。
LoRa可以调制信号19.5dB低于底噪声,而大多数频移键控(FSK)在底噪声上需要一个8-10dB的信号功率才可以正确调制。LoRa调制是物理层(PHY),可为不同协议和不同网络架构所用-Mesh、Star、点对点等等。
2.) 什么是LoRaWAN?
LoRa调制是PHY,LoRaWAN是MAC协议,用于大容量远距离低功耗的星型网络,LoRa联盟正在对低功耗广域网(LPWAN)进行标准化。
LoRaWAN协议针对低功耗、电池供电的传感器进行了优化,包括了不同级别的终端节点以优化网络延迟和电池寿命间的平衡关系。它是完全双向的,由安全专家构建确保了可靠性和安全性。
LoRaWAN架构还可轻松定位移动目标用于资产跟踪,这是物联网增长量最快的应用。主要的电信运营商正在将LoRaWAN部署为全国网络,LoRa联盟正在标准化LoRaWAN以确保不同的国家网络是可以互操作的。
3.) 什么是LoRa网关?
LoRa网关设计用于远距离星型架构,并运用在LoRaWAN系统中。他们是多信道、多调制收发、可多信道同时解调、由于LoRa的特性甚至可以同一信道上同时多信号解调。网关使用不同于终端节点的RF器件,具有更高的容量,作为一个透明桥在终端设备和中心网络服务器间中继消息。
网关通过标准IP连接连接到网络服务器,终端设备使用单跳的无线通信到一个或多个网关。所有终端节点的通信一般都是双向的,但还支持如组播功能操作,软件升级,无线传输或其他大批量发布消息,这样就减少了无线通信时间。根据要求的容量和安装位置(家庭或塔),有不同的网关版本。
4) LoRaWAN数据速率是多少?
对于LoRa来说,LoRaWAN数据速率范围在0.3kbps到11kbps之间,欧洲地区GFSK数据速率是50kbps。在北美地区,由于FCC限制最小数据速率是0.9kbps。为使终端设备的电池寿命和总体网络容量最大化,LoRaWAN网络服务器通过自适应数据速率(ADR)算法对每个终端设备数据速率和RF输出分别进行管理。
ADR对于高性能网络是至关重要的,具有了可扩展性。在基础设施方面,以最小的投资部署一个网络,当需要增加容量时,就部署更多的网关,ADR将会使数据速率更高,可将网络容量扩展6到8倍。
5.) LoRa技术与SIGFOX,NWave的区别在哪里?
总的来说,LoRa技术采用的是一种扩频技术;SIGFOX公司使用窄带BPSK调制技术;NWave公司使用Weightless标准,与SIGFOX公司使用的技术较为相似。想要了解详细参数,可在菜单干货数据栏查看“LPWAN技术比较”。
目前使用超窄带技术的公司可供选择的收发器芯片较多,而LoRa仅能使用Semtech提供的芯片。
6. LoRa集中器是什么?
网关和集中器这两个术语都有在使用,但在LoRa系统中他们是等效的部件。在其他行业里,网关和集中器的定义意味着不同的部件。
7. LoRa处理干扰怎么样?
LoRa调制解调器对同信道GMSK干扰抑制可达19.5dB,或换句话说,它可以接受低于干扰信号或底噪声的信号19.5dB。因为拥有这么强的抗干扰性,所以LoRaTM调制系统不仅可以用于频谱使用率较高的频段,也可以用于混合通讯网络,以便在网络中原有的调制方案失败时扩大覆盖范围。
8.LoRa数据数率是多少?
LoRaWAN定义了一组特定的数据速率,但终端芯片或PHY是可以有多种选项。SX1272支持数据速率从0.3到37.5kbps,SX1276支持0.018到37.5kbps。
9. 什么是LoRa终端节点或点?
LoRa终端节点是LoRa网络的部分,进行感应或控制。他们在远程电池供电。这些终端节点使用LoRaWAN网络协议与LoRa网关(集中器或基站)建立通信。
10.什么是自适应数据速率(ADR)?
ADR是一种方法,改变实际的数据速率以确保可靠的数据包传送,最优的网络性能,容量的规模。例如,靠近于网关的节点使用较高的数据速率(缩短传输时间)和较低的输出功率。只有在链路预算非常边缘的节点才使用最低的数据速率和最大的输出功率。
ADR方法可以适应网络基础设施的变化,支持变化的路径损耗。为使终端设备的电池寿命和总体网络容量最大化,LoRa网络基础设施通过实现ADR对每个终端设备的数据速率和RF输出分别进行管理。
11.LoRa设备天线上可以达到的实际Tx功率是多少?
在芯片引脚输出的功率是+20dBm,经过匹配/滤波损耗后在天线后,在天线上功率是+19dBm +/-0.5dB。最大输出功率在不同的地区有不同的规定,LoRaWAN规范定义了不同地区不同的输出功率使链路预算最大化。
12.LoRa解决方案的价格是多少?
LoRa设备(如SX1272或SX1276)使用了一个较低成本的晶振。在窄带技术里,RX/TX收发期间需要一个昂贵的温度控制的晶体振荡器以减少频率漂移。根据量和功能,一个完整终端节点典型的材料清单成本是$2~$5美元。
长的传输距离意味着简化了网络基础设施,因不需要中继部署成本较低。较低的功耗意味着使用较低成本的电池和网络维护。
13. LoRa信道活动检测(CAD)模式的过程是怎样的?
CAD用于检测LoRa信号的存在,而不是使用一个接受信号强度(RSSI)的方法来识别是否有信号存在。它能够把噪音和需要的LoRa信号区分出来。CAD过程需要两个符号,如果被CAD检测到,CAD_Detected中断变为有效,设备处于RX模式接受数据有效载荷。
14. 为什么我的LoRa设备或模块输出功率达不到20dBm?
+20dBm规格是对芯片引脚输出功率而言。在任何的RF系统中,带通滤波器和RF开关都有插入损耗的特性,在匹配滤波后天线上典型性能可达到+19dBm。
15. 可以频繁地在FSK和LoRa调制之间改变模式?
是的,没有问题。LoRa设备通过简单的SPI寄存器写入可以从FSK切换到LoRa(反过来也一样)。对设备的性能和可靠性没有影响。LoRa设备按照数据手册规定的可以配置或重新配置为任意参数。
16.如果不能达到+20dBm,如何解决输出功率问题?
1.) 请确认你连接到正确的引脚(PA_Boost)设置,20dBm输出的引脚。每个频段有两个输出端口。一个是高功率端口称为PA_boost,另一个是高效端口称为RFO。
2.) 然后,检测软件配置。应该正确地配置好三个寄存器:RegPaConfig、RegOcp 和 RegPaDac。这意味着你在软件中应选择正确的引脚做相应的输出,再依据你需要的功耗级别设置正确的值。
3.) 确认他们与Semtech参考设计相一致以便设计一个好的PCB布局。这对于可能达到最大的输出功率来说是重要的。
17. LoRa系统如何实现批量生产测试?
在批量生产中要测试的有三个重要参数:频率容限、输出功率、灵敏度。频率和输出功率使用频谱分析仪容易测试。如果你的信号发生器不能产生一个LoRa信号,强烈建议使用FSK模式测试灵敏度。芯片里仅有一个RF链路,FSK和LoRa都在数字域调制。
RF路径有可能会装配错误(如虚焊),因此验证是重要的。芯片LoRa和FSK调制的数字部分不受装配影响,因此对于验证生产测试性能测试FSK灵敏度就足够了。
18. 如何为LoRa设备选择正确的晶振?
正常地,对于大多数设计,带宽62.5kHz或更高,一个+/-10ppm的XTAL就足够了。带宽小于62.5kHz,强烈推荐使用TCXO。
有关晶振规格更多的详细信息,请参考数据手册以及LoRa调制解调器计算器工具和应用笔记 - AN1200.14_XO_Gidance_LoRa_Modulation_STD"。
19. 对于LoRa带宽信号,你如何在LoRa模式中测量频率精度?
如果仅是为了测量,你可以使用频率合成器TX(FSTX)模式,如在LoRa寄存器表里中所列,基于LoRa配置产生一个CW信号音。
20.信号带宽(BW)、符号速率(Rs)和数据速率(DR)间的关系是什么?
理论上, Rs=BW/(2^SF)、DR= SF*( BW/2^SF)*CR,但我们建议你使用Semtech LoRa调制解调器计算器按照不同的配置选型评估数据速率和传输时间。
21. 如何选择LoRa信号带宽(BW)、扩频因子(SF)和编码率(CR)?
LoRaWAN主要使用了125kHz信号带宽设置,但其他专用协议可以利用其他的信号带宽(BW)设置。
改变BW、SF和CR也就改变了链路预算和传输时间,需要在电池寿命和距离上做个权衡。请使用LoRa调制解调器计算器评估权衡。
22. 当两个不同制造商的SX127x模块不能相互通信时,故障检测的步骤是什么?
首先,在两个设备间检查由晶振引起的频率偏移。带宽(BW)、中心频率和数据速率这些都源自晶振频率。其次,检查在两边的软件/固件设置,确保频率、带宽、扩频因子、编码率和数据包结构是一致的。
23. 在LoRa模式,当循环冗余校验(CRC)使能时,怎样可能接受到一个错误的数据包?
在LoRa模式,即使CRC是错误的,有效载荷也会添加到FIFO。在取得有效载荷前必须检查位PayloadCrcError知道它完整性。在显式报头(Explicit Header)模式,有一个小的可能性一个假检测产生一个“克隆”数据包。
要么错误的报头打开CrcOn位,那么有效载荷将会是错误的,调制解调器将会将它标记作为一个PayloadCrcError条件,因此数据包容易被过滤掉;要么错误的报头禁止CrcOn位,这种情况该模式认为数据包是好的。这些偶然的坏包会有一个随机的长度(从错误报头信息中提取),容易通过主机过滤掉,例如看到异常的尺寸大小。
24. 我可以用LoRa设备发送或接受一个无限长度的有效载荷数据包?
不可以,在LoRa模式中最大数据包长度是256个字节。
25.在LoRa模式中如何使用DIOx引脚?所有DIOx引脚都要连接到MCU吗?
当你开始设计时,在LoRa和FSK两种模式中检查DIO映射。你可以在SX127x LoRa数据手册中找到DIO映射信息。DIO没有像通常(典型)MCU GPIO那样的功能。有一些特殊的中断信息(或时钟输出)指示事件或芯片状态,这使得你的固件设计更易于实现。
理论上,你可能不连接DIO引脚,那么就轮询相关的寄存器知道状态结果。当然,我们建议连接DIO尽可能多地用作外部中断功能,节省MCU的资源负载,可以很低功耗工作模式(当打包发送或接受数据包时,MCU睡眠)。
26. 在LoRa模式中为什么有两个RSSI寄存器?有什么区别?
在LoRa模式中,RegPktRssiValue和RegRssiValue 两个寄存器都是有用的。RegPktRssiValue指的是数据包RSSI水平,RegRssiValue与在FSK模式(非LoRa模式)中的RSSI相似。
如你所知,LoRa可以解调低于底噪声(PktRssi 结果)的数据包,那么CurrentRssi等于或大于底噪声。关于如何计算这两个RSSI的值更多信息,请参考Semtech API或最新的LoRa数据手册。
27.如何计算LoRa系统的实际位速率和传输时间?
下面列出了步骤(i-V):
通过使用LoRa计算器计算是容易的,可以从Semtech网站下载(下面的连接)。
http://www.semtech.com/apps/filedown/down.php?file=SX1272LoRaCalculatorSetup1%271.zip
28.LoRa模式的有效载荷长度可以用任意数据速率配置为256字节
SX127x LoRa设备在LoRa模式中有一个256字节的FIFO。理论上,所有的256字节都可以用于TX或RX。然而,用低数据速率配置,256字节有效载荷的传输时间将会很长(几秒或更长),这对于抗衰落和高干扰环境是不好的。
在大多数环境中这不是一个健壮的配置,因此建议如果想要一个使用低数据速率长的有效载荷,那么数据包可以分成几个短的数据包。
29.LoRa是mesh网络,点对点传,或者是一个网络?
LoRa本身是一个PHY,可用于所有网络拓扑。mesh网络扩展了网络的范围,但会是以降低网络容量、同步开销和电池寿命减少为代价,由于同步和跳数的缘故。LoRa网关和模块间以星形网方式组网,而LoRa模块间理论上可以以点对点轮询的方式组网,当然点对点轮询效率要远远低于星形网。
随着LoRa的链路预算和距离范围的增加,没有必要用mesh网络架构扩展距离,因此LoRaWAN选择星型架构可以优化网络容量、电池寿命,安装容易。
30. LoRa可以使用IPv6和6LoWPAN?
是的,LoRa是与IPv6和6LoWPAN兼容的。Actility(LoRa合作伙伴)和其他合作伙伴在LoRaWAN上面实现了6LoWPAN。
31. LoRa网关的容量是多少? 一个网关可以连接多少个节点?
首先最重要的是,容量是在一定时间内节接受数据包数量的一个结果。一个SX1301有8个通道,使用LoRaWAN协议每天可以接受接近150万包数据。因此,如果你的应用每小时发送一个包,那么一个SX1301网关就可以处理大约62500个终端设备。
您的留言或需求: