王靖翔,劉翔宇,尹鐘舒,劉丹丹,謝镕镕,杜彥輝
(中國人民公安大學信息網絡安全學院,北京 100038)
近年來,隨著通信技術的快速革新和物聯網技術的蓬勃發展,越來越多的物聯網設備連接在網絡空間上,研究表明到2026 年,網絡空間的物聯網設備數目將超過800 億[1]。智能家居作為物聯網技術的一大廣泛應用場景,已經給人們的生活帶來巨大變化,如IP 攝像頭、智能家電、家用智能傳感器等設備接入互聯網,讓人們可以切實享受到物聯網技術帶來的便利。
然而,智能家居設備在給人們生活帶來便利的同時,其組成的復雜網絡環境也帶來了新的問題與挑戰[2]。許多智能家居設備往往存在一些公開或非公開的安全漏洞,將用戶置于長久的安全威脅之下,例如不法攻擊者可以利用某個特定類型攝像頭的漏洞,獲得該類型設備的管理員權限,竊取、挾持用戶流量,侵害用戶的隱私等[3-4]。由于特定的漏洞往往只威脅某一特定品牌型號的設備,因此,對智能家居設備的分類和識別,成為學術界與工業界關注的熱點問題。
現有的智能家居設備識別方式主要是基于流量特征進行的,然而流量特征種類繁多,如何確定強特征和有效的特征集成為智能家居設備識別的一個重要問題。
基于以上原因,本文依托網絡流量提出一種基于遺傳算法的物聯網設備識別最優化特征選擇方法,該方法從網絡數據包中的頭部數據和載荷數據中提取各類流量特征,構建特征池,然后通過遺傳算法進行特征選擇,確定最優特征集,通過實驗論證,所選擇的特征集能夠對大多數物聯網設備如IP 攝像頭、智能電燈、家用智能傳感器等實現較為準確的分類識別。
遺傳算法[5]是較為經典的一種自然啟發式算法,其借鑒達爾文生物演變進化的理念,讓數據從初始隨機混沌的狀態,根據一定的規則,逐漸演變進化到合理解。在遺傳算法中,每個個體表示問題的一個解決方案,個體之間通過交叉、變異等方式產生新個體,組成新的種群,然后由適應度函數對新種群中的每個個體進行評價,優勝劣汰,最后得到最佳個體,即問題的最佳解決方案。其基本過程如圖1所示。

