旧博文,搬到 csdn
原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/

写在前面的话

自比特币诞生到现在,比特币(网络)经历过大大小小非常多次的攻击,尤其在比特币诞生之初的几年,并且随着比特币价格的一路飙涨,黑客针对比特币网络的攻击就一直没有停止过。据估算,目前大约有 350 ~ 400 万比特币永久丢失,价值大约 240 ~ 280 亿美元。当然其中不只有由于黑客的攻击导致的丢失,毕竟比特币最初的几年很多人都没有意识到比特币的价值,很多的私钥都遗失了。

本文就谈一下目前几种区块链网络攻击,以及其防御方案。

本文尽量用简单易懂的白话来描述,也仅代表我个人的看法,欢迎探讨

同系列:

  • 浅谈几种区块链网络攻击以及防御方案之51%攻击
  • 浅谈几种区块链网络攻击以及防御方案之日蚀攻击
  • 浅谈几种区块链网络攻击以及防御方案之女巫攻击
  • 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击
  • 浅谈几种区块链网络攻击以及防御方案之其它网络攻击

异形攻击

异形攻击又称地址污染攻击,是指诱使同类链的节点之间互相发现、互联、侵入的一种攻击手法。同类链的意思是底层 P2P 网络使用了相同或者相似的 P2P 通信协议。这尤其针对比特币和以太坊系列的公链。

众所周知,最近几年区块链行业蓬勃发展,又过于浮躁。其中很多劣质公链大量 COPY 以太坊、比特币的源码,甚至不做修改,仅仅修改下名字成为一条新的公链,这就导致大量的公链的底层是相同的或者兼容的。

那么如果攻击者执行了异形攻击,就有可能导致同类链的节点之间互相缠绕在一起,影响公链节点内部的通信和路由,进而影响到交易、共识和安全。从而让攻击者有机会施行其他的攻击,比如 DDoS 攻击,网络分裂攻击。

本质上还是由于伸手党的存在,并且不加以修饰和对节点的检测造成了异形攻击。应对办法也很简单,首先是拒绝做伸手党,即便伸手党,起码也要研究下别人的代码,做点创新和原创的东西;其次加强对本公链的节点类型的检测,比如节点地址不符合的一切拒绝,通信协议不一致的一切拒绝,通信报文头特殊字段不一致的一切拒绝等等。

配图与本文无关

窃听攻击

这不是区块链特有的攻击手法,本质上就是流量行为分析,通过分析流量,甚至可以把 IP 和家庭地址关联起来,从而知道某笔交易时来自某一个特定的客户端或者某个人。

区块链的去中心化带来的一个好处就是匿名,或者说相对匿名,但是攻击者通过追踪某笔交易,分析流量等措施,锁定现实世界的具体某个人,然后执行一些违法犯罪的事情。

交易延展性攻击

延展性攻击者侦听P2P网络中的交易,利用交易签名算法的特征修改原交易中的input 签名, 生成拥有一样input和output的新交易,然后广播到网络中形成双花,这样原来的交易就可能有一定的概率不能被确认,在虚拟货币交易的情况下,它可以被用来进行二次存款或双重提现。

案例

  1. 2014年8月,在线黑市Silk Road 2遭遇交易延展性攻击,部分比特币被盗,损失约260万美元

  2. 2013年11月,GHash.io矿池对赌博网站BetCoin Dice进行多次付款欺诈,实施双重支出攻击

BGP劫持攻击

边界网关协议(BGP)是因特网的关键组成部分,用于确定路由路径。BGP劫持,即利用BGP操纵因特网路由路径,最近几年中已经变得越来越频繁。 无论是网络犯罪分子还是政府,都可以利用这种技术来达到自己的目的,如误导和拦截流量等,目前在区块链网络中节点的流量一但被接管又能对整个网络造成巨大的影响,如破坏共识机制,交易等各种信息。

而对于BGP劫持攻击中,目前有安全研究者已经证明该攻击的概念可行性,从2015年11月5日至2016年11月15日通过对节点网络的分析统计目前大多数比特币节点都托管在少数特定的几个互联网服务提供商(ISPs),而60%的比特币连接都是在这几个ISP。所以这几个ISP可以看到60%的比特币流量,所以也能够做到对目前比特币网络的流量控制权,研究者通过劫持的场景验证了至少如下两个攻击概念是可行的,同时给出了验证的代码[8]。

分割攻击

攻击者可以利用BGP劫持来讲区块链网络划分成两个或多个不相交的网络,此时的区块链会分叉为两条或多条并行链。攻击停止后,区块链会重新统一为一条链,以最长的链为主链,其他的链将被废弃,其上的交易、奖励等全部无效。

攻击场景举例:

  1. 首先,攻击者发动BGP劫持,将网络分割为两部分,一个大网络、一个小网络。

  2. 在小网络中,攻击者发布交易卖出自己全部的加密货币,并兑换为法币。

  3. 经过小网络的“全网确认”,这笔交易生效,攻击者获得等值的法币。

  4. 攻击者释放BGP劫持,大网络与小网络互通,小网络上的一切交易被大网络否定,攻击者的加密货币全部回归到账户,而交易得来的法币,依然还在攻击者手中,完成获利。

