要匿名上网,使用 Tor 浏览器是一个好的开始,但这还不够。关闭任何其他可能打开的浏览器也是一个好主意,因为这些浏览器可能会暴露您的漫游情况。一个安全研究人员小组刚刚发现可以通过使用简单的 JavaScript 代码观察计算机缓存的使用情况来监控用户的网页浏览。换句话说,只需打开一个托管此类恶意代码的网站,该导航选项卡就能够监视同一台计算机上运行的所有其他选项卡,无论它们是否属于同一浏览器。包括来自 Tor 浏览器的那些。
缓存访问时间测量
这怎么可能?研究人员开发的 JavaScript 代码在缓存级别分配内存空间,然后测量对该空间的访问时间。当用户加载网站时,缓存的组成会被修改,这会影响访问时间。事实证明,这种变化使得以高概率表征站点的身份成为可能。
为了进行这种攻击,研究人员首先收集了数千个不同站点的指纹。每个指纹都可以以图形方式表示为“内存图”,它显示对内存缓存的访问。痕迹越深,访问时间越长。我们注意到,不同网站的图形有很大不同。
这些数据被输入机器学习算法来创建探测器。然后在不同的计算机配置上进行了测试,包括系统级别(Linux、Windows、macOS)和浏览器(Firefox、Chrome、Safari、Tor)。结果:传统浏览器进行网站识别的成功率为 70% 至 90%。 Tor 上的利用率仅为 45% 到 60%,因为该浏览器限制了访问缓存的频率(每 100 毫秒访问一次,而其他浏览器至少为 2 毫秒访问一次)。
有些人会反对说指纹必然取决于底层缓存的类型,而攻击者不应该知道这一点。但研究人员还表明,可以开发 JavaScript 来预先检测这种硬件特征。
云计算的风险
这种攻击的优点是它绕过了浏览器级别当前存在的所有保护措施。即使每个页面进入不同的沙箱,它仍然有效。它还独立于网络流量。加密交换、通过多个代理传递它们或向它们注入噪音以伪装流量不会改变任何事情。探测器仍然可以正常工作。请注意,此攻击还会影响共享执行环境,例如云。只要物质基础相同就足够了。
那么我们可以考虑什么解决方案呢?研究人员建议两个:对缓存进行分区,将敏感活动与其他活动分开;或者将噪音引入缓存活动。无论哪种情况,都可能会影响计算机的性能。