下午和同事在微信上聊到 Air Pods Pro 的體驗,晚上拼多多就開始給你講起真香的故事;好奇在搜尋引擎裡搜了下養貓小貼士,打開淘寶首頁推薦就蹦出了貓砂貓糧貓爬架……甚至會有那些「絕對不可能」的情況,手機仿佛偷聽了你和朋友對話般知曉了你的心中所想。
上面這些情況都是廣告追蹤的實際呈現效果。
儘管對用戶隱私和廣告追蹤數據的尊重已經成為了近年 iOS 和 Android 系統功能更新中的重要一環,在 Google 缺席、魚龍混雜的國內 Android 生態中,通過各種廣告追蹤手段獲取個人隱私依然似探囊取物。今天我們要介紹的 OAID,便是眾多廣告追蹤手段中最新的一種。
ID 體系:你只是一串代碼
想要了解 OAID,我們首先需要明白 ID 體系:想要追蹤一個用戶就必須先找到用戶,在這個過程中,標識符就像我們的另一張身份證,它們就代表了數位化之後的你和我。
不同 App 可能通過某些唯一標識符對你進行強制跟蹤,廣告平臺則會通過這個唯一標識符對你進行用戶畫像描繪,進而共享給相關 App 及其後臺,一旦「你」打開了其中的某個 App,那麼你就會被識別到——你點了什麼、看過什麼、可能需要什麼,它們比你自己都清楚。
而在智能設備的 ID 體系中存在許許多多不同種類的標識符,下面是一小部分 Android 設備內的 ID,它們可能會用於不同方面的跟蹤或標識:
IMEI
IMEI 應該是大家最熟悉的一種 ID了,它是手機的身份證,也是運營商識別入網設備信息的代碼,是一種不可重置的永久標識符,作用域為設備。
在廣告跟蹤方面,由於 iOS 的權限管控,iOS 上的第三方 App 並不能通過 IMEI 跟蹤用戶,但目前 Android 平臺中絕大部分 App都通過 IMEI 來追蹤用戶,開篇所舉的例子在 Android 平臺上大多也通過 IMEI 跟蹤來實現。
與 IMEI 類似的還有一個叫做 IMSI 的標識符,但它主要用於 SIM 卡的身份標識,這裡不做展開。
Android ID
顧名思義,Android ID 是 Android 設備裡不依賴於硬體的一種「半永久標識符」,在系統生命周期內不會改變,但系統重置或刷機後會發生變化,其作用域為一組有關聯的應用。
Android 開發者文檔和谷歌開發者中文博客對 Android 8.0 後的隱私性和 SSAID 變化做出了說明:
Android 開發者文檔中對 Android 8.0 隱私性變化的說明:
從圖中不難看出,在 Android 8.0 以後,籤名不同的 App 所獲取的 Android ID是不一樣的,但同一個開發者可以根據自己的數字籤名,將所開發的不同 App 進行關聯。
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 也逐漸被邊緣化甚至被廢棄。
UUID、GUID
UUID 也叫做實例 ID,這兩個 ID 可以說是在計算機體系內的通用標識符。
根據所面向對象的不同,其意義也有微小差別。如果說前面三個 ID 可以用來識別設備,那麼這兩個 ID 在 Android 系統中的作用主要是識別 App 進程、元素或數據。
因為它們的作用域僅僅是單個應用內,如果用戶卸載了該 App 並重新安裝,那麼 UUID 也會發生變化。不過 App 開發者可以通過存儲 UUID 或與其他 ID、用戶信息進行組合、綁定、計算等方式,實現 UUID 標識符的「準永久化」。
根據 Android 開發者指南:
標識運行在設備上的應用實例最簡單明了的方法就是使用實例 ID,在大多數非廣告用例中,這是建議的解決方案。只有進行了針對性配置的應用實例才能訪問該標識符,並且標識符重置起來容易,因為它只存在於應用的安裝期。
因此,與無法重置的設備級硬體 ID 相比,實例 ID 具有更好的隱私權屬性。
AAID
AAID 與 IDFA 作用相同——IDFA 是 iOS 平臺內的廣告跟蹤 ID,AAID 則用於 Android 平臺。
它們都是一種非永久、可重置的標識符,專門提供給 App 以進行廣告行為,用戶隨時可以重置該類 ID,或通過系統設置關閉個性化廣告跟蹤。但 AAID 依託於 Google 服務框架,因此如果手機沒有內置該框架、或框架不完整、或無法連接到相關服務,這些情況都有可能導致 AAID 不可用。
除了以上這些 ID 標識符以外,某些硬體 ID也可能會被用於追蹤。
國內 Android 的廣告追蹤之道
這麼多 ID 標識符,每一個都各司其職。而理論上來說,只有 AAID 和 IDFA 是真正用於廣告行為的。
但現實狀況顯然不是這樣。
一方面,Android 平臺的不少 App 普遍存在違反 Android 開發規範、繞過 Google Play 審查,通過濫用 ID 來追蹤用戶,以此達到為廣告流量、營銷分析等商業利益服務的目的。
另一方面,由於 AAID 依託於 Google 服務框架,但在國內使用 Google 服務並不太可行,或者大部分國行手機內置的 Google 服務不完整,App 開發者需要尋找另一個方式去標識用戶。
UDID、GUID 作用域太小,不適合廣告跟蹤;Android ID 可以通過某些方式被改變或因為 bug 導致不可用,第三方 App 無保證可用性;MAC 地址雖然精準,但在Android 6.0到 Android 9中,系統限制了第三方 API 獲取MAC 地址;再加上早些時候,大部分「非玩機用戶」對此類功能並沒有太多概念,第三方 App 為了能以更加精準持久的方式來跟蹤用戶,將 IMEI 變成了用於廣告跟蹤的首選 ID。
Google Play 幫助文檔中的相關說明
這也是我們看到很多 App 提示必須獲取「電話」權限才能運行的原因——因為獲取 IMEI 必須獲得「電話」權限,可是由此也帶來了一些隱私問題:允許「電話」權限可能導致 App 讀取到很多種其他信息,就像我需要你給我身份證來查詢身份證號,但與此同時你的姓名、住址、生日也暴露給我了。
我們可以在 這個網站 查詢到部分 App 所需要的權限、資源以及它可能會發送的隱私信息。例如微信,在網站中收錄的 6.7.3 版本中,微信獲取了如下權限,但並沒有檢測到發送以下隱私數據。
微信 6.7.3 版本所需的權限
微信 6.7.3 版本並沒有發送以上隱私信息(灰色虛線框標識未檢測到)
隨著時代發展,用戶逐漸認識到手機 App 瘋狂獲取權限的行為有可能會侵犯隱私,加之近幾年 Android 系統的權限和隱私管理逐漸收緊,Android 10終於對第三方 App 獲取不可重置永久設備標識符的行為做出了 限制。
具體到用戶層面,在 Android 10 之後應用即便能夠獲取到「電話」權限,系統返回給應用的 IMEI 信息值也為空。
Android 10 中應用無法獲取 IMEI 信息
OAID:Android 10 之後的替代方案
至此,國內 App 和廣告跟蹤服務急需一種替代方案以避免廣告流量的損失,OAID 順勢而生。
Android 開發者文檔中對 Android 10 限制設備標識符讀取的說明
Android 開發者文檔中對 Android 10 限制設備標識符讀取的說明 OAID 的本質其實是一種在國行系統內使用的、應對 Android 10 限制讀取 IMEI 的、「拯救」國內移動廣告的廣告跟蹤標識符,其背後是 移動安全聯盟。
該聯盟由中國信息通信研究院擔任理事長和秘書長單位,北京大學、vivo、360、華為擔任副理事長單位,並有包括蘋果、中興、OPPO、小米等多家理事和會員單位,OAID 所屬的標識符體系也是由該聯盟牽頭髮起的。
補充設備標識體系圖示
根據聯盟官網以及開發文檔,這個「本土化」標識符體系除了 OAID,還包含 UDID、VAID 和 AAID 一共四種標識符。
我知道你在想什麼,不過這裡的 UDID 和 AAID 與上一節所說的完全不同。你可以通過下圖來了解「移動智能終端補充設備標識體系」所規定的四種標識符以及獲取它們的接口開發方式。另外,你也可以在 MSA 官網或會員單位的開發者網站下載 SDK 開發說明。
補充設備標識體系
補充設備標識體系獲取接口
從這四種標識符的描述和功能我們大致可以確定,「移動智能終端補充設備標識體系」所規定的 UDID、OAID、VAID、AAID 在 Android 系統中分別對應了 Device ID(、AAID、SSAID、UUID。
在理想狀態下,引入 OAID 即能保證廣告平臺的正常運作,也能減小對用戶帶來的影響,因為第三方 App 無需請求權限即可使用 OAID 完成廣告行為,而該過程匿名,用戶也可以隨時重置 OAID。
從廣告服務商 Adjust 於 2019 年12 月 20 日發布的 新聞稿 中我們也可以獲知,Adjust 已經接入了 OAID 廣告標識符,能夠對中國大陸的廣告主提供廣告相關服務;國內廣告數據服務商神策數據在其 幫助文檔 中同樣提供了 OAID 匹配指南;華為則在其 開發者平臺 提供了基於 OAID 的「HUAWEI Ads OAID」廣告平臺接入指南。
神策數據在幫助文檔中對 OAID 的簡要介紹
事實上,主流手機廠商都已經在其開發者平臺上提供了 Android 10 適配指引,包括 三星中國開發者網站、華為開發者聯盟、OPPO 開放平臺、vivo 開放平臺 都已針對 Android 10 的相關變化做出了說明和解決方案建議,其中就包括 Google 官方標識符適配建議和 OAID 適配方式。
OPPO 開放平臺引用 Android 開發者文檔作為推薦適配方案之一
三星中國開發者網站中引用 MSA 說明文檔作為推薦方案之一
另外 OPPO 和 vivo 也分別在其開放平臺提供了「移動智能終端補充設備標識體系」相關文檔和 SDK 下載。
不難看出,廣告平臺已經開始接入 OAID 作為國內廣告標識符的建議方案,主流設備廠家也已經開始指導開發者採用「移動智能終端補充設備標識體系」,並且考慮到國內主流的應用預置和分發平臺與 Google Play 一樣開始對上架 App 的 API 等級做出強制要求,包括 OAID 在內的標識符體系毫無疑問將成為國內第三方 App 的強制執行標準。
小結
最後,從用戶的角度出發,我們又該如何看待 OAID 呢?
Android 一直在安全和隱私方面做出努力,也正是因為 Android 10 大刀闊斧地動作,讓 IMEI 等唯一標識符不再被濫用,但放眼國內市場,在 Google 服務依舊無法正常使用的環境下,出臺本土化的體系標準來兼顧用戶隱私安全和廣告渠道利益其實可以說是一種進步,與之類似的舉措還包括「互傳聯盟」「統一推送」等等。
不過即便該體系在當前環境下不失為一種最優解決方案,但長久以來國內 Android 生態真正需要的除了這種強制性標準,還有手機廠商和 App 開發者在源頭上的自我管理。