簡單聊聊裝置指紋設計

碼頭工人發表於2022-05-23

背景

爬蟲需要抓取到具有一定規模的資料才能產生價值,抓取裝置出於成本考慮,需要控制裝置數量。黑產通常會通過偽造裝置資訊的方式來“創造”出更多的虛假裝置。為了能夠在較長的一段時間內,追蹤並識別出某一臺具體的裝置,就衍生出了裝置指紋。

裝置指紋需要解決的問題

高唯一性

目標是為裝置生成一個唯一的裝置編碼。

碰撞和錯誤

1、什麼是碰撞?

一個指紋對應多臺真實裝置,我們就認為該裝置指紋發生了碰撞。

2、什麼是錯誤?

一臺裝置對應多個裝置指紋,我們就認為裝置指紋產生了錯誤。

3、如何衡量一個裝置指紋的好壞?

裝置指紋的碰撞率與錯誤率越趨近於0就認為裝置指紋越優秀。

設計原則

在設計裝置指紋時,可以適當地允許錯誤率的錯在,但要儘量降低碰撞率。碰撞就意味著對某一裝置指紋進行反制時有概率誤傷正常使用者。

指紋生成設計

方案一

直接使用系統收集資料進行指紋值計算。

優點:實現方式簡單且易維護。接收到資料資料直接計算即可。

缺點:可擴充性差。刪減或新增特徵值時就需要重新計算所有裝置的指紋值。

img

方案二

後端生成唯一隨機值,指紋值的生成與具體裝置資料無關,具體資料值用於描述裝置的關聯關係。

優點:可擴充性強。新增或刪減特徵值時只需要修改裝置之間的關聯關係即可。

缺點:維護成本高。相較於方案一需要維護特徵值與裝置之間的關聯關係。

img

總結

從系統設計角度,方案二的可擴充性更強,在面對如今安卓、蘋果裝置因為更加註重使用者隱私而不斷收縮裝置資訊獲取許可權的環境下,顯然方案二更適合。

高穩定性

傳統裝置標識

傳統裝置標識由IMEI、MAC地址、安卓ID 或者系統儲存隨機值來作為裝置指紋,這種裝置指紋的問題是依賴單一資料,穩定性太差。

img

新一代裝置標識

通過收集多維度資訊進行裝置指紋計算,例如網路資訊、硬體資訊、軟體資訊、儲存資訊(多點儲存)等,不依賴單一資料來源,穩定性有明顯提升。

img

防篡改性

大部分逆向選手主要針對Java層進行分析,我們通過核心程式碼下沉,迫使逆向選手閱讀混淆後的彙編程式碼,提升逆向難度。

img

總結

裝置指紋在整個風控體系中的重要性是不言而喻的,一個優秀的裝置指紋決定著風控系統的下限。即使風控系統僅有策略,但只要裝置指紋未失效,通過頻率策略就能夠一定程度的防止大規模作弊事件的發生。

相關文章