主页 > imtokenusdt钱包 > 区块链双花攻击和自私挖矿攻击系统防御概述解读

区块链双花攻击和自私挖矿攻击系统防御概述解读

imtokenusdt钱包 2023-03-31 06:56:02

1.前沿知识

区块链基础知识:

顾名思义,区块链就是很多条区块链在一起:

区块头(Head):记录当前区块的特征值,比如前一个区块的哈希值+当前哈希值+时间等。

区块体(Body):具体交易情况、多少比特币xxx转给xxx等实际数据

特征值主要用于计算整个区块的完整性和不可修改性。 哈希本身是通过哈希函数计算的

所谓“哈希”,就是计算机可以为任何内容计算出一个长度相同的特征值。 区块链的哈希长度是256位,也就是说无论原始内容是什么,最后都会计算出一个256位的二进制数。 并且可以保证只要原始内容不同,对应的hash一定不同。 (比特币用的是sha256,也就是说不管多长,都会出来256位的密文,然后这个可能会重复,但是重复的可能性极小,在几十个0的数量级,所以是一般认为是 没有重复)sha256加密可以后面再研究,这里就不展开了。 同时,每个区块的哈希值都是根据自己的区块头计算出来的。 如果任何数据发生变化,计算出的sha256密文就会不同,无法通过。

一般来说,sha256加密方式保证每次记录的数据都是正确的。

区块的生成:由设计者中本聪设计,比特币会在10分钟左右增加一个区块,同时,这个区块中加入谁是由一个打乱算法决定的(大致意思是给定一个密文sha256,可以算出块体不变时的密文,块头中的一个随机值Nonce发生变化。当计算出的密文小于给定的sha256密文时,可以包括抢夺成功),此时的过程是挖矿,即消耗大量的计算能力。 同时,作为奖励比特币系统如何防止双花攻击,抢到它的人可以获得一定数量的比特币,每隔几年就会减半(所以这就是为什么很多人都在挖矿的原因,你可以赚很多钱如果你挖它)

区块的生成会有问题。 如果两个人同时挖区块,几乎同时上报,会发生什么情况。 这时候系统会进行fork(软分叉)。 为什么叫软分叉? 区块链技术根据谁的路径最长来判断谁是主路径,如下图所示:

在这里插入图片描述

区块6出现分叉,产生了两个区块7。 这时候就需要继续挖矿了。 当一个叉子比另一个叉子产生得更快时,系统认为有如图所示的9号。 如果叉子是正确的,此时认为上面的路径是正确的,而停在8号的下面的路径则被丢弃。 但是如果速度下面的8号速度比上面快,超过上面并且领先一格,那么下面的路径就是主路径,上面的路径是无效的。 很显然,如果出现这个问题,岂不是很容易造假。 我只需要先在上路把钱转出去,然后变现,再在无效的下路不转,这样如果超车了,下路会更开心,钱在我手里再次。 遗憾的是,这个问题在区块链的发展中从来没有出现过(据百度了解,目前还没有出现过这个问题)。

2、双花攻击:前面提到的就是双花攻击,一种在改变软分支的情况下进行非法获利的攻击方式

3、双花攻击的预防:

1. 使用一种特殊类型的输出来公开其密钥来惩罚广播双花交易的攻击者。 因此,由于节点能够获得系统中的私钥,攻击者可能会失去其地址中的所有资金。 具体来说,这将通过生成特殊的交易输出来实现。 如果显示相同输出的不同数字签名,用于签署签名的私钥将被公开。这个公开的密钥将允许观察者进行相同支出的第三笔交易,这会阻止双花交易

此次攻击的防御策略采用了椭圆曲线数字签名算法(ECDSA)签名方案和Fixed-rPayKeyscript(FR-P2PK)。 ECDSA加密算法确保资金只能由币主使用。 FR-P2PK 是一种提议的比特币脚本,需要具有指定 r 值的签名。 R 由具有整数 k 和固定参数的 ECDSA 确定性地生成。 其中k在[1,q−1]范围内,q是一个素数,对应于椭圆曲线生成元G的阶数。 在广播甚至将块发布到链之前,块将存储在内存池中。

大致翻译成大白话,意思就是交易过程中有一个监控机制。 如果资金被双花,资金的私钥就会被泄露,这样钱就可以被追回,甚至双花攻击的人会损失更多的钱。

2. Alert forwarding: 大概意思就是如果这里发生这种攻击,告诉其他人,大致这个意思其他人看不懂

3.概念研究设计:设计一个监测期。 如果在此期间内没有发生双花攻击,则承认该期间内的所有交易,否则不承认。 或者让更多的交易停滞不前,比如支付宝转账,100天后可以转出,这样可以有效拒绝双花攻击(非常有效,但对性能和体验可能是一个巨大的损害)

双花攻击主要有五种形式:51%攻击、Finney攻击、Race攻击、Vector76攻击、另类历史攻击(Alternative history attack)51%攻击,顾名思义就是最主要的攻击,而且它也是最主要的攻击。 因此,这是第一道防线中的主要预防。 本文的其余部分还提出了一些机制来防止它。 塔尔提到了范妮袭击事件。 这个攻击是指:有很多商家支持0支付,就是你交易了,马上给你钱(这个是风险和收益并存,可能会被攻击,但绝对是最受欢迎的)。 梵妮的攻击,就是针对这种情况。 在实现0支付的同时,自己的地址A转钱到自己的地址B,一旦实现就立即更新下一个区块,这样商户就收不到BTC,同时赔钱,那么这个怎么办呢,这篇文章(有点水指出,转大钱的时候要等几块钱,转小钱的时候为了做到0支付,可能还需要其他政策。这不就是大家的想法吗),矿工攻击是指:在实现Fanny攻击的基础上,如何保证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,大致就是开发一个交易系统,是一个三方系统

或者如何增加负责矿工的数量。 当发现攻击时,必须进行惩罚。 如果被惩罚的矿工数量太多,那么故意做坏事的矿工就会变少。

检测分析链活动 检测分析链活动 粗略的意思是允许攻击,但是最后攻击可以成功,但是短期攻击下没有报告,大致意思是在这个方案下,一个区块,两个区块被更新的不会被批准,然后多个块将被批准。

提前预测分叉,不断选择部分进行hash,然后比较看是否会出现分叉,但是这样会消耗很大的算力,虽然可以避免,但是不现实

5.通知

大致意思是让矿工提高警惕,少做坏事,或者限制网络中的交易价值,从而减少损失。

6.监控

就是设置观察者观察地址和节点,是否有双花攻击的可能,一段时间内是否有两笔交易

4. 自私挖矿

告警广播:大致意思是挖一个水果(可能是比比特币更容易挖的区块)挖矿。 一旦挖到,就会公布,让别人挖不到,防止别人私自挖矿。

警报转发:可以发布自私矿工的地址和信息,供诚实矿工查看。

概念设计:采用反挖矿的方式进行挖矿,使用这种方式的矿工收益会增加,而自私矿工的收益可能会损失,从而减少自私挖矿