風控-同盾設備指紋

當談論設備指紋時,我們到底在說什麼? ( 丁楊 作者系同盾反欺詐研究院丁楊)

“設備”和“指紋”作爲獨立名詞存在時,其具有非常典型的硬件屬性;一旦將他們結合起來變成“設備指紋”,就完全變成了一個軟件層面的概念。近年來隨着智能風控技術日益強大,很多風控系統都逐漸嘗試加入這個重要的功能模塊。

2014年筆者剛加入同盾科技時即負責設備指紋1.0版本研發,隨着產品的迭代升級以及無數次與客戶現場的溝通,也逐漸積累了一些自己的思考。今天就讓我們拋開具體的技術細節,從一個更高的視角來共同探討設備指紋的發展。

設備指紋誕生於網絡未知

在互聯網發展初期,人們發現商業的邊疆可以被極大的拓展,我們可以跟某個素不相識的人在一秒以內完成一筆真實交易。但是,更多的機會也帶來了更多的風險。很多在人們看來理所當然的線下正規業務場景,一旦轉換到線上,就會衍生出意想不到的風險。比如,從前一個賣家可以通過“察言觀色”、“一手交錢一手交貨”、“攝像頭監控”等等方式很精準的去判定一個買家是不是欺詐者。這意味着對於“什麼人”在“什麼時候”用“什麼方法”做了“什麼事”這個亙古不變的業務鏈條,每個環節賣家都一清二楚。但如今在互聯網上,所有的識別環節都被打破,實實在在的行爲被打散爲不同的單個請求,並且這些請求分佈在許多複雜的業務模塊中,線下積累的經驗無法直接適配線上。於是人們發明了各種各樣的方式試圖重新去補全這個業務鏈條,而“設備指紋”就是當下用於判定業務主體是“什麼人”的一種重要技術。

設備指紋的“前世今生”

早期,在一些對安全要求非常高的線上場景中,例如一些銀行的網上銀行,常常使用U盾這樣的純硬件技術去追蹤業務主體,也就是上文所說的定位“什麼人”。同時,因爲業務往往都是發生在瀏覽器頁面中,而瀏覽器是屬於操作系統上層的應用程序,運行在其中的腳本代碼受到沙盒的限制,所以用戶也需要安裝一個可以跳出瀏覽器沙盒直接跟操作系統對接的控件,來讀取U盾裏面的安全數據。

相對來講,這很安全。不過隨着互聯網的發展,這種“控件”+“U盾”的結合方式已經越來越落伍。筆者總結了如下幾點原因:

1、使用控件的用戶體驗非常差,需要冗長安裝、更新流程,普通用戶難以操作; 


2、移動互聯網已成爲絕對主流,而iOS,Android等移動互聯網入口都不支持控件; 


3、不僅僅在移動端,某些控件在pc端適用範圍都很小,很多隻支持PC上的IE內核瀏覽器。同時Chrome和Firefox等份額較大的桌面瀏覽器也在逐步淘汰控件的使用;

4、基於控件的本地溢出漏洞層出不窮,用戶很容易中木馬或者被釣魚,反而給系統的安全造成嚴重危害。

基於以上幾點,純依賴js的web設備指紋技術逐漸被越來越多的廠商使用。它具有”免安裝”、”動態更新”、”用戶無感知”、”兼容移動和桌面端所有操作系統瀏覽器”的優點。此外,由於js天然受到瀏覽器沙盒的限制,在某些安全性要求更高的場景,內嵌於各種app的SDK設備指紋技術也得到廣泛的應用。

“好”的設備指紋是怎樣的

很多人對設備指紋不瞭解,容易一開始便糾結在一些意義不大的機制和參數上。下面就讓我們一起探討下什麼是“好”的設備指紋。

1、不侵犯用戶隱私
這是所有設備指紋產品需要嚴格遵守的紅線。侵犯用戶隱私,基於用戶敏感信息(比如用戶瀏覽歷史記錄,用戶輸入的敏感數據等)研發的設備指紋產品,即使功能再強大,也毫無意義,這無需多言。

