重放攻击又称回放攻击,在该种网络攻击的情况下恶意实体将会拦截有效数据,并将其在网络中重复传输。由于原始数据(通常来自已授权用户)的有效性,所以网络的安全协议通常会将此种攻击视为正常的数据传输。同时,由于进行重放攻击的黑客会将原始信息拦截并原样重传,所以黑客通常不需要对这些数据进行破解。
黑客可以使用重放攻击进行怎样的破坏?
重放攻击可以通过传输看似有效的凭证来访问其他存储在受保护网络中信息。它们还可以欺骗金融机构进行重复交易,并以此来允许攻击者直接从受害者账户中提取资金。某些情况下,黑客还会将不同的加密信息的不同部分进行组合,并将形成的密文上传至网络,而这就是所谓的剪贴攻击。黑客通常使用此种攻击来获取网络中更有价值的信息,并利用这些信息来进一步损害系统。
重放攻击的确会引起一些显而易见的风险,但仅使用它们的黑客可获得成果却很有限。攻击者无法篡改正在传输且未被网络拒绝的数据,所以此种攻击的有效性将被限制为重复传输之前的数据。而且这些攻击通常也是容易进行防御的。例如为数据传输添加时间戳这样的基本防御措施就可以避免简单的重放攻击。服务器还可以缓存重复的信息,并在一定次数后切断与此类消息的连接,从而限制了攻击者可以进行的连续重播次数。
为何重放攻击在加密货币领域至关重要?
尽管此类攻击并非加密货币世界所专有的,但它们与加密货币交易以及区块链账本的安全环境却尤为相关。因为,区块链账本通常要进行被称为“硬分叉”的协议更改或升级。当发生硬分叉时,现有的账本要分为两部分,一部分要运行软件的遗留版本,另一部则运行更新后的版本。一些硬分叉仅是为了账本升级,而有一些则是为了更有效的形成新的加密货币。后一种效用的最明显例子就是2017年8月1日发生的硬分叉,这次更新之后允许了比特币现金从比特币账本中分支出来。
当这些硬分叉发生时,攻击者理论上是可以是对区块链账本进行重放攻击的。在一条分类账上处理的交易可能在硬分叉后在另一条链上也是有效的。所以,在一条分类账上接受一定数量加密货币的人,可以再切换到另一条分类账上并复制交易,并以此欺诈的方式来第二次获得相同数量单位的加密货币。而因为钱包不并是账本共享历史的一部分,所以在硬分叉之后访问区块链的用户将不会受到此类攻击。
区块链如何防范此类攻击?
的确,已分叉区块链账本可能受到重放攻击的漏洞值得我们关注,但大多数硬分叉中都包含了专门用于防止此类攻击的安全协议。针对区块链重放攻击的有效措施分为两类,一为强制性重放保护,另一种是选择性重放保护。在强制性重放保护中,会在硬分叉产生的新账本上添加特殊的标记,来确保在新账本上进行的交易在旧账本上无效,而反过来也是如此。此种方式是当时比特币现金从比特币中分叉出来所实施的保护。
此强制性重放保护会在发生硬分叉时立即自动执行。而选择性重放保护则需要用户手动的更改他们的交易,以确保这些交易不能被重放。当硬分叉是为了对加密货币主账本进行更新而并非分离新账本时,选择性重放保护是有效措施。
除了这些主账本解决方案外,个人用户还可以自行采取措施来保护自己免受重放攻击侵害。其中一种方法是锁定正在传输的代币,直到账本具有了一定数量的区块,从而阻止了那些拥有相同代币数量的重放攻击的网络验证。但需要注意的是,并不是所有的钱包或者账本都提供了此种功能。
总结
当重放攻击成功实施时,的确会对网络安全造成威胁。不同于其他类型的攻击,重放攻击并不依赖于对数据的解密,而这就使得它们成为恶意参与者对抗日益健全的安全协议的有效“解决方案”。但同时也存在一些强有力的解决方案可以有效的防止区块链系统不受它们的影响。特别是强制性重放保护的使用,可以有效的防止在发生硬分叉后攻击者进行的交易复制。