設備指紋技術介紹與綜述(二)
一、前文摘要
在設備指紋技術介紹與綜述(一)一文中,我們了解了設備指紋的用途、覆蓋設備范圍,以及部分外部行為數據的采集方式。在設備種類與應用環境極為豐富的當下,設備指紋技術不論在用途、研究范圍、采集方式,亦或評估手段下都取得了長足的進展。本文將繼續介紹目前設備指紋技術研究主要關注的一些內部行為數據與相關采集方式,并介紹幾種主流的設備指紋評估方式。
二. 內部行為數據來源
內部行為數據指需要在設備內部采集的,涉及設備底層功能的行為數據。由于這些行為數據的采集需要在設備內部進行,因此當設備無法正常工作時,內部行為數據的采集可能也會受到影響。
硬件事件
硬件性能計數器(Hardware Performance Counter, HPC)是現代微處理器中普遍存在的一個內置計數器,用以存儲硬件相關的事件信息。通過硬件事件這一行為數據,我們獲得精確的底層行為數據來構建設備指紋。一些研究使用HPC收集的行為數據來評估設備上軟件的運行狀態或監測設備異常[1],如圖1所示,在一個檢測窗口期內,同時監測N個事件,對于事件x,統計其發生次數C(x);異常執行路徑P3的指紋向量與正常執行路徑P1、P2的向量不同;一些研究使用HPC收集的行為數據來對設備進行身份認證。

圖1 通過硬件事件計數器構建指紋向量,引用自[1]
基于硬件事件計數器的指紋方案能夠獲取到準確的底層行為數據,且這些數據不受軟件層影響,這似乎為設計通用的設備指紋方案提供了思路。然而,在設備種類眾多的場景中,由于硬件事件的種類與具體 數據采集接口/命令在不同設備上存在差異,為設計基于硬件事件的指紋方案帶來了難度。不過在設備種類相對較少的情況下,該方法仍然能脫離軟件層面,實現比較準確的識別效果。如接入設備只考慮智能手機一種設備的場景下,就可以基于陀螺儀、麥克風等硬件組件相關的行為事件,來實現模擬器/真機檢測。
資源占用
在設備內部,我們可以通過設備對資源的使用來為設備構建指紋。一般來說,這類指紋采集的數據主要包含:CPU、內存、磁盤、網絡的使用量。我們可以基于這些行為數據構建指紋,以達到識別設備或檢測設備異常的目的。如圖2所示,在Sakil等人基于CPU使用率進行設備異常檢測的研究中,他們發現使用CPU使用率單位時間(1min)內的均值能夠比使用標準差或熵更好地分類正常CPU使用率、峰值時CPU使用率與異常時CPU使用率。隨后,他們基于單位時間內CPU使用率的均值來訓練機器學習模型作為分類器,用以檢測設備的異常。

圖2 單位時間內CPU使用率與分類效果,樣本顏色紅色表示異常、藍色表示正常、綠色表示峰值,引用自[2]
基于資源占用的指紋方案一般具備較高的通用性,無論設備屬于什么種類,都會有類似的資源開銷。然而,持續的資源使用檢測對于設備性能會造成較大負荷,在一些本身能耗比較重要的設備上,使用該方案時應做好性能維度的權衡。
軟件行為
基于設備上運行軟件的行為設計設備指紋,可以精確地反映設備的運行狀態。其中,常被用來設計設備指紋的軟件行為數據有:系統調用和日志、進程信息以及軟件簽名。基于軟件的設備指紋方案能夠準確地反映設備的運行狀態,但由于軟件會較頻繁地被升級或修改,因此基于軟件行為的設備指紋方案需要更多的維護成本,以確保指紋能與軟件更新同步。
軟件在設備中運行時需要通過調用操作系統實現文件操作、通信等功能,且特定的軟件對于系統的交互、調用和通訊一般有固定的模式與頻率,而這些操作都會被日志記錄。因此我們可以通過軟件的系統調用行為與日志來構建設備指紋。Attia等[3]通過將設備運行時一些特定命令之間(如讀文件到關閉文件)的系統調用命令構成一個N元的有限狀態自動機,來對軟件當是否正常運行進行判斷。

圖3 基于軟件正常運行時執行的命令構建N元有限狀態自動機,引用自[3]
此外,設備中運行軟件的進程信息,如進程名稱、進程狀態、線程數等也可以作為設備指紋來區別設備的種類與型號[4]。一些研究也會對設備中軟件的配置文件進行哈希算法進行簽名作為設備指紋[5]。實際的方案中,基于軟件的設備指紋方案收集的數據還是以系統調用和日志為主,進程信息與軟件簽名往往作為補充。
到這里,我們已經基本介紹了設備指紋使用到的各類數據源。面向不同的應用場景,如圖4所示[6],不同的設備指紋方案依照設備種類來采集各類行為數據。總體上看,學術研究中使用最多的行為數據還是網絡通信數據、硬件事件、資源使用與軟件行為這四種行為數據。

