区块链双花攻击和自私采矿攻击的系统防御概述 论文解读

1.前沿知识
区块链的基础:
区块链顾名思义就是很多区块链在一起:
区块头(Head):记录当前区块的特征值比如 上一个区块的哈希+当前哈希+时间 等等
区块体(Body):实际数据 比如 具体的交易情况 xxx转给了xxx多少比特币
特征值主要是用于计算这个整个区块的完整性和不可修改性 自身的哈希是通过哈希函数计算出来的
所谓"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。(比特币使用的是sha256 就是不论多少的长度都会出来256位的密文 ,然后这个是可能存在重复的,但是重复的可能性及其小,好几十个0的数量级,所以普遍的认为是不存在重复) sha256加密可以在之后进行深入学习,这里不进行展开。同时每个区块的哈希值都是根据其自身的区块头计算的,如果更改了任意一点数据,算出来的sha256的密文都是不一样的就不会通过。
总的来说通过sha256的加密方法,保证了每一次记录的数据都是正确的。
区块的产生:由设计者中本聪进行的设计,比特币大致在10分钟左右会进行一次区块的增加,同时这个区块是添加谁的就是由其一个争抢算法来决定(大致意思就是给定一个密文sha256的,大家在区块体不变,区块头中有一个随机值Nonce变的情况下,算密文,当算出的密文小于给定的sha256密文时候,就可以算上抢夺成功),这个时候过程就是挖矿,需要消耗大量的算力,同时作为奖励,抢到的人可以获得定量的比特币,这个量每隔几年会减半(所以这就是为什么这么多人在挖矿的原因,挖到了就能赚到大钱)
在区块的产生上会出现一个问题,如果有两个人同时挖到了这个区块,几乎同时上报会怎么样。这个时候系统就会进行一个分叉(软分叉)。为什么要叫做软分叉呢 区块链技术是根据谁的路径长,就认为谁是主路径,就好像如下图:
在这里插入图片描述
在区块6的时候出现了分叉,产生了两个区块7 这个时候就需要继续往下挖矿,当产生一个分叉快于另一个分叉时候,系统就认为如图存在9号的分叉为正确的,这个时候上面的路径就被认为是正确的,下面到8号就停的路径就被抛弃了。但是如果之后的速度下面的八号速度快于上面,超过了上面并且领先了一个区块,那么下面的路径就是主路径,上面的就作废了。很显然如果会出现这个问题,那么去作假岂不是轻而易举。我只要在上面的路径先把钱转出去,然后变现,然后再作废的下面路径中不转,这样如果产生了超车,下面的路径更快乐,那么这笔钱又到了我手中。很不幸,区块链发展至今没出现过这个问题(据百度所知,至今没出现过这种问题)。
2. 双花攻击:之前讲到的就是双花攻击,在变更软分支的情况下进行不正当获利的一种攻击方式
3. 双花攻击的预防:
1.使用一种特殊类型的输出披露其秘密密钥来惩罚广播双花钱交易的攻击者。因此,由于同行能够在系统中获得私钥,攻击者可能丢失其地址中的所有资金。具体来说,这将通过生成特殊的事务输出来实现。如果显示相同输出的不同数字签名,则将公开用于签名签名的私钥。这一暴露的关键将允许观察员进行相同支出的第三笔交易,这阻碍了双重支出的交易
这种攻击的防御策略利用椭圆曲线数字签名算法(ECDSA)签名方案和固定r付费按键脚本(FR-P2PK)。ECDSA加密算法确保资金只能由硬币的所有者使用。FR-P2PK是一种提议的比特币脚本,它需要一个具有指定r值的签名。R是由ECDSA的整数k和固定参数确定性地生成的。其中k在[1,q−1]的范围内,q是与椭圆曲线的生成器G的顺序对应的素数。在广播甚至将块发布到链中之前,块将存储在内存池中。
大致翻译为白话文,就是在进行交易的时候存在一个监控机制,如果这笔资金出现了双花的情况,会公开这资金的私钥,这样这笔钱就是可以被找回,甚至双花攻击的人会损失更多的钱。
2.警报转发:大致意思就是如果这里发生了这个攻击,就把这个事情告诉另外的人,大致这个意思另外的没怎么看懂
3.概念性研究设计:设计了一个监听期,如果这个时间段内没有发生双花攻击,就时间段内的交易都被认可,反之不认可。或者是让更多的交易进行停滞,比如就像进行支付宝转账,100天才能转出去,那这样这可以有效拒绝双花攻击(很有效,但是可能对性能和体验就是巨大的伤害了)
双花攻击主要还有五种形式的攻击:51%攻击、芬妮攻击(Finney attack)、种族攻击(Race attack)、Vector76攻击、替代历史攻击(Alternative history attack)百分之五十一攻击,顾名思义是最主要的攻击,同时也是最主要的攻击,所以在防范一中主要防范的就是这个,剩下的本文章还有提出一些机制来防范,塔提到了芬妮攻击,这个攻击就是指:有很多商家支持0支付,就是你交易了,立马给你钱(这个就是风险和利益并存,可能被攻击,但是肯定也最受欢迎)。芬妮攻击就是针对这个情况,在实现0支付的同时,自己的地址A给自己的地址B转账,然后一旦实现就立马更新下一个块,这样商家收不到btc,同时还亏了钱,那么这怎么办呢,这篇文章(有点水的指出了,大钱转的时候要等待几个块,小钱转的时候为了实现0支付,可能需要别的政策,这不是谁都想的到么),矿工攻击就是指:在要实现芬妮攻击的基础上,怎么才能保证自己的A 转账给B 的块优先于 自己付钱给商家的块呢,那就是用钱(记录数据需要手续费,手续费多了,你是矿工你肯定来赚这个手续费),给矿工钱,让他们区挖那个A转账给B的块,这样可以提高自己攻击的概率。
Vector76攻击主要是因为区块链需要两个节点,节点A 和节点B, 节点A连接商家, 节点B连接很多别的节点,然后节点A和商家交易, 节点B 实现自己赚钱给自己账号,然后他们都实现,然后并没有广播,没有广播就没有没有得到大家的认可(认可就是区块链的本质,去中心化),然后因为B连接的结点多,所以B块先得到认可,从而最终的这笔钱还能被双花。同时A节点还需要广播,然后让商家以为他被成功支付了(商家可能在之后的时间才会发现这个问题,但是没办法,0支付这个问题本身就是问题。)
针对这个攻击,给出了一些个办法:就是匿名自己的节点,这样人家在针对Vectoer76就难以实现了(真聪明),或者对于整个时间进行匿名,这样虽然可以避免,但是自身是匿名的其他认可度也低,所以很容易收到拒绝服务(DoS)和Sybil攻击(这里就不展开了,最简单的例子就是人家拿你的匿名身份做坏事。)同时还有一个Delayed proof work (dPoW) :延迟证明工作,大致意思就是频繁进行快照,方便回滚
4.检测
mitigation technique 缓解技术,大致意思是开发一个交易系统,是一个三方的系统
或者说是怎加问责矿工的数量,当发现攻击时候,要做出惩罚,惩罚矿工数量多了这样某些故意干坏事的矿工就少了。
detect and analyze chain activity 检测和分析链的活性 大致意思是允许攻击,但是这个攻击最后可以成功,但是短期的攻击下没有汇报,大致意思就是在这个方案下,一个区块,两个区块的更新不会被认可,然后多个区块就会被认可。
提前预知分叉,不断地选局部来进行哈希,然后比较,看是否会产生分叉,但是这个消耗算力非常大,虽然可以避免,但是不现实
5.通知
大致意思就是让矿工们提高警惕,少干坏事,或者是限制一个网络内的交易值,这样就可以减少损失。
6.监控
就是设立观察者,观察那个地址和节点,是否有双花攻击可能,一段时间内是否有两个笔交易出现
4.自私挖矿
警报广播:大致意思就是在进行挖矿时候同时还要挖一个水果(大概就是比比特币好挖的一个区块),一但挖到就会公布,这样别人就挖不了,防止别人自私挖矿。
警报转发:就是可以把自私矿工的地址和信息公布出来,让诚实矿工来看。
概念性设计:采用了反采矿法来挖掘,然后用这个方法的矿工收入会增加,同时自私矿工的收入可能会丢失,从而,来减少自私挖矿

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值