比特币安全

发布时间:2016-05-31 17:19:24   来源:文档文库   
字号:

信息安全研究性专题作业一

比特币安全的研究

学号:13211152

姓名:黄明明

院系:电信学院

邮件:13211152@bjtu.edu.cn

电话:130********

比特币介绍

比特币(Bitcoin),是一种全球通用的加密电子货币且完全交由用户们自治的交易工具。比特币的概念最初由中本聪在2009年提出。与大多数货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。2014811日,美国消费者金融保护局(CFPB)就比特币等虚拟货币的风险发出警告,包括成本不明、汇率波动、易受黑客和垃圾邮件攻击等。CFPB认为,比特币仍处于实验性阶段,且虚拟货币账户不设政府存款保险,一旦出了问题,没有相关部门会出手相助,用户将后果自负。201511月,台湾地区近3000家全家便利店开始可以使用比特币支付;12月,《连线》网站编辑安迪-格林伯格(Andy Greenberg)透露,比特币的创始人是一位名叫克莱格-斯帝芬-赖特(Craig Steven Wright)的澳大利亚金融极客。

货币特征

去中心化

比特币比特币是第一种分布式的虚拟货币,整个网络由用户构成,没有中央银行。去中心化是比特币安全与自由的保证 世界流通 比特币可以在任意一台接入互联网的电脑上管理。不管身处何方,任何人都可以挖掘、购买、出售或收取比特币。

专属权

操控比特币需要私钥,它可以被隔离保存在任何存储介质。除了用户自己之外无人可以获取。

无隐藏成本

作为由AB的支付手段,比特币没有繁琐的额度与手续限制。知道对方比特币地址就可以进行支付。 数量固定 比特币的发行数量是固定的,总数为2100万个。

发行不受控

比特币的产生是由P2P网络节点进行计算而产生的(我们俗称为挖矿),它的创造过程没有任何人为的干预,因此不会造成通货膨胀等,价值也很稳定。

交易方便

比特币的交易非常方便。全球的P2P网络节点全天候的负责着比特币交易的正常进行,只要有网络你就可以进行比特币的买卖,并用比特币购买任何你想要的商品服务。

费用低廉

和传统银行不同,比特币的转账交易费用非常的低廉,每次交易只需支付0.0001BTC~0.0005BTC的费用。这些费用用于鼓励全球比特币P2P网络节点对比特币网络的维护。

发展历程

2008年爆发全球金融危机,当时有人用“中本聪”的化名发表了一篇论文,描述了比特币的模式。2009年,不受央行和任何金融机构控制的比特币诞生。 比特币是一种“电子货币”,由计算机生成的一串串复杂代码组成,新比特币通过预设的程序制造,随着比特币总量的增加,新币制造的速度减慢,直到2140年达到2100万个的总量上限,被挖出的比特币总量已经超过1200万个。 2009年比特币诞生的时候,每笔赏金是50个比特币。诞生10分钟后,第一批50个比特币生成了,而此时的货币总量就是50。随后比特币就以约每10分钟50个的速度增长。当总量达到1050万时(2100万的50%),赏金减半为25个。当总量达到1575万(新产出525万,即105050%)时,赏金再减半为12.5个。

产生原理

从比特币的本质说起,比特币的本质其实就是一堆复杂算法所生成的特解。特解是指方程组所能得到无限个(其实比特币是有限个)解中的一组。而每一个特解都能解开方程并且是唯一的。 以人民币来比喻的话,比特币就是人民币的序列号,你知道了某张钞票上的序列号,你就拥有了这张钞票。 而挖矿的过程就是通过庞大的计算量不断的去寻求这个方程组的特解,这个方程组被设计成了只有 2100 万个特解,所以比特币的上限就是 2100 万。

获取方法

首先电脑应该安装了最新版的比特币客户端,打开客户端之后会自动把网络上的全部交易信息数据下载到本地,根据网速的不同这个过程可能要几个小时。此时账户余额是0,用户可以请朋友送一些币,但更可行的办法是去做矿工挖矿或去做商人收购。

