微信在後台瘋狂讀取用戶隱私?專家:是蘋果的鍋

來源: 21世紀經濟報道 2021-10-16 01:24:26 [] [博客] [舊帖] [給我悄悄話] 本文已被閱讀: 次 (10187 bytes)

來 源丨21 世紀經濟報道

作 者丨金融科技專家 張鯤

編 輯丨曹金良

圖 源丨視覺中國

《數據安全法》和《個人信息保護法》相繼落地前後,用戶隱私受到公眾更多關注。

最近大廠的 APP 又上了熱搜,起因是有用戶開啟了蘋果手機 iOS 15 的隱私新特性 " 記錄 App 活動 ",對所有 App 的隱私讀取行為進行 7 天的監控,並使用 App Privacy Insights 對記錄進行讀取。

有網友發現,微信在用戶未主動激活 App 的情況下,在後台數次讀取用戶相冊,每次讀取時間長達 1 分鍾。

無獨有偶,有博主發現,美團也在後台頻繁獲取定位信息。

對此,兩個巨頭的官方也給出了回應。

微信回應稱,iOS 係統為 App 開發者提供相冊更新通知標準能力,相冊發生內容更新時會通知到 App,提醒 App 可以提前做準備,App 的該準備行為會被記錄成讀取係統相冊。微信稱,當用戶授權微信可以讀取 " 係統相冊權限 " 的前提後,為便於用戶在微信聊天中按 "+" 時可以快速發圖,微信使用了該係統能力,使用戶發送圖片體驗更快速流暢。上述行為均僅在手機本地完成,最新版本中我們將取消對該係統能力的使用,優化快速發圖功能。

美團 App 一位技術工程師則在接受采訪時表示,之所以出現這種情況,是因為這類軟件在單方麵讀取係統操作日誌後,進行了選擇性展示,經測試,在相關權限開啟且 App 後台仍處於活躍狀態時,大部分主流 App 均會被該軟件檢測出頻繁讀取用戶信息,且監測結果高度相似。

該工程師還表示," 蘋果是為了優化用戶體驗,當用戶選擇了開啟權限,又沒有關閉該 App,蘋果係統會認為用戶可能隨時會使用 App 提供的服務,因此,會不斷地將信息變化反饋給 App,設計的邏輯是,用戶可能隨時要用你的服務了,你們做好準備 "。

到底是微信、美團在後台悄悄讀取相冊、定位,還是確實如以上官方回複所說,隻是 iOS 的機製導致?

先說結論:

本次事件其實是蘋果手機 ios 的係統升級後造成的烏龍,蘋果自己的接口,提示 App 相冊或定位發生了更新,讓 App 做好準備為用戶進行服務,而這個行為卻被 iOS 翻譯成了 " 讀取相冊或讀取定位 "。

從測試結果來看,至少證明微信和美團回應的是真實情況;

照片和聊天記錄一樣,存儲在本地,要上傳花費的代價太大,而且必然留下痕跡;

雖然定位數據比照片少很多,但是變化更加頻繁,要全量上傳花費的代價也不小。

" 記錄 App 活動 " 中的讀取相冊

究竟是指什麽?

我們先來驗證一下微信官方說的這個 " 相冊更新通知 " 能力是什麽。

根據蘋果 iOS 的官方文檔來看,對於這個能力有專門的一節介紹:

這個接口簡單來理解就是:

PHPhotoLibraryChangeObserver 協議能讓我們知道照片相冊庫中的改變。

Photos 會發送係統圖片改變的消息,我們可以遵守 PHPhotoLibraryChangeObserver 協議,並通過 PHPhotoLibrary 的 registerChangeObserver 方法將對象注冊為 " 觀察者 ",時時接收照片改變的消息。

所以,確實是蘋果 iOS 提供了這個相冊更新通知的能力,相冊發生內容更新的時候會通知到 App,讓 App 可以識別到改變的圖片,實現原來需要掃描整個相冊才能實現的功能。

關鍵在於,這個 " 觀察 - 通知 " 的行為在 iOS 15 裏,被識別或者說翻譯成了 " 讀取相冊 ",讓用戶理解成為 App 一直在掃描相冊。

也就是說,蘋果 iOS 15 的隱私新特性 " 記錄 App 活動 ",把 iOS 自己的接口行為記錄成了 " 讀取相冊 "。

