+
95
-

回答

什么是哈希洪水攻击?

哈希洪水攻击(Hash-Flooding Attack)是一种拒绝服务攻击(Denial of Service),一旦后端接口存在合适的攻击面,攻击者就能轻松让整台服务器陷入瘫痪。

那么,所谓的“合适的攻击面”到底指什么呢?我们先来复习一下本科水平的数据结构知识吧。

在各种常用的数据结构里,有些数据结构的“平均运行时间”和“最差运行时间”会差很远,比如哈希表(Hash Table)。

假设我们想要连续插入 个元素到哈希表中:

如果这些元素的键(Key)极少出现相同哈希值,这项任务就只需 800_auto的时间。

如果这些键频繁出现相同的哈希值(频繁发生碰撞),这项任务就需要800_auto 的时间。

通俗地举一个例子

如果你还不明白哈希洪水攻击,我们可以通过一个简单的例子,进一步了解。

假设A在经营一家菜鸟驿站,那时候的菜鸟驿站,还没有快件管理系统,A只能自己制定策略管理快件。

A很快想到了一个办法,以客户手机号的尾数作为判断条件,对快件进行分类整理。比如手机尾号为75的的快递,就放在7号货架的第5层上。

由于经营有方,A的菜鸟驿站的生意越来越好。

然而,快递不配送到家,引起了顾客B的不满,A和B经常为此闹得十分不愉快。B决定狠狠报复一下。

经过一段时间的观察,B发现菜鸟驿站的快递分类方法的规律。于是B联合自己的小伙伴,去申请了大量以7x结尾的手机号,并利用这些手机号在网上进行刷单,产生大量的空包裹。

很快,7号货架被这些“恶意”快递占满,那些以7x结尾的正常客户取快递的时间越来越长,顾客满意度直线下降,A所经营的菜鸟驿站经常遭到投诉,生意越来越差。

最终,因为人手不够,无法及时处理这些快递,A的菜鸟驿站最终关门歇业。

以上就是哈希洪水攻击的过程。

哈希攻击洪水防御

防御哈希洪水攻击哈希洪水攻击实在过于简单粗暴,那有没有什么办法防御这类攻击呢?

有!

通过菜鸟驿站这个例子,我们很容易想到两种方法。

第一种是限制参数个数,每个货架上能放多少包裹都是固定的,只有老包裹被取走,新包裹才能放上去。

第二种是想一套策略,禁止不明用户提交数据,你这个包括掂起来空空的,有可能是刷单的包裹,对不起,不能放在货架上。

理论上这些方法都可以有效防止哈希洪水攻击,但没办法从根本上杜绝这类攻击。

有人想到了一种绝妙的方法,既然B很容易就能猜到A管理快递的规则,那么我们对规则进行加密,不就可以防止哈希洪水攻击的发生吗?

只要我们每建一个哈希表,就随机生成一个新的秘密参数。这样一来,即使相同的内容,放在不同的表里也会产生完全不同的内存分配。

这一过程,黑客无法预测,也就无法发动攻击。

设计更加安全的带密钥的哈希算法,使黑客难以绕过,发动攻击。


网友回复

我知道答案,我要回答