做矿工挖矿

做矿工就是用自己的电脑生产比特币,在早期的客户端中还有挖矿这一选项,但已经取消了,原因很简单,随着参与挖矿的人数越来越多,自己一个人挖矿可能要挖上几年才有50个币,所以矿工一般都组织成矿工行会,大家一起挖。具体的挖矿方法,大家可以自行去网上搜索。这个办法已经很不现实。

做商人收购

做商人可以用钱去收购矿工挖到的币,也可以搞一个网店卖东西收比特币,更可以去交易所炒币。提供比特币兑换服务的网站很多,几乎已经可以兑换成任何一种货币了。

比特币开采难度与已经被开采出来的货币量成正比。越往后开采难度越大,到了20302000万个比特币被开采出来后,剩下100万个比特币很可能需要几十年才能被开采出来。并且比特币没有中央发行机构,由网络节点通过复杂计算生成,任何人都可以在电脑上运行比特币软件制造它。流通时,在客户端软件上输入数量1,再要来对方的比特币地址,用给付者的密码签名。之后,这个比特币就是对方的了。

比特币面临的安全威胁

黑客行为

僵尸挖矿

比特币的安全机制

比特币的密码规则,用来解锁和管理货币交易,每笔交易的信息密码都是唯一且与众不同的。比特币包括两个密钥,私人密钥是用来创建一个数字签名,而公共密钥用来让其他人核对私人密钥,可以理解是一个证明你有密码,但是不要求你将密码信息展示出来。

这里主要是用了ECDSA,也就是椭圆曲线签名算法,这个算法有两个特性,注意这两点对下面至关重要

a.只要知道私钥,可以算出相应的公钥;

b.你用私钥签名过的东西,可以用公钥算一下是不是你签的;

同时这两个密钥是可以自己随意创建的,甚至可以不联网创建,因为密钥得地址十分的多,有个经典的比方就是如果有地球上所有沙子那么多的地球,那么这些地球上所有的沙子还没有密钥得地址多。但是如果你丢了或者不记得这个私钥了,那么这个比特币就再也找不回来了,所以这个地址可一定要记住。

转账其实是将货币发送到对方的公共密钥,消费的时候你必须证明你是公钥地址(钱被转至的地址)真正的拥有者,通过交易信息和私钥来生成数字签名的过程,可以证明你真正拥有者的身份,网络中得其他节点可在不同的函数中利用该数字签名来核实它是否与你得密钥相符。

比特币的余额校验机制 

进行转账那么就需要知道转账的人是否有足够多的比特币进行转账,而比特币系统中并不会存某个用户的比特币余额,那么如何知道一个用户的比特币余额呢。比特币采取的方式是去验证这些比特币之前所有的交易记录,这些要援引的交易信息叫做进账,如果这些历史交易记录校验完成后发现对不上发送过来的这些比特币,那么会将余额发送给比特币的发送者来更新这几个比特币真正的余额。 

一旦一笔交易被使用过一次,就会被删除掉,否则人们可能会在不同的交易信息中援引同一进账信息,导致进账重复被使用,所以在核实交易时都会核实该进账没有被消费。 



比特币的交易顺序问题 

由于交易信息在比特币网络中是以一个节点一个节点的方式来传递,这就无法保证节点接收到交易信息的顺序和他们创建的顺序完全一致,比如你转比特币给A,同时你也转比特币给你自己,如果你给自己的先到那么你转给A的比特币交易信息在判断余额时会发现中间交易信息已经被消费了那么就会对不上帐,转账就会无效你就可以做到不花比特币但是依然可以买到东西,所以需要整个网络对交易的顺序需要达成一致。 

