谈谈比特币的机制及攻击

囧思九千 2013-11-17 16:31:00

大家好,我是OpenCDN团队的Twwy(@囧思八千)。

我只是从技术角度,阐述一下个人观点,如果有什么金融的原理上的错误,还望大牛指出。

首先,本文并不是对比特币的算法上的缺陷进行探究,我认为比特币的算法没有缺陷(不保证真的有什么天才发现比特币算法上的漏洞)。当然,这点也成为人们对比特币的担心:“万一哪天这个天才出现了,那我手上的比特币不就变成废纸了吗?”这点,可以归结为对比特币的实际价值的怀疑。不过,本文并不是探讨这种“有的没的万一哪一天”的担忧的。我们,逻辑说话。

然后,如果你对比特币的概念还有些云里雾里,那么我先给比特币做个比喻:

他是一种比货币流通更方便的黄金。

为什么会有货币?因为黄金流通不方便。那么货币有黄金保值吗?

没有,货币的发行机构随时可以调整汇率,你手上的货币随时可能变成一张废纸。

这个钱就像政府以方便流通为由,给你一个内存指针,而指针背后的变量随时会变(政府好聪明)。

那么,有没有一种魔法可以让黄金变得很轻很小,然后容易流通呢?

有,比特币就是。

比特币用算法做保证,保证了这个比特币的数量是有限的,并且获得比特币都要经过人人平等的挖矿计算(是不是有点像黄金),不是像政府可以随时调整货币。所以,这个也正是这个项目危险的地方,一旦比特币作为货币被大家认可,那么国家就无法通过调整货币发行量来进行经济的一些宏观调控了。当然,是不是资本家也无法通过货币来进行资本剥削了呢?这个纯属我的猜测。如果这样的话,那是不是作为社会主义的中国应该首先支持比特币啊?

我想,比特币的设计者就是这么想的,这是多么美妙的一个世界啊。

没有了可操纵的货币,没有了通过货币实现的剥削。

每个人赚的钱就是自己的,而不是像某些国家,钱放着越放价值越少,越放久能买的东西越少。

不过,你也一定会想,假如整个世界的经济都是基于一个算法之上,那么算法万一被击破了不是整个世界就崩盘了?

我只能说,比特币这方面的机制确实太巧妙了,任何与他为敌的都会被伤害反弹!

而这些攻击如果顺着比特币的游戏规则走,却能获得收益!我们就拿51%攻击为例,我们先来看下51%攻击的实施方法。

准备工作:

  1. 既然是51%攻击,就必须首先掌握足够的算力,无论是控制矿池,还是利用其它计算资源,总之必须使你的算力领先与现在网络总算力,领先的幅度越大,成功的可能性越高;
  2. 拿到足够的BTC作为筹码,无论是自己挖到的,还是从任何渠道买的,都可以;

攻击步骤:

  1. 将手中的BTC充值各大交易所,然后卖掉,提现;或者也可以直接卖给某人或某一群人;
  2. 运用手中的算力,从自己对外付款交易之前的区块开始,忽略自己所有对外的付款交易,重新构造后面的区块,利用算力优势与全网赛跑,当最终创建的区块长度超过原主分支区块,成为新的主分支,至此,攻击完成;

我们来概括一下,就是掌握了全网51%的计算力之后,可以抹去最近的任一一笔交易(注意:是只能抹去,原因后面还会提到)我想,从逻辑角度来讲,这个攻击是没有问题。但是,是不是完成这次攻击就能获益呢?你太天真了。首先,因为51%攻击一次成本是很高的,那也意味着你手上掌握的比特币数量也是很可观的,而如果你抛售比特币足以引起价格下跌,所以你抛售获得的现金一定会低于你之前买进的价格。于是你可能会说,那有怎么样呢,反正我可以通过抹去交易把比特币拿回来。是吗?你一旦实施成功51%成功,全球的人都知道比特币被攻击。然后大家对于比特币的信心会瞬间崩盘,你手上辛辛苦苦弄回来的比特币还有意义吗?就是一堆废数据了。然后我们清算一下,完成这次攻击后,比特币崩盘,所有人都损失,攻击者也损失,可能损失更惨重。那么是否有可能少抹一些数据来避免影响呢?可以啊,你能为调动计算力买单,你能攻击一次赔一次确实可以啊,但是你为了什么呢?这也就是比特币的伤害反弹特性,现在如果某个富二代砸老子几亿美金还是可以干掉比特币的,但是随着时间的推移,难度越来越高。

现在,我们来解释一下刚刚为什么交易只能抹去。因为所有的交易账单都是RSA加密的,而对比特币进行攻击的关键就是要使账单出错。如果你说可能破解出RSA的私钥,然后来篡改账单,那我只能说呵呵了。所以比特币也能很骄傲地说,我们是基于密码学的。确实,因为RSA存在,我们无法伪造账单,但是我们可以删除账单。怎么删除账单呢?就是用上面的那个会被伤害反弹的51%攻击来删除账单。同时,大家也要注意,如果一旦我把RAS密钥销毁掉,也就意味那个余额无人能动,这些比特币就永远地从世界上消失了。这个特性我们在后面会提到,将会对比特币产生巨大的影响。

于是,大家看,比特币系统真的像一个武林中的绝世法宝,他不断吸取着世界上的精华,为他所用,无人能敌,伤他者只能自伤,随着他日益强大,武林中能与他同归于尽的人都屈指可数。不过,这种形容不是都是形容那些反面角色或者反面技能的吗?是的,现在,我们绕到他的反面来看看。