圖1 遺傳算法流程圖
面向智能家居設備識別的特征選擇其實是一個約束目標優化問題,相比于粒子群算法[6]、模擬退火算法[7]、蟻群算法[8-9]等其他優化算法,遺傳算法的優點是全局搜索能力較強,可以在較短的時間內達到全局最優解的90%以上,并且具有較高的魯棒性。因此本文嘗試用遺傳算法解決面向智能家居設備識別的包特征選擇問題。
一般說來,遺傳算法GA可以表示為GA=(M,C,P,S,I,V,A,T),其中M表示種群大小;C表示染色體編碼方式;P表示初始種群;S、I、V分別代表選擇算子、交叉算子、變異算子;A和T 分別表示適應度函數和終止條件。利用遺傳算法對面向設備識別的包特征選擇問題進行求解之前,要設定以上8個變量。
其中,M表示種群中個體的數量,M的取值越小,遺傳算法所需的計算時間就越短,但算法的全局搜索能力越弱,陷入局部最優解的可能性越高。相反,M的取值越大,算法得到全局最優解的可能性越大,但是其計算時間也會顯著增加。目前,還沒有可靠的理論計算方法來確定M的取值,其取值一般需要憑借個人經驗和反復調試的結果來確定。在本文中,種群大小M的取值設為80。
染色體編碼方式C是將問題的解決方案抽象到染色體上的具體方法,在本文中,利用One-hot 編碼方式進行染色體編碼,即假設共有N個包特征,那么種群中個體的基因值個數為N,每個基因代表是否選擇該特征,0 代表不選擇,1代表選擇。
初始種群P 是算法的起始點,在本文中,隨機產生與特征總量相同的0、1 值來表示個體的基因值,得到初始種群。
選擇算子S的作用是模仿自然選擇的優勝劣汰,即保留種群中質量較高的個體,淘汰質量較低的個體,確保優良的基因能夠保留到下一代種群中。在本文中,使用輪盤賭選擇法[10],即每個個體的保留概率與其適應度值成正比,適應度越高,保留的概率就越大。除此之外,還采用精英保留策略[11],把種群在進化過程中出現的適應度最高的個體完整保留到下一代中,這樣可以確保最優個體不會被其他算子破壞,從而加速算法的收斂。
交叉算子I的作用是隨機交換兩個個體的某些基因位,從而產生新個體。進行交叉算子的目的是將可能有益的基因組合在一起,產生更加優秀個體,增強遺傳算法的全局搜索能力。在本文中,交叉算子的實現方式是在染色體中設置固定的交叉點,然后將兩個染色體交叉點前后的部分基因進行交換,從而形成全新個體。
變異算子V的作用是對個體的一小部分基因值進行改動,目的同樣是為了增強遺傳算法的全局搜索能力。在本文中,設置基因的變異率為0.03,變異的方向有兩個,即0變異為1、1變異為0。
適應度函數A是群落中個體的評價方式,適應度越高代表個體的質量越高。A的選取將直接影響算法的性能,通常是需要結合實際問題來確定,本文中的適應度函數A為染色體所確定的候選特征向量的分類效果(決策樹分類器的F1值)。
遺傳算法的終止條件T 的設定方式主要有兩種:設定種群迭代次數和達到某一閾值,設定迭代次數是指種群迭代到一定的次數后算法即停止;達到某一閾值指的是設定一個目標值,當進化的結果達到這個值時,即終止算法。在本研究中,由于沒有明確的目標值,因此只能采用設定種群迭代次數的方法。
現有的面向物聯網設備識別的流量特征主要分為三大類:協議特征、統計特征和載荷特征。
即依靠協議的強特征對不同的物聯網設備進行分類識別,例如Miettinen 等[12]在一個新的物聯網設備引入到一個網絡后收集前n個數據包,每個設備的指紋是基于從每個設備的前12個數據包中提取的23 個特征創建的,其中19 個特征是表示以下協議是否存在的二進制值,包括鏈路層、網絡層、傳輸層、應用層的各種協議、數據負載、IP 選項(Padding、RouterAlert)等。作者使用隨機森林進行設備分類,27 種設備中有17 種識別準確率在95%以上,10 種識別準確率在50%左右。
即流量數據包的長度、數量,請求的時間間隔等特征,基于統計的方法對不同的物聯網設備進行分類識別。例如Sivanathan 等[13]在六個月的時間里收集了28 種物聯網設備(如相機、燈、插頭、運動傳感器、電器和健康監測器)的流量數據來對物聯網設備進行分類,使用的特征包括設備睡眠時間、端口號、活動周期、休眠時間、流量持續時間等。雖然通過階段分類準確率達到99%,但所使用的特征魯棒性不強,部分特征提取困難。
即深度挖掘載荷數據中的特征對不同的物聯網設備進行分類識別。例如陳慶港等[14]提出了一種基于深度可分離卷積的識別方法,基于網絡數據流利用卷積層深度挖掘物聯網設備流量的載荷特征。實驗結果證明,即使在資源有限的情況下,該方法也能夠有效識別設備類型。Bezawada 等[15]參考了IoT Sentine[12]中的一部分特征集,再加上其他來自于載荷的特征,共選擇了17 個基于協議的特征和3 個基于載荷的特征。設備的指紋來自于連續的5個數據包,共形成了100維的特征向量。研究人員使用了多種算法,包括決策樹、kNN 和梯度增強,取得了較高的準確率。
本文參考前人的研究,對所捕獲的pcap 格式網絡數據包文件進行特征提取,所構造的特征池中共包含94 個特征,囊括了主要的協議特征和載荷特征,如表1所示。

