李琪阳,董雷,2
(1.武汉邮电科学研究院,湖北武汉430000;2.武汉理工光科股份有限公司,湖北武汉430000)
物联网(Internet of Things,IoT)技术及其应用的发展态势迅猛,其数量也呈现出激增的趋势。有研究报告指出,物联网设备的数量在未来也将因为市场需求的增加而呈指数级增长,预计2030年物联网设备的数目将达到1 250 亿[1]。海量异构式分布的物联网应用场景在方便人们生活的同时,其自身的安全问题也日趋严峻。物联网设备的安全问题引发了多方面的研究探索——设备指纹正成为一个新的研究热点。物联网设备和人体指纹一样,拥有可被采集性、唯一性和不可复制性。在传统设备识别方式受限的情况下,设备指纹显露出蓬勃的识别潜力。
文献[2]基于隐性信息,分析了浏览器指纹的生成算法和更新问题,但是未对物联网这一课题进行探讨;文献[3]设计了基于关联匹配的物联网设备指纹识别算法,但该算法限制只允许一条隐性信息发生改变,对设备指纹的更新研究具有一定的局限性。基于此,文中考虑到设备指纹的动态性变化,设计了基于朴素贝叶斯的物联网设备指纹算法,解决设备指纹的更新问题,并根据实验结果验证了在实际情况下算法的性能。
设备指纹是可以唯一标识出某一设备的特征信息集,其研究通常围绕显性信息和隐性信息(有些文献中也称为显性标识符和隐性标识符)开展,设备指纹的显性信息可以唯一识别该设备,一般是设备的ID、出厂序列号等,是其独有的特征标识。设备指纹的隐性信息所涵盖的范围更为广泛,如设备的基本属性、判断属性和集合属性等,物联网设备指纹的隐性信息一般可以通过调用设备的接口来获取。显性信息识别设备由于其易被篡改和伪造,很容易造成安全问题。单个的隐性信息无法进行设备识别,因此,将按照一定的规则组合多个隐性信息来生成设备指纹,以此有效地增强对设备的识别能力。
文中采用网络摄像头作为实验所需的物联网设备,采取主动式设备指纹特征获取技术,通过软件开发工具包(Software Development Kit,SDK)获取网络摄像头的特征属性,再通过服务器端写入的Hash 算法生成设备指纹,从而构建指纹信息库,主动式设备指纹技术原理如图1所示。主动式设备指纹技术虽然可以获取全面且精确的设备信息,但是需要依赖设备用户开放权限[4]。
图1 主动式设备指纹技术原理图
考虑到设备信息选取应具备的普遍性、标识性和可采集性以及网络摄像头的相关特征,在参考了文献[4]的指纹元素后,文中选取设备的IP 地址、设备参数信息(主要包含设备的序列号、类型)、压缩参数、音频编码信息、屏幕信息(主要包含屏幕分辨率等)以及时间信息作为设备的隐性信息。根据设备生产厂商(海康威视)提供的SDK 开发文档,调用SDK 接口提取设备信息并上传到后台服务器。SDK接口调取参数信息的主要流程如图2所示。
图2 SDK接口调用流程
设备指纹识别性能指标通常由准确率(Accuracy)、误报率(FPR)、和漏报率(FNR)来反映。一般采用混淆矩阵中的正负类指标TP(真正)、TN(真负)、FP(假正)、FN(假负)来表征3 项评价指标,其计算公式如下:
其中,Accuracy包含识别成功且经验证为正确与识别失败但经验证为正确的两种结果;FPR表示识别正确但验证为错误的结果,即不同的两条设备指纹被识别为同一设备;FNR表示识别失败但验证为错误的结果,即未能识别出已有的设备指纹,而误认为其代表的是新设备。可见,3 项性能指标全面地覆盖了设备指纹识别可能出现的识别结果,使实验结果具有可信度。
朴素贝叶斯算法要求每个特征相互独立不互相影响,其核心思想就是计算每个类别的概率从而找出概率最大或最为匹配的类别。
给定一个训练数据集,为了计算已知特征y而分类为xi的后验概率,由贝叶斯定理可得:
式中,P(xi)和P(y)分别代表类别xi和特征y的先验概率。P(y|xi)是指种类xi具有特征y的可能性。
由上述分析可知,最大化P(xi|y)的值即可实现分类的目标。
对于未知类别的设备指纹样本y,P(xi|y) 表征的是指纹y属于某一个类别x的概率。已知设备指纹y由多条隐性信息组成,可表示为y=(y1,y2,…,yn)。
当各属性相互独立的条件下,由式(4)可知:
将P(xi)和P(y1,y2,…,yn)看作常量,简化上式,可以近似得出未知类别的设备指纹样本y的分类结果xf满足式(6):
假设指纹数据集样本总数为D,由于样本数据集有限,某个属于类别xi的离散值yk在数据集中出现的次数|Dyk,xi|可能为零,乘积为零导致分类结果不准确,因此引入狄利克雷校准:
式中,μ为任意取值的参数。
可以将设备指纹库DF中的每条指纹df看成是一个类别,根据式(7)计算p(df|y)的值,如果所有的值均小于threshold,说明DF不包含待测的指纹y,即关联失败[5]。
为了确定合适的阈值,引入了新的概念:精确率(Precision)、召回率(Recall)和F分数Fα。精确率和召回率是对1.3 节中3 项性能指标的一种新的反映形式,而F分数则是兼顾二者的综合评价指标。当α<1 时,精确率的权重大于召回率,符合实验预期,所以令α=0.5。三者的计算公式如下:
阈值threshold 初始设置为0,在训练数据集上运行朴素贝叶斯分类器。每完成一次分类后,都会得到设备指纹所属的类别xf和其对应的概率值p,根据比对库验证识别结果,更新TP、TN、FP、FN,并计算此时的F0.5。定义一个<key,value>键值对数组记录xf对应的概率值为p时,匹配成功且正确、匹配成功但错误、匹配失败但正确和匹配失败且错误的数量。将非零的key值从小到大排序,调整threshold的关系使之满足Keyi<threshold<Keyi+1,i∈[1,n]。从数组中读取Keyi对应的元组,从而更新TP、TN、FP、FN的值,就能不断获取新的阈值和其对应的F0.5。当F0.5取最大值时所对应的阈值即为目标阈值[6-10]。
根据以上公式推导,可以得到基于朴素贝叶斯分类器的设备指纹算法如图3所示。
图3 基于朴素贝叶斯的物联网设备指纹算法流程图
如图3所示,分类结束后,遍历列表q,筛选出符合条件的概率值。若q能满足限制条件,则认为分类成功,设备指纹y在已有类别中可以找到对应类别,为回访设备;若q无法满足限制条件,则表明设备指纹y不在已有的类别中,是新的物联网设备接入,将此指纹存入设备指纹库中,并对设备指纹总数和所属类别总数进行更新[11-13]。
文中的实验流程如图4所示,具体过程如下:
图4 实验流程
1)设备管理平台接入设备;
2)采集第1 节中选取的设备信息,生成设备指纹一同存入设备指纹库中;
3)当后台服务器接收到新上传的设备指纹时,遍历已有的设备指纹库,完成指纹的分类;
4)如果识别成功,则直接在指纹库中读取关联的序列号;
5)若结果显示设备信息发生变化,服务器会执行指纹更新模块来完成指纹的相关更新操作,并将得到的新的设备指纹写入库中。
文中选取了452 个海康网络摄像头作为物联网接入设备,在2020年5月8日至2020年10月15日期间共收集到了5 940 条指纹数据。对于基于朴素贝叶斯分类器的指纹更新算法,采用指纹数据集中的70%作为训练集,余下的30%作为测试集。在训练集进行分类器的训练,再用训练好的分类器对测试集上的指纹进行分类。在对其进行平滑处理时,将参数μ的取值定为0.01、0.10、1.00 来进行对比实验。TP、TN、FP、FN的测试结果如表1所示[14-16]。
表1 混淆矩阵指标测试结果
根据表1中TP、TN、FP和FN的数值以及式(1)~(3)进一步计算可以得到算法的3 项性能指标,统计结果如图5所示。
图5 3种性能指标的统计结果
针对物联网技术迅速发展所带来的一系列设备识别安全问题,结合对现有指纹技术的分析,文中研究了基于朴素贝叶斯的物联网指纹算法,并且将设备指纹的更新问题转化为分类问题,通过实验验证了其在实际应用场景下的性能,实验结果表明,算法识别准确率高、误报率和漏报率极低,算法高效且易于实现,具有一定的现实参考意义。