首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

真相了,当年门头沟事件的始作俑者原来是Ta

2014年2月25日,曾经最大的比特币交易所MT.GOX(又称门头沟)停盘了。原因是遭受到黑客的攻击,丢失了85万个比特币,按照当时的币价,总价值为4.54亿美金。在此事件中,黑客用的就是比特币交易的延展性攻击。

要说延展性攻击,我们先来说说什么是延展性

延展性,又称为可锻性,是指一个东西的形状改变了,但其本质与质量没有发生改变,其本质属性仍然可以获得大众的认可。就如同一条含金量7G的项链,被高温熔铸后打造为一枚戒指,其黄金含量仍为7G,其价值仍不变(不将生产成本纳入考虑)。

比特币交易的可锻性

先简单说下比特币交易,一笔交易里由交易标识、版本号、锁定时间、输入、输出组成,后四者经过哈希计算会生成一个哈希值,这个值就是交易标识,即TXID。每一个TXID就用来保证交易的唯一性。

每一笔交易的发起者都会用自己的私钥进行盖章,即常说的签名。签名也是一种算法计算,比特币用的是椭圆曲线数字签名算法(ECDSA)。矿工在验证一笔交易是否有效的时候经常就需要检查这个签名,检查的时候用的是openssl 库校验用户签名。

问题就在于openssl可以兼容多种编码格式,ECDSA的计算方式又不止一种,如用户用signature(r,s)和 signature(r,-s(mod N)) 生成的签名数据是不一样的,但矿工都可以验证通过。这就是签名的延展性,即使签名数据改变了,但仍具有效性。

交易存在延展性,具体说来就是指一笔交易的签名具有延展性。签名改变了,签名作为输入的组成成分之一,交易里“输入”的组成数据也会有所不一样,那么哈希计算生成的交易标识TXID也会改变。

延展性攻击怎么发生?

所谓的延展性攻击,就是通过对签名进行修改,但修改后的签名仍有效,攻击者可发起第二笔除了签名之外,其他数据信息均相同的交易。延展性攻击并不会阻止实际交易的进行,而是会引发二次转账交易。

具体说来,延展性攻击的受害者通常是交易所。攻击的主要流程是这样的:

1. 黑客在交易所具有一个账户,其向交易所发出提款的请求,获得一个TXID(先简称TXID1)。

2. 黑客根据交易信息,换另一种有效签名,伪造一笔交易,交易标识为TXID2,发送到网络。TXID2交易的交易信息和TXID1交易一样,均是交易所向黑客转账。但交易所并不知道TXID2交易的存在。

3. TXID1交易与TXID2交易在网络中竞相处理,若TXID2交易先被处理,交易所的比特币会转入黑客账户中,TXID1交易则失败。

4. 黑客向平台表示TXID1交易失败,再次发起提款请求,交易所确认TXID1交易失败后就会再次发送交易。如此一来,黑客就获得两笔比特币。

关于第三点,黑客如何保证伪造的TXID2交易会先被处理的,这里涉及到比特币网络的特性。比特币网络是去中心化的,节点与节点之间是点对点相连的,所有的交易请求都以网状广播的形式处理。黑客先查清楚交易所与哪些节点直连,用DDOS攻击瘫痪这些节点,使之不能对外广播交易信息。再伪造节点与交易所相连,用于广播TXID2交易。这样一来,TXID1交易不会被广播到网络,网络中接收到的都是TXID2交易。

为了更形象的去理解,举个例子:

1. 肖恩让首饰店打造一条含金量为7G的金项链,首饰店向生产商发布消息A----打造一条含金量为7G的金项链。

2. 肖恩通过某种手段截获了消息A,将消息A改为消息B----打造一枚含金量为7G的金戒指,再将消息B发送给生产商。

3. 生产商接受消息B后,打造出金戒指,并发货给肖恩。

4. 肖恩向首饰门店发起投诉,表示并没有收到金项链。首饰店向生产商对接,发现生产商的确没发金项链产品给肖恩,首饰店就会让生产商打造金项链,并发货给肖恩。

这样一来,肖恩就获得了两件含金量7G的产品。

-End-

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190124G0Z46F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券