2. 安全性和用戶體驗的平衡
好的設備指紋需要在安全性和用戶體驗之間找到最佳的平衡點; 其實這個概念可以衍生到更廣的層面,即“安全防護應該是在安全性和業務發展之間找到最佳平衡點”。
對於安全從業者來說,這是我們要牢記的第一準則 —— 安全永遠是爲業務服務的。上文提到的淘汰“硬”設備指紋(U盾)而發展“軟”設備指紋(js,SDK)就是對該理念的有力印證。雖然“軟”設備指紋在某些情況下功能性和安全性稍差,但在用戶體驗上獲得了極大的提升,再通過結合其他維度的綜合風險識別,實踐證明”軟”設備指紋機制有效且風險可控。

3、保證穩定性、兼容性和性能
實驗室創新並不等同於工廠技術,在實驗室誕生的創新技術距離實際的工業化生產還有非常遠的路要走。這在設備指紋領域也很明顯,我們常常能看到不少”奇思妙想”的技術被炒作爲可以用來做設備指紋,但考慮到兼容性和穩定性,實際上絕大多數都不能應用在線上環境中。這些往往只有真正開發設備指紋的技術人員纔有深刻體會。

穩定性,兼容性,性能等等都需要重點考慮,複雜的客戶端環境和多樣的使用場景,一款好的設備指紋產品一定是久經考驗的“戰士”。以同盾的SDK舉例,我們做了大量的線上線下測試(針對衆多偏門機器或者山寨機的兼容性測試、運行的耗電情況統計、上億裝機量的線上運行、高性能服務端集羣壓測、極端情況的完備降級處理方案等等)來確保最後交付的產品質量。

4. 迎合技術發展
無論是web技術還是移動端技術都在飛速發展,一些老舊的技術也在不斷被淘汰,設備指紋是一種集合多種技術的集大成類產品,所以也一定要時時迭代,符合新技術發展的潮流。例如前幾年HTML5技術剛興起的時候,我們就對其中“websocket”、”canvas”、”cors”、”local storage”等進行了研究,挖掘了不少有價值可利用的技術。另一邊,千瘡百孔的flash已經在淘汰的邊緣,絕大部分桌面端瀏覽器都已經默認不開啓,我們也在最新的版本里給它判了“死緩”。

不僅僅是功能迭代要利用新的技術,設備指紋的應用場景和使用方式也要儘可能與技術發展一致。比如當下很多廠商都採用“混合式app開發”框架,我們就有針對性的研發了適配功能,將app中的h5與本地的sdk結合起來做綜合的設備識別。

5. 貼合業務場景
很多人都知道設備指紋有兩個“著名”的評估標準:“穩定性”和“唯一性”。穩定性用來評估歷史上出現過的設備依然能夠被識別回來的能力。這就好像一個罪犯,不管怎麼變裝 易容,依然能被警察找到。唯一性則從另一個角度,評估把一個設備識別成另一個設備出錯概率。同樣的比方,警察知道一個罪犯的特徵是“175公分”、“短頭髮”,但是並不能把大街上所有具有這兩個特徵的人都當罪犯抓起來,因爲這兩個特徵並不能唯一定位到一個人。換句話說,這兩個特徵的“熵”太少。但是如果再加上另一個特徵—— “左臉眼睛下面有一個3公分的橫向刀疤”,這就非常明顯了,通過這三個特徵,警察有非常大的把握可以追蹤到該罪犯。其中這個“刀疤”特徵,就是一個不錯的可以用來做設備指紋唯一性判定的參數。

實際使用過程當中,“穩定性”和“唯一性”也是不可兼得的,此外性價比也是一個關鍵因素(會有一些辦法可以在保證一個特性的同時加強另一個特徵,但是其中投入的開發和技術成本,廠商也要考慮是否能承受)。

那我們就又需要去找平衡點,怎麼找到這個點呢? 答案就是要貼合業務場景。直白點講,就是廠商想怎麼去用設備指紋。我們舉兩個典型案例:

案例一: 廣告營銷

廣告營銷場景常常需要結合不同人羣的興趣愛好推送不同的廣告,達到精準投放的目的。很多時候需要定位到一個用戶的設備,然後畫一個基於興趣的設備畫像。對於這個場景的設備指紋,其實可以放棄一部分的“唯一性”,去迎合“穩定性”。因爲這個時候業務考慮更多的是人羣總體覆蓋度,而不用糾結在是不是每一個人每一臺設備都定位精準了。所以有時候我們會發現在手機的app裏瀏覽一個商品,過段時間電腦上就推薦了,這不是什麼黑科技,有可能廣告廠商用的僅僅是你的外網ip當作設備指紋。

