Cardano 如何防范 DDoS 攻击

How Is Cardano Protected From DDoS Attacks? | Cardano Explorer (cexplorer.io)

DDoS 攻击是对在线服务的重大威胁。 攻击的主要目标是使服务不可用。 卡尔达诺可以被视为一种在线服务。 它提供了一个通过互联网执行智能合约、转移资金和其他功能的平台。 与任何在线服务一样,理论上它可能成为 DDoS 攻击的目标。 然而,由于其去中心化的性质和适当的安全措施,它比传统的集中式在线服务对此类攻击的抵御能力要强得多。 了解 Cardano 对 DDoS 攻击的抵抗力如何。

什么是 DDoS 攻击?
分布式拒绝服务 (DDoS) 攻击是一种恶意尝试,通过用大量互联网流量淹没网络、服务或服务器来破坏网络、服务或服务器的正常运行。 这也称为向网络发送垃圾邮件。 攻击者(或垃圾邮件发送者)尝试创建与用户正常流量相似的流量(例如交易)。 这意味着垃圾邮件交易与用户交易混合在一起。

在本文中,术语“垃圾邮件”用于表示攻击者的交易。 这不是垃圾邮件。

这些攻击利用多个受感染的计算机系统(僵尸网络)作为攻击流量源。 被利用的机器可以包括计算机和其他网络资源,例如物联网设备。 当受害者的服务器成为僵尸网络的目标时,每个僵尸程序都会向目标的 IP 地址发送大量请求,可能会导致服务器不堪重负,并导致对正常流量的拒绝服务。

服务器的大小通常适合一定的流量。 垃圾邮件流量将急剧增加。

因此,DDoS 攻击的主要目标是使服务(暂时)不可用。 这通常是通过耗尽目标服务器资源、强制其重新启动或使通信通道过载以隔离服务器来实现的。

垃圾邮件流量与常规流量一样消耗资源。 但是,服务器可能没有可用资源。

DDoS 攻击可能会导致在线服务严重中断。 在持续攻击期间,用户无法正常使用服务。 DDoS 攻击最明显的症状是站点或服务突然变得缓慢或不可用。 这可能会给企业带来重大的财务和声誉损失。

在当今的数字时代,防范 DDoS 攻击的需求至关重要。

防御 DDoS 攻击的主要机制包括:

速率限制:这涉及限制服务器在特定时间范围内从单个 IP 地址接受的请求数量。
异常检测:通过监控网络流量并分析其是否存在偏离正常的模式,可以识别潜在的 DDoS 攻击。
防火墙和路由器:可以将其配置为拒绝来自可疑 IP 地址或包含恶意内容的流量。
DDoS 缓解服务:这些服务可以帮助吸收 DDoS 攻击期间的大量请求,保护目标并使其保持在线。
入侵防御系统 (IPS):这些系统可以检测 DDoS 攻击和其他安全威胁,然后采取措施减轻威胁。
如果发生成功的 DDoS 攻击,通常可以在几个小时(几天)内避免,从而使服务再次可用。

Cardano 如何防范 DDoS 攻击?
对区块链的 DDoS 攻击的目标可能是减慢或完全停止交易处理和智能合约的执行。 从用户的角度来看,网络(即服务)将会拥塞或不可用。

与针对服务器的普通 DDoS 攻击类似,就卡尔达诺而言,攻击者可以尝试用交易(垃圾邮件交易)淹没网络。 攻击者希望达到一种状态,即网络主要仅处理垃圾邮件交易(这些交易将有效并支付费用),而以正常用户交易为代价。

请注意,攻击者愿意为交易付费(即在攻击中投入资金)。 节点将立即丢弃而不扩散无效交易。 尝试用无效交易淹没节点只会对网络产生很小的影响。 但是,攻击者可能会使节点崩溃。

Cardano 已实施多项措施来降低 DDoS 攻击的风险。 其中包括防止通过大量交易向网络发送垃圾邮件的交易费用、控制到达每个节点的数据速率的需求驱动协议,以及在转发交易之前检查交易的验证转发。 网络的去中心化(主要是节点数量)也是一个重要因素。

简单来说,Cardano 能够抵御 DDoS 攻击的原因如下:

去中心化
费用
在交易扩散之前对其进行验证
每个区块生产者节点都有一些中继节点(节点数量较多并保护,区块生产者节点)
能够检测垃圾邮件节点并与其断开连接
让我们解释一些基本的防御机制。

