物联网终端智能识别系统设计与实现
2019-09-05汪卓越王春东马云飞向朝参
张 立,汪卓越,王春东,马云飞,向朝参
(1.重庆工商大学 融智学院,重庆 401320; 2.天津理工大学 教育部计算机视觉与系统省部共建重点实验室,天津 300384;3.陆军后勤部 战勤计划局,北京 100043; 4.重庆大学 计算机学院,重庆 400044)
0 引 言
随着物联网技术及应用的迅猛发展,物联网本身的安全问题也日趋严峻。物联网安全涉及感知、传输与应用等多级层次,包含感知安全[1]、节点安全[2]、传输安全[3]、防御安全[4]、边缘安全[5]等诸多内容,各层级的安全防御技术共同构筑物联网的整体安全防御体系。
作为物联网整体安全态势感知与安全体系构建的基础,感知层的物联网终端智能识别尤为关键。形态各异的设备、模块以独立或嵌入式方式接入物联网,感知并响应环境变化,统称为物联网终端。不同于传统Internet主机,物联网终端形态的多样性、特征的复杂性,使得智能识别成为难题[6]。
黑客们往往利用非法接入的物联网终端攻击或入侵服务器与其他合法设备,从而挑战整个物联网安全体系[7-8]。
传统物联网终端易仿冒的根源在于终端识别信息的静态性。常规的物流网终端识别方案通常采用设备ID、用户ID、IP地址、媒体访问控制(media access control,MAC)地址等信息进行识别。设备ID、用户ID的静态性,IP地址、MAC地址的开放性,均使得上述识别信息容易被黑客扫描、读取并仿冒。设备指纹[9]将静态的设备信息与动态的用户行为数据结合,构造了更为动态复杂的标识信息组合,为物联网智能终端的准确识别提供了新的思路。例如,将IP地址、操作系统版本、端口状态、入网位置等信息组合即构成了一种动态的、标识设备当前状态的设备指纹。
设备指纹引入了动态性,同时也引入了设备识别的复杂性,即一种设备可能在不同时刻对应着不同的设备指纹实例,并随时可能产生新的设备指纹实例。因此,传统的以服务器端数据库静态标识记录对比进行设备识别的方法失去了效用,需要开发新的设备识别技术,该技术应该包括设备指纹实例的自动萃取与设备指纹的智能分类功能。机器学习为建立在已知数据集上的分类识别问题提供了方法参考,尤其是决策树、逻辑回归与朴素贝叶斯等机器学习算法,为物联网设备指纹数据的训练,分类器的构建以及分类预测提供了依据。采用Nmap扫描方法萃取物联网终端指纹,以其为基础,利用基于机器学习的智能分类器,即可为物联网终端识别提供一种相对安全且高效的智能识别方案。
针对物联网终端指纹的自动萃取与智能分类问题,文章建立了一种基于机器学习的物联网终端智能识别系统。该系统以物联网终端指纹为识别基础,其业务流程贯穿终端检测、模型训练以及智能识别等功能模块,较好支持了物联网终端的智能识别。其中,模型训练模块分别采用了决策树方法、逻辑回归方法与朴素贝叶斯算法进行分类器训练。最后,应用Python语言实现实验系统并进行数据仿真与对比分析。
本文是对物联网终端智能识别问题的系统性求解研究,主要工作包括:①利用设备指纹的概念对物联网终端的属性特征进行定义与标识;②利用Nmap扫描方法自动采集物联网终端设备指纹;③分别利用决策树、逻辑回归与朴素贝叶斯等方法对分类器进行设计与数据仿真;④构建了物联网终端智能识别系统。由于将设备指纹与机器学习方法结合以解决物联网终端智能识别的文献还相对稀少,未曾检索到基于机器学习的物联网终端智能识别系统的具体设计与实现,因此,本研究具有领域应用的创新性与实用性。
1相关研究工作
当前对于物联网终端的智能识别问题已经引起了国内外学者的关注,主要包括基于设备静态标识的识别方法和基于设备指纹的识别方法,如表1。
基于设备静态标识的识别方法主要是指利用设备的某个或某些唯一标识作为特征进行识别,如IP地址、MAC地址、设备ID等。邹宇驰等[10]从物联网设备协议分析的角度,从设备协议搜索的过程中提取产品属性信息,构建了包含物联网设备静态属性的信息库,并提出了对具体设备进行分级识别和标定的方法。任春林等[11]从Web协议特征分析的角度,利用信息增益模型提取特定类型终端的设备标识特征,并利用正样本和无标记样本的机器学习方法(positive and unlabeled learning, PUL)进行设备的识别与分类。基于设备静态标识的识别方法因为静态的、相对简单的终端标识,存在被黑客分析、仿冒或篡改的安全风险。
表1 当前研究与本文工作的比较
为了解决上述问题,基于设备指纹的识别方法被提出,即将多种标识信息组合以提高身份仿冒的壁垒。Lin等[9]提出了设备指纹思想并应用产品动态属性集建立了设备指纹实例。肖清旺等[12]分析了现有安全机制中设备标识过于简单而极易被盗用身份的现象,提出了利用设备特征集合的识别策略与识别步骤,建立了物联网智能终端特征集合。由于设备指纹远比静态设备ID复杂多样且具有动态性,其智能识别的难度更大,如何自动采集设备指纹并进行智能分类以识别物联网终端成为了难题。机器学习为物联网终端的自动分类提供了新的思路。Meidan等[13]通过网络数据分析与基于监督学习的分类器训练应用梯度提升树(gradient boosting machine, GBM),随机森林(random forest, RF),极端梯度提升(extreme gradient boosting, XGBoost)等机器学习模型建立物联网设备分类器,取得了较好的物联网终端的分类识别效果。Miettinen等[14]建立了物联网终端自动识别系统IoT Sentinel,通过MAC地址与设备ID结合进行设备识别,并验证了IoT Sentinel的识别能力与性能开销。
上述基于设备指纹的识别工作仅仅讨论分类方法的概念设计与仿真,未曾从系统的角度考虑识别系统的设计与构建,也未曾对所应用的机器学习分类方法的适用性进行对比分析。因此,在实用性方面存在一定欠缺。与之不同,本文采用基于设备指纹的识别方法,从实际系统出发,研究和提出了面向实际应用的设备指纹识别技术和系统实现。
2 智能识别系统设计与实现
2.1 系统简介
物联网终端智能识别系统用于自动识别物联网中具体设备或终端的类型。授权用户(人、智能体、WEB程序、手机APP等)通过浏览器(或程序)向终端检测模块提交对特定联网终端的识别请求;终端检测模块通过Namp技术扫描对应设备并获取终端设备指纹;然后,智能识别模块通过调用机器学习算法训练的智能分类器对设备指纹进行分类识别,从而检测并返回设备的类型。
2.1.1 应用场景
位于服务器端的主控程序首先调用终端检测模块自动扫描并采集对应终端的指纹数据,进而调用智能识别模块判断联网终端的具体设备类型,最后将联网终端的识别结果返回给用户。图1是物联网智能识别系统的使用场景。
图1 智能识别系统使用场景Fig.1 Scenario of intelligent recognition system
2.1.2 总体流程
当授权用户输入所要查询的终端IP时,系统先判断该IP地址是否存在。如果存在,则进行Nmap扫描该IP的操作系统以及开放的端口号,之后将得到的数据导入到数据库[13]。通过对已经导入到数据库的数据进行分类训练生成训练模型,并以该训练模型为基础进行终端设备指纹智能识别或预测[14]。系统总体流程如图2。
图2 智能识别总体流程Fig.2 Overall flow of intelligent identification system
2.1.3 设备指纹定义
物联网终端智能识别的基础是提取设备指纹。Nmap嗅探到的信息包括终端在线状态、开放端口、服务协议(如域名服务器 (domain name server,DNS), 超文本传输协议(hypertext transfer protocol,HTTP), Telnet)、应用程序名(如ISC Bind,Apache httpd,Solaris telnetd)、版本号、主机名、设备类型(如 打印机,路由器),操作系统家族 (如Windows,Linux)以及其他的细节。设备指纹的定义主要是为了唯一地识别具体终端,例如:将设备类型、操作系统或开放端口、操作系统进行组合均可以较好地识别设备。本系统采用自定义设备指纹的机制,用户可以根据识别的目标进行信息的特定组合定义。实验中的设备指纹主要采用设备类型、开放端口与操作系统的组合进行定义。
2.2 终端检测模块
终端检测模块利用Nmap工具对所要检测的物联网终端设备进行批量嗅探。主要功能包括对文件中的IP行进行读取;自动扫描IP对应的终端;提取设备指纹(特征信息)并导入数据库,其检测过程如图3。
2.3 模型训练模块
模型训练模块的主要功能是训练分类器。通过对所采集设备特征信息进行选取及预处理,将规范化后的设备指纹训练集导入分类算法模块,从而创建分类训练模型,工作流程如图4。
图3 终端检测模块工作流程Fig.3 Flow of terminal detection module
图4 模型训练模块工作流程Fig.4 Flow of model training module
在分类模型训练模块中,分类器的构建是关键,而构建分类器的机器学习算法多样,不同方法具有不同的分类效果。在本系统研究中我们选用了典型的决策树、逻辑回归与朴素贝叶斯算法进行实现,并通过实验对比其在物联网终端指纹识别上的效能,具体算法的原理与实现简述如下。
2.3.1 决策树分类原理
决策树分类算法使用树形结构来制定决策与结果的序列,其结构由测试点和分支点组成,其中分支表示作出的决策,没有下一级分支的节点叫做叶子节点,叶子节点返回的是分类结果。在某些实现中,叶子节点返回每种分类的概率值。最终获得的决策树能够用一组决策规则来表示。决策树算法核心就是信息增益,首先计算各个节点的信息增益的大小,通过信息增益的大小考虑各节点上用什么特征,最后用信息增益最大的特征来建立决策树的当前节点。
2.3.2 逻辑回归分类原理
逻辑回归算法既可以用于二分类决策问题,也可以运用到多分类决策问题中。逻辑回归分类算法基于逻辑函数g(z),表示为
(1)
随着z值的增加,结果发生的概率也会增加。逻辑函数的取值为(0,1),所以十分适合用来模拟特定结果发生的概率。
2.3.3 朴素贝叶斯分类原理
朴素贝叶斯是一种按照概率的分类算法,它基于贝叶斯定理,如(2)式。
(2)
(2)式中:C∈{C1,C2,C3,…,CK}表示类型;D=(w1,w2,…,wn)表示特征集;P(C|D)为后验概率,表示特征数据D属于C的概率;P(C)为先验概率,表示C类样本数量占总样本数量的比例;P(D)在此是常数。因此,P(C|D)与P(C)P(D|C)成正比,得到朴素贝叶斯分类,表示为
Ci=max(P(Ci|D))=argmax{P(Ci)P(D|Ci)}
(3)
2.3.4 分类器的实现
PythonSklearn模块集成了上述3种机器学习算法,其调用实现步骤类似。以决策树算法生成分类器为例,具体步骤如下。
1)导入sklearn.datasets类,加载设备指纹作为数据集;
2)将设备指纹分为特征数据与分类数据;
3)导入model_selection.train_test_split函数,将数据集细分为训练集特征,测试集特征,训练集目标值,特征值目标值;
4)导入sklearn.tree.DecisionTreeClassifier函数,将决策树分类器导入;
5)使用训练集训练模型;
6)导入sklearn.metrics.accuracy_score评估计算方法来查看预测结果的准确度;
7)导入sklearn.externals.joblib类用于导出训练模型。
2.4 智能识别模块
该模块通过训练后的分类器来判断设备的类型,主要包括设备指纹信息收集,将得到的特征信息用训练模型行进检测,得出判断结果,步骤如图5。
图5 智能识别模块流程图Fig.5 Flow of intelligent identification module
扫描目标IP收集终端设备指纹的部分调用终端检测模块。之后,利用Python Sklearn中joblib子类中load( )方法将得到的分类器训练模型导入,并用该模型对扫描得到的信息进行预测,得到判断结果。
2.5 系统日志模块
该模块的主要功能是记录系统中发生的事件。用户可以通过它来检查错误发生的原因,同时,日志数据也可以作为数据挖掘的基础。
日志文件是包括数据库系统在内的任何计算系统的重要产品。它们包含大量的历史数据。日志文件通常用来跟踪执行过程,记载执行活动与执行者,从而能重现或恢复计算执行场景。对于数据库系统,文件中的事务信息可以用于恢复任何数据库事务失败以及滚动数据库返回到其以前的一致状态。日志文件通常是平面文件,其主要内容包括时间戳、事件标识符、有关已执行事件的信息等。日志文件提供了事务历史和用户事件,通过日志文件可以挖掘隐藏信息,例如识别频繁项查询,识别数据聚类,以及识别搜索频率查询等。
3 算例仿真分析
3.1 算例设计与实现
首先选择需要检测的txt文件,文件中包含IP地址以及所对应的设备类别,为了分类器数据格式的要求,对设备类别进行数字化处理,其中,物联网设备标为1,传统主机标为0,部分信息如图6。
图6 部分待检测设备IPFig.6 Part IP of terminal device
根据设备指纹定义设计的指纹特征训练表如表2。其字段包括OS,Port1,Port2,Type等,其中,OS表示设备操作系统类型;Port1,Port2表示扫描到的2个任意开放端口号;Type表示设备类别。
表2 部分设备指纹
通过Python的csv模块,完成指纹数据到文件的导入、转换以及导出。将操作系统类型进行数字化,导出到csv文件,以便之后进行训练,文件的显示效果如表3。
表3 部分训练数据
对已生成的csv文件中的数据进行训练。先将全部的数据分成2部分,90%数据作为训练集;10%作为测试集,用来验证生成模型的准确率。将生成的模型导出作为分类器模型,以此为基础对后续的设备指纹进行检测识别。
3.2 3种机器学习算法识别效果分析
利用决策树、逻辑回归、朴素贝叶斯等3种不同的分类算法分别构建智能识别分类器,以同一训练数据集进行模型训练,并用训练集与验证集分别验证分类器效果。3种分类器的识别精确度比较如图7。
图7 3种分类器精确度比较Fig.7 Accuracy comparison of the three classifiers
由图7可以看出,决策树训练出的分类器无论在训练数据集还是验证数据集的分类处理上都有着相对较高的精确度,其平均精确度达到98.1%;与之相比,逻辑回归算法得到的分类器则有着较低的精确度,其平均精确度为94.0%;朴素贝叶斯分类器虽然在训练数据集上有着很好的模拟结果,但在验证数据集上的精确度相对偏低,其平均精确度为96.8%。
改变训练集与验证集数据比例,将训练集指纹数据比例由90%降至85%,用来训练分类器;提高测试验证集指纹数据比例至15%,用来评估分类器的分类效果。图8为物联网设备和非物联网设备的识别率。其中,决策树分类器的识别率为98.7%,逻辑回归分类器的识别率为95.0%,朴素贝叶斯分类器的识别率为94.9%。
由于不同的物联网设备具有不同的指纹特征信息,同一分类器对不同的物联网设备的识别率也有不同。图9显示了不同物联网设备的识别率。其中,决策树分类器的识别率为98.2%,逻辑回归分类器的识别率为94.5%,朴素贝叶斯分类器的识别率为95.9%。
图8 物联网与非物联网设备识别率Fig.8 Identification rate between IoT device and other device
图9 不同物联网终端设备识别率Fig.9 Identification rate in different type of IoT device
从以上分类器的识别效果数据比较中可以得出如下结论:①在包括训练集与测试集在内的整体设备指纹数据集上的识别率方面,决策树方法优于朴素贝叶斯方法,朴素贝叶斯方法优于逻辑回归方法;②在对物联网与非物联网设备的识别率方面,决策树方法优于朴素贝叶斯方法,朴素贝叶斯方法与逻辑回归方法相差无几;③在具体物联网设备识别率方面,决策树方法优于朴素贝叶斯方法,朴素贝叶斯方法略优于逻辑回归方法。
综上,可以认为,决策树分类器在对于物联网终端指纹的识别上具有较高精确度,是分类器构造的优选方法。
4 结束语
本文针对物联网终端设备的智能识别问题,提出了一种基于设备指纹与机器学习的识别方法,并设计了相应的智能识别仿真系统。该系统通过Nmap技术采集设备指纹,通过机器学习方法分析指纹,识别设备。在设备指纹数据集上采用决策树、逻辑回归与朴素贝叶斯等3种不同的分类算法构造分类器并评估识别系统准确性。结果表明,决策树分类器具有显著优势。
由于防火墙与安全防护的升级,基于Nmap技术的设备指纹采集并不完全可靠。因此,下一步研究中需要考虑如何提升指纹采集的可靠性问题。另外,本文提出的决策树方法还应与更多的分类方法如聚类方法、神经网络方法、支持向量机方法等进行实验性能对比和分析,这也将在后续研究中进行研究和完善。