關於裝置指紋,你想了解的都在這裡

2021-10-06 17:22:26 字數 2579 閱讀 7906

在移動安全領域,裝置唯一識別符號策略,也就是裝置指紋是一種比較常見的安全手段。裝置指紋安全是一種實現簡單、門檻較低、安全性較高的安全手段。在國內,有不少安全公司都推出了裝置指紋產品,主要覆蓋android、ios、js等平台。事實上,為了確保自身資料的安全性和保密性,很多大型企業都會有自身的裝置指紋團隊。作者在此僅討論下移動端android平台的裝置指紋特性。

在安卓端,原生系統其實已經提供了很多標識性比較強的裝置id欄位,比如說:androidid、imei、imsi、serialno等。在僅僅只需要對裝置進行簡單的分類的場景下,以上欄位就足以滿足業務需求了。不管是較低版本的android裝置,還是最新版本的android裝置,以上欄位中都會有部分欄位是可以採集得到的。在裝置指紋領域,系統的目的是根據裝置資訊來生成低碰撞的裝置id。在初期的裝置指紋系統中,基本都是採集系統的環境資訊和裝置的軟硬體資訊來構造裝置id,由於這些方案是在本地生成的裝置id,在裝置進行一些刷機、恢復出廠設定後,裝置id就會發生改變,並且極容易被類似xposed等改機工具給繞過。因此、這種裝置id的生成方式很快就退出了舞台。

目前市場上的裝置指紋方案,一般都是通過前端採集、後端生成來實現的。這種方案的好處是裝置id儲存在後端,前端只負責資料採集,後端來校驗裝置id,達到了前後端分離的目的。與此同時,裝置id生成策略被隱藏,不易被攻擊,後端還可以通過長期演進的方式來保證較強能力的裝置id恢復能力。

在安卓裝置中,可以體現出乙個裝置的身份的特徵還是很多的。比如:androidid、imei、medi等原生字段,還有類似brand、devicename、host等裝置構建資訊,還有abi、cpu、camera等硬體資訊,還有wifi、blue、ip等網路資訊。從目前的形式來看,谷歌對原生系統的許可權收緊會導致越來越多的標識無法採集,這也是對裝置指紋系統的乙個巨大挑戰。也因此,國內幾個大型的安卓裝置廠商組織了移動聯盟,該聯盟旨在在裝置中從rom的層面,提供裝置的唯一識別符號。這些識別符號是可以作為較穩定的裝置id來使用的。

但是,我們必須得清楚,依靠某個單獨的字段或者幾個欄位來標識裝置的唯一性,是存在很大風險的。某些改機工具通過修改這些敏感的字段,就可以輕而易舉的繞過我們方案。這也是裝置指紋系統中乙個很難解決的問題。當然這裡面同樣包括刷機、重啟、恢復出廠設定等修改措施。

針對以上的異常情形(也可以說是正常情形),各個裝置廠商也都研究了相應的措施,比如檢測裝置異常狀態,多欄位聯合恢復等,這些手段在一定程度上提高了裝置指紋的安全性。

客戶端作為一種執行在使用者裝置中的系統,其面臨的入侵風險是非常高的。也因此,客戶端的對抗要求也會相對高很多。這些對抗手段主要集中在加解密、重打包、混淆策略、字元加密等常規手段,還包括一些邏輯本地化(native c/c++)、虛擬化等強化手段。

在加解密方面主要是對秘鑰的保護,常用的方案有秘鑰交換策略、一次一密策略、白盒加密策略。這些技術手段的初衷都是為了隱藏對稱加密的秘鑰,從而對原始資料進行保護。

在重打包方面主要是對證書校驗、原始重點方法堆疊資訊的判斷來實現的。目的是即時檢測出應用中被注入的新**和被刪除的原始**。

至於混淆和字串加密,則是從逆向的角度來考慮的,目的是增加**的閱讀難度,其中字元加密也是為了保護系統的一些敏感的常量兩字元資訊。

