复习一下
区块链是啥?
区块链是分布式数据存储,点对点传输,共识机制,加密算法的计算机技术的新型应用模式,区块链本质上是一个去中心化的数据库。
简单一点来讲,家里有个账本,由你来记账,爸爸妈妈把工资交给你,让你记到账本上,万一你偷吃,由区块链来解释就是会少十几个数据块,所以需要全家都记账,你不能篡改数据,其他人也不能篡改数据,也就是说,每个区块链就像一个硬盘,把信息全部保存下来,再通过密码学技术进行加密,被保存的信息是无法被恶意篡改。

区块链系统每10分钟会校验期间产生的所有数据,比如说交易的记录,该记录区块是否被编辑或被创建过,将这些数据存储在一个新的区块上,会与前一个区块进行连接,形成一根链条,就像自行车的车链一样。

1、异常安全:
不同于公司或政府机构拥有的集中化数据库,区块链不受任何人或实体的控制,数据在多台计算机上完整地复制(分发)。
与集中式数据库不同,攻击者没有一个单一的入口点,数据的安全性更有保障。
2、不可篡改性:
一旦进入区块链,任何信息都无法更改,甚至管理员也无法修改此信息。
一个东西一旦出现就再也没法改变,这种属性对于人类目前所处的可以更改、瞬息万变的网上世界而言意义重大。
3、可访问:
网络中的所有节点都可以轻松访问信息。
4、无第三方:
因为区块链的去中心化,它可以帮助点对点交易,因此,无论您是在交易还是交换资金,都无需第三方的批准,像现实中我们需要转账,需要经过第三方银行来去处理。
区块链本身就是一个平台。

但针对于区块链系统,其中有一种攻击手法是51%双花攻击。
假设我花了10个比特币买了一辆豪车。几天后,我得到了这辆豪车,并且我支付的比特币也成功转到了汽车公司的账户。通过51%攻击,我可以抹掉这笔交易的痕迹,如果成功,就相当于我不花一分钱就得到了一辆豪车,这10个比特币依然在我的钱包里,仿佛我从来没有花过一样,而汽车公司,当然,少了一辆车,却没有得到钱,并且查不到曾经卖过车。

区块链等于自治区

区块链协议实现了区块链的去中心化,让它可以自动管理数据账本(如交易账本),让我们不再依赖像政府、银行这样的第三方。
比特币区块链的协议是基于民主的,也就是说,比特币网络上的大多数矿工决定了哪个分支区块链上的数据是真实的。

51%双花攻击
当一个比特币拥有者执行一个交易操作时,交易数据会先被存入本地交易池等待确定。黑客会从这些本地交易池中选择交易数据打包。为了要把数据打包上链,黑客需要解决一个非常复杂的数学问题,黑客通过计算机来做哈希计算并找到答案。

假设黑客拥有更多的算力,会比其他人拥有更多的区块,本应每个人打包好一个块的时候,黑客本来应该广播给其他人并添加后续区块链上的检查,但黑客可以不广播去创造一个其他人不知道的分支区块链

如图,绿色是主链,红色是黑客创建的分支链,只要黑客的区块更多,并且其他人不会得到黑客打包的数据块,也就是黑客在自己创建的分支链上排除了他自己的交易记录,只要黑客的区块更多,达到民主的效果,其他人就会把自己负责的区块。添加到民主的那一条区块链,达到黑客创建的分支链就是主链的效果,从而经过一次交易,再次拥有他曾经花掉的那笔交易


黑客的区块比主链区块更多,从而认为黑客的分支链为主链的致盲效果。

这就是一次双花攻击,通常叫51%攻击,因为黑客的哈希计算能力必须比网络上其他所有矿工算力的总和更多(也就是至少有全网51%的算力),才可以让他自己的链比主链更长。

攻防世界有一道web的区块链双花攻击

51% 双花攻击
这道题整的解法是 51% (双花)攻击。请于正常的区块链区分开来,题目环境中只有你一个玩家,并没有人与你竞争(挖矿)。商店交易采用0确认,而不是现实中的6确认。当出现分叉时,区块链的规则认最长的分链为主链,并舍去原有的链。区块链允许添加空块51%(双花)攻击可以达到的目的就是使攻击前的交易作废,这里的前不一定是前一个,而是很大程度上取决于你的算力的。让之前的交易作废有什么好处呢?这里我们就要考虑0确认和6确认的区别了
当产生一笔交易时,区块链的P2P网络会广播这笔交易,这笔交易会被一个挖矿节点收到,并验证,如果这个挖矿节点挖到区块(生成的hash满足条件)后,并且这笔交易的手续费足够吸引这个节点去打包进区块,那这笔交易就会被打包进区块。因此就得到了一个确认,这个矿工也拿走了相应的手续费。 这个挖矿节点打包后,会把区块广播给其他节点。其他节点验证并广播这个区块。 如果这个区块得到更多的挖矿节点的验证确认,那就得到了更多的确认。这样这笔交易就被记录到了比特币区块链,并成为了比特币账本的一部分。如果得到6个确认后,我们就认为它永远不可变了。
0确认就同样的道理了,那就是不需要别人确认,就如我们生活中的一手交钱一手交货,不同的是生活中我们处于中心化社会,银行会帮我们确认。而6确认就是需要经过6个人(区块被挖出)交易才确定。可以看到对0确认和6确认进行51%(双花)攻击的难度是不一样的,6确认需要的算力明显要大,因为他要多比其他人生成6个区块。
因为这样才有机会使自己生成(挖出)区块的速度超过其他人,然后按区块链的规则:当出现分叉时,区块链的规则认最长的分链为主链,并舍去原有的链,就达到了撤销原来链上已经存在的交易。


这道题解法的POC可见大佬的https://www.cnblogs.com/mke2fs/p/11613484.html

怎么去解决区块链的双花攻击?


双花问题最需要解决的问题,其实就是时间的问题。如何在用户发起交易的过程中,去记录第一笔交易的时间和攻击者发出交易的时间,来选择最长链,这是解决该问题的关键。

区块链双花攻击的缺陷就是在于每次交易的一个等待确认,就是对每一笔交易进行了盖章确认,并记录了交易发起的时间。类似于生活中,最为常见的买卖双方签订合同,有双方的签名以及合同生效的时间
也就是说,通过时间戳,用户发起的每一笔交易都能有时间记录,当攻击者在交易过程中发起交易时,系统能够分辨出交易发起的时间,根据时间顺序来看,就能够迅速确认第一笔交易时间。
这样一来,就不会存在最长链就是最有效链的情况。

Logo

为所有Web3兴趣爱好者提供学习成长、分享交流、生态实践、资源工具等服务,作为Anome Land原住民可不断优先享受各种福利,共同打造全球最大的Web3 UGC游戏平台。

更多推荐