现在每台智能手机都配有各种传感器,在这里我们说说环境光传感器对隐私的影响,环境光传感器让设备能够检测我们周围环境中的光线亮度水平(现代传感器甚至能够测量绿色,红色和蓝色灯光的强度)。而环境光传感器的最简单的作用是根据环境调整屏幕的亮度。
时代进步的很快,现在每个Web浏览器都允许网站访问设备的环境光传感器,其读数以lux为单位提供。这主要是通过W3C环境光传感器API来达成的。网页设计师很好的把自己的想象力和创造力表现了出来。
目前在许多现代智能手机,平板电脑和笔记本电脑(如MacBook Pro)中的网络浏览器上都提供环境光线(Ambient Light)信息。环境光传感器在隐私的角度来看非常有趣,它提供了大量的信息,所以这里我们从隐私安全的角度来看看这些信息。
环境光传感器的使用很简单。使用以下代码,任何网站都可以访问它:
window.addEventListener('devicelight', function(event) { if(event.value<100) { // it's quite dark in here } else { //More light! } });
还有一种使用Generic Sensors API
的新方法:
let sensor = new AmbientLightSensor(); sensor.start(); sensor.onchange = function(event) { if(event.reading.illuminance<100) { // it's quite dark in here } else { //More light! } };
类似于接近传感器,它们使用的这种方式机制,在隐私分析方面只存在很小的区别。
环境光传感器只提供一个读数值:用户正面环境中的当前照度参数。
环境光传感器提供了许多有关用户的数据。光级别传达了关于用户的信息:用户的环境,用户的行为和生活方式。这几个重点,也给物联网和互联网带来了一些后果。
环境光传感器可能会产生不明显和意外的信息泄漏。值得注意的是,它可能允许映射一个建筑物的内部。这是可行的,只要:
(1)能够以足够的精度读取出环境光水平
(2)假设不同的房间亮度是不同的。
另外,也可以检测用户房屋或公寓的方向(例如:在早晨房屋很明亮,所以窗户向东面!)。
有许多可以被利用的地方,如网络广告提供商,追踪,分析脚本 – also law enforcement – 使用专门技术和各种用途的用户配置文件。用户及其行为的许多方面都可以考虑到。
如果可以映射用户的家庭布局,这些信息有可能发现其家庭的大小,数量或房间布局等。这样的信息与用户的财务状况相关,因此这可以导致定位用户的状态,即允许将他分配到一个特定的类别,如“ 这个用户有一个大房子,他是富有的 ”。它们完全可以根据这些信息来定位网页广告的内容。
每个不同的用户行为都不同,用户的行为模式可用于配置,检测,识别和跟踪它们。环境光(Ambient Light)级别可以传达的信息示例:
等等。
环境光传感器和其他设备的连接下提供了神奇的效果(想想物联网)。
考虑在网站上访问的环境光传感器具有足够精度的脚本。如果可以从另一个设备(计算机,智能手机,平板电脑或其他设备)读取类似的传感器来检查光传感器读数,它就可以提供这些设备驻留在位置上的参数(可能由同一用户使用),并将它们组合在一起。这可能导致跨设备链接产生意想不到的向量。
这可能有点牵强,但它是有趣的并且可行的。平方反比定律允许通过以下等式计算光检测器与发光物体之间的距离:d=sqrt(L / 4*pi*B)
其中L
(luminosity)对于光源大致恒定,并且从传感器获得B
(brightness)。因此,光水平可以传达有关设备运动的信息。
环境光传感器数据的详细读数可用于接收其他附近设备发出的消息。想象一下,一个设备用其以前已建立的方式与让屏幕或LED闪烁着,另一个读取它们。这尤其适用于互联网和物联网设备,毕竟设备的数量很大。
工程隐私技术方面的核心问题之一是标识符。但是,软件更新发展后暴露用户的系统功能和方式太多了。有时这只是由微小的,甚至是无害的数据片段形成的。但事实证明,当这些数据可以用作标识符时,这可能会引起有趣的后果。在电池API的隐私分析中,我遇到了类似的情况。事实证明,在某些系统上实现的环境光传感器受到类似问题的影响。
Android中的Firefox Mobile提供了一个很详细的照度读数。但它无法证明提供精确的照度浮点值。
在物理上和实践上,以下的lux照度值之间没有区别:
这意味着浏览器提供以下类型的数据(实际读数):
75.2131500244140625 lx 435.8228149414062500 lx 548.1655883789062500 lx 13 lx 14 lx 1 13.9376983642578125 lx 12.9482421875000000 lx
浏览器应该舍弃这些值,以减少被识别的可能性,并限制使用环境光传感器(Ambient Light)跟踪网络用户的风险。这可以在安全的环境下完成,而不会降低传感器数据的任何可用性。我已经填写了一个适当的Firefox 错误报告。
到今天为止,Firefox Mobile 在 Android已经收到了1百万到5百万的下载量。在这里提醒一下手机上有环境光传感器的用户,你可以在火狐浏览器的网址栏输入about:config来把device.sensors.enabled
设置为false
.
另外,我在Android上的Chromium浏览器的开发版本(54.0.2839.0)上也发现了相同的问题。我也向Chrome报告了这个问题。
另一个问题可能更深奥。照度的类型和质量取决于硬件设计和软件实现等因素。数据质量在软件和硬件之间可能不同。那些差异可以用于区分用户,或者辨认,识别指纹或者跟踪用户。
这是怎么实现的?例子:如果读出不同的频率,即用户设备(智能手机,笔记本电脑等)中环境光读数的最大和最小报告值会有所不同,并且分析它们这将导致一个明确的隐私风险。
如何简单地验证这一点?通过比较相同软件和硬件配置的多个设置。在类似的条件下,我放置了两台MacBook Pro,一台是2012年,另一台是2014年。两者的频率,电流,最大和最小检测照度值都十分有趣的不相同。这意味着照度是一个标识符。
考虑到这一点,设计系统非常困难,这具有挑战性和复杂性。
我的SensorsPrivacy项目展示了环境光传感器的使用。你可以通过访问此项目页面了解传感器读数如何响应环境变化而变化。它目前在Android下的Firefox Mobile和Mac Book Pro等现代笔记本电脑中都很出色。你还可以选择通过同意从设备提供传感器读数来帮助我们进行隐私研究。
由于各种原因,应保护环境光传感器的读数不被泄露。例如:
然而,即使环境光传感器受到许可,直接风险仍然与用户授予的任何网站相关。特别是因为网络的本质意味着站点中包含的所有脚本都可以访问传感器。因此,这还是需要在透明层上进行工作。
用户周围的照明条件传达了描述用户及其行为的丰富和敏感的数据。这些信息可能被劫持和滥用,这可能被用于对用户进行分类与定位,也可能对其进行区分。
这就是为什么Web标准和API被设计和考虑了隐私的原因。
因为这涉及到多个因素,在设计,创建和分析具有隐私性的产品是具有挑战性的和有趣的过程。
*作者:Lukasz Olejnik,