比特币采取一种数学竞赛的方式来决定交易到达节点的时间,并同时保护这种顺序,在比特币系统中是通过将交易按组分配来对交易进行排序的,这样的组被称作区块(同一时刻发生的交易会分在同一个区块内),然后将这些区块链接起来,被称作区块链。区块链是用来对交易排序,而交易链则是追踪记录比特币所有权变化的,这些区块是按照时间排列的就是一个链接,未在区块内的交易被成为未确认或者未排序的交易,任何节点都快要将一组未经确认的交易放入区块中,然后向网络中的其他节点广播他们对于下一个区块应该是什么的建议。 

如果同一时刻有多人同时生成区块(这种概率基本很小),所以就会有当前的区块的下一个区块会有多个选择,为了保证区块链接的顺序性,比特币系统让每个有效的区块必须包括一个特殊数学问题的答案,计算机会计算整个区块的文本,再加上基于加密哈希进行的随机猜测,直到得出一个低于某个特定数值的输出,哈希函数能够从任意长度的文本中创建一段简短的摘要,这个固定输出值是非常复杂的找到他的唯一方法就是随机猜测,这就是所谓的挖矿。 

一般来说一台电脑需要几年才能猜测出整个输出值,当比特币系统所有的电脑都在猜测的时候那么十分钟就可以在某太机器上成功的猜出答案,当一个节点找到符合要求的解他就会向全网广播自己的结果,并且将他们的交易排在区块链的下一位,猜测的随机性分散了人们找到结果的时间,几乎很难有两个人同时猜到结果,如果同时有不止一个区块被猜测出来,那么又会产生分支,这个时候不同的节点会产生不同的链接方式。 

比如:A节点是链接到B挖出来的区块,而C节点最新的区块则是D挖出来的区块,而当下一个比特币来的时候,节点会自动切换到最长分支,由于几乎不太肯能发生多次同时发现区块的情况,所以就能保证区块链接的正确性(这里也就是存在的所谓双重支付的攻击)。 



双重攻击 

双重支付,伪造者A将钱发送给BB等待交易被确认并加入区块链,在此以后寄出产品,如果A能够产生更长的分支,用于他人的交易替代与B的,B的前将会被抹去,B的交易会被扔回未确认的交易池,但由于A已经用另一半交易替换了与B地交易,其中援引的时同一笔进账那么系统会认为A支付给B比特币的交易是无效的。如果A能提前发现连续几块的比特币,并且不进行流通,那么就很有可能首先双重支付。 

为了解决这个问题,比特币的哈希加密算法相当的关键,同时比特币每个区块对前一个区块的引用会成为哈希文字的一个部分,对他的任何更改都需要重新寻解,所以前一个区块尚未解开之前,后一个区块无法被解开。所以他不可能提前准备好分支,而一旦他将比特币传输进行交易,如果他再想生成一个更长的分支,那么他需要和整个比特币系统的其他网络进行竞速保证他能更快,同时为了应付计算性能的不断增加,每两个星期全球所有的比特币软件就会提高数学题计算的难度。

到底是什么保证了比特币与“普通”虚拟货币不同的特性呢?

答案就是——数学。

散列

首先从散列讲起,散列又叫“杂凑”,国内也有根据其英文(Hashing)译为哈希,其实从名字的“零散地列出来”、“杂乱地凑起来”来看就知道,这是一种信息摘要算法,而摘要的意思和小学语文的把一段文章的中心大意提取出来类似。在计算机中,散列通常是经过某些特定的手段(例如经过一系列复杂的位运算)提取出某段数据的特征、该特征用来校验(比如验证从网络上下载的一个很大的文件的正确性)。语文课上的概括中心大意是根据概括的内容,你能还原出这段讲的内容是什么,而密码学级别的散列则恰恰相反,它使得你提取出来的表示数据特征的代码绝不能还原(或轻易还原)为原来的数据。

工作证明

