天天看點

淺談裝置指紋技術和應用

背景

當你手機APP上刷着某些視訊并多停留幾秒,後續再刷視訊的時候,是否有感覺到更多是推送同類型的視訊;

當你在某APP搜尋某産品的時候,後面在啟動APP時候,是否能感覺到更多給你推送相關的産品資訊;

當你更換手機的時候,在登入同一個APP的時候,是否會有提示你是新環境登入需要特别驗證才能登入;

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

這些的背後都是依靠哪些技術進行支撐實作呢?這些場景下都離不開一個重要的裝置指紋技術,下面就梳理裝置指紋技術的細節。

理論基礎

裝置指紋是指可以用于唯一辨別出該裝置的裝置特征或者獨特的裝置辨別。

裝置指紋圍繞着裝置的唯一ID、裝置環境風險特征、裝置曆史風險标簽等次元對裝置進行全方位刻畫,識别裝置風險、并且透傳裝置風險特征。

裝置指紋在同一裝置中的不同應用,必須具備裝置ID不變,同一裝置解除安裝重裝APP應用,裝置ID同樣要保持不變,在IOS裝置中重置IDFA後,裝置ID不變改機軟體修改屬性後,裝置保持ID不變。

裝置指紋需要考慮裝置指紋唯一辨別的穩定性、唯一辨別的唯一性、裝置風險标簽的精準度、裝置風險标簽的準召率、裝置指紋所需的隐私權限、微行為無感識别能力、裝置終端覆寫識别。

裝置指紋的關鍵用途:裝置資訊唯一性、管道流量檢測、風險裝置識别、通用風控政策。

淺談裝置指紋技術和應用

(上圖來源網絡)

技術分析

采集裝置資訊需要關注的問題:使用者裝置是真實裝置?哪個裝置資訊是穩定?Android系統大版本更新是否導緻權限變動?采集的資料是否符合隐私合規政策?采用什麼算法來計算出唯一ID?新APP上線所有裝置ID是全新?

技術實作流程:通過采集用戶端的特征屬性資訊并将其加密上傳到雲端,然後通過特定的算法分析并為每台裝置生成唯一的ID來辨別這台裝置。

裝置指紋必須具備:穩定性、唯一性、安全性、易用性、高性能。

裝置環境風險特征:識别模拟器環境、多開、ROOT、篡改裝置參數、腳本,等異常環境特征。具有穩定性高,性能高。

淺談裝置指紋技術和應用

通常情況下,裝置指紋采集到使用者的裝置資料後,資料會通過異步方式先上傳到業務的伺服器上,然後再通過代理服務端進行轉發到對應裝置指紋的服務端。這樣也是為了保證資料的安全性,用戶端采集資料功能防止被剝離,進而采集不到裝置資料。采集的資料一般通過json格式加密資料進行上傳。

淺談裝置指紋技術和應用

裝置指紋上傳一般采用URL的POST請求,并內建json格式,并且所采集的字段資訊中會有一些字段是無用的,有一些字段适用于對json資訊采用強校驗的混淆資訊。

裝置指紋中裝置風險識别的微行為常用的屬性:電池狀态、重力傳感器、加速度傳感器狀态、聯網狀态、USB狀态、觸摸軌迹、壓感、按壓時長、剪切闆。

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

裝置指紋主要是通過內建到APP中的SDK,還有小程式的SDK,通常情況下是采用aar包方式進行提供的SDK,還有就是強度較高的是通過aar包和SO檔案進行結合內建的裝置指紋SDK。将關鍵的采集資訊內建到SO中代碼中實作,并且SO檔案采用虛拟機保護。

下面是某裝置指紋以aar形式的,它關鍵代碼都是java實作的。并且java代碼利用proguard 混淆規則進行對aar的class類進行混淆類名而已,并沒有混淆到函數名稱和變量名稱,字元串資訊。

淺談裝置指紋技術和應用

下面是某裝置指紋的java代碼和C++代碼部分,java代碼和C++代碼都采用了虛拟化保護技術進行保護。

淺談裝置指紋技術和應用
淺談裝置指紋技術和應用
淺談裝置指紋技術和應用

裝置指紋讀取使用者資訊,通常需要涉及到向使用者申請權限的情況,是以在android的AndroidManifest.xml配置檔案中通常有一系列的權限申請。

