詳解裝置指紋核心演算法

頂象技術 發表於 2022-08-22
演算法

大部分風險都來自於身份的不確定性。

比如我們熟知的網路釣魚、薅羊毛、賬號竊取、註冊登入等帶來的盜用和欺詐都是其身份不確定性造成的直接後果。

那麼,如何保證你的身份確定且黑灰產不會輕易盜取或者模仿呢?

裝置指紋便是一個不錯的選擇。

此前頂象在《從Cookie到裝置ID,從演算法到雲+端!全面盤點裝置指紋技術的五代發展》一文中詳細介紹過裝置指紋技術的迭代,感興趣的朋友可以回顧下。

從裝置指紋的概念可知,裝置指紋是指透過使用者上網裝置的硬體、網路、環境等特徵資訊生成裝置的唯一標識,而衡量裝置指紋優劣的最重要指標便是唯一性和穩定性。

本文就從裝置指紋的穩定性和唯一性說起。


要保證裝置指紋的穩定性唯一性並不簡單

裝置指紋作為標識手機或者瀏覽器的唯一 ID,首先要做的是對使用者的裝置進行資料採集,但資料採集對於裝置指紋技術而言並不是很容易。

首先是法律層面對於使用者個人資訊資料的保護許可權上升。

近年來出臺的對個人資訊資料的保護條款對於資料採集的許可權一直在持續收緊,具備裝置唯一標識作用的特徵可採集率越來越少,一定程度上加大了裝置指紋技術的難度。

以前採集裝置指紋唯一標識的方法可使用MAC地址(乙太網實體地址)、IMEI(移動裝置識別碼)、IDFA(廣告識別符號)等類似標識即可唯一標識一個裝置。隨著系統的不斷更新迭代,加之與黑灰產的對抗逐漸白熱化,各種作弊手段和工具的出現,裝置上的各種引數都可以被篡改和偽造,透過一鍵抹機,變成一臺新的裝置,這就影響了對裝置唯一標識的效果。此時就需要裝置指紋技術採集更多的資訊來保證裝置指紋的唯一性和穩定性。

以iOS 系統為例,iOS 14以後IDFA採集需要使用者授權才可以,Serial、IMEI等都存在類似情況。這種變化對裝置指紋的計算帶來了影響,生成一個穩定且唯一的標識會越來越複雜。

圖片

其次是異常資料增多。

不同的手機型號和作業系統版本會導致採集到的資料有不同的特性。尤其是安卓,品牌多,作業系統版本多,各類ROM多,資料的可採集性不統一。

1、以IMEI為例,以下是實際採集到的一些異常資料。

000000000000000

88888888888888

666666666666667

111111111111119

A000005EAAACCC

868686868686863

444646464643346

100000000150705

010000000053015

A0000060A60A0B

A0000070000AAB

2、同樣異常的MAC地址

00:00:00:00:00:0a

02:00:00:00:00:00

00:00:00:00:00:01

00:00:00:00:00:10

6a:aa:6a:aa:6a:6a

00:02:00:00:00:00

00:00:00:80:00:00

10:00:00:00:00:12

f2:0f:f0:02:f0:22

32:12:31:23:32:32

66:00:44:40:06:66

c0:00:00:00:00:d0

00:00:00:00:00:12

04:00:00:50:54:04

這些異常資料或來自被篡改的裝置,或是異常的ROM,或者是特殊的機型裝置,其他諸如android_id、Seria也都會存在這種情況。如果不考慮處理這些異常資料,指紋的效果肯定會受到影響。所以採集哪些資料用於指紋計算,資料有哪些異常情況,需要有大資料支撐才能制定合理的演算法。

並且,指紋計算演算法並不是一成不變的,新版本作業系統釋出,新型號手機,這些隨時都有可能導致資料採集出現異常,這需要裝置指紋具備持續性的對異常資料的監測能力。

最後是黑灰產的作弊手段影響。

裝置指紋在風控領域是對抗黑灰產的一個基礎工具,所以黑灰產必然會想盡辦法來繞過指紋的追蹤和檢測。常見的方式是透過各種工具來修改裝置指紋使裝置指紋發生改變,即人工篡改。

