设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

免费CDN加速在浏览器中隐私和特性的矛盾

作者:cdnfine      来源:cdnfine      发布时间:2019-09-25

最近这几年来,浏览器厂商对隐私的注重越来越提升。一些小众浏览器以此为卖点,比如Brave。而随着Chrome一家独大的情况愈演愈烈,有被边缘化趋势的其他浏览器也都着重以隐私为差异化点。比如Safari。

既然以此为差异点,言下之意就是Chrome的隐私保护就比较差一点,那为什么Chrome就差一点?有一种攻讦认为Google是依赖互联网广告的,因此不愿意『过度隐私保护』来削弱第三方广告主的利益。

但是,『过度』隐私保护或许确实达不到目标,比如当初 DNT(Do not track)的纷争。IE10默认打开了DNT,而这是不符合DNT规范的,DNT的一项重要要求是,开启DNT必须是用户主动的选择,而对于广告商的约束也是基于这是用户的主动选择。IE10实际上为了彰显其『保护隐私』而破坏了DNT的基础,最终反而对保护隐私不力,因为广告商会因为DNT并非用户的主动选择而选择忽略之。当然,DNT只是浏览器发了个http头,但本身从来就没有被广告商真正广泛支持(包括微软自己),所以马后炮来看,也很难说IE10在DNT失败上到底要付多大责任,反正最终DNT被证明是一个失败的尝试,而DNT设置自身反而会被作为一种信息用于fingerprinting,因此今年2月,Safari 12.1主动移除了这项功能。

除了认为Google主动『不太重视』隐私保护,另一个点可能是Chrome的功能跑得太快,Chromium的contributor比其他浏览器多一个甚至两个数量级,每天代码变更太多,这当然是Chrome对其他浏览器的极大优势,但也导致根本来不及review所有变更是否对隐私和安全造成了新的影响。据说微软放弃EdgeHTML转投Chromium之后,会着重投入到改善Chromium的隐私能力上。

回来说Safari,Safari对于事关隐私的特性是非常注重,不惜牺牲开发者所需要的功能。比如高精度计时,按照标准可以有5微秒的精度,但Safari只提供了100微秒的精度,比标准差了20倍,就是为了提高时间差分攻击的难度。

我最近在TPAC上听一个Google的人说,Safari的目标号称是要把可以被用作fingerprinting的entropy控制在8个字节bits以内。这是一个非常难以达到的目标。

也因此,Safari做了一些可能比较激进的改动。比如不允许CSS中指定本地字体。因为这可以被用来探测用户安装了哪些字体,并可被用作fingerprinting。对于开发者来说,这意味着除了基本font-family比如serif/sans-serif之外,就只能使用web fonts了,但是对于CJK来说,web fonts的开销还是非常大的。

另一个事情是cache。传统上http cache是共享的,比如大家都用jQuery,就可以从同一个CDN上加载。但是这也存在被利用来探测用户的风险,因此需要被隔离。这意味着每个网站都需要单独加载比如说jQuery,即使之前另一个网站是从同一个CDN以完全一致的URL加载过。Safari已经是这样了,FF和Chrome也打算跟进。(参见 https://github.com/shivanigithub/http-cache-partitioning/ )

我们还需要注意,这两个事情是有叠加效果的,一方面我们被迫更多使用web fonts,另一方面web fonts也不能跨站共享缓存,结果就是要个性化字体的成本就变得更高了。

本质上,特性和隐私可能是存在矛盾的。比如SharedArrayBuffer也是一个可以被变相用来提供高精度计时的机制。一些对底层硬件能力的暴露也很容易被用来做fingerprinting(比如canvas 2D和3D)。我们要么完全禁用之,要么必须付出一定的性能代价来消除可被利用的entropy,不同的浏览器还可能采取不同的策略。这里也包括一些国内厂商,比如UC等为了一些(不太确定的)理由就阉割掉了WebAssembly能力。

Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速