《数据安全法》和《个人信息保护法》相继落地前后,用户隐私受到公众更多关注。甜梦文库

最近大厂的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活动”这一功能的测试结果感到紧张,这其实大可不必,只要了解清楚其中的原理,就能很大程度降低误解的可能性。对于隐私保护的日益关注,是个好现象,但是我们也要避免矫枉过正,及时的回应、甄别事件的真相,才是行业可持续发展的方向。甜梦文库

小伙伴们,对于手机APP读取用户隐私,你有怎样的看法?