在 DDoS 攻击中,攻击者通常会利用大量互联网流量淹没单个目标。

卡尔达诺是一个由大量节点组成的分布式网络。 卡尔达诺不存在单点故障。 攻击者需要用垃圾邮件交易淹没大部分节点才能破坏网络。

因此,防范 DDoS 攻击的最佳方法是去中心化。 Cardano 大约有 3K 个矿池,每个矿池有 2-3 个中继节点。 池是隐藏在中继节点后面的块生产者节点。 攻击 Cardano 是一项挑战,因为需要攻击大约 10K 个节点。

质押池运营商 (SPO) 可以配置其节点以相互直接交互。 这意味着出块节点既可以连接到自己的(受信任的)中继节点,也可以连接到其他 SPO 运营的其他中继节点。 换句话说,SPO 决定与哪些对等节点进行通信。 网络配置可以随时更改。

如果节点连接到内存池中垃圾邮件交易数量异常的垃圾邮件节点,则操作员可以决定将自己的节点与垃圾邮件节点断开连接。 这可以通过具有预编程逻辑的脚本来完成。

攻击一个区块生产者节点基本上意味着攻击多个中继节点。 换句话说,区块生产者节点不是公开的(即,即使对于攻击者而言)可见的节点。

如果区块生产者节点与一个中继节点断开连接,它仍将保持与至少一个其他中继节点的连接。 此外,还可以连接到另一个(诚实的)中继节点。 这使得攻击者很难削弱节点的块生产功能。

在卡尔达诺中,区块和交易以 P2P 方式扩散。 新交易被插入到内存池中,内存池是一种等待室,它们等待被插入到下一个区块中。

每个节点管理自己的内存池。 当事务从特定位置的一个节点传播到网络中的其他节点时,网络中内存池的内容会发生变化。

现在想象一下分布式网络中的节点可以在其内存池中具有类似的交易(交易进入内存池的顺序可能不同)。 如果发起攻击,某些节点上内存池的内容可能会开始发生显着变化。 在一些内存池中,主要存在垃圾邮件交易。

老虎机领导者根据赌注大小随机选出。 老虎机领导者从他们的内存池中获取交易并铸造一个新区块。 攻击者事先并不知道下一个新区块将在网络中的哪个位置铸造。

另一个新块可能主要包含垃圾邮件交易或用户交易。 这取决于当选的插槽领导者将在哪个位置。

如果攻击仅发生在欧洲,欧洲节点将铸造包含垃圾邮件交易的区块,但包含更多用户交易的区块将在世界其他地区被开采。

对服务器和卡尔达诺节点的攻击有一定的细节。

攻击者无法简单地向选定节点广播许多交易(如正常的 DDoS 攻击)。 交易无法推送到节点。 节点从其对等节点拉取事务。 这一事实与矿池运营商决定连接哪些对等节点这一事实相结合,代表了一种强大的防御机制。

让我们回想一下,只有有效的交易才会在网络中传播。

当用户从钱包发送交易时,该交易始终由节点处理。 这不一定是块生产者节点(池)。 它很可能只是一个中继节点。 有效交易由节点插入内存池。 无效交易会立即被节点丢弃,并且不再扩散。

如果节点发送无效交易或重复发送相同交易,则与该(中继)节点的连接将被关闭。 在节点中继事务之前,会根据规则检查标头/内容。 这种机制有助于防止节点因大量交易而淹没网络。

如果攻击者想要向网络发送垃圾邮件,他必须首先填充自己节点上的内存池。 或者,它可以填充钱包所连接的节点的内存池。 从该节点,事务可能会扩散到其他节点。 如果它们有效,节点会将它们放入内存池中。

节点可以检测垃圾邮件节点并与其断开连接。 可以说,节点使用了类似于服务器的策略,即速率限制。 在卡尔达诺网络中,节点负责交易率。

卡尔达诺的协议是以需求驱动的方式设计的。 协议参数限制节点可以消耗的网络资源量。 对于每个节点和连接到该节点的每个对等点,该节点控制数据到达速率、最大并发数和输出量和定数据。

如果节点操作员更改协议参数以允许比协议参数定义的交易率更高的交易率,则网络将认为其是垃圾邮件发送者。 这可以防止对手发起资源消耗攻击。 如果对等点遵守协议,则其消耗节点资源的能力是有限的。 如果违反它们,它将被断开。 换句话说,对等节点断开与该垃圾邮件节点的连接。

