精彩解析:黑客如何做到用几行代码从银行盗取3千万美元

相信不少童鞋看到这个标题喜滋滋点进来,怕是今天要发家致富了。但是呢咳咳,来来来,跟着小编大声念一遍社会主义核心价值观:

违法的事情咱们不能干,但是呢,作为一名极客,了解了解黑客某些方面的技术还是很有必要的嘛~~~

前几天,一名黑客黑进了以太坊(Ethereum),制造了数字货币史上第二大案。

大概在太平洋时间中午12点,一个不知名的黑客在Ethereum网络上利用Parity多重签名的一个关键漏洞,仅仅几分钟就从三个巨额钱包里面盗取了价值超过3千万美元的Ether币。如果再给他几个小时,这个黑客就可以盗取价值超过1.8亿美元的Ether。

但有人阻止了他们。

听到警报声之后,来自Ethereum社区的白帽子黑客迅速组织起来。他们分析了这次袭击,意识到没有办法扭转行为,但是还有很多钱包正暴露在漏洞面前。时间是至关重要的,现在就只剩下一个选项:在攻击者之前黑进剩余的钱包。

通过利用同样的漏洞,白帽子全部劫持了所有剩下的风险较高的钱包,并排除了帐户,从而有效地防止了攻击者盗取剩下的1.5亿美元。

看起来很不可思议是不是,但是,你没有看错。

为了防止黑客银行,白帽子写了程序抢先黑进剩余的钱包。那么你最关注的是 ,钱被放到哪儿了呢?白帽子黑客总不可能自己留下吧。。。。放心,一旦这笔钱被安全地盗走,他们便开始将资金退还给各自的账户。

这是一件大事,它对密码货币的世界有重大的影响。

重要的是要明白,这个漏洞并不是Ethereum方面或Parity本身的一个漏洞。相反,这是默认智能合同代码中的一个漏洞,Parity客户端给用户部署多重签名钱包。

这一切都很复杂,所以为了让大家清楚这个细节,这篇文章分为三个部分:

  • 究竟发生了什么事? 对Ethereum,智能合同和多重签名的钱包的解释。
  • 他们是怎么做到的? 攻击的技术说明(专门针对程序员)。
  • 现在怎么办?攻击对智能合同未来和安全的影响。

如果你已经对Ethereum和加密世界相当熟悉了,可以跳到第二部分。

究竟发生了什么?

这个故事有三个组成部分:Ethereum,智能合同和数字钱包。

Ethereum是2013年发明的数字货币 - 比特币发行后的4年。随着比特币400亿美元的增长,它已经成为世界第二大数字货币市值--20亿美元。

像所有加密货币一样,Ethereum是Bitcoin协议的后代,并改进了Bitcoin的设计。但不要被愚弄:虽然它是像比特币这样的数字货币,但是Ethereum更强大。

虽然Bitcoin使用其块链来实现货币交易的分类帐,但是Ethereum使用其块链来记录巨大的分布式计算机中的状态转换。Ethereum相应的数字货币,以太网本质上是为这台大型电脑供电的副作用。

换句话说,Ethereum真的是一个跨越整个世界的电脑。任何在他们的电脑上运行Ethereum软件的人都在参与这个世界电脑,Ethereum虚拟机(EVM)的运作。因为EVM被设计为图灵完整(忽略gas cost),所以几乎可以在计算机程序中表达任何东西。

Gas是一种特别的单位用于Ethereum(以太币)里,它用来衡量一个行为或者一系列行为有多少“工作量”。

我要强调的是,这是一个非常疯狂的东西。加密世界对于Ethereum的潜力感到高兴,在过去6个月里,它的价值已经高涨。

智能合同只是运行在EVM上的计算机程序。在许多方面,他们就像正常的合同,除了他们不需要律师或法官来解释条款。相反,它们被编译成EVM的字节码和解释。通过这些程序,你可以(除其他事项外)以编程方式仅根据合同代码的规则转移数字货币。

当然,有些事情是正常的合同可以做而智能合同不能做到的 - 智能合同不能轻易地与不在区块链上的东西进行交互。但是,智能合同也可以做正常合同无法做到的事情,例如通过不可破解的加密技术完全执行一套规则。

这导致我们需要了解Ethereum中钱包的概念。在数字货币世界中,钱包是你存储资产的方式。你可以使用一个秘密密码(也称为你的私钥来访问你的钱包。

不同类型的钱包赋予不同的安全属性,如退出限制。最受欢迎的类型之一是多重签名钱包。

在多重签名的钱包中,有几个私钥可以解锁钱包,但只有一个钥匙不能解锁钱包。例如,如果你的多重签名钱包有3个键,则可以指定必须提供3个键中至少2个才能成功解锁。

更多请详见这里:http://igeekbar.com/igeekbar/post/277.htm

这意味着,如果你父亲和你的母亲都是这个钱包上的签名人,即使犯罪分子盗走了私人钥匙,他们仍然无法获得你的资金。这是更强大的安全保障,所以多重签名是钱包安全的标准。

这正是黑客攻击的钱包类型。

那么出了什么问题?他们破解了私钥吗?他们是使用量子计算机还是某种尖端因子分解算法?

不,所有的加密都是健全的。漏洞其实简单的有些可笑了:他们在代码中发现了一个程序员引入的错误,让他们重新初始化钱包,就像恢复出厂设置一样。一旦他们这样做,他们就可以自由地将自己当作新的主人,然后取钱。

这是怎么发生的?

更多请详见这里:http://igeekbar.com/igeekbar/post/277.htm

猜你喜欢

转载自gbin1.iteye.com/blog/2387706