重放攻击:加密货币领域的潜在威胁
分布式账本与硬分叉
比特币等加密货币作为一种全球性的分布式数字账本,存在于所有参与节点中。每个完整节点都保存着包含比特币历史所有交易的完整账本副本。比特币账本的透明性意味着所有交易的发送和接收地址以及转账金额都可以在公共账本上查看。
比特币账本在网络上作为一个通用账本存在,意味着所有副本完全相同。运行节点应用程序的软件是底层的比特币协议,它也作为所有网络节点的通用协议存在。
当加密货币协议发生硬分叉时,重放攻击就变得相关。本质上,协议被分叉到一个新的升级版本,新开发团队认为这是初始协议和账本的更好迭代。因此,协议和随后的账本之间会产生分裂,创建出由两个独立协议管理的两个账本。
重放攻击的概念
重放攻击利用硬分叉和分叉链上的代币复制。当诚实用户想要在一个链上花费资金而不想在另一个链上花费时,问题就出现了。例如,Alice想要在线花费1 BTC,但不想同时花费1 BCH。
当Alice从原有链上花费1 BTC时,重放攻击的机会就会出现。因为BTC交易附带的数字签名在BCH链上将是相同的,其他人可以复制Alice的签名并将其包含在BCH账本交易中。基本上,其他人可以在另一条链上花费你的资金。然而,要使重放攻击奏效,交易中使用的确切金额和地址需要相同,否则数字签名将无法工作。
示例与重放保护
重放保护的实施相当简单,此时应该成为常态,基本上是任何硬分叉链的必要条件。比特币现金通过实现一个独特的标记为其链创建了重放保护,这使得比特币现金节点能够将原有比特币链上花费的交易与比特币现金链区分开来。
通过在BCH链上使用特殊标记识别交易,原有比特币节点同样会将BCH交易视为无效。比特币/比特币现金分裂代表了一个在分裂前成功且有意地实施重放保护的硬分叉。
值得注意的是,曾经计划且极具争议的SegWit2X比特币硬分叉提案并未包含重放保护。相反,他们要求比特币核心团队如果他们认为这是一个问题就实施重放保护。显然,这对SegWit2X团队来说并不顺利,因为他们计划的硬分叉最终被取消,并且他们因不愿实施重放保护而受到广泛批评。
结论
重放攻击仅在分布式区块链系统中相关,当存在不提供重放保护或在分叉后实施滞后的硬分叉时。这个概念在提议的SegWit2X比特币硬分叉之前达到了主流沸点,因为他们公开宣布不会实施它。
如今,为硬分叉实施重放保护应该是新链保护用户的基本组成部分,否则他们将不会感到使用分叉网络的安全。是否会有高调的硬分叉继续2017年底所见的热情还有待观察,但如果它们继续,你可以确定重放攻击问题将再次变得高度相关。