爲了更好的解釋這一點,我常常舉這麼一個例子:營銷場景的設備指紋就好像給1000個人去標記興趣,其中有一個人錯了沒啥大問題,頂多推薦一個他不喜歡的廣告;反欺詐則不同,如果1000個裏面有一個標記錯了,非常有可能那一個人就是一個欺詐者,或者把一個優質的客戶給誤殺了,這個影響就很大。換一個角度說,用營銷的設備指紋去做反欺詐,效果非常難以保證。

剛剛提到了外網ip,我們可以簡單擴展下思路,隨着IPv6的發展,ip地址非常充裕,其實可以在一個人出生的時候就給他一個固定的ip用來上網,這樣所有的網絡行爲都能做到精確追蹤。不過這樣可能也未必是什麼好事。

案例二 :可信設備體系

反欺詐領域有兩種不同的世界觀:一種是從一堆未知請求中尋找可能的欺詐;一種是允許已知的優質用戶操作,其餘未知的都需要經過短信驗證或者更嚴格的身份二次確認。兩種方式一種增強了對壞人的覆蓋度,一種增強了已知好人的用戶體驗。高級的反欺詐系統往往混合使用這兩種機制。所謂的可信設備體系就是第二種,基於已知的可信操作沉澱出可信的設備體系。

這種情況下使用的設備指紋應該更關注“唯一性”還是“穩定性”?

答案依然是“穩定性”,不過應該比案例一的營銷場景更偏一些唯一性。可以這麼理解,對於黑產來說,想要僞裝成一臺全新的設備很容易,大不了重裝系統。但是想要僞裝成一臺已知的可信設備就很難了。隨着維度的增加,難度也會呈指數級增長。打個比方,如果我們是根據”ip歸屬地城市”、”系統語言”、”wifi名稱”三個維度交叉得到的可信設備,那麼對於一個特定的可信賬號,黑產很難模擬出一套相同的環境。

有人會問:爲什麼不完全偏向“唯一性”呢,這樣似乎更安全?那是因爲正常用戶也會有一些潛在可能的環境變化,比如一個人在家裏上網,可能用手機、臺式機、或者筆記本電腦,而且常常在多個設備間切換,如果完全偏向“唯一性”,每一個參數的微小改動都需要用戶重新進行全流程的二次驗證,對於用戶的體驗會非常差;對廠商來講,進行二次驗證往往需要付出一些成本,比如發短信,當用戶量大了之後這些成本的增加也很可觀。

以上只是衆多業務場景中典型的兩種,最終怎麼設定設備指紋平衡點,完全看業務需要。從商業化的產品角度來看,怎麼更好的解決這個問題呢?

我們拋出一個答案 —— 靈活可配置化。同盾科技同時提供了多個id,每個id分別有不同的穩定性和唯一性偏好,客戶可以根據自己的業務場景,靈活選擇。

上文所說的只是貼合業務場景的一個層面:“穩定性”和“唯一性”。其實作爲“業務”風控產品,方方面面都要努力做到這一點。

6. 設備異常環境識別

很多人誤解,設備指紋只能做設備的唯一標識,也就是“設備ID”的追蹤。但其實設備指紋能做的遠不止這些,甚至可以說設備ID的功能只佔其全部功能的三成左右。上文我們舉的兩個案例:可信設備和廣告營銷,可以說這並不算反欺詐的典型業務。當下國內最典型的是“賬戶”和”營銷”這些場景,也是黑產獲利最多的場景。這些場景裏,黑產往往可以通過僞造新設備或者僞造某些系統底層參數(比如地理位置,imei號等等)的方式來繞過業務的限制。上層設備指紋獲取的所有參數都是僞造的,基於這些僞造的數據計算得到的設備ID就毫無意義了。就像一個美麗的空中樓閣,沒有了深入地下的堅實基礎。而夯實基礎關鍵在於”系統環境異常的識別”。對於常見的黑產改機框架、改機軟件、僞裝軟件等,設備指紋都一定要做到針對性的識別。只有確定當前的系統環境沒有異常,設備ID纔是可信、可用的。

