什么是重放攻击(Replay Attacks),如何防范重放攻击?

 2023-09-17 23:17:28发布

重放攻击(Replay Attacks)又称回放攻击,在该种网络攻击的情况下恶意实体将会拦截有效数据,并将其在网络中重复传输。由于原始数据(通常来自已授权用户)的有效性,所以网络的安全协议通常会将此种攻击视为正常的数据传输。同时,进行重放攻击的黑客会将原始信息拦截并原样重传,因此黑客通常不需要对这些数据进行破解。

重放攻击

例如有一间蛋糕店A但是理念不同而分家成蛋糕店B和蛋糕店C,分家之后才能共同拥有之前客户数据与交易消息且用的系统还是一样的包含验证付款消息系统,接着因为各自经营客户与交易并彼此不会交换信息。

重放攻击

重放攻击图解

现在Alice拿到付款消息给蛋糕店B的顾客后,蛋糕店B的服务员用电脑确认消息后将蛋糕给Alice。得到之后Alice又拿相同的付款消息给蛋糕店C的顾客后,蛋糕店C的顾客服务员用电脑确认消息后又将蛋糕给Alice,Alice得到两个蛋糕。

如果蛋糕店B和蛋糕店C能够有确认付款消息,就不会发生重放漏洞,没有漏洞就没有被攻击的可能,这样就不会损失蛋糕了。

而在区块链上就是分叉之后,就可以做重放攻击,以Bitcoin (BTC)和Bitconnect (BCC)为例,BCC是从BTC中分叉出来的,但是两者在所有基本的功能上是一样的,只有BCC比BTC增加了区块大小。

这个时候Alice从B处购买了10BTC,Alice把这个交易消息替代了BTC的矿工,获取10BTC,但是Alice复制了交易消息替代了BCC的矿工,这样下一个矿工在验证签名之后放到BTC又放到BCC里,最后Alice就可以获得到10BTC也拥有10BCC。

以太坊重放攻击

重放攻击最好的案例就是以太坊硬分叉时,以太坊硬分叉出现了ETH和ETC配额数据,配额完全链上的交易结构是一样的,因此提示交易在ETH上是有效的,那它在ETC上同样会被接受,反之亦然。

因为当时所有人都认为ETC将不会再存在,所以分叉前没有人意识到取消链会产生相互重放的问题。有许多矿工继续在维持ETC链时,大家发现在ETH链上的交易得到ETC链继续重放仍然是有效的。

以太坊分叉时几乎所有交易所也都没有发现这个问题,这个时候只要有人从交易所提取ETH币,就可能得到同等数量的ETC币。

很多人利用这个漏洞,不断在交易所充币和币提(ETH),从而获得额外的ETC。

黑客如何利用重放攻击

重放攻击可以通过传输看似有效的凭证来访问其他存储在受保护网络中信息。它们还可以欺骗金融机构进行重复交易,并以此来允许攻击者直接从受害者账户中提取资金。

某些情况下,黑客还会将不同的加密信息的不同部分进行组合,并将形成的密文上传至网络,而这就是所谓的剪贴攻击。黑客通常使用此种攻击来获取网络中更有价值的信息,并利用这些信息来进一步损害系统。

重放攻击的确会引起一些显而易见的风险,但仅使用它们的黑客可获得成果却很有限。

攻击者无法篡改正在传输且未被网络拒绝的数据,所以此种攻击的有效性将被限制为重复传输之前的数据。而且这些攻击通常也是容易进行防御的。

例如为数据传输添加时间戳这样的基本防御措施就可以避免简单的重放攻击。服务器还可以缓存重复的信息,并在一定次数后切段与此类消息的连接,从而限制了攻击者可以进行的连续重播次数。

重放攻击在加密领域的重要性

尽管此类攻击并非加密货币世界所专有的,但它们与加密货币交易以及区块链账本的安全环境却尤为相关。

因为区块链账本通常要进行被称为“硬分叉”的协议更改或升级。当发生硬分叉时,现有的账本要分为两部分,一部分要运行软件的遗留版本,另一部则运行更新后的版本。

一些硬分叉仅是为了账本升级,而有一些则是为了更有效的形成新的加密货币。后一种效用的最明显例子就是2017年8月1日发生的硬分叉,这次更新之后允许了比特币现金从比特币账本中分支出来。

当这些硬分叉发生时,攻击者理论上是可以是对区块链账本进行重放攻击的。在一条分类账上处理的交易可能在硬分叉后在另一条链上也是有效的。

所以,在一条分类账上接受一定数量加密货币的人,可以在切换到另一条分类账上并复制交易,并以此欺诈的方式来第二次获得相同数量单位的加密货币。因为钱包不并是账本共享历史的一部分,所以在硬分叉之后访问区块链的用户将不会受到此类攻击。

区块链如何防范重放攻击

已分叉区块链账本可能受到重放攻击的漏洞值得我们关注,但大多数硬分叉中都包含了专门用于防止此类攻击的安全协议。

针对区块链重放攻击的有效措施分为两类,一为强制性重放保护,另一种是选择性重放保护。

强制性重放保护

在强制性重放保护中,会在硬分叉产生的新账本上添加特殊的标记,来确保在新账本上进行的交易在旧账本上无效,而反过来也是如此。此种方式是当时比特币现金从比特币中分叉出来所实施的保护。

此强制性重放保护会在发生硬分叉时立即自动执行。而选择性重放保护则需要用户手动的更改他们的交易,以确保这些交易不能被重放。

选择性重放保护

当硬分叉是为了对加密货币主账本进行更新而并非分离新账本时,选择性重放保护是有效措施。

除了这些主账本解决方案外,个人用户还可以自行采取措施来保护自己免受重放攻击侵害。其中一种方法是锁定正在传输的代币,直到账本具有了一定数量的区块,从而阻止了那些拥有相同代币数量的重放攻击的网络验证。

推荐阅读