因此,如果攻击者想要从一个位置向网络发送垃圾邮件,对等方将停止从中提取交易。 显然,去中心化网络无法从单一位置受到攻击。

我将描述的下一点至关重要。

需要同时攻击多个节点。 如果攻击者想要大幅减慢网络速度或造成更严重的问题,就必须同时攻击几乎所有节点。

节点从所有连接的对等点提取交易,因此它们将常规用户交易以及(有效)垃圾邮件交易插入到内存池中。 用户交易和垃圾邮件交易将开始相互争夺内存池中的位置(内存池比块大小大 2 倍)。 受攻击节点的内存池将包含垃圾邮件交易,但未受攻击的节点将包含用户交易。

根据谁成为下一个槽领导者,块中将会有更多的垃圾邮件交易或用户交易。

如果攻击者没有同时攻击所有节点,他就没有机会阻止用户交易进入网络中的众多内存池中的任何一个。

攻击者通过交易发送垃圾邮件的内存(内存池)不是一个内存池的大小,而是网络中所有内存池内存总和的大小。

Mem-pool 可以填充大约 11 个交易,每个交易的大小为 16K 字节。 发送一笔这样的交易至少需要花费 0.86 ADA。 填充内存池至少需要 10 ADA。

Cardano 由 10K 个节点组成,每个节点都有一个大小为 2 个区块的内存池。 一次性用唯一交易填充所有内存池需要创建 110K 交易。 攻击者将支付 95K ADA。

如果攻击者设法将垃圾邮件节点连接到网络中的所有(诚实)节点,并用垃圾邮件交易填充内存池,则用户交易将很难进入内存池。 我敢说,在实践中这是不现实的。

我再说一遍,110K 的交易是最大数量。 在实践中,如果攻击者用垃圾邮件交易填充了某些内存池,用户可能会观察到网络速度下降。 受到攻击的内存池越多,网络速度就越慢。

对于攻击者来说,仅向部分节点发送垃圾邮件并希望将垃圾邮件交易扩散到多个内存池可能更容易。 他可以逐渐地一遍又一遍地发送另一批垃圾邮件交易。

每次创建新块时,网络(所有节点)都会清除内存池。 正如已经提到的,每个内存池可以包含不同的交易。 重要的是,如果攻击者不生成新的垃圾邮件交易,内存池中的交易数量将逐渐减少。

节点不区分垃圾邮件交易和用户交易。 只要它们有效(包括已缴纳的费用),就应该进行处理。

因此,新区块中包含的交易会被节点从内存池中删除。 如果交易不是唯一的,则新块本质上会触发许多节点上内存池中交易的清理(单个完整块只会释放内存池大小的一半)。

因此,非唯一的垃圾邮件交易会降低攻击的效率。 有必要更频繁地用额外的垃圾邮件交易重新填充内存池。

为了让攻击者增加攻击的影响,他必须以某种方式安排他的交易在用户交易之前包含在内存池中(即,对它们进行优先级排序)。 然而,这根本不是一件容易的事。 例如,攻击者必须在地理位置上尽可能靠近他正在攻击的节点(由于网络延迟)。

运营商有能力响应攻击。

池操作员可以轻松检测到攻击,并且他们可以轻松清空内存池。 在这种情况下,它们将增加用户交易进入内存池的机会。 攻击者必须重新发送垃圾邮件交易。 然而,这只会导致网络断开与垃圾邮件节点的连接。 矿池运营商可以自主决定与垃圾邮件节点或垃圾邮件钱包断开连接。

对于网络来说,去除垃圾节点并仅由可信节点组成相对简单。

结论
为了使垃圾邮件攻击成功,攻击者需要立即平等地访问网络的所有内存池。 这在实践中很难实现。 我可以想象一个攻击者可能会减慢网络速度。 或者,它可能会尝试关闭用户经常使用的特定节点。

如果用户需要快速完成交易,那么网络速度减慢可能会令人烦恼,因为他们面临着清算头寸等风险。

过去,卡尔达诺网络曾多次面临巨大压力,要么是由于 NFT 的铸造,要么是测试其对 DDoS 攻击的抵抗力。 我听说的最大负载比网络容量高出 44 倍(负载约为一小时内 25 万个新交易)。 大多数用户甚至没有注意到速度下降。

如果对 Cardano 或其他区块链进行 DDoS 攻击很容易,那么我们每天都会看到这些攻击。 这并没有发生。 相信我,准备和实施这样的攻击绝非易事。