路由攻击

路由攻击往往配合其他的攻击来施行,攻击者可以先利用女巫攻击或者日蚀攻击把网络分裂,然后篡改消息发送到网络当中。最终效果是影响了网络中的通信和路由。

写在最后

其实关于区块链系统的攻击方式还有很多,本系列主要偏重于网络层面的攻击。针对不同的攻击,需要采用不同的防御方案,并且很多攻击手法并非区块链特有。随着区块链的发展,黑客的攻击也不会停止,对于公链来说,还有很多挑战。

参考

疯狂“搬运”币的黑客如何攻击区块链|干货(一)

Blog:

  • rebootcat.com

  • email: linuxcode2niki@gmail.com

2020-04-16 于杭州
By 史矛革

浅谈几种区块链网络攻击以及防御方案之其它网络攻击相关推荐

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

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

  2. 浅谈几种区块链网络攻击以及防御方案之女巫攻击

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

  3. 浅谈几种区块链网络攻击以及防御方案之日蚀攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/12/network_attack_of_blockchain_eclipse_attack/ 写在前面的话 自 ...

  4. 浅谈几种区块链网络攻击以及防御方案之51#37攻击

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

  5. 浅谈一种规避iOS多线程Crash的方案

    一般来说,多线程编程因具有以下几个优点,一直被广泛应用: 资源利用率更好 程序设计在某些情况下更简单 程序响应更快 但是因为多线程而导致的crash问题,也是令程序员非常头疼的一个问题,因为线程调度执 ...

  6. [原]浅谈几种服务器端模型——反应堆模式(epoll 简介) - _Boz - 博客园

    [原]浅谈几种服务器端模型--反应堆模式(epoll 简介) - _Boz - 博客园 [原]浅谈几种服务器端模型--反应堆模式(epoll 简介) 引言:上一篇说到了线程池方式来处理服务器端的并发, ...

  7. 区块如何防篡改_一种区块链防篡改技术的优化方法与流程

    本发明涉及区块链技术领域,具体涉及一种区块链防篡改技术的优化方法. 背景技术: 区块链是比特币等数字虚拟货币的底层技术,通过去中心化的数据记录,由全网所有的节点共同维护数据,实现安全地存储数据,具有不 ...

  8. 四种区块链底层技术形态的对比解读

    新世纪以来,互联网技术快速发展,催生了以平台经济为典型的各种新业态.新模式,深刻影响和改变了人类社会的生产方式.生活方式和社会治理方式.然而在推动经济和社会发展的同时,基于数据点对点传输建立的互联网也 ...

  9. 区块链电子签名技术及方案

    数字签名技术是电子签名的底层核心技术,由非对称密钥加密技术和数字摘要技术构成.首先发送方利用Hash函数对文件内容进行加密并生成数字摘要,然后利用私钥对数字摘要加密形成数字签名;接收方利用发送方提供的 ...

最新文章

  1. 基于Struts 2的自定义类型转换器
  2. 自己如何写mysql数据库_如何写一个属于自己的数据库封装(4)
  3. Angular中实现路由跳转并通过get方式传递参数
  4. 升序排列python_Python3基础 sort 将一个列表中的值升序排列
  5. Hystrix Dashboard的使用与常见问题总结
  6. object picker 微信小程序_微信小程序 demo分享
  7. 第三十六期:如果把线程当作一个人来对待,所有问题都瞬间明白了
  8. 编译原理 计算机科学丛书_计算机科学导论(二)
  9. python 参数解析器_Python中最好用的命令行参数解析工具
  10. Original error was: DLL load failed while importing _multiarray_umath: 找不到指定的模块
  11. es6箭头函数内部判断
  12. 手机怎么用java9_java9_java9官方版 32位64位 最新版_天天下载手机版
  13. 如何测试java定时器_Java--定时器测试程序
  14. mac / Ubuntu 终端下添加tree命令显示文件目录结构
  15. ubuntu中非常好用的PDF软件—okular
  16. excel查找窗口被拉边上_excel
  17. Unity集成Bugly踩坑
  18. hardfault常见原因_STM32 出现 hardfault_handler 处理方法
  19. Excel加密如何破解
  20. 【vue.js】+云存储(实现图片上传功能)

热门文章

  1. 不生效 设置了viewport_有限责任公司股权转让何时生效?
  2. PCL:超详细的基于法向量和曲率的区域生长算法原理以及源码解读
  3. STM32控制OLCD显示中英文(NB-IoT专栏—基础篇6)
  4. (C++)数组作为函数参数
  5. 人工智能入门:keras的example文件解析
  6. CLion CMakeList的使用
  7. 基于Keras的CNN/Densenet实现分类
  8. 【亲测可用】Xshell可视化配置一个登录服务器后自动进入指定目录的方法
  9. 在Ubuntu 16.04.6 LTS上升级Go到最新版1.12.5实录
  10. Unity从头到尾无代码游戏制作学习教程