如何避免“重放攻击”的风险

币姐开场

如果比特币真的发生分叉,作为普通用户,最大的风险就是重放攻击。

 

重放攻击是什么呢?

重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。

重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。

攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。

重放攻击在任何网络通过程中都可能发生,是计算机世界黑客常用的攻击方式之一。

币姐举例

例如比特币分叉为一种或多种比特币,如BTC1/BTC2/BTC3等,每个比特币账户内将根据他的比特币余额,同时存在对应数量的所有分叉币。

由于每条链上的地址和私钥、算法等都相同,交易格式也完全相同,导致在其中一条区块链上发起的交易,完全可以放到另一条区块链上去重新广播,可能也会得到确认。

简单来说,在你转账BTC1的时候,你的BTC2/BTC3也可能同时被转走。

重放攻击的原理

重放攻击的基本原理就是把以前窃听到的数据原封不动地重新发送给接收方。

很多时候,网络上传输的数据是加密过的,此时窃听者无法得到数据的准确意义。

但如果他知道这些数据的作用,就可以在不知道数据内容的情况下通过再次发送这些数据达到愚弄接收端的目的。

币姐举例

例如币姐正在进行简单加密后进行传输,这时“小黑”虽然无法窃听密码,但他们却可以首先截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。

再比如,假设币姐网上存款系统中,一条消息表示币姐支取了一笔存款,“小黑”完全可以利用这条消息多次发送而偷窃币姐存款。

 

如何防御重放攻击?

加随机数

优点:是认证双方不需要时间同步,双方记住使用过的随机数,如发现报文中有以前使用过的随机数,那么就可以找到重放攻击。

缺点:是需要额外保存使用过的随机数,若记录的时间段较长,则保存和查询的开销较大。

加时间戳什么是时间戳?

优点:不用额外保存其他信息。

缺点:是认证双方需要准确的时间同步,同步越好,受攻击的可能性就越小。但当系统很庞大,跨越的区域较广时,要做到精确的时间同步并不是很容易。

加流水号

就是双方在报文中添加一个逐步递增的整数,只要接收到一个不连续的流水号报文(太大或太小),就认定有重放威胁。

优点:不需要时间同步,保存的信息量比随机数方式小。

缺点:是一旦攻击者对报文解密成功,就可以获得流水号,从而每次将流水号递增欺骗认证端。

币姐解释

“重放攻击”知识只要了解一下就好了,当真的碰到“重放攻击”时可以准确的判断。

其实目前很多分叉币做了双向防重放攻击处理,避免了分叉后被重放攻击的风险。