护栏厂家
免费服务热线

Free service

hotline

010-00000000
护栏厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

210比特币交易平台Mtgox事件分析与防范

发布时间:2020-02-03 05:26:25 阅读: 来源:护栏厂家

一、概要

mtgox(以下简称mt)2.10 发出公告,号称用户伪造了交易,导致mt重复给用户提现,造成巨大未知损失。并责怪比特币核心开发组,声称发现比特币重大Bug。后短时间内引发市场巨大恐慌,造成大量抛盘,但价格在短时间内迅速恢复。

二、攻击可以做到的事情:替换原交易的Hash。

三、攻击不可以做到的事情:偷不了任何币,因为修改不了交易的输入、输出。

四、平台防范措施

1. 防“变种”交易:生成提现交易后,不仅记录tx hash,还要记录前向tx hash。当发现该tx hash被拒后(长时间得不到确认),检查前向tx hash是否已经花费掉,如果没有,则再次广播即可。如果已被花费,则更新tx hash,同时发出告警邮件。

2. 构建完善的广播网络,部署多个节点并与网络主要Hub节点打通

3. 完善的监控与告警机制。罕见、特殊现象一旦发生需要立即发出短信、邮件等

4.“熔断”措施,当某条件满足,自动或手动暂停部分功能,可防止扩大化

五、攻击技术分析

这是一个需要较高操作技巧,且依赖平台自身特点才能做出的攻击。对平台的依赖是:交易是否发出仅查找tx id(tx hash),不查找前向交易是否花费。

比特币交易的签名步骤:

1. 构造一个空白交易:输入交易、输出地址+金额、辅助参数

2. 对这个空白交易进行双SHA256(所有内容),得到一个32字节Hash A,用输入交易对应的私钥对该hash A签名,得到signature

3. 将signature填入步骤一的空白交易中,得到最终交易,然后对最终交易进行双SHA256运算得到32字节的Hash B,该Hash B成为最终的Tx Hash,又称Tx ID

4. 将最终交易广播出去

空白交易任何字段均不可更改,否则导致签名验证失败。但填入的签名(signature),在openssl实现中是可以修改1个字节,并依然能够通过校验,由于这一个字节的修改,导致最终Tx Hash(Hash B)却发生了变化。称之为“变种”交易,与原交易理论上是一样的。

攻击者熟悉mt的比特币节点,并成功连接上去,一旦mt的节点发出交易广播,立即捕获之修改签名的一个字节,使tx hash发生变化,并利用自身网络优势使得“变种”交易抢在原交易前面得到接收。这样原交易就被其他节点拒掉了(因为已经收到“变种”交易,其前向tx已经花费,导致无法验证通过)。

即使输入、输出没有变化,却依然导致了mt丢币,是因为mt发现提现的tx hash不存在(失效了)误以为没有给顾客提现,于是再次发一起一笔提现。导致重复提现。

六、总结

该问题是由于openssl版本的ecdsa实现方式缺陷造成,社区早在2011年就提出并分析,Gavin认为不是太重要的事情,虽然列入了TODO List,但优先级较低。

Mt自身也有着巨大缺陷,发现提现交易tx hash无效这样的罕见现象应该引起足够的重视,并及时解决。将问题推卸给比特币核心开发组是完全不负责任的。

比特币是足够健壮的,但以后类似这样事件依然可能发生,平台需要加强风险控制与完善危机应对策略。

就医挂号收取服务费

名医汇

名医汇