拋開 iOS 自己的這個烏龍不說,微信為什麽會需要這個能力呢?

主要是為了實現這個功能:

剛截的圖,或者剛編輯好的圖片,進入微信對話框按 "+" 時,右下角會出現 " 你可能要發送的照片 ",這個功能挺好用,至少對我來說,80% 以上的發送圖片,不用進入相冊再選,直接通過這裏就可以發出去。

然而這樣一個簡單的小功能,要實現起來可不容易。

打個比方,我要知道相冊什麽時候變化,也就是說,你有一張新產生或者編輯的圖片需要發送,通常需要過一段時間就去掃描一遍相冊,並和上一個試點的相冊清單比較一下。

但這種方式,既要存儲上次的相冊信息,還要設置一個合理的掃描頻率,這個頻率設置多久一次才算好呢?

為了解決這類問題,軟件開發裏有一種設計模式叫做 " 觀察者模式 "。

舉個例子,我關了一群小白鼠在籠子裏,但是籠子不太牢靠,有可能會被咬壞,那我就得加固。我想知道哪個籠子壞了,難道要定期巡視一遍嗎,那得累死,覺也睡不成了。

" 觀察者模式 ",就是幫你雇傭一隻貓,由貓來監視(觀察)所有的籠子,當籠子被咬壞的時候,大叫一聲通知你。

我們回過頭來看 iOS 提供的這個 PHPhotoLibraryChangeObserver,名字就是 Observer,它就是一個觀察者,通過觀察相冊是否發生改變,來實時地通知 App。

有了這個接口,就可以很簡單的實現上述功能了。

微信、美團 App 侵犯用戶隱私了嗎?

有人會質疑,就算是使用了這個接口產生了這些相冊讀取記錄,也不能證明微信沒有趁著調用這個接口的時候,順便掃描用戶相冊?

先來說說微信做這個事情有沒有必要。

現在的攝像頭像素越來越高了,屏幕分別率也越來越高了,意味著手機相機拍照和截屏的圖片所占空間越來越大,再乘上數億的活躍用戶的量級,粗略估計,至少需要數十 PB 的存儲來幹這件事,還冒著違法侵犯用戶隱私被巨額罰款的風險,以及企業的聲譽風險,為了什麽?多分析一些圖片,賣點廣告?

其實要驗證也很簡單,要掃描相冊,有兩種做法實現,一是直接上傳,在雲端分析,這會產生巨大的流量;二是本地分析上傳,這會產生極大的耗電量。

我自己實驗了一下,拍了十幾張照片放進相冊,然後保持微信在前台。

吃了個飯,微信使用的流量和 CPU 使用時間都沒有明顯增加,我用了一上午微信,CPU 才用了 10 分鍾,基本都是發圖或者放視頻這些操作才會用到 CPU 渲染。

如果真的每分鍾都在讀取相冊,流量和 CPU 不會是這樣的測試結果。

如果還是不放心,或者擔心其他 APP 也會讀取隱私,也可以用同樣的方法進行測試。畢竟我們的相冊,信息量還是非常豐富的。

至於哪些 App 會掃相冊,大家可以按照上文中提到的方法實驗一下,以自行實驗的結果為準,獨立思考,獨立判斷。

同樣,在獲取定位方麵,iOS 也提供了類似的接口,如 startMonitoringSignificantLocationChanges ( ) ,機製也類似,當定位發生較大改變時通知 App。

通過以上分析,美團應該也是被類似的機製判定出了 " 頻繁讀取定位 " 的情況,在此不再贅述。

此外,iOS 版本的淘寶、QQ 等,也有類似讀取相冊或定位的情況。

總的來看,本次還是 iOS 15 的這個記錄 App 活動的新特性,把一些後台相對常規的交互機製識別為了讀取相關記錄。當然,是否有必要如此頻繁的讀取,是否可以采用更加低消耗的方式提供服務,如微信是否可以采取 " 在點 + 號時快速拉取最新一張圖片 " 等方式提供服務,是值得探討的問題。

隨著更多蘋果手機用戶更新至 IOS15 係統,可能會有更多用戶對 " 記錄 App 活動 " 這一功能的測試結果感到緊張,這其實大可不必,隻要了解清楚其中的原理,就能很大程度降低誤解的可能性。對於隱私保護的日益關注,是個好現象,但是我們也要避免矯枉過正,及時的回應、甄別事件的真相,才是行業可持續發展的方向。