當然,像系統本地化、虛擬化這些手段是在系統發展到一定程度必然要經歷的。本地化**可以極大地提高**的破解難度和動態除錯難度,間接的提高了破解成本。至於虛擬化,他雖然提高了系統的安全級別,但是多少也會降低系統的執行效率,該領域也是可以持續挖掘的區域之一。

在很多場景,比如登入、註冊、支付等敏感場景,裝置id不僅僅提供了裝置驗證和判定的功能,它還可以提供裝置風險識別的能力。最簡單的就是模擬器判定了。這在初期的一些裝置指紋系統中就有體現。其他的還有類似改機、被hook、裝置農場等等。裝置指紋系統從裝置資料的角度來對該裝置所處網路環境、所屬的軟體執行環境進行多維度的解析,來輸出對應的風險標籤。這在一定程度上,擴充套件了裝置指紋的業務能力,增強了業務方的產品安全。

在裝置指紋系統中,裝置恢復是極核心的能力,所謂的恢復其實就是針對同乙個裝置,在它的環境、狀態等發生改變時,裝置指紋系統仍然能夠將之恢復成之前的裝置。在上文提到過,裝置本身就具有很多穩定的指標,比如:imei、wifimac等。通過這些指標的對比,我們就可以實現一套不錯的裝置恢復邏輯。但是,需要指出的是,這種方案需要對全版本的安卓裝置進行適配,並且在不同的版本中,採用不同的組合,這樣才能達到乙個相對靠譜的恢復能力。相比這種方案,我們還可以通過一些被動式的方式,來獲取其他應用的裝置層面的指標,來間接的對裝置進行恢復。不管哪種方式,都需要開發者及時的適配版本、從版本特性中找到可以使用的資訊。

在這裡,我們提供一種可以長期演進的恢復方案。通過對裝置的總體資訊進行分析匹配,來進行裝置id的恢復。大致策略是對裝置的一些重要字段進行對比,綜合裝置間的對比結果來判定是否可以獲取到相似度極高的裝置。通過這種方式來對裝置進行乙個概率性的恢復。

這種方案的優點很明顯,不是依賴乙個或者一組資料來進行恢復,而是依靠乙個裝置的全量(或者大部分)指標來進行恢復的,並且這種相似性的計算規則可以進行迭代華的持續演進,及時適用新環境;它的缺點就是可能產生碰撞,而且無法對資料修改較多的裝置進行恢復。

在筆者看來,裝置指紋的完美解決方案是由系統提供者來處理的。底層系統提供者(谷歌、rom廠商、硬體廠商等)可以在系統底層設定不可更改的標識資訊,在硬體層燒製不可更改的識別符號。在最底層,它們一方面擁有極高的系統許可權,另一方面可以在系統層面上抵抗絕大部分侵入。由這些底層系統提供者提供的標識資訊相對來說會靠譜得多。

IT管理類培訓,你想了解的全都在這裡

it類的培訓,主要分為技術類和管理類。不斷有小夥伴問起各種培訓的價值,內容和對自己職業發展的幫助,希望這篇帖子可以給大家一些啟發。首先用下圖闡明各個it管理類培訓的主要範圍。it管理類的培訓分為兩條主線,乙個支援。從it管理生命週期的主線來看,包括it規劃和治理的cobit,架構管理togaf,著名...

關於Weex,你想了解的一切都在這裡

自從南天在qcon2016宣布weex專案開源至今已經快兩個月了,weex也在6月的最後一天迎來了全面的開源。截止7月中旬,weex在github上收穫了4k star,一度成為github上的熱門專案。weex,作為無線研發領域新秀,其影響力正逐步從阿里的內部不斷向外部擴散,除了全力支援手淘和手貓...

各種線 你想知道的都在這裡

uart iic spi都是一種具有協議特徵的收發器 介面 匯流排,它規定資料按照什麼的時序傳輸,rs232,rs485是傳輸時候的電平標準,規定了按照上述協議傳輸的高電平與低電平的電壓都應該是多少 rs232與rs485一般都預設跑的uart協議。以uart協議 時序 通過uart收發器的收發端 ...