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

区块链系统每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

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


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

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

区块链51%双花攻击相关推荐

  1. 浅谈最近流行的三起区块链51%算力攻击

    很多人可能早就听说过 51% 算力攻击,但更多的可能源于各种媒体渠道中"比特币的缺陷"文章之流.实际上,这个说法并不准确,根据比特币百科上所描述,这种攻击被称为多数人的攻击(Maj ...

  2. 比特币黄金(BTG)遭受51%双花攻击?——不亏

    自2017年8月1日比特币现金(BCH)硬分叉之后,比特币硬分叉就已成为一种潮流,BTG.B2X.BCD.SBTC.BCHC等等诸多分叉币不绝于耳.然而其中却有一个另类,那就是BTG. 其另类的主要原 ...

  3. 区块链安全 - DAO攻击事件解析

    作者:隐形人真忙 作者博客:http://blog.csdn.net/u011721501/article/details/79450122 0x00 前言 最近关注了一下区块链方面的安全,因此翻出来 ...

  4. 研究人员探索了对以太坊区块链的日食攻击

    eclipse攻击是对区块链的网络级攻击,攻击者基本上控制了对等网络,模糊了节点对区块链的视图. 波士顿大学副教授Sharon Goldberg在一篇题为"低资源Eclipse攻击以太的点对 ...

  5. solidity开篇:区块链基础

    solidity开篇:区块链基础 1.事务 2.交易 3.地址 4.区块 5.存储/内存/栈 2️⃣Hello World 1.例子代码 2.Hello World 例子分析 3️⃣ 合约代码中的三种 ...

  6. 数字货币 区块链 双花攻击 Double Spend Attack 简介

    前段时间,比特黄金BTG遭受双花攻击,一名恶意矿工临时控制了BTG区块链,在向交易所充值后迅速提币,再逆转区块,成功实施双花攻击. 比特黄金BTG创始人廖翔回应说:"已与各交易所紧密合作,通 ...

  7. td不允许自己扩展_V神原文详解:通过及时性检测器(TD)解决区块链的51%攻击问题...

    注:原文作者是以太坊联合创始人Vitalik Buterin,在这篇文章中,他提出了一种称为及时性检测器(TD)的构造,以试图解决区块链51%攻击的问题. (图:Vitalik Buterin) 以下 ...

  8. 区块链攻击方式总结二

    目录 一.总述 二.第一个维度:双花攻击 1.51%算力攻击 (1)贿赂攻击 (2)币龄累计攻击 (3)通用挖矿攻击 2.芬尼攻击 3.种族攻击 4.分割攻击 5.重放攻击 (1)一条链上的重放攻击 ...

  9. 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/ 写在前面的话 自比特币 ...

最新文章

  1. DCN-2655 ssh 远程登陆配置
  2. sigaction函数解析
  3. access violation at address in module Read of address
  4. SQL Server的数据导入MySQL数据库方法简介
  5. gcc -pthread_错误-在GCC Linux中使用C程序未定义对'pthread_create'的引用
  6. CatBoost的Python与R实现
  7. mysql 表单插入数据_PHP表单数据写入MySQL数据库的代码
  8. dea模型java实例_Java数据流学习 - osc_deasqda4的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 案例 -- web移动端项目(vue)
  10. shp数据制作3DTiles白膜
  11. ISO/IEC 27000官方文档
  12. 《Cisco VPP SFC》4、ODL SFC 安装
  13. 游戏本自动掉帧_LOL官方割韭菜?“永恩上线就出问题,游戏掉帧商城BUG仍未修复”...
  14. php实训制作登录界面总结,php实训报告心得体会
  15. 网优到底是干什么的?
  16. 前置++与后置++的不同
  17. 值传递,地址传递,引用传递
  18. 【POJ 3179】 Corral the Cows
  19. 青柠疫服自动打卡脚本
  20. 用Enterprise Architect从Java源码生成类图

热门文章

  1. 解线性方程组c语言实验报告,实验五线性方程组的迭代法实验
  2. 在 Airbnb 使用机器学习预测房源的价格
  3. python中trun是什么意思_Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun錯誤解決方案...
  4. win10如何关机时显示停止服务器,Win10系统关机时总提示此应用程序阻止关机如何解决...
  5. python_you-get下载B站视频详解
  6. A071_管理员登录
  7. EXCEL 小tips
  8. c语言求解线性方程组ax=b,用C语言求解N阶线性矩阵方程Ax=b的简单解法
  9. 找不到msvcr120.dll
  10. html表格标题居于标题左侧,css如何设置表格标题(caption标签)的位置