Google Chrome浏览器使用bloom过滤器

时间:2013-08-26 15:40:48

标签: google-chrome data-structures web browser bloom-filter

我正在阅读有关Bloom Filters使用情况的维基百科文章。文章中提到,谷歌浏览器使用Bloom过滤器来检测输入的URL是否是恶意的。因为存在假阳性

  

Google Chrome网络浏览器使用Bloom过滤器来识别恶意网址。首先针对本地Bloom过滤器检查任何URL,并且仅在命中时,执行URL的全面检查

我猜全面检查意味着Google会存储恶意网址列表的严厉表格,并且如果表格中存在,则会对网址进行哈希检查。如果是这种情况,那么最好只使用哈希表而不是哈希表+布隆过滤器?

请开明我这个,是我的版本全面检查正确???

4 个答案:

答案 0 :(得分:2)

所有恶意网址的布隆过滤器足够小,可以保存在您的计算机上甚至内存中。因为你输入的几乎所有网站都不是恶意的,如果你不对它们做额外的请求会更好,那就是布隆过滤器的用武之地。 您可能感觉不到,但对于缓慢的互联网连接,它非常有用。

答案 1 :(得分:1)

布隆过滤器是一种概率数据结构,它告诉我们元素绝对不在集合中或可能在集合中。与Hashmap相比,Bloom过滤器占用的空间更少(取决于配置的哈希函数和错误率)。 Hashmap可以确定元素是否存在,而Bloomfilter只能确定性地检查元素是否不存在。

让我们看看Google Chrome用例。用户输入URL时,应验证URL是否安全。为了验证网址,chrome可以致电Google服务(Google内部可以维护任何数据结构来找出该错误)。但是,这种方法面临的挑战是多重的。对于在Chrome浏览器上服务的每个URL请求,URL验证都是通过Google Server进行的,这增加了对google服务器的依赖性,网络往返时间以及保持高可用性以验证所有URL的URL的要求。从世界各地的chrome浏览器触发的网址。

由于此数据不会经常更改(可能会在一小时左右更新),因此chrome可能会考虑将所有恶意网站数据捆绑为Bloom过滤器,而google可能会定期与客户端同步此数据(恶意网站是少于完整网站。)。当用户在Chrome中打开网址时,如果网址不存在,它将检查Bloom过滤器,这是安全的。如果存在,则Bloom Bloom筛选器对此不确定,因此流量将流向google服务器进行验证(与路由所有流量相比,该流量要少得多)。

答案 2 :(得分:0)

Bloom过滤器不仅比Web查询更小更快,而且还可以保护Google的恶意URL API免受巨大工作量的影响。

答案 3 :(得分:0)

根据我的理解,bloom过滤器可以在有限的空间内有效地存储数据。布隆过滤器的合约是它不会返回假阴性,但是根据布隆过滤器的矢量大小,它可能会返回一些误报。

为了确定误报,Google正在使用Hashing或将其发送到他们的服务器,通过消除将所有网址发送到服务器的负载来重新检查网址。