- 原文地址:Hardware and the web: the balance between usefulness, security and privacy
- 原文作者:Niels Leenheer
- 译文出自:掘金翻译计划
原文链接:https://nielsleenheer.com/articles/2021/hardware-and-the-web-the-balance-between-usefulness-security-and-privacy/
大约一年前, 苹果发布了一份网络API的名单 由于隐私和安全问题,他们不会在Safari实施。他们担心这些 API 将允许对用户进行指纹识别和跟踪。当然,这是一个很大的隐私不。听起来很合理, 对吧?
但是名单上到底有什么样的 API 呢?嗯, 除其他外, 硬件 Api 在过去几年中一直在铬和边缘航运: 网络布卢托斯, 网络海德, 网络米迪, 网络网, 网络服务, 当然还有 Webusb 。那些听起来真的很危险,对吧?
我确实理解在允许这类功能上上网时有些犹豫。它们很强大,似乎有潜在危险。没有人希望一些随机的网站来控制你家里的设备, 提供恶意软件, 监视你或更糟。我理解这种犹豫。
但是我们应该看看实际的危险, 并正确地考虑它们, 不要听一些直觉的反应或基于我们的意见, 我们曾经看到的黑镜情节...
现实情况是,网络平台提供的每一个功能:有用性、安全性和隐私性之间有一个平衡。这些 API 绝对有用。更重要的是,它们也相对安全。我认为添加这些功能甚至会提高安全性。
与任何具有安全或隐私含义的 API 一样,未经用户许可,网站不得使用它。网站必须请求使用网络摄像头的权限,同样,网站也必须请求使用蓝牙设备或 USB 设备的许可。并且该权限不针对 API;它是使用此 API 使用特定设备。该网站不知道哪些设备有,不能得到他们的列表。它只能请求访问特定类型的设备的权限, 不管是否得到它。
用户总是处于控制之中, 他们的意图是允许访问特定设备。
安全 问题
因此,主要关心的不是技术问题,而是社会工程问题:让用户以某种方式做一些伤害他们的事情。
例如,在某些网站中插入恶意代码,警告用户存在虚假问题,并指示他们连接到某些设备并上传固件以破坏该代码或使用侧通道从该设备中提取有价值的信息。它总是涉及欺骗用户,因为正如我们所了解到的,用户必须手动选择设备,恶意代码才能访问设备。
我想说,这是不可能的,但不幸的是,这是一个问题。社会工程总是一个问题,并不局限于这些API的问题。
但是,尽管理论上有可能,它似乎不太可能被大规模滥用。
首先,您需要找到一个易受攻击的设备,例如,接受未由制造商签名的固件或代码的设备。大多数设备不会有这个问题,但它不是零。其次,您的目标用户需要拥有该特定设备。大多数用户不会拥有该特定设备。第三,您必须欺骗用户选择该设备。大多数用户可能会非常怀疑和拒绝。最后,因为要求访问设备是可疑的,并会立即提出一些危险信号,我不认为这样的攻击将持续更长的时间。
但是,当我们从足够多的用户组开始时,处于危险中的设备数量不会为零。
有一些简单的反措施浏览器制造商用于进一步降低这种风险。例如:阻止访问已知存在漏洞的特定设备,不允许访问所有类别有问题的设备,甚至在 API 被积极滥用时远程禁用 API。浏览器目前正在使用所有这些反措施。但风险仍不是零。
据我所知,远程杀机开关只使用过一次。这并不是因为 API 的设备被积极滥用,而是因为安全研究人员报告了漏洞。还是够用杀机开关的。
早在 2018 年,就可以使用 WebUSB 从 Yubico U2F 设备中提取密钥 绕过浏览器通常使用的源检查。据报道后,谷歌立即完全禁用WebUSB,并发布了一个更新,重新启用WebUSB,但把所有的Yubico设备放在一个块列表。
我认为,我们没有看到任何这样的攻击,原因是它更容易让用户下载一些本地应用程序,并运行,比它找到百万分之一的容易受骗的用户和易受攻击的设备的组合。简单地说,这是不值得的时间和精力。
不仅仅是谷歌认为这些API足够安全,可以推广给用户。微软和三星也是如此。事实上,这些 API 目前在全球约 70% 的移动浏览器和 78% 的桌面浏览器上发货,并且已经有一段时间了。
但我认为真正的安全考虑不是在有或没有这些功能的浏览器之间。
我们是否信任这个程序?我下载这个程序后扫描了一张纸上的QR代码,这是在一个通用的棕色纸板箱,当我买了一个灯泡阿里快车...
鉴于用户想要执行的特定任务,它是在使用浏览器或本地应用程序之间进行选择。选择是有限的 API 围绕沙盒环境中用户同意构建,以及无需任何隐私或安全检查即可随心所欲的本地应用之间。您是否愿意下载一些未知开发人员在应用商店中创建的阴暗应用程序,这些应用商店在后台对您的数据一无所知?
通过将设备 API 限制为本地应用,您强制人们使用本地应用程序执行此类任务。这对安全性没有好处。
浏览器最危险的功能不是设备 API 的:它是链接和下载本地应用程序的能力。
该功能正被积极滥用,从第一个浏览器落入公众手中的那一刻起,它就一直被滥用。时间已经证明,我们几乎无法降低风险。
隐私和指纹
指纹怎么样?是否可能使用这些新功能对用户进行指纹识别?
老实说,这没什么意义。使用指纹作为反对这些 API 的论据, 表明对这些 API 的实际工作方式缺乏了解。
指纹识别的目标是识别用户的独特性。您可以使用对较大用户群具有独特性的数据点来做到这一点。这些数据点中的每一个都无法识别单个数据点,但如果您有足够的这些数据点并将其组合在一起,则有可能跟踪用户。
这些数据点本身并不是隐私问题,可能是一件非常平凡的事情。甚至那些讽刺意味地应该改善隐私的东西, 比如 "不要跟踪" 的头。此头在默认情况下已关闭,因此这是跟踪用户的理想数据点。如果你有一个100万用户的池,每100个有一个已经打开。然后,如果您遇到此头,您已经查看了万分之一的用户,而不是百万分之一的用户。现在,将此与 30 个左右其他看起来无辜的数据点进行组合,您可以跟踪不同网站中的单个用户,这是用户跟踪的圣杯。
"不要跟踪"头实际上是在 Safari 中删除的,正是因为跟踪问题。这是理所当然的。
因此,问题是:这些 API 是否为用户组添加了唯一的数据点?
理论上:是的,API的存在可以是一个数据点。但在实践中:没有。以网状蓝牙为例:自第 56 版以来,它已在所有 Chrome 版本中提供。因此,它提供的唯一信息是浏览器版本是 56 还是更晚,还是更早的版本。我们已经可以通过查看使用字符串中的浏览器名称和版本编号直接获取该信息。因此,此数据点对于指纹识别非常无用。
指纹识别所寻找的是在不同机器上提供不同结果的 API。例如,人们在机器上安装的字体或 GL 扩展其图形卡支持。在运行完全相同版本的浏览器的设备上,这些版本可能有所不同。这些数据点为指纹添加额外的信息或熵。
但是这些设备 API 呢?它们是否提供任何可用于指纹识别的额外信息?那么,如果浏览器知道哪些 USB 设备连接到您的系统,哪些蓝牙设备在范围内,我会说'是的,绝对的'。但 API 的工作原理并非如此。这些 API 的设计考虑到了指纹,不能直接用于指纹识别。
再次以 WebBluetooth 作为其他硬件 API 的代表性示例。
让我们说清楚。您无法在附近获得设备列表。这不可能与 WebBluetooth, 也不可能与任何其他设备 API 的。这些信息不提供给网站。你不必担心网站会看到你的设备,并单独识别你,因为他们不能。
网站可以做的是告诉浏览器它想与什么样的设备进行交互。通常,您根据设备名称或设备提供的服务向 API 提供一组筛选器。然后,您请求浏览器允许连接到此类设备。
然后,浏览器弹出一个权限窗口,其中包含一个符合您提供的过滤器的设备列表。但是,该列表只对用户本身可见,而对网站上的任何运行脚本不可见。然后,用户可以访问单个设备,也可以完全拒绝访问。
该权限窗口已经确保不良行为人不会使用此进行指纹识别,因为他们希望这样做而不提醒用户。此外,由于它使数据不可靠,因此无法保证用户每次都会给予许可。也不允许访问同一设备。
设备 API 的简直不适合指纹识别。这是不可靠的,在使用时非常明显。
那 Safari呢?
对这些硬件 API 的安全性表示怀疑是完全合理的。就我个人而言,我认为风险相对较小且易于控制。但是,讨论甚至不同意是完全可以的。但指出指纹和跟踪只是意味着你被误导了。
所以,我不介意Safari不会实施这些功能。每个浏览器制造商都需要评估有用性、安全性和隐私之间的平衡,看看风险是否值得。苹果已经并认为它不值得。我不这样看,不过好吧。
我确实认为他们忽视了将用户推入本地应用程序的安全风险。当然,我理解为什么苹果不会这样看。
我所想的是这个选择的其他含义。由于 Safari 是唯一允许在 iOS 上使用的真实浏览器, 这意味着用户不能选择使用支持这些 API 的不同浏览器。这才是真正的问题。Safari 的选择不仅仅是影响 Safari 的选择,它还会影响非常重要的平台上的所有浏览器。这影响了我作为一个用户。