重放攻击(Replay Attack)又称重播攻击、回放攻击,是计算机世界黑客常用的攻击方式之一,最初指在互联网中,攻击者将拦截到的数据再次原封不动发送给接收方的情况,主要被用于身份认证过程,破坏认证的正确性。哪怕信息经过加密,攻击者仍然可以发起重放攻击达到恶意目的,例如窃取存款、窃取账号等。在区块链网络中,重放攻击也同样存在,但区块链上的重放攻击的定义不同于传统互联网,其表现形式也有相应差异。
在区块链技术中,重放攻击是指“一条链上的交易在另一条链上也往往是合法的”,通常出现在区块链硬分叉的时候。
因为硬分叉的两条链,它们的地址和私钥生产的算法相同,交易格式也完全相同,所以在其中一条链上的交易在另一条链上很可能是完全合法的。也就意味着,参与者在其中一条链上发起的交易,到另一条链上去重新广播可能也会得到确认。这就是“重放攻击”。
重放攻击典型案例就是以太坊硬分叉。当初以太坊进行硬分叉,生产 ETH 和 ETC 两条链,因两条链上的交易数据结构完全一样,所以一笔交易在 ETH 上被验证是有效的话,那它在 ETC 上同样会被接受,反之亦然。不过当时因分叉前没有事先做好预案,导致很多人利用这个漏洞,不断在交易所进行 ETH 充提操作,获取额外的 ETC。“重放攻击”也就此闻名于币圈。因此在硬分叉前,通常技术方都要做好重放保护,即发生在一条链上的交易,在另一条分叉链上重放就会失效。
防御区块链重放攻击的措施有以下几种:
1、加时间戳
时间戳保证区块链上的每个区块依次顺序相连,证明了区块链上什么时候发生了什么事情,且任何人无法篡改。引入时间戳后,可以通过将前一次请求的时间戳进行存储,在下一次请求时,将两次时间戳进行比对。如果此次请求的时间戳和上次的相同或小于上一次的时间戳,则判定此请求为过时或请求无效。因为正常情况下,第二次请求的时间肯定是比上一次的时间大的,不可能相等或小于。因此可以通过设置大小合适的时间间隔来防御重放攻击。时间间隔越大越能包容网络传输延时,越小则越能防止重放攻击。
2、加随机数
对特定信息给与一个特定的随机数,并且这个随机数保存在服务器内,在验证了用户信息前,首先会对随机数进行验证,如果发现提交的随机数和服务器保存的不同则,该条信息无效通过以此来防止重放攻击。
不过这种方法的有一定的限制,需要额外保存使用过的随机数,若记录的时间段较长,则保存和查询的开销较大。
3、加流水号
双方在分享信息时添加一个逐步递增的整数,只要接收到一个不连续的流水号,就认定有重放威胁。
不过,如今许多的分叉币在分叉时都会做好重放保护,基本上都能够避免分叉后遭到重放攻击的威胁。
免责声明:以上内容(如有图片或视频亦包括在内)均为平台用户上传并发布,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。
本站尊重他人的知识产权、名誉权等法律法规所规定的合法权益!如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到qklwk88@163.com,本站相关工作人员将会进行核查处理回复