LWN:Android墙纸用作身份识别!

Linux News搬运工

共 2857字,需浏览 6分钟

 ·

2021-11-14 00:08

关注了就能看到更多这么棒的文章哦~

Android wallpaper fingerprints

By Jake Edge
October 26, 2021
DeepL assisted translation
https://lwn.net/Articles/873921/

如今的广告商之类的人,一直在追求的一个主要目标就是希望能唯一地识别出来某个用户,以便于在互联网上开展业务时能对其进行跟踪,这是一件很可悲的事。网络浏览器的 cookies 就是一个相当知名的追踪方式,可以在用户浏览各种网站时对其进行追踪,但移动应用程序并不是浏览器,所以没有这样一种机制。然而,事实证明还是有办法对安卓设备(可能还有其他移动平台的设备)进行 "特征识别(原文是 fingerprint 当动词用)",这样就可以在设备所有者切换各个应用程序之时对其进行追踪。

虽然 cookies 提供了一个简单的机制,也就是为每个特定的浏览器实例来分配一个独一无二的 ID,但人们也很容易针对 cookie 来实现避免被追踪的需求。由于 cookies 是存储在本地的,它们可以被删除,或者浏览器也可以限制使用它们的方式。除此之外,用户可以要求他们的浏览器要拒绝 cookies。也许正因为如此,浏览器特征识别(browser fingerprinting)技术应运而生。

浏览器特征识别最初是使用 JavaScript 来查询浏览器环境下的各种特征(如显示屏幕的尺寸、安装的插件和字体、本地化设置等),并将其与浏览器发送过来的 User-Agent 字符串等信息结合起得出一个通常可以标识唯一用户的 ID。随着浏览器制造商不断减少其所泄露出来的信息的数量和种类,追踪公司也开发了新的技术(例如 canvas fingerprinting)。电子前沿基金会(EFF,Electronic Frontier Foundation)的 Panopticlick 工具就展示了如何使用特征识别,该组织现有的 Cover Your Tracks 工具就可以展示出浏览器对特征识别的保护程度有多好。

在移动设备中现在就有许多特征识别技术是在浏览器中可以生效的,但如今用户经常使用应用程序来访问内容,而不是使用浏览器了。应用程序可以直接发送他们认为必要的信息来完成工作,不再需要依靠用户存储空间来保存 cookies。但安卓应用程序不能直接访问 JavaScript 和浏览器环境,安卓 API 对应用程序可以获得哪些环境信息也有一定的限制。它们也无法直接在手机上相互分享一个 ID 数字。所以需要一些其他技术。

[Wallpaper ID]

在最近的一篇博文中,FingerprintJS 的 Alexey Verkhovsky 详细介绍了一种利用安卓手机壁纸图像提取信息来识别设备特征的方法。直到安卓 8.1(2017 年 12 月发布)之前,应用程序都可以直接访问壁纸图像,谷歌在该版本中通过要求 READ_EXTERNAL_STORAGE 权限来收紧了普通应用程序使用 getDrawable()调用的能力。但与此同时,增加了一个新的 getWallpaperColors()调用,允许应用程序获得主屏幕或锁屏的壁纸图像所使用的三种主要颜色,而不需要任何特殊权限。2021 年 10 月发布的安卓 12 系统就会使用这些信息来为手机用户界面配置主题(theme)。

该博文探讨了如何将这些颜色值组合成一个设备特征 fingerprint,该特征值只在用户更换壁纸(估计是不会经常发生吧)时才会发生变化。Google Play 商店里有一个演示应用,右图是在我的手机上运行的屏幕截图。它指出,我的颜色组合在小规模的样本中是独一无二的,但我的壁纸也是每天更换的,所以生成 ID 的跟踪价值似乎相当低,那些使用安卓缺省提供的 "seascape" 壁纸的人也差不多没有什么跟踪价值。

该博文建议使用默认的壁纸,不换壁纸,可以用来针对这种信息泄漏问题进行防护。自定义壁纸或个人照片壁纸将会使手机更容易被识别。经常自动更换壁纸似乎也有助于让这个 ID 不会保持不变。不过如果应用程序开发者认为这个信息很重要的话,那么可以跟踪过去更换的这一批个人照片,就会在另一个层次上提供可识别性。

FingerprintJS 是一家专注于设备特征 fingerprint 的公司,用于防止银行、商业、游戏等领域的欺诈。它的大部分代码都在 GitHub 上,包括壁纸 ID 应用的源代码和一个用于对安卓进行特征识别的通用库。先前的一篇博文所提到的还有其他的一些设备识别机制,但其中内容要么已经被删除,要么可能随着时间的推移而消失。此外,这些 ID 可能并不会保持不变,或者可以伪造出来,这使得它们在防止欺诈方面不太理想。当然,那些用来检测未授权交易的 ID 也可用在其他方面,比如用来跟踪用户(user tracking)。

这个函数库有一个 "playground" app,安装之后就能进一步调查可以从手机中收集到哪些信息。可用信息的种类和数量确实令人大开眼界,比如已安装的应用程序和本地化选择等,所有这些都是应用程序可以直接访问到的,不需要获得任何额外权限。

壁纸 fingerprint 本身缺乏稳定性,这可能使它们不适合大多数使用情况,但是任何应用程序都能获得这个数据,这就引出了针对屏幕主题而提供信息所带来的一些意想不到的后果。正如之前的博文所指出的,设备的其他属性也可以被组合起来创建出可能是唯一的、稳定的 ID,甚至可能在设备的整个生命周期内都保持唯一不变。随着安卓系统减少对此类信息的访问,但还是无法做到完全不访问,谷歌可能不会删除所有这些信息,原因在 wallpaper blog 中已经明确介绍:

谷歌多年来一直没有限制这些信息的访问,而且也不太可能限制。说到底,这样做会影响安卓系统作为广告平台的功效。对于世界上最大的科技公司来说,平衡这些利益,保护用户隐私,这两者之间需要不断进行权衡。

除了浏览器之外,人们一定会希望在其他地方也能取得唯一 ID。防止欺诈当然是一个值得称赞的正面用法。但是,如果能够窥视用户的活动的话,那就是个负面用途了。而事实上从广告商到犯罪分子以及政府(包括两者之间的所有灰色地带)等实体来说,这个目标甚至是更重要的。这一切都提供了更多的证据表明,我们的手机就是隐私的噩梦,这可能是我们永远无法逃脱的东西。至少在标准的移动操作系统中是这样的。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~



浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报