以同盾的設備指紋舉例,目前我們幾乎能識別所有的Android和iOS底層改機和僞造行爲。此外通過對常見的黑產軟件有針對性的監控和逆向研究,結合服務端的數據分析和建模,可以給設備打上30多種異常標籤,包括“調試行爲、“模擬器虛擬機”等等。

對於”軟”設備指紋,設備異常環境的識別可能比設備ID更重要。

7.強大的自我保護機制

設備指紋是一個從”端”到”雲”的綜合系統,這裏面既有客戶端的交叉驗證、劫持檢測,又有服務端的數據建模、聯防聯控,任何一點的疏忽都有可能被黑產攻破,所以需要對客戶端的代碼做很強健的加固保護。

這也是爲了在跟黑產對抗的過程中保持信息不對稱性的優勢,一定程度上我們就是通過這種信息不對稱性在攻防之間保持微弱的領先優勢。所以對很多設備指紋系統來講,” 開源”也就意味着平庸和被繞過。雙方都在絞盡腦汁拼個你死我活,突然就把家底送給別人看了,後果可想而知。

談論設備指紋時這些尖銳的問題你該知道

這幾年筆者現場接觸了很多客戶,也回答了很多設備指紋的問題,其中不乏一些專業到位、一針見血的問題。以下是筆者簡單梳理出的一些問題與大家共分享。

問題一: 怎麼評估設備的“穩定性”和“唯一性”,有沒有量化的標準?
答:
這似乎是一個悖論:如果能有一個良好的判定設備指紋的參數,爲什麼不拿它當設備指紋呢?

不過仔細想想也未必沒有解決方案。我們排除掉粗暴的大樣本環境測試(樣本再大相比線上也是九牛一毛),剩下最好的辦法便是基於一些業務數據和生活常識去做這個判斷。保密原因我不會詳細說,但是我們內部已經形成了一套行之有效的評估預警機制。

問題二: 如果我刷機,重裝系統,你還能找回這個設備嗎?是不是設備指紋就沒用了。
答:
軟件層面追蹤硬件一定有它的侷限性,某些小”trick”可以做到即使刷機和雙清,仍然可以還原。但是如果真的是徹底的底層變更,甚至是修改硬件,比如換塊硬盤,那光靠設備指紋一定是不夠的,需要完整的風控系統。設備指紋不是銀彈,我們做的也不是百分百絕對防禦,提升黑產作案成本是關鍵。

問題三: 可不可以這樣用你們的設備指紋,我自己獲取一些你們要的參數,然後傳給你,你們給我們返回一個設備ID?
答:
這種方式沒有太大意義。
上文筆者提到,設備指紋是一個從”端”到”雲”的系統,這種單純使用”雲”不使用”端”的方式,很有可能導致服務端接收的數據完全是黑產僞造的。我們常常說”數據決定了模型的上限”,很多客戶更關注服務端模型,但數據的不可靠讓模型的效果非常差甚至爲負。

問題四: 能不能把設備指紋開源給我們,我們擔心你們做一些不安全的事情?
答:
上文我們也提到,設備指紋的開源意味着設備指紋的死亡。對於一個商業產品來說,給一個客戶的開源意味着給所有客戶的開源,同樣意味着給黑產的開源。安全類產品的核心代碼一定是不開源,否則對黑產來講就是照着說明書攻擊了。
安全上的擔心,可以理解。但是換個角度,互聯網的發展其實就是基於供應鏈各個環節互相的信任。我們從來不擔心瀏覽器竊取用戶隱私,不擔心微信支付寶竊取用戶隱私,即使他們大多數代碼也是不開源的。對同盾來講,作爲堅持第三方中立的風控領域領頭羊,我們非常感謝6000多家客戶給予的信任和支持。

問題五: 爲什麼要使用三方的產品,而不是自己進行技術研發?
答:
難度非常大,成本非常高,投入非常多,需要謹慎考慮。專業的事情還是交給專業的人做。

問題六:爲什麼說同盾的設備指紋是最好的設備指紋?
答:
試過就知道。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章