圖片

裝置資訊的篡改除了可能會影響指紋計算,還有可能會造成指紋資料汙染。大量篡改後的錯誤資料如果和正常使用者的裝置產生關聯,會導致正常使用者的資料受到不可控的影響,而且這種資料想從系統中剔除乾淨是比較困難的。


基於特徵資訊精準匹配保證裝置指紋穩定性

那麼,這就要求裝置指紋做出改變,頂象的做法是透過雲+端模式,補足資訊採集短板,顯著增強裝置攻防對抗的時效性和安全性,綜合各行業的攻防經驗和風險資料沉澱,當新的攻擊方式和特徵出現時,裝置指紋能夠更快的感知應對和準確識別。

具體到裝置指紋的穩定性和唯一性上,如何應對呢?

我們先來看穩定性。

穩定性計算邏輯是透過採集到的資料,構建多維度的裝置畫像,每次裝置重新上報資料後,透過演算法匹配到最相近的裝置,如果找到則使用找到的裝置指紋,反之則生成新的裝置指紋。

而之所以要強調裝置指紋的穩定性,是因為很多操作會導致裝置的特徵資訊發生變化比如App解除安裝重灌、許可權變更、重置廣告識別符號、機器重啟、系統升級、修改裝置引數、恢復出廠設定等等。

想要在以上這些情況下計算出一個穩定的裝置唯一標識,當然不可能只依賴一兩個裝置引數,需要更全面的裝置資訊來構建一個裝置畫像。

而要保證裝置指紋的高穩定性,則需要採集多維度資料,進行區分度、穩定性、變化週期等方面的全方位分析,對特徵特性的準確分析幫助演算法更合理的利用特徵。

以CPU,儲存,記憶體等特徵為例,其具備非常好的穩定性,但區分度非常差。所以這類特徵不適合單獨使用,需要和其他特徵結合在一起形成互補。

圖片

這就需要我們進一步觀察其特徵穩定週期(特徵保持不變的週期大小)和特徵穩定變化的難度(改變特徵的難易程度),基於特徵的不同特性來決定如何使用特徵,選取一個特徵時,其至少要在某個指標上有明顯優勢。

圖片

綜上,不難看出,要保證裝置指紋的穩定性需要基於不同特徵的不同特性,為裝置構建多個裝置畫像(短期和長期),首先要透過相似性搜尋演算法先定位出一批相似裝置,再用精準匹配演算法準確匹配。

圖片

其基本演算法(SimHash)過程如下:

1、從採集裝置資訊中選取部分作為特徵池;

2、根據採集資訊的區分度、穩定性、變化難度等,對特徵相應處理後進行hash 編碼,比如將多個區分度弱的特徵拼接後再進行hash 編碼,得到編碼向量C;

3、根據特徵的特性,設定編碼向量C的權重W,(注意:權重W可基於大資料學習得到,亦可根據專家經驗設定,不同作業系統版本的裝置,權重W可以不一樣);

4、將編碼向量C與對應的權重W相乘,得到特徵向量C’;

5、將所有特徵向量C’相加得到一個特徵向量,二值化(大於0的值變為1,小於0的值變為0)後得到最後的索引D;

6、將索引D與伺服器中的其他裝置索引進行相似度計算,(計算海明距離—在資訊編碼中,兩個合法程式碼對應位上編碼不同的位數稱為碼距,又稱海明距離。兩個碼字對應位元取值不同的位元數稱為兩個碼字的海明距離。例如10101和00110從第一位開始依次有第一位、第四、第五位不同,則海明距離為3)返回相似度在閾值以內的裝置資訊作為候選池,進行進一步的精準匹配。

圖片

需要注意的是,裝置指紋穩定性的效果依賴於是否選取了充分且合適的特徵、是否對每個特徵的特性有正確的理解、是否採用了符合資料獲取現狀的合適匹配演算法。

演算法更新+碰撞檢測=裝置指紋唯一性“法寶”

再來看下唯一性。

唯一性是裝置指紋非常關鍵的一個指標。

