淺談設(shè)備指紋技術(shù)和應用

背景
 

當你手機APP上刷著某些視頻并多停留幾秒,后續(xù)再刷視頻的時候,是否有感覺到更多是推送同類型的視頻;

當你在某APP搜索某產(chǎn)品的時候,后面在啟動APP時候,是否能感覺到更多給你推送相關(guān)的產(chǎn)品信息;

當你更換手機的時候,在登錄同一個APP的時候,是否會有提示你是新環(huán)境登錄需要特別驗證才能登錄;

當你手機上安裝一些作弊軟件,在進行支付的時候,是否會有提示你當前環(huán)境不安全不允許支付或支付不成功;

這些的背后都是依靠哪些技術(shù)進行支撐實現(xiàn)呢?這些場景下都離不開一個重要的設(shè)備指紋技術(shù),下面就梳理設(shè)備指紋技術(shù)的細節(jié)。



理論基礎(chǔ)
 

設(shè)備指紋是指可以用于唯一標識出該設(shè)備的設(shè)備特征或者獨特的設(shè)備標識。

設(shè)備指紋圍繞著設(shè)備的唯一ID、設(shè)備環(huán)境風險特征、設(shè)備歷史風險標簽等維度對設(shè)備進行全方位刻畫,識別設(shè)備風險、并且透傳設(shè)備風險特征。

設(shè)備指紋在同一設(shè)備中的不同應用,必須具備設(shè)備ID不變,同一設(shè)備卸載重裝APP應用,設(shè)備ID同樣要保持不變,在IOS設(shè)備中重置IDFA后,設(shè)備ID不變改機軟件修改屬性后,設(shè)備保持ID不變。

設(shè)備指紋需要考慮設(shè)備指紋唯一標識的穩(wěn)定性、唯一標識的唯一性、設(shè)備風險標簽的精準度、設(shè)備風險標簽的準召率、設(shè)備指紋所需的隱私權(quán)限、微行為無感識別能力、設(shè)備終端覆蓋識別。

設(shè)備指紋的關(guān)鍵用途:設(shè)備信息唯一性、渠道流量檢測、風險設(shè)備識別、通用風控策略。


(上圖來源網(wǎng)絡)



技術(shù)分析
 

采集設(shè)備信息需要關(guān)注的問題:用戶設(shè)備是真實設(shè)備?哪個設(shè)備信息是穩(wěn)定?Android系統(tǒng)大版本升級是否導致權(quán)限變動?采集的數(shù)據(jù)是否符合隱私合規(guī)政策?采用什么算法來計算出唯一ID?新APP上線所有設(shè)備ID是全新?

技術(shù)實現(xiàn)流程:通過采集客戶端的特征屬性信息并將其加密上傳到云端,然后通過特定的算法分析并為每臺設(shè)備生成唯一的ID來標識這臺設(shè)備。

設(shè)備指紋必須具備:穩(wěn)定性、唯一性、安全性、易用性、高性能。

設(shè)備環(huán)境風險特征:識別模擬器環(huán)境、多開、ROOT、篡改設(shè)備參數(shù)、腳本,等異常環(huán)境特征。具有穩(wěn)定性高,性能高。




通常情況下,設(shè)備指紋采集到用戶的設(shè)備數(shù)據(jù)后,數(shù)據(jù)會通過異步方式先上傳到業(yè)務的服務器上,然后再通過代理服務端進行轉(zhuǎn)發(fā)到對應設(shè)備指紋的服務端。這樣也是為了保證數(shù)據(jù)的安全性,客戶端采集數(shù)據(jù)功能防止被剝離,從而采集不到設(shè)備數(shù)據(jù)。采集的數(shù)據(jù)一般通過json格式加密數(shù)據(jù)進行上傳。




設(shè)備指紋上傳一般采用URL的POST請求,并集成json格式,并且所采集的字段信息中會有一些字段是無用的,有一些字段適用于對json信息采用強校驗的混淆信息。

設(shè)備指紋中設(shè)備風險識別的微行為常用的屬性:電池狀態(tài)、重力傳感器、加速度傳感器狀態(tài)、聯(lián)網(wǎng)狀態(tài)、USB狀態(tài)、觸摸軌跡、壓感、按壓時長、剪切板。

設(shè)備指紋的SDK主要以java代碼和C、C++代碼為主,java代碼部分是以aar包或jar包方式存在,C\C++代碼主要以SO方式存儲的。例如某易的設(shè)備指紋就是以aar包(NEDevice-SdkRelease_v1.7.0_2022xxxxxx.aar)單獨方式存在,某盾的設(shè)備指紋以aar文件(fraudmetrix-xxx.aar)和so文件(libtongdun.so)兩者相結(jié)合存在,某美的設(shè)備指紋以aar包(smsdk-x.x.x-release.aar)和so文件(libsmsdk.so)相結(jié)合存在。

設(shè)備指紋主要是通過集成到APP中的SDK,還有小程序的SDK,通常情況下是采用aar包方式進行提供的SDK,還有就是強度較高的是通過aar包和SO文件進行結(jié)合集成的設(shè)備指紋SDK。將關(guān)鍵的采集信息集成到SO中代碼中實現(xiàn),并且SO文件采用虛擬機保護。

下面是某設(shè)備指紋以aar形式的,它關(guān)鍵代碼都是java實現(xiàn)的。并且java代碼利用proguard 混淆規(guī)則進行對aar的class類進行混淆類名而已,并沒有混淆到函數(shù)名稱和變量名稱,字符串信息。




