重放攻击:网络安全的隐形威胁

8个月前
标签:重放攻击/区块链011602
文章来源: AICoin信息君

重放攻击(Replay Attack)又称重播攻击、回放攻击,是计算机世界黑客常用的攻击方式之一,最初指在互联网中,攻击者将拦截到的数据再次原封不动发送给接收方的情况,主要被用于身份认证过程,破坏认证的正确性。哪怕信息经过加密,攻击者仍然可以发起重放攻击达到恶意目的,例如窃取存款、窃取账号等。在区块链网络中,重放攻击也同样存在,但区块链上的重放攻击的定义不同于传统互联网,其表现形式也有相应差异。

在区块链技术中,重放攻击是指“一条链上的交易在另一条链上也往往是合法的”,通常出现在区块链硬分叉的时候。

因为硬分叉的两条链,它们的地址和私钥生产的算法相同,交易格式也完全相同,所以在其中一条链上的交易在另一条链上很可能是完全合法的。也就意味着,参与者在其中一条链上发起的交易,到另一条链上去重新广播可能也会得到确认。这就是“重放攻击”。

重放攻击典型案例就是以太坊硬分叉。当初以太坊进行硬分叉,生产 ETHETC 两条链,因两条链上的交易数据结构完全一样,所以一笔交易在 ETH 上被验证是有效的话,那它在 ETC 上同样会被接受,反之亦然。不过当时因分叉前没有事先做好预案,导致很多人利用这个漏洞,不断在交易所进行 ETH 充提操作,获取额外的 ETC。“重放攻击”也就此闻名于币圈。因此在硬分叉前,通常技术方都要做好重放保护,即发生在一条链上的交易,在另一条分叉链上重放就会失效。

防御区块链重放攻击的措施有以下几种:

1、加时间戳

时间戳保证区块链上的每个区块依次顺序相连,证明了区块链上什么时候发生了什么事情,且任何人无法篡改。引入时间戳后,可以通过将前一次请求的时间戳进行存储,在下一次请求时,将两次时间戳进行比对。如果此次请求的时间戳和上次的相同或小于上一次的时间戳,则判定此请求为过时或请求无效。因为正常情况下,第二次请求的时间肯定是比上一次的时间大的,不可能相等或小于。因此可以通过设置大小合适的时间间隔来防御重放攻击。时间间隔越大越能包容网络传输延时,越小则越能防止重放攻击。

2、加随机数

对特定信息给与一个特定的随机数,并且这个随机数保存在服务器内,在验证了用户信息前,首先会对随机数进行验证,如果发现提交的随机数和服务器保存的不同则,该条信息无效通过以此来防止重放攻击。

不过这种方法的有一定的限制,需要额外保存使用过的随机数,若记录的时间段较长,则保存和查询的开销较大。

3、加流水号

双方在分享信息时添加一个逐步递增的整数,只要接收到一个不连续的流水号,就认定有重放威胁。

不过,如今许多的分叉币在分叉时都会做好重放保护,基本上都能够避免分叉后遭到重放攻击的威胁。

免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

评论

暂时没有评论,赶紧抢沙发吧!