blockchain-council(CBSP)-6.漏洞与攻击
一、客户端的漏洞与攻击
网络钓鱼攻击 (Phishing Attacks)
- 网络钓鱼是一种网络攻击,它利用欺骗性通信(通常通过电子邮件、短信或电话)诱骗个人泄露敏感信息,例如密码、信用卡号,以及在区块链领域中,私有加密密钥。
- 网络钓鱼攻击通常伪装成来自受信任实体的紧急通信。攻击者冒充信誉良好的组织或个人,以建立信任和紧迫感,鼓励受害者泄露敏感信息或执行危及其数字安全的操作。
网络钓鱼攻击是如何运作的?
欺骗性通信 (Deceptive Communication)
- 攻击者发送看似来自可信来源的欺诈性通信。在区块链领域,这可能是一个流行的加密货币交易所、钱包提供商,或者来自看似信誉良好的区块链公司的ICO(首次代币发行)公告。
信任和紧迫感 (Trust and Urgency)
- 信息通常被精心设计以营造紧迫感。例如,来自冒充加密货币交易所的攻击者的电子邮件可能会警告用户帐户上的可疑活动,敦促立即采取行动以防止任何损失。
行动号召 (Call to Action)
- 欺骗性通信会将收件人引导至一个假网站,即合法网站的克隆网站,并指示用户输入他们的敏感信息,例如他们的用户名、密码或私钥。
数据盗窃 (Data Theft)
- 一旦受害者输入了请求的敏感信息,攻击者就会捕获它。
网络钓鱼攻击的示例
- 在一个真实的区块链相关示例中,用户收到一封看似来自知名加密货币交易所(如币安或Coinbase)的电子邮件。
- 该电子邮件可能会警告用户有关安全漏洞,并建议他们立即更改密码。电子邮件中的链接似乎指向交易所的网站。然而,该网站是攻击者设置的完美克隆网站。
- 当用户输入他们当前的登录详细信息以验证身份或更改密码时,攻击者会捕获这些凭据。然后,他们可以使用这些信息登录到真实的交易所网站,并将受害者的加密货币转移到他们自己的钱包中。
恶意软件攻击 (Malware Attacks)
- 恶意软件(恶意软件的简称)是指任何专门设计用于破坏、损坏或未经授权访问计算机系统的软件。
- 在区块链技术和加密货币的背景下,恶意软件攻击通常旨在窃取私钥、操纵钱包交易,或在未经用户同意的情况下使用系统资源进行加密货币挖矿。
恶意软件攻击是如何运作的?
感染 (Infection)
- 恶意软件攻击的第一步是将恶意软件放入用户的设备。这可以通过多种方式实现。用户可能会被诱骗下载并运行恶意软件,这些恶意软件通常伪装成合法软件或作为电子邮件附件发送。
执行 (Execution)
- 一旦安装在用户的设备上,恶意软件就会执行其恶意任务。这可能会因恶意软件的类型和目的而有很大差异。例如,它可能会开始监视用户的击键以窃取敏感信息(键盘记录器),替换存储在剪贴板中的钱包地址以重定向交易(剪贴板恶意软件),或使用设备的资源来挖掘加密货币(加密劫持)。
通信 (Communication)
- 大多数恶意软件都会与攻击者操作的命令和控制服务器进行通信。这允许恶意软件将窃取的信息发送回攻击者,接收更新或下载其他恶意软件。
持久性 (Persistence)
- 许多形式的恶意软件都会尝试维持对受感染系统的访问,即使在重新启动后也是如此。这可能涉及修改系统设置、禁用安全软件或利用漏洞。
恶意软件攻击的示例
- 一个与区块链相关的恶意软件攻击的例子涉及一种被称为“加密劫持者”的恶意软件。在这种情况下,用户的计算机可能会感染恶意软件,这些恶意软件使用他们的系统资源为攻击者挖掘加密货币。这可能是通过用户意外下载伪装成重要文档的恶意电子邮件附件或通过网站上的恶意广告发生的。
- 另一个例子是“剪贴板”恶意软件攻击。这种类型的恶意软件一旦安装在用户的设备上,就会监视剪贴板中的加密货币钱包地址。当它识别出一个钱包地址时,它会用攻击者控制的不同地址替换它。如果用户没有注意到更改并继续进行交易,资金将被发送到攻击者的钱包而不是预期的接收者。
钱包漏洞 (Wallet Vulnerabilities)
- 在区块链和加密货币的背景下,钱包是指允许用户发送、接收和存储其加密货币的数字工具。
- 钱包可以是用户计算机或智能手机上的一个软件、一个专用硬件设备,甚至是第三方网站提供的服务。
- 虽然它们提供了必要的功能,但如果钱包存在攻击者可以利用的漏洞,它们也会带来安全风险。
钱包漏洞是如何运作的?
漏洞发现 (Vulnerability Discovery)
- 攻击者需要识别钱包软件或硬件中的漏洞。这可能是钱包生成加密密钥的方式中的缺陷,允许攻击者绕过身份验证机制的错误,或者允许执行恶意代码的弱点。
漏洞利用 (Exploitation)
- 一旦发现漏洞,攻击者就可以利用它。这通常涉及开发一段软件或一种利用漏洞的方法。攻击者可能会使用此漏洞来窃取私钥、操纵交易或获得对钱包的其他未经授权的访问。
恶意活动 (Malicious Activity)
- 利用漏洞后,攻击者可以进行恶意活动。例如,他们可能会将受害者的加密货币转移到他们自己的钱包中,或者干扰传出的交易以重定向资金。
钱包漏洞示例 (Wallet Vulnerability Example)
- 加密货币世界中钱包漏洞的一个例子涉及某些钱包生成私钥的方式。
- 一个流行的区块链钱包由于在生成私钥时使用的随机性不足,导致生成的私钥种类有限。这意味着攻击者可以通过计算出所有可能的私钥来准备攻击,因为这些可能的私钥数量有限。这种情况下,攻击者可以提前计算出大量潜在的私钥,并检查这些私钥是否对应于现有的钱包地址。
- 攻击者监控区块链上的交易,寻找使用这些预先计算的私钥的钱包。当受害者将资金存入这些易受攻击的钱包时,攻击者已经知道钱包的私钥,因此可以立即使用这个私钥签署交易,将资金转移到攻击者控制的钱包中。这样,受害者的钱包里的资金就会被迅速转移走。
- 受害者经常感到困惑,想知道为什么他们新存入的资金会立即消失。
物理攻击 (Physical Attacks)
- 考虑物理攻击的可能性非常重要。这指的是任何涉及物理访问用于管理或使用区块链技术的设备或系统的攻击。
物理攻击是如何运作的?
目标识别 (Target Identification)
- 攻击者的第一步是识别目标。这可能是一个已知拥有大量加密货币的个人、一家从事区块链技术的企业,或一个托管区块链服务器的数据中心。
物理访问 (Physical Access)
- 一旦识别出目标,攻击者必须获得物理访问权限。这可能涉及闯入财产、盗窃设备,甚至对他人进行胁迫或暴力。
漏洞利用 (Exploitation)
- 通过物理访问设备或系统,攻击者可以尝试绕过任何现有的安全措施并访问敏感数据。这可能涉及直接从设备中提取数据、安装恶意软件,甚至用受损版本替换设备。
物理攻击示例 (Physical Attack Example)
- 在区块链领域中,2018年纽约发生了一起真实的物理攻击案例,一名男子被枪指着,被迫将一定数量的以太币(一种加密货币)转移到劫匪的数字钱包中。
- 在另一个例子中,加密货币所有者的硬件钱包(一种旨在安全存储加密货币的设备)可能会被盗。如果设备没有使用强密码或PIN码保护,攻击者可能会访问存储的加密货币并将其转移到自己的钱包中。
- 还发生过“邪恶女佣”攻击的案例,攻击者可以物理访问留在酒店房间或其他地方的无人看管的设备。然后,攻击者可以安装恶意软件或硬件键盘记录器来捕获敏感数据。
- 这些例子突显了在处理加密货币和其他基于区块链的资产时采取物理安全措施的重要性。
键盘记录攻击 (Keylogging Attacks)
- 键盘记录攻击是网络犯罪分子使用的一种方法,用于捕获用户在其设备上输入的敏感信息,例如用户名、密码、信用卡号,以及在区块链领域中,私钥和钱包密码。
键盘记录攻击是如何发生的?
感染 (Infection)
- 攻击者首先需要在用户的设备上安装键盘记录器软件。这可以通过诱骗用户下载和安装该软件来实现,这些软件通常伪装成合法工具,或者通过电子邮件附件。另一种方法是利用用户软件中的安全漏洞来安装键盘记录器。
数据捕获 (Data Capture)
- 安装后,键盘记录器开始记录设备上进行的每一次击键。这包括登录凭据、个人消息或任何其他键入的信息。一些复杂的键盘记录器还可能捕获屏幕截图、跟踪网络浏览活动或记录剪贴板内容。
数据传输 (Data Transmission)
- 然后,记录的数据被发送回攻击者,通常通过互联网连接。然后,攻击者可以筛选收集的数据以查找敏感信息。
键盘记录攻击的示例 (Example of a Keylogging Attack)
- 想象一下,一个用户在他的个人计算机上安装了一个软件钱包。他们收到一封带有附件的电子邮件,该附件看起来像一个重要的软件更新。用户下载并安装了更新,但他们不知道的是,该更新包含一个键盘记录器。
- 现在,每当用户键入任何内容时,键盘记录器都会记录它。这包括他们的软件钱包的密码,以及如果他们手动输入,还可能包括他们的私钥。然后,这些敏感信息被发送回攻击者,攻击者可以使用它来访问用户的钱包并转移他们的加密货币。
供应链攻击 (Supply Chain Attacks)
- 在区块链和加密货币的背景下,供应链攻击可能涉及在硬件钱包到达最终用户之前对其进行修改,或者破坏钱包应用程序使用的软件库。
供应链攻击是如何运作的?
目标识别 (Target Identification)
- 攻击者识别供应链中他们可以轻易破坏的产品或组件。这可能是硬件产品,例如硬件钱包,或者是软件库等数字资产。
破坏 (Compromise)
- 然后,攻击者找到一种篡改已识别目标的方法。对于硬件产品,这可能涉及拦截货物并修改产品。对于软件,这可能涉及破坏开发人员的帐户,以向广泛使用的库推送恶意更新。
漏洞利用 (Exploitation)
- 一旦被篡改的产品到达终端用户,植入的恶意组件就可以被激活以执行不良行为。这些行为可能包括窃取私钥或操控交易。
供应链攻击的示例 (Examples of Supply Chain Attacks)
- 示例:硬件钱包制造商 (Example: A hardware wallet manufacturer)
如果攻击者能够拦截钱包的制造或分发过程,他们可能会修改其固件以添加后门。当终端用户收到这个被篡改的钱包并用来存储加密货币时,攻击者可以利用这个后门窃取用户的私钥,最终盗取他们的资金。
- 示例:区块链应用中广泛使用的软件库被攻破 (Example: A compromise of a widely used software library in a blockchain application)
如果恶意行为者获得了该库的开发过程的访问权限,他们可以插入恶意代码。一旦该代码被更新并整合到最终应用中,就可能对终端用户造成重大损害。
供应链攻击的示例 (Examples of Supply Chain Attacks)
示例:硬件钱包制造商 (Example: A hardware wallet manufacturer)
- 如果攻击者能够拦截钱包的生产或分销过程,他们可能会更改其固件以添加后门。当最终用户收到这个被破坏的钱包并用它来存储他们的加密货币时,攻击者可以利用这个后门来窃取他们的私钥并最终窃取他们的资金。
示例:区块链应用程序中广泛使用的软件库遭到破坏 (Example: A compromise of a widely used software library in a blockchain application)
- 如果恶意行为者能够访问该库的开发过程,他们可以插入恶意代码,一旦更新并合并到最终应用程序中,可能会对最终用户造成重大危害。
二、共识机制漏洞与攻击
51% 攻击 (51% Attack)
- 在区块链的背景下,51% 攻击是指单个实体控制了网络一半以上挖矿算力的情况。
- 这是使用工作量证明 (PoW) 共识机制的区块链(例如比特币)中存在的潜在漏洞。
- 成功的51%攻击可能允许控制实体以各种方式操纵区块链。
51% 攻击是如何发生的? (How does a 51% Attack occur?)
算力累积 (Accumulation of Hash Power)
- 一个实体需要控制网络50%以上的总哈希算力。
创建分叉 (Creating a Fork)
- 接下来,他们可以开始私下挖掘一个与主区块链不同的单独链。由于他们拥有更多的计算资源,因此他们可以比网络其他部分向主链添加区块的速度更快地向他们的链添加区块。
- 在此期间,攻击者可以在主链上花费他们的代币,并且不在他们的私有链上记录这些交易。当他们的私有链变得比主链更长时,由于其长度,区块链协议会认为它是有效的链,并且它会替换主链。这有效地擦除了攻击者花费代币的交易,允许他们再次花费这些代币。
- 双重花费 (Double Spending)也叫双重支付攻击
51% 攻击示例 (51% Attack Example)
- 最著名的成功51% 攻击案例之一发生在2019年1月的以太坊经典 (ETC) 网络上。攻击者通过重组区块链并控制超过50%的网络总哈希率,成功实现了约110万美元的ETC双重花费。
- 防御51% 攻击可能具有挑战性,尤其是对于规模较小或不太受欢迎的区块链而言,因为它们相对缺乏矿工使得累积51% 的网络总哈希算力变得更容易。
无利害关系问题 (Nothing-at-Stake Problem)
- 无利害关系问题是使用权益证明 (PoS) 共识机制的区块链网络中可能出现的一个潜在问题。
- PoS系统鼓励验证者根据他们持有并愿意“质押”或锁定作为一种存款的代币数量来验证和创建区块。
无利害关系问题是如何发生的? (How does the Nothing-at-Stake Problem occur?)
分叉 (Forking)
- 在区块链网络中,当两个矿工几乎同时解决一个区块时,可能会自然发生分叉,或者攻击者可以故意创建分叉。在工作量证明(PoW) 系统中,矿工通常在最长的链上工作,因为解决区块需要大量的计算资源(因此需要大量的资金投入)。如果他们在较短的链上工作,而它没有成为最长的链,他们的工作就会白费。
在所有链上质押 (Staking on all chains)
- 然而,在权益证明 (PoS) 系统中,分叉后在两条链上验证区块不会花费验证者更多的成本。由于他们没有什么损失,而且可能会获得更多收益(因为无论哪个分叉成为主导链,他们都会收到奖励),因此当发生分叉时,验证者可能会选择在所有链上验证区块。
想象一下两种不同的记账方式:
工作量证明 (PoW):
就像一群矿工在比赛解谜题。谁先解开难题,谁就有权记录一页账本。
解谜题需要大量的电力和计算机,成本很高。
如果有人想篡改账本,他需要花费比其他所有矿工都多的成本才能成功。
权益证明 (PoS):
就像一群股东在投票决定哪一页账本是正确的。
谁拥有的股份(代币)越多,谁的投票权就越大。
验证账本不需要消耗大量电力,成本很低。
现在,让我们来看看“无利害关系问题”:
在PoW系统中,矿工们会选择在最长的链上工作,因为这样才能获得奖励。如果他们在较短的链上工作,他们的努力可能会白费。
在PoS系统中,验证者们可以同时在多条链上验证账本,而不需要付出很高的成本。
这意味着,如果发生分叉(即出现两条或多条不同的账本),验证者们可能会同时在所有分叉上验证,因为他们没有任何损失,而且可能会获得更多奖励。
这就导致了一个问题:验证者们没有动力去选择正确的链,因为他们可以在所有链上都获得奖励。
这样就会导致区块链的共识机制的瘫痪。
简单来说:
在PoW中,矿工们“有利害关系”,因为他们需要付出高昂的成本。
在PoS中,验证者们“没有利害关系”,因为他们不需要付出很高的成本。
为了解决这个问题,PoS系统通常会采取一些措施,例如:
惩罚在多个分叉上验证的验证者。
要求验证者锁定他们的代币一段时间。
无利害关系问题的示例 (Example of a Nothing-at-Stake Problem)
- 首先,请大家想象一下,一个使用权益证明(PoS)共识机制的区块链网络出现了分叉,分裂成了链A和链B。在这种情况下,验证者面临一个选择:他们可以选择在其中一个链上进行验证和质押,这样可以帮助更快地确定哪条链会成为主导链。
- 但是,有些验证者可能会选择在两条链上都进行质押。为什么呢?因为这样他们就不会错过任何一条链上的奖励。然而,这种行为可能会带来一些麻烦。比如说,可能会发生双重花费攻击。也就是说,恶意行为者可以在分叉期间在两条链上花费相同的代币。当分叉最终解决时,这就可能导致一条链上的交易被擦除。
- 那么,如何解决这个问题呢?已经有几种解决方案被提出,比如Slasher协议。这个协议的核心思想是,如果有验证者被发现同时在多个链上质押,他们就会受到惩罚,比如失去他们的质押金额。
长程攻击 (Long-Range Attacks)
- 长程攻击是使用权益证明 (PoS) 及其变体作为共识机制的区块链网络特有的一种漏洞。
- 这些攻击涉及恶意行为者从区块链历史中很久远的点创建一个分叉。
长程攻击是如何发生的? (How do Long-Range Attacks take place?)
历史密钥获取 (Historical Key Acquisition)
- 为了执行长程攻击,恶意行为者首先需要获取与过去拥有大量质押代币的旧的、不活跃的验证者相关的私钥。这可以通过从不再在网络中拥有质押的以前的验证者那里购买这些密钥来实现,因此他们可能不会像以前那样认真地保护他们的密钥。
创建分叉 (Creating a Fork)
- 一旦攻击者拥有足够多的旧验证者密钥,他们就可以使用这些密钥从区块链历史中很久远的点开始创建区块,使用这些密钥对区块进行签名,从而使它们具有有效性。
链替换 (Chain Replacement)
- 如果攻击者能够足够快地生成区块(在权益证明 (PoS) 系统中是可能的,因为它不需要像工作量证明 (PoW) 那样大量的计算能力),他们可能会创建一个与当前主链一样长或更长的链。
长程攻击的示例 (Example of a Long-Range Attack)
- 假设有一个攻击者设法购买了旧验证者的私钥,这些验证者在一年前的区块链历史中共同控制了超过一半的质押代币。攻击者从那个时间点开始生成区块,创建了一个分叉。他们的链生成速度足够快,可以赶上当前主链的长度。根据最长链规则,网络会切换到攻击者的链上,从而使主链上一整年的交易无效。
- 为了减轻长程攻击的风险,我们可以实施几种策略。比如,使用区块高度和总累积难度的组合来判断有效链,而不仅仅依赖链的长度。此外,可以实施一个“检查点”系统,将区块链在某些点的状态硬编码到客户端软件中,以防止超过该点的重组。
- 以太坊2.0就是一个例子,它通过一种称为“弱主观性”的机制来防止长程攻击。这种机制基本上要求用户在一定时间内至少检查一次区块链,以确保他们始终在正确的链版本上。
女巫攻击 (Sybil Attacks)
- 女巫攻击是一种点对点网络(例如区块链)中的安全威胁,其中单个行为者创建多个虚假身份,以获得对网络不成比例的影响或控制权。
女巫攻击是如何发生的? (How does a Sybil Attack take place?)
创建多个身份 (Creation of Multiple Identities)
- 攻击者在网络中创建多个虚假身份或节点。由于在许多点对点网络中,没有严格的流程来验证新节点,因此创建这些虚假身份可能相对简单。
获得影响力 (Gain Influence)
- 一旦设置了虚假身份,它们就可以开始以有利于攻击者的方式行事。这可能包括批准欺诈性交易、拒绝合法交易或操纵网络共识。
女巫攻击的示例
- 想象一下,有一个攻击者想要破坏一个区块链网络。他们在网络上创建了大量节点,每个节点都有一个独特的身份。这种做法可能使他们获得网络的大多数影响力,从而操控共识机制,甚至隔离某些节点。这种攻击方式有时被称为“日蚀攻击”。
- 在使用权益证明(PoS)共识机制的区块链中,如果没有最低质押要求或最低质押要求较低,攻击者可以创建多个质押节点,每个节点只需满足最低质押。这可能让他们对共识机制产生不成比例的影响,他们可以借此批准欺诈性交易或阻止合法交易。
减轻女巫攻击风险的策略
- 为了降低女巫攻击的风险,我们可以采用多种策略。
- 在区块链网络中,工作量证明(PoW)和权益证明(PoS)机制本身就提供了一定程度的防御。
- 在PoW系统中,攻击者需要控制大量的计算能力才能发起成功的女巫攻击,这将会非常昂贵,几乎不可行。
- 在PoS系统中,要求持有和质押大量加密货币也会带来成本,这可以有效地阻止女巫攻击。
三、矿池漏洞与攻击
区块扣留攻击 (Block Withholding Attack)
- 区块扣留 (BWH) 攻击是一种可用于区块链系统中破坏挖矿过程的策略,尤其是在矿池中。
- 这是一种独特的攻击类型,它利用了矿池的工作方式。
请看上图,图中显示了比特币网络中的两个矿池:矿池k和矿池i。
区块扣留攻击的核心在于,一个矿工(图中阴影部分的矿工)加入一个矿池,比如矿池k,但他们并不提交找到的完整区块,而是只提交部分工作证明。
这样做的目的是通过不提交完整区块来减少矿池k的收益,而同时这个矿工可能会在另一个矿池(这里是矿池i)中进行正常挖矿,以获取更多的奖励。
这种攻击会影响矿池k的整体效率和收益,因为矿池k的其他矿工会因为没有获得应得的区块奖励而受到损失。
区块扣留攻击是如何发生的? (How does a Block Withholding Attack take place?)
渗透 (Infiltration)
- 一个恶意矿工加入一个矿池。与寻求合作和分享奖励的典型矿工不同,这个矿工怀有恶意意图。
扣留区块 (Withholding Blocks)
- 当恶意矿工成功挖出一个区块(找到复杂数学问题的解决方案)时,他们会扣留解决方案,而不是与矿池分享。这意味着矿池无法获得该区块的奖励。
破坏 (Disruption)
- 恶意矿工继续提交不完整区块的份额,以保持信誉并从矿池获得已完成工作的奖励,但他们不会通过提交完整区块来为矿池的实际盈利潜力做出贡献。这种行为会破坏矿池的整体收益,并可能减少诚实矿工的奖励。
区块扣留攻击的示例 (Block Withholding Attack Example)
- 假设有一个恶意矿工加入了一个比特币矿池,并开始贡献计算能力(算力)来挖掘新区块。他们按照预期提交股份(部分工作证明),看起来像是矿池的合法贡献成员。
- 然而,当他们成功挖到一个区块时,他们并不与矿池分享这一信息,从而剥夺矿池获得区块奖励的机会。随着时间的推移,这种行为会导致矿池及其中诚实矿工的盈利能力下降。
- 虽然区块扣留攻击不会直接损害整个区块链网络,但它破坏了矿池内部的信任与合作。如果不加以遏制,可能导致矿池崩溃,从而降低网络的分布式特性,并增加51%攻击的可能性。
区块扣留攻击的缓解策略
- 缓解BWH攻击的策略可能比较复杂,因为矿池内部存在固有的信任,同时也很难区分网络错误和被扣留的区块。
- 潜在的解决方案可能包括改变奖励结构,以阻止这种行为,或者使用加密方法来确保矿工无法在不被检测的情况下扣留完整区块。
- 然而,这些解决方案通常会在效率、隐私或信任方面带来折衷。
通过这些策略,我们可以更好地保护矿池免受区块扣留攻击的影响,但同时也需要权衡不同方案带来的利弊。
自私挖矿攻击
- 自私挖矿攻击是一种策略,矿工团队在区块链网络上使用这种策略来破坏区块奖励分配的公平性。
- 这种攻击利用了比特币(及其他加密货币)协议中的一个漏洞,使得矿工可以在牺牲其他人的情况下增加自己的收入。
诚实区块(Honest Block):网络上正常挖掘的区块,由诚实的矿工发布并被其他矿工接受。
恶意区块(Malicious Block):由自私矿工挖掘并暂时保留的区块,而不是立即发布到网络上。
流程:
自私矿工在挖到一个区块后,并不立即将其发布到网络上,而是继续尝试挖下一个区块。
如果他们成功挖到第二个区块(如图中的连续恶意区块),他们就有可能在网络上形成一个比诚实矿工更长的链。
当他们决定发布这些恶意区块时,网络会根据最长链规则接受他们的链,从而使诚实矿工的工作无效。
自私挖矿攻击是如何发生的? (How does a Selfish Mining Attack take place?)
隔离挖矿 (Mining in Isolation)
- 一群矿工(通常称为矿池)开始隔离挖掘区块。当他们找到新区块时,他们不会将其广播到网络,而是将其保密。
建立领先优势 (Building a Lead)
- 自私的矿工继续在他们隔离发现的最后一个区块上进行挖掘,试图在公共区块链上工作的诚实矿工之上建立领先优势。
策略性地发布区块 (Releasing Blocks Strategically)
- 如果诚实的矿工找到一个区块并即将扩展公共链,自私的矿工会从他们的私有链向网络发布区块。由于在发生冲突时,网络默认选择最长的链,如果自私矿工的链更长,诚实矿工挖掘的区块将被丢弃。
索取更多奖励 (Claiming More Rewards)
- 这种策略允许自私的矿工索取不成比例的区块奖励,因为他们可能会使诚实矿工所做的工作无效。
自私挖矿攻击的示例 (Selfish Mining Attack Example)
- 假设有一个矿池拥有大量的哈希算力,比如占全网总哈希算力的30%。
- 这个矿池决定进行一次自私挖矿攻击。他们私下挖掘区块,并不将它们广播到网络。
- 假设他们在网络其他部分挖出一个区块之前,私下挖出了两个区块。
- 一旦诚实的矿工找到一个区块,矿池就会将他们的两个区块发布到网络。网络看到一条更长的链,就会采用它,而诚实矿工挖出的区块则会被丢弃。
有助于防范自私挖矿攻击的缓解方法 (Mitigation Methods to Help Against Selfish Mining Attacks)
- 缓解方法涉及更改区块链协议,以阻止这种行为。
- 一种可能的解决方案是修改协议,以便当在同一高度找到两个区块时,鼓励矿工在他们首先收到的区块上进行挖掘,而不是总是默认选择当前最长的链。这可以降低自私挖矿的盈利能力。
- 另一种解决方案是惩罚一次发布多个区块的矿工,因为这种行为表明了一种自私挖矿策略。
矿池跳跃 (Pool Hopping)
- 矿池跳跃是区块链网络中的一些矿工使用的一种策略,旨在以同一矿池中其他矿工为代价,最大化他们的个人收益。
- 它涉及矿工根据矿池支付系统和区块发现的时间在矿池之间切换。
矿池跳跃是如何发生的? (How does Pool Hopping take place?)
了解支付系统 (Understanding Payout Systems)
- 大多数矿池都使用一种系统,根据矿工的贡献在矿工之间公平地分配区块奖励。一些常见的支付系统是按份额支付 (PPS),其中矿工因他们贡献的每份工作份额而获得报酬,无论何时找到区块;以及按比例支付,其中矿工根据他们找到区块时向矿池贡献的份额数量获得报酬。
矿池之间跳跃 (Hopping Between Pools)
- 在矿池跳跃攻击中,矿工利用支付系统。例如,在按比例支付系统中,矿工可能会在找到一个区块后且在下一轮开始之前离开矿池(因为矿池立即找到下一个区块的可能性在统计上较小)。
矿池跳跃示例
- 假设有两个矿池,均使用比例支付系统。
- 一名矿工在矿池A开始挖矿。一旦矿池A找到一个区块,该矿工就切换到尚未找到区块的矿池B。这使得矿工能够在矿池B最可能发现区块的时间内存在,从而最大化他们的预期收益。在矿池B找到一个区块后,如果矿池A还没有找到区块,矿工可能会切换回矿池A,如此循环往复。
- 矿池跳跃破坏了矿池的公平性,因为它允许一些矿工通过利用支付系统来获得不成比例的更高奖励。
避免矿池跳跃的缓解方法 (Mitigation Methods to Avoid Pool Hopping)
- 为了缓解矿池跳跃,矿池可以使用不同的支付系统。
- 例如,按份额支付 (PPS) 系统可以免疫矿池跳跃,因为矿工因他们贡献的每份份额而获得报酬,无论何时找到区块。
- 另一种策略是使用惩罚矿池切换的支付系统,例如Slush系统。
集中化风险 (Centralization Risks)
- 区块链中的中心化风险是指网络中的决策权、计算资源甚至代币所有权集中在少数实体或个人手中的情况。
- 这违背了区块链技术去中心化的基本原则,该原则旨在将权力分配到整个网络,以避免单点故障并维护网络完整性。
中心化风险的类型 (Types of Centralization Risks)
挖矿集中化 (Mining Centralization)
- 在工作量证明 (PoW) 区块链网络中,持有网络大部分计算资源(哈希率)的矿工可能会影响网络的运作。如果单个实体或小团体获得超过网络总哈希率50%的算力,他们就可以发起51%攻击,操纵交易,并破坏网络的完整性。
共识机制集中化 (Consensus Mechanism Centralization)
- 在权益证明 (PoS) 网络中,风险来自代币集中化。拥有网络大部分代币的人更有可能创建下一个区块,这可能导致这些实体获得对网络的控制权。
交易所集中化 (Exchange Centralization)
- 持有大量特定代币的加密货币交易所也可能构成集中化风险。它们可能操纵价格、影响网络决策,或成为黑客攻击的目标。
开发集中化 (Development Centralization)
- 如果一小群开发者对区块链的代码库和未来发展拥有独占控制权,存在这些人可能恶意或无能地行事的风险,从而在系统中引入漏洞,或做出有利于他们自身而损害更广泛网络的决策。
地理集中化 (Geographic Centralization)
- 由于有利的法规、更低的能源成本或更好的基础设施,挖矿能力或节点分布也可能变得地理上集中化。这种集中化可能使网络容易受到监管措施或局部中断的影响。
集中化风险的例子
- 在加密货币领域,集中化风险的一个现实例子可以在比特币挖矿中看到。截至2021年9月,大量比特币的算力集中在中国。这种集中主要是由于中国获得廉价电力和丰富的挖矿硬件。
- 这种形式的集中化引发了对比特币网络的担忧。由于大量算力集中在一个地理区域,这使得网络容易受到中国政府关于加密货币决策的影响。
- 2021年中,中国对比特币挖矿和其他加密货币相关活动进行了打击,导致许多挖矿业务被关闭。
- 这次打击的影响是显著的。算力的突然减少导致网络算力下降,算力是用于挖掘和保护比特币网络的总计算能力的衡量标准。算力的下降反过来影响了网络的安全性和稳定性。
缓解区块链领域的集中化风险
- 为了缓解这些集中化风险,各种策略正在被研究和实施。
- 例如,以太坊向权益证明(PoS)共识机制的转变旨在减少挖矿集中化。
- 此外,去中心化交易所(DEXs)的持续发展可以帮助对抗交易所集中化。
- 然而,全面解决这些风险是一项复杂的任务,仍然是区块链领域的关键挑战之一。
四、网络漏洞和攻击
日蚀攻击
- 日蚀攻击是一种针对区块链网络中的节点的安全威胁。
- 在日蚀攻击中,攻击者操纵网络,使目标节点仅连接到由攻击者控制的恶意节点。
- 这种隔离使攻击者能够垄断目标节点发送和接收的所有信息。
日蚀攻击如何发生?
网络分析
- 攻击者研究网络以识别潜在目标——他们可以从网络其他部分隔离的节点。
创建恶意节点
- 攻击者在网络中设置若干恶意节点。这些节点将用于包围目标节点。
隔离目标
- 攻击者使用各种技术使目标节点与其诚实的对等节点断开连接,并重新连接到攻击者的恶意节点。在P2P网络中,这可以通过用攻击者节点的地址填充目标的对等表来实现。
控制信息
- 一旦目标节点被日蚀,攻击者控制目标接收和发送的所有信息。攻击者现在可以执行各种类型的攻击,如双重支付、自私挖矿或延迟目标的交易。
日蚀攻击的例子
- 例如,考虑一个比特币网络,其中一个节点被攻击者日蚀。
- 攻击者控制受害者的所有连接,可以扣留或操纵有关交易或区块的信息。
- 他们可以通过向受害者发送一笔交易来执行双重支付攻击,等待受害者提供服务或商品,然后将冲突的交易广播给网络的其他部分,从而基本上逆转之前的交易。
- 日蚀攻击对区块链网络构成严重威胁,特别是对参与挖矿和交易验证的节点。
防范日蚀攻击的措施
- 针对此类攻击的对策通常涉及设计点对点网络以抵御这些类型的操控。
- 例如,比特币核心软件已更新,包括对策,如限制节点可以与同一/16子网建立的出站连接数,并定期刷新对等节点,以避免被困在恶意环境中。
- 实施这些措施可以降低日蚀攻击成功的可能性,但不能完全排除这种可能性。
路由攻击 (Routing Attacks)
- 路由攻击是一种网络安全威胁,攻击者利用网络中的路由协议来拦截、延迟或阻止信息流。
- 在区块链的背景下,这意味着破坏新交易或区块的传播,可能导致双重花费或审查等有害后果。
区块链中的路由攻击:发生与类型
在区块链网络中,节点通过互联网相互通信,互联网使用路由协议系统来确定数据如何从一个节点发送到另一个节点。如果这些协议被操控,可能导致路由攻击。
以下是两种主要的路由攻击类型:
分区攻击
- 在这种攻击中,攻击者操控路由协议,将网络分割成不相连的子网络。这阻止了这些子网络之间的通信,扰乱了共识机制。
延迟攻击
- 在延迟攻击中,攻击者拦截并故意延迟某些交易或区块的传播。这可能导致一些节点在过时的信息上工作,增加双重支付攻击或自私挖矿攻击的可能性。
路由攻击的例子
- 考虑一个比特币网络,其中攻击者成功地将网络分割成两个独立的子网络。
- 现在,假设攻击者在一个子网络中发送一笔交易,将他们的一些比特币转给一个商家,并在另一个子网络中发送另一笔交易,将相同的比特币发送到不同的地址。
- 由于分区,这两个子网络无法相互通信,因此它们都会将各自的交易视为有效,并将其添加到各自版本的区块链中。
- 攻击者实际上两次使用了相同的比特币,实施了一次成功的双重支付攻击。
防范路由攻击的对策
- 作为防范路由攻击的对策,区块链网络必须设计为具有抵御此类操控的强大点对点协议。
- 此外,区块链网络中的节点可以被编程为不断检查其连接的健康状况和它们接收的信息,并与某些基准进行比较,以识别任何异常情况,这可能表明发生了路由攻击。
- 然而,由于这些攻击利用了互联网本身的基础设施,完全防止它们可能是一项复杂的任务。
分布式拒绝服务 (DDoS) 攻击 (Distributed Denial of Service (DDoS) Attacks)
- 分布式拒绝服务 (DDoS) 攻击是一种网络攻击,其中多个受损计算机被用来用流量淹没目标系统,导致其不堪重负,无法供用户使用。
- 在区块链的背景下,DDoS攻击可以针对特定节点甚至整个网络,破坏网络的运作,并可能导致经济损失或其他有害后果。
DDoS 攻击是如何发生的? (How does a DDoS Attack take place?)
构建僵尸网络 (Building a Botnet)
- 攻击者首先使用恶意软件感染多个设备,将它们变成“僵尸”。这些僵尸形成一个网络,称为“僵尸网络”,攻击者可以控制它。
目标识别 (Target Identification)
- 攻击者识别攻击的目标。这可能是区块链网络中的特定节点或一组节点。
发起攻击 (Launching the Attack)
- 攻击者指示其僵尸网络中的所有僵尸向目标发送大量请求。这可以是交易请求、连接请求或其他类型的网络流量的形式。
目标过载 (Overloading the Target)
- 大量涌入的请求使目标的资源(如处理能力和带宽)不堪重负,导致其速度变慢甚至完全关闭。这使其无法供合法用户使用。
DDoS 攻击的示例 (Example of a DDoS Attack)
- 想象一下一个在比特币网络中运营节点的加密货币交易所。
- 一个想要操纵比特币价格的攻击者可能会针对这个交易所发起DDoS攻击。
- 通过用流量淹没交易所的节点,攻击者可以使其变得不可用。
- 这可能会在用户中引起恐慌,可能导致比特币价格下跌。
- 攻击者预料到这一点,可以通过做空比特币获利。
DDoS 攻击的对策 (Countermeasures against DDoS Attack)
- 一些可能的对策包括使用DDoS保护服务、限制来自IP地址的连接数、优先连接到已知节点,以及针对某些操作实施CAPTCHA以确保它们是由人类而非机器人完成的。
- 然而,没有任何解决方案可以完全消除DDoS攻击的风险。