从算法或者设计角度来看比特币,简直是完美。不过,我们来看看他的一些更完美的特性吧?比特币具有极强的匿名性,任意人可以随时生成一个收钱地址来收钱,那样,要洗个钱简直轻而易举。不过,也正因为比特币的分布式特点,每个客户端都存有全世界的所有账单,因为每个人的余额是是根据比特币系统产生到现在的所有账单计算出来的。这是不是一个更牛逼的特性?世界上所有的交易全部是透明公开的!那也就是说,如果你公开了你的收钱地址,也就相当于公开了你的钱包余额。这个,你能接受吗?同时,你也要注意,无论比特币在比特币网络怎么流通,他终究要转换成可用的东西,比如现金、物品。而这个转换一般来说肯定是实名的,由此,通过对应的比特币地址,可以直接找出你的所有比特币的消费行为,因为这些账单对世界上所有人是透明的。那么有可能通过N多个收钱地址和复杂的交易联结来隐藏吗?是可能的。但是,这也就导致了比特币好心干了坏事,该隐藏的信息(比如个人余额)没有隐藏,不该隐藏的信息(比如洗钱)却进行了隐藏。我想,一定也有人会说,如果账单全透明了又怎么样?可能会带来一个人类诚信的新纪元。是吗?随便拿个例子,比如《三体》中的三体人,他们的世界上没有欺骗,所有人的思维全部互相可见。所导致的后果是?被人类坑。在人类世界,思维透明和钱包透明似乎有那么点异曲同工之妙,大家可以感受一下。你觉得你能接受在你家门牌号上贴你家资产余额的世界吗?

那么,我们再来看看比特币的另一个优秀特性:没有人能够控制比特币的发行,比特币的总量会止步于2100万。那么如果一个货币不会通货膨胀,由于货币会损耗(RSA私钥丢失),那么一个货币的通货紧缩是必然的。于是,这似乎让人感到很愉悦!因为比特币在到达总量之后,就只会因损耗而减少了,而减少必然导致比特币的升值。这似乎是件对全人类都有益的好事!每个人只要买入比特币,然后坐等他升值就行了,大家都会赚钱。大家有没有发现一个问题?这些收益谁来买单?是的,一个无人控制的比特币市场,只会因为比特币的损耗而不断升值。除非,比特币成为了世界的通行货币,每个人都拥有,那么这种升值便可以被抵消,使货币价格处于一个相对平衡状态。所以,比特币的目标也确实非常明确,如果他不能替代掉现有的货币系统,那么他就是一个类似庞氏骗局的东西,真是一个天堂,一个地狱!

所以,现在看来,比特币其实就像一面镜子,照出了人类自己。比特币成功与否,就看人类自己,这是一场人类自己与自己的博弈:接受一个去中心化的货币,接受所有人的财产全部透明化,政府接受不通过货币来调控经济等等。当然,你也可以进行人类的博弈竞猜:购买比特币。如果你押人类可以战胜自我,那么就买比特币;反之的话,看完这篇文章,该干做什么做什么去,就当什么也没发生。注意,你的选择也会影响到全人类。

ps:因为金融知识有限,只能用黄金做下比喻。如果文章中有什么错误,还望指出。

比特币相关信息

比特币原理详解http://www.36kr.com/p/24672.html

什么是比特币51%攻击?http://www.btc38.com/btc/btc_learning/219.html

比特币中国https://vip.btcchina.com/

仅过 10 天,最大比特币交易平台 Mt.Gox 再受攻击http://www.ifanr.com/news/280564

Mt.Goxhttps://www.mtgox.com/

目前世界上有多少人拥有比特币?拥有最多比特币的人是谁?(知乎)http://daily.zhihu.com/story/1809292

评论

0

0x_Jin 2013-11-17 20:12:48

好吧 刚才还特意去深入了解了一下比btc

X

xsser 2013-11-18 17:07:03

攻击算法不如攻击运营机制,譬如攻击一些运营的比特币交易市场

邪少 2013-11-18 18:52:14

你不晓得要掌握多大的计算量
我觉得只能是一说,基本不可能实现

I

insight-labs 2013-11-18 19:37:49

有几个根本错误:
比特币用的技术不是RSA是椭圆曲线和SHA256
从密码学攻击比特币是最难的方向,因为即使攻破了一种,也无法威胁到比特币,必须具备从椭圆曲线公钥快速计算私钥的能力和SHA256快速计算hash碰撞的能力,这两种合在一起,就算有量子计算机也无能为力。
另外blockchain也不是rsa加密的,是把比特币地址的公钥和比特币数量还有一些其他数值放进去产生的sha256 hash
有一种很有前途的攻击方式是从p2p攻击,在GFW的帮助下可以扰乱比特币市场,甚至在中国和国外产生两个不同版本的blockchain
还有就是像xsser说的,直接攻击交易市场。

I

insight-labs 2013-11-18 19:40:20

比特币这个东西,不像房子也不像黄金,一旦因为失去信心而不值钱就真的一文不值了,只是一串随机数而已。

囧思九千 2013-11-18 20:01:20

多谢指正。

X

xsser 2013-11-19 12:26:37

这位兄弟一直很深刻

A

Anymous 2013-11-19 22:55:01

@核攻击 毁掉它们吧

肉肉 2013-11-20 13:28:00

看完这一篇智商都用完了

0

0x_Jin 2013-11-20 14:39:52

哈哈 你要不要这么逗。。。

J

jeary 2013-11-20 18:02:45

楼上

核攻击 2013-11-24 15:19:30

burn it! in the fire!

核攻击 2013-11-24 15:20:07

burn it! in the hell!

囧思九千

杭电信息安全协会

twitter weibo github wechat

随机分类

业务安全 文章:29 篇
XSS 文章:34 篇
Python安全 文章:13 篇
Java安全 文章:34 篇
数据安全 文章:29 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录