一种物联网消息协议状态机的跨平台自动化挖掘方法与系统
技术领域
本发明属于物联网协议测试领域,特别涉及一种物联网消息协议状态机的跨平台自动化挖掘方法与系统。
背景技术
当前,物联网设备数量飞速增长。据Gartner预测,到2020年全球所使用的物联网设备数量将成长至208亿。数量如此庞大的物联网设备需通过消息协议与其他设备和应用程序进行连接通信。消息协议对物联网来说至关重要。
物联网消息协议用于连接物联网中的智能设备、用户应用程序和协议代理。其中智能设备可以通过消息协议发送传感数据到用户应用程序并接受来自其的控制命令,协议代理大多运行在云服务器上,负责消息的转发。消息协议也提供对设备、用户应用程序和协议代理的认证,交互数据的加密等。
针对物联网消息协议的理解是维护物联网安全的基石。尽管部分物联网消息协议有规范文档,但物联网厂商和平台部署的协议和协议规范存在不一致性。当前基于协议规范的分析,无法覆盖真实世界中协议部署的理解和分析。因此针对真实世界中消息协议部署情况的分析尚未有突破性进展。
当前物联网消息协议部署存在闭源、多样、海量的特点,现有的针对网络协议分析的技术无法直接应用到物联网协议部署的分析上。首先,当前大多数物联网协议的部署是闭源的,且无法直接获取部署的程序,这使得基于代码的协议分析技术如基于代码的静态分析,动态符号执行等,无法直接应用到物联网消息协议部署的分析上。接着,由于物联网行业目前处于发展初期,涌现出来的协议复杂多样,有各自的特点。根据AI-Masri等人的研究,物联网协议种类超过30种。且针对单一协议,不同厂商在各自平台部署的物联网协议也存在差异性。这意味着我们需要一种可轻易扩展的协议分析方案来应对物联网协议的多样性。最后,随着物联网的发展,涌现出了海量的协议部署。全球知名调研机构IoT Analytics最新平台市场调研指出2019年全球物联网平台数量为620家。同一平台往往实现了多种类型的协议部署。这意味着手动的协议分析需要花费大量时间,且需自动化适应各个平台的协议部署。如何实现跨平台自动化的协议分析是研究的关键方向之一。
发明内容
针对跨平台自动化的物联网协议分析的技术不足,本发明提供了一种物联网消息协议状态机的跨平台自动化挖掘方法与系统,其中挖掘协议状态机是指在获取了报文内部结构信息的基础上,分析协议外部各个报文之间的时序约束关系,进而挖掘协议的行为特征的过程。本发明通过分析协议交互的流量来挖掘协议的字段及其语义,并通过和实际部署在平台上的协议代理进行交互来自动挖掘协议的交互逻辑。通过有机结合上述两个分析结果,能有效挖掘不同平台上部署的MQTT、CoAP和AMQP协议的状态机,用DOT语言进行可视化表示,作为安全分析和安全测试的基础。
在本发明的方法中,基于流量分析和模型学习进行协议分析,无需获取协议代码;分析过程完全自动化,可以减少手工负担;通过修改适配器等模块可以轻易扩展到不同协议,并适用于所有平台。
为了实现上述目的,本发明采用如下技术方案:
一种物联网消息协议状态机的跨平台自动化挖掘方法,通过协议关键字段、字段语义信息挖掘和协议交互逻辑挖掘,自动化构建协议状态机,具体包括以下步骤:
(1)对消息协议的数据包进行特征提取和分类,对消息协议进行字段分割,并挖掘消息协议的字段语义信息;
(2)应用基于容错学习策略的状态机模糊测试模型,实现自动化挖掘协议的交互逻辑,并构建可视化的协议交互状态机;
(3)结合消息协议的语义信息和交互逻辑,对步骤(2)构建的可视化的协议交互状态机进行细粒度优化,实现自动化构建细粒度协议状态机。
进一步优选的,步骤(1)对消息协议的数据包进行特征提取和分类,对消息协议进行字段分割,并挖掘消息协议的语义信息,包括以下步骤:
(1-1)根据消息协议的特征,从给定流量中提取出所有特定协议的报文,并根据协议规范中要求的报文格式确定各个报文的类型;对各个类型报文字段的相关性进行对比,并对所有报文进行聚类,将同一会话产生的报文归为一类;
(1-2)建立密码学函数指纹库,基于函数指纹来识别报文中字段的特定模式,包括字段的值及其对应的语义;并针对同一会话中的报文字段构建语义字典,所述语义字典中存储有字段的值及其语义;
(1-3)针对非密码学函数模式的字段,搜索报文中蕴含语义信息的等价式,并完善语义字典;
(1-4)基于连接符对字段进一步分割;
(1-5)基于步骤(1-3)完善后的语义字典,对步骤(4)分割后得到的所有字段进行语义识别,并将无法识别语义的字段按时间顺序不重复地编号,完成消息协议的字段语义信息的挖掘。
进一步优选的,步骤(2)中应用基于容错学习策略的状态机模糊测试模型,实现自动化挖掘协议的交互逻辑,并构建可视化的协议交互状态机,包括以下步骤:
(2-1)基于同一会话的报文特征,构建输入输出单词表,设置状态机模糊测试适配器,测试对象为平台部署的协议代理;
所述的适配器用于实现输入单词和真实测试的映射关系,以及输出单词和测试协议代理响应的映射关系;选择输入的单词序列,并由适配器转换为真实的发送数据包或者重置动作,协议代理接受数据包或重置动作后做出响应,并被适配器捕获,转换为输出单词序列;
(2-2)在测试阶段引入测试延迟,所述测试阶段包括基于MAT模型的成员查询测试和等价查询测试;在成员查询测试过程中,对多组不同排列组合的输入单词序列进行测试,测试后得到相应的输出单词序列,并基于多组输入单词序列和输出单词序列之间的对应关系,得到初步的协议交互状态机假设,并使用DOT语言进行可视化;
(2-3)在得到初步的协议交互状态机假设后,设计基于剪枝的W-Method的等价查询算法来判断假设是否和真实的协议部署一致;在等价查询测试过程中,当某个输入单词对应的输出单词显示协议的连接已经断开时,则该输入单词所在的单词序列的等价查询测试将停止,并开始选择新的输入单词序列进行新一轮的等价查询测试;
(2-4)设计基于阈值的学习策略避免学习算法陷入循环;
若步骤(2-3)中的等价查询过程出现一个输入单词和输出单词的结果与协议交互状态机假设不一致时,则基于该对输入单词和输出单词更新协议状态机假设,并进行新一轮的等价查询测试;
若等价查询过程中所有输入单词和输出单词的结果与协议交互状态机假设完全一致时,或者经过多轮学习后连续生成相同协议状态机的数量达到阈值时,将停止等价查询测试,以最新得到的协议状态机作为最终状态机模糊测试得到的协议交互状态机。
进一步优选的,步骤(2-1)所述的输入输出单词表由输入单词和输出单词构成,其中输入单词是模糊测试中的输入测试的抽象,输出单词是状态机模糊测试模型中测试对象的响应的抽象。
进一步优选的,所述的成员查询测试过程中,采用Angluin’s L*、TTT或者KearnsVazirani学习算法中的任意一种。
进一步优选的,步骤(3)通过有机结合消息协议的语义信息和交互逻辑实现自动化构建协议状态机,包括以下步骤:
(3-1)遍历步骤(2)所述的协议交互状态机的协议转换标签,匹配步骤(1)所述的字段语义信息,构建富含语义和交互逻辑的细粒度协议状态机;
(3-2)在步骤(3-1)得到的细粒度协议状态机基础上,对时间相关的字段设计发包测试,验证字段的有效性,优化协议状态机。
本发明还提供了一种物联网消息协议状态机的跨平台自动化挖掘系统,包括:
协议语义字段提取模块,其基于流量特征、模式匹配实现协议字段语义信息的自动化提取;
协议交互逻辑提取模块,其基于容错学习策略的状态机模糊测试模型,实现对物联网协议交互逻辑的自动化提取;
协议状态机构建模块,其用于结合协议语义字段提取模块输出的字段语义信息、以及协议交互逻辑提取模块输出的协议交互逻辑,构建细粒度协议状态机,并对状态机字段进行验证更新。
进一步的,所述的协议语义字段提取模块包括:
流量识别单元,基于特定物联网协议特征,对协议流量进行提取聚类;
语义字典构建单元,挖掘并保存协议字段语义和值的映射关系;
基于匹配的语义识别单元,通过基于密码学函数指纹的模式匹配、值匹配方式确定特定会话中所有协议字段的语义。
进一步的,所述的协议交互逻辑提取模块包括:
测试配置单元,其用于选择输入输出单词库和状态机模糊测试适配器;
成员查询单元,其用于获取多组输入单词序列和输出单词序列之间的对应关系,得到初步的协议交互状态机假设;
等价查询单元,其基于剪枝的W-Method的等价查询策略实现查询测试,迭代更新协议交互状态机。
进一步的,所述的协议状态机构建模块包括:
状态机构建单元,其通过结合协议交互状态机和协议字段语义信息,构建细粒度协议状态机;
验证更新单元,其通过对时间相关的字段进行测试验证,更新得到最终的细粒度协议状态机。
与现有技术相比,本发明的有益效果为:
(1)本发明的物联网消息协议状态机的跨平台自动化挖掘技术是基于流量分析和模型学习进行协议分析的,具体为:基于流量特征对消息协议的数据包进行提取和分类,基于模式匹配进行协议字段的分割并挖掘其语义信息,基于MAT模型和实际部署在平台上的协议代理进行交互,自动挖掘协议的交互逻辑来构建协议交互的状态机,并进一步对状态机进行优化。可见,整个过程无需获取协议代码,分析过程完全自动化,弥补了基于代码的协议分析技术的缺陷,可以直接应用于闭源的物联网消息协议部署的分析上,能够高效自动地挖掘灰盒模型下物联网协议部署的状态机。
(2)本发明的方法和系统只需轻易地修改部分单元就可以扩展到其他协议上,并能够实现跨平台的协议状态机挖掘。如将该方法应用到新的物联网消息协议中,通过阅读协议或平台文档,在协议语义字段提取模块中添加新协议的报文特征,帮助区分报文和确定报文类型;在协议交互逻辑模块中扩充抽象的输入输出单词表,添加新协议的抽象的输入输出单词,并更新适配器,添加新协议所需的映射关系即可实现跨平台的协议状态机挖掘。
(3)本发明设计了基于阈值的学习策略,当在查询测试过程中出现测试结果与假设状态机不一致时进行迭代更新,测试结果与假设状态机完全一致时或者连续生成相同协议状态机的数量达到一定阈值时完成测试,可以有效解决与现实世界交互时存在学习循环的限制,通过改进W-Method等价学习算法提高了学习效率。
附图说明
图1为本发明的整体模块结构图;
图2为本发明的协议流量语义自动提取流程图;
图3为本发明的查询测试流程图;
图4为本发明的协议交互逻辑自动提取流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细描述,需要指出的是,以下所述实施例旨在便于对本发明的理解,而对其不起任何限定作用。
一种物联网消息协议状态机的跨平台自动化挖掘方法,其通过协议关键字段、字段语义信息挖掘和协议交互逻辑挖掘,自动化构建协议状态机,具体包括以下步骤:
步骤一,对消息协议的数据包进行特征提取和分类,对消息协议进行字段分割,并挖掘消息协议的字段语义信息;
步骤二、应用基于容错学习策略的状态机模糊测试模型,实现自动化挖掘协议的交互逻辑,并构建可视化的协议交互状态机;
步骤三、结合消息协议的语义信息和交互逻辑,对步骤(2)构建的可视化的协议交互状态机进行细粒度优化,实现自动化构建细粒度协议状态机。
本发明通过三个模块实现上述步骤,如图1所示,包括协议语义字段提取模块、协议交互逻辑提取模块和协议状态机构建模块。
(1)协议语义字段提取模块的作用是实现基于流量特征、模式匹配实现协议字段语义自动化提取,包括流量识别单元、语义字典构建单元和基于匹配的语义识别单元。
该模块的工作流程如图2所示。
首先,利用流量识别单元,基于特定物联网协议特征,从给定流量中提取出所有特定协议的报文,并根据协议规范中要求的报文格式确定各个报文类型;通过对各个类型报文字段的相关性对比,对该协议的所有报文进行聚类,将同一会话产生的报文归为一类。
接着使用语义字典构建单元,挖掘并保存协议字段语义和值的映射关系。该单元建立密码学函数指纹库,基于函数指纹来识别报文中字段的特定模式,包括字段的值及其对应的语义;并针对同一会话中的报文字段构建语义字典,存储字段的值及其语义。针对其他非密码学函数模式的字段,该单元挖掘报文中的等价式,如“Key=Value”或“Key:Value”等,完善语义字典。
最后,利用基于匹配的语义识别单元,对基于“/”或“&”等连接符对字段进一步分割。基于构建的完善后的语义字典,对所有得到的字段进行语义识别。其中,无法识别语义的字段将按时间顺序不重复地编号为V1,V2等,至此就完成了消息协议的字段语义信息的挖掘。
(2)协议交互逻辑提取模块的作用是,基于模型学习及响应改进的学习算法及策略实现对现实世界物联网协议交互逻辑的自动化提取,包括学习配置单元、成员查询单元和等价查询单元。
其中成员查询单元和等价查询单元的实现细节如图3所示。
基于(1)中同一会话的报文特征,构建抽象的输入输出单词表作为测试集合,设置状态机模糊测试适配器,测试对象为平台部署的协议代理。其中输入表中的单词是模糊测试中的输入测试的抽象,输出表中的单词是状态机模糊测试模型中测试对象的响应的抽象。适配器用于实现输入单词和真实测试的映射关系、以及输出单词和测试协议代理响应的映射关系。选择输入的单词将由适配器转换为真实的发送数据包、重置等动作,协议代理接受数据包或重置等动作后会做出响应,并被适配器捕获,转换为抽象的输出单词。
成员查询单元和等价查询单元基于容错学习策略的成员查询算法(如Angluin’sL*、TTT、Kearns Vazirani算法),在测试阶段,每一次针对特定单词的查询都设置时间延迟,保证协议代理有足够的响应时间来提高学习的准确率。所述测试阶段包括基于MAT模型的成员查询测试和等价查询测试;在成员查询测试过程中,对多组不同排列组合的输入单词序列进行测试,测试后得到相应的输出单词序列,并基于多组输入单词序列和输出单词序列之间的对应关系,得到初步的协议交互状态机假设,并使用DOT语言进行可视化。
在多次查询后,学习算法将生成一个协议交互状态机假设作为等价查询的输入。其中等价查询单元还实现了基于剪枝的W-Method的等价查询算法来判断协议状态机是否和真实的协议部署一致。等价查询将比较每一组输入单词的序列及其输出单词序列是否与假设的协议状态机一致。如有一个单词的输入输出与假设不一致,则其将作为反例输出,否则将输出完全一致的判断结果。
基于剪枝的W-Method算法如下:当某个输出单词显示协议的连接已经断开时,该输入的单词序列的等价查询将停止,并开始选择新的输入单词序列进行新一轮的等价查询,这是因为该输出意味着接下来的查询都将返回相同的结果,即协议连接已经断开,继续进行查询是无意义的。
协议交互逻辑自动提取模块的工作流程如图4所示。
首先,学习配置单元基于测试的协议设置测试单词库、协议适配器和学习策略,可选的有MQTT,CoAP和AMQP协议。接着利用成员查询单元实现基于容错学习策略的成员查询测试,得到初步的协议交互状态机假设。然后利用等价查询单元实现基于剪枝的等价查询测试,判断协议交互状态机假设是否与真实的协议部署一致。最后使用基于阈值的学习策略避免陷入学习算法陷入循环。如等价查询过程出现一个输入单词和输出单词的结果与假设状态机不一致时,则基于该对输入单词和输出单词更新协议状态机的假设并将进行新一轮的主动模型学习,包括成员查询和等价查询。如等价查询测试过程中所有输入单词和输出单词的结果与假设状态机完全一致时,或者经过多轮学习后连续生成相同协议状态机的数量达到一定阈值时,将停止学习,以最新得到的协议状态机作为最终学习得到的协议交互状态机。
(3)协议状态机构建模块的作用是有机结合所述的协议语义字段提取模块和协议交互逻辑提取模块构建细粒度协议状态机,并对状态机字段进行验证更新,包括状态机构建单元和验证更新单元实现协议状态机自动化构建。其中状态机构建单元结合协议交互逻辑提取模块获得的协议交互状态机的协议转换标签,以及协议语义字段提取模块获得的协议字段语义,构建富含语义和交互逻辑的细粒度的协议状态机,验证更新单元进一步对时间相关的字段进行测试验证,更新得到最终的状态机。
为了进一步证明本发明的实施效果,本实施例对上述的跨平台自动挖掘系统进行了仿真实验。本实施例在七个物联网平台上申请了物联网消息协议的服务,并使用平台提供的默认配置实现了MQTT V3.1.1,MQTT V5.0,CoAP和AMQP V1.0协议的部署。将本发明应用于七个平台上物联网消息协议的部署,分别进行了微小的改动,添加MQTT、CoAP和AMQP协议报文特征,扩充抽象的输入输出单词库,并更新适配器,实现不同物联网消息协议跨平台的状态机挖掘。
表1仿真及实验数据
协议平台 |
协议类型 |
状态机状态数量 |
挖掘时间(h:mm) |
谷歌 |
MQTT V3.1.1 |
3 |
06:32 |
亚马逊 |
MQTT V3.1.1 |
3 |
02:29 |
微软 |
MQTT V3.1.1 |
3 |
04:37 |
博世 |
MQTT V3.1.1 |
5 |
05:31 |
Mosquitto |
MQTT V5.0 |
2 |
00:23 |
阿里巴巴 |
CoAP |
2 |
04:07 |
ActiveMQ |
AMQP V1.0 |
9 |
05:11 |
仿真及实验数据如表1所示。其中仿真实验涵盖了七个不同的物联网平台,三种不同的物联网消息协议,证明该发明可以适用于不同的物联网平台以及不同的消息协议。仿真实验显示,不同的平台和协议的状态机呈现出多样化的特征,挖掘得到的状态机的状态数量为2到9不等。通过对开源平台Mosquitto和ActiveMQ的源代码分析可以验证该发明挖掘得到的状态机和实际的协议部署是一致的。其中七个不同平台的不同协议部署的状态机挖掘均是自动化的过程,端到端的挖掘挖掘时间为23分钟到6小时32分钟不等,平均时间约为4小时。其中考虑到谷歌平台的服务器处于国外,协议交互逻辑提取模块进行交互测试时有额外开销,导致挖掘时间最久,为6小时32分钟。和手动的源码分析相比,源码分析需花费大量人力,且花费时间取决于分析人员的代码分析经验和熟练程度,甚至需花费数天,而本发明的挖掘过程和分析人员的经验无关,花费时间较少,更为高效。
因此根据仿真实验,本发明能够高效自动地挖掘灰盒模型下不同物联网协议部署在不同平台上的状态机。
以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。