淺談裝置指紋技術和應用

(上圖隻是申請權限的一小部分)

淺談裝置指紋技術和應用

裝置指紋合規

裝置指紋應用中,在采集使用者裝置指紋資訊的過程,首先必須確定使用者APP中有《使用者隐私政策》,并且在首次啟動APP時就彈出《使用者隐私政策》獲得使用者的同意,不得預設使用者已勾選。并且確定隻有使用者同意的時候才可以進行對使用者資訊的采集。

根據《網絡安全法》等相關法律法規要求,APP應當在隐私政策中向最終使用者告知收集、使用、于第三方共享最終使用者個人資訊的目的、方式和範圍,并征得最終使用者明示同意才可以采集使用者資訊。

裝置資訊采集需要遵循必要最小化低頻采集非敏感資訊原則,在采集使用者屬性時候,不應采集使用者行為和應用清單、傳感器狀态、通訊錄、相冊等敏感資訊,采集這些屬性容易出現不符合隐私合規政策。支援按需采集和合規上架指導,采集資訊 合規和安全加強,不觸碰使用者隐私,不會被黑産破解,相容性好。

裝置指紋SDK的初始化時機,在安裝後首次啟動時,并且隻有在使用者同意隐私協定後,才進行裝置指紋SDK初始化。如果使用者沒有同意隐私協定不可進行采集資料。

風控場景分析

裝置指紋的在遊戲應用場景中主要風控次元:手機裝置、遊戲賬号、賬号行為、賬号動機。

裝置指紋識别裝置的風控特征:模拟器、協定刷資料、腳本外挂、裝置改機、多開工具、雲手機等。

裝置指紋識别遊戲賬号的風控特征:批量注冊遊戲賬号、貓池、接碼手機、通訊小号等等。

裝置指紋識别遊戲行為的風控特征:批量養号、黃牛養号、魚塘賬号。

裝置指紋識别賬号動機的風控特征:賬号的買賣、遊戲的代練等

裝置指紋識别風險識别重點在于:注冊、登入、營銷、交易、充值、管道推廣等業務場景中,識别出虛假注冊、盜号、養号、薅羊毛、虛假推廣、作弊行為,然後對應采取一定的對抗政策方案。

遊戲中黑灰産破解移動端的技術及工具不斷在更新變化發展,裝置指紋中核心的技術攻防點主要圍繞,root(非法讀取檔案,反安全檢測)、自動化工具(批量注冊、活動作弊)、模拟器(自動注冊小号、秒殺)、多開(虛假作弊、養号、)、改機、群控(薅羊毛、虛假流量),app重打包(植入廣告、破解功能限制)等問題。

通過基于裝置指紋技術,可以實作IP風險畫像、風險情報、郵箱風險畫像去識别遊戲的黑灰産行為,然後對遊戲黑灰産進行重點打擊。

淺談裝置指紋技術和應用

(上圖來源網絡)

裝置指紋思考

一個人常用裝置的總是有限,一般正常情況下一段時間内不會超過5個,是以可以通過這些資訊進行作為風控的政策,而裝置指紋中關鍵的一個采集點是網絡相關資訊的采集,通過采集網絡相關資訊,可以判斷出同一網絡下的使用者的裝置數量。

一個好的裝置指紋必須具備:1.可以靈活定制化,可以根據不同的業務需求提供靈活的接口;2.高準确性,對裝置唯一碼必須準确率足夠高;3.性能卓越,裝置指紋的sdk不能影響到APP的性能;4.系統相容性好,需要相容到android4.0到android 13的所有系統。

如果作為開發者,開發一個裝置指紋sdk中需要綜合考慮的:LaunchTime、閃退率、體積大小、網絡消耗情況。

裝置指紋技術存在一定的被動性。黑灰産研發者處在暗處,公司的業務在明處,在什麼時間段,采用什麼方式的攻擊方式,都是黑灰産攻擊者決定的,這一點業務安全人員也是非常頭疼。更進一步,黑灰産可以不斷試錯通過分析裝置指紋技術采用的算法,嘗試采用新的攻擊方式繞過已有加解密算法,就可以達到新的攻擊目的。裝置指紋技術對抗過程中是存在一定的滞後性。

結束