本文来自微信公众号:APPSO(ID:appsolution),作者:邱同,头图来自:视觉中国


我们越来越关注隐私了。


早在 2018 年,大家在使用弹出式摄像头的机型,发现打开某些 app 时,没有拍照却弹出了摄像头;到了 2020 年,MIUI 12 的“照明弹”功能,让几分钟获取上千次位置信息的 app 无处遁形。


▲MIUI 12 发布会.
▲MIUI 12 发布会.


而微信昨天上了热搜,也正是因为类似的情况:有用户开启了 iOS 15 的隐私新特性“记录 App 活动”,通过《隐私洞见(App Privacy Insights)》查看后发现,微信、淘宝等多款 app 在未使用的情况下,多次读取用户手机相册。


▲图片来自:微博@Hackl0us
▲图片来自:微博@Hackl0us


对此,微信官方给出了回应:


iOS 系统为 app 开发者提供相册更新通知标准能力,相册发生内容更新时会通知到 app,提醒 app 可以提前做准备,app 的该准备行为会被记录成读取系统相册。


也就是说, 微信在用户授权“系统相册权限”的前提下,为了方便用户在微信聊天时按下聊天框旁边的“+”时出现缩略图从而快速发图,微信使用了 iOS 系统的能力,让用户发送图片的体验更加快速流畅。这个操作都在手机本地完成。


▲也就是这个功能.
▲也就是这个功能.


那么问题来了,微信到底是大晚上在后台悄悄看用户的照片,还是像它说的那样,是因为 iOS 机制导致的呢?


微信真的在读取用户相册里的照片吗?


当然没有。


在知乎上,有博主举了一个非常容易理解的例子:他刚清理过的相册有 30MB 相册,按照这一大小乘以微信月活人数 12.5 亿,大概是 3.5PB,而实际用户的相册大小要远超这个数字。微信用至少数十 PB 的存储空间去做一件违反《数据安全法》、侵犯用户隐私被巨额罚款、公司声誉受损风险的事,这有什么意义呢?


微信为了实现在 iPhone 上“快捷发图”,利用了一个 iOS 的协议,即PHPhotoLibraryChangeObserver。这个功能让微信成为了相册的观察者,可以时时接收相册改变的消息。



也就是说,当你拍摄照片、截图、存储下载的图片后,iOS 就会将“用户存照片啦”这个信息告诉微信,而微信就会获得这个消息。不过,“微信获得用户存照片”这一消息,被“记录 App 活动”这一系统功能标记为“读取相册”。


那么,微信为什么会在并没有使用它的时间(也就是凌晨)获取消息呢?


我们用一个简单的例子说明,比如你晚上 11 点和女友互道晚安,然后自己玩手机时保存了几张搞笑图片——这时你虽然没有打开微信,但 iOS 系统依然把“用户存照片”这一信息发送给了微信。


等到你休息时(可能是凌晨 3 点)微信被 iOS 系统叫醒,在 CPU 空闲期间来获取了这一信息(这是一种名为 background fetch 的后台唤醒机制,app 无法控制唤醒时间,由系统确定)


这就相当于微信在苹果报社订阅了一份名为“用户更新照片”的报纸,苹果卖报员将报纸送到了微信家里,微信则在苹果安排的休息时间打开报纸看了一眼——只不过看报纸的时间是它自己无法确定的凌晨罢了。


▲拍照后保持微信前台,耗电量并没有明显增加,也就是说微信没有上传照片.
▲拍照后保持微信前台,耗电量并没有明显增加,也就是说微信没有上传照片.


那微信为什么要用这么一个容易引发争议的接口协议呢?


这也和 iOS 系统有关,在 Android 平台,点击“+”后,微信可以调用 Android 相册接口,直接扫描最新的照片,并且把它呈现出来。但如果在 iOS 系统用同样的方法,就会因为繁杂的相簿、目录以及和亲友共享的网络相簿等拖慢运行时间,所以只得通过PHPhotoLibraryChangeObserver这一接口,提前观察用户相册是否发生变化,实现提前准备。


微信的“快捷发图”功能,真的在本地实现么?


这个问题的答案也是肯定的,我们进行了一轮测试。


在最新的 iOS 15 中,app 获取照片的权限有三种,分别为“选中的照片”、“所有照片”以及“无”。我们便在手机开启飞行模式的状态下,对系统截图、相机拍摄以及微信 app 内截图三种使用场景,进行三种权限的测试。


开启“所有照片”


▲可以识别系统截图
▲可以识别系统截图


▲可以识别相机拍照.
▲可以识别相机拍照.


▲可以识别系统内截图.
▲可以识别系统内截图.


开启“选中的照片”


▲无法识别系统截图.
▲无法识别系统截图.


▲无法识别相机拍照.
▲无法识别相机拍照.


▲可以识别微信内截图.
▲可以识别微信内截图.


开启“无”


▲无法识别系统截图.
▲无法识别系统截图.


▲无法识别相机拍照.
▲无法识别相机拍照.


▲可以识别微信内截图.
▲可以识别微信内截图.


具体测试结果,我们也制作了一个表格进行展示:



据了解,如果微信在前台,微信 app 就可以利用应用内截图实现“快捷发图”的功能。所以,微信“快捷发图”的功能,确实是在本地完成的。而且如果不开启照片权限,也确实无法正常使用此功能。


关注隐私,但也不用太过紧张


今年二月份,工信部组织的 App 个人信息保护监管座谈会在北京召开,除了中国信息通信研究院、北京互联网法院、中国消费者协会等单位的专家学者,我们熟悉的百度、腾讯、阿里巴巴等 14 家企业的负责人也都参会研讨。


在会中,针对 App 过度索取麦克风、相册、通讯录等权限问题,工业和信息化部专题开展技术检测,对发现存在问题的 179 款 App 提出了责令限期整改,对其中未按期整改的 26 款 App 予以公开通报。


国家监管的加强、用户对隐私的关注、硬件厂商的跟进,我们手机里的 app 也越来越“听话”了,而微信、淘宝等常用 app,自然也不会在用户隐私上犯迷糊。


作为普通用户,我们只要通过正规渠道下载安装 app,在安装 app 时仔细确认联系人、相册、定位信息等的权限信息是否与 app 共享,就足够在保证 app 体验的同时,保护我们的隐私了。


本文来自微信公众号:APPSO(ID:appsolution),作者:邱同