专栏首页维基链技术专区晓说区块链 | 黑客是如何通过修改数字签名就把钱骗
原创

晓说区块链 | 黑客是如何通过修改数字签名就把钱骗

2014年,Mt. Gox(门头沟交易所)因为黑客的攻击导致公司破产的结局。而这种攻击最终被证实为是“交易延展性攻击”。

本期《晓说区块链》,陈晓东先生(维基链首席技术官)将围绕“交易延展性攻击”的原理和相应的解决技术,为大家详细解读。

网友:比特币中数字签名本身不具有完整性,容易导致可伸缩性攻击,是什么意思啊?

大体的是知道区块中的签名被修改之后,可以被编码成和以前一样的,然后仍然能被以前签名对应的公钥验证,但是想不通,就只是修改下签名,又没有修改交易内容,攻击者可以从中获取什么利益呢?

陈晓东:为什么交易发出后,可能被篡改呢,不是有签名吗?

其中一个原因就是多数挖矿程序是用openssl库校验用户签名,然而openssl兼容多种编码格式。

还有,就是椭圆曲线数字签名算法(ECDSA)本身,签名(r,s) 和 签名(r,-s(mod n))都是有效的。所以,对签名字符串本身的表现方式做些调整,依旧是有效签名。

我们知道,每个交易都有一个对应的Transaction ID,也就是对整个交易计算出来的一个Hash,也是该Transaction的唯一标识。现在你对签名做了微调,签名还是有效签名,但是Transaction ID却因此改变了!!!

而黑客就是利用了这个特性,对交易所实施了攻击,下面就来看一下这个攻击过程是怎样的:

Step1> 黑客自己有1个账号,在交易所开了1个账号,并把自己的bitcoin转进去;

Step2> 黑客申请提现(withdraw),交易所发起1笔转账交易Transaction;

Step3> 这笔交易被广播到网络上。但是在还未打包进区块链之前,黑客收到这笔Transaction,并且稍微更改了scriptSig的格式,生成1笔新的交易广播出去,此时TxID已经变了;

Step4> 黑客的这笔新交易被区块链接收了, 然后向交易所投诉,说它没收到钱。交易所根据自己生成的Transaction ID查询该笔交易,发现在网络上查询不到, 会再次转账给黑客,也就是double withdraw! 同1笔钱,被黑客提现了2次,甚至多次! 导致交易所蒙受巨大损失。

Mt. Gox(门头沟交易所)在2014年因这种欺诈交易攻击导致了公司倒闭的悲惨结局!!!不过大部分的交易所因此也学到了教训,不会轻易根据用户提供的TxID来判断是否交易已经失败或者成功,而是需要根据交易的发送地址和接收地址的余额变化来判断交易是否真实发生。

总结:

交易延展性攻击之所以会发生,是因为TxID会变(而这是1个Transaction的唯一标识)。而TxID之所以会变,是因为里面的scriptSig可以被调整。

如果有办法保证TxID在整个交易过程中,都不可能被改变,那也就解决了这个问题,而这就是后来的"隔离见证" (SegWit)技术解决了这个问题。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是分布式账本?

    它们的媒介有黏土、木质计数棍(有火灾风险)、石头、草纸和纸。自从计算机在20世纪80、90年代通用后,手动输入数据的纸质记录就被数字化了。

    维基链WICC
  • 如何应对区块链黑客?维基链CTO来支招

    近期,Fomo3D 第二轮最终大奖开出。安比(SECBIT)实验室分析发现,此轮游戏获奖技巧与第一轮如出一辙,均为黑客发起“阻塞交易”攻击,让自己成为最终得奖者...

    维基链WICC
  • 晓说区块链 | 梅克尔树保障了区块链数据不可篡改,它的机制是怎样的?

    梅克尔树(Merkle tree)是为了解决多重一次签名中的认证问题而产生的,由于梅克尔树结构具有一次签名大量认证的优点,在认证方面具有显著的优势。

    维基链WICC
  • 极客周刊丨鬼畜时代或终结,QQ账号可注销,IOS 11被爆出严重BUG...

    一川水巷
  • WordCloud——A Beautiful Cloud of Words

    Wordcloud 是Python第三方库中用于制作简单分词云图的第三方库,可以根据自己喜欢的颜色,喜欢的形状制作出美丽的词云图。

    AngelNH
  • Git远程库操作1

    选择SSH方式,请先配置好公钥私钥,参见:https://code.tencent.com/help/productionDoc/profile#ssh

    腾讯工蜂
  • Ubuntu 19.04 每日创建版本已经提供下载

    Ubuntu 19.04 代号已经发布,发布日期也已提上日程,现在可以下载Ubuntu 19.04每日创建版本了。

    昱良
  • #ifdef宏名和#ifndef宏名

    大忽悠爱学习
  • Redis淘汰机制+热点数据问题

    Redis是内存数据库,我们能时时刻刻能感受到Redis作者为更好地使用内存而费尽各种心思,例如最明显的是对于同一种数据结构在不同应用场景下提供了基于不同底层编...

    xcbeyond
  • HDOJ 1097 A hard puzzle(循环问题)

    Problem Description lcy gives a hard puzzle to feng5166,lwg,JGShining and Igna...

    谙忆

扫码关注云+社区

领取腾讯云代金券