Lightw eight Authentication for MQTT to im prove the Security of IoT Communication (翻译)
摘要
物联网通信中广泛使用的应用层协议是消息队列遥测传输( MQTT )协议。在 MQTT 协议中提供安全性是物联网应用的一个基本问题。在本文中,我们展示了传统的安全 MQTT 协议是如何容易受到密码攻击的。然后,我们提出了一种通过提供轻量级身份验证机制来提高 MQTT 安全性的新方法。该方法采用混沌算法和基于主题的自密钥协议和分组密码。并在 Cooja 模拟环境下进行了实证研究。
关键词
物联网, MQTT 安全,密文,密码攻击,混沌算法,距离熵,自密钥协议
1 引言
消息队列遥测传输(MQTT)是一种广泛使用的可靠物联网通信应用层协议[1-3]。实际上,身份验证机制和通信安全是MQTT协议[3]中的核心问题。具体来说,MQTT协议在通信之前不加密数据。因此,攻击者可以捕获MQTT主题和从特定或所有发布者设备接收到的相应消息。一些传统的解决方案通过在SSL/TLS通道上提供用户名和密码来应用身份验证方法。然而,这种方法最初只禁止攻击者充当发布者和订阅者。在初始身份验证之后,客户机继续通过不安全通道访问MQTT代理。因此,在KeepAlive时间到期之前,攻击者可以解密令牌,并向代理发送一个伪造的令牌以进行非法访问。在KeepAlive时间到期后,代理将返回cookie给发布者进行身份验证攻击者可以嗅探不安全通道上的流量,同时从发布者发送一个“连接”包以及用于连接到MQTT代理的cookie。
因此,为了在不降低性能的情况下提高MQTT通信安全性,我们提出了一种轻量级的安全方法。该方法由基于主题的自密钥协议混沌算法和分组密码组成。保证MQTT安全的分组密码方法(BS-MQTT)是对高密钥分集的混沌算法的选择。密钥之间的高度多样性使得攻击者很难恢复明文,从而加强了MQTT通信模型。为了保证连续密钥之间的多样性,利用距离熵选取合适的混沌参数值。
我们进行了一项实证研究,以评估BS-MQTT方法在Cooja模拟器中的性能。通过度量性能指标来确定BS-MQTT的效率。评估结果表明,我们提出的方法在不降低MQTT通信模型性能的前提下提高了该模型的安全性。
本文的其余部分结构如下:第二节介绍了MQTT协议的相关背景,第三节介绍了相关研究工作的讨论和回顾。第四节介绍了提出的方法、基于主题的自密钥协议和分组密码混沌算法的选择。实证研究和结果在第五节和第六节讨论。
2 背景
MQTT是用于物联网通信模型的应用层协议。客户机可以是发布者,也可以是订阅者。MQTT代理是发布/订阅通信模型中的主要组件。它维护MQTT客户机发布的主题。MQTT代理负责在发布/订阅主题之前对MQTT客户机进行身份验证。在图1中,我们展示了基本的MQTT通信模型。一旦建立了联系,
代理维护客户端标识。客户机标识是MQTT客户机的标识符,它对于MQTT代理是惟一的。
大多数解决方案使用SSL/TLS通道提供安全的MQTT通信。然而,MQTT的性能急剧下降[4][5]。最近,MQTT安全解决方案使用安全通道进行初始身份验证。尽管如此,通过不安全通道进行进一步通信的基于令牌的客户端身份验证很容易受到密码攻击。当键空间很小且键高度相关时。攻击者可以通过嗅探通信量获得密钥,并在将数据内容发布到MQTT代理之前修改数据内容。在这种情况下,攻击者可以更改主题名称,以禁止订阅者访问特定的消息或发布主题下的错误数据。此外,攻击者还试图从给定的密文中恢复明文。传统的安全MQTT协议在“CONNACK”消息中附加用户名和密码,用于在代理端对MQTT客户机进行身份验证。然而,智能密码攻击可以利用密钥大小和密钥关系的优势打破安全的MQTT模型。
密码攻击会破坏MQTT发布者/订阅者与代理之间的通信。分组密码是一种确定性算法,它对固定长度的位组进行操作,称为分组。对称密钥分组密码包括数据加解密{E(·),D(·)}。其中P为明文。
P=D(E ( P )) (1)
选择明文密码攻击会影响到大多数基于分组密码的传统方法。它是一种用于密码分析的攻击模型,在这种攻击模型中,加密安全系统被攻破,以获取加密消息的内容,即使安全密钥是未知的。keystream表示随机或伪随机字符流,这些字符与明文结合生成加密消息,称为密文。使用密钥流Ki,选择明文密码攻击者试图从给定的密文中恢复明文。
为了避免密码攻击,增加从密钥流中提取知识的难度是避免在不使用密钥的情况下解密密文C的主要方法。密文C由L个明文块组成[1,2,3,…,L]和Ci是使用密钥Sk加密明文Pi ESk (Pi)的结果。其中T表示异或操作的转换次数。
由于大多数传统的MQTT通信模型不会为每个明文块更改密钥流,因此攻击者可以从给定的明文块和相应的密文块中获得密钥。这意味着,T个数的异或在明文和密匙之间的操作,返回与MQTT通信模型中使用密匙解密的密文相同的结果。因此,MQTT协议必须附加轻量级和强大的安全功能。为了避免选择的密文攻击,提高MQTT通信的安全性,提出了在明文加密中采用双异或操作和一次移位操作。为了进一步提高通信的安全性,提出了一种基于主题的MQTT协议自密钥协议方案。
3 相关工作
MQTT是一个简单的应用层协议,用于物联网设备的通信。默认情况下,MQTT协议没有安全功能。一些传统的身份验证和加密解决方案已经解决了MQTT的安全问题。由于资源受限的设备,[6]中的安全解决方案在MQTT代理上使用散列和OR操作应用轻量级身份验证功能。[7]中基于模型的安全工具箱(Seckit)使用一系列安全策略来实现物联网通信中的保护措施。它集成了(Seckit)和应用层协议MQTT,并确定授权和义务。它负责拦截通过发布/订阅机制在代理中交换的消息。然而,强制行动增加了沟通的延迟。MQTT协议的安全缺陷主要与其操作有关。为了避免某些严重的安全漏洞,安全方案在MQTT的不同组件(如MQTT客户机和代理)上执行身份验证,并识别不正确或意外的数据[8][9]。
基于主题的身份验证方案[10]使用SSL/TLS客户端身份验证来保护MQTT。安全通信通道在数据传输过程中为快照提供数据保密性和真实性保护。但是,存储数据并将其发送到未受保护的MQTT代理组件是不安全的。[11]中的混合安全方案提供了强大的端到端快照保护,同时仍然保留了监控方案。随着TLS通道的使用,基于属性的加密机制被用于MQTT的安全,对不同通道[12]的MQTT包进行加密。安全MQTT (SMQTT)[13]利用了轻量级的基于属性的加密(ABE)[14],[15]在椭圆曲线[16]上。他们使用ABE支持广播加密方案,使SMQTT适合资源受限的物联网应用。然而,他们并没有过多地关注处理未经授权的消息发布的问题。提出了[17]中基于RSA的非对称算法来解决无线传感器网络中的信息安全问题。初始认证完成后,通信设备会建立会话密钥,用于数据加密。由于传感器电池功率的限制,该加密算法不实用。[18]的安全解决方案结合了椭圆曲线加密(ECC)和高级加密标准(AES)。然而,整个过程是复杂和耗时的。
传统的混沌保密通信算法利用的是低维混沌系统,由于伪随机序列的空间限制,混沌保密通信算法的复杂度非常低。因此不能有效抵抗相空间重构和暴力破解[20][21]攻击。另外,基于SSL/TLS[22]的安全解决方案不适用于物联网场景,而小密钥空间的安全解决方案在大规模物联网应用中效率低下。因此,在不增加计算开销、成本和可伸缩性问题的情况下为MQTT[23]设计安全解决方案是至关重要的。
4 方法论
为了提高MQTT通信模型的安全性,提出的BS-MQTT分为三个部分:
4.1 高密钥分集的混沌算法
如图2所示,BS-MQTT利用混沌算法更新密钥,避免攻击者发现密钥流之间的关系。与使用混沌算法相关的一个主要问题是通过选择适当的参数值来确保连续密钥的多样性。在可用的混沌映射算法(R=6)[26]中,BS-MQTT确定了一组具有高度多样性的最优算法,以确保MQTT对密码密码攻击的安全性。实际上,我们对混沌算法进行了高度多样性的索引,并在代理端和客户端分别用选定的参数值相互生成密钥流。值得注意的是,这个预处理过程在MQTT代理上执行一次。通过初始条件和参数值的不同组合,估计了MQTT代理上密钥之间的差异。最初,BS-MQTT方法使每个混沌映射分别为[0,4]参数值生成一组密钥,并测量每个算法的距离熵。以参数值在[0,4]之间生成的关键值之间的差异值作为距离熵,以距离熵(distance entropy, DE)[27]降序对混沌映射算法进行索引。
例如,从1到4个参数值,生成一组Chebyshev算法的关键值,并估计距离熵值。应用(3)中的(4)式,返回集合j的距离熵。其中j为Chebyshev算法的参数值,n为每个参数值生成的密钥个数。
方程(3)中的距离熵是用两个分量测量的。第一个是V,表示混沌算法产生的关键值与特定参数值的和,用来保证满足广泛传播的条件。也就是说,(v)的值必须广泛传播,以使距离熵高。距离熵的另一部分是v,它保证v固定时满足均匀扩散条件。
对于每个混沌算法,利用高熵值选取最优参数。然后MQTT代理将混沌算法按照距离熵降序排序,存储在m的列表中。MQTT代理发送CONNACK包,其中BS-MQTT方法为所选的混沌算法添加最优参数值。当客户机完成L次明文加密时,MQTT代理发送关于下一个选择的混沌算法的信息。BS-MQTT使用秘密密钥执行多个异或操作,并使用与特定发布/订阅主题相关联的地址执行一个异或操作,最后执行移位操作以加强通信安全性。
4.2 安全连接的令牌和隐私密钥
选择混沌算法参数后,MQTT客户机(发布者/订阅者)通过CONNECT消息发起连接。代理通过发送CONNACK消息来响应MQTT客户机。
一旦建立了连接,MQTT代理将在keepAlive时间内一直维护连接。MQTT客户机通过发送PING请求消息提交MQTT代理,而不考虑keepAlive时间。MQTT代理发送PING响应消息,通知通信设备仍然是活动的和可到达的。
MQTT代理的主要任务是在有效的登录请求期间对令牌进行签名,并验证传入的令牌。在登录过程之后,许多应用程序继续通过不安全的通道访问MQTT代理。通过不安全的通道,MQTT客户机提交身份验证令牌作为与MQTT代理建立进一步连接的密码。这往往会导致恶意节点重放令牌以进行虚假数据注入。因此,我们的BS-MQTT方法使用混沌算法周期性地在客户端和代理端分别更新密钥。这有助于MQTT客户机和代理之间的相互身份验证。
图3中指定的建议方法允许MQTT客户机使用秘密密钥加密令牌,以建立与MQTT代理的连接。攻击者甚至会嗅探令牌,但在不知道最近的密钥的情况下无法解密加密的数据。基于距离熵的混沌算法加密过程如下:
加密的
解密算法中的参数和keystream与加密算法中的参数和keystream相同。唯一的区别是第(6)步被代替,
BS-MQTT通过异或操作将明文块转换为密文块。当密钥流使用这种转换时,它生成60位二进制字符串的数量。
智能攻击者利用密钥流Sk和密文块Ci,试图恢复明文块,即Pi = (Si⊕Ci)T。为了增强密钥,BS-MQTT利用用户发布或订阅的主题索引。
4.3 基于主题的分组密码自密钥协议
我们的BS-MQTT方法的最后一步重点关注明文和密文之间关系的扩散。当选择的初始密钥不同时,混沌算法表现出扩散性,产生不同的密文。否则,就有机会提取明文和密文之间的关系,并提取密钥流。因此,BS-MQTT方法再次应用地址为“先前使用的主题”的XOR操作,并在位上应用左移位。值得注意的是,MQTT客户机和代理都将以前和当前访问的主题存储在一个列表中。因此,BS-MQTT将明文的比特分散到密文中,提高了MQTT通信模型的安全性。
其中N为主题总数,k为当前访问的主题数。符号’ << '表示操作" bits of Ci by 16 "表示循环左移。在MQTT客户机或代理上执行解密操作之前,对Ci进行解密,以提取B(2g)(MI)j。采用混沌算法确定MQTT通信模型的初始条件和系统参数,提高了模型的效率。
5 实验研究
使用Cooja模拟器对实现的BS-MQTT进行了经验评估,工作在Contiki操作系统上,如图4所示。评估将SMQTT[21]中使用的方法与提出的BS-MQTT的性能进行比较。根据提出的BS-MQTT算法,使用基于混沌的分组密码算法对客户端进行身份验证和数据加密。假设初始密钥和混沌参数的共享是安全执行的。
MAC层和物理层分别采用了康迪奇MAC层协议和单元磁盘图模型传播类型。此外,TCP在传输层使用。仿真参数如表1所示。
Cooja 模拟器参数
模拟 | 参数 |
---|---|
发布数量 | 1 |
订阅数量 | 1 |
MQTT代理数量 | 1 |
MAC类型 | Contiki MAC |
传播类型 | 单位磁盘图形模型 |
Transport Agent | TCP |
应用程序协议 | BS-MQTT |
模拟时间t | 180秒 |
实证研究的目的是通过在发布/订阅通信模型上实现基于主题的轻量级自密钥协商认证机制,并对 mqtt 协议的性能进行评估。该体系结构基于 mqtt 的远程遥测通信体系结构。
发布者/订阅者之间的通信是根据吞吐量、时延和通信开销等性能指标进行评估的。在保持数据机密性的同时,使用 cooja 模拟环境测量能量消耗[28]。
Mosquito broker 中创建的主题由发布者访问,并由订阅者进一步访问。通过默认认证机制在发布者和蚊子之间建立初始通信。在订阅者通过实现 bsmqtt 协议订阅主题之后,进行性能评估。此外,基于混沌算法的自密钥协议将密钥生存期限制为一次加密,提高了 mqtt 通信模型的安全性。基于主题的 xor 和 shift 操作确保了 mqtt 通信安全性,即使密钥空间最小。然后将 bs-mqtt 的性能与 smqtt 协议进行比较。Wireshark 公用程序与 tcpdump 公用程序一起用于捕获数据包。在发布者与代理者和订阅者之间建立通信时,对捕获的数据包进行分析。
6 结果和讨论
我们通过实证研究评估了 bs-mqtt 协议的效率,并测量了在 cooja 模拟环境下的吞吐量、数据保密性、延迟和能量消耗等性能指标。
通过计算发布者/订阅者和代理之间每单位时间传输的数据来度量吞吐量。数据保密性是保护与 mqtt 代理相连的发布者和订阅者的关键数据的保密性的百分比。延迟是订阅者从 mqtt 代理访问特定消息所需的平均时间。能量消耗计算为网络中 mqtt 客户机发布或订阅来自 mqtt 代理的消息所消耗的平均能量。
结果由两个阶段决定:
第一阶段: 在实现 mqtt 订阅者/发布者通信模型之后,数据包分析表明,初始的身份验证是在发布者/订阅者和代理之间进行的,不需要加密,身份验证数据包以纯文本传输。此外,代理上发布/订阅的消息也以纯文本的形式传输,从而保证了通信易受密码攻击。
第二阶段: 对 tcpdump 和 wireshark 捕获的数据包进行了以下实证分析:
通过 put: 这是通过计算发布者/订阅者和代理之间单位时间传输的数据来度量的。为了确定 mosquito 经纪人和 contiki 用户之间的生产能力,我们采取了以下步骤:
我们假设发布者和代理之间的数据字节交换的数量是以字节为单位的 Dd,
根据上述公式作为参考,计算了 bs-mqtt 协议在默认窗口大小上的平均吞吐量,比默认窗口大小高出约726bps,比图5所示的 smqtt 高出21.08% 。
Delay: 它是订阅者从 mosquitto mqtt 代理访问特定消息所需的平均时间。Bs-mqtt 在1.5 ms 内传递加密消息,而 smqtt 在2.9 ms 内传递加密消息。
数据机密性: 保护与 mqtt 代理相连的一个发布者和订阅者的数据机密性的百分比。仿真结果表明,bs-mqtt 的数据保密性比 smqtt 提高了15% 。
能源消耗: bsmqtt 发布或订阅 mqtt 代理消息的平均能源消耗比 smqtt 减少37.7% 。能量消耗是在 cooja 模拟环境中节点所消耗能量的度量。
我们的论文对发布/订阅通信模型中的轻量级认证机制的知识有所贡献。
我们在模拟环境中评估了轻量级认证机制的性能,并测量了性能指标。我们还进行了分析,以确保在认证过程中的安全性。
为了防止攻击者发现密钥流之间的关系,我们的方法利用混沌算法分别更新密钥进行相互认证。
为了防止攻击者发现密钥流之间的关系,我们的方法利用混沌算法分别更新密钥进行相互认证。
分组密码技术通过双 xor 和 shift 操作将明文块转换为密文块,抵御了物联网环境下的密码攻击。
分组密码技术通过双 xor 和 shift 操作将明文块转换为密文块,抵御了物联网环境下的密码攻击。
此外,bs-mqtt 在1.5 ms 内传递加密消息,而 smqtt 在2.9 ms 内传递加密消息,此外,bs-mqtt 的能耗降低。
我们注意到的局限性与实验环境有关,mqtt 发布者/用户通信协议模型是在 cooja 模拟环境中实现的。如果使用实际资源受限的硬件设备,并在库哈仿真器中更改客户端硬件节点,则性能评估结果可能会有所不同。
7 结论
为了在不降低 mqtt 协议性能的前提下提高其安全性,采用分组密码实现了基于主题的轻量级自密钥协议。选择混沌算法构造高度多样化的关键流。距离熵的使用有效地维护了密钥的保密性。基于主题的 xor 和 shift 操作保证了 mqtt 通信模型的安全性,即使密钥空间最小。我们的实验评估测定了 bs-mqtt 在模拟环境中的性能。从仿真结果可以看出,bs-mqtt 的数据机密性得到了改善。此外,与 smqtt 相比,bs-mqtt 传递加密消息的时间更短。此外,与 smqtt 相比,bs-mqtt 的能量消耗有所降低。未来的工作包括在实际的物联网设备上实现机制,然后确定在多个发布者和订阅者实现时对性能的影响。