那么比特币从哪来呢?就从这些散列函数的运算结果来。想象一下我们计算这么一道题,到底输入什么样的字符串,会得到一个散列结果开头是0?有人说我把该函数反向推导得到一个反函数不就可以获得原始结果吗?那可不行,因为这些散列函数是非常严密的经过无数数学家检验的,具有“密码学”级别安全度的,绝非轻易推导就能推导出来的,获得一个未知的原始结果的方法只能是穷举,换一句话说就是猜,把所有可能的结果一个个代入散列函数进行尝试,如果你恰好获得了开头为0的结果,恭喜你,你解出了该“数学题”,奖励比特币若干,该解题的过程就叫做挖矿(Mining)。刚开始这样的工作是非常简单的,一道题只需要普通个人电脑的 CPU 就能快速解出最初的几道题,随着挖矿的人数增加题目会越变越难同时获得的收益会越来越低,因为同样的时间内只会产生一定数量的比特币,而分配的过程只会根据按而解出题目的个数。为了获得更多的比特币,有的人把解题的过程编制为显卡的GPU程序,因为显卡的特点大家都知道,就是有很多流处理器可以短时间内做大量运算。买了高性能的显卡的人越来越多,用显卡挖矿的收益越来越少,于是一些人则干脆自己设计硬件,用专用的集成电路(ASIC)进行该解题过程,这类拥有大量专用挖矿集成电路的机器就叫做“矿机”。

证明力?

这些密码学支撑的虚拟货币到底安全吗?“

从技术的角度来说,通常来说(下文会详细解释)”是安全的,实际上我们日常上网、银行、军事等活动中都是靠密码学来支撑,现在已经无法想象没有这一系列密码学保障,我们平常的生活会变得怎么样,而密码学归根结底就是数学。 这里我们看到,实际上数学已经完全作为一种自然元素而非人造的产品支撑着各种基于密码学的货币,它的证明力甚至强于黄金(也许人类的能力有一天可以强大到模拟黄金产生的过程,比如类似大爆炸的物理活动,但是所有的物理活动也无法违反数学的规律)。

而单单有数学的保证还不行,还得从社会的角度得到证明,也就是足够多的人相信比特币能改变他们的生活,能提供一种便携的支付手段,甚至仅仅相信它能作为炒作的工具而使用,这些经过大量散列运算得到的数据块就是有价值的。

安全性

对于安全性方面我们还需要进一步讨论。首先说明,安全并不是一个数学公式、或一个算法的采用,更不可能是一个所谓的“安全产品”能保证的,安全是一系列正确实施的过程的组合。

举例,某公司为了保证自己产品的设计图纸或者源代码的安全,给公司每台机器安装了杀毒软件,公司部署了最好的防火墙,进门出门需要验证指纹,同时每个人不能携带存储设备出入也不能连接Internet。最后该公司的设计图纸和源代码还是被对手公司的间谍获取了,获取的方法很简单,该间谍贿赂了公司主管,让该主管复制了一份设计图纸和源代码带出公司交给间谍……

比特币也是一样,你说不能简单用安全或者不安全来概括,而应该考虑与比特币相关的所有环节,同时每个环节的安全措施都要做到位才能减少损失。

下面我根据发生的概率从高到低把一些可能威胁到比特币安全的事件列出来:

交易平台

毫无疑问交易平台是最脆弱的环节之一,你将各种虚拟货币保存在交易平台(或者说托管在交易平台)那么你对该货币安全性的唯一措施几乎就剩下登录和交易密码的保护了。交易平台被攻击或被入侵的时间层出不穷,而损失也是惨重的,举几个例子:

1023日,web比特币钱包Inputs.io被入侵,价值120万美元比特币被盗窃; 1026日,比特币交易平台GBL携客户存款跑路; 4月三日,交易所 Mt.GoxDDOS攻击,比特币价格大幅下跌; ……

确保交易平台的安全性的方法除了制定良好的登录和交易密码之外,最好的方法是把一部分比特币转移到自己私有的钱包,自己的安全性由自己保证,这样不管交易平台是跑路还是被攻击也不至于损失全部。