下面是某設(shè)備指紋的java代碼和C++代碼部分,java代碼和C++代碼都采用了虛擬化保護技術(shù)進行保護。











設(shè)備指紋讀取用戶信息,通常需要涉及到向用戶申請權(quán)限的情況,所以在android的AndroidManifest.xml配置文件中通常有一系列的權(quán)限申請。


(上圖只是申請權(quán)限的一小部分)




設(shè)備指紋合規(guī)
 

設(shè)備指紋應用中,在采集用戶設(shè)備指紋信息的過程,首先必須確保用戶APP中有《用戶隱私政策》,并且在首次啟動APP時就彈出《用戶隱私政策》獲得用戶的同意,不得默認用戶已勾選。并且確保只有用戶同意的時候才可以進行對用戶信息的采集。

根據(jù)《網(wǎng)絡安全法》等相關(guān)法律法規(guī)要求,APP應當在隱私政策中向最終用戶告知收集、使用、于第三方共享最終用戶個人信息的目的、方式和范圍,并征得最終用戶明示同意才可以采集用戶信息。

設(shè)備信息采集需要遵循必要最小化低頻采集非敏感信息原則,在采集用戶屬性時候,不應采集用戶行為和應用列表、傳感器狀態(tài)、通訊錄、相冊等敏感信息,采集這些屬性容易出現(xiàn)不符合隱私合規(guī)政策。支持按需采集和合規(guī)上架指導,采集信息 合規(guī)和安全加固,不觸碰用戶隱私,不會被黑產(chǎn)破解,兼容性好。

設(shè)備指紋SDK的初始化時機,在安裝后首次啟動時,并且只有在用戶同意隱私協(xié)議后,才進行設(shè)備指紋SDK初始化。如果用戶沒有同意隱私協(xié)議不可進行采集數(shù)據(jù)。

風控場景分析
 

設(shè)備指紋的在游戲應用場景中主要風控維度:手機設(shè)備、游戲賬號、賬號行為、賬號動機。

設(shè)備指紋識別設(shè)備的風控特征:模擬器、協(xié)議刷數(shù)據(jù)、腳本外掛、設(shè)備改機、多開工具、云手機等。

設(shè)備指紋識別游戲賬號的風控特征:批量注冊游戲賬號、貓池、接碼手機、通訊小號等等。

設(shè)備指紋識別游戲行為的風控特征:批量養(yǎng)號、黃牛養(yǎng)號、魚塘賬號。

設(shè)備指紋識別賬號動機的風控特征:賬號的買賣、游戲的代練等

設(shè)備指紋識別風險識別重點在于:注冊、登錄、營銷、交易、充值、渠道推廣等業(yè)務場景中,識別出虛假注冊、盜號、養(yǎng)號、薅羊毛、虛假推廣、作弊行為,然后對應采取一定的對抗策略方案。

游戲中黑灰產(chǎn)破解移動端的技術(shù)及工具不斷在更新變化發(fā)展,設(shè)備指紋中核心的技術(shù)攻防點主要圍繞,root(非法讀取文件,反安全檢測)、自動化工具(批量注冊、活動作弊)、模擬器(自動注冊小號、秒殺)、多開(虛假作弊、養(yǎng)號、)、改機、群控(薅羊毛、虛假流量),app重打包(植入廣告、破解功能限制)等問題。

通過基于設(shè)備指紋技術(shù),可以實現(xiàn)IP風險畫像、風險情報、郵箱風險畫像去識別游戲的黑灰產(chǎn)行為,然后對游戲黑灰產(chǎn)進行重點打擊。


(上圖來源網(wǎng)絡)

設(shè)備指紋思考
 

一個人常用設(shè)備的總是有限,一般正常情況下一段時間內(nèi)不會超過5個,因此可以通過這些信息進行作為風控的策略,而設(shè)備指紋中關(guān)鍵的一個采集點是網(wǎng)絡相關(guān)信息的采集,通過采集網(wǎng)絡相關(guān)信息,可以判斷出同一網(wǎng)絡下的用戶的設(shè)備數(shù)量。

一個好的設(shè)備指紋必須具備:1.可以靈活定制化,可以根據(jù)不同的業(yè)務需求提供靈活的接口;2.高準確性,對設(shè)備唯一碼必須準確率足夠高;3.性能卓越,設(shè)備指紋的sdk不能影響到APP的性能;4.系統(tǒng)兼容性好,需要兼容到android4.0到android 13的所有系統(tǒng)。

如果作為開發(fā)者,開發(fā)一個設(shè)備指紋sdk中需要綜合考慮的:LaunchTime、閃退率、體積大小、網(wǎng)絡消耗情況。

設(shè)備指紋技術(shù)存在一定的被動性。黑灰產(chǎn)研發(fā)者處在暗處,公司的業(yè)務在明處,在什么時間段,采用什么方式的攻擊方式,都是黑灰產(chǎn)攻擊者決定的,這一點業(yè)務安全人員也是非常頭疼。更進一步,黑灰產(chǎn)可以不斷試錯通過分析設(shè)備指紋技術(shù)采用的算法,嘗試采用新的攻擊方式繞過已有加解密算法,就可以達到新的攻擊目的。設(shè)備指紋技術(shù)對抗過程中是存在一定的滯后性。






作者: 小道安全


歡迎關(guān)注微信公眾號 :小道安全