裝置指紋作為一項基礎服務,是眾多資料服務的核心要素,比如使用者常用裝置、風控中依賴裝置的策略、廣告唯一標識等。如果指紋唯一性計算出現偏差,即碰撞,可能會引起嚴重的誤判。

圖片

比如碰撞後,可能會判斷出裝置出現在陌生地區,關聯陌生賬號,導致誤處罰;如果出現大面積碰撞,會導致風控攔截大批正常使用者。碰撞會直接導致指紋可信度下降,使得線上業務不敢再依賴基於指紋的判斷。所以一個好的裝置指紋,唯一性上一定不能有大的偏差。

而導致碰撞的原因則可能因為某些應該具備唯一性的重要裝置特徵出現不唯一,亦或是特徵選擇不當,多個特徵組合後唯一性標識不夠,當然也可能是匹配演算法問題。

因此,在保證裝置指紋的唯一性層面,不僅需要具備實時動態更新的演算法匹配,更要注重碰撞檢測。

圖片

首先,就演算法更新而言,日常的異常資料的檢測僅靠應用是不夠的,需要離線倉庫定期分析當前的資料,對出現的異常特徵可以及時發現並提取出來,然後反饋給線上進行演算法最佳化。

就碰撞檢測能力而言,頂象也是獲得了專利認證。

頂象裝置指紋的碰撞檢測能力,可避免異常資料進入影響指紋資料。採用裝置的uuid不可逆原理來檢測碰撞。對於同一臺裝置,多次採集資料進行計算,uuid在這期間可能會發生變化,變化以後則不可能變回以前的uuid,如果一臺裝置在某次計算後出現歷史uuid,則表明本次計算不可信,出現了裝置碰撞情況。

圖片

其基本原理是:

1、裝置首次使用App,採集裝置資料上報時,指紋伺服器下發一個憑據,快取在客戶端,首次下發的憑據稱為憑據X1;

2、裝置再次使用App,採集裝置資料上報時,先檢查是否有快取客戶端在的憑據X1;若有,則攜帶上憑據X1;若沒有,則認為是由於清理快取導致憑據X1被刪除,指紋伺服器下發憑據X2,憑據X2與憑據X1不相同;

3、在生成憑據X2以後,採集裝置資料上報時再次出現憑據X1,則判斷裝置指紋出現了碰撞;

4、在多次清理快取的情況下,還包括按出現順序依次排列的憑據X3、憑據X4…憑據XN,只要檢測到憑據XN之後出現過此前曾出現的憑據X1至憑據X(N-1)中的任一個,則判斷裝置指紋出現了碰撞;

當然,裝置的碰撞檢測也有其他方式可以實現,但不適合沿用指紋本身的計算思路了,因為碰撞時應用已經‘犯錯’了,所以上面介紹的以一個‘旁路’的方式來檢測會更適合。

此外,頂象裝置指紋的計算流程涵蓋了資料解析,特徵選取,演算法匹配,碰撞檢測等。

圖片

同時,針對私有化使用者,頂象提供防禦雲服務,將雲服務裝置指紋收集到的最新計算演算法同步到防禦雲平臺,私有化指紋可以保持和雲服務同步更新。

圖片


整體來看,裝置指紋在唯一性和穩定性層面,不僅做到了防止採集邏輯被破解或資料偽造,從資料採集源頭上保證真實性和準確性,並且針對黑灰產對裝置引數進行篡改偽造(篡改IMEI、MAC地址、AndroidId、SIM卡資訊、機型、品牌等),或是禁用、清除快取和cookie等風險,能夠保證裝置指紋保持不變,穩定性保持在99%以上,為每一臺裝置生成的裝置指紋ID全球唯一,不可被篡改,唯一性上保持在100%,響應時間小於0.1秒、崩潰率小於1/10000。

同時,裝置指紋作為頂象防禦雲的一部分,整合了業務安全情報、雲策略和資料模型,透過對上網軟硬體生成唯一指紋資訊,支援安卓、iOS、H5、小程式,可有效偵測模擬器、刷機改機、ROOT越獄、劫持注入等風險。