木蚂蚁小程序

发现更多小程序的乐趣

交易延展性攻击原理是什么?交易延展性是什么?

文 / 皇甫湛芳
2018-02-18 19:17

  精品推荐

数字世界攻防是最有意思的事情,通读了延展性攻击原理后,任何使用类似算法和签名结构的数字货币都会面临这个攻击风险,虽然这个攻击不会实质性改变交易,但是足够影响一些心急的发送者,这就是攻防的魅力,永远接受挑战,越战越强,下面小编给大家介绍一下,希望你能喜欢!

交易延展性

交易的延展性,也被称作为是可锻性,即同样一个东西,它的本质和质量都没有改变,但是它的形状改变了。而这个可锻性,会造成交易ID——TXID的不一致,从而导致用户找不到发送的交易。

现在比特币的交易数据格式中,将交易签名部分也纳入了整体交易中,最后对整体交易做哈希,而交易签名又可以有多种写法,攻击者篡改了它们,它们作用上是一样的,但是字节发生了变化,导致这个签名不一样了,前段时间甚至有一个矿池挖出了一个包含所有交易都是延展攻击了的,给一些应用带来了麻烦。

TXID发生变化可能会导致一些应用在查找TXID时找不到,从而影响一些钱包充值或提现的状态,给运营者和用户带来麻烦,隔离见证是为了解决这个问题而提出的,将交易数据和签名数据分开,这样一笔交易的TXID一定唯一。

攻击原理

延展性攻击者侦听比特币P2P网络中的交易,利用交易签名算法的特征修改原交易中的input 签名, 生成拥有一样input和output的新交易,然后广播到网络中形成双花,这样原来的交易将有一定的概率不能被确认,造成不可预料的后果。

此攻击的原理在于,ECDSA算法生成两个大整数r和s并组合起来作为签名, 可以用来验证交易。而r和BN-s 也同样可以作为签名来验证交易(BN=0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141). 这样,攻击者拿到一个交易,将其中inputSig 的r, s 提取出来, 使用 r, BN-s 生成新的inputSig, 然后组成新的交易,拥有同样的input和output,但是不同的TXID. 攻击者能在不掌握私钥的情况下几乎无成本地成功地生成了合法的交易。

延展性攻击并不能阻止实际交易的发送,该到的还是会到,但被网络确认的不一定是原来预想的那个TXID, 因此会对比特币网络的活动产生一些影响。例如Alice通过在线钱包给Bob发送了一笔交易,并把TXID发送给Bob说,看我给你发了多少比特币,但是这个交易被延展性攻击并最终也没有确认,Bob通过此TXID却没有发现这比交易,Bob就说,”Alice, 你这个骗子”。

受影响更大的是交易所, 银行之类的离线钱包网站,如果没有好好编程实现,甚至会直接搞乱离线钱包的帐目,引起恶劣的影响。比如通常离线钱包为了方便用户并不等待六个确认才实际充值而是一个确认就实际充值,但是有可能原始交易和攻击的交易都在不同的block中出现在离线钱包的后台钱包中(这些block可能成为orphan但是毕竟曾经出现过),这样就会给某些账户冲币两次或多次, 并给恶意攻击者提现留出时间。应对方法是账户充值需要等待2或者以上的个确认。

充值的后果可以被管理员手动改回,更大的影响发生在提现过程中,提现后的TXID会被记录下来,用来随后查询blockchain 跟踪状态,如果被延展性攻击的交易抢先得到确认, 则提现的TXID一直不能被确认,时间久了会被认为失败,如果策略是失败后重发提现就悲剧了,相信每家交易所银行都有联系客户低声下气索回因失误而发出账款的经历。这种情况下的解决方法是,遇到交易无法确认就停止,报错误并等待手动处理,或者,我们可以自己生成一个延展性交易,然后获取新的TXID, 查找是否发送成功。能生成的TXID数量有多少呢?一共有exp(2, input数量)个,因为每个input都有改签名或者不改两种可能, 通常不是一个大数目。

以上就是关于交易延展性攻击原理的相关介绍,希望小编的内容能帮到大家!

木蚂蚁小程序

发现更多小程序的乐趣