圖4 不同設備與應用場景的設備指紋,與其對應的設備行為數據,引用自[6]
三. 設備指紋的評估方法
當我們確定了設備指紋的使用場景與采集數據,就需要明確使用什么方法來評估我們生成的指紋,以達到識別設備種類、型號,或檢測異常的目的。大體上我們可以將評估方法分為基于規則、基于統計、基于知識、基于機器學習這四種方式。此外,有些研究會使用區塊鏈[7]或聯邦學習[8]來對指紋進行評估,由于案例較少,本文暫不介紹。
基于規則
基于規則的設備指紋評估方法是最直觀的評估方式。在基于規則的評估方法里,我們會先設定每種設備運行時的規則。在獲取到由設備行為數據構建的設備指紋時,我們將獲取到的指紋與規則比對。根據匹配的規則,我們可以將設備劃分到不同的種類、型號,并判斷設備的運行狀態。
雖然基于規則的評估方法簡便直觀且高效,然而該方法也存在明顯的缺點。不僅構建正確的規則需要設計者擁有關于特定設備的大量知識,而且在復雜多變的環境中,設計者也很難保證既有指紋評估規則的更新速度能跟上設備的升級和變化速度。
基于統計
基于統計的設備指紋評估方法指使用諸如極值、均值、期望、方差、正態分布、四分位數、歐氏距離等較簡單直觀的統計學特性來評估設備指紋的方法。根據指紋的這些統計學特性,我們可以對指紋作出分類與判斷,從而達到分辨設備或檢測設備的目的。
與基于規則的指紋評估方法類似,該方法具有簡明高效的優點。然而,當指紋采集的行為數據較多,即指紋數據的維度較高時,該方法很難準確地對各個維度的行為數據進行評估。
基于知識
基于知識的方法指從已有的數據中提取出一個具有推理能力的模型,并使用該模型來推理當前狀態下,模型接收到的下一個輸入。這類方法主要通過N元組模型、馬爾可夫模型等有限狀態機算法實現基于已知數據預測下一個數據的任務。由于這類算法主要是基于已有知識預測指紋評估系統接收到的下一個輸入,并不能直接實現分類或識別的效果,因此基該類設備指紋評估方法主要應用于設備異常的檢測。
該類方法具有極強的可解釋性,且對于未知場景仍具備一定的兼容能力。然而在構建指紋的行為數據種類較多或行為數據本身較為復雜時,基于知識的方法也會隨數據的復雜程度變得更加復雜甚至部分失效。這時該方法一方面不再具備其原本的優勢,另一方面也會對系統性能造成巨大壓力。
基于機器學習
從設備指紋的應用場景來看,不論是對設備種類、型號的區分,抑或設備運行狀態的判斷,實質上都是分類問題。由于近年來機器學習技術在復雜的分類問題上展現出了較其他方法更為可靠靈活的表現,因此許多研究都使用機器學習方法來對設備指紋進行評估。根據指紋行為數據的種類與既有樣本的標簽情況,我們可以使用監督學習與非監督學習來對指紋進行評估。
使用監督學習分類算法的場景,我們需要給已有的指紋打標簽,標明每個指紋屬于哪一類設備、哪種型號的設備、處于什么樣的工作狀態。基于這些數據,我們構建諸如貝葉斯分類器、支持向量機、深度神經網絡等模型,來對下一個指紋對應的標簽進行預測。監督學習評估方法準確率較高,且能夠適應高緯度指紋數據的復雜場景。然而該方法不光需要占用相對較多的系統性能,更需要使用大量已有標簽的數據,而許多時候我們很難在付出較小代價的前提下為數據打上標簽。
使用非監督學習算法的場景,我們不為數據打標簽,轉而關注發掘數據自身特點并加以利用。目前的非監督設備指紋評估方法大致可分為維度下降、聚類這兩種。其中維度下降法,通過使用主成分分析、t分布隨機近鄰嵌入等方式,來將原先的高維特征轉化為低維特征,再結合基于統計的方案來對指紋進行評估;聚類法通過K均值、譜聚類等聚類算法將已有的指紋數據歸為一定數量的類,并根據聚類結果中的少量樣本給這些類賦予實際意義,再以這些類為模型,依據新輸入的指紋數據更接近歸屬出的哪一類,來決定新指紋對應的設備類型、設備型號與運行狀態。非監督學習雖然無需給指紋數據樣本打標簽,但總體上說,其準確性很大程度上依賴降維、聚類算法中依賴經驗設定的一些超參數,不如監督學習穩定。
到這里,我們完成了對設備指紋評估方案的基本介紹。如圖5[6]所示,基于機器學習的設備指紋評估方法在上述幾種評估方法中占據了數量上的絕對優勢。圖中黃色的部分表示時序分析法,由于時序分析法和基于統計、機器學習的方法法均存在較大重疊[6],故本文不單獨介紹。

圖5 設備指紋研究中各類評估方法逐年占比,引用自[6]
四. 小結
網絡環境越發復雜、設備種類越發多樣、軟硬件邊界日漸模糊的當下,如何通過一個通用的輕量級指紋去識別一個設備,或者說一個資產,并判斷其工作狀態,是網絡安全,乃至風控、安防領域,都亟需解決的一個重要問題。
如何設計一個好的設備指紋方案,從數據采集的角度看,具有一定復雜性,能夠準確標識設備及其運行狀態,同時易收集且具有普適性的數據源有助于構建準確、普適的設備指紋。因此設備的網絡通信、系統資源使用,以及特定場景下的部分軟件行為(系統接口調用等)值得優先考慮。
指紋評估的方法選擇則與指紋數據源有密切聯系。應當根據不同的指紋數據源選用適合的評估方法,如對低維數據采用基于統計或規則的評估方法,對高維數據采用基于機器學習的評估方法。雖然實際中高維的指紋往往有助于更準確地識別和檢測設備,但由于高維指紋在數據采集和評估方法上往往方法復雜,且存在巨大的系統開銷,因此設計巧妙的低維設備指紋方案仍具備一席之地。