LoRa数据传输网络混合加密设计*
2021-12-23魏嘉鑫
张 治,魏嘉鑫,王 林
(1.国家电投集团光伏产业创新中心,青海 西宁 810000;2.西安理工大学自动化与信息工程学院,陕西 西安 710000)
1 引言
受益于稳定的生态系统以及技术特点,LoRa网络在大型数据传输网络中的使用占比越来越大[1],所以其安全性建设尤为重要。LoRa网络可以基本实现终端、网关和服务器之间传输的安全性,终端能够生成唯一的密钥。LoRa网络层和应用传输层在对于密钥的管理上是一致的,2层的密钥之间没有设置隔离;同时加/解密过程和密钥保护都由AES-128加密算法完成,加密强度的不足导致其安全等级不高,因此存在因密钥泄露而造成的核心数据泄露、非法数据篡改等风险[2]。
相关研究方面,Xu等[3]针对物理层安全展开研究,提出了LoRa网络第一个完整密钥建立协议LoRa-Key[3]。另一方面,部分文献剖析LoRa协议MAC层的结构,并对其安全机制进行了相关分析和改进。例如,Zhang等[4]设计了一种特殊的密钥生成方案:在室外城市环境和室内环境中进行的实验表明,这种密钥生成方案适用于低功率广域网络LPWAN(Low-Power Wide-Area Network),并且能够可靠地生成安全密钥。Kim等[5]设计了一种低功耗的LoRa协议密钥自动生成方案,通过安全性分析,证明了此方案可以保证其机密性和完整性。Ozyilmaz等[6]探讨了将区块链与LoRa网络相结合的可能性,实验证明:区块链与LoRa网络相结合的方案可以在一定程度上解决LoRa网络的有关问题。
现有文献对LoRa数据传输网络安全性进行了多方面的分析研究,但是基本上都是对LoRa网络自身安全机制进行优化。针对面临的风险和存在的安全问题,本文提出一种混合加密方案:在LoRa网络使用AES-128算法对数据加密传输的基础上,引入一种非对称加密算法——RSA算法,利用其密钥生成运算复杂度高和安全性强的特点对AES数据加密算法的密钥进行加密,可以在极大程度上降低风险,提高数据传输安全性[7-9]。混合加密方案虽然能够在很大程度上满足数据传输过程中的安全指标,但其缺陷也十分明显。由于是在LoRa网络的基础上引入了RSA非对称加密算法并与AES加密算法混合,在数据传输过程中会增加通信时间,降低传输的效率[10]。本文对RSA和AES加密算法进行优化改进,在保证安全性的前提下,一定程度上保证了算法运算效率[11-14]。
本文设计的混合加密方案,在不影响传输效率、保证数据通过性的同时,可以有效阻止窃取密钥的非法行为,保证网络数据传输的安全性,极大程度降低了LoRa数据传输网络在安全性方面存在的隐患。
2 数据传输混合加密设计
LoRa网络自身安全机制采用的是AES-128数据加密算法,其密钥长度为128比特,密钥的长度远远低于RSA加密算法的密钥长度,所以其加/解密数据的过程具有较高的效率[15],但其不足之处在于加/解密过程使用的一对密钥的参数基本一样。而RSA加密算法在加/解密时所使用的密钥是不同的,密钥长度更长,安全性相较于AES算法有明显提高,但运算效率远远低于AES算法,不适合对大量数据进行操作[16]。针对上述算法特点,分析各自的优势与不足,本文采用将AES数据加密算法与RSA加密算法相结合的混合加密机制。AES-128算法用来加/解密LoRa网络中传输的数据,RSA算法用来保护AES的密钥。具体结构如图1所示。
Figure 1 Flow chart of LoRa data transmission network hybrid encryption scheme图1 LoRa数据传输网络混合加密方案流程
该混合加密方案的原理是:在LoRa终端设备发送实时数据之前,终端设备使用AES-128算法对需要发送的数据报文进行加密,并使用RSA算法对AES数据加密算法产生的密钥进行加密处理。加密后的AES密钥和数据密文被一起发送到服务器。服务器接收到加密的AES密钥和数据密文后,首先利用提前设置好的RSA私钥对加密过的AES密钥实施解密操作,然后利用解密得到的AES密钥解密数据密文,最后得到数据。终端设备实现实时数据加密,服务器实现解密。一般来说,服务器应当在最开始创建一个RSA密钥对来提高AES密钥的安全性。
3 加密算法优化设计
3.1 AES算法优化设计
3.1.1 AES算法原理
LoRa网络自身安全机制所使用的加密算法为AES-128算法,其密钥长度为128比特,需要的迭代操作轮数为10轮,所以在算法的初始阶段,需要实现轮密钥加操作,完成操作需要的子密钥数为11[17]。在迭代过程中,前9轮操作是一样的,每轮具体包含4个操作,分别是字节代换、行移位、列混淆和轮密钥加,而在最后一轮只有3个阶段,相较于前9轮缺少了列混淆[18]。前面9轮,从第1轮到第9轮都称为轮函数。AES加密算法运行过程的核心部分就是轮函数[19],因此,可以用轮函数运算效率的高低来衡量整个AES算法加密过程的运算效率。本文将通过提高轮函数的运算效率来优化AES算法。
3.1.2 AES算法轮函数优化
相比于穷举暴力破解密钥,捷径攻击在某些方面具有更高的有效性,所以单纯地从安全性角度来看,在面对网络攻击时,加密算法的轮数与安全性成正比[20]。但是,如果从网络的传输效率角度来分析,可以在合理的范围内减少加密算法轮函数的轮数。
可以利用密钥扩展算法来判断精简轮数的可行性,轮密钥的发散程度具有极大的参考意义。参考1对只有一位不同的主密钥,对其进行密钥扩展,然后对比2对轮密钥的不同。2对主密钥如表1所示。
Table 1 Two sets of key seeds表1 2对密钥种子
将第1对的密钥种子选为操作样本,操作条件为10轮扩展,通过一对密钥种子的轮密钥来计算其比特差。根据AES算法的运行原理得轮密钥每轮的扩展,比特差越大,安全性越高。密钥扩展结果如表2所示。
Table 2 Bit difference after 10 rounds of key expansion表2 10轮密钥扩展后比特差
同理,对第1对密钥种子完成如上操作,通过对2组数据比较分析可得密钥种子在经过7轮密钥扩展后,比特差与10轮操作的比特差差异不大且第8轮密钥扩展为总体比特差峰值。
综合以上分析结果,本文选择AES算法为8轮,后2轮留作安全冗余。
3.2 RSA算法优化设计
由于传统RSA算法的安全性取决于算法过程中的大素数因子分解的难度,而模正整数次幂的运算过程复杂,也就造成了该算法采用的幂指剩余计算太耗时,影响算法执行效率[21]。本文对RSA算法优化的原则:确保安全性,即在提高运算速率的同时避免影响算法的安全性能。
在数据结构与算法中,幂运算是复杂度较高的运算,运算过程比较复杂,效率较低。而RSA算法中存在很多的幂剩余运算,其对于运算效率的影响是非常大的,算法安全性在很大程度上取决于大整数n的因子分解难度,那么需要考虑如何在保持n不变的基础上将幂剩余运算次数在合理范围内降到最低,这样就可能在保证安全性的同时提高运算效率。
3.2.1 传统RSA加密算法
传统RSA加密算法由加密过程和解密过程组成,其运算公式分别如式(1)和式(2)所示:
(1)
(2)
其中,n为2个随机不相等质数p和q的乘积,e为随机整数,1 3.2.2 对于RSA算法的改进 本文使用2种不同的方法分别对加密和解密运算进行改进。 (1)加密运算改进。 由式(1)可知,加密过程需要执行k次幂剩余运算,很大程度上加重了运算任务。本文对此改进的思想是:在合理范围内最大限度地减少幂剩余运算的次数,可以用适合的加法剩余运算替代幂剩余运算,改进后的运算公式如式(3)所示: cf=mf+mf-1(modn),f=1,2,…,k (3) (4) 经过优化操作后的改进算法中,对于幂剩余运算的操作,加密过程只需进行1次,剩下的运算操作是将加法剩余运算执行k-1次。加法剩余运算的速度要远远高于幂剩余运算速度,因此能够有效解决算法的速度问题。 (2)解密运算改进。 接收方在对密文解密时会知道n的分解,即n=p*q,可以得到q和p的相关参数。所以,解密运算可以分解进行,具体如式(5)所示: (5) 其中,C1=Cmodn;C2=Cmodq;d1=dmod (p-1);d2=dmod (q-1)。 将RSA解密运算公式分解之后,d的长度与n的长度基本一致,d1和d2的长度只有原始d长度的一半,因此在实际运算过程中,可以降低运算复杂度,节省大量的运算时间,提高运算效率。最后应用中国余数定理就能计算出m的值,如式(6)所示: m=(m1qy1+m2py2)modn (6) 其中,qy1=1 modp;py2=1 modq。 与传统RSA算法相比较,改进后的算法还是需要依赖n的因数分解难度来决定算法的安全性,在改进过程中,n的因数分解难度并没有变化,所以改进算法与传统RSA算法在安全方面具有相同的可靠性。 本节对设计的数据传输网络混合加密方案从安全性和传输效率方面进行分析和评估,明确本文方案的优势,以便于今后进一步改进和升级。 本文设计的加密方案能够利用AES数据加密算法加密LoRa协议的数据报文,同时引入RSA加密算法对AES-128算法的密钥进行加密,并一起进行密文传输。此方案将2种算法的优势合理结合,最大限度地提高了数据传输的安全性。 LoRa网络中AES数据加密算法能够在很大程度上实现数据保密性和传输安全性,以此为基础,本文采用RSA非对称算法对AES算法生成的密钥进行加密,可以防止AES密钥泄露,为数据传输的安全提供保障。 因此,本文设计的数据传输混合加密方案能够满足数据传输对于安全性的需求。 本文对3种加密方案进行测试: (1)LoRa网络自身安全机制:AES-128加密算法; (2)经典加密方案:RSA+AES混合加密算法; (3)本文提出的方案:改进后的RSA+改进后的AES混合加密算法。 3种加密方案中AES算法都采用与LoRa网络AES-128算法相同的密钥长度128位,3种加密方案对同一个48字节的字符串进行1 000次加解密,得出每种方案的加/解密时间,具体结果如表3所示。 Table 3 Comparison of encryption time and decryption time表3 加/解密时间比较 由表3可以很直观地看出,改进后的AES+RSA加密算法比LoRa网络AES-128加密算法用时长,比经典的数据加密方案AES+RSA算法加解密耗时更少,运算效率更高。 如今是数据传输网络高速发展的时代,网络安全被高度重视。在面对网络上各种各样的恶意攻击时,对保护重要信息不被窃取、数据防泄漏等研究的投入日益增长,因此提高数据传输网络的安全性具有重要意义。本文通过分析LoRa网络安全机制的不足,设计了一种混合加密方案,在LoRa协议的基础上引进RSA加密算法来对原有AES-128算法的密钥进行加密,同时对AES数据加密算法和RSA加密算法进行优化改进,在提升数据传输安全性的同时保证了其传输效率。通过测试结果可以看到,改进算法相比于经典数据加密方案中的AES+RSA算法而言,其加密解密过程同时兼顾了运算效率和安全性。本文设计的加密方案可以有效保证网络数据传输的安全性,并且传输效率没有受到较大影响,保证了数据通过性,可以在一定程度上促进LoRa网络的安全性研究。4 实验结果分析与比较
4.1 安全性分析
4.2 效率分析
5 结束语