一、ID 體系:你隻是一串代碼
想要瞭解 OAID,我們首先需要明白 ID 體系:想要追蹤一個用戶就必須先找到用戶,在這個過程中,標識符(ID)就像我們的另一張身份證,它們就代表瞭數字化之後的你和我。
不同 App 可能通過某些唯一標識符對你進行強制跟蹤,廣告平臺則會通過這個唯一標識符對你進行用戶畫像描繪,進而共享給相關 App 及其後臺,一旦「你」打開瞭其中的某個 App,那麼你就會被識別到——你點瞭什麼、看過什麼、可能需要什麼,它們比你自己都清楚。
而在智能設備的 ID 體系中存在許許多多不同種類的標識符,下面是一小部分 Android 設備內的 ID,它們可能會用於不同方面的跟蹤或標識:
1.IMEI
IMEI 應該是大傢最熟悉的一種 ID瞭,它是手機的身份證,也是運營商識別入網設備信息的代碼,是一種不可重置的永久標識符,作用域為設備。
在廣告跟蹤方面,由於 iOS 的權限管控,iOS 上的第三方 App 並不能通過 IMEI 跟蹤用戶,但目前 Android 平臺中絕大部分 App(尤其是在國內)都通過 IMEI 來追蹤用戶,開篇所舉的例子在 Android 平臺上大多也通過 IMEI 跟蹤來實現。
與 IMEI 類似的還有一個叫做 IMSI 的標識符,但它主要用於 SIM 卡的身份標識,這裡不做展開。
2.Android ID(SSAID)
顧名思義,Android ID 是 Android 設備裡不依賴於硬件的一種「半永久標識符」,在系統生命周期內不會改變,但系統重置或刷機後會發生變化,其作用域為一組有關聯的應用。
Android 開發者文檔和谷歌開發者中文博客對 Android 8.0 後的隱私性和 SSAID 變化做出瞭說明:
從圖中不難看出,在 Android 8.0 以後,簽名不同的 App 所獲取的 Android ID(SSAID)是不一樣的,但同一個開發者可以根據自己的數字簽名,將所開發的不同 App 進行關聯。
3.Device ID
在 Android 平臺,Device ID 是一種統稱,與硬件相關的 ID 都可以稱之為 Device ID,一般是一種不可重置的永久標識符,作用域為設備。
根據設備、廠傢或者 App 調用需求的不同,讀取 Device ID 時可能會返回 IMEI 或其他硬件編碼,但也有可能因為設備中沒有相關硬件而無法獲取 Device ID 或返回無效值;與之形成對應的,iOS 設備中也有類似的永久標識符叫做 UDID,但在 iOS 6 之後,蘋果已經不允許需要獲取 UDID 的 App 上架 App Store 以防止這種不可重置的 ID 被用於追蹤或濫用,取而代之的是 IDFA 標識符,即 iOS 設備廣告標識符。
另外還有一種叫做 openUDID 的設備唯一標識符,它在 iOS 和 Android 系統內都可以使用,但由於不是系統官方提供的 ID 體系,且依賴於第三方 App 生成,所以應用並不廣泛,而隨著系統迭代升級,openUDID 也逐漸被邊緣化甚至被廢棄。
4.UUID、GUID
UUID 也叫做實例 ID,這兩個 ID 可以說是在計算機體系內的通用標識符(詳細瞭解 UUID 和 GUID 可以閱讀 維基百科 相關內容)。
根據所面向對象的不同,其意義也有微小差別。如果說前面三個 ID 可以用來識別設備,那麼這兩個 ID 在 Android 系統中的作用主要是識別 App 進程、元素或數據。
因為它們的作用域僅僅是單個應用內,如果用戶卸載瞭該 App 並重新安裝,那麼 UUID 也會發生變化。不過 App 開發者可以通過存儲 UUID 或與其他 ID、用戶信息進行組合、綁定、計算等方式,實現 UUID 標識符的「準永久化」。
根據 Android 開發者指南:
標識運行在設備上的應用實例最簡單明瞭的方法就是使用實例
ID,在大多數非廣告用例中,這是建議的解決方案。隻有進行瞭針對性配置的應用實例才能訪問該標識符,並且標識符重置起來(相對)容易,因為它隻存在於應用的安裝期。
因此,與無法重置的設備級硬件 ID 相比,實例 ID 具有更好的隱私權屬性。
5.AAID
AAID 與 IDFA 作用相同——IDFA 是 iOS 平臺內的廣告跟蹤 ID,AAID 則用於 Android 平臺。
它們都是一種非永久、可重置的標識符,專門提供給 App 以進行廣告行為,用戶隨時可以重置該類 ID,或通過系統設置關閉個性化廣告跟蹤。但 AAID 依托於 Google 服務框架,因此如果手機沒有內置該框架、或框架不完整、或無法連接到相關服務,這些情況都有可能導致 AAID 不可用。
除瞭以上這些 ID 標識符以外,某些硬件 ID(例如 MAC 地址)也可能會被用於追蹤。
二、國內 Android 的廣告追蹤之道
這麼多 ID 標識符,每一個都各司其職。而理論上來說,隻有 AAID 和 IDFA 是真正用於廣告行為的
但現實狀況顯然不是這樣。
一方面,Android 平臺的不少 App 普遍存在違反 Android 開發規范、繞過 Google Play 審查,通過濫用 ID 來追蹤用戶,以此達到為廣告流量、營銷分析等商業利益服務的目的。
另一方面,由於 AAID 依托於 Google 服務框架,但在國內使用 Google 服務並不太可行,或者大部分國行手機內置的 Google 服務不完整,App 開發者需要尋找另一個方式去標識用戶。
UUID、GUID 作用域太小,不適合廣告跟蹤;Android ID 可以通過某些方式被改變或因為 bug 導致不可用,第三方 App 無保證可用性;MAC 地址雖然精準,但在Android 6.0(API 23)到 Android 9(API 28)中,系統限制瞭第三方 API 獲取MAC 地址;再加上早些時候,大部分「非玩機用戶」對此類功能並沒有太多概念,第三方 App 為瞭能以更加精準持久的方式來跟蹤用戶,將 IMEI 變成瞭用於廣告跟蹤的首選 ID(在 Google Play 幫助中心,獲取永久標識符是一種有條件的、退而求其次的廣告投放方法,所以在此之前這種方式也不算完全違規)。
這也是我們看到很多 App 提示必須獲取「電話」權限才能運行的原因——因為獲取 IMEI 必須獲得「電話」權限,可是由此也帶來瞭一些隱私問題:允許「電話」權限可能導致 App 讀取到很多種其他信息,就像我需要你給我身份證來查詢身份證號,但與此同時你的姓名、住址、生日也暴露給我瞭。
我們可以在 這個網站 查詢到部分 App 所需要的權限、資源以及它可能會發送的隱私信息。例如微信,在網站中收錄的 6.7.3 版本中,微信獲取瞭如下權限,但並沒有檢測到發送以下隱私數據。
隨著時代發展,用戶逐漸認識到手機 App 瘋狂獲取權限的行為有可能會侵犯隱私,加之近幾年 Android 系統的權限和隱私管理逐漸收緊,Android 10(API 29)終於對第三方 App 獲取不可重置永久設備標識符(包括 IMEI)的行為做出瞭 限制
具體到用戶層面,在 Android 10 之後應用即便能夠獲取到「電話」權限,系統返回給應用的 IMEI 信息值也為空(你可以通過 My IMEI 這款應用進行測試)。
三、OAID:Android 10 之後的替代方案
至此,國內 App 和廣告跟蹤服務急需一種替代方案以避免廣告流量的損失,OAID 順勢而生。
Android 開發者文檔中對 Android 10 限制設備標識符讀取的說明 OAID 的本質其實是一種在國行系統內使用的、應對 Android 10 限制讀取 IMEI 的、「拯救」國內移動廣告的廣告跟蹤標識符,其背後是 移動安全聯盟(Mobile Security Alliance,簡稱 MSA)。
該聯盟由中國信息通信研究院擔任理事長和秘書長單位,北京大學、vivo、360、華為擔任副理事長單位,並有包括蘋果、中興、OPPO、小米等多傢理事和會員單位(點擊查看聯盟成員詳情),OAID 所屬的標識符體系也是由該聯盟牽頭發起的(參見「移動智能終端補充設備標識體系」)。
根據聯盟官網以及開發文檔,這個「本土化」標識符體系除瞭 OAID,還包含 UDID、VAID 和 AAID 一共四種標識符。
我知道你在想什麼,不過這裡的 UDID 和 AAID 與上一節所說的完全不同。你可以通過下圖來瞭解「移動智能終端補充設備標識體系」所規定的四種標識符以及獲取它們的接口開發方式。另外,你也可以在 MSA 官網或會員單位的開發者網站下載 SDK 開發說明。
從這四種標識符的描述和功能我們大致可以確定,「移動智能終端補充設備標識體系」所規定的 UDID、OAID、VAID、AAID 在 Android 系統中分別對應瞭 Device ID(例如 IMEI,或對應瞭 iOS 設備的 UDID)、AAID、SSAID、UUID(或 GUID)。在理想狀態下,引入 OAID 即能保證廣告平臺的正常運作,也能減小對用戶帶來的影響,因為第三方 App 無需請求權限即可使用 OAID 完成廣告行為,而該過程匿名,用戶也可以隨時重置 OAID。
從廣告服務商 Adjust 於 2019 年12 月 20 日發佈的 新聞稿 中我們也可以獲知,Adjust 已經接入瞭 OAID 廣告標識符,能夠對中國大陸的廣告主提供廣告相關服務;國內廣告數據服務商神策數據在其 幫助文檔 中同樣提供瞭 OAID 匹配指南;華為則在其 開發者平臺 提供瞭基於 OAID 的「HUAWEI Ads OAID」廣告平臺接入指南。
事實上,主流手機廠商都已經在其開發者平臺上提供瞭 Android 10 適配指引,包括 三星中國開發者網站、華為開發者聯盟、OPPO 開放平臺、vivo 開放平臺 都已針對 Android 10 的相關變化做出瞭說明和解決方案建議,其中就包括 Google 官方標識符適配建議和 OAID 適配方式。
另外 OPPO 和 vivo 也分別在其開放平臺提供瞭「移動智能終端補充設備標識體系」相關文檔和 SDK 下載。
不難看出,廣告平臺已經開始接入 OAID 作為國內廣告標識符的建議方案,主流設備廠傢也已經開始指導開發者采用「移動智能終端補充設備標識體系」,並且考慮到國內主流的應用預置和分發平臺(例如手機廠商內建的應用商店)與 Google Play 一樣開始對上架 App 的 API 等級做出強制要求,包括 OAID 在內的標識符體系毫無疑問將成為國內第三方 App 的強制執行標準。
四、Q&A
1.AndroidID什麼時候會改變?
恢復出廠設置
root/恢復root
三清
刷機
系統更新
軟件修改(一般是模擬器,xposed,root)