主页 > imtoken地址是什么 > 比特币交易平台Mt.Gox暂停比特币提现事件分析

比特币交易平台Mt.Gox暂停比特币提现事件分析

imtoken地址是什么 2023-03-25 07:29:31

整理旧文章

对于非技术人员

用户可以利用Mt.Gox系统的漏洞,多次将比特币提现至个人钱包,因此Mt.Gox暂停比特币提现。

例如:

用户张三在Mt.Gox中有50个比特币,张三将这50个比特币提现到自己的本地钱包中。 Mt.系统发出支付交易,约10分钟后交易完成。 张三的钱包余额增加了50个币,MT的钱包余额减少了50个币。 但是在这次支付交易中比特币暂停交易,中间修改了交易的ID号。 现在张三又要求提现50个币,mt连自己钱包是不是缺币都不查,就凭自己记录的交易ID号没有被确认,就认为上次交易失败了,然后又给张三送了50个币。

这听起来很有趣,但这就是 MT 的问题。 现在Mt.Gox正忙着查看自己的账本,看看哪些支付交易被骗了,还有哪些用户是骗子,看看被骗的币能不能通过法律追回。

对于技术人员

比特币暂停交易_比特币币币交易是什么意思_比特币程序化交易

事件的起因是:比特币中被称为“交易延展性”的缺陷。

这是比特币系统的一个小问题,不影响比特币网络的完整性。 它不被认为是漏洞。 两年多前就有人提出和讨论过,也有相应的技术对策。 Mt.Gox显然忽视了这个问题,没有采取相应的技术措施,才导致了这起事件。

比特币世界的很多名词都是比喻,比如挖矿、矿机、矿工等,这里的“可伪造性”也是一个比喻。

在讨论“交易的可伪造性”之前,我们先来看看“金币的可伪造性”。 金币在使用的时候,用锤子敲几下,就凹陷了好几处,变得不太圆了。 这枚金币的基本含金量没有变化,只是外观与标准金币有些不同。 这枚金币还是公认的金币。 这就是“金币的延展性”。

“交易延展性”是指比特币支付交易在发出后、确认前(准确地说是伪造、复制)可以修改,用户签名的信息不可更改。

原因是:用户签名​​的内容不是整个交易的信息,而是交易信息中的核心重要信息,如发送方、接收方、金额等。在不改变签名内容的前提下用户签名,对交易信息进行一些微调,可以生成新的交易字符串,从而生成新的交易HASH值,即交易ID Transaction ID。 由于签名的内容没有改变,修改后的“交易”可以被挖矿程序确认并写入区块链(block chain)。

比特币程序化交易_比特币暂停交易_比特币币币交易是什么意思

有两种方法可以微调交易信息,

首先,修改签名字符串本身。 首先,大多数挖矿程序都使用openssl库来验证用户签名,openssl兼容多种编码格式。 另外,椭圆曲线数字签名算法(ECDSA)本身,签名(r,s)和签名(r,-s(mod n))都是有效的。 因此,对签名字符串本身的表示进行一些调整仍然是有效的签名。

二、修改交易信息中scriptSig的值。 scriptSig 包含签名字符串,scriptSig 本身不包含在签名内容中。 scriptSig 做了一些适当的修改,不影响交易信息的验证。

注意,以上两次调整不会改变签名的核心内容,而是会生成新的交易字符串,从而生成新的交易HASH值。 交易的本质(发送方、接收方、金额)没有变,但表象确实变了。

从发送交易信息到最终确认通常需要10分钟左右。 从时间上看,伪造的交易信息是在真实的交易信息之后产生的。 由于挖矿程序的确认过程是一个随机过程,可以先确认后生成的假冒交易信息,此时真实的交易信息被认为是重复支付而丢弃。 发送方看到自己发送的真实交易未通过验证,误以为支付失败(实际上支付成功),再次发送交易,支付方支付了多出的币。

Mt.Gox通过公司钱包集中管理用户的比特币,同时通过总账记录每个用户比特币的存取款,并根据这个账本计算每个用户账户上的比特币余额。

比特币程序化交易_比特币币币交易是什么意思_比特币暂停交易

记账依据是交易的HASH值,即交易ID(Transaction ID)。 这导致它被攻击者反复撤回。

Mt.Gox发现其钱包中的币不断减少,支付交易时常失败。 意识到不对劲,我不得不暂停提款。

攻击细节:

1、攻击者需要一台性能普通的矿机连接比特币网络,以获取和发送交易信息(比特币网络是开放的,任何人都可以连接)

2. 登录Mt.Gox平台,请求提币到个人钱包。 Mt.Gox 然后将支付交易信息广播到网络。

3. Mt.Gox发送的支付交易信息通常需要10分钟左右才能确认。 攻击者获取待确认的交易信息,伪造签名内容相同但ID不同的支付交易比特币暂停交易,然后将伪造的交易广播到网络中。 如果真正的交易首先通过挖矿得到确认,则攻击失败。 如果假冒交易首先被挖矿确认,则真实交易被丢弃,攻击成功。

比特币币币交易是什么意思_比特币程序化交易_比特币暂停交易

事实上,如果攻击者过于张扬,他可以伪造多条交易信息来增加第一个通过确认的机会。

4. 再次请求Mt.Gox提币。 Mt.Gox 看到真正的交易没有写入成功(区块链)。 误以为支付失败,重新发送交易。 攻击者成功作弊。

启示

无论是交易平台还是个人,都不能仅凭交易的HASH值来判断交易是否成功。

最靠谱的方法是:每次交易后,通过查看钱包余额的增减情况来判断支付交易是否成功。

启示录更新(2017 年 3 月)

比特币暂停交易_比特币程序化交易_比特币币币交易是什么意思

从技术角度:

1、写入区块链,多次确认的交易ID不会改变,可靠。 (至于确认次数是另外一个话题)

2. 未写入区块链的交易ID可能会发生变化,不可信任。

从用户的角度来看:

1、对收款人无影响。

2、对于付款方来说,如果是人工支付,通常是没有影响的,因为如果人工操作出现异常,会被提醒。

如果允许用户自动取款,这时候一定要注意“交易延展性”的问题。 这主要影响交易所,普通用户通常不会让别人自动提现。 在 Mt.Gox 事件之后,许多交易所都采用人工操作来处理用户提现。