本地钱包的安全

钱包文件记录着证明自己对该钱包所有的私钥等重要信息,所以本地钱包一定要安全保管并且妥善备份。保护本地钱包同时意味着必须保证自己的电脑上有足够的安全措施,包括操作系统(尤其是Windows这样的大众操作系统)必须及时更新(包括升级到较新的版本,比如2013年来说应该升级到 Windows 7 Windows 8 ),使用自带的更新功能(比如 Windows Update )打上最新的补丁,如果有必要的话装一些安全软件,例如防火墙和杀毒软件也是不错的选择。

山寨币上位

随着比特币的流行,无数的山寨币也被强势推出,据说创造一个新的山寨币只需要1个比特币。这些山寨币中抱着捞一把就走,改改比特币客户端参数的大有人在,但是其中一些也提出了一定的改进(比如性能、交易时间等),这些改进中不乏有价值的改进。可以遇见一旦一个新的山寨币提供了足够吸引人的特性或者解决了比特币面临的一些严重的问题,将会迅速上位并且压过比特币的先发优势

密码学级别的破解

比特币使用的算法遭到破解,虽然说起来好像天方夜谭但是不是没有可能发生,比如历史上曾经流行过的对称加密算法DES因为密钥过短早就推荐不使用,而转为用3DESAES以及Blowfish等替代;曾经流行的流加密算法RC4因为强度不够也遭到各种有效的攻击;而流行的散列算法MD52004年被山东大学数学系教授王小云发现了快速碰撞的方法把产生碰撞的步数从之前的280次方先后降低到269次方和263次方(这个降低的级别在计算机的角度是惊人的)。

我们可以看看一些著名的加密算法提出的时间以及到被不推荐使用甚至废弃(遭到非常有效的攻击)的时间:MD51992-2004),12年;SHA-11995-2013),18年;DES1976-1999),23年;现在的产品中MD5SHA-1还在大量使用,微软官方博客就宣布在2016年之前废弃SHA-1RC4了。比特币设计比较领先,2009年产生时已经使用了当时已经确立标准的最新的[SHA-256]http://en.wikipedia.org/wiki/SHA-2)以及RIPEMD-160散列算法,同时还选择了非常先进的采用secp256k1曲线的椭圆曲线公钥算法。这些密码学的基础措施在目前(2013年)看来依然十分安全,但是随着密码学家进一步的研究配合更加高性能的机器的暴力破解,这些算法会变得越来越脆弱,此时无论是迁移到新算法还是加强现有算法都会变得非常困难。

大运算力的暴力破解

有人计算过,一个比特币私钥的长度是256 bits,要穷举所有的可能来破解该私钥需要:

pow(2,128) / (15 * pow(2,40)) / 3600 / 24 / 365.25 / 1e9 / 1e9 = 0.6537992112229596

也就是650000000000000000年。看上去好像比特币绝对安全了,但是如果考虑摩尔定律,每18个月计算机的性能提高一倍,两个十八个月就变成了原先的四倍,这样的增长实际上是非常惊人的。计算下来的结果就是只要59年后,计算机就能够在有意义的时间(比如1.13年内)破解一个私钥,也就是破解了某人的钱包,这是非常危险的。

你可能会说59年也足够长了,且慢,你还没考虑到专门针对破解用的硬件。显卡和专用集成电路制造的矿机能用来挖矿,为什么不能用来破解?

政府的政策

虽然比特币等基于密码学的货币的一个功能就是抗来自政府的通胀,但是千万别以为政府的措施会很有限,如果需要剿灭(或者在某一地区剿灭)比特币,只需要在比特币赖以生存的介质–网络上下手即可。在比特币找到更加难以封锁的介质之前,来自政府的态度也是不容忽视的。摘自比特币:原理,安全与未来)

本文来源:https://www.2haoxitong.net/k/doc/21f0b5e631126edb6e1a10c9.html

《比特币安全.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式