簡單聊聊設備指紋設計

背景

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

設備指紋需要解決的問題

高唯一性

目標是為設備生成一個唯一的設備編碼。

碰撞和錯誤

1、什麼是碰撞?

一個指紋對應多台真實設備,我們就認為該設備指紋發生了碰撞。

2、什麼是錯誤?

一台設備對應多個設備指紋,我們就認為設備指紋產生了錯誤。

3、如何衡量一個設備指紋的好壞?

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

設計原則

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

指紋生成設計

方案一

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

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

缺點:可拓展性差。刪減或新增特徵值時就需要重新計算所有設備的指紋值。

img

方案二

後端生成唯一隨機值,指紋值的生成與具體設備數據無關,具體數據值用於描述設備的關聯關係。

優點:可拓展性強。新增或刪減特徵值時只需要修改設備之間的關聯關係即可。

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

img

總結

從系統設計角度,方案二的可拓展性更強,在面對如今安卓、蘋果設備因為更加註重用戶隱私而不斷收縮設備信息獲取權限的環境下,顯然方案二更適合。

高穩定性

傳統設備標識

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

img

新一代設備標識

通過收集多維度信息進行設備指紋計算,例如網絡信息、硬件信息、軟件信息、存儲信息(多點存儲)等,不依賴單一數據源,穩定性有明顯提升。

img

防篡改性

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

img

總結

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