表1 特征池
其中87 個是直接從數據包頭部字段中提取的,這些特征來自LLC、EAPOL、IP、ICMP、TCP、UDP、DHCP、BOOTP 和DNS 等九種常見的網絡協議。除此之外,本文所構造的特征池中還包含載荷熵、包長度、負載長度、端口號類等可能對物聯網設備分類有用的特征,載荷熵提供了關于載荷特征的線索,端口號類特征提供了關于源端口號和目標端口號的摘要信息。
關于端口號的特征,不同的端口號所提供的服務是不同的,端口號的類別可按照知名端口(0-1023)、注冊端口(1023-49151)、動態端口(49151-65535)劃分,在知名端口中還有一些常用服務的端口,例如53-DNS、80-HTTP 和123-NTP 等。因此本文除了直接將源、目的端口號值作為特征之外,還對端口號類進行了兩種不同的形式化描述,方法如表2所示。由于不確定哪一種端口號類的描述方法更為有效,本文將這兩種方法都收集到特征池中。

表2 兩種端口號類描述方法
本文在特征提取階段共提取總結了94 個特征,因為不確定它們是否全部有助于設備的分類識別,所以將它們劃到特征池中,為下一步的特征選擇提供素材。
實驗采用了Aalto 與CIC IOT 2022 兩個公開數據集,首先在Aalto 數據集上建立模型,進行實驗最終的特征向量,再在CIC IOT 2022 數據集上驗證模型的有效性。由于Aalto 與CIC IOT 2022 兩個數據集的采集使用的是完全不同的物聯網設備,所以可以證明所建立的模型在物聯網設備識別中具有較好的泛化性。
Aalto 數據集包括智能照明燈、傳感器、物聯網攝像頭和智能咖啡機等27 種常見的物聯網設備,研究人員收集每個設備初次引入到網絡時所產生的流量數據,通過mac 地址過濾后以pcap 格式的文件進行存儲,每個設備重復此類操作20次。
對于CIC IOT 數據,本文使用了類似Aalto采集方式的部分數據集,其中包含40 種不同于Aalto的物聯網設備所產生的流量數據。
(1)劃分訓練集和測試集。在進行特征提取之前,為了排除干擾,首先將pcap 文件分為測試集和訓練集。Aalto 數據集每個設備有20 個pcap 文件,本文將其分為兩部分:16 個作為訓練數據和4 個作為測試數據(80%:20%)。對于CIC IOT 2022數據集,也同樣遵循這個比例進行分割。
(2)特征提取。本文通過scapy 包完成對包頭部字段特征的提取,編寫相應的代碼完成對其余特征的提取。共形成包含94 個特征的初始特征池。
(3)遺傳算法進行特征選擇。設置遺傳算法初始群落80,染色體隨機,變異率0.03,適應度函數為候選特征向量的分類效果(決策樹分類器的F1值),種群迭代次數為100次,對訓練集進行訓練,訓練過程如圖2所示。

圖2 遺傳算法訓練過程
可以看出,相較于使用全量特征進行分類后的F1得分(0.714),使用遺傳算法進行特征選擇后分類效果有著較大的提升,其F1 得分可以達到0.772。最終選擇的最優子代,即最佳特征集共包含35個特征,如表3所示。

表3 遺傳算法選擇特征集
本文采用所選擇的35個特征進行分類試驗,使用決策樹分類器,在Aalto 與CIC IOT 2022 兩個數據集的分類結果如表4所示。

表4 實驗結果
對比同一數據集不同特征集的分類結果,Aalto 數據集在使用優化特征集后的分類準確率由0.73提升到了0.79,CIC IOT 2022數據集的分類準確率由0.77 提升到了0.89,可以看出,使用優化后特征集的分類效果有著較為顯著的提升,證明本文提出的基于遺傳算法的智能家居設備識別最優化特征選擇方法是切實有效的。
對比同樣使用優化特征集的不同數據集的分類效果,可以看出,CIC IOT 2022數據集的分類效果更好,由于在特征選擇階段只使用了Aalto 數據集,而在CIC IOT 2022 數據集上仍達到不錯的分類效果,表明所選的特征集將很好地適用于其他物聯網環境。
本文提出了一種基于遺傳算法的智能家居設備識別最優化特征選擇方法。該方法從網絡傳輸數據包中收集不同的協議特征和載荷特征,并通過遺傳算法進行特征選擇確定最佳特征集。通過實驗論證,本文確定的特征集能夠較好地適用于不同的物聯網環境,能夠對大多數物聯網設備如IP 攝像頭、智能電燈、家用智能傳感器等實現較為準確的分類識別。